Get string operations working on 3ds

This commit is contained in:
Andrew Glaze
2025-12-07 12:45:22 -05:00
parent d943c2d074
commit 0acb7c74db
21 changed files with 30432 additions and 23 deletions

View File

@@ -7,7 +7,9 @@ DerivedData/
.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata
.netrc
.sourcekit-lsp/
build/
lib/
*.3dsx
*.elf
*.smdh

1
.swift-version Normal file
View File

@@ -0,0 +1 @@
main-snapshot-2025-12-01

122
Shared/Makefile Normal file
View File

@@ -0,0 +1,122 @@
#---------------------------------------------------------------------------------
.SUFFIXES:
#---------------------------------------------------------------------------------
ifeq ($(strip $(DEVKITARM)),)
$(error "Please set DEVKITARM in your environment. export DEVKITARM=<path to>devkitARM")
endif
include $(DEVKITARM)/3ds_rules
#---------------------------------------------------------------------------------
# TARGET is the name of the output
# BUILD is the directory where object files & intermediate files will be placed
# SOURCES is a list of directories containing source code
# DATA is a list of directories containing data files
# INCLUDES is a list of directories containing header files
#---------------------------------------------------------------------------------
TARGET := $(shell basename $(CURDIR))
BUILD := build
SOURCES := source
DATA := data
INCLUDES := include
#---------------------------------------------------------------------------------
# options for code generation
#---------------------------------------------------------------------------------
ARCH := -march=armv6k -mtune=mpcore -mfloat-abi=hard -mtp=soft
CFLAGS := -g -Wall -O2 -mword-relocations \
-ffunction-sections \
$(ARCH)
CFLAGS += $(INCLUDE) -D__3DS__
CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions
ASFLAGS := -g $(ARCH)
#---------------------------------------------------------------------------------
# list of directories containing libraries, this must be the top level containing
# include and lib
#---------------------------------------------------------------------------------
LIBDIRS := $(CTRULIB)
#---------------------------------------------------------------------------------
# no real need to edit anything past this point unless you need to add additional
# rules for different file extensions
#---------------------------------------------------------------------------------
ifneq ($(BUILD),$(notdir $(CURDIR)))
#---------------------------------------------------------------------------------
export OUTPUT := $(CURDIR)/lib/lib$(TARGET).a
export VPATH := $(foreach dir,$(SOURCES),$(CURDIR)/$(dir)) \
$(foreach dir,$(DATA),$(CURDIR)/$(dir))
export DEPSDIR := $(CURDIR)/$(BUILD)
CFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.c)))
CPPFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.cpp)))
SFILES := $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.s)))
BINFILES := $(foreach dir,$(DATA),$(notdir $(wildcard $(dir)/*.*)))
#---------------------------------------------------------------------------------
# use CXX for linking C++ projects, CC for standard C
#---------------------------------------------------------------------------------
ifeq ($(strip $(CPPFILES)),)
#---------------------------------------------------------------------------------
export LD := $(CC)
#---------------------------------------------------------------------------------
else
#---------------------------------------------------------------------------------
export LD := $(CXX)
#---------------------------------------------------------------------------------
endif
#---------------------------------------------------------------------------------
export OFILES := $(addsuffix .o,$(BINFILES)) \
$(CPPFILES:.cpp=.o) $(CFILES:.c=.o) $(SFILES:.s=.o)
export INCLUDE := $(foreach dir,$(INCLUDES),-I$(CURDIR)/$(dir)) \
$(foreach dir,$(LIBDIRS),-I$(dir)/include) \
-I$(CURDIR)/$(BUILD)
.PHONY: $(BUILD) clean all
#---------------------------------------------------------------------------------
all: $(BUILD)
lib:
@[ -d $@ ] || mkdir -p $@
$(BUILD): lib
@[ -d $@ ] || mkdir -p $@
@$(MAKE) --no-print-directory -C $(BUILD) -f $(CURDIR)/Makefile
#---------------------------------------------------------------------------------
clean:
@echo clean ...
@rm -fr $(BUILD) lib
#---------------------------------------------------------------------------------
else
DEPENDS := $(OFILES:.o=.d)
#---------------------------------------------------------------------------------
# main targets
#---------------------------------------------------------------------------------
$(OUTPUT) : $(OFILES)
#---------------------------------------------------------------------------------
%.bin.o : %.bin
#---------------------------------------------------------------------------------
@echo $(notdir $<)
@$(bin2o)
-include $(DEPENDS)
#---------------------------------------------------------------------------------------
endif
#---------------------------------------------------------------------------------------

520
Shared/include/CaseData.h Normal file
View File

@@ -0,0 +1,520 @@
//===----------------------------------------------------------------------===//
//
// This source file is part of the Swift.org open source project
//
// Copyright (c) 2022-2025 Apple Inc. and the Swift project authors
// Licensed under Apache License v2.0 with Runtime Library Exception
//
// See https://swift.org/LICENSE.txt for license information
// See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
//
//===----------------------------------------------------------------------===//
// This was auto-generated by utils/gen-unicode-data/GenCaseFolding,
// please do not edit this file yourself!
#ifndef CASE_DATA_H
#define CASE_DATA_H
#include "shims/SwiftStdint.h"
#define CASE_FOLD_LEVEL_COUNT 10
static const __swift_uint16_t _swift_stdlib_case_sizes[10] = {
0x615, 0x3DE, 0x26D, 0x179, 0xEF, 0xA0, 0x5F, 0x40, 0x40, 0x40,
};
static const __swift_uint64_t _swift_stdlib_case_keys0[25] = {
0x9561048FA8452AD4, 0x20194650604260E0, 0x2A1B409682921C93, 0x490C6EA011401870,
0x2981D2D24E858257, 0x4310A464AAD40760, 0x2A803405A0F08AD0, 0x4051A801E0712900, 0x4E6CAD208E24E08,
0x49310961C0AE5029, 0x2B022A1A57814D1, 0x16DD892C7E0A5E03, 0x11F455A381915445, 0xBD00254389A4CC0A,
0x1C441164AAA76583, 0x24288408C8F2C100, 0x62083B22017051D0, 0x3C183608C1227412,
0xF51E893842198B20, 0x3328EB3911F982E2, 0xC2016C79921A380D, 0x6CCA020E02008B87,
0x144005DA632088A1, 0x4D82612040ECBE, 0x17A418,
};
static const __swift_uint64_t _swift_stdlib_case_keys1[16] = {
0x1580700EE0256762, 0x51C1A44C53888000, 0xC55530CB1D866A18, 0xE45CC34370A6084E,
0x705400056C84081A, 0x3D204245C0520235, 0x5C6B40839C22B0D, 0x781C19291E108124, 0x9F10D226547B244A,
0xFCDD0A0602B26896, 0xA02070346A0C1C2, 0x110CA5B9A8015810, 0xE0C581F97EB1F211, 0x44DA694D984000E2,
0x20C0CFD8E3D22020, 0x6560530,
};
static const __swift_uint64_t _swift_stdlib_case_keys2[10] = {
0xB14244288BB8C5D0, 0x428CEED78DC51B0B, 0x721D00BE9417A370, 0x124A8B8B9133604C,
0xE62704E460CA6EE3, 0x5061109420A64934, 0x5140C48601801801, 0x613559E105395A70,
0x4A294B4450A34A12, 0x189591E2E410,
};
static const __swift_uint64_t _swift_stdlib_case_keys3[6] = {
0x6080C0EAF380A402, 0x538284108B02178A, 0x21401102861696AD, 0x6C4EEA0F8A321642, 0x81CE4D1800FD9C0,
0x19152C6C50350CA,
};
static const __swift_uint64_t _swift_stdlib_case_keys4[4] = {
0x889C81212120005, 0x401AA3C4B908A897, 0x1F35A6208C447001, 0x2013850F3190,
};
static const __swift_uint64_t _swift_stdlib_case_keys5[3] = {
0x15441C8410BAC3EA, 0x8A4080766AD82B11, 0x8558EBCA,
};
static const __swift_uint64_t _swift_stdlib_case_keys6[2] = {
0xDD2101E8D0D84111, 0x50450297,
};
static const __swift_uint64_t _swift_stdlib_case_keys7[1] = {
0x21C346004538781C,
};
static const __swift_uint64_t _swift_stdlib_case_keys8[1] = {
0xF15192867AAEC664,
};
static const __swift_uint64_t _swift_stdlib_case_keys9[1] = {
0x810808050000200,
};
static const __swift_uint64_t * const _swift_stdlib_case_keys[10] = {
_swift_stdlib_case_keys0, _swift_stdlib_case_keys1, _swift_stdlib_case_keys2,
_swift_stdlib_case_keys3, _swift_stdlib_case_keys4, _swift_stdlib_case_keys5,
_swift_stdlib_case_keys6, _swift_stdlib_case_keys7, _swift_stdlib_case_keys8,
_swift_stdlib_case_keys9,
};
static const __swift_uint16_t _swift_stdlib_case_ranks0[4] = {
0x0, 0xB1, 0x173, 0x22E,
};
static const __swift_uint16_t _swift_stdlib_case_ranks1[2] = {
0x237, 0x2EF,
};
static const __swift_uint16_t _swift_stdlib_case_ranks2[2] = {
0x3A8, 0x473,
};
static const __swift_uint16_t _swift_stdlib_case_ranks3[1] = {
0x49C,
};
static const __swift_uint16_t _swift_stdlib_case_ranks4[1] = {
0x526,
};
static const __swift_uint16_t _swift_stdlib_case_ranks5[1] = {
0x575,
};
static const __swift_uint16_t _swift_stdlib_case_ranks6[1] = {
0x5B6,
};
static const __swift_uint16_t _swift_stdlib_case_ranks7[1] = {
0x5D9,
};
static const __swift_uint16_t _swift_stdlib_case_ranks8[1] = {
0x5EF,
};
static const __swift_uint16_t _swift_stdlib_case_ranks9[1] = {
0x60E,
};
static const __swift_uint16_t * const _swift_stdlib_case_ranks[10] = {
_swift_stdlib_case_ranks0, _swift_stdlib_case_ranks1, _swift_stdlib_case_ranks2,
_swift_stdlib_case_ranks3, _swift_stdlib_case_ranks4, _swift_stdlib_case_ranks5,
_swift_stdlib_case_ranks6, _swift_stdlib_case_ranks7, _swift_stdlib_case_ranks8,
_swift_stdlib_case_ranks9,
};
static const __swift_uint64_t _swift_stdlib_case[1557] = {
0x1FFFFFFFE01EC4, 0xFC01FFA, 0x12FA00ABBF, 0x1FFFFFFB0104C4, 0x1FFFFFFC000418, 0x1FFFFFFC00FF38,
0x1FFFFC740010BF, 0x1FFFFFFA00053A, 0x1FFFFFFFE0A658, 0x1FFFFFFA002C1A, 0x1FFFFFFFE0A722,
0x1FFFFFFC000415, 0x1FFFFFFFE001A0, 0x1FFFFFFB210579, 0x14A2A0A7B2, 0x1FFFFFFC016E4C,
0x1FFFFFF8010CA0, 0x1FFFFFFFE0A78B, 0x1FFFFFFA002C10, 0x1FFFFFFFE004D2, 0x1FFFFFF6000409,
0x1FFFFFFB0104CE, 0x1FFFFFFFE0013B, 0x1FFFFFFB01040C, 0x1FFFFFFFE0A726, 0x1FFFFFFB210588,
0x1FFFFFFFE0022A, 0x1FFFFFFC00FF35, 0x1FFFFFFB21058A, 0x1FFFFFFC010D5E, 0x1FFFFFFFE0050E,
0x1FFFFFFB0104BE, 0x1FFFFFFFE01E30, 0x1FFFFFFB01041F, 0x1FFFFFFFE01E5E, 0x14C820A7DC,
0x1FFFFFFFE01E38, 0x1FFFFFFB010427, 0x1FFFFFFFE0050C, 0x1FFFFFFFE0014C, 0x1FFFFFF8010C8C,
0x1FFFFFFA000556, 0x1FFFFFFFE004F0, 0x1FFFFFF6000403, 0x1FFFFFFBC1E90C, 0x8000000000001FB2,
0x1FFFFC740010A4, 0x1FFFFFE5C00181, 0x12FA00AB8D, 0x12FA00AB79, 0x8000000000001F83,
0x1FFFFFFFE0A692, 0x12FA00AB7C, 0x1FFFFFFFE0010E, 0x1FFFFFFA000544, 0x1FFFFFFC016E59,
0x1FFFFFF600040B, 0x1FFFFFFC00004D, 0x1FFFFFFBC1E915, 0x1FFFFFFFE004AA, 0x1FFFFFFFE00502,
0x8000000000001FF2, 0x1FFFFFFFE01E1E, 0x1FFFFFFFE01EAE, 0x1FFFFFFA002C27, 0x12FA00AB71,
0x1FFFFFFC0118AA, 0x1FFFFFFA000550, 0x1FFFFFFA002C09, 0x1FFFFFFE002161, 0x1FFFFFFB010405,
0x1FFFFFFFE0046C, 0x1FFFFFFC0000D2, 0x1FFFFFFB0104B0, 0x1FFFFFFFE00162, 0x1FFFFFF8010CA9,
0x178001CBA, 0x1FFFFFFB210577, 0x1FFFFFFFE0A75E, 0x380A01FBE, 0x1FFFFFFC00041E, 0x1001F4C,
0x1FFFFFFC000048, 0x1FFFFFFC0003A3, 0x1FFFFFFFE01C89, 0x1FFFFFFC0118B3, 0x1FFFFFFFE02C90,
0x1FFFFFFFE02CA2, 0x1FFFFFFA000531, 0x1FFFFFFFE0A7F5, 0x1001F28, 0x10013F8, 0x1FFFFFFA002C16,
0x1FFFFFFFE00152, 0x1FFFFFFFE01EAC, 0x1FFFFFFFE0A7C0, 0x1FFFFFFC000049, 0x1FFFFFFC000411,
0x1FFFFC740010C7, 0x1FFFFFFFE0050A, 0x1001F2A, 0x1FFFFFFFE02CB2, 0x1FFFFFF8010C9C,
0x1FFFFFFFE01ED2, 0x1FFFFFFA002C0E, 0x1FFFFC740010AB, 0x1FFFFFFFE00206, 0x1FFFFFFFE001D9,
0x1FFFFFFB0104B1, 0x1FFFFFFC0118B1, 0x1FFFFFFFE0A64C, 0x1FFFFFF600040A, 0x8000000000001F8E,
0x1FFFFFFFE0A724, 0x1FFFFFFFE004BC, 0x1FFFFFFFE00114, 0x1FFFFFFB010417, 0x1FFFFFFFE01EAA,
0x1FFFFFFB0104C6, 0x1FFFFFFA000553, 0x12FA00ABA7, 0x1FFFFFF8010C93, 0x1FFFFFFFE0018B,
0x1FFFFFFFE02C9A, 0x12FA00AB9B, 0x1FFFFFFFE001EA, 0x1FFFFFF8010C84, 0x1FFFFFFE00216F,
0x8000000000001E97, 0x1001F0A, 0x9401FBB, 0x1FFFFFFFE00160, 0x1FFFFFFB600388, 0x1FFFFFFC0000DB,
0x1FFFFFFA002C05, 0x1FFFFFFC000393, 0x1FFFFFFFE0A650, 0x1FFFFFFC0118A4, 0x12FA00AB92, 0x53CE02C64,
0x1FFFFFFFE00466, 0x1FFFFFFBC1E902, 0x1FFFFFFFE00179, 0x1FFFFFFFE01E58, 0x1FFFFFFC0000C2,
0x1FFFFFFFE01E24, 0x1001F09, 0x1FFFFFFC00FF26, 0x307801C86, 0x1FFFFFFC000392, 0x1FFFFFFB0104CB,
0x1FFFFFFFE02CF2, 0x12FA00AB96, 0x8000000000001F8A, 0x1FFFFFFFE01ED0, 0x1FFFFFFFE001C8,
0x1FFFFC740010B1, 0x1FFFFFFFE0A728, 0x1FFFFFFFE0A752, 0x1FFFFC740010BB, 0x1FFFFFFFE00468,
0x1FFFFFFFE00176, 0x1FFFFFFBC1E90A, 0x1FFFFFFFE02CDC, 0x1FFFFFF8010CA5, 0x1FFFFFFA002C17,
0x1FFFFC740010B4, 0x1FFFFFFC0000C0, 0x8000000000001FC6, 0x1001F6F, 0x1FFFFFFC016E5E,
0x1FFFFFFFE01E3C, 0x1FFFFFFFE01EB0, 0x1FFFFFFC0118B2, 0x1FFFFFFB210586, 0x1FFFFFFB010408,
0x1FFFFFFFE0011C, 0x1FFFFFFC00FF32, 0x1FFFFFFFE01EB4, 0x1FFFFFFFE01E92, 0x800000000000FB16,
0x1FFFFFFFE0A7B8, 0x1FFFFFFFE0A644, 0x1FFFFFFFE001E0, 0x1FFFFFFFE0A77E, 0x8000000000001F50,
0x1FFFFFFFE01E86, 0x1FFFFFFFE00120, 0x1FFFFFFFE0A73E, 0x1FFFFFFA000532, 0x1FFFFFF600040E,
0x1FFFFFFC0000C6, 0x1FFFFFFC0000C4, 0x1FFFFFFFE00198, 0x800000000000FB00, 0x547E02C7F,
0x1FFFFFFFE001AF, 0x1FFFFFFFE02CDE, 0x1FFFFFFFE00154, 0x1FFFFFFFE001D5, 0x1FFFFFFFE003FA,
0x1FFFFFFFE01E4A, 0x1FFFFFFFE0A762, 0x12FA00AB90, 0x1FFFFFFFE01E10, 0xF200178, 0x12FA00AB9C,
0x1001F1A, 0x1FFFFFFFE0A66C, 0x1FFFFFFC0118BC, 0x1FFFFFFFE004DA, 0x1FFFFFFC0000DA,
0x1FFFFFFFE02CB0, 0x1FFFFFFA00054D, 0x1FFFFFFC00FF37, 0x1FFFFFFC0118AE, 0x1FFFFFFFE01EF6,
0x304801C87, 0x1001F6B, 0x1FFFFFFFE00200, 0x1FFFFFFCC024CC, 0x1FFFFFFFE01E6E, 0x1FFFFFFFE01EEC,
0x1FFFFFF8010C83, 0x1FFFFFFBC1E90B, 0x1FFFFFFFE01EB8, 0x1FFFFFFB0104BA, 0x114700A7C6,
0x1FFFFFFA002C06, 0x308601C85, 0x800000000000FB02, 0x1FFFFFFFE00145, 0x1FFFFFFFE0048A,
0x1FFFFFFFE02CC6, 0x1FFFFFFCC024C5, 0x8000000000001FD2, 0x1FFFFFFC010D51, 0x1FFFFFFFE0A748,
0x1FFFFFFFE0051A, 0x1FFFFFFC0000D3, 0x1FFFFFFC016E4D, 0x1FFFFFFC010D55, 0x1FFFFFFFE01E82,
0x1FFFFFFFE0A7C9, 0xAC01FCA, 0x1FFFFFFFE0021A, 0x1001F4D, 0x1FFFFFFCC024BC, 0x1FFFFFFFE0051E,
0x1FFFFFFFE0A65C, 0x1FFFFFF8010CAC, 0x1FFFFFFE002160, 0x1FFFFFFB210590, 0xC2001F6,
0x1FFFFFFFE004C5, 0x1FFFFFFFE0A662, 0x8000000000001FD7, 0x1FFFFFFE002164, 0x1FFFFF8C00A7B3,
0x1001F08, 0x8000000000001F97, 0x1FFFFFFCC024C6, 0x178001CAE, 0x8000000000001F8C,
0x1FFFFFFFE0A76C, 0x1FFFFFFFE0A7B4, 0x309A01C81, 0x1001F1B, 0x8000000000001F94, 0x1FFFFFFFE0A74A,
0x1FFFFFFFE01E26, 0xAC01FCB, 0x1FFFFFF6000402, 0x1FFFFFFBC1E90D, 0x178001CBF, 0x1FFFFFFB210585,
0x1FFFFFFA002C02, 0x408C0212B, 0x12FA00ABB8, 0x1FFFFFFFE0A660, 0x1FFFFFFC00FF28, 0x1FFFFFFFE01E8A,
0x178001CA9, 0x8000000000001F9C, 0x1FFFFFFFE01E1C, 0x1FFFFFFFE0048C, 0x1FFFFFFFE01E88,
0x1FFFFFFFE00516, 0x1FFFFFFA002C2E, 0x1FFFFFFFE01E54, 0x1FFFFFFFE02C8E, 0x8000000000001FAB,
0x1FFFFFFCC024C8, 0x1FFFFFFFE02183, 0x1FFFFFFFE0A680, 0x1FFFFFE4E001B2, 0x1FFFFFFFE02C8A,
0x1FFFFFFB010419, 0x1FFFFFFC000391, 0x1FFFFC740010BE, 0x12FA00AB77, 0x1FFFFFFA002C1B,
0x1FFFFFFC016E51, 0x1FFFFFFC00FF2E, 0x1FFFFFFC016E5A, 0x1FFFFFFA000541, 0x1FFFFFFFE0A698,
0x12FA00AB93, 0x1FFFFFFFE001CF, 0x1FFFFFFBC1E91E, 0x1FFFFFFE002163, 0x1FFFFFFB01040F,
0x1FFFFFFFE01EDA, 0x1FFFFFE6C0018F, 0x1FFFFFFB010407, 0x12FA00AB7D, 0x1001F59, 0x1FFFFFFBC1E911,
0x1FFFFFF8010C9B, 0x1FFFFFFFE004CB, 0x1FFFFFFB010403, 0x1FFFFFF8010C92, 0x1FFFFFFFE00232,
0x1FFFFFFBC1E91A, 0x12FA00AB9D, 0x1FFFFFFFE0A754, 0x1FFFFFFFE0A69A, 0x1FFFFFFFE003E6,
0x1FFFFFFFE0A7C2, 0x1FFFFFFC00042A, 0x1FFFFFFFE0022E, 0x14A9E0A7AB, 0x8000000000001FA0,
0x1FFFFFFFE0021C, 0x1FFFFFFFE01EFC, 0x1FFFFFFFE01E50, 0xC801FDA, 0x1001F0F, 0x800000000000FB03,
0x1FFFFFF600040C, 0x1001FB8, 0x1FFFFFE560019D, 0x1FFFFFFB210591, 0x1FFFFFF8010C91,
0x1FFFFFF8010CA8, 0x1FFFFFFFE02CBE, 0x1FFFFFFBC1E91C, 0x1001F29, 0x1FFFFFFCC024C0,
0x1FFFFFFFE00172, 0x1001FD9, 0x1FFFFFFFE001A7, 0x1FFFFFFFE004AE, 0x1FFFFFFA002C2D,
0x1FFFFFFC00FF2B, 0x1FFFFFFFE00474, 0x178001CA6, 0x1FFFFFFB010418, 0x1FFFFFFFE004E4,
0x1FFFFFFFE01E22, 0x1FFFFFFFE01E56, 0x178001CA1, 0x1FFFFFFFE01E1A, 0x1FFFFFFC000043,
0x1FFFFFFFE0015A, 0x1FFFFFFFE0A682, 0x12FA00AB9A, 0x1FFFFFFB400386, 0x1FFFFFE540019F,
0x1FFFFFFFE0011A, 0x1FFFFFFFE01ECE, 0x1FFFFFFFE0A686, 0x8000000000001F9D, 0x1FFFFFFFE02CCA,
0x1FFFFFFC00004B, 0x1FFFFFFB0104D0, 0x1FFFFFFFE0A796, 0x1FFFFFF8010C87, 0x1FFFFFFFE0A768,
0x800000000000FB13, 0x1FFFFFF6000401, 0x12FA00AB7F, 0x12FA00AB89, 0x1FFFFFFC010D58, 0x1001FE8,
0x1FFFFFFFE0022C, 0x1FFFFFFFE0A73A, 0x1FFFFC740010A5, 0x1FFFFFFB010423, 0x1FFFFFFFE001EE,
0x1FFFFFFFE001D3, 0x1FFFFFFC010D59, 0x178001CB4, 0x1FFFFFFFE003EE, 0xE01FEC, 0x1FFFFFFFE0046A,
0x1FFFFFFFE0A734, 0x1FFFFC740010A2, 0x1FFFFFFFE001E6, 0x1FFFFFFFE0A76A, 0x1FFFFFFE002162,
0x1FFFFFFFE00141, 0x8000000000001FAA, 0x1FFFFFFB010410, 0x1FFFFFFA00054A, 0x1FFFFFFFE00218,
0x1FFFFFFA002C26, 0x1FFFFFFC016E4B, 0x1FFFFFFFE0A72C, 0x1FFFFFFFE00208, 0x1FFFFFFC00042D,
0x1FFFFFFB0104BB, 0x1FFFFFFC00004A, 0x3ABA02126, 0x1FFFFFFFE01EA0, 0x1FFFFFFFE004B6,
0x1FFFFFFC000395, 0x1FFFFFFFE004D8, 0x178001C9D, 0x1FFFFFFC0118A3, 0x1FFFFFFFE0A780,
0x1FFFFFFFE01E94, 0x1FFFFFFE002166, 0x1FFFFFFC010D54, 0x1001F4A, 0x1FFFFFFA000534,
0x1FFFFFFFE01E68, 0x1FFFFFFFE02C82, 0x80000000000000DF, 0x1FFFFABAA0023A, 0x1FFFFFFBC1E910,
0x1FFFFFFB21057F, 0x1FFFFFF8010C90, 0x1FFFFFFC00004C, 0x1FFFFFFBC1E901, 0x1FFFFFFB210576,
0x1FFFFFFFE02C72, 0x8000000000001FAF, 0x1FFFFFFB01041A, 0x1FFFFFFFE0024E, 0x1FFFFFFC00041C,
0x1FFFFFFFE01EB2, 0x1FFFFFFFE0A758, 0x1FFFFFFB010401, 0x1FFFFFFA002C20, 0x1FFFFFFA000536,
0x1FFFFFFB01040D, 0x1FFFFFFFE0A646, 0x1460023D, 0x1FFFFFFC016E44, 0x1FFFFFFFC001C7,
0x1FFFFFFFE01E74, 0x178001CB1, 0x1FFFFFFFE0A750, 0x1FFFFFFFE01E3E, 0x1DCC02C63, 0x1FFFFFFFE0A7C7,
0x1FFFFFFC000423, 0x1FFFFFFFE00143, 0x1FFFFFFE002165, 0x1FFFFFF8010CAD, 0x80000000000001F0,
0x1FFFFFFB010402, 0x1FFFFC740010AE, 0x1FFFFFFFE01E76, 0x1FFFFFFFE00372, 0x1FFFFFFC000056,
0x12FA00ABA4, 0x178001CA7, 0x12FA00ABA9, 0x1FFFFFFA000552, 0x1FFFFFFFE00492, 0x1FFFFFF8010C8F,
0x1FFFFFFA000543, 0x12FA00ABA8, 0x1FFFFFFFE001CD, 0x178001CAB, 0x1FFFFFFFE0A75C, 0x1FFFFFFA00054C,
0x1FFFFFFFE00370, 0x1FFFFFFC000058, 0x1FFFFFFC0000C8, 0x1FFFFFFFE01E02, 0x1FFFFFFB210581,
0x1FFFFFFBC1E90F, 0x8000000000001F81, 0x1FFFFFFB010421, 0x1FFFFFFFE01E80, 0x1FFFFFFB0104C5,
0x1FFFFFFA002C22, 0x12FA00ABA2, 0x1FFFFFFBC1E921, 0x1FFFFFFA002C0C, 0x1FFFFFFB010420,
0x1FFFFFFC00FF2F, 0x1FFFFFFFE003DE, 0x1FFFFFF8010CA3, 0x8000000000001E9E, 0x1FFFFFFFE02C88,
0x1FFFFFFC0003A5, 0x1FFFFFFB210592, 0x1FFFFC740010CD, 0x1FFFFFFFE004F2, 0x8000000000001F96,
0x1FFFFFE4E001B1, 0x1FFFFFFB0104BC, 0x1FFFFFFC016E47, 0x1FFFFFFFE0A79A, 0x1001F3F,
0x1FFFFFFC00042F, 0x12FA00AB94, 0x1FFFFFFC0118BD, 0x1FFFFFFFE02CC8, 0x1FFFFFFA00054F,
0x1FFFFFF8010CA6, 0x1FFFFFFC000427, 0x1FFFFFFFE0A782, 0x1FFFFFFC0000D9, 0x14A960A7AC,
0x1FFFFFFA002C19, 0x1FFFFFFE00216B, 0x1FFFFFFFE004DE, 0x1FFFFFFC0003A9, 0x1FFFFFFFE02C9E,
0x1FFFFFFFE0047E, 0x1FFFFFFFE004B0, 0x1FFFFFFFE00226, 0x1FFFFFFC00005A, 0x1FFFFFFFE00184,
0x1FFFFFFB01041B, 0x104003FE, 0x1FFFFFFA002C21, 0x1FFFFFFA00053C, 0x1FFFFFFFE01EC0,
0x1FFFFFFC00FF36, 0x1FFFFFFC00042B, 0x1FFFFFFC016E4F, 0x1FFFFFF6000400, 0x1FFFFFFFE00164,
0x1FFFFFFBC1E913, 0x1FFFFFFB210571, 0x1FFFFFFB010416, 0x1FFFFFFC000414, 0x1FFFFFFFE01E5C,
0x1FFFFFFA002C00, 0x1FFFFFFBC1E90E, 0x1FFFFFFA000538, 0x1FFFFFFFE02CB4, 0x1FFFFFFFE0012E,
0x1FFFFFFA002C2C, 0x1FFFFFFFE01ED6, 0x1FFFFFFA002C28, 0x1001FD8, 0x1FFFFFFFE003D8,
0x1FFFFFFC016E50, 0x1FFFFFFFE0A68A, 0x1FFFFFFFE01EBA, 0x1FFFFC740010A7, 0x1FFFFFFC0003A0,
0x12FA00AB88, 0x1FFFFFFFE02C75, 0x1FFFFFFB010400, 0x1FFFFFFC00042E, 0x8000000000001F54,
0x1FFFFFFC0000C5, 0x1FFFFFFFE01E06, 0x1FFFFFFFE00228, 0x1FFFFFF8010C8E, 0x1FFFFFFC000041,
0x1FFFFFF620018E, 0x1FFFFFFFE004E0, 0x1FFFFFFC00004F, 0x8000000000001F86, 0x1FFFFFFB0104BF,
0x1FFFFFF8010CB0, 0x8000000000001F95, 0x1FFFFFFC010D5A, 0x12FA00ABB3, 0x1FFFFFFA002C01,
0x1FFFFFFFE001F2, 0x1FFFFFFFE0020E, 0x1FFFFFFE00216C, 0x1FFFFFFFE003C2, 0x1FFFFFFFE0A779,
0x1FFFFFFA000554, 0x1FFFFFF8010CAB, 0x8000000000001FBC, 0x178001CAA, 0x178001CAF,
0x1FFFFFFFE01EDE, 0x1FFFFFFA00054E, 0x1FFFFFFB0104B2, 0x1FFFFFFBC1E906, 0x12FA00AB86,
0x8000000000001FA2, 0x1FFFFFFFE00147, 0x1001F19, 0x1FFFFFFFE004A4, 0x1FFFFFFFE004FC,
0x1FFFFFFC00042C, 0x1FFFFFFFE00174, 0x12FA00ABB2, 0x12FA00AB70, 0x1FFFFFFBC1E907,
0x1FFFFFFC0000D1, 0x1FFFFFFFE02CAE, 0x178001C91, 0x1FFFFFFC000044, 0x800000000000FB14,
0x1FFFFFFFE02CD4, 0x70001F7, 0x1FFFFFFFE00506, 0x1FFFFFFFE0A7A6, 0x1FFFFFFA000551,
0x1FFFFFFFE0A79E, 0x1FFFFFFC00041B, 0x1FFFFFFFE02C80, 0x178001C96, 0x1FFFFFFB010425,
0x1FFFFFF7600244, 0x12FA00ABB9, 0x1FFFFFFFE02C94, 0x1FFFFC740010B6, 0x8000000000001FB6,
0x178001C94, 0x1FFFFFFFE00191, 0x1FFFFFFC0118BB, 0x1FFFFFFA000539, 0x1FFFFFFFE02CB6,
0x1FFFFFFFE02CBA, 0x1FFFFFFFE004A8, 0x1FFFFFFFE0A7B6, 0x1FFFFFFC0118B4, 0x1FFFFFFC0003A8,
0x1001F1D, 0x1FFFFFFFE001DB, 0x1FFFFFFCC024C9, 0x1FFFFFFFE01E36, 0x543E02C6F, 0x1FFFFFFFE02CD2,
0x1FFFFFFFE0A76E, 0x1FFFFFFFE01E8C, 0x12FA00ABB1, 0x12FA00AB75, 0x1FFFFFE4C001AE, 0x12FA00AB74,
0x1FFFFFFC0000D8, 0x1FFFFFFFE001B3, 0x1FFFFFFFE02C86, 0x1FFFFFFA002C1F, 0x1FFFFFFB0104CD,
0x1FFFFFFA002C23, 0x1FFFFFFFE00222, 0x1001F68, 0x1FFFFFFC00FF21, 0x1FFFFFFC00039D, 0xE001FEA,
0x1FFFFFFFE0A7D8, 0x1FFFFFFC010D64, 0x1FFFFFFFE003E0, 0x12FA00AB76, 0x1FFFFFFFE00504,
0x1FFFFFFFE0049E, 0x8000000000001F56, 0x1FFFFFFFE0A642, 0x1FFFFFFFE00104, 0x1FFFFF9F2000B5,
0x8000000000001F84, 0x1FFFFFFFE003EC, 0x1FFFFFFC0003AA, 0x1FFFFC740010B7, 0x1FFFFFFFE0A7D0,
0x1FFFFFFC016E5B, 0x1FFFFFF8010C98, 0x1FFFFFFFE00122, 0x1FFFFFFFE00224, 0x1FFFFFFFE01ED4,
0x1FFFFFFFE00508, 0x1FFFFFFCC024C1, 0x1FFFFFFFE02CA0, 0x1FFFFFFC0118B7, 0x12FA00ABA6,
0x1FFFFFFA002C2F, 0x8000000000001F88, 0x1FFFFFFFE0A740, 0x12FA00AB7E, 0x1FFFFFFFE02CA6,
0x1FFFFFFB210578, 0x1FFFFC740010B3, 0x12FA00ABBE, 0x18600243, 0x1FFFFFFC00039C, 0x1FFFFFFFE0010C,
0x12FA00ABA3, 0x1FFFFFFBC1E904, 0x1FFFFFFFE02CCE, 0x1FFFFFFB210573, 0x1FFFFFFA002C13,
0x12FA00AB8F, 0x1FFFFFFFE00156, 0x1FFFFFFA002C25, 0x12FA00AB85, 0xAC01FC9, 0x1E003D5, 0x10013FB,
0x178001CB8, 0x1FFFFFFFE004FA, 0x14A240A7B0, 0x1FFFFFFCC024CB, 0x1FFFFFFFE0A64E, 0x1FFFFFFC0000C1,
0x1FFFFFFC000047, 0x1FFFFFFFE0047A, 0x1001F3B, 0x1FFFFFFCC024BE, 0x1FFFFFFFE00214,
0x8000000000001FA4, 0x53FA02C6E, 0x178001C9B, 0x1FFFFFFFE00248, 0x8000000000001FA1,
0x8000000000001FA6, 0x1FFFFC740010A9, 0x1001F18, 0x1FFFFFFC000394, 0x12FA00AB8C, 0x178001CBD,
0x1FFFFFFC000421, 0x1FFFFFFB21057C, 0x8000000000001FB3, 0x1FFFFFFFE01E4C, 0x104003FD,
0x1FFFFFFB210582, 0x1FFFFFFBC1E91B, 0x1FFFFFFFE0A7BA, 0x1FFFFFF180037F, 0x1FFFFFFC016E42,
0x1FFFFFFFE004EE, 0x1FFFFFFFE001FE, 0x1FFFFFFB0104B3, 0x1FFFFFFFE01EA6, 0x1FFFFFFB0104B8,
0x8000000000001F90, 0x1FFFFFFFE003DA, 0x1FFFFFFFE00134, 0x1001F48, 0x12FA00ABAF, 0x1FFFFFFFE0A684,
0x1FFFFFFFE00118, 0x1FFFFFFC0118A8, 0x1FFFFFFFE00187, 0x1FFFFFFFE01ECC, 0x1FFFFFF8010CAE,
0x1FFFFFFFE02C9C, 0x1FFFFFFFE0A656, 0x1FFFFFF8010C9D, 0x1FFFFFFB21057E, 0x1FFFFFFC00FF27,
0x1FFFFFFC016E53, 0x1FFFFFFCC024B9, 0x8000000000001F9F, 0x1FFFFFF8010CB1, 0x1FFFFC740010B5,
0x1FFFFFFFE0A668, 0x1FFFFFFB0104B9, 0x1FFFFFFFE001CB, 0x1FFFFFFCC024BB, 0x1FFFFFFFE001F4,
0x1FFFFFFBC1E900, 0x1FFFFFFC000051, 0x1FFFFFF6000407, 0x1FFFFFFFE02C96, 0x1FFFFFF8010C96,
0x1FFFFFFFE001FA, 0x1FFFFFFFE00126, 0x1FFFFFFFE01E44, 0x1FFFFFFFE02CD0, 0x1FFFFFF820038E,
0x3C003D0, 0x12FA00ABB7, 0x12FA00AB82, 0x1FFFFFFFE0013D, 0x14ACE0A7CB, 0x1FFFFFFFE02C60,
0x1FFFFFFFE004AC, 0x8000000000001F99, 0x1FFFFFFC00039B, 0x1FFFFFFFE0049A, 0x8000000000001F89,
0x1FFFFFFC000046, 0x1FFFFFFB0104C1, 0x1FFFFFFC00FF2C, 0x1FFFFFFFE0A792, 0x1FFFFFFFE00204,
0x1FFFFFFFE00510, 0x1FFFFFFC000429, 0x1FFFFFE6600189, 0x1FFFFFFFE02C92, 0x1FFFFFFA002C11,
0x1FFFFFFFE01E20, 0x543C02C70, 0x1FFFFFFFE0A72E, 0x1FFFFFFB21057A, 0x1FFFFFFFE0047C,
0x1FFFFFFFE0A77B, 0x1FFFFFFFE0014A, 0x1FFFFFFB010414, 0x1FFFFFFB210589, 0x1FFFFFFFE02CA4,
0x178001C93, 0x1FFFFFFFE0051C, 0x178001CB6, 0x12FA00ABA0, 0x1001F0B, 0x1001F3D, 0xFC01FFB,
0x1FFFFFF6000404, 0x1FFFFFFB21057D, 0x1FFFFFFFE0052C, 0x1FFFFFFFE01EE6, 0x1FFFFFFFE01EFE,
0x1FFFFFFFE0A7A2, 0x1FFFFFFFE004BE, 0x1FFFFFFFE0A784, 0x8000000000001FE3, 0x80003F5,
0x800000000000FB06, 0x1FFFFFFB01040E, 0x1FFFFFFC00041F, 0x1FFFFFFFE00526, 0x1FFFFFFC0118A5,
0x800000000000FB01, 0x12FA00ABAE, 0x1FFFFFFFC001CA, 0x1FFFFFFC000397, 0x1FFFFFFFE0013F, 0x1001F5B,
0x12FA00ABBA, 0x1FFFFFFC000053, 0x1FFFFFE5E00197, 0x1FFFFFFFE004A6, 0x1FFFFFFFE001D7,
0x1FFFFFFB010415, 0x10001FF8, 0x8000000000001E99, 0x1FFFFFFA002C0D, 0x1FFFFFFFE01E72,
0x1FFFFFF8010CAF, 0x1FFFFFFC00039F, 0x1FFFFFFFE0A736, 0x1001FB9, 0x1FFFFFFFE0A74E, 0x178001C9F,
0x1FFFFFFC016E40, 0x1FFFFFFFE00496, 0x1FFFFFFBC1E918, 0x178001CBE, 0x1FFFFC740010B0,
0x8000000000001FE6, 0x1FFFEEC7A01C88, 0x1FFFFFFC0118A2, 0x1FFFFFFC0000DC, 0x1FFFFFFFE001A4,
0x1FFFFFFFE004DC, 0x14A880A7AA, 0x12FA00AB8A, 0x1FFFFFFA002C29, 0x1FFFFFFFE01E2C,
0x1FFFFFFFE00241, 0x1FFFFFFFE01E7A, 0x1FFFFFF800038C, 0x1FFFFFFFE001DE, 0x1FFFFFFFE01E70,
0x1FFFFFFB01040B, 0x1FFFFFFFE02CD6, 0x1FFFFFFB210575, 0x1001F2F, 0x309C01C80, 0x1FFFFFFFE00524,
0x1FFFFFFC000055, 0x1FFFFFFC016E52, 0x1FFFFFFC0118B8, 0x1FFFFC740010BC, 0x78003F4,
0x1FFFFFFCC024CF, 0x1FFFFFF8010C97, 0x1FFFFFFFE02CC0, 0x1FFFFFFFE001A2, 0x1FFFFFFC000416,
0x1FFFFFFFE0A79C, 0x178001CA3, 0x1FFFFFFC000045, 0x1FFFFFFC00FF25, 0x1FFFFFFFE004B4,
0x8000000000001FE4, 0x1FFFFFFC00039E, 0x1FFFFFFFE00100, 0x1FFFFFFFE01EF2, 0x1FFFFFFB0104C9,
0x1FFFFFFFE0016A, 0x1FFFFFFFE01EDC, 0x1FFFFFFFE02C67, 0x1FFFFFFFE004E2, 0x1FFFFFFFE01E00,
0x1FFFFFFFE004EC, 0x1FFFFFFFE01EA8, 0x8000000000001F87, 0x8000000000001FC2, 0x10400220,
0x1FFFFFFA002C08, 0x1FFFFFF8010C86, 0x1001FE9, 0x1FFFFFFFE00470, 0x1FFFFFFC0118BF,
0x1FFFFFFFE001FC, 0x8000000000001FD3, 0x1FFFFFFBC1E91D, 0x12FA00ABB5, 0x1FFFFFFFE00102,
0x1FFFFFFFE02CDA, 0x1FFFFFFFE0A7BE, 0x1FFFFFFFE02CD8, 0x1FFFFFFC00FF39, 0x1FFFFFFFE004A2,
0x1FFFFFFB010426, 0x1FFFFFFC00FF22, 0x1FFFFFFA002C04, 0x1FFFFFFFE01E52, 0x1FFFFFFFE0023B,
0x1FFFFFFE002168, 0x1FFFFFFCC024B7, 0x800000000000FB17, 0x1FFFFFFFE0A766, 0x1FFFFFFCC024B8,
0x1FFFFFFFE004C1, 0x1FFFFFFFE004D0, 0x1FFFFFFFE02C6B, 0x1FFFFFFFE01EF8, 0x12FA00ABAC,
0x1FFFFFFC0118BE, 0x1FFFFABB00023E, 0x1FFFFFF8010C9A, 0x1FFFFFFC0000CA, 0x104003FF,
0x1FFFFFFFE00528, 0x1FFFFFFFE004A0, 0x1FFFFFF820038F, 0x1FFFFFFC000425, 0x178001CB2,
0x1FFFFFFFE0A666, 0x1FFFFFFC0000DD, 0x1FFFFC740010C1, 0x9401FBA, 0x1FFFFFFB21058E,
0x1FFFFFFC000420, 0x178001C99, 0x1FFFFFFFE00464, 0x1FFFFFFFE02C69, 0x1FFFFFFB600389,
0x1FFFFFFFE01E12, 0x1FFFFFFBC1E914, 0x1FFFFFFFE00158, 0x1001F2D, 0x1FFFFFFB010424,
0x1FFFFFFFE0A648, 0x1FFFFFF8010C81, 0x1FFFFC740010B9, 0x1FFFFFFFE001E4, 0x1FFFFFF1800345,
0x1FFFFFFC010D5F, 0x1001F3A, 0x1FFFFFFB010422, 0x1FFFFC740010C3, 0x1FFFFFFFE02CCC,
0x1FFFFFFFE0014E, 0x8000000000001F85, 0x114080A77D, 0x1FFFFFFC0000D4, 0x1FFFFFFB010409,
0x1FFFFFFFE0A756, 0x1FFFFFFFE0016E, 0x1FFFFFFC0118A0, 0x1FFFFFFCC024BD, 0x8000000000001F82,
0x1FFFFFFFE003EA, 0x1FFFFFFFE0012C, 0x1FFFFFF600040D, 0x1FFFFFF600040F, 0x1FFFFFFFE0012A,
0x1FFFFFFFE0A760, 0x1FFFFC740010B2, 0x1FFFFFFFE01E46, 0x1FFFFFFFE00210, 0x1FFFFFFB210584,
0x1FFFFFFA002C14, 0x1FFFFFFC000398, 0x308401C84, 0x12FA00AB7A, 0x1FFFFFFA000545, 0x1FFFFFFB60038A,
0x1FFFFFFFE01E4E, 0x1FFFFFFC016E43, 0x12FA00AB99, 0x1FFFFFFFE01E5A, 0x1FFFFFFC0000C9,
0x1FFFFFFFE01E7C, 0x1FFFFFFFE0A744, 0x1FFFFFFC0000CE, 0x1FFFFFF8010C94, 0x8000000000001F52,
0x1FFFFFFC000052, 0x1FFFFFFB210583, 0x1FFFFFFFE01EE0, 0x1FFFFFF6000406, 0x1FFFFFFC0000CB,
0x8000000000001FC7, 0x1FFFFFE4A001B7, 0x1FFFFFFFE02C84, 0x1FFFFFFC016E54, 0x1FFFFFFB0104B4,
0x1FFFFFFFE00132, 0x8000000000000149, 0x1FFFFFFC010D50, 0x8000000000001FAC, 0x12FA00ABBC,
0x1FFFFFFFE01E40, 0x14A820A7AD, 0x1FFFFFFA002C1E, 0x1FFFFFFC0003A7, 0x1FFFFFFC016E5C,
0x1FFFFFFFE02CC4, 0x1FFFFFFFE0A640, 0x1FFFFFFC0000CC, 0x1FFFFFFB210595, 0x1FFFFFFFE01E48,
0x1FFFFFFFE00212, 0x1FFFFFFB0104BD, 0x1FFFFFFFE01EBE, 0x1FFFFFFB21058C, 0x1FFFFFFFE01E0C,
0x14A880A7AE, 0x1FFFFFFC016E41, 0x1FFFFFFFE001D1, 0x1FFFFFFBC1E919, 0x1FFFFFFFE01E08,
0x1FFFFFFFE00514, 0x1FFFFFFFE00182, 0x1FFFFFFFE0A690, 0x1FFFFFFC016E46, 0x1FFFFFFF0003CF,
0x1FFFFFFFE004E6, 0x1001F39, 0x1FFFFFFC0000D0, 0x8000000000001FAE, 0x12FA00ABB4, 0x1FFFFFFA000547,
0x1FFFFFFA002C1C, 0x1FFFFFFB01041D, 0x1FFFFFFC00FF24, 0x1FFFFFFFE00110, 0x1FFFFFFFE0A742,
0x1FFFFFFFE01E0A, 0x1FFFFFE5A00196, 0x8000000000001FA7, 0x1FFFFFFFE004C9, 0x1FFFFFFB210580,
0x1FFFFFFFE01EC6, 0x8000000000001FD6, 0x1FFFFFFFE00520, 0x1FFFFFFFE0049C, 0x1FFFFFFFE00512,
0x178001C92, 0x1FFFFFFC000413, 0x1FFFFFFC016E5D, 0x1FFFFFFB210594, 0x1FFFFFFFE00128,
0x1FFFFFFC0003AB, 0x1FFFFFFC0000CD, 0x1FFFFFFC010D65, 0x1FFFFFFA00053D, 0x1FFFFFFBC1E920,
0x1FFFFFFCC024BA, 0x178001C98, 0x1FFFFFFFE01E28, 0x1FFFFFFFE01E16, 0x1FFFFFFBC1E909, 0x178001CB0,
0x1001F49, 0x1001F0D, 0x178001CB7, 0x178001CB9, 0x1FFFFFFFE01EF0, 0x8000000000001FE7,
0x800000000000FB15, 0x1FFFFFFC016E4E, 0x1FFFFFFC0118B0, 0x1FFFFFFA002C15, 0x1FFFFFFFC001F1,
0x1FFFFFFB0104B6, 0x1FFFFFFFE0015C, 0x1FFFFFFFE00460, 0x800000000000FB05, 0x1FFFFFFC010D5D,
0x1FFFFFFFE01E66, 0x1FFFFFFCC024C7, 0x1FFFFFFFE0A738, 0x1FFFFFFFE0A74C, 0x10013FA,
0x1FFFFFFFE01E18, 0x12FA00AB91, 0x1FFFFFFC00FF3A, 0x1FFFFFFFE00150, 0x12FA00AB81,
0x1FFFFFFFE01EE4, 0x178001CA5, 0x1FFFFFFFE01E78, 0x1FFFFFF8010CAA, 0x1FFFFFFFE0A696,
0x1FFFFFFFE00478, 0x1FFFFFFFE01E64, 0x1FFFFFFA00053B, 0x1FFFFFFFE003F7, 0x1FFFFFFC016E45,
0x12FA00ABAA, 0x1FFFFFFFE00462, 0x1FFFFFFFE02CE0, 0x1FFFFC740010A3, 0x1FFFFFFFE0020A,
0x1FFFFFFFE003DC, 0x1FFFFFFB010412, 0x1FFFFFFFE01EC8, 0x1FFFFFFFE004FE, 0x8000000000001F80,
0x12FA00AB97, 0x1FFFFFFFE01EEA, 0x1FFFFFFFE01E6A, 0xE001FEB, 0x1FFFFFFC016E48, 0x1FFFFFFFE02CA8,
0x1FFFFFFFE0A694, 0x1FFFFFFC016E5F, 0x1FFFFFFB0104B7, 0x1FFFFFF8010C9F, 0x1FFFFFFC010D56,
0x1FFFFFFFE02CE2, 0x1FFFFFFFE00166, 0x1FFFFC740010A1, 0x1FFFFFFFE004F6, 0x1FFFFFFFE01E0E,
0x1FFFFFFA000542, 0x1FFFFFE6A00190, 0x308401C83, 0x60003F1, 0x1FFFFFFFE0A654, 0x1FFFFFF8010C8B,
0x1FFFFFFFE01EE2, 0x1FFFFFFC0118AF, 0x1FFFFFF8010CA4, 0x1FFFFFFB0104D3, 0x1FFFFFFC010D60,
0x1FFFFFFFE0A664, 0x12FA00AB9F, 0x12FA00ABA1, 0x178001C9C, 0x1FFFFFFFE001BC, 0x12FA00AB72,
0x1FFFFFFC0118B9, 0x1FFFFFFC000422, 0x1FFFFFFBC1E917, 0x1FFFFC740010C5, 0x7401E9B, 0x10013FC,
0x1FFFFFE6600193, 0x1FFFFFFB01041E, 0x1FFFFFFC016E56, 0x1001F38, 0x1FFFFFFC0000D5,
0x1FFFFFFB0104B5, 0x8000000000001FA5, 0x1FFFFFFFE0A64A, 0x1FFFFFFFE00112, 0x1FFFFFFFE00136,
0x12FA00AB73, 0x1FFFFC740010AC, 0x1001F3C, 0x1FFFFFFFE01E60, 0x12FA00ABAD, 0x12FA00AB87,
0x1FFFFFFFE00518, 0x1001F2C, 0x1FFFFFFB210572, 0x8000000000001F9A, 0x1FFFFFFA002C12,
0x1FFFFFFA002C24, 0x1FFFFFFC000417, 0x1FFFFFFC0118AB, 0x1FFFFFFFE0A68E, 0x178001CA0, 0x178001CA4,
0x12FA00ABB6, 0x1FFFFFFC000057, 0x178001C95, 0x178001CAC, 0x1001F5F, 0x1FFFFFFC0000C3,
0x1FFFFFFC00FF33, 0x10013FD, 0x1FFFFFFFE004D4, 0x1FFFFFFCC024CA, 0x1FFFFFFC0118A7,
0x1FFFFFFFE02CEB, 0x1FFFFFFA002C2B, 0x1FFFFFFB0104D1, 0x1FFFFFFA002C03, 0x1FFFFFFFE01EE8,
0x1FFFFFFFE00246, 0x1FFFFFFFE0A764, 0x1FFFFFFBC1E905, 0x1FFFFFFFE0048E, 0x1FFFFFFC0118AC,
0x1FFFFFF8010CA2, 0x1FFFFFFFE0024A, 0x1FFFFFFC0118AD, 0x1FFFFFFE002167, 0x12FA00AB8E,
0x1FFFFFFA000549, 0x2C003D6, 0x53EE02C62, 0x1FFFFFFFE00124, 0x1FFFFFFA002C18, 0x1FFFFFFB010413,
0x1FFFFFFFE0011E, 0x1FFFFFFC000426, 0x1FFFFFFCC024C4, 0x1FFFFFFFE0A746, 0x1FFFFFFFE00106,
0x1FFFFFFFE0A68C, 0x1FFFFFFB0104CC, 0x547E02C7E, 0x1FFFFFFA000555, 0x8000000000001F93,
0x1FFFFFFA00053F, 0x1FFFFFFC010D52, 0x1FFFFFFC00041A, 0x1FFFFFFFE02CAC, 0x8000000000001FC4,
0x1FFFFFFCC024CE, 0x1FFFFFFC010D63, 0x10001FF9, 0x8000000000001F9E, 0x1FFFFFFE00216E,
0x1FFFFFFFE0A66A, 0x1FFFFFFFE00472, 0x8000000000001F8F, 0x1FFFFFF8010C85, 0x1FFFFFFFE01EA2,
0x1001F6A, 0x1FFFFFFFE0A75A, 0x178001CB5, 0x1FFFFFFBC1E912, 0x1FFFFFF6000405, 0x1FFFFFFFE00230,
0x1FFFFFFC00FF31, 0x12FA00AB9E, 0x1FFFFFFC000042, 0x1FFFFFFFE0A652, 0x1FFFFFFFE01E84, 0x1001F0C,
0x1FFFFFFFE004F4, 0x1FFFFFFC000428, 0x1001F2B, 0x1FFFFFF8010C89, 0x8000000000001FB7,
0x1FFFFFFB010411, 0x1FFFFFFC0000CF, 0x1FFFFC740010AF, 0x1001F5D, 0x12FA00AB8B, 0x12FA00AB80,
0x1FFFFFFFE0017D, 0x1FFFFFFC000050, 0x1FFFFFFA000548, 0x1FFFFFFFE00490, 0x1FFFFFFE2004C0,
0x32003D1, 0x1FFFFFFFE01E8E, 0x1FFFFFFFE01EF4, 0x1FFFFFE6200194, 0x1FFFFC740010A8, 0x1001F4B,
0x1FFFFFFC0000C7, 0x1FFFFFF6000408, 0x1FFFFFFFE02CED, 0x1FFFFFFC00FF34, 0x1FFFFFFC016E4A,
0x1FFFFFFA000546, 0x1001F2E, 0x1FFFFFFFE0A7A0, 0x8000000000001FF3, 0x600A7C4, 0x1FFFFFFC0003A1,
0x1FFFFFFBC1E916, 0x8000000000001FA9, 0x1FFFFFF8010C8A, 0x1FFFFFFFE01EEE, 0x1FFFFC740010C4,
0x1FFFFFFC00004E, 0x1FFFFFFFE01EBC, 0x1FFFFFFC000410, 0x1FFFFFFB0104CF, 0x1FFFFFFFE02CAA,
0x1FFFFFFFE001EC, 0x1FFFFFFA002C07, 0x1FFFFFFC0000D6, 0xE003F9, 0x1FFFFFF8010C82,
0x1FFFFFFA002C0A, 0x1FFFFFFC000419, 0x1FFFFFFC0118BA, 0x1FFFFFFFE01E04, 0x1FFFFFFC00041D,
0x178001C9E, 0x1FFFFFFC000054, 0x1FFFFFFC00FF30, 0x1FFFFFFFE0A790, 0x1FFFFFFFE001B5,
0x1FFFFFFC0003A6, 0x8000000000001E96, 0x8000000000001FA3, 0x8000000000001F91, 0x1FFFFFFFE0046E,
0x1FFFFFFFE01E32, 0x1FFFFFF8010C95, 0x1FFFFFFB0104C2, 0x1FFFFFFB01041C, 0xC801FDB,
0x1FFFFFFFE003E2, 0x1FFFFFFC0118B5, 0x1FFFFFFC010D5B, 0x1FFFFFFB210570, 0x1001F69,
0x1FFFFFFCC024C3, 0x1FFFFFFFE004C7, 0x1FFFFFFB010406, 0x1FFFFFFFE004E8, 0x12FA00ABBD,
0x1FFFFFFFE01E2A, 0x1FFFFC740010C0, 0x1FFFFFFC010D5C, 0x8000000000001FA8, 0x1001F6E,
0x1FFFFFFC010D61, 0x178001CA8, 0x1FFFFFFE00216A, 0x1FFFFFF8010C88, 0x8000000000001FCC,
0x1FFFFFFFE0016C, 0x8000000000001FB4, 0x1FFFFFFFE0017B, 0x1FFFFFFFE0A7A8, 0x1FFFFFFC010D53,
0x1FFFFFE660018A, 0x1001F6D, 0x1FFFFFFFE0A72A, 0x1FFFFFFFE004B2, 0x1FFFFFFA000537,
0x1FFFFFFC0118A9, 0x14A540A7B1, 0x1FFFFFFFE0A65E, 0x1FFFFFFC000424, 0x1FFFFC740010B8,
0x1FFFFFFFE02C8C, 0x1FFFFFFFE02C98, 0x1FFFFFFFE001AC, 0x1FFFFFFFE0A65A, 0x1FFFFFFB0104D2,
0x1FFFFFFC0118A6, 0x1FFFFFFB0104CA, 0x1FFFFFFFE01E7E, 0x1FFFFFFFE004D6, 0x1FFFFFFB21058F,
0x1FFFFFFFE004C3, 0x1001F6C, 0x1FFFFFFFE00480, 0x1FFFFFFFC001C4, 0x1FFFFFFFE02CB8,
0x1FFFFFFFE004F8, 0x12FA00ABA5, 0x1FFFFFFC0000DE, 0x1FFFFFFFE01EFA, 0x1FFFFFF7200245,
0x1FFFFFFFE01ED8, 0x1FFFFFFBC1E908, 0x12FA00AB84, 0x8000000000001FC3, 0x1FFFFFFFE01E14,
0x1FFFFFFCC024CD, 0x1001F1C, 0x8000000000001F98, 0x14A860A7C5, 0x178001C9A, 0x1FFFFFFA00053E,
0x8000000000001F9B, 0x1FFFFFFFE001E8, 0x1FFFFFFC016E49, 0x178001CB3, 0x1FFFFFFFE0A7D6,
0x1FFFFFFCC024C2, 0x8000000000000130, 0x1FFFFFFFE00168, 0x178001CAD, 0x6C003F0, 0x1FFFFC740010BA,
0x1FFFFFFA00054B, 0x1FFFFFE6400186, 0x1FFFFFFFE00498, 0x1FFFFFFFE02CBC, 0x1FFFFC740010AA,
0x1FFFFFFFE004BA, 0x543802C6D, 0x8000000000001E98, 0x1FFFFC740010C2, 0x1FFFFFFFE004B8,
0x12FA00AB95, 0x1FFFFFFFE0A73C, 0x1FFFFFFC00FF2A, 0x1FFFFFFFE0A688, 0x1FFFFFFFE00116,
0x80000000000003B0, 0x1FFFFFFFE0015E, 0x1FFFFFFB01040A, 0x1FFFFFFFE00216, 0x12FA00ABAB,
0x1FFFFFFFE01E3A, 0x1FFFFFFA000540, 0x12FA00AB78, 0x1FFFFFFA000535, 0x1FFFFFFA002C1D,
0x1FFFFFFFE003E8, 0x308801C82, 0x1FFFFFFCC024BF, 0x1FFFFFFC0118B6, 0x8000000000001FFC,
0x1FFFFFFB010404, 0x1FFFFFFB21058D, 0x1FFFFFFFE01E2E, 0x1FFFFFFFE0A732, 0x1FFFFFFC802132,
0x12FA00ABBB, 0x800000000000FB04, 0x1FFFFFFC0118A1, 0x1FFFFFFFE01E34, 0x1FFFFFE4C001A9,
0x1FFFFFFC016E58, 0x1FFFFFFC00039A, 0x1FFFFFFFE00202, 0x1FFFFFFC00FF29, 0x1FFFFFFC000399,
0x1FFFFFFFE01EC2, 0x1FFFFFFFE00108, 0x178001CA2, 0x1FFFFFFB0104C0, 0x8000000000001F92,
0x8000000000000390, 0x1FFFFFFBC1E91F, 0x12FA00AB7B, 0x1FFFFFFFE01E90, 0x8000000000000587,
0x417E0212A, 0x1FFFFFFC010D57, 0x1FFFFFFB0104C3, 0x1FFFFFFC00FF2D, 0x1FFFFFFFE0A7BC,
0x1FFFFFE5A0019C, 0x1FFFFFF8010CA7, 0x8000000000001FAD, 0x1FFFFFFFE0052E, 0x1001F3E,
0x1FFFFFFFE0021E, 0x1FFFFFFB0104C7, 0x1FFFFFFFE00522, 0x1FFFFFF8010C99, 0x1FFFFFFC000412,
0xAC01FC8, 0x1FFFFFFFE003E4, 0x14A500A78D, 0x1FFFFFFFE001E2, 0x1FFFFFFC010D62, 0x1FFFFFFC0003A4,
0x8000000000001FF7, 0x12FA00ABB0, 0x1FFFFFF8010CB2, 0x8000000000001FF4, 0x1FFFFFFFE001F8,
0x1FFFFFFFE00376, 0x1FFFFFFE002169, 0x1FFFFFFFE0A7DA, 0x1FFFFFFB210574, 0x1FFFFFFFE01E6C,
0x1FFFFFF8010CA1, 0x1FFFFFFFE01ECA, 0x1FFFFC740010BD, 0x1FFFFFFE00216D, 0x1FFFFFF8010C9E,
0x1FFFFFFFE001B8, 0x1FFFFFFB0104C8, 0x1FFFFFFC000396, 0x1FFFFFFBC1E903, 0x1FFFFC740010A6,
0x1FFFFFFFE00500, 0x1FFFFFFA002C0F, 0x12FA00AB83, 0x1FFFFFFA002C2A, 0x2180017F, 0x1FFFFFFFE00139,
0x1FFFFFFFE01E62, 0x1FFFFFFA000533, 0x1FFFFFF8010C80, 0x1FFFFFFFE00494, 0x1FFFFFF8010C8D,
0x1FFFFFFB210587, 0x1FFFFFFFE0A7CC, 0x1FFFFFFFE0020C, 0x8000000000001F8B, 0x178001C97,
0x8000000000001F8D, 0x8000000000001E9A, 0x1FFFFFFFE0024C, 0x1FFFFC740010A0, 0x1FFFFFFC000059,
0x1FFFFFFA002C0B, 0x1FFFFFFFE0010A, 0x1FFFFFFC016E55, 0x1FFFFFFFE02CC2, 0x1FFFFFFFE004EA,
0x1FFFFFFFE004CD, 0x12FA00AB98, 0x178001C90, 0x1FFFFFFFE0A786, 0x1FFFFFFFE00170, 0x1FFFFFFFE00476,
0x1FFFFFFC00FF23, 0x10013F9, 0x1FFFFFFFE01E42, 0x1001F0E, 0x1FFFFFFCC024B6, 0x8000000000001FE2,
0x1FFFFFFFE01EA4, 0x1FFFFFFFE001C5, 0x1FFFFFE4C001A6, 0x1FFFFFFFE0A798, 0x1FFFFC740010AD,
0x1FFFFFFC016E57, 0x1FFFFFFFE0A7A4, 0x1FFFFFFFE01EB6, 0x8000000000001FF6, 0x1FFFFFFFE0052A,
};
#define CASE_FULL_FOLD_LEVEL_COUNT 5
static const __swift_uint16_t _swift_stdlib_case_full_sizes[5] = {
0x68, 0x46, 0x40, 0x40, 0x40,
};
static const __swift_uint64_t _swift_stdlib_case_full_keys0[2] = {
0xC832049503465522, 0x416D38A000,
};
static const __swift_uint64_t _swift_stdlib_case_full_keys1[2] = {
0x2EE5E8C0C284C002, 0x29,
};
static const __swift_uint64_t _swift_stdlib_case_full_keys2[1] = {
0x19E4901050128A0,
};
static const __swift_uint64_t _swift_stdlib_case_full_keys3[1] = {
0x60A8C42639280330,
};
static const __swift_uint64_t _swift_stdlib_case_full_keys4[1] = {
0x20800810802000,
};
static const __swift_uint64_t * const _swift_stdlib_case_full_keys[5] = {
_swift_stdlib_case_full_keys0, _swift_stdlib_case_full_keys1, _swift_stdlib_case_full_keys2,
_swift_stdlib_case_full_keys3, _swift_stdlib_case_full_keys4,
};
static const __swift_uint16_t _swift_stdlib_case_full_ranks0[1] = {
0x0,
};
static const __swift_uint16_t _swift_stdlib_case_full_ranks1[1] = {
0x22,
};
static const __swift_uint16_t _swift_stdlib_case_full_ranks2[1] = {
0x3C,
};
static const __swift_uint16_t _swift_stdlib_case_full_ranks3[1] = {
0x4D,
};
static const __swift_uint16_t _swift_stdlib_case_full_ranks4[1] = {
0x62,
};
static const __swift_uint16_t * const _swift_stdlib_case_full_ranks[5] = {
_swift_stdlib_case_full_ranks0, _swift_stdlib_case_full_ranks1, _swift_stdlib_case_full_ranks2,
_swift_stdlib_case_full_ranks3, _swift_stdlib_case_full_ranks4,
};
static const __swift_uint64_t _swift_stdlib_case_full[104] = {
0xC0007038390A1C10, 0x80000000371E1E23, 0x8000000037C60078, 0x8000000037DA0040,
0x8000000037AE0070, 0xC000729439BE1C22, 0x8000000037F61C08, 0x8000000037E60048,
0x80000000379E0088, 0x800000003C561E2B, 0x8000000039281C1D, 0x80000001EB40F598,
0xC000734839961C1A, 0x8000000038741C2A, 0x8000000038141C0C, 0x80000000387A1B8B,
0x8000000037F20042, 0xC0007254399E1C1E, 0x8000000039A21C23, 0x8000000037920080,
0x8000000037C00078, 0x80000001EB54F5A3, 0x8000000038161C16, 0x8000000038E81C05,
0x8000000037C40078, 0xC000734839941C19, 0x8000000037A80088, 0x8000000037BC0070,
0x8000000037E40048, 0x8000000037D80040, 0x8000000037D20040, 0x8000000037B40070,
0x8000000038261C15, 0x8000000037CA0078, 0x8000000037980080, 0x8000000037E20048,
0x80000000371E1E20, 0x8000000037A40088, 0x80000001EB3AF59F, 0x8000000039081C0F,
0xC000705038861B91, 0x80000001F52CFA9C, 0x8000000036CA1E2E, 0x8000000037B00070,
0x8000000037C80078, 0x8000000037CC0078, 0x8000000037A20088, 0x8000000037A00088,
0x8000000039681C2D, 0x8000000037BE0078, 0xC00070F8396A1C2E, 0x8000000037EA0048,
0xC000738839B61C1E, 0x8000000037C20078, 0x8000000039481C21, 0x8000000037DE0048,
0xC003EA61F53CFA9E, 0xC000738839B41C1D, 0x8000000037E80048, 0x8000000037E00048,
0x8000000037B80070, 0x80000000000A0022, 0x8000000037B81E39, 0x8000000037DC0040,
0x80000000379C0080, 0xC0006FF838EA1C06, 0x8000000037D00040, 0xC000023C01110029,
0x80000001F530FA9B, 0x80000001EB5EF5A0, 0x8000000038061C0B, 0x8000000000D8006C,
0xC000714C38821B8F, 0x8000000037900080, 0x8000000037AC0088, 0x8000000037CE0040,
0x80000001EB54F5A1, 0x8000000037AA0088, 0x8000000037B60070, 0x8000000037A60088,
0x8000000037F41C02, 0x8000000037EC0048, 0x8000000038720076, 0x8000000037D60040,
0x80000000378E0080, 0x80000001F524FA93, 0x8000000038861C33, 0x8000000001B70173,
0x8000000037BA0070, 0x8000000203AE00C7, 0xC0007148387E1B8D, 0x800000003812004E,
0x8000000037B20070, 0xC003EA69F53AFA9D, 0x8000000037940080, 0xC00002BC01510015,
0x8000000037D40040, 0x8000000038761C26, 0x80000001F522FA92, 0x80000001F534FA9A,
0x80000000371C1E21, 0x8000000037960080, 0x8000000202380186, 0x80000000379A0080,
};
#endif // #ifndef CASE_DATA_H

View File

@@ -0,0 +1,118 @@
//===----------------------------------------------------------------------===//
//
// This source file is part of the Swift.org open source project
//
// Copyright (c) 2021-2025 Apple Inc. and the Swift project authors
// Licensed under Apache License v2.0 with Runtime Library Exception
//
// See https://swift.org/LICENSE.txt for license information
// See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
//
//===----------------------------------------------------------------------===//
// This was auto-generated by utils/gen-unicode-data/GenGraphemeBreakProperty,
// please do not edit this file yourself!
#ifndef GRAPHEME_DATA_H
#define GRAPHEME_DATA_H
#include "shims/SwiftStdint.h"
#define GRAPHEME_BREAK_DATA_COUNT 641
static const __swift_uint32_t _swift_stdlib_graphemeBreakProperties[641] = {
0x0, 0x20610D24, 0x2000200C, 0x604119D1, 0x20200D3B, 0x6020A823, 0x200113C5, 0x20016FE4,
0x20000A3C, 0x200017C6, 0x80002744, 0x2000AAB0, 0x200111C0, 0x202115BF, 0x20011D3A, 0x9FE1F000,
0x20800829, 0x60000BBF, 0x60200F3E, 0x60001B04, 0x800024C2, 0x20402CEF, 0x6020A9B4, 0x2000ABED,
0x602110B7, 0x2021133B, 0x602114B1, 0x20611722, 0x21811A8A, 0x60211F34, 0x2001DA84, 0xA121F546,
0x2280064B, 0x20C00951, 0x20000ACD, 0x20200C62, 0x20000DD6, 0x2040105E, 0x20401939, 0x60001BEE,
0x80A02194, 0x8EA02690, 0x800027A1, 0x80003299, 0x2000A8FF, 0x6020AA2F, 0x6000AAF5, 0x200102E0,
0x60011002, 0x20E1112D, 0x20611234, 0x20011357, 0x60411435, 0x600114C1, 0x200116AB, 0x60811931,
0x60011A39, 0x22A11C92, 0x20011D95, 0x2161611E, 0xE1D173, 0x2001E08F, 0x81C1F201, 0x8A21F8AE,
0x25800591, 0x20000711, 0x2000093A, 0x602009C7, 0x20200A81, 0x20600B41, 0x60400C01, 0x60200CC3,
0x20000D57, 0x20000EB1, 0x2060102D, 0x20601712, 0x200018A9, 0x20001A60, 0x20601BA2, 0x60001CE1,
0x1E02060, 0x80002388, 0x806025FB, 0x8000271D, 0x80402753, 0x80402B05, 0x80003030, 0x2020A6F0,
0x6020A880, 0x2000A953, 0x6020A9BE, 0x2000AA43, 0x2000AAC1, 0x6020ABE6, 0xFEFF, 0x20610A0C,
0x21410F46, 0x2041107F, 0x400110CD, 0x60011182, 0x200111CF, 0x604112E0, 0x60611341, 0x200113B8,
0x204113CE, 0x60011445, 0x602114BB, 0x206115B2, 0x6021163B, 0x20E116B0, 0x2101182F, 0x60011940,
0x200119E0, 0x20A11A51, 0x20C11C30, 0x20211CB2, 0x20011D47, 0x60211EF5, 0x20011F5A, 0x20C16B30,
0x25A1CF00, 0x2041D242, 0x2201E008, 0x2061E4EC, 0x8021F17E, 0x8061F23C, 0x8061F80C, 0x3EE0000,
0xAD, 0x200005C7, 0x20A006DF, 0x200007FD, 0x22E008CA, 0x20E00941, 0x200009BC, 0x202009E2,
0x20400A4B, 0x20800AC1, 0x60200B02, 0x20400B55, 0x60400BCA, 0x60600C41, 0x60000CBE, 0x20200CE2,
0x60400D46, 0x20000DCA, 0x20000E31, 0x20200F18, 0x20200F86, 0x6020103B, 0x20201085, 0x202017B4,
0x2040180B, 0x60401929, 0x60001A55, 0x21201A73, 0x21001B6B, 0x60001BE7, 0x60201C34, 0x60001CF7,
0x8000203C, 0x80002122, 0x8020231A, 0x814023E9, 0x800025B6, 0x81602607, 0x80002714, 0x80002728,
0x8000274C, 0x80802763, 0x800027BF, 0x80002B50, 0x23E02DE0, 0x20203099, 0x2120A674, 0x2000A806,
0x6000A827, 0x2020A8C4, 0x2140A947, 0x6000A983, 0x6020A9BA, 0x2000A9E5, 0x6020AA33, 0x6000AA4D,
0x2020AAB7, 0x2020AAEC, 0x6020ABE3, 0x6020ABE9, 0x21E0FE00, 0x160FFF0, 0x20410A01, 0x20010A3F,
0x20210EAB, 0x60011000, 0x20011070, 0x604110B0, 0x400110BD, 0x20811127, 0x20011173, 0x210111B6,
0x206111C9, 0x2041122F, 0x20011241, 0x20211300, 0x6001133F, 0x6021134B, 0x20C11366, 0x20A113BB,
0x600113CA, 0x200113D2, 0x60211440, 0x2001145E, 0x600114B9, 0x600114BE, 0x200115AF, 0x202115BC,
0x60411630, 0x6001163E, 0x200116AD, 0x6001171E, 0x20811727, 0x20211839, 0x2061193B, 0x60011942,
0x202119DA, 0x21211A01, 0x20611A3B, 0x20411A59, 0x20211A98, 0x60011C3E, 0x20C11CAA, 0x20211CB5,
0x20C11D3F, 0x20211D90, 0x20011D97, 0x40011F02, 0x60211F3E, 0x20013440, 0x2041612D, 0x66C16F51,
0x2021BC9D, 0x2081D165, 0x20C1D185, 0x2621DA3B, 0x21C1DAA1, 0x2021E023, 0x2001E2AE, 0x20C1E8D0,
0x8001F12F, 0x8121F191, 0x8001F22F, 0x2081F3FB, 0x8161F774, 0x80A1F85A, 0x8121F93C, 0xFEE0080,
0x400007F, 0x2DE00300, 0x202005C1, 0x21400610, 0x20C006D6, 0x206006EA, 0x214007A6, 0x2100081B,
0x40200890, 0x23E008E3, 0x2000093C, 0x2000094D, 0x20000981, 0x602009BF, 0x200009CD, 0x20200A01,
0x20200A41, 0x20200A70, 0x20000ABC, 0x60000AC9, 0x20A00AFA, 0x20200B3E, 0x60200B4B, 0x20000B82,
0x60200BC1, 0x20000BD7, 0x20000C3C, 0x20600C4A, 0x60200C82, 0x60000CC1, 0x20600CCA, 0x20200D00,
0x60200D3F, 0x20000D4D, 0x20000D81, 0x60200DD0, 0x20000DDF, 0x20C00E34, 0x21000EB4, 0x20000F37,
0x60000F7F, 0x24600F99, 0x20A01032, 0x60201056, 0x20001082, 0x2000109D, 0x20201752, 0x20C017B7,
0x214017C9, 0x2000180F, 0x60601923, 0x20001932, 0x60201A19, 0x60001A57, 0x20E01A65, 0x23C01AB0,
0x60601B3E, 0x60001B82, 0x20A01BA8, 0x60401BEA, 0x60E01C24, 0x20401CD0, 0x20001CED, 0x27E01DC0,
0xC02028, 0x80002049, 0x240020D0, 0x80002139, 0x802021A9, 0x80002328, 0x800023CF, 0x804023F8,
0x802025AA, 0x800025C0, 0x80A02600, 0x8E202614, 0x81402708, 0x80002716, 0x80002721, 0x80202733,
0x80002747, 0x8000274E, 0x80002757, 0x80402795, 0x800027B0, 0x80202934, 0x80202B1B, 0x80002B55,
0x20002D7F, 0x20A0302A, 0x8000303D, 0x80003297, 0x2060A66F, 0x2020A69E, 0x2000A802, 0x2000A80B,
0x2020A825, 0x2000A82C, 0x61E0A8B4, 0x2220A8E0, 0x20E0A926, 0x6000A952, 0x2040A980, 0x2000A9B3,
0x2060A9B6, 0x2020A9BC, 0x2000A9C0, 0x20A0AA29, 0x2020AA31, 0x2020AA35, 0x2000AA4C, 0x2000AA7C,
0x2040AAB2, 0x2020AABE, 0x6000AAEB, 0x6020AAEE, 0x2000AAF6, 0x2000ABE5, 0x2000ABE8, 0x6000ABEC,
0x2000FB1E, 0x21E0FE20, 0x2020FF9E, 0x200101FD, 0x20810376, 0x20210A05, 0x20410A38, 0x20210AE5,
0x20810D69, 0x20610EFC, 0x20610F82, 0x20011001, 0x21C11038, 0x20211073, 0x60011082, 0x206110B3,
0x202110B9, 0x200110C2, 0x20411100, 0x6001112C, 0x60211145, 0x20211180, 0x604111B3, 0x600111BF,
0x402111C2, 0x600111CE, 0x6041122C, 0x60211232, 0x2001123E, 0x200112DF, 0x20E112E3, 0x60211302,
0x2001133E, 0x20011340, 0x60211347, 0x2001134D, 0x60211362, 0x20811370, 0x602113B9, 0x200113C2,
0x204113C7, 0x602113CC, 0x400113D1, 0x202113E1, 0x20E11438, 0x20411442, 0x20011446, 0x200114B0,
0x20A114B3, 0x200114BA, 0x200114BD, 0x202114BF, 0x202114C2, 0x602115B0, 0x606115B8, 0x600115BE,
0x202115DC, 0x20E11633, 0x2001163D, 0x2021163F, 0x600116AC, 0x602116AE, 0x2001171D, 0x2001171F,
0x60011726, 0x6041182C, 0x60011838, 0x20011930, 0x60211937, 0x4001193F, 0x40011941, 0x20011943,
0x206119D4, 0x606119DC, 0x600119E4, 0x20A11A33, 0x40011A3A, 0x20011A47, 0x60211A57, 0x40A11A84,
0x60011A97, 0x60011C2F, 0x20A11C38, 0x20011C3F, 0x60011CA9, 0x60011CB1, 0x60011CB4, 0x20A11D31,
0x20211D3C, 0x40011D46, 0x60811D8A, 0x60211D93, 0x60011D96, 0x20211EF3, 0x20211F00, 0x60011F03,
0x20811F36, 0x20411F40, 0x1E13430, 0x21C13447, 0x6041612A, 0x20816AF0, 0x20016F4F, 0x20616F8F,
0x20216FF0, 0x61BCA0, 0x22C1CF30, 0x20A1D16D, 0x20E1D17B, 0x2061D1AA, 0x26C1DA00, 0x2001DA75,
0x2081DA9B, 0x20C1E000, 0x20C1E01B, 0x2081E026, 0x20C1E130, 0x2061E2EC, 0x2021E5EE, 0x20C1E944,
0x8041F10D, 0x80A1F16C, 0x8001F18E, 0x8701F1AD, 0x8001F21A, 0x8101F232, 0xB621F249, 0xA7A1F400,
0x8FE1F680, 0x8541F7D5, 0x80E1F848, 0x80E1F888, 0x85C1F90C, 0xB701F947, 0x2BEE0020, 0x3DEE0100,
0x3E00000, 0x800000A9, 0x800000AE, 0x20C00483, 0x200005BF, 0x202005C4, 0x40A00600, 0x61C,
0x20000670, 0x400006DD, 0x202006E7, 0x4000070F, 0x23400730, 0x210007EB, 0x20600816, 0x20400825,
0x20400859, 0x21000897, 0x400008E2, 0x60000903, 0x6000093B, 0x6040093E, 0x60600949, 0x6020094E,
0x20200962, 0x60200982, 0x200009BE, 0x206009C1, 0x602009CB, 0x200009D7, 0x200009FE, 0x60000A03,
0x60400A3E, 0x20200A47, 0x20000A51, 0x20000A75, 0x60000A83, 0x60400ABE, 0x20200AC7, 0x60200ACB,
0x20200AE2, 0x20000B01, 0x20000B3C, 0x60000B40, 0x60200B47, 0x20000B4D, 0x20200B62, 0x20000BBE,
0x20000BC0, 0x60400BC6, 0x20000BCD, 0x20000C00, 0x20000C04, 0x20400C3E, 0x20400C46, 0x20200C55,
0x20000C81, 0x20000CBC, 0x20200CBF, 0x20000CC2, 0x20400CC6, 0x20200CD5, 0x60000CF3, 0x60200D02,
0x20000D3E, 0x20600D41, 0x60400D4A, 0x40000D4E, 0x20200D62, 0x60200D82, 0x20000DCF, 0x20400DD2,
0x60C00DD8, 0x60200DF2, 0x60000E33, 0x20E00E47, 0x60000EB3, 0x20C00EC8, 0x20000F35, 0x20000F39,
0x21A00F71, 0x20800F80, 0x21400F8D, 0x20000FC6, 0x60001031, 0x20201039, 0x2020103D, 0x20201058,
0x20601071, 0x60001084, 0x2000108D, 0x2040135D, 0x20401732, 0x20201772, 0x600017B6, 0x60E017BE,
0x602017C7, 0x200017DD, 0x180E, 0x20201885, 0x20401920, 0x20201927, 0x60201930, 0x60A01933,
0x20201A17, 0x20001A1B, 0x20001A56, 0x20C01A58, 0x20001A62, 0x60A01A6D, 0x20001A7F, 0x20601B00,
0x21201B34, 0x20401B42, 0x20201B80, 0x60001BA1, 0x60201BA6, 0x20001BE6, 0x20201BE8, 0x20001BED,
0x20801BEF, 0x20E01C2C, 0x20201C36, 0x21801CD4, 0x20C01CE2, 0x20001CF4, 0x20201CF8, 0x200B,
0x20200E,
};
static const __swift_uint16_t _swift_stdlib_InCB_Consonant_ranks[26] = {
0x0, 0x0, 0x0, 0x0, 0x25, 0x35, 0x0, 0x20, 0x25, 0x25, 0x25, 0x0, 0x17, 0x23, 0x3D, 0x3E, 0x0,
0x0, 0x1A, 0x27, 0x27, 0x0, 0x0, 0x26, 0x26, 0x26,
};
static const __swift_uint64_t _swift_stdlib_InCB_Consonant[27] = {
0x1, 0x1F00, 0x0, 0x0, 0x3FFFFFFFFE00000, 0xFF000000FF000000, 0x0, 0x3C5FDFFFFE0, 0x30000B000,
0x0, 0x0, 0xFFE0, 0x3EDFDFF, 0xFFE0000002000000, 0xB000000003EDFDFF, 0x20000, 0x0, 0x0,
0xFDFFFFE000000000, 0x700000003FF, 0x0, 0x0, 0x0, 0x7FFFFFFFFE00000, 0x0, 0x0, 0x0,
};
#endif // #ifndef GRAPHEME_DATA_H

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

367
Shared/include/ScriptData.h Normal file
View File

@@ -0,0 +1,367 @@
//===----------------------------------------------------------------------===//
//
// This source file is part of the Swift.org open source project
//
// Copyright (c) 2022-2025 Apple Inc. and the Swift project authors
// Licensed under Apache License v2.0 with Runtime Library Exception
//
// See https://swift.org/LICENSE.txt for license information
// See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
//
//===----------------------------------------------------------------------===//
// This was auto-generated by utils/gen-unicode-data/GenScripts,
// please do not edit this file yourself!
#ifndef SCRIPT_DATA_H
#define SCRIPT_DATA_H
#include "shims/SwiftStdint.h"
#define SCRIPTS_COUNT 1709
static const __swift_uint32_t _swift_stdlib_scripts[1709] = {
0x3000000, 0x9200041, 0x300005B, 0x9200061, 0x300007B, 0x92000AA, 0x30000AB, 0x92000BA, 0x30000BB,
0x92000C0, 0x30000D7, 0x92000D8, 0x30000F7, 0x92000F8, 0x30002B9, 0x92002E0, 0x30002E5, 0x18002EA,
0x30002EC, 0x7200300, 0x5800370, 0x3000374, 0x5800375, 0x14800378, 0x580037A, 0x300037E,
0x580037F, 0x14800380, 0x5800384, 0x3000385, 0x5800386, 0x3000387, 0x5800388, 0x1480038B,
0x580038C, 0x1480038D, 0x580038E, 0x148003A2, 0x58003A3, 0x32003E2, 0x58003F0, 0x3800400,
0x7200485, 0x3800487, 0x14800530, 0x800531, 0x14800557, 0x800559, 0x1480058B, 0x80058D,
0x14800590, 0x6C00591, 0x148005C8, 0x6C005D0, 0x148005EB, 0x6C005EF, 0x148005F5, 0x600600,
0x3000605, 0x600606, 0x300060C, 0x60060D, 0x300061B, 0x60061C, 0x300061F, 0x600620, 0x3000640,
0x600641, 0x720064B, 0x600656, 0x7200670, 0x600671, 0x30006DD, 0x6006DE, 0x12000700, 0x1480070E,
0x1200070F, 0x1480074B, 0x1200074D, 0x600750, 0x13600780, 0x148007B2, 0xD2007C0, 0x148007FB,
0xD2007FD, 0x10600800, 0x1480082E, 0x10600830, 0x1480083F, 0xAA00840, 0x1480085C, 0xAA0085E,
0x1480085F, 0x12000860, 0x1480086B, 0x600870, 0x1480088F, 0x600890, 0x14800892, 0x600897,
0x30008E2, 0x6008E3, 0x3E00900, 0x7200951, 0x3E00955, 0x3000964, 0x3E00966, 0x1400980, 0x14800984,
0x1400985, 0x1480098D, 0x140098F, 0x14800991, 0x1400993, 0x148009A9, 0x14009AA, 0x148009B1,
0x14009B2, 0x148009B3, 0x14009B6, 0x148009BA, 0x14009BC, 0x148009C5, 0x14009C7, 0x148009C9,
0x14009CB, 0x148009CF, 0x14009D7, 0x148009D8, 0x14009DC, 0x148009DE, 0x14009DF, 0x148009E4,
0x14009E6, 0x148009FF, 0x5E00A01, 0x14800A04, 0x5E00A05, 0x14800A0B, 0x5E00A0F, 0x14800A11,
0x5E00A13, 0x14800A29, 0x5E00A2A, 0x14800A31, 0x5E00A32, 0x14800A34, 0x5E00A35, 0x14800A37,
0x5E00A38, 0x14800A3A, 0x5E00A3C, 0x14800A3D, 0x5E00A3E, 0x14800A43, 0x5E00A47, 0x14800A49,
0x5E00A4B, 0x14800A4E, 0x5E00A51, 0x14800A52, 0x5E00A59, 0x14800A5D, 0x5E00A5E, 0x14800A5F,
0x5E00A66, 0x14800A77, 0x5A00A81, 0x14800A84, 0x5A00A85, 0x14800A8E, 0x5A00A8F, 0x14800A92,
0x5A00A93, 0x14800AA9, 0x5A00AAA, 0x14800AB1, 0x5A00AB2, 0x14800AB4, 0x5A00AB5, 0x14800ABA,
0x5A00ABC, 0x14800AC6, 0x5A00AC7, 0x14800ACA, 0x5A00ACB, 0x14800ACE, 0x5A00AD0, 0x14800AD1,
0x5A00AE0, 0x14800AE4, 0x5A00AE6, 0x14800AF2, 0x5A00AF9, 0x14800B00, 0xF000B01, 0x14800B04,
0xF000B05, 0x14800B0D, 0xF000B0F, 0x14800B11, 0xF000B13, 0x14800B29, 0xF000B2A, 0x14800B31,
0xF000B32, 0x14800B34, 0xF000B35, 0x14800B3A, 0xF000B3C, 0x14800B45, 0xF000B47, 0x14800B49,
0xF000B4B, 0x14800B4E, 0xF000B55, 0x14800B58, 0xF000B5C, 0x14800B5E, 0xF000B5F, 0x14800B64,
0xF000B66, 0x14800B78, 0x12E00B82, 0x14800B84, 0x12E00B85, 0x14800B8B, 0x12E00B8E, 0x14800B91,
0x12E00B92, 0x14800B96, 0x12E00B99, 0x14800B9B, 0x12E00B9C, 0x14800B9D, 0x12E00B9E, 0x14800BA0,
0x12E00BA3, 0x14800BA5, 0x12E00BA8, 0x14800BAB, 0x12E00BAE, 0x14800BBA, 0x12E00BBE, 0x14800BC3,
0x12E00BC6, 0x14800BC9, 0x12E00BCA, 0x14800BCE, 0x12E00BD0, 0x14800BD1, 0x12E00BD7, 0x14800BD8,
0x12E00BE6, 0x14800BFB, 0x13400C00, 0x14800C0D, 0x13400C0E, 0x14800C11, 0x13400C12, 0x14800C29,
0x13400C2A, 0x14800C3A, 0x13400C3C, 0x14800C45, 0x13400C46, 0x14800C49, 0x13400C4A, 0x14800C4E,
0x13400C55, 0x14800C57, 0x13400C58, 0x14800C5B, 0x13400C5D, 0x14800C5E, 0x13400C60, 0x14800C64,
0x13400C66, 0x14800C70, 0x13400C77, 0x7C00C80, 0x14800C8D, 0x7C00C8E, 0x14800C91, 0x7C00C92,
0x14800CA9, 0x7C00CAA, 0x14800CB4, 0x7C00CB5, 0x14800CBA, 0x7C00CBC, 0x14800CC5, 0x7C00CC6,
0x14800CC9, 0x7C00CCA, 0x14800CCE, 0x7C00CD5, 0x14800CD7, 0x7C00CDD, 0x14800CDF, 0x7C00CE0,
0x14800CE4, 0x7C00CE6, 0x14800CF0, 0x7C00CF1, 0x14800CF4, 0xA800D00, 0x14800D0D, 0xA800D0E,
0x14800D11, 0xA800D12, 0x14800D45, 0xA800D46, 0x14800D49, 0xA800D4A, 0x14800D50, 0xA800D54,
0x14800D64, 0xA800D66, 0x14800D80, 0x11200D81, 0x14800D84, 0x11200D85, 0x14800D97, 0x11200D9A,
0x14800DB2, 0x11200DB3, 0x14800DBC, 0x11200DBD, 0x14800DBE, 0x11200DC0, 0x14800DC7, 0x11200DCA,
0x14800DCB, 0x11200DCF, 0x14800DD5, 0x11200DD6, 0x14800DD7, 0x11200DD8, 0x14800DE0, 0x11200DE6,
0x14800DF0, 0x11200DF2, 0x14800DF5, 0x13800E01, 0x14800E3B, 0x3000E3F, 0x13800E40, 0x14800E5C,
0x9000E81, 0x14800E83, 0x9000E84, 0x14800E85, 0x9000E86, 0x14800E8B, 0x9000E8C, 0x14800EA4,
0x9000EA5, 0x14800EA6, 0x9000EA7, 0x14800EBE, 0x9000EC0, 0x14800EC5, 0x9000EC6, 0x14800EC7,
0x9000EC8, 0x14800ECF, 0x9000ED0, 0x14800EDA, 0x9000EDC, 0x14800EE0, 0x13A00F00, 0x14800F48,
0x13A00F49, 0x14800F6D, 0x13A00F71, 0x14800F98, 0x13A00F99, 0x14800FBD, 0x13A00FBE, 0x14800FCD,
0x13A00FCE, 0x3000FD5, 0x13A00FD9, 0x14800FDB, 0xC601000, 0x50010A0, 0x148010C6, 0x50010C7,
0x148010C8, 0x50010CD, 0x148010CE, 0x50010D0, 0x30010FB, 0x50010FC, 0x6401100, 0x4C01200,
0x14801249, 0x4C0124A, 0x1480124E, 0x4C01250, 0x14801257, 0x4C01258, 0x14801259, 0x4C0125A,
0x1480125E, 0x4C01260, 0x14801289, 0x4C0128A, 0x1480128E, 0x4C01290, 0x148012B1, 0x4C012B2,
0x148012B6, 0x4C012B8, 0x148012BF, 0x4C012C0, 0x148012C1, 0x4C012C2, 0x148012C6, 0x4C012C8,
0x148012D7, 0x4C012D8, 0x14801311, 0x4C01312, 0x14801316, 0x4C01318, 0x1480135B, 0x4C0135D,
0x1480137D, 0x4C01380, 0x1480139A, 0x2C013A0, 0x148013F6, 0x2C013F8, 0x148013FE, 0x2201400,
0xD801680, 0x1480169D, 0x104016A0, 0x30016EB, 0x104016EE, 0x148016F9, 0x12201700, 0x14801716,
0x1220171F, 0x6801720, 0x3001735, 0x14801737, 0x2001740, 0x14801754, 0x12401760, 0x1480176D,
0x1240176E, 0x14801771, 0x12401772, 0x14801774, 0x8A01780, 0x148017DE, 0x8A017E0, 0x148017EA,
0x8A017F0, 0x148017FA, 0xC001800, 0x3001802, 0xC001804, 0x3001805, 0xC001806, 0x1480181A,
0xC001820, 0x14801879, 0xC001880, 0x148018AB, 0x22018B0, 0x148018F6, 0x9601900, 0x1480191F,
0x9601920, 0x1480192C, 0x9601930, 0x1480193C, 0x9601940, 0x14801941, 0x9601944, 0x12601950,
0x1480196E, 0x12601970, 0x14801975, 0xD001980, 0x148019AC, 0xD0019B0, 0x148019CA, 0xD0019D0,
0x148019DB, 0xD0019DE, 0x8A019E0, 0x1E01A00, 0x14801A1C, 0x1E01A1E, 0x12801A20, 0x14801A5F,
0x12801A60, 0x14801A7D, 0x12801A7F, 0x14801A8A, 0x12801A90, 0x14801A9A, 0x12801AA0, 0x14801AAE,
0x7201AB0, 0x14801ACF, 0xC01B00, 0x14801B4D, 0xC01B4E, 0x11A01B80, 0x1201BC0, 0x14801BF4,
0x1201BFC, 0x9401C00, 0x14801C38, 0x9401C3B, 0x14801C4A, 0x9401C4D, 0xDA01C50, 0x3801C80,
0x14801C8B, 0x5001C90, 0x14801CBB, 0x5001CBD, 0x11A01CC0, 0x14801CC8, 0x7201CD0, 0x3001CD3,
0x7201CD4, 0x3001CE1, 0x7201CE2, 0x3001CE9, 0x7201CED, 0x3001CEE, 0x7201CF4, 0x3001CF5, 0x7201CF8,
0x3001CFA, 0x14801CFB, 0x9201D00, 0x5801D26, 0x3801D2B, 0x9201D2C, 0x5801D5D, 0x9201D62,
0x5801D66, 0x9201D6B, 0x3801D78, 0x9201D79, 0x5801DBF, 0x7201DC0, 0x9201E00, 0x5801F00,
0x14801F16, 0x5801F18, 0x14801F1E, 0x5801F20, 0x14801F46, 0x5801F48, 0x14801F4E, 0x5801F50,
0x14801F58, 0x5801F59, 0x14801F5A, 0x5801F5B, 0x14801F5C, 0x5801F5D, 0x14801F5E, 0x5801F5F,
0x14801F7E, 0x5801F80, 0x14801FB5, 0x5801FB6, 0x14801FC5, 0x5801FC6, 0x14801FD4, 0x5801FD6,
0x14801FDC, 0x5801FDD, 0x14801FF0, 0x5801FF2, 0x14801FF5, 0x5801FF6, 0x14801FFF, 0x3002000,
0x720200C, 0x300200E, 0x14802065, 0x3002066, 0x9202071, 0x14802072, 0x3002074, 0x920207F,
0x3002080, 0x1480208F, 0x9202090, 0x1480209D, 0x30020A0, 0x148020C1, 0x72020D0, 0x148020F1,
0x3002100, 0x5802126, 0x3002127, 0x920212A, 0x300212C, 0x9202132, 0x3002133, 0x920214E, 0x300214F,
0x9202160, 0x3002189, 0x1480218C, 0x3002190, 0x1480242A, 0x3002440, 0x1480244B, 0x3002460,
0x1C02800, 0x3002900, 0x14802B74, 0x3002B76, 0x14802B96, 0x3002B97, 0x5202C00, 0x9202C60,
0x3202C80, 0x14802CF4, 0x3202CF9, 0x5002D00, 0x14802D26, 0x5002D27, 0x14802D28, 0x5002D2D,
0x14802D2E, 0x13C02D30, 0x14802D68, 0x13C02D6F, 0x14802D71, 0x13C02D7F, 0x4C02D80, 0x14802D97,
0x4C02DA0, 0x14802DA7, 0x4C02DA8, 0x14802DAF, 0x4C02DB0, 0x14802DB7, 0x4C02DB8, 0x14802DBF,
0x4C02DC0, 0x14802DC7, 0x4C02DC8, 0x14802DCF, 0x4C02DD0, 0x14802DD7, 0x4C02DD8, 0x14802DDF,
0x3802DE0, 0x3002E00, 0x14802E5E, 0x6202E80, 0x14802E9A, 0x6202E9B, 0x14802EF4, 0x6202F00,
0x14802FD6, 0x3002FF0, 0x6203005, 0x3003006, 0x6203007, 0x3003008, 0x6203021, 0x720302A,
0x640302E, 0x3003030, 0x6203038, 0x300303C, 0x14803040, 0x6E03041, 0x14803097, 0x7203099,
0x300309B, 0x6E0309D, 0x30030A0, 0x7E030A1, 0x30030FB, 0x7E030FD, 0x14803100, 0x1803105,
0x14803130, 0x6403131, 0x1480318F, 0x3003190, 0x18031A0, 0x30031C0, 0x148031E6, 0x30031EF,
0x7E031F0, 0x6403200, 0x1480321F, 0x3003220, 0x6403260, 0x300327F, 0x7E032D0, 0x30032FF,
0x7E03300, 0x3003358, 0x6203400, 0x3004DC0, 0x6204E00, 0x1540A000, 0x1480A48D, 0x1540A490,
0x1480A4C7, 0x9C0A4D0, 0x14A0A500, 0x1480A62C, 0x380A640, 0xE0A6A0, 0x1480A6F8, 0x300A700,
0x920A722, 0x300A788, 0x920A78B, 0x1480A7CE, 0x920A7D0, 0x1480A7D2, 0x920A7D3, 0x1480A7D4,
0x920A7D5, 0x1480A7DD, 0x920A7F2, 0x11E0A800, 0x1480A82D, 0x300A830, 0x1480A83A, 0xFC0A840,
0x1480A878, 0x1080A880, 0x1480A8C6, 0x1080A8CE, 0x1480A8DA, 0x3E0A8E0, 0x840A900, 0x300A92E,
0x840A92F, 0x1020A930, 0x1480A954, 0x1020A95F, 0x640A960, 0x1480A97D, 0x780A980, 0x1480A9CE,
0x300A9CF, 0x780A9D0, 0x1480A9DA, 0x780A9DE, 0xC60A9E0, 0x1480A9FF, 0x2A0AA00, 0x1480AA37,
0x2A0AA40, 0x1480AA4E, 0x2A0AA50, 0x1480AA5A, 0x2A0AA5C, 0xC60AA60, 0x12A0AA80, 0x1480AAC3,
0x12A0AADB, 0xB40AAE0, 0x1480AAF7, 0x4C0AB01, 0x1480AB07, 0x4C0AB09, 0x1480AB0F, 0x4C0AB11,
0x1480AB17, 0x4C0AB20, 0x1480AB27, 0x4C0AB28, 0x1480AB2F, 0x920AB30, 0x300AB5B, 0x920AB5C,
0x580AB65, 0x920AB66, 0x300AB6A, 0x1480AB6C, 0x2C0AB70, 0xB40ABC0, 0x1480ABEE, 0xB40ABF0,
0x1480ABFA, 0x640AC00, 0x1480D7A4, 0x640D7B0, 0x1480D7C7, 0x640D7CB, 0x1480D7FC, 0x1480E000,
0x620F900, 0x1480FA6E, 0x620FA70, 0x1480FADA, 0x920FB00, 0x1480FB07, 0x80FB13, 0x1480FB18,
0x6C0FB1D, 0x1480FB37, 0x6C0FB38, 0x1480FB3D, 0x6C0FB3E, 0x1480FB3F, 0x6C0FB40, 0x1480FB42,
0x6C0FB43, 0x1480FB45, 0x6C0FB46, 0x60FB50, 0x1480FBC3, 0x60FBD3, 0x300FD3E, 0x60FD40, 0x1480FD90,
0x60FD92, 0x1480FDC8, 0x60FDCF, 0x1480FDD0, 0x60FDF0, 0x720FE00, 0x300FE10, 0x1480FE1A, 0x720FE20,
0x380FE2E, 0x300FE30, 0x1480FE53, 0x300FE54, 0x1480FE67, 0x300FE68, 0x1480FE6C, 0x60FE70,
0x1480FE75, 0x60FE76, 0x1480FEFD, 0x300FEFF, 0x1480FF00, 0x300FF01, 0x920FF21, 0x300FF3B,
0x920FF41, 0x300FF5B, 0x7E0FF66, 0x300FF70, 0x7E0FF71, 0x300FF9E, 0x640FFA0, 0x1480FFBF,
0x640FFC2, 0x1480FFC8, 0x640FFCA, 0x1480FFD0, 0x640FFD2, 0x1480FFD8, 0x640FFDA, 0x1480FFDD,
0x300FFE0, 0x1480FFE7, 0x300FFE8, 0x1480FFEF, 0x300FFF9, 0x1480FFFE, 0x9A10000, 0x1481000C,
0x9A1000D, 0x14810027, 0x9A10028, 0x1481003B, 0x9A1003C, 0x1481003E, 0x9A1003F, 0x1481004E,
0x9A10050, 0x1481005E, 0x9A10080, 0x148100FB, 0x3010100, 0x14810103, 0x3010107, 0x14810134,
0x3010137, 0x5810140, 0x1481018F, 0x3010190, 0x1481019D, 0x58101A0, 0x148101A1, 0x30101D0,
0x72101FD, 0x148101FE, 0x9E10280, 0x1481029D, 0x24102A0, 0x148102D1, 0x72102E0, 0x30102E1,
0x148102FC, 0xDE10300, 0x14810324, 0xDE1032D, 0x5410330, 0x1481034B, 0xE210350, 0x1481037B,
0x14610380, 0x1481039E, 0x1461039F, 0xE4103A0, 0x148103C4, 0xE4103C8, 0x148103D6, 0x3C10400,
0x10C10450, 0xF410480, 0x1481049E, 0xF4104A0, 0x148104AA, 0xF2104B0, 0x148104D4, 0xF2104D8,
0x148104FC, 0x4810500, 0x14810528, 0x2610530, 0x14810564, 0x261056F, 0x14C10570, 0x1481057B,
0x14C1057C, 0x1481058B, 0x14C1058C, 0x14810593, 0x14C10594, 0x14810596, 0x14C10597, 0x148105A2,
0x14C105A3, 0x148105B2, 0x14C105B3, 0x148105BA, 0x14C105BB, 0x148105BD, 0x140105C0, 0x148105F4,
0x9810600, 0x14810737, 0x9810740, 0x14810756, 0x9810760, 0x14810768, 0x9210780, 0x14810786,
0x9210787, 0x148107B1, 0x92107B2, 0x148107BB, 0x3610800, 0x14810806, 0x3610808, 0x14810809,
0x361080A, 0x14810836, 0x3610837, 0x14810839, 0x361083C, 0x1481083D, 0x361083F, 0x7010840,
0x14810856, 0x7010857, 0xF810860, 0xC810880, 0x1481089F, 0xC8108A7, 0x148108B0, 0x6A108E0,
0x148108F3, 0x6A108F4, 0x148108F6, 0x6A108FB, 0xFE10900, 0x1481091C, 0xFE1091F, 0xA010920,
0x1481093A, 0xA01093F, 0x14810940, 0xBA10980, 0xB8109A0, 0x148109B8, 0xB8109BC, 0x148109D0,
0xB8109D2, 0x8610A00, 0x14810A04, 0x8610A05, 0x14810A07, 0x8610A0C, 0x14810A14, 0x8610A15,
0x14810A18, 0x8610A19, 0x14810A36, 0x8610A38, 0x14810A3B, 0x8610A3F, 0x14810A49, 0x8610A50,
0x14810A59, 0xE810A60, 0xE010A80, 0x14810AA0, 0xAC10AC0, 0x14810AE7, 0xAC10AEB, 0x14810AF7,
0xA10B00, 0x14810B36, 0xA10B39, 0x7610B40, 0x14810B56, 0x7610B58, 0x7410B60, 0x14810B73,
0x7410B78, 0x10010B80, 0x14810B92, 0x10010B99, 0x14810B9D, 0x10010BA9, 0x14810BB0, 0xEA10C00,
0x14810C49, 0xDC10C80, 0x14810CB3, 0xDC10CC0, 0x14810CF3, 0xDC10CFA, 0x6610D00, 0x14810D28,
0x6610D30, 0x14810D3A, 0x4E10D40, 0x14810D66, 0x4E10D69, 0x14810D86, 0x4E10D8E, 0x14810D90,
0x610E60, 0x14810E7F, 0x15210E80, 0x14810EAA, 0x15210EAB, 0x14810EAE, 0x15210EB0, 0x14810EB2,
0x610EC2, 0x14810EC5, 0x610EFC, 0xE610F00, 0x14810F28, 0x11410F30, 0x14810F5A, 0xEC10F70,
0x14810F8A, 0x2E10FB0, 0x14810FCC, 0x4A10FE0, 0x14810FF7, 0x1A11000, 0x1481104E, 0x1A11052,
0x14811076, 0x1A1107F, 0x7A11080, 0x148110C3, 0x7A110CD, 0x148110CE, 0x116110D0, 0x148110E9,
0x116110F0, 0x148110FA, 0x2811100, 0x14811135, 0x2811136, 0x14811148, 0xA411150, 0x14811177,
0x10A11180, 0x148111E0, 0x112111E1, 0x148111F5, 0x8C11200, 0x14811212, 0x8C11213, 0x14811242,
0xC411280, 0x14811287, 0xC411288, 0x14811289, 0xC41128A, 0x1481128E, 0xC41128F, 0x1481129E,
0xC41129F, 0x148112AA, 0x8E112B0, 0x148112EB, 0x8E112F0, 0x148112FA, 0x5611300, 0x14811304,
0x5611305, 0x1481130D, 0x561130F, 0x14811311, 0x5611313, 0x14811329, 0x561132A, 0x14811331,
0x5611332, 0x14811334, 0x5611335, 0x1481133A, 0x721133B, 0x561133C, 0x14811345, 0x5611347,
0x14811349, 0x561134B, 0x1481134E, 0x5611350, 0x14811351, 0x5611357, 0x14811358, 0x561135D,
0x14811364, 0x5611366, 0x1481136D, 0x5611370, 0x14811375, 0x14411380, 0x1481138A, 0x1441138B,
0x1481138C, 0x1441138E, 0x1481138F, 0x14411390, 0x148113B6, 0x144113B7, 0x148113C1, 0x144113C2,
0x148113C3, 0x144113C5, 0x148113C6, 0x144113C7, 0x148113CB, 0x144113CC, 0x148113D6, 0x144113D7,
0x148113D9, 0x144113E1, 0x148113E3, 0xCE11400, 0x1481145C, 0xCE1145D, 0x14811462, 0x13E11480,
0x148114C8, 0x13E114D0, 0x148114DA, 0x10E11580, 0x148115B6, 0x10E115B8, 0x148115DE, 0xBE11600,
0x14811645, 0xBE11650, 0x1481165A, 0xC011660, 0x1481166D, 0x12C11680, 0x148116BA, 0x12C116C0,
0x148116CA, 0xC6116D0, 0x148116E4, 0x211700, 0x1481171B, 0x21171D, 0x1481172C, 0x211730,
0x14811747, 0x4211800, 0x1481183C, 0x150118A0, 0x148118F3, 0x150118FF, 0x4011900, 0x14811907,
0x4011909, 0x1481190A, 0x401190C, 0x14811914, 0x4011915, 0x14811917, 0x4011918, 0x14811936,
0x4011937, 0x14811939, 0x401193B, 0x14811947, 0x4011950, 0x1481195A, 0xCC119A0, 0x148119A8,
0xCC119AA, 0x148119D8, 0xCC119DA, 0x148119E5, 0x15611A00, 0x14811A48, 0x11811A50, 0x14811AA3,
0x2211AB0, 0xFA11AC0, 0x14811AF9, 0x3E11B00, 0x14811B0A, 0x11C11BC0, 0x14811BE2, 0x11C11BF0,
0x14811BFA, 0x1611C00, 0x14811C09, 0x1611C0A, 0x14811C37, 0x1611C38, 0x14811C46, 0x1611C50,
0x14811C6D, 0xAE11C70, 0x14811C90, 0xAE11C92, 0x14811CA8, 0xAE11CA9, 0x14811CB7, 0xB011D00,
0x14811D07, 0xB011D08, 0x14811D0A, 0xB011D0B, 0x14811D37, 0xB011D3A, 0x14811D3B, 0xB011D3C,
0x14811D3E, 0xB011D3F, 0x14811D48, 0xB011D50, 0x14811D5A, 0x5C11D60, 0x14811D66, 0x5C11D67,
0x14811D69, 0x5C11D6A, 0x14811D8F, 0x5C11D90, 0x14811D92, 0x5C11D93, 0x14811D99, 0x5C11DA0,
0x14811DAA, 0xA611EE0, 0x14811EF9, 0x8211F00, 0x14811F11, 0x8211F12, 0x14811F3B, 0x8211F3E,
0x14811F5B, 0x9C11FB0, 0x14811FB1, 0x12E11FC0, 0x14811FF2, 0x12E11FFF, 0x3412000, 0x1481239A,
0x3412400, 0x1481246F, 0x3412470, 0x14812475, 0x3412480, 0x14812544, 0x3A12F90, 0x14812FF3,
0x4613000, 0x14813456, 0x4613460, 0x148143FB, 0x414400, 0x14814647, 0x6016100, 0x1481613A,
0xE16800, 0x14816A39, 0xC216A40, 0x14816A5F, 0xC216A60, 0x14816A6A, 0xC216A6E, 0x13016A70,
0x14816ABF, 0x13016AC0, 0x14816ACA, 0x1016AD0, 0x14816AEE, 0x1016AF0, 0x14816AF6, 0xF616B00,
0x14816B46, 0xF616B50, 0x14816B5A, 0xF616B5B, 0x14816B62, 0xF616B63, 0x14816B78, 0xF616B7D,
0x14816B90, 0xA216D40, 0x14816D7A, 0xB216E40, 0x14816E9B, 0xBC16F00, 0x14816F4B, 0xBC16F4F,
0x14816F88, 0xBC16F8F, 0x14816FA0, 0x13216FE0, 0xD416FE1, 0x6216FE2, 0x8816FE4, 0x14816FE5,
0x6216FF0, 0x14816FF2, 0x13217000, 0x148187F8, 0x13218800, 0x8818B00, 0x14818CD6, 0x8818CFF,
0x13218D00, 0x14818D09, 0x7E1AFF0, 0x1481AFF4, 0x7E1AFF5, 0x1481AFFC, 0x7E1AFFD, 0x1481AFFF,
0x7E1B000, 0x6E1B001, 0x7E1B120, 0x1481B123, 0x6E1B132, 0x1481B133, 0x6E1B150, 0x1481B153,
0x7E1B155, 0x1481B156, 0x7E1B164, 0x1481B168, 0xD41B170, 0x1481B2FC, 0x441BC00, 0x1481BC6B,
0x441BC70, 0x1481BC7D, 0x441BC80, 0x1481BC89, 0x441BC90, 0x1481BC9A, 0x441BC9C, 0x301BCA0,
0x1481BCA4, 0x301CC00, 0x1481CCFA, 0x301CD00, 0x1481CEB4, 0x721CF00, 0x1481CF2E, 0x721CF30,
0x1481CF47, 0x301CF50, 0x1481CFC4, 0x301D000, 0x1481D0F6, 0x301D100, 0x1481D127, 0x301D129,
0x721D167, 0x301D16A, 0x721D17B, 0x301D183, 0x721D185, 0x301D18C, 0x721D1AA, 0x301D1AE,
0x1481D1EB, 0x581D200, 0x1481D246, 0x301D2C0, 0x1481D2D4, 0x301D2E0, 0x1481D2F4, 0x301D300,
0x1481D357, 0x301D360, 0x1481D379, 0x301D400, 0x1481D455, 0x301D456, 0x1481D49D, 0x301D49E,
0x1481D4A0, 0x301D4A2, 0x1481D4A3, 0x301D4A5, 0x1481D4A7, 0x301D4A9, 0x1481D4AD, 0x301D4AE,
0x1481D4BA, 0x301D4BB, 0x1481D4BC, 0x301D4BD, 0x1481D4C4, 0x301D4C5, 0x1481D506, 0x301D507,
0x1481D50B, 0x301D50D, 0x1481D515, 0x301D516, 0x1481D51D, 0x301D51E, 0x1481D53A, 0x301D53B,
0x1481D53F, 0x301D540, 0x1481D545, 0x301D546, 0x1481D547, 0x301D54A, 0x1481D551, 0x301D552,
0x1481D6A6, 0x301D6A8, 0x1481D7CC, 0x301D7CE, 0x1101D800, 0x1481DA8C, 0x1101DA9B, 0x1481DAA0,
0x1101DAA1, 0x1481DAB0, 0x921DF00, 0x1481DF1F, 0x921DF25, 0x1481DF2B, 0x521E000, 0x1481E007,
0x521E008, 0x1481E019, 0x521E01B, 0x1481E022, 0x521E023, 0x1481E025, 0x521E026, 0x1481E02B,
0x381E030, 0x1481E06E, 0x381E08F, 0x1481E090, 0xD61E100, 0x1481E12D, 0xD61E130, 0x1481E13E,
0xD61E140, 0x1481E14A, 0xD61E14E, 0x1481E150, 0x1421E290, 0x1481E2AF, 0x14E1E2C0, 0x1481E2FA,
0x14E1E2FF, 0x1481E300, 0xCA1E4D0, 0x1481E4FA, 0xEE1E5D0, 0x1481E5FB, 0xEE1E5FF, 0x1481E600,
0x4C1E7E0, 0x1481E7E7, 0x4C1E7E8, 0x1481E7EC, 0x4C1E7ED, 0x1481E7EF, 0x4C1E7F0, 0x1481E7FF,
0xB61E800, 0x1481E8C5, 0xB61E8C7, 0x1481E8D7, 0x1E900, 0x1481E94C, 0x1E950, 0x1481E95A, 0x1E95E,
0x1481E960, 0x301EC71, 0x1481ECB5, 0x301ED01, 0x1481ED3E, 0x61EE00, 0x1481EE04, 0x61EE05,
0x1481EE20, 0x61EE21, 0x1481EE23, 0x61EE24, 0x1481EE25, 0x61EE27, 0x1481EE28, 0x61EE29,
0x1481EE33, 0x61EE34, 0x1481EE38, 0x61EE39, 0x1481EE3A, 0x61EE3B, 0x1481EE3C, 0x61EE42,
0x1481EE43, 0x61EE47, 0x1481EE48, 0x61EE49, 0x1481EE4A, 0x61EE4B, 0x1481EE4C, 0x61EE4D,
0x1481EE50, 0x61EE51, 0x1481EE53, 0x61EE54, 0x1481EE55, 0x61EE57, 0x1481EE58, 0x61EE59,
0x1481EE5A, 0x61EE5B, 0x1481EE5C, 0x61EE5D, 0x1481EE5E, 0x61EE5F, 0x1481EE60, 0x61EE61,
0x1481EE63, 0x61EE64, 0x1481EE65, 0x61EE67, 0x1481EE6B, 0x61EE6C, 0x1481EE73, 0x61EE74,
0x1481EE78, 0x61EE79, 0x1481EE7D, 0x61EE7E, 0x1481EE7F, 0x61EE80, 0x1481EE8A, 0x61EE8B,
0x1481EE9C, 0x61EEA1, 0x1481EEA4, 0x61EEA5, 0x1481EEAA, 0x61EEAB, 0x1481EEBC, 0x61EEF0,
0x1481EEF2, 0x301F000, 0x1481F02C, 0x301F030, 0x1481F094, 0x301F0A0, 0x1481F0AF, 0x301F0B1,
0x1481F0C0, 0x301F0C1, 0x1481F0D0, 0x301F0D1, 0x1481F0F6, 0x301F100, 0x1481F1AE, 0x301F1E6,
0x6E1F200, 0x301F201, 0x1481F203, 0x301F210, 0x1481F23C, 0x301F240, 0x1481F249, 0x301F250,
0x1481F252, 0x301F260, 0x1481F266, 0x301F300, 0x1481F6D8, 0x301F6DC, 0x1481F6ED, 0x301F6F0,
0x1481F6FD, 0x301F700, 0x1481F777, 0x301F77B, 0x1481F7DA, 0x301F7E0, 0x1481F7EC, 0x301F7F0,
0x1481F7F1, 0x301F800, 0x1481F80C, 0x301F810, 0x1481F848, 0x301F850, 0x1481F85A, 0x301F860,
0x1481F888, 0x301F890, 0x1481F8AE, 0x301F8B0, 0x1481F8BC, 0x301F8C0, 0x1481F8C2, 0x301F900,
0x1481FA54, 0x301FA60, 0x1481FA6E, 0x301FA70, 0x1481FA7D, 0x301FA80, 0x1481FA8A, 0x301FA8F,
0x1481FAC7, 0x301FACE, 0x1481FADD, 0x301FADF, 0x1481FAEA, 0x301FAF0, 0x1481FAF9, 0x301FB00,
0x1481FB93, 0x301FB94, 0x1481FBFA, 0x6220000, 0x1482A6E0, 0x622A700, 0x1482B73A, 0x622B740,
0x1482B81E, 0x622B820, 0x1482CEA2, 0x622CEB0, 0x1482EBE1, 0x622EBF0, 0x1482EE5E, 0x622F800,
0x1482FA1E, 0x6230000, 0x1483134B, 0x6231350, 0x148323B0, 0x30E0001, 0x148E0002, 0x30E0020,
0x148E0080, 0x72E0100, 0x148E01F0,
};
static const __swift_uint8_t _swift_stdlib_script_extensions_data[501] = {
0x5, 0x12, 0x19, 0x22, 0x24, 0x28, 0x29, 0x2E, 0x2A, 0x2C, 0x31, 0x49, 0x50, 0x52, 0x71, 0x86,
0xA, 0x1C, 0x1F, 0x49, 0x4E, 0x9C, 0xA1, 0xC, 0x49, 0x49, 0x4E, 0x49, 0x9C, 0x16, 0x19, 0x1C,
0x2C, 0x49, 0x71, 0x8E, 0x93, 0x16, 0x1C, 0x2C, 0x49, 0x79, 0x8E, 0x93, 0xA0, 0x16, 0x1C, 0x49,
0x9E, 0x29, 0x49, 0x8E, 0x90, 0x9C, 0x13, 0x16, 0x19, 0x1C, 0x2A, 0x2C, 0x49, 0x79, 0x90, 0x9E,
0xA0, 0x19, 0x24, 0x29, 0x2A, 0x3F, 0x49, 0x1C, 0x2C, 0x49, 0x71, 0x19, 0x22, 0x36, 0x49, 0x71,
0x90, 0x93, 0x9E, 0xA0, 0x4, 0x1C, 0x22, 0x2A, 0x2C, 0x36, 0x49, 0x71, 0x90, 0x93, 0x49, 0x9E,
0x22, 0x49, 0x90, 0x16, 0x1C, 0x49, 0x79, 0x16, 0x49, 0x93, 0x49, 0x8E, 0x26, 0x49, 0x1C, 0x49,
0xA0, 0x2C, 0x49, 0x71, 0xA0, 0x49, 0x90, 0x16, 0x22, 0x3F, 0x49, 0x90, 0x16, 0x22, 0x49, 0x90,
0x49, 0x8E, 0x90, 0x16, 0x49, 0x90, 0x13, 0x16, 0x2A, 0x49, 0x8E, 0x9C, 0x2C, 0x49, 0x79, 0x13,
0x49, 0xA0, 0x49, 0x19, 0x2C, 0x1C, 0x71, 0x1C, 0x29, 0x1C, 0x49, 0x4, 0x28, 0x29, 0x3, 0x27,
0x69, 0x33, 0x90, 0x9B, 0xA9, 0x3, 0x90, 0x9B, 0x0, 0x3, 0x27, 0x69, 0x33, 0x90, 0x9B, 0xA9, 0x0,
0x3, 0x55, 0x56, 0x76, 0x80, 0x33, 0x8A, 0x90, 0x3, 0x90, 0x3, 0x9B, 0xA9, 0x3, 0x33, 0xA, 0x1F,
0x2B, 0x2D, 0x2F, 0x3E, 0x49, 0x54, 0x78, 0x85, 0x97, 0x9A, 0x9F, 0xA, 0x1F, 0x2B, 0x2D, 0x2F,
0x3E, 0x49, 0x54, 0x78, 0x97, 0x9A, 0x9F, 0xA, 0x1F, 0x21, 0x2E, 0x58, 0x2B, 0x2D, 0x2F, 0x3E,
0x52, 0x54, 0x66, 0x77, 0x78, 0x47, 0x89, 0x8F, 0x96, 0x97, 0x9A, 0x9F, 0xA, 0x1F, 0x21, 0x2E,
0x58, 0x2B, 0x2D, 0x30, 0x2F, 0x3E, 0x4B, 0x52, 0x54, 0x66, 0x77, 0x78, 0x47, 0x89, 0x8F, 0x96,
0x97, 0x9A, 0x9F, 0x1F, 0x21, 0x3D, 0x52, 0xA, 0x14, 0x8F, 0x2F, 0x62, 0x2D, 0x46, 0x2B, 0x97,
0x3E, 0x66, 0xA2, 0x14, 0x63, 0x93, 0x28, 0x29, 0x49, 0x82, 0x10, 0x34, 0x92, 0x91, 0x60, 0x7E,
0xA, 0x1F, 0x2B, 0x3E, 0x1F, 0x1F, 0x2B, 0x3E, 0xA, 0x1F, 0x1F, 0x85, 0x1F, 0x3E, 0x54, 0x78,
0x97, 0x9A, 0x1F, 0x66, 0xA, 0x1F, 0x2B, 0x3E, 0x54, 0x66, 0x78, 0x89, 0x9A, 0x9F, 0xA2, 0x1F,
0x2B, 0x1F, 0x2B, 0x3E, 0xA2, 0xA, 0x66, 0x1C, 0x49, 0x90, 0x90, 0x49, 0x60, 0x7E, 0x0, 0x3, 0x12,
0x28, 0x29, 0x6E, 0x4F, 0x75, 0x12, 0x2C, 0x6E, 0x5D, 0x1F, 0x2B, 0x49, 0x19, 0x49, 0x5, 0x75,
0x5, 0x12, 0x28, 0x6E, 0x3D, 0x50, 0x83, 0x22, 0x0, 0x3, 0x6E, 0x31, 0x99, 0xC, 0x32, 0x31, 0x37,
0x3F, 0x60, 0xAA, 0xC, 0x32, 0x31, 0x37, 0x3F, 0x60, 0x7E, 0xAA, 0xC, 0x32, 0x31, 0x37, 0x3F,
0x31, 0xC, 0x32, 0x31, 0x37, 0x3F, 0x60, 0x9D, 0xAA, 0xC, 0x32, 0x31, 0x37, 0x3F, 0x4E, 0x60,
0x9D, 0xAA, 0xC, 0x32, 0x31, 0x37, 0x3F, 0xAA, 0xC, 0x31, 0x37, 0x3F, 0x31, 0x37, 0x3F, 0x31,
0x49, 0x1F, 0x21, 0x2D, 0x2F, 0x46, 0x3E, 0x3D, 0x52, 0x54, 0x5F, 0x66, 0x85, 0x47, 0x96, 0x9F,
0xA2, 0x1F, 0x21, 0x2D, 0x2F, 0x46, 0x3E, 0x3D, 0x52, 0x5F, 0x66, 0x85, 0x47, 0x96, 0x9F, 0xA2,
0x1F, 0x21, 0x2D, 0x2F, 0x46, 0x3D, 0x52, 0x5F, 0x47, 0x96, 0x9F, 0x1F, 0x21, 0x2D, 0x2F, 0x46,
0x3D, 0x52, 0x5F, 0x85, 0x47, 0x96, 0x9F, 0xA, 0x1F, 0xA2, 0x1F, 0x97, 0x42, 0x49, 0x63, 0xF,
0x3C, 0x3, 0x69, 0x3, 0x9B, 0x1D, 0x1B, 0x4D, 0x1B, 0x4D, 0x1B, 0x4C, 0x4D, 0x3, 0x19, 0x56, 0x76,
};
static const __swift_uint16_t _swift_stdlib_script_extensions_data_indices[670] = {
0x8000, 0x3810, 0x1017, 0x1017, 0x1017, 0x1017, 0x1019, 0x101B, 0x1017, 0x401D, 0x4025, 0x202D,
0x2831, 0x5836, 0x3041, 0x2047, 0x484B, 0x5054, 0x105E, 0x1860, 0x2063, 0x1867, 0x106A, 0x106C,
0x106A, 0x186E, 0x2071, 0x1075, 0x2877, 0x207C, 0x1075, 0x1880, 0x1075, 0x1883, 0x3086, 0x88C,
0x88C, 0x108D, 0x188F, 0x892, 0x892, 0x892, 0x892, 0x892, 0x892, 0x892, 0x892, 0x892, 0x892,
0x892, 0x892, 0x892, 0x1093, 0x1093, 0x1095, 0x1097, 0x1099, 0x1099, 0x1097, 0x189B, 0x389E,
0x389E, 0x18A5, 0x40A8, 0x48B0, 0x10B9, 0x10B9, 0x10B9, 0x10B9, 0x10B9, 0x10B9, 0x10B9, 0x10B9,
0x10B9, 0x10B9, 0x10B9, 0x18BB, 0x18BB, 0x18BB, 0x18BB, 0x18BB, 0x18BB, 0x18BB, 0x18BB, 0x18BB,
0x18BB, 0x10B9, 0x10BE, 0x68C0, 0x60CD, 0xA8D9, 0xB8EE, 0x2105, 0x2105, 0x2105, 0x2105, 0x2105,
0x2105, 0x2105, 0x2105, 0x2105, 0x2105, 0x1909, 0x1909, 0x1909, 0x1909, 0x1909, 0x1909, 0x1909,
0x1909, 0x1909, 0x1909, 0x110C, 0x110C, 0x110C, 0x110C, 0x110C, 0x110C, 0x110C, 0x110C, 0x110C,
0x110C, 0x110E, 0x110E, 0x110E, 0x110E, 0x110E, 0x110E, 0x110E, 0x110E, 0x110E, 0x110E, 0x1110,
0x1110, 0x1110, 0x1110, 0x1110, 0x1110, 0x1110, 0x1110, 0x1110, 0x1110, 0x1110, 0x1110, 0x1110,
0x1110, 0x1912, 0x1912, 0x1912, 0x1912, 0x1912, 0x1912, 0x1912, 0x1912, 0x1912, 0x1912, 0x1915,
0x1915, 0x1915, 0x1915, 0x1915, 0x1915, 0x1915, 0x1915, 0x1915, 0x1915, 0x1918, 0x91B, 0x91B,
0x91B, 0x211C, 0x211C, 0x1120, 0x1120, 0x1120, 0x2122, 0x926, 0x2122, 0x1927, 0x926, 0x112A,
0x112A, 0x112C, 0x112A, 0x112C, 0x312E, 0x926, 0x112C, 0x112C, 0x926, 0x926, 0x112C, 0x112A,
0x926, 0x926, 0x926, 0x926, 0x926, 0x926, 0x926, 0x1134, 0x112A, 0x926, 0x926, 0x112A, 0x926,
0x926, 0x926, 0x926, 0x5936, 0x1141, 0x2143, 0x112A, 0x112A, 0x947, 0x1141, 0x1141, 0x948, 0x88C,
0x88C, 0x1949, 0x94C, 0x194D, 0x1150, 0x3152, 0x2158, 0x195C, 0x115F, 0x1161, 0x3963, 0x96A,
0x196B, 0x1097, 0x116E, 0x116E, 0x116E, 0x116E, 0x116E, 0x116E, 0x116E, 0x116E, 0x116E, 0x116E,
0x116E, 0x116E, 0x116E, 0x116E, 0x116E, 0x116E, 0x3970, 0x4177, 0x297F, 0x984, 0x4185, 0x4185,
0x498D, 0x498D, 0x3196, 0x3196, 0x3196, 0x3196, 0x3196, 0x3196, 0x297F, 0x3196, 0x3196, 0x3196,
0x3196, 0x3196, 0x3196, 0x3196, 0x3196, 0x297F, 0x297F, 0x297F, 0x297F, 0x119C, 0x119C, 0x119C,
0x119C, 0x297F, 0x119E, 0x119E, 0x119E, 0x119E, 0x119E, 0x297F, 0x19A0, 0x19A0, 0x984, 0x984,
0x119E, 0x119E, 0x119E, 0x119E, 0x119E, 0x3196, 0x119E, 0x984, 0x984, 0x984, 0x984, 0x984, 0x984,
0x984, 0x984, 0x984, 0x984, 0x984, 0x984, 0x984, 0x984, 0x984, 0x984, 0x984, 0x984, 0x984, 0x984,
0x984, 0x984, 0x984, 0x984, 0x984, 0x984, 0x984, 0x984, 0x984, 0x984, 0x984, 0x984, 0x984, 0x984,
0x984, 0x984, 0x984, 0x984, 0x984, 0x984, 0x984, 0x984, 0x984, 0x984, 0x984, 0x984, 0x984, 0x984,
0x984, 0x984, 0x984, 0x984, 0x984, 0x984, 0x116E, 0x984, 0x984, 0x984, 0x984, 0x984, 0x984, 0x984,
0x984, 0x984, 0x984, 0x984, 0x984, 0x984, 0x984, 0x984, 0x984, 0x984, 0x984, 0x984, 0x984, 0x984,
0x984, 0x984, 0x984, 0x984, 0x984, 0x984, 0x984, 0x984, 0x984, 0x984, 0x984, 0x984, 0x984, 0x984,
0x984, 0x984, 0x984, 0x984, 0x984, 0x984, 0x984, 0x984, 0x984, 0x984, 0x984, 0x984, 0x984, 0x984,
0x984, 0x984, 0x984, 0x984, 0x984, 0x984, 0x984, 0x984, 0x984, 0x984, 0x984, 0x984, 0x984, 0x984,
0x984, 0x984, 0x984, 0x984, 0x984, 0x984, 0x984, 0x984, 0x984, 0x984, 0x984, 0x984, 0x984, 0x984,
0x984, 0x984, 0x984, 0x984, 0x984, 0x984, 0x984, 0x984, 0x984, 0x984, 0x984, 0x984, 0x984, 0x984,
0x984, 0x984, 0x984, 0x984, 0x984, 0x984, 0x984, 0x984, 0x984, 0x984, 0x984, 0x984, 0x984, 0x984,
0x984, 0x984, 0x984, 0x984, 0x984, 0x984, 0x984, 0x984, 0x984, 0x984, 0x984, 0x984, 0x984, 0x984,
0x984, 0x984, 0x984, 0x984, 0x984, 0x984, 0x984, 0x984, 0x984, 0x984, 0x984, 0x984, 0x984, 0x984,
0x984, 0x984, 0x984, 0x984, 0x984, 0x984, 0x984, 0x984, 0x984, 0x984, 0x984, 0x984, 0x984, 0x984,
0x984, 0x984, 0x984, 0x984, 0x984, 0x984, 0x984, 0x984, 0x984, 0x984, 0x984, 0x984, 0x984, 0x984,
0x984, 0x984, 0x1097, 0x11A3, 0x11A3, 0x11A3, 0x11A3, 0x11A3, 0x11A3, 0x11A3, 0x11A3, 0x81A5,
0x81A5, 0x81A5, 0x79B5, 0x79B5, 0x79B5, 0x59C4, 0x59C4, 0x61CF, 0x59C4, 0x19DB, 0x11DE, 0x19E0,
0x11E3, 0x11E5, 0x11E5, 0x11E7, 0x11E7, 0x297F, 0x297F, 0x3196, 0x3196, 0x3196, 0x3196, 0x3196,
0x119E, 0x119E, 0x119E, 0x19E9, 0x19E9, 0x11EC, 0x19EE, 0x19EE, 0x19EE, 0x19EE, 0x19EE, 0x19EE,
0x19EE, 0x19EE, 0x19EE, 0x19EE, 0x19EE, 0x19EE, 0x19EE, 0x19EE, 0x19EE, 0x19EE, 0x19EE, 0x19EE,
0x19EE, 0x19EE, 0x19EE, 0x19EE, 0x19EE, 0x19EE, 0x19EE, 0x19EE, 0x19EE, 0x19EE, 0x19EE, 0x19EE,
0x19EE, 0x19EE, 0x19EE, 0x19EE, 0x19EE, 0x19EE, 0x19EE, 0x19EE, 0x19EE, 0x19EE, 0x19EE, 0x19EE,
0x19EE, 0x19EE, 0x19EE, 0x11EC, 0x11EC, 0x11EC, 0x11EC, 0x11EC, 0x11EC, 0x11EC, 0x11EC, 0x11EC,
0x11F1, 0x11F1, 0x11F1, 0x11F1, 0x11F1, 0x11F1, 0x11F1, 0x11F1, 0x11F1, 0x11F1, 0x11F1, 0x11F1,
0x11F1, 0x11F1, 0x11F1, 0x11F1, 0x11F1, 0x11F1, 0x11F1, 0x11F1, 0x11F1, 0x11F1, 0x11F1, 0x11F1,
0x11F1, 0x11F1, 0x11F1, 0x11F1, 0x11F3, 0x1110, 0x1110, 0x1110, 0x1110, 0x1110, 0x1110, 0x1110,
0x96A, 0x96A, 0x96A, 0x96A, 0x984, 0x984, 0x984, 0x984, 0x984, 0x984, 0x984, 0x984, 0x984, 0x984,
0x984, 0x984, 0x984, 0x984, 0x984, 0x984, 0x984, 0x984, 0x984, 0x984,
};
static const __swift_uint16_t _swift_stdlib_script_extensions_ranks[208] = {
0x0, 0x17, 0x17, 0x1B, 0x22, 0x25, 0x25, 0x27, 0x0, 0x0, 0x0, 0x1, 0x1, 0x0, 0x0, 0x0, 0x8, 0x1A,
0x0, 0x13, 0x15, 0x15, 0x15, 0x0, 0x0, 0x5, 0x5, 0x5, 0x0, 0x1, 0x1, 0x2, 0xB, 0x0, 0xB, 0xC, 0xC,
0xC, 0x0, 0x0, 0x0, 0x0, 0xE, 0x0, 0x0, 0xA, 0xA, 0x14, 0x0, 0x0, 0xA, 0xA, 0xA, 0x0, 0xA, 0xE,
0xE, 0xE, 0x0, 0xA, 0xA, 0xA, 0xA, 0x0, 0x0, 0xA, 0xA, 0xA, 0x0, 0x0, 0x0, 0x3, 0x5, 0x0, 0x0,
0x0, 0x3, 0x3, 0x0, 0x20, 0x2B, 0x2B, 0x2B, 0x0, 0x4, 0x4, 0x4, 0x4, 0x0, 0x0, 0x4, 0x4, 0x4, 0x0,
0x1, 0x1, 0x1, 0x1, 0x0, 0x0, 0x1, 0x6, 0x6, 0x0, 0x1C, 0x3A, 0x3A, 0x3F, 0x0, 0x2, 0x2, 0x12,
0x32, 0x0, 0x10, 0x28, 0x58, 0x65, 0x0, 0x0, 0x1E, 0x1E, 0x3D, 0x0, 0x0, 0x0, 0x1, 0x1, 0x0, 0x8,
0x8, 0x8, 0x8, 0x0, 0x0, 0xA, 0xA, 0xA, 0x0, 0x3, 0x3, 0x3, 0x4, 0x0, 0x0, 0x2, 0x2, 0x2, 0x0,
0x2, 0x4, 0x4, 0x4, 0x0, 0x0, 0x6, 0x8, 0x8, 0x0, 0x0, 0x0, 0x0, 0xC, 0x0, 0x1D, 0x1D, 0x1D, 0x1D,
0x0, 0x0, 0x0, 0x10, 0x1C, 0x0, 0x0, 0x1, 0x1, 0x1, 0x0, 0x0, 0x0, 0x0, 0x2, 0x0, 0x2, 0x2, 0x2,
0x2, 0x0, 0x0, 0x0, 0x0, 0x3, 0x0, 0x0, 0x0, 0x4, 0x4, 0x0, 0x0, 0x0, 0x0, 0x10, 0x0, 0x2, 0x2,
0x2, 0x2,
};
static const __swift_uint64_t _swift_stdlib_script_extensions[209] = {
0x8, 0x1E800D8609F7D, 0x0, 0xF0000000, 0x80FC00000000000, 0x400C, 0x0, 0x80000400000000, 0x200000,
0x0, 0x0, 0x80000000000000, 0x0, 0x0, 0x0, 0x0, 0x2802E8010000000, 0xB7FFF00000000, 0x16039,
0xFFF8410000240003, 0x30, 0x0, 0x0, 0x210000, 0x0, 0xF8, 0x0, 0x0, 0x360000, 0x200000000000000,
0x0, 0x1000000000000000, 0xF801000000009800, 0x3B003F, 0x103FF, 0x10000000000000, 0x0, 0x0,
0x4C0000, 0x0, 0x0, 0x0, 0xFFF000060000, 0x580000, 0x0, 0xFFC00000, 0x0, 0xFFC00000, 0x660000,
0x0, 0xFFC0, 0x0, 0x0, 0x7A0000, 0xFFC0000000000000, 0xF, 0x0, 0x0, 0x840000, 0xFFC000000000, 0x0,
0x0, 0x0, 0x920000, 0x0, 0x3FF0000, 0x0, 0x0, 0x9C0800, 0x0, 0x0, 0x38000000, 0x6000000000,
0xA70000, 0x0, 0x0, 0x2C00000000, 0x0, 0xAC0000, 0xFFFFFFFF00000000, 0x7FF, 0x0, 0x0, 0xAF0000,
0x500000000000003, 0x0, 0x0, 0x0, 0xDA0000, 0x0, 0x2400800000008000, 0x0, 0x0, 0xDE0000, 0x1, 0x0,
0x0, 0x0, 0xE20000, 0x0, 0x8000000000, 0xA1003, 0x0, 0xE30000, 0xFF4EFFFF00000000, 0xF0BF3C00FFFB,
0x0, 0x11E00, 0xE90000, 0x18000000, 0x0, 0xFFFF000000000000, 0xFFFFFFFF00000000, 0x128803F,
0xFFFF000000000000, 0xFFFFFF, 0xFFFFFFFFFFFF0000, 0xFFF0001, 0x1618000, 0x0, 0xF801FFFFFF000000,
0x0, 0x7FFFFFFF00000000, 0x1C70000, 0x0, 0x0, 0x800000000000, 0x0, 0x2040000, 0xFF000000000000,
0x0, 0x0, 0x0, 0x2050000, 0x0, 0x3FF0000, 0x0, 0x0, 0x20D0000, 0x400000000000000A, 0x0, 0x0,
0x80000000, 0x2170000, 0x0, 0xC0000000, 0x0, 0x0, 0x21B0000, 0x2004, 0x600000, 0x0, 0x0,
0x21D0000, 0x0, 0x1003E00000000, 0xC0000000, 0x0, 0x2210000, 0x0, 0x0, 0x0, 0xFF87000000000000,
0x229FFFF, 0xFF8FFFFF, 0x0, 0x0, 0x0, 0x2450000, 0x0, 0x0, 0xFFFF000000000000, 0xFFF, 0x2620000,
0x0, 0x4, 0x0, 0x0, 0x27E0000, 0x0, 0x0, 0x0, 0xA00000000, 0x27F0000, 0x1800, 0x0, 0x0, 0x0,
0x2810000, 0x0, 0x0, 0x0, 0xB000000000000, 0x2830000, 0x0, 0x0, 0xF, 0x0, 0x2860000, 0x0, 0x0,
0x0, 0xFFFF000000000000, 0x28A0003, 0x3, 0x0, 0x0, 0x0, 0x29C0000,
};
#endif // #ifndef SCRIPT_DATA_H

218
Shared/include/WordData.h Normal file
View File

@@ -0,0 +1,218 @@
//===----------------------------------------------------------------------===//
//
// This source file is part of the Swift.org open source project
//
// Copyright (c) 2022-2025 Apple Inc. and the Swift project authors
// Licensed under Apache License v2.0 with Runtime Library Exception
//
// See https://swift.org/LICENSE.txt for license information
// See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
//
//===----------------------------------------------------------------------===//
// This was auto-generated by utils/gen-unicode-data/GenWordBreak,
// please do not edit this file yourself!
#ifndef WORD_DATA_H
#define WORD_DATA_H
#include "shims/SwiftStdint.h"
#define WORD_BREAK_DATA_COUNT 1155
static const __swift_uint32_t _swift_stdlib_words[1155] = {
0x200000, 0x60FE4D, 0x4801C00, 0xE11A33, 0x600D54, 0xE02DA0, 0x211075, 0x81D53B, 0x4009C7,
0x8012C2, 0xA02119, 0x20A8FF, 0x5410787, 0x2113B7, 0x1416130, 0x141EE29, 0x2006D5, 0x1400B66,
0x2800F71, 0xA01880, 0x601FC2, 0x202716, 0x200A610, 0xC0AB09, 0x6A10140, 0x2610B60, 0x41123F,
0x2116B8, 0x411D67, 0x21B155, 0x5A1E100, 0x341F150, 0xA6003A3, 0xA00829, 0x600A8F, 0x400C60,
0xE00E34, 0x80109A, 0x801712, 0x1401A80, 0x601CF7, 0x20203C, 0x202388, 0x402934, 0x20303D,
0x60A803, 0x60AA40, 0x140FB1F, 0x340FF41, 0x48104D8, 0x210A00, 0x810EFC, 0x4611150, 0xA11335,
0x6011480, 0x81193B, 0x211C40, 0x1411F50, 0x8016E40, 0x81D1AA, 0x641D7CE, 0x141E5F1, 0x41EE61,
0x1001F680, 0x2000BA, 0x36005D0, 0x16007A6, 0x200950, 0x400A32, 0x600B01, 0x200BD0, 0x400CDD,
0xE00DC0, 0x400F18, 0x801056, 0x201258, 0xC013F8, 0x40017B4, 0x1801930, 0x1201B6B, 0x601CBD,
0x1001F50, 0x602008, 0x202071, 0x80213C, 0x2025C0, 0x20274E, 0x402CF2, 0x4002DE0, 0x20031F0,
0xA00A6A0, 0x40A880, 0x5E0A984, 0x40AAB7, 0x140ABF0, 0x2D60FBD3, 0x20FF07, 0x60FFF9, 0xA10376,
0x1E105A3, 0x2E10860, 0x210A3F, 0x1410D40, 0x2E10FE0, 0x14110F0, 0x4111CE, 0x18112DF, 0xA1135D,
0x2113D3, 0x8115D8, 0x14118E0, 0xE119D1, 0x211A9D, 0xC11D31, 0x811EF3, 0x2013430, 0x6016B00,
0x216FE3, 0x141CCF0, 0x181D4AE, 0x321D6FC, 0xC1DF25, 0x81E2EC, 0xE1E944, 0x61EE4D, 0x221EE8B,
0x21F21A, 0x5E1F90C, 0x20005F, 0x80037A, 0x5200560, 0x5600620, 0x14006F0, 0x2007FD, 0x54008A0,
0x40098F, 0x4009F0, 0x800A59, 0x600AC7, 0x200B3D, 0x200B9C, 0x200C3C, 0x1400CAA, 0x600D0E,
0x2400D85, 0x1000DD8, 0x1200EB4, 0x200F39, 0x4800F99, 0x801071, 0x56010D0, 0x4201290, 0x8601318,
0x3401681, 0x401752, 0x20180E, 0x2018AA, 0xA01A17, 0x5E01B05, 0x401BAE, 0x1401C50, 0x201CED,
0x22C01E00, 0x3E01F5F, 0x1A01FE0, 0x202024, 0x202054, 0x202102, 0x202128, 0xC02194, 0x68024B6,
0xE402614, 0x402733, 0x602795, 0x202B55, 0x7002D30, 0xE02DC0, 0xC0302A, 0x8030FC, 0xB003300,
0x80A66F, 0x20A7D3, 0x2E0A80C, 0x240A8E0, 0x2E0A930, 0x20A9E5, 0x140AA50, 0xA0AAEB, 0x740AB30,
0xE0FB00, 0x40FB40, 0x200FE00, 0x20FE55, 0x20FF1A, 0xC0FFC2, 0x41003C, 0x2102E0, 0xA103D1,
0x1E1057C, 0x26E10600, 0x581080A, 0x2C10900, 0x810A10, 0x3810AC9, 0x6610CC0, 0x5410E80, 0x1610F46,
0x1411066, 0x2110BD, 0x1411136, 0x6011183, 0x2411200, 0x81128A, 0x41130F, 0x411347, 0x1411380,
0x8113C7, 0x811447, 0x14114D0, 0x211644, 0x1411730, 0x411915, 0x411942, 0x2119E4, 0x211A50,
0x1211C00, 0x1C11CA9, 0x211D46, 0xA11D93, 0x1A11F04, 0xDE12400, 0xF3613460, 0x9E16A70, 0x2A16B63,
0x6E16F51, 0xE1AFF5, 0x121BC80, 0xC1D16D, 0x41D49E, 0x81D507, 0x2A81D552, 0x321D770, 0x21DA84,
0x41E023, 0x21E14E, 0x141E4F0, 0x1E1E7F0, 0x361EE05, 0x21EE42, 0x21EE59, 0x81EE74, 0x2001F000,
0x21F18E, 0x3641F249, 0x101F848, 0x7FC1FC00, 0x1400030, 0x2000AD, 0x44002DE, 0x200387, 0x4C00531,
0x2005BF, 0xC00600, 0x20066C, 0x4006E5, 0x200711, 0x12007EB, 0x120081B, 0x3000870, 0x6C00904,
0x1400966, 0x8009B6, 0x4009DC, 0xC00A05, 0xA00A3E, 0x600A72, 0xA00AB5, 0x400AE2, 0xE00B2A,
0x600B55, 0xC00B85, 0x1800BAE, 0x1000C05, 0x800C4A, 0x600C81, 0xE00CBE, 0x400CF1, 0xE00D3E,
0x1400D66, 0x1200DB3, 0xC00DCF, 0x400DF2, 0x1400E50, 0x1400ED0, 0x200F35, 0x1000F40, 0xA00F88,
0x280102B, 0x601062, 0x20108F, 0x2010C7, 0x80124A, 0x5201260, 0xE012B8, 0x72012D8, 0x2001380,
0x220166F, 0x16016EE, 0x601732, 0x60176E, 0x14017E0, 0x1401810, 0x4401887, 0x3E01900, 0x16019D0,
0x3A01A60, 0x3E01AB0, 0x1001B45, 0x3C01B83, 0x5801BBA, 0x1401C40, 0x1601C80, 0x2A01CD4, 0x201CF4,
0x18001D00, 0x4C01F20, 0x201F5B, 0xE01FB6, 0x801FD0, 0xE01FF6, 0x40200E, 0xA0202A, 0x202044,
0xA02060, 0x1A02090, 0x140210A, 0x202124, 0x160212F, 0x20214E, 0x40231A, 0x16023E9, 0x4025AA,
0xC02600, 0x1602708, 0x202721, 0x202747, 0x202757, 0x2027B0, 0x402B1B, 0x802CEB, 0x202D27,
0x202D7F, 0xE02DB0, 0xE02DD0, 0x203000, 0xA03031, 0x40309B, 0xBC03131, 0x203299, 0x5C0A4D0,
0x40A62A, 0x3E0A67F, 0x18C0A708, 0x200A7F2, 0x80A807, 0x20A82C, 0x240A8B4, 0x20A8FB, 0x380A90A,
0x3A0A960, 0x20A9CF, 0x520AA00, 0x100AA44, 0x20AAB0, 0x20AAC1, 0x40AAF5, 0xE0AB20, 0x100ABE3,
0x2E0D7B0, 0x20FB1D, 0xA0FB38, 0x140FB46, 0x6C0FD92, 0x200FE20, 0x20FE52, 0x10E0FE76, 0x20FF0E,
0x340FF21, 0x40FF9E, 0xC0FFD2, 0x341000D, 0x1C10050, 0x3A10280, 0x3C1032D, 0x48103A0, 0x14104A0,
0x6810530, 0x410594, 0x4105BB, 0x1010760, 0xC10800, 0x21083C, 0x26108E0, 0x7010980, 0x410A05,
0x3A10A19, 0x3A10A80, 0x6C10B00, 0x9210C00, 0x810D24, 0xA10D69, 0x410EB0, 0x210F27, 0x810F82,
0x6A11003, 0x411071, 0x5A11083, 0x2110CD, 0x4811103, 0x411145, 0x211176, 0x8111C1, 0x2111DA,
0x181122C, 0xE11280, 0x141129F, 0x811300, 0xE1132A, 0x21133D, 0x211350, 0xE11366, 0x21138E,
0x2113C2, 0x2113D1, 0x6A11400, 0x21145E, 0x4114C4, 0xE115AF, 0x6011600, 0x5611680, 0x28116D0,
0x1E1182C, 0x211909, 0xC11930, 0x211940, 0x10119A0, 0x2119E1, 0x1411A01, 0x811A3B, 0x5C11A5C,
0x4211BC0, 0x1011C2F, 0x3C11C72, 0x411D08, 0x411D3C, 0x1411D50, 0xA11D8A, 0x1411DA0, 0x211F02,
0xE11F34, 0x211FB0, 0xC212F90, 0xC13441, 0x3C16100, 0x3E16A40, 0x3C16AD0, 0x816B40, 0x5A16D40,
0x216F4F, 0x1A16F93, 0x416FF0, 0x21B000, 0xD61BC00, 0x41BC9D, 0x2E1CF30, 0x101D17B, 0xAA1D400,
0x41D4A5, 0xE1D4BD, 0xE1D516, 0x21D546, 0x321D6C2, 0x321D736, 0x321D7AA, 0x641DA3B, 0x1E1DAA1,
0x221E008, 0x7C1E030, 0xE1E137, 0x21E2AE, 0x381E4D0, 0x41E5EE, 0x81E7E8, 0xE1E8D0, 0x141E950,
0x21EE24, 0x21EE39, 0x21EE49, 0x21EE54, 0x21EE5D, 0x81EE67, 0x21EE7E, 0xA1EEA5, 0x21F12F,
0x341F170, 0x721F1AD, 0x121F232, 0x27C1F400, 0x561F7D5, 0x101F888, 0x3721F947, 0xC0E0020,
0x20002C, 0x20003B, 0x2000A9, 0x2000B5, 0x3E000D8, 0xA00370, 0x20037F, 0x20038C, 0xE00483,
0x20055E, 0x20058A, 0x4005C4, 0x2005F3, 0x1600610, 0x1400660, 0x200670, 0x2006DD, 0x8006EA,
0x2006FF, 0x3600730, 0x14007C0, 0x2007F8, 0x800816, 0x600825, 0x600859, 0x400890, 0x2008E2,
0x20093D, 0x1400958, 0x600981, 0xE009AA, 0x2009BD, 0x2009CE, 0x4009E2, 0x2009FE, 0x2C00A13,
0x400A38, 0x600A4B, 0x1400A66, 0x600A81, 0xE00AAA, 0x200ABD, 0x200AD0, 0x200AF9, 0x400B0F,
0xA00B35, 0x400B47, 0x600B5F, 0x200B82, 0x800B92, 0x400BA3, 0x600BC6, 0x1400BE6, 0x2E00C12,
0xE00C3E, 0x600C58, 0x1400C66, 0x600C8E, 0x200CBC, 0x800CCA, 0x400CE2, 0x800D00, 0x400D3B,
0x800D4A, 0x600D5F, 0x600D81, 0x3000D9A, 0x200DBD, 0x200DCA, 0x200DD6, 0x1400DE6, 0x200E31,
0x1000E47, 0x200EB1, 0xE00EC8, 0x200F00, 0x1400F20, 0x200F37, 0x400F3E, 0x4800F49, 0x400F86,
0x1600F8D, 0x200FC6, 0x1401040, 0x60105E, 0xE01067, 0x1801082, 0x1401090, 0x4C010A0, 0x2010CD,
0x29A010FC, 0xE01250, 0x80125A, 0x80128A, 0x8012B2, 0x2012C0, 0x1E012C8, 0x801312, 0x60135D,
0xAC013A0, 0x4D801401, 0x201680, 0x96016A0, 0x2401700, 0x260171F, 0x2401740, 0x1A01760, 0x401772,
0x2017DD, 0x60180B, 0x20180F, 0xB201820, 0x401885, 0x2018A9, 0x8C018B0, 0x1801920, 0x1401946,
0x2E01A00, 0x1401A55, 0x201A7F, 0x1401A90, 0xA01B00, 0x2201B34, 0x1401B50, 0x601B80, 0x1A01BA1,
0x1401BB0, 0x1C01BE6, 0x2801C24, 0x601C4D, 0x4801C5A, 0x5601C90, 0x601CD0, 0x801CE9, 0xC01CEE,
0x401CF5, 0x201CFA, 0x8001DC0, 0xC01F18, 0xC01F48, 0x201F59, 0x201F5D, 0x6A01F80, 0x201FBE,
0xE01FC6, 0xC01FD6, 0x601FF2, 0xE02000, 0x20200C, 0x402018, 0x202027, 0x20202F, 0x40203F,
0x202049, 0x20205F, 0x1402066, 0x20207F, 0x42020D0, 0x202107, 0x202115, 0x202122, 0x202126,
0x80212A, 0x202139, 0xA02145, 0x5202160, 0x4021A9, 0x202328, 0x2023CF, 0x6023F8, 0x2024C2,
0x2025B6, 0x8025FB, 0x1802607, 0xEC02690, 0x202714, 0x20271D, 0x202728, 0x202744, 0x20274C,
0x602753, 0xA02763, 0x2027A1, 0x2027BF, 0x602B05, 0x202B50, 0x1CA02C00, 0x602CEF, 0x4C02D00,
0x202D2D, 0x202D6F, 0x2E02D80, 0xE02DA8, 0xE02DB8, 0xE02DC8, 0xE02DD8, 0x202E2F, 0x203005,
0x203030, 0x40303B, 0x403099, 0xB6030A0, 0x5603105, 0x40031A0, 0x203297, 0x5E032D0, 0x91A0A000,
0x21A0A500, 0x140A620, 0x5E0A640, 0x140A674, 0x40A69E, 0x40A6F0, 0x40A7D0, 0x100A7D5, 0x20A802,
0x20A806, 0x20A80B, 0xA0A823, 0x680A840, 0x640A882, 0x140A8D0, 0xC0A8F2, 0x40A8FD, 0x140A900,
0x100A926, 0x1A0A947, 0x80A980, 0x1C0A9B3, 0x140A9D0, 0x140A9F0, 0x1C0AA29, 0x20AA43, 0x40AA4C,
0x60AA7B, 0x60AAB2, 0x40AABE, 0x160AAE0, 0x60AAF2, 0xC0AB01, 0xC0AB11, 0xE0AB28, 0xE60AB70,
0x40ABEC, 0x7480AC00, 0x620D7CB, 0xA0FB13, 0x20FB1E, 0x1A0FB2A, 0x20FB3E, 0x40FB43, 0xC40FB50,
0x800FD50, 0x180FDF0, 0x20FE13, 0x40FE33, 0x20FE50, 0x20FE54, 0xA0FE70, 0x20FEFF, 0x20FF0C,
0x140FF10, 0x20FF1B, 0x20FF3F, 0x700FF66, 0x3E0FFA0, 0xC0FFCA, 0x60FFDA, 0x1810000, 0x2610028,
0x1E1003F, 0xF610080, 0x2101FD, 0x62102A0, 0x4010300, 0x4C10350, 0x3C10380, 0x10103C8, 0x13C10400,
0x48104B0, 0x5010500, 0x1610570, 0xE1058C, 0x1610597, 0xE105B3, 0x68105C0, 0x2C10740, 0xC10780,
0x12107B2, 0x210808, 0x410837, 0x2E1083F, 0x3E10880, 0x4108F4, 0x3410920, 0x4109BE, 0x610A01,
0x810A0C, 0x610A15, 0x610A38, 0x3A10A60, 0x1010AC0, 0x410AE5, 0x2C10B40, 0x2410B80, 0x6610C80,
0x4810D00, 0x1410D30, 0x3810D4A, 0x2E10D6F, 0x410EAB, 0x610EC2, 0x3A10F00, 0x2C10F30, 0x2410F70,
0x2A10FB0, 0x611000, 0x1E11038, 0x211070, 0x411073, 0x81107F, 0x16110B0, 0x2110C2, 0x32110D0,
0x611100, 0x1C11127, 0x211144, 0x211147, 0x211173, 0x611180, 0x1C111B3, 0x8111C9, 0x14111D0,
0x2111DC, 0x3211213, 0x21123E, 0x211241, 0x211288, 0x1E1128F, 0x5E112B0, 0x14112F0, 0x1011305,
0x2C11313, 0x411332, 0x41133B, 0xE1133E, 0x61134B, 0x211357, 0x411362, 0xA11370, 0x21138B,
0x4C11390, 0x12113B8, 0x2113C5, 0xA113CC, 0x2113D2, 0x4113E1, 0x2411435, 0x1411450, 0x61145F,
0x28114B0, 0x2114C7, 0x5E11580, 0x12115B8, 0x4115DC, 0x2211630, 0x1411650, 0x1A116AB, 0x14116C0,
0x1E1171D, 0x5811800, 0x80118A0, 0x10118FF, 0x101190C, 0x3011918, 0x411937, 0x21193F, 0x211941,
0x1411950, 0x4E119AA, 0xE119DA, 0x2119E3, 0x211A00, 0x5011A0B, 0x211A3A, 0x211A47, 0x1611A51,
0x2011A8A, 0x9211AB0, 0x1411BF0, 0x4A11C0A, 0x1011C38, 0x1411C50, 0x2C11C92, 0xE11D00, 0x4C11D0B,
0x211D3A, 0xE11D3F, 0x211D47, 0xC11D60, 0x4011D6A, 0x411D90, 0x211D98, 0x2611EE0, 0x411F00,
0x211F03, 0x4411F12, 0xA11F3E, 0x211F5A, 0x73412000, 0x18812480, 0x86013000, 0x213440, 0x1E13447,
0x48E14400, 0x241611E, 0x47216800, 0x1416A60, 0x1416AC0, 0xA16AF0, 0xE16B30, 0x1416B50, 0x2616B7D,
0x1416D70, 0x9616F00, 0x216F50, 0x816F8F, 0x416FE0, 0x216FE4, 0x81AFF0, 0x41AFFD, 0x61B120,
0x81B164, 0x1A1BC70, 0x141BC90, 0x81BCA0, 0x5C1CF00, 0xA1D165, 0x101D173, 0xE1D185, 0x61D242,
0x8E1D456, 0x21D4A2, 0x81D4A9, 0x21D4BB, 0x821D4C5, 0x101D50D, 0x381D51E, 0xA1D540, 0xE1D54A,
0x321D6A8, 0x3E1D6DC, 0x3E1D716, 0x3E1D750, 0x3E1D78A, 0x101D7C4, 0x6E1DA00, 0x21DA75, 0xA1DA9B,
0x3E1DF00, 0xE1E000, 0xE1E01B, 0xA1E026, 0x21E08F, 0xE1E130, 0x141E140, 0x3C1E290, 0x581E2C0,
0x141E2F0, 0x81E4EC, 0x3C1E5D0, 0x21E5F0, 0xE1E7E0, 0x41E7ED, 0x18A1E800, 0x881E900, 0x21E94B,
0x81EE00, 0x41EE21, 0x21EE27, 0x81EE34, 0x21EE3B, 0x21EE47, 0x21EE4B, 0x41EE51, 0x21EE57,
0x21EE5B, 0x21EE5F, 0x21EE64, 0xE1EE6C, 0x81EE79, 0x141EE80, 0x61EEA1, 0x221EEAB, 0x61F10D,
0x341F130, 0xC1F16C, 0x41F17E, 0x141F191, 0x1E1F201, 0x21F22F, 0x81F23C, 0xA1F3FB, 0x2141F546,
0x181F774, 0x81F80C, 0xC1F85A, 0xA41F8AE, 0x141F93C, 0x141FBF0, 0x2E0001, 0x1E0E0100, 0x200020,
0x20002E, 0x20003A, 0x3400041, 0x3400061, 0x2000AA, 0x2000AE, 0x2000B7, 0x2E000C0, 0x3C0000F8,
0xE000300, 0x400376, 0x20037E, 0x200386, 0x600388, 0x280038E, 0x116003F7, 0x14C0048A, 0x800559,
0x20055F, 0x200589, 0x5A00591, 0x4005C1, 0x2005C7, 0x8005EF, 0x2005F4, 0x40060C, 0x20061C,
0x2A0064B, 0x20066B, 0x40066E, 0xC600671, 0xE006D6, 0xC006DF, 0x4006E7, 0x4006EE, 0x6006FA,
0x40070F, 0x3C00712, 0xB20074D, 0x2007B1, 0x42007CA, 0x4007F4, 0x2007FA, 0x2C00800, 0x20081A,
0x200824, 0x200828, 0x3200840, 0x1600860, 0xC00889, 0x1200897, 0x30008CA, 0x42008E3, 0x60093A,
0x240093E, 0xE00951, 0x400962, 0x2000971, 0x1000985, 0x2C00993, 0x2009B2, 0x2009BC, 0xE009BE,
0x6009CB, 0x2009D7, 0x6009DF, 0x14009E6, 0x2009FC, 0x600A01, 0x400A0F, 0xE00A2A, 0x400A35,
0x200A3C, 0x400A47, 0x200A51, 0x200A5E, 0x400A70, 0x200A75, 0x1200A85, 0x2C00A93, 0x400AB2,
0x200ABC, 0x1000ABE, 0x600ACB, 0x400AE0, 0x1400AE6, 0xC00AFA, 0x1000B05, 0x2C00B13, 0x400B32,
0x200B3C, 0xE00B3E, 0x600B4B, 0x400B5C, 0x400B62, 0x200B71, 0x200B83, 0x600B8E, 0x400B99,
0x400B9E, 0x600BA8, 0xA00BBE, 0x800BCA, 0x200BD7, 0xA00C00, 0x600C0E, 0x2000C2A, 0x200C3D,
0x600C46, 0x400C55, 0x200C5D, 0x400C62, 0x200C80, 0x1000C85, 0x2E00C92, 0xA00CB5, 0x200CBD,
0x600CC6, 0x400CD5, 0x400CE0, 0x1400CE6, 0x200CF3, 0x1200D04, 0x5200D12, 0x200D3D, 0x600D46,
0x200D4E, 0x200D57, 0x400D62, 0xC00D7A,
};
static const __swift_uint8_t _swift_stdlib_words_data[1155] = {
0x0, 0x9, 0x4, 0x0, 0x4, 0x4, 0x4, 0x4, 0x0, 0x4, 0x4, 0x0, 0x4, 0x4, 0x8, 0x4, 0x4, 0x8, 0x0,
0x4, 0x4, 0xB, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x2, 0x4, 0x4, 0x4, 0x0, 0x4, 0x4, 0x0, 0x0,
0x0, 0x8, 0x0, 0xB, 0xB, 0xB, 0xB, 0x4, 0x4, 0x3, 0x4, 0x4, 0x4, 0x0, 0x4, 0x4, 0x4, 0x0, 0x4,
0x8, 0x4, 0x0, 0x8, 0x8, 0x4, 0xB, 0x4, 0x3, 0x0, 0x4, 0x4, 0x0, 0x4, 0x4, 0x4, 0x0, 0x0, 0x4,
0x4, 0x0, 0x0, 0x0, 0x4, 0x4, 0xA, 0x4, 0x4, 0xB, 0xB, 0x4, 0x0, 0x2, 0x4, 0x0, 0x4, 0x0, 0x8,
0x4, 0x5, 0x1, 0x0, 0x4, 0x4, 0x0, 0x8, 0x4, 0x8, 0x0, 0x0, 0x4, 0x4, 0x4, 0x8, 0x0, 0x4, 0x0,
0x0, 0x1, 0x4, 0x4, 0x8, 0x4, 0x4, 0x4, 0x0, 0x0, 0x4, 0x4, 0xB, 0xB, 0x9, 0x4, 0x4, 0x4, 0x8,
0x0, 0x4, 0x4, 0x4, 0x4, 0x0, 0x4, 0x4, 0x0, 0x4, 0x4, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4, 0x4,
0x4, 0x4, 0x0, 0x1, 0x4, 0x0, 0x4, 0x4, 0x8, 0x0, 0x4, 0x4, 0x4, 0x5, 0x9, 0x4, 0x4, 0xB, 0x4,
0xB, 0xB, 0xB, 0xB, 0x4, 0x4, 0x0, 0x2, 0x2, 0x0, 0x4, 0x4, 0x0, 0x4, 0x0, 0x8, 0x0, 0x4, 0x4,
0x3, 0x0, 0x6, 0x6, 0x4, 0x4, 0x0, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x0, 0x8, 0x8,
0x8, 0x4, 0x4, 0x4, 0x4, 0x0, 0x4, 0x0, 0x4, 0x8, 0x4, 0x8, 0x4, 0x0, 0x0, 0x4, 0x4, 0x0, 0x4,
0x0, 0x4, 0x4, 0x4, 0x4, 0x4, 0x0, 0x2, 0x4, 0x0, 0x4, 0x4, 0x4, 0x4, 0x0, 0x0, 0x4, 0x8, 0x4,
0x4, 0x4, 0x4, 0x4, 0xB, 0xB, 0xB, 0xB, 0xB, 0x8, 0x1, 0x4, 0x6, 0x4, 0x0, 0x8, 0x7, 0x4, 0x0,
0x0, 0x0, 0x4, 0x4, 0x8, 0x4, 0x4, 0x4, 0x0, 0x4, 0x4, 0x0, 0x4, 0x0, 0x4, 0x4, 0x4, 0x0, 0x0,
0x0, 0x4, 0x0, 0x8, 0x4, 0x0, 0x0, 0x8, 0x8, 0x0, 0x4, 0x4, 0x0, 0x0, 0x0, 0x4, 0x4, 0x4, 0x4,
0x4, 0x4, 0x4, 0x4, 0x0, 0x4, 0x8, 0x8, 0x4, 0x4, 0x8, 0x0, 0x0, 0x4, 0x4, 0x4, 0x8, 0x4, 0x0,
0x0, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x1, 0x1, 0x7, 0x1, 0x4, 0x4, 0x4, 0x4, 0x4, 0xB, 0xB, 0xB,
0xB, 0xB, 0xB, 0xB, 0xB, 0xB, 0xB, 0x4, 0x4, 0x0, 0x4, 0x4, 0xA, 0x2, 0x2, 0x4, 0xB, 0x4, 0x4,
0x4, 0x4, 0x4, 0x4, 0x0, 0x0, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x0, 0x0, 0x0, 0x4, 0x0, 0x4, 0x3,
0x3, 0x3, 0x4, 0x0, 0x5, 0x4, 0x5, 0x4, 0x0, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x8, 0x4, 0x4, 0x4,
0x4, 0x4, 0x4, 0x4, 0x4, 0x0, 0x4, 0x4, 0x4, 0x4, 0x0, 0x0, 0x4, 0x4, 0x0, 0x4, 0x4, 0x4, 0x8,
0x4, 0x0, 0x4, 0x4, 0x4, 0x0, 0x4, 0x4, 0x0, 0x4, 0x4, 0x4, 0x0, 0x4, 0x0, 0x4, 0x4, 0x0, 0x4,
0x0, 0x4, 0x4, 0x8, 0x0, 0x4, 0x0, 0x0, 0x4, 0x4, 0x0, 0x0, 0x4, 0x4, 0x0, 0x4, 0x4, 0x0, 0x8,
0x0, 0x8, 0x4, 0x0, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x0, 0x4, 0x0, 0x2, 0x4, 0x0, 0x0,
0x0, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x0, 0x0, 0x0, 0x4, 0x4, 0x0, 0x4, 0x0, 0x4, 0x0,
0x8, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0xB, 0x4, 0xB, 0xB, 0xB, 0xB, 0xB, 0xB, 0x0, 0x7,
0x7, 0xB, 0x4, 0x4, 0x4, 0x4, 0x4, 0x0, 0x4, 0x4, 0x0, 0x4, 0x0, 0x8, 0x0, 0x8, 0x0, 0x4, 0x0,
0x8, 0x7, 0x0, 0x0, 0x0, 0x8, 0x8, 0x4, 0x4, 0x0, 0x4, 0x4, 0x4, 0x0, 0x0, 0x4, 0x4, 0x0, 0x8,
0x0, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x0, 0x4, 0x0, 0x4, 0x4, 0x0, 0x8, 0x4, 0x0, 0x4, 0x8, 0x4,
0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4, 0x0, 0x4, 0x4, 0x0, 0x0, 0x8, 0x0, 0x0, 0x0, 0x0, 0x4, 0x8,
0x0, 0x0, 0x4, 0x0, 0x0, 0x0, 0x8, 0x0, 0x0, 0x0, 0x8, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4,
0x4, 0x4, 0x0, 0x4, 0x4, 0xA, 0x4, 0x4, 0x4, 0x4, 0x4, 0x0, 0x0, 0x0, 0x0, 0x4, 0x0, 0x0, 0x4,
0x0, 0x8, 0x4, 0x0, 0x0, 0x8, 0x0, 0x0, 0x8, 0x0, 0x0, 0x8, 0x0, 0x0, 0x4, 0x4, 0x4, 0x0, 0x4,
0x4, 0x4, 0x4, 0x0, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0xA, 0x0, 0x5, 0x6, 0x9, 0x9,
0xB, 0xA, 0x1, 0x4, 0x0, 0x4, 0x4, 0xB, 0x4, 0x4, 0xB, 0x4, 0x4, 0xB, 0xB, 0xB, 0xB, 0xB, 0xB,
0xB, 0xB, 0xB, 0xB, 0xB, 0xB, 0xB, 0xB, 0xB, 0xB, 0xB, 0xB, 0xB, 0xB, 0x4, 0x0, 0x4, 0x4, 0x4,
0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0xB, 0x4, 0x0, 0x2, 0x4, 0x4, 0xB, 0x2, 0x4, 0x4, 0x8, 0x4,
0x0, 0x0, 0x0, 0x4, 0x4, 0x0, 0x0, 0x0, 0x0, 0x4, 0x4, 0x8, 0x4, 0x4, 0x8, 0x0, 0x0, 0x0, 0x0,
0x8, 0x8, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x0, 0x4, 0x4, 0x4, 0x0,
0x3, 0x3, 0x3, 0x4, 0x4, 0x4, 0x6, 0x9, 0x7, 0x7, 0x4, 0x1, 0x7, 0x8, 0x7, 0x9, 0x2, 0x4, 0x4,
0x4, 0x4, 0x4, 0x4, 0x4, 0x0, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4,
0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x0, 0x0, 0x4, 0x0, 0x4, 0x4, 0x0, 0x4, 0x4,
0x4, 0x4, 0x8, 0x4, 0x4, 0x0, 0x4, 0x4, 0x4, 0x4, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4,
0x0, 0x0, 0x4, 0x4, 0x0, 0x0, 0x0, 0x0, 0x8, 0x4, 0x4, 0x0, 0x0, 0x4, 0x4, 0x4, 0x8, 0x4, 0x4,
0x4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8, 0x4, 0x0, 0x4,
0x4, 0x0, 0x0, 0x0, 0x8, 0x0, 0x8, 0x0, 0x4, 0x4, 0x4, 0x4, 0x4, 0x0, 0x4, 0x4, 0x8, 0x4, 0x0,
0x4, 0x4, 0x4, 0x4, 0x0, 0x0, 0x0, 0x4, 0x8, 0x4, 0x0, 0x8, 0x0, 0x4, 0x4, 0x0, 0x0, 0x0, 0x4,
0x4, 0x0, 0x4, 0x4, 0x0, 0x0, 0x4, 0x0, 0x0, 0x4, 0x4, 0x4, 0x0, 0x0, 0x4, 0x0, 0x4, 0x8, 0x8,
0x0, 0x0, 0x8, 0x4, 0x8, 0x4, 0x4, 0x0, 0x4, 0x0, 0x2, 0x2, 0x2, 0x2, 0x4, 0x4, 0x1, 0x0, 0x0,
0x1, 0x0, 0x0, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x0,
0x0, 0x0, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x8, 0x4, 0x4, 0x8, 0x0, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4,
0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0xB,
0x4, 0xB, 0xB, 0xB, 0xB, 0xB, 0xB, 0x0, 0xB, 0xB, 0xB, 0xB, 0xB, 0xB, 0x8, 0x1, 0x0, 0xA, 0x5,
0x6, 0x4, 0x4, 0x4, 0xB, 0x6, 0x4, 0x4, 0x0, 0x4, 0x7, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x6, 0x7,
0x0, 0x0, 0x0, 0x3, 0x6, 0x7, 0x1, 0x0, 0x8, 0x4, 0x4, 0x0, 0x0, 0x0, 0x4, 0x4, 0x4, 0x4, 0x4,
0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x4, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x4,
0x4, 0x4, 0x4, 0x0, 0x0, 0x0, 0x0, 0x4, 0x8, 0x4, 0x0, 0x4, 0x4, 0x4, 0x0, 0x0, 0x0, 0x4, 0x0,
0x0, 0x4, 0x4, 0x4, 0x0, 0x0, 0x0, 0x4, 0x8, 0x0, 0x4, 0x4, 0x4, 0x0, 0x0, 0x0, 0x4, 0x0, 0x4,
0x4, 0x4, 0x4, 0x4, 0x4, 0x0, 0x0, 0x0, 0x0, 0x4, 0x4, 0x4, 0x0, 0x0, 0x4, 0x0, 0x4, 0x4, 0x4,
0x4, 0x4, 0x0, 0x0, 0x4, 0x8, 0x0, 0x4, 0x4, 0x4, 0x0, 0x4, 0x0, 0x0, 0x4,
};
#endif // #ifndef WORD_DATA_H

View File

@@ -0,0 +1,23 @@
//===------------------------------------------------------------*- C++ -*-===//
//
// This source file is part of the Swift.org open source project
//
// Copyright (c) 2014 - 2017 Apple Inc. and the Swift project authors
// Licensed under Apache License v2.0 with Runtime Library Exception
//
// See https://swift.org/LICENSE.txt for license information
// See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
//
//===----------------------------------------------------------------------===//
#ifndef SWIFT_STDLIB_SHIMS_SWIFTSTDBOOL_H_
#define SWIFT_STDLIB_SHIMS_SWIFTSTDBOOL_H_
#ifdef __cplusplus
typedef bool __swift_bool;
#else
typedef _Bool __swift_bool;
#endif
#endif

View File

@@ -0,0 +1,89 @@
//===--- SwiftStdint.h ------------------------------------------*- C++ -*-===//
//
// This source file is part of the Swift.org open source project
//
// Copyright (c) 2014 - 2017 Apple Inc. and the Swift project authors
// Licensed under Apache License v2.0 with Runtime Library Exception
//
// See https://swift.org/LICENSE.txt for license information
// See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
//
//===----------------------------------------------------------------------===//
#ifndef SWIFT_STDLIB_SHIMS_SWIFT_STDINT_H
#define SWIFT_STDLIB_SHIMS_SWIFT_STDINT_H
// stdint.h is provided by Clang, but it dispatches to libc's stdint.h. As a
// result, using stdint.h here would pull in Darwin module (which includes
// libc). This creates a dependency cycle, so we can't use stdint.h in
// SwiftShims.
// On Linux, the story is different. We get the error message
// "/usr/include/x86_64-linux-gnu/sys/types.h:146:10: error: 'stddef.h' file not
// found"
// This is a known Clang/Ubuntu bug.
// Clang has been defining __INTxx_TYPE__ macros for a long time.
// __UINTxx_TYPE__ are defined only since Clang 3.5.
#if !defined(__APPLE__) && !defined(__linux__) && !defined(__OpenBSD__) && !defined(__FreeBSD__) && !defined(__wasi__) && !defined(__swift_embedded__)
#include <stdint.h>
typedef int64_t __swift_int64_t;
typedef uint64_t __swift_uint64_t;
typedef int32_t __swift_int32_t;
typedef uint32_t __swift_uint32_t;
typedef int16_t __swift_int16_t;
typedef uint16_t __swift_uint16_t;
typedef int8_t __swift_int8_t;
typedef uint8_t __swift_uint8_t;
typedef intptr_t __swift_intptr_t;
typedef uintptr_t __swift_uintptr_t;
#else
typedef __INT64_TYPE__ __swift_int64_t;
#ifdef __UINT64_TYPE__
typedef __UINT64_TYPE__ __swift_uint64_t;
#else
typedef unsigned __INT64_TYPE__ __swift_uint64_t;
#endif
typedef __INT32_TYPE__ __swift_int32_t;
#ifdef __UINT32_TYPE__
typedef __UINT32_TYPE__ __swift_uint32_t;
#else
typedef unsigned __INT32_TYPE__ __swift_uint32_t;
#endif
typedef __INT16_TYPE__ __swift_int16_t;
#ifdef __UINT16_TYPE__
typedef __UINT16_TYPE__ __swift_uint16_t;
#else
typedef unsigned __INT16_TYPE__ __swift_uint16_t;
#endif
typedef __INT8_TYPE__ __swift_int8_t;
#ifdef __UINT8_TYPE__
typedef __UINT8_TYPE__ __swift_uint8_t;
#else
typedef unsigned __INT8_TYPE__ __swift_uint8_t;
#endif
#define __swift_join3(a,b,c) a ## b ## c
#define __swift_intn_t(n) __swift_join3(__swift_int, n, _t)
#define __swift_uintn_t(n) __swift_join3(__swift_uint, n, _t)
#if defined(_MSC_VER) && !defined(__clang__)
#if defined(_WIN64)
typedef __swift_int64_t __swift_intptr_t;
typedef __swift_uint64_t __swift_uintptr_t;
#elif defined(_WIN32)
typedef __swift_int32_t __swift_intptr_t;
typedef __swift_uint32_t __swift_uintptr_t;
#else
#error unknown windows pointer width
#endif
#else
typedef __swift_intn_t(__INTPTR_WIDTH__) __swift_intptr_t;
typedef __swift_uintn_t(__INTPTR_WIDTH__) __swift_uintptr_t;
#endif
#endif
#endif // SWIFT_STDLIB_SHIMS_SWIFT_STDINT_H

View File

@@ -0,0 +1,305 @@
//===--- Visibility.h - Visibility macros for runtime exports ---*- C++ -*-===//
//
// This source file is part of the Swift.org open source project
//
// Copyright (c) 2014 - 2017 Apple Inc. and the Swift project authors
// Licensed under Apache License v2.0 with Runtime Library Exception
//
// See https://swift.org/LICENSE.txt for license information
// See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
//
//===----------------------------------------------------------------------===//
//
// These macros are used to declare symbols that should be exported from the
// Swift runtime.
//
//===----------------------------------------------------------------------===//
#ifndef SWIFT_STDLIB_SHIMS_VISIBILITY_H
#define SWIFT_STDLIB_SHIMS_VISIBILITY_H
#if !defined(__has_feature)
#define __has_feature(x) 0
#endif
#if !defined(__has_attribute)
#define __has_attribute(x) 0
#endif
#if !defined(__has_builtin)
#define __has_builtin(builtin) 0
#endif
#if !defined(__has_cpp_attribute)
#define __has_cpp_attribute(attribute) 0
#endif
// TODO: These macro definitions are duplicated in BridgedSwiftObject.h. Move
// them to a single file if we find a location that both Visibility.h and
// BridgedSwiftObject.h can import.
#if __has_feature(nullability)
// Provide macros to temporarily suppress warning about the use of
// _Nullable and _Nonnull.
# define SWIFT_BEGIN_NULLABILITY_ANNOTATIONS \
_Pragma("clang diagnostic push") \
_Pragma("clang diagnostic ignored \"-Wnullability-extension\"")
# define SWIFT_END_NULLABILITY_ANNOTATIONS \
_Pragma("clang diagnostic pop")
#else
// #define _Nullable and _Nonnull to nothing if we're not being built
// with a compiler that supports them.
# define _Nullable
# define _Nonnull
# define SWIFT_BEGIN_NULLABILITY_ANNOTATIONS
# define SWIFT_END_NULLABILITY_ANNOTATIONS
#endif
#define SWIFT_MACRO_CONCAT(A, B) A ## B
#define SWIFT_MACRO_IF_0(IF_TRUE, IF_FALSE) IF_FALSE
#define SWIFT_MACRO_IF_1(IF_TRUE, IF_FALSE) IF_TRUE
#define SWIFT_MACRO_IF(COND, IF_TRUE, IF_FALSE) \
SWIFT_MACRO_CONCAT(SWIFT_MACRO_IF_, COND)(IF_TRUE, IF_FALSE)
#if __has_attribute(pure)
#define SWIFT_READONLY __attribute__((__pure__))
#else
#define SWIFT_READONLY
#endif
#if __has_attribute(const)
#define SWIFT_READNONE __attribute__((__const__))
#else
#define SWIFT_READNONE
#endif
#if __has_attribute(always_inline)
#define SWIFT_ALWAYS_INLINE __attribute__((always_inline))
#else
#define SWIFT_ALWAYS_INLINE
#endif
#if __has_attribute(noinline)
#define SWIFT_NOINLINE __attribute__((__noinline__))
#else
#define SWIFT_NOINLINE
#endif
#if __has_attribute(noreturn)
#define SWIFT_NORETURN __attribute__((__noreturn__))
#else
#define SWIFT_NORETURN
#endif
#if __has_attribute(used)
#define SWIFT_USED __attribute__((__used__))
#else
#define SWIFT_USED
#endif
#if __has_attribute(unavailable)
#define SWIFT_ATTRIBUTE_UNAVAILABLE __attribute__((__unavailable__))
#else
#define SWIFT_ATTRIBUTE_UNAVAILABLE
#endif
#if (__has_attribute(weak_import))
#define SWIFT_WEAK_IMPORT __attribute__((weak_import))
#else
#define SWIFT_WEAK_IMPORT
#endif
// WASM says yes to __has_attribute(musttail) but doesn't support using it, so
// exclude WASM from SWIFT_MUSTTAIL.
#if __has_attribute(musttail) && !defined(__wasm__)
#define SWIFT_MUSTTAIL [[clang::musttail]]
#else
#define SWIFT_MUSTTAIL
#endif
// Define the appropriate attributes for sharing symbols across
// image (executable / shared-library) boundaries.
//
// SWIFT_ATTRIBUTE_FOR_EXPORTS will be placed on declarations that
// are known to be exported from the current image. Typically, they
// are placed on header declarations and then inherited by the actual
// definitions.
//
// SWIFT_ATTRIBUTE_FOR_IMPORTS will be placed on declarations that
// are known to be exported from a different image. This never
// includes a definition.
//
// Getting the right attribute on a declaration can be pretty awkward,
// but it's necessary under the C translation model. All of this
// ceremony is familiar to Windows programmers; C/C++ programmers
// everywhere else usually don't bother, but since we have to get it
// right for Windows, we have everything set up to get it right on
// other targets as well, and doing so lets the compiler use more
// efficient symbol access patterns.
#if defined(__MACH__) || defined(__wasm__)
// On Mach-O and WebAssembly, we use non-hidden visibility. We just use
// default visibility on both imports and exports, both because these
// targets don't support protected visibility but because they don't
// need it: symbols are not interposable outside the current image
// by default.
# define SWIFT_ATTRIBUTE_FOR_EXPORTS __attribute__((__visibility__("default")))
# define SWIFT_ATTRIBUTE_FOR_IMPORTS __attribute__((__visibility__("default")))
#elif defined(__ELF__)
// On ELF, we use non-hidden visibility. For exports, we must use
// protected visibility to tell the compiler and linker that the symbols
// can't be interposed outside the current image. For imports, we must
// use default visibility because protected visibility guarantees that
// the symbol is defined in the current library, which isn't true for
// an import.
//
// The compiler does assume that the runtime and standard library can
// refer to each other's symbols as DSO-local, so it's important that
// we get this right or we can get linker errors.
# define SWIFT_ATTRIBUTE_FOR_EXPORTS __attribute__((__visibility__("protected")))
# define SWIFT_ATTRIBUTE_FOR_IMPORTS __attribute__((__visibility__("default")))
#elif defined(__CYGWIN__)
// For now, we ignore all this on Cygwin.
# define SWIFT_ATTRIBUTE_FOR_EXPORTS
# define SWIFT_ATTRIBUTE_FOR_IMPORTS
// FIXME: this #else should be some sort of #elif Windows
#else // !__MACH__ && !__ELF__
# if defined(SWIFT_STATIC_STDLIB)
# define SWIFT_ATTRIBUTE_FOR_EXPORTS /**/
# define SWIFT_ATTRIBUTE_FOR_IMPORTS /**/
# else
# define SWIFT_ATTRIBUTE_FOR_EXPORTS __declspec(dllexport)
# define SWIFT_ATTRIBUTE_FOR_IMPORTS __declspec(dllimport)
# endif
#endif
// CMake conventionally passes -DlibraryName_EXPORTS when building
// code that goes into libraryName. This isn't the best macro name,
// but it's conventional. We do have to pass it explicitly in a few
// places in the build system for a variety of reasons.
//
// Unfortunately, defined(D) is a special function you can use in
// preprocessor conditions, not a macro you can use anywhere, so we
// need to manually check for all the libraries we know about so that
// we can use them in our condition below.s
#if defined(swiftCore_EXPORTS)
#define SWIFT_IMAGE_EXPORTS_swiftCore 1
#else
#define SWIFT_IMAGE_EXPORTS_swiftCore 0
#endif
#if defined(swift_Concurrency_EXPORTS)
#define SWIFT_IMAGE_EXPORTS_swift_Concurrency 1
#else
#define SWIFT_IMAGE_EXPORTS_swift_Concurrency 0
#endif
#if defined(swiftDistributed_EXPORTS)
#define SWIFT_IMAGE_EXPORTS_swiftDistributed 1
#else
#define SWIFT_IMAGE_EXPORTS_swiftDistributed 0
#endif
#if defined(swift_Differentiation_EXPORTS)
#define SWIFT_IMAGE_EXPORTS_swift_Differentiation 1
#else
#define SWIFT_IMAGE_EXPORTS_swift_Differentiation 0
#endif
#define SWIFT_EXPORT_FROM_ATTRIBUTE(LIBRARY) \
SWIFT_MACRO_IF(SWIFT_IMAGE_EXPORTS_##LIBRARY, \
SWIFT_ATTRIBUTE_FOR_EXPORTS, \
SWIFT_ATTRIBUTE_FOR_IMPORTS)
// SWIFT_EXPORT_FROM(LIBRARY) declares something to be a C-linkage
// entity exported by the given library.
//
// SWIFT_RUNTIME_EXPORT is just SWIFT_EXPORT_FROM(swiftCore).
//
// TODO: use this in shims headers in overlays.
#if defined(__cplusplus)
#define SWIFT_EXPORT_FROM(LIBRARY) extern "C" SWIFT_EXPORT_FROM_ATTRIBUTE(LIBRARY)
#define SWIFT_EXTERN_C extern "C"
#else
#define SWIFT_EXPORT_FROM(LIBRARY) SWIFT_EXPORT_FROM_ATTRIBUTE(LIBRARY)
#define SWIFT_EXTERN_C
#endif
#define SWIFT_RUNTIME_EXPORT SWIFT_EXPORT_FROM(swiftCore)
#define SWIFT_RUNTIME_EXPORT_ATTRIBUTE SWIFT_EXPORT_FROM_ATTRIBUTE(swiftCore)
#if __cplusplus > 201402l && __has_cpp_attribute(fallthrough)
#define SWIFT_FALLTHROUGH [[fallthrough]]
#elif __has_cpp_attribute(gnu::fallthrough)
#define SWIFT_FALLTHROUGH [[gnu::fallthrough]]
#elif __has_cpp_attribute(clang::fallthrough)
#define SWIFT_FALLTHROUGH [[clang::fallthrough]]
#elif __has_attribute(fallthrough)
#define SWIFT_FALLTHROUGH __attribute__((__fallthrough__))
#else
#define SWIFT_FALLTHROUGH
#endif
#if __cplusplus > 201402l && __has_cpp_attribute(nodiscard)
#define SWIFT_NODISCARD [[nodiscard]]
#elif __has_cpp_attribute(clang::warn_unused_result)
#define SWIFT_NODISCARD [[clang::warn_unused_result]]
#else
#define SWIFT_NODISCARD
#endif
#if __has_cpp_attribute(gnu::returns_nonnull)
#define SWIFT_RETURNS_NONNULL [[gnu::returns_nonnull]]
#elif defined(_MSC_VER) && defined(_Ret_notnull_)
#define SWIFT_RETURNS_NONNULL _Ret_notnull_
#else
#define SWIFT_RETURNS_NONNULL
#endif
/// Attributes for runtime-stdlib interfaces.
/// Use these for C implementations that are imported into Swift via SwiftShims
/// and for C implementations of Swift @_silgen_name declarations
/// Note that @_silgen_name implementations must also be marked SWIFT_CC(swift).
///
/// SWIFT_RUNTIME_STDLIB_API functions are called by compiler-generated code
/// or by @inlinable Swift code.
/// Such functions must be exported and must be supported forever as API.
/// The function name should be prefixed with `swift_`.
///
/// SWIFT_RUNTIME_STDLIB_SPI functions are called by overlay code.
/// Such functions must be exported, but are still SPI
/// and may be changed at any time.
/// The function name should be prefixed with `_swift_`.
///
/// SWIFT_RUNTIME_STDLIB_INTERNAL functions are called only by the stdlib.
/// Such functions are internal and are not exported.
#define SWIFT_RUNTIME_STDLIB_API SWIFT_RUNTIME_EXPORT
#define SWIFT_RUNTIME_STDLIB_SPI SWIFT_RUNTIME_EXPORT
// Match the definition of LLVM_LIBRARY_VISIBILITY from LLVM's
// Compiler.h. That header requires C++ and this needs to work in C.
#if __has_attribute(visibility) && (defined(__ELF__) || defined(__MACH__))
#define SWIFT_LIBRARY_VISIBILITY __attribute__ ((__visibility__("hidden")))
#else
#define SWIFT_LIBRARY_VISIBILITY
#endif
#if defined(__cplusplus)
#define SWIFT_RUNTIME_STDLIB_INTERNAL extern "C" SWIFT_LIBRARY_VISIBILITY
#else
#define SWIFT_RUNTIME_STDLIB_INTERNAL SWIFT_LIBRARY_VISIBILITY
#endif
#if __has_builtin(__builtin_expect)
#define SWIFT_LIKELY(expression) (__builtin_expect(!!(expression), 1))
#define SWIFT_UNLIKELY(expression) (__builtin_expect(!!(expression), 0))
#else
#define SWIFT_LIKELY(expression) ((expression))
#define SWIFT_UNLIKELY(expression) ((expression))
#endif
// SWIFT_STDLIB_SHIMS_VISIBILITY_H
#endif

View File

@@ -0,0 +1,251 @@
//===----------------------------------------------------------------------===//
//
// This source file is part of the Swift.org open source project
//
// Copyright (c) 2021 Apple Inc. and the Swift project authors
// Licensed under Apache License v2.0 with Runtime Library Exception
//
// See https://swift.org/LICENSE.txt for license information
// See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
//
//===----------------------------------------------------------------------===//
#include "UnicodeData.h"
#include <stdint.h>
// Every 4 byte chunks of data that we need to hash (in this case only ever
// scalars and levels who are all uint32), we need to calculate K. At the end
// of this scramble sequence to get K, directly apply this to the current hash.
static inline __swift_uint32_t scramble(__swift_uint32_t scalar) {
scalar *= 0xCC9E2D51;
scalar = (scalar << 15) | (scalar >> 17);
scalar *= 0x1B873593;
return scalar;
}
// This is a reimplementation of MurMur3 hash with a modulo at the end.
static __swift_uint32_t hash(__swift_uint32_t scalar, __swift_uint32_t level,
__swift_uint32_t seed) {
__swift_uint32_t hash = seed;
hash ^= scramble(scalar);
hash = (hash << 13) | (hash >> 19);
hash = hash * 5 + 0xE6546B64;
hash ^= scramble(level);
hash = (hash << 13) | (hash >> 19);
hash = hash * 5 + 0xE6546B64;
hash ^= 8;
hash ^= hash >> 16;
hash *= 0x85EBCA6B;
hash ^= hash >> 13;
hash *= 0xC2B2AE35;
hash ^= hash >> 16;
return hash % level;
}
// This implementation is based on the minimal perfect hashing strategy found
// here: https://arxiv.org/pdf/1702.03154.pdf
__swift_intptr_t _swift_stdlib_getMphIdx(__swift_uint32_t scalar,
__swift_intptr_t levels,
const __swift_uint64_t * const *keys,
const __swift_uint16_t * const *ranks,
const __swift_uint16_t * const sizes) {
__swift_intptr_t resultIdx = 0;
// Here, levels represent the numbers of bit arrays used for this hash table.
for (int i = 0; i != levels; i += 1) {
auto bitArray = keys[i];
// Get the specific bit that this scalar hashes to in the bit array.
auto idx = (__swift_uint64_t) hash(scalar, sizes[i], i);
auto word = bitArray[idx / 64];
auto mask = (__swift_uint64_t) 1 << (idx % 64);
// If our scalar's bit is turned on in the bit array, it means we no longer
// need to iterate the bit arrays to find where our scalar is located...
// its in this one.
if (word & mask) {
// Our initial rank corresponds to our current level and there are ranks
// within each bit array every 512 bits. Say our level (bit array)
// contains 16 uint64 integers to represent all of the required bits.
// There would be a total of 1024 bits, so our rankings for this level
// would contain two values for precomputed counted bits for both halves
// of this bit array (1024 / 512 = 2).
auto rank = ranks[i][idx / 512];
// Because ranks are provided every 512 bits (8 uint64s), we still need to
// count the bits of the uints64s before us in our 8 uint64 sequence. So
// for example, if we are bit 576, we are larger than 512, so there is a
// provided rank for the first 8 uint64s, however we're in the second
// 8 uint64 sequence and within said sequence we are the #2 uint64. This
// loop will count the bits set for the first uint64 and terminate.
for (int j = (idx / 64) & ~7; j != idx / 64; j += 1) {
rank += __builtin_popcountll(bitArray[j]);
}
// After counting the other bits set in the uint64s before, its time to
// count our word itself and the bits before us.
if (idx % 64 > 0) {
rank += __builtin_popcountll(word << (64 - (idx % 64)));
}
// Our result is the built up rank value from all of the provided ranks
// and the ones we've manually counted ourselves.
resultIdx = rank;
break;
}
}
return resultIdx;
}
// A scalar bit array is represented using a combination of quick look bit
// arrays and specific bit arrays expanding these quick look arrays. There's
// usually a few data structures accompanying these bit arrays like ranks, data
// indices, and an actual data array.
//
// The bit arrays are constructed to look somewhat like the following:
//
// [quickLookSize, {uint64 * quickLookSize}, {5 * uint64}, {5 * uint64},
// {5 * uint64}...]
//
// where the number of {5 * uint64} (a specific bit array) is equal to the
// number of bits turned on within the {uint64 * quickLookSize}. This can be
// easily calculated using the passed in ranks arrays who looks like the
// following:
//
// [{uint16 * quickLookSize}, {5 * uint16}, {5 * uint16}, {5 * uint16}...]
//
// which is the same exact scheme as the bit arrays. Ranks contain the number of
// previously turned on bits according their respectful {}. For instance, each
// chunk, {5 * uint16}, begins with 0x0 and continuously grows as the number of
// bits within the chunk turn on. An example sequence of this looks like:
// [0x0, 0x0, 0x30, 0x70, 0xB0] where the first uint64 obviously doesn't have a
// previous uint64 to look at, so its rank is 0. The second uint64's rank will
// be the number of bits turned on in the first uint64, which in this case is
// also 0. The third uint64's rank is 0x30 meaning there were 48 bits turned on
// from the first uint64 through the second uint64.
__swift_intptr_t _swift_stdlib_getScalarBitArrayIdx(__swift_uint32_t scalar,
const __swift_uint64_t *bitArrays,
const __swift_uint16_t *ranks) {
// Chunk size indicates the number of scalars in a singular bit in our quick
// look arrays. Currently, a chunk consists of 272 scalars being represented
// in a bit. 0x110000 represents the maximum scalar value that Unicode will
// never go over (or at least promised to never go over), 0x10FFFF, plus 1.
// There are 64 bit arrays allocated for the quick look search and within
// each bit array is an allocated 64 bits (8 bytes). Assuming the whole quick
// search array is allocated and used, this would mean 512 bytes are used
// solely for these arrays.
auto chunkSize = 0x110000 / 64 / 64;
// Our base is the specific bit in the context of all of the bit arrays that
// holds our scalar. Considering there are 64 bit arrays of 64 bits, that
// would mean there are 64 * 64 = 4096 total bits to represent all scalars.
auto base = scalar / chunkSize;
// Index is our specific bit array that holds our bit.
auto idx = base / 64;
// Chunk bit is the specific bit within the bit array for our scalar.
auto chunkBit = base % 64;
// At the beginning our bit arrays is a number indicating the number of
// actually implemented quick look bit arrays. We do this to save a little bit
// of code size for bit arrays towards the end that usually contain no
// properties, thus their bit arrays are most likely 0 or null.
auto quickLookSize = bitArrays[0];
// If our chunk index is larger than the quick look indices, then it means
// our scalar appears in chunks who are all 0 and trailing.
if ((__swift_uint64_t) idx > quickLookSize - 1) {
return INTPTR_MAX;
}
// Our scalar actually exists in a quick look bit array that was implemented.
auto quickLook = bitArrays[idx + 1];
// If the quick look array has our chunk bit not set, that means all 272
// (chunkSize) of the scalars being represented have no property and ours is
// one of them.
if ((quickLook & ((__swift_uint64_t) 1 << chunkBit)) == 0) {
return INTPTR_MAX;
}
// Ok, our scalar failed the quick look check. Go lookup our scalar in the
// chunk specific bit array. Ranks keeps track of the previous bit array's
// number of non zero bits and is iterative.
//
// For example, [1, 3, 10] are bit arrays who have certain number of bits
// turned on. The generated ranks array would look like [0, 1, 3] because
// the first value, 1, does not have any previous bit array to look at so its
// number of ranks are 0. 3 on the other hand will see its rank value as 1
// because the previous value had 1 bit turned on. 10 will see 3 because it is
// seeing both 1 and 3's number of turned on bits (3 has 2 bits on and
// 1 + 2 = 3).
auto chunkRank = ranks[idx];
// If our specific bit within the chunk isn't the first bit, then count the
// number of bits turned on preceding our chunk bit.
if (chunkBit != 0) {
chunkRank += __builtin_popcountll(quickLook << (64 - chunkBit));
}
// Each bit that is turned on in the quick look arrays is given a bit array
// that consists of 5 64 bit integers (5 * 64 = 320 which is enough to house
// at least 272 specific bits dedicated to each scalar within a chunk). Our
// specific chunk's array is located at:
// 1 (quick look count)
// +
// quickLookSize (number of actually implemented quick look arrays)
// +
// chunkRank * 5 (where chunkRank is the total number of bits turned on
// before ours and each chunk is given 5 uint64s)
auto chunkBA = bitArrays + 1 + quickLookSize + (chunkRank * 5);
// Our overall bit represents the bit within 0 - 271 (272 total, our
// chunkSize) that houses our scalar.
auto scalarOverallBit = scalar - (base * chunkSize);
// And our specific bit here represents the bit that houses our scalar inside
// a specific uint64 in our overall bit array.
auto scalarSpecificBit = scalarOverallBit % 64;
// Our word here is the index into the chunk's bit array to grab the specific
// uint64 who houses a bit representing our scalar.
auto scalarWord = scalarOverallBit / 64;
auto chunkWord = chunkBA[scalarWord];
// If our scalar specifically is not turned on within our chunk's bit array,
// then we know for sure that our scalar does not inhibit this property.
if ((chunkWord & ((__swift_uint64_t) 1 << scalarSpecificBit)) == 0) {
return INTPTR_MAX;
}
// Otherwise, this scalar does have whatever property this scalar array is
// representing. Our ranks also holds bit information for a chunk's bit array,
// so each chunk is given 5 uint16 in our ranks to count its own bits.
auto scalarRank = ranks[quickLookSize + (chunkRank * 5) + scalarWord];
// Again, if our scalar isn't the first bit in its uint64, then count the
// proceeding number of bits turned on in our uint64.
if (scalarSpecificBit != 0) {
scalarRank += __builtin_popcountll(chunkWord << (64 - scalarSpecificBit));
}
// In our last uint64 in our bit array, there is an index into our data index
// array. Because we only need 272 bits for the scalars, any remaining bits
// can be used for essentially whatever. 5 * 64 bits = 320 bits and we only
// allocate 16 bits in the last uint64 for the remaining scalars
// (4 * 64 bits = 256 + 16 = 272 (chunkSize)) leaving us with 48 spare bits.
auto chunkDataIdx = chunkBA[4] >> 16;
// Finally, our index (or rather whatever value is stored in our spare bits)
// is simply the start of our chunk's index plus the specific rank for our
// scalar.
return chunkDataIdx + scalarRank;
}

View File

@@ -0,0 +1,44 @@
//===----------------------------------------------------------------------===//
//
// This source file is part of the Swift.org open source project
//
// Copyright (c) 2021 Apple Inc. and the Swift project authors
// Licensed under Apache License v2.0 with Runtime Library Exception
//
// See https://swift.org/LICENSE.txt for license information
// See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
//
//===----------------------------------------------------------------------===//
#ifndef SWIFT_STDLIB_UNICODEDATA_H
#define SWIFT_STDLIB_UNICODEDATA_H
#include "../include/shims/SwiftStdbool.h"
#include "../include/shims/SwiftStdint.h"
#include "../include/shims/Visibility.h"
#ifdef __cplusplus
extern "C" {
#endif
//===----------------------------------------------------------------------===//
// Utilities
//===----------------------------------------------------------------------===//
SWIFT_RUNTIME_STDLIB_INTERNAL
__swift_intptr_t _swift_stdlib_getMphIdx(__swift_uint32_t scalar,
__swift_intptr_t levels,
const __swift_uint64_t * const *keys,
const __swift_uint16_t * const *ranks,
const __swift_uint16_t * const sizes);
SWIFT_RUNTIME_STDLIB_INTERNAL
__swift_intptr_t _swift_stdlib_getScalarBitArrayIdx(__swift_uint32_t scalar,
const __swift_uint64_t *bitArrays,
const __swift_uint16_t *ranks);
#ifdef __cplusplus
} // extern "C"
#endif
#endif // SWIFT_STDLIB_SHIMS_UNICODEDATA_H

View File

@@ -0,0 +1,65 @@
//===----------------------------------------------------------------------===//
//
// This source file is part of the Swift.org open source project
//
// Copyright (c) 2021 Apple Inc. and the Swift project authors
// Licensed under Apache License v2.0 with Runtime Library Exception
//
// See https://swift.org/LICENSE.txt for license information
// See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
//
//===----------------------------------------------------------------------===//
#include "../include/GraphemeData.h"
#include "UnicodeData.h"
#include <stdint.h>
SWIFT_RUNTIME_STDLIB_INTERNAL
__swift_uint8_t _swift_stdlib_getGraphemeBreakProperty(__swift_uint32_t scalar) {
auto index = 1; //0th element is a dummy element
while (index < GRAPHEME_BREAK_DATA_COUNT) {
auto entry = _swift_stdlib_graphemeBreakProperties[index];
// Shift the enum and range count out of the value.
auto lower = (entry << 11) >> 11;
// Shift the enum out first, then shift out the scalar value.
auto upper = lower + ((entry << 3) >> 24);
// Shift everything out.
auto enumValue = (__swift_uint8_t)(entry >> 29);
// Special case: extendedPictographic who used an extra bit for the range.
if (enumValue == 5) {
upper = lower + ((entry << 2) >> 23);
}
//If we want the left child of the current node in our virtual tree,
//that's at index * 2, if we want the right child it's at (index * 2) + 1
if (scalar < lower) {
index = 2 * index;
} else if (scalar <= upper) {
return enumValue;
} else {
index = 2 * index + 1;
}
}
// If we made it out here, then our scalar was not found in the grapheme
// array (this occurs when a scalar doesn't map to any grapheme break
// property). Return the max value here to indicate .any.
return 0xFF;
}
SWIFT_RUNTIME_STDLIB_INTERNAL
__swift_bool _swift_stdlib_isInCB_Consonant(__swift_uint32_t scalar) {
auto idx = _swift_stdlib_getScalarBitArrayIdx(scalar,
_swift_stdlib_InCB_Consonant,
_swift_stdlib_InCB_Consonant_ranks);
if (idx == INTPTR_MAX) {
return false;
}
return true;
}

View File

@@ -0,0 +1,113 @@
//===----------------------------------------------------------------------===//
//
// This source file is part of the Swift.org open source project
//
// Copyright (c) 2021 Apple Inc. and the Swift project authors
// Licensed under Apache License v2.0 with Runtime Library Exception
//
// See https://swift.org/LICENSE.txt for license information
// See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
//
//===----------------------------------------------------------------------===//
#include "../include/NormalizationData.h"
#include "UnicodeData.h"
#include <stdint.h>
SWIFT_RUNTIME_STDLIB_INTERNAL
__swift_uint16_t _swift_stdlib_getNormData(__swift_uint32_t scalar) {
// Fast Path: ASCII and some latiny scalars are very basic and have no
// normalization properties.
if (scalar < 0xC0) {
return 0;
}
auto dataIdx = _swift_stdlib_getScalarBitArrayIdx(scalar,
_swift_stdlib_normData,
_swift_stdlib_normData_ranks);
// If we don't have an index into the data indices, then this scalar has no
// normalization information.
if (dataIdx == INTPTR_MAX) {
return 0;
}
auto scalarDataIdx = _swift_stdlib_normData_data_indices[dataIdx];
return _swift_stdlib_normData_data[scalarDataIdx];
}
SWIFT_RUNTIME_STDLIB_INTERNAL
const __swift_uint8_t * const _swift_stdlib_nfd_decompositions = _swift_stdlib_nfd_decomp;
SWIFT_RUNTIME_STDLIB_INTERNAL
__swift_uint32_t _swift_stdlib_getDecompositionEntry(__swift_uint32_t scalar) {
auto levelCount = NFD_DECOMP_LEVEL_COUNT;
__swift_intptr_t decompIdx = _swift_stdlib_getMphIdx(scalar, levelCount,
_swift_stdlib_nfd_decomp_keys,
_swift_stdlib_nfd_decomp_ranks,
_swift_stdlib_nfd_decomp_sizes);
return _swift_stdlib_nfd_decomp_indices[decompIdx];
}
SWIFT_RUNTIME_STDLIB_INTERNAL
__swift_uint32_t _swift_stdlib_getComposition(__swift_uint32_t x,
__swift_uint32_t y) {
auto levelCount = NFC_COMP_LEVEL_COUNT;
__swift_intptr_t compIdx = _swift_stdlib_getMphIdx(y, levelCount,
_swift_stdlib_nfc_comp_keys,
_swift_stdlib_nfc_comp_ranks,
_swift_stdlib_nfc_comp_sizes);
auto array = _swift_stdlib_nfc_comp_indices[compIdx];
// Ensure that the first element in this array is equal to our y scalar.
auto realY = (array[0] << 11) >> 11;
if (y != realY) {
return UINT32_MAX;
}
auto count = array[0] >> 21;
__swift_uint32_t low = 1;
__swift_uint32_t high = count - 1;
while (high >= low) {
auto idx = low + (high - low) / 2;
auto entry = array[idx];
// Shift the range count out of the scalar.
auto lower = (entry << 15) >> 15;
bool isNegative = entry >> 31;
auto rangeCount = (entry << 1) >> 18;
if (isNegative) {
rangeCount = -rangeCount;
}
auto composed = lower + rangeCount;
if (x == lower) {
return composed;
}
if (x > lower) {
low = idx + 1;
continue;
}
if (x < lower) {
high = idx - 1;
continue;
}
}
// If we made it out here, then our scalar was not found in the composition
// array.
// Return the max here to indicate that we couldn't find one.
return UINT32_MAX;
}

View File

@@ -0,0 +1,514 @@
//===----------------------------------------------------------------------===//
//
// This source file is part of the Swift.org open source project
//
// Copyright (c) 2021 Apple Inc. and the Swift project authors
// Licensed under Apache License v2.0 with Runtime Library Exception
//
// See https://swift.org/LICENSE.txt for license information
// See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
//
//===----------------------------------------------------------------------===//
#include "../include/ScalarPropsData.h"
#include "../include/CaseData.h"
#include "../include/ScriptData.h"
#include "UnicodeData.h"
#include <stdint.h>
SWIFT_RUNTIME_STDLIB_INTERNAL
__swift_uint64_t _swift_stdlib_getBinaryProperties(__swift_uint32_t scalar) {
auto lowerBoundIndex = 0;
auto endIndex = BIN_PROPS_COUNT;
auto upperBoundIndex = endIndex - 1;
while (upperBoundIndex >= lowerBoundIndex) {
auto index = lowerBoundIndex + (upperBoundIndex - lowerBoundIndex) / 2;
auto entry = _swift_stdlib_scalar_binProps[index];
// Shift the ccc value out of the scalar.
auto lowerBoundScalar = (entry << 11) >> 11;
__swift_uint32_t upperBoundScalar = 0;
// If we're not at the end of the array, the range count is simply the
// distance to the next element.
if (index != endIndex - 1) {
auto nextEntry = _swift_stdlib_scalar_binProps[index + 1];
auto nextLower = (nextEntry << 11) >> 11;
upperBoundScalar = nextLower - 1;
} else {
// Otherwise, the range count is the distance to 0x10FFFF
upperBoundScalar = 0x10FFFF;
}
// Shift everything out.
auto dataIndex = entry >> 21;
if (scalar >= lowerBoundScalar && scalar <= upperBoundScalar) {
return _swift_stdlib_scalar_binProps_data[dataIndex];
}
if (scalar > upperBoundScalar) {
lowerBoundIndex = index + 1;
continue;
}
if (scalar < lowerBoundScalar) {
upperBoundIndex = index - 1;
continue;
}
}
// If we make it out of this loop, then it means the scalar was not found at
// all in the array. This should never happen because the array represents all
// scalars from 0x0 to 0x10FFFF, but if somehow this branch gets reached,
// return 0 to indicate no properties.
return 0;
}
SWIFT_RUNTIME_STDLIB_INTERNAL
__swift_uint8_t _swift_stdlib_getNumericType(__swift_uint32_t scalar) {
auto lowerBoundIndex = 0;
auto endIndex = NUMERIC_TYPE_COUNT;
auto upperBoundIndex = endIndex - 1;
while (upperBoundIndex >= lowerBoundIndex) {
auto idx = lowerBoundIndex + (upperBoundIndex - lowerBoundIndex) / 2;
auto entry = _swift_stdlib_numeric_type[idx];
auto lowerBoundScalar = (entry << 11) >> 11;
auto rangeCount = (entry << 3) >> 24;
auto upperBoundScalar = lowerBoundScalar + rangeCount;
auto numericType = (__swift_uint8_t)(entry >> 29);
if (scalar >= lowerBoundScalar && scalar <= upperBoundScalar) {
return numericType;
}
if (scalar > upperBoundScalar) {
lowerBoundIndex = idx + 1;
continue;
}
if (scalar < lowerBoundScalar) {
upperBoundIndex = idx - 1;
continue;
}
}
// If we made it out here, then our scalar was not found in the composition
// array.
// Return the max here to indicate that we couldn't find one.
return UINT8_MAX;
}
SWIFT_RUNTIME_STDLIB_INTERNAL
double _swift_stdlib_getNumericValue(__swift_uint32_t scalar) {
auto levelCount = NUMERIC_VALUES_LEVEL_COUNT;
__swift_intptr_t scalarIdx = _swift_stdlib_getMphIdx(scalar, levelCount,
_swift_stdlib_numeric_values_keys,
_swift_stdlib_numeric_values_ranks,
_swift_stdlib_numeric_values_sizes);
auto valueIdx = _swift_stdlib_numeric_values_indices[scalarIdx];
return _swift_stdlib_numeric_values[valueIdx];
}
SWIFT_RUNTIME_STDLIB_INTERNAL
const char *_swift_stdlib_getNameAlias(__swift_uint32_t scalar) {
auto dataIdx = _swift_stdlib_getScalarBitArrayIdx(scalar,
_swift_stdlib_nameAlias,
_swift_stdlib_nameAlias_ranks);
if (dataIdx == INTPTR_MAX) {
return nullptr;
}
return _swift_stdlib_nameAlias_data[dataIdx];
}
SWIFT_RUNTIME_STDLIB_INTERNAL
__swift_int32_t _swift_stdlib_getMapping(__swift_uint32_t scalar,
__swift_uint8_t mapping) {
auto dataIdx = _swift_stdlib_getScalarBitArrayIdx(scalar,
_swift_stdlib_mappings,
_swift_stdlib_mappings_ranks);
if (dataIdx == INTPTR_MAX) {
return 0;
}
auto mappings = _swift_stdlib_mappings_data_indices[dataIdx];
__swift_uint8_t mappingIdx;
switch (mapping) {
// Uppercase
case 0:
mappingIdx = mappings & 0xFF;
break;
// Lowercase
case 1:
mappingIdx = (mappings & 0xFF00) >> 8;
break;
// Titlecase
case 2:
mappingIdx = (mappings & 0xFF0000) >> 16;
break;
// Unknown mapping
default:
return 0;
}
if (mappingIdx == 0xFF) {
return 0;
}
return _swift_stdlib_mappings_data[mappingIdx];
}
SWIFT_RUNTIME_STDLIB_INTERNAL
const __swift_uint8_t *_swift_stdlib_getSpecialMapping(__swift_uint32_t scalar,
__swift_uint8_t mapping,
__swift_intptr_t *length) {
auto dataIdx = _swift_stdlib_getScalarBitArrayIdx(scalar,
_swift_stdlib_special_mappings,
_swift_stdlib_special_mappings_ranks);
if (dataIdx == INTPTR_MAX) {
return nullptr;
}
auto index = _swift_stdlib_special_mappings_data_indices[dataIdx];
auto uppercase = _swift_stdlib_special_mappings_data + index;
auto lowercase = uppercase + 1 + *uppercase;
auto titlecase = lowercase + 1 + *lowercase;
switch (mapping) {
// Uppercase
case 0:
*length = *uppercase;
return uppercase + 1;
// Lowercase
case 1:
*length = *lowercase;
return lowercase + 1;
// Titlecase
case 2:
*length = *titlecase;
return titlecase + 1;
// Unknown mapping.
default:
return nullptr;
}
}
SWIFT_RUNTIME_STDLIB_INTERNAL
__swift_intptr_t _swift_stdlib_getScalarName(__swift_uint32_t scalar,
__swift_uint8_t *buffer,
__swift_intptr_t capacity) {
auto setOffset = _swift_stdlib_names_scalar_sets[scalar >> 7];
if (setOffset == UINT16_MAX) {
return 0;
}
auto scalarIndex = (setOffset << 7) + (scalar & ((1 << 7) - 1));
auto scalarOffset = _swift_stdlib_names_scalars[scalarIndex];
// U+20 is the first scalar that Unicode defines a name for, so their offset
// will the only valid 0.
if (scalarOffset == 0 && scalar != 0x20) {
return 0;
}
__swift_uint32_t nextScalarOffset = 0;
if (scalarIndex != NAMES_SCALARS_MAX_INDEX) {
int i = 1;
// Look for the next scalar who has a name and their position in the names
// array. This tells us exactly how many bytes our name takes up.
while (nextScalarOffset == 0) {
nextScalarOffset = _swift_stdlib_names_scalars[scalarIndex + i];
i += 1;
}
} else {
// This is the last element in the array which represents the last scalar
// name that Unicode defines (excluding variation selectors).
nextScalarOffset = NAMES_LAST_SCALAR_OFFSET;
}
auto nameSize = nextScalarOffset - scalarOffset;
// The total number of initialized bytes in the name string.
int c = 0;
for (__swift_uint32_t i = 0; i < nameSize; i += 1) {
__swift_uint16_t wordIndex = (__swift_uint16_t) _swift_stdlib_names[
scalarOffset + i
];
// If our word index is 0xFF, then it means our word index is larger than a
// byte, so the next two bytes will compose the 16 bit index.
if (wordIndex == 0xFF) {
i += 1;
auto firstPart = _swift_stdlib_names[scalarOffset + i];
wordIndex = firstPart;
i += 1;
auto secondPart = _swift_stdlib_names[scalarOffset + i];
wordIndex |= secondPart << 8;
}
auto wordOffset = _swift_stdlib_word_indices[wordIndex];
auto word = _swift_stdlib_words + wordOffset;
// The last character in a word has the 7th bit set.
while (*word < 0x80) {
if (c >= capacity) {
return c;
}
buffer[c++] = *word++;
}
if (c >= capacity) {
return c;
}
buffer[c++] = *word & 0x7F;
if (c >= capacity) {
return c;
}
buffer[c++] = ' ';
}
// Remove the trailing space.
c -= 1;
// The return value is the number of initialized bytes.
return c;
}
SWIFT_RUNTIME_STDLIB_INTERNAL
__swift_uint16_t _swift_stdlib_getAge(__swift_uint32_t scalar) {
auto lowerBoundIndex = 0;
auto endIndex = AGE_COUNT;
auto upperBoundIndex = endIndex - 1;
while (upperBoundIndex >= lowerBoundIndex) {
auto idx = lowerBoundIndex + (upperBoundIndex - lowerBoundIndex) / 2;
auto entry = _swift_stdlib_ages[idx];
auto lowerBoundScalar = (entry << 43) >> 43;
auto rangeCount = entry >> 32;
auto upperBoundScalar = lowerBoundScalar + rangeCount;
auto ageIdx = (__swift_uint8_t)((entry << 32) >> 32 >> 21);
if (scalar >= lowerBoundScalar && scalar <= upperBoundScalar) {
return _swift_stdlib_ages_data[ageIdx];
}
if (scalar > upperBoundScalar) {
lowerBoundIndex = idx + 1;
continue;
}
if (scalar < lowerBoundScalar) {
upperBoundIndex = idx - 1;
continue;
}
}
// If we made it out here, then our scalar was not found in the composition
// array.
// Return the max here to indicate that we couldn't find one.
return UINT16_MAX;
}
SWIFT_RUNTIME_STDLIB_INTERNAL
__swift_uint8_t _swift_stdlib_getGeneralCategory(__swift_uint32_t scalar) {
auto lowerBoundIndex = 0;
auto endIndex = GENERAL_CATEGORY_COUNT;
auto upperBoundIndex = endIndex - 1;
while (upperBoundIndex >= lowerBoundIndex) {
auto idx = lowerBoundIndex + (upperBoundIndex - lowerBoundIndex) / 2;
auto entry = _swift_stdlib_generalCategory[idx];
auto lowerBoundScalar = (entry << 43) >> 43;
auto rangeCount = entry >> 32;
auto upperBoundScalar = lowerBoundScalar + rangeCount;
auto generalCategory = (__swift_uint8_t)((entry << 32) >> 32 >> 21);
if (scalar >= lowerBoundScalar && scalar <= upperBoundScalar) {
return generalCategory;
}
if (scalar > upperBoundScalar) {
lowerBoundIndex = idx + 1;
continue;
}
if (scalar < lowerBoundScalar) {
upperBoundIndex = idx - 1;
continue;
}
}
// If we made it out here, then our scalar was not found in the composition
// array.
// Return the max here to indicate that we couldn't find one.
return UINT8_MAX;
}
SWIFT_RUNTIME_STDLIB_INTERNAL
__swift_uint8_t _swift_stdlib_getScript(__swift_uint32_t scalar) {
auto lowerBoundIndex = 0;
auto endIndex = SCRIPTS_COUNT;
auto upperBoundIndex = endIndex - 1;
while (upperBoundIndex >= lowerBoundIndex) {
auto index = lowerBoundIndex + (upperBoundIndex - lowerBoundIndex) / 2;
auto entry = _swift_stdlib_scripts[index];
// Shift the enum value out of the scalar.
auto lowerBoundScalar = (entry << 11) >> 11;
__swift_uint32_t upperBoundScalar = 0;
// If we're not at the end of the array, the range count is simply the
// distance to the next element.
if (index != endIndex - 1) {
auto nextEntry = _swift_stdlib_scripts[index + 1];
auto nextLower = (nextEntry << 11) >> 11;
upperBoundScalar = nextLower - 1;
} else {
// Otherwise, the range count is the distance to 0x10FFFF
upperBoundScalar = 0x10FFFF;
}
// Shift the scalar out and get the enum value.
auto script = entry >> 21;
if (scalar >= lowerBoundScalar && scalar <= upperBoundScalar) {
return script;
}
if (scalar > upperBoundScalar) {
lowerBoundIndex = index + 1;
continue;
}
if (scalar < lowerBoundScalar) {
upperBoundIndex = index - 1;
continue;
}
}
// If we make it out of this loop, then it means the scalar was not found at
// all in the array. This should never happen because the array represents all
// scalars from 0x0 to 0x10FFFF, but if somehow this branch gets reached,
// return 255 to indicate a failure.
return UINT8_MAX;
}
SWIFT_RUNTIME_STDLIB_INTERNAL
const __swift_uint8_t *_swift_stdlib_getScriptExtensions(__swift_uint32_t scalar,
__swift_uint8_t *count) {
auto dataIdx = _swift_stdlib_getScalarBitArrayIdx(scalar,
_swift_stdlib_script_extensions,
_swift_stdlib_script_extensions_ranks);
// If we don't have an index into the data indices, then this scalar has no
// script extensions
if (dataIdx == INTPTR_MAX) {
return 0;
}
auto scalarDataIdx = _swift_stdlib_script_extensions_data_indices[dataIdx];
*count = scalarDataIdx >> 11;
return _swift_stdlib_script_extensions_data + (scalarDataIdx & 0x7FF);
}
SWIFT_RUNTIME_STDLIB_INTERNAL
void _swift_stdlib_getCaseMapping(__swift_uint32_t scalar,
__swift_uint32_t *buffer) {
auto mphIdx = _swift_stdlib_getMphIdx(scalar, CASE_FOLD_LEVEL_COUNT,
_swift_stdlib_case_keys,
_swift_stdlib_case_ranks,
_swift_stdlib_case_sizes);
auto caseValue = _swift_stdlib_case[mphIdx];
__swift_uint32_t hashedScalar = (caseValue << 43) >> 43;
// If our scalar is not the original one we hashed, then this scalar has no
// case mapping. It maps to itself.
if (scalar != hashedScalar) {
buffer[0] = scalar;
return;
}
// If the top bit is NOT set, then this scalar simply maps to another scalar.
// We have stored the distance to said scalar in this value.
if ((caseValue & ((__swift_uint64_t)(0x1) << 63)) == 0) {
auto distance = (__swift_int32_t)((caseValue << 1) >> 22);
auto mappedScalar = (__swift_uint32_t)((__swift_int32_t)(scalar) - distance);
buffer[0] = mappedScalar;
return;
}
// Our top bit WAS set which means this scalar maps to multiple scalars.
// Lookup our mapping in the full mph.
auto fullMphIdx = _swift_stdlib_getMphIdx(scalar, CASE_FULL_FOLD_LEVEL_COUNT,
_swift_stdlib_case_full_keys,
_swift_stdlib_case_full_ranks,
_swift_stdlib_case_full_sizes);
auto fullCaseValue = _swift_stdlib_case_full[fullMphIdx];
// Count is either 2 or 3.
auto count = fullCaseValue >> 62;
for (__swift_uint64_t i = 0; i != count; i += 1) {
auto distance = (__swift_int32_t)(fullCaseValue & 0xFFFF);
if ((fullCaseValue & 0x10000) != 0) {
distance = -distance;
}
fullCaseValue >>= 17;
auto mappedScalar = (__swift_uint32_t)((__swift_int32_t)(scalar) - distance);
buffer[i] = mappedScalar;
}
}

View File

@@ -0,0 +1,43 @@
//===----------------------------------------------------------------------===//
//
// This source file is part of the Swift.org open source project
//
// Copyright (c) 2022 - 2023 Apple Inc. and the Swift project authors
// Licensed under Apache License v2.0 with Runtime Library Exception
//
// See https://swift.org/LICENSE.txt for license information
// See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
//
//===----------------------------------------------------------------------===//
#include "../include/WordData.h"
#include "UnicodeData.h"
#include <stdint.h>
SWIFT_RUNTIME_STDLIB_INTERNAL
__swift_uint8_t _swift_stdlib_getWordBreakProperty(__swift_uint32_t scalar) {
auto index = 1; //0th element is a dummy element
while (index < WORD_BREAK_DATA_COUNT) {
auto entry = _swift_stdlib_words[index];
// Shift the range count out of the value.
auto lower = (entry << 11) >> 11;
// Shift the enum out first, then shift out the scalar value.
auto upper = lower + (entry >> 21) - 1;
//If we want the left child of the current node in our virtual tree,
//that's at index * 2, if we want the right child it's at (index * 2) + 1
if (scalar < lower) {
index = 2 * index;
} else if (scalar <= upper) {
return _swift_stdlib_words_data[index];
} else {
index = 2 * index + 1;
}
}
// If we made it out here, then our scalar was not found in the word
// array (this occurs when a scalar doesn't map to any word break
// property). Return the max value here to indicate .any.
return UINT8_MAX;
}

View File

@@ -40,7 +40,9 @@ GRAPHICS := gfx
GFXBUILD := $(BUILD)
#ROMFS := romfs
#GFXBUILD := $(ROMFS)/gfx
APP_TITLE := $(Target)
APP_TITLE := Hello Swift
APP_DESCRIPTION := Built with Embedded Swift, devkitARM & libctru
APP_AUTHOR := Dmitry Serov
#---------------------------------------------------------------------------------
# options for code generation
@@ -58,9 +60,8 @@ CFLAGS += $(INCLUDE) -D__3DS__
CXXFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -std=gnu++11
ASFLAGS := -g $(ARCH)
LDFLAGS = -specs=3dsx.specs -g $(ARCH) -Wl,-Map,$(notdir $*.map)
LIBS := -lctru -lm
LDFLAGS = -specs=3dsx.specs -g $(ARCH) -Wl,-Map,$(notdir $*.map) -L../../Shared/lib
LIBS := -lctru -lm -lShared
#---------------------------------------------------------------------------------
# list of directories containing libraries, this must be the top level containing

View File

@@ -37,10 +37,10 @@ struct Day01 {
}
static func parseInput(_ input: String) -> [(Direction, Int)] {
input.utf8.split(separator: "\n".utf8.first!).map({ line in
input.split(separator: "\n").map({ line in
return (
Direction(line.first!),
atoi(line.dropFirst())
Int(line.dropFirst())!
)
})
}
@@ -87,20 +87,6 @@ struct Day01 {
}
print("Part 2: \(count)")
}
static func atoi(_ str: Substring.UTF8View) -> Int {
var result = 0
for char in str {
if char >= 0x30 && char <= 0x39 {
result = result * 10 + (Int(char) - 0x30)
} else {
break
}
}
return result
}
}
@@ -108,10 +94,10 @@ enum Direction {
case Left
case Right
init(_ char: UInt8) {
init(_ char: Character) {
self = switch char {
case "L".utf8.first: Direction.Left
case "R".utf8.first: Direction.Right
case "L": Direction.Left
case "R": Direction.Right
default: fatalError()
}
}