mirror of
https://github.com/jart/cosmopolitan.git
synced 2025-03-02 23:18:44 +00:00
Decentralize Python native module linkage
We can now link even smaller Python binaries. For example, the hello.com program in the Python build directory is a compiled linked executable of hello.py which just prints hello world. Using decentralized sections, we can make that binary 1.9mb in size (noting that python.com is 6.3 megs!) This works for nontrivial programs too. For example, say we want an APE binary that's equivalent to python.com -m http.server. Our makefile now builds such a binary using the new launcher and it's only 3.2mb in size since Python sources get turned into ELF objects, which tell our linker that we need things like native hashing algorithm code.
This commit is contained in:
parent
dfa0359b50
commit
559b024e1d
129 changed files with 2798 additions and 13514 deletions
|
@ -289,6 +289,9 @@ SECTIONS {
|
|||
/*BEGIN: Read Only Data */
|
||||
|
||||
KEEP(*(.ape.pad.rodata));
|
||||
KEEP(*(.rodata.pytab.0));
|
||||
KEEP(*(.rodata.pytab.1));
|
||||
KEEP(*(.rodata.pytab.2));
|
||||
|
||||
*(.rodata .rodata.*)
|
||||
*(.ubsan.types)
|
||||
|
|
|
@ -168,7 +168,7 @@ DEFAULT_LDFLAGS = \
|
|||
--gc-sections \
|
||||
--build-id=none \
|
||||
--no-dynamic-linker \
|
||||
-z max-page-size=0x1000
|
||||
-z max-page-size=0x1000 --cref -Map=$@.map
|
||||
|
||||
ZIPOBJ_FLAGS = \
|
||||
-b$(IMAGE_BASE_VIRTUAL)
|
||||
|
|
|
@ -13,5 +13,6 @@
|
|||
#define kNtFsctlSetSparse 0x000900C4u
|
||||
#define kNtFsctlSetZeroData 0x000980C8u
|
||||
#define kNtFsctlGetReparsePoint 0x000900a8u
|
||||
#define kNtFsctlSetReparsePoint 0x000900a4u
|
||||
|
||||
#endif /* COSMOPOLITAN_LIBC_NT_ENUM_FSCTL_H_ */
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
#define COSMOPOLITAN_LIBC_NT_EVENTS_H_
|
||||
#include "libc/nt/struct/msg.h"
|
||||
#include "libc/nt/struct/point.h"
|
||||
#include "libc/nt/struct/securityattributes.h"
|
||||
/* ░░░░
|
||||
▒▒▒░░░▒▒▒▒▒▒▒▓▓▓░
|
||||
▒▒▒▒░░░▒▒▒▒▒▒▓▓▓▓▓▓░
|
||||
|
@ -39,19 +40,28 @@ bool32 GetCursorPos(struct NtPoint *lpPoint);
|
|||
int64_t SendMessage(int64_t hWnd, uint32_t Msg, uint64_t wParam,
|
||||
int64_t lParam);
|
||||
|
||||
#define EVENTLOG_SUCCESS 0x00000000
|
||||
#define EVENTLOG_ERROR_TYPE 0x00000001
|
||||
#define EVENTLOG_WARNING_TYPE 0x00000002
|
||||
#define EVENTLOG_INFORMATION_TYPE 0x00000004
|
||||
#define EVENTLOG_AUDIT_SUCCESS 0x00000008
|
||||
#define EVENTLOG_AUDIT_FAILURE 0x00000010
|
||||
#define EVENTLOG_SUCCESS 0x00000000
|
||||
#define EVENTLOG_ERROR_TYPE 0x00000001
|
||||
#define EVENTLOG_WARNING_TYPE 0x00000002
|
||||
#define EVENTLOG_INFORMATION_TYPE 0x00000004
|
||||
#define EVENTLOG_AUDIT_SUCCESS 0x00000008
|
||||
#define EVENTLOG_AUDIT_FAILURE 0x00000010
|
||||
|
||||
int32_t ReportEventA(int64_t handle, uint16_t wType, uint16_t wCategory,
|
||||
uint32_t dwEventID, const char *lpUserId, uint16_t wNumStrings,
|
||||
uint32_t dwDataSize, const char **lpStrings, void **lpRawData);
|
||||
int64_t RegisterEventSourceA(const char *lpUNCServerName, const char *lpSourceName);
|
||||
uint32_t dwEventID, const char *lpUserId,
|
||||
uint16_t wNumStrings, uint32_t dwDataSize,
|
||||
const char **lpStrings, void **lpRawData);
|
||||
int64_t RegisterEventSourceA(const char *lpUNCServerName,
|
||||
const char *lpSourceName);
|
||||
int32_t DeregisterEventSource(uint64_t handle);
|
||||
|
||||
int64_t CreateEvent(struct NtSecurityAttributes *lpEventAttributes,
|
||||
bool32 bManualReset, bool32 bInitialState,
|
||||
const char16_t *lpName);
|
||||
int64_t CreateEventEx(struct NtSecurityAttributes *lpEventAttributes,
|
||||
const char16_t *lpName, uint32_t dwFlags,
|
||||
uint32_t dwDesiredAccess);
|
||||
|
||||
COSMOPOLITAN_C_END_
|
||||
#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
|
||||
#endif /* COSMOPOLITAN_LIBC_NT_EVENTS_H_ */
|
||||
|
|
|
@ -211,6 +211,12 @@ uint32_t GetFinalPathNameByHandle(int64_t hFile, char16_t *out_path,
|
|||
uint32_t GetFullPathName(const char16_t *lpFileName, uint32_t nBufferLength,
|
||||
char16_t *lpBuffer, char16_t **lpFilePart);
|
||||
|
||||
bool32 GetOverlappedResult(int64_t hFile, struct NtOverlapped *lpOverlapped,
|
||||
uint32_t *lpNumberOfBytesTransferred, bool32 bWait);
|
||||
bool32 GetOverlappedResultEx(int64_t hFile, struct NtOverlapped *lpOverlapped,
|
||||
uint32_t *lpNumberOfBytesTransferred,
|
||||
uint32_t dwMilliseconds, bool32 bAlertable);
|
||||
|
||||
#if ShouldUseMsabiAttribute()
|
||||
#include "libc/nt/thunk/files.inc"
|
||||
#endif /* ShouldUseMsabiAttribute() */
|
||||
|
|
|
@ -68,19 +68,19 @@ bool32 CallNamedPipe(const char16_t *lpNamedPipeName, void *lpInBuffer,
|
|||
uint32_t nOutBufferSize, uint32_t *lpBytesRead,
|
||||
uint32_t nTimeOut);
|
||||
|
||||
bool32 ConnectNamedPipe(int64_t *hNamedPipe, struct NtOverlapped *lpOverlapped);
|
||||
bool32 ConnectNamedPipe(int64_t hNamedPipe, struct NtOverlapped *lpOverlapped);
|
||||
bool32 WaitNamedPipe(const char16_t *lpNamedPipeName, uint32_t nTimeOut);
|
||||
bool32 DisconnectNamedPipe(int64_t *hNamedPipe);
|
||||
bool32 DisconnectNamedPipe(int64_t hNamedPipe);
|
||||
|
||||
bool32 SetNamedPipeHandleState(int64_t *hNamedPipe, uint32_t *lpMode,
|
||||
bool32 SetNamedPipeHandleState(int64_t hNamedPipe, uint32_t *lpMode,
|
||||
uint32_t *lpMaxCollectionCount,
|
||||
uint32_t *lpCollectDataTimeout);
|
||||
|
||||
bool32 PeekNamedPipe(int64_t *hNamedPipe, void *lpBuffer, uint32_t nBufferSize,
|
||||
bool32 PeekNamedPipe(int64_t hNamedPipe, void *lpBuffer, uint32_t nBufferSize,
|
||||
uint32_t *lpBytesRead, uint32_t *lpTotalBytesAvail,
|
||||
uint32_t *lpBytesLeftThisMessage);
|
||||
|
||||
bool32 TransactNamedPipe(int64_t *hNamedPipe, void *lpInBuffer,
|
||||
bool32 TransactNamedPipe(int64_t hNamedPipe, void *lpInBuffer,
|
||||
uint32_t nInBufferSize, void *lpOutBuffer,
|
||||
uint32_t nOutBufferSize, uint32_t *lpBytesRead,
|
||||
struct NtOverlapped *lpOverlapped);
|
||||
|
|
|
@ -1,2 +1,12 @@
|
|||
.include "o/libc/nt/codegen.inc"
|
||||
.imp kernel32,__imp_CreateEventA,CreateEventA,0
|
||||
|
||||
.text.windows
|
||||
CreateEventA:
|
||||
push %rbp
|
||||
mov %rsp,%rbp
|
||||
.profilable
|
||||
mov __imp_CreateEventA(%rip),%rax
|
||||
jmp __sysv2nt
|
||||
.endfn CreateEventA,globl
|
||||
.previous
|
||||
|
|
|
@ -1,2 +1,12 @@
|
|||
.include "o/libc/nt/codegen.inc"
|
||||
.imp kernel32,__imp_CreateEventExA,CreateEventExA,0
|
||||
|
||||
.text.windows
|
||||
CreateEventExA:
|
||||
push %rbp
|
||||
mov %rsp,%rbp
|
||||
.profilable
|
||||
mov __imp_CreateEventExA(%rip),%rax
|
||||
jmp __sysv2nt
|
||||
.endfn CreateEventExA,globl
|
||||
.previous
|
||||
|
|
|
@ -1,2 +1,12 @@
|
|||
.include "o/libc/nt/codegen.inc"
|
||||
.imp kernel32,__imp_CreateEventExW,CreateEventExW,0
|
||||
|
||||
.text.windows
|
||||
CreateEventEx:
|
||||
push %rbp
|
||||
mov %rsp,%rbp
|
||||
.profilable
|
||||
mov __imp_CreateEventExW(%rip),%rax
|
||||
jmp __sysv2nt
|
||||
.endfn CreateEventEx,globl
|
||||
.previous
|
||||
|
|
|
@ -1,2 +1,12 @@
|
|||
.include "o/libc/nt/codegen.inc"
|
||||
.imp kernel32,__imp_CreateEventW,CreateEventW,0
|
||||
|
||||
.text.windows
|
||||
CreateEvent:
|
||||
push %rbp
|
||||
mov %rsp,%rbp
|
||||
.profilable
|
||||
mov __imp_CreateEventW(%rip),%rax
|
||||
jmp __sysv2nt
|
||||
.endfn CreateEvent,globl
|
||||
.previous
|
||||
|
|
|
@ -1,2 +1,12 @@
|
|||
.include "o/libc/nt/codegen.inc"
|
||||
.imp kernel32,__imp_GetOverlappedResult,GetOverlappedResult,0
|
||||
|
||||
.text.windows
|
||||
GetOverlappedResult:
|
||||
push %rbp
|
||||
mov %rsp,%rbp
|
||||
.profilable
|
||||
mov __imp_GetOverlappedResult(%rip),%rax
|
||||
jmp __sysv2nt
|
||||
.endfn GetOverlappedResult,globl
|
||||
.previous
|
||||
|
|
|
@ -1,2 +1,12 @@
|
|||
.include "o/libc/nt/codegen.inc"
|
||||
.imp kernel32,__imp_GetOverlappedResultEx,GetOverlappedResultEx,0
|
||||
|
||||
.text.windows
|
||||
GetOverlappedResultEx:
|
||||
push %rbp
|
||||
mov %rsp,%rbp
|
||||
.profilable
|
||||
mov __imp_GetOverlappedResultEx(%rip),%rax
|
||||
jmp __sysv2nt6
|
||||
.endfn GetOverlappedResultEx,globl
|
||||
.previous
|
||||
|
|
|
@ -587,10 +587,10 @@ imp 'CreateEllipticRgnIndirect' CreateEllipticRgnIndirect gdi32 1074
|
|||
imp 'CreateEnclave' CreateEnclave KernelBase 180
|
||||
imp 'CreateEnhMetaFileA' CreateEnhMetaFileA gdi32 1075
|
||||
imp 'CreateEnhMetaFile' CreateEnhMetaFileW gdi32 1076
|
||||
imp 'CreateEventA' CreateEventA kernel32 0 # KernelBase
|
||||
imp 'CreateEventExA' CreateEventExA kernel32 0 # KernelBase
|
||||
imp 'CreateEventEx' CreateEventExW kernel32 0 # KernelBase
|
||||
imp 'CreateEvent' CreateEventW kernel32 0 # KernelBase
|
||||
imp 'CreateEventA' CreateEventA kernel32 0 4 # KernelBase
|
||||
imp 'CreateEventExA' CreateEventExA kernel32 0 4 # KernelBase
|
||||
imp 'CreateEventEx' CreateEventExW kernel32 0 4 # KernelBase
|
||||
imp 'CreateEvent' CreateEventW kernel32 0 4 # KernelBase
|
||||
imp 'CreateFiber' CreateFiber kernel32 0 # KernelBase
|
||||
imp 'CreateFiberEx' CreateFiberEx kernel32 0 # KernelBase
|
||||
imp 'CreateFile' CreateFileW kernel32 0 7 # KernelBase
|
||||
|
@ -2384,8 +2384,8 @@ imp 'GetOsSafeBootMode' GetOsSafeBootMode KernelBase 626
|
|||
imp 'GetOutlineTextMetricsA' GetOutlineTextMetricsA gdi32 1685
|
||||
imp 'GetOutlineTextMetrics' GetOutlineTextMetricsW gdi32 1686
|
||||
imp 'GetOverlappedAccessResults' GetOverlappedAccessResults advapi32 1348
|
||||
imp 'GetOverlappedResult' GetOverlappedResult kernel32 0 # KernelBase
|
||||
imp 'GetOverlappedResultEx' GetOverlappedResultEx kernel32 0 # KernelBase
|
||||
imp 'GetOverlappedResult' GetOverlappedResult kernel32 0 4 # KernelBase
|
||||
imp 'GetOverlappedResultEx' GetOverlappedResultEx kernel32 0 5 # KernelBase
|
||||
imp 'GetPackageApplicationContext' GetPackageApplicationContext KernelBase 629
|
||||
imp 'GetPackageApplicationIds' GetPackageApplicationIds kernel32 0 # KernelBase
|
||||
imp 'GetPackageApplicationProperty' GetPackageApplicationProperty KernelBase 631
|
||||
|
|
|
@ -55,7 +55,7 @@ bool32 GetThreadIOPendingFlag(int64_t hThread, bool32 *lpIOIsPending);
|
|||
|
||||
bool32 CancelSynchronousIo(int64_t hThread);
|
||||
bool32 CancelIo(int64_t hFile);
|
||||
bool32 CancelIoEx(int64_t hFile, struct NtOverlapped opt_lpOverlapped);
|
||||
bool32 CancelIoEx(int64_t hFile, struct NtOverlapped *opt_lpOverlapped);
|
||||
|
||||
#if ShouldUseMsabiAttribute()
|
||||
#include "libc/nt/thunk/thread.inc"
|
||||
|
|
163
libc/str/blake2.c
Normal file
163
libc/str/blake2.c
Normal file
|
@ -0,0 +1,163 @@
|
|||
/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│
|
||||
│vi: set net ft=c ts=2 sts=2 sw=2 fenc=utf-8 :vi│
|
||||
╞══════════════════════════════════════════════════════════════════════════════╡
|
||||
│ Copyright 2021 Google LLC │
|
||||
│ │
|
||||
│ Permission to use, copy, modify, and/or distribute this software for │
|
||||
│ any purpose with or without fee is hereby granted, provided that the │
|
||||
│ above copyright notice and this permission notice appear in all copies. │
|
||||
│ │
|
||||
│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL │
|
||||
│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED │
|
||||
│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE │
|
||||
│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL │
|
||||
│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR │
|
||||
│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER │
|
||||
│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │
|
||||
│ PERFORMANCE OF THIS SOFTWARE. │
|
||||
╚─────────────────────────────────────────────────────────────────────────────*/
|
||||
#include "libc/assert.h"
|
||||
#include "libc/macros.internal.h"
|
||||
#include "libc/str/blake2.h"
|
||||
#include "libc/str/str.h"
|
||||
|
||||
#define ROR(v, n) (((v) >> (n)) | ((v) << (64 - (n))))
|
||||
|
||||
asm(".ident\t\"\\n\\n\
|
||||
boringssl blake2b (ISC License)\\n\
|
||||
Copyright 2021 Google LLC\"");
|
||||
asm(".include \"libc/disclaimer.inc\"");
|
||||
|
||||
// https://tools.ietf.org/html/rfc7693#section-2.6
|
||||
static const uint64_t kIV[8] = {
|
||||
0x6a09e667f3bcc908, 0xbb67ae8584caa73b, 0x3c6ef372fe94f82b,
|
||||
0xa54ff53a5f1d36f1, 0x510e527fade682d1, 0x9b05688c2b3e6c1f,
|
||||
0x1f83d9abfb41bd6b, 0x5be0cd19137e2179,
|
||||
};
|
||||
|
||||
// https://tools.ietf.org/html/rfc7693#section-2.7
|
||||
static const uint8_t kSigma[10][16] = {
|
||||
// clang-format off
|
||||
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15},
|
||||
{14, 10, 4, 8, 9, 15, 13, 6, 1, 12, 0, 2, 11, 7, 5, 3},
|
||||
{11, 8, 12, 0, 5, 2, 15, 13, 10, 14, 3, 6, 7, 1, 9, 4},
|
||||
{7, 9, 3, 1, 13, 12, 11, 14, 2, 6, 5, 10, 4, 0, 15, 8},
|
||||
{9, 0, 5, 7, 2, 4, 10, 15, 14, 1, 11, 12, 6, 8, 3, 13},
|
||||
{2, 12, 6, 10, 0, 11, 8, 3, 4, 13, 7, 5, 15, 14, 1, 9},
|
||||
{12, 5, 1, 15, 14, 13, 4, 10, 0, 7, 6, 3, 9, 2, 8, 11},
|
||||
{13, 11, 7, 14, 12, 1, 3, 9, 5, 0, 15, 4, 8, 6, 2, 10},
|
||||
{6, 15, 14, 9, 11, 3, 0, 8, 12, 2, 13, 7, 1, 4, 10, 5},
|
||||
{10, 2, 8, 4, 7, 6, 1, 5, 15, 11, 9, 14, 3, 12, 13, 0},
|
||||
// clang-format on
|
||||
};
|
||||
|
||||
// https://tools.ietf.org/html/rfc7693#section-3.1
|
||||
static void Blake2bMix(uint64_t v[16], int a, int b, int c, int d, uint64_t x,
|
||||
uint64_t y) {
|
||||
v[a] = v[a] + v[b] + x;
|
||||
v[d] = ROR(v[d] ^ v[a], 32);
|
||||
v[c] = v[c] + v[d];
|
||||
v[b] = ROR(v[b] ^ v[c], 24);
|
||||
v[a] = v[a] + v[b] + y;
|
||||
v[d] = ROR(v[d] ^ v[a], 16);
|
||||
v[c] = v[c] + v[d];
|
||||
v[b] = ROR(v[b] ^ v[c], 63);
|
||||
}
|
||||
|
||||
static void Blake2bTransform(
|
||||
struct Blake2b *b2b, const uint64_t w[BLAKE2B_CBLOCK / sizeof(uint64_t)],
|
||||
size_t num_bytes, int is_final_block) {
|
||||
// https://tools.ietf.org/html/rfc7693#section-3.2
|
||||
uint64_t v[16];
|
||||
_Static_assert(sizeof(v) == sizeof(b2b->h) + sizeof(kIV), "");
|
||||
memcpy(v, b2b->h, sizeof(b2b->h));
|
||||
memcpy(&v[8], kIV, sizeof(kIV));
|
||||
b2b->t_low += num_bytes;
|
||||
if (b2b->t_low < num_bytes) {
|
||||
b2b->t_high++;
|
||||
}
|
||||
v[12] ^= b2b->t_low;
|
||||
v[13] ^= b2b->t_high;
|
||||
if (is_final_block) {
|
||||
v[14] = ~v[14];
|
||||
}
|
||||
for (int i = 0; i < 12; i++) {
|
||||
Blake2bMix(v, 0, 4, 8, 12, w[kSigma[i % 10][0]], w[kSigma[i % 10][1]]);
|
||||
Blake2bMix(v, 1, 5, 9, 13, w[kSigma[i % 10][2]], w[kSigma[i % 10][3]]);
|
||||
Blake2bMix(v, 2, 6, 10, 14, w[kSigma[i % 10][4]], w[kSigma[i % 10][5]]);
|
||||
Blake2bMix(v, 3, 7, 11, 15, w[kSigma[i % 10][6]], w[kSigma[i % 10][7]]);
|
||||
Blake2bMix(v, 0, 5, 10, 15, w[kSigma[i % 10][8]], w[kSigma[i % 10][9]]);
|
||||
Blake2bMix(v, 1, 6, 11, 12, w[kSigma[i % 10][10]], w[kSigma[i % 10][11]]);
|
||||
Blake2bMix(v, 2, 7, 8, 13, w[kSigma[i % 10][12]], w[kSigma[i % 10][13]]);
|
||||
Blake2bMix(v, 3, 4, 9, 14, w[kSigma[i % 10][14]], w[kSigma[i % 10][15]]);
|
||||
}
|
||||
for (size_t i = 0; i < ARRAYLEN(b2b->h); i++) {
|
||||
b2b->h[i] ^= v[i];
|
||||
b2b->h[i] ^= v[i + 8];
|
||||
}
|
||||
}
|
||||
|
||||
int BLAKE2B256_Init(struct Blake2b *b2b) {
|
||||
bzero(b2b, sizeof(struct Blake2b));
|
||||
_Static_assert(sizeof(kIV) == sizeof(b2b->h), "");
|
||||
memcpy(&b2b->h, kIV, sizeof(kIV));
|
||||
// https://tools.ietf.org/html/rfc7693#section-2.5
|
||||
b2b->h[0] ^= 0x01010000 | BLAKE2B256_DIGEST_LENGTH;
|
||||
return 0;
|
||||
}
|
||||
|
||||
int BLAKE2B256_Process(struct Blake2b *b2b,
|
||||
const uint64_t data[BLAKE2B_CBLOCK / 8]) {
|
||||
Blake2bTransform(b2b, data, BLAKE2B_CBLOCK, /*is_final_block=*/0);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int BLAKE2B256_Update(struct Blake2b *b2b, const void *in_data, size_t len) {
|
||||
const uint8_t *data = (const uint8_t *)in_data;
|
||||
size_t todo = sizeof(b2b->block.bytes) - b2b->block_used;
|
||||
if (todo > len) {
|
||||
todo = len;
|
||||
}
|
||||
memcpy(&b2b->block.bytes[b2b->block_used], data, todo);
|
||||
b2b->block_used += todo;
|
||||
data += todo;
|
||||
len -= todo;
|
||||
if (!len) {
|
||||
return 0;
|
||||
}
|
||||
// More input remains therefore we must have filled |b2b->block|.
|
||||
assert(b2b->block_used == BLAKE2B_CBLOCK);
|
||||
Blake2bTransform(b2b, b2b->block.words, BLAKE2B_CBLOCK,
|
||||
/*is_final_block=*/0);
|
||||
b2b->block_used = 0;
|
||||
while (len > BLAKE2B_CBLOCK) {
|
||||
uint64_t block_words[BLAKE2B_CBLOCK / sizeof(uint64_t)];
|
||||
memcpy(block_words, data, sizeof(block_words));
|
||||
Blake2bTransform(b2b, block_words, BLAKE2B_CBLOCK, /*is_final_block=*/0);
|
||||
data += BLAKE2B_CBLOCK;
|
||||
len -= BLAKE2B_CBLOCK;
|
||||
}
|
||||
memcpy(b2b->block.bytes, data, len);
|
||||
b2b->block_used = len;
|
||||
return 0;
|
||||
}
|
||||
|
||||
int BLAKE2B256_Final(struct Blake2b *b2b,
|
||||
uint8_t out[BLAKE2B256_DIGEST_LENGTH]) {
|
||||
bzero(&b2b->block.bytes[b2b->block_used],
|
||||
sizeof(b2b->block.bytes) - b2b->block_used);
|
||||
Blake2bTransform(b2b, b2b->block.words, b2b->block_used,
|
||||
/*is_final_block=*/1);
|
||||
_Static_assert(BLAKE2B256_DIGEST_LENGTH <= sizeof(b2b->h), "");
|
||||
memcpy(out, b2b->h, BLAKE2B256_DIGEST_LENGTH);
|
||||
return 0;
|
||||
}
|
||||
|
||||
int BLAKE2B256(const void *data, size_t len,
|
||||
uint8_t out[BLAKE2B256_DIGEST_LENGTH]) {
|
||||
struct Blake2b ctx;
|
||||
BLAKE2B256_Init(&ctx);
|
||||
BLAKE2B256_Update(&ctx, data, len);
|
||||
BLAKE2B256_Final(&ctx, out);
|
||||
return 0;
|
||||
}
|
29
libc/str/blake2.h
Normal file
29
libc/str/blake2.h
Normal file
|
@ -0,0 +1,29 @@
|
|||
#ifndef COSMOPOLITAN_LIBC_STR_BLAKE2_H_
|
||||
#define COSMOPOLITAN_LIBC_STR_BLAKE2_H_
|
||||
|
||||
#define BLAKE2B256_DIGEST_LENGTH 32
|
||||
#define BLAKE2B_CBLOCK 128
|
||||
|
||||
#if !(__ASSEMBLER__ + __LINKER__ + 0)
|
||||
COSMOPOLITAN_C_START_
|
||||
|
||||
struct Blake2b {
|
||||
uint64_t h[8];
|
||||
uint64_t t_low;
|
||||
uint64_t t_high;
|
||||
union {
|
||||
uint8_t bytes[BLAKE2B_CBLOCK];
|
||||
uint64_t words[16];
|
||||
} block;
|
||||
size_t block_used;
|
||||
};
|
||||
|
||||
int BLAKE2B256_Init(struct Blake2b *);
|
||||
int BLAKE2B256_Update(struct Blake2b *, const void *, size_t);
|
||||
int BLAKE2B256_Process(struct Blake2b *, const uint64_t[BLAKE2B_CBLOCK / 8]);
|
||||
int BLAKE2B256_Final(struct Blake2b *, uint8_t[BLAKE2B256_DIGEST_LENGTH]);
|
||||
int BLAKE2B256(const void *, size_t, uint8_t[BLAKE2B256_DIGEST_LENGTH]);
|
||||
|
||||
COSMOPOLITAN_C_END_
|
||||
#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
|
||||
#endif /* COSMOPOLITAN_LIBC_STR_BLAKE2_H_ */
|
|
@ -29,6 +29,8 @@ static uint32_t kCrc32Tab[256];
|
|||
* 0b100000100110000010001110110110111
|
||||
* bitreverse32(0x104c11db7)
|
||||
*
|
||||
* This implementation takes 32 picoseconds per byte or 30 gibibyte/s.
|
||||
*
|
||||
* @param h is initial value
|
||||
*/
|
||||
uint32_t crc32_z(uint32_t h, const void *data, size_t size) {
|
||||
|
|
|
@ -47,7 +47,7 @@ void *GetZipCdir(const uint8_t *p, size_t n) {
|
|||
IsZipCdir64(p, n, ZIP_LOCATE64_OFFSET(p + j))) {
|
||||
return p + ZIP_LOCATE64_OFFSET(p + j);
|
||||
}
|
||||
} while (j-- && i - j < 1024);
|
||||
} while (j-- && i - j < 128);
|
||||
return p + i;
|
||||
}
|
||||
} while (i--);
|
||||
|
|
|
@ -52,6 +52,8 @@ o//libc/str/bzero.o: \
|
|||
OVERRIDE_CFLAGS += \
|
||||
-O2
|
||||
|
||||
o/$(MODE)/libc/str/fun3.o \
|
||||
o/$(MODE)/libc/str/sha3.o \
|
||||
o/$(MODE)/libc/str/dosdatetimetounix.o: \
|
||||
OVERRIDE_CFLAGS += \
|
||||
-O3
|
||||
|
|
89
libc/unicode/langinfo.c
Normal file
89
libc/unicode/langinfo.c
Normal file
|
@ -0,0 +1,89 @@
|
|||
/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│
|
||||
│vi: set net ft=c ts=2 sts=2 sw=2 fenc=utf-8 :vi│
|
||||
╞══════════════════════════════════════════════════════════════════════════════╡
|
||||
│ Copyright 2021 Justine Alexandra Roberts Tunney │
|
||||
│ │
|
||||
│ Permission to use, copy, modify, and/or distribute this software for │
|
||||
│ any purpose with or without fee is hereby granted, provided that the │
|
||||
│ above copyright notice and this permission notice appear in all copies. │
|
||||
│ │
|
||||
│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL │
|
||||
│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED │
|
||||
│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE │
|
||||
│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL │
|
||||
│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR │
|
||||
│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER │
|
||||
│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │
|
||||
│ PERFORMANCE OF THIS SOFTWARE. │
|
||||
╚─────────────────────────────────────────────────────────────────────────────*/
|
||||
#include "libc/unicode/langinfo.h"
|
||||
|
||||
static const char c_time[] = "\
|
||||
Sun\0\n\
|
||||
Mon\0\n\
|
||||
Tue\0\n\
|
||||
Wed\0\n\
|
||||
Thu\0\n\
|
||||
Fri\0\n\
|
||||
Sat\0\n\
|
||||
Sunday\0\n\
|
||||
Monday\0\n\
|
||||
Tuesday\0\n\
|
||||
Wednesday\0\n\
|
||||
Thursday\0\n\
|
||||
Friday\0\n\
|
||||
Saturday\0\n\
|
||||
Jan\0\n\
|
||||
Feb\0\n\
|
||||
Mar\0\n\
|
||||
Apr\0\n\
|
||||
May\0\n\
|
||||
Jun\0\n\
|
||||
Jul\0\n\
|
||||
Aug\0\n\
|
||||
Sep\0\n\
|
||||
Oct\0\n\
|
||||
Nov\0\n\
|
||||
Dec\0\n\
|
||||
January\0\n\
|
||||
February\0\n\
|
||||
March\0\n\
|
||||
April\0\n\
|
||||
May\0\n\
|
||||
June\0\n\
|
||||
July\0\n\
|
||||
August\0\n\
|
||||
September\0\n\
|
||||
October\0\n\
|
||||
November\0\n\
|
||||
December\0\n\
|
||||
AM\0\n\
|
||||
PM\0\n\
|
||||
a %b %e %T %Y\0\n\
|
||||
m/%d/%y\0\n\
|
||||
H:%M:%S\0\n\
|
||||
I:%M:%S %p\0\n\
|
||||
0\n\
|
||||
0\n\
|
||||
m/%d/%y\0\n\
|
||||
0123456789\0\n\
|
||||
a %b %e %T %Y\0\n\
|
||||
H:%M:%S";
|
||||
|
||||
static const char c_messages[] = "\
|
||||
^[yY]\0\
|
||||
^[nN]\0\
|
||||
yes\0\
|
||||
no";
|
||||
|
||||
static const char c_numeric[] = "\
|
||||
.\0\
|
||||
";
|
||||
|
||||
char *nl_langinfo(int item) {
|
||||
if (item == CODESET) {
|
||||
return "UTF-8";
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
}
|
86
libc/unicode/langinfo.h
Normal file
86
libc/unicode/langinfo.h
Normal file
|
@ -0,0 +1,86 @@
|
|||
#ifndef COSMOPOLITAN_LIBC_UNICODE_LANGINFO_H_
|
||||
#define COSMOPOLITAN_LIBC_UNICODE_LANGINFO_H_
|
||||
#if !(__ASSEMBLER__ + __LINKER__ + 0)
|
||||
COSMOPOLITAN_C_START_
|
||||
|
||||
#define ABDAY_1 0x20000
|
||||
#define ABDAY_2 0x20001
|
||||
#define ABDAY_3 0x20002
|
||||
#define ABDAY_4 0x20003
|
||||
#define ABDAY_5 0x20004
|
||||
#define ABDAY_6 0x20005
|
||||
#define ABDAY_7 0x20006
|
||||
|
||||
#define DAY_1 0x20007
|
||||
#define DAY_2 0x20008
|
||||
#define DAY_3 0x20009
|
||||
#define DAY_4 0x2000A
|
||||
#define DAY_5 0x2000B
|
||||
#define DAY_6 0x2000C
|
||||
#define DAY_7 0x2000D
|
||||
|
||||
#define ABMON_1 0x2000E
|
||||
#define ABMON_2 0x2000F
|
||||
#define ABMON_3 0x20010
|
||||
#define ABMON_4 0x20011
|
||||
#define ABMON_5 0x20012
|
||||
#define ABMON_6 0x20013
|
||||
#define ABMON_7 0x20014
|
||||
#define ABMON_8 0x20015
|
||||
#define ABMON_9 0x20016
|
||||
#define ABMON_10 0x20017
|
||||
#define ABMON_11 0x20018
|
||||
#define ABMON_12 0x20019
|
||||
|
||||
#define MON_1 0x2001A
|
||||
#define MON_2 0x2001B
|
||||
#define MON_3 0x2001C
|
||||
#define MON_4 0x2001D
|
||||
#define MON_5 0x2001E
|
||||
#define MON_6 0x2001F
|
||||
#define MON_7 0x20020
|
||||
#define MON_8 0x20021
|
||||
#define MON_9 0x20022
|
||||
#define MON_10 0x20023
|
||||
#define MON_11 0x20024
|
||||
#define MON_12 0x20025
|
||||
|
||||
#define AM_STR 0x20026
|
||||
#define PM_STR 0x20027
|
||||
|
||||
#define D_T_FMT 0x20028
|
||||
#define D_FMT 0x20029
|
||||
#define T_FMT 0x2002A
|
||||
#define T_FMT_AMPM 0x2002B
|
||||
|
||||
#define ERA 0x2002C
|
||||
#define ERA_D_FMT 0x2002E
|
||||
#define ALT_DIGITS 0x2002F
|
||||
#define ERA_D_T_FMT 0x20030
|
||||
#define ERA_T_FMT 0x20031
|
||||
|
||||
#define CODESET 14
|
||||
|
||||
#define CRNCYSTR 0x4000F
|
||||
|
||||
#define RADIXCHAR 0x10000
|
||||
#define THOUSEP 0x10001
|
||||
#define YESEXPR 0x50000
|
||||
#define NOEXPR 0x50001
|
||||
|
||||
#define _NL_LOCALE_NAME(cat) (((cat) << 16) | 0xffff)
|
||||
|
||||
#if defined(_GNU_SOURCE)
|
||||
#define NL_LOCALE_NAME(cat) _NL_LOCALE_NAME(cat)
|
||||
#endif
|
||||
|
||||
#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
|
||||
#define YESSTR 0x50002
|
||||
#define NOSTR 0x50003
|
||||
#endif
|
||||
|
||||
char *nl_langinfo(int);
|
||||
|
||||
COSMOPOLITAN_C_END_
|
||||
#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
|
||||
#endif /* COSMOPOLITAN_LIBC_UNICODE_LANGINFO_H_ */
|
90
test/libc/str/blake2_test.c
Normal file
90
test/libc/str/blake2_test.c
Normal file
|
@ -0,0 +1,90 @@
|
|||
/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:2;tab-width:8;coding:utf-8 -*-│
|
||||
│vi: set net ft=c ts=2 sts=2 sw=2 fenc=utf-8 :vi│
|
||||
╞══════════════════════════════════════════════════════════════════════════════╡
|
||||
│ Copyright 2021 Justine Alexandra Roberts Tunney │
|
||||
│ │
|
||||
│ Permission to use, copy, modify, and/or distribute this software for │
|
||||
│ any purpose with or without fee is hereby granted, provided that the │
|
||||
│ above copyright notice and this permission notice appear in all copies. │
|
||||
│ │
|
||||
│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL │
|
||||
│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED │
|
||||
│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE │
|
||||
│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL │
|
||||
│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR │
|
||||
│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER │
|
||||
│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │
|
||||
│ PERFORMANCE OF THIS SOFTWARE. │
|
||||
╚─────────────────────────────────────────────────────────────────────────────*/
|
||||
#include "libc/assert.h"
|
||||
#include "libc/str/blake2.h"
|
||||
#include "libc/str/str.h"
|
||||
#include "libc/testlib/ezbench.h"
|
||||
#include "libc/testlib/hyperion.h"
|
||||
#include "libc/testlib/testlib.h"
|
||||
|
||||
const signed char kHexToInt[256] = {
|
||||
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, // 0x00
|
||||
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, // 0x10
|
||||
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, // 0x20
|
||||
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, -1, -1, -1, -1, -1, -1, // 0x30
|
||||
-1, 10, 11, 12, 13, 14, 15, -1, -1, -1, -1, -1, -1, -1, -1, -1, // 0x40
|
||||
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, // 0x50
|
||||
-1, 10, 11, 12, 13, 14, 15, -1, -1, -1, -1, -1, -1, -1, -1, -1, // 0x60
|
||||
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, // 0x70
|
||||
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, // 0x80
|
||||
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, // 0x90
|
||||
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, // 0xa0
|
||||
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, // 0xb0
|
||||
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, // 0xc0
|
||||
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, // 0xd0
|
||||
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, // 0xe0
|
||||
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, // 0xf0
|
||||
};
|
||||
|
||||
uint8_t *EZBLAKE2B256(const char *s, size_t n) {
|
||||
static uint8_t digest[BLAKE2B256_DIGEST_LENGTH];
|
||||
BLAKE2B256(s, n, digest);
|
||||
return digest;
|
||||
}
|
||||
|
||||
uint8_t *HEXBLAKE2B256(const char *s) {
|
||||
char *p;
|
||||
int a, b;
|
||||
size_t i, n;
|
||||
static uint8_t digest[BLAKE2B256_DIGEST_LENGTH];
|
||||
n = strlen(s);
|
||||
assert(!(n & 1));
|
||||
n /= 2;
|
||||
p = malloc(n);
|
||||
for (i = 0; i < n; ++i) {
|
||||
a = kHexToInt[s[i * 2 + 0] & 255];
|
||||
b = kHexToInt[s[i * 2 + 1] & 255];
|
||||
assert(a != -1);
|
||||
assert(b != -1);
|
||||
p[i] = a << 4 | b;
|
||||
}
|
||||
BLAKE2B256(p, n, digest);
|
||||
free(p);
|
||||
return digest;
|
||||
}
|
||||
|
||||
TEST(BLAKE2B256Test, ABC) {
|
||||
EXPECT_BINEQ(
|
||||
"bddd813c634239723171ef3fee98579b94964e3bb1cb3e427262c8c068d52319",
|
||||
EZBLAKE2B256("abc", 3));
|
||||
EXPECT_BINEQ(
|
||||
"0e5751c026e543b2e8ab2eb06099daa1d1e5df47778f7787faab45cdf12fe3a8",
|
||||
HEXBLAKE2B256(""));
|
||||
EXPECT_BINEQ(
|
||||
"03170a2e7597b7b7e3d84c05391d139a62b157e78786d8c082f29dcf4c111314",
|
||||
HEXBLAKE2B256("00"));
|
||||
/* TODO(jart): do rest */
|
||||
}
|
||||
|
||||
BENCH(blake2, bench) {
|
||||
EZBENCH2("blake2b256 0", donothing, EZBLAKE2B256(0, 0));
|
||||
EZBENCH2("blake2b256 8", donothing, EZBLAKE2B256("helloooo", 8));
|
||||
EZBENCH2("blake2b256 22851", donothing,
|
||||
EZBLAKE2B256(kHyperion, kHyperionSize));
|
||||
}
|
820
test/libc/str/blake2b256_tests.txt
Normal file
820
test/libc/str/blake2b256_tests.txt
Normal file
|
@ -0,0 +1,820 @@
|
|||
# Copyright (c) 2021, Google Inc.
|
||||
#
|
||||
# Permission to use, copy, modify, and/or distribute this software for any
|
||||
# purpose with or without fee is hereby granted, provided that the above
|
||||
# copyright notice and this permission notice appear in all copies.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
|
||||
# SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
|
||||
# OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
|
||||
# CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
#
|
||||
# Generated by the following Go program.
|
||||
#
|
||||
# package main
|
||||
#
|
||||
# import (
|
||||
# "fmt"
|
||||
# "golang.org/x/crypto/blake2b"
|
||||
# )
|
||||
#
|
||||
# func main() {
|
||||
# var buf [256]byte
|
||||
# for i := range buf {
|
||||
# buf[i] = byte(i)
|
||||
# }
|
||||
#
|
||||
# for i := 0; i < 256; i++ {
|
||||
# h, err := blake2b.New256(nil)
|
||||
# if err != nil {
|
||||
# panic(err)
|
||||
# }
|
||||
# h.Write(buf[:i])
|
||||
# fmt.Printf("IN: %x\n", buf[:i])
|
||||
# fmt.Printf("HASH: %x\n", h.Sum(nil))
|
||||
# fmt.Printf("\n")
|
||||
# }
|
||||
# }
|
||||
|
||||
IN:
|
||||
HASH: 0e5751c026e543b2e8ab2eb06099daa1d1e5df47778f7787faab45cdf12fe3a8
|
||||
|
||||
IN: 00
|
||||
HASH: 03170a2e7597b7b7e3d84c05391d139a62b157e78786d8c082f29dcf4c111314
|
||||
|
||||
IN: 0001
|
||||
HASH: 01cf79da4945c370c68b265ef70641aaa65eaa8f5953e3900d97724c2c5aa095
|
||||
|
||||
IN: 000102
|
||||
HASH: 3d8c3d594928271f44aad7a04b177154806867bcf918e1549c0bc16f9da2b09b
|
||||
|
||||
IN: 00010203
|
||||
HASH: e1eae5a8adae652ec9af9677346a9d60eced61e3a0a69bfacf518db31f86e36b
|
||||
|
||||
IN: 0001020304
|
||||
HASH: 663694ac6520bdce7caab1cf3929ffe78cb2fea67a3dfc8559753a9f512a0c85
|
||||
|
||||
IN: 000102030405
|
||||
HASH: 274327d0e2a207844988fac0b39e071422e3f621913d69a5cfef23b38601a56f
|
||||
|
||||
IN: 00010203040506
|
||||
HASH: 9df14b7248764a869197c35e392d2a6d6fdc5b79d597297920fd3f1491b442d2
|
||||
|
||||
IN: 0001020304050607
|
||||
HASH: 77065d25b622a8251094d869edf6b4e9ba0708a8db1f239cb68e4eeb45851621
|
||||
|
||||
IN: 000102030405060708
|
||||
HASH: 8660231b62ce1d61fc8be93bd6acdb43ff61a7ab4cc9494f0cc803362360b07b
|
||||
|
||||
IN: 00010203040506070809
|
||||
HASH: 8b57a796a5d07cb04cc1614dfc2acb3f73edc712d7f433619ca3bbe66bb15f49
|
||||
|
||||
IN: 000102030405060708090a
|
||||
HASH: cc932bee351be391849c87925f2e00a83051419dc310b288d4304d4adea3d0e0
|
||||
|
||||
IN: 000102030405060708090a0b
|
||||
HASH: 99bd72c73bea193f7040ac279bd656cdec7fd35e097a657b6c03b4fa967223ed
|
||||
|
||||
IN: 000102030405060708090a0b0c
|
||||
HASH: 695e93b723e0a08e8dd8dd4656389363519564daf4cde5fe95a6a0ca71d3705e
|
||||
|
||||
IN: 000102030405060708090a0b0c0d
|
||||
HASH: 4cce7128e4f659ba41ee163c45280d468163adc8c76c4937a0bbfa0cf3bdeae7
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e
|
||||
HASH: 929cec40e9e746e771c6ad05cfcf37641254ef5e802fa71a02f8982f525f2b00
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f
|
||||
HASH: c7cb5d1a1a214f1d833a21fe6c7b2420e417c2f220784cbe90072975131bc367
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f10
|
||||
HASH: ced0cd609f3c8ff85b9cec93bba556dbe3caa996ac5beb629d4512473d6b31ae
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f1011
|
||||
HASH: 584c9cb4da3be635d86e803c9eebccfd27fbed4aae27b0207ce3c934a0043aa4
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112
|
||||
HASH: 9b508680d1f75d5f1e5306fbfaf7e88621cebf39f7f5cbf9e2dbb7ebb88504d4
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f10111213
|
||||
HASH: 5d597f201ead11daa0687185c579efd702e288d5bd72b6b21238a4ecb52d288a
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f1011121314
|
||||
HASH: 85b8afd95165d04681ab948f2f0545c47a8d11d9d1866cb7ecc88bc31a634891
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415
|
||||
HASH: 93c541c87fb52d506b1b262e49ed71689a15b745e8f3e003893c8c59cfc669fe
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f10111213141516
|
||||
HASH: 395d6a5e3b41b6151411b9b22f07fcbae6c7c30df59c10ca2dfcfe333ac8e3fb
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f1011121314151617
|
||||
HASH: 8d71aeb3137041d31ed42466ea5fdca2ec7a35c7701d142ccb813f8c614ceca2
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718
|
||||
HASH: 3b0b9b4027203daeb62f4ff868ac6cdd78a5cbbf7664725421a613794702f4f4
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f10111213141516171819
|
||||
HASH: 7384c8812f6803d8649bed21a3acbbf36239bbd17274d249369dd65e6329fd84
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a
|
||||
HASH: 3890962f7d604fe0fcade7d8fc03c7e6285da2035bac5a9362c1d68a353d5350
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b
|
||||
HASH: 9dc0b41d6a6a6c194d04336eb383ac7f4ea537700d5926346dfb1379e9453460
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c
|
||||
HASH: bd78e1c368d70b968e194dca2c6fbda605a67d5e52824289e058c93eee073ef5
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d
|
||||
HASH: 4cc3e428d63dc132471d3135d406f8d6e30d2480d571bffbd64957bbb090f582
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e
|
||||
HASH: 9adf65b53153b1caec84cd717e00e01c2000d0569704ce38d065180adee5d964
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f
|
||||
HASH: cb2f5160fc1f7e05a55ef49d340b48da2e5a78099d53393351cd579dd42503d6
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f20
|
||||
HASH: b7634fe13c7aca3914ee896e22cfabc9da5b4f13e72a2ccbecb6d44bbda95bcc
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f2021
|
||||
HASH: 9badddebf24552cb1f66d32990476594e5249a729254f7b5c840728a42749a45
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122
|
||||
HASH: 13891b823d3a2cfe0d1a5e60fe89d8c091524f994cdc3241c4da19c4bb3c2c6b
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f20212223
|
||||
HASH: c1b7eb8d130d705c5fa9ee8061076a3151f2e36e42d9c9289d85065b9ab343dd
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f2021222324
|
||||
HASH: ee6a288c4fcae34572fc6dba3e0b7d698bef65dcc63bf28ebd74207a2065718a
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425
|
||||
HASH: 1b5ad5f31e4061f423ee11e3de88fef05dfed9393c268fd360d05fe4465fe40a
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f20212223242526
|
||||
HASH: 87c40636d0ee94687fdf020e3d165f4e45f21d62fa04aa2b9103a8187da6e64a
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f2021222324252627
|
||||
HASH: 70a3082dfc7582b9d252939a474338db1f94a6dcc7724709377797d17ff51ac5
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728
|
||||
HASH: 109036d1dece657ac6471f7f7ed33846986fdcb9dae8a73ea0881607e5e45f13
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f20212223242526272829
|
||||
HASH: deda4f3e98e58392adaee3c2e7b91d172551c50945a8ae9e9e1ad10c2ae510a8
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a
|
||||
HASH: 2a82cabbbb09956d212d182cfaf7cde2f55fa33f96e3a1ab19fccfdb668ce2f2
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b
|
||||
HASH: 4a21b38c69f755c016ebb4a66eb76b4f9d4087a02fc8c3c257c1183efebda824
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c
|
||||
HASH: d3ecaa4853a092755c3692cac3fea5d9ccfaca2d32b59ccae151705333359e79
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d
|
||||
HASH: 0ab5250248686afe6eca3f3ed89e061c0b3ae2a13454b907bbdb643a72b25a66
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e
|
||||
HASH: 2fb57ab5fc0927e8301b6933325530e90fa7a94eaea95bad7c3f2f1052032900
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f
|
||||
HASH: 48de881e6c1dc35253d9c8d56e773743640f097bb7274b80ec090f1b33d1dc2e
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f30
|
||||
HASH: 71745158a70425e25a8446122dda82fcfeb6bfcb593b25d79c539c6b989c526d
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f3031
|
||||
HASH: 45d3d95f04f304be5a61ef38357bd01e61f9bb7f8c9979458d846d9899436167
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132
|
||||
HASH: d5afebad633b7d595e6c8482d8c9a429091f58acbd84725adbac12e8be80ada9
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f30313233
|
||||
HASH: 06bbb3b17ea95e7e00ac21b8632f84615f11456fabcda9d99cbf079e3134cfe5
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f3031323334
|
||||
HASH: 02b8e881b5f78b451995f07116af3549066cbce498497f546a9772981779d908
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435
|
||||
HASH: 370c5efe99822c30460a123467e8f151f012065ba3639bc0407ed3b3609e5d56
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f30313233343536
|
||||
HASH: ace7db9e8f298e823b7b265bbcd004577e0029256c48684b2d7a7cdfcbff5e47
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f3031323334353637
|
||||
HASH: a6c1d35f74218e57b4dbd4ed467b41981208666738ffa0d9dc53d3de96be702a
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738
|
||||
HASH: 25e44457f063ae4ea799502c38d66eeefb46f520b4fc9a298df9826c9d62eea9
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f30313233343536373839
|
||||
HASH: 1b35b64cf659d6d7d0ca933c9a52fb0e67fba76a304fadb7c47dd8ff6b6ff0fa
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a
|
||||
HASH: a72de68ff63bbe9ccfaccfa6859af660bb413f9e5d0200106100919c10301ef8
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b
|
||||
HASH: cfe37ab9c02bf84afa7a734a10317150479b791a27efc374dd669f4ef67a801d
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c
|
||||
HASH: a55a2c06f3db74c95b33d1e962da18772c3601eb13fe0b86a78667b2b9f9df86
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d
|
||||
HASH: 1b8a9195724ac01ad7da4a76c2545d2f3dc223a0242537050d7395f588748079
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e
|
||||
HASH: 29e41a64fbdd2fd27612228623c0702222bf367451e7324287f181cb3dcf7237
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f
|
||||
HASH: 10d8e6d534b00939843fe9dcc4dae48cdf008f6b8b2b82b156f5404d874887f5
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f40
|
||||
HASH: 84c04ab082c8ae24206561f77397704b627892089a05887a2a1996472bcfe15d
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f4041
|
||||
HASH: 2b684baba4a7245e38c3263d85b5524a51baa8ca18444af1b5958596bc30d424
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142
|
||||
HASH: 1d59fa9501213440975a0b27e4b52eea7274f8794ec35b8ee4824f7b00897ed7
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f40414243
|
||||
HASH: 60669608711b9df3715b631b474d5206179a81d054ef5494612899728b55e103
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f4041424344
|
||||
HASH: 46060cb9dc6be177bafe5425c4f84f9143b71cfc75dd958e15ff7a26cc92859b
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445
|
||||
HASH: e7f909c8e018bc36b59a8e7848d16c05d6bdb0ebb91fb9baf54cc328192cc362
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f40414243444546
|
||||
HASH: 7a9f75439c68869a6595eb63c61db2bc213d3ef067ec0cb3f25e02e554fce2a9
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f4041424344454647
|
||||
HASH: adb39b3e53a791dfd32eca83191eb82fdef4321ac504539b257c3376da240aca
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748
|
||||
HASH: 240ca19b3671dcc5ef174331fb0dd24b845dfcd01b0fbe52fa72a29bcaef1373
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f40414243444546474849
|
||||
HASH: ebae0805fd52d3e9f5f29aeb33b6be8cab0f28e668990d3cb95444d9ef90b932
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a
|
||||
HASH: ea7c3c052928f0fa3b8d86b19c87dee905e8a4b26a0a23b3c8e8dc7255ea82d6
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b
|
||||
HASH: 4ad32c1f2d18c8b7dc29d1526d7c751b89b86882fb12aa3cc9c6eddb7991d266
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c
|
||||
HASH: c61f81c3e6b899d0501b05df1de32099a7b0e878689dc2a3fd5583de90a74164
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d
|
||||
HASH: 068a8a0b96076a2773a8e00e00e57eef4fb26886b521285a6c747130850792d7
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e
|
||||
HASH: efab0151162523b18147cba89679bdab2d9b670f5ae222a34c360c094af1d441
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f
|
||||
HASH: 066de1009daca2b8390a9dc734bce547ac4e3cc4531645bb8b9cbc0070941d88
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f50
|
||||
HASH: 9fbb33b95e79c5c1683ab09a6abff6612fffb4458543dc8bbc7723a6dc2bf2ed
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f5051
|
||||
HASH: 88fea89237618cfc0270cbcd08e7ffdaa8933607c0dbccb8dd075b84fba83b11
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152
|
||||
HASH: b1960beaa4fed01453679c7d6cf78d25442bdf92ae51be479dab18e1b2b922d3
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f50515253
|
||||
HASH: a7d6821a97bc57cf6b5e25953c689439beda79364c903a3e64b6671dc9eceb2f
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f5051525354
|
||||
HASH: 90ca93ecd3e0e7c839e4fc0f2e4748954a89b2c7338e55fc18a53ccd08abed2e
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455
|
||||
HASH: 58fe5f45b9915a5b177f4256b51ce5781662352a2dd620a946b8755213fbd61f
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f50515253545556
|
||||
HASH: d109c8ec77e2253b5e7c761f59b184815e46b06cc5132a92511a93dead6315c2
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f5051525354555657
|
||||
HASH: fd9664ecb814785c8474188706e6ab0952925f9b9d8e351665ced12e84d92fad
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758
|
||||
HASH: 81342700c48f41ec5b54180d560e73e5ad6782717b2d3320b42280be11f0873e
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f50515253545556575859
|
||||
HASH: 523cf9a356076fe8c3538bdd752bc43712c7d28f29499aaae7812f1e4167840e
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a
|
||||
HASH: 9706d70e28a9e99db15974b1c01635868a62c6567eb40903adae58d417b882f2
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b
|
||||
HASH: 2216f01255ff24422e18d906c64506924940451e09d4ec17e4dbc8ea6d14ef59
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c
|
||||
HASH: 64ad22e77fc9f8a03ad6e06a067add9f0e0360d4533014fa286ccdf40dceb231
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d
|
||||
HASH: 9908418a2bb564ab9607d2f863b841dd4fe47ee370dde05a9368e400f7f9904b
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e
|
||||
HASH: 981a7989084e74f6d5fd8870321e860991729eed88e60d85ab5fdaa769be6fd2
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f
|
||||
HASH: 6528ea458efd23391e968e0dd3a40202ac94e3854d1a4642cbbe0d13a15cb849
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f60
|
||||
HASH: 767fdcd43cf16cbf980fd560dfc55f67be20510f9a0c8fcd5c749da8ef23fd7b
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f6061
|
||||
HASH: 90afc4e366bcee748591d93ba9f7c2e05a1fda261b58d094f8f0450c8a31ffb8
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162
|
||||
HASH: 660f9f5d430bf89f5946fd4649ad41f806937641c808a80da70660f53179a941
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f60616263
|
||||
HASH: 5ac86383dec1db602fdbc2c978c3fe1bf4328fea1e1b495b68be2c3b67ba033b
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f6061626364
|
||||
HASH: 7c15cdf3705457eb6b8edd79fb75bf568692ccb778f85fa2e1d462f48ee55c4f
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465
|
||||
HASH: a8df989766fc245edbb4b7268afb7380e4ea3f7123802b72ae2adb938211c9f9
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f60616263646566
|
||||
HASH: 707aa875c6162027ac2829894c0be750f5ee8fe8a64465080025f708dc200f0e
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f6061626364656667
|
||||
HASH: 6efd41538fec50459b6c2583ade5754c86617580eef3071d38723aaf743f93c7
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768
|
||||
HASH: 5c22d6a56a4fbdb85aa70994b4e118224bb6db2afd017a98c2b992ce26ea8925
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f60616263646566676869
|
||||
HASH: a4a9739a1c83135bab3334990b470164ed81f633d7fe79722b3ac6e65dadd38e
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a
|
||||
HASH: f1ac1ad3348ea6c949fde09cbee706ea0aecf3a93fc51a8a7e2bdb8cd7400b01
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b
|
||||
HASH: 492d9eae92f27ecce118d3fd8df63158cf709ed5069502263b8be1c105196ea3
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c
|
||||
HASH: 8691c32810f3220c0df76816af0a73b3fade2594cbcc711b855e2cd81dbdec95
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d
|
||||
HASH: cab341f7059d974cbc620bc423b02f58b5e1a899f416b0858ae1a736d4681162
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e
|
||||
HASH: e08b3d16f0a3b663f319da999db897488d1677048a38fa7b4f1f783e4f1974e6
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f
|
||||
HASH: d5587e0b33166a320dd69417adb01cb1129aff5506a2f655574cf2e264636bdb
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f70
|
||||
HASH: 5a69194c22af2b7040a8488738f96c901ae215965d611a572932464261539fc8
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f7071
|
||||
HASH: d8e7d58cd37acad505940843a8bb046971c43e4d0593c6bb946b07926644f78f
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172
|
||||
HASH: 46b07cc026b633e6245661813d5aca2bcc295d0b8ab01f27f517b4f2823d0b3e
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f70717273
|
||||
HASH: fc169b3e5480e72057d828702f9da4f08d141a178eb8adef03ca0708c1a10df7
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f7071727374
|
||||
HASH: ae3e241c1c394190fbac7fccb3df0d0bc317c6e1a15993330e9b648c80264066
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475
|
||||
HASH: f430aeef864823d8c8b448f2d25452ea3ed7abe2966adc8c42636b69d0a1bad9
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f70717273747576
|
||||
HASH: b0d6518afa4e3590746aa5fd1e58f7ec06a347981177737ad6631b22c53b6617
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f7071727374757677
|
||||
HASH: 16684ddd272dfc18dd40c16a7f57cecca70df0a96c4a066b97646953e7c7691a
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778
|
||||
HASH: e8208de0982f3d8e9ac258eb26eb3f130ced7331797b625d6b65ba4ba2064c9c
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f70717273747576777879
|
||||
HASH: 8ecd4bdc226fb29dd486cd77b566723e44c77194ba7a000734736dbb76f61c7c
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a
|
||||
HASH: 153d5c1d5edb08f51f6353b6b7bdd48a9bba14068923b8991be59346a4f932f7
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b
|
||||
HASH: 60e555a694396b48273d2d778709c208c0757cd15697a43cf0c2115599c80e68
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c
|
||||
HASH: 7a4a15b47029005972a6b814d5e7f2c86c616bd98e6a06bd95cbed2f47400c67
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d
|
||||
HASH: 3de5adb8e3bf8dfabb41afe53c58fad23427a148755148011b5c12b88aba3dc0
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e
|
||||
HASH: f2fe67ff342e21b8f45e8f2e0bcd1d9243245d50ee6c78042e9c491388791c72
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f
|
||||
HASH: c3582f71ebb2be66fa5dd750f80baae97554f3b015663c8be377cfcb2488c1d1
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f80
|
||||
HASH: f7f3c46ba2564ff4c4c162da1f5b605f9f1c4aa6a20652a9f9a337c1a2f5b9c9
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f8081
|
||||
HASH: d3b11b4cbe513ec7b6f4bb5ff0c411de405a8641cf221493447a35927ca3aea7
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182
|
||||
HASH: 62323574c7cdaaca448fcbc7091ae4af3e04decb0d3c7c55636baa0a99c88699
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f80818283
|
||||
HASH: 89b7d0203387e0332622ca84a879bddbcff155a213997560fc05428e79e06891
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f8081828384
|
||||
HASH: be5cce3e365fbbb139f68a3da3367e42aa8bd79b15f5252f7c08c3c8f0dcab27
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485
|
||||
HASH: 7ae7702bc025692f2ea5ab0c2eb6552c7975a57c5acb93ff115d303f341a579c
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f80818283848586
|
||||
HASH: f7c4efacc0a4cb5836f170ea0bf5dc5ce36fe2d88e76a9f259eaab71aef0ff13
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f8081828384858687
|
||||
HASH: 6a35d3dadc62dfe7819519f92181b2f8d38f5e0ed3d51a22cf8a133ab628d6f4
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788
|
||||
HASH: bacecc2948c41beb73c815ca7cee6c7dbf2e4219190936edac5e4680500dd4d2
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f80818283848586878889
|
||||
HASH: 2dce89f76f4f37472ae6374b0825a9cd61619a995c7f49733f62b606a7ce905a
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a
|
||||
HASH: 7b65e63a0d17d68c798b5d5631f17c35faff70dbe90006589ca89277dbeeafc0
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b
|
||||
HASH: 9477e374453099d2f8679e1d9b167b5f1c4e3cc66f32bdd9a3748a10876a27b3
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c
|
||||
HASH: 448437adad41878e6529fcc2fad9bbdb13697b6cbb2669fc8150d3aa7e0418b8
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d
|
||||
HASH: ce4936743020825f508ca72c8355c88224a52c348a21567e65526ff8f82632fd
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e
|
||||
HASH: 556a195bf23cba5c3193fbbe472f1cd5478ea4cad2dc6d6a193102a2abd0fac4
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f
|
||||
HASH: e15dc6238e2e58e9ea212b0d7abfd700da3ae5120d4d601341ce9e424a7c5828
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f90
|
||||
HASH: a22022450276c5018d51cd321e0e195a0add003e33ecaa97028d6974b5712187
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f9091
|
||||
HASH: 044cabb79e57da22b772249c332bfb43c5d1c9b683d1b2d2b75f4c5e6773a216
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192
|
||||
HASH: 766e1167593896bdc8793fb7ccdb1d35dc430aaeafe1e7a96aba870416587e7e
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f90919293
|
||||
HASH: e19d72ca8438477db71e1bfa48924c4e75ee4f84c7aa9b0911521c60a2ba6440
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f9091929394
|
||||
HASH: 512ee7aa89497a761f0798c29a1dd37d1d86f1c0870519a0aab69d265df118c0
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495
|
||||
HASH: 80c199310a2ab7af6a808f6d68843136c30e9228a766618632d4e1210edf365c
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f90919293949596
|
||||
HASH: 43fdffd19c692b6ef87c103cad9b80fb86919e6ecdcb73364d260da29a5f28d3
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f9091929394959697
|
||||
HASH: 1d1dc1909a6a8e552a0f8964601102d0edc89f5a02d3acced71826bbc5ca37af
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798
|
||||
HASH: fa77dac317e8c531246e14265ed42a87ade6fc3ce351652e6ad9290f8a157617
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f90919293949596979899
|
||||
HASH: 5bbc0f8b1a52732ed548e600865ae53360f0642a5674ecc7c6185f2cdeeb6601
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a
|
||||
HASH: 89c5fcbaf3a61d6fa4fa33c3eca8761ebab3c3467aba7d255394a0e70811ef3f
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b
|
||||
HASH: 9b3ecec85fa5ba5e0f1542085fff46bb2262163979879c9565294b2c56842a28
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c
|
||||
HASH: 4e301b852d473b5d12271209bdc350b4ec615c99cb07bdc2b379f86679b465bb
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d
|
||||
HASH: b306fbbb65eedbd07aea67a6490db9158a768d8223772d9414b124fe184098ba
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e
|
||||
HASH: de9fc91112ba62a5b732d4b708d6cc27a4b77d88e8f9c50db361c6f27295b46c
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9f
|
||||
HASH: f3aac26dc5197ea8dc068d6bfc9e3ee2217d908df5115fd236ba31828637ab7a
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0
|
||||
HASH: 3a0126ec4db7bd8c0c44e5197a84465c9c97c45f9d1fb8ab256eb5681dc25000
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1
|
||||
HASH: 7b6b55e2623a8eb6d70fa0913012e3db03cea4a6ddc0f5b875673a225f95d86e
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2
|
||||
HASH: be3ed738f221b53726d8a54ab7171189d77700bca86a2c614f5fefbca37eb5b0
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3
|
||||
HASH: c90bcb90aea0ab6a2331ecc17f4e68507b544910f3561d20a41916d8abb421db
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4
|
||||
HASH: 72f18a50776c9efbbb1d360342235bf28ab259648dbc08480390333314e02672
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5
|
||||
HASH: 2f1c635728444b5189540cf99d92a77057aed5a8c6fd7deadbbf9d86815cf5f9
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6
|
||||
HASH: c372e87d3540fb30e7316af85b65378384de4664a04e51b30ada778e3a226d85
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7
|
||||
HASH: d244f4ce129ef1c84eb40d30da099a2d65682e025e132b94f630fa3fdbda05af
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8
|
||||
HASH: 930a3e1f69ef7bcf3b9a81c1feb9758f60f9086b331fc170e6fa20b2a5738540
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9
|
||||
HASH: 84c3e0415a9d4da972a4fd9ee82d63b00099a2620889bc274ecb8606912cf92f
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aa
|
||||
HASH: 6d0d4cde9886218e9240a0c956836ea3939b558b8da0b309ca686f3c631f4942
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaab
|
||||
HASH: 86e476f2f8bacabc996360a0d6d57f0e045c9d3085ffe06d2305601c30d2340c
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabac
|
||||
HASH: 6ca5fcf07d2d4b1449924c8c84ad2c2e432a1f923dd365d81d9fde3c4985724f
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacad
|
||||
HASH: 9a7e1a3b1e01f24fce4d115eb98e2bb9eef349cf0d40493b8ab33727c9a1ccc8
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadae
|
||||
HASH: 165509739c09ec3486143b0c7c009d5b588736aff2813a2dbbfd733d5840ef98
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeaf
|
||||
HASH: ad191a623337f01563824b493bd735bee26833e9224d971a67b453d6e113d96a
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0
|
||||
HASH: f99e6d680bcbc6bb384290a5f966b18d4db38951abe695c6444c319058bb8904
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1
|
||||
HASH: 20e7e81e12c9ad28b7d65d3917051c327031f334a2f82b1f746cbcd7dc41f87d
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2
|
||||
HASH: 14675c8fe5cbe514491f7093aad58e9dcf8dd33ab22f3a8bca1ca5130d5e5bea
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3
|
||||
HASH: e105be1caf056cf599b91423df3cc1fb2808e0c6a50da68fc9db5693d1e0a9dc
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4
|
||||
HASH: 8fcade674361487f88d58330acb439a4b3e717341615ba691370becf4905e057
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5
|
||||
HASH: 70251dcdf7c899bddd4bc745597b998506c34bebc5de115d4fe85af2aa420171
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6
|
||||
HASH: d987826931a47b9ff871a0f2a8f10bbb659598da57d8abf81714b48a475a1356
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7
|
||||
HASH: fea31b338415f503dcb3708d68f377c4267e96345158e7b88d24ec8c232ef2b7
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8
|
||||
HASH: 3f2084debfeafa75d0c078bed7eda160459a3792a440c3718fb5c14c118e3263
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9
|
||||
HASH: e55583bd588fb053f040c541db36603e4959a7421d6281fca88454720da34c17
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9ba
|
||||
HASH: 0f433de1bbca62440be5d1ceaec8138a2154b374921d17e2d6493f85529a5ee2
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babb
|
||||
HASH: 39cc27d72466d2d63f70f28c59950a0665005b4bc8cfaaa662aeeaf34a19601f
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbc
|
||||
HASH: e7a556efdac11394b6058496b06dad0eb7315cae4cbd509e77e496c85f202aa4
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbd
|
||||
HASH: b90cf1fd5dbee8a9c18764962bff431dc560e113073828d839e11929d7d602ff
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbe
|
||||
HASH: 62b227effe8222299e757a065f1b64ab73fe6d2aac5d762303db956bc82b78ce
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebf
|
||||
HASH: 7b8f54247422c43a6d36977260e195d06e1dbba44c392b3fe76dcf4a96c433d5
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0
|
||||
HASH: d1400c9e8c7758b19e29c38e356ebc7abe8c0887741b845426821c7f74ebd35e
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1
|
||||
HASH: 9c557316ebd1e9cde622271e48f654553067c08d58986190bd3108d8bf54f130
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2
|
||||
HASH: f005478fb35b7a389377b35fb6193aab0e9f3c4138127d0905e488a3e5ed1bd6
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3
|
||||
HASH: f62114d69c3bfa8493061f44df01566e3a932e83b050b94eca7a1f7f189d6471
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4
|
||||
HASH: fd915ae6a50c06ba3917bb6d001a4b84c2ff8a906813ba78e80b043a91e7d1d6
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5
|
||||
HASH: 2176a39525e6a57ceed2f28eda5179172ec4f5a15be41b6cece8ab140ff1194c
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6
|
||||
HASH: bb831d2653af40b4e8a1048309c1f058d21334aa20c78dc63b8eb74a56fbde3c
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7
|
||||
HASH: 63c3d97a9f8894d5e043a707b0fee7f7ec4c049a23bbf1079df20b4165f9e22d
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8
|
||||
HASH: 3e53214e700694863284e7dc8dec3b98c1eaf97add0c1431e3bd321d6742a586
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9
|
||||
HASH: cb4e69b8adacdcb20dd2d79655117de489030ecc86c210a268b9985126ca9df3
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9ca
|
||||
HASH: 33eb4a42f46198eb7b52f8fd556fee08430872d3ad16fc3fca466a2d63cc4932
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacb
|
||||
HASH: 4fb1c07cd6e6ed8dbfac72210f3ff9707293dad1f8a4aa19f0ac8ff6c80f3ce9
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcc
|
||||
HASH: 22349aa35acbcffa6c84ab0e0231199d8353adde248ca1ff91010234886c94de
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccd
|
||||
HASH: 4ddf8cb3d4e80c9971a9ab171f9bc29fa4fd23eceed01e3bc297892de389d6f7
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdce
|
||||
HASH: 69be23136e4af5f52bb333deb3f32f76610b9fd9dac9ede75b2ef0491bf218ab
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecf
|
||||
HASH: 0b5ce2869ebbbc91bcc4d2e9560bcc21f4da20fffc96cd4eec422b795641c808
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0
|
||||
HASH: 82c17ce6066f792df2dce06eacd03ab4d202185a0a531e4af9a1a2d7b2d43def
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1
|
||||
HASH: 97b1b2e7e7aa6a9d1821ee2ad6c8062af397072eb9a8547c75817d0f0ad1659e
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2
|
||||
HASH: 5aa4d29af9903050d5d329d4d7f3a657ccd038543da764ed931560f799690a50
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3
|
||||
HASH: c78b17ff5ea603a809668bc06dbd99b78561b37ff615f6f5e5b86165a442ec2c
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4
|
||||
HASH: 2d1f5fb13901a205b158c5dc01bf54a5bfa9914c6b19ab66f501da64975e3a4d
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5
|
||||
HASH: ef7d3f61c537cac2a217cc214cd9d3e80f4adaac8431768f9db88a6571d3a57d
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6
|
||||
HASH: b23a6eb1184e297b5e9ec2e3aeeaec3c8de411dc614f2979de285ce4d3802e18
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7
|
||||
HASH: 6598f5924005cd92e779a5525636fb061a1cfe4e7afe97d468eb3106817d6c7a
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8
|
||||
HASH: f0aec1c2872dff14f3592c5f7e83c0dc4d299f94a7cfb247d0a4b95b9b0fc077
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9
|
||||
HASH: 709da24c1ca042c055a3cff57280d72f2b50094bbf029d9aed1dcca3288022c8
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9da
|
||||
HASH: afb0abb463999cc9ab124c95993d62e839bf7409d91d1c377912a895523c3125
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadb
|
||||
HASH: 049eb53d4bc939e817c9572a5f0def95e4e38b4614969d866e738e3ae6e24936
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdc
|
||||
HASH: 1f9df26fb5219482437297326737c0558eb557da4eb6374805dd9a30f842aae4
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdd
|
||||
HASH: 11151481e2199be550f9ae696cbd9ddc9be9686dbc77b619c005d0fb5aef9b89
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcddde
|
||||
HASH: 0767c2de1353f58b416e3fa492173c9c39792de46a34c6153d5878ba01e5f07d
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedf
|
||||
HASH: 46d743927ec8ad5e403c9e20405200481961e7335e90c4ea9c5ad35b77f3681c
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0
|
||||
HASH: d5ffd30325257614674de0b40f7b2ded3a287f48ae229b02c91dd2be28404171
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1
|
||||
HASH: c36f10f2463b839f4bbe7130c8f3abf29a56608bdf767199faccadecc8245631
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2
|
||||
HASH: 4265605e9d5b02fc438c15823bdd01cbcec073d57ad7a699d0126312fdbe4322
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3
|
||||
HASH: 829f989b205831d3c5c002ebf8cea1b5fba3daf966539e3b421b6c2c768f7554
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4
|
||||
HASH: 406a227d2d1767e0cf417d6bf7ca58a262c79460f421b9c155513714187d10d2
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5
|
||||
HASH: adf7d0028e41121e47aef77dca9de82fef7fe4f4c82f2d6df253adb4e756f2ec
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6
|
||||
HASH: b9a11305f92002de551314de53739b1c7e31c257149aee21f3a5ba4af068215d
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7
|
||||
HASH: 49f9abbe9007e85091827b49256730f552e4a2170a7b6f9cc461483bd8ae0d52
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8
|
||||
HASH: 98ebce2d0b548d9fb99fbd63d842c119f2ce671317cd080ee036fa69457fccda
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9
|
||||
HASH: 779042d9184c626289868dc73662e71f413c1df4fecd2f08b0edf40bd8d520f4
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9ea
|
||||
HASH: f8ad01320e4bbab09282a97511598384089a447f9a6a8fa298b65a82f1731806
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaeb
|
||||
HASH: 1d799e024fd1627cc0395c68bec456631153bffaeb625cda58411b9cbe137b34
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebec
|
||||
HASH: a9ba7072400dac24052ef744ca60c8273d743af357c851a7016cafd599225672
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebeced
|
||||
HASH: b02147bf83730cc51219f660fe93c63a7463c765395b6721bb842e3ef230e6f5
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedee
|
||||
HASH: b642374d57afa89053dcb7f6e1e72680fb96e3f28adaaf5aed89ab4cfc78214a
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeef
|
||||
HASH: 546b4be370ba614a1761fe8cef8c023d6a7f968981e23a1e8e1168b25cce2efa
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0
|
||||
HASH: 72dab9724f6e174d48e6b8caf489747995d649828a1b1d7a6e8527d9a01523a4
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1
|
||||
HASH: 30b611734127b847bed5c68a867bcded79b2b9da0a358dbe15c4dd578f81e6c0
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2
|
||||
HASH: 986317b1d1afd4692dd533a712718196d412f46a6f3166f417ef01306ab695dd
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3
|
||||
HASH: db6329f783adf7cf5a10e47369fe03c95bcf523558f3aedf18b51a355a252517
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4
|
||||
HASH: 54bb60a43c1e045644420916bac42cc72f86649fe8efeec866cd8e8128a88def
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5
|
||||
HASH: 802875948f79eefb707094e323a0faa2d6d88949a08c044ed3757174492bd2eb
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6
|
||||
HASH: ffc9e261842e1afdaed9f364f125301f20ac8fb0eea556db975211c7db281daa
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7
|
||||
HASH: edfe0aa71067c62e894a516a72dd4bef8c3917e46eb22d39626ea826b90804e9
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8
|
||||
HASH: 98832102b93bab4f82ee872d1dc96d2651ccc9e908c3cf25a56b59cce20319df
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9
|
||||
HASH: 1248d2d1736f1c125c6928bf893f581ea25be6e6e3d3c46081c557de591d6c6c
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fa
|
||||
HASH: 7a01651d8ffa44f6695270c73066ca9d61733ae3c181e3477d11e7c9563594a3
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafb
|
||||
HASH: ced595397cfd128aadbf451002457ff5b0fc2ac3993cabd47f0fc3ddbc6d0f32
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfc
|
||||
HASH: 8797db8dd8ddd1ecbee1f1d71aed5d41adca8345277a7bc0b12df75bb4536722
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfd
|
||||
HASH: 369b09e04be27275df75c180d7283c083162f35456152f0b16ae680dda5195bc
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfe
|
||||
HASH: 1d0850ee9bca0abc9601e9deabe1418fedec2fb6ac4150bd5302d2430f9be943
|
||||
|
||||
|
||||
# Longer test vectors
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfe
|
||||
HASH: 450eee5f3502c7d5ac7f223d4b4f2c76a11e5bd02d253a37ca9e6e901d5fb56e
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff
|
||||
HASH: 6ed9bf545705dba5971e83a1f2a46a9dd5ac2fe8a934f13cee8d353003eaf908
|
||||
|
||||
IN: 000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff000102030405060708090a0b0c0d0e0f101112131415161718191a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132333435363738393a3b3c3d3e3f404142434445464748494a4b4c4d4e4f505152535455565758595a5b5c5d5e5f606162636465666768696a6b6c6d6e6f707172737475767778797a7b7c7d7e7f808182838485868788898a8b8c8d8e8f909192939495969798999a9b9c9d9e9fa0a1a2a3a4a5a6a7a8a9aaabacadaeafb0b1b2b3b4b5b6b7b8b9babbbcbdbebfc0c1c2c3c4c5c6c7c8c9cacbcccdcecfd0d1d2d3d4d5d6d7d8d9dadbdcdddedfe0e1e2e3e4e5e6e7e8e9eaebecedeeeff0f1f2f3f4f5f6f7f8f9fafbfcfdfeff00
|
||||
HASH: a43b19ed8f147f18c304bffeec559e63e83877507cac11924edaf9eb6b6c1bac
|
|
@ -6,73 +6,83 @@ PKGS += TEST_LIBC_STR
|
|||
TEST_LIBC_STR_SRCS := $(wildcard test/libc/str/*.c)
|
||||
TEST_LIBC_STR_SRCS_TEST = $(filter %_test.c,$(TEST_LIBC_STR_SRCS))
|
||||
|
||||
TEST_LIBC_STR_OBJS = \
|
||||
TEST_LIBC_STR_OBJS = \
|
||||
$(TEST_LIBC_STR_SRCS:%.c=o/$(MODE)/%.o)
|
||||
|
||||
TEST_LIBC_STR_COMS = \
|
||||
TEST_LIBC_STR_COMS = \
|
||||
$(TEST_LIBC_STR_SRCS:%.c=o/$(MODE)/%.com)
|
||||
|
||||
TEST_LIBC_STR_BINS = \
|
||||
$(TEST_LIBC_STR_COMS) \
|
||||
TEST_LIBC_STR_BINS = \
|
||||
$(TEST_LIBC_STR_COMS) \
|
||||
$(TEST_LIBC_STR_COMS:%=%.dbg)
|
||||
|
||||
TEST_LIBC_STR_TESTS = \
|
||||
TEST_LIBC_STR_TESTS = \
|
||||
$(TEST_LIBC_STR_SRCS_TEST:%.c=o/$(MODE)/%.com.ok)
|
||||
|
||||
TEST_LIBC_STR_CHECKS = \
|
||||
TEST_LIBC_STR_CHECKS = \
|
||||
$(TEST_LIBC_STR_SRCS_TEST:%.c=o/$(MODE)/%.com.runs)
|
||||
|
||||
TEST_LIBC_STR_DIRECTDEPS = \
|
||||
LIBC_ALG \
|
||||
LIBC_CALLS \
|
||||
LIBC_FMT \
|
||||
LIBC_INTRIN \
|
||||
LIBC_LOG \
|
||||
LIBC_MEM \
|
||||
LIBC_NEXGEN32E \
|
||||
LIBC_RAND \
|
||||
LIBC_RUNTIME \
|
||||
LIBC_STDIO \
|
||||
LIBC_STR \
|
||||
LIBC_STUBS \
|
||||
LIBC_SYSV \
|
||||
LIBC_TESTLIB \
|
||||
LIBC_UNICODE \
|
||||
LIBC_X \
|
||||
LIBC_ZIPOS \
|
||||
THIRD_PARTY_MBEDTLS \
|
||||
THIRD_PARTY_REGEX \
|
||||
TEST_LIBC_STR_DIRECTDEPS = \
|
||||
LIBC_ALG \
|
||||
LIBC_CALLS \
|
||||
LIBC_FMT \
|
||||
LIBC_INTRIN \
|
||||
LIBC_LOG \
|
||||
LIBC_MEM \
|
||||
LIBC_NEXGEN32E \
|
||||
LIBC_RAND \
|
||||
LIBC_RUNTIME \
|
||||
LIBC_STDIO \
|
||||
LIBC_STR \
|
||||
LIBC_STUBS \
|
||||
LIBC_SYSV \
|
||||
LIBC_TESTLIB \
|
||||
LIBC_UNICODE \
|
||||
LIBC_X \
|
||||
LIBC_ZIPOS \
|
||||
THIRD_PARTY_MBEDTLS \
|
||||
THIRD_PARTY_REGEX \
|
||||
THIRD_PARTY_ZLIB
|
||||
|
||||
TEST_LIBC_STR_DEPS := \
|
||||
TEST_LIBC_STR_DEPS := \
|
||||
$(call uniq,$(foreach x,$(TEST_LIBC_STR_DIRECTDEPS),$($(x))))
|
||||
|
||||
o/$(MODE)/test/libc/str/str.pkg: \
|
||||
$(TEST_LIBC_STR_OBJS) \
|
||||
o/$(MODE)/test/libc/str/str.pkg: \
|
||||
$(TEST_LIBC_STR_OBJS) \
|
||||
$(foreach x,$(TEST_LIBC_STR_DIRECTDEPS),$($(x)_A).pkg)
|
||||
|
||||
o/$(MODE)/test/libc/str/tpenc_test.o: \
|
||||
OVERRIDE_CFLAGS += \
|
||||
o/$(MODE)/test/libc/str/tpenc_test.o: \
|
||||
OVERRIDE_CFLAGS += \
|
||||
$(TRADITIONAL)
|
||||
|
||||
o/$(MODE)/test/libc/str/%.com.dbg: \
|
||||
$(TEST_LIBC_STR_DEPS) \
|
||||
o/$(MODE)/test/libc/str/%.o \
|
||||
o/$(MODE)/test/libc/str/str.pkg \
|
||||
$(LIBC_TESTMAIN) \
|
||||
$(CRT) \
|
||||
o/$(MODE)/test/libc/str/%.com.dbg: \
|
||||
$(TEST_LIBC_STR_DEPS) \
|
||||
o/$(MODE)/test/libc/str/%.o \
|
||||
o/$(MODE)/test/libc/str/str.pkg \
|
||||
$(LIBC_TESTMAIN) \
|
||||
$(CRT) \
|
||||
$(APE)
|
||||
@$(APELINK)
|
||||
|
||||
$(TEST_LIBC_STR_OBJS): \
|
||||
DEFAULT_CCFLAGS += \
|
||||
o/$(MODE)/test/libc/str/blake2.com.dbg: \
|
||||
$(TEST_LIBC_STR_DEPS) \
|
||||
o/$(MODE)/test/libc/str/blake2.o \
|
||||
o/$(MODE)/test/libc/str/blake2b256_tests.txt.zip.o \
|
||||
o/$(MODE)/test/libc/str/str.pkg \
|
||||
$(LIBC_TESTMAIN) \
|
||||
$(CRT) \
|
||||
$(APE)
|
||||
@$(APELINK)
|
||||
|
||||
$(TEST_LIBC_STR_OBJS): \
|
||||
DEFAULT_CCFLAGS += \
|
||||
-fno-builtin
|
||||
|
||||
o/$(MODE)/test/libc/str/memmove_test.o: \
|
||||
OVERRIDE_CFLAGS += \
|
||||
o/$(MODE)/test/libc/str/memmove_test.o: \
|
||||
OVERRIDE_CFLAGS += \
|
||||
-O2 -D_FORTIFY_SOURCE=2
|
||||
|
||||
.PHONY: o/$(MODE)/test/libc/str
|
||||
o/$(MODE)/test/libc/str: \
|
||||
$(TEST_LIBC_STR_BINS) \
|
||||
o/$(MODE)/test/libc/str: \
|
||||
$(TEST_LIBC_STR_BINS) \
|
||||
$(TEST_LIBC_STR_CHECKS)
|
||||
|
|
|
@ -19,12 +19,14 @@
|
|||
#include "libc/bits/bits.h"
|
||||
#include "libc/bits/bswap.h"
|
||||
#include "libc/macros.internal.h"
|
||||
#include "libc/nexgen32e/crc32.h"
|
||||
#include "libc/nexgen32e/nexgen32e.h"
|
||||
#include "libc/nexgen32e/x86feature.h"
|
||||
#include "libc/nt/typedef/imagetlscallback.h"
|
||||
#include "libc/rand/rand.h"
|
||||
#include "libc/runtime/gc.internal.h"
|
||||
#include "libc/runtime/runtime.h"
|
||||
#include "libc/str/blake2.h"
|
||||
#include "libc/testlib/ezbench.h"
|
||||
#include "libc/testlib/hyperion.h"
|
||||
#include "libc/testlib/testlib.h"
|
||||
|
@ -257,6 +259,8 @@ BENCH(mbedtls, bench) {
|
|||
mbedtls_sha512_ret(kHyperion, kHyperionSize, d, 1));
|
||||
EZBENCH2("sha512", donothing,
|
||||
mbedtls_sha512_ret(kHyperion, kHyperionSize, d, 0));
|
||||
EZBENCH2("BLAKE2B256", donothing, BLAKE2B256(kHyperion, kHyperionSize, d));
|
||||
EZBENCH2("crc32_z", donothing, crc32_z(0, kHyperion, kHyperionSize));
|
||||
}
|
||||
|
||||
char *mpi2str(mbedtls_mpi *m) {
|
||||
|
|
33
third_party/mbedtls/blake2b256.c
vendored
Normal file
33
third_party/mbedtls/blake2b256.c
vendored
Normal file
|
@ -0,0 +1,33 @@
|
|||
/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:4;tab-width:4;coding:utf-8 -*-│
|
||||
│vi: set net ft=c ts=2 sts=2 sw=2 fenc=utf-8 :vi│
|
||||
╞══════════════════════════════════════════════════════════════════════════════╡
|
||||
│ Copyright 2021 Justine Alexandra Roberts Tunney │
|
||||
│ │
|
||||
│ Permission to use, copy, modify, and/or distribute this software for │
|
||||
│ any purpose with or without fee is hereby granted, provided that the │
|
||||
│ above copyright notice and this permission notice appear in all copies. │
|
||||
│ │
|
||||
│ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL │
|
||||
│ WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED │
|
||||
│ WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE │
|
||||
│ AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL │
|
||||
│ DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR │
|
||||
│ PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER │
|
||||
│ TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR │
|
||||
│ PERFORMANCE OF THIS SOFTWARE. │
|
||||
╚─────────────────────────────────────────────────────────────────────────────*/
|
||||
#include "libc/str/blake2.h"
|
||||
#include "third_party/mbedtls/md.h"
|
||||
/* clang-format off */
|
||||
|
||||
const mbedtls_md_info_t mbedtls_blake2b256_info = {
|
||||
"BLAKE2B256",
|
||||
MBEDTLS_MD_BLAKE2B256,
|
||||
BLAKE2B256_DIGEST_LENGTH,
|
||||
BLAKE2B_CBLOCK,
|
||||
(void *)BLAKE2B256_Init,
|
||||
(void *)BLAKE2B256_Update,
|
||||
(void *)BLAKE2B256_Process,
|
||||
(void *)BLAKE2B256_Final,
|
||||
(void *)BLAKE2B256,
|
||||
};
|
4
third_party/mbedtls/config.h
vendored
4
third_party/mbedtls/config.h
vendored
|
@ -19,10 +19,12 @@
|
|||
#endif
|
||||
|
||||
/* hash functions */
|
||||
#define MBEDTLS_MD5_C
|
||||
#define MBEDTLS_SHA1_C
|
||||
#define MBEDTLS_SHA256_C
|
||||
#define MBEDTLS_SHA512_C
|
||||
#ifdef MBEDTLS_SSL_PROTO_TLS1
|
||||
#define MBEDTLS_MD5_C
|
||||
#endif
|
||||
|
||||
/* random numbers */
|
||||
#define ENTROPY_HAVE_STRONG
|
||||
|
|
8
third_party/mbedtls/md.c
vendored
8
third_party/mbedtls/md.c
vendored
|
@ -17,6 +17,7 @@
|
|||
╚─────────────────────────────────────────────────────────────────────────────*/
|
||||
#include "libc/mem/mem.h"
|
||||
#include "libc/stdio/stdio.h"
|
||||
#include "libc/str/blake2.h"
|
||||
#include "third_party/mbedtls/common.h"
|
||||
#include "third_party/mbedtls/error.h"
|
||||
#include "third_party/mbedtls/md.h"
|
||||
|
@ -69,6 +70,7 @@ asm(".include \"libc/disclaimer.inc\"");
|
|||
* Reminder: update profiles in x509_crt.c when adding a new hash!
|
||||
*/
|
||||
static const uint8_t supported_digests[] = {
|
||||
MBEDTLS_MD_BLAKE2B256,
|
||||
#if defined(MBEDTLS_SHA512_C)
|
||||
MBEDTLS_MD_SHA512,
|
||||
#if !defined(MBEDTLS_SHA512_NO_SHA384)
|
||||
|
@ -154,6 +156,8 @@ const mbedtls_md_info_t *mbedtls_md_info_from_string( const char *md_name )
|
|||
if( !strcasecmp( "SHA512", md_name ) )
|
||||
return mbedtls_md_info_from_type( MBEDTLS_MD_SHA512 );
|
||||
#endif
|
||||
if( !strcasecmp( "BLAKE2B256", md_name ) )
|
||||
return mbedtls_md_info_from_type( MBEDTLS_MD_BLAKE2B256 );
|
||||
return( NULL );
|
||||
}
|
||||
|
||||
|
@ -200,6 +204,8 @@ const mbedtls_md_info_t *mbedtls_md_info_from_type( mbedtls_md_type_t md_type )
|
|||
case MBEDTLS_MD_SHA512:
|
||||
return( &mbedtls_sha512_info );
|
||||
#endif
|
||||
case MBEDTLS_MD_BLAKE2B256:
|
||||
return( &mbedtls_blake2b256_info );
|
||||
default:
|
||||
return( NULL );
|
||||
}
|
||||
|
@ -237,6 +243,8 @@ static int16_t GetMdContextSize(mbedtls_md_type_t t)
|
|||
case MBEDTLS_MD_SHA512:
|
||||
return sizeof(mbedtls_sha512_context);
|
||||
#endif
|
||||
case MBEDTLS_MD_BLAKE2B256:
|
||||
return sizeof(struct Blake2b);
|
||||
default:
|
||||
return( MBEDTLS_ERR_MD_BAD_INPUT_DATA );
|
||||
}
|
||||
|
|
23
third_party/mbedtls/md.h
vendored
23
third_party/mbedtls/md.h
vendored
|
@ -18,19 +18,19 @@ COSMOPOLITAN_C_START_
|
|||
* \warning MD2, MD4, MD5 and SHA-1 are considered weak message digests and
|
||||
* their use constitutes a security risk. We recommend considering
|
||||
* stronger message digests instead.
|
||||
*
|
||||
*/
|
||||
typedef enum {
|
||||
MBEDTLS_MD_NONE=0, /**< None. */
|
||||
MBEDTLS_MD_SHA1, /**< The SHA-1 message digest. */
|
||||
MBEDTLS_MD_SHA224, /**< The SHA-224 message digest. */
|
||||
MBEDTLS_MD_SHA256, /**< The SHA-256 message digest. */
|
||||
MBEDTLS_MD_SHA384, /**< The SHA-384 message digest. */
|
||||
MBEDTLS_MD_SHA512, /**< The SHA-512 message digest. */
|
||||
MBEDTLS_MD_RIPEMD160, /**< The RIPEMD-160 message digest. */
|
||||
MBEDTLS_MD_MD2, /**< The MD2 message digest. */
|
||||
MBEDTLS_MD_MD4, /**< The MD4 message digest. */
|
||||
MBEDTLS_MD_MD5, /**< The MD5 message digest. */
|
||||
MBEDTLS_MD_NONE=0, /**< None. */
|
||||
MBEDTLS_MD_SHA1, /**< The SHA-1 message digest. */
|
||||
MBEDTLS_MD_SHA224, /**< The SHA-224 message digest. */
|
||||
MBEDTLS_MD_SHA256, /**< The SHA-256 message digest. */
|
||||
MBEDTLS_MD_SHA384, /**< The SHA-384 message digest. */
|
||||
MBEDTLS_MD_SHA512, /**< The SHA-512 message digest. */
|
||||
MBEDTLS_MD_BLAKE2B256, /**< The BLAKE2B256 message digest. */
|
||||
MBEDTLS_MD_RIPEMD160, /**< The RIPEMD-160 message digest. */
|
||||
MBEDTLS_MD_MD2, /**< The MD2 message digest. */
|
||||
MBEDTLS_MD_MD4, /**< The MD4 message digest. */
|
||||
MBEDTLS_MD_MD5, /**< The MD5 message digest. */
|
||||
} mbedtls_md_type_t;
|
||||
|
||||
#if defined(MBEDTLS_SHA512_C)
|
||||
|
@ -294,6 +294,7 @@ extern const mbedtls_md_info_t mbedtls_sha224_info;
|
|||
extern const mbedtls_md_info_t mbedtls_sha256_info;
|
||||
extern const mbedtls_md_info_t mbedtls_sha384_info;
|
||||
extern const mbedtls_md_info_t mbedtls_sha512_info;
|
||||
extern const mbedtls_md_info_t mbedtls_blake2b256_info;
|
||||
|
||||
COSMOPOLITAN_C_END_
|
||||
#endif /* COSMOPOLITAN_THIRD_PARTY_MBEDTLS_MD_H_ */
|
||||
|
|
2
third_party/mbedtls/pem.c
vendored
2
third_party/mbedtls/pem.c
vendored
|
@ -125,7 +125,7 @@ static int pem_des_decrypt( unsigned char des_iv[8],
|
|||
if( ( ret = mbedtls_des_setkey_dec( &des_ctx, des_key ) ) != 0 )
|
||||
goto exit;
|
||||
ret = mbedtls_des_crypt_cbc( &des_ctx, MBEDTLS_DES_DECRYPT, buflen,
|
||||
des_iv, buf, buf );
|
||||
des_iv, buf, buf );
|
||||
exit:
|
||||
mbedtls_des_free( &des_ctx );
|
||||
mbedtls_platform_zeroize( des_key, 8 );
|
||||
|
|
2
third_party/python/Include/import.h
vendored
2
third_party/python/Include/import.h
vendored
|
@ -107,7 +107,7 @@ struct _inittab {
|
|||
const char *name; /* ASCII encoded string */
|
||||
PyObject* (*initfunc)(void);
|
||||
};
|
||||
extern struct _inittab _PyImport_Inittab[];
|
||||
extern const struct _inittab _PyImport_Inittab[];
|
||||
extern struct _inittab * PyImport_Inittab;
|
||||
int PyImport_ExtendInittab(struct _inittab *newtab);
|
||||
#endif /* Py_LIMITED_API */
|
||||
|
|
1
third_party/python/Include/pylifecycle.h
vendored
1
third_party/python/Include/pylifecycle.h
vendored
|
@ -59,6 +59,7 @@ wchar_t * Py_GetPrefix(void);
|
|||
wchar_t * Py_GetExecPrefix(void);
|
||||
wchar_t * Py_GetPath(void);
|
||||
void Py_SetPath(const wchar_t *);
|
||||
void Py_LimitedPath(void);
|
||||
#ifdef MS_WINDOWS
|
||||
int _Py_CheckPython3();
|
||||
#endif
|
||||
|
|
37
third_party/python/Lib/_bootlocale.py
vendored
37
third_party/python/Lib/_bootlocale.py
vendored
|
@ -7,28 +7,15 @@ Don't import directly from third-party code; use the `locale` module instead!
|
|||
import sys
|
||||
import _locale
|
||||
|
||||
if sys.platform.startswith("win"):
|
||||
def getpreferredencoding(do_setlocale=True):
|
||||
return _locale._getdefaultlocale()[1]
|
||||
else:
|
||||
try:
|
||||
_locale.CODESET
|
||||
except AttributeError:
|
||||
def getpreferredencoding(do_setlocale=True):
|
||||
# This path for legacy systems needs the more complex
|
||||
# getdefaultlocale() function, import the full locale module.
|
||||
import locale
|
||||
return locale.getpreferredencoding(do_setlocale)
|
||||
else:
|
||||
def getpreferredencoding(do_setlocale=True):
|
||||
assert not do_setlocale
|
||||
result = _locale.nl_langinfo(_locale.CODESET)
|
||||
if not result and sys.platform in ('darwin', 'cosmo'):
|
||||
# nl_langinfo can return an empty string
|
||||
# when the setting has an invalid value.
|
||||
# Default to UTF-8 in that case because
|
||||
# UTF-8 is the default charset on OSX and
|
||||
# returning nothing will crash the
|
||||
# interpreter.
|
||||
result = 'UTF-8'
|
||||
return result
|
||||
def getpreferredencoding(do_setlocale=True):
|
||||
assert not do_setlocale
|
||||
result = _locale.nl_langinfo(_locale.CODESET)
|
||||
if not result and sys.platform in ('darwin', 'cosmo'):
|
||||
# nl_langinfo can return an empty string
|
||||
# when the setting has an invalid value.
|
||||
# Default to UTF-8 in that case because
|
||||
# UTF-8 is the default charset on OSX and
|
||||
# returning nothing will crash the
|
||||
# interpreter.
|
||||
result = 'UTF-8'
|
||||
return result
|
||||
|
|
5
third_party/python/Lib/_strptime.py
vendored
5
third_party/python/Lib/_strptime.py
vendored
|
@ -11,7 +11,7 @@ FUNCTIONS:
|
|||
|
||||
"""
|
||||
import time
|
||||
import locale
|
||||
# import locale
|
||||
import calendar
|
||||
from re import compile as re_compile
|
||||
from re import IGNORECASE
|
||||
|
@ -28,7 +28,8 @@ __all__ = []
|
|||
|
||||
def _getlang():
|
||||
# Figure out what the current language is set to.
|
||||
return locale.getlocale(locale.LC_TIME)
|
||||
# return locale.getlocale(locale.LC_TIME)
|
||||
return (None, None)
|
||||
|
||||
class LocaleTime(object):
|
||||
"""Stores and handles locale-specific information related to time.
|
||||
|
|
13
third_party/python/Lib/collections/__init__.py
vendored
13
third_party/python/Lib/collections/__init__.py
vendored
|
@ -39,17 +39,10 @@ from _weakref import proxy as _proxy
|
|||
from itertools import repeat as _repeat, chain as _chain, starmap as _starmap
|
||||
from reprlib import recursive_repr as _recursive_repr
|
||||
|
||||
try:
|
||||
from _collections import deque
|
||||
except ImportError:
|
||||
pass
|
||||
else:
|
||||
MutableSequence.register(deque)
|
||||
from _collections import deque
|
||||
MutableSequence.register(deque)
|
||||
|
||||
try:
|
||||
from _collections import defaultdict
|
||||
except ImportError:
|
||||
pass
|
||||
from _collections import defaultdict
|
||||
|
||||
|
||||
################################################################################
|
||||
|
|
77
third_party/python/Lib/hashlib.py
vendored
77
third_party/python/Lib/hashlib.py
vendored
|
@ -11,8 +11,7 @@ new(name, data=b'', **kwargs) - returns a new hash object implementing the
|
|||
Named constructor functions are also available, these are faster
|
||||
than using new(name):
|
||||
|
||||
md5(), sha1(), sha224(), sha256(), sha384(), sha512(),
|
||||
sha3_224, sha3_256, sha3_384, sha3_512, shake_128, and shake_256.
|
||||
md5(), sha1(), sha224(), sha256(), sha384(), sha512(), and blake2b256().
|
||||
|
||||
More algorithms may be available on your platform but the above are guaranteed
|
||||
to exist. See the algorithms_guaranteed and algorithms_available attributes
|
||||
|
@ -56,9 +55,7 @@ More condensed:
|
|||
# This tuple and __get_builtin_constructor() must be modified if a new
|
||||
# always available algorithm is added.
|
||||
__always_supported = ('md5', 'sha1', 'sha224', 'sha256', 'sha384', 'sha512',
|
||||
'sha3_224', 'sha3_256', 'sha3_384', 'sha3_512',
|
||||
'shake_128', 'shake_256')
|
||||
|
||||
'blake2b256')
|
||||
|
||||
algorithms_guaranteed = set(__always_supported)
|
||||
algorithms_available = set(__always_supported)
|
||||
|
@ -73,23 +70,12 @@ def __get_builtin_constructor(name):
|
|||
constructor = cache.get(name)
|
||||
if constructor is not None:
|
||||
return constructor
|
||||
try:
|
||||
if name in ('SHA1', 'sha1'):
|
||||
import _sha1
|
||||
cache['SHA1'] = cache['sha1'] = _sha1.sha1
|
||||
elif name in ('MD5', 'md5'):
|
||||
import _md5
|
||||
cache['MD5'] = cache['md5'] = _md5.md5
|
||||
elif name in ('SHA256', 'sha256', 'SHA224', 'sha224'):
|
||||
import _sha256
|
||||
cache['SHA224'] = cache['sha224'] = _sha256.sha224
|
||||
cache['SHA256'] = cache['sha256'] = _sha256.sha256
|
||||
elif name in ('SHA512', 'sha512', 'SHA384', 'sha384'):
|
||||
import _sha512
|
||||
cache['SHA384'] = cache['sha384'] = _sha512.sha384
|
||||
cache['SHA512'] = cache['sha512'] = _sha512.sha512
|
||||
elif name in {'sha3_224', 'sha3_256', 'sha3_384', 'sha3_512',
|
||||
'shake_128', 'shake_256'}:
|
||||
if name in ('MD5', 'md5'):
|
||||
import _md5
|
||||
cache['MD5'] = cache['md5'] = _md5.md5
|
||||
elif name in {'sha3_224', 'sha3_256', 'sha3_384', 'sha3_512',
|
||||
'shake_128', 'shake_256'}:
|
||||
try:
|
||||
import _sha3
|
||||
cache['sha3_224'] = _sha3.sha3_224
|
||||
cache['sha3_256'] = _sha3.sha3_256
|
||||
|
@ -97,21 +83,19 @@ def __get_builtin_constructor(name):
|
|||
cache['sha3_512'] = _sha3.sha3_512
|
||||
cache['shake_128'] = _sha3.shake_128
|
||||
cache['shake_256'] = _sha3.shake_256
|
||||
except ImportError:
|
||||
pass # no extension module, this hash is unsupported.
|
||||
|
||||
except ImportError:
|
||||
raise ValueError('unsupported hash type ' + name)
|
||||
constructor = cache.get(name)
|
||||
if constructor is not None:
|
||||
return constructor
|
||||
|
||||
raise ValueError('unsupported hash type ' + name)
|
||||
|
||||
|
||||
def __get_openssl_constructor(name):
|
||||
def __get_mbedtls_constructor(name):
|
||||
try:
|
||||
f = getattr(_hashlib, 'openssl_' + name)
|
||||
f = getattr(_hashlib, 'mbedtls_' + name)
|
||||
# Allow the C module to raise ValueError. The function will be
|
||||
# defined but the hash not actually available thanks to OpenSSL.
|
||||
# defined but the hash not actually available thanks to Mbedtls.
|
||||
f()
|
||||
# Use the C function directly (very fast)
|
||||
return f
|
||||
|
@ -134,25 +118,21 @@ def __hash_new(name, data=b'', **kwargs):
|
|||
try:
|
||||
return _hashlib.new(name, data)
|
||||
except ValueError:
|
||||
# If the _hashlib module (OpenSSL) doesn't support the named
|
||||
# If the _hashlib module (Mbedtls) doesn't support the named
|
||||
# hash, try using our builtin implementations.
|
||||
# This allows for SHA224/256 and SHA384/512 support even though
|
||||
# the OpenSSL library prior to 0.9.8 doesn't provide them.
|
||||
# the Mbedtls library prior to 0.9.8 doesn't provide them.
|
||||
return __get_builtin_constructor(name)(data)
|
||||
|
||||
|
||||
try:
|
||||
import _hashlib
|
||||
new = __hash_new
|
||||
__get_hash = __get_openssl_constructor
|
||||
algorithms_available = algorithms_available.union(
|
||||
_hashlib.openssl_md_meth_names)
|
||||
except ImportError:
|
||||
new = __py_new
|
||||
__get_hash = __get_builtin_constructor
|
||||
import _hashlib
|
||||
new = __hash_new
|
||||
__get_hash = __get_mbedtls_constructor
|
||||
algorithms_available = algorithms_available.union(
|
||||
_hashlib.mbedtls_md_meth_names)
|
||||
|
||||
try:
|
||||
# OpenSSL's PKCS5_PBKDF2_HMAC requires OpenSSL 1.0+ with HMAC and SHA
|
||||
# Mbedtls's PKCS5_PBKDF2_HMAC requires Mbedtls 1.0+ with HMAC and SHA
|
||||
from _hashlib import pbkdf2_hmac
|
||||
except ImportError:
|
||||
_trans_5C = bytes((x ^ 0x5C) for x in range(256))
|
||||
|
@ -162,7 +142,7 @@ except ImportError:
|
|||
"""Password based key derivation function 2 (PKCS #5 v2.0)
|
||||
|
||||
This Python implementations based on the hmac module about as fast
|
||||
as OpenSSL's PKCS5_PBKDF2_HMAC for short passwords and much faster
|
||||
as Mbedtls's PKCS5_PBKDF2_HMAC for short passwords and much faster
|
||||
for long passwords.
|
||||
"""
|
||||
if not isinstance(hash_name, str):
|
||||
|
@ -216,26 +196,19 @@ except ImportError:
|
|||
return dkey[:dklen]
|
||||
|
||||
try:
|
||||
# OpenSSL's scrypt requires OpenSSL 1.1+
|
||||
# Mbedtls's scrypt requires Mbedtls 1.1+
|
||||
from _hashlib import scrypt
|
||||
except ImportError:
|
||||
pass
|
||||
|
||||
|
||||
md5 = __get_hash('md5')
|
||||
sha1 = __get_hash('sha1')
|
||||
sha224 = __get_hash('sha224')
|
||||
sha256 = __get_hash('sha256')
|
||||
sha384 = __get_hash('sha384')
|
||||
sha512 = __get_hash('sha512')
|
||||
sha3_224 = __get_hash('sha3_224')
|
||||
sha3_256 = __get_hash('sha3_256')
|
||||
sha3_384 = __get_hash('sha3_384')
|
||||
sha3_512 = __get_hash('sha3_512')
|
||||
shake_128 = __get_hash('shake_128')
|
||||
shake_256 = __get_hash('shake_256')
|
||||
|
||||
blake2b256 = __get_hash('blake2b256')
|
||||
|
||||
# Cleanup locals()
|
||||
del __always_supported, __get_hash
|
||||
del __py_new, __hash_new, __get_openssl_constructor
|
||||
del __py_new, __hash_new, __get_mbedtls_constructor
|
||||
|
|
1
third_party/python/Lib/hello.py
vendored
Normal file
1
third_party/python/Lib/hello.py
vendored
Normal file
|
@ -0,0 +1 @@
|
|||
print("hello world")
|
|
@ -1364,7 +1364,7 @@ def _get_supported_file_loaders():
|
|||
extensions = ExtensionFileLoader, _imp.extension_suffixes()
|
||||
source = SourceFileLoader, SOURCE_SUFFIXES
|
||||
bytecode = SourcelessFileLoader, BYTECODE_SUFFIXES
|
||||
return [extensions, bytecode, source]
|
||||
return [bytecode, extensions, source]
|
||||
|
||||
|
||||
def _setup(_bootstrap_module):
|
||||
|
|
15
third_party/python/Lib/launchpy.py
vendored
Normal file
15
third_party/python/Lib/launchpy.py
vendored
Normal file
|
@ -0,0 +1,15 @@
|
|||
import sys
|
||||
from importlib import _bootstrap_external
|
||||
|
||||
def run_module_as_main(mod_name):
|
||||
path = "/zip/.python/%s.pyc" % (mod_name.replace(".", "/"))
|
||||
loader = _bootstrap_external.SourcelessFileLoader(mod_name, path)
|
||||
code = loader.get_code(mod_name)
|
||||
globs = sys.modules["__main__"].__dict__
|
||||
globs["__name__"] = "__main__"
|
||||
globs["__file__"] = path
|
||||
globs["__package__"] = None
|
||||
globs["__loader__"] = loader
|
||||
globs["__spec__"] = None
|
||||
exec(code, globs)
|
||||
return globs
|
5
third_party/python/Lib/os.py
vendored
5
third_party/python/Lib/os.py
vendored
|
@ -1158,7 +1158,10 @@ def popen(cmd, mode="r", buffering=-1):
|
|||
raise ValueError("invalid mode %r" % mode)
|
||||
if buffering == 0 or buffering is None:
|
||||
raise ValueError("popen() does not support unbuffered streams")
|
||||
import subprocess, io
|
||||
try:
|
||||
import subprocess, io
|
||||
except ImportError:
|
||||
raise ImportError('please use subprocess module')
|
||||
if mode == "r":
|
||||
proc = subprocess.Popen(cmd,
|
||||
shell=True,
|
||||
|
|
11
third_party/python/Lib/pydoc.py
vendored
11
third_party/python/Lib/pydoc.py
vendored
|
@ -2193,10 +2193,13 @@ def _start_server(urlhandler, port):
|
|||
>>> print(serverthread.error)
|
||||
None
|
||||
"""
|
||||
import http.server
|
||||
import email.message
|
||||
import select
|
||||
import threading
|
||||
try:
|
||||
import http.server
|
||||
import email.message
|
||||
import select
|
||||
import threading
|
||||
except ImportError:
|
||||
sys.exit(1)
|
||||
|
||||
class DocHandler(http.server.BaseHTTPRequestHandler):
|
||||
|
||||
|
|
36
third_party/python/Lib/shutil.py
vendored
36
third_party/python/Lib/shutil.py
vendored
|
@ -626,7 +626,10 @@ def _make_tarball(base_name, base_dir, compress="gzip", verbose=0, dry_run=0,
|
|||
raise ValueError("bad value for 'compress', or compression format not "
|
||||
"supported : {0}".format(compress))
|
||||
|
||||
import tarfile # late import for breaking circular dependency
|
||||
try:
|
||||
import tarfile
|
||||
except ImportError:
|
||||
raise
|
||||
|
||||
compress_ext = '.' + tar_compression if compress else ''
|
||||
archive_name = base_name + '.tar' + compress_ext
|
||||
|
@ -669,7 +672,10 @@ def _make_zipfile(base_name, base_dir, verbose=0, dry_run=0, logger=None):
|
|||
The output zip file will be named 'base_name' + ".zip". Returns the
|
||||
name of the output zip file.
|
||||
"""
|
||||
import zipfile # late import for breaking circular dependency
|
||||
try:
|
||||
import zipfile
|
||||
except ImportError:
|
||||
raise
|
||||
|
||||
zip_filename = base_name + ".zip"
|
||||
archive_dir = os.path.dirname(base_name)
|
||||
|
@ -877,7 +883,10 @@ def _ensure_directory(path):
|
|||
def _unpack_zipfile(filename, extract_dir):
|
||||
"""Unpack zip `filename` to `extract_dir`
|
||||
"""
|
||||
import zipfile # late import for breaking circular dependency
|
||||
try:
|
||||
import zipfile
|
||||
except ImportError:
|
||||
raise
|
||||
|
||||
if not zipfile.is_zipfile(filename):
|
||||
raise ReadError("%s is not a zip file" % filename)
|
||||
|
@ -911,7 +920,10 @@ def _unpack_zipfile(filename, extract_dir):
|
|||
def _unpack_tarfile(filename, extract_dir):
|
||||
"""Unpack tar/tar.gz/tar.bz2/tar.xz `filename` to `extract_dir`
|
||||
"""
|
||||
import tarfile # late import for breaking circular dependency
|
||||
try:
|
||||
import tarfile
|
||||
except ImportError:
|
||||
raise
|
||||
try:
|
||||
tarobj = tarfile.open(filename)
|
||||
except tarfile.TarError:
|
||||
|
@ -1003,22 +1015,6 @@ if hasattr(os, 'statvfs'):
|
|||
used = (st.f_blocks - st.f_bfree) * st.f_frsize
|
||||
return _ntuple_diskusage(total, used, free)
|
||||
|
||||
elif os.name == 'nt':
|
||||
|
||||
import nt
|
||||
__all__.append('disk_usage')
|
||||
_ntuple_diskusage = collections.namedtuple('usage', 'total used free')
|
||||
|
||||
def disk_usage(path):
|
||||
"""Return disk usage statistics about the given path.
|
||||
|
||||
Returned values is a named tuple with attributes 'total', 'used' and
|
||||
'free', which are the amount of total, used and free space, in bytes.
|
||||
"""
|
||||
total, free = nt._getdiskusage(path)
|
||||
used = total - free
|
||||
return _ntuple_diskusage(total, used, free)
|
||||
|
||||
|
||||
def chown(path, user=None, group=None):
|
||||
"""Change owner user and group of the given path.
|
||||
|
|
6
third_party/python/Modules/_bisectmodule.c
vendored
6
third_party/python/Modules/_bisectmodule.c
vendored
|
@ -6,6 +6,7 @@
|
|||
╚─────────────────────────────────────────────────────────────────────────────*/
|
||||
#define PY_SSIZE_T_CLEAN
|
||||
#include "third_party/python/Include/abstract.h"
|
||||
#include "third_party/python/Include/import.h"
|
||||
#include "third_party/python/Include/longobject.h"
|
||||
#include "third_party/python/Include/modsupport.h"
|
||||
#include "third_party/python/Include/object.h"
|
||||
|
@ -282,3 +283,8 @@ PyInit__bisect(void)
|
|||
{
|
||||
return PyModule_Create(&_bisectmodule);
|
||||
}
|
||||
|
||||
_Section(".rodata.pytab.1") const struct _inittab _PyImport_Inittab__bisect = {
|
||||
"_bisect",
|
||||
PyInit__bisect,
|
||||
};
|
||||
|
|
6
third_party/python/Modules/_bz2module.c
vendored
6
third_party/python/Modules/_bz2module.c
vendored
|
@ -9,6 +9,7 @@
|
|||
#include "third_party/python/Include/abstract.h"
|
||||
#include "third_party/python/Include/bytesobject.h"
|
||||
#include "third_party/python/Include/ceval.h"
|
||||
#include "third_party/python/Include/import.h"
|
||||
#include "third_party/python/Include/modsupport.h"
|
||||
#include "third_party/python/Include/object.h"
|
||||
#include "third_party/python/Include/pyerrors.h"
|
||||
|
@ -814,3 +815,8 @@ PyInit__bz2(void)
|
|||
|
||||
return m;
|
||||
}
|
||||
|
||||
_Section(".rodata.pytab.1") const struct _inittab _PyImport_Inittab__bz2 = {
|
||||
"_bz2",
|
||||
PyInit__bz2,
|
||||
};
|
||||
|
|
1
third_party/python/Modules/_codecsmodule.c
vendored
1
third_party/python/Modules/_codecsmodule.c
vendored
|
@ -8,6 +8,7 @@
|
|||
#include "third_party/python/Include/abstract.h"
|
||||
#include "third_party/python/Include/bytesobject.h"
|
||||
#include "third_party/python/Include/codecs.h"
|
||||
#include "third_party/python/Include/import.h"
|
||||
#include "third_party/python/Include/modsupport.h"
|
||||
#include "third_party/python/Include/object.h"
|
||||
#include "third_party/python/Include/pyerrors.h"
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
#include "third_party/python/Include/ceval.h"
|
||||
#include "third_party/python/Include/descrobject.h"
|
||||
#include "third_party/python/Include/dictobject.h"
|
||||
#include "third_party/python/Include/import.h"
|
||||
#include "third_party/python/Include/longobject.h"
|
||||
#include "third_party/python/Include/modsupport.h"
|
||||
#include "third_party/python/Include/object.h"
|
||||
|
|
6
third_party/python/Modules/_csv.c
vendored
6
third_party/python/Modules/_csv.c
vendored
|
@ -7,6 +7,7 @@
|
|||
#include "third_party/python/Include/abstract.h"
|
||||
#include "third_party/python/Include/descrobject.h"
|
||||
#include "third_party/python/Include/dictobject.h"
|
||||
#include "third_party/python/Include/import.h"
|
||||
#include "third_party/python/Include/listobject.h"
|
||||
#include "third_party/python/Include/longobject.h"
|
||||
#include "third_party/python/Include/modsupport.h"
|
||||
|
@ -1715,3 +1716,8 @@ PyInit__csv(void)
|
|||
PyModule_AddObject(module, "Error", _csvstate(module)->error_obj);
|
||||
return module;
|
||||
}
|
||||
|
||||
_Section(".rodata.pytab.1") const struct _inittab _PyImport_Inittab__csv = {
|
||||
"_csv",
|
||||
PyInit__csv,
|
||||
};
|
||||
|
|
552
third_party/python/Modules/_curses_panel.c
vendored
552
third_party/python/Modules/_curses_panel.c
vendored
|
@ -1,552 +0,0 @@
|
|||
/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:4;tab-width:8;coding:utf-8 -*-│
|
||||
│vi: set net ft=c ts=4 sts=4 sw=4 fenc=utf-8 :vi│
|
||||
╞══════════════════════════════════════════════════════════════════════════════╡
|
||||
│ Python 3 │
|
||||
│ https://docs.python.org/3/license.html │
|
||||
╚─────────────────────────────────────────────────────────────────────────────*/
|
||||
#include "third_party/python/Include/yoink.h"
|
||||
/* clang-format off */
|
||||
|
||||
PYTHON_PROVIDE("_curses_panel");
|
||||
PYTHON_PROVIDE("_curses_panel.bottom_panel");
|
||||
PYTHON_PROVIDE("_curses_panel.error");
|
||||
PYTHON_PROVIDE("_curses_panel.new_panel");
|
||||
PYTHON_PROVIDE("_curses_panel.top_panel");
|
||||
PYTHON_PROVIDE("_curses_panel.update_panels");
|
||||
PYTHON_PROVIDE("_curses_panel.version");
|
||||
|
||||
/*
|
||||
* Interface to the ncurses panel library
|
||||
*
|
||||
* Original version by Thomas Gellekum
|
||||
*/
|
||||
|
||||
/* Release Number */
|
||||
|
||||
static const char PyCursesVersion[] = "2.1";
|
||||
|
||||
/* Includes */
|
||||
|
||||
#include "third_party/python/Include/Python.h"
|
||||
|
||||
#include "third_party/python/Include/py_curses.h"
|
||||
|
||||
typedef struct {
|
||||
PyObject *PyCursesError;
|
||||
PyObject *PyCursesPanel_Type;
|
||||
} _curses_panelstate;
|
||||
|
||||
#define _curses_panelstate(o) ((_curses_panelstate *)PyModule_GetState(o))
|
||||
|
||||
static int
|
||||
_curses_panel_clear(PyObject *m)
|
||||
{
|
||||
Py_CLEAR(_curses_panelstate(m)->PyCursesError);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int
|
||||
_curses_panel_traverse(PyObject *m, visitproc visit, void *arg)
|
||||
{
|
||||
Py_VISIT(_curses_panelstate(m)->PyCursesError);
|
||||
return 0;
|
||||
}
|
||||
|
||||
static void
|
||||
_curses_panel_free(void *m)
|
||||
{
|
||||
_curses_panel_clear((PyObject *) m);
|
||||
}
|
||||
|
||||
static struct PyModuleDef _curses_panelmodule;
|
||||
|
||||
#define _curses_panelstate_global \
|
||||
((_curses_panelstate *) PyModule_GetState(PyState_FindModule(&_curses_panelmodule)))
|
||||
|
||||
/* Utility Functions */
|
||||
|
||||
/*
|
||||
* Check the return code from a curses function and return None
|
||||
* or raise an exception as appropriate.
|
||||
*/
|
||||
|
||||
static PyObject *
|
||||
PyCursesCheckERR(int code, const char *fname)
|
||||
{
|
||||
if (code != ERR) {
|
||||
Py_INCREF(Py_None);
|
||||
return Py_None;
|
||||
} else {
|
||||
if (fname == NULL) {
|
||||
PyErr_SetString(_curses_panelstate_global->PyCursesError, catchall_ERR);
|
||||
} else {
|
||||
PyErr_Format(_curses_panelstate_global->PyCursesError, "%s() returned ERR", fname);
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
/*****************************************************************************
|
||||
The Panel Object
|
||||
******************************************************************************/
|
||||
|
||||
/* Definition of the panel object and panel type */
|
||||
|
||||
typedef struct {
|
||||
PyObject_HEAD
|
||||
PANEL *pan;
|
||||
PyCursesWindowObject *wo; /* for reference counts */
|
||||
} PyCursesPanelObject;
|
||||
|
||||
#define PyCursesPanel_Check(v) \
|
||||
(Py_TYPE(v) == _curses_panelstate_global->PyCursesPanel_Type)
|
||||
|
||||
/* Some helper functions. The problem is that there's always a window
|
||||
associated with a panel. To ensure that Python's GC doesn't pull
|
||||
this window from under our feet we need to keep track of references
|
||||
to the corresponding window object within Python. We can't use
|
||||
dupwin(oldwin) to keep a copy of the curses WINDOW because the
|
||||
contents of oldwin is copied only once; code like
|
||||
|
||||
win = newwin(...)
|
||||
pan = win.panel()
|
||||
win.addstr(some_string)
|
||||
pan.window().addstr(other_string)
|
||||
|
||||
will fail. */
|
||||
|
||||
/* We keep a linked list of PyCursesPanelObjects, lop. A list should
|
||||
suffice, I don't expect more than a handful or at most a few
|
||||
dozens of panel objects within a typical program. */
|
||||
typedef struct _list_of_panels {
|
||||
PyCursesPanelObject *po;
|
||||
struct _list_of_panels *next;
|
||||
} list_of_panels;
|
||||
|
||||
/* list anchor */
|
||||
static list_of_panels *lop;
|
||||
|
||||
/* Insert a new panel object into lop */
|
||||
static int
|
||||
insert_lop(PyCursesPanelObject *po)
|
||||
{
|
||||
list_of_panels *new;
|
||||
|
||||
if ((new = (list_of_panels *)PyMem_Malloc(sizeof(list_of_panels))) == NULL) {
|
||||
PyErr_NoMemory();
|
||||
return -1;
|
||||
}
|
||||
new->po = po;
|
||||
new->next = lop;
|
||||
lop = new;
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Remove the panel object from lop */
|
||||
static void
|
||||
remove_lop(PyCursesPanelObject *po)
|
||||
{
|
||||
list_of_panels *temp, *n;
|
||||
|
||||
temp = lop;
|
||||
if (temp->po == po) {
|
||||
lop = temp->next;
|
||||
PyMem_Free(temp);
|
||||
return;
|
||||
}
|
||||
while (temp->next == NULL || temp->next->po != po) {
|
||||
if (temp->next == NULL) {
|
||||
PyErr_SetString(PyExc_RuntimeError,
|
||||
"remove_lop: can't find Panel Object");
|
||||
return;
|
||||
}
|
||||
temp = temp->next;
|
||||
}
|
||||
n = temp->next->next;
|
||||
PyMem_Free(temp->next);
|
||||
temp->next = n;
|
||||
return;
|
||||
}
|
||||
|
||||
/* Return the panel object that corresponds to pan */
|
||||
static PyCursesPanelObject *
|
||||
find_po(PANEL *pan)
|
||||
{
|
||||
list_of_panels *temp;
|
||||
for (temp = lop; temp->po->pan != pan; temp = temp->next)
|
||||
if (temp->next == NULL) return NULL; /* not found!? */
|
||||
return temp->po;
|
||||
}
|
||||
|
||||
/* Function Prototype Macros - They are ugly but very, very useful. ;-)
|
||||
|
||||
X - function name
|
||||
TYPE - parameter Type
|
||||
ERGSTR - format string for construction of the return value
|
||||
PARSESTR - format string for argument parsing */
|
||||
|
||||
#define Panel_NoArgNoReturnFunction(X) \
|
||||
static PyObject *PyCursesPanel_##X(PyCursesPanelObject *self) \
|
||||
{ return PyCursesCheckERR(X(self->pan), # X); }
|
||||
|
||||
#define Panel_NoArgTrueFalseFunction(X) \
|
||||
static PyObject *PyCursesPanel_##X(PyCursesPanelObject *self) \
|
||||
{ \
|
||||
if (X (self->pan) == FALSE) { Py_INCREF(Py_False); return Py_False; } \
|
||||
else { Py_INCREF(Py_True); return Py_True; } }
|
||||
|
||||
#define Panel_TwoArgNoReturnFunction(X, TYPE, PARSESTR) \
|
||||
static PyObject *PyCursesPanel_##X(PyCursesPanelObject *self, PyObject *args) \
|
||||
{ \
|
||||
TYPE arg1, arg2; \
|
||||
if (!PyArg_ParseTuple(args, PARSESTR, &arg1, &arg2)) return NULL; \
|
||||
return PyCursesCheckERR(X(self->pan, arg1, arg2), # X); }
|
||||
|
||||
/* ------------- PANEL routines --------------- */
|
||||
|
||||
Panel_NoArgNoReturnFunction(bottom_panel)
|
||||
Panel_NoArgNoReturnFunction(hide_panel)
|
||||
Panel_NoArgNoReturnFunction(show_panel)
|
||||
Panel_NoArgNoReturnFunction(top_panel)
|
||||
Panel_NoArgTrueFalseFunction(panel_hidden)
|
||||
Panel_TwoArgNoReturnFunction(move_panel, int, "ii;y,x")
|
||||
|
||||
/* Allocation and deallocation of Panel Objects */
|
||||
|
||||
static PyObject *
|
||||
PyCursesPanel_New(PANEL *pan, PyCursesWindowObject *wo)
|
||||
{
|
||||
PyCursesPanelObject *po;
|
||||
|
||||
po = PyObject_NEW(PyCursesPanelObject,
|
||||
(PyTypeObject *)(_curses_panelstate_global)->PyCursesPanel_Type);
|
||||
if (po == NULL) return NULL;
|
||||
po->pan = pan;
|
||||
if (insert_lop(po) < 0) {
|
||||
po->wo = NULL;
|
||||
Py_DECREF(po);
|
||||
return NULL;
|
||||
}
|
||||
po->wo = wo;
|
||||
Py_INCREF(wo);
|
||||
return (PyObject *)po;
|
||||
}
|
||||
|
||||
static void
|
||||
PyCursesPanel_Dealloc(PyCursesPanelObject *po)
|
||||
{
|
||||
PyObject *obj = (PyObject *) panel_userptr(po->pan);
|
||||
if (obj) {
|
||||
(void)set_panel_userptr(po->pan, NULL);
|
||||
Py_DECREF(obj);
|
||||
}
|
||||
(void)del_panel(po->pan);
|
||||
if (po->wo != NULL) {
|
||||
Py_DECREF(po->wo);
|
||||
remove_lop(po);
|
||||
}
|
||||
PyObject_DEL(po);
|
||||
}
|
||||
|
||||
/* panel_above(NULL) returns the bottom panel in the stack. To get
|
||||
this behaviour we use curses.panel.bottom_panel(). */
|
||||
static PyObject *
|
||||
PyCursesPanel_above(PyCursesPanelObject *self)
|
||||
{
|
||||
PANEL *pan;
|
||||
PyCursesPanelObject *po;
|
||||
|
||||
pan = panel_above(self->pan);
|
||||
|
||||
if (pan == NULL) { /* valid output, it means the calling panel
|
||||
is on top of the stack */
|
||||
Py_INCREF(Py_None);
|
||||
return Py_None;
|
||||
}
|
||||
po = find_po(pan);
|
||||
if (po == NULL) {
|
||||
PyErr_SetString(PyExc_RuntimeError,
|
||||
"panel_above: can't find Panel Object");
|
||||
return NULL;
|
||||
}
|
||||
Py_INCREF(po);
|
||||
return (PyObject *)po;
|
||||
}
|
||||
|
||||
/* panel_below(NULL) returns the top panel in the stack. To get
|
||||
this behaviour we use curses.panel.top_panel(). */
|
||||
static PyObject *
|
||||
PyCursesPanel_below(PyCursesPanelObject *self)
|
||||
{
|
||||
PANEL *pan;
|
||||
PyCursesPanelObject *po;
|
||||
|
||||
pan = panel_below(self->pan);
|
||||
|
||||
if (pan == NULL) { /* valid output, it means the calling panel
|
||||
is on the bottom of the stack */
|
||||
Py_INCREF(Py_None);
|
||||
return Py_None;
|
||||
}
|
||||
po = find_po(pan);
|
||||
if (po == NULL) {
|
||||
PyErr_SetString(PyExc_RuntimeError,
|
||||
"panel_below: can't find Panel Object");
|
||||
return NULL;
|
||||
}
|
||||
Py_INCREF(po);
|
||||
return (PyObject *)po;
|
||||
}
|
||||
|
||||
static PyObject *
|
||||
PyCursesPanel_window(PyCursesPanelObject *self)
|
||||
{
|
||||
Py_INCREF(self->wo);
|
||||
return (PyObject *)self->wo;
|
||||
}
|
||||
|
||||
static PyObject *
|
||||
PyCursesPanel_replace_panel(PyCursesPanelObject *self, PyObject *args)
|
||||
{
|
||||
PyCursesPanelObject *po;
|
||||
PyCursesWindowObject *temp;
|
||||
int rtn;
|
||||
|
||||
if (PyTuple_Size(args) != 1) {
|
||||
PyErr_SetString(PyExc_TypeError, "replace requires one argument");
|
||||
return NULL;
|
||||
}
|
||||
if (!PyArg_ParseTuple(args, "O!;window object",
|
||||
&PyCursesWindow_Type, &temp))
|
||||
return NULL;
|
||||
|
||||
po = find_po(self->pan);
|
||||
if (po == NULL) {
|
||||
PyErr_SetString(PyExc_RuntimeError,
|
||||
"replace_panel: can't find Panel Object");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
rtn = replace_panel(self->pan, temp->win);
|
||||
if (rtn == ERR) {
|
||||
PyErr_SetString(_curses_panelstate_global->PyCursesError, "replace_panel() returned ERR");
|
||||
return NULL;
|
||||
}
|
||||
Py_INCREF(temp);
|
||||
Py_SETREF(po->wo, temp);
|
||||
Py_INCREF(Py_None);
|
||||
return Py_None;
|
||||
}
|
||||
|
||||
static PyObject *
|
||||
PyCursesPanel_set_panel_userptr(PyCursesPanelObject *self, PyObject *obj)
|
||||
{
|
||||
PyObject *oldobj;
|
||||
int rc;
|
||||
PyCursesInitialised;
|
||||
Py_INCREF(obj);
|
||||
oldobj = (PyObject *) panel_userptr(self->pan);
|
||||
rc = set_panel_userptr(self->pan, (void*)obj);
|
||||
if (rc == ERR) {
|
||||
/* In case of an ncurses error, decref the new object again */
|
||||
Py_DECREF(obj);
|
||||
}
|
||||
Py_XDECREF(oldobj);
|
||||
return PyCursesCheckERR(rc, "set_panel_userptr");
|
||||
}
|
||||
|
||||
static PyObject *
|
||||
PyCursesPanel_userptr(PyCursesPanelObject *self)
|
||||
{
|
||||
PyObject *obj;
|
||||
PyCursesInitialised;
|
||||
obj = (PyObject *) panel_userptr(self->pan);
|
||||
if (obj == NULL) {
|
||||
PyErr_SetString(_curses_panelstate_global->PyCursesError, "no userptr set");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
Py_INCREF(obj);
|
||||
return obj;
|
||||
}
|
||||
|
||||
|
||||
/* Module interface */
|
||||
|
||||
static PyMethodDef PyCursesPanel_Methods[] = {
|
||||
{"above", (PyCFunction)PyCursesPanel_above, METH_NOARGS},
|
||||
{"below", (PyCFunction)PyCursesPanel_below, METH_NOARGS},
|
||||
{"bottom", (PyCFunction)PyCursesPanel_bottom_panel, METH_NOARGS},
|
||||
{"hidden", (PyCFunction)PyCursesPanel_panel_hidden, METH_NOARGS},
|
||||
{"hide", (PyCFunction)PyCursesPanel_hide_panel, METH_NOARGS},
|
||||
{"move", (PyCFunction)PyCursesPanel_move_panel, METH_VARARGS},
|
||||
{"replace", (PyCFunction)PyCursesPanel_replace_panel, METH_VARARGS},
|
||||
{"set_userptr", (PyCFunction)PyCursesPanel_set_panel_userptr, METH_O},
|
||||
{"show", (PyCFunction)PyCursesPanel_show_panel, METH_NOARGS},
|
||||
{"top", (PyCFunction)PyCursesPanel_top_panel, METH_NOARGS},
|
||||
{"userptr", (PyCFunction)PyCursesPanel_userptr, METH_NOARGS},
|
||||
{"window", (PyCFunction)PyCursesPanel_window, METH_NOARGS},
|
||||
{NULL, NULL} /* sentinel */
|
||||
};
|
||||
|
||||
/* -------------------------------------------------------*/
|
||||
|
||||
static PyType_Slot PyCursesPanel_Type_slots[] = {
|
||||
{Py_tp_dealloc, PyCursesPanel_Dealloc},
|
||||
{Py_tp_methods, PyCursesPanel_Methods},
|
||||
{0, 0},
|
||||
};
|
||||
|
||||
static PyType_Spec PyCursesPanel_Type_spec = {
|
||||
"_curses_panel.curses panel",
|
||||
sizeof(PyCursesPanelObject),
|
||||
0,
|
||||
Py_TPFLAGS_DEFAULT,
|
||||
PyCursesPanel_Type_slots
|
||||
};
|
||||
|
||||
/* Wrapper for panel_above(NULL). This function returns the bottom
|
||||
panel of the stack, so it's renamed to bottom_panel().
|
||||
panel.above() *requires* a panel object in the first place which
|
||||
may be undesirable. */
|
||||
static PyObject *
|
||||
PyCurses_bottom_panel(PyObject *self)
|
||||
{
|
||||
PANEL *pan;
|
||||
PyCursesPanelObject *po;
|
||||
|
||||
PyCursesInitialised;
|
||||
|
||||
pan = panel_above(NULL);
|
||||
|
||||
if (pan == NULL) { /* valid output, it means
|
||||
there's no panel at all */
|
||||
Py_INCREF(Py_None);
|
||||
return Py_None;
|
||||
}
|
||||
po = find_po(pan);
|
||||
if (po == NULL) {
|
||||
PyErr_SetString(PyExc_RuntimeError,
|
||||
"panel_above: can't find Panel Object");
|
||||
return NULL;
|
||||
}
|
||||
Py_INCREF(po);
|
||||
return (PyObject *)po;
|
||||
}
|
||||
|
||||
static PyObject *
|
||||
PyCurses_new_panel(PyObject *self, PyObject *args)
|
||||
{
|
||||
PyCursesWindowObject *win;
|
||||
PANEL *pan;
|
||||
|
||||
if (!PyArg_ParseTuple(args, "O!", &PyCursesWindow_Type, &win))
|
||||
return NULL;
|
||||
pan = new_panel(win->win);
|
||||
if (pan == NULL) {
|
||||
PyErr_SetString(_curses_panelstate_global->PyCursesError, catchall_NULL);
|
||||
return NULL;
|
||||
}
|
||||
return (PyObject *)PyCursesPanel_New(pan, win);
|
||||
}
|
||||
|
||||
|
||||
/* Wrapper for panel_below(NULL). This function returns the top panel
|
||||
of the stack, so it's renamed to top_panel(). panel.below()
|
||||
*requires* a panel object in the first place which may be
|
||||
undesirable. */
|
||||
static PyObject *
|
||||
PyCurses_top_panel(PyObject *self)
|
||||
{
|
||||
PANEL *pan;
|
||||
PyCursesPanelObject *po;
|
||||
|
||||
PyCursesInitialised;
|
||||
|
||||
pan = panel_below(NULL);
|
||||
|
||||
if (pan == NULL) { /* valid output, it means
|
||||
there's no panel at all */
|
||||
Py_INCREF(Py_None);
|
||||
return Py_None;
|
||||
}
|
||||
po = find_po(pan);
|
||||
if (po == NULL) {
|
||||
PyErr_SetString(PyExc_RuntimeError,
|
||||
"panel_below: can't find Panel Object");
|
||||
return NULL;
|
||||
}
|
||||
Py_INCREF(po);
|
||||
return (PyObject *)po;
|
||||
}
|
||||
|
||||
static PyObject *PyCurses_update_panels(PyObject *self)
|
||||
{
|
||||
PyCursesInitialised;
|
||||
update_panels();
|
||||
Py_INCREF(Py_None);
|
||||
return Py_None;
|
||||
}
|
||||
|
||||
|
||||
/* List of functions defined in the module */
|
||||
|
||||
static PyMethodDef PyCurses_methods[] = {
|
||||
{"bottom_panel", (PyCFunction)PyCurses_bottom_panel, METH_NOARGS},
|
||||
{"new_panel", (PyCFunction)PyCurses_new_panel, METH_VARARGS},
|
||||
{"top_panel", (PyCFunction)PyCurses_top_panel, METH_NOARGS},
|
||||
{"update_panels", (PyCFunction)PyCurses_update_panels, METH_NOARGS},
|
||||
{NULL, NULL} /* sentinel */
|
||||
};
|
||||
|
||||
/* Initialization function for the module */
|
||||
|
||||
|
||||
static struct PyModuleDef _curses_panelmodule = {
|
||||
PyModuleDef_HEAD_INIT,
|
||||
"_curses_panel",
|
||||
NULL,
|
||||
sizeof(_curses_panelstate),
|
||||
PyCurses_methods,
|
||||
NULL,
|
||||
_curses_panel_traverse,
|
||||
_curses_panel_clear,
|
||||
_curses_panel_free
|
||||
};
|
||||
|
||||
PyMODINIT_FUNC
|
||||
PyInit__curses_panel(void)
|
||||
{
|
||||
PyObject *m, *d, *v;
|
||||
|
||||
/* Create the module and add the functions */
|
||||
m = PyModule_Create(&_curses_panelmodule);
|
||||
if (m == NULL)
|
||||
goto fail;
|
||||
d = PyModule_GetDict(m);
|
||||
|
||||
/* Initialize object type */
|
||||
v = PyType_FromSpec(&PyCursesPanel_Type_spec);
|
||||
if (v == NULL)
|
||||
goto fail;
|
||||
((PyTypeObject *)v)->tp_new = NULL;
|
||||
_curses_panelstate(m)->PyCursesPanel_Type = v;
|
||||
|
||||
import_curses();
|
||||
if (PyErr_Occurred())
|
||||
goto fail;
|
||||
|
||||
/* For exception _curses_panel.error */
|
||||
_curses_panelstate(m)->PyCursesError = PyErr_NewException("_curses_panel.error", NULL, NULL);
|
||||
PyDict_SetItemString(d, "error", _curses_panelstate(m)->PyCursesError);
|
||||
|
||||
/* Make the version available */
|
||||
v = PyUnicode_FromString(PyCursesVersion);
|
||||
PyDict_SetItemString(d, "version", v);
|
||||
PyDict_SetItemString(d, "__version__", v);
|
||||
Py_DECREF(v);
|
||||
return m;
|
||||
fail:
|
||||
Py_XDECREF(m);
|
||||
return NULL;
|
||||
}
|
3522
third_party/python/Modules/_cursesmodule.c
vendored
3522
third_party/python/Modules/_cursesmodule.c
vendored
File diff suppressed because it is too large
Load diff
5
third_party/python/Modules/_datetimemodule.c
vendored
5
third_party/python/Modules/_datetimemodule.c
vendored
|
@ -6041,6 +6041,11 @@ PyInit__datetime(void)
|
|||
return m;
|
||||
}
|
||||
|
||||
_Section(".rodata.pytab.1") const struct _inittab _PyImport_Inittab__datetime = {
|
||||
"_datetime",
|
||||
PyInit__datetime,
|
||||
};
|
||||
|
||||
/* ---------------------------------------------------------------------------
|
||||
Some time zone algebra. For a datetime x, let
|
||||
x.n = x stripped of its timezone -- its naive time.
|
||||
|
|
|
@ -5992,7 +5992,7 @@ error:
|
|||
return NULL; /* GCOV_NOT_REACHED */
|
||||
}
|
||||
|
||||
_Section(".rodata.pytab") struct _inittab _PyImport_Inittab__decimal = {
|
||||
"_decimal",
|
||||
_Section(".rodata.pytab.1") const struct _inittab _PyImport_Inittab__decimal = {
|
||||
"_decimal",
|
||||
PyInit__decimal,
|
||||
};
|
||||
|
|
5
third_party/python/Modules/_elementtree.c
vendored
5
third_party/python/Modules/_elementtree.c
vendored
|
@ -4091,3 +4091,8 @@ PyInit__elementtree(void)
|
|||
|
||||
return m;
|
||||
}
|
||||
|
||||
_Section(".rodata.pytab.1") const struct _inittab _PyImport_Inittab__elementtree = {
|
||||
"_elementtree",
|
||||
PyInit__elementtree,
|
||||
};
|
||||
|
|
|
@ -10,6 +10,7 @@
|
|||
#include "third_party/python/Include/classobject.h"
|
||||
#include "third_party/python/Include/descrobject.h"
|
||||
#include "third_party/python/Include/dictobject.h"
|
||||
#include "third_party/python/Include/import.h"
|
||||
#include "third_party/python/Include/longobject.h"
|
||||
#include "third_party/python/Include/modsupport.h"
|
||||
#include "third_party/python/Include/object.h"
|
||||
|
|
|
@ -5,8 +5,10 @@
|
|||
│ https://docs.python.org/3/license.html │
|
||||
╚─────────────────────────────────────────────────────────────────────────────*/
|
||||
#define PY_SSIZE_T_CLEAN
|
||||
#include "third_party/mbedtls/error.h"
|
||||
#include "third_party/mbedtls/md.h"
|
||||
#include "third_party/python/Include/Python.h"
|
||||
#include "third_party/python/Include/import.h"
|
||||
#include "third_party/python/Include/pystrhex.h"
|
||||
#include "third_party/python/Include/structmember.h"
|
||||
#include "third_party/python/Include/yoink.h"
|
||||
|
@ -21,15 +23,15 @@ PYTHON_PROVIDE("_hashlib.__name__");
|
|||
PYTHON_PROVIDE("_hashlib.__package__");
|
||||
PYTHON_PROVIDE("_hashlib.__spec__");
|
||||
PYTHON_PROVIDE("_hashlib.new");
|
||||
PYTHON_PROVIDE("_hashlib.openssl_md5");
|
||||
PYTHON_PROVIDE("_hashlib.openssl_md_meth_names");
|
||||
PYTHON_PROVIDE("_hashlib.openssl_sha1");
|
||||
PYTHON_PROVIDE("_hashlib.openssl_sha224");
|
||||
PYTHON_PROVIDE("_hashlib.openssl_sha256");
|
||||
PYTHON_PROVIDE("_hashlib.openssl_sha384");
|
||||
PYTHON_PROVIDE("_hashlib.openssl_sha512");
|
||||
PYTHON_PROVIDE("_hashlib.mbedtls_md5");
|
||||
PYTHON_PROVIDE("_hashlib.mbedtls_md_meth_names");
|
||||
PYTHON_PROVIDE("_hashlib.mbedtls_sha1");
|
||||
PYTHON_PROVIDE("_hashlib.mbedtls_sha224");
|
||||
PYTHON_PROVIDE("_hashlib.mbedtls_sha256");
|
||||
PYTHON_PROVIDE("_hashlib.mbedtls_sha384");
|
||||
PYTHON_PROVIDE("_hashlib.mbedtls_sha512");
|
||||
|
||||
#include "third_party/python/Modules/clinic/_hashopenssl.inc"
|
||||
#include "third_party/python/Modules/clinic/_hashmbedtls.inc"
|
||||
/*[clinic input]
|
||||
module _hashlib
|
||||
[clinic start generated code]*/
|
||||
|
@ -51,49 +53,26 @@ typedef struct {
|
|||
} EVPobject;
|
||||
|
||||
static PyTypeObject EVPtype;
|
||||
static PyObject *CONST_md5_name_obj;
|
||||
static PyObject *CONST_sha1_name_obj;
|
||||
static PyObject *CONST_sha224_name_obj;
|
||||
static PyObject *CONST_sha256_name_obj;
|
||||
static PyObject *CONST_sha384_name_obj;
|
||||
static PyObject *CONST_sha512_name_obj;
|
||||
|
||||
#define DEFINE_CONSTS_FOR_NEW(Name) \
|
||||
static PyObject *CONST_ ## Name ## _name_obj = NULL; \
|
||||
static mbedtls_md_context_t *CONST_new_ ## Name ## _ctx_p = NULL;
|
||||
static mbedtls_md_context_t *CONST_new_ ## Name ## _ctx_p = NULL
|
||||
|
||||
DEFINE_CONSTS_FOR_NEW(md5)
|
||||
DEFINE_CONSTS_FOR_NEW(sha1)
|
||||
DEFINE_CONSTS_FOR_NEW(sha224)
|
||||
DEFINE_CONSTS_FOR_NEW(sha256)
|
||||
DEFINE_CONSTS_FOR_NEW(sha384)
|
||||
DEFINE_CONSTS_FOR_NEW(sha512)
|
||||
DEFINE_CONSTS_FOR_NEW(md5);
|
||||
DEFINE_CONSTS_FOR_NEW(sha1);
|
||||
DEFINE_CONSTS_FOR_NEW(sha224);
|
||||
DEFINE_CONSTS_FOR_NEW(sha256);
|
||||
DEFINE_CONSTS_FOR_NEW(sha384);
|
||||
DEFINE_CONSTS_FOR_NEW(sha512);
|
||||
DEFINE_CONSTS_FOR_NEW(blake2b256);
|
||||
|
||||
/* LCOV_EXCL_START */
|
||||
static PyObject *
|
||||
_setException(PyObject *exc)
|
||||
_setException(PyObject *exc, int rc)
|
||||
{
|
||||
/* unsigned long errcode; */
|
||||
/* const char *lib, *func, *reason; */
|
||||
/* errcode = ERR_peek_last_error(); */
|
||||
/* if (!errcode) { */
|
||||
/* PyErr_SetString(exc, "unknown reasons"); */
|
||||
/* return NULL; */
|
||||
/* } */
|
||||
/* ERR_clear_error(); */
|
||||
/* lib = ERR_lib_error_string(errcode); */
|
||||
/* func = ERR_func_error_string(errcode); */
|
||||
/* reason = ERR_reason_error_string(errcode); */
|
||||
/* if (lib && func) { */
|
||||
/* PyErr_Format(exc, "[%s: %s] %s", lib, func, reason); */
|
||||
/* } */
|
||||
/* else if (lib) { */
|
||||
/* PyErr_Format(exc, "[%s] %s", lib, reason); */
|
||||
/* } */
|
||||
/* else { */
|
||||
/* PyErr_SetString(exc, reason); */
|
||||
/* } */
|
||||
PyErr_SetString(exc, "failhouse");
|
||||
char b[128];
|
||||
mbedtls_strerror(rc, b, sizeof(b));
|
||||
PyErr_SetString(exc, b);
|
||||
return NULL;
|
||||
}
|
||||
/* LCOV_EXCL_STOP */
|
||||
|
@ -122,6 +101,7 @@ newEVPobject(PyObject *name)
|
|||
static void
|
||||
EVP_hash(EVPobject *self, const void *vp, Py_ssize_t len)
|
||||
{
|
||||
int rc;
|
||||
unsigned int process;
|
||||
const unsigned char *cp = (const unsigned char *)vp;
|
||||
while (0 < len) {
|
||||
|
@ -129,8 +109,8 @@ EVP_hash(EVPobject *self, const void *vp, Py_ssize_t len)
|
|||
process = MUNCH_SIZE;
|
||||
else
|
||||
process = Py_SAFE_DOWNCAST(len, Py_ssize_t, unsigned int);
|
||||
if (!mbedtls_md_update(self->ctx, (const void*)cp, process)) {
|
||||
_setException(PyExc_ValueError);
|
||||
if ((rc = mbedtls_md_update(self->ctx, (const void*)cp, process))) {
|
||||
_setException(PyExc_ValueError, rc);
|
||||
break;
|
||||
}
|
||||
len -= process;
|
||||
|
@ -156,12 +136,11 @@ EVP_dealloc(EVPobject *self)
|
|||
static int
|
||||
locked_mbedtls_md_clone(mbedtls_md_context_t *new_ctx_p, EVPobject *self)
|
||||
{
|
||||
int result;
|
||||
int rc;
|
||||
ENTER_HASHLIB(self);
|
||||
result = mbedtls_md_clone(new_ctx_p, self->ctx);
|
||||
result = 0;
|
||||
rc = mbedtls_md_clone(new_ctx_p, self->ctx);
|
||||
LEAVE_HASHLIB(self);
|
||||
return result;
|
||||
return rc;
|
||||
}
|
||||
|
||||
/* External methods for a hash object */
|
||||
|
@ -171,11 +150,12 @@ PyDoc_STRVAR(EVP_copy__doc__, "Return a copy of the hash object.");
|
|||
static PyObject *
|
||||
EVP_copy(EVPobject *self, PyObject *unused)
|
||||
{
|
||||
int rc;
|
||||
EVPobject *newobj;
|
||||
if ( (newobj = newEVPobject(self->name))==NULL)
|
||||
return NULL;
|
||||
if (!locked_mbedtls_md_clone(newobj->ctx, self)) {
|
||||
return _setException(PyExc_ValueError);
|
||||
if ((rc = locked_mbedtls_md_clone(newobj->ctx, self))) {
|
||||
return _setException(PyExc_ValueError, rc);
|
||||
}
|
||||
return (PyObject *)newobj;
|
||||
}
|
||||
|
@ -186,6 +166,7 @@ PyDoc_STRVAR(EVP_digest__doc__,
|
|||
static PyObject *
|
||||
EVP_digest(EVPobject *self, PyObject *unused)
|
||||
{
|
||||
int rc;
|
||||
unsigned char digest[MBEDTLS_MD_MAX_SIZE];
|
||||
mbedtls_md_context_t *temp_ctx;
|
||||
PyObject *retval;
|
||||
|
@ -195,12 +176,12 @@ EVP_digest(EVPobject *self, PyObject *unused)
|
|||
PyErr_NoMemory();
|
||||
return NULL;
|
||||
}
|
||||
if (!locked_mbedtls_md_clone(temp_ctx, self)) {
|
||||
return _setException(PyExc_ValueError);
|
||||
if ((rc = locked_mbedtls_md_clone(temp_ctx, self))) {
|
||||
return _setException(PyExc_ValueError, rc);
|
||||
}
|
||||
digest_size = mbedtls_md_get_size(temp_ctx->md_info);
|
||||
if (!mbedtls_md_finish(temp_ctx, digest)) {
|
||||
_setException(PyExc_ValueError);
|
||||
if ((rc = mbedtls_md_finish(temp_ctx, digest))) {
|
||||
_setException(PyExc_ValueError, rc);
|
||||
return NULL;
|
||||
}
|
||||
retval = PyBytes_FromStringAndSize((const char *)digest, digest_size);
|
||||
|
@ -214,6 +195,7 @@ PyDoc_STRVAR(EVP_hexdigest__doc__,
|
|||
static PyObject *
|
||||
EVP_hexdigest(EVPobject *self, PyObject *unused)
|
||||
{
|
||||
int rc;
|
||||
unsigned char digest[MBEDTLS_MD_MAX_SIZE];
|
||||
mbedtls_md_context_t *temp_ctx;
|
||||
unsigned int digest_size;
|
||||
|
@ -223,12 +205,12 @@ EVP_hexdigest(EVPobject *self, PyObject *unused)
|
|||
return NULL;
|
||||
}
|
||||
/* Get the raw (binary) digest value */
|
||||
if (!locked_mbedtls_md_clone(temp_ctx, self)) {
|
||||
return _setException(PyExc_ValueError);
|
||||
if ((rc = locked_mbedtls_md_clone(temp_ctx, self))) {
|
||||
return _setException(PyExc_ValueError, rc);
|
||||
}
|
||||
digest_size = mbedtls_md_get_size(temp_ctx->md_info);
|
||||
if (!mbedtls_md_finish(temp_ctx, digest)) {
|
||||
_setException(PyExc_ValueError);
|
||||
if ((rc = mbedtls_md_finish(temp_ctx, digest))) {
|
||||
_setException(PyExc_ValueError, rc);
|
||||
return NULL;
|
||||
}
|
||||
mbedtls_md_free(temp_ctx);
|
||||
|
@ -432,6 +414,7 @@ EVPnew(PyObject *name_obj,
|
|||
const mbedtls_md_context_t *initial_ctx,
|
||||
const unsigned char *cp, Py_ssize_t len)
|
||||
{
|
||||
int rc;
|
||||
EVPobject *self;
|
||||
if (!digest && !initial_ctx) {
|
||||
PyErr_SetString(PyExc_ValueError, "unsupported hash type");
|
||||
|
@ -442,8 +425,8 @@ EVPnew(PyObject *name_obj,
|
|||
if (initial_ctx) {
|
||||
mbedtls_md_clone(self->ctx, initial_ctx);
|
||||
} else {
|
||||
if (!mbedtls_md_setup(self->ctx, digest, 0)) {
|
||||
_setException(PyExc_ValueError);
|
||||
if ((rc = mbedtls_md_setup(self->ctx, digest, 0))) {
|
||||
_setException(PyExc_ValueError, rc);
|
||||
Py_DECREF(self);
|
||||
return NULL;
|
||||
}
|
||||
|
@ -497,8 +480,8 @@ EVP_new(PyObject *self, PyObject *args, PyObject *kwdict)
|
|||
return ret_obj;
|
||||
}
|
||||
|
||||
#if (OPENSSL_VERSION_NUMBER >= 0x10000000 && !defined(OPENSSL_NO_HMAC) \
|
||||
&& !defined(OPENSSL_NO_SHA))
|
||||
#if (MBEDTLS_VERSION_NUMBER >= 0x10000000 && !defined(MBEDTLS_NO_HMAC) \
|
||||
&& !defined(MBEDTLS_NO_SHA))
|
||||
|
||||
#define PY_PBKDF2_HMAC 1
|
||||
|
||||
|
@ -510,7 +493,7 @@ EVP_new(PyObject *self, PyObject *args, PyObject *kwdict)
|
|||
* more. The improved algorithm is not subject to a Denial-of-Service
|
||||
* vulnerability with overly large passwords.
|
||||
*
|
||||
* Also OpenSSL < 1.0 don't provide PKCS5_PBKDF2_HMAC(), only
|
||||
* Also Mbedtls < 1.0 don't provide PKCS5_PBKDF2_HMAC(), only
|
||||
* PKCS5_PBKDF2_SHA1.
|
||||
*/
|
||||
static int
|
||||
|
@ -680,9 +663,9 @@ pbkdf2_hmac(PyObject *self, PyObject *args, PyObject *kwdict)
|
|||
#endif
|
||||
Py_END_ALLOW_THREADS
|
||||
|
||||
if (!retval) {
|
||||
if (retval) {
|
||||
Py_CLEAR(key_obj);
|
||||
_setException(PyExc_ValueError);
|
||||
_setException(PyExc_ValueError, retval);
|
||||
goto end;
|
||||
}
|
||||
|
||||
|
@ -694,7 +677,7 @@ pbkdf2_hmac(PyObject *self, PyObject *args, PyObject *kwdict)
|
|||
|
||||
#endif
|
||||
|
||||
#if OPENSSL_VERSION_NUMBER > 0x10100000L && !defined(OPENSSL_NO_SCRYPT) && !defined(LIBRESSL_VERSION_NUMBER)
|
||||
#if MBEDTLS_VERSION_NUMBER > 0x10100000L && !defined(MBEDTLS_NO_SCRYPT) && !defined(LIBRESSL_VERSION_NUMBER)
|
||||
#define PY_SCRYPT 1
|
||||
/* XXX: Parameters salt, n, r and p should be required keyword-only parameters.
|
||||
They are optional in the Argument Clinic declaration only due to a
|
||||
|
@ -764,8 +747,8 @@ _hashlib_scrypt_impl(PyObject *module, Py_buffer *password, Py_buffer *salt,
|
|||
return NULL;
|
||||
}
|
||||
if (maxmem < 0 || maxmem > INT_MAX) {
|
||||
/* OpenSSL 1.1.0 restricts maxmem to 32MB. It may change in the
|
||||
future. The maxmem constant is private to OpenSSL. */
|
||||
/* Mbedtls 1.1.0 restricts maxmem to 32MB. It may change in the
|
||||
future. The maxmem constant is private to Mbedtls. */
|
||||
PyErr_Format(PyExc_ValueError,
|
||||
"maxmem must be positive and smaller than %d",
|
||||
INT_MAX);
|
||||
|
@ -777,7 +760,7 @@ _hashlib_scrypt_impl(PyObject *module, Py_buffer *password, Py_buffer *salt,
|
|||
INT_MAX);
|
||||
return NULL;
|
||||
}
|
||||
/* let OpenSSL validate the rest */
|
||||
/* let Mbedtls validate the rest */
|
||||
retval = EVP_PBE_scrypt(NULL, 0, NULL, 0, n, r, p, maxmem, NULL, 0);
|
||||
if (!retval) {
|
||||
/* sorry, can't do much better */
|
||||
|
@ -835,6 +818,7 @@ generate_hash_name_list(void)
|
|||
static PyObject * \
|
||||
EVP_new_ ## NAME (PyObject *self, PyObject *args) \
|
||||
{ \
|
||||
int rc; \
|
||||
PyObject *data_obj = NULL; \
|
||||
Py_buffer view = { 0 }; \
|
||||
PyObject *ret_obj; \
|
||||
|
@ -845,9 +829,10 @@ generate_hash_name_list(void)
|
|||
\
|
||||
if (CONST_new_ ## NAME ## _ctx_p == NULL) { \
|
||||
mbedtls_md_context_t *ctx_p = calloc(1, sizeof(mbedtls_md_context_t)); \
|
||||
rc = MBEDTLS_ERR_MD_FEATURE_UNAVAILABLE; \
|
||||
if (!mbedtls_md_info_from_string(#NAME) || \
|
||||
!mbedtls_md_setup(ctx_p, mbedtls_md_info_from_string(#NAME), 0)) { \
|
||||
_setException(PyExc_ValueError); \
|
||||
(rc = mbedtls_md_setup(ctx_p, mbedtls_md_info_from_string(#NAME), 0))) { \
|
||||
_setException(PyExc_ValueError, rc); \
|
||||
mbedtls_md_free(ctx_p); \
|
||||
return NULL; \
|
||||
} \
|
||||
|
@ -871,12 +856,12 @@ generate_hash_name_list(void)
|
|||
|
||||
/* a PyMethodDef structure for the constructor */
|
||||
#define CONSTRUCTOR_METH_DEF(NAME) \
|
||||
{"openssl_" #NAME, (PyCFunction)EVP_new_ ## NAME, METH_VARARGS, \
|
||||
{"mbedtls_" #NAME, (PyCFunction)EVP_new_ ## NAME, METH_VARARGS, \
|
||||
PyDoc_STR("Returns a " #NAME \
|
||||
" hash object; optionally initialized with a string") \
|
||||
}
|
||||
|
||||
/* used in the init function to setup a constructor: initialize OpenSSL
|
||||
/* used in the init function to setup a constructor: initialize Mbedtls
|
||||
constructor constants if they haven't been initialized already. */
|
||||
#define INIT_CONSTRUCTOR_CONSTANTS(NAME) \
|
||||
if (CONST_ ## NAME ## _name_obj == NULL) { \
|
||||
|
@ -889,6 +874,7 @@ GEN_CONSTRUCTOR(sha224)
|
|||
GEN_CONSTRUCTOR(sha256)
|
||||
GEN_CONSTRUCTOR(sha384)
|
||||
GEN_CONSTRUCTOR(sha512)
|
||||
GEN_CONSTRUCTOR(blake2b256)
|
||||
|
||||
/* List of functions exported by this module */
|
||||
|
||||
|
@ -905,6 +891,7 @@ static struct PyMethodDef EVP_functions[] = {
|
|||
CONSTRUCTOR_METH_DEF(sha256),
|
||||
CONSTRUCTOR_METH_DEF(sha384),
|
||||
CONSTRUCTOR_METH_DEF(sha512),
|
||||
CONSTRUCTOR_METH_DEF(blake2b256),
|
||||
{NULL, NULL} /* Sentinel */
|
||||
};
|
||||
|
||||
|
@ -923,8 +910,8 @@ static struct PyModuleDef _hashlibmodule = {
|
|||
PyMODINIT_FUNC
|
||||
PyInit__hashlib(void)
|
||||
{
|
||||
PyObject *m, *openssl_md_meth_names;
|
||||
/* TODO build EVP_functions openssl_* entries dynamically based
|
||||
PyObject *m, *mbedtls_md_meth_names;
|
||||
/* TODO build EVP_functions mbedtls_* entries dynamically based
|
||||
* on what hashes are supported rather than listing many
|
||||
* but having some be unsupported. Only init appropriate
|
||||
* constants. */
|
||||
|
@ -934,12 +921,12 @@ PyInit__hashlib(void)
|
|||
m = PyModule_Create(&_hashlibmodule);
|
||||
if (m == NULL)
|
||||
return NULL;
|
||||
openssl_md_meth_names = generate_hash_name_list();
|
||||
if (openssl_md_meth_names == NULL) {
|
||||
mbedtls_md_meth_names = generate_hash_name_list();
|
||||
if (mbedtls_md_meth_names == NULL) {
|
||||
Py_DECREF(m);
|
||||
return NULL;
|
||||
}
|
||||
if (PyModule_AddObject(m, "openssl_md_meth_names", openssl_md_meth_names)) {
|
||||
if (PyModule_AddObject(m, "mbedtls_md_meth_names", mbedtls_md_meth_names)) {
|
||||
Py_DECREF(m);
|
||||
return NULL;
|
||||
}
|
||||
|
@ -952,5 +939,11 @@ PyInit__hashlib(void)
|
|||
INIT_CONSTRUCTOR_CONSTANTS(sha256)
|
||||
INIT_CONSTRUCTOR_CONSTANTS(sha384)
|
||||
INIT_CONSTRUCTOR_CONSTANTS(sha512)
|
||||
INIT_CONSTRUCTOR_CONSTANTS(blake2b256)
|
||||
return m;
|
||||
}
|
||||
|
||||
_Section(".rodata.pytab.1") const struct _inittab _PyImport_Inittab__hashlib = {
|
||||
"_hashlib",
|
||||
PyInit__hashlib,
|
||||
};
|
2
third_party/python/Modules/_heapqmodule.c
vendored
2
third_party/python/Modules/_heapqmodule.c
vendored
|
@ -5,6 +5,7 @@
|
|||
│ https://docs.python.org/3/license.html │
|
||||
╚─────────────────────────────────────────────────────────────────────────────*/
|
||||
#include "libc/assert.h"
|
||||
#include "third_party/python/Include/import.h"
|
||||
#include "third_party/python/Include/listobject.h"
|
||||
#include "third_party/python/Include/modsupport.h"
|
||||
#include "third_party/python/Include/pyerrors.h"
|
||||
|
@ -683,4 +684,3 @@ PyInit__heapq(void)
|
|||
PyModule_AddObject(m, "__about__", about);
|
||||
return m;
|
||||
}
|
||||
|
||||
|
|
11
third_party/python/Modules/_json.c
vendored
11
third_party/python/Modules/_json.c
vendored
|
@ -1,3 +1,9 @@
|
|||
/*-*- mode:c;indent-tabs-mode:nil;c-basic-offset:4;tab-width:8;coding:utf-8 -*-│
|
||||
│vi: set net ft=c ts=4 sts=4 sw=4 fenc=utf-8 :vi│
|
||||
╞══════════════════════════════════════════════════════════════════════════════╡
|
||||
│ Python 3 │
|
||||
│ https://docs.python.org/3/license.html │
|
||||
╚─────────────────────────────────────────────────────────────────────────────*/
|
||||
#include "third_party/python/Include/abstract.h"
|
||||
#include "third_party/python/Include/accu.h"
|
||||
#include "third_party/python/Include/boolobject.h"
|
||||
|
@ -1971,3 +1977,8 @@ PyInit__json(void)
|
|||
Py_DECREF(m);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
_Section(".rodata.pytab.1") const struct _inittab _PyImport_Inittab__json = {
|
||||
"_json",
|
||||
PyInit__json,
|
||||
};
|
||||
|
|
2
third_party/python/Modules/_localemodule.c
vendored
2
third_party/python/Modules/_localemodule.c
vendored
|
@ -5,9 +5,11 @@
|
|||
│ https://docs.python.org/3/license.html │
|
||||
╚─────────────────────────────────────────────────────────────────────────────*/
|
||||
#define PY_SSIZE_T_CLEAN
|
||||
#include "libc/unicode/langinfo.h"
|
||||
#include "libc/unicode/locale.h"
|
||||
#include "third_party/python/Include/dictobject.h"
|
||||
#include "third_party/python/Include/fileutils.h"
|
||||
#include "third_party/python/Include/import.h"
|
||||
#include "third_party/python/Include/listobject.h"
|
||||
#include "third_party/python/Include/longobject.h"
|
||||
#include "third_party/python/Include/modsupport.h"
|
||||
|
|
6
third_party/python/Modules/_lsprof.c
vendored
6
third_party/python/Modules/_lsprof.c
vendored
|
@ -5,6 +5,7 @@
|
|||
#include "third_party/python/Include/dictobject.h"
|
||||
#include "third_party/python/Include/floatobject.h"
|
||||
#include "third_party/python/Include/frameobject.h"
|
||||
#include "third_party/python/Include/import.h"
|
||||
#include "third_party/python/Include/longobject.h"
|
||||
#include "third_party/python/Include/modsupport.h"
|
||||
#include "third_party/python/Include/objimpl.h"
|
||||
|
@ -900,3 +901,8 @@ PyInit__lsprof(void)
|
|||
initialized = 1;
|
||||
return module;
|
||||
}
|
||||
|
||||
_Section(".rodata.pytab.1") const struct _inittab _PyImport_Inittab__lsprof = {
|
||||
"_lsprof",
|
||||
PyInit__lsprof,
|
||||
};
|
||||
|
|
|
@ -224,3 +224,8 @@ PyInit__multiprocessing(void)
|
|||
|
||||
return module;
|
||||
}
|
||||
|
||||
_Section(".rodata.pytab.1") const struct _inittab _PyImport_Inittab__multiprocessing = {
|
||||
"_multiprocessing",
|
||||
PyInit__multiprocessing,
|
||||
};
|
||||
|
|
6
third_party/python/Modules/_opcode.c
vendored
6
third_party/python/Modules/_opcode.c
vendored
|
@ -5,6 +5,7 @@
|
|||
│ https://docs.python.org/3/license.html │
|
||||
╚─────────────────────────────────────────────────────────────────────────────*/
|
||||
#include "third_party/python/Include/compile.h"
|
||||
#include "third_party/python/Include/import.h"
|
||||
#include "third_party/python/Include/longobject.h"
|
||||
#include "third_party/python/Include/modsupport.h"
|
||||
#include "third_party/python/Include/object.h"
|
||||
|
@ -92,3 +93,8 @@ PyInit__opcode(void)
|
|||
{
|
||||
return PyModule_Create(&opcodemodule);
|
||||
}
|
||||
|
||||
_Section(".rodata.pytab.1") const struct _inittab _PyImport_Inittab__opcode = {
|
||||
"_opcode",
|
||||
PyInit__opcode,
|
||||
};
|
||||
|
|
7
third_party/python/Modules/_pickle.c
vendored
7
third_party/python/Modules/_pickle.c
vendored
|
@ -44,6 +44,8 @@ PYTHON_PROVIDE("_pickle.dumps");
|
|||
PYTHON_PROVIDE("_pickle.load");
|
||||
PYTHON_PROVIDE("_pickle.loads");
|
||||
|
||||
PYTHON_YOINK("encodings.ascii");
|
||||
|
||||
PyDoc_STRVAR(pickle_module_doc,
|
||||
"Optimized C implementation for the Python pickle module.");
|
||||
|
||||
|
@ -7475,3 +7477,8 @@ PyInit__pickle(void)
|
|||
|
||||
return m;
|
||||
}
|
||||
|
||||
_Section(".rodata.pytab.1") const struct _inittab _PyImport_Inittab__pickle = {
|
||||
"_pickle",
|
||||
PyInit__pickle,
|
||||
};
|
||||
|
|
|
@ -724,3 +724,8 @@ PyInit__posixsubprocess(void)
|
|||
{
|
||||
return PyModule_Create(&_posixsubprocessmodule);
|
||||
}
|
||||
|
||||
_Section(".rodata.pytab.1") const struct _inittab _PyImport_Inittab__posixsubprocess = {
|
||||
"_posixsubprocess",
|
||||
PyInit__posixsubprocess,
|
||||
};
|
||||
|
|
6
third_party/python/Modules/_randommodule.c
vendored
6
third_party/python/Modules/_randommodule.c
vendored
|
@ -6,6 +6,7 @@
|
|||
╚─────────────────────────────────────────────────────────────────────────────*/
|
||||
#include "libc/calls/calls.h"
|
||||
#include "third_party/python/Include/floatobject.h"
|
||||
#include "third_party/python/Include/import.h"
|
||||
#include "third_party/python/Include/longobject.h"
|
||||
#include "third_party/python/Include/modsupport.h"
|
||||
#include "third_party/python/Include/objimpl.h"
|
||||
|
@ -561,3 +562,8 @@ PyInit__random(void)
|
|||
PyModule_AddObject(m, "Random", (PyObject *)&Random_Type);
|
||||
return m;
|
||||
}
|
||||
|
||||
_Section(".rodata.pytab.1") const struct _inittab _PyImport_Inittab__random = {
|
||||
"_random",
|
||||
PyInit__random,
|
||||
};
|
||||
|
|
165
third_party/python/Modules/_sha3.c
vendored
165
third_party/python/Modules/_sha3.c
vendored
|
@ -7,17 +7,33 @@
|
|||
#include "third_party/python/Include/abstract.h"
|
||||
#include "third_party/python/Include/bytesobject.h"
|
||||
#include "third_party/python/Include/descrobject.h"
|
||||
#include "third_party/python/Include/import.h"
|
||||
#include "third_party/python/Include/longobject.h"
|
||||
#include "third_party/python/Include/modsupport.h"
|
||||
#include "third_party/python/Include/object.h"
|
||||
#include "third_party/python/Include/objimpl.h"
|
||||
#include "third_party/python/Include/pyerrors.h"
|
||||
#include "third_party/python/Include/pystrhex.h"
|
||||
#include "third_party/python/Include/yoink.h"
|
||||
|
||||
PYTHON_PROVIDE("_sha3");
|
||||
PYTHON_PROVIDE("_sha3.__doc__");
|
||||
PYTHON_PROVIDE("_sha3.__loader__");
|
||||
PYTHON_PROVIDE("_sha3.__name__");
|
||||
PYTHON_PROVIDE("_sha3.__package__");
|
||||
PYTHON_PROVIDE("_sha3.__spec__");
|
||||
PYTHON_PROVIDE("_sha3.implementation");
|
||||
PYTHON_PROVIDE("_sha3.keccakopt");
|
||||
PYTHON_PROVIDE("_sha3.sha3_224");
|
||||
PYTHON_PROVIDE("_sha3.sha3_256");
|
||||
PYTHON_PROVIDE("_sha3.sha3_384");
|
||||
PYTHON_PROVIDE("_sha3.sha3_512");
|
||||
PYTHON_PROVIDE("_sha3.shake_128");
|
||||
PYTHON_PROVIDE("_sha3.shake_256");
|
||||
|
||||
/*
|
||||
Ran preprocessor on working build, because spaghetti structure of
|
||||
upstream Python 3.6 source code was unnaceptably incomprehensible
|
||||
TODO(jart): Find SHA3 that isn't written in a laugh out loud way!
|
||||
*/
|
||||
|
||||
typedef enum { SUCCESS = 0, FAIL = 1, BAD_HASHLEN = 2 } HashReturn;
|
||||
|
@ -35,15 +51,15 @@ typedef struct {
|
|||
unsigned char delimitedSuffix;
|
||||
} Keccak_HashInstance;
|
||||
|
||||
static const uint64_t KeccakF1600RoundConstants[24] = {
|
||||
0x0000000000000001ULL, 0x0000000000008082ULL, 0x800000000000808aULL,
|
||||
0x8000000080008000ULL, 0x000000000000808bULL, 0x0000000080000001ULL,
|
||||
0x8000000080008081ULL, 0x8000000000008009ULL, 0x000000000000008aULL,
|
||||
0x0000000000000088ULL, 0x0000000080008009ULL, 0x000000008000000aULL,
|
||||
0x000000008000808bULL, 0x800000000000008bULL, 0x8000000000008089ULL,
|
||||
0x8000000000008003ULL, 0x8000000000008002ULL, 0x8000000000000080ULL,
|
||||
0x000000000000800aULL, 0x800000008000000aULL, 0x8000000080008081ULL,
|
||||
0x8000000000008080ULL, 0x0000000080000001ULL, 0x8000000080008008ULL,
|
||||
static const uint64_t kKeccakf[24] = {
|
||||
0x0000000000000001, 0x0000000000008082, 0x800000000000808a,
|
||||
0x8000000080008000, 0x000000000000808b, 0x0000000080000001,
|
||||
0x8000000080008081, 0x8000000000008009, 0x000000000000008a,
|
||||
0x0000000000000088, 0x0000000080008009, 0x000000008000000a,
|
||||
0x000000008000808b, 0x800000000000008b, 0x8000000000008089,
|
||||
0x8000000000008003, 0x8000000000008002, 0x8000000000000080,
|
||||
0x000000000000800a, 0x800000008000000a, 0x8000000080008081,
|
||||
0x8000000000008080, 0x0000000080000001, 0x8000000080008008,
|
||||
};
|
||||
|
||||
static void _PySHA3_KeccakP1600_Initialize(void *state) {
|
||||
|
@ -203,6 +219,8 @@ static void _PySHA3_KeccakP1600_OverwriteWithZeroes(void *state,
|
|||
}
|
||||
|
||||
static void _PySHA3_KeccakP1600_Permute_24rounds(void *state) {
|
||||
uint64_t Ca, Ce, Ci, Co, Cu;
|
||||
uint64_t Da, De, Di, Do, Du;
|
||||
uint64_t Aba, Abe, Abi, Abo, Abu;
|
||||
uint64_t Aga, Age, Agi, Ago, Agu;
|
||||
uint64_t Aka, Ake, Aki, Ako, Aku;
|
||||
|
@ -213,8 +231,6 @@ static void _PySHA3_KeccakP1600_Permute_24rounds(void *state) {
|
|||
uint64_t Bka, Bke, Bki, Bko, Bku;
|
||||
uint64_t Bma, Bme, Bmi, Bmo, Bmu;
|
||||
uint64_t Bsa, Bse, Bsi, Bso, Bsu;
|
||||
uint64_t Ca, Ce, Ci, Co, Cu;
|
||||
uint64_t Da, De, Di, Do, Du;
|
||||
uint64_t Eba, Ebe, Ebi, Ebo, Ebu;
|
||||
uint64_t Ega, Ege, Egi, Ego, Egu;
|
||||
uint64_t Eka, Eke, Eki, Eko, Eku;
|
||||
|
@ -267,7 +283,7 @@ static void _PySHA3_KeccakP1600_Permute_24rounds(void *state) {
|
|||
Asu ^= Du;
|
||||
Bbu = ((((uint64_t)Asu) << 14) ^ (((uint64_t)Asu) >> (64 - 14)));
|
||||
Eba = Bba ^ (Bbe | Bbi);
|
||||
Eba ^= KeccakF1600RoundConstants[0];
|
||||
Eba ^= kKeccakf[0];
|
||||
Ca = Eba;
|
||||
Ebe = Bbe ^ ((~Bbi) | Bbo);
|
||||
Ce = Ebe;
|
||||
|
@ -373,7 +389,7 @@ static void _PySHA3_KeccakP1600_Permute_24rounds(void *state) {
|
|||
Esu ^= Du;
|
||||
Bbu = ((((uint64_t)Esu) << 14) ^ (((uint64_t)Esu) >> (64 - 14)));
|
||||
Aba = Bba ^ (Bbe | Bbi);
|
||||
Aba ^= KeccakF1600RoundConstants[1];
|
||||
Aba ^= kKeccakf[1];
|
||||
Ca = Aba;
|
||||
Abe = Bbe ^ ((~Bbi) | Bbo);
|
||||
Ce = Abe;
|
||||
|
@ -479,7 +495,7 @@ static void _PySHA3_KeccakP1600_Permute_24rounds(void *state) {
|
|||
Asu ^= Du;
|
||||
Bbu = ((((uint64_t)Asu) << 14) ^ (((uint64_t)Asu) >> (64 - 14)));
|
||||
Eba = Bba ^ (Bbe | Bbi);
|
||||
Eba ^= KeccakF1600RoundConstants[2];
|
||||
Eba ^= kKeccakf[2];
|
||||
Ca = Eba;
|
||||
Ebe = Bbe ^ ((~Bbi) | Bbo);
|
||||
Ce = Ebe;
|
||||
|
@ -585,7 +601,7 @@ static void _PySHA3_KeccakP1600_Permute_24rounds(void *state) {
|
|||
Esu ^= Du;
|
||||
Bbu = ((((uint64_t)Esu) << 14) ^ (((uint64_t)Esu) >> (64 - 14)));
|
||||
Aba = Bba ^ (Bbe | Bbi);
|
||||
Aba ^= KeccakF1600RoundConstants[3];
|
||||
Aba ^= kKeccakf[3];
|
||||
Ca = Aba;
|
||||
Abe = Bbe ^ ((~Bbi) | Bbo);
|
||||
Ce = Abe;
|
||||
|
@ -691,7 +707,7 @@ static void _PySHA3_KeccakP1600_Permute_24rounds(void *state) {
|
|||
Asu ^= Du;
|
||||
Bbu = ((((uint64_t)Asu) << 14) ^ (((uint64_t)Asu) >> (64 - 14)));
|
||||
Eba = Bba ^ (Bbe | Bbi);
|
||||
Eba ^= KeccakF1600RoundConstants[4];
|
||||
Eba ^= kKeccakf[4];
|
||||
Ca = Eba;
|
||||
Ebe = Bbe ^ ((~Bbi) | Bbo);
|
||||
Ce = Ebe;
|
||||
|
@ -797,7 +813,7 @@ static void _PySHA3_KeccakP1600_Permute_24rounds(void *state) {
|
|||
Esu ^= Du;
|
||||
Bbu = ((((uint64_t)Esu) << 14) ^ (((uint64_t)Esu) >> (64 - 14)));
|
||||
Aba = Bba ^ (Bbe | Bbi);
|
||||
Aba ^= KeccakF1600RoundConstants[5];
|
||||
Aba ^= kKeccakf[5];
|
||||
Ca = Aba;
|
||||
Abe = Bbe ^ ((~Bbi) | Bbo);
|
||||
Ce = Abe;
|
||||
|
@ -903,7 +919,7 @@ static void _PySHA3_KeccakP1600_Permute_24rounds(void *state) {
|
|||
Asu ^= Du;
|
||||
Bbu = ((((uint64_t)Asu) << 14) ^ (((uint64_t)Asu) >> (64 - 14)));
|
||||
Eba = Bba ^ (Bbe | Bbi);
|
||||
Eba ^= KeccakF1600RoundConstants[6];
|
||||
Eba ^= kKeccakf[6];
|
||||
Ca = Eba;
|
||||
Ebe = Bbe ^ ((~Bbi) | Bbo);
|
||||
Ce = Ebe;
|
||||
|
@ -1009,7 +1025,7 @@ static void _PySHA3_KeccakP1600_Permute_24rounds(void *state) {
|
|||
Esu ^= Du;
|
||||
Bbu = ((((uint64_t)Esu) << 14) ^ (((uint64_t)Esu) >> (64 - 14)));
|
||||
Aba = Bba ^ (Bbe | Bbi);
|
||||
Aba ^= KeccakF1600RoundConstants[7];
|
||||
Aba ^= kKeccakf[7];
|
||||
Ca = Aba;
|
||||
Abe = Bbe ^ ((~Bbi) | Bbo);
|
||||
Ce = Abe;
|
||||
|
@ -1115,7 +1131,7 @@ static void _PySHA3_KeccakP1600_Permute_24rounds(void *state) {
|
|||
Asu ^= Du;
|
||||
Bbu = ((((uint64_t)Asu) << 14) ^ (((uint64_t)Asu) >> (64 - 14)));
|
||||
Eba = Bba ^ (Bbe | Bbi);
|
||||
Eba ^= KeccakF1600RoundConstants[8];
|
||||
Eba ^= kKeccakf[8];
|
||||
Ca = Eba;
|
||||
Ebe = Bbe ^ ((~Bbi) | Bbo);
|
||||
Ce = Ebe;
|
||||
|
@ -1221,7 +1237,7 @@ static void _PySHA3_KeccakP1600_Permute_24rounds(void *state) {
|
|||
Esu ^= Du;
|
||||
Bbu = ((((uint64_t)Esu) << 14) ^ (((uint64_t)Esu) >> (64 - 14)));
|
||||
Aba = Bba ^ (Bbe | Bbi);
|
||||
Aba ^= KeccakF1600RoundConstants[9];
|
||||
Aba ^= kKeccakf[9];
|
||||
Ca = Aba;
|
||||
Abe = Bbe ^ ((~Bbi) | Bbo);
|
||||
Ce = Abe;
|
||||
|
@ -1327,7 +1343,7 @@ static void _PySHA3_KeccakP1600_Permute_24rounds(void *state) {
|
|||
Asu ^= Du;
|
||||
Bbu = ((((uint64_t)Asu) << 14) ^ (((uint64_t)Asu) >> (64 - 14)));
|
||||
Eba = Bba ^ (Bbe | Bbi);
|
||||
Eba ^= KeccakF1600RoundConstants[10];
|
||||
Eba ^= kKeccakf[10];
|
||||
Ca = Eba;
|
||||
Ebe = Bbe ^ ((~Bbi) | Bbo);
|
||||
Ce = Ebe;
|
||||
|
@ -1433,7 +1449,7 @@ static void _PySHA3_KeccakP1600_Permute_24rounds(void *state) {
|
|||
Esu ^= Du;
|
||||
Bbu = ((((uint64_t)Esu) << 14) ^ (((uint64_t)Esu) >> (64 - 14)));
|
||||
Aba = Bba ^ (Bbe | Bbi);
|
||||
Aba ^= KeccakF1600RoundConstants[11];
|
||||
Aba ^= kKeccakf[11];
|
||||
Ca = Aba;
|
||||
Abe = Bbe ^ ((~Bbi) | Bbo);
|
||||
Ce = Abe;
|
||||
|
@ -1539,7 +1555,7 @@ static void _PySHA3_KeccakP1600_Permute_24rounds(void *state) {
|
|||
Asu ^= Du;
|
||||
Bbu = ((((uint64_t)Asu) << 14) ^ (((uint64_t)Asu) >> (64 - 14)));
|
||||
Eba = Bba ^ (Bbe | Bbi);
|
||||
Eba ^= KeccakF1600RoundConstants[12];
|
||||
Eba ^= kKeccakf[12];
|
||||
Ca = Eba;
|
||||
Ebe = Bbe ^ ((~Bbi) | Bbo);
|
||||
Ce = Ebe;
|
||||
|
@ -1645,7 +1661,7 @@ static void _PySHA3_KeccakP1600_Permute_24rounds(void *state) {
|
|||
Esu ^= Du;
|
||||
Bbu = ((((uint64_t)Esu) << 14) ^ (((uint64_t)Esu) >> (64 - 14)));
|
||||
Aba = Bba ^ (Bbe | Bbi);
|
||||
Aba ^= KeccakF1600RoundConstants[13];
|
||||
Aba ^= kKeccakf[13];
|
||||
Ca = Aba;
|
||||
Abe = Bbe ^ ((~Bbi) | Bbo);
|
||||
Ce = Abe;
|
||||
|
@ -1751,7 +1767,7 @@ static void _PySHA3_KeccakP1600_Permute_24rounds(void *state) {
|
|||
Asu ^= Du;
|
||||
Bbu = ((((uint64_t)Asu) << 14) ^ (((uint64_t)Asu) >> (64 - 14)));
|
||||
Eba = Bba ^ (Bbe | Bbi);
|
||||
Eba ^= KeccakF1600RoundConstants[14];
|
||||
Eba ^= kKeccakf[14];
|
||||
Ca = Eba;
|
||||
Ebe = Bbe ^ ((~Bbi) | Bbo);
|
||||
Ce = Ebe;
|
||||
|
@ -1857,7 +1873,7 @@ static void _PySHA3_KeccakP1600_Permute_24rounds(void *state) {
|
|||
Esu ^= Du;
|
||||
Bbu = ((((uint64_t)Esu) << 14) ^ (((uint64_t)Esu) >> (64 - 14)));
|
||||
Aba = Bba ^ (Bbe | Bbi);
|
||||
Aba ^= KeccakF1600RoundConstants[15];
|
||||
Aba ^= kKeccakf[15];
|
||||
Ca = Aba;
|
||||
Abe = Bbe ^ ((~Bbi) | Bbo);
|
||||
Ce = Abe;
|
||||
|
@ -1963,7 +1979,7 @@ static void _PySHA3_KeccakP1600_Permute_24rounds(void *state) {
|
|||
Asu ^= Du;
|
||||
Bbu = ((((uint64_t)Asu) << 14) ^ (((uint64_t)Asu) >> (64 - 14)));
|
||||
Eba = Bba ^ (Bbe | Bbi);
|
||||
Eba ^= KeccakF1600RoundConstants[16];
|
||||
Eba ^= kKeccakf[16];
|
||||
Ca = Eba;
|
||||
Ebe = Bbe ^ ((~Bbi) | Bbo);
|
||||
Ce = Ebe;
|
||||
|
@ -2069,7 +2085,7 @@ static void _PySHA3_KeccakP1600_Permute_24rounds(void *state) {
|
|||
Esu ^= Du;
|
||||
Bbu = ((((uint64_t)Esu) << 14) ^ (((uint64_t)Esu) >> (64 - 14)));
|
||||
Aba = Bba ^ (Bbe | Bbi);
|
||||
Aba ^= KeccakF1600RoundConstants[17];
|
||||
Aba ^= kKeccakf[17];
|
||||
Ca = Aba;
|
||||
Abe = Bbe ^ ((~Bbi) | Bbo);
|
||||
Ce = Abe;
|
||||
|
@ -2175,7 +2191,7 @@ static void _PySHA3_KeccakP1600_Permute_24rounds(void *state) {
|
|||
Asu ^= Du;
|
||||
Bbu = ((((uint64_t)Asu) << 14) ^ (((uint64_t)Asu) >> (64 - 14)));
|
||||
Eba = Bba ^ (Bbe | Bbi);
|
||||
Eba ^= KeccakF1600RoundConstants[18];
|
||||
Eba ^= kKeccakf[18];
|
||||
Ca = Eba;
|
||||
Ebe = Bbe ^ ((~Bbi) | Bbo);
|
||||
Ce = Ebe;
|
||||
|
@ -2281,7 +2297,7 @@ static void _PySHA3_KeccakP1600_Permute_24rounds(void *state) {
|
|||
Esu ^= Du;
|
||||
Bbu = ((((uint64_t)Esu) << 14) ^ (((uint64_t)Esu) >> (64 - 14)));
|
||||
Aba = Bba ^ (Bbe | Bbi);
|
||||
Aba ^= KeccakF1600RoundConstants[19];
|
||||
Aba ^= kKeccakf[19];
|
||||
Ca = Aba;
|
||||
Abe = Bbe ^ ((~Bbi) | Bbo);
|
||||
Ce = Abe;
|
||||
|
@ -2387,7 +2403,7 @@ static void _PySHA3_KeccakP1600_Permute_24rounds(void *state) {
|
|||
Asu ^= Du;
|
||||
Bbu = ((((uint64_t)Asu) << 14) ^ (((uint64_t)Asu) >> (64 - 14)));
|
||||
Eba = Bba ^ (Bbe | Bbi);
|
||||
Eba ^= KeccakF1600RoundConstants[20];
|
||||
Eba ^= kKeccakf[20];
|
||||
Ca = Eba;
|
||||
Ebe = Bbe ^ ((~Bbi) | Bbo);
|
||||
Ce = Ebe;
|
||||
|
@ -2493,7 +2509,7 @@ static void _PySHA3_KeccakP1600_Permute_24rounds(void *state) {
|
|||
Esu ^= Du;
|
||||
Bbu = ((((uint64_t)Esu) << 14) ^ (((uint64_t)Esu) >> (64 - 14)));
|
||||
Aba = Bba ^ (Bbe | Bbi);
|
||||
Aba ^= KeccakF1600RoundConstants[21];
|
||||
Aba ^= kKeccakf[21];
|
||||
Ca = Aba;
|
||||
Abe = Bbe ^ ((~Bbi) | Bbo);
|
||||
Ce = Abe;
|
||||
|
@ -2599,7 +2615,7 @@ static void _PySHA3_KeccakP1600_Permute_24rounds(void *state) {
|
|||
Asu ^= Du;
|
||||
Bbu = ((((uint64_t)Asu) << 14) ^ (((uint64_t)Asu) >> (64 - 14)));
|
||||
Eba = Bba ^ (Bbe | Bbi);
|
||||
Eba ^= KeccakF1600RoundConstants[22];
|
||||
Eba ^= kKeccakf[22];
|
||||
Ca = Eba;
|
||||
Ebe = Bbe ^ ((~Bbi) | Bbo);
|
||||
Ce = Ebe;
|
||||
|
@ -2705,7 +2721,7 @@ static void _PySHA3_KeccakP1600_Permute_24rounds(void *state) {
|
|||
Esu ^= Du;
|
||||
Bbu = ((((uint64_t)Esu) << 14) ^ (((uint64_t)Esu) >> (64 - 14)));
|
||||
Aba = Bba ^ (Bbe | Bbi);
|
||||
Aba ^= KeccakF1600RoundConstants[23];
|
||||
Aba ^= kKeccakf[23];
|
||||
Abe = Bbe ^ ((~Bbi) | Bbo);
|
||||
Abi = Bbi ^ (Bbo & Bbu);
|
||||
Abo = Bbo ^ (Bbu | Bba);
|
||||
|
@ -2862,7 +2878,7 @@ static void _PySHA3_KeccakP1600_Permute_12rounds(void *state) {
|
|||
Asu ^= Du;
|
||||
Bbu = ((((uint64_t)Asu) << 14) ^ (((uint64_t)Asu) >> (64 - 14)));
|
||||
Eba = Bba ^ (Bbe | Bbi);
|
||||
Eba ^= KeccakF1600RoundConstants[12];
|
||||
Eba ^= kKeccakf[12];
|
||||
Ca = Eba;
|
||||
Ebe = Bbe ^ ((~Bbi) | Bbo);
|
||||
Ce = Ebe;
|
||||
|
@ -2968,7 +2984,7 @@ static void _PySHA3_KeccakP1600_Permute_12rounds(void *state) {
|
|||
Esu ^= Du;
|
||||
Bbu = ((((uint64_t)Esu) << 14) ^ (((uint64_t)Esu) >> (64 - 14)));
|
||||
Aba = Bba ^ (Bbe | Bbi);
|
||||
Aba ^= KeccakF1600RoundConstants[13];
|
||||
Aba ^= kKeccakf[13];
|
||||
Ca = Aba;
|
||||
Abe = Bbe ^ ((~Bbi) | Bbo);
|
||||
Ce = Abe;
|
||||
|
@ -3074,7 +3090,7 @@ static void _PySHA3_KeccakP1600_Permute_12rounds(void *state) {
|
|||
Asu ^= Du;
|
||||
Bbu = ((((uint64_t)Asu) << 14) ^ (((uint64_t)Asu) >> (64 - 14)));
|
||||
Eba = Bba ^ (Bbe | Bbi);
|
||||
Eba ^= KeccakF1600RoundConstants[14];
|
||||
Eba ^= kKeccakf[14];
|
||||
Ca = Eba;
|
||||
Ebe = Bbe ^ ((~Bbi) | Bbo);
|
||||
Ce = Ebe;
|
||||
|
@ -3180,7 +3196,7 @@ static void _PySHA3_KeccakP1600_Permute_12rounds(void *state) {
|
|||
Esu ^= Du;
|
||||
Bbu = ((((uint64_t)Esu) << 14) ^ (((uint64_t)Esu) >> (64 - 14)));
|
||||
Aba = Bba ^ (Bbe | Bbi);
|
||||
Aba ^= KeccakF1600RoundConstants[15];
|
||||
Aba ^= kKeccakf[15];
|
||||
Ca = Aba;
|
||||
Abe = Bbe ^ ((~Bbi) | Bbo);
|
||||
Ce = Abe;
|
||||
|
@ -3286,7 +3302,7 @@ static void _PySHA3_KeccakP1600_Permute_12rounds(void *state) {
|
|||
Asu ^= Du;
|
||||
Bbu = ((((uint64_t)Asu) << 14) ^ (((uint64_t)Asu) >> (64 - 14)));
|
||||
Eba = Bba ^ (Bbe | Bbi);
|
||||
Eba ^= KeccakF1600RoundConstants[16];
|
||||
Eba ^= kKeccakf[16];
|
||||
Ca = Eba;
|
||||
Ebe = Bbe ^ ((~Bbi) | Bbo);
|
||||
Ce = Ebe;
|
||||
|
@ -3392,7 +3408,7 @@ static void _PySHA3_KeccakP1600_Permute_12rounds(void *state) {
|
|||
Esu ^= Du;
|
||||
Bbu = ((((uint64_t)Esu) << 14) ^ (((uint64_t)Esu) >> (64 - 14)));
|
||||
Aba = Bba ^ (Bbe | Bbi);
|
||||
Aba ^= KeccakF1600RoundConstants[17];
|
||||
Aba ^= kKeccakf[17];
|
||||
Ca = Aba;
|
||||
Abe = Bbe ^ ((~Bbi) | Bbo);
|
||||
Ce = Abe;
|
||||
|
@ -3498,7 +3514,7 @@ static void _PySHA3_KeccakP1600_Permute_12rounds(void *state) {
|
|||
Asu ^= Du;
|
||||
Bbu = ((((uint64_t)Asu) << 14) ^ (((uint64_t)Asu) >> (64 - 14)));
|
||||
Eba = Bba ^ (Bbe | Bbi);
|
||||
Eba ^= KeccakF1600RoundConstants[18];
|
||||
Eba ^= kKeccakf[18];
|
||||
Ca = Eba;
|
||||
Ebe = Bbe ^ ((~Bbi) | Bbo);
|
||||
Ce = Ebe;
|
||||
|
@ -3604,7 +3620,7 @@ static void _PySHA3_KeccakP1600_Permute_12rounds(void *state) {
|
|||
Esu ^= Du;
|
||||
Bbu = ((((uint64_t)Esu) << 14) ^ (((uint64_t)Esu) >> (64 - 14)));
|
||||
Aba = Bba ^ (Bbe | Bbi);
|
||||
Aba ^= KeccakF1600RoundConstants[19];
|
||||
Aba ^= kKeccakf[19];
|
||||
Ca = Aba;
|
||||
Abe = Bbe ^ ((~Bbi) | Bbo);
|
||||
Ce = Abe;
|
||||
|
@ -3710,7 +3726,7 @@ static void _PySHA3_KeccakP1600_Permute_12rounds(void *state) {
|
|||
Asu ^= Du;
|
||||
Bbu = ((((uint64_t)Asu) << 14) ^ (((uint64_t)Asu) >> (64 - 14)));
|
||||
Eba = Bba ^ (Bbe | Bbi);
|
||||
Eba ^= KeccakF1600RoundConstants[20];
|
||||
Eba ^= kKeccakf[20];
|
||||
Ca = Eba;
|
||||
Ebe = Bbe ^ ((~Bbi) | Bbo);
|
||||
Ce = Ebe;
|
||||
|
@ -3816,7 +3832,7 @@ static void _PySHA3_KeccakP1600_Permute_12rounds(void *state) {
|
|||
Esu ^= Du;
|
||||
Bbu = ((((uint64_t)Esu) << 14) ^ (((uint64_t)Esu) >> (64 - 14)));
|
||||
Aba = Bba ^ (Bbe | Bbi);
|
||||
Aba ^= KeccakF1600RoundConstants[21];
|
||||
Aba ^= kKeccakf[21];
|
||||
Ca = Aba;
|
||||
Abe = Bbe ^ ((~Bbi) | Bbo);
|
||||
Ce = Abe;
|
||||
|
@ -3922,7 +3938,7 @@ static void _PySHA3_KeccakP1600_Permute_12rounds(void *state) {
|
|||
Asu ^= Du;
|
||||
Bbu = ((((uint64_t)Asu) << 14) ^ (((uint64_t)Asu) >> (64 - 14)));
|
||||
Eba = Bba ^ (Bbe | Bbi);
|
||||
Eba ^= KeccakF1600RoundConstants[22];
|
||||
Eba ^= kKeccakf[22];
|
||||
Ca = Eba;
|
||||
Ebe = Bbe ^ ((~Bbi) | Bbo);
|
||||
Ce = Ebe;
|
||||
|
@ -4028,7 +4044,7 @@ static void _PySHA3_KeccakP1600_Permute_12rounds(void *state) {
|
|||
Esu ^= Du;
|
||||
Bbu = ((((uint64_t)Esu) << 14) ^ (((uint64_t)Esu) >> (64 - 14)));
|
||||
Aba = Bba ^ (Bbe | Bbi);
|
||||
Aba ^= KeccakF1600RoundConstants[23];
|
||||
Aba ^= kKeccakf[23];
|
||||
Abe = Bbe ^ ((~Bbi) | Bbo);
|
||||
Abi = Bbi ^ (Bbo & Bbu);
|
||||
Abo = Bbo ^ (Bbu | Bba);
|
||||
|
@ -4423,7 +4439,7 @@ static size_t _PySHA3_KeccakF1600_FastLoop_Absorb(void *state,
|
|||
Asu ^= Du;
|
||||
Bbu = ((((uint64_t)Asu) << 14) ^ (((uint64_t)Asu) >> (64 - 14)));
|
||||
Eba = Bba ^ (Bbe | Bbi);
|
||||
Eba ^= KeccakF1600RoundConstants[0];
|
||||
Eba ^= kKeccakf[0];
|
||||
Ca = Eba;
|
||||
Ebe = Bbe ^ ((~Bbi) | Bbo);
|
||||
Ce = Ebe;
|
||||
|
@ -4529,7 +4545,7 @@ static size_t _PySHA3_KeccakF1600_FastLoop_Absorb(void *state,
|
|||
Esu ^= Du;
|
||||
Bbu = ((((uint64_t)Esu) << 14) ^ (((uint64_t)Esu) >> (64 - 14)));
|
||||
Aba = Bba ^ (Bbe | Bbi);
|
||||
Aba ^= KeccakF1600RoundConstants[1];
|
||||
Aba ^= kKeccakf[1];
|
||||
Ca = Aba;
|
||||
Abe = Bbe ^ ((~Bbi) | Bbo);
|
||||
Ce = Abe;
|
||||
|
@ -4635,7 +4651,7 @@ static size_t _PySHA3_KeccakF1600_FastLoop_Absorb(void *state,
|
|||
Asu ^= Du;
|
||||
Bbu = ((((uint64_t)Asu) << 14) ^ (((uint64_t)Asu) >> (64 - 14)));
|
||||
Eba = Bba ^ (Bbe | Bbi);
|
||||
Eba ^= KeccakF1600RoundConstants[2];
|
||||
Eba ^= kKeccakf[2];
|
||||
Ca = Eba;
|
||||
Ebe = Bbe ^ ((~Bbi) | Bbo);
|
||||
Ce = Ebe;
|
||||
|
@ -4741,7 +4757,7 @@ static size_t _PySHA3_KeccakF1600_FastLoop_Absorb(void *state,
|
|||
Esu ^= Du;
|
||||
Bbu = ((((uint64_t)Esu) << 14) ^ (((uint64_t)Esu) >> (64 - 14)));
|
||||
Aba = Bba ^ (Bbe | Bbi);
|
||||
Aba ^= KeccakF1600RoundConstants[3];
|
||||
Aba ^= kKeccakf[3];
|
||||
Ca = Aba;
|
||||
Abe = Bbe ^ ((~Bbi) | Bbo);
|
||||
Ce = Abe;
|
||||
|
@ -4847,7 +4863,7 @@ static size_t _PySHA3_KeccakF1600_FastLoop_Absorb(void *state,
|
|||
Asu ^= Du;
|
||||
Bbu = ((((uint64_t)Asu) << 14) ^ (((uint64_t)Asu) >> (64 - 14)));
|
||||
Eba = Bba ^ (Bbe | Bbi);
|
||||
Eba ^= KeccakF1600RoundConstants[4];
|
||||
Eba ^= kKeccakf[4];
|
||||
Ca = Eba;
|
||||
Ebe = Bbe ^ ((~Bbi) | Bbo);
|
||||
Ce = Ebe;
|
||||
|
@ -4953,7 +4969,7 @@ static size_t _PySHA3_KeccakF1600_FastLoop_Absorb(void *state,
|
|||
Esu ^= Du;
|
||||
Bbu = ((((uint64_t)Esu) << 14) ^ (((uint64_t)Esu) >> (64 - 14)));
|
||||
Aba = Bba ^ (Bbe | Bbi);
|
||||
Aba ^= KeccakF1600RoundConstants[5];
|
||||
Aba ^= kKeccakf[5];
|
||||
Ca = Aba;
|
||||
Abe = Bbe ^ ((~Bbi) | Bbo);
|
||||
Ce = Abe;
|
||||
|
@ -5059,7 +5075,7 @@ static size_t _PySHA3_KeccakF1600_FastLoop_Absorb(void *state,
|
|||
Asu ^= Du;
|
||||
Bbu = ((((uint64_t)Asu) << 14) ^ (((uint64_t)Asu) >> (64 - 14)));
|
||||
Eba = Bba ^ (Bbe | Bbi);
|
||||
Eba ^= KeccakF1600RoundConstants[6];
|
||||
Eba ^= kKeccakf[6];
|
||||
Ca = Eba;
|
||||
Ebe = Bbe ^ ((~Bbi) | Bbo);
|
||||
Ce = Ebe;
|
||||
|
@ -5165,7 +5181,7 @@ static size_t _PySHA3_KeccakF1600_FastLoop_Absorb(void *state,
|
|||
Esu ^= Du;
|
||||
Bbu = ((((uint64_t)Esu) << 14) ^ (((uint64_t)Esu) >> (64 - 14)));
|
||||
Aba = Bba ^ (Bbe | Bbi);
|
||||
Aba ^= KeccakF1600RoundConstants[7];
|
||||
Aba ^= kKeccakf[7];
|
||||
Ca = Aba;
|
||||
Abe = Bbe ^ ((~Bbi) | Bbo);
|
||||
Ce = Abe;
|
||||
|
@ -5271,7 +5287,7 @@ static size_t _PySHA3_KeccakF1600_FastLoop_Absorb(void *state,
|
|||
Asu ^= Du;
|
||||
Bbu = ((((uint64_t)Asu) << 14) ^ (((uint64_t)Asu) >> (64 - 14)));
|
||||
Eba = Bba ^ (Bbe | Bbi);
|
||||
Eba ^= KeccakF1600RoundConstants[8];
|
||||
Eba ^= kKeccakf[8];
|
||||
Ca = Eba;
|
||||
Ebe = Bbe ^ ((~Bbi) | Bbo);
|
||||
Ce = Ebe;
|
||||
|
@ -5377,7 +5393,7 @@ static size_t _PySHA3_KeccakF1600_FastLoop_Absorb(void *state,
|
|||
Esu ^= Du;
|
||||
Bbu = ((((uint64_t)Esu) << 14) ^ (((uint64_t)Esu) >> (64 - 14)));
|
||||
Aba = Bba ^ (Bbe | Bbi);
|
||||
Aba ^= KeccakF1600RoundConstants[9];
|
||||
Aba ^= kKeccakf[9];
|
||||
Ca = Aba;
|
||||
Abe = Bbe ^ ((~Bbi) | Bbo);
|
||||
Ce = Abe;
|
||||
|
@ -5483,7 +5499,7 @@ static size_t _PySHA3_KeccakF1600_FastLoop_Absorb(void *state,
|
|||
Asu ^= Du;
|
||||
Bbu = ((((uint64_t)Asu) << 14) ^ (((uint64_t)Asu) >> (64 - 14)));
|
||||
Eba = Bba ^ (Bbe | Bbi);
|
||||
Eba ^= KeccakF1600RoundConstants[10];
|
||||
Eba ^= kKeccakf[10];
|
||||
Ca = Eba;
|
||||
Ebe = Bbe ^ ((~Bbi) | Bbo);
|
||||
Ce = Ebe;
|
||||
|
@ -5589,7 +5605,7 @@ static size_t _PySHA3_KeccakF1600_FastLoop_Absorb(void *state,
|
|||
Esu ^= Du;
|
||||
Bbu = ((((uint64_t)Esu) << 14) ^ (((uint64_t)Esu) >> (64 - 14)));
|
||||
Aba = Bba ^ (Bbe | Bbi);
|
||||
Aba ^= KeccakF1600RoundConstants[11];
|
||||
Aba ^= kKeccakf[11];
|
||||
Ca = Aba;
|
||||
Abe = Bbe ^ ((~Bbi) | Bbo);
|
||||
Ce = Abe;
|
||||
|
@ -5695,7 +5711,7 @@ static size_t _PySHA3_KeccakF1600_FastLoop_Absorb(void *state,
|
|||
Asu ^= Du;
|
||||
Bbu = ((((uint64_t)Asu) << 14) ^ (((uint64_t)Asu) >> (64 - 14)));
|
||||
Eba = Bba ^ (Bbe | Bbi);
|
||||
Eba ^= KeccakF1600RoundConstants[12];
|
||||
Eba ^= kKeccakf[12];
|
||||
Ca = Eba;
|
||||
Ebe = Bbe ^ ((~Bbi) | Bbo);
|
||||
Ce = Ebe;
|
||||
|
@ -5801,7 +5817,7 @@ static size_t _PySHA3_KeccakF1600_FastLoop_Absorb(void *state,
|
|||
Esu ^= Du;
|
||||
Bbu = ((((uint64_t)Esu) << 14) ^ (((uint64_t)Esu) >> (64 - 14)));
|
||||
Aba = Bba ^ (Bbe | Bbi);
|
||||
Aba ^= KeccakF1600RoundConstants[13];
|
||||
Aba ^= kKeccakf[13];
|
||||
Ca = Aba;
|
||||
Abe = Bbe ^ ((~Bbi) | Bbo);
|
||||
Ce = Abe;
|
||||
|
@ -5907,7 +5923,7 @@ static size_t _PySHA3_KeccakF1600_FastLoop_Absorb(void *state,
|
|||
Asu ^= Du;
|
||||
Bbu = ((((uint64_t)Asu) << 14) ^ (((uint64_t)Asu) >> (64 - 14)));
|
||||
Eba = Bba ^ (Bbe | Bbi);
|
||||
Eba ^= KeccakF1600RoundConstants[14];
|
||||
Eba ^= kKeccakf[14];
|
||||
Ca = Eba;
|
||||
Ebe = Bbe ^ ((~Bbi) | Bbo);
|
||||
Ce = Ebe;
|
||||
|
@ -6013,7 +6029,7 @@ static size_t _PySHA3_KeccakF1600_FastLoop_Absorb(void *state,
|
|||
Esu ^= Du;
|
||||
Bbu = ((((uint64_t)Esu) << 14) ^ (((uint64_t)Esu) >> (64 - 14)));
|
||||
Aba = Bba ^ (Bbe | Bbi);
|
||||
Aba ^= KeccakF1600RoundConstants[15];
|
||||
Aba ^= kKeccakf[15];
|
||||
Ca = Aba;
|
||||
Abe = Bbe ^ ((~Bbi) | Bbo);
|
||||
Ce = Abe;
|
||||
|
@ -6119,7 +6135,7 @@ static size_t _PySHA3_KeccakF1600_FastLoop_Absorb(void *state,
|
|||
Asu ^= Du;
|
||||
Bbu = ((((uint64_t)Asu) << 14) ^ (((uint64_t)Asu) >> (64 - 14)));
|
||||
Eba = Bba ^ (Bbe | Bbi);
|
||||
Eba ^= KeccakF1600RoundConstants[16];
|
||||
Eba ^= kKeccakf[16];
|
||||
Ca = Eba;
|
||||
Ebe = Bbe ^ ((~Bbi) | Bbo);
|
||||
Ce = Ebe;
|
||||
|
@ -6225,7 +6241,7 @@ static size_t _PySHA3_KeccakF1600_FastLoop_Absorb(void *state,
|
|||
Esu ^= Du;
|
||||
Bbu = ((((uint64_t)Esu) << 14) ^ (((uint64_t)Esu) >> (64 - 14)));
|
||||
Aba = Bba ^ (Bbe | Bbi);
|
||||
Aba ^= KeccakF1600RoundConstants[17];
|
||||
Aba ^= kKeccakf[17];
|
||||
Ca = Aba;
|
||||
Abe = Bbe ^ ((~Bbi) | Bbo);
|
||||
Ce = Abe;
|
||||
|
@ -6331,7 +6347,7 @@ static size_t _PySHA3_KeccakF1600_FastLoop_Absorb(void *state,
|
|||
Asu ^= Du;
|
||||
Bbu = ((((uint64_t)Asu) << 14) ^ (((uint64_t)Asu) >> (64 - 14)));
|
||||
Eba = Bba ^ (Bbe | Bbi);
|
||||
Eba ^= KeccakF1600RoundConstants[18];
|
||||
Eba ^= kKeccakf[18];
|
||||
Ca = Eba;
|
||||
Ebe = Bbe ^ ((~Bbi) | Bbo);
|
||||
Ce = Ebe;
|
||||
|
@ -6437,7 +6453,7 @@ static size_t _PySHA3_KeccakF1600_FastLoop_Absorb(void *state,
|
|||
Esu ^= Du;
|
||||
Bbu = ((((uint64_t)Esu) << 14) ^ (((uint64_t)Esu) >> (64 - 14)));
|
||||
Aba = Bba ^ (Bbe | Bbi);
|
||||
Aba ^= KeccakF1600RoundConstants[19];
|
||||
Aba ^= kKeccakf[19];
|
||||
Ca = Aba;
|
||||
Abe = Bbe ^ ((~Bbi) | Bbo);
|
||||
Ce = Abe;
|
||||
|
@ -6543,7 +6559,7 @@ static size_t _PySHA3_KeccakF1600_FastLoop_Absorb(void *state,
|
|||
Asu ^= Du;
|
||||
Bbu = ((((uint64_t)Asu) << 14) ^ (((uint64_t)Asu) >> (64 - 14)));
|
||||
Eba = Bba ^ (Bbe | Bbi);
|
||||
Eba ^= KeccakF1600RoundConstants[20];
|
||||
Eba ^= kKeccakf[20];
|
||||
Ca = Eba;
|
||||
Ebe = Bbe ^ ((~Bbi) | Bbo);
|
||||
Ce = Ebe;
|
||||
|
@ -6649,7 +6665,7 @@ static size_t _PySHA3_KeccakF1600_FastLoop_Absorb(void *state,
|
|||
Esu ^= Du;
|
||||
Bbu = ((((uint64_t)Esu) << 14) ^ (((uint64_t)Esu) >> (64 - 14)));
|
||||
Aba = Bba ^ (Bbe | Bbi);
|
||||
Aba ^= KeccakF1600RoundConstants[21];
|
||||
Aba ^= kKeccakf[21];
|
||||
Ca = Aba;
|
||||
Abe = Bbe ^ ((~Bbi) | Bbo);
|
||||
Ce = Abe;
|
||||
|
@ -6755,7 +6771,7 @@ static size_t _PySHA3_KeccakF1600_FastLoop_Absorb(void *state,
|
|||
Asu ^= Du;
|
||||
Bbu = ((((uint64_t)Asu) << 14) ^ (((uint64_t)Asu) >> (64 - 14)));
|
||||
Eba = Bba ^ (Bbe | Bbi);
|
||||
Eba ^= KeccakF1600RoundConstants[22];
|
||||
Eba ^= kKeccakf[22];
|
||||
Ca = Eba;
|
||||
Ebe = Bbe ^ ((~Bbi) | Bbo);
|
||||
Ce = Ebe;
|
||||
|
@ -6861,7 +6877,7 @@ static size_t _PySHA3_KeccakF1600_FastLoop_Absorb(void *state,
|
|||
Esu ^= Du;
|
||||
Bbu = ((((uint64_t)Esu) << 14) ^ (((uint64_t)Esu) >> (64 - 14)));
|
||||
Aba = Bba ^ (Bbe | Bbi);
|
||||
Aba ^= KeccakF1600RoundConstants[23];
|
||||
Aba ^= kKeccakf[23];
|
||||
Abe = Bbe ^ ((~Bbi) | Bbo);
|
||||
Abi = Bbi ^ (Bbo & Bbu);
|
||||
Abo = Bbo ^ (Bbu | Bba);
|
||||
|
@ -7968,3 +7984,8 @@ error:
|
|||
} while (0);
|
||||
return 0;
|
||||
}
|
||||
|
||||
_Section(".rodata.pytab.1") const struct _inittab _PyImport_Inittab__sha3 = {
|
||||
"_sha3",
|
||||
PyInit__sha3,
|
||||
};
|
||||
|
|
5
third_party/python/Modules/_sqlite/module.c
vendored
5
third_party/python/Modules/_sqlite/module.c
vendored
|
@ -491,3 +491,8 @@ error:
|
|||
}
|
||||
return module;
|
||||
}
|
||||
|
||||
_Section(".rodata.pytab.1") const struct _inittab _PyImport_Inittab__sqlite3 = {
|
||||
"_sqlite3",
|
||||
PyInit__sqlite3,
|
||||
};
|
||||
|
|
5713
third_party/python/Modules/_ssl.c
vendored
5713
third_party/python/Modules/_ssl.c
vendored
File diff suppressed because it is too large
Load diff
1940
third_party/python/Modules/_ssl_data.inc
vendored
1940
third_party/python/Modules/_ssl_data.inc
vendored
File diff suppressed because it is too large
Load diff
6
third_party/python/Modules/_stat.c
vendored
6
third_party/python/Modules/_stat.c
vendored
|
@ -9,6 +9,7 @@
|
|||
#include "libc/calls/weirdtypes.h"
|
||||
#include "libc/sysv/consts/s.h"
|
||||
#include "third_party/python/Include/boolobject.h"
|
||||
#include "third_party/python/Include/import.h"
|
||||
#include "third_party/python/Include/longobject.h"
|
||||
#include "third_party/python/Include/methodobject.h"
|
||||
#include "third_party/python/Include/modsupport.h"
|
||||
|
@ -626,3 +627,8 @@ PyInit__stat(void)
|
|||
|
||||
return m;
|
||||
}
|
||||
|
||||
_Section(".rodata.pytab.1") const struct _inittab _PyImport_Inittab__stat = {
|
||||
"_stat",
|
||||
PyInit__stat,
|
||||
};
|
||||
|
|
6
third_party/python/Modules/_struct.c
vendored
6
third_party/python/Modules/_struct.c
vendored
|
@ -12,6 +12,7 @@
|
|||
#include "third_party/python/Include/descrobject.h"
|
||||
#include "third_party/python/Include/dictobject.h"
|
||||
#include "third_party/python/Include/floatobject.h"
|
||||
#include "third_party/python/Include/import.h"
|
||||
#include "third_party/python/Include/longobject.h"
|
||||
#include "third_party/python/Include/modsupport.h"
|
||||
#include "third_party/python/Include/objimpl.h"
|
||||
|
@ -2398,3 +2399,8 @@ PyInit__struct(void)
|
|||
|
||||
return m;
|
||||
}
|
||||
|
||||
_Section(".rodata.pytab.1") const struct _inittab _PyImport_Inittab__struct = {
|
||||
"_struct",
|
||||
PyInit__struct,
|
||||
};
|
||||
|
|
8
third_party/python/Modules/_testcapimodule.c
vendored
8
third_party/python/Modules/_testcapimodule.c
vendored
|
@ -230,6 +230,9 @@ PYTHON_PROVIDE("_testcapi.unicode_legacy_string");
|
|||
PYTHON_PROVIDE("_testcapi.unicode_transformdecimaltoascii");
|
||||
PYTHON_PROVIDE("_testcapi.with_tp_del");
|
||||
|
||||
PYTHON_YOINK("encodings.ascii");
|
||||
PYTHON_YOINK("encodings.latin_1");
|
||||
|
||||
/*
|
||||
* C Extension module to test Python interpreter C APIs.
|
||||
*
|
||||
|
@ -5216,3 +5219,8 @@ PyInit__testcapi(void)
|
|||
PyModule_AddObject(m, "error", TestError);
|
||||
return m;
|
||||
}
|
||||
|
||||
_Section(".rodata.pytab.1") const struct _inittab _PyImport_Inittab__testcapi = {
|
||||
"_testcapi",
|
||||
PyInit__testcapi,
|
||||
};
|
||||
|
|
6
third_party/python/Modules/_tracemalloc.c
vendored
6
third_party/python/Modules/_tracemalloc.c
vendored
|
@ -10,6 +10,7 @@
|
|||
#include "third_party/python/Include/dictobject.h"
|
||||
#include "third_party/python/Include/fileutils.h"
|
||||
#include "third_party/python/Include/frameobject.h"
|
||||
#include "third_party/python/Include/import.h"
|
||||
#include "third_party/python/Include/listobject.h"
|
||||
#include "third_party/python/Include/longobject.h"
|
||||
#include "third_party/python/Include/modsupport.h"
|
||||
|
@ -1861,3 +1862,8 @@ PyObject*
|
|||
|
||||
return traceback_to_pyobject(traceback, NULL);
|
||||
}
|
||||
|
||||
_Section(".rodata.pytab.1") const struct _inittab _PyImport_Inittab__tracemalloc = {
|
||||
"_tracemalloc",
|
||||
PyInit__tracemalloc,
|
||||
};
|
||||
|
|
1
third_party/python/Modules/_weakref.c
vendored
1
third_party/python/Modules/_weakref.c
vendored
|
@ -5,6 +5,7 @@
|
|||
│ https://docs.python.org/3/license.html │
|
||||
╚─────────────────────────────────────────────────────────────────────────────*/
|
||||
#include "third_party/python/Include/dictobject.h"
|
||||
#include "third_party/python/Include/import.h"
|
||||
#include "third_party/python/Include/listobject.h"
|
||||
#include "third_party/python/Include/longobject.h"
|
||||
#include "third_party/python/Include/modsupport.h"
|
||||
|
|
486
third_party/python/Modules/_winapi.c
vendored
486
third_party/python/Modules/_winapi.c
vendored
File diff suppressed because it is too large
Load diff
5
third_party/python/Modules/arraymodule.c
vendored
5
third_party/python/Modules/arraymodule.c
vendored
|
@ -3057,3 +3057,8 @@ PyInit_array(void)
|
|||
{
|
||||
return PyModuleDef_Init(&arraymodule);
|
||||
}
|
||||
|
||||
_Section(".rodata.pytab.1") const struct _inittab _PyImport_Inittab_array = {
|
||||
"array",
|
||||
PyInit_array,
|
||||
};
|
||||
|
|
6
third_party/python/Modules/atexitmodule.c
vendored
6
third_party/python/Modules/atexitmodule.c
vendored
|
@ -5,6 +5,7 @@
|
|||
│ https://docs.python.org/3/license.html │
|
||||
╚─────────────────────────────────────────────────────────────────────────────*/
|
||||
#include "third_party/python/Include/abstract.h"
|
||||
#include "third_party/python/Include/import.h"
|
||||
#include "third_party/python/Include/longobject.h"
|
||||
#include "third_party/python/Include/modsupport.h"
|
||||
#include "third_party/python/Include/moduleobject.h"
|
||||
|
@ -371,3 +372,8 @@ PyInit_atexit(void)
|
|||
_Py_PyAtExit(atexit_callfuncs);
|
||||
return m;
|
||||
}
|
||||
|
||||
_Section(".rodata.pytab.1") const struct _inittab _PyImport_Inittab_atexit = {
|
||||
"atexit",
|
||||
PyInit_atexit,
|
||||
};
|
||||
|
|
6
third_party/python/Modules/audioop.c
vendored
6
third_party/python/Modules/audioop.c
vendored
|
@ -8,6 +8,7 @@
|
|||
#include "libc/math.h"
|
||||
#include "third_party/python/Include/dictobject.h"
|
||||
#include "third_party/python/Include/floatobject.h"
|
||||
#include "third_party/python/Include/import.h"
|
||||
#include "third_party/python/Include/longobject.h"
|
||||
#include "third_party/python/Include/modsupport.h"
|
||||
#include "third_party/python/Include/object.h"
|
||||
|
@ -1963,3 +1964,8 @@ PyInit_audioop(void)
|
|||
PyDict_SetItemString(d,"error",AudioopError);
|
||||
return m;
|
||||
}
|
||||
|
||||
_Section(".rodata.pytab.1") const struct _inittab _PyImport_Inittab_audioop = {
|
||||
"audioop",
|
||||
PyInit_audioop,
|
||||
};
|
||||
|
|
6
third_party/python/Modules/binascii.c
vendored
6
third_party/python/Modules/binascii.c
vendored
|
@ -8,6 +8,7 @@
|
|||
#include "libc/assert.h"
|
||||
#include "third_party/python/Include/abstract.h"
|
||||
#include "third_party/python/Include/dictobject.h"
|
||||
#include "third_party/python/Include/import.h"
|
||||
#include "third_party/python/Include/longobject.h"
|
||||
#include "third_party/python/Include/modsupport.h"
|
||||
#include "third_party/python/Include/pyctype.h"
|
||||
|
@ -1474,3 +1475,8 @@ PyInit_binascii(void)
|
|||
}
|
||||
return m;
|
||||
}
|
||||
|
||||
_Section(".rodata.pytab.1") const struct _inittab _PyImport_Inittab_binascii = {
|
||||
"binascii",
|
||||
PyInit_binascii,
|
||||
};
|
||||
|
|
|
@ -4,6 +4,7 @@
|
|||
│ Python 3 │
|
||||
│ https://docs.python.org/3/license.html │
|
||||
╚─────────────────────────────────────────────────────────────────────────────*/
|
||||
#include "third_party/python/Include/import.h"
|
||||
#include "third_party/python/Include/yoink.h"
|
||||
#include "third_party/python/Modules/cjkcodecs/cjkcodecs.h"
|
||||
#include "third_party/python/Modules/cjkcodecs/mappings_cn.inc"
|
||||
|
@ -477,3 +478,8 @@ BEGIN_CODECS_LIST
|
|||
END_CODECS_LIST
|
||||
|
||||
I_AM_A_MODULE_FOR(cn)
|
||||
|
||||
_Section(".rodata.pytab.1") const struct _inittab _PyImport_Inittab__codecs_cn = {
|
||||
"_codecs_cn",
|
||||
PyInit__codecs_cn,
|
||||
};
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
│ https://docs.python.org/3/license.html │
|
||||
╚─────────────────────────────────────────────────────────────────────────────*/
|
||||
#define USING_IMPORTED_MAPS
|
||||
#include "third_party/python/Include/import.h"
|
||||
#include "third_party/python/Include/yoink.h"
|
||||
#include "third_party/python/Modules/cjkcodecs/cjkcodecs.h"
|
||||
#include "third_party/python/Modules/cjkcodecs/mappings_hk.inc"
|
||||
|
@ -202,3 +203,8 @@ BEGIN_CODECS_LIST
|
|||
END_CODECS_LIST
|
||||
|
||||
I_AM_A_MODULE_FOR(hk)
|
||||
|
||||
_Section(".rodata.pytab.1") const struct _inittab _PyImport_Inittab__codecs_hk = {
|
||||
"_codecs_hk",
|
||||
PyInit__codecs_hk,
|
||||
};
|
||||
|
|
|
@ -22,6 +22,7 @@
|
|||
#include "third_party/python/Modules/cjkcodecs/emu_jisx0213_2000.inc"
|
||||
#include "third_party/python/Modules/cjkcodecs/cjkcodecs.h"
|
||||
#include "third_party/python/Include/yoink.h"
|
||||
#include "third_party/python/Include/import.h"
|
||||
#include "third_party/python/Modules/cjkcodecs/mappings_jisx0213_pair.inc"
|
||||
|
||||
PYTHON_PROVIDE("_codecs_iso2022");
|
||||
|
@ -1153,3 +1154,8 @@ BEGIN_CODECS_LIST
|
|||
END_CODECS_LIST
|
||||
|
||||
I_AM_A_MODULE_FOR(iso2022)
|
||||
|
||||
_Section(".rodata.pytab.1") const struct _inittab _PyImport_Inittab__codecs_iso2022 = {
|
||||
"_codecs_iso2022",
|
||||
PyInit__codecs_iso2022,
|
||||
};
|
||||
|
|
|
@ -19,6 +19,7 @@
|
|||
#include "third_party/python/Modules/cjkcodecs/mappings_jisx0213_pair.inc"
|
||||
#include "third_party/python/Modules/cjkcodecs/alg_jisx0201.inc"
|
||||
#include "third_party/python/Include/yoink.h"
|
||||
#include "third_party/python/Include/import.h"
|
||||
#include "third_party/python/Modules/cjkcodecs/emu_jisx0213_2000.inc"
|
||||
|
||||
PYTHON_PROVIDE("_codecs_jp");
|
||||
|
@ -780,3 +781,8 @@ BEGIN_CODECS_LIST
|
|||
END_CODECS_LIST
|
||||
|
||||
I_AM_A_MODULE_FOR(jp)
|
||||
|
||||
_Section(".rodata.pytab.1") const struct _inittab _PyImport_Inittab__codecs_jp = {
|
||||
"_codecs_jp",
|
||||
PyInit__codecs_jp,
|
||||
};
|
||||
|
|
|
@ -14,6 +14,7 @@
|
|||
|
||||
#include "third_party/python/Modules/cjkcodecs/cjkcodecs.h"
|
||||
#include "third_party/python/Include/yoink.h"
|
||||
#include "third_party/python/Include/import.h"
|
||||
#include "third_party/python/Modules/cjkcodecs/mappings_kr.inc"
|
||||
|
||||
PYTHON_PROVIDE("_codecs_kr");
|
||||
|
@ -481,3 +482,8 @@ BEGIN_CODECS_LIST
|
|||
END_CODECS_LIST
|
||||
|
||||
I_AM_A_MODULE_FOR(kr)
|
||||
|
||||
_Section(".rodata.pytab.1") const struct _inittab _PyImport_Inittab__codecs_kr = {
|
||||
"_codecs_kr",
|
||||
PyInit__codecs_kr,
|
||||
};
|
||||
|
|
|
@ -7,6 +7,7 @@
|
|||
|
||||
#include "third_party/python/Modules/cjkcodecs/cjkcodecs.h"
|
||||
#include "third_party/python/Include/yoink.h"
|
||||
#include "third_party/python/Include/import.h"
|
||||
#include "third_party/python/Modules/cjkcodecs/mappings_tw.inc"
|
||||
|
||||
PYTHON_PROVIDE("_codecs_tw");
|
||||
|
@ -148,3 +149,8 @@ BEGIN_CODECS_LIST
|
|||
END_CODECS_LIST
|
||||
|
||||
I_AM_A_MODULE_FOR(tw)
|
||||
|
||||
_Section(".rodata.pytab.1") const struct _inittab _PyImport_Inittab__codecs_tw = {
|
||||
"_codecs_tw",
|
||||
PyInit__codecs_tw,
|
||||
};
|
||||
|
|
|
@ -8,6 +8,7 @@
|
|||
#include "third_party/python/Include/abstract.h"
|
||||
#include "third_party/python/Include/codecs.h"
|
||||
#include "third_party/python/Include/descrobject.h"
|
||||
#include "third_party/python/Include/import.h"
|
||||
#include "third_party/python/Include/longobject.h"
|
||||
#include "third_party/python/Include/modsupport.h"
|
||||
#include "third_party/python/Include/objimpl.h"
|
||||
|
@ -1952,3 +1953,8 @@ PyInit__multibytecodec(void)
|
|||
}
|
||||
return m;
|
||||
}
|
||||
|
||||
_Section(".rodata.pytab.1") const struct _inittab _PyImport_Inittab__multibytecodec = {
|
||||
"_multibytecodec",
|
||||
PyInit__multibytecodec,
|
||||
};
|
||||
|
|
236
third_party/python/Modules/clinic/_winapi.inc
vendored
236
third_party/python/Modules/clinic/_winapi.inc
vendored
|
@ -73,13 +73,13 @@ PyDoc_STRVAR(_winapi_CloseHandle__doc__,
|
|||
{"CloseHandle", (PyCFunction)_winapi_CloseHandle, METH_O, _winapi_CloseHandle__doc__},
|
||||
|
||||
static PyObject *
|
||||
_winapi_CloseHandle_impl(PyObject *module, HANDLE handle);
|
||||
_winapi_CloseHandle_impl(PyObject *module, int64_t handle);
|
||||
|
||||
static PyObject *
|
||||
_winapi_CloseHandle(PyObject *module, PyObject *arg)
|
||||
{
|
||||
PyObject *return_value = NULL;
|
||||
HANDLE handle;
|
||||
int64_t handle;
|
||||
|
||||
if (!PyArg_Parse(arg, "" F_HANDLE ":CloseHandle", &handle)) {
|
||||
goto exit;
|
||||
|
@ -99,7 +99,7 @@ PyDoc_STRVAR(_winapi_ConnectNamedPipe__doc__,
|
|||
{"ConnectNamedPipe", (PyCFunction)_winapi_ConnectNamedPipe, METH_FASTCALL, _winapi_ConnectNamedPipe__doc__},
|
||||
|
||||
static PyObject *
|
||||
_winapi_ConnectNamedPipe_impl(PyObject *module, HANDLE handle,
|
||||
_winapi_ConnectNamedPipe_impl(PyObject *module, int64_t handle,
|
||||
int use_overlapped);
|
||||
|
||||
static PyObject *
|
||||
|
@ -108,7 +108,7 @@ _winapi_ConnectNamedPipe(PyObject *module, PyObject **args, Py_ssize_t nargs, Py
|
|||
PyObject *return_value = NULL;
|
||||
static const char * const _keywords[] = {"handle", "overlapped", NULL};
|
||||
static _PyArg_Parser _parser = {"" F_HANDLE "|i:ConnectNamedPipe", _keywords, 0};
|
||||
HANDLE handle;
|
||||
int64_t handle;
|
||||
int use_overlapped = 0;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
|
@ -131,35 +131,35 @@ PyDoc_STRVAR(_winapi_CreateFile__doc__,
|
|||
#define _WINAPI_CREATEFILE_METHODDEF \
|
||||
{"CreateFile", (PyCFunction)_winapi_CreateFile, METH_VARARGS, _winapi_CreateFile__doc__},
|
||||
|
||||
static HANDLE
|
||||
_winapi_CreateFile_impl(PyObject *module, LPCTSTR file_name,
|
||||
DWORD desired_access, DWORD share_mode,
|
||||
LPSECURITY_ATTRIBUTES security_attributes,
|
||||
DWORD creation_disposition,
|
||||
DWORD flags_and_attributes, HANDLE template_file);
|
||||
static int64_t
|
||||
_winapi_CreateFile_impl(PyObject *module, const char16_t *file_name,
|
||||
uint32_t desired_access, uint32_t share_mode,
|
||||
struct NtSecurityAttributes *security_attributes,
|
||||
uint32_t creation_disposition,
|
||||
uint32_t flags_and_attributes, int64_t template_file);
|
||||
|
||||
static PyObject *
|
||||
_winapi_CreateFile(PyObject *module, PyObject *args)
|
||||
{
|
||||
PyObject *return_value = NULL;
|
||||
LPCTSTR file_name;
|
||||
DWORD desired_access;
|
||||
DWORD share_mode;
|
||||
LPSECURITY_ATTRIBUTES security_attributes;
|
||||
DWORD creation_disposition;
|
||||
DWORD flags_and_attributes;
|
||||
HANDLE template_file;
|
||||
HANDLE _return_value;
|
||||
const char16_t *file_name;
|
||||
uint32_t desired_access;
|
||||
uint32_t share_mode;
|
||||
struct NtSecurityAttributes *security_attributes;
|
||||
uint32_t creation_disposition;
|
||||
uint32_t flags_and_attributes;
|
||||
int64_t template_file;
|
||||
int64_t _return_value;
|
||||
|
||||
if (!PyArg_ParseTuple(args, "skk" F_POINTER "kk" F_HANDLE ":CreateFile",
|
||||
&file_name, &desired_access, &share_mode, &security_attributes, &creation_disposition, &flags_and_attributes, &template_file)) {
|
||||
goto exit;
|
||||
}
|
||||
_return_value = _winapi_CreateFile_impl(module, file_name, desired_access, share_mode, security_attributes, creation_disposition, flags_and_attributes, template_file);
|
||||
if ((_return_value == INVALID_HANDLE_VALUE) && PyErr_Occurred()) {
|
||||
if ((_return_value == kNtInvalidHandleValue) && PyErr_Occurred()) {
|
||||
goto exit;
|
||||
}
|
||||
if (_return_value == NULL) {
|
||||
if (!_return_value) {
|
||||
Py_RETURN_NONE;
|
||||
}
|
||||
return_value = HANDLE_TO_PYNUM(_return_value);
|
||||
|
@ -177,15 +177,15 @@ PyDoc_STRVAR(_winapi_CreateJunction__doc__,
|
|||
{"CreateJunction", (PyCFunction)_winapi_CreateJunction, METH_VARARGS, _winapi_CreateJunction__doc__},
|
||||
|
||||
static PyObject *
|
||||
_winapi_CreateJunction_impl(PyObject *module, LPWSTR src_path,
|
||||
LPWSTR dst_path);
|
||||
_winapi_CreateJunction_impl(PyObject *module, char16_t *src_path,
|
||||
char16_t *dst_path);
|
||||
|
||||
static PyObject *
|
||||
_winapi_CreateJunction(PyObject *module, PyObject *args)
|
||||
{
|
||||
PyObject *return_value = NULL;
|
||||
LPWSTR src_path;
|
||||
LPWSTR dst_path;
|
||||
char16_t *src_path;
|
||||
char16_t *dst_path;
|
||||
|
||||
if (!PyArg_ParseTuple(args, "uu:CreateJunction",
|
||||
&src_path, &dst_path)) {
|
||||
|
@ -207,36 +207,36 @@ PyDoc_STRVAR(_winapi_CreateNamedPipe__doc__,
|
|||
#define _WINAPI_CREATENAMEDPIPE_METHODDEF \
|
||||
{"CreateNamedPipe", (PyCFunction)_winapi_CreateNamedPipe, METH_VARARGS, _winapi_CreateNamedPipe__doc__},
|
||||
|
||||
static HANDLE
|
||||
_winapi_CreateNamedPipe_impl(PyObject *module, LPCTSTR name, DWORD open_mode,
|
||||
DWORD pipe_mode, DWORD max_instances,
|
||||
DWORD out_buffer_size, DWORD in_buffer_size,
|
||||
DWORD default_timeout,
|
||||
LPSECURITY_ATTRIBUTES security_attributes);
|
||||
static int64_t
|
||||
_winapi_CreateNamedPipe_impl(PyObject *module, const char16_t *name, uint32_t open_mode,
|
||||
uint32_t pipe_mode, uint32_t max_instances,
|
||||
uint32_t out_buffer_size, uint32_t in_buffer_size,
|
||||
uint32_t default_timeout,
|
||||
struct NtSecurityAttributes *security_attributes);
|
||||
|
||||
static PyObject *
|
||||
_winapi_CreateNamedPipe(PyObject *module, PyObject *args)
|
||||
{
|
||||
PyObject *return_value = NULL;
|
||||
LPCTSTR name;
|
||||
DWORD open_mode;
|
||||
DWORD pipe_mode;
|
||||
DWORD max_instances;
|
||||
DWORD out_buffer_size;
|
||||
DWORD in_buffer_size;
|
||||
DWORD default_timeout;
|
||||
LPSECURITY_ATTRIBUTES security_attributes;
|
||||
HANDLE _return_value;
|
||||
const char16_t *name;
|
||||
uint32_t open_mode;
|
||||
uint32_t pipe_mode;
|
||||
uint32_t max_instances;
|
||||
uint32_t out_buffer_size;
|
||||
uint32_t in_buffer_size;
|
||||
uint32_t default_timeout;
|
||||
struct NtSecurityAttributes *security_attributes;
|
||||
int64_t _return_value;
|
||||
|
||||
if (!PyArg_ParseTuple(args, "skkkkkk" F_POINTER ":CreateNamedPipe",
|
||||
&name, &open_mode, &pipe_mode, &max_instances, &out_buffer_size, &in_buffer_size, &default_timeout, &security_attributes)) {
|
||||
goto exit;
|
||||
}
|
||||
_return_value = _winapi_CreateNamedPipe_impl(module, name, open_mode, pipe_mode, max_instances, out_buffer_size, in_buffer_size, default_timeout, security_attributes);
|
||||
if ((_return_value == INVALID_HANDLE_VALUE) && PyErr_Occurred()) {
|
||||
if ((_return_value == kNtInvalidHandleValue) && PyErr_Occurred()) {
|
||||
goto exit;
|
||||
}
|
||||
if (_return_value == NULL) {
|
||||
if (!_return_value) {
|
||||
Py_RETURN_NONE;
|
||||
}
|
||||
return_value = HANDLE_TO_PYNUM(_return_value);
|
||||
|
@ -260,14 +260,14 @@ PyDoc_STRVAR(_winapi_CreatePipe__doc__,
|
|||
{"CreatePipe", (PyCFunction)_winapi_CreatePipe, METH_VARARGS, _winapi_CreatePipe__doc__},
|
||||
|
||||
static PyObject *
|
||||
_winapi_CreatePipe_impl(PyObject *module, PyObject *pipe_attrs, DWORD size);
|
||||
_winapi_CreatePipe_impl(PyObject *module, PyObject *pipe_attrs, uint32_t size);
|
||||
|
||||
static PyObject *
|
||||
_winapi_CreatePipe(PyObject *module, PyObject *args)
|
||||
{
|
||||
PyObject *return_value = NULL;
|
||||
PyObject *pipe_attrs;
|
||||
DWORD size;
|
||||
uint32_t size;
|
||||
|
||||
if (!PyArg_ParseTuple(args, "Ok:CreatePipe",
|
||||
&pipe_attrs, &size)) {
|
||||
|
@ -301,8 +301,8 @@ PyDoc_STRVAR(_winapi_CreateProcess__doc__,
|
|||
static PyObject *
|
||||
_winapi_CreateProcess_impl(PyObject *module, Py_UNICODE *application_name,
|
||||
Py_UNICODE *command_line, PyObject *proc_attrs,
|
||||
PyObject *thread_attrs, BOOL inherit_handles,
|
||||
DWORD creation_flags, PyObject *env_mapping,
|
||||
PyObject *thread_attrs, bool32 inherit_handles,
|
||||
uint32_t creation_flags, PyObject *env_mapping,
|
||||
Py_UNICODE *current_directory,
|
||||
PyObject *startup_info);
|
||||
|
||||
|
@ -314,8 +314,8 @@ _winapi_CreateProcess(PyObject *module, PyObject *args)
|
|||
Py_UNICODE *command_line;
|
||||
PyObject *proc_attrs;
|
||||
PyObject *thread_attrs;
|
||||
BOOL inherit_handles;
|
||||
DWORD creation_flags;
|
||||
bool32 inherit_handles;
|
||||
uint32_t creation_flags;
|
||||
PyObject *env_mapping;
|
||||
Py_UNICODE *current_directory;
|
||||
PyObject *startup_info;
|
||||
|
@ -345,34 +345,34 @@ PyDoc_STRVAR(_winapi_DuplicateHandle__doc__,
|
|||
#define _WINAPI_DUPLICATEHANDLE_METHODDEF \
|
||||
{"DuplicateHandle", (PyCFunction)_winapi_DuplicateHandle, METH_VARARGS, _winapi_DuplicateHandle__doc__},
|
||||
|
||||
static HANDLE
|
||||
_winapi_DuplicateHandle_impl(PyObject *module, HANDLE source_process_handle,
|
||||
HANDLE source_handle,
|
||||
HANDLE target_process_handle,
|
||||
DWORD desired_access, BOOL inherit_handle,
|
||||
DWORD options);
|
||||
static int64_t
|
||||
_winapi_DuplicateHandle_impl(PyObject *module, int64_t source_process_handle,
|
||||
int64_t source_handle,
|
||||
int64_t target_process_handle,
|
||||
uint32_t desired_access, bool32 inherit_handle,
|
||||
uint32_t options);
|
||||
|
||||
static PyObject *
|
||||
_winapi_DuplicateHandle(PyObject *module, PyObject *args)
|
||||
{
|
||||
PyObject *return_value = NULL;
|
||||
HANDLE source_process_handle;
|
||||
HANDLE source_handle;
|
||||
HANDLE target_process_handle;
|
||||
DWORD desired_access;
|
||||
BOOL inherit_handle;
|
||||
DWORD options = 0;
|
||||
HANDLE _return_value;
|
||||
int64_t source_process_handle;
|
||||
int64_t source_handle;
|
||||
int64_t target_process_handle;
|
||||
uint32_t desired_access;
|
||||
bool32 inherit_handle;
|
||||
uint32_t options = 0;
|
||||
int64_t _return_value;
|
||||
|
||||
if (!PyArg_ParseTuple(args, "" F_HANDLE "" F_HANDLE "" F_HANDLE "ki|k:DuplicateHandle",
|
||||
&source_process_handle, &source_handle, &target_process_handle, &desired_access, &inherit_handle, &options)) {
|
||||
goto exit;
|
||||
}
|
||||
_return_value = _winapi_DuplicateHandle_impl(module, source_process_handle, source_handle, target_process_handle, desired_access, inherit_handle, options);
|
||||
if ((_return_value == INVALID_HANDLE_VALUE) && PyErr_Occurred()) {
|
||||
if ((_return_value == kNtInvalidHandleValue) && PyErr_Occurred()) {
|
||||
goto exit;
|
||||
}
|
||||
if (_return_value == NULL) {
|
||||
if (!_return_value) {
|
||||
Py_RETURN_NONE;
|
||||
}
|
||||
return_value = HANDLE_TO_PYNUM(_return_value);
|
||||
|
@ -390,13 +390,13 @@ PyDoc_STRVAR(_winapi_ExitProcess__doc__,
|
|||
{"ExitProcess", (PyCFunction)_winapi_ExitProcess, METH_O, _winapi_ExitProcess__doc__},
|
||||
|
||||
static PyObject *
|
||||
_winapi_ExitProcess_impl(PyObject *module, UINT ExitCode);
|
||||
_winapi_ExitProcess_impl(PyObject *module, unsigned ExitCode);
|
||||
|
||||
static PyObject *
|
||||
_winapi_ExitProcess(PyObject *module, PyObject *arg)
|
||||
{
|
||||
PyObject *return_value = NULL;
|
||||
UINT ExitCode;
|
||||
unsigned ExitCode;
|
||||
|
||||
if (!PyArg_Parse(arg, "I:ExitProcess", &ExitCode)) {
|
||||
goto exit;
|
||||
|
@ -416,20 +416,20 @@ PyDoc_STRVAR(_winapi_GetCurrentProcess__doc__,
|
|||
#define _WINAPI_GETCURRENTPROCESS_METHODDEF \
|
||||
{"GetCurrentProcess", (PyCFunction)_winapi_GetCurrentProcess, METH_NOARGS, _winapi_GetCurrentProcess__doc__},
|
||||
|
||||
static HANDLE
|
||||
static int64_t
|
||||
_winapi_GetCurrentProcess_impl(PyObject *module);
|
||||
|
||||
static PyObject *
|
||||
_winapi_GetCurrentProcess(PyObject *module, PyObject *Py_UNUSED(ignored))
|
||||
{
|
||||
PyObject *return_value = NULL;
|
||||
HANDLE _return_value;
|
||||
int64_t _return_value;
|
||||
|
||||
_return_value = _winapi_GetCurrentProcess_impl(module);
|
||||
if ((_return_value == INVALID_HANDLE_VALUE) && PyErr_Occurred()) {
|
||||
if ((_return_value == kNtInvalidHandleValue) && PyErr_Occurred()) {
|
||||
goto exit;
|
||||
}
|
||||
if (_return_value == NULL) {
|
||||
if (!_return_value) {
|
||||
Py_RETURN_NONE;
|
||||
}
|
||||
return_value = HANDLE_TO_PYNUM(_return_value);
|
||||
|
@ -447,21 +447,21 @@ PyDoc_STRVAR(_winapi_GetExitCodeProcess__doc__,
|
|||
#define _WINAPI_GETEXITCODEPROCESS_METHODDEF \
|
||||
{"GetExitCodeProcess", (PyCFunction)_winapi_GetExitCodeProcess, METH_O, _winapi_GetExitCodeProcess__doc__},
|
||||
|
||||
static DWORD
|
||||
_winapi_GetExitCodeProcess_impl(PyObject *module, HANDLE process);
|
||||
static uint32_t
|
||||
_winapi_GetExitCodeProcess_impl(PyObject *module, int64_t process);
|
||||
|
||||
static PyObject *
|
||||
_winapi_GetExitCodeProcess(PyObject *module, PyObject *arg)
|
||||
{
|
||||
PyObject *return_value = NULL;
|
||||
HANDLE process;
|
||||
DWORD _return_value;
|
||||
int64_t process;
|
||||
uint32_t _return_value;
|
||||
|
||||
if (!PyArg_Parse(arg, "" F_HANDLE ":GetExitCodeProcess", &process)) {
|
||||
goto exit;
|
||||
}
|
||||
_return_value = _winapi_GetExitCodeProcess_impl(module, process);
|
||||
if ((_return_value == DWORD_MAX) && PyErr_Occurred()) {
|
||||
if ((_return_value == UINT_MAX) && PyErr_Occurred()) {
|
||||
goto exit;
|
||||
}
|
||||
return_value = Py_BuildValue("k", _return_value);
|
||||
|
@ -478,17 +478,17 @@ PyDoc_STRVAR(_winapi_GetLastError__doc__,
|
|||
#define _WINAPI_GETLASTERROR_METHODDEF \
|
||||
{"GetLastError", (PyCFunction)_winapi_GetLastError, METH_NOARGS, _winapi_GetLastError__doc__},
|
||||
|
||||
static DWORD
|
||||
static uint32_t
|
||||
_winapi_GetLastError_impl(PyObject *module);
|
||||
|
||||
static PyObject *
|
||||
_winapi_GetLastError(PyObject *module, PyObject *Py_UNUSED(ignored))
|
||||
{
|
||||
PyObject *return_value = NULL;
|
||||
DWORD _return_value;
|
||||
uint32_t _return_value;
|
||||
|
||||
_return_value = _winapi_GetLastError_impl(module);
|
||||
if ((_return_value == DWORD_MAX) && PyErr_Occurred()) {
|
||||
if ((_return_value == UINT_MAX) && PyErr_Occurred()) {
|
||||
goto exit;
|
||||
}
|
||||
return_value = Py_BuildValue("k", _return_value);
|
||||
|
@ -514,19 +514,17 @@ PyDoc_STRVAR(_winapi_GetModuleFileName__doc__,
|
|||
{"GetModuleFileName", (PyCFunction)_winapi_GetModuleFileName, METH_O, _winapi_GetModuleFileName__doc__},
|
||||
|
||||
static PyObject *
|
||||
_winapi_GetModuleFileName_impl(PyObject *module, HMODULE module_handle);
|
||||
_winapi_GetModuleFileName_impl(PyObject *module, int64_t module_handle);
|
||||
|
||||
static PyObject *
|
||||
_winapi_GetModuleFileName(PyObject *module, PyObject *arg)
|
||||
{
|
||||
PyObject *return_value = NULL;
|
||||
HMODULE module_handle;
|
||||
|
||||
int64_t module_handle;
|
||||
if (!PyArg_Parse(arg, "" F_HANDLE ":GetModuleFileName", &module_handle)) {
|
||||
goto exit;
|
||||
}
|
||||
return_value = _winapi_GetModuleFileName_impl(module, module_handle);
|
||||
|
||||
exit:
|
||||
return return_value;
|
||||
}
|
||||
|
@ -538,31 +536,31 @@ PyDoc_STRVAR(_winapi_GetStdHandle__doc__,
|
|||
"Return a handle to the specified standard device.\n"
|
||||
"\n"
|
||||
" std_handle\n"
|
||||
" One of STD_INPUT_HANDLE, STD_OUTPUT_HANDLE, or STD_ERROR_HANDLE.\n"
|
||||
" One of STD_INPUT_int64_t, STD_OUTPUT_int64_t, or STD_ERROR_int64_t.\n"
|
||||
"\n"
|
||||
"The integer associated with the handle object is returned.");
|
||||
|
||||
#define _WINAPI_GETSTDHANDLE_METHODDEF \
|
||||
{"GetStdHandle", (PyCFunction)_winapi_GetStdHandle, METH_O, _winapi_GetStdHandle__doc__},
|
||||
|
||||
static HANDLE
|
||||
_winapi_GetStdHandle_impl(PyObject *module, DWORD std_handle);
|
||||
static int64_t
|
||||
_winapi_GetStdHandle_impl(PyObject *module, uint32_t std_handle);
|
||||
|
||||
static PyObject *
|
||||
_winapi_GetStdHandle(PyObject *module, PyObject *arg)
|
||||
{
|
||||
PyObject *return_value = NULL;
|
||||
DWORD std_handle;
|
||||
HANDLE _return_value;
|
||||
uint32_t std_handle;
|
||||
int64_t _return_value;
|
||||
|
||||
if (!PyArg_Parse(arg, "k:GetStdHandle", &std_handle)) {
|
||||
goto exit;
|
||||
}
|
||||
_return_value = _winapi_GetStdHandle_impl(module, std_handle);
|
||||
if ((_return_value == INVALID_HANDLE_VALUE) && PyErr_Occurred()) {
|
||||
if ((_return_value == kNtInvalidHandleValue) && PyErr_Occurred()) {
|
||||
goto exit;
|
||||
}
|
||||
if (_return_value == NULL) {
|
||||
if (!_return_value) {
|
||||
Py_RETURN_NONE;
|
||||
}
|
||||
return_value = HANDLE_TO_PYNUM(_return_value);
|
||||
|
@ -607,28 +605,28 @@ PyDoc_STRVAR(_winapi_OpenProcess__doc__,
|
|||
#define _WINAPI_OPENPROCESS_METHODDEF \
|
||||
{"OpenProcess", (PyCFunction)_winapi_OpenProcess, METH_VARARGS, _winapi_OpenProcess__doc__},
|
||||
|
||||
static HANDLE
|
||||
_winapi_OpenProcess_impl(PyObject *module, DWORD desired_access,
|
||||
BOOL inherit_handle, DWORD process_id);
|
||||
static int64_t
|
||||
_winapi_OpenProcess_impl(PyObject *module, uint32_t desired_access,
|
||||
bool32 inherit_handle, uint32_t process_id);
|
||||
|
||||
static PyObject *
|
||||
_winapi_OpenProcess(PyObject *module, PyObject *args)
|
||||
{
|
||||
PyObject *return_value = NULL;
|
||||
DWORD desired_access;
|
||||
BOOL inherit_handle;
|
||||
DWORD process_id;
|
||||
HANDLE _return_value;
|
||||
uint32_t desired_access;
|
||||
bool32 inherit_handle;
|
||||
uint32_t process_id;
|
||||
int64_t _return_value;
|
||||
|
||||
if (!PyArg_ParseTuple(args, "kik:OpenProcess",
|
||||
&desired_access, &inherit_handle, &process_id)) {
|
||||
goto exit;
|
||||
}
|
||||
_return_value = _winapi_OpenProcess_impl(module, desired_access, inherit_handle, process_id);
|
||||
if ((_return_value == INVALID_HANDLE_VALUE) && PyErr_Occurred()) {
|
||||
if ((_return_value == kNtInvalidHandleValue) && PyErr_Occurred()) {
|
||||
goto exit;
|
||||
}
|
||||
if (_return_value == NULL) {
|
||||
if (!_return_value) {
|
||||
Py_RETURN_NONE;
|
||||
}
|
||||
return_value = HANDLE_TO_PYNUM(_return_value);
|
||||
|
@ -646,13 +644,13 @@ PyDoc_STRVAR(_winapi_PeekNamedPipe__doc__,
|
|||
{"PeekNamedPipe", (PyCFunction)_winapi_PeekNamedPipe, METH_VARARGS, _winapi_PeekNamedPipe__doc__},
|
||||
|
||||
static PyObject *
|
||||
_winapi_PeekNamedPipe_impl(PyObject *module, HANDLE handle, int size);
|
||||
_winapi_PeekNamedPipe_impl(PyObject *module, int64_t handle, int size);
|
||||
|
||||
static PyObject *
|
||||
_winapi_PeekNamedPipe(PyObject *module, PyObject *args)
|
||||
{
|
||||
PyObject *return_value = NULL;
|
||||
HANDLE handle;
|
||||
int64_t handle;
|
||||
int size = 0;
|
||||
|
||||
if (!PyArg_ParseTuple(args, "" F_HANDLE "|i:PeekNamedPipe",
|
||||
|
@ -674,7 +672,7 @@ PyDoc_STRVAR(_winapi_ReadFile__doc__,
|
|||
{"ReadFile", (PyCFunction)_winapi_ReadFile, METH_FASTCALL, _winapi_ReadFile__doc__},
|
||||
|
||||
static PyObject *
|
||||
_winapi_ReadFile_impl(PyObject *module, HANDLE handle, DWORD size,
|
||||
_winapi_ReadFile_impl(PyObject *module, int64_t handle, uint32_t size,
|
||||
int use_overlapped);
|
||||
|
||||
static PyObject *
|
||||
|
@ -683,8 +681,8 @@ _winapi_ReadFile(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject *
|
|||
PyObject *return_value = NULL;
|
||||
static const char * const _keywords[] = {"handle", "size", "overlapped", NULL};
|
||||
static _PyArg_Parser _parser = {"" F_HANDLE "k|i:ReadFile", _keywords, 0};
|
||||
HANDLE handle;
|
||||
DWORD size;
|
||||
int64_t handle;
|
||||
uint32_t size;
|
||||
int use_overlapped = 0;
|
||||
|
||||
if (!_PyArg_ParseStack(args, nargs, kwnames, &_parser,
|
||||
|
@ -707,7 +705,7 @@ PyDoc_STRVAR(_winapi_SetNamedPipeHandleState__doc__,
|
|||
{"SetNamedPipeHandleState", (PyCFunction)_winapi_SetNamedPipeHandleState, METH_VARARGS, _winapi_SetNamedPipeHandleState__doc__},
|
||||
|
||||
static PyObject *
|
||||
_winapi_SetNamedPipeHandleState_impl(PyObject *module, HANDLE named_pipe,
|
||||
_winapi_SetNamedPipeHandleState_impl(PyObject *module, int64_t named_pipe,
|
||||
PyObject *mode,
|
||||
PyObject *max_collection_count,
|
||||
PyObject *collect_data_timeout);
|
||||
|
@ -716,7 +714,7 @@ static PyObject *
|
|||
_winapi_SetNamedPipeHandleState(PyObject *module, PyObject *args)
|
||||
{
|
||||
PyObject *return_value = NULL;
|
||||
HANDLE named_pipe;
|
||||
int64_t named_pipe;
|
||||
PyObject *mode;
|
||||
PyObject *max_collection_count;
|
||||
PyObject *collect_data_timeout;
|
||||
|
@ -741,15 +739,15 @@ PyDoc_STRVAR(_winapi_TerminateProcess__doc__,
|
|||
{"TerminateProcess", (PyCFunction)_winapi_TerminateProcess, METH_VARARGS, _winapi_TerminateProcess__doc__},
|
||||
|
||||
static PyObject *
|
||||
_winapi_TerminateProcess_impl(PyObject *module, HANDLE handle,
|
||||
UINT exit_code);
|
||||
_winapi_TerminateProcess_impl(PyObject *module, int64_t handle,
|
||||
unsigned exit_code);
|
||||
|
||||
static PyObject *
|
||||
_winapi_TerminateProcess(PyObject *module, PyObject *args)
|
||||
{
|
||||
PyObject *return_value = NULL;
|
||||
HANDLE handle;
|
||||
UINT exit_code;
|
||||
int64_t handle;
|
||||
unsigned exit_code;
|
||||
|
||||
if (!PyArg_ParseTuple(args, "" F_HANDLE "I:TerminateProcess",
|
||||
&handle, &exit_code)) {
|
||||
|
@ -770,14 +768,14 @@ PyDoc_STRVAR(_winapi_WaitNamedPipe__doc__,
|
|||
{"WaitNamedPipe", (PyCFunction)_winapi_WaitNamedPipe, METH_VARARGS, _winapi_WaitNamedPipe__doc__},
|
||||
|
||||
static PyObject *
|
||||
_winapi_WaitNamedPipe_impl(PyObject *module, LPCTSTR name, DWORD timeout);
|
||||
_winapi_WaitNamedPipe_impl(PyObject *module, const char *name, uint32_t timeout);
|
||||
|
||||
static PyObject *
|
||||
_winapi_WaitNamedPipe(PyObject *module, PyObject *args)
|
||||
{
|
||||
PyObject *return_value = NULL;
|
||||
LPCTSTR name;
|
||||
DWORD timeout;
|
||||
const char *name;
|
||||
uint32_t timeout;
|
||||
|
||||
if (!PyArg_ParseTuple(args, "sk:WaitNamedPipe",
|
||||
&name, &timeout)) {
|
||||
|
@ -800,15 +798,15 @@ PyDoc_STRVAR(_winapi_WaitForMultipleObjects__doc__,
|
|||
|
||||
static PyObject *
|
||||
_winapi_WaitForMultipleObjects_impl(PyObject *module, PyObject *handle_seq,
|
||||
BOOL wait_flag, DWORD milliseconds);
|
||||
bool32 wait_flag, uint32_t milliseconds);
|
||||
|
||||
static PyObject *
|
||||
_winapi_WaitForMultipleObjects(PyObject *module, PyObject *args)
|
||||
{
|
||||
PyObject *return_value = NULL;
|
||||
PyObject *handle_seq;
|
||||
BOOL wait_flag;
|
||||
DWORD milliseconds = INFINITE;
|
||||
bool32 wait_flag;
|
||||
uint32_t milliseconds = -1;
|
||||
|
||||
if (!PyArg_ParseTuple(args, "Oi|k:WaitForMultipleObjects",
|
||||
&handle_seq, &wait_flag, &milliseconds)) {
|
||||
|
@ -834,15 +832,15 @@ PyDoc_STRVAR(_winapi_WaitForSingleObject__doc__,
|
|||
{"WaitForSingleObject", (PyCFunction)_winapi_WaitForSingleObject, METH_VARARGS, _winapi_WaitForSingleObject__doc__},
|
||||
|
||||
static long
|
||||
_winapi_WaitForSingleObject_impl(PyObject *module, HANDLE handle,
|
||||
DWORD milliseconds);
|
||||
_winapi_WaitForSingleObject_impl(PyObject *module, int64_t handle,
|
||||
uint32_t milliseconds);
|
||||
|
||||
static PyObject *
|
||||
_winapi_WaitForSingleObject(PyObject *module, PyObject *args)
|
||||
{
|
||||
PyObject *return_value = NULL;
|
||||
HANDLE handle;
|
||||
DWORD milliseconds;
|
||||
int64_t handle;
|
||||
uint32_t milliseconds;
|
||||
long _return_value;
|
||||
|
||||
if (!PyArg_ParseTuple(args, "" F_HANDLE "k:WaitForSingleObject",
|
||||
|
@ -868,7 +866,7 @@ PyDoc_STRVAR(_winapi_WriteFile__doc__,
|
|||
{"WriteFile", (PyCFunction)_winapi_WriteFile, METH_FASTCALL, _winapi_WriteFile__doc__},
|
||||
|
||||
static PyObject *
|
||||
_winapi_WriteFile_impl(PyObject *module, HANDLE handle, PyObject *buffer,
|
||||
_winapi_WriteFile_impl(PyObject *module, int64_t handle, PyObject *buffer,
|
||||
int use_overlapped);
|
||||
|
||||
static PyObject *
|
||||
|
@ -877,7 +875,7 @@ _winapi_WriteFile(PyObject *module, PyObject **args, Py_ssize_t nargs, PyObject
|
|||
PyObject *return_value = NULL;
|
||||
static const char * const _keywords[] = {"handle", "buffer", "overlapped", NULL};
|
||||
static _PyArg_Parser _parser = {"" F_HANDLE "O|i:WriteFile", _keywords, 0};
|
||||
HANDLE handle;
|
||||
int64_t handle;
|
||||
PyObject *buffer;
|
||||
int use_overlapped = 0;
|
||||
|
||||
|
|
6
third_party/python/Modules/cmathmodule.c
vendored
6
third_party/python/Modules/cmathmodule.c
vendored
|
@ -11,6 +11,7 @@
|
|||
#include "third_party/python/Include/complexobject.h"
|
||||
#include "third_party/python/Include/dtoa.h"
|
||||
#include "third_party/python/Include/floatobject.h"
|
||||
#include "third_party/python/Include/import.h"
|
||||
#include "third_party/python/Include/modsupport.h"
|
||||
#include "third_party/python/Include/object.h"
|
||||
#include "third_party/python/Include/pyerrors.h"
|
||||
|
@ -1456,3 +1457,8 @@ PyInit_cmath(void)
|
|||
})
|
||||
return m;
|
||||
}
|
||||
|
||||
_Section(".rodata.pytab.1") const struct _inittab _PyImport_Inittab_cmath = {
|
||||
"cmath",
|
||||
PyInit_cmath,
|
||||
};
|
||||
|
|
267
third_party/python/Modules/config.c
vendored
267
third_party/python/Modules/config.c
vendored
|
@ -4,216 +4,111 @@
|
|||
│ Python 3 │
|
||||
│ https://docs.python.org/3/license.html │
|
||||
╚─────────────────────────────────────────────────────────────────────────────*/
|
||||
#include "third_party/python/Include/Python.h"
|
||||
#include "third_party/python/Include/cosmo.h"
|
||||
#include "third_party/python/Include/import.h"
|
||||
#include "third_party/python/Include/pyport.h"
|
||||
/* clang-format off */
|
||||
|
||||
/* Generated automatically from ./Modules/config.c.in by makesetup. */
|
||||
/* -*- C -*- ***********************************************
|
||||
Copyright (c) 2000, BeOpen.com.
|
||||
Copyright (c) 1995-2000, Corporation for National Research Initiatives.
|
||||
Copyright (c) 1990-1995, Stichting Mathematisch Centrum.
|
||||
All rights reserved.
|
||||
|
||||
See the file "Misc/COPYRIGHT" for information on usage and
|
||||
redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||
******************************************************************/
|
||||
|
||||
/* Module configuration */
|
||||
|
||||
/* !!! !!! !!! This file is edited by the makesetup script !!! !!! !!! */
|
||||
|
||||
/* This file contains the table of built-in modules.
|
||||
See create_builtin() in import.c. */
|
||||
|
||||
#include "third_party/python/Include/pyport.h"
|
||||
#include "third_party/python/Include/pyport.h"
|
||||
#include "third_party/python/Include/Python.h"
|
||||
#include "third_party/python/Include/import.h"
|
||||
#include "third_party/python/Include/cosmo.h"
|
||||
|
||||
PyObject* PyInit__decimal(void);
|
||||
PyObject* PyInit_audioop(void);
|
||||
PyObject* PyInit_posix(void);
|
||||
PyObject* PyInit_errno(void);
|
||||
PyObject* PyInit_pwd(void);
|
||||
PyObject* PyInit__sre(void);
|
||||
PyObject* PyInit__codecs(void);
|
||||
PyObject* PyInit__functools(void);
|
||||
PyObject* PyInit__operator(void);
|
||||
PyObject* PyInit__collections(void);
|
||||
PyObject* PyInit_itertools(void);
|
||||
PyObject* PyInit_atexit(void);
|
||||
PyObject* PyInit__signal(void);
|
||||
PyObject* PyInit__stat(void);
|
||||
PyObject* PyInit_time(void);
|
||||
PyObject* PyInit__locale(void);
|
||||
PyObject* PyInit__io(void);
|
||||
PyObject* PyInit_zipimport(void);
|
||||
PyObject* PyInit_faulthandler(void);
|
||||
PyObject* PyInit__hashlib(void);
|
||||
#ifdef MODE_DBG
|
||||
PyObject* PyInit__tracemalloc(void);
|
||||
#endif
|
||||
PyObject* PyInit__symtable(void);
|
||||
PyObject* PyInit_array(void);
|
||||
PyObject* PyInit_cmath(void);
|
||||
PyObject* PyInit_math(void);
|
||||
PyObject* PyInit__struct(void);
|
||||
PyObject* PyInit__weakref(void);
|
||||
PyObject* PyInit__testcapi(void);
|
||||
PyObject* PyInit__random(void);
|
||||
PyObject* PyInit__elementtree(void);
|
||||
PyObject* PyInit__pickle(void);
|
||||
PyObject* PyInit__datetime(void);
|
||||
PyObject* PyInit__bisect(void);
|
||||
PyObject* PyInit__heapq(void);
|
||||
PyObject* PyInit_unicodedata(void);
|
||||
PyObject* PyInit_fcntl(void);
|
||||
PyObject* PyInit__bz2(void);
|
||||
PyObject* PyInit_grp(void);
|
||||
PyObject* PyInit_select(void);
|
||||
PyObject* PyInit_mmap(void);
|
||||
PyObject* PyInit__csv(void);
|
||||
PyObject* PyInit__socket(void);
|
||||
PyObject* PyInit_resource(void);
|
||||
PyObject* PyInit__posixsubprocess(void);
|
||||
PyObject* PyInit__multiprocessing(void);
|
||||
PyObject* PyInit__md5(void);
|
||||
PyObject* PyInit__sha1(void);
|
||||
PyObject* PyInit__sha256(void);
|
||||
PyObject* PyInit__sha512(void);
|
||||
PyObject* PyInit__sha3(void);
|
||||
PyObject* PyInit_syslog(void);
|
||||
PyObject* PyInit_binascii(void);
|
||||
PyObject* PyInit_parser(void);
|
||||
PyObject* PyInit_fpectl(void);
|
||||
PyObject* PyInit_zlib(void);
|
||||
PyObject* PyInit_pyexpat(void);
|
||||
PyObject* PyInit__multibytecodec(void);
|
||||
PyObject* PyInit__codecs_cn(void);
|
||||
PyObject* PyInit__codecs_hk(void);
|
||||
PyObject* PyInit__codecs_iso2022(void);
|
||||
PyObject* PyInit__codecs_jp(void);
|
||||
PyObject* PyInit__codecs_kr(void);
|
||||
PyObject* PyInit__codecs_tw(void);
|
||||
PyObject* PyInit__json(void);
|
||||
PyObject* PyInit__lsprof(void);
|
||||
PyObject* PyInit__opcode(void);
|
||||
PyObject* PyInit_termios(void);
|
||||
PyObject *PyInit__ast(void);
|
||||
PyObject *PyInit__bisect(void);
|
||||
PyObject *PyInit__bz2(void);
|
||||
PyObject *PyInit__codecs(void);
|
||||
PyObject *PyInit__codecs_cn(void);
|
||||
PyObject *PyInit__codecs_hk(void);
|
||||
PyObject *PyInit__codecs_iso2022(void);
|
||||
PyObject *PyInit__codecs_jp(void);
|
||||
PyObject *PyInit__codecs_kr(void);
|
||||
PyObject *PyInit__codecs_tw(void);
|
||||
PyObject *PyInit__collections(void);
|
||||
PyObject *PyInit__csv(void);
|
||||
PyObject *PyInit__datetime(void);
|
||||
PyObject *PyInit__decimal(void);
|
||||
PyObject *PyInit__elementtree(void);
|
||||
PyObject *PyInit__functools(void);
|
||||
PyObject *PyInit__hashlib(void);
|
||||
PyObject *PyInit__heapq(void);
|
||||
PyObject *PyInit__io(void);
|
||||
PyObject *PyInit__json(void);
|
||||
PyObject *PyInit__locale(void);
|
||||
PyObject *PyInit__lsprof(void);
|
||||
PyObject *PyInit__md5(void);
|
||||
PyObject *PyInit__multibytecodec(void);
|
||||
PyObject *PyInit__multiprocessing(void);
|
||||
PyObject *PyInit__opcode(void);
|
||||
PyObject *PyInit__operator(void);
|
||||
PyObject *PyInit__pickle(void);
|
||||
PyObject *PyInit__posixsubprocess(void);
|
||||
PyObject *PyInit__random(void);
|
||||
PyObject *PyInit__sha1(void);
|
||||
PyObject *PyInit__sha256(void);
|
||||
PyObject *PyInit__sha3(void);
|
||||
PyObject *PyInit__sha512(void);
|
||||
PyObject *PyInit__signal(void);
|
||||
PyObject *PyInit__socket(void);
|
||||
PyObject *PyInit__sqlite3(void);
|
||||
PyObject *PyInit__sre(void);
|
||||
PyObject *PyInit__stat(void);
|
||||
PyObject *PyInit__string(void);
|
||||
PyObject *PyInit__struct(void);
|
||||
PyObject *PyInit__symtable(void);
|
||||
PyObject *PyInit__testcapi(void);
|
||||
PyObject *PyInit__tracemalloc(void);
|
||||
PyObject *PyInit__weakref(void);
|
||||
PyObject *PyInit_array(void);
|
||||
PyObject *PyInit_atexit(void);
|
||||
PyObject *PyInit_audioop(void);
|
||||
PyObject *PyInit_binascii(void);
|
||||
PyObject *PyInit_cmath(void);
|
||||
PyObject *PyInit_cosmo(void);
|
||||
PyObject *PyInit_errno(void);
|
||||
PyObject *PyInit_faulthandler(void);
|
||||
PyObject *PyInit_fcntl(void);
|
||||
PyObject *PyInit_fpectl(void);
|
||||
PyObject *PyInit_gc(void);
|
||||
PyObject *PyInit_grp(void);
|
||||
PyObject *PyInit_imp(void);
|
||||
PyObject *PyInit_itertools(void);
|
||||
PyObject *PyInit_math(void);
|
||||
PyObject *PyInit_mmap(void);
|
||||
PyObject *PyInit_parser(void);
|
||||
PyObject *PyInit_posix(void);
|
||||
PyObject *PyInit_pwd(void);
|
||||
PyObject *PyInit_pyexpat(void);
|
||||
PyObject *PyInit_resource(void);
|
||||
PyObject *PyInit_select(void);
|
||||
PyObject *PyInit_syslog(void);
|
||||
PyObject *PyInit_termios(void);
|
||||
PyObject *PyInit_time(void);
|
||||
PyObject *PyInit_unicodedata(void);
|
||||
PyObject *PyInit_zipimport(void);
|
||||
PyObject *PyInit_zlib(void);
|
||||
PyObject *PyMarshal_Init(void);
|
||||
PyObject *_PyWarnings_Init(void);
|
||||
|
||||
/* -- ADDMODULE MARKER 1 -- */
|
||||
|
||||
PyObject* PyMarshal_Init(void);
|
||||
PyObject* PyInit_imp(void);
|
||||
PyObject* PyInit_cosmo(void);
|
||||
PyObject* PyInit_gc(void);
|
||||
PyObject* PyInit__ast(void);
|
||||
PyObject* _PyWarnings_Init(void);
|
||||
PyObject* PyInit__string(void);
|
||||
|
||||
struct _inittab _PyImport_Inittab[] = {
|
||||
|
||||
{"_decimal", PyInit__decimal},
|
||||
_Alignas(16) _Section(".rodata.pytab.0") const struct _inittab _PyImport_Inittab[0];
|
||||
_Alignas(16) _Section(".rodata.pytab.2") const struct _inittab _PyImport_Inittab2[] = {
|
||||
{"posix", PyInit_posix},
|
||||
{"errno", PyInit_errno},
|
||||
{"pwd", PyInit_pwd},
|
||||
{"_sre", PyInit__sre},
|
||||
{"_codecs", PyInit__codecs},
|
||||
{"_functools", PyInit__functools},
|
||||
{"_operator", PyInit__operator},
|
||||
{"_collections", PyInit__collections},
|
||||
{"itertools", PyInit_itertools},
|
||||
{"atexit", PyInit_atexit},
|
||||
{"_signal", PyInit__signal},
|
||||
{"_stat", PyInit__stat},
|
||||
{"time", PyInit_time},
|
||||
{"_locale", PyInit__locale},
|
||||
{"_io", PyInit__io},
|
||||
{"faulthandler", PyInit_faulthandler},
|
||||
#ifdef USE_TRACEMALLOC
|
||||
{"_tracemalloc", PyInit__tracemalloc},
|
||||
#endif
|
||||
{"_symtable", PyInit__symtable},
|
||||
{"_hashlib", PyInit__hashlib},
|
||||
{"_bz2module", PyInit__bz2},
|
||||
{"array", PyInit_array},
|
||||
{"cmath", PyInit_cmath},
|
||||
{"math", PyInit_math},
|
||||
{"_struct", PyInit__struct},
|
||||
{"_weakref", PyInit__weakref},
|
||||
{"_testcapi", PyInit__testcapi},
|
||||
{"_random", PyInit__random},
|
||||
{"_pickle", PyInit__pickle},
|
||||
{"_datetime", PyInit__datetime},
|
||||
{"_bisect", PyInit__bisect},
|
||||
{"_heapq", PyInit__heapq},
|
||||
{"unicodedata", PyInit_unicodedata},
|
||||
{"fcntl", PyInit_fcntl},
|
||||
{"grp", PyInit_grp},
|
||||
{"select", PyInit_select},
|
||||
{"mmap", PyInit_mmap},
|
||||
{"_csv", PyInit__csv},
|
||||
{"_socket", PyInit__socket},
|
||||
{"resource", PyInit_resource},
|
||||
{"_posixsubprocess", PyInit__posixsubprocess},
|
||||
{"_multiprocessing", PyInit__multiprocessing},
|
||||
{"_md5", PyInit__md5},
|
||||
{"_sha1", PyInit__sha1},
|
||||
{"_sha256", PyInit__sha256},
|
||||
{"_sha512", PyInit__sha512},
|
||||
{"_sha3", PyInit__sha3},
|
||||
{"syslog", PyInit_syslog},
|
||||
{"binascii", PyInit_binascii},
|
||||
{"parser", PyInit_parser},
|
||||
{"fpectl", PyInit_fpectl},
|
||||
{"pyexpat", PyInit_pyexpat},
|
||||
{"_multibytecodec", PyInit__multibytecodec},
|
||||
{"_json", PyInit__json},
|
||||
{"_opcode", PyInit__opcode},
|
||||
{"termios", PyInit_termios},
|
||||
|
||||
#if !IsTiny()
|
||||
{"zlib", PyInit_zlib},
|
||||
{"sqlite3", PyInit__sqlite3},
|
||||
{"zipimport", PyInit_zipimport},
|
||||
{"_elementtree", PyInit__elementtree},
|
||||
{"_codecs_cn", PyInit__codecs_cn},
|
||||
{"_codecs_hk", PyInit__codecs_hk},
|
||||
{"_codecs_iso2022", PyInit__codecs_iso2022},
|
||||
{"_codecs_jp", PyInit__codecs_jp},
|
||||
{"_codecs_kr", PyInit__codecs_kr},
|
||||
{"_codecs_tw", PyInit__codecs_tw},
|
||||
{"audioop", PyInit_audioop},
|
||||
{"_lsprof", PyInit__lsprof},
|
||||
#endif
|
||||
|
||||
/* -- ADDMODULE MARKER 2 -- */
|
||||
|
||||
/* This module lives in marshal.c */
|
||||
{"marshal", PyMarshal_Init},
|
||||
|
||||
/* This lives in import.c */
|
||||
{"_imp", PyInit_imp},
|
||||
|
||||
/* This lives in cosmomodule.c */
|
||||
{"_cosmo", PyInit_cosmo},
|
||||
|
||||
/* This lives in Python/Python-ast.c */
|
||||
{"_ast", PyInit__ast},
|
||||
|
||||
/* These entries are here for sys.builtin_module_names */
|
||||
{"builtins", NULL},
|
||||
{"sys", NULL},
|
||||
|
||||
/* This lives in gcmodule.c */
|
||||
{"gc", PyInit_gc},
|
||||
|
||||
/* This lives in _warnings.c */
|
||||
{"_warnings", _PyWarnings_Init},
|
||||
|
||||
/* This lives in Objects/unicodeobject.c */
|
||||
{"_warnings", _PyWarnings_Init},
|
||||
{"_string", PyInit__string},
|
||||
|
||||
/* Sentinel */
|
||||
{0, 0}
|
||||
};
|
||||
|
|
1
third_party/python/Modules/errnomodule.c
vendored
1
third_party/python/Modules/errnomodule.c
vendored
|
@ -8,6 +8,7 @@
|
|||
#include "libc/errno.h"
|
||||
#include "libc/nt/errors.h"
|
||||
#include "third_party/python/Include/dictobject.h"
|
||||
#include "third_party/python/Include/import.h"
|
||||
#include "third_party/python/Include/longobject.h"
|
||||
#include "third_party/python/Include/methodobject.h"
|
||||
#include "third_party/python/Include/modsupport.h"
|
||||
|
|
5
third_party/python/Modules/faulthandler.c
vendored
5
third_party/python/Modules/faulthandler.c
vendored
|
@ -1436,3 +1436,8 @@ void _PyFaulthandler_Fini(void)
|
|||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
_Section(".rodata.pytab.1") const struct _inittab _PyImport_Inittab_faulthandler = {
|
||||
"faulthandler",
|
||||
PyInit_faulthandler,
|
||||
};
|
||||
|
|
6
third_party/python/Modules/fcntlmodule.c
vendored
6
third_party/python/Modules/fcntlmodule.c
vendored
|
@ -16,6 +16,7 @@
|
|||
#include "third_party/python/Include/bytesobject.h"
|
||||
#include "third_party/python/Include/ceval.h"
|
||||
#include "third_party/python/Include/fileobject.h"
|
||||
#include "third_party/python/Include/import.h"
|
||||
#include "third_party/python/Include/longobject.h"
|
||||
#include "third_party/python/Include/modsupport.h"
|
||||
#include "third_party/python/Include/object.h"
|
||||
|
@ -697,3 +698,8 @@ PyInit_fcntl(void)
|
|||
|
||||
return m;
|
||||
}
|
||||
|
||||
_Section(".rodata.pytab.1") const struct _inittab _PyImport_Inittab_fcntl = {
|
||||
"fcntl",
|
||||
PyInit_fcntl,
|
||||
};
|
||||
|
|
6
third_party/python/Modules/fpectlmodule.c
vendored
6
third_party/python/Modules/fpectlmodule.c
vendored
|
@ -6,6 +6,7 @@
|
|||
╚─────────────────────────────────────────────────────────────────────────────*/
|
||||
#include "libc/runtime/runtime.h"
|
||||
#include "third_party/python/Include/dictobject.h"
|
||||
#include "third_party/python/Include/import.h"
|
||||
#include "third_party/python/Include/methodobject.h"
|
||||
#include "third_party/python/Include/modsupport.h"
|
||||
#include "third_party/python/Include/moduleobject.h"
|
||||
|
@ -275,3 +276,8 @@ PyMODINIT_FUNC PyInit_fpectl(void)
|
|||
PyDict_SetItemString(d, "error", fpe_error);
|
||||
return m;
|
||||
}
|
||||
|
||||
_Section(".rodata.pytab.1") const struct _inittab _PyImport_Inittab_fpectl = {
|
||||
"fpectl",
|
||||
PyInit_fpectl,
|
||||
};
|
||||
|
|
17
third_party/python/Modules/getpath.c
vendored
17
third_party/python/Modules/getpath.c
vendored
|
@ -8,6 +8,7 @@
|
|||
#include "libc/calls/calls.h"
|
||||
#include "libc/calls/struct/stat.h"
|
||||
#include "libc/errno.h"
|
||||
#include "libc/log/log.h"
|
||||
#include "libc/mem/alloca.h"
|
||||
#include "libc/mem/mem.h"
|
||||
#include "libc/runtime/gc.internal.h"
|
||||
|
@ -125,12 +126,12 @@ wchar_t *Py_GetProgramName(void);
|
|||
#define LANDMARK L"os.py"
|
||||
#endif
|
||||
|
||||
static const wchar_t limited_search_path[] = L"/zip/.python";
|
||||
#define LIMITED_SEARCH_PATH L"/zip/.python"
|
||||
|
||||
static wchar_t *progpath;
|
||||
static wchar_t *prefix = limited_search_path;
|
||||
static wchar_t *exec_prefix = limited_search_path;
|
||||
static wchar_t *module_search_path = limited_search_path;
|
||||
static wchar_t *prefix = LIMITED_SEARCH_PATH;
|
||||
static wchar_t *exec_prefix = LIMITED_SEARCH_PATH;
|
||||
static wchar_t *module_search_path = LIMITED_SEARCH_PATH;
|
||||
|
||||
/* Get file status. Encode the path to the locale encoding. */
|
||||
|
||||
|
@ -667,3 +668,11 @@ Py_GetProgramFullPath(void)
|
|||
}
|
||||
return progpath;
|
||||
}
|
||||
|
||||
void
|
||||
Py_LimitedPath(void)
|
||||
{
|
||||
prefix = wcscpy(PyMem_RawMalloc((wcslen(LIMITED_SEARCH_PATH) + 1) * 4), LIMITED_SEARCH_PATH);
|
||||
exec_prefix = wcscpy(PyMem_RawMalloc((wcslen(LIMITED_SEARCH_PATH) + 1) * 4), LIMITED_SEARCH_PATH);
|
||||
module_search_path = wcscpy(PyMem_RawMalloc((wcslen(LIMITED_SEARCH_PATH) + 1) * 4), LIMITED_SEARCH_PATH);
|
||||
}
|
||||
|
|
6
third_party/python/Modules/grpmodule.c
vendored
6
third_party/python/Modules/grpmodule.c
vendored
|
@ -8,6 +8,7 @@
|
|||
#include "third_party/python/Include/abstract.h"
|
||||
#include "third_party/python/Include/bytesobject.h"
|
||||
#include "third_party/python/Include/dictobject.h"
|
||||
#include "third_party/python/Include/import.h"
|
||||
#include "third_party/python/Include/listobject.h"
|
||||
#include "third_party/python/Include/modsupport.h"
|
||||
#include "third_party/python/Include/object.h"
|
||||
|
@ -276,3 +277,8 @@ PyInit_grp(void)
|
|||
initialized = 1;
|
||||
return m;
|
||||
}
|
||||
|
||||
_Section(".rodata.pytab.1") const struct _inittab _PyImport_Inittab_grp = {
|
||||
"grp",
|
||||
PyInit_grp,
|
||||
};
|
||||
|
|
5
third_party/python/Modules/hashtable.c
vendored
5
third_party/python/Modules/hashtable.c
vendored
|
@ -9,6 +9,11 @@
|
|||
#include "third_party/python/Modules/hashtable.h"
|
||||
/* clang-format off */
|
||||
|
||||
asm(".ident\t\"\\n\\n\
|
||||
cfuhash (bsd-3)\\n\
|
||||
Copyright (c) 2005 Don Owens\"");
|
||||
asm(".include \"libc/disclaimer.inc\"");
|
||||
|
||||
/* The implementation of the hash table (_Py_hashtable_t) is based on the
|
||||
cfuhash project:
|
||||
http://sourceforge.net/projects/libcfu/
|
||||
|
|
1
third_party/python/Modules/itertoolsmodule.c
vendored
1
third_party/python/Modules/itertoolsmodule.c
vendored
|
@ -8,6 +8,7 @@
|
|||
#include "third_party/python/Include/abstract.h"
|
||||
#include "third_party/python/Include/boolobject.h"
|
||||
#include "third_party/python/Include/dictobject.h"
|
||||
#include "third_party/python/Include/import.h"
|
||||
#include "third_party/python/Include/longobject.h"
|
||||
#include "third_party/python/Include/modsupport.h"
|
||||
#include "third_party/python/Include/objimpl.h"
|
||||
|
|
6
third_party/python/Modules/mathmodule.c
vendored
6
third_party/python/Modules/mathmodule.c
vendored
|
@ -11,6 +11,7 @@
|
|||
#include "third_party/python/Include/boolobject.h"
|
||||
#include "third_party/python/Include/dtoa.h"
|
||||
#include "third_party/python/Include/floatobject.h"
|
||||
#include "third_party/python/Include/import.h"
|
||||
#include "third_party/python/Include/longobject.h"
|
||||
#include "third_party/python/Include/modsupport.h"
|
||||
#include "third_party/python/Include/pyerrors.h"
|
||||
|
@ -2227,3 +2228,8 @@ PyInit_math(void)
|
|||
finally:
|
||||
return m;
|
||||
}
|
||||
|
||||
_Section(".rodata.pytab.1") const struct _inittab _PyImport_Inittab_math = {
|
||||
"math",
|
||||
PyInit_math,
|
||||
};
|
||||
|
|
6
third_party/python/Modules/md5module.c
vendored
6
third_party/python/Modules/md5module.c
vendored
|
@ -8,6 +8,7 @@
|
|||
#include "third_party/python/Include/abstract.h"
|
||||
#include "third_party/python/Include/bytesobject.h"
|
||||
#include "third_party/python/Include/descrobject.h"
|
||||
#include "third_party/python/Include/import.h"
|
||||
#include "third_party/python/Include/longobject.h"
|
||||
#include "third_party/python/Include/modsupport.h"
|
||||
#include "third_party/python/Include/objimpl.h"
|
||||
|
@ -596,3 +597,8 @@ PyInit__md5(void)
|
|||
PyModule_AddObject(m, "MD5Type", (PyObject *)&MD5type);
|
||||
return m;
|
||||
}
|
||||
|
||||
_Section(".rodata.pytab.1") const struct _inittab _PyImport_Inittab__md5 = {
|
||||
"_md5",
|
||||
PyInit__md5,
|
||||
};
|
||||
|
|
6
third_party/python/Modules/mmapmodule.c
vendored
6
third_party/python/Modules/mmapmodule.c
vendored
|
@ -18,6 +18,7 @@
|
|||
#include "third_party/python/Include/descrobject.h"
|
||||
#include "third_party/python/Include/dictobject.h"
|
||||
#include "third_party/python/Include/fileutils.h"
|
||||
#include "third_party/python/Include/import.h"
|
||||
#include "third_party/python/Include/longobject.h"
|
||||
#include "third_party/python/Include/modsupport.h"
|
||||
#include "third_party/python/Include/objimpl.h"
|
||||
|
@ -1491,3 +1492,8 @@ PyInit_mmap(void)
|
|||
setint(dict, "ACCESS_COPY", ACCESS_COPY);
|
||||
return module;
|
||||
}
|
||||
|
||||
_Section(".rodata.pytab.1") const struct _inittab _PyImport_Inittab_mmap = {
|
||||
"mmap",
|
||||
PyInit_mmap,
|
||||
};
|
||||
|
|
5
third_party/python/Modules/parsermodule.c
vendored
5
third_party/python/Modules/parsermodule.c
vendored
|
@ -1253,3 +1253,8 @@ PyInit_parser(void)
|
|||
}
|
||||
return module;
|
||||
}
|
||||
|
||||
_Section(".rodata.pytab.1") const struct _inittab _PyImport_Inittab_parser = {
|
||||
"parser",
|
||||
PyInit_parser,
|
||||
};
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Reference in a new issue