From 4e45e0840f7175698150ee65d225a864fddde5e2 Mon Sep 17 00:00:00 2001 From: mukund-egov Date: Tue, 27 Aug 2024 11:26:34 +0530 Subject: [PATCH 01/33] Added select all feature --- .../hrms/src/components/SearchUserForm.js | 62 ++++++++++--------- .../components/pageComponents/Multiselect.js | 29 ++++----- 2 files changed, 46 insertions(+), 45 deletions(-) diff --git a/frontend/micro-ui/web/micro-ui-internals/packages/modules/hrms/src/components/SearchUserForm.js b/frontend/micro-ui/web/micro-ui-internals/packages/modules/hrms/src/components/SearchUserForm.js index 5fddd2542..b2ba75862 100644 --- a/frontend/micro-ui/web/micro-ui-internals/packages/modules/hrms/src/components/SearchUserForm.js +++ b/frontend/micro-ui/web/micro-ui-internals/packages/modules/hrms/src/components/SearchUserForm.js @@ -2,7 +2,7 @@ import { Loader, Header, Dropdown, LabelFieldPair, CardLabel, LinkLabel, SubmitB import React, { useState, useMemo, useEffect } from "react"; import { useTranslation } from "react-i18next"; import { Controller, useForm, useWatch } from "react-hook-form"; -import MultiSelectDropdown from "./MultiSelectDropdown"; +import MultiSelectDropdown from "../components/pageComponents/Multiselect"; function filterKeys(data, keys) { return data.map((item) => { const filteredItem = {}; @@ -92,7 +92,7 @@ const SearchUserForm = ({ uniqueTenants, setUniqueTenants, roles, setUniqueRoles { level: "code", value: 7, optionsKey: "name", isMandatory: false }, ]); const [tree, setTree] = useState(null); - const [rolesOptions, setRolesOptions] = useState(null) + const [rolesOptions, setRolesOptions] = useState(null); // const [zones,setZones] = useState([]) // const [circles,setCircles] = useState([]) // const [divisions,setDivisions] = useState([]) @@ -123,7 +123,7 @@ const SearchUserForm = ({ uniqueTenants, setUniqueTenants, roles, setUniqueRoles name: "WSServiceRoles", }, ], - } + }, ], }, }, @@ -150,10 +150,13 @@ const SearchUserForm = ({ uniqueTenants, setUniqueTenants, roles, setUniqueRoles const filteredResult = filterKeys(result, requiredKeys); const resultInTree = buildTree(filteredResult, hierarchy); const excludeCodes = ["HRMS_ADMIN", "LOC_ADMIN", "MDMS_ADMIN", "EMPLOYEE", "SYSTEM"]; - setRolesOptions(data?.MdmsRes?.["ws-services-masters"]?.["WSServiceRoles"]?.filter(row => !excludeCodes.includes(row?.code) - && - (row?.name === "Secretary" || row?.name === "Sarpanch" || row?.name === "Revenue Collector" || row?.name === "DIVISION ADMIN") - )) + setRolesOptions( + data?.MdmsRes?.["ws-services-masters"]?.["WSServiceRoles"]?.filter( + (row) => + !excludeCodes.includes(row?.code) && + (row?.name === "Secretary" || row?.name === "Sarpanch" || row?.name === "Revenue Collector" || row?.name === "DIVISION ADMIN") + ) + ); //updating to state roles as requested // setRolesOptions([ @@ -208,13 +211,13 @@ const SearchUserForm = ({ uniqueTenants, setUniqueTenants, roles, setUniqueRoles unregister, } = useForm({ defaultValues: { - "zoneCode": "", - "circleCode": "", - "divisionCode": "", - "subDivisionCode": "", - "sectionCode": "", - "code": "", - "roles": [] + zoneCode: "", + circleCode: "", + divisionCode: "", + subDivisionCode: "", + sectionCode: "", + code: "", + roles: [], }, }); @@ -222,13 +225,13 @@ const SearchUserForm = ({ uniqueTenants, setUniqueTenants, roles, setUniqueRoles const clearSearch = () => { reset({ - "zoneCode": "", - "circleCode": "", - "divisionCode": "", - "subDivisionCode": "", - "sectionCode": "", - "code": "", - "roles": [] + zoneCode: "", + circleCode: "", + divisionCode: "", + subDivisionCode: "", + sectionCode: "", + code: "", + roles: [], }); setUniqueRoles(null); setUniqueTenants(null); @@ -302,7 +305,7 @@ const SearchUserForm = ({ uniqueTenants, setUniqueTenants, roles, setUniqueRoles //this is the list of tenants under the current subtree const listOfUniqueTenants = getUniqueLeafCodes(currentLevel); setUniqueTenants(() => listOfUniqueTenants); - setUniqueRoles(() => data?.roles?.filter(row => row.code)?.map(role => role.code)); + setUniqueRoles(() => data?.roles?.filter((row) => row.code)?.map((role) => role.code)); }; const optionsForHierarchy = (level, value) => { @@ -330,8 +333,9 @@ const SearchUserForm = ({ uniqueTenants, setUniqueTenants, roles, setUniqueRoles const renderHierarchyFields = useMemo(() => { return hierarchy.map(({ level, optionsKey, isMandatory, ...rest }, idx) => ( - {`${t(Digit.Utils.locale.getTransformedLocale(`HR_SU_${level}`))} ${isMandatory ? "*" : "" - }`} + {`${t(Digit.Utils.locale.getTransformedLocale(`HR_SU_${level}`))} ${ + isMandatory ? "*" : "" + }`} ( e) - ) + ); }} selected={props?.value || []} defaultLabel={t("HR_SU_SELECT_ROLES")} defaultUnit={t("COMMON_ROLES_SELECTED")} showSelectAll={true} t={t} - // config={config} - // disable={false} - // optionsDisable={config?.optionsDisable} + // config={config} + // disable={false} + // optionsDisable={config?.optionsDisable} /> - ) + ); }} rules={{}} defaultValue={[]} diff --git a/frontend/micro-ui/web/micro-ui-internals/packages/modules/hrms/src/components/pageComponents/Multiselect.js b/frontend/micro-ui/web/micro-ui-internals/packages/modules/hrms/src/components/pageComponents/Multiselect.js index 752bec612..a42f5a54a 100644 --- a/frontend/micro-ui/web/micro-ui-internals/packages/modules/hrms/src/components/pageComponents/Multiselect.js +++ b/frontend/micro-ui/web/micro-ui-internals/packages/modules/hrms/src/components/pageComponents/Multiselect.js @@ -62,7 +62,7 @@ const MultiSelectDropdown = ({ const newStateData = Array.isArray(action?.payload?.[1]) ? action?.payload?.[1]?.map((items, index) => { let obj = { - i18text: items?.i18text, + [optionsKey]: items?.[optionsKey], propsData: [action.payload?.[0], action.payload?.[1]?.[index]], }; return obj; @@ -88,12 +88,10 @@ const MultiSelectDropdown = ({ }, [selected?.length]); function fnToSelectOptionThroughProvidedSelection(selected) { - return selected?.map((e) => ( - { - [optionsKey]: e?.i18text? e.i18text : `ACCESSCONTROL_ROLES_ROLES_${e.code}`, - propsData: [null, e] - } - )); + return selected?.map((e) => ({ + [optionsKey]: e?.[optionsKey] ? e[optionsKey] : `ACCESSCONTROL_ROLES_ROLES_${e.code}`, + propsData: [null, e], + })); } const [alreadyQueuedSelectedState, dispatch] = useReducer(reducer, selected, fnToSelectOptionThroughProvidedSelection); @@ -107,16 +105,15 @@ const MultiSelectDropdown = ({ } }, [active]); - useEffect(()=>{ - if (alreadyQueuedSelectedState?.length === filteredOptions?.length){ - if(alreadyQueuedSelectedState?.length != 0 && filteredOptions?.length != 0){ - setIsSelected(true) - } - }else{ - setIsSelected(false) - + useEffect(() => { + if (alreadyQueuedSelectedState?.length === filteredOptions?.length) { + if (alreadyQueuedSelectedState?.length != 0 && filteredOptions?.length != 0) { + setIsSelected(true); + } + } else { + setIsSelected(false); } - },[alreadyQueuedSelectedState]) + }, [alreadyQueuedSelectedState]); function handleOutsideClickAndSubmitSimultaneously() { setActive(false); From fc25682dc478f0bf397d4cf3c9d4c0ecc5e3f1ec Mon Sep 17 00:00:00 2001 From: Hari-egov Date: Tue, 27 Aug 2024 15:19:59 +0530 Subject: [PATCH 02/33] ISTE-374 Fix --- .../css/src/pages/employee/inbox.scss | 12 ++++ .../packages/custom-css/example/index.css | 2 +- .../hrms/src/components/EmployeeModuleCard.js | 70 +++++++++++++++++-- .../modules/hrms/src/components/hrmscard.js | 21 ++++-- 4 files changed, 94 insertions(+), 11 deletions(-) diff --git a/frontend/micro-ui/web/micro-ui-internals/packages/css/src/pages/employee/inbox.scss b/frontend/micro-ui/web/micro-ui-internals/packages/css/src/pages/employee/inbox.scss index 839c86b07..78b670224 100644 --- a/frontend/micro-ui/web/micro-ui-internals/packages/css/src/pages/employee/inbox.scss +++ b/frontend/micro-ui/web/micro-ui-internals/packages/css/src/pages/employee/inbox.scss @@ -41,6 +41,8 @@ } } + + .links-wrapper { @apply pl-md py-sm text-text-btn; .link { @@ -51,6 +53,16 @@ } } } + + .category-header{ + font-weight: 500 !important; + margin-top: 0.5rem !important; + } + + .category-item{ + margin-left: 1rem !important; + margin-top: 0.25rem !important; + } } .MobilePopupHeadingWrapper { diff --git a/frontend/micro-ui/web/micro-ui-internals/packages/custom-css/example/index.css b/frontend/micro-ui/web/micro-ui-internals/packages/custom-css/example/index.css index b3e1be6e0..7cfbab3c6 100644 --- a/frontend/micro-ui/web/micro-ui-internals/packages/custom-css/example/index.css +++ b/frontend/micro-ui/web/micro-ui-internals/packages/custom-css/example/index.css @@ -1884,7 +1884,7 @@ img, video { margin-bottom: 24px; margin-left: 0; } .employee .card-home { - width: 270px; + width: 300px; margin-right: 10px; margin-bottom: 10px; } .employee .card-home-hrms { diff --git a/frontend/micro-ui/web/micro-ui-internals/packages/modules/hrms/src/components/EmployeeModuleCard.js b/frontend/micro-ui/web/micro-ui-internals/packages/modules/hrms/src/components/EmployeeModuleCard.js index 3b71938f5..cf68431cb 100644 --- a/frontend/micro-ui/web/micro-ui-internals/packages/modules/hrms/src/components/EmployeeModuleCard.js +++ b/frontend/micro-ui/web/micro-ui-internals/packages/modules/hrms/src/components/EmployeeModuleCard.js @@ -44,10 +44,72 @@ const EmployeeModuleCard = ({ ))} )} -
- {links.map(({ count, label, link }, index) => ( + + +
+ + + {links.reduce((acc, { count, label, link, category }, index) => { + const currentCategory = category; + + // Check if category has changed or is the first item + if (!acc.currentCategory || acc.currentCategory !== currentCategory) { + acc.currentCategory = currentCategory; + acc.links.push({ category, items: [] }); // Create new category object + } + + // Add link details to the current category + acc.links[acc.links.length - 1].items.push({ count, label, link }); + + return acc; + }, { currentCategory: null, links: [] }) // Initial accumulator state + .links.filter(({ items }) => items.length > 0) // Filter out categories with no items + .map(({ category, items }, index) => ( + <> + {category && ( // Display category header if category exists +
{category}
+ )} +
+ {items.map((item, subIndex) => ( +
+ + { item.link && item.link?.includes("https") ? ( + item.label.includes("Dashboard")? + + + {item.label} + : + + {item.label} + + ) : ( + {item.label} + )} + + {item.count ? ( + <> + {FsmHideCount ? null : ( + {item.count || "-"} + )} + + + + + ) : null} +
+ ))} +
+ + ))} +
+ + + + + {/*
+ {links.map(({ count, label, link,category }, index) => ( - {link && link?.includes("https") ? ( + { link && link?.includes("https") ? ( label.includes("Dashboard")? {label} : @@ -67,7 +129,7 @@ const EmployeeModuleCard = ({ ) : null} ))} -
+
*/} diff --git a/frontend/micro-ui/web/micro-ui-internals/packages/modules/hrms/src/components/hrmscard.js b/frontend/micro-ui/web/micro-ui-internals/packages/modules/hrms/src/components/hrmscard.js index 7561dd21f..cac2eaf04 100644 --- a/frontend/micro-ui/web/micro-ui-internals/packages/modules/hrms/src/components/hrmscard.js +++ b/frontend/micro-ui/web/micro-ui-internals/packages/modules/hrms/src/components/hrmscard.js @@ -30,11 +30,9 @@ const HRMSCard = () => { { label: t("WORK_BENCH_URL_MASTER_DATA"), link: `${window?.location?.origin}/workbench-ui/employee/workbench/mdms-search-v2?moduleName=ws-services-calculation&masterName=WCBillingSlab`, + category:"Edit Master" + }, - // { - // label: t("WORK_BENCH_URL_LOCALIZATION"), - // link: `${window?.location?.origin}/workbench-ui/employee/workbench/localisation-search`, - // }, ] : []; @@ -44,6 +42,7 @@ const HRMSCard = () => { { label: t("WORK_BENCH_URL_VILLAGE_MASTER_DATA"), link: `${window?.location?.origin}/workbench-ui/employee/workbench/mdms-search-v2?moduleName=tenant&masterName=tenants`, + category:"Dashboard" }, ] : []; @@ -54,7 +53,7 @@ const HRMSCard = () => { { label: t("WORK_BENCH_URL_PENALTY_MASTER_DATA"), link: `${window?.location?.origin}/workbench-ui/employee/workbench/mdms-search-v2?moduleName=ws-services-calculation&masterName=Penalty`, - + category:"Edit Master" }, ] : []; @@ -67,35 +66,45 @@ const HRMSCard = () => { count: isLoading ? "-" : data?.EmployeCount?.totalEmployee, label: t("TOTAL_EMPLOYEES"), link: `/${window?.contextPath}/employee/hrms/inbox`, + }, { count: isLoading ? "-" : data?.EmployeCount?.activeEmployee, label: t("ACTIVE_EMPLOYEES"), link: `/${window?.contextPath}/employee/hrms/inbox`, + }, ], links: [ { label: t("HR_SEARCH_USER"), link: `/${window?.contextPath}/employee/hrms/search-user`, - roles: ["DIV_ADMIN", "STATE_ADMIN"] + roles: ["DIV_ADMIN", "STATE_ADMIN"], + category:"Search User" + }, { label: t("HR_HOME_SEARCH_RESULTS_HEADING"), link: `/${window?.contextPath}/employee/hrms/inbox`, + category:"Search User" + }, { label: STATE_ADMIN ? t("HR_COMMON_CREATE_DIVISION_EMPLOYEE_HEADER") : t("HR_COMMON_CREATE_EMPLOYEE_HEADER"), link: `/${window?.contextPath}/employee/hrms/create`, + category:"Create User" }, DIV_ADMIN ? {} : { label: t("HR_STATE_ REPORTS"), link: "https://mgramseva-dwss.punjab.gov.in/kibana/app/r/s/JNF2x?auth_provider_hint=anonymous1", + category:"Dashboard" }, { label: t("HR_RATE_DASHBOARD"), link: "https://mgramseva-dwss.punjab.gov.in/kibana/app/dashboards#/view/22ed8660-39cf-11ef-841e-251f7e3bc6c7?[…]!t,value:60000),time:(from:now-15m,to:now))", + category:"Dashboard" + }, ...moduleForSomeDIVAdmin, ...moduleForSomeSTATEUser, From b5cfa1697613343a594323e4adee4e5aba1996a6 Mon Sep 17 00:00:00 2001 From: Taniya-eGov <103186387+Taniya-eGov@users.noreply.github.com> Date: Wed, 28 Aug 2024 11:57:19 +0530 Subject: [PATCH 03/33] [ISTE-262] - Saving meter reading after taxperiod validation --- .../java/org/egov/wscalculation/service/MeterServicesImpl.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/municipal-services/ws-calculator/src/main/java/org/egov/wscalculation/service/MeterServicesImpl.java b/municipal-services/ws-calculator/src/main/java/org/egov/wscalculation/service/MeterServicesImpl.java index 492a0138c..bd0c6a3b7 100644 --- a/municipal-services/ws-calculator/src/main/java/org/egov/wscalculation/service/MeterServicesImpl.java +++ b/municipal-services/ws-calculator/src/main/java/org/egov/wscalculation/service/MeterServicesImpl.java @@ -57,10 +57,11 @@ public List createMeterReading(MeterConnectionRequest meterConnect } enrichmentService.enrichMeterReadingRequest(meterConnectionRequest); meterReadingsList.add(meterConnectionRequest.getMeterReading()); - wSCalculationDao.saveMeterReading(meterConnectionRequest); + if (meterConnectionRequest.getMeterReading().getGenerateDemand()) { generateDemandForMeterReading(meterReadingsList, meterConnectionRequest.getRequestInfo()); } + wSCalculationDao.saveMeterReading(meterConnectionRequest); return meterReadingsList; } From 4a4edd674991c4903111cd9c002dcba0007fb6bc Mon Sep 17 00:00:00 2001 From: mukund-egov Date: Thu, 29 Aug 2024 11:39:55 +0530 Subject: [PATCH 04/33] Added download all data in excel format functionality --- .../hrms/src/components/SearchUserForm.js | 103 +++++++++++++++++- .../components/pageComponents/jurisdiction.js | 72 +++++------- .../modules/hrms/src/pages/SearchUser.js | 42 +++---- 3 files changed, 148 insertions(+), 69 deletions(-) diff --git a/frontend/micro-ui/web/micro-ui-internals/packages/modules/hrms/src/components/SearchUserForm.js b/frontend/micro-ui/web/micro-ui-internals/packages/modules/hrms/src/components/SearchUserForm.js index b2ba75862..70d98f7a9 100644 --- a/frontend/micro-ui/web/micro-ui-internals/packages/modules/hrms/src/components/SearchUserForm.js +++ b/frontend/micro-ui/web/micro-ui-internals/packages/modules/hrms/src/components/SearchUserForm.js @@ -3,6 +3,10 @@ import React, { useState, useMemo, useEffect } from "react"; import { useTranslation } from "react-i18next"; import { Controller, useForm, useWatch } from "react-hook-form"; import MultiSelectDropdown from "../components/pageComponents/Multiselect"; + +const XLSX = require("xlsx"); +const fs = require("fs"); + function filterKeys(data, keys) { return data.map((item) => { const filteredItem = {}; @@ -14,7 +18,40 @@ function filterKeys(data, keys) { return filteredItem; }); } - +const jsonData = { + ResponseInfo: { + apiId: "Rainmaker", + ver: null, + ts: null, + resMsgId: "uief87324", + msgId: "1724761385030|en_IN", + status: "successful", + }, + Employees: [ + { + id: 879116, + uuid: "05838362-6f06-42dc-b5f5-19b5bb624eb0", + code: "EMP-1013-0944", + employeeStatus: "EMPLOYED", + employeeType: "PERMANENT", + dateOfAppointment: null, + jurisdictions: [ + { + id: "b4fffa01-14a2-4c07-b7a1-56c953db386a", + hierarchy: "REVENUE", + boundary: "pb.balharbinjuhjgfac", + boundaryType: "City", + tenantId: "pb", + auditDetails: { + createdBy: "d158721b-5c25-421b-8c26-c63cf5d38825", + createdDate: 1708332735415, + lastModifiedBy: "4000000001", + }, + }, + ], + }, + ], +}; function getUniqueLeafCodes(tree) { const codes = new Set(); @@ -79,7 +116,7 @@ function buildTree(data, hierarchy) { return tree; } -const SearchUserForm = ({ uniqueTenants, setUniqueTenants, roles, setUniqueRoles }) => { +const SearchUserForm = ({ uniqueTenants, setUniqueTenants, roles, setUniqueRoles, employeeData }) => { const { t } = useTranslation(); const [showToast, setShowToast] = useState(null); const [hierarchy, setHierarchy] = useState([ @@ -93,6 +130,8 @@ const SearchUserForm = ({ uniqueTenants, setUniqueTenants, roles, setUniqueRoles ]); const [tree, setTree] = useState(null); const [rolesOptions, setRolesOptions] = useState(null); + const [isShowAllClicked, setIsShowAllClicked] = useState(false); + // const [zones,setZones] = useState([]) // const [circles,setCircles] = useState([]) // const [divisions,setDivisions] = useState([]) @@ -249,9 +288,59 @@ const SearchUserForm = ({ uniqueTenants, setUniqueTenants, roles, setUniqueRoles // }) }; + useEffect(() => { + if (isShowAllClicked && employeeData) { + jsonToExcel(employeeData, "employees.xlsx"); + setIsShowAllClicked(false); + } + }, [employeeData]); + + function jsonToExcel(employeeData, fileName) { + // Extract attributes from JSON data + console.log(employeeData); + const employees = employeeData.map((employee) => ({ + "User Id": employee.code, + Name: employee.user.name, + "Type of User": employee?.assignments[0]?.department, + Designation: t(employee?.assignments[0]?.designation), + Username: employee?.user?.mobileNumber, + Status: employee?.isActive ? "Active" : "Inactive", + Tenant: t(employee?.tenantId), + })); + + try { + console.log("employeeData", employeeData); + // Create a new workbook and worksheet + + console.log("JSON to EXcel"); + + const wb = XLSX.utils.book_new(); + const ws = XLSX.utils.json_to_sheet(employees); + + // Append the worksheet to the workbook + XLSX.utils.book_append_sheet(wb, ws, "Employees"); + + // Write the file + XLSX.writeFile(wb, fileName); + console.log("Excel file created successfully"); + } catch (error) { + console.log("Error occurred", error); + } + } + + const showAllData = () => { + clearSearch(); + setIsShowAllClicked(true); + const listOfUniqueTenants = getUniqueLeafCodes(tree); + + setUniqueTenants(() => listOfUniqueTenants); + setUniqueRoles(() => rolesOptions?.filter((row) => row.code)?.map((role) => role.code)); + }; const onSubmit = (data) => { //assuming atleast one hierarchy is entered + console.log("data", data); + if (Object.keys(data).length === 0 || Object.values(data).every((value) => !value)) { //toast message setShowToast({ warning: true, label: t("ES_COMMON_MIN_SEARCH_CRITERIA_MSG") }); @@ -330,6 +419,8 @@ const SearchUserForm = ({ uniqueTenants, setUniqueTenants, roles, setUniqueRoles setShowToast(null); }; + // console.log("tenants", getUniqueLeafCodes(tree)); + const renderHierarchyFields = useMemo(() => { return hierarchy.map(({ level, optionsKey, isMandatory, ...rest }, idx) => ( @@ -428,6 +519,14 @@ const SearchUserForm = ({ uniqueTenants, setUniqueTenants, roles, setUniqueRoles {t("HR_SU_CLEAR_SEARCH")} + { + showAllData(); + }} + > + {t("SHOW_ALL_DATA")} + diff --git a/frontend/micro-ui/web/micro-ui-internals/packages/modules/hrms/src/components/pageComponents/jurisdiction.js b/frontend/micro-ui/web/micro-ui-internals/packages/modules/hrms/src/components/pageComponents/jurisdiction.js index 15ad7adbb..af19a5905 100644 --- a/frontend/micro-ui/web/micro-ui-internals/packages/modules/hrms/src/components/pageComponents/jurisdiction.js +++ b/frontend/micro-ui/web/micro-ui-internals/packages/modules/hrms/src/components/pageComponents/jurisdiction.js @@ -39,17 +39,17 @@ const Jurisdictions = ({ t, config, onSelect, userType, formData }) => { !isEdit && sessionFormData?.Jurisdictions?.length > 0 ? makeDefaultValues(sessionFormData) : formData?.Jurisdictions || [ - { - id: undefined, - key: 1, - hierarchy: null, - boundaryType: null, - boundary: null, - division: {}, - divisionBoundary: [], - roles: [], - }, - ] + { + id: undefined, + key: 1, + hierarchy: null, + boundaryType: null, + boundary: null, + division: {}, + divisionBoundary: [], + roles: [], + }, + ] ); const [jurisdictionsData, setJuristictionsData] = useState([]); let hierarchylist = []; @@ -86,7 +86,6 @@ const Jurisdictions = ({ t, config, onSelect, userType, formData }) => { return unique; }, []); - const uniqueDivisions = divisions?.reduce((unique, obj) => { const isDuplicate = unique.some((item) => item.id === obj.id && item.name === obj.name); if (!isDuplicate) { @@ -107,7 +106,6 @@ const Jurisdictions = ({ t, config, onSelect, userType, formData }) => { ); if (uniqueSubDivisionsItems != null) { selectSubDivisionList(uniqueSubDivisionsItems); - } // selectSectionListList }, [data, userData]); @@ -197,7 +195,6 @@ const Jurisdictions = ({ t, config, onSelect, userType, formData }) => { config.key, [...jurisdictionData, ...inactiveJurisdictions].filter((value) => Object.keys(value).length !== 0) ); - }, [jurisdictions, data?.MdmsRes]); const reviseIndexKeys = () => { @@ -235,7 +232,6 @@ const Jurisdictions = ({ t, config, onSelect, userType, formData }) => { ]); setJuristictionsData((prev) => prev.map((unit, index) => ({ ...unit, key: index }))); } - } else { setjurisdictions((prev) => [ ...prev, @@ -250,31 +246,22 @@ const Jurisdictions = ({ t, config, onSelect, userType, formData }) => { }, ]); setjurisdictions((prev) => prev.map((unit, index) => ({ ...unit, key: index }))); - } - - - }; function filterJurisdictions(unit, jurisdictions) { - const divisionBoundaryCodes = new Set(unit.divisionBoundary.map(item => item.code)); - return jurisdictions.filter(jurisdiction => { + const divisionBoundaryCodes = new Set(unit.divisionBoundary.map((item) => item.code)); + return jurisdictions.filter((jurisdiction) => { return !divisionBoundaryCodes.has(jurisdiction.boundary.code); }); } const handleRemoveUnit = (unit) => { if (STATE_ADMIN) { if (!isEdit) { - setjurisdictions(jurisdictions.filter( - (element) => element.key !== unit.key - )); + setjurisdictions(jurisdictions.filter((element) => element.key !== unit.key)); setjurisdictions((prev) => prev.map((unit, index) => ({ ...unit, key: index }))); - } - else { - setJuristictionsData(jurisdictionsData.filter( - (element) => element.key !== unit.key - )); + } else { + setJuristictionsData(jurisdictionsData.filter((element) => element.key !== unit.key)); let filterJurisdictionsItems = filterJurisdictions(unit, jurisdictions); setjurisdictions(filterJurisdictionsItems); setjurisdictions((prev) => prev.map((unit, index) => ({ ...unit, key: index }))); @@ -283,10 +270,7 @@ const Jurisdictions = ({ t, config, onSelect, userType, formData }) => { clearErrors("Jurisdictions"); } reviseIndexKeys(); - } - - - else { + } else { if (unit.id) { let res = { id: unit?.id, @@ -315,15 +299,11 @@ const Jurisdictions = ({ t, config, onSelect, userType, formData }) => { } reviseIndexKeys(); - } - }; let boundaryTypeoption = []; const [focusIndex, setFocusIndex] = useState(-1); - - function getroledata() { if (STATE_ADMIN) { // Specify the role codes you want to filter @@ -341,8 +321,9 @@ const Jurisdictions = ({ t, config, onSelect, userType, formData }) => { const roleCodesToFilter = ["HRMS_ADMIN", "DIV_ADMIN", "MDMS_ADMIN", "LOC_ADMIN", "SYSTEM"]; // Use the filter method to extract roles with the specified codes return data?.MdmsRes?.["ws-services-masters"].WSServiceRoles?.filter((role) => { - return !roleCodesToFilter.includes(role.code) && - (role?.name === "Secretary" || role?.name === "Sarpanch" || role?.name === "Revenue Collector"); + return ( + !roleCodesToFilter.includes(role.code) && (role?.name === "Secretary" || role?.name === "Sarpanch" || role?.name === "Revenue Collector") + ); })?.map((role) => { return { code: role.code, name: role?.name ? role?.name : " ", i18text: "ACCESSCONTROL_ROLES_ROLES_" + role.code }; }); @@ -407,7 +388,7 @@ const Jurisdictions = ({ t, config, onSelect, userType, formData }) => { // SUBDIVISION & SECTION subDivisionList={subDivisionList} sectionList={sectionList} - // SUBDIVISION & SECTION + // SUBDIVISION & SECTION /> )) )} @@ -457,9 +438,9 @@ function Jurisdiction({ if (ele.code === currentTenant) { defaultjurisdiction = ele; } - }) + }); return defaultjurisdiction; - } + }; useEffect(() => { setDivision( @@ -488,7 +469,6 @@ function Jurisdiction({ setjurisdictions((pre) => pre.map((item) => (item.key === jurisdiction.key ? { ...item, boundary: value } : item))); }; - const selectSubDivisionList = (value) => { setjurisdictions((pre) => pre.map((item) => (item.key === jurisdiction.key ? { ...item, subDivision: value } : item))); @@ -498,7 +478,7 @@ function Jurisdiction({ return { code: division.sectionCode, name: division.sectionName, - i18text: Digit.Utils.locale.getCityLocale(division.sectionCode) + i18text: Digit.Utils.locale.getCityLocale(division.sectionCode), }; }); const uniqueSections = sections?.reduce((unique, obj) => { @@ -771,9 +751,7 @@ function Jurisdiction({
0 && "50px", overflowY: "scroll" }}> {jurisdiction?.roles.length > 0 && jurisdiction?.roles.map((value, index) => { - return ( - onRemove(index, value)} /> - ) + return onRemove(index, value)} />; })}
diff --git a/frontend/micro-ui/web/micro-ui-internals/packages/modules/hrms/src/pages/SearchUser.js b/frontend/micro-ui/web/micro-ui-internals/packages/modules/hrms/src/pages/SearchUser.js index 68bcb3a5d..986b38922 100644 --- a/frontend/micro-ui/web/micro-ui-internals/packages/modules/hrms/src/pages/SearchUser.js +++ b/frontend/micro-ui/web/micro-ui-internals/packages/modules/hrms/src/pages/SearchUser.js @@ -1,14 +1,13 @@ -import React, { useState, useEffect } from 'react' -import SearchUserForm from '../components/SearchUserForm' -import SearchUserResults from '../components/SearchUserResults'; -import { Header } from '@egovernments/digit-ui-react-components' +import React, { useState, useEffect } from "react"; +import SearchUserForm from "../components/SearchUserForm"; +import SearchUserResults from "../components/SearchUserResults"; +import { Header } from "@egovernments/digit-ui-react-components"; import { useTranslation } from "react-i18next"; - const SearchUser = () => { - const { t } = useTranslation() - const [uniqueTenants, setUniqueTenants] = useState(null) - const [roles, setUniqueRoles] = useState(null) + const { t } = useTranslation(); + const [uniqueTenants, setUniqueTenants] = useState(null); + const [roles, setUniqueRoles] = useState(null); const requestCriteriaForEmployeeSearch = { url: "/egov-hrms/employees/_searchListOfEmployee", @@ -17,34 +16,37 @@ const SearchUser = () => { criteria: { tenantIds: uniqueTenants, roles: roles, - type: "EMPLOYEE" - } + type: "EMPLOYEE", + }, }, config: { enabled: !!uniqueTenants && !!roles, select: (data) => { - return data?.Employees + return data?.Employees; }, - }, - changeQueryName: { uniqueTenants, roles } + changeQueryName: { uniqueTenants, roles }, }; const { isLoading, data, revalidate, isFetching, error } = Digit.Hooks.useCustomAPIHook(requestCriteriaForEmployeeSearch); - - return (
-
{t("HR_SU")}
- +
{t("HR_SU")}
+
- ) -} + ); +}; -export default SearchUser \ No newline at end of file +export default SearchUser; From c87638cf3451af3c9fcc114ce5f0d5a4e08c71dc Mon Sep 17 00:00:00 2001 From: mukund-egov Date: Thu, 29 Aug 2024 13:55:14 +0530 Subject: [PATCH 05/33] Removed sample data --- .../hrms/src/components/SearchUserForm.js | 35 +------------------ 1 file changed, 1 insertion(+), 34 deletions(-) diff --git a/frontend/micro-ui/web/micro-ui-internals/packages/modules/hrms/src/components/SearchUserForm.js b/frontend/micro-ui/web/micro-ui-internals/packages/modules/hrms/src/components/SearchUserForm.js index 70d98f7a9..e1d762300 100644 --- a/frontend/micro-ui/web/micro-ui-internals/packages/modules/hrms/src/components/SearchUserForm.js +++ b/frontend/micro-ui/web/micro-ui-internals/packages/modules/hrms/src/components/SearchUserForm.js @@ -18,40 +18,7 @@ function filterKeys(data, keys) { return filteredItem; }); } -const jsonData = { - ResponseInfo: { - apiId: "Rainmaker", - ver: null, - ts: null, - resMsgId: "uief87324", - msgId: "1724761385030|en_IN", - status: "successful", - }, - Employees: [ - { - id: 879116, - uuid: "05838362-6f06-42dc-b5f5-19b5bb624eb0", - code: "EMP-1013-0944", - employeeStatus: "EMPLOYED", - employeeType: "PERMANENT", - dateOfAppointment: null, - jurisdictions: [ - { - id: "b4fffa01-14a2-4c07-b7a1-56c953db386a", - hierarchy: "REVENUE", - boundary: "pb.balharbinjuhjgfac", - boundaryType: "City", - tenantId: "pb", - auditDetails: { - createdBy: "d158721b-5c25-421b-8c26-c63cf5d38825", - createdDate: 1708332735415, - lastModifiedBy: "4000000001", - }, - }, - ], - }, - ], -}; + function getUniqueLeafCodes(tree) { const codes = new Set(); From e04d8c157e81caeeb3d5298d9240c081dcadd676 Mon Sep 17 00:00:00 2001 From: mukund-egov Date: Thu, 29 Aug 2024 15:32:18 +0530 Subject: [PATCH 06/33] resolved merge conflicts --- node_modules/.bin/crc32 | 1 + node_modules/.bin/xlsx | 1 + node_modules/.yarn-integrity | 25 + node_modules/adler-32/LICENSE | 201 + node_modules/adler-32/README.md | 140 + node_modules/adler-32/adler32.js | 92 + node_modules/adler-32/package.json | 35 + node_modules/adler-32/types/index.d.ts | 14 + node_modules/adler-32/types/tsconfig.json | 15 + node_modules/adler-32/types/tslint.json | 14 + node_modules/cfb/LICENSE | 201 + node_modules/cfb/README.md | 161 + node_modules/cfb/cfb.js | 1979 ++ node_modules/cfb/node_modules/.bin/crc32 | 1 + node_modules/cfb/package.json | 68 + node_modules/cfb/types/index.d.ts | 128 + node_modules/cfb/types/tsconfig.json | 15 + node_modules/cfb/xlscfb.flow.js | 1856 ++ node_modules/codepage/LICENSE | 201 + node_modules/codepage/README.md | 350 + node_modules/codepage/bits/10000.js | 2 + node_modules/codepage/bits/10001.js | 115 + node_modules/codepage/bits/10002.js | 253 + node_modules/codepage/bits/10003.js | 183 + node_modules/codepage/bits/10004.js | 2 + node_modules/codepage/bits/10005.js | 2 + node_modules/codepage/bits/10006.js | 2 + node_modules/codepage/bits/10007.js | 2 + node_modules/codepage/bits/10008.js | 167 + node_modules/codepage/bits/10010.js | 2 + node_modules/codepage/bits/10017.js | 2 + node_modules/codepage/bits/10021.js | 2 + node_modules/codepage/bits/10029.js | 2 + node_modules/codepage/bits/10079.js | 2 + node_modules/codepage/bits/10081.js | 2 + node_modules/codepage/bits/10082.js | 2 + node_modules/codepage/bits/1010.js | 2 + node_modules/codepage/bits/1026.js | 2 + node_modules/codepage/bits/1047.js | 2 + node_modules/codepage/bits/1132.js | 2 + node_modules/codepage/bits/1140.js | 2 + node_modules/codepage/bits/1141.js | 2 + node_modules/codepage/bits/1142.js | 2 + node_modules/codepage/bits/1143.js | 2 + node_modules/codepage/bits/1144.js | 2 + node_modules/codepage/bits/1145.js | 2 + node_modules/codepage/bits/1146.js | 2 + node_modules/codepage/bits/1147.js | 2 + node_modules/codepage/bits/1148.js | 2 + node_modules/codepage/bits/1149.js | 2 + node_modules/codepage/bits/1250.js | 2 + node_modules/codepage/bits/1251.js | 2 + node_modules/codepage/bits/1252.js | 2 + node_modules/codepage/bits/1253.js | 2 + node_modules/codepage/bits/1254.js | 2 + node_modules/codepage/bits/1255.js | 2 + node_modules/codepage/bits/1256.js | 2 + node_modules/codepage/bits/1257.js | 2 + node_modules/codepage/bits/1258.js | 2 + node_modules/codepage/bits/1361.js | 231 + node_modules/codepage/bits/20000.js | 193 + node_modules/codepage/bits/20001.js | 217 + node_modules/codepage/bits/20002.js | 167 + node_modules/codepage/bits/20003.js | 213 + node_modules/codepage/bits/20004.js | 193 + node_modules/codepage/bits/20005.js | 223 + node_modules/codepage/bits/20105.js | 2 + node_modules/codepage/bits/20106.js | 2 + node_modules/codepage/bits/20107.js | 2 + node_modules/codepage/bits/20108.js | 2 + node_modules/codepage/bits/20261.js | 31 + node_modules/codepage/bits/20269.js | 2 + node_modules/codepage/bits/20273.js | 2 + node_modules/codepage/bits/20277.js | 2 + node_modules/codepage/bits/20278.js | 2 + node_modules/codepage/bits/20280.js | 2 + node_modules/codepage/bits/20284.js | 2 + node_modules/codepage/bits/20285.js | 2 + node_modules/codepage/bits/20290.js | 2 + node_modules/codepage/bits/20297.js | 2 + node_modules/codepage/bits/20420.js | 2 + node_modules/codepage/bits/20423.js | 2 + node_modules/codepage/bits/20424.js | 2 + node_modules/codepage/bits/20833.js | 2 + node_modules/codepage/bits/20838.js | 2 + node_modules/codepage/bits/20866.js | 2 + node_modules/codepage/bits/20871.js | 2 + node_modules/codepage/bits/20880.js | 2 + node_modules/codepage/bits/20905.js | 2 + node_modules/codepage/bits/20924.js | 2 + node_modules/codepage/bits/20932.js | 189 + node_modules/codepage/bits/20936.js | 167 + node_modules/codepage/bits/20949.js | 183 + node_modules/codepage/bits/21025.js | 2 + node_modules/codepage/bits/21027.js | 2 + node_modules/codepage/bits/21866.js | 2 + node_modules/codepage/bits/28591.js | 2 + node_modules/codepage/bits/28592.js | 2 + node_modules/codepage/bits/28593.js | 2 + node_modules/codepage/bits/28594.js | 2 + node_modules/codepage/bits/28595.js | 2 + node_modules/codepage/bits/28596.js | 2 + node_modules/codepage/bits/28597.js | 2 + node_modules/codepage/bits/28598.js | 2 + node_modules/codepage/bits/28599.js | 2 + node_modules/codepage/bits/28600.js | 2 + node_modules/codepage/bits/28601.js | 2 + node_modules/codepage/bits/28603.js | 2 + node_modules/codepage/bits/28604.js | 2 + node_modules/codepage/bits/28605.js | 2 + node_modules/codepage/bits/28606.js | 2 + node_modules/codepage/bits/29001.js | 2 + node_modules/codepage/bits/37.js | 2 + node_modules/codepage/bits/38598.js | 2 + node_modules/codepage/bits/437.js | 2 + node_modules/codepage/bits/47451.js | 2 + node_modules/codepage/bits/500.js | 2 + node_modules/codepage/bits/50220.js | 395 + node_modules/codepage/bits/50221.js | 395 + node_modules/codepage/bits/50222.js | 395 + node_modules/codepage/bits/50225.js | 259 + node_modules/codepage/bits/50227.js | 257 + node_modules/codepage/bits/51932.js | 171 + node_modules/codepage/bits/51936.js | 257 + node_modules/codepage/bits/51949.js | 183 + node_modules/codepage/bits/52936.js | 7 + node_modules/codepage/bits/54936.js | 257 + node_modules/codepage/bits/57002.js | 39 + node_modules/codepage/bits/57003.js | 23 + node_modules/codepage/bits/57004.js | 7 + node_modules/codepage/bits/57005.js | 15 + node_modules/codepage/bits/57006.js | 23 + node_modules/codepage/bits/57007.js | 21 + node_modules/codepage/bits/57008.js | 17 + node_modules/codepage/bits/57009.js | 13 + node_modules/codepage/bits/57010.js | 15 + node_modules/codepage/bits/57011.js | 17 + node_modules/codepage/bits/620.js | 2 + node_modules/codepage/bits/708.js | 2 + node_modules/codepage/bits/720.js | 2 + node_modules/codepage/bits/737.js | 2 + node_modules/codepage/bits/775.js | 2 + node_modules/codepage/bits/808.js | 2 + node_modules/codepage/bits/850.js | 2 + node_modules/codepage/bits/852.js | 2 + node_modules/codepage/bits/855.js | 2 + node_modules/codepage/bits/857.js | 2 + node_modules/codepage/bits/858.js | 2 + node_modules/codepage/bits/860.js | 2 + node_modules/codepage/bits/861.js | 2 + node_modules/codepage/bits/862.js | 2 + node_modules/codepage/bits/863.js | 2 + node_modules/codepage/bits/864.js | 2 + node_modules/codepage/bits/865.js | 2 + node_modules/codepage/bits/866.js | 2 + node_modules/codepage/bits/869.js | 2 + node_modules/codepage/bits/870.js | 2 + node_modules/codepage/bits/872.js | 2 + node_modules/codepage/bits/874.js | 2 + node_modules/codepage/bits/875.js | 2 + node_modules/codepage/bits/895.js | 2 + node_modules/codepage/bits/932.js | 95 + node_modules/codepage/bits/936.js | 257 + node_modules/codepage/bits/949.js | 253 + node_modules/codepage/bits/950.js | 179 + node_modules/codepage/cptable.js | 4651 ++++ node_modules/codepage/cputils.js | 528 + node_modules/codepage/package.json | 72 + node_modules/codepage/types/index.d.ts | 39 + node_modules/codepage/types/tsconfig.json | 15 + node_modules/codepage/types/tslint.json | 11 + node_modules/crc-32/LICENSE | 201 + node_modules/crc-32/README.md | 200 + node_modules/crc-32/crc32.js | 115 + node_modules/crc-32/crc32c.js | 115 + node_modules/crc-32/package.json | 43 + node_modules/crc-32/types/index.d.ts | 14 + node_modules/crc-32/types/tsconfig.json | 14 + node_modules/crc-32/types/tslint.json | 11 + node_modules/frac/LICENSE | 13 + node_modules/frac/README.md | 128 + node_modules/frac/frac.js | 42 + node_modules/frac/package.json | 36 + node_modules/frac/types/index.d.ts | 9 + node_modules/frac/types/tsconfig.json | 14 + node_modules/frac/types/tslint.json | 11 + node_modules/ssf/LICENSE | 201 + node_modules/ssf/README.md | 119 + node_modules/ssf/package.json | 57 + node_modules/ssf/ssf.flow.js | 980 + node_modules/ssf/ssf.js | 966 + node_modules/ssf/types/index.d.ts | 56 + node_modules/ssf/types/tsconfig.json | 15 + node_modules/wmf/LICENSE | 201 + node_modules/wmf/README.md | 92 + node_modules/wmf/package.json | 68 + node_modules/word/CONTRIBUTING.md | 61 + node_modules/word/LICENSE | 201 + node_modules/word/README.md | 2 + node_modules/word/package.json | 29 + node_modules/word/word.js | 1 + node_modules/xlsx/CHANGELOG.md | 264 + node_modules/xlsx/LICENSE | 201 + node_modules/xlsx/README.md | 4504 ++++ node_modules/xlsx/bower.json | 22 + node_modules/xlsx/formats.png | Bin 0 -> 208619 bytes node_modules/xlsx/legend.png | Bin 0 -> 33608 bytes node_modules/xlsx/node_modules/.bin/crc32 | 1 + node_modules/xlsx/package.json | 101 + node_modules/xlsx/types/index.d.ts | 900 + node_modules/xlsx/types/tsconfig.json | 15 + node_modules/xlsx/xlsx.js | 24486 +++++++++++++++++++ node_modules/xlsx/xlsx.mjs | 24597 ++++++++++++++++++++ node_modules/xlsx/xlsxworker.js | 14 + package.json | 5 + yarn.lock | 61 + 216 files changed, 76487 insertions(+) create mode 120000 node_modules/.bin/crc32 create mode 120000 node_modules/.bin/xlsx create mode 100644 node_modules/.yarn-integrity create mode 100644 node_modules/adler-32/LICENSE create mode 100644 node_modules/adler-32/README.md create mode 100644 node_modules/adler-32/adler32.js create mode 100644 node_modules/adler-32/package.json create mode 100644 node_modules/adler-32/types/index.d.ts create mode 100644 node_modules/adler-32/types/tsconfig.json create mode 100644 node_modules/adler-32/types/tslint.json create mode 100644 node_modules/cfb/LICENSE create mode 100644 node_modules/cfb/README.md create mode 100644 node_modules/cfb/cfb.js create mode 120000 node_modules/cfb/node_modules/.bin/crc32 create mode 100644 node_modules/cfb/package.json create mode 100644 node_modules/cfb/types/index.d.ts create mode 100644 node_modules/cfb/types/tsconfig.json create mode 100644 node_modules/cfb/xlscfb.flow.js create mode 100644 node_modules/codepage/LICENSE create mode 100644 node_modules/codepage/README.md create mode 100644 node_modules/codepage/bits/10000.js create mode 100644 node_modules/codepage/bits/10001.js create mode 100644 node_modules/codepage/bits/10002.js create mode 100644 node_modules/codepage/bits/10003.js create mode 100644 node_modules/codepage/bits/10004.js create mode 100644 node_modules/codepage/bits/10005.js create mode 100644 node_modules/codepage/bits/10006.js create mode 100644 node_modules/codepage/bits/10007.js create mode 100644 node_modules/codepage/bits/10008.js create mode 100644 node_modules/codepage/bits/10010.js create mode 100644 node_modules/codepage/bits/10017.js create mode 100644 node_modules/codepage/bits/10021.js create mode 100644 node_modules/codepage/bits/10029.js create mode 100644 node_modules/codepage/bits/10079.js create mode 100644 node_modules/codepage/bits/10081.js create mode 100644 node_modules/codepage/bits/10082.js create mode 100644 node_modules/codepage/bits/1010.js create mode 100644 node_modules/codepage/bits/1026.js create mode 100644 node_modules/codepage/bits/1047.js create mode 100644 node_modules/codepage/bits/1132.js create mode 100644 node_modules/codepage/bits/1140.js create mode 100644 node_modules/codepage/bits/1141.js create mode 100644 node_modules/codepage/bits/1142.js create mode 100644 node_modules/codepage/bits/1143.js create mode 100644 node_modules/codepage/bits/1144.js create mode 100644 node_modules/codepage/bits/1145.js create mode 100644 node_modules/codepage/bits/1146.js create mode 100644 node_modules/codepage/bits/1147.js create mode 100644 node_modules/codepage/bits/1148.js create mode 100644 node_modules/codepage/bits/1149.js create mode 100644 node_modules/codepage/bits/1250.js create mode 100644 node_modules/codepage/bits/1251.js create mode 100644 node_modules/codepage/bits/1252.js create mode 100644 node_modules/codepage/bits/1253.js create mode 100644 node_modules/codepage/bits/1254.js create mode 100644 node_modules/codepage/bits/1255.js create mode 100644 node_modules/codepage/bits/1256.js create mode 100644 node_modules/codepage/bits/1257.js create mode 100644 node_modules/codepage/bits/1258.js create mode 100644 node_modules/codepage/bits/1361.js create mode 100644 node_modules/codepage/bits/20000.js create mode 100644 node_modules/codepage/bits/20001.js create mode 100644 node_modules/codepage/bits/20002.js create mode 100644 node_modules/codepage/bits/20003.js create mode 100644 node_modules/codepage/bits/20004.js create mode 100644 node_modules/codepage/bits/20005.js create mode 100644 node_modules/codepage/bits/20105.js create mode 100644 node_modules/codepage/bits/20106.js create mode 100644 node_modules/codepage/bits/20107.js create mode 100644 node_modules/codepage/bits/20108.js create mode 100644 node_modules/codepage/bits/20261.js create mode 100644 node_modules/codepage/bits/20269.js create mode 100644 node_modules/codepage/bits/20273.js create mode 100644 node_modules/codepage/bits/20277.js create mode 100644 node_modules/codepage/bits/20278.js create mode 100644 node_modules/codepage/bits/20280.js create mode 100644 node_modules/codepage/bits/20284.js create mode 100644 node_modules/codepage/bits/20285.js create mode 100644 node_modules/codepage/bits/20290.js create mode 100644 node_modules/codepage/bits/20297.js create mode 100644 node_modules/codepage/bits/20420.js create mode 100644 node_modules/codepage/bits/20423.js create mode 100644 node_modules/codepage/bits/20424.js create mode 100644 node_modules/codepage/bits/20833.js create mode 100644 node_modules/codepage/bits/20838.js create mode 100644 node_modules/codepage/bits/20866.js create mode 100644 node_modules/codepage/bits/20871.js create mode 100644 node_modules/codepage/bits/20880.js create mode 100644 node_modules/codepage/bits/20905.js create mode 100644 node_modules/codepage/bits/20924.js create mode 100644 node_modules/codepage/bits/20932.js create mode 100644 node_modules/codepage/bits/20936.js create mode 100644 node_modules/codepage/bits/20949.js create mode 100644 node_modules/codepage/bits/21025.js create mode 100644 node_modules/codepage/bits/21027.js create mode 100644 node_modules/codepage/bits/21866.js create mode 100644 node_modules/codepage/bits/28591.js create mode 100644 node_modules/codepage/bits/28592.js create mode 100644 node_modules/codepage/bits/28593.js create mode 100644 node_modules/codepage/bits/28594.js create mode 100644 node_modules/codepage/bits/28595.js create mode 100644 node_modules/codepage/bits/28596.js create mode 100644 node_modules/codepage/bits/28597.js create mode 100644 node_modules/codepage/bits/28598.js create mode 100644 node_modules/codepage/bits/28599.js create mode 100644 node_modules/codepage/bits/28600.js create mode 100644 node_modules/codepage/bits/28601.js create mode 100644 node_modules/codepage/bits/28603.js create mode 100644 node_modules/codepage/bits/28604.js create mode 100644 node_modules/codepage/bits/28605.js create mode 100644 node_modules/codepage/bits/28606.js create mode 100644 node_modules/codepage/bits/29001.js create mode 100644 node_modules/codepage/bits/37.js create mode 100644 node_modules/codepage/bits/38598.js create mode 100644 node_modules/codepage/bits/437.js create mode 100644 node_modules/codepage/bits/47451.js create mode 100644 node_modules/codepage/bits/500.js create mode 100644 node_modules/codepage/bits/50220.js create mode 100644 node_modules/codepage/bits/50221.js create mode 100644 node_modules/codepage/bits/50222.js create mode 100644 node_modules/codepage/bits/50225.js create mode 100644 node_modules/codepage/bits/50227.js create mode 100644 node_modules/codepage/bits/51932.js create mode 100644 node_modules/codepage/bits/51936.js create mode 100644 node_modules/codepage/bits/51949.js create mode 100644 node_modules/codepage/bits/52936.js create mode 100644 node_modules/codepage/bits/54936.js create mode 100644 node_modules/codepage/bits/57002.js create mode 100644 node_modules/codepage/bits/57003.js create mode 100644 node_modules/codepage/bits/57004.js create mode 100644 node_modules/codepage/bits/57005.js create mode 100644 node_modules/codepage/bits/57006.js create mode 100644 node_modules/codepage/bits/57007.js create mode 100644 node_modules/codepage/bits/57008.js create mode 100644 node_modules/codepage/bits/57009.js create mode 100644 node_modules/codepage/bits/57010.js create mode 100644 node_modules/codepage/bits/57011.js create mode 100644 node_modules/codepage/bits/620.js create mode 100644 node_modules/codepage/bits/708.js create mode 100644 node_modules/codepage/bits/720.js create mode 100644 node_modules/codepage/bits/737.js create mode 100644 node_modules/codepage/bits/775.js create mode 100644 node_modules/codepage/bits/808.js create mode 100644 node_modules/codepage/bits/850.js create mode 100644 node_modules/codepage/bits/852.js create mode 100644 node_modules/codepage/bits/855.js create mode 100644 node_modules/codepage/bits/857.js create mode 100644 node_modules/codepage/bits/858.js create mode 100644 node_modules/codepage/bits/860.js create mode 100644 node_modules/codepage/bits/861.js create mode 100644 node_modules/codepage/bits/862.js create mode 100644 node_modules/codepage/bits/863.js create mode 100644 node_modules/codepage/bits/864.js create mode 100644 node_modules/codepage/bits/865.js create mode 100644 node_modules/codepage/bits/866.js create mode 100644 node_modules/codepage/bits/869.js create mode 100644 node_modules/codepage/bits/870.js create mode 100644 node_modules/codepage/bits/872.js create mode 100644 node_modules/codepage/bits/874.js create mode 100644 node_modules/codepage/bits/875.js create mode 100644 node_modules/codepage/bits/895.js create mode 100644 node_modules/codepage/bits/932.js create mode 100644 node_modules/codepage/bits/936.js create mode 100644 node_modules/codepage/bits/949.js create mode 100644 node_modules/codepage/bits/950.js create mode 100644 node_modules/codepage/cptable.js create mode 100644 node_modules/codepage/cputils.js create mode 100644 node_modules/codepage/package.json create mode 100644 node_modules/codepage/types/index.d.ts create mode 100644 node_modules/codepage/types/tsconfig.json create mode 100644 node_modules/codepage/types/tslint.json create mode 100644 node_modules/crc-32/LICENSE create mode 100644 node_modules/crc-32/README.md create mode 100644 node_modules/crc-32/crc32.js create mode 100644 node_modules/crc-32/crc32c.js create mode 100644 node_modules/crc-32/package.json create mode 100644 node_modules/crc-32/types/index.d.ts create mode 100644 node_modules/crc-32/types/tsconfig.json create mode 100644 node_modules/crc-32/types/tslint.json create mode 100644 node_modules/frac/LICENSE create mode 100644 node_modules/frac/README.md create mode 100644 node_modules/frac/frac.js create mode 100644 node_modules/frac/package.json create mode 100644 node_modules/frac/types/index.d.ts create mode 100644 node_modules/frac/types/tsconfig.json create mode 100644 node_modules/frac/types/tslint.json create mode 100644 node_modules/ssf/LICENSE create mode 100644 node_modules/ssf/README.md create mode 100644 node_modules/ssf/package.json create mode 100644 node_modules/ssf/ssf.flow.js create mode 100644 node_modules/ssf/ssf.js create mode 100644 node_modules/ssf/types/index.d.ts create mode 100644 node_modules/ssf/types/tsconfig.json create mode 100644 node_modules/wmf/LICENSE create mode 100644 node_modules/wmf/README.md create mode 100644 node_modules/wmf/package.json create mode 100644 node_modules/word/CONTRIBUTING.md create mode 100644 node_modules/word/LICENSE create mode 100644 node_modules/word/README.md create mode 100644 node_modules/word/package.json create mode 100644 node_modules/word/word.js create mode 100644 node_modules/xlsx/CHANGELOG.md create mode 100644 node_modules/xlsx/LICENSE create mode 100644 node_modules/xlsx/README.md create mode 100644 node_modules/xlsx/bower.json create mode 100644 node_modules/xlsx/formats.png create mode 100644 node_modules/xlsx/legend.png create mode 120000 node_modules/xlsx/node_modules/.bin/crc32 create mode 100644 node_modules/xlsx/package.json create mode 100644 node_modules/xlsx/types/index.d.ts create mode 100644 node_modules/xlsx/types/tsconfig.json create mode 100644 node_modules/xlsx/xlsx.js create mode 100644 node_modules/xlsx/xlsx.mjs create mode 100644 node_modules/xlsx/xlsxworker.js create mode 100644 package.json create mode 100644 yarn.lock diff --git a/node_modules/.bin/crc32 b/node_modules/.bin/crc32 new file mode 120000 index 000000000..9f8b79c5a --- /dev/null +++ b/node_modules/.bin/crc32 @@ -0,0 +1 @@ +../crc-32/bin/crc32.njs \ No newline at end of file diff --git a/node_modules/.bin/xlsx b/node_modules/.bin/xlsx new file mode 120000 index 000000000..683f4c42a --- /dev/null +++ b/node_modules/.bin/xlsx @@ -0,0 +1 @@ +../xlsx/bin/xlsx.njs \ No newline at end of file diff --git a/node_modules/.yarn-integrity b/node_modules/.yarn-integrity new file mode 100644 index 000000000..1938e310c --- /dev/null +++ b/node_modules/.yarn-integrity @@ -0,0 +1,25 @@ +{ + "systemParams": "linux-x64-83", + "modulesFolders": [ + "node_modules" + ], + "flags": [], + "linkedModules": [], + "topLevelPatterns": [ + "xlsx@^0.18.5" + ], + "lockfileEntries": { + "adler-32@~1.3.0": "https://registry.yarnpkg.com/adler-32/-/adler-32-1.3.1.tgz#1dbf0b36dda0012189a32b3679061932df1821e2", + "cfb@~1.2.1": "https://registry.yarnpkg.com/cfb/-/cfb-1.2.2.tgz#94e687628c700e5155436dac05f74e08df23bc44", + "codepage@~1.15.0": "https://registry.yarnpkg.com/codepage/-/codepage-1.15.0.tgz#2e00519024b39424ec66eeb3ec07227e692618ab", + "crc-32@~1.2.0": "https://registry.yarnpkg.com/crc-32/-/crc-32-1.2.2.tgz#3cad35a934b8bf71f25ca524b6da51fb7eace2ff", + "crc-32@~1.2.1": "https://registry.yarnpkg.com/crc-32/-/crc-32-1.2.2.tgz#3cad35a934b8bf71f25ca524b6da51fb7eace2ff", + "frac@~1.1.2": "https://registry.yarnpkg.com/frac/-/frac-1.1.2.tgz#3d74f7f6478c88a1b5020306d747dc6313c74d0b", + "ssf@~0.11.2": "https://registry.yarnpkg.com/ssf/-/ssf-0.11.2.tgz#0b99698b237548d088fc43cdf2b70c1a7512c06c", + "wmf@~1.0.1": "https://registry.yarnpkg.com/wmf/-/wmf-1.0.2.tgz#7d19d621071a08c2bdc6b7e688a9c435298cc2da", + "word@~0.3.0": "https://registry.yarnpkg.com/word/-/word-0.3.0.tgz#8542157e4f8e849f4a363a288992d47612db9961", + "xlsx@^0.18.5": "https://registry.yarnpkg.com/xlsx/-/xlsx-0.18.5.tgz#16711b9113c848076b8a177022799ad356eba7d0" + }, + "files": [], + "artifacts": {} +} \ No newline at end of file diff --git a/node_modules/adler-32/LICENSE b/node_modules/adler-32/LICENSE new file mode 100644 index 000000000..5723c45b6 --- /dev/null +++ b/node_modules/adler-32/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright (C) 2014-present SheetJS LLC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/node_modules/adler-32/README.md b/node_modules/adler-32/README.md new file mode 100644 index 000000000..df17d2ca1 --- /dev/null +++ b/node_modules/adler-32/README.md @@ -0,0 +1,140 @@ +# adler32 + +Signed ADLER-32 algorithm implementation in JS (for the browser and nodejs). +Emphasis on correctness, performance, and IE6+ support. + +## Installation + +With [npm](https://www.npmjs.org/package/adler-32): + +```bash +$ npm install adler-32 +``` + +In the browser: + +```html + +``` + +The browser exposes a variable `ADLER32`. + +When installed globally, npm installs a script `adler32` that computes the +checksum for a specified file or standard input. + +The script will manipulate `module.exports` if available . This is not always +desirable. To prevent the behavior, define `DO_NOT_EXPORT_ADLER`. + +## Usage + +In all cases, the relevant function takes an argument representing data and an +optional second argument representing the starting "seed" (for running hash). + +The return value is a signed 32-bit integer. + +- `ADLER32.buf(byte array or buffer[, seed])` assumes the argument is a sequence + of 8-bit unsigned integers (nodejs `Buffer`, `Uint8Array` or array of bytes). + +- `ADLER32.bstr(binary string[, seed])` assumes the argument is a binary string + where byte `i` is the low byte of the UCS-2 char: `str.charCodeAt(i) & 0xFF` + +- `ADLER32.str(string)` assumes the argument is a standard JS string and + calculates the hash of the UTF-8 encoding. + +For example: + +```js +// var ADLER32 = require('adler-32'); // uncomment if in node +ADLER32.str("SheetJS") // 176947863 +ADLER32.bstr("SheetJS") // 176947863 +ADLER32.buf([ 83, 104, 101, 101, 116, 74, 83 ]) // 176947863 + +adler32 = ADLER32.buf([83, 104]) // 17825980 "Sh" +adler32 = ADLER32.str("eet", adler32) // 95486458 "Sheet" +ADLER32.bstr("JS", adler32) // 176947863 "SheetJS" + +[ADLER32.str("\u2603"), ADLER32.str("\u0003")] // [ 73138686, 262148 ] +[ADLER32.bstr("\u2603"), ADLER32.bstr("\u0003")] // [ 262148, 262148 ] +[ADLER32.buf([0x2603]), ADLER32.buf([0x0003])] // [ 262148, 262148 ] +``` + +## Testing + +`make test` will run the nodejs-based test. + +To run the in-browser tests, run a local server and go to the `ctest` directory. +`make ctestserv` will start a python `SimpleHTTPServer` server on port 8000. + +To update the browser artifacts, run `make ctest`. + +To generate the bits file, use the `adler32` function from python `zlib`: + +```python +>>> from zlib import adler32 +>>> x="foo bar baz٪☃🍣" +>>> adler32(x) +1543572022 +>>> adler32(x+x) +-2076896149 +>>> adler32(x+x+x) +2023497376 +``` + +The [`adler32-cli`](https://www.npmjs.com/package/adler32-cli) package includes +scripts for processing files or text on standard input: + +```bash +$ echo "this is a test" > t.txt +$ adler32-cli t.txt +726861088 +``` + +For comparison, the `adler32.py` script in the subdirectory uses python `zlib`: + +```bash +$ packages/adler32-cli/bin/adler32.py t.txt +726861088 +``` + +## Performance + +`make perf` will run algorithmic performance tests (which should justify certain +decisions in the code). + +Bit twiddling is much faster than taking the mod in Safari and Firefox browsers. +Instead of taking the literal mod 65521, it is faster to keep it in the integers +by bit-shifting: `65536 ~ 15 mod 65521` so for nonnegative integer `a`: + +``` + a = (a >>> 16) * 65536 + (a & 65535) [equality] + a ~ (a >>> 16) * 15 + (a & 65535) mod 65521 +``` + +The mod is taken at the very end, since the intermediate result may exceed 65521 + +## Magic Number + +The magic numbers were chosen so as to not overflow a 31-bit integer: + +```mathematica +F[n_] := Reduce[x*(x + 1)*n/2 + (x + 1)*(65521) < (2^31 - 1) && x > 0, x, Integers] +F[255] (* bstr: x \[Element] Integers && 1 <= x <= 3854 *) +F[127] (* ascii: x \[Element] Integers && 1 <= x <= 5321 *) +``` + +Subtract up to 4 elements for the Unicode case. + +## License + +Please consult the attached LICENSE file for details. All rights not explicitly +granted by the Apache 2.0 license are reserved by the Original Author. + +## Badges + +[![Sauce Test Status](https://saucelabs.com/browser-matrix/adler32.svg)](https://saucelabs.com/u/adler32) + +[![Build Status](https://img.shields.io/github/workflow/status/sheetjs/js-adler32/Tests:%20node.js)](https://github.com/SheetJS/js-adler32/actions) + +[![Coverage Status](http://img.shields.io/coveralls/SheetJS/js-adler32/master.svg)](https://coveralls.io/r/SheetJS/js-adler32?branch=master) + +[![Analytics](https://ga-beacon.appspot.com/UA-36810333-1/SheetJS/js-adler32?pixel)](https://github.com/SheetJS/js-adler32) diff --git a/node_modules/adler-32/adler32.js b/node_modules/adler-32/adler32.js new file mode 100644 index 000000000..e9f84b936 --- /dev/null +++ b/node_modules/adler-32/adler32.js @@ -0,0 +1,92 @@ +/* adler32.js (C) 2014-present SheetJS -- http://sheetjs.com */ +/* vim: set ts=2: */ +/*exported ADLER32 */ +var ADLER32; +(function (factory) { + /*jshint ignore:start */ + /*eslint-disable */ + if(typeof DO_NOT_EXPORT_ADLER === 'undefined') { + if('object' === typeof exports) { + factory(exports); + } else if ('function' === typeof define && define.amd) { + define(function () { + var module = {}; + factory(module); + return module; + }); + } else { + factory(ADLER32 = {}); + } + } else { + factory(ADLER32 = {}); + } + /*eslint-enable */ + /*jshint ignore:end */ +}(function(ADLER32) { +ADLER32.version = '1.3.1'; +function adler32_bstr(bstr, seed) { + var a = 1, b = 0, L = bstr.length, M = 0; + if(typeof seed === 'number') { a = seed & 0xFFFF; b = seed >>> 16; } + for(var i = 0; i < L;) { + M = Math.min(L-i, 2654)+i; + for(;i>>16)+(a&65535)); + b = (15*(b>>>16)+(b&65535)); + } + return ((b%65521) << 16) | (a%65521); +} + +function adler32_buf(buf, seed) { + var a = 1, b = 0, L = buf.length, M = 0; + if(typeof seed === 'number') { a = seed & 0xFFFF; b = (seed >>> 16) & 0xFFFF; } + for(var i = 0; i < L;) { + M = Math.min(L-i, 2654)+i; + for(;i>>16)+(a&65535)); + b = (15*(b>>>16)+(b&65535)); + } + return ((b%65521) << 16) | (a%65521); +} + +function adler32_str(str, seed) { + var a = 1, b = 0, L = str.length, M = 0, c = 0, d = 0; + if(typeof seed === 'number') { a = seed & 0xFFFF; b = seed >>> 16; } + for(var i = 0; i < L;) { + M = Math.min(L-i, 2918); + while(M>0) { + c = str.charCodeAt(i++); + if(c < 0x80) { a += c; } + else if(c < 0x800) { + a += 192|((c>>6)&31); b += a; --M; + a += 128|(c&63); + } else if(c >= 0xD800 && c < 0xE000) { + c = (c&1023)+64; d = str.charCodeAt(i++) & 1023; + a += 240|((c>>8)&7); b += a; --M; + a += 128|((c>>2)&63); b += a; --M; + a += 128|((d>>6)&15)|((c&3)<<4); b += a; --M; + a += 128|(d&63); + } else { + a += 224|((c>>12)&15); b += a; --M; + a += 128|((c>>6)&63); b += a; --M; + a += 128|(c&63); + } + b += a; --M; + } + a = (15*(a>>>16)+(a&65535)); + b = (15*(b>>>16)+(b&65535)); + } + return ((b%65521) << 16) | (a%65521); +} +// $FlowIgnore +ADLER32.bstr = adler32_bstr; +// $FlowIgnore +ADLER32.buf = adler32_buf; +// $FlowIgnore +ADLER32.str = adler32_str; +})); diff --git a/node_modules/adler-32/package.json b/node_modules/adler-32/package.json new file mode 100644 index 000000000..600402532 --- /dev/null +++ b/node_modules/adler-32/package.json @@ -0,0 +1,35 @@ +{ + "name": "adler-32", + "version": "1.3.1", + "author": "sheetjs", + "description": "Pure-JS ADLER-32", + "keywords": [ "adler32", "checksum" ], + "main": "./adler32", + "types": "types/index.d.ts", + "devDependencies": { + "mocha": "~2.5.3", + "blanket": "~1.2.3", + "codepage": "~1.10.0", + "@sheetjs/uglify-js": "~2.7.3", + "@types/node": "^8.0.7", + "dtslint": "^0.1.2", + "typescript": "2.2.0" + }, + "repository": { "type": "git", "url": "git://github.com/SheetJS/js-adler32.git" }, + "scripts": { + "test": "make test", + "build": "make", + "lint": "make fullint", + "dtslint": "dtslint types" + }, + "config": { + "blanket": { + "pattern": "adler32.js" + } + }, + "homepage": "http://sheetjs.com/opensource", + "files": ["adler32.js", "LICENSE", "README.md", "types/index.d.ts", "types/*.json"], + "bugs": { "url": "https://github.com/SheetJS/js-adler32/issues" }, + "license": "Apache-2.0", + "engines": { "node": ">=0.8" } +} diff --git a/node_modules/adler-32/types/index.d.ts b/node_modules/adler-32/types/index.d.ts new file mode 100644 index 000000000..ef620de51 --- /dev/null +++ b/node_modules/adler-32/types/index.d.ts @@ -0,0 +1,14 @@ +/* adler32.js (C) 2014-present SheetJS -- http://sheetjs.com */ +// TypeScript Version: 2.2 + +/** Version string */ +export const version: string; + +/** Process a node buffer or byte array */ +export function buf(data: number[] | Uint8Array, seed?: number): number; + +/** Process a binary string */ +export function bstr(data: string, seed?: number): number; + +/** Process a JS string based on the UTF8 encoding */ +export function str(data: string, seed?: number): number; diff --git a/node_modules/adler-32/types/tsconfig.json b/node_modules/adler-32/types/tsconfig.json new file mode 100644 index 000000000..989de1dd6 --- /dev/null +++ b/node_modules/adler-32/types/tsconfig.json @@ -0,0 +1,15 @@ +{ + "compilerOptions": { + "module": "commonjs", + "lib": [ "es5" ], + "noImplicitAny": true, + "noImplicitThis": true, + "strictNullChecks": false, + "baseUrl": ".", + "paths": { "adler-32": ["."] }, + "types": [], + "noEmit": true, + "strictFunctionTypes": true, + "forceConsistentCasingInFileNames": true + } +} diff --git a/node_modules/adler-32/types/tslint.json b/node_modules/adler-32/types/tslint.json new file mode 100644 index 000000000..0ce4c6c14 --- /dev/null +++ b/node_modules/adler-32/types/tslint.json @@ -0,0 +1,14 @@ +{ + "extends": "dtslint/dtslint.json", + "rules": { + "no-implicit-dependencies": false, + "whitespace": false, + "no-sparse-arrays": false, + "only-arrow-functions": false, + "no-consecutive-blank-lines": false, + "prefer-conditional-expression": false, + "one-variable-per-declaration": false, + "strict-export-declare-modifiers": false, + "prefer-template": false + } +} diff --git a/node_modules/cfb/LICENSE b/node_modules/cfb/LICENSE new file mode 100644 index 000000000..ac1d91a4b --- /dev/null +++ b/node_modules/cfb/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright (C) 2013-present SheetJS LLC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/node_modules/cfb/README.md b/node_modules/cfb/README.md new file mode 100644 index 000000000..65e86b6d8 --- /dev/null +++ b/node_modules/cfb/README.md @@ -0,0 +1,161 @@ +# Container File Blobs + +Pure JS implementation of various container file formats, including ZIP and CFB. + +[![Build Status](https://travis-ci.org/SheetJS/js-cfb.svg?branch=master)](https://travis-ci.org/SheetJS/js-cfb) +[![Coverage Status](http://img.shields.io/coveralls/SheetJS/js-cfb/master.svg)](https://coveralls.io/r/SheetJS/js-cfb?branch=master) +[![Dependencies Status](https://david-dm.org/sheetjs/js-cfb/status.svg)](https://david-dm.org/sheetjs/js-cfb) +[![NPM Downloads](https://img.shields.io/npm/dt/cfb.svg)](https://npmjs.org/package/cfb) +[![Analytics](https://ga-beacon.appspot.com/UA-36810333-1/SheetJS/js-cfb?pixel)](https://github.com/SheetJS/js-cfb) + +## Installation + +In the browser: + +```html + +``` + +With [npm](https://www.npmjs.org/package/cfb): + +```bash +$ npm install cfb +``` + +The `xlscfb.js` file is designed to be embedded in [js-xlsx](http://git.io/xlsx) + + +## Library Usage + +In node: + +```js +var CFB = require('cfb'); +``` + +For example, to get the Workbook content from an Excel 2003 XLS file: + +```js +var cfb = CFB.read(filename, {type: 'file'}); +var workbook = CFB.find(cfb, 'Workbook'); +var data = workbook.content; +``` + + +## Command-Line Utility Usage + +The [`cfb-cli`](https://www.npmjs.com/package/cfb-cli) module ships with a CLI +tool for manipulating and inspecting supported files. + + +## JS API + +TypeScript definitions are maintained in `types/index.d.ts`. + +The CFB object exposes the following methods and properties: + +`CFB.parse(blob)` takes a nodejs Buffer or an array of bytes and returns an +parsed representation of the data. + +`CFB.read(blob, opts)` wraps `parse`. + +`CFB.find(cfb, path)` performs a case-insensitive match for the path (or file +name, if there are no slashes) and returns an entry object or null if not found. + +`CFB.write(cfb, opts)` generates a file based on the container. + +`CFB.writeFile(cfb, filename, opts)` creates a file with the specified name. + +### Parse Options + +`CFB.read` takes an options argument. `opts.type` controls the behavior: + +| `type` | expected input | +|------------|:----------------------------------------------------------------| +| `"base64"` | string: Base64 encoding of the file | +| `"binary"` | string: binary string (byte `n` is `data.charCodeAt(n)`) | +| `"buffer"` | nodejs Buffer | +| `"file"` | string: path of file that will be read (nodejs only) | +| (default) | buffer or array of 8-bit unsigned int (byte `n` is `data[n]`) | + + +### Write Options + +`CFB.write` and `CFB.writeFile` take options argument. + +`opts.type` controls the behavior: + +| `type` | output | +|------------|:----------------------------------------------------------------| +| `"base64"` | string: Base64 encoding of the file | +| `"binary"` | string: binary string (byte `n` is `data.charCodeAt(n)`) | +| `"buffer"` | nodejs Buffer | +| `"file"` | string: path of file that will be created (nodejs only) | +| (default) | buffer if available, array of 8-bit unsigned int otherwise | + +`opts.fileType` controls the output file type: + +| `fileType` | output | +|:-------------------|:------------------------| +| `'cfb'` (default) | CFB container | +| `'zip'` | ZIP file | +| `'mad'` | MIME aggregate document | + +`opts.compression` enables DEFLATE compression for ZIP file type. + + +## Utility Functions + +The utility functions are available in the `CFB.utils` object. Functions that +accept a `name` argument strictly deal with absolute file names: + +- `.cfb_new(?opts)` creates a new container object. +- `.cfb_add(cfb, name, ?content, ?opts)` adds a new file to the `cfb`. + Set the option `{unsafe:true}` to skip existence checks (for bulk additions) +- `.cfb_del(cfb, name)` deletes the specified file +- `.cfb_mov(cfb, old_name, new_name)` moves the old file to new path and name +- `.use_zlib(require("zlib"))` loads a nodejs `zlib` instance. + +By default, the library uses a pure JS inflate/deflate implementation. NodeJS +`zlib.InflateRaw` exposes the number of bytes read in versions after `8.11.0`. +If a supplied `zlib` does not support the required features, a warning will be +displayed in the console and the pure JS fallback will be used. + + +## Container Object Description + +The objects returned by `parse` and `read` have the following properties: + +- `.FullPaths` is an array of the names of all of the streams (files) and + storages (directories) in the container. The paths are properly prefixed from + the root entry (so the entries are unique) + +- `.FileIndex` is an array, in the same order as `.FullPaths`, whose values are + objects following the schema: + +```typescript +interface CFBEntry { + name: string; /** Case-sensitive internal name */ + type: number; /** 1 = dir, 2 = file, 5 = root ; see [MS-CFB] 2.6.1 */ + content: Buffer | number[] | Uint8Array; /** Raw Content */ + ct?: Date; /** Creation Time */ + mt?: Date; /** Modification Time */ + ctype?: String; /** Content-Type (for MAD) */ +} +``` + + +## License + +Please consult the attached LICENSE file for details. All rights not explicitly +granted by the Apache 2.0 License are reserved by the Original Author. + + +## References + + - `MS-CFB`: Compound File Binary File Format + - ZIP `APPNOTE.TXT`: .ZIP File Format Specification + - RFC1951: https://www.ietf.org/rfc/rfc1951.txt + - RFC2045: https://www.ietf.org/rfc/rfc2045.txt + - RFC2557: https://www.ietf.org/rfc/rfc2557.txt + diff --git a/node_modules/cfb/cfb.js b/node_modules/cfb/cfb.js new file mode 100644 index 000000000..dec6197b9 --- /dev/null +++ b/node_modules/cfb/cfb.js @@ -0,0 +1,1979 @@ +/* cfb.js (C) 2013-present SheetJS -- http://sheetjs.com */ +/* vim: set ts=2: */ +/*jshint eqnull:true */ +/*exported CFB */ +/*global module, require:false, process:false, Buffer:false, Uint8Array:false, Uint16Array:false */ + +var Base64_map = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; +function Base64_encode(input) { + var o = ""; + var c1 = 0, c2 = 0, c3 = 0, e1 = 0, e2 = 0, e3 = 0, e4 = 0; + for (var i = 0; i < input.length; ) { + c1 = input.charCodeAt(i++); + e1 = (c1 >> 2); + c2 = input.charCodeAt(i++); + e2 = ((c1 & 3) << 4) | (c2 >> 4); + c3 = input.charCodeAt(i++); + e3 = ((c2 & 15) << 2) | (c3 >> 6); + e4 = (c3 & 63); + if (isNaN(c2)) e3 = e4 = 64; + else if (isNaN(c3)) e4 = 64; + o += Base64_map.charAt(e1) + Base64_map.charAt(e2) + Base64_map.charAt(e3) + Base64_map.charAt(e4); + } + return o; +} +function Base64_decode(input) { + var o = ""; + var c1 = 0, c2 = 0, c3 = 0, e1 = 0, e2 = 0, e3 = 0, e4 = 0; + input = input.replace(/[^\w\+\/\=]/g, ""); + for (var i = 0; i < input.length;) { + e1 = Base64_map.indexOf(input.charAt(i++)); + e2 = Base64_map.indexOf(input.charAt(i++)); + c1 = (e1 << 2) | (e2 >> 4); + o += String.fromCharCode(c1); + e3 = Base64_map.indexOf(input.charAt(i++)); + c2 = ((e2 & 15) << 4) | (e3 >> 2); + if (e3 !== 64) o += String.fromCharCode(c2); + e4 = Base64_map.indexOf(input.charAt(i++)); + c3 = ((e3 & 3) << 6) | e4; + if (e4 !== 64) o += String.fromCharCode(c3); + } + return o; +} +var has_buf = (function() { return typeof Buffer !== 'undefined' && typeof process !== 'undefined' && typeof process.versions !== 'undefined' && !!process.versions.node; })(); + +var Buffer_from = (function() { + if(typeof Buffer !== 'undefined') { + var nbfs = !Buffer.from; + if(!nbfs) try { Buffer.from("foo", "utf8"); } catch(e) { nbfs = true; } + return nbfs ? function(buf, enc) { return (enc) ? new Buffer(buf, enc) : new Buffer(buf); } : Buffer.from.bind(Buffer); + } + return function() {}; +})(); + + +function new_raw_buf(len) { + /* jshint -W056 */ + if(has_buf) { + if(Buffer.alloc) return Buffer.alloc(len); + var b = new Buffer(len); b.fill(0); return b; + } + return typeof Uint8Array != "undefined" ? new Uint8Array(len) : new Array(len); + /* jshint +W056 */ +} + +function new_unsafe_buf(len) { + /* jshint -W056 */ + if(has_buf) return Buffer.allocUnsafe ? Buffer.allocUnsafe(len) : new Buffer(len); + return typeof Uint8Array != "undefined" ? new Uint8Array(len) : new Array(len); + /* jshint +W056 */ +} + +var s2a = function s2a(s) { + if(has_buf) return Buffer_from(s, "binary"); + return s.split("").map(function(x){ return x.charCodeAt(0) & 0xff; }); +}; + +var chr0 = /\u0000/g, chr1 = /[\u0001-\u0006]/g; +var __toBuffer = function(bufs) { var x = []; for(var i = 0; i < bufs[0].length; ++i) { x.push.apply(x, bufs[0][i]); } return x; }; +var ___toBuffer = __toBuffer; +var __utf16le = function(b,s,e) { var ss=[]; for(var i=s; i 0 && Buffer.isBuffer(bufs[0][0])) ? Buffer.concat((bufs[0])) : ___toBuffer(bufs);}; + s2a = function(s) { return Buffer_from(s, "binary"); }; + bconcat = function(bufs) { return Buffer.isBuffer(bufs[0]) ? Buffer.concat(bufs) : __bconcat(bufs); }; +} + + +var __readUInt8 = function(b, idx) { return b[idx]; }; +var __readUInt16LE = function(b, idx) { return b[idx+1]*(1<<8)+b[idx]; }; +var __readInt16LE = function(b, idx) { var u = b[idx+1]*(1<<8)+b[idx]; return (u < 0x8000) ? u : (0xffff - u + 1) * -1; }; +var __readUInt32LE = function(b, idx) { return b[idx+3]*(1<<24)+(b[idx+2]<<16)+(b[idx+1]<<8)+b[idx]; }; +var __readInt32LE = function(b, idx) { return (b[idx+3]<<24)+(b[idx+2]<<16)+(b[idx+1]<<8)+b[idx]; }; + +function ReadShift(size, t) { + var oI, oS, type = 0; + switch(size) { + case 1: oI = __readUInt8(this, this.l); break; + case 2: oI = (t !== 'i' ? __readUInt16LE : __readInt16LE)(this, this.l); break; + case 4: oI = __readInt32LE(this, this.l); break; + case 16: type = 2; oS = __hexlify(this, this.l, size); + } + this.l += size; if(type === 0) return oI; return oS; +} + +var __writeUInt32LE = function(b, val, idx) { b[idx] = (val & 0xFF); b[idx+1] = ((val >>> 8) & 0xFF); b[idx+2] = ((val >>> 16) & 0xFF); b[idx+3] = ((val >>> 24) & 0xFF); }; +var __writeInt32LE = function(b, val, idx) { b[idx] = (val & 0xFF); b[idx+1] = ((val >> 8) & 0xFF); b[idx+2] = ((val >> 16) & 0xFF); b[idx+3] = ((val >> 24) & 0xFF); }; + +function WriteShift(t, val, f) { + var size = 0, i = 0; + switch(f) { + case "hex": for(; i < t; ++i) { +this[this.l++] = parseInt(val.slice(2*i, 2*i+2), 16)||0; + } return this; + case "utf16le": +var end = this.l + t; + for(i = 0; i < Math.min(val.length, t); ++i) { + var cc = val.charCodeAt(i); + this[this.l++] = cc & 0xff; + this[this.l++] = cc >> 8; + } + while(this.l < end) this[this.l++] = 0; + return this; + } +switch(t) { + case 1: size = 1; this[this.l] = val&0xFF; break; + case 2: size = 2; this[this.l] = val&0xFF; val >>>= 8; this[this.l+1] = val&0xFF; break; + case 4: size = 4; __writeUInt32LE(this, val, this.l); break; + case -4: size = 4; __writeInt32LE(this, val, this.l); break; + } + this.l += size; return this; +} + +function CheckField(hexstr, fld) { + var m = __hexlify(this,this.l,hexstr.length>>1); + if(m !== hexstr) throw new Error(fld + 'Expected ' + hexstr + ' saw ' + m); + this.l += hexstr.length>>1; +} + +function prep_blob(blob, pos) { + blob.l = pos; + blob.read_shift = ReadShift; + blob.chk = CheckField; + blob.write_shift = WriteShift; +} + +function new_buf(sz) { + var o = (new_raw_buf(sz)); + prep_blob(o, 0); + return o; +} + +/*! crc32.js (C) 2014-present SheetJS -- http://sheetjs.com */ +/* vim: set ts=2: */ +/*exported CRC32 */ +var CRC32 = (function() { +var CRC32 = {}; +CRC32.version = '1.2.1'; +/*global Int32Array */ +function signed_crc_table() { + var c = 0, table = new Array(256); + + for(var n =0; n != 256; ++n){ + c = n; + c = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1)); + c = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1)); + c = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1)); + c = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1)); + c = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1)); + c = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1)); + c = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1)); + c = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1)); + table[n] = c; + } + + return typeof Int32Array !== 'undefined' ? new Int32Array(table) : table; +} + +var T0 = signed_crc_table(); +function slice_by_16_tables(T) { + var c = 0, v = 0, n = 0, table = typeof Int32Array !== 'undefined' ? new Int32Array(4096) : new Array(4096) ; + + for(n = 0; n != 256; ++n) table[n] = T[n]; + for(n = 0; n != 256; ++n) { + v = T[n]; + for(c = 256 + n; c < 4096; c += 256) v = table[c] = (v >>> 8) ^ T[v & 0xFF]; + } + var out = []; + for(n = 1; n != 16; ++n) out[n - 1] = typeof Int32Array !== 'undefined' ? table.subarray(n * 256, n * 256 + 256) : table.slice(n * 256, n * 256 + 256); + return out; +} +var TT = slice_by_16_tables(T0); +var T1 = TT[0], T2 = TT[1], T3 = TT[2], T4 = TT[3], T5 = TT[4]; +var T6 = TT[5], T7 = TT[6], T8 = TT[7], T9 = TT[8], Ta = TT[9]; +var Tb = TT[10], Tc = TT[11], Td = TT[12], Te = TT[13], Tf = TT[14]; +function crc32_bstr(bstr, seed) { + var C = seed ^ -1; + for(var i = 0, L = bstr.length; i < L;) C = (C>>>8) ^ T0[(C^bstr.charCodeAt(i++))&0xFF]; + return ~C; +} + +function crc32_buf(B, seed) { + var C = seed ^ -1, L = B.length - 15, i = 0; + for(; i < L;) C = + Tf[B[i++] ^ (C & 255)] ^ + Te[B[i++] ^ ((C >> 8) & 255)] ^ + Td[B[i++] ^ ((C >> 16) & 255)] ^ + Tc[B[i++] ^ (C >>> 24)] ^ + Tb[B[i++]] ^ Ta[B[i++]] ^ T9[B[i++]] ^ T8[B[i++]] ^ + T7[B[i++]] ^ T6[B[i++]] ^ T5[B[i++]] ^ T4[B[i++]] ^ + T3[B[i++]] ^ T2[B[i++]] ^ T1[B[i++]] ^ T0[B[i++]]; + L += 15; + while(i < L) C = (C>>>8) ^ T0[(C^B[i++])&0xFF]; + return ~C; +} + +function crc32_str(str, seed) { + var C = seed ^ -1; + for(var i = 0, L = str.length, c = 0, d = 0; i < L;) { + c = str.charCodeAt(i++); + if(c < 0x80) { + C = (C>>>8) ^ T0[(C^c)&0xFF]; + } else if(c < 0x800) { + C = (C>>>8) ^ T0[(C ^ (192|((c>>6)&31)))&0xFF]; + C = (C>>>8) ^ T0[(C ^ (128|(c&63)))&0xFF]; + } else if(c >= 0xD800 && c < 0xE000) { + c = (c&1023)+64; d = str.charCodeAt(i++)&1023; + C = (C>>>8) ^ T0[(C ^ (240|((c>>8)&7)))&0xFF]; + C = (C>>>8) ^ T0[(C ^ (128|((c>>2)&63)))&0xFF]; + C = (C>>>8) ^ T0[(C ^ (128|((d>>6)&15)|((c&3)<<4)))&0xFF]; + C = (C>>>8) ^ T0[(C ^ (128|(d&63)))&0xFF]; + } else { + C = (C>>>8) ^ T0[(C ^ (224|((c>>12)&15)))&0xFF]; + C = (C>>>8) ^ T0[(C ^ (128|((c>>6)&63)))&0xFF]; + C = (C>>>8) ^ T0[(C ^ (128|(c&63)))&0xFF]; + } + } + return ~C; +} +CRC32.table = T0; +CRC32.bstr = crc32_bstr; +CRC32.buf = crc32_buf; +CRC32.str = crc32_str; +return CRC32; +})(); +/* [MS-CFB] v20171201 */ +var CFB = (function _CFB(){ +var exports = {}; +exports.version = '1.2.2'; +/* [MS-CFB] 2.6.4 */ +function namecmp(l, r) { + var L = l.split("/"), R = r.split("/"); + for(var i = 0, c = 0, Z = Math.min(L.length, R.length); i < Z; ++i) { + if((c = L[i].length - R[i].length)) return c; + if(L[i] != R[i]) return L[i] < R[i] ? -1 : 1; + } + return L.length - R.length; +} +function dirname(p) { + if(p.charAt(p.length - 1) == "/") return (p.slice(0,-1).indexOf("/") === -1) ? p : dirname(p.slice(0, -1)); + var c = p.lastIndexOf("/"); + return (c === -1) ? p : p.slice(0, c+1); +} + +function filename(p) { + if(p.charAt(p.length - 1) == "/") return filename(p.slice(0, -1)); + var c = p.lastIndexOf("/"); + return (c === -1) ? p : p.slice(c+1); +} +/* -------------------------------------------------------------------------- */ +/* DOS Date format: + high|YYYYYYYm.mmmddddd.HHHHHMMM.MMMSSSSS|low + add 1980 to stored year + stored second should be doubled +*/ + +/* write JS date to buf as a DOS date */ +function write_dos_date(buf, date) { + if(typeof date === "string") date = new Date(date); + var hms = date.getHours(); + hms = hms << 6 | date.getMinutes(); + hms = hms << 5 | (date.getSeconds()>>>1); + buf.write_shift(2, hms); + var ymd = (date.getFullYear() - 1980); + ymd = ymd << 4 | (date.getMonth()+1); + ymd = ymd << 5 | date.getDate(); + buf.write_shift(2, ymd); +} + +/* read four bytes from buf and interpret as a DOS date */ +function parse_dos_date(buf) { + var hms = buf.read_shift(2) & 0xFFFF; + var ymd = buf.read_shift(2) & 0xFFFF; + var val = new Date(); + var d = ymd & 0x1F; ymd >>>= 5; + var m = ymd & 0x0F; ymd >>>= 4; + val.setMilliseconds(0); + val.setFullYear(ymd + 1980); + val.setMonth(m-1); + val.setDate(d); + var S = hms & 0x1F; hms >>>= 5; + var M = hms & 0x3F; hms >>>= 6; + val.setHours(hms); + val.setMinutes(M); + val.setSeconds(S<<1); + return val; +} +function parse_extra_field(blob) { + prep_blob(blob, 0); + var o = {}; + var flags = 0; + while(blob.l <= blob.length - 4) { + var type = blob.read_shift(2); + var sz = blob.read_shift(2), tgt = blob.l + sz; + var p = {}; + switch(type) { + /* UNIX-style Timestamps */ + case 0x5455: { + flags = blob.read_shift(1); + if(flags & 1) p.mtime = blob.read_shift(4); + /* for some reason, CD flag corresponds to LFH */ + if(sz > 5) { + if(flags & 2) p.atime = blob.read_shift(4); + if(flags & 4) p.ctime = blob.read_shift(4); + } + if(p.mtime) p.mt = new Date(p.mtime*1000); + } + break; + } + blob.l = tgt; + o[type] = p; + } + return o; +} +var fs; +function get_fs() { return fs || (fs = require('fs')); } +function parse(file, options) { +if(file[0] == 0x50 && file[1] == 0x4b) return parse_zip(file, options); +if((file[0] | 0x20) == 0x6d && (file[1]|0x20) == 0x69) return parse_mad(file, options); +if(file.length < 512) throw new Error("CFB file size " + file.length + " < 512"); +var mver = 3; +var ssz = 512; +var nmfs = 0; // number of mini FAT sectors +var difat_sec_cnt = 0; +var dir_start = 0; +var minifat_start = 0; +var difat_start = 0; + +var fat_addrs = []; // locations of FAT sectors + +/* [MS-CFB] 2.2 Compound File Header */ +var blob = file.slice(0,512); +prep_blob(blob, 0); + +/* major version */ +var mv = check_get_mver(blob); +mver = mv[0]; +switch(mver) { + case 3: ssz = 512; break; case 4: ssz = 4096; break; + case 0: if(mv[1] == 0) return parse_zip(file, options); + /* falls through */ + default: throw new Error("Major Version: Expected 3 or 4 saw " + mver); +} + +/* reprocess header */ +if(ssz !== 512) { blob = file.slice(0,ssz); prep_blob(blob, 28 /* blob.l */); } +/* Save header for final object */ +var header = file.slice(0,ssz); + +check_shifts(blob, mver); + +// Number of Directory Sectors +var dir_cnt = blob.read_shift(4, 'i'); +if(mver === 3 && dir_cnt !== 0) throw new Error('# Directory Sectors: Expected 0 saw ' + dir_cnt); + +// Number of FAT Sectors +blob.l += 4; + +// First Directory Sector Location +dir_start = blob.read_shift(4, 'i'); + +// Transaction Signature +blob.l += 4; + +// Mini Stream Cutoff Size +blob.chk('00100000', 'Mini Stream Cutoff Size: '); + +// First Mini FAT Sector Location +minifat_start = blob.read_shift(4, 'i'); + +// Number of Mini FAT Sectors +nmfs = blob.read_shift(4, 'i'); + +// First DIFAT sector location +difat_start = blob.read_shift(4, 'i'); + +// Number of DIFAT Sectors +difat_sec_cnt = blob.read_shift(4, 'i'); + +// Grab FAT Sector Locations +for(var q = -1, j = 0; j < 109; ++j) { /* 109 = (512 - blob.l)>>>2; */ + q = blob.read_shift(4, 'i'); + if(q<0) break; + fat_addrs[j] = q; +} + +/** Break the file up into sectors */ +var sectors = sectorify(file, ssz); + +sleuth_fat(difat_start, difat_sec_cnt, sectors, ssz, fat_addrs); + +/** Chains */ +var sector_list = make_sector_list(sectors, dir_start, fat_addrs, ssz); + +sector_list[dir_start].name = "!Directory"; +if(nmfs > 0 && minifat_start !== ENDOFCHAIN) sector_list[minifat_start].name = "!MiniFAT"; +sector_list[fat_addrs[0]].name = "!FAT"; +sector_list.fat_addrs = fat_addrs; +sector_list.ssz = ssz; + +/* [MS-CFB] 2.6.1 Compound File Directory Entry */ +var files = {}, Paths = [], FileIndex = [], FullPaths = []; +read_directory(dir_start, sector_list, sectors, Paths, nmfs, files, FileIndex, minifat_start); + +build_full_paths(FileIndex, FullPaths, Paths); +Paths.shift(); + +var o = { + FileIndex: FileIndex, + FullPaths: FullPaths +}; + +// $FlowIgnore +if(options && options.raw) o.raw = {header: header, sectors: sectors}; +return o; +} // parse + +/* [MS-CFB] 2.2 Compound File Header -- read up to major version */ +function check_get_mver(blob) { + if(blob[blob.l] == 0x50 && blob[blob.l + 1] == 0x4b) return [0, 0]; + // header signature 8 + blob.chk(HEADER_SIGNATURE, 'Header Signature: '); + + // clsid 16 + //blob.chk(HEADER_CLSID, 'CLSID: '); + blob.l += 16; + + // minor version 2 + var mver = blob.read_shift(2, 'u'); + + return [blob.read_shift(2,'u'), mver]; +} +function check_shifts(blob, mver) { + var shift = 0x09; + + // Byte Order + //blob.chk('feff', 'Byte Order: '); // note: some writers put 0xffff + blob.l += 2; + + // Sector Shift + switch((shift = blob.read_shift(2))) { + case 0x09: if(mver != 3) throw new Error('Sector Shift: Expected 9 saw ' + shift); break; + case 0x0c: if(mver != 4) throw new Error('Sector Shift: Expected 12 saw ' + shift); break; + default: throw new Error('Sector Shift: Expected 9 or 12 saw ' + shift); + } + + // Mini Sector Shift + blob.chk('0600', 'Mini Sector Shift: '); + + // Reserved + blob.chk('000000000000', 'Reserved: '); +} + +/** Break the file up into sectors */ +function sectorify(file, ssz) { + var nsectors = Math.ceil(file.length/ssz)-1; + var sectors = []; + for(var i=1; i < nsectors; ++i) sectors[i-1] = file.slice(i*ssz,(i+1)*ssz); + sectors[nsectors-1] = file.slice(nsectors*ssz); + return sectors; +} + +/* [MS-CFB] 2.6.4 Red-Black Tree */ +function build_full_paths(FI, FP, Paths) { + var i = 0, L = 0, R = 0, C = 0, j = 0, pl = Paths.length; + var dad = [], q = []; + + for(; i < pl; ++i) { dad[i]=q[i]=i; FP[i]=Paths[i]; } + + for(; j < q.length; ++j) { + i = q[j]; + L = FI[i].L; R = FI[i].R; C = FI[i].C; + if(dad[i] === i) { + if(L !== -1 /*NOSTREAM*/ && dad[L] !== L) dad[i] = dad[L]; + if(R !== -1 && dad[R] !== R) dad[i] = dad[R]; + } + if(C !== -1 /*NOSTREAM*/) dad[C] = i; + if(L !== -1 && i != dad[i]) { dad[L] = dad[i]; if(q.lastIndexOf(L) < j) q.push(L); } + if(R !== -1 && i != dad[i]) { dad[R] = dad[i]; if(q.lastIndexOf(R) < j) q.push(R); } + } + for(i=1; i < pl; ++i) if(dad[i] === i) { + if(R !== -1 /*NOSTREAM*/ && dad[R] !== R) dad[i] = dad[R]; + else if(L !== -1 && dad[L] !== L) dad[i] = dad[L]; + } + + for(i=1; i < pl; ++i) { + if(FI[i].type === 0 /* unknown */) continue; + j = i; + if(j != dad[j]) do { + j = dad[j]; + FP[i] = FP[j] + "/" + FP[i]; + } while (j !== 0 && -1 !== dad[j] && j != dad[j]); + dad[i] = -1; + } + + FP[0] += "/"; + for(i=1; i < pl; ++i) { + if(FI[i].type !== 2 /* stream */) FP[i] += "/"; + } +} + +function get_mfat_entry(entry, payload, mini) { + var start = entry.start, size = entry.size; + //return (payload.slice(start*MSSZ, start*MSSZ + size)); + var o = []; + var idx = start; + while(mini && size > 0 && idx >= 0) { + o.push(payload.slice(idx * MSSZ, idx * MSSZ + MSSZ)); + size -= MSSZ; + idx = __readInt32LE(mini, idx * 4); + } + if(o.length === 0) return (new_buf(0)); + return (bconcat(o).slice(0, entry.size)); +} + +/** Chase down the rest of the DIFAT chain to build a comprehensive list + DIFAT chains by storing the next sector number as the last 32 bits */ +function sleuth_fat(idx, cnt, sectors, ssz, fat_addrs) { + var q = ENDOFCHAIN; + if(idx === ENDOFCHAIN) { + if(cnt !== 0) throw new Error("DIFAT chain shorter than expected"); + } else if(idx !== -1 /*FREESECT*/) { + var sector = sectors[idx], m = (ssz>>>2)-1; + if(!sector) return; + for(var i = 0; i < m; ++i) { + if((q = __readInt32LE(sector,i*4)) === ENDOFCHAIN) break; + fat_addrs.push(q); + } + if(cnt >= 1) sleuth_fat(__readInt32LE(sector,ssz-4),cnt - 1, sectors, ssz, fat_addrs); + } +} + +/** Follow the linked list of sectors for a given starting point */ +function get_sector_list(sectors, start, fat_addrs, ssz, chkd) { + var buf = [], buf_chain = []; + if(!chkd) chkd = []; + var modulus = ssz - 1, j = 0, jj = 0; + for(j=start; j>=0;) { + chkd[j] = true; + buf[buf.length] = j; + buf_chain.push(sectors[j]); + var addr = fat_addrs[Math.floor(j*4/ssz)]; + jj = ((j*4) & modulus); + if(ssz < 4 + jj) throw new Error("FAT boundary crossed: " + j + " 4 "+ssz); + if(!sectors[addr]) break; + j = __readInt32LE(sectors[addr], jj); + } + return {nodes: buf, data:__toBuffer([buf_chain])}; +} + +/** Chase down the sector linked lists */ +function make_sector_list(sectors, dir_start, fat_addrs, ssz) { + var sl = sectors.length, sector_list = ([]); + var chkd = [], buf = [], buf_chain = []; + var modulus = ssz - 1, i=0, j=0, k=0, jj=0; + for(i=0; i < sl; ++i) { + buf = ([]); + k = (i + dir_start); if(k >= sl) k-=sl; + if(chkd[k]) continue; + buf_chain = []; + var seen = []; + for(j=k; j>=0;) { + seen[j] = true; + chkd[j] = true; + buf[buf.length] = j; + buf_chain.push(sectors[j]); + var addr = fat_addrs[Math.floor(j*4/ssz)]; + jj = ((j*4) & modulus); + if(ssz < 4 + jj) throw new Error("FAT boundary crossed: " + j + " 4 "+ssz); + if(!sectors[addr]) break; + j = __readInt32LE(sectors[addr], jj); + if(seen[j]) break; + } + sector_list[k] = ({nodes: buf, data:__toBuffer([buf_chain])}); + } + return sector_list; +} + +/* [MS-CFB] 2.6.1 Compound File Directory Entry */ +function read_directory(dir_start, sector_list, sectors, Paths, nmfs, files, FileIndex, mini) { + var minifat_store = 0, pl = (Paths.length?2:0); + var sector = sector_list[dir_start].data; + var i = 0, namelen = 0, name; + for(; i < sector.length; i+= 128) { + var blob = sector.slice(i, i+128); + prep_blob(blob, 64); + namelen = blob.read_shift(2); + name = __utf16le(blob,0,namelen-pl); + Paths.push(name); + var o = ({ + name: name, + type: blob.read_shift(1), + color: blob.read_shift(1), + L: blob.read_shift(4, 'i'), + R: blob.read_shift(4, 'i'), + C: blob.read_shift(4, 'i'), + clsid: blob.read_shift(16), + state: blob.read_shift(4, 'i'), + start: 0, + size: 0 + }); + var ctime = blob.read_shift(2) + blob.read_shift(2) + blob.read_shift(2) + blob.read_shift(2); + if(ctime !== 0) o.ct = read_date(blob, blob.l-8); + var mtime = blob.read_shift(2) + blob.read_shift(2) + blob.read_shift(2) + blob.read_shift(2); + if(mtime !== 0) o.mt = read_date(blob, blob.l-8); + o.start = blob.read_shift(4, 'i'); + o.size = blob.read_shift(4, 'i'); + if(o.size < 0 && o.start < 0) { o.size = o.type = 0; o.start = ENDOFCHAIN; o.name = ""; } + if(o.type === 5) { /* root */ + minifat_store = o.start; + if(nmfs > 0 && minifat_store !== ENDOFCHAIN) sector_list[minifat_store].name = "!StreamData"; + /*minifat_size = o.size;*/ + } else if(o.size >= 4096 /* MSCSZ */) { + o.storage = 'fat'; + if(sector_list[o.start] === undefined) sector_list[o.start] = get_sector_list(sectors, o.start, sector_list.fat_addrs, sector_list.ssz); + sector_list[o.start].name = o.name; + o.content = (sector_list[o.start].data.slice(0,o.size)); + } else { + o.storage = 'minifat'; + if(o.size < 0) o.size = 0; + else if(minifat_store !== ENDOFCHAIN && o.start !== ENDOFCHAIN && sector_list[minifat_store]) { + o.content = get_mfat_entry(o, sector_list[minifat_store].data, (sector_list[mini]||{}).data); + } + } + if(o.content) prep_blob(o.content, 0); + files[name] = o; + FileIndex.push(o); + } +} + +function read_date(blob, offset) { + return new Date(( ( (__readUInt32LE(blob,offset+4)/1e7)*Math.pow(2,32)+__readUInt32LE(blob,offset)/1e7 ) - 11644473600)*1000); +} + +function read_file(filename, options) { + get_fs(); + return parse(fs.readFileSync(filename), options); +} + +function read(blob, options) { + var type = options && options.type; + if(!type) { + if(has_buf && Buffer.isBuffer(blob)) type = "buffer"; + } + switch(type || "base64") { + case "file": return read_file(blob, options); + case "base64": return parse(s2a(Base64_decode(blob)), options); + case "binary": return parse(s2a(blob), options); + } + return parse(blob, options); +} + +function init_cfb(cfb, opts) { + var o = opts || {}, root = o.root || "Root Entry"; + if(!cfb.FullPaths) cfb.FullPaths = []; + if(!cfb.FileIndex) cfb.FileIndex = []; + if(cfb.FullPaths.length !== cfb.FileIndex.length) throw new Error("inconsistent CFB structure"); + if(cfb.FullPaths.length === 0) { + cfb.FullPaths[0] = root + "/"; + cfb.FileIndex[0] = ({ name: root, type: 5 }); + } + if(o.CLSID) cfb.FileIndex[0].clsid = o.CLSID; + seed_cfb(cfb); +} +function seed_cfb(cfb) { + var nm = "\u0001Sh33tJ5"; + if(CFB.find(cfb, "/" + nm)) return; + var p = new_buf(4); p[0] = 55; p[1] = p[3] = 50; p[2] = 54; + cfb.FileIndex.push(({ name: nm, type: 2, content:p, size:4, L:69, R:69, C:69 })); + cfb.FullPaths.push(cfb.FullPaths[0] + nm); + rebuild_cfb(cfb); +} +function rebuild_cfb(cfb, f) { + init_cfb(cfb); + var gc = false, s = false; + for(var i = cfb.FullPaths.length - 1; i >= 0; --i) { + var _file = cfb.FileIndex[i]; + switch(_file.type) { + case 0: + if(s) gc = true; + else { cfb.FileIndex.pop(); cfb.FullPaths.pop(); } + break; + case 1: case 2: case 5: + s = true; + if(isNaN(_file.R * _file.L * _file.C)) gc = true; + if(_file.R > -1 && _file.L > -1 && _file.R == _file.L) gc = true; + break; + default: gc = true; break; + } + } + if(!gc && !f) return; + + var now = new Date(1987, 1, 19), j = 0; + // Track which names exist + var fullPaths = Object.create ? Object.create(null) : {}; + var data = []; + for(i = 0; i < cfb.FullPaths.length; ++i) { + fullPaths[cfb.FullPaths[i]] = true; + if(cfb.FileIndex[i].type === 0) continue; + data.push([cfb.FullPaths[i], cfb.FileIndex[i]]); + } + for(i = 0; i < data.length; ++i) { + var dad = dirname(data[i][0]); + s = fullPaths[dad]; + while(!s) { + while(dirname(dad) && !fullPaths[dirname(dad)]) dad = dirname(dad); + + data.push([dad, ({ + name: filename(dad).replace("/",""), + type: 1, + clsid: HEADER_CLSID, + ct: now, mt: now, + content: null + })]); + + // Add name to set + fullPaths[dad] = true; + + dad = dirname(data[i][0]); + s = fullPaths[dad]; + } + } + + data.sort(function(x,y) { return namecmp(x[0], y[0]); }); + cfb.FullPaths = []; cfb.FileIndex = []; + for(i = 0; i < data.length; ++i) { cfb.FullPaths[i] = data[i][0]; cfb.FileIndex[i] = data[i][1]; } + for(i = 0; i < data.length; ++i) { + var elt = cfb.FileIndex[i]; + var nm = cfb.FullPaths[i]; + + elt.name = filename(nm).replace("/",""); + elt.L = elt.R = elt.C = -(elt.color = 1); + elt.size = elt.content ? elt.content.length : 0; + elt.start = 0; + elt.clsid = (elt.clsid || HEADER_CLSID); + if(i === 0) { + elt.C = data.length > 1 ? 1 : -1; + elt.size = 0; + elt.type = 5; + } else if(nm.slice(-1) == "/") { + for(j=i+1;j < data.length; ++j) if(dirname(cfb.FullPaths[j])==nm) break; + elt.C = j >= data.length ? -1 : j; + for(j=i+1;j < data.length; ++j) if(dirname(cfb.FullPaths[j])==dirname(nm)) break; + elt.R = j >= data.length ? -1 : j; + elt.type = 1; + } else { + if(dirname(cfb.FullPaths[i+1]||"") == dirname(nm)) elt.R = i + 1; + elt.type = 2; + } + } + +} + +function _write(cfb, options) { + var _opts = options || {}; + /* MAD is order-sensitive, skip rebuild and sort */ + if(_opts.fileType == 'mad') return write_mad(cfb, _opts); + rebuild_cfb(cfb); + switch(_opts.fileType) { + case 'zip': return write_zip(cfb, _opts); + //case 'mad': return write_mad(cfb, _opts); + } + var L = (function(cfb){ + var mini_size = 0, fat_size = 0; + for(var i = 0; i < cfb.FileIndex.length; ++i) { + var file = cfb.FileIndex[i]; + if(!file.content) continue; + var flen = file.content.length; + if(flen > 0){ + if(flen < 0x1000) mini_size += (flen + 0x3F) >> 6; + else fat_size += (flen + 0x01FF) >> 9; + } + } + var dir_cnt = (cfb.FullPaths.length +3) >> 2; + var mini_cnt = (mini_size + 7) >> 3; + var mfat_cnt = (mini_size + 0x7F) >> 7; + var fat_base = mini_cnt + fat_size + dir_cnt + mfat_cnt; + var fat_cnt = (fat_base + 0x7F) >> 7; + var difat_cnt = fat_cnt <= 109 ? 0 : Math.ceil((fat_cnt-109)/0x7F); + while(((fat_base + fat_cnt + difat_cnt + 0x7F) >> 7) > fat_cnt) difat_cnt = ++fat_cnt <= 109 ? 0 : Math.ceil((fat_cnt-109)/0x7F); + var L = [1, difat_cnt, fat_cnt, mfat_cnt, dir_cnt, fat_size, mini_size, 0]; + cfb.FileIndex[0].size = mini_size << 6; + L[7] = (cfb.FileIndex[0].start=L[0]+L[1]+L[2]+L[3]+L[4]+L[5])+((L[6]+7) >> 3); + return L; + })(cfb); + var o = new_buf(L[7] << 9); + var i = 0, T = 0; + { + for(i = 0; i < 8; ++i) o.write_shift(1, HEADER_SIG[i]); + for(i = 0; i < 8; ++i) o.write_shift(2, 0); + o.write_shift(2, 0x003E); + o.write_shift(2, 0x0003); + o.write_shift(2, 0xFFFE); + o.write_shift(2, 0x0009); + o.write_shift(2, 0x0006); + for(i = 0; i < 3; ++i) o.write_shift(2, 0); + o.write_shift(4, 0); + o.write_shift(4, L[2]); + o.write_shift(4, L[0] + L[1] + L[2] + L[3] - 1); + o.write_shift(4, 0); + o.write_shift(4, 1<<12); + o.write_shift(4, L[3] ? L[0] + L[1] + L[2] - 1: ENDOFCHAIN); + o.write_shift(4, L[3]); + o.write_shift(-4, L[1] ? L[0] - 1: ENDOFCHAIN); + o.write_shift(4, L[1]); + for(i = 0; i < 109; ++i) o.write_shift(-4, i < L[2] ? L[1] + i : -1); + } + if(L[1]) { + for(T = 0; T < L[1]; ++T) { + for(; i < 236 + T * 127; ++i) o.write_shift(-4, i < L[2] ? L[1] + i : -1); + o.write_shift(-4, T === L[1] - 1 ? ENDOFCHAIN : T + 1); + } + } + var chainit = function(w) { + for(T += w; i> 9); + } + chainit((L[6] + 7) >> 3); + while(o.l & 0x1FF) o.write_shift(-4, consts.ENDOFCHAIN); + T = i = 0; + for(j = 0; j < cfb.FileIndex.length; ++j) { + file = cfb.FileIndex[j]; + if(!file.content) continue; +flen = file.content.length; + if(!flen || flen >= 0x1000) continue; + file.start = T; + chainit((flen + 0x3F) >> 6); + } + while(o.l & 0x1FF) o.write_shift(-4, consts.ENDOFCHAIN); + for(i = 0; i < L[4]<<2; ++i) { + var nm = cfb.FullPaths[i]; + if(!nm || nm.length === 0) { + for(j = 0; j < 17; ++j) o.write_shift(4, 0); + for(j = 0; j < 3; ++j) o.write_shift(4, -1); + for(j = 0; j < 12; ++j) o.write_shift(4, 0); + continue; + } + file = cfb.FileIndex[i]; + if(i === 0) file.start = file.size ? file.start - 1 : ENDOFCHAIN; + var _nm = (i === 0 && _opts.root) || file.name; + if(_nm.length > 32) { + console.error("Name " + _nm + " will be truncated to " + _nm.slice(0,32)); + _nm = _nm.slice(0, 32); + } + flen = 2*(_nm.length+1); + o.write_shift(64, _nm, "utf16le"); + o.write_shift(2, flen); + o.write_shift(1, file.type); + o.write_shift(1, file.color); + o.write_shift(-4, file.L); + o.write_shift(-4, file.R); + o.write_shift(-4, file.C); + if(!file.clsid) for(j = 0; j < 4; ++j) o.write_shift(4, 0); + else o.write_shift(16, file.clsid, "hex"); + o.write_shift(4, file.state || 0); + o.write_shift(4, 0); o.write_shift(4, 0); + o.write_shift(4, 0); o.write_shift(4, 0); + o.write_shift(4, file.start); + o.write_shift(4, file.size); o.write_shift(4, 0); + } + for(i = 1; i < cfb.FileIndex.length; ++i) { + file = cfb.FileIndex[i]; +if(file.size >= 0x1000) { + o.l = (file.start+1) << 9; + if (has_buf && Buffer.isBuffer(file.content)) { + file.content.copy(o, o.l, 0, file.size); + // o is a 0-filled Buffer so just set next offset + o.l += (file.size + 511) & -512; + } else { + for(j = 0; j < file.size; ++j) o.write_shift(1, file.content[j]); + for(; j & 0x1FF; ++j) o.write_shift(1, 0); + } + } + } + for(i = 1; i < cfb.FileIndex.length; ++i) { + file = cfb.FileIndex[i]; +if(file.size > 0 && file.size < 0x1000) { + if (has_buf && Buffer.isBuffer(file.content)) { + file.content.copy(o, o.l, 0, file.size); + // o is a 0-filled Buffer so just set next offset + o.l += (file.size + 63) & -64; + } else { + for(j = 0; j < file.size; ++j) o.write_shift(1, file.content[j]); + for(; j & 0x3F; ++j) o.write_shift(1, 0); + } + } + } + if (has_buf) { + o.l = o.length; + } else { + // When using Buffer, already 0-filled + while(o.l < o.length) o.write_shift(1, 0); + } + return o; +} +/* [MS-CFB] 2.6.4 (Unicode 3.0.1 case conversion) */ +function find(cfb, path) { + var UCFullPaths = cfb.FullPaths.map(function(x) { return x.toUpperCase(); }); + var UCPaths = UCFullPaths.map(function(x) { var y = x.split("/"); return y[y.length - (x.slice(-1) == "/" ? 2 : 1)]; }); + var k = false; + if(path.charCodeAt(0) === 47 /* "/" */) { k = true; path = UCFullPaths[0].slice(0, -1) + path; } + else k = path.indexOf("/") !== -1; + var UCPath = path.toUpperCase(); + var w = k === true ? UCFullPaths.indexOf(UCPath) : UCPaths.indexOf(UCPath); + if(w !== -1) return cfb.FileIndex[w]; + + var m = !UCPath.match(chr1); + UCPath = UCPath.replace(chr0,''); + if(m) UCPath = UCPath.replace(chr1,'!'); + for(w = 0; w < UCFullPaths.length; ++w) { + if((m ? UCFullPaths[w].replace(chr1,'!') : UCFullPaths[w]).replace(chr0,'') == UCPath) return cfb.FileIndex[w]; + if((m ? UCPaths[w].replace(chr1,'!') : UCPaths[w]).replace(chr0,'') == UCPath) return cfb.FileIndex[w]; + } + return null; +} +/** CFB Constants */ +var MSSZ = 64; /* Mini Sector Size = 1<<6 */ +//var MSCSZ = 4096; /* Mini Stream Cutoff Size */ +/* 2.1 Compound File Sector Numbers and Types */ +var ENDOFCHAIN = -2; +/* 2.2 Compound File Header */ +var HEADER_SIGNATURE = 'd0cf11e0a1b11ae1'; +var HEADER_SIG = [0xD0, 0xCF, 0x11, 0xE0, 0xA1, 0xB1, 0x1A, 0xE1]; +var HEADER_CLSID = '00000000000000000000000000000000'; +var consts = { + /* 2.1 Compund File Sector Numbers and Types */ + MAXREGSECT: -6, + DIFSECT: -4, + FATSECT: -3, + ENDOFCHAIN: ENDOFCHAIN, + FREESECT: -1, + /* 2.2 Compound File Header */ + HEADER_SIGNATURE: HEADER_SIGNATURE, + HEADER_MINOR_VERSION: '3e00', + MAXREGSID: -6, + NOSTREAM: -1, + HEADER_CLSID: HEADER_CLSID, + /* 2.6.1 Compound File Directory Entry */ + EntryTypes: ['unknown','storage','stream','lockbytes','property','root'] +}; + +function write_file(cfb, filename, options) { + get_fs(); + var o = _write(cfb, options); +fs.writeFileSync(filename, o); +} + +function a2s(o) { + var out = new Array(o.length); + for(var i = 0; i < o.length; ++i) out[i] = String.fromCharCode(o[i]); + return out.join(""); +} + +function write(cfb, options) { + var o = _write(cfb, options); + switch(options && options.type || "buffer") { + case "file": get_fs(); fs.writeFileSync(options.filename, (o)); return o; + case "binary": return typeof o == "string" ? o : a2s(o); + case "base64": return Base64_encode(typeof o == "string" ? o : a2s(o)); + case "buffer": if(has_buf) return Buffer.isBuffer(o) ? o : Buffer_from(o); + /* falls through */ + case "array": return typeof o == "string" ? s2a(o) : o; + } + return o; +} +/* node < 8.1 zlib does not expose bytesRead, so default to pure JS */ +var _zlib; +function use_zlib(zlib) { try { + var InflateRaw = zlib.InflateRaw; + var InflRaw = new InflateRaw(); + InflRaw._processChunk(new Uint8Array([3, 0]), InflRaw._finishFlushFlag); + if(InflRaw.bytesRead) _zlib = zlib; + else throw new Error("zlib does not expose bytesRead"); +} catch(e) {console.error("cannot use native zlib: " + (e.message || e)); } } + +function _inflateRawSync(payload, usz) { + if(!_zlib) return _inflate(payload, usz); + var InflateRaw = _zlib.InflateRaw; + var InflRaw = new InflateRaw(); + var out = InflRaw._processChunk(payload.slice(payload.l), InflRaw._finishFlushFlag); + payload.l += InflRaw.bytesRead; + return out; +} + +function _deflateRawSync(payload) { + return _zlib ? _zlib.deflateRawSync(payload) : _deflate(payload); +} +var CLEN_ORDER = [ 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 ]; + +/* LEN_ID = [ 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285 ]; */ +var LEN_LN = [ 3, 4, 5, 6, 7, 8, 9, 10, 11, 13 , 15, 17, 19, 23, 27, 31, 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258 ]; + +/* DST_ID = [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29 ]; */ +var DST_LN = [ 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, 8193, 12289, 16385, 24577 ]; + +function bit_swap_8(n) { var t = (((((n<<1)|(n<<11)) & 0x22110) | (((n<<5)|(n<<15)) & 0x88440))); return ((t>>16) | (t>>8) |t)&0xFF; } + +var use_typed_arrays = typeof Uint8Array !== 'undefined'; + +var bitswap8 = use_typed_arrays ? new Uint8Array(1<<8) : []; +for(var q = 0; q < (1<<8); ++q) bitswap8[q] = bit_swap_8(q); + +function bit_swap_n(n, b) { + var rev = bitswap8[n & 0xFF]; + if(b <= 8) return rev >>> (8-b); + rev = (rev << 8) | bitswap8[(n>>8)&0xFF]; + if(b <= 16) return rev >>> (16-b); + rev = (rev << 8) | bitswap8[(n>>16)&0xFF]; + return rev >>> (24-b); +} + +/* helpers for unaligned bit reads */ +function read_bits_2(buf, bl) { var w = (bl&7), h = (bl>>>3); return ((buf[h]|(w <= 6 ? 0 : buf[h+1]<<8))>>>w)& 0x03; } +function read_bits_3(buf, bl) { var w = (bl&7), h = (bl>>>3); return ((buf[h]|(w <= 5 ? 0 : buf[h+1]<<8))>>>w)& 0x07; } +function read_bits_4(buf, bl) { var w = (bl&7), h = (bl>>>3); return ((buf[h]|(w <= 4 ? 0 : buf[h+1]<<8))>>>w)& 0x0F; } +function read_bits_5(buf, bl) { var w = (bl&7), h = (bl>>>3); return ((buf[h]|(w <= 3 ? 0 : buf[h+1]<<8))>>>w)& 0x1F; } +function read_bits_7(buf, bl) { var w = (bl&7), h = (bl>>>3); return ((buf[h]|(w <= 1 ? 0 : buf[h+1]<<8))>>>w)& 0x7F; } + +/* works up to n = 3 * 8 + 1 = 25 */ +function read_bits_n(buf, bl, n) { + var w = (bl&7), h = (bl>>>3), f = ((1<>> w; + if(n < 8 - w) return v & f; + v |= buf[h+1]<<(8-w); + if(n < 16 - w) return v & f; + v |= buf[h+2]<<(16-w); + if(n < 24 - w) return v & f; + v |= buf[h+3]<<(24-w); + return v & f; +} + +/* helpers for unaligned bit writes */ +function write_bits_3(buf, bl, v) { var w = bl & 7, h = bl >>> 3; + if(w <= 5) buf[h] |= (v & 7) << w; + else { + buf[h] |= (v << w) & 0xFF; + buf[h+1] = (v&7) >> (8-w); + } + return bl + 3; +} + +function write_bits_1(buf, bl, v) { + var w = bl & 7, h = bl >>> 3; + v = (v&1) << w; + buf[h] |= v; + return bl + 1; +} +function write_bits_8(buf, bl, v) { + var w = bl & 7, h = bl >>> 3; + v <<= w; + buf[h] |= v & 0xFF; v >>>= 8; + buf[h+1] = v; + return bl + 8; +} +function write_bits_16(buf, bl, v) { + var w = bl & 7, h = bl >>> 3; + v <<= w; + buf[h] |= v & 0xFF; v >>>= 8; + buf[h+1] = v & 0xFF; + buf[h+2] = v >>> 8; + return bl + 16; +} + +/* until ArrayBuffer#realloc is a thing, fake a realloc */ +function realloc(b, sz) { + var L = b.length, M = 2*L > sz ? 2*L : sz + 5, i = 0; + if(L >= sz) return b; + if(has_buf) { + var o = new_unsafe_buf(M); + // $FlowIgnore + if(b.copy) b.copy(o); + else for(; i < b.length; ++i) o[i] = b[i]; + return o; + } else if(use_typed_arrays) { + var a = new Uint8Array(M); + if(a.set) a.set(b); + else for(; i < L; ++i) a[i] = b[i]; + return a; + } + b.length = M; + return b; +} + +/* zero-filled arrays for older browsers */ +function zero_fill_array(n) { + var o = new Array(n); + for(var i = 0; i < n; ++i) o[i] = 0; + return o; +} + +/* build tree (used for literals and lengths) */ +function build_tree(clens, cmap, MAX) { + var maxlen = 1, w = 0, i = 0, j = 0, ccode = 0, L = clens.length; + + var bl_count = use_typed_arrays ? new Uint16Array(32) : zero_fill_array(32); + for(i = 0; i < 32; ++i) bl_count[i] = 0; + + for(i = L; i < MAX; ++i) clens[i] = 0; + L = clens.length; + + var ctree = use_typed_arrays ? new Uint16Array(L) : zero_fill_array(L); // [] + + /* build code tree */ + for(i = 0; i < L; ++i) { + bl_count[(w = clens[i])]++; + if(maxlen < w) maxlen = w; + ctree[i] = 0; + } + bl_count[0] = 0; + for(i = 1; i <= maxlen; ++i) bl_count[i+16] = (ccode = (ccode + bl_count[i-1])<<1); + for(i = 0; i < L; ++i) { + ccode = clens[i]; + if(ccode != 0) ctree[i] = bl_count[ccode+16]++; + } + + /* cmap[maxlen + 4 bits] = (off&15) + (lit<<4) reverse mapping */ + var cleni = 0; + for(i = 0; i < L; ++i) { + cleni = clens[i]; + if(cleni != 0) { + ccode = bit_swap_n(ctree[i], maxlen)>>(maxlen-cleni); + for(j = (1<<(maxlen + 4 - cleni)) - 1; j>=0; --j) + cmap[ccode|(j< 0) out[out.l++] = data[boff++]; + } + return out.l; + } + + /* Fixed Huffman */ + function write_huff_fixed(data, out) { + var bl = 0; + var boff = 0; + var addrs = use_typed_arrays ? new Uint16Array(0x8000) : []; + while(boff < data.length) { + var L = /* data.length - boff; */ Math.min(0xFFFF, data.length - boff); + + /* write a stored block for short data */ + if(L < 10) { + bl = write_bits_3(out, bl, +!!(boff + L == data.length)); // jshint ignore:line + if(bl & 7) bl += 8 - (bl & 7); + out.l = (bl / 8) | 0; + out.write_shift(2, L); + out.write_shift(2, (~L) & 0xFFFF); + while(L-- > 0) out[out.l++] = data[boff++]; + bl = out.l * 8; + continue; + } + + bl = write_bits_3(out, bl, +!!(boff + L == data.length) + 2); // jshint ignore:line + var hash = 0; + while(L-- > 0) { + var d = data[boff]; + hash = ((hash << 5) ^ d) & 0x7FFF; + + var match = -1, mlen = 0; + + if((match = addrs[hash])) { + match |= boff & ~0x7FFF; + if(match > boff) match -= 0x8000; + if(match < boff) while(data[match + mlen] == data[boff + mlen] && mlen < 250) ++mlen; + } + + if(mlen > 2) { + /* Copy Token */ + d = LEN_LN_RE[mlen]; + if(d <= 22) bl = write_bits_8(out, bl, bitswap8[d+1]>>1) - 1; + else { + write_bits_8(out, bl, 3); + bl += 5; + write_bits_8(out, bl, bitswap8[d-23]>>5); + bl += 3; + } + var len_eb = (d < 8) ? 0 : ((d - 4)>>2); + if(len_eb > 0) { + write_bits_16(out, bl, mlen - LEN_LN[d]); + bl += len_eb; + } + + d = DST_LN_RE[boff - match]; + bl = write_bits_8(out, bl, bitswap8[d]>>3); + bl -= 3; + + var dst_eb = d < 4 ? 0 : (d-2)>>1; + if(dst_eb > 0) { + write_bits_16(out, bl, boff - match - DST_LN[d]); + bl += dst_eb; + } + for(var q = 0; q < mlen; ++q) { + addrs[hash] = boff & 0x7FFF; + hash = ((hash << 5) ^ data[boff]) & 0x7FFF; + ++boff; + } + L-= mlen - 1; + } else { + /* Literal Token */ + if(d <= 143) d = d + 48; + else bl = write_bits_1(out, bl, 1); + bl = write_bits_8(out, bl, bitswap8[d]); + addrs[hash] = boff & 0x7FFF; + ++boff; + } + } + + bl = write_bits_8(out, bl, 0) - 1; + } + out.l = ((bl + 7)/8)|0; + return out.l; + } + return function _deflateRaw(data, out) { + if(data.length < 8) return write_stored(data, out); + return write_huff_fixed(data, out); + }; +})(); + +function _deflate(data) { + var buf = new_buf(50+Math.floor(data.length*1.1)); + var off = _deflateRaw(data, buf); + return buf.slice(0, off); +} +/* modified inflate function also moves original read head */ + +var dyn_lmap = use_typed_arrays ? new Uint16Array(32768) : zero_fill_array(32768); +var dyn_dmap = use_typed_arrays ? new Uint16Array(32768) : zero_fill_array(32768); +var dyn_cmap = use_typed_arrays ? new Uint16Array(128) : zero_fill_array(128); +var dyn_len_1 = 1, dyn_len_2 = 1; + +/* 5.5.3 Expanding Huffman Codes */ +function dyn(data, boff) { + /* nomenclature from RFC1951 refers to bit values; these are offset by the implicit constant */ + var _HLIT = read_bits_5(data, boff) + 257; boff += 5; + var _HDIST = read_bits_5(data, boff) + 1; boff += 5; + var _HCLEN = read_bits_4(data, boff) + 4; boff += 4; + var w = 0; + + /* grab and store code lengths */ + var clens = use_typed_arrays ? new Uint8Array(19) : zero_fill_array(19); + var ctree = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]; + var maxlen = 1; + var bl_count = use_typed_arrays ? new Uint8Array(8) : zero_fill_array(8); + var next_code = use_typed_arrays ? new Uint8Array(8) : zero_fill_array(8); + var L = clens.length; /* 19 */ + for(var i = 0; i < _HCLEN; ++i) { + clens[CLEN_ORDER[i]] = w = read_bits_3(data, boff); + if(maxlen < w) maxlen = w; + bl_count[w]++; + boff += 3; + } + + /* build code tree */ + var ccode = 0; + bl_count[0] = 0; + for(i = 1; i <= maxlen; ++i) next_code[i] = ccode = (ccode + bl_count[i-1])<<1; + for(i = 0; i < L; ++i) if((ccode = clens[i]) != 0) ctree[i] = next_code[ccode]++; + /* cmap[7 bits from stream] = (off&7) + (lit<<3) */ + var cleni = 0; + for(i = 0; i < L; ++i) { + cleni = clens[i]; + if(cleni != 0) { + ccode = bitswap8[ctree[i]]>>(8-cleni); + for(var j = (1<<(7-cleni))-1; j>=0; --j) dyn_cmap[ccode|(j<>>= 3)) { + case 16: + w = 3 + read_bits_2(data, boff); boff += 2; + ccode = hcodes[hcodes.length - 1]; + while(w-- > 0) hcodes.push(ccode); + break; + case 17: + w = 3 + read_bits_3(data, boff); boff += 3; + while(w-- > 0) hcodes.push(0); + break; + case 18: + w = 11 + read_bits_7(data, boff); boff += 7; + while(w -- > 0) hcodes.push(0); + break; + default: + hcodes.push(ccode); + if(maxlen < ccode) maxlen = ccode; + break; + } + } + + /* build literal / length trees */ + var h1 = hcodes.slice(0, _HLIT), h2 = hcodes.slice(_HLIT); + for(i = _HLIT; i < 286; ++i) h1[i] = 0; + for(i = _HDIST; i < 30; ++i) h2[i] = 0; + dyn_len_1 = build_tree(h1, dyn_lmap, 286); + dyn_len_2 = build_tree(h2, dyn_dmap, 30); + return boff; +} + +/* return [ data, bytesRead ] */ +function inflate(data, usz) { + /* shortcircuit for empty buffer [0x03, 0x00] */ + if(data[0] == 3 && !(data[1] & 0x3)) { return [new_raw_buf(usz), 2]; } + + /* bit offset */ + var boff = 0; + + /* header includes final bit and type bits */ + var header = 0; + + var outbuf = new_unsafe_buf(usz ? usz : (1<<18)); + var woff = 0; + var OL = outbuf.length>>>0; + var max_len_1 = 0, max_len_2 = 0; + + while((header&1) == 0) { + header = read_bits_3(data, boff); boff += 3; + if((header >>> 1) == 0) { + /* Stored block */ + if(boff & 7) boff += 8 - (boff&7); + /* 2 bytes sz, 2 bytes bit inverse */ + var sz = data[boff>>>3] | data[(boff>>>3)+1]<<8; + boff += 32; + /* push sz bytes */ + if(sz > 0) { + if(!usz && OL < woff + sz) { outbuf = realloc(outbuf, woff + sz); OL = outbuf.length; } + while(sz-- > 0) { outbuf[woff++] = data[boff>>>3]; boff += 8; } + } + continue; + } else if((header >> 1) == 1) { + /* Fixed Huffman */ + max_len_1 = 9; max_len_2 = 5; + } else { + /* Dynamic Huffman */ + boff = dyn(data, boff); + max_len_1 = dyn_len_1; max_len_2 = dyn_len_2; + } + for(;;) { // while(true) is apparently out of vogue in modern JS circles + if(!usz && (OL < woff + 32767)) { outbuf = realloc(outbuf, woff + 32767); OL = outbuf.length; } + /* ingest code and move read head */ + var bits = read_bits_n(data, boff, max_len_1); + var code = (header>>>1) == 1 ? fix_lmap[bits] : dyn_lmap[bits]; + boff += code & 15; code >>>= 4; + /* 0-255 are literals, 256 is end of block token, 257+ are copy tokens */ + if(((code>>>8)&0xFF) === 0) outbuf[woff++] = code; + else if(code == 256) break; + else { + code -= 257; + var len_eb = (code < 8) ? 0 : ((code-4)>>2); if(len_eb > 5) len_eb = 0; + var tgt = woff + LEN_LN[code]; + /* length extra bits */ + if(len_eb > 0) { + tgt += read_bits_n(data, boff, len_eb); + boff += len_eb; + } + + /* dist code */ + bits = read_bits_n(data, boff, max_len_2); + code = (header>>>1) == 1 ? fix_dmap[bits] : dyn_dmap[bits]; + boff += code & 15; code >>>= 4; + var dst_eb = (code < 4 ? 0 : (code-2)>>1); + var dst = DST_LN[code]; + /* dist extra bits */ + if(dst_eb > 0) { + dst += read_bits_n(data, boff, dst_eb); + boff += dst_eb; + } + + /* in the common case, manual byte copy is faster than TA set / Buffer copy */ + if(!usz && OL < tgt) { outbuf = realloc(outbuf, tgt + 100); OL = outbuf.length; } + while(woff < tgt) { outbuf[woff] = outbuf[woff - dst]; ++woff; } + } + } + } + if(usz) return [outbuf, (boff+7)>>>3]; + return [outbuf.slice(0, woff), (boff+7)>>>3]; +} + +function _inflate(payload, usz) { + var data = payload.slice(payload.l||0); + var out = inflate(data, usz); + payload.l += out[1]; + return out[0]; +} + +function warn_or_throw(wrn, msg) { + if(wrn) { if(typeof console !== 'undefined') console.error(msg); } + else throw new Error(msg); +} + +function parse_zip(file, options) { + var blob = file; + prep_blob(blob, 0); + + var FileIndex = [], FullPaths = []; + var o = { + FileIndex: FileIndex, + FullPaths: FullPaths + }; + init_cfb(o, { root: options.root }); + + /* find end of central directory, start just after signature */ + var i = blob.length - 4; + while((blob[i] != 0x50 || blob[i+1] != 0x4b || blob[i+2] != 0x05 || blob[i+3] != 0x06) && i >= 0) --i; + blob.l = i + 4; + + /* parse end of central directory */ + blob.l += 4; + var fcnt = blob.read_shift(2); + blob.l += 6; + var start_cd = blob.read_shift(4); + + /* parse central directory */ + blob.l = start_cd; + + for(i = 0; i < fcnt; ++i) { + /* trust local file header instead of CD entry */ + blob.l += 20; + var csz = blob.read_shift(4); + var usz = blob.read_shift(4); + var namelen = blob.read_shift(2); + var efsz = blob.read_shift(2); + var fcsz = blob.read_shift(2); + blob.l += 8; + var offset = blob.read_shift(4); + var EF = parse_extra_field(blob.slice(blob.l+namelen, blob.l+namelen+efsz)); + blob.l += namelen + efsz + fcsz; + + var L = blob.l; + blob.l = offset + 4; + parse_local_file(blob, csz, usz, o, EF); + blob.l = L; + } + + return o; +} + + +/* head starts just after local file header signature */ +function parse_local_file(blob, csz, usz, o, EF) { + /* [local file header] */ + blob.l += 2; + var flags = blob.read_shift(2); + var meth = blob.read_shift(2); + var date = parse_dos_date(blob); + + if(flags & 0x2041) throw new Error("Unsupported ZIP encryption"); + var crc32 = blob.read_shift(4); + var _csz = blob.read_shift(4); + var _usz = blob.read_shift(4); + + var namelen = blob.read_shift(2); + var efsz = blob.read_shift(2); + + // TODO: flags & (1<<11) // UTF8 + var name = ""; for(var i = 0; i < namelen; ++i) name += String.fromCharCode(blob[blob.l++]); + if(efsz) { + var ef = parse_extra_field(blob.slice(blob.l, blob.l + efsz)); + if((ef[0x5455]||{}).mt) date = ef[0x5455].mt; + if(((EF||{})[0x5455]||{}).mt) date = EF[0x5455].mt; + } + blob.l += efsz; + + /* [encryption header] */ + + /* [file data] */ + var data = blob.slice(blob.l, blob.l + _csz); + switch(meth) { + case 8: data = _inflateRawSync(blob, _usz); break; + case 0: break; // TODO: scan for magic number + default: throw new Error("Unsupported ZIP Compression method " + meth); + } + + /* [data descriptor] */ + var wrn = false; + if(flags & 8) { + crc32 = blob.read_shift(4); + if(crc32 == 0x08074b50) { crc32 = blob.read_shift(4); wrn = true; } + _csz = blob.read_shift(4); + _usz = blob.read_shift(4); + } + + if(_csz != csz) warn_or_throw(wrn, "Bad compressed size: " + csz + " != " + _csz); + if(_usz != usz) warn_or_throw(wrn, "Bad uncompressed size: " + usz + " != " + _usz); + var _crc32 = CRC32.buf(data, 0); + if((crc32>>0) != (_crc32>>0)) warn_or_throw(wrn, "Bad CRC32 checksum: " + crc32 + " != " + _crc32); + cfb_add(o, name, data, {unsafe: true, mt: date}); +} +function write_zip(cfb, options) { + var _opts = options || {}; + var out = [], cdirs = []; + var o = new_buf(1); + var method = (_opts.compression ? 8 : 0), flags = 0; + var desc = false; + if(desc) flags |= 8; + var i = 0, j = 0; + + var start_cd = 0, fcnt = 0; + var root = cfb.FullPaths[0], fp = root, fi = cfb.FileIndex[0]; + var crcs = []; + var sz_cd = 0; + + for(i = 1; i < cfb.FullPaths.length; ++i) { + fp = cfb.FullPaths[i].slice(root.length); fi = cfb.FileIndex[i]; + if(!fi.size || !fi.content || fp == "\u0001Sh33tJ5") continue; + var start = start_cd; + + /* TODO: CP437 filename */ + var namebuf = new_buf(fp.length); + for(j = 0; j < fp.length; ++j) namebuf.write_shift(1, fp.charCodeAt(j) & 0x7F); + namebuf = namebuf.slice(0, namebuf.l); + crcs[fcnt] = CRC32.buf(fi.content, 0); + + var outbuf = fi.content; + if(method == 8) outbuf = _deflateRawSync(outbuf); + + /* local file header */ + o = new_buf(30); + o.write_shift(4, 0x04034b50); + o.write_shift(2, 20); + o.write_shift(2, flags); + o.write_shift(2, method); + /* TODO: last mod file time/date */ + if(fi.mt) write_dos_date(o, fi.mt); + else o.write_shift(4, 0); + o.write_shift(-4, (flags & 8) ? 0 : crcs[fcnt]); + o.write_shift(4, (flags & 8) ? 0 : outbuf.length); + o.write_shift(4, (flags & 8) ? 0 : fi.content.length); + o.write_shift(2, namebuf.length); + o.write_shift(2, 0); + + start_cd += o.length; + out.push(o); + start_cd += namebuf.length; + out.push(namebuf); + + /* TODO: extra fields? */ + + /* TODO: encryption header ? */ + + start_cd += outbuf.length; + out.push(outbuf); + + /* data descriptor */ + if(flags & 8) { + o = new_buf(12); + o.write_shift(-4, crcs[fcnt]); + o.write_shift(4, outbuf.length); + o.write_shift(4, fi.content.length); + start_cd += o.l; + out.push(o); + } + + /* central directory */ + o = new_buf(46); + o.write_shift(4, 0x02014b50); + o.write_shift(2, 0); + o.write_shift(2, 20); + o.write_shift(2, flags); + o.write_shift(2, method); + o.write_shift(4, 0); /* TODO: last mod file time/date */ + o.write_shift(-4, crcs[fcnt]); + + o.write_shift(4, outbuf.length); + o.write_shift(4, fi.content.length); + o.write_shift(2, namebuf.length); + o.write_shift(2, 0); + o.write_shift(2, 0); + o.write_shift(2, 0); + o.write_shift(2, 0); + o.write_shift(4, 0); + o.write_shift(4, start); + + sz_cd += o.l; + cdirs.push(o); + sz_cd += namebuf.length; + cdirs.push(namebuf); + ++fcnt; + } + + /* end of central directory */ + o = new_buf(22); + o.write_shift(4, 0x06054b50); + o.write_shift(2, 0); + o.write_shift(2, 0); + o.write_shift(2, fcnt); + o.write_shift(2, fcnt); + o.write_shift(4, sz_cd); + o.write_shift(4, start_cd); + o.write_shift(2, 0); + + return bconcat(([bconcat((out)), bconcat(cdirs), o])); +} +var ContentTypeMap = ({ + "htm": "text/html", + "xml": "text/xml", + + "gif": "image/gif", + "jpg": "image/jpeg", + "png": "image/png", + + "mso": "application/x-mso", + "thmx": "application/vnd.ms-officetheme", + "sh33tj5": "application/octet-stream" +}); + +function get_content_type(fi, fp) { + if(fi.ctype) return fi.ctype; + + var ext = fi.name || "", m = ext.match(/\.([^\.]+)$/); + if(m && ContentTypeMap[m[1]]) return ContentTypeMap[m[1]]; + + if(fp) { + m = (ext = fp).match(/[\.\\]([^\.\\])+$/); + if(m && ContentTypeMap[m[1]]) return ContentTypeMap[m[1]]; + } + + return "application/octet-stream"; +} + +/* 76 character chunks TODO: intertwine encoding */ +function write_base64_76(bstr) { + var data = Base64_encode(bstr); + var o = []; + for(var i = 0; i < data.length; i+= 76) o.push(data.slice(i, i+76)); + return o.join("\r\n") + "\r\n"; +} + +/* +Rules for QP: + - escape =## applies for all non-display characters and literal "=" + - space or tab at end of line must be encoded + - \r\n newlines can be preserved, but bare \r and \n must be escaped + - lines must not exceed 76 characters, use soft breaks =\r\n + +TODO: Some files from word appear to write line extensions with bare equals: + +``` + 0) { + root = root.slice(0, root.length - 1); + root = root.slice(0, root.lastIndexOf("/") + 1); + if(row.slice(0,root.length) == root) break; + } + } + + var mboundary = (data[1] || "").match(/boundary="(.*?)"/); + if(!mboundary) throw new Error("MAD cannot find boundary"); + var boundary = "--" + (mboundary[1] || ""); + + var FileIndex = [], FullPaths = []; + var o = { + FileIndex: FileIndex, + FullPaths: FullPaths + }; + init_cfb(o); + var start_di, fcnt = 0; + for(di = 0; di < data.length; ++di) { + var line = data[di]; + if(line !== boundary && line !== boundary + "--") continue; + if(fcnt++) parse_mime(o, data.slice(start_di, di), root); + start_di = di; + } + return o; +} + +function write_mad(cfb, options) { + var opts = options || {}; + var boundary = opts.boundary || "SheetJS"; + boundary = '------=' + boundary; + + var out = [ + 'MIME-Version: 1.0', + 'Content-Type: multipart/related; boundary="' + boundary.slice(2) + '"', + '', + '', + '' + ]; + + var root = cfb.FullPaths[0], fp = root, fi = cfb.FileIndex[0]; + for(var i = 1; i < cfb.FullPaths.length; ++i) { + fp = cfb.FullPaths[i].slice(root.length); + fi = cfb.FileIndex[i]; + if(!fi.size || !fi.content || fp == "\u0001Sh33tJ5") continue; + + /* Normalize filename */ + fp = fp.replace(/[\x00-\x08\x0B\x0C\x0E-\x1F\x7E-\xFF]/g, function(c) { + return "_x" + c.charCodeAt(0).toString(16) + "_"; + }).replace(/[\u0080-\uFFFF]/g, function(u) { + return "_u" + u.charCodeAt(0).toString(16) + "_"; + }); + + /* Extract content as binary string */ + var ca = fi.content; + // $FlowIgnore + var cstr = has_buf && Buffer.isBuffer(ca) ? ca.toString("binary") : a2s(ca); + + /* 4/5 of first 1024 chars ascii -> quoted printable, else base64 */ + var dispcnt = 0, L = Math.min(1024, cstr.length), cc = 0; + for(var csl = 0; csl <= L; ++csl) if((cc=cstr.charCodeAt(csl)) >= 0x20 && cc < 0x80) ++dispcnt; + var qp = dispcnt >= L * 4 / 5; + + out.push(boundary); + out.push('Content-Location: ' + (opts.root || 'file:///C:/SheetJS/') + fp); + out.push('Content-Transfer-Encoding: ' + (qp ? 'quoted-printable' : 'base64')); + out.push('Content-Type: ' + get_content_type(fi, fp)); + out.push(''); + + out.push(qp ? write_quoted_printable(cstr) : write_base64_76(cstr)); + } + out.push(boundary + '--\r\n'); + return out.join("\r\n"); +} +function cfb_new(opts) { + var o = ({}); + init_cfb(o, opts); + return o; +} + +function cfb_add(cfb, name, content, opts) { + var unsafe = opts && opts.unsafe; + if(!unsafe) init_cfb(cfb); + var file = !unsafe && CFB.find(cfb, name); + if(!file) { + var fpath = cfb.FullPaths[0]; + if(name.slice(0, fpath.length) == fpath) fpath = name; + else { + if(fpath.slice(-1) != "/") fpath += "/"; + fpath = (fpath + name).replace("//","/"); + } + file = ({name: filename(name), type: 2}); + cfb.FileIndex.push(file); + cfb.FullPaths.push(fpath); + if(!unsafe) CFB.utils.cfb_gc(cfb); + } +file.content = (content); + file.size = content ? content.length : 0; + if(opts) { + if(opts.CLSID) file.clsid = opts.CLSID; + if(opts.mt) file.mt = opts.mt; + if(opts.ct) file.ct = opts.ct; + } + return file; +} + +function cfb_del(cfb, name) { + init_cfb(cfb); + var file = CFB.find(cfb, name); + if(file) for(var j = 0; j < cfb.FileIndex.length; ++j) if(cfb.FileIndex[j] == file) { + cfb.FileIndex.splice(j, 1); + cfb.FullPaths.splice(j, 1); + return true; + } + return false; +} + +function cfb_mov(cfb, old_name, new_name) { + init_cfb(cfb); + var file = CFB.find(cfb, old_name); + if(file) for(var j = 0; j < cfb.FileIndex.length; ++j) if(cfb.FileIndex[j] == file) { + cfb.FileIndex[j].name = filename(new_name); + cfb.FullPaths[j] = new_name; + return true; + } + return false; +} + +function cfb_gc(cfb) { rebuild_cfb(cfb, true); } + +exports.find = find; +exports.read = read; +exports.parse = parse; +exports.write = write; +exports.writeFile = write_file; +exports.utils = { + cfb_new: cfb_new, + cfb_add: cfb_add, + cfb_del: cfb_del, + cfb_mov: cfb_mov, + cfb_gc: cfb_gc, + ReadShift: ReadShift, + CheckField: CheckField, + prep_blob: prep_blob, + bconcat: bconcat, + use_zlib: use_zlib, + _deflateRaw: _deflate, + _inflateRaw: _inflate, + consts: consts +}; + +return exports; +})(); + +if(typeof require !== 'undefined' && typeof module !== 'undefined' && typeof DO_NOT_EXPORT_CFB === 'undefined') { module.exports = CFB; } diff --git a/node_modules/cfb/node_modules/.bin/crc32 b/node_modules/cfb/node_modules/.bin/crc32 new file mode 120000 index 000000000..aa1fc22cf --- /dev/null +++ b/node_modules/cfb/node_modules/.bin/crc32 @@ -0,0 +1 @@ +../../../crc-32/bin/crc32.njs \ No newline at end of file diff --git a/node_modules/cfb/package.json b/node_modules/cfb/package.json new file mode 100644 index 000000000..fe17ea9e5 --- /dev/null +++ b/node_modules/cfb/package.json @@ -0,0 +1,68 @@ +{ + "name": "cfb", + "version": "1.2.2", + "author": "sheetjs", + "description": "Compound File Binary File Format extractor", + "keywords": [ + "cfb", + "compression", + "office" + ], + "main": "./cfb", + "types": "types", + "browser": { + "node": false, + "process": false, + "fs": false + }, + "dependencies": { + "adler-32": "~1.3.0", + "crc-32": "~1.2.0" + }, + "devDependencies": { + "@sheetjs/uglify-js": "~2.7.3", + "@types/node": "^8.10.25", + "acorn": "7.4.1", + "alex": "8.1.1", + "blanket": "~1.2.3", + "dtslint": "~0.1.2", + "eslint": "7.23.0", + "eslint-plugin-html": "^6.1.2", + "eslint-plugin-json": "^2.1.2", + "jscs": "3.0.7", + "jshint": "2.13.4", + "mocha": "~2.5.3", + "typescript": "2.2.0" + }, + "repository": { + "type": "git", + "url": "git://github.com/SheetJS/js-cfb.git" + }, + "scripts": { + "pretest": "make init", + "test": "make test", + "dtslint": "dtslint types" + }, + "config": { + "blanket": { + "pattern": "cfb.js" + } + }, + "files": [ + "LICENSE", + "README.md", + "dist/", + "types/index.d.ts", + "types/tsconfig.json", + "cfb.js", + "xlscfb.flow.js" + ], + "homepage": "http://sheetjs.com/", + "bugs": { + "url": "https://github.com/SheetJS/js-cfb/issues" + }, + "license": "Apache-2.0", + "engines": { + "node": ">=0.8" + } +} diff --git a/node_modules/cfb/types/index.d.ts b/node_modules/cfb/types/index.d.ts new file mode 100644 index 000000000..973ab39f9 --- /dev/null +++ b/node_modules/cfb/types/index.d.ts @@ -0,0 +1,128 @@ +/* index.d.ts (C) 2013-present SheetJS */ +// TypeScript Version: 2.2 + +/** Version string */ +export const version: string; + +/** Parse a buffer or array */ +export function parse(f: CFB$Blob, options?: CFB$ParsingOptions): CFB$Container; + +/** Read a blob or file or binary string */ +export function read(f: CFB$Blob | string, options?: CFB$ParsingOptions): CFB$Container; + +/** Find a file entry given a path or file name */ +export function find(cfb: CFB$Container, path: string): CFB$Entry | null; + +/** Generate a container file */ +export function write(cfb: CFB$Container, options?: CFB$WritingOptions): any; + +/** Write a container file to the filesystem */ +export function writeFile(cfb: CFB$Container, filename: string, options?: CFB$WritingOptions): any; + +/** Utility functions */ +export const utils: CFB$Utils; + +export interface CFB$CommonOptions { + /** Data encoding */ + type?: 'base64' | 'binary' | 'buffer' | 'file' | 'array'; + + /** If true, throw errors when features are not understood */ + WTF?: boolean; +} + +/** Options for read and readFile */ +export interface CFB$ParsingOptions extends CFB$CommonOptions { + /** If true, include raw data in output */ + raw?: boolean; +} + +/** Options for write and writeFile */ +export interface CFB$WritingOptions extends CFB$CommonOptions { + /** Output file type */ + fileType?: 'cfb' | 'zip' | 'mad'; + + /** Override default root entry name (CFB only) */ + root?: string; + + /** Enable compression (ZIP only) */ + compression?: boolean; +} + +export type CFB$Blob = number[] | Uint8Array; + +export enum CFB$EntryType { unknown, storage, stream, lockbytes, property, root } +export enum CFB$StorageType { fat, minifat } + +/** CFB File Entry Object */ +export interface CFB$Entry { + /** Case-sensitive internal name */ + name: string; + + /** CFB type (salient types: stream, storage) -- see CFB$EntryType */ + type: number; + + /** Raw Content (Buffer when available, Array of bytes otherwise) */ + content: CFB$Blob; + + /** Creation Time */ + ct?: Date; + + /** Modification Time */ + mt?: Date; + + /** Red/Black Tree color: 0 = red, 1 = black */ + color: number; + + /** Class ID represented as hex string */ + clsid: string; + + /** User-Defined State Bits */ + state: number; + + /** Starting Sector */ + start: number; + + /** Data Size */ + size: number; + + /** Storage location -- see CFB$StorageType */ + storage?: string; + + /** Content Type (used for MAD) */ + ctype?: string; +} + +/* File object */ +export interface CFB$Container { + /* List of streams and storages */ + FullPaths: string[]; + + /* Array of entries in the same order as FullPaths */ + FileIndex: CFB$Entry[]; + + /* Raw Content, in chunks (Buffer when available, Array of bytes otherwise) */ + raw?: { + header: CFB$Blob, + sectors: CFB$Blob[]; + }; +} + +/** cfb_add options */ +export interface CFB$AddOpts { + /** Skip existence and safety checks (best for bulk write operations) */ + unsafe?: boolean; +} + +/** General utilities */ +export interface CFB$Utils { + cfb_new(opts?: any): CFB$Container; + cfb_add(cfb: CFB$Container, name: string, content: any, opts?: CFB$AddOpts): CFB$Entry; + cfb_del(cfb: CFB$Container, name: string): boolean; + cfb_mov(cfb: CFB$Container, old_name: string, new_name: string): boolean; + cfb_gc(cfb: CFB$Container): void; + ReadShift(size: number, t?: string): number|string; + WarnField(hexstr: string, fld?: string): void; + CheckField(hexstr: string, fld?: string): void; + prep_blob(blob: any, pos?: number): CFB$Blob; + bconcat(bufs: any[]): any; +} diff --git a/node_modules/cfb/types/tsconfig.json b/node_modules/cfb/types/tsconfig.json new file mode 100644 index 000000000..54324b07d --- /dev/null +++ b/node_modules/cfb/types/tsconfig.json @@ -0,0 +1,15 @@ +{ + "compilerOptions": { + "module": "commonjs", + "lib": [ "es5" ], + "noImplicitAny": true, + "noImplicitThis": true, + "strictNullChecks": false, + "baseUrl": ".", + "paths": { "cfb": ["."] }, + "types": [], + "noEmit": true, + "strictFunctionTypes": true, + "forceConsistentCasingInFileNames": true + } +} diff --git a/node_modules/cfb/xlscfb.flow.js b/node_modules/cfb/xlscfb.flow.js new file mode 100644 index 000000000..65c135d47 --- /dev/null +++ b/node_modules/cfb/xlscfb.flow.js @@ -0,0 +1,1856 @@ +/*:: +declare var ReadShift:any; +declare var CheckField:any; +declare var prep_blob:any; +declare var __readUInt32LE:any; +declare var __readInt32LE:any; +declare var __toBuffer:any; +declare var __utf16le:any; +declare var bconcat:any; +declare var s2a:any; +declare var chr0:any; +declare var chr1:any; +declare var has_buf:boolean; +declare var new_buf:any; +declare var new_raw_buf:any; +declare var new_unsafe_buf:any; +declare var Buffer_from:any; +*/ +/* cfb.js (C) 2013-present SheetJS -- http://sheetjs.com */ +/* vim: set ts=2: */ +/*jshint eqnull:true */ +/*exported CFB */ +/*global module, require:false, process:false, Buffer:false, Uint8Array:false, Uint16Array:false */ + +/*:: +type SectorEntry = { + name?:string; + nodes?:Array; + data:RawBytes; +}; +type SectorList = { + [k:string|number]:SectorEntry; + name:?string; + fat_addrs:Array; + ssz:number; +} +type CFBFiles = {[n:string]:CFBEntry}; +*/ +/*! crc32.js (C) 2014-present SheetJS -- http://sheetjs.com */ +/* vim: set ts=2: */ +/*exported CRC32 */ +var CRC32 = /*#__PURE__*/(function() { +var CRC32 = {}; +CRC32.version = '1.2.1'; +/*:: +type ABuf = Array | Buffer | Uint8Array; +type CRC32TableType = Array | Int32Array; +*/ +/*global Int32Array */ +function signed_crc_table()/*:CRC32TableType*/ { + var c = 0, table/*:Array*/ = new Array(256); + + for(var n =0; n != 256; ++n){ + c = n; + c = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1)); + c = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1)); + c = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1)); + c = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1)); + c = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1)); + c = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1)); + c = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1)); + c = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1)); + table[n] = c; + } + + return typeof Int32Array !== 'undefined' ? new Int32Array(table) : table; +} + +var T0 = signed_crc_table(); +function slice_by_16_tables(T) { + var c = 0, v = 0, n = 0, table/*:Array*/ = typeof Int32Array !== 'undefined' ? new Int32Array(4096) : new Array(4096) ; + + for(n = 0; n != 256; ++n) table[n] = T[n]; + for(n = 0; n != 256; ++n) { + v = T[n]; + for(c = 256 + n; c < 4096; c += 256) v = table[c] = (v >>> 8) ^ T[v & 0xFF]; + } + var out = []; + for(n = 1; n != 16; ++n) out[n - 1] = typeof Int32Array !== 'undefined' ? table.subarray(n * 256, n * 256 + 256) : table.slice(n * 256, n * 256 + 256); + return out; +} +var TT = slice_by_16_tables(T0); +var T1 = TT[0], T2 = TT[1], T3 = TT[2], T4 = TT[3], T5 = TT[4]; +var T6 = TT[5], T7 = TT[6], T8 = TT[7], T9 = TT[8], Ta = TT[9]; +var Tb = TT[10], Tc = TT[11], Td = TT[12], Te = TT[13], Tf = TT[14]; +function crc32_bstr(bstr/*:string*/, seed/*:?number*/)/*:number*/ { + var C = seed/*:: ? 0 : 0 */ ^ -1; + for(var i = 0, L = bstr.length; i < L;) C = (C>>>8) ^ T0[(C^bstr.charCodeAt(i++))&0xFF]; + return ~C; +} + +function crc32_buf(B/*:ABuf*/, seed/*:?number*/)/*:number*/ { + var C = seed/*:: ? 0 : 0 */ ^ -1, L = B.length - 15, i = 0; + for(; i < L;) C = + Tf[B[i++] ^ (C & 255)] ^ + Te[B[i++] ^ ((C >> 8) & 255)] ^ + Td[B[i++] ^ ((C >> 16) & 255)] ^ + Tc[B[i++] ^ (C >>> 24)] ^ + Tb[B[i++]] ^ Ta[B[i++]] ^ T9[B[i++]] ^ T8[B[i++]] ^ + T7[B[i++]] ^ T6[B[i++]] ^ T5[B[i++]] ^ T4[B[i++]] ^ + T3[B[i++]] ^ T2[B[i++]] ^ T1[B[i++]] ^ T0[B[i++]]; + L += 15; + while(i < L) C = (C>>>8) ^ T0[(C^B[i++])&0xFF]; + return ~C; +} + +function crc32_str(str/*:string*/, seed/*:?number*/)/*:number*/ { + var C = seed/*:: ? 0 : 0 */ ^ -1; + for(var i = 0, L = str.length, c = 0, d = 0; i < L;) { + c = str.charCodeAt(i++); + if(c < 0x80) { + C = (C>>>8) ^ T0[(C^c)&0xFF]; + } else if(c < 0x800) { + C = (C>>>8) ^ T0[(C ^ (192|((c>>6)&31)))&0xFF]; + C = (C>>>8) ^ T0[(C ^ (128|(c&63)))&0xFF]; + } else if(c >= 0xD800 && c < 0xE000) { + c = (c&1023)+64; d = str.charCodeAt(i++)&1023; + C = (C>>>8) ^ T0[(C ^ (240|((c>>8)&7)))&0xFF]; + C = (C>>>8) ^ T0[(C ^ (128|((c>>2)&63)))&0xFF]; + C = (C>>>8) ^ T0[(C ^ (128|((d>>6)&15)|((c&3)<<4)))&0xFF]; + C = (C>>>8) ^ T0[(C ^ (128|(d&63)))&0xFF]; + } else { + C = (C>>>8) ^ T0[(C ^ (224|((c>>12)&15)))&0xFF]; + C = (C>>>8) ^ T0[(C ^ (128|((c>>6)&63)))&0xFF]; + C = (C>>>8) ^ T0[(C ^ (128|(c&63)))&0xFF]; + } + } + return ~C; +} +CRC32.table = T0; +CRC32.bstr = crc32_bstr; +CRC32.buf = crc32_buf; +CRC32.str = crc32_str; +return CRC32; +})(); +/* [MS-CFB] v20171201 */ +var CFB = /*#__PURE__*/(function _CFB(){ +var exports/*:CFBModule*/ = /*::(*/{}/*:: :any)*/; +exports.version = '1.2.2'; +/* [MS-CFB] 2.6.4 */ +function namecmp(l/*:string*/, r/*:string*/)/*:number*/ { + var L = l.split("/"), R = r.split("/"); + for(var i = 0, c = 0, Z = Math.min(L.length, R.length); i < Z; ++i) { + if((c = L[i].length - R[i].length)) return c; + if(L[i] != R[i]) return L[i] < R[i] ? -1 : 1; + } + return L.length - R.length; +} +function dirname(p/*:string*/)/*:string*/ { + if(p.charAt(p.length - 1) == "/") return (p.slice(0,-1).indexOf("/") === -1) ? p : dirname(p.slice(0, -1)); + var c = p.lastIndexOf("/"); + return (c === -1) ? p : p.slice(0, c+1); +} + +function filename(p/*:string*/)/*:string*/ { + if(p.charAt(p.length - 1) == "/") return filename(p.slice(0, -1)); + var c = p.lastIndexOf("/"); + return (c === -1) ? p : p.slice(c+1); +} +/* -------------------------------------------------------------------------- */ +/* DOS Date format: + high|YYYYYYYm.mmmddddd.HHHHHMMM.MMMSSSSS|low + add 1980 to stored year + stored second should be doubled +*/ + +/* write JS date to buf as a DOS date */ +function write_dos_date(buf/*:CFBlob*/, date/*:Date|string*/) { + if(typeof date === "string") date = new Date(date); + var hms/*:number*/ = date.getHours(); + hms = hms << 6 | date.getMinutes(); + hms = hms << 5 | (date.getSeconds()>>>1); + buf.write_shift(2, hms); + var ymd/*:number*/ = (date.getFullYear() - 1980); + ymd = ymd << 4 | (date.getMonth()+1); + ymd = ymd << 5 | date.getDate(); + buf.write_shift(2, ymd); +} + +/* read four bytes from buf and interpret as a DOS date */ +function parse_dos_date(buf/*:CFBlob*/)/*:Date*/ { + var hms = buf.read_shift(2) & 0xFFFF; + var ymd = buf.read_shift(2) & 0xFFFF; + var val = new Date(); + var d = ymd & 0x1F; ymd >>>= 5; + var m = ymd & 0x0F; ymd >>>= 4; + val.setMilliseconds(0); + val.setFullYear(ymd + 1980); + val.setMonth(m-1); + val.setDate(d); + var S = hms & 0x1F; hms >>>= 5; + var M = hms & 0x3F; hms >>>= 6; + val.setHours(hms); + val.setMinutes(M); + val.setSeconds(S<<1); + return val; +} +function parse_extra_field(blob/*:CFBlob*/)/*:any*/ { + prep_blob(blob, 0); + var o = /*::(*/{}/*:: :any)*/; + var flags = 0; + while(blob.l <= blob.length - 4) { + var type = blob.read_shift(2); + var sz = blob.read_shift(2), tgt = blob.l + sz; + var p = {}; + switch(type) { + /* UNIX-style Timestamps */ + case 0x5455: { + flags = blob.read_shift(1); + if(flags & 1) p.mtime = blob.read_shift(4); + /* for some reason, CD flag corresponds to LFH */ + if(sz > 5) { + if(flags & 2) p.atime = blob.read_shift(4); + if(flags & 4) p.ctime = blob.read_shift(4); + } + if(p.mtime) p.mt = new Date(p.mtime*1000); + } + break; + } + blob.l = tgt; + o[type] = p; + } + return o; +} +var fs/*:: = require('fs'); */; +function get_fs() { return fs || (fs = require('fs')); } +function parse(file/*:RawBytes*/, options/*:CFBReadOpts*/)/*:CFBContainer*/ { +if(file[0] == 0x50 && file[1] == 0x4b) return parse_zip(file, options); +if((file[0] | 0x20) == 0x6d && (file[1]|0x20) == 0x69) return parse_mad(file, options); +if(file.length < 512) throw new Error("CFB file size " + file.length + " < 512"); +var mver = 3; +var ssz = 512; +var nmfs = 0; // number of mini FAT sectors +var difat_sec_cnt = 0; +var dir_start = 0; +var minifat_start = 0; +var difat_start = 0; + +var fat_addrs/*:Array*/ = []; // locations of FAT sectors + +/* [MS-CFB] 2.2 Compound File Header */ +var blob/*:CFBlob*/ = /*::(*/file.slice(0,512)/*:: :any)*/; +prep_blob(blob, 0); + +/* major version */ +var mv = check_get_mver(blob); +mver = mv[0]; +switch(mver) { + case 3: ssz = 512; break; case 4: ssz = 4096; break; + case 0: if(mv[1] == 0) return parse_zip(file, options); + /* falls through */ + default: throw new Error("Major Version: Expected 3 or 4 saw " + mver); +} + +/* reprocess header */ +if(ssz !== 512) { blob = /*::(*/file.slice(0,ssz)/*:: :any)*/; prep_blob(blob, 28 /* blob.l */); } +/* Save header for final object */ +var header/*:RawBytes*/ = file.slice(0,ssz); + +check_shifts(blob, mver); + +// Number of Directory Sectors +var dir_cnt/*:number*/ = blob.read_shift(4, 'i'); +if(mver === 3 && dir_cnt !== 0) throw new Error('# Directory Sectors: Expected 0 saw ' + dir_cnt); + +// Number of FAT Sectors +blob.l += 4; + +// First Directory Sector Location +dir_start = blob.read_shift(4, 'i'); + +// Transaction Signature +blob.l += 4; + +// Mini Stream Cutoff Size +blob.chk('00100000', 'Mini Stream Cutoff Size: '); + +// First Mini FAT Sector Location +minifat_start = blob.read_shift(4, 'i'); + +// Number of Mini FAT Sectors +nmfs = blob.read_shift(4, 'i'); + +// First DIFAT sector location +difat_start = blob.read_shift(4, 'i'); + +// Number of DIFAT Sectors +difat_sec_cnt = blob.read_shift(4, 'i'); + +// Grab FAT Sector Locations +for(var q = -1, j = 0; j < 109; ++j) { /* 109 = (512 - blob.l)>>>2; */ + q = blob.read_shift(4, 'i'); + if(q<0) break; + fat_addrs[j] = q; +} + +/** Break the file up into sectors */ +var sectors/*:Array*/ = sectorify(file, ssz); + +sleuth_fat(difat_start, difat_sec_cnt, sectors, ssz, fat_addrs); + +/** Chains */ +var sector_list/*:SectorList*/ = make_sector_list(sectors, dir_start, fat_addrs, ssz); + +sector_list[dir_start].name = "!Directory"; +if(nmfs > 0 && minifat_start !== ENDOFCHAIN) sector_list[minifat_start].name = "!MiniFAT"; +sector_list[fat_addrs[0]].name = "!FAT"; +sector_list.fat_addrs = fat_addrs; +sector_list.ssz = ssz; + +/* [MS-CFB] 2.6.1 Compound File Directory Entry */ +var files/*:CFBFiles*/ = {}, Paths/*:Array*/ = [], FileIndex/*:CFBFileIndex*/ = [], FullPaths/*:Array*/ = []; +read_directory(dir_start, sector_list, sectors, Paths, nmfs, files, FileIndex, minifat_start); + +build_full_paths(FileIndex, FullPaths, Paths); +Paths.shift(); + +var o = { + FileIndex: FileIndex, + FullPaths: FullPaths +}; + +// $FlowIgnore +if(options && options.raw) o.raw = {header: header, sectors: sectors}; +return o; +} // parse + +/* [MS-CFB] 2.2 Compound File Header -- read up to major version */ +function check_get_mver(blob/*:CFBlob*/)/*:[number, number]*/ { + if(blob[blob.l] == 0x50 && blob[blob.l + 1] == 0x4b) return [0, 0]; + // header signature 8 + blob.chk(HEADER_SIGNATURE, 'Header Signature: '); + + // clsid 16 + //blob.chk(HEADER_CLSID, 'CLSID: '); + blob.l += 16; + + // minor version 2 + var mver/*:number*/ = blob.read_shift(2, 'u'); + + return [blob.read_shift(2,'u'), mver]; +} +function check_shifts(blob/*:CFBlob*/, mver/*:number*/)/*:void*/ { + var shift = 0x09; + + // Byte Order + //blob.chk('feff', 'Byte Order: '); // note: some writers put 0xffff + blob.l += 2; + + // Sector Shift + switch((shift = blob.read_shift(2))) { + case 0x09: if(mver != 3) throw new Error('Sector Shift: Expected 9 saw ' + shift); break; + case 0x0c: if(mver != 4) throw new Error('Sector Shift: Expected 12 saw ' + shift); break; + default: throw new Error('Sector Shift: Expected 9 or 12 saw ' + shift); + } + + // Mini Sector Shift + blob.chk('0600', 'Mini Sector Shift: '); + + // Reserved + blob.chk('000000000000', 'Reserved: '); +} + +/** Break the file up into sectors */ +function sectorify(file/*:RawBytes*/, ssz/*:number*/)/*:Array*/ { + var nsectors = Math.ceil(file.length/ssz)-1; + var sectors/*:Array*/ = []; + for(var i=1; i < nsectors; ++i) sectors[i-1] = file.slice(i*ssz,(i+1)*ssz); + sectors[nsectors-1] = file.slice(nsectors*ssz); + return sectors; +} + +/* [MS-CFB] 2.6.4 Red-Black Tree */ +function build_full_paths(FI/*:CFBFileIndex*/, FP/*:Array*/, Paths/*:Array*/)/*:void*/ { + var i = 0, L = 0, R = 0, C = 0, j = 0, pl = Paths.length; + var dad/*:Array*/ = [], q/*:Array*/ = []; + + for(; i < pl; ++i) { dad[i]=q[i]=i; FP[i]=Paths[i]; } + + for(; j < q.length; ++j) { + i = q[j]; + L = FI[i].L; R = FI[i].R; C = FI[i].C; + if(dad[i] === i) { + if(L !== -1 /*NOSTREAM*/ && dad[L] !== L) dad[i] = dad[L]; + if(R !== -1 && dad[R] !== R) dad[i] = dad[R]; + } + if(C !== -1 /*NOSTREAM*/) dad[C] = i; + if(L !== -1 && i != dad[i]) { dad[L] = dad[i]; if(q.lastIndexOf(L) < j) q.push(L); } + if(R !== -1 && i != dad[i]) { dad[R] = dad[i]; if(q.lastIndexOf(R) < j) q.push(R); } + } + for(i=1; i < pl; ++i) if(dad[i] === i) { + if(R !== -1 /*NOSTREAM*/ && dad[R] !== R) dad[i] = dad[R]; + else if(L !== -1 && dad[L] !== L) dad[i] = dad[L]; + } + + for(i=1; i < pl; ++i) { + if(FI[i].type === 0 /* unknown */) continue; + j = i; + if(j != dad[j]) do { + j = dad[j]; + FP[i] = FP[j] + "/" + FP[i]; + } while (j !== 0 && -1 !== dad[j] && j != dad[j]); + dad[i] = -1; + } + + FP[0] += "/"; + for(i=1; i < pl; ++i) { + if(FI[i].type !== 2 /* stream */) FP[i] += "/"; + } +} + +function get_mfat_entry(entry/*:CFBEntry*/, payload/*:RawBytes*/, mini/*:?RawBytes*/)/*:CFBlob*/ { + var start = entry.start, size = entry.size; + //return (payload.slice(start*MSSZ, start*MSSZ + size)/*:any*/); + var o = []; + var idx = start; + while(mini && size > 0 && idx >= 0) { + o.push(payload.slice(idx * MSSZ, idx * MSSZ + MSSZ)); + size -= MSSZ; + idx = __readInt32LE(mini, idx * 4); + } + if(o.length === 0) return (new_buf(0)/*:any*/); + return (bconcat(o).slice(0, entry.size)/*:any*/); +} + +/** Chase down the rest of the DIFAT chain to build a comprehensive list + DIFAT chains by storing the next sector number as the last 32 bits */ +function sleuth_fat(idx/*:number*/, cnt/*:number*/, sectors/*:Array*/, ssz/*:number*/, fat_addrs)/*:void*/ { + var q/*:number*/ = ENDOFCHAIN; + if(idx === ENDOFCHAIN) { + if(cnt !== 0) throw new Error("DIFAT chain shorter than expected"); + } else if(idx !== -1 /*FREESECT*/) { + var sector = sectors[idx], m = (ssz>>>2)-1; + if(!sector) return; + for(var i = 0; i < m; ++i) { + if((q = __readInt32LE(sector,i*4)) === ENDOFCHAIN) break; + fat_addrs.push(q); + } + if(cnt >= 1) sleuth_fat(__readInt32LE(sector,ssz-4),cnt - 1, sectors, ssz, fat_addrs); + } +} + +/** Follow the linked list of sectors for a given starting point */ +function get_sector_list(sectors/*:Array*/, start/*:number*/, fat_addrs/*:Array*/, ssz/*:number*/, chkd/*:?Array*/)/*:SectorEntry*/ { + var buf/*:Array*/ = [], buf_chain/*:Array*/ = []; + if(!chkd) chkd = []; + var modulus = ssz - 1, j = 0, jj = 0; + for(j=start; j>=0;) { + chkd[j] = true; + buf[buf.length] = j; + buf_chain.push(sectors[j]); + var addr = fat_addrs[Math.floor(j*4/ssz)]; + jj = ((j*4) & modulus); + if(ssz < 4 + jj) throw new Error("FAT boundary crossed: " + j + " 4 "+ssz); + if(!sectors[addr]) break; + j = __readInt32LE(sectors[addr], jj); + } + return {nodes: buf, data:__toBuffer([buf_chain])}; +} + +/** Chase down the sector linked lists */ +function make_sector_list(sectors/*:Array*/, dir_start/*:number*/, fat_addrs/*:Array*/, ssz/*:number*/)/*:SectorList*/ { + var sl = sectors.length, sector_list/*:SectorList*/ = ([]/*:any*/); + var chkd/*:Array*/ = [], buf/*:Array*/ = [], buf_chain/*:Array*/ = []; + var modulus = ssz - 1, i=0, j=0, k=0, jj=0; + for(i=0; i < sl; ++i) { + buf = ([]/*:Array*/); + k = (i + dir_start); if(k >= sl) k-=sl; + if(chkd[k]) continue; + buf_chain = []; + var seen = []; + for(j=k; j>=0;) { + seen[j] = true; + chkd[j] = true; + buf[buf.length] = j; + buf_chain.push(sectors[j]); + var addr/*:number*/ = fat_addrs[Math.floor(j*4/ssz)]; + jj = ((j*4) & modulus); + if(ssz < 4 + jj) throw new Error("FAT boundary crossed: " + j + " 4 "+ssz); + if(!sectors[addr]) break; + j = __readInt32LE(sectors[addr], jj); + if(seen[j]) break; + } + sector_list[k] = ({nodes: buf, data:__toBuffer([buf_chain])}/*:SectorEntry*/); + } + return sector_list; +} + +/* [MS-CFB] 2.6.1 Compound File Directory Entry */ +function read_directory(dir_start/*:number*/, sector_list/*:SectorList*/, sectors/*:Array*/, Paths/*:Array*/, nmfs, files, FileIndex, mini) { + var minifat_store = 0, pl = (Paths.length?2:0); + var sector = sector_list[dir_start].data; + var i = 0, namelen = 0, name; + for(; i < sector.length; i+= 128) { + var blob/*:CFBlob*/ = /*::(*/sector.slice(i, i+128)/*:: :any)*/; + prep_blob(blob, 64); + namelen = blob.read_shift(2); + name = __utf16le(blob,0,namelen-pl); + Paths.push(name); + var o/*:CFBEntry*/ = ({ + name: name, + type: blob.read_shift(1), + color: blob.read_shift(1), + L: blob.read_shift(4, 'i'), + R: blob.read_shift(4, 'i'), + C: blob.read_shift(4, 'i'), + clsid: blob.read_shift(16), + state: blob.read_shift(4, 'i'), + start: 0, + size: 0 + }); + var ctime/*:number*/ = blob.read_shift(2) + blob.read_shift(2) + blob.read_shift(2) + blob.read_shift(2); + if(ctime !== 0) o.ct = read_date(blob, blob.l-8); + var mtime/*:number*/ = blob.read_shift(2) + blob.read_shift(2) + blob.read_shift(2) + blob.read_shift(2); + if(mtime !== 0) o.mt = read_date(blob, blob.l-8); + o.start = blob.read_shift(4, 'i'); + o.size = blob.read_shift(4, 'i'); + if(o.size < 0 && o.start < 0) { o.size = o.type = 0; o.start = ENDOFCHAIN; o.name = ""; } + if(o.type === 5) { /* root */ + minifat_store = o.start; + if(nmfs > 0 && minifat_store !== ENDOFCHAIN) sector_list[minifat_store].name = "!StreamData"; + /*minifat_size = o.size;*/ + } else if(o.size >= 4096 /* MSCSZ */) { + o.storage = 'fat'; + if(sector_list[o.start] === undefined) sector_list[o.start] = get_sector_list(sectors, o.start, sector_list.fat_addrs, sector_list.ssz); + sector_list[o.start].name = o.name; + o.content = (sector_list[o.start].data.slice(0,o.size)/*:any*/); + } else { + o.storage = 'minifat'; + if(o.size < 0) o.size = 0; + else if(minifat_store !== ENDOFCHAIN && o.start !== ENDOFCHAIN && sector_list[minifat_store]) { + o.content = get_mfat_entry(o, sector_list[minifat_store].data, (sector_list[mini]||{}).data); + } + } + if(o.content) prep_blob(o.content, 0); + files[name] = o; + FileIndex.push(o); + } +} + +function read_date(blob/*:RawBytes|CFBlob*/, offset/*:number*/)/*:Date*/ { + return new Date(( ( (__readUInt32LE(blob,offset+4)/1e7)*Math.pow(2,32)+__readUInt32LE(blob,offset)/1e7 ) - 11644473600)*1000); +} + +function read_file(filename/*:string*/, options/*:CFBReadOpts*/) { + get_fs(); + return parse(fs.readFileSync(filename), options); +} + +function read(blob/*:RawBytes|string*/, options/*:CFBReadOpts*/) { + var type = options && options.type; + if(!type) { + if(has_buf && Buffer.isBuffer(blob)) type = "buffer"; + } + switch(type || "base64") { + case "file": /*:: if(typeof blob !== 'string') throw "Must pass a filename when type='file'"; */return read_file(blob, options); + case "base64": /*:: if(typeof blob !== 'string') throw "Must pass a base64-encoded binary string when type='file'"; */return parse(s2a(Base64_decode(blob)), options); + case "binary": /*:: if(typeof blob !== 'string') throw "Must pass a binary string when type='file'"; */return parse(s2a(blob), options); + } + return parse(/*::typeof blob == 'string' ? new Buffer(blob, 'utf-8') : */blob, options); +} + +function init_cfb(cfb/*:CFBContainer*/, opts/*:?any*/)/*:void*/ { + var o = opts || {}, root = o.root || "Root Entry"; + if(!cfb.FullPaths) cfb.FullPaths = []; + if(!cfb.FileIndex) cfb.FileIndex = []; + if(cfb.FullPaths.length !== cfb.FileIndex.length) throw new Error("inconsistent CFB structure"); + if(cfb.FullPaths.length === 0) { + cfb.FullPaths[0] = root + "/"; + cfb.FileIndex[0] = ({ name: root, type: 5 }/*:any*/); + } + if(o.CLSID) cfb.FileIndex[0].clsid = o.CLSID; + seed_cfb(cfb); +} +function seed_cfb(cfb/*:CFBContainer*/)/*:void*/ { + var nm = "\u0001Sh33tJ5"; + if(CFB.find(cfb, "/" + nm)) return; + var p = new_buf(4); p[0] = 55; p[1] = p[3] = 50; p[2] = 54; + cfb.FileIndex.push(({ name: nm, type: 2, content:p, size:4, L:69, R:69, C:69 }/*:any*/)); + cfb.FullPaths.push(cfb.FullPaths[0] + nm); + rebuild_cfb(cfb); +} +function rebuild_cfb(cfb/*:CFBContainer*/, f/*:?boolean*/)/*:void*/ { + init_cfb(cfb); + var gc = false, s = false; + for(var i = cfb.FullPaths.length - 1; i >= 0; --i) { + var _file = cfb.FileIndex[i]; + switch(_file.type) { + case 0: + if(s) gc = true; + else { cfb.FileIndex.pop(); cfb.FullPaths.pop(); } + break; + case 1: case 2: case 5: + s = true; + if(isNaN(_file.R * _file.L * _file.C)) gc = true; + if(_file.R > -1 && _file.L > -1 && _file.R == _file.L) gc = true; + break; + default: gc = true; break; + } + } + if(!gc && !f) return; + + var now = new Date(1987, 1, 19), j = 0; + // Track which names exist + var fullPaths = Object.create ? Object.create(null) : {}; + var data/*:Array<[string, CFBEntry]>*/ = []; + for(i = 0; i < cfb.FullPaths.length; ++i) { + fullPaths[cfb.FullPaths[i]] = true; + if(cfb.FileIndex[i].type === 0) continue; + data.push([cfb.FullPaths[i], cfb.FileIndex[i]]); + } + for(i = 0; i < data.length; ++i) { + var dad = dirname(data[i][0]); + s = fullPaths[dad]; + while(!s) { + while(dirname(dad) && !fullPaths[dirname(dad)]) dad = dirname(dad); + + data.push([dad, ({ + name: filename(dad).replace("/",""), + type: 1, + clsid: HEADER_CLSID, + ct: now, mt: now, + content: null + }/*:any*/)]); + + // Add name to set + fullPaths[dad] = true; + + dad = dirname(data[i][0]); + s = fullPaths[dad]; + } + } + + data.sort(function(x,y) { return namecmp(x[0], y[0]); }); + cfb.FullPaths = []; cfb.FileIndex = []; + for(i = 0; i < data.length; ++i) { cfb.FullPaths[i] = data[i][0]; cfb.FileIndex[i] = data[i][1]; } + for(i = 0; i < data.length; ++i) { + var elt = cfb.FileIndex[i]; + var nm = cfb.FullPaths[i]; + + elt.name = filename(nm).replace("/",""); + elt.L = elt.R = elt.C = -(elt.color = 1); + elt.size = elt.content ? elt.content.length : 0; + elt.start = 0; + elt.clsid = (elt.clsid || HEADER_CLSID); + if(i === 0) { + elt.C = data.length > 1 ? 1 : -1; + elt.size = 0; + elt.type = 5; + } else if(nm.slice(-1) == "/") { + for(j=i+1;j < data.length; ++j) if(dirname(cfb.FullPaths[j])==nm) break; + elt.C = j >= data.length ? -1 : j; + for(j=i+1;j < data.length; ++j) if(dirname(cfb.FullPaths[j])==dirname(nm)) break; + elt.R = j >= data.length ? -1 : j; + elt.type = 1; + } else { + if(dirname(cfb.FullPaths[i+1]||"") == dirname(nm)) elt.R = i + 1; + elt.type = 2; + } + } + +} + +function _write(cfb/*:CFBContainer*/, options/*:CFBWriteOpts*/)/*:RawBytes|string*/ { + var _opts = options || {}; + /* MAD is order-sensitive, skip rebuild and sort */ + if(_opts.fileType == 'mad') return write_mad(cfb, _opts); + rebuild_cfb(cfb); + switch(_opts.fileType) { + case 'zip': return write_zip(cfb, _opts); + //case 'mad': return write_mad(cfb, _opts); + } + var L = (function(cfb/*:CFBContainer*/)/*:Array*/{ + var mini_size = 0, fat_size = 0; + for(var i = 0; i < cfb.FileIndex.length; ++i) { + var file = cfb.FileIndex[i]; + if(!file.content) continue; + var flen = file.content.length; + if(flen > 0){ + if(flen < 0x1000) mini_size += (flen + 0x3F) >> 6; + else fat_size += (flen + 0x01FF) >> 9; + } + } + var dir_cnt = (cfb.FullPaths.length +3) >> 2; + var mini_cnt = (mini_size + 7) >> 3; + var mfat_cnt = (mini_size + 0x7F) >> 7; + var fat_base = mini_cnt + fat_size + dir_cnt + mfat_cnt; + var fat_cnt = (fat_base + 0x7F) >> 7; + var difat_cnt = fat_cnt <= 109 ? 0 : Math.ceil((fat_cnt-109)/0x7F); + while(((fat_base + fat_cnt + difat_cnt + 0x7F) >> 7) > fat_cnt) difat_cnt = ++fat_cnt <= 109 ? 0 : Math.ceil((fat_cnt-109)/0x7F); + var L = [1, difat_cnt, fat_cnt, mfat_cnt, dir_cnt, fat_size, mini_size, 0]; + cfb.FileIndex[0].size = mini_size << 6; + L[7] = (cfb.FileIndex[0].start=L[0]+L[1]+L[2]+L[3]+L[4]+L[5])+((L[6]+7) >> 3); + return L; + })(cfb); + var o = new_buf(L[7] << 9); + var i = 0, T = 0; + { + for(i = 0; i < 8; ++i) o.write_shift(1, HEADER_SIG[i]); + for(i = 0; i < 8; ++i) o.write_shift(2, 0); + o.write_shift(2, 0x003E); + o.write_shift(2, 0x0003); + o.write_shift(2, 0xFFFE); + o.write_shift(2, 0x0009); + o.write_shift(2, 0x0006); + for(i = 0; i < 3; ++i) o.write_shift(2, 0); + o.write_shift(4, 0); + o.write_shift(4, L[2]); + o.write_shift(4, L[0] + L[1] + L[2] + L[3] - 1); + o.write_shift(4, 0); + o.write_shift(4, 1<<12); + o.write_shift(4, L[3] ? L[0] + L[1] + L[2] - 1: ENDOFCHAIN); + o.write_shift(4, L[3]); + o.write_shift(-4, L[1] ? L[0] - 1: ENDOFCHAIN); + o.write_shift(4, L[1]); + for(i = 0; i < 109; ++i) o.write_shift(-4, i < L[2] ? L[1] + i : -1); + } + if(L[1]) { + for(T = 0; T < L[1]; ++T) { + for(; i < 236 + T * 127; ++i) o.write_shift(-4, i < L[2] ? L[1] + i : -1); + o.write_shift(-4, T === L[1] - 1 ? ENDOFCHAIN : T + 1); + } + } + var chainit = function(w/*:number*/)/*:void*/ { + for(T += w; i> 9); + } + chainit((L[6] + 7) >> 3); + while(o.l & 0x1FF) o.write_shift(-4, consts.ENDOFCHAIN); + T = i = 0; + for(j = 0; j < cfb.FileIndex.length; ++j) { + file = cfb.FileIndex[j]; + if(!file.content) continue; + /*:: if(file.content == null) throw new Error("unreachable"); */ + flen = file.content.length; + if(!flen || flen >= 0x1000) continue; + file.start = T; + chainit((flen + 0x3F) >> 6); + } + while(o.l & 0x1FF) o.write_shift(-4, consts.ENDOFCHAIN); + for(i = 0; i < L[4]<<2; ++i) { + var nm = cfb.FullPaths[i]; + if(!nm || nm.length === 0) { + for(j = 0; j < 17; ++j) o.write_shift(4, 0); + for(j = 0; j < 3; ++j) o.write_shift(4, -1); + for(j = 0; j < 12; ++j) o.write_shift(4, 0); + continue; + } + file = cfb.FileIndex[i]; + if(i === 0) file.start = file.size ? file.start - 1 : ENDOFCHAIN; + var _nm/*:string*/ = (i === 0 && _opts.root) || file.name; + if(_nm.length > 32) { + console.error("Name " + _nm + " will be truncated to " + _nm.slice(0,32)); + _nm = _nm.slice(0, 32); + } + flen = 2*(_nm.length+1); + o.write_shift(64, _nm, "utf16le"); + o.write_shift(2, flen); + o.write_shift(1, file.type); + o.write_shift(1, file.color); + o.write_shift(-4, file.L); + o.write_shift(-4, file.R); + o.write_shift(-4, file.C); + if(!file.clsid) for(j = 0; j < 4; ++j) o.write_shift(4, 0); + else o.write_shift(16, file.clsid, "hex"); + o.write_shift(4, file.state || 0); + o.write_shift(4, 0); o.write_shift(4, 0); + o.write_shift(4, 0); o.write_shift(4, 0); + o.write_shift(4, file.start); + o.write_shift(4, file.size); o.write_shift(4, 0); + } + for(i = 1; i < cfb.FileIndex.length; ++i) { + file = cfb.FileIndex[i]; + /*:: if(!file.content) throw new Error("unreachable"); */ + if(file.size >= 0x1000) { + o.l = (file.start+1) << 9; + if (has_buf && Buffer.isBuffer(file.content)) { + file.content.copy(o, o.l, 0, file.size); + // o is a 0-filled Buffer so just set next offset + o.l += (file.size + 511) & -512; + } else { + for(j = 0; j < file.size; ++j) o.write_shift(1, file.content[j]); + for(; j & 0x1FF; ++j) o.write_shift(1, 0); + } + } + } + for(i = 1; i < cfb.FileIndex.length; ++i) { + file = cfb.FileIndex[i]; + /*:: if(!file.content) throw new Error("unreachable"); */ + if(file.size > 0 && file.size < 0x1000) { + if (has_buf && Buffer.isBuffer(file.content)) { + file.content.copy(o, o.l, 0, file.size); + // o is a 0-filled Buffer so just set next offset + o.l += (file.size + 63) & -64; + } else { + for(j = 0; j < file.size; ++j) o.write_shift(1, file.content[j]); + for(; j & 0x3F; ++j) o.write_shift(1, 0); + } + } + } + if (has_buf) { + o.l = o.length; + } else { + // When using Buffer, already 0-filled + while(o.l < o.length) o.write_shift(1, 0); + } + return o; +} +/* [MS-CFB] 2.6.4 (Unicode 3.0.1 case conversion) */ +function find(cfb/*:CFBContainer*/, path/*:string*/)/*:?CFBEntry*/ { + var UCFullPaths/*:Array*/ = cfb.FullPaths.map(function(x) { return x.toUpperCase(); }); + var UCPaths/*:Array*/ = UCFullPaths.map(function(x) { var y = x.split("/"); return y[y.length - (x.slice(-1) == "/" ? 2 : 1)]; }); + var k/*:boolean*/ = false; + if(path.charCodeAt(0) === 47 /* "/" */) { k = true; path = UCFullPaths[0].slice(0, -1) + path; } + else k = path.indexOf("/") !== -1; + var UCPath/*:string*/ = path.toUpperCase(); + var w/*:number*/ = k === true ? UCFullPaths.indexOf(UCPath) : UCPaths.indexOf(UCPath); + if(w !== -1) return cfb.FileIndex[w]; + + var m = !UCPath.match(chr1); + UCPath = UCPath.replace(chr0,''); + if(m) UCPath = UCPath.replace(chr1,'!'); + for(w = 0; w < UCFullPaths.length; ++w) { + if((m ? UCFullPaths[w].replace(chr1,'!') : UCFullPaths[w]).replace(chr0,'') == UCPath) return cfb.FileIndex[w]; + if((m ? UCPaths[w].replace(chr1,'!') : UCPaths[w]).replace(chr0,'') == UCPath) return cfb.FileIndex[w]; + } + return null; +} +/** CFB Constants */ +var MSSZ = 64; /* Mini Sector Size = 1<<6 */ +//var MSCSZ = 4096; /* Mini Stream Cutoff Size */ +/* 2.1 Compound File Sector Numbers and Types */ +var ENDOFCHAIN = -2; +/* 2.2 Compound File Header */ +var HEADER_SIGNATURE = 'd0cf11e0a1b11ae1'; +var HEADER_SIG = [0xD0, 0xCF, 0x11, 0xE0, 0xA1, 0xB1, 0x1A, 0xE1]; +var HEADER_CLSID = '00000000000000000000000000000000'; +var consts = { + /* 2.1 Compund File Sector Numbers and Types */ + MAXREGSECT: -6, + DIFSECT: -4, + FATSECT: -3, + ENDOFCHAIN: ENDOFCHAIN, + FREESECT: -1, + /* 2.2 Compound File Header */ + HEADER_SIGNATURE: HEADER_SIGNATURE, + HEADER_MINOR_VERSION: '3e00', + MAXREGSID: -6, + NOSTREAM: -1, + HEADER_CLSID: HEADER_CLSID, + /* 2.6.1 Compound File Directory Entry */ + EntryTypes: ['unknown','storage','stream','lockbytes','property','root'] +}; + +function write_file(cfb/*:CFBContainer*/, filename/*:string*/, options/*:CFBWriteOpts*/)/*:void*/ { + get_fs(); + var o = _write(cfb, options); + /*:: if(typeof Buffer == 'undefined' || !Buffer.isBuffer(o) || !(o instanceof Buffer)) throw new Error("unreachable"); */ + fs.writeFileSync(filename, o); +} + +function a2s(o/*:RawBytes*/)/*:string*/ { + var out = new Array(o.length); + for(var i = 0; i < o.length; ++i) out[i] = String.fromCharCode(o[i]); + return out.join(""); +} + +function write(cfb/*:CFBContainer*/, options/*:CFBWriteOpts*/)/*:RawBytes|string*/ { + var o = _write(cfb, options); + switch(options && options.type || "buffer") { + case "file": get_fs(); fs.writeFileSync(options.filename, (o/*:any*/)); return o; + case "binary": return typeof o == "string" ? o : a2s(o); + case "base64": return Base64_encode(typeof o == "string" ? o : a2s(o)); + case "buffer": if(has_buf) return Buffer.isBuffer(o) ? o : Buffer_from(o); + /* falls through */ + case "array": return typeof o == "string" ? s2a(o) : o; + } + return o; +} +/* node < 8.1 zlib does not expose bytesRead, so default to pure JS */ +var _zlib; +function use_zlib(zlib) { try { + var InflateRaw = zlib.InflateRaw; + var InflRaw = new InflateRaw(); + InflRaw._processChunk(new Uint8Array([3, 0]), InflRaw._finishFlushFlag); + if(InflRaw.bytesRead) _zlib = zlib; + else throw new Error("zlib does not expose bytesRead"); +} catch(e) {console.error("cannot use native zlib: " + (e.message || e)); } } + +function _inflateRawSync(payload, usz) { + if(!_zlib) return _inflate(payload, usz); + var InflateRaw = _zlib.InflateRaw; + var InflRaw = new InflateRaw(); + var out = InflRaw._processChunk(payload.slice(payload.l), InflRaw._finishFlushFlag); + payload.l += InflRaw.bytesRead; + return out; +} + +function _deflateRawSync(payload) { + return _zlib ? _zlib.deflateRawSync(payload) : _deflate(payload); +} +var CLEN_ORDER = [ 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 ]; + +/* LEN_ID = [ 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285 ]; */ +var LEN_LN = [ 3, 4, 5, 6, 7, 8, 9, 10, 11, 13 , 15, 17, 19, 23, 27, 31, 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258 ]; + +/* DST_ID = [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29 ]; */ +var DST_LN = [ 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, 8193, 12289, 16385, 24577 ]; + +function bit_swap_8(n) { var t = (((((n<<1)|(n<<11)) & 0x22110) | (((n<<5)|(n<<15)) & 0x88440))); return ((t>>16) | (t>>8) |t)&0xFF; } + +var use_typed_arrays = typeof Uint8Array !== 'undefined'; + +var bitswap8 = use_typed_arrays ? new Uint8Array(1<<8) : []; +for(var q = 0; q < (1<<8); ++q) bitswap8[q] = bit_swap_8(q); + +function bit_swap_n(n, b) { + var rev = bitswap8[n & 0xFF]; + if(b <= 8) return rev >>> (8-b); + rev = (rev << 8) | bitswap8[(n>>8)&0xFF]; + if(b <= 16) return rev >>> (16-b); + rev = (rev << 8) | bitswap8[(n>>16)&0xFF]; + return rev >>> (24-b); +} + +/* helpers for unaligned bit reads */ +function read_bits_2(buf, bl) { var w = (bl&7), h = (bl>>>3); return ((buf[h]|(w <= 6 ? 0 : buf[h+1]<<8))>>>w)& 0x03; } +function read_bits_3(buf, bl) { var w = (bl&7), h = (bl>>>3); return ((buf[h]|(w <= 5 ? 0 : buf[h+1]<<8))>>>w)& 0x07; } +function read_bits_4(buf, bl) { var w = (bl&7), h = (bl>>>3); return ((buf[h]|(w <= 4 ? 0 : buf[h+1]<<8))>>>w)& 0x0F; } +function read_bits_5(buf, bl) { var w = (bl&7), h = (bl>>>3); return ((buf[h]|(w <= 3 ? 0 : buf[h+1]<<8))>>>w)& 0x1F; } +function read_bits_7(buf, bl) { var w = (bl&7), h = (bl>>>3); return ((buf[h]|(w <= 1 ? 0 : buf[h+1]<<8))>>>w)& 0x7F; } + +/* works up to n = 3 * 8 + 1 = 25 */ +function read_bits_n(buf, bl, n) { + var w = (bl&7), h = (bl>>>3), f = ((1<>> w; + if(n < 8 - w) return v & f; + v |= buf[h+1]<<(8-w); + if(n < 16 - w) return v & f; + v |= buf[h+2]<<(16-w); + if(n < 24 - w) return v & f; + v |= buf[h+3]<<(24-w); + return v & f; +} + +/* helpers for unaligned bit writes */ +function write_bits_3(buf, bl, v) { var w = bl & 7, h = bl >>> 3; + if(w <= 5) buf[h] |= (v & 7) << w; + else { + buf[h] |= (v << w) & 0xFF; + buf[h+1] = (v&7) >> (8-w); + } + return bl + 3; +} + +function write_bits_1(buf, bl, v) { + var w = bl & 7, h = bl >>> 3; + v = (v&1) << w; + buf[h] |= v; + return bl + 1; +} +function write_bits_8(buf, bl, v) { + var w = bl & 7, h = bl >>> 3; + v <<= w; + buf[h] |= v & 0xFF; v >>>= 8; + buf[h+1] = v; + return bl + 8; +} +function write_bits_16(buf, bl, v) { + var w = bl & 7, h = bl >>> 3; + v <<= w; + buf[h] |= v & 0xFF; v >>>= 8; + buf[h+1] = v & 0xFF; + buf[h+2] = v >>> 8; + return bl + 16; +} + +/* until ArrayBuffer#realloc is a thing, fake a realloc */ +function realloc(b, sz/*:number*/) { + var L = b.length, M = 2*L > sz ? 2*L : sz + 5, i = 0; + if(L >= sz) return b; + if(has_buf) { + var o = new_unsafe_buf(M); + // $FlowIgnore + if(b.copy) b.copy(o); + else for(; i < b.length; ++i) o[i] = b[i]; + return o; + } else if(use_typed_arrays) { + var a = new Uint8Array(M); + if(a.set) a.set(b); + else for(; i < L; ++i) a[i] = b[i]; + return a; + } + b.length = M; + return b; +} + +/* zero-filled arrays for older browsers */ +function zero_fill_array(n) { + var o = new Array(n); + for(var i = 0; i < n; ++i) o[i] = 0; + return o; +} + +/* build tree (used for literals and lengths) */ +function build_tree(clens, cmap, MAX/*:number*/)/*:number*/ { + var maxlen = 1, w = 0, i = 0, j = 0, ccode = 0, L = clens.length; + + var bl_count = use_typed_arrays ? new Uint16Array(32) : zero_fill_array(32); + for(i = 0; i < 32; ++i) bl_count[i] = 0; + + for(i = L; i < MAX; ++i) clens[i] = 0; + L = clens.length; + + var ctree = use_typed_arrays ? new Uint16Array(L) : zero_fill_array(L); // [] + + /* build code tree */ + for(i = 0; i < L; ++i) { + bl_count[(w = clens[i])]++; + if(maxlen < w) maxlen = w; + ctree[i] = 0; + } + bl_count[0] = 0; + for(i = 1; i <= maxlen; ++i) bl_count[i+16] = (ccode = (ccode + bl_count[i-1])<<1); + for(i = 0; i < L; ++i) { + ccode = clens[i]; + if(ccode != 0) ctree[i] = bl_count[ccode+16]++; + } + + /* cmap[maxlen + 4 bits] = (off&15) + (lit<<4) reverse mapping */ + var cleni = 0; + for(i = 0; i < L; ++i) { + cleni = clens[i]; + if(cleni != 0) { + ccode = bit_swap_n(ctree[i], maxlen)>>(maxlen-cleni); + for(j = (1<<(maxlen + 4 - cleni)) - 1; j>=0; --j) + cmap[ccode|(j<*/ = []; + var i = 0; + for(;i<32; i++) dlens.push(5); + build_tree(dlens, fix_dmap, 32); + + var clens/*:Array*/ = []; + i = 0; + for(; i<=143; i++) clens.push(8); + for(; i<=255; i++) clens.push(9); + for(; i<=279; i++) clens.push(7); + for(; i<=287; i++) clens.push(8); + build_tree(clens, fix_lmap, 288); +})();var _deflateRaw = /*#__PURE__*/(function _deflateRawIIFE() { + var DST_LN_RE = use_typed_arrays ? new Uint8Array(0x8000) : []; + var j = 0, k = 0; + for(; j < DST_LN.length - 1; ++j) { + for(; k < DST_LN[j+1]; ++k) DST_LN_RE[k] = j; + } + for(;k < 32768; ++k) DST_LN_RE[k] = 29; + + var LEN_LN_RE = use_typed_arrays ? new Uint8Array(0x103) : []; + for(j = 0, k = 0; j < LEN_LN.length - 1; ++j) { + for(; k < LEN_LN[j+1]; ++k) LEN_LN_RE[k] = j; + } + + function write_stored(data, out) { + var boff = 0; + while(boff < data.length) { + var L = Math.min(0xFFFF, data.length - boff); + var h = boff + L == data.length; + out.write_shift(1, +h); + out.write_shift(2, L); + out.write_shift(2, (~L) & 0xFFFF); + while(L-- > 0) out[out.l++] = data[boff++]; + } + return out.l; + } + + /* Fixed Huffman */ + function write_huff_fixed(data, out) { + var bl = 0; + var boff = 0; + var addrs = use_typed_arrays ? new Uint16Array(0x8000) : []; + while(boff < data.length) { + var L = /* data.length - boff; */ Math.min(0xFFFF, data.length - boff); + + /* write a stored block for short data */ + if(L < 10) { + bl = write_bits_3(out, bl, +!!(boff + L == data.length)); // jshint ignore:line + if(bl & 7) bl += 8 - (bl & 7); + out.l = (bl / 8) | 0; + out.write_shift(2, L); + out.write_shift(2, (~L) & 0xFFFF); + while(L-- > 0) out[out.l++] = data[boff++]; + bl = out.l * 8; + continue; + } + + bl = write_bits_3(out, bl, +!!(boff + L == data.length) + 2); // jshint ignore:line + var hash = 0; + while(L-- > 0) { + var d = data[boff]; + hash = ((hash << 5) ^ d) & 0x7FFF; + + var match = -1, mlen = 0; + + if((match = addrs[hash])) { + match |= boff & ~0x7FFF; + if(match > boff) match -= 0x8000; + if(match < boff) while(data[match + mlen] == data[boff + mlen] && mlen < 250) ++mlen; + } + + if(mlen > 2) { + /* Copy Token */ + d = LEN_LN_RE[mlen]; + if(d <= 22) bl = write_bits_8(out, bl, bitswap8[d+1]>>1) - 1; + else { + write_bits_8(out, bl, 3); + bl += 5; + write_bits_8(out, bl, bitswap8[d-23]>>5); + bl += 3; + } + var len_eb = (d < 8) ? 0 : ((d - 4)>>2); + if(len_eb > 0) { + write_bits_16(out, bl, mlen - LEN_LN[d]); + bl += len_eb; + } + + d = DST_LN_RE[boff - match]; + bl = write_bits_8(out, bl, bitswap8[d]>>3); + bl -= 3; + + var dst_eb = d < 4 ? 0 : (d-2)>>1; + if(dst_eb > 0) { + write_bits_16(out, bl, boff - match - DST_LN[d]); + bl += dst_eb; + } + for(var q = 0; q < mlen; ++q) { + addrs[hash] = boff & 0x7FFF; + hash = ((hash << 5) ^ data[boff]) & 0x7FFF; + ++boff; + } + L-= mlen - 1; + } else { + /* Literal Token */ + if(d <= 143) d = d + 48; + else bl = write_bits_1(out, bl, 1); + bl = write_bits_8(out, bl, bitswap8[d]); + addrs[hash] = boff & 0x7FFF; + ++boff; + } + } + + bl = write_bits_8(out, bl, 0) - 1; + } + out.l = ((bl + 7)/8)|0; + return out.l; + } + return function _deflateRaw(data, out) { + if(data.length < 8) return write_stored(data, out); + return write_huff_fixed(data, out); + }; +})(); + +function _deflate(data) { + var buf = new_buf(50+Math.floor(data.length*1.1)); + var off = _deflateRaw(data, buf); + return buf.slice(0, off); +} +/* modified inflate function also moves original read head */ + +var dyn_lmap = use_typed_arrays ? new Uint16Array(32768) : zero_fill_array(32768); +var dyn_dmap = use_typed_arrays ? new Uint16Array(32768) : zero_fill_array(32768); +var dyn_cmap = use_typed_arrays ? new Uint16Array(128) : zero_fill_array(128); +var dyn_len_1 = 1, dyn_len_2 = 1; + +/* 5.5.3 Expanding Huffman Codes */ +function dyn(data, boff/*:number*/) { + /* nomenclature from RFC1951 refers to bit values; these are offset by the implicit constant */ + var _HLIT = read_bits_5(data, boff) + 257; boff += 5; + var _HDIST = read_bits_5(data, boff) + 1; boff += 5; + var _HCLEN = read_bits_4(data, boff) + 4; boff += 4; + var w = 0; + + /* grab and store code lengths */ + var clens = use_typed_arrays ? new Uint8Array(19) : zero_fill_array(19); + var ctree = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]; + var maxlen = 1; + var bl_count = use_typed_arrays ? new Uint8Array(8) : zero_fill_array(8); + var next_code = use_typed_arrays ? new Uint8Array(8) : zero_fill_array(8); + var L = clens.length; /* 19 */ + for(var i = 0; i < _HCLEN; ++i) { + clens[CLEN_ORDER[i]] = w = read_bits_3(data, boff); + if(maxlen < w) maxlen = w; + bl_count[w]++; + boff += 3; + } + + /* build code tree */ + var ccode = 0; + bl_count[0] = 0; + for(i = 1; i <= maxlen; ++i) next_code[i] = ccode = (ccode + bl_count[i-1])<<1; + for(i = 0; i < L; ++i) if((ccode = clens[i]) != 0) ctree[i] = next_code[ccode]++; + /* cmap[7 bits from stream] = (off&7) + (lit<<3) */ + var cleni = 0; + for(i = 0; i < L; ++i) { + cleni = clens[i]; + if(cleni != 0) { + ccode = bitswap8[ctree[i]]>>(8-cleni); + for(var j = (1<<(7-cleni))-1; j>=0; --j) dyn_cmap[ccode|(j<*/ = []; + maxlen = 1; + for(; hcodes.length < _HLIT + _HDIST;) { + ccode = dyn_cmap[read_bits_7(data, boff)]; + boff += ccode & 7; + switch((ccode >>>= 3)) { + case 16: + w = 3 + read_bits_2(data, boff); boff += 2; + ccode = hcodes[hcodes.length - 1]; + while(w-- > 0) hcodes.push(ccode); + break; + case 17: + w = 3 + read_bits_3(data, boff); boff += 3; + while(w-- > 0) hcodes.push(0); + break; + case 18: + w = 11 + read_bits_7(data, boff); boff += 7; + while(w -- > 0) hcodes.push(0); + break; + default: + hcodes.push(ccode); + if(maxlen < ccode) maxlen = ccode; + break; + } + } + + /* build literal / length trees */ + var h1 = hcodes.slice(0, _HLIT), h2 = hcodes.slice(_HLIT); + for(i = _HLIT; i < 286; ++i) h1[i] = 0; + for(i = _HDIST; i < 30; ++i) h2[i] = 0; + dyn_len_1 = build_tree(h1, dyn_lmap, 286); + dyn_len_2 = build_tree(h2, dyn_dmap, 30); + return boff; +} + +/* return [ data, bytesRead ] */ +function inflate(data, usz/*:number*/) { + /* shortcircuit for empty buffer [0x03, 0x00] */ + if(data[0] == 3 && !(data[1] & 0x3)) { return [new_raw_buf(usz), 2]; } + + /* bit offset */ + var boff = 0; + + /* header includes final bit and type bits */ + var header = 0; + + var outbuf = new_unsafe_buf(usz ? usz : (1<<18)); + var woff = 0; + var OL = outbuf.length>>>0; + var max_len_1 = 0, max_len_2 = 0; + + while((header&1) == 0) { + header = read_bits_3(data, boff); boff += 3; + if((header >>> 1) == 0) { + /* Stored block */ + if(boff & 7) boff += 8 - (boff&7); + /* 2 bytes sz, 2 bytes bit inverse */ + var sz = data[boff>>>3] | data[(boff>>>3)+1]<<8; + boff += 32; + /* push sz bytes */ + if(sz > 0) { + if(!usz && OL < woff + sz) { outbuf = realloc(outbuf, woff + sz); OL = outbuf.length; } + while(sz-- > 0) { outbuf[woff++] = data[boff>>>3]; boff += 8; } + } + continue; + } else if((header >> 1) == 1) { + /* Fixed Huffman */ + max_len_1 = 9; max_len_2 = 5; + } else { + /* Dynamic Huffman */ + boff = dyn(data, boff); + max_len_1 = dyn_len_1; max_len_2 = dyn_len_2; + } + for(;;) { // while(true) is apparently out of vogue in modern JS circles + if(!usz && (OL < woff + 32767)) { outbuf = realloc(outbuf, woff + 32767); OL = outbuf.length; } + /* ingest code and move read head */ + var bits = read_bits_n(data, boff, max_len_1); + var code = (header>>>1) == 1 ? fix_lmap[bits] : dyn_lmap[bits]; + boff += code & 15; code >>>= 4; + /* 0-255 are literals, 256 is end of block token, 257+ are copy tokens */ + if(((code>>>8)&0xFF) === 0) outbuf[woff++] = code; + else if(code == 256) break; + else { + code -= 257; + var len_eb = (code < 8) ? 0 : ((code-4)>>2); if(len_eb > 5) len_eb = 0; + var tgt = woff + LEN_LN[code]; + /* length extra bits */ + if(len_eb > 0) { + tgt += read_bits_n(data, boff, len_eb); + boff += len_eb; + } + + /* dist code */ + bits = read_bits_n(data, boff, max_len_2); + code = (header>>>1) == 1 ? fix_dmap[bits] : dyn_dmap[bits]; + boff += code & 15; code >>>= 4; + var dst_eb = (code < 4 ? 0 : (code-2)>>1); + var dst = DST_LN[code]; + /* dist extra bits */ + if(dst_eb > 0) { + dst += read_bits_n(data, boff, dst_eb); + boff += dst_eb; + } + + /* in the common case, manual byte copy is faster than TA set / Buffer copy */ + if(!usz && OL < tgt) { outbuf = realloc(outbuf, tgt + 100); OL = outbuf.length; } + while(woff < tgt) { outbuf[woff] = outbuf[woff - dst]; ++woff; } + } + } + } + if(usz) return [outbuf, (boff+7)>>>3]; + return [outbuf.slice(0, woff), (boff+7)>>>3]; +} + +function _inflate(payload, usz) { + var data = payload.slice(payload.l||0); + var out = inflate(data, usz); + payload.l += out[1]; + return out[0]; +} + +function warn_or_throw(wrn, msg) { + if(wrn) { if(typeof console !== 'undefined') console.error(msg); } + else throw new Error(msg); +} + +function parse_zip(file/*:RawBytes*/, options/*:CFBReadOpts*/)/*:CFBContainer*/ { + var blob/*:CFBlob*/ = /*::(*/file/*:: :any)*/; + prep_blob(blob, 0); + + var FileIndex/*:CFBFileIndex*/ = [], FullPaths/*:Array*/ = []; + var o = { + FileIndex: FileIndex, + FullPaths: FullPaths + }; + init_cfb(o, { root: options.root }); + + /* find end of central directory, start just after signature */ + var i = blob.length - 4; + while((blob[i] != 0x50 || blob[i+1] != 0x4b || blob[i+2] != 0x05 || blob[i+3] != 0x06) && i >= 0) --i; + blob.l = i + 4; + + /* parse end of central directory */ + blob.l += 4; + var fcnt = blob.read_shift(2); + blob.l += 6; + var start_cd = blob.read_shift(4); + + /* parse central directory */ + blob.l = start_cd; + + for(i = 0; i < fcnt; ++i) { + /* trust local file header instead of CD entry */ + blob.l += 20; + var csz = blob.read_shift(4); + var usz = blob.read_shift(4); + var namelen = blob.read_shift(2); + var efsz = blob.read_shift(2); + var fcsz = blob.read_shift(2); + blob.l += 8; + var offset = blob.read_shift(4); + var EF = parse_extra_field(/*::(*/blob.slice(blob.l+namelen, blob.l+namelen+efsz)/*:: :any)*/); + blob.l += namelen + efsz + fcsz; + + var L = blob.l; + blob.l = offset + 4; + parse_local_file(blob, csz, usz, o, EF); + blob.l = L; + } + + return o; +} + + +/* head starts just after local file header signature */ +function parse_local_file(blob/*:CFBlob*/, csz/*:number*/, usz/*:number*/, o/*:CFBContainer*/, EF) { + /* [local file header] */ + blob.l += 2; + var flags = blob.read_shift(2); + var meth = blob.read_shift(2); + var date = parse_dos_date(blob); + + if(flags & 0x2041) throw new Error("Unsupported ZIP encryption"); + var crc32 = blob.read_shift(4); + var _csz = blob.read_shift(4); + var _usz = blob.read_shift(4); + + var namelen = blob.read_shift(2); + var efsz = blob.read_shift(2); + + // TODO: flags & (1<<11) // UTF8 + var name = ""; for(var i = 0; i < namelen; ++i) name += String.fromCharCode(blob[blob.l++]); + if(efsz) { + var ef = parse_extra_field(/*::(*/blob.slice(blob.l, blob.l + efsz)/*:: :any)*/); + if((ef[0x5455]||{}).mt) date = ef[0x5455].mt; + if(((EF||{})[0x5455]||{}).mt) date = EF[0x5455].mt; + } + blob.l += efsz; + + /* [encryption header] */ + + /* [file data] */ + var data = blob.slice(blob.l, blob.l + _csz); + switch(meth) { + case 8: data = _inflateRawSync(blob, _usz); break; + case 0: break; // TODO: scan for magic number + default: throw new Error("Unsupported ZIP Compression method " + meth); + } + + /* [data descriptor] */ + var wrn = false; + if(flags & 8) { + crc32 = blob.read_shift(4); + if(crc32 == 0x08074b50) { crc32 = blob.read_shift(4); wrn = true; } + _csz = blob.read_shift(4); + _usz = blob.read_shift(4); + } + + if(_csz != csz) warn_or_throw(wrn, "Bad compressed size: " + csz + " != " + _csz); + if(_usz != usz) warn_or_throw(wrn, "Bad uncompressed size: " + usz + " != " + _usz); + var _crc32 = CRC32.buf(data, 0); + if((crc32>>0) != (_crc32>>0)) warn_or_throw(wrn, "Bad CRC32 checksum: " + crc32 + " != " + _crc32); + cfb_add(o, name, data, {unsafe: true, mt: date}); +} +function write_zip(cfb/*:CFBContainer*/, options/*:CFBWriteOpts*/)/*:RawBytes*/ { + var _opts = options || {}; + var out = [], cdirs = []; + var o/*:CFBlob*/ = new_buf(1); + var method = (_opts.compression ? 8 : 0), flags = 0; + var desc = false; + if(desc) flags |= 8; + var i = 0, j = 0; + + var start_cd = 0, fcnt = 0; + var root = cfb.FullPaths[0], fp = root, fi = cfb.FileIndex[0]; + var crcs = []; + var sz_cd = 0; + + for(i = 1; i < cfb.FullPaths.length; ++i) { + fp = cfb.FullPaths[i].slice(root.length); fi = cfb.FileIndex[i]; + if(!fi.size || !fi.content || fp == "\u0001Sh33tJ5") continue; + var start = start_cd; + + /* TODO: CP437 filename */ + var namebuf = new_buf(fp.length); + for(j = 0; j < fp.length; ++j) namebuf.write_shift(1, fp.charCodeAt(j) & 0x7F); + namebuf = namebuf.slice(0, namebuf.l); + crcs[fcnt] = CRC32.buf(/*::((*/fi.content/*::||[]):any)*/, 0); + + var outbuf = fi.content/*::||[]*/; + if(method == 8) outbuf = _deflateRawSync(outbuf); + + /* local file header */ + o = new_buf(30); + o.write_shift(4, 0x04034b50); + o.write_shift(2, 20); + o.write_shift(2, flags); + o.write_shift(2, method); + /* TODO: last mod file time/date */ + if(fi.mt) write_dos_date(o, fi.mt); + else o.write_shift(4, 0); + o.write_shift(-4, (flags & 8) ? 0 : crcs[fcnt]); + o.write_shift(4, (flags & 8) ? 0 : outbuf.length); + o.write_shift(4, (flags & 8) ? 0 : /*::(*/fi.content/*::||[])*/.length); + o.write_shift(2, namebuf.length); + o.write_shift(2, 0); + + start_cd += o.length; + out.push(o); + start_cd += namebuf.length; + out.push(namebuf); + + /* TODO: extra fields? */ + + /* TODO: encryption header ? */ + + start_cd += outbuf.length; + out.push(outbuf); + + /* data descriptor */ + if(flags & 8) { + o = new_buf(12); + o.write_shift(-4, crcs[fcnt]); + o.write_shift(4, outbuf.length); + o.write_shift(4, /*::(*/fi.content/*::||[])*/.length); + start_cd += o.l; + out.push(o); + } + + /* central directory */ + o = new_buf(46); + o.write_shift(4, 0x02014b50); + o.write_shift(2, 0); + o.write_shift(2, 20); + o.write_shift(2, flags); + o.write_shift(2, method); + o.write_shift(4, 0); /* TODO: last mod file time/date */ + o.write_shift(-4, crcs[fcnt]); + + o.write_shift(4, outbuf.length); + o.write_shift(4, /*::(*/fi.content/*::||[])*/.length); + o.write_shift(2, namebuf.length); + o.write_shift(2, 0); + o.write_shift(2, 0); + o.write_shift(2, 0); + o.write_shift(2, 0); + o.write_shift(4, 0); + o.write_shift(4, start); + + sz_cd += o.l; + cdirs.push(o); + sz_cd += namebuf.length; + cdirs.push(namebuf); + ++fcnt; + } + + /* end of central directory */ + o = new_buf(22); + o.write_shift(4, 0x06054b50); + o.write_shift(2, 0); + o.write_shift(2, 0); + o.write_shift(2, fcnt); + o.write_shift(2, fcnt); + o.write_shift(4, sz_cd); + o.write_shift(4, start_cd); + o.write_shift(2, 0); + + return bconcat(([bconcat((out/*:any*/)), bconcat(cdirs), o]/*:any*/)); +} +var ContentTypeMap = ({ + "htm": "text/html", + "xml": "text/xml", + + "gif": "image/gif", + "jpg": "image/jpeg", + "png": "image/png", + + "mso": "application/x-mso", + "thmx": "application/vnd.ms-officetheme", + "sh33tj5": "application/octet-stream" +}/*:any*/); + +function get_content_type(fi/*:CFBEntry*/, fp/*:string*/)/*:string*/ { + if(fi.ctype) return fi.ctype; + + var ext = fi.name || "", m = ext.match(/\.([^\.]+)$/); + if(m && ContentTypeMap[m[1]]) return ContentTypeMap[m[1]]; + + if(fp) { + m = (ext = fp).match(/[\.\\]([^\.\\])+$/); + if(m && ContentTypeMap[m[1]]) return ContentTypeMap[m[1]]; + } + + return "application/octet-stream"; +} + +/* 76 character chunks TODO: intertwine encoding */ +function write_base64_76(bstr/*:string*/)/*:string*/ { + var data = Base64_encode(bstr); + var o = []; + for(var i = 0; i < data.length; i+= 76) o.push(data.slice(i, i+76)); + return o.join("\r\n") + "\r\n"; +} + +/* +Rules for QP: + - escape =## applies for all non-display characters and literal "=" + - space or tab at end of line must be encoded + - \r\n newlines can be preserved, but bare \r and \n must be escaped + - lines must not exceed 76 characters, use soft breaks =\r\n + +TODO: Some files from word appear to write line extensions with bare equals: + +``` +
*/ = [], split = encoded.split("\r\n"); + for(var si = 0; si < split.length; ++si) { + var str = split[si]; + if(str.length == 0) { o.push(""); continue; } + for(var i = 0; i < str.length;) { + var end = 76; + var tmp = str.slice(i, i + end); + if(tmp.charAt(end - 1) == "=") end --; + else if(tmp.charAt(end - 2) == "=") end -= 2; + else if(tmp.charAt(end - 3) == "=") end -= 3; + tmp = str.slice(i, i + end); + i += end; + if(i < str.length) tmp += "="; + o.push(tmp); + } + } + + return o.join("\r\n"); +} +function parse_quoted_printable(data/*:Array*/)/*:RawBytes*/ { + var o = []; + + /* unify long lines */ + for(var di = 0; di < data.length; ++di) { + var line = data[di]; + while(di <= data.length && line.charAt(line.length - 1) == "=") line = line.slice(0, line.length - 1) + data[++di]; + o.push(line); + } + + /* decode */ + for(var oi = 0; oi < o.length; ++oi) o[oi] = o[oi].replace(/[=][0-9A-Fa-f]{2}/g, function($$) { return String.fromCharCode(parseInt($$.slice(1), 16)); }); + return s2a(o.join("\r\n")); +} + + +function parse_mime(cfb/*:CFBContainer*/, data/*:Array*/, root/*:string*/)/*:void*/ { + var fname = "", cte = "", ctype = "", fdata; + var di = 0; + for(;di < 10; ++di) { + var line = data[di]; + if(!line || line.match(/^\s*$/)) break; + var m = line.match(/^(.*?):\s*([^\s].*)$/); + if(m) switch(m[1].toLowerCase()) { + case "content-location": fname = m[2].trim(); break; + case "content-type": ctype = m[2].trim(); break; + case "content-transfer-encoding": cte = m[2].trim(); break; + } + } + ++di; + switch(cte.toLowerCase()) { + case 'base64': fdata = s2a(Base64_decode(data.slice(di).join(""))); break; + case 'quoted-printable': fdata = parse_quoted_printable(data.slice(di)); break; + default: throw new Error("Unsupported Content-Transfer-Encoding " + cte); + } + var file = cfb_add(cfb, fname.slice(root.length), fdata, {unsafe: true}); + if(ctype) file.ctype = ctype; +} + +function parse_mad(file/*:RawBytes*/, options/*:CFBReadOpts*/)/*:CFBContainer*/ { + if(a2s(file.slice(0,13)).toLowerCase() != "mime-version:") throw new Error("Unsupported MAD header"); + var root = (options && options.root || ""); + // $FlowIgnore + var data = (has_buf && Buffer.isBuffer(file) ? file.toString("binary") : a2s(file)).split("\r\n"); + var di = 0, row = ""; + + /* if root is not specified, scan for the common prefix */ + for(di = 0; di < data.length; ++di) { + row = data[di]; + if(!/^Content-Location:/i.test(row)) continue; + row = row.slice(row.indexOf("file")); + if(!root) root = row.slice(0, row.lastIndexOf("/") + 1); + if(row.slice(0, root.length) == root) continue; + while(root.length > 0) { + root = root.slice(0, root.length - 1); + root = root.slice(0, root.lastIndexOf("/") + 1); + if(row.slice(0,root.length) == root) break; + } + } + + var mboundary = (data[1] || "").match(/boundary="(.*?)"/); + if(!mboundary) throw new Error("MAD cannot find boundary"); + var boundary = "--" + (mboundary[1] || ""); + + var FileIndex/*:CFBFileIndex*/ = [], FullPaths/*:Array*/ = []; + var o = { + FileIndex: FileIndex, + FullPaths: FullPaths + }; + init_cfb(o); + var start_di, fcnt = 0; + for(di = 0; di < data.length; ++di) { + var line = data[di]; + if(line !== boundary && line !== boundary + "--") continue; + if(fcnt++) parse_mime(o, data.slice(start_di, di), root); + start_di = di; + } + return o; +} + +function write_mad(cfb/*:CFBContainer*/, options/*:CFBWriteOpts*/)/*:string*/ { + var opts = options || {}; + var boundary = opts.boundary || "SheetJS"; + boundary = '------=' + boundary; + + var out = [ + 'MIME-Version: 1.0', + 'Content-Type: multipart/related; boundary="' + boundary.slice(2) + '"', + '', + '', + '' + ]; + + var root = cfb.FullPaths[0], fp = root, fi = cfb.FileIndex[0]; + for(var i = 1; i < cfb.FullPaths.length; ++i) { + fp = cfb.FullPaths[i].slice(root.length); + fi = cfb.FileIndex[i]; + if(!fi.size || !fi.content || fp == "\u0001Sh33tJ5") continue; + + /* Normalize filename */ + fp = fp.replace(/[\x00-\x08\x0B\x0C\x0E-\x1F\x7E-\xFF]/g, function(c) { + return "_x" + c.charCodeAt(0).toString(16) + "_"; + }).replace(/[\u0080-\uFFFF]/g, function(u) { + return "_u" + u.charCodeAt(0).toString(16) + "_"; + }); + + /* Extract content as binary string */ + var ca = fi.content; + // $FlowIgnore + var cstr = has_buf && Buffer.isBuffer(ca) ? ca.toString("binary") : a2s(ca); + + /* 4/5 of first 1024 chars ascii -> quoted printable, else base64 */ + var dispcnt = 0, L = Math.min(1024, cstr.length), cc = 0; + for(var csl = 0; csl <= L; ++csl) if((cc=cstr.charCodeAt(csl)) >= 0x20 && cc < 0x80) ++dispcnt; + var qp = dispcnt >= L * 4 / 5; + + out.push(boundary); + out.push('Content-Location: ' + (opts.root || 'file:///C:/SheetJS/') + fp); + out.push('Content-Transfer-Encoding: ' + (qp ? 'quoted-printable' : 'base64')); + out.push('Content-Type: ' + get_content_type(fi, fp)); + out.push(''); + + out.push(qp ? write_quoted_printable(cstr) : write_base64_76(cstr)); + } + out.push(boundary + '--\r\n'); + return out.join("\r\n"); +} +function cfb_new(opts/*:?any*/)/*:CFBContainer*/ { + var o/*:CFBContainer*/ = ({}/*:any*/); + init_cfb(o, opts); + return o; +} + +function cfb_add(cfb/*:CFBContainer*/, name/*:string*/, content/*:?RawBytes*/, opts/*:?any*/)/*:CFBEntry*/ { + var unsafe = opts && opts.unsafe; + if(!unsafe) init_cfb(cfb); + var file = !unsafe && CFB.find(cfb, name); + if(!file) { + var fpath/*:string*/ = cfb.FullPaths[0]; + if(name.slice(0, fpath.length) == fpath) fpath = name; + else { + if(fpath.slice(-1) != "/") fpath += "/"; + fpath = (fpath + name).replace("//","/"); + } + file = ({name: filename(name), type: 2}/*:any*/); + cfb.FileIndex.push(file); + cfb.FullPaths.push(fpath); + if(!unsafe) CFB.utils.cfb_gc(cfb); + } + /*:: if(!file) throw new Error("unreachable"); */ + file.content = (content/*:any*/); + file.size = content ? content.length : 0; + if(opts) { + if(opts.CLSID) file.clsid = opts.CLSID; + if(opts.mt) file.mt = opts.mt; + if(opts.ct) file.ct = opts.ct; + } + return file; +} + +function cfb_del(cfb/*:CFBContainer*/, name/*:string*/)/*:boolean*/ { + init_cfb(cfb); + var file = CFB.find(cfb, name); + if(file) for(var j = 0; j < cfb.FileIndex.length; ++j) if(cfb.FileIndex[j] == file) { + cfb.FileIndex.splice(j, 1); + cfb.FullPaths.splice(j, 1); + return true; + } + return false; +} + +function cfb_mov(cfb/*:CFBContainer*/, old_name/*:string*/, new_name/*:string*/)/*:boolean*/ { + init_cfb(cfb); + var file = CFB.find(cfb, old_name); + if(file) for(var j = 0; j < cfb.FileIndex.length; ++j) if(cfb.FileIndex[j] == file) { + cfb.FileIndex[j].name = filename(new_name); + cfb.FullPaths[j] = new_name; + return true; + } + return false; +} + +function cfb_gc(cfb/*:CFBContainer*/)/*:void*/ { rebuild_cfb(cfb, true); } + +exports.find = find; +exports.read = read; +exports.parse = parse; +exports.write = write; +exports.writeFile = write_file; +exports.utils = { + cfb_new: cfb_new, + cfb_add: cfb_add, + cfb_del: cfb_del, + cfb_mov: cfb_mov, + cfb_gc: cfb_gc, + ReadShift: ReadShift, + CheckField: CheckField, + prep_blob: prep_blob, + bconcat: bconcat, + use_zlib: use_zlib, + _deflateRaw: _deflate, + _inflateRaw: _inflate, + consts: consts +}; + +return exports; +})(); + diff --git a/node_modules/codepage/LICENSE b/node_modules/codepage/LICENSE new file mode 100644 index 000000000..ac1d91a4b --- /dev/null +++ b/node_modules/codepage/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright (C) 2013-present SheetJS LLC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/node_modules/codepage/README.md b/node_modules/codepage/README.md new file mode 100644 index 000000000..b858c9900 --- /dev/null +++ b/node_modules/codepage/README.md @@ -0,0 +1,350 @@ +# js-codepage + +[Codepages](https://en.wikipedia.org/wiki/Codepage) are character encodings. In +many contexts, single- or double-byte character sets are used in lieu of Unicode +encodings. The codepages map between characters and numbers. + +## Setup + +In node: + +```js +var cptable = require('codepage'); +``` + +In the browser: + +```html + + +``` + +Alternatively, use the full version in the dist folder: + +```html + +``` + +The complete set of codepages is large due to some Double Byte Character Set +encodings. A much smaller file that only includes SBCS codepages is provided in +this repo (`sbcs.js`), as well as a file for other projects (`cpexcel.js`) + +If you know which codepages you need, you can include individual scripts for +each codepage. The individual files are provided in the `bits/` directory. +For example, to include only the Mac codepages: + +```html + + + + + + +``` + +All of the browser scripts define and append to the `cptable` object. To rename +the object, edit the `JSVAR` shell variable in `make.sh` and run the script. + +The utilities functions are contained in `cputils.js`, which assumes that the +appropriate codepage scripts were loaded. + +The script will manipulate `module.exports` if available . This is not always +desirable. To prevent the behavior, define `DO_NOT_EXPORT_CODEPAGE`. + +## Usage + +Most codepages are indexed by number. To get the Unicode character for a given +codepoint, use the `dec` property: + +```js +var unicode_cp10000_255 = cptable[10000].dec[255]; // ˇ +``` + +To get the codepoint for a given character, use the `enc` property: + +```js +var cp10000_711 = cptable[10000].enc[String.fromCharCode(711)]; // 255 +``` + +There are a few utilities that deal with strings and buffers: + +```js +var 汇总 = cptable.utils.decode(936, [0xbb,0xe3,0xd7,0xdc]); +var buf = cptable.utils.encode(936, 汇总); +var sushi= cptable.utils.decode(65001, [0xf0,0x9f,0x8d,0xa3]); // 🍣 +var sbuf = cptable.utils.encode(65001, sushi); +``` + +`cptable.utils.encode(CP, data, ofmt)` accepts a String or Array of characters +and returns a representation controlled by `ofmt`: + +- Default output is a Buffer (or Array) of bytes (integers between 0 and 255) +- If `ofmt == 'str'`, return a binary String (byte `i` is `o.charCodeAt(i)`) +- If `ofmt == 'arr'`, return an Array of bytes + +`cptable.utils.decode(CP, data)` accepts a byte String or Array of numbers or +Buffer and returns a JS string. + +## Known Excel Codepages + +A much smaller script, including only the codepages known to be used in Excel, +is available under the name `cpexcel`. It exposes the same variable `cptable` +and is suitable as a drop-in replacement when the full codepage tables are not +needed. + +In node: + +```js +var cptable = require('codepage/dist/cpexcel.full'); +``` + +## Rolling your own script + +The `make.sh` script in the repo can take a manifest and generate JS source. + +Usage: + +```bash +$ bash make.sh path_to_manifest output_file_name JSVAR +``` + +where + +- `JSVAR` is the name of the exported variable (generally `cptable`) +- `output_file_name` is the output file (`cpexcel.js`, `cptable.js`, ...) +- `path_to_manifest` is the path to the manifest file. + +The manifest file is expected to be a CSV with 3 columns: + +``` +,, +``` + +If a source is specified, it will try to download the specified file and parse. +The file format is expected to follow the format from the unicode.org site. +The size should be `1` for a single-byte codepage and `2` for a double-byte +codepage. For mixed codepages (which use some single- and some double-byte +codes), the script assumes the mapping is a prefix code and generates efficient +JS code. + +Generated scripts only include the mapping. `cat` a mapping with `cputils.js` +to produce a complete script like `cpexcel.full.js`. + +## Building the complete script + +This script uses [voc](npm.im/voc). The script to build the codepage tables and +the JS source is `codepage.md`, so building involves `voc codepage.md`. + +## Generated Codepages + +The complete list of codepages can be found in the file `pages.csv`. + +Some codepages are easier to implement algorithmically. Since those character +tables are not generated, there is no corresponding entry (they are "magic"). + +| CP# | Source | Description | +|--------:|:-----------:|:-----------------------------------------------------| +| ` 37` | unicode.org | IBM EBCDIC US-Canada | +| ` 437` | unicode.org | OEM United States | +| ` 500` | unicode.org | IBM EBCDIC International | +| ` 620` | NLS | Mazovia (Polish) MS-DOS | +| ` 708` | Windows 7 | Arabic (ASMO 708) | +| ` 720` | Windows 7 | Arabic (Transparent ASMO); Arabic (DOS) | +| ` 737` | unicode.org | OEM Greek (formerly 437G); Greek (DOS) | +| ` 775` | unicode.org | OEM Baltic; Baltic (DOS) | +| ` 808` | unicode.org | OEM Russian; Cyrillic + Euro symbol | +| ` 850` | unicode.org | OEM Multilingual Latin 1; Western European (DOS) | +| ` 852` | unicode.org | OEM Latin 2; Central European (DOS) | +| ` 855` | unicode.org | OEM Cyrillic (primarily Russian) | +| ` 857` | unicode.org | OEM Turkish; Turkish (DOS) | +| ` 858` | Windows 7 | OEM Multilingual Latin 1 + Euro symbol | +| ` 860` | unicode.org | OEM Portuguese; Portuguese (DOS) | +| ` 861` | unicode.org | OEM Icelandic; Icelandic (DOS) | +| ` 862` | unicode.org | OEM Hebrew; Hebrew (DOS) | +| ` 863` | unicode.org | OEM French Canadian; French Canadian (DOS) | +| ` 864` | unicode.org | OEM Arabic; Arabic (864) | +| ` 865` | unicode.org | OEM Nordic; Nordic (DOS) | +| ` 866` | unicode.org | OEM Russian; Cyrillic (DOS) | +| ` 869` | unicode.org | OEM Modern Greek; Greek, Modern (DOS) | +| ` 870` | Windows 7 | IBM EBCDIC Multilingual/ROECE (Latin 2) | +| ` 872` | unicode.org | OEM Cyrillic (primarily Russian) + Euro Symbol | +| ` 874` | unicode.org | Windows Thai | +| ` 875` | unicode.org | IBM EBCDIC Greek Modern | +| ` 895` | NLS | Kamenický (Czech) MS-DOS | +| ` 932` | unicode.org | Japanese Shift-JIS | +| ` 936` | unicode.org | Simplified Chinese GBK | +| ` 949` | unicode.org | Korean | +| ` 950` | unicode.org | Traditional Chinese Big5 | +| ` 1010` | IBM | IBM EBCDIC French | +| ` 1026` | unicode.org | IBM EBCDIC Turkish (Latin 5) | +| ` 1047` | Windows 7 | IBM EBCDIC Latin 1/Open System | +| ` 1132` | IBM | IBM EBCDIC Lao (1132 / 1133 / 1341) | +| ` 1140` | Windows 7 | IBM EBCDIC US-Canada (037 + Euro symbol) | +| ` 1141` | Windows 7 | IBM EBCDIC Germany (20273 + Euro symbol) | +| ` 1142` | Windows 7 | IBM EBCDIC Denmark-Norway (20277 + Euro symbol) | +| ` 1143` | Windows 7 | IBM EBCDIC Finland-Sweden (20278 + Euro symbol) | +| ` 1144` | Windows 7 | IBM EBCDIC Italy (20280 + Euro symbol) | +| ` 1145` | Windows 7 | IBM EBCDIC Latin America-Spain (20284 + Euro symbol) | +| ` 1146` | Windows 7 | IBM EBCDIC United Kingdom (20285 + Euro symbol) | +| ` 1147` | Windows 7 | IBM EBCDIC France (20297 + Euro symbol) | +| ` 1148` | Windows 7 | IBM EBCDIC International (500 + Euro symbol) | +| ` 1149` | Windows 7 | IBM EBCDIC Icelandic (20871 + Euro symbol) | +| ` 1200` | magic | Unicode UTF-16, little endian (BMP of ISO 10646) | +| ` 1201` | magic | Unicode UTF-16, big endian | +| ` 1250` | unicode.org | Windows Central Europe | +| ` 1251` | unicode.org | Windows Cyrillic | +| ` 1252` | unicode.org | Windows Latin I | +| ` 1253` | unicode.org | Windows Greek | +| ` 1254` | unicode.org | Windows Turkish | +| ` 1255` | unicode.org | Windows Hebrew | +| ` 1256` | unicode.org | Windows Arabic | +| ` 1257` | unicode.org | Windows Baltic | +| ` 1258` | unicode.org | Windows Vietnam | +| ` 1361` | Windows 7 | Korean (Johab) | +| `10000` | unicode.org | MAC Roman | +| `10001` | Windows 7 | Japanese (Mac) | +| `10002` | Windows 7 | MAC Traditional Chinese (Big5) | +| `10003` | Windows 7 | Korean (Mac) | +| `10004` | Windows 7 | Arabic (Mac) | +| `10005` | Windows 7 | Hebrew (Mac) | +| `10006` | unicode.org | Greek (Mac) | +| `10007` | unicode.org | Cyrillic (Mac) | +| `10008` | Windows 7 | MAC Simplified Chinese (GB 2312) | +| `10010` | Windows 7 | Romanian (Mac) | +| `10017` | Windows 7 | Ukrainian (Mac) | +| `10021` | Windows 7 | Thai (Mac) | +| `10029` | unicode.org | MAC Latin 2 (Central European) | +| `10079` | unicode.org | Icelandic (Mac) | +| `10081` | unicode.org | Turkish (Mac) | +| `10082` | Windows 7 | Croatian (Mac) | +| `12000` | magic | Unicode UTF-32, little endian byte order | +| `12001` | magic | Unicode UTF-32, big endian byte order | +| `20000` | Windows 7 | CNS Taiwan (Chinese Traditional) | +| `20001` | Windows 7 | TCA Taiwan | +| `20002` | Windows 7 | ETEN Taiwan (Chinese Traditional) | +| `20003` | Windows 7 | IBM5550 Taiwan | +| `20004` | Windows 7 | TeleText Taiwan | +| `20005` | Windows 7 | Wang Taiwan | +| `20105` | Windows 7 | Western European IA5 (IRV International Alphabet 5) | +| `20106` | Windows 7 | IA5 German (7-bit) | +| `20107` | Windows 7 | IA5 Swedish (7-bit) | +| `20108` | Windows 7 | IA5 Norwegian (7-bit) | +| `20127` | magic | US-ASCII (7-bit) | +| `20261` | Windows 7 | T.61 | +| `20269` | Windows 7 | ISO 6937 Non-Spacing Accent | +| `20273` | Windows 7 | IBM EBCDIC Germany | +| `20277` | Windows 7 | IBM EBCDIC Denmark-Norway | +| `20278` | Windows 7 | IBM EBCDIC Finland-Sweden | +| `20280` | Windows 7 | IBM EBCDIC Italy | +| `20284` | Windows 7 | IBM EBCDIC Latin America-Spain | +| `20285` | Windows 7 | IBM EBCDIC United Kingdom | +| `20290` | Windows 7 | IBM EBCDIC Japanese Katakana Extended | +| `20297` | Windows 7 | IBM EBCDIC France | +| `20420` | Windows 7 | IBM EBCDIC Arabic | +| `20423` | Windows 7 | IBM EBCDIC Greek | +| `20424` | Windows 7 | IBM EBCDIC Hebrew | +| `20833` | Windows 7 | IBM EBCDIC Korean Extended | +| `20838` | Windows 7 | IBM EBCDIC Thai | +| `20866` | Windows 7 | Russian Cyrillic (KOI8-R) | +| `20871` | Windows 7 | IBM EBCDIC Icelandic | +| `20880` | Windows 7 | IBM EBCDIC Cyrillic Russian | +| `20905` | Windows 7 | IBM EBCDIC Turkish | +| `20924` | Windows 7 | IBM EBCDIC Latin 1/Open System (1047 + Euro symbol) | +| `20932` | Windows 7 | Japanese (JIS 0208-1990 and 0212-1990) | +| `20936` | Windows 7 | Simplified Chinese (GB2312-80) | +| `20949` | Windows 7 | Korean Wansung | +| `21025` | Windows 7 | IBM EBCDIC Cyrillic Serbian-Bulgarian | +| `21027` | NLS | Extended/Ext Alpha Lowercase | +| `21866` | Windows 7 | Ukrainian Cyrillic (KOI8-U) | +| `28591` | unicode.org | ISO 8859-1 Latin 1 (Western European) | +| `28592` | unicode.org | ISO 8859-2 Latin 2 (Central European) | +| `28593` | unicode.org | ISO 8859-3 Latin 3 | +| `28594` | unicode.org | ISO 8859-4 Baltic | +| `28595` | unicode.org | ISO 8859-5 Cyrillic | +| `28596` | unicode.org | ISO 8859-6 Arabic | +| `28597` | unicode.org | ISO 8859-7 Greek | +| `28598` | unicode.org | ISO 8859-8 Hebrew (ISO-Visual) | +| `28599` | unicode.org | ISO 8859-9 Turkish | +| `28600` | unicode.org | ISO 8859-10 Latin 6 | +| `28601` | unicode.org | ISO 8859-11 Latin (Thai) | +| `28603` | unicode.org | ISO 8859-13 Latin 7 (Estonian) | +| `28604` | unicode.org | ISO 8859-14 Latin 8 (Celtic) | +| `28605` | unicode.org | ISO 8859-15 Latin 9 | +| `28606` | unicode.org | ISO 8859-15 Latin 10 | +| `29001` | Windows 7 | Europa 3 | +| `38598` | Windows 7 | ISO 8859-8 Hebrew (ISO-Logical) | +| `47451` | unicode.org | Atari ST/TT | +| `50220` | magic | ISO 2022 JIS Japanese with no halfwidth Katakana | +| `50221` | magic | ISO 2022 JIS Japanese with halfwidth Katakana | +| `50222` | magic | ISO 2022 Japanese JIS X 0201-1989 (1 byte Kana-SO/SI)| +| `50225` | magic | ISO 2022 Korean | +| `50227` | magic | ISO 2022 Simplified Chinese | +| `51932` | Windows 7 | EUC Japanese | +| `51936` | Windows 7 | EUC Simplified Chinese | +| `51949` | Windows 7 | EUC Korean | +| `52936` | Windows 7 | HZ-GB2312 Simplified Chinese | +| `54936` | Windows 7 | GB18030 Simplified Chinese (4 byte) | +| `57002` | Windows 7 | ISCII Devanagari | +| `57003` | Windows 7 | ISCII Bengali | +| `57004` | Windows 7 | ISCII Tamil | +| `57005` | Windows 7 | ISCII Telugu | +| `57006` | Windows 7 | ISCII Assamese | +| `57007` | Windows 7 | ISCII Oriya | +| `57008` | Windows 7 | ISCII Kannada | +| `57009` | Windows 7 | ISCII Malayalam | +| `57010` | Windows 7 | ISCII Gujarati | +| `57011` | Windows 7 | ISCII Punjabi | +| `65000` | magic | Unicode (UTF-7) | +| `65001` | magic | Unicode (UTF-8) | + +`unicode.org` refers to the Unicode Consortium Public Mappings, a database of +various mappings between Unicode characters and respective character sets. The +tables are processed by a few scripts in the build process. + +`IBM` refers to the IBM coded character set database. Even though IBM uses a +different numbering scheme from Windows, the IBM numbers are used when there is +no conflict. The tables are manually generated from the symbol manifests. + +`Windows 7` refers to direct inspection of Windows 7 machines using .NET class +`System.Text.Encoding`. The enclosed `MakeEncoding.cs` C# program brute-forces +code pages. `MakeEncoding.cs` deviates from unicode.org in some cases. When they +map a given code to different characters, unicode.org value is used. When +unicode.org does not prescribe a value, `MakeEncoding.cs` value is used. + +`NLS` refers to the National Language Support files supplied in various versions +of Windows. In older versions of Windows (like Windows 98) these files followed +the name pattern `CP_#.NLS`, but newer versions use the name pattern `C_#.NLS`. + +## Testing + +`make test` will run the nodejs-based test. + +To run the in-browser tests, run a local server and go to the `ctest` directory. +`make ctestserv` will start a python `SimpleHTTPServer` server on port 8000. + +To update the browser artifacts, run `make ctest`. + +## Sources + +- [Unicode Consortium Public Mappings](http://www.unicode.org/Public/MAPPINGS/) +- [Windows Code Page Enumeration](http://msdn.microsoft.com/en-us/library/cc195051.aspx) +- [Windows Code Page Identifiers](http://msdn.microsoft.com/en-us/library/windows/desktop/dd317756.aspx) +- [IBM Coded Character Sets](https://www-01.ibm.com/software/globalization/ccsid/ccsid_registered.html) +- [ISO/IEC 2022 / ECMA-35](https://www.ecma-international.org/publications/files/ECMA-ST/Ecma-035.pdf) +- [International Register of Coded Character Sets To Be Used With Escape Sequences](https://www.itscj.ipsj.or.jp/itscj_english/iso-ir/ISO-IR.pdf) +- [Japanese Character Encoding for Internet Messages](https://tools.ietf.org/html/rfc1468) + +## License + +Please consult the attached LICENSE file for details. All rights not explicitly +granted by the Apache 2.0 license are reserved by the Original Author. + +## Badges + +[![Sauce Test Status](https://saucelabs.com/browser-matrix/codepage.svg)](https://saucelabs.com/u/codepage) + +[![Build Status](https://travis-ci.org/SheetJS/js-codepage.svg?branch=master)](https://travis-ci.org/SheetJS/js-codepage) + +[![Coverage Status](http://img.shields.io/coveralls/SheetJS/js-codepage/master.svg)](https://coveralls.io/r/SheetJS/js-codepage?branch=master) + +[![Analytics](https://ga-beacon.appspot.com/UA-36810333-1/SheetJS/js-codepage?pixel)](https://github.com/SheetJS/js-codepage) diff --git a/node_modules/codepage/bits/10000.js b/node_modules/codepage/bits/10000.js new file mode 100644 index 000000000..6537b8275 --- /dev/null +++ b/node_modules/codepage/bits/10000.js @@ -0,0 +1,2 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[10000] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤‹›fifl‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); diff --git a/node_modules/codepage/bits/10001.js b/node_modules/codepage/bits/10001.js new file mode 100644 index 000000000..bf7dc8fe8 --- /dev/null +++ b/node_modules/codepage/bits/10001.js @@ -0,0 +1,115 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[10001] = (function(){ var d = [], e = {}, D = [], j; +D[0] = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€������������������������������� 。「」、・ヲァィゥェォャュョッーアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワン゙゚�����������������������������©™�".split(""); +for(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];} +D[129] = "���������������������������������������������������������������� 、。,.・:;?!゛゜´`¨^ ̄_ヽヾゝゞ〃仝々〆〇ー―‐/\~∥|…‥‘’“”()〔〕[]{}〈〉《》「」『』【】+-±×�÷=≠<>≦≧∞∴♂♀°′″℃¥$¢£%#&*@§☆★○●◎◇◆□■△▲▽▼※〒→←↑↓〓�����������∈∋⊆⊇⊂⊃∪∩��������∧∨¬⇒⇔∀∃�����������∠⊥⌒∂∇≡≒≪≫√∽∝∵∫∬�������ʼn♯♭♪†‡¶����◯���".split(""); +for(j = 0; j != D[129].length; ++j) if(D[129][j].charCodeAt(0) !== 0xFFFD) { e[D[129][j]] = 33024 + j; d[33024 + j] = D[129][j];} +D[130] = "�������������������������������������������������������������������������������0123456789�������ABCDEFGHIJKLMNOPQRSTUVWXYZ�������abcdefghijklmnopqrstuvwxyz����ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをん��������������".split(""); +for(j = 0; j != D[130].length; ++j) if(D[130][j].charCodeAt(0) !== 0xFFFD) { e[D[130][j]] = 33280 + j; d[33280 + j] = D[130][j];} +D[131] = "����������������������������������������������������������������ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミ�ムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶ��������ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ��������αβγδεζηθικλμνξοπρστυφχψω�����������������������������������������".split(""); +for(j = 0; j != D[131].length; ++j) if(D[131][j].charCodeAt(0) !== 0xFFFD) { e[D[131][j]] = 33536 + j; d[33536 + j] = D[131][j];} +D[132] = "����������������������������������������������������������������АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ���������������абвгдеёжзийклмн�опрстуфхцчшщъыьэюя�������������─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂�����������������������������������������������������������������".split(""); +for(j = 0; j != D[132].length; ++j) if(D[132][j].charCodeAt(0) !== 0xFFFD) { e[D[132][j]] = 33792 + j; d[33792 + j] = D[132][j];} +D[133] = "����������������������������������������������������������������①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯⑰⑱⑲⑳���������������������������������������������������������������������������ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩ����������ⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹ�������������������������������������������������������������������".split(""); +for(j = 0; j != D[133].length; ++j) if(D[133][j].charCodeAt(0) !== 0xFFFD) { e[D[133][j]] = 34048 + j; d[34048 + j] = D[133][j];} +D[134] = "����������������������������������������������������������������㎜�㎝���㎡�㎞�㎎�㎏㏄�����������������������������������������������������������������������������№㏍℡��������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[134].length; ++j) if(D[134][j].charCodeAt(0) !== 0xFFFD) { e[D[134][j]] = 34304 + j; d[34304 + j] = D[134][j];} +D[135] = "���������������������������������������������������������������������������㈹�㈱��㈲�����������������������������������������������〝〟�����������������㊤㊥㊦㊧㊨�������㍉㌢㍍㌔����㌃㌶㌘�㌧㍑㍊�㍗㌍�㌣㌦㌻㌫�����������������������������������������������㍾㍽㍼㍻�����������������������".split(""); +for(j = 0; j != D[135].length; ++j) if(D[135][j].charCodeAt(0) !== 0xFFFD) { e[D[135][j]] = 34560 + j; d[34560 + j] = D[135][j];} +D[136] = "����������������������������������������������������������������∮∟⊿��������������������������������������������������������������������������������������������亜唖娃阿哀愛挨姶逢葵茜穐悪握渥旭葦芦鯵梓圧斡扱宛姐虻飴絢綾鮎或粟袷安庵按暗案闇鞍杏以伊位依偉囲夷委威尉惟意慰易椅為畏異移維緯胃萎衣謂違遺医井亥域育郁磯一壱溢逸稲茨芋鰯允印咽員因姻引飲淫胤蔭���".split(""); +for(j = 0; j != D[136].length; ++j) if(D[136][j].charCodeAt(0) !== 0xFFFD) { e[D[136][j]] = 34816 + j; d[34816 + j] = D[136][j];} +D[137] = "����������������������������������������������������������������院陰隠韻吋右宇烏羽迂雨卯鵜窺丑碓臼渦嘘唄欝蔚鰻姥厩浦瓜閏噂云運雲荏餌叡営嬰影映曳栄永泳洩瑛盈穎頴英衛詠鋭液疫益駅悦謁越閲榎厭円�園堰奄宴延怨掩援沿演炎焔煙燕猿縁艶苑薗遠鉛鴛塩於汚甥凹央奥往応押旺横欧殴王翁襖鴬鴎黄岡沖荻億屋憶臆桶牡乙俺卸恩温穏音下化仮何伽価佳加可嘉夏嫁家寡科暇果架歌河火珂禍禾稼箇花苛茄荷華菓蝦課嘩貨迦過霞蚊俄峨我牙画臥芽蛾賀雅餓駕介会解回塊壊廻快怪悔恢懐戒拐改���".split(""); +for(j = 0; j != D[137].length; ++j) if(D[137][j].charCodeAt(0) !== 0xFFFD) { e[D[137][j]] = 35072 + j; d[35072 + j] = D[137][j];} +D[138] = "����������������������������������������������������������������魁晦械海灰界皆絵芥蟹開階貝凱劾外咳害崖慨概涯碍蓋街該鎧骸浬馨蛙垣柿蛎鈎劃嚇各廓拡撹格核殻獲確穫覚角赫較郭閣隔革学岳楽額顎掛笠樫�橿梶鰍潟割喝恰括活渇滑葛褐轄且鰹叶椛樺鞄株兜竃蒲釜鎌噛鴨栢茅萱粥刈苅瓦乾侃冠寒刊勘勧巻喚堪姦完官寛干幹患感慣憾換敢柑桓棺款歓汗漢澗潅環甘監看竿管簡緩缶翰肝艦莞観諌貫還鑑間閑関陥韓館舘丸含岸巌玩癌眼岩翫贋雁頑顔願企伎危喜器基奇嬉寄岐希幾忌揮机旗既期棋棄���".split(""); +for(j = 0; j != D[138].length; ++j) if(D[138][j].charCodeAt(0) !== 0xFFFD) { e[D[138][j]] = 35328 + j; d[35328 + j] = D[138][j];} +D[139] = "����������������������������������������������������������������機帰毅気汽畿祈季稀紀徽規記貴起軌輝飢騎鬼亀偽儀妓宜戯技擬欺犠疑祇義蟻誼議掬菊鞠吉吃喫桔橘詰砧杵黍却客脚虐逆丘久仇休及吸宮弓急救�朽求汲泣灸球究窮笈級糾給旧牛去居巨拒拠挙渠虚許距鋸漁禦魚亨享京供侠僑兇競共凶協匡卿叫喬境峡強彊怯恐恭挟教橋況狂狭矯胸脅興蕎郷鏡響饗驚仰凝尭暁業局曲極玉桐粁僅勤均巾錦斤欣欽琴禁禽筋緊芹菌衿襟謹近金吟銀九倶句区狗玖矩苦躯駆駈駒具愚虞喰空偶寓遇隅串櫛釧屑屈���".split(""); +for(j = 0; j != D[139].length; ++j) if(D[139][j].charCodeAt(0) !== 0xFFFD) { e[D[139][j]] = 35584 + j; d[35584 + j] = D[139][j];} +D[140] = "����������������������������������������������������������������掘窟沓靴轡窪熊隈粂栗繰桑鍬勲君薫訓群軍郡卦袈祁係傾刑兄啓圭珪型契形径恵慶慧憩掲携敬景桂渓畦稽系経継繋罫茎荊蛍計詣警軽頚鶏芸迎鯨�劇戟撃激隙桁傑欠決潔穴結血訣月件倹倦健兼券剣喧圏堅嫌建憲懸拳捲検権牽犬献研硯絹県肩見謙賢軒遣鍵険顕験鹸元原厳幻弦減源玄現絃舷言諺限乎個古呼固姑孤己庫弧戸故枯湖狐糊袴股胡菰虎誇跨鈷雇顧鼓五互伍午呉吾娯後御悟梧檎瑚碁語誤護醐乞鯉交佼侯候倖光公功効勾厚口向���".split(""); +for(j = 0; j != D[140].length; ++j) if(D[140][j].charCodeAt(0) !== 0xFFFD) { e[D[140][j]] = 35840 + j; d[35840 + j] = D[140][j];} +D[141] = "����������������������������������������������������������������后喉坑垢好孔孝宏工巧巷幸広庚康弘恒慌抗拘控攻昂晃更杭校梗構江洪浩港溝甲皇硬稿糠紅紘絞綱耕考肯肱腔膏航荒行衡講貢購郊酵鉱砿鋼閤降�項香高鴻剛劫号合壕拷濠豪轟麹克刻告国穀酷鵠黒獄漉腰甑忽惚骨狛込此頃今困坤墾婚恨懇昏昆根梱混痕紺艮魂些佐叉唆嵯左差査沙瑳砂詐鎖裟坐座挫債催再最哉塞妻宰彩才採栽歳済災采犀砕砦祭斎細菜裁載際剤在材罪財冴坂阪堺榊肴咲崎埼碕鷺作削咋搾昨朔柵窄策索錯桜鮭笹匙冊刷���".split(""); +for(j = 0; j != D[141].length; ++j) if(D[141][j].charCodeAt(0) !== 0xFFFD) { e[D[141][j]] = 36096 + j; d[36096 + j] = D[141][j];} +D[142] = "����������������������������������������������������������������察拶撮擦札殺薩雑皐鯖捌錆鮫皿晒三傘参山惨撒散桟燦珊産算纂蚕讃賛酸餐斬暫残仕仔伺使刺司史嗣四士始姉姿子屍市師志思指支孜斯施旨枝止�死氏獅祉私糸紙紫肢脂至視詞詩試誌諮資賜雌飼歯事似侍児字寺慈持時次滋治爾璽痔磁示而耳自蒔辞汐鹿式識鴫竺軸宍雫七叱執失嫉室悉湿漆疾質実蔀篠偲柴芝屡蕊縞舎写射捨赦斜煮社紗者謝車遮蛇邪借勺尺杓灼爵酌釈錫若寂弱惹主取守手朱殊狩珠種腫趣酒首儒受呪寿授樹綬需囚収周���".split(""); +for(j = 0; j != D[142].length; ++j) if(D[142][j].charCodeAt(0) !== 0xFFFD) { e[D[142][j]] = 36352 + j; d[36352 + j] = D[142][j];} +D[143] = "����������������������������������������������������������������宗就州修愁拾洲秀秋終繍習臭舟蒐衆襲讐蹴輯週酋酬集醜什住充十従戎柔汁渋獣縦重銃叔夙宿淑祝縮粛塾熟出術述俊峻春瞬竣舜駿准循旬楯殉淳�準潤盾純巡遵醇順処初所暑曙渚庶緒署書薯藷諸助叙女序徐恕鋤除傷償勝匠升召哨商唱嘗奨妾娼宵将小少尚庄床廠彰承抄招掌捷昇昌昭晶松梢樟樵沼消渉湘焼焦照症省硝礁祥称章笑粧紹肖菖蒋蕉衝裳訟証詔詳象賞醤鉦鍾鐘障鞘上丈丞乗冗剰城場壌嬢常情擾条杖浄状畳穣蒸譲醸錠嘱埴飾���".split(""); +for(j = 0; j != D[143].length; ++j) if(D[143][j].charCodeAt(0) !== 0xFFFD) { e[D[143][j]] = 36608 + j; d[36608 + j] = D[143][j];} +D[144] = "����������������������������������������������������������������拭植殖燭織職色触食蝕辱尻伸信侵唇娠寝審心慎振新晋森榛浸深申疹真神秦紳臣芯薪親診身辛進針震人仁刃塵壬尋甚尽腎訊迅陣靭笥諏須酢図厨�逗吹垂帥推水炊睡粋翠衰遂酔錐錘随瑞髄崇嵩数枢趨雛据杉椙菅頗雀裾澄摺寸世瀬畝是凄制勢姓征性成政整星晴棲栖正清牲生盛精聖声製西誠誓請逝醒青静斉税脆隻席惜戚斥昔析石積籍績脊責赤跡蹟碩切拙接摂折設窃節説雪絶舌蝉仙先千占宣専尖川戦扇撰栓栴泉浅洗染潜煎煽旋穿箭線���".split(""); +for(j = 0; j != D[144].length; ++j) if(D[144][j].charCodeAt(0) !== 0xFFFD) { e[D[144][j]] = 36864 + j; d[36864 + j] = D[144][j];} +D[145] = "����������������������������������������������������������������繊羨腺舛船薦詮賎践選遷銭銑閃鮮前善漸然全禅繕膳糎噌塑岨措曾曽楚狙疏疎礎祖租粗素組蘇訴阻遡鼠僧創双叢倉喪壮奏爽宋層匝惣想捜掃挿掻�操早曹巣槍槽漕燥争痩相窓糟総綜聡草荘葬蒼藻装走送遭鎗霜騒像増憎臓蔵贈造促側則即息捉束測足速俗属賊族続卒袖其揃存孫尊損村遜他多太汰詑唾堕妥惰打柁舵楕陀駄騨体堆対耐岱帯待怠態戴替泰滞胎腿苔袋貸退逮隊黛鯛代台大第醍題鷹滝瀧卓啄宅托択拓沢濯琢託鐸濁諾茸凧蛸只���".split(""); +for(j = 0; j != D[145].length; ++j) if(D[145][j].charCodeAt(0) !== 0xFFFD) { e[D[145][j]] = 37120 + j; d[37120 + j] = D[145][j];} +D[146] = "����������������������������������������������������������������叩但達辰奪脱巽竪辿棚谷狸鱈樽誰丹単嘆坦担探旦歎淡湛炭短端箪綻耽胆蛋誕鍛団壇弾断暖檀段男談値知地弛恥智池痴稚置致蜘遅馳築畜竹筑蓄�逐秩窒茶嫡着中仲宙忠抽昼柱注虫衷註酎鋳駐樗瀦猪苧著貯丁兆凋喋寵帖帳庁弔張彫徴懲挑暢朝潮牒町眺聴脹腸蝶調諜超跳銚長頂鳥勅捗直朕沈珍賃鎮陳津墜椎槌追鎚痛通塚栂掴槻佃漬柘辻蔦綴鍔椿潰坪壷嬬紬爪吊釣鶴亭低停偵剃貞呈堤定帝底庭廷弟悌抵挺提梯汀碇禎程締艇訂諦蹄逓���".split(""); +for(j = 0; j != D[146].length; ++j) if(D[146][j].charCodeAt(0) !== 0xFFFD) { e[D[146][j]] = 37376 + j; d[37376 + j] = D[146][j];} +D[147] = "����������������������������������������������������������������邸鄭釘鼎泥摘擢敵滴的笛適鏑溺哲徹撤轍迭鉄典填天展店添纏甜貼転顛点伝殿澱田電兎吐堵塗妬屠徒斗杜渡登菟賭途都鍍砥砺努度土奴怒倒党冬�凍刀唐塔塘套宕島嶋悼投搭東桃梼棟盗淘湯涛灯燈当痘祷等答筒糖統到董蕩藤討謄豆踏逃透鐙陶頭騰闘働動同堂導憧撞洞瞳童胴萄道銅峠鴇匿得徳涜特督禿篤毒独読栃橡凸突椴届鳶苫寅酉瀞噸屯惇敦沌豚遁頓呑曇鈍奈那内乍凪薙謎灘捺鍋楢馴縄畷南楠軟難汝二尼弐迩匂賑肉虹廿日乳入���".split(""); +for(j = 0; j != D[147].length; ++j) if(D[147][j].charCodeAt(0) !== 0xFFFD) { e[D[147][j]] = 37632 + j; d[37632 + j] = D[147][j];} +D[148] = "����������������������������������������������������������������如尿韮任妊忍認濡禰祢寧葱猫熱年念捻撚燃粘乃廼之埜嚢悩濃納能脳膿農覗蚤巴把播覇杷波派琶破婆罵芭馬俳廃拝排敗杯盃牌背肺輩配倍培媒梅�楳煤狽買売賠陪這蝿秤矧萩伯剥博拍柏泊白箔粕舶薄迫曝漠爆縛莫駁麦函箱硲箸肇筈櫨幡肌畑畠八鉢溌発醗髪伐罰抜筏閥鳩噺塙蛤隼伴判半反叛帆搬斑板氾汎版犯班畔繁般藩販範釆煩頒飯挽晩番盤磐蕃蛮匪卑否妃庇彼悲扉批披斐比泌疲皮碑秘緋罷肥被誹費避非飛樋簸備尾微枇毘琵眉美���".split(""); +for(j = 0; j != D[148].length; ++j) if(D[148][j].charCodeAt(0) !== 0xFFFD) { e[D[148][j]] = 37888 + j; d[37888 + j] = D[148][j];} +D[149] = "����������������������������������������������������������������鼻柊稗匹疋髭彦膝菱肘弼必畢筆逼桧姫媛紐百謬俵彪標氷漂瓢票表評豹廟描病秒苗錨鋲蒜蛭鰭品彬斌浜瀕貧賓頻敏瓶不付埠夫婦富冨布府怖扶敷�斧普浮父符腐膚芙譜負賦赴阜附侮撫武舞葡蕪部封楓風葺蕗伏副復幅服福腹複覆淵弗払沸仏物鮒分吻噴墳憤扮焚奮粉糞紛雰文聞丙併兵塀幣平弊柄並蔽閉陛米頁僻壁癖碧別瞥蔑箆偏変片篇編辺返遍便勉娩弁鞭保舗鋪圃捕歩甫補輔穂募墓慕戊暮母簿菩倣俸包呆報奉宝峰峯崩庖抱捧放方朋���".split(""); +for(j = 0; j != D[149].length; ++j) if(D[149][j].charCodeAt(0) !== 0xFFFD) { e[D[149][j]] = 38144 + j; d[38144 + j] = D[149][j];} +D[150] = "����������������������������������������������������������������法泡烹砲縫胞芳萌蓬蜂褒訪豊邦鋒飽鳳鵬乏亡傍剖坊妨帽忘忙房暴望某棒冒紡肪膨謀貌貿鉾防吠頬北僕卜墨撲朴牧睦穆釦勃没殆堀幌奔本翻凡盆�摩磨魔麻埋妹昧枚毎哩槙幕膜枕鮪柾鱒桝亦俣又抹末沫迄侭繭麿万慢満漫蔓味未魅巳箕岬密蜜湊蓑稔脈妙粍民眠務夢無牟矛霧鵡椋婿娘冥名命明盟迷銘鳴姪牝滅免棉綿緬面麺摸模茂妄孟毛猛盲網耗蒙儲木黙目杢勿餅尤戻籾貰問悶紋門匁也冶夜爺耶野弥矢厄役約薬訳躍靖柳薮鑓愉愈油癒���".split(""); +for(j = 0; j != D[150].length; ++j) if(D[150][j].charCodeAt(0) !== 0xFFFD) { e[D[150][j]] = 38400 + j; d[38400 + j] = D[150][j];} +D[151] = "����������������������������������������������������������������諭輸唯佑優勇友宥幽悠憂揖有柚湧涌猶猷由祐裕誘遊邑郵雄融夕予余与誉輿預傭幼妖容庸揚揺擁曜楊様洋溶熔用窯羊耀葉蓉要謡踊遥陽養慾抑欲�沃浴翌翼淀羅螺裸来莱頼雷洛絡落酪乱卵嵐欄濫藍蘭覧利吏履李梨理璃痢裏裡里離陸律率立葎掠略劉流溜琉留硫粒隆竜龍侶慮旅虜了亮僚両凌寮料梁涼猟療瞭稜糧良諒遼量陵領力緑倫厘林淋燐琳臨輪隣鱗麟瑠塁涙累類令伶例冷励嶺怜玲礼苓鈴隷零霊麗齢暦歴列劣烈裂廉恋憐漣煉簾練聯���".split(""); +for(j = 0; j != D[151].length; ++j) if(D[151][j].charCodeAt(0) !== 0xFFFD) { e[D[151][j]] = 38656 + j; d[38656 + j] = D[151][j];} +D[152] = "����������������������������������������������������������������蓮連錬呂魯櫓炉賂路露労婁廊弄朗楼榔浪漏牢狼篭老聾蝋郎六麓禄肋録論倭和話歪賄脇惑枠鷲亙亘鰐詫藁蕨椀湾碗腕��������������������������������������������弌丐丕个丱丶丼丿乂乖乘亂亅豫亊舒弍于亞亟亠亢亰亳亶从仍仄仆仂仗仞仭仟价伉佚估佛佝佗佇佶侈侏侘佻佩佰侑佯來侖儘俔俟俎俘俛俑俚俐俤俥倚倨倔倪倥倅伜俶倡倩倬俾俯們倆偃假會偕偐偈做偖偬偸傀傚傅傴傲���".split(""); +for(j = 0; j != D[152].length; ++j) if(D[152][j].charCodeAt(0) !== 0xFFFD) { e[D[152][j]] = 38912 + j; d[38912 + j] = D[152][j];} +D[153] = "����������������������������������������������������������������僉僊傳僂僖僞僥僭僣僮價僵儉儁儂儖儕儔儚儡儺儷儼儻儿兀兒兌兔兢竸兩兪兮冀冂囘册冉冏冑冓冕冖冤冦冢冩冪冫决冱冲冰况冽凅凉凛几處凩凭�凰凵凾刄刋刔刎刧刪刮刳刹剏剄剋剌剞剔剪剴剩剳剿剽劍劔劒剱劈劑辨辧劬劭劼劵勁勍勗勞勣勦飭勠勳勵勸勹匆匈甸匍匐匏匕匚匣匯匱匳匸區卆卅丗卉卍凖卞卩卮夘卻卷厂厖厠厦厥厮厰厶參簒雙叟曼燮叮叨叭叺吁吽呀听吭吼吮吶吩吝呎咏呵咎呟呱呷呰咒呻咀呶咄咐咆哇咢咸咥咬哄哈咨���".split(""); +for(j = 0; j != D[153].length; ++j) if(D[153][j].charCodeAt(0) !== 0xFFFD) { e[D[153][j]] = 39168 + j; d[39168 + j] = D[153][j];} +D[154] = "����������������������������������������������������������������咫哂咤咾咼哘哥哦唏唔哽哮哭哺哢唹啀啣啌售啜啅啖啗唸唳啝喙喀咯喊喟啻啾喘喞單啼喃喩喇喨嗚嗅嗟嗄嗜嗤嗔嘔嗷嘖嗾嗽嘛嗹噎噐營嘴嘶嘲嘸�噫噤嘯噬噪嚆嚀嚊嚠嚔嚏嚥嚮嚶嚴囂嚼囁囃囀囈囎囑囓囗囮囹圀囿圄圉圈國圍圓團圖嗇圜圦圷圸坎圻址坏坩埀垈坡坿垉垓垠垳垤垪垰埃埆埔埒埓堊埖埣堋堙堝塲堡塢塋塰毀塒堽塹墅墹墟墫墺壞墻墸墮壅壓壑壗壙壘壥壜壤壟壯壺壹壻壼壽夂夊夐夛梦夥夬夭夲夸夾竒奕奐奎奚奘奢奠奧奬奩���".split(""); +for(j = 0; j != D[154].length; ++j) if(D[154][j].charCodeAt(0) !== 0xFFFD) { e[D[154][j]] = 39424 + j; d[39424 + j] = D[154][j];} +D[155] = "����������������������������������������������������������������奸妁妝佞侫妣妲姆姨姜妍姙姚娥娟娑娜娉娚婀婬婉娵娶婢婪媚媼媾嫋嫂媽嫣嫗嫦嫩嫖嫺嫻嬌嬋嬖嬲嫐嬪嬶嬾孃孅孀孑孕孚孛孥孩孰孳孵學斈孺宀�它宦宸寃寇寉寔寐寤實寢寞寥寫寰寶寳尅將專對尓尠尢尨尸尹屁屆屎屓屐屏孱屬屮乢屶屹岌岑岔妛岫岻岶岼岷峅岾峇峙峩峽峺峭嶌峪崋崕崗嵜崟崛崑崔崢崚崙崘嵌嵒嵎嵋嵬嵳嵶嶇嶄嶂嶢嶝嶬嶮嶽嶐嶷嶼巉巍巓巒巖巛巫已巵帋帚帙帑帛帶帷幄幃幀幎幗幔幟幢幤幇幵并幺麼广庠廁廂廈廐廏���".split(""); +for(j = 0; j != D[155].length; ++j) if(D[155][j].charCodeAt(0) !== 0xFFFD) { e[D[155][j]] = 39680 + j; d[39680 + j] = D[155][j];} +D[156] = "����������������������������������������������������������������廖廣廝廚廛廢廡廨廩廬廱廳廰廴廸廾弃弉彝彜弋弑弖弩弭弸彁彈彌彎弯彑彖彗彙彡彭彳彷徃徂彿徊很徑徇從徙徘徠徨徭徼忖忻忤忸忱忝悳忿怡恠�怙怐怩怎怱怛怕怫怦怏怺恚恁恪恷恟恊恆恍恣恃恤恂恬恫恙悁悍惧悃悚悄悛悖悗悒悧悋惡悸惠惓悴忰悽惆悵惘慍愕愆惶惷愀惴惺愃愡惻惱愍愎慇愾愨愧慊愿愼愬愴愽慂慄慳慷慘慙慚慫慴慯慥慱慟慝慓慵憙憖憇憬憔憚憊憑憫憮懌懊應懷懈懃懆憺懋罹懍懦懣懶懺懴懿懽懼懾戀戈戉戍戌戔戛���".split(""); +for(j = 0; j != D[156].length; ++j) if(D[156][j].charCodeAt(0) !== 0xFFFD) { e[D[156][j]] = 39936 + j; d[39936 + j] = D[156][j];} +D[157] = "����������������������������������������������������������������戞戡截戮戰戲戳扁扎扞扣扛扠扨扼抂抉找抒抓抖拔抃抔拗拑抻拏拿拆擔拈拜拌拊拂拇抛拉挌拮拱挧挂挈拯拵捐挾捍搜捏掖掎掀掫捶掣掏掉掟掵捫�捩掾揩揀揆揣揉插揶揄搖搴搆搓搦搶攝搗搨搏摧摯摶摎攪撕撓撥撩撈撼據擒擅擇撻擘擂擱擧舉擠擡抬擣擯攬擶擴擲擺攀擽攘攜攅攤攣攫攴攵攷收攸畋效敖敕敍敘敞敝敲數斂斃變斛斟斫斷旃旆旁旄旌旒旛旙无旡旱杲昊昃旻杳昵昶昴昜晏晄晉晁晞晝晤晧晨晟晢晰暃暈暎暉暄暘暝曁暹曉暾暼���".split(""); +for(j = 0; j != D[157].length; ++j) if(D[157][j].charCodeAt(0) !== 0xFFFD) { e[D[157][j]] = 40192 + j; d[40192 + j] = D[157][j];} +D[158] = "����������������������������������������������������������������曄暸曖曚曠昿曦曩曰曵曷朏朖朞朦朧霸朮朿朶杁朸朷杆杞杠杙杣杤枉杰枩杼杪枌枋枦枡枅枷柯枴柬枳柩枸柤柞柝柢柮枹柎柆柧檜栞框栩桀桍栲桎�梳栫桙档桷桿梟梏梭梔條梛梃檮梹桴梵梠梺椏梍桾椁棊椈棘椢椦棡椌棍棔棧棕椶椒椄棗棣椥棹棠棯椨椪椚椣椡棆楹楷楜楸楫楔楾楮椹楴椽楙椰楡楞楝榁楪榲榮槐榿槁槓榾槎寨槊槝榻槃榧樮榑榠榜榕榴槞槨樂樛槿權槹槲槧樅榱樞槭樔槫樊樒櫁樣樓橄樌橲樶橸橇橢橙橦橈樸樢檐檍檠檄檢檣���".split(""); +for(j = 0; j != D[158].length; ++j) if(D[158][j].charCodeAt(0) !== 0xFFFD) { e[D[158][j]] = 40448 + j; d[40448 + j] = D[158][j];} +D[159] = "����������������������������������������������������������������檗蘗檻櫃櫂檸檳檬櫞櫑櫟檪櫚櫪櫻欅蘖櫺欒欖鬱欟欸欷盜欹飮歇歃歉歐歙歔歛歟歡歸歹歿殀殄殃殍殘殕殞殤殪殫殯殲殱殳殷殼毆毋毓毟毬毫毳毯�麾氈氓气氛氤氣汞汕汢汪沂沍沚沁沛汾汨汳沒沐泄泱泓沽泗泅泝沮沱沾沺泛泯泙泪洟衍洶洫洽洸洙洵洳洒洌浣涓浤浚浹浙涎涕濤涅淹渕渊涵淇淦涸淆淬淞淌淨淒淅淺淙淤淕淪淮渭湮渮渙湲湟渾渣湫渫湶湍渟湃渺湎渤滿渝游溂溪溘滉溷滓溽溯滄溲滔滕溏溥滂溟潁漑灌滬滸滾漿滲漱滯漲滌���".split(""); +for(j = 0; j != D[159].length; ++j) if(D[159][j].charCodeAt(0) !== 0xFFFD) { e[D[159][j]] = 40704 + j; d[40704 + j] = D[159][j];} +D[224] = "����������������������������������������������������������������漾漓滷澆潺潸澁澀潯潛濳潭澂潼潘澎澑濂潦澳澣澡澤澹濆澪濟濕濬濔濘濱濮濛瀉瀋濺瀑瀁瀏濾瀛瀚潴瀝瀘瀟瀰瀾瀲灑灣炙炒炯烱炬炸炳炮烟烋烝�烙焉烽焜焙煥煕熈煦煢煌煖煬熏燻熄熕熨熬燗熹熾燒燉燔燎燠燬燧燵燼燹燿爍爐爛爨爭爬爰爲爻爼爿牀牆牋牘牴牾犂犁犇犒犖犢犧犹犲狃狆狄狎狒狢狠狡狹狷倏猗猊猜猖猝猴猯猩猥猾獎獏默獗獪獨獰獸獵獻獺珈玳珎玻珀珥珮珞璢琅瑯琥珸琲琺瑕琿瑟瑙瑁瑜瑩瑰瑣瑪瑶瑾璋璞璧瓊瓏瓔珱���".split(""); +for(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];} +D[225] = "����������������������������������������������������������������瓠瓣瓧瓩瓮瓲瓰瓱瓸瓷甄甃甅甌甎甍甕甓甞甦甬甼畄畍畊畉畛畆畚畩畤畧畫畭畸當疆疇畴疊疉疂疔疚疝疥疣痂疳痃疵疽疸疼疱痍痊痒痙痣痞痾痿�痼瘁痰痺痲痳瘋瘍瘉瘟瘧瘠瘡瘢瘤瘴瘰瘻癇癈癆癜癘癡癢癨癩癪癧癬癰癲癶癸發皀皃皈皋皎皖皓皙皚皰皴皸皹皺盂盍盖盒盞盡盥盧盪蘯盻眈眇眄眩眤眞眥眦眛眷眸睇睚睨睫睛睥睿睾睹瞎瞋瞑瞠瞞瞰瞶瞹瞿瞼瞽瞻矇矍矗矚矜矣矮矼砌砒礦砠礪硅碎硴碆硼碚碌碣碵碪碯磑磆磋磔碾碼磅磊磬���".split(""); +for(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];} +D[226] = "����������������������������������������������������������������磧磚磽磴礇礒礑礙礬礫祀祠祗祟祚祕祓祺祿禊禝禧齋禪禮禳禹禺秉秕秧秬秡秣稈稍稘稙稠稟禀稱稻稾稷穃穗穉穡穢穩龝穰穹穽窈窗窕窘窖窩竈窰�窶竅竄窿邃竇竊竍竏竕竓站竚竝竡竢竦竭竰笂笏笊笆笳笘笙笞笵笨笶筐筺笄筍笋筌筅筵筥筴筧筰筱筬筮箝箘箟箍箜箚箋箒箏筝箙篋篁篌篏箴篆篝篩簑簔篦篥籠簀簇簓篳篷簗簍篶簣簧簪簟簷簫簽籌籃籔籏籀籐籘籟籤籖籥籬籵粃粐粤粭粢粫粡粨粳粲粱粮粹粽糀糅糂糘糒糜糢鬻糯糲糴糶糺紆���".split(""); +for(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];} +D[227] = "����������������������������������������������������������������紂紜紕紊絅絋紮紲紿紵絆絳絖絎絲絨絮絏絣經綉絛綏絽綛綺綮綣綵緇綽綫總綢綯緜綸綟綰緘緝緤緞緻緲緡縅縊縣縡縒縱縟縉縋縢繆繦縻縵縹繃縷�縲縺繧繝繖繞繙繚繹繪繩繼繻纃緕繽辮繿纈纉續纒纐纓纔纖纎纛纜缸缺罅罌罍罎罐网罕罔罘罟罠罨罩罧罸羂羆羃羈羇羌羔羞羝羚羣羯羲羹羮羶羸譱翅翆翊翕翔翡翦翩翳翹飜耆耄耋耒耘耙耜耡耨耿耻聊聆聒聘聚聟聢聨聳聲聰聶聹聽聿肄肆肅肛肓肚肭冐肬胛胥胙胝胄胚胖脉胯胱脛脩脣脯腋���".split(""); +for(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];} +D[228] = "����������������������������������������������������������������隋腆脾腓腑胼腱腮腥腦腴膃膈膊膀膂膠膕膤膣腟膓膩膰膵膾膸膽臀臂膺臉臍臑臙臘臈臚臟臠臧臺臻臾舁舂舅與舊舍舐舖舩舫舸舳艀艙艘艝艚艟艤�艢艨艪艫舮艱艷艸艾芍芒芫芟芻芬苡苣苟苒苴苳苺莓范苻苹苞茆苜茉苙茵茴茖茲茱荀茹荐荅茯茫茗茘莅莚莪莟莢莖茣莎莇莊荼莵荳荵莠莉莨菴萓菫菎菽萃菘萋菁菷萇菠菲萍萢萠莽萸蔆菻葭萪萼蕚蒄葷葫蒭葮蒂葩葆萬葯葹萵蓊葢蒹蒿蒟蓙蓍蒻蓚蓐蓁蓆蓖蒡蔡蓿蓴蔗蔘蔬蔟蔕蔔蓼蕀蕣蕘蕈���".split(""); +for(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];} +D[229] = "����������������������������������������������������������������蕁蘂蕋蕕薀薤薈薑薊薨蕭薔薛藪薇薜蕷蕾薐藉薺藏薹藐藕藝藥藜藹蘊蘓蘋藾藺蘆蘢蘚蘰蘿虍乕虔號虧虱蚓蚣蚩蚪蚋蚌蚶蚯蛄蛆蚰蛉蠣蚫蛔蛞蛩蛬�蛟蛛蛯蜒蜆蜈蜀蜃蛻蜑蜉蜍蛹蜊蜴蜿蜷蜻蜥蜩蜚蝠蝟蝸蝌蝎蝴蝗蝨蝮蝙蝓蝣蝪蠅螢螟螂螯蟋螽蟀蟐雖螫蟄螳蟇蟆螻蟯蟲蟠蠏蠍蟾蟶蟷蠎蟒蠑蠖蠕蠢蠡蠱蠶蠹蠧蠻衄衂衒衙衞衢衫袁衾袞衵衽袵衲袂袗袒袮袙袢袍袤袰袿袱裃裄裔裘裙裝裹褂裼裴裨裲褄褌褊褓襃褞褥褪褫襁襄褻褶褸襌褝襠襞���".split(""); +for(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];} +D[230] = "����������������������������������������������������������������襦襤襭襪襯襴襷襾覃覈覊覓覘覡覩覦覬覯覲覺覽覿觀觚觜觝觧觴觸訃訖訐訌訛訝訥訶詁詛詒詆詈詼詭詬詢誅誂誄誨誡誑誥誦誚誣諄諍諂諚諫諳諧�諤諱謔諠諢諷諞諛謌謇謚諡謖謐謗謠謳鞫謦謫謾謨譁譌譏譎證譖譛譚譫譟譬譯譴譽讀讌讎讒讓讖讙讚谺豁谿豈豌豎豐豕豢豬豸豺貂貉貅貊貍貎貔豼貘戝貭貪貽貲貳貮貶賈賁賤賣賚賽賺賻贄贅贊贇贏贍贐齎贓賍贔贖赧赭赱赳趁趙跂趾趺跏跚跖跌跛跋跪跫跟跣跼踈踉跿踝踞踐踟蹂踵踰踴蹊���".split(""); +for(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];} +D[231] = "����������������������������������������������������������������蹇蹉蹌蹐蹈蹙蹤蹠踪蹣蹕蹶蹲蹼躁躇躅躄躋躊躓躑躔躙躪躡躬躰軆躱躾軅軈軋軛軣軼軻軫軾輊輅輕輒輙輓輜輟輛輌輦輳輻輹轅轂輾轌轉轆轎轗轜�轢轣轤辜辟辣辭辯辷迚迥迢迪迯邇迴逅迹迺逑逕逡逍逞逖逋逧逶逵逹迸遏遐遑遒逎遉逾遖遘遞遨遯遶隨遲邂遽邁邀邊邉邏邨邯邱邵郢郤扈郛鄂鄒鄙鄲鄰酊酖酘酣酥酩酳酲醋醉醂醢醫醯醪醵醴醺釀釁釉釋釐釖釟釡釛釼釵釶鈞釿鈔鈬鈕鈑鉞鉗鉅鉉鉤鉈銕鈿鉋鉐銜銖銓銛鉚鋏銹銷鋩錏鋺鍄錮���".split(""); +for(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];} +D[232] = "����������������������������������������������������������������錙錢錚錣錺錵錻鍜鍠鍼鍮鍖鎰鎬鎭鎔鎹鏖鏗鏨鏥鏘鏃鏝鏐鏈鏤鐚鐔鐓鐃鐇鐐鐶鐫鐵鐡鐺鑁鑒鑄鑛鑠鑢鑞鑪鈩鑰鑵鑷鑽鑚鑼鑾钁鑿閂閇閊閔閖閘閙�閠閨閧閭閼閻閹閾闊濶闃闍闌闕闔闖關闡闥闢阡阨阮阯陂陌陏陋陷陜陞陝陟陦陲陬隍隘隕隗險隧隱隲隰隴隶隸隹雎雋雉雍襍雜霍雕雹霄霆霈霓霎霑霏霖霙霤霪霰霹霽霾靄靆靈靂靉靜靠靤靦靨勒靫靱靹鞅靼鞁靺鞆鞋鞏鞐鞜鞨鞦鞣鞳鞴韃韆韈韋韜韭齏韲竟韶韵頏頌頸頤頡頷頽顆顏顋顫顯顰���".split(""); +for(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];} +D[233] = "����������������������������������������������������������������顱顴顳颪颯颱颶飄飃飆飩飫餃餉餒餔餘餡餝餞餤餠餬餮餽餾饂饉饅饐饋饑饒饌饕馗馘馥馭馮馼駟駛駝駘駑駭駮駱駲駻駸騁騏騅駢騙騫騷驅驂驀驃�騾驕驍驛驗驟驢驥驤驩驫驪骭骰骼髀髏髑髓體髞髟髢髣髦髯髫髮髴髱髷髻鬆鬘鬚鬟鬢鬣鬥鬧鬨鬩鬪鬮鬯鬲魄魃魏魍魎魑魘魴鮓鮃鮑鮖鮗鮟鮠鮨鮴鯀鯊鮹鯆鯏鯑鯒鯣鯢鯤鯔鯡鰺鯲鯱鯰鰕鰔鰉鰓鰌鰆鰈鰒鰊鰄鰮鰛鰥鰤鰡鰰鱇鰲鱆鰾鱚鱠鱧鱶鱸鳧鳬鳰鴉鴈鳫鴃鴆鴪鴦鶯鴣鴟鵄鴕鴒鵁鴿鴾鵆鵈���".split(""); +for(j = 0; j != D[233].length; ++j) if(D[233][j].charCodeAt(0) !== 0xFFFD) { e[D[233][j]] = 59648 + j; d[59648 + j] = D[233][j];} +D[234] = "����������������������������������������������������������������鵝鵞鵤鵑鵐鵙鵲鶉鶇鶫鵯鵺鶚鶤鶩鶲鷄鷁鶻鶸鶺鷆鷏鷂鷙鷓鷸鷦鷭鷯鷽鸚鸛鸞鹵鹹鹽麁麈麋麌麒麕麑麝麥麩麸麪麭靡黌黎黏黐黔黜點黝黠黥黨黯�黴黶黷黹黻黼黽鼇鼈皷鼕鼡鼬鼾齊齒齔齣齟齠齡齦齧齬齪齷齲齶龕龜龠堯槇遙瑤凜熙�������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];} +D[240] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[240].length; ++j) if(D[240][j].charCodeAt(0) !== 0xFFFD) { e[D[240][j]] = 61440 + j; d[61440 + j] = D[240][j];} +D[241] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[241].length; ++j) if(D[241][j].charCodeAt(0) !== 0xFFFD) { e[D[241][j]] = 61696 + j; d[61696 + j] = D[241][j];} +D[242] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[242].length; ++j) if(D[242][j].charCodeAt(0) !== 0xFFFD) { e[D[242][j]] = 61952 + j; d[61952 + j] = D[242][j];} +D[243] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[243].length; ++j) if(D[243][j].charCodeAt(0) !== 0xFFFD) { e[D[243][j]] = 62208 + j; d[62208 + j] = D[243][j];} +D[244] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[244].length; ++j) if(D[244][j].charCodeAt(0) !== 0xFFFD) { e[D[244][j]] = 62464 + j; d[62464 + j] = D[244][j];} +D[245] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[245].length; ++j) if(D[245][j].charCodeAt(0) !== 0xFFFD) { e[D[245][j]] = 62720 + j; d[62720 + j] = D[245][j];} +D[246] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[246].length; ++j) if(D[246][j].charCodeAt(0) !== 0xFFFD) { e[D[246][j]] = 62976 + j; d[62976 + j] = D[246][j];} +D[247] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[247].length; ++j) if(D[247][j].charCodeAt(0) !== 0xFFFD) { e[D[247][j]] = 63232 + j; d[63232 + j] = D[247][j];} +D[248] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[248].length; ++j) if(D[248][j].charCodeAt(0) !== 0xFFFD) { e[D[248][j]] = 63488 + j; d[63488 + j] = D[248][j];} +D[249] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[249].length; ++j) if(D[249][j].charCodeAt(0) !== 0xFFFD) { e[D[249][j]] = 63744 + j; d[63744 + j] = D[249][j];} +D[250] = "�������������������������������������������������������������������������������������¦'"����纊褜鍈銈蓜俉炻昱棈鋹曻彅丨仡仼伀伃伹佖侒侊侚侔俍偀倢俿倞偆偰偂傔僴僘兊�兤冝冾凬刕劜劦勀勛匀匇匤卲厓厲叝﨎咜咊咩哿喆坙坥垬埈埇﨏塚增墲夋奓奛奝奣妤妺孖寀甯寘寬尞岦岺峵崧嵓﨑嵂嵭嶸嶹巐弡弴彧德忞恝悅悊惞惕愠惲愑愷愰憘戓抦揵摠撝擎敎昀昕昻昉昮昞昤晥晗晙晴晳暙暠暲暿曺朎朗杦枻桒柀栁桄棏﨓楨﨔榘槢樰橫橆橳橾櫢櫤毖氿汜沆汯泚洄涇浯���".split(""); +for(j = 0; j != D[250].length; ++j) if(D[250][j].charCodeAt(0) !== 0xFFFD) { e[D[250][j]] = 64000 + j; d[64000 + j] = D[250][j];} +D[251] = "����������������������������������������������������������������涖涬淏淸淲淼渹湜渧渼溿澈澵濵瀅瀇瀨炅炫焏焄煜煆煇凞燁燾犱犾猤猪獷玽珉珖珣珒琇珵琦琪琩琮瑢璉璟甁畯皂皜皞皛皦益睆劯砡硎硤硺礰礼神�祥禔福禛竑竧靖竫箞精絈絜綷綠緖繒罇羡羽茁荢荿菇菶葈蒴蕓蕙蕫﨟薰蘒﨡蠇裵訒訷詹誧誾諟諸諶譓譿賰賴贒赶﨣軏﨤逸遧郞都鄕鄧釚釗釞釭釮釤釥鈆鈐鈊鈺鉀鈼鉎鉙鉑鈹鉧銧鉷鉸鋧鋗鋙鋐﨧鋕鋠鋓錥錡鋻﨨錞鋿錝錂鍰鍗鎤鏆鏞鏸鐱鑅鑈閒隆﨩隝隯霳霻靃靍靏靑靕顗顥飯飼餧館馞驎髙���".split(""); +for(j = 0; j != D[251].length; ++j) if(D[251][j].charCodeAt(0) !== 0xFFFD) { e[D[251][j]] = 64256 + j; d[64256 + j] = D[251][j];} +D[252] = "����������������������������������������������������������������髜魵魲鮏鮱鮻鰀鵰鵫鶴鸙黑������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[252].length; ++j) if(D[252][j].charCodeAt(0) !== 0xFFFD) { e[D[252][j]] = 64512 + j; d[64512 + j] = D[252][j];} +return {"enc": e, "dec": d }; })(); diff --git a/node_modules/codepage/bits/10002.js b/node_modules/codepage/bits/10002.js new file mode 100644 index 000000000..d3b36da3f --- /dev/null +++ b/node_modules/codepage/bits/10002.js @@ -0,0 +1,253 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[10002] = (function(){ var d = [], e = {}, D = [], j; +D[0] = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€����������������������������������������������������������������������������������������������������������������������������©™…".split(""); +for(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];} +D[129] = "���������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[129].length; ++j) if(D[129][j].charCodeAt(0) !== 0xFFFD) { e[D[129][j]] = 33024 + j; d[33024 + j] = D[129][j];} +D[130] = "���������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[130].length; ++j) if(D[130][j].charCodeAt(0) !== 0xFFFD) { e[D[130][j]] = 33280 + j; d[33280 + j] = D[130][j];} +D[131] = "���������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[131].length; ++j) if(D[131][j].charCodeAt(0) !== 0xFFFD) { e[D[131][j]] = 33536 + j; d[33536 + j] = D[131][j];} +D[132] = "���������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[132].length; ++j) if(D[132][j].charCodeAt(0) !== 0xFFFD) { e[D[132][j]] = 33792 + j; d[33792 + j] = D[132][j];} +D[133] = "���������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[133].length; ++j) if(D[133][j].charCodeAt(0) !== 0xFFFD) { e[D[133][j]] = 34048 + j; d[34048 + j] = D[133][j];} +D[134] = "���������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[134].length; ++j) if(D[134][j].charCodeAt(0) !== 0xFFFD) { e[D[134][j]] = 34304 + j; d[34304 + j] = D[134][j];} +D[135] = "���������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[135].length; ++j) if(D[135][j].charCodeAt(0) !== 0xFFFD) { e[D[135][j]] = 34560 + j; d[34560 + j] = D[135][j];} +D[136] = "���������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[136].length; ++j) if(D[136][j].charCodeAt(0) !== 0xFFFD) { e[D[136][j]] = 34816 + j; d[34816 + j] = D[136][j];} +D[137] = "���������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[137].length; ++j) if(D[137][j].charCodeAt(0) !== 0xFFFD) { e[D[137][j]] = 35072 + j; d[35072 + j] = D[137][j];} +D[138] = "���������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[138].length; ++j) if(D[138][j].charCodeAt(0) !== 0xFFFD) { e[D[138][j]] = 35328 + j; d[35328 + j] = D[138][j];} +D[139] = "���������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[139].length; ++j) if(D[139][j].charCodeAt(0) !== 0xFFFD) { e[D[139][j]] = 35584 + j; d[35584 + j] = D[139][j];} +D[140] = "���������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[140].length; ++j) if(D[140][j].charCodeAt(0) !== 0xFFFD) { e[D[140][j]] = 35840 + j; d[35840 + j] = D[140][j];} +D[141] = "���������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[141].length; ++j) if(D[141][j].charCodeAt(0) !== 0xFFFD) { e[D[141][j]] = 36096 + j; d[36096 + j] = D[141][j];} +D[142] = "���������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[142].length; ++j) if(D[142][j].charCodeAt(0) !== 0xFFFD) { e[D[142][j]] = 36352 + j; d[36352 + j] = D[142][j];} +D[143] = "���������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[143].length; ++j) if(D[143][j].charCodeAt(0) !== 0xFFFD) { e[D[143][j]] = 36608 + j; d[36608 + j] = D[143][j];} +D[144] = "���������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[144].length; ++j) if(D[144][j].charCodeAt(0) !== 0xFFFD) { e[D[144][j]] = 36864 + j; d[36864 + j] = D[144][j];} +D[145] = "���������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[145].length; ++j) if(D[145][j].charCodeAt(0) !== 0xFFFD) { e[D[145][j]] = 37120 + j; d[37120 + j] = D[145][j];} +D[146] = "���������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[146].length; ++j) if(D[146][j].charCodeAt(0) !== 0xFFFD) { e[D[146][j]] = 37376 + j; d[37376 + j] = D[146][j];} +D[147] = "���������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[147].length; ++j) if(D[147][j].charCodeAt(0) !== 0xFFFD) { e[D[147][j]] = 37632 + j; d[37632 + j] = D[147][j];} +D[148] = "���������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[148].length; ++j) if(D[148][j].charCodeAt(0) !== 0xFFFD) { e[D[148][j]] = 37888 + j; d[37888 + j] = D[148][j];} +D[149] = "���������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[149].length; ++j) if(D[149][j].charCodeAt(0) !== 0xFFFD) { e[D[149][j]] = 38144 + j; d[38144 + j] = D[149][j];} +D[150] = "���������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[150].length; ++j) if(D[150][j].charCodeAt(0) !== 0xFFFD) { e[D[150][j]] = 38400 + j; d[38400 + j] = D[150][j];} +D[151] = "���������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[151].length; ++j) if(D[151][j].charCodeAt(0) !== 0xFFFD) { e[D[151][j]] = 38656 + j; d[38656 + j] = D[151][j];} +D[152] = "���������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[152].length; ++j) if(D[152][j].charCodeAt(0) !== 0xFFFD) { e[D[152][j]] = 38912 + j; d[38912 + j] = D[152][j];} +D[153] = "���������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[153].length; ++j) if(D[153][j].charCodeAt(0) !== 0xFFFD) { e[D[153][j]] = 39168 + j; d[39168 + j] = D[153][j];} +D[154] = "���������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[154].length; ++j) if(D[154][j].charCodeAt(0) !== 0xFFFD) { e[D[154][j]] = 39424 + j; d[39424 + j] = D[154][j];} +D[155] = "���������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[155].length; ++j) if(D[155][j].charCodeAt(0) !== 0xFFFD) { e[D[155][j]] = 39680 + j; d[39680 + j] = D[155][j];} +D[156] = "���������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[156].length; ++j) if(D[156][j].charCodeAt(0) !== 0xFFFD) { e[D[156][j]] = 39936 + j; d[39936 + j] = D[156][j];} +D[157] = "���������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[157].length; ++j) if(D[157][j].charCodeAt(0) !== 0xFFFD) { e[D[157][j]] = 40192 + j; d[40192 + j] = D[157][j];} +D[158] = "���������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[158].length; ++j) if(D[158][j].charCodeAt(0) !== 0xFFFD) { e[D[158][j]] = 40448 + j; d[40448 + j] = D[158][j];} +D[159] = "���������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[159].length; ++j) if(D[159][j].charCodeAt(0) !== 0xFFFD) { e[D[159][j]] = 40704 + j; d[40704 + j] = D[159][j];} +D[160] = "���������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[160].length; ++j) if(D[160][j].charCodeAt(0) !== 0xFFFD) { e[D[160][j]] = 40960 + j; d[40960 + j] = D[160][j];} +D[161] = "���������������������������������������������������������������� ,、。.‧;:?!︰�‥﹐﹑﹒·﹔﹕﹖﹗|–︱—︳╴︴﹏()︵︶{}︷︸〔〕︹︺【】︻︼《》︽︾〈〉︿﹀「」﹁﹂『』﹃﹄﹙﹚����������������������������������﹛﹜﹝﹞‘’“”〝〞‵′#&*※§〃○●△▲◎☆★◇◆□■▽▼㊣℅¯ ̄_ˍ﹉﹊﹍﹎﹋﹌﹟﹠﹡+-×÷±√<>=≦≧≠∞≒≡﹢﹣﹤﹥﹦~∩∪⊥∠∟⊿㏒㏑∫∮∵∴♀♂⊕⊙↑↓←→↖↗↙↘∥∣/�".split(""); +for(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];} +D[162] = "����������������������������������������������������������������\∕﹨$¥〒¢£%@℃℉﹩﹪﹫㏕㎜㎝㎞㏎㎡㎎㎏㏄°兙兛兞兝兡兣嗧瓩糎▁▂▃▄▅▆▇█▏▎▍▌▋▊▉┼┴┬┤├▔─│▕┌┐└┘╭����������������������������������╮╰╯����◢◣◥◤╱╲╳0123456789ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩ〡〢〣〤〥〦〧〨〩�卄�ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuv�".split(""); +for(j = 0; j != D[162].length; ++j) if(D[162][j].charCodeAt(0) !== 0xFFFD) { e[D[162][j]] = 41472 + j; d[41472 + j] = D[162][j];} +D[163] = "����������������������������������������������������������������wxyzΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩαβγδεζηθικλμνξοπρστυφχψωㄅㄆㄇㄈㄉㄊㄋㄌㄍㄎㄏ����������������������������������ㄐㄑㄒㄓㄔㄕㄖㄗㄘㄙㄚㄛㄜㄝㄞㄟㄠㄡㄢㄣㄤㄥㄦㄧㄨㄩ˙ˉˊˇˋ����������������������������������������������������������������".split(""); +for(j = 0; j != D[163].length; ++j) if(D[163][j].charCodeAt(0) !== 0xFFFD) { e[D[163][j]] = 41728 + j; d[41728 + j] = D[163][j];} +D[164] = "����������������������������������������������������������������一乙丁七乃九了二人儿入八几刀刁力匕十卜又三下丈上丫丸凡久么也乞于亡兀刃勺千叉口土士夕大女子孑孓寸小尢尸山川工己已巳巾干廾弋弓才����������������������������������丑丐不中丰丹之尹予云井互五亢仁什仃仆仇仍今介仄元允內六兮公冗凶分切刈勻勾勿化匹午升卅卞厄友及反壬天夫太夭孔少尤尺屯巴幻廿弔引心戈戶手扎支文斗斤方日曰月木欠止歹毋比毛氏水火爪父爻片牙牛犬王丙�".split(""); +for(j = 0; j != D[164].length; ++j) if(D[164][j].charCodeAt(0) !== 0xFFFD) { e[D[164][j]] = 41984 + j; d[41984 + j] = D[164][j];} +D[165] = "����������������������������������������������������������������世丕且丘主乍乏乎以付仔仕他仗代令仙仞充兄冉冊冬凹出凸刊加功包匆北匝仟半卉卡占卯卮去可古右召叮叩叨叼司叵叫另只史叱台句叭叻四囚外����������������������������������央失奴奶孕它尼巨巧左市布平幼弁弘弗必戊打扔扒扑斥旦朮本未末札正母民氐永汁汀氾犯玄玉瓜瓦甘生用甩田由甲申疋白皮皿目矛矢石示禾穴立丞丟乒乓乩亙交亦亥仿伉伙伊伕伍伐休伏仲件任仰仳份企伋光兇兆先全�".split(""); +for(j = 0; j != D[165].length; ++j) if(D[165][j].charCodeAt(0) !== 0xFFFD) { e[D[165][j]] = 42240 + j; d[42240 + j] = D[165][j];} +D[166] = "����������������������������������������������������������������共再冰列刑划刎刖劣匈匡匠印危吉吏同吊吐吁吋各向名合吃后吆吒因回囝圳地在圭圬圯圩夙多夷夸妄奸妃好她如妁字存宇守宅安寺尖屹州帆并年����������������������������������式弛忙忖戎戌戍成扣扛托收早旨旬旭曲曳有朽朴朱朵次此死氖汝汗汙江池汐汕污汛汍汎灰牟牝百竹米糸缶羊羽老考而耒耳聿肉肋肌臣自至臼舌舛舟艮色艾虫血行衣西阡串亨位住佇佗佞伴佛何估佐佑伽伺伸佃佔似但佣�".split(""); +for(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];} +D[167] = "����������������������������������������������������������������作你伯低伶余佝佈佚兌克免兵冶冷別判利刪刨劫助努劬匣即卵吝吭吞吾否呎吧呆呃吳呈呂君吩告吹吻吸吮吵吶吠吼呀吱含吟听囪困囤囫坊坑址坍����������������������������������均坎圾坐坏圻壯夾妝妒妨妞妣妙妖妍妤妓妊妥孝孜孚孛完宋宏尬局屁尿尾岐岑岔岌巫希序庇床廷弄弟彤形彷役忘忌志忍忱快忸忪戒我抄抗抖技扶抉扭把扼找批扳抒扯折扮投抓抑抆改攻攸旱更束李杏材村杜杖杞杉杆杠�".split(""); +for(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];} +D[168] = "����������������������������������������������������������������杓杗步每求汞沙沁沈沉沅沛汪決沐汰沌汨沖沒汽沃汲汾汴沆汶沍沔沘沂灶灼災灸牢牡牠狄狂玖甬甫男甸皂盯矣私秀禿究系罕肖肓肝肘肛肚育良芒����������������������������������芋芍見角言谷豆豕貝赤走足身車辛辰迂迆迅迄巡邑邢邪邦那酉釆里防阮阱阪阬並乖乳事些亞享京佯依侍佳使佬供例來侃佰併侈佩佻侖佾侏侑佺兔兒兕兩具其典冽函刻券刷刺到刮制剁劾劻卒協卓卑卦卷卸卹取叔受味呵�".split(""); +for(j = 0; j != D[168].length; ++j) if(D[168][j].charCodeAt(0) !== 0xFFFD) { e[D[168][j]] = 43008 + j; d[43008 + j] = D[168][j];} +D[169] = "����������������������������������������������������������������咖呸咕咀呻呷咄咒咆呼咐呱呶和咚呢周咋命咎固垃坷坪坩坡坦坤坼夜奉奇奈奄奔妾妻委妹妮姑姆姐姍始姓姊妯妳姒姅孟孤季宗定官宜宙宛尚屈居����������������������������������屆岷岡岸岩岫岱岳帘帚帖帕帛帑幸庚店府底庖延弦弧弩往征彿彼忝忠忽念忿怏怔怯怵怖怪怕怡性怩怫怛或戕房戾所承拉拌拄抿拂抹拒招披拓拔拋拈抨抽押拐拙拇拍抵拚抱拘拖拗拆抬拎放斧於旺昔易昌昆昂明昀昏昕昊�".split(""); +for(j = 0; j != D[169].length; ++j) if(D[169][j].charCodeAt(0) !== 0xFFFD) { e[D[169][j]] = 43264 + j; d[43264 + j] = D[169][j];} +D[170] = "����������������������������������������������������������������昇服朋杭枋枕東果杳杷枇枝林杯杰板枉松析杵枚枓杼杪杲欣武歧歿氓氛泣注泳沱泌泥河沽沾沼波沫法泓沸泄油況沮泗泅泱沿治泡泛泊沬泯泜泖泠����������������������������������炕炎炒炊炙爬爭爸版牧物狀狎狙狗狐玩玨玟玫玥甽疝疙疚的盂盲直知矽社祀祁秉秈空穹竺糾罔羌羋者肺肥肢肱股肫肩肴肪肯臥臾舍芳芝芙芭芽芟芹花芬芥芯芸芣芰芾芷虎虱初表軋迎返近邵邸邱邶采金長門阜陀阿阻附�".split(""); +for(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];} +D[171] = "����������������������������������������������������������������陂隹雨青非亟亭亮信侵侯便俠俑俏保促侶俘俟俊俗侮俐俄係俚俎俞侷兗冒冑冠剎剃削前剌剋則勇勉勃勁匍南卻厚叛咬哀咨哎哉咸咦咳哇哂咽咪品����������������������������������哄哈咯咫咱咻咩咧咿囿垂型垠垣垢城垮垓奕契奏奎奐姜姘姿姣姨娃姥姪姚姦威姻孩宣宦室客宥封屎屏屍屋峙峒巷帝帥帟幽庠度建弈弭彥很待徊律徇後徉怒思怠急怎怨恍恰恨恢恆恃恬恫恪恤扁拜挖按拼拭持拮拽指拱拷�".split(""); +for(j = 0; j != D[171].length; ++j) if(D[171][j].charCodeAt(0) !== 0xFFFD) { e[D[171][j]] = 43776 + j; d[43776 + j] = D[171][j];} +D[172] = "����������������������������������������������������������������拯括拾拴挑挂政故斫施既春昭映昧是星昨昱昤曷柿染柱柔某柬架枯柵柩柯柄柑枴柚查枸柏柞柳枰柙柢柝柒歪殃殆段毒毗氟泉洋洲洪流津洌洱洞洗����������������������������������活洽派洶洛泵洹洧洸洩洮洵洎洫炫為炳炬炯炭炸炮炤爰牲牯牴狩狠狡玷珊玻玲珍珀玳甚甭畏界畎畋疫疤疥疢疣癸皆皇皈盈盆盃盅省盹相眉看盾盼眇矜砂研砌砍祆祉祈祇禹禺科秒秋穿突竿竽籽紂紅紀紉紇約紆缸美羿耄�".split(""); +for(j = 0; j != D[172].length; ++j) if(D[172][j].charCodeAt(0) !== 0xFFFD) { e[D[172][j]] = 44032 + j; d[44032 + j] = D[172][j];} +D[173] = "����������������������������������������������������������������耐耍耑耶胖胥胚胃胄背胡胛胎胞胤胝致舢苧范茅苣苛苦茄若茂茉苒苗英茁苜苔苑苞苓苟苯茆虐虹虻虺衍衫要觔計訂訃貞負赴赳趴軍軌述迦迢迪迥����������������������������������迭迫迤迨郊郎郁郃酋酊重閂限陋陌降面革韋韭音頁風飛食首香乘亳倌倍倣俯倦倥俸倩倖倆值借倚倒們俺倀倔倨俱倡個候倘俳修倭倪俾倫倉兼冤冥冢凍凌准凋剖剜剔剛剝匪卿原厝叟哨唐唁唷哼哥哲唆哺唔哩哭員唉哮哪�".split(""); +for(j = 0; j != D[173].length; ++j) if(D[173][j].charCodeAt(0) !== 0xFFFD) { e[D[173][j]] = 44288 + j; d[44288 + j] = D[173][j];} +D[174] = "����������������������������������������������������������������哦唧唇哽唏圃圄埂埔埋埃堉夏套奘奚娑娘娜娟娛娓姬娠娣娩娥娌娉孫屘宰害家宴宮宵容宸射屑展屐峭峽峻峪峨峰島崁峴差席師庫庭座弱徒徑徐恙����������������������������������恣恥恐恕恭恩息悄悟悚悍悔悌悅悖扇拳挈拿捎挾振捕捂捆捏捉挺捐挽挪挫挨捍捌效敉料旁旅時晉晏晃晒晌晅晁書朔朕朗校核案框桓根桂桔栩梳栗桌桑栽柴桐桀格桃株桅栓栘桁殊殉殷氣氧氨氦氤泰浪涕消涇浦浸海浙涓�".split(""); +for(j = 0; j != D[174].length; ++j) if(D[174][j].charCodeAt(0) !== 0xFFFD) { e[D[174][j]] = 44544 + j; d[44544 + j] = D[174][j];} +D[175] = "����������������������������������������������������������������浬涉浮浚浴浩涌涊浹涅浥涔烊烘烤烙烈烏爹特狼狹狽狸狷玆班琉珮珠珪珞畔畝畜畚留疾病症疲疳疽疼疹痂疸皋皰益盍盎眩真眠眨矩砰砧砸砝破砷����������������������������������砥砭砠砟砲祕祐祠祟祖神祝祗祚秤秣秧租秦秩秘窄窈站笆笑粉紡紗紋紊素索純紐紕級紜納紙紛缺罟羔翅翁耆耘耕耙耗耽耿胱脂胰脅胭胴脆胸胳脈能脊胼胯臭臬舀舐航舫舨般芻茫荒荔荊茸荐草茵茴荏茲茹茶茗荀茱茨荃�".split(""); +for(j = 0; j != D[175].length; ++j) if(D[175][j].charCodeAt(0) !== 0xFFFD) { e[D[175][j]] = 44800 + j; d[44800 + j] = D[175][j];} +D[176] = "����������������������������������������������������������������虔蚊蚪蚓蚤蚩蚌蚣蚜衰衷袁袂衽衹記訐討訌訕訊託訓訖訏訑豈豺豹財貢起躬軒軔軏辱送逆迷退迺迴逃追逅迸邕郡郝郢酒配酌釘針釗釜釙閃院陣陡����������������������������������陛陝除陘陞隻飢馬骨高鬥鬲鬼乾偺偽停假偃偌做偉健偶偎偕偵側偷偏倏偯偭兜冕凰剪副勒務勘動匐匏匙匿區匾參曼商啪啦啄啞啡啃啊唱啖問啕唯啤唸售啜唬啣唳啁啗圈國圉域堅堊堆埠埤基堂堵執培夠奢娶婁婉婦婪婀�".split(""); +for(j = 0; j != D[176].length; ++j) if(D[176][j].charCodeAt(0) !== 0xFFFD) { e[D[176][j]] = 45056 + j; d[45056 + j] = D[176][j];} +D[177] = "����������������������������������������������������������������娼婢婚婆婊孰寇寅寄寂宿密尉專將屠屜屝崇崆崎崛崖崢崑崩崔崙崤崧崗巢常帶帳帷康庸庶庵庾張強彗彬彩彫得徙從徘御徠徜恿患悉悠您惋悴惦悽����������������������������������情悻悵惜悼惘惕惆惟悸惚惇戚戛扈掠控捲掖探接捷捧掘措捱掩掉掃掛捫推掄授掙採掬排掏掀捻捩捨捺敝敖救教敗啟敏敘敕敔斜斛斬族旋旌旎晝晚晤晨晦晞曹勗望梁梯梢梓梵桿桶梱梧梗械梃棄梭梆梅梔條梨梟梡梂欲殺�".split(""); +for(j = 0; j != D[177].length; ++j) if(D[177][j].charCodeAt(0) !== 0xFFFD) { e[D[177][j]] = 45312 + j; d[45312 + j] = D[177][j];} +D[178] = "����������������������������������������������������������������毫毬氫涎涼淳淙液淡淌淤添淺清淇淋涯淑涮淞淹涸混淵淅淒渚涵淚淫淘淪深淮淨淆淄涪淬涿淦烹焉焊烽烯爽牽犁猜猛猖猓猙率琅琊球理現琍瓠瓶����������������������������������瓷甜產略畦畢異疏痔痕疵痊痍皎盔盒盛眷眾眼眶眸眺硫硃硎祥票祭移窒窕笠笨笛第符笙笞笮粒粗粕絆絃統紮紹紼絀細紳組累終紲紱缽羞羚翌翎習耜聊聆脯脖脣脫脩脰脤舂舵舷舶船莎莞莘荸莢莖莽莫莒莊莓莉莠荷荻荼�".split(""); +for(j = 0; j != D[178].length; ++j) if(D[178][j].charCodeAt(0) !== 0xFFFD) { e[D[178][j]] = 45568 + j; d[45568 + j] = D[178][j];} +D[179] = "����������������������������������������������������������������莆莧處彪蛇蛀蚶蛄蚵蛆蛋蚱蚯蛉術袞袈被袒袖袍袋覓規訪訝訣訥許設訟訛訢豉豚販責貫貨貪貧赧赦趾趺軛軟這逍通逗連速逝逐逕逞造透逢逖逛途����������������������������������部郭都酗野釵釦釣釧釭釩閉陪陵陳陸陰陴陶陷陬雀雪雩章竟頂頃魚鳥鹵鹿麥麻傢傍傅備傑傀傖傘傚最凱割剴創剩勞勝勛博厥啻喀喧啼喊喝喘喂喜喪喔喇喋喃喳單喟唾喲喚喻喬喱啾喉喫喙圍堯堪場堤堰報堡堝堠壹壺奠�".split(""); +for(j = 0; j != D[179].length; ++j) if(D[179][j].charCodeAt(0) !== 0xFFFD) { e[D[179][j]] = 45824 + j; d[45824 + j] = D[179][j];} +D[180] = "����������������������������������������������������������������婷媚婿媒媛媧孳孱寒富寓寐尊尋就嵌嵐崴嵇巽幅帽幀幃幾廊廁廂廄弼彭復循徨惑惡悲悶惠愜愣惺愕惰惻惴慨惱愎惶愉愀愒戟扉掣掌描揀揩揉揆揍����������������������������������插揣提握揖揭揮捶援揪換摒揚揹敞敦敢散斑斐斯普晰晴晶景暑智晾晷曾替期朝棺棕棠棘棗椅棟棵森棧棹棒棲棣棋棍植椒椎棉棚楮棻款欺欽殘殖殼毯氮氯氬港游湔渡渲湧湊渠渥渣減湛湘渤湖湮渭渦湯渴湍渺測湃渝渾滋�".split(""); +for(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];} +D[181] = "����������������������������������������������������������������溉渙湎湣湄湲湩湟焙焚焦焰無然煮焜牌犄犀猶猥猴猩琺琪琳琢琥琵琶琴琯琛琦琨甥甦畫番痢痛痣痙痘痞痠登發皖皓皴盜睏短硝硬硯稍稈程稅稀窘����������������������������������窗窖童竣等策筆筐筒答筍筋筏筑粟粥絞結絨絕紫絮絲絡給絢絰絳善翔翕耋聒肅腕腔腋腑腎脹腆脾腌腓腴舒舜菩萃菸萍菠菅萋菁華菱菴著萊菰萌菌菽菲菊萸萎萄菜萇菔菟虛蛟蛙蛭蛔蛛蛤蛐蛞街裁裂袱覃視註詠評詞証詁�".split(""); +for(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];} +D[182] = "����������������������������������������������������������������詔詛詐詆訴診訶詖象貂貯貼貳貽賁費賀貴買貶貿貸越超趁跎距跋跚跑跌跛跆軻軸軼辜逮逵週逸進逶鄂郵鄉郾酣酥量鈔鈕鈣鈉鈞鈍鈐鈇鈑閔閏開閑����������������������������������間閒閎隊階隋陽隅隆隍陲隄雁雅雄集雇雯雲韌項順須飧飪飯飩飲飭馮馭黃黍黑亂傭債傲傳僅傾催傷傻傯僇剿剷剽募勦勤勢勣匯嗟嗨嗓嗦嗎嗜嗇嗑嗣嗤嗯嗚嗡嗅嗆嗥嗉園圓塞塑塘塗塚塔填塌塭塊塢塒塋奧嫁嫉嫌媾媽媼�".split(""); +for(j = 0; j != D[182].length; ++j) if(D[182][j].charCodeAt(0) !== 0xFFFD) { e[D[182][j]] = 46592 + j; d[46592 + j] = D[182][j];} +D[183] = "����������������������������������������������������������������媳嫂媲嵩嵯幌幹廉廈弒彙徬微愚意慈感想愛惹愁愈慎慌慄慍愾愴愧愍愆愷戡戢搓搾搞搪搭搽搬搏搜搔損搶搖搗搆敬斟新暗暉暇暈暖暄暘暍會榔業����������������������������������楚楷楠楔極椰概楊楨楫楞楓楹榆楝楣楛歇歲毀殿毓毽溢溯滓溶滂源溝滇滅溥溘溼溺溫滑準溜滄滔溪溧溴煎煙煩煤煉照煜煬煦煌煥煞煆煨煖爺牒猷獅猿猾瑯瑚瑕瑟瑞瑁琿瑙瑛瑜當畸瘀痰瘁痲痱痺痿痴痳盞盟睛睫睦睞督�".split(""); +for(j = 0; j != D[183].length; ++j) if(D[183][j].charCodeAt(0) !== 0xFFFD) { e[D[183][j]] = 46848 + j; d[46848 + j] = D[183][j];} +D[184] = "����������������������������������������������������������������睹睪睬睜睥睨睢矮碎碰碗碘碌碉硼碑碓硿祺祿禁萬禽稜稚稠稔稟稞窟窠筷節筠筮筧粱粳粵經絹綑綁綏絛置罩罪署義羨群聖聘肆肄腱腰腸腥腮腳腫����������������������������������腹腺腦舅艇蒂葷落萱葵葦葫葉葬葛萼萵葡董葩葭葆虞虜號蛹蜓蜈蜇蜀蛾蛻蜂蜃蜆蜊衙裟裔裙補裘裝裡裊裕裒覜解詫該詳試詩詰誇詼詣誠話誅詭詢詮詬詹詻訾詨豢貊貉賊資賈賄貲賃賂賅跡跟跨路跳跺跪跤跦躲較載軾輊�".split(""); +for(j = 0; j != D[184].length; ++j) if(D[184][j].charCodeAt(0) !== 0xFFFD) { e[D[184][j]] = 47104 + j; d[47104 + j] = D[184][j];} +D[185] = "����������������������������������������������������������������辟農運遊道遂達逼違遐遇遏過遍遑逾遁鄒鄗酬酪酩釉鈷鉗鈸鈽鉀鈾鉛鉋鉤鉑鈴鉉鉍鉅鈹鈿鉚閘隘隔隕雍雋雉雊雷電雹零靖靴靶預頑頓頊頒頌飼飴����������������������������������飽飾馳馱馴髡鳩麂鼎鼓鼠僧僮僥僖僭僚僕像僑僱僎僩兢凳劃劂匱厭嗾嘀嘛嘗嗽嘔嘆嘉嘍嘎嗷嘖嘟嘈嘐嗶團圖塵塾境墓墊塹墅塽壽夥夢夤奪奩嫡嫦嫩嫗嫖嫘嫣孵寞寧寡寥實寨寢寤察對屢嶄嶇幛幣幕幗幔廓廖弊彆彰徹慇�".split(""); +for(j = 0; j != D[185].length; ++j) if(D[185][j].charCodeAt(0) !== 0xFFFD) { e[D[185][j]] = 47360 + j; d[47360 + j] = D[185][j];} +D[186] = "����������������������������������������������������������������愿態慷慢慣慟慚慘慵截撇摘摔撤摸摟摺摑摧搴摭摻敲斡旗旖暢暨暝榜榨榕槁榮槓構榛榷榻榫榴槐槍榭槌榦槃榣歉歌氳漳演滾漓滴漩漾漠漬漏漂漢����������������������������������滿滯漆漱漸漲漣漕漫漯澈漪滬漁滲滌滷熔熙煽熊熄熒爾犒犖獄獐瑤瑣瑪瑰瑭甄疑瘧瘍瘋瘉瘓盡監瞄睽睿睡磁碟碧碳碩碣禎福禍種稱窪窩竭端管箕箋筵算箝箔箏箸箇箄粹粽精綻綰綜綽綾綠緊綴網綱綺綢綿綵綸維緒緇綬�".split(""); +for(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];} +D[187] = "����������������������������������������������������������������罰翠翡翟聞聚肇腐膀膏膈膊腿膂臧臺與舔舞艋蓉蒿蓆蓄蒙蒞蒲蒜蓋蒸蓀蓓蒐蒼蓑蓊蜿蜜蜻蜢蜥蜴蜘蝕蜷蜩裳褂裴裹裸製裨褚裯誦誌語誣認誡誓誤����������������������������������說誥誨誘誑誚誧豪貍貌賓賑賒赫趙趕跼輔輒輕輓辣遠遘遜遣遙遞遢遝遛鄙鄘鄞酵酸酷酴鉸銀銅銘銖鉻銓銜銨鉼銑閡閨閩閣閥閤隙障際雌雒需靼鞅韶頗領颯颱餃餅餌餉駁骯骰髦魁魂鳴鳶鳳麼鼻齊億儀僻僵價儂儈儉儅凜�".split(""); +for(j = 0; j != D[187].length; ++j) if(D[187][j].charCodeAt(0) !== 0xFFFD) { e[D[187][j]] = 47872 + j; d[47872 + j] = D[187][j];} +D[188] = "����������������������������������������������������������������劇劈劉劍劊勰厲嘮嘻嘹嘲嘿嘴嘩噓噎噗噴嘶嘯嘰墀墟增墳墜墮墩墦奭嬉嫻嬋嫵嬌嬈寮寬審寫層履嶝嶔幢幟幡廢廚廟廝廣廠彈影德徵慶慧慮慝慕憂����������������������������������慼慰慫慾憧憐憫憎憬憚憤憔憮戮摩摯摹撞撲撈撐撰撥撓撕撩撒撮播撫撚撬撙撢撳敵敷數暮暫暴暱樣樟槨樁樞標槽模樓樊槳樂樅槭樑歐歎殤毅毆漿潼澄潑潦潔澆潭潛潸潮澎潺潰潤澗潘滕潯潠潟熟熬熱熨牖犛獎獗瑩璋璃�".split(""); +for(j = 0; j != D[188].length; ++j) if(D[188][j].charCodeAt(0) !== 0xFFFD) { e[D[188][j]] = 48128 + j; d[48128 + j] = D[188][j];} +D[189] = "����������������������������������������������������������������瑾璀畿瘠瘩瘟瘤瘦瘡瘢皚皺盤瞎瞇瞌瞑瞋磋磅確磊碾磕碼磐稿稼穀稽稷稻窯窮箭箱範箴篆篇篁箠篌糊締練緯緻緘緬緝編緣線緞緩綞緙緲緹罵罷羯����������������������������������翩耦膛膜膝膠膚膘蔗蔽蔚蓮蔬蔭蔓蔑蔣蔡蔔蓬蔥蓿蔆螂蝴蝶蝠蝦蝸蝨蝙蝗蝌蝓衛衝褐複褒褓褕褊誼諒談諄誕請諸課諉諂調誰論諍誶誹諛豌豎豬賠賞賦賤賬賭賢賣賜質賡赭趟趣踫踐踝踢踏踩踟踡踞躺輝輛輟輩輦輪輜輞�".split(""); +for(j = 0; j != D[189].length; ++j) if(D[189][j].charCodeAt(0) !== 0xFFFD) { e[D[189][j]] = 48384 + j; d[48384 + j] = D[189][j];} +D[190] = "����������������������������������������������������������������輥適遮遨遭遷鄰鄭鄧鄱醇醉醋醃鋅銻銷鋪銬鋤鋁銳銼鋒鋇鋰銲閭閱霄霆震霉靠鞍鞋鞏頡頫頜颳養餓餒餘駝駐駟駛駑駕駒駙骷髮髯鬧魅魄魷魯鴆鴉����������������������������������鴃麩麾黎墨齒儒儘儔儐儕冀冪凝劑劓勳噙噫噹噩噤噸噪器噥噱噯噬噢噶壁墾壇壅奮嬝嬴學寰導彊憲憑憩憊懍憶憾懊懈戰擅擁擋撻撼據擄擇擂操撿擒擔撾整曆曉暹曄曇暸樽樸樺橙橫橘樹橄橢橡橋橇樵機橈歙歷氅濂澱澡�".split(""); +for(j = 0; j != D[190].length; ++j) if(D[190][j].charCodeAt(0) !== 0xFFFD) { e[D[190][j]] = 48640 + j; d[48640 + j] = D[190][j];} +D[191] = "����������������������������������������������������������������濃澤濁澧澳激澹澶澦澠澴熾燉燐燒燈燕熹燎燙燜燃燄獨璜璣璘璟璞瓢甌甍瘴瘸瘺盧盥瞠瞞瞟瞥磨磚磬磧禦積穎穆穌穋窺篙簑築篤篛篡篩篦糕糖縊����������������������������������縑縈縛縣縞縝縉縐罹羲翰翱翮耨膳膩膨臻興艘艙蕊蕙蕈蕨蕩蕃蕉蕭蕪蕞螃螟螞螢融衡褪褲褥褫褡親覦諦諺諫諱謀諜諧諮諾謁謂諷諭諳諶諼豫豭貓賴蹄踱踴蹂踹踵輻輯輸輳辨辦遵遴選遲遼遺鄴醒錠錶鋸錳錯錢鋼錫錄錚�".split(""); +for(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];} +D[192] = "����������������������������������������������������������������錐錦錡錕錮錙閻隧隨險雕霎霑霖霍霓霏靛靜靦鞘頰頸頻頷頭頹頤餐館餞餛餡餚駭駢駱骸骼髻髭鬨鮑鴕鴣鴦鴨鴒鴛默黔龍龜優償儡儲勵嚎嚀嚐嚅嚇����������������������������������嚏壕壓壑壎嬰嬪嬤孺尷屨嶼嶺嶽嶸幫彌徽應懂懇懦懋戲戴擎擊擘擠擰擦擬擱擢擭斂斃曙曖檀檔檄檢檜櫛檣橾檗檐檠歜殮毚氈濘濱濟濠濛濤濫濯澀濬濡濩濕濮濰燧營燮燦燥燭燬燴燠爵牆獰獲璩環璦璨癆療癌盪瞳瞪瞰瞬�".split(""); +for(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];} +D[193] = "����������������������������������������������������������������瞧瞭矯磷磺磴磯礁禧禪穗窿簇簍篾篷簌篠糠糜糞糢糟糙糝縮績繆縷縲繃縫總縱繅繁縴縹繈縵縿縯罄翳翼聱聲聰聯聳臆臃膺臂臀膿膽臉膾臨舉艱薪����������������������������������薄蕾薜薑薔薯薛薇薨薊虧蟀蟑螳蟒蟆螫螻螺蟈蟋褻褶襄褸褽覬謎謗謙講謊謠謝謄謐豁谿豳賺賽購賸賻趨蹉蹋蹈蹊轄輾轂轅輿避遽還邁邂邀鄹醣醞醜鍍鎂錨鍵鍊鍥鍋錘鍾鍬鍛鍰鍚鍔闊闋闌闈闆隱隸雖霜霞鞠韓顆颶餵騁�".split(""); +for(j = 0; j != D[193].length; ++j) if(D[193][j].charCodeAt(0) !== 0xFFFD) { e[D[193][j]] = 49408 + j; d[49408 + j] = D[193][j];} +D[194] = "����������������������������������������������������������������駿鮮鮫鮪鮭鴻鴿麋黏點黜黝黛鼾齋叢嚕嚮壙壘嬸彝懣戳擴擲擾攆擺擻擷斷曜朦檳檬櫃檻檸櫂檮檯歟歸殯瀉瀋濾瀆濺瀑瀏燻燼燾燸獷獵璧璿甕癖癘����������������������������������癒瞽瞿瞻瞼礎禮穡穢穠竄竅簫簧簪簞簣簡糧織繕繞繚繡繒繙罈翹翻職聶臍臏舊藏薩藍藐藉薰薺薹薦蟯蟬蟲蟠覆覲觴謨謹謬謫豐贅蹙蹣蹦蹤蹟蹕軀轉轍邇邃邈醫醬釐鎔鎊鎖鎢鎳鎮鎬鎰鎘鎚鎗闔闖闐闕離雜雙雛雞霤鞣鞦�".split(""); +for(j = 0; j != D[194].length; ++j) if(D[194][j].charCodeAt(0) !== 0xFFFD) { e[D[194][j]] = 49664 + j; d[49664 + j] = D[194][j];} +D[195] = "����������������������������������������������������������������鞭韹額顏題顎顓颺餾餿餽餮馥騎髁鬃鬆魏魎魍鯊鯉鯽鯈鯀鵑鵝鵠黠鼕鼬儳嚥壞壟壢寵龐廬懲懷懶懵攀攏曠曝櫥櫝櫚櫓瀛瀟瀨瀚瀝瀕瀘爆爍牘犢獸����������������������������������獺璽瓊瓣疇疆癟癡矇礙禱穫穩簾簿簸簽簷籀繫繭繹繩繪羅繳羶羹羸臘藩藝藪藕藤藥藷蟻蠅蠍蟹蟾襠襟襖襞譁譜識證譚譎譏譆譙贈贊蹼蹲躇蹶蹬蹺蹴轔轎辭邊邋醱醮鏡鏑鏟鏃鏈鏜鏝鏖鏢鏍鏘鏤鏗鏨關隴難霪霧靡韜韻類�".split(""); +for(j = 0; j != D[195].length; ++j) if(D[195][j].charCodeAt(0) !== 0xFFFD) { e[D[195][j]] = 49920 + j; d[49920 + j] = D[195][j];} +D[196] = "����������������������������������������������������������������願顛颼饅饉騖騙鬍鯨鯧鯖鯛鶉鵡鵲鵪鵬麒麗麓麴勸嚨嚷嚶嚴嚼壤孀孃孽寶巉懸懺攘攔攙曦朧櫬瀾瀰瀲爐獻瓏癢癥礦礪礬礫竇競籌籃籍糯糰辮繽繼����������������������������������纂罌耀臚艦藻藹蘑藺蘆蘋蘇蘊蠔蠕襤覺觸議譬警譯譟譫贏贍躉躁躅躂醴釋鐘鐃鏽闡霰飄饒饑馨騫騰騷騵鰓鰍鹹麵黨鼯齟齣齡儷儸囁囀囂夔屬巍懼懾攝攜斕曩櫻欄櫺殲灌爛犧瓖瓔癩矓籐纏續羼蘗蘭蘚蠣蠢蠡蠟襪襬覽譴�".split(""); +for(j = 0; j != D[196].length; ++j) if(D[196][j].charCodeAt(0) !== 0xFFFD) { e[D[196][j]] = 50176 + j; d[50176 + j] = D[196][j];} +D[197] = "����������������������������������������������������������������護譽贓躊躍躋轟辯醺鐮鐳鐵鐺鐸鐲鐫闢霸霹露響顧顥饗驅驃驀騾髏魔魑鰭鰥鶯鶴鷂鶸麝黯鼙齜齦齧儼儻囈囊囉孿巔巒彎懿攤權歡灑灘玀瓤疊癮癬����������������������������������禳籠籟聾聽臟襲襯觼讀贖贗躑躓轡酈鑄鑑鑒霽霾韃韁顫饕驕驍髒鬚鱉鰱鰾鰻鷓鷗鼴齬齪龔囌巖戀攣攫攪曬欐瓚竊籤籣籥纓纖纔臢蘸蘿蠱變邐邏鑣鑠鑤靨顯饜驚驛驗髓體髑鱔鱗鱖鷥麟黴囑壩攬灞癱癲矗罐羈蠶蠹衢讓讒�".split(""); +for(j = 0; j != D[197].length; ++j) if(D[197][j].charCodeAt(0) !== 0xFFFD) { e[D[197][j]] = 50432 + j; d[50432 + j] = D[197][j];} +D[198] = "����������������������������������������������������������������讖艷贛釀鑪靂靈靄韆顰驟鬢魘鱟鷹鷺鹼鹽鼇齷齲廳欖灣籬籮蠻觀躡釁鑲鑰顱饞髖鬣黌灤矚讚鑷韉驢驥纜讜躪釅鑽鑾鑼鱷鱸黷豔鑿鸚爨驪鬱鸛鸞籲�����������������������������������".split(""); +for(j = 0; j != D[198].length; ++j) if(D[198][j].charCodeAt(0) !== 0xFFFD) { e[D[198][j]] = 50688 + j; d[50688 + j] = D[198][j];} +D[199] = "���������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[199].length; ++j) if(D[199][j].charCodeAt(0) !== 0xFFFD) { e[D[199][j]] = 50944 + j; d[50944 + j] = D[199][j];} +D[200] = "���������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[200].length; ++j) if(D[200][j].charCodeAt(0) !== 0xFFFD) { e[D[200][j]] = 51200 + j; d[51200 + j] = D[200][j];} +D[201] = "����������������������������������������������������������������乂乜凵匚厂万丌乇亍囗兀屮彳丏冇与丮亓仂仉仈冘勼卬厹圠夃夬尐巿旡殳毌气爿丱丼仨仜仩仡仝仚刌匜卌圢圣夗夯宁宄尒尻屴屳帄庀庂忉戉扐氕����������������������������������氶汃氿氻犮犰玊禸肊阞伎优伬仵伔仱伀价伈伝伂伅伢伓伄仴伒冱刓刉刐劦匢匟卍厊吇囡囟圮圪圴夼妀奼妅奻奾奷奿孖尕尥屼屺屻屾巟幵庄异弚彴忕忔忏扜扞扤扡扦扢扙扠扚扥旯旮朾朹朸朻机朿朼朳氘汆汒汜汏汊汔汋�".split(""); +for(j = 0; j != D[201].length; ++j) if(D[201][j].charCodeAt(0) !== 0xFFFD) { e[D[201][j]] = 51456 + j; d[51456 + j] = D[201][j];} +D[202] = "����������������������������������������������������������������汌灱牞犴犵玎甪癿穵网艸艼芀艽艿虍襾邙邗邘邛邔阢阤阠阣佖伻佢佉体佤伾佧佒佟佁佘伭伳伿佡冏冹刜刞刡劭劮匉卣卲厎厏吰吷吪呔呅吙吜吥吘����������������������������������吽呏呁吨吤呇囮囧囥坁坅坌坉坋坒夆奀妦妘妠妗妎妢妐妏妧妡宎宒尨尪岍岏岈岋岉岒岊岆岓岕巠帊帎庋庉庌庈庍弅弝彸彶忒忑忐忭忨忮忳忡忤忣忺忯忷忻怀忴戺抃抌抎抏抔抇扱扻扺扰抁抈扷扽扲扴攷旰旴旳旲旵杅杇�".split(""); +for(j = 0; j != D[202].length; ++j) if(D[202][j].charCodeAt(0) !== 0xFFFD) { e[D[202][j]] = 51712 + j; d[51712 + j] = D[202][j];} +D[203] = "����������������������������������������������������������������杙杕杌杈杝杍杚杋毐氙氚汸汧汫沄沋沏汱汯汩沚汭沇沕沜汦汳汥汻沎灴灺牣犿犽狃狆狁犺狅玕玗玓玔玒町甹疔疕皁礽耴肕肙肐肒肜芐芏芅芎芑芓����������������������������������芊芃芄豸迉辿邟邡邥邞邧邠阰阨阯阭丳侘佼侅佽侀侇佶佴侉侄佷佌侗佪侚佹侁佸侐侜侔侞侒侂侕佫佮冞冼冾刵刲刳剆刱劼匊匋匼厒厔咇呿咁咑咂咈呫呺呾呥呬呴呦咍呯呡呠咘呣呧呤囷囹坯坲坭坫坱坰坶垀坵坻坳坴坢�".split(""); +for(j = 0; j != D[203].length; ++j) if(D[203][j].charCodeAt(0) !== 0xFFFD) { e[D[203][j]] = 51968 + j; d[51968 + j] = D[203][j];} +D[204] = "����������������������������������������������������������������坨坽夌奅妵妺姏姎妲姌姁妶妼姃姖妱妽姀姈妴姇孢孥宓宕屄屇岮岤岠岵岯岨岬岟岣岭岢岪岧岝岥岶岰岦帗帔帙弨弢弣弤彔徂彾彽忞忥怭怦怙怲怋����������������������������������怴怊怗怳怚怞怬怢怍怐怮怓怑怌怉怜戔戽抭抴拑抾抪抶拊抮抳抯抻抩抰抸攽斨斻昉旼昄昒昈旻昃昋昍昅旽昑昐曶朊枅杬枎枒杶杻枘枆构杴枍枌杺枟枑枙枃杽极杸杹枔欥殀歾毞氝沓泬泫泮泙沶泔沭泧沷泐泂沺泃泆泭泲�".split(""); +for(j = 0; j != D[204].length; ++j) if(D[204][j].charCodeAt(0) !== 0xFFFD) { e[D[204][j]] = 52224 + j; d[52224 + j] = D[204][j];} +D[205] = "����������������������������������������������������������������泒泝沴沊沝沀泞泀洰泍泇沰泹泏泩泑炔炘炅炓炆炄炑炖炂炚炃牪狖狋狘狉狜狒狔狚狌狑玤玡玭玦玢玠玬玝瓝瓨甿畀甾疌疘皯盳盱盰盵矸矼矹矻矺����������������������������������矷祂礿秅穸穻竻籵糽耵肏肮肣肸肵肭舠芠苀芫芚芘芛芵芧芮芼芞芺芴芨芡芩苂芤苃芶芢虰虯虭虮豖迒迋迓迍迖迕迗邲邴邯邳邰阹阽阼阺陃俍俅俓侲俉俋俁俔俜俙侻侳俛俇俖侺俀侹俬剄剉勀勂匽卼厗厖厙厘咺咡咭咥哏�".split(""); +for(j = 0; j != D[205].length; ++j) if(D[205][j].charCodeAt(0) !== 0xFFFD) { e[D[205][j]] = 52480 + j; d[52480 + j] = D[205][j];} +D[206] = "����������������������������������������������������������������哃茍咷咮哖咶哅哆咠呰咼咢咾呲哞咰垵垞垟垤垌垗垝垛垔垘垏垙垥垚垕壴复奓姡姞姮娀姱姝姺姽姼姶姤姲姷姛姩姳姵姠姾姴姭宨屌峐峘峌峗峋峛����������������������������������峞峚峉峇峊峖峓峔峏峈峆峎峟峸巹帡帢帣帠帤庰庤庢庛庣庥弇弮彖徆怷怹恔恲恞恅恓恇恉恛恌恀恂恟怤恄恘恦恮扂扃拏挍挋拵挎挃拫拹挏挌拸拶挀挓挔拺挕拻拰敁敃斪斿昶昡昲昵昜昦昢昳昫昺昝昴昹昮朏朐柁柲柈枺�".split(""); +for(j = 0; j != D[206].length; ++j) if(D[206][j].charCodeAt(0) !== 0xFFFD) { e[D[206][j]] = 52736 + j; d[52736 + j] = D[206][j];} +D[207] = "����������������������������������������������������������������柜枻柸柘柀枷柅柫柤柟枵柍枳柷柶柮柣柂枹柎柧柰枲柼柆柭柌枮柦柛柺柉柊柃柪柋欨殂殄殶毖毘毠氠氡洨洴洭洟洼洿洒洊泚洳洄洙洺洚洑洀洝浂����������������������������������洁洘洷洃洏浀洇洠洬洈洢洉洐炷炟炾炱炰炡炴炵炩牁牉牊牬牰牳牮狊狤狨狫狟狪狦狣玅珌珂珈珅玹玶玵玴珫玿珇玾珃珆玸珋瓬瓮甮畇畈疧疪癹盄眈眃眄眅眊盷盻盺矧矨砆砑砒砅砐砏砎砉砃砓祊祌祋祅祄秕种秏秖秎窀�".split(""); +for(j = 0; j != D[207].length; ++j) if(D[207][j].charCodeAt(0) !== 0xFFFD) { e[D[207][j]] = 52992 + j; d[52992 + j] = D[207][j];} +D[208] = "����������������������������������������������������������������穾竑笀笁籺籸籹籿粀粁紃紈紁罘羑羍羾耇耎耏耔耷胘胇胠胑胈胂胐胅胣胙胜胊胕胉胏胗胦胍臿舡芔苙苾苹茇苨茀苕茺苫苖苴苬苡苲苵茌苻苶苰苪����������������������������������苤苠苺苳苭虷虴虼虳衁衎衧衪衩觓訄訇赲迣迡迮迠郱邽邿郕郅邾郇郋郈釔釓陔陏陑陓陊陎倞倅倇倓倢倰倛俵俴倳倷倬俶俷倗倜倠倧倵倯倱倎党冔冓凊凄凅凈凎剡剚剒剞剟剕剢勍匎厞唦哢唗唒哧哳哤唚哿唄唈哫唑唅哱�".split(""); +for(j = 0; j != D[208].length; ++j) if(D[208][j].charCodeAt(0) !== 0xFFFD) { e[D[208][j]] = 53248 + j; d[53248 + j] = D[208][j];} +D[209] = "����������������������������������������������������������������唊哻哷哸哠唎唃唋圁圂埌堲埕埒垺埆垽垼垸垶垿埇埐垹埁夎奊娙娖娭娮娕娏娗娊娞娳孬宧宭宬尃屖屔峬峿峮峱峷崀峹帩帨庨庮庪庬弳弰彧恝恚恧����������������������������������恁悢悈悀悒悁悝悃悕悛悗悇悜悎戙扆拲挐捖挬捄捅挶捃揤挹捋捊挼挩捁挴捘捔捙挭捇挳捚捑挸捗捀捈敊敆旆旃旄旂晊晟晇晑朒朓栟栚桉栲栳栻桋桏栖栱栜栵栫栭栯桎桄栴栝栒栔栦栨栮桍栺栥栠欬欯欭欱欴歭肂殈毦毤�".split(""); +for(j = 0; j != D[209].length; ++j) if(D[209][j].charCodeAt(0) !== 0xFFFD) { e[D[209][j]] = 53504 + j; d[53504 + j] = D[209][j];} +D[210] = "����������������������������������������������������������������毨毣毢毧氥浺浣浤浶洍浡涒浘浢浭浯涑涍淯浿涆浞浧浠涗浰浼浟涂涘洯浨涋浾涀涄洖涃浻浽浵涐烜烓烑烝烋缹烢烗烒烞烠烔烍烅烆烇烚烎烡牂牸����������������������������������牷牶猀狺狴狾狶狳狻猁珓珙珥珖玼珧珣珩珜珒珛珔珝珚珗珘珨瓞瓟瓴瓵甡畛畟疰痁疻痄痀疿疶疺皊盉眝眛眐眓眒眣眑眕眙眚眢眧砣砬砢砵砯砨砮砫砡砩砳砪砱祔祛祏祜祓祒祑秫秬秠秮秭秪秜秞秝窆窉窅窋窌窊窇竘笐�".split(""); +for(j = 0; j != D[210].length; ++j) if(D[210][j].charCodeAt(0) !== 0xFFFD) { e[D[210][j]] = 53760 + j; d[53760 + j] = D[210][j];} +D[211] = "����������������������������������������������������������������笄笓笅笏笈笊笎笉笒粄粑粊粌粈粍粅紞紝紑紎紘紖紓紟紒紏紌罜罡罞罠罝罛羖羒翃翂翀耖耾耹胺胲胹胵脁胻脀舁舯舥茳茭荄茙荑茥荖茿荁茦茜茢����������������������������������荂荎茛茪茈茼荍茖茤茠茷茯茩荇荅荌荓茞茬荋茧荈虓虒蚢蚨蚖蚍蚑蚞蚇蚗蚆蚋蚚蚅蚥蚙蚡蚧蚕蚘蚎蚝蚐蚔衃衄衭衵衶衲袀衱衿衯袃衾衴衼訒豇豗豻貤貣赶赸趵趷趶軑軓迾迵适迿迻逄迼迶郖郠郙郚郣郟郥郘郛郗郜郤酐�".split(""); +for(j = 0; j != D[211].length; ++j) if(D[211][j].charCodeAt(0) !== 0xFFFD) { e[D[211][j]] = 54016 + j; d[54016 + j] = D[211][j];} +D[212] = "����������������������������������������������������������������酎酏釕釢釚陜陟隼飣髟鬯乿偰偪偡偞偠偓偋偝偲偈偍偁偛偊偢倕偅偟偩偫偣偤偆偀偮偳偗偑凐剫剭剬剮勖勓匭厜啵啶唼啍啐唴唪啑啢唶唵唰啒啅����������������������������������唌唲啥啎唹啈唭唻啀啋圊圇埻堔埢埶埜埴堀埭埽堈埸堋埳埏堇埮埣埲埥埬埡堎埼堐埧堁堌埱埩埰堍堄奜婠婘婕婧婞娸娵婭婐婟婥婬婓婤婗婃婝婒婄婛婈媎娾婍娹婌婰婩婇婑婖婂婜孲孮寁寀屙崞崋崝崚崠崌崨崍崦崥崏�".split(""); +for(j = 0; j != D[212].length; ++j) if(D[212][j].charCodeAt(0) !== 0xFFFD) { e[D[212][j]] = 54272 + j; d[54272 + j] = D[212][j];} +D[213] = "����������������������������������������������������������������崰崒崣崟崮帾帴庱庴庹庲庳弶弸徛徖徟悊悐悆悾悰悺惓惔惏惤惙惝惈悱惛悷惊悿惃惍惀挲捥掊掂捽掽掞掭掝掗掫掎捯掇掐据掯捵掜捭掮捼掤挻掟����������������������������������捸掅掁掑掍捰敓旍晥晡晛晙晜晢朘桹梇梐梜桭桮梮梫楖桯梣梬梩桵桴梲梏桷梒桼桫桲梪梀桱桾梛梖梋梠梉梤桸桻梑梌梊桽欶欳欷欸殑殏殍殎殌氪淀涫涴涳湴涬淩淢涷淶淔渀淈淠淟淖涾淥淜淝淛淴淊涽淭淰涺淕淂淏淉�".split(""); +for(j = 0; j != D[213].length; ++j) if(D[213][j].charCodeAt(0) !== 0xFFFD) { e[D[213][j]] = 54528 + j; d[54528 + j] = D[213][j];} +D[214] = "����������������������������������������������������������������淐淲淓淽淗淍淣涻烺焍烷焗烴焌烰焄烳焐烼烿焆焓焀烸烶焋焂焎牾牻牼牿猝猗猇猑猘猊猈狿猏猞玈珶珸珵琄琁珽琇琀珺珼珿琌琋珴琈畤畣痎痒痏����������������������������������痋痌痑痐皏皉盓眹眯眭眱眲眴眳眽眥眻眵硈硒硉硍硊硌砦硅硐祤祧祩祪祣祫祡离秺秸秶秷窏窔窐笵筇笴笥笰笢笤笳笘笪笝笱笫笭笯笲笸笚笣粔粘粖粣紵紽紸紶紺絅紬紩絁絇紾紿絊紻紨罣羕羜羝羛翊翋翍翐翑翇翏翉耟�".split(""); +for(j = 0; j != D[214].length; ++j) if(D[214][j].charCodeAt(0) !== 0xFFFD) { e[D[214][j]] = 54784 + j; d[54784 + j] = D[214][j];} +D[215] = "����������������������������������������������������������������耞耛聇聃聈脘脥脙脛脭脟脬脞脡脕脧脝脢舑舸舳舺舴舲艴莐莣莨莍荺荳莤荴莏莁莕莙荵莔莩荽莃莌莝莛莪莋荾莥莯莈莗莰荿莦莇莮荶莚虙虖蚿蚷����������������������������������蛂蛁蛅蚺蚰蛈蚹蚳蚸蛌蚴蚻蚼蛃蚽蚾衒袉袕袨袢袪袚袑袡袟袘袧袙袛袗袤袬袌袓袎覂觖觙觕訰訧訬訞谹谻豜豝豽貥赽赻赹趼跂趹趿跁軘軞軝軜軗軠軡逤逋逑逜逌逡郯郪郰郴郲郳郔郫郬郩酖酘酚酓酕釬釴釱釳釸釤釹釪�".split(""); +for(j = 0; j != D[215].length; ++j) if(D[215][j].charCodeAt(0) !== 0xFFFD) { e[D[215][j]] = 55040 + j; d[55040 + j] = D[215][j];} +D[216] = "����������������������������������������������������������������釫釷釨釮镺閆閈陼陭陫陱陯隿靪頄飥馗傛傕傔傞傋傣傃傌傎傝偨傜傒傂傇兟凔匒匑厤厧喑喨喥喭啷噅喢喓喈喏喵喁喣喒喤啽喌喦啿喕喡喎圌堩堷����������������������������������堙堞堧堣堨埵塈堥堜堛堳堿堶堮堹堸堭堬堻奡媯媔媟婺媢媞婸媦婼媥媬媕媮娷媄媊媗媃媋媩婻婽媌媜媏媓媝寪寍寋寔寑寊寎尌尰崷嵃嵫嵁嵋崿崵嵑嵎嵕崳崺嵒崽崱嵙嵂崹嵉崸崼崲崶嵀嵅幄幁彘徦徥徫惉悹惌惢惎惄愔�".split(""); +for(j = 0; j != D[216].length; ++j) if(D[216][j].charCodeAt(0) !== 0xFFFD) { e[D[216][j]] = 55296 + j; d[55296 + j] = D[216][j];} +D[217] = "����������������������������������������������������������������惲愊愖愅惵愓惸惼惾惁愃愘愝愐惿愄愋扊掔掱掰揎揥揨揯揃撝揳揊揠揶揕揲揵摡揟掾揝揜揄揘揓揂揇揌揋揈揰揗揙攲敧敪敤敜敨敥斌斝斞斮旐旒����������������������������������晼晬晻暀晱晹晪晲朁椌棓椄棜椪棬棪棱椏棖棷棫棤棶椓椐棳棡椇棌椈楰梴椑棯棆椔棸棐棽棼棨椋椊椗棎棈棝棞棦棴棑椆棔棩椕椥棇欹欻欿欼殔殗殙殕殽毰毲毳氰淼湆湇渟湉溈渼渽湅湢渫渿湁湝湳渜渳湋湀湑渻渃渮湞�".split(""); +for(j = 0; j != D[217].length; ++j) if(D[217][j].charCodeAt(0) !== 0xFFFD) { e[D[217][j]] = 55552 + j; d[55552 + j] = D[217][j];} +D[218] = "����������������������������������������������������������������湨湜湡渱渨湠湱湫渹渢渰湓湥渧湸湤湷湕湹湒湦渵渶湚焠焞焯烻焮焱焣焥焢焲焟焨焺焛牋牚犈犉犆犅犋猒猋猰猢猱猳猧猲猭猦猣猵猌琮琬琰琫琖����������������������������������琚琡琭琱琤琣琝琩琠琲瓻甯畯畬痧痚痡痦痝痟痤痗皕皒盚睆睇睄睍睅睊睎睋睌矞矬硠硤硥硜硭硱硪确硰硩硨硞硢祴祳祲祰稂稊稃稌稄窙竦竤筊笻筄筈筌筎筀筘筅粢粞粨粡絘絯絣絓絖絧絪絏絭絜絫絒絔絩絑絟絎缾缿罥�".split(""); +for(j = 0; j != D[218].length; ++j) if(D[218][j].charCodeAt(0) !== 0xFFFD) { e[D[218][j]] = 55808 + j; d[55808 + j] = D[218][j];} +D[219] = "����������������������������������������������������������������罦羢羠羡翗聑聏聐胾胔腃腊腒腏腇脽腍脺臦臮臷臸臹舄舼舽舿艵茻菏菹萣菀菨萒菧菤菼菶萐菆菈菫菣莿萁菝菥菘菿菡菋菎菖菵菉萉萏菞萑萆菂菳����������������������������������菕菺菇菑菪萓菃菬菮菄菻菗菢萛菛菾蛘蛢蛦蛓蛣蛚蛪蛝蛫蛜蛬蛩蛗蛨蛑衈衖衕袺裗袹袸裀袾袶袼袷袽袲褁裉覕覘覗觝觚觛詎詍訹詙詀詗詘詄詅詒詈詑詊詌詏豟貁貀貺貾貰貹貵趄趀趉跘跓跍跇跖跜跏跕跙跈跗跅軯軷軺�".split(""); +for(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];} +D[220] = "����������������������������������������������������������������軹軦軮軥軵軧軨軶軫軱軬軴軩逭逴逯鄆鄬鄄郿郼鄈郹郻鄁鄀鄇鄅鄃酡酤酟酢酠鈁鈊鈥鈃鈚鈦鈏鈌鈀鈒釿釽鈆鈄鈧鈂鈜鈤鈙鈗鈅鈖镻閍閌閐隇陾隈����������������������������������隉隃隀雂雈雃雱雰靬靰靮頇颩飫鳦黹亃亄亶傽傿僆傮僄僊傴僈僂傰僁傺傱僋僉傶傸凗剺剸剻剼嗃嗛嗌嗐嗋嗊嗝嗀嗔嗄嗩喿嗒喍嗏嗕嗢嗖嗈嗲嗍嗙嗂圔塓塨塤塏塍塉塯塕塎塝塙塥塛堽塣塱壼嫇嫄嫋媺媸媱媵媰媿嫈媻嫆�".split(""); +for(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];} +D[221] = "����������������������������������������������������������������媷嫀嫊媴媶嫍媹媐寖寘寙尟尳嵱嵣嵊嵥嵲嵬嵞嵨嵧嵢巰幏幎幊幍幋廅廌廆廋廇彀徯徭惷慉慊愫慅愶愲愮慆愯慏愩慀戠酨戣戥戤揅揱揫搐搒搉搠搤����������������������������������搳摃搟搕搘搹搷搢搣搌搦搰搨摁搵搯搊搚摀搥搧搋揧搛搮搡搎敯斒旓暆暌暕暐暋暊暙暔晸朠楦楟椸楎楢楱椿楅楪椹楂楗楙楺楈楉椵楬椳椽楥棰楸椴楩楀楯楄楶楘楁楴楌椻楋椷楜楏楑椲楒椯楻椼歆歅歃歂歈歁殛嗀毻毼�".split(""); +for(j = 0; j != D[221].length; ++j) if(D[221][j].charCodeAt(0) !== 0xFFFD) { e[D[221][j]] = 56576 + j; d[56576 + j] = D[221][j];} +D[222] = "����������������������������������������������������������������毹毷毸溛滖滈溏滀溟溓溔溠溱溹滆滒溽滁溞滉溷溰滍溦滏溲溾滃滜滘溙溒溎溍溤溡溿溳滐滊溗溮溣煇煔煒煣煠煁煝煢煲煸煪煡煂煘煃煋煰煟煐煓����������������������������������煄煍煚牏犍犌犑犐犎猼獂猻猺獀獊獉瑄瑊瑋瑒瑑瑗瑀瑏瑐瑎瑂瑆瑍瑔瓡瓿瓾瓽甝畹畷榃痯瘏瘃痷痾痼痹痸瘐痻痶痭痵痽皙皵盝睕睟睠睒睖睚睩睧睔睙睭矠碇碚碔碏碄碕碅碆碡碃硹碙碀碖硻祼禂祽祹稑稘稙稒稗稕稢稓�".split(""); +for(j = 0; j != D[222].length; ++j) if(D[222][j].charCodeAt(0) !== 0xFFFD) { e[D[222][j]] = 56832 + j; d[56832 + j] = D[222][j];} +D[223] = "����������������������������������������������������������������稛稐窣窢窞竫筦筤筭筴筩筲筥筳筱筰筡筸筶筣粲粴粯綈綆綀綍絿綅絺綎絻綃絼綌綔綄絽綒罭罫罧罨罬羦羥羧翛翜耡腤腠腷腜腩腛腢腲朡腞腶腧腯����������������������������������腄腡舝艉艄艀艂艅蓱萿葖葶葹蒏蒍葥葑葀蒆葧萰葍葽葚葙葴葳葝蔇葞萷萺萴葺葃葸萲葅萩菙葋萯葂萭葟葰萹葎葌葒葯蓅蒎萻葇萶萳葨葾葄萫葠葔葮葐蜋蜄蛷蜌蛺蛖蛵蝍蛸蜎蜉蜁蛶蜍蜅裖裋裍裎裞裛裚裌裐覅覛觟觥觤�".split(""); +for(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];} +D[224] = "����������������������������������������������������������������觡觠觢觜触詶誆詿詡訿詷誂誄詵誃誁詴詺谼豋豊豥豤豦貆貄貅賌赨赩趑趌趎趏趍趓趔趐趒跰跠跬跱跮跐跩跣跢跧跲跫跴輆軿輁輀輅輇輈輂輋遒逿����������������������������������遄遉逽鄐鄍鄏鄑鄖鄔鄋鄎酮酯鉈鉒鈰鈺鉦鈳鉥鉞銃鈮鉊鉆鉭鉬鉏鉠鉧鉯鈶鉡鉰鈱鉔鉣鉐鉲鉎鉓鉌鉖鈲閟閜閞閛隒隓隑隗雎雺雽雸雵靳靷靸靲頏頍頎颬飶飹馯馲馰馵骭骫魛鳪鳭鳧麀黽僦僔僗僨僳僛僪僝僤僓僬僰僯僣僠�".split(""); +for(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];} +D[225] = "����������������������������������������������������������������凘劀劁勩勫匰厬嘧嘕嘌嘒嗼嘏嘜嘁嘓嘂嗺嘝嘄嗿嗹墉塼墐墘墆墁塿塴墋塺墇墑墎塶墂墈塻墔墏壾奫嫜嫮嫥嫕嫪嫚嫭嫫嫳嫢嫠嫛嫬嫞嫝嫙嫨嫟孷寠����������������������������������寣屣嶂嶀嵽嶆嵺嶁嵷嶊嶉嶈嵾嵼嶍嵹嵿幘幙幓廘廑廗廎廜廕廙廒廔彄彃彯徶愬愨慁慞慱慳慒慓慲慬憀慴慔慺慛慥愻慪慡慖戩戧戫搫摍摛摝摴摶摲摳摽摵摦撦摎撂摞摜摋摓摠摐摿搿摬摫摙摥摷敳斠暡暠暟朅朄朢榱榶槉�".split(""); +for(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];} +D[226] = "����������������������������������������������������������������榠槎榖榰榬榼榑榙榎榧榍榩榾榯榿槄榽榤槔榹槊榚槏榳榓榪榡榞槙榗榐槂榵榥槆歊歍歋殞殟殠毃毄毾滎滵滱漃漥滸漷滻漮漉潎漙漚漧漘漻漒滭漊����������������������������������漶潳滹滮漭潀漰漼漵滫漇漎潃漅滽滶漹漜滼漺漟漍漞漈漡熇熐熉熀熅熂熏煻熆熁熗牄牓犗犕犓獃獍獑獌瑢瑳瑱瑵瑲瑧瑮甀甂甃畽疐瘖瘈瘌瘕瘑瘊瘔皸瞁睼瞅瞂睮瞀睯睾瞃碲碪碴碭碨硾碫碞碥碠碬碢碤禘禊禋禖禕禔禓�".split(""); +for(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];} +D[227] = "����������������������������������������������������������������禗禈禒禐稫穊稰稯稨稦窨窫窬竮箈箜箊箑箐箖箍箌箛箎箅箘劄箙箤箂粻粿粼粺綧綷緂綣綪緁緀緅綝緎緄緆緋緌綯綹綖綼綟綦綮綩綡緉罳翢翣翥翞����������������������������������耤聝聜膉膆膃膇膍膌膋舕蒗蒤蒡蒟蒺蓎蓂蒬蒮蒫蒹蒴蓁蓍蒪蒚蒱蓐蒝蒧蒻蒢蒔蓇蓌蒛蒩蒯蒨蓖蒘蒶蓏蒠蓗蓔蓒蓛蒰蒑虡蜳蜣蜨蝫蝀蜮蜞蜡蜙蜛蝃蜬蝁蜾蝆蜠蜲蜪蜭蜼蜒蜺蜱蜵蝂蜦蜧蜸蜤蜚蜰蜑裷裧裱裲裺裾裮裼裶裻�".split(""); +for(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];} +D[228] = "����������������������������������������������������������������裰裬裫覝覡覟覞觩觫觨誫誙誋誒誏誖谽豨豩賕賏賗趖踉踂跿踍跽踊踃踇踆踅跾踀踄輐輑輎輍鄣鄜鄠鄢鄟鄝鄚鄤鄡鄛酺酲酹酳銥銤鉶銛鉺銠銔銪銍����������������������������������銦銚銫鉹銗鉿銣鋮銎銂銕銢鉽銈銡銊銆銌銙銧鉾銇銩銝銋鈭隞隡雿靘靽靺靾鞃鞀鞂靻鞄鞁靿韎韍頖颭颮餂餀餇馝馜駃馹馻馺駂馽駇骱髣髧鬾鬿魠魡魟鳱鳲鳵麧僿儃儰僸儆儇僶僾儋儌僽儊劋劌勱勯噈噂噌嘵噁噊噉噆噘�".split(""); +for(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];} +D[229] = "����������������������������������������������������������������噚噀嘳嘽嘬嘾嘸嘪嘺圚墫墝墱墠墣墯墬墥墡壿嫿嫴嫽嫷嫶嬃嫸嬂嫹嬁嬇嬅嬏屧嶙嶗嶟嶒嶢嶓嶕嶠嶜嶡嶚嶞幩幝幠幜緳廛廞廡彉徲憋憃慹憱憰憢憉����������������������������������憛憓憯憭憟憒憪憡憍慦憳戭摮摰撖撠撅撗撜撏撋撊撌撣撟摨撱撘敶敺敹敻斲斳暵暰暩暲暷暪暯樀樆樗槥槸樕槱槤樠槿槬槢樛樝槾樧槲槮樔槷槧橀樈槦槻樍槼槫樉樄樘樥樏槶樦樇槴樖歑殥殣殢殦氁氀毿氂潁漦潾澇濆澒�".split(""); +for(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];} +D[230] = "����������������������������������������������������������������澍澉澌潢潏澅潚澖潶潬澂潕潲潒潐潗澔澓潝漀潡潫潽潧澐潓澋潩潿澕潣潷潪潻熲熯熛熰熠熚熩熵熝熥熞熤熡熪熜熧熳犘犚獘獒獞獟獠獝獛獡獚獙����������������������������������獢璇璉璊璆璁瑽璅璈瑼瑹甈甇畾瘥瘞瘙瘝瘜瘣瘚瘨瘛皜皝皞皛瞍瞏瞉瞈磍碻磏磌磑磎磔磈磃磄磉禚禡禠禜禢禛歶稹窲窴窳箷篋箾箬篎箯箹篊箵糅糈糌糋緷緛緪緧緗緡縃緺緦緶緱緰緮緟罶羬羰羭翭翫翪翬翦翨聤聧膣膟�".split(""); +for(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];} +D[231] = "����������������������������������������������������������������膞膕膢膙膗舖艏艓艒艐艎艑蔤蔻蔏蔀蔩蔎蔉蔍蔟蔊蔧蔜蓻蔫蓺蔈蔌蓴蔪蓲蔕蓷蓫蓳蓼蔒蓪蓩蔖蓾蔨蔝蔮蔂蓽蔞蓶蔱蔦蓧蓨蓰蓯蓹蔘蔠蔰蔋蔙蔯虢����������������������������������蝖蝣蝤蝷蟡蝳蝘蝔蝛蝒蝡蝚蝑蝞蝭蝪蝐蝎蝟蝝蝯蝬蝺蝮蝜蝥蝏蝻蝵蝢蝧蝩衚褅褌褔褋褗褘褙褆褖褑褎褉覢覤覣觭觰觬諏諆誸諓諑諔諕誻諗誾諀諅諘諃誺誽諙谾豍貏賥賟賙賨賚賝賧趠趜趡趛踠踣踥踤踮踕踛踖踑踙踦踧�".split(""); +for(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];} +D[232] = "����������������������������������������������������������������踔踒踘踓踜踗踚輬輤輘輚輠輣輖輗遳遰遯遧遫鄯鄫鄩鄪鄲鄦鄮醅醆醊醁醂醄醀鋐鋃鋄鋀鋙銶鋏鋱鋟鋘鋩鋗鋝鋌鋯鋂鋨鋊鋈鋎鋦鋍鋕鋉鋠鋞鋧鋑鋓����������������������������������銵鋡鋆銴镼閬閫閮閰隤隢雓霅霈霂靚鞊鞎鞈韐韏頞頝頦頩頨頠頛頧颲餈飺餑餔餖餗餕駜駍駏駓駔駎駉駖駘駋駗駌骳髬髫髳髲髱魆魃魧魴魱魦魶魵魰魨魤魬鳼鳺鳽鳿鳷鴇鴀鳹鳻鴈鴅鴄麃黓鼏鼐儜儓儗儚儑凞匴叡噰噠噮�".split(""); +for(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];} +D[233] = "����������������������������������������������������������������噳噦噣噭噲噞噷圜圛壈墽壉墿墺壂墼壆嬗嬙嬛嬡嬔嬓嬐嬖嬨嬚嬠嬞寯嶬嶱嶩嶧嶵嶰嶮嶪嶨嶲嶭嶯嶴幧幨幦幯廩廧廦廨廥彋徼憝憨憖懅憴懆懁懌憺����������������������������������憿憸憌擗擖擐擏擉撽撉擃擛擳擙攳敿敼斢曈暾曀曊曋曏暽暻暺曌朣樴橦橉橧樲橨樾橝橭橶橛橑樨橚樻樿橁橪橤橐橏橔橯橩橠樼橞橖橕橍橎橆歕歔歖殧殪殫毈毇氄氃氆澭濋澣濇澼濎濈潞濄澽澞濊澨瀄澥澮澺澬澪濏澿澸�".split(""); +for(j = 0; j != D[233].length; ++j) if(D[233][j].charCodeAt(0) !== 0xFFFD) { e[D[233][j]] = 59648 + j; d[59648 + j] = D[233][j];} +D[234] = "����������������������������������������������������������������澢濉澫濍澯澲澰燅燂熿熸燖燀燁燋燔燊燇燏熽燘熼燆燚燛犝犞獩獦獧獬獥獫獪瑿璚璠璔璒璕璡甋疀瘯瘭瘱瘽瘳瘼瘵瘲瘰皻盦瞚瞝瞡瞜瞛瞢瞣瞕瞙����������������������������������瞗磝磩磥磪磞磣磛磡磢磭磟磠禤穄穈穇窶窸窵窱窷篞篣篧篝篕篥篚篨篹篔篪篢篜篫篘篟糒糔糗糐糑縒縡縗縌縟縠縓縎縜縕縚縢縋縏縖縍縔縥縤罃罻罼罺羱翯耪耩聬膱膦膮膹膵膫膰膬膴膲膷膧臲艕艖艗蕖蕅蕫蕍蕓蕡蕘�".split(""); +for(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];} +D[235] = "����������������������������������������������������������������蕀蕆蕤蕁蕢蕄蕑蕇蕣蔾蕛蕱蕎蕮蕵蕕蕧蕠薌蕦蕝蕔蕥蕬虣虥虤螛螏螗螓螒螈螁螖螘蝹螇螣螅螐螑螝螄螔螜螚螉褞褦褰褭褮褧褱褢褩褣褯褬褟觱諠����������������������������������諢諲諴諵諝謔諤諟諰諈諞諡諨諿諯諻貑貒貐賵賮賱賰賳赬赮趥趧踳踾踸蹀蹅踶踼踽蹁踰踿躽輶輮輵輲輹輷輴遶遹遻邆郺鄳鄵鄶醓醐醑醍醏錧錞錈錟錆錏鍺錸錼錛錣錒錁鍆錭錎錍鋋錝鋺錥錓鋹鋷錴錂錤鋿錩錹錵錪錔錌�".split(""); +for(j = 0; j != D[235].length; ++j) if(D[235][j].charCodeAt(0) !== 0xFFFD) { e[D[235][j]] = 60160 + j; d[60160 + j] = D[235][j];} +D[236] = "����������������������������������������������������������������錋鋾錉錀鋻錖閼闍閾閹閺閶閿閵閽隩雔霋霒霐鞙鞗鞔韰韸頵頯頲餤餟餧餩馞駮駬駥駤駰駣駪駩駧骹骿骴骻髶髺髹髷鬳鮀鮅鮇魼魾魻鮂鮓鮒鮐魺鮕����������������������������������魽鮈鴥鴗鴠鴞鴔鴩鴝鴘鴢鴐鴙鴟麈麆麇麮麭黕黖黺鼒鼽儦儥儢儤儠儩勴嚓嚌嚍嚆嚄嚃噾嚂噿嚁壖壔壏壒嬭嬥嬲嬣嬬嬧嬦嬯嬮孻寱寲嶷幬幪徾徻懃憵憼懧懠懥懤懨懞擯擩擣擫擤擨斁斀斶旚曒檍檖檁檥檉檟檛檡檞檇檓檎�".split(""); +for(j = 0; j != D[236].length; ++j) if(D[236][j].charCodeAt(0) !== 0xFFFD) { e[D[236][j]] = 60416 + j; d[60416 + j] = D[236][j];} +D[237] = "����������������������������������������������������������������檕檃檨檤檑橿檦檚檅檌檒歛殭氉濌澩濴濔濣濜濭濧濦濞濲濝濢濨燡燱燨燲燤燰燢獳獮獯璗璲璫璐璪璭璱璥璯甐甑甒甏疄癃癈癉癇皤盩瞵瞫瞲瞷瞶����������������������������������瞴瞱瞨矰磳磽礂磻磼磲礅磹磾礄禫禨穜穛穖穘穔穚窾竀竁簅簏篲簀篿篻簎篴簋篳簂簉簃簁篸篽簆篰篱簐簊糨縭縼繂縳顈縸縪繉繀繇縩繌縰縻縶繄縺罅罿罾罽翴翲耬膻臄臌臊臅臇膼臩艛艚艜薃薀薏薧薕薠薋薣蕻薤薚薞�".split(""); +for(j = 0; j != D[237].length; ++j) if(D[237][j].charCodeAt(0) !== 0xFFFD) { e[D[237][j]] = 60672 + j; d[60672 + j] = D[237][j];} +D[238] = "����������������������������������������������������������������蕷蕼薉薡蕺蕸蕗薎薖薆薍薙薝薁薢薂薈薅蕹蕶薘薐薟虨螾螪螭蟅螰螬螹螵螼螮蟉蟃蟂蟌螷螯蟄蟊螴螶螿螸螽蟞螲褵褳褼褾襁襒褷襂覭覯覮觲觳謞����������������������������������謘謖謑謅謋謢謏謒謕謇謍謈謆謜謓謚豏豰豲豱豯貕貔賹赯蹎蹍蹓蹐蹌蹇轃轀邅遾鄸醚醢醛醙醟醡醝醠鎡鎃鎯鍤鍖鍇鍼鍘鍜鍶鍉鍐鍑鍠鍭鎏鍌鍪鍹鍗鍕鍒鍏鍱鍷鍻鍡鍞鍣鍧鎀鍎鍙闇闀闉闃闅閷隮隰隬霠霟霘霝霙鞚鞡鞜�".split(""); +for(j = 0; j != D[238].length; ++j) if(D[238][j].charCodeAt(0) !== 0xFFFD) { e[D[238][j]] = 60928 + j; d[60928 + j] = D[238][j];} +D[239] = "����������������������������������������������������������������鞞鞝韕韔韱顁顄顊顉顅顃餥餫餬餪餳餲餯餭餱餰馘馣馡騂駺駴駷駹駸駶駻駽駾駼騃骾髾髽鬁髼魈鮚鮨鮞鮛鮦鮡鮥鮤鮆鮢鮠鮯鴳鵁鵧鴶鴮鴯鴱鴸鴰����������������������������������鵅鵂鵃鴾鴷鵀鴽翵鴭麊麉麍麰黈黚黻黿鼤鼣鼢齔龠儱儭儮嚘嚜嚗嚚嚝嚙奰嬼屩屪巀幭幮懘懟懭懮懱懪懰懫懖懩擿攄擽擸攁攃擼斔旛曚曛曘櫅檹檽櫡櫆檺檶檷櫇檴檭歞毉氋瀇瀌瀍瀁瀅瀔瀎濿瀀濻瀦濼濷瀊爁燿燹爃燽獶�".split(""); +for(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];} +D[240] = "����������������������������������������������������������������璸瓀璵瓁璾璶璻瓂甔甓癜癤癙癐癓癗癚皦皽盬矂瞺磿礌礓礔礉礐礒礑禭禬穟簜簩簙簠簟簭簝簦簨簢簥簰繜繐繖繣繘繢繟繑繠繗繓羵羳翷翸聵臑臒����������������������������������臐艟艞薴藆藀藃藂薳薵薽藇藄薿藋藎藈藅薱薶藒蘤薸薷薾虩蟧蟦蟢蟛蟫蟪蟥蟟蟳蟤蟔蟜蟓蟭蟘蟣螤蟗蟙蠁蟴蟨蟝襓襋襏襌襆襐襑襉謪謧謣謳謰謵譇謯謼謾謱謥謷謦謶謮謤謻謽謺豂豵貙貘貗賾贄贂贀蹜蹢蹠蹗蹖蹞蹥蹧�".split(""); +for(j = 0; j != D[240].length; ++j) if(D[240][j].charCodeAt(0) !== 0xFFFD) { e[D[240][j]] = 61440 + j; d[61440 + j] = D[240][j];} +D[241] = "����������������������������������������������������������������蹛蹚蹡蹝蹩蹔轆轇轈轋鄨鄺鄻鄾醨醥醧醯醪鎵鎌鎒鎷鎛鎝鎉鎧鎎鎪鎞鎦鎕鎈鎙鎟鎍鎱鎑鎲鎤鎨鎴鎣鎥闒闓闑隳雗雚巂雟雘雝霣霢霥鞬鞮鞨鞫鞤鞪����������������������������������鞢鞥韗韙韖韘韺顐顑顒颸饁餼餺騏騋騉騍騄騑騊騅騇騆髀髜鬈鬄鬅鬩鬵魊魌魋鯇鯆鯃鮿鯁鮵鮸鯓鮶鯄鮹鮽鵜鵓鵏鵊鵛鵋鵙鵖鵌鵗鵒鵔鵟鵘鵚麎麌黟鼁鼀鼖鼥鼫鼪鼩鼨齌齕儴儵劖勷厴嚫嚭嚦嚧嚪嚬壚壝壛夒嬽嬾嬿巃幰�".split(""); +for(j = 0; j != D[241].length; ++j) if(D[241][j].charCodeAt(0) !== 0xFFFD) { e[D[241][j]] = 61696 + j; d[61696 + j] = D[241][j];} +D[242] = "����������������������������������������������������������������徿懻攇攐攍攉攌攎斄旞旝曞櫧櫠櫌櫑櫙櫋櫟櫜櫐櫫櫏櫍櫞歠殰氌瀙瀧瀠瀖瀫瀡瀢瀣瀩瀗瀤瀜瀪爌爊爇爂爅犥犦犤犣犡瓋瓅璷瓃甖癠矉矊矄矱礝礛����������������������������������礡礜礗礞禰穧穨簳簼簹簬簻糬糪繶繵繸繰繷繯繺繲繴繨罋罊羃羆羷翽翾聸臗臕艤艡艣藫藱藭藙藡藨藚藗藬藲藸藘藟藣藜藑藰藦藯藞藢蠀蟺蠃蟶蟷蠉蠌蠋蠆蟼蠈蟿蠊蠂襢襚襛襗襡襜襘襝襙覈覷覶觶譐譈譊譀譓譖譔譋譕�".split(""); +for(j = 0; j != D[242].length; ++j) if(D[242][j].charCodeAt(0) !== 0xFFFD) { e[D[242][j]] = 61952 + j; d[61952 + j] = D[242][j];} +D[243] = "����������������������������������������������������������������譑譂譒譗豃豷豶貚贆贇贉趬趪趭趫蹭蹸蹳蹪蹯蹻軂轒轑轏轐轓辴酀鄿醰醭鏞鏇鏏鏂鏚鏐鏹鏬鏌鏙鎩鏦鏊鏔鏮鏣鏕鏄鏎鏀鏒鏧镽闚闛雡霩霫霬霨霦����������������������������������鞳鞷鞶韝韞韟顜顙顝顗颿颽颻颾饈饇饃馦馧騚騕騥騝騤騛騢騠騧騣騞騜騔髂鬋鬊鬎鬌鬷鯪鯫鯠鯞鯤鯦鯢鯰鯔鯗鯬鯜鯙鯥鯕鯡鯚鵷鶁鶊鶄鶈鵱鶀鵸鶆鶋鶌鵽鵫鵴鵵鵰鵩鶅鵳鵻鶂鵯鵹鵿鶇鵨麔麑黀黼鼭齀齁齍齖齗齘匷嚲�".split(""); +for(j = 0; j != D[243].length; ++j) if(D[243][j].charCodeAt(0) !== 0xFFFD) { e[D[243][j]] = 62208 + j; d[62208 + j] = D[243][j];} +D[244] = "����������������������������������������������������������������嚵嚳壣孅巆巇廮廯忀忁懹攗攖攕攓旟曨曣曤櫳櫰櫪櫨櫹櫱櫮櫯瀼瀵瀯瀷瀴瀱灂瀸瀿瀺瀹灀瀻瀳灁爓爔犨獽獼璺皫皪皾盭矌矎矏矍矲礥礣礧礨礤礩����������������������������������禲穮穬穭竷籉籈籊籇籅糮繻繾纁纀羺翿聹臛臙舋艨艩蘢藿蘁藾蘛蘀藶蘄蘉蘅蘌藽蠙蠐蠑蠗蠓蠖襣襦覹觷譠譪譝譨譣譥譧譭趮躆躈躄轙轖轗轕轘轚邍酃酁醷醵醲醳鐋鐓鏻鐠鐏鐔鏾鐕鐐鐨鐙鐍鏵鐀鏷鐇鐎鐖鐒鏺鐉鏸鐊鏿�".split(""); +for(j = 0; j != D[244].length; ++j) if(D[244][j].charCodeAt(0) !== 0xFFFD) { e[D[244][j]] = 62464 + j; d[62464 + j] = D[244][j];} +D[245] = "����������������������������������������������������������������鏼鐌鏶鐑鐆闞闠闟霮霯鞹鞻韽韾顠顢顣顟飁飂饐饎饙饌饋饓騲騴騱騬騪騶騩騮騸騭髇髊髆鬐鬒鬑鰋鰈鯷鰅鰒鯸鱀鰇鰎鰆鰗鰔鰉鶟鶙鶤鶝鶒鶘鶐鶛����������������������������������鶠鶔鶜鶪鶗鶡鶚鶢鶨鶞鶣鶿鶩鶖鶦鶧麙麛麚黥黤黧黦鼰鼮齛齠齞齝齙龑儺儹劘劗囃嚽嚾孈孇巋巏廱懽攛欂櫼欃櫸欀灃灄灊灈灉灅灆爝爚爙獾甗癪矐礭礱礯籔籓糲纊纇纈纋纆纍罍羻耰臝蘘蘪蘦蘟蘣蘜蘙蘧蘮蘡蘠蘩蘞蘥�".split(""); +for(j = 0; j != D[245].length; ++j) if(D[245][j].charCodeAt(0) !== 0xFFFD) { e[D[245][j]] = 62720 + j; d[62720 + j] = D[245][j];} +D[246] = "����������������������������������������������������������������蠩蠝蠛蠠蠤蠜蠫衊襭襩襮襫觺譹譸譅譺譻贐贔趯躎躌轞轛轝酆酄酅醹鐿鐻鐶鐩鐽鐼鐰鐹鐪鐷鐬鑀鐱闥闤闣霵霺鞿韡顤飉飆飀饘饖騹騽驆驄驂驁騺����������������������������������騿髍鬕鬗鬘鬖鬺魒鰫鰝鰜鰬鰣鰨鰩鰤鰡鶷鶶鶼鷁鷇鷊鷏鶾鷅鷃鶻鶵鷎鶹鶺鶬鷈鶱鶭鷌鶳鷍鶲鹺麜黫黮黭鼛鼘鼚鼱齎齥齤龒亹囆囅囋奱孋孌巕巑廲攡攠攦攢欋欈欉氍灕灖灗灒爞爟犩獿瓘瓕瓙瓗癭皭礵禴穰穱籗籜籙籛籚�".split(""); +for(j = 0; j != D[246].length; ++j) if(D[246][j].charCodeAt(0) !== 0xFFFD) { e[D[246][j]] = 62976 + j; d[62976 + j] = D[246][j];} +D[247] = "����������������������������������������������������������������糴糱纑罏羇臞艫蘴蘵蘳蘬蘲蘶蠬蠨蠦蠪蠥襱覿覾觻譾讄讂讆讅譿贕躕躔躚躒躐躖躗轠轢酇鑌鑐鑊鑋鑏鑇鑅鑈鑉鑆霿韣顪顩飋饔饛驎驓驔驌驏驈驊����������������������������������驉驒驐髐鬙鬫鬻魖魕鱆鱈鰿鱄鰹鰳鱁鰼鰷鰴鰲鰽鰶鷛鷒鷞鷚鷋鷐鷜鷑鷟鷩鷙鷘鷖鷵鷕鷝麶黰鼵鼳鼲齂齫龕龢儽劙壨壧奲孍巘蠯彏戁戃戄攩攥斖曫欑欒欏毊灛灚爢玂玁玃癰矔籧籦纕艬蘺虀蘹蘼蘱蘻蘾蠰蠲蠮蠳襶襴襳觾�".split(""); +for(j = 0; j != D[247].length; ++j) if(D[247][j].charCodeAt(0) !== 0xFFFD) { e[D[247][j]] = 63232 + j; d[63232 + j] = D[247][j];} +D[248] = "����������������������������������������������������������������讌讎讋讈豅贙躘轤轣醼鑢鑕鑝鑗鑞韄韅頀驖驙鬞鬟鬠鱒鱘鱐鱊鱍鱋鱕鱙鱌鱎鷻鷷鷯鷣鷫鷸鷤鷶鷡鷮鷦鷲鷰鷢鷬鷴鷳鷨鷭黂黐黲黳鼆鼜鼸鼷鼶齃齏����������������������������������齱齰齮齯囓囍孎屭攭曭曮欓灟灡灝灠爣瓛瓥矕礸禷禶籪纗羉艭虃蠸蠷蠵衋讔讕躞躟躠躝醾醽釂鑫鑨鑩雥靆靃靇韇韥驞髕魙鱣鱧鱦鱢鱞鱠鸂鷾鸇鸃鸆鸅鸀鸁鸉鷿鷽鸄麠鼞齆齴齵齶囔攮斸欘欙欗欚灢爦犪矘矙礹籩籫糶纚�".split(""); +for(j = 0; j != D[248].length; ++j) if(D[248][j].charCodeAt(0) !== 0xFFFD) { e[D[248][j]] = 63488 + j; d[63488 + j] = D[248][j];} +D[249] = "����������������������������������������������������������������纘纛纙臠臡虆虇虈襹襺襼襻觿讘讙躥躤躣鑮鑭鑯鑱鑳靉顲饟鱨鱮鱭鸋鸍鸐鸏鸒鸑麡黵鼉齇齸齻齺齹圞灦籯蠼趲躦釃鑴鑸鑶鑵驠鱴鱳鱱鱵鸔鸓黶鼊����������������������������������龤灨灥糷虪蠾蠽蠿讞貜躩軉靋顳顴飌饡馫驤驦驧鬤鸕鸗齈戇欞爧虌躨钂钀钁驩驨鬮鸙爩虋讟钃鱹麷癵驫鱺鸝灩灪麤齾齉龘碁銹裏墻恒粧嫺╔╦╗╠╬╣╚╩╝╒╤╕╞╪╡╘╧╛╓╥╖╟╫╢╙╨╜║═����▓�".split(""); +for(j = 0; j != D[249].length; ++j) if(D[249][j].charCodeAt(0) !== 0xFFFD) { e[D[249][j]] = 63744 + j; d[63744 + j] = D[249][j];} +D[250] = "���������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[250].length; ++j) if(D[250][j].charCodeAt(0) !== 0xFFFD) { e[D[250][j]] = 64000 + j; d[64000 + j] = D[250][j];} +D[251] = "���������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[251].length; ++j) if(D[251][j].charCodeAt(0) !== 0xFFFD) { e[D[251][j]] = 64256 + j; d[64256 + j] = D[251][j];} +D[252] = "���������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[252].length; ++j) if(D[252][j].charCodeAt(0) !== 0xFFFD) { e[D[252][j]] = 64512 + j; d[64512 + j] = D[252][j];} +return {"enc": e, "dec": d }; })(); diff --git a/node_modules/codepage/bits/10003.js b/node_modules/codepage/bits/10003.js new file mode 100644 index 000000000..4a59d8ba1 --- /dev/null +++ b/node_modules/codepage/bits/10003.js @@ -0,0 +1,183 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[10003] = (function(){ var d = [], e = {}, D = [], j; +D[0] = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];} +D[161] = "����������������������������������������������������������������������������������������������������������������������������������������������������������������� 、。·‥…¨〃­―∥\∼‘’“”〔〕〈〉《》「」『』【】±×÷≠≤≥∞∴°′″℃Å¢£¥♂♀∠⊥⌒∂∇≡≒§※☆★○●◎◇◆□■△▲▽▼→←↑↓↔〓≪≫√∽∝∵∫∬∈∋⊆⊇⊂⊃∪∩∧∨¬�".split(""); +for(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];} +D[162] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������⇒⇔∀∃´~ˇ˘˝˚˙¸˛¡¿ː∮∑∏¤℉‰◁◀▷▶♤♠♡♥♧♣⊙◈▣◐◑▒▤▥▨▧▦▩♨☏☎☜☞¶†‡↕↗↙↖↘♭♩♪♬㉿㈜№㏇™㏂㏘℡€®������������������������".split(""); +for(j = 0; j != D[162].length; ++j) if(D[162][j].charCodeAt(0) !== 0xFFFD) { e[D[162][j]] = 41472 + j; d[41472 + j] = D[162][j];} +D[163] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[₩]^_`abcdefghijklmnopqrstuvwxyz{|} ̄�".split(""); +for(j = 0; j != D[163].length; ++j) if(D[163][j].charCodeAt(0) !== 0xFFFD) { e[D[163][j]] = 41728 + j; d[41728 + j] = D[163][j];} +D[164] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������ㄱㄲㄳㄴㄵㄶㄷㄸㄹㄺㄻㄼㄽㄾㄿㅀㅁㅂㅃㅄㅅㅆㅇㅈㅉㅊㅋㅌㅍㅎㅏㅐㅑㅒㅓㅔㅕㅖㅗㅘㅙㅚㅛㅜㅝㅞㅟㅠㅡㅢㅣㅤㅥㅦㅧㅨㅩㅪㅫㅬㅭㅮㅯㅰㅱㅲㅳㅴㅵㅶㅷㅸㅹㅺㅻㅼㅽㅾㅿㆀㆁㆂㆃㆄㆅㆆㆇㆈㆉㆊㆋㆌㆍㆎ�".split(""); +for(j = 0; j != D[164].length; ++j) if(D[164][j].charCodeAt(0) !== 0xFFFD) { e[D[164][j]] = 41984 + j; d[41984 + j] = D[164][j];} +D[165] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������ⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹ�����ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩ�������ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ��������αβγδεζηθικλμνξοπρστυφχψω�������".split(""); +for(j = 0; j != D[165].length; ++j) if(D[165][j].charCodeAt(0) !== 0xFFFD) { e[D[165][j]] = 42240 + j; d[42240 + j] = D[165][j];} +D[166] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂┒┑┚┙┖┕┎┍┞┟┡┢┦┧┩┪┭┮┱┲┵┶┹┺┽┾╀╁╃╄╅╆╇╈╉╊���������������������������".split(""); +for(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];} +D[167] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������㎕㎖㎗ℓ㎘㏄㎣㎤㎥㎦㎙㎚㎛㎜㎝㎞㎟㎠㎡㎢㏊㎍㎎㎏㏏㎈㎉㏈㎧㎨㎰㎱㎲㎳㎴㎵㎶㎷㎸㎹㎀㎁㎂㎃㎄㎺㎻㎼㎽㎾㎿㎐㎑㎒㎓㎔Ω㏀㏁㎊㎋㎌㏖㏅㎭㎮㎯㏛㎩㎪㎫㎬㏝㏐㏓㏃㏉㏜㏆����������������".split(""); +for(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];} +D[168] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������ÆЪĦ�IJ�ĿŁØŒºÞŦŊ�㉠㉡㉢㉣㉤㉥㉦㉧㉨㉩㉪㉫㉬㉭㉮㉯㉰㉱㉲㉳㉴㉵㉶㉷㉸㉹㉺㉻ⓐⓑⓒⓓⓔⓕⓖⓗⓘⓙⓚⓛⓜⓝⓞⓟⓠⓡⓢⓣⓤⓥⓦⓧⓨⓩ①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮½⅓⅔¼¾⅛⅜⅝⅞�".split(""); +for(j = 0; j != D[168].length; ++j) if(D[168][j].charCodeAt(0) !== 0xFFFD) { e[D[168][j]] = 43008 + j; d[43008 + j] = D[168][j];} +D[169] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������æđðħıijĸŀłøœßþŧŋʼn㈀㈁㈂㈃㈄㈅㈆㈇㈈㈉㈊㈋㈌㈍㈎㈏㈐㈑㈒㈓㈔㈕㈖㈗㈘㈙㈚㈛⒜⒝⒞⒟⒠⒡⒢⒣⒤⒥⒦⒧⒨⒩⒪⒫⒬⒭⒮⒯⒰⒱⒲⒳⒴⒵⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽⑾⑿⒀⒁⒂¹²³⁴ⁿ₁₂₃₄�".split(""); +for(j = 0; j != D[169].length; ++j) if(D[169][j].charCodeAt(0) !== 0xFFFD) { e[D[169][j]] = 43264 + j; d[43264 + j] = D[169][j];} +D[170] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをん������������".split(""); +for(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];} +D[171] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶ���������".split(""); +for(j = 0; j != D[171].length; ++j) if(D[171][j].charCodeAt(0) !== 0xFFFD) { e[D[171][j]] = 43776 + j; d[43776 + j] = D[171][j];} +D[172] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ���������������абвгдеёжзийклмнопрстуфхцчшщъыьэюя��������������".split(""); +for(j = 0; j != D[172].length; ++j) if(D[172][j].charCodeAt(0) !== 0xFFFD) { e[D[172][j]] = 44032 + j; d[44032 + j] = D[172][j];} +D[176] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������가각간갇갈갉갊감갑값갓갔강갖갗같갚갛개객갠갤갬갭갯갰갱갸갹갼걀걋걍걔걘걜거걱건걷걸걺검겁것겄겅겆겉겊겋게겐겔겜겝겟겠겡겨격겪견겯결겸겹겻겼경곁계곈곌곕곗고곡곤곧골곪곬곯곰곱곳공곶과곽관괄괆�".split(""); +for(j = 0; j != D[176].length; ++j) if(D[176][j].charCodeAt(0) !== 0xFFFD) { e[D[176][j]] = 45056 + j; d[45056 + j] = D[176][j];} +D[177] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������괌괍괏광괘괜괠괩괬괭괴괵괸괼굄굅굇굉교굔굘굡굣구국군굳굴굵굶굻굼굽굿궁궂궈궉권궐궜궝궤궷귀귁귄귈귐귑귓규균귤그극근귿글긁금급긋긍긔기긱긴긷길긺김깁깃깅깆깊까깍깎깐깔깖깜깝깟깠깡깥깨깩깬깰깸�".split(""); +for(j = 0; j != D[177].length; ++j) if(D[177][j].charCodeAt(0) !== 0xFFFD) { e[D[177][j]] = 45312 + j; d[45312 + j] = D[177][j];} +D[178] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������깹깻깼깽꺄꺅꺌꺼꺽꺾껀껄껌껍껏껐껑께껙껜껨껫껭껴껸껼꼇꼈꼍꼐꼬꼭꼰꼲꼴꼼꼽꼿꽁꽂꽃꽈꽉꽐꽜꽝꽤꽥꽹꾀꾄꾈꾐꾑꾕꾜꾸꾹꾼꿀꿇꿈꿉꿋꿍꿎꿔꿜꿨꿩꿰꿱꿴꿸뀀뀁뀄뀌뀐뀔뀜뀝뀨끄끅끈끊끌끎끓끔끕끗끙�".split(""); +for(j = 0; j != D[178].length; ++j) if(D[178][j].charCodeAt(0) !== 0xFFFD) { e[D[178][j]] = 45568 + j; d[45568 + j] = D[178][j];} +D[179] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������끝끼끽낀낄낌낍낏낑나낙낚난낟날낡낢남납낫났낭낮낯낱낳내낵낸낼냄냅냇냈냉냐냑냔냘냠냥너넉넋넌널넒넓넘넙넛넜넝넣네넥넨넬넴넵넷넸넹녀녁년녈념녑녔녕녘녜녠노녹논놀놂놈놉놋농높놓놔놘놜놨뇌뇐뇔뇜뇝�".split(""); +for(j = 0; j != D[179].length; ++j) if(D[179][j].charCodeAt(0) !== 0xFFFD) { e[D[179][j]] = 45824 + j; d[45824 + j] = D[179][j];} +D[180] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������뇟뇨뇩뇬뇰뇹뇻뇽누눅눈눋눌눔눕눗눙눠눴눼뉘뉜뉠뉨뉩뉴뉵뉼늄늅늉느늑는늘늙늚늠늡늣능늦늪늬늰늴니닉닌닐닖님닙닛닝닢다닥닦단닫달닭닮닯닳담답닷닸당닺닻닿대댁댄댈댐댑댓댔댕댜더덕덖던덛덜덞덟덤덥�".split(""); +for(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];} +D[181] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������덧덩덫덮데덱덴델뎀뎁뎃뎄뎅뎌뎐뎔뎠뎡뎨뎬도독돈돋돌돎돐돔돕돗동돛돝돠돤돨돼됐되된될됨됩됫됴두둑둔둘둠둡둣둥둬뒀뒈뒝뒤뒨뒬뒵뒷뒹듀듄듈듐듕드득든듣들듦듬듭듯등듸디딕딘딛딜딤딥딧딨딩딪따딱딴딸�".split(""); +for(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];} +D[182] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������땀땁땃땄땅땋때땍땐땔땜땝땟땠땡떠떡떤떨떪떫떰떱떳떴떵떻떼떽뗀뗄뗌뗍뗏뗐뗑뗘뗬또똑똔똘똥똬똴뙈뙤뙨뚜뚝뚠뚤뚫뚬뚱뛔뛰뛴뛸뜀뜁뜅뜨뜩뜬뜯뜰뜸뜹뜻띄띈띌띔띕띠띤띨띰띱띳띵라락란랄람랍랏랐랑랒랖랗�".split(""); +for(j = 0; j != D[182].length; ++j) if(D[182][j].charCodeAt(0) !== 0xFFFD) { e[D[182][j]] = 46592 + j; d[46592 + j] = D[182][j];} +D[183] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������래랙랜랠램랩랫랬랭랴략랸럇량러럭런럴럼럽럿렀렁렇레렉렌렐렘렙렛렝려력련렬렴렵렷렸령례롄롑롓로록론롤롬롭롯롱롸롼뢍뢨뢰뢴뢸룀룁룃룅료룐룔룝룟룡루룩룬룰룸룹룻룽뤄뤘뤠뤼뤽륀륄륌륏륑류륙륜률륨륩�".split(""); +for(j = 0; j != D[183].length; ++j) if(D[183][j].charCodeAt(0) !== 0xFFFD) { e[D[183][j]] = 46848 + j; d[46848 + j] = D[183][j];} +D[184] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������륫륭르륵른를름릅릇릉릊릍릎리릭린릴림립릿링마막만많맏말맑맒맘맙맛망맞맡맣매맥맨맬맴맵맷맸맹맺먀먁먈먕머먹먼멀멂멈멉멋멍멎멓메멕멘멜멤멥멧멨멩며멱면멸몃몄명몇몌모목몫몬몰몲몸몹못몽뫄뫈뫘뫙뫼�".split(""); +for(j = 0; j != D[184].length; ++j) if(D[184][j].charCodeAt(0) !== 0xFFFD) { e[D[184][j]] = 47104 + j; d[47104 + j] = D[184][j];} +D[185] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������묀묄묍묏묑묘묜묠묩묫무묵묶문묻물묽묾뭄뭅뭇뭉뭍뭏뭐뭔뭘뭡뭣뭬뮈뮌뮐뮤뮨뮬뮴뮷므믄믈믐믓미믹민믿밀밂밈밉밋밌밍및밑바박밖밗반받발밝밞밟밤밥밧방밭배백밴밸뱀뱁뱃뱄뱅뱉뱌뱍뱐뱝버벅번벋벌벎범법벗�".split(""); +for(j = 0; j != D[185].length; ++j) if(D[185][j].charCodeAt(0) !== 0xFFFD) { e[D[185][j]] = 47360 + j; d[47360 + j] = D[185][j];} +D[186] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������벙벚베벡벤벧벨벰벱벳벴벵벼벽변별볍볏볐병볕볘볜보복볶본볼봄봅봇봉봐봔봤봬뵀뵈뵉뵌뵐뵘뵙뵤뵨부북분붇불붉붊붐붑붓붕붙붚붜붤붰붸뷔뷕뷘뷜뷩뷰뷴뷸븀븃븅브븍븐블븜븝븟비빅빈빌빎빔빕빗빙빚빛빠빡빤�".split(""); +for(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];} +D[187] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������빨빪빰빱빳빴빵빻빼빽뺀뺄뺌뺍뺏뺐뺑뺘뺙뺨뻐뻑뻔뻗뻘뻠뻣뻤뻥뻬뼁뼈뼉뼘뼙뼛뼜뼝뽀뽁뽄뽈뽐뽑뽕뾔뾰뿅뿌뿍뿐뿔뿜뿟뿡쀼쁑쁘쁜쁠쁨쁩삐삑삔삘삠삡삣삥사삭삯산삳살삵삶삼삽삿샀상샅새색샌샐샘샙샛샜생샤�".split(""); +for(j = 0; j != D[187].length; ++j) if(D[187][j].charCodeAt(0) !== 0xFFFD) { e[D[187][j]] = 47872 + j; d[47872 + j] = D[187][j];} +D[188] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������샥샨샬샴샵샷샹섀섄섈섐섕서석섞섟선섣설섦섧섬섭섯섰성섶세섹센셀셈셉셋셌셍셔셕션셜셤셥셧셨셩셰셴셸솅소속솎손솔솖솜솝솟송솥솨솩솬솰솽쇄쇈쇌쇔쇗쇘쇠쇤쇨쇰쇱쇳쇼쇽숀숄숌숍숏숑수숙순숟술숨숩숫숭�".split(""); +for(j = 0; j != D[188].length; ++j) if(D[188][j].charCodeAt(0) !== 0xFFFD) { e[D[188][j]] = 48128 + j; d[48128 + j] = D[188][j];} +D[189] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������숯숱숲숴쉈쉐쉑쉔쉘쉠쉥쉬쉭쉰쉴쉼쉽쉿슁슈슉슐슘슛슝스슥슨슬슭슴습슷승시식신싣실싫심십싯싱싶싸싹싻싼쌀쌈쌉쌌쌍쌓쌔쌕쌘쌜쌤쌥쌨쌩썅써썩썬썰썲썸썹썼썽쎄쎈쎌쏀쏘쏙쏜쏟쏠쏢쏨쏩쏭쏴쏵쏸쐈쐐쐤쐬쐰�".split(""); +for(j = 0; j != D[189].length; ++j) if(D[189][j].charCodeAt(0) !== 0xFFFD) { e[D[189][j]] = 48384 + j; d[48384 + j] = D[189][j];} +D[190] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������쐴쐼쐽쑈쑤쑥쑨쑬쑴쑵쑹쒀쒔쒜쒸쒼쓩쓰쓱쓴쓸쓺쓿씀씁씌씐씔씜씨씩씬씰씸씹씻씽아악안앉않알앍앎앓암압앗았앙앝앞애액앤앨앰앱앳앴앵야약얀얄얇얌얍얏양얕얗얘얜얠얩어억언얹얻얼얽얾엄업없엇었엉엊엌엎�".split(""); +for(j = 0; j != D[190].length; ++j) if(D[190][j].charCodeAt(0) !== 0xFFFD) { e[D[190][j]] = 48640 + j; d[48640 + j] = D[190][j];} +D[191] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������에엑엔엘엠엡엣엥여역엮연열엶엷염엽엾엿였영옅옆옇예옌옐옘옙옛옜오옥온올옭옮옰옳옴옵옷옹옻와왁완왈왐왑왓왔왕왜왝왠왬왯왱외왹왼욀욈욉욋욍요욕욘욜욤욥욧용우욱운울욹욺움웁웃웅워웍원월웜웝웠웡웨�".split(""); +for(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];} +D[192] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������웩웬웰웸웹웽위윅윈윌윔윕윗윙유육윤율윰윱윳융윷으윽은을읊음읍읏응읒읓읔읕읖읗의읜읠읨읫이익인일읽읾잃임입잇있잉잊잎자작잔잖잗잘잚잠잡잣잤장잦재잭잰잴잼잽잿쟀쟁쟈쟉쟌쟎쟐쟘쟝쟤쟨쟬저적전절젊�".split(""); +for(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];} +D[193] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������점접젓정젖제젝젠젤젬젭젯젱져젼졀졈졉졌졍졔조족존졸졺좀좁좃종좆좇좋좌좍좔좝좟좡좨좼좽죄죈죌죔죕죗죙죠죡죤죵주죽준줄줅줆줌줍줏중줘줬줴쥐쥑쥔쥘쥠쥡쥣쥬쥰쥴쥼즈즉즌즐즘즙즛증지직진짇질짊짐집짓�".split(""); +for(j = 0; j != D[193].length; ++j) if(D[193][j].charCodeAt(0) !== 0xFFFD) { e[D[193][j]] = 49408 + j; d[49408 + j] = D[193][j];} +D[194] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������징짖짙짚짜짝짠짢짤짧짬짭짯짰짱째짹짼쨀쨈쨉쨋쨌쨍쨔쨘쨩쩌쩍쩐쩔쩜쩝쩟쩠쩡쩨쩽쪄쪘쪼쪽쫀쫄쫌쫍쫏쫑쫓쫘쫙쫠쫬쫴쬈쬐쬔쬘쬠쬡쭁쭈쭉쭌쭐쭘쭙쭝쭤쭸쭹쮜쮸쯔쯤쯧쯩찌찍찐찔찜찝찡찢찧차착찬찮찰참찹찻�".split(""); +for(j = 0; j != D[194].length; ++j) if(D[194][j].charCodeAt(0) !== 0xFFFD) { e[D[194][j]] = 49664 + j; d[49664 + j] = D[194][j];} +D[195] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������찼창찾채책챈챌챔챕챗챘챙챠챤챦챨챰챵처척천철첨첩첫첬청체첵첸첼쳄쳅쳇쳉쳐쳔쳤쳬쳰촁초촉촌촐촘촙촛총촤촨촬촹최쵠쵤쵬쵭쵯쵱쵸춈추축춘출춤춥춧충춰췄췌췐취췬췰췸췹췻췽츄츈츌츔츙츠측츤츨츰츱츳층�".split(""); +for(j = 0; j != D[195].length; ++j) if(D[195][j].charCodeAt(0) !== 0xFFFD) { e[D[195][j]] = 49920 + j; d[49920 + j] = D[195][j];} +D[196] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������치칙친칟칠칡침칩칫칭카칵칸칼캄캅캇캉캐캑캔캘캠캡캣캤캥캬캭컁커컥컨컫컬컴컵컷컸컹케켁켄켈켐켑켓켕켜켠켤켬켭켯켰켱켸코콕콘콜콤콥콧콩콰콱콴콸쾀쾅쾌쾡쾨쾰쿄쿠쿡쿤쿨쿰쿱쿳쿵쿼퀀퀄퀑퀘퀭퀴퀵퀸퀼�".split(""); +for(j = 0; j != D[196].length; ++j) if(D[196][j].charCodeAt(0) !== 0xFFFD) { e[D[196][j]] = 50176 + j; d[50176 + j] = D[196][j];} +D[197] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������큄큅큇큉큐큔큘큠크큭큰클큼큽킁키킥킨킬킴킵킷킹타탁탄탈탉탐탑탓탔탕태택탠탤탬탭탯탰탱탸턍터턱턴털턺텀텁텃텄텅테텍텐텔템텝텟텡텨텬텼톄톈토톡톤톨톰톱톳통톺톼퇀퇘퇴퇸툇툉툐투툭툰툴툼툽툿퉁퉈퉜�".split(""); +for(j = 0; j != D[197].length; ++j) if(D[197][j].charCodeAt(0) !== 0xFFFD) { e[D[197][j]] = 50432 + j; d[50432 + j] = D[197][j];} +D[198] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������퉤튀튁튄튈튐튑튕튜튠튤튬튱트특튼튿틀틂틈틉틋틔틘틜틤틥티틱틴틸팀팁팃팅파팍팎판팔팖팜팝팟팠팡팥패팩팬팰팸팹팻팼팽퍄퍅퍼퍽펀펄펌펍펏펐펑페펙펜펠펨펩펫펭펴편펼폄폅폈평폐폘폡폣포폭폰폴폼폽폿퐁�".split(""); +for(j = 0; j != D[198].length; ++j) if(D[198][j].charCodeAt(0) !== 0xFFFD) { e[D[198][j]] = 50688 + j; d[50688 + j] = D[198][j];} +D[199] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������퐈퐝푀푄표푠푤푭푯푸푹푼푿풀풂품풉풋풍풔풩퓌퓐퓔퓜퓟퓨퓬퓰퓸퓻퓽프픈플픔픕픗피픽핀필핌핍핏핑하학한할핥함합핫항해핵핸핼햄햅햇했행햐향허헉헌헐헒험헙헛헝헤헥헨헬헴헵헷헹혀혁현혈혐협혓혔형혜혠�".split(""); +for(j = 0; j != D[199].length; ++j) if(D[199][j].charCodeAt(0) !== 0xFFFD) { e[D[199][j]] = 50944 + j; d[50944 + j] = D[199][j];} +D[200] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������혤혭호혹혼홀홅홈홉홋홍홑화확환활홧황홰홱홴횃횅회획횐횔횝횟횡효횬횰횹횻후훅훈훌훑훔훗훙훠훤훨훰훵훼훽휀휄휑휘휙휜휠휨휩휫휭휴휵휸휼흄흇흉흐흑흔흖흗흘흙흠흡흣흥흩희흰흴흼흽힁히힉힌힐힘힙힛힝�".split(""); +for(j = 0; j != D[200].length; ++j) if(D[200][j].charCodeAt(0) !== 0xFFFD) { e[D[200][j]] = 51200 + j; d[51200 + j] = D[200][j];} +D[202] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������伽佳假價加可呵哥嘉嫁家暇架枷柯歌珂痂稼苛茄街袈訶賈跏軻迦駕刻却各恪慤殼珏脚覺角閣侃刊墾奸姦干幹懇揀杆柬桿澗癎看磵稈竿簡肝艮艱諫間乫喝曷渴碣竭葛褐蝎鞨勘坎堪嵌感憾戡敢柑橄減甘疳監瞰紺邯鑑鑒龕�".split(""); +for(j = 0; j != D[202].length; ++j) if(D[202][j].charCodeAt(0) !== 0xFFFD) { e[D[202][j]] = 51712 + j; d[51712 + j] = D[202][j];} +D[203] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������匣岬甲胛鉀閘剛堈姜岡崗康强彊慷江畺疆糠絳綱羌腔舡薑襁講鋼降鱇介价個凱塏愷愾慨改槪漑疥皆盖箇芥蓋豈鎧開喀客坑更粳羹醵倨去居巨拒据據擧渠炬祛距踞車遽鉅鋸乾件健巾建愆楗腱虔蹇鍵騫乞傑杰桀儉劍劒檢�".split(""); +for(j = 0; j != D[203].length; ++j) if(D[203][j].charCodeAt(0) !== 0xFFFD) { e[D[203][j]] = 51968 + j; d[51968 + j] = D[203][j];} +D[204] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������瞼鈐黔劫怯迲偈憩揭擊格檄激膈覡隔堅牽犬甄絹繭肩見譴遣鵑抉決潔結缺訣兼慊箝謙鉗鎌京俓倞傾儆勁勍卿坰境庚徑慶憬擎敬景暻更梗涇炅烱璟璥瓊痙硬磬竟競絅經耕耿脛莖警輕逕鏡頃頸驚鯨係啓堺契季屆悸戒桂械�".split(""); +for(j = 0; j != D[204].length; ++j) if(D[204][j].charCodeAt(0) !== 0xFFFD) { e[D[204][j]] = 52224 + j; d[52224 + j] = D[204][j];} +D[205] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������棨溪界癸磎稽系繫繼計誡谿階鷄古叩告呱固姑孤尻庫拷攷故敲暠枯槁沽痼皐睾稿羔考股膏苦苽菰藁蠱袴誥賈辜錮雇顧高鼓哭斛曲梏穀谷鵠困坤崑昆梱棍滾琨袞鯤汨滑骨供公共功孔工恐恭拱控攻珙空蚣貢鞏串寡戈果瓜�".split(""); +for(j = 0; j != D[205].length; ++j) if(D[205][j].charCodeAt(0) !== 0xFFFD) { e[D[205][j]] = 52480 + j; d[52480 + j] = D[205][j];} +D[206] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������科菓誇課跨過鍋顆廓槨藿郭串冠官寬慣棺款灌琯瓘管罐菅觀貫關館刮恝括适侊光匡壙廣曠洸炚狂珖筐胱鑛卦掛罫乖傀塊壞怪愧拐槐魁宏紘肱轟交僑咬喬嬌嶠巧攪敎校橋狡皎矯絞翹膠蕎蛟較轎郊餃驕鮫丘久九仇俱具勾�".split(""); +for(j = 0; j != D[206].length; ++j) if(D[206][j].charCodeAt(0) !== 0xFFFD) { e[D[206][j]] = 52736 + j; d[52736 + j] = D[206][j];} +D[207] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������區口句咎嘔坵垢寇嶇廐懼拘救枸柩構歐毆毬求溝灸狗玖球瞿矩究絿耉臼舅舊苟衢謳購軀逑邱鉤銶駒驅鳩鷗龜國局菊鞠鞫麴君窘群裙軍郡堀屈掘窟宮弓穹窮芎躬倦券勸卷圈拳捲權淃眷厥獗蕨蹶闕机櫃潰詭軌饋句晷歸貴�".split(""); +for(j = 0; j != D[207].length; ++j) if(D[207][j].charCodeAt(0) !== 0xFFFD) { e[D[207][j]] = 52992 + j; d[52992 + j] = D[207][j];} +D[208] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������鬼龜叫圭奎揆槻珪硅窺竅糾葵規赳逵閨勻均畇筠菌鈞龜橘克剋劇戟棘極隙僅劤勤懃斤根槿瑾筋芹菫覲謹近饉契今妗擒昑檎琴禁禽芩衾衿襟金錦伋及急扱汲級給亘兢矜肯企伎其冀嗜器圻基埼夔奇妓寄岐崎己幾忌技旗旣�".split(""); +for(j = 0; j != D[208].length; ++j) if(D[208][j].charCodeAt(0) !== 0xFFFD) { e[D[208][j]] = 53248 + j; d[53248 + j] = D[208][j];} +D[209] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������朞期杞棋棄機欺氣汽沂淇玘琦琪璂璣畸畿碁磯祁祇祈祺箕紀綺羈耆耭肌記譏豈起錡錤飢饑騎騏驥麒緊佶吉拮桔金喫儺喇奈娜懦懶拏拿癩羅蘿螺裸邏那樂洛烙珞落諾酪駱亂卵暖欄煖爛蘭難鸞捏捺南嵐枏楠湳濫男藍襤拉�".split(""); +for(j = 0; j != D[209].length; ++j) if(D[209][j].charCodeAt(0) !== 0xFFFD) { e[D[209][j]] = 53504 + j; d[53504 + j] = D[209][j];} +D[210] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������納臘蠟衲囊娘廊朗浪狼郎乃來內奈柰耐冷女年撚秊念恬拈捻寧寗努勞奴弩怒擄櫓爐瑙盧老蘆虜路露駑魯鷺碌祿綠菉錄鹿論壟弄濃籠聾膿農惱牢磊腦賂雷尿壘屢樓淚漏累縷陋嫩訥杻紐勒肋凜凌稜綾能菱陵尼泥匿溺多茶�".split(""); +for(j = 0; j != D[210].length; ++j) if(D[210][j].charCodeAt(0) !== 0xFFFD) { e[D[210][j]] = 53760 + j; d[53760 + j] = D[210][j];} +D[211] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������丹亶但單團壇彖斷旦檀段湍短端簞緞蛋袒鄲鍛撻澾獺疸達啖坍憺擔曇淡湛潭澹痰聃膽蕁覃談譚錟沓畓答踏遝唐堂塘幢戇撞棠當糖螳黨代垈坮大對岱帶待戴擡玳臺袋貸隊黛宅德悳倒刀到圖堵塗導屠島嶋度徒悼挑掉搗桃�".split(""); +for(j = 0; j != D[211].length; ++j) if(D[211][j].charCodeAt(0) !== 0xFFFD) { e[D[211][j]] = 54016 + j; d[54016 + j] = D[211][j];} +D[212] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������棹櫂淘渡滔濤燾盜睹禱稻萄覩賭跳蹈逃途道都鍍陶韜毒瀆牘犢獨督禿篤纛讀墩惇敦旽暾沌焞燉豚頓乭突仝冬凍動同憧東桐棟洞潼疼瞳童胴董銅兜斗杜枓痘竇荳讀豆逗頭屯臀芚遁遯鈍得嶝橙燈登等藤謄鄧騰喇懶拏癩羅�".split(""); +for(j = 0; j != D[212].length; ++j) if(D[212][j].charCodeAt(0) !== 0xFFFD) { e[D[212][j]] = 54272 + j; d[54272 + j] = D[212][j];} +D[213] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������蘿螺裸邏樂洛烙珞絡落諾酪駱丹亂卵欄欒瀾爛蘭鸞剌辣嵐擥攬欖濫籃纜藍襤覽拉臘蠟廊朗浪狼琅瑯螂郞來崍徠萊冷掠略亮倆兩凉梁樑粮粱糧良諒輛量侶儷勵呂廬慮戾旅櫚濾礪藜蠣閭驢驪麗黎力曆歷瀝礫轢靂憐戀攣漣�".split(""); +for(j = 0; j != D[213].length; ++j) if(D[213][j].charCodeAt(0) !== 0xFFFD) { e[D[213][j]] = 54528 + j; d[54528 + j] = D[213][j];} +D[214] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������煉璉練聯蓮輦連鍊冽列劣洌烈裂廉斂殮濂簾獵令伶囹寧岺嶺怜玲笭羚翎聆逞鈴零靈領齡例澧禮醴隷勞怒撈擄櫓潞瀘爐盧老蘆虜路輅露魯鷺鹵碌祿綠菉錄鹿麓論壟弄朧瀧瓏籠聾儡瀨牢磊賂賚賴雷了僚寮廖料燎療瞭聊蓼�".split(""); +for(j = 0; j != D[214].length; ++j) if(D[214][j].charCodeAt(0) !== 0xFFFD) { e[D[214][j]] = 54784 + j; d[54784 + j] = D[214][j];} +D[215] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������遼鬧龍壘婁屢樓淚漏瘻累縷蔞褸鏤陋劉旒柳榴流溜瀏琉瑠留瘤硫謬類六戮陸侖倫崙淪綸輪律慄栗率隆勒肋凜凌楞稜綾菱陵俚利厘吏唎履悧李梨浬犁狸理璃異痢籬罹羸莉裏裡里釐離鯉吝潾燐璘藺躪隣鱗麟林淋琳臨霖砬�".split(""); +for(j = 0; j != D[215].length; ++j) if(D[215][j].charCodeAt(0) !== 0xFFFD) { e[D[215][j]] = 55040 + j; d[55040 + j] = D[215][j];} +D[216] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������立笠粒摩瑪痲碼磨馬魔麻寞幕漠膜莫邈万卍娩巒彎慢挽晩曼滿漫灣瞞萬蔓蠻輓饅鰻唜抹末沫茉襪靺亡妄忘忙望網罔芒茫莽輞邙埋妹媒寐昧枚梅每煤罵買賣邁魅脈貊陌驀麥孟氓猛盲盟萌冪覓免冕勉棉沔眄眠綿緬面麵滅�".split(""); +for(j = 0; j != D[216].length; ++j) if(D[216][j].charCodeAt(0) !== 0xFFFD) { e[D[216][j]] = 55296 + j; d[55296 + j] = D[216][j];} +D[217] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������蔑冥名命明暝椧溟皿瞑茗蓂螟酩銘鳴袂侮冒募姆帽慕摸摹暮某模母毛牟牡瑁眸矛耗芼茅謀謨貌木沐牧目睦穆鶩歿沒夢朦蒙卯墓妙廟描昴杳渺猫竗苗錨務巫憮懋戊拇撫无楙武毋無珷畝繆舞茂蕪誣貿霧鵡墨默們刎吻問文�".split(""); +for(j = 0; j != D[217].length; ++j) if(D[217][j].charCodeAt(0) !== 0xFFFD) { e[D[217][j]] = 55552 + j; d[55552 + j] = D[217][j];} +D[218] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������汶紊紋聞蚊門雯勿沕物味媚尾嵋彌微未梶楣渼湄眉米美薇謎迷靡黴岷悶愍憫敏旻旼民泯玟珉緡閔密蜜謐剝博拍搏撲朴樸泊珀璞箔粕縛膊舶薄迫雹駁伴半反叛拌搬攀斑槃泮潘班畔瘢盤盼磐磻礬絆般蟠返頒飯勃拔撥渤潑�".split(""); +for(j = 0; j != D[218].length; ++j) if(D[218][j].charCodeAt(0) !== 0xFFFD) { e[D[218][j]] = 55808 + j; d[55808 + j] = D[218][j];} +D[219] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������發跋醱鉢髮魃倣傍坊妨尨幇彷房放方旁昉枋榜滂磅紡肪膀舫芳蒡蚌訪謗邦防龐倍俳北培徘拜排杯湃焙盃背胚裴裵褙賠輩配陪伯佰帛柏栢白百魄幡樊煩燔番磻繁蕃藩飜伐筏罰閥凡帆梵氾汎泛犯範范法琺僻劈壁擘檗璧癖�".split(""); +for(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];} +D[220] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������碧蘗闢霹便卞弁變辨辯邊別瞥鱉鼈丙倂兵屛幷昞昺柄棅炳甁病秉竝輧餠騈保堡報寶普步洑湺潽珤甫菩補褓譜輔伏僕匐卜宓復服福腹茯蔔複覆輹輻馥鰒本乶俸奉封峯峰捧棒烽熢琫縫蓬蜂逢鋒鳳不付俯傅剖副否咐埠夫婦�".split(""); +for(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];} +D[221] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������孚孵富府復扶敷斧浮溥父符簿缶腐腑膚艀芙莩訃負賦賻赴趺部釜阜附駙鳧北分吩噴墳奔奮忿憤扮昐汾焚盆粉糞紛芬賁雰不佛弗彿拂崩朋棚硼繃鵬丕備匕匪卑妃婢庇悲憊扉批斐枇榧比毖毗毘沸泌琵痺砒碑秕秘粃緋翡肥�".split(""); +for(j = 0; j != D[221].length; ++j) if(D[221][j].charCodeAt(0) !== 0xFFFD) { e[D[221][j]] = 56576 + j; d[56576 + j] = D[221][j];} +D[222] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������脾臂菲蜚裨誹譬費鄙非飛鼻嚬嬪彬斌檳殯浜濱瀕牝玭貧賓頻憑氷聘騁乍事些仕伺似使俟僿史司唆嗣四士奢娑寫寺射巳師徙思捨斜斯柶査梭死沙泗渣瀉獅砂社祀祠私篩紗絲肆舍莎蓑蛇裟詐詞謝賜赦辭邪飼駟麝削數朔索�".split(""); +for(j = 0; j != D[222].length; ++j) if(D[222][j].charCodeAt(0) !== 0xFFFD) { e[D[222][j]] = 56832 + j; d[56832 + j] = D[222][j];} +D[223] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������傘刪山散汕珊産疝算蒜酸霰乷撒殺煞薩三參杉森渗芟蔘衫揷澁鈒颯上傷像償商喪嘗孀尙峠常床庠廂想桑橡湘爽牀狀相祥箱翔裳觴詳象賞霜塞璽賽嗇塞穡索色牲生甥省笙墅壻嶼序庶徐恕抒捿敍暑曙書栖棲犀瑞筮絮緖署�".split(""); +for(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];} +D[224] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������胥舒薯西誓逝鋤黍鼠夕奭席惜昔晳析汐淅潟石碩蓆釋錫仙僊先善嬋宣扇敾旋渲煽琁瑄璇璿癬禪線繕羨腺膳船蘚蟬詵跣選銑鐥饍鮮卨屑楔泄洩渫舌薛褻設說雪齧剡暹殲纖蟾贍閃陝攝涉燮葉城姓宬性惺成星晟猩珹盛省筬�".split(""); +for(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];} +D[225] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������聖聲腥誠醒世勢歲洗稅笹細說貰召嘯塑宵小少巢所掃搔昭梳沼消溯瀟炤燒甦疏疎瘙笑篠簫素紹蔬蕭蘇訴逍遡邵銷韶騷俗屬束涑粟續謖贖速孫巽損蓀遜飡率宋悚松淞訟誦送頌刷殺灑碎鎖衰釗修受嗽囚垂壽嫂守岫峀帥愁�".split(""); +for(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];} +D[226] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������戍手授搜收數樹殊水洙漱燧狩獸琇璲瘦睡秀穗竪粹綏綬繡羞脩茱蒐蓚藪袖誰讐輸遂邃酬銖銹隋隧隨雖需須首髓鬚叔塾夙孰宿淑潚熟琡璹肅菽巡徇循恂旬栒楯橓殉洵淳珣盾瞬筍純脣舜荀蓴蕣詢諄醇錞順馴戌術述鉥崇崧�".split(""); +for(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];} +D[227] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������嵩瑟膝蝨濕拾習褶襲丞乘僧勝升承昇繩蠅陞侍匙嘶始媤尸屎屍市弑恃施是時枾柴猜矢示翅蒔蓍視試詩諡豕豺埴寔式息拭植殖湜熄篒蝕識軾食飾伸侁信呻娠宸愼新晨燼申神紳腎臣莘薪藎蜃訊身辛辰迅失室實悉審尋心沁�".split(""); +for(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];} +D[228] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������沈深瀋甚芯諶什十拾雙氏亞俄兒啞娥峨我牙芽莪蛾衙訝阿雅餓鴉鵝堊岳嶽幄惡愕握樂渥鄂鍔顎鰐齷安岸按晏案眼雁鞍顔鮟斡謁軋閼唵岩巖庵暗癌菴闇壓押狎鴨仰央怏昻殃秧鴦厓哀埃崖愛曖涯碍艾隘靄厄扼掖液縊腋額�".split(""); +for(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];} +D[229] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������櫻罌鶯鸚也倻冶夜惹揶椰爺耶若野弱掠略約若葯蒻藥躍亮佯兩凉壤孃恙揚攘敭暘梁楊樣洋瀁煬痒瘍禳穰糧羊良襄諒讓釀陽量養圄御於漁瘀禦語馭魚齬億憶抑檍臆偃堰彦焉言諺孼蘖俺儼嚴奄掩淹嶪業円予余勵呂女如廬�".split(""); +for(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];} +D[230] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������旅歟汝濾璵礖礪與艅茹輿轝閭餘驪麗黎亦力域役易曆歷疫繹譯轢逆驛嚥堧姸娟宴年延憐戀捐挻撚椽沇沿涎涓淵演漣烟然煙煉燃燕璉硏硯秊筵緣練縯聯衍軟輦蓮連鉛鍊鳶列劣咽悅涅烈熱裂說閱厭廉念捻染殮炎焰琰艶苒�".split(""); +for(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];} +D[231] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������簾閻髥鹽曄獵燁葉令囹塋寧嶺嶸影怜映暎楹榮永泳渶潁濚瀛瀯煐營獰玲瑛瑩瓔盈穎纓羚聆英詠迎鈴鍈零霙靈領乂倪例刈叡曳汭濊猊睿穢芮藝蘂禮裔詣譽豫醴銳隸霓預五伍俉傲午吾吳嗚塢墺奧娛寤悟惡懊敖旿晤梧汚澳�".split(""); +for(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];} +D[232] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������烏熬獒筽蜈誤鰲鼇屋沃獄玉鈺溫瑥瘟穩縕蘊兀壅擁瓮甕癰翁邕雍饔渦瓦窩窪臥蛙蝸訛婉完宛梡椀浣玩琓琬碗緩翫脘腕莞豌阮頑曰往旺枉汪王倭娃歪矮外嵬巍猥畏了僚僥凹堯夭妖姚寥寮尿嶢拗搖撓擾料曜樂橈燎燿瑤療�".split(""); +for(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];} +D[233] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������窈窯繇繞耀腰蓼蟯要謠遙遼邀饒慾欲浴縟褥辱俑傭冗勇埇墉容庸慂榕涌湧溶熔瑢用甬聳茸蓉踊鎔鏞龍于佑偶優又友右宇寓尤愚憂旴牛玗瑀盂祐禑禹紆羽芋藕虞迂遇郵釪隅雨雩勖彧旭昱栯煜稶郁頊云暈橒殞澐熉耘芸蕓�".split(""); +for(j = 0; j != D[233].length; ++j) if(D[233][j].charCodeAt(0) !== 0xFFFD) { e[D[233][j]] = 59648 + j; d[59648 + j] = D[233][j];} +D[234] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������運隕雲韻蔚鬱亐熊雄元原員圓園垣媛嫄寃怨愿援沅洹湲源爰猿瑗苑袁轅遠阮院願鴛月越鉞位偉僞危圍委威尉慰暐渭爲瑋緯胃萎葦蔿蝟衛褘謂違韋魏乳侑儒兪劉唯喩孺宥幼幽庾悠惟愈愉揄攸有杻柔柚柳楡楢油洧流游溜�".split(""); +for(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];} +D[235] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������濡猶猷琉瑜由留癒硫紐維臾萸裕誘諛諭踰蹂遊逾遺酉釉鍮類六堉戮毓肉育陸倫允奫尹崙淪潤玧胤贇輪鈗閏律慄栗率聿戎瀜絨融隆垠恩慇殷誾銀隱乙吟淫蔭陰音飮揖泣邑凝應膺鷹依倚儀宜意懿擬椅毅疑矣義艤薏蟻衣誼�".split(""); +for(j = 0; j != D[235].length; ++j) if(D[235][j].charCodeAt(0) !== 0xFFFD) { e[D[235][j]] = 60160 + j; d[60160 + j] = D[235][j];} +D[236] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������議醫二以伊利吏夷姨履已弛彛怡易李梨泥爾珥理異痍痢移罹而耳肄苡荑裏裡貽貳邇里離飴餌匿溺瀷益翊翌翼謚人仁刃印吝咽因姻寅引忍湮燐璘絪茵藺蚓認隣靭靷鱗麟一佚佾壹日溢逸鎰馹任壬妊姙恁林淋稔臨荏賃入卄�".split(""); +for(j = 0; j != D[236].length; ++j) if(D[236][j].charCodeAt(0) !== 0xFFFD) { e[D[236][j]] = 60416 + j; d[60416 + j] = D[236][j];} +D[237] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������立笠粒仍剩孕芿仔刺咨姉姿子字孜恣慈滋炙煮玆瓷疵磁紫者自茨蔗藉諮資雌作勺嚼斫昨灼炸爵綽芍酌雀鵲孱棧殘潺盞岑暫潛箴簪蠶雜丈仗匠場墻壯奬將帳庄張掌暲杖樟檣欌漿牆狀獐璋章粧腸臟臧莊葬蔣薔藏裝贓醬長�".split(""); +for(j = 0; j != D[237].length; ++j) if(D[237][j].charCodeAt(0) !== 0xFFFD) { e[D[237][j]] = 60672 + j; d[60672 + j] = D[237][j];} +D[238] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������障再哉在宰才材栽梓渽滓災縡裁財載齋齎爭箏諍錚佇低儲咀姐底抵杵楮樗沮渚狙猪疽箸紵苧菹著藷詛貯躇這邸雎齟勣吊嫡寂摘敵滴狄炙的積笛籍績翟荻謫賊赤跡蹟迪迹適鏑佃佺傳全典前剪塡塼奠專展廛悛戰栓殿氈澱�".split(""); +for(j = 0; j != D[238].length; ++j) if(D[238][j].charCodeAt(0) !== 0xFFFD) { e[D[238][j]] = 60928 + j; d[60928 + j] = D[238][j];} +D[239] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������煎琠田甸畑癲筌箋箭篆纏詮輾轉鈿銓錢鐫電顚顫餞切截折浙癤竊節絶占岾店漸点粘霑鮎點接摺蝶丁井亭停偵呈姃定幀庭廷征情挺政整旌晶晸柾楨檉正汀淀淨渟湞瀞炡玎珽町睛碇禎程穽精綎艇訂諪貞鄭酊釘鉦鋌錠霆靖�".split(""); +for(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];} +D[240] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������靜頂鼎制劑啼堤帝弟悌提梯濟祭第臍薺製諸蹄醍除際霽題齊俎兆凋助嘲弔彫措操早晁曺曹朝條棗槽漕潮照燥爪璪眺祖祚租稠窕粗糟組繰肇藻蚤詔調趙躁造遭釣阻雕鳥族簇足鏃存尊卒拙猝倧宗從悰慫棕淙琮種終綜縱腫�".split(""); +for(j = 0; j != D[240].length; ++j) if(D[240][j].charCodeAt(0) !== 0xFFFD) { e[D[240][j]] = 61440 + j; d[61440 + j] = D[240][j];} +D[241] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������踪踵鍾鐘佐坐左座挫罪主住侏做姝胄呪周嗾奏宙州廚晝朱柱株注洲湊澍炷珠疇籌紂紬綢舟蛛註誅走躊輳週酎酒鑄駐竹粥俊儁准埈寯峻晙樽浚準濬焌畯竣蠢逡遵雋駿茁中仲衆重卽櫛楫汁葺增憎曾拯烝甑症繒蒸證贈之只�".split(""); +for(j = 0; j != D[241].length; ++j) if(D[241][j].charCodeAt(0) !== 0xFFFD) { e[D[241][j]] = 61696 + j; d[61696 + j] = D[241][j];} +D[242] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������咫地址志持指摯支旨智枝枳止池沚漬知砥祉祗紙肢脂至芝芷蜘誌識贄趾遲直稙稷織職唇嗔塵振搢晉晋桭榛殄津溱珍瑨璡畛疹盡眞瞋秦縉縝臻蔯袗診賑軫辰進鎭陣陳震侄叱姪嫉帙桎瓆疾秩窒膣蛭質跌迭斟朕什執潗緝輯�".split(""); +for(j = 0; j != D[242].length; ++j) if(D[242][j].charCodeAt(0) !== 0xFFFD) { e[D[242][j]] = 61952 + j; d[61952 + j] = D[242][j];} +D[243] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������鏶集徵懲澄且侘借叉嗟嵯差次此磋箚茶蹉車遮捉搾着窄錯鑿齪撰澯燦璨瓚竄簒纂粲纘讚贊鑽餐饌刹察擦札紮僭參塹慘慙懺斬站讒讖倉倡創唱娼廠彰愴敞昌昶暢槍滄漲猖瘡窓脹艙菖蒼債埰寀寨彩採砦綵菜蔡采釵冊柵策�".split(""); +for(j = 0; j != D[243].length; ++j) if(D[243][j].charCodeAt(0) !== 0xFFFD) { e[D[243][j]] = 62208 + j; d[62208 + j] = D[243][j];} +D[244] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������責凄妻悽處倜刺剔尺慽戚拓擲斥滌瘠脊蹠陟隻仟千喘天川擅泉淺玔穿舛薦賤踐遷釧闡阡韆凸哲喆徹撤澈綴輟轍鐵僉尖沾添甛瞻簽籤詹諂堞妾帖捷牒疊睫諜貼輒廳晴淸聽菁請靑鯖切剃替涕滯締諦逮遞體初剿哨憔抄招梢�".split(""); +for(j = 0; j != D[244].length; ++j) if(D[244][j].charCodeAt(0) !== 0xFFFD) { e[D[244][j]] = 62464 + j; d[62464 + j] = D[244][j];} +D[245] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������椒楚樵炒焦硝礁礎秒稍肖艸苕草蕉貂超酢醋醮促囑燭矗蜀觸寸忖村邨叢塚寵悤憁摠總聰蔥銃撮催崔最墜抽推椎楸樞湫皺秋芻萩諏趨追鄒酋醜錐錘鎚雛騶鰍丑畜祝竺筑築縮蓄蹙蹴軸逐春椿瑃出朮黜充忠沖蟲衝衷悴膵萃�".split(""); +for(j = 0; j != D[245].length; ++j) if(D[245][j].charCodeAt(0) !== 0xFFFD) { e[D[245][j]] = 62720 + j; d[62720 + j] = D[245][j];} +D[246] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������贅取吹嘴娶就炊翠聚脆臭趣醉驟鷲側仄厠惻測層侈値嗤峙幟恥梔治淄熾痔痴癡稚穉緇緻置致蚩輜雉馳齒則勅飭親七柒漆侵寢枕沈浸琛砧針鍼蟄秤稱快他咤唾墮妥惰打拖朶楕舵陀馱駝倬卓啄坼度托拓擢晫柝濁濯琢琸託�".split(""); +for(j = 0; j != D[246].length; ++j) if(D[246][j].charCodeAt(0) !== 0xFFFD) { e[D[246][j]] = 62976 + j; d[62976 + j] = D[246][j];} +D[247] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������鐸呑嘆坦彈憚歎灘炭綻誕奪脫探眈耽貪塔搭榻宕帑湯糖蕩兌台太怠態殆汰泰笞胎苔跆邰颱宅擇澤撑攄兎吐土討慟桶洞痛筒統通堆槌腿褪退頹偸套妬投透鬪慝特闖坡婆巴把播擺杷波派爬琶破罷芭跛頗判坂板版瓣販辦鈑�".split(""); +for(j = 0; j != D[247].length; ++j) if(D[247][j].charCodeAt(0) !== 0xFFFD) { e[D[247][j]] = 63232 + j; d[63232 + j] = D[247][j];} +D[248] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������阪八叭捌佩唄悖敗沛浿牌狽稗覇貝彭澎烹膨愎便偏扁片篇編翩遍鞭騙貶坪平枰萍評吠嬖幣廢弊斃肺蔽閉陛佈包匍匏咆哺圃布怖抛抱捕暴泡浦疱砲胞脯苞葡蒲袍褒逋鋪飽鮑幅暴曝瀑爆輻俵剽彪慓杓標漂瓢票表豹飇飄驃�".split(""); +for(j = 0; j != D[248].length; ++j) if(D[248][j].charCodeAt(0) !== 0xFFFD) { e[D[248][j]] = 63488 + j; d[63488 + j] = D[248][j];} +D[249] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������品稟楓諷豊風馮彼披疲皮被避陂匹弼必泌珌畢疋筆苾馝乏逼下何厦夏廈昰河瑕荷蝦賀遐霞鰕壑學虐謔鶴寒恨悍旱汗漢澣瀚罕翰閑閒限韓割轄函含咸啣喊檻涵緘艦銜陷鹹合哈盒蛤閤闔陜亢伉姮嫦巷恒抗杭桁沆港缸肛航�".split(""); +for(j = 0; j != D[249].length; ++j) if(D[249][j].charCodeAt(0) !== 0xFFFD) { e[D[249][j]] = 63744 + j; d[63744 + j] = D[249][j];} +D[250] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������行降項亥偕咳垓奚孩害懈楷海瀣蟹解該諧邂駭骸劾核倖幸杏荇行享向嚮珦鄕響餉饗香噓墟虛許憲櫶獻軒歇險驗奕爀赫革俔峴弦懸晛泫炫玄玹現眩睍絃絢縣舷衒見賢鉉顯孑穴血頁嫌俠協夾峽挾浹狹脅脇莢鋏頰亨兄刑型�".split(""); +for(j = 0; j != D[250].length; ++j) if(D[250][j].charCodeAt(0) !== 0xFFFD) { e[D[250][j]] = 64000 + j; d[64000 + j] = D[250][j];} +D[251] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������形泂滎瀅灐炯熒珩瑩荊螢衡逈邢鎣馨兮彗惠慧暳蕙蹊醯鞋乎互呼壕壺好岵弧戶扈昊晧毫浩淏湖滸澔濠濩灝狐琥瑚瓠皓祜糊縞胡芦葫蒿虎號蝴護豪鎬頀顥惑或酷婚昏混渾琿魂忽惚笏哄弘汞泓洪烘紅虹訌鴻化和嬅樺火畵�".split(""); +for(j = 0; j != D[251].length; ++j) if(D[251][j].charCodeAt(0) !== 0xFFFD) { e[D[251][j]] = 64256 + j; d[64256 + j] = D[251][j];} +D[252] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������禍禾花華話譁貨靴廓擴攫確碻穫丸喚奐宦幻患換歡晥桓渙煥環紈還驩鰥活滑猾豁闊凰幌徨恍惶愰慌晃晄榥況湟滉潢煌璜皇篁簧荒蝗遑隍黃匯回廻徊恢悔懷晦會檜淮澮灰獪繪膾茴蛔誨賄劃獲宖橫鐄哮嚆孝效斅曉梟涍淆�".split(""); +for(j = 0; j != D[252].length; ++j) if(D[252][j].charCodeAt(0) !== 0xFFFD) { e[D[252][j]] = 64512 + j; d[64512 + j] = D[252][j];} +D[253] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������爻肴酵驍侯候厚后吼喉嗅帿後朽煦珝逅勛勳塤壎焄熏燻薰訓暈薨喧暄煊萱卉喙毁彙徽揮暉煇諱輝麾休携烋畦虧恤譎鷸兇凶匈洶胸黑昕欣炘痕吃屹紇訖欠欽歆吸恰洽翕興僖凞喜噫囍姬嬉希憙憘戱晞曦熙熹熺犧禧稀羲詰�".split(""); +for(j = 0; j != D[253].length; ++j) if(D[253][j].charCodeAt(0) !== 0xFFFD) { e[D[253][j]] = 64768 + j; d[64768 + j] = D[253][j];} +return {"enc": e, "dec": d }; })(); diff --git a/node_modules/codepage/bits/10004.js b/node_modules/codepage/bits/10004.js new file mode 100644 index 000000000..339d638ce --- /dev/null +++ b/node_modules/codepage/bits/10004.js @@ -0,0 +1,2 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[10004] = (function(){ var d = "ےے\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~Ä ÇÉÑÖÜáàâäں«çéèêëí…îïñó»ôö÷úùûü٪،٠١٢٣٤٥٦٧٨٩؛؟٭ءآأؤإئابةتثجحخدذرزسشصضطظعغـفقكلمنهوىيًٌٍَُِّْپٹچەڤگڈڑژے", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); diff --git a/node_modules/codepage/bits/10005.js b/node_modules/codepage/bits/10005.js new file mode 100644 index 000000000..a4e7222d3 --- /dev/null +++ b/node_modules/codepage/bits/10005.js @@ -0,0 +1,2 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[10005] = (function(){ var d = "\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü¤₪„ּֽ… �ִֵֶַ–—“”‘’־ְֱֲֳָֻׁאבגדהוזחטיךכלםמןנסעףפץצקרשת", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); diff --git a/node_modules/codepage/bits/10006.js b/node_modules/codepage/bits/10006.js new file mode 100644 index 000000000..3ea179e50 --- /dev/null +++ b/node_modules/codepage/bits/10006.js @@ -0,0 +1,2 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[10006] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~Ĺ²É³ÖÜ΅àâä΄¨çéèê룙î‰ôö¦­ùûü†ΓΔΘΛΞΠß®©ΣΪ§≠°·Α±≤≥¥ΒΕΖΗΙΚΜΦΫΨΩάΝ¬ΟΡ≈Τ«»… ΥΧΆΈœ–―“”‘’÷ΉΊΌΎέήίόΏύαβψδεφγηιξκλμνοπώρστθωςχυζϊϋΐΰ�", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); diff --git a/node_modules/codepage/bits/10007.js b/node_modules/codepage/bits/10007.js new file mode 100644 index 000000000..7bf6f1759 --- /dev/null +++ b/node_modules/codepage/bits/10007.js @@ -0,0 +1,2 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[10007] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ†°¢£§•¶І®©™Ђђ≠Ѓѓ∞±≤≥іµ∂ЈЄєЇїЉљЊњјЅ¬√ƒ≈∆«»… ЋћЌќѕ–—“”‘’÷„ЎўЏџ№Ёёяабвгдежзийклмнопрстуфхцчшщъыьэю¤", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); diff --git a/node_modules/codepage/bits/10008.js b/node_modules/codepage/bits/10008.js new file mode 100644 index 000000000..e7b06687c --- /dev/null +++ b/node_modules/codepage/bits/10008.js @@ -0,0 +1,167 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[10008] = (function(){ var d = [], e = {}, D = [], j; +D[0] = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€���������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];} +D[161] = "����������������������������������������������������������������������������������������������������������������������������������������������������������������� 、。・ˉˇ¨〃々―~�…‘’“”〔〕〈〉《》「」『』〖〗【】±×÷∶∧∨∑∏∪∩∈∷√⊥∥∠⌒⊙∫∮≡≌≈∽∝≠≮≯≤≥∞∵∴♂♀°′″℃$¤¢£‰§№☆★○●◎◇◆□■△▲※→←↑↓〓�".split(""); +for(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];} +D[162] = "���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������⒈⒉⒊⒋⒌⒍⒎⒏⒐⒑⒒⒓⒔⒕⒖⒗⒘⒙⒚⒛⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽⑾⑿⒀⒁⒂⒃⒄⒅⒆⒇①②③④⑤⑥⑦⑧⑨⑩��㈠㈡㈢㈣㈤㈥㈦㈧㈨㈩��ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫ���".split(""); +for(j = 0; j != D[162].length; ++j) if(D[162][j].charCodeAt(0) !== 0xFFFD) { e[D[162][j]] = 41472 + j; d[41472 + j] = D[162][j];} +D[163] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������!"#¥%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|} ̄�".split(""); +for(j = 0; j != D[163].length; ++j) if(D[163][j].charCodeAt(0) !== 0xFFFD) { e[D[163][j]] = 41728 + j; d[41728 + j] = D[163][j];} +D[164] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをん������������".split(""); +for(j = 0; j != D[164].length; ++j) if(D[164][j].charCodeAt(0) !== 0xFFFD) { e[D[164][j]] = 41984 + j; d[41984 + j] = D[164][j];} +D[165] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶ���������".split(""); +for(j = 0; j != D[165].length; ++j) if(D[165][j].charCodeAt(0) !== 0xFFFD) { e[D[165][j]] = 42240 + j; d[42240 + j] = D[165][j];} +D[166] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ��������αβγδεζηθικλμνξοπρστυφχψω���������������������������������������".split(""); +for(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];} +D[167] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ���������������абвгдеёжзийклмнопрстуфхцчшщъыьэюя��������������".split(""); +for(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];} +D[168] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������āáǎàēéěèīíǐìōóǒòūúǔùǖǘǚǜüê����������ㄅㄆㄇㄈㄉㄊㄋㄌㄍㄎㄏㄐㄑㄒㄓㄔㄕㄖㄗㄘㄙㄚㄛㄜㄝㄞㄟㄠㄡㄢㄣㄤㄥㄦㄧㄨㄩ����������������������".split(""); +for(j = 0; j != D[168].length; ++j) if(D[168][j].charCodeAt(0) !== 0xFFFD) { e[D[168][j]] = 43008 + j; d[43008 + j] = D[168][j];} +D[169] = "��������������������������������������������������������������������������������������������������������������������������������������������������������������������─━│┃┄┅┆┇┈┉┊┋┌┍┎┏┐┑┒┓└┕┖┗┘┙┚┛├┝┞┟┠┡┢┣┤┥┦┧┨┩┪┫┬┭┮┯┰┱┲┳┴┵┶┷┸┹┺┻┼┽┾┿╀╁╂╃╄╅╆╇╈╉╊╋����������������".split(""); +for(j = 0; j != D[169].length; ++j) if(D[169][j].charCodeAt(0) !== 0xFFFD) { e[D[169][j]] = 43264 + j; d[43264 + j] = D[169][j];} +D[176] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������啊阿埃挨哎唉哀皑癌蔼矮艾碍爱隘鞍氨安俺按暗岸胺案肮昂盎凹敖熬翱袄傲奥懊澳芭捌扒叭吧笆八疤巴拔跋靶把耙坝霸罢爸白柏百摆佰败拜稗斑班搬扳般颁板版扮拌伴瓣半办绊邦帮梆榜膀绑棒磅蚌镑傍谤苞胞包褒剥�".split(""); +for(j = 0; j != D[176].length; ++j) if(D[176][j].charCodeAt(0) !== 0xFFFD) { e[D[176][j]] = 45056 + j; d[45056 + j] = D[176][j];} +D[177] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������薄雹保堡饱宝抱报暴豹鲍爆杯碑悲卑北辈背贝钡倍狈备惫焙被奔苯本笨崩绷甭泵蹦迸逼鼻比鄙笔彼碧蓖蔽毕毙毖币庇痹闭敝弊必辟壁臂避陛鞭边编贬扁便变卞辨辩辫遍标彪膘表鳖憋别瘪彬斌濒滨宾摈兵冰柄丙秉饼炳�".split(""); +for(j = 0; j != D[177].length; ++j) if(D[177][j].charCodeAt(0) !== 0xFFFD) { e[D[177][j]] = 45312 + j; d[45312 + j] = D[177][j];} +D[178] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������病并玻菠播拨钵波博勃搏铂箔伯帛舶脖膊渤泊驳捕卜哺补埠不布步簿部怖擦猜裁材才财睬踩采彩菜蔡餐参蚕残惭惨灿苍舱仓沧藏操糙槽曹草厕策侧册测层蹭插叉茬茶查碴搽察岔差诧拆柴豺搀掺蝉馋谗缠铲产阐颤昌猖�".split(""); +for(j = 0; j != D[178].length; ++j) if(D[178][j].charCodeAt(0) !== 0xFFFD) { e[D[178][j]] = 45568 + j; d[45568 + j] = D[178][j];} +D[179] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������场尝常长偿肠厂敞畅唱倡超抄钞朝嘲潮巢吵炒车扯撤掣彻澈郴臣辰尘晨忱沉陈趁衬撑称城橙成呈乘程惩澄诚承逞骋秤吃痴持匙池迟弛驰耻齿侈尺赤翅斥炽充冲虫崇宠抽酬畴踌稠愁筹仇绸瞅丑臭初出橱厨躇锄雏滁除楚�".split(""); +for(j = 0; j != D[179].length; ++j) if(D[179][j].charCodeAt(0) !== 0xFFFD) { e[D[179][j]] = 45824 + j; d[45824 + j] = D[179][j];} +D[180] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������础储矗搐触处揣川穿椽传船喘串疮窗幢床闯创吹炊捶锤垂春椿醇唇淳纯蠢戳绰疵茨磁雌辞慈瓷词此刺赐次聪葱囱匆从丛凑粗醋簇促蹿篡窜摧崔催脆瘁粹淬翠村存寸磋撮搓措挫错搭达答瘩打大呆歹傣戴带殆代贷袋待逮�".split(""); +for(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];} +D[181] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������怠耽担丹单郸掸胆旦氮但惮淡诞弹蛋当挡党荡档刀捣蹈倒岛祷导到稻悼道盗德得的蹬灯登等瞪凳邓堤低滴迪敌笛狄涤翟嫡抵底地蒂第帝弟递缔颠掂滇碘点典靛垫电佃甸店惦奠淀殿碉叼雕凋刁掉吊钓调跌爹碟蝶迭谍叠�".split(""); +for(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];} +D[182] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������丁盯叮钉顶鼎锭定订丢东冬董懂动栋侗恫冻洞兜抖斗陡豆逗痘都督毒犊独读堵睹赌杜镀肚度渡妒端短锻段断缎堆兑队对墩吨蹲敦顿囤钝盾遁掇哆多夺垛躲朵跺舵剁惰堕蛾峨鹅俄额讹娥恶厄扼遏鄂饿恩而儿耳尔饵洱二�".split(""); +for(j = 0; j != D[182].length; ++j) if(D[182][j].charCodeAt(0) !== 0xFFFD) { e[D[182][j]] = 46592 + j; d[46592 + j] = D[182][j];} +D[183] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������贰发罚筏伐乏阀法珐藩帆番翻樊矾钒繁凡烦反返范贩犯饭泛坊芳方肪房防妨仿访纺放菲非啡飞肥匪诽吠肺废沸费芬酚吩氛分纷坟焚汾粉奋份忿愤粪丰封枫蜂峰锋风疯烽逢冯缝讽奉凤佛否夫敷肤孵扶拂辐幅氟符伏俘服�".split(""); +for(j = 0; j != D[183].length; ++j) if(D[183][j].charCodeAt(0) !== 0xFFFD) { e[D[183][j]] = 46848 + j; d[46848 + j] = D[183][j];} +D[184] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������浮涪福袱弗甫抚辅俯釜斧脯腑府腐赴副覆赋复傅付阜父腹负富讣附妇缚咐噶嘎该改概钙盖溉干甘杆柑竿肝赶感秆敢赣冈刚钢缸肛纲岗港杠篙皋高膏羔糕搞镐稿告哥歌搁戈鸽胳疙割革葛格蛤阁隔铬个各给根跟耕更庚羹�".split(""); +for(j = 0; j != D[184].length; ++j) if(D[184][j].charCodeAt(0) !== 0xFFFD) { e[D[184][j]] = 47104 + j; d[47104 + j] = D[184][j];} +D[185] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������埂耿梗工攻功恭龚供躬公宫弓巩汞拱贡共钩勾沟苟狗垢构购够辜菇咕箍估沽孤姑鼓古蛊骨谷股故顾固雇刮瓜剐寡挂褂乖拐怪棺关官冠观管馆罐惯灌贯光广逛瑰规圭硅归龟闺轨鬼诡癸桂柜跪贵刽辊滚棍锅郭国果裹过哈�".split(""); +for(j = 0; j != D[185].length; ++j) if(D[185][j].charCodeAt(0) !== 0xFFFD) { e[D[185][j]] = 47360 + j; d[47360 + j] = D[185][j];} +D[186] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������骸孩海氦亥害骇酣憨邯韩含涵寒函喊罕翰撼捍旱憾悍焊汗汉夯杭航壕嚎豪毫郝好耗号浩呵喝荷菏核禾和何合盒貉阂河涸赫褐鹤贺嘿黑痕很狠恨哼亨横衡恒轰哄烘虹鸿洪宏弘红喉侯猴吼厚候后呼乎忽瑚壶葫胡蝴狐糊湖�".split(""); +for(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];} +D[187] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������弧虎唬护互沪户花哗华猾滑画划化话槐徊怀淮坏欢环桓还缓换患唤痪豢焕涣宦幻荒慌黄磺蝗簧皇凰惶煌晃幌恍谎灰挥辉徽恢蛔回毁悔慧卉惠晦贿秽会烩汇讳诲绘荤昏婚魂浑混豁活伙火获或惑霍货祸击圾基机畸稽积箕�".split(""); +for(j = 0; j != D[187].length; ++j) if(D[187][j].charCodeAt(0) !== 0xFFFD) { e[D[187][j]] = 47872 + j; d[47872 + j] = D[187][j];} +D[188] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������肌饥迹激讥鸡姬绩缉吉极棘辑籍集及急疾汲即嫉级挤几脊己蓟技冀季伎祭剂悸济寄寂计记既忌际妓继纪嘉枷夹佳家加荚颊贾甲钾假稼价架驾嫁歼监坚尖笺间煎兼肩艰奸缄茧检柬碱硷拣捡简俭剪减荐槛鉴践贱见键箭件�".split(""); +for(j = 0; j != D[188].length; ++j) if(D[188][j].charCodeAt(0) !== 0xFFFD) { e[D[188][j]] = 48128 + j; d[48128 + j] = D[188][j];} +D[189] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������健舰剑饯渐溅涧建僵姜将浆江疆蒋桨奖讲匠酱降蕉椒礁焦胶交郊浇骄娇嚼搅铰矫侥脚狡角饺缴绞剿教酵轿较叫窖揭接皆秸街阶截劫节桔杰捷睫竭洁结解姐戒藉芥界借介疥诫届巾筋斤金今津襟紧锦仅谨进靳晋禁近烬浸�".split(""); +for(j = 0; j != D[189].length; ++j) if(D[189][j].charCodeAt(0) !== 0xFFFD) { e[D[189][j]] = 48384 + j; d[48384 + j] = D[189][j];} +D[190] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������尽劲荆兢茎睛晶鲸京惊精粳经井警景颈静境敬镜径痉靖竟竞净炯窘揪究纠玖韭久灸九酒厩救旧臼舅咎就疚鞠拘狙疽居驹菊局咀矩举沮聚拒据巨具距踞锯俱句惧炬剧捐鹃娟倦眷卷绢撅攫抉掘倔爵觉决诀绝均菌钧军君峻�".split(""); +for(j = 0; j != D[190].length; ++j) if(D[190][j].charCodeAt(0) !== 0xFFFD) { e[D[190][j]] = 48640 + j; d[48640 + j] = D[190][j];} +D[191] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������俊竣浚郡骏喀咖卡咯开揩楷凯慨刊堪勘坎砍看康慷糠扛抗亢炕考拷烤靠坷苛柯棵磕颗科壳咳可渴克刻客课肯啃垦恳坑吭空恐孔控抠口扣寇枯哭窟苦酷库裤夸垮挎跨胯块筷侩快宽款匡筐狂框矿眶旷况亏盔岿窥葵奎魁傀�".split(""); +for(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];} +D[192] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������馈愧溃坤昆捆困括扩廓阔垃拉喇蜡腊辣啦莱来赖蓝婪栏拦篮阑兰澜谰揽览懒缆烂滥琅榔狼廊郎朗浪捞劳牢老佬姥酪烙涝勒乐雷镭蕾磊累儡垒擂肋类泪棱楞冷厘梨犁黎篱狸离漓理李里鲤礼莉荔吏栗丽厉励砾历利傈例俐�".split(""); +for(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];} +D[193] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������痢立粒沥隶力璃哩俩联莲连镰廉怜涟帘敛脸链恋炼练粮凉梁粱良两辆量晾亮谅撩聊僚疗燎寥辽潦了撂镣廖料列裂烈劣猎琳林磷霖临邻鳞淋凛赁吝拎玲菱零龄铃伶羚凌灵陵岭领另令溜琉榴硫馏留刘瘤流柳六龙聋咙笼窿�".split(""); +for(j = 0; j != D[193].length; ++j) if(D[193][j].charCodeAt(0) !== 0xFFFD) { e[D[193][j]] = 49408 + j; d[49408 + j] = D[193][j];} +D[194] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������隆垄拢陇楼娄搂篓漏陋芦卢颅庐炉掳卤虏鲁麓碌露路赂鹿潞禄录陆戮驴吕铝侣旅履屡缕虑氯律率滤绿峦挛孪滦卵乱掠略抡轮伦仑沦纶论萝螺罗逻锣箩骡裸落洛骆络妈麻玛码蚂马骂嘛吗埋买麦卖迈脉瞒馒蛮满蔓曼慢漫�".split(""); +for(j = 0; j != D[194].length; ++j) if(D[194][j].charCodeAt(0) !== 0xFFFD) { e[D[194][j]] = 49664 + j; d[49664 + j] = D[194][j];} +D[195] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������谩芒茫盲氓忙莽猫茅锚毛矛铆卯茂冒帽貌贸么玫枚梅酶霉煤没眉媒镁每美昧寐妹媚门闷们萌蒙檬盟锰猛梦孟眯醚靡糜迷谜弥米秘觅泌蜜密幂棉眠绵冕免勉娩缅面苗描瞄藐秒渺庙妙蔑灭民抿皿敏悯闽明螟鸣铭名命谬摸�".split(""); +for(j = 0; j != D[195].length; ++j) if(D[195][j].charCodeAt(0) !== 0xFFFD) { e[D[195][j]] = 49920 + j; d[49920 + j] = D[195][j];} +D[196] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������摹蘑模膜磨摩魔抹末莫墨默沫漠寞陌谋牟某拇牡亩姆母墓暮幕募慕木目睦牧穆拿哪呐钠那娜纳氖乃奶耐奈南男难囊挠脑恼闹淖呢馁内嫩能妮霓倪泥尼拟你匿腻逆溺蔫拈年碾撵捻念娘酿鸟尿捏聂孽啮镊镍涅您柠狞凝宁�".split(""); +for(j = 0; j != D[196].length; ++j) if(D[196][j].charCodeAt(0) !== 0xFFFD) { e[D[196][j]] = 50176 + j; d[50176 + j] = D[196][j];} +D[197] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������拧泞牛扭钮纽脓浓农弄奴努怒女暖虐疟挪懦糯诺哦欧鸥殴藕呕偶沤啪趴爬帕怕琶拍排牌徘湃派攀潘盘磐盼畔判叛乓庞旁耪胖抛咆刨炮袍跑泡呸胚培裴赔陪配佩沛喷盆砰抨烹澎彭蓬棚硼篷膨朋鹏捧碰坯砒霹批披劈琵毗�".split(""); +for(j = 0; j != D[197].length; ++j) if(D[197][j].charCodeAt(0) !== 0xFFFD) { e[D[197][j]] = 50432 + j; d[50432 + j] = D[197][j];} +D[198] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������啤脾疲皮匹痞僻屁譬篇偏片骗飘漂瓢票撇瞥拼频贫品聘乒坪苹萍平凭瓶评屏坡泼颇婆破魄迫粕剖扑铺仆莆葡菩蒲埔朴圃普浦谱曝瀑期欺栖戚妻七凄漆柒沏其棋奇歧畦崎脐齐旗祈祁骑起岂乞企启契砌器气迄弃汽泣讫掐�".split(""); +for(j = 0; j != D[198].length; ++j) if(D[198][j].charCodeAt(0) !== 0xFFFD) { e[D[198][j]] = 50688 + j; d[50688 + j] = D[198][j];} +D[199] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������恰洽牵扦钎铅千迁签仟谦乾黔钱钳前潜遣浅谴堑嵌欠歉枪呛腔羌墙蔷强抢橇锹敲悄桥瞧乔侨巧鞘撬翘峭俏窍切茄且怯窃钦侵亲秦琴勤芹擒禽寝沁青轻氢倾卿清擎晴氰情顷请庆琼穷秋丘邱球求囚酋泅趋区蛆曲躯屈驱渠�".split(""); +for(j = 0; j != D[199].length; ++j) if(D[199][j].charCodeAt(0) !== 0xFFFD) { e[D[199][j]] = 50944 + j; d[50944 + j] = D[199][j];} +D[200] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������取娶龋趣去圈颧权醛泉全痊拳犬券劝缺炔瘸却鹊榷确雀裙群然燃冉染瓤壤攘嚷让饶扰绕惹热壬仁人忍韧任认刃妊纫扔仍日戎茸蓉荣融熔溶容绒冗揉柔肉茹蠕儒孺如辱乳汝入褥软阮蕊瑞锐闰润若弱撒洒萨腮鳃塞赛三叁�".split(""); +for(j = 0; j != D[200].length; ++j) if(D[200][j].charCodeAt(0) !== 0xFFFD) { e[D[200][j]] = 51200 + j; d[51200 + j] = D[200][j];} +D[201] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������伞散桑嗓丧搔骚扫嫂瑟色涩森僧莎砂杀刹沙纱傻啥煞筛晒珊苫杉山删煽衫闪陕擅赡膳善汕扇缮墒伤商赏晌上尚裳梢捎稍烧芍勺韶少哨邵绍奢赊蛇舌舍赦摄射慑涉社设砷申呻伸身深娠绅神沈审婶甚肾慎渗声生甥牲升绳�".split(""); +for(j = 0; j != D[201].length; ++j) if(D[201][j].charCodeAt(0) !== 0xFFFD) { e[D[201][j]] = 51456 + j; d[51456 + j] = D[201][j];} +D[202] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������省盛剩胜圣师失狮施湿诗尸虱十石拾时什食蚀实识史矢使屎驶始式示士世柿事拭誓逝势是嗜噬适仕侍释饰氏市恃室视试收手首守寿授售受瘦兽蔬枢梳殊抒输叔舒淑疏书赎孰熟薯暑曙署蜀黍鼠属术述树束戍竖墅庶数漱�".split(""); +for(j = 0; j != D[202].length; ++j) if(D[202][j].charCodeAt(0) !== 0xFFFD) { e[D[202][j]] = 51712 + j; d[51712 + j] = D[202][j];} +D[203] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������恕刷耍摔衰甩帅栓拴霜双爽谁水睡税吮瞬顺舜说硕朔烁斯撕嘶思私司丝死肆寺嗣四伺似饲巳松耸怂颂送宋讼诵搜艘擞嗽苏酥俗素速粟僳塑溯宿诉肃酸蒜算虽隋随绥髓碎岁穗遂隧祟孙损笋蓑梭唆缩琐索锁所塌他它她塔�".split(""); +for(j = 0; j != D[203].length; ++j) if(D[203][j].charCodeAt(0) !== 0xFFFD) { e[D[203][j]] = 51968 + j; d[51968 + j] = D[203][j];} +D[204] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������獭挞蹋踏胎苔抬台泰酞太态汰坍摊贪瘫滩坛檀痰潭谭谈坦毯袒碳探叹炭汤塘搪堂棠膛唐糖倘躺淌趟烫掏涛滔绦萄桃逃淘陶讨套特藤腾疼誊梯剔踢锑提题蹄啼体替嚏惕涕剃屉天添填田甜恬舔腆挑条迢眺跳贴铁帖厅听烃�".split(""); +for(j = 0; j != D[204].length; ++j) if(D[204][j].charCodeAt(0) !== 0xFFFD) { e[D[204][j]] = 52224 + j; d[52224 + j] = D[204][j];} +D[205] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������汀廷停亭庭挺艇通桐酮瞳同铜彤童桶捅筒统痛偷投头透凸秃突图徒途涂屠土吐兔湍团推颓腿蜕褪退吞屯臀拖托脱鸵陀驮驼椭妥拓唾挖哇蛙洼娃瓦袜歪外豌弯湾玩顽丸烷完碗挽晚皖惋宛婉万腕汪王亡枉网往旺望忘妄威�".split(""); +for(j = 0; j != D[205].length; ++j) if(D[205][j].charCodeAt(0) !== 0xFFFD) { e[D[205][j]] = 52480 + j; d[52480 + j] = D[205][j];} +D[206] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������巍微危韦违桅围唯惟为潍维苇萎委伟伪尾纬未蔚味畏胃喂魏位渭谓尉慰卫瘟温蚊文闻纹吻稳紊问嗡翁瓮挝蜗涡窝我斡卧握沃巫呜钨乌污诬屋无芜梧吾吴毋武五捂午舞伍侮坞戊雾晤物勿务悟误昔熙析西硒矽晰嘻吸锡牺�".split(""); +for(j = 0; j != D[206].length; ++j) if(D[206][j].charCodeAt(0) !== 0xFFFD) { e[D[206][j]] = 52736 + j; d[52736 + j] = D[206][j];} +D[207] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������稀息希悉膝夕惜熄烯溪汐犀檄袭席习媳喜铣洗系隙戏细瞎虾匣霞辖暇峡侠狭下厦夏吓掀锨先仙鲜纤咸贤衔舷闲涎弦嫌显险现献县腺馅羡宪陷限线相厢镶香箱襄湘乡翔祥详想响享项巷橡像向象萧硝霄削哮嚣销消宵淆晓�".split(""); +for(j = 0; j != D[207].length; ++j) if(D[207][j].charCodeAt(0) !== 0xFFFD) { e[D[207][j]] = 52992 + j; d[52992 + j] = D[207][j];} +D[208] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������小孝校肖啸笑效楔些歇蝎鞋协挟携邪斜胁谐写械卸蟹懈泄泻谢屑薪芯锌欣辛新忻心信衅星腥猩惺兴刑型形邢行醒幸杏性姓兄凶胸匈汹雄熊休修羞朽嗅锈秀袖绣墟戌需虚嘘须徐许蓄酗叙旭序畜恤絮婿绪续轩喧宣悬旋玄�".split(""); +for(j = 0; j != D[208].length; ++j) if(D[208][j].charCodeAt(0) !== 0xFFFD) { e[D[208][j]] = 53248 + j; d[53248 + j] = D[208][j];} +D[209] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������选癣眩绚靴薛学穴雪血勋熏循旬询寻驯巡殉汛训讯逊迅压押鸦鸭呀丫芽牙蚜崖衙涯雅哑亚讶焉咽阉烟淹盐严研蜒岩延言颜阎炎沿奄掩眼衍演艳堰燕厌砚雁唁彦焰宴谚验殃央鸯秧杨扬佯疡羊洋阳氧仰痒养样漾邀腰妖瑶�".split(""); +for(j = 0; j != D[209].length; ++j) if(D[209][j].charCodeAt(0) !== 0xFFFD) { e[D[209][j]] = 53504 + j; d[53504 + j] = D[209][j];} +D[210] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������摇尧遥窑谣姚咬舀药要耀椰噎耶爷野冶也页掖业叶曳腋夜液一壹医揖铱依伊衣颐夷遗移仪胰疑沂宜姨彝椅蚁倚已乙矣以艺抑易邑屹亿役臆逸肄疫亦裔意毅忆义益溢诣议谊译异翼翌绎茵荫因殷音阴姻吟银淫寅饮尹引隐�".split(""); +for(j = 0; j != D[210].length; ++j) if(D[210][j].charCodeAt(0) !== 0xFFFD) { e[D[210][j]] = 53760 + j; d[53760 + j] = D[210][j];} +D[211] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������印英樱婴鹰应缨莹萤营荧蝇迎赢盈影颖硬映哟拥佣臃痈庸雍踊蛹咏泳涌永恿勇用幽优悠忧尤由邮铀犹油游酉有友右佑釉诱又幼迂淤于盂榆虞愚舆余俞逾鱼愉渝渔隅予娱雨与屿禹宇语羽玉域芋郁吁遇喻峪御愈欲狱育誉�".split(""); +for(j = 0; j != D[211].length; ++j) if(D[211][j].charCodeAt(0) !== 0xFFFD) { e[D[211][j]] = 54016 + j; d[54016 + j] = D[211][j];} +D[212] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������浴寓裕预豫驭鸳渊冤元垣袁原援辕园员圆猿源缘远苑愿怨院曰约越跃钥岳粤月悦阅耘云郧匀陨允运蕴酝晕韵孕匝砸杂栽哉灾宰载再在咱攒暂赞赃脏葬遭糟凿藻枣早澡蚤躁噪造皂灶燥责择则泽贼怎增憎曾赠扎喳渣札轧�".split(""); +for(j = 0; j != D[212].length; ++j) if(D[212][j].charCodeAt(0) !== 0xFFFD) { e[D[212][j]] = 54272 + j; d[54272 + j] = D[212][j];} +D[213] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������铡闸眨栅榨咋乍炸诈摘斋宅窄债寨瞻毡詹粘沾盏斩辗崭展蘸栈占战站湛绽樟章彰漳张掌涨杖丈帐账仗胀瘴障招昭找沼赵照罩兆肇召遮折哲蛰辙者锗蔗这浙珍斟真甄砧臻贞针侦枕疹诊震振镇阵蒸挣睁征狰争怔整拯正政�".split(""); +for(j = 0; j != D[213].length; ++j) if(D[213][j].charCodeAt(0) !== 0xFFFD) { e[D[213][j]] = 54528 + j; d[54528 + j] = D[213][j];} +D[214] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������帧症郑证芝枝支吱蜘知肢脂汁之织职直植殖执值侄址指止趾只旨纸志挚掷至致置帜峙制智秩稚质炙痔滞治窒中盅忠钟衷终种肿重仲众舟周州洲诌粥轴肘帚咒皱宙昼骤珠株蛛朱猪诸诛逐竹烛煮拄瞩嘱主著柱助蛀贮铸筑�".split(""); +for(j = 0; j != D[214].length; ++j) if(D[214][j].charCodeAt(0) !== 0xFFFD) { e[D[214][j]] = 54784 + j; d[54784 + j] = D[214][j];} +D[215] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������住注祝驻抓爪拽专砖转撰赚篆桩庄装妆撞壮状椎锥追赘坠缀谆准捉拙卓桌琢茁酌啄着灼浊兹咨资姿滋淄孜紫仔籽滓子自渍字鬃棕踪宗综总纵邹走奏揍租足卒族祖诅阻组钻纂嘴醉最罪尊遵昨左佐柞做作坐座������".split(""); +for(j = 0; j != D[215].length; ++j) if(D[215][j].charCodeAt(0) !== 0xFFFD) { e[D[215][j]] = 55040 + j; d[55040 + j] = D[215][j];} +D[216] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������亍丌兀丐廿卅丕亘丞鬲孬噩丨禺丿匕乇夭爻卮氐囟胤馗毓睾鼗丶亟鼐乜乩亓芈孛啬嘏仄厍厝厣厥厮靥赝匚叵匦匮匾赜卦卣刂刈刎刭刳刿剀剌剞剡剜蒯剽劂劁劐劓冂罔亻仃仉仂仨仡仫仞伛仳伢佤仵伥伧伉伫佞佧攸佚佝�".split(""); +for(j = 0; j != D[216].length; ++j) if(D[216][j].charCodeAt(0) !== 0xFFFD) { e[D[216][j]] = 55296 + j; d[55296 + j] = D[216][j];} +D[217] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������佟佗伲伽佶佴侑侉侃侏佾佻侪佼侬侔俦俨俪俅俚俣俜俑俟俸倩偌俳倬倏倮倭俾倜倌倥倨偾偃偕偈偎偬偻傥傧傩傺僖儆僭僬僦僮儇儋仝氽佘佥俎龠汆籴兮巽黉馘冁夔勹匍訇匐凫夙兕亠兖亳衮袤亵脔裒禀嬴蠃羸冫冱冽冼�".split(""); +for(j = 0; j != D[217].length; ++j) if(D[217][j].charCodeAt(0) !== 0xFFFD) { e[D[217][j]] = 55552 + j; d[55552 + j] = D[217][j];} +D[218] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������凇冖冢冥讠讦讧讪讴讵讷诂诃诋诏诎诒诓诔诖诘诙诜诟诠诤诨诩诮诰诳诶诹诼诿谀谂谄谇谌谏谑谒谔谕谖谙谛谘谝谟谠谡谥谧谪谫谮谯谲谳谵谶卩卺阝阢阡阱阪阽阼陂陉陔陟陧陬陲陴隈隍隗隰邗邛邝邙邬邡邴邳邶邺�".split(""); +for(j = 0; j != D[218].length; ++j) if(D[218][j].charCodeAt(0) !== 0xFFFD) { e[D[218][j]] = 55808 + j; d[55808 + j] = D[218][j];} +D[219] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������邸邰郏郅邾郐郄郇郓郦郢郜郗郛郫郯郾鄄鄢鄞鄣鄱鄯鄹酃酆刍奂劢劬劭劾哿勐勖勰叟燮矍廴凵凼鬯厶弁畚巯坌垩垡塾墼壅壑圩圬圪圳圹圮圯坜圻坂坩垅坫垆坼坻坨坭坶坳垭垤垌垲埏垧垴垓垠埕埘埚埙埒垸埴埯埸埤埝�".split(""); +for(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];} +D[220] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������堋堍埽埭堀堞堙塄堠塥塬墁墉墚墀馨鼙懿艹艽艿芏芊芨芄芎芑芗芙芫芸芾芰苈苊苣芘芷芮苋苌苁芩芴芡芪芟苄苎芤苡茉苷苤茏茇苜苴苒苘茌苻苓茑茚茆茔茕苠苕茜荑荛荜茈莒茼茴茱莛荞茯荏荇荃荟荀茗荠茭茺茳荦荥�".split(""); +for(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];} +D[221] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������荨茛荩荬荪荭荮莰荸莳莴莠莪莓莜莅荼莶莩荽莸荻莘莞莨莺莼菁萁菥菘堇萘萋菝菽菖萜萸萑萆菔菟萏萃菸菹菪菅菀萦菰菡葜葑葚葙葳蒇蒈葺蒉葸萼葆葩葶蒌蒎萱葭蓁蓍蓐蓦蒽蓓蓊蒿蒺蓠蒡蒹蒴蒗蓥蓣蔌甍蔸蓰蔹蔟蔺�".split(""); +for(j = 0; j != D[221].length; ++j) if(D[221][j].charCodeAt(0) !== 0xFFFD) { e[D[221][j]] = 56576 + j; d[56576 + j] = D[221][j];} +D[222] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������蕖蔻蓿蓼蕙蕈蕨蕤蕞蕺瞢蕃蕲蕻薤薨薇薏蕹薮薜薅薹薷薰藓藁藜藿蘧蘅蘩蘖蘼廾弈夼奁耷奕奚奘匏尢尥尬尴扌扪抟抻拊拚拗拮挢拶挹捋捃掭揶捱捺掎掴捭掬掊捩掮掼揲揸揠揿揄揞揎摒揆掾摅摁搋搛搠搌搦搡摞撄摭撖�".split(""); +for(j = 0; j != D[222].length; ++j) if(D[222][j].charCodeAt(0) !== 0xFFFD) { e[D[222][j]] = 56832 + j; d[56832 + j] = D[222][j];} +D[223] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������摺撷撸撙撺擀擐擗擤擢攉攥攮弋忒甙弑卟叱叽叩叨叻吒吖吆呋呒呓呔呖呃吡呗呙吣吲咂咔呷呱呤咚咛咄呶呦咝哐咭哂咴哒咧咦哓哔呲咣哕咻咿哌哙哚哜咩咪咤哝哏哞唛哧唠哽唔哳唢唣唏唑唧唪啧喏喵啉啭啁啕唿啐唼�".split(""); +for(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];} +D[224] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������唷啖啵啶啷唳唰啜喋嗒喃喱喹喈喁喟啾嗖喑啻嗟喽喾喔喙嗪嗷嗉嘟嗑嗫嗬嗔嗦嗝嗄嗯嗥嗲嗳嗌嗍嗨嗵嗤辔嘞嘈嘌嘁嘤嘣嗾嘀嘧嘭噘嘹噗嘬噍噢噙噜噌噔嚆噤噱噫噻噼嚅嚓嚯囔囗囝囡囵囫囹囿圄圊圉圜帏帙帔帑帱帻帼�".split(""); +for(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];} +D[225] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������帷幄幔幛幞幡岌屺岍岐岖岈岘岙岑岚岜岵岢岽岬岫岱岣峁岷峄峒峤峋峥崂崃崧崦崮崤崞崆崛嵘崾崴崽嵬嵛嵯嵝嵫嵋嵊嵩嵴嶂嶙嶝豳嶷巅彳彷徂徇徉後徕徙徜徨徭徵徼衢彡犭犰犴犷犸狃狁狎狍狒狨狯狩狲狴狷猁狳猃狺�".split(""); +for(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];} +D[226] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������狻猗猓猡猊猞猝猕猢猹猥猬猸猱獐獍獗獠獬獯獾舛夥飧夤夂饣饧饨饩饪饫饬饴饷饽馀馄馇馊馍馐馑馓馔馕庀庑庋庖庥庠庹庵庾庳赓廒廑廛廨廪膺忄忉忖忏怃忮怄忡忤忾怅怆忪忭忸怙怵怦怛怏怍怩怫怊怿怡恸恹恻恺恂�".split(""); +for(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];} +D[227] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������恪恽悖悚悭悝悃悒悌悛惬悻悱惝惘惆惚悴愠愦愕愣惴愀愎愫慊慵憬憔憧憷懔懵忝隳闩闫闱闳闵闶闼闾阃阄阆阈阊阋阌阍阏阒阕阖阗阙阚丬爿戕氵汔汜汊沣沅沐沔沌汨汩汴汶沆沩泐泔沭泷泸泱泗沲泠泖泺泫泮沱泓泯泾�".split(""); +for(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];} +D[228] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������洹洧洌浃浈洇洄洙洎洫浍洮洵洚浏浒浔洳涑浯涞涠浞涓涔浜浠浼浣渚淇淅淞渎涿淠渑淦淝淙渖涫渌涮渫湮湎湫溲湟溆湓湔渲渥湄滟溱溘滠漭滢溥溧溽溻溷滗溴滏溏滂溟潢潆潇漤漕滹漯漶潋潴漪漉漩澉澍澌潸潲潼潺濑�".split(""); +for(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];} +D[229] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������濉澧澹澶濂濡濮濞濠濯瀚瀣瀛瀹瀵灏灞宀宄宕宓宥宸甯骞搴寤寮褰寰蹇謇辶迓迕迥迮迤迩迦迳迨逅逄逋逦逑逍逖逡逵逶逭逯遄遑遒遐遨遘遢遛暹遴遽邂邈邃邋彐彗彖彘尻咫屐屙孱屣屦羼弪弩弭艴弼鬻屮妁妃妍妩妪妣�".split(""); +for(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];} +D[230] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������妗姊妫妞妤姒妲妯姗妾娅娆姝娈姣姘姹娌娉娲娴娑娣娓婀婧婊婕娼婢婵胬媪媛婷婺媾嫫媲嫒嫔媸嫠嫣嫱嫖嫦嫘嫜嬉嬗嬖嬲嬷孀尕尜孚孥孳孑孓孢驵驷驸驺驿驽骀骁骅骈骊骐骒骓骖骘骛骜骝骟骠骢骣骥骧纟纡纣纥纨纩�".split(""); +for(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];} +D[231] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������纭纰纾绀绁绂绉绋绌绐绔绗绛绠绡绨绫绮绯绱绲缍绶绺绻绾缁缂缃缇缈缋缌缏缑缒缗缙缜缛缟缡缢缣缤缥缦缧缪缫缬缭缯缰缱缲缳缵幺畿巛甾邕玎玑玮玢玟珏珂珑玷玳珀珉珈珥珙顼琊珩珧珞玺珲琏琪瑛琦琥琨琰琮琬�".split(""); +for(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];} +D[232] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������琛琚瑁瑜瑗瑕瑙瑷瑭瑾璜璎璀璁璇璋璞璨璩璐璧瓒璺韪韫韬杌杓杞杈杩枥枇杪杳枘枧杵枨枞枭枋杷杼柰栉柘栊柩枰栌柙枵柚枳柝栀柃枸柢栎柁柽栲栳桠桡桎桢桄桤梃栝桕桦桁桧桀栾桊桉栩梵梏桴桷梓桫棂楮棼椟椠棹�".split(""); +for(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];} +D[233] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������椤棰椋椁楗棣椐楱椹楠楂楝榄楫榀榘楸椴槌榇榈槎榉楦楣楹榛榧榻榫榭槔榱槁槊槟榕槠榍槿樯槭樗樘橥槲橄樾檠橐橛樵檎橹樽樨橘橼檑檐檩檗檫猷獒殁殂殇殄殒殓殍殚殛殡殪轫轭轱轲轳轵轶轸轷轹轺轼轾辁辂辄辇辋�".split(""); +for(j = 0; j != D[233].length; ++j) if(D[233][j].charCodeAt(0) !== 0xFFFD) { e[D[233][j]] = 59648 + j; d[59648 + j] = D[233][j];} +D[234] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������辍辎辏辘辚軎戋戗戛戟戢戡戥戤戬臧瓯瓴瓿甏甑甓攴旮旯旰昊昙杲昃昕昀炅曷昝昴昱昶昵耆晟晔晁晏晖晡晗晷暄暌暧暝暾曛曜曦曩贲贳贶贻贽赀赅赆赈赉赇赍赕赙觇觊觋觌觎觏觐觑牮犟牝牦牯牾牿犄犋犍犏犒挈挲掰�".split(""); +for(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];} +D[235] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������搿擘耄毪毳毽毵毹氅氇氆氍氕氘氙氚氡氩氤氪氲攵敕敫牍牒牖爰虢刖肟肜肓肼朊肽肱肫肭肴肷胧胨胩胪胛胂胄胙胍胗朐胝胫胱胴胭脍脎胲胼朕脒豚脶脞脬脘脲腈腌腓腴腙腚腱腠腩腼腽腭腧塍媵膈膂膑滕膣膪臌朦臊膻�".split(""); +for(j = 0; j != D[235].length; ++j) if(D[235][j].charCodeAt(0) !== 0xFFFD) { e[D[235][j]] = 60160 + j; d[60160 + j] = D[235][j];} +D[236] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������臁膦欤欷欹歃歆歙飑飒飓飕飙飚殳彀毂觳斐齑斓於旆旄旃旌旎旒旖炀炜炖炝炻烀炷炫炱烨烊焐焓焖焯焱煳煜煨煅煲煊煸煺熘熳熵熨熠燠燔燧燹爝爨灬焘煦熹戾戽扃扈扉礻祀祆祉祛祜祓祚祢祗祠祯祧祺禅禊禚禧禳忑忐�".split(""); +for(j = 0; j != D[236].length; ++j) if(D[236][j].charCodeAt(0) !== 0xFFFD) { e[D[236][j]] = 60416 + j; d[60416 + j] = D[236][j];} +D[237] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������怼恝恚恧恁恙恣悫愆愍慝憩憝懋懑戆肀聿沓泶淼矶矸砀砉砗砘砑斫砭砜砝砹砺砻砟砼砥砬砣砩硎硭硖硗砦硐硇硌硪碛碓碚碇碜碡碣碲碹碥磔磙磉磬磲礅磴礓礤礞礴龛黹黻黼盱眄眍盹眇眈眚眢眙眭眦眵眸睐睑睇睃睚睨�".split(""); +for(j = 0; j != D[237].length; ++j) if(D[237][j].charCodeAt(0) !== 0xFFFD) { e[D[237][j]] = 60672 + j; d[60672 + j] = D[237][j];} +D[238] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������睢睥睿瞍睽瞀瞌瞑瞟瞠瞰瞵瞽町畀畎畋畈畛畲畹疃罘罡罟詈罨罴罱罹羁罾盍盥蠲钅钆钇钋钊钌钍钏钐钔钗钕钚钛钜钣钤钫钪钭钬钯钰钲钴钶钷钸钹钺钼钽钿铄铈铉铊铋铌铍铎铐铑铒铕铖铗铙铘铛铞铟铠铢铤铥铧铨铪�".split(""); +for(j = 0; j != D[238].length; ++j) if(D[238][j].charCodeAt(0) !== 0xFFFD) { e[D[238][j]] = 60928 + j; d[60928 + j] = D[238][j];} +D[239] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������铩铫铮铯铳铴铵铷铹铼铽铿锃锂锆锇锉锊锍锎锏锒锓锔锕锖锘锛锝锞锟锢锪锫锩锬锱锲锴锶锷锸锼锾锿镂锵镄镅镆镉镌镎镏镒镓镔镖镗镘镙镛镞镟镝镡镢镤镥镦镧镨镩镪镫镬镯镱镲镳锺矧矬雉秕秭秣秫稆嵇稃稂稞稔�".split(""); +for(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];} +D[240] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������稹稷穑黏馥穰皈皎皓皙皤瓞瓠甬鸠鸢鸨鸩鸪鸫鸬鸲鸱鸶鸸鸷鸹鸺鸾鹁鹂鹄鹆鹇鹈鹉鹋鹌鹎鹑鹕鹗鹚鹛鹜鹞鹣鹦鹧鹨鹩鹪鹫鹬鹱鹭鹳疒疔疖疠疝疬疣疳疴疸痄疱疰痃痂痖痍痣痨痦痤痫痧瘃痱痼痿瘐瘀瘅瘌瘗瘊瘥瘘瘕瘙�".split(""); +for(j = 0; j != D[240].length; ++j) if(D[240][j].charCodeAt(0) !== 0xFFFD) { e[D[240][j]] = 61440 + j; d[61440 + j] = D[240][j];} +D[241] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������瘛瘼瘢瘠癀瘭瘰瘿瘵癃瘾瘳癍癞癔癜癖癫癯翊竦穸穹窀窆窈窕窦窠窬窨窭窳衤衩衲衽衿袂袢裆袷袼裉裢裎裣裥裱褚裼裨裾裰褡褙褓褛褊褴褫褶襁襦襻疋胥皲皴矜耒耔耖耜耠耢耥耦耧耩耨耱耋耵聃聆聍聒聩聱覃顸颀颃�".split(""); +for(j = 0; j != D[241].length; ++j) if(D[241][j].charCodeAt(0) !== 0xFFFD) { e[D[241][j]] = 61696 + j; d[61696 + j] = D[241][j];} +D[242] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������颉颌颍颏颔颚颛颞颟颡颢颥颦虍虔虬虮虿虺虼虻蚨蚍蚋蚬蚝蚧蚣蚪蚓蚩蚶蛄蚵蛎蚰蚺蚱蚯蛉蛏蚴蛩蛱蛲蛭蛳蛐蜓蛞蛴蛟蛘蛑蜃蜇蛸蜈蜊蜍蜉蜣蜻蜞蜥蜮蜚蜾蝈蜴蜱蜩蜷蜿螂蜢蝽蝾蝻蝠蝰蝌蝮螋蝓蝣蝼蝤蝙蝥螓螯螨蟒�".split(""); +for(j = 0; j != D[242].length; ++j) if(D[242][j].charCodeAt(0) !== 0xFFFD) { e[D[242][j]] = 61952 + j; d[61952 + j] = D[242][j];} +D[243] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������蟆螈螅螭螗螃螫蟥螬螵螳蟋蟓螽蟑蟀蟊蟛蟪蟠蟮蠖蠓蟾蠊蠛蠡蠹蠼缶罂罄罅舐竺竽笈笃笄笕笊笫笏筇笸笪笙笮笱笠笥笤笳笾笞筘筚筅筵筌筝筠筮筻筢筲筱箐箦箧箸箬箝箨箅箪箜箢箫箴篑篁篌篝篚篥篦篪簌篾篼簏簖簋�".split(""); +for(j = 0; j != D[243].length; ++j) if(D[243][j].charCodeAt(0) !== 0xFFFD) { e[D[243][j]] = 62208 + j; d[62208 + j] = D[243][j];} +D[244] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������簟簪簦簸籁籀臾舁舂舄臬衄舡舢舣舭舯舨舫舸舻舳舴舾艄艉艋艏艚艟艨衾袅袈裘裟襞羝羟羧羯羰羲籼敉粑粝粜粞粢粲粼粽糁糇糌糍糈糅糗糨艮暨羿翎翕翥翡翦翩翮翳糸絷綦綮繇纛麸麴赳趄趔趑趱赧赭豇豉酊酐酎酏酤�".split(""); +for(j = 0; j != D[244].length; ++j) if(D[244][j].charCodeAt(0) !== 0xFFFD) { e[D[244][j]] = 62464 + j; d[62464 + j] = D[244][j];} +D[245] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������酢酡酰酩酯酽酾酲酴酹醌醅醐醍醑醢醣醪醭醮醯醵醴醺豕鹾趸跫踅蹙蹩趵趿趼趺跄跖跗跚跞跎跏跛跆跬跷跸跣跹跻跤踉跽踔踝踟踬踮踣踯踺蹀踹踵踽踱蹉蹁蹂蹑蹒蹊蹰蹶蹼蹯蹴躅躏躔躐躜躞豸貂貊貅貘貔斛觖觞觚觜�".split(""); +for(j = 0; j != D[245].length; ++j) if(D[245][j].charCodeAt(0) !== 0xFFFD) { e[D[245][j]] = 62720 + j; d[62720 + j] = D[245][j];} +D[246] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������觥觫觯訾謦靓雩雳雯霆霁霈霏霎霪霭霰霾龀龃龅龆龇龈龉龊龌黾鼋鼍隹隼隽雎雒瞿雠銎銮鋈錾鍪鏊鎏鐾鑫鱿鲂鲅鲆鲇鲈稣鲋鲎鲐鲑鲒鲔鲕鲚鲛鲞鲟鲠鲡鲢鲣鲥鲦鲧鲨鲩鲫鲭鲮鲰鲱鲲鲳鲴鲵鲶鲷鲺鲻鲼鲽鳄鳅鳆鳇鳊鳋�".split(""); +for(j = 0; j != D[246].length; ++j) if(D[246][j].charCodeAt(0) !== 0xFFFD) { e[D[246][j]] = 62976 + j; d[62976 + j] = D[246][j];} +D[247] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������鳌鳍鳎鳏鳐鳓鳔鳕鳗鳘鳙鳜鳝鳟鳢靼鞅鞑鞒鞔鞯鞫鞣鞲鞴骱骰骷鹘骶骺骼髁髀髅髂髋髌髑魅魃魇魉魈魍魑飨餍餮饕饔髟髡髦髯髫髻髭髹鬈鬏鬓鬟鬣麽麾縻麂麇麈麋麒鏖麝麟黛黜黝黠黟黢黩黧黥黪黯鼢鼬鼯鼹鼷鼽鼾齄�".split(""); +for(j = 0; j != D[247].length; ++j) if(D[247][j].charCodeAt(0) !== 0xFFFD) { e[D[247][j]] = 63232 + j; d[63232 + j] = D[247][j];} +return {"enc": e, "dec": d }; })(); diff --git a/node_modules/codepage/bits/10010.js b/node_modules/codepage/bits/10010.js new file mode 100644 index 000000000..1b3dcbbff --- /dev/null +++ b/node_modules/codepage/bits/10010.js @@ -0,0 +1,2 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[10010] = (function(){ var d = "ˇˇ\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ĂŞ∞±≤≥¥µ∂∑∏π∫ªºΩăş¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤‹›Ţţ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); diff --git a/node_modules/codepage/bits/10017.js b/node_modules/codepage/bits/10017.js new file mode 100644 index 000000000..b7ca795a2 --- /dev/null +++ b/node_modules/codepage/bits/10017.js @@ -0,0 +1,2 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[10017] = (function(){ var d = "¤¤\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ†°Ґ£§•¶І®©™Ђђ≠Ѓѓ∞±≤≥іµґЈЄєЇїЉљЊњјЅ¬√ƒ≈∆«»… ЋћЌќѕ–—“”‘’÷„ЎўЏџ№Ёёяабвгдежзийклмнопрстуфхцчшщъыьэю¤", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); diff --git a/node_modules/codepage/bits/10021.js b/node_modules/codepage/bits/10021.js new file mode 100644 index 000000000..02b13279e --- /dev/null +++ b/node_modules/codepage/bits/10021.js @@ -0,0 +1,2 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[10021] = (function(){ var d = "��\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~�«»…����������“”��•�����������‘’� กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู​–—฿เแโใไๅๆ็่้๊๋์ํ™๏๐๑๒๓๔๕๖๗๘๙®©����", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); diff --git a/node_modules/codepage/bits/10029.js b/node_modules/codepage/bits/10029.js new file mode 100644 index 000000000..49f86943b --- /dev/null +++ b/node_modules/codepage/bits/10029.js @@ -0,0 +1,2 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[10029] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÄĀāÉĄÖÜáąČäčĆć鏟ĎíďĒēĖóėôöõúĚěü†°Ę£§•¶ß®©™ę¨≠ģĮįĪ≤≥īĶ∂∑łĻļĽľĹĺŅņѬ√ńŇ∆«»… ňŐÕőŌ–—“”‘’÷◊ōŔŕŘ‹›řŖŗŠ‚„šŚśÁŤťÍŽžŪÓÔūŮÚůŰűŲųÝýķŻŁżĢˇ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); diff --git a/node_modules/codepage/bits/10079.js b/node_modules/codepage/bits/10079.js new file mode 100644 index 000000000..2fefd422f --- /dev/null +++ b/node_modules/codepage/bits/10079.js @@ -0,0 +1,2 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[10079] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûüÝ°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤ÐðÞþý·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); diff --git a/node_modules/codepage/bits/10081.js b/node_modules/codepage/bits/10081.js new file mode 100644 index 000000000..42adaa00e --- /dev/null +++ b/node_modules/codepage/bits/10081.js @@ -0,0 +1,2 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[10081] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸĞğİıŞş‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙ�ˆ˜¯˘˙˚¸˝˛ˇ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); diff --git a/node_modules/codepage/bits/10082.js b/node_modules/codepage/bits/10082.js new file mode 100644 index 000000000..ef8326661 --- /dev/null +++ b/node_modules/codepage/bits/10082.js @@ -0,0 +1,2 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[10082] = (function(){ var d = "ˇˇ\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®Š™´¨≠ŽØ∞±≤≥∆µ∂∑∏š∫ªºΩžø¿¡¬√ƒ≈Ć«Č… ÀÃÕŒœĐ—“”‘’÷◊©⁄¤‹›Æ»–·‚„‰ÂćÁčÈÍÎÏÌÓÔđÒÚÛÙıˆ˜¯πË˚¸Êæˇ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); diff --git a/node_modules/codepage/bits/1010.js b/node_modules/codepage/bits/1010.js new file mode 100644 index 000000000..82d225cf1 --- /dev/null +++ b/node_modules/codepage/bits/1010.js @@ -0,0 +1,2 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[1010] = (function(){ var d = "�\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"£$%&’()*+,-./0123456789:;<=>?àABCDEFGHIJKLMNOPQRSTUVWXYZ°ç§ˆ_µabcdefghijklmnopqrstuvwxyzéùè¨���������������������������������������������������������������������������������������������������������������������������������", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); diff --git a/node_modules/codepage/bits/1026.js b/node_modules/codepage/bits/1026.js new file mode 100644 index 000000000..8294a8a95 --- /dev/null +++ b/node_modules/codepage/bits/1026.js @@ -0,0 +1,2 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[1026] = (function(){ var d = "\u0000\u0001\u0002\u0003œ\t†—Ž\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013…\b‡\u0018\u0019’\u001c\u001d\u001e\u001f€‚ƒ„\n\u0017\u001bˆ‰Š‹Œ\u0005\u0006\u0007‘\u0016“”•–\u0004˜™š›\u0014\u0015ž\u001a  âäàáãå{ñÇ.<(+!&éêëèíîïìßĞİ*);^-/ÂÄÀÁÃÅ[Ñş,%_>?øÉÊËÈÍÎÏÌı:ÖŞ'=ÜØabcdefghi«»}`¦±°jklmnopqrªºæ¸Æ¤µöstuvwxyz¡¿]$@®¢£¥·©§¶¼½¾¬|¯¨´×çABCDEFGHI­ô~òóõğJKLMNOPQR¹û\\ùúÿü÷STUVWXYZ²Ô#ÒÓÕ0123456789³Û\"Ùڟ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); diff --git a/node_modules/codepage/bits/1047.js b/node_modules/codepage/bits/1047.js new file mode 100644 index 000000000..f619a9a70 --- /dev/null +++ b/node_modules/codepage/bits/1047.js @@ -0,0 +1,2 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[1047] = (function(){ var d = "\u0000\u0001\u0002\u0003œ\t†—Ž\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\n\b‡\u0018\u0019’\u001c\u001d\u001e\u001f€‚ƒ„…\u0017\u001bˆ‰Š‹Œ\u0005\u0006\u0007‘\u0016“”•–\u0004˜™š›\u0014\u0015ž\u001a  âäàáãåçñ¢.<(+|&éêëèíîïìß!$*);^-/ÂÄÀÁÃÅÇѦ,%_>?øÉÊËÈÍÎÏÌ`:#@'=\"Øabcdefghi«»ðýþ±°jklmnopqrªºæ¸Æ¤µ~stuvwxyz¡¿Ð[Þ®¬£¥·©§¶¼½¾Ý¨¯]´×{ABCDEFGHI­ôöòóõ}JKLMNOPQR¹ûüùúÿ\\÷STUVWXYZ²ÔÖÒÓÕ0123456789³ÛÜÙڟ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); diff --git a/node_modules/codepage/bits/1132.js b/node_modules/codepage/bits/1132.js new file mode 100644 index 000000000..c8aca16e7 --- /dev/null +++ b/node_modules/codepage/bits/1132.js @@ -0,0 +1,2 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[1132] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~���������������������������������ກຂຄງຈສຊຍດຕຖທນບປຜຝພຟມຢຣລວຫອຮ���ຯະາຳິີຶືຸູຼັົຽ���ເແໂໃໄ່້໊໋໌ໍໆ�ໜໝ₭����������������໐໑໒໓໔໕໖໗໘໙��¢¬¦ ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); diff --git a/node_modules/codepage/bits/1140.js b/node_modules/codepage/bits/1140.js new file mode 100644 index 000000000..6889aa7cd --- /dev/null +++ b/node_modules/codepage/bits/1140.js @@ -0,0 +1,2 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[1140] = (function(){ var d = "\u0000\u0001\u0002\u0003œ\t†—Ž\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013…\b‡\u0018\u0019’\u001c\u001d\u001e\u001f€‚ƒ„\n\u0017\u001bˆ‰Š‹Œ\u0005\u0006\u0007‘\u0016“”•–\u0004˜™š›\u0014\u0015ž\u001a  âäàáãåçñ¢.<(+|&éêëèíîïìß!$*);¬-/ÂÄÀÁÃÅÇѦ,%_>?øÉÊËÈÍÎÏÌ`:#@'=\"Øabcdefghi«»ðýþ±°jklmnopqrªºæ¸Æ€µ~stuvwxyz¡¿ÐÝÞ®^£¥·©§¶¼½¾[]¯¨´×{ABCDEFGHI­ôöòóõ}JKLMNOPQR¹ûüùúÿ\\÷STUVWXYZ²ÔÖÒÓÕ0123456789³ÛÜÙڟ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); diff --git a/node_modules/codepage/bits/1141.js b/node_modules/codepage/bits/1141.js new file mode 100644 index 000000000..0e2a5b4f6 --- /dev/null +++ b/node_modules/codepage/bits/1141.js @@ -0,0 +1,2 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[1141] = (function(){ var d = "\u0000\u0001\u0002\u0003œ\t†—Ž\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013…\b‡\u0018\u0019’\u001c\u001d\u001e\u001f€‚ƒ„\n\u0017\u001bˆ‰Š‹Œ\u0005\u0006\u0007‘\u0016“”•–\u0004˜™š›\u0014\u0015ž\u001a  â{àáãåçñÄ.<(+!&éêëèíîïì~Ü$*);^-/Â[ÀÁÃÅÇÑö,%_>?øÉÊËÈÍÎÏÌ`:#§'=\"Øabcdefghi«»ðýþ±°jklmnopqrªºæ¸Æ€µßstuvwxyz¡¿ÐÝÞ®¢£¥·©@¶¼½¾¬|¯¨´×äABCDEFGHI­ô¦òóõüJKLMNOPQR¹û}ùúÿÖ÷STUVWXYZ²Ô\\ÒÓÕ0123456789³Û]Ùڟ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); diff --git a/node_modules/codepage/bits/1142.js b/node_modules/codepage/bits/1142.js new file mode 100644 index 000000000..5a2758df7 --- /dev/null +++ b/node_modules/codepage/bits/1142.js @@ -0,0 +1,2 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[1142] = (function(){ var d = "\u0000\u0001\u0002\u0003œ\t†—Ž\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013…\b‡\u0018\u0019’\u001c\u001d\u001e\u001f€‚ƒ„\n\u0017\u001bˆ‰Š‹Œ\u0005\u0006\u0007‘\u0016“”•–\u0004˜™š›\u0014\u0015ž\u001a  âäàáã}çñ#.<(+!&éêëèíîïì߀Å*);^-/ÂÄÀÁÃ$ÇÑø,%_>?¦ÉÊËÈÍÎÏÌ`:ÆØ'=\"@abcdefghi«»ðýþ±°jklmnopqrªº{¸[]µüstuvwxyz¡¿ÐÝÞ®¢£¥·©§¶¼½¾¬|¯¨´×æABCDEFGHI­ôöòóõåJKLMNOPQR¹û~ùúÿ\\÷STUVWXYZ²ÔÖÒÓÕ0123456789³ÛÜÙڟ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); diff --git a/node_modules/codepage/bits/1143.js b/node_modules/codepage/bits/1143.js new file mode 100644 index 000000000..e06fc349d --- /dev/null +++ b/node_modules/codepage/bits/1143.js @@ -0,0 +1,2 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[1143] = (function(){ var d = "\u0000\u0001\u0002\u0003œ\t†—Ž\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013…\b‡\u0018\u0019’\u001c\u001d\u001e\u001f€‚ƒ„\n\u0017\u001bˆ‰Š‹Œ\u0005\u0006\u0007‘\u0016“”•–\u0004˜™š›\u0014\u0015ž\u001a  â{àáã}çñ§.<(+!&`êëèíîïì߀Å*);^-/Â#ÀÁÃ$ÇÑö,%_>?ø\\ÊËÈÍÎÏÌé:ÄÖ'=\"Øabcdefghi«»ðýþ±°jklmnopqrªºæ¸Æ]µüstuvwxyz¡¿ÐÝÞ®¢£¥·©[¶¼½¾¬|¯¨´×äABCDEFGHI­ô¦òóõåJKLMNOPQR¹û~ùúÿÉ÷STUVWXYZ²Ô@ÒÓÕ0123456789³ÛÜÙڟ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); diff --git a/node_modules/codepage/bits/1144.js b/node_modules/codepage/bits/1144.js new file mode 100644 index 000000000..5e7e0413e --- /dev/null +++ b/node_modules/codepage/bits/1144.js @@ -0,0 +1,2 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[1144] = (function(){ var d = "\u0000\u0001\u0002\u0003œ\t†—Ž\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013…\b‡\u0018\u0019’\u001c\u001d\u001e\u001f€‚ƒ„\n\u0017\u001bˆ‰Š‹Œ\u0005\u0006\u0007‘\u0016“”•–\u0004˜™š›\u0014\u0015ž\u001a  âä{áãå\\ñ°.<(+!&]êë}íîï~ßé$*);^-/ÂÄÀÁÃÅÇÑò,%_>?øÉÊËÈÍÎÏÌù:£§'=\"Øabcdefghi«»ðýþ±[jklmnopqrªºæ¸Æ€µìstuvwxyz¡¿ÐÝÞ®¢#¥·©@¶¼½¾¬|¯¨´×àABCDEFGHI­ôö¦óõèJKLMNOPQR¹ûü`úÿç÷STUVWXYZ²ÔÖÒÓÕ0123456789³ÛÜÙڟ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); diff --git a/node_modules/codepage/bits/1145.js b/node_modules/codepage/bits/1145.js new file mode 100644 index 000000000..c2d949b9b --- /dev/null +++ b/node_modules/codepage/bits/1145.js @@ -0,0 +1,2 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[1145] = (function(){ var d = "\u0000\u0001\u0002\u0003œ\t†—Ž\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013…\b‡\u0018\u0019’\u001c\u001d\u001e\u001f€‚ƒ„\n\u0017\u001bˆ‰Š‹Œ\u0005\u0006\u0007‘\u0016“”•–\u0004˜™š›\u0014\u0015ž\u001a  âäàáãåç¦[.<(+|&éêëèíîïìß]$*);¬-/ÂÄÀÁÃÅÇ#ñ,%_>?øÉÊËÈÍÎÏÌ`:Ñ@'=\"Øabcdefghi«»ðýþ±°jklmnopqrªºæ¸Æ€µ¨stuvwxyz¡¿ÐÝÞ®¢£¥·©§¶¼½¾^!¯~´×{ABCDEFGHI­ôöòóõ}JKLMNOPQR¹ûüùúÿ\\÷STUVWXYZ²ÔÖÒÓÕ0123456789³ÛÜÙڟ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); diff --git a/node_modules/codepage/bits/1146.js b/node_modules/codepage/bits/1146.js new file mode 100644 index 000000000..67265a78e --- /dev/null +++ b/node_modules/codepage/bits/1146.js @@ -0,0 +1,2 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[1146] = (function(){ var d = "\u0000\u0001\u0002\u0003œ\t†—Ž\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013…\b‡\u0018\u0019’\u001c\u001d\u001e\u001f€‚ƒ„\n\u0017\u001bˆ‰Š‹Œ\u0005\u0006\u0007‘\u0016“”•–\u0004˜™š›\u0014\u0015ž\u001a  âäàáãåçñ$.<(+|&éêëèíîïìß!£*);¬-/ÂÄÀÁÃÅÇѦ,%_>?øÉÊËÈÍÎÏÌ`:#@'=\"Øabcdefghi«»ðýþ±°jklmnopqrªºæ¸Æ€µ¯stuvwxyz¡¿ÐÝÞ®¢[¥·©§¶¼½¾^]~¨´×{ABCDEFGHI­ôöòóõ}JKLMNOPQR¹ûüùúÿ\\÷STUVWXYZ²ÔÖÒÓÕ0123456789³ÛÜÙڟ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); diff --git a/node_modules/codepage/bits/1147.js b/node_modules/codepage/bits/1147.js new file mode 100644 index 000000000..9bb191c4b --- /dev/null +++ b/node_modules/codepage/bits/1147.js @@ -0,0 +1,2 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[1147] = (function(){ var d = "\u0000\u0001\u0002\u0003œ\t†—Ž\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013…\b‡\u0018\u0019’\u001c\u001d\u001e\u001f€‚ƒ„\n\u0017\u001bˆ‰Š‹Œ\u0005\u0006\u0007‘\u0016“”•–\u0004˜™š›\u0014\u0015ž\u001a  âä@áãå\\ñ°.<(+!&{êë}íîïìߧ$*);^-/ÂÄÀÁÃÅÇÑù,%_>?øÉÊËÈÍÎÏ̵:£à'=\"Øabcdefghi«»ðýþ±[jklmnopqrªºæ¸Æ€`¨stuvwxyz¡¿ÐÝÞ®¢#¥·©]¶¼½¾¬|¯~´×éABCDEFGHI­ôöòóõèJKLMNOPQR¹ûü¦úÿç÷STUVWXYZ²ÔÖÒÓÕ0123456789³ÛÜÙڟ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); diff --git a/node_modules/codepage/bits/1148.js b/node_modules/codepage/bits/1148.js new file mode 100644 index 000000000..6d3973e67 --- /dev/null +++ b/node_modules/codepage/bits/1148.js @@ -0,0 +1,2 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[1148] = (function(){ var d = "\u0000\u0001\u0002\u0003œ\t†—Ž\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013…\b‡\u0018\u0019’\u001c\u001d\u001e\u001f€‚ƒ„\n\u0017\u001bˆ‰Š‹Œ\u0005\u0006\u0007‘\u0016“”•–\u0004˜™š›\u0014\u0015ž\u001a  âäàáãåçñ[.<(+!&éêëèíîïìß]$*);^-/ÂÄÀÁÃÅÇѦ,%_>?øÉÊËÈÍÎÏÌ`:#@'=\"Øabcdefghi«»ðýþ±°jklmnopqrªºæ¸Æ€µ~stuvwxyz¡¿ÐÝÞ®¢£¥·©§¶¼½¾¬|¯¨´×{ABCDEFGHI­ôöòóõ}JKLMNOPQR¹ûüùúÿ\\÷STUVWXYZ²ÔÖÒÓÕ0123456789³ÛÜÙڟ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); diff --git a/node_modules/codepage/bits/1149.js b/node_modules/codepage/bits/1149.js new file mode 100644 index 000000000..9611aea20 --- /dev/null +++ b/node_modules/codepage/bits/1149.js @@ -0,0 +1,2 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[1149] = (function(){ var d = "\u0000\u0001\u0002\u0003œ\t†—Ž\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013…\b‡\u0018\u0019’\u001c\u001d\u001e\u001f€‚ƒ„\n\u0017\u001bˆ‰Š‹Œ\u0005\u0006\u0007‘\u0016“”•–\u0004˜™š›\u0014\u0015ž\u001a  âäàáãåçñÞ.<(+!&éêëèíîïìßÆ$*);Ö-/ÂÄÀÁÃÅÇѦ,%_>?øÉÊËÈÍÎÏÌð:#Ð'=\"Øabcdefghi«»`ý{±°jklmnopqrªº}¸]€µöstuvwxyz¡¿@Ý[®¢£¥·©§¶¼½¾¬|¯¨\\×þABCDEFGHI­ô~òóõæJKLMNOPQR¹ûüùúÿ´÷STUVWXYZ²Ô^ÒÓÕ0123456789³ÛÜÙڟ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); diff --git a/node_modules/codepage/bits/1250.js b/node_modules/codepage/bits/1250.js new file mode 100644 index 000000000..3b7dcb4c7 --- /dev/null +++ b/node_modules/codepage/bits/1250.js @@ -0,0 +1,2 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[1250] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€�‚�„…†‡�‰Š‹ŚŤŽŹ�‘’“”•–—�™š›śťžź ˇ˘Ł¤Ą¦§¨©Ş«¬­®Ż°±˛ł´µ¶·¸ąş»Ľ˝ľżŔÁÂĂÄĹĆÇČÉĘËĚÍÎĎĐŃŇÓÔŐÖ×ŘŮÚŰÜÝŢßŕáâăäĺćçčéęëěíîďđńňóôőö÷řůúűüýţ˙", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); diff --git a/node_modules/codepage/bits/1251.js b/node_modules/codepage/bits/1251.js new file mode 100644 index 000000000..1a711fb9e --- /dev/null +++ b/node_modules/codepage/bits/1251.js @@ -0,0 +1,2 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[1251] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ЂЃ‚ѓ„…†‡€‰Љ‹ЊЌЋЏђ‘’“”•–—�™љ›њќћџ ЎўЈ¤Ґ¦§Ё©Є«¬­®Ї°±Ііґµ¶·ё№є»јЅѕїАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); diff --git a/node_modules/codepage/bits/1252.js b/node_modules/codepage/bits/1252.js new file mode 100644 index 000000000..6232b4739 --- /dev/null +++ b/node_modules/codepage/bits/1252.js @@ -0,0 +1,2 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[1252] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€�‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‘’“”•–—˜™š›œ�žŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); diff --git a/node_modules/codepage/bits/1253.js b/node_modules/codepage/bits/1253.js new file mode 100644 index 000000000..76de27873 --- /dev/null +++ b/node_modules/codepage/bits/1253.js @@ -0,0 +1,2 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[1253] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€�‚ƒ„…†‡�‰�‹�����‘’“”•–—�™�›���� ΅Ά£¤¥¦§¨©�«¬­®―°±²³΄µ¶·ΈΉΊ»Ό½ΎΏΐΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡ�ΣΤΥΦΧΨΩΪΫάέήίΰαβγδεζηθικλμνξοπρςστυφχψωϊϋόύώ�", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); diff --git a/node_modules/codepage/bits/1254.js b/node_modules/codepage/bits/1254.js new file mode 100644 index 000000000..5c640f9a5 --- /dev/null +++ b/node_modules/codepage/bits/1254.js @@ -0,0 +1,2 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[1254] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€�‚ƒ„…†‡ˆ‰Š‹Œ����‘’“”•–—˜™š›œ��Ÿ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏĞÑÒÓÔÕÖ×ØÙÚÛÜİŞßàáâãäåæçèéêëìíîïğñòóôõö÷øùúûüışÿ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); diff --git a/node_modules/codepage/bits/1255.js b/node_modules/codepage/bits/1255.js new file mode 100644 index 000000000..265e25a78 --- /dev/null +++ b/node_modules/codepage/bits/1255.js @@ -0,0 +1,2 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[1255] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€�‚ƒ„…†‡ˆ‰�‹�����‘’“”•–—˜™�›���� ¡¢£₪¥¦§¨©×«¬­®¯°±²³´µ¶·¸¹÷»¼½¾¿ְֱֲֳִֵֶַָֹ�ֻּֽ־ֿ׀ׁׂ׃װױײ׳״�������אבגדהוזחטיךכלםמןנסעףפץצקרשת��‎‏�", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); diff --git a/node_modules/codepage/bits/1256.js b/node_modules/codepage/bits/1256.js new file mode 100644 index 000000000..cc8d93f23 --- /dev/null +++ b/node_modules/codepage/bits/1256.js @@ -0,0 +1,2 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[1256] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€پ‚ƒ„…†‡ˆ‰ٹ‹Œچژڈگ‘’“”•–—ک™ڑ›œ‌‍ں ،¢£¤¥¦§¨©ھ«¬­®¯°±²³´µ¶·¸¹؛»¼½¾؟ہءآأؤإئابةتثجحخدذرزسشصض×طظعغـفقكàلâمنهوçèéêëىيîïًٌٍَôُِ÷ّùْûü‎‏ے", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); diff --git a/node_modules/codepage/bits/1257.js b/node_modules/codepage/bits/1257.js new file mode 100644 index 000000000..558587b6f --- /dev/null +++ b/node_modules/codepage/bits/1257.js @@ -0,0 +1,2 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[1257] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€�‚�„…†‡�‰�‹�¨ˇ¸�‘’“”•–—�™�›�¯˛� �¢£¤�¦§Ø©Ŗ«¬­®Æ°±²³´µ¶·ø¹ŗ»¼½¾æĄĮĀĆÄÅĘĒČÉŹĖĢĶĪĻŠŃŅÓŌÕÖ×ŲŁŚŪÜŻŽßąįāćäåęēčéźėģķīļšńņóōõö÷ųłśūüżž˙", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); diff --git a/node_modules/codepage/bits/1258.js b/node_modules/codepage/bits/1258.js new file mode 100644 index 000000000..bedf26a41 --- /dev/null +++ b/node_modules/codepage/bits/1258.js @@ -0,0 +1,2 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[1258] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€�‚ƒ„…†‡ˆ‰�‹Œ����‘’“”•–—˜™�›œ��Ÿ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂĂÄÅÆÇÈÉÊË̀ÍÎÏĐÑ̉ÓÔƠÖ×ØÙÚÛÜỮßàáâăäåæçèéêë́íîïđṇ̃óôơö÷øùúûüư₫ÿ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); diff --git a/node_modules/codepage/bits/1361.js b/node_modules/codepage/bits/1361.js new file mode 100644 index 000000000..33cdc39d4 --- /dev/null +++ b/node_modules/codepage/bits/1361.js @@ -0,0 +1,231 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[1361] = (function(){ var d = [], e = {}, D = [], j; +D[0] = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ�����������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];} +D[132] = "������������������������������������������������������������������ᆨᆩᆪᆫᆬᆭᆮᆯᆰᆱᆲᆳᆴᆵᆶᆷ�ᆸᆹᆺᆻᆼᆽᆾᆿᇀᇁᇂ���ᅡ�������������������������������ᅢ�������������������������������ᅣ�������������������������������ᅤ�������������������������������ᅥ������������������������������".split(""); +for(j = 0; j != D[132].length; ++j) if(D[132][j].charCodeAt(0) !== 0xFFFD) { e[D[132][j]] = 33792 + j; d[33792 + j] = D[132][j];} +D[133] = "�����������������������������������������������������������������ᅦ�������������������������������ᅧ�������������������������������ᅨ�������������������������������ᅩ�������������������������������ᅪ�������������������������������ᅫ������������������������������".split(""); +for(j = 0; j != D[133].length; ++j) if(D[133][j].charCodeAt(0) !== 0xFFFD) { e[D[133][j]] = 34048 + j; d[34048 + j] = D[133][j];} +D[134] = "�����������������������������������������������������������������ᅬ�������������������������������ᅭ�������������������������������ᅮ�������������������������������ᅯ�������������������������������ᅰ�������������������������������ᅱ������������������������������".split(""); +for(j = 0; j != D[134].length; ++j) if(D[134][j].charCodeAt(0) !== 0xFFFD) { e[D[134][j]] = 34304 + j; d[34304 + j] = D[134][j];} +D[135] = "�����������������������������������������������������������������ᅲ�������������������������������ᅳ�������������������������������ᅴ�������������������������������ᅵ����������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[135].length; ++j) if(D[135][j].charCodeAt(0) !== 0xFFFD) { e[D[135][j]] = 34560 + j; d[34560 + j] = D[135][j];} +D[136] = "�����������������������������������������������������������������ᄀ�������������������������������가각갂갃간갅갆갇갈갉갊갋갌갍갎갏감�갑값갓갔강갖갗갘같갚갛���개객갞갟갠갡갢갣갤갥갦갧갨갩갪갫갬�갭갮갯갰갱갲갳갴갵갶갷���갸갹갺갻갼갽갾갿걀걁걂걃걄걅걆걇걈�걉걊걋걌걍걎걏걐걑걒걓���걔걕걖걗걘걙걚걛걜걝걞걟걠걡걢걣걤�걥걦걧걨걩걪걫걬걭걮걯���거걱걲걳건걵걶걷걸걹걺걻걼걽걾걿검�겁겂것겄겅겆겇겈겉겊겋��".split(""); +for(j = 0; j != D[136].length; ++j) if(D[136][j].charCodeAt(0) !== 0xFFFD) { e[D[136][j]] = 34816 + j; d[34816 + j] = D[136][j];} +D[137] = "�����������������������������������������������������������������게겍겎겏겐겑겒겓겔겕겖겗겘겙겚겛겜�겝겞겟겠겡겢겣겤겥겦겧���겨격겪겫견겭겮겯결겱겲겳겴겵겶겷겸�겹겺겻겼경겾겿곀곁곂곃���계곅곆곇곈곉곊곋곌곍곎곏곐곑곒곓곔�곕곖곗곘곙곚곛곜곝곞곟���고곡곢곣곤곥곦곧골곩곪곫곬곭곮곯곰�곱곲곳곴공곶곷곸곹곺곻���과곽곾곿관괁괂괃괄괅괆괇괈괉괊괋괌�괍괎괏괐광괒괓괔괕괖괗���괘괙괚괛괜괝괞괟괠괡괢괣괤괥괦괧괨�괩괪괫괬괭괮괯괰괱괲괳��".split(""); +for(j = 0; j != D[137].length; ++j) if(D[137][j].charCodeAt(0) !== 0xFFFD) { e[D[137][j]] = 35072 + j; d[35072 + j] = D[137][j];} +D[138] = "�����������������������������������������������������������������괴괵괶괷괸괹괺괻괼괽괾괿굀굁굂굃굄�굅굆굇굈굉굊굋굌굍굎굏���교굑굒굓굔굕굖굗굘굙굚굛굜굝굞굟굠�굡굢굣굤굥굦굧굨굩굪굫���구국굮굯군굱굲굳굴굵굶굷굸굹굺굻굼�굽굾굿궀궁궂궃궄궅궆궇���궈궉궊궋권궍궎궏궐궑궒궓궔궕궖궗궘�궙궚궛궜궝궞궟궠궡궢궣���궤궥궦궧궨궩궪궫궬궭궮궯궰궱궲궳궴�궵궶궷궸궹궺궻궼궽궾궿���귀귁귂귃귄귅귆귇귈귉귊귋귌귍귎귏귐�귑귒귓귔귕귖귗귘귙귚귛��".split(""); +for(j = 0; j != D[138].length; ++j) if(D[138][j].charCodeAt(0) !== 0xFFFD) { e[D[138][j]] = 35328 + j; d[35328 + j] = D[138][j];} +D[139] = "�����������������������������������������������������������������규귝귞귟균귡귢귣귤귥귦귧귨귩귪귫귬�귭귮귯귰귱귲귳귴귵귶귷���그극귺귻근귽귾귿글긁긂긃긄긅긆긇금�급긊긋긌긍긎긏긐긑긒긓���긔긕긖긗긘긙긚긛긜긝긞긟긠긡긢긣긤�긥긦긧긨긩긪긫긬긭긮긯���기긱긲긳긴긵긶긷길긹긺긻긼긽긾긿김�깁깂깃깄깅깆깇깈깉깊깋������������������������������������������������������������������".split(""); +for(j = 0; j != D[139].length; ++j) if(D[139][j].charCodeAt(0) !== 0xFFFD) { e[D[139][j]] = 35584 + j; d[35584 + j] = D[139][j];} +D[140] = "�����������������������������������������������������������������ᄁ�������������������������������까깍깎깏깐깑깒깓깔깕깖깗깘깙깚깛깜�깝깞깟깠깡깢깣깤깥깦깧���깨깩깪깫깬깭깮깯깰깱깲깳깴깵깶깷깸�깹깺깻깼깽깾깿꺀꺁꺂꺃���꺄꺅꺆꺇꺈꺉꺊꺋꺌꺍꺎꺏꺐꺑꺒꺓꺔�꺕꺖꺗꺘꺙꺚꺛꺜꺝꺞꺟���꺠꺡꺢꺣꺤꺥꺦꺧꺨꺩꺪꺫꺬꺭꺮꺯꺰�꺱꺲꺳꺴꺵꺶꺷꺸꺹꺺꺻���꺼꺽꺾꺿껀껁껂껃껄껅껆껇껈껉껊껋껌�껍껎껏껐껑껒껓껔껕껖껗��".split(""); +for(j = 0; j != D[140].length; ++j) if(D[140][j].charCodeAt(0) !== 0xFFFD) { e[D[140][j]] = 35840 + j; d[35840 + j] = D[140][j];} +D[141] = "�����������������������������������������������������������������께껙껚껛껜껝껞껟껠껡껢껣껤껥껦껧껨�껩껪껫껬껭껮껯껰껱껲껳���껴껵껶껷껸껹껺껻껼껽껾껿꼀꼁꼂꼃꼄�꼅꼆꼇꼈꼉꼊꼋꼌꼍꼎꼏���꼐꼑꼒꼓꼔꼕꼖꼗꼘꼙꼚꼛꼜꼝꼞꼟꼠�꼡꼢꼣꼤꼥꼦꼧꼨꼩꼪꼫���꼬꼭꼮꼯꼰꼱꼲꼳꼴꼵꼶꼷꼸꼹꼺꼻꼼�꼽꼾꼿꽀꽁꽂꽃꽄꽅꽆꽇���꽈꽉꽊꽋꽌꽍꽎꽏꽐꽑꽒꽓꽔꽕꽖꽗꽘�꽙꽚꽛꽜꽝꽞꽟꽠꽡꽢꽣���꽤꽥꽦꽧꽨꽩꽪꽫꽬꽭꽮꽯꽰꽱꽲꽳꽴�꽵꽶꽷꽸꽹꽺꽻꽼꽽꽾꽿��".split(""); +for(j = 0; j != D[141].length; ++j) if(D[141][j].charCodeAt(0) !== 0xFFFD) { e[D[141][j]] = 36096 + j; d[36096 + j] = D[141][j];} +D[142] = "�����������������������������������������������������������������꾀꾁꾂꾃꾄꾅꾆꾇꾈꾉꾊꾋꾌꾍꾎꾏꾐�꾑꾒꾓꾔꾕꾖꾗꾘꾙꾚꾛���꾜꾝꾞꾟꾠꾡꾢꾣꾤꾥꾦꾧꾨꾩꾪꾫꾬�꾭꾮꾯꾰꾱꾲꾳꾴꾵꾶꾷���꾸꾹꾺꾻꾼꾽꾾꾿꿀꿁꿂꿃꿄꿅꿆꿇꿈�꿉꿊꿋꿌꿍꿎꿏꿐꿑꿒꿓���꿔꿕꿖꿗꿘꿙꿚꿛꿜꿝꿞꿟꿠꿡꿢꿣꿤�꿥꿦꿧꿨꿩꿪꿫꿬꿭꿮꿯���꿰꿱꿲꿳꿴꿵꿶꿷꿸꿹꿺꿻꿼꿽꿾꿿뀀�뀁뀂뀃뀄뀅뀆뀇뀈뀉뀊뀋���뀌뀍뀎뀏뀐뀑뀒뀓뀔뀕뀖뀗뀘뀙뀚뀛뀜�뀝뀞뀟뀠뀡뀢뀣뀤뀥뀦뀧��".split(""); +for(j = 0; j != D[142].length; ++j) if(D[142][j].charCodeAt(0) !== 0xFFFD) { e[D[142][j]] = 36352 + j; d[36352 + j] = D[142][j];} +D[143] = "�����������������������������������������������������������������뀨뀩뀪뀫뀬뀭뀮뀯뀰뀱뀲뀳뀴뀵뀶뀷뀸�뀹뀺뀻뀼뀽뀾뀿끀끁끂끃���끄끅끆끇끈끉끊끋끌끍끎끏끐끑끒끓끔�끕끖끗끘끙끚끛끜끝끞끟���끠끡끢끣끤끥끦끧끨끩끪끫끬끭끮끯끰�끱끲끳끴끵끶끷끸끹끺끻���끼끽끾끿낀낁낂낃낄낅낆낇낈낉낊낋낌�낍낎낏낐낑낒낓낔낕낖낗������������������������������������������������������������������".split(""); +for(j = 0; j != D[143].length; ++j) if(D[143][j].charCodeAt(0) !== 0xFFFD) { e[D[143][j]] = 36608 + j; d[36608 + j] = D[143][j];} +D[144] = "�����������������������������������������������������������������ᄂ�������������������������������나낙낚낛난낝낞낟날낡낢낣낤낥낦낧남�납낪낫났낭낮낯낰낱낲낳���내낵낶낷낸낹낺낻낼낽낾낿냀냁냂냃냄�냅냆냇냈냉냊냋냌냍냎냏���냐냑냒냓냔냕냖냗냘냙냚냛냜냝냞냟냠�냡냢냣냤냥냦냧냨냩냪냫���냬냭냮냯냰냱냲냳냴냵냶냷냸냹냺냻냼�냽냾냿넀넁넂넃넄넅넆넇���너넉넊넋넌넍넎넏널넑넒넓넔넕넖넗넘�넙넚넛넜넝넞넟넠넡넢넣��".split(""); +for(j = 0; j != D[144].length; ++j) if(D[144][j].charCodeAt(0) !== 0xFFFD) { e[D[144][j]] = 36864 + j; d[36864 + j] = D[144][j];} +D[145] = "�����������������������������������������������������������������네넥넦넧넨넩넪넫넬넭넮넯넰넱넲넳넴�넵넶넷넸넹넺넻넼넽넾넿���녀녁녂녃년녅녆녇녈녉녊녋녌녍녎녏념�녑녒녓녔녕녖녗녘녙녚녛���녜녝녞녟녠녡녢녣녤녥녦녧녨녩녪녫녬�녭녮녯녰녱녲녳녴녵녶녷���노녹녺녻논녽녾녿놀놁놂놃놄놅놆놇놈�놉놊놋놌농놎놏놐놑높놓���놔놕놖놗놘놙놚놛놜놝놞놟놠놡놢놣놤�놥놦놧놨놩놪놫놬놭놮놯���놰놱놲놳놴놵놶놷놸놹놺놻놼놽놾놿뇀�뇁뇂뇃뇄뇅뇆뇇뇈뇉뇊뇋��".split(""); +for(j = 0; j != D[145].length; ++j) if(D[145][j].charCodeAt(0) !== 0xFFFD) { e[D[145][j]] = 37120 + j; d[37120 + j] = D[145][j];} +D[146] = "�����������������������������������������������������������������뇌뇍뇎뇏뇐뇑뇒뇓뇔뇕뇖뇗뇘뇙뇚뇛뇜�뇝뇞뇟뇠뇡뇢뇣뇤뇥뇦뇧���뇨뇩뇪뇫뇬뇭뇮뇯뇰뇱뇲뇳뇴뇵뇶뇷뇸�뇹뇺뇻뇼뇽뇾뇿눀눁눂눃���누눅눆눇눈눉눊눋눌눍눎눏눐눑눒눓눔�눕눖눗눘눙눚눛눜눝눞눟���눠눡눢눣눤눥눦눧눨눩눪눫눬눭눮눯눰�눱눲눳눴눵눶눷눸눹눺눻���눼눽눾눿뉀뉁뉂뉃뉄뉅뉆뉇뉈뉉뉊뉋뉌�뉍뉎뉏뉐뉑뉒뉓뉔뉕뉖뉗���뉘뉙뉚뉛뉜뉝뉞뉟뉠뉡뉢뉣뉤뉥뉦뉧뉨�뉩뉪뉫뉬뉭뉮뉯뉰뉱뉲뉳��".split(""); +for(j = 0; j != D[146].length; ++j) if(D[146][j].charCodeAt(0) !== 0xFFFD) { e[D[146][j]] = 37376 + j; d[37376 + j] = D[146][j];} +D[147] = "�����������������������������������������������������������������뉴뉵뉶뉷뉸뉹뉺뉻뉼뉽뉾뉿늀늁늂늃늄�늅늆늇늈늉늊늋늌늍늎늏���느늑늒늓는늕늖늗늘늙늚늛늜늝늞늟늠�늡늢늣늤능늦늧늨늩늪늫���늬늭늮늯늰늱늲늳늴늵늶늷늸늹늺늻늼�늽늾늿닀닁닂닃닄닅닆닇���니닉닊닋닌닍닎닏닐닑닒닓닔닕닖닗님�닙닚닛닜닝닞닟닠닡닢닣������������������������������������������������������������������".split(""); +for(j = 0; j != D[147].length; ++j) if(D[147][j].charCodeAt(0) !== 0xFFFD) { e[D[147][j]] = 37632 + j; d[37632 + j] = D[147][j];} +D[148] = "�����������������������������������������������������������������ᄃ�������������������������������다닥닦닧단닩닪닫달닭닮닯닰닱닲닳담�답닶닷닸당닺닻닼닽닾닿���대댁댂댃댄댅댆댇댈댉댊댋댌댍댎댏댐�댑댒댓댔댕댖댗댘댙댚댛���댜댝댞댟댠댡댢댣댤댥댦댧댨댩댪댫댬�댭댮댯댰댱댲댳댴댵댶댷���댸댹댺댻댼댽댾댿덀덁덂덃덄덅덆덇덈�덉덊덋덌덍덎덏덐덑덒덓���더덕덖덗던덙덚덛덜덝덞덟덠덡덢덣덤�덥덦덧덨덩덪덫덬덭덮덯��".split(""); +for(j = 0; j != D[148].length; ++j) if(D[148][j].charCodeAt(0) !== 0xFFFD) { e[D[148][j]] = 37888 + j; d[37888 + j] = D[148][j];} +D[149] = "�����������������������������������������������������������������데덱덲덳덴덵덶덷델덹덺덻덼덽덾덿뎀�뎁뎂뎃뎄뎅뎆뎇뎈뎉뎊뎋���뎌뎍뎎뎏뎐뎑뎒뎓뎔뎕뎖뎗뎘뎙뎚뎛뎜�뎝뎞뎟뎠뎡뎢뎣뎤뎥뎦뎧���뎨뎩뎪뎫뎬뎭뎮뎯뎰뎱뎲뎳뎴뎵뎶뎷뎸�뎹뎺뎻뎼뎽뎾뎿돀돁돂돃���도독돆돇돈돉돊돋돌돍돎돏돐돑돒돓돔�돕돖돗돘동돚돛돜돝돞돟���돠돡돢돣돤돥돦돧돨돩돪돫돬돭돮돯돰�돱돲돳돴돵돶돷돸돹돺돻���돼돽돾돿됀됁됂됃됄됅됆됇됈됉됊됋됌�됍됎됏됐됑됒됓됔됕됖됗��".split(""); +for(j = 0; j != D[149].length; ++j) if(D[149][j].charCodeAt(0) !== 0xFFFD) { e[D[149][j]] = 38144 + j; d[38144 + j] = D[149][j];} +D[150] = "�����������������������������������������������������������������되됙됚됛된됝됞됟될됡됢됣됤됥됦됧됨�됩됪됫됬됭됮됯됰됱됲됳���됴됵됶됷됸됹됺됻됼됽됾됿둀둁둂둃둄�둅둆둇둈둉둊둋둌둍둎둏���두둑둒둓둔둕둖둗둘둙둚둛둜둝둞둟둠�둡둢둣둤둥둦둧둨둩둪둫���둬둭둮둯둰둱둲둳둴둵둶둷둸둹둺둻둼�둽둾둿뒀뒁뒂뒃뒄뒅뒆뒇���뒈뒉뒊뒋뒌뒍뒎뒏뒐뒑뒒뒓뒔뒕뒖뒗뒘�뒙뒚뒛뒜뒝뒞뒟뒠뒡뒢뒣���뒤뒥뒦뒧뒨뒩뒪뒫뒬뒭뒮뒯뒰뒱뒲뒳뒴�뒵뒶뒷뒸뒹뒺뒻뒼뒽뒾뒿��".split(""); +for(j = 0; j != D[150].length; ++j) if(D[150][j].charCodeAt(0) !== 0xFFFD) { e[D[150][j]] = 38400 + j; d[38400 + j] = D[150][j];} +D[151] = "�����������������������������������������������������������������듀듁듂듃듄듅듆듇듈듉듊듋듌듍듎듏듐�듑듒듓듔듕듖듗듘듙듚듛���드득듞듟든듡듢듣들듥듦듧듨듩듪듫듬�듭듮듯듰등듲듳듴듵듶듷���듸듹듺듻듼듽듾듿딀딁딂딃딄딅딆딇딈�딉딊딋딌딍딎딏딐딑딒딓���디딕딖딗딘딙딚딛딜딝딞딟딠딡딢딣딤�딥딦딧딨딩딪딫딬딭딮딯������������������������������������������������������������������".split(""); +for(j = 0; j != D[151].length; ++j) if(D[151][j].charCodeAt(0) !== 0xFFFD) { e[D[151][j]] = 38656 + j; d[38656 + j] = D[151][j];} +D[152] = "�����������������������������������������������������������������ᄄ�������������������������������따딱딲딳딴딵딶딷딸딹딺딻딼딽딾딿땀�땁땂땃땄땅땆땇땈땉땊땋���때땍땎땏땐땑땒땓땔땕땖땗땘땙땚땛땜�땝땞땟땠땡땢땣땤땥땦땧���땨땩땪땫땬땭땮땯땰땱땲땳땴땵땶땷땸�땹땺땻땼땽땾땿떀떁떂떃���떄떅떆떇떈떉떊떋떌떍떎떏떐떑떒떓떔�떕떖떗떘떙떚떛떜떝떞떟���떠떡떢떣떤떥떦떧떨떩떪떫떬떭떮떯떰�떱떲떳떴떵떶떷떸떹떺떻��".split(""); +for(j = 0; j != D[152].length; ++j) if(D[152][j].charCodeAt(0) !== 0xFFFD) { e[D[152][j]] = 38912 + j; d[38912 + j] = D[152][j];} +D[153] = "�����������������������������������������������������������������떼떽떾떿뗀뗁뗂뗃뗄뗅뗆뗇뗈뗉뗊뗋뗌�뗍뗎뗏뗐뗑뗒뗓뗔뗕뗖뗗���뗘뗙뗚뗛뗜뗝뗞뗟뗠뗡뗢뗣뗤뗥뗦뗧뗨�뗩뗪뗫뗬뗭뗮뗯뗰뗱뗲뗳���뗴뗵뗶뗷뗸뗹뗺뗻뗼뗽뗾뗿똀똁똂똃똄�똅똆똇똈똉똊똋똌똍똎똏���또똑똒똓똔똕똖똗똘똙똚똛똜똝똞똟똠�똡똢똣똤똥똦똧똨똩똪똫���똬똭똮똯똰똱똲똳똴똵똶똷똸똹똺똻똼�똽똾똿뙀뙁뙂뙃뙄뙅뙆뙇���뙈뙉뙊뙋뙌뙍뙎뙏뙐뙑뙒뙓뙔뙕뙖뙗뙘�뙙뙚뙛뙜뙝뙞뙟뙠뙡뙢뙣��".split(""); +for(j = 0; j != D[153].length; ++j) if(D[153][j].charCodeAt(0) !== 0xFFFD) { e[D[153][j]] = 39168 + j; d[39168 + j] = D[153][j];} +D[154] = "�����������������������������������������������������������������뙤뙥뙦뙧뙨뙩뙪뙫뙬뙭뙮뙯뙰뙱뙲뙳뙴�뙵뙶뙷뙸뙹뙺뙻뙼뙽뙾뙿���뚀뚁뚂뚃뚄뚅뚆뚇뚈뚉뚊뚋뚌뚍뚎뚏뚐�뚑뚒뚓뚔뚕뚖뚗뚘뚙뚚뚛���뚜뚝뚞뚟뚠뚡뚢뚣뚤뚥뚦뚧뚨뚩뚪뚫뚬�뚭뚮뚯뚰뚱뚲뚳뚴뚵뚶뚷���뚸뚹뚺뚻뚼뚽뚾뚿뛀뛁뛂뛃뛄뛅뛆뛇뛈�뛉뛊뛋뛌뛍뛎뛏뛐뛑뛒뛓���뛔뛕뛖뛗뛘뛙뛚뛛뛜뛝뛞뛟뛠뛡뛢뛣뛤�뛥뛦뛧뛨뛩뛪뛫뛬뛭뛮뛯���뛰뛱뛲뛳뛴뛵뛶뛷뛸뛹뛺뛻뛼뛽뛾뛿뜀�뜁뜂뜃뜄뜅뜆뜇뜈뜉뜊뜋��".split(""); +for(j = 0; j != D[154].length; ++j) if(D[154][j].charCodeAt(0) !== 0xFFFD) { e[D[154][j]] = 39424 + j; d[39424 + j] = D[154][j];} +D[155] = "�����������������������������������������������������������������뜌뜍뜎뜏뜐뜑뜒뜓뜔뜕뜖뜗뜘뜙뜚뜛뜜�뜝뜞뜟뜠뜡뜢뜣뜤뜥뜦뜧���뜨뜩뜪뜫뜬뜭뜮뜯뜰뜱뜲뜳뜴뜵뜶뜷뜸�뜹뜺뜻뜼뜽뜾뜿띀띁띂띃���띄띅띆띇띈띉띊띋띌띍띎띏띐띑띒띓띔�띕띖띗띘띙띚띛띜띝띞띟���띠띡띢띣띤띥띦띧띨띩띪띫띬띭띮띯띰�띱띲띳띴띵띶띷띸띹띺띻������������������������������������������������������������������".split(""); +for(j = 0; j != D[155].length; ++j) if(D[155][j].charCodeAt(0) !== 0xFFFD) { e[D[155][j]] = 39680 + j; d[39680 + j] = D[155][j];} +D[156] = "�����������������������������������������������������������������ᄅ�������������������������������라락띾띿란랁랂랃랄랅랆랇랈랉랊랋람�랍랎랏랐랑랒랓랔랕랖랗���래랙랚랛랜랝랞랟랠랡랢랣랤랥랦랧램�랩랪랫랬랭랮랯랰랱랲랳���랴략랶랷랸랹랺랻랼랽랾랿럀럁럂럃럄�럅럆럇럈량럊럋럌럍럎럏���럐럑럒럓럔럕럖럗럘럙럚럛럜럝럞럟럠�럡럢럣럤럥럦럧럨럩럪럫���러럭럮럯런럱럲럳럴럵럶럷럸럹럺럻럼�럽럾럿렀렁렂렃렄렅렆렇��".split(""); +for(j = 0; j != D[156].length; ++j) if(D[156][j].charCodeAt(0) !== 0xFFFD) { e[D[156][j]] = 39936 + j; d[39936 + j] = D[156][j];} +D[157] = "�����������������������������������������������������������������레렉렊렋렌렍렎렏렐렑렒렓렔렕렖렗렘�렙렚렛렜렝렞렟렠렡렢렣���려력렦렧련렩렪렫렬렭렮렯렰렱렲렳렴�렵렶렷렸령렺렻렼렽렾렿���례롁롂롃롄롅롆롇롈롉롊롋롌롍롎롏롐�롑롒롓롔롕롖롗롘롙롚롛���로록롞롟론롡롢롣롤롥롦롧롨롩롪롫롬�롭롮롯롰롱롲롳롴롵롶롷���롸롹롺롻롼롽롾롿뢀뢁뢂뢃뢄뢅뢆뢇뢈�뢉뢊뢋뢌뢍뢎뢏뢐뢑뢒뢓���뢔뢕뢖뢗뢘뢙뢚뢛뢜뢝뢞뢟뢠뢡뢢뢣뢤�뢥뢦뢧뢨뢩뢪뢫뢬뢭뢮뢯��".split(""); +for(j = 0; j != D[157].length; ++j) if(D[157][j].charCodeAt(0) !== 0xFFFD) { e[D[157][j]] = 40192 + j; d[40192 + j] = D[157][j];} +D[158] = "�����������������������������������������������������������������뢰뢱뢲뢳뢴뢵뢶뢷뢸뢹뢺뢻뢼뢽뢾뢿룀�룁룂룃룄룅룆룇룈룉룊룋���료룍룎룏룐룑룒룓룔룕룖룗룘룙룚룛룜�룝룞룟룠룡룢룣룤룥룦룧���루룩룪룫룬룭룮룯룰룱룲룳룴룵룶룷룸�룹룺룻룼룽룾룿뤀뤁뤂뤃���뤄뤅뤆뤇뤈뤉뤊뤋뤌뤍뤎뤏뤐뤑뤒뤓뤔�뤕뤖뤗뤘뤙뤚뤛뤜뤝뤞뤟���뤠뤡뤢뤣뤤뤥뤦뤧뤨뤩뤪뤫뤬뤭뤮뤯뤰�뤱뤲뤳뤴뤵뤶뤷뤸뤹뤺뤻���뤼뤽뤾뤿륀륁륂륃륄륅륆륇륈륉륊륋륌�륍륎륏륐륑륒륓륔륕륖륗��".split(""); +for(j = 0; j != D[158].length; ++j) if(D[158][j].charCodeAt(0) !== 0xFFFD) { e[D[158][j]] = 40448 + j; d[40448 + j] = D[158][j];} +D[159] = "�����������������������������������������������������������������류륙륚륛륜륝륞륟률륡륢륣륤륥륦륧륨�륩륪륫륬륭륮륯륰륱륲륳���르륵륶륷른륹륺륻를륽륾륿릀릁릂릃름�릅릆릇릈릉릊릋릌릍릎릏���릐릑릒릓릔릕릖릗릘릙릚릛릜릝릞릟릠�릡릢릣릤릥릦릧릨릩릪릫���리릭릮릯린릱릲릳릴릵릶릷릸릹릺릻림�립릾릿맀링맂맃맄맅맆맇������������������������������������������������������������������".split(""); +for(j = 0; j != D[159].length; ++j) if(D[159][j].charCodeAt(0) !== 0xFFFD) { e[D[159][j]] = 40704 + j; d[40704 + j] = D[159][j];} +D[160] = "�����������������������������������������������������������������ᄆ�������������������������������마막맊맋만맍많맏말맑맒맓맔맕맖맗맘�맙맚맛맜망맞맟맠맡맢맣���매맥맦맧맨맩맪맫맬맭맮맯맰맱맲맳맴�맵맶맷맸맹맺맻맼맽맾맿���먀먁먂먃먄먅먆먇먈먉먊먋먌먍먎먏먐�먑먒먓먔먕먖먗먘먙먚먛���먜먝먞먟먠먡먢먣먤먥먦먧먨먩먪먫먬�먭먮먯먰먱먲먳먴먵먶먷���머먹먺먻먼먽먾먿멀멁멂멃멄멅멆멇멈�멉멊멋멌멍멎멏멐멑멒멓��".split(""); +for(j = 0; j != D[160].length; ++j) if(D[160][j].charCodeAt(0) !== 0xFFFD) { e[D[160][j]] = 40960 + j; d[40960 + j] = D[160][j];} +D[161] = "�����������������������������������������������������������������메멕멖멗멘멙멚멛멜멝멞멟멠멡멢멣멤�멥멦멧멨멩멪멫멬멭멮멯���며멱멲멳면멵멶멷멸멹멺멻멼멽멾멿몀�몁몂몃몄명몆몇몈몉몊몋���몌몍몎몏몐몑몒몓몔몕몖몗몘몙몚몛몜�몝몞몟몠몡몢몣몤몥몦몧���모목몪몫몬몭몮몯몰몱몲몳몴몵몶몷몸�몹몺못몼몽몾몿뫀뫁뫂뫃���뫄뫅뫆뫇뫈뫉뫊뫋뫌뫍뫎뫏뫐뫑뫒뫓뫔�뫕뫖뫗뫘뫙뫚뫛뫜뫝뫞뫟���뫠뫡뫢뫣뫤뫥뫦뫧뫨뫩뫪뫫뫬뫭뫮뫯뫰�뫱뫲뫳뫴뫵뫶뫷뫸뫹뫺뫻��".split(""); +for(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];} +D[162] = "�����������������������������������������������������������������뫼뫽뫾뫿묀묁묂묃묄묅묆묇묈묉묊묋묌�묍묎묏묐묑묒묓묔묕묖묗���묘묙묚묛묜묝묞묟묠묡묢묣묤묥묦묧묨�묩묪묫묬묭묮묯묰묱묲묳���무묵묶묷문묹묺묻물묽묾묿뭀뭁뭂뭃뭄�뭅뭆뭇뭈뭉뭊뭋뭌뭍뭎뭏���뭐뭑뭒뭓뭔뭕뭖뭗뭘뭙뭚뭛뭜뭝뭞뭟뭠�뭡뭢뭣뭤뭥뭦뭧뭨뭩뭪뭫���뭬뭭뭮뭯뭰뭱뭲뭳뭴뭵뭶뭷뭸뭹뭺뭻뭼�뭽뭾뭿뮀뮁뮂뮃뮄뮅뮆뮇���뮈뮉뮊뮋뮌뮍뮎뮏뮐뮑뮒뮓뮔뮕뮖뮗뮘�뮙뮚뮛뮜뮝뮞뮟뮠뮡뮢뮣��".split(""); +for(j = 0; j != D[162].length; ++j) if(D[162][j].charCodeAt(0) !== 0xFFFD) { e[D[162][j]] = 41472 + j; d[41472 + j] = D[162][j];} +D[163] = "�����������������������������������������������������������������뮤뮥뮦뮧뮨뮩뮪뮫뮬뮭뮮뮯뮰뮱뮲뮳뮴�뮵뮶뮷뮸뮹뮺뮻뮼뮽뮾뮿���므믁믂믃믄믅믆믇믈믉믊믋믌믍믎믏믐�믑믒믓믔믕믖믗믘믙믚믛���믜믝믞믟믠믡믢믣믤믥믦믧믨믩믪믫믬�믭믮믯믰믱믲믳믴믵믶믷���미믹믺믻민믽믾믿밀밁밂밃밄밅밆밇밈�밉밊밋밌밍밎및밐밑밒밓������������������������������������������������������������������".split(""); +for(j = 0; j != D[163].length; ++j) if(D[163][j].charCodeAt(0) !== 0xFFFD) { e[D[163][j]] = 41728 + j; d[41728 + j] = D[163][j];} +D[164] = "�����������������������������������������������������������������ᄇ�������������������������������바박밖밗반밙밚받발밝밞밟밠밡밢밣밤�밥밦밧밨방밪밫밬밭밮밯���배백밲밳밴밵밶밷밸밹밺밻밼밽밾밿뱀�뱁뱂뱃뱄뱅뱆뱇뱈뱉뱊뱋���뱌뱍뱎뱏뱐뱑뱒뱓뱔뱕뱖뱗뱘뱙뱚뱛뱜�뱝뱞뱟뱠뱡뱢뱣뱤뱥뱦뱧���뱨뱩뱪뱫뱬뱭뱮뱯뱰뱱뱲뱳뱴뱵뱶뱷뱸�뱹뱺뱻뱼뱽뱾뱿벀벁벂벃���버벅벆벇번벉벊벋벌벍벎벏벐벑벒벓범�법벖벗벘벙벚벛벜벝벞벟��".split(""); +for(j = 0; j != D[164].length; ++j) if(D[164][j].charCodeAt(0) !== 0xFFFD) { e[D[164][j]] = 41984 + j; d[41984 + j] = D[164][j];} +D[165] = "�����������������������������������������������������������������베벡벢벣벤벥벦벧벨벩벪벫벬벭벮벯벰�벱벲벳벴벵벶벷벸벹벺벻���벼벽벾벿변볁볂볃별볅볆볇볈볉볊볋볌�볍볎볏볐병볒볓볔볕볖볗���볘볙볚볛볜볝볞볟볠볡볢볣볤볥볦볧볨�볩볪볫볬볭볮볯볰볱볲볳���보복볶볷본볹볺볻볼볽볾볿봀봁봂봃봄�봅봆봇봈봉봊봋봌봍봎봏���봐봑봒봓봔봕봖봗봘봙봚봛봜봝봞봟봠�봡봢봣봤봥봦봧봨봩봪봫���봬봭봮봯봰봱봲봳봴봵봶봷봸봹봺봻봼�봽봾봿뵀뵁뵂뵃뵄뵅뵆뵇��".split(""); +for(j = 0; j != D[165].length; ++j) if(D[165][j].charCodeAt(0) !== 0xFFFD) { e[D[165][j]] = 42240 + j; d[42240 + j] = D[165][j];} +D[166] = "�����������������������������������������������������������������뵈뵉뵊뵋뵌뵍뵎뵏뵐뵑뵒뵓뵔뵕뵖뵗뵘�뵙뵚뵛뵜뵝뵞뵟뵠뵡뵢뵣���뵤뵥뵦뵧뵨뵩뵪뵫뵬뵭뵮뵯뵰뵱뵲뵳뵴�뵵뵶뵷뵸뵹뵺뵻뵼뵽뵾뵿���부북붂붃분붅붆붇불붉붊붋붌붍붎붏붐�붑붒붓붔붕붖붗붘붙붚붛���붜붝붞붟붠붡붢붣붤붥붦붧붨붩붪붫붬�붭붮붯붰붱붲붳붴붵붶붷���붸붹붺붻붼붽붾붿뷀뷁뷂뷃뷄뷅뷆뷇뷈�뷉뷊뷋뷌뷍뷎뷏뷐뷑뷒뷓���뷔뷕뷖뷗뷘뷙뷚뷛뷜뷝뷞뷟뷠뷡뷢뷣뷤�뷥뷦뷧뷨뷩뷪뷫뷬뷭뷮뷯��".split(""); +for(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];} +D[167] = "�����������������������������������������������������������������뷰뷱뷲뷳뷴뷵뷶뷷뷸뷹뷺뷻뷼뷽뷾뷿븀�븁븂븃븄븅븆븇븈븉븊븋���브븍븎븏븐븑븒븓블븕븖븗븘븙븚븛븜�븝븞븟븠븡븢븣븤븥븦븧���븨븩븪븫븬븭븮븯븰븱븲븳븴븵븶븷븸�븹븺븻븼븽븾븿빀빁빂빃���비빅빆빇빈빉빊빋빌빍빎빏빐빑빒빓빔�빕빖빗빘빙빚빛빜빝빞빟������������������������������������������������������������������".split(""); +for(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];} +D[168] = "�����������������������������������������������������������������ᄈ�������������������������������빠빡빢빣빤빥빦빧빨빩빪빫빬빭빮빯빰�빱빲빳빴빵빶빷빸빹빺빻���빼빽빾빿뺀뺁뺂뺃뺄뺅뺆뺇뺈뺉뺊뺋뺌�뺍뺎뺏뺐뺑뺒뺓뺔뺕뺖뺗���뺘뺙뺚뺛뺜뺝뺞뺟뺠뺡뺢뺣뺤뺥뺦뺧뺨�뺩뺪뺫뺬뺭뺮뺯뺰뺱뺲뺳���뺴뺵뺶뺷뺸뺹뺺뺻뺼뺽뺾뺿뻀뻁뻂뻃뻄�뻅뻆뻇뻈뻉뻊뻋뻌뻍뻎뻏���뻐뻑뻒뻓뻔뻕뻖뻗뻘뻙뻚뻛뻜뻝뻞뻟뻠�뻡뻢뻣뻤뻥뻦뻧뻨뻩뻪뻫��".split(""); +for(j = 0; j != D[168].length; ++j) if(D[168][j].charCodeAt(0) !== 0xFFFD) { e[D[168][j]] = 43008 + j; d[43008 + j] = D[168][j];} +D[169] = "�����������������������������������������������������������������뻬뻭뻮뻯뻰뻱뻲뻳뻴뻵뻶뻷뻸뻹뻺뻻뻼�뻽뻾뻿뼀뼁뼂뼃뼄뼅뼆뼇���뼈뼉뼊뼋뼌뼍뼎뼏뼐뼑뼒뼓뼔뼕뼖뼗뼘�뼙뼚뼛뼜뼝뼞뼟뼠뼡뼢뼣���뼤뼥뼦뼧뼨뼩뼪뼫뼬뼭뼮뼯뼰뼱뼲뼳뼴�뼵뼶뼷뼸뼹뼺뼻뼼뼽뼾뼿���뽀뽁뽂뽃뽄뽅뽆뽇뽈뽉뽊뽋뽌뽍뽎뽏뽐�뽑뽒뽓뽔뽕뽖뽗뽘뽙뽚뽛���뽜뽝뽞뽟뽠뽡뽢뽣뽤뽥뽦뽧뽨뽩뽪뽫뽬�뽭뽮뽯뽰뽱뽲뽳뽴뽵뽶뽷���뽸뽹뽺뽻뽼뽽뽾뽿뾀뾁뾂뾃뾄뾅뾆뾇뾈�뾉뾊뾋뾌뾍뾎뾏뾐뾑뾒뾓��".split(""); +for(j = 0; j != D[169].length; ++j) if(D[169][j].charCodeAt(0) !== 0xFFFD) { e[D[169][j]] = 43264 + j; d[43264 + j] = D[169][j];} +D[170] = "�����������������������������������������������������������������뾔뾕뾖뾗뾘뾙뾚뾛뾜뾝뾞뾟뾠뾡뾢뾣뾤�뾥뾦뾧뾨뾩뾪뾫뾬뾭뾮뾯���뾰뾱뾲뾳뾴뾵뾶뾷뾸뾹뾺뾻뾼뾽뾾뾿뿀�뿁뿂뿃뿄뿅뿆뿇뿈뿉뿊뿋���뿌뿍뿎뿏뿐뿑뿒뿓뿔뿕뿖뿗뿘뿙뿚뿛뿜�뿝뿞뿟뿠뿡뿢뿣뿤뿥뿦뿧���뿨뿩뿪뿫뿬뿭뿮뿯뿰뿱뿲뿳뿴뿵뿶뿷뿸�뿹뿺뿻뿼뿽뿾뿿쀀쀁쀂쀃���쀄쀅쀆쀇쀈쀉쀊쀋쀌쀍쀎쀏쀐쀑쀒쀓쀔�쀕쀖쀗쀘쀙쀚쀛쀜쀝쀞쀟���쀠쀡쀢쀣쀤쀥쀦쀧쀨쀩쀪쀫쀬쀭쀮쀯쀰�쀱쀲쀳쀴쀵쀶쀷쀸쀹쀺쀻��".split(""); +for(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];} +D[171] = "�����������������������������������������������������������������쀼쀽쀾쀿쁀쁁쁂쁃쁄쁅쁆쁇쁈쁉쁊쁋쁌�쁍쁎쁏쁐쁑쁒쁓쁔쁕쁖쁗���쁘쁙쁚쁛쁜쁝쁞쁟쁠쁡쁢쁣쁤쁥쁦쁧쁨�쁩쁪쁫쁬쁭쁮쁯쁰쁱쁲쁳���쁴쁵쁶쁷쁸쁹쁺쁻쁼쁽쁾쁿삀삁삂삃삄�삅삆삇삈삉삊삋삌삍삎삏���삐삑삒삓삔삕삖삗삘삙삚삛삜삝삞삟삠�삡삢삣삤삥삦삧삨삩삪삫������������������������������������������������������������������".split(""); +for(j = 0; j != D[171].length; ++j) if(D[171][j].charCodeAt(0) !== 0xFFFD) { e[D[171][j]] = 43776 + j; d[43776 + j] = D[171][j];} +D[172] = "�����������������������������������������������������������������ᄉ�������������������������������사삭삮삯산삱삲삳살삵삶삷삸삹삺삻삼�삽삾삿샀상샂샃샄샅샆샇���새색샊샋샌샍샎샏샐샑샒샓샔샕샖샗샘�샙샚샛샜생샞샟샠샡샢샣���샤샥샦샧샨샩샪샫샬샭샮샯샰샱샲샳샴�샵샶샷샸샹샺샻샼샽샾샿���섀섁섂섃섄섅섆섇섈섉섊섋섌섍섎섏섐�섑섒섓섔섕섖섗섘섙섚섛���서석섞섟선섡섢섣설섥섦섧섨섩섪섫섬�섭섮섯섰성섲섳섴섵섶섷��".split(""); +for(j = 0; j != D[172].length; ++j) if(D[172][j].charCodeAt(0) !== 0xFFFD) { e[D[172][j]] = 44032 + j; d[44032 + j] = D[172][j];} +D[173] = "�����������������������������������������������������������������세섹섺섻센섽섾섿셀셁셂셃셄셅셆셇셈�셉셊셋셌셍셎셏셐셑셒셓���셔셕셖셗션셙셚셛셜셝셞셟셠셡셢셣셤�셥셦셧셨셩셪셫셬셭셮셯���셰셱셲셳셴셵셶셷셸셹셺셻셼셽셾셿솀�솁솂솃솄솅솆솇솈솉솊솋���소속솎솏손솑솒솓솔솕솖솗솘솙솚솛솜�솝솞솟솠송솢솣솤솥솦솧���솨솩솪솫솬솭솮솯솰솱솲솳솴솵솶솷솸�솹솺솻솼솽솾솿쇀쇁쇂쇃���쇄쇅쇆쇇쇈쇉쇊쇋쇌쇍쇎쇏쇐쇑쇒쇓쇔�쇕쇖쇗쇘쇙쇚쇛쇜쇝쇞쇟��".split(""); +for(j = 0; j != D[173].length; ++j) if(D[173][j].charCodeAt(0) !== 0xFFFD) { e[D[173][j]] = 44288 + j; d[44288 + j] = D[173][j];} +D[174] = "�����������������������������������������������������������������쇠쇡쇢쇣쇤쇥쇦쇧쇨쇩쇪쇫쇬쇭쇮쇯쇰�쇱쇲쇳쇴쇵쇶쇷쇸쇹쇺쇻���쇼쇽쇾쇿숀숁숂숃숄숅숆숇숈숉숊숋숌�숍숎숏숐숑숒숓숔숕숖숗���수숙숚숛순숝숞숟술숡숢숣숤숥숦숧숨�숩숪숫숬숭숮숯숰숱숲숳���숴숵숶숷숸숹숺숻숼숽숾숿쉀쉁쉂쉃쉄�쉅쉆쉇쉈쉉쉊쉋쉌쉍쉎쉏���쉐쉑쉒쉓쉔쉕쉖쉗쉘쉙쉚쉛쉜쉝쉞쉟쉠�쉡쉢쉣쉤쉥쉦쉧쉨쉩쉪쉫���쉬쉭쉮쉯쉰쉱쉲쉳쉴쉵쉶쉷쉸쉹쉺쉻쉼�쉽쉾쉿슀슁슂슃슄슅슆슇��".split(""); +for(j = 0; j != D[174].length; ++j) if(D[174][j].charCodeAt(0) !== 0xFFFD) { e[D[174][j]] = 44544 + j; d[44544 + j] = D[174][j];} +D[175] = "�����������������������������������������������������������������슈슉슊슋슌슍슎슏슐슑슒슓슔슕슖슗슘�슙슚슛슜슝슞슟슠슡슢슣���스슥슦슧슨슩슪슫슬슭슮슯슰슱슲슳슴�습슶슷슸승슺슻슼슽슾슿���싀싁싂싃싄싅싆싇싈싉싊싋싌싍싎싏싐�싑싒싓싔싕싖싗싘싙싚싛���시식싞싟신싡싢싣실싥싦싧싨싩싪싫심�십싮싯싰싱싲싳싴싵싶싷������������������������������������������������������������������".split(""); +for(j = 0; j != D[175].length; ++j) if(D[175][j].charCodeAt(0) !== 0xFFFD) { e[D[175][j]] = 44800 + j; d[44800 + j] = D[175][j];} +D[176] = "�����������������������������������������������������������������ᄊ�������������������������������싸싹싺싻싼싽싾싿쌀쌁쌂쌃쌄쌅쌆쌇쌈�쌉쌊쌋쌌쌍쌎쌏쌐쌑쌒쌓���쌔쌕쌖쌗쌘쌙쌚쌛쌜쌝쌞쌟쌠쌡쌢쌣쌤�쌥쌦쌧쌨쌩쌪쌫쌬쌭쌮쌯���쌰쌱쌲쌳쌴쌵쌶쌷쌸쌹쌺쌻쌼쌽쌾쌿썀�썁썂썃썄썅썆썇썈썉썊썋���썌썍썎썏썐썑썒썓썔썕썖썗썘썙썚썛썜�썝썞썟썠썡썢썣썤썥썦썧���써썩썪썫썬썭썮썯썰썱썲썳썴썵썶썷썸�썹썺썻썼썽썾썿쎀쎁쎂쎃��".split(""); +for(j = 0; j != D[176].length; ++j) if(D[176][j].charCodeAt(0) !== 0xFFFD) { e[D[176][j]] = 45056 + j; d[45056 + j] = D[176][j];} +D[177] = "�����������������������������������������������������������������쎄쎅쎆쎇쎈쎉쎊쎋쎌쎍쎎쎏쎐쎑쎒쎓쎔�쎕쎖쎗쎘쎙쎚쎛쎜쎝쎞쎟���쎠쎡쎢쎣쎤쎥쎦쎧쎨쎩쎪쎫쎬쎭쎮쎯쎰�쎱쎲쎳쎴쎵쎶쎷쎸쎹쎺쎻���쎼쎽쎾쎿쏀쏁쏂쏃쏄쏅쏆쏇쏈쏉쏊쏋쏌�쏍쏎쏏쏐쏑쏒쏓쏔쏕쏖쏗���쏘쏙쏚쏛쏜쏝쏞쏟쏠쏡쏢쏣쏤쏥쏦쏧쏨�쏩쏪쏫쏬쏭쏮쏯쏰쏱쏲쏳���쏴쏵쏶쏷쏸쏹쏺쏻쏼쏽쏾쏿쐀쐁쐂쐃쐄�쐅쐆쐇쐈쐉쐊쐋쐌쐍쐎쐏���쐐쐑쐒쐓쐔쐕쐖쐗쐘쐙쐚쐛쐜쐝쐞쐟쐠�쐡쐢쐣쐤쐥쐦쐧쐨쐩쐪쐫��".split(""); +for(j = 0; j != D[177].length; ++j) if(D[177][j].charCodeAt(0) !== 0xFFFD) { e[D[177][j]] = 45312 + j; d[45312 + j] = D[177][j];} +D[178] = "�����������������������������������������������������������������쐬쐭쐮쐯쐰쐱쐲쐳쐴쐵쐶쐷쐸쐹쐺쐻쐼�쐽쐾쐿쑀쑁쑂쑃쑄쑅쑆쑇���쑈쑉쑊쑋쑌쑍쑎쑏쑐쑑쑒쑓쑔쑕쑖쑗쑘�쑙쑚쑛쑜쑝쑞쑟쑠쑡쑢쑣���쑤쑥쑦쑧쑨쑩쑪쑫쑬쑭쑮쑯쑰쑱쑲쑳쑴�쑵쑶쑷쑸쑹쑺쑻쑼쑽쑾쑿���쒀쒁쒂쒃쒄쒅쒆쒇쒈쒉쒊쒋쒌쒍쒎쒏쒐�쒑쒒쒓쒔쒕쒖쒗쒘쒙쒚쒛���쒜쒝쒞쒟쒠쒡쒢쒣쒤쒥쒦쒧쒨쒩쒪쒫쒬�쒭쒮쒯쒰쒱쒲쒳쒴쒵쒶쒷���쒸쒹쒺쒻쒼쒽쒾쒿쓀쓁쓂쓃쓄쓅쓆쓇쓈�쓉쓊쓋쓌쓍쓎쓏쓐쓑쓒쓓��".split(""); +for(j = 0; j != D[178].length; ++j) if(D[178][j].charCodeAt(0) !== 0xFFFD) { e[D[178][j]] = 45568 + j; d[45568 + j] = D[178][j];} +D[179] = "�����������������������������������������������������������������쓔쓕쓖쓗쓘쓙쓚쓛쓜쓝쓞쓟쓠쓡쓢쓣쓤�쓥쓦쓧쓨쓩쓪쓫쓬쓭쓮쓯���쓰쓱쓲쓳쓴쓵쓶쓷쓸쓹쓺쓻쓼쓽쓾쓿씀�씁씂씃씄씅씆씇씈씉씊씋���씌씍씎씏씐씑씒씓씔씕씖씗씘씙씚씛씜�씝씞씟씠씡씢씣씤씥씦씧���씨씩씪씫씬씭씮씯씰씱씲씳씴씵씶씷씸�씹씺씻씼씽씾씿앀앁앂앃������������������������������������������������������������������".split(""); +for(j = 0; j != D[179].length; ++j) if(D[179][j].charCodeAt(0) !== 0xFFFD) { e[D[179][j]] = 45824 + j; d[45824 + j] = D[179][j];} +D[180] = "�����������������������������������������������������������������ᄋ�������������������������������아악앆앇안앉않앋알앍앎앏앐앑앒앓암�압앖앗았앙앚앛앜앝앞앟���애액앢앣앤앥앦앧앨앩앪앫앬앭앮앯앰�앱앲앳앴앵앶앷앸앹앺앻���야약앾앿얀얁얂얃얄얅얆얇얈얉얊얋얌�얍얎얏얐양얒얓얔얕얖얗���얘얙얚얛얜얝얞얟얠얡얢얣얤얥얦얧얨�얩얪얫얬얭얮얯얰얱얲얳���어억얶얷언얹얺얻얼얽얾얿엀엁엂엃엄�업없엇었엉엊엋엌엍엎엏��".split(""); +for(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];} +D[181] = "�����������������������������������������������������������������에엑엒엓엔엕엖엗엘엙엚엛엜엝엞엟엠�엡엢엣엤엥엦엧엨엩엪엫���여역엮엯연엱엲엳열엵엶엷엸엹엺엻염�엽엾엿였영옂옃옄옅옆옇���예옉옊옋옌옍옎옏옐옑옒옓옔옕옖옗옘�옙옚옛옜옝옞옟옠옡옢옣���오옥옦옧온옩옪옫올옭옮옯옰옱옲옳옴�옵옶옷옸옹옺옻옼옽옾옿���와왁왂왃완왅왆왇왈왉왊왋왌왍왎왏왐�왑왒왓왔왕왖왗왘왙왚왛���왜왝왞왟왠왡왢왣왤왥왦왧왨왩왪왫왬�왭왮왯왰왱왲왳왴왵왶왷��".split(""); +for(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];} +D[182] = "�����������������������������������������������������������������외왹왺왻왼왽왾왿욀욁욂욃욄욅욆욇욈�욉욊욋욌욍욎욏욐욑욒욓���요욕욖욗욘욙욚욛욜욝욞욟욠욡욢욣욤�욥욦욧욨용욪욫욬욭욮욯���우욱욲욳운욵욶욷울욹욺욻욼욽욾욿움�웁웂웃웄웅웆웇웈웉웊웋���워웍웎웏원웑웒웓월웕웖웗웘웙웚웛웜�웝웞웟웠웡웢웣웤웥웦웧���웨웩웪웫웬웭웮웯웰웱웲웳웴웵웶웷웸�웹웺웻웼웽웾웿윀윁윂윃���위윅윆윇윈윉윊윋윌윍윎윏윐윑윒윓윔�윕윖윗윘윙윚윛윜윝윞윟��".split(""); +for(j = 0; j != D[182].length; ++j) if(D[182][j].charCodeAt(0) !== 0xFFFD) { e[D[182][j]] = 46592 + j; d[46592 + j] = D[182][j];} +D[183] = "�����������������������������������������������������������������유육윢윣윤윥윦윧율윩윪윫윬윭윮윯윰�윱윲윳윴융윶윷윸윹윺윻���으윽윾윿은읁읂읃을읅읆읇읈읉읊읋음�읍읎읏읐응읒읓읔읕읖읗���의읙읚읛읜읝읞읟읠읡읢읣읤읥읦읧읨�읩읪읫읬읭읮읯읰읱읲읳���이익읶읷인읹읺읻일읽읾읿잀잁잂잃임�입잆잇있잉잊잋잌잍잎잏������������������������������������������������������������������".split(""); +for(j = 0; j != D[183].length; ++j) if(D[183][j].charCodeAt(0) !== 0xFFFD) { e[D[183][j]] = 46848 + j; d[46848 + j] = D[183][j];} +D[184] = "�����������������������������������������������������������������ᄌ�������������������������������자작잒잓잔잕잖잗잘잙잚잛잜잝잞잟잠�잡잢잣잤장잦잧잨잩잪잫���재잭잮잯잰잱잲잳잴잵잶잷잸잹잺잻잼�잽잾잿쟀쟁쟂쟃쟄쟅쟆쟇���쟈쟉쟊쟋쟌쟍쟎쟏쟐쟑쟒쟓쟔쟕쟖쟗쟘�쟙쟚쟛쟜쟝쟞쟟쟠쟡쟢쟣���쟤쟥쟦쟧쟨쟩쟪쟫쟬쟭쟮쟯쟰쟱쟲쟳쟴�쟵쟶쟷쟸쟹쟺쟻쟼쟽쟾쟿���저적젂젃전젅젆젇절젉젊젋젌젍젎젏점�접젒젓젔정젖젗젘젙젚젛��".split(""); +for(j = 0; j != D[184].length; ++j) if(D[184][j].charCodeAt(0) !== 0xFFFD) { e[D[184][j]] = 47104 + j; d[47104 + j] = D[184][j];} +D[185] = "�����������������������������������������������������������������제젝젞젟젠젡젢젣젤젥젦젧젨젩젪젫젬�젭젮젯젰젱젲젳젴젵젶젷���져젹젺젻젼젽젾젿졀졁졂졃졄졅졆졇졈�졉졊졋졌졍졎졏졐졑졒졓���졔졕졖졗졘졙졚졛졜졝졞졟졠졡졢졣졤�졥졦졧졨졩졪졫졬졭졮졯���조족졲졳존졵졶졷졸졹졺졻졼졽졾졿좀�좁좂좃좄종좆좇좈좉좊좋���좌좍좎좏좐좑좒좓좔좕좖좗좘좙좚좛좜�좝좞좟좠좡좢좣좤좥좦좧���좨좩좪좫좬좭좮좯좰좱좲좳좴좵좶좷좸�좹좺좻좼좽좾좿죀죁죂죃��".split(""); +for(j = 0; j != D[185].length; ++j) if(D[185][j].charCodeAt(0) !== 0xFFFD) { e[D[185][j]] = 47360 + j; d[47360 + j] = D[185][j];} +D[186] = "�����������������������������������������������������������������죄죅죆죇죈죉죊죋죌죍죎죏죐죑죒죓죔�죕죖죗죘죙죚죛죜죝죞죟���죠죡죢죣죤죥죦죧죨죩죪죫죬죭죮죯죰�죱죲죳죴죵죶죷죸죹죺죻���주죽죾죿준줁줂줃줄줅줆줇줈줉줊줋줌�줍줎줏줐중줒줓줔줕줖줗���줘줙줚줛줜줝줞줟줠줡줢줣줤줥줦줧줨�줩줪줫줬줭줮줯줰줱줲줳���줴줵줶줷줸줹줺줻줼줽줾줿쥀쥁쥂쥃쥄�쥅쥆쥇쥈쥉쥊쥋쥌쥍쥎쥏���쥐쥑쥒쥓쥔쥕쥖쥗쥘쥙쥚쥛쥜쥝쥞쥟쥠�쥡쥢쥣쥤쥥쥦쥧쥨쥩쥪쥫��".split(""); +for(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];} +D[187] = "�����������������������������������������������������������������쥬쥭쥮쥯쥰쥱쥲쥳쥴쥵쥶쥷쥸쥹쥺쥻쥼�쥽쥾쥿즀즁즂즃즄즅즆즇���즈즉즊즋즌즍즎즏즐즑즒즓즔즕즖즗즘�즙즚즛즜증즞즟즠즡즢즣���즤즥즦즧즨즩즪즫즬즭즮즯즰즱즲즳즴�즵즶즷즸즹즺즻즼즽즾즿���지직짂짃진짅짆짇질짉짊짋짌짍짎짏짐�집짒짓짔징짖짗짘짙짚짛������������������������������������������������������������������".split(""); +for(j = 0; j != D[187].length; ++j) if(D[187][j].charCodeAt(0) !== 0xFFFD) { e[D[187][j]] = 47872 + j; d[47872 + j] = D[187][j];} +D[188] = "�����������������������������������������������������������������ᄍ�������������������������������짜짝짞짟짠짡짢짣짤짥짦짧짨짩짪짫짬�짭짮짯짰짱짲짳짴짵짶짷���째짹짺짻짼짽짾짿쨀쨁쨂쨃쨄쨅쨆쨇쨈�쨉쨊쨋쨌쨍쨎쨏쨐쨑쨒쨓���쨔쨕쨖쨗쨘쨙쨚쨛쨜쨝쨞쨟쨠쨡쨢쨣쨤�쨥쨦쨧쨨쨩쨪쨫쨬쨭쨮쨯���쨰쨱쨲쨳쨴쨵쨶쨷쨸쨹쨺쨻쨼쨽쨾쨿쩀�쩁쩂쩃쩄쩅쩆쩇쩈쩉쩊쩋���쩌쩍쩎쩏쩐쩑쩒쩓쩔쩕쩖쩗쩘쩙쩚쩛쩜�쩝쩞쩟쩠쩡쩢쩣쩤쩥쩦쩧��".split(""); +for(j = 0; j != D[188].length; ++j) if(D[188][j].charCodeAt(0) !== 0xFFFD) { e[D[188][j]] = 48128 + j; d[48128 + j] = D[188][j];} +D[189] = "�����������������������������������������������������������������쩨쩩쩪쩫쩬쩭쩮쩯쩰쩱쩲쩳쩴쩵쩶쩷쩸�쩹쩺쩻쩼쩽쩾쩿쪀쪁쪂쪃���쪄쪅쪆쪇쪈쪉쪊쪋쪌쪍쪎쪏쪐쪑쪒쪓쪔�쪕쪖쪗쪘쪙쪚쪛쪜쪝쪞쪟���쪠쪡쪢쪣쪤쪥쪦쪧쪨쪩쪪쪫쪬쪭쪮쪯쪰�쪱쪲쪳쪴쪵쪶쪷쪸쪹쪺쪻���쪼쪽쪾쪿쫀쫁쫂쫃쫄쫅쫆쫇쫈쫉쫊쫋쫌�쫍쫎쫏쫐쫑쫒쫓쫔쫕쫖쫗���쫘쫙쫚쫛쫜쫝쫞쫟쫠쫡쫢쫣쫤쫥쫦쫧쫨�쫩쫪쫫쫬쫭쫮쫯쫰쫱쫲쫳���쫴쫵쫶쫷쫸쫹쫺쫻쫼쫽쫾쫿쬀쬁쬂쬃쬄�쬅쬆쬇쬈쬉쬊쬋쬌쬍쬎쬏��".split(""); +for(j = 0; j != D[189].length; ++j) if(D[189][j].charCodeAt(0) !== 0xFFFD) { e[D[189][j]] = 48384 + j; d[48384 + j] = D[189][j];} +D[190] = "�����������������������������������������������������������������쬐쬑쬒쬓쬔쬕쬖쬗쬘쬙쬚쬛쬜쬝쬞쬟쬠�쬡쬢쬣쬤쬥쬦쬧쬨쬩쬪쬫���쬬쬭쬮쬯쬰쬱쬲쬳쬴쬵쬶쬷쬸쬹쬺쬻쬼�쬽쬾쬿쭀쭁쭂쭃쭄쭅쭆쭇���쭈쭉쭊쭋쭌쭍쭎쭏쭐쭑쭒쭓쭔쭕쭖쭗쭘�쭙쭚쭛쭜쭝쭞쭟쭠쭡쭢쭣���쭤쭥쭦쭧쭨쭩쭪쭫쭬쭭쭮쭯쭰쭱쭲쭳쭴�쭵쭶쭷쭸쭹쭺쭻쭼쭽쭾쭿���쮀쮁쮂쮃쮄쮅쮆쮇쮈쮉쮊쮋쮌쮍쮎쮏쮐�쮑쮒쮓쮔쮕쮖쮗쮘쮙쮚쮛���쮜쮝쮞쮟쮠쮡쮢쮣쮤쮥쮦쮧쮨쮩쮪쮫쮬�쮭쮮쮯쮰쮱쮲쮳쮴쮵쮶쮷��".split(""); +for(j = 0; j != D[190].length; ++j) if(D[190][j].charCodeAt(0) !== 0xFFFD) { e[D[190][j]] = 48640 + j; d[48640 + j] = D[190][j];} +D[191] = "�����������������������������������������������������������������쮸쮹쮺쮻쮼쮽쮾쮿쯀쯁쯂쯃쯄쯅쯆쯇쯈�쯉쯊쯋쯌쯍쯎쯏쯐쯑쯒쯓���쯔쯕쯖쯗쯘쯙쯚쯛쯜쯝쯞쯟쯠쯡쯢쯣쯤�쯥쯦쯧쯨쯩쯪쯫쯬쯭쯮쯯���쯰쯱쯲쯳쯴쯵쯶쯷쯸쯹쯺쯻쯼쯽쯾쯿찀�찁찂찃찄찅찆찇찈찉찊찋���찌찍찎찏찐찑찒찓찔찕찖찗찘찙찚찛찜�찝찞찟찠찡찢찣찤찥찦찧������������������������������������������������������������������".split(""); +for(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];} +D[192] = "�����������������������������������������������������������������ᄎ�������������������������������차착찪찫찬찭찮찯찰찱찲찳찴찵찶찷참�찹찺찻찼창찾찿챀챁챂챃���채책챆챇챈챉챊챋챌챍챎챏챐챑챒챓챔�챕챖챗챘챙챚챛챜챝챞챟���챠챡챢챣챤챥챦챧챨챩챪챫챬챭챮챯챰�챱챲챳챴챵챶챷챸챹챺챻���챼챽챾챿첀첁첂첃첄첅첆첇첈첉첊첋첌�첍첎첏첐첑첒첓첔첕첖첗���처척첚첛천첝첞첟철첡첢첣첤첥첦첧첨�첩첪첫첬청첮첯첰첱첲첳��".split(""); +for(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];} +D[193] = "�����������������������������������������������������������������체첵첶첷첸첹첺첻첼첽첾첿쳀쳁쳂쳃쳄�쳅쳆쳇쳈쳉쳊쳋쳌쳍쳎쳏���쳐쳑쳒쳓쳔쳕쳖쳗쳘쳙쳚쳛쳜쳝쳞쳟쳠�쳡쳢쳣쳤쳥쳦쳧쳨쳩쳪쳫���쳬쳭쳮쳯쳰쳱쳲쳳쳴쳵쳶쳷쳸쳹쳺쳻쳼�쳽쳾쳿촀촁촂촃촄촅촆촇���초촉촊촋촌촍촎촏촐촑촒촓촔촕촖촗촘�촙촚촛촜총촞촟촠촡촢촣���촤촥촦촧촨촩촪촫촬촭촮촯촰촱촲촳촴�촵촶촷촸촹촺촻촼촽촾촿���쵀쵁쵂쵃쵄쵅쵆쵇쵈쵉쵊쵋쵌쵍쵎쵏쵐�쵑쵒쵓쵔쵕쵖쵗쵘쵙쵚쵛��".split(""); +for(j = 0; j != D[193].length; ++j) if(D[193][j].charCodeAt(0) !== 0xFFFD) { e[D[193][j]] = 49408 + j; d[49408 + j] = D[193][j];} +D[194] = "�����������������������������������������������������������������최쵝쵞쵟쵠쵡쵢쵣쵤쵥쵦쵧쵨쵩쵪쵫쵬�쵭쵮쵯쵰쵱쵲쵳쵴쵵쵶쵷���쵸쵹쵺쵻쵼쵽쵾쵿춀춁춂춃춄춅춆춇춈�춉춊춋춌춍춎춏춐춑춒춓���추축춖춗춘춙춚춛출춝춞춟춠춡춢춣춤�춥춦춧춨충춪춫춬춭춮춯���춰춱춲춳춴춵춶춷춸춹춺춻춼춽춾춿췀�췁췂췃췄췅췆췇췈췉췊췋���췌췍췎췏췐췑췒췓췔췕췖췗췘췙췚췛췜�췝췞췟췠췡췢췣췤췥췦췧���취췩췪췫췬췭췮췯췰췱췲췳췴췵췶췷췸�췹췺췻췼췽췾췿츀츁츂츃��".split(""); +for(j = 0; j != D[194].length; ++j) if(D[194][j].charCodeAt(0) !== 0xFFFD) { e[D[194][j]] = 49664 + j; d[49664 + j] = D[194][j];} +D[195] = "�����������������������������������������������������������������츄츅츆츇츈츉츊츋츌츍츎츏츐츑츒츓츔�츕츖츗츘츙츚츛츜츝츞츟���츠측츢츣츤츥츦츧츨츩츪츫츬츭츮츯츰�츱츲츳츴층츶츷츸츹츺츻���츼츽츾츿칀칁칂칃칄칅칆칇칈칉칊칋칌�칍칎칏칐칑칒칓칔칕칖칗���치칙칚칛친칝칞칟칠칡칢칣칤칥칦칧침�칩칪칫칬칭칮칯칰칱칲칳������������������������������������������������������������������".split(""); +for(j = 0; j != D[195].length; ++j) if(D[195][j].charCodeAt(0) !== 0xFFFD) { e[D[195][j]] = 49920 + j; d[49920 + j] = D[195][j];} +D[196] = "�����������������������������������������������������������������ᄏ�������������������������������카칵칶칷칸칹칺칻칼칽칾칿캀캁캂캃캄�캅캆캇캈캉캊캋캌캍캎캏���캐캑캒캓캔캕캖캗캘캙캚캛캜캝캞캟캠�캡캢캣캤캥캦캧캨캩캪캫���캬캭캮캯캰캱캲캳캴캵캶캷캸캹캺캻캼�캽캾캿컀컁컂컃컄컅컆컇���컈컉컊컋컌컍컎컏컐컑컒컓컔컕컖컗컘�컙컚컛컜컝컞컟컠컡컢컣���커컥컦컧컨컩컪컫컬컭컮컯컰컱컲컳컴�컵컶컷컸컹컺컻컼컽컾컿��".split(""); +for(j = 0; j != D[196].length; ++j) if(D[196][j].charCodeAt(0) !== 0xFFFD) { e[D[196][j]] = 50176 + j; d[50176 + j] = D[196][j];} +D[197] = "�����������������������������������������������������������������케켁켂켃켄켅켆켇켈켉켊켋켌켍켎켏켐�켑켒켓켔켕켖켗켘켙켚켛���켜켝켞켟켠켡켢켣켤켥켦켧켨켩켪켫켬�켭켮켯켰켱켲켳켴켵켶켷���켸켹켺켻켼켽켾켿콀콁콂콃콄콅콆콇콈�콉콊콋콌콍콎콏콐콑콒콓���코콕콖콗콘콙콚콛콜콝콞콟콠콡콢콣콤�콥콦콧콨콩콪콫콬콭콮콯���콰콱콲콳콴콵콶콷콸콹콺콻콼콽콾콿쾀�쾁쾂쾃쾄쾅쾆쾇쾈쾉쾊쾋���쾌쾍쾎쾏쾐쾑쾒쾓쾔쾕쾖쾗쾘쾙쾚쾛쾜�쾝쾞쾟쾠쾡쾢쾣쾤쾥쾦쾧��".split(""); +for(j = 0; j != D[197].length; ++j) if(D[197][j].charCodeAt(0) !== 0xFFFD) { e[D[197][j]] = 50432 + j; d[50432 + j] = D[197][j];} +D[198] = "�����������������������������������������������������������������쾨쾩쾪쾫쾬쾭쾮쾯쾰쾱쾲쾳쾴쾵쾶쾷쾸�쾹쾺쾻쾼쾽쾾쾿쿀쿁쿂쿃���쿄쿅쿆쿇쿈쿉쿊쿋쿌쿍쿎쿏쿐쿑쿒쿓쿔�쿕쿖쿗쿘쿙쿚쿛쿜쿝쿞쿟���쿠쿡쿢쿣쿤쿥쿦쿧쿨쿩쿪쿫쿬쿭쿮쿯쿰�쿱쿲쿳쿴쿵쿶쿷쿸쿹쿺쿻���쿼쿽쿾쿿퀀퀁퀂퀃퀄퀅퀆퀇퀈퀉퀊퀋퀌�퀍퀎퀏퀐퀑퀒퀓퀔퀕퀖퀗���퀘퀙퀚퀛퀜퀝퀞퀟퀠퀡퀢퀣퀤퀥퀦퀧퀨�퀩퀪퀫퀬퀭퀮퀯퀰퀱퀲퀳���퀴퀵퀶퀷퀸퀹퀺퀻퀼퀽퀾퀿큀큁큂큃큄�큅큆큇큈큉큊큋큌큍큎큏��".split(""); +for(j = 0; j != D[198].length; ++j) if(D[198][j].charCodeAt(0) !== 0xFFFD) { e[D[198][j]] = 50688 + j; d[50688 + j] = D[198][j];} +D[199] = "�����������������������������������������������������������������큐큑큒큓큔큕큖큗큘큙큚큛큜큝큞큟큠�큡큢큣큤큥큦큧큨큩큪큫���크큭큮큯큰큱큲큳클큵큶큷큸큹큺큻큼�큽큾큿킀킁킂킃킄킅킆킇���킈킉킊킋킌킍킎킏킐킑킒킓킔킕킖킗킘�킙킚킛킜킝킞킟킠킡킢킣���키킥킦킧킨킩킪킫킬킭킮킯킰킱킲킳킴�킵킶킷킸킹킺킻킼킽킾킿������������������������������������������������������������������".split(""); +for(j = 0; j != D[199].length; ++j) if(D[199][j].charCodeAt(0) !== 0xFFFD) { e[D[199][j]] = 50944 + j; d[50944 + j] = D[199][j];} +D[200] = "�����������������������������������������������������������������ᄐ�������������������������������타탁탂탃탄탅탆탇탈탉탊탋탌탍탎탏탐�탑탒탓탔탕탖탗탘탙탚탛���태택탞탟탠탡탢탣탤탥탦탧탨탩탪탫탬�탭탮탯탰탱탲탳탴탵탶탷���탸탹탺탻탼탽탾탿턀턁턂턃턄턅턆턇턈�턉턊턋턌턍턎턏턐턑턒턓���턔턕턖턗턘턙턚턛턜턝턞턟턠턡턢턣턤�턥턦턧턨턩턪턫턬턭턮턯���터턱턲턳턴턵턶턷털턹턺턻턼턽턾턿텀�텁텂텃텄텅텆텇텈텉텊텋��".split(""); +for(j = 0; j != D[200].length; ++j) if(D[200][j].charCodeAt(0) !== 0xFFFD) { e[D[200][j]] = 51200 + j; d[51200 + j] = D[200][j];} +D[201] = "�����������������������������������������������������������������테텍텎텏텐텑텒텓텔텕텖텗텘텙텚텛템�텝텞텟텠텡텢텣텤텥텦텧���텨텩텪텫텬텭텮텯텰텱텲텳텴텵텶텷텸�텹텺텻텼텽텾텿톀톁톂톃���톄톅톆톇톈톉톊톋톌톍톎톏톐톑톒톓톔�톕톖톗톘톙톚톛톜톝톞톟���토톡톢톣톤톥톦톧톨톩톪톫톬톭톮톯톰�톱톲톳톴통톶톷톸톹톺톻���톼톽톾톿퇀퇁퇂퇃퇄퇅퇆퇇퇈퇉퇊퇋퇌�퇍퇎퇏퇐퇑퇒퇓퇔퇕퇖퇗���퇘퇙퇚퇛퇜퇝퇞퇟퇠퇡퇢퇣퇤퇥퇦퇧퇨�퇩퇪퇫퇬퇭퇮퇯퇰퇱퇲퇳��".split(""); +for(j = 0; j != D[201].length; ++j) if(D[201][j].charCodeAt(0) !== 0xFFFD) { e[D[201][j]] = 51456 + j; d[51456 + j] = D[201][j];} +D[202] = "�����������������������������������������������������������������퇴퇵퇶퇷퇸퇹퇺퇻퇼퇽퇾퇿툀툁툂툃툄�툅툆툇툈툉툊툋툌툍툎툏���툐툑툒툓툔툕툖툗툘툙툚툛툜툝툞툟툠�툡툢툣툤툥툦툧툨툩툪툫���투툭툮툯툰툱툲툳툴툵툶툷툸툹툺툻툼�툽툾툿퉀퉁퉂퉃퉄퉅퉆퉇���퉈퉉퉊퉋퉌퉍퉎퉏퉐퉑퉒퉓퉔퉕퉖퉗퉘�퉙퉚퉛퉜퉝퉞퉟퉠퉡퉢퉣���퉤퉥퉦퉧퉨퉩퉪퉫퉬퉭퉮퉯퉰퉱퉲퉳퉴�퉵퉶퉷퉸퉹퉺퉻퉼퉽퉾퉿���튀튁튂튃튄튅튆튇튈튉튊튋튌튍튎튏튐�튑튒튓튔튕튖튗튘튙튚튛��".split(""); +for(j = 0; j != D[202].length; ++j) if(D[202][j].charCodeAt(0) !== 0xFFFD) { e[D[202][j]] = 51712 + j; d[51712 + j] = D[202][j];} +D[203] = "�����������������������������������������������������������������튜튝튞튟튠튡튢튣튤튥튦튧튨튩튪튫튬�튭튮튯튰튱튲튳튴튵튶튷���트특튺튻튼튽튾튿틀틁틂틃틄틅틆틇틈�틉틊틋틌틍틎틏틐틑틒틓���틔틕틖틗틘틙틚틛틜틝틞틟틠틡틢틣틤�틥틦틧틨틩틪틫틬틭틮틯���티틱틲틳틴틵틶틷틸틹틺틻틼틽틾틿팀�팁팂팃팄팅팆팇팈팉팊팋������������������������������������������������������������������".split(""); +for(j = 0; j != D[203].length; ++j) if(D[203][j].charCodeAt(0) !== 0xFFFD) { e[D[203][j]] = 51968 + j; d[51968 + j] = D[203][j];} +D[204] = "�����������������������������������������������������������������ᄑ�������������������������������파팍팎팏판팑팒팓팔팕팖팗팘팙팚팛팜�팝팞팟팠팡팢팣팤팥팦팧���패팩팪팫팬팭팮팯팰팱팲팳팴팵팶팷팸�팹팺팻팼팽팾팿퍀퍁퍂퍃���퍄퍅퍆퍇퍈퍉퍊퍋퍌퍍퍎퍏퍐퍑퍒퍓퍔�퍕퍖퍗퍘퍙퍚퍛퍜퍝퍞퍟���퍠퍡퍢퍣퍤퍥퍦퍧퍨퍩퍪퍫퍬퍭퍮퍯퍰�퍱퍲퍳퍴퍵퍶퍷퍸퍹퍺퍻���퍼퍽퍾퍿펀펁펂펃펄펅펆펇펈펉펊펋펌�펍펎펏펐펑펒펓펔펕펖펗��".split(""); +for(j = 0; j != D[204].length; ++j) if(D[204][j].charCodeAt(0) !== 0xFFFD) { e[D[204][j]] = 52224 + j; d[52224 + j] = D[204][j];} +D[205] = "�����������������������������������������������������������������페펙펚펛펜펝펞펟펠펡펢펣펤펥펦펧펨�펩펪펫펬펭펮펯펰펱펲펳���펴펵펶펷편펹펺펻펼펽펾펿폀폁폂폃폄�폅폆폇폈평폊폋폌폍폎폏���폐폑폒폓폔폕폖폗폘폙폚폛폜폝폞폟폠�폡폢폣폤폥폦폧폨폩폪폫���포폭폮폯폰폱폲폳폴폵폶폷폸폹폺폻폼�폽폾폿퐀퐁퐂퐃퐄퐅퐆퐇���퐈퐉퐊퐋퐌퐍퐎퐏퐐퐑퐒퐓퐔퐕퐖퐗퐘�퐙퐚퐛퐜퐝퐞퐟퐠퐡퐢퐣���퐤퐥퐦퐧퐨퐩퐪퐫퐬퐭퐮퐯퐰퐱퐲퐳퐴�퐵퐶퐷퐸퐹퐺퐻퐼퐽퐾퐿��".split(""); +for(j = 0; j != D[205].length; ++j) if(D[205][j].charCodeAt(0) !== 0xFFFD) { e[D[205][j]] = 52480 + j; d[52480 + j] = D[205][j];} +D[206] = "�����������������������������������������������������������������푀푁푂푃푄푅푆푇푈푉푊푋푌푍푎푏푐�푑푒푓푔푕푖푗푘푙푚푛���표푝푞푟푠푡푢푣푤푥푦푧푨푩푪푫푬�푭푮푯푰푱푲푳푴푵푶푷���푸푹푺푻푼푽푾푿풀풁풂풃풄풅풆풇품�풉풊풋풌풍풎풏풐풑풒풓���풔풕풖풗풘풙풚풛풜풝풞풟풠풡풢풣풤�풥풦풧풨풩풪풫풬풭풮풯���풰풱풲풳풴풵풶풷풸풹풺풻풼풽풾풿퓀�퓁퓂퓃퓄퓅퓆퓇퓈퓉퓊퓋���퓌퓍퓎퓏퓐퓑퓒퓓퓔퓕퓖퓗퓘퓙퓚퓛퓜�퓝퓞퓟퓠퓡퓢퓣퓤퓥퓦퓧��".split(""); +for(j = 0; j != D[206].length; ++j) if(D[206][j].charCodeAt(0) !== 0xFFFD) { e[D[206][j]] = 52736 + j; d[52736 + j] = D[206][j];} +D[207] = "�����������������������������������������������������������������퓨퓩퓪퓫퓬퓭퓮퓯퓰퓱퓲퓳퓴퓵퓶퓷퓸�퓹퓺퓻퓼퓽퓾퓿픀픁픂픃���프픅픆픇픈픉픊픋플픍픎픏픐픑픒픓픔�픕픖픗픘픙픚픛픜픝픞픟���픠픡픢픣픤픥픦픧픨픩픪픫픬픭픮픯픰�픱픲픳픴픵픶픷픸픹픺픻���피픽픾픿핀핁핂핃필핅핆핇핈핉핊핋핌�핍핎핏핐핑핒핓핔핕핖핗������������������������������������������������������������������".split(""); +for(j = 0; j != D[207].length; ++j) if(D[207][j].charCodeAt(0) !== 0xFFFD) { e[D[207][j]] = 52992 + j; d[52992 + j] = D[207][j];} +D[208] = "�����������������������������������������������������������������ᄒ�������������������������������하학핚핛한핝핞핟할핡핢핣핤핥핦핧함�합핪핫핬항핮핯핰핱핲핳���해핵핶핷핸핹핺핻핼핽핾핿햀햁햂햃햄�햅햆햇했행햊햋햌햍햎햏���햐햑햒햓햔햕햖햗햘햙햚햛햜햝햞햟햠�햡햢햣햤향햦햧햨햩햪햫���햬햭햮햯햰햱햲햳햴햵햶햷햸햹햺햻햼�햽햾햿헀헁헂헃헄헅헆헇���허헉헊헋헌헍헎헏헐헑헒헓헔헕헖헗험�헙헚헛헜헝헞헟헠헡헢헣��".split(""); +for(j = 0; j != D[208].length; ++j) if(D[208][j].charCodeAt(0) !== 0xFFFD) { e[D[208][j]] = 53248 + j; d[53248 + j] = D[208][j];} +D[209] = "�����������������������������������������������������������������헤헥헦헧헨헩헪헫헬헭헮헯헰헱헲헳헴�헵헶헷헸헹헺헻헼헽헾헿���혀혁혂혃현혅혆혇혈혉혊혋혌혍혎혏혐�협혒혓혔형혖혗혘혙혚혛���혜혝혞혟혠혡혢혣혤혥혦혧혨혩혪혫혬�혭혮혯혰혱혲혳혴혵혶혷���호혹혺혻혼혽혾혿홀홁홂홃홄홅홆홇홈�홉홊홋홌홍홎홏홐홑홒홓���화확홖홗환홙홚홛활홝홞홟홠홡홢홣홤�홥홦홧홨황홪홫홬홭홮홯���홰홱홲홳홴홵홶홷홸홹홺홻홼홽홾홿횀�횁횂횃횄횅횆횇횈횉횊횋��".split(""); +for(j = 0; j != D[209].length; ++j) if(D[209][j].charCodeAt(0) !== 0xFFFD) { e[D[209][j]] = 53504 + j; d[53504 + j] = D[209][j];} +D[210] = "�����������������������������������������������������������������회획횎횏횐횑횒횓횔횕횖횗횘횙횚횛횜�횝횞횟횠횡횢횣횤횥횦횧���효횩횪횫횬횭횮횯횰횱횲횳횴횵횶횷횸�횹횺횻횼횽횾횿훀훁훂훃���후훅훆훇훈훉훊훋훌훍훎훏훐훑훒훓훔�훕훖훗훘훙훚훛훜훝훞훟���훠훡훢훣훤훥훦훧훨훩훪훫훬훭훮훯훰�훱훲훳훴훵훶훷훸훹훺훻���훼훽훾훿휀휁휂휃휄휅휆휇휈휉휊휋휌�휍휎휏휐휑휒휓휔휕휖휗���휘휙휚휛휜휝휞휟휠휡휢휣휤휥휦휧휨�휩휪휫휬휭휮휯휰휱휲휳��".split(""); +for(j = 0; j != D[210].length; ++j) if(D[210][j].charCodeAt(0) !== 0xFFFD) { e[D[210][j]] = 53760 + j; d[53760 + j] = D[210][j];} +D[211] = "�����������������������������������������������������������������휴휵휶휷휸휹휺휻휼휽휾휿흀흁흂흃흄�흅흆흇흈흉흊흋흌흍흎흏���흐흑흒흓흔흕흖흗흘흙흚흛흜흝흞흟흠�흡흢흣흤흥흦흧흨흩흪흫���희흭흮흯흰흱흲흳흴흵흶흷흸흹흺흻흼�흽흾흿힀힁힂힃힄힅힆힇���히힉힊힋힌힍힎힏힐힑힒힓힔힕힖힗힘�힙힚힛힜힝힞힟힠힡힢힣������������������������������������������������������������������".split(""); +for(j = 0; j != D[211].length; ++j) if(D[211][j].charCodeAt(0) !== 0xFFFD) { e[D[211][j]] = 54016 + j; d[54016 + j] = D[211][j];} +D[216] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[216].length; ++j) if(D[216][j].charCodeAt(0) !== 0xFFFD) { e[D[216][j]] = 55296 + j; d[55296 + j] = D[216][j];} +D[217] = "������������������������������������������������� 、。·‥…¨〃­―∥\∼‘’“”〔〕〈〉《》「」『』【】±×÷≠≤≥∞∴°′″℃Å¢£¥♂♀∠⊥⌒∂∇≡≒§※☆★○●◎◇◆□■△▲▽▼→←↑↓↔〓≪≫√������������������∽∝∵∫∬∈∋⊆⊇⊂⊃∪∩∧∨¬⇒⇔∀∃´~ˇ˘˝˚˙¸˛¡¿ː∮∑∏¤℉‰◁◀▷▶♤♠♡♥♧♣⊙◈▣◐◑▒▤▥▨▧▦▩♨☏☎☜☞¶†‡↕↗↙↖↘♭♩♪♬㉿㈜№㏇™㏂㏘℡€®������������������������".split(""); +for(j = 0; j != D[217].length; ++j) if(D[217][j].charCodeAt(0) !== 0xFFFD) { e[D[217][j]] = 55552 + j; d[55552 + j] = D[217][j];} +D[218] = "�������������������������������������������������!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[₩]^_`abcdefghijklmn������������������opqrstuvwxyz{|} ̄���������������������������������������������������ᅟᄔᄕᇇᇈᇌᇎᇓᇗᇙᄜᇝᇟᄝᄞᄠᄢᄣᄧᄨᄫᄬᄭᄮᄯᄲᄶᅀᅇᅌᅅᅆᅗᅘᅙᆄᆅᆈᆑᆒᆔᆞᆡ�".split(""); +for(j = 0; j != D[218].length; ++j) if(D[218][j].charCodeAt(0) !== 0xFFFD) { e[D[218][j]] = 55808 + j; d[55808 + j] = D[218][j];} +D[219] = "�������������������������������������������������ⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹ�����ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩ�������ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ��������αβγδεζηθικλμνξ������������������οπρστυφχψω������─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂┒┑┚┙┖┕┎┍┞┟┡┢┦┧┩┪┭┮┱┲┵┶┹┺┽┾╀╁╃╄╅╆╇╈╉╊���������������������������".split(""); +for(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];} +D[220] = "�������������������������������������������������㎕㎖㎗ℓ㎘㏄㎣㎤㎥㎦㎙㎚㎛㎜㎝㎞㎟㎠㎡㎢㏊㎍㎎㎏㏏㎈㎉㏈㎧㎨㎰㎱㎲㎳㎴㎵㎶㎷㎸㎹㎀㎁㎂㎃㎄㎺㎻㎼㎽㎾㎿㎐㎑㎒㎓㎔Ω㏀㏁㎊㎋㎌㏖㏅㎭㎮㎯㏛㎩㎪㎫㎬㏝㏐㏓㏃㏉㏜������������������㏆���������������ÆЪĦ�IJ�ĿŁØŒºÞŦŊ�㉠㉡㉢㉣㉤㉥㉦㉧㉨㉩㉪㉫㉬㉭㉮㉯㉰㉱㉲㉳㉴㉵㉶㉷㉸㉹㉺㉻ⓐⓑⓒⓓⓔⓕⓖⓗⓘⓙⓚⓛⓜⓝⓞⓟⓠⓡⓢⓣⓤⓥⓦⓧⓨⓩ①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮½⅓⅔¼¾⅛⅜⅝⅞�".split(""); +for(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];} +D[221] = "�������������������������������������������������æđðħıijĸŀłøœßþŧŋʼn㈀㈁㈂㈃㈄㈅㈆㈇㈈㈉㈊㈋㈌㈍㈎㈏㈐㈑㈒㈓㈔㈕㈖㈗㈘㈙㈚㈛⒜⒝⒞⒟⒠⒡⒢⒣⒤⒥⒦⒧⒨⒩⒪⒫⒬⒭⒮⒯⒰⒱⒲⒳⒴⒵⑴⑵⑶⑷⑸⑹⑺⑻������������������⑼⑽⑾⑿⒀⒁⒂¹²³⁴ⁿ₁₂₃₄ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをん������������".split(""); +for(j = 0; j != D[221].length; ++j) if(D[221][j].charCodeAt(0) !== 0xFFFD) { e[D[221][j]] = 56576 + j; d[56576 + j] = D[221][j];} +D[222] = "�������������������������������������������������ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮ������������������ワヰヱヲンヴヵヶ��������АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ���������������абвгдеёжзийклмнопрстуфхцчшщъыьэюя��������������".split(""); +for(j = 0; j != D[222].length; ++j) if(D[222][j].charCodeAt(0) !== 0xFFFD) { e[D[222][j]] = 56832 + j; d[56832 + j] = D[222][j];} +D[224] = "�������������������������������������������������伽佳假價加可呵哥嘉嫁家暇架枷柯歌珂痂稼苛茄街袈訶賈跏軻迦駕刻却各恪慤殼珏脚覺角閣侃刊墾奸姦干幹懇揀杆柬桿澗癎看磵稈竿簡肝艮艱諫間乫喝曷渴碣竭葛褐蝎鞨勘坎堪嵌������������������感憾戡敢柑橄減甘疳監瞰紺邯鑑鑒龕匣岬甲胛鉀閘剛堈姜岡崗康强彊慷江畺疆糠絳綱羌腔舡薑襁講鋼降鱇介价個凱塏愷愾慨改槪漑疥皆盖箇芥蓋豈鎧開喀客坑更粳羹醵倨去居巨拒据據擧渠炬祛距踞車遽鉅鋸乾件健巾建愆楗腱虔蹇鍵騫乞傑杰桀儉劍劒檢�".split(""); +for(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];} +D[225] = "�������������������������������������������������瞼鈐黔劫怯迲偈憩揭擊格檄激膈覡隔堅牽犬甄絹繭肩見譴遣鵑抉決潔結缺訣兼慊箝謙鉗鎌京俓倞傾儆勁勍卿坰境庚徑慶憬擎敬景暻更梗涇炅烱璟璥瓊痙硬磬竟競絅經耕耿脛莖警輕������������������逕鏡頃頸驚鯨係啓堺契季屆悸戒桂械棨溪界癸磎稽系繫繼計誡谿階鷄古叩告呱固姑孤尻庫拷攷故敲暠枯槁沽痼皐睾稿羔考股膏苦苽菰藁蠱袴誥賈辜錮雇顧高鼓哭斛曲梏穀谷鵠困坤崑昆梱棍滾琨袞鯤汨滑骨供公共功孔工恐恭拱控攻珙空蚣貢鞏串寡戈果瓜�".split(""); +for(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];} +D[226] = "�������������������������������������������������科菓誇課跨過鍋顆廓槨藿郭串冠官寬慣棺款灌琯瓘管罐菅觀貫關館刮恝括适侊光匡壙廣曠洸炚狂珖筐胱鑛卦掛罫乖傀塊壞怪愧拐槐魁宏紘肱轟交僑咬喬嬌嶠巧攪敎校橋狡皎矯絞翹������������������膠蕎蛟較轎郊餃驕鮫丘久九仇俱具勾區口句咎嘔坵垢寇嶇廐懼拘救枸柩構歐毆毬求溝灸狗玖球瞿矩究絿耉臼舅舊苟衢謳購軀逑邱鉤銶駒驅鳩鷗龜國局菊鞠鞫麴君窘群裙軍郡堀屈掘窟宮弓穹窮芎躬倦券勸卷圈拳捲權淃眷厥獗蕨蹶闕机櫃潰詭軌饋句晷歸貴�".split(""); +for(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];} +D[227] = "�������������������������������������������������鬼龜叫圭奎揆槻珪硅窺竅糾葵規赳逵閨勻均畇筠菌鈞龜橘克剋劇戟棘極隙僅劤勤懃斤根槿瑾筋芹菫覲謹近饉契今妗擒昑檎琴禁禽芩衾衿襟金錦伋及急扱汲級給亘兢矜肯企伎其冀嗜������������������器圻基埼夔奇妓寄岐崎己幾忌技旗旣朞期杞棋棄機欺氣汽沂淇玘琦琪璂璣畸畿碁磯祁祇祈祺箕紀綺羈耆耭肌記譏豈起錡錤飢饑騎騏驥麒緊佶吉拮桔金喫儺喇奈娜懦懶拏拿癩羅蘿螺裸邏那樂洛烙珞落諾酪駱亂卵暖欄煖爛蘭難鸞捏捺南嵐枏楠湳濫男藍襤拉�".split(""); +for(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];} +D[228] = "�������������������������������������������������納臘蠟衲囊娘廊朗浪狼郎乃來內奈柰耐冷女年撚秊念恬拈捻寧寗努勞奴弩怒擄櫓爐瑙盧老蘆虜路露駑魯鷺碌祿綠菉錄鹿論壟弄濃籠聾膿農惱牢磊腦賂雷尿壘屢樓淚漏累縷陋嫩訥杻������������������紐勒肋凜凌稜綾能菱陵尼泥匿溺多茶丹亶但單團壇彖斷旦檀段湍短端簞緞蛋袒鄲鍛撻澾獺疸達啖坍憺擔曇淡湛潭澹痰聃膽蕁覃談譚錟沓畓答踏遝唐堂塘幢戇撞棠當糖螳黨代垈坮大對岱帶待戴擡玳臺袋貸隊黛宅德悳倒刀到圖堵塗導屠島嶋度徒悼挑掉搗桃�".split(""); +for(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];} +D[229] = "�������������������������������������������������棹櫂淘渡滔濤燾盜睹禱稻萄覩賭跳蹈逃途道都鍍陶韜毒瀆牘犢獨督禿篤纛讀墩惇敦旽暾沌焞燉豚頓乭突仝冬凍動同憧東桐棟洞潼疼瞳童胴董銅兜斗杜枓痘竇荳讀豆逗頭屯臀芚遁遯������������������鈍得嶝橙燈登等藤謄鄧騰喇懶拏癩羅蘿螺裸邏樂洛烙珞絡落諾酪駱丹亂卵欄欒瀾爛蘭鸞剌辣嵐擥攬欖濫籃纜藍襤覽拉臘蠟廊朗浪狼琅瑯螂郞來崍徠萊冷掠略亮倆兩凉梁樑粮粱糧良諒輛量侶儷勵呂廬慮戾旅櫚濾礪藜蠣閭驢驪麗黎力曆歷瀝礫轢靂憐戀攣漣�".split(""); +for(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];} +D[230] = "�������������������������������������������������煉璉練聯蓮輦連鍊冽列劣洌烈裂廉斂殮濂簾獵令伶囹寧岺嶺怜玲笭羚翎聆逞鈴零靈領齡例澧禮醴隷勞怒撈擄櫓潞瀘爐盧老蘆虜路輅露魯鷺鹵碌祿綠菉錄鹿麓論壟弄朧瀧瓏籠聾儡瀨������������������牢磊賂賚賴雷了僚寮廖料燎療瞭聊蓼遼鬧龍壘婁屢樓淚漏瘻累縷蔞褸鏤陋劉旒柳榴流溜瀏琉瑠留瘤硫謬類六戮陸侖倫崙淪綸輪律慄栗率隆勒肋凜凌楞稜綾菱陵俚利厘吏唎履悧李梨浬犁狸理璃異痢籬罹羸莉裏裡里釐離鯉吝潾燐璘藺躪隣鱗麟林淋琳臨霖砬�".split(""); +for(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];} +D[231] = "�������������������������������������������������立笠粒摩瑪痲碼磨馬魔麻寞幕漠膜莫邈万卍娩巒彎慢挽晩曼滿漫灣瞞萬蔓蠻輓饅鰻唜抹末沫茉襪靺亡妄忘忙望網罔芒茫莽輞邙埋妹媒寐昧枚梅每煤罵買賣邁魅脈貊陌驀麥孟氓猛盲������������������盟萌冪覓免冕勉棉沔眄眠綿緬面麵滅蔑冥名命明暝椧溟皿瞑茗蓂螟酩銘鳴袂侮冒募姆帽慕摸摹暮某模母毛牟牡瑁眸矛耗芼茅謀謨貌木沐牧目睦穆鶩歿沒夢朦蒙卯墓妙廟描昴杳渺猫竗苗錨務巫憮懋戊拇撫无楙武毋無珷畝繆舞茂蕪誣貿霧鵡墨默們刎吻問文�".split(""); +for(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];} +D[232] = "�������������������������������������������������汶紊紋聞蚊門雯勿沕物味媚尾嵋彌微未梶楣渼湄眉米美薇謎迷靡黴岷悶愍憫敏旻旼民泯玟珉緡閔密蜜謐剝博拍搏撲朴樸泊珀璞箔粕縛膊舶薄迫雹駁伴半反叛拌搬攀斑槃泮潘班畔瘢������������������盤盼磐磻礬絆般蟠返頒飯勃拔撥渤潑發跋醱鉢髮魃倣傍坊妨尨幇彷房放方旁昉枋榜滂磅紡肪膀舫芳蒡蚌訪謗邦防龐倍俳北培徘拜排杯湃焙盃背胚裴裵褙賠輩配陪伯佰帛柏栢白百魄幡樊煩燔番磻繁蕃藩飜伐筏罰閥凡帆梵氾汎泛犯範范法琺僻劈壁擘檗璧癖�".split(""); +for(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];} +D[233] = "�������������������������������������������������碧蘗闢霹便卞弁變辨辯邊別瞥鱉鼈丙倂兵屛幷昞昺柄棅炳甁病秉竝輧餠騈保堡報寶普步洑湺潽珤甫菩補褓譜輔伏僕匐卜宓復服福腹茯蔔複覆輹輻馥鰒本乶俸奉封峯峰捧棒烽熢琫縫������������������蓬蜂逢鋒鳳不付俯傅剖副否咐埠夫婦孚孵富府復扶敷斧浮溥父符簿缶腐腑膚艀芙莩訃負賦賻赴趺部釜阜附駙鳧北分吩噴墳奔奮忿憤扮昐汾焚盆粉糞紛芬賁雰不佛弗彿拂崩朋棚硼繃鵬丕備匕匪卑妃婢庇悲憊扉批斐枇榧比毖毗毘沸泌琵痺砒碑秕秘粃緋翡肥�".split(""); +for(j = 0; j != D[233].length; ++j) if(D[233][j].charCodeAt(0) !== 0xFFFD) { e[D[233][j]] = 59648 + j; d[59648 + j] = D[233][j];} +D[234] = "�������������������������������������������������脾臂菲蜚裨誹譬費鄙非飛鼻嚬嬪彬斌檳殯浜濱瀕牝玭貧賓頻憑氷聘騁乍事些仕伺似使俟僿史司唆嗣四士奢娑寫寺射巳師徙思捨斜斯柶査梭死沙泗渣瀉獅砂社祀祠私篩紗絲肆舍莎蓑������������������蛇裟詐詞謝賜赦辭邪飼駟麝削數朔索傘刪山散汕珊産疝算蒜酸霰乷撒殺煞薩三參杉森渗芟蔘衫揷澁鈒颯上傷像償商喪嘗孀尙峠常床庠廂想桑橡湘爽牀狀相祥箱翔裳觴詳象賞霜塞璽賽嗇塞穡索色牲生甥省笙墅壻嶼序庶徐恕抒捿敍暑曙書栖棲犀瑞筮絮緖署�".split(""); +for(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];} +D[235] = "�������������������������������������������������胥舒薯西誓逝鋤黍鼠夕奭席惜昔晳析汐淅潟石碩蓆釋錫仙僊先善嬋宣扇敾旋渲煽琁瑄璇璿癬禪線繕羨腺膳船蘚蟬詵跣選銑鐥饍鮮卨屑楔泄洩渫舌薛褻設說雪齧剡暹殲纖蟾贍閃陝攝������������������涉燮葉城姓宬性惺成星晟猩珹盛省筬聖聲腥誠醒世勢歲洗稅笹細說貰召嘯塑宵小少巢所掃搔昭梳沼消溯瀟炤燒甦疏疎瘙笑篠簫素紹蔬蕭蘇訴逍遡邵銷韶騷俗屬束涑粟續謖贖速孫巽損蓀遜飡率宋悚松淞訟誦送頌刷殺灑碎鎖衰釗修受嗽囚垂壽嫂守岫峀帥愁�".split(""); +for(j = 0; j != D[235].length; ++j) if(D[235][j].charCodeAt(0) !== 0xFFFD) { e[D[235][j]] = 60160 + j; d[60160 + j] = D[235][j];} +D[236] = "�������������������������������������������������戍手授搜收數樹殊水洙漱燧狩獸琇璲瘦睡秀穗竪粹綏綬繡羞脩茱蒐蓚藪袖誰讐輸遂邃酬銖銹隋隧隨雖需須首髓鬚叔塾夙孰宿淑潚熟琡璹肅菽巡徇循恂旬栒楯橓殉洵淳珣盾瞬筍純脣������������������舜荀蓴蕣詢諄醇錞順馴戌術述鉥崇崧嵩瑟膝蝨濕拾習褶襲丞乘僧勝升承昇繩蠅陞侍匙嘶始媤尸屎屍市弑恃施是時枾柴猜矢示翅蒔蓍視試詩諡豕豺埴寔式息拭植殖湜熄篒蝕識軾食飾伸侁信呻娠宸愼新晨燼申神紳腎臣莘薪藎蜃訊身辛辰迅失室實悉審尋心沁�".split(""); +for(j = 0; j != D[236].length; ++j) if(D[236][j].charCodeAt(0) !== 0xFFFD) { e[D[236][j]] = 60416 + j; d[60416 + j] = D[236][j];} +D[237] = "�������������������������������������������������沈深瀋甚芯諶什十拾雙氏亞俄兒啞娥峨我牙芽莪蛾衙訝阿雅餓鴉鵝堊岳嶽幄惡愕握樂渥鄂鍔顎鰐齷安岸按晏案眼雁鞍顔鮟斡謁軋閼唵岩巖庵暗癌菴闇壓押狎鴨仰央怏昻殃秧鴦厓哀������������������埃崖愛曖涯碍艾隘靄厄扼掖液縊腋額櫻罌鶯鸚也倻冶夜惹揶椰爺耶若野弱掠略約若葯蒻藥躍亮佯兩凉壤孃恙揚攘敭暘梁楊樣洋瀁煬痒瘍禳穰糧羊良襄諒讓釀陽量養圄御於漁瘀禦語馭魚齬億憶抑檍臆偃堰彦焉言諺孼蘖俺儼嚴奄掩淹嶪業円予余勵呂女如廬�".split(""); +for(j = 0; j != D[237].length; ++j) if(D[237][j].charCodeAt(0) !== 0xFFFD) { e[D[237][j]] = 60672 + j; d[60672 + j] = D[237][j];} +D[238] = "�������������������������������������������������旅歟汝濾璵礖礪與艅茹輿轝閭餘驪麗黎亦力域役易曆歷疫繹譯轢逆驛嚥堧姸娟宴年延憐戀捐挻撚椽沇沿涎涓淵演漣烟然煙煉燃燕璉硏硯秊筵緣練縯聯衍軟輦蓮連鉛鍊鳶列劣咽悅涅������������������烈熱裂說閱厭廉念捻染殮炎焰琰艶苒簾閻髥鹽曄獵燁葉令囹塋寧嶺嶸影怜映暎楹榮永泳渶潁濚瀛瀯煐營獰玲瑛瑩瓔盈穎纓羚聆英詠迎鈴鍈零霙靈領乂倪例刈叡曳汭濊猊睿穢芮藝蘂禮裔詣譽豫醴銳隸霓預五伍俉傲午吾吳嗚塢墺奧娛寤悟惡懊敖旿晤梧汚澳�".split(""); +for(j = 0; j != D[238].length; ++j) if(D[238][j].charCodeAt(0) !== 0xFFFD) { e[D[238][j]] = 60928 + j; d[60928 + j] = D[238][j];} +D[239] = "�������������������������������������������������烏熬獒筽蜈誤鰲鼇屋沃獄玉鈺溫瑥瘟穩縕蘊兀壅擁瓮甕癰翁邕雍饔渦瓦窩窪臥蛙蝸訛婉完宛梡椀浣玩琓琬碗緩翫脘腕莞豌阮頑曰往旺枉汪王倭娃歪矮外嵬巍猥畏了僚僥凹堯夭妖姚������������������寥寮尿嶢拗搖撓擾料曜樂橈燎燿瑤療窈窯繇繞耀腰蓼蟯要謠遙遼邀饒慾欲浴縟褥辱俑傭冗勇埇墉容庸慂榕涌湧溶熔瑢用甬聳茸蓉踊鎔鏞龍于佑偶優又友右宇寓尤愚憂旴牛玗瑀盂祐禑禹紆羽芋藕虞迂遇郵釪隅雨雩勖彧旭昱栯煜稶郁頊云暈橒殞澐熉耘芸蕓�".split(""); +for(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];} +D[240] = "�������������������������������������������������運隕雲韻蔚鬱亐熊雄元原員圓園垣媛嫄寃怨愿援沅洹湲源爰猿瑗苑袁轅遠阮院願鴛月越鉞位偉僞危圍委威尉慰暐渭爲瑋緯胃萎葦蔿蝟衛褘謂違韋魏乳侑儒兪劉唯喩孺宥幼幽庾悠惟������������������愈愉揄攸有杻柔柚柳楡楢油洧流游溜濡猶猷琉瑜由留癒硫紐維臾萸裕誘諛諭踰蹂遊逾遺酉釉鍮類六堉戮毓肉育陸倫允奫尹崙淪潤玧胤贇輪鈗閏律慄栗率聿戎瀜絨融隆垠恩慇殷誾銀隱乙吟淫蔭陰音飮揖泣邑凝應膺鷹依倚儀宜意懿擬椅毅疑矣義艤薏蟻衣誼�".split(""); +for(j = 0; j != D[240].length; ++j) if(D[240][j].charCodeAt(0) !== 0xFFFD) { e[D[240][j]] = 61440 + j; d[61440 + j] = D[240][j];} +D[241] = "�������������������������������������������������議醫二以伊利吏夷姨履已弛彛怡易李梨泥爾珥理異痍痢移罹而耳肄苡荑裏裡貽貳邇里離飴餌匿溺瀷益翊翌翼謚人仁刃印吝咽因姻寅引忍湮燐璘絪茵藺蚓認隣靭靷鱗麟一佚佾壹日溢������������������逸鎰馹任壬妊姙恁林淋稔臨荏賃入卄立笠粒仍剩孕芿仔刺咨姉姿子字孜恣慈滋炙煮玆瓷疵磁紫者自茨蔗藉諮資雌作勺嚼斫昨灼炸爵綽芍酌雀鵲孱棧殘潺盞岑暫潛箴簪蠶雜丈仗匠場墻壯奬將帳庄張掌暲杖樟檣欌漿牆狀獐璋章粧腸臟臧莊葬蔣薔藏裝贓醬長�".split(""); +for(j = 0; j != D[241].length; ++j) if(D[241][j].charCodeAt(0) !== 0xFFFD) { e[D[241][j]] = 61696 + j; d[61696 + j] = D[241][j];} +D[242] = "�������������������������������������������������障再哉在宰才材栽梓渽滓災縡裁財載齋齎爭箏諍錚佇低儲咀姐底抵杵楮樗沮渚狙猪疽箸紵苧菹著藷詛貯躇這邸雎齟勣吊嫡寂摘敵滴狄炙的積笛籍績翟荻謫賊赤跡蹟迪迹適鏑佃佺傳������������������全典前剪塡塼奠專展廛悛戰栓殿氈澱煎琠田甸畑癲筌箋箭篆纏詮輾轉鈿銓錢鐫電顚顫餞切截折浙癤竊節絶占岾店漸点粘霑鮎點接摺蝶丁井亭停偵呈姃定幀庭廷征情挺政整旌晶晸柾楨檉正汀淀淨渟湞瀞炡玎珽町睛碇禎程穽精綎艇訂諪貞鄭酊釘鉦鋌錠霆靖�".split(""); +for(j = 0; j != D[242].length; ++j) if(D[242][j].charCodeAt(0) !== 0xFFFD) { e[D[242][j]] = 61952 + j; d[61952 + j] = D[242][j];} +D[243] = "�������������������������������������������������靜頂鼎制劑啼堤帝弟悌提梯濟祭第臍薺製諸蹄醍除際霽題齊俎兆凋助嘲弔彫措操早晁曺曹朝條棗槽漕潮照燥爪璪眺祖祚租稠窕粗糟組繰肇藻蚤詔調趙躁造遭釣阻雕鳥族簇足鏃存尊������������������卒拙猝倧宗從悰慫棕淙琮種終綜縱腫踪踵鍾鐘佐坐左座挫罪主住侏做姝胄呪周嗾奏宙州廚晝朱柱株注洲湊澍炷珠疇籌紂紬綢舟蛛註誅走躊輳週酎酒鑄駐竹粥俊儁准埈寯峻晙樽浚準濬焌畯竣蠢逡遵雋駿茁中仲衆重卽櫛楫汁葺增憎曾拯烝甑症繒蒸證贈之只�".split(""); +for(j = 0; j != D[243].length; ++j) if(D[243][j].charCodeAt(0) !== 0xFFFD) { e[D[243][j]] = 62208 + j; d[62208 + j] = D[243][j];} +D[244] = "�������������������������������������������������咫地址志持指摯支旨智枝枳止池沚漬知砥祉祗紙肢脂至芝芷蜘誌識贄趾遲直稙稷織職唇嗔塵振搢晉晋桭榛殄津溱珍瑨璡畛疹盡眞瞋秦縉縝臻蔯袗診賑軫辰進鎭陣陳震侄叱姪嫉帙桎������������������瓆疾秩窒膣蛭質跌迭斟朕什執潗緝輯鏶集徵懲澄且侘借叉嗟嵯差次此磋箚茶蹉車遮捉搾着窄錯鑿齪撰澯燦璨瓚竄簒纂粲纘讚贊鑽餐饌刹察擦札紮僭參塹慘慙懺斬站讒讖倉倡創唱娼廠彰愴敞昌昶暢槍滄漲猖瘡窓脹艙菖蒼債埰寀寨彩採砦綵菜蔡采釵冊柵策�".split(""); +for(j = 0; j != D[244].length; ++j) if(D[244][j].charCodeAt(0) !== 0xFFFD) { e[D[244][j]] = 62464 + j; d[62464 + j] = D[244][j];} +D[245] = "�������������������������������������������������責凄妻悽處倜刺剔尺慽戚拓擲斥滌瘠脊蹠陟隻仟千喘天川擅泉淺玔穿舛薦賤踐遷釧闡阡韆凸哲喆徹撤澈綴輟轍鐵僉尖沾添甛瞻簽籤詹諂堞妾帖捷牒疊睫諜貼輒廳晴淸聽菁請靑鯖切������������������剃替涕滯締諦逮遞體初剿哨憔抄招梢椒楚樵炒焦硝礁礎秒稍肖艸苕草蕉貂超酢醋醮促囑燭矗蜀觸寸忖村邨叢塚寵悤憁摠總聰蔥銃撮催崔最墜抽推椎楸樞湫皺秋芻萩諏趨追鄒酋醜錐錘鎚雛騶鰍丑畜祝竺筑築縮蓄蹙蹴軸逐春椿瑃出朮黜充忠沖蟲衝衷悴膵萃�".split(""); +for(j = 0; j != D[245].length; ++j) if(D[245][j].charCodeAt(0) !== 0xFFFD) { e[D[245][j]] = 62720 + j; d[62720 + j] = D[245][j];} +D[246] = "�������������������������������������������������贅取吹嘴娶就炊翠聚脆臭趣醉驟鷲側仄厠惻測層侈値嗤峙幟恥梔治淄熾痔痴癡稚穉緇緻置致蚩輜雉馳齒則勅飭親七柒漆侵寢枕沈浸琛砧針鍼蟄秤稱快他咤唾墮妥惰打拖朶楕舵陀馱������������������駝倬卓啄坼度托拓擢晫柝濁濯琢琸託鐸呑嘆坦彈憚歎灘炭綻誕奪脫探眈耽貪塔搭榻宕帑湯糖蕩兌台太怠態殆汰泰笞胎苔跆邰颱宅擇澤撑攄兎吐土討慟桶洞痛筒統通堆槌腿褪退頹偸套妬投透鬪慝特闖坡婆巴把播擺杷波派爬琶破罷芭跛頗判坂板版瓣販辦鈑�".split(""); +for(j = 0; j != D[246].length; ++j) if(D[246][j].charCodeAt(0) !== 0xFFFD) { e[D[246][j]] = 62976 + j; d[62976 + j] = D[246][j];} +D[247] = "�������������������������������������������������阪八叭捌佩唄悖敗沛浿牌狽稗覇貝彭澎烹膨愎便偏扁片篇編翩遍鞭騙貶坪平枰萍評吠嬖幣廢弊斃肺蔽閉陛佈包匍匏咆哺圃布怖抛抱捕暴泡浦疱砲胞脯苞葡蒲袍褒逋鋪飽鮑幅暴曝瀑������������������爆輻俵剽彪慓杓標漂瓢票表豹飇飄驃品稟楓諷豊風馮彼披疲皮被避陂匹弼必泌珌畢疋筆苾馝乏逼下何厦夏廈昰河瑕荷蝦賀遐霞鰕壑學虐謔鶴寒恨悍旱汗漢澣瀚罕翰閑閒限韓割轄函含咸啣喊檻涵緘艦銜陷鹹合哈盒蛤閤闔陜亢伉姮嫦巷恒抗杭桁沆港缸肛航�".split(""); +for(j = 0; j != D[247].length; ++j) if(D[247][j].charCodeAt(0) !== 0xFFFD) { e[D[247][j]] = 63232 + j; d[63232 + j] = D[247][j];} +D[248] = "�������������������������������������������������行降項亥偕咳垓奚孩害懈楷海瀣蟹解該諧邂駭骸劾核倖幸杏荇行享向嚮珦鄕響餉饗香噓墟虛許憲櫶獻軒歇險驗奕爀赫革俔峴弦懸晛泫炫玄玹現眩睍絃絢縣舷衒見賢鉉顯孑穴血頁嫌������������������俠協夾峽挾浹狹脅脇莢鋏頰亨兄刑型形泂滎瀅灐炯熒珩瑩荊螢衡逈邢鎣馨兮彗惠慧暳蕙蹊醯鞋乎互呼壕壺好岵弧戶扈昊晧毫浩淏湖滸澔濠濩灝狐琥瑚瓠皓祜糊縞胡芦葫蒿虎號蝴護豪鎬頀顥惑或酷婚昏混渾琿魂忽惚笏哄弘汞泓洪烘紅虹訌鴻化和嬅樺火畵�".split(""); +for(j = 0; j != D[248].length; ++j) if(D[248][j].charCodeAt(0) !== 0xFFFD) { e[D[248][j]] = 63488 + j; d[63488 + j] = D[248][j];} +D[249] = "�������������������������������������������������禍禾花華話譁貨靴廓擴攫確碻穫丸喚奐宦幻患換歡晥桓渙煥環紈還驩鰥活滑猾豁闊凰幌徨恍惶愰慌晃晄榥況湟滉潢煌璜皇篁簧荒蝗遑隍黃匯回廻徊恢悔懷晦會檜淮澮灰獪繪膾茴蛔������������������誨賄劃獲宖橫鐄哮嚆孝效斅曉梟涍淆爻肴酵驍侯候厚后吼喉嗅帿後朽煦珝逅勛勳塤壎焄熏燻薰訓暈薨喧暄煊萱卉喙毁彙徽揮暉煇諱輝麾休携烋畦虧恤譎鷸兇凶匈洶胸黑昕欣炘痕吃屹紇訖欠欽歆吸恰洽翕興僖凞喜噫囍姬嬉希憙憘戱晞曦熙熹熺犧禧稀羲詰�".split(""); +for(j = 0; j != D[249].length; ++j) if(D[249][j].charCodeAt(0) !== 0xFFFD) { e[D[249][j]] = 63744 + j; d[63744 + j] = D[249][j];} +return {"enc": e, "dec": d }; })(); diff --git a/node_modules/codepage/bits/20000.js b/node_modules/codepage/bits/20000.js new file mode 100644 index 000000000..859406731 --- /dev/null +++ b/node_modules/codepage/bits/20000.js @@ -0,0 +1,193 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[20000] = (function(){ var d = [], e = {}, D = [], j; +D[0] = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ����������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];} +D[161] = "���������������������������������乂乜凵匚厂万丌乇亍囗屮彳丏冇与丮亓仂仉仈冘勼卬厹圠夃夬尐巿旡殳毌气爿丱丼仨仜仩仡仝仚刌刉匜卌圢圣夗夯宁宄尒尻屴屳帄庀庂忉戉扐氕氶汃氿氻犮犰玊禸肊阞伎优伬仵伔仱伀价伈伝伂伅伢伓伄仴伒冱刓刐劦���������������������������������� ,、。․•;:?!︰…‥﹐﹑‧﹒﹔﹕﹖﹗︱–︲—︳_︴﹏()︵︶{}︷︸〔〕︹︺【】︻︼《》︽︾〈〉︿﹀「」﹁﹂『』﹃﹄﹙﹚﹛﹜﹝﹞‘’“”〝〞′‵#&*※§〃○●△▲◎☆★◇◆□■▽▼�".split(""); +for(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];} +D[162] = "���������������������������������匢匟卍厊吇囡囟圮圪圴夼妀奼妅奻奾奷奿孖尕尥屼屺屻屾巟幵庄异弚彴忕忔忏扜扞扤扡扦扢扙扠扚扥攷旯旮朾朹朸朻机朿朼朳氘汆汒汜汏汊汔汋汌灱牞犴犵玎甪癿穵网艸艼芀艽艿虍襾邙邗邘邛邔阢阤阠阣佖伻佢佉体����������������������������������㊣℅‾ ̄��﹉﹊﹍﹎﹋﹌﹟﹠﹡+-×÷±√<>=≦≧≠∞≒≡﹢﹣﹤﹥﹦∼∩∪⊥∠∟⊿㏒㏑∫∮∵∴♀♂⊕⊙↑↓→←↖↗↙↘∥∣/\�﹨$¥〒¢£%@℃℉﹩﹪﹫㏕㎜㎝㎞㏎㎡㎎㎏㏄゜兙兛兞兝兡兣�".split(""); +for(j = 0; j != D[162].length; ++j) if(D[162][j].charCodeAt(0) !== 0xFFFD) { e[D[162][j]] = 41472 + j; d[41472 + j] = D[162][j];} +D[163] = "���������������������������������佤伾佧佒佟佁佘伭伳伿佡冏冹刜刞刡劭劮匉卣卲厎厏吰吷吪呔呅吙吜吥吘吽呏呁吨吤呇囮囧囥坁坅坌坉坋坒夆奀妦妘妠妗妎妢妐妏妧妡宎宒尨尪岍岏岈岋岉岒岊岆岓岕巠帊帎庋庉庌庈庍弅弝彸彶忒忑忐忭忨忮忳忡忤����������������������������������嗧瓩糎▁▂▃▄▅▆▇█▏▎▍▌▋▊▉┼┴┬┤├▔─│▕┌┐└┘╭╮╰╯═╞╪╡◢◣◥◤╱╲╳¨˄ヽヾゝゞ�〄々〆〇ー[]✽ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただち�".split(""); +for(j = 0; j != D[163].length; ++j) if(D[163][j].charCodeAt(0) !== 0xFFFD) { e[D[163][j]] = 41728 + j; d[41728 + j] = D[163][j];} +D[164] = "���������������������������������忣忺忯忷忻怀忴戺抃抌抎抏抔抇扱扻扺扰抁抈扷扽扲扴旰旴旳旲旵杅杇杙杕杌杈杝杍杚杋毐氙氚汸汧汫沄沋沏汱汯汩沚汭沇沕沜汦汳汥汻沎灴灺牣犿犽狃狆狁犺狅玕玗玓玔玒町甹疔疕皁礽耴肕肙肐肒肜芐芏芅芎芑芓����������������������������������0123456789ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩ〡〢〣〤〥〦〧〨〩�卄�ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzΑΒΓΔΕΖΗΘΙΚ�".split(""); +for(j = 0; j != D[164].length; ++j) if(D[164][j].charCodeAt(0) !== 0xFFFD) { e[D[164][j]] = 41984 + j; d[41984 + j] = D[164][j];} +D[165] = "���������������������������������芊芃芄豸迉辿邟邡邥邞邧邠阰阨阯阭丳侘佼侅佽侀侇佶佴侉侄佷佌侗佪侚佹侁佸侐侜侔侞侒侂侕佫佮冞冼冾刵刲刳剆刱劼匊匋匼厒厔咇呿咁咑咂咈呫呺呾呥呬呴呦咍呯呡呠咘呣呧呤囷囹坯坲坭坫坱坰坶垀坵坻坳坴坢����������������������������������ΛΜΝΞΟΠΡΣΤΥΦΧΨΩαβγδεζηθικλμνξοπρστυφχψωㄅㄆㄇㄈㄉㄊㄋㄌㄍㄎㄏㄐㄑㄒㄓㄔㄕㄖㄗㄘㄙㄚㄛㄜㄝㄞㄟㄠㄡㄢㄣㄤㄥㄦㄧㄨㄩ˙˟ˊˇˋぢっつづてでとどなにぬねのは�".split(""); +for(j = 0; j != D[165].length; ++j) if(D[165][j].charCodeAt(0) !== 0xFFFD) { e[D[165][j]] = 42240 + j; d[42240 + j] = D[165][j];} +D[166] = "���������������������������������坨坽夌奅妵妺姏姎妲姌姁妶妼姃姖妱妽姀姈妴姇孢孥宓宕屄屇岮岤岠岵岯岨岬岟岣岭岢岪岧岝岥岶岰岦帗帔帙弨弢弣弤彔徂彾彽忞忥怭怦怙怲怋怴怊怗怳怚怞怬怢怍怐怮怓怑怌怉怜戔戽抭抴拑抾抪抶拊抮抳抯抻抩抰����������������������������������①②③④⑤⑥⑦⑧⑨⑩⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽ⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをんァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼ�".split(""); +for(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];} +D[167] = "���������������������������������抸攽斨斻昉旼昄昒昈旻昃昋昍昅旽昑昐曶朊枅杬枎枒杶杻枘枆构杴枍枌杺枟枑枙枃杽极杸杹枔欥殀歾毞氝沓泬泫泮泙沶泔沭泧沷泐泂沺泃泆泭泲泒泝沴沊沝沀泞泀洰泍泇沰泹泏泩泑炔炘炅炓炆炄炑炖炂炚炃牪狖狋狘������������������������������������丶丿�亅�亠����冂冖冫����勹��匸��卩�厶�����夂����宀������巛����幺广廴���彐彡������攴����无�������������������������".split(""); +for(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];} +D[168] = "���������������������������������狉狜狒狔狚狌狑玤玡玭玦玢玠玬玝瓝瓨甿畀甾疌疘皯盳盱盰盵矸矼矹矻矺矷祂礿秅穸穻竻籵糽耵肏肮肣肸肵肭舠芠苀芫芚芘芛芵芧芮芼芞芺芴芨芡芩苂芤苃芶芢虰虯虭虮豖迒迋迓迍迖迕迗邲邴邯邳邰阹阽阼阺陃俍俅������������������������������������������疒癶��������������������������������������������������������辵��������隶�������������������".split(""); +for(j = 0; j != D[168].length; ++j) if(D[168][j].charCodeAt(0) !== 0xFFFD) { e[D[168][j]] = 43008 + j; d[43008 + j] = D[168][j];} +D[169] = "���������������������������������俓侲俉俋俁俔俜俙侻侳俛俇俖侺俀侹俬剄剉勀勂匽卼厗厖厙厘咺咡咭咥哏哃茍咷咮哖咶哅哆咠呰咼咢咾呲哞咰垵垞垟垤垌垗垝垛垔垘垏垙垥垚垕壴复奓姡姞姮娀姱姝姺姽姼姶姤姲姷姛姩姳姵姠姾姴姭宨屌峐峘峌峗峋���������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[169].length; ++j) if(D[169][j].charCodeAt(0) !== 0xFFFD) { e[D[169][j]] = 43264 + j; d[43264 + j] = D[169][j];} +D[170] = "���������������������������������峛峞峚峉峇峊峖峓峔峏峈峆峎峟峸巹帡帢帣帠帤庰庤庢庛庣庥弇弮彖徆怷怹恔恲恞恅恓恇恉恛恌恀恂恟怤恄恘恦恮扂扃拏挍挋拵挎挃拫拹挏挌拸拶挀挓挔拺挕拻拰敁敃斪斿昶昡昲昵昜昦昢昳昫昺昝昴昹昮朏朐柁柲柈�����������������������������������".split(""); +for(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];} +D[171] = "���������������������������������枺柜枻柸柘柀枷柅柫柤柟枵柍枳柷柶柮柣柂枹柎柧柰枲柼柆柭柌枮柦柛柺柉柊柃柪柋欨殂殄殶毖毘毠氠氡洨洴洭洟洼洿洒洊泚洳洄洙洺洚洑洀洝浂洁洘洷洃洏浀洇洠洬洈洢洉洐炷炟炾炱炰炡炴炵炩牁牉牊牬牰牳牮狊�����������������������������������".split(""); +for(j = 0; j != D[171].length; ++j) if(D[171][j].charCodeAt(0) !== 0xFFFD) { e[D[171][j]] = 43776 + j; d[43776 + j] = D[171][j];} +D[172] = "���������������������������������狤狨狫狟狪狦狣玅珌珂珈珅玹玶玵玴珫玿珇玾珃珆玸珋瓬瓮甮畇畈疧疪癹盄眈眃眄眅眊盷盻盺矧矨砆砑砒砅砐砏砎砉砃砓祊祌祋祅祄秕种秏秖秎窀穾竑笀笁籺籸籹籿粀粁紃紈紁罘羑羍羾耇耎耏耔耷胘胇胠胑胈胂胐胅�����������������������������������".split(""); +for(j = 0; j != D[172].length; ++j) if(D[172][j].charCodeAt(0) !== 0xFFFD) { e[D[172][j]] = 44032 + j; d[44032 + j] = D[172][j];} +D[173] = "���������������������������������胣胙胜胊胕胉胏胗胦胍臿舡芔苙苾苹茇苨茀苕茺苫苖苴苬苡苲苵茌苻苶苰苪苤苠苺苳苭虷虴虼虳衁衎衧衪衩觓訄訇赲迣迡迮迠郱邽邿郕郅邾郇郋郈釔釓陔陏陑陓陊陎倞倅倇倓倢倰倛俵俴倳倷倬俶俷倗倜倠倧倵倯倱倎�����������������������������������".split(""); +for(j = 0; j != D[173].length; ++j) if(D[173][j].charCodeAt(0) !== 0xFFFD) { e[D[173][j]] = 44288 + j; d[44288 + j] = D[173][j];} +D[174] = "���������������������������������党冔冓凊凄凅凈凎剡剚剒剞剟剕剢勍匎厞唦哢唗唒哧哳哤唚哿唄唈哫唑唅哱唊哻哷哸哠唎唃唋圁圂埌堲埕埒垺埆垽垼垸垶垿埇埐垹埁夎奊娙娖娭娮娕娏娗娊娞娳孬宧宭宬尃屖屔峬峿峮峱峷崀峹帩帨庨庮庪庬弳弰彧恝�����������������������������������".split(""); +for(j = 0; j != D[174].length; ++j) if(D[174][j].charCodeAt(0) !== 0xFFFD) { e[D[174][j]] = 44544 + j; d[44544 + j] = D[174][j];} +D[175] = "���������������������������������恚恧恁悢悈悀悒悁悝悃悕悛悗悇悜悎戙扆拲挐捖挬捄捅挶捃揤挹捋捊挼挩捁挴捘捔捙挭捇挳捚捑挸捗捀捈敊敆旆旃旄旂晊晟晇晑朒朓栟栚桉栲栳栻桋桏栖栱栜栵栫栭栯桎桄栴栝栒栔栦栨栮桍栺栥栠欬欯欭欱欴歭肂殈�����������������������������������".split(""); +for(j = 0; j != D[175].length; ++j) if(D[175][j].charCodeAt(0) !== 0xFFFD) { e[D[175][j]] = 44800 + j; d[44800 + j] = D[175][j];} +D[176] = "���������������������������������毦毤毨毣毢毧氥浺浣浤浶洍浡涒浘浢浭浯涑涍淯浿涆浞浧浠涗浰浼浟涂涘洯浨涋浾涀涄洖涃浻浽浵涐烜烓烑烝烋缹烢烗烒烞烠烔烍烅烆烇烚烎烡牂牸牷牶猀狺狴狾狶狳狻猁珓珙珥珖玼珧珣珩珜珒珛珔珝珚珗珘珨瓞瓟�����������������������������������".split(""); +for(j = 0; j != D[176].length; ++j) if(D[176][j].charCodeAt(0) !== 0xFFFD) { e[D[176][j]] = 45056 + j; d[45056 + j] = D[176][j];} +D[177] = "���������������������������������瓴瓵甡畛畟疰痁疻痄痀疿疶疺皊盉眝眛眐眓眒眣眑眕眙眚眢眧砣砬砢砵砯砨砮砫砡砩砳砪砱祔祛祏祜祓祒祑秫秬秠秮秭秪秜秞秝窆窉窅窋窌窊窇竘笐笄笓笅笏笈笊笎笉笒粄粑粊粌粈粍粅紞紝紑紎紘紖紓紟紒紏紌罜罡�����������������������������������".split(""); +for(j = 0; j != D[177].length; ++j) if(D[177][j].charCodeAt(0) !== 0xFFFD) { e[D[177][j]] = 45312 + j; d[45312 + j] = D[177][j];} +D[178] = "���������������������������������罞罠罝罛羖羒翃翂翀耖耾耹胺胲胹胵脁胻脀舁舯舥茳茭荄茙荑茥荖茿荁茦茜茢荂荎茛茪茈茼荍茖茤茠茷茯茩荇荅荌荓茞茬荋茧荈虓虒蚢蚨蚖蚍蚑蚞蚇蚗蚆蚋蚚蚅蚥蚙蚡蚧蚕蚘蚎蚝蚐蚔衃衄衭衵衶衲袀衱衿衯袃衾衴衼�����������������������������������".split(""); +for(j = 0; j != D[178].length; ++j) if(D[178][j].charCodeAt(0) !== 0xFFFD) { e[D[178][j]] = 45568 + j; d[45568 + j] = D[178][j];} +D[179] = "���������������������������������訒豇豗豻貤貣赶赸趵趷趶軑軓迾迵适迿迻逄迼迶郖郠郙郚郣郟郥郘郛郗郜郤酐酎酏釕釢釚陜陟隼飣髟鬯乿偰偪偡偞偠偓偋偝偲偈偍偁偛偊偢倕偅偟偩偫偣偤偆偀偮偳偗偑凐剫剭剬剮勖勓匭厜啵啶唼啍啐唴唪啑啢唶唵�����������������������������������".split(""); +for(j = 0; j != D[179].length; ++j) if(D[179][j].charCodeAt(0) !== 0xFFFD) { e[D[179][j]] = 45824 + j; d[45824 + j] = D[179][j];} +D[180] = "���������������������������������唰啒啅唌唲啥啎唹啈唭唻啀啋圊圇埻堔埢埶埜埴堀埭埽堈埸堋埳埏堇埮埣埲埥埬埡堎埼堐埧堁堌埱埩埰堍堄奜婠婘婕婧婞娸娵婭婐婟婥婬婓婤婗婃婝婒婄婛婈媎娾婍娹婌婰婩婇婑婖婂婜孲孮寁寀屙崞崋崝崚崠崌崨崍�����������������������������������".split(""); +for(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];} +D[181] = "���������������������������������崦崥崏崰崒崣崟崮帾帴庱庴庹庲庳弶弸徛徖徟悊悐悆悾悰悺惓惔惏惤惙惝惈悱惛悷惊悿惃惍惀挲捥掊掂捽掽掞掭掝掗掫掎捯掇掐据掯捵掜捭掮捼掤挻掟捸掅掁掑掍捰敓旍晥晡晛晙晜晢朘桹梇梐梜桭桮梮梫楖桯梣梬梩�����������������������������������".split(""); +for(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];} +D[182] = "���������������������������������桵桴梲梏桷梒桼桫桲梪梀桱桾梛梖梋梠梉梤桸桻梑梌梊桽欶欳欷欸殑殏殍殎殌氪淀涫涴涳湴涬淩淢涷淶淔渀淈淠淟淖涾淥淜淝淛淴淊涽淭淰涺淕淂淏淉淐淲淓淽淗淍淣涻烺焍烷焗烴焌烰焄烳焐烼烿焆焓焀烸烶焋焂焎�����������������������������������".split(""); +for(j = 0; j != D[182].length; ++j) if(D[182][j].charCodeAt(0) !== 0xFFFD) { e[D[182][j]] = 46592 + j; d[46592 + j] = D[182][j];} +D[183] = "���������������������������������牾牻牼牿猝猗猇猑猘猊猈狿猏猞玈珶珸珵琄琁珽琇琀珺珼珿琌琋珴琈畤畣痎痒痏痋痌痑痐皏皉盓眹眯眭眱眲眴眳眽眥眻眵硈硒硉硍硊硌砦硅硐祤祧祩祪祣祫祡离秺秸秶秷窏窔窐笵笻笴笥笰笢笤笳笘笪笝笱笫笭笯笲笸�����������������������������������".split(""); +for(j = 0; j != D[183].length; ++j) if(D[183][j].charCodeAt(0) !== 0xFFFD) { e[D[183][j]] = 46848 + j; d[46848 + j] = D[183][j];} +D[184] = "���������������������������������笚笣粔粘粖粣紵紽紸紶紺絅紬紩絁絇紾紿絊紻紨罣羕羜羝羛翊翋翍翐翑翇翏翉耟耞耛聇聃聈脘脥脙脛脭脟脬脞脡脕脧脝脢舑舸舳舺舴舲艴莐莣莨莍荺荳莤荴莏莁莕莙荵莔莩荽莃莌莝莛莪莋荾莥莯莈莗莰荿莦莇莮荶虙�����������������������������������".split(""); +for(j = 0; j != D[184].length; ++j) if(D[184][j].charCodeAt(0) !== 0xFFFD) { e[D[184][j]] = 47104 + j; d[47104 + j] = D[184][j];} +D[185] = "���������������������������������虖蚿蚷蛂蛁蛅蚺蚰蛈蚹蚳蚸蛌蚴蚻蚼蛃蚽蚾衒袉袕袨袢袪袚袑袡袟袘袧袙袛袗袤袬袌袓袎覂觖觙觕訰訧訬訞谹谻豜豝豽貥赽赻赹趼跂趹趿跁軘軞軝軜軗軠軡逤逋逑逜逌逡郯郪郰郴郲郳郔郫郬郩酖酘酚酓酕釬釴釱釳釸�����������������������������������".split(""); +for(j = 0; j != D[185].length; ++j) if(D[185][j].charCodeAt(0) !== 0xFFFD) { e[D[185][j]] = 47360 + j; d[47360 + j] = D[185][j];} +D[186] = "���������������������������������釤釹釪釫釷釨釮镺閆閈陼陭陫陱陯隿靪頄飥馗傛傕傔傞傋傣傃傌傎傝偨傜傒傂傇兟凔匒匑厤厧喑喨喥喭啷噅喢喓喈喏喵喁喣喒喤啽喌喦啿喕喡喎圌堩堷堙堞堧堣堨埵塈堥堜堛堳堿堶堮堹堸堭堬堻奡媯媔媟婺媢媞婸媦�����������������������������������".split(""); +for(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];} +D[187] = "���������������������������������婼媥媬媕媮娷媄媊媗媃媋媩婻婽媌媜媏媓媝寪寍寋寔寑寊寎尌尰崷嵃嵫嵁嵋崿崵嵑嵎嵕崳崺嵒崽崱嵙嵂崹嵉崸崼崲崶嵀嵅幄幁彘徦徥徫惉悹惌惢惎惄愔惲愊愖愅惵愓惸惼惾惁愃愘愝愐惿愄愋扊掔掱掰揎揥揨揯揃撝揳�����������������������������������".split(""); +for(j = 0; j != D[187].length; ++j) if(D[187][j].charCodeAt(0) !== 0xFFFD) { e[D[187][j]] = 47872 + j; d[47872 + j] = D[187][j];} +D[188] = "���������������������������������揊揠揶揕揲揵摡揟掾揝揜揄揘揓揂揇揌揋揈揰揗揙攲敧敪敤敜敨敥斌斝斞斮旐旒晼晬晻暀晱晹晪晲朁椌棓椄棜椪棬棪棱椏棖棷棫棤棶椓椐棳棡椇棌椈楰梴椑棯棆椔棸棐棽棼棨椋椊椗棎棈棝棞棦棴棑椆棔棩椕椥棇欹欻�����������������������������������".split(""); +for(j = 0; j != D[188].length; ++j) if(D[188][j].charCodeAt(0) !== 0xFFFD) { e[D[188][j]] = 48128 + j; d[48128 + j] = D[188][j];} +D[189] = "���������������������������������欿欼殔殗殙殕殽毰毲毳氰淼湆湇渟湉溈渼渽湅湢渫渿湁湝湳渜渳湋湀湑渻渃渮湞湨湜湡渱渨湠湱湫渹渢渰湓湥渧湸湤湷湕湹湒湦渵渶湚焠焞焯烻焮焱焣焥焢焲焟焨焺焛牋牚犈犉犆犅犋猒猋猰猢猱猳猧猲猭猦猣猵猌琮�����������������������������������".split(""); +for(j = 0; j != D[189].length; ++j) if(D[189][j].charCodeAt(0) !== 0xFFFD) { e[D[189][j]] = 48384 + j; d[48384 + j] = D[189][j];} +D[190] = "���������������������������������琬琰琫琖琚琡琭琱琤琣琝琩琠琲瓻甯畯畬痧痚痡痦痝痟痤痗皕皒盚睆睇睄睍睅睊睎睋睌矞矬硠硤硥硜硭硱硪确硰硩硨硞硢祴祳祲祰稂稊稃稌稄窙竦竤筊筇筄筈筌筎筀筘筅粢粞粨粡絘絯絣絓絖絧絪絏絭絜絫絒絔絩絑絟�����������������������������������".split(""); +for(j = 0; j != D[190].length; ++j) if(D[190][j].charCodeAt(0) !== 0xFFFD) { e[D[190][j]] = 48640 + j; d[48640 + j] = D[190][j];} +D[191] = "���������������������������������絎缾缿罥罦羢羠羡翗聑聏聐胾胔腃腊腒腏腇脽腍脺臦臮臷臸臹舄舼舽舿艵茻菏菹萣菀菨萒菧菤菼菶萐菆菈菫菣莿萁菝菥菘菿菡菋菎菖菵菉萉萏菞萑萆菂菳菕菺菇菑菪萓莚菃菬菮菄菻菗菢萛菛菾蛘蛢蛦蛓蛣蛚蛪蛝蛫蛜�����������������������������������".split(""); +for(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];} +D[192] = "���������������������������������蛬蛩蛗蛨蛑衈衖衕袺裗袹袸裀袾袶袼袷袽袲褁裉覕覘覗觝觚觛詎詍訹詙詀詗詘詄詅詒詈詑詊詌詏豟貁貀貺貾貰貹貵趄趀趉跘跓跍跇跖跜跏跕跙跈跗跅軯軷軺軹軦軮軥軵軧軨軶軫軱軬軴軩逭逴逯鄆鄬鄄郿郼鄈郹郻鄁鄀�����������������������������������".split(""); +for(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];} +D[193] = "���������������������������������鄇鄅鄃酡酤酟酢酠鈁鈊鈥鈃鈚鈦鈏鈌鈀鈒釿釽鈆鈄鈧鈂鈜鈤鈙鈗鈅鈖镻閍閌閐隇陾隈隉隃隀雂雈雃雱雰靬靰靮頇颩飫鳦黹亃亄亶傽傿僆傮僄僊傴僈僂傰僁傺傱僋僉傶傸凗剺剸剻剼嗃嗛嗌嗐嗋嗊嗝嗀嗔嗄嗩喿嗒喍嗏嗕�����������������������������������".split(""); +for(j = 0; j != D[193].length; ++j) if(D[193][j].charCodeAt(0) !== 0xFFFD) { e[D[193][j]] = 49408 + j; d[49408 + j] = D[193][j];} +D[194] = "���������������������������������嗢嗖嗈嗲嗍嗙嗂圔塓塨塤塏塍塉塯塕塎塝塙塥塛堽塣塱壼嫇嫄嫋媺媸媱媵媰媿嫈媻嫆媷嫀嫊媴媶嫍媹媐寖寘寙尟尳嵱嵣嵊嵥嵲嵬嵞嵨嵧嵢巰幏幎幊幍幋廅廌廆廋廇彀徯徭惷慉慊愫慅愶愲愮慆愯慏愩慀戠酨戣戥戤揅揱�������������������������������������������������������������������¬¦��㈱№℡�".split(""); +for(j = 0; j != D[194].length; ++j) if(D[194][j].charCodeAt(0) !== 0xFFFD) { e[D[194][j]] = 49664 + j; d[49664 + j] = D[194][j];} +D[195] = "���������������������������������揫搐搒搉搠搤搳摃搟搕搘搹搷搢搣搌搦搰搨摁搵搯搊搚摀搥搧搋揧搛搮搡搎敯斒旓暆暌暕暐暋暊暙暔晸朠楦楟椸楎楢楱椿楅楪椹楂楗楙楺楈楉椵楬椳椽楥棰楸椴楩楀楯楄楶楘楁楴楌椻楋椷楜楏楑椲楒椯楻椼歆歅歃歂�����������������������������������".split(""); +for(j = 0; j != D[195].length; ++j) if(D[195][j].charCodeAt(0) !== 0xFFFD) { e[D[195][j]] = 49920 + j; d[49920 + j] = D[195][j];} +D[196] = "���������������������������������歈歁殛毻毼毹毷毸溛滖滈溏滀溟溓溔溠溱溹滆滒溽滁溞滉溷溰滍溦滏溲溾滃滜滘溙溒溎溍溤溡溿溳滐滊溗溮溣煇煔煒煣煠煁煝煢煲煸煪煡煂煘煃煋煰煟煐煓煄煍煚牏犍犌犑犐犎猼獂猻猺獀獊獉瑄瑊瑋瑒瑑瑗瑀瑏瑐瑎����������������������������������一乙丁七乃九了二人儿入八几刀刁力匕十卜又三下丈上丫丸凡久么也乞于亡兀刃勺千叉口土士夕大女子孑孓寸小尢尸山川工己已巳巾干廾弋弓才丑丐不中丰丹之尹予云井互五亢仁什仃仆仇仍今介仄元允內六兮公冗凶�".split(""); +for(j = 0; j != D[196].length; ++j) if(D[196][j].charCodeAt(0) !== 0xFFFD) { e[D[196][j]] = 50176 + j; d[50176 + j] = D[196][j];} +D[197] = "���������������������������������瑂瑆瑍瑔瓡瓿瓾瓽甝畹畷榃痯瘏瘃痷痾痼痹痸瘐痻痶痭痵痽皙皵盝睕睟睠睒睖睚睩睧睔睙睭矠碇碚碔碏碄碕碅碆碡碃硹碙碀碖硻祼禂祽祹稑稘稙稒稗稕稢稓稛稐窣窢窞竫筦筤筭筴筩筲筥筳筱筰筡筸筶筣粲粴粯綈綆綀����������������������������������分切刈勻勾勿化匹午升卅卞厄友及反壬天夫太夭孔少尤尺屯巴幻廿弔引心戈戶手扎支文斗斤方日曰月木欠止歹毋比毛氏水火爪父爻片牙牛犬王丙世丕且丘主乍乏乎以付仔仕他仗代令仙仞充兄冉冊冬凹出凸刊加功包匆�".split(""); +for(j = 0; j != D[197].length; ++j) if(D[197][j].charCodeAt(0) !== 0xFFFD) { e[D[197][j]] = 50432 + j; d[50432 + j] = D[197][j];} +D[198] = "���������������������������������綍絿綅絺綎絻綃絼綌綔綄絽綒罭罫罧罨罬羦羥羧翛翜耡腤腠腷腜腩腛腢腲朡腞腶腧腯腄腡舝艉艄艀艂艅蓱萿葖葶葹蒏蒍葥葑葀蒆葧萰葍葽葚葙葴葳葝蔇葞萷萺萴葺葃葸萲葅萩菙葋萯葂萭葟葰萹葎葌葒葯蓅蒎萻葇萶萳����������������������������������北匝仟半卉卡占卯卮去可古右召叮叩叨叼司叵叫另只史叱台句叭叻四囚外央失奴奶孕它尼巨巧左市布平幼弁弘弗必戊打扔扒扑斥旦朮本未末札正母民氐永汁汀氾犯玄玉瓜瓦甘生用甩田由甲申疋白皮皿目矛矢石示禾穴�".split(""); +for(j = 0; j != D[198].length; ++j) if(D[198][j].charCodeAt(0) !== 0xFFFD) { e[D[198][j]] = 50688 + j; d[50688 + j] = D[198][j];} +D[199] = "���������������������������������葨葾葄萫葠葔葮葐蜋蜄蛷蜌蛺蛖蛵蝍蛸蜎蜉蜁蛶蜍蜅裖裋裍裎裞裛裚裌裐覅覛觟觥觤觡觠觢觜触詶誆詿詡訿詷誂誄詵誃誁詴詺谼豋豊豥豤豦貆貄貅賌赨赩趑趌趎趏趍趓趔趐趒跰跠跬跱跮跐跩跣跢跧跲跫跴輆軿輁輀輅����������������������������������立丞丟乒乓乩亙交亦亥仿伉伙伊伕伍伐休伏仲件任仰仳份企伋光兇兆先全共再冰列刑划刎刖劣匈匡匠印危吉吏同吊吐吁吋各向名合吃后吆吒因回囝圳地在圭圬圯圩夙多夷夸妄奸妃好她如妁字存宇守宅安寺尖屹州帆并�".split(""); +for(j = 0; j != D[199].length; ++j) if(D[199][j].charCodeAt(0) !== 0xFFFD) { e[D[199][j]] = 50944 + j; d[50944 + j] = D[199][j];} +D[200] = "���������������������������������輇輈輂輋遒逿遄遉逽鄐鄍鄏鄑鄖鄔鄋鄎酮酯鉈鉒鈰鈺鉦鈳鉥鉞銃鈮鉊鉆鉭鉬鉏鉠鉧鉯鈶鉡鉰鈱鉔鉣鉐鉲鉎鉓鉌鉖鈲閟閜閞閛隒隓隑隗雎雺雽雸雵靳靷靸靲頏頍頎颬飶飹馯馲馰馵骭骫魛鳪鳭鳧麀黽僦僔僗僨僳僛僪僝僤����������������������������������年式弛忙忖戎戌戍成扣扛托收早旨旬旭曲曳有朽朴朱朵次此死氖汝汗汙江池汐汕污汛汍汎灰牟牝百竹米糸缶羊羽老考而耒耳聿肉肋肌臣自至臼舌舛舟艮色艾虫血行衣西阡串亨位住佇佗佞伴佛何估佐佑伽伺伸佃佔似但�".split(""); +for(j = 0; j != D[200].length; ++j) if(D[200][j].charCodeAt(0) !== 0xFFFD) { e[D[200][j]] = 51200 + j; d[51200 + j] = D[200][j];} +D[201] = "���������������������������������僓僬僰僯僣僠凘劀劁勩勫匰厬嘧嘕嘌嘒嗼嘏嘜嘁嘓嘂嗺嘝嘄嗿嗹墉塼墐墘墆墁塿塴墋塺墇墑墎塶墂墈塻墔墏壾奫嫜嫮嫥嫕嫪嫚嫭嫫嫳嫢嫠嫛嫬嫞嫝嫙嫨嫟孷寠寣屣嶂嶀嵽嶆嵺嶁嵷嶊嶉嶈嵾嵼嶍嵹嵿幘幙幓廘廑廗廎廜����������������������������������佣作你伯低伶余佝佈佚兌克免兵冶冷別判利刪刨劫助努劬匣即卵吝吭吞吾否呎吧呆呃吳呈呂君吩告吹吻吸吮吵吶吠吼呀吱含吟听囪困囤囫坊坑址坍均坎圾坐坏圻壯夾妝妒妨妞妣妙妖妍妤妓妊妥孝孜孚孛完宋宏尬局屁�".split(""); +for(j = 0; j != D[201].length; ++j) if(D[201][j].charCodeAt(0) !== 0xFFFD) { e[D[201][j]] = 51456 + j; d[51456 + j] = D[201][j];} +D[202] = "���������������������������������廕廙廒廔彄彃彯徶愬愨慁慞慱慳慒慓慲慬憀慴慔慺慛慥愻慪慡慖戩戧戫搫摍摛摝摴摶摲摳摽摵摦撦摎撂摞摜摋摓摠摐摿搿摬摫摙摥摷敳斠暡暠暟朅朄朢榱榶槉榠槎榖榰榬榼榑榙榎榧榍榩榾榯榿槄榽榤槔榹槊榚槏榳榓����������������������������������尿尾岐岑岔岌巫希序庇床廷弄弟彤形彷役忘忌志忍忱快忸忪戒我抄抗抖技扶抉扭把扼找批扳抒扯折扮投抓抑抆改攻攸旱更束李杏材村杜杖杞杉杆杠杓杗步每求汞沙沁沈沉沅沛汪決沐汰沌汨沖沒汽沃汲汾汴沆汶沍沔沘�".split(""); +for(j = 0; j != D[202].length; ++j) if(D[202][j].charCodeAt(0) !== 0xFFFD) { e[D[202][j]] = 51712 + j; d[51712 + j] = D[202][j];} +D[203] = "���������������������������������榪榡榞槙榗榐槂榵榥槆歊歍歋殞殟殠毃毄毾滎滵滱漃漥滸漷滻漮漉潎漙漚漧漘漻漒滭漊漶潳滹滮漭潀漰漼漵滫漇漎潃漅滽滶漹漜滼漺漟漍漞漈漡熇熐熉熀熅熂熏煻熆熁熗牄牓犗犕犓獃獍獑獌瑢瑳瑱瑵瑲瑧瑮甀甂甃畽����������������������������������沂灶灼災灸牢牡牠狄狂玖甬甫男甸皂盯矣私秀禿究系罕肖肓肝肘肛肚育良芒芋芍見角言谷豆豕貝赤走足身車辛辰迂迆迅迄巡邑邢邪邦那酉釆里防阮阱阪阬並乖乳事些亞享京佯依侍佳使佬供例來侃佰併侈佩佻侖佾侏侑�".split(""); +for(j = 0; j != D[203].length; ++j) if(D[203][j].charCodeAt(0) !== 0xFFFD) { e[D[203][j]] = 51968 + j; d[51968 + j] = D[203][j];} +D[204] = "���������������������������������疐瘖瘈瘌瘕瘑瘊瘔皸瞁睼瞅瞂睮瞀睯睾瞃碲碪碴碭碨硾碫碞碥碠碬碢碤禘禊禋禖禕禔禓禗禈禒禐稫穊稰稯稨稦窨窫窬竮箈箜箊箑箐箖箍箌箛箎箅箘劄箙箤箂粻粿粼粺綧綷緂綣綪緁緀緅綝緎緄緆緋緌綯綹綖綼綟綦綮綩����������������������������������佺兔兒兕兩具其典冽函刻券刷刺到刮制剁劾劻卒協卓卑卦卷卸卹取叔受味呵咖呸咕咀呻呷咄咒咆呼咐呱呶和咚呢周咋命咎固垃坷坪坩坡坦坤坼夜奉奇奈奄奔妾妻委妹妮姑姆姐姍始姓姊妯妳姒姅孟孤季宗定官宜宙宛尚�".split(""); +for(j = 0; j != D[204].length; ++j) if(D[204][j].charCodeAt(0) !== 0xFFFD) { e[D[204][j]] = 52224 + j; d[52224 + j] = D[204][j];} +D[205] = "���������������������������������綡緉罳翢翣翥翞耤聝聜膉膆膃膇膍膌膋舕蒗蒤蒡蒟蒺蓎蓂蒬蒮蒫蒹蒴蓁蓍蒪蒚蒱蓐蒝蒧蒻蒢蒔蓇蓌蒛蒩蒯蒨蓖蒘蒶蓏蒠蓗蓔蓒蓛蒰蒑虡蜳蜣蜨蝫蝀蜮蜞蜡蜙蜛蝃蜬蝁蜾蝆蜠蜲蜪蜭蜼蜒蜺蜱蜵蝂蜦蜧蜸蜤蜚蜰蜑裷裧裱����������������������������������屈居屆岷岡岸岩岫岱岳帘帚帖帕帛帑幸庚店府底庖延弦弧弩往征彿彼忝忠忽念忿怏怔怯怵怖怪怕怡性怩怫怛或戕房戾所承拉拌拄抿拂抹拒招披拓拔拋拈抨抽押拐拙拇拍抵拚抱拘拖拗拆抬拎放斧於旺昔易昌昆昂明昀昏�".split(""); +for(j = 0; j != D[205].length; ++j) if(D[205][j].charCodeAt(0) !== 0xFFFD) { e[D[205][j]] = 52480 + j; d[52480 + j] = D[205][j];} +D[206] = "���������������������������������裲裺裾裮裼裶裻裰裬裫覝覡覟覞觩觫觨誫誙誋誒誏誖谽豨豩賕賏賗趖踉踂跿踍跽踊踃踇踆踅跾踀踄輐輑輎輍鄣鄜鄠鄢鄟鄝鄚鄤鄡鄛酺酲酹酳銥銤鉶銛鉺銠銔銪銍銦銚銫鉹銗鉿銣鋮銎銂銕銢鉽銈銡銊銆銌銙銧鉾銇銩銝����������������������������������昕昊昇服朋杭枋枕東果杳杷枇枝林杯杰板枉松析杵枚枓杼杪杲欣武歧歿氓氛泣注泳沱泌泥河沽沾沼波沫法泓沸泄油況沮泗泅泱沿治泡泛泊沬泯泜泖泠炕炎炒炊炙爬爭爸版牧物狀狎狙狗狐玩玨玟玫玥甽疝疙疚的盂盲直�".split(""); +for(j = 0; j != D[206].length; ++j) if(D[206][j].charCodeAt(0) !== 0xFFFD) { e[D[206][j]] = 52736 + j; d[52736 + j] = D[206][j];} +D[207] = "���������������������������������銋鈭隞隡雿靘靽靺靾鞃鞀鞂靻鞄鞁靿韎韍頖颭颮餂餀餇馝馜駃馹馻馺駂馽駇骱髣髧鬾鬿魠魡魟鳱鳲鳵麧僿儃儰僸儆儇僶僾儋儌僽儊劋劌勱勯噈噂噌嘵噁噊噉噆噘噚噀嘳嘽嘬嘾嘸嘪嘺圚墫墝墱墠墣墯墬墥墡壿嫿嫴嫽嫷����������������������������������知矽社祀祁秉秈空穹竺糾罔羌羋者肺肥肢肱股肫肩肴肪肯臥臾舍芳芝芙芭芽芟芹花芬芥芯芸芣芰芾芷虎虱初表軋迎返近邵邸邱邶采金長門阜陀阿阻附陂隹雨青非亟亭亮信侵侯便俠俑俏保促侶俘俟俊俗侮俐俄係俚俎俞�".split(""); +for(j = 0; j != D[207].length; ++j) if(D[207][j].charCodeAt(0) !== 0xFFFD) { e[D[207][j]] = 52992 + j; d[52992 + j] = D[207][j];} +D[208] = "���������������������������������嫶嬃嫸嬂嫹嬁嬇嬅嬏屧嶙嶗嶟嶒嶢嶓嶕嶠嶜嶡嶚嶞幩幝幠幜緳廛廞廡彉徲憋憃慹憱憰憢憉憛憓憯憭憟憒憪憡憍慦憳戭摮摰撖撠撅撗撜撏撋撊撌撣撟摨撱撘敶敺敹敻斲斳暵暰暩暲暷暪暯樀樆樗槥槸樕槱槤樠槿槬槢樛樝����������������������������������侷兗冒冑冠剎剃削前剌剋則勇勉勃勁匍南卻厚叛咬哀咨哎哉咸咦咳哇哂咽咪品哄哈咯咫咱咻咩咧咿囿垂型垠垣垢城垮垓奕契奏奎奐姜姘姿姣姨娃姥姪姚姦威姻孩宣宦室客宥封屎屏屍屋峙峒巷帝帥帟幽庠度建弈弭彥很�".split(""); +for(j = 0; j != D[208].length; ++j) if(D[208][j].charCodeAt(0) !== 0xFFFD) { e[D[208][j]] = 53248 + j; d[53248 + j] = D[208][j];} +D[209] = "���������������������������������槾樧槲槮樔槷槧橀樈槦槻樍槼槫樉樄樘樥樏槶樦樇槴樖歑殥殣殢殦氁氀毿氂潁漦潾澇濆澒澍澉澌潢潏澅潚澖潶潬澂潕潲潒潐潗澔澓潝漀潡潫潽潧澐潓澋潩潿澕潣潷潪潻熲熯熛熰熠熚熩熵熝熥熞熤熡熪熜熧熳犘犚獘獒����������������������������������待徊律徇後徉怒思怠急怎怨恍恰恨恢恆恃恬恫恪恤扁拜挖按拼拭持拮拽指拱拷拯括拾拴挑挂政故斫施既春昭映昧是星昨昱昤曷柿染柱柔某柬架枯柵柩柯柄柑枴柚查枸柏柞柳枰柙柢柝柒歪殃殆段毒毗氟泉洋洲洪流津洌�".split(""); +for(j = 0; j != D[209].length; ++j) if(D[209][j].charCodeAt(0) !== 0xFFFD) { e[D[209][j]] = 53504 + j; d[53504 + j] = D[209][j];} +D[210] = "���������������������������������獞獟獠獝獛獡獚獙獢璇璉璊璆璁瑽璅璈瑼瑹甈甇畾瘥瘞瘙瘝瘜瘣瘚瘨瘛皜皝皞皛瞍瞏瞉瞈磍碻磏磌磑磎磔磈磃磄磉禚禡禠禜禢禛歶稹窲窴窳箷篋箾箬篎箯箹篊箵糅糈糌糋緷緛緪緧緗緡縃緺緦緶緱緰緮緟罶羬羰羭翭翫����������������������������������洱洞洗活洽派洶洛泵洹洧洸洩洮洵洎洫炫為炳炬炯炭炸炮炤爰牲牯牴狩狠狡玷珊玻玲珍珀玳甚甭畏界畎畋疫疤疥疢疣癸皆皇皈盈盆盃盅省盹相眉看盾盼眇矜砂研砌砍祆祉祈祇禹禺科秒秋穿突竿竽籽紂紅紀紉紇約紆缸�".split(""); +for(j = 0; j != D[210].length; ++j) if(D[210][j].charCodeAt(0) !== 0xFFFD) { e[D[210][j]] = 53760 + j; d[53760 + j] = D[210][j];} +D[211] = "���������������������������������翪翬翦翨聤聧膣膟膞膕膢膙膗舖艏艓艒艐艎艑蔤蔻蔏蔀蔩蔎蔉蔍蔟蔊蔧蔜蓻蔫蓺蔈蔌蓴蔪蓲蔕蓷蓫蓳蓼蔒蓪蓩蔖蓾蔨蔝蔮蔂蓽蔞蓶蔱蔦蓧蓨蓰蓯蓹蔘蔠蔰蔋蔙蔯虢蝖蝣蝤蝷蟡蝳蝘蝔蝛蝒蝡蝚蝑蝞蝭蝪蝐蝎蝟蝝蝯蝬蝺����������������������������������美羿耐耍耑耶胖胥胚胃胄背胡胛胎胞胤胝致舢苧范茅苣苛苦茄若茂茉苒苗英茁苜苔苑苞苓苟苯茆虐虹虻虺衍衫要觔計訂訃貞負赴赳趴軍軌述迦迢迪迥迭迫迤迨郊郎郁郃酋酊重閂限陋陌降面革韋韭音頁風飛食首香乘亳�".split(""); +for(j = 0; j != D[211].length; ++j) if(D[211][j].charCodeAt(0) !== 0xFFFD) { e[D[211][j]] = 54016 + j; d[54016 + j] = D[211][j];} +D[212] = "���������������������������������蝮蝜蝥蝏蝻蝵蝢蝧蝩衚褅褌褔褋褗褘褙褆褖褑褎褉覢覤覣觭觰觬諏諆誸諓諑諔諕誻諗誾諀諅諘諃誺誽諙谾豍貏賥賟賙賨賚賝賧趠趜趡趛踠踣踥踤踮踕踛踖踑踙踦踧踔踒踘踓踜踗踚輬輤輘輚輠輣輖輗遳遰遯遧遫鄯鄫鄩����������������������������������倌倍倣俯倦倥俸倩倖倆值借倚倒們俺倀倔倨俱倡個候倘俳修倭倪俾倫倉兼冤冥冢凍凌准凋剖剜剔剛剝匪卿原厝叟哨唐唁唷哼哥哲唆哺唔哩哭員唉哮哪哦唧唇哽唏圃圄埂埔埋埃堉夏套奘奚娑娘娜娟娛娓姬娠娣娩娥娌娉�".split(""); +for(j = 0; j != D[212].length; ++j) if(D[212][j].charCodeAt(0) !== 0xFFFD) { e[D[212][j]] = 54272 + j; d[54272 + j] = D[212][j];} +D[213] = "���������������������������������鄪鄲鄦鄮醅醆醊醁醂醄醀鋐鋃鋄鋀鋙銶鋏鋱鋟鋘鋩鋗鋝鋌鋯鋂鋨鋊鋈鋎鋦鋍鋕鋉鋠鋞鋧鋑鋓銵鋡錥鋆銴镼閬閫閮閰隤隢雓霅霈霂靚鞊鞎鞈韐韏頞頝頦頩頨頠頛頧颲餈飺餑餔餖餗餕駜駍駏駓駔駎駉駖駘駋駗駌骳髬髫髳����������������������������������孫屘宰害家宴宮宵容宸射屑展屐峭峽峻峪峨峰島崁峴差席師庫庭座弱徒徑徐恙恣恥恐恕恭恩息悄悟悚悍悔悌悅悖扇拳挈拿捎挾振捕捂捆捏捉挺捐挽挪挫挨捍捌效敉料旁旅時晉晏晃晒晌晅晁書朔朕朗校核案框桓根桂桔�".split(""); +for(j = 0; j != D[213].length; ++j) if(D[213][j].charCodeAt(0) !== 0xFFFD) { e[D[213][j]] = 54528 + j; d[54528 + j] = D[213][j];} +D[214] = "���������������������������������髲髱魆魃魧魴魱魦魶魵魰魨魤魬鳼鳺鳽鳿鳷鴇鴀鳹鳻鴈鴅鴄麃黓鼏鼐儜儓儗儚儑凞匴叡噰噠噮噳噦噣噭噲噞噷圜圛壈墽壉墿墺壂墼壆嬗嬙嬛嬡嬔嬓嬐嬖嬨嬚嬠嬞寯嶬嶱嶩嶧嶵嶰嶮嶪嶨嶲嶭嶯嶴幧幨幦幯廩廧廦廨廥彋����������������������������������栩梳栗桌桑栽柴桐桀格桃株桅栓栘桁殊殉殷氣氧氨氦氤泰浪涕消涇浦浸海浙涓浬涉浮浚浴浩涌涊浹涅浥涔烊烘烤烙烈烏爹特狼狹狽狸狷玆班琉珮珠珪珞畔畝畜畚留疾病症疲疳疽疼疹痂疸皋皰益盍盎眩真眠眨矩砰砧砸�".split(""); +for(j = 0; j != D[214].length; ++j) if(D[214][j].charCodeAt(0) !== 0xFFFD) { e[D[214][j]] = 54784 + j; d[54784 + j] = D[214][j];} +D[215] = "���������������������������������徼徻憝憨憖懅憴懆懁懌憺憿憸憌擗擖擐擏擉撽撉擃擛擳擙攳敿敼斢曈暾曀曊曋曏暽暻暺曌朣樴橦橉橧樲橨樾橝橭橶橛橑樨橚樻樿橁橪橤橐橏橔橯橩橠樼橞橖橕橍橎橆歕歔歖殧殪殫毈毇氄氃氆澭濋澣濇澼濎濈潞濄澽澞����������������������������������砝破砷砥砭砠砟砲祕祐祠祟祖神祝祗祚秤秣秧租秦秩秘窄窈站笆笑粉紡紗紋紊素索純紐紕級紜納紙紛缺罟羔翅翁耆耄耘耕耙耗耽耿胱脂胰脅胭胴脆胸胳脈能脊胼胯臭臬舀舐航舫舨般芻茫荒荔荊茸荐草茵茴荏茲茹茶茗�".split(""); +for(j = 0; j != D[215].length; ++j) if(D[215][j].charCodeAt(0) !== 0xFFFD) { e[D[215][j]] = 55040 + j; d[55040 + j] = D[215][j];} +D[216] = "���������������������������������濊澨瀄澥澮澺澬澪濏澿澸澢濉澫濍澯澲澰燅燂熿熸燖燀燁燋燔燊燇燏熽燘熼燆燚燛犝犞獩獦獧獬獥獫獪瑿璚璠璔璒璕璡甋疀瘯瘭瘱瘽瘳瘼瘵瘲瘰皻盦瞚瞝瞡瞜瞛瞢瞣瞕瞙瞗磝磩磥磪磞磣磛磡磢磭磟磠禤穄穈穇窶窸窵����������������������������������荀茱茨荃虔蚊蚪蚓蚤蚩蚌蚣蚜衰衷袁袂衽衹記訐討訌訕訊託訓訖訏訑豈豺豹財貢起躬軒軔軏辱送逆迷退迺迴逃追逅迸邕郡郝郢酒配酌釘針釗釜釙閃院陣陡陛陝除陘陞隻飢馬骨高鬥鬲鬼乾偺偽停假偃偌做偉健偶偎偕偵�".split(""); +for(j = 0; j != D[216].length; ++j) if(D[216][j].charCodeAt(0) !== 0xFFFD) { e[D[216][j]] = 55296 + j; d[55296 + j] = D[216][j];} +D[217] = "���������������������������������窱窷篞篣篧篝篕篥篚篨篹篔篪篢篜篫篘篟糒糔糗糐糑縒縡縗縌縟縠縓縎縜縕縚縢縋縏縖縍縔縥縤罃罻罼罺羱翯耪耩聬膱膦膮膹膵膫膰膬膴膲膷膧臲艕艖艗蕖蕅蕫蕍蕓蕡蕘蕀蕆蕤蕁蕢蕄蕑蕇蕣蔾蕛蕱蕎蕮蕵蕕蕧蕠薌蕦����������������������������������側偷偏倏偯偭兜冕凰剪副勒務勘動匐匏匙匿區匾參曼商啪啦啄啞啡啃啊唱啖問啕唯啤唸售啜唬啣唳啁啗圈國圉域堅堊堆埠埤基堂堵執培夠奢娶婁婉婦婪婀娼婢婚婆婊孰寇寅寄寂宿密尉專將屠屜屝崇崆崎崛崖崢崑崩崔�".split(""); +for(j = 0; j != D[217].length; ++j) if(D[217][j].charCodeAt(0) !== 0xFFFD) { e[D[217][j]] = 55552 + j; d[55552 + j] = D[217][j];} +D[218] = "���������������������������������蕝蕔蕥蕬虣虥虤螤螛螏螗螓螒螈螁螖螘蝹螇螣螅螐螑螝螄螔螜螚螉褞褦褰褭褮褧褱褢褩褣褯褬褟觱諠諢諲諴諵諝謔諤諟諰諈諞諡諨諿諯諻貑貒貐賵賮賱賰賳赬赮趥趧踳踾踸蹀蹅踶踼踽蹁踰踿躽輶輮輵輲輹輷輴遶遹遻����������������������������������崙崤崧崗巢常帶帳帷康庸庶庵庾張強彗彬彩彫得徙從徘御徠徜恿患悉悠您惋悴惦悽情悻悵惜悼惘惕惆惟悸惚惇戚戛扈掠控捲掖探接捷捧掘措捱掩掉掃掛捫推掄授掙採掬排掏掀捻捩捨捺敝敖救教敗啟敏敘敕敔斜斛斬族�".split(""); +for(j = 0; j != D[218].length; ++j) if(D[218][j].charCodeAt(0) !== 0xFFFD) { e[D[218][j]] = 55808 + j; d[55808 + j] = D[218][j];} +D[219] = "���������������������������������邆郺鄳鄵鄶醓醐醑醍醏錧錞錈錟錆錏鍺錸錼錛錣錒錁鍆錭錎錍鋋錝鋺錓鋹鋷錴錂錤鋿錩錹錵錪錔錌錋鋾錉錀鋻錖閼闍閾閹閺閶閿閵閽隩雔霋霒霐鞙鞗鞔韰韸頵頯頲餤餟餧餩馞駮駬駥駤駰駣駪駩駧骹骿骴骻髶髺髹髷鬳����������������������������������旋旌旎晝晚晤晨晦晞曹勗望梁梯梢梓梵桿桶梱梧梗械梃棄梭梆梅梔條梨梟梡梂欲殺毫毬氫涎涼淳淙液淡淌淤添淺清淇淋涯淑涮淞淹涸混淵淅淒渚涵淚淫淘淪深淮淨淆淄涪淬涿淦烹焉焊烽烯爽牽犁猜猛猖猓猙率琅琊球�".split(""); +for(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];} +D[220] = "���������������������������������鮀鮅鮇魼魾魻鮂鮓鮒鮐魺鮕魽鮈鴥鴗鴠鴞鴔鴩鴝鴘鴢鴐鴙鴟麈麆麇麮麭黕黖黺鼒鼽儦儥儢儤儠儩勴嚓嚌嚍嚆嚄嚃噾嚂噿嚁壖壔壏壒嬭嬥嬲嬣嬬嬧嬦嬯嬮孻寱寲嶷幬幪徾懃憵憼懧懠懥懤懨懞擯擩擣擫擤擨斁斀斶旚曒檍����������������������������������理現琍瓠瓶瓷甜產略畦畢異疏痔痕疵痊痍皎盔盒盛眷眾眼眶眸眺硫硃硎祥票祭移窒窕笠笨笛第符笙笞笮粒粗粕絆絃統紮紹紼絀細紳組累終紲紱缽羞羚翌翎習耜聊聆脯脖脣脫脩脰脤舂舵舷舶船莎莞莘荸莢莖莽莫莒莊莓�".split(""); +for(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];} +D[221] = "���������������������������������檖檁檥檉檟檛檡檞檇檓檎檕檃檨檤檑橿檦檚檅檌檒歛殭氉濌澩濴濔濣濜濭濧濦濞濲濝濢濨燡燱燨燲燤燰燢獳獮獯璗璲璫璐璪璭璱璥璯甐甑甒甏疄癃癈癉癇皤盩瞵瞫瞲瞷瞶瞴瞱瞨矰磳磽礂磻磼磿磲礅磹磾礄禫禨穜穛穖����������������������������������莉莠荷荻荼莆莧處彪蛇蛀蚶蛄蚵蛆蛋蚱蚯蛉術袞袈被袒袖袍袋覓規訪訝訣訥許設訟訛訢豉豚販責貫貨貪貧赧赦趾趺軛軟這逍通逗連速逝逐逕逞造透逢逖逛途部郭都酗野釵釦釣釧釭釩閉陪陵陳陸陰陴陶陷陬雀雪雩章竟�".split(""); +for(j = 0; j != D[221].length; ++j) if(D[221][j].charCodeAt(0) !== 0xFFFD) { e[D[221][j]] = 56576 + j; d[56576 + j] = D[221][j];} +D[222] = "���������������������������������穘穔穚窾竀竁簅簏篲簀篿篻簎篴簋篳簂簉簃簁篸篽簆篰篱簐簊糨縭縼繂縳顈縸縪繉繀繇縩繌縰縻縶繄縺罅罿罾罽翴翲耬膻臄臌臊臅臇膼臩艛艚艜薃薀薏薧薕薠薋薣蕻薤薚薞蕷蕼薉薡蕺蕸蕗薎薖薆薍薙薝薁薢薂薈薅蕹����������������������������������頂頃魚鳥鹵鹿麥麻傢傍傅備傑傀傖傘傚最凱割剴創剩勞勝勛博厥啻喀喧啼喊喝喘喂喜喪喔喇喋喃喳單喟唾喲喚喻喬喱啾喉喫喙圍堯堪場堤堰報堡堝堠壹壺奠婷媚婿媒媛媧孳孱寒富寓寐尊尋就嵌嵐崴嵇巽幅帽幀幃幾廊�".split(""); +for(j = 0; j != D[222].length; ++j) if(D[222][j].charCodeAt(0) !== 0xFFFD) { e[D[222][j]] = 56832 + j; d[56832 + j] = D[222][j];} +D[223] = "���������������������������������蕶薘薐薟虨螾螪螭蟅螰螬螹螵螼螮蟉蟃蟂蟌螷螯蟄蟊螴螶螿螸螽蟞螲褵褳褼褾襁襒褷襂覭覯覮觲觳謞謘謖謑謅謋謢謏謒謕謇謍謈謆謜謓謚豏豰豲豱豯貕貔賹赯蹎蹍蹓蹐蹌蹇轃轀邅遾鄸醚醢醛醙醟醡醝醠鎡鎃鎯鍤鍖鍇����������������������������������廁廂廄弼彭復循徨惑惡悲悶惠愜愣惺愕惰惻惴慨惱愎惶愉愀愒戟扉掣掌描揀揩揉揆揍插揣提握揖揭揮捶援揪換摒揚揹敞敦敢散斑斐斯普晰晴晶景暑智晾晷曾替期朝棺棕棠棘棗椅棟棵森棧棹棒棲棣棋棍植椒椎棉棚楮棻�".split(""); +for(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];} +D[224] = "���������������������������������鍼鍘鍜鍶鍉鍐鍑鍠鍭鎏鍌鍪鍹鍗鍕鍒鍏鍱鍷鍻鍡鍞鍣鍧鍎鍙闇闀闉闃闅閷隮隰隬霠霟霘霝霙鞚鞡鞜鞞鞝韕韔韱顁顄顊顉顅顃餥餫餬餪餳餲餯餭餱餰馘馣馡騂駺駴駷駹駸駶駻駽駾駼騃骾髾髽鬁髼魈鮚鮨鮞鮛鮦鮡鮥鮤鮆����������������������������������款欺欽殘殖殼毯氮氯氬港游湔渡渲湧湊渠渥渣減湛湘渤湖湮渭渦湯渴湍渺測湃渝渾滋溉渙湎湣湄湲湩湟焙焚焦焰無然煮焜牌犄犀猶猥猴猩琺琪琳琢琥琵琶琴琯琛琦琨甥甦畫番痢痛痣痙痘痞痠登發皖皓皴盜睏短硝硬硯�".split(""); +for(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];} +D[225] = "���������������������������������鮢鮠鮯鴳鵁鵧鴶鴮鴯鴱鴸鴰鵅鵂鵃鴾鴷鵀鴽翵鴭麊麉麍麰黈黚黻黿鼤鼣鼢齔龠儱儭儮嚘嚜嚗嚚嚝嚙奰嬼屩屪巀幭幮懘懟懭懮懱懪懰懫懖懩擿攄擽擸攁攃擼斔旛曚曛曘櫅檹檽櫡櫆檺檶檷櫇檴檭歞毉氋瀇瀌瀍瀁瀅瀔瀎濿����������������������������������稍稈程稅稀窘窗窖童竣等策筆筐筒答筍筋筏筑粟粥絞結絨絕紫絮絲絡給絢絰絳善翔翕耋聒肅腕腔腋腑腎脹腆脾腌腓腴舒舜菩萃菸萍菠菅萋菁華菱菴著萊菰萌菌菽菲菊萸萎萄菜萇菔菟虛蛟蛙蛭蛔蛛蛤蛐蛞街裁裂袱覃視�".split(""); +for(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];} +D[226] = "���������������������������������瀀濻瀦濼濷瀊爁燿燹爃燽獶璸瓀璵瓁璾璶璻瓂甔甓癜癤癙癐癓癗癚皦皽盬矂瞺礌礓礔礉礐礒礑禭禬穟簜簩簙簠簟簭簝簦簨簢簥簰繜繐繖繣繘繢繟繑繠繗繓羵羳翷翸聵臑臒臐艟艞薴藆藀藃藂薳薵薽藇藄薿藋藎藈藅薱薶����������������������������������註詠評詞証詁詔詛詐詆訴診訶詖象貂貯貼貳貽賁費賀貴買貶貿貸越超趁跎距跋跚跑跌跛跆軻軸軼辜逮逵週逸進逶鄂郵鄉郾酣酥量鈔鈕鈣鈉鈞鈍鈐鈇鈑閔閏開閑間閒閎隊階隋陽隅隆隍陲隄雁雅雄集雇雯雲韌項順須飧飪�".split(""); +for(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];} +D[227] = "���������������������������������藒蘤薸薷薾虩蟧蟦蟢蟛蟫蟪蟥蟟蟳蟤蟔蟜蟓蟭蟘蟣蟗蟙蠁蟴蟨蟝襓襋襏襌襆襐襑襉謪謧謣謳謰謵譇謯謼謾謱謥謷謦謶謮謤謻謽謺豂豵貙貘貗賾贄贂贀蹜蹢蹠蹗蹖蹞蹥蹧蹛蹚蹡蹝蹩蹔轆轇轈轋鄨鄺鄻鄾醨醥醧醯醪鎵鎌����������������������������������飯飩飲飭馮馭黃黍黑亂傭債傲傳僅傾催傷傻傯僇剿剷剽募勦勤勢勣匯嗟嗨嗓嗦嗎嗜嗇嗑嗣嗤嗯嗚嗡嗅嗆嗥嗉園圓塞塑塘塗塚塔填塌塭塊塢塒塋奧嫁嫉嫌媾媽媼媳嫂媲嵩嵯幌幹廉廈弒彙徬微愚意慈感想愛惹愁愈慎慌慄�".split(""); +for(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];} +D[228] = "���������������������������������鎒鎷鎛鎝鎉鎧鎎鎪鎞鎦鎕鎈鎙鎟鎀鎍鎱鎑鎲鎤鎨鎴鎣闒闓闑隳雗雚巂雟雘雝霣霢霥鞬鞮鞨鞫鞤鞪鞢鞥韗韙韖韘韺顐顑顒颸饁餼餺騏騋騉騍騄騑騊騅騇騆髀髜鬈鬄鬅鬩鬵魊魌魋鯇鯆鯃鮿鯁鮵鮸鯓鮶鯄鮹鮽鵜鵓鵏鵊鵛鵋����������������������������������慍愾愴愧愍愆愷戡戢搓搾搞搪搭搽搬搏搜搔損搶搖搗搆敬斟新暗暉暇暈暖暄暘暍會榔業楚楷楠楔極椰概楊楨楫楞楓楹榆楝楣楛歇歲毀殿毓毽溢溯滓溶滂源溝滇滅溥溘溼溺溫滑準溜滄滔溪溧溴煎煙煩煤煉照煜煬煦煌煥�".split(""); +for(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];} +D[229] = "���������������������������������鵙鵖鵌鵗鵒鵔鵟鵘鵚麎麌黟鼁鼀鼖鼥鼫鼪鼩鼨齌齕儴儵劖勷厴嚫嚭嚦嚧嚪嚬壚壝壛夒嬽嬾嬿巃幰徿懻攇攐攍攉攌攎斄旞旝曞櫧櫠櫌櫑櫙櫋櫟櫜櫐櫫櫏櫍櫞歠殰氌瀙瀧瀠瀖瀫瀡瀢瀣瀩瀗瀤瀜爌爊爇爂爅犥犦犤犣犡瓋瓅����������������������������������煞煆煨煖爺牒猷獅猿猾瑯瑚瑕瑟瑞瑁琿瑙瑛瑜當畸瘀痰瘁痲痱痺痿痴痳盞盟睛睫睦睞督睹睪睬睜睥睨睢矮碎碰碗碘碌碉硼碑碓硿祺祿禁萬禽稜稚稠稔稟稞窟窠筷節筠筮筧粱粳粵經絹綑綁綏絛置罩罪署義羨群聖聘肆肄�".split(""); +for(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];} +D[230] = "���������������������������������璷瓃甖癠矉矊矄矱礝礛礡礜礗礞禰穧穨簳簼簹簬簻糬糪繶繵繸繰繷繯繺繲繴繨罋罊羃羆羷翽翾聸臗臕舋艤艡艣藫藱藭藙藡藨藚藗藬藲藸藘藟藣藜藑藰藦藯藞藢蠀蟺蠃蟶蟷蠉蠌蠋蠆蟼蠈蟿蠊蠂襢襚襛襗襡襜襘襝襙覈覷����������������������������������腱腰腸腥腮腳腫腹腺腦舅艇蒂葷落萱葵葦葫葉葬葛萼萵葡董葩葭葆虞虜號蛹蜓蜈蜇蜀蛾蛻蜂蜃蜆蜊衙裟裔裙補裘裝裡裊裕裒覜解詫該詳試詩詰誇詼詣誠話誅詭詢詮詬詹詻訾詨豢貊貉賊資賈賄貲賃賂賅跡跟跨路跳跺跪�".split(""); +for(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];} +D[231] = "���������������������������������覶觶譐譈譊譀譓譖譔譋譕譑譂譒譗豃豷豶貚贆贇贉趬趪趭趫蹭蹸蹳蹪蹯蹻軂轒轑轏轐轓辴酀鄿醰醭鏞鏇鏏鏂鏚鏐鏹鏬鏌鏙鎩鏦鏊鏔鏮鏣鏕鏄鏎鏀鏒鎥鏧镽闚闛雡霩霫霬霨霦鞳鞷鞶韝韞韟顜顙顝顗颿颽颻颾饈饇饃馦馧����������������������������������跤跦躲較載軾輊辟農運遊道遂達逼違遐遇遏過遍遑逾遁鄒鄗酬酪酩釉鈷鉗鈸鈽鉀鈾鉛鉋鉤鉑鈴鉉鉍鉅鈹鈿鉚閘隘隔隕雍雋雉雊雷電雹零靖靴靶預頑頓頊頒頌飼飴飽飾馳馱馴髡鳩麂鼎鼓鼠僧僮僥僖僭僚僕像僑僱僎僩兢�".split(""); +for(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];} +D[232] = "���������������������������������騚騕騥騝騤騛騢騠騧騣騞騜騔髂鬋鬊鬎鬌鬷鯪鯫鯠鯞鯤鯦鯢鯰鯔鯗鯬鯜鯙鯥鯕鯡鯚鵷鶁鶊鶄鶈鵱鶀鵸鶆鶋鶌鵽鵫鵴鵵鵰鵩鶅鵳鵻鶂鵯鵹鵿鶇鵨麔麑黀黼鼭齀齁齍齖齗齘匷嚲嚵嚳壣孅巆巇廮廯忀忁懹攗攖攕攓旟曨曣曤����������������������������������凳劃劂匱厭嗾嘀嘛嘗嗽嘔嘆嘉嘍嘎嗷嘖嘟嘈嘐嗶團圖塵塾境墓墊塹墅塽壽夥夢夤奪奩嫡嫦嫩嫗嫖嫘嫣孵寞寧寡寥實寨寢寤察對屢嶄嶇幛幣幕幗幔廓廖弊彆彰徹慇愿態慷慢慣慟慚慘慵截撇摘摔撤摸摟摺摑摧搴摭摻敲斡�".split(""); +for(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];} +D[233] = "���������������������������������櫳櫰櫪櫨櫹櫱櫮櫯瀼瀵瀯瀷瀴瀱灂瀸瀿瀺瀹瀪灀瀻瀳灁爓爔犨獽獼璺皫皪皾盭矌矎矏矍矲礥礣礧礨礤礩禲穮穬穭竷籉籈籊籇籅糮繻繾纁纀羺翿聹臛臙艨艩蘢藿蘁藾蘛蘀藶蘄蘉蘅蘌藽蠙蠐蠑蠗蠓蠖襣襦覹觷譠譪譝譨譣����������������������������������旗旖暢暨暝榜榨榕槁榮槓構榛榷榻榫榴槐槍榭槌榦槃榣歉歌氳漳演滾漓滴漩漾漠漬漏漂漢滿滯漆漱漸漲漣漕漫漯澈漪滬漁滲滌滷熔熙煽熊熄熒爾犒犖獄獐瑤瑣瑪瑰瑭甄疑瘧瘍瘋瘉瘓盡監瞄睽睿睡磁碟碧碳碩碣禎福禍�".split(""); +for(j = 0; j != D[233].length; ++j) if(D[233][j].charCodeAt(0) !== 0xFFFD) { e[D[233][j]] = 59648 + j; d[59648 + j] = D[233][j];} +D[234] = "���������������������������������譥譧譭趮躆躈躄轙轖轗轕轘轚邍酃酁醷醵醲醳鐋鐓鏻鐠鐏鐔鏾鐕鐐鐨鐙鐍鏵鐀鏷鐇鐎鐖鐒鏺鐉鏸鐼鐊鏿鏼鐌鏶鐑鐆闞闠闟霮霯鞹鞻韽韾顠顢顣顟飁飂饐饎饙饌饋饓騲騴騱騬騪騶騩騮騸騭髇髊髆鬐鬒鬑鰋鰈鯷鰅鰒鯸鱀����������������������������������種稱窪窩竭端管箕箋筵算箝箔箏箸箇箄粹粽精綻綰綜綽綾綠緊綴網綱綺綢綿綵綸維緒緇綬罰翠翡翟聞聚肇腐膀膏膈膊腿膂臧臺與舔舞艋蓉蒿蓆蓄蒙蒞蒲蒜蓋蒸蓀蓓蒐蒼蓑蓊蜿蜜蜻蜢蜥蜴蜘蝕蜷蜩裳褂裴裹裸製裨褚裯�".split(""); +for(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];} +D[235] = "���������������������������������鰇鰎鰆鰗鰔鰉鶟鶙鶤鶝鶒鶘鶐鶛鶠鶔鶜鶪鶗鶡鶚鶢鶨鶞鶣鶿鶩鶖鶦鶧麙麛麚黥黤黧黦鼰鼮齛齠齞齝齙龑儺儹劘劗囃嚽嚾孈孇巋巏廱懽攛欂櫼欃櫸欀灃灄灊灈灉灅灆爝爚爙獾甗癪矐礭礱礯籔籓糲纊纇纈纋纆纍罍羻耰臝����������������������������������誦誌語誣認誡誓誤說誥誨誘誑誚誧豪貍貌賓賑賒赫趙趕跼輔輒輕輓辣遠遘遜遣遙遞遢遝遛鄙鄘鄞酵酸酷酴鉸銬銀銅銘銖鉻銓銜銨鉼銑閡閨閩閣閥閤隙障際雌雒需靼鞅韶頗領颯颱餃餅餌餉駁骯骰髦魁魂鳴鳶鳳麼鼻齊億�".split(""); +for(j = 0; j != D[235].length; ++j) if(D[235][j].charCodeAt(0) !== 0xFFFD) { e[D[235][j]] = 60160 + j; d[60160 + j] = D[235][j];} +D[236] = "���������������������������������蘘蘪蘦蘟蘣蘜蘙蘧蘮蘡蘠蘩蘞蘥蠩蠝蠛蠠蠤蠜蠫衊襭襩襮襫觺譹譸譅譺譻贐贔趯躎躌轞轛轝酆酄酅醹鐿鐻鐶鐩鐽鐰鐹鐪鐷鐬鑀鐱闥闤闣霵霺鞿韡顤飉飆飀饘饖騹騽驆驄驂驁騺騿髍鬕鬗鬘鬖鬺魒鰫鰝鰜鰬鰣鰨鰩鰤鰡鶷����������������������������������儀僻僵價儂儈儉儅凜劇劈劉劍劊勰厲嘮嘻嘹嘲嘿嘴嘩噓噎噗噴嘶嘯嘰墀墟增墳墜墮墩墦奭嬉嫻嬋嫵嬌嬈寮寬審寫層履嶝嶔幢幟幡廢廚廟廝廣廠彈影德徵慶慧慮慝慕憂慼慰慫慾憧憐憫憎憬憚憤憔憮戮摩摯摹撞撲撈撐撰�".split(""); +for(j = 0; j != D[236].length; ++j) if(D[236][j].charCodeAt(0) !== 0xFFFD) { e[D[236][j]] = 60416 + j; d[60416 + j] = D[236][j];} +D[237] = "���������������������������������鶶鶼鷁鷇鷊鷏鶾鷅鷃鶻鶵鷎鶹鶺鶬鷈鶱鶭鷌鶳鷍鶲鹺麜黫黮黭鼛鼘鼚鼱齎齥齤龒亹囆囅囋奱孋孌巕巑廲攡攠攦攢欋欈欉氍灕灖灗灒爞爟犩獿瓘瓕瓙瓗癭皭礵禴穰穱籗籜籙籛籚糴糱纑罏羇臞艫蘴蘵蘳蘬蘲蘶蠬蠨蠦蠪蠥����������������������������������撥撓撕撩撒撮播撫撚撬撙撢撳敵敷數暮暫暴暱樣樟槨樁樞標槽模樓樊槳樂樅槭樑歐歎殤毅毆漿潼澄潑潦潔澆潭潛潸潮澎潺潰潤澗潘滕潯潠潟熟熬熱熨牖犛獎獗瑩璋璃瑾璀畿瘠瘩瘟瘤瘦瘡瘢皚皺盤瞎瞇瞌瞑瞋磋磅確磊�".split(""); +for(j = 0; j != D[237].length; ++j) if(D[237][j].charCodeAt(0) !== 0xFFFD) { e[D[237][j]] = 60672 + j; d[60672 + j] = D[237][j];} +D[238] = "���������������������������������襱覿覾觻譾讄讂讆讅譿贕躕躔躚躒躐躖躗轠轢酇鑌鑐鑊鑋鑏鑇鑅鑈鑉鑆霿韣顪顩飋饔饛驎驓驔驌驏驈驊驉驒驐髐鬙鬫鬻魖魕鱆鱈鰿鱄鰹鰳鱁鰼鰷鰴鰲鰽鰶鷛鷒鷞鷚鷋鷐鷜鷑鷟鷩鷙鷘鷖鷵鷕鷝麶黰鼵鼳鼲齂齫龕龢儽劙����������������������������������碾磕碼磐稿稼穀稽稷稻窯窮箭箱範箴篆篇篁箠篌糊締練緯緻緘緬緝編緣線緞緩綞緙緲緹罵罷羯翩耦膛膜膝膠膚膘蔗蔽蔚蓮蔬蔭蔓蔑蔣蔡蔔蓬蔥蓿蔆螂蝴蝶蝠蝦蝸蝨蝙蝗蝌蝓衛衝褐複褒褓褕褊誼諒談諄誕請諸課諉諂調�".split(""); +for(j = 0; j != D[238].length; ++j) if(D[238][j].charCodeAt(0) !== 0xFFFD) { e[D[238][j]] = 60928 + j; d[60928 + j] = D[238][j];} +D[239] = "���������������������������������壨壧奲孍巘蠯彏戁戃戄攩攥斖曫欑欒欏毊灛灚爢玂玁玃癰矔籧籦纕艬蘺虀蘹蘼蘱蘻蘾蠰蠲蠮蠳襶襴襳觾讌讎讋讈豅贙躘轤轣醼鑢鑕鑝鑗鑞韄韅頀驖驙鬞鬟鬠鱒鱘鱐鱊鱍鱋鱕鱙鱌鱎鷻鷷鷯鷣鷫鷸鷤鷶鷡鷮鷦鷲鷰鷢鷬鷴����������������������������������誰論諍誶誹諛豌豎豬賠賞賦賤賬賭賢賣賜質賡赭趟趣踫踐踝踢踏踩踟踡踞躺輝輛輟輩輦輪輜輞輥適遮遨遭遷鄰鄭鄧鄱醇醉醋醃鋅銻銷鋪鋤鋁銳銼鋒鋇鋰銲閭閱霄霆震霉靠鞍鞋鞏頡頫頜颳養餓餒餘駝駐駟駛駑駕駒駙骷�".split(""); +for(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];} +D[240] = "���������������������������������鷳鷨鷭黂黐黲黳鼆鼜鼸鼷鼶齃齏齱齰齮齯囓囍孎屭攭曭曮欓灟灡灝灠爣瓛瓥矕礸禷禶籪纗羉艭虃蠸蠷蠵衋讔讕躞躟躠躝醾醽釂鑫鑨鑩雥靆靃靇韇韥驞髕魙鱣鱧鱦鱢鱞鱠鸂鷾鸇鸃鸆鸅鸀鸁鸉鷿鷽鸄麠鼞齆齴齵齶囔攮斸����������������������������������髮髯鬧魅魄魷魯鴆鴉鴃麩麾黎墨齒儒儘儔儐儕冀冪凝劑劓勳噙噫噹噩噤噸噪器噥噱噯噬噢噶壁墾壇壅奮嬝嬴學寰導彊憲憑憩憊懍憶憾懊懈戰擅擁擋撻撼據擄擇擂操撿擒擔撾整曆曉暹曄曇暸樽樸樺橙橫橘樹橄橢橡橋橇�".split(""); +for(j = 0; j != D[240].length; ++j) if(D[240][j].charCodeAt(0) !== 0xFFFD) { e[D[240][j]] = 61440 + j; d[61440 + j] = D[240][j];} +D[241] = "���������������������������������欘欙欗欚灢爦犪矘矙礹籩籫糶纚纘纛纙臠臡虆虇虈襹襺襼襻觿讘讙躥躤躣鑮鑭鑯鑱鑳靉顲饟鱨鱮鱭鸋鸍鸐鸏鸒鸑麡黵鼉齇齸齻齺齹圞灦籯蠼趲躦釃鑴鑸鑶鑵驠鬮鱴鱳鱱鱵鸔鸓黶鼊龤灨灥糷虪蠾蠽蠿讞貜躩軉靋顳顴飌����������������������������������樵機橈歙歷氅濂澱澡濃澤濁澧澳激澹澶澦澠澴熾燉燐燒燈燕熹燎燙燜燃燄獨璜璣璘璟璞瓢甌甍瘴瘸瘺盧盥瞠瞞瞟瞥磨磚磬磧禦積穎穆穌穋窺篙簑築篤篛篡篩篦糕糖縊縑縈縛縣縞縝縉縐罹羲翰翱翮耨膳膩膨臻興艘艙蕊�".split(""); +for(j = 0; j != D[241].length; ++j) if(D[241][j].charCodeAt(0) !== 0xFFFD) { e[D[241][j]] = 61696 + j; d[61696 + j] = D[241][j];} +D[242] = "���������������������������������饡馫驤驦驧鬤鸕鸗齈戇欞爧虌躨钂钀钁驩驨鸙虋讟钃鱹麷癵驫鱺鸝灩灪爩麤齾齉龘��������������������������������������������������������������������������������������������蕙蕈蕨蕩蕃蕉蕭蕪蕞螃螟螞螢融衡褪褲褥褫褡親覦諦諺諫諱謀諜諧諮諾謁謂諷諭諳諶諼豫豭貓賴蹄踱踴蹂踹踵輻輯輸輳辨辦遵遴選遲遼遺鄴醒錠錶鋸錳錯錢鋼錫錄錚錐錦錡錕錮錙閻隧隨險雕霎霑霖霍霓霏靛靜靦鞘頰�".split(""); +for(j = 0; j != D[242].length; ++j) if(D[242][j].charCodeAt(0) !== 0xFFFD) { e[D[242][j]] = 61952 + j; d[61952 + j] = D[242][j];} +D[243] = "�������������������������������������������������������������������頸頻頷頭頹頤餐館餞餛餡餚駭駢駱骸骼髻髭鬨鮑鴕鴣鴦鴨鴒鴛默黔龍龜優償儡儲勵嚎嚀嚐嚅嚇嚏壕壓壑壎嬰嬪嬤孺尷屨嶼嶺嶽嶸幫彌徽應懂懇懦懋戲戴擎擊擘擠擰擦擬擱擢擭斂斃曙曖檀檔檄檢檜櫛檣橾檗檐檠歜殮毚�".split(""); +for(j = 0; j != D[243].length; ++j) if(D[243][j].charCodeAt(0) !== 0xFFFD) { e[D[243][j]] = 62208 + j; d[62208 + j] = D[243][j];} +D[244] = "�������������������������������������������������������������������氈濘濱濟濠濛濤濫濯澀濬濡濩濕濮濰燧營燮燦燥燭燬燴燠爵牆獰獲璩環璦璨癆療癌盪瞳瞪瞰瞬瞧瞭矯磷磺磴磯礁禧禪穗窿簇簍篾篷簌篠糠糜糞糢糟糙糝縮績繆縷縲繃縫總縱繅繁縴縹繈縵縿縯罄翳翼聱聲聰聯聳臆臃膺�".split(""); +for(j = 0; j != D[244].length; ++j) if(D[244][j].charCodeAt(0) !== 0xFFFD) { e[D[244][j]] = 62464 + j; d[62464 + j] = D[244][j];} +D[245] = "�������������������������������������������������������������������臂臀膿膽臉膾臨舉艱薪薄蕾薜薑薔薯薛薇薨薊薦虧蟀蟑螳蟒蟆螫螻螺蟈蟋褻褶襄褸褽覬謎謗謙講謊謠謝謄謐豁谿豳賺賽購賸賻趨蹉蹋蹈蹊轄輾轂轅輿避遽還邁邂邀鄹醣醞醜鍍鎂錨鍵鍊鍥鍋錘鍾鍬鍛鍰鍚鍔闊闋闌闈闆�".split(""); +for(j = 0; j != D[245].length; ++j) if(D[245][j].charCodeAt(0) !== 0xFFFD) { e[D[245][j]] = 62720 + j; d[62720 + j] = D[245][j];} +D[246] = "�������������������������������������������������������������������隱隸雖霜霞鞠韓顆颶餵騁駿鮮鮫鮪鮭鴻鴿麋黏點黜黝黛鼾齋叢嚕嚮壙壘嬸彝懣戳擴擲擾攆擺擻擷斷曜朦檳檬櫃檻檸櫂檮檯歟歸殯瀉瀋濾瀆濺瀑瀏燻燼燾燸獷獵璧璿甕癖癘癒瞽瞿瞻瞼礎禮穡穢穠竄竅簫簧簪簞簣簡糧織�".split(""); +for(j = 0; j != D[246].length; ++j) if(D[246][j].charCodeAt(0) !== 0xFFFD) { e[D[246][j]] = 62976 + j; d[62976 + j] = D[246][j];} +D[247] = "�������������������������������������������������������������������繕繞繚繡繒繙罈翹翻職聶臍臏舊藏薩藍藐藉薰薺薹蟯蟬蟲蟠覆覲觴謨謹謬謫豐贅蹙蹣蹦蹤蹟蹕軀轉轍邇邃邈醫醬釐鎔鎊鎖鎢鎳鎮鎬鎰鎘鎚鎗闔闖闐闕離雜雙雛雞霤鞣鞦鞭韹額顏題顎顓颺餾餿餽餮馥騎髁鬃鬆魏魎魍鯊�".split(""); +for(j = 0; j != D[247].length; ++j) if(D[247][j].charCodeAt(0) !== 0xFFFD) { e[D[247][j]] = 63232 + j; d[63232 + j] = D[247][j];} +D[248] = "�������������������������������������������������������������������鯉鯽鯈鯀鵑鵝鵠黠鼕鼬儳嚥嚨壞壟壢寵龐廬懲懷懶懵攀攏曠曝櫥櫝櫚櫓瀛瀟瀨瀚瀝瀕瀘爆爍牘犢獸獺璽瓊瓣疇疆癟癡矇礙禱穫穩簾簿簸簽簷籀繫繭繹繩繪繳羅羶羹羸臘藩藝藪藕藤藥藷蟻蠅蠍蟹蟾襠襟襖襞譁譜識證譚�".split(""); +for(j = 0; j != D[248].length; ++j) if(D[248][j].charCodeAt(0) !== 0xFFFD) { e[D[248][j]] = 63488 + j; d[63488 + j] = D[248][j];} +D[249] = "�������������������������������������������������������������������譎譏譆譙贈贊蹼蹲躇蹶蹬蹺蹴轔轎辭邊邋醱醮鏡鏑鏟鏃鏈鏜鏝鏖鏢鏍鏘鏤鏗鏨關隴難霪霧靡韜韻類願顛颼饅饉騖騙鬍鯨鯧鯖鯛鶉鵡鵲鵪鵬麒麗麓麴勸嚷嚶嚴嚼壤孀孃孽寶巉懸懺攘攔攙曦朧櫬瀾瀰瀲爐獻瓏癢癥礦礪礬�".split(""); +for(j = 0; j != D[249].length; ++j) if(D[249][j].charCodeAt(0) !== 0xFFFD) { e[D[249][j]] = 63744 + j; d[63744 + j] = D[249][j];} +D[250] = "�������������������������������������������������������������������礫竇競籌籃籍糯糰辮繽繼纂罌耀臚艦藻藹蘑藺蘆蘋蘇蘊蠔蠕襤覺觸議譬警譯譟譫贏贍躉躁躅躂醴釋鐘鐃鏽闡霰飄饒饑馨騫騰騷騵鰓鰍鹹麵黨鼯齟齣齡儷儸囁囀囂夔屬巍懼懾攝攜斕曩櫻欄櫺殲灌爛犧瓖瓔癩矓籐纏續羼�".split(""); +for(j = 0; j != D[250].length; ++j) if(D[250][j].charCodeAt(0) !== 0xFFFD) { e[D[250][j]] = 64000 + j; d[64000 + j] = D[250][j];} +D[251] = "�������������������������������������������������������������������蘗蘭蘚蠣蠢蠡蠟襪襬覽譴護譽贓躊躍躋轟辯醺鐮鐳鐵鐺鐸鐲鐫闢霸霹露響顧顥饗驅驃驀騾髏魔魑鰭鰥鶯鶴鷂鶸麝黯鼙齜齦齧儼儻囈囊囉孿巔巒彎懿攤權歡灑灘玀瓤疊癮癬禳籠籟聾聽臟襲襯觼讀贖贗躑躓轡酈鑄鑑鑒霽�".split(""); +for(j = 0; j != D[251].length; ++j) if(D[251][j].charCodeAt(0) !== 0xFFFD) { e[D[251][j]] = 64256 + j; d[64256 + j] = D[251][j];} +D[252] = "�������������������������������������������������������������������霾韃韁顫饕驕驍髒鬚鱉鰱鰾鰻鷓鷗鼴齬齪龔囌巖戀攣攫攪曬欐瓚竊籤籣籥纓纖纔臢蘸蘿蠱變邐邏鑣鑠鑤靨顯饜驚驛驗髓體髑鱔鱗鱖鷥麟黴囑壩攬灞癱癲矗罐羈蠶蠹衢讓讒讖艷贛釀鑪靂靈靄韆顰驟鬢魘鱟鷹鷺鹼鹽鼇齷�".split(""); +for(j = 0; j != D[252].length; ++j) if(D[252][j].charCodeAt(0) !== 0xFFFD) { e[D[252][j]] = 64512 + j; d[64512 + j] = D[252][j];} +D[253] = "�������������������������������������������������������������������齲廳欖灣籬籮蠻觀躡釁鑲鑰顱饞髖鬣黌灤矚讚鑷韉驢驥纜讜躪釅鑽鑾鑼鱷鱸黷豔鑿鸚爨驪鬱鸛鸞籲ソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワ�".split(""); +for(j = 0; j != D[253].length; ++j) if(D[253][j].charCodeAt(0) !== 0xFFFD) { e[D[253][j]] = 64768 + j; d[64768 + j] = D[253][j];} +D[254] = "�������������������������������������������������������������������ヰヱヲンヴヵヶАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдеёжзийклмнопрстуфхцчшщъыьэюя⇧↸↹��䅚ク刂�冈������������".split(""); +for(j = 0; j != D[254].length; ++j) if(D[254][j].charCodeAt(0) !== 0xFFFD) { e[D[254][j]] = 65024 + j; d[65024 + j] = D[254][j];} +return {"enc": e, "dec": d }; })(); diff --git a/node_modules/codepage/bits/20001.js b/node_modules/codepage/bits/20001.js new file mode 100644 index 000000000..2d847e39b --- /dev/null +++ b/node_modules/codepage/bits/20001.js @@ -0,0 +1,217 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[20001] = (function(){ var d = [], e = {}, D = [], j; +D[0] = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€����…†‡ˆ‰Š‹ŒŽ������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];} +D[129] = "������������������������������������������������ ,、。․•;:?!�������︰…‥﹐﹑‧﹒﹔﹕﹖﹗︱–︲—︳_︴﹏()︵︶{}︷������︸〔〕︹︺【】︻︼《》︽︾〈〉︿﹀「」﹁﹂『』﹃﹄﹙�����﹚﹛﹜﹝﹞‘’“”〝〞′‵#&*※§〃○●△▲◎☆★◇◆□■▽▼㊣℅‾ ̄��﹉﹊﹍﹎﹋﹌﹟﹠﹡+-×÷±√<>=≦≧≠∞≒≡﹢﹣﹤﹥﹦∼∩∪⊥∠∟⊿㏒㏑∫∮∵∴♀♂⊕⊙↑↓→←↖↗↙↘∥∣/\�﹨$¥〒¢£%@℃℉﹩﹪﹫㏕㎜㎝㎞㏎㎡㎎㎏㏄゜兙兛兞兝兡兣��".split(""); +for(j = 0; j != D[129].length; ++j) if(D[129][j].charCodeAt(0) !== 0xFFFD) { e[D[129][j]] = 33024 + j; d[33024 + j] = D[129][j];} +D[130] = "������������������������������������������������嗧瓩糎▁▂▃▄▅▆▇�������█▏▎▍▌▋▊▉┼┴┬┤├▔─│▕┌┐└┘╭╮╰╯═������╞╪╡◢◣◥◤╱╲╳¨˄ヽヾゝゞ�〄々〆〇ー[]✽ぁ�����あぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただち0123456789ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩ〡〢〣〤〥〦〧〨〩�卄�ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzΑΒΓΔΕΖΗΘΙΚ��".split(""); +for(j = 0; j != D[130].length; ++j) if(D[130][j].charCodeAt(0) !== 0xFFFD) { e[D[130][j]] = 33280 + j; d[33280 + j] = D[130][j];} +D[131] = "������������������������������������������������ΛΜΝΞΟΠΡΣΤΥ�������ΦΧΨΩαβγδεζηθικλμνξοπρστυφχ������ψωㄅㄆㄇㄈㄉㄊㄋㄌㄍㄎㄏㄐㄑㄒㄓㄔㄕㄖㄗㄘㄙㄚㄛㄜ�����ㄝㄞㄟㄠㄡㄢㄣㄤㄥㄦㄧㄨㄩ˙˟ˊˇˋぢっつづてでとどなにぬねのは①②③④⑤⑥⑦⑧⑨⑩⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽ⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをんァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼ��".split(""); +for(j = 0; j != D[131].length; ++j) if(D[131][j].charCodeAt(0) !== 0xFFFD) { e[D[131][j]] = 33536 + j; d[33536 + j] = D[131][j];} +D[132] = "��������������������������������������������������丶丿�亅�亠�����������冂冖冫����勹��匸��卩�厶�����夂����������宀������巛����幺广廴���彐彡�����������攴����无��������������������������������疒癶��������������������������������������������������������辵��������隶��������������������".split(""); +for(j = 0; j != D[132].length; ++j) if(D[132][j].charCodeAt(0) !== 0xFFFD) { e[D[132][j]] = 33792 + j; d[33792 + j] = D[132][j];} +D[145] = "���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������¬¦��㈱№℡������������������������".split(""); +for(j = 0; j != D[145].length; ++j) if(D[145][j].charCodeAt(0) !== 0xFFFD) { e[D[145][j]] = 37120 + j; d[37120 + j] = D[145][j];} +D[146] = "����������������������������������������������������������������������������������������������������������������������������������������������������������������一乙丁七乃九了二人儿入八几刀刁力匕十卜又三下丈上丫丸凡久么也乞于亡兀刃勺千叉口土士夕大女子孑孓寸小尢尸山川工己已巳巾干廾弋弓才丑丐不中丰丹之尹予云井互五亢仁什仃仆仇仍今介仄元允內六兮公冗凶��".split(""); +for(j = 0; j != D[146].length; ++j) if(D[146][j].charCodeAt(0) !== 0xFFFD) { e[D[146][j]] = 37376 + j; d[37376 + j] = D[146][j];} +D[147] = "������������������������������������������������分切刈勻勾勿化匹午升�������卅卞厄友及反壬天夫太夭孔少尤尺屯巴幻廿弔引心戈戶手扎������支文斗斤方日曰月木欠止歹毋比毛氏水火爪父爻片牙牛犬王�����丙世丕且丘主乍乏乎以付仔仕他仗代令仙仞充兄冉冊冬凹出凸刊加功包匆北匝仟半卉卡占卯卮去可古右召叮叩叨叼司叵叫另只史叱台句叭叻四囚外央失奴奶孕它尼巨巧左市布平幼弁弘弗必戊打扔扒扑斥旦朮本未末札正母民氐永汁汀氾犯玄玉瓜瓦甘生用甩田由甲申疋白皮皿目矛矢石示禾穴��".split(""); +for(j = 0; j != D[147].length; ++j) if(D[147][j].charCodeAt(0) !== 0xFFFD) { e[D[147][j]] = 37632 + j; d[37632 + j] = D[147][j];} +D[148] = "������������������������������������������������立丞丟乒乓乩亙交亦亥�������仿伉伙伊伕伍伐休伏仲件任仰仳份企伋光兇兆先全共再冰列������刑划刎刖劣匈匡匠印危吉吏同吊吐吁吋各向名合吃后吆吒因�����回囝圳地在圭圬圯圩夙多夷夸妄奸妃好她如妁字存宇守宅安寺尖屹州帆并年式弛忙忖戎戌戍成扣扛托收早旨旬旭曲曳有朽朴朱朵次此死氖汝汗汙江池汐汕污汛汍汎灰牟牝百竹米糸缶羊羽老考而耒耳聿肉肋肌臣自至臼舌舛舟艮色艾虫血行衣西阡串亨位住佇佗佞伴佛何估佐佑伽伺伸佃佔似但��".split(""); +for(j = 0; j != D[148].length; ++j) if(D[148][j].charCodeAt(0) !== 0xFFFD) { e[D[148][j]] = 37888 + j; d[37888 + j] = D[148][j];} +D[149] = "������������������������������������������������佣作你伯低伶余佝佈佚�������兌克免兵冶冷別判利刪刨劫助努劬匣即卵吝吭吞吾否呎吧呆������呃吳呈呂君吩告吹吻吸吮吵吶吠吼呀吱含吟听囪困囤囫坊坑�����址坍均坎圾坐坏圻壯夾妝妒妨妞妣妙妖妍妤妓妊妥孝孜孚孛完宋宏尬局屁尿尾岐岑岔岌巫希序庇床廷弄弟彤形彷役忘忌志忍忱快忸忪戒我抄抗抖技扶抉扭把扼找批扳抒扯折扮投抓抑抆改攻攸旱更束李杏材村杜杖杞杉杆杠杓杗步每求汞沙沁沈沉沅沛汪決沐汰沌汨沖沒汽沃汲汾汴沆汶沍沔沘��".split(""); +for(j = 0; j != D[149].length; ++j) if(D[149][j].charCodeAt(0) !== 0xFFFD) { e[D[149][j]] = 38144 + j; d[38144 + j] = D[149][j];} +D[150] = "������������������������������������������������沂灶灼災灸牢牡牠狄狂�������玖甬甫男甸皂盯矣私秀禿究系罕肖肓肝肘肛肚育良芒芋芍見������角言谷豆豕貝赤走足身車辛辰迂迆迅迄巡邑邢邪邦那酉釆里�����防阮阱阪阬並乖乳事些亞享京佯依侍佳使佬供例來侃佰併侈佩佻侖佾侏侑佺兔兒兕兩具其典冽函刻券刷刺到刮制剁劾劻卒協卓卑卦卷卸卹取叔受味呵咖呸咕咀呻呷咄咒咆呼咐呱呶和咚呢周咋命咎固垃坷坪坩坡坦坤坼夜奉奇奈奄奔妾妻委妹妮姑姆姐姍始姓姊妯妳姒姅孟孤季宗定官宜宙宛尚��".split(""); +for(j = 0; j != D[150].length; ++j) if(D[150][j].charCodeAt(0) !== 0xFFFD) { e[D[150][j]] = 38400 + j; d[38400 + j] = D[150][j];} +D[151] = "������������������������������������������������屈居屆岷岡岸岩岫岱岳�������帘帚帖帕帛帑幸庚店府底庖延弦弧弩往征彿彼忝忠忽念忿怏������怔怯怵怖怪怕怡性怩怫怛或戕房戾所承拉拌拄抿拂抹拒招披�����拓拔拋拈抨抽押拐拙拇拍抵拚抱拘拖拗拆抬拎放斧於旺昔易昌昆昂明昀昏昕昊昇服朋杭枋枕東果杳杷枇枝林杯杰板枉松析杵枚枓杼杪杲欣武歧歿氓氛泣注泳沱泌泥河沽沾沼波沫法泓沸泄油況沮泗泅泱沿治泡泛泊沬泯泜泖泠炕炎炒炊炙爬爭爸版牧物狀狎狙狗狐玩玨玟玫玥甽疝疙疚的盂盲直��".split(""); +for(j = 0; j != D[151].length; ++j) if(D[151][j].charCodeAt(0) !== 0xFFFD) { e[D[151][j]] = 38656 + j; d[38656 + j] = D[151][j];} +D[152] = "������������������������������������������������知矽社祀祁秉秈空穹竺�������糾罔羌羋者肺肥肢肱股肫肩肴肪肯臥臾舍芳芝芙芭芽芟芹花������芬芥芯芸芣芰芾芷虎虱初表軋迎返近邵邸邱邶采金長門阜陀�����阿阻附陂隹雨青非亟亭亮信侵侯便俠俑俏保促侶俘俟俊俗侮俐俄係俚俎俞侷兗冒冑冠剎剃削前剌剋則勇勉勃勁匍南卻厚叛咬哀咨哎哉咸咦咳哇哂咽咪品哄哈咯咫咱咻咩咧咿囿垂型垠垣垢城垮垓奕契奏奎奐姜姘姿姣姨娃姥姪姚姦威姻孩宣宦室客宥封屎屏屍屋峙峒巷帝帥帟幽庠度建弈弭彥很��".split(""); +for(j = 0; j != D[152].length; ++j) if(D[152][j].charCodeAt(0) !== 0xFFFD) { e[D[152][j]] = 38912 + j; d[38912 + j] = D[152][j];} +D[153] = "������������������������������������������������待徊律徇後徉怒思怠急�������怎怨恍恰恨恢恆恃恬恫恪恤扁拜挖按拼拭持拮拽指拱拷拯括������拾拴挑挂政故斫施既春昭映昧是星昨昱昤曷柿染柱柔某柬架�����枯柵柩柯柄柑枴柚查枸柏柞柳枰柙柢柝柒歪殃殆段毒毗氟泉洋洲洪流津洌洱洞洗活洽派洶洛泵洹洧洸洩洮洵洎洫炫為炳炬炯炭炸炮炤爰牲牯牴狩狠狡玷珊玻玲珍珀玳甚甭畏界畎畋疫疤疥疢疣癸皆皇皈盈盆盃盅省盹相眉看盾盼眇矜砂研砌砍祆祉祈祇禹禺科秒秋穿突竿竽籽紂紅紀紉紇約紆缸��".split(""); +for(j = 0; j != D[153].length; ++j) if(D[153][j].charCodeAt(0) !== 0xFFFD) { e[D[153][j]] = 39168 + j; d[39168 + j] = D[153][j];} +D[154] = "������������������������������������������������美羿耐耍耑耶胖胥胚胃�������胄背胡胛胎胞胤胝致舢苧范茅苣苛苦茄若茂茉苒苗英茁苜苔������苑苞苓苟苯茆虐虹虻虺衍衫要觔計訂訃貞負赴赳趴軍軌述迦�����迢迪迥迭迫迤迨郊郎郁郃酋酊重閂限陋陌降面革韋韭音頁風飛食首香乘亳倌倍倣俯倦倥俸倩倖倆值借倚倒們俺倀倔倨俱倡個候倘俳修倭倪俾倫倉兼冤冥冢凍凌准凋剖剜剔剛剝匪卿原厝叟哨唐唁唷哼哥哲唆哺唔哩哭員唉哮哪哦唧唇哽唏圃圄埂埔埋埃堉夏套奘奚娑娘娜娟娛娓姬娠娣娩娥娌娉��".split(""); +for(j = 0; j != D[154].length; ++j) if(D[154][j].charCodeAt(0) !== 0xFFFD) { e[D[154][j]] = 39424 + j; d[39424 + j] = D[154][j];} +D[155] = "������������������������������������������������孫屘宰害家宴宮宵容宸�������射屑展屐峭峽峻峪峨峰島崁峴差席師庫庭座弱徒徑徐恙恣恥������恐恕恭恩息悄悟悚悍悔悌悅悖扇拳挈拿捎挾振捕捂捆捏捉挺�����捐挽挪挫挨捍捌效敉料旁旅時晉晏晃晒晌晅晁書朔朕朗校核案框桓根桂桔栩梳栗桌桑栽柴桐桀格桃株桅栓栘桁殊殉殷氣氧氨氦氤泰浪涕消涇浦浸海浙涓浬涉浮浚浴浩涌涊浹涅浥涔烊烘烤烙烈烏爹特狼狹狽狸狷玆班琉珮珠珪珞畔畝畜畚留疾病症疲疳疽疼疹痂疸皋皰益盍盎眩真眠眨矩砰砧砸��".split(""); +for(j = 0; j != D[155].length; ++j) if(D[155][j].charCodeAt(0) !== 0xFFFD) { e[D[155][j]] = 39680 + j; d[39680 + j] = D[155][j];} +D[156] = "������������������������������������������������砝破砷砥砭砠砟砲祕祐�������祠祟祖神祝祗祚秤秣秧租秦秩秘窄窈站笆笑粉紡紗紋紊素索������純紐紕級紜納紙紛缺罟羔翅翁耆耄耘耕耙耗耽耿胱脂胰脅胭�����胴脆胸胳脈能脊胼胯臭臬舀舐航舫舨般芻茫荒荔荊茸荐草茵茴荏茲茹茶茗荀茱茨荃虔蚊蚪蚓蚤蚩蚌蚣蚜衰衷袁袂衽衹記訐討訌訕訊託訓訖訏訑豈豺豹財貢起躬軒軔軏辱送逆迷退迺迴逃追逅迸邕郡郝郢酒配酌釘針釗釜釙閃院陣陡陛陝除陘陞隻飢馬骨高鬥鬲鬼乾偺偽停假偃偌做偉健偶偎偕偵��".split(""); +for(j = 0; j != D[156].length; ++j) if(D[156][j].charCodeAt(0) !== 0xFFFD) { e[D[156][j]] = 39936 + j; d[39936 + j] = D[156][j];} +D[157] = "������������������������������������������������側偷偏倏偯偭兜冕凰剪�������副勒務勘動匐匏匙匿區匾參曼商啪啦啄啞啡啃啊唱啖問啕唯������啤唸售啜唬啣唳啁啗圈國圉域堅堊堆埠埤基堂堵執培夠奢娶�����婁婉婦婪婀娼婢婚婆婊孰寇寅寄寂宿密尉專將屠屜屝崇崆崎崛崖崢崑崩崔崙崤崧崗巢常帶帳帷康庸庶庵庾張強彗彬彩彫得徙從徘御徠徜恿患悉悠您惋悴惦悽情悻悵惜悼惘惕惆惟悸惚惇戚戛扈掠控捲掖探接捷捧掘措捱掩掉掃掛捫推掄授掙採掬排掏掀捻捩捨捺敝敖救教敗啟敏敘敕敔斜斛斬族��".split(""); +for(j = 0; j != D[157].length; ++j) if(D[157][j].charCodeAt(0) !== 0xFFFD) { e[D[157][j]] = 40192 + j; d[40192 + j] = D[157][j];} +D[158] = "������������������������������������������������旋旌旎晝晚晤晨晦晞曹�������勗望梁梯梢梓梵桿桶梱梧梗械梃棄梭梆梅梔條梨梟梡梂欲殺������毫毬氫涎涼淳淙液淡淌淤添淺清淇淋涯淑涮淞淹涸混淵淅淒�����渚涵淚淫淘淪深淮淨淆淄涪淬涿淦烹焉焊烽烯爽牽犁猜猛猖猓猙率琅琊球理現琍瓠瓶瓷甜產略畦畢異疏痔痕疵痊痍皎盔盒盛眷眾眼眶眸眺硫硃硎祥票祭移窒窕笠笨笛第符笙笞笮粒粗粕絆絃統紮紹紼絀細紳組累終紲紱缽羞羚翌翎習耜聊聆脯脖脣脫脩脰脤舂舵舷舶船莎莞莘荸莢莖莽莫莒莊莓��".split(""); +for(j = 0; j != D[158].length; ++j) if(D[158][j].charCodeAt(0) !== 0xFFFD) { e[D[158][j]] = 40448 + j; d[40448 + j] = D[158][j];} +D[159] = "������������������������������������������������莉莠荷荻荼莆莧處彪蛇�������蛀蚶蛄蚵蛆蛋蚱蚯蛉術袞袈被袒袖袍袋覓規訪訝訣訥許設訟������訛訢豉豚販責貫貨貪貧赧赦趾趺軛軟這逍通逗連速逝逐逕逞�����造透逢逖逛途部郭都酗野釵釦釣釧釭釩閉陪陵陳陸陰陴陶陷陬雀雪雩章竟頂頃魚鳥鹵鹿麥麻傢傍傅備傑傀傖傘傚最凱割剴創剩勞勝勛博厥啻喀喧啼喊喝喘喂喜喪喔喇喋喃喳單喟唾喲喚喻喬喱啾喉喫喙圍堯堪場堤堰報堡堝堠壹壺奠婷媚婿媒媛媧孳孱寒富寓寐尊尋就嵌嵐崴嵇巽幅帽幀幃幾廊��".split(""); +for(j = 0; j != D[159].length; ++j) if(D[159][j].charCodeAt(0) !== 0xFFFD) { e[D[159][j]] = 40704 + j; d[40704 + j] = D[159][j];} +D[160] = "������������������������������������������������廁廂廄弼彭復循徨惑惡�������悲悶惠愜愣惺愕惰惻惴慨惱愎惶愉愀愒戟扉掣掌描揀揩揉揆������揍插揣提握揖揭揮捶援揪換摒揚揹敞敦敢散斑斐斯普晰晴晶�����景暑智晾晷曾替期朝棺棕棠棘棗椅棟棵森棧棹棒棲棣棋棍植椒椎棉棚楮棻款欺欽殘殖殼毯氮氯氬港游湔渡渲湧湊渠渥渣減湛湘渤湖湮渭渦湯渴湍渺測湃渝渾滋溉渙湎湣湄湲湩湟焙焚焦焰無然煮焜牌犄犀猶猥猴猩琺琪琳琢琥琵琶琴琯琛琦琨甥甦畫番痢痛痣痙痘痞痠登發皖皓皴盜睏短硝硬硯��".split(""); +for(j = 0; j != D[160].length; ++j) if(D[160][j].charCodeAt(0) !== 0xFFFD) { e[D[160][j]] = 40960 + j; d[40960 + j] = D[160][j];} +D[161] = "������������������������������������������������稍稈程稅稀窘窗窖童竣�������等策筆筐筒答筍筋筏筑粟粥絞結絨絕紫絮絲絡給絢絰絳善翔������翕耋聒肅腕腔腋腑腎脹腆脾腌腓腴舒舜菩萃菸萍菠菅萋菁華�����菱菴著萊菰萌菌菽菲菊萸萎萄菜萇菔菟虛蛟蛙蛭蛔蛛蛤蛐蛞街裁裂袱覃視註詠評詞証詁詔詛詐詆訴診訶詖象貂貯貼貳貽賁費賀貴買貶貿貸越超趁跎距跋跚跑跌跛跆軻軸軼辜逮逵週逸進逶鄂郵鄉郾酣酥量鈔鈕鈣鈉鈞鈍鈐鈇鈑閔閏開閑間閒閎隊階隋陽隅隆隍陲隄雁雅雄集雇雯雲韌項順須飧飪��".split(""); +for(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];} +D[162] = "������������������������������������������������飯飩飲飭馮馭黃黍黑亂�������傭債傲傳僅傾催傷傻傯僇剿剷剽募勦勤勢勣匯嗟嗨嗓嗦嗎嗜������嗇嗑嗣嗤嗯嗚嗡嗅嗆嗥嗉園圓塞塑塘塗塚塔填塌塭塊塢塒塋�����奧嫁嫉嫌媾媽媼媳嫂媲嵩嵯幌幹廉廈弒彙徬微愚意慈感想愛惹愁愈慎慌慄慍愾愴愧愍愆愷戡戢搓搾搞搪搭搽搬搏搜搔損搶搖搗搆敬斟新暗暉暇暈暖暄暘暍會榔業楚楷楠楔極椰概楊楨楫楞楓楹榆楝楣楛歇歲毀殿毓毽溢溯滓溶滂源溝滇滅溥溘溼溺溫滑準溜滄滔溪溧溴煎煙煩煤煉照煜煬煦煌煥��".split(""); +for(j = 0; j != D[162].length; ++j) if(D[162][j].charCodeAt(0) !== 0xFFFD) { e[D[162][j]] = 41472 + j; d[41472 + j] = D[162][j];} +D[163] = "������������������������������������������������煞煆煨煖爺牒猷獅猿猾�������瑯瑚瑕瑟瑞瑁琿瑙瑛瑜當畸瘀痰瘁痲痱痺痿痴痳盞盟睛睫睦������睞督睹睪睬睜睥睨睢矮碎碰碗碘碌碉硼碑碓硿祺祿禁萬禽稜�����稚稠稔稟稞窟窠筷節筠筮筧粱粳粵經絹綑綁綏絛置罩罪署義羨群聖聘肆肄腱腰腸腥腮腳腫腹腺腦舅艇蒂葷落萱葵葦葫葉葬葛萼萵葡董葩葭葆虞虜號蛹蜓蜈蜇蜀蛾蛻蜂蜃蜆蜊衙裟裔裙補裘裝裡裊裕裒覜解詫該詳試詩詰誇詼詣誠話誅詭詢詮詬詹詻訾詨豢貊貉賊資賈賄貲賃賂賅跡跟跨路跳跺跪��".split(""); +for(j = 0; j != D[163].length; ++j) if(D[163][j].charCodeAt(0) !== 0xFFFD) { e[D[163][j]] = 41728 + j; d[41728 + j] = D[163][j];} +D[164] = "������������������������������������������������跤跦躲較載軾輊辟農運�������遊道遂達逼違遐遇遏過遍遑逾遁鄒鄗酬酪酩釉鈷鉗鈸鈽鉀鈾������鉛鉋鉤鉑鈴鉉鉍鉅鈹鈿鉚閘隘隔隕雍雋雉雊雷電雹零靖靴靶�����預頑頓頊頒頌飼飴飽飾馳馱馴髡鳩麂鼎鼓鼠僧僮僥僖僭僚僕像僑僱僎僩兢凳劃劂匱厭嗾嘀嘛嘗嗽嘔嘆嘉嘍嘎嗷嘖嘟嘈嘐嗶團圖塵塾境墓墊塹墅塽壽夥夢夤奪奩嫡嫦嫩嫗嫖嫘嫣孵寞寧寡寥實寨寢寤察對屢嶄嶇幛幣幕幗幔廓廖弊彆彰徹慇愿態慷慢慣慟慚慘慵截撇摘摔撤摸摟摺摑摧搴摭摻敲斡��".split(""); +for(j = 0; j != D[164].length; ++j) if(D[164][j].charCodeAt(0) !== 0xFFFD) { e[D[164][j]] = 41984 + j; d[41984 + j] = D[164][j];} +D[165] = "������������������������������������������������旗旖暢暨暝榜榨榕槁榮�������槓構榛榷榻榫榴槐槍榭槌榦槃榣歉歌氳漳演滾漓滴漩漾漠漬������漏漂漢滿滯漆漱漸漲漣漕漫漯澈漪滬漁滲滌滷熔熙煽熊熄熒�����爾犒犖獄獐瑤瑣瑪瑰瑭甄疑瘧瘍瘋瘉瘓盡監瞄睽睿睡磁碟碧碳碩碣禎福禍種稱窪窩竭端管箕箋筵算箝箔箏箸箇箄粹粽精綻綰綜綽綾綠緊綴網綱綺綢綿綵綸維緒緇綬罰翠翡翟聞聚肇腐膀膏膈膊腿膂臧臺與舔舞艋蓉蒿蓆蓄蒙蒞蒲蒜蓋蒸蓀蓓蒐蒼蓑蓊蜿蜜蜻蜢蜥蜴蜘蝕蜷蜩裳褂裴裹裸製裨褚裯��".split(""); +for(j = 0; j != D[165].length; ++j) if(D[165][j].charCodeAt(0) !== 0xFFFD) { e[D[165][j]] = 42240 + j; d[42240 + j] = D[165][j];} +D[166] = "������������������������������������������������誦誌語誣認誡誓誤說誥�������誨誘誑誚誧豪貍貌賓賑賒赫趙趕跼輔輒輕輓辣遠遘遜遣遙遞������遢遝遛鄙鄘鄞酵酸酷酴鉸銬銀銅銘銖鉻銓銜銨鉼銑閡閨閩閣�����閥閤隙障際雌雒需靼鞅韶頗領颯颱餃餅餌餉駁骯骰髦魁魂鳴鳶鳳麼鼻齊億儀僻僵價儂儈儉儅凜劇劈劉劍劊勰厲嘮嘻嘹嘲嘿嘴嘩噓噎噗噴嘶嘯嘰墀墟增墳墜墮墩墦奭嬉嫻嬋嫵嬌嬈寮寬審寫層履嶝嶔幢幟幡廢廚廟廝廣廠彈影德徵慶慧慮慝慕憂慼慰慫慾憧憐憫憎憬憚憤憔憮戮摩摯摹撞撲撈撐撰��".split(""); +for(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];} +D[167] = "������������������������������������������������撥撓撕撩撒撮播撫撚撬�������撙撢撳敵敷數暮暫暴暱樣樟槨樁樞標槽模樓樊槳樂樅槭樑歐������歎殤毅毆漿潼澄潑潦潔澆潭潛潸潮澎潺潰潤澗潘滕潯潠潟熟�����熬熱熨牖犛獎獗瑩璋璃瑾璀畿瘠瘩瘟瘤瘦瘡瘢皚皺盤瞎瞇瞌瞑瞋磋磅確磊碾磕碼磐稿稼穀稽稷稻窯窮箭箱範箴篆篇篁箠篌糊締練緯緻緘緬緝編緣線緞緩綞緙緲緹罵罷羯翩耦膛膜膝膠膚膘蔗蔽蔚蓮蔬蔭蔓蔑蔣蔡蔔蓬蔥蓿蔆螂蝴蝶蝠蝦蝸蝨蝙蝗蝌蝓衛衝褐複褒褓褕褊誼諒談諄誕請諸課諉諂調��".split(""); +for(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];} +D[168] = "������������������������������������������������誰論諍誶誹諛豌豎豬賠�������賞賦賤賬賭賢賣賜質賡赭趟趣踫踐踝踢踏踩踟踡踞躺輝輛輟������輩輦輪輜輞輥適遮遨遭遷鄰鄭鄧鄱醇醉醋醃鋅銻銷鋪鋤鋁銳�����銼鋒鋇鋰銲閭閱霄霆震霉靠鞍鞋鞏頡頫頜颳養餓餒餘駝駐駟駛駑駕駒駙骷髮髯鬧魅魄魷魯鴆鴉鴃麩麾黎墨齒儒儘儔儐儕冀冪凝劑劓勳噙噫噹噩噤噸噪器噥噱噯噬噢噶壁墾壇壅奮嬝嬴學寰導彊憲憑憩憊懍憶憾懊懈戰擅擁擋撻撼據擄擇擂操撿擒擔撾整曆曉暹曄曇暸樽樸樺橙橫橘樹橄橢橡橋橇��".split(""); +for(j = 0; j != D[168].length; ++j) if(D[168][j].charCodeAt(0) !== 0xFFFD) { e[D[168][j]] = 43008 + j; d[43008 + j] = D[168][j];} +D[169] = "������������������������������������������������樵機橈歙歷氅濂澱澡濃�������澤濁澧澳激澹澶澦澠澴熾燉燐燒燈燕熹燎燙燜燃燄獨璜璣璘������璟璞瓢甌甍瘴瘸瘺盧盥瞠瞞瞟瞥磨磚磬磧禦積穎穆穌穋窺篙�����簑築篤篛篡篩篦糕糖縊縑縈縛縣縞縝縉縐罹羲翰翱翮耨膳膩膨臻興艘艙蕊蕙蕈蕨蕩蕃蕉蕭蕪蕞螃螟螞螢融衡褪褲褥褫褡親覦諦諺諫諱謀諜諧諮諾謁謂諷諭諳諶諼豫豭貓賴蹄踱踴蹂踹踵輻輯輸輳辨辦遵遴選遲遼遺鄴醒錠錶鋸錳錯錢鋼錫錄錚錐錦錡錕錮錙閻隧隨險雕霎霑霖霍霓霏靛靜靦鞘頰��".split(""); +for(j = 0; j != D[169].length; ++j) if(D[169][j].charCodeAt(0) !== 0xFFFD) { e[D[169][j]] = 43264 + j; d[43264 + j] = D[169][j];} +D[170] = "������������������������������������������������頸頻頷頭頹頤餐館餞餛�������餡餚駭駢駱骸骼髻髭鬨鮑鴕鴣鴦鴨鴒鴛默黔龍龜優償儡儲勵������嚎嚀嚐嚅嚇嚏壕壓壑壎嬰嬪嬤孺尷屨嶼嶺嶽嶸幫彌徽應懂懇�����懦懋戲戴擎擊擘擠擰擦擬擱擢擭斂斃曙曖檀檔檄檢檜櫛檣橾檗檐檠歜殮毚氈濘濱濟濠濛濤濫濯澀濬濡濩濕濮濰燧營燮燦燥燭燬燴燠爵牆獰獲璩環璦璨癆療癌盪瞳瞪瞰瞬瞧瞭矯磷磺磴磯礁禧禪穗窿簇簍篾篷簌篠糠糜糞糢糟糙糝縮績繆縷縲繃縫總縱繅繁縴縹繈縵縿縯罄翳翼聱聲聰聯聳臆臃膺��".split(""); +for(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];} +D[171] = "������������������������������������������������臂臀膿膽臉膾臨舉艱薪�������薄蕾薜薑薔薯薛薇薨薊薦虧蟀蟑螳蟒蟆螫螻螺蟈蟋褻褶襄褸������褽覬謎謗謙講謊謠謝謄謐豁谿豳賺賽購賸賻趨蹉蹋蹈蹊轄輾�����轂轅輿避遽還邁邂邀鄹醣醞醜鍍鎂錨鍵鍊鍥鍋錘鍾鍬鍛鍰鍚鍔闊闋闌闈闆隱隸雖霜霞鞠韓顆颶餵騁駿鮮鮫鮪鮭鴻鴿麋黏點黜黝黛鼾齋叢嚕嚮壙壘嬸彝懣戳擴擲擾攆擺擻擷斷曜朦檳檬櫃檻檸櫂檮檯歟歸殯瀉瀋濾瀆濺瀑瀏燻燼燾燸獷獵璧璿甕癖癘癒瞽瞿瞻瞼礎禮穡穢穠竄竅簫簧簪簞簣簡糧織��".split(""); +for(j = 0; j != D[171].length; ++j) if(D[171][j].charCodeAt(0) !== 0xFFFD) { e[D[171][j]] = 43776 + j; d[43776 + j] = D[171][j];} +D[172] = "������������������������������������������������繕繞繚繡繒繙罈翹翻職�������聶臍臏舊藏薩藍藐藉薰薺薹蟯蟬蟲蟠覆覲觴謨謹謬謫豐贅蹙������蹣蹦蹤蹟蹕軀轉轍邇邃邈醫醬釐鎔鎊鎖鎢鎳鎮鎬鎰鎘鎚鎗闔�����闖闐闕離雜雙雛雞霤鞣鞦鞭韹額顏題顎顓颺餾餿餽餮馥騎髁鬃鬆魏魎魍鯊鯉鯽鯈鯀鵑鵝鵠黠鼕鼬儳嚥嚨壞壟壢寵龐廬懲懷懶懵攀攏曠曝櫥櫝櫚櫓瀛瀟瀨瀚瀝瀕瀘爆爍牘犢獸獺璽瓊瓣疇疆癟癡矇礙禱穫穩簾簿簸簽簷籀繫繭繹繩繪繳羅羶羹羸臘藩藝藪藕藤藥藷蟻蠅蠍蟹蟾襠襟襖襞譁譜識證譚��".split(""); +for(j = 0; j != D[172].length; ++j) if(D[172][j].charCodeAt(0) !== 0xFFFD) { e[D[172][j]] = 44032 + j; d[44032 + j] = D[172][j];} +D[173] = "������������������������������������������������譎譏譆譙贈贊蹼蹲躇蹶�������蹬蹺蹴轔轎辭邊邋醱醮鏡鏑鏟鏃鏈鏜鏝鏖鏢鏍鏘鏤鏗鏨關隴������難霪霧靡韜韻類願顛颼饅饉騖騙鬍鯨鯧鯖鯛鶉鵡鵲鵪鵬麒麗�����麓麴勸嚷嚶嚴嚼壤孀孃孽寶巉懸懺攘攔攙曦朧櫬瀾瀰瀲爐獻瓏癢癥礦礪礬礫竇競籌籃籍糯糰辮繽繼纂罌耀臚艦藻藹蘑藺蘆蘋蘇蘊蠔蠕襤覺觸議譬警譯譟譫贏贍躉躁躅躂醴釋鐘鐃鏽闡霰飄饒饑馨騫騰騷騵鰓鰍鹹麵黨鼯齟齣齡儷儸囁囀囂夔屬巍懼懾攝攜斕曩櫻欄櫺殲灌爛犧瓖瓔癩矓籐纏續羼��".split(""); +for(j = 0; j != D[173].length; ++j) if(D[173][j].charCodeAt(0) !== 0xFFFD) { e[D[173][j]] = 44288 + j; d[44288 + j] = D[173][j];} +D[174] = "������������������������������������������������蘗蘭蘚蠣蠢蠡蠟襪襬覽�������譴護譽贓躊躍躋轟辯醺鐮鐳鐵鐺鐸鐲鐫闢霸霹露響顧顥饗驅������驃驀騾髏魔魑鰭鰥鶯鶴鷂鶸麝黯鼙齜齦齧儼儻囈囊囉孿巔巒�����彎懿攤權歡灑灘玀瓤疊癮癬禳籠籟聾聽臟襲襯觼讀贖贗躑躓轡酈鑄鑑鑒霽霾韃韁顫饕驕驍髒鬚鱉鰱鰾鰻鷓鷗鼴齬齪龔囌巖戀攣攫攪曬欐瓚竊籤籣籥纓纖纔臢蘸蘿蠱變邐邏鑣鑠鑤靨顯饜驚驛驗髓體髑鱔鱗鱖鷥麟黴囑壩攬灞癱癲矗罐羈蠶蠹衢讓讒讖艷贛釀鑪靂靈靄韆顰驟鬢魘鱟鷹鷺鹼鹽鼇齷��".split(""); +for(j = 0; j != D[174].length; ++j) if(D[174][j].charCodeAt(0) !== 0xFFFD) { e[D[174][j]] = 44544 + j; d[44544 + j] = D[174][j];} +D[175] = "������������������������������������������������齲廳欖灣籬籮蠻觀躡釁�������鑲鑰顱饞髖鬣黌灤矚讚鑷韉驢驥纜讜躪釅鑽鑾鑼鱷鱸黷豔鑿������鸚爨驪鬱鸛鸞籲ソゾタダチヂッツヅテデトドナニヌネノハ�����バパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдеёжзийклмнопрстуфхцчшщъыьэюя⇧↸↹��䅚ク刂�冈�������������".split(""); +for(j = 0; j != D[175].length; ++j) if(D[175][j].charCodeAt(0) !== 0xFFFD) { e[D[175][j]] = 44800 + j; d[44800 + j] = D[175][j];} +D[176] = "������������������������������������������������乂乜凵匚厂万丌乇亍囗�������屮彳丏冇与丮亓仂仉仈冘勼卬厹圠夃夬尐巿旡殳毌气爿丱丼������仨仜仩仡仝仚刌刉匜卌圢圣夗夯宁宄尒尻屴屳帄庀庂忉戉扐�����氕氶汃氿氻犮犰玊禸肊阞伎优伬仵伔仱伀价伈伝伂伅伢伓伄仴伒冱刓刐劦匢匟卍厊吇囡囟圮圪圴夼妀奼妅奻奾奷奿孖尕尥屼屺屻屾巟幵庄异弚彴忕忔忏扜扞扤扡扦扢扙扠扚扥攷旯旮朾朹朸朻机朿朼朳氘汆汒汜汏汊汔汋汌灱牞犴犵玎甪癿穵网艸艼芀艽艿虍襾邙邗邘邛邔阢阤阠阣佖伻佢佉体��".split(""); +for(j = 0; j != D[176].length; ++j) if(D[176][j].charCodeAt(0) !== 0xFFFD) { e[D[176][j]] = 45056 + j; d[45056 + j] = D[176][j];} +D[177] = "������������������������������������������������佤伾佧佒佟佁佘伭伳伿�������佡冏冹刜刞刡劭劮匉卣卲厎厏吰吷吪呔呅吙吜吥吘吽呏呁吨������吤呇囮囧囥坁坅坌坉坋坒夆奀妦妘妠妗妎妢妐妏妧妡宎宒尨�����尪岍岏岈岋岉岒岊岆岓岕巠帊帎庋庉庌庈庍弅弝彸彶忒忑忐忭忨忮忳忡忤忣忺忯忷忻怀忴戺抃抌抎抏抔抇扱扻扺扰抁抈扷扽扲扴旰旴旳旲旵杅杇杙杕杌杈杝杍杚杋毐氙氚汸汧汫沄沋沏汱汯汩沚汭沇沕沜汦汳汥汻沎灴灺牣犿犽狃狆狁犺狅玕玗玓玔玒町甹疔疕皁礽耴肕肙肐肒肜芐芏芅芎芑芓��".split(""); +for(j = 0; j != D[177].length; ++j) if(D[177][j].charCodeAt(0) !== 0xFFFD) { e[D[177][j]] = 45312 + j; d[45312 + j] = D[177][j];} +D[178] = "������������������������������������������������芊芃芄豸迉辿邟邡邥邞�������邧邠阰阨阯阭丳侘佼侅佽侀侇佶佴侉侄佷佌侗佪侚佹侁佸侐������侜侔侞侒侂侕佫佮冞冼冾刵刲刳剆刱劼匊匋匼厒厔咇呿咁咑�����咂咈呫呺呾呥呬呴呦咍呯呡呠咘呣呧呤囷囹坯坲坭坫坱坰坶垀坵坻坳坴坢坨坽夌奅妵妺姏姎妲姌姁妶妼姃姖妱妽姀姈妴姇孢孥宓宕屄屇岮岤岠岵岯岨岬岟岣岭岢岪岧岝岥岶岰岦帗帔帙弨弢弣弤彔徂彾彽忞忥怭怦怙怲怋怴怊怗怳怚怞怬怢怍怐怮怓怑怌怉怜戔戽抭抴拑抾抪抶拊抮抳抯抻抩抰��".split(""); +for(j = 0; j != D[178].length; ++j) if(D[178][j].charCodeAt(0) !== 0xFFFD) { e[D[178][j]] = 45568 + j; d[45568 + j] = D[178][j];} +D[179] = "������������������������������������������������抸攽斨斻昉旼昄昒昈旻�������昃昋昍昅旽昑昐曶朊枅杬枎枒杶杻枘枆构杴枍枌杺枟枑枙枃������杽极杸杹枔欥殀歾毞氝沓泬泫泮泙沶泔沭泧沷泐泂沺泃泆泭�����泲泒泝沴沊沝沀泞泀洰泍泇沰泹泏泩泑炔炘炅炓炆炄炑炖炂炚炃牪狖狋狘狉狜狒狔狚狌狑玤玡玭玦玢玠玬玝瓝瓨甿畀甾疌疘皯盳盱盰盵矸矼矹矻矺矷祂礿秅穸穻竻籵糽耵肏肮肣肸肵肭舠芠苀芫芚芘芛芵芧芮芼芞芺芴芨芡芩苂芤苃芶芢虰虯虭虮豖迒迋迓迍迖迕迗邲邴邯邳邰阹阽阼阺陃俍俅��".split(""); +for(j = 0; j != D[179].length; ++j) if(D[179][j].charCodeAt(0) !== 0xFFFD) { e[D[179][j]] = 45824 + j; d[45824 + j] = D[179][j];} +D[180] = "������������������������������������������������俓侲俉俋俁俔俜俙侻侳�������俛俇俖侺俀侹俬剄剉勀勂匽卼厗厖厙厘咺咡咭咥哏哃茍咷咮������哖咶哅哆咠呰咼咢咾呲哞咰垵垞垟垤垌垗垝垛垔垘垏垙垥垚�����垕壴复奓姡姞姮娀姱姝姺姽姼姶姤姲姷姛姩姳姵姠姾姴姭宨屌峐峘峌峗峋峛峞峚峉峇峊峖峓峔峏峈峆峎峟峸巹帡帢帣帠帤庰庤庢庛庣庥弇弮彖徆怷怹恔恲恞恅恓恇恉恛恌恀恂恟怤恄恘恦恮扂扃拏挍挋拵挎挃拫拹挏挌拸拶挀挓挔拺挕拻拰敁敃斪斿昶昡昲昵昜昦昢昳昫昺昝昴昹昮朏朐柁柲柈��".split(""); +for(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];} +D[181] = "������������������������������������������������枺柜枻柸柘柀枷柅柫柤�������柟枵柍枳柷柶柮柣柂枹柎柧柰枲柼柆柭柌枮柦柛柺柉柊柃柪������柋欨殂殄殶毖毘毠氠氡洨洴洭洟洼洿洒洊泚洳洄洙洺洚洑洀�����洝浂洁洘洷洃洏浀洇洠洬洈洢洉洐炷炟炾炱炰炡炴炵炩牁牉牊牬牰牳牮狊狤狨狫狟狪狦狣玅珌珂珈珅玹玶玵玴珫玿珇玾珃珆玸珋瓬瓮甮畇畈疧疪癹盄眈眃眄眅眊盷盻盺矧矨砆砑砒砅砐砏砎砉砃砓祊祌祋祅祄秕种秏秖秎窀穾竑笀笁籺籸籹籿粀粁紃紈紁罘羑羍羾耇耎耏耔耷胘胇胠胑胈胂胐胅��".split(""); +for(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];} +D[182] = "������������������������������������������������胣胙胜胊胕胉胏胗胦胍�������臿舡芔苙苾苹茇苨茀苕茺苫苖苴苬苡苲苵茌苻苶苰苪苤苠苺������苳苭虷虴虼虳衁衎衧衪衩觓訄訇赲迣迡迮迠郱邽邿郕郅邾郇�����郋郈釔釓陔陏陑陓陊陎倞倅倇倓倢倰倛俵俴倳倷倬俶俷倗倜倠倧倵倯倱倎党冔冓凊凄凅凈凎剡剚剒剞剟剕剢勍匎厞唦哢唗唒哧哳哤唚哿唄唈哫唑唅哱唊哻哷哸哠唎唃唋圁圂埌堲埕埒垺埆垽垼垸垶垿埇埐垹埁夎奊娙娖娭娮娕娏娗娊娞娳孬宧宭宬尃屖屔峬峿峮峱峷崀峹帩帨庨庮庪庬弳弰彧恝��".split(""); +for(j = 0; j != D[182].length; ++j) if(D[182][j].charCodeAt(0) !== 0xFFFD) { e[D[182][j]] = 46592 + j; d[46592 + j] = D[182][j];} +D[183] = "������������������������������������������������恚恧恁悢悈悀悒悁悝悃�������悕悛悗悇悜悎戙扆拲挐捖挬捄捅挶捃揤挹捋捊挼挩捁挴捘捔������捙挭捇挳捚捑挸捗捀捈敊敆旆旃旄旂晊晟晇晑朒朓栟栚桉栲�����栳栻桋桏栖栱栜栵栫栭栯桎桄栴栝栒栔栦栨栮桍栺栥栠欬欯欭欱欴歭肂殈毦毤毨毣毢毧氥浺浣浤浶洍浡涒浘浢浭浯涑涍淯浿涆浞浧浠涗浰浼浟涂涘洯浨涋浾涀涄洖涃浻浽浵涐烜烓烑烝烋缹烢烗烒烞烠烔烍烅烆烇烚烎烡牂牸牷牶猀狺狴狾狶狳狻猁珓珙珥珖玼珧珣珩珜珒珛珔珝珚珗珘珨瓞瓟��".split(""); +for(j = 0; j != D[183].length; ++j) if(D[183][j].charCodeAt(0) !== 0xFFFD) { e[D[183][j]] = 46848 + j; d[46848 + j] = D[183][j];} +D[184] = "������������������������������������������������瓴瓵甡畛畟疰痁疻痄痀�������疿疶疺皊盉眝眛眐眓眒眣眑眕眙眚眢眧砣砬砢砵砯砨砮砫砡������砩砳砪砱祔祛祏祜祓祒祑秫秬秠秮秭秪秜秞秝窆窉窅窋窌窊�����窇竘笐笄笓笅笏笈笊笎笉笒粄粑粊粌粈粍粅紞紝紑紎紘紖紓紟紒紏紌罜罡罞罠罝罛羖羒翃翂翀耖耾耹胺胲胹胵脁胻脀舁舯舥茳茭荄茙荑茥荖茿荁茦茜茢荂荎茛茪茈茼荍茖茤茠茷茯茩荇荅荌荓茞茬荋茧荈虓虒蚢蚨蚖蚍蚑蚞蚇蚗蚆蚋蚚蚅蚥蚙蚡蚧蚕蚘蚎蚝蚐蚔衃衄衭衵衶衲袀衱衿衯袃衾衴衼��".split(""); +for(j = 0; j != D[184].length; ++j) if(D[184][j].charCodeAt(0) !== 0xFFFD) { e[D[184][j]] = 47104 + j; d[47104 + j] = D[184][j];} +D[185] = "������������������������������������������������訒豇豗豻貤貣赶赸趵趷�������趶軑軓迾迵适迿迻逄迼迶郖郠郙郚郣郟郥郘郛郗郜郤酐酎酏������釕釢釚陜陟隼飣髟鬯乿偰偪偡偞偠偓偋偝偲偈偍偁偛偊偢倕�����偅偟偩偫偣偤偆偀偮偳偗偑凐剫剭剬剮勖勓匭厜啵啶唼啍啐唴唪啑啢唶唵唰啒啅唌唲啥啎唹啈唭唻啀啋圊圇埻堔埢埶埜埴堀埭埽堈埸堋埳埏堇埮埣埲埥埬埡堎埼堐埧堁堌埱埩埰堍堄奜婠婘婕婧婞娸娵婭婐婟婥婬婓婤婗婃婝婒婄婛婈媎娾婍娹婌婰婩婇婑婖婂婜孲孮寁寀屙崞崋崝崚崠崌崨崍��".split(""); +for(j = 0; j != D[185].length; ++j) if(D[185][j].charCodeAt(0) !== 0xFFFD) { e[D[185][j]] = 47360 + j; d[47360 + j] = D[185][j];} +D[186] = "������������������������������������������������崦崥崏崰崒崣崟崮帾帴�������庱庴庹庲庳弶弸徛徖徟悊悐悆悾悰悺惓惔惏惤惙惝惈悱惛悷������惊悿惃惍惀挲捥掊掂捽掽掞掭掝掗掫掎捯掇掐据掯捵掜捭掮�����捼掤挻掟捸掅掁掑掍捰敓旍晥晡晛晙晜晢朘桹梇梐梜桭桮梮梫楖桯梣梬梩桵桴梲梏桷梒桼桫桲梪梀桱桾梛梖梋梠梉梤桸桻梑梌梊桽欶欳欷欸殑殏殍殎殌氪淀涫涴涳湴涬淩淢涷淶淔渀淈淠淟淖涾淥淜淝淛淴淊涽淭淰涺淕淂淏淉淐淲淓淽淗淍淣涻烺焍烷焗烴焌烰焄烳焐烼烿焆焓焀烸烶焋焂焎��".split(""); +for(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];} +D[187] = "������������������������������������������������牾牻牼牿猝猗猇猑猘猊�������猈狿猏猞玈珶珸珵琄琁珽琇琀珺珼珿琌琋珴琈畤畣痎痒痏痋������痌痑痐皏皉盓眹眯眭眱眲眴眳眽眥眻眵硈硒硉硍硊硌砦硅硐�����祤祧祩祪祣祫祡离秺秸秶秷窏窔窐笵笻笴笥笰笢笤笳笘笪笝笱笫笭笯笲笸笚笣粔粘粖粣紵紽紸紶紺絅紬紩絁絇紾紿絊紻紨罣羕羜羝羛翊翋翍翐翑翇翏翉耟耞耛聇聃聈脘脥脙脛脭脟脬脞脡脕脧脝脢舑舸舳舺舴舲艴莐莣莨莍荺荳莤荴莏莁莕莙荵莔莩荽莃莌莝莛莪莋荾莥莯莈莗莰荿莦莇莮荶虙��".split(""); +for(j = 0; j != D[187].length; ++j) if(D[187][j].charCodeAt(0) !== 0xFFFD) { e[D[187][j]] = 47872 + j; d[47872 + j] = D[187][j];} +D[188] = "������������������������������������������������虖蚿蚷蛂蛁蛅蚺蚰蛈蚹�������蚳蚸蛌蚴蚻蚼蛃蚽蚾衒袉袕袨袢袪袚袑袡袟袘袧袙袛袗袤袬������袌袓袎覂觖觙觕訰訧訬訞谹谻豜豝豽貥赽赻赹趼跂趹趿跁軘�����軞軝軜軗軠軡逤逋逑逜逌逡郯郪郰郴郲郳郔郫郬郩酖酘酚酓酕釬釴釱釳釸釤釹釪釫釷釨釮镺閆閈陼陭陫陱陯隿靪頄飥馗傛傕傔傞傋傣傃傌傎傝偨傜傒傂傇兟凔匒匑厤厧喑喨喥喭啷噅喢喓喈喏喵喁喣喒喤啽喌喦啿喕喡喎圌堩堷堙堞堧堣堨埵塈堥堜堛堳堿堶堮堹堸堭堬堻奡媯媔媟婺媢媞婸媦��".split(""); +for(j = 0; j != D[188].length; ++j) if(D[188][j].charCodeAt(0) !== 0xFFFD) { e[D[188][j]] = 48128 + j; d[48128 + j] = D[188][j];} +D[189] = "������������������������������������������������婼媥媬媕媮娷媄媊媗媃�������媋媩婻婽媌媜媏媓媝寪寍寋寔寑寊寎尌尰崷嵃嵫嵁嵋崿崵嵑������嵎嵕崳崺嵒崽崱嵙嵂崹嵉崸崼崲崶嵀嵅幄幁彘徦徥徫惉悹惌�����惢惎惄愔惲愊愖愅惵愓惸惼惾惁愃愘愝愐惿愄愋扊掔掱掰揎揥揨揯揃撝揳揊揠揶揕揲揵摡揟掾揝揜揄揘揓揂揇揌揋揈揰揗揙攲敧敪敤敜敨敥斌斝斞斮旐旒晼晬晻暀晱晹晪晲朁椌棓椄棜椪棬棪棱椏棖棷棫棤棶椓椐棳棡椇棌椈楰梴椑棯棆椔棸棐棽棼棨椋椊椗棎棈棝棞棦棴棑椆棔棩椕椥棇欹欻��".split(""); +for(j = 0; j != D[189].length; ++j) if(D[189][j].charCodeAt(0) !== 0xFFFD) { e[D[189][j]] = 48384 + j; d[48384 + j] = D[189][j];} +D[190] = "������������������������������������������������欿欼殔殗殙殕殽毰毲毳�������氰淼湆湇渟湉溈渼渽湅湢渫渿湁湝湳渜渳湋湀湑渻渃渮湞湨������湜湡渱渨湠湱湫渹渢渰湓湥渧湸湤湷湕湹湒湦渵渶湚焠焞焯�����烻焮焱焣焥焢焲焟焨焺焛牋牚犈犉犆犅犋猒猋猰猢猱猳猧猲猭猦猣猵猌琮琬琰琫琖琚琡琭琱琤琣琝琩琠琲瓻甯畯畬痧痚痡痦痝痟痤痗皕皒盚睆睇睄睍睅睊睎睋睌矞矬硠硤硥硜硭硱硪确硰硩硨硞硢祴祳祲祰稂稊稃稌稄窙竦竤筊筇筄筈筌筎筀筘筅粢粞粨粡絘絯絣絓絖絧絪絏絭絜絫絒絔絩絑絟��".split(""); +for(j = 0; j != D[190].length; ++j) if(D[190][j].charCodeAt(0) !== 0xFFFD) { e[D[190][j]] = 48640 + j; d[48640 + j] = D[190][j];} +D[191] = "������������������������������������������������絎缾缿罥罦羢羠羡翗聑�������聏聐胾胔腃腊腒腏腇脽腍脺臦臮臷臸臹舄舼舽舿艵茻菏菹萣������菀菨萒菧菤菼菶萐菆菈菫菣莿萁菝菥菘菿菡菋菎菖菵菉萉萏�����菞萑萆菂菳菕菺菇菑菪萓莚菃菬菮菄菻菗菢萛菛菾蛘蛢蛦蛓蛣蛚蛪蛝蛫蛜蛬蛩蛗蛨蛑衈衖衕袺裗袹袸裀袾袶袼袷袽袲褁裉覕覘覗觝觚觛詎詍訹詙詀詗詘詄詅詒詈詑詊詌詏豟貁貀貺貾貰貹貵趄趀趉跘跓跍跇跖跜跏跕跙跈跗跅軯軷軺軹軦軮軥軵軧軨軶軫軱軬軴軩逭逴逯鄆鄬鄄郿郼鄈郹郻鄁鄀��".split(""); +for(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];} +D[192] = "������������������������������������������������鄇鄅鄃酡酤酟酢酠鈁鈊�������鈥鈃鈚鈦鈏鈌鈀鈒釿釽鈆鈄鈧鈂鈜鈤鈙鈗鈅鈖镻閍閌閐隇陾������隈隉隃隀雂雈雃雱雰靬靰靮頇颩飫鳦黹亃亄亶傽傿僆傮僄僊�����傴僈僂傰僁傺傱僋僉傶傸凗剺剸剻剼嗃嗛嗌嗐嗋嗊嗝嗀嗔嗄嗩喿嗒喍嗏嗕嗢嗖嗈嗲嗍嗙嗂圔塓塨塤塏塍塉塯塕塎塝塙塥塛堽塣塱壼嫇嫄嫋媺媸媱媵媰媿嫈媻嫆媷嫀嫊媴媶嫍媹媐寖寘寙尟尳嵱嵣嵊嵥嵲嵬嵞嵨嵧嵢巰幏幎幊幍幋廅廌廆廋廇彀徯徭惷慉慊愫慅愶愲愮慆愯慏愩慀戠酨戣戥戤揅揱��".split(""); +for(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];} +D[193] = "������������������������������������������������揫搐搒搉搠搤搳摃搟搕�������搘搹搷搢搣搌搦搰搨摁搵搯搊搚摀搥搧搋揧搛搮搡搎敯斒旓������暆暌暕暐暋暊暙暔晸朠楦楟椸楎楢楱椿楅楪椹楂楗楙楺楈楉�����椵楬椳椽楥棰楸椴楩楀楯楄楶楘楁楴楌椻楋椷楜楏楑椲楒椯楻椼歆歅歃歂歈歁殛毻毼毹毷毸溛滖滈溏滀溟溓溔溠溱溹滆滒溽滁溞滉溷溰滍溦滏溲溾滃滜滘溙溒溎溍溤溡溿溳滐滊溗溮溣煇煔煒煣煠煁煝煢煲煸煪煡煂煘煃煋煰煟煐煓煄煍煚牏犍犌犑犐犎猼獂猻猺獀獊獉瑄瑊瑋瑒瑑瑗瑀瑏瑐瑎��".split(""); +for(j = 0; j != D[193].length; ++j) if(D[193][j].charCodeAt(0) !== 0xFFFD) { e[D[193][j]] = 49408 + j; d[49408 + j] = D[193][j];} +D[194] = "������������������������������������������������瑂瑆瑍瑔瓡瓿瓾瓽甝畹�������畷榃痯瘏瘃痷痾痼痹痸瘐痻痶痭痵痽皙皵盝睕睟睠睒睖睚睩������睧睔睙睭矠碇碚碔碏碄碕碅碆碡碃硹碙碀碖硻祼禂祽祹稑稘�����稙稒稗稕稢稓稛稐窣窢窞竫筦筤筭筴筩筲筥筳筱筰筡筸筶筣粲粴粯綈綆綀綍絿綅絺綎絻綃絼綌綔綄絽綒罭罫罧罨罬羦羥羧翛翜耡腤腠腷腜腩腛腢腲朡腞腶腧腯腄腡舝艉艄艀艂艅蓱萿葖葶葹蒏蒍葥葑葀蒆葧萰葍葽葚葙葴葳葝蔇葞萷萺萴葺葃葸萲葅萩菙葋萯葂萭葟葰萹葎葌葒葯蓅蒎萻葇萶萳��".split(""); +for(j = 0; j != D[194].length; ++j) if(D[194][j].charCodeAt(0) !== 0xFFFD) { e[D[194][j]] = 49664 + j; d[49664 + j] = D[194][j];} +D[195] = "������������������������������������������������葨葾葄萫葠葔葮葐蜋蜄�������蛷蜌蛺蛖蛵蝍蛸蜎蜉蜁蛶蜍蜅裖裋裍裎裞裛裚裌裐覅覛觟觥������觤觡觠觢觜触詶誆詿詡訿詷誂誄詵誃誁詴詺谼豋豊豥豤豦貆�����貄貅賌赨赩趑趌趎趏趍趓趔趐趒跰跠跬跱跮跐跩跣跢跧跲跫跴輆軿輁輀輅輇輈輂輋遒逿遄遉逽鄐鄍鄏鄑鄖鄔鄋鄎酮酯鉈鉒鈰鈺鉦鈳鉥鉞銃鈮鉊鉆鉭鉬鉏鉠鉧鉯鈶鉡鉰鈱鉔鉣鉐鉲鉎鉓鉌鉖鈲閟閜閞閛隒隓隑隗雎雺雽雸雵靳靷靸靲頏頍頎颬飶飹馯馲馰馵骭骫魛鳪鳭鳧麀黽僦僔僗僨僳僛僪僝僤��".split(""); +for(j = 0; j != D[195].length; ++j) if(D[195][j].charCodeAt(0) !== 0xFFFD) { e[D[195][j]] = 49920 + j; d[49920 + j] = D[195][j];} +D[196] = "������������������������������������������������僓僬僰僯僣僠凘劀劁勩�������勫匰厬嘧嘕嘌嘒嗼嘏嘜嘁嘓嘂嗺嘝嘄嗿嗹墉塼墐墘墆墁塿塴������墋塺墇墑墎塶墂墈塻墔墏壾奫嫜嫮嫥嫕嫪嫚嫭嫫嫳嫢嫠嫛嫬�����嫞嫝嫙嫨嫟孷寠寣屣嶂嶀嵽嶆嵺嶁嵷嶊嶉嶈嵾嵼嶍嵹嵿幘幙幓廘廑廗廎廜廕廙廒廔彄彃彯徶愬愨慁慞慱慳慒慓慲慬憀慴慔慺慛慥愻慪慡慖戩戧戫搫摍摛摝摴摶摲摳摽摵摦撦摎撂摞摜摋摓摠摐摿搿摬摫摙摥摷敳斠暡暠暟朅朄朢榱榶槉榠槎榖榰榬榼榑榙榎榧榍榩榾榯榿槄榽榤槔榹槊榚槏榳榓��".split(""); +for(j = 0; j != D[196].length; ++j) if(D[196][j].charCodeAt(0) !== 0xFFFD) { e[D[196][j]] = 50176 + j; d[50176 + j] = D[196][j];} +D[197] = "������������������������������������������������榪榡榞槙榗榐槂榵榥槆�������歊歍歋殞殟殠毃毄毾滎滵滱漃漥滸漷滻漮漉潎漙漚漧漘漻漒������滭漊漶潳滹滮漭潀漰漼漵滫漇漎潃漅滽滶漹漜滼漺漟漍漞漈�����漡熇熐熉熀熅熂熏煻熆熁熗牄牓犗犕犓獃獍獑獌瑢瑳瑱瑵瑲瑧瑮甀甂甃畽疐瘖瘈瘌瘕瘑瘊瘔皸瞁睼瞅瞂睮瞀睯睾瞃碲碪碴碭碨硾碫碞碥碠碬碢碤禘禊禋禖禕禔禓禗禈禒禐稫穊稰稯稨稦窨窫窬竮箈箜箊箑箐箖箍箌箛箎箅箘劄箙箤箂粻粿粼粺綧綷緂綣綪緁緀緅綝緎緄緆緋緌綯綹綖綼綟綦綮綩��".split(""); +for(j = 0; j != D[197].length; ++j) if(D[197][j].charCodeAt(0) !== 0xFFFD) { e[D[197][j]] = 50432 + j; d[50432 + j] = D[197][j];} +D[198] = "������������������������������������������������綡緉罳翢翣翥翞耤聝聜�������膉膆膃膇膍膌膋舕蒗蒤蒡蒟蒺蓎蓂蒬蒮蒫蒹蒴蓁蓍蒪蒚蒱蓐������蒝蒧蒻蒢蒔蓇蓌蒛蒩蒯蒨蓖蒘蒶蓏蒠蓗蓔蓒蓛蒰蒑虡蜳蜣蜨�����蝫蝀蜮蜞蜡蜙蜛蝃蜬蝁蜾蝆蜠蜲蜪蜭蜼蜒蜺蜱蜵蝂蜦蜧蜸蜤蜚蜰蜑裷裧裱裲裺裾裮裼裶裻裰裬裫覝覡覟覞觩觫觨誫誙誋誒誏誖谽豨豩賕賏賗趖踉踂跿踍跽踊踃踇踆踅跾踀踄輐輑輎輍鄣鄜鄠鄢鄟鄝鄚鄤鄡鄛酺酲酹酳銥銤鉶銛鉺銠銔銪銍銦銚銫鉹銗鉿銣鋮銎銂銕銢鉽銈銡銊銆銌銙銧鉾銇銩銝��".split(""); +for(j = 0; j != D[198].length; ++j) if(D[198][j].charCodeAt(0) !== 0xFFFD) { e[D[198][j]] = 50688 + j; d[50688 + j] = D[198][j];} +D[199] = "������������������������������������������������銋鈭隞隡雿靘靽靺靾鞃�������鞀鞂靻鞄鞁靿韎韍頖颭颮餂餀餇馝馜駃馹馻馺駂馽駇骱髣髧������鬾鬿魠魡魟鳱鳲鳵麧僿儃儰僸儆儇僶僾儋儌僽儊劋劌勱勯噈�����噂噌嘵噁噊噉噆噘噚噀嘳嘽嘬嘾嘸嘪嘺圚墫墝墱墠墣墯墬墥墡壿嫿嫴嫽嫷嫶嬃嫸嬂嫹嬁嬇嬅嬏屧嶙嶗嶟嶒嶢嶓嶕嶠嶜嶡嶚嶞幩幝幠幜緳廛廞廡彉徲憋憃慹憱憰憢憉憛憓憯憭憟憒憪憡憍慦憳戭摮摰撖撠撅撗撜撏撋撊撌撣撟摨撱撘敶敺敹敻斲斳暵暰暩暲暷暪暯樀樆樗槥槸樕槱槤樠槿槬槢樛樝��".split(""); +for(j = 0; j != D[199].length; ++j) if(D[199][j].charCodeAt(0) !== 0xFFFD) { e[D[199][j]] = 50944 + j; d[50944 + j] = D[199][j];} +D[200] = "������������������������������������������������槾樧槲槮樔槷槧橀樈槦�������槻樍槼槫樉樄樘樥樏槶樦樇槴樖歑殥殣殢殦氁氀毿氂潁漦潾������澇濆澒澍澉澌潢潏澅潚澖潶潬澂潕潲潒潐潗澔澓潝漀潡潫潽�����潧澐潓澋潩潿澕潣潷潪潻熲熯熛熰熠熚熩熵熝熥熞熤熡熪熜熧熳犘犚獘獒獞獟獠獝獛獡獚獙獢璇璉璊璆璁瑽璅璈瑼瑹甈甇畾瘥瘞瘙瘝瘜瘣瘚瘨瘛皜皝皞皛瞍瞏瞉瞈磍碻磏磌磑磎磔磈磃磄磉禚禡禠禜禢禛歶稹窲窴窳箷篋箾箬篎箯箹篊箵糅糈糌糋緷緛緪緧緗緡縃緺緦緶緱緰緮緟罶羬羰羭翭翫��".split(""); +for(j = 0; j != D[200].length; ++j) if(D[200][j].charCodeAt(0) !== 0xFFFD) { e[D[200][j]] = 51200 + j; d[51200 + j] = D[200][j];} +D[201] = "������������������������������������������������翪翬翦翨聤聧膣膟膞膕�������膢膙膗舖艏艓艒艐艎艑蔤蔻蔏蔀蔩蔎蔉蔍蔟蔊蔧蔜蓻蔫蓺蔈������蔌蓴蔪蓲蔕蓷蓫蓳蓼蔒蓪蓩蔖蓾蔨蔝蔮蔂蓽蔞蓶蔱蔦蓧蓨蓰�����蓯蓹蔘蔠蔰蔋蔙蔯虢蝖蝣蝤蝷蟡蝳蝘蝔蝛蝒蝡蝚蝑蝞蝭蝪蝐蝎蝟蝝蝯蝬蝺蝮蝜蝥蝏蝻蝵蝢蝧蝩衚褅褌褔褋褗褘褙褆褖褑褎褉覢覤覣觭觰觬諏諆誸諓諑諔諕誻諗誾諀諅諘諃誺誽諙谾豍貏賥賟賙賨賚賝賧趠趜趡趛踠踣踥踤踮踕踛踖踑踙踦踧踔踒踘踓踜踗踚輬輤輘輚輠輣輖輗遳遰遯遧遫鄯鄫鄩��".split(""); +for(j = 0; j != D[201].length; ++j) if(D[201][j].charCodeAt(0) !== 0xFFFD) { e[D[201][j]] = 51456 + j; d[51456 + j] = D[201][j];} +D[202] = "������������������������������������������������鄪鄲鄦鄮醅醆醊醁醂醄�������醀鋐鋃鋄鋀鋙銶鋏鋱鋟鋘鋩鋗鋝鋌鋯鋂鋨鋊鋈鋎鋦鋍鋕鋉鋠������鋞鋧鋑鋓銵鋡錥鋆銴镼閬閫閮閰隤隢雓霅霈霂靚鞊鞎鞈韐韏�����頞頝頦頩頨頠頛頧颲餈飺餑餔餖餗餕駜駍駏駓駔駎駉駖駘駋駗駌骳髬髫髳髲髱魆魃魧魴魱魦魶魵魰魨魤魬鳼鳺鳽鳿鳷鴇鴀鳹鳻鴈鴅鴄麃黓鼏鼐儜儓儗儚儑凞匴叡噰噠噮噳噦噣噭噲噞噷圜圛壈墽壉墿墺壂墼壆嬗嬙嬛嬡嬔嬓嬐嬖嬨嬚嬠嬞寯嶬嶱嶩嶧嶵嶰嶮嶪嶨嶲嶭嶯嶴幧幨幦幯廩廧廦廨廥彋��".split(""); +for(j = 0; j != D[202].length; ++j) if(D[202][j].charCodeAt(0) !== 0xFFFD) { e[D[202][j]] = 51712 + j; d[51712 + j] = D[202][j];} +D[203] = "������������������������������������������������徼徻憝憨憖懅憴懆懁懌�������憺憿憸憌擗擖擐擏擉撽撉擃擛擳擙攳敿敼斢曈暾曀曊曋曏暽������暻暺曌朣樴橦橉橧樲橨樾橝橭橶橛橑樨橚樻樿橁橪橤橐橏橔�����橯橩橠樼橞橖橕橍橎橆歕歔歖殧殪殫毈毇氄氃氆澭濋澣濇澼濎濈潞濄澽澞濊澨瀄澥澮澺澬澪濏澿澸澢濉澫濍澯澲澰燅燂熿熸燖燀燁燋燔燊燇燏熽燘熼燆燚燛犝犞獩獦獧獬獥獫獪瑿璚璠璔璒璕璡甋疀瘯瘭瘱瘽瘳瘼瘵瘲瘰皻盦瞚瞝瞡瞜瞛瞢瞣瞕瞙瞗磝磩磥磪磞磣磛磡磢磭磟磠禤穄穈穇窶窸窵��".split(""); +for(j = 0; j != D[203].length; ++j) if(D[203][j].charCodeAt(0) !== 0xFFFD) { e[D[203][j]] = 51968 + j; d[51968 + j] = D[203][j];} +D[204] = "������������������������������������������������窱窷篞篣篧篝篕篥篚篨�������篹篔篪篢篜篫篘篟糒糔糗糐糑縒縡縗縌縟縠縓縎縜縕縚縢縋������縏縖縍縔縥縤罃罻罼罺羱翯耪耩聬膱膦膮膹膵膫膰膬膴膲膷�����膧臲艕艖艗蕖蕅蕫蕍蕓蕡蕘蕀蕆蕤蕁蕢蕄蕑蕇蕣蔾蕛蕱蕎蕮蕵蕕蕧蕠薌蕦蕝蕔蕥蕬虣虥虤螤螛螏螗螓螒螈螁螖螘蝹螇螣螅螐螑螝螄螔螜螚螉褞褦褰褭褮褧褱褢褩褣褯褬褟觱諠諢諲諴諵諝謔諤諟諰諈諞諡諨諿諯諻貑貒貐賵賮賱賰賳赬赮趥趧踳踾踸蹀蹅踶踼踽蹁踰踿躽輶輮輵輲輹輷輴遶遹遻��".split(""); +for(j = 0; j != D[204].length; ++j) if(D[204][j].charCodeAt(0) !== 0xFFFD) { e[D[204][j]] = 52224 + j; d[52224 + j] = D[204][j];} +D[205] = "������������������������������������������������邆郺鄳鄵鄶醓醐醑醍醏�������錧錞錈錟錆錏鍺錸錼錛錣錒錁鍆錭錎錍鋋錝鋺錓鋹鋷錴錂錤������鋿錩錹錵錪錔錌錋鋾錉錀鋻錖閼闍閾閹閺閶閿閵閽隩雔霋霒�����霐鞙鞗鞔韰韸頵頯頲餤餟餧餩馞駮駬駥駤駰駣駪駩駧骹骿骴骻髶髺髹髷鬳鮀鮅鮇魼魾魻鮂鮓鮒鮐魺鮕魽鮈鴥鴗鴠鴞鴔鴩鴝鴘鴢鴐鴙鴟麈麆麇麮麭黕黖黺鼒鼽儦儥儢儤儠儩勴嚓嚌嚍嚆嚄嚃噾嚂噿嚁壖壔壏壒嬭嬥嬲嬣嬬嬧嬦嬯嬮孻寱寲嶷幬幪徾懃憵憼懧懠懥懤懨懞擯擩擣擫擤擨斁斀斶旚曒檍��".split(""); +for(j = 0; j != D[205].length; ++j) if(D[205][j].charCodeAt(0) !== 0xFFFD) { e[D[205][j]] = 52480 + j; d[52480 + j] = D[205][j];} +D[206] = "������������������������������������������������檖檁檥檉檟檛檡檞檇檓�������檎檕檃檨檤檑橿檦檚檅檌檒歛殭氉濌澩濴濔濣濜濭濧濦濞濲������濝濢濨燡燱燨燲燤燰燢獳獮獯璗璲璫璐璪璭璱璥璯甐甑甒甏�����疄癃癈癉癇皤盩瞵瞫瞲瞷瞶瞴瞱瞨矰磳磽礂磻磼磿磲礅磹磾礄禫禨穜穛穖穘穔穚窾竀竁簅簏篲簀篿篻簎篴簋篳簂簉簃簁篸篽簆篰篱簐簊糨縭縼繂縳顈縸縪繉繀繇縩繌縰縻縶繄縺罅罿罾罽翴翲耬膻臄臌臊臅臇膼臩艛艚艜薃薀薏薧薕薠薋薣蕻薤薚薞蕷蕼薉薡蕺蕸蕗薎薖薆薍薙薝薁薢薂薈薅蕹��".split(""); +for(j = 0; j != D[206].length; ++j) if(D[206][j].charCodeAt(0) !== 0xFFFD) { e[D[206][j]] = 52736 + j; d[52736 + j] = D[206][j];} +D[207] = "������������������������������������������������蕶薘薐薟虨螾螪螭蟅螰�������螬螹螵螼螮蟉蟃蟂蟌螷螯蟄蟊螴螶螿螸螽蟞螲褵褳褼褾襁襒������褷襂覭覯覮觲觳謞謘謖謑謅謋謢謏謒謕謇謍謈謆謜謓謚豏豰�����豲豱豯貕貔賹赯蹎蹍蹓蹐蹌蹇轃轀邅遾鄸醚醢醛醙醟醡醝醠鎡鎃鎯鍤鍖鍇鍼鍘鍜鍶鍉鍐鍑鍠鍭鎏鍌鍪鍹鍗鍕鍒鍏鍱鍷鍻鍡鍞鍣鍧鍎鍙闇闀闉闃闅閷隮隰隬霠霟霘霝霙鞚鞡鞜鞞鞝韕韔韱顁顄顊顉顅顃餥餫餬餪餳餲餯餭餱餰馘馣馡騂駺駴駷駹駸駶駻駽駾駼騃骾髾髽鬁髼魈鮚鮨鮞鮛鮦鮡鮥鮤鮆��".split(""); +for(j = 0; j != D[207].length; ++j) if(D[207][j].charCodeAt(0) !== 0xFFFD) { e[D[207][j]] = 52992 + j; d[52992 + j] = D[207][j];} +D[208] = "������������������������������������������������鮢鮠鮯鴳鵁鵧鴶鴮鴯鴱�������鴸鴰鵅鵂鵃鴾鴷鵀鴽翵鴭麊麉麍麰黈黚黻黿鼤鼣鼢齔龠儱儭������儮嚘嚜嚗嚚嚝嚙奰嬼屩屪巀幭幮懘懟懭懮懱懪懰懫懖懩擿攄�����擽擸攁攃擼斔旛曚曛曘櫅檹檽櫡櫆檺檶檷櫇檴檭歞毉氋瀇瀌瀍瀁瀅瀔瀎濿瀀濻瀦濼濷瀊爁燿燹爃燽獶璸瓀璵瓁璾璶璻瓂甔甓癜癤癙癐癓癗癚皦皽盬矂瞺礌礓礔礉礐礒礑禭禬穟簜簩簙簠簟簭簝簦簨簢簥簰繜繐繖繣繘繢繟繑繠繗繓羵羳翷翸聵臑臒臐艟艞薴藆藀藃藂薳薵薽藇藄薿藋藎藈藅薱薶��".split(""); +for(j = 0; j != D[208].length; ++j) if(D[208][j].charCodeAt(0) !== 0xFFFD) { e[D[208][j]] = 53248 + j; d[53248 + j] = D[208][j];} +D[209] = "������������������������������������������������藒蘤薸薷薾虩蟧蟦蟢蟛�������蟫蟪蟥蟟蟳蟤蟔蟜蟓蟭蟘蟣蟗蟙蠁蟴蟨蟝襓襋襏襌襆襐襑襉������謪謧謣謳謰謵譇謯謼謾謱謥謷謦謶謮謤謻謽謺豂豵貙貘貗賾�����贄贂贀蹜蹢蹠蹗蹖蹞蹥蹧蹛蹚蹡蹝蹩蹔轆轇轈轋鄨鄺鄻鄾醨醥醧醯醪鎵鎌鎒鎷鎛鎝鎉鎧鎎鎪鎞鎦鎕鎈鎙鎟鎀鎍鎱鎑鎲鎤鎨鎴鎣闒闓闑隳雗雚巂雟雘雝霣霢霥鞬鞮鞨鞫鞤鞪鞢鞥韗韙韖韘韺顐顑顒颸饁餼餺騏騋騉騍騄騑騊騅騇騆髀髜鬈鬄鬅鬩鬵魊魌魋鯇鯆鯃鮿鯁鮵鮸鯓鮶鯄鮹鮽鵜鵓鵏鵊鵛鵋��".split(""); +for(j = 0; j != D[209].length; ++j) if(D[209][j].charCodeAt(0) !== 0xFFFD) { e[D[209][j]] = 53504 + j; d[53504 + j] = D[209][j];} +D[210] = "������������������������������������������������鵙鵖鵌鵗鵒鵔鵟鵘鵚麎�������麌黟鼁鼀鼖鼥鼫鼪鼩鼨齌齕儴儵劖勷厴嚫嚭嚦嚧嚪嚬壚壝壛������夒嬽嬾嬿巃幰徿懻攇攐攍攉攌攎斄旞旝曞櫧櫠櫌櫑櫙櫋櫟櫜�����櫐櫫櫏櫍櫞歠殰氌瀙瀧瀠瀖瀫瀡瀢瀣瀩瀗瀤瀜爌爊爇爂爅犥犦犤犣犡瓋瓅璷瓃甖癠矉矊矄矱礝礛礡礜礗礞禰穧穨簳簼簹簬簻糬糪繶繵繸繰繷繯繺繲繴繨罋罊羃羆羷翽翾聸臗臕舋艤艡艣藫藱藭藙藡藨藚藗藬藲藸藘藟藣藜藑藰藦藯藞藢蠀蟺蠃蟶蟷蠉蠌蠋蠆蟼蠈蟿蠊蠂襢襚襛襗襡襜襘襝襙覈覷��".split(""); +for(j = 0; j != D[210].length; ++j) if(D[210][j].charCodeAt(0) !== 0xFFFD) { e[D[210][j]] = 53760 + j; d[53760 + j] = D[210][j];} +D[211] = "������������������������������������������������覶觶譐譈譊譀譓譖譔譋�������譕譑譂譒譗豃豷豶貚贆贇贉趬趪趭趫蹭蹸蹳蹪蹯蹻軂轒轑轏������轐轓辴酀鄿醰醭鏞鏇鏏鏂鏚鏐鏹鏬鏌鏙鎩鏦鏊鏔鏮鏣鏕鏄鏎�����鏀鏒鎥鏧镽闚闛雡霩霫霬霨霦鞳鞷鞶韝韞韟顜顙顝顗颿颽颻颾饈饇饃馦馧騚騕騥騝騤騛騢騠騧騣騞騜騔髂鬋鬊鬎鬌鬷鯪鯫鯠鯞鯤鯦鯢鯰鯔鯗鯬鯜鯙鯥鯕鯡鯚鵷鶁鶊鶄鶈鵱鶀鵸鶆鶋鶌鵽鵫鵴鵵鵰鵩鶅鵳鵻鶂鵯鵹鵿鶇鵨麔麑黀黼鼭齀齁齍齖齗齘匷嚲嚵嚳壣孅巆巇廮廯忀忁懹攗攖攕攓旟曨曣曤��".split(""); +for(j = 0; j != D[211].length; ++j) if(D[211][j].charCodeAt(0) !== 0xFFFD) { e[D[211][j]] = 54016 + j; d[54016 + j] = D[211][j];} +D[212] = "������������������������������������������������櫳櫰櫪櫨櫹櫱櫮櫯瀼瀵�������瀯瀷瀴瀱灂瀸瀿瀺瀹瀪灀瀻瀳灁爓爔犨獽獼璺皫皪皾盭矌矎������矏矍矲礥礣礧礨礤礩禲穮穬穭竷籉籈籊籇籅糮繻繾纁纀羺翿�����聹臛臙艨艩蘢藿蘁藾蘛蘀藶蘄蘉蘅蘌藽蠙蠐蠑蠗蠓蠖襣襦覹觷譠譪譝譨譣譥譧譭趮躆躈躄轙轖轗轕轘轚邍酃酁醷醵醲醳鐋鐓鏻鐠鐏鐔鏾鐕鐐鐨鐙鐍鏵鐀鏷鐇鐎鐖鐒鏺鐉鏸鐼鐊鏿鏼鐌鏶鐑鐆闞闠闟霮霯鞹鞻韽韾顠顢顣顟飁飂饐饎饙饌饋饓騲騴騱騬騪騶騩騮騸騭髇髊髆鬐鬒鬑鰋鰈鯷鰅鰒鯸鱀��".split(""); +for(j = 0; j != D[212].length; ++j) if(D[212][j].charCodeAt(0) !== 0xFFFD) { e[D[212][j]] = 54272 + j; d[54272 + j] = D[212][j];} +D[213] = "������������������������������������������������鰇鰎鰆鰗鰔鰉鶟鶙鶤鶝�������鶒鶘鶐鶛鶠鶔鶜鶪鶗鶡鶚鶢鶨鶞鶣鶿鶩鶖鶦鶧麙麛麚黥黤黧������黦鼰鼮齛齠齞齝齙龑儺儹劘劗囃嚽嚾孈孇巋巏廱懽攛欂櫼欃�����櫸欀灃灄灊灈灉灅灆爝爚爙獾甗癪矐礭礱礯籔籓糲纊纇纈纋纆纍罍羻耰臝蘘蘪蘦蘟蘣蘜蘙蘧蘮蘡蘠蘩蘞蘥蠩蠝蠛蠠蠤蠜蠫衊襭襩襮襫觺譹譸譅譺譻贐贔趯躎躌轞轛轝酆酄酅醹鐿鐻鐶鐩鐽鐰鐹鐪鐷鐬鑀鐱闥闤闣霵霺鞿韡顤飉飆飀饘饖騹騽驆驄驂驁騺騿髍鬕鬗鬘鬖鬺魒鰫鰝鰜鰬鰣鰨鰩鰤鰡鶷��".split(""); +for(j = 0; j != D[213].length; ++j) if(D[213][j].charCodeAt(0) !== 0xFFFD) { e[D[213][j]] = 54528 + j; d[54528 + j] = D[213][j];} +D[214] = "������������������������������������������������鶶鶼鷁鷇鷊鷏鶾鷅鷃鶻�������鶵鷎鶹鶺鶬鷈鶱鶭鷌鶳鷍鶲鹺麜黫黮黭鼛鼘鼚鼱齎齥齤龒亹������囆囅囋奱孋孌巕巑廲攡攠攦攢欋欈欉氍灕灖灗灒爞爟犩獿瓘�����瓕瓙瓗癭皭礵禴穰穱籗籜籙籛籚糴糱纑罏羇臞艫蘴蘵蘳蘬蘲蘶蠬蠨蠦蠪蠥襱覿覾觻譾讄讂讆讅譿贕躕躔躚躒躐躖躗轠轢酇鑌鑐鑊鑋鑏鑇鑅鑈鑉鑆霿韣顪顩飋饔饛驎驓驔驌驏驈驊驉驒驐髐鬙鬫鬻魖魕鱆鱈鰿鱄鰹鰳鱁鰼鰷鰴鰲鰽鰶鷛鷒鷞鷚鷋鷐鷜鷑鷟鷩鷙鷘鷖鷵鷕鷝麶黰鼵鼳鼲齂齫龕龢儽劙��".split(""); +for(j = 0; j != D[214].length; ++j) if(D[214][j].charCodeAt(0) !== 0xFFFD) { e[D[214][j]] = 54784 + j; d[54784 + j] = D[214][j];} +D[215] = "������������������������������������������������壨壧奲孍巘蠯彏戁戃戄�������攩攥斖曫欑欒欏毊灛灚爢玂玁玃癰矔籧籦纕艬蘺虀蘹蘼蘱蘻������蘾蠰蠲蠮蠳襶襴襳觾讌讎讋讈豅贙躘轤轣醼鑢鑕鑝鑗鑞韄韅�����頀驖驙鬞鬟鬠鱒鱘鱐鱊鱍鱋鱕鱙鱌鱎鷻鷷鷯鷣鷫鷸鷤鷶鷡鷮鷦鷲鷰鷢鷬鷴鷳鷨鷭黂黐黲黳鼆鼜鼸鼷鼶齃齏齱齰齮齯囓囍孎屭攭曭曮欓灟灡灝灠爣瓛瓥矕礸禷禶籪纗羉艭虃蠸蠷蠵衋讔讕躞躟躠躝醾醽釂鑫鑨鑩雥靆靃靇韇韥驞髕魙鱣鱧鱦鱢鱞鱠鸂鷾鸇鸃鸆鸅鸀鸁鸉鷿鷽鸄麠鼞齆齴齵齶囔攮斸��".split(""); +for(j = 0; j != D[215].length; ++j) if(D[215][j].charCodeAt(0) !== 0xFFFD) { e[D[215][j]] = 55040 + j; d[55040 + j] = D[215][j];} +D[216] = "������������������������������������������������欘欙欗欚灢爦犪矘矙礹�������籩籫糶纚纘纛纙臠臡虆虇虈襹襺襼襻觿讘讙躥躤躣鑮鑭鑯鑱������鑳靉顲饟鱨鱮鱭鸋鸍鸐鸏鸒鸑麡黵鼉齇齸齻齺齹圞灦籯蠼趲�����躦釃鑴鑸鑶鑵驠鬮鱴鱳鱱鱵鸔鸓黶鼊龤灨灥糷虪蠾蠽蠿讞貜躩軉靋顳顴飌饡馫驤驦驧鬤鸕鸗齈戇欞爧虌躨钂钀钁驩驨鸙虋讟钃鱹麷癵驫鱺鸝灩灪爩麤齾齉龘������������������������������������������������������������".split(""); +for(j = 0; j != D[216].length; ++j) if(D[216][j].charCodeAt(0) !== 0xFFFD) { e[D[216][j]] = 55296 + j; d[55296 + j] = D[216][j];} +D[223] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];} +D[224] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];} +D[225] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];} +D[226] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];} +D[227] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];} +D[228] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];} +D[229] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];} +D[230] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];} +D[231] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];} +D[232] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];} +D[233] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[233].length; ++j) if(D[233][j].charCodeAt(0) !== 0xFFFD) { e[D[233][j]] = 59648 + j; d[59648 + j] = D[233][j];} +D[234] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];} +D[235] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[235].length; ++j) if(D[235][j].charCodeAt(0) !== 0xFFFD) { e[D[235][j]] = 60160 + j; d[60160 + j] = D[235][j];} +D[236] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[236].length; ++j) if(D[236][j].charCodeAt(0) !== 0xFFFD) { e[D[236][j]] = 60416 + j; d[60416 + j] = D[236][j];} +D[237] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[237].length; ++j) if(D[237][j].charCodeAt(0) !== 0xFFFD) { e[D[237][j]] = 60672 + j; d[60672 + j] = D[237][j];} +D[238] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[238].length; ++j) if(D[238][j].charCodeAt(0) !== 0xFFFD) { e[D[238][j]] = 60928 + j; d[60928 + j] = D[238][j];} +D[239] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];} +D[240] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[240].length; ++j) if(D[240][j].charCodeAt(0) !== 0xFFFD) { e[D[240][j]] = 61440 + j; d[61440 + j] = D[240][j];} +D[241] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[241].length; ++j) if(D[241][j].charCodeAt(0) !== 0xFFFD) { e[D[241][j]] = 61696 + j; d[61696 + j] = D[241][j];} +D[242] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[242].length; ++j) if(D[242][j].charCodeAt(0) !== 0xFFFD) { e[D[242][j]] = 61952 + j; d[61952 + j] = D[242][j];} +D[243] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[243].length; ++j) if(D[243][j].charCodeAt(0) !== 0xFFFD) { e[D[243][j]] = 62208 + j; d[62208 + j] = D[243][j];} +D[244] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[244].length; ++j) if(D[244][j].charCodeAt(0) !== 0xFFFD) { e[D[244][j]] = 62464 + j; d[62464 + j] = D[244][j];} +D[245] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[245].length; ++j) if(D[245][j].charCodeAt(0) !== 0xFFFD) { e[D[245][j]] = 62720 + j; d[62720 + j] = D[245][j];} +D[246] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[246].length; ++j) if(D[246][j].charCodeAt(0) !== 0xFFFD) { e[D[246][j]] = 62976 + j; d[62976 + j] = D[246][j];} +D[247] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[247].length; ++j) if(D[247][j].charCodeAt(0) !== 0xFFFD) { e[D[247][j]] = 63232 + j; d[63232 + j] = D[247][j];} +D[248] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[248].length; ++j) if(D[248][j].charCodeAt(0) !== 0xFFFD) { e[D[248][j]] = 63488 + j; d[63488 + j] = D[248][j];} +D[249] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[249].length; ++j) if(D[249][j].charCodeAt(0) !== 0xFFFD) { e[D[249][j]] = 63744 + j; d[63744 + j] = D[249][j];} +D[250] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[250].length; ++j) if(D[250][j].charCodeAt(0) !== 0xFFFD) { e[D[250][j]] = 64000 + j; d[64000 + j] = D[250][j];} +D[251] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[251].length; ++j) if(D[251][j].charCodeAt(0) !== 0xFFFD) { e[D[251][j]] = 64256 + j; d[64256 + j] = D[251][j];} +D[252] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[252].length; ++j) if(D[252][j].charCodeAt(0) !== 0xFFFD) { e[D[252][j]] = 64512 + j; d[64512 + j] = D[252][j];} +return {"enc": e, "dec": d }; })(); diff --git a/node_modules/codepage/bits/20002.js b/node_modules/codepage/bits/20002.js new file mode 100644 index 000000000..ae744546d --- /dev/null +++ b/node_modules/codepage/bits/20002.js @@ -0,0 +1,167 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[20002] = (function(){ var d = [], e = {}, D = [], j; +D[0] = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€���������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];} +D[129] = "������������������������������������������������ ,、。․•;:?!�������︰…‥﹐﹑‧﹒﹔﹕﹖﹗︱–︲—︳_︴﹏()︵︶{}︷������︸〔〕︹︺【】︻︼《》︽︾〈〉︿﹀「」﹁﹂『』﹃﹄﹙�����﹚﹛﹜﹝﹞‘’“”〝〞′‵#&*※§〃○●△▲◎☆★◇◆□■▽▼㊣℅‾ ̄��﹉﹊﹍﹎﹋﹌﹟﹠﹡+-×÷±√<>=≦≧≠∞≒≡﹢﹣﹤﹥﹦∼∩∪⊥∠∟⊿㏒㏑∫∮∵∴♀♂⊕⊙↑↓→←↖↗↙↘∥∣/\�﹨$¥〒¢£%@℃℉﹩﹪﹫㏕㎜㎝㎞㏎㎡㎎㎏㏄゜兙兛兞兝兡兣��".split(""); +for(j = 0; j != D[129].length; ++j) if(D[129][j].charCodeAt(0) !== 0xFFFD) { e[D[129][j]] = 33024 + j; d[33024 + j] = D[129][j];} +D[130] = "������������������������������������������������嗧瓩糎▁▂▃▄▅▆▇�������█▏▎▍▌▋▊▉┼┴┬┤├▔─│▕┌┐└┘╭╮╰╯═������╞╪╡◢◣◥◤╱╲╳¨˄ヽヾゝゞ�〄々〆〇ー[]✽ぁ�����あぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただち0123456789ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩ〡〢〣〤〥〦〧〨〩�卄�ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzΑΒΓΔΕΖΗΘΙΚ��".split(""); +for(j = 0; j != D[130].length; ++j) if(D[130][j].charCodeAt(0) !== 0xFFFD) { e[D[130][j]] = 33280 + j; d[33280 + j] = D[130][j];} +D[131] = "������������������������������������������������ΛΜΝΞΟΠΡΣΤΥ�������ΦΧΨΩαβγδεζηθικλμνξοπρστυφχ������ψωㄅㄆㄇㄈㄉㄊㄋㄌㄍㄎㄏㄐㄑㄒㄓㄔㄕㄖㄗㄘㄙㄚㄛㄜ�����ㄝㄞㄟㄠㄡㄢㄣㄤㄥㄦㄧㄨㄩ˙˟ˊˇˋぢっつづてでとどなにぬねのは①②③④⑤⑥⑦⑧⑨⑩⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽ⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをんァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼ��".split(""); +for(j = 0; j != D[131].length; ++j) if(D[131][j].charCodeAt(0) !== 0xFFFD) { e[D[131][j]] = 33536 + j; d[33536 + j] = D[131][j];} +D[132] = "��������������������������������������������������丶丿�亅�亠�����������冂冖冫����勹��匸��卩�厶�����夂����������宀������巛����幺广廴���彐彡�����������攴����无��������������������������������疒癶��������������������������������������������������������辵��������隶��������������������".split(""); +for(j = 0; j != D[132].length; ++j) if(D[132][j].charCodeAt(0) !== 0xFFFD) { e[D[132][j]] = 33792 + j; d[33792 + j] = D[132][j];} +D[133] = "��������������������������������������������������������������������������������鵙鵖鵌鵗鵒鵔鵟鵘鵚麎麌������黟鼁鼀鼖鼥鼫鼪鼩鼨齌齕儴儵劖勷厴嚫嚭嚦嚧嚪嚬壚壝壛夒�����嬽嬾嬿巃幰徿懻攇攐攍攉攌攎斄旞旝曞櫧櫠櫌櫑櫙櫋櫟櫜櫐櫫櫏櫍櫞歠殰氌瀙瀧瀠瀖瀫瀡瀢瀣瀩瀗瀤瀜爌爊爇爂爅犥犦犤犣犡瓋瓅璷瓃甖癠矉矊矄矱礝礛礡礜礗礞禰穧穨簳簼簹簬簻糬糪繶繵繸繰繷繯繺繲繴繨罋罊羃羆羷翽翾聸臗臕舋艤艡艣藫藱藭藙藡藨藚藗藬藲藸藘藟藣藜藑藰藦藯藞藢��".split(""); +for(j = 0; j != D[133].length; ++j) if(D[133][j].charCodeAt(0) !== 0xFFFD) { e[D[133][j]] = 34048 + j; d[34048 + j] = D[133][j];} +D[134] = "������������������������������������������������蠀蟺蠃蟶蟷蠉蠌蠋蠆蟼�������蠈蟿蠊蠂襢襚襛襗襡襜襘襝襙覈覷覶觶譐譈譊譀譓譖譔譋譕������譑譂譒譗豃豷豶貚贆贇贉趬趪趭趫蹭蹸蹳蹪蹯蹻軂轒轑轏轐�����轓辴酀鄿醰醭鏞鏇鏏鏂鏚鏐鏹鏬鏌鏙鎩鏦鏊鏔鏮鏣鏕鏄鏎鏀鏒鎥鏧镽闚闛雡霩霫霬霨霦鞳鞷鞶韝韞韟顜顙顝顗颿颽颻颾饈饇饃馦馧騚騕騥騝騤騛騢騠騧騣騞騜騔髂鬋鬊鬎鬌鬷鯪鯫鯠鯞鯤鯦鯢鯰鯔鯗鯬鯜鯙鯥鯕鯡鯚鵷鶁鶊鶄鶈鵱鶀鵸鶆鶋鶌鵽鵫鵴鵵鵰鵩鶅鵳鵻鶂鵯鵹鵿鶇鵨麔麑黀黼鼭齀齁��".split(""); +for(j = 0; j != D[134].length; ++j) if(D[134][j].charCodeAt(0) !== 0xFFFD) { e[D[134][j]] = 34304 + j; d[34304 + j] = D[134][j];} +D[135] = "������������������������������������������������齍齖齗齘匷嚲嚵嚳壣孅�������巆巇廮廯忀忁懹攗攖攕攓旟曨曣曤櫳櫰櫪櫨櫹櫱櫮櫯瀼瀵瀯������瀷瀴瀱灂瀸瀿瀺瀹瀪灀瀻瀳灁爓爔犨獽獼璺皫皪皾盭矌矎矏�����矍矲礥礣礧礨礤礩禲穮穬穭竷籉籈籊籇籅糮繻繾纁纀羺翿聹臛臙艨艩蘢藿蘁藾蘛蘀藶蘄蘉蘅蘌藽蠙蠐蠑蠗蠓蠖襣襦覹觷譠譪譝譨譣譥譧譭趮躆躈躄轙轖轗轕轘轚邍酃酁醷醵醲醳鐋鐓鏻鐠鐏鐔鏾鐕鐐鐨鐙鐍鏵鐀鏷鐇鐎鐖鐒鏺鐉鏸鐼鐊鏿鏼鐌鏶鐑鐆闞闠闟霮霯鞹鞻韽韾顠顢顣顟飁飂饐饎饙饌��".split(""); +for(j = 0; j != D[135].length; ++j) if(D[135][j].charCodeAt(0) !== 0xFFFD) { e[D[135][j]] = 34560 + j; d[34560 + j] = D[135][j];} +D[136] = "������������������������������������������������饋饓騲騴騱騬騪騶騩騮�������騸騭髇髊髆鬐鬒鬑鰋鰈鯷鰅鰒鯸鱀鰇鰎鰆鰗鰔鰉鶟鶙鶤鶝鶒������鶘鶐鶛鶠鶔鶜鶪鶗鶡鶚鶢鶨鶞鶣鶿鶩鶖鶦鶧麙麛麚黥黤黧黦�����鼰鼮齛齠齞齝齙龑儺儹劘劗囃嚽嚾孈孇巋巏廱懽攛欂櫼欃櫸欀灃灄灊灈灉灅灆爝爚爙獾甗癪矐礭礱礯籔籓糲纊纇纈纋纆纍罍羻耰臝蘘蘪蘦蘟蘣蘜蘙蘧蘮蘡蘠蘩蘞蘥蠩蠝蠛蠠蠤蠜蠫衊襭襩襮襫觺譹譸譅譺譻贐贔趯躎躌轞轛轝酆酄酅醹鐿鐻鐶鐩鐽鐰鐹鐪鐷鐬鑀鐱闥闤闣霵霺鞿韡顤飉飆飀饘饖��".split(""); +for(j = 0; j != D[136].length; ++j) if(D[136][j].charCodeAt(0) !== 0xFFFD) { e[D[136][j]] = 34816 + j; d[34816 + j] = D[136][j];} +D[137] = "������������������������������������������������騹騽驆驄驂驁騺騿髍鬕�������鬗鬘鬖鬺魒鰫鰝鰜鰬鰣鰨鰩鰤鰡鶷鶶鶼鷁鷇鷊鷏鶾鷅鷃鶻鶵������鷎鶹鶺鶬鷈鶱鶭鷌鶳鷍鶲鹺麜黫黮黭鼛鼘鼚鼱齎齥齤龒亹囆�����囅囋奱孋孌巕巑廲攡攠攦攢欋欈欉氍灕灖灗灒爞爟犩獿瓘瓕瓙瓗癭皭礵禴穰穱籗籜籙籛籚糴糱纑罏羇臞艫蘴蘵蘳蘬蘲蘶蠬蠨蠦蠪蠥襱覿覾觻譾讄讂讆讅譿贕躕躔躚躒躐躖躗轠轢酇鑌鑐鑊鑋鑏鑇鑅鑈鑉鑆霿韣顪顩飋饔饛驎驓驔驌驏驈驊驉驒驐髐鬙鬫鬻魖魕鱆鱈鰿鱄鰹鰳鱁鰼鰷鰴鰲鰽鰶鷛鷒��".split(""); +for(j = 0; j != D[137].length; ++j) if(D[137][j].charCodeAt(0) !== 0xFFFD) { e[D[137][j]] = 35072 + j; d[35072 + j] = D[137][j];} +D[138] = "������������������������������������������������鷞鷚鷋鷐鷜鷑鷟鷩鷙鷘�������鷖鷵鷕鷝麶黰鼵鼳鼲齂齫龕龢儽劙壨壧奲孍巘蠯彏戁戃戄攩������攥斖曫欑欒欏毊灛灚爢玂玁玃癰矔籧籦纕艬蘺虀蘹蘼蘱蘻蘾�����蠰蠲蠮蠳襶襴襳觾讌讎讋讈豅贙躘轤轣醼鑢鑕鑝鑗鑞韄韅頀驖驙鬞鬟鬠鱒鱘鱐鱊鱍鱋鱕鱙鱌鱎鷻鷷鷯鷣鷫鷸鷤鷶鷡鷮鷦鷲鷰鷢鷬鷴鷳鷨鷭黂黐黲黳鼆鼜鼸鼷鼶齃齏齱齰齮齯囓囍孎屭攭曭曮欓灟灡灝灠爣瓛瓥矕礸禷禶籪纗羉艭虃蠸蠷蠵衋讔讕躞躟躠躝醾醽釂鑫鑨鑩雥靆靃靇韇韥驞髕魙鱣鱧��".split(""); +for(j = 0; j != D[138].length; ++j) if(D[138][j].charCodeAt(0) !== 0xFFFD) { e[D[138][j]] = 35328 + j; d[35328 + j] = D[138][j];} +D[139] = "������������������������������������������������鱦鱢鱞鱠鸂鷾鸇鸃鸆鸅�������鸀鸁鸉鷿鷽鸄麠鼞齆齴齵齶囔攮斸欘欙欗欚灢爦犪矘矙礹籩������籫糶纚纘纛纙臠臡虆虇虈襹襺襼襻觿讘讙躥躤躣鑮鑭鑯鑱鑳�����靉顲饟鱨鱮鱭鸋鸍鸐鸏鸒鸑麡黵鼉齇齸齻齺齹圞灦籯蠼趲躦釃鑴鑸鑶鑵驠鬮鱴鱳鱱鱵鸔鸓黶鼊龤灨灥糷虪蠾蠽蠿讞貜躩軉靋顳顴飌饡馫驤驦驧鬤鸕鸗齈戇欞爧虌躨钂钀钁驩驨鸙虋讟钃鱹麷癵驫鱺鸝灩灪爩麤齾齉龘�����������������������������������".split(""); +for(j = 0; j != D[139].length; ++j) if(D[139][j].charCodeAt(0) !== 0xFFFD) { e[D[139][j]] = 35584 + j; d[35584 + j] = D[139][j];} +D[140] = "����������������������������������������������������������������������������".split(""); +for(j = 0; j != D[140].length; ++j) if(D[140][j].charCodeAt(0) !== 0xFFFD) { e[D[140][j]] = 35840 + j; d[35840 + j] = D[140][j];} +D[141] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[141].length; ++j) if(D[141][j].charCodeAt(0) !== 0xFFFD) { e[D[141][j]] = 36096 + j; d[36096 + j] = D[141][j];} +D[142] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[142].length; ++j) if(D[142][j].charCodeAt(0) !== 0xFFFD) { e[D[142][j]] = 36352 + j; d[36352 + j] = D[142][j];} +D[143] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[143].length; ++j) if(D[143][j].charCodeAt(0) !== 0xFFFD) { e[D[143][j]] = 36608 + j; d[36608 + j] = D[143][j];} +D[144] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[144].length; ++j) if(D[144][j].charCodeAt(0) !== 0xFFFD) { e[D[144][j]] = 36864 + j; d[36864 + j] = D[144][j];} +D[145] = "�����������������������������������������������������������������������������������������������������������������������������������¬¦��㈱№℡������������������������".split(""); +for(j = 0; j != D[145].length; ++j) if(D[145][j].charCodeAt(0) !== 0xFFFD) { e[D[145][j]] = 37120 + j; d[37120 + j] = D[145][j];} +D[146] = "����������������������������������������������������������������������������������������������������������������������������������������������������������������一乙丁七乃九了二人儿入八几刀刁力匕十卜又三下丈上丫丸凡久么也乞于亡兀刃勺千叉口土士夕大女子孑孓寸小尢尸山川工己已巳巾干廾弋弓才丑丐不中丰丹之尹予云井互五亢仁什仃仆仇仍今介仄元允內六兮公冗凶��".split(""); +for(j = 0; j != D[146].length; ++j) if(D[146][j].charCodeAt(0) !== 0xFFFD) { e[D[146][j]] = 37376 + j; d[37376 + j] = D[146][j];} +D[147] = "������������������������������������������������分切刈勻勾勿化匹午升�������卅卞厄友及反壬天夫太夭孔少尤尺屯巴幻廿弔引心戈戶手扎������支文斗斤方日曰月木欠止歹毋比毛氏水火爪父爻片牙牛犬王�����丙世丕且丘主乍乏乎以付仔仕他仗代令仙仞充兄冉冊冬凹出凸刊加功包匆北匝仟半卉卡占卯卮去可古右召叮叩叨叼司叵叫另只史叱台句叭叻四囚外央失奴奶孕它尼巨巧左市布平幼弁弘弗必戊打扔扒扑斥旦朮本未末札正母民氐永汁汀氾犯玄玉瓜瓦甘生用甩田由甲申疋白皮皿目矛矢石示禾穴��".split(""); +for(j = 0; j != D[147].length; ++j) if(D[147][j].charCodeAt(0) !== 0xFFFD) { e[D[147][j]] = 37632 + j; d[37632 + j] = D[147][j];} +D[148] = "������������������������������������������������立丞丟乒乓乩亙交亦亥�������仿伉伙伊伕伍伐休伏仲件任仰仳份企伋光兇兆先全共再冰列������刑划刎刖劣匈匡匠印危吉吏同吊吐吁吋各向名合吃后吆吒因�����回囝圳地在圭圬圯圩夙多夷夸妄奸妃好她如妁字存宇守宅安寺尖屹州帆并年式弛忙忖戎戌戍成扣扛托收早旨旬旭曲曳有朽朴朱朵次此死氖汝汗汙江池汐汕污汛汍汎灰牟牝百竹米糸缶羊羽老考而耒耳聿肉肋肌臣自至臼舌舛舟艮色艾虫血行衣西阡串亨位住佇佗佞伴佛何估佐佑伽伺伸佃佔似但��".split(""); +for(j = 0; j != D[148].length; ++j) if(D[148][j].charCodeAt(0) !== 0xFFFD) { e[D[148][j]] = 37888 + j; d[37888 + j] = D[148][j];} +D[149] = "������������������������������������������������佣作你伯低伶余佝佈佚�������兌克免兵冶冷別判利刪刨劫助努劬匣即卵吝吭吞吾否呎吧呆������呃吳呈呂君吩告吹吻吸吮吵吶吠吼呀吱含吟听囪困囤囫坊坑�����址坍均坎圾坐坏圻壯夾妝妒妨妞妣妙妖妍妤妓妊妥孝孜孚孛完宋宏尬局屁尿尾岐岑岔岌巫希序庇床廷弄弟彤形彷役忘忌志忍忱快忸忪戒我抄抗抖技扶抉扭把扼找批扳抒扯折扮投抓抑抆改攻攸旱更束李杏材村杜杖杞杉杆杠杓杗步每求汞沙沁沈沉沅沛汪決沐汰沌汨沖沒汽沃汲汾汴沆汶沍沔沘��".split(""); +for(j = 0; j != D[149].length; ++j) if(D[149][j].charCodeAt(0) !== 0xFFFD) { e[D[149][j]] = 38144 + j; d[38144 + j] = D[149][j];} +D[150] = "������������������������������������������������沂灶灼災灸牢牡牠狄狂�������玖甬甫男甸皂盯矣私秀禿究系罕肖肓肝肘肛肚育良芒芋芍見������角言谷豆豕貝赤走足身車辛辰迂迆迅迄巡邑邢邪邦那酉釆里�����防阮阱阪阬並乖乳事些亞享京佯依侍佳使佬供例來侃佰併侈佩佻侖佾侏侑佺兔兒兕兩具其典冽函刻券刷刺到刮制剁劾劻卒協卓卑卦卷卸卹取叔受味呵咖呸咕咀呻呷咄咒咆呼咐呱呶和咚呢周咋命咎固垃坷坪坩坡坦坤坼夜奉奇奈奄奔妾妻委妹妮姑姆姐姍始姓姊妯妳姒姅孟孤季宗定官宜宙宛尚��".split(""); +for(j = 0; j != D[150].length; ++j) if(D[150][j].charCodeAt(0) !== 0xFFFD) { e[D[150][j]] = 38400 + j; d[38400 + j] = D[150][j];} +D[151] = "������������������������������������������������屈居屆岷岡岸岩岫岱岳�������帘帚帖帕帛帑幸庚店府底庖延弦弧弩往征彿彼忝忠忽念忿怏������怔怯怵怖怪怕怡性怩怫怛或戕房戾所承拉拌拄抿拂抹拒招披�����拓拔拋拈抨抽押拐拙拇拍抵拚抱拘拖拗拆抬拎放斧於旺昔易昌昆昂明昀昏昕昊昇服朋杭枋枕東果杳杷枇枝林杯杰板枉松析杵枚枓杼杪杲欣武歧歿氓氛泣注泳沱泌泥河沽沾沼波沫法泓沸泄油況沮泗泅泱沿治泡泛泊沬泯泜泖泠炕炎炒炊炙爬爭爸版牧物狀狎狙狗狐玩玨玟玫玥甽疝疙疚的盂盲直��".split(""); +for(j = 0; j != D[151].length; ++j) if(D[151][j].charCodeAt(0) !== 0xFFFD) { e[D[151][j]] = 38656 + j; d[38656 + j] = D[151][j];} +D[152] = "������������������������������������������������知矽社祀祁秉秈空穹竺�������糾罔羌羋者肺肥肢肱股肫肩肴肪肯臥臾舍芳芝芙芭芽芟芹花������芬芥芯芸芣芰芾芷虎虱初表軋迎返近邵邸邱邶采金長門阜陀�����阿阻附陂隹雨青非亟亭亮信侵侯便俠俑俏保促侶俘俟俊俗侮俐俄係俚俎俞侷兗冒冑冠剎剃削前剌剋則勇勉勃勁匍南卻厚叛咬哀咨哎哉咸咦咳哇哂咽咪品哄哈咯咫咱咻咩咧咿囿垂型垠垣垢城垮垓奕契奏奎奐姜姘姿姣姨娃姥姪姚姦威姻孩宣宦室客宥封屎屏屍屋峙峒巷帝帥帟幽庠度建弈弭彥很��".split(""); +for(j = 0; j != D[152].length; ++j) if(D[152][j].charCodeAt(0) !== 0xFFFD) { e[D[152][j]] = 38912 + j; d[38912 + j] = D[152][j];} +D[153] = "������������������������������������������������待徊律徇後徉怒思怠急�������怎怨恍恰恨恢恆恃恬恫恪恤扁拜挖按拼拭持拮拽指拱拷拯括������拾拴挑挂政故斫施既春昭映昧是星昨昱昤曷柿染柱柔某柬架�����枯柵柩柯柄柑枴柚查枸柏柞柳枰柙柢柝柒歪殃殆段毒毗氟泉洋洲洪流津洌洱洞洗活洽派洶洛泵洹洧洸洩洮洵洎洫炫為炳炬炯炭炸炮炤爰牲牯牴狩狠狡玷珊玻玲珍珀玳甚甭畏界畎畋疫疤疥疢疣癸皆皇皈盈盆盃盅省盹相眉看盾盼眇矜砂研砌砍祆祉祈祇禹禺科秒秋穿突竿竽籽紂紅紀紉紇約紆缸��".split(""); +for(j = 0; j != D[153].length; ++j) if(D[153][j].charCodeAt(0) !== 0xFFFD) { e[D[153][j]] = 39168 + j; d[39168 + j] = D[153][j];} +D[154] = "������������������������������������������������美羿耐耍耑耶胖胥胚胃�������胄背胡胛胎胞胤胝致舢苧范茅苣苛苦茄若茂茉苒苗英茁苜苔������苑苞苓苟苯茆虐虹虻虺衍衫要觔計訂訃貞負赴赳趴軍軌述迦�����迢迪迥迭迫迤迨郊郎郁郃酋酊重閂限陋陌降面革韋韭音頁風飛食首香乘亳倌倍倣俯倦倥俸倩倖倆值借倚倒們俺倀倔倨俱倡個候倘俳修倭倪俾倫倉兼冤冥冢凍凌准凋剖剜剔剛剝匪卿原厝叟哨唐唁唷哼哥哲唆哺唔哩哭員唉哮哪哦唧唇哽唏圃圄埂埔埋埃堉夏套奘奚娑娘娜娟娛娓姬娠娣娩娥娌娉��".split(""); +for(j = 0; j != D[154].length; ++j) if(D[154][j].charCodeAt(0) !== 0xFFFD) { e[D[154][j]] = 39424 + j; d[39424 + j] = D[154][j];} +D[155] = "������������������������������������������������孫屘宰害家宴宮宵容宸�������射屑展屐峭峽峻峪峨峰島崁峴差席師庫庭座弱徒徑徐恙恣恥������恐恕恭恩息悄悟悚悍悔悌悅悖扇拳挈拿捎挾振捕捂捆捏捉挺�����捐挽挪挫挨捍捌效敉料旁旅時晉晏晃晒晌晅晁書朔朕朗校核案框桓根桂桔栩梳栗桌桑栽柴桐桀格桃株桅栓栘桁殊殉殷氣氧氨氦氤泰浪涕消涇浦浸海浙涓浬涉浮浚浴浩涌涊浹涅浥涔烊烘烤烙烈烏爹特狼狹狽狸狷玆班琉珮珠珪珞畔畝畜畚留疾病症疲疳疽疼疹痂疸皋皰益盍盎眩真眠眨矩砰砧砸��".split(""); +for(j = 0; j != D[155].length; ++j) if(D[155][j].charCodeAt(0) !== 0xFFFD) { e[D[155][j]] = 39680 + j; d[39680 + j] = D[155][j];} +D[156] = "������������������������������������������������砝破砷砥砭砠砟砲祕祐�������祠祟祖神祝祗祚秤秣秧租秦秩秘窄窈站笆笑粉紡紗紋紊素索������純紐紕級紜納紙紛缺罟羔翅翁耆耄耘耕耙耗耽耿胱脂胰脅胭�����胴脆胸胳脈能脊胼胯臭臬舀舐航舫舨般芻茫荒荔荊茸荐草茵茴荏茲茹茶茗荀茱茨荃虔蚊蚪蚓蚤蚩蚌蚣蚜衰衷袁袂衽衹記訐討訌訕訊託訓訖訏訑豈豺豹財貢起躬軒軔軏辱送逆迷退迺迴逃追逅迸邕郡郝郢酒配酌釘針釗釜釙閃院陣陡陛陝除陘陞隻飢馬骨高鬥鬲鬼乾偺偽停假偃偌做偉健偶偎偕偵��".split(""); +for(j = 0; j != D[156].length; ++j) if(D[156][j].charCodeAt(0) !== 0xFFFD) { e[D[156][j]] = 39936 + j; d[39936 + j] = D[156][j];} +D[157] = "������������������������������������������������側偷偏倏偯偭兜冕凰剪�������副勒務勘動匐匏匙匿區匾參曼商啪啦啄啞啡啃啊唱啖問啕唯������啤唸售啜唬啣唳啁啗圈國圉域堅堊堆埠埤基堂堵執培夠奢娶�����婁婉婦婪婀娼婢婚婆婊孰寇寅寄寂宿密尉專將屠屜屝崇崆崎崛崖崢崑崩崔崙崤崧崗巢常帶帳帷康庸庶庵庾張強彗彬彩彫得徙從徘御徠徜恿患悉悠您惋悴惦悽情悻悵惜悼惘惕惆惟悸惚惇戚戛扈掠控捲掖探接捷捧掘措捱掩掉掃掛捫推掄授掙採掬排掏掀捻捩捨捺敝敖救教敗啟敏敘敕敔斜斛斬族��".split(""); +for(j = 0; j != D[157].length; ++j) if(D[157][j].charCodeAt(0) !== 0xFFFD) { e[D[157][j]] = 40192 + j; d[40192 + j] = D[157][j];} +D[158] = "������������������������������������������������旋旌旎晝晚晤晨晦晞曹�������勗望梁梯梢梓梵桿桶梱梧梗械梃棄梭梆梅梔條梨梟梡梂欲殺������毫毬氫涎涼淳淙液淡淌淤添淺清淇淋涯淑涮淞淹涸混淵淅淒�����渚涵淚淫淘淪深淮淨淆淄涪淬涿淦烹焉焊烽烯爽牽犁猜猛猖猓猙率琅琊球理現琍瓠瓶瓷甜產略畦畢異疏痔痕疵痊痍皎盔盒盛眷眾眼眶眸眺硫硃硎祥票祭移窒窕笠笨笛第符笙笞笮粒粗粕絆絃統紮紹紼絀細紳組累終紲紱缽羞羚翌翎習耜聊聆脯脖脣脫脩脰脤舂舵舷舶船莎莞莘荸莢莖莽莫莒莊莓��".split(""); +for(j = 0; j != D[158].length; ++j) if(D[158][j].charCodeAt(0) !== 0xFFFD) { e[D[158][j]] = 40448 + j; d[40448 + j] = D[158][j];} +D[159] = "������������������������������������������������莉莠荷荻荼莆莧處彪蛇�������蛀蚶蛄蚵蛆蛋蚱蚯蛉術袞袈被袒袖袍袋覓規訪訝訣訥許設訟������訛訢豉豚販責貫貨貪貧赧赦趾趺軛軟這逍通逗連速逝逐逕逞�����造透逢逖逛途部郭都酗野釵釦釣釧釭釩閉陪陵陳陸陰陴陶陷陬雀雪雩章竟頂頃魚鳥鹵鹿麥麻傢傍傅備傑傀傖傘傚最凱割剴創剩勞勝勛博厥啻喀喧啼喊喝喘喂喜喪喔喇喋喃喳單喟唾喲喚喻喬喱啾喉喫喙圍堯堪場堤堰報堡堝堠壹壺奠婷媚婿媒媛媧孳孱寒富寓寐尊尋就嵌嵐崴嵇巽幅帽幀幃幾廊��".split(""); +for(j = 0; j != D[159].length; ++j) if(D[159][j].charCodeAt(0) !== 0xFFFD) { e[D[159][j]] = 40704 + j; d[40704 + j] = D[159][j];} +D[160] = "������������������������������������������������廁廂廄弼彭復循徨惑惡�������悲悶惠愜愣惺愕惰惻惴慨惱愎惶愉愀愒戟扉掣掌描揀揩揉揆������揍插揣提握揖揭揮捶援揪換摒揚揹敞敦敢散斑斐斯普晰晴晶�����景暑智晾晷曾替期朝棺棕棠棘棗椅棟棵森棧棹棒棲棣棋棍植椒椎棉棚楮棻款欺欽殘殖殼毯氮氯氬港游湔渡渲湧湊渠渥渣減湛湘渤湖湮渭渦湯渴湍渺測湃渝渾滋溉渙湎湣湄湲湩湟焙焚焦焰無然煮焜牌犄犀猶猥猴猩琺琪琳琢琥琵琶琴琯琛琦琨甥甦畫番痢痛痣痙痘痞痠登發皖皓皴盜睏短硝硬硯��".split(""); +for(j = 0; j != D[160].length; ++j) if(D[160][j].charCodeAt(0) !== 0xFFFD) { e[D[160][j]] = 40960 + j; d[40960 + j] = D[160][j];} +D[161] = "������������������������������������������������稍稈程稅稀窘窗窖童竣�������等策筆筐筒答筍筋筏筑粟粥絞結絨絕紫絮絲絡給絢絰絳善翔������翕耋聒肅腕腔腋腑腎脹腆脾腌腓腴舒舜菩萃菸萍菠菅萋菁華�����菱菴著萊菰萌菌菽菲菊萸萎萄菜萇菔菟虛蛟蛙蛭蛔蛛蛤蛐蛞街裁裂袱覃視註詠評詞証詁詔詛詐詆訴診訶詖象貂貯貼貳貽賁費賀貴買貶貿貸越超趁跎距跋跚跑跌跛跆軻軸軼辜逮逵週逸進逶鄂郵鄉郾酣酥量鈔鈕鈣鈉鈞鈍鈐鈇鈑閔閏開閑間閒閎隊階隋陽隅隆隍陲隄雁雅雄集雇雯雲韌項順須飧飪��".split(""); +for(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];} +D[162] = "������������������������������������������������飯飩飲飭馮馭黃黍黑亂�������傭債傲傳僅傾催傷傻傯僇剿剷剽募勦勤勢勣匯嗟嗨嗓嗦嗎嗜������嗇嗑嗣嗤嗯嗚嗡嗅嗆嗥嗉園圓塞塑塘塗塚塔填塌塭塊塢塒塋�����奧嫁嫉嫌媾媽媼媳嫂媲嵩嵯幌幹廉廈弒彙徬微愚意慈感想愛惹愁愈慎慌慄慍愾愴愧愍愆愷戡戢搓搾搞搪搭搽搬搏搜搔損搶搖搗搆敬斟新暗暉暇暈暖暄暘暍會榔業楚楷楠楔極椰概楊楨楫楞楓楹榆楝楣楛歇歲毀殿毓毽溢溯滓溶滂源溝滇滅溥溘溼溺溫滑準溜滄滔溪溧溴煎煙煩煤煉照煜煬煦煌煥��".split(""); +for(j = 0; j != D[162].length; ++j) if(D[162][j].charCodeAt(0) !== 0xFFFD) { e[D[162][j]] = 41472 + j; d[41472 + j] = D[162][j];} +D[163] = "������������������������������������������������煞煆煨煖爺牒猷獅猿猾�������瑯瑚瑕瑟瑞瑁琿瑙瑛瑜當畸瘀痰瘁痲痱痺痿痴痳盞盟睛睫睦������睞督睹睪睬睜睥睨睢矮碎碰碗碘碌碉硼碑碓硿祺祿禁萬禽稜�����稚稠稔稟稞窟窠筷節筠筮筧粱粳粵經絹綑綁綏絛置罩罪署義羨群聖聘肆肄腱腰腸腥腮腳腫腹腺腦舅艇蒂葷落萱葵葦葫葉葬葛萼萵葡董葩葭葆虞虜號蛹蜓蜈蜇蜀蛾蛻蜂蜃蜆蜊衙裟裔裙補裘裝裡裊裕裒覜解詫該詳試詩詰誇詼詣誠話誅詭詢詮詬詹詻訾詨豢貊貉賊資賈賄貲賃賂賅跡跟跨路跳跺跪��".split(""); +for(j = 0; j != D[163].length; ++j) if(D[163][j].charCodeAt(0) !== 0xFFFD) { e[D[163][j]] = 41728 + j; d[41728 + j] = D[163][j];} +D[164] = "������������������������������������������������跤跦躲較載軾輊辟農運�������遊道遂達逼違遐遇遏過遍遑逾遁鄒鄗酬酪酩釉鈷鉗鈸鈽鉀鈾������鉛鉋鉤鉑鈴鉉鉍鉅鈹鈿鉚閘隘隔隕雍雋雉雊雷電雹零靖靴靶�����預頑頓頊頒頌飼飴飽飾馳馱馴髡鳩麂鼎鼓鼠僧僮僥僖僭僚僕像僑僱僎僩兢凳劃劂匱厭嗾嘀嘛嘗嗽嘔嘆嘉嘍嘎嗷嘖嘟嘈嘐嗶團圖塵塾境墓墊塹墅塽壽夥夢夤奪奩嫡嫦嫩嫗嫖嫘嫣孵寞寧寡寥實寨寢寤察對屢嶄嶇幛幣幕幗幔廓廖弊彆彰徹慇愿態慷慢慣慟慚慘慵截撇摘摔撤摸摟摺摑摧搴摭摻敲斡��".split(""); +for(j = 0; j != D[164].length; ++j) if(D[164][j].charCodeAt(0) !== 0xFFFD) { e[D[164][j]] = 41984 + j; d[41984 + j] = D[164][j];} +D[165] = "������������������������������������������������旗旖暢暨暝榜榨榕槁榮�������槓構榛榷榻榫榴槐槍榭槌榦槃榣歉歌氳漳演滾漓滴漩漾漠漬������漏漂漢滿滯漆漱漸漲漣漕漫漯澈漪滬漁滲滌滷熔熙煽熊熄熒�����爾犒犖獄獐瑤瑣瑪瑰瑭甄疑瘧瘍瘋瘉瘓盡監瞄睽睿睡磁碟碧碳碩碣禎福禍種稱窪窩竭端管箕箋筵算箝箔箏箸箇箄粹粽精綻綰綜綽綾綠緊綴網綱綺綢綿綵綸維緒緇綬罰翠翡翟聞聚肇腐膀膏膈膊腿膂臧臺與舔舞艋蓉蒿蓆蓄蒙蒞蒲蒜蓋蒸蓀蓓蒐蒼蓑蓊蜿蜜蜻蜢蜥蜴蜘蝕蜷蜩裳褂裴裹裸製裨褚裯��".split(""); +for(j = 0; j != D[165].length; ++j) if(D[165][j].charCodeAt(0) !== 0xFFFD) { e[D[165][j]] = 42240 + j; d[42240 + j] = D[165][j];} +D[166] = "������������������������������������������������誦誌語誣認誡誓誤說誥�������誨誘誑誚誧豪貍貌賓賑賒赫趙趕跼輔輒輕輓辣遠遘遜遣遙遞������遢遝遛鄙鄘鄞酵酸酷酴鉸銬銀銅銘銖鉻銓銜銨鉼銑閡閨閩閣�����閥閤隙障際雌雒需靼鞅韶頗領颯颱餃餅餌餉駁骯骰髦魁魂鳴鳶鳳麼鼻齊億儀僻僵價儂儈儉儅凜劇劈劉劍劊勰厲嘮嘻嘹嘲嘿嘴嘩噓噎噗噴嘶嘯嘰墀墟增墳墜墮墩墦奭嬉嫻嬋嫵嬌嬈寮寬審寫層履嶝嶔幢幟幡廢廚廟廝廣廠彈影德徵慶慧慮慝慕憂慼慰慫慾憧憐憫憎憬憚憤憔憮戮摩摯摹撞撲撈撐撰��".split(""); +for(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];} +D[167] = "������������������������������������������������撥撓撕撩撒撮播撫撚撬�������撙撢撳敵敷數暮暫暴暱樣樟槨樁樞標槽模樓樊槳樂樅槭樑歐������歎殤毅毆漿潼澄潑潦潔澆潭潛潸潮澎潺潰潤澗潘滕潯潠潟熟�����熬熱熨牖犛獎獗瑩璋璃瑾璀畿瘠瘩瘟瘤瘦瘡瘢皚皺盤瞎瞇瞌瞑瞋磋磅確磊碾磕碼磐稿稼穀稽稷稻窯窮箭箱範箴篆篇篁箠篌糊締練緯緻緘緬緝編緣線緞緩綞緙緲緹罵罷羯翩耦膛膜膝膠膚膘蔗蔽蔚蓮蔬蔭蔓蔑蔣蔡蔔蓬蔥蓿蔆螂蝴蝶蝠蝦蝸蝨蝙蝗蝌蝓衛衝褐複褒褓褕褊誼諒談諄誕請諸課諉諂調��".split(""); +for(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];} +D[168] = "������������������������������������������������誰論諍誶誹諛豌豎豬賠�������賞賦賤賬賭賢賣賜質賡赭趟趣踫踐踝踢踏踩踟踡踞躺輝輛輟������輩輦輪輜輞輥適遮遨遭遷鄰鄭鄧鄱醇醉醋醃鋅銻銷鋪鋤鋁銳�����銼鋒鋇鋰銲閭閱霄霆震霉靠鞍鞋鞏頡頫頜颳養餓餒餘駝駐駟駛駑駕駒駙骷髮髯鬧魅魄魷魯鴆鴉鴃麩麾黎墨齒儒儘儔儐儕冀冪凝劑劓勳噙噫噹噩噤噸噪器噥噱噯噬噢噶壁墾壇壅奮嬝嬴學寰導彊憲憑憩憊懍憶憾懊懈戰擅擁擋撻撼據擄擇擂操撿擒擔撾整曆曉暹曄曇暸樽樸樺橙橫橘樹橄橢橡橋橇��".split(""); +for(j = 0; j != D[168].length; ++j) if(D[168][j].charCodeAt(0) !== 0xFFFD) { e[D[168][j]] = 43008 + j; d[43008 + j] = D[168][j];} +D[169] = "������������������������������������������������樵機橈歙歷氅濂澱澡濃�������澤濁澧澳激澹澶澦澠澴熾燉燐燒燈燕熹燎燙燜燃燄獨璜璣璘������璟璞瓢甌甍瘴瘸瘺盧盥瞠瞞瞟瞥磨磚磬磧禦積穎穆穌穋窺篙�����簑築篤篛篡篩篦糕糖縊縑縈縛縣縞縝縉縐罹羲翰翱翮耨膳膩膨臻興艘艙蕊蕙蕈蕨蕩蕃蕉蕭蕪蕞螃螟螞螢融衡褪褲褥褫褡親覦諦諺諫諱謀諜諧諮諾謁謂諷諭諳諶諼豫豭貓賴蹄踱踴蹂踹踵輻輯輸輳辨辦遵遴選遲遼遺鄴醒錠錶鋸錳錯錢鋼錫錄錚錐錦錡錕錮錙閻隧隨險雕霎霑霖霍霓霏靛靜靦鞘頰��".split(""); +for(j = 0; j != D[169].length; ++j) if(D[169][j].charCodeAt(0) !== 0xFFFD) { e[D[169][j]] = 43264 + j; d[43264 + j] = D[169][j];} +D[170] = "������������������������������������������������頸頻頷頭頹頤餐館餞餛�������餡餚駭駢駱骸骼髻髭鬨鮑鴕鴣鴦鴨鴒鴛默黔龍龜優償儡儲勵������嚎嚀嚐嚅嚇嚏壕壓壑壎嬰嬪嬤孺尷屨嶼嶺嶽嶸幫彌徽應懂懇�����懦懋戲戴擎擊擘擠擰擦擬擱擢擭斂斃曙曖檀檔檄檢檜櫛檣橾檗檐檠歜殮毚氈濘濱濟濠濛濤濫濯澀濬濡濩濕濮濰燧營燮燦燥燭燬燴燠爵牆獰獲璩環璦璨癆療癌盪瞳瞪瞰瞬瞧瞭矯磷磺磴磯礁禧禪穗窿簇簍篾篷簌篠糠糜糞糢糟糙糝縮績繆縷縲繃縫總縱繅繁縴縹繈縵縿縯罄翳翼聱聲聰聯聳臆臃膺��".split(""); +for(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];} +D[171] = "������������������������������������������������臂臀膿膽臉膾臨舉艱薪�������薄蕾薜薑薔薯薛薇薨薊薦虧蟀蟑螳蟒蟆螫螻螺蟈蟋褻褶襄褸������褽覬謎謗謙講謊謠謝謄謐豁谿豳賺賽購賸賻趨蹉蹋蹈蹊轄輾�����轂轅輿避遽還邁邂邀鄹醣醞醜鍍鎂錨鍵鍊鍥鍋錘鍾鍬鍛鍰鍚鍔闊闋闌闈闆隱隸雖霜霞鞠韓顆颶餵騁駿鮮鮫鮪鮭鴻鴿麋黏點黜黝黛鼾齋叢嚕嚮壙壘嬸彝懣戳擴擲擾攆擺擻擷斷曜朦檳檬櫃檻檸櫂檮檯歟歸殯瀉瀋濾瀆濺瀑瀏燻燼燾燸獷獵璧璿甕癖癘癒瞽瞿瞻瞼礎禮穡穢穠竄竅簫簧簪簞簣簡糧織��".split(""); +for(j = 0; j != D[171].length; ++j) if(D[171][j].charCodeAt(0) !== 0xFFFD) { e[D[171][j]] = 43776 + j; d[43776 + j] = D[171][j];} +D[172] = "������������������������������������������������繕繞繚繡繒繙罈翹翻職�������聶臍臏舊藏薩藍藐藉薰薺薹蟯蟬蟲蟠覆覲觴謨謹謬謫豐贅蹙������蹣蹦蹤蹟蹕軀轉轍邇邃邈醫醬釐鎔鎊鎖鎢鎳鎮鎬鎰鎘鎚鎗闔�����闖闐闕離雜雙雛雞霤鞣鞦鞭韹額顏題顎顓颺餾餿餽餮馥騎髁鬃鬆魏魎魍鯊鯉鯽鯈鯀鵑鵝鵠黠鼕鼬儳嚥嚨壞壟壢寵龐廬懲懷懶懵攀攏曠曝櫥櫝櫚櫓瀛瀟瀨瀚瀝瀕瀘爆爍牘犢獸獺璽瓊瓣疇疆癟癡矇礙禱穫穩簾簿簸簽簷籀繫繭繹繩繪繳羅羶羹羸臘藩藝藪藕藤藥藷蟻蠅蠍蟹蟾襠襟襖襞譁譜識證譚��".split(""); +for(j = 0; j != D[172].length; ++j) if(D[172][j].charCodeAt(0) !== 0xFFFD) { e[D[172][j]] = 44032 + j; d[44032 + j] = D[172][j];} +D[173] = "������������������������������������������������譎譏譆譙贈贊蹼蹲躇蹶�������蹬蹺蹴轔轎辭邊邋醱醮鏡鏑鏟鏃鏈鏜鏝鏖鏢鏍鏘鏤鏗鏨關隴������難霪霧靡韜韻類願顛颼饅饉騖騙鬍鯨鯧鯖鯛鶉鵡鵲鵪鵬麒麗�����麓麴勸嚷嚶嚴嚼壤孀孃孽寶巉懸懺攘攔攙曦朧櫬瀾瀰瀲爐獻瓏癢癥礦礪礬礫竇競籌籃籍糯糰辮繽繼纂罌耀臚艦藻藹蘑藺蘆蘋蘇蘊蠔蠕襤覺觸議譬警譯譟譫贏贍躉躁躅躂醴釋鐘鐃鏽闡霰飄饒饑馨騫騰騷騵鰓鰍鹹麵黨鼯齟齣齡儷儸囁囀囂夔屬巍懼懾攝攜斕曩櫻欄櫺殲灌爛犧瓖瓔癩矓籐纏續羼��".split(""); +for(j = 0; j != D[173].length; ++j) if(D[173][j].charCodeAt(0) !== 0xFFFD) { e[D[173][j]] = 44288 + j; d[44288 + j] = D[173][j];} +D[174] = "������������������������������������������������蘗蘭蘚蠣蠢蠡蠟襪襬覽�������譴護譽贓躊躍躋轟辯醺鐮鐳鐵鐺鐸鐲鐫闢霸霹露響顧顥饗驅������驃驀騾髏魔魑鰭鰥鶯鶴鷂鶸麝黯鼙齜齦齧儼儻囈囊囉孿巔巒�����彎懿攤權歡灑灘玀瓤疊癮癬禳籠籟聾聽臟襲襯觼讀贖贗躑躓轡酈鑄鑑鑒霽霾韃韁顫饕驕驍髒鬚鱉鰱鰾鰻鷓鷗鼴齬齪龔囌巖戀攣攫攪曬欐瓚竊籤籣籥纓纖纔臢蘸蘿蠱變邐邏鑣鑠鑤靨顯饜驚驛驗髓體髑鱔鱗鱖鷥麟黴囑壩攬灞癱癲矗罐羈蠶蠹衢讓讒讖艷贛釀鑪靂靈靄韆顰驟鬢魘鱟鷹鷺鹼鹽鼇齷��".split(""); +for(j = 0; j != D[174].length; ++j) if(D[174][j].charCodeAt(0) !== 0xFFFD) { e[D[174][j]] = 44544 + j; d[44544 + j] = D[174][j];} +D[175] = "������������������������������������������������齲廳欖灣籬籮蠻觀躡釁�������鑲鑰顱饞髖鬣黌灤矚讚鑷韉驢驥纜讜躪釅鑽鑾鑼鱷鱸黷豔鑿������鸚爨驪鬱鸛鸞籲ソゾタダチヂッツヅテデトドナニヌネノハ�����バパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдеёжзийклмнопрстуфхцчшщъыьэюя⇧↸↹��䅚ク刂�冈�������������".split(""); +for(j = 0; j != D[175].length; ++j) if(D[175][j].charCodeAt(0) !== 0xFFFD) { e[D[175][j]] = 44800 + j; d[44800 + j] = D[175][j];} +D[221] = "������������������������������������������������乂乜凵匚厂万丌乇亍囗�������屮彳丏冇与丮亓仂仉仈冘勼卬厹圠夃夬尐巿旡殳毌气爿丱丼������仨仜仩仡仝仚刌刉匜卌圢圣夗夯宁宄尒尻屴屳帄庀庂忉戉扐�����氕氶汃氿氻犮犰玊禸肊阞伎优伬仵伔仱伀价伈伝伂伅伢伓伄仴伒冱刓刐劦匢匟卍厊吇囡囟圮圪圴夼妀奼妅奻奾奷奿孖尕尥屼屺屻屾巟幵庄异弚彴忕忔忏扜扞扤扡扦扢扙扠扚扥攷旯旮朾朹朸朻机朿朼朳氘汆汒汜汏汊汔汋汌灱牞犴犵玎甪癿穵网艸艼芀艽艿虍襾邙邗邘邛邔阢阤阠阣佖伻佢佉体��".split(""); +for(j = 0; j != D[221].length; ++j) if(D[221][j].charCodeAt(0) !== 0xFFFD) { e[D[221][j]] = 56576 + j; d[56576 + j] = D[221][j];} +D[222] = "������������������������������������������������佤伾佧佒佟佁佘伭伳伿�������佡冏冹刜刞刡劭劮匉卣卲厎厏吰吷吪呔呅吙吜吥吘吽呏呁吨������吤呇囮囧囥坁坅坌坉坋坒夆奀妦妘妠妗妎妢妐妏妧妡宎宒尨�����尪岍岏岈岋岉岒岊岆岓岕巠帊帎庋庉庌庈庍弅弝彸彶忒忑忐忭忨忮忳忡忤忣忺忯忷忻怀忴戺抃抌抎抏抔抇扱扻扺扰抁抈扷扽扲扴旰旴旳旲旵杅杇杙杕杌杈杝杍杚杋毐氙氚汸汧汫沄沋沏汱汯汩沚汭沇沕沜汦汳汥汻沎灴灺牣犿犽狃狆狁犺狅玕玗玓玔玒町甹疔疕皁礽耴肕肙肐肒肜芐芏芅芎芑芓��".split(""); +for(j = 0; j != D[222].length; ++j) if(D[222][j].charCodeAt(0) !== 0xFFFD) { e[D[222][j]] = 56832 + j; d[56832 + j] = D[222][j];} +D[223] = "������������������������������������������������芊芃芄豸迉辿邟邡邥邞�������邧邠阰阨阯阭丳侘佼侅佽侀侇佶佴侉侄佷佌侗佪侚佹侁佸侐������侜侔侞侒侂侕佫佮冞冼冾刵刲刳剆刱劼匊匋匼厒厔咇呿咁咑�����咂咈呫呺呾呥呬呴呦咍呯呡呠咘呣呧呤囷囹坯坲坭坫坱坰坶垀坵坻坳坴坢坨坽夌奅妵妺姏姎妲姌姁妶妼姃姖妱妽姀姈妴姇孢孥宓宕屄屇岮岤岠岵岯岨岬岟岣岭岢岪岧岝岥岶岰岦帗帔帙弨弢弣弤彔徂彾彽忞忥怭怦怙怲怋怴怊怗怳怚怞怬怢怍怐怮怓怑怌怉怜戔戽抭抴拑抾抪抶拊抮抳抯抻抩抰��".split(""); +for(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];} +D[224] = "������������������������������������������������抸攽斨斻昉旼昄昒昈旻�������昃昋昍昅旽昑昐曶朊枅杬枎枒杶杻枘枆构杴枍枌杺枟枑枙枃������杽极杸杹枔欥殀歾毞氝沓泬泫泮泙沶泔沭泧沷泐泂沺泃泆泭�����泲泒泝沴沊沝沀泞泀洰泍泇沰泹泏泩泑炔炘炅炓炆炄炑炖炂炚炃牪狖狋狘狉狜狒狔狚狌狑玤玡玭玦玢玠玬玝瓝瓨甿畀甾疌疘皯盳盱盰盵矸矼矹矻矺矷祂礿秅穸穻竻籵糽耵肏肮肣肸肵肭舠芠苀芫芚芘芛芵芧芮芼芞芺芴芨芡芩苂芤苃芶芢虰虯虭虮豖迒迋迓迍迖迕迗邲邴邯邳邰阹阽阼阺陃俍俅��".split(""); +for(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];} +D[225] = "������������������������������������������������俓侲俉俋俁俔俜俙侻侳�������俛俇俖侺俀侹俬剄剉勀勂匽卼厗厖厙厘咺咡咭咥哏哃茍咷咮������哖咶哅哆咠呰咼咢咾呲哞咰垵垞垟垤垌垗垝垛垔垘垏垙垥垚�����垕壴复奓姡姞姮娀姱姝姺姽姼姶姤姲姷姛姩姳姵姠姾姴姭宨屌峐峘峌峗峋峛峞峚峉峇峊峖峓峔峏峈峆峎峟峸巹帡帢帣帠帤庰庤庢庛庣庥弇弮彖徆怷怹恔恲恞恅恓恇恉恛恌恀恂恟怤恄恘恦恮扂扃拏挍挋拵挎挃拫拹挏挌拸拶挀挓挔拺挕拻拰敁敃斪斿昶昡昲昵昜昦昢昳昫昺昝昴昹昮朏朐柁柲柈��".split(""); +for(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];} +D[226] = "������������������������������������������������枺柜枻柸柘柀枷柅柫柤�������柟枵柍枳柷柶柮柣柂枹柎柧柰枲柼柆柭柌枮柦柛柺柉柊柃柪������柋欨殂殄殶毖毘毠氠氡洨洴洭洟洼洿洒洊泚洳洄洙洺洚洑洀�����洝浂洁洘洷洃洏浀洇洠洬洈洢洉洐炷炟炾炱炰炡炴炵炩牁牉牊牬牰牳牮狊狤狨狫狟狪狦狣玅珌珂珈珅玹玶玵玴珫玿珇玾珃珆玸珋瓬瓮甮畇畈疧疪癹盄眈眃眄眅眊盷盻盺矧矨砆砑砒砅砐砏砎砉砃砓祊祌祋祅祄秕种秏秖秎窀穾竑笀笁籺籸籹籿粀粁紃紈紁罘羑羍羾耇耎耏耔耷胘胇胠胑胈胂胐胅��".split(""); +for(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];} +D[227] = "������������������������������������������������胣胙胜胊胕胉胏胗胦胍�������臿舡芔苙苾苹茇苨茀苕茺苫苖苴苬苡苲苵茌苻苶苰苪苤苠苺������苳苭虷虴虼虳衁衎衧衪衩觓訄訇赲迣迡迮迠郱邽邿郕郅邾郇�����郋郈釔釓陔陏陑陓陊陎倞倅倇倓倢倰倛俵俴倳倷倬俶俷倗倜倠倧倵倯倱倎党冔冓凊凄凅凈凎剡剚剒剞剟剕剢勍匎厞唦哢唗唒哧哳哤唚哿唄唈哫唑唅哱唊哻哷哸哠唎唃唋圁圂埌堲埕埒垺埆垽垼垸垶垿埇埐垹埁夎奊娙娖娭娮娕娏娗娊娞娳孬宧宭宬尃屖屔峬峿峮峱峷崀峹帩帨庨庮庪庬弳弰彧恝��".split(""); +for(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];} +D[228] = "������������������������������������������������恚恧恁悢悈悀悒悁悝悃�������悕悛悗悇悜悎戙扆拲挐捖挬捄捅挶捃揤挹捋捊挼挩捁挴捘捔������捙挭捇挳捚捑挸捗捀捈敊敆旆旃旄旂晊晟晇晑朒朓栟栚桉栲�����栳栻桋桏栖栱栜栵栫栭栯桎桄栴栝栒栔栦栨栮桍栺栥栠欬欯欭欱欴歭肂殈毦毤毨毣毢毧氥浺浣浤浶洍浡涒浘浢浭浯涑涍淯浿涆浞浧浠涗浰浼浟涂涘洯浨涋浾涀涄洖涃浻浽浵涐烜烓烑烝烋缹烢烗烒烞烠烔烍烅烆烇烚烎烡牂牸牷牶猀狺狴狾狶狳狻猁珓珙珥珖玼珧珣珩珜珒珛珔珝珚珗珘珨瓞瓟��".split(""); +for(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];} +D[229] = "������������������������������������������������瓴瓵甡畛畟疰痁疻痄痀�������疿疶疺皊盉眝眛眐眓眒眣眑眕眙眚眢眧砣砬砢砵砯砨砮砫砡������砩砳砪砱祔祛祏祜祓祒祑秫秬秠秮秭秪秜秞秝窆窉窅窋窌窊�����窇竘笐笄笓笅笏笈笊笎笉笒粄粑粊粌粈粍粅紞紝紑紎紘紖紓紟紒紏紌罜罡罞罠罝罛羖羒翃翂翀耖耾耹胺胲胹胵脁胻脀舁舯舥茳茭荄茙荑茥荖茿荁茦茜茢荂荎茛茪茈茼荍茖茤茠茷茯茩荇荅荌荓茞茬荋茧荈虓虒蚢蚨蚖蚍蚑蚞蚇蚗蚆蚋蚚蚅蚥蚙蚡蚧蚕蚘蚎蚝蚐蚔衃衄衭衵衶衲袀衱衿衯袃衾衴衼��".split(""); +for(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];} +D[230] = "������������������������������������������������訒豇豗豻貤貣赶赸趵趷�������趶軑軓迾迵适迿迻逄迼迶郖郠郙郚郣郟郥郘郛郗郜郤酐酎酏������釕釢釚陜陟隼飣髟鬯乿偰偪偡偞偠偓偋偝偲偈偍偁偛偊偢倕�����偅偟偩偫偣偤偆偀偮偳偗偑凐剫剭剬剮勖勓匭厜啵啶唼啍啐唴唪啑啢唶唵唰啒啅唌唲啥啎唹啈唭唻啀啋圊圇埻堔埢埶埜埴堀埭埽堈埸堋埳埏堇埮埣埲埥埬埡堎埼堐埧堁堌埱埩埰堍堄奜婠婘婕婧婞娸娵婭婐婟婥婬婓婤婗婃婝婒婄婛婈媎娾婍娹婌婰婩婇婑婖婂婜孲孮寁寀屙崞崋崝崚崠崌崨崍��".split(""); +for(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];} +D[231] = "������������������������������������������������崦崥崏崰崒崣崟崮帾帴�������庱庴庹庲庳弶弸徛徖徟悊悐悆悾悰悺惓惔惏惤惙惝惈悱惛悷������惊悿惃惍惀挲捥掊掂捽掽掞掭掝掗掫掎捯掇掐据掯捵掜捭掮�����捼掤挻掟捸掅掁掑掍捰敓旍晥晡晛晙晜晢朘桹梇梐梜桭桮梮梫楖桯梣梬梩桵桴梲梏桷梒桼桫桲梪梀桱桾梛梖梋梠梉梤桸桻梑梌梊桽欶欳欷欸殑殏殍殎殌氪淀涫涴涳湴涬淩淢涷淶淔渀淈淠淟淖涾淥淜淝淛淴淊涽淭淰涺淕淂淏淉淐淲淓淽淗淍淣涻烺焍烷焗烴焌烰焄烳焐烼烿焆焓焀烸烶焋焂焎��".split(""); +for(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];} +D[232] = "������������������������������������������������牾牻牼牿猝猗猇猑猘猊�������猈狿猏猞玈珶珸珵琄琁珽琇琀珺珼珿琌琋珴琈畤畣痎痒痏痋������痌痑痐皏皉盓眹眯眭眱眲眴眳眽眥眻眵硈硒硉硍硊硌砦硅硐�����祤祧祩祪祣祫祡离秺秸秶秷窏窔窐笵笻笴笥笰笢笤笳笘笪笝笱笫笭笯笲笸笚笣粔粘粖粣紵紽紸紶紺絅紬紩絁絇紾紿絊紻紨罣羕羜羝羛翊翋翍翐翑翇翏翉耟耞耛聇聃聈脘脥脙脛脭脟脬脞脡脕脧脝脢舑舸舳舺舴舲艴莐莣莨莍荺荳莤荴莏莁莕莙荵莔莩荽莃莌莝莛莪莋荾莥莯莈莗莰荿莦莇莮荶虙��".split(""); +for(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];} +D[233] = "������������������������������������������������虖蚿蚷蛂蛁蛅蚺蚰蛈蚹�������蚳蚸蛌蚴蚻蚼蛃蚽蚾衒袉袕袨袢袪袚袑袡袟袘袧袙袛袗袤袬������袌袓袎覂觖觙觕訰訧訬訞谹谻豜豝豽貥赽赻赹趼跂趹趿跁軘�����軞軝軜軗軠軡逤逋逑逜逌逡郯郪郰郴郲郳郔郫郬郩酖酘酚酓酕釬釴釱釳釸釤釹釪釫釷釨釮镺閆閈陼陭陫陱陯隿靪頄飥馗傛傕傔傞傋傣傃傌傎傝偨傜傒傂傇兟凔匒匑厤厧喑喨喥喭啷噅喢喓喈喏喵喁喣喒喤啽喌喦啿喕喡喎圌堩堷堙堞堧堣堨埵塈堥堜堛堳堿堶堮堹堸堭堬堻奡媯媔媟婺媢媞婸媦��".split(""); +for(j = 0; j != D[233].length; ++j) if(D[233][j].charCodeAt(0) !== 0xFFFD) { e[D[233][j]] = 59648 + j; d[59648 + j] = D[233][j];} +D[234] = "������������������������������������������������婼媥媬媕媮娷媄媊媗媃�������媋媩婻婽媌媜媏媓媝寪寍寋寔寑寊寎尌尰崷嵃嵫嵁嵋崿崵嵑������嵎嵕崳崺嵒崽崱嵙嵂崹嵉崸崼崲崶嵀嵅幄幁彘徦徥徫惉悹惌�����惢惎惄愔惲愊愖愅惵愓惸惼惾惁愃愘愝愐惿愄愋扊掔掱掰揎揥揨揯揃撝揳揊揠揶揕揲揵摡揟掾揝揜揄揘揓揂揇揌揋揈揰揗揙攲敧敪敤敜敨敥斌斝斞斮旐旒晼晬晻暀晱晹晪晲朁椌棓椄棜椪棬棪棱椏棖棷棫棤棶椓椐棳棡椇棌椈楰梴椑棯棆椔棸棐棽棼棨椋椊椗棎棈棝棞棦棴棑椆棔棩椕椥棇欹欻��".split(""); +for(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];} +D[235] = "������������������������������������������������欿欼殔殗殙殕殽毰毲毳�������氰淼湆湇渟湉溈渼渽湅湢渫渿湁湝湳渜渳湋湀湑渻渃渮湞湨������湜湡渱渨湠湱湫渹渢渰湓湥渧湸湤湷湕湹湒湦渵渶湚焠焞焯�����烻焮焱焣焥焢焲焟焨焺焛牋牚犈犉犆犅犋猒猋猰猢猱猳猧猲猭猦猣猵猌琮琬琰琫琖琚琡琭琱琤琣琝琩琠琲瓻甯畯畬痧痚痡痦痝痟痤痗皕皒盚睆睇睄睍睅睊睎睋睌矞矬硠硤硥硜硭硱硪确硰硩硨硞硢祴祳祲祰稂稊稃稌稄窙竦竤筊筇筄筈筌筎筀筘筅粢粞粨粡絘絯絣絓絖絧絪絏絭絜絫絒絔絩絑絟��".split(""); +for(j = 0; j != D[235].length; ++j) if(D[235][j].charCodeAt(0) !== 0xFFFD) { e[D[235][j]] = 60160 + j; d[60160 + j] = D[235][j];} +D[236] = "������������������������������������������������絎缾缿罥罦羢羠羡翗聑�������聏聐胾胔腃腊腒腏腇脽腍脺臦臮臷臸臹舄舼舽舿艵茻菏菹萣������菀菨萒菧菤菼菶萐菆菈菫菣莿萁菝菥菘菿菡菋菎菖菵菉萉萏�����菞萑萆菂菳菕菺菇菑菪萓莚菃菬菮菄菻菗菢萛菛菾蛘蛢蛦蛓蛣蛚蛪蛝蛫蛜蛬蛩蛗蛨蛑衈衖衕袺裗袹袸裀袾袶袼袷袽袲褁裉覕覘覗觝觚觛詎詍訹詙詀詗詘詄詅詒詈詑詊詌詏豟貁貀貺貾貰貹貵趄趀趉跘跓跍跇跖跜跏跕跙跈跗跅軯軷軺軹軦軮軥軵軧軨軶軫軱軬軴軩逭逴逯鄆鄬鄄郿郼鄈郹郻鄁鄀��".split(""); +for(j = 0; j != D[236].length; ++j) if(D[236][j].charCodeAt(0) !== 0xFFFD) { e[D[236][j]] = 60416 + j; d[60416 + j] = D[236][j];} +D[237] = "������������������������������������������������鄇鄅鄃酡酤酟酢酠鈁鈊�������鈥鈃鈚鈦鈏鈌鈀鈒釿釽鈆鈄鈧鈂鈜鈤鈙鈗鈅鈖镻閍閌閐隇陾������隈隉隃隀雂雈雃雱雰靬靰靮頇颩飫鳦黹亃亄亶傽傿僆傮僄僊�����傴僈僂傰僁傺傱僋僉傶傸凗剺剸剻剼嗃嗛嗌嗐嗋嗊嗝嗀嗔嗄嗩喿嗒喍嗏嗕嗢嗖嗈嗲嗍嗙嗂圔塓塨塤塏塍塉塯塕塎塝塙塥塛堽塣塱壼嫇嫄嫋媺媸媱媵媰媿嫈媻嫆媷嫀嫊媴媶嫍媹媐寖寘寙尟尳嵱嵣嵊嵥嵲嵬嵞嵨嵧嵢巰幏幎幊幍幋廅廌廆廋廇彀徯徭惷慉慊愫慅愶愲愮慆愯慏愩慀戠酨戣戥戤揅揱��".split(""); +for(j = 0; j != D[237].length; ++j) if(D[237][j].charCodeAt(0) !== 0xFFFD) { e[D[237][j]] = 60672 + j; d[60672 + j] = D[237][j];} +D[238] = "������������������������������������������������揫搐搒搉搠搤搳摃搟搕�������搘搹搷搢搣搌搦搰搨摁搵搯搊搚摀搥搧搋揧搛搮搡搎敯斒旓������暆暌暕暐暋暊暙暔晸朠楦楟椸楎楢楱椿楅楪椹楂楗楙楺楈楉�����椵楬椳椽楥棰楸椴楩楀楯楄楶楘楁楴楌椻楋椷楜楏楑椲楒椯楻椼歆歅歃歂歈歁殛毻毼毹毷毸溛滖滈溏滀溟溓溔溠溱溹滆滒溽滁溞滉溷溰滍溦滏溲溾滃滜滘溙溒溎溍溤溡溿溳滐滊溗溮溣煇煔煒煣煠煁煝煢煲煸煪煡煂煘煃煋煰煟煐煓煄煍煚牏犍犌犑犐犎猼獂猻猺獀獊獉瑄瑊瑋瑒瑑瑗瑀瑏瑐瑎��".split(""); +for(j = 0; j != D[238].length; ++j) if(D[238][j].charCodeAt(0) !== 0xFFFD) { e[D[238][j]] = 60928 + j; d[60928 + j] = D[238][j];} +D[239] = "������������������������������������������������瑂瑆瑍瑔瓡瓿瓾瓽甝畹�������畷榃痯瘏瘃痷痾痼痹痸瘐痻痶痭痵痽皙皵盝睕睟睠睒睖睚睩������睧睔睙睭矠碇碚碔碏碄碕碅碆碡碃硹碙碀碖硻祼禂祽祹稑稘�����稙稒稗稕稢稓稛稐窣窢窞竫筦筤筭筴筩筲筥筳筱筰筡筸筶筣粲粴粯綈綆綀綍絿綅絺綎絻綃絼綌綔綄絽綒罭罫罧罨罬羦羥羧翛翜耡腤腠腷腜腩腛腢腲朡腞腶腧腯腄腡舝艉艄艀艂艅蓱萿葖葶葹蒏蒍葥葑葀蒆葧萰葍葽葚葙葴葳葝蔇葞萷萺萴葺葃葸萲葅萩菙葋萯葂萭葟葰萹葎葌葒葯蓅蒎萻葇萶萳��".split(""); +for(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];} +D[240] = "������������������������������������������������葨葾葄萫葠葔葮葐蜋蜄�������蛷蜌蛺蛖蛵蝍蛸蜎蜉蜁蛶蜍蜅裖裋裍裎裞裛裚裌裐覅覛觟觥������觤觡觠觢觜触詶誆詿詡訿詷誂誄詵誃誁詴詺谼豋豊豥豤豦貆�����貄貅賌赨赩趑趌趎趏趍趓趔趐趒跰跠跬跱跮跐跩跣跢跧跲跫跴輆軿輁輀輅輇輈輂輋遒逿遄遉逽鄐鄍鄏鄑鄖鄔鄋鄎酮酯鉈鉒鈰鈺鉦鈳鉥鉞銃鈮鉊鉆鉭鉬鉏鉠鉧鉯鈶鉡鉰鈱鉔鉣鉐鉲鉎鉓鉌鉖鈲閟閜閞閛隒隓隑隗雎雺雽雸雵靳靷靸靲頏頍頎颬飶飹馯馲馰馵骭骫魛鳪鳭鳧麀黽僦僔僗僨僳僛僪僝僤��".split(""); +for(j = 0; j != D[240].length; ++j) if(D[240][j].charCodeAt(0) !== 0xFFFD) { e[D[240][j]] = 61440 + j; d[61440 + j] = D[240][j];} +D[241] = "������������������������������������������������僓僬僰僯僣僠凘劀劁勩�������勫匰厬嘧嘕嘌嘒嗼嘏嘜嘁嘓嘂嗺嘝嘄嗿嗹墉塼墐墘墆墁塿塴������墋塺墇墑墎塶墂墈塻墔墏壾奫嫜嫮嫥嫕嫪嫚嫭嫫嫳嫢嫠嫛嫬�����嫞嫝嫙嫨嫟孷寠寣屣嶂嶀嵽嶆嵺嶁嵷嶊嶉嶈嵾嵼嶍嵹嵿幘幙幓廘廑廗廎廜廕廙廒廔彄彃彯徶愬愨慁慞慱慳慒慓慲慬憀慴慔慺慛慥愻慪慡慖戩戧戫搫摍摛摝摴摶摲摳摽摵摦撦摎撂摞摜摋摓摠摐摿搿摬摫摙摥摷敳斠暡暠暟朅朄朢榱榶槉榠槎榖榰榬榼榑榙榎榧榍榩榾榯榿槄榽榤槔榹槊榚槏榳榓��".split(""); +for(j = 0; j != D[241].length; ++j) if(D[241][j].charCodeAt(0) !== 0xFFFD) { e[D[241][j]] = 61696 + j; d[61696 + j] = D[241][j];} +D[242] = "������������������������������������������������榪榡榞槙榗榐槂榵榥槆�������歊歍歋殞殟殠毃毄毾滎滵滱漃漥滸漷滻漮漉潎漙漚漧漘漻漒������滭漊漶潳滹滮漭潀漰漼漵滫漇漎潃漅滽滶漹漜滼漺漟漍漞漈�����漡熇熐熉熀熅熂熏煻熆熁熗牄牓犗犕犓獃獍獑獌瑢瑳瑱瑵瑲瑧瑮甀甂甃畽疐瘖瘈瘌瘕瘑瘊瘔皸瞁睼瞅瞂睮瞀睯睾瞃碲碪碴碭碨硾碫碞碥碠碬碢碤禘禊禋禖禕禔禓禗禈禒禐稫穊稰稯稨稦窨窫窬竮箈箜箊箑箐箖箍箌箛箎箅箘劄箙箤箂粻粿粼粺綧綷緂綣綪緁緀緅綝緎緄緆緋緌綯綹綖綼綟綦綮綩��".split(""); +for(j = 0; j != D[242].length; ++j) if(D[242][j].charCodeAt(0) !== 0xFFFD) { e[D[242][j]] = 61952 + j; d[61952 + j] = D[242][j];} +D[243] = "������������������������������������������������綡緉罳翢翣翥翞耤聝聜�������膉膆膃膇膍膌膋舕蒗蒤蒡蒟蒺蓎蓂蒬蒮蒫蒹蒴蓁蓍蒪蒚蒱蓐������蒝蒧蒻蒢蒔蓇蓌蒛蒩蒯蒨蓖蒘蒶蓏蒠蓗蓔蓒蓛蒰蒑虡蜳蜣蜨�����蝫蝀蜮蜞蜡蜙蜛蝃蜬蝁蜾蝆蜠蜲蜪蜭蜼蜒蜺蜱蜵蝂蜦蜧蜸蜤蜚蜰蜑裷裧裱裲裺裾裮裼裶裻裰裬裫覝覡覟覞觩觫觨誫誙誋誒誏誖谽豨豩賕賏賗趖踉踂跿踍跽踊踃踇踆踅跾踀踄輐輑輎輍鄣鄜鄠鄢鄟鄝鄚鄤鄡鄛酺酲酹酳銥銤鉶銛鉺銠銔銪銍銦銚銫鉹銗鉿銣鋮銎銂銕銢鉽銈銡銊銆銌銙銧鉾銇銩銝��".split(""); +for(j = 0; j != D[243].length; ++j) if(D[243][j].charCodeAt(0) !== 0xFFFD) { e[D[243][j]] = 62208 + j; d[62208 + j] = D[243][j];} +D[244] = "������������������������������������������������銋鈭隞隡雿靘靽靺靾鞃�������鞀鞂靻鞄鞁靿韎韍頖颭颮餂餀餇馝馜駃馹馻馺駂馽駇骱髣髧������鬾鬿魠魡魟鳱鳲鳵麧僿儃儰僸儆儇僶僾儋儌僽儊劋劌勱勯噈�����噂噌嘵噁噊噉噆噘噚噀嘳嘽嘬嘾嘸嘪嘺圚墫墝墱墠墣墯墬墥墡壿嫿嫴嫽嫷嫶嬃嫸嬂嫹嬁嬇嬅嬏屧嶙嶗嶟嶒嶢嶓嶕嶠嶜嶡嶚嶞幩幝幠幜緳廛廞廡彉徲憋憃慹憱憰憢憉憛憓憯憭憟憒憪憡憍慦憳戭摮摰撖撠撅撗撜撏撋撊撌撣撟摨撱撘敶敺敹敻斲斳暵暰暩暲暷暪暯樀樆樗槥槸樕槱槤樠槿槬槢樛樝��".split(""); +for(j = 0; j != D[244].length; ++j) if(D[244][j].charCodeAt(0) !== 0xFFFD) { e[D[244][j]] = 62464 + j; d[62464 + j] = D[244][j];} +D[245] = "������������������������������������������������槾樧槲槮樔槷槧橀樈槦�������槻樍槼槫樉樄樘樥樏槶樦樇槴樖歑殥殣殢殦氁氀毿氂潁漦潾������澇濆澒澍澉澌潢潏澅潚澖潶潬澂潕潲潒潐潗澔澓潝漀潡潫潽�����潧澐潓澋潩潿澕潣潷潪潻熲熯熛熰熠熚熩熵熝熥熞熤熡熪熜熧熳犘犚獘獒獞獟獠獝獛獡獚獙獢璇璉璊璆璁瑽璅璈瑼瑹甈甇畾瘥瘞瘙瘝瘜瘣瘚瘨瘛皜皝皞皛瞍瞏瞉瞈磍碻磏磌磑磎磔磈磃磄磉禚禡禠禜禢禛歶稹窲窴窳箷篋箾箬篎箯箹篊箵糅糈糌糋緷緛緪緧緗緡縃緺緦緶緱緰緮緟罶羬羰羭翭翫��".split(""); +for(j = 0; j != D[245].length; ++j) if(D[245][j].charCodeAt(0) !== 0xFFFD) { e[D[245][j]] = 62720 + j; d[62720 + j] = D[245][j];} +D[246] = "������������������������������������������������翪翬翦翨聤聧膣膟膞膕�������膢膙膗舖艏艓艒艐艎艑蔤蔻蔏蔀蔩蔎蔉蔍蔟蔊蔧蔜蓻蔫蓺蔈������蔌蓴蔪蓲蔕蓷蓫蓳蓼蔒蓪蓩蔖蓾蔨蔝蔮蔂蓽蔞蓶蔱蔦蓧蓨蓰�����蓯蓹蔘蔠蔰蔋蔙蔯虢蝖蝣蝤蝷蟡蝳蝘蝔蝛蝒蝡蝚蝑蝞蝭蝪蝐蝎蝟蝝蝯蝬蝺蝮蝜蝥蝏蝻蝵蝢蝧蝩衚褅褌褔褋褗褘褙褆褖褑褎褉覢覤覣觭觰觬諏諆誸諓諑諔諕誻諗誾諀諅諘諃誺誽諙谾豍貏賥賟賙賨賚賝賧趠趜趡趛踠踣踥踤踮踕踛踖踑踙踦踧踔踒踘踓踜踗踚輬輤輘輚輠輣輖輗遳遰遯遧遫鄯鄫鄩��".split(""); +for(j = 0; j != D[246].length; ++j) if(D[246][j].charCodeAt(0) !== 0xFFFD) { e[D[246][j]] = 62976 + j; d[62976 + j] = D[246][j];} +D[247] = "������������������������������������������������鄪鄲鄦鄮醅醆醊醁醂醄�������醀鋐鋃鋄鋀鋙銶鋏鋱鋟鋘鋩鋗鋝鋌鋯鋂鋨鋊鋈鋎鋦鋍鋕鋉鋠������鋞鋧鋑鋓銵鋡錥鋆銴镼閬閫閮閰隤隢雓霅霈霂靚鞊鞎鞈韐韏�����頞頝頦頩頨頠頛頧颲餈飺餑餔餖餗餕駜駍駏駓駔駎駉駖駘駋駗駌骳髬髫髳髲髱魆魃魧魴魱魦魶魵魰魨魤魬鳼鳺鳽鳿鳷鴇鴀鳹鳻鴈鴅鴄麃黓鼏鼐儜儓儗儚儑凞匴叡噰噠噮噳噦噣噭噲噞噷圜圛壈墽壉墿墺壂墼壆嬗嬙嬛嬡嬔嬓嬐嬖嬨嬚嬠嬞寯嶬嶱嶩嶧嶵嶰嶮嶪嶨嶲嶭嶯嶴幧幨幦幯廩廧廦廨廥彋��".split(""); +for(j = 0; j != D[247].length; ++j) if(D[247][j].charCodeAt(0) !== 0xFFFD) { e[D[247][j]] = 63232 + j; d[63232 + j] = D[247][j];} +D[248] = "������������������������������������������������徼徻憝憨憖懅憴懆懁懌�������憺憿憸憌擗擖擐擏擉撽撉擃擛擳擙攳敿敼斢曈暾曀曊曋曏暽������暻暺曌朣樴橦橉橧樲橨樾橝橭橶橛橑樨橚樻樿橁橪橤橐橏橔�����橯橩橠樼橞橖橕橍橎橆歕歔歖殧殪殫毈毇氄氃氆澭濋澣濇澼濎濈潞濄澽澞濊澨瀄澥澮澺澬澪濏澿澸澢濉澫濍澯澲澰燅燂熿熸燖燀燁燋燔燊燇燏熽燘熼燆燚燛犝犞獩獦獧獬獥獫獪瑿璚璠璔璒璕璡甋疀瘯瘭瘱瘽瘳瘼瘵瘲瘰皻盦瞚瞝瞡瞜瞛瞢瞣瞕瞙瞗磝磩磥磪磞磣磛磡磢磭磟磠禤穄穈穇窶窸窵��".split(""); +for(j = 0; j != D[248].length; ++j) if(D[248][j].charCodeAt(0) !== 0xFFFD) { e[D[248][j]] = 63488 + j; d[63488 + j] = D[248][j];} +D[249] = "������������������������������������������������窱窷篞篣篧篝篕篥篚篨�������篹篔篪篢篜篫篘篟糒糔糗糐糑縒縡縗縌縟縠縓縎縜縕縚縢縋������縏縖縍縔縥縤罃罻罼罺羱翯耪耩聬膱膦膮膹膵膫膰膬膴膲膷�����膧臲艕艖艗蕖蕅蕫蕍蕓蕡蕘蕀蕆蕤蕁蕢蕄蕑蕇蕣蔾蕛蕱蕎蕮蕵蕕蕧蕠薌蕦蕝蕔蕥蕬虣虥虤螤螛螏螗螓螒螈螁螖螘蝹螇螣螅螐螑螝螄螔螜螚螉褞褦褰褭褮褧褱褢褩褣褯褬褟觱諠諢諲諴諵諝謔諤諟諰諈諞諡諨諿諯諻貑貒貐賵賮賱賰賳赬赮趥趧踳踾踸蹀蹅踶踼踽蹁踰踿躽輶輮輵輲輹輷輴遶遹遻��".split(""); +for(j = 0; j != D[249].length; ++j) if(D[249][j].charCodeAt(0) !== 0xFFFD) { e[D[249][j]] = 63744 + j; d[63744 + j] = D[249][j];} +D[250] = "������������������������������������������������邆郺鄳鄵鄶醓醐醑醍醏�������錧錞錈錟錆錏鍺錸錼錛錣錒錁鍆錭錎錍鋋錝鋺錓鋹鋷錴錂錤������鋿錩錹錵錪錔錌錋鋾錉錀鋻錖閼闍閾閹閺閶閿閵閽隩雔霋霒�����霐鞙鞗鞔韰韸頵頯頲餤餟餧餩馞駮駬駥駤駰駣駪駩駧骹骿骴骻髶髺髹髷鬳鮀鮅鮇魼魾魻鮂鮓鮒鮐魺鮕魽鮈鴥鴗鴠鴞鴔鴩鴝鴘鴢鴐鴙鴟麈麆麇麮麭黕黖黺鼒鼽儦儥儢儤儠儩勴嚓嚌嚍嚆嚄嚃噾嚂噿嚁壖壔壏壒嬭嬥嬲嬣嬬嬧嬦嬯嬮孻寱寲嶷幬幪徾懃憵憼懧懠懥懤懨懞擯擩擣擫擤擨斁斀斶旚曒檍��".split(""); +for(j = 0; j != D[250].length; ++j) if(D[250][j].charCodeAt(0) !== 0xFFFD) { e[D[250][j]] = 64000 + j; d[64000 + j] = D[250][j];} +D[251] = "������������������������������������������������檖檁檥檉檟檛檡檞檇檓�������檎檕檃檨檤檑橿檦檚檅檌檒歛殭氉濌澩濴濔濣濜濭濧濦濞濲������濝濢濨燡燱燨燲燤燰燢獳獮獯璗璲璫璐璪璭璱璥璯甐甑甒甏�����疄癃癈癉癇皤盩瞵瞫瞲瞷瞶瞴瞱瞨矰磳磽礂磻磼磿磲礅磹磾礄禫禨穜穛穖穘穔穚窾竀竁簅簏篲簀篿篻簎篴簋篳簂簉簃簁篸篽簆篰篱簐簊糨縭縼繂縳顈縸縪繉繀繇縩繌縰縻縶繄縺罅罿罾罽翴翲耬膻臄臌臊臅臇膼臩艛艚艜薃薀薏薧薕薠薋薣蕻薤薚薞蕷蕼薉薡蕺蕸蕗薎薖薆薍薙薝薁薢薂薈薅蕹��".split(""); +for(j = 0; j != D[251].length; ++j) if(D[251][j].charCodeAt(0) !== 0xFFFD) { e[D[251][j]] = 64256 + j; d[64256 + j] = D[251][j];} +D[252] = "������������������������������������������������蕶薘薐薟虨螾螪螭蟅螰�������螬螹螵螼螮蟉蟃蟂蟌螷螯蟄蟊螴螶螿螸螽蟞螲褵褳褼褾襁襒������褷襂覭覯覮觲觳謞謘謖謑謅謋謢謏謒謕謇謍謈謆謜謓謚豏豰�����豲豱豯貕貔賹赯蹎蹍蹓蹐蹌蹇轃轀邅遾鄸醚醢醛醙醟醡醝醠鎡鎃鎯鍤鍖鍇鍼鍘鍜鍶鍉鍐鍑鍠鍭鎏鍌鍪鍹鍗鍕鍒鍏鍱鍷鍻鍡鍞鍣鍧鍎鍙闇闀闉闃闅閷隮隰隬霠霟霘霝霙鞚鞡鞜鞞鞝韕韔韱顁顄顊顉顅顃餥餫餬餪餳餲餯餭餱餰馘馣馡騂駺駴駷駹駸駶駻駽駾駼騃骾髾髽鬁髼魈鮚鮨鮞鮛鮦鮡鮥鮤鮆��".split(""); +for(j = 0; j != D[252].length; ++j) if(D[252][j].charCodeAt(0) !== 0xFFFD) { e[D[252][j]] = 64512 + j; d[64512 + j] = D[252][j];} +D[253] = "������������������������������������������������鮢鮠鮯鴳鵁鵧鴶鴮鴯鴱�������鴸鴰鵅鵂鵃鴾鴷鵀鴽翵鴭麊麉麍麰黈黚黻黿鼤鼣鼢齔龠儱儭������儮嚘嚜嚗嚚嚝嚙奰嬼屩屪巀幭幮懘懟懭懮懱懪懰懫懖懩擿攄�����擽擸攁攃擼斔旛曚曛曘櫅檹檽櫡櫆檺檶檷櫇檴檭歞毉氋瀇瀌瀍瀁瀅瀔瀎濿瀀濻瀦濼濷瀊爁燿燹爃燽獶璸瓀璵瓁璾璶璻瓂甔甓癜癤癙癐癓癗癚皦皽盬矂瞺礌礓礔礉礐礒礑禭禬穟簜簩簙簠簟簭簝簦簨簢簥簰繜繐繖繣繘繢繟繑繠繗繓羵羳翷翸聵臑臒臐艟艞薴藆藀藃藂薳薵薽藇藄薿藋藎藈藅薱薶��".split(""); +for(j = 0; j != D[253].length; ++j) if(D[253][j].charCodeAt(0) !== 0xFFFD) { e[D[253][j]] = 64768 + j; d[64768 + j] = D[253][j];} +D[254] = "������������������������������������������������藒蘤薸薷薾虩蟧蟦蟢蟛�������蟫蟪蟥蟟蟳蟤蟔蟜蟓蟭蟘蟣蟗蟙蠁蟴蟨蟝襓襋襏襌襆襐襑襉������謪謧謣謳謰謵譇謯謼謾謱謥謷謦謶謮謤謻謽謺豂豵貙貘貗賾�����贄贂贀蹜蹢蹠蹗蹖蹞蹥蹧蹛蹚蹡蹝蹩蹔轆轇轈轋鄨鄺鄻鄾醨醥醧醯醪鎵鎌鎒鎷鎛鎝鎉鎧鎎鎪鎞鎦鎕鎈鎙鎟鎀鎍鎱鎑鎲鎤鎨鎴鎣闒闓闑隳雗雚巂雟雘雝霣霢霥鞬鞮鞨鞫鞤鞪鞢鞥韗韙韖韘韺顐顑顒颸饁餼餺騏騋騉騍騄騑騊騅騇騆髀髜鬈鬄鬅鬩鬵魊魌魋鯇鯆鯃鮿鯁鮵鮸鯓鮶鯄鮹鮽鵜鵓鵏鵊鵛鵋��".split(""); +for(j = 0; j != D[254].length; ++j) if(D[254][j].charCodeAt(0) !== 0xFFFD) { e[D[254][j]] = 65024 + j; d[65024 + j] = D[254][j];} +return {"enc": e, "dec": d }; })(); diff --git a/node_modules/codepage/bits/20003.js b/node_modules/codepage/bits/20003.js new file mode 100644 index 000000000..03387c877 --- /dev/null +++ b/node_modules/codepage/bits/20003.js @@ -0,0 +1,213 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[20003] = (function(){ var d = [], e = {}, D = [], j; +D[0] = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€��������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];} +D[129] = "���������������������������������������������������������������� 、。,․•:;?!��‵′¨˄‾_ヽヾゝゞ〃〄々〆〇ー–—/\∼∥∣…‥‘’“”()〔〕[]{}〈〉《》「」『』【】+-±×�÷=≠<>≦≧∞∴♂♀゜��℃¥$¢£%#&✽@§☆★○●◎◇◆□■△▲▽▼※〒→←↑↓������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[129].length; ++j) if(D[129][j].charCodeAt(0) !== 0xFFFD) { e[D[129][j]] = 33024 + j; d[33024 + j] = D[129][j];} +D[130] = "�������������������������������������������������������������������������������0123456789�������ABCDEFGHIJKLMNOPQRSTUVWXYZ�������abcdefghijklmnopqrstuvwxyz����ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをん��������������".split(""); +for(j = 0; j != D[130].length; ++j) if(D[130][j].charCodeAt(0) !== 0xFFFD) { e[D[130][j]] = 33280 + j; d[33280 + j] = D[130][j];} +D[131] = "����������������������������������������������������������������ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミ�ムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶ��������ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ��������αβγδεζηθικλμνξοπρστυφχψω�����������������������������������������".split(""); +for(j = 0; j != D[131].length; ++j) if(D[131][j].charCodeAt(0) !== 0xFFFD) { e[D[131][j]] = 33536 + j; d[33536 + j] = D[131][j];} +D[132] = "����������������������������������������������������������������АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ���������������абвгдеёжзийклмн�опрстуфхцчшщъыьэюя��������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[132].length; ++j) if(D[132][j].charCodeAt(0) !== 0xFFFD) { e[D[132][j]] = 33792 + j; d[33792 + j] = D[132][j];} +D[135] = "������������������������������������������������������������������丶丿�亅�亠����冂冖冫����勹��匸��卩�厶�����夂����宀������巛����幺广廴���彐彡�������攴����无��������������������������������疒癶��������������������������������������������������������辵��������隶���������������������".split(""); +for(j = 0; j != D[135].length; ++j) if(D[135][j].charCodeAt(0) !== 0xFFFD) { e[D[135][j]] = 34560 + j; d[34560 + j] = D[135][j];} +D[137] = "����������������������������������������������������������������〡〢〣〤〥〦〧〨〩�卄�����˟ˊˇˋ˙ㄅㄆㄇㄈㄉㄊㄋㄌㄍㄎㄏㄐㄑㄒㄓㄔㄕㄖㄗㄘㄙㄚㄛㄜㄝㄞㄟㄠㄡㄢㄣㄤㄥㄦㄧㄨㄩ��������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[137].length; ++j) if(D[137][j].charCodeAt(0) !== 0xFFFD) { e[D[137][j]] = 35072 + j; d[35072 + j] = D[137][j];} +D[138] = "����������������������������������������������������������������①②③④⑤⑥⑦⑧⑨⑩������⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽�����▁▂▃▄▅▆▇█▏▎▍▌▋▊▉┼┴┬┤├▔─│▕┌┐└┘╭╮╰╯�═╞╪╡◢◣◥◤╱╲╳��������������������﹁﹂﹃﹄︻︼�︲︳�︴﹏︵︶︷︸︹︺︽︾︿﹀��*"㊣℅��﹉﹊﹍﹎﹋﹌﹡√≒≡∩∪⊥∠∟⊿㏒㏑∫∮⊕⊙↖↗↙↘∵��℉㏕㎜㎝㎞㏎㎡㎎㎏㏄﹒���〝〞���⇧↸↹兙兛兞兝兡兣嗧瓩糎�������".split(""); +for(j = 0; j != D[138].length; ++j) if(D[138][j].charCodeAt(0) !== 0xFFFD) { e[D[138][j]] = 35328 + j; d[35328 + j] = D[138][j];} +D[139] = "�����������������������������������������������������������������ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩ������ⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹ¬¦��㈱№℡��������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[139].length; ++j) if(D[139][j].charCodeAt(0) !== 0xFFFD) { e[D[139][j]] = 35584 + j; d[35584 + j] = D[139][j];} +D[140] = "����������������������������������������������������������������一乙丁七乃九了二人儿入八几刀刁力匕十卜又三下丈上丫丸凡久么也乞于亡兀刃勺千叉口土士夕大女子孑孓寸小尢尸山川工己已巳巾干廾弋弓才�丑丐不中丰丹之尹予云井互五亢仁什仃仆仇仍今介仄元允內六兮公冗凶分切刈勻勾勿化匹午升卅卞厄友及反壬天夫太夭孔少尤尺屯巴幻廿弔引心戈戶手扎支文斗斤方日曰月木欠止歹毋比毛氏水火爪父爻片牙牛犬王丙世丕且丘主乍乏乎以付仔仕他仗代令仙仞充兄冉冊冬凹出凸刊加功包匆���".split(""); +for(j = 0; j != D[140].length; ++j) if(D[140][j].charCodeAt(0) !== 0xFFFD) { e[D[140][j]] = 35840 + j; d[35840 + j] = D[140][j];} +D[141] = "����������������������������������������������������������������北匝仟半卉卡占卯卮去可古右召叮叩叨叼司叵叫另只史叱台句叭叻四囚外央失奴奶孕它尼巨巧左市布平幼弁弘弗必戊打扔扒扑斥旦朮本未末札正�母民氐永汁汀氾犯玄玉瓜瓦甘生用甩田由甲申疋白皮皿目矛矢石示禾穴立丞丟乒乓乩亙交亦亥仿伉伙伊伕伍伐休伏仲件任仰仳份企伋光兇兆先全共再冰列刑划刎刖劣匈匡匠印危吉吏同吊吐吁吋各向名合吃后吆吒因回囝圳地在圭圬圯圩夙多夷夸妄奸妃好她如妁字存宇守宅安寺尖屹州帆并���".split(""); +for(j = 0; j != D[141].length; ++j) if(D[141][j].charCodeAt(0) !== 0xFFFD) { e[D[141][j]] = 36096 + j; d[36096 + j] = D[141][j];} +D[142] = "����������������������������������������������������������������年式弛忙忖戎戌戍成扣扛托收早旨旬旭曲曳有朽朴朱朵次此死氖汝汗汙江池汐汕污汛汍汎灰牟牝百竹米糸缶羊羽老考而耒耳聿肉肋肌臣自至臼舌�舛舟艮色艾虫血行衣西阡串亨位住佇佗佞伴佛何估佐佑伽伺伸佃佔似但佣作你伯低伶余佝佈佚兌克免兵冶冷別判利刪刨劫助努劬匣即卵吝吭吞吾否呎吧呆呃吳呈呂君吩告吹吻吸吮吵吶吠吼呀吱含吟听囪困囤囫坊坑址坍均坎圾坐坏圻壯夾妝妒妨妞妣妙妖妍妤妓妊妥孝孜孚孛完宋宏尬局屁���".split(""); +for(j = 0; j != D[142].length; ++j) if(D[142][j].charCodeAt(0) !== 0xFFFD) { e[D[142][j]] = 36352 + j; d[36352 + j] = D[142][j];} +D[143] = "����������������������������������������������������������������尿尾岐岑岔岌巫希序庇床廷弄弟彤形彷役忘忌志忍忱快忸忪戒我抄抗抖技扶抉扭把扼找批扳抒扯折扮投抓抑抆改攻攸旱更束李杏材村杜杖杞杉杆�杠杓杗步每求汞沙沁沈沉沅沛汪決沐汰沌汨沖沒汽沃汲汾汴沆汶沍沔沘沂灶灼災灸牢牡牠狄狂玖甬甫男甸皂盯矣私秀禿究系罕肖肓肝肘肛肚育良芒芋芍見角言谷豆豕貝赤走足身車辛辰迂迆迅迄巡邑邢邪邦那酉釆里防阮阱阪阬並乖乳事些亞享京佯依侍佳使佬供例來侃佰併侈佩佻侖佾侏侑���".split(""); +for(j = 0; j != D[143].length; ++j) if(D[143][j].charCodeAt(0) !== 0xFFFD) { e[D[143][j]] = 36608 + j; d[36608 + j] = D[143][j];} +D[144] = "����������������������������������������������������������������佺兔兒兕兩具其典冽函刻券刷刺到刮制剁劾劻卒協卓卑卦卷卸卹取叔受味呵咖呸咕咀呻呷咄咒咆呼咐呱呶和咚呢周咋命咎固垃坷坪坩坡坦坤坼夜�奉奇奈奄奔妾妻委妹妮姑姆姐姍始姓姊妯妳姒姅孟孤季宗定官宜宙宛尚屈居屆岷岡岸岩岫岱岳帘帚帖帕帛帑幸庚店府底庖延弦弧弩往征彿彼忝忠忽念忿怏怔怯怵怖怪怕怡性怩怫怛或戕房戾所承拉拌拄抿拂抹拒招披拓拔拋拈抨抽押拐拙拇拍抵拚抱拘拖拗拆抬拎放斧於旺昔易昌昆昂明昀昏���".split(""); +for(j = 0; j != D[144].length; ++j) if(D[144][j].charCodeAt(0) !== 0xFFFD) { e[D[144][j]] = 36864 + j; d[36864 + j] = D[144][j];} +D[145] = "����������������������������������������������������������������昕昊昇服朋杭枋枕東果杳杷枇枝林杯杰板枉松析杵枚枓杼杪杲欣武歧歿氓氛泣注泳沱泌泥河沽沾沼波沫法泓沸泄油況沮泗泅泱沿治泡泛泊沬泯泜�泖泠炕炎炒炊炙爬爭爸版牧物狀狎狙狗狐玩玨玟玫玥甽疝疙疚的盂盲直知矽社祀祁秉秈空穹竺糾罔羌羋者肺肥肢肱股肫肩肴肪肯臥臾舍芳芝芙芭芽芟芹花芬芥芯芸芣芰芾芷虎虱初表軋迎返近邵邸邱邶采金長門阜陀阿阻附陂隹雨青非亟亭亮信侵侯便俠俑俏保促侶俘俟俊俗侮俐俄係俚俎俞���".split(""); +for(j = 0; j != D[145].length; ++j) if(D[145][j].charCodeAt(0) !== 0xFFFD) { e[D[145][j]] = 37120 + j; d[37120 + j] = D[145][j];} +D[146] = "����������������������������������������������������������������侷兗冒冑冠剎剃削前剌剋則勇勉勃勁匍南卻厚叛咬哀咨哎哉咸咦咳哇哂咽咪品哄哈咯咫咱咻咩咧咿囿垂型垠垣垢城垮垓奕契奏奎奐姜姘姿姣姨娃�姥姪姚姦威姻孩宣宦室客宥封屎屏屍屋峙峒巷帝帥帟幽庠度建弈弭彥很待徊律徇後徉怒思怠急怎怨恍恰恨恢恆恃恬恫恪恤扁拜挖按拼拭持拮拽指拱拷拯括拾拴挑挂政故斫施既春昭映昧是星昨昱昤曷柿染柱柔某柬架枯柵柩柯柄柑枴柚查枸柏柞柳枰柙柢柝柒歪殃殆段毒毗氟泉洋洲洪流津洌���".split(""); +for(j = 0; j != D[146].length; ++j) if(D[146][j].charCodeAt(0) !== 0xFFFD) { e[D[146][j]] = 37376 + j; d[37376 + j] = D[146][j];} +D[147] = "����������������������������������������������������������������洱洞洗活洽派洶洛泵洹洧洸洩洮洵洎洫炫為炳炬炯炭炸炮炤爰牲牯牴狩狠狡玷珊玻玲珍珀玳甚甭畏界畎畋疫疤疥疢疣癸皆皇皈盈盆盃盅省盹相眉�看盾盼眇矜砂研砌砍祆祉祈祇禹禺科秒秋穿突竿竽籽紂紅紀紉紇約紆缸美羿耄耐耍耑耶胖胥胚胃胄背胡胛胎胞胤胝致舢苧范茅苣苛苦茄若茂茉苒苗英茁苜苔苑苞苓苟苯茆虐虹虻虺衍衫要觔計訂訃貞負赴赳趴軍軌述迦迢迪迥迭迫迤迨郊郎郁郃酋酊重閂限陋陌降面革韋韭音頁風飛食首香乘���".split(""); +for(j = 0; j != D[147].length; ++j) if(D[147][j].charCodeAt(0) !== 0xFFFD) { e[D[147][j]] = 37632 + j; d[37632 + j] = D[147][j];} +D[148] = "����������������������������������������������������������������亳倌倍倣俯倦倥俸倩倖倆值借倚倒們俺倀倔倨俱倡個候倘俳修倭倪俾倫倉兼冤冥冢凍凌准凋剖剜剔剛剝匪卿原厝叟哨唐唁唷哼哥哲唆哺唔哩哭員�唉哮哪哦唧唇哽唏圃圄埂埔埋埃堉夏套奘奚娑娘娜娟娛娓姬娠娣娩娥娌娉孫屘宰害家宴宮宵容宸射屑展屐峭峽峻峪峨峰島崁峴差席師庫庭座弱徒徑徐恙恣恥恐恕恭恩息悄悟悚悍悔悌悅悖扇拳挈拿捎挾振捕捂捆捏捉挺捐挽挪挫挨捍捌效敉料旁旅時晉晏晃晒晌晅晁書朔朕朗校核案框桓根桂���".split(""); +for(j = 0; j != D[148].length; ++j) if(D[148][j].charCodeAt(0) !== 0xFFFD) { e[D[148][j]] = 37888 + j; d[37888 + j] = D[148][j];} +D[149] = "����������������������������������������������������������������桔栩梳栗桌桑栽柴桐桀格桃株桅栓栘桁殊殉殷氣氧氨氦氤泰浪涕消涇浦浸海浙涓浬涉浮浚浴浩涌涊浹涅浥涔烊烘烤烙烈烏爹特狼狹狽狸狷玆班琉�珮珠珪珞畔畝畜畚留疾病症疲疳疽疼疹痂疸皋皰益盍盎眩真眠眨矩砰砧砸砝破砷砥砭砠砟砲祕祐祠祟祖神祝祗祚秤秣秧租秦秩秘窄窈站笆笑粉紡紗紋紊素索純紐紕級紜納紙紛缺罟羔翅翁耆耘耕耙耗耽耿胱脂胰脅胭胴脆胸胳脈能脊胼胯臭臬舀舐航舫舨般芻茫荒荔荊茸荐草茵茴荏茲茹茶茗���".split(""); +for(j = 0; j != D[149].length; ++j) if(D[149][j].charCodeAt(0) !== 0xFFFD) { e[D[149][j]] = 38144 + j; d[38144 + j] = D[149][j];} +D[150] = "����������������������������������������������������������������荀茱茨荃虔蚊蚪蚓蚤蚩蚌蚣蚜衰衷袁袂衽衹記訐討訌訕訊託訓訖訏訑豈豺豹財貢起躬軒軔軏辱送逆迷退迺迴逃追逅迸邕郡郝郢酒配酌釘針釗釜釙�閃院陣陡陛陝除陘陞隻飢馬骨高鬥鬲鬼乾偺偽停假偃偌做偉健偶偎偕偵側偷偏倏偯偭兜冕凰剪副勒務勘動匐匏匙匿區匾參曼商啪啦啄啞啡啃啊唱啖問啕唯啤唸售啜唬啣唳啁啗圈國圉域堅堊堆埠埤基堂堵執培夠奢娶婁婉婦婪婀娼婢婚婆婊孰寇寅寄寂宿密尉專將屠屜屝崇崆崎崛崖崢崑崩崔���".split(""); +for(j = 0; j != D[150].length; ++j) if(D[150][j].charCodeAt(0) !== 0xFFFD) { e[D[150][j]] = 38400 + j; d[38400 + j] = D[150][j];} +D[151] = "����������������������������������������������������������������崙崤崧崗巢常帶帳帷康庸庶庵庾張強彗彬彩彫得徙從徘御徠徜恿患悉悠您惋悴惦悽情悻悵惜悼惘惕惆惟悸惚惇戚戛扈掠控捲掖探接捷捧掘措捱掩�掉掃掛捫推掄授掙採掬排掏掀捻捩捨捺敝敖救教敗啟敏敘敕敔斜斛斬族旋旌旎晝晚晤晨晦晞曹勗望梁梯梢梓梵桿桶梱梧梗械梃棄梭梆梅梔條梨梟梡梂欲殺毫毬氫涎涼淳淙液淡淌淤添淺清淇淋涯淑涮淞淹涸混淵淅淒渚涵淚淫淘淪深淮淨淆淄涪淬涿淦烹焉焊烽烯爽牽犁猜猛猖猓猙率琅琊球���".split(""); +for(j = 0; j != D[151].length; ++j) if(D[151][j].charCodeAt(0) !== 0xFFFD) { e[D[151][j]] = 38656 + j; d[38656 + j] = D[151][j];} +D[152] = "����������������������������������������������������������������理現琍瓠瓶瓷甜產略畦畢異疏痔痕疵痊痍皎盔盒盛眷眾眼眶眸眺硫硃硎祥票祭移窒窕笠笨笛第符笙笞笮粒粗粕絆絃統紮紹紼絀細紳組累終紲紱缽�羞羚翌翎習耜聊聆脯脖脣脫脩脰脤舂舵舷舶船莎莞莘荸莢莖莽莫莒莊莓莉莠荷荻荼莆莧處彪蛇蛀蚶蛄蚵蛆蛋蚱蚯蛉術袞袈被袒袖袍袋覓規訪訝訣訥許設訟訛訢豉豚販責貫貨貪貧赧赦趾趺軛軟這逍通逗連速逝逐逕逞造透逢逖逛途部郭都酗野釵釦釣釧釭釩閉陪陵陳陸陰陴陶陷陬雀雪雩章竟���".split(""); +for(j = 0; j != D[152].length; ++j) if(D[152][j].charCodeAt(0) !== 0xFFFD) { e[D[152][j]] = 38912 + j; d[38912 + j] = D[152][j];} +D[153] = "����������������������������������������������������������������頂頃魚鳥鹵鹿麥麻傢傍傅備傑傀傖傘傚最凱割剴創剩勞勝勛博厥啻喀喧啼喊喝喘喂喜喪喔喇喋喃喳單喟唾喲喚喻喬喱啾喉喫喙圍堯堪場堤堰報堡�堝堠壹壺奠婷媚婿媒媛媧孳孱寒富寓寐尊尋就嵌嵐崴嵇巽幅帽幀幃幾廊廁廂廄弼彭復循徨惑惡悲悶惠愜愣惺愕惰惻惴慨惱愎惶愉愀愒戟扉掣掌描揀揩揉揆揍插揣提握揖揭揮捶援揪換摒揚揹敞敦敢散斑斐斯普晰晴晶景暑智晾晷曾替期朝棺棕棠棘棗椅棟棵森棧棹棒棲棣棋棍植椒椎棉棚楮棻���".split(""); +for(j = 0; j != D[153].length; ++j) if(D[153][j].charCodeAt(0) !== 0xFFFD) { e[D[153][j]] = 39168 + j; d[39168 + j] = D[153][j];} +D[154] = "����������������������������������������������������������������款欺欽殘殖殼毯氮氯氬港游湔渡渲湧湊渠渥渣減湛湘渤湖湮渭渦湯渴湍渺測湃渝渾滋溉渙湎湣湄湲湩湟焙焚焦焰無然煮焜牌犄犀猶猥猴猩琺琪琳�琢琥琵琶琴琯琛琦琨甥甦畫番痢痛痣痙痘痞痠登發皖皓皴盜睏短硝硬硯稍稈程稅稀窘窗窖童竣等策筆筐筒答筍筋筏筑粟粥絞結絨絕紫絮絲絡給絢絰絳善翔翕耋聒肅腕腔腋腑腎脹腆脾腌腓腴舒舜菩萃菸萍菠菅萋菁華菱菴著萊菰萌菌菽菲菊萸萎萄菜萇菔菟虛蛟蛙蛭蛔蛛蛤蛐蛞街裁裂袱覃視���".split(""); +for(j = 0; j != D[154].length; ++j) if(D[154][j].charCodeAt(0) !== 0xFFFD) { e[D[154][j]] = 39424 + j; d[39424 + j] = D[154][j];} +D[155] = "����������������������������������������������������������������註詠評詞証詁詔詛詐詆訴診訶詖象貂貯貼貳貽賁費賀貴買貶貿貸越超趁跎距跋跚跑跌跛跆軻軸軼辜逮逵週逸進逶鄂郵鄉郾酣酥量鈔鈕鈣鈉鈞鈍鈐�鈇鈑閔閏開閑間閒閎隊階隋陽隅隆隍陲隄雁雅雄集雇雯雲韌項順須飧飪飯飩飲飭馮馭黃黍黑亂傭債傲傳僅傾催傷傻傯僇剿剷剽募勦勤勢勣匯嗟嗨嗓嗦嗎嗜嗇嗑嗣嗤嗯嗚嗡嗅嗆嗥嗉園圓塞塑塘塗塚塔填塌塭塊塢塒塋奧嫁嫉嫌媾媽媼媳嫂媲嵩嵯幌幹廉廈弒彙徬微愚意慈感想愛惹愁愈慎慌慄���".split(""); +for(j = 0; j != D[155].length; ++j) if(D[155][j].charCodeAt(0) !== 0xFFFD) { e[D[155][j]] = 39680 + j; d[39680 + j] = D[155][j];} +D[156] = "����������������������������������������������������������������慍愾愴愧愍愆愷戡戢搓搾搞搪搭搽搬搏搜搔損搶搖搗搆敬斟新暗暉暇暈暖暄暘暍會榔業楚楷楠楔極椰概楊楨楫楞楓楹榆楝楣楛歇歲毀殿毓毽溢溯�滓溶滂源溝滇滅溥溘溼溺溫滑準溜滄滔溪溧溴煎煙煩煤煉照煜煬煦煌煥煞煆煨煖爺牒猷獅猿猾瑯瑚瑕瑟瑞瑁琿瑙瑛瑜當畸瘀痰瘁痲痱痺痿痴痳盞盟睛睫睦睞督睹睪睬睜睥睨睢矮碎碰碗碘碌碉硼碑碓硿祺祿禁萬禽稜稚稠稔稟稞窟窠筷節筠筮筧粱粳粵經絹綑綁綏絛置罩罪署義羨群聖聘肆肄���".split(""); +for(j = 0; j != D[156].length; ++j) if(D[156][j].charCodeAt(0) !== 0xFFFD) { e[D[156][j]] = 39936 + j; d[39936 + j] = D[156][j];} +D[157] = "����������������������������������������������������������������腱腰腸腥腮腳腫腹腺腦舅艇蒂葷落萱葵葦葫葉葬葛萼萵葡董葩葭葆虞虜號蛹蜓蜈蜇蜀蛾蛻蜂蜃蜆蜊衙裟裔裙補裘裝裡裊裕裒覜解詫該詳試詩詰誇�詼詣誠話誅詭詢詮詬詹詻訾詨豢貊貉賊資賈賄貲賃賂賅跡跟跨路跳跺跪跤跦躲較載軾輊辟農運遊道遂達逼違遐遇遏過遍遑逾遁鄒鄗酬酪酩釉鈷鉗鈸鈽鉀鈾鉛鉋鉤鉑鈴鉉鉍鉅鈹鈿鉚閘隘隔隕雍雋雉雊雷電雹零靖靴靶預頑頓頊頒頌飼飴飽飾馳馱馴髡鳩麂鼎鼓鼠僧僮僥僖僭僚僕像僑僱僎僩兢���".split(""); +for(j = 0; j != D[157].length; ++j) if(D[157][j].charCodeAt(0) !== 0xFFFD) { e[D[157][j]] = 40192 + j; d[40192 + j] = D[157][j];} +D[158] = "����������������������������������������������������������������凳劃劂匱厭嗾嘀嘛嘗嗽嘔嘆嘉嘍嘎嗷嘖嘟嘈嘐嗶團圖塵塾境墓墊塹墅塽壽夥夢夤奪奩嫡嫦嫩嫗嫖嫘嫣孵寞寧寡寥實寨寢寤察對屢嶄嶇幛幣幕幗幔�廓廖弊彆彰徹慇愿態慷慢慣慟慚慘慵截撇摘摔撤摸摟摺摑摧搴摭摻敲斡旗旖暢暨暝榜榨榕槁榮槓構榛榷榻榫榴槐槍榭槌榦槃榣歉歌氳漳演滾漓滴漩漾漠漬漏漂漢滿滯漆漱漸漲漣漕漫漯澈漪滬漁滲滌滷熔熙煽熊熄熒爾犒犖獄獐瑤瑣瑪瑰瑭甄疑瘧瘍瘋瘉瘓盡監瞄睽睿睡磁碟碧碳碩碣禎福禍���".split(""); +for(j = 0; j != D[158].length; ++j) if(D[158][j].charCodeAt(0) !== 0xFFFD) { e[D[158][j]] = 40448 + j; d[40448 + j] = D[158][j];} +D[159] = "����������������������������������������������������������������種稱窪窩竭端管箕箋筵算箝箔箏箸箇箄粹粽精綻綰綜綽綾綠緊綴網綱綺綢綿綵綸維緒緇綬罰翠翡翟聞聚肇腐膀膏膈膊腿膂臧臺與舔舞艋蓉蒿蓆蓄�蒙蒞蒲蒜蓋蒸蓀蓓蒐蒼蓑蓊蜿蜜蜻蜢蜥蜴蜘蝕蜷蜩裳褂裴裹裸製裨褚裯誦誌語誣認誡誓誤說誥誨誘誑誚誧豪貍貌賓賑賒赫趙趕跼輔輒輕輓辣遠遘遜遣遙遞遢遝遛鄙鄘鄞酵酸酷酴鉸銀銅銘銖鉻銓銜銨鉼銑閡閨閩閣閥閤隙障際雌雒需靼鞅韶頗領颯颱餃餅餌餉駁骯骰髦魁魂鳴鳶鳳麼鼻齊億儀���".split(""); +for(j = 0; j != D[159].length; ++j) if(D[159][j].charCodeAt(0) !== 0xFFFD) { e[D[159][j]] = 40704 + j; d[40704 + j] = D[159][j];} +D[160] = "����������������������������������������������������������������僻僵價儂儈儉儅凜劇劈劉劍劊勰厲嘮嘻嘹嘲嘿嘴嘩噓噎噗噴嘶嘯嘰墀墟增墳墜墮墩墦奭嬉嫻嬋嫵嬌嬈寮寬審寫層履嶝嶔幢幟幡廢廚廟廝廣廠彈影�德徵慶慧慮慝慕憂慼慰慫慾憧憐憫憎憬憚憤憔憮戮摩摯摹撞撲撈撐撰撥撓撕撩撒撮播撫撚撬撙撢撳敵敷數暮暫暴暱樣樟槨樁樞標槽模樓樊槳樂樅槭樑歐歎殤毅毆漿潼澄潑潦潔澆潭潛潸潮澎潺潰潤澗潘滕潯潠潟熟熬熱熨牖犛獎獗瑩璋璃瑾璀畿瘠瘩瘟瘤瘦瘡瘢皚皺盤瞎瞇瞌瞑瞋磋磅確磊碾���".split(""); +for(j = 0; j != D[160].length; ++j) if(D[160][j].charCodeAt(0) !== 0xFFFD) { e[D[160][j]] = 40960 + j; d[40960 + j] = D[160][j];} +D[161] = "����������������������������������������������������������������磕碼磐稿稼穀稽稷稻窯窮箭箱範箴篆篇篁箠篌糊締練緯緻緘緬緝編緣線緞緩綞緙緲緹罵罷羯翩耦膛膜膝膠膚膘蔗蔽蔚蓮蔬蔭蔓蔑蔣蔡蔔蓬蔥蓿蔆�螂蝴蝶蝠蝦蝸蝨蝙蝗蝌蝓衛衝褐複褒褓褕褊誼諒談諄誕請諸課諉諂調誰論諍誶誹諛豌豎豬賠賞賦賤賬賭賢賣賜質賡赭趟趣踫踐踝踢踏踩踟踡踞躺輝輛輟輩輦輪輜輞輥適遮遨遭遷鄰鄭鄧鄱醇醉醋醃鋅銻銷鋪銬鋤鋁銳銼鋒鋇鋰銲閭閱霄霆震霉靠鞍鞋鞏頡頫頜颳養餓餒餘駝駐駟駛駑駕駒駙骷���".split(""); +for(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];} +D[162] = "����������������������������������������������������������������髮髯鬧魅魄魷魯鴆鴉鴃麩麾黎墨齒儒儘儔儐儕冀冪凝劑劓勳噙噫噹噩噤噸噪器噥噱噯噬噢噶壁墾壇壅奮嬝嬴學寰導彊憲憑憩憊懍憶憾懊懈戰擅擁�擋撻撼據擄擇擂操撿擒擔撾整曆曉暹曄曇暸樽樸樺橙橫橘樹橄橢橡橋橇樵機橈歙歷氅濂澱澡濃澤濁澧澳激澹澶澦澠澴熾燉燐燒燈燕熹燎燙燜燃燄獨璜璣璘璟璞瓢甌甍瘴瘸瘺盧盥瞠瞞瞟瞥磨磚磬磧禦積穎穆穌穋窺篙簑築篤篛篡篩篦糕糖縊縑縈縛縣縞縝縉縐罹羲翰翱翮耨膳膩膨臻興艘艙蕊���".split(""); +for(j = 0; j != D[162].length; ++j) if(D[162][j].charCodeAt(0) !== 0xFFFD) { e[D[162][j]] = 41472 + j; d[41472 + j] = D[162][j];} +D[163] = "����������������������������������������������������������������蕙蕈蕨蕩蕃蕉蕭蕪蕞螃螟螞螢融衡褪褲褥褫褡親覦諦諺諫諱謀諜諧諮諾謁謂諷諭諳諶諼豫豭貓賴蹄踱踴蹂踹踵輻輯輸輳辨辦遵遴選遲遼遺鄴醒錠�錶鋸錳錯錢鋼錫錄錚錐錦錡錕錮錙閻隧隨險雕霎霑霖霍霓霏靛靜靦鞘頰頸頻頷頭頹頤餐館餞餛餡餚駭駢駱骸骼髻髭鬨鮑鴕鴣鴦鴨鴒鴛默黔龍龜優償儡儲勵嚎嚀嚐嚅嚇嚏壕壓壑壎嬰嬪嬤孺尷屨嶼嶺嶽嶸幫彌徽應懂懇懦懋戲戴擎擊擘擠擰擦擬擱擢擭斂斃曙曖檀檔檄檢檜櫛檣橾檗檐檠歜殮毚���".split(""); +for(j = 0; j != D[163].length; ++j) if(D[163][j].charCodeAt(0) !== 0xFFFD) { e[D[163][j]] = 41728 + j; d[41728 + j] = D[163][j];} +D[164] = "����������������������������������������������������������������氈濘濱濟濠濛濤濫濯澀濬濡濩濕濮濰燧營燮燦燥燭燬燴燠爵牆獰獲璩環璦璨癆療癌盪瞳瞪瞰瞬瞧瞭矯磷磺磴磯礁禧禪穗窿簇簍篾篷簌篠糠糜糞糢�糟糙糝縮績繆縷縲繃縫總縱繅繁縴縹繈縵縿縯罄翳翼聱聲聰聯聳臆臃膺臂臀膿膽臉膾臨舉艱薪薄蕾薜薑薔薯薛薇薨薊虧蟀蟑螳蟒蟆螫螻螺蟈蟋褻褶襄褸褽覬謎謗謙講謊謠謝謄謐豁谿豳賺賽購賸賻趨蹉蹋蹈蹊轄輾轂轅輿避遽還邁邂邀鄹醣醞醜鍍鎂錨鍵鍊鍥鍋錘鍾鍬鍛鍰鍚鍔闊闋闌闈闆隱���".split(""); +for(j = 0; j != D[164].length; ++j) if(D[164][j].charCodeAt(0) !== 0xFFFD) { e[D[164][j]] = 41984 + j; d[41984 + j] = D[164][j];} +D[165] = "����������������������������������������������������������������隸雖霜霞鞠韓顆颶餵騁駿鮮鮫鮪鮭鴻鴿麋黏點黜黝黛鼾齋叢嚕嚮壙壘嬸彝懣戳擴擲擾攆擺擻擷斷曜朦檳檬櫃檻檸櫂檮檯歟歸殯瀉瀋濾瀆濺瀑瀏燻�燼燾燸獷獵璧璿甕癖癘癒瞽瞿瞻瞼礎禮穡穢穠竄竅簫簧簪簞簣簡糧織繕繞繚繡繒繙罈翹翻職聶臍臏舊藏薩藍藐藉薰薺薹薦蟯蟬蟲蟠覆覲觴謨謹謬謫豐贅蹙蹣蹦蹤蹟蹕軀轉轍邇邃邈醫醬釐鎔鎊鎖鎢鎳鎮鎬鎰鎘鎚鎗闔闖闐闕離雜雙雛雞霤鞣鞦鞭韹額顏題顎顓颺餾餿餽餮馥騎髁鬃鬆魏魎魍鯊���".split(""); +for(j = 0; j != D[165].length; ++j) if(D[165][j].charCodeAt(0) !== 0xFFFD) { e[D[165][j]] = 42240 + j; d[42240 + j] = D[165][j];} +D[166] = "����������������������������������������������������������������鯉鯽鯈鯀鵑鵝鵠黠鼕鼬儳嚥壞壟壢寵龐廬懲懷懶懵攀攏曠曝櫥櫝櫚櫓瀛瀟瀨瀚瀝瀕瀘爆爍牘犢獸獺璽瓊瓣疇疆癟癡矇礙禱穫穩簾簿簸簽簷籀繫繭�繹繩繪羅繳羶羹羸臘藩藝藪藕藤藥藷蟻蠅蠍蟹蟾襠襟襖襞譁譜識證譚譎譏譆譙贈贊蹼蹲躇蹶蹬蹺蹴轔轎辭邊邋醱醮鏡鏑鏟鏃鏈鏜鏝鏖鏢鏍鏘鏤鏗鏨關隴難霪霧靡韜韻類願顛颼饅饉騖騙鬍鯨鯧鯖鯛鶉鵡鵲鵪鵬麒麗麓麴勸嚨嚷嚶嚴嚼壤孀孃孽寶巉懸懺攘攔攙曦朧櫬瀾瀰瀲爐獻瓏癢癥礦礪礬���".split(""); +for(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];} +D[167] = "����������������������������������������������������������������礫竇競籌籃籍糯糰辮繽繼纂罌耀臚艦藻藹蘑藺蘆蘋蘇蘊蠔蠕襤覺觸議譬警譯譟譫贏贍躉躁躅躂醴釋鐘鐃鏽闡霰飄饒饑馨騫騰騷騵鰓鰍鹹麵黨鼯齟�齣齡儷儸囁囀囂夔屬巍懼懾攝攜斕曩櫻欄櫺殲灌爛犧瓖瓔癩矓籐纏續羼蘗蘭蘚蠣蠢蠡蠟襪襬覽譴護譽贓躊躍躋轟辯醺鐮鐳鐵鐺鐸鐲鐫闢霸霹露響顧顥饗驅驃驀騾髏魔魑鰭鰥鶯鶴鷂鶸麝黯鼙齜齦齧儼儻囈囊囉孿巔巒彎懿攤權歡灑灘玀瓤疊癮癬禳籠籟聾聽臟襲襯觼讀贖贗躑躓轡酈鑄鑑鑒霽���".split(""); +for(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];} +D[168] = "����������������������������������������������������������������霾韃韁顫饕驕驍髒鬚鱉鰱鰾鰻鷓鷗鼴齬齪龔囌巖戀攣攫攪曬欐瓚竊籤籣籥纓纖纔臢蘸蘿蠱變邐邏鑣鑠鑤靨顯饜驚驛驗髓體髑鱔鱗鱖鷥麟黴囑壩攬�灞癱癲矗罐羈蠶蠹衢讓讒讖艷贛釀鑪靂靈靄韆顰驟鬢魘鱟鷹鷺鹼鹽鼇齷齲廳欖灣籬籮蠻觀躡釁鑲鑰顱饞髖鬣黌灤矚讚鑷韉驢驥纜讜躪釅鑽鑾鑼鱷鱸黷豔鑿鸚爨驪鬱鸛鸞籲������������������������������������������������������".split(""); +for(j = 0; j != D[168].length; ++j) if(D[168][j].charCodeAt(0) !== 0xFFFD) { e[D[168][j]] = 43008 + j; d[43008 + j] = D[168][j];} +D[169] = "����������������������������������������������������������������乂乜凵匚厂万丌乇亍囗兀屮彳丏冇与丮亓仂仉仈冘勼卬厹圠夃夬尐巿旡殳毌气爿丱丼仨仜仩仡仝仚刌匜卌圢圣夗夯宁宄尒尻屴屳帄庀庂忉戉扐氕�氶汃氿氻犮犰玊禸肊阞伎优伬仵伔仱伀价伈伝伂伅伢伓伄仴伒冱刓刉刐劦匢匟卍厊吇囡囟圮圪圴夼妀奼妅奻奾奷奿孖尕尥屼屺屻屾巟幵庄异弚彴忕忔忏扜扞扤扡扦扢扙扠扚扥旯旮朾朹朸朻机朿朼朳氘汆汒汜汏汊汔汋汌灱牞犴犵玎甪癿穵网艸艼芀艽艿虍襾邙邗邘邛邔阢阤阠阣佖伻佢佉体���".split(""); +for(j = 0; j != D[169].length; ++j) if(D[169][j].charCodeAt(0) !== 0xFFFD) { e[D[169][j]] = 43264 + j; d[43264 + j] = D[169][j];} +D[170] = "����������������������������������������������������������������佤伾佧佒佟佁佘伭伳伿佡冏冹刜刞刡劭劮匉卣卲厎厏吰吷吪呔呅吙吜吥吘吽呏呁吨吤呇囮囧囥坁坅坌坉坋坒夆奀妦妘妠妗妎妢妐妏妧妡宎宒尨尪�岍岏岈岋岉岒岊岆岓岕巠帊帎庋庉庌庈庍弅弝彸彶忒忑忐忭忨忮忳忡忤忣忺忯忷忻怀忴戺抃抌抎抏抔抇扱扻扺扰抁抈扷扽扲扴攷旰旴旳旲旵杅杇杙杕杌杈杝杍杚杋毐氙氚汸汧汫沄沋沏汱汯汩沚汭沇沕沜汦汳汥汻沎灴灺牣犿犽狃狆狁犺狅玕玗玓玔玒町甹疔疕皁礽耴肕肙肐肒肜芐芏芅芎芑���".split(""); +for(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];} +D[171] = "����������������������������������������������������������������芓芊芃芄豸迉辿邟邡邥邞邧邠阰阨阯阭丳侘佼侅佽侀侇佶佴侉侄佷佌侗佪侚佹侁佸侐侜侔侞侒侂侕佫佮冞冼冾刵刲刳剆刱劼匊匋匼厒厔咇呿咁咑�咂咈呫呺呾呥呬呴呦咍呯呡呠咘呣呧呤囷囹坯坲坭坫坱坰坶垀坵坻坳坴坢坨坽夌奅妵妺姏姎妲姌姁妶妼姃姖妱妽姀姈妴姇孢孥宓宕屄屇岮岤岠岵岯岨岬岟岣岭岢岪岧岝岥岶岰岦帗帔帙弨弢弣弤彔徂彾彽忞忥怭怦怙怲怋怴怊怗怳怚怞怬怢怍怐怮怓怑怌怉怜戔戽抭抴拑抾抪抶拊抮抳抯抻抩���".split(""); +for(j = 0; j != D[171].length; ++j) if(D[171][j].charCodeAt(0) !== 0xFFFD) { e[D[171][j]] = 43776 + j; d[43776 + j] = D[171][j];} +D[172] = "����������������������������������������������������������������抰抸攽斨斻昉旼昄昒昈旻昃昋昍昅旽昑昐曶朊枅杬枎枒杶杻枘枆构杴枍枌杺枟枑枙枃杽极杸杹枔欥殀歾毞氝沓泬泫泮泙沶泔沭泧沷泐泂沺泃泆泭�泲泒泝沴沊沝沀泞泀洰泍泇沰泹泏泩泑炔炘炅炓炆炄炑炖炂炚炃牪狖狋狘狉狜狒狔狚狌狑玤玡玭玦玢玠玬玝瓝瓨甿畀甾疌疘皯盳盱盰盵矸矼矹矻矺矷祂礿秅穸穻竻籵糽耵肏肮肣肸肵肭舠芠苀芫芚芘芛芵芧芮芼芞芺芴芨芡芩苂芤苃芶芢虰虯虭虮豖迒迋迓迍迖迕迗邲邴邯邳邰阹阽阼阺陃俍���".split(""); +for(j = 0; j != D[172].length; ++j) if(D[172][j].charCodeAt(0) !== 0xFFFD) { e[D[172][j]] = 44032 + j; d[44032 + j] = D[172][j];} +D[173] = "����������������������������������������������������������������俅俓侲俉俋俁俔俜俙侻侳俛俇俖侺俀侹俬剄剉勀勂匽卼厗厖厙厘咺咡咭咥哏哃茍咷咮哖咶哅哆咠呰咼咢咾呲哞咰垵垞垟垤垌垗垝垛垔垘垏垙垥垚�垕壴复奓姡姞姮娀姱姝姺姽姼姶姤姲姷姛姩姳姵姠姾姴姭宨屌峐峘峌峗峋峛峞峚峉峇峊峖峓峔峏峈峆峎峟峸巹帡帢帣帠帤庰庤庢庛庣庥弇弮彖徆怷怹恔恲恞恅恓恇恉恛恌恀恂恟怤恄恘恦恮扂扃拏挍挋拵挎挃拫拹挏挌拸拶挀挓挔拺挕拻拰敁敃斪斿昶昡昲昵昜昦昢昳昫昺昝昴昹昮朏朐柁柲���".split(""); +for(j = 0; j != D[173].length; ++j) if(D[173][j].charCodeAt(0) !== 0xFFFD) { e[D[173][j]] = 44288 + j; d[44288 + j] = D[173][j];} +D[174] = "����������������������������������������������������������������柈枺柜枻柸柘柀枷柅柫柤柟枵柍枳柷柶柮柣柂枹柎柧柰枲柼柆柭柌枮柦柛柺柉柊柃柪柋欨殂殄殶毖毘毠氠氡洨洴洭洟洼洿洒洊泚洳洄洙洺洚洑洀�洝浂洁洘洷洃洏浀洇洠洬洈洢洉洐炷炟炾炱炰炡炴炵炩牁牉牊牬牰牳牮狊狤狨狫狟狪狦狣玅珌珂珈珅玹玶玵玴珫玿珇玾珃珆玸珋瓬瓮甮畇畈疧疪癹盄眈眃眄眅眊盷盻盺矧矨砆砑砒砅砐砏砎砉砃砓祊祌祋祅祄秕种秏秖秎窀穾竑笀笁籺籸籹籿粀粁紃紈紁罘羑羍羾耇耎耏耔耷胘胇胠胑胈胂胐���".split(""); +for(j = 0; j != D[174].length; ++j) if(D[174][j].charCodeAt(0) !== 0xFFFD) { e[D[174][j]] = 44544 + j; d[44544 + j] = D[174][j];} +D[175] = "����������������������������������������������������������������胅胣胙胜胊胕胉胏胗胦胍臿舡芔苙苾苹茇苨茀苕茺苫苖苴苬苡苲苵茌苻苶苰苪苤苠苺苳苭虷虴虼虳衁衎衧衪衩觓訄訇赲迣迡迮迠郱邽邿郕郅邾郇�郋郈釔釓陔陏陑陓陊陎倞倅倇倓倢倰倛俵俴倳倷倬俶俷倗倜倠倧倵倯倱倎党冔冓凊凄凅凈凎剡剚剒剞剟剕剢勍匎厞唦哢唗唒哧哳哤唚哿唄唈哫唑唅哱唊哻哷哸哠唎唃唋圁圂埌堲埕埒垺埆垽垼垸垶垿埇埐垹埁夎奊娙娖娭娮娕娏娗娊娞娳孬宧宭宬尃屖屔峬峿峮峱峷崀峹帩帨庨庮庪庬弳弰彧���".split(""); +for(j = 0; j != D[175].length; ++j) if(D[175][j].charCodeAt(0) !== 0xFFFD) { e[D[175][j]] = 44800 + j; d[44800 + j] = D[175][j];} +D[176] = "����������������������������������������������������������������恝恚恧恁悢悈悀悒悁悝悃悕悛悗悇悜悎戙扆拲挐捖挬捄捅挶捃揤挹捋捊挼挩捁挴捘捔捙挭捇挳捚捑挸捗捀捈敊敆旆旃旄旂晊晟晇晑朒朓栟栚桉栲�栳栻桋桏栖栱栜栵栫栭栯桎桄栴栝栒栔栦栨栮桍栺栥栠欬欯欭欱欴歭肂殈毦毤毨毣毢毧氥浺浣浤浶洍浡涒浘浢浭浯涑涍淯浿涆浞浧浠涗浰浼浟涂涘洯浨涋浾涀涄洖涃浻浽浵涐烜烓烑烝烋缹烢烗烒烞烠烔烍烅烆烇烚烎烡牂牸牷牶猀狺狴狾狶狳狻猁珓珙珥珖玼珧珣珩珜珒珛珔珝珚珗珘珨瓞���".split(""); +for(j = 0; j != D[176].length; ++j) if(D[176][j].charCodeAt(0) !== 0xFFFD) { e[D[176][j]] = 45056 + j; d[45056 + j] = D[176][j];} +D[177] = "����������������������������������������������������������������瓟瓴瓵甡畛畟疰痁疻痄痀疿疶疺皊盉眝眛眐眓眒眣眑眕眙眚眢眧砣砬砢砵砯砨砮砫砡砩砳砪砱祔祛祏祜祓祒祑秫秬秠秮秭秪秜秞秝窆窉窅窋窌窊�窇竘笐笄笓笅笏笈笊笎笉笒粄粑粊粌粈粍粅紞紝紑紎紘紖紓紟紒紏紌罜罡罞罠罝罛羖羒翃翂翀耖耾耹胺胲胹胵脁胻脀舁舯舥茳茭荄茙荑茥荖茿荁茦茜茢荂荎茛茪茈茼荍茖茤茠茷茯茩荇荅荌荓茞茬荋茧荈虓虒蚢蚨蚖蚍蚑蚞蚇蚗蚆蚋蚚蚅蚥蚙蚡蚧蚕蚘蚎蚝蚐蚔衃衄衭衵衶衲袀衱衿衯袃衾衴���".split(""); +for(j = 0; j != D[177].length; ++j) if(D[177][j].charCodeAt(0) !== 0xFFFD) { e[D[177][j]] = 45312 + j; d[45312 + j] = D[177][j];} +D[178] = "����������������������������������������������������������������衼訒豇豗豻貤貣赶赸趵趷趶軑軓迾迵适迿迻逄迼迶郖郠郙郚郣郟郥郘郛郗郜郤酐酎酏釕釢釚陜陟隼飣髟鬯乿偰偪偡偞偠偓偋偝偲偈偍偁偛偊偢倕�偅偟偩偫偣偤偆偀偮偳偗偑凐剫剭剬剮勖勓匭厜啵啶唼啍啐唴唪啑啢唶唵唰啒啅唌唲啥啎唹啈唭唻啀啋圊圇埻堔埢埶埜埴堀埭埽堈埸堋埳埏堇埮埣埲埥埬埡堎埼堐埧堁堌埱埩埰堍堄奜婠婘婕婧婞娸娵婭婐婟婥婬婓婤婗婃婝婒婄婛婈媎娾婍娹婌婰婩婇婑婖婂婜孲孮寁寀屙崞崋崝崚崠崌崨���".split(""); +for(j = 0; j != D[178].length; ++j) if(D[178][j].charCodeAt(0) !== 0xFFFD) { e[D[178][j]] = 45568 + j; d[45568 + j] = D[178][j];} +D[179] = "����������������������������������������������������������������崍崦崥崏崰崒崣崟崮帾帴庱庴庹庲庳弶弸徛徖徟悊悐悆悾悰悺惓惔惏惤惙惝惈悱惛悷惊悿惃惍惀挲捥掊掂捽掽掞掭掝掗掫掎捯掇掐据掯捵掜捭掮�捼掤挻掟捸掅掁掑掍捰敓旍晥晡晛晙晜晢朘桹梇梐梜桭桮梮梫楖桯梣梬梩桵桴梲梏桷梒桼桫桲梪梀桱桾梛梖梋梠梉梤桸桻梑梌梊桽欶欳欷欸殑殏殍殎殌氪淀涫涴涳湴涬淩淢涷淶淔渀淈淠淟淖涾淥淜淝淛淴淊涽淭淰涺淕淂淏淉淐淲淓淽淗淍淣涻烺焍烷焗烴焌烰焄烳焐烼烿焆焓焀烸烶焋焂���".split(""); +for(j = 0; j != D[179].length; ++j) if(D[179][j].charCodeAt(0) !== 0xFFFD) { e[D[179][j]] = 45824 + j; d[45824 + j] = D[179][j];} +D[180] = "����������������������������������������������������������������焎牾牻牼牿猝猗猇猑猘猊猈狿猏猞玈珶珸珵琄琁珽琇琀珺珼珿琌琋珴琈畤畣痎痒痏痋痌痑痐皏皉盓眹眯眭眱眲眴眳眽眥眻眵硈硒硉硍硊硌砦硅硐�祤祧祩祪祣祫祡离秺秸秶秷窏窔窐笵筇笴笥笰笢笤笳笘笪笝笱笫笭笯笲笸笚笣粔粘粖粣紵紽紸紶紺絅紬紩絁絇紾紿絊紻紨罣羕羜羝羛翊翋翍翐翑翇翏翉耟耞耛聇聃聈脘脥脙脛脭脟脬脞脡脕脧脝脢舑舸舳舺舴舲艴莐莣莨莍荺荳莤荴莏莁莕莙荵莔莩荽莃莌莝莛莪莋荾莥莯莈莗莰荿莦莇莮荶���".split(""); +for(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];} +D[181] = "����������������������������������������������������������������莚虙虖蚿蚷蛂蛁蛅蚺蚰蛈蚹蚳蚸蛌蚴蚻蚼蛃蚽蚾衒袉袕袨袢袪袚袑袡袟袘袧袙袛袗袤袬袌袓袎覂觖觙觕訰訧訬訞谹谻豜豝豽貥赽赻赹趼跂趹趿跁�軘軞軝軜軗軠軡逤逋逑逜逌逡郯郪郰郴郲郳郔郫郬郩酖酘酚酓酕釬釴釱釳釸釤釹釪釫釷釨釮镺閆閈陼陭陫陱陯隿靪頄飥馗傛傕傔傞傋傣傃傌傎傝偨傜傒傂傇兟凔匒匑厤厧喑喨喥喭啷噅喢喓喈喏喵喁喣喒喤啽喌喦啿喕喡喎圌堩堷堙堞堧堣堨埵塈堥堜堛堳堿堶堮堹堸堭堬堻奡媯媔媟婺媢媞���".split(""); +for(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];} +D[182] = "����������������������������������������������������������������婸媦婼媥媬媕媮娷媄媊媗媃媋媩婻婽媌媜媏媓媝寪寍寋寔寑寊寎尌尰崷嵃嵫嵁嵋崿崵嵑嵎嵕崳崺嵒崽崱嵙嵂崹嵉崸崼崲崶嵀嵅幄幁彘徦徥徫惉悹�惌惢惎惄愔惲愊愖愅惵愓惸惼惾惁愃愘愝愐惿愄愋扊掔掱掰揎揥揨揯揃撝揳揊揠揶揕揲揵摡揟掾揝揜揄揘揓揂揇揌揋揈揰揗揙攲敧敪敤敜敨敥斌斝斞斮旐旒晼晬晻暀晱晹晪晲朁椌棓椄棜椪棬棪棱椏棖棷棫棤棶椓椐棳棡椇棌椈楰梴椑棯棆椔棸棐棽棼棨椋椊椗棎棈棝棞棦棴棑椆棔棩椕椥棇���".split(""); +for(j = 0; j != D[182].length; ++j) if(D[182][j].charCodeAt(0) !== 0xFFFD) { e[D[182][j]] = 46592 + j; d[46592 + j] = D[182][j];} +D[183] = "����������������������������������������������������������������欹欻欿欼殔殗殙殕殽毰毲毳氰淼湆湇渟湉溈渼渽湅湢渫渿湁湝湳渜渳湋湀湑渻渃渮湞湨湜湡渱渨湠湱湫渹渢渰湓湥渧湸湤湷湕湹湒湦渵渶湚焠焞�焯烻焮焱焣焥焢焲焟焨焺焛牋牚犈犉犆犅犋猒猋猰猢猱猳猧猲猭猦猣猵猌琮琬琰琫琖琚琡琭琱琤琣琝琩琠琲瓻甯畯畬痧痚痡痦痝痟痤痗皕皒盚睆睇睄睍睅睊睎睋睌矞矬硠硤硥硜硭硱硪确硰硩硨硞硢祴祳祲祰稂稊稃稌稄窙竦竤筊笻筄筈筌筎筀筘筅粢粞粨粡絘絯絣絓絖絧絪絏絭絜絫絒絔絩���".split(""); +for(j = 0; j != D[183].length; ++j) if(D[183][j].charCodeAt(0) !== 0xFFFD) { e[D[183][j]] = 46848 + j; d[46848 + j] = D[183][j];} +D[184] = "����������������������������������������������������������������絑絟絎缾缿罥罦羢羠羡翗聑聏聐胾胔腃腊腒腏腇脽腍脺臦臮臷臸臹舄舼舽舿艵茻菏菹萣菀菨萒菧菤菼菶萐菆菈菫菣莿萁菝菥菘菿菡菋菎菖菵菉萉�萏菞萑萆菂菳菕菺菇菑菪萓菃菬菮菄菻菗菢萛菛菾蛘蛢蛦蛓蛣蛚蛪蛝蛫蛜蛬蛩蛗蛨蛑衈衖衕袺裗袹袸裀袾袶袼袷袽袲褁裉覕覘覗觝觚觛詎詍訹詙詀詗詘詄詅詒詈詑詊詌詏豟貁貀貺貾貰貹貵趄趀趉跘跓跍跇跖跜跏跕跙跈跗跅軯軷軺軹軦軮軥軵軧軨軶軫軱軬軴軩逭逴逯鄆鄬鄄郿郼鄈郹郻鄁���".split(""); +for(j = 0; j != D[184].length; ++j) if(D[184][j].charCodeAt(0) !== 0xFFFD) { e[D[184][j]] = 47104 + j; d[47104 + j] = D[184][j];} +D[185] = "����������������������������������������������������������������鄀鄇鄅鄃酡酤酟酢酠鈁鈊鈥鈃鈚鈦鈏鈌鈀鈒釿釽鈆鈄鈧鈂鈜鈤鈙鈗鈅鈖镻閍閌閐隇陾隈隉隃隀雂雈雃雱雰靬靰靮頇颩飫鳦黹亃亄亶傽傿僆傮僄僊�傴僈僂傰僁傺傱僋僉傶傸凗剺剸剻剼嗃嗛嗌嗐嗋嗊嗝嗀嗔嗄嗩喿嗒喍嗏嗕嗢嗖嗈嗲嗍嗙嗂圔塓塨塤塏塍塉塯塕塎塝塙塥塛堽塣塱壼嫇嫄嫋媺媸媱媵媰媿嫈媻嫆媷嫀嫊媴媶嫍媹媐寖寘寙尟尳嵱嵣嵊嵥嵲嵬嵞嵨嵧嵢巰幏幎幊幍幋廅廌廆廋廇彀徯徭惷慉慊愫慅愶愲愮慆愯慏愩慀戠酨戣戥戤揅���".split(""); +for(j = 0; j != D[185].length; ++j) if(D[185][j].charCodeAt(0) !== 0xFFFD) { e[D[185][j]] = 47360 + j; d[47360 + j] = D[185][j];} +D[186] = "����������������������������������������������������������������揱揫搐搒搉搠搤搳摃搟搕搘搹搷搢搣搌搦搰搨摁搵搯搊搚摀搥搧搋揧搛搮搡搎敯斒旓暆暌暕暐暋暊暙暔晸朠楦楟椸楎楢楱椿楅楪椹楂楗楙楺楈楉�椵楬椳椽楥棰楸椴楩楀楯楄楶楘楁楴楌椻楋椷楜楏楑椲楒椯楻椼歆歅歃歂歈歁殛嗀毻毼毹毷毸溛滖滈溏滀溟溓溔溠溱溹滆滒溽滁溞滉溷溰滍溦滏溲溾滃滜滘溙溒溎溍溤溡溿溳滐滊溗溮溣煇煔煒煣煠煁煝煢煲煸煪煡煂煘煃煋煰煟煐煓煄煍煚牏犍犌犑犐犎猼獂猻猺獀獊獉瑄瑊瑋瑒瑑瑗瑀瑏���".split(""); +for(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];} +D[187] = "����������������������������������������������������������������瑐瑎瑂瑆瑍瑔瓡瓿瓾瓽甝畹畷榃痯瘏瘃痷痾痼痹痸瘐痻痶痭痵痽皙皵盝睕睟睠睒睖睚睩睧睔睙睭矠碇碚碔碏碄碕碅碆碡碃硹碙碀碖硻祼禂祽祹稑�稘稙稒稗稕稢稓稛稐窣窢窞竫筦筤筭筴筩筲筥筳筱筰筡筸筶筣粲粴粯綈綆綀綍絿綅絺綎絻綃絼綌綔綄絽綒罭罫罧罨罬羦羥羧翛翜耡腤腠腷腜腩腛腢腲朡腞腶腧腯腄腡舝艉艄艀艂艅蓱萿葖葶葹蒏蒍葥葑葀蒆葧萰葍葽葚葙葴葳葝蔇葞萷萺萴葺葃葸萲葅萩菙葋萯葂萭葟葰萹葎葌葒葯蓅蒎萻葇���".split(""); +for(j = 0; j != D[187].length; ++j) if(D[187][j].charCodeAt(0) !== 0xFFFD) { e[D[187][j]] = 47872 + j; d[47872 + j] = D[187][j];} +D[188] = "����������������������������������������������������������������萶萳葨葾葄萫葠葔葮葐蜋蜄蛷蜌蛺蛖蛵蝍蛸蜎蜉蜁蛶蜍蜅裖裋裍裎裞裛裚裌裐覅覛觟觥觤觡觠觢觜触詶誆詿詡訿詷誂誄詵誃誁詴詺谼豋豊豥豤豦�貆貄貅賌赨赩趑趌趎趏趍趓趔趐趒跰跠跬跱跮跐跩跣跢跧跲跫跴輆軿輁輀輅輇輈輂輋遒逿遄遉逽鄐鄍鄏鄑鄖鄔鄋鄎酮酯鉈鉒鈰鈺鉦鈳鉥鉞銃鈮鉊鉆鉭鉬鉏鉠鉧鉯鈶鉡鉰鈱鉔鉣鉐鉲鉎鉓鉌鉖鈲閟閜閞閛隒隓隑隗雎雺雽雸雵靳靷靸靲頏頍頎颬飶飹馯馲馰馵骭骫魛鳪鳭鳧麀黽僦僔僗僨僳僛僪���".split(""); +for(j = 0; j != D[188].length; ++j) if(D[188][j].charCodeAt(0) !== 0xFFFD) { e[D[188][j]] = 48128 + j; d[48128 + j] = D[188][j];} +D[189] = "����������������������������������������������������������������僝僤僓僬僰僯僣僠凘劀劁勩勫匰厬嘧嘕嘌嘒嗼嘏嘜嘁嘓嘂嗺嘝嘄嗿嗹墉塼墐墘墆墁塿塴墋塺墇墑墎塶墂墈塻墔墏壾奫嫜嫮嫥嫕嫪嫚嫭嫫嫳嫢嫠嫛�嫬嫞嫝嫙嫨嫟孷寠寣屣嶂嶀嵽嶆嵺嶁嵷嶊嶉嶈嵾嵼嶍嵹嵿幘幙幓廘廑廗廎廜廕廙廒廔彄彃彯徶愬愨慁慞慱慳慒慓慲慬憀慴慔慺慛慥愻慪慡慖戩戧戫搫摍摛摝摴摶摲摳摽摵摦撦摎撂摞摜摋摓摠摐摿搿摬摫摙摥摷敳斠暡暠暟朅朄朢榱榶槉榠槎榖榰榬榼榑榙榎榧榍榩榾榯榿槄榽榤槔榹槊榚槏���".split(""); +for(j = 0; j != D[189].length; ++j) if(D[189][j].charCodeAt(0) !== 0xFFFD) { e[D[189][j]] = 48384 + j; d[48384 + j] = D[189][j];} +D[190] = "����������������������������������������������������������������榳榓榪榡榞槙榗榐槂榵榥槆歊歍歋殞殟殠毃毄毾滎滵滱漃漥滸漷滻漮漉潎漙漚漧漘漻漒滭漊漶潳滹滮漭潀漰漼漵滫漇漎潃漅滽滶漹漜滼漺漟漍漞�漈漡熇熐熉熀熅熂熏煻熆熁熗牄牓犗犕犓獃獍獑獌瑢瑳瑱瑵瑲瑧瑮甀甂甃畽疐瘖瘈瘌瘕瘑瘊瘔皸瞁睼瞅瞂睮瞀睯睾瞃碲碪碴碭碨硾碫碞碥碠碬碢碤禘禊禋禖禕禔禓禗禈禒禐稫穊稰稯稨稦窨窫窬竮箈箜箊箑箐箖箍箌箛箎箅箘劄箙箤箂粻粿粼粺綧綷緂綣綪緁緀緅綝緎緄緆緋緌綯綹綖綼綟綦���".split(""); +for(j = 0; j != D[190].length; ++j) if(D[190][j].charCodeAt(0) !== 0xFFFD) { e[D[190][j]] = 48640 + j; d[48640 + j] = D[190][j];} +D[191] = "����������������������������������������������������������������綮綩綡緉罳翢翣翥翞耤聝聜膉膆膃膇膍膌膋舕蒗蒤蒡蒟蒺蓎蓂蒬蒮蒫蒹蒴蓁蓍蒪蒚蒱蓐蒝蒧蒻蒢蒔蓇蓌蒛蒩蒯蒨蓖蒘蒶蓏蒠蓗蓔蓒蓛蒰蒑虡蜳蜣�蜨蝫蝀蜮蜞蜡蜙蜛蝃蜬蝁蜾蝆蜠蜲蜪蜭蜼蜒蜺蜱蜵蝂蜦蜧蜸蜤蜚蜰蜑裷裧裱裲裺裾裮裼裶裻裰裬裫覝覡覟覞觩觫觨誫誙誋誒誏誖谽豨豩賕賏賗趖踉踂跿踍跽踊踃踇踆踅跾踀踄輐輑輎輍鄣鄜鄠鄢鄟鄝鄚鄤鄡鄛酺酲酹酳銥銤鉶銛鉺銠銔銪銍銦銚銫鉹銗鉿銣鋮銎銂銕銢鉽銈銡銊銆銌銙銧鉾銇���".split(""); +for(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];} +D[192] = "����������������������������������������������������������������銩銝銋鈭隞隡雿靘靽靺靾鞃鞀鞂靻鞄鞁靿韎韍頖颭颮餂餀餇馝馜駃馹馻馺駂馽駇骱髣髧鬾鬿魠魡魟鳱鳲鳵麧僿儃儰僸儆儇僶僾儋儌僽儊劋劌勱勯�噈噂噌嘵噁噊噉噆噘噚噀嘳嘽嘬嘾嘸嘪嘺圚墫墝墱墠墣墯墬墥墡壿嫿嫴嫽嫷嫶嬃嫸嬂嫹嬁嬇嬅嬏屧嶙嶗嶟嶒嶢嶓嶕嶠嶜嶡嶚嶞幩幝幠幜緳廛廞廡彉徲憋憃慹憱憰憢憉憛憓憯憭憟憒憪憡憍慦憳戭摮摰撖撠撅撗撜撏撋撊撌撣撟摨撱撘敶敺敹敻斲斳暵暰暩暲暷暪暯樀樆樗槥槸樕槱槤樠槿槬槢���".split(""); +for(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];} +D[193] = "����������������������������������������������������������������樛樝槾樧槲槮樔槷槧橀樈槦槻樍槼槫樉樄樘樥樏槶樦樇槴樖歑殥殣殢殦氁氀毿氂潁漦潾澇濆澒澍澉澌潢潏澅潚澖潶潬澂潕潲潒潐潗澔澓潝漀潡潫�潽潧澐潓澋潩潿澕潣潷潪潻熲熯熛熰熠熚熩熵熝熥熞熤熡熪熜熧熳犘犚獘獒獞獟獠獝獛獡獚獙獢璇璉璊璆璁瑽璅璈瑼瑹甈甇畾瘥瘞瘙瘝瘜瘣瘚瘨瘛皜皝皞皛瞍瞏瞉瞈磍碻磏磌磑磎磔磈磃磄磉禚禡禠禜禢禛歶稹窲窴窳箷篋箾箬篎箯箹篊箵糅糈糌糋緷緛緪緧緗緡縃緺緦緶緱緰緮緟罶羬羰羭���".split(""); +for(j = 0; j != D[193].length; ++j) if(D[193][j].charCodeAt(0) !== 0xFFFD) { e[D[193][j]] = 49408 + j; d[49408 + j] = D[193][j];} +D[194] = "����������������������������������������������������������������翭翫翪翬翦翨聤聧膣膟膞膕膢膙膗舖艏艓艒艐艎艑蔤蔻蔏蔀蔩蔎蔉蔍蔟蔊蔧蔜蓻蔫蓺蔈蔌蓴蔪蓲蔕蓷蓫蓳蓼蔒蓪蓩蔖蓾蔨蔝蔮蔂蓽蔞蓶蔱蔦蓧蓨�蓰蓯蓹蔘蔠蔰蔋蔙蔯虢蝖蝣蝤蝷蟡蝳蝘蝔蝛蝒蝡蝚蝑蝞蝭蝪蝐蝎蝟蝝蝯蝬蝺蝮蝜蝥蝏蝻蝵蝢蝧蝩衚褅褌褔褋褗褘褙褆褖褑褎褉覢覤覣觭觰觬諏諆誸諓諑諔諕誻諗誾諀諅諘諃誺誽諙谾豍貏賥賟賙賨賚賝賧趠趜趡趛踠踣踥踤踮踕踛踖踑踙踦踧踔踒踘踓踜踗踚輬輤輘輚輠輣輖輗遳遰遯遧遫鄯���".split(""); +for(j = 0; j != D[194].length; ++j) if(D[194][j].charCodeAt(0) !== 0xFFFD) { e[D[194][j]] = 49664 + j; d[49664 + j] = D[194][j];} +D[195] = "����������������������������������������������������������������鄫鄩鄪鄲鄦鄮醅醆醊醁醂醄醀鋐鋃鋄鋀鋙銶鋏鋱鋟鋘鋩鋗鋝鋌鋯鋂鋨鋊鋈鋎鋦鋍鋕鋉鋠鋞鋧鋑鋓銵鋡鋆銴镼閬閫閮閰隤隢雓霅霈霂靚鞊鞎鞈韐韏�頞頝頦頩頨頠頛頧颲餈飺餑餔餖餗餕駜駍駏駓駔駎駉駖駘駋駗駌骳髬髫髳髲髱魆魃魧魴魱魦魶魵魰魨魤魬鳼鳺鳽鳿鳷鴇鴀鳹鳻鴈鴅鴄麃黓鼏鼐儜儓儗儚儑凞匴叡噰噠噮噳噦噣噭噲噞噷圜圛壈墽壉墿墺壂墼壆嬗嬙嬛嬡嬔嬓嬐嬖嬨嬚嬠嬞寯嶬嶱嶩嶧嶵嶰嶮嶪嶨嶲嶭嶯嶴幧幨幦幯廩廧廦廨廥���".split(""); +for(j = 0; j != D[195].length; ++j) if(D[195][j].charCodeAt(0) !== 0xFFFD) { e[D[195][j]] = 49920 + j; d[49920 + j] = D[195][j];} +D[196] = "����������������������������������������������������������������彋徼憝憨憖懅憴懆懁懌憺憿憸憌擗擖擐擏擉撽撉擃擛擳擙攳敿敼斢曈暾曀曊曋曏暽暻暺曌朣樴橦橉橧樲橨樾橝橭橶橛橑樨橚樻樿橁橪橤橐橏橔橯�橩橠樼橞橖橕橍橎橆歕歔歖殧殪殫毈毇氄氃氆澭濋澣濇澼濎濈潞濄澽澞濊澨瀄澥澮澺澬澪濏澿澸澢濉澫濍澯澲澰燅燂熿熸燖燀燁燋燔燊燇燏熽燘熼燆燚燛犝犞獩獦獧獬獥獫獪瑿璚璠璔璒璕璡甋疀瘯瘭瘱瘽瘳瘼瘵瘲瘰皻盦瞚瞝瞡瞜瞛瞢瞣瞕瞙瞗磝磩磥磪磞磣磛磡磢磭磟磠禤穄穈穇窶窸窵���".split(""); +for(j = 0; j != D[196].length; ++j) if(D[196][j].charCodeAt(0) !== 0xFFFD) { e[D[196][j]] = 50176 + j; d[50176 + j] = D[196][j];} +D[197] = "����������������������������������������������������������������窱窷篞篣篧篝篕篥篚篨篹篔篪篢篜篫篘篟糒糔糗糐糑縒縡縗縌縟縠縓縎縜縕縚縢縋縏縖縍縔縥縤罃罻罼罺羱翯耪耩聬膱膦膮膹膵膫膰膬膴膲膷膧�臲艕艖艗蕖蕅蕫蕍蕓蕡蕘蕀蕆蕤蕁蕢蕄蕑蕇蕣蔾蕛蕱蕎蕮蕵蕕蕧蕠薌蕦蕝蕔蕥蕬虣虥虤螛螏螗螓螒螈螁螖螘蝹螇螣螅螐螑螝螄螔螜螚螉褞褦褰褭褮褧褱褢褩褣褯褬褟觱諠諢諲諴諵諝謔諤諟諰諈諞諡諨諿諯諻貑貒貐賵賮賱賰賳赬赮趥趧踳踾踸蹀蹅踶踼踽蹁踰踿躽輶輮輵輲輹輷輴遶遹遻邆���".split(""); +for(j = 0; j != D[197].length; ++j) if(D[197][j].charCodeAt(0) !== 0xFFFD) { e[D[197][j]] = 50432 + j; d[50432 + j] = D[197][j];} +D[198] = "����������������������������������������������������������������郺鄳鄵鄶醓醐醑醍醏錧錞錈錟錆錏鍺錸錼錛錣錒錁鍆錭錎錍鋋錝鋺錥錓鋹鋷錴錂錤鋿錩錹錵錪錔錌錋鋾錉錀鋻錖閼闍閾閹閺閶閿閵閽隩雔霋霒霐�鞙鞗鞔韰韸頵頯頲餤餟餧餩馞駮駬駥駤駰駣駪駩駧骹骿骴骻髶髺髹髷鬳鮀鮅鮇魼魾魻鮂鮓鮒鮐魺鮕魽鮈鴥鴗鴠鴞鴔鴩鴝鴘鴢鴐鴙鴟麈麆麇麮麭黕黖黺鼒鼽儦儥儢儤儠儩勴嚓嚌嚍嚆嚄嚃噾嚂噿嚁壖壔壏壒嬭嬥嬲嬣嬬嬧嬦嬯嬮孻寱寲嶷幬幪徾徻懃憵憼懧懠懥懤懨懞擯擩擣擫擤擨斁斀斶旚曒���".split(""); +for(j = 0; j != D[198].length; ++j) if(D[198][j].charCodeAt(0) !== 0xFFFD) { e[D[198][j]] = 50688 + j; d[50688 + j] = D[198][j];} +D[199] = "����������������������������������������������������������������檍檖檁檥檉檟檛檡檞檇檓檎檕檃檨檤檑橿檦檚檅檌檒歛殭氉濌澩濴濔濣濜濭濧濦濞濲濝濢濨燡燱燨燲燤燰燢獳獮獯璗璲璫璐璪璭璱璥璯甐甑甒甏�疄癃癈癉癇皤盩瞵瞫瞲瞷瞶瞴瞱瞨矰磳磽礂磻磼磲礅磹磾礄禫禨穜穛穖穘穔穚窾竀竁簅簏篲簀篿篻簎篴簋篳簂簉簃簁篸篽簆篰篱簐簊糨縭縼繂縳顈縸縪繉繀繇縩繌縰縻縶繄縺罅罿罾罽翴翲耬膻臄臌臊臅臇膼臩艛艚艜薃薀薏薧薕薠薋薣蕻薤薚薞蕷蕼薉薡蕺蕸蕗薎薖薆薍薙薝薁薢薂薈薅蕹���".split(""); +for(j = 0; j != D[199].length; ++j) if(D[199][j].charCodeAt(0) !== 0xFFFD) { e[D[199][j]] = 50944 + j; d[50944 + j] = D[199][j];} +D[200] = "����������������������������������������������������������������蕶薘薐薟虨螾螪螭蟅螰螬螹螵螼螮蟉蟃蟂蟌螷螯蟄蟊螴螶螿螸螽蟞螲褵褳褼褾襁襒褷襂覭覯覮觲觳謞謘謖謑謅謋謢謏謒謕謇謍謈謆謜謓謚豏豰豲�豱豯貕貔賹赯蹎蹍蹓蹐蹌蹇轃轀邅遾鄸醚醢醛醙醟醡醝醠鎡鎃鎯鍤鍖鍇鍼鍘鍜鍶鍉鍐鍑鍠鍭鎏鍌鍪鍹鍗鍕鍒鍏鍱鍷鍻鍡鍞鍣鍧鎀鍎鍙闇闀闉闃闅閷隮隰隬霠霟霘霝霙鞚鞡鞜鞞鞝韕韔韱顁顄顊顉顅顃餥餫餬餪餳餲餯餭餱餰馘馣馡騂駺駴駷駹駸駶駻駽駾駼騃骾髾髽鬁髼魈鮚鮨鮞鮛鮦鮡鮥鮤���".split(""); +for(j = 0; j != D[200].length; ++j) if(D[200][j].charCodeAt(0) !== 0xFFFD) { e[D[200][j]] = 51200 + j; d[51200 + j] = D[200][j];} +D[201] = "����������������������������������������������������������������鮆鮢鮠鮯鴳鵁鵧鴶鴮鴯鴱鴸鴰鵅鵂鵃鴾鴷鵀鴽翵鴭麊麉麍麰黈黚黻黿鼤鼣鼢齔龠儱儭儮嚘嚜嚗嚚嚝嚙奰嬼屩屪巀幭幮懘懟懭懮懱懪懰懫懖懩擿攄�擽擸攁攃擼斔旛曚曛曘櫅檹檽櫡櫆檺檶檷櫇檴檭歞毉氋瀇瀌瀍瀁瀅瀔瀎濿瀀濻瀦濼濷瀊爁燿燹爃燽獶璸瓀璵瓁璾璶璻瓂甔甓癜癤癙癐癓癗癚皦皽盬矂瞺磿礌礓礔礉礐礒礑禭禬穟簜簩簙簠簟簭簝簦簨簢簥簰繜繐繖繣繘繢繟繑繠繗繓羵羳翷翸聵臑臒臐艟艞薴藆藀藃藂薳薵薽藇藄薿藋藎藈藅���".split(""); +for(j = 0; j != D[201].length; ++j) if(D[201][j].charCodeAt(0) !== 0xFFFD) { e[D[201][j]] = 51456 + j; d[51456 + j] = D[201][j];} +D[202] = "����������������������������������������������������������������薱薶藒蘤薸薷薾虩蟧蟦蟢蟛蟫蟪蟥蟟蟳蟤蟔蟜蟓蟭蟘蟣螤蟗蟙蠁蟴蟨蟝襓襋襏襌襆襐襑襉謪謧謣謳謰謵譇謯謼謾謱謥謷謦謶謮謤謻謽謺豂豵貙貘�貗賾贄贂贀蹜蹢蹠蹗蹖蹞蹥蹧蹛蹚蹡蹝蹩蹔轆轇轈轋鄨鄺鄻鄾醨醥醧醯醪鎵鎌鎒鎷鎛鎝鎉鎧鎎鎪鎞鎦鎕鎈鎙鎟鎍鎱鎑鎲鎤鎨鎴鎣鎥闒闓闑隳雗雚巂雟雘雝霣霢霥鞬鞮鞨鞫鞤鞪鞢鞥韗韙韖韘韺顐顑顒颸饁餼餺騏騋騉騍騄騑騊騅騇騆髀髜鬈鬄鬅鬩鬵魊魌魋鯇鯆鯃鮿鯁鮵鮸鯓鮶鯄鮹鮽鵜鵓鵏���".split(""); +for(j = 0; j != D[202].length; ++j) if(D[202][j].charCodeAt(0) !== 0xFFFD) { e[D[202][j]] = 51712 + j; d[51712 + j] = D[202][j];} +D[203] = "����������������������������������������������������������������鵊鵛鵋鵙鵖鵌鵗鵒鵔鵟鵘鵚麎麌黟鼁鼀鼖鼥鼫鼪鼩鼨齌齕儴儵劖勷厴嚫嚭嚦嚧嚪嚬壚壝壛夒嬽嬾嬿巃幰徿懻攇攐攍攉攌攎斄旞旝曞櫧櫠櫌櫑櫙櫋�櫟櫜櫐櫫櫏櫍櫞歠殰氌瀙瀧瀠瀖瀫瀡瀢瀣瀩瀗瀤瀜瀪爌爊爇爂爅犥犦犤犣犡瓋瓅璷瓃甖癠矉矊矄矱礝礛礡礜礗礞禰穧穨簳簼簹簬簻糬糪繶繵繸繰繷繯繺繲繴繨罋罊羃羆羷翽翾聸臗臕艤艡艣藫藱藭藙藡藨藚藗藬藲藸藘藟藣藜藑藰藦藯藞藢蠀蟺蠃蟶蟷蠉蠌蠋蠆蟼蠈蟿蠊蠂襢襚襛襗襡襜襘襝���".split(""); +for(j = 0; j != D[203].length; ++j) if(D[203][j].charCodeAt(0) !== 0xFFFD) { e[D[203][j]] = 51968 + j; d[51968 + j] = D[203][j];} +D[204] = "����������������������������������������������������������������襙覈覷覶觶譐譈譊譀譓譖譔譋譕譑譂譒譗豃豷豶貚贆贇贉趬趪趭趫蹭蹸蹳蹪蹯蹻軂轒轑轏轐轓辴酀鄿醰醭鏞鏇鏏鏂鏚鏐鏹鏬鏌鏙鎩鏦鏊鏔鏮鏣鏕�鏄鏎鏀鏒鏧镽闚闛雡霩霫霬霨霦鞳鞷鞶韝韞韟顜顙顝顗颿颽颻颾饈饇饃馦馧騚騕騥騝騤騛騢騠騧騣騞騜騔髂鬋鬊鬎鬌鬷鯪鯫鯠鯞鯤鯦鯢鯰鯔鯗鯬鯜鯙鯥鯕鯡鯚鵷鶁鶊鶄鶈鵱鶀鵸鶆鶋鶌鵽鵫鵴鵵鵰鵩鶅鵳鵻鶂鵯鵹鵿鶇鵨麔麑黀黼鼭齀齁齍齖齗齘匷嚲嚵嚳壣孅巆巇廮廯忀忁懹攗攖攕攓旟曨���".split(""); +for(j = 0; j != D[204].length; ++j) if(D[204][j].charCodeAt(0) !== 0xFFFD) { e[D[204][j]] = 52224 + j; d[52224 + j] = D[204][j];} +D[205] = "����������������������������������������������������������������曣曤櫳櫰櫪櫨櫹櫱櫮櫯瀼瀵瀯瀷瀴瀱灂瀸瀿瀺瀹灀瀻瀳灁爓爔犨獽獼璺皫皪皾盭矌矎矏矍矲礥礣礧礨礤礩禲穮穬穭竷籉籈籊籇籅糮繻繾纁纀羺翿�聹臛臙舋艨艩蘢藿蘁藾蘛蘀藶蘄蘉蘅蘌藽蠙蠐蠑蠗蠓蠖襣襦覹觷譠譪譝譨譣譥譧譭趮躆躈躄轙轖轗轕轘轚邍酃酁醷醵醲醳鐋鐓鏻鐠鐏鐔鏾鐕鐐鐨鐙鐍鏵鐀鏷鐇鐎鐖鐒鏺鐉鏸鐊鏿鏼鐌鏶鐑鐆闞闠闟霮霯鞹鞻韽韾顠顢顣顟飁飂饐饎饙饌饋饓騲騴騱騬騪騶騩騮騸騭髇髊髆鬐鬒鬑鰋鰈鯷鰅鰒鯸���".split(""); +for(j = 0; j != D[205].length; ++j) if(D[205][j].charCodeAt(0) !== 0xFFFD) { e[D[205][j]] = 52480 + j; d[52480 + j] = D[205][j];} +D[206] = "����������������������������������������������������������������鱀鰇鰎鰆鰗鰔鰉鶟鶙鶤鶝鶒鶘鶐鶛鶠鶔鶜鶪鶗鶡鶚鶢鶨鶞鶣鶿鶩鶖鶦鶧麙麛麚黥黤黧黦鼰鼮齛齠齞齝齙龑儺儹劘劗囃嚽嚾孈孇巋巏廱懽攛欂櫼欃�櫸欀灃灄灊灈灉灅灆爝爚爙獾甗癪矐礭礱礯籔籓糲纊纇纈纋纆纍罍羻耰臝蘘蘪蘦蘟蘣蘜蘙蘧蘮蘡蘠蘩蘞蘥蠩蠝蠛蠠蠤蠜蠫衊襭襩襮襫觺譹譸譅譺譻贐贔趯躎躌轞轛轝酆酄酅醹鐿鐻鐶鐩鐽鐼鐰鐹鐪鐷鐬鑀鐱闥闤闣霵霺鞿韡顤飉飆飀饘饖騹騽驆驄驂驁騺騿髍鬕鬗鬘鬖鬺魒鰫鰝鰜鰬鰣鰨鰩鰤���".split(""); +for(j = 0; j != D[206].length; ++j) if(D[206][j].charCodeAt(0) !== 0xFFFD) { e[D[206][j]] = 52736 + j; d[52736 + j] = D[206][j];} +D[207] = "����������������������������������������������������������������鰡鶷鶶鶼鷁鷇鷊鷏鶾鷅鷃鶻鶵鷎鶹鶺鶬鷈鶱鶭鷌鶳鷍鶲鹺麜黫黮黭鼛鼘鼚鼱齎齥齤龒亹囆囅囋奱孋孌巕巑廲攡攠攦攢欋欈欉氍灕灖灗灒爞爟犩獿�瓘瓕瓙瓗癭皭礵禴穰穱籗籜籙籛籚糴糱纑罏羇臞艫蘴蘵蘳蘬蘲蘶蠬蠨蠦蠪蠥襱覿覾觻譾讄讂讆讅譿贕躕躔躚躒躐躖躗轠轢酇鑌鑐鑊鑋鑏鑇鑅鑈鑉鑆霿韣顪顩飋饔饛驎驓驔驌驏驈驊驉驒驐髐鬙鬫鬻魖魕鱆鱈鰿鱄鰹鰳鱁鰼鰷鰴鰲鰽鰶鷛鷒鷞鷚鷋鷐鷜鷑鷟鷩鷙鷘鷖鷵鷕鷝麶黰鼵鼳鼲齂齫龕龢���".split(""); +for(j = 0; j != D[207].length; ++j) if(D[207][j].charCodeAt(0) !== 0xFFFD) { e[D[207][j]] = 52992 + j; d[52992 + j] = D[207][j];} +D[208] = "����������������������������������������������������������������儽劙壨壧奲孍巘蠯彏戁戃戄攩攥斖曫欑欒欏毊灛灚爢玂玁玃癰矔籧籦纕艬蘺虀蘹蘼蘱蘻蘾蠰蠲蠮蠳襶襴襳觾讌讎讋讈豅贙躘轤轣醼鑢鑕鑝鑗鑞韄�韅頀驖驙鬞鬟鬠鱒鱘鱐鱊鱍鱋鱕鱙鱌鱎鷻鷷鷯鷣鷫鷸鷤鷶鷡鷮鷦鷲鷰鷢鷬鷴鷳鷨鷭黂黐黲黳鼆鼜鼸鼷鼶齃齏齱齰齮齯囓囍孎屭攭曭曮欓灟灡灝灠爣瓛瓥矕礸禷禶籪纗羉艭虃蠸蠷蠵衋讔讕躞躟躠躝醾醽釂鑫鑨鑩雥靆靃靇韇韥驞髕魙鱣鱧鱦鱢鱞鱠鸂鷾鸇鸃鸆鸅鸀鸁鸉鷿鷽鸄麠鼞齆齴齵齶囔���".split(""); +for(j = 0; j != D[208].length; ++j) if(D[208][j].charCodeAt(0) !== 0xFFFD) { e[D[208][j]] = 53248 + j; d[53248 + j] = D[208][j];} +D[209] = "����������������������������������������������������������������攮斸欘欙欗欚灢爦犪矘矙礹籩籫糶纚纘纛纙臠臡虆虇虈襹襺襼襻觿讘讙躥躤躣鑮鑭鑯鑱鑳靉顲饟鱨鱮鱭鸋鸍鸐鸏鸒鸑麡黵鼉齇齸齻齺齹圞灦籯蠼�趲躦釃鑴鑸鑶鑵驠鱴鱳鱱鱵鸔鸓黶鼊龤灨灥糷虪蠾蠽蠿讞貜躩軉靋顳顴飌饡馫驤驦驧鬤鸕鸗齈戇欞爧虌躨钂钀钁驩驨鬮鸙爩虋讟钃鱹麷癵驫鱺鸝灩灪麤齾齉龘�����������������������������������������������������������".split(""); +for(j = 0; j != D[209].length; ++j) if(D[209][j].charCodeAt(0) !== 0xFFFD) { e[D[209][j]] = 53504 + j; d[53504 + j] = D[209][j];} +D[210] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[210].length; ++j) if(D[210][j].charCodeAt(0) !== 0xFFFD) { e[D[210][j]] = 53760 + j; d[53760 + j] = D[210][j];} +D[211] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[211].length; ++j) if(D[211][j].charCodeAt(0) !== 0xFFFD) { e[D[211][j]] = 54016 + j; d[54016 + j] = D[211][j];} +D[212] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[212].length; ++j) if(D[212][j].charCodeAt(0) !== 0xFFFD) { e[D[212][j]] = 54272 + j; d[54272 + j] = D[212][j];} +D[213] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[213].length; ++j) if(D[213][j].charCodeAt(0) !== 0xFFFD) { e[D[213][j]] = 54528 + j; d[54528 + j] = D[213][j];} +D[214] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[214].length; ++j) if(D[214][j].charCodeAt(0) !== 0xFFFD) { e[D[214][j]] = 54784 + j; d[54784 + j] = D[214][j];} +D[215] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[215].length; ++j) if(D[215][j].charCodeAt(0) !== 0xFFFD) { e[D[215][j]] = 55040 + j; d[55040 + j] = D[215][j];} +D[216] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[216].length; ++j) if(D[216][j].charCodeAt(0) !== 0xFFFD) { e[D[216][j]] = 55296 + j; d[55296 + j] = D[216][j];} +D[217] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[217].length; ++j) if(D[217][j].charCodeAt(0) !== 0xFFFD) { e[D[217][j]] = 55552 + j; d[55552 + j] = D[217][j];} +D[218] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[218].length; ++j) if(D[218][j].charCodeAt(0) !== 0xFFFD) { e[D[218][j]] = 55808 + j; d[55808 + j] = D[218][j];} +D[219] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];} +D[220] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];} +D[221] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[221].length; ++j) if(D[221][j].charCodeAt(0) !== 0xFFFD) { e[D[221][j]] = 56576 + j; d[56576 + j] = D[221][j];} +D[222] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[222].length; ++j) if(D[222][j].charCodeAt(0) !== 0xFFFD) { e[D[222][j]] = 56832 + j; d[56832 + j] = D[222][j];} +D[223] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];} +D[224] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];} +D[225] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];} +D[226] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];} +D[227] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];} +D[228] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];} +D[229] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];} +D[230] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];} +D[231] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];} +D[232] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];} +D[249] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[249].length; ++j) if(D[249][j].charCodeAt(0) !== 0xFFFD) { e[D[249][j]] = 63744 + j; d[63744 + j] = D[249][j];} +D[250] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[250].length; ++j) if(D[250][j].charCodeAt(0) !== 0xFFFD) { e[D[250][j]] = 64000 + j; d[64000 + j] = D[250][j];} +D[251] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[251].length; ++j) if(D[251][j].charCodeAt(0) !== 0xFFFD) { e[D[251][j]] = 64256 + j; d[64256 + j] = D[251][j];} +return {"enc": e, "dec": d }; })(); diff --git a/node_modules/codepage/bits/20004.js b/node_modules/codepage/bits/20004.js new file mode 100644 index 000000000..ba71c57f2 --- /dev/null +++ b/node_modules/codepage/bits/20004.js @@ -0,0 +1,193 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[20004] = (function(){ var d = [], e = {}, D = [], j; +D[0] = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€����������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];} +D[161] = "����������������������������������万丌丏冇与丘�丮丳么�乒乓�亄�亍亓��������仈��仜仨仩���仚�伔伀伕伈仱优伬��伓�������伝仴�������伂伭���伿�伳��佖佢佉体佤佡佧佒佁佇佝伾佣侅侀佴侄佷佌侚�����������������������������������一丁七丈三上下不丐丑且丕世丙丞丟並���丫中丰丱串�丶�丸丹主�丿乂乃久之乍乎乏乖乘�乙乜九乞也乩乳乾亂�亅了予事�二于云互五井亙�些亞亟�亠亡亢交亥亦亨享京亭亮亳亶亹�人什仁仃仄仆仇今�".split(""); +for(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];} +D[162] = "���������������������������������佹侁侐侞侇侒侕�佫佬侘佼侉佰侜�����������俬�侺����俙俍俓侲俉俋俁俜侻侳俇�俖侹���倓倢倞倇倰倛俴倳倷俷倗倠倧倵倯倱�倔��������倎�偯偺偤偰偆偡偞偠偋偍偛偊偝偢倕�����������������������������������介仍仂仉仔仕他仗付仙仝仞仡仟代令以仰仲仳仵件价任份仿企伉伊伋伍伎伏伐休伙伯估你伴伶伸伺伻似伽佃但佈位低住佐佑佔何佗余佘佚佛作佞佟佺佽佩佪佯佳併佶佸佻佾使侃來侈例侍侏侑侔侖侗供依侷俔俅侮侯侵�".split(""); +for(j = 0; j != D[162].length; ++j) if(D[162][j].charCodeAt(0) !== 0xFFFD) { e[D[162][j]] = 41472 + j; d[41472 + j] = D[162][j];} +D[163] = "���������������������������������偭偓�偀����偣���偮�偳�偅偟偩偌偷�傣傋傂�傌傢傛傃傕傝偨傜�傇�������傸�傽傻傺僈�傿僆傮僄傯傰僁傱僋�僣������僬僝僤僓僛僪僔僿儃儰僸僽僶儅����儊儜儑�儚儓�������������������������������������侶便係促俄俊俎俏俐俑俗俘俚俛保俟俠俞�信修俶倀倅倌倬俯俱俳俵俸俺俾倉個倍倆倏們倒倖倘候倚倜�借倡倣值倥倦倨倩倪倫倭偈偎偲偁偃假偉偏偕做停健偪側偵偶傎傔傖傀傅傍傑傒偫傘備傚傞�催傭傲傳傴債傷�".split(""); +for(j = 0; j != D[163].length; ++j) if(D[163][j].charCodeAt(0) !== 0xFFFD) { e[D[163][j]] = 41728 + j; d[41728 + j] = D[163][j];} +D[164] = "���������������������������������儩儠儦儥儡儢��������儱儭儴儵��儹儺儸儽��兙党兛兞兝兟�����������冔冘������������冼��冾����凅���凐���凔凘�����������刌刉刓刐刜刞刡�����������������������������������傾僂僅僇僉僊像僱僎僦僨僩僑僕僖僚偽僥僧僭僮�僵價僻僾儀儂億儆儈儉�儌僰儋儇儐儒儔儕儗儘儤償優儲儳儷儻儼兡儿兀允元兄充兆先光兇克兌免兔兒兕兗兜兢兣入內全兩��八公六兮共兵其具典兼冀�冂冉冊再�".split(""); +for(j = 0; j != D[164].length; ++j) if(D[164][j].charCodeAt(0) !== 0xFFFD) { e[D[164][j]] = 41984 + j; d[41984 + j] = D[164][j];} +D[165] = "����������������������������������刱�剆��剎剌����剚剒剟剕剫剭剬剷剺剻剼劀劁劋��劗劘劙劦勀��������勛���勴�匆��匋匑�匢����匰匴匷匼匽卌��卹�卼��厒厗厖��厞厜厤�厬�����������������������������������������������冏冓冑冒冕�冖冗冞冠冢冤冥冪�冫冬冰�冱冶冷�冽�凄准凈�凊凋凌凍���凜凝�几凡�凱凳凰�凵凶凸凹�出函�刀刁刃分切刈刊刎刑划刖列刨初刪判別�利剁刮到刲刳刵制刷券�刺剋剃剄則剉削刻前剜剞�".split(""); +for(j = 0; j != D[165].length; ++j) if(D[165][j].charCodeAt(0) !== 0xFFFD) { e[D[165][j]] = 42240 + j; d[42240 + j] = D[165][j];} +D[166] = "����������������������������������叼����吆吋�吇����吱呎吧��呅�呔听吨吰吷吘吽�吜吥咇呿咁咑咖呸咕咚呾呥呬呴�呠呺呤����呯�呡��咶哅�������咦咪哎咭咮哖咩咾咠呰咼哏哃哞哸��唑唅唦唇唔哪唷哢唗唒哧哳����������������������������������剡剔剖�剛剝剩剪剮副割剴創剸剽剿劂劃劄劇劈劉劊劌劍劑劓劖��力功加劣助努劫劬劭�劻劾劼勁勃�勇勉勍勒動勖勘務勝勞�募勢勣勤勦勩勰勳勱勵勷勸�勹勺勻勿�包匈匊匍匏匐勾匕化北匙�匚匜匝匟匠匡匣�".split(""); +for(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];} +D[167] = "���������������������������������唚哫�唋�唃唊��啡啃啊啪啦啤啍唭唴啵啶唌唲啥啎啑啢唶唵����啕唸唬�唻�������唹�唰啒啅������啿�喡喣喳喲喱喨喥喒噅喢�啽喌�喵啷嗡嗨嗦嗄嗩喿嗏嗕嗢嗖嗈嗲嗌嗐喍嗧��嗋嗊嗝����������������������������������匪匯匱匭���匸匹匾匿區�十千廾卅升午卉半卑卒卓協南博卍卜卞占卡卣卦�卩卬�卯印危卲�卵卷卸�卻卮即�卿�厂厄厎�厔厘厙厚厝原�厥�厭�厲��厶厹去�參��又叉及友反叔取受�叛叟叡叢�口古�".split(""); +for(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];} +D[168] = "���������������������������������嗀嗥嗯�����������嘌嘓嗼嗺嘝嘟嘍嘀嘛嘜嘁嘄嘧嘕噘噚噀嘳嘽噆嘾嘸嘺噈噂噁噊嘪嘮噗�������噙噹噞噰噠噣噭噮噳嚎嚐嚓嚌嚍嚆嚄嚃嚂噾���嚁���嚕嚘嚜嚗�������嚦嚧嚪嚫嚭嚵����������������������������������句另叨叩只叫召叭叮叱可台史右叵�司吁吃各合吉吊同名后吏吐向�吒君吝吞吟吠否吩咐吪含吭吮呈吳吵吶吸吹告吻吼吾呀呂呃呆咂呢呦呧周咒�呱呫味呵呶呷呻呼命咀咄咆咈和咎�咋咍咡�咢咥咧咨咫咬咯咱咳咷�".split(""); +for(j = 0; j != D[168].length; ++j) if(D[168][j].charCodeAt(0) !== 0xFFFD) { e[D[168][j]] = 43008 + j; d[43008 + j] = D[168][j];} +D[169] = "�����������������������������������囃嚽嚾囆囋��囌�囔囝囡��囟囧�囥��������圁圊圌圔圚圛�圞圠�圣�圮��圴��圪���坁坋�坒�����坅圾����������坽坴坶垀坲坱垃坩坯坨坢����������垵垘����������������������������������咸咺咽哀品哂哄哆哇哈哉咻咿員哥唎哦哩哭哮哲哺哼哽哿唁唆唈唉唐哤哨唄唏售唯唱唳唾啁啣啄商問啟啖啗啜啞唪唼啐啻啼喁喀喂喃善�喇喈喉喊喏喓喋喑喘喙喚喜喝唧喧喻喪喬單啾嗃嗅嗎嗇嗑嗓嗔嗚嗛嗜嗟嗣嗤喔�".split(""); +for(j = 0; j != D[169].length; ++j) if(D[169][j].charCodeAt(0) !== 0xFFFD) { e[D[169][j]] = 43264 + j; d[43264 + j] = D[169][j];} +D[170] = "���������������������������������垮垔垏垗�垥垙垟垌�������垕����垸埌垶垿埕埔埆垽垼�埇���垹垺�������埥埬埣埲埮埽埼埻堔堈埢埜埳�埧堀堌埱堎埩埰堍堄堋堉堐����������堩堷堥堣堭堬堝堨堛堮堿�堸�����������������������������������喟喤喫喭嗆嗉嗒嗿�嘆嘈嘉嘏嘐�嘒嘖嘗噓嗹嘂嘎嘔嗷嗽嗾嘬嘩嗶嘰嘯嘲嘴嘵嘶�嘹嘻嘿噉噌�噎噢�噤器噩噪噫噬噯噲噴噶噥噦噸噱嚀嚅嚇嚏嚙嚚嚲囅嚥嚬嚮嚳嚴嚨嚶嚼囀囁囂嚷囉囊囈囑囓叻囗回囚四囪因囤困囫�".split(""); +for(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];} +D[171] = "�����������������������������������������������堳��塥塭塨塣塝塙塉塯塕��������堽���墆塻墔墏墇塶墘墑墂墈塽塴墋塺��墎����������墥��������墡�墣墯墬墱�������壆墽壂�壔壒�����������������������������������囷囹固囿圃圄圈圉國�圇圂囮圍園圓圖團圜�土在圩圬圭圯地圻址坻�均坊坍坎坏坐坑�坌坡坤坦坭坵坷坼垂坪坫坰坳型垓垝垠垢垣垞垤垛垚埃埋城埒埂埏域埠�埭埶執培基堂堅堆堊埤埴埵埸�堙堞堡堠堤堪堯報堲�".split(""); +for(j = 0; j != D[171].length; ++j) if(D[171][j].charCodeAt(0) !== 0xFFFD) { e[D[171][j]] = 43776 + j; d[43776 + j] = D[171][j];} +D[172] = "��������������������������������������壢壝壛�������壨壧��壴�壾�夃夌复夎夒夗����夼奅奊�奜���奫��奰�奲奿�奻奾她妅妀奼���妧妘妠妦妡�妏妎妢妐�����������妵妺姏姎妽姈妱姃�妶妴姌姁�妼����������������������������������場堵堧堰�塍塊塋塌塑塔墓塚塗塘塞填塢塏塤塒塎塓塵塹塼塾塿墀墁境墅墉墊�塈墐墜墝增墟墨墩墮墺墳墠墫墦墾壁壅壇壈壎壑壓壕壖壘壙壞壟壚�壤壩圳士壬壯壹壺�壽壼��夆�夂夏�夔�夕外夙多夜夠夢夤夥�".split(""); +for(j = 0; j != D[172].length; ++j) if(D[172][j].charCodeAt(0) !== 0xFFFD) { e[D[172][j]] = 44032 + j; d[44032 + j] = D[172][j];} +D[173] = "���������������������������������姀妳姠���姲�姩姳姵姺姽娀姶姴�姛�姘姡娖娏娗娳����娭�������娊��娕婠婘婀婧娸婝媎�婰�娹�娾婃��婂�婑婍�����婟婥婬婒婛�婩婇��婈婌婓婤婗�������媃媄���������������������������������������大夭天太夫夬央失夯夷夸夾奄奇奈奉奎奏奐契奔奕奓套奚�奘奠奡奢奧奩奪�奭奮奀女奴奶奸好妁如妃妄妊妒妍妓妖妗妙妝妣妤妥妨妯妹妻妾姆姊始姍姐姑姒姓妲妮委姚姜姝姞�姣姤姥姨姦姪姬姅姻娃姿威娉姮姱�".split(""); +for(j = 0; j != D[173].length; ++j) if(D[173][j].charCodeAt(0) !== 0xFFFD) { e[D[173][j]] = 44288 + j; d[44288 + j] = D[173][j];} +D[174] = "�����������������������������������婿媌媜婻媦媏媞婸�媓���媋���媝媮娷媔婼媥媬媗�嫇媱嫈媻媰嫀嫊�嫆��媐媹��媷媴媶��嫮嫥嫕嫭嫛嫳嫢嫬��嬞�嫨��嫿嫴嫽嫷嫶�嬅嫸�嫻�嫵����嬝嬔嬓嬐嬠��嬚�嬡���嬨�����������������������������������娌娑娘娛娜娟娠娣娥娩娓娼�娶婁婆婉婊婕婚婢�婦婪婭娵婐婞婷婺媒媚媛媟媢媧媊媕�媳媵媸媼媽媾媿嫁嫂嫄嫉嫋嫌媲媺嫖嫗嫠嫡嫣嫦嫩嫪嫘嫚嫜嫫�媯嬈嬉嬋嬌嬃嬖嬗嬙嬛嬴嬪嬤嬭嬲嬾嬰嬸孀孅孌妞子孑孔孕孖�".split(""); +for(j = 0; j != D[174].length; ++j) if(D[174][j].charCodeAt(0) !== 0xFFFD) { e[D[174][j]] = 44544 + j; d[44544 + j] = D[174][j];} +D[175] = "���������������������������������嬦嬮�嬯���嬬嬥嬧�嬽嬿�����孃��孈孇孋�孍孎��孓����孢孬屘孮孲�孷�孻���宒宎����宨�宭��������寑寪寍寋寊������寯寲寱����尃�尌�尒尐�尳尷屇��屄����������������������������������字存孚孛孜孝孟季孤孥孩孫孰孱孳學孺�孿孵宀宁它宄�宅宇守安宋完宏宓宕宗官宙定宛宜客宣室宥宦宬宮宰害宴宵家宸容�寀宿寁寂�寄寅密寇寧富寐寒寓寔寖寘寎寞察寡寢寤寥實寨寠寙審寫寬寮寰寵寶宧寸寺封�".split(""); +for(j = 0; j != D[175].length; ++j) if(D[175][j].charCodeAt(0) !== 0xFFFD) { e[D[175][j]] = 44800 + j; d[44800 + j] = D[175][j];} +D[176] = "���������������������������������屌�屖屔�屙屜�屪�屴�屾���岓����岍岏岈岋岉岒岊�������岥�岶��岮岤岠岭岪岧岬岟岦岯岝峐峘峌峛峞峚峖峗峎�峉峇峊�����峟���峏�峪�峿峮峱峷�峰��崀��崁峬崞崋崝崤����������������������������������射�將專尉尊尋對導�小少�尖尚�尟尕尢尤尨尪就尰�尬�尸尹尺尻尼尾尿局屁居屆屈�屋屍屎屐屑展屏屝屠屢屣層履屧屨屩屬屭�屮屯岳山屹屺屼岌岐岑岔�岡岢岨岩岫岱岵岷岸岣峒峙峋峨峭�島峻峽峓峴峹��".split(""); +for(j = 0; j != D[176].length; ++j) if(D[176][j].charCodeAt(0) !== 0xFFFD) { e[D[176][j]] = 45056 + j; d[45056 + j] = D[176][j];} +D[177] = "���������������������������������崥崠崌崨崍�崆崏崰崒崣崟������崮��崷嵃��嵕崳崺崴崵嵑嵁崽�嵙嵂����嵧嵢嵨�����嵱嵣嵥嵲嵞�嶀嵽嶆嵺��嵷嶊嶉嶈嵹���嵿嵼嶜嶟��嶢嶝嶓嶕嶡嶚�������������嶵����������������������������������崇崎�崑崔崖崙崗崛崢崩崚崧崦嵇崿嵋嵫嵊嵌崶嵎嵐喦崱嵩嶁嵬嵯嵾嶂嶄嶇嶒嶔嶸嶠嶞嶧嶙嶷嶺嶼嶽巉巋巍巒巘巔巖嶗巛川州巡巢�工左巧巨巫差�己巳已巴�巷巽�巾�市布帆�帑帕希帖帗帘帙帚帛帔帝帡帟帥師�".split(""); +for(j = 0; j != D[177].length; ++j) if(D[177][j].charCodeAt(0) !== 0xFFFD) { e[D[177][j]] = 45312 + j; d[45312 + j] = D[177][j];} +D[178] = "���������������������������������嶰嶮嶪嶨嶬嶱嶭嶩嶴��巀�巃����巆巇��巏�巕巑�巟巠�巰��巹�帊帢帣帠帤��帩帾帴�幏幎�幙幓幩幝幠�幧幨幦�幵�庂�庉庌庈����庰庤庢庛庣庨庮庪��庹庲庱����廄��廅廆廇�����������������������������������席帨帳帶帷常帽幃幄幅幀幋幌幔幕幗幘幟幡幢幣幪幫幬幭幯幰幛干平年并幸幹�幺幻幼幽幾�广庀庄庇床庋序底庖店庚府庠庥度座庫庭庳庵庶康庸庾庬庴廁廂廌廑廈廉廊廋�廓廖廚廕廝廛廟廠廡廢廣廨廩廬廱廳龐��".split(""); +for(j = 0; j != D[178].length; ++j) if(D[178][j].charCodeAt(0) !== 0xFFFD) { e[D[178][j]] = 45568 + j; d[45568 + j] = D[178][j];} +D[179] = "����������������������������������廗廎廜廔廒廙廘��緳廞�廧廦廥��廮廯�廲蠯�异�弅������弚弝��弮弳弶�彃彆彉彋�彏彔�����彯虨彴�彸彶�彾彽�徛徖�徟�徫��徦徥��徲�徻徾�徿忀忁�����忔忕忷忨忞忥����������������������������������廴延廷�建���廿弁弄弇弈弊�弋�式弒�弓弔引弗弛弟弢弣弦弧弩弤弨弭弱弰張彄強弸弼彀彈彊彌彎弘彐彖彗彘彙彝��彡形彤彥彧彩彪彫彬彭彰影��彳彷役彼彿往征徂待徇很徉徊律後徐徑徒得徘徙徜從徠御�".split(""); +for(j = 0; j != D[179].length; ++j) if(D[179][j].charCodeAt(0) !== 0xFFFD) { e[D[179][j]] = 45824 + j; d[45824 + j] = D[179][j];} +D[180] = "���������������������������������������怀���忣忺忯忳怜�怭怲怋怴怊怚怞怬怢怐怌怮怓怷怹�怉����恀恟恬�������恔恲恞恅恓恛����悎��悕悗悢悈悀悇悊悐悆恿您惦惈惔悺惁惏惤惌惢悷惉悹�惍������惊�������������������������������������徨復循徬徭微徯徵德徹徼徽�心必忉忌忍忒忖志忘忐忑忙忝忠忡忪快忭忮念忱忸忤忻忽忿怍怎怏怒怕怖怗怙怛思怠怡急怦性怨怩怪怫怯�怵�怳怔恁恂恃恆恇恌恍恐恕恙恚恝恢恣恤恥恧恨恩恪恫恭息恰悃恉悄悅悌�".split(""); +for(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];} +D[181] = "������������������������������������悿�����愘���惼惾惷愖愅惵�愓愃愐愣��愋惿���愝愄����慅愶愲慉愩愨愯愮���慦�慔慺慛慲慒慱慬憀慞�慖��憋憃慹��憱憰憪憡憭憟憢憉憛憓��憌��憳��������������������������������������������悍悒悔悖悚悉悛悝�悟悠患�悁悱�悲悴悵悶悸悻悼悽悾惄情惆惇惎惑惓惕惘惙惚惛惜惝惟惠惡悰惋惰惱惲想惴惶惸惹惺惻愀愁愆愈愉愊愍愎意愒愔愕愚愛愜感慍愧�愫愬愴愷慎愾愿�慄慆慇慈慊態慌慁慓慕慘�慝�".split(""); +for(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];} +D[182] = "������������������������������������憺憿懅憴懁憵憼���懖���懧懠懤懨懞懘�懭懮懱懪懰懫�懩懻懹��戃戄������戠酨���戫戧戭����戺扂扔扜扞�扡���扚�扺抈�扲����扽扴抁抌抎抏抇扻�抸�抭拎抮抿抴抾抪����������������������������������慚慟慢慣�慧慨慫慮慰慳慴慵慶慷慼慾�憂慥憊憐憑憔憚憎憝憤憧憨憩憬憫憮憯憲憍憶憸憾懃懆懂懇懈應懊懋懌懍�憒憖��懟懣懥懦懲懿懵懶懷懸懺懼懽懾戀戁戇�戈戊戌戍戎成我戒戔戕或戚戛戟戢戥戡戣戩截戳�".split(""); +for(j = 0; j != D[182].length; ++j) if(D[182][j].charCodeAt(0) !== 0xFFFD) { e[D[182][j]] = 46592 + j; d[46592 + j] = D[182][j];} +D[183] = "�������������������������������������抰抩挋拵挎挃拫拹挏挌拸拶挀拲挐挕���挓�����挔�捖挬捅捃揤挩捁捘捔挭捀捏���挴捂�捇挸����捗捵掜掮掰捼掤挻掱�����掟��掁捥掂掭掝掗捺捯掙��掅���揎揥揨��������������������������������������戮戰戲戴戤戶戾房所戽扁扃�扆扇扈扉扊�手才扎扑扒打扐托扛扠扢扦扣扭扮扯扱扳扶批抵扼找承技抃抄抆抉把抑抒抓抔投抖抗折抨披抬抱抶抹押抽拂拄拆拇�拈拉拊拋拌拍拏拐拑拒拓拔�拖拗拘拙拚招拜扤拮拭括�".split(""); +for(j = 0; j != D[183].length; ++j) if(D[183][j].charCodeAt(0) !== 0xFFFD) { e[D[183][j]] = 46848 + j; d[46848 + j] = D[183][j];} +D[184] = "���������������������������������揝揯揃揳揊揶揇揙�揵摡揟揹揕揘揱揍搾搉搤搳摃搟���搎搕搹搷搣搌搰摁搯搚摀搞搧搋搿搫��搡搛����摍摲摵摦撦摎撂摞摜摔摝�摋摻摓摐摿摮摰摫����摬���摷������撢撳撟撖撠撗撜撏撋����������������������������������拱拯拳拴拷拽拾拿持挂指挈按挍挑挖拼挨挪挫振挶挹挺挼挽挾捄捆捉捋捌捍捚捐�捕挲捎捧捨捩捫�捭据捲捱�捶捷�捻捽掀掃掇授掉掊掌掏掎掐排掖掘掛掠採探掣接控推掩措掬掯掄掞掔掫揀揄揆揉描�提插揖揚換�".split(""); +for(j = 0; j != D[184].length; ++j) if(D[184][j].charCodeAt(0) !== 0xFFFD) { e[D[184][j]] = 47104 + j; d[47104 + j] = D[184][j];} +D[185] = "���������������������������������撊撌撣�������撘�����摨��撽撿�擃�擖擏擉���擩擤擨��擰�攁攎攆擽擸攇�擿攐攍攉攌攏��攗攕攓�攛攡攠攦����攭�攮��攳攽敁敃��敊敆��敓敧敪敤敜敯��敳�敹敿斀������������������������������������揜揠搽握揣揩揪揭揮揲援掽掾揅揗揰揫搆�損搏搒搓搔搖搗搜搠搢搥搦搨搪搬搭搴搵搶搐�搊搘摘摟摠摧摩摭摯摳摶摸摹摺摑摒摛撅摴摽撩撇撈撐撒撓撕撙撚撝撞撤撥撫播撮撰撲撬擫撱撻撼撾擁擂擄擅擇擊擋操擎擐�".split(""); +for(j = 0; j != D[185].length; ++j) if(D[185][j].charCodeAt(0) !== 0xFFFD) { e[D[185][j]] = 47360 + j; d[47360 + j] = D[185][j];} +D[186] = "���������������������������������斄�斒斔斖�斞斠斪斲斳斶�斻��旍��旓旗�旚旞�旯旮�旳旲�昐昑炚�旼昄昒昍昈旻昊昋���昺昳昫����昤�昹�昡昲昜昦昢�������晒晅晊晟晇�����晥晙晜晢�����晼晾晻暀晪晱����������������������������������擒擔擗擘據擷攙擠�擢擣擦擬擯擱�擭擲擴擺擻擾攀攄攔攖攘攜攝�攢攣攤攪攫攬攩�支攲�攴收攷攸改攻放政故效敉敘教敏救敕敖敗敔�敝敞敢散敦敻敬敲整敵敷數敺斁斂斃��文斌斐斑斕�斗料斛斜斝斟斡斢斤�".split(""); +for(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];} +D[187] = "������������������������������������������暊�����暆暌暕暐暔晸暋�������暟暡暠�����暯��暰暩暲��曌���暺�暸暻曊曄曆�暽������曖曒曘���曣曤��曭曮曫曶朁朄�����������朒������������������������������������斥斧斨斬斯斮新斷�斸�方於施斿旎旁旂旃旄旅旆旐旋旌族旖旒�旛旟旝�无既旡日旦旨早旬旭旰旱旴旺昌昂昆昃明昏易昔昀昉昕昝星映春昧昨昭是昱昴昵昶晁時晃晉晌晏晚晛晝晞晡晤晨晦�普景晰�晴晶晷智晬暄�".split(""); +for(j = 0; j != D[187].length; ++j) if(D[187][j].charCodeAt(0) !== 0xFFFD) { e[D[187][j]] = 47872 + j; d[47872 + j] = D[187][j];} +D[188] = "�����������������������������������������朠��������朣���朾朹朸朻机朿朼朳杙杅杍杚���杋���杈杹枍杺枔�杷枓枅杬枎枒杻枆构杴���柭���杸��柉����极�柲柈柸柃柀柅柫柋柤柍柶柣柂柧���柺�柊�����������������������������������暇暍暑暖暗暘暝暢暈暉暫�暮暱暴暵暹暨曉暾曀曈曇曏曙曚曛曜曝�曠曦曨曩曬昇曰曲曳更曷書曹曼曾替最會朅勗月有朋服朔朐朓朏朕朗望�朝期朢朦朧�木未末本札朮朱朴朵朽杆�杇杉杌李杏�材村杓杖杕杜杞束�".split(""); +for(j = 0; j != D[188].length; ++j) if(D[188][j].charCodeAt(0) !== 0xFFFD) { e[D[188][j]] = 48128 + j; d[48128 + j] = D[188][j];} +D[189] = "�����������������������������������枺柦枮柛��柆桋桏栵栫栭栯栴栝栘栒栔�����������栮�栓栟栚桉栜�梠梉梤桸梑梌梊梒桼梖���桻梀梪���������梨梡梂梇桭梮梫楖梣梬梩桵桱桾梛棳棡椇棌椈楰梴椑棯棆椔棸棽棵棇����������������������������������杠杗杪杭柿杯杰東杲杳杶杵杝杼松板枉析枕林枙枚果枝�枇枋枌枘枯枲枳枵架枷枸柎枻柁柄柏某柑柒染柔柘柙柚柜柝柞柟柢查柬柯柮柰柱柳柴柵枰枹柷栗校栩株核栱根栻格栽桀桁桂桃桅框案桌桎桐桑桓桔�栖栲栳桄�".split(""); +for(j = 0; j != D[189].length; ++j) if(D[189][j].charCodeAt(0) !== 0xFFFD) { e[D[189][j]] = 48384 + j; d[48384 + j] = D[189][j];} +D[190] = "���������������������������������椋椌椗棑椆椄棜椪棪椏棷棤棶�����������椊�椕�棴棔�����棎棩������椯楑������������楺楈楉椵楬椳楥椴楀楄楶���楌楋����楟楎楱楪楂楴椲楒楻椼���榵�������������������������������������桫桴桹桶桷桿梃梁梅梆梏梓梔梗�梜條梟梢梧�梭梯梱械梲梳梵桮梐桯棄棉棋棍棒棕棖棗棘棚棟棠棣棧棫棬森棰楦棲棹棺�棻棼�椅植椎椒棐棓棱棨椐椓椷椰椹椽椿楅楊楓楔櫛楗楙楘楚楞楝楠榆楢楣楫業楯楮極楷楹�".split(""); +for(j = 0; j != D[190].length; ++j) if(D[190][j].charCodeAt(0) !== 0xFFFD) { e[D[190][j]] = 48640 + j; d[48640 + j] = D[190][j];} +D[191] = "���������������������������������槂�榳榞槙榶槉榠榰榬榑榙榍榩榗���������榽槔榹榐�榣榯榿槄�����槏�樝槾樧槲槮樔樀樆槸�槤樠槬槭槢樍�樘槶�樖樇槼���槦������槻�槷橀樄槴�����橞����橩���������������������������������������椸楛楨楩楸榔榕榖�榛榜榦榧榨榫榭榮榱榴榻榾槁�槊構槌槍槎槐槓榎榤榥榷榼樑槃槧槨�概槳�槽槿樁樂樊樓樕標樛樞樟模樣槥樅樏樗槱樲樸樵樹樽樾橄橈橋橐橙橛機橡橧橫樨檸橢樺橁檖橘檀檉檄檐檔檜檟�檠�".split(""); +for(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];} +D[192] = "�����������������������������������燊橯橇����橖樴橦橉橨橝橭橶橑橚樻樿橪橤���檛檡檞檇檓檎檕檃檨檑檚橿��檁檥檍橾檗�檽檭櫡櫆��櫅檹檴�������櫠櫌櫑櫙�櫋櫥櫐櫫櫧����櫰櫸櫨櫹����欂櫼��欋欈欉欐欑�����������������������������������檢檣檬檮檯檳檻櫂櫃�櫓櫚櫜櫝櫞櫟櫱櫪櫬櫺櫳�欄櫻權�欒欖欃柩欠次欣欬欲款欷欹欺欽欿歃歆歇歕歉歌歎歐歔欻歙歛�歟歠歡歞止正此步武歪歧歲歷歸�歹死歿殀殂殃殄殆殉殊殍殖殘殕殛殞殤殫殢殪殮殯殲�殳�".split(""); +for(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];} +D[193] = "���������������������������������欘欗欚欙欥欨�欯欭欱欴欶欳欸欼�歁�歂歈歊歍歋��歜歭�歾肂殈殑殏殔殗殙殟殠殥殣殦殧殭殰殶�毃毄毈毇毉毊毌毐�毚�毞�毦毤毨毣毰毲��毻毼毽毾氁氀毿氆氕氘氖氙氚氝氠氟氥氧氨氦氪氫��氰氬氮����������������������������������段殷殺殼殽殿毀毅毆�母毋每毒毓�比毖毗毘�毛�毧毫毬毯毳氂氅毸毹氄氈氍�氏氐民氓氯气氛氣氤氳浠水�永氾汁汀求汎汗污汛汜汝江池�汐汔汕汞汨汪汰汲汴汶�決汾沁沂沄沃沈沉沌沍沐沒沔沖�沙沚沛沆沓�".split(""); +for(j = 0; j != D[193].length; ++j) if(D[193][j].charCodeAt(0) !== 0xFFFD) { e[D[193][j]] = 49408 + j; d[49408 + j] = D[193][j];} +D[194] = "���������������������������������氶�汃氿�氻���汆�������汌汒汍汙汏汊汋����汥�����沝沎�汽汸汫沋沏沘汱汯沇沕沜汦汳�泧沷泭泜泒泵��泍���泀泏泇沰����泩沺泃泬沶沭洢洏��浂���洬洉洁���洇洃�����������������������������������汩汭沅沬沫沮沱河沸油治沼沽沾沿泂泄況泅泔泆泉泊泌泓法泗泚泙泛泠泡波泣泥注泫泯泮泰泱泲泳�沴泐泖泝洄洊洋洌洎洒洗洛洟洞津洧汧洪洫洮洲洱洳洵洶洸活洼洽派洿流洙洚洹浙浚浣浦浩浪浮浴海浸浹浼涇消涉�".split(""); +for(j = 0; j != D[194].length; ++j) if(D[194][j].charCodeAt(0) !== 0xFFFD) { e[D[194][j]] = 49664 + j; d[49664 + j] = D[194][j];} +D[195] = "���������������������������������洨洴洭洩洺洑洀洐���浀�洝�浻����洖�����涄�涐浽涮�涃涀�����浵����浺浤浶洍浘浬浢浭浯涍涊淯浿涆浞浧涗浰浟������������淗涺淕淐��淂淲�涫涳湴涬淢淶淔渀淈淠����������������������������������涌涓涔涕�涘浡�浥涂涅涒涑涯液涵涸涼涿淅淆淇淋淑淖淘淙淚淝淡淤淦淨淪淫淬淮淰深淟混清淹淺添涎涪涴淀淄淒淞�淩淜渙渚減渝渠渡渣渤渥渦測渭港渰渴游渺渾湃湄湅湊湍湎湖湘湛湝湧湫湮湯湲湱渟渢湑湓湔�".split(""); +for(j = 0; j != D[195].length; ++j) if(D[195][j].charCodeAt(0) !== 0xFFFD) { e[D[195][j]] = 49920 + j; d[49920 + j] = D[195][j];} +D[196] = "���������������������������������涾淥淛淴淊涽淭淌淏淍��淉淣淓淳淵淼�湸���湒��湡渱渨湠渹湟��湚�湦���渧�渶�湕溙���湷��湆湇湉渼渽渲湥湢渫渿湁湳渜渳湣湋湀渻渃渮湞湨����湹湤�溎溣�溳����溗滐�������������������������������������湜�湩源準溛溜溝溟溠溢溤溥溧溦溪溫溯溱溲溶溷溺溼溽滁滂滃滄滅滋滌滎滑滓滔滕溏溘滇滘滫滮滯滲�滴滬滸�滾滿漁漂漆漏溉漓演漘漙漠漢漣漪漫漬漭漰漱漲漳漸漾漿�滷滹漈漉漎漚漦漩漯漵漶漊漕潁潑潔潘潛�".split(""); +for(j = 0; j != D[196].length; ++j) if(D[196][j].charCodeAt(0) !== 0xFFFD) { e[D[196][j]] = 50176 + j; d[50176 + j] = D[196][j];} +D[197] = "���������������������������������溍�滊溿溒�滖滈滀溓溔溹滆滒�溞滉溰滍滏溴溾滜������漞����滵滱���漍����漟�潩��漀漜���漺滽��漹潻滼漃漥漷滻漮潎漧漻漒滭漼潳漇潃漅潽�潗澔澓澅潚澖潶潬潕潲潒潐�潣潡�����������������������������������潟潢�潤潦潭潮潰潼�潸潺澀澄澆澇澈澉澌澎潏潝潞潠潀濆潯潾澍澂澒溈澡�澣澤澮澳澹激濁�濃澠澥澦澧澨澰澴澱濇澶澼濘濔濕濈濊濛濟濠濡濤濫濬濮濯濰濱瀉濩濞濺濼濾瀆瀏瀑瀁瀕灠瀚瀛瀝瀟瀠瀨瀘瀡瀣瀼瀋瀍�".split(""); +for(j = 0; j != D[197].length; ++j) if(D[197][j].charCodeAt(0) !== 0xFFFD) { e[D[197][j]] = 50432 + j; d[50432 + j] = D[197][j];} +D[198] = "�����������������������������������澐�澋�潪潓澕��澗����潧����澭濋濎濄澽澞濂瀄濌澩澬濏澢澫濍澲澿澺澪澯�濨����濷�濢������濲����濴濜濭濣濧濦�瀀濻���瀊���瀇瀌瀅瀔瀎濿�瀙瀖��瀫瀢瀩�瀤瀗����������������������������������瀧瀦�瀲瀾瀰瀵瀹瀺灌灃灉�灑灘灝灣灩灞灤炸火灰灶灸灺灼災�炊炎炒炕炙炘炤炫炬炭炮炯炰炱炳炷��烈烋烏��烘烜烝�烹烺烽焌焙焚焜無焦焰然焞焠��煇煉�煌煎煮煒熙煖煜煞煢煤煥煦照煩煨�煬煽熀熄�".split(""); +for(j = 0; j != D[198].length; ++j) if(D[198][j].charCodeAt(0) !== 0xFFFD) { e[D[198][j]] = 50688 + j; d[50688 + j] = D[198][j];} +D[199] = "�����������������������������������瀯瀷瀴瀱灂瀸瀿灀瀳�瀻������灅灄灊灈�灆��灗��灒灛����灚灡灟灦灥灨灪��灱�灴���炔炅�������炑���炓炖炃���炄炆炟炾���炡���炩�炵炴�烅�烚�烞�烎烒����������������������������������熅熇熊熏熒熛熟熔熨熬熯熱熠熲熸�熹熾燀燂燐燖燙燃燄燈燎燒燔燕營燠燥燦燧燬燭燻燮燹燼燿燾爆爇爍爓爐爛爚爝爟焮焯�爨烤爪爭�爬爰為爵�父爹爺爸爻爽爾�爿�牂牁牆�片版牋牌牒�牖牘牓牙�牛牝牟牡�".split(""); +for(j = 0; j != D[199].length; ++j) if(D[199][j].charCodeAt(0) !== 0xFFFD) { e[D[199][j]] = 50944 + j; d[50944 + j] = D[199][j];} +D[200] = "���������������������������������烇烡���烢烗烠��烍�烓烑缹烊烙����烶��烳焆�焋��焂烼烸��焀�烿����焉焊焍烷焗烴烯烰�焄��������������焱焣����������焟�焢����煠煁煝��煓��煋����������������������������������牢牣牧牴物牮牯牲牶牷特牽牿犀�犉犍犒犖犢犧犨牳犬犯犴狀狂狃狄狁狎狐狗狙狡�狠狩狴狸狹狼狽狻狺狷猋猁猖猗猙猛猜猝猞猊猘猢猥猩��猴猶猷�猱猺猻猾猿獃獄獅獍獐獒獗獘獧獨獪獬獠獮獲獯獳獷獵獸獺獻�".split(""); +for(j = 0; j != D[200].length; ++j) if(D[200][j].charCodeAt(0) !== 0xFFFD) { e[D[200][j]] = 51200 + j; d[51200 + j] = D[200][j];} +D[201] = "���������������������������������煘���煪煄���煲��煸���煚煐煃煟煔煙煆煣熐熉熂煻��爃������熆�����熡��熥��熧�������熼熝熪熳熤熞熜熰熚�����燅熿燉燜燘燁燋燏��燇�燚���������熽����������������������������������玁獰玀玄率玅玈�玉王玎玕玔玖玟玠玢玦玨玩玫玲玳玷珂珇珈�玻珀珊珍珌玼珞珓珠珙珖珥珣珩珪班珧珮珽現球琅理琇琉珶�琊�琖琚琛琢琤琥琦琨琪琭琮琯琳琴琶琵琫琬玤琲瑋瑕瑙瑚瑛瑜瑞瑟�瑀瑁�瑑瑗瑣瑤瑩�".split(""); +for(j = 0; j != D[201].length; ++j) if(D[201][j].charCodeAt(0) !== 0xFFFD) { e[D[201][j]] = 51456 + j; d[51456 + j] = D[201][j];} +D[202] = "������������������������������������燨�����燢�燤燱���燡燴��燸燽������爁���爌爊爂���������爔����爙��爞���爢�爣��爩������牄牉��牏牚牞牠牪牬牰牸�牼牾牻�犁犄犈犆犅��犌犑����������������������������������瑪瑰瑲�瑯瑱瑳�璀璃璋瑽瑾璁璆�璈璡璇璐璜璣璘璞璟璠璧璨璯環璪璫璽璲璸璵瓊瓏瓔瓛璿瓚�瓀瓘璥瓜瓞瓠瓢瓣瓤�瓦瓮瓴瓶瓷瓻甃甄甇瓿甌甍�甑甓甕甗甔甖瓩甘甚甜��生甡產甥甦�用甪甫甬甯�田由甲申�".split(""); +for(j = 0; j != D[202].length; ++j) if(D[202][j].charCodeAt(0) !== 0xFFFD) { e[D[202][j]] = 51712 + j; d[51712 + j] = D[202][j];} +D[203] = "���������������������������������犐犎犕犓犗���犘犚犛��犝犞犥犦犤犣犡�犩犪�犮犰犵�犺狅犿犽狆�狖狋狘狉狜狒狔狚狌狑狊狤狨狫�狟狪狦狣猀狾狶狳���猌�猓猇猑猒猈狿猏猣猵猰猳猧猲猭猦�����猼獂獀獊��獎獑獌��獞����������������������������������男甸甽甾畀畋界畎畏町�甿畇畔畚畛畜畝留畟畢畤略畦番畫畬畯異�畷畹畽當畸畿疆疇疊�疋�疏疐疑�疒疔�疕疚疝疢疣疤疥疫疧疲疳�疵疸疹疼疽疾疿病症痂痊痌痍痒痔痕痗痘痛痞痣痡痢痯痰痲痴痺痼痾痿瘀瘁�".split(""); +for(j = 0; j != D[203].length; ++j) if(D[203][j].charCodeAt(0) !== 0xFFFD) { e[D[203][j]] = 51968 + j; d[51968 + j] = D[203][j];} +D[204] = "���������������������������������獟獝獛獡獢獩獦獥獫�獶獽獼獾獿玂玃玆��玒�玗玓��玥�玬�玡玭�������珆�玹�玴珃珋�����玿玸玾玶珅�珛珔�珚���珨�珫珒����珜珘�珝�珸珵琄琁琀琍�琋�珼��珿珺琈�珴������������������������������������瘉瘋瘍瘏瘝瘐瘓瘕瘖瘞瘟瘠瘡瘢瘤瘥瘦瘧�瘨瘰瘳瘴瘵�瘼療癃癆癇癉癖瘺�癘癙癜癤癡癢癥�癭�癩癬癮�癰癱癲疙癶癸登發�白百皂的皆皇皈�皎皓皖皙皜皚皤�皦皭皪皫�皮皴�皸皺皽�皿盂盃盅盆盈益�".split(""); +for(j = 0; j != D[204].length; ++j) if(D[204][j].charCodeAt(0) !== 0xFFFD) { e[D[204][j]] = 52224 + j; d[52224 + j] = D[204][j];} +D[205] = "������������������������������������������������瑎琠�������琩琺琰琡琱�������瑄瑊琿瑒�瑂瑔�瑏�瑍�����瑆��������瑹瑢瑵�����瑭������瑮瑧����������瑼璉璊璅�������������������������������������盍盎盒盔盛盜盝盞盟�盡監盤盥盧盦盭盩盪盬�目盲直相盼盾省眄眇眈眉眊看盻盰盱眚眛真眠眢眥�眩眙眯眵眴眶眷眸眺眼眾�眹睨睇睆睊睍睚睛睜睞睪睡睢督睦睫睠睟睥睹睿瞀�睯瞋瞍瞎瞑瞞瞠瞪瞥瞧瞬瞳�瞭�".split(""); +for(j = 0; j != D[205].length; ++j) if(D[205][j].charCodeAt(0) !== 0xFFFD) { e[D[205][j]] = 52480 + j; d[52480 + j] = D[205][j];} +D[206] = "����������������������������������瑿������璕�璚璗����������璭���璱璩璦瓁�����璻�瓋璺瓅����������瓖瓗����瓝瓟瓡瓥瓨瓬瓵�瓾瓽甀甂�甈甋甐甒甏�甝����甩甭甮甹���畈���畣������������������������������������瞰瞶瞻瞽瞿矇矍矓矗矙瞢矚眭矛矜矞�矢矣知矧矩短矮矰矯矱�石�矼砆矻砂砉砌砍砑砒砭砢砣砥斫砦破砲砠砧砮砰硃研硎硜硝硤硨硫硬硭硯确碆碌碎硼碗�碇碔碑碓硾碡碪碞碭碟碣碧碩碬�碰確碼碾磁磅磊�磋磐�".split(""); +for(j = 0; j != D[206].length; ++j) if(D[206][j].charCodeAt(0) !== 0xFFFD) { e[D[206][j]] = 52736 + j; d[52736 + j] = D[206][j];} +D[207] = "�����������������������������������������畾�疀��疌疘疶疰痁疻痄痀痐痎痏痋痑痦痝痟痤痠痙痧痚�痵痽瘃痱痷痹痸痻瘑瘊瘈瘌瘙瘜瘣瘩�瘯瘭�瘽瘲瘸癌癈�癒癐癓癠癟癪�癵癹癿皁��皊皋皏��皒���皝皞皛皯皰皵皻皾盄�盉�����������������������������������磔磕磉磑磛磟磚磧磨磬磯磲磺磽礁磷磻礎磈礙礬礧磴�礦礪礫礱��示礽社祀祁祅祇祈祉礿祕祊祏祐祓祔祖祗祚祛祜祝神祟祠祫祲祥祧票祭�祼祺祿�禁禋禍禎福禘禊禔禖禕禡�禦禠禫禧禪禨禮禰禱禳禴�禸禹禺�".split(""); +for(j = 0; j != D[207].length; ++j) if(D[207][j].charCodeAt(0) !== 0xFFFD) { e[D[207][j]] = 52992 + j; d[52992 + j] = D[207][j];} +D[208] = "���������������������������������盓�����盚��������盯盵盳�眃眅盹�������眝眧眐眓眒眣眨眕眑眲眳眽���眱��睄睅睎睋睌��睏睙���睕睒睬睖睩睧睔瞁睼瞅瞂睮�瞄睽��������瞉瞇�瞏瞌瞟瞙瞚瞝瞡瞜瞛����������������������������������离禽�禾禿秀私秈秉�秋种科秕秒�秘秪租秠�秤秦秧秩秫秭秬秷秸移稀稂稅稈程稌稍稊稔稗稙稚稛稜稟稠�稹種稱稷稻稼稽稿穀穄穆�穋穌積穎穗穜穡穟穢穠穨穩穫穭穰�穴穵究穸穹突空�穿窀窄窅窆窈窋窊窒窕�".split(""); +for(j = 0; j != D[208].length; ++j) if(D[208][j].charCodeAt(0) !== 0xFFFD) { e[D[208][j]] = 53248 + j; d[53248 + j] = D[208][j];} +D[209] = "���������������������������������瞕��瞵瞫瞴����矂瞼瞺�矉矊�矌矎矏矐矔矕矘��矠���矬�矲��矸�矹矽��矺矷�������砅砐砏砎�砃�砓砱砳��砷砬砵砯砟砨砸砝砡�砫����硐������������硅硈硉硍����������������������������������窖窞窗窘窟窠窨窩窪窬窮�窳窵窶窸窣窺窾�竁竄竅竇�竊�立竑站��竟章竣童竦�竭端競�竹竺竽竿笄笈笊笏笑笙笛笞笤笠笥符笨�笪笫第笮笆笎笱笳筅筆筇等筊筋筌筍筎筏筐筑筒�答策筠筤筥筦筧筩筮筲筴筵�".split(""); +for(j = 0; j != D[209].length; ++j) if(D[209][j].charCodeAt(0) !== 0xFFFD) { e[D[209][j]] = 53504 + j; d[53504 + j] = D[209][j];} +D[210] = "���������������������������������硊硌硢�硠硥硱硪硰硩��碏碚碄碕碅碘碉���硻碖��硹�硿碙���碥�碳碲碴碨碫碤�碢����磍碻磏磌磎�磃������磠磡���磭磝磩磥磪磞磣磳礂磼��磹�礄�礅�������礌礓礔礉礝�����������������������������������筱箋箎箂箍箇箔箕算箛箝箠管箏箐��箘箜箊箬箭箯箱箴箸箾節篁範篆篇築篋篘篔篙篚篝篠篡篤簑篧篨篩篦篪篲篳�篴篷簀簆簇簋簍簌簏篌篾簃�簜簟簞簠簡簣簥簦簧簨簪簫簷簸�簻簽簾簿�籃籊籌籍�籐籔籓籀�".split(""); +for(j = 0; j != D[210].length; ++j) if(D[210][j].charCodeAt(0) !== 0xFFFD) { e[D[210][j]] = 53760 + j; d[53760 + j] = D[210][j];} +D[211] = "���������������������������������礛礜�礞�礥礣礨礩��礯��礭礵��礸礹�祂��祄�祌祋��祒祑��祤���祩祪祣祡�����祴祳禂祹��������禓禗禐����禈�禒�禛�禚禜�禤�禭禬��禲���禷禶歶�秅��秏秖����������������������������������籙籚籛籜籟籠籤籥�籧籩籫籮籬籯籲篰米�籹粉粒粕粗粘粟粢粵粥��粱粲粹粳粺粼精糈糊�糕�糖糗糜糝糞糟糠�糙糧�糯糲糴�糱糶糎糸系糾紀紂約紅紆紇紈紉紊紋紵紖紏紝紞紽納紐紓純紗紘紙級紛紜素紡索紫�".split(""); +for(j = 0; j != D[211].length; ++j) if(D[211][j].charCodeAt(0) !== 0xFFFD) { e[D[211][j]] = 54016 + j; d[54016 + j] = D[211][j];} +D[212] = "���������������������������������秎秝秮秜��秣��秺秶�稃���稄���稐稘稞稒�稑�稦稓���稫穊稰稯������穇穔�穈穘穚穛����穧��穮穬�穱����穾�窉窌��窏窔窐��窙���窢窫窴窲窯�窱窷竀窿���������������������������������������紩紬紮累細紲紳紹紺紼紾紿絀終絃組絆紱絅絏結絕絛絜�絞絡絢給絨絪絮絰統絲絳絖絹絺絿綁綈�綆綌綍綏綑經綃綜綠綢綦�綬維綮綰網綱�綴綵綸綹綺綻綽緅緌緎綾緇緊緋綣綯緒緘緝綿緞締緣�緦�編緩緬緯練緻�".split(""); +for(j = 0; j != D[212].length; ++j) if(D[212][j].charCodeAt(0) !== 0xFFFD) { e[D[212][j]] = 54272 + j; d[54272 + j] = D[212][j];} +D[213] = "������������������������������������竘��竤���竫�竮��������竷�����笐笓笅��笉笵笻笴笰笢笘笝笭笯笲�笚������笣筘��筀�筄筈��筷筭筳�筣����筶筰筡��箤��箈箑箖箌箅箙箄�������������������������������������������縕緗緙緡�緲縏緹縈縉縊縋縐縗縛縝縟縣縑繁縞縠縢縫縱縲縳縵縶縷縹縻總績繄繅繆繇縭縰縴繈織繕繙繚繐繞繢繡繒繩繪繫繭�繯繳繹辮繻繼纁纂繽繾纆纇纈纘續纍纖纏纊纑纓纔纛纚纜�缶缸缺缾�罃�罄罅�罋罌�".split(""); +for(j = 0; j != D[213].length; ++j) if(D[213][j].charCodeAt(0) !== 0xFFFD) { e[D[213][j]] = 54528 + j; d[54528 + j] = D[213][j];} +D[214] = "���������������������������������箷篎�箹�篛篕篥篞篣篹�篜篟篢����簉簁篸篽簅篿篻簎簂��簊��篱簩簙簭簝簢������簰��簳簼簹簬��籉籈籅�籇�籗���籣籦���籵籽籺籸��粁�粄粑粊�粅粍�����粣���������������������������������������罍罏罐�网罔罕罘罛罝罟罡罣�罩罪罭置罰罨署罳罫罶罵罷罹羃罽罿羅羆羇羈�羊羌美羑羔羖羜羚羝羞羢群羨義羯羲羵羶羸羹羼羽翀翁翅翊翌翎習翔翕翛翟翠翡翣翥翦翩翫翬翮翯翰翳翹翱翻翼翽翾翿耀�老考耄者耆�".split(""); +for(j = 0; j != D[214].length; ++j) if(D[214][j].charCodeAt(0) !== 0xFFFD) { e[D[214][j]] = 54784 + j; d[54784 + j] = D[214][j];} +D[215] = "���������������������������������粔粨粞��粯������粽粻粿�����糌糅��糒糔�糑糢��糬糪���糰�糷��紁紃��紕紑紎紟紒�絊紨���紸紶絁絇�������絑絒絔���絩絘絯絣絓絧絫絭��絽綄��綒���綀綅綎����������������������������������耇耋�而耍耎耐耑�耒耔耕耗耘耙耜�耞耡耤耦耨�耰�耳耶�耽耿聃聆聊聒聖聘聚聞聯聰聲聳聵聶職聽聾�聿肄肅肆肇��肉肋肌肓肖肘肚肛肝股肢肥�肩肫肯肱育肴肸肺胃胄背胗胔胍胎胏胖胙胚胛胝胞�胠胭胯�".split(""); +for(j = 0; j != D[215].length; ++j) if(D[215][j].charCodeAt(0) !== 0xFFFD) { e[D[215][j]] = 55040 + j; d[55040 + j] = D[215][j];} +D[216] = "���������������������������������絻絼綔綡�綧綷緂綪緁緀綝緄��綩��緆綖綼綟����������緟緮�線緷緛緪緧縃緺緶緱緰綞���縤縍�縒縡縌縓縎縜縚縖縮縸縪繉繀繃縩縿縼繂顈縺�縯����繜繖繣繘繟繑繠�繓��繗繶繵繸繰����������������������������������胡胥胸胼能胾脂�脅�胱脈脊�脘脛脞脤脣朘脩脥脫脬脯脹脾腆腊腋腎腐腑腓腔腕腥腦腴腫腮腯腰腱腸腹腠腿膀膂膋膏�腳膈膊膕膚膛膜膝膠膩膰膳膺膴膽膻膾膿臀臂臄臆臉臊臍臘臙臑臚臝臟臠胤臣臥臧臨�自臬臭�".split(""); +for(j = 0; j != D[216].length; ++j) if(D[216][j].charCodeAt(0) !== 0xFFFD) { e[D[216][j]] = 55296 + j; d[55296 + j] = D[216][j];} +D[217] = "���������������������������������繷繺繲繴�纀��纋纕纗�纙�缽缿�罈罊�罜罞罠罦罧罬�罻罼罺罾羉羋羍���羒羕羛羠羡羥羧羦羬羰羭羱�羳�羷�羺羻羿羾翃翂��翋翍翐翑翇翏�翗翜�翢���翭翪翨��翴翲耏耖耟�耪耬耴��耵耷�����������������������������������臲�至致�臺臻�臼臾舁舀舂舄舅與興舉舊舋�舌舍舐舒�舖舛舜舞舝�舟舠舡航般舫�舷舵舶船舸舲舳舴艇艋艄艖艗艎艘艙艤艟艨艭艦艫�艮良艱�色艴艷�艸艽艾芃芄芊芋芍芎芑芒芙芝芟芡芣芤芧芨芥芩�芫�".split(""); +for(j = 0; j != D[217].length; ++j) if(D[217][j].charCodeAt(0) !== 0xFFFD) { e[D[217][j]] = 55552 + j; d[55552 + j] = D[217][j];} +D[218] = "���������������������������������耾耹��聇聈����聑聏��������聝������聬聱�������聸聹��肊肏肕肙肐肒肜��肭�肮肪肣肵��胘胇胑胈胂胐胅胣胜胊胕胉�胳�胺胲胰胴胹胵脁胻脀�脆脝脰脙脖脭脟脡脕�脢�����������������������������������芬芭芮芯芰花芳芷芸芹芻芼芽�芾苑茆苒苓苔苕苗苙苛苜苞茍苣苡若苦苧苫英苴苹苻�苾茀茁茂范茄茈茅苃�茉茗荔茜茢茦茨茫茭茯茱茲茴茵茶茷茸茹荀荃萄荊荸荇草荍荏荐荑荒�荄莛荳荷荻荼荽�莊莎莒莓莖莘莞�".split(""); +for(j = 0; j != D[218].length; ++j) if(D[218][j].charCodeAt(0) !== 0xFFFD) { e[D[218][j]] = 55808 + j; d[55808 + j] = D[218][j];} +D[219] = "�����������������������������������腃腌腒腏腇脽腍��脺���腤腷腜腩腛腢腲朡腞腶腧腺腄������膉膆膃膇膍膌膣膟膘膞膢����膱膦膮膹膵膫膨膬膲膷����臌臃臅臇臏臒臐臗臕�臛臞臢臡�臦臩臮臷臸臿��舑舕舔�舢舯舨�����������������������������������莠莢莧莆莨莩莪莫菟莉莽菀菁菅菇菉菊菑�菖菔菘菠菜菩堇華菰菱菲菴菶菹菼菽萁萃萆萊萋萌萍萎雈菡菌萩萐萇萼萬萱萵萸萹落葆葉葍著�葚葛葡董葦葩葫葬葭葯�葳葵葷葸葺葽蒂葑葹蒐�蒔蒙蒜蒡蒞蒟蒨�蒲蒸蒹�".split(""); +for(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];} +D[220] = "���������������������������������舺舿舼舽�艉艀艂艅��艏艓艒艐艑艕艚艜艛�艣艡�艩艬�艵�艼芀芐芏芅芓芔芠苀�苂芶�����芚芘芛芞芺芴苳���苪����苯苨茺苖苬苲苵茌苶�苠�苺茬��荌茳茙茥荖茿荁荂荎茛茪茧荈��荋茞����������������������������������蒺蒼蒿蓀蓁蓂蓄蓆蓉蓊蓋蓌蓍�蓑蔀蓐蓓�蔌蒯蒱蓧蓫蓬蓮蓰�蓴蔻蓺薌蓼蔆蔇蓿蔂蔑蔒蔓蔕蔗蔚蔞蔟蔡蔣蔭�蔥蔦蔔蓽蔽蔬蕺蔾蕃蕉蕊蕎蕕蕖蕘蕙蕝蕞蕡蕢蕨蕩蕪蕭薀薯蕆蕈�蕤薁蕷蕸蕾薐薢薄薅薇薈薉薊薑薔薖�".split(""); +for(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];} +D[221] = "���������������������������������荿茼茖茤茠茩荅茻莐�荶莰�莣莍荺莤荴莏莁莕莙荵莔莃莌莝���莗莇莦���淽��莋荾莥菏萣菸菨萒菧菤�菆菈�菣莿菝菥菿菋菎菻莚����菕菺菵萉萏菞菂菳��菮�����菄����菬菛萓��������������������������������������薙薛孽薜薦薨薩薪薤�薏薰薳薹薺薽薿藄藇藉藎藏藐藍�藕�藚藜藝藟藤藩藥藪藷藹藺�藻藾藿蘄蘅蘆蘇蘊��蘋蘀蘚蘞蘢蘩蘭�虀蘧蘸蘿蘼�虆蘑虍虎虐虓虔處虛虜虞號虡虢虥虣虧虩�虫虱虯虹虺蚓蚔蚕蚊蚋蚌蚣�".split(""); +for(j = 0; j != D[221].length; ++j) if(D[221][j].charCodeAt(0) !== 0xFFFD) { e[D[221][j]] = 56576 + j; d[56576 + j] = D[221][j];} +D[222] = "���������������������������������葮��葄葠�葋萯葂萭葟葰葎葌葒�蓱�萿葖葶蒏蒍葥葀蒆葧萰葙葴葝�葞萷萺萴葃萲葅菙��萫����葇萶萳萻����������蓅蒗蒤蓎蒬蒮蒫蒴蒪蒚蒝蒧蒻蒢蓇蒛蒩蓖蒘蒶蓏蒠����蓒�蒰��������������������������������������蚤蚧蚩蚪蚨蚯蚰蚱蚳蚶�蛄蛀蛆蛇蛉蛑蛋蛙蛛蛟蛣蛤蛩蛺蛭蛾�蜂蜃蜇蜈蜋蜓蛸蛹蛻蜀蜉蜍蜊蜎蜘蜚蜜蜡蜣蜩蜥蜺蝃蜴蜞蝀螂蜢蜮蝎蝓蝕蝗蝘蝙蝝蝟蝠蝏蝥蝦蝮�蝶蜷�蜻蝌蝨蝡蝣蝤蝴蝸融螓螞螘螟螢螣�螃螄螫��".split(""); +for(j = 0; j != D[222].length; ++j) if(D[222][j].charCodeAt(0) !== 0xFFFD) { e[D[222][j]] = 56832 + j; d[56832 + j] = D[222][j];} +D[223] = "�����������������������������������蔤蔏蔩蔎蔉蔍蔊蔧蔜蓻蔫蔈蔪��������蔋蔙�����蓲蓷蓳蓪蓩蔖蓾蔨蔝蔮蓶蔱蓨蕵蓯蓹蔘蔠蔰蕅蕫蕍蕓蕀蕁蕄蕇蕣蕛蕱蕮����蕧蕠蕦��蕬��蕔����������蕥�������������������������������������������螺螻螽螿蟄蟊螬螭螮螯螳蟀蟆蟈蟋蟣蟪蟒�蟠蟬蟲蟭蟹蟻蟾蟳蟶蠃蟿蠁蠅蠆蠍蠕蠖蠛蠜蠟蠡蠢蠣蠨蠹蠱蠲蠶蠻�血�衁衄����衊�行衍衎術衒衕衖街衙衚衝衛衡衢�衣表衫衰衲衷�衵衽衾衿袁袈袋袍袒袖袗�袚�".split(""); +for(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];} +D[224] = "�����������������������������������薟薃薧薕薠薋薣蕻薚薞蕼薡蕗薎薆薍薝薂薵藋藈藅薱薶藒蘤���薸薾薷��������薴藆藀藃藂���藫藱藭藙藡藨�藗藬藸藘藣藑�藯藞���������藰蘁蘛藲藶蘉蘌��藽�����蘘蘪蘦蘟����������������������������������袞�袤袪被衭��袷袱裁裂裊裎裀�裒裔裕裘裙補裝裟褎裨裯裰裱裳裴裸裼裹製裾複褊褌褉褂褪褐褓褘褙褡褚褥褧褫褰褲褦褵褶褻�襄襋襁�襖襚襌襜襞襛襝襠襟襦襪襏襤褸襫襭襯襴襲襼襶裌襾西要覃覆�覈��見�".split(""); +for(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];} +D[225] = "���������������������������������蘣蘜蘙蘮蘡蘠蘥���蘗蘶������蘴蘵�蘳蘬��蘲�蘺蘹蘱蘻蘾虃虇虈虌虋虒虙虖�虤虪虰虭虮�虳��虻虷虴蚢蚖蚍蚑蚞蚜蚇蚗蚆蚚蚅蚥�蚐蚝蚎蚙蚡��蚵�蛃蚾��蚽蚿蚷蛂蛁蛅蚺蛈蚹蚸蛌蚴蚻蚼蛔����������������������������������規覓視覘覜覡覦�親覬覯覲覷�覺覽覿�觀��角觔觖觚觝觕解觥觩觫觭觱觳觴觸觶觼觿�言訂訃訇計訊討訐訓訕訖託記訌訏訑訒訛訝訟訣訥訪許設�訢訴訶診証註訾詁詆詈�詎詐詒詔評詖詘詛詞詠詡詢詣�試詩詫�".split(""); +for(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];} +D[226] = "���������������������������������蛘蛢蛦蛓蛚蛪蛝蛐蛨蛫蛜蛬蛗蜄蛷蜌蛖蛵蝍蜆蜁蛶蜅�触�蜳蜿蜨蝫蜙蜛蜬蝁蜾蝆蜠蜲��蜪蜭蜼蜒蜱蜵蝂蜦蜧蜸蜤蜰蜑�蝻蝖蝷蟡蝳蝔蝛蝒蝚蝑蝞蝭蝪蝢���蝐蝯蝬蝺蝜螛螏螗螒螈螁螖蝹螇螅螐螑螝螔螜螚�螉����������������������������������詬詭詮詰話該詳詼詿誆誄誅誇詵詹誌認�誑誓誕誘誚語誠誡誣誤誥誦誨說誰課誶誹誼誾調諂諄談諉請諍諏諒諑論諗�諛諝諞諟諠諤諦諧諫諭諮諱諳諷諸諺諵諼諾謀謁謂諜諡諴諶謄謅謆謇�謊謎謐謔謗謙謚講謝�謠謏�".split(""); +for(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];} +D[227] = "����������������������������������螶螸蟞��螾螪蟅螰蟑螹螵螼蟉蟃蟂蟌螷��螴蟧蟦蟢蟯蟫蟥蟟蟤蟔蟜蟓蟘����蟗蟙蟴蟨�蠀蟺蟷蠉蠌蠋蟼蠈���蠔蠙蠐蠑蠗蠓蠩蠝蠠蠤蠫蠬�蠦蠪蠥蠰蠮蠳�蠸蠷蠵蠼蠾蠽蠿衃衈衋������衧衪衩袂����������������������������������謖謦謨謫謬謳謹謾譁�證�譎譏譒譔譖識譙譚�譜警譟譫譬譯議譴護譸譽讀譾�變讌讎讋讒讖讓讙讚�讜讞讟�谷谿豁��豆豈豋豌豉豇豎豐�豔豏豕豚豝象豢豨豪豫豬豭豳豵�豸豹豺貂貆貅貉貊貌貍貓貔��貝貞�".split(""); +for(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];} +D[228] = "���������������������������������衶袀衱衹衯袃衴������袉袕袨袢袑袡袟袘袧袙袛袬袌袺裗袹袸袶袼袽袲��袾���裖裋裡裍裞裛裚���裷裧裲裺裮裶裻褁�褅褔褋�褗褆褖褑褕褒褞褭褮褱褢褩褣褟褳褼褾襒褷襂褽����襓襆��������������������������������������負財貢貤貧貨貪販貫責貯貲貳貴貶貸買貺費貼貽貿賀賁貰賂賃賄賅資賈賊�賑賒賓賕賙賚賜賝賞�賠賡賢賣賤賦質賬賟賭賴賵賮賺賻購賽賾賸贄贅贈贊贇贍贏贐贓贔贖�贗贛贉赤赦赧赫赭赬�走赳赴赶起趁趄超越趕�".split(""); +for(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];} +D[229] = "����������������������������������襐襢襗襡襘��襣�襩襮襬襱�襳襹襺�覂覅�����覕覛覝覟覢覤覣覭覮�覶觓觙觛觟觤觡觠觢觜觨��觰觬觲觷觺觻觾�訄訰訧訬訞������詍訹詙詀詗詄詅詑��詊���詏詨��詶訿詷誂詻誃������������������������������������趙趣�趨趯�足趵趾跁趺趹跂跋跅跌跎跏跑跕跖跚跛距跗跫跟跡跣跨跪跬路跱跳跽踉踊跼踏踐踔踖踝踞踢踣踧踘踡踟踦踰踴踵踶�踽蹁蹂蹄踱蹀蹐蹇蹈蹉蹊躍蹌蹕蹔蹙蹟蹣蹤蹜蹝蹠蹯蹲蹴蹶蹺蹡蹢蹬蹭躕躁躄躅躇躉�".split(""); +for(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];} +D[230] = "�����������������������������������詴���誫誙誋誒誖誏�諃�誽�諆誸諓諔諕誻諀諅����諘�誺諿����諢諲諰諈諻�謞謘謑謋謢謒謕謍���謜謓謈謪謧謣謰謵譇謯謼謱謥謷���謽�謤��譗譐譈譊譆譀譓譋譕譑譠譪譝譨譧�譥譣����������������������������������躊躋蹋躐躑躒躓躔躚躡躩躪�蹚身躬�躲軀��躺車軋軌軍軏軒軔軛軟軨軫軸軹軷軼軺軾較輅輈載輀輇輊輒輓輔輕輗�輛輜輝輟輦輩輪輞輠輥�輯輳輸輹輻�輮輴輶輾輿轂轄轅轀轆轇轕轉轍轎轏轒轖轘轞轟轡轢轤��".split(""); +for(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];} +D[231] = "����������������������������������譹譅譺譻��讄讂讆��譿��讅���讔讕讘谹谻谼谽谾�豃豅豊豍��豗豜豟豥豤豦豰豲豱豯豷豶�豻豽貁貀貄貏貑貒�貕貙貘貗貚貜�貣�����貵貹��貾�賌賗賧��賥賨��賳賰��賹���贆�����������������������������������辛辜辟�辣�辦辨辭辯�辰辱農�辵迂迄迅迋迍迎近迓返迕迢迤迥迦迨迪迫迭迮述迴迷迸�追迺退送适逃逅逆逋逌逍透逐逑途逕逖逗這通逛逝逞速造逡逢連逭逮週進逵逶逸�逼遇遁遂遄逾遊運遍過遏遐遑遒道達違遘�".split(""); +for(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];} +D[232] = "�����������������������������������贕贙赨赩赮����赲赸��赻�����趀��趑趌趎趏趍趓趒�����趖�趟趠趜趡��趛�趥趧������趬趪趭趫趮��趲趴趷趼趿跘跓跍跇跜跙跈跆�跴跤跰跠跺跮跐跩跦跢跧跲踂跿踍踃踇踆踅����������������������������������遙遛遜遞遠�遣遢遝遨適遭遮遯遲遴遵遶遷選遹遺遻遼遽避邀邁邂還邅邇邃邈邊邏邐迻邑邛邗邙邕邢�那邡邦�邪邠邯邱邲邴邳邵邶邸邰邽郁郅郇郊邾郃��郕郛郎郡郢郤郙郜郟部郭郴郵郯都郿鄂鄒鄄鄔鄉鄗鄖鄙鄘�".split(""); +for(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];} +D[233] = "���������������������������������跾���踀�踚�踜踠踫踥踤踮踕踛踑踙踩踒踓��踳踾踸踹蹅踼�蹓�蹎蹍蹗蹖蹞蹥蹧蹛蹩蹦��蹼蹸蹳蹪蹻躆躈躂躎躖躗躘躞躟躠躝躥躤躣�躦躨��������躽軂����軉軑軓軘軞軝軜��軠�軴軩軯����������������������������������鄢鄞鄠鄜鄧鄫鄭鄰鄱鄴鄶鄲鄹鄿鄺酇酃酆酈郝酉酊酋酌配酎酒酖酗酢酥酣酤酡酩酪酬酲酵酷酸酴酹酺醃醅醆醇醉醊醋醍醐醒醓醜醞醡醢�醪醫醬醮醯醴醲醵醺醽醁醼釀釁釂�醱釆采釋釉里重野量釐鋅金釗釘釜針釣釧�".split(""); +for(j = 0; j != D[233].length; ++j) if(D[233][j].charCodeAt(0) !== 0xFFFD) { e[D[233][j]] = 59648 + j; d[59648 + j] = D[233][j];} +D[234] = "���������������������������������軻軦軮軥軵軧軶軱軬�輆軿輁輂輋輍輐輑����輤輘輚輣輖輬輵輲輷���轃���轈轑轔轐轓轗轚轙轛轝轠轣��辴���辿迉迆������迒迖����迣��迠迡�迼迾迵迿逄逤逜��逴逯����逿�����������������������������������釬釦釭釵鈇鈀鈍�鈐鈒鈔鈕鈞鈴鈸鈺�鈿鉅鉉鉏鉗鉛鉞�鉤鉋鉶鉸鉦銀銃銅銎銍銑銓銖銘銛銜銚銳銶銷�銼鋈鋌鋏鋒鋟鋘鋤鋩鋪鋙銲鋸鋼錄錐錕錘錙錚錠錢錦錨錫錮錯錞錡鍊鍋鍛鍪�鍬鍵鍼鍾鍇鍍鍔鍠鍤鍥鍭鍰鎔鎉�".split(""); +for(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];} +D[235] = "����������������������������������������逽����������遫�遳遰邆�遾���邋邍邘邔�邟邥邞邧���������郱邿���郈郖郠�郚郣郥郘郗���郪郰郲郳郔郫�鄆鄬郾�鄃郺郼鄈郹郻鄁鄀鄇鄅�鄐鄍鄏鄑鄋鄎鄣鄟鄝����������������������������������鎖鎗鎚鎛鎞鎡鎌鎧鎬鎰鎮鎊鏃鏈鏑鏖鏗鏘鏜鏡鏝鏢鏞鏤鏟鏐鏦鏨鐃鏵鐓鏹鐘鐙鐫鐮鐲鐵鐶鐸鐩鐺鐻鑄鑊鑌鑑鑒鑤鑕�鑠鑢鑣鑪鑰鑯鑲鑵鑷鑱鑼鑽鑾鑿錳長�門閂閃閆閉閈開閎閏閑閒間閔閘閟閡閤閣閥閨閩閫閬閭閱閶�".split(""); +for(j = 0; j != D[235].length; ++j) if(D[235][j].charCodeAt(0) !== 0xFFFD) { e[D[235][j]] = 60160 + j; d[60160 + j] = D[235][j];} +D[236] = "���������������������������������鄚鄤鄡鄛鄨�鄯鄩鄪鄦鄮�鄳鄵鄸�鄻鄾酀酁酅酄酐酏�酘酚酓����酠�酟�酮酯�酳��醀��醑�醣醚醛醙醟���醝醨醥醧�醰醭�醷醳�醹�醾釃釅釔釕釙釢������釴釱釳釩釸釤釹釫釷釮�釪�����������������������������������閹閻閼閽閾闃闇闈闉闊闋闌闍闐�闓闔闕闖闒關闚闠闡闞闢闤闥闆阜�阞阡阤阨阬阮阯阱防阪阻阼阿陀陂附陋限陌降陔陘陛陝陞陟陡院陣除陪陬陰陲陳陴陵陶陷陸陼陽�隍隄隅隆隈隉隊隋階隔隕�隗隘隙際障�隤隧�".split(""); +for(j = 0; j != D[236].length; ++j) if(D[236][j].charCodeAt(0) !== 0xFFFD) { e[D[236][j]] = 60416 + j; d[60416 + j] = D[236][j];} +D[237] = "���������������������������������釨鈏鈌釿鈑釽鈆��鈂����鈗��鈤鈣鈉鈁鈊鈥鈃鈚鈦鈄鈜鈅鈖����鉚鈶����鉈鉒鈰鈷鈽鉍鈳鉥鉊鈹鉆鉑鉀鈾鉭鉬鉠鉧鉯鉡���鉰鉣鉎鉌�鈲鈱�鉖����鉐鉔銕�鉾��鉽銝銆����鈭�銙銂����������������������������������隩險隮隰隱隳隴隨隶隸�隹隻隼雀雁雄雅集雇雉雋雌雍雎雊雒雕嶲雖雘雙雛雜雝雞離難�雨雩雪雯雰雱雲零雷雹電需�霅霄霈霉霆震霍霎霏霑霓霖霜霞霢霤霧霰霪�露�霸霹霮霽霥霾靄靂靆靈靉霨青靖靚靛靜�非靠�".split(""); +for(j = 0; j != D[237].length; ++j) if(D[237][j].charCodeAt(0) !== 0xFFFD) { e[D[237][j]] = 60672 + j; d[60672 + j] = D[237][j];} +D[238] = "�����������������������������������銨銥鉼銤鉻鉺銠銔銪銦銫鉹銗鉿銣鋮�銈銧銋���銌銇�鋇鋰鋗鋝鋯鋂鋨鋊鋁鋓鋉���銡��鋆鋕���鋡��鋧�鋎�鋑鋐鋃鋄鋀銻鋱銬�鋠������錧錈錟錆錏鍺錶錸錼錛錣錒錁鍆錭錎錍鋋�鏒�����������������������������������靡�面靦�靨�革靳靴鞅靶靷靸鞀�鞍鞏鞋鞗鞘鞙鞞鞚�鞠鞦鞫鞬鞭鞮�鞶�鞹�韁韃韆��韋韍韓韌韎韐�韔韝韘韙韜韞���韭�韱�音韶韻響韺頀�頁頂頃項頇順須頌頏預頑頒頷頓頊頍頎頖頗領頞頡頤�頲頦�".split(""); +for(j = 0; j != D[238].length; ++j) if(D[238][j].charCodeAt(0) !== 0xFFFD) { e[D[238][j]] = 60928 + j; d[60928 + j] = D[238][j];} +D[239] = "������������������������������������鋺錴�������������錉鋿��鋻錔錖錩錪錂錀鋹錝�鋾��錥錋��錤�������鋷��錵���鍹鍏�鍕�鍱鍙��鍒���鍧�鍗����鎃鎯鍖鍘鍜鍶鍉鍚鍐鍑鎏鍌鎂������顉����������������������������������頫頭�頰��頸頹頻顆��題額顏�顓願顙顛類顜顢顥�顧顫顯顰顱顴�風颭颯颶颸颿颺颻颼飄飆飀颽�飛�食�飢飣�飧飩飪飫飭飲飯飴飼飽飾飶餂餃餅餈餉養餌餐餖餗餒餓餔餕餘餛餚餡餞餤餟餧館餬餮餱餲餳��".split(""); +for(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];} +D[240] = "�������������������������������������鎙��鍞����鍎���鎤鎣�鎕鎱鎟�鎈�����鎨������鎑�鎍鎵鎒鎷鎘鎝鎎鎪鎢鎳鎦鎀�����鏄鏕��������鏣鏔����鎥鏮����鏇鏏鏂鏚鏬鏌鏙鎩鏊鏍鏎����鏧鏀����������������������������������餼餽饁饅饈饉饋饌饎饐饑饒饔饕饗饜饟饞�首馘馗�香馥馨馝馡馣�馬馭馮馳馴馱馹駁駃駐駑駒駕駘駙駛駋駜駝駟駪駉駢駬駭駮駱�駰駸駿�騁騅騂騃�騑騎騋騏騖騄騙驄騠騣騤騧騫騰騶騵騸騷騮騾驀驁驂驃驅驈��".split(""); +for(j = 0; j != D[240].length; ++j) if(D[240][j].charCodeAt(0) !== 0xFFFD) { e[D[240][j]] = 61440 + j; d[61440 + j] = D[240][j];} +D[241] = "���������������������������������鏽鐖鐉����鐆������鐑�鐌�鏺��鏸�鏿�鏶��鐋鏻鐠鐏鐔鏾鐕鐐鐨鐍鐀鏷鐇鐎鐼��鐿鐳�鐱��鐽�鑀�鐷������鐬鑈鑆�鑉鑅鑐鑋鑇鑗�鑏���������鑨��鑫鑩��鑮鑭鑸�����������������������������������驊驔驍驖驕驌驗驒驚�驙驛驟驢驤驥驩驪駗骨�骭骯骱骰骷骸骼�髀骾髏髆髑髒體髖髓�高�髟髡�髣髦髧髫髭髮�髳�髻髹鬆鬈鬅鬋鬍鬐鬒鬑鬘�鬙鬚鬟鬣鬢鬎鬥鬨鬧鬩�鬮�鬯鬱�鬲�鬵鬷鬻�鬼魁魂魃魄魊魅�".split(""); +for(j = 0; j != D[241].length; ++j) if(D[241][j].charCodeAt(0) !== 0xFFFD) { e[D[241][j]] = 61696 + j; d[61696 + j] = D[241][j];} +D[242] = "����������������������������������鑴鑶��钂钀钁���钃�镺镻镼�镽���閍閌���閜閞���閮�����閺閿閵闀闅閷�闑闛闟�闣��阢阠阰����阹阽阺陃陏陑陓陊��陎����陭陫���隇陾隃隀����陱隒隓隑隞�������������������������������������魏��魈魍魎魑魔�魘�魚魨魯鮀魴�鮒鮐鮓鮞鮪鮆鮑鯗鮮鮫鯀鯉鯁鯊鯖鯢鯧鯫鯤鯨鯽��鰈鰍��鰓鰥鰜鰣鰭鰲鰷鰻鱄鱉鱔鱘鱟鱠鱣鱗鱎鱖鱨鱷鱸魺鳥鳦鳩鳧鳲鳳鳴鳶鴄鴟鴆鴇鴈鴉鴃�鴛鴞鴣鴦鴨鴒鴝鴻鴿鴽鵀鵂�".split(""); +for(j = 0; j != D[242].length; ++j) if(D[242][j].charCodeAt(0) !== 0xFFFD) { e[D[242][j]] = 61952 + j; d[61952 + j] = D[242][j];} +D[243] = "�����������������������������������隡隢���隬����隿雂雃�雓雔��雗雚巂雟�雡�雥���雸雺雽雿��霂�������霙��霟霣�霬霦霩霫霯���霺霵霿�靃靇�靋���靪靬靰靮�靲靽靺靾鞃靼鞂靻鞄鞁靿�鞊鞎鞈鞔鞡鞜�����������������������������������鵜鵝鵑鵠鵓鵡鵒鵪鵰鵲鶉鵩鵬��鶖鶘鶚鶩鶯鶱鶴鶵鶺鶿鶊鷇鶬鶹鶻鶼鷁鷂�鷃鷗鷓鷕鷖鷙鷥鷩鷲鷹鷺鷦鷯鷴鷸鸇鸑鷽鸕鸚鸞鷟鸛鸝�鹵鹹鹼鹽鹺�鹿麂�麀麃麇麈麋麌�麑麒麓�麗麚麛麝�麟�麤�麥��麰麴��".split(""); +for(j = 0; j != D[243].length; ++j) if(D[243][j].charCodeAt(0) !== 0xFFFD) { e[D[243][j]] = 62208 + j; d[62208 + j] = D[243][j];} +D[244] = "����������������������������������鞨鞣鞤鞪鞳鞷鞻鞿韄韅韇韉韏韕�韗韟韡韣韥韰���韹韽韾��頄����頧頛頩頝頨頠頜頵頯��顃顁顄顊�顅顐顑顒顎顝顗顠�顣顟顤顪顩��顲顳颬�颮颱颲颳���颾飁飂���飉飋飌���飥��飹����������������������������������麻麼麾�黃黈黌�黍黏黎黐�黑黔默黛黜點黝黠黥黧黨黯黴黮黶黷�黹黻黼�黽黿��鼇�鼉�鼎鼐鼏鼒�鼓鼕�鼖鼙鼛鼚�鼠鼢鼫鼬鼯�鼷�鼻鼽鼾齁��齊齋齎齏�齒齔齕齗齟齡齠齦齧�齬齪齮齲齶齷齣龍�龔�".split(""); +for(j = 0; j != D[244].length; ++j) if(D[244][j].charCodeAt(0) !== 0xFFFD) { e[D[244][j]] = 62464 + j; d[62464 + j] = D[244][j];} +D[245] = "�������������������������������������餀飺�餇���餑餥���餯餭餰餫餪餵餾餿餺����饇饃饙�饖饘��饛����馜��馧��馦���馯馲馰馵馻馺駂馽駇�����駌�駍駏駓駔駎駖駥駤駣駩�������駺駴駷駹駶駻駽駾駼����������������������������������龕�龜�龠龢�ㄅㄆㄇㄈㄉㄊㄋㄌㄍㄎㄏㄐㄑㄒㄓㄔㄕㄖㄗㄘㄙㄚㄛㄜㄝㄞㄟㄠㄡㄢㄣㄤㄥㄦㄧㄨㄩˊˇˋ˙�!"#$%&‵()*+,-./0123456789:;<=>?@ABCDEFGHIJKLM�".split(""); +for(j = 0; j != D[245].length; ++j) if(D[245][j].charCodeAt(0) !== 0xFFFD) { e[D[245][j]] = 62720 + j; d[62720 + j] = D[245][j];} +D[246] = "���������������������������������騉騍騊騇����騆�騚騕騥騝騛騢騞騜騲騴騱騬騪騩騭�騿�騹騽驆騺�驎驓驏驉�驞驠�驦驧�驨驫骹骿骴髁髂髇髊髍髐髕���髜��髬髲�髯�髺髶�髾髽鬁髼鬃鬄���鬊鬌鬕鬗鬖鬞鬠鬤鬫鬳鬺鬾鬿魆魌����������������������������������NOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}∼�。︵︶﹁﹂�".split(""); +for(j = 0; j != D[246].length; ++j) if(D[246][j].charCodeAt(0) !== 0xFFFD) { e[D[246][j]] = 62976 + j; d[62976 + j] = D[246][j];} +D[247] = "���������������������������������魋����魒魖��魠魡���魤魧魷魱魦魶魵�鮕鮈��魽��鮅鮇魼魾魻鮂鮚鮭鮨鮛鮦鮡鮥鮤鮯��鮹��鮽鯇鯆鯃鮿鮵鮸鯈鯓�����鯕���鯪鯠鯞鯛鯦鯰鯔鯬�鯚鰗�鰋鯷鰅鰒鯸鱀鰎�鰇鰉�鰡��������������������������������������".split(""); +for(j = 0; j != D[247].length; ++j) if(D[247][j].charCodeAt(0) !== 0xFFFD) { e[D[247][j]] = 63232 + j; d[63232 + j] = D[247][j];} +D[248] = "����������������������������������鰫鰝鰬鰨鰩鱆鱈鰿鰱鰾鰴鰹鰳鱁鰼���鱙�鱐鱊鱍鱋鱕��鱧鱦鱢鱞��鱭��鱮鱴鱳鱱���鱹鱺��鳪鳭鳱鳵鳼���鳺鳽鳿鳷鴀鳹鳻鴅���瞗��鴕鴥鴗鴠鴔鴩鴘鴢鴐鴳鵁鵧鴶鴮鴯鴱鴸������鴰�����������������������������������".split(""); +for(j = 0; j != D[248].length; ++j) if(D[248][j].charCodeAt(0) !== 0xFFFD) { e[D[248][j]] = 63488 + j; d[63488 + j] = D[248][j];} +D[249] = "���������������������������������鵅鵃鴾鴷鵏鵊鵛鵋鵙鵖鵌鵗鵔鵟�鵘�����鵷鶁鶄鶈鵱鶀鵸鶆鶋鶌�鵿鵽鵫鵴鵵鶅鵳鵻鶂鵯鵹鶟鶙鶤鶝鶒鶐鶛鶠鶔鶜鶪鶗鶡鶢鶨鶞鶣�鶧鶷鶶鷊鷏鶾鷅鷎鷈鶭�鷌鷍鷝�鷛鷒鷞鷚鷋鷐鷜鷑鷘鷵鷻鷷鷣鷫鷬鷭�������������������������������������".split(""); +for(j = 0; j != D[249].length; ++j) if(D[249][j].charCodeAt(0) !== 0xFFFD) { e[D[249][j]] = 63744 + j; d[63744 + j] = D[249][j];} +D[250] = "���������������������������������鷤鷶鷡鷮鷰鷢鸂鷾鸃鸆鸅鸀鸁鸉鷿鸄�鸋鸍鸐鸏鸔鸒鸓鸗鸙���麆麊麉���麎麔麙�麜�麠麡�麧麭麩麮��麵麶�麷�黀黂�黓黕黖黚黟黤黫黭黰黲黳黵�鼁鼀鼆鼊鼘鼜鼤鼣鼥鼪鼩鼨鼭鼰鼮鼱鼵鼴鼳鼲鼸鼶齀�����������������������������������".split(""); +for(j = 0; j != D[250].length; ++j) if(D[250][j].charCodeAt(0) !== 0xFFFD) { e[D[250][j]] = 64000 + j; d[64000 + j] = D[250][j];} +D[251] = "���������������������������������齂齃齇齉齌齍齖齘齛齞齝齜齥齤齫齱齰齯齴齵齸齻齺齹齾�龒��龤���������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[251].length; ++j) if(D[251][j].charCodeAt(0) !== 0xFFFD) { e[D[251][j]] = 64256 + j; d[64256 + j] = D[251][j];} +D[252] = "������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[252].length; ++j) if(D[252][j].charCodeAt(0) !== 0xFFFD) { e[D[252][j]] = 64512 + j; d[64512 + j] = D[252][j];} +D[253] = "������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[253].length; ++j) if(D[253][j].charCodeAt(0) !== 0xFFFD) { e[D[253][j]] = 64768 + j; d[64768 + j] = D[253][j];} +D[254] = "������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[254].length; ++j) if(D[254][j].charCodeAt(0) !== 0xFFFD) { e[D[254][j]] = 65024 + j; d[65024 + j] = D[254][j];} +return {"enc": e, "dec": d }; })(); diff --git a/node_modules/codepage/bits/20005.js b/node_modules/codepage/bits/20005.js new file mode 100644 index 000000000..0b001fe19 --- /dev/null +++ b/node_modules/codepage/bits/20005.js @@ -0,0 +1,223 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[20005] = (function(){ var d = [], e = {}, D = [], j; +D[0] = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€�������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];} +D[141] = "������������������������������������������������ ,、。․•;:?!�������︰…‥﹐﹑‧﹒﹔﹕﹖﹗︱–︲—︳_︴﹏()︵︶{}︷������︸〔〕︹︺【】︻︼《》︽︾〈〉︿﹀「」﹁﹂『』﹃﹄﹙������������������﹚﹛﹜﹝﹞‘’“”〝〞′‵#&*※§〃○●△▲◎☆★◇◆□■▽▼㊣℅‾ ̄��﹉﹊﹍﹎﹋﹌﹟﹠﹡+-×÷±√<>=≦≧≠∞≒≡﹢﹣﹤﹥﹦∼∩∪⊥∠∟⊿㏒㏑∫∮∵∴♀♂⊕⊙↑↓←→↖↗↙↘∥∣/\�﹨�$¥〒¢£%@℃℉﹩﹪﹫㏕���".split(""); +for(j = 0; j != D[141].length; ++j) if(D[141][j].charCodeAt(0) !== 0xFFFD) { e[D[141][j]] = 36096 + j; d[36096 + j] = D[141][j];} +D[142] = "������������������������������������������������㎜㎝㎞㏎㎡㎎㎏㏄゜兙�������兛兞兝兡兣嗧瓩糎▁▂▃▄▅▆▇█▏▎▍▌▋▊▉┼┴┬������┤├▔─│▕┌┐└┘╭╮╰╯═╞╪╡◢◣◥◤╱╲╳0������������������123456789ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩ〡〢〣〤〥〦〧〨〩�卄�ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟ�ΠΡΣΤΥΦΧΨΩαβγδ���".split(""); +for(j = 0; j != D[142].length; ++j) if(D[142][j].charCodeAt(0) !== 0xFFFD) { e[D[142][j]] = 36352 + j; d[36352 + j] = D[142][j];} +D[143] = "������������������������������������������������εζηθικλμνξ�������οπρστυφχψωㄅㄆㄇㄈㄉㄊㄋㄌㄍㄎㄏㄐㄑㄒㄓㄔ������ㄕㄖㄗㄘㄙㄚㄛㄜㄝㄞㄟㄠㄡㄢㄣㄤㄥㄦㄧㄨㄩ˙˟ˊˇˋ���������������������������������������������������������������������������������一乙丁七乃九了二人儿入八几刀刁力匕十卜又三下丈上丫丸凡久么也乞于亡兀刃�勺千叉口土士夕大女子孑孓寸���".split(""); +for(j = 0; j != D[143].length; ++j) if(D[143][j].charCodeAt(0) !== 0xFFFD) { e[D[143][j]] = 36608 + j; d[36608 + j] = D[143][j];} +D[144] = "������������������������������������������������小尢尸山川工己已巳巾�������干廾弋弓才丑丐不中丰丹之尹予云井互五亢仁什仃仆仇仍今������介仄元允內六兮公冗凶分切刈勻勾勿化匹午升卅卞厄友及反������������������壬天夫太夭孔少尤尺屯巴幻廿弔引心戈戶手扎支文斗斤方日曰月木欠止歹毋比毛氏水火爪父爻片牙牛犬王丙世丕且丘主乍乏乎以付仔仕他仗代令仙仞充兄冉冊冬凹出凸刊加功包匆北匝仟半卉卡占卯卮去可古右召叮叩叨叼司叵�叫另只史叱台句叭叻四囚外央���".split(""); +for(j = 0; j != D[144].length; ++j) if(D[144][j].charCodeAt(0) !== 0xFFFD) { e[D[144][j]] = 36864 + j; d[36864 + j] = D[144][j];} +D[145] = "������������������������������������������������失奴奶孕它尼巨巧左市�������布平幼弁弘弗必戊打扔扒扑斥旦朮本未末札正母民氐永汁汀������氾犯玄玉瓜瓦甘生用甩田由甲申疋白皮皿目矛矢石示禾穴立������������������丞丟乒乓乩亙交亦亥仿伉伙伊伕伍伐休伏仲件任仰仳份企伋光兇兆先全共再冰列刑划刎刖劣匈匡匠印危吉吏同吊吐吁吋各向名合吃后吆吒因回囝圳地在圭圬圯圩夙多夷夸妄奸妃好她如妁字存宇守宅安寺尖屹州帆并年式弛忙忖�戎戌戍成扣扛托收早旨旬旭曲���".split(""); +for(j = 0; j != D[145].length; ++j) if(D[145][j].charCodeAt(0) !== 0xFFFD) { e[D[145][j]] = 37120 + j; d[37120 + j] = D[145][j];} +D[146] = "������������������������������������������������曳有朽朴朱朵次此死氖�������汝汗汙江池汐汕污汛汍汎灰牟牝百竹米糸缶羊羽老考而耒耳������聿肉肋肌臣自至臼舌舛舟艮色艾虫血行衣西阡串亨位住佇佗������������������佞伴佛何估佐佑伽伺伸佃佔似但佣作你伯低伶余佝佈佚兌克免兵冶冷別判利刪刨劫助努劬匣即卵吝吭吞吾否呎吧呆呃吳呈呂君吩告吹吻吸吮吵吶吠吼呀吱含吟听囪困囤囫坊坑址坍均坎圾坐坏圻壯夾妝妒妨妞妣妙妖妍妤妓妊妥�孝孜孚孛完宋宏尬局屁尿尾岐���".split(""); +for(j = 0; j != D[146].length; ++j) if(D[146][j].charCodeAt(0) !== 0xFFFD) { e[D[146][j]] = 37376 + j; d[37376 + j] = D[146][j];} +D[147] = "������������������������������������������������岑岔岌巫希序庇床廷弄�������弟彤形彷役忘忌志忍忱快忸忪戒我抄抗抖技扶抉扭把扼找批������扳抒扯折扮投抓抑抆改攻攸旱更束李杏材村杜杖杞杉杆杠杓������������������杗步每求汞沙沁沈沉沅沛汪決沐汰沌汨沖沒汽沃汲汾汴沆汶沍沔沘沂灶灼災灸牢牡牠狄狂玖甬甫男甸皂盯矣私秀禿究系罕肖肓肝肘肛肚育良芒芋芍見角言谷豆豕貝赤走足身車辛辰迂迆迅迄巡邑邢邪邦那酉釆里防阮阱阪阬並乖�乳事些亞享京佯依侍佳使佬供���".split(""); +for(j = 0; j != D[147].length; ++j) if(D[147][j].charCodeAt(0) !== 0xFFFD) { e[D[147][j]] = 37632 + j; d[37632 + j] = D[147][j];} +D[148] = "������������������������������������������������例來侃佰併侈佩佻侖佾�������侏侑佺兔兒兕兩具其典冽函刻券刷刺到刮制剁劾劻卒協卓卑������卦卷卸卹取叔受味呵咖呸咕咀呻呷咄咒咆呼咐呱呶和咚呢周������������������咋命咎固垃坷坪坩坡坦坤坼夜奉奇奈奄奔妾妻委妹妮姑姆姐姍始姓姊妯妳姒姅孟孤季宗定官宜宙宛尚屈居屆岷岡岸岩岫岱岳帘帚帖帕帛帑幸庚店府底庖延弦弧弩往征彿彼忝忠忽念忿怏怔怯怵怖怪怕怡性怩怫怛或戕房戾所承拉�拌拄抿拂抹拒招披拓拔拋拈抨���".split(""); +for(j = 0; j != D[148].length; ++j) if(D[148][j].charCodeAt(0) !== 0xFFFD) { e[D[148][j]] = 37888 + j; d[37888 + j] = D[148][j];} +D[149] = "������������������������������������������������抽押拐拙拇拍抵拚抱拘�������拖拗拆抬拎放斧於旺昔易昌昆昂明昀昏昕昊昇服朋杭枋枕東������果杳杷枇枝林杯杰板枉松析杵枚枓杼杪杲欣武歧歿氓氛泣注������������������泳沱泌泥河沽沾沼波沫法泓沸泄油況沮泗泅泱沿治泡泛泊沬泯泜泖泠炕炎炒炊炙爬爭爸版牧物狀狎狙狗狐玩玨玟玫玥甽疝疙疚的盂盲直知矽社祀祁秉秈空穹竺糾罔羌羋者肺肥肢肱股肫肩肴肪肯臥臾舍芳芝芙芭芽芟芹花芬芥芯�芸芣芰芾芷虎虱初表軋迎返近���".split(""); +for(j = 0; j != D[149].length; ++j) if(D[149][j].charCodeAt(0) !== 0xFFFD) { e[D[149][j]] = 38144 + j; d[38144 + j] = D[149][j];} +D[150] = "������������������������������������������������邵邸邱邶采金長門阜陀�������阿阻附陂隹雨青非亟亭亮信侵侯便俠俑俏保促侶俘俟俊俗侮������俐俄係俚俎俞侷兗冒冑冠剎剃削前剌剋則勇勉勃勁匍南卻厚������������������叛咬哀咨哎哉咸咦咳哇哂咽咪品哄哈咯咫咱咻咩咧咿囿垂型垠垣垢城垮垓奕契奏奎奐姜姘姿姣姨娃姥姪姚姦威姻孩宣宦室客宥封屎屏屍屋峙峒巷帝帥帟幽庠度建弈弭彥很待徊律徇後徉怒思怠急怎怨恍恰恨恢恆恃恬恫恪恤扁拜�挖按拼拭持拮拽指拱拷拯括拾���".split(""); +for(j = 0; j != D[150].length; ++j) if(D[150][j].charCodeAt(0) !== 0xFFFD) { e[D[150][j]] = 38400 + j; d[38400 + j] = D[150][j];} +D[151] = "������������������������������������������������拴挑挂政故斫施既春昭�������映昧是星昨昱昤曷柿染柱柔某柬架枯柵柩柯柄柑枴柚查枸柏������柞柳枰柙柢柝柒歪殃殆段毒毗氟泉洋洲洪流津洌洱洞洗活洽������������������派洶洛泵洹洧洸洩洮洵洎洫炫為炳炬炯炭炸炮炤爰牲牯牴狩狠狡玷珊玻玲珍珀玳甚甭畏界畎畋疫疤疥疢疣癸皆皇皈盈盆盃盅省盹相眉看盾盼眇矜砂研砌砍祆祉祈祇禹禺科秒秋穿突竿竽籽紂紅紀紉紇約紆缸美羿耄耐耍耑耶胖胥�胚胃胄背胡胛胎胞胤胝致舢苧���".split(""); +for(j = 0; j != D[151].length; ++j) if(D[151][j].charCodeAt(0) !== 0xFFFD) { e[D[151][j]] = 38656 + j; d[38656 + j] = D[151][j];} +D[152] = "������������������������������������������������范茅苣苛苦茄若茂茉苒�������苗英茁苜苔苑苞苓苟苯茆虐虹虻虺衍衫要觔計訂訃貞負赴赳������趴軍軌述迦迢迪迥迭迫迤迨郊郎郁郃酋酊重閂限陋陌降面革������������������韋韭音頁風飛食首香乘亳倌倍倣俯倦倥俸倩倖倆值借倚倒們俺倀倔倨俱倡個候倘俳修倭倪俾倫倉兼冤冥冢凍凌准凋剖剜剔剛剝匪卿原厝叟哨唐唁唷哼哥哲唆哺唔哩哭員唉哮哪哦唧唇哽唏圃圄埂埔埋埃堉夏套奘奚娑娘娜娟娛娓�姬娠娣娩娥娌娉孫屘宰害家宴���".split(""); +for(j = 0; j != D[152].length; ++j) if(D[152][j].charCodeAt(0) !== 0xFFFD) { e[D[152][j]] = 38912 + j; d[38912 + j] = D[152][j];} +D[153] = "������������������������������������������������宮宵容宸射屑展屐峭峽�������峻峪峨峰島崁峴差席師庫庭座弱徒徑徐恙恣恥恐恕恭恩息悄������悟悚悍悔悌悅悖扇拳挈拿捎挾振捕捂捆捏捉挺捐挽挪挫挨捍������������������捌效敉料旁旅時晉晏晃晒晌晅晁書朔朕朗校核案框桓根桂桔栩梳栗桌桑栽柴桐桀格桃株桅栓栘桁殊殉殷氣氧氨氦氤泰浪涕消涇浦浸海浙涓浬涉浮浚浴浩涌涊浹涅浥涔烊烘烤烙烈烏爹特狼狹狽狸狷玆班琉珮珠珪珞畔畝畜畚留疾�病症疲疳疽疼疹痂疸皋皰益盍���".split(""); +for(j = 0; j != D[153].length; ++j) if(D[153][j].charCodeAt(0) !== 0xFFFD) { e[D[153][j]] = 39168 + j; d[39168 + j] = D[153][j];} +D[154] = "������������������������������������������������盎眩真眠眨矩砰砧砸砝�������破砷砥砭砠砟砲祕祐祠祟祖神祝祗祚秤秣秧租秦秩秘窄窈站������笆笑粉紡紗紋紊素索純紐紕級紜納紙紛缺罟羔翅翁耆耘耕耙������������������耗耽耿胱脂胰脅胭胴脆胸胳脈能脊胼胯臭臬舀舐航舫舨般芻茫荒荔荊茸荐草茵茴荏茲茹茶茗荀茱茨荃虔蚊蚪蚓蚤蚩蚌蚣蚜衰衷袁袂衽衹記訐討訌訕訊託訓訖訏訑豈豺豹財貢起躬軒軔軏辱送逆迷退迺迴逃追逅迸邕郡郝郢酒配酌�釘針釗釜釙閃院陣陡陛陝除陘���".split(""); +for(j = 0; j != D[154].length; ++j) if(D[154][j].charCodeAt(0) !== 0xFFFD) { e[D[154][j]] = 39424 + j; d[39424 + j] = D[154][j];} +D[155] = "������������������������������������������������陞隻飢馬骨高鬥鬲鬼乾�������偺偽停假偃偌做偉健偶偎偕偵側偷偏倏偯偭兜冕凰剪副勒務������勘動匐匏匙匿區匾參曼商啪啦啄啞啡啃啊唱啖問啕唯啤唸售������������������啜唬啣唳啁啗圈國圉域堅堊堆埠埤基堂堵執培夠奢娶婁婉婦婪婀娼婢婚婆婊孰寇寅寄寂宿密尉專將屠屜屝崇崆崎崛崖崢崑崩崔崙崤崧崗巢常帶帳帷康庸庶庵庾張強彗彬彩彫得徙從徘御徠徜恿患悉悠您惋悴惦悽情悻悵惜悼惘惕�惆惟悸惚惇戚戛扈掠控捲掖探���".split(""); +for(j = 0; j != D[155].length; ++j) if(D[155][j].charCodeAt(0) !== 0xFFFD) { e[D[155][j]] = 39680 + j; d[39680 + j] = D[155][j];} +D[156] = "������������������������������������������������接捷捧掘措捱掩掉掃掛�������捫推掄授掙採掬排掏掀捻捩捨捺敝敖救教敗啟敏敘敕敔斜斛������斬族旋旌旎晝晚晤晨晦晞曹勗望梁梯梢梓梵桿桶梱梧梗械梃������������������棄梭梆梅梔條梨梟梡梂欲殺毫毬氫涎涼淳淙液淡淌淤添淺清淇淋涯淑涮淞淹涸混淵淅淒渚涵淚淫淘淪深淮淨淆淄涪淬涿淦烹焉焊烽烯爽牽犁猜猛猖猓猙率琅琊球理現琍瓠瓶瓷甜產略畦畢異疏痔痕疵痊痍皎盔盒盛眷眾眼眶眸眺�硫硃硎祥票祭移窒窕笠笨笛第���".split(""); +for(j = 0; j != D[156].length; ++j) if(D[156][j].charCodeAt(0) !== 0xFFFD) { e[D[156][j]] = 39936 + j; d[39936 + j] = D[156][j];} +D[157] = "������������������������������������������������符笙笞笮粒粗粕絆絃統�������紮紹紼絀細紳組累終紲紱缽羞羚翌翎習耜聊聆脯脖脣脫脩脰������脤舂舵舷舶船莎莞莘荸莢莖莽莫莒莊莓莉莠荷荻荼莆莧處彪������������������蛇蛀蚶蛄蚵蛆蛋蚱蚯蛉術袞袈被袒袖袍袋覓規訪訝訣訥許設訟訛訢豉豚販責貫貨貪貧赧赦趾趺軛軟這逍通逗連速逝逐逕逞造透逢逖逛途部郭都酗野釵釦釣釧釭釩閉陪陵陳陸陰陴陶陷陬雀雪雩章竟頂頃魚鳥鹵鹿麥麻傢傍傅備傑�傀傖傘傚最凱割剴創剩勞勝勛���".split(""); +for(j = 0; j != D[157].length; ++j) if(D[157][j].charCodeAt(0) !== 0xFFFD) { e[D[157][j]] = 40192 + j; d[40192 + j] = D[157][j];} +D[158] = "������������������������������������������������博厥啻喀喧啼喊喝喘喂�������喜喪喔喇喋喃喳單喟唾喲喚喻喬喱啾喉喫喙圍堯堪場堤堰報������堡堝堠壹壺奠婷媚婿媒媛媧孳孱寒富寓寐尊尋就嵌嵐崴嵇巽������������������幅帽幀幃幾廊廁廂廄弼彭復循徨惑惡悲悶惠愜愣惺愕惰惻惴慨惱愎惶愉愀愒戟扉掣掌描揀揩揉揆揍插揣提握揖揭揮捶援揪換摒揚揹敞敦敢散斑斐斯普晰晴晶景暑智晾晷曾替期朝棺棕棠棘棗椅棟棵森棧棹棒棲棣棋棍植椒椎棉棚�楮棻款欺欽殘殖殼毯氮氯氬港���".split(""); +for(j = 0; j != D[158].length; ++j) if(D[158][j].charCodeAt(0) !== 0xFFFD) { e[D[158][j]] = 40448 + j; d[40448 + j] = D[158][j];} +D[159] = "������������������������������������������������游湔渡渲湧湊渠渥渣減�������湛湘渤湖湮渭渦湯渴湍渺測湃渝渾滋溉渙湎湣湄湲湩湟焙焚������焦焰無然煮焜牌犄犀猶猥猴猩琺琪琳琢琥琵琶琴琯琛琦琨甥������������������甦畫番痢痛痣痙痘痞痠登發皖皓皴盜睏短硝硬硯稍稈程稅稀窘窗窖童竣等策筆筐筒答筍筋筏筑粟粥絞結絨絕紫絮絲絡給絢絰絳善翔翕耋聒肅腕腔腋腑腎脹腆脾腌腓腴舒舜菩萃菸萍菠菅萋菁華菱菴著萊菰萌菌菽菲菊萸萎萄菜萇�菔菟虛蛟蛙蛭蛔蛛蛤蛐蛞街裁���".split(""); +for(j = 0; j != D[159].length; ++j) if(D[159][j].charCodeAt(0) !== 0xFFFD) { e[D[159][j]] = 40704 + j; d[40704 + j] = D[159][j];} +D[160] = "������������������������������������������������裂袱覃視註詠評詞証詁�������詔詛詐詆訴診訶詖象貂貯貼貳貽賁費賀貴買貶貿貸越超趁跎������距跋跚跑跌跛跆軻軸軼辜逮逵週逸進逶鄂郵鄉郾酣酥量鈔鈕������������������鈣鈉鈞鈍鈐鈇鈑閔閏開閑間閒閎隊階隋陽隅隆隍陲隄雁雅雄集雇雯雲韌項順須飧飪飯飩飲飭馮馭黃黍黑亂傭債傲傳僅傾催傷傻傯僇剿剷剽募勦勤勢勣匯嗟嗨嗓嗦嗎嗜嗇嗑嗣嗤嗯嗚嗡嗅嗆嗥嗉園圓塞塑塘塗塚塔填塌塭塊塢塒塋�奧嫁嫉嫌媾媽媼媳嫂媲嵩嵯幌���".split(""); +for(j = 0; j != D[160].length; ++j) if(D[160][j].charCodeAt(0) !== 0xFFFD) { e[D[160][j]] = 40960 + j; d[40960 + j] = D[160][j];} +D[161] = "������������������������������������������������幹廉廈弒彙徬微愚意慈�������感想愛惹愁愈慎慌慄慍愾愴愧愍愆愷戡戢搓搾搞搪搭搽搬搏������搜搔損搶搖搗搆敬斟新暗暉暇暈暖暄暘暍會榔業楚楷楠楔極������������������椰概楊楨楫楞楓楹榆楝楣楛歇歲毀殿毓毽溢溯滓溶滂源溝滇滅溥溘溼溺溫滑準溜滄滔溪溧溴煎煙煩煤煉照煜煬煦煌煥煞煆煨煖爺牒猷獅猿猾瑯瑚瑕瑟瑞瑁琿瑙瑛瑜當畸瘀痰瘁痲痱痺痿痴痳盞盟睛睫睦睞督睹睪睬睜睥睨睢矮碎�碰碗碘碌碉硼碑碓硿祺祿禁萬���".split(""); +for(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];} +D[162] = "������������������������������������������������禽稜稚稠稔稟稞窟窠筷�������節筠筮筧粱粳粵經絹綑綁綏絛置罩罪署義羨群聖聘肆肄腱腰������腸腥腮腳腫腹腺腦舅艇蒂葷落萱葵葦葫葉葬葛萼萵葡董葩葭������������������葆虞虜號蛹蜓蜈蜇蜀蛾蛻蜂蜃蜆蜊衙裟裔裙補裘裝裡裊裕裒覜解詫該詳試詩詰誇詼詣誠話誅詭詢詮詬詹詻訾詨豢貊貉賊資賈賄貲賃賂賅跡跟跨路跳跺跪跤跦躲較載軾輊辟農運遊道遂達逼違遐遇遏過遍遑逾遁鄒鄗酬酪酩釉鈷鉗�鈸鈽鉀鈾鉛鉋鉤鉑鈴鉉鉍鉅鈹���".split(""); +for(j = 0; j != D[162].length; ++j) if(D[162][j].charCodeAt(0) !== 0xFFFD) { e[D[162][j]] = 41472 + j; d[41472 + j] = D[162][j];} +D[163] = "������������������������������������������������鈿鉚閘隘隔隕雍雋雉雊�������雷電雹零靖靴靶預頑頓頊頒頌飼飴飽飾馳馱馴髡鳩麂鼎鼓鼠������僧僮僥僖僭僚僕像僑僱僎僩兢凳劃劂匱厭嗾嘀嘛嘗嗽嘔嘆嘉������������������嘍嘎嗷嘖嘟嘈嘐嗶團圖塵塾境墓墊塹墅塽壽夥夢夤奪奩嫡嫦嫩嫗嫖嫘嫣孵寞寧寡寥實寨寢寤察對屢嶄嶇幛幣幕幗幔廓廖弊彆彰徹慇愿態慷慢慣慟慚慘慵截撇摘摔撤摸摟摺摑摧搴摭摻敲斡旗旖暢暨暝榜榨榕槁榮槓構榛榷榻榫榴�槐槍榭槌榦槃榣歉歌氳漳演滾���".split(""); +for(j = 0; j != D[163].length; ++j) if(D[163][j].charCodeAt(0) !== 0xFFFD) { e[D[163][j]] = 41728 + j; d[41728 + j] = D[163][j];} +D[164] = "������������������������������������������������漓滴漩漾漠漬漏漂漢滿�������滯漆漱漸漲漣漕漫漯澈漪滬漁滲滌滷熔熙煽熊熄熒爾犒犖獄������獐瑤瑣瑪瑰瑭甄疑瘧瘍瘋瘉瘓盡監瞄睽睿睡磁碟碧碳碩碣禎������������������福禍種稱窪窩竭端管箕箋筵算箝箔箏箸箇箄粹粽精綻綰綜綽綾綠緊綴網綱綺綢綿綵綸維緒緇綬罰翠翡翟聞聚肇腐膀膏膈膊腿膂臧臺與舔舞艋蓉蒿蓆蓄蒙蒞蒲蒜蓋蒸蓀蓓蒐蒼蓑蓊蜿蜜蜻蜢蜥蜴蜘蝕蜷蜩裳褂裴裹裸製裨褚裯誦誌�語誣認誡誓誤說誥誨誘誑誚誧���".split(""); +for(j = 0; j != D[164].length; ++j) if(D[164][j].charCodeAt(0) !== 0xFFFD) { e[D[164][j]] = 41984 + j; d[41984 + j] = D[164][j];} +D[165] = "������������������������������������������������豪貍貌賓賑賒赫趙趕跼�������輔輒輕輓辣遠遘遜遣遙遞遢遝遛鄙鄘鄞酵酸酷酴鉸銀銅銘銖������鉻銓銜銨鉼銑閡閨閩閣閥閤隙障際雌雒需靼鞅韶頗領颯颱餃������������������餅餌餉駁骯骰髦魁魂鳴鳶鳳麼鼻齊億儀僻僵價儂儈儉儅凜劇劈劉劍劊勰厲嘮嘻嘹嘲嘿嘴嘩噓噎噗噴嘶嘯嘰墀墟增墳墜墮墩墦奭嬉嫻嬋嫵嬌嬈寮寬審寫層履嶝嶔幢幟幡廢廚廟廝廣廠彈影德徵慶慧慮慝慕憂慼慰慫慾憧憐憫憎憬憚�憤憔憮戮摩摯摹撞撲撈撐撰撥���".split(""); +for(j = 0; j != D[165].length; ++j) if(D[165][j].charCodeAt(0) !== 0xFFFD) { e[D[165][j]] = 42240 + j; d[42240 + j] = D[165][j];} +D[166] = "������������������������������������������������撓撕撩撒撮播撫撚撬撙�������撢撳敵敷數暮暫暴暱樣樟槨樁樞標槽模樓樊槳樂樅槭樑歐歎������殤毅毆漿潼澄潑潦潔澆潭潛潸潮澎潺潰潤澗潘滕潯潠潟熟熬������������������熱熨牖犛獎獗瑩璋璃瑾璀畿瘠瘩瘟瘤瘦瘡瘢皚皺盤瞎瞇瞌瞑瞋磋磅確磊碾磕碼磐稿稼穀稽稷稻窯窮箭箱範箴篆篇篁箠篌糊締練緯緻緘緬緝編緣線緞緩綞緙緲緹罵罷羯翩耦膛膜膝膠膚膘蔗蔽蔚蓮蔬蔭蔓蔑蔣蔡蔔蓬蔥蓿蔆螂蝴蝶�蝠蝦蝸蝨蝙蝗蝌蝓衛衝褐複褒���".split(""); +for(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];} +D[167] = "������������������������������������������������褓褕褊誼諒談諄誕請諸�������課諉諂調誰論諍誶誹諛豌豎豬賠賞賦賤賬賭賢賣賜質賡赭趟������趣踫踐踝踢踏踩踟踡踞躺輝輛輟輩輦輪輜輞輥適遮遨遭遷鄰������������������鄭鄧鄱醇醉醋醃鋅銻銷鋪銬鋤鋁銳銼鋒鋇鋰銲閭閱霄霆震霉靠鞍鞋鞏頡頫頜颳養餓餒餘駝駐駟駛駑駕駒駙骷髮髯鬧魅魄魷魯鴆鴉鴃麩麾黎墨齒儒儘儔儐儕冀冪凝劑劓勳噙噫噹噩噤噸噪器噥噱噯噬噢噶壁墾壇壅奮嬝嬴學寰導彊�憲憑憩憊懍憶憾懊懈戰擅擁擋���".split(""); +for(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];} +D[168] = "������������������������������������������������撻撼據擄擇擂操撿擒擔�������撾整曆曉暹曄曇暸樽樸樺橙橫橘樹橄橢橡橋橇樵機橈歙歷氅������濂澱澡濃澤濁澧澳激澹澶澦澠澴熾燉燐燒燈燕熹燎燙燜燃燄������������������獨璜璣璘璟璞瓢甌甍瘴瘸瘺盧盥瞠瞞瞟瞥磨磚磬磧禦積穎穆穌穋窺篙簑築篤篛篡篩篦糕糖縊縑縈縛縣縞縝縉縐罹羲翰翱翮耨膳膩膨臻興艘艙蕊蕙蕈蕨蕩蕃蕉蕭蕪蕞螃螟螞螢融衡褪褲褥褫褡親覦諦諺諫諱謀諜諧諮諾謁謂諷諭諳�諶諼豫豭貓賴蹄踱踴蹂踹踵輻���".split(""); +for(j = 0; j != D[168].length; ++j) if(D[168][j].charCodeAt(0) !== 0xFFFD) { e[D[168][j]] = 43008 + j; d[43008 + j] = D[168][j];} +D[169] = "������������������������������������������������輯輸輳辨辦遵遴選遲遼�������遺鄴醒錠錶鋸錳錯錢鋼錫錄錚錐錦錡錕錮錙閻隧隨險雕霎霑������霖霍霓霏靛靜靦鞘頰頸頻頷頭頹頤餐館餞餛餡餚駭駢駱骸骼������������������髻髭鬨鮑鴕鴣鴦鴨鴒鴛默黔龍龜優償儡儲勵嚎嚀嚐嚅嚇嚏壕壓壑壎嬰嬪嬤孺尷屨嶼嶺嶽嶸幫彌徽應懂懇懦懋戲戴擎擊擘擠擰擦擬擱擢擭斂斃曙曖檀檔檄檢檜櫛檣橾檗檐檠歜殮毚氈濘濱濟濠濛濤濫濯澀濬濡濩濕濮濰燧營燮燦燥�燭燬燴燠爵牆獰獲璩環璦璨癆���".split(""); +for(j = 0; j != D[169].length; ++j) if(D[169][j].charCodeAt(0) !== 0xFFFD) { e[D[169][j]] = 43264 + j; d[43264 + j] = D[169][j];} +D[170] = "������������������������������������������������療癌盪瞳瞪瞰瞬瞧瞭矯�������磷磺磴磯礁禧禪穗窿簇簍篾篷簌篠糠糜糞糢糟糙糝縮績繆縷������縲繃縫總縱繅繁縴縹繈縵縿縯罄翳翼聱聲聰聯聳臆臃膺臂臀������������������膿膽臉膾臨舉艱薪薄蕾薜薑薔薯薛薇薨薊虧蟀蟑螳蟒蟆螫螻螺蟈蟋褻褶襄褸褽覬謎謗謙講謊謠謝謄謐豁谿豳賺賽購賸賻趨蹉蹋蹈蹊轄輾轂轅輿避遽還邁邂邀鄹醣醞醜鍍鎂錨鍵鍊鍥鍋錘鍾鍬鍛鍰鍚鍔闊闋闌闈闆隱隸雖霜霞鞠韓�顆颶餵騁駿鮮鮫鮪鮭鴻鴿麋黏���".split(""); +for(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];} +D[171] = "������������������������������������������������點黜黝黛鼾齋叢嚕嚮壙�������壘嬸彝懣戳擴擲擾攆擺擻擷斷曜朦檳檬櫃檻檸櫂檮檯歟歸殯������瀉瀋濾瀆濺瀑瀏燻燼燾燸獷獵璧璿甕癖癘癒瞽瞿瞻瞼礎禮穡������������������穢穠竄竅簫簧簪簞簣簡糧織繕繞繚繡繒繙罈翹翻職聶臍臏舊藏薩藍藐藉薰薺薹薦蟯蟬蟲蟠覆覲觴謨謹謬謫豐贅蹙蹣蹦蹤蹟蹕軀轉轍邇邃邈醫醬釐鎔鎊鎖鎢鎳鎮鎬鎰鎘鎚鎗闔闖闐闕離雜雙雛雞霤鞣鞦鞭韹額顏題顎顓颺餾餿餽餮�馥騎髁鬃鬆魏魎魍鯊鯉鯽鯈鯀���".split(""); +for(j = 0; j != D[171].length; ++j) if(D[171][j].charCodeAt(0) !== 0xFFFD) { e[D[171][j]] = 43776 + j; d[43776 + j] = D[171][j];} +D[172] = "������������������������������������������������鵑鵝鵠黠鼕鼬儳嚥壞壟�������壢寵龐廬懲懷懶懵攀攏曠曝櫥櫝櫚櫓瀛瀟瀨瀚瀝瀕瀘爆爍牘������犢獸獺璽瓊瓣疇疆癟癡矇礙禱穫穩簾簿簸簽簷籀繫繭繹繩繪������������������羅繳羶羹羸臘藩藝藪藕藤藥藷蟻蠅蠍蟹蟾襠襟襖襞譁譜識證譚譎譏譆譙贈贊蹼蹲躇蹶蹬蹺蹴轔轎辭邊邋醱醮鏡鏑鏟鏃鏈鏜鏝鏖鏢鏍鏘鏤鏗鏨關隴難霪霧靡韜韻類願顛颼饅饉騖騙鬍鯨鯧鯖鯛鶉鵡鵲鵪鵬麒麗麓麴勸嚨嚷嚶嚴嚼壤�孀孃孽寶巉懸懺攘攔攙曦朧櫬���".split(""); +for(j = 0; j != D[172].length; ++j) if(D[172][j].charCodeAt(0) !== 0xFFFD) { e[D[172][j]] = 44032 + j; d[44032 + j] = D[172][j];} +D[173] = "������������������������������������������������瀾瀰瀲爐獻瓏癢癥礦礪�������礬礫竇競籌籃籍糯糰辮繽繼纂罌耀臚艦藻藹蘑藺蘆蘋蘇蘊蠔������蠕襤覺觸議譬警譯譟譫贏贍躉躁躅躂醴釋鐘鐃鏽闡霰飄饒饑������������������馨騫騰騷騵鰓鰍鹹麵黨鼯齟齣齡儷儸囁囀囂夔屬巍懼懾攝攜斕曩櫻欄櫺殲灌爛犧瓖瓔癩矓籐纏續羼蘗蘭蘚蠣蠢蠡蠟襪襬覽譴護譽贓躊躍躋轟辯醺鐮鐳鐵鐺鐸鐲鐫闢霸霹露響顧顥饗驅驃驀騾髏魔魑鰭鰥鶯鶴鷂鶸麝黯鼙齜齦齧儼�儻囈囊囉孿巔巒彎懿攤權歡灑���".split(""); +for(j = 0; j != D[173].length; ++j) if(D[173][j].charCodeAt(0) !== 0xFFFD) { e[D[173][j]] = 44288 + j; d[44288 + j] = D[173][j];} +D[174] = "������������������������������������������������灘玀瓤疊癮癬禳籠籟聾�������聽臟襲襯觼讀贖贗躑躓轡酈鑄鑑鑒霽霾韃韁顫饕驕驍髒鬚鱉������鰱鰾鰻鷓鷗鼴齬齪龔囌巖戀攣攫攪曬欐瓚竊籤籣籥纓纖纔臢������������������蘸蘿蠱變邐邏鑣鑠鑤靨顯饜驚驛驗髓體髑鱔鱗鱖鷥麟黴囑壩攬灞癱癲矗罐羈蠶蠹衢讓讒讖艷贛釀鑪靂靈靄韆顰驟鬢魘鱟鷹鷺鹼鹽鼇齷齲廳欖灣籬籮蠻觀躡釁鑲鑰顱饞髖鬣黌灤矚讚鑷韉驢驥纜讜躪釅鑽鑾鑼鱷鱸黷豔鑿鸚爨驪鬱�鸛鸞籲乂乜凵匚厂万丌乇亍囗���".split(""); +for(j = 0; j != D[174].length; ++j) if(D[174][j].charCodeAt(0) !== 0xFFFD) { e[D[174][j]] = 44544 + j; d[44544 + j] = D[174][j];} +D[175] = "������������������������������������������������兀屮彳丏冇与丮亓仂仉�������仈冘勼卬厹圠夃夬尐巿旡殳毌气爿丱丼仨仜仩仡仝仚刌匜卌������圢圣夗夯宁宄尒尻屴屳帄庀庂忉戉扐氕氶汃氿氻犮犰玊禸肊������������������阞伎优伬仵伔仱伀价伈伝伂伅伢伓伄仴伒冱刓刉刐劦匢匟卍厊吇囡囟圮圪圴夼妀奼妅奻奾奷奿孖尕尥屼屺屻屾巟幵庄异弚彴忕忔忏扜扞扤扡扦扢扙扠扚扥旯旮朾朹朸朻机朿朼朳氘汆汒汜汏汊汔汋汌灱牞犴犵玎甪癿穵网艸艼芀�艽艿虍襾邙邗邘邛邔阢阤阠阣���".split(""); +for(j = 0; j != D[175].length; ++j) if(D[175][j].charCodeAt(0) !== 0xFFFD) { e[D[175][j]] = 44800 + j; d[44800 + j] = D[175][j];} +D[176] = "������������������������������������������������佖伻佢佉体佤伾佧佒佟�������佁佘伭伳伿佡冏冹刜刞刡劭劮匉卣卲厎厏吰吷吪呔呅吙吜吥������吘吽呏呁吨吤呇囮囧囥坁坅坌坉坋坒夆奀妦妘妠妗妎妢妐妏������������������妧妡宎宒尨尪岍岏岈岋岉岒岊岆岓岕巠帊帎庋庉庌庈庍弅弝彸彶忒忑忐忭忨忮忳忡忤忣忺忯忷忻怀忴戺抃抌抎抏抔抇扱扻扺扰抁抈扷扽扲扴攷旰旴旳旲旵杅杇杙杕杌杈杝杍杚杋毐氙氚汸汧汫沄沋沏汱汯汩沚汭沇沕沜汦汳汥汻�沎灴灺牣犿犽狃狆狁犺狅玕玗���".split(""); +for(j = 0; j != D[176].length; ++j) if(D[176][j].charCodeAt(0) !== 0xFFFD) { e[D[176][j]] = 45056 + j; d[45056 + j] = D[176][j];} +D[177] = "������������������������������������������������玓玔玒町甹疔疕皁礽耴�������肕肙肐肒肜芐芏芅芎芑芓芊芃芄豸迉辿邟邡邥邞邧邠阰阨阯������阭丳侘佼侅佽侀侇佶佴侉侄佷佌侗佪侚佹侁佸侐侜侔侞侒侂������������������侕佫佮冞冼冾刵刲刳剆刱劼匊匋匼厒厔咇呿咁咑咂咈呫呺呾呥呬呴呦咍呯呡呠咘呣呧呤囷囹坯坲坭坫坱坰坶垀坵坻坳坴坢坨坽夌奅妵妺姏姎妲姌姁妶妼姃姖妱妽姀姈妴姇孢孥宓宕屄屇岮岤岠岵岯岨岬岟岣岭岢岪岧岝岥岶岰岦�帗帔帙弨弢弣弤彔徂彾彽忞忥���".split(""); +for(j = 0; j != D[177].length; ++j) if(D[177][j].charCodeAt(0) !== 0xFFFD) { e[D[177][j]] = 45312 + j; d[45312 + j] = D[177][j];} +D[178] = "������������������������������������������������怭怦怙怲怋怴怊怗怳怚�������怞怬怢怍怐怮怓怑怌怉怜戔戽抭抴拑抾抪抶拊抮抳抯抻抩抰������抸攽斨斻昉旼昄昒昈旻昃昋昍昅旽昑昐曶朊枅杬枎枒杶杻枘������������������枆构杴枍枌杺枟枑枙枃杽极杸杹枔欥殀歾毞氝沓泬泫泮泙沶泔沭泧沷泐泂沺泃泆泭泲泒泝沴沊沝沀泞泀洰泍泇沰泹泏泩泑炔炘炅炓炆炄炑炖炂炚炃牪狖狋狘狉狜狒狔狚狌狑玤玡玭玦玢玠玬玝瓝瓨甿畀甾疌疘皯盳盱盰盵矸矼矹�矻矺矷祂礿秅穸穻竻籵糽耵肏���".split(""); +for(j = 0; j != D[178].length; ++j) if(D[178][j].charCodeAt(0) !== 0xFFFD) { e[D[178][j]] = 45568 + j; d[45568 + j] = D[178][j];} +D[179] = "������������������������������������������������肮肣肸肵肭舠芠苀芫芚�������芘芛芵芧芮芼芞芺芴芨芡芩苂芤苃芶芢虰虯虭虮豖迒迋迓迍������迖迕迗邲邴邯邳邰阹阽阼阺陃俍俅俓侲俉俋俁俔俜俙侻侳俛������������������俇俖侺俀侹俬剄剉勀勂匽卼厗厖厙厘咺咡咭咥哏哃茍咷咮哖咶哅哆咠呰咼咢咾呲哞咰垵垞垟垤垌垗垝垛垔垘垏垙垥垚垕壴复奓姡姞姮娀姱姝姺姽姼姶姤姲姷姛姩姳姵姠姾姴姭宨屌峐峘峌峗峋峛峞峚峉峇峊峖峓峔峏峈峆峎峟峸�巹帡帢帣帠帤庰庤庢庛庣庥弇���".split(""); +for(j = 0; j != D[179].length; ++j) if(D[179][j].charCodeAt(0) !== 0xFFFD) { e[D[179][j]] = 45824 + j; d[45824 + j] = D[179][j];} +D[180] = "������������������������������������������������弮彖徆怷怹恔恲恞恅恓�������恇恉恛恌恀恂恟怤恄恘恦恮扂扃拏挍挋拵挎挃拫拹挏挌拸拶������挀挓挔拺挕拻拰敁敃斪斿昶昡昲昵昜昦昢昳昫昺昝昴昹昮朏������������������朐柁柲柈枺柜枻柸柘柀枷柅柫柤柟枵柍枳柷柶柮柣柂枹柎柧柰枲柼柆柭柌枮柦柛柺柉柊柃柪柋欨殂殄殶毖毘毠氠氡洨洴洭洟洼洿洒洊泚洳洄洙洺洚洑洀洝浂洁洘洷洃洏浀洇洠洬洈洢洉洐炷炟炾炱炰炡炴炵炩牁牉牊牬牰牳牮狊�狤狨狫狟狪狦狣玅珌珂珈珅玹���".split(""); +for(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];} +D[181] = "������������������������������������������������玶玵玴珫玿珇玾珃珆玸�������珋瓬瓮甮畇畈疧疪癹盄眈眃眄眅眊盷盻盺矧矨砆砑砒砅砐砏������砎砉砃砓祊祌祋祅祄秕种秏秖秎窀穾竑笀笁籺籸籹籿粀粁紃������������������紈紁罘羑羍羾耇耎耏耔耷胘胇胠胑胈胂胐胅胣胙胜胊胕胉胏胗胦胍臿舡芔苙苾苹茇苨茀苕茺苫苖苴苬苡苲苵茌苻苶苰苪苤苠苺苳苭虷虴虼虳衁衎衧衪衩觓訄訇赲迣迡迮迠郱邽邿郕郅邾郇郋郈釔釓陔陏陑陓陊陎倞倅倇倓倢倰倛�俵俴倳倷倬俶俷倗倜倠倧倵倯���".split(""); +for(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];} +D[182] = "������������������������������������������������倱倎党冔冓凊凄凅凈凎�������剡剚剒剞剟剕剢勍匎厞唦哢唗唒哧哳哤唚哿唄唈哫唑唅哱唊������哻哷哸哠唎唃唋圁圂埌堲埕埒垺埆垽垼垸垶垿埇埐垹埁夎奊������������������娙娖娭娮娕娏娗娊娞娳孬宧宭宬尃屖屔峬峿峮峱峷崀峹帩帨庨庮庪庬弳弰彧恝恚恧恁悢悈悀悒悁悝悃悕悛悗悇悜悎戙扆拲挐捖挬捄捅挶捃揤挹捋捊挼挩捁挴捘捔捙挭捇挳捚捑挸捗捀捈敊敆旆旃旄旂晊晟晇晑朒朓栟栚桉栲栳栻�桋桏栖栱栜栵栫栭栯桎桄栴栝���".split(""); +for(j = 0; j != D[182].length; ++j) if(D[182][j].charCodeAt(0) !== 0xFFFD) { e[D[182][j]] = 46592 + j; d[46592 + j] = D[182][j];} +D[183] = "������������������������������������������������栒栔栦栨栮桍栺栥栠欬�������欯欭欱欴歭肂殈毦毤毨毣毢毧氥浺浣浤浶洍浡涒浘浢浭浯涑������涍淯浿涆浞浧浠涗浰浼浟涂涘洯浨涋浾涀涄洖涃浻浽浵涐烜������������������烓烑烝烋缹烢烗烒烞烠烔烍烅烆烇烚烎烡牂牸牷牶猀狺狴狾狶狳狻猁珓珙珥珖玼珧珣珩珜珒珛珔珝珚珗珘珨瓞瓟瓴瓵甡畛畟疰痁疻痄痀疿疶疺皊盉眝眛眐眓眒眣眑眕眙眚眢眧砣砬砢砵砯砨砮砫砡砩砳砪砱祔祛祏祜祓祒祑秫秬�秠秮秭秪秜秞秝窆窉窅窋窌窊���".split(""); +for(j = 0; j != D[183].length; ++j) if(D[183][j].charCodeAt(0) !== 0xFFFD) { e[D[183][j]] = 46848 + j; d[46848 + j] = D[183][j];} +D[184] = "������������������������������������������������窇竘笐笄笓笅笏笈笊笎�������笉笒粄粑粊粌粈粍粅紞紝紑紎紘紖紓紟紒紏紌罜罡罞罠罝罛������羖羒翃翂翀耖耾耹胺胲胹胵脁胻脀舁舯舥茳茭荄茙荑茥荖茿������������������荁茦茜茢荂荎茛茪茈茼荍茖茤茠茷茯茩荇荅荌荓茞茬荋茧荈虓虒蚢蚨蚖蚍蚑蚞蚇蚗蚆蚋蚚蚅蚥蚙蚡蚧蚕蚘蚎蚝蚐蚔衃衄衭衵衶衲袀衱衿衯袃衾衴衼訒豇豗豻貤貣赶赸趵趷趶軑軓迾迵适迿迻逄迼迶郖郠郙郚郣郟郥郘郛郗郜郤酐�酎酏釕釢釚陜陟隼飣髟鬯乿偰���".split(""); +for(j = 0; j != D[184].length; ++j) if(D[184][j].charCodeAt(0) !== 0xFFFD) { e[D[184][j]] = 47104 + j; d[47104 + j] = D[184][j];} +D[185] = "������������������������������������������������偪偡偞偠偓偋偝偲偈偍�������偁偛偊偢倕偅偟偩偫偣偤偆偀偮偳偗偑凐剫剭剬剮勖勓匭厜������啵啶唼啍啐唴唪啑啢唶唵唰啒啅唌唲啥啎唹啈唭唻啀啋圊圇������������������埻堔埢埶埜埴堀埭埽堈埸堋埳埏堇埮埣埲埥埬埡堎埼堐埧堁堌埱埩埰堍堄奜婠婘婕婧婞娸娵婭婐婟婥婬婓婤婗婃婝婒婄婛婈媎娾婍娹婌婰婩婇婑婖婂婜孲孮寁寀屙崞崋崝崚崠崌崨崍崦崥崏崰崒崣崟崮帾帴庱庴庹庲庳弶弸徛徖�徟悊悐悆悾悰悺惓惔惏惤惙惝���".split(""); +for(j = 0; j != D[185].length; ++j) if(D[185][j].charCodeAt(0) !== 0xFFFD) { e[D[185][j]] = 47360 + j; d[47360 + j] = D[185][j];} +D[186] = "������������������������������������������������惈悱惛悷惊悿惃惍惀挲�������捥掊掂捽掽掞掭掝掗掫掎捯掇掐据掯捵掜捭掮捼掤挻掟捸掅������掁掑掍捰敓旍晥晡晛晙晜晢朘桹梇梐梜桭桮梮梫楖桯梣梬梩������������������桵桴梲梏桷梒桼桫桲梪梀桱桾梛梖梋梠梉梤桸桻梑梌梊桽欶欳欷欸殑殏殍殎殌氪淀涫涴涳湴涬淩淢涷淶淔渀淈淠淟淖涾淥淜淝淛淴淊涽淭淰涺淕淂淏淉淐淲淓淽淗淍淣涻烺焍烷焗烴焌烰焄烳焐烼烿焆焓焀烸烶焋焂焎牾牻牼牿�猝猗猇猑猘猊猈狿猏猞玈珶珸���".split(""); +for(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];} +D[187] = "������������������������������������������������珵琄琁珽琇琀珺珼珿琌�������琋珴琈畤畣痎痒痏痋痌痑痐皏皉盓眹眯眭眱眲眴眳眽眥眻眵������硈硒硉硍硊硌砦硅硐祤祧祩祪祣祫祡离秺秸秶秷窏窔窐笵筇������������������笴笥笰笢笤笳笘笪笝笱笫笭笯笲笸笚笣粔粘粖粣紵紽紸紶紺絅紬紩絁絇紾紿絊紻紨罣羕羜羝羛翊翋翍翐翑翇翏翉耟耞耛聇聃聈脘脥脙脛脭脟脬脞脡脕脧脝脢舑舸舳舺舴舲艴莐莣莨莍荺荳莤荴莏莁莕莙荵莔莩荽莃莌莝莛莪莋荾�莥莯莈莗莰荿莦莇莮荶莚虙虖���".split(""); +for(j = 0; j != D[187].length; ++j) if(D[187][j].charCodeAt(0) !== 0xFFFD) { e[D[187][j]] = 47872 + j; d[47872 + j] = D[187][j];} +D[188] = "������������������������������������������������蚿蚷蛂蛁蛅蚺蚰蛈蚹蚳�������蚸蛌蚴蚻蚼蛃蚽蚾衒袉袕袨袢袪袚袑袡袟袘袧袙袛袗袤袬袌������袓袎覂觖觙觕訰訧訬訞谹谻豜豝豽貥赽赻赹趼跂趹趿跁軘軞������������������軝軜軗軠軡逤逋逑逜逌逡郯郪郰郴郲郳郔郫郬郩酖酘酚酓酕釬釴釱釳釸釤釹釪釫釷釨釮镺閆閈陼陭陫陱陯隿靪頄飥馗傛傕傔傞傋傣傃傌傎傝偨傜傒傂傇兟凔匒匑厤厧喑喨喥喭啷噅喢喓喈喏喵喁喣喒喤啽喌喦啿喕喡喎圌堩堷堙�堞堧堣堨埵塈堥堜堛堳堿堶堮���".split(""); +for(j = 0; j != D[188].length; ++j) if(D[188][j].charCodeAt(0) !== 0xFFFD) { e[D[188][j]] = 48128 + j; d[48128 + j] = D[188][j];} +D[189] = "������������������������������������������������堹堸堭堬堻奡媯媔媟婺�������媢媞婸媦婼媥媬媕媮娷媄媊媗媃媋媩婻婽媌媜媏媓媝寪寍寋������寔寑寊寎尌尰崷嵃嵫嵁嵋崿崵嵑嵎嵕崳崺嵒崽崱嵙嵂崹嵉崸������������������崼崲崶嵀嵅幄幁彘徦徥徫惉悹惌惢惎惄愔惲愊愖愅惵愓惸惼惾惁愃愘愝愐惿愄愋扊掔掱掰揎揥揨揯揃撝揳揊揠揶揕揲揵摡揟掾揝揜揄揘揓揂揇揌揋揈揰揗揙攲敧敪敤敜敨敥斌斝斞斮旐旒晼晬晻暀晱晹晪晲朁椌棓椄棜椪棬棪棱�椏棖棷棫棤棶椓椐棳棡椇棌椈���".split(""); +for(j = 0; j != D[189].length; ++j) if(D[189][j].charCodeAt(0) !== 0xFFFD) { e[D[189][j]] = 48384 + j; d[48384 + j] = D[189][j];} +D[190] = "������������������������������������������������楰梴椑棯棆椔棸棐棽棼�������棨椋椊椗棎棈棝棞棦棴棑椆棔棩椕椥棇欹欻欿欼殔殗殙殕殽������毰毲毳氰淼湆湇渟湉溈渼渽湅湢渫渿湁湝湳渜渳湋湀湑渻渃������������������渮湞湨湜湡渱渨湠湱湫渹渢渰湓湥渧湸湤湷湕湹湒湦渵渶湚焠焞焯烻焮焱焣焥焢焲焟焨焺焛牋牚犈犉犆犅犋猒猋猰猢猱猳猧猲猭猦猣猵猌琮琬琰琫琖琚琡琭琱琤琣琝琩琠琲瓻甯畯畬痧痚痡痦痝痟痤痗皕皒盚睆睇睄睍睅睊睎睋�睌矞矬硠硤硥硜硭硱硪确硰硩���".split(""); +for(j = 0; j != D[190].length; ++j) if(D[190][j].charCodeAt(0) !== 0xFFFD) { e[D[190][j]] = 48640 + j; d[48640 + j] = D[190][j];} +D[191] = "������������������������������������������������硨硞硢祴祳祲祰稂稊稃�������稌稄窙竦竤筊笻筄筈筌筎筀筘筅粢粞粨粡絘絯絣絓絖絧絪絏������絭絜絫絒絔絩絑絟絎缾缿罥罦羢羠羡翗聑聏聐胾胔腃腊腒腏������������������腇脽腍脺臦臮臷臸臹舄舼舽舿艵茻菏菹萣菀菨萒菧菤菼菶萐菆菈菫菣莿萁菝菥菘菿菡菋菎菖菵菉萉萏菞萑萆菂菳菕菺菇菑菪萓菃菬菮菄菻菗菢萛菛菾蛘蛢蛦蛓蛣蛚蛪蛝蛫蛜蛬蛩蛗蛨蛑衈衖衕袺裗袹袸裀袾袶袼袷袽袲褁裉覕覘�覗觝觚觛詎詍訹詙詀詗詘詄詅���".split(""); +for(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];} +D[192] = "������������������������������������������������詒詈詑詊詌詏豟貁貀貺�������貾貰貹貵趄趀趉跘跓跍跇跖跜跏跕跙跈跗跅軯軷軺軹軦軮軥������軵軧軨軶軫軱軬軴軩逭逴逯鄆鄬鄄郿郼鄈郹郻鄁鄀鄇鄅鄃酡������������������酤酟酢酠鈁鈊鈥鈃鈚鈦鈏鈌鈀鈒釿釽鈆鈄鈧鈂鈜鈤鈙鈗鈅鈖镻閍閌閐隇陾隈隉隃隀雂雈雃雱雰靬靰靮頇颩飫鳦黹亃亄亶傽傿僆傮僄僊傴僈僂傰僁傺傱僋僉傶傸凗剺剸剻剼嗃嗛嗌嗐嗋嗊嗝嗀嗔嗄嗩喿嗒喍嗏嗕嗢嗖嗈嗲嗍嗙嗂圔�塓塨塤塏塍塉塯塕塎塝塙塥塛���".split(""); +for(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];} +D[193] = "������������������������������������������������堽塣塱壼嫇嫄嫋媺媸媱�������媵媰媿嫈媻嫆媷嫀嫊媴媶嫍媹媐寖寘寙尟尳嵱嵣嵊嵥嵲嵬嵞������嵨嵧嵢巰幏幎幊幍幋廅廌廆廋廇彀徯徭惷慉慊愫慅愶愲愮慆������������������愯慏愩慀戠酨戣戥戤揅揱揫搐搒搉搠搤搳摃搟搕搘搹搷搢搣搌搦搰搨摁搵搯搊搚摀搥搧搋揧搛搮搡搎敯斒旓暆暌暕暐暋暊暙暔晸朠楦楟椸楎楢楱椿楅楪椹楂楗楙楺楈楉椵楬椳椽楥棰楸椴楩楀楯楄楶楘楁楴楌椻楋椷楜楏楑椲楒�椯楻椼歆歅歃歂歈歁殛嗀毻毼���".split(""); +for(j = 0; j != D[193].length; ++j) if(D[193][j].charCodeAt(0) !== 0xFFFD) { e[D[193][j]] = 49408 + j; d[49408 + j] = D[193][j];} +D[194] = "������������������������������������������������毹毷毸溛滖滈溏滀溟溓�������溔溠溱溹滆滒溽滁溞滉溷溰滍溦滏溲溾滃滜滘溙溒溎溍溤溡������溿溳滐滊溗溮溣煇煔煒煣煠煁煝煢煲煸煪煡煂煘煃煋煰煟煐������������������煓煄煍煚牏犍犌犑犐犎猼獂猻猺獀獊獉瑄瑊瑋瑒瑑瑗瑀瑏瑐瑎瑂瑆瑍瑔瓡瓿瓾瓽甝畹畷榃痯瘏瘃痷痾痼痹痸瘐痻痶痭痵痽皙皵盝睕睟睠睒睖睚睩睧睔睙睭矠碇碚碔碏碄碕碅碆碡碃硹碙碀碖硻祼禂祽祹稑稘稙稒稗稕稢稓稛稐窣�窢窞竫筦筤筭筴筩筲筥筳筱筰���".split(""); +for(j = 0; j != D[194].length; ++j) if(D[194][j].charCodeAt(0) !== 0xFFFD) { e[D[194][j]] = 49664 + j; d[49664 + j] = D[194][j];} +D[195] = "������������������������������������������������筡筸筶筣粲粴粯綈綆綀�������綍絿綅絺綎絻綃絼綌綔綄絽綒罭罫罧罨罬羦羥羧翛翜耡腤腠������腷腜腩腛腢腲朡腞腶腧腯腄腡舝艉艄艀艂艅蓱萿葖葶葹蒏蒍������������������葥葑葀蒆葧萰葍葽葚葙葴葳葝蔇葞萷萺萴葺葃葸萲葅萩菙葋萯葂萭葟葰萹葎葌葒葯蓅蒎萻葇萶萳葨葾葄萫葠葔葮葐蜋蜄蛷蜌蛺蛖蛵蝍蛸蜎蜉蜁蛶蜍蜅裖裋裍裎裞裛裚裌裐覅覛觟觥觤觡觠觢觜触詶誆詿詡訿詷誂誄詵誃誁詴詺谼�豋豊豥豤豦貆貄貅賌赨赩趑趌���".split(""); +for(j = 0; j != D[195].length; ++j) if(D[195][j].charCodeAt(0) !== 0xFFFD) { e[D[195][j]] = 49920 + j; d[49920 + j] = D[195][j];} +D[196] = "������������������������������������������������趎趏趍趓趔趐趒跰跠跬�������跱跮跐跩跣跢跧跲跫跴輆軿輁輀輅輇輈輂輋遒逿遄遉逽鄐鄍������鄏鄑鄖鄔鄋鄎酮酯鉈鉒鈰鈺鉦鈳鉥鉞銃鈮鉊鉆鉭鉬鉏鉠鉧鉯������������������鈶鉡鉰鈱鉔鉣鉐鉲鉎鉓鉌鉖鈲閟閜閞閛隒隓隑隗雎雺雽雸雵靳靷靸靲頏頍頎颬飶飹馯馲馰馵骭骫魛鳪鳭鳧麀黽僦僔僗僨僳僛僪僝僤僓僬僰僯僣僠凘劀劁勩勫匰厬嘧嘕嘌嘒嗼嘏嘜嘁嘓嘂嗺嘝嘄嗿嗹墉塼墐墘墆墁塿塴墋塺墇墑墎�塶墂墈塻墔墏壾奫嫜嫮嫥嫕嫪���".split(""); +for(j = 0; j != D[196].length; ++j) if(D[196][j].charCodeAt(0) !== 0xFFFD) { e[D[196][j]] = 50176 + j; d[50176 + j] = D[196][j];} +D[197] = "������������������������������������������������嫚嫭嫫嫳嫢嫠嫛嫬嫞嫝�������嫙嫨嫟孷寠寣屣嶂嶀嵽嶆嵺嶁嵷嶊嶉嶈嵾嵼嶍嵹嵿幘幙幓廘������廑廗廎廜廕廙廒廔彄彃彯徶愬愨慁慞慱慳慒慓慲慬憀慴慔慺������������������慛慥愻慪慡慖戩戧戫搫摍摛摝摴摶摲摳摽摵摦撦摎撂摞摜摋摓摠摐摿搿摬摫摙摥摷敳斠暡暠暟朅朄朢榱榶槉榠槎榖榰榬榼榑榙榎榧榍榩榾榯榿槄榽榤槔榹槊榚槏榳榓榪榡榞槙榗榐槂榵榥槆歊歍歋殞殟殠毃毄毾滎滵滱漃漥滸漷�滻漮漉潎漙漚漧漘漻漒滭漊漶���".split(""); +for(j = 0; j != D[197].length; ++j) if(D[197][j].charCodeAt(0) !== 0xFFFD) { e[D[197][j]] = 50432 + j; d[50432 + j] = D[197][j];} +D[198] = "������������������������������������������������潳滹滮漭潀漰漼漵滫漇�������漎潃漅滽滶漹漜滼漺漟漍漞漈漡熇熐熉熀熅熂熏煻熆熁熗牄������牓犗犕犓獃獍獑獌瑢瑳瑱瑵瑲瑧瑮甀甂甃畽疐瘖瘈瘌瘕瘑瘊������������������瘔皸瞁睼瞅瞂睮瞀睯睾瞃碲碪碴碭碨硾碫碞碥碠碬碢碤禘禊禋禖禕禔禓禗禈禒禐稫穊稰稯稨稦窨窫窬竮箈箜箊箑箐箖箍箌箛箎箅箘劄箙箤箂粻粿粼粺綧綷緂綣綪緁緀緅綝緎緄緆緋緌綯綹綖綼綟綦綮綩綡緉罳翢翣翥翞耤聝聜膉�膆膃膇膍膌膋舕蒗蒤蒡蒟蒺蓎���".split(""); +for(j = 0; j != D[198].length; ++j) if(D[198][j].charCodeAt(0) !== 0xFFFD) { e[D[198][j]] = 50688 + j; d[50688 + j] = D[198][j];} +D[199] = "������������������������������������������������蓂蒬蒮蒫蒹蒴蓁蓍蒪蒚�������蒱蓐蒝蒧蒻蒢蒔蓇蓌蒛蒩蒯蒨蓖蒘蒶蓏蒠蓗蓔蓒蓛蒰蒑虡蜳������蜣蜨蝫蝀蜮蜞蜡蜙蜛蝃蜬蝁蜾蝆蜠蜲蜪蜭蜼蜒蜺蜱蜵蝂蜦蜧������������������蜸蜤蜚蜰蜑裷裧裱裲裺裾裮裼裶裻裰裬裫覝覡覟覞觩觫觨誫誙誋誒誏誖谽豨豩賕賏賗趖踉踂跿踍跽踊踃踇踆踅跾踀踄輐輑輎輍鄣鄜鄠鄢鄟鄝鄚鄤鄡鄛酺酲酹酳銥銤鉶銛鉺銠銔銪銍銦銚銫鉹銗鉿銣鋮銎銂銕銢鉽銈銡銊銆銌銙銧�鉾銇銩銝銋鈭隞隡雿靘靽靺靾���".split(""); +for(j = 0; j != D[199].length; ++j) if(D[199][j].charCodeAt(0) !== 0xFFFD) { e[D[199][j]] = 50944 + j; d[50944 + j] = D[199][j];} +D[200] = "������������������������������������������������鞃鞀鞂靻鞄鞁靿韎韍頖�������颭颮餂餀餇馝馜駃馹馻馺駂馽駇骱髣髧鬾鬿魠魡魟鳱鳲鳵麧������僿儃儰僸儆儇僶僾儋儌僽儊劋劌勱勯噈噂噌嘵噁噊噉噆噘噚������������������噀嘳嘽嘬嘾嘸嘪嘺圚墫墝墱墠墣墯墬墥墡壿嫿嫴嫽嫷嫶嬃嫸嬂嫹嬁嬇嬅嬏屧嶙嶗嶟嶒嶢嶓嶕嶠嶜嶡嶚嶞幩幝幠幜緳廛廞廡彉徲憋憃慹憱憰憢憉憛憓憯憭憟憒憪憡憍慦憳戭摮摰撖撠撅撗撜撏撋撊撌撣撟摨撱撘敶敺敹敻斲斳暵暰�暩暲暷暪暯樀樆樗槥槸樕槱槤���".split(""); +for(j = 0; j != D[200].length; ++j) if(D[200][j].charCodeAt(0) !== 0xFFFD) { e[D[200][j]] = 51200 + j; d[51200 + j] = D[200][j];} +D[201] = "������������������������������������������������樠槿槬槢樛樝槾樧槲槮�������樔槷槧橀樈槦槻樍槼槫樉樄樘樥樏槶樦樇槴樖歑殥殣殢殦氁������氀毿氂潁漦潾澇濆澒澍澉澌潢潏澅潚澖潶潬澂潕潲潒潐潗澔������������������澓潝漀潡潫潽潧澐潓澋潩潿澕潣潷潪潻熲熯熛熰熠熚熩熵熝熥熞熤熡熪熜熧熳犘犚獘獒獞獟獠獝獛獡獚獙獢璇璉璊璆璁瑽璅璈瑼瑹甈甇畾瘥瘞瘙瘝瘜瘣瘚瘨瘛皜皝皞皛瞍瞏瞉瞈磍碻磏磌磑磎磔磈磃磄磉禚禡禠禜禢禛歶稹窲窴�窳箷篋箾箬篎箯箹篊箵糅糈糌���".split(""); +for(j = 0; j != D[201].length; ++j) if(D[201][j].charCodeAt(0) !== 0xFFFD) { e[D[201][j]] = 51456 + j; d[51456 + j] = D[201][j];} +D[202] = "������������������������������������������������糋緷緛緪緧緗緡縃緺緦�������緶緱緰緮緟罶羬羰羭翭翫翪翬翦翨聤聧膣膟膞膕膢膙膗舖艏������艓艒艐艎艑蔤蔻蔏蔀蔩蔎蔉蔍蔟蔊蔧蔜蓻蔫蓺蔈蔌蓴蔪蓲蔕������������������蓷蓫蓳蓼蔒蓪蓩蔖蓾蔨蔝蔮蔂蓽蔞蓶蔱蔦蓧蓨蓰蓯蓹蔘蔠蔰蔋蔙蔯虢蝖蝣蝤蝷蟡蝳蝘蝔蝛蝒蝡蝚蝑蝞蝭蝪蝐蝎蝟蝝蝯蝬蝺蝮蝜蝥蝏蝻蝵蝢蝧蝩衚褅褌褔褋褗褘褙褆褖褑褎褉覢覤覣觭觰觬諏諆誸諓諑諔諕誻諗誾諀諅諘諃誺誽諙�谾豍貏賥賟賙賨賚賝賧趠趜趡���".split(""); +for(j = 0; j != D[202].length; ++j) if(D[202][j].charCodeAt(0) !== 0xFFFD) { e[D[202][j]] = 51712 + j; d[51712 + j] = D[202][j];} +D[203] = "������������������������������������������������趛踠踣踥踤踮踕踛踖踑�������踙踦踧踔踒踘踓踜踗踚輬輤輘輚輠輣輖輗遳遰遯遧遫鄯鄫鄩������鄪鄲鄦鄮醅醆醊醁醂醄醀鋐鋃鋄鋀鋙銶鋏鋱鋟鋘鋩鋗鋝鋌鋯������������������鋂鋨鋊鋈鋎鋦鋍鋕鋉鋠鋞鋧鋑鋓銵鋡鋆銴镼閬閫閮閰隤隢雓霅霈霂靚鞊鞎鞈韐韏頞頝頦頩頨頠頛頧颲餈飺餑餔餖餗餕駜駍駏駓駔駎駉駖駘駋駗駌骳髬髫髳髲髱魆魃魧魴魱魦魶魵魰魨魤魬鳼鳺鳽鳿鳷鴇鴀鳹鳻鴈鴅鴄麃黓鼏鼐儜�儓儗儚儑凞匴叡噰噠噮噳噦噣���".split(""); +for(j = 0; j != D[203].length; ++j) if(D[203][j].charCodeAt(0) !== 0xFFFD) { e[D[203][j]] = 51968 + j; d[51968 + j] = D[203][j];} +D[204] = "������������������������������������������������噭噲噞噷圜圛壈墽壉墿�������墺壂墼壆嬗嬙嬛嬡嬔嬓嬐嬖嬨嬚嬠嬞寯嶬嶱嶩嶧嶵嶰嶮嶪嶨������嶲嶭嶯嶴幧幨幦幯廩廧廦廨廥彋徼憝憨憖懅憴懆懁懌憺憿憸������������������憌擗擖擐擏擉撽撉擃擛擳擙攳敿敼斢曈暾曀曊曋曏暽暻暺曌朣樴橦橉橧樲橨樾橝橭橶橛橑樨橚樻樿橁橪橤橐橏橔橯橩橠樼橞橖橕橍橎橆歕歔歖殧殪殫毈毇氄氃氆澭濋澣濇澼濎濈潞濄澽澞濊澨瀄澥澮澺澬澪濏澿澸澢濉澫濍澯澲�澰燅燂熿熸燖燀燁燋燔燊燇燏���".split(""); +for(j = 0; j != D[204].length; ++j) if(D[204][j].charCodeAt(0) !== 0xFFFD) { e[D[204][j]] = 52224 + j; d[52224 + j] = D[204][j];} +D[205] = "������������������������������������������������熽燘熼燆燚燛犝犞獩獦�������獧獬獥獫獪瑿璚璠璔璒璕璡甋疀瘯瘭瘱瘽瘳瘼瘵瘲瘰皻盦瞚������瞝瞡瞜瞛瞢瞣瞕瞙瞗磝磩磥磪磞磣磛磡磢磭磟磠禤穄穈穇窶������������������窸窵窱窷篞篣篧篝篕篥篚篨篹篔篪篢篜篫篘篟糒糔糗糐糑縒縡縗縌縟縠縓縎縜縕縚縢縋縏縖縍縔縥縤罃罻罼罺羱翯耪耩聬膱膦膮膹膵膫膰膬膴膲膷膧臲艕艖艗蕖蕅蕫蕍蕓蕡蕘蕀蕆蕤蕁蕢蕄蕑蕇蕣蔾蕛蕱蕎蕮蕵蕕蕧蕠薌蕦蕝蕔�蕥蕬虣虥虤螛螏螗螓螒螈螁螖���".split(""); +for(j = 0; j != D[205].length; ++j) if(D[205][j].charCodeAt(0) !== 0xFFFD) { e[D[205][j]] = 52480 + j; d[52480 + j] = D[205][j];} +D[206] = "������������������������������������������������螘蝹螇螣螅螐螑螝螄螔�������螜螚螉褞褦褰褭褮褧褱褢褩褣褯褬褟觱諠諢諲諴諵諝謔諤諟������諰諈諞諡諨諿諯諻貑貒貐賵賮賱賰賳赬赮趥趧踳踾踸蹀蹅踶������������������踼踽蹁踰踿躽輶輮輵輲輹輷輴遶遹遻邆郺鄳鄵鄶醓醐醑醍醏錧錞錈錟錆錏鍺錸錼錛錣錒錁鍆錭錎錍鋋錝鋺錥錓鋹鋷錴錂錤鋿錩錹錵錪錔錌錋鋾錉錀鋻錖閼闍閾閹閺閶閿閵閽隩雔霋霒霐鞙鞗鞔韰韸頵頯頲餤餟餧餩馞駮駬駥駤駰�駣駪駩駧骹骿骴骻髶髺髹髷鬳���".split(""); +for(j = 0; j != D[206].length; ++j) if(D[206][j].charCodeAt(0) !== 0xFFFD) { e[D[206][j]] = 52736 + j; d[52736 + j] = D[206][j];} +D[207] = "������������������������������������������������鮀鮅鮇魼魾魻鮂鮓鮒鮐�������魺鮕魽鮈鴥鴗鴠鴞鴔鴩鴝鴘鴢鴐鴙鴟麈麆麇麮麭黕黖黺鼒鼽������儦儥儢儤儠儩勴嚓嚌嚍嚆嚄嚃噾嚂噿嚁壖壔壏壒嬭嬥嬲嬣嬬������������������嬧嬦嬯嬮孻寱寲嶷幬幪徾徻懃憵憼懧懠懥懤懨懞擯擩擣擫擤擨斁斀斶旚曒檍檖檁檥檉檟檛檡檞檇檓檎檕檃檨檤檑橿檦檚檅檌檒歛殭氉濌澩濴濔濣濜濭濧濦濞濲濝濢濨燡燱燨燲燤燰燢獳獮獯璗璲璫璐璪璭璱璥璯甐甑甒甏疄癃癈�癉癇皤盩瞵瞫瞲瞷瞶瞴瞱瞨矰���".split(""); +for(j = 0; j != D[207].length; ++j) if(D[207][j].charCodeAt(0) !== 0xFFFD) { e[D[207][j]] = 52992 + j; d[52992 + j] = D[207][j];} +D[208] = "������������������������������������������������磳磽礂磻磼磲礅磹磾礄�������禫禨穜穛穖穘穔穚窾竀竁簅簏篲簀篿篻簎篴簋篳簂簉簃簁篸������篽簆篰篱簐簊糨縭縼繂縳顈縸縪繉繀繇縩繌縰縻縶繄縺罅罿������������������罾罽翴翲耬膻臄臌臊臅臇膼臩艛艚艜薃薀薏薧薕薠薋薣蕻薤薚薞蕷蕼薉薡蕺蕸蕗薎薖薆薍薙薝薁薢薂薈薅蕹蕶薘薐薟虨螾螪螭蟅螰螬螹螵螼螮蟉蟃蟂蟌螷螯蟄蟊螴螶螿螸螽蟞螲褵褳褼褾襁襒褷襂覭覯覮觲觳謞謘謖謑謅謋謢謏�謒謕謇謍謈謆謜謓謚豏豰豲豱���".split(""); +for(j = 0; j != D[208].length; ++j) if(D[208][j].charCodeAt(0) !== 0xFFFD) { e[D[208][j]] = 53248 + j; d[53248 + j] = D[208][j];} +D[209] = "������������������������������������������������豯貕貔賹赯蹎蹍蹓蹐蹌�������蹇轃轀邅遾鄸醚醢醛醙醟醡醝醠鎡鎃鎯鍤鍖鍇鍼鍘鍜鍶鍉鍐������鍑鍠鍭鎏鍌鍪鍹鍗鍕鍒鍏鍱鍷鍻鍡鍞鍣鍧鎀鍎鍙闇闀闉闃闅������������������閷隮隰隬霠霟霘霝霙鞚鞡鞜鞞鞝韕韔韱顁顄顊顉顅顃餥餫餬餪餳餲餯餭餱餰馘馣馡騂駺駴駷駹駸駶駻駽駾駼騃骾髾髽鬁髼魈鮚鮨鮞鮛鮦鮡鮥鮤鮆鮢鮠鮯鴳鵁鵧鴶鴮鴯鴱鴸鴰鵅鵂鵃鴾鴷鵀鴽翵鴭麊麉麍麰黈黚黻黿鼤鼣鼢齔龠儱�儭儮嚘嚜嚗嚚嚝嚙奰嬼屩屪巀���".split(""); +for(j = 0; j != D[209].length; ++j) if(D[209][j].charCodeAt(0) !== 0xFFFD) { e[D[209][j]] = 53504 + j; d[53504 + j] = D[209][j];} +D[210] = "������������������������������������������������幭幮懘懟懭懮懱懪懰懫�������懖懩擿攄擽擸攁攃擼斔旛曚曛曘櫅檹檽櫡櫆檺檶檷櫇檴檭歞������毉氋瀇瀌瀍瀁瀅瀔瀎濿瀀濻瀦濼濷瀊爁燿燹爃燽獶璸瓀璵瓁������������������璾璶璻瓂甔甓癜癤癙癐癓癗癚皦皽盬矂瞺磿礌礓礔礉礐礒礑禭禬穟簜簩簙簠簟簭簝簦簨簢簥簰繜繐繖繣繘繢繟繑繠繗繓羵羳翷翸聵臑臒臐艟艞薴藆藀藃藂薳薵薽藇藄薿藋藎藈藅薱薶藒蘤薸薷薾虩蟧蟦蟢蟛蟫蟪蟥蟟蟳蟤蟔蟜蟓�蟭蟘蟣螤蟗蟙蠁蟴蟨蟝襓襋襏���".split(""); +for(j = 0; j != D[210].length; ++j) if(D[210][j].charCodeAt(0) !== 0xFFFD) { e[D[210][j]] = 53760 + j; d[53760 + j] = D[210][j];} +D[211] = "������������������������������������������������襌襆襐襑襉謪謧謣謳謰�������謵譇謯謼謾謱謥謷謦謶謮謤謻謽謺豂豵貙貘貗賾贄贂贀蹜蹢������蹠蹗蹖蹞蹥蹧蹛蹚蹡蹝蹩蹔轆轇轈轋鄨鄺鄻鄾醨醥醧醯醪鎵������������������鎌鎒鎷鎛鎝鎉鎧鎎鎪鎞鎦鎕鎈鎙鎟鎍鎱鎑鎲鎤鎨鎴鎣鎥闒闓闑隳雗雚巂雟雘雝霣霢霥鞬鞮鞨鞫鞤鞪鞢鞥韗韙韖韘韺顐顑顒颸饁餼餺騏騋騉騍騄騑騊騅騇騆髀髜鬈鬄鬅鬩鬵魊魌魋鯇鯆鯃鮿鯁鮵鮸鯓鮶鯄鮹鮽鵜鵓鵏鵊鵛鵋鵙鵖鵌�鵗鵒鵔鵟鵘鵚麎麌黟鼁鼀鼖鼥���".split(""); +for(j = 0; j != D[211].length; ++j) if(D[211][j].charCodeAt(0) !== 0xFFFD) { e[D[211][j]] = 54016 + j; d[54016 + j] = D[211][j];} +D[212] = "������������������������������������������������鼫鼪鼩鼨齌齕儴儵劖勷�������厴嚫嚭嚦嚧嚪嚬壚壝壛夒嬽嬾嬿巃幰徿懻攇攐攍攉攌攎斄旞������旝曞櫧櫠櫌櫑櫙櫋櫟櫜櫐櫫櫏櫍櫞歠殰氌瀙瀧瀠瀖瀫瀡瀢瀣������������������瀩瀗瀤瀜瀪爌爊爇爂爅犥犦犤犣犡瓋瓅璷瓃甖癠矉矊矄矱礝礛礡礜礗礞禰穧穨簳簼簹簬簻糬糪繶繵繸繰繷繯繺繲繴繨罋罊羃羆羷翽翾聸臗臕艤艡艣藫藱藭藙藡藨藚藗藬藲藸藘藟藣藜藑藰藦藯藞藢蠀蟺蠃蟶蟷蠉蠌蠋蠆蟼蠈蟿蠊�蠂襢襚襛襗襡襜襘襝襙覈覷覶���".split(""); +for(j = 0; j != D[212].length; ++j) if(D[212][j].charCodeAt(0) !== 0xFFFD) { e[D[212][j]] = 54272 + j; d[54272 + j] = D[212][j];} +D[213] = "������������������������������������������������觶譐譈譊譀譓譖譔譋譕�������譑譂譒譗豃豷豶貚贆贇贉趬趪趭趫蹭蹸蹳蹪蹯蹻軂轒轑轏轐������轓辴酀鄿醰醭鏞鏇鏏鏂鏚鏐鏹鏬鏌鏙鎩鏦鏊鏔鏮鏣鏕鏄鏎鏀������������������鏒鏧镽闚闛雡霩霫霬霨霦鞳鞷鞶韝韞韟顜顙顝顗颿颽颻颾饈饇饃馦馧騚騕騥騝騤騛騢騠騧騣騞騜騔髂鬋鬊鬎鬌鬷鯪鯫鯠鯞鯤鯦鯢鯰鯔鯗鯬鯜鯙鯥鯕鯡鯚鵷鶁鶊鶄鶈鵱鶀鵸鶆鶋鶌鵽鵫鵴鵵鵰鵩鶅鵳鵻鶂鵯鵹鵿鶇鵨麔麑黀黼鼭齀�齁齍齖齗齘匷嚲嚵嚳壣孅巆巇���".split(""); +for(j = 0; j != D[213].length; ++j) if(D[213][j].charCodeAt(0) !== 0xFFFD) { e[D[213][j]] = 54528 + j; d[54528 + j] = D[213][j];} +D[214] = "������������������������������������������������廮廯忀忁懹攗攖攕攓旟�������曨曣曤櫳櫰櫪櫨櫹櫱櫮櫯瀼瀵瀯瀷瀴瀱灂瀸瀿瀺瀹灀瀻瀳灁������爓爔犨獽獼璺皫皪皾盭矌矎矏矍矲礥礣礧礨礤礩禲穮穬穭竷������������������籉籈籊籇籅糮繻繾纁纀羺翿聹臛臙舋艨艩蘢藿蘁藾蘛蘀藶蘄蘉蘅蘌藽蠙蠐蠑蠗蠓蠖襣襦覹觷譠譪譝譨譣譥譧譭趮躆躈躄轙轖轗轕轘轚邍酃酁醷醵醲醳鐋鐓鏻鐠鐏鐔鏾鐕鐐鐨鐙鐍鏵鐀鏷鐇鐎鐖鐒鏺鐉鏸鐊鏿鏼鐌鏶鐑鐆闞闠闟霮�霯鞹鞻韽韾顠顢顣顟飁飂饐饎���".split(""); +for(j = 0; j != D[214].length; ++j) if(D[214][j].charCodeAt(0) !== 0xFFFD) { e[D[214][j]] = 54784 + j; d[54784 + j] = D[214][j];} +D[215] = "������������������������������������������������饙饌饋饓騲騴騱騬騪騶�������騩騮騸騭髇髊髆鬐鬒鬑鰋鰈鯷鰅鰒鯸鱀鰇鰎鰆鰗鰔鰉鶟鶙鶤������鶝鶒鶘鶐鶛鶠鶔鶜鶪鶗鶡鶚鶢鶨鶞鶣鶿鶩鶖鶦鶧麙麛麚黥黤������������������黧黦鼰鼮齛齠齞齝齙龑儺儹劘劗囃嚽嚾孈孇巋巏廱懽攛欂櫼欃櫸欀灃灄灊灈灉灅灆爝爚爙獾甗癪矐礭礱礯籔籓糲纊纇纈纋纆纍罍羻耰臝蘘蘪蘦蘟蘣蘜蘙蘧蘮蘡蘠蘩蘞蘥蠩蠝蠛蠠蠤蠜蠫衊襭襩襮襫觺譹譸譅譺譻贐贔趯躎躌轞轛�轝酆酄酅醹鐿鐻鐶鐩鐽鐼鐰鐹���".split(""); +for(j = 0; j != D[215].length; ++j) if(D[215][j].charCodeAt(0) !== 0xFFFD) { e[D[215][j]] = 55040 + j; d[55040 + j] = D[215][j];} +D[216] = "������������������������������������������������鐪鐷鐬鑀鐱闥闤闣霵霺�������鞿韡顤飉飆飀饘饖騹騽驆驄驂驁騺騿髍鬕鬗鬘鬖鬺魒鰫鰝鰜������鰬鰣鰨鰩鰤鰡鶷鶶鶼鷁鷇鷊鷏鶾鷅鷃鶻鶵鷎鶹鶺鶬鷈鶱鶭鷌������������������鶳鷍鶲鹺麜黫黮黭鼛鼘鼚鼱齎齥齤龒亹囆囅囋奱孋孌巕巑廲攡攠攦攢欋欈欉氍灕灖灗灒爞爟犩獿瓘瓕瓙瓗癭皭礵禴穰穱籗籜籙籛籚糴糱纑罏羇臞艫蘴蘵蘳蘬蘲蘶蠬蠨蠦蠪蠥襱覿覾觻譾讄讂讆讅譿贕躕躔躚躒躐躖躗轠轢酇鑌鑐�鑊鑋鑏鑇鑅鑈鑉鑆霿韣顪顩飋���".split(""); +for(j = 0; j != D[216].length; ++j) if(D[216][j].charCodeAt(0) !== 0xFFFD) { e[D[216][j]] = 55296 + j; d[55296 + j] = D[216][j];} +D[217] = "������������������������������������������������饔饛驎驓驔驌驏驈驊驉�������驒驐髐鬙鬫鬻魖魕鱆鱈鰿鱄鰹鰳鱁鰼鰷鰴鰲鰽鰶鷛鷒鷞鷚鷋������鷐鷜鷑鷟鷩鷙鷘鷖鷵鷕鷝麶黰鼵鼳鼲齂齫龕龢儽劙壨壧奲孍������������������巘蠯彏戁戃戄攩攥斖曫欑欒欏毊灛灚爢玂玁玃癰矔籧籦纕艬蘺虀蘹蘼蘱蘻蘾蠰蠲蠮蠳襶襴襳觾讌讎讋讈豅贙躘轤轣醼鑢鑕鑝鑗鑞韄韅頀驖驙鬞鬟鬠鱒鱘鱐鱊鱍鱋鱕鱙鱌鱎鷻鷷鷯鷣鷫鷸鷤鷶鷡鷮鷦鷲鷰鷢鷬鷴鷳鷨鷭黂黐黲黳鼆�鼜鼸鼷鼶齃齏齱齰齮齯囓囍孎���".split(""); +for(j = 0; j != D[217].length; ++j) if(D[217][j].charCodeAt(0) !== 0xFFFD) { e[D[217][j]] = 55552 + j; d[55552 + j] = D[217][j];} +D[218] = "������������������������������������������������屭攭曭曮欓灟灡灝灠爣�������瓛瓥矕礸禷禶籪纗羉艭虃蠸蠷蠵衋讔讕躞躟躠躝醾醽釂鑫鑨������鑩雥靆靃靇韇韥驞髕魙鱣鱧鱦鱢鱞鱠鸂鷾鸇鸃鸆鸅鸀鸁鸉鷿������������������鷽鸄麠鼞齆齴齵齶囔攮斸欘欙欗欚灢爦犪矘矙礹籩籫糶纚纘纛纙臠臡虆虇虈襹襺襼襻觿讘讙躥躤躣鑮鑭鑯鑱鑳靉顲饟鱨鱮鱭鸋鸍鸐鸏鸒鸑麡黵鼉齇齸齻齺齹圞灦籯蠼趲躦釃鑴鑸鑶鑵驠鱴鱳鱱鱵鸔鸓黶鼊龤灨灥糷虪蠾蠽蠿讞貜�躩軉靋顳顴飌饡馫驤驦驧鬤鸕���".split(""); +for(j = 0; j != D[218].length; ++j) if(D[218][j].charCodeAt(0) !== 0xFFFD) { e[D[218][j]] = 55808 + j; d[55808 + j] = D[218][j];} +D[219] = "������������������������������������������������鸗齈戇欞爧虌躨钂钀钁�������驩驨鬮鸙爩虋讟钃鱹麷癵驫鱺鸝灩灪麤齾齉龘����������������������������".split(""); +for(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];} +D[220] = "�����������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];} +D[221] = "�����������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[221].length; ++j) if(D[221][j].charCodeAt(0) !== 0xFFFD) { e[D[221][j]] = 56576 + j; d[56576 + j] = D[221][j];} +D[222] = "�����������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[222].length; ++j) if(D[222][j].charCodeAt(0) !== 0xFFFD) { e[D[222][j]] = 56832 + j; d[56832 + j] = D[222][j];} +D[223] = "�����������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];} +D[224] = "�����������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];} +D[225] = "�����������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];} +D[226] = "�����������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];} +D[227] = "�����������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];} +D[228] = "�����������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];} +D[229] = "�����������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];} +D[230] = "�����������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];} +D[231] = "�����������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];} +D[232] = "�����������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];} +D[233] = "�����������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[233].length; ++j) if(D[233][j].charCodeAt(0) !== 0xFFFD) { e[D[233][j]] = 59648 + j; d[59648 + j] = D[233][j];} +D[234] = "�����������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];} +D[235] = "�����������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[235].length; ++j) if(D[235][j].charCodeAt(0) !== 0xFFFD) { e[D[235][j]] = 60160 + j; d[60160 + j] = D[235][j];} +D[236] = "�����������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[236].length; ++j) if(D[236][j].charCodeAt(0) !== 0xFFFD) { e[D[236][j]] = 60416 + j; d[60416 + j] = D[236][j];} +D[237] = "�����������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[237].length; ++j) if(D[237][j].charCodeAt(0) !== 0xFFFD) { e[D[237][j]] = 60672 + j; d[60672 + j] = D[237][j];} +D[238] = "�����������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[238].length; ++j) if(D[238][j].charCodeAt(0) !== 0xFFFD) { e[D[238][j]] = 60928 + j; d[60928 + j] = D[238][j];} +D[239] = "�����������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];} +D[240] = "�����������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[240].length; ++j) if(D[240][j].charCodeAt(0) !== 0xFFFD) { e[D[240][j]] = 61440 + j; d[61440 + j] = D[240][j];} +D[241] = "�����������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[241].length; ++j) if(D[241][j].charCodeAt(0) !== 0xFFFD) { e[D[241][j]] = 61696 + j; d[61696 + j] = D[241][j];} +D[242] = "�����������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[242].length; ++j) if(D[242][j].charCodeAt(0) !== 0xFFFD) { e[D[242][j]] = 61952 + j; d[61952 + j] = D[242][j];} +D[243] = "�����������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[243].length; ++j) if(D[243][j].charCodeAt(0) !== 0xFFFD) { e[D[243][j]] = 62208 + j; d[62208 + j] = D[243][j];} +D[244] = "�����������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[244].length; ++j) if(D[244][j].charCodeAt(0) !== 0xFFFD) { e[D[244][j]] = 62464 + j; d[62464 + j] = D[244][j];} +D[245] = "������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[245].length; ++j) if(D[245][j].charCodeAt(0) !== 0xFFFD) { e[D[245][j]] = 62720 + j; d[62720 + j] = D[245][j];} +D[249] = "��������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[249].length; ++j) if(D[249][j].charCodeAt(0) !== 0xFFFD) { e[D[249][j]] = 63744 + j; d[63744 + j] = D[249][j];} +D[250] = "�����������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[250].length; ++j) if(D[250][j].charCodeAt(0) !== 0xFFFD) { e[D[250][j]] = 64000 + j; d[64000 + j] = D[250][j];} +D[251] = "�����������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[251].length; ++j) if(D[251][j].charCodeAt(0) !== 0xFFFD) { e[D[251][j]] = 64256 + j; d[64256 + j] = D[251][j];} +D[252] = "������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[252].length; ++j) if(D[252][j].charCodeAt(0) !== 0xFFFD) { e[D[252][j]] = 64512 + j; d[64512 + j] = D[252][j];} +return {"enc": e, "dec": d }; })(); diff --git a/node_modules/codepage/bits/20105.js b/node_modules/codepage/bits/20105.js new file mode 100644 index 000000000..fb66b5985 --- /dev/null +++ b/node_modules/codepage/bits/20105.js @@ -0,0 +1,2 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[20105] = (function(){ var d = "��\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#¤%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}‾∇��������������������������������������������������������������������������������������������������������������������������������", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); diff --git a/node_modules/codepage/bits/20106.js b/node_modules/codepage/bits/20106.js new file mode 100644 index 000000000..0c2248e56 --- /dev/null +++ b/node_modules/codepage/bits/20106.js @@ -0,0 +1,2 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[20106] = (function(){ var d = "��\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?§ABCDEFGHIJKLMNOPQRSTUVWXYZÄÖÜ^_`abcdefghijklmnopqrstuvwxyzäöüß��������������������������������������������������������������������������������������������������������������������������������", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); diff --git a/node_modules/codepage/bits/20107.js b/node_modules/codepage/bits/20107.js new file mode 100644 index 000000000..09e59f715 --- /dev/null +++ b/node_modules/codepage/bits/20107.js @@ -0,0 +1,2 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[20107] = (function(){ var d = "��\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#¤%&'()*+,-./0123456789:;<=>?ÉABCDEFGHIJKLMNOPQRSTUVWXYZÄÖÅÜ_éabcdefghijklmnopqrstuvwxyzäöåü��������������������������������������������������������������������������������������������������������������������������������", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); diff --git a/node_modules/codepage/bits/20108.js b/node_modules/codepage/bits/20108.js new file mode 100644 index 000000000..41ba1b1fa --- /dev/null +++ b/node_modules/codepage/bits/20108.js @@ -0,0 +1,2 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[20108] = (function(){ var d = "��\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"§$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZÆØÅ^_`abcdefghijklmnopqrstuvwxyzæøå|��������������������������������������������������������������������������������������������������������������������������������", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); diff --git a/node_modules/codepage/bits/20261.js b/node_modules/codepage/bits/20261.js new file mode 100644 index 000000000..9826cdb77 --- /dev/null +++ b/node_modules/codepage/bits/20261.js @@ -0,0 +1,31 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[20261] = (function(){ var d = [], e = {}, D = [], j; +D[0] = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"��%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]_abcdefghijklmnopqrstuvwxyz|€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ¡¢£$¥#§¤«°±²³×µ¶·÷»¼½¾¿���������������ΩÆЪĦIJĿŁØŒºÞŦŊʼnĸæđðħıijŀłøœßþŧŋ".split(""); +for(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];} +D[193] = "��������������������������������`��������������������������������À���È���Ì�����Ò�����Ù�Ẁ�Ỳ�������à���è���ì�����ò�����ù�ẁ�ỳ��������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[193].length; ++j) if(D[193][j].charCodeAt(0) !== 0xFFFD) { e[D[193][j]] = 49408 + j; d[49408 + j] = D[193][j];} +D[194] = "��������������������������������´��������������������������������Á�Ć�É�Ǵ�Í�ḰĹḾŃÓṔ�ŔŚ�Ú�Ẃ�ÝŹ������á�ć�é�ǵ�í�ḱĺḿńóṕ�ŕś�ú�ẃ�ýź�������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[194].length; ++j) if(D[194][j].charCodeAt(0) !== 0xFFFD) { e[D[194][j]] = 49664 + j; d[49664 + j] = D[194][j];} +D[195] = "��������������������������������^��������������������������������Â�Ĉ�Ê�ĜĤÎĴ����Ô���Ŝ�Û�Ŵ�ŶẐ������â�ĉ�ê�ĝĥîĵ����ô���ŝ�û�ŵ�ŷẑ�������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[195].length; ++j) if(D[195][j].charCodeAt(0) !== 0xFFFD) { e[D[195][j]] = 49920 + j; d[49920 + j] = D[195][j];} +D[196] = "��������������������������������~��������������������������������Ã���Ẽ���Ĩ����ÑÕ�����ŨṼ��Ỹ�������ã���ẽ���ĩ����ñõ�����ũṽ��ỹ��������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[196].length; ++j) if(D[196][j].charCodeAt(0) !== 0xFFFD) { e[D[196][j]] = 50176 + j; d[50176 + j] = D[196][j];} +D[197] = "��������������������������������¯��������������������������������Ā���Ē�Ḡ�Ī�����Ō�����Ū�����������ā���ē�ḡ�ī�����ō�����ū�����������������������������������������������������������������������������������������������������������Ǣ���������������ǣ��������������".split(""); +for(j = 0; j != D[197].length; ++j) if(D[197][j].charCodeAt(0) !== 0xFFFD) { e[D[197][j]] = 50432 + j; d[50432 + j] = D[197][j];} +D[198] = "��������������������������������˘��������������������������������Ă���Ĕ�Ğ�Ĭ�����Ŏ�����Ŭ�����������ă���ĕ�ğ�ĭ�����ŏ�����ŭ������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[198].length; ++j) if(D[198][j].charCodeAt(0) !== 0xFFFD) { e[D[198][j]] = 50688 + j; d[50688 + j] = D[198][j];} +D[199] = "��������������������������������˙���������������������������������ḂĊḊĖḞĠḢİ���ṀṄ�Ṗ�ṘṠṪ��ẆẊẎŻ�������ḃċḋėḟġḣ����ṁṅ�ṗ�ṙṡṫ��ẇẋẏż�������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[199].length; ++j) if(D[199][j].charCodeAt(0) !== 0xFFFD) { e[D[199][j]] = 50944 + j; d[50944 + j] = D[199][j];} +D[200] = "��������������������������������¨��������������������������������Ä���Ë��ḦÏ�����Ö�����Ü�ẄẌŸ�������ä���ë��ḧï�����ö����ẗü�ẅẍÿ��������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[200].length; ++j) if(D[200][j].charCodeAt(0) !== 0xFFFD) { e[D[200][j]] = 51200 + j; d[51200 + j] = D[200][j];} +D[202] = "��������������������������������˚��������������������������������Å�������������������Ů�����������å�������������������ů�ẘ�ẙ��������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[202].length; ++j) if(D[202][j].charCodeAt(0) !== 0xFFFD) { e[D[202][j]] = 51712 + j; d[51712 + j] = D[202][j];} +D[203] = "��������������������������������¸����������������������������������ÇḐ��ĢḨ��ĶĻ�Ņ���ŖŞŢ��������������çḑ��ģḩ��ķļ�ņ���ŗşţ�������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[203].length; ++j) if(D[203][j].charCodeAt(0) !== 0xFFFD) { e[D[203][j]] = 51968 + j; d[51968 + j] = D[203][j];} +D[205] = "��������������������������������˝����������������������������������������������Ő�����Ű�������������������������ő�����ű������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[205].length; ++j) if(D[205][j].charCodeAt(0) !== 0xFFFD) { e[D[205][j]] = 52480 + j; d[52480 + j] = D[205][j];} +D[206] = "��������������������������������˛��������������������������������Ą���Ę���Į�����Ǫ�����Ų�����������ą���ę���į�����ǫ�����ų������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[206].length; ++j) if(D[206][j].charCodeAt(0) !== 0xFFFD) { e[D[206][j]] = 52736 + j; d[52736 + j] = D[206][j];} +D[207] = "��������������������������������ˇ��������������������������������Ǎ�ČĎĚ�Ǧ�Ǐ�ǨĽ�ŇǑ��ŘŠŤǓ����Ž������ǎ�čďě�ǧ�ǐǰǩľ�ňǒ��řšťǔ����ž�������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[207].length; ++j) if(D[207][j].charCodeAt(0) !== 0xFFFD) { e[D[207][j]] = 52992 + j; d[52992 + j] = D[207][j];} +return {"enc": e, "dec": d }; })(); diff --git a/node_modules/codepage/bits/20269.js b/node_modules/codepage/bits/20269.js new file mode 100644 index 000000000..788b80766 --- /dev/null +++ b/node_modules/codepage/bits/20269.js @@ -0,0 +1,2 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[20269] = (function(){ var d = "\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"��%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]�_�abcdefghijklmnopqrstuvwxyz{|}�€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œ�� ¡¢£$¥#§¤‘“«←↑→↓°±²³×µ¶·÷’”»¼½¿�`´^~¯̆̈�̧̨̲̊̋̌―¹®©™♩��⅛⅜⅝⅞ΩÆÐĦ�IJĿŁØŒºÞŦŊʼnĸæđðħıijŀłøœßþŧ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); diff --git a/node_modules/codepage/bits/20273.js b/node_modules/codepage/bits/20273.js new file mode 100644 index 000000000..80711ac62 --- /dev/null +++ b/node_modules/codepage/bits/20273.js @@ -0,0 +1,2 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[20273] = (function(){ var d = "ŸŸ\u0002\u0003œ\t†—Ž\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013…\b‡\u0018\u0019’\u001c\u001d\u001e\u001f€‚ƒ„\n\u0017\u001bˆ‰Š‹Œ\u0005\u0006\u0007‘\u0016“”•–\u0004˜™š›\u0014\u0015ž\u001a  â{àáãåçñÄ.<(+!&éêëèíîïì~Ü$*);^-/Â[ÀÁÃÅÇÑö,%_>?øÉÊËÈÍÎÏÌ`:#§'=\"Øabcdefghi«»ðýþ±°jklmnopqrªºæ¸Æ¤µßstuvwxyz¡¿ÐÝÞ®¢£¥·©@¶¼½¾¬|¯¨´×äABCDEFGHI­ô¦òóõüJKLMNOPQR¹û}ùúÿÖ÷STUVWXYZ²Ô\\ÒÓÕ0123456789³Û]Ùڟ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); diff --git a/node_modules/codepage/bits/20277.js b/node_modules/codepage/bits/20277.js new file mode 100644 index 000000000..131c6065b --- /dev/null +++ b/node_modules/codepage/bits/20277.js @@ -0,0 +1,2 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[20277] = (function(){ var d = "ŸŸ\u0002\u0003œ\t†—Ž\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013…\b‡\u0018\u0019’\u001c\u001d\u001e\u001f€‚ƒ„\n\u0017\u001bˆ‰Š‹Œ\u0005\u0006\u0007‘\u0016“”•–\u0004˜™š›\u0014\u0015ž\u001a  âäàáã}çñ#.<(+!&éêëèíîïìߤÅ*);^-/ÂÄÀÁÃ$ÇÑø,%_>?¦ÉÊËÈÍÎÏÌ`:ÆØ'=\"@abcdefghi«»ðýþ±°jklmnopqrªº{¸[]µüstuvwxyz¡¿ÐÝÞ®¢£¥·©§¶¼½¾¬|¯¨´×æABCDEFGHI­ôöòóõåJKLMNOPQR¹û~ùúÿ\\÷STUVWXYZ²ÔÖÒÓÕ0123456789³ÛÜÙڟ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); diff --git a/node_modules/codepage/bits/20278.js b/node_modules/codepage/bits/20278.js new file mode 100644 index 000000000..6f943235f --- /dev/null +++ b/node_modules/codepage/bits/20278.js @@ -0,0 +1,2 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[20278] = (function(){ var d = "ŸŸ\u0002\u0003œ\t†—Ž\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013…\b‡\u0018\u0019’\u001c\u001d\u001e\u001f€‚ƒ„\n\u0017\u001bˆ‰Š‹Œ\u0005\u0006\u0007‘\u0016“”•–\u0004˜™š›\u0014\u0015ž\u001a  â{àáã}çñ§.<(+!&`êëèíîïìߤÅ*);^-/Â#ÀÁÃ$ÇÑö,%_>?ø\\ÊËÈÍÎÏÌé:ÄÖ'=\"Øabcdefghi«»ðýþ±°jklmnopqrªºæ¸Æ]µüstuvwxyz¡¿ÐÝÞ®¢£¥·©[¶¼½¾¬|¯¨´×äABCDEFGHI­ô¦òóõåJKLMNOPQR¹û~ùúÿÉ÷STUVWXYZ²Ô@ÒÓÕ0123456789³ÛÜÙڟ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); diff --git a/node_modules/codepage/bits/20280.js b/node_modules/codepage/bits/20280.js new file mode 100644 index 000000000..52d2c0ed1 --- /dev/null +++ b/node_modules/codepage/bits/20280.js @@ -0,0 +1,2 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[20280] = (function(){ var d = "ŸŸ\u0002\u0003œ\t†—Ž\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013…\b‡\u0018\u0019’\u001c\u001d\u001e\u001f€‚ƒ„\n\u0017\u001bˆ‰Š‹Œ\u0005\u0006\u0007‘\u0016“”•–\u0004˜™š›\u0014\u0015ž\u001a  âä{áãå\\ñ°.<(+!&]êë}íîï~ßé$*);^-/ÂÄÀÁÃÅÇÑò,%_>?øÉÊËÈÍÎÏÌù:£§'=\"Øabcdefghi«»ðýþ±[jklmnopqrªºæ¸Æ¤µìstuvwxyz¡¿ÐÝÞ®¢#¥·©@¶¼½¾¬|¯¨´×àABCDEFGHI­ôö¦óõèJKLMNOPQR¹ûü`úÿç÷STUVWXYZ²ÔÖÒÓÕ0123456789³ÛÜÙڟ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); diff --git a/node_modules/codepage/bits/20284.js b/node_modules/codepage/bits/20284.js new file mode 100644 index 000000000..43ce22ac3 --- /dev/null +++ b/node_modules/codepage/bits/20284.js @@ -0,0 +1,2 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[20284] = (function(){ var d = "ŸŸ\u0002\u0003œ\t†—Ž\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013…\b‡\u0018\u0019’\u001c\u001d\u001e\u001f€‚ƒ„\n\u0017\u001bˆ‰Š‹Œ\u0005\u0006\u0007‘\u0016“”•–\u0004˜™š›\u0014\u0015ž\u001a  âäàáãåç¦[.<(+|&éêëèíîïìß]$*);¬-/ÂÄÀÁÃÅÇ#ñ,%_>?øÉÊËÈÍÎÏÌ`:Ñ@'=\"Øabcdefghi«»ðýþ±°jklmnopqrªºæ¸Æ¤µ¨stuvwxyz¡¿ÐÝÞ®¢£¥·©§¶¼½¾^!¯~´×{ABCDEFGHI­ôöòóõ}JKLMNOPQR¹ûüùúÿ\\÷STUVWXYZ²ÔÖÒÓÕ0123456789³ÛÜÙڟ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); diff --git a/node_modules/codepage/bits/20285.js b/node_modules/codepage/bits/20285.js new file mode 100644 index 000000000..d77642dfc --- /dev/null +++ b/node_modules/codepage/bits/20285.js @@ -0,0 +1,2 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[20285] = (function(){ var d = "ŸŸ\u0002\u0003œ\t†—Ž\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013…\b‡\u0018\u0019’\u001c\u001d\u001e\u001f€‚ƒ„\n\u0017\u001bˆ‰Š‹Œ\u0005\u0006\u0007‘\u0016“”•–\u0004˜™š›\u0014\u0015ž\u001a  âäàáãåçñ$.<(+|&éêëèíîïìß!£*);¬-/ÂÄÀÁÃÅÇѦ,%_>?øÉÊËÈÍÎÏÌ`:#@'=\"Øabcdefghi«»ðýþ±°jklmnopqrªºæ¸Æ¤µ¯stuvwxyz¡¿ÐÝÞ®¢[¥·©§¶¼½¾^]~¨´×{ABCDEFGHI­ôöòóõ}JKLMNOPQR¹ûüùúÿ\\÷STUVWXYZ²ÔÖÒÓÕ0123456789³ÛÜÙڟ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); diff --git a/node_modules/codepage/bits/20290.js b/node_modules/codepage/bits/20290.js new file mode 100644 index 000000000..b15ec0a13 --- /dev/null +++ b/node_modules/codepage/bits/20290.js @@ -0,0 +1,2 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[20290] = (function(){ var d = "ŸŸ\u0002\u0003œ\t†—Ž\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013…\b‡\u0018\u0019’\u001c\u001d\u001e\u001f€‚ƒ„\n\u0017\u001bˆ‰Š‹Œ\u0005\u0006\u0007‘\u0016“”•–\u0004˜™š›\u0014\u0015ž\u001a 。「」、・ヲァィゥ£.<(+|&ェォャュョッ�ー�!¥*);¬-/abcdefgh�,%_>?[ijklmnop`:#@'=\"]アイウエオカキクケコqサシスセソタチツテトナニヌネノr�ハヒフ~‾ヘホマミムメモヤユsヨラリル^¢\\tuvwxyzレロワン゙゚{ABCDEFGHI������}JKLMNOPQR������$�STUVWXYZ������0123456789�����Ÿ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); diff --git a/node_modules/codepage/bits/20297.js b/node_modules/codepage/bits/20297.js new file mode 100644 index 000000000..31f0d0be4 --- /dev/null +++ b/node_modules/codepage/bits/20297.js @@ -0,0 +1,2 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[20297] = (function(){ var d = "ŸŸ\u0002\u0003œ\t†—Ž\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013…\b‡\u0018\u0019’\u001c\u001d\u001e\u001f€‚ƒ„\n\u0017\u001bˆ‰Š‹Œ\u0005\u0006\u0007‘\u0016“”•–\u0004˜™š›\u0014\u0015ž\u001a  âä@áãå\\ñ°.<(+!&{êë}íîïìߧ$*);^-/ÂÄÀÁÃÅÇÑù,%_>?øÉÊËÈÍÎÏ̵:£à'=\"Øabcdefghi«»ðýþ±[jklmnopqrªºæ¸Æ¤`¨stuvwxyz¡¿ÐÝÞ®¢#¥·©]¶¼½¾¬|¯~´×éABCDEFGHI­ôöòóõèJKLMNOPQR¹ûü¦úÿç÷STUVWXYZ²ÔÖÒÓÕ0123456789³ÛÜÙڟ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); diff --git a/node_modules/codepage/bits/20420.js b/node_modules/codepage/bits/20420.js new file mode 100644 index 000000000..e7dae5d76 --- /dev/null +++ b/node_modules/codepage/bits/20420.js @@ -0,0 +1,2 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[20420] = (function(){ var d = "ŸŸ\u0002\u0003œ\t†—Ž\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013…\b‡\u0018\u0019’\u001c\u001d\u001e\u001f€‚ƒ„\n\u0017\u001bˆ‰Š‹Œ\u0005\u0006\u0007‘\u0016“”•–\u0004˜™š›\u0014\u0015ž\u001a  ﹼﹽـﺀﺁﺂﺃ¢.<(+|&ﺄﺅ��ﺋﺍﺎﺏﺑ!$*);¬-/ﺓﺕﺗﺙﺛﺝﺟﺡ¦,%_>?ﺣﺥﺧﺩﺫﺭﺯﺳ،:#@'=\"abcdefghiﺷﺻﺿﻃﻇjklmnopqrﻉﻊﻋﻌﻍﻎﻏ÷stuvwxyzﻐﻑﻓﻕﻗﻙﻛﻝﻵﻶﻷﻸ��ﻻﻼﻟﻡﻣﻥﻧﻩ؛ABCDEFGHI­ﻫ�ﻬ�ﻭ؟JKLMNOPQRﻯﻰﻱﻲﻳ٠× STUVWXYZ١٢�٣٤٥0123456789�٦٧٨٩Ÿ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); diff --git a/node_modules/codepage/bits/20423.js b/node_modules/codepage/bits/20423.js new file mode 100644 index 000000000..9a79fe6f1 --- /dev/null +++ b/node_modules/codepage/bits/20423.js @@ -0,0 +1,2 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[20423] = (function(){ var d = "ŸŸ\u0002\u0003œ\t†—Ž\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013…\b‡\u0018\u0019’\u001c\u001d\u001e\u001f€‚ƒ„\n\u0017\u001bˆ‰Š‹Œ\u0005\u0006\u0007‘\u0016“”•–\u0004˜™š›\u0014\u0015ž\u001a ΑΒΓΔΕΖΗΘΙ[.<(+!&ΚΛΜΝΞΟΠΡΣ]$*);^-/ΤΥΦΧΨΩ��|,%_>?�ΆΈΉ ΊΌΎΏ`:£§'=\"ÄabcdefghiαβγδεζÖjklmnopqrηθικλμܨstuvwxyzνξοπρσ�άέήϊίόύϋώςτυφχψ¸ABCDEFGHI­ωâàäê´JKLMNOPQR±éèëîï°�STUVWXYZ½öôûùü0123456789ÿçÇ��Ÿ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); diff --git a/node_modules/codepage/bits/20424.js b/node_modules/codepage/bits/20424.js new file mode 100644 index 000000000..bbf51c861 --- /dev/null +++ b/node_modules/codepage/bits/20424.js @@ -0,0 +1,2 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[20424] = (function(){ var d = "ŸŸ\u0002\u0003œ\t†—Ž\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013…\b‡\u0018\u0019’\u001c\u001d\u001e\u001f€‚ƒ„\n\u0017\u001bˆ‰Š‹Œ\u0005\u0006\u0007‘\u0016“”•–\u0004˜™š›\u0014\u0015ž\u001a אבגדהוזחט¢.<(+|&יךכלםמןנס!$*);¬-/עףפץצקרש¦,%_>?�ת�� ���‗`:#@'=\"�abcdefghi«»���±°jklmnopqr���¸�¤µ~stuvwxyz�����®^£¥•©§¶¼½¾[]‾¨´×{ABCDEFGHI­�����}JKLMNOPQR¹�����\\÷STUVWXYZ²�����0123456789³����Ÿ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); diff --git a/node_modules/codepage/bits/20833.js b/node_modules/codepage/bits/20833.js new file mode 100644 index 000000000..eec2ab158 --- /dev/null +++ b/node_modules/codepage/bits/20833.js @@ -0,0 +1,2 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[20833] = (function(){ var d = "ŸŸ\u0002\u0003œ\t†—Ž\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013…\b‡\u0018\u0019’\u001c\u001d\u001e\u001f€‚ƒ„\n\u0017\u001bˆ‰Š‹Œ\u0005\u0006\u0007‘\u0016“”•–\u0004˜™š›\u0014\u0015ž\u001a �ᅠᄀᄁᆪᄂᆬᆭᄃ¢.<(+|&�ᄄᄅᆰᆱᆲᆳᆴᆵ!$*);¬-/ᄚᄆᄇᄈᄡᄉᄊᄋ¦,%_>?[�ᄌᄍᄎᄏᄐᄑᄒ`:#@'=\"]abcdefghiᅡᅢᅣᅤᅥᅦ�jklmnopqrᅧᅨᅩᅪᅫᅬ‾~stuvwxyzᅭᅮᅯᅰᅱᅲ^�\\�������ᅳᅴᅵ���{ABCDEFGHI������}JKLMNOPQR������₩�STUVWXYZ������0123456789�����Ÿ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); diff --git a/node_modules/codepage/bits/20838.js b/node_modules/codepage/bits/20838.js new file mode 100644 index 000000000..1cd4fe537 --- /dev/null +++ b/node_modules/codepage/bits/20838.js @@ -0,0 +1,2 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[20838] = (function(){ var d = "ŸŸ\u0002\u0003œ\t†—Ž\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013…\b‡\u0018\u0019’\u001c\u001d\u001e\u001f€‚ƒ„\n\u0017\u001bˆ‰Š‹Œ\u0005\u0006\u0007‘\u0016“”•–\u0004˜™š›\u0014\u0015ž\u001a  กขฃคฅฆง[¢.<(+|&�จฉชซฌญฎ]!$*);¬-/ฏฐฑฒณดต^¦,%_>?฿๎ถทธนบปผ`:#@'=\"๏abcdefghiฝพฟภมย๚jklmnopqrรฤลฦวศ๛~stuvwxyzษสหฬอฮ๐๑๒๓๔๕๖๗๘๙ฯะัาำิ{ABCDEFGHI�ีึืุู}JKLMNOPQRฺเแโใไ\\�STUVWXYZๅๆ็่้๊0123456789๋์ํ��Ÿ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); diff --git a/node_modules/codepage/bits/20866.js b/node_modules/codepage/bits/20866.js new file mode 100644 index 000000000..b101f5b87 --- /dev/null +++ b/node_modules/codepage/bits/20866.js @@ -0,0 +1,2 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[20866] = (function(){ var d = "ЪЪ\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~─│┌┐└┘├┤┬┴┼▀▄█▌▐░▒▓⌠■∙√≈≤≥ ⌡°²·÷═║╒ё╓╔╕╖╗╘╙╚╛╜╝╞╟╠╡Ё╢╣╤╥╦╧╨╩╪╫╬©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); diff --git a/node_modules/codepage/bits/20871.js b/node_modules/codepage/bits/20871.js new file mode 100644 index 000000000..a2f2bde6e --- /dev/null +++ b/node_modules/codepage/bits/20871.js @@ -0,0 +1,2 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[20871] = (function(){ var d = "ŸŸ\u0002\u0003œ\t†—Ž\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013…\b‡\u0018\u0019’\u001c\u001d\u001e\u001f€‚ƒ„\n\u0017\u001bˆ‰Š‹Œ\u0005\u0006\u0007‘\u0016“”•–\u0004˜™š›\u0014\u0015ž\u001a  âäàáãåçñÞ.<(+!&éêëèíîïìßÆ$*);Ö-/ÂÄÀÁÃÅÇѦ,%_>?øÉÊËÈÍÎÏÌð:#Ð'=\"Øabcdefghi«»`ý{±°jklmnopqrªº}¸]¤µöstuvwxyz¡¿@Ý[®¢£¥·©§¶¼½¾¬|¯¨\\×þABCDEFGHI­ô~òóõæJKLMNOPQR¹ûüùúÿ´÷STUVWXYZ²Ô^ÒÓÕ0123456789³ÛÜÙڟ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); diff --git a/node_modules/codepage/bits/20880.js b/node_modules/codepage/bits/20880.js new file mode 100644 index 000000000..c5a43d145 --- /dev/null +++ b/node_modules/codepage/bits/20880.js @@ -0,0 +1,2 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[20880] = (function(){ var d = "ŸŸ\u0002\u0003œ\t†—Ž\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013…\b‡\u0018\u0019’\u001c\u001d\u001e\u001f€‚ƒ„\n\u0017\u001bˆ‰Š‹Œ\u0005\u0006\u0007‘\u0016“”•–\u0004˜™š›\u0014\u0015ž\u001a  ђѓёєѕіїј[.<(+!&љњћќўџЪ№Ђ]$*);^-/ЃЁЄЅІЇЈЉ|,%_>?ЊЋЌ­ЎЏюаб`:#@'=\"цabcdefghiдефгхийjklmnopqrклмнопя~stuvwxyzрстужвьызшэщчъЮАБЦДЕФГ{ABCDEFGHIХИЙКЛМ}JKLMNOPQRНОПЯРС\\¤STUVWXYZТУЖВЬЫ0123456789ЗШЭЩЧŸ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); diff --git a/node_modules/codepage/bits/20905.js b/node_modules/codepage/bits/20905.js new file mode 100644 index 000000000..cdda9b3bc --- /dev/null +++ b/node_modules/codepage/bits/20905.js @@ -0,0 +1,2 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[20905] = (function(){ var d = "ŸŸ\u0002\u0003œ\t†—Ž\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013…\b‡\u0018\u0019’\u001c\u001d\u001e\u001f€‚ƒ„\n\u0017\u001bˆ‰Š‹Œ\u0005\u0006\u0007‘\u0016“”•–\u0004˜™š›\u0014\u0015ž\u001a  âäàá�ċ{ñÇ.<(+!&éêëèíîïìßĞİ*);^-/ÂÄÀÁ�Ċ[Ñş,%_>?�ÉÊËÈÍÎÏÌı:ÖŞ'=ܢabcdefghiħĉŝŭ�|°jklmnopqrĥĝĵ¸�¤µöstuvwxyzĦĈŜŬ�@˙£ż}Ż§]·½$ĤĜĴ¨´×çABCDEFGHI­ô~òóġğJKLMNOPQR`û\\ùú�ü÷STUVWXYZ²Ô#ÒÓĠ0123456789³Û\"Ùڟ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); diff --git a/node_modules/codepage/bits/20924.js b/node_modules/codepage/bits/20924.js new file mode 100644 index 000000000..8f8ec6fc4 --- /dev/null +++ b/node_modules/codepage/bits/20924.js @@ -0,0 +1,2 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[20924] = (function(){ var d = "ŸŸ\u0002\u0003œ\t†—Ž\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\n\b‡\u0018\u0019’\u001c\u001d\u001e\u001f€‚ƒ„…\u0017\u001bˆ‰Š‹Œ\u0005\u0006\u0007‘\u0016“”•–\u0004˜™š›\u0014\u0015ž\u001a  âäàáãåçñÝ.<(+|&éêëèíîïìß!$*);^-/ÂÄÀÁÃÅÇÑŠ,%_>?øÉÊËÈÍÎÏÌ`:#@'=\"Øabcdefghi«»ðýþ±°jklmnopqrªºæžÆ€µ~stuvwxyz¡¿Ð[Þ®¢£¥·©§¶Œœ�¬š¯]Ž×{ABCDEFGHI­ôöòóõ}JKLMNOPQR¹ûüùúÿ\\÷STUVWXYZ²ÔÖÒÓÕ0123456789³ÛÜÙڟ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); diff --git a/node_modules/codepage/bits/20932.js b/node_modules/codepage/bits/20932.js new file mode 100644 index 000000000..426f5abe1 --- /dev/null +++ b/node_modules/codepage/bits/20932.js @@ -0,0 +1,189 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[20932] = (function(){ var d = [], e = {}, D = [], j; +D[0] = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹Œ�‘’“”•–—˜™š›œžŸ����������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];} +D[142] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������。「」、・ヲァィゥェォャュョッーアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワン゙゚��������������������������������".split(""); +for(j = 0; j != D[142].length; ++j) if(D[142][j].charCodeAt(0) !== 0xFFFD) { e[D[142][j]] = 36352 + j; d[36352 + j] = D[142][j];} +D[161] = "����������������������������������������������������������������������������������������������������������������������������������������������������������������� 、。,.・:;?!゛゜´`¨^ ̄_ヽヾゝゞ〃仝々〆〇ー―‐/\〜‖|…‥‘’“”()〔〕[]{}〈〉《》「」『』【】+−±×÷=≠<>≦≧∞∴♂♀°′″℃¥$¢£%#&*@§☆★○●◎◇�".split(""); +for(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];} +D[162] = "�����������������������������������������������˘ˇ¸˙˝¯˛˚�΄΅��������¡¦¿��������������������������������������ºª©®™¤������������������������������������������������◆□■△▲▽▼※〒→←↑↓〓�����������∈∋⊆⊇⊂⊃∪∩��������∧∨¬⇒⇔∀∃�����������∠⊥⌒∂∇≡≒≪≫√∽∝∵∫∬�������ʼn♯♭♪†‡¶����◯�".split(""); +for(j = 0; j != D[162].length; ++j) if(D[162][j].charCodeAt(0) !== 0xFFFD) { e[D[162][j]] = 41472 + j; d[41472 + j] = D[162][j];} +D[163] = "��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������0123456789�������ABCDEFGHIJKLMNOPQRSTUVWXYZ������abcdefghijklmnopqrstuvwxyz�����".split(""); +for(j = 0; j != D[163].length; ++j) if(D[163][j].charCodeAt(0) !== 0xFFFD) { e[D[163][j]] = 41728 + j; d[41728 + j] = D[163][j];} +D[164] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをん������������".split(""); +for(j = 0; j != D[164].length; ++j) if(D[164][j].charCodeAt(0) !== 0xFFFD) { e[D[164][j]] = 41984 + j; d[41984 + j] = D[164][j];} +D[165] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶ���������".split(""); +for(j = 0; j != D[165].length; ++j) if(D[165][j].charCodeAt(0) !== 0xFFFD) { e[D[165][j]] = 42240 + j; d[42240 + j] = D[165][j];} +D[166] = "�������������������������������������������������������������������������������������������������ΆΈΉΊΪ�Ό�ΎΫ�Ώ����άέήίϊΐόςύϋΰώ������������������������������������ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ��������αβγδεζηθικλμνξοπρστυφχψω���������������������������������������".split(""); +for(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];} +D[167] = "������������������������������������������������������������������ЂЃЄЅІЇЈЉЊЋЌЎЏ�����������������������������������ђѓєѕіїјљњћќўџ����������������������������������АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ���������������абвгдеёжзийклмнопрстуфхцчшщъыьэюя��������������".split(""); +for(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];} +D[168] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂���������������������������������������������������������������".split(""); +for(j = 0; j != D[168].length; ++j) if(D[168][j].charCodeAt(0) !== 0xFFFD) { e[D[168][j]] = 43008 + j; d[43008 + j] = D[168][j];} +D[169] = "���������������������������������ÆĐ�Ħ�IJ�ŁĿ�ŊØŒ�ŦÞ����������������æđðħıijĸłŀʼnŋøœßŧþ�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[169].length; ++j) if(D[169][j].charCodeAt(0) !== 0xFFFD) { e[D[169][j]] = 43264 + j; d[43264 + j] = D[169][j];} +D[170] = "���������������������������������ÁÀÄÂĂǍĀĄÅÃĆĈČÇĊĎÉÈËÊĚĖĒĘ�ĜĞĢĠĤÍÌÏÎǏİĪĮĨĴĶĹĽĻŃŇŅÑÓÒÖÔǑŐŌÕŔŘŖŚŜŠŞŤŢÚÙÜÛŬǓŰŪŲŮŨǗǛǙǕŴÝŸŶŹŽŻ����������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];} +D[171] = "���������������������������������áàäâăǎāąåãćĉčçċďéèëêěėēęǵĝğ�ġĥíìïîǐ�īįĩĵķĺľļńňņñóòöôǒőōõŕřŗśŝšşťţúùüûŭǔűūųůũǘǜǚǖŵýÿŷźžż����������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[171].length; ++j) if(D[171][j].charCodeAt(0) !== 0xFFFD) { e[D[171][j]] = 43776 + j; d[43776 + j] = D[171][j];} +D[173] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯⑰⑱⑲⑳ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩ�㍉㌔㌢㍍㌘㌧㌃㌶㍑㍗㌍㌦㌣㌫㍊㌻㎜㎝㎞㎎㎏㏄㎡��������㍻〞〟№㏍℡㊤㊥㊦㊧㊨㈱㈲㈹㍾㍽㍼���∮∑���∟⊿������".split(""); +for(j = 0; j != D[173].length; ++j) if(D[173][j].charCodeAt(0) !== 0xFFFD) { e[D[173][j]] = 44288 + j; d[44288 + j] = D[173][j];} +D[176] = "���������������������������������丂丄丅丌丒丟丣两丨丫丮丯丰丵乀乁乄乇乑乚乜乣乨乩乴乵乹乿亍亖亗亝亯亹仃仐仚仛仠仡仢仨仯仱仳仵份仾仿伀伂伃伈伋伌伒伕伖众伙伮伱你伳伵伷伹伻伾佀佂佈佉佋佌佒佔佖佘佟佣佪佬佮佱佷佸佹佺佽佾侁侂侄����������������������������������亜唖娃阿哀愛挨姶逢葵茜穐悪握渥旭葦芦鯵梓圧斡扱宛姐虻飴絢綾鮎或粟袷安庵按暗案闇鞍杏以伊位依偉囲夷委威尉惟意慰易椅為畏異移維緯胃萎衣謂違遺医井亥域育郁磯一壱溢逸稲茨芋鰯允印咽員因姻引飲淫胤蔭�".split(""); +for(j = 0; j != D[176].length; ++j) if(D[176][j].charCodeAt(0) !== 0xFFFD) { e[D[176][j]] = 45056 + j; d[45056 + j] = D[176][j];} +D[177] = "���������������������������������侅侉侊侌侎侐侒侓侔侗侙侚侞侟侲侷侹侻侼侽侾俀俁俅俆俈俉俋俌俍俏俒俜俠俢俰俲俼俽俿倀倁倄倇倊倌倎倐倓倗倘倛倜倝倞倢倧倮倰倲倳倵偀偁偂偅偆偊偌偎偑偒偓偗偙偟偠偢偣偦偧偪偭偰偱倻傁傃傄傆傊傎傏傐����������������������������������院陰隠韻吋右宇烏羽迂雨卯鵜窺丑碓臼渦嘘唄欝蔚鰻姥厩浦瓜閏噂云運雲荏餌叡営嬰影映曳栄永泳洩瑛盈穎頴英衛詠鋭液疫益駅悦謁越閲榎厭円園堰奄宴延怨掩援沿演炎焔煙燕猿縁艶苑薗遠鉛鴛塩於汚甥凹央奥往応�".split(""); +for(j = 0; j != D[177].length; ++j) if(D[177][j].charCodeAt(0) !== 0xFFFD) { e[D[177][j]] = 45312 + j; d[45312 + j] = D[177][j];} +D[178] = "���������������������������������傒傓傔傖傛傜傞傟傠傡傢傪傯傰傹傺傽僀僃僄僇僌僎僐僓僔僘僜僝僟僢僤僦僨僩僯僱僶僺僾儃儆儇儈儋儌儍儎僲儐儗儙儛儜儝儞儣儧儨儬儭儯儱儳儴儵儸儹兂兊兏兓兕兗兘兟兤兦兾冃冄冋冎冘冝冡冣冭冸冺冼冾冿凂����������������������������������押旺横欧殴王翁襖鴬鴎黄岡沖荻億屋憶臆桶牡乙俺卸恩温穏音下化仮何伽価佳加可嘉夏嫁家寡科暇果架歌河火珂禍禾稼箇花苛茄荷華菓蝦課嘩貨迦過霞蚊俄峨我牙画臥芽蛾賀雅餓駕介会解回塊壊廻快怪悔恢懐戒拐改�".split(""); +for(j = 0; j != D[178].length; ++j) if(D[178][j].charCodeAt(0) !== 0xFFFD) { e[D[178][j]] = 45568 + j; d[45568 + j] = D[178][j];} +D[179] = "���������������������������������凈减凑凒凓凕凘凞凢凥凮凲凳凴凷刁刂刅划刓刕刖刘刢刨刱刲刵刼剅剉剕剗剘剚剜剟剠剡剦剮剷剸剹劀劂劅劊劌劓劕劖劗劘劚劜劤劥劦劧劯劰劶劷劸劺劻劽勀勄勆勈勌勏勑勔勖勛勜勡勥勨勩勪勬勰勱勴勶勷匀匃匊匋����������������������������������魁晦械海灰界皆絵芥蟹開階貝凱劾外咳害崖慨概涯碍蓋街該鎧骸浬馨蛙垣柿蛎鈎劃嚇各廓拡撹格核殻獲確穫覚角赫較郭閣隔革学岳楽額顎掛笠樫橿梶鰍潟割喝恰括活渇滑葛褐轄且鰹叶椛樺鞄株兜竃蒲釜鎌噛鴨栢茅萱�".split(""); +for(j = 0; j != D[179].length; ++j) if(D[179][j].charCodeAt(0) !== 0xFFFD) { e[D[179][j]] = 45824 + j; d[45824 + j] = D[179][j];} +D[180] = "���������������������������������匌匑匓匘匛匜匞匟匥匧匨匩匫匬匭匰匲匵匼匽匾卂卌卋卙卛卡卣卥卬卭卲卹卾厃厇厈厎厓厔厙厝厡厤厪厫厯厲厴厵厷厸厺厽叀叅叏叒叓叕叚叝叞叠另叧叵吂吓吚吡吧吨吪启吱吴吵呃呄呇呍呏呞呢呤呦呧呩呫呭呮呴呿����������������������������������粥刈苅瓦乾侃冠寒刊勘勧巻喚堪姦完官寛干幹患感慣憾換敢柑桓棺款歓汗漢澗潅環甘監看竿管簡緩缶翰肝艦莞観諌貫還鑑間閑関陥韓館舘丸含岸巌玩癌眼岩翫贋雁頑顔願企伎危喜器基奇嬉寄岐希幾忌揮机旗既期棋棄�".split(""); +for(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];} +D[181] = "���������������������������������咁咃咅咈咉咍咑咕咖咜咟咡咦咧咩咪咭咮咱咷咹咺咻咿哆哊响哎哠哪哬哯哶哼哾哿唀唁唅唈唉唌唍唎唕唪唫唲唵唶唻唼唽啁啇啉啊啍啐啑啘啚啛啞啠啡啤啦啿喁喂喆喈喎喏喑喒喓喔喗喣喤喭喲喿嗁嗃嗆嗉嗋嗌嗎嗑嗒����������������������������������機帰毅気汽畿祈季稀紀徽規記貴起軌輝飢騎鬼亀偽儀妓宜戯技擬欺犠疑祇義蟻誼議掬菊鞠吉吃喫桔橘詰砧杵黍却客脚虐逆丘久仇休及吸宮弓急救朽求汲泣灸球究窮笈級糾給旧牛去居巨拒拠挙渠虚許距鋸漁禦魚亨享京�".split(""); +for(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];} +D[182] = "���������������������������������嗓嗗嗘嗛嗞嗢嗩嗶嗿嘅嘈嘊嘍嘎嘏嘐嘑嘒嘙嘬嘰嘳嘵嘷嘹嘻嘼嘽嘿噀噁噃噄噆噉噋噍噏噔噞噠噡噢噣噦噩噭噯噱噲噵嚄嚅嚈嚋嚌嚕嚙嚚嚝嚞嚟嚦嚧嚨嚩嚫嚬嚭嚱嚳嚷嚾囅囉囊囋囏囐囌囍囙囜囝囟囡囤囥囦囧囨囱囫园����������������������������������供侠僑兇競共凶協匡卿叫喬境峡強彊怯恐恭挟教橋況狂狭矯胸脅興蕎郷鏡響饗驚仰凝尭暁業局曲極玉桐粁僅勤均巾錦斤欣欽琴禁禽筋緊芹菌衿襟謹近金吟銀九倶句区狗玖矩苦躯駆駈駒具愚虞喰空偶寓遇隅串櫛釧屑屈�".split(""); +for(j = 0; j != D[182].length; ++j) if(D[182][j].charCodeAt(0) !== 0xFFFD) { e[D[182][j]] = 46592 + j; d[46592 + j] = D[182][j];} +D[183] = "���������������������������������囶囷圁圂圇圊圌圑圕圚圛圝圠圢圣圤圥圩圪圬圮圯圳圴圽圾圿坅坆坌坍坒坢坥坧坨坫坭坮坯坰坱坳坴坵坷坹坺坻坼坾垁垃垌垔垗垙垚垜垝垞垟垡垕垧垨垩垬垸垽埇埈埌埏埕埝埞埤埦埧埩埭埰埵埶埸埽埾埿堃堄堈堉埡����������������������������������掘窟沓靴轡窪熊隈粂栗繰桑鍬勲君薫訓群軍郡卦袈祁係傾刑兄啓圭珪型契形径恵慶慧憩掲携敬景桂渓畦稽系経継繋罫茎荊蛍計詣警軽頚鶏芸迎鯨劇戟撃激隙桁傑欠決潔穴結血訣月件倹倦健兼券剣喧圏堅嫌建憲懸拳捲�".split(""); +for(j = 0; j != D[183].length; ++j) if(D[183][j].charCodeAt(0) !== 0xFFFD) { e[D[183][j]] = 46848 + j; d[46848 + j] = D[183][j];} +D[184] = "���������������������������������堌堍堛堞堟堠堦堧堭堲堹堿塉塌塍塏塐塕塟塡塤塧塨塸塼塿墀墁墇墈墉墊墌墍墏墐墔墖墝墠墡墢墦墩墱墲壄墼壂壈壍壎壐壒壔壖壚壝壡壢壩壳夅夆夋夌夒夓夔虁夝夡夣夤夨夯夰夳夵夶夿奃奆奒奓奙奛奝奞奟奡奣奫奭����������������������������������検権牽犬献研硯絹県肩見謙賢軒遣鍵険顕験鹸元原厳幻弦減源玄現絃舷言諺限乎個古呼固姑孤己庫弧戸故枯湖狐糊袴股胡菰虎誇跨鈷雇顧鼓五互伍午呉吾娯後御悟梧檎瑚碁語誤護醐乞鯉交佼侯候倖光公功効勾厚口向�".split(""); +for(j = 0; j != D[184].length; ++j) if(D[184][j].charCodeAt(0) !== 0xFFFD) { e[D[184][j]] = 47104 + j; d[47104 + j] = D[184][j];} +D[185] = "���������������������������������奯奲奵奶她奻奼妋妌妎妒妕妗妟妤妧妭妮妯妰妳妷妺妼姁姃姄姈姊姍姒姝姞姟姣姤姧姮姯姱姲姴姷娀娄娌娍娎娒娓娞娣娤娧娨娪娭娰婄婅婇婈婌婐婕婞婣婥婧婭婷婺婻婾媋媐媓媖媙媜媞媟媠媢媧媬媱媲媳媵媸媺媻媿����������������������������������后喉坑垢好孔孝宏工巧巷幸広庚康弘恒慌抗拘控攻昂晃更杭校梗構江洪浩港溝甲皇硬稿糠紅紘絞綱耕考肯肱腔膏航荒行衡講貢購郊酵鉱砿鋼閤降項香高鴻剛劫号合壕拷濠豪轟麹克刻告国穀酷鵠黒獄漉腰甑忽惚骨狛込�".split(""); +for(j = 0; j != D[185].length; ++j) if(D[185][j].charCodeAt(0) !== 0xFFFD) { e[D[185][j]] = 47360 + j; d[47360 + j] = D[185][j];} +D[186] = "���������������������������������嫄嫆嫈嫏嫚嫜嫠嫥嫪嫮嫵嫶嫽嬀嬁嬈嬗嬴嬙嬛嬝嬡嬥嬭嬸孁孋孌孒孖孞孨孮孯孼孽孾孿宁宄宆宊宎宐宑宓宔宖宨宩宬宭宯宱宲宷宺宼寀寁寍寏寖寗寘寙寚寠寯寱寴寽尌尗尞尟尣尦尩尫尬尮尰尲尵尶屙屚屜屢屣屧屨屩����������������������������������此頃今困坤墾婚恨懇昏昆根梱混痕紺艮魂些佐叉唆嵯左差査沙瑳砂詐鎖裟坐座挫債催再最哉塞妻宰彩才採栽歳済災采犀砕砦祭斎細菜裁載際剤在材罪財冴坂阪堺榊肴咲崎埼碕鷺作削咋搾昨朔柵窄策索錯桜鮭笹匙冊刷�".split(""); +for(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];} +D[187] = "���������������������������������屭屰屴屵屺屻屼屽岇岈岊岏岒岝岟岠岢岣岦岪岲岴岵岺峉峋峒峝峗峮峱峲峴崁崆崍崒崫崣崤崦崧崱崴崹崽崿嵂嵃嵆嵈嵕嵑嵙嵊嵟嵠嵡嵢嵤嵪嵭嵰嵹嵺嵾嵿嶁嶃嶈嶊嶒嶓嶔嶕嶙嶛嶟嶠嶧嶫嶰嶴嶸嶹巃巇巋巐巎巘巙巠巤����������������������������������察拶撮擦札殺薩雑皐鯖捌錆鮫皿晒三傘参山惨撒散桟燦珊産算纂蚕讃賛酸餐斬暫残仕仔伺使刺司史嗣四士始姉姿子屍市師志思指支孜斯施旨枝止死氏獅祉私糸紙紫肢脂至視詞詩試誌諮資賜雌飼歯事似侍児字寺慈持時�".split(""); +for(j = 0; j != D[187].length; ++j) if(D[187][j].charCodeAt(0) !== 0xFFFD) { e[D[187][j]] = 47872 + j; d[47872 + j] = D[187][j];} +D[188] = "���������������������������������巩巸巹帀帇帍帒帔帕帘帟帠帮帨帲帵帾幋幐幉幑幖幘幛幜幞幨幪幫幬幭幮幰庀庋庎庢庤庥庨庪庬庱庳庽庾庿廆廌廋廎廑廒廔廕廜廞廥廫异弆弇弈弎弙弜弝弡弢弣弤弨弫弬弮弰弴弶弻弽弿彀彄彅彇彍彐彔彘彛彠彣彤彧����������������������������������次滋治爾璽痔磁示而耳自蒔辞汐鹿式識鴫竺軸宍雫七叱執失嫉室悉湿漆疾質実蔀篠偲柴芝屡蕊縞舎写射捨赦斜煮社紗者謝車遮蛇邪借勺尺杓灼爵酌釈錫若寂弱惹主取守手朱殊狩珠種腫趣酒首儒受呪寿授樹綬需囚収周�".split(""); +for(j = 0; j != D[188].length; ++j) if(D[188][j].charCodeAt(0) !== 0xFFFD) { e[D[188][j]] = 48128 + j; d[48128 + j] = D[188][j];} +D[189] = "���������������������������������彯彲彴彵彸彺彽彾徉徍徏徖徜徝徢徧徫徤徬徯徰徱徸忄忇忈忉忋忐忑忒忓忔忞忡忢忨忩忪忬忭忮忯忲忳忶忺忼怇怊怍怓怔怗怘怚怟怤怭怳怵恀恇恈恉恌恑恔恖恗恝恡恧恱恾恿悂悆悈悊悎悑悓悕悘悝悞悢悤悥您悰悱悷����������������������������������宗就州修愁拾洲秀秋終繍習臭舟蒐衆襲讐蹴輯週酋酬集醜什住充十従戎柔汁渋獣縦重銃叔夙宿淑祝縮粛塾熟出術述俊峻春瞬竣舜駿准循旬楯殉淳準潤盾純巡遵醇順処初所暑曙渚庶緒署書薯藷諸助叙女序徐恕鋤除傷償�".split(""); +for(j = 0; j != D[189].length; ++j) if(D[189][j].charCodeAt(0) !== 0xFFFD) { e[D[189][j]] = 48384 + j; d[48384 + j] = D[189][j];} +D[190] = "���������������������������������悻悾惂惄惈惉惊惋惎惏惔惕惙惛惝惞惢惥惲惵惸惼惽愂愇愊愌愐愑愒愓愔愖愗愙愜愞愢愪愫愰愱愵愶愷愹慁慅慆慉慞慠慬慲慸慻慼慿憀憁憃憄憋憍憒憓憗憘憜憝憟憠憥憨憪憭憸憹憼懀懁懂懎懏懕懜懝懞懟懡懢懧懩懥����������������������������������勝匠升召哨商唱嘗奨妾娼宵将小少尚庄床廠彰承抄招掌捷昇昌昭晶松梢樟樵沼消渉湘焼焦照症省硝礁祥称章笑粧紹肖菖蒋蕉衝裳訟証詔詳象賞醤鉦鍾鐘障鞘上丈丞乗冗剰城場壌嬢常情擾条杖浄状畳穣蒸譲醸錠嘱埴飾�".split(""); +for(j = 0; j != D[190].length; ++j) if(D[190][j].charCodeAt(0) !== 0xFFFD) { e[D[190][j]] = 48640 + j; d[48640 + j] = D[190][j];} +D[191] = "���������������������������������懬懭懯戁戃戄戇戓戕戜戠戢戣戧戩戫戹戽扂扃扄扆扌扐扑扒扔扖扚扜扤扭扯扳扺扽抍抎抏抐抦抨抳抶抷抺抾抿拄拎拕拖拚拪拲拴拼拽挃挄挊挋挍挐挓挖挘挩挪挭挵挶挹挼捁捂捃捄捆捊捋捎捒捓捔捘捛捥捦捬捭捱捴捵����������������������������������拭植殖燭織職色触食蝕辱尻伸信侵唇娠寝審心慎振新晋森榛浸深申疹真神秦紳臣芯薪親診身辛進針震人仁刃塵壬尋甚尽腎訊迅陣靭笥諏須酢図厨逗吹垂帥推水炊睡粋翠衰遂酔錐錘随瑞髄崇嵩数枢趨雛据杉椙菅頗雀裾�".split(""); +for(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];} +D[192] = "���������������������������������捸捼捽捿掂掄掇掊掐掔掕掙掚掞掤掦掭掮掯掽揁揅揈揎揑揓揔揕揜揠揥揪揬揲揳揵揸揹搉搊搐搒搔搘搞搠搢搤搥搩搪搯搰搵搽搿摋摏摑摒摓摔摚摛摜摝摟摠摡摣摭摳摴摻摽撅撇撏撐撑撘撙撛撝撟撡撣撦撨撬撳撽撾撿����������������������������������澄摺寸世瀬畝是凄制勢姓征性成政整星晴棲栖正清牲生盛精聖声製西誠誓請逝醒青静斉税脆隻席惜戚斥昔析石積籍績脊責赤跡蹟碩切拙接摂折設窃節説雪絶舌蝉仙先千占宣専尖川戦扇撰栓栴泉浅洗染潜煎煽旋穿箭線�".split(""); +for(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];} +D[193] = "���������������������������������擄擉擊擋擌擎擐擑擕擗擤擥擩擪擭擰擵擷擻擿攁攄攈攉攊攏攓攔攖攙攛攞攟攢攦攩攮攱攺攼攽敃敇敉敐敒敔敟敠敧敫敺敽斁斅斊斒斕斘斝斠斣斦斮斲斳斴斿旂旈旉旎旐旔旖旘旟旰旲旴旵旹旾旿昀昄昈昉昍昑昒昕昖昝����������������������������������繊羨腺舛船薦詮賎践選遷銭銑閃鮮前善漸然全禅繕膳糎噌塑岨措曾曽楚狙疏疎礎祖租粗素組蘇訴阻遡鼠僧創双叢倉喪壮奏爽宋層匝惣想捜掃挿掻操早曹巣槍槽漕燥争痩相窓糟総綜聡草荘葬蒼藻装走送遭鎗霜騒像増憎�".split(""); +for(j = 0; j != D[193].length; ++j) if(D[193][j].charCodeAt(0) !== 0xFFFD) { e[D[193][j]] = 49408 + j; d[49408 + j] = D[193][j];} +D[194] = "���������������������������������昞昡昢昣昤昦昩昪昫昬昮昰昱昳昹昷晀晅晆晊晌晑晎晗晘晙晛晜晠晡曻晪晫晬晾晳晵晿晷晸晹晻暀晼暋暌暍暐暒暙暚暛暜暟暠暤暭暱暲暵暻暿曀曂曃曈曌曎曏曔曛曟曨曫曬曮曺朅朇朎朓朙朜朠朢朳朾杅杇杈杌杔杕杝����������������������������������臓蔵贈造促側則即息捉束測足速俗属賊族続卒袖其揃存孫尊損村遜他多太汰詑唾堕妥惰打柁舵楕陀駄騨体堆対耐岱帯待怠態戴替泰滞胎腿苔袋貸退逮隊黛鯛代台大第醍題鷹滝瀧卓啄宅托択拓沢濯琢託鐸濁諾茸凧蛸只�".split(""); +for(j = 0; j != D[194].length; ++j) if(D[194][j].charCodeAt(0) !== 0xFFFD) { e[D[194][j]] = 49664 + j; d[49664 + j] = D[194][j];} +D[195] = "���������������������������������杦杬杮杴杶杻极构枎枏枑枓枖枘枙枛枰枱枲枵枻枼枽柹柀柂柃柅柈柉柒柗柙柜柡柦柰柲柶柷桒栔栙栝栟栨栧栬栭栯栰栱栳栻栿桄桅桊桌桕桗桘桛桫桮桯桰桱桲桵桹桺桻桼梂梄梆梈梖梘梚梜梡梣梥梩梪梮梲梻棅棈棌棏����������������������������������叩但達辰奪脱巽竪辿棚谷狸鱈樽誰丹単嘆坦担探旦歎淡湛炭短端箪綻耽胆蛋誕鍛団壇弾断暖檀段男談値知地弛恥智池痴稚置致蜘遅馳築畜竹筑蓄逐秩窒茶嫡着中仲宙忠抽昼柱注虫衷註酎鋳駐樗瀦猪苧著貯丁兆凋喋寵�".split(""); +for(j = 0; j != D[195].length; ++j) if(D[195][j].charCodeAt(0) !== 0xFFFD) { e[D[195][j]] = 49920 + j; d[49920 + j] = D[195][j];} +D[196] = "���������������������������������棐棑棓棖棙棜棝棥棨棪棫棬棭棰棱棵棶棻棼棽椆椉椊椐椑椓椖椗椱椳椵椸椻楂楅楉楎楗楛楣楤楥楦楨楩楬楰楱楲楺楻楿榀榍榒榖榘榡榥榦榨榫榭榯榷榸榺榼槅槈槑槖槗槢槥槮槯槱槳槵槾樀樁樃樏樑樕樚樝樠樤樨樰樲����������������������������������帖帳庁弔張彫徴懲挑暢朝潮牒町眺聴脹腸蝶調諜超跳銚長頂鳥勅捗直朕沈珍賃鎮陳津墜椎槌追鎚痛通塚栂掴槻佃漬柘辻蔦綴鍔椿潰坪壷嬬紬爪吊釣鶴亭低停偵剃貞呈堤定帝底庭廷弟悌抵挺提梯汀碇禎程締艇訂諦蹄逓�".split(""); +for(j = 0; j != D[196].length; ++j) if(D[196][j].charCodeAt(0) !== 0xFFFD) { e[D[196][j]] = 50176 + j; d[50176 + j] = D[196][j];} +D[197] = "���������������������������������樴樷樻樾樿橅橆橉橊橎橐橑橒橕橖橛橤橧橪橱橳橾檁檃檆檇檉檋檑檛檝檞檟檥檫檯檰檱檴檽檾檿櫆櫉櫈櫌櫐櫔櫕櫖櫜櫝櫤櫧櫬櫰櫱櫲櫼櫽欂欃欆欇欉欏欐欑欗欛欞欤欨欫欬欯欵欶欻欿歆歊歍歒歖歘歝歠歧歫歮歰歵歽����������������������������������邸鄭釘鼎泥摘擢敵滴的笛適鏑溺哲徹撤轍迭鉄典填天展店添纏甜貼転顛点伝殿澱田電兎吐堵塗妬屠徒斗杜渡登菟賭途都鍍砥砺努度土奴怒倒党冬凍刀唐塔塘套宕島嶋悼投搭東桃梼棟盗淘湯涛灯燈当痘祷等答筒糖統到�".split(""); +for(j = 0; j != D[197].length; ++j) if(D[197][j].charCodeAt(0) !== 0xFFFD) { e[D[197][j]] = 50432 + j; d[50432 + j] = D[197][j];} +D[198] = "���������������������������������歾殂殅殗殛殟殠殢殣殨殩殬殭殮殰殸殹殽殾毃毄毉毌毖毚毡毣毦毧毮毱毷毹毿氂氄氅氉氍氎氐氒氙氟氦氧氨氬氮氳氵氶氺氻氿汊汋汍汏汒汔汙汛汜汫汭汯汴汶汸汹汻沅沆沇沉沔沕沗沘沜沟沰沲沴泂泆泍泏泐泑泒泔泖����������������������������������董蕩藤討謄豆踏逃透鐙陶頭騰闘働動同堂導憧撞洞瞳童胴萄道銅峠鴇匿得徳涜特督禿篤毒独読栃橡凸突椴届鳶苫寅酉瀞噸屯惇敦沌豚遁頓呑曇鈍奈那内乍凪薙謎灘捺鍋楢馴縄畷南楠軟難汝二尼弐迩匂賑肉虹廿日乳入�".split(""); +for(j = 0; j != D[198].length; ++j) if(D[198][j].charCodeAt(0) !== 0xFFFD) { e[D[198][j]] = 50688 + j; d[50688 + j] = D[198][j];} +D[199] = "���������������������������������泚泜泠泧泩泫泬泮泲泴洄洇洊洎洏洑洓洚洦洧洨汧洮洯洱洹洼洿浗浞浟浡浥浧浯浰浼涂涇涑涒涔涖涗涘涪涬涴涷涹涽涿淄淈淊淎淏淖淛淝淟淠淢淥淩淯淰淴淶淼渀渄渞渢渧渲渶渹渻渼湄湅湈湉湋湏湑湒湓湔湗湜湝湞����������������������������������如尿韮任妊忍認濡禰祢寧葱猫熱年念捻撚燃粘乃廼之埜嚢悩濃納能脳膿農覗蚤巴把播覇杷波派琶破婆罵芭馬俳廃拝排敗杯盃牌背肺輩配倍培媒梅楳煤狽買売賠陪這蝿秤矧萩伯剥博拍柏泊白箔粕舶薄迫曝漠爆縛莫駁麦�".split(""); +for(j = 0; j != D[199].length; ++j) if(D[199][j].charCodeAt(0) !== 0xFFFD) { e[D[199][j]] = 50944 + j; d[50944 + j] = D[199][j];} +D[200] = "���������������������������������湢湣湨湳湻湽溍溓溙溠溧溭溮溱溳溻溿滀滁滃滇滈滊滍滎滏滫滭滮滹滻滽漄漈漊漌漍漖漘漚漛漦漩漪漯漰漳漶漻漼漭潏潑潒潓潗潙潚潝潞潡潢潨潬潽潾澃澇澈澋澌澍澐澒澓澔澖澚澟澠澥澦澧澨澮澯澰澵澶澼濅濇濈濊����������������������������������函箱硲箸肇筈櫨幡肌畑畠八鉢溌発醗髪伐罰抜筏閥鳩噺塙蛤隼伴判半反叛帆搬斑板氾汎版犯班畔繁般藩販範釆煩頒飯挽晩番盤磐蕃蛮匪卑否妃庇彼悲扉批披斐比泌疲皮碑秘緋罷肥被誹費避非飛樋簸備尾微枇毘琵眉美�".split(""); +for(j = 0; j != D[200].length; ++j) if(D[200][j].charCodeAt(0) !== 0xFFFD) { e[D[200][j]] = 51200 + j; d[51200 + j] = D[200][j];} +D[201] = "���������������������������������濚濞濨濩濰濵濹濼濽瀀瀅瀆瀇瀍瀗瀠瀣瀯瀴瀷瀹瀼灃灄灈灉灊灋灔灕灝灞灎灤灥灬灮灵灶灾炁炅炆炔炕炖炗炘炛炤炫炰炱炴炷烊烑烓烔烕烖烘烜烤烺焃焄焅焆焇焋焌焏焞焠焫焭焯焰焱焸煁煅煆煇煊煋煐煒煗煚煜煞煠����������������������������������鼻柊稗匹疋髭彦膝菱肘弼必畢筆逼桧姫媛紐百謬俵彪標氷漂瓢票表評豹廟描病秒苗錨鋲蒜蛭鰭品彬斌浜瀕貧賓頻敏瓶不付埠夫婦富冨布府怖扶敷斧普浮父符腐膚芙譜負賦赴阜附侮撫武舞葡蕪部封楓風葺蕗伏副復幅服�".split(""); +for(j = 0; j != D[201].length; ++j) if(D[201][j].charCodeAt(0) !== 0xFFFD) { e[D[201][j]] = 51456 + j; d[51456 + j] = D[201][j];} +D[202] = "���������������������������������煨煹熀熅熇熌熒熚熛熠熢熯熰熲熳熺熿燀燁燄燋燌燓燖燙燚燜燸燾爀爇爈爉爓爗爚爝爟爤爫爯爴爸爹牁牂牃牅牎牏牐牓牕牖牚牜牞牠牣牨牫牮牯牱牷牸牻牼牿犄犉犍犎犓犛犨犭犮犱犴犾狁狇狉狌狕狖狘狟狥狳狴狺狻����������������������������������福腹複覆淵弗払沸仏物鮒分吻噴墳憤扮焚奮粉糞紛雰文聞丙併兵塀幣平弊柄並蔽閉陛米頁僻壁癖碧別瞥蔑箆偏変片篇編辺返遍便勉娩弁鞭保舗鋪圃捕歩甫補輔穂募墓慕戊暮母簿菩倣俸包呆報奉宝峰峯崩庖抱捧放方朋�".split(""); +for(j = 0; j != D[202].length; ++j) if(D[202][j].charCodeAt(0) !== 0xFFFD) { e[D[202][j]] = 51712 + j; d[51712 + j] = D[202][j];} +D[203] = "���������������������������������狾猂猄猅猇猋猍猒猓猘猙猞猢猤猧猨猬猱猲猵猺猻猽獃獍獐獒獖獘獝獞獟獠獦獧獩獫獬獮獯獱獷獹獼玀玁玃玅玆玎玐玓玕玗玘玜玞玟玠玢玥玦玪玫玭玵玷玹玼玽玿珅珆珉珋珌珏珒珓珖珙珝珡珣珦珧珩珴珵珷珹珺珻珽����������������������������������法泡烹砲縫胞芳萌蓬蜂褒訪豊邦鋒飽鳳鵬乏亡傍剖坊妨帽忘忙房暴望某棒冒紡肪膨謀貌貿鉾防吠頬北僕卜墨撲朴牧睦穆釦勃没殆堀幌奔本翻凡盆摩磨魔麻埋妹昧枚毎哩槙幕膜枕鮪柾鱒桝亦俣又抹末沫迄侭繭麿万慢満�".split(""); +for(j = 0; j != D[203].length; ++j) if(D[203][j].charCodeAt(0) !== 0xFFFD) { e[D[203][j]] = 51968 + j; d[51968 + j] = D[203][j];} +D[204] = "���������������������������������珿琀琁琄琇琊琑琚琛琤琦琨琩琪琫琬琭琮琯琰琱琹瑀瑃瑄瑆瑇瑋瑍瑑瑒瑗瑝瑢瑦瑧瑨瑫瑭瑮瑱瑲璀璁璅璆璇璉璏璐璑璒璘璙璚璜璟璠璡璣璦璨璩璪璫璮璯璱璲璵璹璻璿瓈瓉瓌瓐瓓瓘瓚瓛瓞瓟瓤瓨瓪瓫瓯瓴瓺瓻瓼瓿甆����������������������������������漫蔓味未魅巳箕岬密蜜湊蓑稔脈妙粍民眠務夢無牟矛霧鵡椋婿娘冥名命明盟迷銘鳴姪牝滅免棉綿緬面麺摸模茂妄孟毛猛盲網耗蒙儲木黙目杢勿餅尤戻籾貰問悶紋門匁也冶夜爺耶野弥矢厄役約薬訳躍靖柳薮鑓愉愈油癒�".split(""); +for(j = 0; j != D[204].length; ++j) if(D[204][j].charCodeAt(0) !== 0xFFFD) { e[D[204][j]] = 52224 + j; d[52224 + j] = D[204][j];} +D[205] = "���������������������������������甒甖甗甠甡甤甧甩甪甯甶甹甽甾甿畀畃畇畈畎畐畒畗畞畟畡畯畱畹畺畻畼畽畾疁疅疐疒疓疕疙疜疢疤疴疺疿痀痁痄痆痌痎痏痗痜痟痠痡痤痧痬痮痯痱痹瘀瘂瘃瘄瘇瘈瘊瘌瘏瘒瘓瘕瘖瘙瘛瘜瘝瘞瘣瘥瘦瘩瘭瘲瘳瘵瘸瘹����������������������������������諭輸唯佑優勇友宥幽悠憂揖有柚湧涌猶猷由祐裕誘遊邑郵雄融夕予余与誉輿預傭幼妖容庸揚揺擁曜楊様洋溶熔用窯羊耀葉蓉要謡踊遥陽養慾抑欲沃浴翌翼淀羅螺裸来莱頼雷洛絡落酪乱卵嵐欄濫藍蘭覧利吏履李梨理璃�".split(""); +for(j = 0; j != D[205].length; ++j) if(D[205][j].charCodeAt(0) !== 0xFFFD) { e[D[205][j]] = 52480 + j; d[52480 + j] = D[205][j];} +D[206] = "���������������������������������瘺瘼癊癀癁癃癄癅癉癋癕癙癟癤癥癭癮癯癱癴皁皅皌皍皕皛皜皝皟皠皢皣皤皥皦皧皨皪皭皽盁盅盉盋盌盎盔盙盠盦盨盬盰盱盶盹盼眀眆眊眎眒眔眕眗眙眚眜眢眨眭眮眯眴眵眶眹眽眾睂睅睆睊睍睎睏睒睖睗睜睞睟睠睢����������������������������������痢裏裡里離陸律率立葎掠略劉流溜琉留硫粒隆竜龍侶慮旅虜了亮僚両凌寮料梁涼猟療瞭稜糧良諒遼量陵領力緑倫厘林淋燐琳臨輪隣鱗麟瑠塁涙累類令伶例冷励嶺怜玲礼苓鈴隷零霊麗齢暦歴列劣烈裂廉恋憐漣煉簾練聯�".split(""); +for(j = 0; j != D[206].length; ++j) if(D[206][j].charCodeAt(0) !== 0xFFFD) { e[D[206][j]] = 52736 + j; d[52736 + j] = D[206][j];} +D[207] = "���������������������������������睤睧睪睬睰睲睳睴睺睽瞀瞄瞌瞍瞔瞕瞖瞚瞟瞢瞧瞪瞮瞯瞱瞵瞾矃矉矑矒矕矙矞矟矠矤矦矪矬矰矱矴矸矻砅砆砉砍砎砑砝砡砢砣砭砮砰砵砷硃硄硇硈硌硎硒硜硞硠硡硣硤硨硪确硺硾碊碏碔碘碡碝碞碟碤碨碬碭碰碱碲碳����������������������������������蓮連錬呂魯櫓炉賂路露労婁廊弄朗楼榔浪漏牢狼篭老聾蝋郎六麓禄肋録論倭和話歪賄脇惑枠鷲亙亘鰐詫藁蕨椀湾碗腕��������������������������������������������".split(""); +for(j = 0; j != D[207].length; ++j) if(D[207][j].charCodeAt(0) !== 0xFFFD) { e[D[207][j]] = 52992 + j; d[52992 + j] = D[207][j];} +D[208] = "���������������������������������碻碽碿磇磈磉磌磎磒磓磕磖磤磛磟磠磡磦磪磲磳礀磶磷磺磻磿礆礌礐礚礜礞礟礠礥礧礩礭礱礴礵礻礽礿祄祅祆祊祋祏祑祔祘祛祜祧祩祫祲祹祻祼祾禋禌禑禓禔禕禖禘禛禜禡禨禩禫禯禱禴禸离秂秄秇秈秊秏秔秖秚秝秞����������������������������������弌丐丕个丱丶丼丿乂乖乘亂亅豫亊舒弍于亞亟亠亢亰亳亶从仍仄仆仂仗仞仭仟价伉佚估佛佝佗佇佶侈侏侘佻佩佰侑佯來侖儘俔俟俎俘俛俑俚俐俤俥倚倨倔倪倥倅伜俶倡倩倬俾俯們倆偃假會偕偐偈做偖偬偸傀傚傅傴傲�".split(""); +for(j = 0; j != D[208].length; ++j) if(D[208][j].charCodeAt(0) !== 0xFFFD) { e[D[208][j]] = 53248 + j; d[53248 + j] = D[208][j];} +D[209] = "���������������������������������秠秢秥秪秫秭秱秸秼稂稃稇稉稊稌稑稕稛稞稡稧稫稭稯稰稴稵稸稹稺穄穅穇穈穌穕穖穙穜穝穟穠穥穧穪穭穵穸穾窀窂窅窆窊窋窐窑窔窞窠窣窬窳窵窹窻窼竆竉竌竎竑竛竨竩竫竬竱竴竻竽竾笇笔笟笣笧笩笪笫笭笮笯笰����������������������������������僉僊傳僂僖僞僥僭僣僮價僵儉儁儂儖儕儔儚儡儺儷儼儻儿兀兒兌兔兢竸兩兪兮冀冂囘册冉冏冑冓冕冖冤冦冢冩冪冫决冱冲冰况冽凅凉凛几處凩凭凰凵凾刄刋刔刎刧刪刮刳刹剏剄剋剌剞剔剪剴剩剳剿剽劍劔劒剱劈劑辨�".split(""); +for(j = 0; j != D[209].length; ++j) if(D[209][j].charCodeAt(0) !== 0xFFFD) { e[D[209][j]] = 53504 + j; d[53504 + j] = D[209][j];} +D[210] = "���������������������������������笱笴笽笿筀筁筇筎筕筠筤筦筩筪筭筯筲筳筷箄箉箎箐箑箖箛箞箠箥箬箯箰箲箵箶箺箻箼箽篂篅篈篊篔篖篗篙篚篛篨篪篲篴篵篸篹篺篼篾簁簂簃簄簆簉簋簌簎簏簙簛簠簥簦簨簬簱簳簴簶簹簺籆籊籕籑籒籓籙籚籛籜籝籞����������������������������������辧劬劭劼劵勁勍勗勞勣勦飭勠勳勵勸勹匆匈甸匍匐匏匕匚匣匯匱匳匸區卆卅丗卉卍凖卞卩卮夘卻卷厂厖厠厦厥厮厰厶參簒雙叟曼燮叮叨叭叺吁吽呀听吭吼吮吶吩吝呎咏呵咎呟呱呷呰咒呻咀呶咄咐咆哇咢咸咥咬哄哈咨�".split(""); +for(j = 0; j != D[210].length; ++j) if(D[210][j].charCodeAt(0) !== 0xFFFD) { e[D[210][j]] = 53760 + j; d[53760 + j] = D[210][j];} +D[211] = "���������������������������������籡籣籧籩籭籮籰籲籹籼籽粆粇粏粔粞粠粦粰粶粷粺粻粼粿糄糇糈糉糍糏糓糔糕糗糙糚糝糦糩糫糵紃紇紈紉紏紑紒紓紖紝紞紣紦紪紭紱紼紽紾絀絁絇絈絍絑絓絗絙絚絜絝絥絧絪絰絸絺絻絿綁綂綃綅綆綈綋綌綍綑綖綗綝����������������������������������咫哂咤咾咼哘哥哦唏唔哽哮哭哺哢唹啀啣啌售啜啅啖啗唸唳啝喙喀咯喊喟啻啾喘喞單啼喃喩喇喨嗚嗅嗟嗄嗜嗤嗔嘔嗷嘖嗾嗽嘛嗹噎噐營嘴嘶嘲嘸噫噤嘯噬噪嚆嚀嚊嚠嚔嚏嚥嚮嚶嚴囂嚼囁囃囀囈囎囑囓囗囮囹圀囿圄圉�".split(""); +for(j = 0; j != D[211].length; ++j) if(D[211][j].charCodeAt(0) !== 0xFFFD) { e[D[211][j]] = 54016 + j; d[54016 + j] = D[211][j];} +D[212] = "���������������������������������綞綦綧綪綳綶綷綹緂緃緄緅緆緌緍緎緗緙縀緢緥緦緪緫緭緱緵緶緹緺縈縐縑縕縗縜縝縠縧縨縬縭縯縳縶縿繄繅繇繎繐繒繘繟繡繢繥繫繮繯繳繸繾纁纆纇纊纍纑纕纘纚纝纞缼缻缽缾缿罃罄罇罏罒罓罛罜罝罡罣罤罥罦罭����������������������������������圈國圍圓團圖嗇圜圦圷圸坎圻址坏坩埀垈坡坿垉垓垠垳垤垪垰埃埆埔埒埓堊埖埣堋堙堝塲堡塢塋塰毀塒堽塹墅墹墟墫墺壞墻墸墮壅壓壑壗壙壘壥壜壤壟壯壺壹壻壼壽夂夊夐夛梦夥夬夭夲夸夾竒奕奐奎奚奘奢奠奧奬奩�".split(""); +for(j = 0; j != D[212].length; ++j) if(D[212][j].charCodeAt(0) !== 0xFFFD) { e[D[212][j]] = 54272 + j; d[54272 + j] = D[212][j];} +D[213] = "���������������������������������罱罽罾罿羀羋羍羏羐羑羖羗羜羡羢羦羪羭羴羼羿翀翃翈翎翏翛翟翣翥翨翬翮翯翲翺翽翾翿耇耈耊耍耎耏耑耓耔耖耝耞耟耠耤耦耬耮耰耴耵耷耹耺耼耾聀聄聠聤聦聭聱聵肁肈肎肜肞肦肧肫肸肹胈胍胏胒胔胕胗胘胠胭胮����������������������������������奸妁妝佞侫妣妲姆姨姜妍姙姚娥娟娑娜娉娚婀婬婉娵娶婢婪媚媼媾嫋嫂媽嫣嫗嫦嫩嫖嫺嫻嬌嬋嬖嬲嫐嬪嬶嬾孃孅孀孑孕孚孛孥孩孰孳孵學斈孺宀它宦宸寃寇寉寔寐寤實寢寞寥寫寰寶寳尅將專對尓尠尢尨尸尹屁屆屎屓�".split(""); +for(j = 0; j != D[213].length; ++j) if(D[213][j].charCodeAt(0) !== 0xFFFD) { e[D[213][j]] = 54528 + j; d[54528 + j] = D[213][j];} +D[214] = "���������������������������������胰胲胳胶胹胺胾脃脋脖脗脘脜脞脠脤脧脬脰脵脺脼腅腇腊腌腒腗腠腡腧腨腩腭腯腷膁膐膄膅膆膋膎膖膘膛膞膢膮膲膴膻臋臃臅臊臎臏臕臗臛臝臞臡臤臫臬臰臱臲臵臶臸臹臽臿舀舃舏舓舔舙舚舝舡舢舨舲舴舺艃艄艅艆����������������������������������屐屏孱屬屮乢屶屹岌岑岔妛岫岻岶岼岷峅岾峇峙峩峽峺峭嶌峪崋崕崗嵜崟崛崑崔崢崚崙崘嵌嵒嵎嵋嵬嵳嵶嶇嶄嶂嶢嶝嶬嶮嶽嶐嶷嶼巉巍巓巒巖巛巫已巵帋帚帙帑帛帶帷幄幃幀幎幗幔幟幢幤幇幵并幺麼广庠廁廂廈廐廏�".split(""); +for(j = 0; j != D[214].length; ++j) if(D[214][j].charCodeAt(0) !== 0xFFFD) { e[D[214][j]] = 54784 + j; d[54784 + j] = D[214][j];} +D[215] = "���������������������������������艋艎艏艑艖艜艠艣艧艭艴艻艽艿芀芁芃芄芇芉芊芎芑芔芖芘芚芛芠芡芣芤芧芨芩芪芮芰芲芴芷芺芼芾芿苆苐苕苚苠苢苤苨苪苭苯苶苷苽苾茀茁茇茈茊茋荔茛茝茞茟茡茢茬茭茮茰茳茷茺茼茽荂荃荄荇荍荎荑荕荖荗荰荸����������������������������������廖廣廝廚廛廢廡廨廩廬廱廳廰廴廸廾弃弉彝彜弋弑弖弩弭弸彁彈彌彎弯彑彖彗彙彡彭彳彷徃徂彿徊很徑徇從徙徘徠徨徭徼忖忻忤忸忱忝悳忿怡恠怙怐怩怎怱怛怕怫怦怏怺恚恁恪恷恟恊恆恍恣恃恤恂恬恫恙悁悍惧悃悚�".split(""); +for(j = 0; j != D[215].length; ++j) if(D[215][j].charCodeAt(0) !== 0xFFFD) { e[D[215][j]] = 55040 + j; d[55040 + j] = D[215][j];} +D[216] = "���������������������������������荽荿莀莂莄莆莍莒莔莕莘莙莛莜莝莦莧莩莬莾莿菀菇菉菏菐菑菔菝荓菨菪菶菸菹菼萁萆萊萏萑萕萙莭萯萹葅葇葈葊葍葏葑葒葖葘葙葚葜葠葤葥葧葪葰葳葴葶葸葼葽蒁蒅蒒蒓蒕蒞蒦蒨蒩蒪蒯蒱蒴蒺蒽蒾蓀蓂蓇蓈蓌蓏蓓����������������������������������悄悛悖悗悒悧悋惡悸惠惓悴忰悽惆悵惘慍愕愆惶惷愀惴惺愃愡惻惱愍愎慇愾愨愧慊愿愼愬愴愽慂慄慳慷慘慙慚慫慴慯慥慱慟慝慓慵憙憖憇憬憔憚憊憑憫憮懌懊應懷懈懃懆憺懋罹懍懦懣懶懺懴懿懽懼懾戀戈戉戍戌戔戛�".split(""); +for(j = 0; j != D[216].length; ++j) if(D[216][j].charCodeAt(0) !== 0xFFFD) { e[D[216][j]] = 55296 + j; d[55296 + j] = D[216][j];} +D[217] = "���������������������������������蓜蓧蓪蓯蓰蓱蓲蓷蔲蓺蓻蓽蔂蔃蔇蔌蔎蔐蔜蔞蔢蔣蔤蔥蔧蔪蔫蔯蔳蔴蔶蔿蕆蕏蕐蕑蕒蕓蕖蕙蕜蕝蕞蕟蕠蕡蕢蕤蕫蕯蕹蕺蕻蕽蕿薁薅薆薉薋薌薏薓薘薝薟薠薢薥薧薴薶薷薸薼薽薾薿藂藇藊藋藎薭藘藚藟藠藦藨藭藳藶藼����������������������������������戞戡截戮戰戲戳扁扎扞扣扛扠扨扼抂抉找抒抓抖拔抃抔拗拑抻拏拿拆擔拈拜拌拊拂拇抛拉挌拮拱挧挂挈拯拵捐挾捍搜捏掖掎掀掫捶掣掏掉掟掵捫捩掾揩揀揆揣揉插揶揄搖搴搆搓搦搶攝搗搨搏摧摯摶摎攪撕撓撥撩撈撼�".split(""); +for(j = 0; j != D[217].length; ++j) if(D[217][j].charCodeAt(0) !== 0xFFFD) { e[D[217][j]] = 55552 + j; d[55552 + j] = D[217][j];} +D[218] = "���������������������������������藿蘀蘄蘅蘍蘎蘐蘑蘒蘘蘙蘛蘞蘡蘧蘩蘶蘸蘺蘼蘽虀虂虆虒虓虖虗虘虙虝虠虡虢虣虤虩虬虯虵虶虷虺蚍蚑蚖蚘蚚蚜蚡蚦蚧蚨蚭蚱蚳蚴蚵蚷蚸蚹蚿蛀蛁蛃蛅蛑蛒蛕蛗蛚蛜蛠蛣蛥蛧蚈蛺蛼蛽蜄蜅蜇蜋蜎蜏蜐蜓蜔蜙蜞蜟蜡蜣����������������������������������據擒擅擇撻擘擂擱擧舉擠擡抬擣擯攬擶擴擲擺攀擽攘攜攅攤攣攫攴攵攷收攸畋效敖敕敍敘敞敝敲數斂斃變斛斟斫斷旃旆旁旄旌旒旛旙无旡旱杲昊昃旻杳昵昶昴昜晏晄晉晁晞晝晤晧晨晟晢晰暃暈暎暉暄暘暝曁暹曉暾暼�".split(""); +for(j = 0; j != D[218].length; ++j) if(D[218][j].charCodeAt(0) !== 0xFFFD) { e[D[218][j]] = 55808 + j; d[55808 + j] = D[218][j];} +D[219] = "���������������������������������蜨蜮蜯蜱蜲蜹蜺蜼蜽蜾蝀蝃蝅蝍蝘蝝蝡蝤蝥蝯蝱蝲蝻螃螄螅螆螇螈螉螋螌螐螓螕螗螘螙螞螠螣螧螬螭螮螱螵螾螿蟁蟈蟉蟊蟎蟕蟖蟙蟚蟜蟟蟢蟣蟤蟪蟫蟭蟱蟳蟸蟺蟿蠁蠃蠆蠉蠊蠋蠐蠙蠒蠓蠔蠘蠚蠛蠜蠞蠟蠨蠭蠮蠰蠲蠵����������������������������������曄暸曖曚曠昿曦曩曰曵曷朏朖朞朦朧霸朮朿朶杁朸朷杆杞杠杙杣杤枉杰枩杼杪枌枋枦枡枅枷柯枴柬枳柩枸柤柞柝柢柮枹柎柆柧檜栞框栩桀桍栲桎梳栫桙档桷桿梟梏梭梔條梛梃檮梹桴梵梠梺椏梍桾椁棊椈棘椢椦棡椌棍�".split(""); +for(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];} +D[220] = "���������������������������������蠺蠼衁衃衅衈衉衊衋衎衑衕衖衘衚衜衟衠衤衩衱衹衻袀袘袚袛袜袟袠袨袪袺袽袾裀裊裋裌裍裎裑裒裓裛裞裧裯裰裱裵裷褁褆褍褎褏褕褖褘褙褚褜褠褦褧褨褰褱褲褵褹褺褾襀襂襅襆襉襏襒襗襚襛襜襡襢襣襫襮襰襳襵襺����������������������������������棔棧棕椶椒椄棗棣椥棹棠棯椨椪椚椣椡棆楹楷楜楸楫楔楾楮椹楴椽楙椰楡楞楝榁楪榲榮槐榿槁槓榾槎寨槊槝榻槃榧樮榑榠榜榕榴槞槨樂樛槿權槹槲槧樅榱樞槭樔槫樊樒櫁樣樓橄樌橲樶橸橇橢橙橦橈樸樢檐檍檠檄檢檣�".split(""); +for(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];} +D[221] = "���������������������������������襻襼襽覉覍覐覔覕覛覜覟覠覥覰覴覵覶覷覼觔觕觖觗觘觥觩觫觭觱觳觶觹觽觿訄訅訇訏訑訒訔訕訞訠訢訤訦訫訬訯訵訷訽訾詀詃詅詇詉詍詎詓詖詗詘詜詝詡詥詧詵詶詷詹詺詻詾詿誀誃誆誋誏誐誒誖誗誙誟誧誩誮誯誳����������������������������������檗蘗檻櫃櫂檸檳檬櫞櫑櫟檪櫚櫪櫻欅蘖櫺欒欖鬱欟欸欷盜欹飮歇歃歉歐歙歔歛歟歡歸歹歿殀殄殃殍殘殕殞殤殪殫殯殲殱殳殷殼毆毋毓毟毬毫毳毯麾氈氓气氛氤氣汞汕汢汪沂沍沚沁沛汾汨汳沒沐泄泱泓沽泗泅泝沮沱沾�".split(""); +for(j = 0; j != D[221].length; ++j) if(D[221][j].charCodeAt(0) !== 0xFFFD) { e[D[221][j]] = 56576 + j; d[56576 + j] = D[221][j];} +D[222] = "���������������������������������誶誷誻誾諃諆諈諉諊諑諓諔諕諗諝諟諬諰諴諵諶諼諿謅謆謋謑謜謞謟謊謭謰謷謼譂譃譄譅譆譈譒譓譔譙譍譞譣譭譶譸譹譼譾讁讄讅讋讍讏讔讕讜讞讟谸谹谽谾豅豇豉豋豏豑豓豔豗豘豛豝豙豣豤豦豨豩豭豳豵豶豻豾貆����������������������������������沺泛泯泙泪洟衍洶洫洽洸洙洵洳洒洌浣涓浤浚浹浙涎涕濤涅淹渕渊涵淇淦涸淆淬淞淌淨淒淅淺淙淤淕淪淮渭湮渮渙湲湟渾渣湫渫湶湍渟湃渺湎渤滿渝游溂溪溘滉溷滓溽溯滄溲滔滕溏溥滂溟潁漑灌滬滸滾漿滲漱滯漲滌�".split(""); +for(j = 0; j != D[222].length; ++j) if(D[222][j].charCodeAt(0) !== 0xFFFD) { e[D[222][j]] = 56832 + j; d[56832 + j] = D[222][j];} +D[223] = "���������������������������������貇貋貐貒貓貙貛貜貤貹貺賅賆賉賋賏賖賕賙賝賡賨賬賯賰賲賵賷賸賾賿贁贃贉贒贗贛赥赩赬赮赿趂趄趈趍趐趑趕趞趟趠趦趫趬趯趲趵趷趹趻跀跅跆跇跈跊跎跑跔跕跗跙跤跥跧跬跰趼跱跲跴跽踁踄踅踆踋踑踔踖踠踡踢����������������������������������漾漓滷澆潺潸澁澀潯潛濳潭澂潼潘澎澑濂潦澳澣澡澤澹濆澪濟濕濬濔濘濱濮濛瀉瀋濺瀑瀁瀏濾瀛瀚潴瀝瀘瀟瀰瀾瀲灑灣炙炒炯烱炬炸炳炮烟烋烝烙焉烽焜焙煥煕熈煦煢煌煖煬熏燻熄熕熨熬燗熹熾燒燉燔燎燠燬燧燵燼�".split(""); +for(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];} +D[224] = "���������������������������������踣踦踧踱踳踶踷踸踹踽蹀蹁蹋蹍蹎蹏蹔蹛蹜蹝蹞蹡蹢蹩蹬蹭蹯蹰蹱蹹蹺蹻躂躃躉躐躒躕躚躛躝躞躢躧躩躭躮躳躵躺躻軀軁軃軄軇軏軑軔軜軨軮軰軱軷軹軺軭輀輂輇輈輏輐輖輗輘輞輠輡輣輥輧輨輬輭輮輴輵輶輷輺轀轁����������������������������������燹燿爍爐爛爨爭爬爰爲爻爼爿牀牆牋牘牴牾犂犁犇犒犖犢犧犹犲狃狆狄狎狒狢狠狡狹狷倏猗猊猜猖猝猴猯猩猥猾獎獏默獗獪獨獰獸獵獻獺珈玳珎玻珀珥珮珞璢琅瑯琥珸琲琺瑕琿瑟瑙瑁瑜瑩瑰瑣瑪瑶瑾璋璞璧瓊瓏瓔珱�".split(""); +for(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];} +D[225] = "���������������������������������轃轇轏轑轒轓轔轕轘轝轞轥辝辠辡辤辥辦辵辶辸达迀迁迆迊迋迍运迒迓迕迠迣迤迨迮迱迵迶迻迾适逄逈逌逘逛逨逩逯逪逬逭逳逴逷逿遃遄遌遛遝遢遦遧遬遰遴遹邅邈邋邌邎邐邕邗邘邙邛邠邡邢邥邰邲邳邴邶邽郌邾郃����������������������������������瓠瓣瓧瓩瓮瓲瓰瓱瓸瓷甄甃甅甌甎甍甕甓甞甦甬甼畄畍畊畉畛畆畚畩畤畧畫畭畸當疆疇畴疊疉疂疔疚疝疥疣痂疳痃疵疽疸疼疱痍痊痒痙痣痞痾痿痼瘁痰痺痲痳瘋瘍瘉瘟瘧瘠瘡瘢瘤瘴瘰瘻癇癈癆癜癘癡癢癨癩癪癧癬癰�".split(""); +for(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];} +D[226] = "���������������������������������郄郅郇郈郕郗郘郙郜郝郟郥郒郶郫郯郰郴郾郿鄀鄄鄅鄆鄈鄍鄐鄔鄖鄗鄘鄚鄜鄞鄠鄥鄢鄣鄧鄩鄮鄯鄱鄴鄶鄷鄹鄺鄼鄽酃酇酈酏酓酗酙酚酛酡酤酧酭酴酹酺酻醁醃醅醆醊醎醑醓醔醕醘醞醡醦醨醬醭醮醰醱醲醳醶醻醼醽醿����������������������������������癲癶癸發皀皃皈皋皎皖皓皙皚皰皴皸皹皺盂盍盖盒盞盡盥盧盪蘯盻眈眇眄眩眤眞眥眦眛眷眸睇睚睨睫睛睥睿睾睹瞎瞋瞑瞠瞞瞰瞶瞹瞿瞼瞽瞻矇矍矗矚矜矣矮矼砌砒礦砠礪硅碎硴碆硼碚碌碣碵碪碯磑磆磋磔碾碼磅磊磬�".split(""); +for(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];} +D[227] = "���������������������������������釂釃釅釓釔釗釙釚釞釤釥釩釪釬釭釮釯釰釱釷釹釻釽鈀鈁鈄鈅鈆鈇鈉鈊鈌鈐鈒鈓鈖鈘鈜鈝鈣鈤鈥鈦鈨鈮鈯鈰鈳鈵鈶鈸鈹鈺鈼鈾鉀鉂鉃鉆鉇鉊鉍鉎鉏鉑鉘鉙鉜鉝鉠鉡鉥鉧鉨鉩鉮鉯鉰鉵鉶鉷鉸鉹鉻鉼鉽鉿銈銉銊銍銎銒銗����������������������������������磧磚磽磴礇礒礑礙礬礫祀祠祗祟祚祕祓祺祿禊禝禧齋禪禮禳禹禺秉秕秧秬秡秣稈稍稘稙稠稟禀稱稻稾稷穃穗穉穡穢穩龝穰穹穽窈窗窕窘窖窩竈窰窶竅竄窿邃竇竊竍竏竕竓站竚竝竡竢竦竭竰笂笏笊笆笳笘笙笞笵笨笶筐�".split(""); +for(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];} +D[228] = "���������������������������������銙銟銠銤銥銧銨銫銯銲銶銸銺銻銼銽銿鋀鋁鋂鋃鋅鋆鋇鋈鋋鋌鋍鋎鋐鋓鋕鋗鋘鋙鋜鋝鋟鋠鋡鋣鋥鋧鋨鋬鋮鋰鋹鋻鋿錀錂錈錍錑錔錕錜錝錞錟錡錤錥錧錩錪錳錴錶錷鍇鍈鍉鍐鍑鍒鍕鍗鍘鍚鍞鍤鍥鍧鍩鍪鍭鍯鍰鍱鍳鍴鍶����������������������������������筺笄筍笋筌筅筵筥筴筧筰筱筬筮箝箘箟箍箜箚箋箒箏筝箙篋篁篌篏箴篆篝篩簑簔篦篥籠簀簇簓篳篷簗簍篶簣簧簪簟簷簫簽籌籃籔籏籀籐籘籟籤籖籥籬籵粃粐粤粭粢粫粡粨粳粲粱粮粹粽糀糅糂糘糒糜糢鬻糯糲糴糶糺紆�".split(""); +for(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];} +D[229] = "���������������������������������鍺鍽鍿鎀鎁鎂鎈鎊鎋鎍鎏鎒鎕鎘鎛鎞鎡鎣鎤鎦鎨鎫鎴鎵鎶鎺鎩鏁鏄鏅鏆鏇鏉鏊鏋鏌鏍鏓鏙鏜鏞鏟鏢鏦鏧鏹鏷鏸鏺鏻鏽鐁鐂鐄鐈鐉鐍鐎鐏鐕鐖鐗鐟鐮鐯鐱鐲鐳鐴鐻鐿鐽鑃鑅鑈鑊鑌鑕鑙鑜鑟鑡鑣鑨鑫鑭鑮鑯鑱鑲钄钃镸镹����������������������������������紂紜紕紊絅絋紮紲紿紵絆絳絖絎絲絨絮絏絣經綉絛綏絽綛綺綮綣綵緇綽綫總綢綯緜綸綟綰緘緝緤緞緻緲緡縅縊縣縡縒縱縟縉縋縢繆繦縻縵縹繃縷縲縺繧繝繖繞繙繚繹繪繩繼繻纃緕繽辮繿纈纉續纒纐纓纔纖纎纛纜缸缺�".split(""); +for(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];} +D[230] = "���������������������������������镾閄閈閌閍閎閝閞閟閡閦閩閫閬閴閶閺閽閿闆闈闉闋闐闑闒闓闙闚闝闞闟闠闤闦阝阞阢阤阥阦阬阱阳阷阸阹阺阼阽陁陒陔陖陗陘陡陮陴陻陼陾陿隁隂隃隄隉隑隖隚隝隟隤隥隦隩隮隯隳隺雊雒嶲雘雚雝雞雟雩雯雱雺霂����������������������������������罅罌罍罎罐网罕罔罘罟罠罨罩罧罸羂羆羃羈羇羌羔羞羝羚羣羯羲羹羮羶羸譱翅翆翊翕翔翡翦翩翳翹飜耆耄耋耒耘耙耜耡耨耿耻聊聆聒聘聚聟聢聨聳聲聰聶聹聽聿肄肆肅肛肓肚肭冐肬胛胥胙胝胄胚胖脉胯胱脛脩脣脯腋�".split(""); +for(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];} +D[231] = "���������������������������������霃霅霉霚霛霝霡霢霣霨霱霳靁靃靊靎靏靕靗靘靚靛靣靧靪靮靳靶靷靸靻靽靿鞀鞉鞕鞖鞗鞙鞚鞞鞟鞢鞬鞮鞱鞲鞵鞶鞸鞹鞺鞼鞾鞿韁韄韅韇韉韊韌韍韎韐韑韔韗韘韙韝韞韠韛韡韤韯韱韴韷韸韺頇頊頙頍頎頔頖頜頞頠頣頦����������������������������������隋腆脾腓腑胼腱腮腥腦腴膃膈膊膀膂膠膕膤膣腟膓膩膰膵膾膸膽臀臂膺臉臍臑臙臘臈臚臟臠臧臺臻臾舁舂舅與舊舍舐舖舩舫舸舳艀艙艘艝艚艟艤艢艨艪艫舮艱艷艸艾芍芒芫芟芻芬苡苣苟苒苴苳苺莓范苻苹苞茆苜茉苙�".split(""); +for(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];} +D[232] = "���������������������������������頫頮頯頰頲頳頵頥頾顄顇顊顑顒顓顖顗顙顚顢顣顥顦顪顬颫颭颮颰颴颷颸颺颻颿飂飅飈飌飡飣飥飦飧飪飳飶餂餇餈餑餕餖餗餚餛餜餟餢餦餧餫餱餲餳餴餵餹餺餻餼饀饁饆饇饈饍饎饔饘饙饛饜饞饟饠馛馝馟馦馰馱馲馵����������������������������������茵茴茖茲茱荀茹荐荅茯茫茗茘莅莚莪莟莢莖茣莎莇莊荼莵荳荵莠莉莨菴萓菫菎菽萃菘萋菁菷萇菠菲萍萢萠莽萸蔆菻葭萪萼蕚蒄葷葫蒭葮蒂葩葆萬葯葹萵蓊葢蒹蒿蒟蓙蓍蒻蓚蓐蓁蓆蓖蒡蔡蓿蓴蔗蔘蔬蔟蔕蔔蓼蕀蕣蕘蕈�".split(""); +for(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];} +D[233] = "���������������������������������馹馺馽馿駃駉駓駔駙駚駜駞駧駪駫駬駰駴駵駹駽駾騂騃騄騋騌騐騑騖騞騠騢騣騤騧騭騮騳騵騶騸驇驁驄驊驋驌驎驑驔驖驝骪骬骮骯骲骴骵骶骹骻骾骿髁髃髆髈髎髐髒髕髖髗髛髜髠髤髥髧髩髬髲髳髵髹髺髽髿鬀鬁鬂鬃����������������������������������蕁蘂蕋蕕薀薤薈薑薊薨蕭薔薛藪薇薜蕷蕾薐藉薺藏薹藐藕藝藥藜藹蘊蘓蘋藾藺蘆蘢蘚蘰蘿虍乕虔號虧虱蚓蚣蚩蚪蚋蚌蚶蚯蛄蛆蚰蛉蠣蚫蛔蛞蛩蛬蛟蛛蛯蜒蜆蜈蜀蜃蛻蜑蜉蜍蛹蜊蜴蜿蜷蜻蜥蜩蜚蝠蝟蝸蝌蝎蝴蝗蝨蝮蝙�".split(""); +for(j = 0; j != D[233].length; ++j) if(D[233][j].charCodeAt(0) !== 0xFFFD) { e[D[233][j]] = 59648 + j; d[59648 + j] = D[233][j];} +D[234] = "���������������������������������鬄鬅鬈鬉鬋鬌鬍鬎鬐鬒鬖鬙鬛鬜鬠鬦鬫鬭鬳鬴鬵鬷鬹鬺鬽魈魋魌魕魖魗魛魞魡魣魥魦魨魪魫魬魭魮魳魵魷魸魹魿鮀鮄鮅鮆鮇鮉鮊鮋鮍鮏鮐鮔鮚鮝鮞鮦鮧鮩鮬鮰鮱鮲鮷鮸鮻鮼鮾鮿鯁鯇鯈鯎鯐鯗鯘鯝鯟鯥鯧鯪鯫鯯鯳鯷鯸����������������������������������蝓蝣蝪蠅螢螟螂螯蟋螽蟀蟐雖螫蟄螳蟇蟆螻蟯蟲蟠蠏蠍蟾蟶蟷蠎蟒蠑蠖蠕蠢蠡蠱蠶蠹蠧蠻衄衂衒衙衞衢衫袁衾袞衵衽袵衲袂袗袒袮袙袢袍袤袰袿袱裃裄裔裘裙裝裹褂裼裴裨裲褄褌褊褓襃褞褥褪褫襁襄褻褶褸襌褝襠襞�".split(""); +for(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];} +D[235] = "���������������������������������鯹鯺鯽鯿鰀鰂鰋鰏鰑鰖鰘鰙鰚鰜鰞鰢鰣鰦鰧鰨鰩鰪鰱鰵鰶鰷鰽鱁鱃鱄鱅鱉鱊鱎鱏鱐鱓鱔鱖鱘鱛鱝鱞鱟鱣鱩鱪鱜鱫鱨鱮鱰鱲鱵鱷鱻鳦鳲鳷鳹鴋鴂鴑鴗鴘鴜鴝鴞鴯鴰鴲鴳鴴鴺鴼鵅鴽鵂鵃鵇鵊鵓鵔鵟鵣鵢鵥鵩鵪鵫鵰鵶鵷鵻����������������������������������襦襤襭襪襯襴襷襾覃覈覊覓覘覡覩覦覬覯覲覺覽覿觀觚觜觝觧觴觸訃訖訐訌訛訝訥訶詁詛詒詆詈詼詭詬詢誅誂誄誨誡誑誥誦誚誣諄諍諂諚諫諳諧諤諱謔諠諢諷諞諛謌謇謚諡謖謐謗謠謳鞫謦謫謾謨譁譌譏譎證譖譛譚譫�".split(""); +for(j = 0; j != D[235].length; ++j) if(D[235][j].charCodeAt(0) !== 0xFFFD) { e[D[235][j]] = 60160 + j; d[60160 + j] = D[235][j];} +D[236] = "���������������������������������鵼鵾鶃鶄鶆鶊鶍鶎鶒鶓鶕鶖鶗鶘鶡鶪鶬鶮鶱鶵鶹鶼鶿鷃鷇鷉鷊鷔鷕鷖鷗鷚鷞鷟鷠鷥鷧鷩鷫鷮鷰鷳鷴鷾鸊鸂鸇鸎鸐鸑鸒鸕鸖鸙鸜鸝鹺鹻鹼麀麂麃麄麅麇麎麏麖麘麛麞麤麨麬麮麯麰麳麴麵黆黈黋黕黟黤黧黬黭黮黰黱黲黵����������������������������������譟譬譯譴譽讀讌讎讒讓讖讙讚谺豁谿豈豌豎豐豕豢豬豸豺貂貉貅貊貍貎貔豼貘戝貭貪貽貲貳貮貶賈賁賤賣賚賽賺賻贄贅贊贇贏贍贐齎贓賍贔贖赧赭赱赳趁趙跂趾趺跏跚跖跌跛跋跪跫跟跣跼踈踉跿踝踞踐踟蹂踵踰踴蹊�".split(""); +for(j = 0; j != D[236].length; ++j) if(D[236][j].charCodeAt(0) !== 0xFFFD) { e[D[236][j]] = 60416 + j; d[60416 + j] = D[236][j];} +D[237] = "���������������������������������黸黿鼂鼃鼉鼏鼐鼑鼒鼔鼖鼗鼙鼚鼛鼟鼢鼦鼪鼫鼯鼱鼲鼴鼷鼹鼺鼼鼽鼿齁齃齄齅齆齇齓齕齖齗齘齚齝齞齨齩齭齮齯齰齱齳齵齺齽龏龐龑龒龔龖龗龞龡龢龣龥�������������������������������������������������������������蹇蹉蹌蹐蹈蹙蹤蹠踪蹣蹕蹶蹲蹼躁躇躅躄躋躊躓躑躔躙躪躡躬躰軆躱躾軅軈軋軛軣軼軻軫軾輊輅輕輒輙輓輜輟輛輌輦輳輻輹轅轂輾轌轉轆轎轗轜轢轣轤辜辟辣辭辯辷迚迥迢迪迯邇迴逅迹迺逑逕逡逍逞逖逋逧逶逵逹迸�".split(""); +for(j = 0; j != D[237].length; ++j) if(D[237][j].charCodeAt(0) !== 0xFFFD) { e[D[237][j]] = 60672 + j; d[60672 + j] = D[237][j];} +D[238] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������遏遐遑遒逎遉逾遖遘遞遨遯遶隨遲邂遽邁邀邊邉邏邨邯邱邵郢郤扈郛鄂鄒鄙鄲鄰酊酖酘酣酥酩酳酲醋醉醂醢醫醯醪醵醴醺釀釁釉釋釐釖釟釡釛釼釵釶鈞釿鈔鈬鈕鈑鉞鉗鉅鉉鉤鉈銕鈿鉋鉐銜銖銓銛鉚鋏銹銷鋩錏鋺鍄錮�".split(""); +for(j = 0; j != D[238].length; ++j) if(D[238][j].charCodeAt(0) !== 0xFFFD) { e[D[238][j]] = 60928 + j; d[60928 + j] = D[238][j];} +D[239] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������錙錢錚錣錺錵錻鍜鍠鍼鍮鍖鎰鎬鎭鎔鎹鏖鏗鏨鏥鏘鏃鏝鏐鏈鏤鐚鐔鐓鐃鐇鐐鐶鐫鐵鐡鐺鑁鑒鑄鑛鑠鑢鑞鑪鈩鑰鑵鑷鑽鑚鑼鑾钁鑿閂閇閊閔閖閘閙閠閨閧閭閼閻閹閾闊濶闃闍闌闕闔闖關闡闥闢阡阨阮阯陂陌陏陋陷陜陞�".split(""); +for(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];} +D[240] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������陝陟陦陲陬隍隘隕隗險隧隱隲隰隴隶隸隹雎雋雉雍襍雜霍雕雹霄霆霈霓霎霑霏霖霙霤霪霰霹霽霾靄靆靈靂靉靜靠靤靦靨勒靫靱靹鞅靼鞁靺鞆鞋鞏鞐鞜鞨鞦鞣鞳鞴韃韆韈韋韜韭齏韲竟韶韵頏頌頸頤頡頷頽顆顏顋顫顯顰�".split(""); +for(j = 0; j != D[240].length; ++j) if(D[240][j].charCodeAt(0) !== 0xFFFD) { e[D[240][j]] = 61440 + j; d[61440 + j] = D[240][j];} +D[241] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������顱顴顳颪颯颱颶飄飃飆飩飫餃餉餒餔餘餡餝餞餤餠餬餮餽餾饂饉饅饐饋饑饒饌饕馗馘馥馭馮馼駟駛駝駘駑駭駮駱駲駻駸騁騏騅駢騙騫騷驅驂驀驃騾驕驍驛驗驟驢驥驤驩驫驪骭骰骼髀髏髑髓體髞髟髢髣髦髯髫髮髴髱髷�".split(""); +for(j = 0; j != D[241].length; ++j) if(D[241][j].charCodeAt(0) !== 0xFFFD) { e[D[241][j]] = 61696 + j; d[61696 + j] = D[241][j];} +D[242] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������髻鬆鬘鬚鬟鬢鬣鬥鬧鬨鬩鬪鬮鬯鬲魄魃魏魍魎魑魘魴鮓鮃鮑鮖鮗鮟鮠鮨鮴鯀鯊鮹鯆鯏鯑鯒鯣鯢鯤鯔鯡鰺鯲鯱鯰鰕鰔鰉鰓鰌鰆鰈鰒鰊鰄鰮鰛鰥鰤鰡鰰鱇鰲鱆鰾鱚鱠鱧鱶鱸鳧鳬鳰鴉鴈鳫鴃鴆鴪鴦鶯鴣鴟鵄鴕鴒鵁鴿鴾鵆鵈�".split(""); +for(j = 0; j != D[242].length; ++j) if(D[242][j].charCodeAt(0) !== 0xFFFD) { e[D[242][j]] = 61952 + j; d[61952 + j] = D[242][j];} +D[243] = "���������������������������������ⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹ����������'"���炻仼僴凬匇匤﨎咊坙﨏塚增寬峵嵓﨑德悅愠敎�晥晴朗栁﨓﨔橫櫢淸淲瀨凞猪甁皂皞益礰礼神祥福竧靖精綠緖羽荢﨟薰蘒﨡蠇諸譿賴赶﨣﨤逸郞都鄕﨧﨨閒隆����������������������������������鵝鵞鵤鵑鵐鵙鵲鶉鶇鶫鵯鵺鶚鶤鶩鶲鷄鷁鶻鶸鶺鷆鷏鷂鷙鷓鷸鷦鷭鷯鷽鸚鸛鸞鹵鹹鹽麁麈麋麌麒麕麑麝麥麩麸麪麭靡黌黎黏黐黔黜點黝黠黥黨黯黴黶黷黹黻黼黽鼇鼈皷鼕鼡鼬鼾齊齒齔齣齟齠齡齦齧齬齪齷齲齶龕龜龠�".split(""); +for(j = 0; j != D[243].length; ++j) if(D[243][j].charCodeAt(0) !== 0xFFFD) { e[D[243][j]] = 62208 + j; d[62208 + j] = D[243][j];} +D[244] = "���������������������������������﨩霻�靑飯飼館馞髙魲鶴黑������������������������������������������������������靍�������������������������������������������������������������堯槇遙瑤凜熙�����������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[244].length; ++j) if(D[244][j].charCodeAt(0) !== 0xFFFD) { e[D[244][j]] = 62464 + j; d[62464 + j] = D[244][j];} +D[245] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[245].length; ++j) if(D[245][j].charCodeAt(0) !== 0xFFFD) { e[D[245][j]] = 62720 + j; d[62720 + j] = D[245][j];} +D[246] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[246].length; ++j) if(D[246][j].charCodeAt(0) !== 0xFFFD) { e[D[246][j]] = 62976 + j; d[62976 + j] = D[246][j];} +D[247] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[247].length; ++j) if(D[247][j].charCodeAt(0) !== 0xFFFD) { e[D[247][j]] = 63232 + j; d[63232 + j] = D[247][j];} +D[248] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[248].length; ++j) if(D[248][j].charCodeAt(0) !== 0xFFFD) { e[D[248][j]] = 63488 + j; d[63488 + j] = D[248][j];} +D[249] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[249].length; ++j) if(D[249][j].charCodeAt(0) !== 0xFFFD) { e[D[249][j]] = 63744 + j; d[63744 + j] = D[249][j];} +D[250] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[250].length; ++j) if(D[250][j].charCodeAt(0) !== 0xFFFD) { e[D[250][j]] = 64000 + j; d[64000 + j] = D[250][j];} +D[251] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[251].length; ++j) if(D[251][j].charCodeAt(0) !== 0xFFFD) { e[D[251][j]] = 64256 + j; d[64256 + j] = D[251][j];} +D[252] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[252].length; ++j) if(D[252][j].charCodeAt(0) !== 0xFFFD) { e[D[252][j]] = 64512 + j; d[64512 + j] = D[252][j];} +D[253] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[253].length; ++j) if(D[253][j].charCodeAt(0) !== 0xFFFD) { e[D[253][j]] = 64768 + j; d[64768 + j] = D[253][j];} +D[254] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[254].length; ++j) if(D[254][j].charCodeAt(0) !== 0xFFFD) { e[D[254][j]] = 65024 + j; d[65024 + j] = D[254][j];} +return {"enc": e, "dec": d }; })(); diff --git a/node_modules/codepage/bits/20936.js b/node_modules/codepage/bits/20936.js new file mode 100644 index 000000000..1a0b32776 --- /dev/null +++ b/node_modules/codepage/bits/20936.js @@ -0,0 +1,167 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[20936] = (function(){ var d = [], e = {}, D = [], j; +D[0] = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€���������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];} +D[161] = "����������������������������������������������������������������������������������������������������������������������������������������������������������������� 、。・ˉˇ¨〃々―~�…‘’“”〔〕〈〉《》「」『』〖〗【】±×÷∶∧∨∑∏∪∩∈∷√⊥∥∠⌒⊙∫∮≡≌≈∽∝≠≮≯≤≥∞∵∴♂♀°′″℃$¤¢£‰§№☆★○●◎◇◆□■△▲※→←↑↓〓�".split(""); +for(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];} +D[162] = "���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������⒈⒉⒊⒋⒌⒍⒎⒏⒐⒑⒒⒓⒔⒕⒖⒗⒘⒙⒚⒛⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽⑾⑿⒀⒁⒂⒃⒄⒅⒆⒇①②③④⑤⑥⑦⑧⑨⑩��㈠㈡㈢㈣㈤㈥㈦㈧㈨㈩��ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫ���".split(""); +for(j = 0; j != D[162].length; ++j) if(D[162][j].charCodeAt(0) !== 0xFFFD) { e[D[162][j]] = 41472 + j; d[41472 + j] = D[162][j];} +D[163] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������!"#¥%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|} ̄�".split(""); +for(j = 0; j != D[163].length; ++j) if(D[163][j].charCodeAt(0) !== 0xFFFD) { e[D[163][j]] = 41728 + j; d[41728 + j] = D[163][j];} +D[164] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをん������������".split(""); +for(j = 0; j != D[164].length; ++j) if(D[164][j].charCodeAt(0) !== 0xFFFD) { e[D[164][j]] = 41984 + j; d[41984 + j] = D[164][j];} +D[165] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶ���������".split(""); +for(j = 0; j != D[165].length; ++j) if(D[165][j].charCodeAt(0) !== 0xFFFD) { e[D[165][j]] = 42240 + j; d[42240 + j] = D[165][j];} +D[166] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ��������αβγδεζηθικλμνξοπρστυφχψω���������������������������������������".split(""); +for(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];} +D[167] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ���������������абвгдеёжзийклмнопрстуфхцчшщъыьэюя��������������".split(""); +for(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];} +D[168] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������āáǎàēéěèīíǐìōóǒòūúǔùǖǘǚǜüê����������ㄅㄆㄇㄈㄉㄊㄋㄌㄍㄎㄏㄐㄑㄒㄓㄔㄕㄖㄗㄘㄙㄚㄛㄜㄝㄞㄟㄠㄡㄢㄣㄤㄥㄦㄧㄨㄩ����������������������".split(""); +for(j = 0; j != D[168].length; ++j) if(D[168][j].charCodeAt(0) !== 0xFFFD) { e[D[168][j]] = 43008 + j; d[43008 + j] = D[168][j];} +D[169] = "��������������������������������������������������������������������������������������������������������������������������������������������������������������������─━│┃┄┅┆┇┈┉┊┋┌┍┎┏┐┑┒┓└┕┖┗┘┙┚┛├┝┞┟┠┡┢┣┤┥┦┧┨┩┪┫┬┭┮┯┰┱┲┳┴┵┶┷┸┹┺┻┼┽┾┿╀╁╂╃╄╅╆╇╈╉╊╋����������������".split(""); +for(j = 0; j != D[169].length; ++j) if(D[169][j].charCodeAt(0) !== 0xFFFD) { e[D[169][j]] = 43264 + j; d[43264 + j] = D[169][j];} +D[176] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������啊阿埃挨哎唉哀皑癌蔼矮艾碍爱隘鞍氨安俺按暗岸胺案肮昂盎凹敖熬翱袄傲奥懊澳芭捌扒叭吧笆八疤巴拔跋靶把耙坝霸罢爸白柏百摆佰败拜稗斑班搬扳般颁板版扮拌伴瓣半办绊邦帮梆榜膀绑棒磅蚌镑傍谤苞胞包褒剥�".split(""); +for(j = 0; j != D[176].length; ++j) if(D[176][j].charCodeAt(0) !== 0xFFFD) { e[D[176][j]] = 45056 + j; d[45056 + j] = D[176][j];} +D[177] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������薄雹保堡饱宝抱报暴豹鲍爆杯碑悲卑北辈背贝钡倍狈备惫焙被奔苯本笨崩绷甭泵蹦迸逼鼻比鄙笔彼碧蓖蔽毕毙毖币庇痹闭敝弊必辟壁臂避陛鞭边编贬扁便变卞辨辩辫遍标彪膘表鳖憋别瘪彬斌濒滨宾摈兵冰柄丙秉饼炳�".split(""); +for(j = 0; j != D[177].length; ++j) if(D[177][j].charCodeAt(0) !== 0xFFFD) { e[D[177][j]] = 45312 + j; d[45312 + j] = D[177][j];} +D[178] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������病并玻菠播拨钵波博勃搏铂箔伯帛舶脖膊渤泊驳捕卜哺补埠不布步簿部怖擦猜裁材才财睬踩采彩菜蔡餐参蚕残惭惨灿苍舱仓沧藏操糙槽曹草厕策侧册测层蹭插叉茬茶查碴搽察岔差诧拆柴豺搀掺蝉馋谗缠铲产阐颤昌猖�".split(""); +for(j = 0; j != D[178].length; ++j) if(D[178][j].charCodeAt(0) !== 0xFFFD) { e[D[178][j]] = 45568 + j; d[45568 + j] = D[178][j];} +D[179] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������场尝常长偿肠厂敞畅唱倡超抄钞朝嘲潮巢吵炒车扯撤掣彻澈郴臣辰尘晨忱沉陈趁衬撑称城橙成呈乘程惩澄诚承逞骋秤吃痴持匙池迟弛驰耻齿侈尺赤翅斥炽充冲虫崇宠抽酬畴踌稠愁筹仇绸瞅丑臭初出橱厨躇锄雏滁除楚�".split(""); +for(j = 0; j != D[179].length; ++j) if(D[179][j].charCodeAt(0) !== 0xFFFD) { e[D[179][j]] = 45824 + j; d[45824 + j] = D[179][j];} +D[180] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������础储矗搐触处揣川穿椽传船喘串疮窗幢床闯创吹炊捶锤垂春椿醇唇淳纯蠢戳绰疵茨磁雌辞慈瓷词此刺赐次聪葱囱匆从丛凑粗醋簇促蹿篡窜摧崔催脆瘁粹淬翠村存寸磋撮搓措挫错搭达答瘩打大呆歹傣戴带殆代贷袋待逮�".split(""); +for(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];} +D[181] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������怠耽担丹单郸掸胆旦氮但惮淡诞弹蛋当挡党荡档刀捣蹈倒岛祷导到稻悼道盗德得的蹬灯登等瞪凳邓堤低滴迪敌笛狄涤翟嫡抵底地蒂第帝弟递缔颠掂滇碘点典靛垫电佃甸店惦奠淀殿碉叼雕凋刁掉吊钓调跌爹碟蝶迭谍叠�".split(""); +for(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];} +D[182] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������丁盯叮钉顶鼎锭定订丢东冬董懂动栋侗恫冻洞兜抖斗陡豆逗痘都督毒犊独读堵睹赌杜镀肚度渡妒端短锻段断缎堆兑队对墩吨蹲敦顿囤钝盾遁掇哆多夺垛躲朵跺舵剁惰堕蛾峨鹅俄额讹娥恶厄扼遏鄂饿恩而儿耳尔饵洱二�".split(""); +for(j = 0; j != D[182].length; ++j) if(D[182][j].charCodeAt(0) !== 0xFFFD) { e[D[182][j]] = 46592 + j; d[46592 + j] = D[182][j];} +D[183] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������贰发罚筏伐乏阀法珐藩帆番翻樊矾钒繁凡烦反返范贩犯饭泛坊芳方肪房防妨仿访纺放菲非啡飞肥匪诽吠肺废沸费芬酚吩氛分纷坟焚汾粉奋份忿愤粪丰封枫蜂峰锋风疯烽逢冯缝讽奉凤佛否夫敷肤孵扶拂辐幅氟符伏俘服�".split(""); +for(j = 0; j != D[183].length; ++j) if(D[183][j].charCodeAt(0) !== 0xFFFD) { e[D[183][j]] = 46848 + j; d[46848 + j] = D[183][j];} +D[184] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������浮涪福袱弗甫抚辅俯釜斧脯腑府腐赴副覆赋复傅付阜父腹负富讣附妇缚咐噶嘎该改概钙盖溉干甘杆柑竿肝赶感秆敢赣冈刚钢缸肛纲岗港杠篙皋高膏羔糕搞镐稿告哥歌搁戈鸽胳疙割革葛格蛤阁隔铬个各给根跟耕更庚羹�".split(""); +for(j = 0; j != D[184].length; ++j) if(D[184][j].charCodeAt(0) !== 0xFFFD) { e[D[184][j]] = 47104 + j; d[47104 + j] = D[184][j];} +D[185] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������埂耿梗工攻功恭龚供躬公宫弓巩汞拱贡共钩勾沟苟狗垢构购够辜菇咕箍估沽孤姑鼓古蛊骨谷股故顾固雇刮瓜剐寡挂褂乖拐怪棺关官冠观管馆罐惯灌贯光广逛瑰规圭硅归龟闺轨鬼诡癸桂柜跪贵刽辊滚棍锅郭国果裹过哈�".split(""); +for(j = 0; j != D[185].length; ++j) if(D[185][j].charCodeAt(0) !== 0xFFFD) { e[D[185][j]] = 47360 + j; d[47360 + j] = D[185][j];} +D[186] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������骸孩海氦亥害骇酣憨邯韩含涵寒函喊罕翰撼捍旱憾悍焊汗汉夯杭航壕嚎豪毫郝好耗号浩呵喝荷菏核禾和何合盒貉阂河涸赫褐鹤贺嘿黑痕很狠恨哼亨横衡恒轰哄烘虹鸿洪宏弘红喉侯猴吼厚候后呼乎忽瑚壶葫胡蝴狐糊湖�".split(""); +for(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];} +D[187] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������弧虎唬护互沪户花哗华猾滑画划化话槐徊怀淮坏欢环桓还缓换患唤痪豢焕涣宦幻荒慌黄磺蝗簧皇凰惶煌晃幌恍谎灰挥辉徽恢蛔回毁悔慧卉惠晦贿秽会烩汇讳诲绘荤昏婚魂浑混豁活伙火获或惑霍货祸击圾基机畸稽积箕�".split(""); +for(j = 0; j != D[187].length; ++j) if(D[187][j].charCodeAt(0) !== 0xFFFD) { e[D[187][j]] = 47872 + j; d[47872 + j] = D[187][j];} +D[188] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������肌饥迹激讥鸡姬绩缉吉极棘辑籍集及急疾汲即嫉级挤几脊己蓟技冀季伎祭剂悸济寄寂计记既忌际妓继纪嘉枷夹佳家加荚颊贾甲钾假稼价架驾嫁歼监坚尖笺间煎兼肩艰奸缄茧检柬碱硷拣捡简俭剪减荐槛鉴践贱见键箭件�".split(""); +for(j = 0; j != D[188].length; ++j) if(D[188][j].charCodeAt(0) !== 0xFFFD) { e[D[188][j]] = 48128 + j; d[48128 + j] = D[188][j];} +D[189] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������健舰剑饯渐溅涧建僵姜将浆江疆蒋桨奖讲匠酱降蕉椒礁焦胶交郊浇骄娇嚼搅铰矫侥脚狡角饺缴绞剿教酵轿较叫窖揭接皆秸街阶截劫节桔杰捷睫竭洁结解姐戒藉芥界借介疥诫届巾筋斤金今津襟紧锦仅谨进靳晋禁近烬浸�".split(""); +for(j = 0; j != D[189].length; ++j) if(D[189][j].charCodeAt(0) !== 0xFFFD) { e[D[189][j]] = 48384 + j; d[48384 + j] = D[189][j];} +D[190] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������尽劲荆兢茎睛晶鲸京惊精粳经井警景颈静境敬镜径痉靖竟竞净炯窘揪究纠玖韭久灸九酒厩救旧臼舅咎就疚鞠拘狙疽居驹菊局咀矩举沮聚拒据巨具距踞锯俱句惧炬剧捐鹃娟倦眷卷绢撅攫抉掘倔爵觉决诀绝均菌钧军君峻�".split(""); +for(j = 0; j != D[190].length; ++j) if(D[190][j].charCodeAt(0) !== 0xFFFD) { e[D[190][j]] = 48640 + j; d[48640 + j] = D[190][j];} +D[191] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������俊竣浚郡骏喀咖卡咯开揩楷凯慨刊堪勘坎砍看康慷糠扛抗亢炕考拷烤靠坷苛柯棵磕颗科壳咳可渴克刻客课肯啃垦恳坑吭空恐孔控抠口扣寇枯哭窟苦酷库裤夸垮挎跨胯块筷侩快宽款匡筐狂框矿眶旷况亏盔岿窥葵奎魁傀�".split(""); +for(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];} +D[192] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������馈愧溃坤昆捆困括扩廓阔垃拉喇蜡腊辣啦莱来赖蓝婪栏拦篮阑兰澜谰揽览懒缆烂滥琅榔狼廊郎朗浪捞劳牢老佬姥酪烙涝勒乐雷镭蕾磊累儡垒擂肋类泪棱楞冷厘梨犁黎篱狸离漓理李里鲤礼莉荔吏栗丽厉励砾历利傈例俐�".split(""); +for(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];} +D[193] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������痢立粒沥隶力璃哩俩联莲连镰廉怜涟帘敛脸链恋炼练粮凉梁粱良两辆量晾亮谅撩聊僚疗燎寥辽潦了撂镣廖料列裂烈劣猎琳林磷霖临邻鳞淋凛赁吝拎玲菱零龄铃伶羚凌灵陵岭领另令溜琉榴硫馏留刘瘤流柳六龙聋咙笼窿�".split(""); +for(j = 0; j != D[193].length; ++j) if(D[193][j].charCodeAt(0) !== 0xFFFD) { e[D[193][j]] = 49408 + j; d[49408 + j] = D[193][j];} +D[194] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������隆垄拢陇楼娄搂篓漏陋芦卢颅庐炉掳卤虏鲁麓碌露路赂鹿潞禄录陆戮驴吕铝侣旅履屡缕虑氯律率滤绿峦挛孪滦卵乱掠略抡轮伦仑沦纶论萝螺罗逻锣箩骡裸落洛骆络妈麻玛码蚂马骂嘛吗埋买麦卖迈脉瞒馒蛮满蔓曼慢漫�".split(""); +for(j = 0; j != D[194].length; ++j) if(D[194][j].charCodeAt(0) !== 0xFFFD) { e[D[194][j]] = 49664 + j; d[49664 + j] = D[194][j];} +D[195] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������谩芒茫盲氓忙莽猫茅锚毛矛铆卯茂冒帽貌贸么玫枚梅酶霉煤没眉媒镁每美昧寐妹媚门闷们萌蒙檬盟锰猛梦孟眯醚靡糜迷谜弥米秘觅泌蜜密幂棉眠绵冕免勉娩缅面苗描瞄藐秒渺庙妙蔑灭民抿皿敏悯闽明螟鸣铭名命谬摸�".split(""); +for(j = 0; j != D[195].length; ++j) if(D[195][j].charCodeAt(0) !== 0xFFFD) { e[D[195][j]] = 49920 + j; d[49920 + j] = D[195][j];} +D[196] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������摹蘑模膜磨摩魔抹末莫墨默沫漠寞陌谋牟某拇牡亩姆母墓暮幕募慕木目睦牧穆拿哪呐钠那娜纳氖乃奶耐奈南男难囊挠脑恼闹淖呢馁内嫩能妮霓倪泥尼拟你匿腻逆溺蔫拈年碾撵捻念娘酿鸟尿捏聂孽啮镊镍涅您柠狞凝宁�".split(""); +for(j = 0; j != D[196].length; ++j) if(D[196][j].charCodeAt(0) !== 0xFFFD) { e[D[196][j]] = 50176 + j; d[50176 + j] = D[196][j];} +D[197] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������拧泞牛扭钮纽脓浓农弄奴努怒女暖虐疟挪懦糯诺哦欧鸥殴藕呕偶沤啪趴爬帕怕琶拍排牌徘湃派攀潘盘磐盼畔判叛乓庞旁耪胖抛咆刨炮袍跑泡呸胚培裴赔陪配佩沛喷盆砰抨烹澎彭蓬棚硼篷膨朋鹏捧碰坯砒霹批披劈琵毗�".split(""); +for(j = 0; j != D[197].length; ++j) if(D[197][j].charCodeAt(0) !== 0xFFFD) { e[D[197][j]] = 50432 + j; d[50432 + j] = D[197][j];} +D[198] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������啤脾疲皮匹痞僻屁譬篇偏片骗飘漂瓢票撇瞥拼频贫品聘乒坪苹萍平凭瓶评屏坡泼颇婆破魄迫粕剖扑铺仆莆葡菩蒲埔朴圃普浦谱曝瀑期欺栖戚妻七凄漆柒沏其棋奇歧畦崎脐齐旗祈祁骑起岂乞企启契砌器气迄弃汽泣讫掐�".split(""); +for(j = 0; j != D[198].length; ++j) if(D[198][j].charCodeAt(0) !== 0xFFFD) { e[D[198][j]] = 50688 + j; d[50688 + j] = D[198][j];} +D[199] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������恰洽牵扦钎铅千迁签仟谦乾黔钱钳前潜遣浅谴堑嵌欠歉枪呛腔羌墙蔷强抢橇锹敲悄桥瞧乔侨巧鞘撬翘峭俏窍切茄且怯窃钦侵亲秦琴勤芹擒禽寝沁青轻氢倾卿清擎晴氰情顷请庆琼穷秋丘邱球求囚酋泅趋区蛆曲躯屈驱渠�".split(""); +for(j = 0; j != D[199].length; ++j) if(D[199][j].charCodeAt(0) !== 0xFFFD) { e[D[199][j]] = 50944 + j; d[50944 + j] = D[199][j];} +D[200] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������取娶龋趣去圈颧权醛泉全痊拳犬券劝缺炔瘸却鹊榷确雀裙群然燃冉染瓤壤攘嚷让饶扰绕惹热壬仁人忍韧任认刃妊纫扔仍日戎茸蓉荣融熔溶容绒冗揉柔肉茹蠕儒孺如辱乳汝入褥软阮蕊瑞锐闰润若弱撒洒萨腮鳃塞赛三叁�".split(""); +for(j = 0; j != D[200].length; ++j) if(D[200][j].charCodeAt(0) !== 0xFFFD) { e[D[200][j]] = 51200 + j; d[51200 + j] = D[200][j];} +D[201] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������伞散桑嗓丧搔骚扫嫂瑟色涩森僧莎砂杀刹沙纱傻啥煞筛晒珊苫杉山删煽衫闪陕擅赡膳善汕扇缮墒伤商赏晌上尚裳梢捎稍烧芍勺韶少哨邵绍奢赊蛇舌舍赦摄射慑涉社设砷申呻伸身深娠绅神沈审婶甚肾慎渗声生甥牲升绳�".split(""); +for(j = 0; j != D[201].length; ++j) if(D[201][j].charCodeAt(0) !== 0xFFFD) { e[D[201][j]] = 51456 + j; d[51456 + j] = D[201][j];} +D[202] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������省盛剩胜圣师失狮施湿诗尸虱十石拾时什食蚀实识史矢使屎驶始式示士世柿事拭誓逝势是嗜噬适仕侍释饰氏市恃室视试收手首守寿授售受瘦兽蔬枢梳殊抒输叔舒淑疏书赎孰熟薯暑曙署蜀黍鼠属术述树束戍竖墅庶数漱�".split(""); +for(j = 0; j != D[202].length; ++j) if(D[202][j].charCodeAt(0) !== 0xFFFD) { e[D[202][j]] = 51712 + j; d[51712 + j] = D[202][j];} +D[203] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������恕刷耍摔衰甩帅栓拴霜双爽谁水睡税吮瞬顺舜说硕朔烁斯撕嘶思私司丝死肆寺嗣四伺似饲巳松耸怂颂送宋讼诵搜艘擞嗽苏酥俗素速粟僳塑溯宿诉肃酸蒜算虽隋随绥髓碎岁穗遂隧祟孙损笋蓑梭唆缩琐索锁所塌他它她塔�".split(""); +for(j = 0; j != D[203].length; ++j) if(D[203][j].charCodeAt(0) !== 0xFFFD) { e[D[203][j]] = 51968 + j; d[51968 + j] = D[203][j];} +D[204] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������獭挞蹋踏胎苔抬台泰酞太态汰坍摊贪瘫滩坛檀痰潭谭谈坦毯袒碳探叹炭汤塘搪堂棠膛唐糖倘躺淌趟烫掏涛滔绦萄桃逃淘陶讨套特藤腾疼誊梯剔踢锑提题蹄啼体替嚏惕涕剃屉天添填田甜恬舔腆挑条迢眺跳贴铁帖厅听烃�".split(""); +for(j = 0; j != D[204].length; ++j) if(D[204][j].charCodeAt(0) !== 0xFFFD) { e[D[204][j]] = 52224 + j; d[52224 + j] = D[204][j];} +D[205] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������汀廷停亭庭挺艇通桐酮瞳同铜彤童桶捅筒统痛偷投头透凸秃突图徒途涂屠土吐兔湍团推颓腿蜕褪退吞屯臀拖托脱鸵陀驮驼椭妥拓唾挖哇蛙洼娃瓦袜歪外豌弯湾玩顽丸烷完碗挽晚皖惋宛婉万腕汪王亡枉网往旺望忘妄威�".split(""); +for(j = 0; j != D[205].length; ++j) if(D[205][j].charCodeAt(0) !== 0xFFFD) { e[D[205][j]] = 52480 + j; d[52480 + j] = D[205][j];} +D[206] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������巍微危韦违桅围唯惟为潍维苇萎委伟伪尾纬未蔚味畏胃喂魏位渭谓尉慰卫瘟温蚊文闻纹吻稳紊问嗡翁瓮挝蜗涡窝我斡卧握沃巫呜钨乌污诬屋无芜梧吾吴毋武五捂午舞伍侮坞戊雾晤物勿务悟误昔熙析西硒矽晰嘻吸锡牺�".split(""); +for(j = 0; j != D[206].length; ++j) if(D[206][j].charCodeAt(0) !== 0xFFFD) { e[D[206][j]] = 52736 + j; d[52736 + j] = D[206][j];} +D[207] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������稀息希悉膝夕惜熄烯溪汐犀檄袭席习媳喜铣洗系隙戏细瞎虾匣霞辖暇峡侠狭下厦夏吓掀锨先仙鲜纤咸贤衔舷闲涎弦嫌显险现献县腺馅羡宪陷限线相厢镶香箱襄湘乡翔祥详想响享项巷橡像向象萧硝霄削哮嚣销消宵淆晓�".split(""); +for(j = 0; j != D[207].length; ++j) if(D[207][j].charCodeAt(0) !== 0xFFFD) { e[D[207][j]] = 52992 + j; d[52992 + j] = D[207][j];} +D[208] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������小孝校肖啸笑效楔些歇蝎鞋协挟携邪斜胁谐写械卸蟹懈泄泻谢屑薪芯锌欣辛新忻心信衅星腥猩惺兴刑型形邢行醒幸杏性姓兄凶胸匈汹雄熊休修羞朽嗅锈秀袖绣墟戌需虚嘘须徐许蓄酗叙旭序畜恤絮婿绪续轩喧宣悬旋玄�".split(""); +for(j = 0; j != D[208].length; ++j) if(D[208][j].charCodeAt(0) !== 0xFFFD) { e[D[208][j]] = 53248 + j; d[53248 + j] = D[208][j];} +D[209] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������选癣眩绚靴薛学穴雪血勋熏循旬询寻驯巡殉汛训讯逊迅压押鸦鸭呀丫芽牙蚜崖衙涯雅哑亚讶焉咽阉烟淹盐严研蜒岩延言颜阎炎沿奄掩眼衍演艳堰燕厌砚雁唁彦焰宴谚验殃央鸯秧杨扬佯疡羊洋阳氧仰痒养样漾邀腰妖瑶�".split(""); +for(j = 0; j != D[209].length; ++j) if(D[209][j].charCodeAt(0) !== 0xFFFD) { e[D[209][j]] = 53504 + j; d[53504 + j] = D[209][j];} +D[210] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������摇尧遥窑谣姚咬舀药要耀椰噎耶爷野冶也页掖业叶曳腋夜液一壹医揖铱依伊衣颐夷遗移仪胰疑沂宜姨彝椅蚁倚已乙矣以艺抑易邑屹亿役臆逸肄疫亦裔意毅忆义益溢诣议谊译异翼翌绎茵荫因殷音阴姻吟银淫寅饮尹引隐�".split(""); +for(j = 0; j != D[210].length; ++j) if(D[210][j].charCodeAt(0) !== 0xFFFD) { e[D[210][j]] = 53760 + j; d[53760 + j] = D[210][j];} +D[211] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������印英樱婴鹰应缨莹萤营荧蝇迎赢盈影颖硬映哟拥佣臃痈庸雍踊蛹咏泳涌永恿勇用幽优悠忧尤由邮铀犹油游酉有友右佑釉诱又幼迂淤于盂榆虞愚舆余俞逾鱼愉渝渔隅予娱雨与屿禹宇语羽玉域芋郁吁遇喻峪御愈欲狱育誉�".split(""); +for(j = 0; j != D[211].length; ++j) if(D[211][j].charCodeAt(0) !== 0xFFFD) { e[D[211][j]] = 54016 + j; d[54016 + j] = D[211][j];} +D[212] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������浴寓裕预豫驭鸳渊冤元垣袁原援辕园员圆猿源缘远苑愿怨院曰约越跃钥岳粤月悦阅耘云郧匀陨允运蕴酝晕韵孕匝砸杂栽哉灾宰载再在咱攒暂赞赃脏葬遭糟凿藻枣早澡蚤躁噪造皂灶燥责择则泽贼怎增憎曾赠扎喳渣札轧�".split(""); +for(j = 0; j != D[212].length; ++j) if(D[212][j].charCodeAt(0) !== 0xFFFD) { e[D[212][j]] = 54272 + j; d[54272 + j] = D[212][j];} +D[213] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������铡闸眨栅榨咋乍炸诈摘斋宅窄债寨瞻毡詹粘沾盏斩辗崭展蘸栈占战站湛绽樟章彰漳张掌涨杖丈帐账仗胀瘴障招昭找沼赵照罩兆肇召遮折哲蛰辙者锗蔗这浙珍斟真甄砧臻贞针侦枕疹诊震振镇阵蒸挣睁征狰争怔整拯正政�".split(""); +for(j = 0; j != D[213].length; ++j) if(D[213][j].charCodeAt(0) !== 0xFFFD) { e[D[213][j]] = 54528 + j; d[54528 + j] = D[213][j];} +D[214] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������帧症郑证芝枝支吱蜘知肢脂汁之织职直植殖执值侄址指止趾只旨纸志挚掷至致置帜峙制智秩稚质炙痔滞治窒中盅忠钟衷终种肿重仲众舟周州洲诌粥轴肘帚咒皱宙昼骤珠株蛛朱猪诸诛逐竹烛煮拄瞩嘱主著柱助蛀贮铸筑�".split(""); +for(j = 0; j != D[214].length; ++j) if(D[214][j].charCodeAt(0) !== 0xFFFD) { e[D[214][j]] = 54784 + j; d[54784 + j] = D[214][j];} +D[215] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������住注祝驻抓爪拽专砖转撰赚篆桩庄装妆撞壮状椎锥追赘坠缀谆准捉拙卓桌琢茁酌啄着灼浊兹咨资姿滋淄孜紫仔籽滓子自渍字鬃棕踪宗综总纵邹走奏揍租足卒族祖诅阻组钻纂嘴醉最罪尊遵昨左佐柞做作坐座������".split(""); +for(j = 0; j != D[215].length; ++j) if(D[215][j].charCodeAt(0) !== 0xFFFD) { e[D[215][j]] = 55040 + j; d[55040 + j] = D[215][j];} +D[216] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������亍丌兀丐廿卅丕亘丞鬲孬噩丨禺丿匕乇夭爻卮氐囟胤馗毓睾鼗丶亟鼐乜乩亓芈孛啬嘏仄厍厝厣厥厮靥赝匚叵匦匮匾赜卦卣刂刈刎刭刳刿剀剌剞剡剜蒯剽劂劁劐劓冂罔亻仃仉仂仨仡仫仞伛仳伢佤仵伥伧伉伫佞佧攸佚佝�".split(""); +for(j = 0; j != D[216].length; ++j) if(D[216][j].charCodeAt(0) !== 0xFFFD) { e[D[216][j]] = 55296 + j; d[55296 + j] = D[216][j];} +D[217] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������佟佗伲伽佶佴侑侉侃侏佾佻侪佼侬侔俦俨俪俅俚俣俜俑俟俸倩偌俳倬倏倮倭俾倜倌倥倨偾偃偕偈偎偬偻傥傧傩傺僖儆僭僬僦僮儇儋仝氽佘佥俎龠汆籴兮巽黉馘冁夔勹匍訇匐凫夙兕亠兖亳衮袤亵脔裒禀嬴蠃羸冫冱冽冼�".split(""); +for(j = 0; j != D[217].length; ++j) if(D[217][j].charCodeAt(0) !== 0xFFFD) { e[D[217][j]] = 55552 + j; d[55552 + j] = D[217][j];} +D[218] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������凇冖冢冥讠讦讧讪讴讵讷诂诃诋诏诎诒诓诔诖诘诙诜诟诠诤诨诩诮诰诳诶诹诼诿谀谂谄谇谌谏谑谒谔谕谖谙谛谘谝谟谠谡谥谧谪谫谮谯谲谳谵谶卩卺阝阢阡阱阪阽阼陂陉陔陟陧陬陲陴隈隍隗隰邗邛邝邙邬邡邴邳邶邺�".split(""); +for(j = 0; j != D[218].length; ++j) if(D[218][j].charCodeAt(0) !== 0xFFFD) { e[D[218][j]] = 55808 + j; d[55808 + j] = D[218][j];} +D[219] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������邸邰郏郅邾郐郄郇郓郦郢郜郗郛郫郯郾鄄鄢鄞鄣鄱鄯鄹酃酆刍奂劢劬劭劾哿勐勖勰叟燮矍廴凵凼鬯厶弁畚巯坌垩垡塾墼壅壑圩圬圪圳圹圮圯坜圻坂坩垅坫垆坼坻坨坭坶坳垭垤垌垲埏垧垴垓垠埕埘埚埙埒垸埴埯埸埤埝�".split(""); +for(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];} +D[220] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������堋堍埽埭堀堞堙塄堠塥塬墁墉墚墀馨鼙懿艹艽艿芏芊芨芄芎芑芗芙芫芸芾芰苈苊苣芘芷芮苋苌苁芩芴芡芪芟苄苎芤苡茉苷苤茏茇苜苴苒苘茌苻苓茑茚茆茔茕苠苕茜荑荛荜茈莒茼茴茱莛荞茯荏荇荃荟荀茗荠茭茺茳荦荥�".split(""); +for(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];} +D[221] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������荨茛荩荬荪荭荮莰荸莳莴莠莪莓莜莅荼莶莩荽莸荻莘莞莨莺莼菁萁菥菘堇萘萋菝菽菖萜萸萑萆菔菟萏萃菸菹菪菅菀萦菰菡葜葑葚葙葳蒇蒈葺蒉葸萼葆葩葶蒌蒎萱葭蓁蓍蓐蓦蒽蓓蓊蒿蒺蓠蒡蒹蒴蒗蓥蓣蔌甍蔸蓰蔹蔟蔺�".split(""); +for(j = 0; j != D[221].length; ++j) if(D[221][j].charCodeAt(0) !== 0xFFFD) { e[D[221][j]] = 56576 + j; d[56576 + j] = D[221][j];} +D[222] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������蕖蔻蓿蓼蕙蕈蕨蕤蕞蕺瞢蕃蕲蕻薤薨薇薏蕹薮薜薅薹薷薰藓藁藜藿蘧蘅蘩蘖蘼廾弈夼奁耷奕奚奘匏尢尥尬尴扌扪抟抻拊拚拗拮挢拶挹捋捃掭揶捱捺掎掴捭掬掊捩掮掼揲揸揠揿揄揞揎摒揆掾摅摁搋搛搠搌搦搡摞撄摭撖�".split(""); +for(j = 0; j != D[222].length; ++j) if(D[222][j].charCodeAt(0) !== 0xFFFD) { e[D[222][j]] = 56832 + j; d[56832 + j] = D[222][j];} +D[223] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������摺撷撸撙撺擀擐擗擤擢攉攥攮弋忒甙弑卟叱叽叩叨叻吒吖吆呋呒呓呔呖呃吡呗呙吣吲咂咔呷呱呤咚咛咄呶呦咝哐咭哂咴哒咧咦哓哔呲咣哕咻咿哌哙哚哜咩咪咤哝哏哞唛哧唠哽唔哳唢唣唏唑唧唪啧喏喵啉啭啁啕唿啐唼�".split(""); +for(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];} +D[224] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������唷啖啵啶啷唳唰啜喋嗒喃喱喹喈喁喟啾嗖喑啻嗟喽喾喔喙嗪嗷嗉嘟嗑嗫嗬嗔嗦嗝嗄嗯嗥嗲嗳嗌嗍嗨嗵嗤辔嘞嘈嘌嘁嘤嘣嗾嘀嘧嘭噘嘹噗嘬噍噢噙噜噌噔嚆噤噱噫噻噼嚅嚓嚯囔囗囝囡囵囫囹囿圄圊圉圜帏帙帔帑帱帻帼�".split(""); +for(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];} +D[225] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������帷幄幔幛幞幡岌屺岍岐岖岈岘岙岑岚岜岵岢岽岬岫岱岣峁岷峄峒峤峋峥崂崃崧崦崮崤崞崆崛嵘崾崴崽嵬嵛嵯嵝嵫嵋嵊嵩嵴嶂嶙嶝豳嶷巅彳彷徂徇徉後徕徙徜徨徭徵徼衢彡犭犰犴犷犸狃狁狎狍狒狨狯狩狲狴狷猁狳猃狺�".split(""); +for(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];} +D[226] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������狻猗猓猡猊猞猝猕猢猹猥猬猸猱獐獍獗獠獬獯獾舛夥飧夤夂饣饧饨饩饪饫饬饴饷饽馀馄馇馊馍馐馑馓馔馕庀庑庋庖庥庠庹庵庾庳赓廒廑廛廨廪膺忄忉忖忏怃忮怄忡忤忾怅怆忪忭忸怙怵怦怛怏怍怩怫怊怿怡恸恹恻恺恂�".split(""); +for(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];} +D[227] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������恪恽悖悚悭悝悃悒悌悛惬悻悱惝惘惆惚悴愠愦愕愣惴愀愎愫慊慵憬憔憧憷懔懵忝隳闩闫闱闳闵闶闼闾阃阄阆阈阊阋阌阍阏阒阕阖阗阙阚丬爿戕氵汔汜汊沣沅沐沔沌汨汩汴汶沆沩泐泔沭泷泸泱泗沲泠泖泺泫泮沱泓泯泾�".split(""); +for(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];} +D[228] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������洹洧洌浃浈洇洄洙洎洫浍洮洵洚浏浒浔洳涑浯涞涠浞涓涔浜浠浼浣渚淇淅淞渎涿淠渑淦淝淙渖涫渌涮渫湮湎湫溲湟溆湓湔渲渥湄滟溱溘滠漭滢溥溧溽溻溷滗溴滏溏滂溟潢潆潇漤漕滹漯漶潋潴漪漉漩澉澍澌潸潲潼潺濑�".split(""); +for(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];} +D[229] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������濉澧澹澶濂濡濮濞濠濯瀚瀣瀛瀹瀵灏灞宀宄宕宓宥宸甯骞搴寤寮褰寰蹇謇辶迓迕迥迮迤迩迦迳迨逅逄逋逦逑逍逖逡逵逶逭逯遄遑遒遐遨遘遢遛暹遴遽邂邈邃邋彐彗彖彘尻咫屐屙孱屣屦羼弪弩弭艴弼鬻屮妁妃妍妩妪妣�".split(""); +for(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];} +D[230] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������妗姊妫妞妤姒妲妯姗妾娅娆姝娈姣姘姹娌娉娲娴娑娣娓婀婧婊婕娼婢婵胬媪媛婷婺媾嫫媲嫒嫔媸嫠嫣嫱嫖嫦嫘嫜嬉嬗嬖嬲嬷孀尕尜孚孥孳孑孓孢驵驷驸驺驿驽骀骁骅骈骊骐骒骓骖骘骛骜骝骟骠骢骣骥骧纟纡纣纥纨纩�".split(""); +for(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];} +D[231] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������纭纰纾绀绁绂绉绋绌绐绔绗绛绠绡绨绫绮绯绱绲缍绶绺绻绾缁缂缃缇缈缋缌缏缑缒缗缙缜缛缟缡缢缣缤缥缦缧缪缫缬缭缯缰缱缲缳缵幺畿巛甾邕玎玑玮玢玟珏珂珑玷玳珀珉珈珥珙顼琊珩珧珞玺珲琏琪瑛琦琥琨琰琮琬�".split(""); +for(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];} +D[232] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������琛琚瑁瑜瑗瑕瑙瑷瑭瑾璜璎璀璁璇璋璞璨璩璐璧瓒璺韪韫韬杌杓杞杈杩枥枇杪杳枘枧杵枨枞枭枋杷杼柰栉柘栊柩枰栌柙枵柚枳柝栀柃枸柢栎柁柽栲栳桠桡桎桢桄桤梃栝桕桦桁桧桀栾桊桉栩梵梏桴桷梓桫棂楮棼椟椠棹�".split(""); +for(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];} +D[233] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������椤棰椋椁楗棣椐楱椹楠楂楝榄楫榀榘楸椴槌榇榈槎榉楦楣楹榛榧榻榫榭槔榱槁槊槟榕槠榍槿樯槭樗樘橥槲橄樾檠橐橛樵檎橹樽樨橘橼檑檐檩檗檫猷獒殁殂殇殄殒殓殍殚殛殡殪轫轭轱轲轳轵轶轸轷轹轺轼轾辁辂辄辇辋�".split(""); +for(j = 0; j != D[233].length; ++j) if(D[233][j].charCodeAt(0) !== 0xFFFD) { e[D[233][j]] = 59648 + j; d[59648 + j] = D[233][j];} +D[234] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������辍辎辏辘辚軎戋戗戛戟戢戡戥戤戬臧瓯瓴瓿甏甑甓攴旮旯旰昊昙杲昃昕昀炅曷昝昴昱昶昵耆晟晔晁晏晖晡晗晷暄暌暧暝暾曛曜曦曩贲贳贶贻贽赀赅赆赈赉赇赍赕赙觇觊觋觌觎觏觐觑牮犟牝牦牯牾牿犄犋犍犏犒挈挲掰�".split(""); +for(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];} +D[235] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������搿擘耄毪毳毽毵毹氅氇氆氍氕氘氙氚氡氩氤氪氲攵敕敫牍牒牖爰虢刖肟肜肓肼朊肽肱肫肭肴肷胧胨胩胪胛胂胄胙胍胗朐胝胫胱胴胭脍脎胲胼朕脒豚脶脞脬脘脲腈腌腓腴腙腚腱腠腩腼腽腭腧塍媵膈膂膑滕膣膪臌朦臊膻�".split(""); +for(j = 0; j != D[235].length; ++j) if(D[235][j].charCodeAt(0) !== 0xFFFD) { e[D[235][j]] = 60160 + j; d[60160 + j] = D[235][j];} +D[236] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������臁膦欤欷欹歃歆歙飑飒飓飕飙飚殳彀毂觳斐齑斓於旆旄旃旌旎旒旖炀炜炖炝炻烀炷炫炱烨烊焐焓焖焯焱煳煜煨煅煲煊煸煺熘熳熵熨熠燠燔燧燹爝爨灬焘煦熹戾戽扃扈扉礻祀祆祉祛祜祓祚祢祗祠祯祧祺禅禊禚禧禳忑忐�".split(""); +for(j = 0; j != D[236].length; ++j) if(D[236][j].charCodeAt(0) !== 0xFFFD) { e[D[236][j]] = 60416 + j; d[60416 + j] = D[236][j];} +D[237] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������怼恝恚恧恁恙恣悫愆愍慝憩憝懋懑戆肀聿沓泶淼矶矸砀砉砗砘砑斫砭砜砝砹砺砻砟砼砥砬砣砩硎硭硖硗砦硐硇硌硪碛碓碚碇碜碡碣碲碹碥磔磙磉磬磲礅磴礓礤礞礴龛黹黻黼盱眄眍盹眇眈眚眢眙眭眦眵眸睐睑睇睃睚睨�".split(""); +for(j = 0; j != D[237].length; ++j) if(D[237][j].charCodeAt(0) !== 0xFFFD) { e[D[237][j]] = 60672 + j; d[60672 + j] = D[237][j];} +D[238] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������睢睥睿瞍睽瞀瞌瞑瞟瞠瞰瞵瞽町畀畎畋畈畛畲畹疃罘罡罟詈罨罴罱罹羁罾盍盥蠲钅钆钇钋钊钌钍钏钐钔钗钕钚钛钜钣钤钫钪钭钬钯钰钲钴钶钷钸钹钺钼钽钿铄铈铉铊铋铌铍铎铐铑铒铕铖铗铙铘铛铞铟铠铢铤铥铧铨铪�".split(""); +for(j = 0; j != D[238].length; ++j) if(D[238][j].charCodeAt(0) !== 0xFFFD) { e[D[238][j]] = 60928 + j; d[60928 + j] = D[238][j];} +D[239] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������铩铫铮铯铳铴铵铷铹铼铽铿锃锂锆锇锉锊锍锎锏锒锓锔锕锖锘锛锝锞锟锢锪锫锩锬锱锲锴锶锷锸锼锾锿镂锵镄镅镆镉镌镎镏镒镓镔镖镗镘镙镛镞镟镝镡镢镤镥镦镧镨镩镪镫镬镯镱镲镳锺矧矬雉秕秭秣秫稆嵇稃稂稞稔�".split(""); +for(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];} +D[240] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������稹稷穑黏馥穰皈皎皓皙皤瓞瓠甬鸠鸢鸨鸩鸪鸫鸬鸲鸱鸶鸸鸷鸹鸺鸾鹁鹂鹄鹆鹇鹈鹉鹋鹌鹎鹑鹕鹗鹚鹛鹜鹞鹣鹦鹧鹨鹩鹪鹫鹬鹱鹭鹳疒疔疖疠疝疬疣疳疴疸痄疱疰痃痂痖痍痣痨痦痤痫痧瘃痱痼痿瘐瘀瘅瘌瘗瘊瘥瘘瘕瘙�".split(""); +for(j = 0; j != D[240].length; ++j) if(D[240][j].charCodeAt(0) !== 0xFFFD) { e[D[240][j]] = 61440 + j; d[61440 + j] = D[240][j];} +D[241] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������瘛瘼瘢瘠癀瘭瘰瘿瘵癃瘾瘳癍癞癔癜癖癫癯翊竦穸穹窀窆窈窕窦窠窬窨窭窳衤衩衲衽衿袂袢裆袷袼裉裢裎裣裥裱褚裼裨裾裰褡褙褓褛褊褴褫褶襁襦襻疋胥皲皴矜耒耔耖耜耠耢耥耦耧耩耨耱耋耵聃聆聍聒聩聱覃顸颀颃�".split(""); +for(j = 0; j != D[241].length; ++j) if(D[241][j].charCodeAt(0) !== 0xFFFD) { e[D[241][j]] = 61696 + j; d[61696 + j] = D[241][j];} +D[242] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������颉颌颍颏颔颚颛颞颟颡颢颥颦虍虔虬虮虿虺虼虻蚨蚍蚋蚬蚝蚧蚣蚪蚓蚩蚶蛄蚵蛎蚰蚺蚱蚯蛉蛏蚴蛩蛱蛲蛭蛳蛐蜓蛞蛴蛟蛘蛑蜃蜇蛸蜈蜊蜍蜉蜣蜻蜞蜥蜮蜚蜾蝈蜴蜱蜩蜷蜿螂蜢蝽蝾蝻蝠蝰蝌蝮螋蝓蝣蝼蝤蝙蝥螓螯螨蟒�".split(""); +for(j = 0; j != D[242].length; ++j) if(D[242][j].charCodeAt(0) !== 0xFFFD) { e[D[242][j]] = 61952 + j; d[61952 + j] = D[242][j];} +D[243] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������蟆螈螅螭螗螃螫蟥螬螵螳蟋蟓螽蟑蟀蟊蟛蟪蟠蟮蠖蠓蟾蠊蠛蠡蠹蠼缶罂罄罅舐竺竽笈笃笄笕笊笫笏筇笸笪笙笮笱笠笥笤笳笾笞筘筚筅筵筌筝筠筮筻筢筲筱箐箦箧箸箬箝箨箅箪箜箢箫箴篑篁篌篝篚篥篦篪簌篾篼簏簖簋�".split(""); +for(j = 0; j != D[243].length; ++j) if(D[243][j].charCodeAt(0) !== 0xFFFD) { e[D[243][j]] = 62208 + j; d[62208 + j] = D[243][j];} +D[244] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������簟簪簦簸籁籀臾舁舂舄臬衄舡舢舣舭舯舨舫舸舻舳舴舾艄艉艋艏艚艟艨衾袅袈裘裟襞羝羟羧羯羰羲籼敉粑粝粜粞粢粲粼粽糁糇糌糍糈糅糗糨艮暨羿翎翕翥翡翦翩翮翳糸絷綦綮繇纛麸麴赳趄趔趑趱赧赭豇豉酊酐酎酏酤�".split(""); +for(j = 0; j != D[244].length; ++j) if(D[244][j].charCodeAt(0) !== 0xFFFD) { e[D[244][j]] = 62464 + j; d[62464 + j] = D[244][j];} +D[245] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������酢酡酰酩酯酽酾酲酴酹醌醅醐醍醑醢醣醪醭醮醯醵醴醺豕鹾趸跫踅蹙蹩趵趿趼趺跄跖跗跚跞跎跏跛跆跬跷跸跣跹跻跤踉跽踔踝踟踬踮踣踯踺蹀踹踵踽踱蹉蹁蹂蹑蹒蹊蹰蹶蹼蹯蹴躅躏躔躐躜躞豸貂貊貅貘貔斛觖觞觚觜�".split(""); +for(j = 0; j != D[245].length; ++j) if(D[245][j].charCodeAt(0) !== 0xFFFD) { e[D[245][j]] = 62720 + j; d[62720 + j] = D[245][j];} +D[246] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������觥觫觯訾謦靓雩雳雯霆霁霈霏霎霪霭霰霾龀龃龅龆龇龈龉龊龌黾鼋鼍隹隼隽雎雒瞿雠銎銮鋈錾鍪鏊鎏鐾鑫鱿鲂鲅鲆鲇鲈稣鲋鲎鲐鲑鲒鲔鲕鲚鲛鲞鲟鲠鲡鲢鲣鲥鲦鲧鲨鲩鲫鲭鲮鲰鲱鲲鲳鲴鲵鲶鲷鲺鲻鲼鲽鳄鳅鳆鳇鳊鳋�".split(""); +for(j = 0; j != D[246].length; ++j) if(D[246][j].charCodeAt(0) !== 0xFFFD) { e[D[246][j]] = 62976 + j; d[62976 + j] = D[246][j];} +D[247] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������鳌鳍鳎鳏鳐鳓鳔鳕鳗鳘鳙鳜鳝鳟鳢靼鞅鞑鞒鞔鞯鞫鞣鞲鞴骱骰骷鹘骶骺骼髁髀髅髂髋髌髑魅魃魇魉魈魍魑飨餍餮饕饔髟髡髦髯髫髻髭髹鬈鬏鬓鬟鬣麽麾縻麂麇麈麋麒鏖麝麟黛黜黝黠黟黢黩黧黥黪黯鼢鼬鼯鼹鼷鼽鼾齄�".split(""); +for(j = 0; j != D[247].length; ++j) if(D[247][j].charCodeAt(0) !== 0xFFFD) { e[D[247][j]] = 63232 + j; d[63232 + j] = D[247][j];} +return {"enc": e, "dec": d }; })(); diff --git a/node_modules/codepage/bits/20949.js b/node_modules/codepage/bits/20949.js new file mode 100644 index 000000000..9924cd35d --- /dev/null +++ b/node_modules/codepage/bits/20949.js @@ -0,0 +1,183 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[20949] = (function(){ var d = [], e = {}, D = [], j; +D[0] = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];} +D[161] = "����������������������������������������������������������������������������������������������������������������������������������������������������������������� 、。·‥…¨〃­―∥\∼‘’“”〔〕〈〉《》「」『』【】±×÷≠≤≥∞∴°′″℃Å¢£¥♂♀∠⊥⌒∂∇≡≒§※☆★○●◎◇◆□■△▲▽▼→←↑↓↔〓≪≫√∽∝∵∫∬∈∋⊆⊇⊂⊃∪∩∧∨¬�".split(""); +for(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];} +D[162] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������⇒⇔∀∃´~ˇ˘˝˚˙¸˛¡¿ː∮∑∏¤℉‰◁◀▷▶♤♠♡♥♧♣⊙◈▣◐◑▒▤▥▨▧▦▩♨☏☎☜☞¶†‡↕↗↙↖↘♭♩♪♬㉿㈜№㏇™㏂㏘℡€®������������������������".split(""); +for(j = 0; j != D[162].length; ++j) if(D[162][j].charCodeAt(0) !== 0xFFFD) { e[D[162][j]] = 41472 + j; d[41472 + j] = D[162][j];} +D[163] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[₩]^_`abcdefghijklmnopqrstuvwxyz{|} ̄�".split(""); +for(j = 0; j != D[163].length; ++j) if(D[163][j].charCodeAt(0) !== 0xFFFD) { e[D[163][j]] = 41728 + j; d[41728 + j] = D[163][j];} +D[164] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������ㄱㄲㄳㄴㄵㄶㄷㄸㄹㄺㄻㄼㄽㄾㄿㅀㅁㅂㅃㅄㅅㅆㅇㅈㅉㅊㅋㅌㅍㅎㅏㅐㅑㅒㅓㅔㅕㅖㅗㅘㅙㅚㅛㅜㅝㅞㅟㅠㅡㅢㅣㅤㅥㅦㅧㅨㅩㅪㅫㅬㅭㅮㅯㅰㅱㅲㅳㅴㅵㅶㅷㅸㅹㅺㅻㅼㅽㅾㅿㆀㆁㆂㆃㆄㆅㆆㆇㆈㆉㆊㆋㆌㆍㆎ�".split(""); +for(j = 0; j != D[164].length; ++j) if(D[164][j].charCodeAt(0) !== 0xFFFD) { e[D[164][j]] = 41984 + j; d[41984 + j] = D[164][j];} +D[165] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������ⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹ�����ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩ�������ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ��������αβγδεζηθικλμνξοπρστυφχψω�������".split(""); +for(j = 0; j != D[165].length; ++j) if(D[165][j].charCodeAt(0) !== 0xFFFD) { e[D[165][j]] = 42240 + j; d[42240 + j] = D[165][j];} +D[166] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂┒┑┚┙┖┕┎┍┞┟┡┢┦┧┩┪┭┮┱┲┵┶┹┺┽┾╀╁╃╄╅╆╇╈╉╊���������������������������".split(""); +for(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];} +D[167] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������㎕㎖㎗ℓ㎘㏄㎣㎤㎥㎦㎙㎚㎛㎜㎝㎞㎟㎠㎡㎢㏊㎍㎎㎏㏏㎈㎉㏈㎧㎨㎰㎱㎲㎳㎴㎵㎶㎷㎸㎹㎀㎁㎂㎃㎄㎺㎻㎼㎽㎾㎿㎐㎑㎒㎓㎔Ω㏀㏁㎊㎋㎌㏖㏅㎭㎮㎯㏛㎩㎪㎫㎬㏝㏐㏓㏃㏉㏜㏆����������������".split(""); +for(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];} +D[168] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������ÆЪĦ�IJ�ĿŁØŒºÞŦŊ�㉠㉡㉢㉣㉤㉥㉦㉧㉨㉩㉪㉫㉬㉭㉮㉯㉰㉱㉲㉳㉴㉵㉶㉷㉸㉹㉺㉻ⓐⓑⓒⓓⓔⓕⓖⓗⓘⓙⓚⓛⓜⓝⓞⓟⓠⓡⓢⓣⓤⓥⓦⓧⓨⓩ①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮½⅓⅔¼¾⅛⅜⅝⅞�".split(""); +for(j = 0; j != D[168].length; ++j) if(D[168][j].charCodeAt(0) !== 0xFFFD) { e[D[168][j]] = 43008 + j; d[43008 + j] = D[168][j];} +D[169] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������æđðħıijĸŀłøœßþŧŋʼn㈀㈁㈂㈃㈄㈅㈆㈇㈈㈉㈊㈋㈌㈍㈎㈏㈐㈑㈒㈓㈔㈕㈖㈗㈘㈙㈚㈛⒜⒝⒞⒟⒠⒡⒢⒣⒤⒥⒦⒧⒨⒩⒪⒫⒬⒭⒮⒯⒰⒱⒲⒳⒴⒵⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽⑾⑿⒀⒁⒂¹²³⁴ⁿ₁₂₃₄�".split(""); +for(j = 0; j != D[169].length; ++j) if(D[169][j].charCodeAt(0) !== 0xFFFD) { e[D[169][j]] = 43264 + j; d[43264 + j] = D[169][j];} +D[170] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをん������������".split(""); +for(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];} +D[171] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶ���������".split(""); +for(j = 0; j != D[171].length; ++j) if(D[171][j].charCodeAt(0) !== 0xFFFD) { e[D[171][j]] = 43776 + j; d[43776 + j] = D[171][j];} +D[172] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ���������������абвгдеёжзийклмнопрстуфхцчшщъыьэюя��������������".split(""); +for(j = 0; j != D[172].length; ++j) if(D[172][j].charCodeAt(0) !== 0xFFFD) { e[D[172][j]] = 44032 + j; d[44032 + j] = D[172][j];} +D[176] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������가각간갇갈갉갊감갑값갓갔강갖갗같갚갛개객갠갤갬갭갯갰갱갸갹갼걀걋걍걔걘걜거걱건걷걸걺검겁것겄겅겆겉겊겋게겐겔겜겝겟겠겡겨격겪견겯결겸겹겻겼경곁계곈곌곕곗고곡곤곧골곪곬곯곰곱곳공곶과곽관괄괆�".split(""); +for(j = 0; j != D[176].length; ++j) if(D[176][j].charCodeAt(0) !== 0xFFFD) { e[D[176][j]] = 45056 + j; d[45056 + j] = D[176][j];} +D[177] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������괌괍괏광괘괜괠괩괬괭괴괵괸괼굄굅굇굉교굔굘굡굣구국군굳굴굵굶굻굼굽굿궁궂궈궉권궐궜궝궤궷귀귁귄귈귐귑귓규균귤그극근귿글긁금급긋긍긔기긱긴긷길긺김깁깃깅깆깊까깍깎깐깔깖깜깝깟깠깡깥깨깩깬깰깸�".split(""); +for(j = 0; j != D[177].length; ++j) if(D[177][j].charCodeAt(0) !== 0xFFFD) { e[D[177][j]] = 45312 + j; d[45312 + j] = D[177][j];} +D[178] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������깹깻깼깽꺄꺅꺌꺼꺽꺾껀껄껌껍껏껐껑께껙껜껨껫껭껴껸껼꼇꼈꼍꼐꼬꼭꼰꼲꼴꼼꼽꼿꽁꽂꽃꽈꽉꽐꽜꽝꽤꽥꽹꾀꾄꾈꾐꾑꾕꾜꾸꾹꾼꿀꿇꿈꿉꿋꿍꿎꿔꿜꿨꿩꿰꿱꿴꿸뀀뀁뀄뀌뀐뀔뀜뀝뀨끄끅끈끊끌끎끓끔끕끗끙�".split(""); +for(j = 0; j != D[178].length; ++j) if(D[178][j].charCodeAt(0) !== 0xFFFD) { e[D[178][j]] = 45568 + j; d[45568 + j] = D[178][j];} +D[179] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������끝끼끽낀낄낌낍낏낑나낙낚난낟날낡낢남납낫났낭낮낯낱낳내낵낸낼냄냅냇냈냉냐냑냔냘냠냥너넉넋넌널넒넓넘넙넛넜넝넣네넥넨넬넴넵넷넸넹녀녁년녈념녑녔녕녘녜녠노녹논놀놂놈놉놋농높놓놔놘놜놨뇌뇐뇔뇜뇝�".split(""); +for(j = 0; j != D[179].length; ++j) if(D[179][j].charCodeAt(0) !== 0xFFFD) { e[D[179][j]] = 45824 + j; d[45824 + j] = D[179][j];} +D[180] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������뇟뇨뇩뇬뇰뇹뇻뇽누눅눈눋눌눔눕눗눙눠눴눼뉘뉜뉠뉨뉩뉴뉵뉼늄늅늉느늑는늘늙늚늠늡늣능늦늪늬늰늴니닉닌닐닖님닙닛닝닢다닥닦단닫달닭닮닯닳담답닷닸당닺닻닿대댁댄댈댐댑댓댔댕댜더덕덖던덛덜덞덟덤덥�".split(""); +for(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];} +D[181] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������덧덩덫덮데덱덴델뎀뎁뎃뎄뎅뎌뎐뎔뎠뎡뎨뎬도독돈돋돌돎돐돔돕돗동돛돝돠돤돨돼됐되된될됨됩됫됴두둑둔둘둠둡둣둥둬뒀뒈뒝뒤뒨뒬뒵뒷뒹듀듄듈듐듕드득든듣들듦듬듭듯등듸디딕딘딛딜딤딥딧딨딩딪따딱딴딸�".split(""); +for(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];} +D[182] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������땀땁땃땄땅땋때땍땐땔땜땝땟땠땡떠떡떤떨떪떫떰떱떳떴떵떻떼떽뗀뗄뗌뗍뗏뗐뗑뗘뗬또똑똔똘똥똬똴뙈뙤뙨뚜뚝뚠뚤뚫뚬뚱뛔뛰뛴뛸뜀뜁뜅뜨뜩뜬뜯뜰뜸뜹뜻띄띈띌띔띕띠띤띨띰띱띳띵라락란랄람랍랏랐랑랒랖랗�".split(""); +for(j = 0; j != D[182].length; ++j) if(D[182][j].charCodeAt(0) !== 0xFFFD) { e[D[182][j]] = 46592 + j; d[46592 + j] = D[182][j];} +D[183] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������래랙랜랠램랩랫랬랭랴략랸럇량러럭런럴럼럽럿렀렁렇레렉렌렐렘렙렛렝려력련렬렴렵렷렸령례롄롑롓로록론롤롬롭롯롱롸롼뢍뢨뢰뢴뢸룀룁룃룅료룐룔룝룟룡루룩룬룰룸룹룻룽뤄뤘뤠뤼뤽륀륄륌륏륑류륙륜률륨륩�".split(""); +for(j = 0; j != D[183].length; ++j) if(D[183][j].charCodeAt(0) !== 0xFFFD) { e[D[183][j]] = 46848 + j; d[46848 + j] = D[183][j];} +D[184] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������륫륭르륵른를름릅릇릉릊릍릎리릭린릴림립릿링마막만많맏말맑맒맘맙맛망맞맡맣매맥맨맬맴맵맷맸맹맺먀먁먈먕머먹먼멀멂멈멉멋멍멎멓메멕멘멜멤멥멧멨멩며멱면멸몃몄명몇몌모목몫몬몰몲몸몹못몽뫄뫈뫘뫙뫼�".split(""); +for(j = 0; j != D[184].length; ++j) if(D[184][j].charCodeAt(0) !== 0xFFFD) { e[D[184][j]] = 47104 + j; d[47104 + j] = D[184][j];} +D[185] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������묀묄묍묏묑묘묜묠묩묫무묵묶문묻물묽묾뭄뭅뭇뭉뭍뭏뭐뭔뭘뭡뭣뭬뮈뮌뮐뮤뮨뮬뮴뮷므믄믈믐믓미믹민믿밀밂밈밉밋밌밍및밑바박밖밗반받발밝밞밟밤밥밧방밭배백밴밸뱀뱁뱃뱄뱅뱉뱌뱍뱐뱝버벅번벋벌벎범법벗�".split(""); +for(j = 0; j != D[185].length; ++j) if(D[185][j].charCodeAt(0) !== 0xFFFD) { e[D[185][j]] = 47360 + j; d[47360 + j] = D[185][j];} +D[186] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������벙벚베벡벤벧벨벰벱벳벴벵벼벽변별볍볏볐병볕볘볜보복볶본볼봄봅봇봉봐봔봤봬뵀뵈뵉뵌뵐뵘뵙뵤뵨부북분붇불붉붊붐붑붓붕붙붚붜붤붰붸뷔뷕뷘뷜뷩뷰뷴뷸븀븃븅브븍븐블븜븝븟비빅빈빌빎빔빕빗빙빚빛빠빡빤�".split(""); +for(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];} +D[187] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������빨빪빰빱빳빴빵빻빼빽뺀뺄뺌뺍뺏뺐뺑뺘뺙뺨뻐뻑뻔뻗뻘뻠뻣뻤뻥뻬뼁뼈뼉뼘뼙뼛뼜뼝뽀뽁뽄뽈뽐뽑뽕뾔뾰뿅뿌뿍뿐뿔뿜뿟뿡쀼쁑쁘쁜쁠쁨쁩삐삑삔삘삠삡삣삥사삭삯산삳살삵삶삼삽삿샀상샅새색샌샐샘샙샛샜생샤�".split(""); +for(j = 0; j != D[187].length; ++j) if(D[187][j].charCodeAt(0) !== 0xFFFD) { e[D[187][j]] = 47872 + j; d[47872 + j] = D[187][j];} +D[188] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������샥샨샬샴샵샷샹섀섄섈섐섕서석섞섟선섣설섦섧섬섭섯섰성섶세섹센셀셈셉셋셌셍셔셕션셜셤셥셧셨셩셰셴셸솅소속솎손솔솖솜솝솟송솥솨솩솬솰솽쇄쇈쇌쇔쇗쇘쇠쇤쇨쇰쇱쇳쇼쇽숀숄숌숍숏숑수숙순숟술숨숩숫숭�".split(""); +for(j = 0; j != D[188].length; ++j) if(D[188][j].charCodeAt(0) !== 0xFFFD) { e[D[188][j]] = 48128 + j; d[48128 + j] = D[188][j];} +D[189] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������숯숱숲숴쉈쉐쉑쉔쉘쉠쉥쉬쉭쉰쉴쉼쉽쉿슁슈슉슐슘슛슝스슥슨슬슭슴습슷승시식신싣실싫심십싯싱싶싸싹싻싼쌀쌈쌉쌌쌍쌓쌔쌕쌘쌜쌤쌥쌨쌩썅써썩썬썰썲썸썹썼썽쎄쎈쎌쏀쏘쏙쏜쏟쏠쏢쏨쏩쏭쏴쏵쏸쐈쐐쐤쐬쐰�".split(""); +for(j = 0; j != D[189].length; ++j) if(D[189][j].charCodeAt(0) !== 0xFFFD) { e[D[189][j]] = 48384 + j; d[48384 + j] = D[189][j];} +D[190] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������쐴쐼쐽쑈쑤쑥쑨쑬쑴쑵쑹쒀쒔쒜쒸쒼쓩쓰쓱쓴쓸쓺쓿씀씁씌씐씔씜씨씩씬씰씸씹씻씽아악안앉않알앍앎앓암압앗았앙앝앞애액앤앨앰앱앳앴앵야약얀얄얇얌얍얏양얕얗얘얜얠얩어억언얹얻얼얽얾엄업없엇었엉엊엌엎�".split(""); +for(j = 0; j != D[190].length; ++j) if(D[190][j].charCodeAt(0) !== 0xFFFD) { e[D[190][j]] = 48640 + j; d[48640 + j] = D[190][j];} +D[191] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������에엑엔엘엠엡엣엥여역엮연열엶엷염엽엾엿였영옅옆옇예옌옐옘옙옛옜오옥온올옭옮옰옳옴옵옷옹옻와왁완왈왐왑왓왔왕왜왝왠왬왯왱외왹왼욀욈욉욋욍요욕욘욜욤욥욧용우욱운울욹욺움웁웃웅워웍원월웜웝웠웡웨�".split(""); +for(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];} +D[192] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������웩웬웰웸웹웽위윅윈윌윔윕윗윙유육윤율윰윱윳융윷으윽은을읊음읍읏응읒읓읔읕읖읗의읜읠읨읫이익인일읽읾잃임입잇있잉잊잎자작잔잖잗잘잚잠잡잣잤장잦재잭잰잴잼잽잿쟀쟁쟈쟉쟌쟎쟐쟘쟝쟤쟨쟬저적전절젊�".split(""); +for(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];} +D[193] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������점접젓정젖제젝젠젤젬젭젯젱져젼졀졈졉졌졍졔조족존졸졺좀좁좃종좆좇좋좌좍좔좝좟좡좨좼좽죄죈죌죔죕죗죙죠죡죤죵주죽준줄줅줆줌줍줏중줘줬줴쥐쥑쥔쥘쥠쥡쥣쥬쥰쥴쥼즈즉즌즐즘즙즛증지직진짇질짊짐집짓�".split(""); +for(j = 0; j != D[193].length; ++j) if(D[193][j].charCodeAt(0) !== 0xFFFD) { e[D[193][j]] = 49408 + j; d[49408 + j] = D[193][j];} +D[194] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������징짖짙짚짜짝짠짢짤짧짬짭짯짰짱째짹짼쨀쨈쨉쨋쨌쨍쨔쨘쨩쩌쩍쩐쩔쩜쩝쩟쩠쩡쩨쩽쪄쪘쪼쪽쫀쫄쫌쫍쫏쫑쫓쫘쫙쫠쫬쫴쬈쬐쬔쬘쬠쬡쭁쭈쭉쭌쭐쭘쭙쭝쭤쭸쭹쮜쮸쯔쯤쯧쯩찌찍찐찔찜찝찡찢찧차착찬찮찰참찹찻�".split(""); +for(j = 0; j != D[194].length; ++j) if(D[194][j].charCodeAt(0) !== 0xFFFD) { e[D[194][j]] = 49664 + j; d[49664 + j] = D[194][j];} +D[195] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������찼창찾채책챈챌챔챕챗챘챙챠챤챦챨챰챵처척천철첨첩첫첬청체첵첸첼쳄쳅쳇쳉쳐쳔쳤쳬쳰촁초촉촌촐촘촙촛총촤촨촬촹최쵠쵤쵬쵭쵯쵱쵸춈추축춘출춤춥춧충춰췄췌췐취췬췰췸췹췻췽츄츈츌츔츙츠측츤츨츰츱츳층�".split(""); +for(j = 0; j != D[195].length; ++j) if(D[195][j].charCodeAt(0) !== 0xFFFD) { e[D[195][j]] = 49920 + j; d[49920 + j] = D[195][j];} +D[196] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������치칙친칟칠칡침칩칫칭카칵칸칼캄캅캇캉캐캑캔캘캠캡캣캤캥캬캭컁커컥컨컫컬컴컵컷컸컹케켁켄켈켐켑켓켕켜켠켤켬켭켯켰켱켸코콕콘콜콤콥콧콩콰콱콴콸쾀쾅쾌쾡쾨쾰쿄쿠쿡쿤쿨쿰쿱쿳쿵쿼퀀퀄퀑퀘퀭퀴퀵퀸퀼�".split(""); +for(j = 0; j != D[196].length; ++j) if(D[196][j].charCodeAt(0) !== 0xFFFD) { e[D[196][j]] = 50176 + j; d[50176 + j] = D[196][j];} +D[197] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������큄큅큇큉큐큔큘큠크큭큰클큼큽킁키킥킨킬킴킵킷킹타탁탄탈탉탐탑탓탔탕태택탠탤탬탭탯탰탱탸턍터턱턴털턺텀텁텃텄텅테텍텐텔템텝텟텡텨텬텼톄톈토톡톤톨톰톱톳통톺톼퇀퇘퇴퇸툇툉툐투툭툰툴툼툽툿퉁퉈퉜�".split(""); +for(j = 0; j != D[197].length; ++j) if(D[197][j].charCodeAt(0) !== 0xFFFD) { e[D[197][j]] = 50432 + j; d[50432 + j] = D[197][j];} +D[198] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������퉤튀튁튄튈튐튑튕튜튠튤튬튱트특튼튿틀틂틈틉틋틔틘틜틤틥티틱틴틸팀팁팃팅파팍팎판팔팖팜팝팟팠팡팥패팩팬팰팸팹팻팼팽퍄퍅퍼퍽펀펄펌펍펏펐펑페펙펜펠펨펩펫펭펴편펼폄폅폈평폐폘폡폣포폭폰폴폼폽폿퐁�".split(""); +for(j = 0; j != D[198].length; ++j) if(D[198][j].charCodeAt(0) !== 0xFFFD) { e[D[198][j]] = 50688 + j; d[50688 + j] = D[198][j];} +D[199] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������퐈퐝푀푄표푠푤푭푯푸푹푼푿풀풂품풉풋풍풔풩퓌퓐퓔퓜퓟퓨퓬퓰퓸퓻퓽프픈플픔픕픗피픽핀필핌핍핏핑하학한할핥함합핫항해핵핸핼햄햅햇했행햐향허헉헌헐헒험헙헛헝헤헥헨헬헴헵헷헹혀혁현혈혐협혓혔형혜혠�".split(""); +for(j = 0; j != D[199].length; ++j) if(D[199][j].charCodeAt(0) !== 0xFFFD) { e[D[199][j]] = 50944 + j; d[50944 + j] = D[199][j];} +D[200] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������혤혭호혹혼홀홅홈홉홋홍홑화확환활홧황홰홱홴횃횅회획횐횔횝횟횡효횬횰횹횻후훅훈훌훑훔훗훙훠훤훨훰훵훼훽휀휄휑휘휙휜휠휨휩휫휭휴휵휸휼흄흇흉흐흑흔흖흗흘흙흠흡흣흥흩희흰흴흼흽힁히힉힌힐힘힙힛힝�".split(""); +for(j = 0; j != D[200].length; ++j) if(D[200][j].charCodeAt(0) !== 0xFFFD) { e[D[200][j]] = 51200 + j; d[51200 + j] = D[200][j];} +D[202] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������伽佳假價加可呵哥嘉嫁家暇架枷柯歌珂痂稼苛茄街袈訶賈跏軻迦駕刻却各恪慤殼珏脚覺角閣侃刊墾奸姦干幹懇揀杆柬桿澗癎看磵稈竿簡肝艮艱諫間乫喝曷渴碣竭葛褐蝎鞨勘坎堪嵌感憾戡敢柑橄減甘疳監瞰紺邯鑑鑒龕�".split(""); +for(j = 0; j != D[202].length; ++j) if(D[202][j].charCodeAt(0) !== 0xFFFD) { e[D[202][j]] = 51712 + j; d[51712 + j] = D[202][j];} +D[203] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������匣岬甲胛鉀閘剛堈姜岡崗康强彊慷江畺疆糠絳綱羌腔舡薑襁講鋼降鱇介价個凱塏愷愾慨改槪漑疥皆盖箇芥蓋豈鎧開喀客坑更粳羹醵倨去居巨拒据據擧渠炬祛距踞車遽鉅鋸乾件健巾建愆楗腱虔蹇鍵騫乞傑杰桀儉劍劒檢�".split(""); +for(j = 0; j != D[203].length; ++j) if(D[203][j].charCodeAt(0) !== 0xFFFD) { e[D[203][j]] = 51968 + j; d[51968 + j] = D[203][j];} +D[204] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������瞼鈐黔劫怯迲偈憩揭擊格檄激膈覡隔堅牽犬甄絹繭肩見譴遣鵑抉決潔結缺訣兼慊箝謙鉗鎌京俓倞傾儆勁勍卿坰境庚徑慶憬擎敬景暻更梗涇炅烱璟璥瓊痙硬磬竟競絅經耕耿脛莖警輕逕鏡頃頸驚鯨係啓堺契季屆悸戒桂械�".split(""); +for(j = 0; j != D[204].length; ++j) if(D[204][j].charCodeAt(0) !== 0xFFFD) { e[D[204][j]] = 52224 + j; d[52224 + j] = D[204][j];} +D[205] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������棨溪界癸磎稽系繫繼計誡谿階鷄古叩告呱固姑孤尻庫拷攷故敲暠枯槁沽痼皐睾稿羔考股膏苦苽菰藁蠱袴誥賈辜錮雇顧高鼓哭斛曲梏穀谷鵠困坤崑昆梱棍滾琨袞鯤汨滑骨供公共功孔工恐恭拱控攻珙空蚣貢鞏串寡戈果瓜�".split(""); +for(j = 0; j != D[205].length; ++j) if(D[205][j].charCodeAt(0) !== 0xFFFD) { e[D[205][j]] = 52480 + j; d[52480 + j] = D[205][j];} +D[206] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������科菓誇課跨過鍋顆廓槨藿郭串冠官寬慣棺款灌琯瓘管罐菅觀貫關館刮恝括适侊光匡壙廣曠洸炚狂珖筐胱鑛卦掛罫乖傀塊壞怪愧拐槐魁宏紘肱轟交僑咬喬嬌嶠巧攪敎校橋狡皎矯絞翹膠蕎蛟較轎郊餃驕鮫丘久九仇俱具勾�".split(""); +for(j = 0; j != D[206].length; ++j) if(D[206][j].charCodeAt(0) !== 0xFFFD) { e[D[206][j]] = 52736 + j; d[52736 + j] = D[206][j];} +D[207] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������區口句咎嘔坵垢寇嶇廐懼拘救枸柩構歐毆毬求溝灸狗玖球瞿矩究絿耉臼舅舊苟衢謳購軀逑邱鉤銶駒驅鳩鷗龜國局菊鞠鞫麴君窘群裙軍郡堀屈掘窟宮弓穹窮芎躬倦券勸卷圈拳捲權淃眷厥獗蕨蹶闕机櫃潰詭軌饋句晷歸貴�".split(""); +for(j = 0; j != D[207].length; ++j) if(D[207][j].charCodeAt(0) !== 0xFFFD) { e[D[207][j]] = 52992 + j; d[52992 + j] = D[207][j];} +D[208] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������鬼龜叫圭奎揆槻珪硅窺竅糾葵規赳逵閨勻均畇筠菌鈞龜橘克剋劇戟棘極隙僅劤勤懃斤根槿瑾筋芹菫覲謹近饉契今妗擒昑檎琴禁禽芩衾衿襟金錦伋及急扱汲級給亘兢矜肯企伎其冀嗜器圻基埼夔奇妓寄岐崎己幾忌技旗旣�".split(""); +for(j = 0; j != D[208].length; ++j) if(D[208][j].charCodeAt(0) !== 0xFFFD) { e[D[208][j]] = 53248 + j; d[53248 + j] = D[208][j];} +D[209] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������朞期杞棋棄機欺氣汽沂淇玘琦琪璂璣畸畿碁磯祁祇祈祺箕紀綺羈耆耭肌記譏豈起錡錤飢饑騎騏驥麒緊佶吉拮桔金喫儺喇奈娜懦懶拏拿癩羅蘿螺裸邏那樂洛烙珞落諾酪駱亂卵暖欄煖爛蘭難鸞捏捺南嵐枏楠湳濫男藍襤拉�".split(""); +for(j = 0; j != D[209].length; ++j) if(D[209][j].charCodeAt(0) !== 0xFFFD) { e[D[209][j]] = 53504 + j; d[53504 + j] = D[209][j];} +D[210] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������納臘蠟衲囊娘廊朗浪狼郎乃來內奈柰耐冷女年撚秊念恬拈捻寧寗努勞奴弩怒擄櫓爐瑙盧老蘆虜路露駑魯鷺碌祿綠菉錄鹿論壟弄濃籠聾膿農惱牢磊腦賂雷尿壘屢樓淚漏累縷陋嫩訥杻紐勒肋凜凌稜綾能菱陵尼泥匿溺多茶�".split(""); +for(j = 0; j != D[210].length; ++j) if(D[210][j].charCodeAt(0) !== 0xFFFD) { e[D[210][j]] = 53760 + j; d[53760 + j] = D[210][j];} +D[211] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������丹亶但單團壇彖斷旦檀段湍短端簞緞蛋袒鄲鍛撻澾獺疸達啖坍憺擔曇淡湛潭澹痰聃膽蕁覃談譚錟沓畓答踏遝唐堂塘幢戇撞棠當糖螳黨代垈坮大對岱帶待戴擡玳臺袋貸隊黛宅德悳倒刀到圖堵塗導屠島嶋度徒悼挑掉搗桃�".split(""); +for(j = 0; j != D[211].length; ++j) if(D[211][j].charCodeAt(0) !== 0xFFFD) { e[D[211][j]] = 54016 + j; d[54016 + j] = D[211][j];} +D[212] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������棹櫂淘渡滔濤燾盜睹禱稻萄覩賭跳蹈逃途道都鍍陶韜毒瀆牘犢獨督禿篤纛讀墩惇敦旽暾沌焞燉豚頓乭突仝冬凍動同憧東桐棟洞潼疼瞳童胴董銅兜斗杜枓痘竇荳讀豆逗頭屯臀芚遁遯鈍得嶝橙燈登等藤謄鄧騰喇懶拏癩羅�".split(""); +for(j = 0; j != D[212].length; ++j) if(D[212][j].charCodeAt(0) !== 0xFFFD) { e[D[212][j]] = 54272 + j; d[54272 + j] = D[212][j];} +D[213] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������蘿螺裸邏樂洛烙珞絡落諾酪駱丹亂卵欄欒瀾爛蘭鸞剌辣嵐擥攬欖濫籃纜藍襤覽拉臘蠟廊朗浪狼琅瑯螂郞來崍徠萊冷掠略亮倆兩凉梁樑粮粱糧良諒輛量侶儷勵呂廬慮戾旅櫚濾礪藜蠣閭驢驪麗黎力曆歷瀝礫轢靂憐戀攣漣�".split(""); +for(j = 0; j != D[213].length; ++j) if(D[213][j].charCodeAt(0) !== 0xFFFD) { e[D[213][j]] = 54528 + j; d[54528 + j] = D[213][j];} +D[214] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������煉璉練聯蓮輦連鍊冽列劣洌烈裂廉斂殮濂簾獵令伶囹寧岺嶺怜玲笭羚翎聆逞鈴零靈領齡例澧禮醴隷勞怒撈擄櫓潞瀘爐盧老蘆虜路輅露魯鷺鹵碌祿綠菉錄鹿麓論壟弄朧瀧瓏籠聾儡瀨牢磊賂賚賴雷了僚寮廖料燎療瞭聊蓼�".split(""); +for(j = 0; j != D[214].length; ++j) if(D[214][j].charCodeAt(0) !== 0xFFFD) { e[D[214][j]] = 54784 + j; d[54784 + j] = D[214][j];} +D[215] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������遼鬧龍壘婁屢樓淚漏瘻累縷蔞褸鏤陋劉旒柳榴流溜瀏琉瑠留瘤硫謬類六戮陸侖倫崙淪綸輪律慄栗率隆勒肋凜凌楞稜綾菱陵俚利厘吏唎履悧李梨浬犁狸理璃異痢籬罹羸莉裏裡里釐離鯉吝潾燐璘藺躪隣鱗麟林淋琳臨霖砬�".split(""); +for(j = 0; j != D[215].length; ++j) if(D[215][j].charCodeAt(0) !== 0xFFFD) { e[D[215][j]] = 55040 + j; d[55040 + j] = D[215][j];} +D[216] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������立笠粒摩瑪痲碼磨馬魔麻寞幕漠膜莫邈万卍娩巒彎慢挽晩曼滿漫灣瞞萬蔓蠻輓饅鰻唜抹末沫茉襪靺亡妄忘忙望網罔芒茫莽輞邙埋妹媒寐昧枚梅每煤罵買賣邁魅脈貊陌驀麥孟氓猛盲盟萌冪覓免冕勉棉沔眄眠綿緬面麵滅�".split(""); +for(j = 0; j != D[216].length; ++j) if(D[216][j].charCodeAt(0) !== 0xFFFD) { e[D[216][j]] = 55296 + j; d[55296 + j] = D[216][j];} +D[217] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������蔑冥名命明暝椧溟皿瞑茗蓂螟酩銘鳴袂侮冒募姆帽慕摸摹暮某模母毛牟牡瑁眸矛耗芼茅謀謨貌木沐牧目睦穆鶩歿沒夢朦蒙卯墓妙廟描昴杳渺猫竗苗錨務巫憮懋戊拇撫无楙武毋無珷畝繆舞茂蕪誣貿霧鵡墨默們刎吻問文�".split(""); +for(j = 0; j != D[217].length; ++j) if(D[217][j].charCodeAt(0) !== 0xFFFD) { e[D[217][j]] = 55552 + j; d[55552 + j] = D[217][j];} +D[218] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������汶紊紋聞蚊門雯勿沕物味媚尾嵋彌微未梶楣渼湄眉米美薇謎迷靡黴岷悶愍憫敏旻旼民泯玟珉緡閔密蜜謐剝博拍搏撲朴樸泊珀璞箔粕縛膊舶薄迫雹駁伴半反叛拌搬攀斑槃泮潘班畔瘢盤盼磐磻礬絆般蟠返頒飯勃拔撥渤潑�".split(""); +for(j = 0; j != D[218].length; ++j) if(D[218][j].charCodeAt(0) !== 0xFFFD) { e[D[218][j]] = 55808 + j; d[55808 + j] = D[218][j];} +D[219] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������發跋醱鉢髮魃倣傍坊妨尨幇彷房放方旁昉枋榜滂磅紡肪膀舫芳蒡蚌訪謗邦防龐倍俳北培徘拜排杯湃焙盃背胚裴裵褙賠輩配陪伯佰帛柏栢白百魄幡樊煩燔番磻繁蕃藩飜伐筏罰閥凡帆梵氾汎泛犯範范法琺僻劈壁擘檗璧癖�".split(""); +for(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];} +D[220] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������碧蘗闢霹便卞弁變辨辯邊別瞥鱉鼈丙倂兵屛幷昞昺柄棅炳甁病秉竝輧餠騈保堡報寶普步洑湺潽珤甫菩補褓譜輔伏僕匐卜宓復服福腹茯蔔複覆輹輻馥鰒本乶俸奉封峯峰捧棒烽熢琫縫蓬蜂逢鋒鳳不付俯傅剖副否咐埠夫婦�".split(""); +for(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];} +D[221] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������孚孵富府復扶敷斧浮溥父符簿缶腐腑膚艀芙莩訃負賦賻赴趺部釜阜附駙鳧北分吩噴墳奔奮忿憤扮昐汾焚盆粉糞紛芬賁雰不佛弗彿拂崩朋棚硼繃鵬丕備匕匪卑妃婢庇悲憊扉批斐枇榧比毖毗毘沸泌琵痺砒碑秕秘粃緋翡肥�".split(""); +for(j = 0; j != D[221].length; ++j) if(D[221][j].charCodeAt(0) !== 0xFFFD) { e[D[221][j]] = 56576 + j; d[56576 + j] = D[221][j];} +D[222] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������脾臂菲蜚裨誹譬費鄙非飛鼻嚬嬪彬斌檳殯浜濱瀕牝玭貧賓頻憑氷聘騁乍事些仕伺似使俟僿史司唆嗣四士奢娑寫寺射巳師徙思捨斜斯柶査梭死沙泗渣瀉獅砂社祀祠私篩紗絲肆舍莎蓑蛇裟詐詞謝賜赦辭邪飼駟麝削數朔索�".split(""); +for(j = 0; j != D[222].length; ++j) if(D[222][j].charCodeAt(0) !== 0xFFFD) { e[D[222][j]] = 56832 + j; d[56832 + j] = D[222][j];} +D[223] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������傘刪山散汕珊産疝算蒜酸霰乷撒殺煞薩三參杉森渗芟蔘衫揷澁鈒颯上傷像償商喪嘗孀尙峠常床庠廂想桑橡湘爽牀狀相祥箱翔裳觴詳象賞霜塞璽賽嗇塞穡索色牲生甥省笙墅壻嶼序庶徐恕抒捿敍暑曙書栖棲犀瑞筮絮緖署�".split(""); +for(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];} +D[224] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������胥舒薯西誓逝鋤黍鼠夕奭席惜昔晳析汐淅潟石碩蓆釋錫仙僊先善嬋宣扇敾旋渲煽琁瑄璇璿癬禪線繕羨腺膳船蘚蟬詵跣選銑鐥饍鮮卨屑楔泄洩渫舌薛褻設說雪齧剡暹殲纖蟾贍閃陝攝涉燮葉城姓宬性惺成星晟猩珹盛省筬�".split(""); +for(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];} +D[225] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������聖聲腥誠醒世勢歲洗稅笹細說貰召嘯塑宵小少巢所掃搔昭梳沼消溯瀟炤燒甦疏疎瘙笑篠簫素紹蔬蕭蘇訴逍遡邵銷韶騷俗屬束涑粟續謖贖速孫巽損蓀遜飡率宋悚松淞訟誦送頌刷殺灑碎鎖衰釗修受嗽囚垂壽嫂守岫峀帥愁�".split(""); +for(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];} +D[226] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������戍手授搜收數樹殊水洙漱燧狩獸琇璲瘦睡秀穗竪粹綏綬繡羞脩茱蒐蓚藪袖誰讐輸遂邃酬銖銹隋隧隨雖需須首髓鬚叔塾夙孰宿淑潚熟琡璹肅菽巡徇循恂旬栒楯橓殉洵淳珣盾瞬筍純脣舜荀蓴蕣詢諄醇錞順馴戌術述鉥崇崧�".split(""); +for(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];} +D[227] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������嵩瑟膝蝨濕拾習褶襲丞乘僧勝升承昇繩蠅陞侍匙嘶始媤尸屎屍市弑恃施是時枾柴猜矢示翅蒔蓍視試詩諡豕豺埴寔式息拭植殖湜熄篒蝕識軾食飾伸侁信呻娠宸愼新晨燼申神紳腎臣莘薪藎蜃訊身辛辰迅失室實悉審尋心沁�".split(""); +for(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];} +D[228] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������沈深瀋甚芯諶什十拾雙氏亞俄兒啞娥峨我牙芽莪蛾衙訝阿雅餓鴉鵝堊岳嶽幄惡愕握樂渥鄂鍔顎鰐齷安岸按晏案眼雁鞍顔鮟斡謁軋閼唵岩巖庵暗癌菴闇壓押狎鴨仰央怏昻殃秧鴦厓哀埃崖愛曖涯碍艾隘靄厄扼掖液縊腋額�".split(""); +for(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];} +D[229] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������櫻罌鶯鸚也倻冶夜惹揶椰爺耶若野弱掠略約若葯蒻藥躍亮佯兩凉壤孃恙揚攘敭暘梁楊樣洋瀁煬痒瘍禳穰糧羊良襄諒讓釀陽量養圄御於漁瘀禦語馭魚齬億憶抑檍臆偃堰彦焉言諺孼蘖俺儼嚴奄掩淹嶪業円予余勵呂女如廬�".split(""); +for(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];} +D[230] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������旅歟汝濾璵礖礪與艅茹輿轝閭餘驪麗黎亦力域役易曆歷疫繹譯轢逆驛嚥堧姸娟宴年延憐戀捐挻撚椽沇沿涎涓淵演漣烟然煙煉燃燕璉硏硯秊筵緣練縯聯衍軟輦蓮連鉛鍊鳶列劣咽悅涅烈熱裂說閱厭廉念捻染殮炎焰琰艶苒�".split(""); +for(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];} +D[231] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������簾閻髥鹽曄獵燁葉令囹塋寧嶺嶸影怜映暎楹榮永泳渶潁濚瀛瀯煐營獰玲瑛瑩瓔盈穎纓羚聆英詠迎鈴鍈零霙靈領乂倪例刈叡曳汭濊猊睿穢芮藝蘂禮裔詣譽豫醴銳隸霓預五伍俉傲午吾吳嗚塢墺奧娛寤悟惡懊敖旿晤梧汚澳�".split(""); +for(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];} +D[232] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������烏熬獒筽蜈誤鰲鼇屋沃獄玉鈺溫瑥瘟穩縕蘊兀壅擁瓮甕癰翁邕雍饔渦瓦窩窪臥蛙蝸訛婉完宛梡椀浣玩琓琬碗緩翫脘腕莞豌阮頑曰往旺枉汪王倭娃歪矮外嵬巍猥畏了僚僥凹堯夭妖姚寥寮尿嶢拗搖撓擾料曜樂橈燎燿瑤療�".split(""); +for(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];} +D[233] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������窈窯繇繞耀腰蓼蟯要謠遙遼邀饒慾欲浴縟褥辱俑傭冗勇埇墉容庸慂榕涌湧溶熔瑢用甬聳茸蓉踊鎔鏞龍于佑偶優又友右宇寓尤愚憂旴牛玗瑀盂祐禑禹紆羽芋藕虞迂遇郵釪隅雨雩勖彧旭昱栯煜稶郁頊云暈橒殞澐熉耘芸蕓�".split(""); +for(j = 0; j != D[233].length; ++j) if(D[233][j].charCodeAt(0) !== 0xFFFD) { e[D[233][j]] = 59648 + j; d[59648 + j] = D[233][j];} +D[234] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������運隕雲韻蔚鬱亐熊雄元原員圓園垣媛嫄寃怨愿援沅洹湲源爰猿瑗苑袁轅遠阮院願鴛月越鉞位偉僞危圍委威尉慰暐渭爲瑋緯胃萎葦蔿蝟衛褘謂違韋魏乳侑儒兪劉唯喩孺宥幼幽庾悠惟愈愉揄攸有杻柔柚柳楡楢油洧流游溜�".split(""); +for(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];} +D[235] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������濡猶猷琉瑜由留癒硫紐維臾萸裕誘諛諭踰蹂遊逾遺酉釉鍮類六堉戮毓肉育陸倫允奫尹崙淪潤玧胤贇輪鈗閏律慄栗率聿戎瀜絨融隆垠恩慇殷誾銀隱乙吟淫蔭陰音飮揖泣邑凝應膺鷹依倚儀宜意懿擬椅毅疑矣義艤薏蟻衣誼�".split(""); +for(j = 0; j != D[235].length; ++j) if(D[235][j].charCodeAt(0) !== 0xFFFD) { e[D[235][j]] = 60160 + j; d[60160 + j] = D[235][j];} +D[236] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������議醫二以伊利吏夷姨履已弛彛怡易李梨泥爾珥理異痍痢移罹而耳肄苡荑裏裡貽貳邇里離飴餌匿溺瀷益翊翌翼謚人仁刃印吝咽因姻寅引忍湮燐璘絪茵藺蚓認隣靭靷鱗麟一佚佾壹日溢逸鎰馹任壬妊姙恁林淋稔臨荏賃入卄�".split(""); +for(j = 0; j != D[236].length; ++j) if(D[236][j].charCodeAt(0) !== 0xFFFD) { e[D[236][j]] = 60416 + j; d[60416 + j] = D[236][j];} +D[237] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������立笠粒仍剩孕芿仔刺咨姉姿子字孜恣慈滋炙煮玆瓷疵磁紫者自茨蔗藉諮資雌作勺嚼斫昨灼炸爵綽芍酌雀鵲孱棧殘潺盞岑暫潛箴簪蠶雜丈仗匠場墻壯奬將帳庄張掌暲杖樟檣欌漿牆狀獐璋章粧腸臟臧莊葬蔣薔藏裝贓醬長�".split(""); +for(j = 0; j != D[237].length; ++j) if(D[237][j].charCodeAt(0) !== 0xFFFD) { e[D[237][j]] = 60672 + j; d[60672 + j] = D[237][j];} +D[238] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������障再哉在宰才材栽梓渽滓災縡裁財載齋齎爭箏諍錚佇低儲咀姐底抵杵楮樗沮渚狙猪疽箸紵苧菹著藷詛貯躇這邸雎齟勣吊嫡寂摘敵滴狄炙的積笛籍績翟荻謫賊赤跡蹟迪迹適鏑佃佺傳全典前剪塡塼奠專展廛悛戰栓殿氈澱�".split(""); +for(j = 0; j != D[238].length; ++j) if(D[238][j].charCodeAt(0) !== 0xFFFD) { e[D[238][j]] = 60928 + j; d[60928 + j] = D[238][j];} +D[239] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������煎琠田甸畑癲筌箋箭篆纏詮輾轉鈿銓錢鐫電顚顫餞切截折浙癤竊節絶占岾店漸点粘霑鮎點接摺蝶丁井亭停偵呈姃定幀庭廷征情挺政整旌晶晸柾楨檉正汀淀淨渟湞瀞炡玎珽町睛碇禎程穽精綎艇訂諪貞鄭酊釘鉦鋌錠霆靖�".split(""); +for(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];} +D[240] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������靜頂鼎制劑啼堤帝弟悌提梯濟祭第臍薺製諸蹄醍除際霽題齊俎兆凋助嘲弔彫措操早晁曺曹朝條棗槽漕潮照燥爪璪眺祖祚租稠窕粗糟組繰肇藻蚤詔調趙躁造遭釣阻雕鳥族簇足鏃存尊卒拙猝倧宗從悰慫棕淙琮種終綜縱腫�".split(""); +for(j = 0; j != D[240].length; ++j) if(D[240][j].charCodeAt(0) !== 0xFFFD) { e[D[240][j]] = 61440 + j; d[61440 + j] = D[240][j];} +D[241] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������踪踵鍾鐘佐坐左座挫罪主住侏做姝胄呪周嗾奏宙州廚晝朱柱株注洲湊澍炷珠疇籌紂紬綢舟蛛註誅走躊輳週酎酒鑄駐竹粥俊儁准埈寯峻晙樽浚準濬焌畯竣蠢逡遵雋駿茁中仲衆重卽櫛楫汁葺增憎曾拯烝甑症繒蒸證贈之只�".split(""); +for(j = 0; j != D[241].length; ++j) if(D[241][j].charCodeAt(0) !== 0xFFFD) { e[D[241][j]] = 61696 + j; d[61696 + j] = D[241][j];} +D[242] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������咫地址志持指摯支旨智枝枳止池沚漬知砥祉祗紙肢脂至芝芷蜘誌識贄趾遲直稙稷織職唇嗔塵振搢晉晋桭榛殄津溱珍瑨璡畛疹盡眞瞋秦縉縝臻蔯袗診賑軫辰進鎭陣陳震侄叱姪嫉帙桎瓆疾秩窒膣蛭質跌迭斟朕什執潗緝輯�".split(""); +for(j = 0; j != D[242].length; ++j) if(D[242][j].charCodeAt(0) !== 0xFFFD) { e[D[242][j]] = 61952 + j; d[61952 + j] = D[242][j];} +D[243] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������鏶集徵懲澄且侘借叉嗟嵯差次此磋箚茶蹉車遮捉搾着窄錯鑿齪撰澯燦璨瓚竄簒纂粲纘讚贊鑽餐饌刹察擦札紮僭參塹慘慙懺斬站讒讖倉倡創唱娼廠彰愴敞昌昶暢槍滄漲猖瘡窓脹艙菖蒼債埰寀寨彩採砦綵菜蔡采釵冊柵策�".split(""); +for(j = 0; j != D[243].length; ++j) if(D[243][j].charCodeAt(0) !== 0xFFFD) { e[D[243][j]] = 62208 + j; d[62208 + j] = D[243][j];} +D[244] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������責凄妻悽處倜刺剔尺慽戚拓擲斥滌瘠脊蹠陟隻仟千喘天川擅泉淺玔穿舛薦賤踐遷釧闡阡韆凸哲喆徹撤澈綴輟轍鐵僉尖沾添甛瞻簽籤詹諂堞妾帖捷牒疊睫諜貼輒廳晴淸聽菁請靑鯖切剃替涕滯締諦逮遞體初剿哨憔抄招梢�".split(""); +for(j = 0; j != D[244].length; ++j) if(D[244][j].charCodeAt(0) !== 0xFFFD) { e[D[244][j]] = 62464 + j; d[62464 + j] = D[244][j];} +D[245] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������椒楚樵炒焦硝礁礎秒稍肖艸苕草蕉貂超酢醋醮促囑燭矗蜀觸寸忖村邨叢塚寵悤憁摠總聰蔥銃撮催崔最墜抽推椎楸樞湫皺秋芻萩諏趨追鄒酋醜錐錘鎚雛騶鰍丑畜祝竺筑築縮蓄蹙蹴軸逐春椿瑃出朮黜充忠沖蟲衝衷悴膵萃�".split(""); +for(j = 0; j != D[245].length; ++j) if(D[245][j].charCodeAt(0) !== 0xFFFD) { e[D[245][j]] = 62720 + j; d[62720 + j] = D[245][j];} +D[246] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������贅取吹嘴娶就炊翠聚脆臭趣醉驟鷲側仄厠惻測層侈値嗤峙幟恥梔治淄熾痔痴癡稚穉緇緻置致蚩輜雉馳齒則勅飭親七柒漆侵寢枕沈浸琛砧針鍼蟄秤稱快他咤唾墮妥惰打拖朶楕舵陀馱駝倬卓啄坼度托拓擢晫柝濁濯琢琸託�".split(""); +for(j = 0; j != D[246].length; ++j) if(D[246][j].charCodeAt(0) !== 0xFFFD) { e[D[246][j]] = 62976 + j; d[62976 + j] = D[246][j];} +D[247] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������鐸呑嘆坦彈憚歎灘炭綻誕奪脫探眈耽貪塔搭榻宕帑湯糖蕩兌台太怠態殆汰泰笞胎苔跆邰颱宅擇澤撑攄兎吐土討慟桶洞痛筒統通堆槌腿褪退頹偸套妬投透鬪慝特闖坡婆巴把播擺杷波派爬琶破罷芭跛頗判坂板版瓣販辦鈑�".split(""); +for(j = 0; j != D[247].length; ++j) if(D[247][j].charCodeAt(0) !== 0xFFFD) { e[D[247][j]] = 63232 + j; d[63232 + j] = D[247][j];} +D[248] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������阪八叭捌佩唄悖敗沛浿牌狽稗覇貝彭澎烹膨愎便偏扁片篇編翩遍鞭騙貶坪平枰萍評吠嬖幣廢弊斃肺蔽閉陛佈包匍匏咆哺圃布怖抛抱捕暴泡浦疱砲胞脯苞葡蒲袍褒逋鋪飽鮑幅暴曝瀑爆輻俵剽彪慓杓標漂瓢票表豹飇飄驃�".split(""); +for(j = 0; j != D[248].length; ++j) if(D[248][j].charCodeAt(0) !== 0xFFFD) { e[D[248][j]] = 63488 + j; d[63488 + j] = D[248][j];} +D[249] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������品稟楓諷豊風馮彼披疲皮被避陂匹弼必泌珌畢疋筆苾馝乏逼下何厦夏廈昰河瑕荷蝦賀遐霞鰕壑學虐謔鶴寒恨悍旱汗漢澣瀚罕翰閑閒限韓割轄函含咸啣喊檻涵緘艦銜陷鹹合哈盒蛤閤闔陜亢伉姮嫦巷恒抗杭桁沆港缸肛航�".split(""); +for(j = 0; j != D[249].length; ++j) if(D[249][j].charCodeAt(0) !== 0xFFFD) { e[D[249][j]] = 63744 + j; d[63744 + j] = D[249][j];} +D[250] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������行降項亥偕咳垓奚孩害懈楷海瀣蟹解該諧邂駭骸劾核倖幸杏荇行享向嚮珦鄕響餉饗香噓墟虛許憲櫶獻軒歇險驗奕爀赫革俔峴弦懸晛泫炫玄玹現眩睍絃絢縣舷衒見賢鉉顯孑穴血頁嫌俠協夾峽挾浹狹脅脇莢鋏頰亨兄刑型�".split(""); +for(j = 0; j != D[250].length; ++j) if(D[250][j].charCodeAt(0) !== 0xFFFD) { e[D[250][j]] = 64000 + j; d[64000 + j] = D[250][j];} +D[251] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������形泂滎瀅灐炯熒珩瑩荊螢衡逈邢鎣馨兮彗惠慧暳蕙蹊醯鞋乎互呼壕壺好岵弧戶扈昊晧毫浩淏湖滸澔濠濩灝狐琥瑚瓠皓祜糊縞胡芦葫蒿虎號蝴護豪鎬頀顥惑或酷婚昏混渾琿魂忽惚笏哄弘汞泓洪烘紅虹訌鴻化和嬅樺火畵�".split(""); +for(j = 0; j != D[251].length; ++j) if(D[251][j].charCodeAt(0) !== 0xFFFD) { e[D[251][j]] = 64256 + j; d[64256 + j] = D[251][j];} +D[252] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������禍禾花華話譁貨靴廓擴攫確碻穫丸喚奐宦幻患換歡晥桓渙煥環紈還驩鰥活滑猾豁闊凰幌徨恍惶愰慌晃晄榥況湟滉潢煌璜皇篁簧荒蝗遑隍黃匯回廻徊恢悔懷晦會檜淮澮灰獪繪膾茴蛔誨賄劃獲宖橫鐄哮嚆孝效斅曉梟涍淆�".split(""); +for(j = 0; j != D[252].length; ++j) if(D[252][j].charCodeAt(0) !== 0xFFFD) { e[D[252][j]] = 64512 + j; d[64512 + j] = D[252][j];} +D[253] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������爻肴酵驍侯候厚后吼喉嗅帿後朽煦珝逅勛勳塤壎焄熏燻薰訓暈薨喧暄煊萱卉喙毁彙徽揮暉煇諱輝麾休携烋畦虧恤譎鷸兇凶匈洶胸黑昕欣炘痕吃屹紇訖欠欽歆吸恰洽翕興僖凞喜噫囍姬嬉希憙憘戱晞曦熙熹熺犧禧稀羲詰�".split(""); +for(j = 0; j != D[253].length; ++j) if(D[253][j].charCodeAt(0) !== 0xFFFD) { e[D[253][j]] = 64768 + j; d[64768 + j] = D[253][j];} +return {"enc": e, "dec": d }; })(); diff --git a/node_modules/codepage/bits/21025.js b/node_modules/codepage/bits/21025.js new file mode 100644 index 000000000..b2612df52 --- /dev/null +++ b/node_modules/codepage/bits/21025.js @@ -0,0 +1,2 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[21025] = (function(){ var d = "ŸŸ\u0002\u0003œ\t†—Ž\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013…\b‡\u0018\u0019’\u001c\u001d\u001e\u001f€‚ƒ„\n\u0017\u001bˆ‰Š‹Œ\u0005\u0006\u0007‘\u0016“”•–\u0004˜™š›\u0014\u0015ž\u001a  ђѓёєѕіїј[.<(+!&љњћќўџЪ№Ђ]$*);^-/ЃЁЄЅІЇЈЉ|,%_>?ЊЋЌ­ЎЏюаб`:#@'=\"цabcdefghiдефгхийjklmnopqrклмнопя~stuvwxyzрстужвьызшэщчъЮАБЦДЕФГ{ABCDEFGHIХИЙКЛМ}JKLMNOPQRНОПЯРС\\§STUVWXYZТУЖВЬЫ0123456789ЗШЭЩЧŸ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); diff --git a/node_modules/codepage/bits/21027.js b/node_modules/codepage/bits/21027.js new file mode 100644 index 000000000..5af8acaa9 --- /dev/null +++ b/node_modules/codepage/bits/21027.js @@ -0,0 +1,2 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[21027] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f\u0000 \u0000。「」、・ヲァィ¢.<(+|&ゥェォャュョッーア!$*);¬-/イウエオカキケ\u0000,%_>?コサシスセソタチツ`:#@'\"\u0000abcdefghiテトナニŽネ\u0000jklmnopqrノハヒフヘホ¯~stuvwxyzマミム[メモ^£¥ヤユヨラリルレロワン]゙゚{ABCDEFG\u0000\u0000}JKLMNOP\u0000\\\u0000STUVWX\u0000\u000001234567", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); diff --git a/node_modules/codepage/bits/21866.js b/node_modules/codepage/bits/21866.js new file mode 100644 index 000000000..79e96b51f --- /dev/null +++ b/node_modules/codepage/bits/21866.js @@ -0,0 +1,2 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[21866] = (function(){ var d = "ЪЪ\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~─│┌┐└┘├┤┬┴┼▀▄█▌▐░▒▓⌠■∙√≈≤≥ ⌡°²·÷═║╒ёє╔ії╗╘╙╚╛ґў╞╟╠╡ЁЄ╣ІЇ╦╧╨╩╪ҐЎ©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); diff --git a/node_modules/codepage/bits/28591.js b/node_modules/codepage/bits/28591.js new file mode 100644 index 000000000..bd51463e4 --- /dev/null +++ b/node_modules/codepage/bits/28591.js @@ -0,0 +1,2 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[28591] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); diff --git a/node_modules/codepage/bits/28592.js b/node_modules/codepage/bits/28592.js new file mode 100644 index 000000000..ee77fb99d --- /dev/null +++ b/node_modules/codepage/bits/28592.js @@ -0,0 +1,2 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[28592] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ Ą˘Ł¤ĽŚ§¨ŠŞŤŹ­ŽŻ°ą˛ł´ľśˇ¸šşťź˝žżŔÁÂĂÄĹĆÇČÉĘËĚÍÎĎĐŃŇÓÔŐÖ×ŘŮÚŰÜÝŢßŕáâăäĺćçčéęëěíîďđńňóôőö÷řůúűüýţ˙", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); diff --git a/node_modules/codepage/bits/28593.js b/node_modules/codepage/bits/28593.js new file mode 100644 index 000000000..55086c8a6 --- /dev/null +++ b/node_modules/codepage/bits/28593.js @@ -0,0 +1,2 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[28593] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ Ħ˘£¤�Ĥ§¨İŞĞĴ­�Ż°ħ²³´µĥ·¸ışğĵ½�żÀÁÂ�ÄĊĈÇÈÉÊËÌÍÎÏ�ÑÒÓÔĠÖ×ĜÙÚÛÜŬŜßàáâ�äċĉçèéêëìíîï�ñòóôġö÷ĝùúûüŭŝ˙", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); diff --git a/node_modules/codepage/bits/28594.js b/node_modules/codepage/bits/28594.js new file mode 100644 index 000000000..0f2ece4ee --- /dev/null +++ b/node_modules/codepage/bits/28594.js @@ -0,0 +1,2 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[28594] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ĄĸŖ¤ĨĻ§¨ŠĒĢŦ­Ž¯°ą˛ŗ´ĩļˇ¸šēģŧŊžŋĀÁÂÃÄÅÆĮČÉĘËĖÍÎĪĐŅŌĶÔÕÖ×ØŲÚÛÜŨŪßāáâãäåæįčéęëėíîīđņōķôõö÷øųúûüũū˙", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); diff --git a/node_modules/codepage/bits/28595.js b/node_modules/codepage/bits/28595.js new file mode 100644 index 000000000..103585654 --- /dev/null +++ b/node_modules/codepage/bits/28595.js @@ -0,0 +1,2 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[28595] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ЁЂЃЄЅІЇЈЉЊЋЌ­ЎЏАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя№ёђѓєѕіїјљњћќ§ўџ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); diff --git a/node_modules/codepage/bits/28596.js b/node_modules/codepage/bits/28596.js new file mode 100644 index 000000000..a49c68ad6 --- /dev/null +++ b/node_modules/codepage/bits/28596.js @@ -0,0 +1,2 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[28596] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ���¤�������،­�������������؛���؟�ءآأؤإئابةتثجحخدذرزسشصضطظعغ�����ـفقكلمنهوىيًٌٍَُِّْ�������������", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); diff --git a/node_modules/codepage/bits/28597.js b/node_modules/codepage/bits/28597.js new file mode 100644 index 000000000..befdd5c86 --- /dev/null +++ b/node_modules/codepage/bits/28597.js @@ -0,0 +1,2 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[28597] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ‘’£€₯¦§¨©ͺ«¬­�―°±²³΄΅Ά·ΈΉΊ»Ό½ΎΏΐΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡ�ΣΤΥΦΧΨΩΪΫάέήίΰαβγδεζηθικλμνξοπρςστυφχψωϊϋόύώ�", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); diff --git a/node_modules/codepage/bits/28598.js b/node_modules/codepage/bits/28598.js new file mode 100644 index 000000000..c6ab539e7 --- /dev/null +++ b/node_modules/codepage/bits/28598.js @@ -0,0 +1,2 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[28598] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ �¢£¤¥¦§¨©×«¬­®¯°±²³´µ¶·¸¹÷»¼½¾��������������������������������‗אבגדהוזחטיךכלםמןנסעףפץצקרשת��‎‏�", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); diff --git a/node_modules/codepage/bits/28599.js b/node_modules/codepage/bits/28599.js new file mode 100644 index 000000000..533e5cdf8 --- /dev/null +++ b/node_modules/codepage/bits/28599.js @@ -0,0 +1,2 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[28599] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏĞÑÒÓÔÕÖ×ØÙÚÛÜİŞßàáâãäåæçèéêëìíîïğñòóôõö÷øùúûüışÿ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); diff --git a/node_modules/codepage/bits/28600.js b/node_modules/codepage/bits/28600.js new file mode 100644 index 000000000..8aaf39f6f --- /dev/null +++ b/node_modules/codepage/bits/28600.js @@ -0,0 +1,2 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[28600] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ĄĒĢĪĨĶ§ĻĐŠŦŽ­ŪŊ°ąēģīĩķ·ļđšŧž―ūŋĀÁÂÃÄÅÆĮČÉĘËĖÍÎÏÐŅŌÓÔÕÖŨØŲÚÛÜÝÞßāáâãäåæįčéęëėíîïðņōóôõöũøųúûüýþĸ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); diff --git a/node_modules/codepage/bits/28601.js b/node_modules/codepage/bits/28601.js new file mode 100644 index 000000000..c9d09fce1 --- /dev/null +++ b/node_modules/codepage/bits/28601.js @@ -0,0 +1,2 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[28601] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); diff --git a/node_modules/codepage/bits/28603.js b/node_modules/codepage/bits/28603.js new file mode 100644 index 000000000..50d1aae9e --- /dev/null +++ b/node_modules/codepage/bits/28603.js @@ -0,0 +1,2 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[28603] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ”¢£¤„¦§Ø©Ŗ«¬­®Æ°±²³“µ¶·ø¹ŗ»¼½¾æĄĮĀĆÄÅĘĒČÉŹĖĢĶĪĻŠŃŅÓŌÕÖ×ŲŁŚŪÜŻŽßąįāćäåęēčéźėģķīļšńņóōõö÷ųłśūüżž’", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); diff --git a/node_modules/codepage/bits/28604.js b/node_modules/codepage/bits/28604.js new file mode 100644 index 000000000..f3702fa85 --- /dev/null +++ b/node_modules/codepage/bits/28604.js @@ -0,0 +1,2 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[28604] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ Ḃḃ£ĊċḊ§Ẁ©ẂḋỲ­®ŸḞḟĠġṀṁ¶ṖẁṗẃṠỳẄẅṡÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏŴÑÒÓÔÕÖṪØÙÚÛÜÝŶßàáâãäåæçèéêëìíîïŵñòóôõöṫøùúûüýŷÿ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); diff --git a/node_modules/codepage/bits/28605.js b/node_modules/codepage/bits/28605.js new file mode 100644 index 000000000..2c78e5c16 --- /dev/null +++ b/node_modules/codepage/bits/28605.js @@ -0,0 +1,2 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[28605] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£€¥Š§š©ª«¬­®¯°±²³Žµ¶·ž¹º»ŒœŸ¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); diff --git a/node_modules/codepage/bits/28606.js b/node_modules/codepage/bits/28606.js new file mode 100644 index 000000000..b23a87b15 --- /dev/null +++ b/node_modules/codepage/bits/28606.js @@ -0,0 +1,2 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[28606] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ĄąŁ€„Š§š©Ș«Ź­źŻ°±ČłŽ”¶·žčș»ŒœŸżÀÁÂĂÄĆÆÇÈÉÊËÌÍÎÏĐŃÒÓÔŐÖŚŰÙÚÛÜĘȚßàáâăäćæçèéêëìíîïđńòóôőöśűùúûüęțÿ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); diff --git a/node_modules/codepage/bits/29001.js b/node_modules/codepage/bits/29001.js new file mode 100644 index 000000000..2037d22db --- /dev/null +++ b/node_modules/codepage/bits/29001.js @@ -0,0 +1,2 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[29001] = (function(){ var d = "ΈΉΊΌΎ°◘○◙♂♀♪♬☼▶◀↕‼¶§£Ώ↑↓→←Ë↔▲▼ !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùΑÖÜøαØάΒáíóúñÑβΓγΔδΕεέΖζΗηή│ªÁÂÀΘθ║╗╝ΙΪ┐└º¡¿─΄ãÃ╚╔ιίϊ═ΐΚκΛÊλΜμÍΝν┘┌ΞξΟοόÓßÔΠõÕπΡρÚΣςσΤτΥΫυύϋΰΦφΧχΨ·ψΩωώ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); diff --git a/node_modules/codepage/bits/37.js b/node_modules/codepage/bits/37.js new file mode 100644 index 000000000..96ea16aaf --- /dev/null +++ b/node_modules/codepage/bits/37.js @@ -0,0 +1,2 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[37] = (function(){ var d = "\u0000\u0001\u0002\u0003œ\t†—Ž\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013…\b‡\u0018\u0019’\u001c\u001d\u001e\u001f€‚ƒ„\n\u0017\u001bˆ‰Š‹Œ\u0005\u0006\u0007‘\u0016“”•–\u0004˜™š›\u0014\u0015ž\u001a  âäàáãåçñ¢.<(+|&éêëèíîïìß!$*);¬-/ÂÄÀÁÃÅÇѦ,%_>?øÉÊËÈÍÎÏÌ`:#@'=\"Øabcdefghi«»ðýþ±°jklmnopqrªºæ¸Æ¤µ~stuvwxyz¡¿ÐÝÞ®^£¥·©§¶¼½¾[]¯¨´×{ABCDEFGHI­ôöòóõ}JKLMNOPQR¹ûüùúÿ\\÷STUVWXYZ²ÔÖÒÓÕ0123456789³ÛÜÙڟ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); diff --git a/node_modules/codepage/bits/38598.js b/node_modules/codepage/bits/38598.js new file mode 100644 index 000000000..afaa5e9ff --- /dev/null +++ b/node_modules/codepage/bits/38598.js @@ -0,0 +1,2 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[38598] = (function(){ var d = "\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¢£¤¥¦§¨©×«¬­®‾°±²³´µ¶·¸¹÷»¼½¾‗אבגדהוזחטיךכלםמןנסעףפץצקרשת", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); diff --git a/node_modules/codepage/bits/437.js b/node_modules/codepage/bits/437.js new file mode 100644 index 000000000..aa4e20382 --- /dev/null +++ b/node_modules/codepage/bits/437.js @@ -0,0 +1,2 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[437] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜ¢£¥₧ƒáíóúñѪº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); diff --git a/node_modules/codepage/bits/47451.js b/node_modules/codepage/bits/47451.js new file mode 100644 index 000000000..aa8c0130f --- /dev/null +++ b/node_modules/codepage/bits/47451.js @@ -0,0 +1,2 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[47451] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜ¢£¥ßƒáíóúñѪº¿⌐¬½¼¡«»ãõØøœŒÀÃÕ¨´†¶©®™ijIJאבגדהוזחטיכלמנסעפצקרשתןךםףץ§∧∞αβΓπΣσµτΦΘΩδ∮φ∈∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²³¯", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); diff --git a/node_modules/codepage/bits/500.js b/node_modules/codepage/bits/500.js new file mode 100644 index 000000000..f17f6965c --- /dev/null +++ b/node_modules/codepage/bits/500.js @@ -0,0 +1,2 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[500] = (function(){ var d = "\u0000\u0001\u0002\u0003œ\t†—Ž\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013…\b‡\u0018\u0019’\u001c\u001d\u001e\u001f€‚ƒ„\n\u0017\u001bˆ‰Š‹Œ\u0005\u0006\u0007‘\u0016“”•–\u0004˜™š›\u0014\u0015ž\u001a  âäàáãåçñ[.<(+!&éêëèíîïìß]$*);^-/ÂÄÀÁÃÅÇѦ,%_>?øÉÊËÈÍÎÏÌ`:#@'=\"Øabcdefghi«»ðýþ±°jklmnopqrªºæ¸Æ¤µ~stuvwxyz¡¿ÐÝÞ®¢£¥·©§¶¼½¾¬|¯¨´×{ABCDEFGHI­ôöòóõ}JKLMNOPQR¹ûüùúÿ\\÷STUVWXYZ²ÔÖÒÓÕ0123456789³ÛÜÙڟ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); diff --git a/node_modules/codepage/bits/50220.js b/node_modules/codepage/bits/50220.js new file mode 100644 index 000000000..151318144 --- /dev/null +++ b/node_modules/codepage/bits/50220.js @@ -0,0 +1,395 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[50220] = (function(){ var d = [], e = {}, D = [], j; +D[0] = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u0000\u0000\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€�������������������������������。「」、・ヲァィゥェォャュョッーアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワン゙゚�����������������������������".split(""); +for(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];} +D[1] = "��������������\u0001\u0001������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[1].length; ++j) if(D[1][j].charCodeAt(0) !== 0xFFFD) { e[D[1][j]] = 256 + j; d[256 + j] = D[1][j];} +D[2] = "��������������\u0002\u0002������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[2].length; ++j) if(D[2][j].charCodeAt(0) !== 0xFFFD) { e[D[2][j]] = 512 + j; d[512 + j] = D[2][j];} +D[3] = "��������������\u0003\u0003������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[3].length; ++j) if(D[3][j].charCodeAt(0) !== 0xFFFD) { e[D[3][j]] = 768 + j; d[768 + j] = D[3][j];} +D[4] = "��������������\u0004\u0004������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[4].length; ++j) if(D[4][j].charCodeAt(0) !== 0xFFFD) { e[D[4][j]] = 1024 + j; d[1024 + j] = D[4][j];} +D[5] = "��������������\u0005\u0005������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[5].length; ++j) if(D[5][j].charCodeAt(0) !== 0xFFFD) { e[D[5][j]] = 1280 + j; d[1280 + j] = D[5][j];} +D[6] = "��������������\u0006\u0006������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[6].length; ++j) if(D[6][j].charCodeAt(0) !== 0xFFFD) { e[D[6][j]] = 1536 + j; d[1536 + j] = D[6][j];} +D[7] = "��������������\u0007\u0007������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[7].length; ++j) if(D[7][j].charCodeAt(0) !== 0xFFFD) { e[D[7][j]] = 1792 + j; d[1792 + j] = D[7][j];} +D[8] = "��������������\b\b������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[8].length; ++j) if(D[8][j].charCodeAt(0) !== 0xFFFD) { e[D[8][j]] = 2048 + j; d[2048 + j] = D[8][j];} +D[9] = "��������������\t\t������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[9].length; ++j) if(D[9][j].charCodeAt(0) !== 0xFFFD) { e[D[9][j]] = 2304 + j; d[2304 + j] = D[9][j];} +D[10] = "��������������\n\n������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[10].length; ++j) if(D[10][j].charCodeAt(0) !== 0xFFFD) { e[D[10][j]] = 2560 + j; d[2560 + j] = D[10][j];} +D[11] = "��������������\u000b\u000b������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[11].length; ++j) if(D[11][j].charCodeAt(0) !== 0xFFFD) { e[D[11][j]] = 2816 + j; d[2816 + j] = D[11][j];} +D[12] = "��������������\f\f������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[12].length; ++j) if(D[12][j].charCodeAt(0) !== 0xFFFD) { e[D[12][j]] = 3072 + j; d[3072 + j] = D[12][j];} +D[13] = "��������������\r\r������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[13].length; ++j) if(D[13][j].charCodeAt(0) !== 0xFFFD) { e[D[13][j]] = 3328 + j; d[3328 + j] = D[13][j];} +D[14] = "��������������\r\r�����������������。「」、・ヲァィゥェォャュョッーアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワン゙゚�����������������������������������������������������������������。「」、・ヲァィゥェォャュョッーアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワン゙゚��������������������������������".split(""); +for(j = 0; j != D[14].length; ++j) if(D[14][j].charCodeAt(0) !== 0xFFFD) { e[D[14][j]] = 3584 + j; d[3584 + j] = D[14][j];} +D[15] = "�\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\r\r\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€�������������������������������。「」、・ヲァィゥェォャュョッーアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワン゙゚�����������������������������".split(""); +for(j = 0; j != D[15].length; ++j) if(D[15][j].charCodeAt(0) !== 0xFFFD) { e[D[15][j]] = 3840 + j; d[3840 + j] = D[15][j];} +D[16] = "��������������\u0010\u0010������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[16].length; ++j) if(D[16][j].charCodeAt(0) !== 0xFFFD) { e[D[16][j]] = 4096 + j; d[4096 + j] = D[16][j];} +D[17] = "��������������\u0011\u0011������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[17].length; ++j) if(D[17][j].charCodeAt(0) !== 0xFFFD) { e[D[17][j]] = 4352 + j; d[4352 + j] = D[17][j];} +D[18] = "��������������\u0012\u0012������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[18].length; ++j) if(D[18][j].charCodeAt(0) !== 0xFFFD) { e[D[18][j]] = 4608 + j; d[4608 + j] = D[18][j];} +D[19] = "��������������\u0013\u0013������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[19].length; ++j) if(D[19][j].charCodeAt(0) !== 0xFFFD) { e[D[19][j]] = 4864 + j; d[4864 + j] = D[19][j];} +D[20] = "��������������\u0014\u0014������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[20].length; ++j) if(D[20][j].charCodeAt(0) !== 0xFFFD) { e[D[20][j]] = 5120 + j; d[5120 + j] = D[20][j];} +D[21] = "��������������\u0015\u0015������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[21].length; ++j) if(D[21][j].charCodeAt(0) !== 0xFFFD) { e[D[21][j]] = 5376 + j; d[5376 + j] = D[21][j];} +D[22] = "��������������\u0016\u0016������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[22].length; ++j) if(D[22][j].charCodeAt(0) !== 0xFFFD) { e[D[22][j]] = 5632 + j; d[5632 + j] = D[22][j];} +D[23] = "��������������\u0017\u0017������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[23].length; ++j) if(D[23][j].charCodeAt(0) !== 0xFFFD) { e[D[23][j]] = 5888 + j; d[5888 + j] = D[23][j];} +D[24] = "��������������\u0018\u0018������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[24].length; ++j) if(D[24][j].charCodeAt(0) !== 0xFFFD) { e[D[24][j]] = 6144 + j; d[6144 + j] = D[24][j];} +D[25] = "��������������\u0019\u0019������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[25].length; ++j) if(D[25][j].charCodeAt(0) !== 0xFFFD) { e[D[25][j]] = 6400 + j; d[6400 + j] = D[25][j];} +D[26] = "��������������\u001a\u001a������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[26].length; ++j) if(D[26][j].charCodeAt(0) !== 0xFFFD) { e[D[26][j]] = 6656 + j; d[6656 + j] = D[26][j];} +D[27] = "��������������\u001b\u001b������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[27].length; ++j) if(D[27][j].charCodeAt(0) !== 0xFFFD) { e[D[27][j]] = 6912 + j; d[6912 + j] = D[27][j];} +D[28] = "��������������\u001c\u001c������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[28].length; ++j) if(D[28][j].charCodeAt(0) !== 0xFFFD) { e[D[28][j]] = 7168 + j; d[7168 + j] = D[28][j];} +D[29] = "��������������\u001d\u001d������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[29].length; ++j) if(D[29][j].charCodeAt(0) !== 0xFFFD) { e[D[29][j]] = 7424 + j; d[7424 + j] = D[29][j];} +D[30] = "��������������\u001e\u001e������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[30].length; ++j) if(D[30][j].charCodeAt(0) !== 0xFFFD) { e[D[30][j]] = 7680 + j; d[7680 + j] = D[30][j];} +D[31] = "��������������\u001f\u001f������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[31].length; ++j) if(D[31][j].charCodeAt(0) !== 0xFFFD) { e[D[31][j]] = 7936 + j; d[7936 + j] = D[31][j];} +D[32] = "�������������� ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[32].length; ++j) if(D[32][j].charCodeAt(0) !== 0xFFFD) { e[D[32][j]] = 8192 + j; d[8192 + j] = D[32][j];} +D[33] = "��������������!!������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[33].length; ++j) if(D[33][j].charCodeAt(0) !== 0xFFFD) { e[D[33][j]] = 8448 + j; d[8448 + j] = D[33][j];} +D[34] = "��������������\"\"������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[34].length; ++j) if(D[34][j].charCodeAt(0) !== 0xFFFD) { e[D[34][j]] = 8704 + j; d[8704 + j] = D[34][j];} +D[35] = "��������������##������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[35].length; ++j) if(D[35][j].charCodeAt(0) !== 0xFFFD) { e[D[35][j]] = 8960 + j; d[8960 + j] = D[35][j];} +D[36] = "��������������$$������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[36].length; ++j) if(D[36][j].charCodeAt(0) !== 0xFFFD) { e[D[36][j]] = 9216 + j; d[9216 + j] = D[36][j];} +D[37] = "��������������%%������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[37].length; ++j) if(D[37][j].charCodeAt(0) !== 0xFFFD) { e[D[37][j]] = 9472 + j; d[9472 + j] = D[37][j];} +D[38] = "��������������&&������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[38].length; ++j) if(D[38][j].charCodeAt(0) !== 0xFFFD) { e[D[38][j]] = 9728 + j; d[9728 + j] = D[38][j];} +D[39] = "��������������''������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[39].length; ++j) if(D[39][j].charCodeAt(0) !== 0xFFFD) { e[D[39][j]] = 9984 + j; d[9984 + j] = D[39][j];} +D[40] = "��������������((������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[40].length; ++j) if(D[40][j].charCodeAt(0) !== 0xFFFD) { e[D[40][j]] = 10240 + j; d[10240 + j] = D[40][j];} +D[41] = "��������������))������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[41].length; ++j) if(D[41][j].charCodeAt(0) !== 0xFFFD) { e[D[41][j]] = 10496 + j; d[10496 + j] = D[41][j];} +D[42] = "��������������**������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[42].length; ++j) if(D[42][j].charCodeAt(0) !== 0xFFFD) { e[D[42][j]] = 10752 + j; d[10752 + j] = D[42][j];} +D[43] = "��������������++������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[43].length; ++j) if(D[43][j].charCodeAt(0) !== 0xFFFD) { e[D[43][j]] = 11008 + j; d[11008 + j] = D[43][j];} +D[44] = "��������������,,������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[44].length; ++j) if(D[44][j].charCodeAt(0) !== 0xFFFD) { e[D[44][j]] = 11264 + j; d[11264 + j] = D[44][j];} +D[45] = "��������������--������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[45].length; ++j) if(D[45][j].charCodeAt(0) !== 0xFFFD) { e[D[45][j]] = 11520 + j; d[11520 + j] = D[45][j];} +D[46] = "��������������..������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[46].length; ++j) if(D[46][j].charCodeAt(0) !== 0xFFFD) { e[D[46][j]] = 11776 + j; d[11776 + j] = D[46][j];} +D[47] = "��������������//������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[47].length; ++j) if(D[47][j].charCodeAt(0) !== 0xFFFD) { e[D[47][j]] = 12032 + j; d[12032 + j] = D[47][j];} +D[48] = "��������������00������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[48].length; ++j) if(D[48][j].charCodeAt(0) !== 0xFFFD) { e[D[48][j]] = 12288 + j; d[12288 + j] = D[48][j];} +D[49] = "��������������11������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[49].length; ++j) if(D[49][j].charCodeAt(0) !== 0xFFFD) { e[D[49][j]] = 12544 + j; d[12544 + j] = D[49][j];} +D[50] = "��������������22������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[50].length; ++j) if(D[50][j].charCodeAt(0) !== 0xFFFD) { e[D[50][j]] = 12800 + j; d[12800 + j] = D[50][j];} +D[51] = "��������������33������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[51].length; ++j) if(D[51][j].charCodeAt(0) !== 0xFFFD) { e[D[51][j]] = 13056 + j; d[13056 + j] = D[51][j];} +D[52] = "��������������44������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[52].length; ++j) if(D[52][j].charCodeAt(0) !== 0xFFFD) { e[D[52][j]] = 13312 + j; d[13312 + j] = D[52][j];} +D[53] = "��������������55������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[53].length; ++j) if(D[53][j].charCodeAt(0) !== 0xFFFD) { e[D[53][j]] = 13568 + j; d[13568 + j] = D[53][j];} +D[54] = "��������������66������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[54].length; ++j) if(D[54][j].charCodeAt(0) !== 0xFFFD) { e[D[54][j]] = 13824 + j; d[13824 + j] = D[54][j];} +D[55] = "��������������77������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[55].length; ++j) if(D[55][j].charCodeAt(0) !== 0xFFFD) { e[D[55][j]] = 14080 + j; d[14080 + j] = D[55][j];} +D[56] = "��������������88������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[56].length; ++j) if(D[56][j].charCodeAt(0) !== 0xFFFD) { e[D[56][j]] = 14336 + j; d[14336 + j] = D[56][j];} +D[57] = "��������������99������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[57].length; ++j) if(D[57][j].charCodeAt(0) !== 0xFFFD) { e[D[57][j]] = 14592 + j; d[14592 + j] = D[57][j];} +D[58] = "��������������::������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[58].length; ++j) if(D[58][j].charCodeAt(0) !== 0xFFFD) { e[D[58][j]] = 14848 + j; d[14848 + j] = D[58][j];} +D[59] = "��������������;;������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[59].length; ++j) if(D[59][j].charCodeAt(0) !== 0xFFFD) { e[D[59][j]] = 15104 + j; d[15104 + j] = D[59][j];} +D[60] = "��������������<<������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[60].length; ++j) if(D[60][j].charCodeAt(0) !== 0xFFFD) { e[D[60][j]] = 15360 + j; d[15360 + j] = D[60][j];} +D[61] = "��������������==������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[61].length; ++j) if(D[61][j].charCodeAt(0) !== 0xFFFD) { e[D[61][j]] = 15616 + j; d[15616 + j] = D[61][j];} +D[62] = "��������������>>������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[62].length; ++j) if(D[62][j].charCodeAt(0) !== 0xFFFD) { e[D[62][j]] = 15872 + j; d[15872 + j] = D[62][j];} +D[63] = "��������������??������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[63].length; ++j) if(D[63][j].charCodeAt(0) !== 0xFFFD) { e[D[63][j]] = 16128 + j; d[16128 + j] = D[63][j];} +D[64] = "��������������@@������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[64].length; ++j) if(D[64][j].charCodeAt(0) !== 0xFFFD) { e[D[64][j]] = 16384 + j; d[16384 + j] = D[64][j];} +D[65] = "��������������AA������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[65].length; ++j) if(D[65][j].charCodeAt(0) !== 0xFFFD) { e[D[65][j]] = 16640 + j; d[16640 + j] = D[65][j];} +D[66] = "��������������BB������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[66].length; ++j) if(D[66][j].charCodeAt(0) !== 0xFFFD) { e[D[66][j]] = 16896 + j; d[16896 + j] = D[66][j];} +D[67] = "��������������CC������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[67].length; ++j) if(D[67][j].charCodeAt(0) !== 0xFFFD) { e[D[67][j]] = 17152 + j; d[17152 + j] = D[67][j];} +D[68] = "��������������DD������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[68].length; ++j) if(D[68][j].charCodeAt(0) !== 0xFFFD) { e[D[68][j]] = 17408 + j; d[17408 + j] = D[68][j];} +D[69] = "��������������EE������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[69].length; ++j) if(D[69][j].charCodeAt(0) !== 0xFFFD) { e[D[69][j]] = 17664 + j; d[17664 + j] = D[69][j];} +D[70] = "��������������FF������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[70].length; ++j) if(D[70][j].charCodeAt(0) !== 0xFFFD) { e[D[70][j]] = 17920 + j; d[17920 + j] = D[70][j];} +D[71] = "��������������GG������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[71].length; ++j) if(D[71][j].charCodeAt(0) !== 0xFFFD) { e[D[71][j]] = 18176 + j; d[18176 + j] = D[71][j];} +D[72] = "��������������HH������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[72].length; ++j) if(D[72][j].charCodeAt(0) !== 0xFFFD) { e[D[72][j]] = 18432 + j; d[18432 + j] = D[72][j];} +D[73] = "��������������II������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[73].length; ++j) if(D[73][j].charCodeAt(0) !== 0xFFFD) { e[D[73][j]] = 18688 + j; d[18688 + j] = D[73][j];} +D[74] = "��������������JJ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[74].length; ++j) if(D[74][j].charCodeAt(0) !== 0xFFFD) { e[D[74][j]] = 18944 + j; d[18944 + j] = D[74][j];} +D[75] = "��������������KK������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[75].length; ++j) if(D[75][j].charCodeAt(0) !== 0xFFFD) { e[D[75][j]] = 19200 + j; d[19200 + j] = D[75][j];} +D[76] = "��������������LL������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[76].length; ++j) if(D[76][j].charCodeAt(0) !== 0xFFFD) { e[D[76][j]] = 19456 + j; d[19456 + j] = D[76][j];} +D[77] = "��������������MM������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[77].length; ++j) if(D[77][j].charCodeAt(0) !== 0xFFFD) { e[D[77][j]] = 19712 + j; d[19712 + j] = D[77][j];} +D[78] = "��������������NN������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[78].length; ++j) if(D[78][j].charCodeAt(0) !== 0xFFFD) { e[D[78][j]] = 19968 + j; d[19968 + j] = D[78][j];} +D[79] = "��������������OO������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[79].length; ++j) if(D[79][j].charCodeAt(0) !== 0xFFFD) { e[D[79][j]] = 20224 + j; d[20224 + j] = D[79][j];} +D[80] = "��������������PP������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[80].length; ++j) if(D[80][j].charCodeAt(0) !== 0xFFFD) { e[D[80][j]] = 20480 + j; d[20480 + j] = D[80][j];} +D[81] = "��������������QQ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[81].length; ++j) if(D[81][j].charCodeAt(0) !== 0xFFFD) { e[D[81][j]] = 20736 + j; d[20736 + j] = D[81][j];} +D[82] = "��������������RR������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[82].length; ++j) if(D[82][j].charCodeAt(0) !== 0xFFFD) { e[D[82][j]] = 20992 + j; d[20992 + j] = D[82][j];} +D[83] = "��������������SS������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[83].length; ++j) if(D[83][j].charCodeAt(0) !== 0xFFFD) { e[D[83][j]] = 21248 + j; d[21248 + j] = D[83][j];} +D[84] = "��������������TT������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[84].length; ++j) if(D[84][j].charCodeAt(0) !== 0xFFFD) { e[D[84][j]] = 21504 + j; d[21504 + j] = D[84][j];} +D[85] = "��������������UU������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[85].length; ++j) if(D[85][j].charCodeAt(0) !== 0xFFFD) { e[D[85][j]] = 21760 + j; d[21760 + j] = D[85][j];} +D[86] = "��������������VV������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[86].length; ++j) if(D[86][j].charCodeAt(0) !== 0xFFFD) { e[D[86][j]] = 22016 + j; d[22016 + j] = D[86][j];} +D[87] = "��������������WW������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[87].length; ++j) if(D[87][j].charCodeAt(0) !== 0xFFFD) { e[D[87][j]] = 22272 + j; d[22272 + j] = D[87][j];} +D[88] = "��������������XX������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[88].length; ++j) if(D[88][j].charCodeAt(0) !== 0xFFFD) { e[D[88][j]] = 22528 + j; d[22528 + j] = D[88][j];} +D[89] = "��������������YY������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[89].length; ++j) if(D[89][j].charCodeAt(0) !== 0xFFFD) { e[D[89][j]] = 22784 + j; d[22784 + j] = D[89][j];} +D[90] = "��������������ZZ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[90].length; ++j) if(D[90][j].charCodeAt(0) !== 0xFFFD) { e[D[90][j]] = 23040 + j; d[23040 + j] = D[90][j];} +D[91] = "��������������[[������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[91].length; ++j) if(D[91][j].charCodeAt(0) !== 0xFFFD) { e[D[91][j]] = 23296 + j; d[23296 + j] = D[91][j];} +D[92] = "��������������\\\\������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[92].length; ++j) if(D[92][j].charCodeAt(0) !== 0xFFFD) { e[D[92][j]] = 23552 + j; d[23552 + j] = D[92][j];} +D[93] = "��������������]]������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[93].length; ++j) if(D[93][j].charCodeAt(0) !== 0xFFFD) { e[D[93][j]] = 23808 + j; d[23808 + j] = D[93][j];} +D[94] = "��������������^^������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[94].length; ++j) if(D[94][j].charCodeAt(0) !== 0xFFFD) { e[D[94][j]] = 24064 + j; d[24064 + j] = D[94][j];} +D[95] = "��������������__������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[95].length; ++j) if(D[95][j].charCodeAt(0) !== 0xFFFD) { e[D[95][j]] = 24320 + j; d[24320 + j] = D[95][j];} +D[96] = "��������������``������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[96].length; ++j) if(D[96][j].charCodeAt(0) !== 0xFFFD) { e[D[96][j]] = 24576 + j; d[24576 + j] = D[96][j];} +D[97] = "��������������aa������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[97].length; ++j) if(D[97][j].charCodeAt(0) !== 0xFFFD) { e[D[97][j]] = 24832 + j; d[24832 + j] = D[97][j];} +D[98] = "��������������bb������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[98].length; ++j) if(D[98][j].charCodeAt(0) !== 0xFFFD) { e[D[98][j]] = 25088 + j; d[25088 + j] = D[98][j];} +D[99] = "��������������cc������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[99].length; ++j) if(D[99][j].charCodeAt(0) !== 0xFFFD) { e[D[99][j]] = 25344 + j; d[25344 + j] = D[99][j];} +D[100] = "��������������dd������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[100].length; ++j) if(D[100][j].charCodeAt(0) !== 0xFFFD) { e[D[100][j]] = 25600 + j; d[25600 + j] = D[100][j];} +D[101] = "��������������ee������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[101].length; ++j) if(D[101][j].charCodeAt(0) !== 0xFFFD) { e[D[101][j]] = 25856 + j; d[25856 + j] = D[101][j];} +D[102] = "��������������ff������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[102].length; ++j) if(D[102][j].charCodeAt(0) !== 0xFFFD) { e[D[102][j]] = 26112 + j; d[26112 + j] = D[102][j];} +D[103] = "��������������gg������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[103].length; ++j) if(D[103][j].charCodeAt(0) !== 0xFFFD) { e[D[103][j]] = 26368 + j; d[26368 + j] = D[103][j];} +D[104] = "��������������hh������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[104].length; ++j) if(D[104][j].charCodeAt(0) !== 0xFFFD) { e[D[104][j]] = 26624 + j; d[26624 + j] = D[104][j];} +D[105] = "��������������ii������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[105].length; ++j) if(D[105][j].charCodeAt(0) !== 0xFFFD) { e[D[105][j]] = 26880 + j; d[26880 + j] = D[105][j];} +D[106] = "��������������jj������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[106].length; ++j) if(D[106][j].charCodeAt(0) !== 0xFFFD) { e[D[106][j]] = 27136 + j; d[27136 + j] = D[106][j];} +D[107] = "��������������kk������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[107].length; ++j) if(D[107][j].charCodeAt(0) !== 0xFFFD) { e[D[107][j]] = 27392 + j; d[27392 + j] = D[107][j];} +D[108] = "��������������ll������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[108].length; ++j) if(D[108][j].charCodeAt(0) !== 0xFFFD) { e[D[108][j]] = 27648 + j; d[27648 + j] = D[108][j];} +D[109] = "��������������mm������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[109].length; ++j) if(D[109][j].charCodeAt(0) !== 0xFFFD) { e[D[109][j]] = 27904 + j; d[27904 + j] = D[109][j];} +D[110] = "��������������nn������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[110].length; ++j) if(D[110][j].charCodeAt(0) !== 0xFFFD) { e[D[110][j]] = 28160 + j; d[28160 + j] = D[110][j];} +D[111] = "��������������oo������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[111].length; ++j) if(D[111][j].charCodeAt(0) !== 0xFFFD) { e[D[111][j]] = 28416 + j; d[28416 + j] = D[111][j];} +D[112] = "��������������pp������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[112].length; ++j) if(D[112][j].charCodeAt(0) !== 0xFFFD) { e[D[112][j]] = 28672 + j; d[28672 + j] = D[112][j];} +D[113] = "��������������qq������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[113].length; ++j) if(D[113][j].charCodeAt(0) !== 0xFFFD) { e[D[113][j]] = 28928 + j; d[28928 + j] = D[113][j];} +D[114] = "��������������rr������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[114].length; ++j) if(D[114][j].charCodeAt(0) !== 0xFFFD) { e[D[114][j]] = 29184 + j; d[29184 + j] = D[114][j];} +D[115] = "��������������ss������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[115].length; ++j) if(D[115][j].charCodeAt(0) !== 0xFFFD) { e[D[115][j]] = 29440 + j; d[29440 + j] = D[115][j];} +D[116] = "��������������tt������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[116].length; ++j) if(D[116][j].charCodeAt(0) !== 0xFFFD) { e[D[116][j]] = 29696 + j; d[29696 + j] = D[116][j];} +D[117] = "��������������uu������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[117].length; ++j) if(D[117][j].charCodeAt(0) !== 0xFFFD) { e[D[117][j]] = 29952 + j; d[29952 + j] = D[117][j];} +D[118] = "��������������vv������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[118].length; ++j) if(D[118][j].charCodeAt(0) !== 0xFFFD) { e[D[118][j]] = 30208 + j; d[30208 + j] = D[118][j];} +D[119] = "��������������ww������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[119].length; ++j) if(D[119][j].charCodeAt(0) !== 0xFFFD) { e[D[119][j]] = 30464 + j; d[30464 + j] = D[119][j];} +D[120] = "��������������xx������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[120].length; ++j) if(D[120][j].charCodeAt(0) !== 0xFFFD) { e[D[120][j]] = 30720 + j; d[30720 + j] = D[120][j];} +D[121] = "��������������yy������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[121].length; ++j) if(D[121][j].charCodeAt(0) !== 0xFFFD) { e[D[121][j]] = 30976 + j; d[30976 + j] = D[121][j];} +D[122] = "��������������zz������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[122].length; ++j) if(D[122][j].charCodeAt(0) !== 0xFFFD) { e[D[122][j]] = 31232 + j; d[31232 + j] = D[122][j];} +D[123] = "��������������{{������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[123].length; ++j) if(D[123][j].charCodeAt(0) !== 0xFFFD) { e[D[123][j]] = 31488 + j; d[31488 + j] = D[123][j];} +D[124] = "��������������||������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[124].length; ++j) if(D[124][j].charCodeAt(0) !== 0xFFFD) { e[D[124][j]] = 31744 + j; d[31744 + j] = D[124][j];} +D[125] = "��������������}}������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[125].length; ++j) if(D[125][j].charCodeAt(0) !== 0xFFFD) { e[D[125][j]] = 32000 + j; d[32000 + j] = D[125][j];} +D[126] = "��������������~~������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[126].length; ++j) if(D[126][j].charCodeAt(0) !== 0xFFFD) { e[D[126][j]] = 32256 + j; d[32256 + j] = D[126][j];} +D[127] = "��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[127].length; ++j) if(D[127][j].charCodeAt(0) !== 0xFFFD) { e[D[127][j]] = 32512 + j; d[32512 + j] = D[127][j];} +D[128] = "��������������€€������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[128].length; ++j) if(D[128][j].charCodeAt(0) !== 0xFFFD) { e[D[128][j]] = 32768 + j; d[32768 + j] = D[128][j];} +D[160] = "��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[160].length; ++j) if(D[160][j].charCodeAt(0) !== 0xFFFD) { e[D[160][j]] = 40960 + j; d[40960 + j] = D[160][j];} +D[161] = "��������������。。������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];} +D[162] = "��������������「「������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[162].length; ++j) if(D[162][j].charCodeAt(0) !== 0xFFFD) { e[D[162][j]] = 41472 + j; d[41472 + j] = D[162][j];} +D[163] = "��������������」」������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[163].length; ++j) if(D[163][j].charCodeAt(0) !== 0xFFFD) { e[D[163][j]] = 41728 + j; d[41728 + j] = D[163][j];} +D[164] = "��������������、、������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[164].length; ++j) if(D[164][j].charCodeAt(0) !== 0xFFFD) { e[D[164][j]] = 41984 + j; d[41984 + j] = D[164][j];} +D[165] = "��������������・・������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[165].length; ++j) if(D[165][j].charCodeAt(0) !== 0xFFFD) { e[D[165][j]] = 42240 + j; d[42240 + j] = D[165][j];} +D[166] = "��������������ヲヲ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];} +D[167] = "��������������ァァ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];} +D[168] = "��������������ィィ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[168].length; ++j) if(D[168][j].charCodeAt(0) !== 0xFFFD) { e[D[168][j]] = 43008 + j; d[43008 + j] = D[168][j];} +D[169] = "��������������ゥゥ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[169].length; ++j) if(D[169][j].charCodeAt(0) !== 0xFFFD) { e[D[169][j]] = 43264 + j; d[43264 + j] = D[169][j];} +D[170] = "��������������ェェ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];} +D[171] = "��������������ォォ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[171].length; ++j) if(D[171][j].charCodeAt(0) !== 0xFFFD) { e[D[171][j]] = 43776 + j; d[43776 + j] = D[171][j];} +D[172] = "��������������ャャ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[172].length; ++j) if(D[172][j].charCodeAt(0) !== 0xFFFD) { e[D[172][j]] = 44032 + j; d[44032 + j] = D[172][j];} +D[173] = "��������������ュュ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[173].length; ++j) if(D[173][j].charCodeAt(0) !== 0xFFFD) { e[D[173][j]] = 44288 + j; d[44288 + j] = D[173][j];} +D[174] = "��������������ョョ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[174].length; ++j) if(D[174][j].charCodeAt(0) !== 0xFFFD) { e[D[174][j]] = 44544 + j; d[44544 + j] = D[174][j];} +D[175] = "��������������ッッ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[175].length; ++j) if(D[175][j].charCodeAt(0) !== 0xFFFD) { e[D[175][j]] = 44800 + j; d[44800 + j] = D[175][j];} +D[176] = "��������������ーー������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[176].length; ++j) if(D[176][j].charCodeAt(0) !== 0xFFFD) { e[D[176][j]] = 45056 + j; d[45056 + j] = D[176][j];} +D[177] = "��������������アア������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[177].length; ++j) if(D[177][j].charCodeAt(0) !== 0xFFFD) { e[D[177][j]] = 45312 + j; d[45312 + j] = D[177][j];} +D[178] = "��������������イイ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[178].length; ++j) if(D[178][j].charCodeAt(0) !== 0xFFFD) { e[D[178][j]] = 45568 + j; d[45568 + j] = D[178][j];} +D[179] = "��������������ウウ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[179].length; ++j) if(D[179][j].charCodeAt(0) !== 0xFFFD) { e[D[179][j]] = 45824 + j; d[45824 + j] = D[179][j];} +D[180] = "��������������エエ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];} +D[181] = "��������������オオ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];} +D[182] = "��������������カカ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[182].length; ++j) if(D[182][j].charCodeAt(0) !== 0xFFFD) { e[D[182][j]] = 46592 + j; d[46592 + j] = D[182][j];} +D[183] = "��������������キキ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[183].length; ++j) if(D[183][j].charCodeAt(0) !== 0xFFFD) { e[D[183][j]] = 46848 + j; d[46848 + j] = D[183][j];} +D[184] = "��������������クク������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[184].length; ++j) if(D[184][j].charCodeAt(0) !== 0xFFFD) { e[D[184][j]] = 47104 + j; d[47104 + j] = D[184][j];} +D[185] = "��������������ケケ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[185].length; ++j) if(D[185][j].charCodeAt(0) !== 0xFFFD) { e[D[185][j]] = 47360 + j; d[47360 + j] = D[185][j];} +D[186] = "��������������ココ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];} +D[187] = "��������������ササ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[187].length; ++j) if(D[187][j].charCodeAt(0) !== 0xFFFD) { e[D[187][j]] = 47872 + j; d[47872 + j] = D[187][j];} +D[188] = "��������������シシ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[188].length; ++j) if(D[188][j].charCodeAt(0) !== 0xFFFD) { e[D[188][j]] = 48128 + j; d[48128 + j] = D[188][j];} +D[189] = "��������������スス������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[189].length; ++j) if(D[189][j].charCodeAt(0) !== 0xFFFD) { e[D[189][j]] = 48384 + j; d[48384 + j] = D[189][j];} +D[190] = "��������������セセ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[190].length; ++j) if(D[190][j].charCodeAt(0) !== 0xFFFD) { e[D[190][j]] = 48640 + j; d[48640 + j] = D[190][j];} +D[191] = "��������������ソソ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];} +D[192] = "��������������タタ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];} +D[193] = "��������������チチ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[193].length; ++j) if(D[193][j].charCodeAt(0) !== 0xFFFD) { e[D[193][j]] = 49408 + j; d[49408 + j] = D[193][j];} +D[194] = "��������������ツツ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[194].length; ++j) if(D[194][j].charCodeAt(0) !== 0xFFFD) { e[D[194][j]] = 49664 + j; d[49664 + j] = D[194][j];} +D[195] = "��������������テテ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[195].length; ++j) if(D[195][j].charCodeAt(0) !== 0xFFFD) { e[D[195][j]] = 49920 + j; d[49920 + j] = D[195][j];} +D[196] = "��������������トト������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[196].length; ++j) if(D[196][j].charCodeAt(0) !== 0xFFFD) { e[D[196][j]] = 50176 + j; d[50176 + j] = D[196][j];} +D[197] = "��������������ナナ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[197].length; ++j) if(D[197][j].charCodeAt(0) !== 0xFFFD) { e[D[197][j]] = 50432 + j; d[50432 + j] = D[197][j];} +D[198] = "��������������ニニ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[198].length; ++j) if(D[198][j].charCodeAt(0) !== 0xFFFD) { e[D[198][j]] = 50688 + j; d[50688 + j] = D[198][j];} +D[199] = "��������������ヌヌ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[199].length; ++j) if(D[199][j].charCodeAt(0) !== 0xFFFD) { e[D[199][j]] = 50944 + j; d[50944 + j] = D[199][j];} +D[200] = "��������������ネネ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[200].length; ++j) if(D[200][j].charCodeAt(0) !== 0xFFFD) { e[D[200][j]] = 51200 + j; d[51200 + j] = D[200][j];} +D[201] = "��������������ノノ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[201].length; ++j) if(D[201][j].charCodeAt(0) !== 0xFFFD) { e[D[201][j]] = 51456 + j; d[51456 + j] = D[201][j];} +D[202] = "��������������ハハ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[202].length; ++j) if(D[202][j].charCodeAt(0) !== 0xFFFD) { e[D[202][j]] = 51712 + j; d[51712 + j] = D[202][j];} +D[203] = "��������������ヒヒ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[203].length; ++j) if(D[203][j].charCodeAt(0) !== 0xFFFD) { e[D[203][j]] = 51968 + j; d[51968 + j] = D[203][j];} +D[204] = "��������������フフ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[204].length; ++j) if(D[204][j].charCodeAt(0) !== 0xFFFD) { e[D[204][j]] = 52224 + j; d[52224 + j] = D[204][j];} +D[205] = "��������������ヘヘ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[205].length; ++j) if(D[205][j].charCodeAt(0) !== 0xFFFD) { e[D[205][j]] = 52480 + j; d[52480 + j] = D[205][j];} +D[206] = "��������������ホホ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[206].length; ++j) if(D[206][j].charCodeAt(0) !== 0xFFFD) { e[D[206][j]] = 52736 + j; d[52736 + j] = D[206][j];} +D[207] = "��������������ママ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[207].length; ++j) if(D[207][j].charCodeAt(0) !== 0xFFFD) { e[D[207][j]] = 52992 + j; d[52992 + j] = D[207][j];} +D[208] = "��������������ミミ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[208].length; ++j) if(D[208][j].charCodeAt(0) !== 0xFFFD) { e[D[208][j]] = 53248 + j; d[53248 + j] = D[208][j];} +D[209] = "��������������ムム������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[209].length; ++j) if(D[209][j].charCodeAt(0) !== 0xFFFD) { e[D[209][j]] = 53504 + j; d[53504 + j] = D[209][j];} +D[210] = "��������������メメ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[210].length; ++j) if(D[210][j].charCodeAt(0) !== 0xFFFD) { e[D[210][j]] = 53760 + j; d[53760 + j] = D[210][j];} +D[211] = "��������������モモ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[211].length; ++j) if(D[211][j].charCodeAt(0) !== 0xFFFD) { e[D[211][j]] = 54016 + j; d[54016 + j] = D[211][j];} +D[212] = "��������������ヤヤ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[212].length; ++j) if(D[212][j].charCodeAt(0) !== 0xFFFD) { e[D[212][j]] = 54272 + j; d[54272 + j] = D[212][j];} +D[213] = "��������������ユユ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[213].length; ++j) if(D[213][j].charCodeAt(0) !== 0xFFFD) { e[D[213][j]] = 54528 + j; d[54528 + j] = D[213][j];} +D[214] = "��������������ヨヨ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[214].length; ++j) if(D[214][j].charCodeAt(0) !== 0xFFFD) { e[D[214][j]] = 54784 + j; d[54784 + j] = D[214][j];} +D[215] = "��������������ララ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[215].length; ++j) if(D[215][j].charCodeAt(0) !== 0xFFFD) { e[D[215][j]] = 55040 + j; d[55040 + j] = D[215][j];} +D[216] = "��������������リリ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[216].length; ++j) if(D[216][j].charCodeAt(0) !== 0xFFFD) { e[D[216][j]] = 55296 + j; d[55296 + j] = D[216][j];} +D[217] = "��������������ルル������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[217].length; ++j) if(D[217][j].charCodeAt(0) !== 0xFFFD) { e[D[217][j]] = 55552 + j; d[55552 + j] = D[217][j];} +D[218] = "��������������レレ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[218].length; ++j) if(D[218][j].charCodeAt(0) !== 0xFFFD) { e[D[218][j]] = 55808 + j; d[55808 + j] = D[218][j];} +D[219] = "��������������ロロ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];} +D[220] = "��������������ワワ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];} +D[221] = "��������������ンン������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[221].length; ++j) if(D[221][j].charCodeAt(0) !== 0xFFFD) { e[D[221][j]] = 56576 + j; d[56576 + j] = D[221][j];} +D[222] = "��������������゙゙������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[222].length; ++j) if(D[222][j].charCodeAt(0) !== 0xFFFD) { e[D[222][j]] = 56832 + j; d[56832 + j] = D[222][j];} +D[223] = "��������������゚゚������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];} +D[253] = "��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[253].length; ++j) if(D[253][j].charCodeAt(0) !== 0xFFFD) { e[D[253][j]] = 64768 + j; d[64768 + j] = D[253][j];} +D[254] = "��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[254].length; ++j) if(D[254][j].charCodeAt(0) !== 0xFFFD) { e[D[254][j]] = 65024 + j; d[65024 + j] = D[254][j];} +D[255] = "��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[255].length; ++j) if(D[255][j].charCodeAt(0) !== 0xFFFD) { e[D[255][j]] = 65280 + j; d[65280 + j] = D[255][j];} +return {"enc": e, "dec": d }; })(); diff --git a/node_modules/codepage/bits/50221.js b/node_modules/codepage/bits/50221.js new file mode 100644 index 000000000..90fd87230 --- /dev/null +++ b/node_modules/codepage/bits/50221.js @@ -0,0 +1,395 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[50221] = (function(){ var d = [], e = {}, D = [], j; +D[0] = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u0000\u0000\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€�������������������������������。「」、・ヲァィゥェォャュョッーアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワン゙゚�����������������������������".split(""); +for(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];} +D[1] = "��������������\u0001\u0001������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[1].length; ++j) if(D[1][j].charCodeAt(0) !== 0xFFFD) { e[D[1][j]] = 256 + j; d[256 + j] = D[1][j];} +D[2] = "��������������\u0002\u0002������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[2].length; ++j) if(D[2][j].charCodeAt(0) !== 0xFFFD) { e[D[2][j]] = 512 + j; d[512 + j] = D[2][j];} +D[3] = "��������������\u0003\u0003������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[3].length; ++j) if(D[3][j].charCodeAt(0) !== 0xFFFD) { e[D[3][j]] = 768 + j; d[768 + j] = D[3][j];} +D[4] = "��������������\u0004\u0004������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[4].length; ++j) if(D[4][j].charCodeAt(0) !== 0xFFFD) { e[D[4][j]] = 1024 + j; d[1024 + j] = D[4][j];} +D[5] = "��������������\u0005\u0005������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[5].length; ++j) if(D[5][j].charCodeAt(0) !== 0xFFFD) { e[D[5][j]] = 1280 + j; d[1280 + j] = D[5][j];} +D[6] = "��������������\u0006\u0006������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[6].length; ++j) if(D[6][j].charCodeAt(0) !== 0xFFFD) { e[D[6][j]] = 1536 + j; d[1536 + j] = D[6][j];} +D[7] = "��������������\u0007\u0007������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[7].length; ++j) if(D[7][j].charCodeAt(0) !== 0xFFFD) { e[D[7][j]] = 1792 + j; d[1792 + j] = D[7][j];} +D[8] = "��������������\b\b������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[8].length; ++j) if(D[8][j].charCodeAt(0) !== 0xFFFD) { e[D[8][j]] = 2048 + j; d[2048 + j] = D[8][j];} +D[9] = "��������������\t\t������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[9].length; ++j) if(D[9][j].charCodeAt(0) !== 0xFFFD) { e[D[9][j]] = 2304 + j; d[2304 + j] = D[9][j];} +D[10] = "��������������\n\n������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[10].length; ++j) if(D[10][j].charCodeAt(0) !== 0xFFFD) { e[D[10][j]] = 2560 + j; d[2560 + j] = D[10][j];} +D[11] = "��������������\u000b\u000b������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[11].length; ++j) if(D[11][j].charCodeAt(0) !== 0xFFFD) { e[D[11][j]] = 2816 + j; d[2816 + j] = D[11][j];} +D[12] = "��������������\f\f������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[12].length; ++j) if(D[12][j].charCodeAt(0) !== 0xFFFD) { e[D[12][j]] = 3072 + j; d[3072 + j] = D[12][j];} +D[13] = "��������������\r\r������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[13].length; ++j) if(D[13][j].charCodeAt(0) !== 0xFFFD) { e[D[13][j]] = 3328 + j; d[3328 + j] = D[13][j];} +D[14] = "��������������\r\r�����������������。「」、・ヲァィゥェォャュョッーアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワン゙゚�����������������������������������������������������������������。「」、・ヲァィゥェォャュョッーアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワン゙゚��������������������������������".split(""); +for(j = 0; j != D[14].length; ++j) if(D[14][j].charCodeAt(0) !== 0xFFFD) { e[D[14][j]] = 3584 + j; d[3584 + j] = D[14][j];} +D[15] = "�\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\r\r\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€�������������������������������。「」、・ヲァィゥェォャュョッーアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワン゙゚�����������������������������".split(""); +for(j = 0; j != D[15].length; ++j) if(D[15][j].charCodeAt(0) !== 0xFFFD) { e[D[15][j]] = 3840 + j; d[3840 + j] = D[15][j];} +D[16] = "��������������\u0010\u0010������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[16].length; ++j) if(D[16][j].charCodeAt(0) !== 0xFFFD) { e[D[16][j]] = 4096 + j; d[4096 + j] = D[16][j];} +D[17] = "��������������\u0011\u0011������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[17].length; ++j) if(D[17][j].charCodeAt(0) !== 0xFFFD) { e[D[17][j]] = 4352 + j; d[4352 + j] = D[17][j];} +D[18] = "��������������\u0012\u0012������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[18].length; ++j) if(D[18][j].charCodeAt(0) !== 0xFFFD) { e[D[18][j]] = 4608 + j; d[4608 + j] = D[18][j];} +D[19] = "��������������\u0013\u0013������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[19].length; ++j) if(D[19][j].charCodeAt(0) !== 0xFFFD) { e[D[19][j]] = 4864 + j; d[4864 + j] = D[19][j];} +D[20] = "��������������\u0014\u0014������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[20].length; ++j) if(D[20][j].charCodeAt(0) !== 0xFFFD) { e[D[20][j]] = 5120 + j; d[5120 + j] = D[20][j];} +D[21] = "��������������\u0015\u0015������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[21].length; ++j) if(D[21][j].charCodeAt(0) !== 0xFFFD) { e[D[21][j]] = 5376 + j; d[5376 + j] = D[21][j];} +D[22] = "��������������\u0016\u0016������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[22].length; ++j) if(D[22][j].charCodeAt(0) !== 0xFFFD) { e[D[22][j]] = 5632 + j; d[5632 + j] = D[22][j];} +D[23] = "��������������\u0017\u0017������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[23].length; ++j) if(D[23][j].charCodeAt(0) !== 0xFFFD) { e[D[23][j]] = 5888 + j; d[5888 + j] = D[23][j];} +D[24] = "��������������\u0018\u0018������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[24].length; ++j) if(D[24][j].charCodeAt(0) !== 0xFFFD) { e[D[24][j]] = 6144 + j; d[6144 + j] = D[24][j];} +D[25] = "��������������\u0019\u0019������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[25].length; ++j) if(D[25][j].charCodeAt(0) !== 0xFFFD) { e[D[25][j]] = 6400 + j; d[6400 + j] = D[25][j];} +D[26] = "��������������\u001a\u001a������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[26].length; ++j) if(D[26][j].charCodeAt(0) !== 0xFFFD) { e[D[26][j]] = 6656 + j; d[6656 + j] = D[26][j];} +D[27] = "��������������\u001b\u001b������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[27].length; ++j) if(D[27][j].charCodeAt(0) !== 0xFFFD) { e[D[27][j]] = 6912 + j; d[6912 + j] = D[27][j];} +D[28] = "��������������\u001c\u001c������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[28].length; ++j) if(D[28][j].charCodeAt(0) !== 0xFFFD) { e[D[28][j]] = 7168 + j; d[7168 + j] = D[28][j];} +D[29] = "��������������\u001d\u001d������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[29].length; ++j) if(D[29][j].charCodeAt(0) !== 0xFFFD) { e[D[29][j]] = 7424 + j; d[7424 + j] = D[29][j];} +D[30] = "��������������\u001e\u001e������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[30].length; ++j) if(D[30][j].charCodeAt(0) !== 0xFFFD) { e[D[30][j]] = 7680 + j; d[7680 + j] = D[30][j];} +D[31] = "��������������\u001f\u001f������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[31].length; ++j) if(D[31][j].charCodeAt(0) !== 0xFFFD) { e[D[31][j]] = 7936 + j; d[7936 + j] = D[31][j];} +D[32] = "�������������� ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[32].length; ++j) if(D[32][j].charCodeAt(0) !== 0xFFFD) { e[D[32][j]] = 8192 + j; d[8192 + j] = D[32][j];} +D[33] = "��������������!!������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[33].length; ++j) if(D[33][j].charCodeAt(0) !== 0xFFFD) { e[D[33][j]] = 8448 + j; d[8448 + j] = D[33][j];} +D[34] = "��������������\"\"������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[34].length; ++j) if(D[34][j].charCodeAt(0) !== 0xFFFD) { e[D[34][j]] = 8704 + j; d[8704 + j] = D[34][j];} +D[35] = "��������������##������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[35].length; ++j) if(D[35][j].charCodeAt(0) !== 0xFFFD) { e[D[35][j]] = 8960 + j; d[8960 + j] = D[35][j];} +D[36] = "��������������$$������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[36].length; ++j) if(D[36][j].charCodeAt(0) !== 0xFFFD) { e[D[36][j]] = 9216 + j; d[9216 + j] = D[36][j];} +D[37] = "��������������%%������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[37].length; ++j) if(D[37][j].charCodeAt(0) !== 0xFFFD) { e[D[37][j]] = 9472 + j; d[9472 + j] = D[37][j];} +D[38] = "��������������&&������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[38].length; ++j) if(D[38][j].charCodeAt(0) !== 0xFFFD) { e[D[38][j]] = 9728 + j; d[9728 + j] = D[38][j];} +D[39] = "��������������''������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[39].length; ++j) if(D[39][j].charCodeAt(0) !== 0xFFFD) { e[D[39][j]] = 9984 + j; d[9984 + j] = D[39][j];} +D[40] = "��������������((������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[40].length; ++j) if(D[40][j].charCodeAt(0) !== 0xFFFD) { e[D[40][j]] = 10240 + j; d[10240 + j] = D[40][j];} +D[41] = "��������������))������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[41].length; ++j) if(D[41][j].charCodeAt(0) !== 0xFFFD) { e[D[41][j]] = 10496 + j; d[10496 + j] = D[41][j];} +D[42] = "��������������**������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[42].length; ++j) if(D[42][j].charCodeAt(0) !== 0xFFFD) { e[D[42][j]] = 10752 + j; d[10752 + j] = D[42][j];} +D[43] = "��������������++������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[43].length; ++j) if(D[43][j].charCodeAt(0) !== 0xFFFD) { e[D[43][j]] = 11008 + j; d[11008 + j] = D[43][j];} +D[44] = "��������������,,������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[44].length; ++j) if(D[44][j].charCodeAt(0) !== 0xFFFD) { e[D[44][j]] = 11264 + j; d[11264 + j] = D[44][j];} +D[45] = "��������������--������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[45].length; ++j) if(D[45][j].charCodeAt(0) !== 0xFFFD) { e[D[45][j]] = 11520 + j; d[11520 + j] = D[45][j];} +D[46] = "��������������..������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[46].length; ++j) if(D[46][j].charCodeAt(0) !== 0xFFFD) { e[D[46][j]] = 11776 + j; d[11776 + j] = D[46][j];} +D[47] = "��������������//������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[47].length; ++j) if(D[47][j].charCodeAt(0) !== 0xFFFD) { e[D[47][j]] = 12032 + j; d[12032 + j] = D[47][j];} +D[48] = "��������������00������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[48].length; ++j) if(D[48][j].charCodeAt(0) !== 0xFFFD) { e[D[48][j]] = 12288 + j; d[12288 + j] = D[48][j];} +D[49] = "��������������11������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[49].length; ++j) if(D[49][j].charCodeAt(0) !== 0xFFFD) { e[D[49][j]] = 12544 + j; d[12544 + j] = D[49][j];} +D[50] = "��������������22������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[50].length; ++j) if(D[50][j].charCodeAt(0) !== 0xFFFD) { e[D[50][j]] = 12800 + j; d[12800 + j] = D[50][j];} +D[51] = "��������������33������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[51].length; ++j) if(D[51][j].charCodeAt(0) !== 0xFFFD) { e[D[51][j]] = 13056 + j; d[13056 + j] = D[51][j];} +D[52] = "��������������44������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[52].length; ++j) if(D[52][j].charCodeAt(0) !== 0xFFFD) { e[D[52][j]] = 13312 + j; d[13312 + j] = D[52][j];} +D[53] = "��������������55������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[53].length; ++j) if(D[53][j].charCodeAt(0) !== 0xFFFD) { e[D[53][j]] = 13568 + j; d[13568 + j] = D[53][j];} +D[54] = "��������������66������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[54].length; ++j) if(D[54][j].charCodeAt(0) !== 0xFFFD) { e[D[54][j]] = 13824 + j; d[13824 + j] = D[54][j];} +D[55] = "��������������77������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[55].length; ++j) if(D[55][j].charCodeAt(0) !== 0xFFFD) { e[D[55][j]] = 14080 + j; d[14080 + j] = D[55][j];} +D[56] = "��������������88������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[56].length; ++j) if(D[56][j].charCodeAt(0) !== 0xFFFD) { e[D[56][j]] = 14336 + j; d[14336 + j] = D[56][j];} +D[57] = "��������������99������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[57].length; ++j) if(D[57][j].charCodeAt(0) !== 0xFFFD) { e[D[57][j]] = 14592 + j; d[14592 + j] = D[57][j];} +D[58] = "��������������::������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[58].length; ++j) if(D[58][j].charCodeAt(0) !== 0xFFFD) { e[D[58][j]] = 14848 + j; d[14848 + j] = D[58][j];} +D[59] = "��������������;;������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[59].length; ++j) if(D[59][j].charCodeAt(0) !== 0xFFFD) { e[D[59][j]] = 15104 + j; d[15104 + j] = D[59][j];} +D[60] = "��������������<<������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[60].length; ++j) if(D[60][j].charCodeAt(0) !== 0xFFFD) { e[D[60][j]] = 15360 + j; d[15360 + j] = D[60][j];} +D[61] = "��������������==������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[61].length; ++j) if(D[61][j].charCodeAt(0) !== 0xFFFD) { e[D[61][j]] = 15616 + j; d[15616 + j] = D[61][j];} +D[62] = "��������������>>������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[62].length; ++j) if(D[62][j].charCodeAt(0) !== 0xFFFD) { e[D[62][j]] = 15872 + j; d[15872 + j] = D[62][j];} +D[63] = "��������������??������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[63].length; ++j) if(D[63][j].charCodeAt(0) !== 0xFFFD) { e[D[63][j]] = 16128 + j; d[16128 + j] = D[63][j];} +D[64] = "��������������@@������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[64].length; ++j) if(D[64][j].charCodeAt(0) !== 0xFFFD) { e[D[64][j]] = 16384 + j; d[16384 + j] = D[64][j];} +D[65] = "��������������AA������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[65].length; ++j) if(D[65][j].charCodeAt(0) !== 0xFFFD) { e[D[65][j]] = 16640 + j; d[16640 + j] = D[65][j];} +D[66] = "��������������BB������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[66].length; ++j) if(D[66][j].charCodeAt(0) !== 0xFFFD) { e[D[66][j]] = 16896 + j; d[16896 + j] = D[66][j];} +D[67] = "��������������CC������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[67].length; ++j) if(D[67][j].charCodeAt(0) !== 0xFFFD) { e[D[67][j]] = 17152 + j; d[17152 + j] = D[67][j];} +D[68] = "��������������DD������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[68].length; ++j) if(D[68][j].charCodeAt(0) !== 0xFFFD) { e[D[68][j]] = 17408 + j; d[17408 + j] = D[68][j];} +D[69] = "��������������EE������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[69].length; ++j) if(D[69][j].charCodeAt(0) !== 0xFFFD) { e[D[69][j]] = 17664 + j; d[17664 + j] = D[69][j];} +D[70] = "��������������FF������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[70].length; ++j) if(D[70][j].charCodeAt(0) !== 0xFFFD) { e[D[70][j]] = 17920 + j; d[17920 + j] = D[70][j];} +D[71] = "��������������GG������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[71].length; ++j) if(D[71][j].charCodeAt(0) !== 0xFFFD) { e[D[71][j]] = 18176 + j; d[18176 + j] = D[71][j];} +D[72] = "��������������HH������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[72].length; ++j) if(D[72][j].charCodeAt(0) !== 0xFFFD) { e[D[72][j]] = 18432 + j; d[18432 + j] = D[72][j];} +D[73] = "��������������II������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[73].length; ++j) if(D[73][j].charCodeAt(0) !== 0xFFFD) { e[D[73][j]] = 18688 + j; d[18688 + j] = D[73][j];} +D[74] = "��������������JJ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[74].length; ++j) if(D[74][j].charCodeAt(0) !== 0xFFFD) { e[D[74][j]] = 18944 + j; d[18944 + j] = D[74][j];} +D[75] = "��������������KK������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[75].length; ++j) if(D[75][j].charCodeAt(0) !== 0xFFFD) { e[D[75][j]] = 19200 + j; d[19200 + j] = D[75][j];} +D[76] = "��������������LL������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[76].length; ++j) if(D[76][j].charCodeAt(0) !== 0xFFFD) { e[D[76][j]] = 19456 + j; d[19456 + j] = D[76][j];} +D[77] = "��������������MM������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[77].length; ++j) if(D[77][j].charCodeAt(0) !== 0xFFFD) { e[D[77][j]] = 19712 + j; d[19712 + j] = D[77][j];} +D[78] = "��������������NN������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[78].length; ++j) if(D[78][j].charCodeAt(0) !== 0xFFFD) { e[D[78][j]] = 19968 + j; d[19968 + j] = D[78][j];} +D[79] = "��������������OO������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[79].length; ++j) if(D[79][j].charCodeAt(0) !== 0xFFFD) { e[D[79][j]] = 20224 + j; d[20224 + j] = D[79][j];} +D[80] = "��������������PP������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[80].length; ++j) if(D[80][j].charCodeAt(0) !== 0xFFFD) { e[D[80][j]] = 20480 + j; d[20480 + j] = D[80][j];} +D[81] = "��������������QQ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[81].length; ++j) if(D[81][j].charCodeAt(0) !== 0xFFFD) { e[D[81][j]] = 20736 + j; d[20736 + j] = D[81][j];} +D[82] = "��������������RR������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[82].length; ++j) if(D[82][j].charCodeAt(0) !== 0xFFFD) { e[D[82][j]] = 20992 + j; d[20992 + j] = D[82][j];} +D[83] = "��������������SS������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[83].length; ++j) if(D[83][j].charCodeAt(0) !== 0xFFFD) { e[D[83][j]] = 21248 + j; d[21248 + j] = D[83][j];} +D[84] = "��������������TT������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[84].length; ++j) if(D[84][j].charCodeAt(0) !== 0xFFFD) { e[D[84][j]] = 21504 + j; d[21504 + j] = D[84][j];} +D[85] = "��������������UU������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[85].length; ++j) if(D[85][j].charCodeAt(0) !== 0xFFFD) { e[D[85][j]] = 21760 + j; d[21760 + j] = D[85][j];} +D[86] = "��������������VV������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[86].length; ++j) if(D[86][j].charCodeAt(0) !== 0xFFFD) { e[D[86][j]] = 22016 + j; d[22016 + j] = D[86][j];} +D[87] = "��������������WW������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[87].length; ++j) if(D[87][j].charCodeAt(0) !== 0xFFFD) { e[D[87][j]] = 22272 + j; d[22272 + j] = D[87][j];} +D[88] = "��������������XX������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[88].length; ++j) if(D[88][j].charCodeAt(0) !== 0xFFFD) { e[D[88][j]] = 22528 + j; d[22528 + j] = D[88][j];} +D[89] = "��������������YY������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[89].length; ++j) if(D[89][j].charCodeAt(0) !== 0xFFFD) { e[D[89][j]] = 22784 + j; d[22784 + j] = D[89][j];} +D[90] = "��������������ZZ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[90].length; ++j) if(D[90][j].charCodeAt(0) !== 0xFFFD) { e[D[90][j]] = 23040 + j; d[23040 + j] = D[90][j];} +D[91] = "��������������[[������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[91].length; ++j) if(D[91][j].charCodeAt(0) !== 0xFFFD) { e[D[91][j]] = 23296 + j; d[23296 + j] = D[91][j];} +D[92] = "��������������\\\\������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[92].length; ++j) if(D[92][j].charCodeAt(0) !== 0xFFFD) { e[D[92][j]] = 23552 + j; d[23552 + j] = D[92][j];} +D[93] = "��������������]]������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[93].length; ++j) if(D[93][j].charCodeAt(0) !== 0xFFFD) { e[D[93][j]] = 23808 + j; d[23808 + j] = D[93][j];} +D[94] = "��������������^^������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[94].length; ++j) if(D[94][j].charCodeAt(0) !== 0xFFFD) { e[D[94][j]] = 24064 + j; d[24064 + j] = D[94][j];} +D[95] = "��������������__������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[95].length; ++j) if(D[95][j].charCodeAt(0) !== 0xFFFD) { e[D[95][j]] = 24320 + j; d[24320 + j] = D[95][j];} +D[96] = "��������������``������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[96].length; ++j) if(D[96][j].charCodeAt(0) !== 0xFFFD) { e[D[96][j]] = 24576 + j; d[24576 + j] = D[96][j];} +D[97] = "��������������aa������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[97].length; ++j) if(D[97][j].charCodeAt(0) !== 0xFFFD) { e[D[97][j]] = 24832 + j; d[24832 + j] = D[97][j];} +D[98] = "��������������bb������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[98].length; ++j) if(D[98][j].charCodeAt(0) !== 0xFFFD) { e[D[98][j]] = 25088 + j; d[25088 + j] = D[98][j];} +D[99] = "��������������cc������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[99].length; ++j) if(D[99][j].charCodeAt(0) !== 0xFFFD) { e[D[99][j]] = 25344 + j; d[25344 + j] = D[99][j];} +D[100] = "��������������dd������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[100].length; ++j) if(D[100][j].charCodeAt(0) !== 0xFFFD) { e[D[100][j]] = 25600 + j; d[25600 + j] = D[100][j];} +D[101] = "��������������ee������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[101].length; ++j) if(D[101][j].charCodeAt(0) !== 0xFFFD) { e[D[101][j]] = 25856 + j; d[25856 + j] = D[101][j];} +D[102] = "��������������ff������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[102].length; ++j) if(D[102][j].charCodeAt(0) !== 0xFFFD) { e[D[102][j]] = 26112 + j; d[26112 + j] = D[102][j];} +D[103] = "��������������gg������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[103].length; ++j) if(D[103][j].charCodeAt(0) !== 0xFFFD) { e[D[103][j]] = 26368 + j; d[26368 + j] = D[103][j];} +D[104] = "��������������hh������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[104].length; ++j) if(D[104][j].charCodeAt(0) !== 0xFFFD) { e[D[104][j]] = 26624 + j; d[26624 + j] = D[104][j];} +D[105] = "��������������ii������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[105].length; ++j) if(D[105][j].charCodeAt(0) !== 0xFFFD) { e[D[105][j]] = 26880 + j; d[26880 + j] = D[105][j];} +D[106] = "��������������jj������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[106].length; ++j) if(D[106][j].charCodeAt(0) !== 0xFFFD) { e[D[106][j]] = 27136 + j; d[27136 + j] = D[106][j];} +D[107] = "��������������kk������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[107].length; ++j) if(D[107][j].charCodeAt(0) !== 0xFFFD) { e[D[107][j]] = 27392 + j; d[27392 + j] = D[107][j];} +D[108] = "��������������ll������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[108].length; ++j) if(D[108][j].charCodeAt(0) !== 0xFFFD) { e[D[108][j]] = 27648 + j; d[27648 + j] = D[108][j];} +D[109] = "��������������mm������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[109].length; ++j) if(D[109][j].charCodeAt(0) !== 0xFFFD) { e[D[109][j]] = 27904 + j; d[27904 + j] = D[109][j];} +D[110] = "��������������nn������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[110].length; ++j) if(D[110][j].charCodeAt(0) !== 0xFFFD) { e[D[110][j]] = 28160 + j; d[28160 + j] = D[110][j];} +D[111] = "��������������oo������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[111].length; ++j) if(D[111][j].charCodeAt(0) !== 0xFFFD) { e[D[111][j]] = 28416 + j; d[28416 + j] = D[111][j];} +D[112] = "��������������pp������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[112].length; ++j) if(D[112][j].charCodeAt(0) !== 0xFFFD) { e[D[112][j]] = 28672 + j; d[28672 + j] = D[112][j];} +D[113] = "��������������qq������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[113].length; ++j) if(D[113][j].charCodeAt(0) !== 0xFFFD) { e[D[113][j]] = 28928 + j; d[28928 + j] = D[113][j];} +D[114] = "��������������rr������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[114].length; ++j) if(D[114][j].charCodeAt(0) !== 0xFFFD) { e[D[114][j]] = 29184 + j; d[29184 + j] = D[114][j];} +D[115] = "��������������ss������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[115].length; ++j) if(D[115][j].charCodeAt(0) !== 0xFFFD) { e[D[115][j]] = 29440 + j; d[29440 + j] = D[115][j];} +D[116] = "��������������tt������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[116].length; ++j) if(D[116][j].charCodeAt(0) !== 0xFFFD) { e[D[116][j]] = 29696 + j; d[29696 + j] = D[116][j];} +D[117] = "��������������uu������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[117].length; ++j) if(D[117][j].charCodeAt(0) !== 0xFFFD) { e[D[117][j]] = 29952 + j; d[29952 + j] = D[117][j];} +D[118] = "��������������vv������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[118].length; ++j) if(D[118][j].charCodeAt(0) !== 0xFFFD) { e[D[118][j]] = 30208 + j; d[30208 + j] = D[118][j];} +D[119] = "��������������ww������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[119].length; ++j) if(D[119][j].charCodeAt(0) !== 0xFFFD) { e[D[119][j]] = 30464 + j; d[30464 + j] = D[119][j];} +D[120] = "��������������xx������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[120].length; ++j) if(D[120][j].charCodeAt(0) !== 0xFFFD) { e[D[120][j]] = 30720 + j; d[30720 + j] = D[120][j];} +D[121] = "��������������yy������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[121].length; ++j) if(D[121][j].charCodeAt(0) !== 0xFFFD) { e[D[121][j]] = 30976 + j; d[30976 + j] = D[121][j];} +D[122] = "��������������zz������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[122].length; ++j) if(D[122][j].charCodeAt(0) !== 0xFFFD) { e[D[122][j]] = 31232 + j; d[31232 + j] = D[122][j];} +D[123] = "��������������{{������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[123].length; ++j) if(D[123][j].charCodeAt(0) !== 0xFFFD) { e[D[123][j]] = 31488 + j; d[31488 + j] = D[123][j];} +D[124] = "��������������||������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[124].length; ++j) if(D[124][j].charCodeAt(0) !== 0xFFFD) { e[D[124][j]] = 31744 + j; d[31744 + j] = D[124][j];} +D[125] = "��������������}}������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[125].length; ++j) if(D[125][j].charCodeAt(0) !== 0xFFFD) { e[D[125][j]] = 32000 + j; d[32000 + j] = D[125][j];} +D[126] = "��������������~~������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[126].length; ++j) if(D[126][j].charCodeAt(0) !== 0xFFFD) { e[D[126][j]] = 32256 + j; d[32256 + j] = D[126][j];} +D[127] = "��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[127].length; ++j) if(D[127][j].charCodeAt(0) !== 0xFFFD) { e[D[127][j]] = 32512 + j; d[32512 + j] = D[127][j];} +D[128] = "��������������€€������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[128].length; ++j) if(D[128][j].charCodeAt(0) !== 0xFFFD) { e[D[128][j]] = 32768 + j; d[32768 + j] = D[128][j];} +D[160] = "��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[160].length; ++j) if(D[160][j].charCodeAt(0) !== 0xFFFD) { e[D[160][j]] = 40960 + j; d[40960 + j] = D[160][j];} +D[161] = "��������������。。������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];} +D[162] = "��������������「「������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[162].length; ++j) if(D[162][j].charCodeAt(0) !== 0xFFFD) { e[D[162][j]] = 41472 + j; d[41472 + j] = D[162][j];} +D[163] = "��������������」」������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[163].length; ++j) if(D[163][j].charCodeAt(0) !== 0xFFFD) { e[D[163][j]] = 41728 + j; d[41728 + j] = D[163][j];} +D[164] = "��������������、、������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[164].length; ++j) if(D[164][j].charCodeAt(0) !== 0xFFFD) { e[D[164][j]] = 41984 + j; d[41984 + j] = D[164][j];} +D[165] = "��������������・・������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[165].length; ++j) if(D[165][j].charCodeAt(0) !== 0xFFFD) { e[D[165][j]] = 42240 + j; d[42240 + j] = D[165][j];} +D[166] = "��������������ヲヲ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];} +D[167] = "��������������ァァ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];} +D[168] = "��������������ィィ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[168].length; ++j) if(D[168][j].charCodeAt(0) !== 0xFFFD) { e[D[168][j]] = 43008 + j; d[43008 + j] = D[168][j];} +D[169] = "��������������ゥゥ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[169].length; ++j) if(D[169][j].charCodeAt(0) !== 0xFFFD) { e[D[169][j]] = 43264 + j; d[43264 + j] = D[169][j];} +D[170] = "��������������ェェ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];} +D[171] = "��������������ォォ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[171].length; ++j) if(D[171][j].charCodeAt(0) !== 0xFFFD) { e[D[171][j]] = 43776 + j; d[43776 + j] = D[171][j];} +D[172] = "��������������ャャ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[172].length; ++j) if(D[172][j].charCodeAt(0) !== 0xFFFD) { e[D[172][j]] = 44032 + j; d[44032 + j] = D[172][j];} +D[173] = "��������������ュュ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[173].length; ++j) if(D[173][j].charCodeAt(0) !== 0xFFFD) { e[D[173][j]] = 44288 + j; d[44288 + j] = D[173][j];} +D[174] = "��������������ョョ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[174].length; ++j) if(D[174][j].charCodeAt(0) !== 0xFFFD) { e[D[174][j]] = 44544 + j; d[44544 + j] = D[174][j];} +D[175] = "��������������ッッ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[175].length; ++j) if(D[175][j].charCodeAt(0) !== 0xFFFD) { e[D[175][j]] = 44800 + j; d[44800 + j] = D[175][j];} +D[176] = "��������������ーー������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[176].length; ++j) if(D[176][j].charCodeAt(0) !== 0xFFFD) { e[D[176][j]] = 45056 + j; d[45056 + j] = D[176][j];} +D[177] = "��������������アア������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[177].length; ++j) if(D[177][j].charCodeAt(0) !== 0xFFFD) { e[D[177][j]] = 45312 + j; d[45312 + j] = D[177][j];} +D[178] = "��������������イイ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[178].length; ++j) if(D[178][j].charCodeAt(0) !== 0xFFFD) { e[D[178][j]] = 45568 + j; d[45568 + j] = D[178][j];} +D[179] = "��������������ウウ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[179].length; ++j) if(D[179][j].charCodeAt(0) !== 0xFFFD) { e[D[179][j]] = 45824 + j; d[45824 + j] = D[179][j];} +D[180] = "��������������エエ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];} +D[181] = "��������������オオ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];} +D[182] = "��������������カカ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[182].length; ++j) if(D[182][j].charCodeAt(0) !== 0xFFFD) { e[D[182][j]] = 46592 + j; d[46592 + j] = D[182][j];} +D[183] = "��������������キキ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[183].length; ++j) if(D[183][j].charCodeAt(0) !== 0xFFFD) { e[D[183][j]] = 46848 + j; d[46848 + j] = D[183][j];} +D[184] = "��������������クク������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[184].length; ++j) if(D[184][j].charCodeAt(0) !== 0xFFFD) { e[D[184][j]] = 47104 + j; d[47104 + j] = D[184][j];} +D[185] = "��������������ケケ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[185].length; ++j) if(D[185][j].charCodeAt(0) !== 0xFFFD) { e[D[185][j]] = 47360 + j; d[47360 + j] = D[185][j];} +D[186] = "��������������ココ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];} +D[187] = "��������������ササ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[187].length; ++j) if(D[187][j].charCodeAt(0) !== 0xFFFD) { e[D[187][j]] = 47872 + j; d[47872 + j] = D[187][j];} +D[188] = "��������������シシ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[188].length; ++j) if(D[188][j].charCodeAt(0) !== 0xFFFD) { e[D[188][j]] = 48128 + j; d[48128 + j] = D[188][j];} +D[189] = "��������������スス������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[189].length; ++j) if(D[189][j].charCodeAt(0) !== 0xFFFD) { e[D[189][j]] = 48384 + j; d[48384 + j] = D[189][j];} +D[190] = "��������������セセ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[190].length; ++j) if(D[190][j].charCodeAt(0) !== 0xFFFD) { e[D[190][j]] = 48640 + j; d[48640 + j] = D[190][j];} +D[191] = "��������������ソソ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];} +D[192] = "��������������タタ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];} +D[193] = "��������������チチ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[193].length; ++j) if(D[193][j].charCodeAt(0) !== 0xFFFD) { e[D[193][j]] = 49408 + j; d[49408 + j] = D[193][j];} +D[194] = "��������������ツツ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[194].length; ++j) if(D[194][j].charCodeAt(0) !== 0xFFFD) { e[D[194][j]] = 49664 + j; d[49664 + j] = D[194][j];} +D[195] = "��������������テテ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[195].length; ++j) if(D[195][j].charCodeAt(0) !== 0xFFFD) { e[D[195][j]] = 49920 + j; d[49920 + j] = D[195][j];} +D[196] = "��������������トト������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[196].length; ++j) if(D[196][j].charCodeAt(0) !== 0xFFFD) { e[D[196][j]] = 50176 + j; d[50176 + j] = D[196][j];} +D[197] = "��������������ナナ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[197].length; ++j) if(D[197][j].charCodeAt(0) !== 0xFFFD) { e[D[197][j]] = 50432 + j; d[50432 + j] = D[197][j];} +D[198] = "��������������ニニ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[198].length; ++j) if(D[198][j].charCodeAt(0) !== 0xFFFD) { e[D[198][j]] = 50688 + j; d[50688 + j] = D[198][j];} +D[199] = "��������������ヌヌ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[199].length; ++j) if(D[199][j].charCodeAt(0) !== 0xFFFD) { e[D[199][j]] = 50944 + j; d[50944 + j] = D[199][j];} +D[200] = "��������������ネネ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[200].length; ++j) if(D[200][j].charCodeAt(0) !== 0xFFFD) { e[D[200][j]] = 51200 + j; d[51200 + j] = D[200][j];} +D[201] = "��������������ノノ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[201].length; ++j) if(D[201][j].charCodeAt(0) !== 0xFFFD) { e[D[201][j]] = 51456 + j; d[51456 + j] = D[201][j];} +D[202] = "��������������ハハ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[202].length; ++j) if(D[202][j].charCodeAt(0) !== 0xFFFD) { e[D[202][j]] = 51712 + j; d[51712 + j] = D[202][j];} +D[203] = "��������������ヒヒ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[203].length; ++j) if(D[203][j].charCodeAt(0) !== 0xFFFD) { e[D[203][j]] = 51968 + j; d[51968 + j] = D[203][j];} +D[204] = "��������������フフ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[204].length; ++j) if(D[204][j].charCodeAt(0) !== 0xFFFD) { e[D[204][j]] = 52224 + j; d[52224 + j] = D[204][j];} +D[205] = "��������������ヘヘ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[205].length; ++j) if(D[205][j].charCodeAt(0) !== 0xFFFD) { e[D[205][j]] = 52480 + j; d[52480 + j] = D[205][j];} +D[206] = "��������������ホホ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[206].length; ++j) if(D[206][j].charCodeAt(0) !== 0xFFFD) { e[D[206][j]] = 52736 + j; d[52736 + j] = D[206][j];} +D[207] = "��������������ママ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[207].length; ++j) if(D[207][j].charCodeAt(0) !== 0xFFFD) { e[D[207][j]] = 52992 + j; d[52992 + j] = D[207][j];} +D[208] = "��������������ミミ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[208].length; ++j) if(D[208][j].charCodeAt(0) !== 0xFFFD) { e[D[208][j]] = 53248 + j; d[53248 + j] = D[208][j];} +D[209] = "��������������ムム������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[209].length; ++j) if(D[209][j].charCodeAt(0) !== 0xFFFD) { e[D[209][j]] = 53504 + j; d[53504 + j] = D[209][j];} +D[210] = "��������������メメ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[210].length; ++j) if(D[210][j].charCodeAt(0) !== 0xFFFD) { e[D[210][j]] = 53760 + j; d[53760 + j] = D[210][j];} +D[211] = "��������������モモ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[211].length; ++j) if(D[211][j].charCodeAt(0) !== 0xFFFD) { e[D[211][j]] = 54016 + j; d[54016 + j] = D[211][j];} +D[212] = "��������������ヤヤ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[212].length; ++j) if(D[212][j].charCodeAt(0) !== 0xFFFD) { e[D[212][j]] = 54272 + j; d[54272 + j] = D[212][j];} +D[213] = "��������������ユユ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[213].length; ++j) if(D[213][j].charCodeAt(0) !== 0xFFFD) { e[D[213][j]] = 54528 + j; d[54528 + j] = D[213][j];} +D[214] = "��������������ヨヨ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[214].length; ++j) if(D[214][j].charCodeAt(0) !== 0xFFFD) { e[D[214][j]] = 54784 + j; d[54784 + j] = D[214][j];} +D[215] = "��������������ララ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[215].length; ++j) if(D[215][j].charCodeAt(0) !== 0xFFFD) { e[D[215][j]] = 55040 + j; d[55040 + j] = D[215][j];} +D[216] = "��������������リリ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[216].length; ++j) if(D[216][j].charCodeAt(0) !== 0xFFFD) { e[D[216][j]] = 55296 + j; d[55296 + j] = D[216][j];} +D[217] = "��������������ルル������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[217].length; ++j) if(D[217][j].charCodeAt(0) !== 0xFFFD) { e[D[217][j]] = 55552 + j; d[55552 + j] = D[217][j];} +D[218] = "��������������レレ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[218].length; ++j) if(D[218][j].charCodeAt(0) !== 0xFFFD) { e[D[218][j]] = 55808 + j; d[55808 + j] = D[218][j];} +D[219] = "��������������ロロ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];} +D[220] = "��������������ワワ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];} +D[221] = "��������������ンン������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[221].length; ++j) if(D[221][j].charCodeAt(0) !== 0xFFFD) { e[D[221][j]] = 56576 + j; d[56576 + j] = D[221][j];} +D[222] = "��������������゙゙������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[222].length; ++j) if(D[222][j].charCodeAt(0) !== 0xFFFD) { e[D[222][j]] = 56832 + j; d[56832 + j] = D[222][j];} +D[223] = "��������������゚゚������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];} +D[253] = "��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[253].length; ++j) if(D[253][j].charCodeAt(0) !== 0xFFFD) { e[D[253][j]] = 64768 + j; d[64768 + j] = D[253][j];} +D[254] = "��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[254].length; ++j) if(D[254][j].charCodeAt(0) !== 0xFFFD) { e[D[254][j]] = 65024 + j; d[65024 + j] = D[254][j];} +D[255] = "��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[255].length; ++j) if(D[255][j].charCodeAt(0) !== 0xFFFD) { e[D[255][j]] = 65280 + j; d[65280 + j] = D[255][j];} +return {"enc": e, "dec": d }; })(); diff --git a/node_modules/codepage/bits/50222.js b/node_modules/codepage/bits/50222.js new file mode 100644 index 000000000..a315523d6 --- /dev/null +++ b/node_modules/codepage/bits/50222.js @@ -0,0 +1,395 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[50222] = (function(){ var d = [], e = {}, D = [], j; +D[0] = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u0000\u0000\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€�������������������������������。「」、・ヲァィゥェォャュョッーアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワン゙゚�����������������������������".split(""); +for(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];} +D[1] = "��������������\u0001\u0001������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[1].length; ++j) if(D[1][j].charCodeAt(0) !== 0xFFFD) { e[D[1][j]] = 256 + j; d[256 + j] = D[1][j];} +D[2] = "��������������\u0002\u0002������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[2].length; ++j) if(D[2][j].charCodeAt(0) !== 0xFFFD) { e[D[2][j]] = 512 + j; d[512 + j] = D[2][j];} +D[3] = "��������������\u0003\u0003������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[3].length; ++j) if(D[3][j].charCodeAt(0) !== 0xFFFD) { e[D[3][j]] = 768 + j; d[768 + j] = D[3][j];} +D[4] = "��������������\u0004\u0004������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[4].length; ++j) if(D[4][j].charCodeAt(0) !== 0xFFFD) { e[D[4][j]] = 1024 + j; d[1024 + j] = D[4][j];} +D[5] = "��������������\u0005\u0005������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[5].length; ++j) if(D[5][j].charCodeAt(0) !== 0xFFFD) { e[D[5][j]] = 1280 + j; d[1280 + j] = D[5][j];} +D[6] = "��������������\u0006\u0006������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[6].length; ++j) if(D[6][j].charCodeAt(0) !== 0xFFFD) { e[D[6][j]] = 1536 + j; d[1536 + j] = D[6][j];} +D[7] = "��������������\u0007\u0007������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[7].length; ++j) if(D[7][j].charCodeAt(0) !== 0xFFFD) { e[D[7][j]] = 1792 + j; d[1792 + j] = D[7][j];} +D[8] = "��������������\b\b������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[8].length; ++j) if(D[8][j].charCodeAt(0) !== 0xFFFD) { e[D[8][j]] = 2048 + j; d[2048 + j] = D[8][j];} +D[9] = "��������������\t\t������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[9].length; ++j) if(D[9][j].charCodeAt(0) !== 0xFFFD) { e[D[9][j]] = 2304 + j; d[2304 + j] = D[9][j];} +D[10] = "��������������\n\n������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[10].length; ++j) if(D[10][j].charCodeAt(0) !== 0xFFFD) { e[D[10][j]] = 2560 + j; d[2560 + j] = D[10][j];} +D[11] = "��������������\u000b\u000b������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[11].length; ++j) if(D[11][j].charCodeAt(0) !== 0xFFFD) { e[D[11][j]] = 2816 + j; d[2816 + j] = D[11][j];} +D[12] = "��������������\f\f������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[12].length; ++j) if(D[12][j].charCodeAt(0) !== 0xFFFD) { e[D[12][j]] = 3072 + j; d[3072 + j] = D[12][j];} +D[13] = "��������������\r\r������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[13].length; ++j) if(D[13][j].charCodeAt(0) !== 0xFFFD) { e[D[13][j]] = 3328 + j; d[3328 + j] = D[13][j];} +D[14] = "��������������\r\r�����������������。「」、・ヲァィゥェォャュョッーアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワン゙゚�����������������������������������������������������������������。「」、・ヲァィゥェォャュョッーアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワン゙゚��������������������������������".split(""); +for(j = 0; j != D[14].length; ++j) if(D[14][j].charCodeAt(0) !== 0xFFFD) { e[D[14][j]] = 3584 + j; d[3584 + j] = D[14][j];} +D[15] = "�\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\r\r\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€�������������������������������。「」、・ヲァィゥェォャュョッーアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワン゙゚�����������������������������".split(""); +for(j = 0; j != D[15].length; ++j) if(D[15][j].charCodeAt(0) !== 0xFFFD) { e[D[15][j]] = 3840 + j; d[3840 + j] = D[15][j];} +D[16] = "��������������\u0010\u0010������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[16].length; ++j) if(D[16][j].charCodeAt(0) !== 0xFFFD) { e[D[16][j]] = 4096 + j; d[4096 + j] = D[16][j];} +D[17] = "��������������\u0011\u0011������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[17].length; ++j) if(D[17][j].charCodeAt(0) !== 0xFFFD) { e[D[17][j]] = 4352 + j; d[4352 + j] = D[17][j];} +D[18] = "��������������\u0012\u0012������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[18].length; ++j) if(D[18][j].charCodeAt(0) !== 0xFFFD) { e[D[18][j]] = 4608 + j; d[4608 + j] = D[18][j];} +D[19] = "��������������\u0013\u0013������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[19].length; ++j) if(D[19][j].charCodeAt(0) !== 0xFFFD) { e[D[19][j]] = 4864 + j; d[4864 + j] = D[19][j];} +D[20] = "��������������\u0014\u0014������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[20].length; ++j) if(D[20][j].charCodeAt(0) !== 0xFFFD) { e[D[20][j]] = 5120 + j; d[5120 + j] = D[20][j];} +D[21] = "��������������\u0015\u0015������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[21].length; ++j) if(D[21][j].charCodeAt(0) !== 0xFFFD) { e[D[21][j]] = 5376 + j; d[5376 + j] = D[21][j];} +D[22] = "��������������\u0016\u0016������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[22].length; ++j) if(D[22][j].charCodeAt(0) !== 0xFFFD) { e[D[22][j]] = 5632 + j; d[5632 + j] = D[22][j];} +D[23] = "��������������\u0017\u0017������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[23].length; ++j) if(D[23][j].charCodeAt(0) !== 0xFFFD) { e[D[23][j]] = 5888 + j; d[5888 + j] = D[23][j];} +D[24] = "��������������\u0018\u0018������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[24].length; ++j) if(D[24][j].charCodeAt(0) !== 0xFFFD) { e[D[24][j]] = 6144 + j; d[6144 + j] = D[24][j];} +D[25] = "��������������\u0019\u0019������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[25].length; ++j) if(D[25][j].charCodeAt(0) !== 0xFFFD) { e[D[25][j]] = 6400 + j; d[6400 + j] = D[25][j];} +D[26] = "��������������\u001a\u001a������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[26].length; ++j) if(D[26][j].charCodeAt(0) !== 0xFFFD) { e[D[26][j]] = 6656 + j; d[6656 + j] = D[26][j];} +D[27] = "��������������\u001b\u001b������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[27].length; ++j) if(D[27][j].charCodeAt(0) !== 0xFFFD) { e[D[27][j]] = 6912 + j; d[6912 + j] = D[27][j];} +D[28] = "��������������\u001c\u001c������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[28].length; ++j) if(D[28][j].charCodeAt(0) !== 0xFFFD) { e[D[28][j]] = 7168 + j; d[7168 + j] = D[28][j];} +D[29] = "��������������\u001d\u001d������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[29].length; ++j) if(D[29][j].charCodeAt(0) !== 0xFFFD) { e[D[29][j]] = 7424 + j; d[7424 + j] = D[29][j];} +D[30] = "��������������\u001e\u001e������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[30].length; ++j) if(D[30][j].charCodeAt(0) !== 0xFFFD) { e[D[30][j]] = 7680 + j; d[7680 + j] = D[30][j];} +D[31] = "��������������\u001f\u001f������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[31].length; ++j) if(D[31][j].charCodeAt(0) !== 0xFFFD) { e[D[31][j]] = 7936 + j; d[7936 + j] = D[31][j];} +D[32] = "�������������� ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[32].length; ++j) if(D[32][j].charCodeAt(0) !== 0xFFFD) { e[D[32][j]] = 8192 + j; d[8192 + j] = D[32][j];} +D[33] = "��������������!!������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[33].length; ++j) if(D[33][j].charCodeAt(0) !== 0xFFFD) { e[D[33][j]] = 8448 + j; d[8448 + j] = D[33][j];} +D[34] = "��������������\"\"������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[34].length; ++j) if(D[34][j].charCodeAt(0) !== 0xFFFD) { e[D[34][j]] = 8704 + j; d[8704 + j] = D[34][j];} +D[35] = "��������������##������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[35].length; ++j) if(D[35][j].charCodeAt(0) !== 0xFFFD) { e[D[35][j]] = 8960 + j; d[8960 + j] = D[35][j];} +D[36] = "��������������$$������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[36].length; ++j) if(D[36][j].charCodeAt(0) !== 0xFFFD) { e[D[36][j]] = 9216 + j; d[9216 + j] = D[36][j];} +D[37] = "��������������%%������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[37].length; ++j) if(D[37][j].charCodeAt(0) !== 0xFFFD) { e[D[37][j]] = 9472 + j; d[9472 + j] = D[37][j];} +D[38] = "��������������&&������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[38].length; ++j) if(D[38][j].charCodeAt(0) !== 0xFFFD) { e[D[38][j]] = 9728 + j; d[9728 + j] = D[38][j];} +D[39] = "��������������''������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[39].length; ++j) if(D[39][j].charCodeAt(0) !== 0xFFFD) { e[D[39][j]] = 9984 + j; d[9984 + j] = D[39][j];} +D[40] = "��������������((������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[40].length; ++j) if(D[40][j].charCodeAt(0) !== 0xFFFD) { e[D[40][j]] = 10240 + j; d[10240 + j] = D[40][j];} +D[41] = "��������������))������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[41].length; ++j) if(D[41][j].charCodeAt(0) !== 0xFFFD) { e[D[41][j]] = 10496 + j; d[10496 + j] = D[41][j];} +D[42] = "��������������**������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[42].length; ++j) if(D[42][j].charCodeAt(0) !== 0xFFFD) { e[D[42][j]] = 10752 + j; d[10752 + j] = D[42][j];} +D[43] = "��������������++������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[43].length; ++j) if(D[43][j].charCodeAt(0) !== 0xFFFD) { e[D[43][j]] = 11008 + j; d[11008 + j] = D[43][j];} +D[44] = "��������������,,������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[44].length; ++j) if(D[44][j].charCodeAt(0) !== 0xFFFD) { e[D[44][j]] = 11264 + j; d[11264 + j] = D[44][j];} +D[45] = "��������������--������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[45].length; ++j) if(D[45][j].charCodeAt(0) !== 0xFFFD) { e[D[45][j]] = 11520 + j; d[11520 + j] = D[45][j];} +D[46] = "��������������..������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[46].length; ++j) if(D[46][j].charCodeAt(0) !== 0xFFFD) { e[D[46][j]] = 11776 + j; d[11776 + j] = D[46][j];} +D[47] = "��������������//������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[47].length; ++j) if(D[47][j].charCodeAt(0) !== 0xFFFD) { e[D[47][j]] = 12032 + j; d[12032 + j] = D[47][j];} +D[48] = "��������������00������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[48].length; ++j) if(D[48][j].charCodeAt(0) !== 0xFFFD) { e[D[48][j]] = 12288 + j; d[12288 + j] = D[48][j];} +D[49] = "��������������11������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[49].length; ++j) if(D[49][j].charCodeAt(0) !== 0xFFFD) { e[D[49][j]] = 12544 + j; d[12544 + j] = D[49][j];} +D[50] = "��������������22������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[50].length; ++j) if(D[50][j].charCodeAt(0) !== 0xFFFD) { e[D[50][j]] = 12800 + j; d[12800 + j] = D[50][j];} +D[51] = "��������������33������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[51].length; ++j) if(D[51][j].charCodeAt(0) !== 0xFFFD) { e[D[51][j]] = 13056 + j; d[13056 + j] = D[51][j];} +D[52] = "��������������44������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[52].length; ++j) if(D[52][j].charCodeAt(0) !== 0xFFFD) { e[D[52][j]] = 13312 + j; d[13312 + j] = D[52][j];} +D[53] = "��������������55������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[53].length; ++j) if(D[53][j].charCodeAt(0) !== 0xFFFD) { e[D[53][j]] = 13568 + j; d[13568 + j] = D[53][j];} +D[54] = "��������������66������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[54].length; ++j) if(D[54][j].charCodeAt(0) !== 0xFFFD) { e[D[54][j]] = 13824 + j; d[13824 + j] = D[54][j];} +D[55] = "��������������77������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[55].length; ++j) if(D[55][j].charCodeAt(0) !== 0xFFFD) { e[D[55][j]] = 14080 + j; d[14080 + j] = D[55][j];} +D[56] = "��������������88������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[56].length; ++j) if(D[56][j].charCodeAt(0) !== 0xFFFD) { e[D[56][j]] = 14336 + j; d[14336 + j] = D[56][j];} +D[57] = "��������������99������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[57].length; ++j) if(D[57][j].charCodeAt(0) !== 0xFFFD) { e[D[57][j]] = 14592 + j; d[14592 + j] = D[57][j];} +D[58] = "��������������::������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[58].length; ++j) if(D[58][j].charCodeAt(0) !== 0xFFFD) { e[D[58][j]] = 14848 + j; d[14848 + j] = D[58][j];} +D[59] = "��������������;;������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[59].length; ++j) if(D[59][j].charCodeAt(0) !== 0xFFFD) { e[D[59][j]] = 15104 + j; d[15104 + j] = D[59][j];} +D[60] = "��������������<<������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[60].length; ++j) if(D[60][j].charCodeAt(0) !== 0xFFFD) { e[D[60][j]] = 15360 + j; d[15360 + j] = D[60][j];} +D[61] = "��������������==������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[61].length; ++j) if(D[61][j].charCodeAt(0) !== 0xFFFD) { e[D[61][j]] = 15616 + j; d[15616 + j] = D[61][j];} +D[62] = "��������������>>������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[62].length; ++j) if(D[62][j].charCodeAt(0) !== 0xFFFD) { e[D[62][j]] = 15872 + j; d[15872 + j] = D[62][j];} +D[63] = "��������������??������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[63].length; ++j) if(D[63][j].charCodeAt(0) !== 0xFFFD) { e[D[63][j]] = 16128 + j; d[16128 + j] = D[63][j];} +D[64] = "��������������@@������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[64].length; ++j) if(D[64][j].charCodeAt(0) !== 0xFFFD) { e[D[64][j]] = 16384 + j; d[16384 + j] = D[64][j];} +D[65] = "��������������AA������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[65].length; ++j) if(D[65][j].charCodeAt(0) !== 0xFFFD) { e[D[65][j]] = 16640 + j; d[16640 + j] = D[65][j];} +D[66] = "��������������BB������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[66].length; ++j) if(D[66][j].charCodeAt(0) !== 0xFFFD) { e[D[66][j]] = 16896 + j; d[16896 + j] = D[66][j];} +D[67] = "��������������CC������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[67].length; ++j) if(D[67][j].charCodeAt(0) !== 0xFFFD) { e[D[67][j]] = 17152 + j; d[17152 + j] = D[67][j];} +D[68] = "��������������DD������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[68].length; ++j) if(D[68][j].charCodeAt(0) !== 0xFFFD) { e[D[68][j]] = 17408 + j; d[17408 + j] = D[68][j];} +D[69] = "��������������EE������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[69].length; ++j) if(D[69][j].charCodeAt(0) !== 0xFFFD) { e[D[69][j]] = 17664 + j; d[17664 + j] = D[69][j];} +D[70] = "��������������FF������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[70].length; ++j) if(D[70][j].charCodeAt(0) !== 0xFFFD) { e[D[70][j]] = 17920 + j; d[17920 + j] = D[70][j];} +D[71] = "��������������GG������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[71].length; ++j) if(D[71][j].charCodeAt(0) !== 0xFFFD) { e[D[71][j]] = 18176 + j; d[18176 + j] = D[71][j];} +D[72] = "��������������HH������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[72].length; ++j) if(D[72][j].charCodeAt(0) !== 0xFFFD) { e[D[72][j]] = 18432 + j; d[18432 + j] = D[72][j];} +D[73] = "��������������II������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[73].length; ++j) if(D[73][j].charCodeAt(0) !== 0xFFFD) { e[D[73][j]] = 18688 + j; d[18688 + j] = D[73][j];} +D[74] = "��������������JJ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[74].length; ++j) if(D[74][j].charCodeAt(0) !== 0xFFFD) { e[D[74][j]] = 18944 + j; d[18944 + j] = D[74][j];} +D[75] = "��������������KK������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[75].length; ++j) if(D[75][j].charCodeAt(0) !== 0xFFFD) { e[D[75][j]] = 19200 + j; d[19200 + j] = D[75][j];} +D[76] = "��������������LL������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[76].length; ++j) if(D[76][j].charCodeAt(0) !== 0xFFFD) { e[D[76][j]] = 19456 + j; d[19456 + j] = D[76][j];} +D[77] = "��������������MM������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[77].length; ++j) if(D[77][j].charCodeAt(0) !== 0xFFFD) { e[D[77][j]] = 19712 + j; d[19712 + j] = D[77][j];} +D[78] = "��������������NN������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[78].length; ++j) if(D[78][j].charCodeAt(0) !== 0xFFFD) { e[D[78][j]] = 19968 + j; d[19968 + j] = D[78][j];} +D[79] = "��������������OO������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[79].length; ++j) if(D[79][j].charCodeAt(0) !== 0xFFFD) { e[D[79][j]] = 20224 + j; d[20224 + j] = D[79][j];} +D[80] = "��������������PP������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[80].length; ++j) if(D[80][j].charCodeAt(0) !== 0xFFFD) { e[D[80][j]] = 20480 + j; d[20480 + j] = D[80][j];} +D[81] = "��������������QQ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[81].length; ++j) if(D[81][j].charCodeAt(0) !== 0xFFFD) { e[D[81][j]] = 20736 + j; d[20736 + j] = D[81][j];} +D[82] = "��������������RR������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[82].length; ++j) if(D[82][j].charCodeAt(0) !== 0xFFFD) { e[D[82][j]] = 20992 + j; d[20992 + j] = D[82][j];} +D[83] = "��������������SS������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[83].length; ++j) if(D[83][j].charCodeAt(0) !== 0xFFFD) { e[D[83][j]] = 21248 + j; d[21248 + j] = D[83][j];} +D[84] = "��������������TT������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[84].length; ++j) if(D[84][j].charCodeAt(0) !== 0xFFFD) { e[D[84][j]] = 21504 + j; d[21504 + j] = D[84][j];} +D[85] = "��������������UU������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[85].length; ++j) if(D[85][j].charCodeAt(0) !== 0xFFFD) { e[D[85][j]] = 21760 + j; d[21760 + j] = D[85][j];} +D[86] = "��������������VV������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[86].length; ++j) if(D[86][j].charCodeAt(0) !== 0xFFFD) { e[D[86][j]] = 22016 + j; d[22016 + j] = D[86][j];} +D[87] = "��������������WW������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[87].length; ++j) if(D[87][j].charCodeAt(0) !== 0xFFFD) { e[D[87][j]] = 22272 + j; d[22272 + j] = D[87][j];} +D[88] = "��������������XX������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[88].length; ++j) if(D[88][j].charCodeAt(0) !== 0xFFFD) { e[D[88][j]] = 22528 + j; d[22528 + j] = D[88][j];} +D[89] = "��������������YY������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[89].length; ++j) if(D[89][j].charCodeAt(0) !== 0xFFFD) { e[D[89][j]] = 22784 + j; d[22784 + j] = D[89][j];} +D[90] = "��������������ZZ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[90].length; ++j) if(D[90][j].charCodeAt(0) !== 0xFFFD) { e[D[90][j]] = 23040 + j; d[23040 + j] = D[90][j];} +D[91] = "��������������[[������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[91].length; ++j) if(D[91][j].charCodeAt(0) !== 0xFFFD) { e[D[91][j]] = 23296 + j; d[23296 + j] = D[91][j];} +D[92] = "��������������\\\\������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[92].length; ++j) if(D[92][j].charCodeAt(0) !== 0xFFFD) { e[D[92][j]] = 23552 + j; d[23552 + j] = D[92][j];} +D[93] = "��������������]]������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[93].length; ++j) if(D[93][j].charCodeAt(0) !== 0xFFFD) { e[D[93][j]] = 23808 + j; d[23808 + j] = D[93][j];} +D[94] = "��������������^^������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[94].length; ++j) if(D[94][j].charCodeAt(0) !== 0xFFFD) { e[D[94][j]] = 24064 + j; d[24064 + j] = D[94][j];} +D[95] = "��������������__������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[95].length; ++j) if(D[95][j].charCodeAt(0) !== 0xFFFD) { e[D[95][j]] = 24320 + j; d[24320 + j] = D[95][j];} +D[96] = "��������������``������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[96].length; ++j) if(D[96][j].charCodeAt(0) !== 0xFFFD) { e[D[96][j]] = 24576 + j; d[24576 + j] = D[96][j];} +D[97] = "��������������aa������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[97].length; ++j) if(D[97][j].charCodeAt(0) !== 0xFFFD) { e[D[97][j]] = 24832 + j; d[24832 + j] = D[97][j];} +D[98] = "��������������bb������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[98].length; ++j) if(D[98][j].charCodeAt(0) !== 0xFFFD) { e[D[98][j]] = 25088 + j; d[25088 + j] = D[98][j];} +D[99] = "��������������cc������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[99].length; ++j) if(D[99][j].charCodeAt(0) !== 0xFFFD) { e[D[99][j]] = 25344 + j; d[25344 + j] = D[99][j];} +D[100] = "��������������dd������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[100].length; ++j) if(D[100][j].charCodeAt(0) !== 0xFFFD) { e[D[100][j]] = 25600 + j; d[25600 + j] = D[100][j];} +D[101] = "��������������ee������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[101].length; ++j) if(D[101][j].charCodeAt(0) !== 0xFFFD) { e[D[101][j]] = 25856 + j; d[25856 + j] = D[101][j];} +D[102] = "��������������ff������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[102].length; ++j) if(D[102][j].charCodeAt(0) !== 0xFFFD) { e[D[102][j]] = 26112 + j; d[26112 + j] = D[102][j];} +D[103] = "��������������gg������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[103].length; ++j) if(D[103][j].charCodeAt(0) !== 0xFFFD) { e[D[103][j]] = 26368 + j; d[26368 + j] = D[103][j];} +D[104] = "��������������hh������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[104].length; ++j) if(D[104][j].charCodeAt(0) !== 0xFFFD) { e[D[104][j]] = 26624 + j; d[26624 + j] = D[104][j];} +D[105] = "��������������ii������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[105].length; ++j) if(D[105][j].charCodeAt(0) !== 0xFFFD) { e[D[105][j]] = 26880 + j; d[26880 + j] = D[105][j];} +D[106] = "��������������jj������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[106].length; ++j) if(D[106][j].charCodeAt(0) !== 0xFFFD) { e[D[106][j]] = 27136 + j; d[27136 + j] = D[106][j];} +D[107] = "��������������kk������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[107].length; ++j) if(D[107][j].charCodeAt(0) !== 0xFFFD) { e[D[107][j]] = 27392 + j; d[27392 + j] = D[107][j];} +D[108] = "��������������ll������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[108].length; ++j) if(D[108][j].charCodeAt(0) !== 0xFFFD) { e[D[108][j]] = 27648 + j; d[27648 + j] = D[108][j];} +D[109] = "��������������mm������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[109].length; ++j) if(D[109][j].charCodeAt(0) !== 0xFFFD) { e[D[109][j]] = 27904 + j; d[27904 + j] = D[109][j];} +D[110] = "��������������nn������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[110].length; ++j) if(D[110][j].charCodeAt(0) !== 0xFFFD) { e[D[110][j]] = 28160 + j; d[28160 + j] = D[110][j];} +D[111] = "��������������oo������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[111].length; ++j) if(D[111][j].charCodeAt(0) !== 0xFFFD) { e[D[111][j]] = 28416 + j; d[28416 + j] = D[111][j];} +D[112] = "��������������pp������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[112].length; ++j) if(D[112][j].charCodeAt(0) !== 0xFFFD) { e[D[112][j]] = 28672 + j; d[28672 + j] = D[112][j];} +D[113] = "��������������qq������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[113].length; ++j) if(D[113][j].charCodeAt(0) !== 0xFFFD) { e[D[113][j]] = 28928 + j; d[28928 + j] = D[113][j];} +D[114] = "��������������rr������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[114].length; ++j) if(D[114][j].charCodeAt(0) !== 0xFFFD) { e[D[114][j]] = 29184 + j; d[29184 + j] = D[114][j];} +D[115] = "��������������ss������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[115].length; ++j) if(D[115][j].charCodeAt(0) !== 0xFFFD) { e[D[115][j]] = 29440 + j; d[29440 + j] = D[115][j];} +D[116] = "��������������tt������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[116].length; ++j) if(D[116][j].charCodeAt(0) !== 0xFFFD) { e[D[116][j]] = 29696 + j; d[29696 + j] = D[116][j];} +D[117] = "��������������uu������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[117].length; ++j) if(D[117][j].charCodeAt(0) !== 0xFFFD) { e[D[117][j]] = 29952 + j; d[29952 + j] = D[117][j];} +D[118] = "��������������vv������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[118].length; ++j) if(D[118][j].charCodeAt(0) !== 0xFFFD) { e[D[118][j]] = 30208 + j; d[30208 + j] = D[118][j];} +D[119] = "��������������ww������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[119].length; ++j) if(D[119][j].charCodeAt(0) !== 0xFFFD) { e[D[119][j]] = 30464 + j; d[30464 + j] = D[119][j];} +D[120] = "��������������xx������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[120].length; ++j) if(D[120][j].charCodeAt(0) !== 0xFFFD) { e[D[120][j]] = 30720 + j; d[30720 + j] = D[120][j];} +D[121] = "��������������yy������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[121].length; ++j) if(D[121][j].charCodeAt(0) !== 0xFFFD) { e[D[121][j]] = 30976 + j; d[30976 + j] = D[121][j];} +D[122] = "��������������zz������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[122].length; ++j) if(D[122][j].charCodeAt(0) !== 0xFFFD) { e[D[122][j]] = 31232 + j; d[31232 + j] = D[122][j];} +D[123] = "��������������{{������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[123].length; ++j) if(D[123][j].charCodeAt(0) !== 0xFFFD) { e[D[123][j]] = 31488 + j; d[31488 + j] = D[123][j];} +D[124] = "��������������||������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[124].length; ++j) if(D[124][j].charCodeAt(0) !== 0xFFFD) { e[D[124][j]] = 31744 + j; d[31744 + j] = D[124][j];} +D[125] = "��������������}}������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[125].length; ++j) if(D[125][j].charCodeAt(0) !== 0xFFFD) { e[D[125][j]] = 32000 + j; d[32000 + j] = D[125][j];} +D[126] = "��������������~~������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[126].length; ++j) if(D[126][j].charCodeAt(0) !== 0xFFFD) { e[D[126][j]] = 32256 + j; d[32256 + j] = D[126][j];} +D[127] = "��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[127].length; ++j) if(D[127][j].charCodeAt(0) !== 0xFFFD) { e[D[127][j]] = 32512 + j; d[32512 + j] = D[127][j];} +D[128] = "��������������€€������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[128].length; ++j) if(D[128][j].charCodeAt(0) !== 0xFFFD) { e[D[128][j]] = 32768 + j; d[32768 + j] = D[128][j];} +D[160] = "��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[160].length; ++j) if(D[160][j].charCodeAt(0) !== 0xFFFD) { e[D[160][j]] = 40960 + j; d[40960 + j] = D[160][j];} +D[161] = "��������������。。������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];} +D[162] = "��������������「「������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[162].length; ++j) if(D[162][j].charCodeAt(0) !== 0xFFFD) { e[D[162][j]] = 41472 + j; d[41472 + j] = D[162][j];} +D[163] = "��������������」」������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[163].length; ++j) if(D[163][j].charCodeAt(0) !== 0xFFFD) { e[D[163][j]] = 41728 + j; d[41728 + j] = D[163][j];} +D[164] = "��������������、、������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[164].length; ++j) if(D[164][j].charCodeAt(0) !== 0xFFFD) { e[D[164][j]] = 41984 + j; d[41984 + j] = D[164][j];} +D[165] = "��������������・・������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[165].length; ++j) if(D[165][j].charCodeAt(0) !== 0xFFFD) { e[D[165][j]] = 42240 + j; d[42240 + j] = D[165][j];} +D[166] = "��������������ヲヲ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];} +D[167] = "��������������ァァ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];} +D[168] = "��������������ィィ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[168].length; ++j) if(D[168][j].charCodeAt(0) !== 0xFFFD) { e[D[168][j]] = 43008 + j; d[43008 + j] = D[168][j];} +D[169] = "��������������ゥゥ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[169].length; ++j) if(D[169][j].charCodeAt(0) !== 0xFFFD) { e[D[169][j]] = 43264 + j; d[43264 + j] = D[169][j];} +D[170] = "��������������ェェ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];} +D[171] = "��������������ォォ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[171].length; ++j) if(D[171][j].charCodeAt(0) !== 0xFFFD) { e[D[171][j]] = 43776 + j; d[43776 + j] = D[171][j];} +D[172] = "��������������ャャ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[172].length; ++j) if(D[172][j].charCodeAt(0) !== 0xFFFD) { e[D[172][j]] = 44032 + j; d[44032 + j] = D[172][j];} +D[173] = "��������������ュュ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[173].length; ++j) if(D[173][j].charCodeAt(0) !== 0xFFFD) { e[D[173][j]] = 44288 + j; d[44288 + j] = D[173][j];} +D[174] = "��������������ョョ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[174].length; ++j) if(D[174][j].charCodeAt(0) !== 0xFFFD) { e[D[174][j]] = 44544 + j; d[44544 + j] = D[174][j];} +D[175] = "��������������ッッ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[175].length; ++j) if(D[175][j].charCodeAt(0) !== 0xFFFD) { e[D[175][j]] = 44800 + j; d[44800 + j] = D[175][j];} +D[176] = "��������������ーー������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[176].length; ++j) if(D[176][j].charCodeAt(0) !== 0xFFFD) { e[D[176][j]] = 45056 + j; d[45056 + j] = D[176][j];} +D[177] = "��������������アア������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[177].length; ++j) if(D[177][j].charCodeAt(0) !== 0xFFFD) { e[D[177][j]] = 45312 + j; d[45312 + j] = D[177][j];} +D[178] = "��������������イイ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[178].length; ++j) if(D[178][j].charCodeAt(0) !== 0xFFFD) { e[D[178][j]] = 45568 + j; d[45568 + j] = D[178][j];} +D[179] = "��������������ウウ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[179].length; ++j) if(D[179][j].charCodeAt(0) !== 0xFFFD) { e[D[179][j]] = 45824 + j; d[45824 + j] = D[179][j];} +D[180] = "��������������エエ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];} +D[181] = "��������������オオ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];} +D[182] = "��������������カカ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[182].length; ++j) if(D[182][j].charCodeAt(0) !== 0xFFFD) { e[D[182][j]] = 46592 + j; d[46592 + j] = D[182][j];} +D[183] = "��������������キキ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[183].length; ++j) if(D[183][j].charCodeAt(0) !== 0xFFFD) { e[D[183][j]] = 46848 + j; d[46848 + j] = D[183][j];} +D[184] = "��������������クク������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[184].length; ++j) if(D[184][j].charCodeAt(0) !== 0xFFFD) { e[D[184][j]] = 47104 + j; d[47104 + j] = D[184][j];} +D[185] = "��������������ケケ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[185].length; ++j) if(D[185][j].charCodeAt(0) !== 0xFFFD) { e[D[185][j]] = 47360 + j; d[47360 + j] = D[185][j];} +D[186] = "��������������ココ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];} +D[187] = "��������������ササ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[187].length; ++j) if(D[187][j].charCodeAt(0) !== 0xFFFD) { e[D[187][j]] = 47872 + j; d[47872 + j] = D[187][j];} +D[188] = "��������������シシ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[188].length; ++j) if(D[188][j].charCodeAt(0) !== 0xFFFD) { e[D[188][j]] = 48128 + j; d[48128 + j] = D[188][j];} +D[189] = "��������������スス������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[189].length; ++j) if(D[189][j].charCodeAt(0) !== 0xFFFD) { e[D[189][j]] = 48384 + j; d[48384 + j] = D[189][j];} +D[190] = "��������������セセ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[190].length; ++j) if(D[190][j].charCodeAt(0) !== 0xFFFD) { e[D[190][j]] = 48640 + j; d[48640 + j] = D[190][j];} +D[191] = "��������������ソソ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];} +D[192] = "��������������タタ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];} +D[193] = "��������������チチ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[193].length; ++j) if(D[193][j].charCodeAt(0) !== 0xFFFD) { e[D[193][j]] = 49408 + j; d[49408 + j] = D[193][j];} +D[194] = "��������������ツツ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[194].length; ++j) if(D[194][j].charCodeAt(0) !== 0xFFFD) { e[D[194][j]] = 49664 + j; d[49664 + j] = D[194][j];} +D[195] = "��������������テテ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[195].length; ++j) if(D[195][j].charCodeAt(0) !== 0xFFFD) { e[D[195][j]] = 49920 + j; d[49920 + j] = D[195][j];} +D[196] = "��������������トト������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[196].length; ++j) if(D[196][j].charCodeAt(0) !== 0xFFFD) { e[D[196][j]] = 50176 + j; d[50176 + j] = D[196][j];} +D[197] = "��������������ナナ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[197].length; ++j) if(D[197][j].charCodeAt(0) !== 0xFFFD) { e[D[197][j]] = 50432 + j; d[50432 + j] = D[197][j];} +D[198] = "��������������ニニ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[198].length; ++j) if(D[198][j].charCodeAt(0) !== 0xFFFD) { e[D[198][j]] = 50688 + j; d[50688 + j] = D[198][j];} +D[199] = "��������������ヌヌ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[199].length; ++j) if(D[199][j].charCodeAt(0) !== 0xFFFD) { e[D[199][j]] = 50944 + j; d[50944 + j] = D[199][j];} +D[200] = "��������������ネネ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[200].length; ++j) if(D[200][j].charCodeAt(0) !== 0xFFFD) { e[D[200][j]] = 51200 + j; d[51200 + j] = D[200][j];} +D[201] = "��������������ノノ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[201].length; ++j) if(D[201][j].charCodeAt(0) !== 0xFFFD) { e[D[201][j]] = 51456 + j; d[51456 + j] = D[201][j];} +D[202] = "��������������ハハ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[202].length; ++j) if(D[202][j].charCodeAt(0) !== 0xFFFD) { e[D[202][j]] = 51712 + j; d[51712 + j] = D[202][j];} +D[203] = "��������������ヒヒ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[203].length; ++j) if(D[203][j].charCodeAt(0) !== 0xFFFD) { e[D[203][j]] = 51968 + j; d[51968 + j] = D[203][j];} +D[204] = "��������������フフ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[204].length; ++j) if(D[204][j].charCodeAt(0) !== 0xFFFD) { e[D[204][j]] = 52224 + j; d[52224 + j] = D[204][j];} +D[205] = "��������������ヘヘ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[205].length; ++j) if(D[205][j].charCodeAt(0) !== 0xFFFD) { e[D[205][j]] = 52480 + j; d[52480 + j] = D[205][j];} +D[206] = "��������������ホホ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[206].length; ++j) if(D[206][j].charCodeAt(0) !== 0xFFFD) { e[D[206][j]] = 52736 + j; d[52736 + j] = D[206][j];} +D[207] = "��������������ママ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[207].length; ++j) if(D[207][j].charCodeAt(0) !== 0xFFFD) { e[D[207][j]] = 52992 + j; d[52992 + j] = D[207][j];} +D[208] = "��������������ミミ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[208].length; ++j) if(D[208][j].charCodeAt(0) !== 0xFFFD) { e[D[208][j]] = 53248 + j; d[53248 + j] = D[208][j];} +D[209] = "��������������ムム������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[209].length; ++j) if(D[209][j].charCodeAt(0) !== 0xFFFD) { e[D[209][j]] = 53504 + j; d[53504 + j] = D[209][j];} +D[210] = "��������������メメ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[210].length; ++j) if(D[210][j].charCodeAt(0) !== 0xFFFD) { e[D[210][j]] = 53760 + j; d[53760 + j] = D[210][j];} +D[211] = "��������������モモ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[211].length; ++j) if(D[211][j].charCodeAt(0) !== 0xFFFD) { e[D[211][j]] = 54016 + j; d[54016 + j] = D[211][j];} +D[212] = "��������������ヤヤ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[212].length; ++j) if(D[212][j].charCodeAt(0) !== 0xFFFD) { e[D[212][j]] = 54272 + j; d[54272 + j] = D[212][j];} +D[213] = "��������������ユユ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[213].length; ++j) if(D[213][j].charCodeAt(0) !== 0xFFFD) { e[D[213][j]] = 54528 + j; d[54528 + j] = D[213][j];} +D[214] = "��������������ヨヨ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[214].length; ++j) if(D[214][j].charCodeAt(0) !== 0xFFFD) { e[D[214][j]] = 54784 + j; d[54784 + j] = D[214][j];} +D[215] = "��������������ララ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[215].length; ++j) if(D[215][j].charCodeAt(0) !== 0xFFFD) { e[D[215][j]] = 55040 + j; d[55040 + j] = D[215][j];} +D[216] = "��������������リリ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[216].length; ++j) if(D[216][j].charCodeAt(0) !== 0xFFFD) { e[D[216][j]] = 55296 + j; d[55296 + j] = D[216][j];} +D[217] = "��������������ルル������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[217].length; ++j) if(D[217][j].charCodeAt(0) !== 0xFFFD) { e[D[217][j]] = 55552 + j; d[55552 + j] = D[217][j];} +D[218] = "��������������レレ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[218].length; ++j) if(D[218][j].charCodeAt(0) !== 0xFFFD) { e[D[218][j]] = 55808 + j; d[55808 + j] = D[218][j];} +D[219] = "��������������ロロ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];} +D[220] = "��������������ワワ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];} +D[221] = "��������������ンン������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[221].length; ++j) if(D[221][j].charCodeAt(0) !== 0xFFFD) { e[D[221][j]] = 56576 + j; d[56576 + j] = D[221][j];} +D[222] = "��������������゙゙������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[222].length; ++j) if(D[222][j].charCodeAt(0) !== 0xFFFD) { e[D[222][j]] = 56832 + j; d[56832 + j] = D[222][j];} +D[223] = "��������������゚゚������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];} +D[253] = "��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[253].length; ++j) if(D[253][j].charCodeAt(0) !== 0xFFFD) { e[D[253][j]] = 64768 + j; d[64768 + j] = D[253][j];} +D[254] = "��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[254].length; ++j) if(D[254][j].charCodeAt(0) !== 0xFFFD) { e[D[254][j]] = 65024 + j; d[65024 + j] = D[254][j];} +D[255] = "��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[255].length; ++j) if(D[255][j].charCodeAt(0) !== 0xFFFD) { e[D[255][j]] = 65280 + j; d[65280 + j] = D[255][j];} +return {"enc": e, "dec": d }; })(); diff --git a/node_modules/codepage/bits/50225.js b/node_modules/codepage/bits/50225.js new file mode 100644 index 000000000..fbfae73f1 --- /dev/null +++ b/node_modules/codepage/bits/50225.js @@ -0,0 +1,259 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[50225] = (function(){ var d = [], e = {}, D = [], j; +D[0] = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u0000\u0000\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~��������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];} +D[1] = "��������������\u0001\u0001������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[1].length; ++j) if(D[1][j].charCodeAt(0) !== 0xFFFD) { e[D[1][j]] = 256 + j; d[256 + j] = D[1][j];} +D[2] = "��������������\u0002\u0002������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[2].length; ++j) if(D[2][j].charCodeAt(0) !== 0xFFFD) { e[D[2][j]] = 512 + j; d[512 + j] = D[2][j];} +D[3] = "��������������\u0003\u0003������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[3].length; ++j) if(D[3][j].charCodeAt(0) !== 0xFFFD) { e[D[3][j]] = 768 + j; d[768 + j] = D[3][j];} +D[4] = "��������������\u0004\u0004������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[4].length; ++j) if(D[4][j].charCodeAt(0) !== 0xFFFD) { e[D[4][j]] = 1024 + j; d[1024 + j] = D[4][j];} +D[5] = "��������������\u0005\u0005������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[5].length; ++j) if(D[5][j].charCodeAt(0) !== 0xFFFD) { e[D[5][j]] = 1280 + j; d[1280 + j] = D[5][j];} +D[6] = "��������������\u0006\u0006������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[6].length; ++j) if(D[6][j].charCodeAt(0) !== 0xFFFD) { e[D[6][j]] = 1536 + j; d[1536 + j] = D[6][j];} +D[7] = "��������������\u0007\u0007������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[7].length; ++j) if(D[7][j].charCodeAt(0) !== 0xFFFD) { e[D[7][j]] = 1792 + j; d[1792 + j] = D[7][j];} +D[8] = "��������������\b\b������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[8].length; ++j) if(D[8][j].charCodeAt(0) !== 0xFFFD) { e[D[8][j]] = 2048 + j; d[2048 + j] = D[8][j];} +D[9] = "��������������\t\t������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[9].length; ++j) if(D[9][j].charCodeAt(0) !== 0xFFFD) { e[D[9][j]] = 2304 + j; d[2304 + j] = D[9][j];} +D[10] = "��������������\n\n������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[10].length; ++j) if(D[10][j].charCodeAt(0) !== 0xFFFD) { e[D[10][j]] = 2560 + j; d[2560 + j] = D[10][j];} +D[11] = "��������������\u000b\u000b������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[11].length; ++j) if(D[11][j].charCodeAt(0) !== 0xFFFD) { e[D[11][j]] = 2816 + j; d[2816 + j] = D[11][j];} +D[12] = "��������������\f\f������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[12].length; ++j) if(D[12][j].charCodeAt(0) !== 0xFFFD) { e[D[12][j]] = 3072 + j; d[3072 + j] = D[12][j];} +D[13] = "��������������\r\r������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[13].length; ++j) if(D[13][j].charCodeAt(0) !== 0xFFFD) { e[D[13][j]] = 3328 + j; d[3328 + j] = D[13][j];} +D[14] = "���������\t\n���\r\r���������������� �������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[14].length; ++j) if(D[14][j].charCodeAt(0) !== 0xFFFD) { e[D[14][j]] = 3584 + j; d[3584 + j] = D[14][j];} +D[15] = "�\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\r\r\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~��������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[15].length; ++j) if(D[15][j].charCodeAt(0) !== 0xFFFD) { e[D[15][j]] = 3840 + j; d[3840 + j] = D[15][j];} +D[16] = "��������������\u0010\u0010������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[16].length; ++j) if(D[16][j].charCodeAt(0) !== 0xFFFD) { e[D[16][j]] = 4096 + j; d[4096 + j] = D[16][j];} +D[17] = "��������������\u0011\u0011������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[17].length; ++j) if(D[17][j].charCodeAt(0) !== 0xFFFD) { e[D[17][j]] = 4352 + j; d[4352 + j] = D[17][j];} +D[18] = "��������������\u0012\u0012������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[18].length; ++j) if(D[18][j].charCodeAt(0) !== 0xFFFD) { e[D[18][j]] = 4608 + j; d[4608 + j] = D[18][j];} +D[19] = "��������������\u0013\u0013������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[19].length; ++j) if(D[19][j].charCodeAt(0) !== 0xFFFD) { e[D[19][j]] = 4864 + j; d[4864 + j] = D[19][j];} +D[20] = "��������������\u0014\u0014������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[20].length; ++j) if(D[20][j].charCodeAt(0) !== 0xFFFD) { e[D[20][j]] = 5120 + j; d[5120 + j] = D[20][j];} +D[21] = "��������������\u0015\u0015������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[21].length; ++j) if(D[21][j].charCodeAt(0) !== 0xFFFD) { e[D[21][j]] = 5376 + j; d[5376 + j] = D[21][j];} +D[22] = "��������������\u0016\u0016������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[22].length; ++j) if(D[22][j].charCodeAt(0) !== 0xFFFD) { e[D[22][j]] = 5632 + j; d[5632 + j] = D[22][j];} +D[23] = "��������������\u0017\u0017������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[23].length; ++j) if(D[23][j].charCodeAt(0) !== 0xFFFD) { e[D[23][j]] = 5888 + j; d[5888 + j] = D[23][j];} +D[24] = "��������������\u0018\u0018������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[24].length; ++j) if(D[24][j].charCodeAt(0) !== 0xFFFD) { e[D[24][j]] = 6144 + j; d[6144 + j] = D[24][j];} +D[25] = "��������������\u0019\u0019������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[25].length; ++j) if(D[25][j].charCodeAt(0) !== 0xFFFD) { e[D[25][j]] = 6400 + j; d[6400 + j] = D[25][j];} +D[26] = "��������������\u001a\u001a������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[26].length; ++j) if(D[26][j].charCodeAt(0) !== 0xFFFD) { e[D[26][j]] = 6656 + j; d[6656 + j] = D[26][j];} +D[27] = "��������������\u001b\u001b������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[27].length; ++j) if(D[27][j].charCodeAt(0) !== 0xFFFD) { e[D[27][j]] = 6912 + j; d[6912 + j] = D[27][j];} +D[28] = "��������������\u001c\u001c������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[28].length; ++j) if(D[28][j].charCodeAt(0) !== 0xFFFD) { e[D[28][j]] = 7168 + j; d[7168 + j] = D[28][j];} +D[29] = "��������������\u001d\u001d������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[29].length; ++j) if(D[29][j].charCodeAt(0) !== 0xFFFD) { e[D[29][j]] = 7424 + j; d[7424 + j] = D[29][j];} +D[30] = "��������������\u001e\u001e������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[30].length; ++j) if(D[30][j].charCodeAt(0) !== 0xFFFD) { e[D[30][j]] = 7680 + j; d[7680 + j] = D[30][j];} +D[31] = "��������������\u001f\u001f������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[31].length; ++j) if(D[31][j].charCodeAt(0) !== 0xFFFD) { e[D[31][j]] = 7936 + j; d[7936 + j] = D[31][j];} +D[32] = "�������������� ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[32].length; ++j) if(D[32][j].charCodeAt(0) !== 0xFFFD) { e[D[32][j]] = 8192 + j; d[8192 + j] = D[32][j];} +D[33] = "��������������!!������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[33].length; ++j) if(D[33][j].charCodeAt(0) !== 0xFFFD) { e[D[33][j]] = 8448 + j; d[8448 + j] = D[33][j];} +D[34] = "��������������\"\"������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[34].length; ++j) if(D[34][j].charCodeAt(0) !== 0xFFFD) { e[D[34][j]] = 8704 + j; d[8704 + j] = D[34][j];} +D[35] = "��������������##������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[35].length; ++j) if(D[35][j].charCodeAt(0) !== 0xFFFD) { e[D[35][j]] = 8960 + j; d[8960 + j] = D[35][j];} +D[36] = "��������������$$������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[36].length; ++j) if(D[36][j].charCodeAt(0) !== 0xFFFD) { e[D[36][j]] = 9216 + j; d[9216 + j] = D[36][j];} +D[37] = "��������������%%������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[37].length; ++j) if(D[37][j].charCodeAt(0) !== 0xFFFD) { e[D[37][j]] = 9472 + j; d[9472 + j] = D[37][j];} +D[38] = "��������������&&������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[38].length; ++j) if(D[38][j].charCodeAt(0) !== 0xFFFD) { e[D[38][j]] = 9728 + j; d[9728 + j] = D[38][j];} +D[39] = "��������������''������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[39].length; ++j) if(D[39][j].charCodeAt(0) !== 0xFFFD) { e[D[39][j]] = 9984 + j; d[9984 + j] = D[39][j];} +D[40] = "��������������((������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[40].length; ++j) if(D[40][j].charCodeAt(0) !== 0xFFFD) { e[D[40][j]] = 10240 + j; d[10240 + j] = D[40][j];} +D[41] = "��������������))������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[41].length; ++j) if(D[41][j].charCodeAt(0) !== 0xFFFD) { e[D[41][j]] = 10496 + j; d[10496 + j] = D[41][j];} +D[42] = "��������������**������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[42].length; ++j) if(D[42][j].charCodeAt(0) !== 0xFFFD) { e[D[42][j]] = 10752 + j; d[10752 + j] = D[42][j];} +D[43] = "��������������++������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[43].length; ++j) if(D[43][j].charCodeAt(0) !== 0xFFFD) { e[D[43][j]] = 11008 + j; d[11008 + j] = D[43][j];} +D[44] = "��������������,,������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[44].length; ++j) if(D[44][j].charCodeAt(0) !== 0xFFFD) { e[D[44][j]] = 11264 + j; d[11264 + j] = D[44][j];} +D[45] = "��������������--������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[45].length; ++j) if(D[45][j].charCodeAt(0) !== 0xFFFD) { e[D[45][j]] = 11520 + j; d[11520 + j] = D[45][j];} +D[46] = "��������������..������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[46].length; ++j) if(D[46][j].charCodeAt(0) !== 0xFFFD) { e[D[46][j]] = 11776 + j; d[11776 + j] = D[46][j];} +D[47] = "��������������//������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[47].length; ++j) if(D[47][j].charCodeAt(0) !== 0xFFFD) { e[D[47][j]] = 12032 + j; d[12032 + j] = D[47][j];} +D[48] = "��������������00������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[48].length; ++j) if(D[48][j].charCodeAt(0) !== 0xFFFD) { e[D[48][j]] = 12288 + j; d[12288 + j] = D[48][j];} +D[49] = "��������������11������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[49].length; ++j) if(D[49][j].charCodeAt(0) !== 0xFFFD) { e[D[49][j]] = 12544 + j; d[12544 + j] = D[49][j];} +D[50] = "��������������22������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[50].length; ++j) if(D[50][j].charCodeAt(0) !== 0xFFFD) { e[D[50][j]] = 12800 + j; d[12800 + j] = D[50][j];} +D[51] = "��������������33������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[51].length; ++j) if(D[51][j].charCodeAt(0) !== 0xFFFD) { e[D[51][j]] = 13056 + j; d[13056 + j] = D[51][j];} +D[52] = "��������������44������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[52].length; ++j) if(D[52][j].charCodeAt(0) !== 0xFFFD) { e[D[52][j]] = 13312 + j; d[13312 + j] = D[52][j];} +D[53] = "��������������55������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[53].length; ++j) if(D[53][j].charCodeAt(0) !== 0xFFFD) { e[D[53][j]] = 13568 + j; d[13568 + j] = D[53][j];} +D[54] = "��������������66������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[54].length; ++j) if(D[54][j].charCodeAt(0) !== 0xFFFD) { e[D[54][j]] = 13824 + j; d[13824 + j] = D[54][j];} +D[55] = "��������������77������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[55].length; ++j) if(D[55][j].charCodeAt(0) !== 0xFFFD) { e[D[55][j]] = 14080 + j; d[14080 + j] = D[55][j];} +D[56] = "��������������88������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[56].length; ++j) if(D[56][j].charCodeAt(0) !== 0xFFFD) { e[D[56][j]] = 14336 + j; d[14336 + j] = D[56][j];} +D[57] = "��������������99������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[57].length; ++j) if(D[57][j].charCodeAt(0) !== 0xFFFD) { e[D[57][j]] = 14592 + j; d[14592 + j] = D[57][j];} +D[58] = "��������������::������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[58].length; ++j) if(D[58][j].charCodeAt(0) !== 0xFFFD) { e[D[58][j]] = 14848 + j; d[14848 + j] = D[58][j];} +D[59] = "��������������;;������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[59].length; ++j) if(D[59][j].charCodeAt(0) !== 0xFFFD) { e[D[59][j]] = 15104 + j; d[15104 + j] = D[59][j];} +D[60] = "��������������<<������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[60].length; ++j) if(D[60][j].charCodeAt(0) !== 0xFFFD) { e[D[60][j]] = 15360 + j; d[15360 + j] = D[60][j];} +D[61] = "��������������==������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[61].length; ++j) if(D[61][j].charCodeAt(0) !== 0xFFFD) { e[D[61][j]] = 15616 + j; d[15616 + j] = D[61][j];} +D[62] = "��������������>>������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[62].length; ++j) if(D[62][j].charCodeAt(0) !== 0xFFFD) { e[D[62][j]] = 15872 + j; d[15872 + j] = D[62][j];} +D[63] = "��������������??������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[63].length; ++j) if(D[63][j].charCodeAt(0) !== 0xFFFD) { e[D[63][j]] = 16128 + j; d[16128 + j] = D[63][j];} +D[64] = "��������������@@������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[64].length; ++j) if(D[64][j].charCodeAt(0) !== 0xFFFD) { e[D[64][j]] = 16384 + j; d[16384 + j] = D[64][j];} +D[65] = "��������������AA������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[65].length; ++j) if(D[65][j].charCodeAt(0) !== 0xFFFD) { e[D[65][j]] = 16640 + j; d[16640 + j] = D[65][j];} +D[66] = "��������������BB������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[66].length; ++j) if(D[66][j].charCodeAt(0) !== 0xFFFD) { e[D[66][j]] = 16896 + j; d[16896 + j] = D[66][j];} +D[67] = "��������������CC������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[67].length; ++j) if(D[67][j].charCodeAt(0) !== 0xFFFD) { e[D[67][j]] = 17152 + j; d[17152 + j] = D[67][j];} +D[68] = "��������������DD������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[68].length; ++j) if(D[68][j].charCodeAt(0) !== 0xFFFD) { e[D[68][j]] = 17408 + j; d[17408 + j] = D[68][j];} +D[69] = "��������������EE������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[69].length; ++j) if(D[69][j].charCodeAt(0) !== 0xFFFD) { e[D[69][j]] = 17664 + j; d[17664 + j] = D[69][j];} +D[70] = "��������������FF������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[70].length; ++j) if(D[70][j].charCodeAt(0) !== 0xFFFD) { e[D[70][j]] = 17920 + j; d[17920 + j] = D[70][j];} +D[71] = "��������������GG������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[71].length; ++j) if(D[71][j].charCodeAt(0) !== 0xFFFD) { e[D[71][j]] = 18176 + j; d[18176 + j] = D[71][j];} +D[72] = "��������������HH������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[72].length; ++j) if(D[72][j].charCodeAt(0) !== 0xFFFD) { e[D[72][j]] = 18432 + j; d[18432 + j] = D[72][j];} +D[73] = "��������������II������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[73].length; ++j) if(D[73][j].charCodeAt(0) !== 0xFFFD) { e[D[73][j]] = 18688 + j; d[18688 + j] = D[73][j];} +D[74] = "��������������JJ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[74].length; ++j) if(D[74][j].charCodeAt(0) !== 0xFFFD) { e[D[74][j]] = 18944 + j; d[18944 + j] = D[74][j];} +D[75] = "��������������KK������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[75].length; ++j) if(D[75][j].charCodeAt(0) !== 0xFFFD) { e[D[75][j]] = 19200 + j; d[19200 + j] = D[75][j];} +D[76] = "��������������LL������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[76].length; ++j) if(D[76][j].charCodeAt(0) !== 0xFFFD) { e[D[76][j]] = 19456 + j; d[19456 + j] = D[76][j];} +D[77] = "��������������MM������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[77].length; ++j) if(D[77][j].charCodeAt(0) !== 0xFFFD) { e[D[77][j]] = 19712 + j; d[19712 + j] = D[77][j];} +D[78] = "��������������NN������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[78].length; ++j) if(D[78][j].charCodeAt(0) !== 0xFFFD) { e[D[78][j]] = 19968 + j; d[19968 + j] = D[78][j];} +D[79] = "��������������OO������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[79].length; ++j) if(D[79][j].charCodeAt(0) !== 0xFFFD) { e[D[79][j]] = 20224 + j; d[20224 + j] = D[79][j];} +D[80] = "��������������PP������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[80].length; ++j) if(D[80][j].charCodeAt(0) !== 0xFFFD) { e[D[80][j]] = 20480 + j; d[20480 + j] = D[80][j];} +D[81] = "��������������QQ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[81].length; ++j) if(D[81][j].charCodeAt(0) !== 0xFFFD) { e[D[81][j]] = 20736 + j; d[20736 + j] = D[81][j];} +D[82] = "��������������RR������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[82].length; ++j) if(D[82][j].charCodeAt(0) !== 0xFFFD) { e[D[82][j]] = 20992 + j; d[20992 + j] = D[82][j];} +D[83] = "��������������SS������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[83].length; ++j) if(D[83][j].charCodeAt(0) !== 0xFFFD) { e[D[83][j]] = 21248 + j; d[21248 + j] = D[83][j];} +D[84] = "��������������TT������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[84].length; ++j) if(D[84][j].charCodeAt(0) !== 0xFFFD) { e[D[84][j]] = 21504 + j; d[21504 + j] = D[84][j];} +D[85] = "��������������UU������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[85].length; ++j) if(D[85][j].charCodeAt(0) !== 0xFFFD) { e[D[85][j]] = 21760 + j; d[21760 + j] = D[85][j];} +D[86] = "��������������VV������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[86].length; ++j) if(D[86][j].charCodeAt(0) !== 0xFFFD) { e[D[86][j]] = 22016 + j; d[22016 + j] = D[86][j];} +D[87] = "��������������WW������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[87].length; ++j) if(D[87][j].charCodeAt(0) !== 0xFFFD) { e[D[87][j]] = 22272 + j; d[22272 + j] = D[87][j];} +D[88] = "��������������XX������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[88].length; ++j) if(D[88][j].charCodeAt(0) !== 0xFFFD) { e[D[88][j]] = 22528 + j; d[22528 + j] = D[88][j];} +D[89] = "��������������YY������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[89].length; ++j) if(D[89][j].charCodeAt(0) !== 0xFFFD) { e[D[89][j]] = 22784 + j; d[22784 + j] = D[89][j];} +D[90] = "��������������ZZ������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[90].length; ++j) if(D[90][j].charCodeAt(0) !== 0xFFFD) { e[D[90][j]] = 23040 + j; d[23040 + j] = D[90][j];} +D[91] = "��������������[[������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[91].length; ++j) if(D[91][j].charCodeAt(0) !== 0xFFFD) { e[D[91][j]] = 23296 + j; d[23296 + j] = D[91][j];} +D[92] = "��������������\\\\������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[92].length; ++j) if(D[92][j].charCodeAt(0) !== 0xFFFD) { e[D[92][j]] = 23552 + j; d[23552 + j] = D[92][j];} +D[93] = "��������������]]������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[93].length; ++j) if(D[93][j].charCodeAt(0) !== 0xFFFD) { e[D[93][j]] = 23808 + j; d[23808 + j] = D[93][j];} +D[94] = "��������������^^������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[94].length; ++j) if(D[94][j].charCodeAt(0) !== 0xFFFD) { e[D[94][j]] = 24064 + j; d[24064 + j] = D[94][j];} +D[95] = "��������������__������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[95].length; ++j) if(D[95][j].charCodeAt(0) !== 0xFFFD) { e[D[95][j]] = 24320 + j; d[24320 + j] = D[95][j];} +D[96] = "��������������``������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[96].length; ++j) if(D[96][j].charCodeAt(0) !== 0xFFFD) { e[D[96][j]] = 24576 + j; d[24576 + j] = D[96][j];} +D[97] = "��������������aa������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[97].length; ++j) if(D[97][j].charCodeAt(0) !== 0xFFFD) { e[D[97][j]] = 24832 + j; d[24832 + j] = D[97][j];} +D[98] = "��������������bb������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[98].length; ++j) if(D[98][j].charCodeAt(0) !== 0xFFFD) { e[D[98][j]] = 25088 + j; d[25088 + j] = D[98][j];} +D[99] = "��������������cc������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[99].length; ++j) if(D[99][j].charCodeAt(0) !== 0xFFFD) { e[D[99][j]] = 25344 + j; d[25344 + j] = D[99][j];} +D[100] = "��������������dd������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[100].length; ++j) if(D[100][j].charCodeAt(0) !== 0xFFFD) { e[D[100][j]] = 25600 + j; d[25600 + j] = D[100][j];} +D[101] = "��������������ee������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[101].length; ++j) if(D[101][j].charCodeAt(0) !== 0xFFFD) { e[D[101][j]] = 25856 + j; d[25856 + j] = D[101][j];} +D[102] = "��������������ff������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[102].length; ++j) if(D[102][j].charCodeAt(0) !== 0xFFFD) { e[D[102][j]] = 26112 + j; d[26112 + j] = D[102][j];} +D[103] = "��������������gg������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[103].length; ++j) if(D[103][j].charCodeAt(0) !== 0xFFFD) { e[D[103][j]] = 26368 + j; d[26368 + j] = D[103][j];} +D[104] = "��������������hh������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[104].length; ++j) if(D[104][j].charCodeAt(0) !== 0xFFFD) { e[D[104][j]] = 26624 + j; d[26624 + j] = D[104][j];} +D[105] = "��������������ii������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[105].length; ++j) if(D[105][j].charCodeAt(0) !== 0xFFFD) { e[D[105][j]] = 26880 + j; d[26880 + j] = D[105][j];} +D[106] = "��������������jj������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[106].length; ++j) if(D[106][j].charCodeAt(0) !== 0xFFFD) { e[D[106][j]] = 27136 + j; d[27136 + j] = D[106][j];} +D[107] = "��������������kk������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[107].length; ++j) if(D[107][j].charCodeAt(0) !== 0xFFFD) { e[D[107][j]] = 27392 + j; d[27392 + j] = D[107][j];} +D[108] = "��������������ll������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[108].length; ++j) if(D[108][j].charCodeAt(0) !== 0xFFFD) { e[D[108][j]] = 27648 + j; d[27648 + j] = D[108][j];} +D[109] = "��������������mm������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[109].length; ++j) if(D[109][j].charCodeAt(0) !== 0xFFFD) { e[D[109][j]] = 27904 + j; d[27904 + j] = D[109][j];} +D[110] = "��������������nn������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[110].length; ++j) if(D[110][j].charCodeAt(0) !== 0xFFFD) { e[D[110][j]] = 28160 + j; d[28160 + j] = D[110][j];} +D[111] = "��������������oo������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[111].length; ++j) if(D[111][j].charCodeAt(0) !== 0xFFFD) { e[D[111][j]] = 28416 + j; d[28416 + j] = D[111][j];} +D[112] = "��������������pp������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[112].length; ++j) if(D[112][j].charCodeAt(0) !== 0xFFFD) { e[D[112][j]] = 28672 + j; d[28672 + j] = D[112][j];} +D[113] = "��������������qq������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[113].length; ++j) if(D[113][j].charCodeAt(0) !== 0xFFFD) { e[D[113][j]] = 28928 + j; d[28928 + j] = D[113][j];} +D[114] = "��������������rr������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[114].length; ++j) if(D[114][j].charCodeAt(0) !== 0xFFFD) { e[D[114][j]] = 29184 + j; d[29184 + j] = D[114][j];} +D[115] = "��������������ss������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[115].length; ++j) if(D[115][j].charCodeAt(0) !== 0xFFFD) { e[D[115][j]] = 29440 + j; d[29440 + j] = D[115][j];} +D[116] = "��������������tt������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[116].length; ++j) if(D[116][j].charCodeAt(0) !== 0xFFFD) { e[D[116][j]] = 29696 + j; d[29696 + j] = D[116][j];} +D[117] = "��������������uu������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[117].length; ++j) if(D[117][j].charCodeAt(0) !== 0xFFFD) { e[D[117][j]] = 29952 + j; d[29952 + j] = D[117][j];} +D[118] = "��������������vv������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[118].length; ++j) if(D[118][j].charCodeAt(0) !== 0xFFFD) { e[D[118][j]] = 30208 + j; d[30208 + j] = D[118][j];} +D[119] = "��������������ww������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[119].length; ++j) if(D[119][j].charCodeAt(0) !== 0xFFFD) { e[D[119][j]] = 30464 + j; d[30464 + j] = D[119][j];} +D[120] = "��������������xx������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[120].length; ++j) if(D[120][j].charCodeAt(0) !== 0xFFFD) { e[D[120][j]] = 30720 + j; d[30720 + j] = D[120][j];} +D[121] = "��������������yy������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[121].length; ++j) if(D[121][j].charCodeAt(0) !== 0xFFFD) { e[D[121][j]] = 30976 + j; d[30976 + j] = D[121][j];} +D[122] = "��������������zz������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[122].length; ++j) if(D[122][j].charCodeAt(0) !== 0xFFFD) { e[D[122][j]] = 31232 + j; d[31232 + j] = D[122][j];} +D[123] = "��������������{{������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[123].length; ++j) if(D[123][j].charCodeAt(0) !== 0xFFFD) { e[D[123][j]] = 31488 + j; d[31488 + j] = D[123][j];} +D[124] = "��������������||������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[124].length; ++j) if(D[124][j].charCodeAt(0) !== 0xFFFD) { e[D[124][j]] = 31744 + j; d[31744 + j] = D[124][j];} +D[125] = "��������������}}������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[125].length; ++j) if(D[125][j].charCodeAt(0) !== 0xFFFD) { e[D[125][j]] = 32000 + j; d[32000 + j] = D[125][j];} +D[126] = "��������������~~������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[126].length; ++j) if(D[126][j].charCodeAt(0) !== 0xFFFD) { e[D[126][j]] = 32256 + j; d[32256 + j] = D[126][j];} +D[127] = "��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[127].length; ++j) if(D[127][j].charCodeAt(0) !== 0xFFFD) { e[D[127][j]] = 32512 + j; d[32512 + j] = D[127][j];} +return {"enc": e, "dec": d }; })(); diff --git a/node_modules/codepage/bits/50227.js b/node_modules/codepage/bits/50227.js new file mode 100644 index 000000000..1e1d800c3 --- /dev/null +++ b/node_modules/codepage/bits/50227.js @@ -0,0 +1,257 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[50227] = (function(){ var d = [], e = {}, D = [], j; +D[0] = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];} +D[129] = "����������������������������������������������������������������丂丄丅丆丏丒丗丟丠両丣並丩丮丯丱丳丵丷丼乀乁乂乄乆乊乑乕乗乚乛乢乣乤乥乧乨乪乫乬乭乮乯乲乴乵乶乷乸乹乺乻乼乽乿亀亁亂亃亄亅亇亊�亐亖亗亙亜亝亞亣亪亯亰亱亴亶亷亸亹亼亽亾仈仌仏仐仒仚仛仜仠仢仦仧仩仭仮仯仱仴仸仹仺仼仾伀伂伃伄伅伆伇伈伋伌伒伓伔伕伖伜伝伡伣伨伩伬伭伮伱伳伵伷伹伻伾伿佀佁佂佄佅佇佈佉佊佋佌佒佔佖佡佢佦佨佪佫佭佮佱佲併佷佸佹佺佽侀侁侂侅來侇侊侌侎侐侒侓侕侖侘侙侚侜侞侟価侢�".split(""); +for(j = 0; j != D[129].length; ++j) if(D[129][j].charCodeAt(0) !== 0xFFFD) { e[D[129][j]] = 33024 + j; d[33024 + j] = D[129][j];} +D[130] = "����������������������������������������������������������������侤侫侭侰侱侲侳侴侶侷侸侹侺侻侼侽侾俀俁係俆俇俈俉俋俌俍俒俓俔俕俖俙俛俠俢俤俥俧俫俬俰俲俴俵俶俷俹俻俼俽俿倀倁倂倃倄倅倆倇倈倉倊�個倎倐們倓倕倖倗倛倝倞倠倢倣値倧倫倯倰倱倲倳倴倵倶倷倸倹倻倽倿偀偁偂偄偅偆偉偊偋偍偐偑偒偓偔偖偗偘偙偛偝偞偟偠偡偢偣偤偦偧偨偩偪偫偭偮偯偰偱偲偳側偵偸偹偺偼偽傁傂傃傄傆傇傉傊傋傌傎傏傐傑傒傓傔傕傖傗傘備傚傛傜傝傞傟傠傡傢傤傦傪傫傭傮傯傰傱傳傴債傶傷傸傹傼�".split(""); +for(j = 0; j != D[130].length; ++j) if(D[130][j].charCodeAt(0) !== 0xFFFD) { e[D[130][j]] = 33280 + j; d[33280 + j] = D[130][j];} +D[131] = "����������������������������������������������������������������傽傾傿僀僁僂僃僄僅僆僇僈僉僊僋僌働僎僐僑僒僓僔僕僗僘僙僛僜僝僞僟僠僡僢僣僤僥僨僩僪僫僯僰僱僲僴僶僷僸價僺僼僽僾僿儀儁儂儃億儅儈�儉儊儌儍儎儏儐儑儓儔儕儖儗儘儙儚儛儜儝儞償儠儢儣儤儥儦儧儨儩優儫儬儭儮儯儰儱儲儳儴儵儶儷儸儹儺儻儼儽儾兂兇兊兌兎兏児兒兓兗兘兙兛兝兞兟兠兡兣兤兦內兩兪兯兲兺兾兿冃冄円冇冊冋冎冏冐冑冓冔冘冚冝冞冟冡冣冦冧冨冩冪冭冮冴冸冹冺冾冿凁凂凃凅凈凊凍凎凐凒凓凔凕凖凗�".split(""); +for(j = 0; j != D[131].length; ++j) if(D[131][j].charCodeAt(0) !== 0xFFFD) { e[D[131][j]] = 33536 + j; d[33536 + j] = D[131][j];} +D[132] = "����������������������������������������������������������������凘凙凚凜凞凟凢凣凥処凧凨凩凪凬凮凱凲凴凷凾刄刅刉刋刌刏刐刓刔刕刜刞刟刡刢刣別刦刧刪刬刯刱刲刴刵刼刾剄剅剆則剈剉剋剎剏剒剓剕剗剘�剙剚剛剝剟剠剢剣剤剦剨剫剬剭剮剰剱剳剴創剶剷剸剹剺剻剼剾劀劃劄劅劆劇劉劊劋劌劍劎劏劑劒劔劕劖劗劘劙劚劜劤劥劦劧劮劯劰労劵劶劷劸効劺劻劼劽勀勁勂勄勅勆勈勊勌勍勎勏勑勓勔動勗務勚勛勜勝勞勠勡勢勣勥勦勧勨勩勪勫勬勭勮勯勱勲勳勴勵勶勷勸勻勼勽匁匂匃匄匇匉匊匋匌匎�".split(""); +for(j = 0; j != D[132].length; ++j) if(D[132][j].charCodeAt(0) !== 0xFFFD) { e[D[132][j]] = 33792 + j; d[33792 + j] = D[132][j];} +D[133] = "����������������������������������������������������������������匑匒匓匔匘匛匜匞匟匢匤匥匧匨匩匫匬匭匯匰匱匲匳匴匵匶匷匸匼匽區卂卄卆卋卌卍卐協単卙卛卝卥卨卪卬卭卲卶卹卻卼卽卾厀厁厃厇厈厊厎厏�厐厑厒厓厔厖厗厙厛厜厞厠厡厤厧厪厫厬厭厯厰厱厲厳厴厵厷厸厹厺厼厽厾叀參叄叅叆叇収叏叐叒叓叕叚叜叝叞叡叢叧叴叺叾叿吀吂吅吇吋吔吘吙吚吜吢吤吥吪吰吳吶吷吺吽吿呁呂呄呅呇呉呌呍呎呏呑呚呝呞呟呠呡呣呥呧呩呪呫呬呭呮呯呰呴呹呺呾呿咁咃咅咇咈咉咊咍咑咓咗咘咜咞咟咠咡�".split(""); +for(j = 0; j != D[133].length; ++j) if(D[133][j].charCodeAt(0) !== 0xFFFD) { e[D[133][j]] = 34048 + j; d[34048 + j] = D[133][j];} +D[134] = "����������������������������������������������������������������咢咥咮咰咲咵咶咷咹咺咼咾哃哅哊哋哖哘哛哠員哢哣哤哫哬哯哰哱哴哵哶哷哸哹哻哾唀唂唃唄唅唈唊唋唌唍唎唒唓唕唖唗唘唙唚唜唝唞唟唡唥唦�唨唩唫唭唲唴唵唶唸唹唺唻唽啀啂啅啇啈啋啌啍啎問啑啒啓啔啗啘啙啚啛啝啞啟啠啢啣啨啩啫啯啰啱啲啳啴啹啺啽啿喅喆喌喍喎喐喒喓喕喖喗喚喛喞喠喡喢喣喤喥喦喨喩喪喫喬喭單喯喰喲喴営喸喺喼喿嗀嗁嗂嗃嗆嗇嗈嗊嗋嗎嗏嗐嗕嗗嗘嗙嗚嗛嗞嗠嗢嗧嗩嗭嗮嗰嗱嗴嗶嗸嗹嗺嗻嗼嗿嘂嘃嘄嘅�".split(""); +for(j = 0; j != D[134].length; ++j) if(D[134][j].charCodeAt(0) !== 0xFFFD) { e[D[134][j]] = 34304 + j; d[34304 + j] = D[134][j];} +D[135] = "����������������������������������������������������������������嘆嘇嘊嘋嘍嘐嘑嘒嘓嘔嘕嘖嘗嘙嘚嘜嘝嘠嘡嘢嘥嘦嘨嘩嘪嘫嘮嘯嘰嘳嘵嘷嘸嘺嘼嘽嘾噀噁噂噃噄噅噆噇噈噉噊噋噏噐噑噒噓噕噖噚噛噝噞噟噠噡�噣噥噦噧噭噮噯噰噲噳噴噵噷噸噹噺噽噾噿嚀嚁嚂嚃嚄嚇嚈嚉嚊嚋嚌嚍嚐嚑嚒嚔嚕嚖嚗嚘嚙嚚嚛嚜嚝嚞嚟嚠嚡嚢嚤嚥嚦嚧嚨嚩嚪嚫嚬嚭嚮嚰嚱嚲嚳嚴嚵嚶嚸嚹嚺嚻嚽嚾嚿囀囁囂囃囄囅囆囇囈囉囋囌囍囎囏囐囑囒囓囕囖囘囙囜団囥囦囧囨囩囪囬囮囯囲図囶囷囸囻囼圀圁圂圅圇國圌圍圎圏圐圑�".split(""); +for(j = 0; j != D[135].length; ++j) if(D[135][j].charCodeAt(0) !== 0xFFFD) { e[D[135][j]] = 34560 + j; d[34560 + j] = D[135][j];} +D[136] = "����������������������������������������������������������������園圓圔圕圖圗團圙圚圛圝圞圠圡圢圤圥圦圧圫圱圲圴圵圶圷圸圼圽圿坁坃坄坅坆坈坉坋坒坓坔坕坖坘坙坢坣坥坧坬坮坰坱坲坴坵坸坹坺坽坾坿垀�垁垇垈垉垊垍垎垏垐垑垔垕垖垗垘垙垚垜垝垞垟垥垨垪垬垯垰垱垳垵垶垷垹垺垻垼垽垾垿埀埁埄埅埆埇埈埉埊埌埍埐埑埓埖埗埛埜埞埡埢埣埥埦埧埨埩埪埫埬埮埰埱埲埳埵埶執埻埼埾埿堁堃堄堅堈堉堊堌堎堏堐堒堓堔堖堗堘堚堛堜堝堟堢堣堥堦堧堨堩堫堬堭堮堯報堲堳場堶堷堸堹堺堻堼堽�".split(""); +for(j = 0; j != D[136].length; ++j) if(D[136][j].charCodeAt(0) !== 0xFFFD) { e[D[136][j]] = 34816 + j; d[34816 + j] = D[136][j];} +D[137] = "����������������������������������������������������������������堾堿塀塁塂塃塅塆塇塈塉塊塋塎塏塐塒塓塕塖塗塙塚塛塜塝塟塠塡塢塣塤塦塧塨塩塪塭塮塯塰塱塲塳塴塵塶塷塸塹塺塻塼塽塿墂墄墆墇墈墊墋墌�墍墎墏墐墑墔墕墖増墘墛墜墝墠墡墢墣墤墥墦墧墪墫墬墭墮墯墰墱墲墳墴墵墶墷墸墹墺墻墽墾墿壀壂壃壄壆壇壈壉壊壋壌壍壎壏壐壒壓壔壖壗壘壙壚壛壜壝壞壟壠壡壢壣壥壦壧壨壩壪壭壯壱売壴壵壷壸壺壻壼壽壾壿夀夁夃夅夆夈変夊夋夌夎夐夑夒夓夗夘夛夝夞夠夡夢夣夦夨夬夰夲夳夵夶夻�".split(""); +for(j = 0; j != D[137].length; ++j) if(D[137][j].charCodeAt(0) !== 0xFFFD) { e[D[137][j]] = 35072 + j; d[35072 + j] = D[137][j];} +D[138] = "����������������������������������������������������������������夽夾夿奀奃奅奆奊奌奍奐奒奓奙奛奜奝奞奟奡奣奤奦奧奨奩奪奫奬奭奮奯奰奱奲奵奷奺奻奼奾奿妀妅妉妋妌妎妏妐妑妔妕妘妚妛妜妝妟妠妡妢妦�妧妬妭妰妱妳妴妵妶妷妸妺妼妽妿姀姁姂姃姄姅姇姈姉姌姍姎姏姕姖姙姛姞姟姠姡姢姤姦姧姩姪姫姭姮姯姰姱姲姳姴姵姶姷姸姺姼姽姾娀娂娊娋娍娎娏娐娒娔娕娖娗娙娚娛娝娞娡娢娤娦娧娨娪娫娬娭娮娯娰娳娵娷娸娹娺娻娽娾娿婁婂婃婄婅婇婈婋婌婍婎婏婐婑婒婓婔婖婗婘婙婛婜婝婞婟婠�".split(""); +for(j = 0; j != D[138].length; ++j) if(D[138][j].charCodeAt(0) !== 0xFFFD) { e[D[138][j]] = 35328 + j; d[35328 + j] = D[138][j];} +D[139] = "����������������������������������������������������������������婡婣婤婥婦婨婩婫婬婭婮婯婰婱婲婳婸婹婻婼婽婾媀媁媂媃媄媅媆媇媈媉媊媋媌媍媎媏媐媑媓媔媕媖媗媘媙媜媝媞媟媠媡媢媣媤媥媦媧媨媩媫媬�媭媮媯媰媱媴媶媷媹媺媻媼媽媿嫀嫃嫄嫅嫆嫇嫈嫊嫋嫍嫎嫏嫐嫑嫓嫕嫗嫙嫚嫛嫝嫞嫟嫢嫤嫥嫧嫨嫪嫬嫭嫮嫯嫰嫲嫳嫴嫵嫶嫷嫸嫹嫺嫻嫼嫽嫾嫿嬀嬁嬂嬃嬄嬅嬆嬇嬈嬊嬋嬌嬍嬎嬏嬐嬑嬒嬓嬔嬕嬘嬙嬚嬛嬜嬝嬞嬟嬠嬡嬢嬣嬤嬥嬦嬧嬨嬩嬪嬫嬬嬭嬮嬯嬰嬱嬳嬵嬶嬸嬹嬺嬻嬼嬽嬾嬿孁孂孃孄孅孆孇�".split(""); +for(j = 0; j != D[139].length; ++j) if(D[139][j].charCodeAt(0) !== 0xFFFD) { e[D[139][j]] = 35584 + j; d[35584 + j] = D[139][j];} +D[140] = "����������������������������������������������������������������孈孉孊孋孌孍孎孏孒孖孞孠孡孧孨孫孭孮孯孲孴孶孷學孹孻孼孾孿宂宆宊宍宎宐宑宒宔宖実宧宨宩宬宭宮宯宱宲宷宺宻宼寀寁寃寈寉寊寋寍寎寏�寑寔寕寖寗寘寙寚寛寜寠寢寣實寧審寪寫寬寭寯寱寲寳寴寵寶寷寽対尀専尃尅將專尋尌對導尐尒尓尗尙尛尞尟尠尡尣尦尨尩尪尫尭尮尯尰尲尳尵尶尷屃屄屆屇屌屍屒屓屔屖屗屘屚屛屜屝屟屢層屧屨屩屪屫屬屭屰屲屳屴屵屶屷屸屻屼屽屾岀岃岄岅岆岇岉岊岋岎岏岒岓岕岝岞岟岠岡岤岥岦岧岨�".split(""); +for(j = 0; j != D[140].length; ++j) if(D[140][j].charCodeAt(0) !== 0xFFFD) { e[D[140][j]] = 35840 + j; d[35840 + j] = D[140][j];} +D[141] = "����������������������������������������������������������������岪岮岯岰岲岴岶岹岺岻岼岾峀峂峃峅峆峇峈峉峊峌峍峎峏峐峑峓峔峕峖峗峘峚峛峜峝峞峟峠峢峣峧峩峫峬峮峯峱峲峳峴峵島峷峸峹峺峼峽峾峿崀�崁崄崅崈崉崊崋崌崍崏崐崑崒崓崕崗崘崙崚崜崝崟崠崡崢崣崥崨崪崫崬崯崰崱崲崳崵崶崷崸崹崺崻崼崿嵀嵁嵂嵃嵄嵅嵆嵈嵉嵍嵎嵏嵐嵑嵒嵓嵔嵕嵖嵗嵙嵚嵜嵞嵟嵠嵡嵢嵣嵤嵥嵦嵧嵨嵪嵭嵮嵰嵱嵲嵳嵵嵶嵷嵸嵹嵺嵻嵼嵽嵾嵿嶀嶁嶃嶄嶅嶆嶇嶈嶉嶊嶋嶌嶍嶎嶏嶐嶑嶒嶓嶔嶕嶖嶗嶘嶚嶛嶜嶞嶟嶠�".split(""); +for(j = 0; j != D[141].length; ++j) if(D[141][j].charCodeAt(0) !== 0xFFFD) { e[D[141][j]] = 36096 + j; d[36096 + j] = D[141][j];} +D[142] = "����������������������������������������������������������������嶡嶢嶣嶤嶥嶦嶧嶨嶩嶪嶫嶬嶭嶮嶯嶰嶱嶲嶳嶴嶵嶶嶸嶹嶺嶻嶼嶽嶾嶿巀巁巂巃巄巆巇巈巉巊巋巌巎巏巐巑巒巓巔巕巖巗巘巙巚巜巟巠巣巤巪巬巭�巰巵巶巸巹巺巻巼巿帀帄帇帉帊帋帍帎帒帓帗帞帟帠帡帢帣帤帥帨帩帪師帬帯帰帲帳帴帵帶帹帺帾帿幀幁幃幆幇幈幉幊幋幍幎幏幐幑幒幓幖幗幘幙幚幜幝幟幠幣幤幥幦幧幨幩幪幫幬幭幮幯幰幱幵幷幹幾庁庂広庅庈庉庌庍庎庒庘庛庝庡庢庣庤庨庩庪庫庬庮庯庰庱庲庴庺庻庼庽庿廀廁廂廃廄廅�".split(""); +for(j = 0; j != D[142].length; ++j) if(D[142][j].charCodeAt(0) !== 0xFFFD) { e[D[142][j]] = 36352 + j; d[36352 + j] = D[142][j];} +D[143] = "����������������������������������������������������������������廆廇廈廋廌廍廎廏廐廔廕廗廘廙廚廜廝廞廟廠廡廢廣廤廥廦廧廩廫廬廭廮廯廰廱廲廳廵廸廹廻廼廽弅弆弇弉弌弍弎弐弒弔弖弙弚弜弝弞弡弢弣弤�弨弫弬弮弰弲弳弴張弶強弸弻弽弾弿彁彂彃彄彅彆彇彈彉彊彋彌彍彎彏彑彔彙彚彛彜彞彟彠彣彥彧彨彫彮彯彲彴彵彶彸彺彽彾彿徃徆徍徎徏徑従徔徖徚徛徝從徟徠徢徣徤徥徦徧復徫徬徯徰徱徲徳徴徶徸徹徺徻徾徿忀忁忂忇忈忊忋忎忓忔忕忚忛応忞忟忢忣忥忦忨忩忬忯忰忲忳忴忶忷忹忺忼怇�".split(""); +for(j = 0; j != D[143].length; ++j) if(D[143][j].charCodeAt(0) !== 0xFFFD) { e[D[143][j]] = 36608 + j; d[36608 + j] = D[143][j];} +D[144] = "����������������������������������������������������������������怈怉怋怌怐怑怓怗怘怚怞怟怢怣怤怬怭怮怰怱怲怳怴怶怷怸怹怺怽怾恀恄恅恆恇恈恉恊恌恎恏恑恓恔恖恗恘恛恜恞恟恠恡恥恦恮恱恲恴恵恷恾悀�悁悂悅悆悇悈悊悋悎悏悐悑悓悕悗悘悙悜悞悡悢悤悥悧悩悪悮悰悳悵悶悷悹悺悽悾悿惀惁惂惃惄惇惈惉惌惍惎惏惐惒惓惔惖惗惙惛惞惡惢惣惤惥惪惱惲惵惷惸惻惼惽惾惿愂愃愄愅愇愊愋愌愐愑愒愓愔愖愗愘愙愛愜愝愞愡愢愥愨愩愪愬愭愮愯愰愱愲愳愴愵愶愷愸愹愺愻愼愽愾慀慁慂慃慄慅慆�".split(""); +for(j = 0; j != D[144].length; ++j) if(D[144][j].charCodeAt(0) !== 0xFFFD) { e[D[144][j]] = 36864 + j; d[36864 + j] = D[144][j];} +D[145] = "����������������������������������������������������������������慇慉態慍慏慐慒慓慔慖慗慘慙慚慛慜慞慟慠慡慣慤慥慦慩慪慫慬慭慮慯慱慲慳慴慶慸慹慺慻慼慽慾慿憀憁憂憃憄憅憆憇憈憉憊憌憍憏憐憑憒憓憕�憖憗憘憙憚憛憜憞憟憠憡憢憣憤憥憦憪憫憭憮憯憰憱憲憳憴憵憶憸憹憺憻憼憽憿懀懁懃懄懅懆懇應懌懍懎懏懐懓懕懖懗懘懙懚懛懜懝懞懟懠懡懢懣懤懥懧懨懩懪懫懬懭懮懯懰懱懲懳懴懶懷懸懹懺懻懼懽懾戀戁戂戃戄戅戇戉戓戔戙戜戝戞戠戣戦戧戨戩戫戭戯戰戱戲戵戶戸戹戺戻戼扂扄扅扆扊�".split(""); +for(j = 0; j != D[145].length; ++j) if(D[145][j].charCodeAt(0) !== 0xFFFD) { e[D[145][j]] = 37120 + j; d[37120 + j] = D[145][j];} +D[146] = "����������������������������������������������������������������扏扐払扖扗扙扚扜扝扞扟扠扡扢扤扥扨扱扲扴扵扷扸扺扻扽抁抂抃抅抆抇抈抋抌抍抎抏抐抔抙抜抝択抣抦抧抩抪抭抮抯抰抲抳抴抶抷抸抺抾拀拁�拃拋拏拑拕拝拞拠拡拤拪拫拰拲拵拸拹拺拻挀挃挄挅挆挊挋挌挍挏挐挒挓挔挕挗挘挙挜挦挧挩挬挭挮挰挱挳挴挵挶挷挸挻挼挾挿捀捁捄捇捈捊捑捒捓捔捖捗捘捙捚捛捜捝捠捤捥捦捨捪捫捬捯捰捲捳捴捵捸捹捼捽捾捿掁掃掄掅掆掋掍掑掓掔掕掗掙掚掛掜掝掞掟採掤掦掫掯掱掲掵掶掹掻掽掿揀�".split(""); +for(j = 0; j != D[146].length; ++j) if(D[146][j].charCodeAt(0) !== 0xFFFD) { e[D[146][j]] = 37376 + j; d[37376 + j] = D[146][j];} +D[147] = "����������������������������������������������������������������揁揂揃揅揇揈揊揋揌揑揓揔揕揗揘揙揚換揜揝揟揢揤揥揦揧揨揫揬揮揯揰揱揳揵揷揹揺揻揼揾搃搄搆搇搈搉搊損搎搑搒搕搖搗搘搙搚搝搟搢搣搤�搥搧搨搩搫搮搯搰搱搲搳搵搶搷搸搹搻搼搾摀摂摃摉摋摌摍摎摏摐摑摓摕摖摗摙摚摛摜摝摟摠摡摢摣摤摥摦摨摪摫摬摮摯摰摱摲摳摴摵摶摷摻摼摽摾摿撀撁撃撆撈撉撊撋撌撍撎撏撐撓撔撗撘撚撛撜撝撟撠撡撢撣撥撦撧撨撪撫撯撱撲撳撴撶撹撻撽撾撿擁擃擄擆擇擈擉擊擋擌擏擑擓擔擕擖擙據�".split(""); +for(j = 0; j != D[147].length; ++j) if(D[147][j].charCodeAt(0) !== 0xFFFD) { e[D[147][j]] = 37632 + j; d[37632 + j] = D[147][j];} +D[148] = "����������������������������������������������������������������擛擜擝擟擠擡擣擥擧擨擩擪擫擬擭擮擯擰擱擲擳擴擵擶擷擸擹擺擻擼擽擾擿攁攂攃攄攅攆攇攈攊攋攌攍攎攏攐攑攓攔攕攖攗攙攚攛攜攝攞攟攠攡�攢攣攤攦攧攨攩攪攬攭攰攱攲攳攷攺攼攽敀敁敂敃敄敆敇敊敋敍敎敐敒敓敔敗敘敚敜敟敠敡敤敥敧敨敩敪敭敮敯敱敳敵敶數敹敺敻敼敽敾敿斀斁斂斃斄斅斆斈斉斊斍斎斏斒斔斕斖斘斚斝斞斠斢斣斦斨斪斬斮斱斲斳斴斵斶斷斸斺斻斾斿旀旂旇旈旉旊旍旐旑旓旔旕旘旙旚旛旜旝旞旟旡旣旤旪旫�".split(""); +for(j = 0; j != D[148].length; ++j) if(D[148][j].charCodeAt(0) !== 0xFFFD) { e[D[148][j]] = 37888 + j; d[37888 + j] = D[148][j];} +D[149] = "����������������������������������������������������������������旲旳旴旵旸旹旻旼旽旾旿昁昄昅昇昈昉昋昍昐昑昒昖昗昘昚昛昜昞昡昢昣昤昦昩昪昫昬昮昰昲昳昷昸昹昺昻昽昿晀時晄晅晆晇晈晉晊晍晎晐晑晘�晙晛晜晝晞晠晢晣晥晧晩晪晫晬晭晱晲晳晵晸晹晻晼晽晿暀暁暃暅暆暈暉暊暋暍暎暏暐暒暓暔暕暘暙暚暛暜暞暟暠暡暢暣暤暥暦暩暪暫暬暭暯暰暱暲暳暵暶暷暸暺暻暼暽暿曀曁曂曃曄曅曆曇曈曉曊曋曌曍曎曏曐曑曒曓曔曕曖曗曘曚曞曟曠曡曢曣曤曥曧曨曪曫曬曭曮曯曱曵曶書曺曻曽朁朂會�".split(""); +for(j = 0; j != D[149].length; ++j) if(D[149][j].charCodeAt(0) !== 0xFFFD) { e[D[149][j]] = 38144 + j; d[38144 + j] = D[149][j];} +D[150] = "����������������������������������������������������������������朄朅朆朇朌朎朏朑朒朓朖朘朙朚朜朞朠朡朢朣朤朥朧朩朮朰朲朳朶朷朸朹朻朼朾朿杁杄杅杇杊杋杍杒杔杕杗杘杙杚杛杝杢杣杤杦杧杫杬杮東杴杶�杸杹杺杻杽枀枂枃枅枆枈枊枌枍枎枏枑枒枓枔枖枙枛枟枠枡枤枦枩枬枮枱枲枴枹枺枻枼枽枾枿柀柂柅柆柇柈柉柊柋柌柍柎柕柖柗柛柟柡柣柤柦柧柨柪柫柭柮柲柵柶柷柸柹柺査柼柾栁栂栃栄栆栍栐栒栔栕栘栙栚栛栜栞栟栠栢栣栤栥栦栧栨栫栬栭栮栯栰栱栴栵栶栺栻栿桇桋桍桏桒桖桗桘桙桚桛�".split(""); +for(j = 0; j != D[150].length; ++j) if(D[150][j].charCodeAt(0) !== 0xFFFD) { e[D[150][j]] = 38400 + j; d[38400 + j] = D[150][j];} +D[151] = "����������������������������������������������������������������桜桝桞桟桪桬桭桮桯桰桱桲桳桵桸桹桺桻桼桽桾桿梀梂梄梇梈梉梊梋梌梍梎梐梑梒梔梕梖梘梙梚梛梜條梞梟梠梡梣梤梥梩梪梫梬梮梱梲梴梶梷梸�梹梺梻梼梽梾梿棁棃棄棅棆棇棈棊棌棎棏棐棑棓棔棖棗棙棛棜棝棞棟棡棢棤棥棦棧棨棩棪棫棬棭棯棲棳棴棶棷棸棻棽棾棿椀椂椃椄椆椇椈椉椊椌椏椑椓椔椕椖椗椘椙椚椛検椝椞椡椢椣椥椦椧椨椩椪椫椬椮椯椱椲椳椵椶椷椸椺椻椼椾楀楁楃楄楅楆楇楈楉楊楋楌楍楎楏楐楑楒楓楕楖楘楙楛楜楟�".split(""); +for(j = 0; j != D[151].length; ++j) if(D[151][j].charCodeAt(0) !== 0xFFFD) { e[D[151][j]] = 38656 + j; d[38656 + j] = D[151][j];} +D[152] = "����������������������������������������������������������������楡楢楤楥楧楨楩楪楬業楯楰楲楳楴極楶楺楻楽楾楿榁榃榅榊榋榌榎榏榐榑榒榓榖榗榙榚榝榞榟榠榡榢榣榤榥榦榩榪榬榮榯榰榲榳榵榶榸榹榺榼榽�榾榿槀槂槃槄槅槆槇槈槉構槍槏槑槒槓槕槖槗様槙槚槜槝槞槡槢槣槤槥槦槧槨槩槪槫槬槮槯槰槱槳槴槵槶槷槸槹槺槻槼槾樀樁樂樃樄樅樆樇樈樉樋樌樍樎樏樐樑樒樓樔樕樖標樚樛樜樝樞樠樢樣樤樥樦樧権樫樬樭樮樰樲樳樴樶樷樸樹樺樻樼樿橀橁橂橃橅橆橈橉橊橋橌橍橎橏橑橒橓橔橕橖橗橚�".split(""); +for(j = 0; j != D[152].length; ++j) if(D[152][j].charCodeAt(0) !== 0xFFFD) { e[D[152][j]] = 38912 + j; d[38912 + j] = D[152][j];} +D[153] = "����������������������������������������������������������������橜橝橞機橠橢橣橤橦橧橨橩橪橫橬橭橮橯橰橲橳橴橵橶橷橸橺橻橽橾橿檁檂檃檅檆檇檈檉檊檋檌檍檏檒檓檔檕檖檘檙檚檛檜檝檞檟檡檢檣檤檥檦�檧檨檪檭檮檯檰檱檲檳檴檵檶檷檸檹檺檻檼檽檾檿櫀櫁櫂櫃櫄櫅櫆櫇櫈櫉櫊櫋櫌櫍櫎櫏櫐櫑櫒櫓櫔櫕櫖櫗櫘櫙櫚櫛櫜櫝櫞櫟櫠櫡櫢櫣櫤櫥櫦櫧櫨櫩櫪櫫櫬櫭櫮櫯櫰櫱櫲櫳櫴櫵櫶櫷櫸櫹櫺櫻櫼櫽櫾櫿欀欁欂欃欄欅欆欇欈欉權欋欌欍欎欏欐欑欒欓欔欕欖欗欘欙欚欛欜欝欞欟欥欦欨欩欪欫欬欭欮�".split(""); +for(j = 0; j != D[153].length; ++j) if(D[153][j].charCodeAt(0) !== 0xFFFD) { e[D[153][j]] = 39168 + j; d[39168 + j] = D[153][j];} +D[154] = "����������������������������������������������������������������欯欰欱欳欴欵欶欸欻欼欽欿歀歁歂歄歅歈歊歋歍歎歏歐歑歒歓歔歕歖歗歘歚歛歜歝歞歟歠歡歨歩歫歬歭歮歯歰歱歲歳歴歵歶歷歸歺歽歾歿殀殅殈�殌殎殏殐殑殔殕殗殘殙殜殝殞殟殠殢殣殤殥殦殧殨殩殫殬殭殮殯殰殱殲殶殸殹殺殻殼殽殾毀毃毄毆毇毈毉毊毌毎毐毑毘毚毜毝毞毟毠毢毣毤毥毦毧毨毩毬毭毮毰毱毲毴毶毷毸毺毻毼毾毿氀氁氂氃氄氈氉氊氋氌氎氒気氜氝氞氠氣氥氫氬氭氱氳氶氷氹氺氻氼氾氿汃汄汅汈汋汌汍汎汏汑汒汓汖汘�".split(""); +for(j = 0; j != D[154].length; ++j) if(D[154][j].charCodeAt(0) !== 0xFFFD) { e[D[154][j]] = 39424 + j; d[39424 + j] = D[154][j];} +D[155] = "����������������������������������������������������������������汙汚汢汣汥汦汧汫汬汭汮汯汱汳汵汷汸決汻汼汿沀沄沇沊沋沍沎沑沒沕沖沗沘沚沜沝沞沠沢沨沬沯沰沴沵沶沷沺泀況泂泃泆泇泈泋泍泎泏泑泒泘�泙泚泜泝泟泤泦泧泩泬泭泲泴泹泿洀洂洃洅洆洈洉洊洍洏洐洑洓洔洕洖洘洜洝洟洠洡洢洣洤洦洨洩洬洭洯洰洴洶洷洸洺洿浀浂浄浉浌浐浕浖浗浘浛浝浟浡浢浤浥浧浨浫浬浭浰浱浲浳浵浶浹浺浻浽浾浿涀涁涃涄涆涇涊涋涍涏涐涒涖涗涘涙涚涜涢涥涬涭涰涱涳涴涶涷涹涺涻涼涽涾淁淂淃淈淉淊�".split(""); +for(j = 0; j != D[155].length; ++j) if(D[155][j].charCodeAt(0) !== 0xFFFD) { e[D[155][j]] = 39680 + j; d[39680 + j] = D[155][j];} +D[156] = "����������������������������������������������������������������淍淎淏淐淒淓淔淕淗淚淛淜淟淢淣淥淧淨淩淪淭淯淰淲淴淵淶淸淺淽淾淿渀渁渂渃渄渆渇済渉渋渏渒渓渕渘渙減渜渞渟渢渦渧渨渪測渮渰渱渳渵�渶渷渹渻渼渽渾渿湀湁湂湅湆湇湈湉湊湋湌湏湐湑湒湕湗湙湚湜湝湞湠湡湢湣湤湥湦湧湨湩湪湬湭湯湰湱湲湳湴湵湶湷湸湹湺湻湼湽満溁溂溄溇溈溊溋溌溍溎溑溒溓溔溕準溗溙溚溛溝溞溠溡溣溤溦溨溩溫溬溭溮溰溳溵溸溹溼溾溿滀滃滄滅滆滈滉滊滌滍滎滐滒滖滘滙滛滜滝滣滧滪滫滬滭滮滯�".split(""); +for(j = 0; j != D[156].length; ++j) if(D[156][j].charCodeAt(0) !== 0xFFFD) { e[D[156][j]] = 39936 + j; d[39936 + j] = D[156][j];} +D[157] = "����������������������������������������������������������������滰滱滲滳滵滶滷滸滺滻滼滽滾滿漀漁漃漄漅漇漈漊漋漌漍漎漐漑漒漖漗漘漙漚漛漜漝漞漟漡漢漣漥漦漧漨漬漮漰漲漴漵漷漸漹漺漻漼漽漿潀潁潂�潃潄潅潈潉潊潌潎潏潐潑潒潓潔潕潖潗潙潚潛潝潟潠潡潣潤潥潧潨潩潪潫潬潯潰潱潳潵潶潷潹潻潽潾潿澀澁澂澃澅澆澇澊澋澏澐澑澒澓澔澕澖澗澘澙澚澛澝澞澟澠澢澣澤澥澦澨澩澪澫澬澭澮澯澰澱澲澴澵澷澸澺澻澼澽澾澿濁濃濄濅濆濇濈濊濋濌濍濎濏濐濓濔濕濖濗濘濙濚濛濜濝濟濢濣濤濥�".split(""); +for(j = 0; j != D[157].length; ++j) if(D[157][j].charCodeAt(0) !== 0xFFFD) { e[D[157][j]] = 40192 + j; d[40192 + j] = D[157][j];} +D[158] = "����������������������������������������������������������������濦濧濨濩濪濫濬濭濰濱濲濳濴濵濶濷濸濹濺濻濼濽濾濿瀀瀁瀂瀃瀄瀅瀆瀇瀈瀉瀊瀋瀌瀍瀎瀏瀐瀒瀓瀔瀕瀖瀗瀘瀙瀜瀝瀞瀟瀠瀡瀢瀤瀥瀦瀧瀨瀩瀪�瀫瀬瀭瀮瀯瀰瀱瀲瀳瀴瀶瀷瀸瀺瀻瀼瀽瀾瀿灀灁灂灃灄灅灆灇灈灉灊灋灍灎灐灑灒灓灔灕灖灗灘灙灚灛灜灝灟灠灡灢灣灤灥灦灧灨灩灪灮灱灲灳灴灷灹灺灻災炁炂炃炄炆炇炈炋炌炍炏炐炑炓炗炘炚炛炞炟炠炡炢炣炤炥炦炧炨炩炪炰炲炴炵炶為炾炿烄烅烆烇烉烋烌烍烎烏烐烑烒烓烔烕烖烗烚�".split(""); +for(j = 0; j != D[158].length; ++j) if(D[158][j].charCodeAt(0) !== 0xFFFD) { e[D[158][j]] = 40448 + j; d[40448 + j] = D[158][j];} +D[159] = "����������������������������������������������������������������烜烝烞烠烡烢烣烥烪烮烰烱烲烳烴烵烶烸烺烻烼烾烿焀焁焂焃焄焅焆焇焈焋焌焍焎焏焑焒焔焗焛焜焝焞焟焠無焢焣焤焥焧焨焩焪焫焬焭焮焲焳焴�焵焷焸焹焺焻焼焽焾焿煀煁煂煃煄煆煇煈煉煋煍煏煐煑煒煓煔煕煖煗煘煙煚煛煝煟煠煡煢煣煥煩煪煫煬煭煯煰煱煴煵煶煷煹煻煼煾煿熀熁熂熃熅熆熇熈熉熋熌熍熎熐熑熒熓熕熖熗熚熛熜熝熞熡熢熣熤熥熦熧熩熪熫熭熮熯熰熱熲熴熶熷熸熺熻熼熽熾熿燀燁燂燄燅燆燇燈燉燊燋燌燍燏燐燑燒燓�".split(""); +for(j = 0; j != D[159].length; ++j) if(D[159][j].charCodeAt(0) !== 0xFFFD) { e[D[159][j]] = 40704 + j; d[40704 + j] = D[159][j];} +D[160] = "����������������������������������������������������������������燖燗燘燙燚燛燜燝燞營燡燢燣燤燦燨燩燪燫燬燭燯燰燱燲燳燴燵燶燷燸燺燻燼燽燾燿爀爁爂爃爄爅爇爈爉爊爋爌爍爎爏爐爑爒爓爔爕爖爗爘爙爚�爛爜爞爟爠爡爢爣爤爥爦爧爩爫爭爮爯爲爳爴爺爼爾牀牁牂牃牄牅牆牉牊牋牎牏牐牑牓牔牕牗牘牚牜牞牠牣牤牥牨牪牫牬牭牰牱牳牴牶牷牸牻牼牽犂犃犅犆犇犈犉犌犎犐犑犓犔犕犖犗犘犙犚犛犜犝犞犠犡犢犣犤犥犦犧犨犩犪犫犮犱犲犳犵犺犻犼犽犾犿狀狅狆狇狉狊狋狌狏狑狓狔狕狖狘狚狛�".split(""); +for(j = 0; j != D[160].length; ++j) if(D[160][j].charCodeAt(0) !== 0xFFFD) { e[D[160][j]] = 40960 + j; d[40960 + j] = D[160][j];} +D[161] = "����������������������������������������������������������������� 、。·ˉˇ¨〃々—~‖…‘’“”〔〕〈〉《》「」『』〖〗【】±×÷∶∧∨∑∏∪∩∈∷√⊥∥∠⌒⊙∫∮≡≌≈∽∝≠≮≯≤≥∞∵∴♂♀°′″℃$¤¢£‰§№☆★○●◎◇◆□■△▲※→←↑↓〓�".split(""); +for(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];} +D[162] = "�����������������������������������������������������������������ⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹ⒈⒉⒊⒋⒌⒍⒎⒏⒐⒑⒒⒓⒔⒕⒖⒗⒘⒙⒚⒛⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽⑾⑿⒀⒁⒂⒃⒄⒅⒆⒇①②③④⑤⑥⑦⑧⑨⑩㈠㈡㈢㈣㈤㈥㈦㈧㈨㈩ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫ�".split(""); +for(j = 0; j != D[162].length; ++j) if(D[162][j].charCodeAt(0) !== 0xFFFD) { e[D[162][j]] = 41472 + j; d[41472 + j] = D[162][j];} +D[163] = "�����������������������������������������������������������������!"#¥%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|} ̄�".split(""); +for(j = 0; j != D[163].length; ++j) if(D[163][j].charCodeAt(0) !== 0xFFFD) { e[D[163][j]] = 41728 + j; d[41728 + j] = D[163][j];} +D[164] = "�����������������������������������������������������������������ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをん�".split(""); +for(j = 0; j != D[164].length; ++j) if(D[164][j].charCodeAt(0) !== 0xFFFD) { e[D[164][j]] = 41984 + j; d[41984 + j] = D[164][j];} +D[165] = "�����������������������������������������������������������������ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶ�".split(""); +for(j = 0; j != D[165].length; ++j) if(D[165][j].charCodeAt(0) !== 0xFFFD) { e[D[165][j]] = 42240 + j; d[42240 + j] = D[165][j];} +D[166] = "�����������������������������������������������������������������ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩαβγδεζηθικλμνξοπρστυφχψω︵︶︹︺︿﹀︽︾﹁﹂﹃﹄︻︼︷︸︱︳︴�".split(""); +for(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];} +D[167] = "�����������������������������������������������������������������АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдеёжзийклмнопрстуфхцчшщъыьэюя�".split(""); +for(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];} +D[168] = "����������������������������������������������������������������ˊˋ˙–―‥‵℅℉↖↗↘↙∕∟∣≒≦≧⊿═║╒╓╔╕╖╗╘╙╚╛╜╝╞╟╠╡╢╣╤╥╦╧╨╩╪╫╬╭╮╯╰╱╲╳▁▂▃▄▅▆▇�█▉▊▋▌▍▎▏▓▔▕▼▽◢◣◤◥☉⊕〒〝〞āáǎàēéěèīíǐìōóǒòūúǔùǖǘǚǜüêɑńňɡㄅㄆㄇㄈㄉㄊㄋㄌㄍㄎㄏㄐㄑㄒㄓㄔㄕㄖㄗㄘㄙㄚㄛㄜㄝㄞㄟㄠㄡㄢㄣㄤㄥㄦㄧㄨㄩ�".split(""); +for(j = 0; j != D[168].length; ++j) if(D[168][j].charCodeAt(0) !== 0xFFFD) { e[D[168][j]] = 43008 + j; d[43008 + j] = D[168][j];} +D[169] = "����������������������������������������������������������������〡〢〣〤〥〦〧〨〩㊣㎎㎏㎜㎝㎞㎡㏄㏎㏑㏒㏕︰¬¦℡㈱‐ー゛゜ヽヾ〆ゝゞ﹉﹊﹋﹌﹍﹎﹏﹐﹑﹒﹔﹕﹖﹗﹙﹚﹛﹜﹝﹞﹟﹠﹡�﹢﹣﹤﹥﹦﹨﹩﹪﹫〇─━│┃┄┅┆┇┈┉┊┋┌┍┎┏┐┑┒┓└┕┖┗┘┙┚┛├┝┞┟┠┡┢┣┤┥┦┧┨┩┪┫┬┭┮┯┰┱┲┳┴┵┶┷┸┹┺┻┼┽┾┿╀╁╂╃╄╅╆╇╈╉╊╋�".split(""); +for(j = 0; j != D[169].length; ++j) if(D[169][j].charCodeAt(0) !== 0xFFFD) { e[D[169][j]] = 43264 + j; d[43264 + j] = D[169][j];} +D[170] = "����������������������������������������������������������������狜狝狟狢狣狤狥狦狧狪狫狵狶狹狽狾狿猀猂猄猅猆猇猈猉猋猌猍猏猐猑猒猔猘猙猚猟猠猣猤猦猧猨猭猯猰猲猳猵猶猺猻猼猽獀獁獂獃獄獅獆獇獈�獉獊獋獌獎獏獑獓獔獕獖獘獙獚獛獜獝獞獟獡獢獣獤獥獦獧獨獩獪獫獮獰獱�".split(""); +for(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];} +D[171] = "����������������������������������������������������������������獲獳獴獵獶獷獸獹獺獻獼獽獿玀玁玂玃玅玆玈玊玌玍玏玐玒玓玔玕玗玘玙玚玜玝玞玠玡玣玤玥玦玧玨玪玬玭玱玴玵玶玸玹玼玽玾玿珁珃珄珅珆珇�珋珌珎珒珓珔珕珖珗珘珚珛珜珝珟珡珢珣珤珦珨珪珫珬珮珯珰珱珳珴珵珶珷�".split(""); +for(j = 0; j != D[171].length; ++j) if(D[171][j].charCodeAt(0) !== 0xFFFD) { e[D[171][j]] = 43776 + j; d[43776 + j] = D[171][j];} +D[172] = "����������������������������������������������������������������珸珹珺珻珼珽現珿琀琁琂琄琇琈琋琌琍琎琑琒琓琔琕琖琗琘琙琜琝琞琟琠琡琣琤琧琩琫琭琯琱琲琷琸琹琺琻琽琾琿瑀瑂瑃瑄瑅瑆瑇瑈瑉瑊瑋瑌瑍�瑎瑏瑐瑑瑒瑓瑔瑖瑘瑝瑠瑡瑢瑣瑤瑥瑦瑧瑨瑩瑪瑫瑬瑮瑯瑱瑲瑳瑴瑵瑸瑹瑺�".split(""); +for(j = 0; j != D[172].length; ++j) if(D[172][j].charCodeAt(0) !== 0xFFFD) { e[D[172][j]] = 44032 + j; d[44032 + j] = D[172][j];} +D[173] = "����������������������������������������������������������������瑻瑼瑽瑿璂璄璅璆璈璉璊璌璍璏璑璒璓璔璕璖璗璘璙璚璛璝璟璠璡璢璣璤璥璦璪璫璬璭璮璯環璱璲璳璴璵璶璷璸璹璻璼璽璾璿瓀瓁瓂瓃瓄瓅瓆瓇�瓈瓉瓊瓋瓌瓍瓎瓏瓐瓑瓓瓔瓕瓖瓗瓘瓙瓚瓛瓝瓟瓡瓥瓧瓨瓩瓪瓫瓬瓭瓰瓱瓲�".split(""); +for(j = 0; j != D[173].length; ++j) if(D[173][j].charCodeAt(0) !== 0xFFFD) { e[D[173][j]] = 44288 + j; d[44288 + j] = D[173][j];} +D[174] = "����������������������������������������������������������������瓳瓵瓸瓹瓺瓻瓼瓽瓾甀甁甂甃甅甆甇甈甉甊甋甌甎甐甒甔甕甖甗甛甝甞甠甡產産甤甦甧甪甮甴甶甹甼甽甿畁畂畃畄畆畇畉畊畍畐畑畒畓畕畖畗畘�畝畞畟畠畡畢畣畤畧畨畩畫畬畭畮畯異畱畳畵當畷畺畻畼畽畾疀疁疂疄疅疇�".split(""); +for(j = 0; j != D[174].length; ++j) if(D[174][j].charCodeAt(0) !== 0xFFFD) { e[D[174][j]] = 44544 + j; d[44544 + j] = D[174][j];} +D[175] = "����������������������������������������������������������������疈疉疊疌疍疎疐疓疕疘疛疜疞疢疦疧疨疩疪疭疶疷疺疻疿痀痁痆痋痌痎痏痐痑痓痗痙痚痜痝痟痠痡痥痩痬痭痮痯痲痳痵痶痷痸痺痻痽痾瘂瘄瘆瘇�瘈瘉瘋瘍瘎瘏瘑瘒瘓瘔瘖瘚瘜瘝瘞瘡瘣瘧瘨瘬瘮瘯瘱瘲瘶瘷瘹瘺瘻瘽癁療癄�".split(""); +for(j = 0; j != D[175].length; ++j) if(D[175][j].charCodeAt(0) !== 0xFFFD) { e[D[175][j]] = 44800 + j; d[44800 + j] = D[175][j];} +D[176] = "����������������������������������������������������������������癅癆癇癈癉癊癋癎癏癐癑癒癓癕癗癘癙癚癛癝癟癠癡癢癤癥癦癧癨癩癪癬癭癮癰癱癲癳癴癵癶癷癹発發癿皀皁皃皅皉皊皌皍皏皐皒皔皕皗皘皚皛�皜皝皞皟皠皡皢皣皥皦皧皨皩皪皫皬皭皯皰皳皵皶皷皸皹皺皻皼皽皾盀盁盃啊阿埃挨哎唉哀皑癌蔼矮艾碍爱隘鞍氨安俺按暗岸胺案肮昂盎凹敖熬翱袄傲奥懊澳芭捌扒叭吧笆八疤巴拔跋靶把耙坝霸罢爸白柏百摆佰败拜稗斑班搬扳般颁板版扮拌伴瓣半办绊邦帮梆榜膀绑棒磅蚌镑傍谤苞胞包褒剥�".split(""); +for(j = 0; j != D[176].length; ++j) if(D[176][j].charCodeAt(0) !== 0xFFFD) { e[D[176][j]] = 45056 + j; d[45056 + j] = D[176][j];} +D[177] = "����������������������������������������������������������������盄盇盉盋盌盓盕盙盚盜盝盞盠盡盢監盤盦盧盨盩盪盫盬盭盰盳盵盶盷盺盻盽盿眀眂眃眅眆眊県眎眏眐眑眒眓眔眕眖眗眘眛眜眝眞眡眣眤眥眧眪眫�眬眮眰眱眲眳眴眹眻眽眾眿睂睄睅睆睈睉睊睋睌睍睎睏睒睓睔睕睖睗睘睙睜薄雹保堡饱宝抱报暴豹鲍爆杯碑悲卑北辈背贝钡倍狈备惫焙被奔苯本笨崩绷甭泵蹦迸逼鼻比鄙笔彼碧蓖蔽毕毙毖币庇痹闭敝弊必辟壁臂避陛鞭边编贬扁便变卞辨辩辫遍标彪膘表鳖憋别瘪彬斌濒滨宾摈兵冰柄丙秉饼炳�".split(""); +for(j = 0; j != D[177].length; ++j) if(D[177][j].charCodeAt(0) !== 0xFFFD) { e[D[177][j]] = 45312 + j; d[45312 + j] = D[177][j];} +D[178] = "����������������������������������������������������������������睝睞睟睠睤睧睩睪睭睮睯睰睱睲睳睴睵睶睷睸睺睻睼瞁瞂瞃瞆瞇瞈瞉瞊瞋瞏瞐瞓瞔瞕瞖瞗瞘瞙瞚瞛瞜瞝瞞瞡瞣瞤瞦瞨瞫瞭瞮瞯瞱瞲瞴瞶瞷瞸瞹瞺�瞼瞾矀矁矂矃矄矅矆矇矈矉矊矋矌矎矏矐矑矒矓矔矕矖矘矙矚矝矞矟矠矡矤病并玻菠播拨钵波博勃搏铂箔伯帛舶脖膊渤泊驳捕卜哺补埠不布步簿部怖擦猜裁材才财睬踩采彩菜蔡餐参蚕残惭惨灿苍舱仓沧藏操糙槽曹草厕策侧册测层蹭插叉茬茶查碴搽察岔差诧拆柴豺搀掺蝉馋谗缠铲产阐颤昌猖�".split(""); +for(j = 0; j != D[178].length; ++j) if(D[178][j].charCodeAt(0) !== 0xFFFD) { e[D[178][j]] = 45568 + j; d[45568 + j] = D[178][j];} +D[179] = "����������������������������������������������������������������矦矨矪矯矰矱矲矴矵矷矹矺矻矼砃砄砅砆砇砈砊砋砎砏砐砓砕砙砛砞砠砡砢砤砨砪砫砮砯砱砲砳砵砶砽砿硁硂硃硄硆硈硉硊硋硍硏硑硓硔硘硙硚�硛硜硞硟硠硡硢硣硤硥硦硧硨硩硯硰硱硲硳硴硵硶硸硹硺硻硽硾硿碀碁碂碃场尝常长偿肠厂敞畅唱倡超抄钞朝嘲潮巢吵炒车扯撤掣彻澈郴臣辰尘晨忱沉陈趁衬撑称城橙成呈乘程惩澄诚承逞骋秤吃痴持匙池迟弛驰耻齿侈尺赤翅斥炽充冲虫崇宠抽酬畴踌稠愁筹仇绸瞅丑臭初出橱厨躇锄雏滁除楚�".split(""); +for(j = 0; j != D[179].length; ++j) if(D[179][j].charCodeAt(0) !== 0xFFFD) { e[D[179][j]] = 45824 + j; d[45824 + j] = D[179][j];} +D[180] = "����������������������������������������������������������������碄碅碆碈碊碋碏碐碒碔碕碖碙碝碞碠碢碤碦碨碩碪碫碬碭碮碯碵碶碷碸確碻碼碽碿磀磂磃磄磆磇磈磌磍磎磏磑磒磓磖磗磘磚磛磜磝磞磟磠磡磢磣�磤磥磦磧磩磪磫磭磮磯磰磱磳磵磶磸磹磻磼磽磾磿礀礂礃礄礆礇礈礉礊礋礌础储矗搐触处揣川穿椽传船喘串疮窗幢床闯创吹炊捶锤垂春椿醇唇淳纯蠢戳绰疵茨磁雌辞慈瓷词此刺赐次聪葱囱匆从丛凑粗醋簇促蹿篡窜摧崔催脆瘁粹淬翠村存寸磋撮搓措挫错搭达答瘩打大呆歹傣戴带殆代贷袋待逮�".split(""); +for(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];} +D[181] = "����������������������������������������������������������������礍礎礏礐礑礒礔礕礖礗礘礙礚礛礜礝礟礠礡礢礣礥礦礧礨礩礪礫礬礭礮礯礰礱礲礳礵礶礷礸礹礽礿祂祃祄祅祇祊祋祌祍祎祏祐祑祒祔祕祘祙祡祣�祤祦祩祪祫祬祮祰祱祲祳祴祵祶祹祻祼祽祾祿禂禃禆禇禈禉禋禌禍禎禐禑禒怠耽担丹单郸掸胆旦氮但惮淡诞弹蛋当挡党荡档刀捣蹈倒岛祷导到稻悼道盗德得的蹬灯登等瞪凳邓堤低滴迪敌笛狄涤翟嫡抵底地蒂第帝弟递缔颠掂滇碘点典靛垫电佃甸店惦奠淀殿碉叼雕凋刁掉吊钓调跌爹碟蝶迭谍叠�".split(""); +for(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];} +D[182] = "����������������������������������������������������������������禓禔禕禖禗禘禙禛禜禝禞禟禠禡禢禣禤禥禦禨禩禪禫禬禭禮禯禰禱禲禴禵禶禷禸禼禿秂秄秅秇秈秊秌秎秏秐秓秔秖秗秙秚秛秜秝秞秠秡秢秥秨秪�秬秮秱秲秳秴秵秶秷秹秺秼秾秿稁稄稅稇稈稉稊稌稏稐稑稒稓稕稖稘稙稛稜丁盯叮钉顶鼎锭定订丢东冬董懂动栋侗恫冻洞兜抖斗陡豆逗痘都督毒犊独读堵睹赌杜镀肚度渡妒端短锻段断缎堆兑队对墩吨蹲敦顿囤钝盾遁掇哆多夺垛躲朵跺舵剁惰堕蛾峨鹅俄额讹娥恶厄扼遏鄂饿恩而儿耳尔饵洱二�".split(""); +for(j = 0; j != D[182].length; ++j) if(D[182][j].charCodeAt(0) !== 0xFFFD) { e[D[182][j]] = 46592 + j; d[46592 + j] = D[182][j];} +D[183] = "����������������������������������������������������������������稝稟稡稢稤稥稦稧稨稩稪稫稬稭種稯稰稱稲稴稵稶稸稺稾穀穁穂穃穄穅穇穈穉穊穋穌積穎穏穐穒穓穔穕穖穘穙穚穛穜穝穞穟穠穡穢穣穤穥穦穧穨�穩穪穫穬穭穮穯穱穲穳穵穻穼穽穾窂窅窇窉窊窋窌窎窏窐窓窔窙窚窛窞窡窢贰发罚筏伐乏阀法珐藩帆番翻樊矾钒繁凡烦反返范贩犯饭泛坊芳方肪房防妨仿访纺放菲非啡飞肥匪诽吠肺废沸费芬酚吩氛分纷坟焚汾粉奋份忿愤粪丰封枫蜂峰锋风疯烽逢冯缝讽奉凤佛否夫敷肤孵扶拂辐幅氟符伏俘服�".split(""); +for(j = 0; j != D[183].length; ++j) if(D[183][j].charCodeAt(0) !== 0xFFFD) { e[D[183][j]] = 46848 + j; d[46848 + j] = D[183][j];} +D[184] = "����������������������������������������������������������������窣窤窧窩窪窫窮窯窰窱窲窴窵窶窷窸窹窺窻窼窽窾竀竁竂竃竄竅竆竇竈竉竊竌竍竎竏竐竑竒竓竔竕竗竘竚竛竜竝竡竢竤竧竨竩竪竫竬竮竰竱竲竳�竴竵競竷竸竻竼竾笀笁笂笅笇笉笌笍笎笐笒笓笖笗笘笚笜笝笟笡笢笣笧笩笭浮涪福袱弗甫抚辅俯釜斧脯腑府腐赴副覆赋复傅付阜父腹负富讣附妇缚咐噶嘎该改概钙盖溉干甘杆柑竿肝赶感秆敢赣冈刚钢缸肛纲岗港杠篙皋高膏羔糕搞镐稿告哥歌搁戈鸽胳疙割革葛格蛤阁隔铬个各给根跟耕更庚羹�".split(""); +for(j = 0; j != D[184].length; ++j) if(D[184][j].charCodeAt(0) !== 0xFFFD) { e[D[184][j]] = 47104 + j; d[47104 + j] = D[184][j];} +D[185] = "����������������������������������������������������������������笯笰笲笴笵笶笷笹笻笽笿筀筁筂筃筄筆筈筊筍筎筓筕筗筙筜筞筟筡筣筤筥筦筧筨筩筪筫筬筭筯筰筳筴筶筸筺筼筽筿箁箂箃箄箆箇箈箉箊箋箌箎箏�箑箒箓箖箘箙箚箛箞箟箠箣箤箥箮箯箰箲箳箵箶箷箹箺箻箼箽箾箿節篂篃範埂耿梗工攻功恭龚供躬公宫弓巩汞拱贡共钩勾沟苟狗垢构购够辜菇咕箍估沽孤姑鼓古蛊骨谷股故顾固雇刮瓜剐寡挂褂乖拐怪棺关官冠观管馆罐惯灌贯光广逛瑰规圭硅归龟闺轨鬼诡癸桂柜跪贵刽辊滚棍锅郭国果裹过哈�".split(""); +for(j = 0; j != D[185].length; ++j) if(D[185][j].charCodeAt(0) !== 0xFFFD) { e[D[185][j]] = 47360 + j; d[47360 + j] = D[185][j];} +D[186] = "����������������������������������������������������������������篅篈築篊篋篍篎篏篐篒篔篕篖篗篘篛篜篞篟篠篢篣篤篧篨篩篫篬篭篯篰篲篳篴篵篶篸篹篺篻篽篿簀簁簂簃簄簅簆簈簉簊簍簎簐簑簒簓簔簕簗簘簙�簚簛簜簝簞簠簡簢簣簤簥簨簩簫簬簭簮簯簰簱簲簳簴簵簶簷簹簺簻簼簽簾籂骸孩海氦亥害骇酣憨邯韩含涵寒函喊罕翰撼捍旱憾悍焊汗汉夯杭航壕嚎豪毫郝好耗号浩呵喝荷菏核禾和何合盒貉阂河涸赫褐鹤贺嘿黑痕很狠恨哼亨横衡恒轰哄烘虹鸿洪宏弘红喉侯猴吼厚候后呼乎忽瑚壶葫胡蝴狐糊湖�".split(""); +for(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];} +D[187] = "����������������������������������������������������������������籃籄籅籆籇籈籉籊籋籌籎籏籐籑籒籓籔籕籖籗籘籙籚籛籜籝籞籟籠籡籢籣籤籥籦籧籨籩籪籫籬籭籮籯籰籱籲籵籶籷籸籹籺籾籿粀粁粂粃粄粅粆粇�粈粊粋粌粍粎粏粐粓粔粖粙粚粛粠粡粣粦粧粨粩粫粬粭粯粰粴粵粶粷粸粺粻弧虎唬护互沪户花哗华猾滑画划化话槐徊怀淮坏欢环桓还缓换患唤痪豢焕涣宦幻荒慌黄磺蝗簧皇凰惶煌晃幌恍谎灰挥辉徽恢蛔回毁悔慧卉惠晦贿秽会烩汇讳诲绘荤昏婚魂浑混豁活伙火获或惑霍货祸击圾基机畸稽积箕�".split(""); +for(j = 0; j != D[187].length; ++j) if(D[187][j].charCodeAt(0) !== 0xFFFD) { e[D[187][j]] = 47872 + j; d[47872 + j] = D[187][j];} +D[188] = "����������������������������������������������������������������粿糀糂糃糄糆糉糋糎糏糐糑糒糓糔糘糚糛糝糞糡糢糣糤糥糦糧糩糪糫糬糭糮糰糱糲糳糴糵糶糷糹糺糼糽糾糿紀紁紂紃約紅紆紇紈紉紋紌納紎紏紐�紑紒紓純紕紖紗紘紙級紛紜紝紞紟紡紣紤紥紦紨紩紪紬紭紮細紱紲紳紴紵紶肌饥迹激讥鸡姬绩缉吉极棘辑籍集及急疾汲即嫉级挤几脊己蓟技冀季伎祭剂悸济寄寂计记既忌际妓继纪嘉枷夹佳家加荚颊贾甲钾假稼价架驾嫁歼监坚尖笺间煎兼肩艰奸缄茧检柬碱硷拣捡简俭剪减荐槛鉴践贱见键箭件�".split(""); +for(j = 0; j != D[188].length; ++j) if(D[188][j].charCodeAt(0) !== 0xFFFD) { e[D[188][j]] = 48128 + j; d[48128 + j] = D[188][j];} +D[189] = "����������������������������������������������������������������紷紸紹紺紻紼紽紾紿絀絁終絃組絅絆絇絈絉絊絋経絍絎絏結絑絒絓絔絕絖絗絘絙絚絛絜絝絞絟絠絡絢絣絤絥給絧絨絩絪絫絬絭絯絰統絲絳絴絵絶�絸絹絺絻絼絽絾絿綀綁綂綃綄綅綆綇綈綉綊綋綌綍綎綏綐綑綒經綔綕綖綗綘健舰剑饯渐溅涧建僵姜将浆江疆蒋桨奖讲匠酱降蕉椒礁焦胶交郊浇骄娇嚼搅铰矫侥脚狡角饺缴绞剿教酵轿较叫窖揭接皆秸街阶截劫节桔杰捷睫竭洁结解姐戒藉芥界借介疥诫届巾筋斤金今津襟紧锦仅谨进靳晋禁近烬浸�".split(""); +for(j = 0; j != D[189].length; ++j) if(D[189][j].charCodeAt(0) !== 0xFFFD) { e[D[189][j]] = 48384 + j; d[48384 + j] = D[189][j];} +D[190] = "����������������������������������������������������������������継続綛綜綝綞綟綠綡綢綣綤綥綧綨綩綪綫綬維綯綰綱網綳綴綵綶綷綸綹綺綻綼綽綾綿緀緁緂緃緄緅緆緇緈緉緊緋緌緍緎総緐緑緒緓緔緕緖緗緘緙�線緛緜緝緞緟締緡緢緣緤緥緦緧編緩緪緫緬緭緮緯緰緱緲緳練緵緶緷緸緹緺尽劲荆兢茎睛晶鲸京惊精粳经井警景颈静境敬镜径痉靖竟竞净炯窘揪究纠玖韭久灸九酒厩救旧臼舅咎就疚鞠拘狙疽居驹菊局咀矩举沮聚拒据巨具距踞锯俱句惧炬剧捐鹃娟倦眷卷绢撅攫抉掘倔爵觉决诀绝均菌钧军君峻�".split(""); +for(j = 0; j != D[190].length; ++j) if(D[190][j].charCodeAt(0) !== 0xFFFD) { e[D[190][j]] = 48640 + j; d[48640 + j] = D[190][j];} +D[191] = "����������������������������������������������������������������緻緼緽緾緿縀縁縂縃縄縅縆縇縈縉縊縋縌縍縎縏縐縑縒縓縔縕縖縗縘縙縚縛縜縝縞縟縠縡縢縣縤縥縦縧縨縩縪縫縬縭縮縯縰縱縲縳縴縵縶縷縸縹�縺縼總績縿繀繂繃繄繅繆繈繉繊繋繌繍繎繏繐繑繒繓織繕繖繗繘繙繚繛繜繝俊竣浚郡骏喀咖卡咯开揩楷凯慨刊堪勘坎砍看康慷糠扛抗亢炕考拷烤靠坷苛柯棵磕颗科壳咳可渴克刻客课肯啃垦恳坑吭空恐孔控抠口扣寇枯哭窟苦酷库裤夸垮挎跨胯块筷侩快宽款匡筐狂框矿眶旷况亏盔岿窥葵奎魁傀�".split(""); +for(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];} +D[192] = "����������������������������������������������������������������繞繟繠繡繢繣繤繥繦繧繨繩繪繫繬繭繮繯繰繱繲繳繴繵繶繷繸繹繺繻繼繽繾繿纀纁纃纄纅纆纇纈纉纊纋續纍纎纏纐纑纒纓纔纕纖纗纘纙纚纜纝纞�纮纴纻纼绖绤绬绹缊缐缞缷缹缻缼缽缾缿罀罁罃罆罇罈罉罊罋罌罍罎罏罒罓馈愧溃坤昆捆困括扩廓阔垃拉喇蜡腊辣啦莱来赖蓝婪栏拦篮阑兰澜谰揽览懒缆烂滥琅榔狼廊郎朗浪捞劳牢老佬姥酪烙涝勒乐雷镭蕾磊累儡垒擂肋类泪棱楞冷厘梨犁黎篱狸离漓理李里鲤礼莉荔吏栗丽厉励砾历利傈例俐�".split(""); +for(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];} +D[193] = "����������������������������������������������������������������罖罙罛罜罝罞罠罣罤罥罦罧罫罬罭罯罰罳罵罶罷罸罺罻罼罽罿羀羂羃羄羅羆羇羈羉羋羍羏羐羑羒羓羕羖羗羘羙羛羜羠羢羣羥羦羨義羪羫羬羭羮羱�羳羴羵羶羷羺羻羾翀翂翃翄翆翇翈翉翋翍翏翐翑習翓翖翗翙翚翛翜翝翞翢翣痢立粒沥隶力璃哩俩联莲连镰廉怜涟帘敛脸链恋炼练粮凉梁粱良两辆量晾亮谅撩聊僚疗燎寥辽潦了撂镣廖料列裂烈劣猎琳林磷霖临邻鳞淋凛赁吝拎玲菱零龄铃伶羚凌灵陵岭领另令溜琉榴硫馏留刘瘤流柳六龙聋咙笼窿�".split(""); +for(j = 0; j != D[193].length; ++j) if(D[193][j].charCodeAt(0) !== 0xFFFD) { e[D[193][j]] = 49408 + j; d[49408 + j] = D[193][j];} +D[194] = "����������������������������������������������������������������翤翧翨翪翫翬翭翯翲翴翵翶翷翸翹翺翽翾翿耂耇耈耉耊耎耏耑耓耚耛耝耞耟耡耣耤耫耬耭耮耯耰耲耴耹耺耼耾聀聁聄聅聇聈聉聎聏聐聑聓聕聖聗�聙聛聜聝聞聟聠聡聢聣聤聥聦聧聨聫聬聭聮聯聰聲聳聴聵聶職聸聹聺聻聼聽隆垄拢陇楼娄搂篓漏陋芦卢颅庐炉掳卤虏鲁麓碌露路赂鹿潞禄录陆戮驴吕铝侣旅履屡缕虑氯律率滤绿峦挛孪滦卵乱掠略抡轮伦仑沦纶论萝螺罗逻锣箩骡裸落洛骆络妈麻玛码蚂马骂嘛吗埋买麦卖迈脉瞒馒蛮满蔓曼慢漫�".split(""); +for(j = 0; j != D[194].length; ++j) if(D[194][j].charCodeAt(0) !== 0xFFFD) { e[D[194][j]] = 49664 + j; d[49664 + j] = D[194][j];} +D[195] = "����������������������������������������������������������������聾肁肂肅肈肊肍肎肏肐肑肒肔肕肗肙肞肣肦肧肨肬肰肳肵肶肸肹肻胅胇胈胉胊胋胏胐胑胒胓胔胕胘胟胠胢胣胦胮胵胷胹胻胾胿脀脁脃脄脅脇脈脋�脌脕脗脙脛脜脝脟脠脡脢脣脤脥脦脧脨脩脪脫脭脮脰脳脴脵脷脹脺脻脼脽脿谩芒茫盲氓忙莽猫茅锚毛矛铆卯茂冒帽貌贸么玫枚梅酶霉煤没眉媒镁每美昧寐妹媚门闷们萌蒙檬盟锰猛梦孟眯醚靡糜迷谜弥米秘觅泌蜜密幂棉眠绵冕免勉娩缅面苗描瞄藐秒渺庙妙蔑灭民抿皿敏悯闽明螟鸣铭名命谬摸�".split(""); +for(j = 0; j != D[195].length; ++j) if(D[195][j].charCodeAt(0) !== 0xFFFD) { e[D[195][j]] = 49920 + j; d[49920 + j] = D[195][j];} +D[196] = "����������������������������������������������������������������腀腁腂腃腄腅腇腉腍腎腏腒腖腗腘腛腜腝腞腟腡腢腣腤腦腨腪腫腬腯腲腳腵腶腷腸膁膃膄膅膆膇膉膋膌膍膎膐膒膓膔膕膖膗膙膚膞膟膠膡膢膤膥�膧膩膫膬膭膮膯膰膱膲膴膵膶膷膸膹膼膽膾膿臄臅臇臈臉臋臍臎臏臐臑臒臓摹蘑模膜磨摩魔抹末莫墨默沫漠寞陌谋牟某拇牡亩姆母墓暮幕募慕木目睦牧穆拿哪呐钠那娜纳氖乃奶耐奈南男难囊挠脑恼闹淖呢馁内嫩能妮霓倪泥尼拟你匿腻逆溺蔫拈年碾撵捻念娘酿鸟尿捏聂孽啮镊镍涅您柠狞凝宁�".split(""); +for(j = 0; j != D[196].length; ++j) if(D[196][j].charCodeAt(0) !== 0xFFFD) { e[D[196][j]] = 50176 + j; d[50176 + j] = D[196][j];} +D[197] = "����������������������������������������������������������������臔臕臖臗臘臙臚臛臜臝臞臟臠臡臢臤臥臦臨臩臫臮臯臰臱臲臵臶臷臸臹臺臽臿舃與興舉舊舋舎舏舑舓舕舖舗舘舙舚舝舠舤舥舦舧舩舮舲舺舼舽舿�艀艁艂艃艅艆艈艊艌艍艎艐艑艒艓艔艕艖艗艙艛艜艝艞艠艡艢艣艤艥艦艧艩拧泞牛扭钮纽脓浓农弄奴努怒女暖虐疟挪懦糯诺哦欧鸥殴藕呕偶沤啪趴爬帕怕琶拍排牌徘湃派攀潘盘磐盼畔判叛乓庞旁耪胖抛咆刨炮袍跑泡呸胚培裴赔陪配佩沛喷盆砰抨烹澎彭蓬棚硼篷膨朋鹏捧碰坯砒霹批披劈琵毗�".split(""); +for(j = 0; j != D[197].length; ++j) if(D[197][j].charCodeAt(0) !== 0xFFFD) { e[D[197][j]] = 50432 + j; d[50432 + j] = D[197][j];} +D[198] = "����������������������������������������������������������������艪艫艬艭艱艵艶艷艸艻艼芀芁芃芅芆芇芉芌芐芓芔芕芖芚芛芞芠芢芣芧芲芵芶芺芻芼芿苀苂苃苅苆苉苐苖苙苚苝苢苧苨苩苪苬苭苮苰苲苳苵苶苸�苺苼苽苾苿茀茊茋茍茐茒茓茖茘茙茝茞茟茠茡茢茣茤茥茦茩茪茮茰茲茷茻茽啤脾疲皮匹痞僻屁譬篇偏片骗飘漂瓢票撇瞥拼频贫品聘乒坪苹萍平凭瓶评屏坡泼颇婆破魄迫粕剖扑铺仆莆葡菩蒲埔朴圃普浦谱曝瀑期欺栖戚妻七凄漆柒沏其棋奇歧畦崎脐齐旗祈祁骑起岂乞企启契砌器气迄弃汽泣讫掐�".split(""); +for(j = 0; j != D[198].length; ++j) if(D[198][j].charCodeAt(0) !== 0xFFFD) { e[D[198][j]] = 50688 + j; d[50688 + j] = D[198][j];} +D[199] = "����������������������������������������������������������������茾茿荁荂荄荅荈荊荋荌荍荎荓荕荖荗荘荙荝荢荰荱荲荳荴荵荶荹荺荾荿莀莁莂莃莄莇莈莊莋莌莍莏莐莑莔莕莖莗莙莚莝莟莡莢莣莤莥莦莧莬莭莮�莯莵莻莾莿菂菃菄菆菈菉菋菍菎菐菑菒菓菕菗菙菚菛菞菢菣菤菦菧菨菫菬菭恰洽牵扦钎铅千迁签仟谦乾黔钱钳前潜遣浅谴堑嵌欠歉枪呛腔羌墙蔷强抢橇锹敲悄桥瞧乔侨巧鞘撬翘峭俏窍切茄且怯窃钦侵亲秦琴勤芹擒禽寝沁青轻氢倾卿清擎晴氰情顷请庆琼穷秋丘邱球求囚酋泅趋区蛆曲躯屈驱渠�".split(""); +for(j = 0; j != D[199].length; ++j) if(D[199][j].charCodeAt(0) !== 0xFFFD) { e[D[199][j]] = 50944 + j; d[50944 + j] = D[199][j];} +D[200] = "����������������������������������������������������������������菮華菳菴菵菶菷菺菻菼菾菿萀萂萅萇萈萉萊萐萒萓萔萕萖萗萙萚萛萞萟萠萡萢萣萩萪萫萬萭萮萯萰萲萳萴萵萶萷萹萺萻萾萿葀葁葂葃葄葅葇葈葉�葊葋葌葍葎葏葐葒葓葔葕葖葘葝葞葟葠葢葤葥葦葧葨葪葮葯葰葲葴葷葹葻葼取娶龋趣去圈颧权醛泉全痊拳犬券劝缺炔瘸却鹊榷确雀裙群然燃冉染瓤壤攘嚷让饶扰绕惹热壬仁人忍韧任认刃妊纫扔仍日戎茸蓉荣融熔溶容绒冗揉柔肉茹蠕儒孺如辱乳汝入褥软阮蕊瑞锐闰润若弱撒洒萨腮鳃塞赛三叁�".split(""); +for(j = 0; j != D[200].length; ++j) if(D[200][j].charCodeAt(0) !== 0xFFFD) { e[D[200][j]] = 51200 + j; d[51200 + j] = D[200][j];} +D[201] = "����������������������������������������������������������������葽葾葿蒀蒁蒃蒄蒅蒆蒊蒍蒏蒐蒑蒒蒓蒔蒕蒖蒘蒚蒛蒝蒞蒟蒠蒢蒣蒤蒥蒦蒧蒨蒩蒪蒫蒬蒭蒮蒰蒱蒳蒵蒶蒷蒻蒼蒾蓀蓂蓃蓅蓆蓇蓈蓋蓌蓎蓏蓒蓔蓕蓗�蓘蓙蓚蓛蓜蓞蓡蓢蓤蓧蓨蓩蓪蓫蓭蓮蓯蓱蓲蓳蓴蓵蓶蓷蓸蓹蓺蓻蓽蓾蔀蔁蔂伞散桑嗓丧搔骚扫嫂瑟色涩森僧莎砂杀刹沙纱傻啥煞筛晒珊苫杉山删煽衫闪陕擅赡膳善汕扇缮墒伤商赏晌上尚裳梢捎稍烧芍勺韶少哨邵绍奢赊蛇舌舍赦摄射慑涉社设砷申呻伸身深娠绅神沈审婶甚肾慎渗声生甥牲升绳�".split(""); +for(j = 0; j != D[201].length; ++j) if(D[201][j].charCodeAt(0) !== 0xFFFD) { e[D[201][j]] = 51456 + j; d[51456 + j] = D[201][j];} +D[202] = "����������������������������������������������������������������蔃蔄蔅蔆蔇蔈蔉蔊蔋蔍蔎蔏蔐蔒蔔蔕蔖蔘蔙蔛蔜蔝蔞蔠蔢蔣蔤蔥蔦蔧蔨蔩蔪蔭蔮蔯蔰蔱蔲蔳蔴蔵蔶蔾蔿蕀蕁蕂蕄蕅蕆蕇蕋蕌蕍蕎蕏蕐蕑蕒蕓蕔蕕�蕗蕘蕚蕛蕜蕝蕟蕠蕡蕢蕣蕥蕦蕧蕩蕪蕫蕬蕭蕮蕯蕰蕱蕳蕵蕶蕷蕸蕼蕽蕿薀薁省盛剩胜圣师失狮施湿诗尸虱十石拾时什食蚀实识史矢使屎驶始式示士世柿事拭誓逝势是嗜噬适仕侍释饰氏市恃室视试收手首守寿授售受瘦兽蔬枢梳殊抒输叔舒淑疏书赎孰熟薯暑曙署蜀黍鼠属术述树束戍竖墅庶数漱�".split(""); +for(j = 0; j != D[202].length; ++j) if(D[202][j].charCodeAt(0) !== 0xFFFD) { e[D[202][j]] = 51712 + j; d[51712 + j] = D[202][j];} +D[203] = "����������������������������������������������������������������薂薃薆薈薉薊薋薌薍薎薐薑薒薓薔薕薖薗薘薙薚薝薞薟薠薡薢薣薥薦薧薩薫薬薭薱薲薳薴薵薶薸薺薻薼薽薾薿藀藂藃藄藅藆藇藈藊藋藌藍藎藑藒�藔藖藗藘藙藚藛藝藞藟藠藡藢藣藥藦藧藨藪藫藬藭藮藯藰藱藲藳藴藵藶藷藸恕刷耍摔衰甩帅栓拴霜双爽谁水睡税吮瞬顺舜说硕朔烁斯撕嘶思私司丝死肆寺嗣四伺似饲巳松耸怂颂送宋讼诵搜艘擞嗽苏酥俗素速粟僳塑溯宿诉肃酸蒜算虽隋随绥髓碎岁穗遂隧祟孙损笋蓑梭唆缩琐索锁所塌他它她塔�".split(""); +for(j = 0; j != D[203].length; ++j) if(D[203][j].charCodeAt(0) !== 0xFFFD) { e[D[203][j]] = 51968 + j; d[51968 + j] = D[203][j];} +D[204] = "����������������������������������������������������������������藹藺藼藽藾蘀蘁蘂蘃蘄蘆蘇蘈蘉蘊蘋蘌蘍蘎蘏蘐蘒蘓蘔蘕蘗蘘蘙蘚蘛蘜蘝蘞蘟蘠蘡蘢蘣蘤蘥蘦蘨蘪蘫蘬蘭蘮蘯蘰蘱蘲蘳蘴蘵蘶蘷蘹蘺蘻蘽蘾蘿虀�虁虂虃虄虅虆虇虈虉虊虋虌虒虓處虖虗虘虙虛虜虝號虠虡虣虤虥虦虧虨虩虪獭挞蹋踏胎苔抬台泰酞太态汰坍摊贪瘫滩坛檀痰潭谭谈坦毯袒碳探叹炭汤塘搪堂棠膛唐糖倘躺淌趟烫掏涛滔绦萄桃逃淘陶讨套特藤腾疼誊梯剔踢锑提题蹄啼体替嚏惕涕剃屉天添填田甜恬舔腆挑条迢眺跳贴铁帖厅听烃�".split(""); +for(j = 0; j != D[204].length; ++j) if(D[204][j].charCodeAt(0) !== 0xFFFD) { e[D[204][j]] = 52224 + j; d[52224 + j] = D[204][j];} +D[205] = "����������������������������������������������������������������虭虯虰虲虳虴虵虶虷虸蚃蚄蚅蚆蚇蚈蚉蚎蚏蚐蚑蚒蚔蚖蚗蚘蚙蚚蚛蚞蚟蚠蚡蚢蚥蚦蚫蚭蚮蚲蚳蚷蚸蚹蚻蚼蚽蚾蚿蛁蛂蛃蛅蛈蛌蛍蛒蛓蛕蛖蛗蛚蛜�蛝蛠蛡蛢蛣蛥蛦蛧蛨蛪蛫蛬蛯蛵蛶蛷蛺蛻蛼蛽蛿蜁蜄蜅蜆蜋蜌蜎蜏蜐蜑蜔蜖汀廷停亭庭挺艇通桐酮瞳同铜彤童桶捅筒统痛偷投头透凸秃突图徒途涂屠土吐兔湍团推颓腿蜕褪退吞屯臀拖托脱鸵陀驮驼椭妥拓唾挖哇蛙洼娃瓦袜歪外豌弯湾玩顽丸烷完碗挽晚皖惋宛婉万腕汪王亡枉网往旺望忘妄威�".split(""); +for(j = 0; j != D[205].length; ++j) if(D[205][j].charCodeAt(0) !== 0xFFFD) { e[D[205][j]] = 52480 + j; d[52480 + j] = D[205][j];} +D[206] = "����������������������������������������������������������������蜙蜛蜝蜟蜠蜤蜦蜧蜨蜪蜫蜬蜭蜯蜰蜲蜳蜵蜶蜸蜹蜺蜼蜽蝀蝁蝂蝃蝄蝅蝆蝊蝋蝍蝏蝐蝑蝒蝔蝕蝖蝘蝚蝛蝜蝝蝞蝟蝡蝢蝦蝧蝨蝩蝪蝫蝬蝭蝯蝱蝲蝳蝵�蝷蝸蝹蝺蝿螀螁螄螆螇螉螊螌螎螏螐螑螒螔螕螖螘螙螚螛螜螝螞螠螡螢螣螤巍微危韦违桅围唯惟为潍维苇萎委伟伪尾纬未蔚味畏胃喂魏位渭谓尉慰卫瘟温蚊文闻纹吻稳紊问嗡翁瓮挝蜗涡窝我斡卧握沃巫呜钨乌污诬屋无芜梧吾吴毋武五捂午舞伍侮坞戊雾晤物勿务悟误昔熙析西硒矽晰嘻吸锡牺�".split(""); +for(j = 0; j != D[206].length; ++j) if(D[206][j].charCodeAt(0) !== 0xFFFD) { e[D[206][j]] = 52736 + j; d[52736 + j] = D[206][j];} +D[207] = "����������������������������������������������������������������螥螦螧螩螪螮螰螱螲螴螶螷螸螹螻螼螾螿蟁蟂蟃蟄蟅蟇蟈蟉蟌蟍蟎蟏蟐蟔蟕蟖蟗蟘蟙蟚蟜蟝蟞蟟蟡蟢蟣蟤蟦蟧蟨蟩蟫蟬蟭蟯蟰蟱蟲蟳蟴蟵蟶蟷蟸�蟺蟻蟼蟽蟿蠀蠁蠂蠄蠅蠆蠇蠈蠉蠋蠌蠍蠎蠏蠐蠑蠒蠔蠗蠘蠙蠚蠜蠝蠞蠟蠠蠣稀息希悉膝夕惜熄烯溪汐犀檄袭席习媳喜铣洗系隙戏细瞎虾匣霞辖暇峡侠狭下厦夏吓掀锨先仙鲜纤咸贤衔舷闲涎弦嫌显险现献县腺馅羡宪陷限线相厢镶香箱襄湘乡翔祥详想响享项巷橡像向象萧硝霄削哮嚣销消宵淆晓�".split(""); +for(j = 0; j != D[207].length; ++j) if(D[207][j].charCodeAt(0) !== 0xFFFD) { e[D[207][j]] = 52992 + j; d[52992 + j] = D[207][j];} +D[208] = "����������������������������������������������������������������蠤蠥蠦蠧蠨蠩蠪蠫蠬蠭蠮蠯蠰蠱蠳蠴蠵蠶蠷蠸蠺蠻蠽蠾蠿衁衂衃衆衇衈衉衊衋衎衏衐衑衒術衕衖衘衚衛衜衝衞衟衠衦衧衪衭衯衱衳衴衵衶衸衹衺�衻衼袀袃袆袇袉袊袌袎袏袐袑袓袔袕袗袘袙袚袛袝袞袟袠袡袣袥袦袧袨袩袪小孝校肖啸笑效楔些歇蝎鞋协挟携邪斜胁谐写械卸蟹懈泄泻谢屑薪芯锌欣辛新忻心信衅星腥猩惺兴刑型形邢行醒幸杏性姓兄凶胸匈汹雄熊休修羞朽嗅锈秀袖绣墟戌需虚嘘须徐许蓄酗叙旭序畜恤絮婿绪续轩喧宣悬旋玄�".split(""); +for(j = 0; j != D[208].length; ++j) if(D[208][j].charCodeAt(0) !== 0xFFFD) { e[D[208][j]] = 53248 + j; d[53248 + j] = D[208][j];} +D[209] = "����������������������������������������������������������������袬袮袯袰袲袳袴袵袶袸袹袺袻袽袾袿裀裃裄裇裈裊裋裌裍裏裐裑裓裖裗裚裛補裝裞裠裡裦裧裩裪裫裬裭裮裯裲裵裶裷裺裻製裿褀褁褃褄褅褆複褈�褉褋褌褍褎褏褑褔褕褖褗褘褜褝褞褟褠褢褣褤褦褧褨褩褬褭褮褯褱褲褳褵褷选癣眩绚靴薛学穴雪血勋熏循旬询寻驯巡殉汛训讯逊迅压押鸦鸭呀丫芽牙蚜崖衙涯雅哑亚讶焉咽阉烟淹盐严研蜒岩延言颜阎炎沿奄掩眼衍演艳堰燕厌砚雁唁彦焰宴谚验殃央鸯秧杨扬佯疡羊洋阳氧仰痒养样漾邀腰妖瑶�".split(""); +for(j = 0; j != D[209].length; ++j) if(D[209][j].charCodeAt(0) !== 0xFFFD) { e[D[209][j]] = 53504 + j; d[53504 + j] = D[209][j];} +D[210] = "����������������������������������������������������������������褸褹褺褻褼褽褾褿襀襂襃襅襆襇襈襉襊襋襌襍襎襏襐襑襒襓襔襕襖襗襘襙襚襛襜襝襠襡襢襣襤襥襧襨襩襪襫襬襭襮襯襰襱襲襳襴襵襶襷襸襹襺襼�襽襾覀覂覄覅覇覈覉覊見覌覍覎規覐覑覒覓覔覕視覗覘覙覚覛覜覝覞覟覠覡摇尧遥窑谣姚咬舀药要耀椰噎耶爷野冶也页掖业叶曳腋夜液一壹医揖铱依伊衣颐夷遗移仪胰疑沂宜姨彝椅蚁倚已乙矣以艺抑易邑屹亿役臆逸肄疫亦裔意毅忆义益溢诣议谊译异翼翌绎茵荫因殷音阴姻吟银淫寅饮尹引隐�".split(""); +for(j = 0; j != D[210].length; ++j) if(D[210][j].charCodeAt(0) !== 0xFFFD) { e[D[210][j]] = 53760 + j; d[53760 + j] = D[210][j];} +D[211] = "����������������������������������������������������������������覢覣覤覥覦覧覨覩親覫覬覭覮覯覰覱覲観覴覵覶覷覸覹覺覻覼覽覾覿觀觃觍觓觔觕觗觘觙觛觝觟觠觡觢觤觧觨觩觪觬觭觮觰觱觲觴觵觶觷觸觹觺�觻觼觽觾觿訁訂訃訄訅訆計訉訊訋訌訍討訏訐訑訒訓訔訕訖託記訙訚訛訜訝印英樱婴鹰应缨莹萤营荧蝇迎赢盈影颖硬映哟拥佣臃痈庸雍踊蛹咏泳涌永恿勇用幽优悠忧尤由邮铀犹油游酉有友右佑釉诱又幼迂淤于盂榆虞愚舆余俞逾鱼愉渝渔隅予娱雨与屿禹宇语羽玉域芋郁吁遇喻峪御愈欲狱育誉�".split(""); +for(j = 0; j != D[211].length; ++j) if(D[211][j].charCodeAt(0) !== 0xFFFD) { e[D[211][j]] = 54016 + j; d[54016 + j] = D[211][j];} +D[212] = "����������������������������������������������������������������訞訟訠訡訢訣訤訥訦訧訨訩訪訫訬設訮訯訰許訲訳訴訵訶訷訸訹診註証訽訿詀詁詂詃詄詅詆詇詉詊詋詌詍詎詏詐詑詒詓詔評詖詗詘詙詚詛詜詝詞�詟詠詡詢詣詤詥試詧詨詩詪詫詬詭詮詯詰話該詳詴詵詶詷詸詺詻詼詽詾詿誀浴寓裕预豫驭鸳渊冤元垣袁原援辕园员圆猿源缘远苑愿怨院曰约越跃钥岳粤月悦阅耘云郧匀陨允运蕴酝晕韵孕匝砸杂栽哉灾宰载再在咱攒暂赞赃脏葬遭糟凿藻枣早澡蚤躁噪造皂灶燥责择则泽贼怎增憎曾赠扎喳渣札轧�".split(""); +for(j = 0; j != D[212].length; ++j) if(D[212][j].charCodeAt(0) !== 0xFFFD) { e[D[212][j]] = 54272 + j; d[54272 + j] = D[212][j];} +D[213] = "����������������������������������������������������������������誁誂誃誄誅誆誇誈誋誌認誎誏誐誑誒誔誕誖誗誘誙誚誛誜誝語誟誠誡誢誣誤誥誦誧誨誩說誫説読誮誯誰誱課誳誴誵誶誷誸誹誺誻誼誽誾調諀諁諂�諃諄諅諆談諈諉諊請諌諍諎諏諐諑諒諓諔諕論諗諘諙諚諛諜諝諞諟諠諡諢諣铡闸眨栅榨咋乍炸诈摘斋宅窄债寨瞻毡詹粘沾盏斩辗崭展蘸栈占战站湛绽樟章彰漳张掌涨杖丈帐账仗胀瘴障招昭找沼赵照罩兆肇召遮折哲蛰辙者锗蔗这浙珍斟真甄砧臻贞针侦枕疹诊震振镇阵蒸挣睁征狰争怔整拯正政�".split(""); +for(j = 0; j != D[213].length; ++j) if(D[213][j].charCodeAt(0) !== 0xFFFD) { e[D[213][j]] = 54528 + j; d[54528 + j] = D[213][j];} +D[214] = "����������������������������������������������������������������諤諥諦諧諨諩諪諫諬諭諮諯諰諱諲諳諴諵諶諷諸諹諺諻諼諽諾諿謀謁謂謃謄謅謆謈謉謊謋謌謍謎謏謐謑謒謓謔謕謖謗謘謙謚講謜謝謞謟謠謡謢謣�謤謥謧謨謩謪謫謬謭謮謯謰謱謲謳謴謵謶謷謸謹謺謻謼謽謾謿譀譁譂譃譄譅帧症郑证芝枝支吱蜘知肢脂汁之织职直植殖执值侄址指止趾只旨纸志挚掷至致置帜峙制智秩稚质炙痔滞治窒中盅忠钟衷终种肿重仲众舟周州洲诌粥轴肘帚咒皱宙昼骤珠株蛛朱猪诸诛逐竹烛煮拄瞩嘱主著柱助蛀贮铸筑�".split(""); +for(j = 0; j != D[214].length; ++j) if(D[214][j].charCodeAt(0) !== 0xFFFD) { e[D[214][j]] = 54784 + j; d[54784 + j] = D[214][j];} +D[215] = "����������������������������������������������������������������譆譇譈證譊譋譌譍譎譏譐譑譒譓譔譕譖譗識譙譚譛譜譝譞譟譠譡譢譣譤譥譧譨譩譪譫譭譮譯議譱譲譳譴譵譶護譸譹譺譻譼譽譾譿讀讁讂讃讄讅讆�讇讈讉變讋讌讍讎讏讐讑讒讓讔讕讖讗讘讙讚讛讜讝讞讟讬讱讻诇诐诪谉谞住注祝驻抓爪拽专砖转撰赚篆桩庄装妆撞壮状椎锥追赘坠缀谆准捉拙卓桌琢茁酌啄着灼浊兹咨资姿滋淄孜紫仔籽滓子自渍字鬃棕踪宗综总纵邹走奏揍租足卒族祖诅阻组钻纂嘴醉最罪尊遵昨左佐柞做作坐座�".split(""); +for(j = 0; j != D[215].length; ++j) if(D[215][j].charCodeAt(0) !== 0xFFFD) { e[D[215][j]] = 55040 + j; d[55040 + j] = D[215][j];} +D[216] = "����������������������������������������������������������������谸谹谺谻谼谽谾谿豀豂豃豄豅豈豊豋豍豎豏豐豑豒豓豔豖豗豘豙豛豜豝豞豟豠豣豤豥豦豧豨豩豬豭豮豯豰豱豲豴豵豶豷豻豼豽豾豿貀貁貃貄貆貇�貈貋貍貎貏貐貑貒貓貕貖貗貙貚貛貜貝貞貟負財貢貣貤貥貦貧貨販貪貫責貭亍丌兀丐廿卅丕亘丞鬲孬噩丨禺丿匕乇夭爻卮氐囟胤馗毓睾鼗丶亟鼐乜乩亓芈孛啬嘏仄厍厝厣厥厮靥赝匚叵匦匮匾赜卦卣刂刈刎刭刳刿剀剌剞剡剜蒯剽劂劁劐劓冂罔亻仃仉仂仨仡仫仞伛仳伢佤仵伥伧伉伫佞佧攸佚佝�".split(""); +for(j = 0; j != D[216].length; ++j) if(D[216][j].charCodeAt(0) !== 0xFFFD) { e[D[216][j]] = 55296 + j; d[55296 + j] = D[216][j];} +D[217] = "����������������������������������������������������������������貮貯貰貱貲貳貴貵貶買貸貹貺費貼貽貾貿賀賁賂賃賄賅賆資賈賉賊賋賌賍賎賏賐賑賒賓賔賕賖賗賘賙賚賛賜賝賞賟賠賡賢賣賤賥賦賧賨賩質賫賬�賭賮賯賰賱賲賳賴賵賶賷賸賹賺賻購賽賾賿贀贁贂贃贄贅贆贇贈贉贊贋贌贍佟佗伲伽佶佴侑侉侃侏佾佻侪佼侬侔俦俨俪俅俚俣俜俑俟俸倩偌俳倬倏倮倭俾倜倌倥倨偾偃偕偈偎偬偻傥傧傩傺僖儆僭僬僦僮儇儋仝氽佘佥俎龠汆籴兮巽黉馘冁夔勹匍訇匐凫夙兕亠兖亳衮袤亵脔裒禀嬴蠃羸冫冱冽冼�".split(""); +for(j = 0; j != D[217].length; ++j) if(D[217][j].charCodeAt(0) !== 0xFFFD) { e[D[217][j]] = 55552 + j; d[55552 + j] = D[217][j];} +D[218] = "����������������������������������������������������������������贎贏贐贑贒贓贔贕贖贗贘贙贚贛贜贠赑赒赗赟赥赨赩赪赬赮赯赱赲赸赹赺赻赼赽赾赿趀趂趃趆趇趈趉趌趍趎趏趐趒趓趕趖趗趘趙趚趛趜趝趞趠趡�趢趤趥趦趧趨趩趪趫趬趭趮趯趰趲趶趷趹趻趽跀跁跂跅跇跈跉跊跍跐跒跓跔凇冖冢冥讠讦讧讪讴讵讷诂诃诋诏诎诒诓诔诖诘诙诜诟诠诤诨诩诮诰诳诶诹诼诿谀谂谄谇谌谏谑谒谔谕谖谙谛谘谝谟谠谡谥谧谪谫谮谯谲谳谵谶卩卺阝阢阡阱阪阽阼陂陉陔陟陧陬陲陴隈隍隗隰邗邛邝邙邬邡邴邳邶邺�".split(""); +for(j = 0; j != D[218].length; ++j) if(D[218][j].charCodeAt(0) !== 0xFFFD) { e[D[218][j]] = 55808 + j; d[55808 + j] = D[218][j];} +D[219] = "����������������������������������������������������������������跕跘跙跜跠跡跢跥跦跧跩跭跮跰跱跲跴跶跼跾跿踀踁踂踃踄踆踇踈踋踍踎踐踑踒踓踕踖踗踘踙踚踛踜踠踡踤踥踦踧踨踫踭踰踲踳踴踶踷踸踻踼踾�踿蹃蹅蹆蹌蹍蹎蹏蹐蹓蹔蹕蹖蹗蹘蹚蹛蹜蹝蹞蹟蹠蹡蹢蹣蹤蹥蹧蹨蹪蹫蹮蹱邸邰郏郅邾郐郄郇郓郦郢郜郗郛郫郯郾鄄鄢鄞鄣鄱鄯鄹酃酆刍奂劢劬劭劾哿勐勖勰叟燮矍廴凵凼鬯厶弁畚巯坌垩垡塾墼壅壑圩圬圪圳圹圮圯坜圻坂坩垅坫垆坼坻坨坭坶坳垭垤垌垲埏垧垴垓垠埕埘埚埙埒垸埴埯埸埤埝�".split(""); +for(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];} +D[220] = "����������������������������������������������������������������蹳蹵蹷蹸蹹蹺蹻蹽蹾躀躂躃躄躆躈躉躊躋躌躍躎躑躒躓躕躖躗躘躙躚躛躝躟躠躡躢躣躤躥躦躧躨躩躪躭躮躰躱躳躴躵躶躷躸躹躻躼躽躾躿軀軁軂�軃軄軅軆軇軈軉車軋軌軍軏軐軑軒軓軔軕軖軗軘軙軚軛軜軝軞軟軠軡転軣軤堋堍埽埭堀堞堙塄堠塥塬墁墉墚墀馨鼙懿艹艽艿芏芊芨芄芎芑芗芙芫芸芾芰苈苊苣芘芷芮苋苌苁芩芴芡芪芟苄苎芤苡茉苷苤茏茇苜苴苒苘茌苻苓茑茚茆茔茕苠苕茜荑荛荜茈莒茼茴茱莛荞茯荏荇荃荟荀茗荠茭茺茳荦荥�".split(""); +for(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];} +D[221] = "����������������������������������������������������������������軥軦軧軨軩軪軫軬軭軮軯軰軱軲軳軴軵軶軷軸軹軺軻軼軽軾軿輀輁輂較輄輅輆輇輈載輊輋輌輍輎輏輐輑輒輓輔輕輖輗輘輙輚輛輜輝輞輟輠輡輢輣�輤輥輦輧輨輩輪輫輬輭輮輯輰輱輲輳輴輵輶輷輸輹輺輻輼輽輾輿轀轁轂轃轄荨茛荩荬荪荭荮莰荸莳莴莠莪莓莜莅荼莶莩荽莸荻莘莞莨莺莼菁萁菥菘堇萘萋菝菽菖萜萸萑萆菔菟萏萃菸菹菪菅菀萦菰菡葜葑葚葙葳蒇蒈葺蒉葸萼葆葩葶蒌蒎萱葭蓁蓍蓐蓦蒽蓓蓊蒿蒺蓠蒡蒹蒴蒗蓥蓣蔌甍蔸蓰蔹蔟蔺�".split(""); +for(j = 0; j != D[221].length; ++j) if(D[221][j].charCodeAt(0) !== 0xFFFD) { e[D[221][j]] = 56576 + j; d[56576 + j] = D[221][j];} +D[222] = "����������������������������������������������������������������轅轆轇轈轉轊轋轌轍轎轏轐轑轒轓轔轕轖轗轘轙轚轛轜轝轞轟轠轡轢轣轤轥轪辀辌辒辝辠辡辢辤辥辦辧辪辬辭辮辯農辳辴辵辷辸辺辻込辿迀迃迆�迉迊迋迌迍迏迒迖迗迚迠迡迣迧迬迯迱迲迴迵迶迺迻迼迾迿逇逈逌逎逓逕逘蕖蔻蓿蓼蕙蕈蕨蕤蕞蕺瞢蕃蕲蕻薤薨薇薏蕹薮薜薅薹薷薰藓藁藜藿蘧蘅蘩蘖蘼廾弈夼奁耷奕奚奘匏尢尥尬尴扌扪抟抻拊拚拗拮挢拶挹捋捃掭揶捱捺掎掴捭掬掊捩掮掼揲揸揠揿揄揞揎摒揆掾摅摁搋搛搠搌搦搡摞撄摭撖�".split(""); +for(j = 0; j != D[222].length; ++j) if(D[222][j].charCodeAt(0) !== 0xFFFD) { e[D[222][j]] = 56832 + j; d[56832 + j] = D[222][j];} +D[223] = "����������������������������������������������������������������這逜連逤逥逧逨逩逪逫逬逰週進逳逴逷逹逺逽逿遀遃遅遆遈遉遊運遌過達違遖遙遚遜遝遞遟遠遡遤遦遧適遪遫遬遯遰遱遲遳遶遷選遹遺遻遼遾邁�還邅邆邇邉邊邌邍邎邏邐邒邔邖邘邚邜邞邟邠邤邥邧邨邩邫邭邲邷邼邽邿郀摺撷撸撙撺擀擐擗擤擢攉攥攮弋忒甙弑卟叱叽叩叨叻吒吖吆呋呒呓呔呖呃吡呗呙吣吲咂咔呷呱呤咚咛咄呶呦咝哐咭哂咴哒咧咦哓哔呲咣哕咻咿哌哙哚哜咩咪咤哝哏哞唛哧唠哽唔哳唢唣唏唑唧唪啧喏喵啉啭啁啕唿啐唼�".split(""); +for(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];} +D[224] = "����������������������������������������������������������������郂郃郆郈郉郋郌郍郒郔郕郖郘郙郚郞郟郠郣郤郥郩郪郬郮郰郱郲郳郵郶郷郹郺郻郼郿鄀鄁鄃鄅鄆鄇鄈鄉鄊鄋鄌鄍鄎鄏鄐鄑鄒鄓鄔鄕鄖鄗鄘鄚鄛鄜�鄝鄟鄠鄡鄤鄥鄦鄧鄨鄩鄪鄫鄬鄭鄮鄰鄲鄳鄴鄵鄶鄷鄸鄺鄻鄼鄽鄾鄿酀酁酂酄唷啖啵啶啷唳唰啜喋嗒喃喱喹喈喁喟啾嗖喑啻嗟喽喾喔喙嗪嗷嗉嘟嗑嗫嗬嗔嗦嗝嗄嗯嗥嗲嗳嗌嗍嗨嗵嗤辔嘞嘈嘌嘁嘤嘣嗾嘀嘧嘭噘嘹噗嘬噍噢噙噜噌噔嚆噤噱噫噻噼嚅嚓嚯囔囗囝囡囵囫囹囿圄圊圉圜帏帙帔帑帱帻帼�".split(""); +for(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];} +D[225] = "����������������������������������������������������������������酅酇酈酑酓酔酕酖酘酙酛酜酟酠酦酧酨酫酭酳酺酻酼醀醁醂醃醄醆醈醊醎醏醓醔醕醖醗醘醙醜醝醞醟醠醡醤醥醦醧醨醩醫醬醰醱醲醳醶醷醸醹醻�醼醽醾醿釀釁釂釃釄釅釆釈釋釐釒釓釔釕釖釗釘釙釚釛針釞釟釠釡釢釣釤釥帷幄幔幛幞幡岌屺岍岐岖岈岘岙岑岚岜岵岢岽岬岫岱岣峁岷峄峒峤峋峥崂崃崧崦崮崤崞崆崛嵘崾崴崽嵬嵛嵯嵝嵫嵋嵊嵩嵴嶂嶙嶝豳嶷巅彳彷徂徇徉後徕徙徜徨徭徵徼衢彡犭犰犴犷犸狃狁狎狍狒狨狯狩狲狴狷猁狳猃狺�".split(""); +for(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];} +D[226] = "����������������������������������������������������������������釦釧釨釩釪釫釬釭釮釯釰釱釲釳釴釵釶釷釸釹釺釻釼釽釾釿鈀鈁鈂鈃鈄鈅鈆鈇鈈鈉鈊鈋鈌鈍鈎鈏鈐鈑鈒鈓鈔鈕鈖鈗鈘鈙鈚鈛鈜鈝鈞鈟鈠鈡鈢鈣鈤�鈥鈦鈧鈨鈩鈪鈫鈬鈭鈮鈯鈰鈱鈲鈳鈴鈵鈶鈷鈸鈹鈺鈻鈼鈽鈾鈿鉀鉁鉂鉃鉄鉅狻猗猓猡猊猞猝猕猢猹猥猬猸猱獐獍獗獠獬獯獾舛夥飧夤夂饣饧饨饩饪饫饬饴饷饽馀馄馇馊馍馐馑馓馔馕庀庑庋庖庥庠庹庵庾庳赓廒廑廛廨廪膺忄忉忖忏怃忮怄忡忤忾怅怆忪忭忸怙怵怦怛怏怍怩怫怊怿怡恸恹恻恺恂�".split(""); +for(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];} +D[227] = "����������������������������������������������������������������鉆鉇鉈鉉鉊鉋鉌鉍鉎鉏鉐鉑鉒鉓鉔鉕鉖鉗鉘鉙鉚鉛鉜鉝鉞鉟鉠鉡鉢鉣鉤鉥鉦鉧鉨鉩鉪鉫鉬鉭鉮鉯鉰鉱鉲鉳鉵鉶鉷鉸鉹鉺鉻鉼鉽鉾鉿銀銁銂銃銄銅�銆銇銈銉銊銋銌銍銏銐銑銒銓銔銕銖銗銘銙銚銛銜銝銞銟銠銡銢銣銤銥銦銧恪恽悖悚悭悝悃悒悌悛惬悻悱惝惘惆惚悴愠愦愕愣惴愀愎愫慊慵憬憔憧憷懔懵忝隳闩闫闱闳闵闶闼闾阃阄阆阈阊阋阌阍阏阒阕阖阗阙阚丬爿戕氵汔汜汊沣沅沐沔沌汨汩汴汶沆沩泐泔沭泷泸泱泗沲泠泖泺泫泮沱泓泯泾�".split(""); +for(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];} +D[228] = "����������������������������������������������������������������銨銩銪銫銬銭銯銰銱銲銳銴銵銶銷銸銹銺銻銼銽銾銿鋀鋁鋂鋃鋄鋅鋆鋇鋉鋊鋋鋌鋍鋎鋏鋐鋑鋒鋓鋔鋕鋖鋗鋘鋙鋚鋛鋜鋝鋞鋟鋠鋡鋢鋣鋤鋥鋦鋧鋨�鋩鋪鋫鋬鋭鋮鋯鋰鋱鋲鋳鋴鋵鋶鋷鋸鋹鋺鋻鋼鋽鋾鋿錀錁錂錃錄錅錆錇錈錉洹洧洌浃浈洇洄洙洎洫浍洮洵洚浏浒浔洳涑浯涞涠浞涓涔浜浠浼浣渚淇淅淞渎涿淠渑淦淝淙渖涫渌涮渫湮湎湫溲湟溆湓湔渲渥湄滟溱溘滠漭滢溥溧溽溻溷滗溴滏溏滂溟潢潆潇漤漕滹漯漶潋潴漪漉漩澉澍澌潸潲潼潺濑�".split(""); +for(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];} +D[229] = "����������������������������������������������������������������錊錋錌錍錎錏錐錑錒錓錔錕錖錗錘錙錚錛錜錝錞錟錠錡錢錣錤錥錦錧錨錩錪錫錬錭錮錯錰錱録錳錴錵錶錷錸錹錺錻錼錽錿鍀鍁鍂鍃鍄鍅鍆鍇鍈鍉�鍊鍋鍌鍍鍎鍏鍐鍑鍒鍓鍔鍕鍖鍗鍘鍙鍚鍛鍜鍝鍞鍟鍠鍡鍢鍣鍤鍥鍦鍧鍨鍩鍫濉澧澹澶濂濡濮濞濠濯瀚瀣瀛瀹瀵灏灞宀宄宕宓宥宸甯骞搴寤寮褰寰蹇謇辶迓迕迥迮迤迩迦迳迨逅逄逋逦逑逍逖逡逵逶逭逯遄遑遒遐遨遘遢遛暹遴遽邂邈邃邋彐彗彖彘尻咫屐屙孱屣屦羼弪弩弭艴弼鬻屮妁妃妍妩妪妣�".split(""); +for(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];} +D[230] = "����������������������������������������������������������������鍬鍭鍮鍯鍰鍱鍲鍳鍴鍵鍶鍷鍸鍹鍺鍻鍼鍽鍾鍿鎀鎁鎂鎃鎄鎅鎆鎇鎈鎉鎊鎋鎌鎍鎎鎐鎑鎒鎓鎔鎕鎖鎗鎘鎙鎚鎛鎜鎝鎞鎟鎠鎡鎢鎣鎤鎥鎦鎧鎨鎩鎪鎫�鎬鎭鎮鎯鎰鎱鎲鎳鎴鎵鎶鎷鎸鎹鎺鎻鎼鎽鎾鎿鏀鏁鏂鏃鏄鏅鏆鏇鏈鏉鏋鏌鏍妗姊妫妞妤姒妲妯姗妾娅娆姝娈姣姘姹娌娉娲娴娑娣娓婀婧婊婕娼婢婵胬媪媛婷婺媾嫫媲嫒嫔媸嫠嫣嫱嫖嫦嫘嫜嬉嬗嬖嬲嬷孀尕尜孚孥孳孑孓孢驵驷驸驺驿驽骀骁骅骈骊骐骒骓骖骘骛骜骝骟骠骢骣骥骧纟纡纣纥纨纩�".split(""); +for(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];} +D[231] = "����������������������������������������������������������������鏎鏏鏐鏑鏒鏓鏔鏕鏗鏘鏙鏚鏛鏜鏝鏞鏟鏠鏡鏢鏣鏤鏥鏦鏧鏨鏩鏪鏫鏬鏭鏮鏯鏰鏱鏲鏳鏴鏵鏶鏷鏸鏹鏺鏻鏼鏽鏾鏿鐀鐁鐂鐃鐄鐅鐆鐇鐈鐉鐊鐋鐌鐍�鐎鐏鐐鐑鐒鐓鐔鐕鐖鐗鐘鐙鐚鐛鐜鐝鐞鐟鐠鐡鐢鐣鐤鐥鐦鐧鐨鐩鐪鐫鐬鐭鐮纭纰纾绀绁绂绉绋绌绐绔绗绛绠绡绨绫绮绯绱绲缍绶绺绻绾缁缂缃缇缈缋缌缏缑缒缗缙缜缛缟缡缢缣缤缥缦缧缪缫缬缭缯缰缱缲缳缵幺畿巛甾邕玎玑玮玢玟珏珂珑玷玳珀珉珈珥珙顼琊珩珧珞玺珲琏琪瑛琦琥琨琰琮琬�".split(""); +for(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];} +D[232] = "����������������������������������������������������������������鐯鐰鐱鐲鐳鐴鐵鐶鐷鐸鐹鐺鐻鐼鐽鐿鑀鑁鑂鑃鑄鑅鑆鑇鑈鑉鑊鑋鑌鑍鑎鑏鑐鑑鑒鑓鑔鑕鑖鑗鑘鑙鑚鑛鑜鑝鑞鑟鑠鑡鑢鑣鑤鑥鑦鑧鑨鑩鑪鑬鑭鑮鑯�鑰鑱鑲鑳鑴鑵鑶鑷鑸鑹鑺鑻鑼鑽鑾鑿钀钁钂钃钄钑钖钘铇铏铓铔铚铦铻锜锠琛琚瑁瑜瑗瑕瑙瑷瑭瑾璜璎璀璁璇璋璞璨璩璐璧瓒璺韪韫韬杌杓杞杈杩枥枇杪杳枘枧杵枨枞枭枋杷杼柰栉柘栊柩枰栌柙枵柚枳柝栀柃枸柢栎柁柽栲栳桠桡桎桢桄桤梃栝桕桦桁桧桀栾桊桉栩梵梏桴桷梓桫棂楮棼椟椠棹�".split(""); +for(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];} +D[233] = "����������������������������������������������������������������锧锳锽镃镈镋镕镚镠镮镴镵長镸镹镺镻镼镽镾門閁閂閃閄閅閆閇閈閉閊開閌閍閎閏閐閑閒間閔閕閖閗閘閙閚閛閜閝閞閟閠閡関閣閤閥閦閧閨閩閪�閫閬閭閮閯閰閱閲閳閴閵閶閷閸閹閺閻閼閽閾閿闀闁闂闃闄闅闆闇闈闉闊闋椤棰椋椁楗棣椐楱椹楠楂楝榄楫榀榘楸椴槌榇榈槎榉楦楣楹榛榧榻榫榭槔榱槁槊槟榕槠榍槿樯槭樗樘橥槲橄樾檠橐橛樵檎橹樽樨橘橼檑檐檩檗檫猷獒殁殂殇殄殒殓殍殚殛殡殪轫轭轱轲轳轵轶轸轷轹轺轼轾辁辂辄辇辋�".split(""); +for(j = 0; j != D[233].length; ++j) if(D[233][j].charCodeAt(0) !== 0xFFFD) { e[D[233][j]] = 59648 + j; d[59648 + j] = D[233][j];} +D[234] = "����������������������������������������������������������������闌闍闎闏闐闑闒闓闔闕闖闗闘闙闚闛關闝闞闟闠闡闢闣闤闥闦闧闬闿阇阓阘阛阞阠阣阤阥阦阧阨阩阫阬阭阯阰阷阸阹阺阾陁陃陊陎陏陑陒陓陖陗�陘陙陚陜陝陞陠陣陥陦陫陭陮陯陰陱陳陸陹険陻陼陽陾陿隀隁隂隃隄隇隉隊辍辎辏辘辚軎戋戗戛戟戢戡戥戤戬臧瓯瓴瓿甏甑甓攴旮旯旰昊昙杲昃昕昀炅曷昝昴昱昶昵耆晟晔晁晏晖晡晗晷暄暌暧暝暾曛曜曦曩贲贳贶贻贽赀赅赆赈赉赇赍赕赙觇觊觋觌觎觏觐觑牮犟牝牦牯牾牿犄犋犍犏犒挈挲掰�".split(""); +for(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];} +D[235] = "����������������������������������������������������������������隌階隑隒隓隕隖隚際隝隞隟隠隡隢隣隤隥隦隨隩險隫隬隭隮隯隱隲隴隵隷隸隺隻隿雂雃雈雊雋雐雑雓雔雖雗雘雙雚雛雜雝雞雟雡離難雤雥雦雧雫�雬雭雮雰雱雲雴雵雸雺電雼雽雿霂霃霅霊霋霌霐霑霒霔霕霗霘霙霚霛霝霟霠搿擘耄毪毳毽毵毹氅氇氆氍氕氘氙氚氡氩氤氪氲攵敕敫牍牒牖爰虢刖肟肜肓肼朊肽肱肫肭肴肷胧胨胩胪胛胂胄胙胍胗朐胝胫胱胴胭脍脎胲胼朕脒豚脶脞脬脘脲腈腌腓腴腙腚腱腠腩腼腽腭腧塍媵膈膂膑滕膣膪臌朦臊膻�".split(""); +for(j = 0; j != D[235].length; ++j) if(D[235][j].charCodeAt(0) !== 0xFFFD) { e[D[235][j]] = 60160 + j; d[60160 + j] = D[235][j];} +D[236] = "����������������������������������������������������������������霡霢霣霤霥霦霧霨霩霫霬霮霯霱霳霴霵霶霷霺霻霼霽霿靀靁靂靃靄靅靆靇靈靉靊靋靌靍靎靏靐靑靔靕靗靘靚靜靝靟靣靤靦靧靨靪靫靬靭靮靯靰靱�靲靵靷靸靹靺靻靽靾靿鞀鞁鞂鞃鞄鞆鞇鞈鞉鞊鞌鞎鞏鞐鞓鞕鞖鞗鞙鞚鞛鞜鞝臁膦欤欷欹歃歆歙飑飒飓飕飙飚殳彀毂觳斐齑斓於旆旄旃旌旎旒旖炀炜炖炝炻烀炷炫炱烨烊焐焓焖焯焱煳煜煨煅煲煊煸煺熘熳熵熨熠燠燔燧燹爝爨灬焘煦熹戾戽扃扈扉礻祀祆祉祛祜祓祚祢祗祠祯祧祺禅禊禚禧禳忑忐�".split(""); +for(j = 0; j != D[236].length; ++j) if(D[236][j].charCodeAt(0) !== 0xFFFD) { e[D[236][j]] = 60416 + j; d[60416 + j] = D[236][j];} +D[237] = "����������������������������������������������������������������鞞鞟鞡鞢鞤鞥鞦鞧鞨鞩鞪鞬鞮鞰鞱鞳鞵鞶鞷鞸鞹鞺鞻鞼鞽鞾鞿韀韁韂韃韄韅韆韇韈韉韊韋韌韍韎韏韐韑韒韓韔韕韖韗韘韙韚韛韜韝韞韟韠韡韢韣�韤韥韨韮韯韰韱韲韴韷韸韹韺韻韼韽韾響頀頁頂頃頄項順頇須頉頊頋頌頍頎怼恝恚恧恁恙恣悫愆愍慝憩憝懋懑戆肀聿沓泶淼矶矸砀砉砗砘砑斫砭砜砝砹砺砻砟砼砥砬砣砩硎硭硖硗砦硐硇硌硪碛碓碚碇碜碡碣碲碹碥磔磙磉磬磲礅磴礓礤礞礴龛黹黻黼盱眄眍盹眇眈眚眢眙眭眦眵眸睐睑睇睃睚睨�".split(""); +for(j = 0; j != D[237].length; ++j) if(D[237][j].charCodeAt(0) !== 0xFFFD) { e[D[237][j]] = 60672 + j; d[60672 + j] = D[237][j];} +D[238] = "����������������������������������������������������������������頏預頑頒頓頔頕頖頗領頙頚頛頜頝頞頟頠頡頢頣頤頥頦頧頨頩頪頫頬頭頮頯頰頱頲頳頴頵頶頷頸頹頺頻頼頽頾頿顀顁顂顃顄顅顆顇顈顉顊顋題額�顎顏顐顑顒顓顔顕顖顗願顙顚顛顜顝類顟顠顡顢顣顤顥顦顧顨顩顪顫顬顭顮睢睥睿瞍睽瞀瞌瞑瞟瞠瞰瞵瞽町畀畎畋畈畛畲畹疃罘罡罟詈罨罴罱罹羁罾盍盥蠲钅钆钇钋钊钌钍钏钐钔钗钕钚钛钜钣钤钫钪钭钬钯钰钲钴钶钷钸钹钺钼钽钿铄铈铉铊铋铌铍铎铐铑铒铕铖铗铙铘铛铞铟铠铢铤铥铧铨铪�".split(""); +for(j = 0; j != D[238].length; ++j) if(D[238][j].charCodeAt(0) !== 0xFFFD) { e[D[238][j]] = 60928 + j; d[60928 + j] = D[238][j];} +D[239] = "����������������������������������������������������������������顯顰顱顲顳顴颋颎颒颕颙颣風颩颪颫颬颭颮颯颰颱颲颳颴颵颶颷颸颹颺颻颼颽颾颿飀飁飂飃飄飅飆飇飈飉飊飋飌飍飏飐飔飖飗飛飜飝飠飡飢飣飤�飥飦飩飪飫飬飭飮飯飰飱飲飳飴飵飶飷飸飹飺飻飼飽飾飿餀餁餂餃餄餅餆餇铩铫铮铯铳铴铵铷铹铼铽铿锃锂锆锇锉锊锍锎锏锒锓锔锕锖锘锛锝锞锟锢锪锫锩锬锱锲锴锶锷锸锼锾锿镂锵镄镅镆镉镌镎镏镒镓镔镖镗镘镙镛镞镟镝镡镢镤镥镦镧镨镩镪镫镬镯镱镲镳锺矧矬雉秕秭秣秫稆嵇稃稂稞稔�".split(""); +for(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];} +D[240] = "����������������������������������������������������������������餈餉養餋餌餎餏餑餒餓餔餕餖餗餘餙餚餛餜餝餞餟餠餡餢餣餤餥餦餧館餩餪餫餬餭餯餰餱餲餳餴餵餶餷餸餹餺餻餼餽餾餿饀饁饂饃饄饅饆饇饈饉�饊饋饌饍饎饏饐饑饒饓饖饗饘饙饚饛饜饝饞饟饠饡饢饤饦饳饸饹饻饾馂馃馉稹稷穑黏馥穰皈皎皓皙皤瓞瓠甬鸠鸢鸨鸩鸪鸫鸬鸲鸱鸶鸸鸷鸹鸺鸾鹁鹂鹄鹆鹇鹈鹉鹋鹌鹎鹑鹕鹗鹚鹛鹜鹞鹣鹦鹧鹨鹩鹪鹫鹬鹱鹭鹳疒疔疖疠疝疬疣疳疴疸痄疱疰痃痂痖痍痣痨痦痤痫痧瘃痱痼痿瘐瘀瘅瘌瘗瘊瘥瘘瘕瘙�".split(""); +for(j = 0; j != D[240].length; ++j) if(D[240][j].charCodeAt(0) !== 0xFFFD) { e[D[240][j]] = 61440 + j; d[61440 + j] = D[240][j];} +D[241] = "����������������������������������������������������������������馌馎馚馛馜馝馞馟馠馡馢馣馤馦馧馩馪馫馬馭馮馯馰馱馲馳馴馵馶馷馸馹馺馻馼馽馾馿駀駁駂駃駄駅駆駇駈駉駊駋駌駍駎駏駐駑駒駓駔駕駖駗駘�駙駚駛駜駝駞駟駠駡駢駣駤駥駦駧駨駩駪駫駬駭駮駯駰駱駲駳駴駵駶駷駸駹瘛瘼瘢瘠癀瘭瘰瘿瘵癃瘾瘳癍癞癔癜癖癫癯翊竦穸穹窀窆窈窕窦窠窬窨窭窳衤衩衲衽衿袂袢裆袷袼裉裢裎裣裥裱褚裼裨裾裰褡褙褓褛褊褴褫褶襁襦襻疋胥皲皴矜耒耔耖耜耠耢耥耦耧耩耨耱耋耵聃聆聍聒聩聱覃顸颀颃�".split(""); +for(j = 0; j != D[241].length; ++j) if(D[241][j].charCodeAt(0) !== 0xFFFD) { e[D[241][j]] = 61696 + j; d[61696 + j] = D[241][j];} +D[242] = "����������������������������������������������������������������駺駻駼駽駾駿騀騁騂騃騄騅騆騇騈騉騊騋騌騍騎騏騐騑騒験騔騕騖騗騘騙騚騛騜騝騞騟騠騡騢騣騤騥騦騧騨騩騪騫騬騭騮騯騰騱騲騳騴騵騶騷騸�騹騺騻騼騽騾騿驀驁驂驃驄驅驆驇驈驉驊驋驌驍驎驏驐驑驒驓驔驕驖驗驘驙颉颌颍颏颔颚颛颞颟颡颢颥颦虍虔虬虮虿虺虼虻蚨蚍蚋蚬蚝蚧蚣蚪蚓蚩蚶蛄蚵蛎蚰蚺蚱蚯蛉蛏蚴蛩蛱蛲蛭蛳蛐蜓蛞蛴蛟蛘蛑蜃蜇蛸蜈蜊蜍蜉蜣蜻蜞蜥蜮蜚蜾蝈蜴蜱蜩蜷蜿螂蜢蝽蝾蝻蝠蝰蝌蝮螋蝓蝣蝼蝤蝙蝥螓螯螨蟒�".split(""); +for(j = 0; j != D[242].length; ++j) if(D[242][j].charCodeAt(0) !== 0xFFFD) { e[D[242][j]] = 61952 + j; d[61952 + j] = D[242][j];} +D[243] = "����������������������������������������������������������������驚驛驜驝驞驟驠驡驢驣驤驥驦驧驨驩驪驫驲骃骉骍骎骔骕骙骦骩骪骫骬骭骮骯骲骳骴骵骹骻骽骾骿髃髄髆髇髈髉髊髍髎髏髐髒體髕髖髗髙髚髛髜�髝髞髠髢髣髤髥髧髨髩髪髬髮髰髱髲髳髴髵髶髷髸髺髼髽髾髿鬀鬁鬂鬄鬅鬆蟆螈螅螭螗螃螫蟥螬螵螳蟋蟓螽蟑蟀蟊蟛蟪蟠蟮蠖蠓蟾蠊蠛蠡蠹蠼缶罂罄罅舐竺竽笈笃笄笕笊笫笏筇笸笪笙笮笱笠笥笤笳笾笞筘筚筅筵筌筝筠筮筻筢筲筱箐箦箧箸箬箝箨箅箪箜箢箫箴篑篁篌篝篚篥篦篪簌篾篼簏簖簋�".split(""); +for(j = 0; j != D[243].length; ++j) if(D[243][j].charCodeAt(0) !== 0xFFFD) { e[D[243][j]] = 62208 + j; d[62208 + j] = D[243][j];} +D[244] = "����������������������������������������������������������������鬇鬉鬊鬋鬌鬍鬎鬐鬑鬒鬔鬕鬖鬗鬘鬙鬚鬛鬜鬝鬞鬠鬡鬢鬤鬥鬦鬧鬨鬩鬪鬫鬬鬭鬮鬰鬱鬳鬴鬵鬶鬷鬸鬹鬺鬽鬾鬿魀魆魊魋魌魎魐魒魓魕魖魗魘魙魚�魛魜魝魞魟魠魡魢魣魤魥魦魧魨魩魪魫魬魭魮魯魰魱魲魳魴魵魶魷魸魹魺魻簟簪簦簸籁籀臾舁舂舄臬衄舡舢舣舭舯舨舫舸舻舳舴舾艄艉艋艏艚艟艨衾袅袈裘裟襞羝羟羧羯羰羲籼敉粑粝粜粞粢粲粼粽糁糇糌糍糈糅糗糨艮暨羿翎翕翥翡翦翩翮翳糸絷綦綮繇纛麸麴赳趄趔趑趱赧赭豇豉酊酐酎酏酤�".split(""); +for(j = 0; j != D[244].length; ++j) if(D[244][j].charCodeAt(0) !== 0xFFFD) { e[D[244][j]] = 62464 + j; d[62464 + j] = D[244][j];} +D[245] = "����������������������������������������������������������������魼魽魾魿鮀鮁鮂鮃鮄鮅鮆鮇鮈鮉鮊鮋鮌鮍鮎鮏鮐鮑鮒鮓鮔鮕鮖鮗鮘鮙鮚鮛鮜鮝鮞鮟鮠鮡鮢鮣鮤鮥鮦鮧鮨鮩鮪鮫鮬鮭鮮鮯鮰鮱鮲鮳鮴鮵鮶鮷鮸鮹鮺�鮻鮼鮽鮾鮿鯀鯁鯂鯃鯄鯅鯆鯇鯈鯉鯊鯋鯌鯍鯎鯏鯐鯑鯒鯓鯔鯕鯖鯗鯘鯙鯚鯛酢酡酰酩酯酽酾酲酴酹醌醅醐醍醑醢醣醪醭醮醯醵醴醺豕鹾趸跫踅蹙蹩趵趿趼趺跄跖跗跚跞跎跏跛跆跬跷跸跣跹跻跤踉跽踔踝踟踬踮踣踯踺蹀踹踵踽踱蹉蹁蹂蹑蹒蹊蹰蹶蹼蹯蹴躅躏躔躐躜躞豸貂貊貅貘貔斛觖觞觚觜�".split(""); +for(j = 0; j != D[245].length; ++j) if(D[245][j].charCodeAt(0) !== 0xFFFD) { e[D[245][j]] = 62720 + j; d[62720 + j] = D[245][j];} +D[246] = "����������������������������������������������������������������鯜鯝鯞鯟鯠鯡鯢鯣鯤鯥鯦鯧鯨鯩鯪鯫鯬鯭鯮鯯鯰鯱鯲鯳鯴鯵鯶鯷鯸鯹鯺鯻鯼鯽鯾鯿鰀鰁鰂鰃鰄鰅鰆鰇鰈鰉鰊鰋鰌鰍鰎鰏鰐鰑鰒鰓鰔鰕鰖鰗鰘鰙鰚�鰛鰜鰝鰞鰟鰠鰡鰢鰣鰤鰥鰦鰧鰨鰩鰪鰫鰬鰭鰮鰯鰰鰱鰲鰳鰴鰵鰶鰷鰸鰹鰺鰻觥觫觯訾謦靓雩雳雯霆霁霈霏霎霪霭霰霾龀龃龅龆龇龈龉龊龌黾鼋鼍隹隼隽雎雒瞿雠銎銮鋈錾鍪鏊鎏鐾鑫鱿鲂鲅鲆鲇鲈稣鲋鲎鲐鲑鲒鲔鲕鲚鲛鲞鲟鲠鲡鲢鲣鲥鲦鲧鲨鲩鲫鲭鲮鲰鲱鲲鲳鲴鲵鲶鲷鲺鲻鲼鲽鳄鳅鳆鳇鳊鳋�".split(""); +for(j = 0; j != D[246].length; ++j) if(D[246][j].charCodeAt(0) !== 0xFFFD) { e[D[246][j]] = 62976 + j; d[62976 + j] = D[246][j];} +D[247] = "����������������������������������������������������������������鰼鰽鰾鰿鱀鱁鱂鱃鱄鱅鱆鱇鱈鱉鱊鱋鱌鱍鱎鱏鱐鱑鱒鱓鱔鱕鱖鱗鱘鱙鱚鱛鱜鱝鱞鱟鱠鱡鱢鱣鱤鱥鱦鱧鱨鱩鱪鱫鱬鱭鱮鱯鱰鱱鱲鱳鱴鱵鱶鱷鱸鱹鱺�鱻鱽鱾鲀鲃鲄鲉鲊鲌鲏鲓鲖鲗鲘鲙鲝鲪鲬鲯鲹鲾鲿鳀鳁鳂鳈鳉鳑鳒鳚鳛鳠鳡鳌鳍鳎鳏鳐鳓鳔鳕鳗鳘鳙鳜鳝鳟鳢靼鞅鞑鞒鞔鞯鞫鞣鞲鞴骱骰骷鹘骶骺骼髁髀髅髂髋髌髑魅魃魇魉魈魍魑飨餍餮饕饔髟髡髦髯髫髻髭髹鬈鬏鬓鬟鬣麽麾縻麂麇麈麋麒鏖麝麟黛黜黝黠黟黢黩黧黥黪黯鼢鼬鼯鼹鼷鼽鼾齄�".split(""); +for(j = 0; j != D[247].length; ++j) if(D[247][j].charCodeAt(0) !== 0xFFFD) { e[D[247][j]] = 63232 + j; d[63232 + j] = D[247][j];} +D[248] = "����������������������������������������������������������������鳣鳤鳥鳦鳧鳨鳩鳪鳫鳬鳭鳮鳯鳰鳱鳲鳳鳴鳵鳶鳷鳸鳹鳺鳻鳼鳽鳾鳿鴀鴁鴂鴃鴄鴅鴆鴇鴈鴉鴊鴋鴌鴍鴎鴏鴐鴑鴒鴓鴔鴕鴖鴗鴘鴙鴚鴛鴜鴝鴞鴟鴠鴡�鴢鴣鴤鴥鴦鴧鴨鴩鴪鴫鴬鴭鴮鴯鴰鴱鴲鴳鴴鴵鴶鴷鴸鴹鴺鴻鴼鴽鴾鴿鵀鵁鵂�".split(""); +for(j = 0; j != D[248].length; ++j) if(D[248][j].charCodeAt(0) !== 0xFFFD) { e[D[248][j]] = 63488 + j; d[63488 + j] = D[248][j];} +D[249] = "����������������������������������������������������������������鵃鵄鵅鵆鵇鵈鵉鵊鵋鵌鵍鵎鵏鵐鵑鵒鵓鵔鵕鵖鵗鵘鵙鵚鵛鵜鵝鵞鵟鵠鵡鵢鵣鵤鵥鵦鵧鵨鵩鵪鵫鵬鵭鵮鵯鵰鵱鵲鵳鵴鵵鵶鵷鵸鵹鵺鵻鵼鵽鵾鵿鶀鶁�鶂鶃鶄鶅鶆鶇鶈鶉鶊鶋鶌鶍鶎鶏鶐鶑鶒鶓鶔鶕鶖鶗鶘鶙鶚鶛鶜鶝鶞鶟鶠鶡鶢�".split(""); +for(j = 0; j != D[249].length; ++j) if(D[249][j].charCodeAt(0) !== 0xFFFD) { e[D[249][j]] = 63744 + j; d[63744 + j] = D[249][j];} +D[250] = "����������������������������������������������������������������鶣鶤鶥鶦鶧鶨鶩鶪鶫鶬鶭鶮鶯鶰鶱鶲鶳鶴鶵鶶鶷鶸鶹鶺鶻鶼鶽鶾鶿鷀鷁鷂鷃鷄鷅鷆鷇鷈鷉鷊鷋鷌鷍鷎鷏鷐鷑鷒鷓鷔鷕鷖鷗鷘鷙鷚鷛鷜鷝鷞鷟鷠鷡�鷢鷣鷤鷥鷦鷧鷨鷩鷪鷫鷬鷭鷮鷯鷰鷱鷲鷳鷴鷵鷶鷷鷸鷹鷺鷻鷼鷽鷾鷿鸀鸁鸂�".split(""); +for(j = 0; j != D[250].length; ++j) if(D[250][j].charCodeAt(0) !== 0xFFFD) { e[D[250][j]] = 64000 + j; d[64000 + j] = D[250][j];} +D[251] = "����������������������������������������������������������������鸃鸄鸅鸆鸇鸈鸉鸊鸋鸌鸍鸎鸏鸐鸑鸒鸓鸔鸕鸖鸗鸘鸙鸚鸛鸜鸝鸞鸤鸧鸮鸰鸴鸻鸼鹀鹍鹐鹒鹓鹔鹖鹙鹝鹟鹠鹡鹢鹥鹮鹯鹲鹴鹵鹶鹷鹸鹹鹺鹻鹼鹽麀�麁麃麄麅麆麉麊麌麍麎麏麐麑麔麕麖麗麘麙麚麛麜麞麠麡麢麣麤麥麧麨麩麪�".split(""); +for(j = 0; j != D[251].length; ++j) if(D[251][j].charCodeAt(0) !== 0xFFFD) { e[D[251][j]] = 64256 + j; d[64256 + j] = D[251][j];} +D[252] = "����������������������������������������������������������������麫麬麭麮麯麰麱麲麳麵麶麷麹麺麼麿黀黁黂黃黅黆黇黈黊黋黌黐黒黓黕黖黗黙黚點黡黣黤黦黨黫黬黭黮黰黱黲黳黴黵黶黷黸黺黽黿鼀鼁鼂鼃鼄鼅�鼆鼇鼈鼉鼊鼌鼏鼑鼒鼔鼕鼖鼘鼚鼛鼜鼝鼞鼟鼡鼣鼤鼥鼦鼧鼨鼩鼪鼫鼭鼮鼰鼱�".split(""); +for(j = 0; j != D[252].length; ++j) if(D[252][j].charCodeAt(0) !== 0xFFFD) { e[D[252][j]] = 64512 + j; d[64512 + j] = D[252][j];} +D[253] = "����������������������������������������������������������������鼲鼳鼴鼵鼶鼸鼺鼼鼿齀齁齂齃齅齆齇齈齉齊齋齌齍齎齏齒齓齔齕齖齗齘齙齚齛齜齝齞齟齠齡齢齣齤齥齦齧齨齩齪齫齬齭齮齯齰齱齲齳齴齵齶齷齸�齹齺齻齼齽齾龁龂龍龎龏龐龑龒龓龔龕龖龗龘龜龝龞龡龢龣龤龥郎凉秊裏隣�".split(""); +for(j = 0; j != D[253].length; ++j) if(D[253][j].charCodeAt(0) !== 0xFFFD) { e[D[253][j]] = 64768 + j; d[64768 + j] = D[253][j];} +D[254] = "����������������������������������������������������������������兀嗀﨎﨏﨑﨓﨔礼﨟蘒﨡﨣﨤﨧﨨﨩��".split(""); +for(j = 0; j != D[254].length; ++j) if(D[254][j].charCodeAt(0) !== 0xFFFD) { e[D[254][j]] = 65024 + j; d[65024 + j] = D[254][j];} +return {"enc": e, "dec": d }; })(); diff --git a/node_modules/codepage/bits/51932.js b/node_modules/codepage/bits/51932.js new file mode 100644 index 000000000..41d32a09f --- /dev/null +++ b/node_modules/codepage/bits/51932.js @@ -0,0 +1,171 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[51932] = (function(){ var d = [], e = {}, D = [], j; +D[0] = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€�����������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];} +D[142] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������。「」、・ヲァィゥェォャュョッーアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワン゙゚��������������������������������".split(""); +for(j = 0; j != D[142].length; ++j) if(D[142][j].charCodeAt(0) !== 0xFFFD) { e[D[142][j]] = 36352 + j; d[36352 + j] = D[142][j];} +D[161] = "����������������������������������������������������������������������������������������������������������������������������������������������������������������� 、。,.・:;?!゛゜´`¨^ ̄_ヽヾゝゞ〃仝々〆〇ー―‐/\~∥|…‥‘’“”()〔〕[]{}〈〉《》「」『』【】+-±×÷=≠<>≦≧∞∴♂♀°′″℃¥$¢£%#&*@§☆★○●◎◇�".split(""); +for(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];} +D[162] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������◆□■△▲▽▼※〒→←↑↓〓�����������∈∋⊆⊇⊂⊃∪∩��������∧∨¬⇒⇔∀∃�����������∠⊥⌒∂∇≡≒≪≫√∽∝∵∫∬�������ʼn♯♭♪†‡¶����◯�".split(""); +for(j = 0; j != D[162].length; ++j) if(D[162][j].charCodeAt(0) !== 0xFFFD) { e[D[162][j]] = 41472 + j; d[41472 + j] = D[162][j];} +D[163] = "��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������0123456789�������ABCDEFGHIJKLMNOPQRSTUVWXYZ������abcdefghijklmnopqrstuvwxyz�����".split(""); +for(j = 0; j != D[163].length; ++j) if(D[163][j].charCodeAt(0) !== 0xFFFD) { e[D[163][j]] = 41728 + j; d[41728 + j] = D[163][j];} +D[164] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをん������������".split(""); +for(j = 0; j != D[164].length; ++j) if(D[164][j].charCodeAt(0) !== 0xFFFD) { e[D[164][j]] = 41984 + j; d[41984 + j] = D[164][j];} +D[165] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶ���������".split(""); +for(j = 0; j != D[165].length; ++j) if(D[165][j].charCodeAt(0) !== 0xFFFD) { e[D[165][j]] = 42240 + j; d[42240 + j] = D[165][j];} +D[166] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ��������αβγδεζηθικλμνξοπρστυφχψω���������������������������������������".split(""); +for(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];} +D[167] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ���������������абвгдеёжзийклмнопрстуфхцчшщъыьэюя��������������".split(""); +for(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];} +D[168] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂���������������������������������������������������������������".split(""); +for(j = 0; j != D[168].length; ++j) if(D[168][j].charCodeAt(0) !== 0xFFFD) { e[D[168][j]] = 43008 + j; d[43008 + j] = D[168][j];} +D[173] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯⑰⑱⑲⑳ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩ�㍉㌔㌢㍍㌘㌧㌃㌶㍑㍗㌍㌦㌣㌫㍊㌻㎜㎝㎞㎎㎏㏄㎡��������㍻〝〟№㏍℡㊤㊥㊦㊧㊨㈱㈲㈹㍾㍽㍼���∮∑���∟⊿������".split(""); +for(j = 0; j != D[173].length; ++j) if(D[173][j].charCodeAt(0) !== 0xFFFD) { e[D[173][j]] = 44288 + j; d[44288 + j] = D[173][j];} +D[176] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������亜唖娃阿哀愛挨姶逢葵茜穐悪握渥旭葦芦鯵梓圧斡扱宛姐虻飴絢綾鮎或粟袷安庵按暗案闇鞍杏以伊位依偉囲夷委威尉惟意慰易椅為畏異移維緯胃萎衣謂違遺医井亥域育郁磯一壱溢逸稲茨芋鰯允印咽員因姻引飲淫胤蔭�".split(""); +for(j = 0; j != D[176].length; ++j) if(D[176][j].charCodeAt(0) !== 0xFFFD) { e[D[176][j]] = 45056 + j; d[45056 + j] = D[176][j];} +D[177] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������院陰隠韻吋右宇烏羽迂雨卯鵜窺丑碓臼渦嘘唄欝蔚鰻姥厩浦瓜閏噂云運雲荏餌叡営嬰影映曳栄永泳洩瑛盈穎頴英衛詠鋭液疫益駅悦謁越閲榎厭円園堰奄宴延怨掩援沿演炎焔煙燕猿縁艶苑薗遠鉛鴛塩於汚甥凹央奥往応�".split(""); +for(j = 0; j != D[177].length; ++j) if(D[177][j].charCodeAt(0) !== 0xFFFD) { e[D[177][j]] = 45312 + j; d[45312 + j] = D[177][j];} +D[178] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������押旺横欧殴王翁襖鴬鴎黄岡沖荻億屋憶臆桶牡乙俺卸恩温穏音下化仮何伽価佳加可嘉夏嫁家寡科暇果架歌河火珂禍禾稼箇花苛茄荷華菓蝦課嘩貨迦過霞蚊俄峨我牙画臥芽蛾賀雅餓駕介会解回塊壊廻快怪悔恢懐戒拐改�".split(""); +for(j = 0; j != D[178].length; ++j) if(D[178][j].charCodeAt(0) !== 0xFFFD) { e[D[178][j]] = 45568 + j; d[45568 + j] = D[178][j];} +D[179] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������魁晦械海灰界皆絵芥蟹開階貝凱劾外咳害崖慨概涯碍蓋街該鎧骸浬馨蛙垣柿蛎鈎劃嚇各廓拡撹格核殻獲確穫覚角赫較郭閣隔革学岳楽額顎掛笠樫橿梶鰍潟割喝恰括活渇滑葛褐轄且鰹叶椛樺鞄株兜竃蒲釜鎌噛鴨栢茅萱�".split(""); +for(j = 0; j != D[179].length; ++j) if(D[179][j].charCodeAt(0) !== 0xFFFD) { e[D[179][j]] = 45824 + j; d[45824 + j] = D[179][j];} +D[180] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������粥刈苅瓦乾侃冠寒刊勘勧巻喚堪姦完官寛干幹患感慣憾換敢柑桓棺款歓汗漢澗潅環甘監看竿管簡緩缶翰肝艦莞観諌貫還鑑間閑関陥韓館舘丸含岸巌玩癌眼岩翫贋雁頑顔願企伎危喜器基奇嬉寄岐希幾忌揮机旗既期棋棄�".split(""); +for(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];} +D[181] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������機帰毅気汽畿祈季稀紀徽規記貴起軌輝飢騎鬼亀偽儀妓宜戯技擬欺犠疑祇義蟻誼議掬菊鞠吉吃喫桔橘詰砧杵黍却客脚虐逆丘久仇休及吸宮弓急救朽求汲泣灸球究窮笈級糾給旧牛去居巨拒拠挙渠虚許距鋸漁禦魚亨享京�".split(""); +for(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];} +D[182] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������供侠僑兇競共凶協匡卿叫喬境峡強彊怯恐恭挟教橋況狂狭矯胸脅興蕎郷鏡響饗驚仰凝尭暁業局曲極玉桐粁僅勤均巾錦斤欣欽琴禁禽筋緊芹菌衿襟謹近金吟銀九倶句区狗玖矩苦躯駆駈駒具愚虞喰空偶寓遇隅串櫛釧屑屈�".split(""); +for(j = 0; j != D[182].length; ++j) if(D[182][j].charCodeAt(0) !== 0xFFFD) { e[D[182][j]] = 46592 + j; d[46592 + j] = D[182][j];} +D[183] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������掘窟沓靴轡窪熊隈粂栗繰桑鍬勲君薫訓群軍郡卦袈祁係傾刑兄啓圭珪型契形径恵慶慧憩掲携敬景桂渓畦稽系経継繋罫茎荊蛍計詣警軽頚鶏芸迎鯨劇戟撃激隙桁傑欠決潔穴結血訣月件倹倦健兼券剣喧圏堅嫌建憲懸拳捲�".split(""); +for(j = 0; j != D[183].length; ++j) if(D[183][j].charCodeAt(0) !== 0xFFFD) { e[D[183][j]] = 46848 + j; d[46848 + j] = D[183][j];} +D[184] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������検権牽犬献研硯絹県肩見謙賢軒遣鍵険顕験鹸元原厳幻弦減源玄現絃舷言諺限乎個古呼固姑孤己庫弧戸故枯湖狐糊袴股胡菰虎誇跨鈷雇顧鼓五互伍午呉吾娯後御悟梧檎瑚碁語誤護醐乞鯉交佼侯候倖光公功効勾厚口向�".split(""); +for(j = 0; j != D[184].length; ++j) if(D[184][j].charCodeAt(0) !== 0xFFFD) { e[D[184][j]] = 47104 + j; d[47104 + j] = D[184][j];} +D[185] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������后喉坑垢好孔孝宏工巧巷幸広庚康弘恒慌抗拘控攻昂晃更杭校梗構江洪浩港溝甲皇硬稿糠紅紘絞綱耕考肯肱腔膏航荒行衡講貢購郊酵鉱砿鋼閤降項香高鴻剛劫号合壕拷濠豪轟麹克刻告国穀酷鵠黒獄漉腰甑忽惚骨狛込�".split(""); +for(j = 0; j != D[185].length; ++j) if(D[185][j].charCodeAt(0) !== 0xFFFD) { e[D[185][j]] = 47360 + j; d[47360 + j] = D[185][j];} +D[186] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������此頃今困坤墾婚恨懇昏昆根梱混痕紺艮魂些佐叉唆嵯左差査沙瑳砂詐鎖裟坐座挫債催再最哉塞妻宰彩才採栽歳済災采犀砕砦祭斎細菜裁載際剤在材罪財冴坂阪堺榊肴咲崎埼碕鷺作削咋搾昨朔柵窄策索錯桜鮭笹匙冊刷�".split(""); +for(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];} +D[187] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������察拶撮擦札殺薩雑皐鯖捌錆鮫皿晒三傘参山惨撒散桟燦珊産算纂蚕讃賛酸餐斬暫残仕仔伺使刺司史嗣四士始姉姿子屍市師志思指支孜斯施旨枝止死氏獅祉私糸紙紫肢脂至視詞詩試誌諮資賜雌飼歯事似侍児字寺慈持時�".split(""); +for(j = 0; j != D[187].length; ++j) if(D[187][j].charCodeAt(0) !== 0xFFFD) { e[D[187][j]] = 47872 + j; d[47872 + j] = D[187][j];} +D[188] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������次滋治爾璽痔磁示而耳自蒔辞汐鹿式識鴫竺軸宍雫七叱執失嫉室悉湿漆疾質実蔀篠偲柴芝屡蕊縞舎写射捨赦斜煮社紗者謝車遮蛇邪借勺尺杓灼爵酌釈錫若寂弱惹主取守手朱殊狩珠種腫趣酒首儒受呪寿授樹綬需囚収周�".split(""); +for(j = 0; j != D[188].length; ++j) if(D[188][j].charCodeAt(0) !== 0xFFFD) { e[D[188][j]] = 48128 + j; d[48128 + j] = D[188][j];} +D[189] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������宗就州修愁拾洲秀秋終繍習臭舟蒐衆襲讐蹴輯週酋酬集醜什住充十従戎柔汁渋獣縦重銃叔夙宿淑祝縮粛塾熟出術述俊峻春瞬竣舜駿准循旬楯殉淳準潤盾純巡遵醇順処初所暑曙渚庶緒署書薯藷諸助叙女序徐恕鋤除傷償�".split(""); +for(j = 0; j != D[189].length; ++j) if(D[189][j].charCodeAt(0) !== 0xFFFD) { e[D[189][j]] = 48384 + j; d[48384 + j] = D[189][j];} +D[190] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������勝匠升召哨商唱嘗奨妾娼宵将小少尚庄床廠彰承抄招掌捷昇昌昭晶松梢樟樵沼消渉湘焼焦照症省硝礁祥称章笑粧紹肖菖蒋蕉衝裳訟証詔詳象賞醤鉦鍾鐘障鞘上丈丞乗冗剰城場壌嬢常情擾条杖浄状畳穣蒸譲醸錠嘱埴飾�".split(""); +for(j = 0; j != D[190].length; ++j) if(D[190][j].charCodeAt(0) !== 0xFFFD) { e[D[190][j]] = 48640 + j; d[48640 + j] = D[190][j];} +D[191] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������拭植殖燭織職色触食蝕辱尻伸信侵唇娠寝審心慎振新晋森榛浸深申疹真神秦紳臣芯薪親診身辛進針震人仁刃塵壬尋甚尽腎訊迅陣靭笥諏須酢図厨逗吹垂帥推水炊睡粋翠衰遂酔錐錘随瑞髄崇嵩数枢趨雛据杉椙菅頗雀裾�".split(""); +for(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];} +D[192] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������澄摺寸世瀬畝是凄制勢姓征性成政整星晴棲栖正清牲生盛精聖声製西誠誓請逝醒青静斉税脆隻席惜戚斥昔析石積籍績脊責赤跡蹟碩切拙接摂折設窃節説雪絶舌蝉仙先千占宣専尖川戦扇撰栓栴泉浅洗染潜煎煽旋穿箭線�".split(""); +for(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];} +D[193] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������繊羨腺舛船薦詮賎践選遷銭銑閃鮮前善漸然全禅繕膳糎噌塑岨措曾曽楚狙疏疎礎祖租粗素組蘇訴阻遡鼠僧創双叢倉喪壮奏爽宋層匝惣想捜掃挿掻操早曹巣槍槽漕燥争痩相窓糟総綜聡草荘葬蒼藻装走送遭鎗霜騒像増憎�".split(""); +for(j = 0; j != D[193].length; ++j) if(D[193][j].charCodeAt(0) !== 0xFFFD) { e[D[193][j]] = 49408 + j; d[49408 + j] = D[193][j];} +D[194] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������臓蔵贈造促側則即息捉束測足速俗属賊族続卒袖其揃存孫尊損村遜他多太汰詑唾堕妥惰打柁舵楕陀駄騨体堆対耐岱帯待怠態戴替泰滞胎腿苔袋貸退逮隊黛鯛代台大第醍題鷹滝瀧卓啄宅托択拓沢濯琢託鐸濁諾茸凧蛸只�".split(""); +for(j = 0; j != D[194].length; ++j) if(D[194][j].charCodeAt(0) !== 0xFFFD) { e[D[194][j]] = 49664 + j; d[49664 + j] = D[194][j];} +D[195] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������叩但達辰奪脱巽竪辿棚谷狸鱈樽誰丹単嘆坦担探旦歎淡湛炭短端箪綻耽胆蛋誕鍛団壇弾断暖檀段男談値知地弛恥智池痴稚置致蜘遅馳築畜竹筑蓄逐秩窒茶嫡着中仲宙忠抽昼柱注虫衷註酎鋳駐樗瀦猪苧著貯丁兆凋喋寵�".split(""); +for(j = 0; j != D[195].length; ++j) if(D[195][j].charCodeAt(0) !== 0xFFFD) { e[D[195][j]] = 49920 + j; d[49920 + j] = D[195][j];} +D[196] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������帖帳庁弔張彫徴懲挑暢朝潮牒町眺聴脹腸蝶調諜超跳銚長頂鳥勅捗直朕沈珍賃鎮陳津墜椎槌追鎚痛通塚栂掴槻佃漬柘辻蔦綴鍔椿潰坪壷嬬紬爪吊釣鶴亭低停偵剃貞呈堤定帝底庭廷弟悌抵挺提梯汀碇禎程締艇訂諦蹄逓�".split(""); +for(j = 0; j != D[196].length; ++j) if(D[196][j].charCodeAt(0) !== 0xFFFD) { e[D[196][j]] = 50176 + j; d[50176 + j] = D[196][j];} +D[197] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������邸鄭釘鼎泥摘擢敵滴的笛適鏑溺哲徹撤轍迭鉄典填天展店添纏甜貼転顛点伝殿澱田電兎吐堵塗妬屠徒斗杜渡登菟賭途都鍍砥砺努度土奴怒倒党冬凍刀唐塔塘套宕島嶋悼投搭東桃梼棟盗淘湯涛灯燈当痘祷等答筒糖統到�".split(""); +for(j = 0; j != D[197].length; ++j) if(D[197][j].charCodeAt(0) !== 0xFFFD) { e[D[197][j]] = 50432 + j; d[50432 + j] = D[197][j];} +D[198] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������董蕩藤討謄豆踏逃透鐙陶頭騰闘働動同堂導憧撞洞瞳童胴萄道銅峠鴇匿得徳涜特督禿篤毒独読栃橡凸突椴届鳶苫寅酉瀞噸屯惇敦沌豚遁頓呑曇鈍奈那内乍凪薙謎灘捺鍋楢馴縄畷南楠軟難汝二尼弐迩匂賑肉虹廿日乳入�".split(""); +for(j = 0; j != D[198].length; ++j) if(D[198][j].charCodeAt(0) !== 0xFFFD) { e[D[198][j]] = 50688 + j; d[50688 + j] = D[198][j];} +D[199] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������如尿韮任妊忍認濡禰祢寧葱猫熱年念捻撚燃粘乃廼之埜嚢悩濃納能脳膿農覗蚤巴把播覇杷波派琶破婆罵芭馬俳廃拝排敗杯盃牌背肺輩配倍培媒梅楳煤狽買売賠陪這蝿秤矧萩伯剥博拍柏泊白箔粕舶薄迫曝漠爆縛莫駁麦�".split(""); +for(j = 0; j != D[199].length; ++j) if(D[199][j].charCodeAt(0) !== 0xFFFD) { e[D[199][j]] = 50944 + j; d[50944 + j] = D[199][j];} +D[200] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������函箱硲箸肇筈櫨幡肌畑畠八鉢溌発醗髪伐罰抜筏閥鳩噺塙蛤隼伴判半反叛帆搬斑板氾汎版犯班畔繁般藩販範釆煩頒飯挽晩番盤磐蕃蛮匪卑否妃庇彼悲扉批披斐比泌疲皮碑秘緋罷肥被誹費避非飛樋簸備尾微枇毘琵眉美�".split(""); +for(j = 0; j != D[200].length; ++j) if(D[200][j].charCodeAt(0) !== 0xFFFD) { e[D[200][j]] = 51200 + j; d[51200 + j] = D[200][j];} +D[201] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������鼻柊稗匹疋髭彦膝菱肘弼必畢筆逼桧姫媛紐百謬俵彪標氷漂瓢票表評豹廟描病秒苗錨鋲蒜蛭鰭品彬斌浜瀕貧賓頻敏瓶不付埠夫婦富冨布府怖扶敷斧普浮父符腐膚芙譜負賦赴阜附侮撫武舞葡蕪部封楓風葺蕗伏副復幅服�".split(""); +for(j = 0; j != D[201].length; ++j) if(D[201][j].charCodeAt(0) !== 0xFFFD) { e[D[201][j]] = 51456 + j; d[51456 + j] = D[201][j];} +D[202] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������福腹複覆淵弗払沸仏物鮒分吻噴墳憤扮焚奮粉糞紛雰文聞丙併兵塀幣平弊柄並蔽閉陛米頁僻壁癖碧別瞥蔑箆偏変片篇編辺返遍便勉娩弁鞭保舗鋪圃捕歩甫補輔穂募墓慕戊暮母簿菩倣俸包呆報奉宝峰峯崩庖抱捧放方朋�".split(""); +for(j = 0; j != D[202].length; ++j) if(D[202][j].charCodeAt(0) !== 0xFFFD) { e[D[202][j]] = 51712 + j; d[51712 + j] = D[202][j];} +D[203] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������法泡烹砲縫胞芳萌蓬蜂褒訪豊邦鋒飽鳳鵬乏亡傍剖坊妨帽忘忙房暴望某棒冒紡肪膨謀貌貿鉾防吠頬北僕卜墨撲朴牧睦穆釦勃没殆堀幌奔本翻凡盆摩磨魔麻埋妹昧枚毎哩槙幕膜枕鮪柾鱒桝亦俣又抹末沫迄侭繭麿万慢満�".split(""); +for(j = 0; j != D[203].length; ++j) if(D[203][j].charCodeAt(0) !== 0xFFFD) { e[D[203][j]] = 51968 + j; d[51968 + j] = D[203][j];} +D[204] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������漫蔓味未魅巳箕岬密蜜湊蓑稔脈妙粍民眠務夢無牟矛霧鵡椋婿娘冥名命明盟迷銘鳴姪牝滅免棉綿緬面麺摸模茂妄孟毛猛盲網耗蒙儲木黙目杢勿餅尤戻籾貰問悶紋門匁也冶夜爺耶野弥矢厄役約薬訳躍靖柳薮鑓愉愈油癒�".split(""); +for(j = 0; j != D[204].length; ++j) if(D[204][j].charCodeAt(0) !== 0xFFFD) { e[D[204][j]] = 52224 + j; d[52224 + j] = D[204][j];} +D[205] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������諭輸唯佑優勇友宥幽悠憂揖有柚湧涌猶猷由祐裕誘遊邑郵雄融夕予余与誉輿預傭幼妖容庸揚揺擁曜楊様洋溶熔用窯羊耀葉蓉要謡踊遥陽養慾抑欲沃浴翌翼淀羅螺裸来莱頼雷洛絡落酪乱卵嵐欄濫藍蘭覧利吏履李梨理璃�".split(""); +for(j = 0; j != D[205].length; ++j) if(D[205][j].charCodeAt(0) !== 0xFFFD) { e[D[205][j]] = 52480 + j; d[52480 + j] = D[205][j];} +D[206] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������痢裏裡里離陸律率立葎掠略劉流溜琉留硫粒隆竜龍侶慮旅虜了亮僚両凌寮料梁涼猟療瞭稜糧良諒遼量陵領力緑倫厘林淋燐琳臨輪隣鱗麟瑠塁涙累類令伶例冷励嶺怜玲礼苓鈴隷零霊麗齢暦歴列劣烈裂廉恋憐漣煉簾練聯�".split(""); +for(j = 0; j != D[206].length; ++j) if(D[206][j].charCodeAt(0) !== 0xFFFD) { e[D[206][j]] = 52736 + j; d[52736 + j] = D[206][j];} +D[207] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������蓮連錬呂魯櫓炉賂路露労婁廊弄朗楼榔浪漏牢狼篭老聾蝋郎六麓禄肋録論倭和話歪賄脇惑枠鷲亙亘鰐詫藁蕨椀湾碗腕��������������������������������������������".split(""); +for(j = 0; j != D[207].length; ++j) if(D[207][j].charCodeAt(0) !== 0xFFFD) { e[D[207][j]] = 52992 + j; d[52992 + j] = D[207][j];} +D[208] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������弌丐丕个丱丶丼丿乂乖乘亂亅豫亊舒弍于亞亟亠亢亰亳亶从仍仄仆仂仗仞仭仟价伉佚估佛佝佗佇佶侈侏侘佻佩佰侑佯來侖儘俔俟俎俘俛俑俚俐俤俥倚倨倔倪倥倅伜俶倡倩倬俾俯們倆偃假會偕偐偈做偖偬偸傀傚傅傴傲�".split(""); +for(j = 0; j != D[208].length; ++j) if(D[208][j].charCodeAt(0) !== 0xFFFD) { e[D[208][j]] = 53248 + j; d[53248 + j] = D[208][j];} +D[209] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������僉僊傳僂僖僞僥僭僣僮價僵儉儁儂儖儕儔儚儡儺儷儼儻儿兀兒兌兔兢竸兩兪兮冀冂囘册冉冏冑冓冕冖冤冦冢冩冪冫决冱冲冰况冽凅凉凛几處凩凭凰凵凾刄刋刔刎刧刪刮刳刹剏剄剋剌剞剔剪剴剩剳剿剽劍劔劒剱劈劑辨�".split(""); +for(j = 0; j != D[209].length; ++j) if(D[209][j].charCodeAt(0) !== 0xFFFD) { e[D[209][j]] = 53504 + j; d[53504 + j] = D[209][j];} +D[210] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������辧劬劭劼劵勁勍勗勞勣勦飭勠勳勵勸勹匆匈甸匍匐匏匕匚匣匯匱匳匸區卆卅丗卉卍凖卞卩卮夘卻卷厂厖厠厦厥厮厰厶參簒雙叟曼燮叮叨叭叺吁吽呀听吭吼吮吶吩吝呎咏呵咎呟呱呷呰咒呻咀呶咄咐咆哇咢咸咥咬哄哈咨�".split(""); +for(j = 0; j != D[210].length; ++j) if(D[210][j].charCodeAt(0) !== 0xFFFD) { e[D[210][j]] = 53760 + j; d[53760 + j] = D[210][j];} +D[211] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������咫哂咤咾咼哘哥哦唏唔哽哮哭哺哢唹啀啣啌售啜啅啖啗唸唳啝喙喀咯喊喟啻啾喘喞單啼喃喩喇喨嗚嗅嗟嗄嗜嗤嗔嘔嗷嘖嗾嗽嘛嗹噎噐營嘴嘶嘲嘸噫噤嘯噬噪嚆嚀嚊嚠嚔嚏嚥嚮嚶嚴囂嚼囁囃囀囈囎囑囓囗囮囹圀囿圄圉�".split(""); +for(j = 0; j != D[211].length; ++j) if(D[211][j].charCodeAt(0) !== 0xFFFD) { e[D[211][j]] = 54016 + j; d[54016 + j] = D[211][j];} +D[212] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������圈國圍圓團圖嗇圜圦圷圸坎圻址坏坩埀垈坡坿垉垓垠垳垤垪垰埃埆埔埒埓堊埖埣堋堙堝塲堡塢塋塰毀塒堽塹墅墹墟墫墺壞墻墸墮壅壓壑壗壙壘壥壜壤壟壯壺壹壻壼壽夂夊夐夛梦夥夬夭夲夸夾竒奕奐奎奚奘奢奠奧奬奩�".split(""); +for(j = 0; j != D[212].length; ++j) if(D[212][j].charCodeAt(0) !== 0xFFFD) { e[D[212][j]] = 54272 + j; d[54272 + j] = D[212][j];} +D[213] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������奸妁妝佞侫妣妲姆姨姜妍姙姚娥娟娑娜娉娚婀婬婉娵娶婢婪媚媼媾嫋嫂媽嫣嫗嫦嫩嫖嫺嫻嬌嬋嬖嬲嫐嬪嬶嬾孃孅孀孑孕孚孛孥孩孰孳孵學斈孺宀它宦宸寃寇寉寔寐寤實寢寞寥寫寰寶寳尅將專對尓尠尢尨尸尹屁屆屎屓�".split(""); +for(j = 0; j != D[213].length; ++j) if(D[213][j].charCodeAt(0) !== 0xFFFD) { e[D[213][j]] = 54528 + j; d[54528 + j] = D[213][j];} +D[214] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������屐屏孱屬屮乢屶屹岌岑岔妛岫岻岶岼岷峅岾峇峙峩峽峺峭嶌峪崋崕崗嵜崟崛崑崔崢崚崙崘嵌嵒嵎嵋嵬嵳嵶嶇嶄嶂嶢嶝嶬嶮嶽嶐嶷嶼巉巍巓巒巖巛巫已巵帋帚帙帑帛帶帷幄幃幀幎幗幔幟幢幤幇幵并幺麼广庠廁廂廈廐廏�".split(""); +for(j = 0; j != D[214].length; ++j) if(D[214][j].charCodeAt(0) !== 0xFFFD) { e[D[214][j]] = 54784 + j; d[54784 + j] = D[214][j];} +D[215] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������廖廣廝廚廛廢廡廨廩廬廱廳廰廴廸廾弃弉彝彜弋弑弖弩弭弸彁彈彌彎弯彑彖彗彙彡彭彳彷徃徂彿徊很徑徇從徙徘徠徨徭徼忖忻忤忸忱忝悳忿怡恠怙怐怩怎怱怛怕怫怦怏怺恚恁恪恷恟恊恆恍恣恃恤恂恬恫恙悁悍惧悃悚�".split(""); +for(j = 0; j != D[215].length; ++j) if(D[215][j].charCodeAt(0) !== 0xFFFD) { e[D[215][j]] = 55040 + j; d[55040 + j] = D[215][j];} +D[216] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������悄悛悖悗悒悧悋惡悸惠惓悴忰悽惆悵惘慍愕愆惶惷愀惴惺愃愡惻惱愍愎慇愾愨愧慊愿愼愬愴愽慂慄慳慷慘慙慚慫慴慯慥慱慟慝慓慵憙憖憇憬憔憚憊憑憫憮懌懊應懷懈懃懆憺懋罹懍懦懣懶懺懴懿懽懼懾戀戈戉戍戌戔戛�".split(""); +for(j = 0; j != D[216].length; ++j) if(D[216][j].charCodeAt(0) !== 0xFFFD) { e[D[216][j]] = 55296 + j; d[55296 + j] = D[216][j];} +D[217] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������戞戡截戮戰戲戳扁扎扞扣扛扠扨扼抂抉找抒抓抖拔抃抔拗拑抻拏拿拆擔拈拜拌拊拂拇抛拉挌拮拱挧挂挈拯拵捐挾捍搜捏掖掎掀掫捶掣掏掉掟掵捫捩掾揩揀揆揣揉插揶揄搖搴搆搓搦搶攝搗搨搏摧摯摶摎攪撕撓撥撩撈撼�".split(""); +for(j = 0; j != D[217].length; ++j) if(D[217][j].charCodeAt(0) !== 0xFFFD) { e[D[217][j]] = 55552 + j; d[55552 + j] = D[217][j];} +D[218] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������據擒擅擇撻擘擂擱擧舉擠擡抬擣擯攬擶擴擲擺攀擽攘攜攅攤攣攫攴攵攷收攸畋效敖敕敍敘敞敝敲數斂斃變斛斟斫斷旃旆旁旄旌旒旛旙无旡旱杲昊昃旻杳昵昶昴昜晏晄晉晁晞晝晤晧晨晟晢晰暃暈暎暉暄暘暝曁暹曉暾暼�".split(""); +for(j = 0; j != D[218].length; ++j) if(D[218][j].charCodeAt(0) !== 0xFFFD) { e[D[218][j]] = 55808 + j; d[55808 + j] = D[218][j];} +D[219] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������曄暸曖曚曠昿曦曩曰曵曷朏朖朞朦朧霸朮朿朶杁朸朷杆杞杠杙杣杤枉杰枩杼杪枌枋枦枡枅枷柯枴柬枳柩枸柤柞柝柢柮枹柎柆柧檜栞框栩桀桍栲桎梳栫桙档桷桿梟梏梭梔條梛梃檮梹桴梵梠梺椏梍桾椁棊椈棘椢椦棡椌棍�".split(""); +for(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];} +D[220] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������棔棧棕椶椒椄棗棣椥棹棠棯椨椪椚椣椡棆楹楷楜楸楫楔楾楮椹楴椽楙椰楡楞楝榁楪榲榮槐榿槁槓榾槎寨槊槝榻槃榧樮榑榠榜榕榴槞槨樂樛槿權槹槲槧樅榱樞槭樔槫樊樒櫁樣樓橄樌橲樶橸橇橢橙橦橈樸樢檐檍檠檄檢檣�".split(""); +for(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];} +D[221] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������檗蘗檻櫃櫂檸檳檬櫞櫑櫟檪櫚櫪櫻欅蘖櫺欒欖鬱欟欸欷盜欹飮歇歃歉歐歙歔歛歟歡歸歹歿殀殄殃殍殘殕殞殤殪殫殯殲殱殳殷殼毆毋毓毟毬毫毳毯麾氈氓气氛氤氣汞汕汢汪沂沍沚沁沛汾汨汳沒沐泄泱泓沽泗泅泝沮沱沾�".split(""); +for(j = 0; j != D[221].length; ++j) if(D[221][j].charCodeAt(0) !== 0xFFFD) { e[D[221][j]] = 56576 + j; d[56576 + j] = D[221][j];} +D[222] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������沺泛泯泙泪洟衍洶洫洽洸洙洵洳洒洌浣涓浤浚浹浙涎涕濤涅淹渕渊涵淇淦涸淆淬淞淌淨淒淅淺淙淤淕淪淮渭湮渮渙湲湟渾渣湫渫湶湍渟湃渺湎渤滿渝游溂溪溘滉溷滓溽溯滄溲滔滕溏溥滂溟潁漑灌滬滸滾漿滲漱滯漲滌�".split(""); +for(j = 0; j != D[222].length; ++j) if(D[222][j].charCodeAt(0) !== 0xFFFD) { e[D[222][j]] = 56832 + j; d[56832 + j] = D[222][j];} +D[223] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������漾漓滷澆潺潸澁澀潯潛濳潭澂潼潘澎澑濂潦澳澣澡澤澹濆澪濟濕濬濔濘濱濮濛瀉瀋濺瀑瀁瀏濾瀛瀚潴瀝瀘瀟瀰瀾瀲灑灣炙炒炯烱炬炸炳炮烟烋烝烙焉烽焜焙煥煕熈煦煢煌煖煬熏燻熄熕熨熬燗熹熾燒燉燔燎燠燬燧燵燼�".split(""); +for(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];} +D[224] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������燹燿爍爐爛爨爭爬爰爲爻爼爿牀牆牋牘牴牾犂犁犇犒犖犢犧犹犲狃狆狄狎狒狢狠狡狹狷倏猗猊猜猖猝猴猯猩猥猾獎獏默獗獪獨獰獸獵獻獺珈玳珎玻珀珥珮珞璢琅瑯琥珸琲琺瑕琿瑟瑙瑁瑜瑩瑰瑣瑪瑶瑾璋璞璧瓊瓏瓔珱�".split(""); +for(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];} +D[225] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������瓠瓣瓧瓩瓮瓲瓰瓱瓸瓷甄甃甅甌甎甍甕甓甞甦甬甼畄畍畊畉畛畆畚畩畤畧畫畭畸當疆疇畴疊疉疂疔疚疝疥疣痂疳痃疵疽疸疼疱痍痊痒痙痣痞痾痿痼瘁痰痺痲痳瘋瘍瘉瘟瘧瘠瘡瘢瘤瘴瘰瘻癇癈癆癜癘癡癢癨癩癪癧癬癰�".split(""); +for(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];} +D[226] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������癲癶癸發皀皃皈皋皎皖皓皙皚皰皴皸皹皺盂盍盖盒盞盡盥盧盪蘯盻眈眇眄眩眤眞眥眦眛眷眸睇睚睨睫睛睥睿睾睹瞎瞋瞑瞠瞞瞰瞶瞹瞿瞼瞽瞻矇矍矗矚矜矣矮矼砌砒礦砠礪硅碎硴碆硼碚碌碣碵碪碯磑磆磋磔碾碼磅磊磬�".split(""); +for(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];} +D[227] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������磧磚磽磴礇礒礑礙礬礫祀祠祗祟祚祕祓祺祿禊禝禧齋禪禮禳禹禺秉秕秧秬秡秣稈稍稘稙稠稟禀稱稻稾稷穃穗穉穡穢穩龝穰穹穽窈窗窕窘窖窩竈窰窶竅竄窿邃竇竊竍竏竕竓站竚竝竡竢竦竭竰笂笏笊笆笳笘笙笞笵笨笶筐�".split(""); +for(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];} +D[228] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������筺笄筍笋筌筅筵筥筴筧筰筱筬筮箝箘箟箍箜箚箋箒箏筝箙篋篁篌篏箴篆篝篩簑簔篦篥籠簀簇簓篳篷簗簍篶簣簧簪簟簷簫簽籌籃籔籏籀籐籘籟籤籖籥籬籵粃粐粤粭粢粫粡粨粳粲粱粮粹粽糀糅糂糘糒糜糢鬻糯糲糴糶糺紆�".split(""); +for(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];} +D[229] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������紂紜紕紊絅絋紮紲紿紵絆絳絖絎絲絨絮絏絣經綉絛綏絽綛綺綮綣綵緇綽綫總綢綯緜綸綟綰緘緝緤緞緻緲緡縅縊縣縡縒縱縟縉縋縢繆繦縻縵縹繃縷縲縺繧繝繖繞繙繚繹繪繩繼繻纃緕繽辮繿纈纉續纒纐纓纔纖纎纛纜缸缺�".split(""); +for(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];} +D[230] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������罅罌罍罎罐网罕罔罘罟罠罨罩罧罸羂羆羃羈羇羌羔羞羝羚羣羯羲羹羮羶羸譱翅翆翊翕翔翡翦翩翳翹飜耆耄耋耒耘耙耜耡耨耿耻聊聆聒聘聚聟聢聨聳聲聰聶聹聽聿肄肆肅肛肓肚肭冐肬胛胥胙胝胄胚胖脉胯胱脛脩脣脯腋�".split(""); +for(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];} +D[231] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������隋腆脾腓腑胼腱腮腥腦腴膃膈膊膀膂膠膕膤膣腟膓膩膰膵膾膸膽臀臂膺臉臍臑臙臘臈臚臟臠臧臺臻臾舁舂舅與舊舍舐舖舩舫舸舳艀艙艘艝艚艟艤艢艨艪艫舮艱艷艸艾芍芒芫芟芻芬苡苣苟苒苴苳苺莓范苻苹苞茆苜茉苙�".split(""); +for(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];} +D[232] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������茵茴茖茲茱荀茹荐荅茯茫茗茘莅莚莪莟莢莖茣莎莇莊荼莵荳荵莠莉莨菴萓菫菎菽萃菘萋菁菷萇菠菲萍萢萠莽萸蔆菻葭萪萼蕚蒄葷葫蒭葮蒂葩葆萬葯葹萵蓊葢蒹蒿蒟蓙蓍蒻蓚蓐蓁蓆蓖蒡蔡蓿蓴蔗蔘蔬蔟蔕蔔蓼蕀蕣蕘蕈�".split(""); +for(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];} +D[233] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������蕁蘂蕋蕕薀薤薈薑薊薨蕭薔薛藪薇薜蕷蕾薐藉薺藏薹藐藕藝藥藜藹蘊蘓蘋藾藺蘆蘢蘚蘰蘿虍乕虔號虧虱蚓蚣蚩蚪蚋蚌蚶蚯蛄蛆蚰蛉蠣蚫蛔蛞蛩蛬蛟蛛蛯蜒蜆蜈蜀蜃蛻蜑蜉蜍蛹蜊蜴蜿蜷蜻蜥蜩蜚蝠蝟蝸蝌蝎蝴蝗蝨蝮蝙�".split(""); +for(j = 0; j != D[233].length; ++j) if(D[233][j].charCodeAt(0) !== 0xFFFD) { e[D[233][j]] = 59648 + j; d[59648 + j] = D[233][j];} +D[234] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������蝓蝣蝪蠅螢螟螂螯蟋螽蟀蟐雖螫蟄螳蟇蟆螻蟯蟲蟠蠏蠍蟾蟶蟷蠎蟒蠑蠖蠕蠢蠡蠱蠶蠹蠧蠻衄衂衒衙衞衢衫袁衾袞衵衽袵衲袂袗袒袮袙袢袍袤袰袿袱裃裄裔裘裙裝裹褂裼裴裨裲褄褌褊褓襃褞褥褪褫襁襄褻褶褸襌褝襠襞�".split(""); +for(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];} +D[235] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������襦襤襭襪襯襴襷襾覃覈覊覓覘覡覩覦覬覯覲覺覽覿觀觚觜觝觧觴觸訃訖訐訌訛訝訥訶詁詛詒詆詈詼詭詬詢誅誂誄誨誡誑誥誦誚誣諄諍諂諚諫諳諧諤諱謔諠諢諷諞諛謌謇謚諡謖謐謗謠謳鞫謦謫謾謨譁譌譏譎證譖譛譚譫�".split(""); +for(j = 0; j != D[235].length; ++j) if(D[235][j].charCodeAt(0) !== 0xFFFD) { e[D[235][j]] = 60160 + j; d[60160 + j] = D[235][j];} +D[236] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������譟譬譯譴譽讀讌讎讒讓讖讙讚谺豁谿豈豌豎豐豕豢豬豸豺貂貉貅貊貍貎貔豼貘戝貭貪貽貲貳貮貶賈賁賤賣賚賽賺賻贄贅贊贇贏贍贐齎贓賍贔贖赧赭赱赳趁趙跂趾趺跏跚跖跌跛跋跪跫跟跣跼踈踉跿踝踞踐踟蹂踵踰踴蹊�".split(""); +for(j = 0; j != D[236].length; ++j) if(D[236][j].charCodeAt(0) !== 0xFFFD) { e[D[236][j]] = 60416 + j; d[60416 + j] = D[236][j];} +D[237] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������蹇蹉蹌蹐蹈蹙蹤蹠踪蹣蹕蹶蹲蹼躁躇躅躄躋躊躓躑躔躙躪躡躬躰軆躱躾軅軈軋軛軣軼軻軫軾輊輅輕輒輙輓輜輟輛輌輦輳輻輹轅轂輾轌轉轆轎轗轜轢轣轤辜辟辣辭辯辷迚迥迢迪迯邇迴逅迹迺逑逕逡逍逞逖逋逧逶逵逹迸�".split(""); +for(j = 0; j != D[237].length; ++j) if(D[237][j].charCodeAt(0) !== 0xFFFD) { e[D[237][j]] = 60672 + j; d[60672 + j] = D[237][j];} +D[238] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������遏遐遑遒逎遉逾遖遘遞遨遯遶隨遲邂遽邁邀邊邉邏邨邯邱邵郢郤扈郛鄂鄒鄙鄲鄰酊酖酘酣酥酩酳酲醋醉醂醢醫醯醪醵醴醺釀釁釉釋釐釖釟釡釛釼釵釶鈞釿鈔鈬鈕鈑鉞鉗鉅鉉鉤鉈銕鈿鉋鉐銜銖銓銛鉚鋏銹銷鋩錏鋺鍄錮�".split(""); +for(j = 0; j != D[238].length; ++j) if(D[238][j].charCodeAt(0) !== 0xFFFD) { e[D[238][j]] = 60928 + j; d[60928 + j] = D[238][j];} +D[239] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������錙錢錚錣錺錵錻鍜鍠鍼鍮鍖鎰鎬鎭鎔鎹鏖鏗鏨鏥鏘鏃鏝鏐鏈鏤鐚鐔鐓鐃鐇鐐鐶鐫鐵鐡鐺鑁鑒鑄鑛鑠鑢鑞鑪鈩鑰鑵鑷鑽鑚鑼鑾钁鑿閂閇閊閔閖閘閙閠閨閧閭閼閻閹閾闊濶闃闍闌闕闔闖關闡闥闢阡阨阮阯陂陌陏陋陷陜陞�".split(""); +for(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];} +D[240] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������陝陟陦陲陬隍隘隕隗險隧隱隲隰隴隶隸隹雎雋雉雍襍雜霍雕雹霄霆霈霓霎霑霏霖霙霤霪霰霹霽霾靄靆靈靂靉靜靠靤靦靨勒靫靱靹鞅靼鞁靺鞆鞋鞏鞐鞜鞨鞦鞣鞳鞴韃韆韈韋韜韭齏韲竟韶韵頏頌頸頤頡頷頽顆顏顋顫顯顰�".split(""); +for(j = 0; j != D[240].length; ++j) if(D[240][j].charCodeAt(0) !== 0xFFFD) { e[D[240][j]] = 61440 + j; d[61440 + j] = D[240][j];} +D[241] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������顱顴顳颪颯颱颶飄飃飆飩飫餃餉餒餔餘餡餝餞餤餠餬餮餽餾饂饉饅饐饋饑饒饌饕馗馘馥馭馮馼駟駛駝駘駑駭駮駱駲駻駸騁騏騅駢騙騫騷驅驂驀驃騾驕驍驛驗驟驢驥驤驩驫驪骭骰骼髀髏髑髓體髞髟髢髣髦髯髫髮髴髱髷�".split(""); +for(j = 0; j != D[241].length; ++j) if(D[241][j].charCodeAt(0) !== 0xFFFD) { e[D[241][j]] = 61696 + j; d[61696 + j] = D[241][j];} +D[242] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������髻鬆鬘鬚鬟鬢鬣鬥鬧鬨鬩鬪鬮鬯鬲魄魃魏魍魎魑魘魴鮓鮃鮑鮖鮗鮟鮠鮨鮴鯀鯊鮹鯆鯏鯑鯒鯣鯢鯤鯔鯡鰺鯲鯱鯰鰕鰔鰉鰓鰌鰆鰈鰒鰊鰄鰮鰛鰥鰤鰡鰰鱇鰲鱆鰾鱚鱠鱧鱶鱸鳧鳬鳰鴉鴈鳫鴃鴆鴪鴦鶯鴣鴟鵄鴕鴒鵁鴿鴾鵆鵈�".split(""); +for(j = 0; j != D[242].length; ++j) if(D[242][j].charCodeAt(0) !== 0xFFFD) { e[D[242][j]] = 61952 + j; d[61952 + j] = D[242][j];} +D[243] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������鵝鵞鵤鵑鵐鵙鵲鶉鶇鶫鵯鵺鶚鶤鶩鶲鷄鷁鶻鶸鶺鷆鷏鷂鷙鷓鷸鷦鷭鷯鷽鸚鸛鸞鹵鹹鹽麁麈麋麌麒麕麑麝麥麩麸麪麭靡黌黎黏黐黔黜點黝黠黥黨黯黴黶黷黹黻黼黽鼇鼈皷鼕鼡鼬鼾齊齒齔齣齟齠齡齦齧齬齪齷齲齶龕龜龠�".split(""); +for(j = 0; j != D[243].length; ++j) if(D[243][j].charCodeAt(0) !== 0xFFFD) { e[D[243][j]] = 62208 + j; d[62208 + j] = D[243][j];} +D[244] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������堯槇遙瑤凜熙�����������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[244].length; ++j) if(D[244][j].charCodeAt(0) !== 0xFFFD) { e[D[244][j]] = 62464 + j; d[62464 + j] = D[244][j];} +D[249] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������纊褜鍈銈蓜俉炻昱棈鋹曻彅丨仡仼伀伃伹佖侒侊侚侔俍偀倢俿倞偆偰偂傔僴僘兊兤冝冾凬刕劜劦勀勛匀匇匤卲厓厲叝﨎咜咊咩哿喆坙坥垬埈埇﨏塚增墲夋奓奛奝奣妤妺孖寀甯寘寬尞岦岺峵崧嵓﨑嵂嵭嶸嶹巐弡弴彧德�".split(""); +for(j = 0; j != D[249].length; ++j) if(D[249][j].charCodeAt(0) !== 0xFFFD) { e[D[249][j]] = 63744 + j; d[63744 + j] = D[249][j];} +D[250] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������忞恝悅悊惞惕愠惲愑愷愰憘戓抦揵摠撝擎敎昀昕昻昉昮昞昤晥晗晙晴晳暙暠暲暿曺朎朗杦枻桒柀栁桄棏﨓楨﨔榘槢樰橫橆橳橾櫢櫤毖氿汜沆汯泚洄涇浯涖涬淏淸淲淼渹湜渧渼溿澈澵濵瀅瀇瀨炅炫焏焄煜煆煇凞燁燾犱�".split(""); +for(j = 0; j != D[250].length; ++j) if(D[250][j].charCodeAt(0) !== 0xFFFD) { e[D[250][j]] = 64000 + j; d[64000 + j] = D[250][j];} +D[251] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������犾猤猪獷玽珉珖珣珒琇珵琦琪琩琮瑢璉璟甁畯皂皜皞皛皦益睆劯砡硎硤硺礰礼神祥禔福禛竑竧靖竫箞精絈絜綷綠緖繒罇羡羽茁荢荿菇菶葈蒴蕓蕙蕫﨟薰蘒﨡蠇裵訒訷詹誧誾諟諸諶譓譿賰賴贒赶﨣軏﨤逸遧郞都鄕鄧釚�".split(""); +for(j = 0; j != D[251].length; ++j) if(D[251][j].charCodeAt(0) !== 0xFFFD) { e[D[251][j]] = 64256 + j; d[64256 + j] = D[251][j];} +D[252] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������釗釞釭釮釤釥鈆鈐鈊鈺鉀鈼鉎鉙鉑鈹鉧銧鉷鉸鋧鋗鋙鋐﨧鋕鋠鋓錥錡鋻﨨錞鋿錝錂鍰鍗鎤鏆鏞鏸鐱鑅鑈閒隆﨩隝隯霳霻靃靍靏靑靕顗顥飯飼餧館馞驎髙髜魵魲鮏鮱鮻鰀鵰鵫鶴鸙黑��ⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹ�¦'"�".split(""); +for(j = 0; j != D[252].length; ++j) if(D[252][j].charCodeAt(0) !== 0xFFFD) { e[D[252][j]] = 64512 + j; d[64512 + j] = D[252][j];} +return {"enc": e, "dec": d }; })(); diff --git a/node_modules/codepage/bits/51936.js b/node_modules/codepage/bits/51936.js new file mode 100644 index 000000000..d92fe9b3f --- /dev/null +++ b/node_modules/codepage/bits/51936.js @@ -0,0 +1,257 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[51936] = (function(){ var d = [], e = {}, D = [], j; +D[0] = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];} +D[129] = "����������������������������������������������������������������丂丄丅丆丏丒丗丟丠両丣並丩丮丯丱丳丵丷丼乀乁乂乄乆乊乑乕乗乚乛乢乣乤乥乧乨乪乫乬乭乮乯乲乴乵乶乷乸乹乺乻乼乽乿亀亁亂亃亄亅亇亊�亐亖亗亙亜亝亞亣亪亯亰亱亴亶亷亸亹亼亽亾仈仌仏仐仒仚仛仜仠仢仦仧仩仭仮仯仱仴仸仹仺仼仾伀伂伃伄伅伆伇伈伋伌伒伓伔伕伖伜伝伡伣伨伩伬伭伮伱伳伵伷伹伻伾伿佀佁佂佄佅佇佈佉佊佋佌佒佔佖佡佢佦佨佪佫佭佮佱佲併佷佸佹佺佽侀侁侂侅來侇侊侌侎侐侒侓侕侖侘侙侚侜侞侟価侢�".split(""); +for(j = 0; j != D[129].length; ++j) if(D[129][j].charCodeAt(0) !== 0xFFFD) { e[D[129][j]] = 33024 + j; d[33024 + j] = D[129][j];} +D[130] = "����������������������������������������������������������������侤侫侭侰侱侲侳侴侶侷侸侹侺侻侼侽侾俀俁係俆俇俈俉俋俌俍俒俓俔俕俖俙俛俠俢俤俥俧俫俬俰俲俴俵俶俷俹俻俼俽俿倀倁倂倃倄倅倆倇倈倉倊�個倎倐們倓倕倖倗倛倝倞倠倢倣値倧倫倯倰倱倲倳倴倵倶倷倸倹倻倽倿偀偁偂偄偅偆偉偊偋偍偐偑偒偓偔偖偗偘偙偛偝偞偟偠偡偢偣偤偦偧偨偩偪偫偭偮偯偰偱偲偳側偵偸偹偺偼偽傁傂傃傄傆傇傉傊傋傌傎傏傐傑傒傓傔傕傖傗傘備傚傛傜傝傞傟傠傡傢傤傦傪傫傭傮傯傰傱傳傴債傶傷傸傹傼�".split(""); +for(j = 0; j != D[130].length; ++j) if(D[130][j].charCodeAt(0) !== 0xFFFD) { e[D[130][j]] = 33280 + j; d[33280 + j] = D[130][j];} +D[131] = "����������������������������������������������������������������傽傾傿僀僁僂僃僄僅僆僇僈僉僊僋僌働僎僐僑僒僓僔僕僗僘僙僛僜僝僞僟僠僡僢僣僤僥僨僩僪僫僯僰僱僲僴僶僷僸價僺僼僽僾僿儀儁儂儃億儅儈�儉儊儌儍儎儏儐儑儓儔儕儖儗儘儙儚儛儜儝儞償儠儢儣儤儥儦儧儨儩優儫儬儭儮儯儰儱儲儳儴儵儶儷儸儹儺儻儼儽儾兂兇兊兌兎兏児兒兓兗兘兙兛兝兞兟兠兡兣兤兦內兩兪兯兲兺兾兿冃冄円冇冊冋冎冏冐冑冓冔冘冚冝冞冟冡冣冦冧冨冩冪冭冮冴冸冹冺冾冿凁凂凃凅凈凊凍凎凐凒凓凔凕凖凗�".split(""); +for(j = 0; j != D[131].length; ++j) if(D[131][j].charCodeAt(0) !== 0xFFFD) { e[D[131][j]] = 33536 + j; d[33536 + j] = D[131][j];} +D[132] = "����������������������������������������������������������������凘凙凚凜凞凟凢凣凥処凧凨凩凪凬凮凱凲凴凷凾刄刅刉刋刌刏刐刓刔刕刜刞刟刡刢刣別刦刧刪刬刯刱刲刴刵刼刾剄剅剆則剈剉剋剎剏剒剓剕剗剘�剙剚剛剝剟剠剢剣剤剦剨剫剬剭剮剰剱剳剴創剶剷剸剹剺剻剼剾劀劃劄劅劆劇劉劊劋劌劍劎劏劑劒劔劕劖劗劘劙劚劜劤劥劦劧劮劯劰労劵劶劷劸効劺劻劼劽勀勁勂勄勅勆勈勊勌勍勎勏勑勓勔動勗務勚勛勜勝勞勠勡勢勣勥勦勧勨勩勪勫勬勭勮勯勱勲勳勴勵勶勷勸勻勼勽匁匂匃匄匇匉匊匋匌匎�".split(""); +for(j = 0; j != D[132].length; ++j) if(D[132][j].charCodeAt(0) !== 0xFFFD) { e[D[132][j]] = 33792 + j; d[33792 + j] = D[132][j];} +D[133] = "����������������������������������������������������������������匑匒匓匔匘匛匜匞匟匢匤匥匧匨匩匫匬匭匯匰匱匲匳匴匵匶匷匸匼匽區卂卄卆卋卌卍卐協単卙卛卝卥卨卪卬卭卲卶卹卻卼卽卾厀厁厃厇厈厊厎厏�厐厑厒厓厔厖厗厙厛厜厞厠厡厤厧厪厫厬厭厯厰厱厲厳厴厵厷厸厹厺厼厽厾叀參叄叅叆叇収叏叐叒叓叕叚叜叝叞叡叢叧叴叺叾叿吀吂吅吇吋吔吘吙吚吜吢吤吥吪吰吳吶吷吺吽吿呁呂呄呅呇呉呌呍呎呏呑呚呝呞呟呠呡呣呥呧呩呪呫呬呭呮呯呰呴呹呺呾呿咁咃咅咇咈咉咊咍咑咓咗咘咜咞咟咠咡�".split(""); +for(j = 0; j != D[133].length; ++j) if(D[133][j].charCodeAt(0) !== 0xFFFD) { e[D[133][j]] = 34048 + j; d[34048 + j] = D[133][j];} +D[134] = "����������������������������������������������������������������咢咥咮咰咲咵咶咷咹咺咼咾哃哅哊哋哖哘哛哠員哢哣哤哫哬哯哰哱哴哵哶哷哸哹哻哾唀唂唃唄唅唈唊唋唌唍唎唒唓唕唖唗唘唙唚唜唝唞唟唡唥唦�唨唩唫唭唲唴唵唶唸唹唺唻唽啀啂啅啇啈啋啌啍啎問啑啒啓啔啗啘啙啚啛啝啞啟啠啢啣啨啩啫啯啰啱啲啳啴啹啺啽啿喅喆喌喍喎喐喒喓喕喖喗喚喛喞喠喡喢喣喤喥喦喨喩喪喫喬喭單喯喰喲喴営喸喺喼喿嗀嗁嗂嗃嗆嗇嗈嗊嗋嗎嗏嗐嗕嗗嗘嗙嗚嗛嗞嗠嗢嗧嗩嗭嗮嗰嗱嗴嗶嗸嗹嗺嗻嗼嗿嘂嘃嘄嘅�".split(""); +for(j = 0; j != D[134].length; ++j) if(D[134][j].charCodeAt(0) !== 0xFFFD) { e[D[134][j]] = 34304 + j; d[34304 + j] = D[134][j];} +D[135] = "����������������������������������������������������������������嘆嘇嘊嘋嘍嘐嘑嘒嘓嘔嘕嘖嘗嘙嘚嘜嘝嘠嘡嘢嘥嘦嘨嘩嘪嘫嘮嘯嘰嘳嘵嘷嘸嘺嘼嘽嘾噀噁噂噃噄噅噆噇噈噉噊噋噏噐噑噒噓噕噖噚噛噝噞噟噠噡�噣噥噦噧噭噮噯噰噲噳噴噵噷噸噹噺噽噾噿嚀嚁嚂嚃嚄嚇嚈嚉嚊嚋嚌嚍嚐嚑嚒嚔嚕嚖嚗嚘嚙嚚嚛嚜嚝嚞嚟嚠嚡嚢嚤嚥嚦嚧嚨嚩嚪嚫嚬嚭嚮嚰嚱嚲嚳嚴嚵嚶嚸嚹嚺嚻嚽嚾嚿囀囁囂囃囄囅囆囇囈囉囋囌囍囎囏囐囑囒囓囕囖囘囙囜団囥囦囧囨囩囪囬囮囯囲図囶囷囸囻囼圀圁圂圅圇國圌圍圎圏圐圑�".split(""); +for(j = 0; j != D[135].length; ++j) if(D[135][j].charCodeAt(0) !== 0xFFFD) { e[D[135][j]] = 34560 + j; d[34560 + j] = D[135][j];} +D[136] = "����������������������������������������������������������������園圓圔圕圖圗團圙圚圛圝圞圠圡圢圤圥圦圧圫圱圲圴圵圶圷圸圼圽圿坁坃坄坅坆坈坉坋坒坓坔坕坖坘坙坢坣坥坧坬坮坰坱坲坴坵坸坹坺坽坾坿垀�垁垇垈垉垊垍垎垏垐垑垔垕垖垗垘垙垚垜垝垞垟垥垨垪垬垯垰垱垳垵垶垷垹垺垻垼垽垾垿埀埁埄埅埆埇埈埉埊埌埍埐埑埓埖埗埛埜埞埡埢埣埥埦埧埨埩埪埫埬埮埰埱埲埳埵埶執埻埼埾埿堁堃堄堅堈堉堊堌堎堏堐堒堓堔堖堗堘堚堛堜堝堟堢堣堥堦堧堨堩堫堬堭堮堯報堲堳場堶堷堸堹堺堻堼堽�".split(""); +for(j = 0; j != D[136].length; ++j) if(D[136][j].charCodeAt(0) !== 0xFFFD) { e[D[136][j]] = 34816 + j; d[34816 + j] = D[136][j];} +D[137] = "����������������������������������������������������������������堾堿塀塁塂塃塅塆塇塈塉塊塋塎塏塐塒塓塕塖塗塙塚塛塜塝塟塠塡塢塣塤塦塧塨塩塪塭塮塯塰塱塲塳塴塵塶塷塸塹塺塻塼塽塿墂墄墆墇墈墊墋墌�墍墎墏墐墑墔墕墖増墘墛墜墝墠墡墢墣墤墥墦墧墪墫墬墭墮墯墰墱墲墳墴墵墶墷墸墹墺墻墽墾墿壀壂壃壄壆壇壈壉壊壋壌壍壎壏壐壒壓壔壖壗壘壙壚壛壜壝壞壟壠壡壢壣壥壦壧壨壩壪壭壯壱売壴壵壷壸壺壻壼壽壾壿夀夁夃夅夆夈変夊夋夌夎夐夑夒夓夗夘夛夝夞夠夡夢夣夦夨夬夰夲夳夵夶夻�".split(""); +for(j = 0; j != D[137].length; ++j) if(D[137][j].charCodeAt(0) !== 0xFFFD) { e[D[137][j]] = 35072 + j; d[35072 + j] = D[137][j];} +D[138] = "����������������������������������������������������������������夽夾夿奀奃奅奆奊奌奍奐奒奓奙奛奜奝奞奟奡奣奤奦奧奨奩奪奫奬奭奮奯奰奱奲奵奷奺奻奼奾奿妀妅妉妋妌妎妏妐妑妔妕妘妚妛妜妝妟妠妡妢妦�妧妬妭妰妱妳妴妵妶妷妸妺妼妽妿姀姁姂姃姄姅姇姈姉姌姍姎姏姕姖姙姛姞姟姠姡姢姤姦姧姩姪姫姭姮姯姰姱姲姳姴姵姶姷姸姺姼姽姾娀娂娊娋娍娎娏娐娒娔娕娖娗娙娚娛娝娞娡娢娤娦娧娨娪娫娬娭娮娯娰娳娵娷娸娹娺娻娽娾娿婁婂婃婄婅婇婈婋婌婍婎婏婐婑婒婓婔婖婗婘婙婛婜婝婞婟婠�".split(""); +for(j = 0; j != D[138].length; ++j) if(D[138][j].charCodeAt(0) !== 0xFFFD) { e[D[138][j]] = 35328 + j; d[35328 + j] = D[138][j];} +D[139] = "����������������������������������������������������������������婡婣婤婥婦婨婩婫婬婭婮婯婰婱婲婳婸婹婻婼婽婾媀媁媂媃媄媅媆媇媈媉媊媋媌媍媎媏媐媑媓媔媕媖媗媘媙媜媝媞媟媠媡媢媣媤媥媦媧媨媩媫媬�媭媮媯媰媱媴媶媷媹媺媻媼媽媿嫀嫃嫄嫅嫆嫇嫈嫊嫋嫍嫎嫏嫐嫑嫓嫕嫗嫙嫚嫛嫝嫞嫟嫢嫤嫥嫧嫨嫪嫬嫭嫮嫯嫰嫲嫳嫴嫵嫶嫷嫸嫹嫺嫻嫼嫽嫾嫿嬀嬁嬂嬃嬄嬅嬆嬇嬈嬊嬋嬌嬍嬎嬏嬐嬑嬒嬓嬔嬕嬘嬙嬚嬛嬜嬝嬞嬟嬠嬡嬢嬣嬤嬥嬦嬧嬨嬩嬪嬫嬬嬭嬮嬯嬰嬱嬳嬵嬶嬸嬹嬺嬻嬼嬽嬾嬿孁孂孃孄孅孆孇�".split(""); +for(j = 0; j != D[139].length; ++j) if(D[139][j].charCodeAt(0) !== 0xFFFD) { e[D[139][j]] = 35584 + j; d[35584 + j] = D[139][j];} +D[140] = "����������������������������������������������������������������孈孉孊孋孌孍孎孏孒孖孞孠孡孧孨孫孭孮孯孲孴孶孷學孹孻孼孾孿宂宆宊宍宎宐宑宒宔宖実宧宨宩宬宭宮宯宱宲宷宺宻宼寀寁寃寈寉寊寋寍寎寏�寑寔寕寖寗寘寙寚寛寜寠寢寣實寧審寪寫寬寭寯寱寲寳寴寵寶寷寽対尀専尃尅將專尋尌對導尐尒尓尗尙尛尞尟尠尡尣尦尨尩尪尫尭尮尯尰尲尳尵尶尷屃屄屆屇屌屍屒屓屔屖屗屘屚屛屜屝屟屢層屧屨屩屪屫屬屭屰屲屳屴屵屶屷屸屻屼屽屾岀岃岄岅岆岇岉岊岋岎岏岒岓岕岝岞岟岠岡岤岥岦岧岨�".split(""); +for(j = 0; j != D[140].length; ++j) if(D[140][j].charCodeAt(0) !== 0xFFFD) { e[D[140][j]] = 35840 + j; d[35840 + j] = D[140][j];} +D[141] = "����������������������������������������������������������������岪岮岯岰岲岴岶岹岺岻岼岾峀峂峃峅峆峇峈峉峊峌峍峎峏峐峑峓峔峕峖峗峘峚峛峜峝峞峟峠峢峣峧峩峫峬峮峯峱峲峳峴峵島峷峸峹峺峼峽峾峿崀�崁崄崅崈崉崊崋崌崍崏崐崑崒崓崕崗崘崙崚崜崝崟崠崡崢崣崥崨崪崫崬崯崰崱崲崳崵崶崷崸崹崺崻崼崿嵀嵁嵂嵃嵄嵅嵆嵈嵉嵍嵎嵏嵐嵑嵒嵓嵔嵕嵖嵗嵙嵚嵜嵞嵟嵠嵡嵢嵣嵤嵥嵦嵧嵨嵪嵭嵮嵰嵱嵲嵳嵵嵶嵷嵸嵹嵺嵻嵼嵽嵾嵿嶀嶁嶃嶄嶅嶆嶇嶈嶉嶊嶋嶌嶍嶎嶏嶐嶑嶒嶓嶔嶕嶖嶗嶘嶚嶛嶜嶞嶟嶠�".split(""); +for(j = 0; j != D[141].length; ++j) if(D[141][j].charCodeAt(0) !== 0xFFFD) { e[D[141][j]] = 36096 + j; d[36096 + j] = D[141][j];} +D[142] = "����������������������������������������������������������������嶡嶢嶣嶤嶥嶦嶧嶨嶩嶪嶫嶬嶭嶮嶯嶰嶱嶲嶳嶴嶵嶶嶸嶹嶺嶻嶼嶽嶾嶿巀巁巂巃巄巆巇巈巉巊巋巌巎巏巐巑巒巓巔巕巖巗巘巙巚巜巟巠巣巤巪巬巭�巰巵巶巸巹巺巻巼巿帀帄帇帉帊帋帍帎帒帓帗帞帟帠帡帢帣帤帥帨帩帪師帬帯帰帲帳帴帵帶帹帺帾帿幀幁幃幆幇幈幉幊幋幍幎幏幐幑幒幓幖幗幘幙幚幜幝幟幠幣幤幥幦幧幨幩幪幫幬幭幮幯幰幱幵幷幹幾庁庂広庅庈庉庌庍庎庒庘庛庝庡庢庣庤庨庩庪庫庬庮庯庰庱庲庴庺庻庼庽庿廀廁廂廃廄廅�".split(""); +for(j = 0; j != D[142].length; ++j) if(D[142][j].charCodeAt(0) !== 0xFFFD) { e[D[142][j]] = 36352 + j; d[36352 + j] = D[142][j];} +D[143] = "����������������������������������������������������������������廆廇廈廋廌廍廎廏廐廔廕廗廘廙廚廜廝廞廟廠廡廢廣廤廥廦廧廩廫廬廭廮廯廰廱廲廳廵廸廹廻廼廽弅弆弇弉弌弍弎弐弒弔弖弙弚弜弝弞弡弢弣弤�弨弫弬弮弰弲弳弴張弶強弸弻弽弾弿彁彂彃彄彅彆彇彈彉彊彋彌彍彎彏彑彔彙彚彛彜彞彟彠彣彥彧彨彫彮彯彲彴彵彶彸彺彽彾彿徃徆徍徎徏徑従徔徖徚徛徝從徟徠徢徣徤徥徦徧復徫徬徯徰徱徲徳徴徶徸徹徺徻徾徿忀忁忂忇忈忊忋忎忓忔忕忚忛応忞忟忢忣忥忦忨忩忬忯忰忲忳忴忶忷忹忺忼怇�".split(""); +for(j = 0; j != D[143].length; ++j) if(D[143][j].charCodeAt(0) !== 0xFFFD) { e[D[143][j]] = 36608 + j; d[36608 + j] = D[143][j];} +D[144] = "����������������������������������������������������������������怈怉怋怌怐怑怓怗怘怚怞怟怢怣怤怬怭怮怰怱怲怳怴怶怷怸怹怺怽怾恀恄恅恆恇恈恉恊恌恎恏恑恓恔恖恗恘恛恜恞恟恠恡恥恦恮恱恲恴恵恷恾悀�悁悂悅悆悇悈悊悋悎悏悐悑悓悕悗悘悙悜悞悡悢悤悥悧悩悪悮悰悳悵悶悷悹悺悽悾悿惀惁惂惃惄惇惈惉惌惍惎惏惐惒惓惔惖惗惙惛惞惡惢惣惤惥惪惱惲惵惷惸惻惼惽惾惿愂愃愄愅愇愊愋愌愐愑愒愓愔愖愗愘愙愛愜愝愞愡愢愥愨愩愪愬愭愮愯愰愱愲愳愴愵愶愷愸愹愺愻愼愽愾慀慁慂慃慄慅慆�".split(""); +for(j = 0; j != D[144].length; ++j) if(D[144][j].charCodeAt(0) !== 0xFFFD) { e[D[144][j]] = 36864 + j; d[36864 + j] = D[144][j];} +D[145] = "����������������������������������������������������������������慇慉態慍慏慐慒慓慔慖慗慘慙慚慛慜慞慟慠慡慣慤慥慦慩慪慫慬慭慮慯慱慲慳慴慶慸慹慺慻慼慽慾慿憀憁憂憃憄憅憆憇憈憉憊憌憍憏憐憑憒憓憕�憖憗憘憙憚憛憜憞憟憠憡憢憣憤憥憦憪憫憭憮憯憰憱憲憳憴憵憶憸憹憺憻憼憽憿懀懁懃懄懅懆懇應懌懍懎懏懐懓懕懖懗懘懙懚懛懜懝懞懟懠懡懢懣懤懥懧懨懩懪懫懬懭懮懯懰懱懲懳懴懶懷懸懹懺懻懼懽懾戀戁戂戃戄戅戇戉戓戔戙戜戝戞戠戣戦戧戨戩戫戭戯戰戱戲戵戶戸戹戺戻戼扂扄扅扆扊�".split(""); +for(j = 0; j != D[145].length; ++j) if(D[145][j].charCodeAt(0) !== 0xFFFD) { e[D[145][j]] = 37120 + j; d[37120 + j] = D[145][j];} +D[146] = "����������������������������������������������������������������扏扐払扖扗扙扚扜扝扞扟扠扡扢扤扥扨扱扲扴扵扷扸扺扻扽抁抂抃抅抆抇抈抋抌抍抎抏抐抔抙抜抝択抣抦抧抩抪抭抮抯抰抲抳抴抶抷抸抺抾拀拁�拃拋拏拑拕拝拞拠拡拤拪拫拰拲拵拸拹拺拻挀挃挄挅挆挊挋挌挍挏挐挒挓挔挕挗挘挙挜挦挧挩挬挭挮挰挱挳挴挵挶挷挸挻挼挾挿捀捁捄捇捈捊捑捒捓捔捖捗捘捙捚捛捜捝捠捤捥捦捨捪捫捬捯捰捲捳捴捵捸捹捼捽捾捿掁掃掄掅掆掋掍掑掓掔掕掗掙掚掛掜掝掞掟採掤掦掫掯掱掲掵掶掹掻掽掿揀�".split(""); +for(j = 0; j != D[146].length; ++j) if(D[146][j].charCodeAt(0) !== 0xFFFD) { e[D[146][j]] = 37376 + j; d[37376 + j] = D[146][j];} +D[147] = "����������������������������������������������������������������揁揂揃揅揇揈揊揋揌揑揓揔揕揗揘揙揚換揜揝揟揢揤揥揦揧揨揫揬揮揯揰揱揳揵揷揹揺揻揼揾搃搄搆搇搈搉搊損搎搑搒搕搖搗搘搙搚搝搟搢搣搤�搥搧搨搩搫搮搯搰搱搲搳搵搶搷搸搹搻搼搾摀摂摃摉摋摌摍摎摏摐摑摓摕摖摗摙摚摛摜摝摟摠摡摢摣摤摥摦摨摪摫摬摮摯摰摱摲摳摴摵摶摷摻摼摽摾摿撀撁撃撆撈撉撊撋撌撍撎撏撐撓撔撗撘撚撛撜撝撟撠撡撢撣撥撦撧撨撪撫撯撱撲撳撴撶撹撻撽撾撿擁擃擄擆擇擈擉擊擋擌擏擑擓擔擕擖擙據�".split(""); +for(j = 0; j != D[147].length; ++j) if(D[147][j].charCodeAt(0) !== 0xFFFD) { e[D[147][j]] = 37632 + j; d[37632 + j] = D[147][j];} +D[148] = "����������������������������������������������������������������擛擜擝擟擠擡擣擥擧擨擩擪擫擬擭擮擯擰擱擲擳擴擵擶擷擸擹擺擻擼擽擾擿攁攂攃攄攅攆攇攈攊攋攌攍攎攏攐攑攓攔攕攖攗攙攚攛攜攝攞攟攠攡�攢攣攤攦攧攨攩攪攬攭攰攱攲攳攷攺攼攽敀敁敂敃敄敆敇敊敋敍敎敐敒敓敔敗敘敚敜敟敠敡敤敥敧敨敩敪敭敮敯敱敳敵敶數敹敺敻敼敽敾敿斀斁斂斃斄斅斆斈斉斊斍斎斏斒斔斕斖斘斚斝斞斠斢斣斦斨斪斬斮斱斲斳斴斵斶斷斸斺斻斾斿旀旂旇旈旉旊旍旐旑旓旔旕旘旙旚旛旜旝旞旟旡旣旤旪旫�".split(""); +for(j = 0; j != D[148].length; ++j) if(D[148][j].charCodeAt(0) !== 0xFFFD) { e[D[148][j]] = 37888 + j; d[37888 + j] = D[148][j];} +D[149] = "����������������������������������������������������������������旲旳旴旵旸旹旻旼旽旾旿昁昄昅昇昈昉昋昍昐昑昒昖昗昘昚昛昜昞昡昢昣昤昦昩昪昫昬昮昰昲昳昷昸昹昺昻昽昿晀時晄晅晆晇晈晉晊晍晎晐晑晘�晙晛晜晝晞晠晢晣晥晧晩晪晫晬晭晱晲晳晵晸晹晻晼晽晿暀暁暃暅暆暈暉暊暋暍暎暏暐暒暓暔暕暘暙暚暛暜暞暟暠暡暢暣暤暥暦暩暪暫暬暭暯暰暱暲暳暵暶暷暸暺暻暼暽暿曀曁曂曃曄曅曆曇曈曉曊曋曌曍曎曏曐曑曒曓曔曕曖曗曘曚曞曟曠曡曢曣曤曥曧曨曪曫曬曭曮曯曱曵曶書曺曻曽朁朂會�".split(""); +for(j = 0; j != D[149].length; ++j) if(D[149][j].charCodeAt(0) !== 0xFFFD) { e[D[149][j]] = 38144 + j; d[38144 + j] = D[149][j];} +D[150] = "����������������������������������������������������������������朄朅朆朇朌朎朏朑朒朓朖朘朙朚朜朞朠朡朢朣朤朥朧朩朮朰朲朳朶朷朸朹朻朼朾朿杁杄杅杇杊杋杍杒杔杕杗杘杙杚杛杝杢杣杤杦杧杫杬杮東杴杶�杸杹杺杻杽枀枂枃枅枆枈枊枌枍枎枏枑枒枓枔枖枙枛枟枠枡枤枦枩枬枮枱枲枴枹枺枻枼枽枾枿柀柂柅柆柇柈柉柊柋柌柍柎柕柖柗柛柟柡柣柤柦柧柨柪柫柭柮柲柵柶柷柸柹柺査柼柾栁栂栃栄栆栍栐栒栔栕栘栙栚栛栜栞栟栠栢栣栤栥栦栧栨栫栬栭栮栯栰栱栴栵栶栺栻栿桇桋桍桏桒桖桗桘桙桚桛�".split(""); +for(j = 0; j != D[150].length; ++j) if(D[150][j].charCodeAt(0) !== 0xFFFD) { e[D[150][j]] = 38400 + j; d[38400 + j] = D[150][j];} +D[151] = "����������������������������������������������������������������桜桝桞桟桪桬桭桮桯桰桱桲桳桵桸桹桺桻桼桽桾桿梀梂梄梇梈梉梊梋梌梍梎梐梑梒梔梕梖梘梙梚梛梜條梞梟梠梡梣梤梥梩梪梫梬梮梱梲梴梶梷梸�梹梺梻梼梽梾梿棁棃棄棅棆棇棈棊棌棎棏棐棑棓棔棖棗棙棛棜棝棞棟棡棢棤棥棦棧棨棩棪棫棬棭棯棲棳棴棶棷棸棻棽棾棿椀椂椃椄椆椇椈椉椊椌椏椑椓椔椕椖椗椘椙椚椛検椝椞椡椢椣椥椦椧椨椩椪椫椬椮椯椱椲椳椵椶椷椸椺椻椼椾楀楁楃楄楅楆楇楈楉楊楋楌楍楎楏楐楑楒楓楕楖楘楙楛楜楟�".split(""); +for(j = 0; j != D[151].length; ++j) if(D[151][j].charCodeAt(0) !== 0xFFFD) { e[D[151][j]] = 38656 + j; d[38656 + j] = D[151][j];} +D[152] = "����������������������������������������������������������������楡楢楤楥楧楨楩楪楬業楯楰楲楳楴極楶楺楻楽楾楿榁榃榅榊榋榌榎榏榐榑榒榓榖榗榙榚榝榞榟榠榡榢榣榤榥榦榩榪榬榮榯榰榲榳榵榶榸榹榺榼榽�榾榿槀槂槃槄槅槆槇槈槉構槍槏槑槒槓槕槖槗様槙槚槜槝槞槡槢槣槤槥槦槧槨槩槪槫槬槮槯槰槱槳槴槵槶槷槸槹槺槻槼槾樀樁樂樃樄樅樆樇樈樉樋樌樍樎樏樐樑樒樓樔樕樖標樚樛樜樝樞樠樢樣樤樥樦樧権樫樬樭樮樰樲樳樴樶樷樸樹樺樻樼樿橀橁橂橃橅橆橈橉橊橋橌橍橎橏橑橒橓橔橕橖橗橚�".split(""); +for(j = 0; j != D[152].length; ++j) if(D[152][j].charCodeAt(0) !== 0xFFFD) { e[D[152][j]] = 38912 + j; d[38912 + j] = D[152][j];} +D[153] = "����������������������������������������������������������������橜橝橞機橠橢橣橤橦橧橨橩橪橫橬橭橮橯橰橲橳橴橵橶橷橸橺橻橽橾橿檁檂檃檅檆檇檈檉檊檋檌檍檏檒檓檔檕檖檘檙檚檛檜檝檞檟檡檢檣檤檥檦�檧檨檪檭檮檯檰檱檲檳檴檵檶檷檸檹檺檻檼檽檾檿櫀櫁櫂櫃櫄櫅櫆櫇櫈櫉櫊櫋櫌櫍櫎櫏櫐櫑櫒櫓櫔櫕櫖櫗櫘櫙櫚櫛櫜櫝櫞櫟櫠櫡櫢櫣櫤櫥櫦櫧櫨櫩櫪櫫櫬櫭櫮櫯櫰櫱櫲櫳櫴櫵櫶櫷櫸櫹櫺櫻櫼櫽櫾櫿欀欁欂欃欄欅欆欇欈欉權欋欌欍欎欏欐欑欒欓欔欕欖欗欘欙欚欛欜欝欞欟欥欦欨欩欪欫欬欭欮�".split(""); +for(j = 0; j != D[153].length; ++j) if(D[153][j].charCodeAt(0) !== 0xFFFD) { e[D[153][j]] = 39168 + j; d[39168 + j] = D[153][j];} +D[154] = "����������������������������������������������������������������欯欰欱欳欴欵欶欸欻欼欽欿歀歁歂歄歅歈歊歋歍歎歏歐歑歒歓歔歕歖歗歘歚歛歜歝歞歟歠歡歨歩歫歬歭歮歯歰歱歲歳歴歵歶歷歸歺歽歾歿殀殅殈�殌殎殏殐殑殔殕殗殘殙殜殝殞殟殠殢殣殤殥殦殧殨殩殫殬殭殮殯殰殱殲殶殸殹殺殻殼殽殾毀毃毄毆毇毈毉毊毌毎毐毑毘毚毜毝毞毟毠毢毣毤毥毦毧毨毩毬毭毮毰毱毲毴毶毷毸毺毻毼毾毿氀氁氂氃氄氈氉氊氋氌氎氒気氜氝氞氠氣氥氫氬氭氱氳氶氷氹氺氻氼氾氿汃汄汅汈汋汌汍汎汏汑汒汓汖汘�".split(""); +for(j = 0; j != D[154].length; ++j) if(D[154][j].charCodeAt(0) !== 0xFFFD) { e[D[154][j]] = 39424 + j; d[39424 + j] = D[154][j];} +D[155] = "����������������������������������������������������������������汙汚汢汣汥汦汧汫汬汭汮汯汱汳汵汷汸決汻汼汿沀沄沇沊沋沍沎沑沒沕沖沗沘沚沜沝沞沠沢沨沬沯沰沴沵沶沷沺泀況泂泃泆泇泈泋泍泎泏泑泒泘�泙泚泜泝泟泤泦泧泩泬泭泲泴泹泿洀洂洃洅洆洈洉洊洍洏洐洑洓洔洕洖洘洜洝洟洠洡洢洣洤洦洨洩洬洭洯洰洴洶洷洸洺洿浀浂浄浉浌浐浕浖浗浘浛浝浟浡浢浤浥浧浨浫浬浭浰浱浲浳浵浶浹浺浻浽浾浿涀涁涃涄涆涇涊涋涍涏涐涒涖涗涘涙涚涜涢涥涬涭涰涱涳涴涶涷涹涺涻涼涽涾淁淂淃淈淉淊�".split(""); +for(j = 0; j != D[155].length; ++j) if(D[155][j].charCodeAt(0) !== 0xFFFD) { e[D[155][j]] = 39680 + j; d[39680 + j] = D[155][j];} +D[156] = "����������������������������������������������������������������淍淎淏淐淒淓淔淕淗淚淛淜淟淢淣淥淧淨淩淪淭淯淰淲淴淵淶淸淺淽淾淿渀渁渂渃渄渆渇済渉渋渏渒渓渕渘渙減渜渞渟渢渦渧渨渪測渮渰渱渳渵�渶渷渹渻渼渽渾渿湀湁湂湅湆湇湈湉湊湋湌湏湐湑湒湕湗湙湚湜湝湞湠湡湢湣湤湥湦湧湨湩湪湬湭湯湰湱湲湳湴湵湶湷湸湹湺湻湼湽満溁溂溄溇溈溊溋溌溍溎溑溒溓溔溕準溗溙溚溛溝溞溠溡溣溤溦溨溩溫溬溭溮溰溳溵溸溹溼溾溿滀滃滄滅滆滈滉滊滌滍滎滐滒滖滘滙滛滜滝滣滧滪滫滬滭滮滯�".split(""); +for(j = 0; j != D[156].length; ++j) if(D[156][j].charCodeAt(0) !== 0xFFFD) { e[D[156][j]] = 39936 + j; d[39936 + j] = D[156][j];} +D[157] = "����������������������������������������������������������������滰滱滲滳滵滶滷滸滺滻滼滽滾滿漀漁漃漄漅漇漈漊漋漌漍漎漐漑漒漖漗漘漙漚漛漜漝漞漟漡漢漣漥漦漧漨漬漮漰漲漴漵漷漸漹漺漻漼漽漿潀潁潂�潃潄潅潈潉潊潌潎潏潐潑潒潓潔潕潖潗潙潚潛潝潟潠潡潣潤潥潧潨潩潪潫潬潯潰潱潳潵潶潷潹潻潽潾潿澀澁澂澃澅澆澇澊澋澏澐澑澒澓澔澕澖澗澘澙澚澛澝澞澟澠澢澣澤澥澦澨澩澪澫澬澭澮澯澰澱澲澴澵澷澸澺澻澼澽澾澿濁濃濄濅濆濇濈濊濋濌濍濎濏濐濓濔濕濖濗濘濙濚濛濜濝濟濢濣濤濥�".split(""); +for(j = 0; j != D[157].length; ++j) if(D[157][j].charCodeAt(0) !== 0xFFFD) { e[D[157][j]] = 40192 + j; d[40192 + j] = D[157][j];} +D[158] = "����������������������������������������������������������������濦濧濨濩濪濫濬濭濰濱濲濳濴濵濶濷濸濹濺濻濼濽濾濿瀀瀁瀂瀃瀄瀅瀆瀇瀈瀉瀊瀋瀌瀍瀎瀏瀐瀒瀓瀔瀕瀖瀗瀘瀙瀜瀝瀞瀟瀠瀡瀢瀤瀥瀦瀧瀨瀩瀪�瀫瀬瀭瀮瀯瀰瀱瀲瀳瀴瀶瀷瀸瀺瀻瀼瀽瀾瀿灀灁灂灃灄灅灆灇灈灉灊灋灍灎灐灑灒灓灔灕灖灗灘灙灚灛灜灝灟灠灡灢灣灤灥灦灧灨灩灪灮灱灲灳灴灷灹灺灻災炁炂炃炄炆炇炈炋炌炍炏炐炑炓炗炘炚炛炞炟炠炡炢炣炤炥炦炧炨炩炪炰炲炴炵炶為炾炿烄烅烆烇烉烋烌烍烎烏烐烑烒烓烔烕烖烗烚�".split(""); +for(j = 0; j != D[158].length; ++j) if(D[158][j].charCodeAt(0) !== 0xFFFD) { e[D[158][j]] = 40448 + j; d[40448 + j] = D[158][j];} +D[159] = "����������������������������������������������������������������烜烝烞烠烡烢烣烥烪烮烰烱烲烳烴烵烶烸烺烻烼烾烿焀焁焂焃焄焅焆焇焈焋焌焍焎焏焑焒焔焗焛焜焝焞焟焠無焢焣焤焥焧焨焩焪焫焬焭焮焲焳焴�焵焷焸焹焺焻焼焽焾焿煀煁煂煃煄煆煇煈煉煋煍煏煐煑煒煓煔煕煖煗煘煙煚煛煝煟煠煡煢煣煥煩煪煫煬煭煯煰煱煴煵煶煷煹煻煼煾煿熀熁熂熃熅熆熇熈熉熋熌熍熎熐熑熒熓熕熖熗熚熛熜熝熞熡熢熣熤熥熦熧熩熪熫熭熮熯熰熱熲熴熶熷熸熺熻熼熽熾熿燀燁燂燄燅燆燇燈燉燊燋燌燍燏燐燑燒燓�".split(""); +for(j = 0; j != D[159].length; ++j) if(D[159][j].charCodeAt(0) !== 0xFFFD) { e[D[159][j]] = 40704 + j; d[40704 + j] = D[159][j];} +D[160] = "����������������������������������������������������������������燖燗燘燙燚燛燜燝燞營燡燢燣燤燦燨燩燪燫燬燭燯燰燱燲燳燴燵燶燷燸燺燻燼燽燾燿爀爁爂爃爄爅爇爈爉爊爋爌爍爎爏爐爑爒爓爔爕爖爗爘爙爚�爛爜爞爟爠爡爢爣爤爥爦爧爩爫爭爮爯爲爳爴爺爼爾牀牁牂牃牄牅牆牉牊牋牎牏牐牑牓牔牕牗牘牚牜牞牠牣牤牥牨牪牫牬牭牰牱牳牴牶牷牸牻牼牽犂犃犅犆犇犈犉犌犎犐犑犓犔犕犖犗犘犙犚犛犜犝犞犠犡犢犣犤犥犦犧犨犩犪犫犮犱犲犳犵犺犻犼犽犾犿狀狅狆狇狉狊狋狌狏狑狓狔狕狖狘狚狛�".split(""); +for(j = 0; j != D[160].length; ++j) if(D[160][j].charCodeAt(0) !== 0xFFFD) { e[D[160][j]] = 40960 + j; d[40960 + j] = D[160][j];} +D[161] = "����������������������������������������������������������������� 、。·ˉˇ¨〃々—~‖…‘’“”〔〕〈〉《》「」『』〖〗【】±×÷∶∧∨∑∏∪∩∈∷√⊥∥∠⌒⊙∫∮≡≌≈∽∝≠≮≯≤≥∞∵∴♂♀°′″℃$¤¢£‰§№☆★○●◎◇◆□■△▲※→←↑↓〓�".split(""); +for(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];} +D[162] = "�����������������������������������������������������������������ⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹ⒈⒉⒊⒋⒌⒍⒎⒏⒐⒑⒒⒓⒔⒕⒖⒗⒘⒙⒚⒛⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽⑾⑿⒀⒁⒂⒃⒄⒅⒆⒇①②③④⑤⑥⑦⑧⑨⑩㈠㈡㈢㈣㈤㈥㈦㈧㈨㈩ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫ�".split(""); +for(j = 0; j != D[162].length; ++j) if(D[162][j].charCodeAt(0) !== 0xFFFD) { e[D[162][j]] = 41472 + j; d[41472 + j] = D[162][j];} +D[163] = "�����������������������������������������������������������������!"#¥%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|} ̄�".split(""); +for(j = 0; j != D[163].length; ++j) if(D[163][j].charCodeAt(0) !== 0xFFFD) { e[D[163][j]] = 41728 + j; d[41728 + j] = D[163][j];} +D[164] = "�����������������������������������������������������������������ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをん�".split(""); +for(j = 0; j != D[164].length; ++j) if(D[164][j].charCodeAt(0) !== 0xFFFD) { e[D[164][j]] = 41984 + j; d[41984 + j] = D[164][j];} +D[165] = "�����������������������������������������������������������������ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶ�".split(""); +for(j = 0; j != D[165].length; ++j) if(D[165][j].charCodeAt(0) !== 0xFFFD) { e[D[165][j]] = 42240 + j; d[42240 + j] = D[165][j];} +D[166] = "�����������������������������������������������������������������ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩαβγδεζηθικλμνξοπρστυφχψω︵︶︹︺︿﹀︽︾﹁﹂﹃﹄︻︼︷︸︱︳︴�".split(""); +for(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];} +D[167] = "�����������������������������������������������������������������АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдеёжзийклмнопрстуфхцчшщъыьэюя�".split(""); +for(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];} +D[168] = "����������������������������������������������������������������ˊˋ˙–―‥‵℅℉↖↗↘↙∕∟∣≒≦≧⊿═║╒╓╔╕╖╗╘╙╚╛╜╝╞╟╠╡╢╣╤╥╦╧╨╩╪╫╬╭╮╯╰╱╲╳▁▂▃▄▅▆▇�█▉▊▋▌▍▎▏▓▔▕▼▽◢◣◤◥☉⊕〒〝〞āáǎàēéěèīíǐìōóǒòūúǔùǖǘǚǜüêɑńňɡㄅㄆㄇㄈㄉㄊㄋㄌㄍㄎㄏㄐㄑㄒㄓㄔㄕㄖㄗㄘㄙㄚㄛㄜㄝㄞㄟㄠㄡㄢㄣㄤㄥㄦㄧㄨㄩ�".split(""); +for(j = 0; j != D[168].length; ++j) if(D[168][j].charCodeAt(0) !== 0xFFFD) { e[D[168][j]] = 43008 + j; d[43008 + j] = D[168][j];} +D[169] = "����������������������������������������������������������������〡〢〣〤〥〦〧〨〩㊣㎎㎏㎜㎝㎞㎡㏄㏎㏑㏒㏕︰¬¦℡㈱‐ー゛゜ヽヾ〆ゝゞ﹉﹊﹋﹌﹍﹎﹏﹐﹑﹒﹔﹕﹖﹗﹙﹚﹛﹜﹝﹞﹟﹠﹡�﹢﹣﹤﹥﹦﹨﹩﹪﹫〇─━│┃┄┅┆┇┈┉┊┋┌┍┎┏┐┑┒┓└┕┖┗┘┙┚┛├┝┞┟┠┡┢┣┤┥┦┧┨┩┪┫┬┭┮┯┰┱┲┳┴┵┶┷┸┹┺┻┼┽┾┿╀╁╂╃╄╅╆╇╈╉╊╋�".split(""); +for(j = 0; j != D[169].length; ++j) if(D[169][j].charCodeAt(0) !== 0xFFFD) { e[D[169][j]] = 43264 + j; d[43264 + j] = D[169][j];} +D[170] = "����������������������������������������������������������������狜狝狟狢狣狤狥狦狧狪狫狵狶狹狽狾狿猀猂猄猅猆猇猈猉猋猌猍猏猐猑猒猔猘猙猚猟猠猣猤猦猧猨猭猯猰猲猳猵猶猺猻猼猽獀獁獂獃獄獅獆獇獈�獉獊獋獌獎獏獑獓獔獕獖獘獙獚獛獜獝獞獟獡獢獣獤獥獦獧獨獩獪獫獮獰獱�".split(""); +for(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];} +D[171] = "����������������������������������������������������������������獲獳獴獵獶獷獸獹獺獻獼獽獿玀玁玂玃玅玆玈玊玌玍玏玐玒玓玔玕玗玘玙玚玜玝玞玠玡玣玤玥玦玧玨玪玬玭玱玴玵玶玸玹玼玽玾玿珁珃珄珅珆珇�珋珌珎珒珓珔珕珖珗珘珚珛珜珝珟珡珢珣珤珦珨珪珫珬珮珯珰珱珳珴珵珶珷�".split(""); +for(j = 0; j != D[171].length; ++j) if(D[171][j].charCodeAt(0) !== 0xFFFD) { e[D[171][j]] = 43776 + j; d[43776 + j] = D[171][j];} +D[172] = "����������������������������������������������������������������珸珹珺珻珼珽現珿琀琁琂琄琇琈琋琌琍琎琑琒琓琔琕琖琗琘琙琜琝琞琟琠琡琣琤琧琩琫琭琯琱琲琷琸琹琺琻琽琾琿瑀瑂瑃瑄瑅瑆瑇瑈瑉瑊瑋瑌瑍�瑎瑏瑐瑑瑒瑓瑔瑖瑘瑝瑠瑡瑢瑣瑤瑥瑦瑧瑨瑩瑪瑫瑬瑮瑯瑱瑲瑳瑴瑵瑸瑹瑺�".split(""); +for(j = 0; j != D[172].length; ++j) if(D[172][j].charCodeAt(0) !== 0xFFFD) { e[D[172][j]] = 44032 + j; d[44032 + j] = D[172][j];} +D[173] = "����������������������������������������������������������������瑻瑼瑽瑿璂璄璅璆璈璉璊璌璍璏璑璒璓璔璕璖璗璘璙璚璛璝璟璠璡璢璣璤璥璦璪璫璬璭璮璯環璱璲璳璴璵璶璷璸璹璻璼璽璾璿瓀瓁瓂瓃瓄瓅瓆瓇�瓈瓉瓊瓋瓌瓍瓎瓏瓐瓑瓓瓔瓕瓖瓗瓘瓙瓚瓛瓝瓟瓡瓥瓧瓨瓩瓪瓫瓬瓭瓰瓱瓲�".split(""); +for(j = 0; j != D[173].length; ++j) if(D[173][j].charCodeAt(0) !== 0xFFFD) { e[D[173][j]] = 44288 + j; d[44288 + j] = D[173][j];} +D[174] = "����������������������������������������������������������������瓳瓵瓸瓹瓺瓻瓼瓽瓾甀甁甂甃甅甆甇甈甉甊甋甌甎甐甒甔甕甖甗甛甝甞甠甡產産甤甦甧甪甮甴甶甹甼甽甿畁畂畃畄畆畇畉畊畍畐畑畒畓畕畖畗畘�畝畞畟畠畡畢畣畤畧畨畩畫畬畭畮畯異畱畳畵當畷畺畻畼畽畾疀疁疂疄疅疇�".split(""); +for(j = 0; j != D[174].length; ++j) if(D[174][j].charCodeAt(0) !== 0xFFFD) { e[D[174][j]] = 44544 + j; d[44544 + j] = D[174][j];} +D[175] = "����������������������������������������������������������������疈疉疊疌疍疎疐疓疕疘疛疜疞疢疦疧疨疩疪疭疶疷疺疻疿痀痁痆痋痌痎痏痐痑痓痗痙痚痜痝痟痠痡痥痩痬痭痮痯痲痳痵痶痷痸痺痻痽痾瘂瘄瘆瘇�瘈瘉瘋瘍瘎瘏瘑瘒瘓瘔瘖瘚瘜瘝瘞瘡瘣瘧瘨瘬瘮瘯瘱瘲瘶瘷瘹瘺瘻瘽癁療癄�".split(""); +for(j = 0; j != D[175].length; ++j) if(D[175][j].charCodeAt(0) !== 0xFFFD) { e[D[175][j]] = 44800 + j; d[44800 + j] = D[175][j];} +D[176] = "����������������������������������������������������������������癅癆癇癈癉癊癋癎癏癐癑癒癓癕癗癘癙癚癛癝癟癠癡癢癤癥癦癧癨癩癪癬癭癮癰癱癲癳癴癵癶癷癹発發癿皀皁皃皅皉皊皌皍皏皐皒皔皕皗皘皚皛�皜皝皞皟皠皡皢皣皥皦皧皨皩皪皫皬皭皯皰皳皵皶皷皸皹皺皻皼皽皾盀盁盃啊阿埃挨哎唉哀皑癌蔼矮艾碍爱隘鞍氨安俺按暗岸胺案肮昂盎凹敖熬翱袄傲奥懊澳芭捌扒叭吧笆八疤巴拔跋靶把耙坝霸罢爸白柏百摆佰败拜稗斑班搬扳般颁板版扮拌伴瓣半办绊邦帮梆榜膀绑棒磅蚌镑傍谤苞胞包褒剥�".split(""); +for(j = 0; j != D[176].length; ++j) if(D[176][j].charCodeAt(0) !== 0xFFFD) { e[D[176][j]] = 45056 + j; d[45056 + j] = D[176][j];} +D[177] = "����������������������������������������������������������������盄盇盉盋盌盓盕盙盚盜盝盞盠盡盢監盤盦盧盨盩盪盫盬盭盰盳盵盶盷盺盻盽盿眀眂眃眅眆眊県眎眏眐眑眒眓眔眕眖眗眘眛眜眝眞眡眣眤眥眧眪眫�眬眮眰眱眲眳眴眹眻眽眾眿睂睄睅睆睈睉睊睋睌睍睎睏睒睓睔睕睖睗睘睙睜薄雹保堡饱宝抱报暴豹鲍爆杯碑悲卑北辈背贝钡倍狈备惫焙被奔苯本笨崩绷甭泵蹦迸逼鼻比鄙笔彼碧蓖蔽毕毙毖币庇痹闭敝弊必辟壁臂避陛鞭边编贬扁便变卞辨辩辫遍标彪膘表鳖憋别瘪彬斌濒滨宾摈兵冰柄丙秉饼炳�".split(""); +for(j = 0; j != D[177].length; ++j) if(D[177][j].charCodeAt(0) !== 0xFFFD) { e[D[177][j]] = 45312 + j; d[45312 + j] = D[177][j];} +D[178] = "����������������������������������������������������������������睝睞睟睠睤睧睩睪睭睮睯睰睱睲睳睴睵睶睷睸睺睻睼瞁瞂瞃瞆瞇瞈瞉瞊瞋瞏瞐瞓瞔瞕瞖瞗瞘瞙瞚瞛瞜瞝瞞瞡瞣瞤瞦瞨瞫瞭瞮瞯瞱瞲瞴瞶瞷瞸瞹瞺�瞼瞾矀矁矂矃矄矅矆矇矈矉矊矋矌矎矏矐矑矒矓矔矕矖矘矙矚矝矞矟矠矡矤病并玻菠播拨钵波博勃搏铂箔伯帛舶脖膊渤泊驳捕卜哺补埠不布步簿部怖擦猜裁材才财睬踩采彩菜蔡餐参蚕残惭惨灿苍舱仓沧藏操糙槽曹草厕策侧册测层蹭插叉茬茶查碴搽察岔差诧拆柴豺搀掺蝉馋谗缠铲产阐颤昌猖�".split(""); +for(j = 0; j != D[178].length; ++j) if(D[178][j].charCodeAt(0) !== 0xFFFD) { e[D[178][j]] = 45568 + j; d[45568 + j] = D[178][j];} +D[179] = "����������������������������������������������������������������矦矨矪矯矰矱矲矴矵矷矹矺矻矼砃砄砅砆砇砈砊砋砎砏砐砓砕砙砛砞砠砡砢砤砨砪砫砮砯砱砲砳砵砶砽砿硁硂硃硄硆硈硉硊硋硍硏硑硓硔硘硙硚�硛硜硞硟硠硡硢硣硤硥硦硧硨硩硯硰硱硲硳硴硵硶硸硹硺硻硽硾硿碀碁碂碃场尝常长偿肠厂敞畅唱倡超抄钞朝嘲潮巢吵炒车扯撤掣彻澈郴臣辰尘晨忱沉陈趁衬撑称城橙成呈乘程惩澄诚承逞骋秤吃痴持匙池迟弛驰耻齿侈尺赤翅斥炽充冲虫崇宠抽酬畴踌稠愁筹仇绸瞅丑臭初出橱厨躇锄雏滁除楚�".split(""); +for(j = 0; j != D[179].length; ++j) if(D[179][j].charCodeAt(0) !== 0xFFFD) { e[D[179][j]] = 45824 + j; d[45824 + j] = D[179][j];} +D[180] = "����������������������������������������������������������������碄碅碆碈碊碋碏碐碒碔碕碖碙碝碞碠碢碤碦碨碩碪碫碬碭碮碯碵碶碷碸確碻碼碽碿磀磂磃磄磆磇磈磌磍磎磏磑磒磓磖磗磘磚磛磜磝磞磟磠磡磢磣�磤磥磦磧磩磪磫磭磮磯磰磱磳磵磶磸磹磻磼磽磾磿礀礂礃礄礆礇礈礉礊礋礌础储矗搐触处揣川穿椽传船喘串疮窗幢床闯创吹炊捶锤垂春椿醇唇淳纯蠢戳绰疵茨磁雌辞慈瓷词此刺赐次聪葱囱匆从丛凑粗醋簇促蹿篡窜摧崔催脆瘁粹淬翠村存寸磋撮搓措挫错搭达答瘩打大呆歹傣戴带殆代贷袋待逮�".split(""); +for(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];} +D[181] = "����������������������������������������������������������������礍礎礏礐礑礒礔礕礖礗礘礙礚礛礜礝礟礠礡礢礣礥礦礧礨礩礪礫礬礭礮礯礰礱礲礳礵礶礷礸礹礽礿祂祃祄祅祇祊祋祌祍祎祏祐祑祒祔祕祘祙祡祣�祤祦祩祪祫祬祮祰祱祲祳祴祵祶祹祻祼祽祾祿禂禃禆禇禈禉禋禌禍禎禐禑禒怠耽担丹单郸掸胆旦氮但惮淡诞弹蛋当挡党荡档刀捣蹈倒岛祷导到稻悼道盗德得的蹬灯登等瞪凳邓堤低滴迪敌笛狄涤翟嫡抵底地蒂第帝弟递缔颠掂滇碘点典靛垫电佃甸店惦奠淀殿碉叼雕凋刁掉吊钓调跌爹碟蝶迭谍叠�".split(""); +for(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];} +D[182] = "����������������������������������������������������������������禓禔禕禖禗禘禙禛禜禝禞禟禠禡禢禣禤禥禦禨禩禪禫禬禭禮禯禰禱禲禴禵禶禷禸禼禿秂秄秅秇秈秊秌秎秏秐秓秔秖秗秙秚秛秜秝秞秠秡秢秥秨秪�秬秮秱秲秳秴秵秶秷秹秺秼秾秿稁稄稅稇稈稉稊稌稏稐稑稒稓稕稖稘稙稛稜丁盯叮钉顶鼎锭定订丢东冬董懂动栋侗恫冻洞兜抖斗陡豆逗痘都督毒犊独读堵睹赌杜镀肚度渡妒端短锻段断缎堆兑队对墩吨蹲敦顿囤钝盾遁掇哆多夺垛躲朵跺舵剁惰堕蛾峨鹅俄额讹娥恶厄扼遏鄂饿恩而儿耳尔饵洱二�".split(""); +for(j = 0; j != D[182].length; ++j) if(D[182][j].charCodeAt(0) !== 0xFFFD) { e[D[182][j]] = 46592 + j; d[46592 + j] = D[182][j];} +D[183] = "����������������������������������������������������������������稝稟稡稢稤稥稦稧稨稩稪稫稬稭種稯稰稱稲稴稵稶稸稺稾穀穁穂穃穄穅穇穈穉穊穋穌積穎穏穐穒穓穔穕穖穘穙穚穛穜穝穞穟穠穡穢穣穤穥穦穧穨�穩穪穫穬穭穮穯穱穲穳穵穻穼穽穾窂窅窇窉窊窋窌窎窏窐窓窔窙窚窛窞窡窢贰发罚筏伐乏阀法珐藩帆番翻樊矾钒繁凡烦反返范贩犯饭泛坊芳方肪房防妨仿访纺放菲非啡飞肥匪诽吠肺废沸费芬酚吩氛分纷坟焚汾粉奋份忿愤粪丰封枫蜂峰锋风疯烽逢冯缝讽奉凤佛否夫敷肤孵扶拂辐幅氟符伏俘服�".split(""); +for(j = 0; j != D[183].length; ++j) if(D[183][j].charCodeAt(0) !== 0xFFFD) { e[D[183][j]] = 46848 + j; d[46848 + j] = D[183][j];} +D[184] = "����������������������������������������������������������������窣窤窧窩窪窫窮窯窰窱窲窴窵窶窷窸窹窺窻窼窽窾竀竁竂竃竄竅竆竇竈竉竊竌竍竎竏竐竑竒竓竔竕竗竘竚竛竜竝竡竢竤竧竨竩竪竫竬竮竰竱竲竳�竴竵競竷竸竻竼竾笀笁笂笅笇笉笌笍笎笐笒笓笖笗笘笚笜笝笟笡笢笣笧笩笭浮涪福袱弗甫抚辅俯釜斧脯腑府腐赴副覆赋复傅付阜父腹负富讣附妇缚咐噶嘎该改概钙盖溉干甘杆柑竿肝赶感秆敢赣冈刚钢缸肛纲岗港杠篙皋高膏羔糕搞镐稿告哥歌搁戈鸽胳疙割革葛格蛤阁隔铬个各给根跟耕更庚羹�".split(""); +for(j = 0; j != D[184].length; ++j) if(D[184][j].charCodeAt(0) !== 0xFFFD) { e[D[184][j]] = 47104 + j; d[47104 + j] = D[184][j];} +D[185] = "����������������������������������������������������������������笯笰笲笴笵笶笷笹笻笽笿筀筁筂筃筄筆筈筊筍筎筓筕筗筙筜筞筟筡筣筤筥筦筧筨筩筪筫筬筭筯筰筳筴筶筸筺筼筽筿箁箂箃箄箆箇箈箉箊箋箌箎箏�箑箒箓箖箘箙箚箛箞箟箠箣箤箥箮箯箰箲箳箵箶箷箹箺箻箼箽箾箿節篂篃範埂耿梗工攻功恭龚供躬公宫弓巩汞拱贡共钩勾沟苟狗垢构购够辜菇咕箍估沽孤姑鼓古蛊骨谷股故顾固雇刮瓜剐寡挂褂乖拐怪棺关官冠观管馆罐惯灌贯光广逛瑰规圭硅归龟闺轨鬼诡癸桂柜跪贵刽辊滚棍锅郭国果裹过哈�".split(""); +for(j = 0; j != D[185].length; ++j) if(D[185][j].charCodeAt(0) !== 0xFFFD) { e[D[185][j]] = 47360 + j; d[47360 + j] = D[185][j];} +D[186] = "����������������������������������������������������������������篅篈築篊篋篍篎篏篐篒篔篕篖篗篘篛篜篞篟篠篢篣篤篧篨篩篫篬篭篯篰篲篳篴篵篶篸篹篺篻篽篿簀簁簂簃簄簅簆簈簉簊簍簎簐簑簒簓簔簕簗簘簙�簚簛簜簝簞簠簡簢簣簤簥簨簩簫簬簭簮簯簰簱簲簳簴簵簶簷簹簺簻簼簽簾籂骸孩海氦亥害骇酣憨邯韩含涵寒函喊罕翰撼捍旱憾悍焊汗汉夯杭航壕嚎豪毫郝好耗号浩呵喝荷菏核禾和何合盒貉阂河涸赫褐鹤贺嘿黑痕很狠恨哼亨横衡恒轰哄烘虹鸿洪宏弘红喉侯猴吼厚候后呼乎忽瑚壶葫胡蝴狐糊湖�".split(""); +for(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];} +D[187] = "����������������������������������������������������������������籃籄籅籆籇籈籉籊籋籌籎籏籐籑籒籓籔籕籖籗籘籙籚籛籜籝籞籟籠籡籢籣籤籥籦籧籨籩籪籫籬籭籮籯籰籱籲籵籶籷籸籹籺籾籿粀粁粂粃粄粅粆粇�粈粊粋粌粍粎粏粐粓粔粖粙粚粛粠粡粣粦粧粨粩粫粬粭粯粰粴粵粶粷粸粺粻弧虎唬护互沪户花哗华猾滑画划化话槐徊怀淮坏欢环桓还缓换患唤痪豢焕涣宦幻荒慌黄磺蝗簧皇凰惶煌晃幌恍谎灰挥辉徽恢蛔回毁悔慧卉惠晦贿秽会烩汇讳诲绘荤昏婚魂浑混豁活伙火获或惑霍货祸击圾基机畸稽积箕�".split(""); +for(j = 0; j != D[187].length; ++j) if(D[187][j].charCodeAt(0) !== 0xFFFD) { e[D[187][j]] = 47872 + j; d[47872 + j] = D[187][j];} +D[188] = "����������������������������������������������������������������粿糀糂糃糄糆糉糋糎糏糐糑糒糓糔糘糚糛糝糞糡糢糣糤糥糦糧糩糪糫糬糭糮糰糱糲糳糴糵糶糷糹糺糼糽糾糿紀紁紂紃約紅紆紇紈紉紋紌納紎紏紐�紑紒紓純紕紖紗紘紙級紛紜紝紞紟紡紣紤紥紦紨紩紪紬紭紮細紱紲紳紴紵紶肌饥迹激讥鸡姬绩缉吉极棘辑籍集及急疾汲即嫉级挤几脊己蓟技冀季伎祭剂悸济寄寂计记既忌际妓继纪嘉枷夹佳家加荚颊贾甲钾假稼价架驾嫁歼监坚尖笺间煎兼肩艰奸缄茧检柬碱硷拣捡简俭剪减荐槛鉴践贱见键箭件�".split(""); +for(j = 0; j != D[188].length; ++j) if(D[188][j].charCodeAt(0) !== 0xFFFD) { e[D[188][j]] = 48128 + j; d[48128 + j] = D[188][j];} +D[189] = "����������������������������������������������������������������紷紸紹紺紻紼紽紾紿絀絁終絃組絅絆絇絈絉絊絋経絍絎絏結絑絒絓絔絕絖絗絘絙絚絛絜絝絞絟絠絡絢絣絤絥給絧絨絩絪絫絬絭絯絰統絲絳絴絵絶�絸絹絺絻絼絽絾絿綀綁綂綃綄綅綆綇綈綉綊綋綌綍綎綏綐綑綒經綔綕綖綗綘健舰剑饯渐溅涧建僵姜将浆江疆蒋桨奖讲匠酱降蕉椒礁焦胶交郊浇骄娇嚼搅铰矫侥脚狡角饺缴绞剿教酵轿较叫窖揭接皆秸街阶截劫节桔杰捷睫竭洁结解姐戒藉芥界借介疥诫届巾筋斤金今津襟紧锦仅谨进靳晋禁近烬浸�".split(""); +for(j = 0; j != D[189].length; ++j) if(D[189][j].charCodeAt(0) !== 0xFFFD) { e[D[189][j]] = 48384 + j; d[48384 + j] = D[189][j];} +D[190] = "����������������������������������������������������������������継続綛綜綝綞綟綠綡綢綣綤綥綧綨綩綪綫綬維綯綰綱網綳綴綵綶綷綸綹綺綻綼綽綾綿緀緁緂緃緄緅緆緇緈緉緊緋緌緍緎総緐緑緒緓緔緕緖緗緘緙�線緛緜緝緞緟締緡緢緣緤緥緦緧編緩緪緫緬緭緮緯緰緱緲緳練緵緶緷緸緹緺尽劲荆兢茎睛晶鲸京惊精粳经井警景颈静境敬镜径痉靖竟竞净炯窘揪究纠玖韭久灸九酒厩救旧臼舅咎就疚鞠拘狙疽居驹菊局咀矩举沮聚拒据巨具距踞锯俱句惧炬剧捐鹃娟倦眷卷绢撅攫抉掘倔爵觉决诀绝均菌钧军君峻�".split(""); +for(j = 0; j != D[190].length; ++j) if(D[190][j].charCodeAt(0) !== 0xFFFD) { e[D[190][j]] = 48640 + j; d[48640 + j] = D[190][j];} +D[191] = "����������������������������������������������������������������緻緼緽緾緿縀縁縂縃縄縅縆縇縈縉縊縋縌縍縎縏縐縑縒縓縔縕縖縗縘縙縚縛縜縝縞縟縠縡縢縣縤縥縦縧縨縩縪縫縬縭縮縯縰縱縲縳縴縵縶縷縸縹�縺縼總績縿繀繂繃繄繅繆繈繉繊繋繌繍繎繏繐繑繒繓織繕繖繗繘繙繚繛繜繝俊竣浚郡骏喀咖卡咯开揩楷凯慨刊堪勘坎砍看康慷糠扛抗亢炕考拷烤靠坷苛柯棵磕颗科壳咳可渴克刻客课肯啃垦恳坑吭空恐孔控抠口扣寇枯哭窟苦酷库裤夸垮挎跨胯块筷侩快宽款匡筐狂框矿眶旷况亏盔岿窥葵奎魁傀�".split(""); +for(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];} +D[192] = "����������������������������������������������������������������繞繟繠繡繢繣繤繥繦繧繨繩繪繫繬繭繮繯繰繱繲繳繴繵繶繷繸繹繺繻繼繽繾繿纀纁纃纄纅纆纇纈纉纊纋續纍纎纏纐纑纒纓纔纕纖纗纘纙纚纜纝纞�纮纴纻纼绖绤绬绹缊缐缞缷缹缻缼缽缾缿罀罁罃罆罇罈罉罊罋罌罍罎罏罒罓馈愧溃坤昆捆困括扩廓阔垃拉喇蜡腊辣啦莱来赖蓝婪栏拦篮阑兰澜谰揽览懒缆烂滥琅榔狼廊郎朗浪捞劳牢老佬姥酪烙涝勒乐雷镭蕾磊累儡垒擂肋类泪棱楞冷厘梨犁黎篱狸离漓理李里鲤礼莉荔吏栗丽厉励砾历利傈例俐�".split(""); +for(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];} +D[193] = "����������������������������������������������������������������罖罙罛罜罝罞罠罣罤罥罦罧罫罬罭罯罰罳罵罶罷罸罺罻罼罽罿羀羂羃羄羅羆羇羈羉羋羍羏羐羑羒羓羕羖羗羘羙羛羜羠羢羣羥羦羨義羪羫羬羭羮羱�羳羴羵羶羷羺羻羾翀翂翃翄翆翇翈翉翋翍翏翐翑習翓翖翗翙翚翛翜翝翞翢翣痢立粒沥隶力璃哩俩联莲连镰廉怜涟帘敛脸链恋炼练粮凉梁粱良两辆量晾亮谅撩聊僚疗燎寥辽潦了撂镣廖料列裂烈劣猎琳林磷霖临邻鳞淋凛赁吝拎玲菱零龄铃伶羚凌灵陵岭领另令溜琉榴硫馏留刘瘤流柳六龙聋咙笼窿�".split(""); +for(j = 0; j != D[193].length; ++j) if(D[193][j].charCodeAt(0) !== 0xFFFD) { e[D[193][j]] = 49408 + j; d[49408 + j] = D[193][j];} +D[194] = "����������������������������������������������������������������翤翧翨翪翫翬翭翯翲翴翵翶翷翸翹翺翽翾翿耂耇耈耉耊耎耏耑耓耚耛耝耞耟耡耣耤耫耬耭耮耯耰耲耴耹耺耼耾聀聁聄聅聇聈聉聎聏聐聑聓聕聖聗�聙聛聜聝聞聟聠聡聢聣聤聥聦聧聨聫聬聭聮聯聰聲聳聴聵聶職聸聹聺聻聼聽隆垄拢陇楼娄搂篓漏陋芦卢颅庐炉掳卤虏鲁麓碌露路赂鹿潞禄录陆戮驴吕铝侣旅履屡缕虑氯律率滤绿峦挛孪滦卵乱掠略抡轮伦仑沦纶论萝螺罗逻锣箩骡裸落洛骆络妈麻玛码蚂马骂嘛吗埋买麦卖迈脉瞒馒蛮满蔓曼慢漫�".split(""); +for(j = 0; j != D[194].length; ++j) if(D[194][j].charCodeAt(0) !== 0xFFFD) { e[D[194][j]] = 49664 + j; d[49664 + j] = D[194][j];} +D[195] = "����������������������������������������������������������������聾肁肂肅肈肊肍肎肏肐肑肒肔肕肗肙肞肣肦肧肨肬肰肳肵肶肸肹肻胅胇胈胉胊胋胏胐胑胒胓胔胕胘胟胠胢胣胦胮胵胷胹胻胾胿脀脁脃脄脅脇脈脋�脌脕脗脙脛脜脝脟脠脡脢脣脤脥脦脧脨脩脪脫脭脮脰脳脴脵脷脹脺脻脼脽脿谩芒茫盲氓忙莽猫茅锚毛矛铆卯茂冒帽貌贸么玫枚梅酶霉煤没眉媒镁每美昧寐妹媚门闷们萌蒙檬盟锰猛梦孟眯醚靡糜迷谜弥米秘觅泌蜜密幂棉眠绵冕免勉娩缅面苗描瞄藐秒渺庙妙蔑灭民抿皿敏悯闽明螟鸣铭名命谬摸�".split(""); +for(j = 0; j != D[195].length; ++j) if(D[195][j].charCodeAt(0) !== 0xFFFD) { e[D[195][j]] = 49920 + j; d[49920 + j] = D[195][j];} +D[196] = "����������������������������������������������������������������腀腁腂腃腄腅腇腉腍腎腏腒腖腗腘腛腜腝腞腟腡腢腣腤腦腨腪腫腬腯腲腳腵腶腷腸膁膃膄膅膆膇膉膋膌膍膎膐膒膓膔膕膖膗膙膚膞膟膠膡膢膤膥�膧膩膫膬膭膮膯膰膱膲膴膵膶膷膸膹膼膽膾膿臄臅臇臈臉臋臍臎臏臐臑臒臓摹蘑模膜磨摩魔抹末莫墨默沫漠寞陌谋牟某拇牡亩姆母墓暮幕募慕木目睦牧穆拿哪呐钠那娜纳氖乃奶耐奈南男难囊挠脑恼闹淖呢馁内嫩能妮霓倪泥尼拟你匿腻逆溺蔫拈年碾撵捻念娘酿鸟尿捏聂孽啮镊镍涅您柠狞凝宁�".split(""); +for(j = 0; j != D[196].length; ++j) if(D[196][j].charCodeAt(0) !== 0xFFFD) { e[D[196][j]] = 50176 + j; d[50176 + j] = D[196][j];} +D[197] = "����������������������������������������������������������������臔臕臖臗臘臙臚臛臜臝臞臟臠臡臢臤臥臦臨臩臫臮臯臰臱臲臵臶臷臸臹臺臽臿舃與興舉舊舋舎舏舑舓舕舖舗舘舙舚舝舠舤舥舦舧舩舮舲舺舼舽舿�艀艁艂艃艅艆艈艊艌艍艎艐艑艒艓艔艕艖艗艙艛艜艝艞艠艡艢艣艤艥艦艧艩拧泞牛扭钮纽脓浓农弄奴努怒女暖虐疟挪懦糯诺哦欧鸥殴藕呕偶沤啪趴爬帕怕琶拍排牌徘湃派攀潘盘磐盼畔判叛乓庞旁耪胖抛咆刨炮袍跑泡呸胚培裴赔陪配佩沛喷盆砰抨烹澎彭蓬棚硼篷膨朋鹏捧碰坯砒霹批披劈琵毗�".split(""); +for(j = 0; j != D[197].length; ++j) if(D[197][j].charCodeAt(0) !== 0xFFFD) { e[D[197][j]] = 50432 + j; d[50432 + j] = D[197][j];} +D[198] = "����������������������������������������������������������������艪艫艬艭艱艵艶艷艸艻艼芀芁芃芅芆芇芉芌芐芓芔芕芖芚芛芞芠芢芣芧芲芵芶芺芻芼芿苀苂苃苅苆苉苐苖苙苚苝苢苧苨苩苪苬苭苮苰苲苳苵苶苸�苺苼苽苾苿茀茊茋茍茐茒茓茖茘茙茝茞茟茠茡茢茣茤茥茦茩茪茮茰茲茷茻茽啤脾疲皮匹痞僻屁譬篇偏片骗飘漂瓢票撇瞥拼频贫品聘乒坪苹萍平凭瓶评屏坡泼颇婆破魄迫粕剖扑铺仆莆葡菩蒲埔朴圃普浦谱曝瀑期欺栖戚妻七凄漆柒沏其棋奇歧畦崎脐齐旗祈祁骑起岂乞企启契砌器气迄弃汽泣讫掐�".split(""); +for(j = 0; j != D[198].length; ++j) if(D[198][j].charCodeAt(0) !== 0xFFFD) { e[D[198][j]] = 50688 + j; d[50688 + j] = D[198][j];} +D[199] = "����������������������������������������������������������������茾茿荁荂荄荅荈荊荋荌荍荎荓荕荖荗荘荙荝荢荰荱荲荳荴荵荶荹荺荾荿莀莁莂莃莄莇莈莊莋莌莍莏莐莑莔莕莖莗莙莚莝莟莡莢莣莤莥莦莧莬莭莮�莯莵莻莾莿菂菃菄菆菈菉菋菍菎菐菑菒菓菕菗菙菚菛菞菢菣菤菦菧菨菫菬菭恰洽牵扦钎铅千迁签仟谦乾黔钱钳前潜遣浅谴堑嵌欠歉枪呛腔羌墙蔷强抢橇锹敲悄桥瞧乔侨巧鞘撬翘峭俏窍切茄且怯窃钦侵亲秦琴勤芹擒禽寝沁青轻氢倾卿清擎晴氰情顷请庆琼穷秋丘邱球求囚酋泅趋区蛆曲躯屈驱渠�".split(""); +for(j = 0; j != D[199].length; ++j) if(D[199][j].charCodeAt(0) !== 0xFFFD) { e[D[199][j]] = 50944 + j; d[50944 + j] = D[199][j];} +D[200] = "����������������������������������������������������������������菮華菳菴菵菶菷菺菻菼菾菿萀萂萅萇萈萉萊萐萒萓萔萕萖萗萙萚萛萞萟萠萡萢萣萩萪萫萬萭萮萯萰萲萳萴萵萶萷萹萺萻萾萿葀葁葂葃葄葅葇葈葉�葊葋葌葍葎葏葐葒葓葔葕葖葘葝葞葟葠葢葤葥葦葧葨葪葮葯葰葲葴葷葹葻葼取娶龋趣去圈颧权醛泉全痊拳犬券劝缺炔瘸却鹊榷确雀裙群然燃冉染瓤壤攘嚷让饶扰绕惹热壬仁人忍韧任认刃妊纫扔仍日戎茸蓉荣融熔溶容绒冗揉柔肉茹蠕儒孺如辱乳汝入褥软阮蕊瑞锐闰润若弱撒洒萨腮鳃塞赛三叁�".split(""); +for(j = 0; j != D[200].length; ++j) if(D[200][j].charCodeAt(0) !== 0xFFFD) { e[D[200][j]] = 51200 + j; d[51200 + j] = D[200][j];} +D[201] = "����������������������������������������������������������������葽葾葿蒀蒁蒃蒄蒅蒆蒊蒍蒏蒐蒑蒒蒓蒔蒕蒖蒘蒚蒛蒝蒞蒟蒠蒢蒣蒤蒥蒦蒧蒨蒩蒪蒫蒬蒭蒮蒰蒱蒳蒵蒶蒷蒻蒼蒾蓀蓂蓃蓅蓆蓇蓈蓋蓌蓎蓏蓒蓔蓕蓗�蓘蓙蓚蓛蓜蓞蓡蓢蓤蓧蓨蓩蓪蓫蓭蓮蓯蓱蓲蓳蓴蓵蓶蓷蓸蓹蓺蓻蓽蓾蔀蔁蔂伞散桑嗓丧搔骚扫嫂瑟色涩森僧莎砂杀刹沙纱傻啥煞筛晒珊苫杉山删煽衫闪陕擅赡膳善汕扇缮墒伤商赏晌上尚裳梢捎稍烧芍勺韶少哨邵绍奢赊蛇舌舍赦摄射慑涉社设砷申呻伸身深娠绅神沈审婶甚肾慎渗声生甥牲升绳�".split(""); +for(j = 0; j != D[201].length; ++j) if(D[201][j].charCodeAt(0) !== 0xFFFD) { e[D[201][j]] = 51456 + j; d[51456 + j] = D[201][j];} +D[202] = "����������������������������������������������������������������蔃蔄蔅蔆蔇蔈蔉蔊蔋蔍蔎蔏蔐蔒蔔蔕蔖蔘蔙蔛蔜蔝蔞蔠蔢蔣蔤蔥蔦蔧蔨蔩蔪蔭蔮蔯蔰蔱蔲蔳蔴蔵蔶蔾蔿蕀蕁蕂蕄蕅蕆蕇蕋蕌蕍蕎蕏蕐蕑蕒蕓蕔蕕�蕗蕘蕚蕛蕜蕝蕟蕠蕡蕢蕣蕥蕦蕧蕩蕪蕫蕬蕭蕮蕯蕰蕱蕳蕵蕶蕷蕸蕼蕽蕿薀薁省盛剩胜圣师失狮施湿诗尸虱十石拾时什食蚀实识史矢使屎驶始式示士世柿事拭誓逝势是嗜噬适仕侍释饰氏市恃室视试收手首守寿授售受瘦兽蔬枢梳殊抒输叔舒淑疏书赎孰熟薯暑曙署蜀黍鼠属术述树束戍竖墅庶数漱�".split(""); +for(j = 0; j != D[202].length; ++j) if(D[202][j].charCodeAt(0) !== 0xFFFD) { e[D[202][j]] = 51712 + j; d[51712 + j] = D[202][j];} +D[203] = "����������������������������������������������������������������薂薃薆薈薉薊薋薌薍薎薐薑薒薓薔薕薖薗薘薙薚薝薞薟薠薡薢薣薥薦薧薩薫薬薭薱薲薳薴薵薶薸薺薻薼薽薾薿藀藂藃藄藅藆藇藈藊藋藌藍藎藑藒�藔藖藗藘藙藚藛藝藞藟藠藡藢藣藥藦藧藨藪藫藬藭藮藯藰藱藲藳藴藵藶藷藸恕刷耍摔衰甩帅栓拴霜双爽谁水睡税吮瞬顺舜说硕朔烁斯撕嘶思私司丝死肆寺嗣四伺似饲巳松耸怂颂送宋讼诵搜艘擞嗽苏酥俗素速粟僳塑溯宿诉肃酸蒜算虽隋随绥髓碎岁穗遂隧祟孙损笋蓑梭唆缩琐索锁所塌他它她塔�".split(""); +for(j = 0; j != D[203].length; ++j) if(D[203][j].charCodeAt(0) !== 0xFFFD) { e[D[203][j]] = 51968 + j; d[51968 + j] = D[203][j];} +D[204] = "����������������������������������������������������������������藹藺藼藽藾蘀蘁蘂蘃蘄蘆蘇蘈蘉蘊蘋蘌蘍蘎蘏蘐蘒蘓蘔蘕蘗蘘蘙蘚蘛蘜蘝蘞蘟蘠蘡蘢蘣蘤蘥蘦蘨蘪蘫蘬蘭蘮蘯蘰蘱蘲蘳蘴蘵蘶蘷蘹蘺蘻蘽蘾蘿虀�虁虂虃虄虅虆虇虈虉虊虋虌虒虓處虖虗虘虙虛虜虝號虠虡虣虤虥虦虧虨虩虪獭挞蹋踏胎苔抬台泰酞太态汰坍摊贪瘫滩坛檀痰潭谭谈坦毯袒碳探叹炭汤塘搪堂棠膛唐糖倘躺淌趟烫掏涛滔绦萄桃逃淘陶讨套特藤腾疼誊梯剔踢锑提题蹄啼体替嚏惕涕剃屉天添填田甜恬舔腆挑条迢眺跳贴铁帖厅听烃�".split(""); +for(j = 0; j != D[204].length; ++j) if(D[204][j].charCodeAt(0) !== 0xFFFD) { e[D[204][j]] = 52224 + j; d[52224 + j] = D[204][j];} +D[205] = "����������������������������������������������������������������虭虯虰虲虳虴虵虶虷虸蚃蚄蚅蚆蚇蚈蚉蚎蚏蚐蚑蚒蚔蚖蚗蚘蚙蚚蚛蚞蚟蚠蚡蚢蚥蚦蚫蚭蚮蚲蚳蚷蚸蚹蚻蚼蚽蚾蚿蛁蛂蛃蛅蛈蛌蛍蛒蛓蛕蛖蛗蛚蛜�蛝蛠蛡蛢蛣蛥蛦蛧蛨蛪蛫蛬蛯蛵蛶蛷蛺蛻蛼蛽蛿蜁蜄蜅蜆蜋蜌蜎蜏蜐蜑蜔蜖汀廷停亭庭挺艇通桐酮瞳同铜彤童桶捅筒统痛偷投头透凸秃突图徒途涂屠土吐兔湍团推颓腿蜕褪退吞屯臀拖托脱鸵陀驮驼椭妥拓唾挖哇蛙洼娃瓦袜歪外豌弯湾玩顽丸烷完碗挽晚皖惋宛婉万腕汪王亡枉网往旺望忘妄威�".split(""); +for(j = 0; j != D[205].length; ++j) if(D[205][j].charCodeAt(0) !== 0xFFFD) { e[D[205][j]] = 52480 + j; d[52480 + j] = D[205][j];} +D[206] = "����������������������������������������������������������������蜙蜛蜝蜟蜠蜤蜦蜧蜨蜪蜫蜬蜭蜯蜰蜲蜳蜵蜶蜸蜹蜺蜼蜽蝀蝁蝂蝃蝄蝅蝆蝊蝋蝍蝏蝐蝑蝒蝔蝕蝖蝘蝚蝛蝜蝝蝞蝟蝡蝢蝦蝧蝨蝩蝪蝫蝬蝭蝯蝱蝲蝳蝵�蝷蝸蝹蝺蝿螀螁螄螆螇螉螊螌螎螏螐螑螒螔螕螖螘螙螚螛螜螝螞螠螡螢螣螤巍微危韦违桅围唯惟为潍维苇萎委伟伪尾纬未蔚味畏胃喂魏位渭谓尉慰卫瘟温蚊文闻纹吻稳紊问嗡翁瓮挝蜗涡窝我斡卧握沃巫呜钨乌污诬屋无芜梧吾吴毋武五捂午舞伍侮坞戊雾晤物勿务悟误昔熙析西硒矽晰嘻吸锡牺�".split(""); +for(j = 0; j != D[206].length; ++j) if(D[206][j].charCodeAt(0) !== 0xFFFD) { e[D[206][j]] = 52736 + j; d[52736 + j] = D[206][j];} +D[207] = "����������������������������������������������������������������螥螦螧螩螪螮螰螱螲螴螶螷螸螹螻螼螾螿蟁蟂蟃蟄蟅蟇蟈蟉蟌蟍蟎蟏蟐蟔蟕蟖蟗蟘蟙蟚蟜蟝蟞蟟蟡蟢蟣蟤蟦蟧蟨蟩蟫蟬蟭蟯蟰蟱蟲蟳蟴蟵蟶蟷蟸�蟺蟻蟼蟽蟿蠀蠁蠂蠄蠅蠆蠇蠈蠉蠋蠌蠍蠎蠏蠐蠑蠒蠔蠗蠘蠙蠚蠜蠝蠞蠟蠠蠣稀息希悉膝夕惜熄烯溪汐犀檄袭席习媳喜铣洗系隙戏细瞎虾匣霞辖暇峡侠狭下厦夏吓掀锨先仙鲜纤咸贤衔舷闲涎弦嫌显险现献县腺馅羡宪陷限线相厢镶香箱襄湘乡翔祥详想响享项巷橡像向象萧硝霄削哮嚣销消宵淆晓�".split(""); +for(j = 0; j != D[207].length; ++j) if(D[207][j].charCodeAt(0) !== 0xFFFD) { e[D[207][j]] = 52992 + j; d[52992 + j] = D[207][j];} +D[208] = "����������������������������������������������������������������蠤蠥蠦蠧蠨蠩蠪蠫蠬蠭蠮蠯蠰蠱蠳蠴蠵蠶蠷蠸蠺蠻蠽蠾蠿衁衂衃衆衇衈衉衊衋衎衏衐衑衒術衕衖衘衚衛衜衝衞衟衠衦衧衪衭衯衱衳衴衵衶衸衹衺�衻衼袀袃袆袇袉袊袌袎袏袐袑袓袔袕袗袘袙袚袛袝袞袟袠袡袣袥袦袧袨袩袪小孝校肖啸笑效楔些歇蝎鞋协挟携邪斜胁谐写械卸蟹懈泄泻谢屑薪芯锌欣辛新忻心信衅星腥猩惺兴刑型形邢行醒幸杏性姓兄凶胸匈汹雄熊休修羞朽嗅锈秀袖绣墟戌需虚嘘须徐许蓄酗叙旭序畜恤絮婿绪续轩喧宣悬旋玄�".split(""); +for(j = 0; j != D[208].length; ++j) if(D[208][j].charCodeAt(0) !== 0xFFFD) { e[D[208][j]] = 53248 + j; d[53248 + j] = D[208][j];} +D[209] = "����������������������������������������������������������������袬袮袯袰袲袳袴袵袶袸袹袺袻袽袾袿裀裃裄裇裈裊裋裌裍裏裐裑裓裖裗裚裛補裝裞裠裡裦裧裩裪裫裬裭裮裯裲裵裶裷裺裻製裿褀褁褃褄褅褆複褈�褉褋褌褍褎褏褑褔褕褖褗褘褜褝褞褟褠褢褣褤褦褧褨褩褬褭褮褯褱褲褳褵褷选癣眩绚靴薛学穴雪血勋熏循旬询寻驯巡殉汛训讯逊迅压押鸦鸭呀丫芽牙蚜崖衙涯雅哑亚讶焉咽阉烟淹盐严研蜒岩延言颜阎炎沿奄掩眼衍演艳堰燕厌砚雁唁彦焰宴谚验殃央鸯秧杨扬佯疡羊洋阳氧仰痒养样漾邀腰妖瑶�".split(""); +for(j = 0; j != D[209].length; ++j) if(D[209][j].charCodeAt(0) !== 0xFFFD) { e[D[209][j]] = 53504 + j; d[53504 + j] = D[209][j];} +D[210] = "����������������������������������������������������������������褸褹褺褻褼褽褾褿襀襂襃襅襆襇襈襉襊襋襌襍襎襏襐襑襒襓襔襕襖襗襘襙襚襛襜襝襠襡襢襣襤襥襧襨襩襪襫襬襭襮襯襰襱襲襳襴襵襶襷襸襹襺襼�襽襾覀覂覄覅覇覈覉覊見覌覍覎規覐覑覒覓覔覕視覗覘覙覚覛覜覝覞覟覠覡摇尧遥窑谣姚咬舀药要耀椰噎耶爷野冶也页掖业叶曳腋夜液一壹医揖铱依伊衣颐夷遗移仪胰疑沂宜姨彝椅蚁倚已乙矣以艺抑易邑屹亿役臆逸肄疫亦裔意毅忆义益溢诣议谊译异翼翌绎茵荫因殷音阴姻吟银淫寅饮尹引隐�".split(""); +for(j = 0; j != D[210].length; ++j) if(D[210][j].charCodeAt(0) !== 0xFFFD) { e[D[210][j]] = 53760 + j; d[53760 + j] = D[210][j];} +D[211] = "����������������������������������������������������������������覢覣覤覥覦覧覨覩親覫覬覭覮覯覰覱覲観覴覵覶覷覸覹覺覻覼覽覾覿觀觃觍觓觔觕觗觘觙觛觝觟觠觡觢觤觧觨觩觪觬觭觮觰觱觲觴觵觶觷觸觹觺�觻觼觽觾觿訁訂訃訄訅訆計訉訊訋訌訍討訏訐訑訒訓訔訕訖託記訙訚訛訜訝印英樱婴鹰应缨莹萤营荧蝇迎赢盈影颖硬映哟拥佣臃痈庸雍踊蛹咏泳涌永恿勇用幽优悠忧尤由邮铀犹油游酉有友右佑釉诱又幼迂淤于盂榆虞愚舆余俞逾鱼愉渝渔隅予娱雨与屿禹宇语羽玉域芋郁吁遇喻峪御愈欲狱育誉�".split(""); +for(j = 0; j != D[211].length; ++j) if(D[211][j].charCodeAt(0) !== 0xFFFD) { e[D[211][j]] = 54016 + j; d[54016 + j] = D[211][j];} +D[212] = "����������������������������������������������������������������訞訟訠訡訢訣訤訥訦訧訨訩訪訫訬設訮訯訰許訲訳訴訵訶訷訸訹診註証訽訿詀詁詂詃詄詅詆詇詉詊詋詌詍詎詏詐詑詒詓詔評詖詗詘詙詚詛詜詝詞�詟詠詡詢詣詤詥試詧詨詩詪詫詬詭詮詯詰話該詳詴詵詶詷詸詺詻詼詽詾詿誀浴寓裕预豫驭鸳渊冤元垣袁原援辕园员圆猿源缘远苑愿怨院曰约越跃钥岳粤月悦阅耘云郧匀陨允运蕴酝晕韵孕匝砸杂栽哉灾宰载再在咱攒暂赞赃脏葬遭糟凿藻枣早澡蚤躁噪造皂灶燥责择则泽贼怎增憎曾赠扎喳渣札轧�".split(""); +for(j = 0; j != D[212].length; ++j) if(D[212][j].charCodeAt(0) !== 0xFFFD) { e[D[212][j]] = 54272 + j; d[54272 + j] = D[212][j];} +D[213] = "����������������������������������������������������������������誁誂誃誄誅誆誇誈誋誌認誎誏誐誑誒誔誕誖誗誘誙誚誛誜誝語誟誠誡誢誣誤誥誦誧誨誩說誫説読誮誯誰誱課誳誴誵誶誷誸誹誺誻誼誽誾調諀諁諂�諃諄諅諆談諈諉諊請諌諍諎諏諐諑諒諓諔諕論諗諘諙諚諛諜諝諞諟諠諡諢諣铡闸眨栅榨咋乍炸诈摘斋宅窄债寨瞻毡詹粘沾盏斩辗崭展蘸栈占战站湛绽樟章彰漳张掌涨杖丈帐账仗胀瘴障招昭找沼赵照罩兆肇召遮折哲蛰辙者锗蔗这浙珍斟真甄砧臻贞针侦枕疹诊震振镇阵蒸挣睁征狰争怔整拯正政�".split(""); +for(j = 0; j != D[213].length; ++j) if(D[213][j].charCodeAt(0) !== 0xFFFD) { e[D[213][j]] = 54528 + j; d[54528 + j] = D[213][j];} +D[214] = "����������������������������������������������������������������諤諥諦諧諨諩諪諫諬諭諮諯諰諱諲諳諴諵諶諷諸諹諺諻諼諽諾諿謀謁謂謃謄謅謆謈謉謊謋謌謍謎謏謐謑謒謓謔謕謖謗謘謙謚講謜謝謞謟謠謡謢謣�謤謥謧謨謩謪謫謬謭謮謯謰謱謲謳謴謵謶謷謸謹謺謻謼謽謾謿譀譁譂譃譄譅帧症郑证芝枝支吱蜘知肢脂汁之织职直植殖执值侄址指止趾只旨纸志挚掷至致置帜峙制智秩稚质炙痔滞治窒中盅忠钟衷终种肿重仲众舟周州洲诌粥轴肘帚咒皱宙昼骤珠株蛛朱猪诸诛逐竹烛煮拄瞩嘱主著柱助蛀贮铸筑�".split(""); +for(j = 0; j != D[214].length; ++j) if(D[214][j].charCodeAt(0) !== 0xFFFD) { e[D[214][j]] = 54784 + j; d[54784 + j] = D[214][j];} +D[215] = "����������������������������������������������������������������譆譇譈證譊譋譌譍譎譏譐譑譒譓譔譕譖譗識譙譚譛譜譝譞譟譠譡譢譣譤譥譧譨譩譪譫譭譮譯議譱譲譳譴譵譶護譸譹譺譻譼譽譾譿讀讁讂讃讄讅讆�讇讈讉變讋讌讍讎讏讐讑讒讓讔讕讖讗讘讙讚讛讜讝讞讟讬讱讻诇诐诪谉谞住注祝驻抓爪拽专砖转撰赚篆桩庄装妆撞壮状椎锥追赘坠缀谆准捉拙卓桌琢茁酌啄着灼浊兹咨资姿滋淄孜紫仔籽滓子自渍字鬃棕踪宗综总纵邹走奏揍租足卒族祖诅阻组钻纂嘴醉最罪尊遵昨左佐柞做作坐座�".split(""); +for(j = 0; j != D[215].length; ++j) if(D[215][j].charCodeAt(0) !== 0xFFFD) { e[D[215][j]] = 55040 + j; d[55040 + j] = D[215][j];} +D[216] = "����������������������������������������������������������������谸谹谺谻谼谽谾谿豀豂豃豄豅豈豊豋豍豎豏豐豑豒豓豔豖豗豘豙豛豜豝豞豟豠豣豤豥豦豧豨豩豬豭豮豯豰豱豲豴豵豶豷豻豼豽豾豿貀貁貃貄貆貇�貈貋貍貎貏貐貑貒貓貕貖貗貙貚貛貜貝貞貟負財貢貣貤貥貦貧貨販貪貫責貭亍丌兀丐廿卅丕亘丞鬲孬噩丨禺丿匕乇夭爻卮氐囟胤馗毓睾鼗丶亟鼐乜乩亓芈孛啬嘏仄厍厝厣厥厮靥赝匚叵匦匮匾赜卦卣刂刈刎刭刳刿剀剌剞剡剜蒯剽劂劁劐劓冂罔亻仃仉仂仨仡仫仞伛仳伢佤仵伥伧伉伫佞佧攸佚佝�".split(""); +for(j = 0; j != D[216].length; ++j) if(D[216][j].charCodeAt(0) !== 0xFFFD) { e[D[216][j]] = 55296 + j; d[55296 + j] = D[216][j];} +D[217] = "����������������������������������������������������������������貮貯貰貱貲貳貴貵貶買貸貹貺費貼貽貾貿賀賁賂賃賄賅賆資賈賉賊賋賌賍賎賏賐賑賒賓賔賕賖賗賘賙賚賛賜賝賞賟賠賡賢賣賤賥賦賧賨賩質賫賬�賭賮賯賰賱賲賳賴賵賶賷賸賹賺賻購賽賾賿贀贁贂贃贄贅贆贇贈贉贊贋贌贍佟佗伲伽佶佴侑侉侃侏佾佻侪佼侬侔俦俨俪俅俚俣俜俑俟俸倩偌俳倬倏倮倭俾倜倌倥倨偾偃偕偈偎偬偻傥傧傩傺僖儆僭僬僦僮儇儋仝氽佘佥俎龠汆籴兮巽黉馘冁夔勹匍訇匐凫夙兕亠兖亳衮袤亵脔裒禀嬴蠃羸冫冱冽冼�".split(""); +for(j = 0; j != D[217].length; ++j) if(D[217][j].charCodeAt(0) !== 0xFFFD) { e[D[217][j]] = 55552 + j; d[55552 + j] = D[217][j];} +D[218] = "����������������������������������������������������������������贎贏贐贑贒贓贔贕贖贗贘贙贚贛贜贠赑赒赗赟赥赨赩赪赬赮赯赱赲赸赹赺赻赼赽赾赿趀趂趃趆趇趈趉趌趍趎趏趐趒趓趕趖趗趘趙趚趛趜趝趞趠趡�趢趤趥趦趧趨趩趪趫趬趭趮趯趰趲趶趷趹趻趽跀跁跂跅跇跈跉跊跍跐跒跓跔凇冖冢冥讠讦讧讪讴讵讷诂诃诋诏诎诒诓诔诖诘诙诜诟诠诤诨诩诮诰诳诶诹诼诿谀谂谄谇谌谏谑谒谔谕谖谙谛谘谝谟谠谡谥谧谪谫谮谯谲谳谵谶卩卺阝阢阡阱阪阽阼陂陉陔陟陧陬陲陴隈隍隗隰邗邛邝邙邬邡邴邳邶邺�".split(""); +for(j = 0; j != D[218].length; ++j) if(D[218][j].charCodeAt(0) !== 0xFFFD) { e[D[218][j]] = 55808 + j; d[55808 + j] = D[218][j];} +D[219] = "����������������������������������������������������������������跕跘跙跜跠跡跢跥跦跧跩跭跮跰跱跲跴跶跼跾跿踀踁踂踃踄踆踇踈踋踍踎踐踑踒踓踕踖踗踘踙踚踛踜踠踡踤踥踦踧踨踫踭踰踲踳踴踶踷踸踻踼踾�踿蹃蹅蹆蹌蹍蹎蹏蹐蹓蹔蹕蹖蹗蹘蹚蹛蹜蹝蹞蹟蹠蹡蹢蹣蹤蹥蹧蹨蹪蹫蹮蹱邸邰郏郅邾郐郄郇郓郦郢郜郗郛郫郯郾鄄鄢鄞鄣鄱鄯鄹酃酆刍奂劢劬劭劾哿勐勖勰叟燮矍廴凵凼鬯厶弁畚巯坌垩垡塾墼壅壑圩圬圪圳圹圮圯坜圻坂坩垅坫垆坼坻坨坭坶坳垭垤垌垲埏垧垴垓垠埕埘埚埙埒垸埴埯埸埤埝�".split(""); +for(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];} +D[220] = "����������������������������������������������������������������蹳蹵蹷蹸蹹蹺蹻蹽蹾躀躂躃躄躆躈躉躊躋躌躍躎躑躒躓躕躖躗躘躙躚躛躝躟躠躡躢躣躤躥躦躧躨躩躪躭躮躰躱躳躴躵躶躷躸躹躻躼躽躾躿軀軁軂�軃軄軅軆軇軈軉車軋軌軍軏軐軑軒軓軔軕軖軗軘軙軚軛軜軝軞軟軠軡転軣軤堋堍埽埭堀堞堙塄堠塥塬墁墉墚墀馨鼙懿艹艽艿芏芊芨芄芎芑芗芙芫芸芾芰苈苊苣芘芷芮苋苌苁芩芴芡芪芟苄苎芤苡茉苷苤茏茇苜苴苒苘茌苻苓茑茚茆茔茕苠苕茜荑荛荜茈莒茼茴茱莛荞茯荏荇荃荟荀茗荠茭茺茳荦荥�".split(""); +for(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];} +D[221] = "����������������������������������������������������������������軥軦軧軨軩軪軫軬軭軮軯軰軱軲軳軴軵軶軷軸軹軺軻軼軽軾軿輀輁輂較輄輅輆輇輈載輊輋輌輍輎輏輐輑輒輓輔輕輖輗輘輙輚輛輜輝輞輟輠輡輢輣�輤輥輦輧輨輩輪輫輬輭輮輯輰輱輲輳輴輵輶輷輸輹輺輻輼輽輾輿轀轁轂轃轄荨茛荩荬荪荭荮莰荸莳莴莠莪莓莜莅荼莶莩荽莸荻莘莞莨莺莼菁萁菥菘堇萘萋菝菽菖萜萸萑萆菔菟萏萃菸菹菪菅菀萦菰菡葜葑葚葙葳蒇蒈葺蒉葸萼葆葩葶蒌蒎萱葭蓁蓍蓐蓦蒽蓓蓊蒿蒺蓠蒡蒹蒴蒗蓥蓣蔌甍蔸蓰蔹蔟蔺�".split(""); +for(j = 0; j != D[221].length; ++j) if(D[221][j].charCodeAt(0) !== 0xFFFD) { e[D[221][j]] = 56576 + j; d[56576 + j] = D[221][j];} +D[222] = "����������������������������������������������������������������轅轆轇轈轉轊轋轌轍轎轏轐轑轒轓轔轕轖轗轘轙轚轛轜轝轞轟轠轡轢轣轤轥轪辀辌辒辝辠辡辢辤辥辦辧辪辬辭辮辯農辳辴辵辷辸辺辻込辿迀迃迆�迉迊迋迌迍迏迒迖迗迚迠迡迣迧迬迯迱迲迴迵迶迺迻迼迾迿逇逈逌逎逓逕逘蕖蔻蓿蓼蕙蕈蕨蕤蕞蕺瞢蕃蕲蕻薤薨薇薏蕹薮薜薅薹薷薰藓藁藜藿蘧蘅蘩蘖蘼廾弈夼奁耷奕奚奘匏尢尥尬尴扌扪抟抻拊拚拗拮挢拶挹捋捃掭揶捱捺掎掴捭掬掊捩掮掼揲揸揠揿揄揞揎摒揆掾摅摁搋搛搠搌搦搡摞撄摭撖�".split(""); +for(j = 0; j != D[222].length; ++j) if(D[222][j].charCodeAt(0) !== 0xFFFD) { e[D[222][j]] = 56832 + j; d[56832 + j] = D[222][j];} +D[223] = "����������������������������������������������������������������這逜連逤逥逧逨逩逪逫逬逰週進逳逴逷逹逺逽逿遀遃遅遆遈遉遊運遌過達違遖遙遚遜遝遞遟遠遡遤遦遧適遪遫遬遯遰遱遲遳遶遷選遹遺遻遼遾邁�還邅邆邇邉邊邌邍邎邏邐邒邔邖邘邚邜邞邟邠邤邥邧邨邩邫邭邲邷邼邽邿郀摺撷撸撙撺擀擐擗擤擢攉攥攮弋忒甙弑卟叱叽叩叨叻吒吖吆呋呒呓呔呖呃吡呗呙吣吲咂咔呷呱呤咚咛咄呶呦咝哐咭哂咴哒咧咦哓哔呲咣哕咻咿哌哙哚哜咩咪咤哝哏哞唛哧唠哽唔哳唢唣唏唑唧唪啧喏喵啉啭啁啕唿啐唼�".split(""); +for(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];} +D[224] = "����������������������������������������������������������������郂郃郆郈郉郋郌郍郒郔郕郖郘郙郚郞郟郠郣郤郥郩郪郬郮郰郱郲郳郵郶郷郹郺郻郼郿鄀鄁鄃鄅鄆鄇鄈鄉鄊鄋鄌鄍鄎鄏鄐鄑鄒鄓鄔鄕鄖鄗鄘鄚鄛鄜�鄝鄟鄠鄡鄤鄥鄦鄧鄨鄩鄪鄫鄬鄭鄮鄰鄲鄳鄴鄵鄶鄷鄸鄺鄻鄼鄽鄾鄿酀酁酂酄唷啖啵啶啷唳唰啜喋嗒喃喱喹喈喁喟啾嗖喑啻嗟喽喾喔喙嗪嗷嗉嘟嗑嗫嗬嗔嗦嗝嗄嗯嗥嗲嗳嗌嗍嗨嗵嗤辔嘞嘈嘌嘁嘤嘣嗾嘀嘧嘭噘嘹噗嘬噍噢噙噜噌噔嚆噤噱噫噻噼嚅嚓嚯囔囗囝囡囵囫囹囿圄圊圉圜帏帙帔帑帱帻帼�".split(""); +for(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];} +D[225] = "����������������������������������������������������������������酅酇酈酑酓酔酕酖酘酙酛酜酟酠酦酧酨酫酭酳酺酻酼醀醁醂醃醄醆醈醊醎醏醓醔醕醖醗醘醙醜醝醞醟醠醡醤醥醦醧醨醩醫醬醰醱醲醳醶醷醸醹醻�醼醽醾醿釀釁釂釃釄釅釆釈釋釐釒釓釔釕釖釗釘釙釚釛針釞釟釠釡釢釣釤釥帷幄幔幛幞幡岌屺岍岐岖岈岘岙岑岚岜岵岢岽岬岫岱岣峁岷峄峒峤峋峥崂崃崧崦崮崤崞崆崛嵘崾崴崽嵬嵛嵯嵝嵫嵋嵊嵩嵴嶂嶙嶝豳嶷巅彳彷徂徇徉後徕徙徜徨徭徵徼衢彡犭犰犴犷犸狃狁狎狍狒狨狯狩狲狴狷猁狳猃狺�".split(""); +for(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];} +D[226] = "����������������������������������������������������������������釦釧釨釩釪釫釬釭釮釯釰釱釲釳釴釵釶釷釸釹釺釻釼釽釾釿鈀鈁鈂鈃鈄鈅鈆鈇鈈鈉鈊鈋鈌鈍鈎鈏鈐鈑鈒鈓鈔鈕鈖鈗鈘鈙鈚鈛鈜鈝鈞鈟鈠鈡鈢鈣鈤�鈥鈦鈧鈨鈩鈪鈫鈬鈭鈮鈯鈰鈱鈲鈳鈴鈵鈶鈷鈸鈹鈺鈻鈼鈽鈾鈿鉀鉁鉂鉃鉄鉅狻猗猓猡猊猞猝猕猢猹猥猬猸猱獐獍獗獠獬獯獾舛夥飧夤夂饣饧饨饩饪饫饬饴饷饽馀馄馇馊馍馐馑馓馔馕庀庑庋庖庥庠庹庵庾庳赓廒廑廛廨廪膺忄忉忖忏怃忮怄忡忤忾怅怆忪忭忸怙怵怦怛怏怍怩怫怊怿怡恸恹恻恺恂�".split(""); +for(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];} +D[227] = "����������������������������������������������������������������鉆鉇鉈鉉鉊鉋鉌鉍鉎鉏鉐鉑鉒鉓鉔鉕鉖鉗鉘鉙鉚鉛鉜鉝鉞鉟鉠鉡鉢鉣鉤鉥鉦鉧鉨鉩鉪鉫鉬鉭鉮鉯鉰鉱鉲鉳鉵鉶鉷鉸鉹鉺鉻鉼鉽鉾鉿銀銁銂銃銄銅�銆銇銈銉銊銋銌銍銏銐銑銒銓銔銕銖銗銘銙銚銛銜銝銞銟銠銡銢銣銤銥銦銧恪恽悖悚悭悝悃悒悌悛惬悻悱惝惘惆惚悴愠愦愕愣惴愀愎愫慊慵憬憔憧憷懔懵忝隳闩闫闱闳闵闶闼闾阃阄阆阈阊阋阌阍阏阒阕阖阗阙阚丬爿戕氵汔汜汊沣沅沐沔沌汨汩汴汶沆沩泐泔沭泷泸泱泗沲泠泖泺泫泮沱泓泯泾�".split(""); +for(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];} +D[228] = "����������������������������������������������������������������銨銩銪銫銬銭銯銰銱銲銳銴銵銶銷銸銹銺銻銼銽銾銿鋀鋁鋂鋃鋄鋅鋆鋇鋉鋊鋋鋌鋍鋎鋏鋐鋑鋒鋓鋔鋕鋖鋗鋘鋙鋚鋛鋜鋝鋞鋟鋠鋡鋢鋣鋤鋥鋦鋧鋨�鋩鋪鋫鋬鋭鋮鋯鋰鋱鋲鋳鋴鋵鋶鋷鋸鋹鋺鋻鋼鋽鋾鋿錀錁錂錃錄錅錆錇錈錉洹洧洌浃浈洇洄洙洎洫浍洮洵洚浏浒浔洳涑浯涞涠浞涓涔浜浠浼浣渚淇淅淞渎涿淠渑淦淝淙渖涫渌涮渫湮湎湫溲湟溆湓湔渲渥湄滟溱溘滠漭滢溥溧溽溻溷滗溴滏溏滂溟潢潆潇漤漕滹漯漶潋潴漪漉漩澉澍澌潸潲潼潺濑�".split(""); +for(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];} +D[229] = "����������������������������������������������������������������錊錋錌錍錎錏錐錑錒錓錔錕錖錗錘錙錚錛錜錝錞錟錠錡錢錣錤錥錦錧錨錩錪錫錬錭錮錯錰錱録錳錴錵錶錷錸錹錺錻錼錽錿鍀鍁鍂鍃鍄鍅鍆鍇鍈鍉�鍊鍋鍌鍍鍎鍏鍐鍑鍒鍓鍔鍕鍖鍗鍘鍙鍚鍛鍜鍝鍞鍟鍠鍡鍢鍣鍤鍥鍦鍧鍨鍩鍫濉澧澹澶濂濡濮濞濠濯瀚瀣瀛瀹瀵灏灞宀宄宕宓宥宸甯骞搴寤寮褰寰蹇謇辶迓迕迥迮迤迩迦迳迨逅逄逋逦逑逍逖逡逵逶逭逯遄遑遒遐遨遘遢遛暹遴遽邂邈邃邋彐彗彖彘尻咫屐屙孱屣屦羼弪弩弭艴弼鬻屮妁妃妍妩妪妣�".split(""); +for(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];} +D[230] = "����������������������������������������������������������������鍬鍭鍮鍯鍰鍱鍲鍳鍴鍵鍶鍷鍸鍹鍺鍻鍼鍽鍾鍿鎀鎁鎂鎃鎄鎅鎆鎇鎈鎉鎊鎋鎌鎍鎎鎐鎑鎒鎓鎔鎕鎖鎗鎘鎙鎚鎛鎜鎝鎞鎟鎠鎡鎢鎣鎤鎥鎦鎧鎨鎩鎪鎫�鎬鎭鎮鎯鎰鎱鎲鎳鎴鎵鎶鎷鎸鎹鎺鎻鎼鎽鎾鎿鏀鏁鏂鏃鏄鏅鏆鏇鏈鏉鏋鏌鏍妗姊妫妞妤姒妲妯姗妾娅娆姝娈姣姘姹娌娉娲娴娑娣娓婀婧婊婕娼婢婵胬媪媛婷婺媾嫫媲嫒嫔媸嫠嫣嫱嫖嫦嫘嫜嬉嬗嬖嬲嬷孀尕尜孚孥孳孑孓孢驵驷驸驺驿驽骀骁骅骈骊骐骒骓骖骘骛骜骝骟骠骢骣骥骧纟纡纣纥纨纩�".split(""); +for(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];} +D[231] = "����������������������������������������������������������������鏎鏏鏐鏑鏒鏓鏔鏕鏗鏘鏙鏚鏛鏜鏝鏞鏟鏠鏡鏢鏣鏤鏥鏦鏧鏨鏩鏪鏫鏬鏭鏮鏯鏰鏱鏲鏳鏴鏵鏶鏷鏸鏹鏺鏻鏼鏽鏾鏿鐀鐁鐂鐃鐄鐅鐆鐇鐈鐉鐊鐋鐌鐍�鐎鐏鐐鐑鐒鐓鐔鐕鐖鐗鐘鐙鐚鐛鐜鐝鐞鐟鐠鐡鐢鐣鐤鐥鐦鐧鐨鐩鐪鐫鐬鐭鐮纭纰纾绀绁绂绉绋绌绐绔绗绛绠绡绨绫绮绯绱绲缍绶绺绻绾缁缂缃缇缈缋缌缏缑缒缗缙缜缛缟缡缢缣缤缥缦缧缪缫缬缭缯缰缱缲缳缵幺畿巛甾邕玎玑玮玢玟珏珂珑玷玳珀珉珈珥珙顼琊珩珧珞玺珲琏琪瑛琦琥琨琰琮琬�".split(""); +for(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];} +D[232] = "����������������������������������������������������������������鐯鐰鐱鐲鐳鐴鐵鐶鐷鐸鐹鐺鐻鐼鐽鐿鑀鑁鑂鑃鑄鑅鑆鑇鑈鑉鑊鑋鑌鑍鑎鑏鑐鑑鑒鑓鑔鑕鑖鑗鑘鑙鑚鑛鑜鑝鑞鑟鑠鑡鑢鑣鑤鑥鑦鑧鑨鑩鑪鑬鑭鑮鑯�鑰鑱鑲鑳鑴鑵鑶鑷鑸鑹鑺鑻鑼鑽鑾鑿钀钁钂钃钄钑钖钘铇铏铓铔铚铦铻锜锠琛琚瑁瑜瑗瑕瑙瑷瑭瑾璜璎璀璁璇璋璞璨璩璐璧瓒璺韪韫韬杌杓杞杈杩枥枇杪杳枘枧杵枨枞枭枋杷杼柰栉柘栊柩枰栌柙枵柚枳柝栀柃枸柢栎柁柽栲栳桠桡桎桢桄桤梃栝桕桦桁桧桀栾桊桉栩梵梏桴桷梓桫棂楮棼椟椠棹�".split(""); +for(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];} +D[233] = "����������������������������������������������������������������锧锳锽镃镈镋镕镚镠镮镴镵長镸镹镺镻镼镽镾門閁閂閃閄閅閆閇閈閉閊開閌閍閎閏閐閑閒間閔閕閖閗閘閙閚閛閜閝閞閟閠閡関閣閤閥閦閧閨閩閪�閫閬閭閮閯閰閱閲閳閴閵閶閷閸閹閺閻閼閽閾閿闀闁闂闃闄闅闆闇闈闉闊闋椤棰椋椁楗棣椐楱椹楠楂楝榄楫榀榘楸椴槌榇榈槎榉楦楣楹榛榧榻榫榭槔榱槁槊槟榕槠榍槿樯槭樗樘橥槲橄樾檠橐橛樵檎橹樽樨橘橼檑檐檩檗檫猷獒殁殂殇殄殒殓殍殚殛殡殪轫轭轱轲轳轵轶轸轷轹轺轼轾辁辂辄辇辋�".split(""); +for(j = 0; j != D[233].length; ++j) if(D[233][j].charCodeAt(0) !== 0xFFFD) { e[D[233][j]] = 59648 + j; d[59648 + j] = D[233][j];} +D[234] = "����������������������������������������������������������������闌闍闎闏闐闑闒闓闔闕闖闗闘闙闚闛關闝闞闟闠闡闢闣闤闥闦闧闬闿阇阓阘阛阞阠阣阤阥阦阧阨阩阫阬阭阯阰阷阸阹阺阾陁陃陊陎陏陑陒陓陖陗�陘陙陚陜陝陞陠陣陥陦陫陭陮陯陰陱陳陸陹険陻陼陽陾陿隀隁隂隃隄隇隉隊辍辎辏辘辚軎戋戗戛戟戢戡戥戤戬臧瓯瓴瓿甏甑甓攴旮旯旰昊昙杲昃昕昀炅曷昝昴昱昶昵耆晟晔晁晏晖晡晗晷暄暌暧暝暾曛曜曦曩贲贳贶贻贽赀赅赆赈赉赇赍赕赙觇觊觋觌觎觏觐觑牮犟牝牦牯牾牿犄犋犍犏犒挈挲掰�".split(""); +for(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];} +D[235] = "����������������������������������������������������������������隌階隑隒隓隕隖隚際隝隞隟隠隡隢隣隤隥隦隨隩險隫隬隭隮隯隱隲隴隵隷隸隺隻隿雂雃雈雊雋雐雑雓雔雖雗雘雙雚雛雜雝雞雟雡離難雤雥雦雧雫�雬雭雮雰雱雲雴雵雸雺電雼雽雿霂霃霅霊霋霌霐霑霒霔霕霗霘霙霚霛霝霟霠搿擘耄毪毳毽毵毹氅氇氆氍氕氘氙氚氡氩氤氪氲攵敕敫牍牒牖爰虢刖肟肜肓肼朊肽肱肫肭肴肷胧胨胩胪胛胂胄胙胍胗朐胝胫胱胴胭脍脎胲胼朕脒豚脶脞脬脘脲腈腌腓腴腙腚腱腠腩腼腽腭腧塍媵膈膂膑滕膣膪臌朦臊膻�".split(""); +for(j = 0; j != D[235].length; ++j) if(D[235][j].charCodeAt(0) !== 0xFFFD) { e[D[235][j]] = 60160 + j; d[60160 + j] = D[235][j];} +D[236] = "����������������������������������������������������������������霡霢霣霤霥霦霧霨霩霫霬霮霯霱霳霴霵霶霷霺霻霼霽霿靀靁靂靃靄靅靆靇靈靉靊靋靌靍靎靏靐靑靔靕靗靘靚靜靝靟靣靤靦靧靨靪靫靬靭靮靯靰靱�靲靵靷靸靹靺靻靽靾靿鞀鞁鞂鞃鞄鞆鞇鞈鞉鞊鞌鞎鞏鞐鞓鞕鞖鞗鞙鞚鞛鞜鞝臁膦欤欷欹歃歆歙飑飒飓飕飙飚殳彀毂觳斐齑斓於旆旄旃旌旎旒旖炀炜炖炝炻烀炷炫炱烨烊焐焓焖焯焱煳煜煨煅煲煊煸煺熘熳熵熨熠燠燔燧燹爝爨灬焘煦熹戾戽扃扈扉礻祀祆祉祛祜祓祚祢祗祠祯祧祺禅禊禚禧禳忑忐�".split(""); +for(j = 0; j != D[236].length; ++j) if(D[236][j].charCodeAt(0) !== 0xFFFD) { e[D[236][j]] = 60416 + j; d[60416 + j] = D[236][j];} +D[237] = "����������������������������������������������������������������鞞鞟鞡鞢鞤鞥鞦鞧鞨鞩鞪鞬鞮鞰鞱鞳鞵鞶鞷鞸鞹鞺鞻鞼鞽鞾鞿韀韁韂韃韄韅韆韇韈韉韊韋韌韍韎韏韐韑韒韓韔韕韖韗韘韙韚韛韜韝韞韟韠韡韢韣�韤韥韨韮韯韰韱韲韴韷韸韹韺韻韼韽韾響頀頁頂頃頄項順頇須頉頊頋頌頍頎怼恝恚恧恁恙恣悫愆愍慝憩憝懋懑戆肀聿沓泶淼矶矸砀砉砗砘砑斫砭砜砝砹砺砻砟砼砥砬砣砩硎硭硖硗砦硐硇硌硪碛碓碚碇碜碡碣碲碹碥磔磙磉磬磲礅磴礓礤礞礴龛黹黻黼盱眄眍盹眇眈眚眢眙眭眦眵眸睐睑睇睃睚睨�".split(""); +for(j = 0; j != D[237].length; ++j) if(D[237][j].charCodeAt(0) !== 0xFFFD) { e[D[237][j]] = 60672 + j; d[60672 + j] = D[237][j];} +D[238] = "����������������������������������������������������������������頏預頑頒頓頔頕頖頗領頙頚頛頜頝頞頟頠頡頢頣頤頥頦頧頨頩頪頫頬頭頮頯頰頱頲頳頴頵頶頷頸頹頺頻頼頽頾頿顀顁顂顃顄顅顆顇顈顉顊顋題額�顎顏顐顑顒顓顔顕顖顗願顙顚顛顜顝類顟顠顡顢顣顤顥顦顧顨顩顪顫顬顭顮睢睥睿瞍睽瞀瞌瞑瞟瞠瞰瞵瞽町畀畎畋畈畛畲畹疃罘罡罟詈罨罴罱罹羁罾盍盥蠲钅钆钇钋钊钌钍钏钐钔钗钕钚钛钜钣钤钫钪钭钬钯钰钲钴钶钷钸钹钺钼钽钿铄铈铉铊铋铌铍铎铐铑铒铕铖铗铙铘铛铞铟铠铢铤铥铧铨铪�".split(""); +for(j = 0; j != D[238].length; ++j) if(D[238][j].charCodeAt(0) !== 0xFFFD) { e[D[238][j]] = 60928 + j; d[60928 + j] = D[238][j];} +D[239] = "����������������������������������������������������������������顯顰顱顲顳顴颋颎颒颕颙颣風颩颪颫颬颭颮颯颰颱颲颳颴颵颶颷颸颹颺颻颼颽颾颿飀飁飂飃飄飅飆飇飈飉飊飋飌飍飏飐飔飖飗飛飜飝飠飡飢飣飤�飥飦飩飪飫飬飭飮飯飰飱飲飳飴飵飶飷飸飹飺飻飼飽飾飿餀餁餂餃餄餅餆餇铩铫铮铯铳铴铵铷铹铼铽铿锃锂锆锇锉锊锍锎锏锒锓锔锕锖锘锛锝锞锟锢锪锫锩锬锱锲锴锶锷锸锼锾锿镂锵镄镅镆镉镌镎镏镒镓镔镖镗镘镙镛镞镟镝镡镢镤镥镦镧镨镩镪镫镬镯镱镲镳锺矧矬雉秕秭秣秫稆嵇稃稂稞稔�".split(""); +for(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];} +D[240] = "����������������������������������������������������������������餈餉養餋餌餎餏餑餒餓餔餕餖餗餘餙餚餛餜餝餞餟餠餡餢餣餤餥餦餧館餩餪餫餬餭餯餰餱餲餳餴餵餶餷餸餹餺餻餼餽餾餿饀饁饂饃饄饅饆饇饈饉�饊饋饌饍饎饏饐饑饒饓饖饗饘饙饚饛饜饝饞饟饠饡饢饤饦饳饸饹饻饾馂馃馉稹稷穑黏馥穰皈皎皓皙皤瓞瓠甬鸠鸢鸨鸩鸪鸫鸬鸲鸱鸶鸸鸷鸹鸺鸾鹁鹂鹄鹆鹇鹈鹉鹋鹌鹎鹑鹕鹗鹚鹛鹜鹞鹣鹦鹧鹨鹩鹪鹫鹬鹱鹭鹳疒疔疖疠疝疬疣疳疴疸痄疱疰痃痂痖痍痣痨痦痤痫痧瘃痱痼痿瘐瘀瘅瘌瘗瘊瘥瘘瘕瘙�".split(""); +for(j = 0; j != D[240].length; ++j) if(D[240][j].charCodeAt(0) !== 0xFFFD) { e[D[240][j]] = 61440 + j; d[61440 + j] = D[240][j];} +D[241] = "����������������������������������������������������������������馌馎馚馛馜馝馞馟馠馡馢馣馤馦馧馩馪馫馬馭馮馯馰馱馲馳馴馵馶馷馸馹馺馻馼馽馾馿駀駁駂駃駄駅駆駇駈駉駊駋駌駍駎駏駐駑駒駓駔駕駖駗駘�駙駚駛駜駝駞駟駠駡駢駣駤駥駦駧駨駩駪駫駬駭駮駯駰駱駲駳駴駵駶駷駸駹瘛瘼瘢瘠癀瘭瘰瘿瘵癃瘾瘳癍癞癔癜癖癫癯翊竦穸穹窀窆窈窕窦窠窬窨窭窳衤衩衲衽衿袂袢裆袷袼裉裢裎裣裥裱褚裼裨裾裰褡褙褓褛褊褴褫褶襁襦襻疋胥皲皴矜耒耔耖耜耠耢耥耦耧耩耨耱耋耵聃聆聍聒聩聱覃顸颀颃�".split(""); +for(j = 0; j != D[241].length; ++j) if(D[241][j].charCodeAt(0) !== 0xFFFD) { e[D[241][j]] = 61696 + j; d[61696 + j] = D[241][j];} +D[242] = "����������������������������������������������������������������駺駻駼駽駾駿騀騁騂騃騄騅騆騇騈騉騊騋騌騍騎騏騐騑騒験騔騕騖騗騘騙騚騛騜騝騞騟騠騡騢騣騤騥騦騧騨騩騪騫騬騭騮騯騰騱騲騳騴騵騶騷騸�騹騺騻騼騽騾騿驀驁驂驃驄驅驆驇驈驉驊驋驌驍驎驏驐驑驒驓驔驕驖驗驘驙颉颌颍颏颔颚颛颞颟颡颢颥颦虍虔虬虮虿虺虼虻蚨蚍蚋蚬蚝蚧蚣蚪蚓蚩蚶蛄蚵蛎蚰蚺蚱蚯蛉蛏蚴蛩蛱蛲蛭蛳蛐蜓蛞蛴蛟蛘蛑蜃蜇蛸蜈蜊蜍蜉蜣蜻蜞蜥蜮蜚蜾蝈蜴蜱蜩蜷蜿螂蜢蝽蝾蝻蝠蝰蝌蝮螋蝓蝣蝼蝤蝙蝥螓螯螨蟒�".split(""); +for(j = 0; j != D[242].length; ++j) if(D[242][j].charCodeAt(0) !== 0xFFFD) { e[D[242][j]] = 61952 + j; d[61952 + j] = D[242][j];} +D[243] = "����������������������������������������������������������������驚驛驜驝驞驟驠驡驢驣驤驥驦驧驨驩驪驫驲骃骉骍骎骔骕骙骦骩骪骫骬骭骮骯骲骳骴骵骹骻骽骾骿髃髄髆髇髈髉髊髍髎髏髐髒體髕髖髗髙髚髛髜�髝髞髠髢髣髤髥髧髨髩髪髬髮髰髱髲髳髴髵髶髷髸髺髼髽髾髿鬀鬁鬂鬄鬅鬆蟆螈螅螭螗螃螫蟥螬螵螳蟋蟓螽蟑蟀蟊蟛蟪蟠蟮蠖蠓蟾蠊蠛蠡蠹蠼缶罂罄罅舐竺竽笈笃笄笕笊笫笏筇笸笪笙笮笱笠笥笤笳笾笞筘筚筅筵筌筝筠筮筻筢筲筱箐箦箧箸箬箝箨箅箪箜箢箫箴篑篁篌篝篚篥篦篪簌篾篼簏簖簋�".split(""); +for(j = 0; j != D[243].length; ++j) if(D[243][j].charCodeAt(0) !== 0xFFFD) { e[D[243][j]] = 62208 + j; d[62208 + j] = D[243][j];} +D[244] = "����������������������������������������������������������������鬇鬉鬊鬋鬌鬍鬎鬐鬑鬒鬔鬕鬖鬗鬘鬙鬚鬛鬜鬝鬞鬠鬡鬢鬤鬥鬦鬧鬨鬩鬪鬫鬬鬭鬮鬰鬱鬳鬴鬵鬶鬷鬸鬹鬺鬽鬾鬿魀魆魊魋魌魎魐魒魓魕魖魗魘魙魚�魛魜魝魞魟魠魡魢魣魤魥魦魧魨魩魪魫魬魭魮魯魰魱魲魳魴魵魶魷魸魹魺魻簟簪簦簸籁籀臾舁舂舄臬衄舡舢舣舭舯舨舫舸舻舳舴舾艄艉艋艏艚艟艨衾袅袈裘裟襞羝羟羧羯羰羲籼敉粑粝粜粞粢粲粼粽糁糇糌糍糈糅糗糨艮暨羿翎翕翥翡翦翩翮翳糸絷綦綮繇纛麸麴赳趄趔趑趱赧赭豇豉酊酐酎酏酤�".split(""); +for(j = 0; j != D[244].length; ++j) if(D[244][j].charCodeAt(0) !== 0xFFFD) { e[D[244][j]] = 62464 + j; d[62464 + j] = D[244][j];} +D[245] = "����������������������������������������������������������������魼魽魾魿鮀鮁鮂鮃鮄鮅鮆鮇鮈鮉鮊鮋鮌鮍鮎鮏鮐鮑鮒鮓鮔鮕鮖鮗鮘鮙鮚鮛鮜鮝鮞鮟鮠鮡鮢鮣鮤鮥鮦鮧鮨鮩鮪鮫鮬鮭鮮鮯鮰鮱鮲鮳鮴鮵鮶鮷鮸鮹鮺�鮻鮼鮽鮾鮿鯀鯁鯂鯃鯄鯅鯆鯇鯈鯉鯊鯋鯌鯍鯎鯏鯐鯑鯒鯓鯔鯕鯖鯗鯘鯙鯚鯛酢酡酰酩酯酽酾酲酴酹醌醅醐醍醑醢醣醪醭醮醯醵醴醺豕鹾趸跫踅蹙蹩趵趿趼趺跄跖跗跚跞跎跏跛跆跬跷跸跣跹跻跤踉跽踔踝踟踬踮踣踯踺蹀踹踵踽踱蹉蹁蹂蹑蹒蹊蹰蹶蹼蹯蹴躅躏躔躐躜躞豸貂貊貅貘貔斛觖觞觚觜�".split(""); +for(j = 0; j != D[245].length; ++j) if(D[245][j].charCodeAt(0) !== 0xFFFD) { e[D[245][j]] = 62720 + j; d[62720 + j] = D[245][j];} +D[246] = "����������������������������������������������������������������鯜鯝鯞鯟鯠鯡鯢鯣鯤鯥鯦鯧鯨鯩鯪鯫鯬鯭鯮鯯鯰鯱鯲鯳鯴鯵鯶鯷鯸鯹鯺鯻鯼鯽鯾鯿鰀鰁鰂鰃鰄鰅鰆鰇鰈鰉鰊鰋鰌鰍鰎鰏鰐鰑鰒鰓鰔鰕鰖鰗鰘鰙鰚�鰛鰜鰝鰞鰟鰠鰡鰢鰣鰤鰥鰦鰧鰨鰩鰪鰫鰬鰭鰮鰯鰰鰱鰲鰳鰴鰵鰶鰷鰸鰹鰺鰻觥觫觯訾謦靓雩雳雯霆霁霈霏霎霪霭霰霾龀龃龅龆龇龈龉龊龌黾鼋鼍隹隼隽雎雒瞿雠銎銮鋈錾鍪鏊鎏鐾鑫鱿鲂鲅鲆鲇鲈稣鲋鲎鲐鲑鲒鲔鲕鲚鲛鲞鲟鲠鲡鲢鲣鲥鲦鲧鲨鲩鲫鲭鲮鲰鲱鲲鲳鲴鲵鲶鲷鲺鲻鲼鲽鳄鳅鳆鳇鳊鳋�".split(""); +for(j = 0; j != D[246].length; ++j) if(D[246][j].charCodeAt(0) !== 0xFFFD) { e[D[246][j]] = 62976 + j; d[62976 + j] = D[246][j];} +D[247] = "����������������������������������������������������������������鰼鰽鰾鰿鱀鱁鱂鱃鱄鱅鱆鱇鱈鱉鱊鱋鱌鱍鱎鱏鱐鱑鱒鱓鱔鱕鱖鱗鱘鱙鱚鱛鱜鱝鱞鱟鱠鱡鱢鱣鱤鱥鱦鱧鱨鱩鱪鱫鱬鱭鱮鱯鱰鱱鱲鱳鱴鱵鱶鱷鱸鱹鱺�鱻鱽鱾鲀鲃鲄鲉鲊鲌鲏鲓鲖鲗鲘鲙鲝鲪鲬鲯鲹鲾鲿鳀鳁鳂鳈鳉鳑鳒鳚鳛鳠鳡鳌鳍鳎鳏鳐鳓鳔鳕鳗鳘鳙鳜鳝鳟鳢靼鞅鞑鞒鞔鞯鞫鞣鞲鞴骱骰骷鹘骶骺骼髁髀髅髂髋髌髑魅魃魇魉魈魍魑飨餍餮饕饔髟髡髦髯髫髻髭髹鬈鬏鬓鬟鬣麽麾縻麂麇麈麋麒鏖麝麟黛黜黝黠黟黢黩黧黥黪黯鼢鼬鼯鼹鼷鼽鼾齄�".split(""); +for(j = 0; j != D[247].length; ++j) if(D[247][j].charCodeAt(0) !== 0xFFFD) { e[D[247][j]] = 63232 + j; d[63232 + j] = D[247][j];} +D[248] = "����������������������������������������������������������������鳣鳤鳥鳦鳧鳨鳩鳪鳫鳬鳭鳮鳯鳰鳱鳲鳳鳴鳵鳶鳷鳸鳹鳺鳻鳼鳽鳾鳿鴀鴁鴂鴃鴄鴅鴆鴇鴈鴉鴊鴋鴌鴍鴎鴏鴐鴑鴒鴓鴔鴕鴖鴗鴘鴙鴚鴛鴜鴝鴞鴟鴠鴡�鴢鴣鴤鴥鴦鴧鴨鴩鴪鴫鴬鴭鴮鴯鴰鴱鴲鴳鴴鴵鴶鴷鴸鴹鴺鴻鴼鴽鴾鴿鵀鵁鵂�".split(""); +for(j = 0; j != D[248].length; ++j) if(D[248][j].charCodeAt(0) !== 0xFFFD) { e[D[248][j]] = 63488 + j; d[63488 + j] = D[248][j];} +D[249] = "����������������������������������������������������������������鵃鵄鵅鵆鵇鵈鵉鵊鵋鵌鵍鵎鵏鵐鵑鵒鵓鵔鵕鵖鵗鵘鵙鵚鵛鵜鵝鵞鵟鵠鵡鵢鵣鵤鵥鵦鵧鵨鵩鵪鵫鵬鵭鵮鵯鵰鵱鵲鵳鵴鵵鵶鵷鵸鵹鵺鵻鵼鵽鵾鵿鶀鶁�鶂鶃鶄鶅鶆鶇鶈鶉鶊鶋鶌鶍鶎鶏鶐鶑鶒鶓鶔鶕鶖鶗鶘鶙鶚鶛鶜鶝鶞鶟鶠鶡鶢�".split(""); +for(j = 0; j != D[249].length; ++j) if(D[249][j].charCodeAt(0) !== 0xFFFD) { e[D[249][j]] = 63744 + j; d[63744 + j] = D[249][j];} +D[250] = "����������������������������������������������������������������鶣鶤鶥鶦鶧鶨鶩鶪鶫鶬鶭鶮鶯鶰鶱鶲鶳鶴鶵鶶鶷鶸鶹鶺鶻鶼鶽鶾鶿鷀鷁鷂鷃鷄鷅鷆鷇鷈鷉鷊鷋鷌鷍鷎鷏鷐鷑鷒鷓鷔鷕鷖鷗鷘鷙鷚鷛鷜鷝鷞鷟鷠鷡�鷢鷣鷤鷥鷦鷧鷨鷩鷪鷫鷬鷭鷮鷯鷰鷱鷲鷳鷴鷵鷶鷷鷸鷹鷺鷻鷼鷽鷾鷿鸀鸁鸂�".split(""); +for(j = 0; j != D[250].length; ++j) if(D[250][j].charCodeAt(0) !== 0xFFFD) { e[D[250][j]] = 64000 + j; d[64000 + j] = D[250][j];} +D[251] = "����������������������������������������������������������������鸃鸄鸅鸆鸇鸈鸉鸊鸋鸌鸍鸎鸏鸐鸑鸒鸓鸔鸕鸖鸗鸘鸙鸚鸛鸜鸝鸞鸤鸧鸮鸰鸴鸻鸼鹀鹍鹐鹒鹓鹔鹖鹙鹝鹟鹠鹡鹢鹥鹮鹯鹲鹴鹵鹶鹷鹸鹹鹺鹻鹼鹽麀�麁麃麄麅麆麉麊麌麍麎麏麐麑麔麕麖麗麘麙麚麛麜麞麠麡麢麣麤麥麧麨麩麪�".split(""); +for(j = 0; j != D[251].length; ++j) if(D[251][j].charCodeAt(0) !== 0xFFFD) { e[D[251][j]] = 64256 + j; d[64256 + j] = D[251][j];} +D[252] = "����������������������������������������������������������������麫麬麭麮麯麰麱麲麳麵麶麷麹麺麼麿黀黁黂黃黅黆黇黈黊黋黌黐黒黓黕黖黗黙黚點黡黣黤黦黨黫黬黭黮黰黱黲黳黴黵黶黷黸黺黽黿鼀鼁鼂鼃鼄鼅�鼆鼇鼈鼉鼊鼌鼏鼑鼒鼔鼕鼖鼘鼚鼛鼜鼝鼞鼟鼡鼣鼤鼥鼦鼧鼨鼩鼪鼫鼭鼮鼰鼱�".split(""); +for(j = 0; j != D[252].length; ++j) if(D[252][j].charCodeAt(0) !== 0xFFFD) { e[D[252][j]] = 64512 + j; d[64512 + j] = D[252][j];} +D[253] = "����������������������������������������������������������������鼲鼳鼴鼵鼶鼸鼺鼼鼿齀齁齂齃齅齆齇齈齉齊齋齌齍齎齏齒齓齔齕齖齗齘齙齚齛齜齝齞齟齠齡齢齣齤齥齦齧齨齩齪齫齬齭齮齯齰齱齲齳齴齵齶齷齸�齹齺齻齼齽齾龁龂龍龎龏龐龑龒龓龔龕龖龗龘龜龝龞龡龢龣龤龥郎凉秊裏隣�".split(""); +for(j = 0; j != D[253].length; ++j) if(D[253][j].charCodeAt(0) !== 0xFFFD) { e[D[253][j]] = 64768 + j; d[64768 + j] = D[253][j];} +D[254] = "����������������������������������������������������������������兀嗀﨎﨏﨑﨓﨔礼﨟蘒﨡﨣﨤﨧﨨﨩��".split(""); +for(j = 0; j != D[254].length; ++j) if(D[254][j].charCodeAt(0) !== 0xFFFD) { e[D[254][j]] = 65024 + j; d[65024 + j] = D[254][j];} +return {"enc": e, "dec": d }; })(); diff --git a/node_modules/codepage/bits/51949.js b/node_modules/codepage/bits/51949.js new file mode 100644 index 000000000..46b37f679 --- /dev/null +++ b/node_modules/codepage/bits/51949.js @@ -0,0 +1,183 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[51949] = (function(){ var d = [], e = {}, D = [], j; +D[0] = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];} +D[161] = "����������������������������������������������������������������������������������������������������������������������������������������������������������������� 、。·‥…¨〃­―∥\∼‘’“”〔〕〈〉《》「」『』【】±×÷≠≤≥∞∴°′″℃Å¢£¥♂♀∠⊥⌒∂∇≡≒§※☆★○●◎◇◆□■△▲▽▼→←↑↓↔〓≪≫√∽∝∵∫∬∈∋⊆⊇⊂⊃∪∩∧∨¬�".split(""); +for(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];} +D[162] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������⇒⇔∀∃´~ˇ˘˝˚˙¸˛¡¿ː∮∑∏¤℉‰◁◀▷▶♤♠♡♥♧♣⊙◈▣◐◑▒▤▥▨▧▦▩♨☏☎☜☞¶†‡↕↗↙↖↘♭♩♪♬㉿㈜№㏇™㏂㏘℡€®������������������������".split(""); +for(j = 0; j != D[162].length; ++j) if(D[162][j].charCodeAt(0) !== 0xFFFD) { e[D[162][j]] = 41472 + j; d[41472 + j] = D[162][j];} +D[163] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[₩]^_`abcdefghijklmnopqrstuvwxyz{|} ̄�".split(""); +for(j = 0; j != D[163].length; ++j) if(D[163][j].charCodeAt(0) !== 0xFFFD) { e[D[163][j]] = 41728 + j; d[41728 + j] = D[163][j];} +D[164] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������ㄱㄲㄳㄴㄵㄶㄷㄸㄹㄺㄻㄼㄽㄾㄿㅀㅁㅂㅃㅄㅅㅆㅇㅈㅉㅊㅋㅌㅍㅎㅏㅐㅑㅒㅓㅔㅕㅖㅗㅘㅙㅚㅛㅜㅝㅞㅟㅠㅡㅢㅣㅤㅥㅦㅧㅨㅩㅪㅫㅬㅭㅮㅯㅰㅱㅲㅳㅴㅵㅶㅷㅸㅹㅺㅻㅼㅽㅾㅿㆀㆁㆂㆃㆄㆅㆆㆇㆈㆉㆊㆋㆌㆍㆎ�".split(""); +for(j = 0; j != D[164].length; ++j) if(D[164][j].charCodeAt(0) !== 0xFFFD) { e[D[164][j]] = 41984 + j; d[41984 + j] = D[164][j];} +D[165] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������ⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹ�����ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩ�������ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ��������αβγδεζηθικλμνξοπρστυφχψω�������".split(""); +for(j = 0; j != D[165].length; ++j) if(D[165][j].charCodeAt(0) !== 0xFFFD) { e[D[165][j]] = 42240 + j; d[42240 + j] = D[165][j];} +D[166] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂┒┑┚┙┖┕┎┍┞┟┡┢┦┧┩┪┭┮┱┲┵┶┹┺┽┾╀╁╃╄╅╆╇╈╉╊���������������������������".split(""); +for(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];} +D[167] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������㎕㎖㎗ℓ㎘㏄㎣㎤㎥㎦㎙㎚㎛㎜㎝㎞㎟㎠㎡㎢㏊㎍㎎㎏㏏㎈㎉㏈㎧㎨㎰㎱㎲㎳㎴㎵㎶㎷㎸㎹㎀㎁㎂㎃㎄㎺㎻㎼㎽㎾㎿㎐㎑㎒㎓㎔Ω㏀㏁㎊㎋㎌㏖㏅㎭㎮㎯㏛㎩㎪㎫㎬㏝㏐㏓㏃㏉㏜㏆����������������".split(""); +for(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];} +D[168] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������ÆЪĦ�IJ�ĿŁØŒºÞŦŊ�㉠㉡㉢㉣㉤㉥㉦㉧㉨㉩㉪㉫㉬㉭㉮㉯㉰㉱㉲㉳㉴㉵㉶㉷㉸㉹㉺㉻ⓐⓑⓒⓓⓔⓕⓖⓗⓘⓙⓚⓛⓜⓝⓞⓟⓠⓡⓢⓣⓤⓥⓦⓧⓨⓩ①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮½⅓⅔¼¾⅛⅜⅝⅞�".split(""); +for(j = 0; j != D[168].length; ++j) if(D[168][j].charCodeAt(0) !== 0xFFFD) { e[D[168][j]] = 43008 + j; d[43008 + j] = D[168][j];} +D[169] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������æđðħıijĸŀłøœßþŧŋʼn㈀㈁㈂㈃㈄㈅㈆㈇㈈㈉㈊㈋㈌㈍㈎㈏㈐㈑㈒㈓㈔㈕㈖㈗㈘㈙㈚㈛⒜⒝⒞⒟⒠⒡⒢⒣⒤⒥⒦⒧⒨⒩⒪⒫⒬⒭⒮⒯⒰⒱⒲⒳⒴⒵⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽⑾⑿⒀⒁⒂¹²³⁴ⁿ₁₂₃₄�".split(""); +for(j = 0; j != D[169].length; ++j) if(D[169][j].charCodeAt(0) !== 0xFFFD) { e[D[169][j]] = 43264 + j; d[43264 + j] = D[169][j];} +D[170] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをん������������".split(""); +for(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];} +D[171] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶ���������".split(""); +for(j = 0; j != D[171].length; ++j) if(D[171][j].charCodeAt(0) !== 0xFFFD) { e[D[171][j]] = 43776 + j; d[43776 + j] = D[171][j];} +D[172] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ���������������абвгдеёжзийклмнопрстуфхцчшщъыьэюя��������������".split(""); +for(j = 0; j != D[172].length; ++j) if(D[172][j].charCodeAt(0) !== 0xFFFD) { e[D[172][j]] = 44032 + j; d[44032 + j] = D[172][j];} +D[176] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������가각간갇갈갉갊감갑값갓갔강갖갗같갚갛개객갠갤갬갭갯갰갱갸갹갼걀걋걍걔걘걜거걱건걷걸걺검겁것겄겅겆겉겊겋게겐겔겜겝겟겠겡겨격겪견겯결겸겹겻겼경곁계곈곌곕곗고곡곤곧골곪곬곯곰곱곳공곶과곽관괄괆�".split(""); +for(j = 0; j != D[176].length; ++j) if(D[176][j].charCodeAt(0) !== 0xFFFD) { e[D[176][j]] = 45056 + j; d[45056 + j] = D[176][j];} +D[177] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������괌괍괏광괘괜괠괩괬괭괴괵괸괼굄굅굇굉교굔굘굡굣구국군굳굴굵굶굻굼굽굿궁궂궈궉권궐궜궝궤궷귀귁귄귈귐귑귓규균귤그극근귿글긁금급긋긍긔기긱긴긷길긺김깁깃깅깆깊까깍깎깐깔깖깜깝깟깠깡깥깨깩깬깰깸�".split(""); +for(j = 0; j != D[177].length; ++j) if(D[177][j].charCodeAt(0) !== 0xFFFD) { e[D[177][j]] = 45312 + j; d[45312 + j] = D[177][j];} +D[178] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������깹깻깼깽꺄꺅꺌꺼꺽꺾껀껄껌껍껏껐껑께껙껜껨껫껭껴껸껼꼇꼈꼍꼐꼬꼭꼰꼲꼴꼼꼽꼿꽁꽂꽃꽈꽉꽐꽜꽝꽤꽥꽹꾀꾄꾈꾐꾑꾕꾜꾸꾹꾼꿀꿇꿈꿉꿋꿍꿎꿔꿜꿨꿩꿰꿱꿴꿸뀀뀁뀄뀌뀐뀔뀜뀝뀨끄끅끈끊끌끎끓끔끕끗끙�".split(""); +for(j = 0; j != D[178].length; ++j) if(D[178][j].charCodeAt(0) !== 0xFFFD) { e[D[178][j]] = 45568 + j; d[45568 + j] = D[178][j];} +D[179] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������끝끼끽낀낄낌낍낏낑나낙낚난낟날낡낢남납낫났낭낮낯낱낳내낵낸낼냄냅냇냈냉냐냑냔냘냠냥너넉넋넌널넒넓넘넙넛넜넝넣네넥넨넬넴넵넷넸넹녀녁년녈념녑녔녕녘녜녠노녹논놀놂놈놉놋농높놓놔놘놜놨뇌뇐뇔뇜뇝�".split(""); +for(j = 0; j != D[179].length; ++j) if(D[179][j].charCodeAt(0) !== 0xFFFD) { e[D[179][j]] = 45824 + j; d[45824 + j] = D[179][j];} +D[180] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������뇟뇨뇩뇬뇰뇹뇻뇽누눅눈눋눌눔눕눗눙눠눴눼뉘뉜뉠뉨뉩뉴뉵뉼늄늅늉느늑는늘늙늚늠늡늣능늦늪늬늰늴니닉닌닐닖님닙닛닝닢다닥닦단닫달닭닮닯닳담답닷닸당닺닻닿대댁댄댈댐댑댓댔댕댜더덕덖던덛덜덞덟덤덥�".split(""); +for(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];} +D[181] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������덧덩덫덮데덱덴델뎀뎁뎃뎄뎅뎌뎐뎔뎠뎡뎨뎬도독돈돋돌돎돐돔돕돗동돛돝돠돤돨돼됐되된될됨됩됫됴두둑둔둘둠둡둣둥둬뒀뒈뒝뒤뒨뒬뒵뒷뒹듀듄듈듐듕드득든듣들듦듬듭듯등듸디딕딘딛딜딤딥딧딨딩딪따딱딴딸�".split(""); +for(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];} +D[182] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������땀땁땃땄땅땋때땍땐땔땜땝땟땠땡떠떡떤떨떪떫떰떱떳떴떵떻떼떽뗀뗄뗌뗍뗏뗐뗑뗘뗬또똑똔똘똥똬똴뙈뙤뙨뚜뚝뚠뚤뚫뚬뚱뛔뛰뛴뛸뜀뜁뜅뜨뜩뜬뜯뜰뜸뜹뜻띄띈띌띔띕띠띤띨띰띱띳띵라락란랄람랍랏랐랑랒랖랗�".split(""); +for(j = 0; j != D[182].length; ++j) if(D[182][j].charCodeAt(0) !== 0xFFFD) { e[D[182][j]] = 46592 + j; d[46592 + j] = D[182][j];} +D[183] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������래랙랜랠램랩랫랬랭랴략랸럇량러럭런럴럼럽럿렀렁렇레렉렌렐렘렙렛렝려력련렬렴렵렷렸령례롄롑롓로록론롤롬롭롯롱롸롼뢍뢨뢰뢴뢸룀룁룃룅료룐룔룝룟룡루룩룬룰룸룹룻룽뤄뤘뤠뤼뤽륀륄륌륏륑류륙륜률륨륩�".split(""); +for(j = 0; j != D[183].length; ++j) if(D[183][j].charCodeAt(0) !== 0xFFFD) { e[D[183][j]] = 46848 + j; d[46848 + j] = D[183][j];} +D[184] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������륫륭르륵른를름릅릇릉릊릍릎리릭린릴림립릿링마막만많맏말맑맒맘맙맛망맞맡맣매맥맨맬맴맵맷맸맹맺먀먁먈먕머먹먼멀멂멈멉멋멍멎멓메멕멘멜멤멥멧멨멩며멱면멸몃몄명몇몌모목몫몬몰몲몸몹못몽뫄뫈뫘뫙뫼�".split(""); +for(j = 0; j != D[184].length; ++j) if(D[184][j].charCodeAt(0) !== 0xFFFD) { e[D[184][j]] = 47104 + j; d[47104 + j] = D[184][j];} +D[185] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������묀묄묍묏묑묘묜묠묩묫무묵묶문묻물묽묾뭄뭅뭇뭉뭍뭏뭐뭔뭘뭡뭣뭬뮈뮌뮐뮤뮨뮬뮴뮷므믄믈믐믓미믹민믿밀밂밈밉밋밌밍및밑바박밖밗반받발밝밞밟밤밥밧방밭배백밴밸뱀뱁뱃뱄뱅뱉뱌뱍뱐뱝버벅번벋벌벎범법벗�".split(""); +for(j = 0; j != D[185].length; ++j) if(D[185][j].charCodeAt(0) !== 0xFFFD) { e[D[185][j]] = 47360 + j; d[47360 + j] = D[185][j];} +D[186] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������벙벚베벡벤벧벨벰벱벳벴벵벼벽변별볍볏볐병볕볘볜보복볶본볼봄봅봇봉봐봔봤봬뵀뵈뵉뵌뵐뵘뵙뵤뵨부북분붇불붉붊붐붑붓붕붙붚붜붤붰붸뷔뷕뷘뷜뷩뷰뷴뷸븀븃븅브븍븐블븜븝븟비빅빈빌빎빔빕빗빙빚빛빠빡빤�".split(""); +for(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];} +D[187] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������빨빪빰빱빳빴빵빻빼빽뺀뺄뺌뺍뺏뺐뺑뺘뺙뺨뻐뻑뻔뻗뻘뻠뻣뻤뻥뻬뼁뼈뼉뼘뼙뼛뼜뼝뽀뽁뽄뽈뽐뽑뽕뾔뾰뿅뿌뿍뿐뿔뿜뿟뿡쀼쁑쁘쁜쁠쁨쁩삐삑삔삘삠삡삣삥사삭삯산삳살삵삶삼삽삿샀상샅새색샌샐샘샙샛샜생샤�".split(""); +for(j = 0; j != D[187].length; ++j) if(D[187][j].charCodeAt(0) !== 0xFFFD) { e[D[187][j]] = 47872 + j; d[47872 + j] = D[187][j];} +D[188] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������샥샨샬샴샵샷샹섀섄섈섐섕서석섞섟선섣설섦섧섬섭섯섰성섶세섹센셀셈셉셋셌셍셔셕션셜셤셥셧셨셩셰셴셸솅소속솎손솔솖솜솝솟송솥솨솩솬솰솽쇄쇈쇌쇔쇗쇘쇠쇤쇨쇰쇱쇳쇼쇽숀숄숌숍숏숑수숙순숟술숨숩숫숭�".split(""); +for(j = 0; j != D[188].length; ++j) if(D[188][j].charCodeAt(0) !== 0xFFFD) { e[D[188][j]] = 48128 + j; d[48128 + j] = D[188][j];} +D[189] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������숯숱숲숴쉈쉐쉑쉔쉘쉠쉥쉬쉭쉰쉴쉼쉽쉿슁슈슉슐슘슛슝스슥슨슬슭슴습슷승시식신싣실싫심십싯싱싶싸싹싻싼쌀쌈쌉쌌쌍쌓쌔쌕쌘쌜쌤쌥쌨쌩썅써썩썬썰썲썸썹썼썽쎄쎈쎌쏀쏘쏙쏜쏟쏠쏢쏨쏩쏭쏴쏵쏸쐈쐐쐤쐬쐰�".split(""); +for(j = 0; j != D[189].length; ++j) if(D[189][j].charCodeAt(0) !== 0xFFFD) { e[D[189][j]] = 48384 + j; d[48384 + j] = D[189][j];} +D[190] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������쐴쐼쐽쑈쑤쑥쑨쑬쑴쑵쑹쒀쒔쒜쒸쒼쓩쓰쓱쓴쓸쓺쓿씀씁씌씐씔씜씨씩씬씰씸씹씻씽아악안앉않알앍앎앓암압앗았앙앝앞애액앤앨앰앱앳앴앵야약얀얄얇얌얍얏양얕얗얘얜얠얩어억언얹얻얼얽얾엄업없엇었엉엊엌엎�".split(""); +for(j = 0; j != D[190].length; ++j) if(D[190][j].charCodeAt(0) !== 0xFFFD) { e[D[190][j]] = 48640 + j; d[48640 + j] = D[190][j];} +D[191] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������에엑엔엘엠엡엣엥여역엮연열엶엷염엽엾엿였영옅옆옇예옌옐옘옙옛옜오옥온올옭옮옰옳옴옵옷옹옻와왁완왈왐왑왓왔왕왜왝왠왬왯왱외왹왼욀욈욉욋욍요욕욘욜욤욥욧용우욱운울욹욺움웁웃웅워웍원월웜웝웠웡웨�".split(""); +for(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];} +D[192] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������웩웬웰웸웹웽위윅윈윌윔윕윗윙유육윤율윰윱윳융윷으윽은을읊음읍읏응읒읓읔읕읖읗의읜읠읨읫이익인일읽읾잃임입잇있잉잊잎자작잔잖잗잘잚잠잡잣잤장잦재잭잰잴잼잽잿쟀쟁쟈쟉쟌쟎쟐쟘쟝쟤쟨쟬저적전절젊�".split(""); +for(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];} +D[193] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������점접젓정젖제젝젠젤젬젭젯젱져젼졀졈졉졌졍졔조족존졸졺좀좁좃종좆좇좋좌좍좔좝좟좡좨좼좽죄죈죌죔죕죗죙죠죡죤죵주죽준줄줅줆줌줍줏중줘줬줴쥐쥑쥔쥘쥠쥡쥣쥬쥰쥴쥼즈즉즌즐즘즙즛증지직진짇질짊짐집짓�".split(""); +for(j = 0; j != D[193].length; ++j) if(D[193][j].charCodeAt(0) !== 0xFFFD) { e[D[193][j]] = 49408 + j; d[49408 + j] = D[193][j];} +D[194] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������징짖짙짚짜짝짠짢짤짧짬짭짯짰짱째짹짼쨀쨈쨉쨋쨌쨍쨔쨘쨩쩌쩍쩐쩔쩜쩝쩟쩠쩡쩨쩽쪄쪘쪼쪽쫀쫄쫌쫍쫏쫑쫓쫘쫙쫠쫬쫴쬈쬐쬔쬘쬠쬡쭁쭈쭉쭌쭐쭘쭙쭝쭤쭸쭹쮜쮸쯔쯤쯧쯩찌찍찐찔찜찝찡찢찧차착찬찮찰참찹찻�".split(""); +for(j = 0; j != D[194].length; ++j) if(D[194][j].charCodeAt(0) !== 0xFFFD) { e[D[194][j]] = 49664 + j; d[49664 + j] = D[194][j];} +D[195] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������찼창찾채책챈챌챔챕챗챘챙챠챤챦챨챰챵처척천철첨첩첫첬청체첵첸첼쳄쳅쳇쳉쳐쳔쳤쳬쳰촁초촉촌촐촘촙촛총촤촨촬촹최쵠쵤쵬쵭쵯쵱쵸춈추축춘출춤춥춧충춰췄췌췐취췬췰췸췹췻췽츄츈츌츔츙츠측츤츨츰츱츳층�".split(""); +for(j = 0; j != D[195].length; ++j) if(D[195][j].charCodeAt(0) !== 0xFFFD) { e[D[195][j]] = 49920 + j; d[49920 + j] = D[195][j];} +D[196] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������치칙친칟칠칡침칩칫칭카칵칸칼캄캅캇캉캐캑캔캘캠캡캣캤캥캬캭컁커컥컨컫컬컴컵컷컸컹케켁켄켈켐켑켓켕켜켠켤켬켭켯켰켱켸코콕콘콜콤콥콧콩콰콱콴콸쾀쾅쾌쾡쾨쾰쿄쿠쿡쿤쿨쿰쿱쿳쿵쿼퀀퀄퀑퀘퀭퀴퀵퀸퀼�".split(""); +for(j = 0; j != D[196].length; ++j) if(D[196][j].charCodeAt(0) !== 0xFFFD) { e[D[196][j]] = 50176 + j; d[50176 + j] = D[196][j];} +D[197] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������큄큅큇큉큐큔큘큠크큭큰클큼큽킁키킥킨킬킴킵킷킹타탁탄탈탉탐탑탓탔탕태택탠탤탬탭탯탰탱탸턍터턱턴털턺텀텁텃텄텅테텍텐텔템텝텟텡텨텬텼톄톈토톡톤톨톰톱톳통톺톼퇀퇘퇴퇸툇툉툐투툭툰툴툼툽툿퉁퉈퉜�".split(""); +for(j = 0; j != D[197].length; ++j) if(D[197][j].charCodeAt(0) !== 0xFFFD) { e[D[197][j]] = 50432 + j; d[50432 + j] = D[197][j];} +D[198] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������퉤튀튁튄튈튐튑튕튜튠튤튬튱트특튼튿틀틂틈틉틋틔틘틜틤틥티틱틴틸팀팁팃팅파팍팎판팔팖팜팝팟팠팡팥패팩팬팰팸팹팻팼팽퍄퍅퍼퍽펀펄펌펍펏펐펑페펙펜펠펨펩펫펭펴편펼폄폅폈평폐폘폡폣포폭폰폴폼폽폿퐁�".split(""); +for(j = 0; j != D[198].length; ++j) if(D[198][j].charCodeAt(0) !== 0xFFFD) { e[D[198][j]] = 50688 + j; d[50688 + j] = D[198][j];} +D[199] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������퐈퐝푀푄표푠푤푭푯푸푹푼푿풀풂품풉풋풍풔풩퓌퓐퓔퓜퓟퓨퓬퓰퓸퓻퓽프픈플픔픕픗피픽핀필핌핍핏핑하학한할핥함합핫항해핵핸핼햄햅햇했행햐향허헉헌헐헒험헙헛헝헤헥헨헬헴헵헷헹혀혁현혈혐협혓혔형혜혠�".split(""); +for(j = 0; j != D[199].length; ++j) if(D[199][j].charCodeAt(0) !== 0xFFFD) { e[D[199][j]] = 50944 + j; d[50944 + j] = D[199][j];} +D[200] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������혤혭호혹혼홀홅홈홉홋홍홑화확환활홧황홰홱홴횃횅회획횐횔횝횟횡효횬횰횹횻후훅훈훌훑훔훗훙훠훤훨훰훵훼훽휀휄휑휘휙휜휠휨휩휫휭휴휵휸휼흄흇흉흐흑흔흖흗흘흙흠흡흣흥흩희흰흴흼흽힁히힉힌힐힘힙힛힝�".split(""); +for(j = 0; j != D[200].length; ++j) if(D[200][j].charCodeAt(0) !== 0xFFFD) { e[D[200][j]] = 51200 + j; d[51200 + j] = D[200][j];} +D[202] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������伽佳假價加可呵哥嘉嫁家暇架枷柯歌珂痂稼苛茄街袈訶賈跏軻迦駕刻却各恪慤殼珏脚覺角閣侃刊墾奸姦干幹懇揀杆柬桿澗癎看磵稈竿簡肝艮艱諫間乫喝曷渴碣竭葛褐蝎鞨勘坎堪嵌感憾戡敢柑橄減甘疳監瞰紺邯鑑鑒龕�".split(""); +for(j = 0; j != D[202].length; ++j) if(D[202][j].charCodeAt(0) !== 0xFFFD) { e[D[202][j]] = 51712 + j; d[51712 + j] = D[202][j];} +D[203] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������匣岬甲胛鉀閘剛堈姜岡崗康强彊慷江畺疆糠絳綱羌腔舡薑襁講鋼降鱇介价個凱塏愷愾慨改槪漑疥皆盖箇芥蓋豈鎧開喀客坑更粳羹醵倨去居巨拒据據擧渠炬祛距踞車遽鉅鋸乾件健巾建愆楗腱虔蹇鍵騫乞傑杰桀儉劍劒檢�".split(""); +for(j = 0; j != D[203].length; ++j) if(D[203][j].charCodeAt(0) !== 0xFFFD) { e[D[203][j]] = 51968 + j; d[51968 + j] = D[203][j];} +D[204] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������瞼鈐黔劫怯迲偈憩揭擊格檄激膈覡隔堅牽犬甄絹繭肩見譴遣鵑抉決潔結缺訣兼慊箝謙鉗鎌京俓倞傾儆勁勍卿坰境庚徑慶憬擎敬景暻更梗涇炅烱璟璥瓊痙硬磬竟競絅經耕耿脛莖警輕逕鏡頃頸驚鯨係啓堺契季屆悸戒桂械�".split(""); +for(j = 0; j != D[204].length; ++j) if(D[204][j].charCodeAt(0) !== 0xFFFD) { e[D[204][j]] = 52224 + j; d[52224 + j] = D[204][j];} +D[205] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������棨溪界癸磎稽系繫繼計誡谿階鷄古叩告呱固姑孤尻庫拷攷故敲暠枯槁沽痼皐睾稿羔考股膏苦苽菰藁蠱袴誥賈辜錮雇顧高鼓哭斛曲梏穀谷鵠困坤崑昆梱棍滾琨袞鯤汨滑骨供公共功孔工恐恭拱控攻珙空蚣貢鞏串寡戈果瓜�".split(""); +for(j = 0; j != D[205].length; ++j) if(D[205][j].charCodeAt(0) !== 0xFFFD) { e[D[205][j]] = 52480 + j; d[52480 + j] = D[205][j];} +D[206] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������科菓誇課跨過鍋顆廓槨藿郭串冠官寬慣棺款灌琯瓘管罐菅觀貫關館刮恝括适侊光匡壙廣曠洸炚狂珖筐胱鑛卦掛罫乖傀塊壞怪愧拐槐魁宏紘肱轟交僑咬喬嬌嶠巧攪敎校橋狡皎矯絞翹膠蕎蛟較轎郊餃驕鮫丘久九仇俱具勾�".split(""); +for(j = 0; j != D[206].length; ++j) if(D[206][j].charCodeAt(0) !== 0xFFFD) { e[D[206][j]] = 52736 + j; d[52736 + j] = D[206][j];} +D[207] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������區口句咎嘔坵垢寇嶇廐懼拘救枸柩構歐毆毬求溝灸狗玖球瞿矩究絿耉臼舅舊苟衢謳購軀逑邱鉤銶駒驅鳩鷗龜國局菊鞠鞫麴君窘群裙軍郡堀屈掘窟宮弓穹窮芎躬倦券勸卷圈拳捲權淃眷厥獗蕨蹶闕机櫃潰詭軌饋句晷歸貴�".split(""); +for(j = 0; j != D[207].length; ++j) if(D[207][j].charCodeAt(0) !== 0xFFFD) { e[D[207][j]] = 52992 + j; d[52992 + j] = D[207][j];} +D[208] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������鬼龜叫圭奎揆槻珪硅窺竅糾葵規赳逵閨勻均畇筠菌鈞龜橘克剋劇戟棘極隙僅劤勤懃斤根槿瑾筋芹菫覲謹近饉契今妗擒昑檎琴禁禽芩衾衿襟金錦伋及急扱汲級給亘兢矜肯企伎其冀嗜器圻基埼夔奇妓寄岐崎己幾忌技旗旣�".split(""); +for(j = 0; j != D[208].length; ++j) if(D[208][j].charCodeAt(0) !== 0xFFFD) { e[D[208][j]] = 53248 + j; d[53248 + j] = D[208][j];} +D[209] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������朞期杞棋棄機欺氣汽沂淇玘琦琪璂璣畸畿碁磯祁祇祈祺箕紀綺羈耆耭肌記譏豈起錡錤飢饑騎騏驥麒緊佶吉拮桔金喫儺喇奈娜懦懶拏拿癩羅蘿螺裸邏那樂洛烙珞落諾酪駱亂卵暖欄煖爛蘭難鸞捏捺南嵐枏楠湳濫男藍襤拉�".split(""); +for(j = 0; j != D[209].length; ++j) if(D[209][j].charCodeAt(0) !== 0xFFFD) { e[D[209][j]] = 53504 + j; d[53504 + j] = D[209][j];} +D[210] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������納臘蠟衲囊娘廊朗浪狼郎乃來內奈柰耐冷女年撚秊念恬拈捻寧寗努勞奴弩怒擄櫓爐瑙盧老蘆虜路露駑魯鷺碌祿綠菉錄鹿論壟弄濃籠聾膿農惱牢磊腦賂雷尿壘屢樓淚漏累縷陋嫩訥杻紐勒肋凜凌稜綾能菱陵尼泥匿溺多茶�".split(""); +for(j = 0; j != D[210].length; ++j) if(D[210][j].charCodeAt(0) !== 0xFFFD) { e[D[210][j]] = 53760 + j; d[53760 + j] = D[210][j];} +D[211] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������丹亶但單團壇彖斷旦檀段湍短端簞緞蛋袒鄲鍛撻澾獺疸達啖坍憺擔曇淡湛潭澹痰聃膽蕁覃談譚錟沓畓答踏遝唐堂塘幢戇撞棠當糖螳黨代垈坮大對岱帶待戴擡玳臺袋貸隊黛宅德悳倒刀到圖堵塗導屠島嶋度徒悼挑掉搗桃�".split(""); +for(j = 0; j != D[211].length; ++j) if(D[211][j].charCodeAt(0) !== 0xFFFD) { e[D[211][j]] = 54016 + j; d[54016 + j] = D[211][j];} +D[212] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������棹櫂淘渡滔濤燾盜睹禱稻萄覩賭跳蹈逃途道都鍍陶韜毒瀆牘犢獨督禿篤纛讀墩惇敦旽暾沌焞燉豚頓乭突仝冬凍動同憧東桐棟洞潼疼瞳童胴董銅兜斗杜枓痘竇荳讀豆逗頭屯臀芚遁遯鈍得嶝橙燈登等藤謄鄧騰喇懶拏癩羅�".split(""); +for(j = 0; j != D[212].length; ++j) if(D[212][j].charCodeAt(0) !== 0xFFFD) { e[D[212][j]] = 54272 + j; d[54272 + j] = D[212][j];} +D[213] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������蘿螺裸邏樂洛烙珞絡落諾酪駱丹亂卵欄欒瀾爛蘭鸞剌辣嵐擥攬欖濫籃纜藍襤覽拉臘蠟廊朗浪狼琅瑯螂郞來崍徠萊冷掠略亮倆兩凉梁樑粮粱糧良諒輛量侶儷勵呂廬慮戾旅櫚濾礪藜蠣閭驢驪麗黎力曆歷瀝礫轢靂憐戀攣漣�".split(""); +for(j = 0; j != D[213].length; ++j) if(D[213][j].charCodeAt(0) !== 0xFFFD) { e[D[213][j]] = 54528 + j; d[54528 + j] = D[213][j];} +D[214] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������煉璉練聯蓮輦連鍊冽列劣洌烈裂廉斂殮濂簾獵令伶囹寧岺嶺怜玲笭羚翎聆逞鈴零靈領齡例澧禮醴隷勞怒撈擄櫓潞瀘爐盧老蘆虜路輅露魯鷺鹵碌祿綠菉錄鹿麓論壟弄朧瀧瓏籠聾儡瀨牢磊賂賚賴雷了僚寮廖料燎療瞭聊蓼�".split(""); +for(j = 0; j != D[214].length; ++j) if(D[214][j].charCodeAt(0) !== 0xFFFD) { e[D[214][j]] = 54784 + j; d[54784 + j] = D[214][j];} +D[215] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������遼鬧龍壘婁屢樓淚漏瘻累縷蔞褸鏤陋劉旒柳榴流溜瀏琉瑠留瘤硫謬類六戮陸侖倫崙淪綸輪律慄栗率隆勒肋凜凌楞稜綾菱陵俚利厘吏唎履悧李梨浬犁狸理璃異痢籬罹羸莉裏裡里釐離鯉吝潾燐璘藺躪隣鱗麟林淋琳臨霖砬�".split(""); +for(j = 0; j != D[215].length; ++j) if(D[215][j].charCodeAt(0) !== 0xFFFD) { e[D[215][j]] = 55040 + j; d[55040 + j] = D[215][j];} +D[216] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������立笠粒摩瑪痲碼磨馬魔麻寞幕漠膜莫邈万卍娩巒彎慢挽晩曼滿漫灣瞞萬蔓蠻輓饅鰻唜抹末沫茉襪靺亡妄忘忙望網罔芒茫莽輞邙埋妹媒寐昧枚梅每煤罵買賣邁魅脈貊陌驀麥孟氓猛盲盟萌冪覓免冕勉棉沔眄眠綿緬面麵滅�".split(""); +for(j = 0; j != D[216].length; ++j) if(D[216][j].charCodeAt(0) !== 0xFFFD) { e[D[216][j]] = 55296 + j; d[55296 + j] = D[216][j];} +D[217] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������蔑冥名命明暝椧溟皿瞑茗蓂螟酩銘鳴袂侮冒募姆帽慕摸摹暮某模母毛牟牡瑁眸矛耗芼茅謀謨貌木沐牧目睦穆鶩歿沒夢朦蒙卯墓妙廟描昴杳渺猫竗苗錨務巫憮懋戊拇撫无楙武毋無珷畝繆舞茂蕪誣貿霧鵡墨默們刎吻問文�".split(""); +for(j = 0; j != D[217].length; ++j) if(D[217][j].charCodeAt(0) !== 0xFFFD) { e[D[217][j]] = 55552 + j; d[55552 + j] = D[217][j];} +D[218] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������汶紊紋聞蚊門雯勿沕物味媚尾嵋彌微未梶楣渼湄眉米美薇謎迷靡黴岷悶愍憫敏旻旼民泯玟珉緡閔密蜜謐剝博拍搏撲朴樸泊珀璞箔粕縛膊舶薄迫雹駁伴半反叛拌搬攀斑槃泮潘班畔瘢盤盼磐磻礬絆般蟠返頒飯勃拔撥渤潑�".split(""); +for(j = 0; j != D[218].length; ++j) if(D[218][j].charCodeAt(0) !== 0xFFFD) { e[D[218][j]] = 55808 + j; d[55808 + j] = D[218][j];} +D[219] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������發跋醱鉢髮魃倣傍坊妨尨幇彷房放方旁昉枋榜滂磅紡肪膀舫芳蒡蚌訪謗邦防龐倍俳北培徘拜排杯湃焙盃背胚裴裵褙賠輩配陪伯佰帛柏栢白百魄幡樊煩燔番磻繁蕃藩飜伐筏罰閥凡帆梵氾汎泛犯範范法琺僻劈壁擘檗璧癖�".split(""); +for(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];} +D[220] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������碧蘗闢霹便卞弁變辨辯邊別瞥鱉鼈丙倂兵屛幷昞昺柄棅炳甁病秉竝輧餠騈保堡報寶普步洑湺潽珤甫菩補褓譜輔伏僕匐卜宓復服福腹茯蔔複覆輹輻馥鰒本乶俸奉封峯峰捧棒烽熢琫縫蓬蜂逢鋒鳳不付俯傅剖副否咐埠夫婦�".split(""); +for(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];} +D[221] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������孚孵富府復扶敷斧浮溥父符簿缶腐腑膚艀芙莩訃負賦賻赴趺部釜阜附駙鳧北分吩噴墳奔奮忿憤扮昐汾焚盆粉糞紛芬賁雰不佛弗彿拂崩朋棚硼繃鵬丕備匕匪卑妃婢庇悲憊扉批斐枇榧比毖毗毘沸泌琵痺砒碑秕秘粃緋翡肥�".split(""); +for(j = 0; j != D[221].length; ++j) if(D[221][j].charCodeAt(0) !== 0xFFFD) { e[D[221][j]] = 56576 + j; d[56576 + j] = D[221][j];} +D[222] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������脾臂菲蜚裨誹譬費鄙非飛鼻嚬嬪彬斌檳殯浜濱瀕牝玭貧賓頻憑氷聘騁乍事些仕伺似使俟僿史司唆嗣四士奢娑寫寺射巳師徙思捨斜斯柶査梭死沙泗渣瀉獅砂社祀祠私篩紗絲肆舍莎蓑蛇裟詐詞謝賜赦辭邪飼駟麝削數朔索�".split(""); +for(j = 0; j != D[222].length; ++j) if(D[222][j].charCodeAt(0) !== 0xFFFD) { e[D[222][j]] = 56832 + j; d[56832 + j] = D[222][j];} +D[223] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������傘刪山散汕珊産疝算蒜酸霰乷撒殺煞薩三參杉森渗芟蔘衫揷澁鈒颯上傷像償商喪嘗孀尙峠常床庠廂想桑橡湘爽牀狀相祥箱翔裳觴詳象賞霜塞璽賽嗇塞穡索色牲生甥省笙墅壻嶼序庶徐恕抒捿敍暑曙書栖棲犀瑞筮絮緖署�".split(""); +for(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];} +D[224] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������胥舒薯西誓逝鋤黍鼠夕奭席惜昔晳析汐淅潟石碩蓆釋錫仙僊先善嬋宣扇敾旋渲煽琁瑄璇璿癬禪線繕羨腺膳船蘚蟬詵跣選銑鐥饍鮮卨屑楔泄洩渫舌薛褻設說雪齧剡暹殲纖蟾贍閃陝攝涉燮葉城姓宬性惺成星晟猩珹盛省筬�".split(""); +for(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];} +D[225] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������聖聲腥誠醒世勢歲洗稅笹細說貰召嘯塑宵小少巢所掃搔昭梳沼消溯瀟炤燒甦疏疎瘙笑篠簫素紹蔬蕭蘇訴逍遡邵銷韶騷俗屬束涑粟續謖贖速孫巽損蓀遜飡率宋悚松淞訟誦送頌刷殺灑碎鎖衰釗修受嗽囚垂壽嫂守岫峀帥愁�".split(""); +for(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];} +D[226] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������戍手授搜收數樹殊水洙漱燧狩獸琇璲瘦睡秀穗竪粹綏綬繡羞脩茱蒐蓚藪袖誰讐輸遂邃酬銖銹隋隧隨雖需須首髓鬚叔塾夙孰宿淑潚熟琡璹肅菽巡徇循恂旬栒楯橓殉洵淳珣盾瞬筍純脣舜荀蓴蕣詢諄醇錞順馴戌術述鉥崇崧�".split(""); +for(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];} +D[227] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������嵩瑟膝蝨濕拾習褶襲丞乘僧勝升承昇繩蠅陞侍匙嘶始媤尸屎屍市弑恃施是時枾柴猜矢示翅蒔蓍視試詩諡豕豺埴寔式息拭植殖湜熄篒蝕識軾食飾伸侁信呻娠宸愼新晨燼申神紳腎臣莘薪藎蜃訊身辛辰迅失室實悉審尋心沁�".split(""); +for(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];} +D[228] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������沈深瀋甚芯諶什十拾雙氏亞俄兒啞娥峨我牙芽莪蛾衙訝阿雅餓鴉鵝堊岳嶽幄惡愕握樂渥鄂鍔顎鰐齷安岸按晏案眼雁鞍顔鮟斡謁軋閼唵岩巖庵暗癌菴闇壓押狎鴨仰央怏昻殃秧鴦厓哀埃崖愛曖涯碍艾隘靄厄扼掖液縊腋額�".split(""); +for(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];} +D[229] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������櫻罌鶯鸚也倻冶夜惹揶椰爺耶若野弱掠略約若葯蒻藥躍亮佯兩凉壤孃恙揚攘敭暘梁楊樣洋瀁煬痒瘍禳穰糧羊良襄諒讓釀陽量養圄御於漁瘀禦語馭魚齬億憶抑檍臆偃堰彦焉言諺孼蘖俺儼嚴奄掩淹嶪業円予余勵呂女如廬�".split(""); +for(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];} +D[230] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������旅歟汝濾璵礖礪與艅茹輿轝閭餘驪麗黎亦力域役易曆歷疫繹譯轢逆驛嚥堧姸娟宴年延憐戀捐挻撚椽沇沿涎涓淵演漣烟然煙煉燃燕璉硏硯秊筵緣練縯聯衍軟輦蓮連鉛鍊鳶列劣咽悅涅烈熱裂說閱厭廉念捻染殮炎焰琰艶苒�".split(""); +for(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];} +D[231] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������簾閻髥鹽曄獵燁葉令囹塋寧嶺嶸影怜映暎楹榮永泳渶潁濚瀛瀯煐營獰玲瑛瑩瓔盈穎纓羚聆英詠迎鈴鍈零霙靈領乂倪例刈叡曳汭濊猊睿穢芮藝蘂禮裔詣譽豫醴銳隸霓預五伍俉傲午吾吳嗚塢墺奧娛寤悟惡懊敖旿晤梧汚澳�".split(""); +for(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];} +D[232] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������烏熬獒筽蜈誤鰲鼇屋沃獄玉鈺溫瑥瘟穩縕蘊兀壅擁瓮甕癰翁邕雍饔渦瓦窩窪臥蛙蝸訛婉完宛梡椀浣玩琓琬碗緩翫脘腕莞豌阮頑曰往旺枉汪王倭娃歪矮外嵬巍猥畏了僚僥凹堯夭妖姚寥寮尿嶢拗搖撓擾料曜樂橈燎燿瑤療�".split(""); +for(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];} +D[233] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������窈窯繇繞耀腰蓼蟯要謠遙遼邀饒慾欲浴縟褥辱俑傭冗勇埇墉容庸慂榕涌湧溶熔瑢用甬聳茸蓉踊鎔鏞龍于佑偶優又友右宇寓尤愚憂旴牛玗瑀盂祐禑禹紆羽芋藕虞迂遇郵釪隅雨雩勖彧旭昱栯煜稶郁頊云暈橒殞澐熉耘芸蕓�".split(""); +for(j = 0; j != D[233].length; ++j) if(D[233][j].charCodeAt(0) !== 0xFFFD) { e[D[233][j]] = 59648 + j; d[59648 + j] = D[233][j];} +D[234] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������運隕雲韻蔚鬱亐熊雄元原員圓園垣媛嫄寃怨愿援沅洹湲源爰猿瑗苑袁轅遠阮院願鴛月越鉞位偉僞危圍委威尉慰暐渭爲瑋緯胃萎葦蔿蝟衛褘謂違韋魏乳侑儒兪劉唯喩孺宥幼幽庾悠惟愈愉揄攸有杻柔柚柳楡楢油洧流游溜�".split(""); +for(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];} +D[235] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������濡猶猷琉瑜由留癒硫紐維臾萸裕誘諛諭踰蹂遊逾遺酉釉鍮類六堉戮毓肉育陸倫允奫尹崙淪潤玧胤贇輪鈗閏律慄栗率聿戎瀜絨融隆垠恩慇殷誾銀隱乙吟淫蔭陰音飮揖泣邑凝應膺鷹依倚儀宜意懿擬椅毅疑矣義艤薏蟻衣誼�".split(""); +for(j = 0; j != D[235].length; ++j) if(D[235][j].charCodeAt(0) !== 0xFFFD) { e[D[235][j]] = 60160 + j; d[60160 + j] = D[235][j];} +D[236] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������議醫二以伊利吏夷姨履已弛彛怡易李梨泥爾珥理異痍痢移罹而耳肄苡荑裏裡貽貳邇里離飴餌匿溺瀷益翊翌翼謚人仁刃印吝咽因姻寅引忍湮燐璘絪茵藺蚓認隣靭靷鱗麟一佚佾壹日溢逸鎰馹任壬妊姙恁林淋稔臨荏賃入卄�".split(""); +for(j = 0; j != D[236].length; ++j) if(D[236][j].charCodeAt(0) !== 0xFFFD) { e[D[236][j]] = 60416 + j; d[60416 + j] = D[236][j];} +D[237] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������立笠粒仍剩孕芿仔刺咨姉姿子字孜恣慈滋炙煮玆瓷疵磁紫者自茨蔗藉諮資雌作勺嚼斫昨灼炸爵綽芍酌雀鵲孱棧殘潺盞岑暫潛箴簪蠶雜丈仗匠場墻壯奬將帳庄張掌暲杖樟檣欌漿牆狀獐璋章粧腸臟臧莊葬蔣薔藏裝贓醬長�".split(""); +for(j = 0; j != D[237].length; ++j) if(D[237][j].charCodeAt(0) !== 0xFFFD) { e[D[237][j]] = 60672 + j; d[60672 + j] = D[237][j];} +D[238] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������障再哉在宰才材栽梓渽滓災縡裁財載齋齎爭箏諍錚佇低儲咀姐底抵杵楮樗沮渚狙猪疽箸紵苧菹著藷詛貯躇這邸雎齟勣吊嫡寂摘敵滴狄炙的積笛籍績翟荻謫賊赤跡蹟迪迹適鏑佃佺傳全典前剪塡塼奠專展廛悛戰栓殿氈澱�".split(""); +for(j = 0; j != D[238].length; ++j) if(D[238][j].charCodeAt(0) !== 0xFFFD) { e[D[238][j]] = 60928 + j; d[60928 + j] = D[238][j];} +D[239] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������煎琠田甸畑癲筌箋箭篆纏詮輾轉鈿銓錢鐫電顚顫餞切截折浙癤竊節絶占岾店漸点粘霑鮎點接摺蝶丁井亭停偵呈姃定幀庭廷征情挺政整旌晶晸柾楨檉正汀淀淨渟湞瀞炡玎珽町睛碇禎程穽精綎艇訂諪貞鄭酊釘鉦鋌錠霆靖�".split(""); +for(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];} +D[240] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������靜頂鼎制劑啼堤帝弟悌提梯濟祭第臍薺製諸蹄醍除際霽題齊俎兆凋助嘲弔彫措操早晁曺曹朝條棗槽漕潮照燥爪璪眺祖祚租稠窕粗糟組繰肇藻蚤詔調趙躁造遭釣阻雕鳥族簇足鏃存尊卒拙猝倧宗從悰慫棕淙琮種終綜縱腫�".split(""); +for(j = 0; j != D[240].length; ++j) if(D[240][j].charCodeAt(0) !== 0xFFFD) { e[D[240][j]] = 61440 + j; d[61440 + j] = D[240][j];} +D[241] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������踪踵鍾鐘佐坐左座挫罪主住侏做姝胄呪周嗾奏宙州廚晝朱柱株注洲湊澍炷珠疇籌紂紬綢舟蛛註誅走躊輳週酎酒鑄駐竹粥俊儁准埈寯峻晙樽浚準濬焌畯竣蠢逡遵雋駿茁中仲衆重卽櫛楫汁葺增憎曾拯烝甑症繒蒸證贈之只�".split(""); +for(j = 0; j != D[241].length; ++j) if(D[241][j].charCodeAt(0) !== 0xFFFD) { e[D[241][j]] = 61696 + j; d[61696 + j] = D[241][j];} +D[242] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������咫地址志持指摯支旨智枝枳止池沚漬知砥祉祗紙肢脂至芝芷蜘誌識贄趾遲直稙稷織職唇嗔塵振搢晉晋桭榛殄津溱珍瑨璡畛疹盡眞瞋秦縉縝臻蔯袗診賑軫辰進鎭陣陳震侄叱姪嫉帙桎瓆疾秩窒膣蛭質跌迭斟朕什執潗緝輯�".split(""); +for(j = 0; j != D[242].length; ++j) if(D[242][j].charCodeAt(0) !== 0xFFFD) { e[D[242][j]] = 61952 + j; d[61952 + j] = D[242][j];} +D[243] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������鏶集徵懲澄且侘借叉嗟嵯差次此磋箚茶蹉車遮捉搾着窄錯鑿齪撰澯燦璨瓚竄簒纂粲纘讚贊鑽餐饌刹察擦札紮僭參塹慘慙懺斬站讒讖倉倡創唱娼廠彰愴敞昌昶暢槍滄漲猖瘡窓脹艙菖蒼債埰寀寨彩採砦綵菜蔡采釵冊柵策�".split(""); +for(j = 0; j != D[243].length; ++j) if(D[243][j].charCodeAt(0) !== 0xFFFD) { e[D[243][j]] = 62208 + j; d[62208 + j] = D[243][j];} +D[244] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������責凄妻悽處倜刺剔尺慽戚拓擲斥滌瘠脊蹠陟隻仟千喘天川擅泉淺玔穿舛薦賤踐遷釧闡阡韆凸哲喆徹撤澈綴輟轍鐵僉尖沾添甛瞻簽籤詹諂堞妾帖捷牒疊睫諜貼輒廳晴淸聽菁請靑鯖切剃替涕滯締諦逮遞體初剿哨憔抄招梢�".split(""); +for(j = 0; j != D[244].length; ++j) if(D[244][j].charCodeAt(0) !== 0xFFFD) { e[D[244][j]] = 62464 + j; d[62464 + j] = D[244][j];} +D[245] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������椒楚樵炒焦硝礁礎秒稍肖艸苕草蕉貂超酢醋醮促囑燭矗蜀觸寸忖村邨叢塚寵悤憁摠總聰蔥銃撮催崔最墜抽推椎楸樞湫皺秋芻萩諏趨追鄒酋醜錐錘鎚雛騶鰍丑畜祝竺筑築縮蓄蹙蹴軸逐春椿瑃出朮黜充忠沖蟲衝衷悴膵萃�".split(""); +for(j = 0; j != D[245].length; ++j) if(D[245][j].charCodeAt(0) !== 0xFFFD) { e[D[245][j]] = 62720 + j; d[62720 + j] = D[245][j];} +D[246] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������贅取吹嘴娶就炊翠聚脆臭趣醉驟鷲側仄厠惻測層侈値嗤峙幟恥梔治淄熾痔痴癡稚穉緇緻置致蚩輜雉馳齒則勅飭親七柒漆侵寢枕沈浸琛砧針鍼蟄秤稱快他咤唾墮妥惰打拖朶楕舵陀馱駝倬卓啄坼度托拓擢晫柝濁濯琢琸託�".split(""); +for(j = 0; j != D[246].length; ++j) if(D[246][j].charCodeAt(0) !== 0xFFFD) { e[D[246][j]] = 62976 + j; d[62976 + j] = D[246][j];} +D[247] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������鐸呑嘆坦彈憚歎灘炭綻誕奪脫探眈耽貪塔搭榻宕帑湯糖蕩兌台太怠態殆汰泰笞胎苔跆邰颱宅擇澤撑攄兎吐土討慟桶洞痛筒統通堆槌腿褪退頹偸套妬投透鬪慝特闖坡婆巴把播擺杷波派爬琶破罷芭跛頗判坂板版瓣販辦鈑�".split(""); +for(j = 0; j != D[247].length; ++j) if(D[247][j].charCodeAt(0) !== 0xFFFD) { e[D[247][j]] = 63232 + j; d[63232 + j] = D[247][j];} +D[248] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������阪八叭捌佩唄悖敗沛浿牌狽稗覇貝彭澎烹膨愎便偏扁片篇編翩遍鞭騙貶坪平枰萍評吠嬖幣廢弊斃肺蔽閉陛佈包匍匏咆哺圃布怖抛抱捕暴泡浦疱砲胞脯苞葡蒲袍褒逋鋪飽鮑幅暴曝瀑爆輻俵剽彪慓杓標漂瓢票表豹飇飄驃�".split(""); +for(j = 0; j != D[248].length; ++j) if(D[248][j].charCodeAt(0) !== 0xFFFD) { e[D[248][j]] = 63488 + j; d[63488 + j] = D[248][j];} +D[249] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������品稟楓諷豊風馮彼披疲皮被避陂匹弼必泌珌畢疋筆苾馝乏逼下何厦夏廈昰河瑕荷蝦賀遐霞鰕壑學虐謔鶴寒恨悍旱汗漢澣瀚罕翰閑閒限韓割轄函含咸啣喊檻涵緘艦銜陷鹹合哈盒蛤閤闔陜亢伉姮嫦巷恒抗杭桁沆港缸肛航�".split(""); +for(j = 0; j != D[249].length; ++j) if(D[249][j].charCodeAt(0) !== 0xFFFD) { e[D[249][j]] = 63744 + j; d[63744 + j] = D[249][j];} +D[250] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������行降項亥偕咳垓奚孩害懈楷海瀣蟹解該諧邂駭骸劾核倖幸杏荇行享向嚮珦鄕響餉饗香噓墟虛許憲櫶獻軒歇險驗奕爀赫革俔峴弦懸晛泫炫玄玹現眩睍絃絢縣舷衒見賢鉉顯孑穴血頁嫌俠協夾峽挾浹狹脅脇莢鋏頰亨兄刑型�".split(""); +for(j = 0; j != D[250].length; ++j) if(D[250][j].charCodeAt(0) !== 0xFFFD) { e[D[250][j]] = 64000 + j; d[64000 + j] = D[250][j];} +D[251] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������形泂滎瀅灐炯熒珩瑩荊螢衡逈邢鎣馨兮彗惠慧暳蕙蹊醯鞋乎互呼壕壺好岵弧戶扈昊晧毫浩淏湖滸澔濠濩灝狐琥瑚瓠皓祜糊縞胡芦葫蒿虎號蝴護豪鎬頀顥惑或酷婚昏混渾琿魂忽惚笏哄弘汞泓洪烘紅虹訌鴻化和嬅樺火畵�".split(""); +for(j = 0; j != D[251].length; ++j) if(D[251][j].charCodeAt(0) !== 0xFFFD) { e[D[251][j]] = 64256 + j; d[64256 + j] = D[251][j];} +D[252] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������禍禾花華話譁貨靴廓擴攫確碻穫丸喚奐宦幻患換歡晥桓渙煥環紈還驩鰥活滑猾豁闊凰幌徨恍惶愰慌晃晄榥況湟滉潢煌璜皇篁簧荒蝗遑隍黃匯回廻徊恢悔懷晦會檜淮澮灰獪繪膾茴蛔誨賄劃獲宖橫鐄哮嚆孝效斅曉梟涍淆�".split(""); +for(j = 0; j != D[252].length; ++j) if(D[252][j].charCodeAt(0) !== 0xFFFD) { e[D[252][j]] = 64512 + j; d[64512 + j] = D[252][j];} +D[253] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������爻肴酵驍侯候厚后吼喉嗅帿後朽煦珝逅勛勳塤壎焄熏燻薰訓暈薨喧暄煊萱卉喙毁彙徽揮暉煇諱輝麾休携烋畦虧恤譎鷸兇凶匈洶胸黑昕欣炘痕吃屹紇訖欠欽歆吸恰洽翕興僖凞喜噫囍姬嬉希憙憘戱晞曦熙熹熺犧禧稀羲詰�".split(""); +for(j = 0; j != D[253].length; ++j) if(D[253][j].charCodeAt(0) !== 0xFFFD) { e[D[253][j]] = 64768 + j; d[64768 + j] = D[253][j];} +return {"enc": e, "dec": d }; })(); diff --git a/node_modules/codepage/bits/52936.js b/node_modules/codepage/bits/52936.js new file mode 100644 index 000000000..be6b135ec --- /dev/null +++ b/node_modules/codepage/bits/52936.js @@ -0,0 +1,7 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[52936] = (function(){ var d = [], e = {}, D = [], j; +D[0] = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}�€������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];} +D[126] = "���������������������������������������������������������������������������������������������������������������������������~���������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[126].length; ++j) if(D[126][j].charCodeAt(0) !== 0xFFFD) { e[D[126][j]] = 32256 + j; d[32256 + j] = D[126][j];} +return {"enc": e, "dec": d }; })(); diff --git a/node_modules/codepage/bits/54936.js b/node_modules/codepage/bits/54936.js new file mode 100644 index 000000000..f8838ba09 --- /dev/null +++ b/node_modules/codepage/bits/54936.js @@ -0,0 +1,257 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[54936] = (function(){ var d = [], e = {}, D = [], j; +D[0] = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~��������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];} +D[129] = "����������������������������������������������������������������丂丄丅丆丏丒丗丟丠両丣並丩丮丯丱丳丵丷丼乀乁乂乄乆乊乑乕乗乚乛乢乣乤乥乧乨乪乫乬乭乮乯乲乴乵乶乷乸乹乺乻乼乽乿亀亁亂亃亄亅亇亊�亐亖亗亙亜亝亞亣亪亯亰亱亴亶亷亸亹亼亽亾仈仌仏仐仒仚仛仜仠仢仦仧仩仭仮仯仱仴仸仹仺仼仾伀伂伃伄伅伆伇伈伋伌伒伓伔伕伖伜伝伡伣伨伩伬伭伮伱伳伵伷伹伻伾伿佀佁佂佄佅佇佈佉佊佋佌佒佔佖佡佢佦佨佪佫佭佮佱佲併佷佸佹佺佽侀侁侂侅來侇侊侌侎侐侒侓侕侖侘侙侚侜侞侟価侢�".split(""); +for(j = 0; j != D[129].length; ++j) if(D[129][j].charCodeAt(0) !== 0xFFFD) { e[D[129][j]] = 33024 + j; d[33024 + j] = D[129][j];} +D[130] = "����������������������������������������������������������������侤侫侭侰侱侲侳侴侶侷侸侹侺侻侼侽侾俀俁係俆俇俈俉俋俌俍俒俓俔俕俖俙俛俠俢俤俥俧俫俬俰俲俴俵俶俷俹俻俼俽俿倀倁倂倃倄倅倆倇倈倉倊�個倎倐們倓倕倖倗倛倝倞倠倢倣値倧倫倯倰倱倲倳倴倵倶倷倸倹倻倽倿偀偁偂偄偅偆偉偊偋偍偐偑偒偓偔偖偗偘偙偛偝偞偟偠偡偢偣偤偦偧偨偩偪偫偭偮偯偰偱偲偳側偵偸偹偺偼偽傁傂傃傄傆傇傉傊傋傌傎傏傐傑傒傓傔傕傖傗傘備傚傛傜傝傞傟傠傡傢傤傦傪傫傭傮傯傰傱傳傴債傶傷傸傹傼�".split(""); +for(j = 0; j != D[130].length; ++j) if(D[130][j].charCodeAt(0) !== 0xFFFD) { e[D[130][j]] = 33280 + j; d[33280 + j] = D[130][j];} +D[131] = "����������������������������������������������������������������傽傾傿僀僁僂僃僄僅僆僇僈僉僊僋僌働僎僐僑僒僓僔僕僗僘僙僛僜僝僞僟僠僡僢僣僤僥僨僩僪僫僯僰僱僲僴僶僷僸價僺僼僽僾僿儀儁儂儃億儅儈�儉儊儌儍儎儏儐儑儓儔儕儖儗儘儙儚儛儜儝儞償儠儢儣儤儥儦儧儨儩優儫儬儭儮儯儰儱儲儳儴儵儶儷儸儹儺儻儼儽儾兂兇兊兌兎兏児兒兓兗兘兙兛兝兞兟兠兡兣兤兦內兩兪兯兲兺兾兿冃冄円冇冊冋冎冏冐冑冓冔冘冚冝冞冟冡冣冦冧冨冩冪冭冮冴冸冹冺冾冿凁凂凃凅凈凊凍凎凐凒凓凔凕凖凗�".split(""); +for(j = 0; j != D[131].length; ++j) if(D[131][j].charCodeAt(0) !== 0xFFFD) { e[D[131][j]] = 33536 + j; d[33536 + j] = D[131][j];} +D[132] = "����������������������������������������������������������������凘凙凚凜凞凟凢凣凥処凧凨凩凪凬凮凱凲凴凷凾刄刅刉刋刌刏刐刓刔刕刜刞刟刡刢刣別刦刧刪刬刯刱刲刴刵刼刾剄剅剆則剈剉剋剎剏剒剓剕剗剘�剙剚剛剝剟剠剢剣剤剦剨剫剬剭剮剰剱剳剴創剶剷剸剹剺剻剼剾劀劃劄劅劆劇劉劊劋劌劍劎劏劑劒劔劕劖劗劘劙劚劜劤劥劦劧劮劯劰労劵劶劷劸効劺劻劼劽勀勁勂勄勅勆勈勊勌勍勎勏勑勓勔動勗務勚勛勜勝勞勠勡勢勣勥勦勧勨勩勪勫勬勭勮勯勱勲勳勴勵勶勷勸勻勼勽匁匂匃匄匇匉匊匋匌匎�".split(""); +for(j = 0; j != D[132].length; ++j) if(D[132][j].charCodeAt(0) !== 0xFFFD) { e[D[132][j]] = 33792 + j; d[33792 + j] = D[132][j];} +D[133] = "����������������������������������������������������������������匑匒匓匔匘匛匜匞匟匢匤匥匧匨匩匫匬匭匯匰匱匲匳匴匵匶匷匸匼匽區卂卄卆卋卌卍卐協単卙卛卝卥卨卪卬卭卲卶卹卻卼卽卾厀厁厃厇厈厊厎厏�厐厑厒厓厔厖厗厙厛厜厞厠厡厤厧厪厫厬厭厯厰厱厲厳厴厵厷厸厹厺厼厽厾叀參叄叅叆叇収叏叐叒叓叕叚叜叝叞叡叢叧叴叺叾叿吀吂吅吇吋吔吘吙吚吜吢吤吥吪吰吳吶吷吺吽吿呁呂呄呅呇呉呌呍呎呏呑呚呝呞呟呠呡呣呥呧呩呪呫呬呭呮呯呰呴呹呺呾呿咁咃咅咇咈咉咊咍咑咓咗咘咜咞咟咠咡�".split(""); +for(j = 0; j != D[133].length; ++j) if(D[133][j].charCodeAt(0) !== 0xFFFD) { e[D[133][j]] = 34048 + j; d[34048 + j] = D[133][j];} +D[134] = "����������������������������������������������������������������咢咥咮咰咲咵咶咷咹咺咼咾哃哅哊哋哖哘哛哠員哢哣哤哫哬哯哰哱哴哵哶哷哸哹哻哾唀唂唃唄唅唈唊唋唌唍唎唒唓唕唖唗唘唙唚唜唝唞唟唡唥唦�唨唩唫唭唲唴唵唶唸唹唺唻唽啀啂啅啇啈啋啌啍啎問啑啒啓啔啗啘啙啚啛啝啞啟啠啢啣啨啩啫啯啰啱啲啳啴啹啺啽啿喅喆喌喍喎喐喒喓喕喖喗喚喛喞喠喡喢喣喤喥喦喨喩喪喫喬喭單喯喰喲喴営喸喺喼喿嗀嗁嗂嗃嗆嗇嗈嗊嗋嗎嗏嗐嗕嗗嗘嗙嗚嗛嗞嗠嗢嗧嗩嗭嗮嗰嗱嗴嗶嗸嗹嗺嗻嗼嗿嘂嘃嘄嘅�".split(""); +for(j = 0; j != D[134].length; ++j) if(D[134][j].charCodeAt(0) !== 0xFFFD) { e[D[134][j]] = 34304 + j; d[34304 + j] = D[134][j];} +D[135] = "����������������������������������������������������������������嘆嘇嘊嘋嘍嘐嘑嘒嘓嘔嘕嘖嘗嘙嘚嘜嘝嘠嘡嘢嘥嘦嘨嘩嘪嘫嘮嘯嘰嘳嘵嘷嘸嘺嘼嘽嘾噀噁噂噃噄噅噆噇噈噉噊噋噏噐噑噒噓噕噖噚噛噝噞噟噠噡�噣噥噦噧噭噮噯噰噲噳噴噵噷噸噹噺噽噾噿嚀嚁嚂嚃嚄嚇嚈嚉嚊嚋嚌嚍嚐嚑嚒嚔嚕嚖嚗嚘嚙嚚嚛嚜嚝嚞嚟嚠嚡嚢嚤嚥嚦嚧嚨嚩嚪嚫嚬嚭嚮嚰嚱嚲嚳嚴嚵嚶嚸嚹嚺嚻嚽嚾嚿囀囁囂囃囄囅囆囇囈囉囋囌囍囎囏囐囑囒囓囕囖囘囙囜団囥囦囧囨囩囪囬囮囯囲図囶囷囸囻囼圀圁圂圅圇國圌圍圎圏圐圑�".split(""); +for(j = 0; j != D[135].length; ++j) if(D[135][j].charCodeAt(0) !== 0xFFFD) { e[D[135][j]] = 34560 + j; d[34560 + j] = D[135][j];} +D[136] = "����������������������������������������������������������������園圓圔圕圖圗團圙圚圛圝圞圠圡圢圤圥圦圧圫圱圲圴圵圶圷圸圼圽圿坁坃坄坅坆坈坉坋坒坓坔坕坖坘坙坢坣坥坧坬坮坰坱坲坴坵坸坹坺坽坾坿垀�垁垇垈垉垊垍垎垏垐垑垔垕垖垗垘垙垚垜垝垞垟垥垨垪垬垯垰垱垳垵垶垷垹垺垻垼垽垾垿埀埁埄埅埆埇埈埉埊埌埍埐埑埓埖埗埛埜埞埡埢埣埥埦埧埨埩埪埫埬埮埰埱埲埳埵埶執埻埼埾埿堁堃堄堅堈堉堊堌堎堏堐堒堓堔堖堗堘堚堛堜堝堟堢堣堥堦堧堨堩堫堬堭堮堯報堲堳場堶堷堸堹堺堻堼堽�".split(""); +for(j = 0; j != D[136].length; ++j) if(D[136][j].charCodeAt(0) !== 0xFFFD) { e[D[136][j]] = 34816 + j; d[34816 + j] = D[136][j];} +D[137] = "����������������������������������������������������������������堾堿塀塁塂塃塅塆塇塈塉塊塋塎塏塐塒塓塕塖塗塙塚塛塜塝塟塠塡塢塣塤塦塧塨塩塪塭塮塯塰塱塲塳塴塵塶塷塸塹塺塻塼塽塿墂墄墆墇墈墊墋墌�墍墎墏墐墑墔墕墖増墘墛墜墝墠墡墢墣墤墥墦墧墪墫墬墭墮墯墰墱墲墳墴墵墶墷墸墹墺墻墽墾墿壀壂壃壄壆壇壈壉壊壋壌壍壎壏壐壒壓壔壖壗壘壙壚壛壜壝壞壟壠壡壢壣壥壦壧壨壩壪壭壯壱売壴壵壷壸壺壻壼壽壾壿夀夁夃夅夆夈変夊夋夌夎夐夑夒夓夗夘夛夝夞夠夡夢夣夦夨夬夰夲夳夵夶夻�".split(""); +for(j = 0; j != D[137].length; ++j) if(D[137][j].charCodeAt(0) !== 0xFFFD) { e[D[137][j]] = 35072 + j; d[35072 + j] = D[137][j];} +D[138] = "����������������������������������������������������������������夽夾夿奀奃奅奆奊奌奍奐奒奓奙奛奜奝奞奟奡奣奤奦奧奨奩奪奫奬奭奮奯奰奱奲奵奷奺奻奼奾奿妀妅妉妋妌妎妏妐妑妔妕妘妚妛妜妝妟妠妡妢妦�妧妬妭妰妱妳妴妵妶妷妸妺妼妽妿姀姁姂姃姄姅姇姈姉姌姍姎姏姕姖姙姛姞姟姠姡姢姤姦姧姩姪姫姭姮姯姰姱姲姳姴姵姶姷姸姺姼姽姾娀娂娊娋娍娎娏娐娒娔娕娖娗娙娚娛娝娞娡娢娤娦娧娨娪娫娬娭娮娯娰娳娵娷娸娹娺娻娽娾娿婁婂婃婄婅婇婈婋婌婍婎婏婐婑婒婓婔婖婗婘婙婛婜婝婞婟婠�".split(""); +for(j = 0; j != D[138].length; ++j) if(D[138][j].charCodeAt(0) !== 0xFFFD) { e[D[138][j]] = 35328 + j; d[35328 + j] = D[138][j];} +D[139] = "����������������������������������������������������������������婡婣婤婥婦婨婩婫婬婭婮婯婰婱婲婳婸婹婻婼婽婾媀媁媂媃媄媅媆媇媈媉媊媋媌媍媎媏媐媑媓媔媕媖媗媘媙媜媝媞媟媠媡媢媣媤媥媦媧媨媩媫媬�媭媮媯媰媱媴媶媷媹媺媻媼媽媿嫀嫃嫄嫅嫆嫇嫈嫊嫋嫍嫎嫏嫐嫑嫓嫕嫗嫙嫚嫛嫝嫞嫟嫢嫤嫥嫧嫨嫪嫬嫭嫮嫯嫰嫲嫳嫴嫵嫶嫷嫸嫹嫺嫻嫼嫽嫾嫿嬀嬁嬂嬃嬄嬅嬆嬇嬈嬊嬋嬌嬍嬎嬏嬐嬑嬒嬓嬔嬕嬘嬙嬚嬛嬜嬝嬞嬟嬠嬡嬢嬣嬤嬥嬦嬧嬨嬩嬪嬫嬬嬭嬮嬯嬰嬱嬳嬵嬶嬸嬹嬺嬻嬼嬽嬾嬿孁孂孃孄孅孆孇�".split(""); +for(j = 0; j != D[139].length; ++j) if(D[139][j].charCodeAt(0) !== 0xFFFD) { e[D[139][j]] = 35584 + j; d[35584 + j] = D[139][j];} +D[140] = "����������������������������������������������������������������孈孉孊孋孌孍孎孏孒孖孞孠孡孧孨孫孭孮孯孲孴孶孷學孹孻孼孾孿宂宆宊宍宎宐宑宒宔宖実宧宨宩宬宭宮宯宱宲宷宺宻宼寀寁寃寈寉寊寋寍寎寏�寑寔寕寖寗寘寙寚寛寜寠寢寣實寧審寪寫寬寭寯寱寲寳寴寵寶寷寽対尀専尃尅將專尋尌對導尐尒尓尗尙尛尞尟尠尡尣尦尨尩尪尫尭尮尯尰尲尳尵尶尷屃屄屆屇屌屍屒屓屔屖屗屘屚屛屜屝屟屢層屧屨屩屪屫屬屭屰屲屳屴屵屶屷屸屻屼屽屾岀岃岄岅岆岇岉岊岋岎岏岒岓岕岝岞岟岠岡岤岥岦岧岨�".split(""); +for(j = 0; j != D[140].length; ++j) if(D[140][j].charCodeAt(0) !== 0xFFFD) { e[D[140][j]] = 35840 + j; d[35840 + j] = D[140][j];} +D[141] = "����������������������������������������������������������������岪岮岯岰岲岴岶岹岺岻岼岾峀峂峃峅峆峇峈峉峊峌峍峎峏峐峑峓峔峕峖峗峘峚峛峜峝峞峟峠峢峣峧峩峫峬峮峯峱峲峳峴峵島峷峸峹峺峼峽峾峿崀�崁崄崅崈崉崊崋崌崍崏崐崑崒崓崕崗崘崙崚崜崝崟崠崡崢崣崥崨崪崫崬崯崰崱崲崳崵崶崷崸崹崺崻崼崿嵀嵁嵂嵃嵄嵅嵆嵈嵉嵍嵎嵏嵐嵑嵒嵓嵔嵕嵖嵗嵙嵚嵜嵞嵟嵠嵡嵢嵣嵤嵥嵦嵧嵨嵪嵭嵮嵰嵱嵲嵳嵵嵶嵷嵸嵹嵺嵻嵼嵽嵾嵿嶀嶁嶃嶄嶅嶆嶇嶈嶉嶊嶋嶌嶍嶎嶏嶐嶑嶒嶓嶔嶕嶖嶗嶘嶚嶛嶜嶞嶟嶠�".split(""); +for(j = 0; j != D[141].length; ++j) if(D[141][j].charCodeAt(0) !== 0xFFFD) { e[D[141][j]] = 36096 + j; d[36096 + j] = D[141][j];} +D[142] = "����������������������������������������������������������������嶡嶢嶣嶤嶥嶦嶧嶨嶩嶪嶫嶬嶭嶮嶯嶰嶱嶲嶳嶴嶵嶶嶸嶹嶺嶻嶼嶽嶾嶿巀巁巂巃巄巆巇巈巉巊巋巌巎巏巐巑巒巓巔巕巖巗巘巙巚巜巟巠巣巤巪巬巭�巰巵巶巸巹巺巻巼巿帀帄帇帉帊帋帍帎帒帓帗帞帟帠帡帢帣帤帥帨帩帪師帬帯帰帲帳帴帵帶帹帺帾帿幀幁幃幆幇幈幉幊幋幍幎幏幐幑幒幓幖幗幘幙幚幜幝幟幠幣幤幥幦幧幨幩幪幫幬幭幮幯幰幱幵幷幹幾庁庂広庅庈庉庌庍庎庒庘庛庝庡庢庣庤庨庩庪庫庬庮庯庰庱庲庴庺庻庼庽庿廀廁廂廃廄廅�".split(""); +for(j = 0; j != D[142].length; ++j) if(D[142][j].charCodeAt(0) !== 0xFFFD) { e[D[142][j]] = 36352 + j; d[36352 + j] = D[142][j];} +D[143] = "����������������������������������������������������������������廆廇廈廋廌廍廎廏廐廔廕廗廘廙廚廜廝廞廟廠廡廢廣廤廥廦廧廩廫廬廭廮廯廰廱廲廳廵廸廹廻廼廽弅弆弇弉弌弍弎弐弒弔弖弙弚弜弝弞弡弢弣弤�弨弫弬弮弰弲弳弴張弶強弸弻弽弾弿彁彂彃彄彅彆彇彈彉彊彋彌彍彎彏彑彔彙彚彛彜彞彟彠彣彥彧彨彫彮彯彲彴彵彶彸彺彽彾彿徃徆徍徎徏徑従徔徖徚徛徝從徟徠徢徣徤徥徦徧復徫徬徯徰徱徲徳徴徶徸徹徺徻徾徿忀忁忂忇忈忊忋忎忓忔忕忚忛応忞忟忢忣忥忦忨忩忬忯忰忲忳忴忶忷忹忺忼怇�".split(""); +for(j = 0; j != D[143].length; ++j) if(D[143][j].charCodeAt(0) !== 0xFFFD) { e[D[143][j]] = 36608 + j; d[36608 + j] = D[143][j];} +D[144] = "����������������������������������������������������������������怈怉怋怌怐怑怓怗怘怚怞怟怢怣怤怬怭怮怰怱怲怳怴怶怷怸怹怺怽怾恀恄恅恆恇恈恉恊恌恎恏恑恓恔恖恗恘恛恜恞恟恠恡恥恦恮恱恲恴恵恷恾悀�悁悂悅悆悇悈悊悋悎悏悐悑悓悕悗悘悙悜悞悡悢悤悥悧悩悪悮悰悳悵悶悷悹悺悽悾悿惀惁惂惃惄惇惈惉惌惍惎惏惐惒惓惔惖惗惙惛惞惡惢惣惤惥惪惱惲惵惷惸惻惼惽惾惿愂愃愄愅愇愊愋愌愐愑愒愓愔愖愗愘愙愛愜愝愞愡愢愥愨愩愪愬愭愮愯愰愱愲愳愴愵愶愷愸愹愺愻愼愽愾慀慁慂慃慄慅慆�".split(""); +for(j = 0; j != D[144].length; ++j) if(D[144][j].charCodeAt(0) !== 0xFFFD) { e[D[144][j]] = 36864 + j; d[36864 + j] = D[144][j];} +D[145] = "����������������������������������������������������������������慇慉態慍慏慐慒慓慔慖慗慘慙慚慛慜慞慟慠慡慣慤慥慦慩慪慫慬慭慮慯慱慲慳慴慶慸慹慺慻慼慽慾慿憀憁憂憃憄憅憆憇憈憉憊憌憍憏憐憑憒憓憕�憖憗憘憙憚憛憜憞憟憠憡憢憣憤憥憦憪憫憭憮憯憰憱憲憳憴憵憶憸憹憺憻憼憽憿懀懁懃懄懅懆懇應懌懍懎懏懐懓懕懖懗懘懙懚懛懜懝懞懟懠懡懢懣懤懥懧懨懩懪懫懬懭懮懯懰懱懲懳懴懶懷懸懹懺懻懼懽懾戀戁戂戃戄戅戇戉戓戔戙戜戝戞戠戣戦戧戨戩戫戭戯戰戱戲戵戶戸戹戺戻戼扂扄扅扆扊�".split(""); +for(j = 0; j != D[145].length; ++j) if(D[145][j].charCodeAt(0) !== 0xFFFD) { e[D[145][j]] = 37120 + j; d[37120 + j] = D[145][j];} +D[146] = "����������������������������������������������������������������扏扐払扖扗扙扚扜扝扞扟扠扡扢扤扥扨扱扲扴扵扷扸扺扻扽抁抂抃抅抆抇抈抋抌抍抎抏抐抔抙抜抝択抣抦抧抩抪抭抮抯抰抲抳抴抶抷抸抺抾拀拁�拃拋拏拑拕拝拞拠拡拤拪拫拰拲拵拸拹拺拻挀挃挄挅挆挊挋挌挍挏挐挒挓挔挕挗挘挙挜挦挧挩挬挭挮挰挱挳挴挵挶挷挸挻挼挾挿捀捁捄捇捈捊捑捒捓捔捖捗捘捙捚捛捜捝捠捤捥捦捨捪捫捬捯捰捲捳捴捵捸捹捼捽捾捿掁掃掄掅掆掋掍掑掓掔掕掗掙掚掛掜掝掞掟採掤掦掫掯掱掲掵掶掹掻掽掿揀�".split(""); +for(j = 0; j != D[146].length; ++j) if(D[146][j].charCodeAt(0) !== 0xFFFD) { e[D[146][j]] = 37376 + j; d[37376 + j] = D[146][j];} +D[147] = "����������������������������������������������������������������揁揂揃揅揇揈揊揋揌揑揓揔揕揗揘揙揚換揜揝揟揢揤揥揦揧揨揫揬揮揯揰揱揳揵揷揹揺揻揼揾搃搄搆搇搈搉搊損搎搑搒搕搖搗搘搙搚搝搟搢搣搤�搥搧搨搩搫搮搯搰搱搲搳搵搶搷搸搹搻搼搾摀摂摃摉摋摌摍摎摏摐摑摓摕摖摗摙摚摛摜摝摟摠摡摢摣摤摥摦摨摪摫摬摮摯摰摱摲摳摴摵摶摷摻摼摽摾摿撀撁撃撆撈撉撊撋撌撍撎撏撐撓撔撗撘撚撛撜撝撟撠撡撢撣撥撦撧撨撪撫撯撱撲撳撴撶撹撻撽撾撿擁擃擄擆擇擈擉擊擋擌擏擑擓擔擕擖擙據�".split(""); +for(j = 0; j != D[147].length; ++j) if(D[147][j].charCodeAt(0) !== 0xFFFD) { e[D[147][j]] = 37632 + j; d[37632 + j] = D[147][j];} +D[148] = "����������������������������������������������������������������擛擜擝擟擠擡擣擥擧擨擩擪擫擬擭擮擯擰擱擲擳擴擵擶擷擸擹擺擻擼擽擾擿攁攂攃攄攅攆攇攈攊攋攌攍攎攏攐攑攓攔攕攖攗攙攚攛攜攝攞攟攠攡�攢攣攤攦攧攨攩攪攬攭攰攱攲攳攷攺攼攽敀敁敂敃敄敆敇敊敋敍敎敐敒敓敔敗敘敚敜敟敠敡敤敥敧敨敩敪敭敮敯敱敳敵敶數敹敺敻敼敽敾敿斀斁斂斃斄斅斆斈斉斊斍斎斏斒斔斕斖斘斚斝斞斠斢斣斦斨斪斬斮斱斲斳斴斵斶斷斸斺斻斾斿旀旂旇旈旉旊旍旐旑旓旔旕旘旙旚旛旜旝旞旟旡旣旤旪旫�".split(""); +for(j = 0; j != D[148].length; ++j) if(D[148][j].charCodeAt(0) !== 0xFFFD) { e[D[148][j]] = 37888 + j; d[37888 + j] = D[148][j];} +D[149] = "����������������������������������������������������������������旲旳旴旵旸旹旻旼旽旾旿昁昄昅昇昈昉昋昍昐昑昒昖昗昘昚昛昜昞昡昢昣昤昦昩昪昫昬昮昰昲昳昷昸昹昺昻昽昿晀時晄晅晆晇晈晉晊晍晎晐晑晘�晙晛晜晝晞晠晢晣晥晧晩晪晫晬晭晱晲晳晵晸晹晻晼晽晿暀暁暃暅暆暈暉暊暋暍暎暏暐暒暓暔暕暘暙暚暛暜暞暟暠暡暢暣暤暥暦暩暪暫暬暭暯暰暱暲暳暵暶暷暸暺暻暼暽暿曀曁曂曃曄曅曆曇曈曉曊曋曌曍曎曏曐曑曒曓曔曕曖曗曘曚曞曟曠曡曢曣曤曥曧曨曪曫曬曭曮曯曱曵曶書曺曻曽朁朂會�".split(""); +for(j = 0; j != D[149].length; ++j) if(D[149][j].charCodeAt(0) !== 0xFFFD) { e[D[149][j]] = 38144 + j; d[38144 + j] = D[149][j];} +D[150] = "����������������������������������������������������������������朄朅朆朇朌朎朏朑朒朓朖朘朙朚朜朞朠朡朢朣朤朥朧朩朮朰朲朳朶朷朸朹朻朼朾朿杁杄杅杇杊杋杍杒杔杕杗杘杙杚杛杝杢杣杤杦杧杫杬杮東杴杶�杸杹杺杻杽枀枂枃枅枆枈枊枌枍枎枏枑枒枓枔枖枙枛枟枠枡枤枦枩枬枮枱枲枴枹枺枻枼枽枾枿柀柂柅柆柇柈柉柊柋柌柍柎柕柖柗柛柟柡柣柤柦柧柨柪柫柭柮柲柵柶柷柸柹柺査柼柾栁栂栃栄栆栍栐栒栔栕栘栙栚栛栜栞栟栠栢栣栤栥栦栧栨栫栬栭栮栯栰栱栴栵栶栺栻栿桇桋桍桏桒桖桗桘桙桚桛�".split(""); +for(j = 0; j != D[150].length; ++j) if(D[150][j].charCodeAt(0) !== 0xFFFD) { e[D[150][j]] = 38400 + j; d[38400 + j] = D[150][j];} +D[151] = "����������������������������������������������������������������桜桝桞桟桪桬桭桮桯桰桱桲桳桵桸桹桺桻桼桽桾桿梀梂梄梇梈梉梊梋梌梍梎梐梑梒梔梕梖梘梙梚梛梜條梞梟梠梡梣梤梥梩梪梫梬梮梱梲梴梶梷梸�梹梺梻梼梽梾梿棁棃棄棅棆棇棈棊棌棎棏棐棑棓棔棖棗棙棛棜棝棞棟棡棢棤棥棦棧棨棩棪棫棬棭棯棲棳棴棶棷棸棻棽棾棿椀椂椃椄椆椇椈椉椊椌椏椑椓椔椕椖椗椘椙椚椛検椝椞椡椢椣椥椦椧椨椩椪椫椬椮椯椱椲椳椵椶椷椸椺椻椼椾楀楁楃楄楅楆楇楈楉楊楋楌楍楎楏楐楑楒楓楕楖楘楙楛楜楟�".split(""); +for(j = 0; j != D[151].length; ++j) if(D[151][j].charCodeAt(0) !== 0xFFFD) { e[D[151][j]] = 38656 + j; d[38656 + j] = D[151][j];} +D[152] = "����������������������������������������������������������������楡楢楤楥楧楨楩楪楬業楯楰楲楳楴極楶楺楻楽楾楿榁榃榅榊榋榌榎榏榐榑榒榓榖榗榙榚榝榞榟榠榡榢榣榤榥榦榩榪榬榮榯榰榲榳榵榶榸榹榺榼榽�榾榿槀槂槃槄槅槆槇槈槉構槍槏槑槒槓槕槖槗様槙槚槜槝槞槡槢槣槤槥槦槧槨槩槪槫槬槮槯槰槱槳槴槵槶槷槸槹槺槻槼槾樀樁樂樃樄樅樆樇樈樉樋樌樍樎樏樐樑樒樓樔樕樖標樚樛樜樝樞樠樢樣樤樥樦樧権樫樬樭樮樰樲樳樴樶樷樸樹樺樻樼樿橀橁橂橃橅橆橈橉橊橋橌橍橎橏橑橒橓橔橕橖橗橚�".split(""); +for(j = 0; j != D[152].length; ++j) if(D[152][j].charCodeAt(0) !== 0xFFFD) { e[D[152][j]] = 38912 + j; d[38912 + j] = D[152][j];} +D[153] = "����������������������������������������������������������������橜橝橞機橠橢橣橤橦橧橨橩橪橫橬橭橮橯橰橲橳橴橵橶橷橸橺橻橽橾橿檁檂檃檅檆檇檈檉檊檋檌檍檏檒檓檔檕檖檘檙檚檛檜檝檞檟檡檢檣檤檥檦�檧檨檪檭檮檯檰檱檲檳檴檵檶檷檸檹檺檻檼檽檾檿櫀櫁櫂櫃櫄櫅櫆櫇櫈櫉櫊櫋櫌櫍櫎櫏櫐櫑櫒櫓櫔櫕櫖櫗櫘櫙櫚櫛櫜櫝櫞櫟櫠櫡櫢櫣櫤櫥櫦櫧櫨櫩櫪櫫櫬櫭櫮櫯櫰櫱櫲櫳櫴櫵櫶櫷櫸櫹櫺櫻櫼櫽櫾櫿欀欁欂欃欄欅欆欇欈欉權欋欌欍欎欏欐欑欒欓欔欕欖欗欘欙欚欛欜欝欞欟欥欦欨欩欪欫欬欭欮�".split(""); +for(j = 0; j != D[153].length; ++j) if(D[153][j].charCodeAt(0) !== 0xFFFD) { e[D[153][j]] = 39168 + j; d[39168 + j] = D[153][j];} +D[154] = "����������������������������������������������������������������欯欰欱欳欴欵欶欸欻欼欽欿歀歁歂歄歅歈歊歋歍歎歏歐歑歒歓歔歕歖歗歘歚歛歜歝歞歟歠歡歨歩歫歬歭歮歯歰歱歲歳歴歵歶歷歸歺歽歾歿殀殅殈�殌殎殏殐殑殔殕殗殘殙殜殝殞殟殠殢殣殤殥殦殧殨殩殫殬殭殮殯殰殱殲殶殸殹殺殻殼殽殾毀毃毄毆毇毈毉毊毌毎毐毑毘毚毜毝毞毟毠毢毣毤毥毦毧毨毩毬毭毮毰毱毲毴毶毷毸毺毻毼毾毿氀氁氂氃氄氈氉氊氋氌氎氒気氜氝氞氠氣氥氫氬氭氱氳氶氷氹氺氻氼氾氿汃汄汅汈汋汌汍汎汏汑汒汓汖汘�".split(""); +for(j = 0; j != D[154].length; ++j) if(D[154][j].charCodeAt(0) !== 0xFFFD) { e[D[154][j]] = 39424 + j; d[39424 + j] = D[154][j];} +D[155] = "����������������������������������������������������������������汙汚汢汣汥汦汧汫汬汭汮汯汱汳汵汷汸決汻汼汿沀沄沇沊沋沍沎沑沒沕沖沗沘沚沜沝沞沠沢沨沬沯沰沴沵沶沷沺泀況泂泃泆泇泈泋泍泎泏泑泒泘�泙泚泜泝泟泤泦泧泩泬泭泲泴泹泿洀洂洃洅洆洈洉洊洍洏洐洑洓洔洕洖洘洜洝洟洠洡洢洣洤洦洨洩洬洭洯洰洴洶洷洸洺洿浀浂浄浉浌浐浕浖浗浘浛浝浟浡浢浤浥浧浨浫浬浭浰浱浲浳浵浶浹浺浻浽浾浿涀涁涃涄涆涇涊涋涍涏涐涒涖涗涘涙涚涜涢涥涬涭涰涱涳涴涶涷涹涺涻涼涽涾淁淂淃淈淉淊�".split(""); +for(j = 0; j != D[155].length; ++j) if(D[155][j].charCodeAt(0) !== 0xFFFD) { e[D[155][j]] = 39680 + j; d[39680 + j] = D[155][j];} +D[156] = "����������������������������������������������������������������淍淎淏淐淒淓淔淕淗淚淛淜淟淢淣淥淧淨淩淪淭淯淰淲淴淵淶淸淺淽淾淿渀渁渂渃渄渆渇済渉渋渏渒渓渕渘渙減渜渞渟渢渦渧渨渪測渮渰渱渳渵�渶渷渹渻渼渽渾渿湀湁湂湅湆湇湈湉湊湋湌湏湐湑湒湕湗湙湚湜湝湞湠湡湢湣湤湥湦湧湨湩湪湬湭湯湰湱湲湳湴湵湶湷湸湹湺湻湼湽満溁溂溄溇溈溊溋溌溍溎溑溒溓溔溕準溗溙溚溛溝溞溠溡溣溤溦溨溩溫溬溭溮溰溳溵溸溹溼溾溿滀滃滄滅滆滈滉滊滌滍滎滐滒滖滘滙滛滜滝滣滧滪滫滬滭滮滯�".split(""); +for(j = 0; j != D[156].length; ++j) if(D[156][j].charCodeAt(0) !== 0xFFFD) { e[D[156][j]] = 39936 + j; d[39936 + j] = D[156][j];} +D[157] = "����������������������������������������������������������������滰滱滲滳滵滶滷滸滺滻滼滽滾滿漀漁漃漄漅漇漈漊漋漌漍漎漐漑漒漖漗漘漙漚漛漜漝漞漟漡漢漣漥漦漧漨漬漮漰漲漴漵漷漸漹漺漻漼漽漿潀潁潂�潃潄潅潈潉潊潌潎潏潐潑潒潓潔潕潖潗潙潚潛潝潟潠潡潣潤潥潧潨潩潪潫潬潯潰潱潳潵潶潷潹潻潽潾潿澀澁澂澃澅澆澇澊澋澏澐澑澒澓澔澕澖澗澘澙澚澛澝澞澟澠澢澣澤澥澦澨澩澪澫澬澭澮澯澰澱澲澴澵澷澸澺澻澼澽澾澿濁濃濄濅濆濇濈濊濋濌濍濎濏濐濓濔濕濖濗濘濙濚濛濜濝濟濢濣濤濥�".split(""); +for(j = 0; j != D[157].length; ++j) if(D[157][j].charCodeAt(0) !== 0xFFFD) { e[D[157][j]] = 40192 + j; d[40192 + j] = D[157][j];} +D[158] = "����������������������������������������������������������������濦濧濨濩濪濫濬濭濰濱濲濳濴濵濶濷濸濹濺濻濼濽濾濿瀀瀁瀂瀃瀄瀅瀆瀇瀈瀉瀊瀋瀌瀍瀎瀏瀐瀒瀓瀔瀕瀖瀗瀘瀙瀜瀝瀞瀟瀠瀡瀢瀤瀥瀦瀧瀨瀩瀪�瀫瀬瀭瀮瀯瀰瀱瀲瀳瀴瀶瀷瀸瀺瀻瀼瀽瀾瀿灀灁灂灃灄灅灆灇灈灉灊灋灍灎灐灑灒灓灔灕灖灗灘灙灚灛灜灝灟灠灡灢灣灤灥灦灧灨灩灪灮灱灲灳灴灷灹灺灻災炁炂炃炄炆炇炈炋炌炍炏炐炑炓炗炘炚炛炞炟炠炡炢炣炤炥炦炧炨炩炪炰炲炴炵炶為炾炿烄烅烆烇烉烋烌烍烎烏烐烑烒烓烔烕烖烗烚�".split(""); +for(j = 0; j != D[158].length; ++j) if(D[158][j].charCodeAt(0) !== 0xFFFD) { e[D[158][j]] = 40448 + j; d[40448 + j] = D[158][j];} +D[159] = "����������������������������������������������������������������烜烝烞烠烡烢烣烥烪烮烰烱烲烳烴烵烶烸烺烻烼烾烿焀焁焂焃焄焅焆焇焈焋焌焍焎焏焑焒焔焗焛焜焝焞焟焠無焢焣焤焥焧焨焩焪焫焬焭焮焲焳焴�焵焷焸焹焺焻焼焽焾焿煀煁煂煃煄煆煇煈煉煋煍煏煐煑煒煓煔煕煖煗煘煙煚煛煝煟煠煡煢煣煥煩煪煫煬煭煯煰煱煴煵煶煷煹煻煼煾煿熀熁熂熃熅熆熇熈熉熋熌熍熎熐熑熒熓熕熖熗熚熛熜熝熞熡熢熣熤熥熦熧熩熪熫熭熮熯熰熱熲熴熶熷熸熺熻熼熽熾熿燀燁燂燄燅燆燇燈燉燊燋燌燍燏燐燑燒燓�".split(""); +for(j = 0; j != D[159].length; ++j) if(D[159][j].charCodeAt(0) !== 0xFFFD) { e[D[159][j]] = 40704 + j; d[40704 + j] = D[159][j];} +D[160] = "����������������������������������������������������������������燖燗燘燙燚燛燜燝燞營燡燢燣燤燦燨燩燪燫燬燭燯燰燱燲燳燴燵燶燷燸燺燻燼燽燾燿爀爁爂爃爄爅爇爈爉爊爋爌爍爎爏爐爑爒爓爔爕爖爗爘爙爚�爛爜爞爟爠爡爢爣爤爥爦爧爩爫爭爮爯爲爳爴爺爼爾牀牁牂牃牄牅牆牉牊牋牎牏牐牑牓牔牕牗牘牚牜牞牠牣牤牥牨牪牫牬牭牰牱牳牴牶牷牸牻牼牽犂犃犅犆犇犈犉犌犎犐犑犓犔犕犖犗犘犙犚犛犜犝犞犠犡犢犣犤犥犦犧犨犩犪犫犮犱犲犳犵犺犻犼犽犾犿狀狅狆狇狉狊狋狌狏狑狓狔狕狖狘狚狛�".split(""); +for(j = 0; j != D[160].length; ++j) if(D[160][j].charCodeAt(0) !== 0xFFFD) { e[D[160][j]] = 40960 + j; d[40960 + j] = D[160][j];} +D[161] = "����������������������������������������������������������������� 、。·ˉˇ¨〃々—~‖…‘’“”〔〕〈〉《》「」『』〖〗【】±×÷∶∧∨∑∏∪∩∈∷√⊥∥∠⌒⊙∫∮≡≌≈∽∝≠≮≯≤≥∞∵∴♂♀°′″℃$¤¢£‰§№☆★○●◎◇◆□■△▲※→←↑↓〓�".split(""); +for(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];} +D[162] = "�����������������������������������������������������������������ⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹ⒈⒉⒊⒋⒌⒍⒎⒏⒐⒑⒒⒓⒔⒕⒖⒗⒘⒙⒚⒛⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽⑾⑿⒀⒁⒂⒃⒄⒅⒆⒇①②③④⑤⑥⑦⑧⑨⑩€㈠㈡㈢㈣㈤㈥㈦㈧㈨㈩ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫ�".split(""); +for(j = 0; j != D[162].length; ++j) if(D[162][j].charCodeAt(0) !== 0xFFFD) { e[D[162][j]] = 41472 + j; d[41472 + j] = D[162][j];} +D[163] = "�����������������������������������������������������������������!"#¥%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|} ̄�".split(""); +for(j = 0; j != D[163].length; ++j) if(D[163][j].charCodeAt(0) !== 0xFFFD) { e[D[163][j]] = 41728 + j; d[41728 + j] = D[163][j];} +D[164] = "�����������������������������������������������������������������ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをん�".split(""); +for(j = 0; j != D[164].length; ++j) if(D[164][j].charCodeAt(0) !== 0xFFFD) { e[D[164][j]] = 41984 + j; d[41984 + j] = D[164][j];} +D[165] = "�����������������������������������������������������������������ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶ�".split(""); +for(j = 0; j != D[165].length; ++j) if(D[165][j].charCodeAt(0) !== 0xFFFD) { e[D[165][j]] = 42240 + j; d[42240 + j] = D[165][j];} +D[166] = "�����������������������������������������������������������������ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩαβγδεζηθικλμνξοπρστυφχψω︵︶︹︺︿﹀︽︾﹁﹂﹃﹄︻︼︷︸︱︳︴�".split(""); +for(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];} +D[167] = "�����������������������������������������������������������������АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдеёжзийклмнопрстуфхцчшщъыьэюя�".split(""); +for(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];} +D[168] = "����������������������������������������������������������������ˊˋ˙–―‥‵℅℉↖↗↘↙∕∟∣≒≦≧⊿═║╒╓╔╕╖╗╘╙╚╛╜╝╞╟╠╡╢╣╤╥╦╧╨╩╪╫╬╭╮╯╰╱╲╳▁▂▃▄▅▆▇�█▉▊▋▌▍▎▏▓▔▕▼▽◢◣◤◥☉⊕〒〝〞āáǎàēéěèīíǐìōóǒòūúǔùǖǘǚǜüêɑńňǹɡㄅㄆㄇㄈㄉㄊㄋㄌㄍㄎㄏㄐㄑㄒㄓㄔㄕㄖㄗㄘㄙㄚㄛㄜㄝㄞㄟㄠㄡㄢㄣㄤㄥㄦㄧㄨㄩ�".split(""); +for(j = 0; j != D[168].length; ++j) if(D[168][j].charCodeAt(0) !== 0xFFFD) { e[D[168][j]] = 43008 + j; d[43008 + j] = D[168][j];} +D[169] = "����������������������������������������������������������������〡〢〣〤〥〦〧〨〩㊣㎎㎏㎜㎝㎞㎡㏄㏎㏑㏒㏕︰¬¦℡㈱‐ー゛゜ヽヾ〆ゝゞ﹉﹊﹋﹌﹍﹎﹏﹐﹑﹒﹔﹕﹖﹗﹙﹚﹛﹜﹝﹞﹟﹠﹡�﹢﹣﹤﹥﹦﹨﹩﹪﹫〾⿰⿱⿲⿳⿴⿵⿶⿷⿸⿹⿺⿻〇─━│┃┄┅┆┇┈┉┊┋┌┍┎┏┐┑┒┓└┕┖┗┘┙┚┛├┝┞┟┠┡┢┣┤┥┦┧┨┩┪┫┬┭┮┯┰┱┲┳┴┵┶┷┸┹┺┻┼┽┾┿╀╁╂╃╄╅╆╇╈╉╊╋�".split(""); +for(j = 0; j != D[169].length; ++j) if(D[169][j].charCodeAt(0) !== 0xFFFD) { e[D[169][j]] = 43264 + j; d[43264 + j] = D[169][j];} +D[170] = "����������������������������������������������������������������狜狝狟狢狣狤狥狦狧狪狫狵狶狹狽狾狿猀猂猄猅猆猇猈猉猋猌猍猏猐猑猒猔猘猙猚猟猠猣猤猦猧猨猭猯猰猲猳猵猶猺猻猼猽獀獁獂獃獄獅獆獇獈�獉獊獋獌獎獏獑獓獔獕獖獘獙獚獛獜獝獞獟獡獢獣獤獥獦獧獨獩獪獫獮獰獱�".split(""); +for(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];} +D[171] = "����������������������������������������������������������������獲獳獴獵獶獷獸獹獺獻獼獽獿玀玁玂玃玅玆玈玊玌玍玏玐玒玓玔玕玗玘玙玚玜玝玞玠玡玣玤玥玦玧玨玪玬玭玱玴玵玶玸玹玼玽玾玿珁珃珄珅珆珇�珋珌珎珒珓珔珕珖珗珘珚珛珜珝珟珡珢珣珤珦珨珪珫珬珮珯珰珱珳珴珵珶珷�".split(""); +for(j = 0; j != D[171].length; ++j) if(D[171][j].charCodeAt(0) !== 0xFFFD) { e[D[171][j]] = 43776 + j; d[43776 + j] = D[171][j];} +D[172] = "����������������������������������������������������������������珸珹珺珻珼珽現珿琀琁琂琄琇琈琋琌琍琎琑琒琓琔琕琖琗琘琙琜琝琞琟琠琡琣琤琧琩琫琭琯琱琲琷琸琹琺琻琽琾琿瑀瑂瑃瑄瑅瑆瑇瑈瑉瑊瑋瑌瑍�瑎瑏瑐瑑瑒瑓瑔瑖瑘瑝瑠瑡瑢瑣瑤瑥瑦瑧瑨瑩瑪瑫瑬瑮瑯瑱瑲瑳瑴瑵瑸瑹瑺�".split(""); +for(j = 0; j != D[172].length; ++j) if(D[172][j].charCodeAt(0) !== 0xFFFD) { e[D[172][j]] = 44032 + j; d[44032 + j] = D[172][j];} +D[173] = "����������������������������������������������������������������瑻瑼瑽瑿璂璄璅璆璈璉璊璌璍璏璑璒璓璔璕璖璗璘璙璚璛璝璟璠璡璢璣璤璥璦璪璫璬璭璮璯環璱璲璳璴璵璶璷璸璹璻璼璽璾璿瓀瓁瓂瓃瓄瓅瓆瓇�瓈瓉瓊瓋瓌瓍瓎瓏瓐瓑瓓瓔瓕瓖瓗瓘瓙瓚瓛瓝瓟瓡瓥瓧瓨瓩瓪瓫瓬瓭瓰瓱瓲�".split(""); +for(j = 0; j != D[173].length; ++j) if(D[173][j].charCodeAt(0) !== 0xFFFD) { e[D[173][j]] = 44288 + j; d[44288 + j] = D[173][j];} +D[174] = "����������������������������������������������������������������瓳瓵瓸瓹瓺瓻瓼瓽瓾甀甁甂甃甅甆甇甈甉甊甋甌甎甐甒甔甕甖甗甛甝甞甠甡產産甤甦甧甪甮甴甶甹甼甽甿畁畂畃畄畆畇畉畊畍畐畑畒畓畕畖畗畘�畝畞畟畠畡畢畣畤畧畨畩畫畬畭畮畯異畱畳畵當畷畺畻畼畽畾疀疁疂疄疅疇�".split(""); +for(j = 0; j != D[174].length; ++j) if(D[174][j].charCodeAt(0) !== 0xFFFD) { e[D[174][j]] = 44544 + j; d[44544 + j] = D[174][j];} +D[175] = "����������������������������������������������������������������疈疉疊疌疍疎疐疓疕疘疛疜疞疢疦疧疨疩疪疭疶疷疺疻疿痀痁痆痋痌痎痏痐痑痓痗痙痚痜痝痟痠痡痥痩痬痭痮痯痲痳痵痶痷痸痺痻痽痾瘂瘄瘆瘇�瘈瘉瘋瘍瘎瘏瘑瘒瘓瘔瘖瘚瘜瘝瘞瘡瘣瘧瘨瘬瘮瘯瘱瘲瘶瘷瘹瘺瘻瘽癁療癄�".split(""); +for(j = 0; j != D[175].length; ++j) if(D[175][j].charCodeAt(0) !== 0xFFFD) { e[D[175][j]] = 44800 + j; d[44800 + j] = D[175][j];} +D[176] = "����������������������������������������������������������������癅癆癇癈癉癊癋癎癏癐癑癒癓癕癗癘癙癚癛癝癟癠癡癢癤癥癦癧癨癩癪癬癭癮癰癱癲癳癴癵癶癷癹発發癿皀皁皃皅皉皊皌皍皏皐皒皔皕皗皘皚皛�皜皝皞皟皠皡皢皣皥皦皧皨皩皪皫皬皭皯皰皳皵皶皷皸皹皺皻皼皽皾盀盁盃啊阿埃挨哎唉哀皑癌蔼矮艾碍爱隘鞍氨安俺按暗岸胺案肮昂盎凹敖熬翱袄傲奥懊澳芭捌扒叭吧笆八疤巴拔跋靶把耙坝霸罢爸白柏百摆佰败拜稗斑班搬扳般颁板版扮拌伴瓣半办绊邦帮梆榜膀绑棒磅蚌镑傍谤苞胞包褒剥�".split(""); +for(j = 0; j != D[176].length; ++j) if(D[176][j].charCodeAt(0) !== 0xFFFD) { e[D[176][j]] = 45056 + j; d[45056 + j] = D[176][j];} +D[177] = "����������������������������������������������������������������盄盇盉盋盌盓盕盙盚盜盝盞盠盡盢監盤盦盧盨盩盪盫盬盭盰盳盵盶盷盺盻盽盿眀眂眃眅眆眊県眎眏眐眑眒眓眔眕眖眗眘眛眜眝眞眡眣眤眥眧眪眫�眬眮眰眱眲眳眴眹眻眽眾眿睂睄睅睆睈睉睊睋睌睍睎睏睒睓睔睕睖睗睘睙睜薄雹保堡饱宝抱报暴豹鲍爆杯碑悲卑北辈背贝钡倍狈备惫焙被奔苯本笨崩绷甭泵蹦迸逼鼻比鄙笔彼碧蓖蔽毕毙毖币庇痹闭敝弊必辟壁臂避陛鞭边编贬扁便变卞辨辩辫遍标彪膘表鳖憋别瘪彬斌濒滨宾摈兵冰柄丙秉饼炳�".split(""); +for(j = 0; j != D[177].length; ++j) if(D[177][j].charCodeAt(0) !== 0xFFFD) { e[D[177][j]] = 45312 + j; d[45312 + j] = D[177][j];} +D[178] = "����������������������������������������������������������������睝睞睟睠睤睧睩睪睭睮睯睰睱睲睳睴睵睶睷睸睺睻睼瞁瞂瞃瞆瞇瞈瞉瞊瞋瞏瞐瞓瞔瞕瞖瞗瞘瞙瞚瞛瞜瞝瞞瞡瞣瞤瞦瞨瞫瞭瞮瞯瞱瞲瞴瞶瞷瞸瞹瞺�瞼瞾矀矁矂矃矄矅矆矇矈矉矊矋矌矎矏矐矑矒矓矔矕矖矘矙矚矝矞矟矠矡矤病并玻菠播拨钵波博勃搏铂箔伯帛舶脖膊渤泊驳捕卜哺补埠不布步簿部怖擦猜裁材才财睬踩采彩菜蔡餐参蚕残惭惨灿苍舱仓沧藏操糙槽曹草厕策侧册测层蹭插叉茬茶查碴搽察岔差诧拆柴豺搀掺蝉馋谗缠铲产阐颤昌猖�".split(""); +for(j = 0; j != D[178].length; ++j) if(D[178][j].charCodeAt(0) !== 0xFFFD) { e[D[178][j]] = 45568 + j; d[45568 + j] = D[178][j];} +D[179] = "����������������������������������������������������������������矦矨矪矯矰矱矲矴矵矷矹矺矻矼砃砄砅砆砇砈砊砋砎砏砐砓砕砙砛砞砠砡砢砤砨砪砫砮砯砱砲砳砵砶砽砿硁硂硃硄硆硈硉硊硋硍硏硑硓硔硘硙硚�硛硜硞硟硠硡硢硣硤硥硦硧硨硩硯硰硱硲硳硴硵硶硸硹硺硻硽硾硿碀碁碂碃场尝常长偿肠厂敞畅唱倡超抄钞朝嘲潮巢吵炒车扯撤掣彻澈郴臣辰尘晨忱沉陈趁衬撑称城橙成呈乘程惩澄诚承逞骋秤吃痴持匙池迟弛驰耻齿侈尺赤翅斥炽充冲虫崇宠抽酬畴踌稠愁筹仇绸瞅丑臭初出橱厨躇锄雏滁除楚�".split(""); +for(j = 0; j != D[179].length; ++j) if(D[179][j].charCodeAt(0) !== 0xFFFD) { e[D[179][j]] = 45824 + j; d[45824 + j] = D[179][j];} +D[180] = "����������������������������������������������������������������碄碅碆碈碊碋碏碐碒碔碕碖碙碝碞碠碢碤碦碨碩碪碫碬碭碮碯碵碶碷碸確碻碼碽碿磀磂磃磄磆磇磈磌磍磎磏磑磒磓磖磗磘磚磛磜磝磞磟磠磡磢磣�磤磥磦磧磩磪磫磭磮磯磰磱磳磵磶磸磹磻磼磽磾磿礀礂礃礄礆礇礈礉礊礋礌础储矗搐触处揣川穿椽传船喘串疮窗幢床闯创吹炊捶锤垂春椿醇唇淳纯蠢戳绰疵茨磁雌辞慈瓷词此刺赐次聪葱囱匆从丛凑粗醋簇促蹿篡窜摧崔催脆瘁粹淬翠村存寸磋撮搓措挫错搭达答瘩打大呆歹傣戴带殆代贷袋待逮�".split(""); +for(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];} +D[181] = "����������������������������������������������������������������礍礎礏礐礑礒礔礕礖礗礘礙礚礛礜礝礟礠礡礢礣礥礦礧礨礩礪礫礬礭礮礯礰礱礲礳礵礶礷礸礹礽礿祂祃祄祅祇祊祋祌祍祎祏祐祑祒祔祕祘祙祡祣�祤祦祩祪祫祬祮祰祱祲祳祴祵祶祹祻祼祽祾祿禂禃禆禇禈禉禋禌禍禎禐禑禒怠耽担丹单郸掸胆旦氮但惮淡诞弹蛋当挡党荡档刀捣蹈倒岛祷导到稻悼道盗德得的蹬灯登等瞪凳邓堤低滴迪敌笛狄涤翟嫡抵底地蒂第帝弟递缔颠掂滇碘点典靛垫电佃甸店惦奠淀殿碉叼雕凋刁掉吊钓调跌爹碟蝶迭谍叠�".split(""); +for(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];} +D[182] = "����������������������������������������������������������������禓禔禕禖禗禘禙禛禜禝禞禟禠禡禢禣禤禥禦禨禩禪禫禬禭禮禯禰禱禲禴禵禶禷禸禼禿秂秄秅秇秈秊秌秎秏秐秓秔秖秗秙秚秛秜秝秞秠秡秢秥秨秪�秬秮秱秲秳秴秵秶秷秹秺秼秾秿稁稄稅稇稈稉稊稌稏稐稑稒稓稕稖稘稙稛稜丁盯叮钉顶鼎锭定订丢东冬董懂动栋侗恫冻洞兜抖斗陡豆逗痘都督毒犊独读堵睹赌杜镀肚度渡妒端短锻段断缎堆兑队对墩吨蹲敦顿囤钝盾遁掇哆多夺垛躲朵跺舵剁惰堕蛾峨鹅俄额讹娥恶厄扼遏鄂饿恩而儿耳尔饵洱二�".split(""); +for(j = 0; j != D[182].length; ++j) if(D[182][j].charCodeAt(0) !== 0xFFFD) { e[D[182][j]] = 46592 + j; d[46592 + j] = D[182][j];} +D[183] = "����������������������������������������������������������������稝稟稡稢稤稥稦稧稨稩稪稫稬稭種稯稰稱稲稴稵稶稸稺稾穀穁穂穃穄穅穇穈穉穊穋穌積穎穏穐穒穓穔穕穖穘穙穚穛穜穝穞穟穠穡穢穣穤穥穦穧穨�穩穪穫穬穭穮穯穱穲穳穵穻穼穽穾窂窅窇窉窊窋窌窎窏窐窓窔窙窚窛窞窡窢贰发罚筏伐乏阀法珐藩帆番翻樊矾钒繁凡烦反返范贩犯饭泛坊芳方肪房防妨仿访纺放菲非啡飞肥匪诽吠肺废沸费芬酚吩氛分纷坟焚汾粉奋份忿愤粪丰封枫蜂峰锋风疯烽逢冯缝讽奉凤佛否夫敷肤孵扶拂辐幅氟符伏俘服�".split(""); +for(j = 0; j != D[183].length; ++j) if(D[183][j].charCodeAt(0) !== 0xFFFD) { e[D[183][j]] = 46848 + j; d[46848 + j] = D[183][j];} +D[184] = "����������������������������������������������������������������窣窤窧窩窪窫窮窯窰窱窲窴窵窶窷窸窹窺窻窼窽窾竀竁竂竃竄竅竆竇竈竉竊竌竍竎竏竐竑竒竓竔竕竗竘竚竛竜竝竡竢竤竧竨竩竪竫竬竮竰竱竲竳�竴竵競竷竸竻竼竾笀笁笂笅笇笉笌笍笎笐笒笓笖笗笘笚笜笝笟笡笢笣笧笩笭浮涪福袱弗甫抚辅俯釜斧脯腑府腐赴副覆赋复傅付阜父腹负富讣附妇缚咐噶嘎该改概钙盖溉干甘杆柑竿肝赶感秆敢赣冈刚钢缸肛纲岗港杠篙皋高膏羔糕搞镐稿告哥歌搁戈鸽胳疙割革葛格蛤阁隔铬个各给根跟耕更庚羹�".split(""); +for(j = 0; j != D[184].length; ++j) if(D[184][j].charCodeAt(0) !== 0xFFFD) { e[D[184][j]] = 47104 + j; d[47104 + j] = D[184][j];} +D[185] = "����������������������������������������������������������������笯笰笲笴笵笶笷笹笻笽笿筀筁筂筃筄筆筈筊筍筎筓筕筗筙筜筞筟筡筣筤筥筦筧筨筩筪筫筬筭筯筰筳筴筶筸筺筼筽筿箁箂箃箄箆箇箈箉箊箋箌箎箏�箑箒箓箖箘箙箚箛箞箟箠箣箤箥箮箯箰箲箳箵箶箷箹箺箻箼箽箾箿節篂篃範埂耿梗工攻功恭龚供躬公宫弓巩汞拱贡共钩勾沟苟狗垢构购够辜菇咕箍估沽孤姑鼓古蛊骨谷股故顾固雇刮瓜剐寡挂褂乖拐怪棺关官冠观管馆罐惯灌贯光广逛瑰规圭硅归龟闺轨鬼诡癸桂柜跪贵刽辊滚棍锅郭国果裹过哈�".split(""); +for(j = 0; j != D[185].length; ++j) if(D[185][j].charCodeAt(0) !== 0xFFFD) { e[D[185][j]] = 47360 + j; d[47360 + j] = D[185][j];} +D[186] = "����������������������������������������������������������������篅篈築篊篋篍篎篏篐篒篔篕篖篗篘篛篜篞篟篠篢篣篤篧篨篩篫篬篭篯篰篲篳篴篵篶篸篹篺篻篽篿簀簁簂簃簄簅簆簈簉簊簍簎簐簑簒簓簔簕簗簘簙�簚簛簜簝簞簠簡簢簣簤簥簨簩簫簬簭簮簯簰簱簲簳簴簵簶簷簹簺簻簼簽簾籂骸孩海氦亥害骇酣憨邯韩含涵寒函喊罕翰撼捍旱憾悍焊汗汉夯杭航壕嚎豪毫郝好耗号浩呵喝荷菏核禾和何合盒貉阂河涸赫褐鹤贺嘿黑痕很狠恨哼亨横衡恒轰哄烘虹鸿洪宏弘红喉侯猴吼厚候后呼乎忽瑚壶葫胡蝴狐糊湖�".split(""); +for(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];} +D[187] = "����������������������������������������������������������������籃籄籅籆籇籈籉籊籋籌籎籏籐籑籒籓籔籕籖籗籘籙籚籛籜籝籞籟籠籡籢籣籤籥籦籧籨籩籪籫籬籭籮籯籰籱籲籵籶籷籸籹籺籾籿粀粁粂粃粄粅粆粇�粈粊粋粌粍粎粏粐粓粔粖粙粚粛粠粡粣粦粧粨粩粫粬粭粯粰粴粵粶粷粸粺粻弧虎唬护互沪户花哗华猾滑画划化话槐徊怀淮坏欢环桓还缓换患唤痪豢焕涣宦幻荒慌黄磺蝗簧皇凰惶煌晃幌恍谎灰挥辉徽恢蛔回毁悔慧卉惠晦贿秽会烩汇讳诲绘荤昏婚魂浑混豁活伙火获或惑霍货祸击圾基机畸稽积箕�".split(""); +for(j = 0; j != D[187].length; ++j) if(D[187][j].charCodeAt(0) !== 0xFFFD) { e[D[187][j]] = 47872 + j; d[47872 + j] = D[187][j];} +D[188] = "����������������������������������������������������������������粿糀糂糃糄糆糉糋糎糏糐糑糒糓糔糘糚糛糝糞糡糢糣糤糥糦糧糩糪糫糬糭糮糰糱糲糳糴糵糶糷糹糺糼糽糾糿紀紁紂紃約紅紆紇紈紉紋紌納紎紏紐�紑紒紓純紕紖紗紘紙級紛紜紝紞紟紡紣紤紥紦紨紩紪紬紭紮細紱紲紳紴紵紶肌饥迹激讥鸡姬绩缉吉极棘辑籍集及急疾汲即嫉级挤几脊己蓟技冀季伎祭剂悸济寄寂计记既忌际妓继纪嘉枷夹佳家加荚颊贾甲钾假稼价架驾嫁歼监坚尖笺间煎兼肩艰奸缄茧检柬碱硷拣捡简俭剪减荐槛鉴践贱见键箭件�".split(""); +for(j = 0; j != D[188].length; ++j) if(D[188][j].charCodeAt(0) !== 0xFFFD) { e[D[188][j]] = 48128 + j; d[48128 + j] = D[188][j];} +D[189] = "����������������������������������������������������������������紷紸紹紺紻紼紽紾紿絀絁終絃組絅絆絇絈絉絊絋経絍絎絏結絑絒絓絔絕絖絗絘絙絚絛絜絝絞絟絠絡絢絣絤絥給絧絨絩絪絫絬絭絯絰統絲絳絴絵絶�絸絹絺絻絼絽絾絿綀綁綂綃綄綅綆綇綈綉綊綋綌綍綎綏綐綑綒經綔綕綖綗綘健舰剑饯渐溅涧建僵姜将浆江疆蒋桨奖讲匠酱降蕉椒礁焦胶交郊浇骄娇嚼搅铰矫侥脚狡角饺缴绞剿教酵轿较叫窖揭接皆秸街阶截劫节桔杰捷睫竭洁结解姐戒藉芥界借介疥诫届巾筋斤金今津襟紧锦仅谨进靳晋禁近烬浸�".split(""); +for(j = 0; j != D[189].length; ++j) if(D[189][j].charCodeAt(0) !== 0xFFFD) { e[D[189][j]] = 48384 + j; d[48384 + j] = D[189][j];} +D[190] = "����������������������������������������������������������������継続綛綜綝綞綟綠綡綢綣綤綥綧綨綩綪綫綬維綯綰綱網綳綴綵綶綷綸綹綺綻綼綽綾綿緀緁緂緃緄緅緆緇緈緉緊緋緌緍緎総緐緑緒緓緔緕緖緗緘緙�線緛緜緝緞緟締緡緢緣緤緥緦緧編緩緪緫緬緭緮緯緰緱緲緳練緵緶緷緸緹緺尽劲荆兢茎睛晶鲸京惊精粳经井警景颈静境敬镜径痉靖竟竞净炯窘揪究纠玖韭久灸九酒厩救旧臼舅咎就疚鞠拘狙疽居驹菊局咀矩举沮聚拒据巨具距踞锯俱句惧炬剧捐鹃娟倦眷卷绢撅攫抉掘倔爵觉决诀绝均菌钧军君峻�".split(""); +for(j = 0; j != D[190].length; ++j) if(D[190][j].charCodeAt(0) !== 0xFFFD) { e[D[190][j]] = 48640 + j; d[48640 + j] = D[190][j];} +D[191] = "����������������������������������������������������������������緻緼緽緾緿縀縁縂縃縄縅縆縇縈縉縊縋縌縍縎縏縐縑縒縓縔縕縖縗縘縙縚縛縜縝縞縟縠縡縢縣縤縥縦縧縨縩縪縫縬縭縮縯縰縱縲縳縴縵縶縷縸縹�縺縼總績縿繀繂繃繄繅繆繈繉繊繋繌繍繎繏繐繑繒繓織繕繖繗繘繙繚繛繜繝俊竣浚郡骏喀咖卡咯开揩楷凯慨刊堪勘坎砍看康慷糠扛抗亢炕考拷烤靠坷苛柯棵磕颗科壳咳可渴克刻客课肯啃垦恳坑吭空恐孔控抠口扣寇枯哭窟苦酷库裤夸垮挎跨胯块筷侩快宽款匡筐狂框矿眶旷况亏盔岿窥葵奎魁傀�".split(""); +for(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];} +D[192] = "����������������������������������������������������������������繞繟繠繡繢繣繤繥繦繧繨繩繪繫繬繭繮繯繰繱繲繳繴繵繶繷繸繹繺繻繼繽繾繿纀纁纃纄纅纆纇纈纉纊纋續纍纎纏纐纑纒纓纔纕纖纗纘纙纚纜纝纞�纮纴纻纼绖绤绬绹缊缐缞缷缹缻缼缽缾缿罀罁罃罆罇罈罉罊罋罌罍罎罏罒罓馈愧溃坤昆捆困括扩廓阔垃拉喇蜡腊辣啦莱来赖蓝婪栏拦篮阑兰澜谰揽览懒缆烂滥琅榔狼廊郎朗浪捞劳牢老佬姥酪烙涝勒乐雷镭蕾磊累儡垒擂肋类泪棱楞冷厘梨犁黎篱狸离漓理李里鲤礼莉荔吏栗丽厉励砾历利傈例俐�".split(""); +for(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];} +D[193] = "����������������������������������������������������������������罖罙罛罜罝罞罠罣罤罥罦罧罫罬罭罯罰罳罵罶罷罸罺罻罼罽罿羀羂羃羄羅羆羇羈羉羋羍羏羐羑羒羓羕羖羗羘羙羛羜羠羢羣羥羦羨義羪羫羬羭羮羱�羳羴羵羶羷羺羻羾翀翂翃翄翆翇翈翉翋翍翏翐翑習翓翖翗翙翚翛翜翝翞翢翣痢立粒沥隶力璃哩俩联莲连镰廉怜涟帘敛脸链恋炼练粮凉梁粱良两辆量晾亮谅撩聊僚疗燎寥辽潦了撂镣廖料列裂烈劣猎琳林磷霖临邻鳞淋凛赁吝拎玲菱零龄铃伶羚凌灵陵岭领另令溜琉榴硫馏留刘瘤流柳六龙聋咙笼窿�".split(""); +for(j = 0; j != D[193].length; ++j) if(D[193][j].charCodeAt(0) !== 0xFFFD) { e[D[193][j]] = 49408 + j; d[49408 + j] = D[193][j];} +D[194] = "����������������������������������������������������������������翤翧翨翪翫翬翭翯翲翴翵翶翷翸翹翺翽翾翿耂耇耈耉耊耎耏耑耓耚耛耝耞耟耡耣耤耫耬耭耮耯耰耲耴耹耺耼耾聀聁聄聅聇聈聉聎聏聐聑聓聕聖聗�聙聛聜聝聞聟聠聡聢聣聤聥聦聧聨聫聬聭聮聯聰聲聳聴聵聶職聸聹聺聻聼聽隆垄拢陇楼娄搂篓漏陋芦卢颅庐炉掳卤虏鲁麓碌露路赂鹿潞禄录陆戮驴吕铝侣旅履屡缕虑氯律率滤绿峦挛孪滦卵乱掠略抡轮伦仑沦纶论萝螺罗逻锣箩骡裸落洛骆络妈麻玛码蚂马骂嘛吗埋买麦卖迈脉瞒馒蛮满蔓曼慢漫�".split(""); +for(j = 0; j != D[194].length; ++j) if(D[194][j].charCodeAt(0) !== 0xFFFD) { e[D[194][j]] = 49664 + j; d[49664 + j] = D[194][j];} +D[195] = "����������������������������������������������������������������聾肁肂肅肈肊肍肎肏肐肑肒肔肕肗肙肞肣肦肧肨肬肰肳肵肶肸肹肻胅胇胈胉胊胋胏胐胑胒胓胔胕胘胟胠胢胣胦胮胵胷胹胻胾胿脀脁脃脄脅脇脈脋�脌脕脗脙脛脜脝脟脠脡脢脣脤脥脦脧脨脩脪脫脭脮脰脳脴脵脷脹脺脻脼脽脿谩芒茫盲氓忙莽猫茅锚毛矛铆卯茂冒帽貌贸么玫枚梅酶霉煤没眉媒镁每美昧寐妹媚门闷们萌蒙檬盟锰猛梦孟眯醚靡糜迷谜弥米秘觅泌蜜密幂棉眠绵冕免勉娩缅面苗描瞄藐秒渺庙妙蔑灭民抿皿敏悯闽明螟鸣铭名命谬摸�".split(""); +for(j = 0; j != D[195].length; ++j) if(D[195][j].charCodeAt(0) !== 0xFFFD) { e[D[195][j]] = 49920 + j; d[49920 + j] = D[195][j];} +D[196] = "����������������������������������������������������������������腀腁腂腃腄腅腇腉腍腎腏腒腖腗腘腛腜腝腞腟腡腢腣腤腦腨腪腫腬腯腲腳腵腶腷腸膁膃膄膅膆膇膉膋膌膍膎膐膒膓膔膕膖膗膙膚膞膟膠膡膢膤膥�膧膩膫膬膭膮膯膰膱膲膴膵膶膷膸膹膼膽膾膿臄臅臇臈臉臋臍臎臏臐臑臒臓摹蘑模膜磨摩魔抹末莫墨默沫漠寞陌谋牟某拇牡亩姆母墓暮幕募慕木目睦牧穆拿哪呐钠那娜纳氖乃奶耐奈南男难囊挠脑恼闹淖呢馁内嫩能妮霓倪泥尼拟你匿腻逆溺蔫拈年碾撵捻念娘酿鸟尿捏聂孽啮镊镍涅您柠狞凝宁�".split(""); +for(j = 0; j != D[196].length; ++j) if(D[196][j].charCodeAt(0) !== 0xFFFD) { e[D[196][j]] = 50176 + j; d[50176 + j] = D[196][j];} +D[197] = "����������������������������������������������������������������臔臕臖臗臘臙臚臛臜臝臞臟臠臡臢臤臥臦臨臩臫臮臯臰臱臲臵臶臷臸臹臺臽臿舃與興舉舊舋舎舏舑舓舕舖舗舘舙舚舝舠舤舥舦舧舩舮舲舺舼舽舿�艀艁艂艃艅艆艈艊艌艍艎艐艑艒艓艔艕艖艗艙艛艜艝艞艠艡艢艣艤艥艦艧艩拧泞牛扭钮纽脓浓农弄奴努怒女暖虐疟挪懦糯诺哦欧鸥殴藕呕偶沤啪趴爬帕怕琶拍排牌徘湃派攀潘盘磐盼畔判叛乓庞旁耪胖抛咆刨炮袍跑泡呸胚培裴赔陪配佩沛喷盆砰抨烹澎彭蓬棚硼篷膨朋鹏捧碰坯砒霹批披劈琵毗�".split(""); +for(j = 0; j != D[197].length; ++j) if(D[197][j].charCodeAt(0) !== 0xFFFD) { e[D[197][j]] = 50432 + j; d[50432 + j] = D[197][j];} +D[198] = "����������������������������������������������������������������艪艫艬艭艱艵艶艷艸艻艼芀芁芃芅芆芇芉芌芐芓芔芕芖芚芛芞芠芢芣芧芲芵芶芺芻芼芿苀苂苃苅苆苉苐苖苙苚苝苢苧苨苩苪苬苭苮苰苲苳苵苶苸�苺苼苽苾苿茀茊茋茍茐茒茓茖茘茙茝茞茟茠茡茢茣茤茥茦茩茪茮茰茲茷茻茽啤脾疲皮匹痞僻屁譬篇偏片骗飘漂瓢票撇瞥拼频贫品聘乒坪苹萍平凭瓶评屏坡泼颇婆破魄迫粕剖扑铺仆莆葡菩蒲埔朴圃普浦谱曝瀑期欺栖戚妻七凄漆柒沏其棋奇歧畦崎脐齐旗祈祁骑起岂乞企启契砌器气迄弃汽泣讫掐�".split(""); +for(j = 0; j != D[198].length; ++j) if(D[198][j].charCodeAt(0) !== 0xFFFD) { e[D[198][j]] = 50688 + j; d[50688 + j] = D[198][j];} +D[199] = "����������������������������������������������������������������茾茿荁荂荄荅荈荊荋荌荍荎荓荕荖荗荘荙荝荢荰荱荲荳荴荵荶荹荺荾荿莀莁莂莃莄莇莈莊莋莌莍莏莐莑莔莕莖莗莙莚莝莟莡莢莣莤莥莦莧莬莭莮�莯莵莻莾莿菂菃菄菆菈菉菋菍菎菐菑菒菓菕菗菙菚菛菞菢菣菤菦菧菨菫菬菭恰洽牵扦钎铅千迁签仟谦乾黔钱钳前潜遣浅谴堑嵌欠歉枪呛腔羌墙蔷强抢橇锹敲悄桥瞧乔侨巧鞘撬翘峭俏窍切茄且怯窃钦侵亲秦琴勤芹擒禽寝沁青轻氢倾卿清擎晴氰情顷请庆琼穷秋丘邱球求囚酋泅趋区蛆曲躯屈驱渠�".split(""); +for(j = 0; j != D[199].length; ++j) if(D[199][j].charCodeAt(0) !== 0xFFFD) { e[D[199][j]] = 50944 + j; d[50944 + j] = D[199][j];} +D[200] = "����������������������������������������������������������������菮華菳菴菵菶菷菺菻菼菾菿萀萂萅萇萈萉萊萐萒萓萔萕萖萗萙萚萛萞萟萠萡萢萣萩萪萫萬萭萮萯萰萲萳萴萵萶萷萹萺萻萾萿葀葁葂葃葄葅葇葈葉�葊葋葌葍葎葏葐葒葓葔葕葖葘葝葞葟葠葢葤葥葦葧葨葪葮葯葰葲葴葷葹葻葼取娶龋趣去圈颧权醛泉全痊拳犬券劝缺炔瘸却鹊榷确雀裙群然燃冉染瓤壤攘嚷让饶扰绕惹热壬仁人忍韧任认刃妊纫扔仍日戎茸蓉荣融熔溶容绒冗揉柔肉茹蠕儒孺如辱乳汝入褥软阮蕊瑞锐闰润若弱撒洒萨腮鳃塞赛三叁�".split(""); +for(j = 0; j != D[200].length; ++j) if(D[200][j].charCodeAt(0) !== 0xFFFD) { e[D[200][j]] = 51200 + j; d[51200 + j] = D[200][j];} +D[201] = "����������������������������������������������������������������葽葾葿蒀蒁蒃蒄蒅蒆蒊蒍蒏蒐蒑蒒蒓蒔蒕蒖蒘蒚蒛蒝蒞蒟蒠蒢蒣蒤蒥蒦蒧蒨蒩蒪蒫蒬蒭蒮蒰蒱蒳蒵蒶蒷蒻蒼蒾蓀蓂蓃蓅蓆蓇蓈蓋蓌蓎蓏蓒蓔蓕蓗�蓘蓙蓚蓛蓜蓞蓡蓢蓤蓧蓨蓩蓪蓫蓭蓮蓯蓱蓲蓳蓴蓵蓶蓷蓸蓹蓺蓻蓽蓾蔀蔁蔂伞散桑嗓丧搔骚扫嫂瑟色涩森僧莎砂杀刹沙纱傻啥煞筛晒珊苫杉山删煽衫闪陕擅赡膳善汕扇缮墒伤商赏晌上尚裳梢捎稍烧芍勺韶少哨邵绍奢赊蛇舌舍赦摄射慑涉社设砷申呻伸身深娠绅神沈审婶甚肾慎渗声生甥牲升绳�".split(""); +for(j = 0; j != D[201].length; ++j) if(D[201][j].charCodeAt(0) !== 0xFFFD) { e[D[201][j]] = 51456 + j; d[51456 + j] = D[201][j];} +D[202] = "����������������������������������������������������������������蔃蔄蔅蔆蔇蔈蔉蔊蔋蔍蔎蔏蔐蔒蔔蔕蔖蔘蔙蔛蔜蔝蔞蔠蔢蔣蔤蔥蔦蔧蔨蔩蔪蔭蔮蔯蔰蔱蔲蔳蔴蔵蔶蔾蔿蕀蕁蕂蕄蕅蕆蕇蕋蕌蕍蕎蕏蕐蕑蕒蕓蕔蕕�蕗蕘蕚蕛蕜蕝蕟蕠蕡蕢蕣蕥蕦蕧蕩蕪蕫蕬蕭蕮蕯蕰蕱蕳蕵蕶蕷蕸蕼蕽蕿薀薁省盛剩胜圣师失狮施湿诗尸虱十石拾时什食蚀实识史矢使屎驶始式示士世柿事拭誓逝势是嗜噬适仕侍释饰氏市恃室视试收手首守寿授售受瘦兽蔬枢梳殊抒输叔舒淑疏书赎孰熟薯暑曙署蜀黍鼠属术述树束戍竖墅庶数漱�".split(""); +for(j = 0; j != D[202].length; ++j) if(D[202][j].charCodeAt(0) !== 0xFFFD) { e[D[202][j]] = 51712 + j; d[51712 + j] = D[202][j];} +D[203] = "����������������������������������������������������������������薂薃薆薈薉薊薋薌薍薎薐薑薒薓薔薕薖薗薘薙薚薝薞薟薠薡薢薣薥薦薧薩薫薬薭薱薲薳薴薵薶薸薺薻薼薽薾薿藀藂藃藄藅藆藇藈藊藋藌藍藎藑藒�藔藖藗藘藙藚藛藝藞藟藠藡藢藣藥藦藧藨藪藫藬藭藮藯藰藱藲藳藴藵藶藷藸恕刷耍摔衰甩帅栓拴霜双爽谁水睡税吮瞬顺舜说硕朔烁斯撕嘶思私司丝死肆寺嗣四伺似饲巳松耸怂颂送宋讼诵搜艘擞嗽苏酥俗素速粟僳塑溯宿诉肃酸蒜算虽隋随绥髓碎岁穗遂隧祟孙损笋蓑梭唆缩琐索锁所塌他它她塔�".split(""); +for(j = 0; j != D[203].length; ++j) if(D[203][j].charCodeAt(0) !== 0xFFFD) { e[D[203][j]] = 51968 + j; d[51968 + j] = D[203][j];} +D[204] = "����������������������������������������������������������������藹藺藼藽藾蘀蘁蘂蘃蘄蘆蘇蘈蘉蘊蘋蘌蘍蘎蘏蘐蘒蘓蘔蘕蘗蘘蘙蘚蘛蘜蘝蘞蘟蘠蘡蘢蘣蘤蘥蘦蘨蘪蘫蘬蘭蘮蘯蘰蘱蘲蘳蘴蘵蘶蘷蘹蘺蘻蘽蘾蘿虀�虁虂虃虄虅虆虇虈虉虊虋虌虒虓處虖虗虘虙虛虜虝號虠虡虣虤虥虦虧虨虩虪獭挞蹋踏胎苔抬台泰酞太态汰坍摊贪瘫滩坛檀痰潭谭谈坦毯袒碳探叹炭汤塘搪堂棠膛唐糖倘躺淌趟烫掏涛滔绦萄桃逃淘陶讨套特藤腾疼誊梯剔踢锑提题蹄啼体替嚏惕涕剃屉天添填田甜恬舔腆挑条迢眺跳贴铁帖厅听烃�".split(""); +for(j = 0; j != D[204].length; ++j) if(D[204][j].charCodeAt(0) !== 0xFFFD) { e[D[204][j]] = 52224 + j; d[52224 + j] = D[204][j];} +D[205] = "����������������������������������������������������������������虭虯虰虲虳虴虵虶虷虸蚃蚄蚅蚆蚇蚈蚉蚎蚏蚐蚑蚒蚔蚖蚗蚘蚙蚚蚛蚞蚟蚠蚡蚢蚥蚦蚫蚭蚮蚲蚳蚷蚸蚹蚻蚼蚽蚾蚿蛁蛂蛃蛅蛈蛌蛍蛒蛓蛕蛖蛗蛚蛜�蛝蛠蛡蛢蛣蛥蛦蛧蛨蛪蛫蛬蛯蛵蛶蛷蛺蛻蛼蛽蛿蜁蜄蜅蜆蜋蜌蜎蜏蜐蜑蜔蜖汀廷停亭庭挺艇通桐酮瞳同铜彤童桶捅筒统痛偷投头透凸秃突图徒途涂屠土吐兔湍团推颓腿蜕褪退吞屯臀拖托脱鸵陀驮驼椭妥拓唾挖哇蛙洼娃瓦袜歪外豌弯湾玩顽丸烷完碗挽晚皖惋宛婉万腕汪王亡枉网往旺望忘妄威�".split(""); +for(j = 0; j != D[205].length; ++j) if(D[205][j].charCodeAt(0) !== 0xFFFD) { e[D[205][j]] = 52480 + j; d[52480 + j] = D[205][j];} +D[206] = "����������������������������������������������������������������蜙蜛蜝蜟蜠蜤蜦蜧蜨蜪蜫蜬蜭蜯蜰蜲蜳蜵蜶蜸蜹蜺蜼蜽蝀蝁蝂蝃蝄蝅蝆蝊蝋蝍蝏蝐蝑蝒蝔蝕蝖蝘蝚蝛蝜蝝蝞蝟蝡蝢蝦蝧蝨蝩蝪蝫蝬蝭蝯蝱蝲蝳蝵�蝷蝸蝹蝺蝿螀螁螄螆螇螉螊螌螎螏螐螑螒螔螕螖螘螙螚螛螜螝螞螠螡螢螣螤巍微危韦违桅围唯惟为潍维苇萎委伟伪尾纬未蔚味畏胃喂魏位渭谓尉慰卫瘟温蚊文闻纹吻稳紊问嗡翁瓮挝蜗涡窝我斡卧握沃巫呜钨乌污诬屋无芜梧吾吴毋武五捂午舞伍侮坞戊雾晤物勿务悟误昔熙析西硒矽晰嘻吸锡牺�".split(""); +for(j = 0; j != D[206].length; ++j) if(D[206][j].charCodeAt(0) !== 0xFFFD) { e[D[206][j]] = 52736 + j; d[52736 + j] = D[206][j];} +D[207] = "����������������������������������������������������������������螥螦螧螩螪螮螰螱螲螴螶螷螸螹螻螼螾螿蟁蟂蟃蟄蟅蟇蟈蟉蟌蟍蟎蟏蟐蟔蟕蟖蟗蟘蟙蟚蟜蟝蟞蟟蟡蟢蟣蟤蟦蟧蟨蟩蟫蟬蟭蟯蟰蟱蟲蟳蟴蟵蟶蟷蟸�蟺蟻蟼蟽蟿蠀蠁蠂蠄蠅蠆蠇蠈蠉蠋蠌蠍蠎蠏蠐蠑蠒蠔蠗蠘蠙蠚蠜蠝蠞蠟蠠蠣稀息希悉膝夕惜熄烯溪汐犀檄袭席习媳喜铣洗系隙戏细瞎虾匣霞辖暇峡侠狭下厦夏吓掀锨先仙鲜纤咸贤衔舷闲涎弦嫌显险现献县腺馅羡宪陷限线相厢镶香箱襄湘乡翔祥详想响享项巷橡像向象萧硝霄削哮嚣销消宵淆晓�".split(""); +for(j = 0; j != D[207].length; ++j) if(D[207][j].charCodeAt(0) !== 0xFFFD) { e[D[207][j]] = 52992 + j; d[52992 + j] = D[207][j];} +D[208] = "����������������������������������������������������������������蠤蠥蠦蠧蠨蠩蠪蠫蠬蠭蠮蠯蠰蠱蠳蠴蠵蠶蠷蠸蠺蠻蠽蠾蠿衁衂衃衆衇衈衉衊衋衎衏衐衑衒術衕衖衘衚衛衜衝衞衟衠衦衧衪衭衯衱衳衴衵衶衸衹衺�衻衼袀袃袆袇袉袊袌袎袏袐袑袓袔袕袗袘袙袚袛袝袞袟袠袡袣袥袦袧袨袩袪小孝校肖啸笑效楔些歇蝎鞋协挟携邪斜胁谐写械卸蟹懈泄泻谢屑薪芯锌欣辛新忻心信衅星腥猩惺兴刑型形邢行醒幸杏性姓兄凶胸匈汹雄熊休修羞朽嗅锈秀袖绣墟戌需虚嘘须徐许蓄酗叙旭序畜恤絮婿绪续轩喧宣悬旋玄�".split(""); +for(j = 0; j != D[208].length; ++j) if(D[208][j].charCodeAt(0) !== 0xFFFD) { e[D[208][j]] = 53248 + j; d[53248 + j] = D[208][j];} +D[209] = "����������������������������������������������������������������袬袮袯袰袲袳袴袵袶袸袹袺袻袽袾袿裀裃裄裇裈裊裋裌裍裏裐裑裓裖裗裚裛補裝裞裠裡裦裧裩裪裫裬裭裮裯裲裵裶裷裺裻製裿褀褁褃褄褅褆複褈�褉褋褌褍褎褏褑褔褕褖褗褘褜褝褞褟褠褢褣褤褦褧褨褩褬褭褮褯褱褲褳褵褷选癣眩绚靴薛学穴雪血勋熏循旬询寻驯巡殉汛训讯逊迅压押鸦鸭呀丫芽牙蚜崖衙涯雅哑亚讶焉咽阉烟淹盐严研蜒岩延言颜阎炎沿奄掩眼衍演艳堰燕厌砚雁唁彦焰宴谚验殃央鸯秧杨扬佯疡羊洋阳氧仰痒养样漾邀腰妖瑶�".split(""); +for(j = 0; j != D[209].length; ++j) if(D[209][j].charCodeAt(0) !== 0xFFFD) { e[D[209][j]] = 53504 + j; d[53504 + j] = D[209][j];} +D[210] = "����������������������������������������������������������������褸褹褺褻褼褽褾褿襀襂襃襅襆襇襈襉襊襋襌襍襎襏襐襑襒襓襔襕襖襗襘襙襚襛襜襝襠襡襢襣襤襥襧襨襩襪襫襬襭襮襯襰襱襲襳襴襵襶襷襸襹襺襼�襽襾覀覂覄覅覇覈覉覊見覌覍覎規覐覑覒覓覔覕視覗覘覙覚覛覜覝覞覟覠覡摇尧遥窑谣姚咬舀药要耀椰噎耶爷野冶也页掖业叶曳腋夜液一壹医揖铱依伊衣颐夷遗移仪胰疑沂宜姨彝椅蚁倚已乙矣以艺抑易邑屹亿役臆逸肄疫亦裔意毅忆义益溢诣议谊译异翼翌绎茵荫因殷音阴姻吟银淫寅饮尹引隐�".split(""); +for(j = 0; j != D[210].length; ++j) if(D[210][j].charCodeAt(0) !== 0xFFFD) { e[D[210][j]] = 53760 + j; d[53760 + j] = D[210][j];} +D[211] = "����������������������������������������������������������������覢覣覤覥覦覧覨覩親覫覬覭覮覯覰覱覲観覴覵覶覷覸覹覺覻覼覽覾覿觀觃觍觓觔觕觗觘觙觛觝觟觠觡觢觤觧觨觩觪觬觭觮觰觱觲觴觵觶觷觸觹觺�觻觼觽觾觿訁訂訃訄訅訆計訉訊訋訌訍討訏訐訑訒訓訔訕訖託記訙訚訛訜訝印英樱婴鹰应缨莹萤营荧蝇迎赢盈影颖硬映哟拥佣臃痈庸雍踊蛹咏泳涌永恿勇用幽优悠忧尤由邮铀犹油游酉有友右佑釉诱又幼迂淤于盂榆虞愚舆余俞逾鱼愉渝渔隅予娱雨与屿禹宇语羽玉域芋郁吁遇喻峪御愈欲狱育誉�".split(""); +for(j = 0; j != D[211].length; ++j) if(D[211][j].charCodeAt(0) !== 0xFFFD) { e[D[211][j]] = 54016 + j; d[54016 + j] = D[211][j];} +D[212] = "����������������������������������������������������������������訞訟訠訡訢訣訤訥訦訧訨訩訪訫訬設訮訯訰許訲訳訴訵訶訷訸訹診註証訽訿詀詁詂詃詄詅詆詇詉詊詋詌詍詎詏詐詑詒詓詔評詖詗詘詙詚詛詜詝詞�詟詠詡詢詣詤詥試詧詨詩詪詫詬詭詮詯詰話該詳詴詵詶詷詸詺詻詼詽詾詿誀浴寓裕预豫驭鸳渊冤元垣袁原援辕园员圆猿源缘远苑愿怨院曰约越跃钥岳粤月悦阅耘云郧匀陨允运蕴酝晕韵孕匝砸杂栽哉灾宰载再在咱攒暂赞赃脏葬遭糟凿藻枣早澡蚤躁噪造皂灶燥责择则泽贼怎增憎曾赠扎喳渣札轧�".split(""); +for(j = 0; j != D[212].length; ++j) if(D[212][j].charCodeAt(0) !== 0xFFFD) { e[D[212][j]] = 54272 + j; d[54272 + j] = D[212][j];} +D[213] = "����������������������������������������������������������������誁誂誃誄誅誆誇誈誋誌認誎誏誐誑誒誔誕誖誗誘誙誚誛誜誝語誟誠誡誢誣誤誥誦誧誨誩說誫説読誮誯誰誱課誳誴誵誶誷誸誹誺誻誼誽誾調諀諁諂�諃諄諅諆談諈諉諊請諌諍諎諏諐諑諒諓諔諕論諗諘諙諚諛諜諝諞諟諠諡諢諣铡闸眨栅榨咋乍炸诈摘斋宅窄债寨瞻毡詹粘沾盏斩辗崭展蘸栈占战站湛绽樟章彰漳张掌涨杖丈帐账仗胀瘴障招昭找沼赵照罩兆肇召遮折哲蛰辙者锗蔗这浙珍斟真甄砧臻贞针侦枕疹诊震振镇阵蒸挣睁征狰争怔整拯正政�".split(""); +for(j = 0; j != D[213].length; ++j) if(D[213][j].charCodeAt(0) !== 0xFFFD) { e[D[213][j]] = 54528 + j; d[54528 + j] = D[213][j];} +D[214] = "����������������������������������������������������������������諤諥諦諧諨諩諪諫諬諭諮諯諰諱諲諳諴諵諶諷諸諹諺諻諼諽諾諿謀謁謂謃謄謅謆謈謉謊謋謌謍謎謏謐謑謒謓謔謕謖謗謘謙謚講謜謝謞謟謠謡謢謣�謤謥謧謨謩謪謫謬謭謮謯謰謱謲謳謴謵謶謷謸謹謺謻謼謽謾謿譀譁譂譃譄譅帧症郑证芝枝支吱蜘知肢脂汁之织职直植殖执值侄址指止趾只旨纸志挚掷至致置帜峙制智秩稚质炙痔滞治窒中盅忠钟衷终种肿重仲众舟周州洲诌粥轴肘帚咒皱宙昼骤珠株蛛朱猪诸诛逐竹烛煮拄瞩嘱主著柱助蛀贮铸筑�".split(""); +for(j = 0; j != D[214].length; ++j) if(D[214][j].charCodeAt(0) !== 0xFFFD) { e[D[214][j]] = 54784 + j; d[54784 + j] = D[214][j];} +D[215] = "����������������������������������������������������������������譆譇譈證譊譋譌譍譎譏譐譑譒譓譔譕譖譗識譙譚譛譜譝譞譟譠譡譢譣譤譥譧譨譩譪譫譭譮譯議譱譲譳譴譵譶護譸譹譺譻譼譽譾譿讀讁讂讃讄讅讆�讇讈讉變讋讌讍讎讏讐讑讒讓讔讕讖讗讘讙讚讛讜讝讞讟讬讱讻诇诐诪谉谞住注祝驻抓爪拽专砖转撰赚篆桩庄装妆撞壮状椎锥追赘坠缀谆准捉拙卓桌琢茁酌啄着灼浊兹咨资姿滋淄孜紫仔籽滓子自渍字鬃棕踪宗综总纵邹走奏揍租足卒族祖诅阻组钻纂嘴醉最罪尊遵昨左佐柞做作坐座�".split(""); +for(j = 0; j != D[215].length; ++j) if(D[215][j].charCodeAt(0) !== 0xFFFD) { e[D[215][j]] = 55040 + j; d[55040 + j] = D[215][j];} +D[216] = "����������������������������������������������������������������谸谹谺谻谼谽谾谿豀豂豃豄豅豈豊豋豍豎豏豐豑豒豓豔豖豗豘豙豛豜豝豞豟豠豣豤豥豦豧豨豩豬豭豮豯豰豱豲豴豵豶豷豻豼豽豾豿貀貁貃貄貆貇�貈貋貍貎貏貐貑貒貓貕貖貗貙貚貛貜貝貞貟負財貢貣貤貥貦貧貨販貪貫責貭亍丌兀丐廿卅丕亘丞鬲孬噩丨禺丿匕乇夭爻卮氐囟胤馗毓睾鼗丶亟鼐乜乩亓芈孛啬嘏仄厍厝厣厥厮靥赝匚叵匦匮匾赜卦卣刂刈刎刭刳刿剀剌剞剡剜蒯剽劂劁劐劓冂罔亻仃仉仂仨仡仫仞伛仳伢佤仵伥伧伉伫佞佧攸佚佝�".split(""); +for(j = 0; j != D[216].length; ++j) if(D[216][j].charCodeAt(0) !== 0xFFFD) { e[D[216][j]] = 55296 + j; d[55296 + j] = D[216][j];} +D[217] = "����������������������������������������������������������������貮貯貰貱貲貳貴貵貶買貸貹貺費貼貽貾貿賀賁賂賃賄賅賆資賈賉賊賋賌賍賎賏賐賑賒賓賔賕賖賗賘賙賚賛賜賝賞賟賠賡賢賣賤賥賦賧賨賩質賫賬�賭賮賯賰賱賲賳賴賵賶賷賸賹賺賻購賽賾賿贀贁贂贃贄贅贆贇贈贉贊贋贌贍佟佗伲伽佶佴侑侉侃侏佾佻侪佼侬侔俦俨俪俅俚俣俜俑俟俸倩偌俳倬倏倮倭俾倜倌倥倨偾偃偕偈偎偬偻傥傧傩傺僖儆僭僬僦僮儇儋仝氽佘佥俎龠汆籴兮巽黉馘冁夔勹匍訇匐凫夙兕亠兖亳衮袤亵脔裒禀嬴蠃羸冫冱冽冼�".split(""); +for(j = 0; j != D[217].length; ++j) if(D[217][j].charCodeAt(0) !== 0xFFFD) { e[D[217][j]] = 55552 + j; d[55552 + j] = D[217][j];} +D[218] = "����������������������������������������������������������������贎贏贐贑贒贓贔贕贖贗贘贙贚贛贜贠赑赒赗赟赥赨赩赪赬赮赯赱赲赸赹赺赻赼赽赾赿趀趂趃趆趇趈趉趌趍趎趏趐趒趓趕趖趗趘趙趚趛趜趝趞趠趡�趢趤趥趦趧趨趩趪趫趬趭趮趯趰趲趶趷趹趻趽跀跁跂跅跇跈跉跊跍跐跒跓跔凇冖冢冥讠讦讧讪讴讵讷诂诃诋诏诎诒诓诔诖诘诙诜诟诠诤诨诩诮诰诳诶诹诼诿谀谂谄谇谌谏谑谒谔谕谖谙谛谘谝谟谠谡谥谧谪谫谮谯谲谳谵谶卩卺阝阢阡阱阪阽阼陂陉陔陟陧陬陲陴隈隍隗隰邗邛邝邙邬邡邴邳邶邺�".split(""); +for(j = 0; j != D[218].length; ++j) if(D[218][j].charCodeAt(0) !== 0xFFFD) { e[D[218][j]] = 55808 + j; d[55808 + j] = D[218][j];} +D[219] = "����������������������������������������������������������������跕跘跙跜跠跡跢跥跦跧跩跭跮跰跱跲跴跶跼跾跿踀踁踂踃踄踆踇踈踋踍踎踐踑踒踓踕踖踗踘踙踚踛踜踠踡踤踥踦踧踨踫踭踰踲踳踴踶踷踸踻踼踾�踿蹃蹅蹆蹌蹍蹎蹏蹐蹓蹔蹕蹖蹗蹘蹚蹛蹜蹝蹞蹟蹠蹡蹢蹣蹤蹥蹧蹨蹪蹫蹮蹱邸邰郏郅邾郐郄郇郓郦郢郜郗郛郫郯郾鄄鄢鄞鄣鄱鄯鄹酃酆刍奂劢劬劭劾哿勐勖勰叟燮矍廴凵凼鬯厶弁畚巯坌垩垡塾墼壅壑圩圬圪圳圹圮圯坜圻坂坩垅坫垆坼坻坨坭坶坳垭垤垌垲埏垧垴垓垠埕埘埚埙埒垸埴埯埸埤埝�".split(""); +for(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];} +D[220] = "����������������������������������������������������������������蹳蹵蹷蹸蹹蹺蹻蹽蹾躀躂躃躄躆躈躉躊躋躌躍躎躑躒躓躕躖躗躘躙躚躛躝躟躠躡躢躣躤躥躦躧躨躩躪躭躮躰躱躳躴躵躶躷躸躹躻躼躽躾躿軀軁軂�軃軄軅軆軇軈軉車軋軌軍軏軐軑軒軓軔軕軖軗軘軙軚軛軜軝軞軟軠軡転軣軤堋堍埽埭堀堞堙塄堠塥塬墁墉墚墀馨鼙懿艹艽艿芏芊芨芄芎芑芗芙芫芸芾芰苈苊苣芘芷芮苋苌苁芩芴芡芪芟苄苎芤苡茉苷苤茏茇苜苴苒苘茌苻苓茑茚茆茔茕苠苕茜荑荛荜茈莒茼茴茱莛荞茯荏荇荃荟荀茗荠茭茺茳荦荥�".split(""); +for(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];} +D[221] = "����������������������������������������������������������������軥軦軧軨軩軪軫軬軭軮軯軰軱軲軳軴軵軶軷軸軹軺軻軼軽軾軿輀輁輂較輄輅輆輇輈載輊輋輌輍輎輏輐輑輒輓輔輕輖輗輘輙輚輛輜輝輞輟輠輡輢輣�輤輥輦輧輨輩輪輫輬輭輮輯輰輱輲輳輴輵輶輷輸輹輺輻輼輽輾輿轀轁轂轃轄荨茛荩荬荪荭荮莰荸莳莴莠莪莓莜莅荼莶莩荽莸荻莘莞莨莺莼菁萁菥菘堇萘萋菝菽菖萜萸萑萆菔菟萏萃菸菹菪菅菀萦菰菡葜葑葚葙葳蒇蒈葺蒉葸萼葆葩葶蒌蒎萱葭蓁蓍蓐蓦蒽蓓蓊蒿蒺蓠蒡蒹蒴蒗蓥蓣蔌甍蔸蓰蔹蔟蔺�".split(""); +for(j = 0; j != D[221].length; ++j) if(D[221][j].charCodeAt(0) !== 0xFFFD) { e[D[221][j]] = 56576 + j; d[56576 + j] = D[221][j];} +D[222] = "����������������������������������������������������������������轅轆轇轈轉轊轋轌轍轎轏轐轑轒轓轔轕轖轗轘轙轚轛轜轝轞轟轠轡轢轣轤轥轪辀辌辒辝辠辡辢辤辥辦辧辪辬辭辮辯農辳辴辵辷辸辺辻込辿迀迃迆�迉迊迋迌迍迏迒迖迗迚迠迡迣迧迬迯迱迲迴迵迶迺迻迼迾迿逇逈逌逎逓逕逘蕖蔻蓿蓼蕙蕈蕨蕤蕞蕺瞢蕃蕲蕻薤薨薇薏蕹薮薜薅薹薷薰藓藁藜藿蘧蘅蘩蘖蘼廾弈夼奁耷奕奚奘匏尢尥尬尴扌扪抟抻拊拚拗拮挢拶挹捋捃掭揶捱捺掎掴捭掬掊捩掮掼揲揸揠揿揄揞揎摒揆掾摅摁搋搛搠搌搦搡摞撄摭撖�".split(""); +for(j = 0; j != D[222].length; ++j) if(D[222][j].charCodeAt(0) !== 0xFFFD) { e[D[222][j]] = 56832 + j; d[56832 + j] = D[222][j];} +D[223] = "����������������������������������������������������������������這逜連逤逥逧逨逩逪逫逬逰週進逳逴逷逹逺逽逿遀遃遅遆遈遉遊運遌過達違遖遙遚遜遝遞遟遠遡遤遦遧適遪遫遬遯遰遱遲遳遶遷選遹遺遻遼遾邁�還邅邆邇邉邊邌邍邎邏邐邒邔邖邘邚邜邞邟邠邤邥邧邨邩邫邭邲邷邼邽邿郀摺撷撸撙撺擀擐擗擤擢攉攥攮弋忒甙弑卟叱叽叩叨叻吒吖吆呋呒呓呔呖呃吡呗呙吣吲咂咔呷呱呤咚咛咄呶呦咝哐咭哂咴哒咧咦哓哔呲咣哕咻咿哌哙哚哜咩咪咤哝哏哞唛哧唠哽唔哳唢唣唏唑唧唪啧喏喵啉啭啁啕唿啐唼�".split(""); +for(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];} +D[224] = "����������������������������������������������������������������郂郃郆郈郉郋郌郍郒郔郕郖郘郙郚郞郟郠郣郤郥郩郪郬郮郰郱郲郳郵郶郷郹郺郻郼郿鄀鄁鄃鄅鄆鄇鄈鄉鄊鄋鄌鄍鄎鄏鄐鄑鄒鄓鄔鄕鄖鄗鄘鄚鄛鄜�鄝鄟鄠鄡鄤鄥鄦鄧鄨鄩鄪鄫鄬鄭鄮鄰鄲鄳鄴鄵鄶鄷鄸鄺鄻鄼鄽鄾鄿酀酁酂酄唷啖啵啶啷唳唰啜喋嗒喃喱喹喈喁喟啾嗖喑啻嗟喽喾喔喙嗪嗷嗉嘟嗑嗫嗬嗔嗦嗝嗄嗯嗥嗲嗳嗌嗍嗨嗵嗤辔嘞嘈嘌嘁嘤嘣嗾嘀嘧嘭噘嘹噗嘬噍噢噙噜噌噔嚆噤噱噫噻噼嚅嚓嚯囔囗囝囡囵囫囹囿圄圊圉圜帏帙帔帑帱帻帼�".split(""); +for(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];} +D[225] = "����������������������������������������������������������������酅酇酈酑酓酔酕酖酘酙酛酜酟酠酦酧酨酫酭酳酺酻酼醀醁醂醃醄醆醈醊醎醏醓醔醕醖醗醘醙醜醝醞醟醠醡醤醥醦醧醨醩醫醬醰醱醲醳醶醷醸醹醻�醼醽醾醿釀釁釂釃釄釅釆釈釋釐釒釓釔釕釖釗釘釙釚釛針釞釟釠釡釢釣釤釥帷幄幔幛幞幡岌屺岍岐岖岈岘岙岑岚岜岵岢岽岬岫岱岣峁岷峄峒峤峋峥崂崃崧崦崮崤崞崆崛嵘崾崴崽嵬嵛嵯嵝嵫嵋嵊嵩嵴嶂嶙嶝豳嶷巅彳彷徂徇徉後徕徙徜徨徭徵徼衢彡犭犰犴犷犸狃狁狎狍狒狨狯狩狲狴狷猁狳猃狺�".split(""); +for(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];} +D[226] = "����������������������������������������������������������������釦釧釨釩釪釫釬釭釮釯釰釱釲釳釴釵釶釷釸釹釺釻釼釽釾釿鈀鈁鈂鈃鈄鈅鈆鈇鈈鈉鈊鈋鈌鈍鈎鈏鈐鈑鈒鈓鈔鈕鈖鈗鈘鈙鈚鈛鈜鈝鈞鈟鈠鈡鈢鈣鈤�鈥鈦鈧鈨鈩鈪鈫鈬鈭鈮鈯鈰鈱鈲鈳鈴鈵鈶鈷鈸鈹鈺鈻鈼鈽鈾鈿鉀鉁鉂鉃鉄鉅狻猗猓猡猊猞猝猕猢猹猥猬猸猱獐獍獗獠獬獯獾舛夥飧夤夂饣饧饨饩饪饫饬饴饷饽馀馄馇馊馍馐馑馓馔馕庀庑庋庖庥庠庹庵庾庳赓廒廑廛廨廪膺忄忉忖忏怃忮怄忡忤忾怅怆忪忭忸怙怵怦怛怏怍怩怫怊怿怡恸恹恻恺恂�".split(""); +for(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];} +D[227] = "����������������������������������������������������������������鉆鉇鉈鉉鉊鉋鉌鉍鉎鉏鉐鉑鉒鉓鉔鉕鉖鉗鉘鉙鉚鉛鉜鉝鉞鉟鉠鉡鉢鉣鉤鉥鉦鉧鉨鉩鉪鉫鉬鉭鉮鉯鉰鉱鉲鉳鉵鉶鉷鉸鉹鉺鉻鉼鉽鉾鉿銀銁銂銃銄銅�銆銇銈銉銊銋銌銍銏銐銑銒銓銔銕銖銗銘銙銚銛銜銝銞銟銠銡銢銣銤銥銦銧恪恽悖悚悭悝悃悒悌悛惬悻悱惝惘惆惚悴愠愦愕愣惴愀愎愫慊慵憬憔憧憷懔懵忝隳闩闫闱闳闵闶闼闾阃阄阆阈阊阋阌阍阏阒阕阖阗阙阚丬爿戕氵汔汜汊沣沅沐沔沌汨汩汴汶沆沩泐泔沭泷泸泱泗沲泠泖泺泫泮沱泓泯泾�".split(""); +for(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];} +D[228] = "����������������������������������������������������������������銨銩銪銫銬銭銯銰銱銲銳銴銵銶銷銸銹銺銻銼銽銾銿鋀鋁鋂鋃鋄鋅鋆鋇鋉鋊鋋鋌鋍鋎鋏鋐鋑鋒鋓鋔鋕鋖鋗鋘鋙鋚鋛鋜鋝鋞鋟鋠鋡鋢鋣鋤鋥鋦鋧鋨�鋩鋪鋫鋬鋭鋮鋯鋰鋱鋲鋳鋴鋵鋶鋷鋸鋹鋺鋻鋼鋽鋾鋿錀錁錂錃錄錅錆錇錈錉洹洧洌浃浈洇洄洙洎洫浍洮洵洚浏浒浔洳涑浯涞涠浞涓涔浜浠浼浣渚淇淅淞渎涿淠渑淦淝淙渖涫渌涮渫湮湎湫溲湟溆湓湔渲渥湄滟溱溘滠漭滢溥溧溽溻溷滗溴滏溏滂溟潢潆潇漤漕滹漯漶潋潴漪漉漩澉澍澌潸潲潼潺濑�".split(""); +for(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];} +D[229] = "����������������������������������������������������������������錊錋錌錍錎錏錐錑錒錓錔錕錖錗錘錙錚錛錜錝錞錟錠錡錢錣錤錥錦錧錨錩錪錫錬錭錮錯錰錱録錳錴錵錶錷錸錹錺錻錼錽錿鍀鍁鍂鍃鍄鍅鍆鍇鍈鍉�鍊鍋鍌鍍鍎鍏鍐鍑鍒鍓鍔鍕鍖鍗鍘鍙鍚鍛鍜鍝鍞鍟鍠鍡鍢鍣鍤鍥鍦鍧鍨鍩鍫濉澧澹澶濂濡濮濞濠濯瀚瀣瀛瀹瀵灏灞宀宄宕宓宥宸甯骞搴寤寮褰寰蹇謇辶迓迕迥迮迤迩迦迳迨逅逄逋逦逑逍逖逡逵逶逭逯遄遑遒遐遨遘遢遛暹遴遽邂邈邃邋彐彗彖彘尻咫屐屙孱屣屦羼弪弩弭艴弼鬻屮妁妃妍妩妪妣�".split(""); +for(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];} +D[230] = "����������������������������������������������������������������鍬鍭鍮鍯鍰鍱鍲鍳鍴鍵鍶鍷鍸鍹鍺鍻鍼鍽鍾鍿鎀鎁鎂鎃鎄鎅鎆鎇鎈鎉鎊鎋鎌鎍鎎鎐鎑鎒鎓鎔鎕鎖鎗鎘鎙鎚鎛鎜鎝鎞鎟鎠鎡鎢鎣鎤鎥鎦鎧鎨鎩鎪鎫�鎬鎭鎮鎯鎰鎱鎲鎳鎴鎵鎶鎷鎸鎹鎺鎻鎼鎽鎾鎿鏀鏁鏂鏃鏄鏅鏆鏇鏈鏉鏋鏌鏍妗姊妫妞妤姒妲妯姗妾娅娆姝娈姣姘姹娌娉娲娴娑娣娓婀婧婊婕娼婢婵胬媪媛婷婺媾嫫媲嫒嫔媸嫠嫣嫱嫖嫦嫘嫜嬉嬗嬖嬲嬷孀尕尜孚孥孳孑孓孢驵驷驸驺驿驽骀骁骅骈骊骐骒骓骖骘骛骜骝骟骠骢骣骥骧纟纡纣纥纨纩�".split(""); +for(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];} +D[231] = "����������������������������������������������������������������鏎鏏鏐鏑鏒鏓鏔鏕鏗鏘鏙鏚鏛鏜鏝鏞鏟鏠鏡鏢鏣鏤鏥鏦鏧鏨鏩鏪鏫鏬鏭鏮鏯鏰鏱鏲鏳鏴鏵鏶鏷鏸鏹鏺鏻鏼鏽鏾鏿鐀鐁鐂鐃鐄鐅鐆鐇鐈鐉鐊鐋鐌鐍�鐎鐏鐐鐑鐒鐓鐔鐕鐖鐗鐘鐙鐚鐛鐜鐝鐞鐟鐠鐡鐢鐣鐤鐥鐦鐧鐨鐩鐪鐫鐬鐭鐮纭纰纾绀绁绂绉绋绌绐绔绗绛绠绡绨绫绮绯绱绲缍绶绺绻绾缁缂缃缇缈缋缌缏缑缒缗缙缜缛缟缡缢缣缤缥缦缧缪缫缬缭缯缰缱缲缳缵幺畿巛甾邕玎玑玮玢玟珏珂珑玷玳珀珉珈珥珙顼琊珩珧珞玺珲琏琪瑛琦琥琨琰琮琬�".split(""); +for(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];} +D[232] = "����������������������������������������������������������������鐯鐰鐱鐲鐳鐴鐵鐶鐷鐸鐹鐺鐻鐼鐽鐿鑀鑁鑂鑃鑄鑅鑆鑇鑈鑉鑊鑋鑌鑍鑎鑏鑐鑑鑒鑓鑔鑕鑖鑗鑘鑙鑚鑛鑜鑝鑞鑟鑠鑡鑢鑣鑤鑥鑦鑧鑨鑩鑪鑬鑭鑮鑯�鑰鑱鑲鑳鑴鑵鑶鑷鑸鑹鑺鑻鑼鑽鑾鑿钀钁钂钃钄钑钖钘铇铏铓铔铚铦铻锜锠琛琚瑁瑜瑗瑕瑙瑷瑭瑾璜璎璀璁璇璋璞璨璩璐璧瓒璺韪韫韬杌杓杞杈杩枥枇杪杳枘枧杵枨枞枭枋杷杼柰栉柘栊柩枰栌柙枵柚枳柝栀柃枸柢栎柁柽栲栳桠桡桎桢桄桤梃栝桕桦桁桧桀栾桊桉栩梵梏桴桷梓桫棂楮棼椟椠棹�".split(""); +for(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];} +D[233] = "����������������������������������������������������������������锧锳锽镃镈镋镕镚镠镮镴镵長镸镹镺镻镼镽镾門閁閂閃閄閅閆閇閈閉閊開閌閍閎閏閐閑閒間閔閕閖閗閘閙閚閛閜閝閞閟閠閡関閣閤閥閦閧閨閩閪�閫閬閭閮閯閰閱閲閳閴閵閶閷閸閹閺閻閼閽閾閿闀闁闂闃闄闅闆闇闈闉闊闋椤棰椋椁楗棣椐楱椹楠楂楝榄楫榀榘楸椴槌榇榈槎榉楦楣楹榛榧榻榫榭槔榱槁槊槟榕槠榍槿樯槭樗樘橥槲橄樾檠橐橛樵檎橹樽樨橘橼檑檐檩檗檫猷獒殁殂殇殄殒殓殍殚殛殡殪轫轭轱轲轳轵轶轸轷轹轺轼轾辁辂辄辇辋�".split(""); +for(j = 0; j != D[233].length; ++j) if(D[233][j].charCodeAt(0) !== 0xFFFD) { e[D[233][j]] = 59648 + j; d[59648 + j] = D[233][j];} +D[234] = "����������������������������������������������������������������闌闍闎闏闐闑闒闓闔闕闖闗闘闙闚闛關闝闞闟闠闡闢闣闤闥闦闧闬闿阇阓阘阛阞阠阣阤阥阦阧阨阩阫阬阭阯阰阷阸阹阺阾陁陃陊陎陏陑陒陓陖陗�陘陙陚陜陝陞陠陣陥陦陫陭陮陯陰陱陳陸陹険陻陼陽陾陿隀隁隂隃隄隇隉隊辍辎辏辘辚軎戋戗戛戟戢戡戥戤戬臧瓯瓴瓿甏甑甓攴旮旯旰昊昙杲昃昕昀炅曷昝昴昱昶昵耆晟晔晁晏晖晡晗晷暄暌暧暝暾曛曜曦曩贲贳贶贻贽赀赅赆赈赉赇赍赕赙觇觊觋觌觎觏觐觑牮犟牝牦牯牾牿犄犋犍犏犒挈挲掰�".split(""); +for(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];} +D[235] = "����������������������������������������������������������������隌階隑隒隓隕隖隚際隝隞隟隠隡隢隣隤隥隦隨隩險隫隬隭隮隯隱隲隴隵隷隸隺隻隿雂雃雈雊雋雐雑雓雔雖雗雘雙雚雛雜雝雞雟雡離難雤雥雦雧雫�雬雭雮雰雱雲雴雵雸雺電雼雽雿霂霃霅霊霋霌霐霑霒霔霕霗霘霙霚霛霝霟霠搿擘耄毪毳毽毵毹氅氇氆氍氕氘氙氚氡氩氤氪氲攵敕敫牍牒牖爰虢刖肟肜肓肼朊肽肱肫肭肴肷胧胨胩胪胛胂胄胙胍胗朐胝胫胱胴胭脍脎胲胼朕脒豚脶脞脬脘脲腈腌腓腴腙腚腱腠腩腼腽腭腧塍媵膈膂膑滕膣膪臌朦臊膻�".split(""); +for(j = 0; j != D[235].length; ++j) if(D[235][j].charCodeAt(0) !== 0xFFFD) { e[D[235][j]] = 60160 + j; d[60160 + j] = D[235][j];} +D[236] = "����������������������������������������������������������������霡霢霣霤霥霦霧霨霩霫霬霮霯霱霳霴霵霶霷霺霻霼霽霿靀靁靂靃靄靅靆靇靈靉靊靋靌靍靎靏靐靑靔靕靗靘靚靜靝靟靣靤靦靧靨靪靫靬靭靮靯靰靱�靲靵靷靸靹靺靻靽靾靿鞀鞁鞂鞃鞄鞆鞇鞈鞉鞊鞌鞎鞏鞐鞓鞕鞖鞗鞙鞚鞛鞜鞝臁膦欤欷欹歃歆歙飑飒飓飕飙飚殳彀毂觳斐齑斓於旆旄旃旌旎旒旖炀炜炖炝炻烀炷炫炱烨烊焐焓焖焯焱煳煜煨煅煲煊煸煺熘熳熵熨熠燠燔燧燹爝爨灬焘煦熹戾戽扃扈扉礻祀祆祉祛祜祓祚祢祗祠祯祧祺禅禊禚禧禳忑忐�".split(""); +for(j = 0; j != D[236].length; ++j) if(D[236][j].charCodeAt(0) !== 0xFFFD) { e[D[236][j]] = 60416 + j; d[60416 + j] = D[236][j];} +D[237] = "����������������������������������������������������������������鞞鞟鞡鞢鞤鞥鞦鞧鞨鞩鞪鞬鞮鞰鞱鞳鞵鞶鞷鞸鞹鞺鞻鞼鞽鞾鞿韀韁韂韃韄韅韆韇韈韉韊韋韌韍韎韏韐韑韒韓韔韕韖韗韘韙韚韛韜韝韞韟韠韡韢韣�韤韥韨韮韯韰韱韲韴韷韸韹韺韻韼韽韾響頀頁頂頃頄項順頇須頉頊頋頌頍頎怼恝恚恧恁恙恣悫愆愍慝憩憝懋懑戆肀聿沓泶淼矶矸砀砉砗砘砑斫砭砜砝砹砺砻砟砼砥砬砣砩硎硭硖硗砦硐硇硌硪碛碓碚碇碜碡碣碲碹碥磔磙磉磬磲礅磴礓礤礞礴龛黹黻黼盱眄眍盹眇眈眚眢眙眭眦眵眸睐睑睇睃睚睨�".split(""); +for(j = 0; j != D[237].length; ++j) if(D[237][j].charCodeAt(0) !== 0xFFFD) { e[D[237][j]] = 60672 + j; d[60672 + j] = D[237][j];} +D[238] = "����������������������������������������������������������������頏預頑頒頓頔頕頖頗領頙頚頛頜頝頞頟頠頡頢頣頤頥頦頧頨頩頪頫頬頭頮頯頰頱頲頳頴頵頶頷頸頹頺頻頼頽頾頿顀顁顂顃顄顅顆顇顈顉顊顋題額�顎顏顐顑顒顓顔顕顖顗願顙顚顛顜顝類顟顠顡顢顣顤顥顦顧顨顩顪顫顬顭顮睢睥睿瞍睽瞀瞌瞑瞟瞠瞰瞵瞽町畀畎畋畈畛畲畹疃罘罡罟詈罨罴罱罹羁罾盍盥蠲钅钆钇钋钊钌钍钏钐钔钗钕钚钛钜钣钤钫钪钭钬钯钰钲钴钶钷钸钹钺钼钽钿铄铈铉铊铋铌铍铎铐铑铒铕铖铗铙铘铛铞铟铠铢铤铥铧铨铪�".split(""); +for(j = 0; j != D[238].length; ++j) if(D[238][j].charCodeAt(0) !== 0xFFFD) { e[D[238][j]] = 60928 + j; d[60928 + j] = D[238][j];} +D[239] = "����������������������������������������������������������������顯顰顱顲顳顴颋颎颒颕颙颣風颩颪颫颬颭颮颯颰颱颲颳颴颵颶颷颸颹颺颻颼颽颾颿飀飁飂飃飄飅飆飇飈飉飊飋飌飍飏飐飔飖飗飛飜飝飠飡飢飣飤�飥飦飩飪飫飬飭飮飯飰飱飲飳飴飵飶飷飸飹飺飻飼飽飾飿餀餁餂餃餄餅餆餇铩铫铮铯铳铴铵铷铹铼铽铿锃锂锆锇锉锊锍锎锏锒锓锔锕锖锘锛锝锞锟锢锪锫锩锬锱锲锴锶锷锸锼锾锿镂锵镄镅镆镉镌镎镏镒镓镔镖镗镘镙镛镞镟镝镡镢镤镥镦镧镨镩镪镫镬镯镱镲镳锺矧矬雉秕秭秣秫稆嵇稃稂稞稔�".split(""); +for(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];} +D[240] = "����������������������������������������������������������������餈餉養餋餌餎餏餑餒餓餔餕餖餗餘餙餚餛餜餝餞餟餠餡餢餣餤餥餦餧館餩餪餫餬餭餯餰餱餲餳餴餵餶餷餸餹餺餻餼餽餾餿饀饁饂饃饄饅饆饇饈饉�饊饋饌饍饎饏饐饑饒饓饖饗饘饙饚饛饜饝饞饟饠饡饢饤饦饳饸饹饻饾馂馃馉稹稷穑黏馥穰皈皎皓皙皤瓞瓠甬鸠鸢鸨鸩鸪鸫鸬鸲鸱鸶鸸鸷鸹鸺鸾鹁鹂鹄鹆鹇鹈鹉鹋鹌鹎鹑鹕鹗鹚鹛鹜鹞鹣鹦鹧鹨鹩鹪鹫鹬鹱鹭鹳疒疔疖疠疝疬疣疳疴疸痄疱疰痃痂痖痍痣痨痦痤痫痧瘃痱痼痿瘐瘀瘅瘌瘗瘊瘥瘘瘕瘙�".split(""); +for(j = 0; j != D[240].length; ++j) if(D[240][j].charCodeAt(0) !== 0xFFFD) { e[D[240][j]] = 61440 + j; d[61440 + j] = D[240][j];} +D[241] = "����������������������������������������������������������������馌馎馚馛馜馝馞馟馠馡馢馣馤馦馧馩馪馫馬馭馮馯馰馱馲馳馴馵馶馷馸馹馺馻馼馽馾馿駀駁駂駃駄駅駆駇駈駉駊駋駌駍駎駏駐駑駒駓駔駕駖駗駘�駙駚駛駜駝駞駟駠駡駢駣駤駥駦駧駨駩駪駫駬駭駮駯駰駱駲駳駴駵駶駷駸駹瘛瘼瘢瘠癀瘭瘰瘿瘵癃瘾瘳癍癞癔癜癖癫癯翊竦穸穹窀窆窈窕窦窠窬窨窭窳衤衩衲衽衿袂袢裆袷袼裉裢裎裣裥裱褚裼裨裾裰褡褙褓褛褊褴褫褶襁襦襻疋胥皲皴矜耒耔耖耜耠耢耥耦耧耩耨耱耋耵聃聆聍聒聩聱覃顸颀颃�".split(""); +for(j = 0; j != D[241].length; ++j) if(D[241][j].charCodeAt(0) !== 0xFFFD) { e[D[241][j]] = 61696 + j; d[61696 + j] = D[241][j];} +D[242] = "����������������������������������������������������������������駺駻駼駽駾駿騀騁騂騃騄騅騆騇騈騉騊騋騌騍騎騏騐騑騒験騔騕騖騗騘騙騚騛騜騝騞騟騠騡騢騣騤騥騦騧騨騩騪騫騬騭騮騯騰騱騲騳騴騵騶騷騸�騹騺騻騼騽騾騿驀驁驂驃驄驅驆驇驈驉驊驋驌驍驎驏驐驑驒驓驔驕驖驗驘驙颉颌颍颏颔颚颛颞颟颡颢颥颦虍虔虬虮虿虺虼虻蚨蚍蚋蚬蚝蚧蚣蚪蚓蚩蚶蛄蚵蛎蚰蚺蚱蚯蛉蛏蚴蛩蛱蛲蛭蛳蛐蜓蛞蛴蛟蛘蛑蜃蜇蛸蜈蜊蜍蜉蜣蜻蜞蜥蜮蜚蜾蝈蜴蜱蜩蜷蜿螂蜢蝽蝾蝻蝠蝰蝌蝮螋蝓蝣蝼蝤蝙蝥螓螯螨蟒�".split(""); +for(j = 0; j != D[242].length; ++j) if(D[242][j].charCodeAt(0) !== 0xFFFD) { e[D[242][j]] = 61952 + j; d[61952 + j] = D[242][j];} +D[243] = "����������������������������������������������������������������驚驛驜驝驞驟驠驡驢驣驤驥驦驧驨驩驪驫驲骃骉骍骎骔骕骙骦骩骪骫骬骭骮骯骲骳骴骵骹骻骽骾骿髃髄髆髇髈髉髊髍髎髏髐髒體髕髖髗髙髚髛髜�髝髞髠髢髣髤髥髧髨髩髪髬髮髰髱髲髳髴髵髶髷髸髺髼髽髾髿鬀鬁鬂鬄鬅鬆蟆螈螅螭螗螃螫蟥螬螵螳蟋蟓螽蟑蟀蟊蟛蟪蟠蟮蠖蠓蟾蠊蠛蠡蠹蠼缶罂罄罅舐竺竽笈笃笄笕笊笫笏筇笸笪笙笮笱笠笥笤笳笾笞筘筚筅筵筌筝筠筮筻筢筲筱箐箦箧箸箬箝箨箅箪箜箢箫箴篑篁篌篝篚篥篦篪簌篾篼簏簖簋�".split(""); +for(j = 0; j != D[243].length; ++j) if(D[243][j].charCodeAt(0) !== 0xFFFD) { e[D[243][j]] = 62208 + j; d[62208 + j] = D[243][j];} +D[244] = "����������������������������������������������������������������鬇鬉鬊鬋鬌鬍鬎鬐鬑鬒鬔鬕鬖鬗鬘鬙鬚鬛鬜鬝鬞鬠鬡鬢鬤鬥鬦鬧鬨鬩鬪鬫鬬鬭鬮鬰鬱鬳鬴鬵鬶鬷鬸鬹鬺鬽鬾鬿魀魆魊魋魌魎魐魒魓魕魖魗魘魙魚�魛魜魝魞魟魠魡魢魣魤魥魦魧魨魩魪魫魬魭魮魯魰魱魲魳魴魵魶魷魸魹魺魻簟簪簦簸籁籀臾舁舂舄臬衄舡舢舣舭舯舨舫舸舻舳舴舾艄艉艋艏艚艟艨衾袅袈裘裟襞羝羟羧羯羰羲籼敉粑粝粜粞粢粲粼粽糁糇糌糍糈糅糗糨艮暨羿翎翕翥翡翦翩翮翳糸絷綦綮繇纛麸麴赳趄趔趑趱赧赭豇豉酊酐酎酏酤�".split(""); +for(j = 0; j != D[244].length; ++j) if(D[244][j].charCodeAt(0) !== 0xFFFD) { e[D[244][j]] = 62464 + j; d[62464 + j] = D[244][j];} +D[245] = "����������������������������������������������������������������魼魽魾魿鮀鮁鮂鮃鮄鮅鮆鮇鮈鮉鮊鮋鮌鮍鮎鮏鮐鮑鮒鮓鮔鮕鮖鮗鮘鮙鮚鮛鮜鮝鮞鮟鮠鮡鮢鮣鮤鮥鮦鮧鮨鮩鮪鮫鮬鮭鮮鮯鮰鮱鮲鮳鮴鮵鮶鮷鮸鮹鮺�鮻鮼鮽鮾鮿鯀鯁鯂鯃鯄鯅鯆鯇鯈鯉鯊鯋鯌鯍鯎鯏鯐鯑鯒鯓鯔鯕鯖鯗鯘鯙鯚鯛酢酡酰酩酯酽酾酲酴酹醌醅醐醍醑醢醣醪醭醮醯醵醴醺豕鹾趸跫踅蹙蹩趵趿趼趺跄跖跗跚跞跎跏跛跆跬跷跸跣跹跻跤踉跽踔踝踟踬踮踣踯踺蹀踹踵踽踱蹉蹁蹂蹑蹒蹊蹰蹶蹼蹯蹴躅躏躔躐躜躞豸貂貊貅貘貔斛觖觞觚觜�".split(""); +for(j = 0; j != D[245].length; ++j) if(D[245][j].charCodeAt(0) !== 0xFFFD) { e[D[245][j]] = 62720 + j; d[62720 + j] = D[245][j];} +D[246] = "����������������������������������������������������������������鯜鯝鯞鯟鯠鯡鯢鯣鯤鯥鯦鯧鯨鯩鯪鯫鯬鯭鯮鯯鯰鯱鯲鯳鯴鯵鯶鯷鯸鯹鯺鯻鯼鯽鯾鯿鰀鰁鰂鰃鰄鰅鰆鰇鰈鰉鰊鰋鰌鰍鰎鰏鰐鰑鰒鰓鰔鰕鰖鰗鰘鰙鰚�鰛鰜鰝鰞鰟鰠鰡鰢鰣鰤鰥鰦鰧鰨鰩鰪鰫鰬鰭鰮鰯鰰鰱鰲鰳鰴鰵鰶鰷鰸鰹鰺鰻觥觫觯訾謦靓雩雳雯霆霁霈霏霎霪霭霰霾龀龃龅龆龇龈龉龊龌黾鼋鼍隹隼隽雎雒瞿雠銎銮鋈錾鍪鏊鎏鐾鑫鱿鲂鲅鲆鲇鲈稣鲋鲎鲐鲑鲒鲔鲕鲚鲛鲞鲟鲠鲡鲢鲣鲥鲦鲧鲨鲩鲫鲭鲮鲰鲱鲲鲳鲴鲵鲶鲷鲺鲻鲼鲽鳄鳅鳆鳇鳊鳋�".split(""); +for(j = 0; j != D[246].length; ++j) if(D[246][j].charCodeAt(0) !== 0xFFFD) { e[D[246][j]] = 62976 + j; d[62976 + j] = D[246][j];} +D[247] = "����������������������������������������������������������������鰼鰽鰾鰿鱀鱁鱂鱃鱄鱅鱆鱇鱈鱉鱊鱋鱌鱍鱎鱏鱐鱑鱒鱓鱔鱕鱖鱗鱘鱙鱚鱛鱜鱝鱞鱟鱠鱡鱢鱣鱤鱥鱦鱧鱨鱩鱪鱫鱬鱭鱮鱯鱰鱱鱲鱳鱴鱵鱶鱷鱸鱹鱺�鱻鱽鱾鲀鲃鲄鲉鲊鲌鲏鲓鲖鲗鲘鲙鲝鲪鲬鲯鲹鲾鲿鳀鳁鳂鳈鳉鳑鳒鳚鳛鳠鳡鳌鳍鳎鳏鳐鳓鳔鳕鳗鳘鳙鳜鳝鳟鳢靼鞅鞑鞒鞔鞯鞫鞣鞲鞴骱骰骷鹘骶骺骼髁髀髅髂髋髌髑魅魃魇魉魈魍魑飨餍餮饕饔髟髡髦髯髫髻髭髹鬈鬏鬓鬟鬣麽麾縻麂麇麈麋麒鏖麝麟黛黜黝黠黟黢黩黧黥黪黯鼢鼬鼯鼹鼷鼽鼾齄�".split(""); +for(j = 0; j != D[247].length; ++j) if(D[247][j].charCodeAt(0) !== 0xFFFD) { e[D[247][j]] = 63232 + j; d[63232 + j] = D[247][j];} +D[248] = "����������������������������������������������������������������鳣鳤鳥鳦鳧鳨鳩鳪鳫鳬鳭鳮鳯鳰鳱鳲鳳鳴鳵鳶鳷鳸鳹鳺鳻鳼鳽鳾鳿鴀鴁鴂鴃鴄鴅鴆鴇鴈鴉鴊鴋鴌鴍鴎鴏鴐鴑鴒鴓鴔鴕鴖鴗鴘鴙鴚鴛鴜鴝鴞鴟鴠鴡�鴢鴣鴤鴥鴦鴧鴨鴩鴪鴫鴬鴭鴮鴯鴰鴱鴲鴳鴴鴵鴶鴷鴸鴹鴺鴻鴼鴽鴾鴿鵀鵁鵂�".split(""); +for(j = 0; j != D[248].length; ++j) if(D[248][j].charCodeAt(0) !== 0xFFFD) { e[D[248][j]] = 63488 + j; d[63488 + j] = D[248][j];} +D[249] = "����������������������������������������������������������������鵃鵄鵅鵆鵇鵈鵉鵊鵋鵌鵍鵎鵏鵐鵑鵒鵓鵔鵕鵖鵗鵘鵙鵚鵛鵜鵝鵞鵟鵠鵡鵢鵣鵤鵥鵦鵧鵨鵩鵪鵫鵬鵭鵮鵯鵰鵱鵲鵳鵴鵵鵶鵷鵸鵹鵺鵻鵼鵽鵾鵿鶀鶁�鶂鶃鶄鶅鶆鶇鶈鶉鶊鶋鶌鶍鶎鶏鶐鶑鶒鶓鶔鶕鶖鶗鶘鶙鶚鶛鶜鶝鶞鶟鶠鶡鶢�".split(""); +for(j = 0; j != D[249].length; ++j) if(D[249][j].charCodeAt(0) !== 0xFFFD) { e[D[249][j]] = 63744 + j; d[63744 + j] = D[249][j];} +D[250] = "����������������������������������������������������������������鶣鶤鶥鶦鶧鶨鶩鶪鶫鶬鶭鶮鶯鶰鶱鶲鶳鶴鶵鶶鶷鶸鶹鶺鶻鶼鶽鶾鶿鷀鷁鷂鷃鷄鷅鷆鷇鷈鷉鷊鷋鷌鷍鷎鷏鷐鷑鷒鷓鷔鷕鷖鷗鷘鷙鷚鷛鷜鷝鷞鷟鷠鷡�鷢鷣鷤鷥鷦鷧鷨鷩鷪鷫鷬鷭鷮鷯鷰鷱鷲鷳鷴鷵鷶鷷鷸鷹鷺鷻鷼鷽鷾鷿鸀鸁鸂�".split(""); +for(j = 0; j != D[250].length; ++j) if(D[250][j].charCodeAt(0) !== 0xFFFD) { e[D[250][j]] = 64000 + j; d[64000 + j] = D[250][j];} +D[251] = "����������������������������������������������������������������鸃鸄鸅鸆鸇鸈鸉鸊鸋鸌鸍鸎鸏鸐鸑鸒鸓鸔鸕鸖鸗鸘鸙鸚鸛鸜鸝鸞鸤鸧鸮鸰鸴鸻鸼鹀鹍鹐鹒鹓鹔鹖鹙鹝鹟鹠鹡鹢鹥鹮鹯鹲鹴鹵鹶鹷鹸鹹鹺鹻鹼鹽麀�麁麃麄麅麆麉麊麌麍麎麏麐麑麔麕麖麗麘麙麚麛麜麞麠麡麢麣麤麥麧麨麩麪�".split(""); +for(j = 0; j != D[251].length; ++j) if(D[251][j].charCodeAt(0) !== 0xFFFD) { e[D[251][j]] = 64256 + j; d[64256 + j] = D[251][j];} +D[252] = "����������������������������������������������������������������麫麬麭麮麯麰麱麲麳麵麶麷麹麺麼麿黀黁黂黃黅黆黇黈黊黋黌黐黒黓黕黖黗黙黚點黡黣黤黦黨黫黬黭黮黰黱黲黳黴黵黶黷黸黺黽黿鼀鼁鼂鼃鼄鼅�鼆鼇鼈鼉鼊鼌鼏鼑鼒鼔鼕鼖鼘鼚鼛鼜鼝鼞鼟鼡鼣鼤鼥鼦鼧鼨鼩鼪鼫鼭鼮鼰鼱�".split(""); +for(j = 0; j != D[252].length; ++j) if(D[252][j].charCodeAt(0) !== 0xFFFD) { e[D[252][j]] = 64512 + j; d[64512 + j] = D[252][j];} +D[253] = "����������������������������������������������������������������鼲鼳鼴鼵鼶鼸鼺鼼鼿齀齁齂齃齅齆齇齈齉齊齋齌齍齎齏齒齓齔齕齖齗齘齙齚齛齜齝齞齟齠齡齢齣齤齥齦齧齨齩齪齫齬齭齮齯齰齱齲齳齴齵齶齷齸�齹齺齻齼齽齾龁龂龍龎龏龐龑龒龓龔龕龖龗龘龜龝龞龡龢龣龤龥郎凉秊裏隣�".split(""); +for(j = 0; j != D[253].length; ++j) if(D[253][j].charCodeAt(0) !== 0xFFFD) { e[D[253][j]] = 64768 + j; d[64768 + j] = D[253][j];} +D[254] = "����������������������������������������������������������������兀嗀﨎﨏﨑﨓﨔礼﨟蘒﨡﨣﨤﨧﨨﨩⺁⺄㑳㑇⺈⺋㖞㘚㘎⺌⺗㥮㤘㧏㧟㩳㧐㭎㱮㳠⺧⺪䁖䅟⺮䌷⺳⺶⺷䎱䎬⺻䏝䓖䙡䙌�䜣䜩䝼䞍⻊䥇䥺䥽䦂䦃䦅䦆䦟䦛䦷䦶䲣䲟䲠䲡䱷䲢䴓䴔䴕䴖䴗䴘䴙䶮�".split(""); +for(j = 0; j != D[254].length; ++j) if(D[254][j].charCodeAt(0) !== 0xFFFD) { e[D[254][j]] = 65024 + j; d[65024 + j] = D[254][j];} +return {"enc": e, "dec": d }; })(); diff --git a/node_modules/codepage/bits/57002.js b/node_modules/codepage/bits/57002.js new file mode 100644 index 000000000..59d121473 --- /dev/null +++ b/node_modules/codepage/bits/57002.js @@ -0,0 +1,39 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[57002] = (function(){ var d = [], e = {}, D = [], j; +D[0] = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ�ँंःअआइईउऊऋऎएऐऍऒओऔऑकखगघङचछजझञटठडढणतथदधनऩपफबभमयय़रऱलळऴवशषसह�ािीुूृॆेैॅॊोौॉ़्।������०१२३४५६७८९�����".split(""); +for(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];} +D[161] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ॐ����������������������".split(""); +for(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];} +D[166] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ऌ����������������������".split(""); +for(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];} +D[167] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ॡ����������������������".split(""); +for(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];} +D[170] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ॠ����������������������".split(""); +for(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];} +D[179] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������क़����������������������".split(""); +for(j = 0; j != D[179].length; ++j) if(D[179][j].charCodeAt(0) !== 0xFFFD) { e[D[179][j]] = 45824 + j; d[45824 + j] = D[179][j];} +D[180] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ख़����������������������".split(""); +for(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];} +D[181] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ग़����������������������".split(""); +for(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];} +D[186] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ज़����������������������".split(""); +for(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];} +D[191] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ड़����������������������".split(""); +for(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];} +D[192] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ढ़����������������������".split(""); +for(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];} +D[201] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������फ़����������������������".split(""); +for(j = 0; j != D[201].length; ++j) if(D[201][j].charCodeAt(0) !== 0xFFFD) { e[D[201][j]] = 51456 + j; d[51456 + j] = D[201][j];} +D[219] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ॢ����������������������".split(""); +for(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];} +D[220] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ॣ����������������������".split(""); +for(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];} +D[223] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ॄ����������������������".split(""); +for(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];} +D[234] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ऽ����������������������".split(""); +for(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];} +D[239] = "����������������������������������������������������������������९९९९९९९९९९९९������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];} +D[240] = "����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������॒������॰����������������������������������������������������������������".split(""); +for(j = 0; j != D[240].length; ++j) if(D[240][j].charCodeAt(0) !== 0xFFFD) { e[D[240][j]] = 61440 + j; d[61440 + j] = D[240][j];} +return {"enc": e, "dec": d }; })(); diff --git a/node_modules/codepage/bits/57003.js b/node_modules/codepage/bits/57003.js new file mode 100644 index 000000000..ce2caab79 --- /dev/null +++ b/node_modules/codepage/bits/57003.js @@ -0,0 +1,23 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[57003] = (function(){ var d = [], e = {}, D = [], j; +D[0] = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ�ঁংঃঅআইঈউঊঋএএঐঐওওঔঔকখগঘঙচছজঝঞটঠডঢণতথদধননপফবভমযয়ররলললবশষসহ�ািীুূৃেেৈৈোোৌৌ়্.������০১২৩৪৫৬৭৮৯�����".split(""); +for(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];} +D[166] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ঌ����������������������".split(""); +for(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];} +D[167] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ৡ����������������������".split(""); +for(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];} +D[170] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ৠ����������������������".split(""); +for(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];} +D[191] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ড়����������������������".split(""); +for(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];} +D[192] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ঢ়����������������������".split(""); +for(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];} +D[219] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ৢ����������������������".split(""); +for(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];} +D[220] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ৣ����������������������".split(""); +for(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];} +D[223] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ৄ����������������������".split(""); +for(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];} +D[239] = "����������������������������������������������������������������৯৯৯৯৯৯৯৯৯৯৯৯������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];} +return {"enc": e, "dec": d }; })(); diff --git a/node_modules/codepage/bits/57004.js b/node_modules/codepage/bits/57004.js new file mode 100644 index 000000000..947b12553 --- /dev/null +++ b/node_modules/codepage/bits/57004.js @@ -0,0 +1,7 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[57004] = (function(){ var d = [], e = {}, D = [], j; +D[0] = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ��ஂஃஅஆஇஈஉஊ�ஏஏஐஐஒஓஔஔககககஙசசஜஜஞடடடடணததததநனபபபபமயயரறலளழவஷஷஸஹ�ாிீுூ�ெேைைொோௌௌ்�.������0௧௨௩௪௫௬௭௮௯�����".split(""); +for(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];} +D[239] = "����������������������������������������������������������������௯௯௯௯௯௯௯௯௯௯௯௯������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];} +return {"enc": e, "dec": d }; })(); diff --git a/node_modules/codepage/bits/57005.js b/node_modules/codepage/bits/57005.js new file mode 100644 index 000000000..d42d58e54 --- /dev/null +++ b/node_modules/codepage/bits/57005.js @@ -0,0 +1,15 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[57005] = (function(){ var d = [], e = {}, D = [], j; +D[0] = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ�ఁంఃఅఆఇఈఉఊఋఎఏఐఐఒఓఔఔకఖగఘఙచఛజఝఞటఠడఢణతథదధననపఫబభమయయరఱలళళవశషసహ�ాిీుూృెేైైొోౌౌ్�.������౦౧౨౩౪౫౬౭౮౯�����".split(""); +for(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];} +D[166] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ఌ����������������������".split(""); +for(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];} +D[167] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ౡ����������������������".split(""); +for(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];} +D[170] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ౠ����������������������".split(""); +for(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];} +D[223] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ౄ����������������������".split(""); +for(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];} +D[239] = "����������������������������������������������������������������౯౯౯౯౯౯౯౯౯౯౯౯������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];} +return {"enc": e, "dec": d }; })(); diff --git a/node_modules/codepage/bits/57006.js b/node_modules/codepage/bits/57006.js new file mode 100644 index 000000000..00edd848b --- /dev/null +++ b/node_modules/codepage/bits/57006.js @@ -0,0 +1,23 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[57006] = (function(){ var d = [], e = {}, D = [], j; +D[0] = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ�ঁংঃঅআইঈউঊঋএএঐঐওওঔঔকখগঘঙচছজঝঞটঠডঢণতথদধননপফবভমযয়ররলললবশষসহ�ািীুূৃেেৈৈোোৌৌ়্.������০১২৩৪৫৬৭৮৯�����".split(""); +for(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];} +D[166] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ঌ����������������������".split(""); +for(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];} +D[167] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ৡ����������������������".split(""); +for(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];} +D[170] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ৠ����������������������".split(""); +for(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];} +D[191] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ড়����������������������".split(""); +for(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];} +D[192] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ঢ়����������������������".split(""); +for(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];} +D[219] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ৢ����������������������".split(""); +for(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];} +D[220] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ৣ����������������������".split(""); +for(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];} +D[223] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ৄ����������������������".split(""); +for(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];} +D[239] = "����������������������������������������������������������������৯৯৯৯৯৯৯৯৯৯৯৯������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];} +return {"enc": e, "dec": d }; })(); diff --git a/node_modules/codepage/bits/57007.js b/node_modules/codepage/bits/57007.js new file mode 100644 index 000000000..0f01b46dc --- /dev/null +++ b/node_modules/codepage/bits/57007.js @@ -0,0 +1,21 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[57007] = (function(){ var d = [], e = {}, D = [], j; +D[0] = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ�ଁଂଃଅଆଇଈଉଊଋଏଏଐଐଐଓଔଔକଖଗଘଙଚଛଜଝଞଟଠଡଢଣତଥଦଧନନପଫବଭମଯୟରରଲଳଳବଶଷସହ�ାିୀୁୂୃେେୈୈୋୋୌୌ଼୍.������୦୧୨୩୪୫୬୭୮୯�����".split(""); +for(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];} +D[166] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ఌ����������������������".split(""); +for(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];} +D[167] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ౡ����������������������".split(""); +for(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];} +D[170] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ౠ����������������������".split(""); +for(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];} +D[191] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ଡ଼����������������������".split(""); +for(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];} +D[192] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ଢ଼����������������������".split(""); +for(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];} +D[223] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ౄ����������������������".split(""); +for(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];} +D[234] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ଽ����������������������".split(""); +for(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];} +D[239] = "����������������������������������������������������������������୯୯୯୯୯୯୯୯୯୯୯୯������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];} +return {"enc": e, "dec": d }; })(); diff --git a/node_modules/codepage/bits/57008.js b/node_modules/codepage/bits/57008.js new file mode 100644 index 000000000..347d54695 --- /dev/null +++ b/node_modules/codepage/bits/57008.js @@ -0,0 +1,17 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[57008] = (function(){ var d = [], e = {}, D = [], j; +D[0] = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ��ಂಃಅಆಇಈಉಊಋಎಏಐಐಒಓಔಔಕಖಗಘಙಚಛಜಝಞಟಠಡಢಣತಥದಧನನಪಫಬಭಮಯಯರಱಲಳಳವಶಷಸಹ�ಾಿೀುೂೃೆೇೈೈೊೋೌೌ್�.������೦೧೨೩೪೫೬೭೮೯�����".split(""); +for(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];} +D[166] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ಌ����������������������".split(""); +for(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];} +D[167] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ೡ����������������������".split(""); +for(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];} +D[170] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ೠ����������������������".split(""); +for(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];} +D[201] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ೞ����������������������".split(""); +for(j = 0; j != D[201].length; ++j) if(D[201][j].charCodeAt(0) !== 0xFFFD) { e[D[201][j]] = 51456 + j; d[51456 + j] = D[201][j];} +D[223] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ೄ����������������������".split(""); +for(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];} +D[239] = "����������������������������������������������������������������೯೯೯೯೯೯೯೯೯೯೯೯������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];} +return {"enc": e, "dec": d }; })(); diff --git a/node_modules/codepage/bits/57009.js b/node_modules/codepage/bits/57009.js new file mode 100644 index 000000000..59c901032 --- /dev/null +++ b/node_modules/codepage/bits/57009.js @@ -0,0 +1,13 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[57009] = (function(){ var d = [], e = {}, D = [], j; +D[0] = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ��ംഃഅആഇഈഉഊഋഎഏഐഐഒഓഔഔകഖഗഘങചഛജഝഞടഠഡഢണതഥദധനനപഫബഭമയയരറലളഴവശഷസഹ�ാിീുൂൃെേൈൈൊോൌൌ്�.������൦൧൨൩൪൫൬൭൮൯�����".split(""); +for(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];} +D[166] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ഌ����������������������".split(""); +for(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];} +D[167] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ൡ����������������������".split(""); +for(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];} +D[170] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ൠ����������������������".split(""); +for(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];} +D[239] = "����������������������������������������������������������������൯൯൯൯൯൯൯൯൯൯൯൯������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];} +return {"enc": e, "dec": d }; })(); diff --git a/node_modules/codepage/bits/57010.js b/node_modules/codepage/bits/57010.js new file mode 100644 index 000000000..832f32637 --- /dev/null +++ b/node_modules/codepage/bits/57010.js @@ -0,0 +1,15 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[57010] = (function(){ var d = [], e = {}, D = [], j; +D[0] = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ�ઁંઃઅઆઇઈઉઊઋએએઐઍઍઓઔઑકખગઘઙચછજઝઞટઠડઢણતથદધનનપફબભમયયરરલળળવશષસહ�ાિીુૂૃેેૈૅોોૌૉ઼્.������૦૧૨૩૪૫૬૭૮૯�����".split(""); +for(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];} +D[161] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ૐ����������������������".split(""); +for(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];} +D[170] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ૠ����������������������".split(""); +for(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];} +D[223] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ૄ����������������������".split(""); +for(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];} +D[234] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ઽ����������������������".split(""); +for(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];} +D[239] = "����������������������������������������������������������������૯૯૯૯૯૯૯૯૯૯૯૯������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];} +return {"enc": e, "dec": d }; })(); diff --git a/node_modules/codepage/bits/57011.js b/node_modules/codepage/bits/57011.js new file mode 100644 index 000000000..c288d0da8 --- /dev/null +++ b/node_modules/codepage/bits/57011.js @@ -0,0 +1,17 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[57011] = (function(){ var d = [], e = {}, D = [], j; +D[0] = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ��ਂ�ਅਆਇਈਉਊ�ਏਏਐਐਐਓਔਔਕਖਗਘਙਚਛਜਝਞਟਠਡਢਣਤਥਦਧਨਨਪਫਬਭਮਯਯਰਰਲਲ਼ਲ਼ਵਸ਼ਸ਼ਸਹ�ਾਿੀੁੂ�ੇੇੈੈੋੋੌੌ਼੍.������੦੧੨੩੪੫੬੭੮੯�����".split(""); +for(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];} +D[180] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ਖ਼����������������������".split(""); +for(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];} +D[181] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ਗ਼����������������������".split(""); +for(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];} +D[186] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ਜ਼����������������������".split(""); +for(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];} +D[192] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ੜ����������������������".split(""); +for(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];} +D[201] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ਫ਼����������������������".split(""); +for(j = 0; j != D[201].length; ++j) if(D[201][j].charCodeAt(0) !== 0xFFFD) { e[D[201][j]] = 51456 + j; d[51456 + j] = D[201][j];} +D[239] = "����������������������������������������������������������������੯੯੯੯੯੯੯੯੯੯੯੯������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];} +return {"enc": e, "dec": d }; })(); diff --git a/node_modules/codepage/bits/620.js b/node_modules/codepage/bits/620.js new file mode 100644 index 000000000..c72dc0fab --- /dev/null +++ b/node_modules/codepage/bits/620.js @@ -0,0 +1,2 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[620] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÇüéâäàąçêëèïîćÄĄĘęłôöĆûùŚÖÜ¢Ł¥śƒŹŻóÓńŃźż¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); diff --git a/node_modules/codepage/bits/708.js b/node_modules/codepage/bits/708.js new file mode 100644 index 000000000..d700e3452 --- /dev/null +++ b/node_modules/codepage/bits/708.js @@ -0,0 +1,2 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[708] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~│┤éâ╡à╢çêëèïî╖╕╣║╗╝ô╜╛ûù┐└š›œžŸ┴┬├¤─┼╞╟╚╔╩،╦«»░▒▓╠═╬╧╨╤╥╙؛╘╒╓؟╫ءآأؤإئابةتثجحخدذرزسشصضطظعغ█▄▌▐▀ـفقكلمنهوىيًٌٍَُِّْ╪┘┌µ£■ ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); diff --git a/node_modules/codepage/bits/720.js b/node_modules/codepage/bits/720.js new file mode 100644 index 000000000..083dab4df --- /dev/null +++ b/node_modules/codepage/bits/720.js @@ -0,0 +1,2 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[720] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€éâ„à†çêëèïّْô¤ـûùءآأؤ£إئابةتثجحخدذرزسشص«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀ضطظعغفµقكلمنهوىي≡ًٌٍَُِ≈°∙·√ⁿ²■ ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); diff --git a/node_modules/codepage/bits/737.js b/node_modules/codepage/bits/737.js new file mode 100644 index 000000000..c517f3ef0 --- /dev/null +++ b/node_modules/codepage/bits/737.js @@ -0,0 +1,2 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[737] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩαβγδεζηθικλμνξοπρσςτυφχψ░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀ωάέήϊίόύϋώΆΈΉΊΌΎΏ±≥≤ΪΫ÷≈°∙·√ⁿ²■ ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); diff --git a/node_modules/codepage/bits/775.js b/node_modules/codepage/bits/775.js new file mode 100644 index 000000000..467e8739f --- /dev/null +++ b/node_modules/codepage/bits/775.js @@ -0,0 +1,2 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[775] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ĆüéāäģåćłēŖŗīŹÄÅÉæÆōöĢ¢ŚśÖÜø£ØפĀĪóŻżź”¦©®¬½¼Ł«»░▒▓│┤ĄČĘĖ╣║╗╝ĮŠ┐└┴┬├─┼ŲŪ╚╔╩╦╠═╬Žąčęėįšųūž┘┌█▄▌▐▀ÓßŌŃõÕµńĶķĻļņĒŅ’­±“¾¶§÷„°∙·¹³²■ ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); diff --git a/node_modules/codepage/bits/808.js b/node_modules/codepage/bits/808.js new file mode 100644 index 000000000..3a881d81c --- /dev/null +++ b/node_modules/codepage/bits/808.js @@ -0,0 +1,2 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[808] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀рстуфхцчшщъыьэюяЁёЄєЇїЎў°∙·√№€■ ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); diff --git a/node_modules/codepage/bits/850.js b/node_modules/codepage/bits/850.js new file mode 100644 index 000000000..29db043a4 --- /dev/null +++ b/node_modules/codepage/bits/850.js @@ -0,0 +1,2 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[850] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø׃áíóúñѪº¿®¬½¼¡«»░▒▓│┤ÁÂÀ©╣║╗╝¢¥┐└┴┬├─┼ãÃ╚╔╩╦╠═╬¤ðÐÊËÈıÍÎÏ┘┌█▄¦Ì▀ÓßÔÒõÕµþÞÚÛÙýݯ´­±‗¾¶§÷¸°¨·¹³²■ ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); diff --git a/node_modules/codepage/bits/852.js b/node_modules/codepage/bits/852.js new file mode 100644 index 000000000..e7d3bef53 --- /dev/null +++ b/node_modules/codepage/bits/852.js @@ -0,0 +1,2 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[852] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÇüéâäůćçłëŐőîŹÄĆÉĹĺôöĽľŚśÖÜŤťŁ×čáíóúĄąŽžĘ꬟Ⱥ«»░▒▓│┤ÁÂĚŞ╣║╗╝Żż┐└┴┬├─┼Ăă╚╔╩╦╠═╬¤đĐĎËďŇÍÎě┘┌█▄ŢŮ▀ÓßÔŃńňŠšŔÚŕŰýÝţ´­˝˛ˇ˘§÷¸°¨˙űŘř■ ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); diff --git a/node_modules/codepage/bits/855.js b/node_modules/codepage/bits/855.js new file mode 100644 index 000000000..58737e836 --- /dev/null +++ b/node_modules/codepage/bits/855.js @@ -0,0 +1,2 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[855] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ђЂѓЃёЁєЄѕЅіІїЇјЈљЉњЊћЋќЌўЎџЏюЮъЪаАбБцЦдДеЕфФгГ«»░▒▓│┤хХиИ╣║╗╝йЙ┐└┴┬├─┼кК╚╔╩╦╠═╬¤лЛмМнНоОп┘┌█▄Пя▀ЯрРсСтТуУжЖвВьЬ№­ыЫзЗшШэЭщЩчЧ§■ ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); diff --git a/node_modules/codepage/bits/857.js b/node_modules/codepage/bits/857.js new file mode 100644 index 000000000..48ff226fe --- /dev/null +++ b/node_modules/codepage/bits/857.js @@ -0,0 +1,2 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[857] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÇüéâäàåçêëèïîıÄÅÉæÆôöòûùİÖÜø£ØŞşáíóúñÑĞ𿮬½¼¡«»░▒▓│┤ÁÂÀ©╣║╗╝¢¥┐└┴┬├─┼ãÃ╚╔╩╦╠═╬¤ºªÊËÈ�ÍÎÏ┘┌█▄¦Ì▀ÓßÔÒõÕµ�×ÚÛÙìÿ¯´­±�¾¶§÷¸°¨·¹³²■ ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); diff --git a/node_modules/codepage/bits/858.js b/node_modules/codepage/bits/858.js new file mode 100644 index 000000000..fccce1110 --- /dev/null +++ b/node_modules/codepage/bits/858.js @@ -0,0 +1,2 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[858] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø׃áíóúñѪº¿®¬½¼¡«»░▒▓│┤ÁÂÀ©╣║╗╝¢¥┐└┴┬├─┼ãÃ╚╔╩╦╠═╬¤ðÐÊËÈ€ÍÎÏ┘┌█▄¦Ì▀ÓßÔÒõÕµþÞÚÛÙýݯ´­±‗¾¶§÷¸°¨·¹³²■ ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); diff --git a/node_modules/codepage/bits/860.js b/node_modules/codepage/bits/860.js new file mode 100644 index 000000000..93a21ad26 --- /dev/null +++ b/node_modules/codepage/bits/860.js @@ -0,0 +1,2 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[860] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÇüéâãàÁçêÊèÍÔìÃÂÉÀÈôõòÚùÌÕÜ¢£Ù₧ÓáíóúñѪº¿Ò¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); diff --git a/node_modules/codepage/bits/861.js b/node_modules/codepage/bits/861.js new file mode 100644 index 000000000..df81ade89 --- /dev/null +++ b/node_modules/codepage/bits/861.js @@ -0,0 +1,2 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[861] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÇüéâäàåçêëèÐðÞÄÅÉæÆôöþûÝýÖÜø£Ø₧ƒáíóúÁÍÓÚ¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); diff --git a/node_modules/codepage/bits/862.js b/node_modules/codepage/bits/862.js new file mode 100644 index 000000000..8046a50f7 --- /dev/null +++ b/node_modules/codepage/bits/862.js @@ -0,0 +1,2 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[862] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~אבגדהוזחטיךכלםמןנסעףפץצקרשת¢£¥₧ƒáíóúñѪº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); diff --git a/node_modules/codepage/bits/863.js b/node_modules/codepage/bits/863.js new file mode 100644 index 000000000..05b8771a5 --- /dev/null +++ b/node_modules/codepage/bits/863.js @@ -0,0 +1,2 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[863] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÇüéâÂà¶çêëèïî‗À§ÉÈÊôËÏûù¤ÔÜ¢£ÙÛƒ¦´óú¨¸³¯Î⌐¬½¼¾«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); diff --git a/node_modules/codepage/bits/864.js b/node_modules/codepage/bits/864.js new file mode 100644 index 000000000..8645b7b44 --- /dev/null +++ b/node_modules/codepage/bits/864.js @@ -0,0 +1,2 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[864] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$٪&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~°·∙√▒─│┼┤┬├┴┐┌└┘β∞φ±½¼≈«»ﻷﻸ��ﻻﻼ� ­ﺂ£¤ﺄ��ﺎﺏﺕﺙ،ﺝﺡﺥ٠١٢٣٤٥٦٧٨٩ﻑ؛ﺱﺵﺹ؟¢ﺀﺁﺃﺅﻊﺋﺍﺑﺓﺗﺛﺟﺣﺧﺩﺫﺭﺯﺳﺷﺻﺿﻁﻅﻋﻏ¦¬÷×ﻉـﻓﻗﻛﻟﻣﻧﻫﻭﻯﻳﺽﻌﻎﻍﻡﹽّﻥﻩﻬﻰﻲﻐﻕﻵﻶﻝﻙﻱ■�", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); diff --git a/node_modules/codepage/bits/865.js b/node_modules/codepage/bits/865.js new file mode 100644 index 000000000..c4abaa391 --- /dev/null +++ b/node_modules/codepage/bits/865.js @@ -0,0 +1,2 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[865] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø₧ƒáíóúñѪº¿⌐¬½¼¡«¤░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); diff --git a/node_modules/codepage/bits/866.js b/node_modules/codepage/bits/866.js new file mode 100644 index 000000000..0ae955a66 --- /dev/null +++ b/node_modules/codepage/bits/866.js @@ -0,0 +1,2 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[866] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀рстуфхцчшщъыьэюяЁёЄєЇїЎў°∙·√№¤■ ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); diff --git a/node_modules/codepage/bits/869.js b/node_modules/codepage/bits/869.js new file mode 100644 index 000000000..b16345562 --- /dev/null +++ b/node_modules/codepage/bits/869.js @@ -0,0 +1,2 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[869] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~������Ά�·¬¦‘’Έ―ΉΊΪΌ��ΎΫ©Ώ²³ά£έήίϊΐόύΑΒΓΔΕΖΗ½ΘΙ«»░▒▓│┤ΚΛΜΝ╣║╗╝ΞΟ┐└┴┬├─┼ΠΡ╚╔╩╦╠═╬ΣΤΥΦΧΨΩαβγ┘┌█▄δε▀ζηθικλμνξοπρσςτ΄­±υφχ§ψ΅°¨ωϋΰώ■ ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); diff --git a/node_modules/codepage/bits/870.js b/node_modules/codepage/bits/870.js new file mode 100644 index 000000000..72a7a5f3e --- /dev/null +++ b/node_modules/codepage/bits/870.js @@ -0,0 +1,2 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[870] = (function(){ var d = "\u0000\u0001\u0002\u0003œ\t†—Ž\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013…\b‡\u0018\u0019’\u001c\u001d\u001e\u001f€‚ƒ„\n\u0017\u001bˆ‰Š‹Œ\u0005\u0006\u0007‘\u0016“”•–\u0004˜™š›\u0014\u0015ž\u001a  âäţáăčçć[.<(+!&éęëůíîľĺß]$*);^-/ÂÄ˝ÁĂČÇĆ|,%_>?ˇÉĘËŮÍÎĽĹ`:#@'=\"˘abcdefghiśňđýřş°jklmnopqrłńš¸˛¤ą~stuvwxyzŚŇĐÝŘŞ˙ĄżŢŻ§žźŽŹŁŃŠ¨´×{ABCDEFGHI­ôöŕóő}JKLMNOPQRĚűüťúě\\÷STUVWXYZďÔÖŔÓŐ0123456789ĎŰܫڟ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); diff --git a/node_modules/codepage/bits/872.js b/node_modules/codepage/bits/872.js new file mode 100644 index 000000000..fbdd9269a --- /dev/null +++ b/node_modules/codepage/bits/872.js @@ -0,0 +1,2 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[872] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ђЂѓЃёЁєЄѕЅіІїЇјЈљЉњЊћЋќЌўЎџЏюЮъЪаАбБцЦдДеЕфФгГ«»░▒▓│┤хХиИ╣║╗╝йЙ┐└┴┬├─┼кК╚╔╩╦╠═╬€лЛмМнНоОп┘┌█▄Пя▀ЯрРсСтТуУжЖвВьЬ№­ыЫзЗшШэЭщЩчЧ§■ ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); diff --git a/node_modules/codepage/bits/874.js b/node_modules/codepage/bits/874.js new file mode 100644 index 000000000..1a4b9bf4a --- /dev/null +++ b/node_modules/codepage/bits/874.js @@ -0,0 +1,2 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[874] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€����…�����������‘’“”•–—�������� กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); diff --git a/node_modules/codepage/bits/875.js b/node_modules/codepage/bits/875.js new file mode 100644 index 000000000..6f8ec8c5b --- /dev/null +++ b/node_modules/codepage/bits/875.js @@ -0,0 +1,2 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[875] = (function(){ var d = "\u0000\u0001\u0002\u0003œ\t†—Ž\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013…\b‡\u0018\u0019’\u001c\u001d\u001e\u001f€‚ƒ„\n\u0017\u001bˆ‰Š‹Œ\u0005\u0006\u0007‘\u0016“”•–\u0004˜™š›\u0014\u0015ž\u001a ΑΒΓΔΕΖΗΘΙ[.<(+!&ΚΛΜΝΞΟΠΡΣ]$*);^-/ΤΥΦΧΨΩΪΫ|,%_>?¨ΆΈΉ ΊΌΎΏ`:#@'=\"΅abcdefghiαβγδεζ°jklmnopqrηθικλμ´~stuvwxyzνξοπρσ£άέήϊίόύϋώςτυφχψ{ABCDEFGHI­ωΐΰ‘―}JKLMNOPQR±½\u001a·’¦\\\u001aSTUVWXYZ²§\u001a\u001a«¬0123456789³©\u001a\u001a»Ÿ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); diff --git a/node_modules/codepage/bits/895.js b/node_modules/codepage/bits/895.js new file mode 100644 index 000000000..8f7b55cf0 --- /dev/null +++ b/node_modules/codepage/bits/895.js @@ -0,0 +1,2 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[895] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ČüéďäĎŤčěĚĹÍľǪÄÁÉžŽôöÓůÚýÖÜŠĽÝŘťáíóúňŇŮÔšřŕŔ¼§«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); diff --git a/node_modules/codepage/bits/932.js b/node_modules/codepage/bits/932.js new file mode 100644 index 000000000..a8a3366f7 --- /dev/null +++ b/node_modules/codepage/bits/932.js @@ -0,0 +1,95 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[932] = (function(){ var d = [], e = {}, D = [], j; +D[0] = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~���������������������������������。「」、・ヲァィゥェォャュョッーアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワン゙゚��������������������������������".split(""); +for(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];} +D[129] = "���������������������������������������������������������������� 、。,.・:;?!゛゜´`¨^ ̄_ヽヾゝゞ〃仝々〆〇ー―‐/\~∥|…‥‘’“”()〔〕[]{}〈〉《》「」『』【】+-±×�÷=≠<>≦≧∞∴♂♀°′″℃¥$¢£%#&*@§☆★○●◎◇◆□■△▲▽▼※〒→←↑↓〓�����������∈∋⊆⊇⊂⊃∪∩��������∧∨¬⇒⇔∀∃�����������∠⊥⌒∂∇≡≒≪≫√∽∝∵∫∬�������ʼn♯♭♪†‡¶����◯���".split(""); +for(j = 0; j != D[129].length; ++j) if(D[129][j].charCodeAt(0) !== 0xFFFD) { e[D[129][j]] = 33024 + j; d[33024 + j] = D[129][j];} +D[130] = "�������������������������������������������������������������������������������0123456789�������ABCDEFGHIJKLMNOPQRSTUVWXYZ�������abcdefghijklmnopqrstuvwxyz����ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをん��������������".split(""); +for(j = 0; j != D[130].length; ++j) if(D[130][j].charCodeAt(0) !== 0xFFFD) { e[D[130][j]] = 33280 + j; d[33280 + j] = D[130][j];} +D[131] = "����������������������������������������������������������������ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミ�ムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶ��������ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ��������αβγδεζηθικλμνξοπρστυφχψω�����������������������������������������".split(""); +for(j = 0; j != D[131].length; ++j) if(D[131][j].charCodeAt(0) !== 0xFFFD) { e[D[131][j]] = 33536 + j; d[33536 + j] = D[131][j];} +D[132] = "����������������������������������������������������������������АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ���������������абвгдеёжзийклмн�опрстуфхцчшщъыьэюя�������������─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂�����������������������������������������������������������������".split(""); +for(j = 0; j != D[132].length; ++j) if(D[132][j].charCodeAt(0) !== 0xFFFD) { e[D[132][j]] = 33792 + j; d[33792 + j] = D[132][j];} +D[135] = "����������������������������������������������������������������①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯⑰⑱⑲⑳ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩ�㍉㌔㌢㍍㌘㌧㌃㌶㍑㍗㌍㌦㌣㌫㍊㌻㎜㎝㎞㎎㎏㏄㎡��������㍻�〝〟№㏍℡㊤㊥㊦㊧㊨㈱㈲㈹㍾㍽㍼≒≡∫∮∑√⊥∠∟⊿∵∩∪���������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[135].length; ++j) if(D[135][j].charCodeAt(0) !== 0xFFFD) { e[D[135][j]] = 34560 + j; d[34560 + j] = D[135][j];} +D[136] = "���������������������������������������������������������������������������������������������������������������������������������������������������������������亜唖娃阿哀愛挨姶逢葵茜穐悪握渥旭葦芦鯵梓圧斡扱宛姐虻飴絢綾鮎或粟袷安庵按暗案闇鞍杏以伊位依偉囲夷委威尉惟意慰易椅為畏異移維緯胃萎衣謂違遺医井亥域育郁磯一壱溢逸稲茨芋鰯允印咽員因姻引飲淫胤蔭���".split(""); +for(j = 0; j != D[136].length; ++j) if(D[136][j].charCodeAt(0) !== 0xFFFD) { e[D[136][j]] = 34816 + j; d[34816 + j] = D[136][j];} +D[137] = "����������������������������������������������������������������院陰隠韻吋右宇烏羽迂雨卯鵜窺丑碓臼渦嘘唄欝蔚鰻姥厩浦瓜閏噂云運雲荏餌叡営嬰影映曳栄永泳洩瑛盈穎頴英衛詠鋭液疫益駅悦謁越閲榎厭円�園堰奄宴延怨掩援沿演炎焔煙燕猿縁艶苑薗遠鉛鴛塩於汚甥凹央奥往応押旺横欧殴王翁襖鴬鴎黄岡沖荻億屋憶臆桶牡乙俺卸恩温穏音下化仮何伽価佳加可嘉夏嫁家寡科暇果架歌河火珂禍禾稼箇花苛茄荷華菓蝦課嘩貨迦過霞蚊俄峨我牙画臥芽蛾賀雅餓駕介会解回塊壊廻快怪悔恢懐戒拐改���".split(""); +for(j = 0; j != D[137].length; ++j) if(D[137][j].charCodeAt(0) !== 0xFFFD) { e[D[137][j]] = 35072 + j; d[35072 + j] = D[137][j];} +D[138] = "����������������������������������������������������������������魁晦械海灰界皆絵芥蟹開階貝凱劾外咳害崖慨概涯碍蓋街該鎧骸浬馨蛙垣柿蛎鈎劃嚇各廓拡撹格核殻獲確穫覚角赫較郭閣隔革学岳楽額顎掛笠樫�橿梶鰍潟割喝恰括活渇滑葛褐轄且鰹叶椛樺鞄株兜竃蒲釜鎌噛鴨栢茅萱粥刈苅瓦乾侃冠寒刊勘勧巻喚堪姦完官寛干幹患感慣憾換敢柑桓棺款歓汗漢澗潅環甘監看竿管簡緩缶翰肝艦莞観諌貫還鑑間閑関陥韓館舘丸含岸巌玩癌眼岩翫贋雁頑顔願企伎危喜器基奇嬉寄岐希幾忌揮机旗既期棋棄���".split(""); +for(j = 0; j != D[138].length; ++j) if(D[138][j].charCodeAt(0) !== 0xFFFD) { e[D[138][j]] = 35328 + j; d[35328 + j] = D[138][j];} +D[139] = "����������������������������������������������������������������機帰毅気汽畿祈季稀紀徽規記貴起軌輝飢騎鬼亀偽儀妓宜戯技擬欺犠疑祇義蟻誼議掬菊鞠吉吃喫桔橘詰砧杵黍却客脚虐逆丘久仇休及吸宮弓急救�朽求汲泣灸球究窮笈級糾給旧牛去居巨拒拠挙渠虚許距鋸漁禦魚亨享京供侠僑兇競共凶協匡卿叫喬境峡強彊怯恐恭挟教橋況狂狭矯胸脅興蕎郷鏡響饗驚仰凝尭暁業局曲極玉桐粁僅勤均巾錦斤欣欽琴禁禽筋緊芹菌衿襟謹近金吟銀九倶句区狗玖矩苦躯駆駈駒具愚虞喰空偶寓遇隅串櫛釧屑屈���".split(""); +for(j = 0; j != D[139].length; ++j) if(D[139][j].charCodeAt(0) !== 0xFFFD) { e[D[139][j]] = 35584 + j; d[35584 + j] = D[139][j];} +D[140] = "����������������������������������������������������������������掘窟沓靴轡窪熊隈粂栗繰桑鍬勲君薫訓群軍郡卦袈祁係傾刑兄啓圭珪型契形径恵慶慧憩掲携敬景桂渓畦稽系経継繋罫茎荊蛍計詣警軽頚鶏芸迎鯨�劇戟撃激隙桁傑欠決潔穴結血訣月件倹倦健兼券剣喧圏堅嫌建憲懸拳捲検権牽犬献研硯絹県肩見謙賢軒遣鍵険顕験鹸元原厳幻弦減源玄現絃舷言諺限乎個古呼固姑孤己庫弧戸故枯湖狐糊袴股胡菰虎誇跨鈷雇顧鼓五互伍午呉吾娯後御悟梧檎瑚碁語誤護醐乞鯉交佼侯候倖光公功効勾厚口向���".split(""); +for(j = 0; j != D[140].length; ++j) if(D[140][j].charCodeAt(0) !== 0xFFFD) { e[D[140][j]] = 35840 + j; d[35840 + j] = D[140][j];} +D[141] = "����������������������������������������������������������������后喉坑垢好孔孝宏工巧巷幸広庚康弘恒慌抗拘控攻昂晃更杭校梗構江洪浩港溝甲皇硬稿糠紅紘絞綱耕考肯肱腔膏航荒行衡講貢購郊酵鉱砿鋼閤降�項香高鴻剛劫号合壕拷濠豪轟麹克刻告国穀酷鵠黒獄漉腰甑忽惚骨狛込此頃今困坤墾婚恨懇昏昆根梱混痕紺艮魂些佐叉唆嵯左差査沙瑳砂詐鎖裟坐座挫債催再最哉塞妻宰彩才採栽歳済災采犀砕砦祭斎細菜裁載際剤在材罪財冴坂阪堺榊肴咲崎埼碕鷺作削咋搾昨朔柵窄策索錯桜鮭笹匙冊刷���".split(""); +for(j = 0; j != D[141].length; ++j) if(D[141][j].charCodeAt(0) !== 0xFFFD) { e[D[141][j]] = 36096 + j; d[36096 + j] = D[141][j];} +D[142] = "����������������������������������������������������������������察拶撮擦札殺薩雑皐鯖捌錆鮫皿晒三傘参山惨撒散桟燦珊産算纂蚕讃賛酸餐斬暫残仕仔伺使刺司史嗣四士始姉姿子屍市師志思指支孜斯施旨枝止�死氏獅祉私糸紙紫肢脂至視詞詩試誌諮資賜雌飼歯事似侍児字寺慈持時次滋治爾璽痔磁示而耳自蒔辞汐鹿式識鴫竺軸宍雫七叱執失嫉室悉湿漆疾質実蔀篠偲柴芝屡蕊縞舎写射捨赦斜煮社紗者謝車遮蛇邪借勺尺杓灼爵酌釈錫若寂弱惹主取守手朱殊狩珠種腫趣酒首儒受呪寿授樹綬需囚収周���".split(""); +for(j = 0; j != D[142].length; ++j) if(D[142][j].charCodeAt(0) !== 0xFFFD) { e[D[142][j]] = 36352 + j; d[36352 + j] = D[142][j];} +D[143] = "����������������������������������������������������������������宗就州修愁拾洲秀秋終繍習臭舟蒐衆襲讐蹴輯週酋酬集醜什住充十従戎柔汁渋獣縦重銃叔夙宿淑祝縮粛塾熟出術述俊峻春瞬竣舜駿准循旬楯殉淳�準潤盾純巡遵醇順処初所暑曙渚庶緒署書薯藷諸助叙女序徐恕鋤除傷償勝匠升召哨商唱嘗奨妾娼宵将小少尚庄床廠彰承抄招掌捷昇昌昭晶松梢樟樵沼消渉湘焼焦照症省硝礁祥称章笑粧紹肖菖蒋蕉衝裳訟証詔詳象賞醤鉦鍾鐘障鞘上丈丞乗冗剰城場壌嬢常情擾条杖浄状畳穣蒸譲醸錠嘱埴飾���".split(""); +for(j = 0; j != D[143].length; ++j) if(D[143][j].charCodeAt(0) !== 0xFFFD) { e[D[143][j]] = 36608 + j; d[36608 + j] = D[143][j];} +D[144] = "����������������������������������������������������������������拭植殖燭織職色触食蝕辱尻伸信侵唇娠寝審心慎振新晋森榛浸深申疹真神秦紳臣芯薪親診身辛進針震人仁刃塵壬尋甚尽腎訊迅陣靭笥諏須酢図厨�逗吹垂帥推水炊睡粋翠衰遂酔錐錘随瑞髄崇嵩数枢趨雛据杉椙菅頗雀裾澄摺寸世瀬畝是凄制勢姓征性成政整星晴棲栖正清牲生盛精聖声製西誠誓請逝醒青静斉税脆隻席惜戚斥昔析石積籍績脊責赤跡蹟碩切拙接摂折設窃節説雪絶舌蝉仙先千占宣専尖川戦扇撰栓栴泉浅洗染潜煎煽旋穿箭線���".split(""); +for(j = 0; j != D[144].length; ++j) if(D[144][j].charCodeAt(0) !== 0xFFFD) { e[D[144][j]] = 36864 + j; d[36864 + j] = D[144][j];} +D[145] = "����������������������������������������������������������������繊羨腺舛船薦詮賎践選遷銭銑閃鮮前善漸然全禅繕膳糎噌塑岨措曾曽楚狙疏疎礎祖租粗素組蘇訴阻遡鼠僧創双叢倉喪壮奏爽宋層匝惣想捜掃挿掻�操早曹巣槍槽漕燥争痩相窓糟総綜聡草荘葬蒼藻装走送遭鎗霜騒像増憎臓蔵贈造促側則即息捉束測足速俗属賊族続卒袖其揃存孫尊損村遜他多太汰詑唾堕妥惰打柁舵楕陀駄騨体堆対耐岱帯待怠態戴替泰滞胎腿苔袋貸退逮隊黛鯛代台大第醍題鷹滝瀧卓啄宅托択拓沢濯琢託鐸濁諾茸凧蛸只���".split(""); +for(j = 0; j != D[145].length; ++j) if(D[145][j].charCodeAt(0) !== 0xFFFD) { e[D[145][j]] = 37120 + j; d[37120 + j] = D[145][j];} +D[146] = "����������������������������������������������������������������叩但達辰奪脱巽竪辿棚谷狸鱈樽誰丹単嘆坦担探旦歎淡湛炭短端箪綻耽胆蛋誕鍛団壇弾断暖檀段男談値知地弛恥智池痴稚置致蜘遅馳築畜竹筑蓄�逐秩窒茶嫡着中仲宙忠抽昼柱注虫衷註酎鋳駐樗瀦猪苧著貯丁兆凋喋寵帖帳庁弔張彫徴懲挑暢朝潮牒町眺聴脹腸蝶調諜超跳銚長頂鳥勅捗直朕沈珍賃鎮陳津墜椎槌追鎚痛通塚栂掴槻佃漬柘辻蔦綴鍔椿潰坪壷嬬紬爪吊釣鶴亭低停偵剃貞呈堤定帝底庭廷弟悌抵挺提梯汀碇禎程締艇訂諦蹄逓���".split(""); +for(j = 0; j != D[146].length; ++j) if(D[146][j].charCodeAt(0) !== 0xFFFD) { e[D[146][j]] = 37376 + j; d[37376 + j] = D[146][j];} +D[147] = "����������������������������������������������������������������邸鄭釘鼎泥摘擢敵滴的笛適鏑溺哲徹撤轍迭鉄典填天展店添纏甜貼転顛点伝殿澱田電兎吐堵塗妬屠徒斗杜渡登菟賭途都鍍砥砺努度土奴怒倒党冬�凍刀唐塔塘套宕島嶋悼投搭東桃梼棟盗淘湯涛灯燈当痘祷等答筒糖統到董蕩藤討謄豆踏逃透鐙陶頭騰闘働動同堂導憧撞洞瞳童胴萄道銅峠鴇匿得徳涜特督禿篤毒独読栃橡凸突椴届鳶苫寅酉瀞噸屯惇敦沌豚遁頓呑曇鈍奈那内乍凪薙謎灘捺鍋楢馴縄畷南楠軟難汝二尼弐迩匂賑肉虹廿日乳入���".split(""); +for(j = 0; j != D[147].length; ++j) if(D[147][j].charCodeAt(0) !== 0xFFFD) { e[D[147][j]] = 37632 + j; d[37632 + j] = D[147][j];} +D[148] = "����������������������������������������������������������������如尿韮任妊忍認濡禰祢寧葱猫熱年念捻撚燃粘乃廼之埜嚢悩濃納能脳膿農覗蚤巴把播覇杷波派琶破婆罵芭馬俳廃拝排敗杯盃牌背肺輩配倍培媒梅�楳煤狽買売賠陪這蝿秤矧萩伯剥博拍柏泊白箔粕舶薄迫曝漠爆縛莫駁麦函箱硲箸肇筈櫨幡肌畑畠八鉢溌発醗髪伐罰抜筏閥鳩噺塙蛤隼伴判半反叛帆搬斑板氾汎版犯班畔繁般藩販範釆煩頒飯挽晩番盤磐蕃蛮匪卑否妃庇彼悲扉批披斐比泌疲皮碑秘緋罷肥被誹費避非飛樋簸備尾微枇毘琵眉美���".split(""); +for(j = 0; j != D[148].length; ++j) if(D[148][j].charCodeAt(0) !== 0xFFFD) { e[D[148][j]] = 37888 + j; d[37888 + j] = D[148][j];} +D[149] = "����������������������������������������������������������������鼻柊稗匹疋髭彦膝菱肘弼必畢筆逼桧姫媛紐百謬俵彪標氷漂瓢票表評豹廟描病秒苗錨鋲蒜蛭鰭品彬斌浜瀕貧賓頻敏瓶不付埠夫婦富冨布府怖扶敷�斧普浮父符腐膚芙譜負賦赴阜附侮撫武舞葡蕪部封楓風葺蕗伏副復幅服福腹複覆淵弗払沸仏物鮒分吻噴墳憤扮焚奮粉糞紛雰文聞丙併兵塀幣平弊柄並蔽閉陛米頁僻壁癖碧別瞥蔑箆偏変片篇編辺返遍便勉娩弁鞭保舗鋪圃捕歩甫補輔穂募墓慕戊暮母簿菩倣俸包呆報奉宝峰峯崩庖抱捧放方朋���".split(""); +for(j = 0; j != D[149].length; ++j) if(D[149][j].charCodeAt(0) !== 0xFFFD) { e[D[149][j]] = 38144 + j; d[38144 + j] = D[149][j];} +D[150] = "����������������������������������������������������������������法泡烹砲縫胞芳萌蓬蜂褒訪豊邦鋒飽鳳鵬乏亡傍剖坊妨帽忘忙房暴望某棒冒紡肪膨謀貌貿鉾防吠頬北僕卜墨撲朴牧睦穆釦勃没殆堀幌奔本翻凡盆�摩磨魔麻埋妹昧枚毎哩槙幕膜枕鮪柾鱒桝亦俣又抹末沫迄侭繭麿万慢満漫蔓味未魅巳箕岬密蜜湊蓑稔脈妙粍民眠務夢無牟矛霧鵡椋婿娘冥名命明盟迷銘鳴姪牝滅免棉綿緬面麺摸模茂妄孟毛猛盲網耗蒙儲木黙目杢勿餅尤戻籾貰問悶紋門匁也冶夜爺耶野弥矢厄役約薬訳躍靖柳薮鑓愉愈油癒���".split(""); +for(j = 0; j != D[150].length; ++j) if(D[150][j].charCodeAt(0) !== 0xFFFD) { e[D[150][j]] = 38400 + j; d[38400 + j] = D[150][j];} +D[151] = "����������������������������������������������������������������諭輸唯佑優勇友宥幽悠憂揖有柚湧涌猶猷由祐裕誘遊邑郵雄融夕予余与誉輿預傭幼妖容庸揚揺擁曜楊様洋溶熔用窯羊耀葉蓉要謡踊遥陽養慾抑欲�沃浴翌翼淀羅螺裸来莱頼雷洛絡落酪乱卵嵐欄濫藍蘭覧利吏履李梨理璃痢裏裡里離陸律率立葎掠略劉流溜琉留硫粒隆竜龍侶慮旅虜了亮僚両凌寮料梁涼猟療瞭稜糧良諒遼量陵領力緑倫厘林淋燐琳臨輪隣鱗麟瑠塁涙累類令伶例冷励嶺怜玲礼苓鈴隷零霊麗齢暦歴列劣烈裂廉恋憐漣煉簾練聯���".split(""); +for(j = 0; j != D[151].length; ++j) if(D[151][j].charCodeAt(0) !== 0xFFFD) { e[D[151][j]] = 38656 + j; d[38656 + j] = D[151][j];} +D[152] = "����������������������������������������������������������������蓮連錬呂魯櫓炉賂路露労婁廊弄朗楼榔浪漏牢狼篭老聾蝋郎六麓禄肋録論倭和話歪賄脇惑枠鷲亙亘鰐詫藁蕨椀湾碗腕��������������������������������������������弌丐丕个丱丶丼丿乂乖乘亂亅豫亊舒弍于亞亟亠亢亰亳亶从仍仄仆仂仗仞仭仟价伉佚估佛佝佗佇佶侈侏侘佻佩佰侑佯來侖儘俔俟俎俘俛俑俚俐俤俥倚倨倔倪倥倅伜俶倡倩倬俾俯們倆偃假會偕偐偈做偖偬偸傀傚傅傴傲���".split(""); +for(j = 0; j != D[152].length; ++j) if(D[152][j].charCodeAt(0) !== 0xFFFD) { e[D[152][j]] = 38912 + j; d[38912 + j] = D[152][j];} +D[153] = "����������������������������������������������������������������僉僊傳僂僖僞僥僭僣僮價僵儉儁儂儖儕儔儚儡儺儷儼儻儿兀兒兌兔兢竸兩兪兮冀冂囘册冉冏冑冓冕冖冤冦冢冩冪冫决冱冲冰况冽凅凉凛几處凩凭�凰凵凾刄刋刔刎刧刪刮刳刹剏剄剋剌剞剔剪剴剩剳剿剽劍劔劒剱劈劑辨辧劬劭劼劵勁勍勗勞勣勦飭勠勳勵勸勹匆匈甸匍匐匏匕匚匣匯匱匳匸區卆卅丗卉卍凖卞卩卮夘卻卷厂厖厠厦厥厮厰厶參簒雙叟曼燮叮叨叭叺吁吽呀听吭吼吮吶吩吝呎咏呵咎呟呱呷呰咒呻咀呶咄咐咆哇咢咸咥咬哄哈咨���".split(""); +for(j = 0; j != D[153].length; ++j) if(D[153][j].charCodeAt(0) !== 0xFFFD) { e[D[153][j]] = 39168 + j; d[39168 + j] = D[153][j];} +D[154] = "����������������������������������������������������������������咫哂咤咾咼哘哥哦唏唔哽哮哭哺哢唹啀啣啌售啜啅啖啗唸唳啝喙喀咯喊喟啻啾喘喞單啼喃喩喇喨嗚嗅嗟嗄嗜嗤嗔嘔嗷嘖嗾嗽嘛嗹噎噐營嘴嘶嘲嘸�噫噤嘯噬噪嚆嚀嚊嚠嚔嚏嚥嚮嚶嚴囂嚼囁囃囀囈囎囑囓囗囮囹圀囿圄圉圈國圍圓團圖嗇圜圦圷圸坎圻址坏坩埀垈坡坿垉垓垠垳垤垪垰埃埆埔埒埓堊埖埣堋堙堝塲堡塢塋塰毀塒堽塹墅墹墟墫墺壞墻墸墮壅壓壑壗壙壘壥壜壤壟壯壺壹壻壼壽夂夊夐夛梦夥夬夭夲夸夾竒奕奐奎奚奘奢奠奧奬奩���".split(""); +for(j = 0; j != D[154].length; ++j) if(D[154][j].charCodeAt(0) !== 0xFFFD) { e[D[154][j]] = 39424 + j; d[39424 + j] = D[154][j];} +D[155] = "����������������������������������������������������������������奸妁妝佞侫妣妲姆姨姜妍姙姚娥娟娑娜娉娚婀婬婉娵娶婢婪媚媼媾嫋嫂媽嫣嫗嫦嫩嫖嫺嫻嬌嬋嬖嬲嫐嬪嬶嬾孃孅孀孑孕孚孛孥孩孰孳孵學斈孺宀�它宦宸寃寇寉寔寐寤實寢寞寥寫寰寶寳尅將專對尓尠尢尨尸尹屁屆屎屓屐屏孱屬屮乢屶屹岌岑岔妛岫岻岶岼岷峅岾峇峙峩峽峺峭嶌峪崋崕崗嵜崟崛崑崔崢崚崙崘嵌嵒嵎嵋嵬嵳嵶嶇嶄嶂嶢嶝嶬嶮嶽嶐嶷嶼巉巍巓巒巖巛巫已巵帋帚帙帑帛帶帷幄幃幀幎幗幔幟幢幤幇幵并幺麼广庠廁廂廈廐廏���".split(""); +for(j = 0; j != D[155].length; ++j) if(D[155][j].charCodeAt(0) !== 0xFFFD) { e[D[155][j]] = 39680 + j; d[39680 + j] = D[155][j];} +D[156] = "����������������������������������������������������������������廖廣廝廚廛廢廡廨廩廬廱廳廰廴廸廾弃弉彝彜弋弑弖弩弭弸彁彈彌彎弯彑彖彗彙彡彭彳彷徃徂彿徊很徑徇從徙徘徠徨徭徼忖忻忤忸忱忝悳忿怡恠�怙怐怩怎怱怛怕怫怦怏怺恚恁恪恷恟恊恆恍恣恃恤恂恬恫恙悁悍惧悃悚悄悛悖悗悒悧悋惡悸惠惓悴忰悽惆悵惘慍愕愆惶惷愀惴惺愃愡惻惱愍愎慇愾愨愧慊愿愼愬愴愽慂慄慳慷慘慙慚慫慴慯慥慱慟慝慓慵憙憖憇憬憔憚憊憑憫憮懌懊應懷懈懃懆憺懋罹懍懦懣懶懺懴懿懽懼懾戀戈戉戍戌戔戛���".split(""); +for(j = 0; j != D[156].length; ++j) if(D[156][j].charCodeAt(0) !== 0xFFFD) { e[D[156][j]] = 39936 + j; d[39936 + j] = D[156][j];} +D[157] = "����������������������������������������������������������������戞戡截戮戰戲戳扁扎扞扣扛扠扨扼抂抉找抒抓抖拔抃抔拗拑抻拏拿拆擔拈拜拌拊拂拇抛拉挌拮拱挧挂挈拯拵捐挾捍搜捏掖掎掀掫捶掣掏掉掟掵捫�捩掾揩揀揆揣揉插揶揄搖搴搆搓搦搶攝搗搨搏摧摯摶摎攪撕撓撥撩撈撼據擒擅擇撻擘擂擱擧舉擠擡抬擣擯攬擶擴擲擺攀擽攘攜攅攤攣攫攴攵攷收攸畋效敖敕敍敘敞敝敲數斂斃變斛斟斫斷旃旆旁旄旌旒旛旙无旡旱杲昊昃旻杳昵昶昴昜晏晄晉晁晞晝晤晧晨晟晢晰暃暈暎暉暄暘暝曁暹曉暾暼���".split(""); +for(j = 0; j != D[157].length; ++j) if(D[157][j].charCodeAt(0) !== 0xFFFD) { e[D[157][j]] = 40192 + j; d[40192 + j] = D[157][j];} +D[158] = "����������������������������������������������������������������曄暸曖曚曠昿曦曩曰曵曷朏朖朞朦朧霸朮朿朶杁朸朷杆杞杠杙杣杤枉杰枩杼杪枌枋枦枡枅枷柯枴柬枳柩枸柤柞柝柢柮枹柎柆柧檜栞框栩桀桍栲桎�梳栫桙档桷桿梟梏梭梔條梛梃檮梹桴梵梠梺椏梍桾椁棊椈棘椢椦棡椌棍棔棧棕椶椒椄棗棣椥棹棠棯椨椪椚椣椡棆楹楷楜楸楫楔楾楮椹楴椽楙椰楡楞楝榁楪榲榮槐榿槁槓榾槎寨槊槝榻槃榧樮榑榠榜榕榴槞槨樂樛槿權槹槲槧樅榱樞槭樔槫樊樒櫁樣樓橄樌橲樶橸橇橢橙橦橈樸樢檐檍檠檄檢檣���".split(""); +for(j = 0; j != D[158].length; ++j) if(D[158][j].charCodeAt(0) !== 0xFFFD) { e[D[158][j]] = 40448 + j; d[40448 + j] = D[158][j];} +D[159] = "����������������������������������������������������������������檗蘗檻櫃櫂檸檳檬櫞櫑櫟檪櫚櫪櫻欅蘖櫺欒欖鬱欟欸欷盜欹飮歇歃歉歐歙歔歛歟歡歸歹歿殀殄殃殍殘殕殞殤殪殫殯殲殱殳殷殼毆毋毓毟毬毫毳毯�麾氈氓气氛氤氣汞汕汢汪沂沍沚沁沛汾汨汳沒沐泄泱泓沽泗泅泝沮沱沾沺泛泯泙泪洟衍洶洫洽洸洙洵洳洒洌浣涓浤浚浹浙涎涕濤涅淹渕渊涵淇淦涸淆淬淞淌淨淒淅淺淙淤淕淪淮渭湮渮渙湲湟渾渣湫渫湶湍渟湃渺湎渤滿渝游溂溪溘滉溷滓溽溯滄溲滔滕溏溥滂溟潁漑灌滬滸滾漿滲漱滯漲滌���".split(""); +for(j = 0; j != D[159].length; ++j) if(D[159][j].charCodeAt(0) !== 0xFFFD) { e[D[159][j]] = 40704 + j; d[40704 + j] = D[159][j];} +D[224] = "����������������������������������������������������������������漾漓滷澆潺潸澁澀潯潛濳潭澂潼潘澎澑濂潦澳澣澡澤澹濆澪濟濕濬濔濘濱濮濛瀉瀋濺瀑瀁瀏濾瀛瀚潴瀝瀘瀟瀰瀾瀲灑灣炙炒炯烱炬炸炳炮烟烋烝�烙焉烽焜焙煥煕熈煦煢煌煖煬熏燻熄熕熨熬燗熹熾燒燉燔燎燠燬燧燵燼燹燿爍爐爛爨爭爬爰爲爻爼爿牀牆牋牘牴牾犂犁犇犒犖犢犧犹犲狃狆狄狎狒狢狠狡狹狷倏猗猊猜猖猝猴猯猩猥猾獎獏默獗獪獨獰獸獵獻獺珈玳珎玻珀珥珮珞璢琅瑯琥珸琲琺瑕琿瑟瑙瑁瑜瑩瑰瑣瑪瑶瑾璋璞璧瓊瓏瓔珱���".split(""); +for(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];} +D[225] = "����������������������������������������������������������������瓠瓣瓧瓩瓮瓲瓰瓱瓸瓷甄甃甅甌甎甍甕甓甞甦甬甼畄畍畊畉畛畆畚畩畤畧畫畭畸當疆疇畴疊疉疂疔疚疝疥疣痂疳痃疵疽疸疼疱痍痊痒痙痣痞痾痿�痼瘁痰痺痲痳瘋瘍瘉瘟瘧瘠瘡瘢瘤瘴瘰瘻癇癈癆癜癘癡癢癨癩癪癧癬癰癲癶癸發皀皃皈皋皎皖皓皙皚皰皴皸皹皺盂盍盖盒盞盡盥盧盪蘯盻眈眇眄眩眤眞眥眦眛眷眸睇睚睨睫睛睥睿睾睹瞎瞋瞑瞠瞞瞰瞶瞹瞿瞼瞽瞻矇矍矗矚矜矣矮矼砌砒礦砠礪硅碎硴碆硼碚碌碣碵碪碯磑磆磋磔碾碼磅磊磬���".split(""); +for(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];} +D[226] = "����������������������������������������������������������������磧磚磽磴礇礒礑礙礬礫祀祠祗祟祚祕祓祺祿禊禝禧齋禪禮禳禹禺秉秕秧秬秡秣稈稍稘稙稠稟禀稱稻稾稷穃穗穉穡穢穩龝穰穹穽窈窗窕窘窖窩竈窰�窶竅竄窿邃竇竊竍竏竕竓站竚竝竡竢竦竭竰笂笏笊笆笳笘笙笞笵笨笶筐筺笄筍笋筌筅筵筥筴筧筰筱筬筮箝箘箟箍箜箚箋箒箏筝箙篋篁篌篏箴篆篝篩簑簔篦篥籠簀簇簓篳篷簗簍篶簣簧簪簟簷簫簽籌籃籔籏籀籐籘籟籤籖籥籬籵粃粐粤粭粢粫粡粨粳粲粱粮粹粽糀糅糂糘糒糜糢鬻糯糲糴糶糺紆���".split(""); +for(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];} +D[227] = "����������������������������������������������������������������紂紜紕紊絅絋紮紲紿紵絆絳絖絎絲絨絮絏絣經綉絛綏絽綛綺綮綣綵緇綽綫總綢綯緜綸綟綰緘緝緤緞緻緲緡縅縊縣縡縒縱縟縉縋縢繆繦縻縵縹繃縷�縲縺繧繝繖繞繙繚繹繪繩繼繻纃緕繽辮繿纈纉續纒纐纓纔纖纎纛纜缸缺罅罌罍罎罐网罕罔罘罟罠罨罩罧罸羂羆羃羈羇羌羔羞羝羚羣羯羲羹羮羶羸譱翅翆翊翕翔翡翦翩翳翹飜耆耄耋耒耘耙耜耡耨耿耻聊聆聒聘聚聟聢聨聳聲聰聶聹聽聿肄肆肅肛肓肚肭冐肬胛胥胙胝胄胚胖脉胯胱脛脩脣脯腋���".split(""); +for(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];} +D[228] = "����������������������������������������������������������������隋腆脾腓腑胼腱腮腥腦腴膃膈膊膀膂膠膕膤膣腟膓膩膰膵膾膸膽臀臂膺臉臍臑臙臘臈臚臟臠臧臺臻臾舁舂舅與舊舍舐舖舩舫舸舳艀艙艘艝艚艟艤�艢艨艪艫舮艱艷艸艾芍芒芫芟芻芬苡苣苟苒苴苳苺莓范苻苹苞茆苜茉苙茵茴茖茲茱荀茹荐荅茯茫茗茘莅莚莪莟莢莖茣莎莇莊荼莵荳荵莠莉莨菴萓菫菎菽萃菘萋菁菷萇菠菲萍萢萠莽萸蔆菻葭萪萼蕚蒄葷葫蒭葮蒂葩葆萬葯葹萵蓊葢蒹蒿蒟蓙蓍蒻蓚蓐蓁蓆蓖蒡蔡蓿蓴蔗蔘蔬蔟蔕蔔蓼蕀蕣蕘蕈���".split(""); +for(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];} +D[229] = "����������������������������������������������������������������蕁蘂蕋蕕薀薤薈薑薊薨蕭薔薛藪薇薜蕷蕾薐藉薺藏薹藐藕藝藥藜藹蘊蘓蘋藾藺蘆蘢蘚蘰蘿虍乕虔號虧虱蚓蚣蚩蚪蚋蚌蚶蚯蛄蛆蚰蛉蠣蚫蛔蛞蛩蛬�蛟蛛蛯蜒蜆蜈蜀蜃蛻蜑蜉蜍蛹蜊蜴蜿蜷蜻蜥蜩蜚蝠蝟蝸蝌蝎蝴蝗蝨蝮蝙蝓蝣蝪蠅螢螟螂螯蟋螽蟀蟐雖螫蟄螳蟇蟆螻蟯蟲蟠蠏蠍蟾蟶蟷蠎蟒蠑蠖蠕蠢蠡蠱蠶蠹蠧蠻衄衂衒衙衞衢衫袁衾袞衵衽袵衲袂袗袒袮袙袢袍袤袰袿袱裃裄裔裘裙裝裹褂裼裴裨裲褄褌褊褓襃褞褥褪褫襁襄褻褶褸襌褝襠襞���".split(""); +for(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];} +D[230] = "����������������������������������������������������������������襦襤襭襪襯襴襷襾覃覈覊覓覘覡覩覦覬覯覲覺覽覿觀觚觜觝觧觴觸訃訖訐訌訛訝訥訶詁詛詒詆詈詼詭詬詢誅誂誄誨誡誑誥誦誚誣諄諍諂諚諫諳諧�諤諱謔諠諢諷諞諛謌謇謚諡謖謐謗謠謳鞫謦謫謾謨譁譌譏譎證譖譛譚譫譟譬譯譴譽讀讌讎讒讓讖讙讚谺豁谿豈豌豎豐豕豢豬豸豺貂貉貅貊貍貎貔豼貘戝貭貪貽貲貳貮貶賈賁賤賣賚賽賺賻贄贅贊贇贏贍贐齎贓賍贔贖赧赭赱赳趁趙跂趾趺跏跚跖跌跛跋跪跫跟跣跼踈踉跿踝踞踐踟蹂踵踰踴蹊���".split(""); +for(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];} +D[231] = "����������������������������������������������������������������蹇蹉蹌蹐蹈蹙蹤蹠踪蹣蹕蹶蹲蹼躁躇躅躄躋躊躓躑躔躙躪躡躬躰軆躱躾軅軈軋軛軣軼軻軫軾輊輅輕輒輙輓輜輟輛輌輦輳輻輹轅轂輾轌轉轆轎轗轜�轢轣轤辜辟辣辭辯辷迚迥迢迪迯邇迴逅迹迺逑逕逡逍逞逖逋逧逶逵逹迸遏遐遑遒逎遉逾遖遘遞遨遯遶隨遲邂遽邁邀邊邉邏邨邯邱邵郢郤扈郛鄂鄒鄙鄲鄰酊酖酘酣酥酩酳酲醋醉醂醢醫醯醪醵醴醺釀釁釉釋釐釖釟釡釛釼釵釶鈞釿鈔鈬鈕鈑鉞鉗鉅鉉鉤鉈銕鈿鉋鉐銜銖銓銛鉚鋏銹銷鋩錏鋺鍄錮���".split(""); +for(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];} +D[232] = "����������������������������������������������������������������錙錢錚錣錺錵錻鍜鍠鍼鍮鍖鎰鎬鎭鎔鎹鏖鏗鏨鏥鏘鏃鏝鏐鏈鏤鐚鐔鐓鐃鐇鐐鐶鐫鐵鐡鐺鑁鑒鑄鑛鑠鑢鑞鑪鈩鑰鑵鑷鑽鑚鑼鑾钁鑿閂閇閊閔閖閘閙�閠閨閧閭閼閻閹閾闊濶闃闍闌闕闔闖關闡闥闢阡阨阮阯陂陌陏陋陷陜陞陝陟陦陲陬隍隘隕隗險隧隱隲隰隴隶隸隹雎雋雉雍襍雜霍雕雹霄霆霈霓霎霑霏霖霙霤霪霰霹霽霾靄靆靈靂靉靜靠靤靦靨勒靫靱靹鞅靼鞁靺鞆鞋鞏鞐鞜鞨鞦鞣鞳鞴韃韆韈韋韜韭齏韲竟韶韵頏頌頸頤頡頷頽顆顏顋顫顯顰���".split(""); +for(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];} +D[233] = "����������������������������������������������������������������顱顴顳颪颯颱颶飄飃飆飩飫餃餉餒餔餘餡餝餞餤餠餬餮餽餾饂饉饅饐饋饑饒饌饕馗馘馥馭馮馼駟駛駝駘駑駭駮駱駲駻駸騁騏騅駢騙騫騷驅驂驀驃�騾驕驍驛驗驟驢驥驤驩驫驪骭骰骼髀髏髑髓體髞髟髢髣髦髯髫髮髴髱髷髻鬆鬘鬚鬟鬢鬣鬥鬧鬨鬩鬪鬮鬯鬲魄魃魏魍魎魑魘魴鮓鮃鮑鮖鮗鮟鮠鮨鮴鯀鯊鮹鯆鯏鯑鯒鯣鯢鯤鯔鯡鰺鯲鯱鯰鰕鰔鰉鰓鰌鰆鰈鰒鰊鰄鰮鰛鰥鰤鰡鰰鱇鰲鱆鰾鱚鱠鱧鱶鱸鳧鳬鳰鴉鴈鳫鴃鴆鴪鴦鶯鴣鴟鵄鴕鴒鵁鴿鴾鵆鵈���".split(""); +for(j = 0; j != D[233].length; ++j) if(D[233][j].charCodeAt(0) !== 0xFFFD) { e[D[233][j]] = 59648 + j; d[59648 + j] = D[233][j];} +D[234] = "����������������������������������������������������������������鵝鵞鵤鵑鵐鵙鵲鶉鶇鶫鵯鵺鶚鶤鶩鶲鷄鷁鶻鶸鶺鷆鷏鷂鷙鷓鷸鷦鷭鷯鷽鸚鸛鸞鹵鹹鹽麁麈麋麌麒麕麑麝麥麩麸麪麭靡黌黎黏黐黔黜點黝黠黥黨黯�黴黶黷黹黻黼黽鼇鼈皷鼕鼡鼬鼾齊齒齔齣齟齠齡齦齧齬齪齷齲齶龕龜龠堯槇遙瑤凜熙�������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];} +D[237] = "����������������������������������������������������������������纊褜鍈銈蓜俉炻昱棈鋹曻彅丨仡仼伀伃伹佖侒侊侚侔俍偀倢俿倞偆偰偂傔僴僘兊兤冝冾凬刕劜劦勀勛匀匇匤卲厓厲叝﨎咜咊咩哿喆坙坥垬埈埇﨏�塚增墲夋奓奛奝奣妤妺孖寀甯寘寬尞岦岺峵崧嵓﨑嵂嵭嶸嶹巐弡弴彧德忞恝悅悊惞惕愠惲愑愷愰憘戓抦揵摠撝擎敎昀昕昻昉昮昞昤晥晗晙晴晳暙暠暲暿曺朎朗杦枻桒柀栁桄棏﨓楨﨔榘槢樰橫橆橳橾櫢櫤毖氿汜沆汯泚洄涇浯涖涬淏淸淲淼渹湜渧渼溿澈澵濵瀅瀇瀨炅炫焏焄煜煆煇凞燁燾犱���".split(""); +for(j = 0; j != D[237].length; ++j) if(D[237][j].charCodeAt(0) !== 0xFFFD) { e[D[237][j]] = 60672 + j; d[60672 + j] = D[237][j];} +D[238] = "����������������������������������������������������������������犾猤猪獷玽珉珖珣珒琇珵琦琪琩琮瑢璉璟甁畯皂皜皞皛皦益睆劯砡硎硤硺礰礼神祥禔福禛竑竧靖竫箞精絈絜綷綠緖繒罇羡羽茁荢荿菇菶葈蒴蕓蕙�蕫﨟薰蘒﨡蠇裵訒訷詹誧誾諟諸諶譓譿賰賴贒赶﨣軏﨤逸遧郞都鄕鄧釚釗釞釭釮釤釥鈆鈐鈊鈺鉀鈼鉎鉙鉑鈹鉧銧鉷鉸鋧鋗鋙鋐﨧鋕鋠鋓錥錡鋻﨨錞鋿錝錂鍰鍗鎤鏆鏞鏸鐱鑅鑈閒隆﨩隝隯霳霻靃靍靏靑靕顗顥飯飼餧館馞驎髙髜魵魲鮏鮱鮻鰀鵰鵫鶴鸙黑��ⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹ¬¦'"���".split(""); +for(j = 0; j != D[238].length; ++j) if(D[238][j].charCodeAt(0) !== 0xFFFD) { e[D[238][j]] = 60928 + j; d[60928 + j] = D[238][j];} +D[250] = "����������������������������������������������������������������ⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩ¬¦'"㈱№℡∵纊褜鍈銈蓜俉炻昱棈鋹曻彅丨仡仼伀伃伹佖侒侊侚侔俍偀倢俿倞偆偰偂傔僴僘兊�兤冝冾凬刕劜劦勀勛匀匇匤卲厓厲叝﨎咜咊咩哿喆坙坥垬埈埇﨏塚增墲夋奓奛奝奣妤妺孖寀甯寘寬尞岦岺峵崧嵓﨑嵂嵭嶸嶹巐弡弴彧德忞恝悅悊惞惕愠惲愑愷愰憘戓抦揵摠撝擎敎昀昕昻昉昮昞昤晥晗晙晴晳暙暠暲暿曺朎朗杦枻桒柀栁桄棏﨓楨﨔榘槢樰橫橆橳橾櫢櫤毖氿汜沆汯泚洄涇浯���".split(""); +for(j = 0; j != D[250].length; ++j) if(D[250][j].charCodeAt(0) !== 0xFFFD) { e[D[250][j]] = 64000 + j; d[64000 + j] = D[250][j];} +D[251] = "����������������������������������������������������������������涖涬淏淸淲淼渹湜渧渼溿澈澵濵瀅瀇瀨炅炫焏焄煜煆煇凞燁燾犱犾猤猪獷玽珉珖珣珒琇珵琦琪琩琮瑢璉璟甁畯皂皜皞皛皦益睆劯砡硎硤硺礰礼神�祥禔福禛竑竧靖竫箞精絈絜綷綠緖繒罇羡羽茁荢荿菇菶葈蒴蕓蕙蕫﨟薰蘒﨡蠇裵訒訷詹誧誾諟諸諶譓譿賰賴贒赶﨣軏﨤逸遧郞都鄕鄧釚釗釞釭釮釤釥鈆鈐鈊鈺鉀鈼鉎鉙鉑鈹鉧銧鉷鉸鋧鋗鋙鋐﨧鋕鋠鋓錥錡鋻﨨錞鋿錝錂鍰鍗鎤鏆鏞鏸鐱鑅鑈閒隆﨩隝隯霳霻靃靍靏靑靕顗顥飯飼餧館馞驎髙���".split(""); +for(j = 0; j != D[251].length; ++j) if(D[251][j].charCodeAt(0) !== 0xFFFD) { e[D[251][j]] = 64256 + j; d[64256 + j] = D[251][j];} +D[252] = "����������������������������������������������������������������髜魵魲鮏鮱鮻鰀鵰鵫鶴鸙黑������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[252].length; ++j) if(D[252][j].charCodeAt(0) !== 0xFFFD) { e[D[252][j]] = 64512 + j; d[64512 + j] = D[252][j];} +return {"enc": e, "dec": d }; })(); diff --git a/node_modules/codepage/bits/936.js b/node_modules/codepage/bits/936.js new file mode 100644 index 000000000..a8077e344 --- /dev/null +++ b/node_modules/codepage/bits/936.js @@ -0,0 +1,257 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[936] = (function(){ var d = [], e = {}, D = [], j; +D[0] = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€�������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];} +D[129] = "����������������������������������������������������������������丂丄丅丆丏丒丗丟丠両丣並丩丮丯丱丳丵丷丼乀乁乂乄乆乊乑乕乗乚乛乢乣乤乥乧乨乪乫乬乭乮乯乲乴乵乶乷乸乹乺乻乼乽乿亀亁亂亃亄亅亇亊�亐亖亗亙亜亝亞亣亪亯亰亱亴亶亷亸亹亼亽亾仈仌仏仐仒仚仛仜仠仢仦仧仩仭仮仯仱仴仸仹仺仼仾伀伂伃伄伅伆伇伈伋伌伒伓伔伕伖伜伝伡伣伨伩伬伭伮伱伳伵伷伹伻伾伿佀佁佂佄佅佇佈佉佊佋佌佒佔佖佡佢佦佨佪佫佭佮佱佲併佷佸佹佺佽侀侁侂侅來侇侊侌侎侐侒侓侕侖侘侙侚侜侞侟価侢�".split(""); +for(j = 0; j != D[129].length; ++j) if(D[129][j].charCodeAt(0) !== 0xFFFD) { e[D[129][j]] = 33024 + j; d[33024 + j] = D[129][j];} +D[130] = "����������������������������������������������������������������侤侫侭侰侱侲侳侴侶侷侸侹侺侻侼侽侾俀俁係俆俇俈俉俋俌俍俒俓俔俕俖俙俛俠俢俤俥俧俫俬俰俲俴俵俶俷俹俻俼俽俿倀倁倂倃倄倅倆倇倈倉倊�個倎倐們倓倕倖倗倛倝倞倠倢倣値倧倫倯倰倱倲倳倴倵倶倷倸倹倻倽倿偀偁偂偄偅偆偉偊偋偍偐偑偒偓偔偖偗偘偙偛偝偞偟偠偡偢偣偤偦偧偨偩偪偫偭偮偯偰偱偲偳側偵偸偹偺偼偽傁傂傃傄傆傇傉傊傋傌傎傏傐傑傒傓傔傕傖傗傘備傚傛傜傝傞傟傠傡傢傤傦傪傫傭傮傯傰傱傳傴債傶傷傸傹傼�".split(""); +for(j = 0; j != D[130].length; ++j) if(D[130][j].charCodeAt(0) !== 0xFFFD) { e[D[130][j]] = 33280 + j; d[33280 + j] = D[130][j];} +D[131] = "����������������������������������������������������������������傽傾傿僀僁僂僃僄僅僆僇僈僉僊僋僌働僎僐僑僒僓僔僕僗僘僙僛僜僝僞僟僠僡僢僣僤僥僨僩僪僫僯僰僱僲僴僶僷僸價僺僼僽僾僿儀儁儂儃億儅儈�儉儊儌儍儎儏儐儑儓儔儕儖儗儘儙儚儛儜儝儞償儠儢儣儤儥儦儧儨儩優儫儬儭儮儯儰儱儲儳儴儵儶儷儸儹儺儻儼儽儾兂兇兊兌兎兏児兒兓兗兘兙兛兝兞兟兠兡兣兤兦內兩兪兯兲兺兾兿冃冄円冇冊冋冎冏冐冑冓冔冘冚冝冞冟冡冣冦冧冨冩冪冭冮冴冸冹冺冾冿凁凂凃凅凈凊凍凎凐凒凓凔凕凖凗�".split(""); +for(j = 0; j != D[131].length; ++j) if(D[131][j].charCodeAt(0) !== 0xFFFD) { e[D[131][j]] = 33536 + j; d[33536 + j] = D[131][j];} +D[132] = "����������������������������������������������������������������凘凙凚凜凞凟凢凣凥処凧凨凩凪凬凮凱凲凴凷凾刄刅刉刋刌刏刐刓刔刕刜刞刟刡刢刣別刦刧刪刬刯刱刲刴刵刼刾剄剅剆則剈剉剋剎剏剒剓剕剗剘�剙剚剛剝剟剠剢剣剤剦剨剫剬剭剮剰剱剳剴創剶剷剸剹剺剻剼剾劀劃劄劅劆劇劉劊劋劌劍劎劏劑劒劔劕劖劗劘劙劚劜劤劥劦劧劮劯劰労劵劶劷劸効劺劻劼劽勀勁勂勄勅勆勈勊勌勍勎勏勑勓勔動勗務勚勛勜勝勞勠勡勢勣勥勦勧勨勩勪勫勬勭勮勯勱勲勳勴勵勶勷勸勻勼勽匁匂匃匄匇匉匊匋匌匎�".split(""); +for(j = 0; j != D[132].length; ++j) if(D[132][j].charCodeAt(0) !== 0xFFFD) { e[D[132][j]] = 33792 + j; d[33792 + j] = D[132][j];} +D[133] = "����������������������������������������������������������������匑匒匓匔匘匛匜匞匟匢匤匥匧匨匩匫匬匭匯匰匱匲匳匴匵匶匷匸匼匽區卂卄卆卋卌卍卐協単卙卛卝卥卨卪卬卭卲卶卹卻卼卽卾厀厁厃厇厈厊厎厏�厐厑厒厓厔厖厗厙厛厜厞厠厡厤厧厪厫厬厭厯厰厱厲厳厴厵厷厸厹厺厼厽厾叀參叄叅叆叇収叏叐叒叓叕叚叜叝叞叡叢叧叴叺叾叿吀吂吅吇吋吔吘吙吚吜吢吤吥吪吰吳吶吷吺吽吿呁呂呄呅呇呉呌呍呎呏呑呚呝呞呟呠呡呣呥呧呩呪呫呬呭呮呯呰呴呹呺呾呿咁咃咅咇咈咉咊咍咑咓咗咘咜咞咟咠咡�".split(""); +for(j = 0; j != D[133].length; ++j) if(D[133][j].charCodeAt(0) !== 0xFFFD) { e[D[133][j]] = 34048 + j; d[34048 + j] = D[133][j];} +D[134] = "����������������������������������������������������������������咢咥咮咰咲咵咶咷咹咺咼咾哃哅哊哋哖哘哛哠員哢哣哤哫哬哯哰哱哴哵哶哷哸哹哻哾唀唂唃唄唅唈唊唋唌唍唎唒唓唕唖唗唘唙唚唜唝唞唟唡唥唦�唨唩唫唭唲唴唵唶唸唹唺唻唽啀啂啅啇啈啋啌啍啎問啑啒啓啔啗啘啙啚啛啝啞啟啠啢啣啨啩啫啯啰啱啲啳啴啹啺啽啿喅喆喌喍喎喐喒喓喕喖喗喚喛喞喠喡喢喣喤喥喦喨喩喪喫喬喭單喯喰喲喴営喸喺喼喿嗀嗁嗂嗃嗆嗇嗈嗊嗋嗎嗏嗐嗕嗗嗘嗙嗚嗛嗞嗠嗢嗧嗩嗭嗮嗰嗱嗴嗶嗸嗹嗺嗻嗼嗿嘂嘃嘄嘅�".split(""); +for(j = 0; j != D[134].length; ++j) if(D[134][j].charCodeAt(0) !== 0xFFFD) { e[D[134][j]] = 34304 + j; d[34304 + j] = D[134][j];} +D[135] = "����������������������������������������������������������������嘆嘇嘊嘋嘍嘐嘑嘒嘓嘔嘕嘖嘗嘙嘚嘜嘝嘠嘡嘢嘥嘦嘨嘩嘪嘫嘮嘯嘰嘳嘵嘷嘸嘺嘼嘽嘾噀噁噂噃噄噅噆噇噈噉噊噋噏噐噑噒噓噕噖噚噛噝噞噟噠噡�噣噥噦噧噭噮噯噰噲噳噴噵噷噸噹噺噽噾噿嚀嚁嚂嚃嚄嚇嚈嚉嚊嚋嚌嚍嚐嚑嚒嚔嚕嚖嚗嚘嚙嚚嚛嚜嚝嚞嚟嚠嚡嚢嚤嚥嚦嚧嚨嚩嚪嚫嚬嚭嚮嚰嚱嚲嚳嚴嚵嚶嚸嚹嚺嚻嚽嚾嚿囀囁囂囃囄囅囆囇囈囉囋囌囍囎囏囐囑囒囓囕囖囘囙囜団囥囦囧囨囩囪囬囮囯囲図囶囷囸囻囼圀圁圂圅圇國圌圍圎圏圐圑�".split(""); +for(j = 0; j != D[135].length; ++j) if(D[135][j].charCodeAt(0) !== 0xFFFD) { e[D[135][j]] = 34560 + j; d[34560 + j] = D[135][j];} +D[136] = "����������������������������������������������������������������園圓圔圕圖圗團圙圚圛圝圞圠圡圢圤圥圦圧圫圱圲圴圵圶圷圸圼圽圿坁坃坄坅坆坈坉坋坒坓坔坕坖坘坙坢坣坥坧坬坮坰坱坲坴坵坸坹坺坽坾坿垀�垁垇垈垉垊垍垎垏垐垑垔垕垖垗垘垙垚垜垝垞垟垥垨垪垬垯垰垱垳垵垶垷垹垺垻垼垽垾垿埀埁埄埅埆埇埈埉埊埌埍埐埑埓埖埗埛埜埞埡埢埣埥埦埧埨埩埪埫埬埮埰埱埲埳埵埶執埻埼埾埿堁堃堄堅堈堉堊堌堎堏堐堒堓堔堖堗堘堚堛堜堝堟堢堣堥堦堧堨堩堫堬堭堮堯報堲堳場堶堷堸堹堺堻堼堽�".split(""); +for(j = 0; j != D[136].length; ++j) if(D[136][j].charCodeAt(0) !== 0xFFFD) { e[D[136][j]] = 34816 + j; d[34816 + j] = D[136][j];} +D[137] = "����������������������������������������������������������������堾堿塀塁塂塃塅塆塇塈塉塊塋塎塏塐塒塓塕塖塗塙塚塛塜塝塟塠塡塢塣塤塦塧塨塩塪塭塮塯塰塱塲塳塴塵塶塷塸塹塺塻塼塽塿墂墄墆墇墈墊墋墌�墍墎墏墐墑墔墕墖増墘墛墜墝墠墡墢墣墤墥墦墧墪墫墬墭墮墯墰墱墲墳墴墵墶墷墸墹墺墻墽墾墿壀壂壃壄壆壇壈壉壊壋壌壍壎壏壐壒壓壔壖壗壘壙壚壛壜壝壞壟壠壡壢壣壥壦壧壨壩壪壭壯壱売壴壵壷壸壺壻壼壽壾壿夀夁夃夅夆夈変夊夋夌夎夐夑夒夓夗夘夛夝夞夠夡夢夣夦夨夬夰夲夳夵夶夻�".split(""); +for(j = 0; j != D[137].length; ++j) if(D[137][j].charCodeAt(0) !== 0xFFFD) { e[D[137][j]] = 35072 + j; d[35072 + j] = D[137][j];} +D[138] = "����������������������������������������������������������������夽夾夿奀奃奅奆奊奌奍奐奒奓奙奛奜奝奞奟奡奣奤奦奧奨奩奪奫奬奭奮奯奰奱奲奵奷奺奻奼奾奿妀妅妉妋妌妎妏妐妑妔妕妘妚妛妜妝妟妠妡妢妦�妧妬妭妰妱妳妴妵妶妷妸妺妼妽妿姀姁姂姃姄姅姇姈姉姌姍姎姏姕姖姙姛姞姟姠姡姢姤姦姧姩姪姫姭姮姯姰姱姲姳姴姵姶姷姸姺姼姽姾娀娂娊娋娍娎娏娐娒娔娕娖娗娙娚娛娝娞娡娢娤娦娧娨娪娫娬娭娮娯娰娳娵娷娸娹娺娻娽娾娿婁婂婃婄婅婇婈婋婌婍婎婏婐婑婒婓婔婖婗婘婙婛婜婝婞婟婠�".split(""); +for(j = 0; j != D[138].length; ++j) if(D[138][j].charCodeAt(0) !== 0xFFFD) { e[D[138][j]] = 35328 + j; d[35328 + j] = D[138][j];} +D[139] = "����������������������������������������������������������������婡婣婤婥婦婨婩婫婬婭婮婯婰婱婲婳婸婹婻婼婽婾媀媁媂媃媄媅媆媇媈媉媊媋媌媍媎媏媐媑媓媔媕媖媗媘媙媜媝媞媟媠媡媢媣媤媥媦媧媨媩媫媬�媭媮媯媰媱媴媶媷媹媺媻媼媽媿嫀嫃嫄嫅嫆嫇嫈嫊嫋嫍嫎嫏嫐嫑嫓嫕嫗嫙嫚嫛嫝嫞嫟嫢嫤嫥嫧嫨嫪嫬嫭嫮嫯嫰嫲嫳嫴嫵嫶嫷嫸嫹嫺嫻嫼嫽嫾嫿嬀嬁嬂嬃嬄嬅嬆嬇嬈嬊嬋嬌嬍嬎嬏嬐嬑嬒嬓嬔嬕嬘嬙嬚嬛嬜嬝嬞嬟嬠嬡嬢嬣嬤嬥嬦嬧嬨嬩嬪嬫嬬嬭嬮嬯嬰嬱嬳嬵嬶嬸嬹嬺嬻嬼嬽嬾嬿孁孂孃孄孅孆孇�".split(""); +for(j = 0; j != D[139].length; ++j) if(D[139][j].charCodeAt(0) !== 0xFFFD) { e[D[139][j]] = 35584 + j; d[35584 + j] = D[139][j];} +D[140] = "����������������������������������������������������������������孈孉孊孋孌孍孎孏孒孖孞孠孡孧孨孫孭孮孯孲孴孶孷學孹孻孼孾孿宂宆宊宍宎宐宑宒宔宖実宧宨宩宬宭宮宯宱宲宷宺宻宼寀寁寃寈寉寊寋寍寎寏�寑寔寕寖寗寘寙寚寛寜寠寢寣實寧審寪寫寬寭寯寱寲寳寴寵寶寷寽対尀専尃尅將專尋尌對導尐尒尓尗尙尛尞尟尠尡尣尦尨尩尪尫尭尮尯尰尲尳尵尶尷屃屄屆屇屌屍屒屓屔屖屗屘屚屛屜屝屟屢層屧屨屩屪屫屬屭屰屲屳屴屵屶屷屸屻屼屽屾岀岃岄岅岆岇岉岊岋岎岏岒岓岕岝岞岟岠岡岤岥岦岧岨�".split(""); +for(j = 0; j != D[140].length; ++j) if(D[140][j].charCodeAt(0) !== 0xFFFD) { e[D[140][j]] = 35840 + j; d[35840 + j] = D[140][j];} +D[141] = "����������������������������������������������������������������岪岮岯岰岲岴岶岹岺岻岼岾峀峂峃峅峆峇峈峉峊峌峍峎峏峐峑峓峔峕峖峗峘峚峛峜峝峞峟峠峢峣峧峩峫峬峮峯峱峲峳峴峵島峷峸峹峺峼峽峾峿崀�崁崄崅崈崉崊崋崌崍崏崐崑崒崓崕崗崘崙崚崜崝崟崠崡崢崣崥崨崪崫崬崯崰崱崲崳崵崶崷崸崹崺崻崼崿嵀嵁嵂嵃嵄嵅嵆嵈嵉嵍嵎嵏嵐嵑嵒嵓嵔嵕嵖嵗嵙嵚嵜嵞嵟嵠嵡嵢嵣嵤嵥嵦嵧嵨嵪嵭嵮嵰嵱嵲嵳嵵嵶嵷嵸嵹嵺嵻嵼嵽嵾嵿嶀嶁嶃嶄嶅嶆嶇嶈嶉嶊嶋嶌嶍嶎嶏嶐嶑嶒嶓嶔嶕嶖嶗嶘嶚嶛嶜嶞嶟嶠�".split(""); +for(j = 0; j != D[141].length; ++j) if(D[141][j].charCodeAt(0) !== 0xFFFD) { e[D[141][j]] = 36096 + j; d[36096 + j] = D[141][j];} +D[142] = "����������������������������������������������������������������嶡嶢嶣嶤嶥嶦嶧嶨嶩嶪嶫嶬嶭嶮嶯嶰嶱嶲嶳嶴嶵嶶嶸嶹嶺嶻嶼嶽嶾嶿巀巁巂巃巄巆巇巈巉巊巋巌巎巏巐巑巒巓巔巕巖巗巘巙巚巜巟巠巣巤巪巬巭�巰巵巶巸巹巺巻巼巿帀帄帇帉帊帋帍帎帒帓帗帞帟帠帡帢帣帤帥帨帩帪師帬帯帰帲帳帴帵帶帹帺帾帿幀幁幃幆幇幈幉幊幋幍幎幏幐幑幒幓幖幗幘幙幚幜幝幟幠幣幤幥幦幧幨幩幪幫幬幭幮幯幰幱幵幷幹幾庁庂広庅庈庉庌庍庎庒庘庛庝庡庢庣庤庨庩庪庫庬庮庯庰庱庲庴庺庻庼庽庿廀廁廂廃廄廅�".split(""); +for(j = 0; j != D[142].length; ++j) if(D[142][j].charCodeAt(0) !== 0xFFFD) { e[D[142][j]] = 36352 + j; d[36352 + j] = D[142][j];} +D[143] = "����������������������������������������������������������������廆廇廈廋廌廍廎廏廐廔廕廗廘廙廚廜廝廞廟廠廡廢廣廤廥廦廧廩廫廬廭廮廯廰廱廲廳廵廸廹廻廼廽弅弆弇弉弌弍弎弐弒弔弖弙弚弜弝弞弡弢弣弤�弨弫弬弮弰弲弳弴張弶強弸弻弽弾弿彁彂彃彄彅彆彇彈彉彊彋彌彍彎彏彑彔彙彚彛彜彞彟彠彣彥彧彨彫彮彯彲彴彵彶彸彺彽彾彿徃徆徍徎徏徑従徔徖徚徛徝從徟徠徢徣徤徥徦徧復徫徬徯徰徱徲徳徴徶徸徹徺徻徾徿忀忁忂忇忈忊忋忎忓忔忕忚忛応忞忟忢忣忥忦忨忩忬忯忰忲忳忴忶忷忹忺忼怇�".split(""); +for(j = 0; j != D[143].length; ++j) if(D[143][j].charCodeAt(0) !== 0xFFFD) { e[D[143][j]] = 36608 + j; d[36608 + j] = D[143][j];} +D[144] = "����������������������������������������������������������������怈怉怋怌怐怑怓怗怘怚怞怟怢怣怤怬怭怮怰怱怲怳怴怶怷怸怹怺怽怾恀恄恅恆恇恈恉恊恌恎恏恑恓恔恖恗恘恛恜恞恟恠恡恥恦恮恱恲恴恵恷恾悀�悁悂悅悆悇悈悊悋悎悏悐悑悓悕悗悘悙悜悞悡悢悤悥悧悩悪悮悰悳悵悶悷悹悺悽悾悿惀惁惂惃惄惇惈惉惌惍惎惏惐惒惓惔惖惗惙惛惞惡惢惣惤惥惪惱惲惵惷惸惻惼惽惾惿愂愃愄愅愇愊愋愌愐愑愒愓愔愖愗愘愙愛愜愝愞愡愢愥愨愩愪愬愭愮愯愰愱愲愳愴愵愶愷愸愹愺愻愼愽愾慀慁慂慃慄慅慆�".split(""); +for(j = 0; j != D[144].length; ++j) if(D[144][j].charCodeAt(0) !== 0xFFFD) { e[D[144][j]] = 36864 + j; d[36864 + j] = D[144][j];} +D[145] = "����������������������������������������������������������������慇慉態慍慏慐慒慓慔慖慗慘慙慚慛慜慞慟慠慡慣慤慥慦慩慪慫慬慭慮慯慱慲慳慴慶慸慹慺慻慼慽慾慿憀憁憂憃憄憅憆憇憈憉憊憌憍憏憐憑憒憓憕�憖憗憘憙憚憛憜憞憟憠憡憢憣憤憥憦憪憫憭憮憯憰憱憲憳憴憵憶憸憹憺憻憼憽憿懀懁懃懄懅懆懇應懌懍懎懏懐懓懕懖懗懘懙懚懛懜懝懞懟懠懡懢懣懤懥懧懨懩懪懫懬懭懮懯懰懱懲懳懴懶懷懸懹懺懻懼懽懾戀戁戂戃戄戅戇戉戓戔戙戜戝戞戠戣戦戧戨戩戫戭戯戰戱戲戵戶戸戹戺戻戼扂扄扅扆扊�".split(""); +for(j = 0; j != D[145].length; ++j) if(D[145][j].charCodeAt(0) !== 0xFFFD) { e[D[145][j]] = 37120 + j; d[37120 + j] = D[145][j];} +D[146] = "����������������������������������������������������������������扏扐払扖扗扙扚扜扝扞扟扠扡扢扤扥扨扱扲扴扵扷扸扺扻扽抁抂抃抅抆抇抈抋抌抍抎抏抐抔抙抜抝択抣抦抧抩抪抭抮抯抰抲抳抴抶抷抸抺抾拀拁�拃拋拏拑拕拝拞拠拡拤拪拫拰拲拵拸拹拺拻挀挃挄挅挆挊挋挌挍挏挐挒挓挔挕挗挘挙挜挦挧挩挬挭挮挰挱挳挴挵挶挷挸挻挼挾挿捀捁捄捇捈捊捑捒捓捔捖捗捘捙捚捛捜捝捠捤捥捦捨捪捫捬捯捰捲捳捴捵捸捹捼捽捾捿掁掃掄掅掆掋掍掑掓掔掕掗掙掚掛掜掝掞掟採掤掦掫掯掱掲掵掶掹掻掽掿揀�".split(""); +for(j = 0; j != D[146].length; ++j) if(D[146][j].charCodeAt(0) !== 0xFFFD) { e[D[146][j]] = 37376 + j; d[37376 + j] = D[146][j];} +D[147] = "����������������������������������������������������������������揁揂揃揅揇揈揊揋揌揑揓揔揕揗揘揙揚換揜揝揟揢揤揥揦揧揨揫揬揮揯揰揱揳揵揷揹揺揻揼揾搃搄搆搇搈搉搊損搎搑搒搕搖搗搘搙搚搝搟搢搣搤�搥搧搨搩搫搮搯搰搱搲搳搵搶搷搸搹搻搼搾摀摂摃摉摋摌摍摎摏摐摑摓摕摖摗摙摚摛摜摝摟摠摡摢摣摤摥摦摨摪摫摬摮摯摰摱摲摳摴摵摶摷摻摼摽摾摿撀撁撃撆撈撉撊撋撌撍撎撏撐撓撔撗撘撚撛撜撝撟撠撡撢撣撥撦撧撨撪撫撯撱撲撳撴撶撹撻撽撾撿擁擃擄擆擇擈擉擊擋擌擏擑擓擔擕擖擙據�".split(""); +for(j = 0; j != D[147].length; ++j) if(D[147][j].charCodeAt(0) !== 0xFFFD) { e[D[147][j]] = 37632 + j; d[37632 + j] = D[147][j];} +D[148] = "����������������������������������������������������������������擛擜擝擟擠擡擣擥擧擨擩擪擫擬擭擮擯擰擱擲擳擴擵擶擷擸擹擺擻擼擽擾擿攁攂攃攄攅攆攇攈攊攋攌攍攎攏攐攑攓攔攕攖攗攙攚攛攜攝攞攟攠攡�攢攣攤攦攧攨攩攪攬攭攰攱攲攳攷攺攼攽敀敁敂敃敄敆敇敊敋敍敎敐敒敓敔敗敘敚敜敟敠敡敤敥敧敨敩敪敭敮敯敱敳敵敶數敹敺敻敼敽敾敿斀斁斂斃斄斅斆斈斉斊斍斎斏斒斔斕斖斘斚斝斞斠斢斣斦斨斪斬斮斱斲斳斴斵斶斷斸斺斻斾斿旀旂旇旈旉旊旍旐旑旓旔旕旘旙旚旛旜旝旞旟旡旣旤旪旫�".split(""); +for(j = 0; j != D[148].length; ++j) if(D[148][j].charCodeAt(0) !== 0xFFFD) { e[D[148][j]] = 37888 + j; d[37888 + j] = D[148][j];} +D[149] = "����������������������������������������������������������������旲旳旴旵旸旹旻旼旽旾旿昁昄昅昇昈昉昋昍昐昑昒昖昗昘昚昛昜昞昡昢昣昤昦昩昪昫昬昮昰昲昳昷昸昹昺昻昽昿晀時晄晅晆晇晈晉晊晍晎晐晑晘�晙晛晜晝晞晠晢晣晥晧晩晪晫晬晭晱晲晳晵晸晹晻晼晽晿暀暁暃暅暆暈暉暊暋暍暎暏暐暒暓暔暕暘暙暚暛暜暞暟暠暡暢暣暤暥暦暩暪暫暬暭暯暰暱暲暳暵暶暷暸暺暻暼暽暿曀曁曂曃曄曅曆曇曈曉曊曋曌曍曎曏曐曑曒曓曔曕曖曗曘曚曞曟曠曡曢曣曤曥曧曨曪曫曬曭曮曯曱曵曶書曺曻曽朁朂會�".split(""); +for(j = 0; j != D[149].length; ++j) if(D[149][j].charCodeAt(0) !== 0xFFFD) { e[D[149][j]] = 38144 + j; d[38144 + j] = D[149][j];} +D[150] = "����������������������������������������������������������������朄朅朆朇朌朎朏朑朒朓朖朘朙朚朜朞朠朡朢朣朤朥朧朩朮朰朲朳朶朷朸朹朻朼朾朿杁杄杅杇杊杋杍杒杔杕杗杘杙杚杛杝杢杣杤杦杧杫杬杮東杴杶�杸杹杺杻杽枀枂枃枅枆枈枊枌枍枎枏枑枒枓枔枖枙枛枟枠枡枤枦枩枬枮枱枲枴枹枺枻枼枽枾枿柀柂柅柆柇柈柉柊柋柌柍柎柕柖柗柛柟柡柣柤柦柧柨柪柫柭柮柲柵柶柷柸柹柺査柼柾栁栂栃栄栆栍栐栒栔栕栘栙栚栛栜栞栟栠栢栣栤栥栦栧栨栫栬栭栮栯栰栱栴栵栶栺栻栿桇桋桍桏桒桖桗桘桙桚桛�".split(""); +for(j = 0; j != D[150].length; ++j) if(D[150][j].charCodeAt(0) !== 0xFFFD) { e[D[150][j]] = 38400 + j; d[38400 + j] = D[150][j];} +D[151] = "����������������������������������������������������������������桜桝桞桟桪桬桭桮桯桰桱桲桳桵桸桹桺桻桼桽桾桿梀梂梄梇梈梉梊梋梌梍梎梐梑梒梔梕梖梘梙梚梛梜條梞梟梠梡梣梤梥梩梪梫梬梮梱梲梴梶梷梸�梹梺梻梼梽梾梿棁棃棄棅棆棇棈棊棌棎棏棐棑棓棔棖棗棙棛棜棝棞棟棡棢棤棥棦棧棨棩棪棫棬棭棯棲棳棴棶棷棸棻棽棾棿椀椂椃椄椆椇椈椉椊椌椏椑椓椔椕椖椗椘椙椚椛検椝椞椡椢椣椥椦椧椨椩椪椫椬椮椯椱椲椳椵椶椷椸椺椻椼椾楀楁楃楄楅楆楇楈楉楊楋楌楍楎楏楐楑楒楓楕楖楘楙楛楜楟�".split(""); +for(j = 0; j != D[151].length; ++j) if(D[151][j].charCodeAt(0) !== 0xFFFD) { e[D[151][j]] = 38656 + j; d[38656 + j] = D[151][j];} +D[152] = "����������������������������������������������������������������楡楢楤楥楧楨楩楪楬業楯楰楲楳楴極楶楺楻楽楾楿榁榃榅榊榋榌榎榏榐榑榒榓榖榗榙榚榝榞榟榠榡榢榣榤榥榦榩榪榬榮榯榰榲榳榵榶榸榹榺榼榽�榾榿槀槂槃槄槅槆槇槈槉構槍槏槑槒槓槕槖槗様槙槚槜槝槞槡槢槣槤槥槦槧槨槩槪槫槬槮槯槰槱槳槴槵槶槷槸槹槺槻槼槾樀樁樂樃樄樅樆樇樈樉樋樌樍樎樏樐樑樒樓樔樕樖標樚樛樜樝樞樠樢樣樤樥樦樧権樫樬樭樮樰樲樳樴樶樷樸樹樺樻樼樿橀橁橂橃橅橆橈橉橊橋橌橍橎橏橑橒橓橔橕橖橗橚�".split(""); +for(j = 0; j != D[152].length; ++j) if(D[152][j].charCodeAt(0) !== 0xFFFD) { e[D[152][j]] = 38912 + j; d[38912 + j] = D[152][j];} +D[153] = "����������������������������������������������������������������橜橝橞機橠橢橣橤橦橧橨橩橪橫橬橭橮橯橰橲橳橴橵橶橷橸橺橻橽橾橿檁檂檃檅檆檇檈檉檊檋檌檍檏檒檓檔檕檖檘檙檚檛檜檝檞檟檡檢檣檤檥檦�檧檨檪檭檮檯檰檱檲檳檴檵檶檷檸檹檺檻檼檽檾檿櫀櫁櫂櫃櫄櫅櫆櫇櫈櫉櫊櫋櫌櫍櫎櫏櫐櫑櫒櫓櫔櫕櫖櫗櫘櫙櫚櫛櫜櫝櫞櫟櫠櫡櫢櫣櫤櫥櫦櫧櫨櫩櫪櫫櫬櫭櫮櫯櫰櫱櫲櫳櫴櫵櫶櫷櫸櫹櫺櫻櫼櫽櫾櫿欀欁欂欃欄欅欆欇欈欉權欋欌欍欎欏欐欑欒欓欔欕欖欗欘欙欚欛欜欝欞欟欥欦欨欩欪欫欬欭欮�".split(""); +for(j = 0; j != D[153].length; ++j) if(D[153][j].charCodeAt(0) !== 0xFFFD) { e[D[153][j]] = 39168 + j; d[39168 + j] = D[153][j];} +D[154] = "����������������������������������������������������������������欯欰欱欳欴欵欶欸欻欼欽欿歀歁歂歄歅歈歊歋歍歎歏歐歑歒歓歔歕歖歗歘歚歛歜歝歞歟歠歡歨歩歫歬歭歮歯歰歱歲歳歴歵歶歷歸歺歽歾歿殀殅殈�殌殎殏殐殑殔殕殗殘殙殜殝殞殟殠殢殣殤殥殦殧殨殩殫殬殭殮殯殰殱殲殶殸殹殺殻殼殽殾毀毃毄毆毇毈毉毊毌毎毐毑毘毚毜毝毞毟毠毢毣毤毥毦毧毨毩毬毭毮毰毱毲毴毶毷毸毺毻毼毾毿氀氁氂氃氄氈氉氊氋氌氎氒気氜氝氞氠氣氥氫氬氭氱氳氶氷氹氺氻氼氾氿汃汄汅汈汋汌汍汎汏汑汒汓汖汘�".split(""); +for(j = 0; j != D[154].length; ++j) if(D[154][j].charCodeAt(0) !== 0xFFFD) { e[D[154][j]] = 39424 + j; d[39424 + j] = D[154][j];} +D[155] = "����������������������������������������������������������������汙汚汢汣汥汦汧汫汬汭汮汯汱汳汵汷汸決汻汼汿沀沄沇沊沋沍沎沑沒沕沖沗沘沚沜沝沞沠沢沨沬沯沰沴沵沶沷沺泀況泂泃泆泇泈泋泍泎泏泑泒泘�泙泚泜泝泟泤泦泧泩泬泭泲泴泹泿洀洂洃洅洆洈洉洊洍洏洐洑洓洔洕洖洘洜洝洟洠洡洢洣洤洦洨洩洬洭洯洰洴洶洷洸洺洿浀浂浄浉浌浐浕浖浗浘浛浝浟浡浢浤浥浧浨浫浬浭浰浱浲浳浵浶浹浺浻浽浾浿涀涁涃涄涆涇涊涋涍涏涐涒涖涗涘涙涚涜涢涥涬涭涰涱涳涴涶涷涹涺涻涼涽涾淁淂淃淈淉淊�".split(""); +for(j = 0; j != D[155].length; ++j) if(D[155][j].charCodeAt(0) !== 0xFFFD) { e[D[155][j]] = 39680 + j; d[39680 + j] = D[155][j];} +D[156] = "����������������������������������������������������������������淍淎淏淐淒淓淔淕淗淚淛淜淟淢淣淥淧淨淩淪淭淯淰淲淴淵淶淸淺淽淾淿渀渁渂渃渄渆渇済渉渋渏渒渓渕渘渙減渜渞渟渢渦渧渨渪測渮渰渱渳渵�渶渷渹渻渼渽渾渿湀湁湂湅湆湇湈湉湊湋湌湏湐湑湒湕湗湙湚湜湝湞湠湡湢湣湤湥湦湧湨湩湪湬湭湯湰湱湲湳湴湵湶湷湸湹湺湻湼湽満溁溂溄溇溈溊溋溌溍溎溑溒溓溔溕準溗溙溚溛溝溞溠溡溣溤溦溨溩溫溬溭溮溰溳溵溸溹溼溾溿滀滃滄滅滆滈滉滊滌滍滎滐滒滖滘滙滛滜滝滣滧滪滫滬滭滮滯�".split(""); +for(j = 0; j != D[156].length; ++j) if(D[156][j].charCodeAt(0) !== 0xFFFD) { e[D[156][j]] = 39936 + j; d[39936 + j] = D[156][j];} +D[157] = "����������������������������������������������������������������滰滱滲滳滵滶滷滸滺滻滼滽滾滿漀漁漃漄漅漇漈漊漋漌漍漎漐漑漒漖漗漘漙漚漛漜漝漞漟漡漢漣漥漦漧漨漬漮漰漲漴漵漷漸漹漺漻漼漽漿潀潁潂�潃潄潅潈潉潊潌潎潏潐潑潒潓潔潕潖潗潙潚潛潝潟潠潡潣潤潥潧潨潩潪潫潬潯潰潱潳潵潶潷潹潻潽潾潿澀澁澂澃澅澆澇澊澋澏澐澑澒澓澔澕澖澗澘澙澚澛澝澞澟澠澢澣澤澥澦澨澩澪澫澬澭澮澯澰澱澲澴澵澷澸澺澻澼澽澾澿濁濃濄濅濆濇濈濊濋濌濍濎濏濐濓濔濕濖濗濘濙濚濛濜濝濟濢濣濤濥�".split(""); +for(j = 0; j != D[157].length; ++j) if(D[157][j].charCodeAt(0) !== 0xFFFD) { e[D[157][j]] = 40192 + j; d[40192 + j] = D[157][j];} +D[158] = "����������������������������������������������������������������濦濧濨濩濪濫濬濭濰濱濲濳濴濵濶濷濸濹濺濻濼濽濾濿瀀瀁瀂瀃瀄瀅瀆瀇瀈瀉瀊瀋瀌瀍瀎瀏瀐瀒瀓瀔瀕瀖瀗瀘瀙瀜瀝瀞瀟瀠瀡瀢瀤瀥瀦瀧瀨瀩瀪�瀫瀬瀭瀮瀯瀰瀱瀲瀳瀴瀶瀷瀸瀺瀻瀼瀽瀾瀿灀灁灂灃灄灅灆灇灈灉灊灋灍灎灐灑灒灓灔灕灖灗灘灙灚灛灜灝灟灠灡灢灣灤灥灦灧灨灩灪灮灱灲灳灴灷灹灺灻災炁炂炃炄炆炇炈炋炌炍炏炐炑炓炗炘炚炛炞炟炠炡炢炣炤炥炦炧炨炩炪炰炲炴炵炶為炾炿烄烅烆烇烉烋烌烍烎烏烐烑烒烓烔烕烖烗烚�".split(""); +for(j = 0; j != D[158].length; ++j) if(D[158][j].charCodeAt(0) !== 0xFFFD) { e[D[158][j]] = 40448 + j; d[40448 + j] = D[158][j];} +D[159] = "����������������������������������������������������������������烜烝烞烠烡烢烣烥烪烮烰烱烲烳烴烵烶烸烺烻烼烾烿焀焁焂焃焄焅焆焇焈焋焌焍焎焏焑焒焔焗焛焜焝焞焟焠無焢焣焤焥焧焨焩焪焫焬焭焮焲焳焴�焵焷焸焹焺焻焼焽焾焿煀煁煂煃煄煆煇煈煉煋煍煏煐煑煒煓煔煕煖煗煘煙煚煛煝煟煠煡煢煣煥煩煪煫煬煭煯煰煱煴煵煶煷煹煻煼煾煿熀熁熂熃熅熆熇熈熉熋熌熍熎熐熑熒熓熕熖熗熚熛熜熝熞熡熢熣熤熥熦熧熩熪熫熭熮熯熰熱熲熴熶熷熸熺熻熼熽熾熿燀燁燂燄燅燆燇燈燉燊燋燌燍燏燐燑燒燓�".split(""); +for(j = 0; j != D[159].length; ++j) if(D[159][j].charCodeAt(0) !== 0xFFFD) { e[D[159][j]] = 40704 + j; d[40704 + j] = D[159][j];} +D[160] = "����������������������������������������������������������������燖燗燘燙燚燛燜燝燞營燡燢燣燤燦燨燩燪燫燬燭燯燰燱燲燳燴燵燶燷燸燺燻燼燽燾燿爀爁爂爃爄爅爇爈爉爊爋爌爍爎爏爐爑爒爓爔爕爖爗爘爙爚�爛爜爞爟爠爡爢爣爤爥爦爧爩爫爭爮爯爲爳爴爺爼爾牀牁牂牃牄牅牆牉牊牋牎牏牐牑牓牔牕牗牘牚牜牞牠牣牤牥牨牪牫牬牭牰牱牳牴牶牷牸牻牼牽犂犃犅犆犇犈犉犌犎犐犑犓犔犕犖犗犘犙犚犛犜犝犞犠犡犢犣犤犥犦犧犨犩犪犫犮犱犲犳犵犺犻犼犽犾犿狀狅狆狇狉狊狋狌狏狑狓狔狕狖狘狚狛�".split(""); +for(j = 0; j != D[160].length; ++j) if(D[160][j].charCodeAt(0) !== 0xFFFD) { e[D[160][j]] = 40960 + j; d[40960 + j] = D[160][j];} +D[161] = "����������������������������������������������������������������������������������������������������������������������������������������������������������������� 、。·ˉˇ¨〃々—~‖…‘’“”〔〕〈〉《》「」『』〖〗【】±×÷∶∧∨∑∏∪∩∈∷√⊥∥∠⌒⊙∫∮≡≌≈∽∝≠≮≯≤≥∞∵∴♂♀°′″℃$¤¢£‰§№☆★○●◎◇◆□■△▲※→←↑↓〓�".split(""); +for(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];} +D[162] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������ⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹ������⒈⒉⒊⒋⒌⒍⒎⒏⒐⒑⒒⒓⒔⒕⒖⒗⒘⒙⒚⒛⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽⑾⑿⒀⒁⒂⒃⒄⒅⒆⒇①②③④⑤⑥⑦⑧⑨⑩��㈠㈡㈢㈣㈤㈥㈦㈧㈨㈩��ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫ���".split(""); +for(j = 0; j != D[162].length; ++j) if(D[162][j].charCodeAt(0) !== 0xFFFD) { e[D[162][j]] = 41472 + j; d[41472 + j] = D[162][j];} +D[163] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������!"#¥%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|} ̄�".split(""); +for(j = 0; j != D[163].length; ++j) if(D[163][j].charCodeAt(0) !== 0xFFFD) { e[D[163][j]] = 41728 + j; d[41728 + j] = D[163][j];} +D[164] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをん������������".split(""); +for(j = 0; j != D[164].length; ++j) if(D[164][j].charCodeAt(0) !== 0xFFFD) { e[D[164][j]] = 41984 + j; d[41984 + j] = D[164][j];} +D[165] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶ���������".split(""); +for(j = 0; j != D[165].length; ++j) if(D[165][j].charCodeAt(0) !== 0xFFFD) { e[D[165][j]] = 42240 + j; d[42240 + j] = D[165][j];} +D[166] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ��������αβγδεζηθικλμνξοπρστυφχψω�������︵︶︹︺︿﹀︽︾﹁﹂﹃﹄��︻︼︷︸︱�︳︴����������".split(""); +for(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];} +D[167] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ���������������абвгдеёжзийклмнопрстуфхцчшщъыьэюя��������������".split(""); +for(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];} +D[168] = "����������������������������������������������������������������ˊˋ˙–―‥‵℅℉↖↗↘↙∕∟∣≒≦≧⊿═║╒╓╔╕╖╗╘╙╚╛╜╝╞╟╠╡╢╣╤╥╦╧╨╩╪╫╬╭╮╯╰╱╲╳▁▂▃▄▅▆▇�█▉▊▋▌▍▎▏▓▔▕▼▽◢◣◤◥☉⊕〒〝〞�����������āáǎàēéěèīíǐìōóǒòūúǔùǖǘǚǜüêɑ�ńň�ɡ����ㄅㄆㄇㄈㄉㄊㄋㄌㄍㄎㄏㄐㄑㄒㄓㄔㄕㄖㄗㄘㄙㄚㄛㄜㄝㄞㄟㄠㄡㄢㄣㄤㄥㄦㄧㄨㄩ����������������������".split(""); +for(j = 0; j != D[168].length; ++j) if(D[168][j].charCodeAt(0) !== 0xFFFD) { e[D[168][j]] = 43008 + j; d[43008 + j] = D[168][j];} +D[169] = "����������������������������������������������������������������〡〢〣〤〥〦〧〨〩㊣㎎㎏㎜㎝㎞㎡㏄㏎㏑㏒㏕︰¬¦�℡㈱�‐���ー゛゜ヽヾ〆ゝゞ﹉﹊﹋﹌﹍﹎﹏﹐﹑﹒﹔﹕﹖﹗﹙﹚﹛﹜﹝﹞﹟﹠﹡�﹢﹣﹤﹥﹦﹨﹩﹪﹫�������������〇�������������─━│┃┄┅┆┇┈┉┊┋┌┍┎┏┐┑┒┓└┕┖┗┘┙┚┛├┝┞┟┠┡┢┣┤┥┦┧┨┩┪┫┬┭┮┯┰┱┲┳┴┵┶┷┸┹┺┻┼┽┾┿╀╁╂╃╄╅╆╇╈╉╊╋����������������".split(""); +for(j = 0; j != D[169].length; ++j) if(D[169][j].charCodeAt(0) !== 0xFFFD) { e[D[169][j]] = 43264 + j; d[43264 + j] = D[169][j];} +D[170] = "����������������������������������������������������������������狜狝狟狢狣狤狥狦狧狪狫狵狶狹狽狾狿猀猂猄猅猆猇猈猉猋猌猍猏猐猑猒猔猘猙猚猟猠猣猤猦猧猨猭猯猰猲猳猵猶猺猻猼猽獀獁獂獃獄獅獆獇獈�獉獊獋獌獎獏獑獓獔獕獖獘獙獚獛獜獝獞獟獡獢獣獤獥獦獧獨獩獪獫獮獰獱�����������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];} +D[171] = "����������������������������������������������������������������獲獳獴獵獶獷獸獹獺獻獼獽獿玀玁玂玃玅玆玈玊玌玍玏玐玒玓玔玕玗玘玙玚玜玝玞玠玡玣玤玥玦玧玨玪玬玭玱玴玵玶玸玹玼玽玾玿珁珃珄珅珆珇�珋珌珎珒珓珔珕珖珗珘珚珛珜珝珟珡珢珣珤珦珨珪珫珬珮珯珰珱珳珴珵珶珷�����������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[171].length; ++j) if(D[171][j].charCodeAt(0) !== 0xFFFD) { e[D[171][j]] = 43776 + j; d[43776 + j] = D[171][j];} +D[172] = "����������������������������������������������������������������珸珹珺珻珼珽現珿琀琁琂琄琇琈琋琌琍琎琑琒琓琔琕琖琗琘琙琜琝琞琟琠琡琣琤琧琩琫琭琯琱琲琷琸琹琺琻琽琾琿瑀瑂瑃瑄瑅瑆瑇瑈瑉瑊瑋瑌瑍�瑎瑏瑐瑑瑒瑓瑔瑖瑘瑝瑠瑡瑢瑣瑤瑥瑦瑧瑨瑩瑪瑫瑬瑮瑯瑱瑲瑳瑴瑵瑸瑹瑺�����������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[172].length; ++j) if(D[172][j].charCodeAt(0) !== 0xFFFD) { e[D[172][j]] = 44032 + j; d[44032 + j] = D[172][j];} +D[173] = "����������������������������������������������������������������瑻瑼瑽瑿璂璄璅璆璈璉璊璌璍璏璑璒璓璔璕璖璗璘璙璚璛璝璟璠璡璢璣璤璥璦璪璫璬璭璮璯環璱璲璳璴璵璶璷璸璹璻璼璽璾璿瓀瓁瓂瓃瓄瓅瓆瓇�瓈瓉瓊瓋瓌瓍瓎瓏瓐瓑瓓瓔瓕瓖瓗瓘瓙瓚瓛瓝瓟瓡瓥瓧瓨瓩瓪瓫瓬瓭瓰瓱瓲�����������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[173].length; ++j) if(D[173][j].charCodeAt(0) !== 0xFFFD) { e[D[173][j]] = 44288 + j; d[44288 + j] = D[173][j];} +D[174] = "����������������������������������������������������������������瓳瓵瓸瓹瓺瓻瓼瓽瓾甀甁甂甃甅甆甇甈甉甊甋甌甎甐甒甔甕甖甗甛甝甞甠甡產産甤甦甧甪甮甴甶甹甼甽甿畁畂畃畄畆畇畉畊畍畐畑畒畓畕畖畗畘�畝畞畟畠畡畢畣畤畧畨畩畫畬畭畮畯異畱畳畵當畷畺畻畼畽畾疀疁疂疄疅疇�����������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[174].length; ++j) if(D[174][j].charCodeAt(0) !== 0xFFFD) { e[D[174][j]] = 44544 + j; d[44544 + j] = D[174][j];} +D[175] = "����������������������������������������������������������������疈疉疊疌疍疎疐疓疕疘疛疜疞疢疦疧疨疩疪疭疶疷疺疻疿痀痁痆痋痌痎痏痐痑痓痗痙痚痜痝痟痠痡痥痩痬痭痮痯痲痳痵痶痷痸痺痻痽痾瘂瘄瘆瘇�瘈瘉瘋瘍瘎瘏瘑瘒瘓瘔瘖瘚瘜瘝瘞瘡瘣瘧瘨瘬瘮瘯瘱瘲瘶瘷瘹瘺瘻瘽癁療癄�����������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[175].length; ++j) if(D[175][j].charCodeAt(0) !== 0xFFFD) { e[D[175][j]] = 44800 + j; d[44800 + j] = D[175][j];} +D[176] = "����������������������������������������������������������������癅癆癇癈癉癊癋癎癏癐癑癒癓癕癗癘癙癚癛癝癟癠癡癢癤癥癦癧癨癩癪癬癭癮癰癱癲癳癴癵癶癷癹発發癿皀皁皃皅皉皊皌皍皏皐皒皔皕皗皘皚皛�皜皝皞皟皠皡皢皣皥皦皧皨皩皪皫皬皭皯皰皳皵皶皷皸皹皺皻皼皽皾盀盁盃啊阿埃挨哎唉哀皑癌蔼矮艾碍爱隘鞍氨安俺按暗岸胺案肮昂盎凹敖熬翱袄傲奥懊澳芭捌扒叭吧笆八疤巴拔跋靶把耙坝霸罢爸白柏百摆佰败拜稗斑班搬扳般颁板版扮拌伴瓣半办绊邦帮梆榜膀绑棒磅蚌镑傍谤苞胞包褒剥�".split(""); +for(j = 0; j != D[176].length; ++j) if(D[176][j].charCodeAt(0) !== 0xFFFD) { e[D[176][j]] = 45056 + j; d[45056 + j] = D[176][j];} +D[177] = "����������������������������������������������������������������盄盇盉盋盌盓盕盙盚盜盝盞盠盡盢監盤盦盧盨盩盪盫盬盭盰盳盵盶盷盺盻盽盿眀眂眃眅眆眊県眎眏眐眑眒眓眔眕眖眗眘眛眜眝眞眡眣眤眥眧眪眫�眬眮眰眱眲眳眴眹眻眽眾眿睂睄睅睆睈睉睊睋睌睍睎睏睒睓睔睕睖睗睘睙睜薄雹保堡饱宝抱报暴豹鲍爆杯碑悲卑北辈背贝钡倍狈备惫焙被奔苯本笨崩绷甭泵蹦迸逼鼻比鄙笔彼碧蓖蔽毕毙毖币庇痹闭敝弊必辟壁臂避陛鞭边编贬扁便变卞辨辩辫遍标彪膘表鳖憋别瘪彬斌濒滨宾摈兵冰柄丙秉饼炳�".split(""); +for(j = 0; j != D[177].length; ++j) if(D[177][j].charCodeAt(0) !== 0xFFFD) { e[D[177][j]] = 45312 + j; d[45312 + j] = D[177][j];} +D[178] = "����������������������������������������������������������������睝睞睟睠睤睧睩睪睭睮睯睰睱睲睳睴睵睶睷睸睺睻睼瞁瞂瞃瞆瞇瞈瞉瞊瞋瞏瞐瞓瞔瞕瞖瞗瞘瞙瞚瞛瞜瞝瞞瞡瞣瞤瞦瞨瞫瞭瞮瞯瞱瞲瞴瞶瞷瞸瞹瞺�瞼瞾矀矁矂矃矄矅矆矇矈矉矊矋矌矎矏矐矑矒矓矔矕矖矘矙矚矝矞矟矠矡矤病并玻菠播拨钵波博勃搏铂箔伯帛舶脖膊渤泊驳捕卜哺补埠不布步簿部怖擦猜裁材才财睬踩采彩菜蔡餐参蚕残惭惨灿苍舱仓沧藏操糙槽曹草厕策侧册测层蹭插叉茬茶查碴搽察岔差诧拆柴豺搀掺蝉馋谗缠铲产阐颤昌猖�".split(""); +for(j = 0; j != D[178].length; ++j) if(D[178][j].charCodeAt(0) !== 0xFFFD) { e[D[178][j]] = 45568 + j; d[45568 + j] = D[178][j];} +D[179] = "����������������������������������������������������������������矦矨矪矯矰矱矲矴矵矷矹矺矻矼砃砄砅砆砇砈砊砋砎砏砐砓砕砙砛砞砠砡砢砤砨砪砫砮砯砱砲砳砵砶砽砿硁硂硃硄硆硈硉硊硋硍硏硑硓硔硘硙硚�硛硜硞硟硠硡硢硣硤硥硦硧硨硩硯硰硱硲硳硴硵硶硸硹硺硻硽硾硿碀碁碂碃场尝常长偿肠厂敞畅唱倡超抄钞朝嘲潮巢吵炒车扯撤掣彻澈郴臣辰尘晨忱沉陈趁衬撑称城橙成呈乘程惩澄诚承逞骋秤吃痴持匙池迟弛驰耻齿侈尺赤翅斥炽充冲虫崇宠抽酬畴踌稠愁筹仇绸瞅丑臭初出橱厨躇锄雏滁除楚�".split(""); +for(j = 0; j != D[179].length; ++j) if(D[179][j].charCodeAt(0) !== 0xFFFD) { e[D[179][j]] = 45824 + j; d[45824 + j] = D[179][j];} +D[180] = "����������������������������������������������������������������碄碅碆碈碊碋碏碐碒碔碕碖碙碝碞碠碢碤碦碨碩碪碫碬碭碮碯碵碶碷碸確碻碼碽碿磀磂磃磄磆磇磈磌磍磎磏磑磒磓磖磗磘磚磛磜磝磞磟磠磡磢磣�磤磥磦磧磩磪磫磭磮磯磰磱磳磵磶磸磹磻磼磽磾磿礀礂礃礄礆礇礈礉礊礋礌础储矗搐触处揣川穿椽传船喘串疮窗幢床闯创吹炊捶锤垂春椿醇唇淳纯蠢戳绰疵茨磁雌辞慈瓷词此刺赐次聪葱囱匆从丛凑粗醋簇促蹿篡窜摧崔催脆瘁粹淬翠村存寸磋撮搓措挫错搭达答瘩打大呆歹傣戴带殆代贷袋待逮�".split(""); +for(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];} +D[181] = "����������������������������������������������������������������礍礎礏礐礑礒礔礕礖礗礘礙礚礛礜礝礟礠礡礢礣礥礦礧礨礩礪礫礬礭礮礯礰礱礲礳礵礶礷礸礹礽礿祂祃祄祅祇祊祋祌祍祎祏祐祑祒祔祕祘祙祡祣�祤祦祩祪祫祬祮祰祱祲祳祴祵祶祹祻祼祽祾祿禂禃禆禇禈禉禋禌禍禎禐禑禒怠耽担丹单郸掸胆旦氮但惮淡诞弹蛋当挡党荡档刀捣蹈倒岛祷导到稻悼道盗德得的蹬灯登等瞪凳邓堤低滴迪敌笛狄涤翟嫡抵底地蒂第帝弟递缔颠掂滇碘点典靛垫电佃甸店惦奠淀殿碉叼雕凋刁掉吊钓调跌爹碟蝶迭谍叠�".split(""); +for(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];} +D[182] = "����������������������������������������������������������������禓禔禕禖禗禘禙禛禜禝禞禟禠禡禢禣禤禥禦禨禩禪禫禬禭禮禯禰禱禲禴禵禶禷禸禼禿秂秄秅秇秈秊秌秎秏秐秓秔秖秗秙秚秛秜秝秞秠秡秢秥秨秪�秬秮秱秲秳秴秵秶秷秹秺秼秾秿稁稄稅稇稈稉稊稌稏稐稑稒稓稕稖稘稙稛稜丁盯叮钉顶鼎锭定订丢东冬董懂动栋侗恫冻洞兜抖斗陡豆逗痘都督毒犊独读堵睹赌杜镀肚度渡妒端短锻段断缎堆兑队对墩吨蹲敦顿囤钝盾遁掇哆多夺垛躲朵跺舵剁惰堕蛾峨鹅俄额讹娥恶厄扼遏鄂饿恩而儿耳尔饵洱二�".split(""); +for(j = 0; j != D[182].length; ++j) if(D[182][j].charCodeAt(0) !== 0xFFFD) { e[D[182][j]] = 46592 + j; d[46592 + j] = D[182][j];} +D[183] = "����������������������������������������������������������������稝稟稡稢稤稥稦稧稨稩稪稫稬稭種稯稰稱稲稴稵稶稸稺稾穀穁穂穃穄穅穇穈穉穊穋穌積穎穏穐穒穓穔穕穖穘穙穚穛穜穝穞穟穠穡穢穣穤穥穦穧穨�穩穪穫穬穭穮穯穱穲穳穵穻穼穽穾窂窅窇窉窊窋窌窎窏窐窓窔窙窚窛窞窡窢贰发罚筏伐乏阀法珐藩帆番翻樊矾钒繁凡烦反返范贩犯饭泛坊芳方肪房防妨仿访纺放菲非啡飞肥匪诽吠肺废沸费芬酚吩氛分纷坟焚汾粉奋份忿愤粪丰封枫蜂峰锋风疯烽逢冯缝讽奉凤佛否夫敷肤孵扶拂辐幅氟符伏俘服�".split(""); +for(j = 0; j != D[183].length; ++j) if(D[183][j].charCodeAt(0) !== 0xFFFD) { e[D[183][j]] = 46848 + j; d[46848 + j] = D[183][j];} +D[184] = "����������������������������������������������������������������窣窤窧窩窪窫窮窯窰窱窲窴窵窶窷窸窹窺窻窼窽窾竀竁竂竃竄竅竆竇竈竉竊竌竍竎竏竐竑竒竓竔竕竗竘竚竛竜竝竡竢竤竧竨竩竪竫竬竮竰竱竲竳�竴竵競竷竸竻竼竾笀笁笂笅笇笉笌笍笎笐笒笓笖笗笘笚笜笝笟笡笢笣笧笩笭浮涪福袱弗甫抚辅俯釜斧脯腑府腐赴副覆赋复傅付阜父腹负富讣附妇缚咐噶嘎该改概钙盖溉干甘杆柑竿肝赶感秆敢赣冈刚钢缸肛纲岗港杠篙皋高膏羔糕搞镐稿告哥歌搁戈鸽胳疙割革葛格蛤阁隔铬个各给根跟耕更庚羹�".split(""); +for(j = 0; j != D[184].length; ++j) if(D[184][j].charCodeAt(0) !== 0xFFFD) { e[D[184][j]] = 47104 + j; d[47104 + j] = D[184][j];} +D[185] = "����������������������������������������������������������������笯笰笲笴笵笶笷笹笻笽笿筀筁筂筃筄筆筈筊筍筎筓筕筗筙筜筞筟筡筣筤筥筦筧筨筩筪筫筬筭筯筰筳筴筶筸筺筼筽筿箁箂箃箄箆箇箈箉箊箋箌箎箏�箑箒箓箖箘箙箚箛箞箟箠箣箤箥箮箯箰箲箳箵箶箷箹箺箻箼箽箾箿節篂篃範埂耿梗工攻功恭龚供躬公宫弓巩汞拱贡共钩勾沟苟狗垢构购够辜菇咕箍估沽孤姑鼓古蛊骨谷股故顾固雇刮瓜剐寡挂褂乖拐怪棺关官冠观管馆罐惯灌贯光广逛瑰规圭硅归龟闺轨鬼诡癸桂柜跪贵刽辊滚棍锅郭国果裹过哈�".split(""); +for(j = 0; j != D[185].length; ++j) if(D[185][j].charCodeAt(0) !== 0xFFFD) { e[D[185][j]] = 47360 + j; d[47360 + j] = D[185][j];} +D[186] = "����������������������������������������������������������������篅篈築篊篋篍篎篏篐篒篔篕篖篗篘篛篜篞篟篠篢篣篤篧篨篩篫篬篭篯篰篲篳篴篵篶篸篹篺篻篽篿簀簁簂簃簄簅簆簈簉簊簍簎簐簑簒簓簔簕簗簘簙�簚簛簜簝簞簠簡簢簣簤簥簨簩簫簬簭簮簯簰簱簲簳簴簵簶簷簹簺簻簼簽簾籂骸孩海氦亥害骇酣憨邯韩含涵寒函喊罕翰撼捍旱憾悍焊汗汉夯杭航壕嚎豪毫郝好耗号浩呵喝荷菏核禾和何合盒貉阂河涸赫褐鹤贺嘿黑痕很狠恨哼亨横衡恒轰哄烘虹鸿洪宏弘红喉侯猴吼厚候后呼乎忽瑚壶葫胡蝴狐糊湖�".split(""); +for(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];} +D[187] = "����������������������������������������������������������������籃籄籅籆籇籈籉籊籋籌籎籏籐籑籒籓籔籕籖籗籘籙籚籛籜籝籞籟籠籡籢籣籤籥籦籧籨籩籪籫籬籭籮籯籰籱籲籵籶籷籸籹籺籾籿粀粁粂粃粄粅粆粇�粈粊粋粌粍粎粏粐粓粔粖粙粚粛粠粡粣粦粧粨粩粫粬粭粯粰粴粵粶粷粸粺粻弧虎唬护互沪户花哗华猾滑画划化话槐徊怀淮坏欢环桓还缓换患唤痪豢焕涣宦幻荒慌黄磺蝗簧皇凰惶煌晃幌恍谎灰挥辉徽恢蛔回毁悔慧卉惠晦贿秽会烩汇讳诲绘荤昏婚魂浑混豁活伙火获或惑霍货祸击圾基机畸稽积箕�".split(""); +for(j = 0; j != D[187].length; ++j) if(D[187][j].charCodeAt(0) !== 0xFFFD) { e[D[187][j]] = 47872 + j; d[47872 + j] = D[187][j];} +D[188] = "����������������������������������������������������������������粿糀糂糃糄糆糉糋糎糏糐糑糒糓糔糘糚糛糝糞糡糢糣糤糥糦糧糩糪糫糬糭糮糰糱糲糳糴糵糶糷糹糺糼糽糾糿紀紁紂紃約紅紆紇紈紉紋紌納紎紏紐�紑紒紓純紕紖紗紘紙級紛紜紝紞紟紡紣紤紥紦紨紩紪紬紭紮細紱紲紳紴紵紶肌饥迹激讥鸡姬绩缉吉极棘辑籍集及急疾汲即嫉级挤几脊己蓟技冀季伎祭剂悸济寄寂计记既忌际妓继纪嘉枷夹佳家加荚颊贾甲钾假稼价架驾嫁歼监坚尖笺间煎兼肩艰奸缄茧检柬碱硷拣捡简俭剪减荐槛鉴践贱见键箭件�".split(""); +for(j = 0; j != D[188].length; ++j) if(D[188][j].charCodeAt(0) !== 0xFFFD) { e[D[188][j]] = 48128 + j; d[48128 + j] = D[188][j];} +D[189] = "����������������������������������������������������������������紷紸紹紺紻紼紽紾紿絀絁終絃組絅絆絇絈絉絊絋経絍絎絏結絑絒絓絔絕絖絗絘絙絚絛絜絝絞絟絠絡絢絣絤絥給絧絨絩絪絫絬絭絯絰統絲絳絴絵絶�絸絹絺絻絼絽絾絿綀綁綂綃綄綅綆綇綈綉綊綋綌綍綎綏綐綑綒經綔綕綖綗綘健舰剑饯渐溅涧建僵姜将浆江疆蒋桨奖讲匠酱降蕉椒礁焦胶交郊浇骄娇嚼搅铰矫侥脚狡角饺缴绞剿教酵轿较叫窖揭接皆秸街阶截劫节桔杰捷睫竭洁结解姐戒藉芥界借介疥诫届巾筋斤金今津襟紧锦仅谨进靳晋禁近烬浸�".split(""); +for(j = 0; j != D[189].length; ++j) if(D[189][j].charCodeAt(0) !== 0xFFFD) { e[D[189][j]] = 48384 + j; d[48384 + j] = D[189][j];} +D[190] = "����������������������������������������������������������������継続綛綜綝綞綟綠綡綢綣綤綥綧綨綩綪綫綬維綯綰綱網綳綴綵綶綷綸綹綺綻綼綽綾綿緀緁緂緃緄緅緆緇緈緉緊緋緌緍緎総緐緑緒緓緔緕緖緗緘緙�線緛緜緝緞緟締緡緢緣緤緥緦緧編緩緪緫緬緭緮緯緰緱緲緳練緵緶緷緸緹緺尽劲荆兢茎睛晶鲸京惊精粳经井警景颈静境敬镜径痉靖竟竞净炯窘揪究纠玖韭久灸九酒厩救旧臼舅咎就疚鞠拘狙疽居驹菊局咀矩举沮聚拒据巨具距踞锯俱句惧炬剧捐鹃娟倦眷卷绢撅攫抉掘倔爵觉决诀绝均菌钧军君峻�".split(""); +for(j = 0; j != D[190].length; ++j) if(D[190][j].charCodeAt(0) !== 0xFFFD) { e[D[190][j]] = 48640 + j; d[48640 + j] = D[190][j];} +D[191] = "����������������������������������������������������������������緻緼緽緾緿縀縁縂縃縄縅縆縇縈縉縊縋縌縍縎縏縐縑縒縓縔縕縖縗縘縙縚縛縜縝縞縟縠縡縢縣縤縥縦縧縨縩縪縫縬縭縮縯縰縱縲縳縴縵縶縷縸縹�縺縼總績縿繀繂繃繄繅繆繈繉繊繋繌繍繎繏繐繑繒繓織繕繖繗繘繙繚繛繜繝俊竣浚郡骏喀咖卡咯开揩楷凯慨刊堪勘坎砍看康慷糠扛抗亢炕考拷烤靠坷苛柯棵磕颗科壳咳可渴克刻客课肯啃垦恳坑吭空恐孔控抠口扣寇枯哭窟苦酷库裤夸垮挎跨胯块筷侩快宽款匡筐狂框矿眶旷况亏盔岿窥葵奎魁傀�".split(""); +for(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];} +D[192] = "����������������������������������������������������������������繞繟繠繡繢繣繤繥繦繧繨繩繪繫繬繭繮繯繰繱繲繳繴繵繶繷繸繹繺繻繼繽繾繿纀纁纃纄纅纆纇纈纉纊纋續纍纎纏纐纑纒纓纔纕纖纗纘纙纚纜纝纞�纮纴纻纼绖绤绬绹缊缐缞缷缹缻缼缽缾缿罀罁罃罆罇罈罉罊罋罌罍罎罏罒罓馈愧溃坤昆捆困括扩廓阔垃拉喇蜡腊辣啦莱来赖蓝婪栏拦篮阑兰澜谰揽览懒缆烂滥琅榔狼廊郎朗浪捞劳牢老佬姥酪烙涝勒乐雷镭蕾磊累儡垒擂肋类泪棱楞冷厘梨犁黎篱狸离漓理李里鲤礼莉荔吏栗丽厉励砾历利傈例俐�".split(""); +for(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];} +D[193] = "����������������������������������������������������������������罖罙罛罜罝罞罠罣罤罥罦罧罫罬罭罯罰罳罵罶罷罸罺罻罼罽罿羀羂羃羄羅羆羇羈羉羋羍羏羐羑羒羓羕羖羗羘羙羛羜羠羢羣羥羦羨義羪羫羬羭羮羱�羳羴羵羶羷羺羻羾翀翂翃翄翆翇翈翉翋翍翏翐翑習翓翖翗翙翚翛翜翝翞翢翣痢立粒沥隶力璃哩俩联莲连镰廉怜涟帘敛脸链恋炼练粮凉梁粱良两辆量晾亮谅撩聊僚疗燎寥辽潦了撂镣廖料列裂烈劣猎琳林磷霖临邻鳞淋凛赁吝拎玲菱零龄铃伶羚凌灵陵岭领另令溜琉榴硫馏留刘瘤流柳六龙聋咙笼窿�".split(""); +for(j = 0; j != D[193].length; ++j) if(D[193][j].charCodeAt(0) !== 0xFFFD) { e[D[193][j]] = 49408 + j; d[49408 + j] = D[193][j];} +D[194] = "����������������������������������������������������������������翤翧翨翪翫翬翭翯翲翴翵翶翷翸翹翺翽翾翿耂耇耈耉耊耎耏耑耓耚耛耝耞耟耡耣耤耫耬耭耮耯耰耲耴耹耺耼耾聀聁聄聅聇聈聉聎聏聐聑聓聕聖聗�聙聛聜聝聞聟聠聡聢聣聤聥聦聧聨聫聬聭聮聯聰聲聳聴聵聶職聸聹聺聻聼聽隆垄拢陇楼娄搂篓漏陋芦卢颅庐炉掳卤虏鲁麓碌露路赂鹿潞禄录陆戮驴吕铝侣旅履屡缕虑氯律率滤绿峦挛孪滦卵乱掠略抡轮伦仑沦纶论萝螺罗逻锣箩骡裸落洛骆络妈麻玛码蚂马骂嘛吗埋买麦卖迈脉瞒馒蛮满蔓曼慢漫�".split(""); +for(j = 0; j != D[194].length; ++j) if(D[194][j].charCodeAt(0) !== 0xFFFD) { e[D[194][j]] = 49664 + j; d[49664 + j] = D[194][j];} +D[195] = "����������������������������������������������������������������聾肁肂肅肈肊肍肎肏肐肑肒肔肕肗肙肞肣肦肧肨肬肰肳肵肶肸肹肻胅胇胈胉胊胋胏胐胑胒胓胔胕胘胟胠胢胣胦胮胵胷胹胻胾胿脀脁脃脄脅脇脈脋�脌脕脗脙脛脜脝脟脠脡脢脣脤脥脦脧脨脩脪脫脭脮脰脳脴脵脷脹脺脻脼脽脿谩芒茫盲氓忙莽猫茅锚毛矛铆卯茂冒帽貌贸么玫枚梅酶霉煤没眉媒镁每美昧寐妹媚门闷们萌蒙檬盟锰猛梦孟眯醚靡糜迷谜弥米秘觅泌蜜密幂棉眠绵冕免勉娩缅面苗描瞄藐秒渺庙妙蔑灭民抿皿敏悯闽明螟鸣铭名命谬摸�".split(""); +for(j = 0; j != D[195].length; ++j) if(D[195][j].charCodeAt(0) !== 0xFFFD) { e[D[195][j]] = 49920 + j; d[49920 + j] = D[195][j];} +D[196] = "����������������������������������������������������������������腀腁腂腃腄腅腇腉腍腎腏腒腖腗腘腛腜腝腞腟腡腢腣腤腦腨腪腫腬腯腲腳腵腶腷腸膁膃膄膅膆膇膉膋膌膍膎膐膒膓膔膕膖膗膙膚膞膟膠膡膢膤膥�膧膩膫膬膭膮膯膰膱膲膴膵膶膷膸膹膼膽膾膿臄臅臇臈臉臋臍臎臏臐臑臒臓摹蘑模膜磨摩魔抹末莫墨默沫漠寞陌谋牟某拇牡亩姆母墓暮幕募慕木目睦牧穆拿哪呐钠那娜纳氖乃奶耐奈南男难囊挠脑恼闹淖呢馁内嫩能妮霓倪泥尼拟你匿腻逆溺蔫拈年碾撵捻念娘酿鸟尿捏聂孽啮镊镍涅您柠狞凝宁�".split(""); +for(j = 0; j != D[196].length; ++j) if(D[196][j].charCodeAt(0) !== 0xFFFD) { e[D[196][j]] = 50176 + j; d[50176 + j] = D[196][j];} +D[197] = "����������������������������������������������������������������臔臕臖臗臘臙臚臛臜臝臞臟臠臡臢臤臥臦臨臩臫臮臯臰臱臲臵臶臷臸臹臺臽臿舃與興舉舊舋舎舏舑舓舕舖舗舘舙舚舝舠舤舥舦舧舩舮舲舺舼舽舿�艀艁艂艃艅艆艈艊艌艍艎艐艑艒艓艔艕艖艗艙艛艜艝艞艠艡艢艣艤艥艦艧艩拧泞牛扭钮纽脓浓农弄奴努怒女暖虐疟挪懦糯诺哦欧鸥殴藕呕偶沤啪趴爬帕怕琶拍排牌徘湃派攀潘盘磐盼畔判叛乓庞旁耪胖抛咆刨炮袍跑泡呸胚培裴赔陪配佩沛喷盆砰抨烹澎彭蓬棚硼篷膨朋鹏捧碰坯砒霹批披劈琵毗�".split(""); +for(j = 0; j != D[197].length; ++j) if(D[197][j].charCodeAt(0) !== 0xFFFD) { e[D[197][j]] = 50432 + j; d[50432 + j] = D[197][j];} +D[198] = "����������������������������������������������������������������艪艫艬艭艱艵艶艷艸艻艼芀芁芃芅芆芇芉芌芐芓芔芕芖芚芛芞芠芢芣芧芲芵芶芺芻芼芿苀苂苃苅苆苉苐苖苙苚苝苢苧苨苩苪苬苭苮苰苲苳苵苶苸�苺苼苽苾苿茀茊茋茍茐茒茓茖茘茙茝茞茟茠茡茢茣茤茥茦茩茪茮茰茲茷茻茽啤脾疲皮匹痞僻屁譬篇偏片骗飘漂瓢票撇瞥拼频贫品聘乒坪苹萍平凭瓶评屏坡泼颇婆破魄迫粕剖扑铺仆莆葡菩蒲埔朴圃普浦谱曝瀑期欺栖戚妻七凄漆柒沏其棋奇歧畦崎脐齐旗祈祁骑起岂乞企启契砌器气迄弃汽泣讫掐�".split(""); +for(j = 0; j != D[198].length; ++j) if(D[198][j].charCodeAt(0) !== 0xFFFD) { e[D[198][j]] = 50688 + j; d[50688 + j] = D[198][j];} +D[199] = "����������������������������������������������������������������茾茿荁荂荄荅荈荊荋荌荍荎荓荕荖荗荘荙荝荢荰荱荲荳荴荵荶荹荺荾荿莀莁莂莃莄莇莈莊莋莌莍莏莐莑莔莕莖莗莙莚莝莟莡莢莣莤莥莦莧莬莭莮�莯莵莻莾莿菂菃菄菆菈菉菋菍菎菐菑菒菓菕菗菙菚菛菞菢菣菤菦菧菨菫菬菭恰洽牵扦钎铅千迁签仟谦乾黔钱钳前潜遣浅谴堑嵌欠歉枪呛腔羌墙蔷强抢橇锹敲悄桥瞧乔侨巧鞘撬翘峭俏窍切茄且怯窃钦侵亲秦琴勤芹擒禽寝沁青轻氢倾卿清擎晴氰情顷请庆琼穷秋丘邱球求囚酋泅趋区蛆曲躯屈驱渠�".split(""); +for(j = 0; j != D[199].length; ++j) if(D[199][j].charCodeAt(0) !== 0xFFFD) { e[D[199][j]] = 50944 + j; d[50944 + j] = D[199][j];} +D[200] = "����������������������������������������������������������������菮華菳菴菵菶菷菺菻菼菾菿萀萂萅萇萈萉萊萐萒萓萔萕萖萗萙萚萛萞萟萠萡萢萣萩萪萫萬萭萮萯萰萲萳萴萵萶萷萹萺萻萾萿葀葁葂葃葄葅葇葈葉�葊葋葌葍葎葏葐葒葓葔葕葖葘葝葞葟葠葢葤葥葦葧葨葪葮葯葰葲葴葷葹葻葼取娶龋趣去圈颧权醛泉全痊拳犬券劝缺炔瘸却鹊榷确雀裙群然燃冉染瓤壤攘嚷让饶扰绕惹热壬仁人忍韧任认刃妊纫扔仍日戎茸蓉荣融熔溶容绒冗揉柔肉茹蠕儒孺如辱乳汝入褥软阮蕊瑞锐闰润若弱撒洒萨腮鳃塞赛三叁�".split(""); +for(j = 0; j != D[200].length; ++j) if(D[200][j].charCodeAt(0) !== 0xFFFD) { e[D[200][j]] = 51200 + j; d[51200 + j] = D[200][j];} +D[201] = "����������������������������������������������������������������葽葾葿蒀蒁蒃蒄蒅蒆蒊蒍蒏蒐蒑蒒蒓蒔蒕蒖蒘蒚蒛蒝蒞蒟蒠蒢蒣蒤蒥蒦蒧蒨蒩蒪蒫蒬蒭蒮蒰蒱蒳蒵蒶蒷蒻蒼蒾蓀蓂蓃蓅蓆蓇蓈蓋蓌蓎蓏蓒蓔蓕蓗�蓘蓙蓚蓛蓜蓞蓡蓢蓤蓧蓨蓩蓪蓫蓭蓮蓯蓱蓲蓳蓴蓵蓶蓷蓸蓹蓺蓻蓽蓾蔀蔁蔂伞散桑嗓丧搔骚扫嫂瑟色涩森僧莎砂杀刹沙纱傻啥煞筛晒珊苫杉山删煽衫闪陕擅赡膳善汕扇缮墒伤商赏晌上尚裳梢捎稍烧芍勺韶少哨邵绍奢赊蛇舌舍赦摄射慑涉社设砷申呻伸身深娠绅神沈审婶甚肾慎渗声生甥牲升绳�".split(""); +for(j = 0; j != D[201].length; ++j) if(D[201][j].charCodeAt(0) !== 0xFFFD) { e[D[201][j]] = 51456 + j; d[51456 + j] = D[201][j];} +D[202] = "����������������������������������������������������������������蔃蔄蔅蔆蔇蔈蔉蔊蔋蔍蔎蔏蔐蔒蔔蔕蔖蔘蔙蔛蔜蔝蔞蔠蔢蔣蔤蔥蔦蔧蔨蔩蔪蔭蔮蔯蔰蔱蔲蔳蔴蔵蔶蔾蔿蕀蕁蕂蕄蕅蕆蕇蕋蕌蕍蕎蕏蕐蕑蕒蕓蕔蕕�蕗蕘蕚蕛蕜蕝蕟蕠蕡蕢蕣蕥蕦蕧蕩蕪蕫蕬蕭蕮蕯蕰蕱蕳蕵蕶蕷蕸蕼蕽蕿薀薁省盛剩胜圣师失狮施湿诗尸虱十石拾时什食蚀实识史矢使屎驶始式示士世柿事拭誓逝势是嗜噬适仕侍释饰氏市恃室视试收手首守寿授售受瘦兽蔬枢梳殊抒输叔舒淑疏书赎孰熟薯暑曙署蜀黍鼠属术述树束戍竖墅庶数漱�".split(""); +for(j = 0; j != D[202].length; ++j) if(D[202][j].charCodeAt(0) !== 0xFFFD) { e[D[202][j]] = 51712 + j; d[51712 + j] = D[202][j];} +D[203] = "����������������������������������������������������������������薂薃薆薈薉薊薋薌薍薎薐薑薒薓薔薕薖薗薘薙薚薝薞薟薠薡薢薣薥薦薧薩薫薬薭薱薲薳薴薵薶薸薺薻薼薽薾薿藀藂藃藄藅藆藇藈藊藋藌藍藎藑藒�藔藖藗藘藙藚藛藝藞藟藠藡藢藣藥藦藧藨藪藫藬藭藮藯藰藱藲藳藴藵藶藷藸恕刷耍摔衰甩帅栓拴霜双爽谁水睡税吮瞬顺舜说硕朔烁斯撕嘶思私司丝死肆寺嗣四伺似饲巳松耸怂颂送宋讼诵搜艘擞嗽苏酥俗素速粟僳塑溯宿诉肃酸蒜算虽隋随绥髓碎岁穗遂隧祟孙损笋蓑梭唆缩琐索锁所塌他它她塔�".split(""); +for(j = 0; j != D[203].length; ++j) if(D[203][j].charCodeAt(0) !== 0xFFFD) { e[D[203][j]] = 51968 + j; d[51968 + j] = D[203][j];} +D[204] = "����������������������������������������������������������������藹藺藼藽藾蘀蘁蘂蘃蘄蘆蘇蘈蘉蘊蘋蘌蘍蘎蘏蘐蘒蘓蘔蘕蘗蘘蘙蘚蘛蘜蘝蘞蘟蘠蘡蘢蘣蘤蘥蘦蘨蘪蘫蘬蘭蘮蘯蘰蘱蘲蘳蘴蘵蘶蘷蘹蘺蘻蘽蘾蘿虀�虁虂虃虄虅虆虇虈虉虊虋虌虒虓處虖虗虘虙虛虜虝號虠虡虣虤虥虦虧虨虩虪獭挞蹋踏胎苔抬台泰酞太态汰坍摊贪瘫滩坛檀痰潭谭谈坦毯袒碳探叹炭汤塘搪堂棠膛唐糖倘躺淌趟烫掏涛滔绦萄桃逃淘陶讨套特藤腾疼誊梯剔踢锑提题蹄啼体替嚏惕涕剃屉天添填田甜恬舔腆挑条迢眺跳贴铁帖厅听烃�".split(""); +for(j = 0; j != D[204].length; ++j) if(D[204][j].charCodeAt(0) !== 0xFFFD) { e[D[204][j]] = 52224 + j; d[52224 + j] = D[204][j];} +D[205] = "����������������������������������������������������������������虭虯虰虲虳虴虵虶虷虸蚃蚄蚅蚆蚇蚈蚉蚎蚏蚐蚑蚒蚔蚖蚗蚘蚙蚚蚛蚞蚟蚠蚡蚢蚥蚦蚫蚭蚮蚲蚳蚷蚸蚹蚻蚼蚽蚾蚿蛁蛂蛃蛅蛈蛌蛍蛒蛓蛕蛖蛗蛚蛜�蛝蛠蛡蛢蛣蛥蛦蛧蛨蛪蛫蛬蛯蛵蛶蛷蛺蛻蛼蛽蛿蜁蜄蜅蜆蜋蜌蜎蜏蜐蜑蜔蜖汀廷停亭庭挺艇通桐酮瞳同铜彤童桶捅筒统痛偷投头透凸秃突图徒途涂屠土吐兔湍团推颓腿蜕褪退吞屯臀拖托脱鸵陀驮驼椭妥拓唾挖哇蛙洼娃瓦袜歪外豌弯湾玩顽丸烷完碗挽晚皖惋宛婉万腕汪王亡枉网往旺望忘妄威�".split(""); +for(j = 0; j != D[205].length; ++j) if(D[205][j].charCodeAt(0) !== 0xFFFD) { e[D[205][j]] = 52480 + j; d[52480 + j] = D[205][j];} +D[206] = "����������������������������������������������������������������蜙蜛蜝蜟蜠蜤蜦蜧蜨蜪蜫蜬蜭蜯蜰蜲蜳蜵蜶蜸蜹蜺蜼蜽蝀蝁蝂蝃蝄蝅蝆蝊蝋蝍蝏蝐蝑蝒蝔蝕蝖蝘蝚蝛蝜蝝蝞蝟蝡蝢蝦蝧蝨蝩蝪蝫蝬蝭蝯蝱蝲蝳蝵�蝷蝸蝹蝺蝿螀螁螄螆螇螉螊螌螎螏螐螑螒螔螕螖螘螙螚螛螜螝螞螠螡螢螣螤巍微危韦违桅围唯惟为潍维苇萎委伟伪尾纬未蔚味畏胃喂魏位渭谓尉慰卫瘟温蚊文闻纹吻稳紊问嗡翁瓮挝蜗涡窝我斡卧握沃巫呜钨乌污诬屋无芜梧吾吴毋武五捂午舞伍侮坞戊雾晤物勿务悟误昔熙析西硒矽晰嘻吸锡牺�".split(""); +for(j = 0; j != D[206].length; ++j) if(D[206][j].charCodeAt(0) !== 0xFFFD) { e[D[206][j]] = 52736 + j; d[52736 + j] = D[206][j];} +D[207] = "����������������������������������������������������������������螥螦螧螩螪螮螰螱螲螴螶螷螸螹螻螼螾螿蟁蟂蟃蟄蟅蟇蟈蟉蟌蟍蟎蟏蟐蟔蟕蟖蟗蟘蟙蟚蟜蟝蟞蟟蟡蟢蟣蟤蟦蟧蟨蟩蟫蟬蟭蟯蟰蟱蟲蟳蟴蟵蟶蟷蟸�蟺蟻蟼蟽蟿蠀蠁蠂蠄蠅蠆蠇蠈蠉蠋蠌蠍蠎蠏蠐蠑蠒蠔蠗蠘蠙蠚蠜蠝蠞蠟蠠蠣稀息希悉膝夕惜熄烯溪汐犀檄袭席习媳喜铣洗系隙戏细瞎虾匣霞辖暇峡侠狭下厦夏吓掀锨先仙鲜纤咸贤衔舷闲涎弦嫌显险现献县腺馅羡宪陷限线相厢镶香箱襄湘乡翔祥详想响享项巷橡像向象萧硝霄削哮嚣销消宵淆晓�".split(""); +for(j = 0; j != D[207].length; ++j) if(D[207][j].charCodeAt(0) !== 0xFFFD) { e[D[207][j]] = 52992 + j; d[52992 + j] = D[207][j];} +D[208] = "����������������������������������������������������������������蠤蠥蠦蠧蠨蠩蠪蠫蠬蠭蠮蠯蠰蠱蠳蠴蠵蠶蠷蠸蠺蠻蠽蠾蠿衁衂衃衆衇衈衉衊衋衎衏衐衑衒術衕衖衘衚衛衜衝衞衟衠衦衧衪衭衯衱衳衴衵衶衸衹衺�衻衼袀袃袆袇袉袊袌袎袏袐袑袓袔袕袗袘袙袚袛袝袞袟袠袡袣袥袦袧袨袩袪小孝校肖啸笑效楔些歇蝎鞋协挟携邪斜胁谐写械卸蟹懈泄泻谢屑薪芯锌欣辛新忻心信衅星腥猩惺兴刑型形邢行醒幸杏性姓兄凶胸匈汹雄熊休修羞朽嗅锈秀袖绣墟戌需虚嘘须徐许蓄酗叙旭序畜恤絮婿绪续轩喧宣悬旋玄�".split(""); +for(j = 0; j != D[208].length; ++j) if(D[208][j].charCodeAt(0) !== 0xFFFD) { e[D[208][j]] = 53248 + j; d[53248 + j] = D[208][j];} +D[209] = "����������������������������������������������������������������袬袮袯袰袲袳袴袵袶袸袹袺袻袽袾袿裀裃裄裇裈裊裋裌裍裏裐裑裓裖裗裚裛補裝裞裠裡裦裧裩裪裫裬裭裮裯裲裵裶裷裺裻製裿褀褁褃褄褅褆複褈�褉褋褌褍褎褏褑褔褕褖褗褘褜褝褞褟褠褢褣褤褦褧褨褩褬褭褮褯褱褲褳褵褷选癣眩绚靴薛学穴雪血勋熏循旬询寻驯巡殉汛训讯逊迅压押鸦鸭呀丫芽牙蚜崖衙涯雅哑亚讶焉咽阉烟淹盐严研蜒岩延言颜阎炎沿奄掩眼衍演艳堰燕厌砚雁唁彦焰宴谚验殃央鸯秧杨扬佯疡羊洋阳氧仰痒养样漾邀腰妖瑶�".split(""); +for(j = 0; j != D[209].length; ++j) if(D[209][j].charCodeAt(0) !== 0xFFFD) { e[D[209][j]] = 53504 + j; d[53504 + j] = D[209][j];} +D[210] = "����������������������������������������������������������������褸褹褺褻褼褽褾褿襀襂襃襅襆襇襈襉襊襋襌襍襎襏襐襑襒襓襔襕襖襗襘襙襚襛襜襝襠襡襢襣襤襥襧襨襩襪襫襬襭襮襯襰襱襲襳襴襵襶襷襸襹襺襼�襽襾覀覂覄覅覇覈覉覊見覌覍覎規覐覑覒覓覔覕視覗覘覙覚覛覜覝覞覟覠覡摇尧遥窑谣姚咬舀药要耀椰噎耶爷野冶也页掖业叶曳腋夜液一壹医揖铱依伊衣颐夷遗移仪胰疑沂宜姨彝椅蚁倚已乙矣以艺抑易邑屹亿役臆逸肄疫亦裔意毅忆义益溢诣议谊译异翼翌绎茵荫因殷音阴姻吟银淫寅饮尹引隐�".split(""); +for(j = 0; j != D[210].length; ++j) if(D[210][j].charCodeAt(0) !== 0xFFFD) { e[D[210][j]] = 53760 + j; d[53760 + j] = D[210][j];} +D[211] = "����������������������������������������������������������������覢覣覤覥覦覧覨覩親覫覬覭覮覯覰覱覲観覴覵覶覷覸覹覺覻覼覽覾覿觀觃觍觓觔觕觗觘觙觛觝觟觠觡觢觤觧觨觩觪觬觭觮觰觱觲觴觵觶觷觸觹觺�觻觼觽觾觿訁訂訃訄訅訆計訉訊訋訌訍討訏訐訑訒訓訔訕訖託記訙訚訛訜訝印英樱婴鹰应缨莹萤营荧蝇迎赢盈影颖硬映哟拥佣臃痈庸雍踊蛹咏泳涌永恿勇用幽优悠忧尤由邮铀犹油游酉有友右佑釉诱又幼迂淤于盂榆虞愚舆余俞逾鱼愉渝渔隅予娱雨与屿禹宇语羽玉域芋郁吁遇喻峪御愈欲狱育誉�".split(""); +for(j = 0; j != D[211].length; ++j) if(D[211][j].charCodeAt(0) !== 0xFFFD) { e[D[211][j]] = 54016 + j; d[54016 + j] = D[211][j];} +D[212] = "����������������������������������������������������������������訞訟訠訡訢訣訤訥訦訧訨訩訪訫訬設訮訯訰許訲訳訴訵訶訷訸訹診註証訽訿詀詁詂詃詄詅詆詇詉詊詋詌詍詎詏詐詑詒詓詔評詖詗詘詙詚詛詜詝詞�詟詠詡詢詣詤詥試詧詨詩詪詫詬詭詮詯詰話該詳詴詵詶詷詸詺詻詼詽詾詿誀浴寓裕预豫驭鸳渊冤元垣袁原援辕园员圆猿源缘远苑愿怨院曰约越跃钥岳粤月悦阅耘云郧匀陨允运蕴酝晕韵孕匝砸杂栽哉灾宰载再在咱攒暂赞赃脏葬遭糟凿藻枣早澡蚤躁噪造皂灶燥责择则泽贼怎增憎曾赠扎喳渣札轧�".split(""); +for(j = 0; j != D[212].length; ++j) if(D[212][j].charCodeAt(0) !== 0xFFFD) { e[D[212][j]] = 54272 + j; d[54272 + j] = D[212][j];} +D[213] = "����������������������������������������������������������������誁誂誃誄誅誆誇誈誋誌認誎誏誐誑誒誔誕誖誗誘誙誚誛誜誝語誟誠誡誢誣誤誥誦誧誨誩說誫説読誮誯誰誱課誳誴誵誶誷誸誹誺誻誼誽誾調諀諁諂�諃諄諅諆談諈諉諊請諌諍諎諏諐諑諒諓諔諕論諗諘諙諚諛諜諝諞諟諠諡諢諣铡闸眨栅榨咋乍炸诈摘斋宅窄债寨瞻毡詹粘沾盏斩辗崭展蘸栈占战站湛绽樟章彰漳张掌涨杖丈帐账仗胀瘴障招昭找沼赵照罩兆肇召遮折哲蛰辙者锗蔗这浙珍斟真甄砧臻贞针侦枕疹诊震振镇阵蒸挣睁征狰争怔整拯正政�".split(""); +for(j = 0; j != D[213].length; ++j) if(D[213][j].charCodeAt(0) !== 0xFFFD) { e[D[213][j]] = 54528 + j; d[54528 + j] = D[213][j];} +D[214] = "����������������������������������������������������������������諤諥諦諧諨諩諪諫諬諭諮諯諰諱諲諳諴諵諶諷諸諹諺諻諼諽諾諿謀謁謂謃謄謅謆謈謉謊謋謌謍謎謏謐謑謒謓謔謕謖謗謘謙謚講謜謝謞謟謠謡謢謣�謤謥謧謨謩謪謫謬謭謮謯謰謱謲謳謴謵謶謷謸謹謺謻謼謽謾謿譀譁譂譃譄譅帧症郑证芝枝支吱蜘知肢脂汁之织职直植殖执值侄址指止趾只旨纸志挚掷至致置帜峙制智秩稚质炙痔滞治窒中盅忠钟衷终种肿重仲众舟周州洲诌粥轴肘帚咒皱宙昼骤珠株蛛朱猪诸诛逐竹烛煮拄瞩嘱主著柱助蛀贮铸筑�".split(""); +for(j = 0; j != D[214].length; ++j) if(D[214][j].charCodeAt(0) !== 0xFFFD) { e[D[214][j]] = 54784 + j; d[54784 + j] = D[214][j];} +D[215] = "����������������������������������������������������������������譆譇譈證譊譋譌譍譎譏譐譑譒譓譔譕譖譗識譙譚譛譜譝譞譟譠譡譢譣譤譥譧譨譩譪譫譭譮譯議譱譲譳譴譵譶護譸譹譺譻譼譽譾譿讀讁讂讃讄讅讆�讇讈讉變讋讌讍讎讏讐讑讒讓讔讕讖讗讘讙讚讛讜讝讞讟讬讱讻诇诐诪谉谞住注祝驻抓爪拽专砖转撰赚篆桩庄装妆撞壮状椎锥追赘坠缀谆准捉拙卓桌琢茁酌啄着灼浊兹咨资姿滋淄孜紫仔籽滓子自渍字鬃棕踪宗综总纵邹走奏揍租足卒族祖诅阻组钻纂嘴醉最罪尊遵昨左佐柞做作坐座������".split(""); +for(j = 0; j != D[215].length; ++j) if(D[215][j].charCodeAt(0) !== 0xFFFD) { e[D[215][j]] = 55040 + j; d[55040 + j] = D[215][j];} +D[216] = "����������������������������������������������������������������谸谹谺谻谼谽谾谿豀豂豃豄豅豈豊豋豍豎豏豐豑豒豓豔豖豗豘豙豛豜豝豞豟豠豣豤豥豦豧豨豩豬豭豮豯豰豱豲豴豵豶豷豻豼豽豾豿貀貁貃貄貆貇�貈貋貍貎貏貐貑貒貓貕貖貗貙貚貛貜貝貞貟負財貢貣貤貥貦貧貨販貪貫責貭亍丌兀丐廿卅丕亘丞鬲孬噩丨禺丿匕乇夭爻卮氐囟胤馗毓睾鼗丶亟鼐乜乩亓芈孛啬嘏仄厍厝厣厥厮靥赝匚叵匦匮匾赜卦卣刂刈刎刭刳刿剀剌剞剡剜蒯剽劂劁劐劓冂罔亻仃仉仂仨仡仫仞伛仳伢佤仵伥伧伉伫佞佧攸佚佝�".split(""); +for(j = 0; j != D[216].length; ++j) if(D[216][j].charCodeAt(0) !== 0xFFFD) { e[D[216][j]] = 55296 + j; d[55296 + j] = D[216][j];} +D[217] = "����������������������������������������������������������������貮貯貰貱貲貳貴貵貶買貸貹貺費貼貽貾貿賀賁賂賃賄賅賆資賈賉賊賋賌賍賎賏賐賑賒賓賔賕賖賗賘賙賚賛賜賝賞賟賠賡賢賣賤賥賦賧賨賩質賫賬�賭賮賯賰賱賲賳賴賵賶賷賸賹賺賻購賽賾賿贀贁贂贃贄贅贆贇贈贉贊贋贌贍佟佗伲伽佶佴侑侉侃侏佾佻侪佼侬侔俦俨俪俅俚俣俜俑俟俸倩偌俳倬倏倮倭俾倜倌倥倨偾偃偕偈偎偬偻傥傧傩傺僖儆僭僬僦僮儇儋仝氽佘佥俎龠汆籴兮巽黉馘冁夔勹匍訇匐凫夙兕亠兖亳衮袤亵脔裒禀嬴蠃羸冫冱冽冼�".split(""); +for(j = 0; j != D[217].length; ++j) if(D[217][j].charCodeAt(0) !== 0xFFFD) { e[D[217][j]] = 55552 + j; d[55552 + j] = D[217][j];} +D[218] = "����������������������������������������������������������������贎贏贐贑贒贓贔贕贖贗贘贙贚贛贜贠赑赒赗赟赥赨赩赪赬赮赯赱赲赸赹赺赻赼赽赾赿趀趂趃趆趇趈趉趌趍趎趏趐趒趓趕趖趗趘趙趚趛趜趝趞趠趡�趢趤趥趦趧趨趩趪趫趬趭趮趯趰趲趶趷趹趻趽跀跁跂跅跇跈跉跊跍跐跒跓跔凇冖冢冥讠讦讧讪讴讵讷诂诃诋诏诎诒诓诔诖诘诙诜诟诠诤诨诩诮诰诳诶诹诼诿谀谂谄谇谌谏谑谒谔谕谖谙谛谘谝谟谠谡谥谧谪谫谮谯谲谳谵谶卩卺阝阢阡阱阪阽阼陂陉陔陟陧陬陲陴隈隍隗隰邗邛邝邙邬邡邴邳邶邺�".split(""); +for(j = 0; j != D[218].length; ++j) if(D[218][j].charCodeAt(0) !== 0xFFFD) { e[D[218][j]] = 55808 + j; d[55808 + j] = D[218][j];} +D[219] = "����������������������������������������������������������������跕跘跙跜跠跡跢跥跦跧跩跭跮跰跱跲跴跶跼跾跿踀踁踂踃踄踆踇踈踋踍踎踐踑踒踓踕踖踗踘踙踚踛踜踠踡踤踥踦踧踨踫踭踰踲踳踴踶踷踸踻踼踾�踿蹃蹅蹆蹌蹍蹎蹏蹐蹓蹔蹕蹖蹗蹘蹚蹛蹜蹝蹞蹟蹠蹡蹢蹣蹤蹥蹧蹨蹪蹫蹮蹱邸邰郏郅邾郐郄郇郓郦郢郜郗郛郫郯郾鄄鄢鄞鄣鄱鄯鄹酃酆刍奂劢劬劭劾哿勐勖勰叟燮矍廴凵凼鬯厶弁畚巯坌垩垡塾墼壅壑圩圬圪圳圹圮圯坜圻坂坩垅坫垆坼坻坨坭坶坳垭垤垌垲埏垧垴垓垠埕埘埚埙埒垸埴埯埸埤埝�".split(""); +for(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];} +D[220] = "����������������������������������������������������������������蹳蹵蹷蹸蹹蹺蹻蹽蹾躀躂躃躄躆躈躉躊躋躌躍躎躑躒躓躕躖躗躘躙躚躛躝躟躠躡躢躣躤躥躦躧躨躩躪躭躮躰躱躳躴躵躶躷躸躹躻躼躽躾躿軀軁軂�軃軄軅軆軇軈軉車軋軌軍軏軐軑軒軓軔軕軖軗軘軙軚軛軜軝軞軟軠軡転軣軤堋堍埽埭堀堞堙塄堠塥塬墁墉墚墀馨鼙懿艹艽艿芏芊芨芄芎芑芗芙芫芸芾芰苈苊苣芘芷芮苋苌苁芩芴芡芪芟苄苎芤苡茉苷苤茏茇苜苴苒苘茌苻苓茑茚茆茔茕苠苕茜荑荛荜茈莒茼茴茱莛荞茯荏荇荃荟荀茗荠茭茺茳荦荥�".split(""); +for(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];} +D[221] = "����������������������������������������������������������������軥軦軧軨軩軪軫軬軭軮軯軰軱軲軳軴軵軶軷軸軹軺軻軼軽軾軿輀輁輂較輄輅輆輇輈載輊輋輌輍輎輏輐輑輒輓輔輕輖輗輘輙輚輛輜輝輞輟輠輡輢輣�輤輥輦輧輨輩輪輫輬輭輮輯輰輱輲輳輴輵輶輷輸輹輺輻輼輽輾輿轀轁轂轃轄荨茛荩荬荪荭荮莰荸莳莴莠莪莓莜莅荼莶莩荽莸荻莘莞莨莺莼菁萁菥菘堇萘萋菝菽菖萜萸萑萆菔菟萏萃菸菹菪菅菀萦菰菡葜葑葚葙葳蒇蒈葺蒉葸萼葆葩葶蒌蒎萱葭蓁蓍蓐蓦蒽蓓蓊蒿蒺蓠蒡蒹蒴蒗蓥蓣蔌甍蔸蓰蔹蔟蔺�".split(""); +for(j = 0; j != D[221].length; ++j) if(D[221][j].charCodeAt(0) !== 0xFFFD) { e[D[221][j]] = 56576 + j; d[56576 + j] = D[221][j];} +D[222] = "����������������������������������������������������������������轅轆轇轈轉轊轋轌轍轎轏轐轑轒轓轔轕轖轗轘轙轚轛轜轝轞轟轠轡轢轣轤轥轪辀辌辒辝辠辡辢辤辥辦辧辪辬辭辮辯農辳辴辵辷辸辺辻込辿迀迃迆�迉迊迋迌迍迏迒迖迗迚迠迡迣迧迬迯迱迲迴迵迶迺迻迼迾迿逇逈逌逎逓逕逘蕖蔻蓿蓼蕙蕈蕨蕤蕞蕺瞢蕃蕲蕻薤薨薇薏蕹薮薜薅薹薷薰藓藁藜藿蘧蘅蘩蘖蘼廾弈夼奁耷奕奚奘匏尢尥尬尴扌扪抟抻拊拚拗拮挢拶挹捋捃掭揶捱捺掎掴捭掬掊捩掮掼揲揸揠揿揄揞揎摒揆掾摅摁搋搛搠搌搦搡摞撄摭撖�".split(""); +for(j = 0; j != D[222].length; ++j) if(D[222][j].charCodeAt(0) !== 0xFFFD) { e[D[222][j]] = 56832 + j; d[56832 + j] = D[222][j];} +D[223] = "����������������������������������������������������������������這逜連逤逥逧逨逩逪逫逬逰週進逳逴逷逹逺逽逿遀遃遅遆遈遉遊運遌過達違遖遙遚遜遝遞遟遠遡遤遦遧適遪遫遬遯遰遱遲遳遶遷選遹遺遻遼遾邁�還邅邆邇邉邊邌邍邎邏邐邒邔邖邘邚邜邞邟邠邤邥邧邨邩邫邭邲邷邼邽邿郀摺撷撸撙撺擀擐擗擤擢攉攥攮弋忒甙弑卟叱叽叩叨叻吒吖吆呋呒呓呔呖呃吡呗呙吣吲咂咔呷呱呤咚咛咄呶呦咝哐咭哂咴哒咧咦哓哔呲咣哕咻咿哌哙哚哜咩咪咤哝哏哞唛哧唠哽唔哳唢唣唏唑唧唪啧喏喵啉啭啁啕唿啐唼�".split(""); +for(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];} +D[224] = "����������������������������������������������������������������郂郃郆郈郉郋郌郍郒郔郕郖郘郙郚郞郟郠郣郤郥郩郪郬郮郰郱郲郳郵郶郷郹郺郻郼郿鄀鄁鄃鄅鄆鄇鄈鄉鄊鄋鄌鄍鄎鄏鄐鄑鄒鄓鄔鄕鄖鄗鄘鄚鄛鄜�鄝鄟鄠鄡鄤鄥鄦鄧鄨鄩鄪鄫鄬鄭鄮鄰鄲鄳鄴鄵鄶鄷鄸鄺鄻鄼鄽鄾鄿酀酁酂酄唷啖啵啶啷唳唰啜喋嗒喃喱喹喈喁喟啾嗖喑啻嗟喽喾喔喙嗪嗷嗉嘟嗑嗫嗬嗔嗦嗝嗄嗯嗥嗲嗳嗌嗍嗨嗵嗤辔嘞嘈嘌嘁嘤嘣嗾嘀嘧嘭噘嘹噗嘬噍噢噙噜噌噔嚆噤噱噫噻噼嚅嚓嚯囔囗囝囡囵囫囹囿圄圊圉圜帏帙帔帑帱帻帼�".split(""); +for(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];} +D[225] = "����������������������������������������������������������������酅酇酈酑酓酔酕酖酘酙酛酜酟酠酦酧酨酫酭酳酺酻酼醀醁醂醃醄醆醈醊醎醏醓醔醕醖醗醘醙醜醝醞醟醠醡醤醥醦醧醨醩醫醬醰醱醲醳醶醷醸醹醻�醼醽醾醿釀釁釂釃釄釅釆釈釋釐釒釓釔釕釖釗釘釙釚釛針釞釟釠釡釢釣釤釥帷幄幔幛幞幡岌屺岍岐岖岈岘岙岑岚岜岵岢岽岬岫岱岣峁岷峄峒峤峋峥崂崃崧崦崮崤崞崆崛嵘崾崴崽嵬嵛嵯嵝嵫嵋嵊嵩嵴嶂嶙嶝豳嶷巅彳彷徂徇徉後徕徙徜徨徭徵徼衢彡犭犰犴犷犸狃狁狎狍狒狨狯狩狲狴狷猁狳猃狺�".split(""); +for(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];} +D[226] = "����������������������������������������������������������������釦釧釨釩釪釫釬釭釮釯釰釱釲釳釴釵釶釷釸釹釺釻釼釽釾釿鈀鈁鈂鈃鈄鈅鈆鈇鈈鈉鈊鈋鈌鈍鈎鈏鈐鈑鈒鈓鈔鈕鈖鈗鈘鈙鈚鈛鈜鈝鈞鈟鈠鈡鈢鈣鈤�鈥鈦鈧鈨鈩鈪鈫鈬鈭鈮鈯鈰鈱鈲鈳鈴鈵鈶鈷鈸鈹鈺鈻鈼鈽鈾鈿鉀鉁鉂鉃鉄鉅狻猗猓猡猊猞猝猕猢猹猥猬猸猱獐獍獗獠獬獯獾舛夥飧夤夂饣饧饨饩饪饫饬饴饷饽馀馄馇馊馍馐馑馓馔馕庀庑庋庖庥庠庹庵庾庳赓廒廑廛廨廪膺忄忉忖忏怃忮怄忡忤忾怅怆忪忭忸怙怵怦怛怏怍怩怫怊怿怡恸恹恻恺恂�".split(""); +for(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];} +D[227] = "����������������������������������������������������������������鉆鉇鉈鉉鉊鉋鉌鉍鉎鉏鉐鉑鉒鉓鉔鉕鉖鉗鉘鉙鉚鉛鉜鉝鉞鉟鉠鉡鉢鉣鉤鉥鉦鉧鉨鉩鉪鉫鉬鉭鉮鉯鉰鉱鉲鉳鉵鉶鉷鉸鉹鉺鉻鉼鉽鉾鉿銀銁銂銃銄銅�銆銇銈銉銊銋銌銍銏銐銑銒銓銔銕銖銗銘銙銚銛銜銝銞銟銠銡銢銣銤銥銦銧恪恽悖悚悭悝悃悒悌悛惬悻悱惝惘惆惚悴愠愦愕愣惴愀愎愫慊慵憬憔憧憷懔懵忝隳闩闫闱闳闵闶闼闾阃阄阆阈阊阋阌阍阏阒阕阖阗阙阚丬爿戕氵汔汜汊沣沅沐沔沌汨汩汴汶沆沩泐泔沭泷泸泱泗沲泠泖泺泫泮沱泓泯泾�".split(""); +for(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];} +D[228] = "����������������������������������������������������������������銨銩銪銫銬銭銯銰銱銲銳銴銵銶銷銸銹銺銻銼銽銾銿鋀鋁鋂鋃鋄鋅鋆鋇鋉鋊鋋鋌鋍鋎鋏鋐鋑鋒鋓鋔鋕鋖鋗鋘鋙鋚鋛鋜鋝鋞鋟鋠鋡鋢鋣鋤鋥鋦鋧鋨�鋩鋪鋫鋬鋭鋮鋯鋰鋱鋲鋳鋴鋵鋶鋷鋸鋹鋺鋻鋼鋽鋾鋿錀錁錂錃錄錅錆錇錈錉洹洧洌浃浈洇洄洙洎洫浍洮洵洚浏浒浔洳涑浯涞涠浞涓涔浜浠浼浣渚淇淅淞渎涿淠渑淦淝淙渖涫渌涮渫湮湎湫溲湟溆湓湔渲渥湄滟溱溘滠漭滢溥溧溽溻溷滗溴滏溏滂溟潢潆潇漤漕滹漯漶潋潴漪漉漩澉澍澌潸潲潼潺濑�".split(""); +for(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];} +D[229] = "����������������������������������������������������������������錊錋錌錍錎錏錐錑錒錓錔錕錖錗錘錙錚錛錜錝錞錟錠錡錢錣錤錥錦錧錨錩錪錫錬錭錮錯錰錱録錳錴錵錶錷錸錹錺錻錼錽錿鍀鍁鍂鍃鍄鍅鍆鍇鍈鍉�鍊鍋鍌鍍鍎鍏鍐鍑鍒鍓鍔鍕鍖鍗鍘鍙鍚鍛鍜鍝鍞鍟鍠鍡鍢鍣鍤鍥鍦鍧鍨鍩鍫濉澧澹澶濂濡濮濞濠濯瀚瀣瀛瀹瀵灏灞宀宄宕宓宥宸甯骞搴寤寮褰寰蹇謇辶迓迕迥迮迤迩迦迳迨逅逄逋逦逑逍逖逡逵逶逭逯遄遑遒遐遨遘遢遛暹遴遽邂邈邃邋彐彗彖彘尻咫屐屙孱屣屦羼弪弩弭艴弼鬻屮妁妃妍妩妪妣�".split(""); +for(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];} +D[230] = "����������������������������������������������������������������鍬鍭鍮鍯鍰鍱鍲鍳鍴鍵鍶鍷鍸鍹鍺鍻鍼鍽鍾鍿鎀鎁鎂鎃鎄鎅鎆鎇鎈鎉鎊鎋鎌鎍鎎鎐鎑鎒鎓鎔鎕鎖鎗鎘鎙鎚鎛鎜鎝鎞鎟鎠鎡鎢鎣鎤鎥鎦鎧鎨鎩鎪鎫�鎬鎭鎮鎯鎰鎱鎲鎳鎴鎵鎶鎷鎸鎹鎺鎻鎼鎽鎾鎿鏀鏁鏂鏃鏄鏅鏆鏇鏈鏉鏋鏌鏍妗姊妫妞妤姒妲妯姗妾娅娆姝娈姣姘姹娌娉娲娴娑娣娓婀婧婊婕娼婢婵胬媪媛婷婺媾嫫媲嫒嫔媸嫠嫣嫱嫖嫦嫘嫜嬉嬗嬖嬲嬷孀尕尜孚孥孳孑孓孢驵驷驸驺驿驽骀骁骅骈骊骐骒骓骖骘骛骜骝骟骠骢骣骥骧纟纡纣纥纨纩�".split(""); +for(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];} +D[231] = "����������������������������������������������������������������鏎鏏鏐鏑鏒鏓鏔鏕鏗鏘鏙鏚鏛鏜鏝鏞鏟鏠鏡鏢鏣鏤鏥鏦鏧鏨鏩鏪鏫鏬鏭鏮鏯鏰鏱鏲鏳鏴鏵鏶鏷鏸鏹鏺鏻鏼鏽鏾鏿鐀鐁鐂鐃鐄鐅鐆鐇鐈鐉鐊鐋鐌鐍�鐎鐏鐐鐑鐒鐓鐔鐕鐖鐗鐘鐙鐚鐛鐜鐝鐞鐟鐠鐡鐢鐣鐤鐥鐦鐧鐨鐩鐪鐫鐬鐭鐮纭纰纾绀绁绂绉绋绌绐绔绗绛绠绡绨绫绮绯绱绲缍绶绺绻绾缁缂缃缇缈缋缌缏缑缒缗缙缜缛缟缡缢缣缤缥缦缧缪缫缬缭缯缰缱缲缳缵幺畿巛甾邕玎玑玮玢玟珏珂珑玷玳珀珉珈珥珙顼琊珩珧珞玺珲琏琪瑛琦琥琨琰琮琬�".split(""); +for(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];} +D[232] = "����������������������������������������������������������������鐯鐰鐱鐲鐳鐴鐵鐶鐷鐸鐹鐺鐻鐼鐽鐿鑀鑁鑂鑃鑄鑅鑆鑇鑈鑉鑊鑋鑌鑍鑎鑏鑐鑑鑒鑓鑔鑕鑖鑗鑘鑙鑚鑛鑜鑝鑞鑟鑠鑡鑢鑣鑤鑥鑦鑧鑨鑩鑪鑬鑭鑮鑯�鑰鑱鑲鑳鑴鑵鑶鑷鑸鑹鑺鑻鑼鑽鑾鑿钀钁钂钃钄钑钖钘铇铏铓铔铚铦铻锜锠琛琚瑁瑜瑗瑕瑙瑷瑭瑾璜璎璀璁璇璋璞璨璩璐璧瓒璺韪韫韬杌杓杞杈杩枥枇杪杳枘枧杵枨枞枭枋杷杼柰栉柘栊柩枰栌柙枵柚枳柝栀柃枸柢栎柁柽栲栳桠桡桎桢桄桤梃栝桕桦桁桧桀栾桊桉栩梵梏桴桷梓桫棂楮棼椟椠棹�".split(""); +for(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];} +D[233] = "����������������������������������������������������������������锧锳锽镃镈镋镕镚镠镮镴镵長镸镹镺镻镼镽镾門閁閂閃閄閅閆閇閈閉閊開閌閍閎閏閐閑閒間閔閕閖閗閘閙閚閛閜閝閞閟閠閡関閣閤閥閦閧閨閩閪�閫閬閭閮閯閰閱閲閳閴閵閶閷閸閹閺閻閼閽閾閿闀闁闂闃闄闅闆闇闈闉闊闋椤棰椋椁楗棣椐楱椹楠楂楝榄楫榀榘楸椴槌榇榈槎榉楦楣楹榛榧榻榫榭槔榱槁槊槟榕槠榍槿樯槭樗樘橥槲橄樾檠橐橛樵檎橹樽樨橘橼檑檐檩檗檫猷獒殁殂殇殄殒殓殍殚殛殡殪轫轭轱轲轳轵轶轸轷轹轺轼轾辁辂辄辇辋�".split(""); +for(j = 0; j != D[233].length; ++j) if(D[233][j].charCodeAt(0) !== 0xFFFD) { e[D[233][j]] = 59648 + j; d[59648 + j] = D[233][j];} +D[234] = "����������������������������������������������������������������闌闍闎闏闐闑闒闓闔闕闖闗闘闙闚闛關闝闞闟闠闡闢闣闤闥闦闧闬闿阇阓阘阛阞阠阣阤阥阦阧阨阩阫阬阭阯阰阷阸阹阺阾陁陃陊陎陏陑陒陓陖陗�陘陙陚陜陝陞陠陣陥陦陫陭陮陯陰陱陳陸陹険陻陼陽陾陿隀隁隂隃隄隇隉隊辍辎辏辘辚軎戋戗戛戟戢戡戥戤戬臧瓯瓴瓿甏甑甓攴旮旯旰昊昙杲昃昕昀炅曷昝昴昱昶昵耆晟晔晁晏晖晡晗晷暄暌暧暝暾曛曜曦曩贲贳贶贻贽赀赅赆赈赉赇赍赕赙觇觊觋觌觎觏觐觑牮犟牝牦牯牾牿犄犋犍犏犒挈挲掰�".split(""); +for(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];} +D[235] = "����������������������������������������������������������������隌階隑隒隓隕隖隚際隝隞隟隠隡隢隣隤隥隦隨隩險隫隬隭隮隯隱隲隴隵隷隸隺隻隿雂雃雈雊雋雐雑雓雔雖雗雘雙雚雛雜雝雞雟雡離難雤雥雦雧雫�雬雭雮雰雱雲雴雵雸雺電雼雽雿霂霃霅霊霋霌霐霑霒霔霕霗霘霙霚霛霝霟霠搿擘耄毪毳毽毵毹氅氇氆氍氕氘氙氚氡氩氤氪氲攵敕敫牍牒牖爰虢刖肟肜肓肼朊肽肱肫肭肴肷胧胨胩胪胛胂胄胙胍胗朐胝胫胱胴胭脍脎胲胼朕脒豚脶脞脬脘脲腈腌腓腴腙腚腱腠腩腼腽腭腧塍媵膈膂膑滕膣膪臌朦臊膻�".split(""); +for(j = 0; j != D[235].length; ++j) if(D[235][j].charCodeAt(0) !== 0xFFFD) { e[D[235][j]] = 60160 + j; d[60160 + j] = D[235][j];} +D[236] = "����������������������������������������������������������������霡霢霣霤霥霦霧霨霩霫霬霮霯霱霳霴霵霶霷霺霻霼霽霿靀靁靂靃靄靅靆靇靈靉靊靋靌靍靎靏靐靑靔靕靗靘靚靜靝靟靣靤靦靧靨靪靫靬靭靮靯靰靱�靲靵靷靸靹靺靻靽靾靿鞀鞁鞂鞃鞄鞆鞇鞈鞉鞊鞌鞎鞏鞐鞓鞕鞖鞗鞙鞚鞛鞜鞝臁膦欤欷欹歃歆歙飑飒飓飕飙飚殳彀毂觳斐齑斓於旆旄旃旌旎旒旖炀炜炖炝炻烀炷炫炱烨烊焐焓焖焯焱煳煜煨煅煲煊煸煺熘熳熵熨熠燠燔燧燹爝爨灬焘煦熹戾戽扃扈扉礻祀祆祉祛祜祓祚祢祗祠祯祧祺禅禊禚禧禳忑忐�".split(""); +for(j = 0; j != D[236].length; ++j) if(D[236][j].charCodeAt(0) !== 0xFFFD) { e[D[236][j]] = 60416 + j; d[60416 + j] = D[236][j];} +D[237] = "����������������������������������������������������������������鞞鞟鞡鞢鞤鞥鞦鞧鞨鞩鞪鞬鞮鞰鞱鞳鞵鞶鞷鞸鞹鞺鞻鞼鞽鞾鞿韀韁韂韃韄韅韆韇韈韉韊韋韌韍韎韏韐韑韒韓韔韕韖韗韘韙韚韛韜韝韞韟韠韡韢韣�韤韥韨韮韯韰韱韲韴韷韸韹韺韻韼韽韾響頀頁頂頃頄項順頇須頉頊頋頌頍頎怼恝恚恧恁恙恣悫愆愍慝憩憝懋懑戆肀聿沓泶淼矶矸砀砉砗砘砑斫砭砜砝砹砺砻砟砼砥砬砣砩硎硭硖硗砦硐硇硌硪碛碓碚碇碜碡碣碲碹碥磔磙磉磬磲礅磴礓礤礞礴龛黹黻黼盱眄眍盹眇眈眚眢眙眭眦眵眸睐睑睇睃睚睨�".split(""); +for(j = 0; j != D[237].length; ++j) if(D[237][j].charCodeAt(0) !== 0xFFFD) { e[D[237][j]] = 60672 + j; d[60672 + j] = D[237][j];} +D[238] = "����������������������������������������������������������������頏預頑頒頓頔頕頖頗領頙頚頛頜頝頞頟頠頡頢頣頤頥頦頧頨頩頪頫頬頭頮頯頰頱頲頳頴頵頶頷頸頹頺頻頼頽頾頿顀顁顂顃顄顅顆顇顈顉顊顋題額�顎顏顐顑顒顓顔顕顖顗願顙顚顛顜顝類顟顠顡顢顣顤顥顦顧顨顩顪顫顬顭顮睢睥睿瞍睽瞀瞌瞑瞟瞠瞰瞵瞽町畀畎畋畈畛畲畹疃罘罡罟詈罨罴罱罹羁罾盍盥蠲钅钆钇钋钊钌钍钏钐钔钗钕钚钛钜钣钤钫钪钭钬钯钰钲钴钶钷钸钹钺钼钽钿铄铈铉铊铋铌铍铎铐铑铒铕铖铗铙铘铛铞铟铠铢铤铥铧铨铪�".split(""); +for(j = 0; j != D[238].length; ++j) if(D[238][j].charCodeAt(0) !== 0xFFFD) { e[D[238][j]] = 60928 + j; d[60928 + j] = D[238][j];} +D[239] = "����������������������������������������������������������������顯顰顱顲顳顴颋颎颒颕颙颣風颩颪颫颬颭颮颯颰颱颲颳颴颵颶颷颸颹颺颻颼颽颾颿飀飁飂飃飄飅飆飇飈飉飊飋飌飍飏飐飔飖飗飛飜飝飠飡飢飣飤�飥飦飩飪飫飬飭飮飯飰飱飲飳飴飵飶飷飸飹飺飻飼飽飾飿餀餁餂餃餄餅餆餇铩铫铮铯铳铴铵铷铹铼铽铿锃锂锆锇锉锊锍锎锏锒锓锔锕锖锘锛锝锞锟锢锪锫锩锬锱锲锴锶锷锸锼锾锿镂锵镄镅镆镉镌镎镏镒镓镔镖镗镘镙镛镞镟镝镡镢镤镥镦镧镨镩镪镫镬镯镱镲镳锺矧矬雉秕秭秣秫稆嵇稃稂稞稔�".split(""); +for(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];} +D[240] = "����������������������������������������������������������������餈餉養餋餌餎餏餑餒餓餔餕餖餗餘餙餚餛餜餝餞餟餠餡餢餣餤餥餦餧館餩餪餫餬餭餯餰餱餲餳餴餵餶餷餸餹餺餻餼餽餾餿饀饁饂饃饄饅饆饇饈饉�饊饋饌饍饎饏饐饑饒饓饖饗饘饙饚饛饜饝饞饟饠饡饢饤饦饳饸饹饻饾馂馃馉稹稷穑黏馥穰皈皎皓皙皤瓞瓠甬鸠鸢鸨鸩鸪鸫鸬鸲鸱鸶鸸鸷鸹鸺鸾鹁鹂鹄鹆鹇鹈鹉鹋鹌鹎鹑鹕鹗鹚鹛鹜鹞鹣鹦鹧鹨鹩鹪鹫鹬鹱鹭鹳疒疔疖疠疝疬疣疳疴疸痄疱疰痃痂痖痍痣痨痦痤痫痧瘃痱痼痿瘐瘀瘅瘌瘗瘊瘥瘘瘕瘙�".split(""); +for(j = 0; j != D[240].length; ++j) if(D[240][j].charCodeAt(0) !== 0xFFFD) { e[D[240][j]] = 61440 + j; d[61440 + j] = D[240][j];} +D[241] = "����������������������������������������������������������������馌馎馚馛馜馝馞馟馠馡馢馣馤馦馧馩馪馫馬馭馮馯馰馱馲馳馴馵馶馷馸馹馺馻馼馽馾馿駀駁駂駃駄駅駆駇駈駉駊駋駌駍駎駏駐駑駒駓駔駕駖駗駘�駙駚駛駜駝駞駟駠駡駢駣駤駥駦駧駨駩駪駫駬駭駮駯駰駱駲駳駴駵駶駷駸駹瘛瘼瘢瘠癀瘭瘰瘿瘵癃瘾瘳癍癞癔癜癖癫癯翊竦穸穹窀窆窈窕窦窠窬窨窭窳衤衩衲衽衿袂袢裆袷袼裉裢裎裣裥裱褚裼裨裾裰褡褙褓褛褊褴褫褶襁襦襻疋胥皲皴矜耒耔耖耜耠耢耥耦耧耩耨耱耋耵聃聆聍聒聩聱覃顸颀颃�".split(""); +for(j = 0; j != D[241].length; ++j) if(D[241][j].charCodeAt(0) !== 0xFFFD) { e[D[241][j]] = 61696 + j; d[61696 + j] = D[241][j];} +D[242] = "����������������������������������������������������������������駺駻駼駽駾駿騀騁騂騃騄騅騆騇騈騉騊騋騌騍騎騏騐騑騒験騔騕騖騗騘騙騚騛騜騝騞騟騠騡騢騣騤騥騦騧騨騩騪騫騬騭騮騯騰騱騲騳騴騵騶騷騸�騹騺騻騼騽騾騿驀驁驂驃驄驅驆驇驈驉驊驋驌驍驎驏驐驑驒驓驔驕驖驗驘驙颉颌颍颏颔颚颛颞颟颡颢颥颦虍虔虬虮虿虺虼虻蚨蚍蚋蚬蚝蚧蚣蚪蚓蚩蚶蛄蚵蛎蚰蚺蚱蚯蛉蛏蚴蛩蛱蛲蛭蛳蛐蜓蛞蛴蛟蛘蛑蜃蜇蛸蜈蜊蜍蜉蜣蜻蜞蜥蜮蜚蜾蝈蜴蜱蜩蜷蜿螂蜢蝽蝾蝻蝠蝰蝌蝮螋蝓蝣蝼蝤蝙蝥螓螯螨蟒�".split(""); +for(j = 0; j != D[242].length; ++j) if(D[242][j].charCodeAt(0) !== 0xFFFD) { e[D[242][j]] = 61952 + j; d[61952 + j] = D[242][j];} +D[243] = "����������������������������������������������������������������驚驛驜驝驞驟驠驡驢驣驤驥驦驧驨驩驪驫驲骃骉骍骎骔骕骙骦骩骪骫骬骭骮骯骲骳骴骵骹骻骽骾骿髃髄髆髇髈髉髊髍髎髏髐髒體髕髖髗髙髚髛髜�髝髞髠髢髣髤髥髧髨髩髪髬髮髰髱髲髳髴髵髶髷髸髺髼髽髾髿鬀鬁鬂鬄鬅鬆蟆螈螅螭螗螃螫蟥螬螵螳蟋蟓螽蟑蟀蟊蟛蟪蟠蟮蠖蠓蟾蠊蠛蠡蠹蠼缶罂罄罅舐竺竽笈笃笄笕笊笫笏筇笸笪笙笮笱笠笥笤笳笾笞筘筚筅筵筌筝筠筮筻筢筲筱箐箦箧箸箬箝箨箅箪箜箢箫箴篑篁篌篝篚篥篦篪簌篾篼簏簖簋�".split(""); +for(j = 0; j != D[243].length; ++j) if(D[243][j].charCodeAt(0) !== 0xFFFD) { e[D[243][j]] = 62208 + j; d[62208 + j] = D[243][j];} +D[244] = "����������������������������������������������������������������鬇鬉鬊鬋鬌鬍鬎鬐鬑鬒鬔鬕鬖鬗鬘鬙鬚鬛鬜鬝鬞鬠鬡鬢鬤鬥鬦鬧鬨鬩鬪鬫鬬鬭鬮鬰鬱鬳鬴鬵鬶鬷鬸鬹鬺鬽鬾鬿魀魆魊魋魌魎魐魒魓魕魖魗魘魙魚�魛魜魝魞魟魠魡魢魣魤魥魦魧魨魩魪魫魬魭魮魯魰魱魲魳魴魵魶魷魸魹魺魻簟簪簦簸籁籀臾舁舂舄臬衄舡舢舣舭舯舨舫舸舻舳舴舾艄艉艋艏艚艟艨衾袅袈裘裟襞羝羟羧羯羰羲籼敉粑粝粜粞粢粲粼粽糁糇糌糍糈糅糗糨艮暨羿翎翕翥翡翦翩翮翳糸絷綦綮繇纛麸麴赳趄趔趑趱赧赭豇豉酊酐酎酏酤�".split(""); +for(j = 0; j != D[244].length; ++j) if(D[244][j].charCodeAt(0) !== 0xFFFD) { e[D[244][j]] = 62464 + j; d[62464 + j] = D[244][j];} +D[245] = "����������������������������������������������������������������魼魽魾魿鮀鮁鮂鮃鮄鮅鮆鮇鮈鮉鮊鮋鮌鮍鮎鮏鮐鮑鮒鮓鮔鮕鮖鮗鮘鮙鮚鮛鮜鮝鮞鮟鮠鮡鮢鮣鮤鮥鮦鮧鮨鮩鮪鮫鮬鮭鮮鮯鮰鮱鮲鮳鮴鮵鮶鮷鮸鮹鮺�鮻鮼鮽鮾鮿鯀鯁鯂鯃鯄鯅鯆鯇鯈鯉鯊鯋鯌鯍鯎鯏鯐鯑鯒鯓鯔鯕鯖鯗鯘鯙鯚鯛酢酡酰酩酯酽酾酲酴酹醌醅醐醍醑醢醣醪醭醮醯醵醴醺豕鹾趸跫踅蹙蹩趵趿趼趺跄跖跗跚跞跎跏跛跆跬跷跸跣跹跻跤踉跽踔踝踟踬踮踣踯踺蹀踹踵踽踱蹉蹁蹂蹑蹒蹊蹰蹶蹼蹯蹴躅躏躔躐躜躞豸貂貊貅貘貔斛觖觞觚觜�".split(""); +for(j = 0; j != D[245].length; ++j) if(D[245][j].charCodeAt(0) !== 0xFFFD) { e[D[245][j]] = 62720 + j; d[62720 + j] = D[245][j];} +D[246] = "����������������������������������������������������������������鯜鯝鯞鯟鯠鯡鯢鯣鯤鯥鯦鯧鯨鯩鯪鯫鯬鯭鯮鯯鯰鯱鯲鯳鯴鯵鯶鯷鯸鯹鯺鯻鯼鯽鯾鯿鰀鰁鰂鰃鰄鰅鰆鰇鰈鰉鰊鰋鰌鰍鰎鰏鰐鰑鰒鰓鰔鰕鰖鰗鰘鰙鰚�鰛鰜鰝鰞鰟鰠鰡鰢鰣鰤鰥鰦鰧鰨鰩鰪鰫鰬鰭鰮鰯鰰鰱鰲鰳鰴鰵鰶鰷鰸鰹鰺鰻觥觫觯訾謦靓雩雳雯霆霁霈霏霎霪霭霰霾龀龃龅龆龇龈龉龊龌黾鼋鼍隹隼隽雎雒瞿雠銎銮鋈錾鍪鏊鎏鐾鑫鱿鲂鲅鲆鲇鲈稣鲋鲎鲐鲑鲒鲔鲕鲚鲛鲞鲟鲠鲡鲢鲣鲥鲦鲧鲨鲩鲫鲭鲮鲰鲱鲲鲳鲴鲵鲶鲷鲺鲻鲼鲽鳄鳅鳆鳇鳊鳋�".split(""); +for(j = 0; j != D[246].length; ++j) if(D[246][j].charCodeAt(0) !== 0xFFFD) { e[D[246][j]] = 62976 + j; d[62976 + j] = D[246][j];} +D[247] = "����������������������������������������������������������������鰼鰽鰾鰿鱀鱁鱂鱃鱄鱅鱆鱇鱈鱉鱊鱋鱌鱍鱎鱏鱐鱑鱒鱓鱔鱕鱖鱗鱘鱙鱚鱛鱜鱝鱞鱟鱠鱡鱢鱣鱤鱥鱦鱧鱨鱩鱪鱫鱬鱭鱮鱯鱰鱱鱲鱳鱴鱵鱶鱷鱸鱹鱺�鱻鱽鱾鲀鲃鲄鲉鲊鲌鲏鲓鲖鲗鲘鲙鲝鲪鲬鲯鲹鲾鲿鳀鳁鳂鳈鳉鳑鳒鳚鳛鳠鳡鳌鳍鳎鳏鳐鳓鳔鳕鳗鳘鳙鳜鳝鳟鳢靼鞅鞑鞒鞔鞯鞫鞣鞲鞴骱骰骷鹘骶骺骼髁髀髅髂髋髌髑魅魃魇魉魈魍魑飨餍餮饕饔髟髡髦髯髫髻髭髹鬈鬏鬓鬟鬣麽麾縻麂麇麈麋麒鏖麝麟黛黜黝黠黟黢黩黧黥黪黯鼢鼬鼯鼹鼷鼽鼾齄�".split(""); +for(j = 0; j != D[247].length; ++j) if(D[247][j].charCodeAt(0) !== 0xFFFD) { e[D[247][j]] = 63232 + j; d[63232 + j] = D[247][j];} +D[248] = "����������������������������������������������������������������鳣鳤鳥鳦鳧鳨鳩鳪鳫鳬鳭鳮鳯鳰鳱鳲鳳鳴鳵鳶鳷鳸鳹鳺鳻鳼鳽鳾鳿鴀鴁鴂鴃鴄鴅鴆鴇鴈鴉鴊鴋鴌鴍鴎鴏鴐鴑鴒鴓鴔鴕鴖鴗鴘鴙鴚鴛鴜鴝鴞鴟鴠鴡�鴢鴣鴤鴥鴦鴧鴨鴩鴪鴫鴬鴭鴮鴯鴰鴱鴲鴳鴴鴵鴶鴷鴸鴹鴺鴻鴼鴽鴾鴿鵀鵁鵂�����������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[248].length; ++j) if(D[248][j].charCodeAt(0) !== 0xFFFD) { e[D[248][j]] = 63488 + j; d[63488 + j] = D[248][j];} +D[249] = "����������������������������������������������������������������鵃鵄鵅鵆鵇鵈鵉鵊鵋鵌鵍鵎鵏鵐鵑鵒鵓鵔鵕鵖鵗鵘鵙鵚鵛鵜鵝鵞鵟鵠鵡鵢鵣鵤鵥鵦鵧鵨鵩鵪鵫鵬鵭鵮鵯鵰鵱鵲鵳鵴鵵鵶鵷鵸鵹鵺鵻鵼鵽鵾鵿鶀鶁�鶂鶃鶄鶅鶆鶇鶈鶉鶊鶋鶌鶍鶎鶏鶐鶑鶒鶓鶔鶕鶖鶗鶘鶙鶚鶛鶜鶝鶞鶟鶠鶡鶢�����������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[249].length; ++j) if(D[249][j].charCodeAt(0) !== 0xFFFD) { e[D[249][j]] = 63744 + j; d[63744 + j] = D[249][j];} +D[250] = "����������������������������������������������������������������鶣鶤鶥鶦鶧鶨鶩鶪鶫鶬鶭鶮鶯鶰鶱鶲鶳鶴鶵鶶鶷鶸鶹鶺鶻鶼鶽鶾鶿鷀鷁鷂鷃鷄鷅鷆鷇鷈鷉鷊鷋鷌鷍鷎鷏鷐鷑鷒鷓鷔鷕鷖鷗鷘鷙鷚鷛鷜鷝鷞鷟鷠鷡�鷢鷣鷤鷥鷦鷧鷨鷩鷪鷫鷬鷭鷮鷯鷰鷱鷲鷳鷴鷵鷶鷷鷸鷹鷺鷻鷼鷽鷾鷿鸀鸁鸂�����������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[250].length; ++j) if(D[250][j].charCodeAt(0) !== 0xFFFD) { e[D[250][j]] = 64000 + j; d[64000 + j] = D[250][j];} +D[251] = "����������������������������������������������������������������鸃鸄鸅鸆鸇鸈鸉鸊鸋鸌鸍鸎鸏鸐鸑鸒鸓鸔鸕鸖鸗鸘鸙鸚鸛鸜鸝鸞鸤鸧鸮鸰鸴鸻鸼鹀鹍鹐鹒鹓鹔鹖鹙鹝鹟鹠鹡鹢鹥鹮鹯鹲鹴鹵鹶鹷鹸鹹鹺鹻鹼鹽麀�麁麃麄麅麆麉麊麌麍麎麏麐麑麔麕麖麗麘麙麚麛麜麞麠麡麢麣麤麥麧麨麩麪�����������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[251].length; ++j) if(D[251][j].charCodeAt(0) !== 0xFFFD) { e[D[251][j]] = 64256 + j; d[64256 + j] = D[251][j];} +D[252] = "����������������������������������������������������������������麫麬麭麮麯麰麱麲麳麵麶麷麹麺麼麿黀黁黂黃黅黆黇黈黊黋黌黐黒黓黕黖黗黙黚點黡黣黤黦黨黫黬黭黮黰黱黲黳黴黵黶黷黸黺黽黿鼀鼁鼂鼃鼄鼅�鼆鼇鼈鼉鼊鼌鼏鼑鼒鼔鼕鼖鼘鼚鼛鼜鼝鼞鼟鼡鼣鼤鼥鼦鼧鼨鼩鼪鼫鼭鼮鼰鼱�����������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[252].length; ++j) if(D[252][j].charCodeAt(0) !== 0xFFFD) { e[D[252][j]] = 64512 + j; d[64512 + j] = D[252][j];} +D[253] = "����������������������������������������������������������������鼲鼳鼴鼵鼶鼸鼺鼼鼿齀齁齂齃齅齆齇齈齉齊齋齌齍齎齏齒齓齔齕齖齗齘齙齚齛齜齝齞齟齠齡齢齣齤齥齦齧齨齩齪齫齬齭齮齯齰齱齲齳齴齵齶齷齸�齹齺齻齼齽齾龁龂龍龎龏龐龑龒龓龔龕龖龗龘龜龝龞龡龢龣龤龥郎凉秊裏隣�����������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[253].length; ++j) if(D[253][j].charCodeAt(0) !== 0xFFFD) { e[D[253][j]] = 64768 + j; d[64768 + j] = D[253][j];} +D[254] = "����������������������������������������������������������������兀嗀﨎﨏﨑﨓﨔礼﨟蘒﨡﨣﨤﨧﨨﨩��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[254].length; ++j) if(D[254][j].charCodeAt(0) !== 0xFFFD) { e[D[254][j]] = 65024 + j; d[65024 + j] = D[254][j];} +return {"enc": e, "dec": d }; })(); diff --git a/node_modules/codepage/bits/949.js b/node_modules/codepage/bits/949.js new file mode 100644 index 000000000..f47fb3c25 --- /dev/null +++ b/node_modules/codepage/bits/949.js @@ -0,0 +1,253 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[949] = (function(){ var d = [], e = {}, D = [], j; +D[0] = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~��������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];} +D[129] = "�����������������������������������������������������������������갂갃갅갆갋갌갍갎갏갘갞갟갡갢갣갥갦갧갨갩갪갫갮갲갳갴������갵갶갷갺갻갽갾갿걁걂걃걄걅걆걇걈걉걊걌걎걏걐걑걒걓걕������걖걗걙걚걛걝걞걟걠걡걢걣걤걥걦걧걨걩걪걫걬걭걮걯걲걳걵걶걹걻걼걽걾걿겂겇겈겍겎겏겑겒겓겕겖겗겘겙겚겛겞겢겣겤겥겦겧겫겭겮겱겲겳겴겵겶겷겺겾겿곀곂곃곅곆곇곉곊곋곍곎곏곐곑곒곓곔곖곘곙곚곛곜곝곞곟곢곣곥곦곩곫곭곮곲곴곷곸곹곺곻곾곿괁괂괃괅괇괈괉괊괋괎괐괒괓�".split(""); +for(j = 0; j != D[129].length; ++j) if(D[129][j].charCodeAt(0) !== 0xFFFD) { e[D[129][j]] = 33024 + j; d[33024 + j] = D[129][j];} +D[130] = "�����������������������������������������������������������������괔괕괖괗괙괚괛괝괞괟괡괢괣괤괥괦괧괨괪괫괮괯괰괱괲괳������괶괷괹괺괻괽괾괿굀굁굂굃굆굈굊굋굌굍굎굏굑굒굓굕굖굗������굙굚굛굜굝굞굟굠굢굤굥굦굧굨굩굪굫굮굯굱굲굷굸굹굺굾궀궃궄궅궆궇궊궋궍궎궏궑궒궓궔궕궖궗궘궙궚궛궞궟궠궡궢궣궥궦궧궨궩궪궫궬궭궮궯궰궱궲궳궴궵궶궸궹궺궻궼궽궾궿귂귃귅귆귇귉귊귋귌귍귎귏귒귔귕귖귗귘귙귚귛귝귞귟귡귢귣귥귦귧귨귩귪귫귬귭귮귯귰귱귲귳귴귵귶귷�".split(""); +for(j = 0; j != D[130].length; ++j) if(D[130][j].charCodeAt(0) !== 0xFFFD) { e[D[130][j]] = 33280 + j; d[33280 + j] = D[130][j];} +D[131] = "�����������������������������������������������������������������귺귻귽귾긂긃긄긅긆긇긊긌긎긏긐긑긒긓긕긖긗긘긙긚긛긜������긝긞긟긠긡긢긣긤긥긦긧긨긩긪긫긬긭긮긯긲긳긵긶긹긻긼������긽긾긿깂깄깇깈깉깋깏깑깒깓깕깗깘깙깚깛깞깢깣깤깦깧깪깫깭깮깯깱깲깳깴깵깶깷깺깾깿꺀꺁꺂꺃꺆꺇꺈꺉꺊꺋꺍꺎꺏꺐꺑꺒꺓꺔꺕꺖꺗꺘꺙꺚꺛꺜꺝꺞꺟꺠꺡꺢꺣꺤꺥꺦꺧꺨꺩꺪꺫꺬꺭꺮꺯꺰꺱꺲꺳꺴꺵꺶꺷꺸꺹꺺꺻꺿껁껂껃껅껆껇껈껉껊껋껎껒껓껔껕껖껗껚껛껝껞껟껠껡껢껣껤껥�".split(""); +for(j = 0; j != D[131].length; ++j) if(D[131][j].charCodeAt(0) !== 0xFFFD) { e[D[131][j]] = 33536 + j; d[33536 + j] = D[131][j];} +D[132] = "�����������������������������������������������������������������껦껧껩껪껬껮껯껰껱껲껳껵껶껷껹껺껻껽껾껿꼀꼁꼂꼃꼄꼅������꼆꼉꼊꼋꼌꼎꼏꼑꼒꼓꼔꼕꼖꼗꼘꼙꼚꼛꼜꼝꼞꼟꼠꼡꼢꼣������꼤꼥꼦꼧꼨꼩꼪꼫꼮꼯꼱꼳꼵꼶꼷꼸꼹꼺꼻꼾꽀꽄꽅꽆꽇꽊꽋꽌꽍꽎꽏꽑꽒꽓꽔꽕꽖꽗꽘꽙꽚꽛꽞꽟꽠꽡꽢꽣꽦꽧꽨꽩꽪꽫꽬꽭꽮꽯꽰꽱꽲꽳꽴꽵꽶꽷꽸꽺꽻꽼꽽꽾꽿꾁꾂꾃꾅꾆꾇꾉꾊꾋꾌꾍꾎꾏꾒꾓꾔꾖꾗꾘꾙꾚꾛꾝꾞꾟꾠꾡꾢꾣꾤꾥꾦꾧꾨꾩꾪꾫꾬꾭꾮꾯꾰꾱꾲꾳꾴꾵꾶꾷꾺꾻꾽꾾�".split(""); +for(j = 0; j != D[132].length; ++j) if(D[132][j].charCodeAt(0) !== 0xFFFD) { e[D[132][j]] = 33792 + j; d[33792 + j] = D[132][j];} +D[133] = "�����������������������������������������������������������������꾿꿁꿂꿃꿄꿅꿆꿊꿌꿏꿐꿑꿒꿓꿕꿖꿗꿘꿙꿚꿛꿝꿞꿟꿠꿡������꿢꿣꿤꿥꿦꿧꿪꿫꿬꿭꿮꿯꿲꿳꿵꿶꿷꿹꿺꿻꿼꿽꿾꿿뀂뀃������뀅뀆뀇뀈뀉뀊뀋뀍뀎뀏뀑뀒뀓뀕뀖뀗뀘뀙뀚뀛뀞뀟뀠뀡뀢뀣뀤뀥뀦뀧뀩뀪뀫뀬뀭뀮뀯뀰뀱뀲뀳뀴뀵뀶뀷뀸뀹뀺뀻뀼뀽뀾뀿끀끁끂끃끆끇끉끋끍끏끐끑끒끖끘끚끛끜끞끟끠끡끢끣끤끥끦끧끨끩끪끫끬끭끮끯끰끱끲끳끴끵끶끷끸끹끺끻끾끿낁낂낃낅낆낇낈낉낊낋낎낐낒낓낔낕낖낗낛낝낞낣낤�".split(""); +for(j = 0; j != D[133].length; ++j) if(D[133][j].charCodeAt(0) !== 0xFFFD) { e[D[133][j]] = 34048 + j; d[34048 + j] = D[133][j];} +D[134] = "�����������������������������������������������������������������낥낦낧낪낰낲낶낷낹낺낻낽낾낿냀냁냂냃냆냊냋냌냍냎냏냒������냓냕냖냗냙냚냛냜냝냞냟냡냢냣냤냦냧냨냩냪냫냬냭냮냯냰������냱냲냳냴냵냶냷냸냹냺냻냼냽냾냿넀넁넂넃넄넅넆넇넊넍넎넏넑넔넕넖넗넚넞넟넠넡넢넦넧넩넪넫넭넮넯넰넱넲넳넶넺넻넼넽넾넿녂녃녅녆녇녉녊녋녌녍녎녏녒녓녖녗녙녚녛녝녞녟녡녢녣녤녥녦녧녨녩녪녫녬녭녮녯녰녱녲녳녴녵녶녷녺녻녽녾녿놁놃놄놅놆놇놊놌놎놏놐놑놕놖놗놙놚놛놝�".split(""); +for(j = 0; j != D[134].length; ++j) if(D[134][j].charCodeAt(0) !== 0xFFFD) { e[D[134][j]] = 34304 + j; d[34304 + j] = D[134][j];} +D[135] = "�����������������������������������������������������������������놞놟놠놡놢놣놤놥놦놧놩놪놫놬놭놮놯놰놱놲놳놴놵놶놷놸������놹놺놻놼놽놾놿뇀뇁뇂뇃뇄뇅뇆뇇뇈뇉뇊뇋뇍뇎뇏뇑뇒뇓뇕������뇖뇗뇘뇙뇚뇛뇞뇠뇡뇢뇣뇤뇥뇦뇧뇪뇫뇭뇮뇯뇱뇲뇳뇴뇵뇶뇷뇸뇺뇼뇾뇿눀눁눂눃눆눇눉눊눍눎눏눐눑눒눓눖눘눚눛눜눝눞눟눡눢눣눤눥눦눧눨눩눪눫눬눭눮눯눰눱눲눳눵눶눷눸눹눺눻눽눾눿뉀뉁뉂뉃뉄뉅뉆뉇뉈뉉뉊뉋뉌뉍뉎뉏뉐뉑뉒뉓뉔뉕뉖뉗뉙뉚뉛뉝뉞뉟뉡뉢뉣뉤뉥뉦뉧뉪뉫뉬뉭뉮�".split(""); +for(j = 0; j != D[135].length; ++j) if(D[135][j].charCodeAt(0) !== 0xFFFD) { e[D[135][j]] = 34560 + j; d[34560 + j] = D[135][j];} +D[136] = "�����������������������������������������������������������������뉯뉰뉱뉲뉳뉶뉷뉸뉹뉺뉻뉽뉾뉿늀늁늂늃늆늇늈늊늋늌늍늎������늏늒늓늕늖늗늛늜늝늞늟늢늤늧늨늩늫늭늮늯늱늲늳늵늶늷������늸늹늺늻늼늽늾늿닀닁닂닃닄닅닆닇닊닋닍닎닏닑닓닔닕닖닗닚닜닞닟닠닡닣닧닩닪닰닱닲닶닼닽닾댂댃댅댆댇댉댊댋댌댍댎댏댒댖댗댘댙댚댛댝댞댟댠댡댢댣댤댥댦댧댨댩댪댫댬댭댮댯댰댱댲댳댴댵댶댷댸댹댺댻댼댽댾댿덀덁덂덃덄덅덆덇덈덉덊덋덌덍덎덏덐덑덒덓덗덙덚덝덠덡덢덣�".split(""); +for(j = 0; j != D[136].length; ++j) if(D[136][j].charCodeAt(0) !== 0xFFFD) { e[D[136][j]] = 34816 + j; d[34816 + j] = D[136][j];} +D[137] = "�����������������������������������������������������������������덦덨덪덬덭덯덲덳덵덶덷덹덺덻덼덽덾덿뎂뎆뎇뎈뎉뎊뎋뎍������뎎뎏뎑뎒뎓뎕뎖뎗뎘뎙뎚뎛뎜뎝뎞뎟뎢뎣뎤뎥뎦뎧뎩뎪뎫뎭������뎮뎯뎰뎱뎲뎳뎴뎵뎶뎷뎸뎹뎺뎻뎼뎽뎾뎿돀돁돂돃돆돇돉돊돍돏돑돒돓돖돘돚돜돞돟돡돢돣돥돦돧돩돪돫돬돭돮돯돰돱돲돳돴돵돶돷돸돹돺돻돽돾돿됀됁됂됃됄됅됆됇됈됉됊됋됌됍됎됏됑됒됓됔됕됖됗됙됚됛됝됞됟됡됢됣됤됥됦됧됪됬됭됮됯됰됱됲됳됵됶됷됸됹됺됻됼됽됾됿둀둁둂둃둄�".split(""); +for(j = 0; j != D[137].length; ++j) if(D[137][j].charCodeAt(0) !== 0xFFFD) { e[D[137][j]] = 35072 + j; d[35072 + j] = D[137][j];} +D[138] = "�����������������������������������������������������������������둅둆둇둈둉둊둋둌둍둎둏둒둓둕둖둗둙둚둛둜둝둞둟둢둤둦������둧둨둩둪둫둭둮둯둰둱둲둳둴둵둶둷둸둹둺둻둼둽둾둿뒁뒂������뒃뒄뒅뒆뒇뒉뒊뒋뒌뒍뒎뒏뒐뒑뒒뒓뒔뒕뒖뒗뒘뒙뒚뒛뒜뒞뒟뒠뒡뒢뒣뒥뒦뒧뒩뒪뒫뒭뒮뒯뒰뒱뒲뒳뒴뒶뒸뒺뒻뒼뒽뒾뒿듁듂듃듅듆듇듉듊듋듌듍듎듏듑듒듓듔듖듗듘듙듚듛듞듟듡듢듥듧듨듩듪듫듮듰듲듳듴듵듶듷듹듺듻듼듽듾듿딀딁딂딃딄딅딆딇딈딉딊딋딌딍딎딏딐딑딒딓딖딗딙딚딝�".split(""); +for(j = 0; j != D[138].length; ++j) if(D[138][j].charCodeAt(0) !== 0xFFFD) { e[D[138][j]] = 35328 + j; d[35328 + j] = D[138][j];} +D[139] = "�����������������������������������������������������������������딞딟딠딡딢딣딦딫딬딭딮딯딲딳딵딶딷딹딺딻딼딽딾딿땂땆������땇땈땉땊땎땏땑땒땓땕땖땗땘땙땚땛땞땢땣땤땥땦땧땨땩땪������땫땬땭땮땯땰땱땲땳땴땵땶땷땸땹땺땻땼땽땾땿떀떁떂떃떄떅떆떇떈떉떊떋떌떍떎떏떐떑떒떓떔떕떖떗떘떙떚떛떜떝떞떟떢떣떥떦떧떩떬떭떮떯떲떶떷떸떹떺떾떿뗁뗂뗃뗅뗆뗇뗈뗉뗊뗋뗎뗒뗓뗔뗕뗖뗗뗙뗚뗛뗜뗝뗞뗟뗠뗡뗢뗣뗤뗥뗦뗧뗨뗩뗪뗫뗭뗮뗯뗰뗱뗲뗳뗴뗵뗶뗷뗸뗹뗺뗻뗼뗽뗾뗿�".split(""); +for(j = 0; j != D[139].length; ++j) if(D[139][j].charCodeAt(0) !== 0xFFFD) { e[D[139][j]] = 35584 + j; d[35584 + j] = D[139][j];} +D[140] = "�����������������������������������������������������������������똀똁똂똃똄똅똆똇똈똉똊똋똌똍똎똏똒똓똕똖똗똙똚똛똜똝������똞똟똠똡똢똣똤똦똧똨똩똪똫똭똮똯똰똱똲똳똵똶똷똸똹똺������똻똼똽똾똿뙀뙁뙂뙃뙄뙅뙆뙇뙉뙊뙋뙌뙍뙎뙏뙐뙑뙒뙓뙔뙕뙖뙗뙘뙙뙚뙛뙜뙝뙞뙟뙠뙡뙢뙣뙥뙦뙧뙩뙪뙫뙬뙭뙮뙯뙰뙱뙲뙳뙴뙵뙶뙷뙸뙹뙺뙻뙼뙽뙾뙿뚀뚁뚂뚃뚄뚅뚆뚇뚈뚉뚊뚋뚌뚍뚎뚏뚐뚑뚒뚓뚔뚕뚖뚗뚘뚙뚚뚛뚞뚟뚡뚢뚣뚥뚦뚧뚨뚩뚪뚭뚮뚯뚰뚲뚳뚴뚵뚶뚷뚸뚹뚺뚻뚼뚽뚾뚿뛀뛁뛂�".split(""); +for(j = 0; j != D[140].length; ++j) if(D[140][j].charCodeAt(0) !== 0xFFFD) { e[D[140][j]] = 35840 + j; d[35840 + j] = D[140][j];} +D[141] = "�����������������������������������������������������������������뛃뛄뛅뛆뛇뛈뛉뛊뛋뛌뛍뛎뛏뛐뛑뛒뛓뛕뛖뛗뛘뛙뛚뛛뛜뛝������뛞뛟뛠뛡뛢뛣뛤뛥뛦뛧뛨뛩뛪뛫뛬뛭뛮뛯뛱뛲뛳뛵뛶뛷뛹뛺������뛻뛼뛽뛾뛿뜂뜃뜄뜆뜇뜈뜉뜊뜋뜌뜍뜎뜏뜐뜑뜒뜓뜔뜕뜖뜗뜘뜙뜚뜛뜜뜝뜞뜟뜠뜡뜢뜣뜤뜥뜦뜧뜪뜫뜭뜮뜱뜲뜳뜴뜵뜶뜷뜺뜼뜽뜾뜿띀띁띂띃띅띆띇띉띊띋띍띎띏띐띑띒띓띖띗띘띙띚띛띜띝띞띟띡띢띣띥띦띧띩띪띫띬띭띮띯띲띴띶띷띸띹띺띻띾띿랁랂랃랅랆랇랈랉랊랋랎랓랔랕랚랛랝랞�".split(""); +for(j = 0; j != D[141].length; ++j) if(D[141][j].charCodeAt(0) !== 0xFFFD) { e[D[141][j]] = 36096 + j; d[36096 + j] = D[141][j];} +D[142] = "�����������������������������������������������������������������랟랡랢랣랤랥랦랧랪랮랯랰랱랲랳랶랷랹랺랻랼랽랾랿럀럁������럂럃럄럅럆럈럊럋럌럍럎럏럐럑럒럓럔럕럖럗럘럙럚럛럜럝������럞럟럠럡럢럣럤럥럦럧럨럩럪럫럮럯럱럲럳럵럶럷럸럹럺럻럾렂렃렄렅렆렊렋렍렎렏렑렒렓렔렕렖렗렚렜렞렟렠렡렢렣렦렧렩렪렫렭렮렯렰렱렲렳렶렺렻렼렽렾렿롁롂롃롅롆롇롈롉롊롋롌롍롎롏롐롒롔롕롖롗롘롙롚롛롞롟롡롢롣롥롦롧롨롩롪롫롮롰롲롳롴롵롶롷롹롺롻롽롾롿뢀뢁뢂뢃뢄�".split(""); +for(j = 0; j != D[142].length; ++j) if(D[142][j].charCodeAt(0) !== 0xFFFD) { e[D[142][j]] = 36352 + j; d[36352 + j] = D[142][j];} +D[143] = "�����������������������������������������������������������������뢅뢆뢇뢈뢉뢊뢋뢌뢎뢏뢐뢑뢒뢓뢔뢕뢖뢗뢘뢙뢚뢛뢜뢝뢞뢟������뢠뢡뢢뢣뢤뢥뢦뢧뢩뢪뢫뢬뢭뢮뢯뢱뢲뢳뢵뢶뢷뢹뢺뢻뢼뢽������뢾뢿룂룄룆룇룈룉룊룋룍룎룏룑룒룓룕룖룗룘룙룚룛룜룞룠룢룣룤룥룦룧룪룫룭룮룯룱룲룳룴룵룶룷룺룼룾룿뤀뤁뤂뤃뤅뤆뤇뤈뤉뤊뤋뤌뤍뤎뤏뤐뤑뤒뤓뤔뤕뤖뤗뤙뤚뤛뤜뤝뤞뤟뤡뤢뤣뤤뤥뤦뤧뤨뤩뤪뤫뤬뤭뤮뤯뤰뤱뤲뤳뤴뤵뤶뤷뤸뤹뤺뤻뤾뤿륁륂륃륅륆륇륈륉륊륋륍륎륐륒륓륔륕륖륗�".split(""); +for(j = 0; j != D[143].length; ++j) if(D[143][j].charCodeAt(0) !== 0xFFFD) { e[D[143][j]] = 36608 + j; d[36608 + j] = D[143][j];} +D[144] = "�����������������������������������������������������������������륚륛륝륞륟륡륢륣륤륥륦륧륪륬륮륯륰륱륲륳륶륷륹륺륻륽������륾륿릀릁릂릃릆릈릋릌릏릐릑릒릓릔릕릖릗릘릙릚릛릜릝릞������릟릠릡릢릣릤릥릦릧릨릩릪릫릮릯릱릲릳릵릶릷릸릹릺릻릾맀맂맃맄맅맆맇맊맋맍맓맔맕맖맗맚맜맟맠맢맦맧맩맪맫맭맮맯맰맱맲맳맶맻맼맽맾맿먂먃먄먅먆먇먉먊먋먌먍먎먏먐먑먒먓먔먖먗먘먙먚먛먜먝먞먟먠먡먢먣먤먥먦먧먨먩먪먫먬먭먮먯먰먱먲먳먴먵먶먷먺먻먽먾먿멁멃멄멅멆�".split(""); +for(j = 0; j != D[144].length; ++j) if(D[144][j].charCodeAt(0) !== 0xFFFD) { e[D[144][j]] = 36864 + j; d[36864 + j] = D[144][j];} +D[145] = "�����������������������������������������������������������������멇멊멌멏멐멑멒멖멗멙멚멛멝멞멟멠멡멢멣멦멪멫멬멭멮멯������멲멳멵멶멷멹멺멻멼멽멾멿몀몁몂몆몈몉몊몋몍몎몏몐몑몒������몓몔몕몖몗몘몙몚몛몜몝몞몟몠몡몢몣몤몥몦몧몪몭몮몯몱몳몴몵몶몷몺몼몾몿뫀뫁뫂뫃뫅뫆뫇뫉뫊뫋뫌뫍뫎뫏뫐뫑뫒뫓뫔뫕뫖뫗뫚뫛뫜뫝뫞뫟뫠뫡뫢뫣뫤뫥뫦뫧뫨뫩뫪뫫뫬뫭뫮뫯뫰뫱뫲뫳뫴뫵뫶뫷뫸뫹뫺뫻뫽뫾뫿묁묂묃묅묆묇묈묉묊묋묌묎묐묒묓묔묕묖묗묙묚묛묝묞묟묡묢묣묤묥묦묧�".split(""); +for(j = 0; j != D[145].length; ++j) if(D[145][j].charCodeAt(0) !== 0xFFFD) { e[D[145][j]] = 37120 + j; d[37120 + j] = D[145][j];} +D[146] = "�����������������������������������������������������������������묨묪묬묭묮묯묰묱묲묳묷묹묺묿뭀뭁뭂뭃뭆뭈뭊뭋뭌뭎뭑뭒������뭓뭕뭖뭗뭙뭚뭛뭜뭝뭞뭟뭠뭢뭤뭥뭦뭧뭨뭩뭪뭫뭭뭮뭯뭰뭱������뭲뭳뭴뭵뭶뭷뭸뭹뭺뭻뭼뭽뭾뭿뮀뮁뮂뮃뮄뮅뮆뮇뮉뮊뮋뮍뮎뮏뮑뮒뮓뮔뮕뮖뮗뮘뮙뮚뮛뮜뮝뮞뮟뮠뮡뮢뮣뮥뮦뮧뮩뮪뮫뮭뮮뮯뮰뮱뮲뮳뮵뮶뮸뮹뮺뮻뮼뮽뮾뮿믁믂믃믅믆믇믉믊믋믌믍믎믏믑믒믔믕믖믗믘믙믚믛믜믝믞믟믠믡믢믣믤믥믦믧믨믩믪믫믬믭믮믯믰믱믲믳믴믵믶믷믺믻믽믾밁�".split(""); +for(j = 0; j != D[146].length; ++j) if(D[146][j].charCodeAt(0) !== 0xFFFD) { e[D[146][j]] = 37376 + j; d[37376 + j] = D[146][j];} +D[147] = "�����������������������������������������������������������������밃밄밅밆밇밊밎밐밒밓밙밚밠밡밢밣밦밨밪밫밬밮밯밲밳밵������밶밷밹밺밻밼밽밾밿뱂뱆뱇뱈뱊뱋뱎뱏뱑뱒뱓뱔뱕뱖뱗뱘뱙������뱚뱛뱜뱞뱟뱠뱡뱢뱣뱤뱥뱦뱧뱨뱩뱪뱫뱬뱭뱮뱯뱰뱱뱲뱳뱴뱵뱶뱷뱸뱹뱺뱻뱼뱽뱾뱿벀벁벂벃벆벇벉벊벍벏벐벑벒벓벖벘벛벜벝벞벟벢벣벥벦벩벪벫벬벭벮벯벲벶벷벸벹벺벻벾벿볁볂볃볅볆볇볈볉볊볋볌볎볒볓볔볖볗볙볚볛볝볞볟볠볡볢볣볤볥볦볧볨볩볪볫볬볭볮볯볰볱볲볳볷볹볺볻볽�".split(""); +for(j = 0; j != D[147].length; ++j) if(D[147][j].charCodeAt(0) !== 0xFFFD) { e[D[147][j]] = 37632 + j; d[37632 + j] = D[147][j];} +D[148] = "�����������������������������������������������������������������볾볿봀봁봂봃봆봈봊봋봌봍봎봏봑봒봓봕봖봗봘봙봚봛봜봝������봞봟봠봡봢봣봥봦봧봨봩봪봫봭봮봯봰봱봲봳봴봵봶봷봸봹������봺봻봼봽봾봿뵁뵂뵃뵄뵅뵆뵇뵊뵋뵍뵎뵏뵑뵒뵓뵔뵕뵖뵗뵚뵛뵜뵝뵞뵟뵠뵡뵢뵣뵥뵦뵧뵩뵪뵫뵬뵭뵮뵯뵰뵱뵲뵳뵴뵵뵶뵷뵸뵹뵺뵻뵼뵽뵾뵿붂붃붅붆붋붌붍붎붏붒붔붖붗붘붛붝붞붟붠붡붢붣붥붦붧붨붩붪붫붬붭붮붯붱붲붳붴붵붶붷붹붺붻붼붽붾붿뷀뷁뷂뷃뷄뷅뷆뷇뷈뷉뷊뷋뷌뷍뷎뷏뷐뷑�".split(""); +for(j = 0; j != D[148].length; ++j) if(D[148][j].charCodeAt(0) !== 0xFFFD) { e[D[148][j]] = 37888 + j; d[37888 + j] = D[148][j];} +D[149] = "�����������������������������������������������������������������뷒뷓뷖뷗뷙뷚뷛뷝뷞뷟뷠뷡뷢뷣뷤뷥뷦뷧뷨뷪뷫뷬뷭뷮뷯뷱������뷲뷳뷵뷶뷷뷹뷺뷻뷼뷽뷾뷿븁븂븄븆븇븈븉븊븋븎븏븑븒븓������븕븖븗븘븙븚븛븞븠븡븢븣븤븥븦븧븨븩븪븫븬븭븮븯븰븱븲븳븴븵븶븷븸븹븺븻븼븽븾븿빀빁빂빃빆빇빉빊빋빍빏빐빑빒빓빖빘빜빝빞빟빢빣빥빦빧빩빫빬빭빮빯빲빶빷빸빹빺빾빿뺁뺂뺃뺅뺆뺇뺈뺉뺊뺋뺎뺒뺓뺔뺕뺖뺗뺚뺛뺜뺝뺞뺟뺠뺡뺢뺣뺤뺥뺦뺧뺩뺪뺫뺬뺭뺮뺯뺰뺱뺲뺳뺴뺵뺶뺷�".split(""); +for(j = 0; j != D[149].length; ++j) if(D[149][j].charCodeAt(0) !== 0xFFFD) { e[D[149][j]] = 38144 + j; d[38144 + j] = D[149][j];} +D[150] = "�����������������������������������������������������������������뺸뺹뺺뺻뺼뺽뺾뺿뻀뻁뻂뻃뻄뻅뻆뻇뻈뻉뻊뻋뻌뻍뻎뻏뻒뻓������뻕뻖뻙뻚뻛뻜뻝뻞뻟뻡뻢뻦뻧뻨뻩뻪뻫뻭뻮뻯뻰뻱뻲뻳뻴뻵������뻶뻷뻸뻹뻺뻻뻼뻽뻾뻿뼀뼂뼃뼄뼅뼆뼇뼊뼋뼌뼍뼎뼏뼐뼑뼒뼓뼔뼕뼖뼗뼚뼞뼟뼠뼡뼢뼣뼤뼥뼦뼧뼨뼩뼪뼫뼬뼭뼮뼯뼰뼱뼲뼳뼴뼵뼶뼷뼸뼹뼺뼻뼼뼽뼾뼿뽂뽃뽅뽆뽇뽉뽊뽋뽌뽍뽎뽏뽒뽓뽔뽖뽗뽘뽙뽚뽛뽜뽝뽞뽟뽠뽡뽢뽣뽤뽥뽦뽧뽨뽩뽪뽫뽬뽭뽮뽯뽰뽱뽲뽳뽴뽵뽶뽷뽸뽹뽺뽻뽼뽽뽾뽿뾀뾁뾂�".split(""); +for(j = 0; j != D[150].length; ++j) if(D[150][j].charCodeAt(0) !== 0xFFFD) { e[D[150][j]] = 38400 + j; d[38400 + j] = D[150][j];} +D[151] = "�����������������������������������������������������������������뾃뾄뾅뾆뾇뾈뾉뾊뾋뾌뾍뾎뾏뾐뾑뾒뾓뾕뾖뾗뾘뾙뾚뾛뾜뾝������뾞뾟뾠뾡뾢뾣뾤뾥뾦뾧뾨뾩뾪뾫뾬뾭뾮뾯뾱뾲뾳뾴뾵뾶뾷뾸������뾹뾺뾻뾼뾽뾾뾿뿀뿁뿂뿃뿄뿆뿇뿈뿉뿊뿋뿎뿏뿑뿒뿓뿕뿖뿗뿘뿙뿚뿛뿝뿞뿠뿢뿣뿤뿥뿦뿧뿨뿩뿪뿫뿬뿭뿮뿯뿰뿱뿲뿳뿴뿵뿶뿷뿸뿹뿺뿻뿼뿽뿾뿿쀀쀁쀂쀃쀄쀅쀆쀇쀈쀉쀊쀋쀌쀍쀎쀏쀐쀑쀒쀓쀔쀕쀖쀗쀘쀙쀚쀛쀜쀝쀞쀟쀠쀡쀢쀣쀤쀥쀦쀧쀨쀩쀪쀫쀬쀭쀮쀯쀰쀱쀲쀳쀴쀵쀶쀷쀸쀹쀺쀻쀽쀾쀿�".split(""); +for(j = 0; j != D[151].length; ++j) if(D[151][j].charCodeAt(0) !== 0xFFFD) { e[D[151][j]] = 38656 + j; d[38656 + j] = D[151][j];} +D[152] = "�����������������������������������������������������������������쁀쁁쁂쁃쁄쁅쁆쁇쁈쁉쁊쁋쁌쁍쁎쁏쁐쁒쁓쁔쁕쁖쁗쁙쁚쁛������쁝쁞쁟쁡쁢쁣쁤쁥쁦쁧쁪쁫쁬쁭쁮쁯쁰쁱쁲쁳쁴쁵쁶쁷쁸쁹������쁺쁻쁼쁽쁾쁿삀삁삂삃삄삅삆삇삈삉삊삋삌삍삎삏삒삓삕삖삗삙삚삛삜삝삞삟삢삤삦삧삨삩삪삫삮삱삲삷삸삹삺삻삾샂샃샄샆샇샊샋샍샎샏샑샒샓샔샕샖샗샚샞샟샠샡샢샣샦샧샩샪샫샭샮샯샰샱샲샳샶샸샺샻샼샽샾샿섁섂섃섅섆섇섉섊섋섌섍섎섏섑섒섓섔섖섗섘섙섚섛섡섢섥섨섩섪섫섮�".split(""); +for(j = 0; j != D[152].length; ++j) if(D[152][j].charCodeAt(0) !== 0xFFFD) { e[D[152][j]] = 38912 + j; d[38912 + j] = D[152][j];} +D[153] = "�����������������������������������������������������������������섲섳섴섵섷섺섻섽섾섿셁셂셃셄셅셆셇셊셎셏셐셑셒셓셖셗������셙셚셛셝셞셟셠셡셢셣셦셪셫셬셭셮셯셱셲셳셵셶셷셹셺셻������셼셽셾셿솀솁솂솃솄솆솇솈솉솊솋솏솑솒솓솕솗솘솙솚솛솞솠솢솣솤솦솧솪솫솭솮솯솱솲솳솴솵솶솷솸솹솺솻솼솾솿쇀쇁쇂쇃쇅쇆쇇쇉쇊쇋쇍쇎쇏쇐쇑쇒쇓쇕쇖쇙쇚쇛쇜쇝쇞쇟쇡쇢쇣쇥쇦쇧쇩쇪쇫쇬쇭쇮쇯쇲쇴쇵쇶쇷쇸쇹쇺쇻쇾쇿숁숂숃숅숆숇숈숉숊숋숎숐숒숓숔숕숖숗숚숛숝숞숡숢숣�".split(""); +for(j = 0; j != D[153].length; ++j) if(D[153][j].charCodeAt(0) !== 0xFFFD) { e[D[153][j]] = 39168 + j; d[39168 + j] = D[153][j];} +D[154] = "�����������������������������������������������������������������숤숥숦숧숪숬숮숰숳숵숶숷숸숹숺숻숼숽숾숿쉀쉁쉂쉃쉄쉅������쉆쉇쉉쉊쉋쉌쉍쉎쉏쉒쉓쉕쉖쉗쉙쉚쉛쉜쉝쉞쉟쉡쉢쉣쉤쉦������쉧쉨쉩쉪쉫쉮쉯쉱쉲쉳쉵쉶쉷쉸쉹쉺쉻쉾슀슂슃슄슅슆슇슊슋슌슍슎슏슑슒슓슔슕슖슗슙슚슜슞슟슠슡슢슣슦슧슩슪슫슮슯슰슱슲슳슶슸슺슻슼슽슾슿싀싁싂싃싄싅싆싇싈싉싊싋싌싍싎싏싐싑싒싓싔싕싖싗싘싙싚싛싞싟싡싢싥싦싧싨싩싪싮싰싲싳싴싵싷싺싽싾싿쌁쌂쌃쌄쌅쌆쌇쌊쌋쌎쌏�".split(""); +for(j = 0; j != D[154].length; ++j) if(D[154][j].charCodeAt(0) !== 0xFFFD) { e[D[154][j]] = 39424 + j; d[39424 + j] = D[154][j];} +D[155] = "�����������������������������������������������������������������쌐쌑쌒쌖쌗쌙쌚쌛쌝쌞쌟쌠쌡쌢쌣쌦쌧쌪쌫쌬쌭쌮쌯쌰쌱쌲������쌳쌴쌵쌶쌷쌸쌹쌺쌻쌼쌽쌾쌿썀썁썂썃썄썆썇썈썉썊썋썌썍������썎썏썐썑썒썓썔썕썖썗썘썙썚썛썜썝썞썟썠썡썢썣썤썥썦썧썪썫썭썮썯썱썳썴썵썶썷썺썻썾썿쎀쎁쎂쎃쎅쎆쎇쎉쎊쎋쎍쎎쎏쎐쎑쎒쎓쎔쎕쎖쎗쎘쎙쎚쎛쎜쎝쎞쎟쎠쎡쎢쎣쎤쎥쎦쎧쎨쎩쎪쎫쎬쎭쎮쎯쎰쎱쎲쎳쎴쎵쎶쎷쎸쎹쎺쎻쎼쎽쎾쎿쏁쏂쏃쏄쏅쏆쏇쏈쏉쏊쏋쏌쏍쏎쏏쏐쏑쏒쏓쏔쏕쏖쏗쏚�".split(""); +for(j = 0; j != D[155].length; ++j) if(D[155][j].charCodeAt(0) !== 0xFFFD) { e[D[155][j]] = 39680 + j; d[39680 + j] = D[155][j];} +D[156] = "�����������������������������������������������������������������쏛쏝쏞쏡쏣쏤쏥쏦쏧쏪쏫쏬쏮쏯쏰쏱쏲쏳쏶쏷쏹쏺쏻쏼쏽쏾������쏿쐀쐁쐂쐃쐄쐅쐆쐇쐉쐊쐋쐌쐍쐎쐏쐑쐒쐓쐔쐕쐖쐗쐘쐙쐚������쐛쐜쐝쐞쐟쐠쐡쐢쐣쐥쐦쐧쐨쐩쐪쐫쐭쐮쐯쐱쐲쐳쐵쐶쐷쐸쐹쐺쐻쐾쐿쑀쑁쑂쑃쑄쑅쑆쑇쑉쑊쑋쑌쑍쑎쑏쑐쑑쑒쑓쑔쑕쑖쑗쑘쑙쑚쑛쑜쑝쑞쑟쑠쑡쑢쑣쑦쑧쑩쑪쑫쑭쑮쑯쑰쑱쑲쑳쑶쑷쑸쑺쑻쑼쑽쑾쑿쒁쒂쒃쒄쒅쒆쒇쒈쒉쒊쒋쒌쒍쒎쒏쒐쒑쒒쒓쒕쒖쒗쒘쒙쒚쒛쒝쒞쒟쒠쒡쒢쒣쒤쒥쒦쒧쒨쒩�".split(""); +for(j = 0; j != D[156].length; ++j) if(D[156][j].charCodeAt(0) !== 0xFFFD) { e[D[156][j]] = 39936 + j; d[39936 + j] = D[156][j];} +D[157] = "�����������������������������������������������������������������쒪쒫쒬쒭쒮쒯쒰쒱쒲쒳쒴쒵쒶쒷쒹쒺쒻쒽쒾쒿쓀쓁쓂쓃쓄쓅������쓆쓇쓈쓉쓊쓋쓌쓍쓎쓏쓐쓑쓒쓓쓔쓕쓖쓗쓘쓙쓚쓛쓜쓝쓞쓟������쓠쓡쓢쓣쓤쓥쓦쓧쓨쓪쓫쓬쓭쓮쓯쓲쓳쓵쓶쓷쓹쓻쓼쓽쓾씂씃씄씅씆씇씈씉씊씋씍씎씏씑씒씓씕씖씗씘씙씚씛씝씞씟씠씡씢씣씤씥씦씧씪씫씭씮씯씱씲씳씴씵씶씷씺씼씾씿앀앁앂앃앆앇앋앏앐앑앒앖앚앛앜앟앢앣앥앦앧앩앪앫앬앭앮앯앲앶앷앸앹앺앻앾앿얁얂얃얅얆얈얉얊얋얎얐얒얓얔�".split(""); +for(j = 0; j != D[157].length; ++j) if(D[157][j].charCodeAt(0) !== 0xFFFD) { e[D[157][j]] = 40192 + j; d[40192 + j] = D[157][j];} +D[158] = "�����������������������������������������������������������������얖얙얚얛얝얞얟얡얢얣얤얥얦얧얨얪얫얬얭얮얯얰얱얲얳얶������얷얺얿엀엁엂엃엋엍엏엒엓엕엖엗엙엚엛엜엝엞엟엢엤엦엧������엨엩엪엫엯엱엲엳엵엸엹엺엻옂옃옄옉옊옋옍옎옏옑옒옓옔옕옖옗옚옝옞옟옠옡옢옣옦옧옩옪옫옯옱옲옶옸옺옼옽옾옿왂왃왅왆왇왉왊왋왌왍왎왏왒왖왗왘왙왚왛왞왟왡왢왣왤왥왦왧왨왩왪왫왭왮왰왲왳왴왵왶왷왺왻왽왾왿욁욂욃욄욅욆욇욊욌욎욏욐욑욒욓욖욗욙욚욛욝욞욟욠욡욢욣욦�".split(""); +for(j = 0; j != D[158].length; ++j) if(D[158][j].charCodeAt(0) !== 0xFFFD) { e[D[158][j]] = 40448 + j; d[40448 + j] = D[158][j];} +D[159] = "�����������������������������������������������������������������욨욪욫욬욭욮욯욲욳욵욶욷욻욼욽욾욿웂웄웆웇웈웉웊웋웎������웏웑웒웓웕웖웗웘웙웚웛웞웟웢웣웤웥웦웧웪웫웭웮웯웱웲������웳웴웵웶웷웺웻웼웾웿윀윁윂윃윆윇윉윊윋윍윎윏윐윑윒윓윖윘윚윛윜윝윞윟윢윣윥윦윧윩윪윫윬윭윮윯윲윴윶윸윹윺윻윾윿읁읂읃읅읆읇읈읉읋읎읐읙읚읛읝읞읟읡읢읣읤읥읦읧읩읪읬읭읮읯읰읱읲읳읶읷읹읺읻읿잀잁잂잆잋잌잍잏잒잓잕잙잛잜잝잞잟잢잧잨잩잪잫잮잯잱잲잳잵잶잷�".split(""); +for(j = 0; j != D[159].length; ++j) if(D[159][j].charCodeAt(0) !== 0xFFFD) { e[D[159][j]] = 40704 + j; d[40704 + j] = D[159][j];} +D[160] = "�����������������������������������������������������������������잸잹잺잻잾쟂쟃쟄쟅쟆쟇쟊쟋쟍쟏쟑쟒쟓쟔쟕쟖쟗쟙쟚쟛쟜������쟞쟟쟠쟡쟢쟣쟥쟦쟧쟩쟪쟫쟭쟮쟯쟰쟱쟲쟳쟴쟵쟶쟷쟸쟹쟺������쟻쟼쟽쟾쟿젂젃젅젆젇젉젋젌젍젎젏젒젔젗젘젙젚젛젞젟젡젢젣젥젦젧젨젩젪젫젮젰젲젳젴젵젶젷젹젺젻젽젾젿졁졂졃졄졅졆졇졊졋졎졏졐졑졒졓졕졖졗졘졙졚졛졜졝졞졟졠졡졢졣졤졥졦졧졨졩졪졫졬졭졮졯졲졳졵졶졷졹졻졼졽졾졿좂좄좈좉좊좎좏좐좑좒좓좕좖좗좘좙좚좛좜좞좠좢좣좤�".split(""); +for(j = 0; j != D[160].length; ++j) if(D[160][j].charCodeAt(0) !== 0xFFFD) { e[D[160][j]] = 40960 + j; d[40960 + j] = D[160][j];} +D[161] = "�����������������������������������������������������������������좥좦좧좩좪좫좬좭좮좯좰좱좲좳좴좵좶좷좸좹좺좻좾좿죀죁������죂죃죅죆죇죉죊죋죍죎죏죐죑죒죓죖죘죚죛죜죝죞죟죢죣죥������죦죧죨죩죪죫죬죭죮죯죰죱죲죳죴죶죷죸죹죺죻죾죿줁줂줃줇줈줉줊줋줎 、。·‥…¨〃­―∥\∼‘’“”〔〕〈〉《》「」『』【】±×÷≠≤≥∞∴°′″℃Å¢£¥♂♀∠⊥⌒∂∇≡≒§※☆★○●◎◇◆□■△▲▽▼→←↑↓↔〓≪≫√∽∝∵∫∬∈∋⊆⊇⊂⊃∪∩∧∨¬�".split(""); +for(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];} +D[162] = "�����������������������������������������������������������������줐줒줓줔줕줖줗줙줚줛줜줝줞줟줠줡줢줣줤줥줦줧줨줩줪줫������줭줮줯줰줱줲줳줵줶줷줸줹줺줻줼줽줾줿쥀쥁쥂쥃쥄쥅쥆쥇������쥈쥉쥊쥋쥌쥍쥎쥏쥒쥓쥕쥖쥗쥙쥚쥛쥜쥝쥞쥟쥢쥤쥥쥦쥧쥨쥩쥪쥫쥭쥮쥯⇒⇔∀∃´~ˇ˘˝˚˙¸˛¡¿ː∮∑∏¤℉‰◁◀▷▶♤♠♡♥♧♣⊙◈▣◐◑▒▤▥▨▧▦▩♨☏☎☜☞¶†‡↕↗↙↖↘♭♩♪♬㉿㈜№㏇™㏂㏘℡€®������������������������".split(""); +for(j = 0; j != D[162].length; ++j) if(D[162][j].charCodeAt(0) !== 0xFFFD) { e[D[162][j]] = 41472 + j; d[41472 + j] = D[162][j];} +D[163] = "�����������������������������������������������������������������쥱쥲쥳쥵쥶쥷쥸쥹쥺쥻쥽쥾쥿즀즁즂즃즄즅즆즇즊즋즍즎즏������즑즒즓즔즕즖즗즚즜즞즟즠즡즢즣즤즥즦즧즨즩즪즫즬즭즮������즯즰즱즲즳즴즵즶즷즸즹즺즻즼즽즾즿짂짃짅짆짉짋짌짍짎짏짒짔짗짘짛!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[₩]^_`abcdefghijklmnopqrstuvwxyz{|} ̄�".split(""); +for(j = 0; j != D[163].length; ++j) if(D[163][j].charCodeAt(0) !== 0xFFFD) { e[D[163][j]] = 41728 + j; d[41728 + j] = D[163][j];} +D[164] = "�����������������������������������������������������������������짞짟짡짣짥짦짨짩짪짫짮짲짳짴짵짶짷짺짻짽짾짿쨁쨂쨃쨄������쨅쨆쨇쨊쨎쨏쨐쨑쨒쨓쨕쨖쨗쨙쨚쨛쨜쨝쨞쨟쨠쨡쨢쨣쨤쨥������쨦쨧쨨쨪쨫쨬쨭쨮쨯쨰쨱쨲쨳쨴쨵쨶쨷쨸쨹쨺쨻쨼쨽쨾쨿쩀쩁쩂쩃쩄쩅쩆ㄱㄲㄳㄴㄵㄶㄷㄸㄹㄺㄻㄼㄽㄾㄿㅀㅁㅂㅃㅄㅅㅆㅇㅈㅉㅊㅋㅌㅍㅎㅏㅐㅑㅒㅓㅔㅕㅖㅗㅘㅙㅚㅛㅜㅝㅞㅟㅠㅡㅢㅣㅤㅥㅦㅧㅨㅩㅪㅫㅬㅭㅮㅯㅰㅱㅲㅳㅴㅵㅶㅷㅸㅹㅺㅻㅼㅽㅾㅿㆀㆁㆂㆃㆄㆅㆆㆇㆈㆉㆊㆋㆌㆍㆎ�".split(""); +for(j = 0; j != D[164].length; ++j) if(D[164][j].charCodeAt(0) !== 0xFFFD) { e[D[164][j]] = 41984 + j; d[41984 + j] = D[164][j];} +D[165] = "�����������������������������������������������������������������쩇쩈쩉쩊쩋쩎쩏쩑쩒쩓쩕쩖쩗쩘쩙쩚쩛쩞쩢쩣쩤쩥쩦쩧쩩쩪������쩫쩬쩭쩮쩯쩰쩱쩲쩳쩴쩵쩶쩷쩸쩹쩺쩻쩼쩾쩿쪀쪁쪂쪃쪅쪆������쪇쪈쪉쪊쪋쪌쪍쪎쪏쪐쪑쪒쪓쪔쪕쪖쪗쪙쪚쪛쪜쪝쪞쪟쪠쪡쪢쪣쪤쪥쪦쪧ⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹ�����ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩ�������ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ��������αβγδεζηθικλμνξοπρστυφχψω�������".split(""); +for(j = 0; j != D[165].length; ++j) if(D[165][j].charCodeAt(0) !== 0xFFFD) { e[D[165][j]] = 42240 + j; d[42240 + j] = D[165][j];} +D[166] = "�����������������������������������������������������������������쪨쪩쪪쪫쪬쪭쪮쪯쪰쪱쪲쪳쪴쪵쪶쪷쪸쪹쪺쪻쪾쪿쫁쫂쫃쫅������쫆쫇쫈쫉쫊쫋쫎쫐쫒쫔쫕쫖쫗쫚쫛쫜쫝쫞쫟쫡쫢쫣쫤쫥쫦쫧������쫨쫩쫪쫫쫭쫮쫯쫰쫱쫲쫳쫵쫶쫷쫸쫹쫺쫻쫼쫽쫾쫿쬀쬁쬂쬃쬄쬅쬆쬇쬉쬊─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂┒┑┚┙┖┕┎┍┞┟┡┢┦┧┩┪┭┮┱┲┵┶┹┺┽┾╀╁╃╄╅╆╇╈╉╊���������������������������".split(""); +for(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];} +D[167] = "�����������������������������������������������������������������쬋쬌쬍쬎쬏쬑쬒쬓쬕쬖쬗쬙쬚쬛쬜쬝쬞쬟쬢쬣쬤쬥쬦쬧쬨쬩������쬪쬫쬬쬭쬮쬯쬰쬱쬲쬳쬴쬵쬶쬷쬸쬹쬺쬻쬼쬽쬾쬿쭀쭂쭃쭄������쭅쭆쭇쭊쭋쭍쭎쭏쭑쭒쭓쭔쭕쭖쭗쭚쭛쭜쭞쭟쭠쭡쭢쭣쭥쭦쭧쭨쭩쭪쭫쭬㎕㎖㎗ℓ㎘㏄㎣㎤㎥㎦㎙㎚㎛㎜㎝㎞㎟㎠㎡㎢㏊㎍㎎㎏㏏㎈㎉㏈㎧㎨㎰㎱㎲㎳㎴㎵㎶㎷㎸㎹㎀㎁㎂㎃㎄㎺㎻㎼㎽㎾㎿㎐㎑㎒㎓㎔Ω㏀㏁㎊㎋㎌㏖㏅㎭㎮㎯㏛㎩㎪㎫㎬㏝㏐㏓㏃㏉㏜㏆����������������".split(""); +for(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];} +D[168] = "�����������������������������������������������������������������쭭쭮쭯쭰쭱쭲쭳쭴쭵쭶쭷쭺쭻쭼쭽쭾쭿쮀쮁쮂쮃쮄쮅쮆쮇쮈������쮉쮊쮋쮌쮍쮎쮏쮐쮑쮒쮓쮔쮕쮖쮗쮘쮙쮚쮛쮝쮞쮟쮠쮡쮢쮣������쮤쮥쮦쮧쮨쮩쮪쮫쮬쮭쮮쮯쮰쮱쮲쮳쮴쮵쮶쮷쮹쮺쮻쮼쮽쮾쮿쯀쯁쯂쯃쯄ÆЪĦ�IJ�ĿŁØŒºÞŦŊ�㉠㉡㉢㉣㉤㉥㉦㉧㉨㉩㉪㉫㉬㉭㉮㉯㉰㉱㉲㉳㉴㉵㉶㉷㉸㉹㉺㉻ⓐⓑⓒⓓⓔⓕⓖⓗⓘⓙⓚⓛⓜⓝⓞⓟⓠⓡⓢⓣⓤⓥⓦⓧⓨⓩ①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮½⅓⅔¼¾⅛⅜⅝⅞�".split(""); +for(j = 0; j != D[168].length; ++j) if(D[168][j].charCodeAt(0) !== 0xFFFD) { e[D[168][j]] = 43008 + j; d[43008 + j] = D[168][j];} +D[169] = "�����������������������������������������������������������������쯅쯆쯇쯈쯉쯊쯋쯌쯍쯎쯏쯐쯑쯒쯓쯕쯖쯗쯘쯙쯚쯛쯜쯝쯞쯟������쯠쯡쯢쯣쯥쯦쯨쯪쯫쯬쯭쯮쯯쯰쯱쯲쯳쯴쯵쯶쯷쯸쯹쯺쯻쯼������쯽쯾쯿찀찁찂찃찄찅찆찇찈찉찊찋찎찏찑찒찓찕찖찗찘찙찚찛찞찟찠찣찤æđðħıijĸŀłøœßþŧŋʼn㈀㈁㈂㈃㈄㈅㈆㈇㈈㈉㈊㈋㈌㈍㈎㈏㈐㈑㈒㈓㈔㈕㈖㈗㈘㈙㈚㈛⒜⒝⒞⒟⒠⒡⒢⒣⒤⒥⒦⒧⒨⒩⒪⒫⒬⒭⒮⒯⒰⒱⒲⒳⒴⒵⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽⑾⑿⒀⒁⒂¹²³⁴ⁿ₁₂₃₄�".split(""); +for(j = 0; j != D[169].length; ++j) if(D[169][j].charCodeAt(0) !== 0xFFFD) { e[D[169][j]] = 43264 + j; d[43264 + j] = D[169][j];} +D[170] = "�����������������������������������������������������������������찥찦찪찫찭찯찱찲찳찴찵찶찷찺찿챀챁챂챃챆챇챉챊챋챍챎������챏챐챑챒챓챖챚챛챜챝챞챟챡챢챣챥챧챩챪챫챬챭챮챯챱챲������챳챴챶챷챸챹챺챻챼챽챾챿첀첁첂첃첄첅첆첇첈첉첊첋첌첍첎첏첐첑첒첓ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをん������������".split(""); +for(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];} +D[171] = "�����������������������������������������������������������������첔첕첖첗첚첛첝첞첟첡첢첣첤첥첦첧첪첮첯첰첱첲첳첶첷첹������첺첻첽첾첿쳀쳁쳂쳃쳆쳈쳊쳋쳌쳍쳎쳏쳑쳒쳓쳕쳖쳗쳘쳙쳚������쳛쳜쳝쳞쳟쳠쳡쳢쳣쳥쳦쳧쳨쳩쳪쳫쳭쳮쳯쳱쳲쳳쳴쳵쳶쳷쳸쳹쳺쳻쳼쳽ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶ���������".split(""); +for(j = 0; j != D[171].length; ++j) if(D[171][j].charCodeAt(0) !== 0xFFFD) { e[D[171][j]] = 43776 + j; d[43776 + j] = D[171][j];} +D[172] = "�����������������������������������������������������������������쳾쳿촀촂촃촄촅촆촇촊촋촍촎촏촑촒촓촔촕촖촗촚촜촞촟촠������촡촢촣촥촦촧촩촪촫촭촮촯촰촱촲촳촴촵촶촷촸촺촻촼촽촾������촿쵀쵁쵂쵃쵄쵅쵆쵇쵈쵉쵊쵋쵌쵍쵎쵏쵐쵑쵒쵓쵔쵕쵖쵗쵘쵙쵚쵛쵝쵞쵟АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ���������������абвгдеёжзийклмнопрстуфхцчшщъыьэюя��������������".split(""); +for(j = 0; j != D[172].length; ++j) if(D[172][j].charCodeAt(0) !== 0xFFFD) { e[D[172][j]] = 44032 + j; d[44032 + j] = D[172][j];} +D[173] = "�����������������������������������������������������������������쵡쵢쵣쵥쵦쵧쵨쵩쵪쵫쵮쵰쵲쵳쵴쵵쵶쵷쵹쵺쵻쵼쵽쵾쵿춀������춁춂춃춄춅춆춇춉춊춋춌춍춎춏춐춑춒춓춖춗춙춚춛춝춞춟������춠춡춢춣춦춨춪춫춬춭춮춯춱춲춳춴춵춶춷춸춹춺춻춼춽춾춿췀췁췂췃췅�����������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[173].length; ++j) if(D[173][j].charCodeAt(0) !== 0xFFFD) { e[D[173][j]] = 44288 + j; d[44288 + j] = D[173][j];} +D[174] = "�����������������������������������������������������������������췆췇췈췉췊췋췍췎췏췑췒췓췔췕췖췗췘췙췚췛췜췝췞췟췠췡������췢췣췤췥췦췧췩췪췫췭췮췯췱췲췳췴췵췶췷췺췼췾췿츀츁츂������츃츅츆츇츉츊츋츍츎츏츐츑츒츓츕츖츗츘츚츛츜츝츞츟츢츣츥츦츧츩츪츫�����������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[174].length; ++j) if(D[174][j].charCodeAt(0) !== 0xFFFD) { e[D[174][j]] = 44544 + j; d[44544 + j] = D[174][j];} +D[175] = "�����������������������������������������������������������������츬츭츮츯츲츴츶츷츸츹츺츻츼츽츾츿칀칁칂칃칄칅칆칇칈칉������칊칋칌칍칎칏칐칑칒칓칔칕칖칗칚칛칝칞칢칣칤칥칦칧칪칬������칮칯칰칱칲칳칶칷칹칺칻칽칾칿캀캁캂캃캆캈캊캋캌캍캎캏캒캓캕캖캗캙�����������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[175].length; ++j) if(D[175][j].charCodeAt(0) !== 0xFFFD) { e[D[175][j]] = 44800 + j; d[44800 + j] = D[175][j];} +D[176] = "�����������������������������������������������������������������캚캛캜캝캞캟캢캦캧캨캩캪캫캮캯캰캱캲캳캴캵캶캷캸캹캺������캻캼캽캾캿컀컂컃컄컅컆컇컈컉컊컋컌컍컎컏컐컑컒컓컔컕������컖컗컘컙컚컛컜컝컞컟컠컡컢컣컦컧컩컪컭컮컯컰컱컲컳컶컺컻컼컽컾컿가각간갇갈갉갊감갑값갓갔강갖갗같갚갛개객갠갤갬갭갯갰갱갸갹갼걀걋걍걔걘걜거걱건걷걸걺검겁것겄겅겆겉겊겋게겐겔겜겝겟겠겡겨격겪견겯결겸겹겻겼경곁계곈곌곕곗고곡곤곧골곪곬곯곰곱곳공곶과곽관괄괆�".split(""); +for(j = 0; j != D[176].length; ++j) if(D[176][j].charCodeAt(0) !== 0xFFFD) { e[D[176][j]] = 45056 + j; d[45056 + j] = D[176][j];} +D[177] = "�����������������������������������������������������������������켂켃켅켆켇켉켊켋켌켍켎켏켒켔켖켗켘켙켚켛켝켞켟켡켢켣������켥켦켧켨켩켪켫켮켲켳켴켵켶켷켹켺켻켼켽켾켿콀콁콂콃콄������콅콆콇콈콉콊콋콌콍콎콏콐콑콒콓콖콗콙콚콛콝콞콟콠콡콢콣콦콨콪콫콬괌괍괏광괘괜괠괩괬괭괴괵괸괼굄굅굇굉교굔굘굡굣구국군굳굴굵굶굻굼굽굿궁궂궈궉권궐궜궝궤궷귀귁귄귈귐귑귓규균귤그극근귿글긁금급긋긍긔기긱긴긷길긺김깁깃깅깆깊까깍깎깐깔깖깜깝깟깠깡깥깨깩깬깰깸�".split(""); +for(j = 0; j != D[177].length; ++j) if(D[177][j].charCodeAt(0) !== 0xFFFD) { e[D[177][j]] = 45312 + j; d[45312 + j] = D[177][j];} +D[178] = "�����������������������������������������������������������������콭콮콯콲콳콵콶콷콹콺콻콼콽콾콿쾁쾂쾃쾄쾆쾇쾈쾉쾊쾋쾍������쾎쾏쾐쾑쾒쾓쾔쾕쾖쾗쾘쾙쾚쾛쾜쾝쾞쾟쾠쾢쾣쾤쾥쾦쾧쾩������쾪쾫쾬쾭쾮쾯쾱쾲쾳쾴쾵쾶쾷쾸쾹쾺쾻쾼쾽쾾쾿쿀쿁쿂쿃쿅쿆쿇쿈쿉쿊쿋깹깻깼깽꺄꺅꺌꺼꺽꺾껀껄껌껍껏껐껑께껙껜껨껫껭껴껸껼꼇꼈꼍꼐꼬꼭꼰꼲꼴꼼꼽꼿꽁꽂꽃꽈꽉꽐꽜꽝꽤꽥꽹꾀꾄꾈꾐꾑꾕꾜꾸꾹꾼꿀꿇꿈꿉꿋꿍꿎꿔꿜꿨꿩꿰꿱꿴꿸뀀뀁뀄뀌뀐뀔뀜뀝뀨끄끅끈끊끌끎끓끔끕끗끙�".split(""); +for(j = 0; j != D[178].length; ++j) if(D[178][j].charCodeAt(0) !== 0xFFFD) { e[D[178][j]] = 45568 + j; d[45568 + j] = D[178][j];} +D[179] = "�����������������������������������������������������������������쿌쿍쿎쿏쿐쿑쿒쿓쿔쿕쿖쿗쿘쿙쿚쿛쿜쿝쿞쿟쿢쿣쿥쿦쿧쿩������쿪쿫쿬쿭쿮쿯쿲쿴쿶쿷쿸쿹쿺쿻쿽쿾쿿퀁퀂퀃퀅퀆퀇퀈퀉퀊������퀋퀌퀍퀎퀏퀐퀒퀓퀔퀕퀖퀗퀙퀚퀛퀜퀝퀞퀟퀠퀡퀢퀣퀤퀥퀦퀧퀨퀩퀪퀫퀬끝끼끽낀낄낌낍낏낑나낙낚난낟날낡낢남납낫났낭낮낯낱낳내낵낸낼냄냅냇냈냉냐냑냔냘냠냥너넉넋넌널넒넓넘넙넛넜넝넣네넥넨넬넴넵넷넸넹녀녁년녈념녑녔녕녘녜녠노녹논놀놂놈놉놋농높놓놔놘놜놨뇌뇐뇔뇜뇝�".split(""); +for(j = 0; j != D[179].length; ++j) if(D[179][j].charCodeAt(0) !== 0xFFFD) { e[D[179][j]] = 45824 + j; d[45824 + j] = D[179][j];} +D[180] = "�����������������������������������������������������������������퀮퀯퀰퀱퀲퀳퀶퀷퀹퀺퀻퀽퀾퀿큀큁큂큃큆큈큊큋큌큍큎큏������큑큒큓큕큖큗큙큚큛큜큝큞큟큡큢큣큤큥큦큧큨큩큪큫큮큯������큱큲큳큵큶큷큸큹큺큻큾큿킀킂킃킄킅킆킇킈킉킊킋킌킍킎킏킐킑킒킓킔뇟뇨뇩뇬뇰뇹뇻뇽누눅눈눋눌눔눕눗눙눠눴눼뉘뉜뉠뉨뉩뉴뉵뉼늄늅늉느늑는늘늙늚늠늡늣능늦늪늬늰늴니닉닌닐닒님닙닛닝닢다닥닦단닫달닭닮닯닳담답닷닸당닺닻닿대댁댄댈댐댑댓댔댕댜더덕덖던덛덜덞덟덤덥�".split(""); +for(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];} +D[181] = "�����������������������������������������������������������������킕킖킗킘킙킚킛킜킝킞킟킠킡킢킣킦킧킩킪킫킭킮킯킰킱킲������킳킶킸킺킻킼킽킾킿탂탃탅탆탇탊탋탌탍탎탏탒탖탗탘탙탚������탛탞탟탡탢탣탥탦탧탨탩탪탫탮탲탳탴탵탶탷탹탺탻탼탽탾탿턀턁턂턃턄덧덩덫덮데덱덴델뎀뎁뎃뎄뎅뎌뎐뎔뎠뎡뎨뎬도독돈돋돌돎돐돔돕돗동돛돝돠돤돨돼됐되된될됨됩됫됴두둑둔둘둠둡둣둥둬뒀뒈뒝뒤뒨뒬뒵뒷뒹듀듄듈듐듕드득든듣들듦듬듭듯등듸디딕딘딛딜딤딥딧딨딩딪따딱딴딸�".split(""); +for(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];} +D[182] = "�����������������������������������������������������������������턅턆턇턈턉턊턋턌턎턏턐턑턒턓턔턕턖턗턘턙턚턛턜턝턞턟������턠턡턢턣턤턥턦턧턨턩턪턫턬턭턮턯턲턳턵턶턷턹턻턼턽턾������턿텂텆텇텈텉텊텋텎텏텑텒텓텕텖텗텘텙텚텛텞텠텢텣텤텥텦텧텩텪텫텭땀땁땃땄땅땋때땍땐땔땜땝땟땠땡떠떡떤떨떪떫떰떱떳떴떵떻떼떽뗀뗄뗌뗍뗏뗐뗑뗘뗬또똑똔똘똥똬똴뙈뙤뙨뚜뚝뚠뚤뚫뚬뚱뛔뛰뛴뛸뜀뜁뜅뜨뜩뜬뜯뜰뜸뜹뜻띄띈띌띔띕띠띤띨띰띱띳띵라락란랄람랍랏랐랑랒랖랗�".split(""); +for(j = 0; j != D[182].length; ++j) if(D[182][j].charCodeAt(0) !== 0xFFFD) { e[D[182][j]] = 46592 + j; d[46592 + j] = D[182][j];} +D[183] = "�����������������������������������������������������������������텮텯텰텱텲텳텴텵텶텷텸텹텺텻텽텾텿톀톁톂톃톅톆톇톉톊������톋톌톍톎톏톐톑톒톓톔톕톖톗톘톙톚톛톜톝톞톟톢톣톥톦톧������톩톪톫톬톭톮톯톲톴톶톷톸톹톻톽톾톿퇁퇂퇃퇄퇅퇆퇇퇈퇉퇊퇋퇌퇍퇎퇏래랙랜랠램랩랫랬랭랴략랸럇량러럭런럴럼럽럿렀렁렇레렉렌렐렘렙렛렝려력련렬렴렵렷렸령례롄롑롓로록론롤롬롭롯롱롸롼뢍뢨뢰뢴뢸룀룁룃룅료룐룔룝룟룡루룩룬룰룸룹룻룽뤄뤘뤠뤼뤽륀륄륌륏륑류륙륜률륨륩�".split(""); +for(j = 0; j != D[183].length; ++j) if(D[183][j].charCodeAt(0) !== 0xFFFD) { e[D[183][j]] = 46848 + j; d[46848 + j] = D[183][j];} +D[184] = "�����������������������������������������������������������������퇐퇑퇒퇓퇔퇕퇖퇗퇙퇚퇛퇜퇝퇞퇟퇠퇡퇢퇣퇤퇥퇦퇧퇨퇩퇪������퇫퇬퇭퇮퇯퇰퇱퇲퇳퇵퇶퇷퇹퇺퇻퇼퇽퇾퇿툀툁툂툃툄툅툆������툈툊툋툌툍툎툏툑툒툓툔툕툖툗툘툙툚툛툜툝툞툟툠툡툢툣툤툥툦툧툨툩륫륭르륵른를름릅릇릉릊릍릎리릭린릴림립릿링마막만많맏말맑맒맘맙맛망맞맡맣매맥맨맬맴맵맷맸맹맺먀먁먈먕머먹먼멀멂멈멉멋멍멎멓메멕멘멜멤멥멧멨멩며멱면멸몃몄명몇몌모목몫몬몰몲몸몹못몽뫄뫈뫘뫙뫼�".split(""); +for(j = 0; j != D[184].length; ++j) if(D[184][j].charCodeAt(0) !== 0xFFFD) { e[D[184][j]] = 47104 + j; d[47104 + j] = D[184][j];} +D[185] = "�����������������������������������������������������������������툪툫툮툯툱툲툳툵툶툷툸툹툺툻툾퉀퉂퉃퉄퉅퉆퉇퉉퉊퉋퉌������퉍퉎퉏퉐퉑퉒퉓퉔퉕퉖퉗퉘퉙퉚퉛퉝퉞퉟퉠퉡퉢퉣퉥퉦퉧퉨������퉩퉪퉫퉬퉭퉮퉯퉰퉱퉲퉳퉴퉵퉶퉷퉸퉹퉺퉻퉼퉽퉾퉿튂튃튅튆튇튉튊튋튌묀묄묍묏묑묘묜묠묩묫무묵묶문묻물묽묾뭄뭅뭇뭉뭍뭏뭐뭔뭘뭡뭣뭬뮈뮌뮐뮤뮨뮬뮴뮷므믄믈믐믓미믹민믿밀밂밈밉밋밌밍및밑바박밖밗반받발밝밞밟밤밥밧방밭배백밴밸뱀뱁뱃뱄뱅뱉뱌뱍뱐뱝버벅번벋벌벎범법벗�".split(""); +for(j = 0; j != D[185].length; ++j) if(D[185][j].charCodeAt(0) !== 0xFFFD) { e[D[185][j]] = 47360 + j; d[47360 + j] = D[185][j];} +D[186] = "�����������������������������������������������������������������튍튎튏튒튓튔튖튗튘튙튚튛튝튞튟튡튢튣튥튦튧튨튩튪튫튭������튮튯튰튲튳튴튵튶튷튺튻튽튾틁틃틄틅틆틇틊틌틍틎틏틐틑������틒틓틕틖틗틙틚틛틝틞틟틠틡틢틣틦틧틨틩틪틫틬틭틮틯틲틳틵틶틷틹틺벙벚베벡벤벧벨벰벱벳벴벵벼벽변별볍볏볐병볕볘볜보복볶본볼봄봅봇봉봐봔봤봬뵀뵈뵉뵌뵐뵘뵙뵤뵨부북분붇불붉붊붐붑붓붕붙붚붜붤붰붸뷔뷕뷘뷜뷩뷰뷴뷸븀븃븅브븍븐블븜븝븟비빅빈빌빎빔빕빗빙빚빛빠빡빤�".split(""); +for(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];} +D[187] = "�����������������������������������������������������������������틻틼틽틾틿팂팄팆팇팈팉팊팋팏팑팒팓팕팗팘팙팚팛팞팢팣������팤팦팧팪팫팭팮팯팱팲팳팴팵팶팷팺팾팿퍀퍁퍂퍃퍆퍇퍈퍉������퍊퍋퍌퍍퍎퍏퍐퍑퍒퍓퍔퍕퍖퍗퍘퍙퍚퍛퍜퍝퍞퍟퍠퍡퍢퍣퍤퍥퍦퍧퍨퍩빨빪빰빱빳빴빵빻빼빽뺀뺄뺌뺍뺏뺐뺑뺘뺙뺨뻐뻑뻔뻗뻘뻠뻣뻤뻥뻬뼁뼈뼉뼘뼙뼛뼜뼝뽀뽁뽄뽈뽐뽑뽕뾔뾰뿅뿌뿍뿐뿔뿜뿟뿡쀼쁑쁘쁜쁠쁨쁩삐삑삔삘삠삡삣삥사삭삯산삳살삵삶삼삽삿샀상샅새색샌샐샘샙샛샜생샤�".split(""); +for(j = 0; j != D[187].length; ++j) if(D[187][j].charCodeAt(0) !== 0xFFFD) { e[D[187][j]] = 47872 + j; d[47872 + j] = D[187][j];} +D[188] = "�����������������������������������������������������������������퍪퍫퍬퍭퍮퍯퍰퍱퍲퍳퍴퍵퍶퍷퍸퍹퍺퍻퍾퍿펁펂펃펅펆펇������펈펉펊펋펎펒펓펔펕펖펗펚펛펝펞펟펡펢펣펤펥펦펧펪펬펮������펯펰펱펲펳펵펶펷펹펺펻펽펾펿폀폁폂폃폆폇폊폋폌폍폎폏폑폒폓폔폕폖샥샨샬샴샵샷샹섀섄섈섐섕서석섞섟선섣설섦섧섬섭섯섰성섶세섹센셀셈셉셋셌셍셔셕션셜셤셥셧셨셩셰셴셸솅소속솎손솔솖솜솝솟송솥솨솩솬솰솽쇄쇈쇌쇔쇗쇘쇠쇤쇨쇰쇱쇳쇼쇽숀숄숌숍숏숑수숙순숟술숨숩숫숭�".split(""); +for(j = 0; j != D[188].length; ++j) if(D[188][j].charCodeAt(0) !== 0xFFFD) { e[D[188][j]] = 48128 + j; d[48128 + j] = D[188][j];} +D[189] = "�����������������������������������������������������������������폗폙폚폛폜폝폞폟폠폢폤폥폦폧폨폩폪폫폮폯폱폲폳폵폶폷������폸폹폺폻폾퐀퐂퐃퐄퐅퐆퐇퐉퐊퐋퐌퐍퐎퐏퐐퐑퐒퐓퐔퐕퐖������퐗퐘퐙퐚퐛퐜퐞퐟퐠퐡퐢퐣퐤퐥퐦퐧퐨퐩퐪퐫퐬퐭퐮퐯퐰퐱퐲퐳퐴퐵퐶퐷숯숱숲숴쉈쉐쉑쉔쉘쉠쉥쉬쉭쉰쉴쉼쉽쉿슁슈슉슐슘슛슝스슥슨슬슭슴습슷승시식신싣실싫심십싯싱싶싸싹싻싼쌀쌈쌉쌌쌍쌓쌔쌕쌘쌜쌤쌥쌨쌩썅써썩썬썰썲썸썹썼썽쎄쎈쎌쏀쏘쏙쏜쏟쏠쏢쏨쏩쏭쏴쏵쏸쐈쐐쐤쐬쐰�".split(""); +for(j = 0; j != D[189].length; ++j) if(D[189][j].charCodeAt(0) !== 0xFFFD) { e[D[189][j]] = 48384 + j; d[48384 + j] = D[189][j];} +D[190] = "�����������������������������������������������������������������퐸퐹퐺퐻퐼퐽퐾퐿푁푂푃푅푆푇푈푉푊푋푌푍푎푏푐푑푒푓������푔푕푖푗푘푙푚푛푝푞푟푡푢푣푥푦푧푨푩푪푫푬푮푰푱푲������푳푴푵푶푷푺푻푽푾풁풃풄풅풆풇풊풌풎풏풐풑풒풓풕풖풗풘풙풚풛풜풝쐴쐼쐽쑈쑤쑥쑨쑬쑴쑵쑹쒀쒔쒜쒸쒼쓩쓰쓱쓴쓸쓺쓿씀씁씌씐씔씜씨씩씬씰씸씹씻씽아악안앉않알앍앎앓암압앗았앙앝앞애액앤앨앰앱앳앴앵야약얀얄얇얌얍얏양얕얗얘얜얠얩어억언얹얻얼얽얾엄업없엇었엉엊엌엎�".split(""); +for(j = 0; j != D[190].length; ++j) if(D[190][j].charCodeAt(0) !== 0xFFFD) { e[D[190][j]] = 48640 + j; d[48640 + j] = D[190][j];} +D[191] = "�����������������������������������������������������������������풞풟풠풡풢풣풤풥풦풧풨풪풫풬풭풮풯풰풱풲풳풴풵풶풷풸������풹풺풻풼풽풾풿퓀퓁퓂퓃퓄퓅퓆퓇퓈퓉퓊퓋퓍퓎퓏퓑퓒퓓퓕������퓖퓗퓘퓙퓚퓛퓝퓞퓠퓡퓢퓣퓤퓥퓦퓧퓩퓪퓫퓭퓮퓯퓱퓲퓳퓴퓵퓶퓷퓹퓺퓼에엑엔엘엠엡엣엥여역엮연열엶엷염엽엾엿였영옅옆옇예옌옐옘옙옛옜오옥온올옭옮옰옳옴옵옷옹옻와왁완왈왐왑왓왔왕왜왝왠왬왯왱외왹왼욀욈욉욋욍요욕욘욜욤욥욧용우욱운울욹욺움웁웃웅워웍원월웜웝웠웡웨�".split(""); +for(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];} +D[192] = "�����������������������������������������������������������������퓾퓿픀픁픂픃픅픆픇픉픊픋픍픎픏픐픑픒픓픖픘픙픚픛픜픝������픞픟픠픡픢픣픤픥픦픧픨픩픪픫픬픭픮픯픰픱픲픳픴픵픶픷������픸픹픺픻픾픿핁핂핃핅핆핇핈핉핊핋핎핐핒핓핔핕핖핗핚핛핝핞핟핡핢핣웩웬웰웸웹웽위윅윈윌윔윕윗윙유육윤율윰윱윳융윷으윽은을읊음읍읏응읒읓읔읕읖읗의읜읠읨읫이익인일읽읾잃임입잇있잉잊잎자작잔잖잗잘잚잠잡잣잤장잦재잭잰잴잼잽잿쟀쟁쟈쟉쟌쟎쟐쟘쟝쟤쟨쟬저적전절젊�".split(""); +for(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];} +D[193] = "�����������������������������������������������������������������핤핦핧핪핬핮핯핰핱핲핳핶핷핹핺핻핽핾핿햀햁햂햃햆햊햋������햌햍햎햏햑햒햓햔햕햖햗햘햙햚햛햜햝햞햟햠햡햢햣햤햦햧������햨햩햪햫햬햭햮햯햰햱햲햳햴햵햶햷햸햹햺햻햼햽햾햿헀헁헂헃헄헅헆헇점접젓정젖제젝젠젤젬젭젯젱져젼졀졈졉졌졍졔조족존졸졺좀좁좃종좆좇좋좌좍좔좝좟좡좨좼좽죄죈죌죔죕죗죙죠죡죤죵주죽준줄줅줆줌줍줏중줘줬줴쥐쥑쥔쥘쥠쥡쥣쥬쥰쥴쥼즈즉즌즐즘즙즛증지직진짇질짊짐집짓�".split(""); +for(j = 0; j != D[193].length; ++j) if(D[193][j].charCodeAt(0) !== 0xFFFD) { e[D[193][j]] = 49408 + j; d[49408 + j] = D[193][j];} +D[194] = "�����������������������������������������������������������������헊헋헍헎헏헑헓헔헕헖헗헚헜헞헟헠헡헢헣헦헧헩헪헫헭헮������헯헰헱헲헳헶헸헺헻헼헽헾헿혂혃혅혆혇혉혊혋혌혍혎혏혒������혖혗혘혙혚혛혝혞혟혡혢혣혥혦혧혨혩혪혫혬혮혯혰혱혲혳혴혵혶혷혺혻징짖짙짚짜짝짠짢짤짧짬짭짯짰짱째짹짼쨀쨈쨉쨋쨌쨍쨔쨘쨩쩌쩍쩐쩔쩜쩝쩟쩠쩡쩨쩽쪄쪘쪼쪽쫀쫄쫌쫍쫏쫑쫓쫘쫙쫠쫬쫴쬈쬐쬔쬘쬠쬡쭁쭈쭉쭌쭐쭘쭙쭝쭤쭸쭹쮜쮸쯔쯤쯧쯩찌찍찐찔찜찝찡찢찧차착찬찮찰참찹찻�".split(""); +for(j = 0; j != D[194].length; ++j) if(D[194][j].charCodeAt(0) !== 0xFFFD) { e[D[194][j]] = 49664 + j; d[49664 + j] = D[194][j];} +D[195] = "�����������������������������������������������������������������혽혾혿홁홂홃홄홆홇홊홌홎홏홐홒홓홖홗홙홚홛홝홞홟홠홡������홢홣홤홥홦홨홪홫홬홭홮홯홲홳홵홶홷홸홹홺홻홼홽홾홿횀������횁횂횄횆횇횈횉횊횋횎횏횑횒횓횕횖횗횘횙횚횛횜횞횠횢횣횤횥횦횧횩횪찼창찾채책챈챌챔챕챗챘챙챠챤챦챨챰챵처척천철첨첩첫첬청체첵첸첼쳄쳅쳇쳉쳐쳔쳤쳬쳰촁초촉촌촐촘촙촛총촤촨촬촹최쵠쵤쵬쵭쵯쵱쵸춈추축춘출춤춥춧충춰췄췌췐취췬췰췸췹췻췽츄츈츌츔츙츠측츤츨츰츱츳층�".split(""); +for(j = 0; j != D[195].length; ++j) if(D[195][j].charCodeAt(0) !== 0xFFFD) { e[D[195][j]] = 49920 + j; d[49920 + j] = D[195][j];} +D[196] = "�����������������������������������������������������������������횫횭횮횯횱횲횳횴횵횶횷횸횺횼횽횾횿훀훁훂훃훆훇훉훊훋������훍훎훏훐훒훓훕훖훘훚훛훜훝훞훟훡훢훣훥훦훧훩훪훫훬훭������훮훯훱훲훳훴훶훷훸훹훺훻훾훿휁휂휃휅휆휇휈휉휊휋휌휍휎휏휐휒휓휔치칙친칟칠칡침칩칫칭카칵칸칼캄캅캇캉캐캑캔캘캠캡캣캤캥캬캭컁커컥컨컫컬컴컵컷컸컹케켁켄켈켐켑켓켕켜켠켤켬켭켯켰켱켸코콕콘콜콤콥콧콩콰콱콴콸쾀쾅쾌쾡쾨쾰쿄쿠쿡쿤쿨쿰쿱쿳쿵쿼퀀퀄퀑퀘퀭퀴퀵퀸퀼�".split(""); +for(j = 0; j != D[196].length; ++j) if(D[196][j].charCodeAt(0) !== 0xFFFD) { e[D[196][j]] = 50176 + j; d[50176 + j] = D[196][j];} +D[197] = "�����������������������������������������������������������������휕휖휗휚휛휝휞휟휡휢휣휤휥휦휧휪휬휮휯휰휱휲휳휶휷휹������휺휻휽휾휿흀흁흂흃흅흆흈흊흋흌흍흎흏흒흓흕흚흛흜흝흞������흟흢흤흦흧흨흪흫흭흮흯흱흲흳흵흶흷흸흹흺흻흾흿힀힂힃힄힅힆힇힊힋큄큅큇큉큐큔큘큠크큭큰클큼큽킁키킥킨킬킴킵킷킹타탁탄탈탉탐탑탓탔탕태택탠탤탬탭탯탰탱탸턍터턱턴털턺텀텁텃텄텅테텍텐텔템텝텟텡텨텬텼톄톈토톡톤톨톰톱톳통톺톼퇀퇘퇴퇸툇툉툐투툭툰툴툼툽툿퉁퉈퉜�".split(""); +for(j = 0; j != D[197].length; ++j) if(D[197][j].charCodeAt(0) !== 0xFFFD) { e[D[197][j]] = 50432 + j; d[50432 + j] = D[197][j];} +D[198] = "�����������������������������������������������������������������힍힎힏힑힒힓힔힕힖힗힚힜힞힟힠힡힢힣������������������������������������������������������������������������������퉤튀튁튄튈튐튑튕튜튠튤튬튱트특튼튿틀틂틈틉틋틔틘틜틤틥티틱틴틸팀팁팃팅파팍팎판팔팖팜팝팟팠팡팥패팩팬팰팸팹팻팼팽퍄퍅퍼퍽펀펄펌펍펏펐펑페펙펜펠펨펩펫펭펴편펼폄폅폈평폐폘폡폣포폭폰폴폼폽폿퐁�".split(""); +for(j = 0; j != D[198].length; ++j) if(D[198][j].charCodeAt(0) !== 0xFFFD) { e[D[198][j]] = 50688 + j; d[50688 + j] = D[198][j];} +D[199] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������퐈퐝푀푄표푠푤푭푯푸푹푼푿풀풂품풉풋풍풔풩퓌퓐퓔퓜퓟퓨퓬퓰퓸퓻퓽프픈플픔픕픗피픽핀필핌핍핏핑하학한할핥함합핫항해핵핸핼햄햅햇했행햐향허헉헌헐헒험헙헛헝헤헥헨헬헴헵헷헹혀혁현혈혐협혓혔형혜혠�".split(""); +for(j = 0; j != D[199].length; ++j) if(D[199][j].charCodeAt(0) !== 0xFFFD) { e[D[199][j]] = 50944 + j; d[50944 + j] = D[199][j];} +D[200] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������혤혭호혹혼홀홅홈홉홋홍홑화확환활홧황홰홱홴횃횅회획횐횔횝횟횡효횬횰횹횻후훅훈훌훑훔훗훙훠훤훨훰훵훼훽휀휄휑휘휙휜휠휨휩휫휭휴휵휸휼흄흇흉흐흑흔흖흗흘흙흠흡흣흥흩희흰흴흼흽힁히힉힌힐힘힙힛힝�".split(""); +for(j = 0; j != D[200].length; ++j) if(D[200][j].charCodeAt(0) !== 0xFFFD) { e[D[200][j]] = 51200 + j; d[51200 + j] = D[200][j];} +D[202] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������伽佳假價加可呵哥嘉嫁家暇架枷柯歌珂痂稼苛茄街袈訶賈跏軻迦駕刻却各恪慤殼珏脚覺角閣侃刊墾奸姦干幹懇揀杆柬桿澗癎看磵稈竿簡肝艮艱諫間乫喝曷渴碣竭葛褐蝎鞨勘坎堪嵌感憾戡敢柑橄減甘疳監瞰紺邯鑑鑒龕�".split(""); +for(j = 0; j != D[202].length; ++j) if(D[202][j].charCodeAt(0) !== 0xFFFD) { e[D[202][j]] = 51712 + j; d[51712 + j] = D[202][j];} +D[203] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������匣岬甲胛鉀閘剛堈姜岡崗康强彊慷江畺疆糠絳綱羌腔舡薑襁講鋼降鱇介价個凱塏愷愾慨改槪漑疥皆盖箇芥蓋豈鎧開喀客坑更粳羹醵倨去居巨拒据據擧渠炬祛距踞車遽鉅鋸乾件健巾建愆楗腱虔蹇鍵騫乞傑杰桀儉劍劒檢�".split(""); +for(j = 0; j != D[203].length; ++j) if(D[203][j].charCodeAt(0) !== 0xFFFD) { e[D[203][j]] = 51968 + j; d[51968 + j] = D[203][j];} +D[204] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������瞼鈐黔劫怯迲偈憩揭擊格檄激膈覡隔堅牽犬甄絹繭肩見譴遣鵑抉決潔結缺訣兼慊箝謙鉗鎌京俓倞傾儆勁勍卿坰境庚徑慶憬擎敬景暻更梗涇炅烱璟璥瓊痙硬磬竟競絅經耕耿脛莖警輕逕鏡頃頸驚鯨係啓堺契季屆悸戒桂械�".split(""); +for(j = 0; j != D[204].length; ++j) if(D[204][j].charCodeAt(0) !== 0xFFFD) { e[D[204][j]] = 52224 + j; d[52224 + j] = D[204][j];} +D[205] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������棨溪界癸磎稽系繫繼計誡谿階鷄古叩告呱固姑孤尻庫拷攷故敲暠枯槁沽痼皐睾稿羔考股膏苦苽菰藁蠱袴誥賈辜錮雇顧高鼓哭斛曲梏穀谷鵠困坤崑昆梱棍滾琨袞鯤汨滑骨供公共功孔工恐恭拱控攻珙空蚣貢鞏串寡戈果瓜�".split(""); +for(j = 0; j != D[205].length; ++j) if(D[205][j].charCodeAt(0) !== 0xFFFD) { e[D[205][j]] = 52480 + j; d[52480 + j] = D[205][j];} +D[206] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������科菓誇課跨過鍋顆廓槨藿郭串冠官寬慣棺款灌琯瓘管罐菅觀貫關館刮恝括适侊光匡壙廣曠洸炚狂珖筐胱鑛卦掛罫乖傀塊壞怪愧拐槐魁宏紘肱轟交僑咬喬嬌嶠巧攪敎校橋狡皎矯絞翹膠蕎蛟較轎郊餃驕鮫丘久九仇俱具勾�".split(""); +for(j = 0; j != D[206].length; ++j) if(D[206][j].charCodeAt(0) !== 0xFFFD) { e[D[206][j]] = 52736 + j; d[52736 + j] = D[206][j];} +D[207] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������區口句咎嘔坵垢寇嶇廐懼拘救枸柩構歐毆毬求溝灸狗玖球瞿矩究絿耉臼舅舊苟衢謳購軀逑邱鉤銶駒驅鳩鷗龜國局菊鞠鞫麴君窘群裙軍郡堀屈掘窟宮弓穹窮芎躬倦券勸卷圈拳捲權淃眷厥獗蕨蹶闕机櫃潰詭軌饋句晷歸貴�".split(""); +for(j = 0; j != D[207].length; ++j) if(D[207][j].charCodeAt(0) !== 0xFFFD) { e[D[207][j]] = 52992 + j; d[52992 + j] = D[207][j];} +D[208] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������鬼龜叫圭奎揆槻珪硅窺竅糾葵規赳逵閨勻均畇筠菌鈞龜橘克剋劇戟棘極隙僅劤勤懃斤根槿瑾筋芹菫覲謹近饉契今妗擒昑檎琴禁禽芩衾衿襟金錦伋及急扱汲級給亘兢矜肯企伎其冀嗜器圻基埼夔奇妓寄岐崎己幾忌技旗旣�".split(""); +for(j = 0; j != D[208].length; ++j) if(D[208][j].charCodeAt(0) !== 0xFFFD) { e[D[208][j]] = 53248 + j; d[53248 + j] = D[208][j];} +D[209] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������朞期杞棋棄機欺氣汽沂淇玘琦琪璂璣畸畿碁磯祁祇祈祺箕紀綺羈耆耭肌記譏豈起錡錤飢饑騎騏驥麒緊佶吉拮桔金喫儺喇奈娜懦懶拏拿癩羅蘿螺裸邏那樂洛烙珞落諾酪駱亂卵暖欄煖爛蘭難鸞捏捺南嵐枏楠湳濫男藍襤拉�".split(""); +for(j = 0; j != D[209].length; ++j) if(D[209][j].charCodeAt(0) !== 0xFFFD) { e[D[209][j]] = 53504 + j; d[53504 + j] = D[209][j];} +D[210] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������納臘蠟衲囊娘廊朗浪狼郎乃來內奈柰耐冷女年撚秊念恬拈捻寧寗努勞奴弩怒擄櫓爐瑙盧老蘆虜路露駑魯鷺碌祿綠菉錄鹿論壟弄濃籠聾膿農惱牢磊腦賂雷尿壘屢樓淚漏累縷陋嫩訥杻紐勒肋凜凌稜綾能菱陵尼泥匿溺多茶�".split(""); +for(j = 0; j != D[210].length; ++j) if(D[210][j].charCodeAt(0) !== 0xFFFD) { e[D[210][j]] = 53760 + j; d[53760 + j] = D[210][j];} +D[211] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������丹亶但單團壇彖斷旦檀段湍短端簞緞蛋袒鄲鍛撻澾獺疸達啖坍憺擔曇淡湛潭澹痰聃膽蕁覃談譚錟沓畓答踏遝唐堂塘幢戇撞棠當糖螳黨代垈坮大對岱帶待戴擡玳臺袋貸隊黛宅德悳倒刀到圖堵塗導屠島嶋度徒悼挑掉搗桃�".split(""); +for(j = 0; j != D[211].length; ++j) if(D[211][j].charCodeAt(0) !== 0xFFFD) { e[D[211][j]] = 54016 + j; d[54016 + j] = D[211][j];} +D[212] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������棹櫂淘渡滔濤燾盜睹禱稻萄覩賭跳蹈逃途道都鍍陶韜毒瀆牘犢獨督禿篤纛讀墩惇敦旽暾沌焞燉豚頓乭突仝冬凍動同憧東桐棟洞潼疼瞳童胴董銅兜斗杜枓痘竇荳讀豆逗頭屯臀芚遁遯鈍得嶝橙燈登等藤謄鄧騰喇懶拏癩羅�".split(""); +for(j = 0; j != D[212].length; ++j) if(D[212][j].charCodeAt(0) !== 0xFFFD) { e[D[212][j]] = 54272 + j; d[54272 + j] = D[212][j];} +D[213] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������蘿螺裸邏樂洛烙珞絡落諾酪駱丹亂卵欄欒瀾爛蘭鸞剌辣嵐擥攬欖濫籃纜藍襤覽拉臘蠟廊朗浪狼琅瑯螂郞來崍徠萊冷掠略亮倆兩凉梁樑粮粱糧良諒輛量侶儷勵呂廬慮戾旅櫚濾礪藜蠣閭驢驪麗黎力曆歷瀝礫轢靂憐戀攣漣�".split(""); +for(j = 0; j != D[213].length; ++j) if(D[213][j].charCodeAt(0) !== 0xFFFD) { e[D[213][j]] = 54528 + j; d[54528 + j] = D[213][j];} +D[214] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������煉璉練聯蓮輦連鍊冽列劣洌烈裂廉斂殮濂簾獵令伶囹寧岺嶺怜玲笭羚翎聆逞鈴零靈領齡例澧禮醴隷勞怒撈擄櫓潞瀘爐盧老蘆虜路輅露魯鷺鹵碌祿綠菉錄鹿麓論壟弄朧瀧瓏籠聾儡瀨牢磊賂賚賴雷了僚寮廖料燎療瞭聊蓼�".split(""); +for(j = 0; j != D[214].length; ++j) if(D[214][j].charCodeAt(0) !== 0xFFFD) { e[D[214][j]] = 54784 + j; d[54784 + j] = D[214][j];} +D[215] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������遼鬧龍壘婁屢樓淚漏瘻累縷蔞褸鏤陋劉旒柳榴流溜瀏琉瑠留瘤硫謬類六戮陸侖倫崙淪綸輪律慄栗率隆勒肋凜凌楞稜綾菱陵俚利厘吏唎履悧李梨浬犁狸理璃異痢籬罹羸莉裏裡里釐離鯉吝潾燐璘藺躪隣鱗麟林淋琳臨霖砬�".split(""); +for(j = 0; j != D[215].length; ++j) if(D[215][j].charCodeAt(0) !== 0xFFFD) { e[D[215][j]] = 55040 + j; d[55040 + j] = D[215][j];} +D[216] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������立笠粒摩瑪痲碼磨馬魔麻寞幕漠膜莫邈万卍娩巒彎慢挽晩曼滿漫灣瞞萬蔓蠻輓饅鰻唜抹末沫茉襪靺亡妄忘忙望網罔芒茫莽輞邙埋妹媒寐昧枚梅每煤罵買賣邁魅脈貊陌驀麥孟氓猛盲盟萌冪覓免冕勉棉沔眄眠綿緬面麵滅�".split(""); +for(j = 0; j != D[216].length; ++j) if(D[216][j].charCodeAt(0) !== 0xFFFD) { e[D[216][j]] = 55296 + j; d[55296 + j] = D[216][j];} +D[217] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������蔑冥名命明暝椧溟皿瞑茗蓂螟酩銘鳴袂侮冒募姆帽慕摸摹暮某模母毛牟牡瑁眸矛耗芼茅謀謨貌木沐牧目睦穆鶩歿沒夢朦蒙卯墓妙廟描昴杳渺猫竗苗錨務巫憮懋戊拇撫无楙武毋無珷畝繆舞茂蕪誣貿霧鵡墨默們刎吻問文�".split(""); +for(j = 0; j != D[217].length; ++j) if(D[217][j].charCodeAt(0) !== 0xFFFD) { e[D[217][j]] = 55552 + j; d[55552 + j] = D[217][j];} +D[218] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������汶紊紋聞蚊門雯勿沕物味媚尾嵋彌微未梶楣渼湄眉米美薇謎迷靡黴岷悶愍憫敏旻旼民泯玟珉緡閔密蜜謐剝博拍搏撲朴樸泊珀璞箔粕縛膊舶薄迫雹駁伴半反叛拌搬攀斑槃泮潘班畔瘢盤盼磐磻礬絆般蟠返頒飯勃拔撥渤潑�".split(""); +for(j = 0; j != D[218].length; ++j) if(D[218][j].charCodeAt(0) !== 0xFFFD) { e[D[218][j]] = 55808 + j; d[55808 + j] = D[218][j];} +D[219] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������發跋醱鉢髮魃倣傍坊妨尨幇彷房放方旁昉枋榜滂磅紡肪膀舫芳蒡蚌訪謗邦防龐倍俳北培徘拜排杯湃焙盃背胚裴裵褙賠輩配陪伯佰帛柏栢白百魄幡樊煩燔番磻繁蕃藩飜伐筏罰閥凡帆梵氾汎泛犯範范法琺僻劈壁擘檗璧癖�".split(""); +for(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];} +D[220] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������碧蘗闢霹便卞弁變辨辯邊別瞥鱉鼈丙倂兵屛幷昞昺柄棅炳甁病秉竝輧餠騈保堡報寶普步洑湺潽珤甫菩補褓譜輔伏僕匐卜宓復服福腹茯蔔複覆輹輻馥鰒本乶俸奉封峯峰捧棒烽熢琫縫蓬蜂逢鋒鳳不付俯傅剖副否咐埠夫婦�".split(""); +for(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];} +D[221] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������孚孵富府復扶敷斧浮溥父符簿缶腐腑膚艀芙莩訃負賦賻赴趺部釜阜附駙鳧北分吩噴墳奔奮忿憤扮昐汾焚盆粉糞紛芬賁雰不佛弗彿拂崩朋棚硼繃鵬丕備匕匪卑妃婢庇悲憊扉批斐枇榧比毖毗毘沸泌琵痺砒碑秕秘粃緋翡肥�".split(""); +for(j = 0; j != D[221].length; ++j) if(D[221][j].charCodeAt(0) !== 0xFFFD) { e[D[221][j]] = 56576 + j; d[56576 + j] = D[221][j];} +D[222] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������脾臂菲蜚裨誹譬費鄙非飛鼻嚬嬪彬斌檳殯浜濱瀕牝玭貧賓頻憑氷聘騁乍事些仕伺似使俟僿史司唆嗣四士奢娑寫寺射巳師徙思捨斜斯柶査梭死沙泗渣瀉獅砂社祀祠私篩紗絲肆舍莎蓑蛇裟詐詞謝賜赦辭邪飼駟麝削數朔索�".split(""); +for(j = 0; j != D[222].length; ++j) if(D[222][j].charCodeAt(0) !== 0xFFFD) { e[D[222][j]] = 56832 + j; d[56832 + j] = D[222][j];} +D[223] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������傘刪山散汕珊産疝算蒜酸霰乷撒殺煞薩三參杉森渗芟蔘衫揷澁鈒颯上傷像償商喪嘗孀尙峠常床庠廂想桑橡湘爽牀狀相祥箱翔裳觴詳象賞霜塞璽賽嗇塞穡索色牲生甥省笙墅壻嶼序庶徐恕抒捿敍暑曙書栖棲犀瑞筮絮緖署�".split(""); +for(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];} +D[224] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������胥舒薯西誓逝鋤黍鼠夕奭席惜昔晳析汐淅潟石碩蓆釋錫仙僊先善嬋宣扇敾旋渲煽琁瑄璇璿癬禪線繕羨腺膳船蘚蟬詵跣選銑鐥饍鮮卨屑楔泄洩渫舌薛褻設說雪齧剡暹殲纖蟾贍閃陝攝涉燮葉城姓宬性惺成星晟猩珹盛省筬�".split(""); +for(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];} +D[225] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������聖聲腥誠醒世勢歲洗稅笹細說貰召嘯塑宵小少巢所掃搔昭梳沼消溯瀟炤燒甦疏疎瘙笑篠簫素紹蔬蕭蘇訴逍遡邵銷韶騷俗屬束涑粟續謖贖速孫巽損蓀遜飡率宋悚松淞訟誦送頌刷殺灑碎鎖衰釗修受嗽囚垂壽嫂守岫峀帥愁�".split(""); +for(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];} +D[226] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������戍手授搜收數樹殊水洙漱燧狩獸琇璲瘦睡秀穗竪粹綏綬繡羞脩茱蒐蓚藪袖誰讐輸遂邃酬銖銹隋隧隨雖需須首髓鬚叔塾夙孰宿淑潚熟琡璹肅菽巡徇循恂旬栒楯橓殉洵淳珣盾瞬筍純脣舜荀蓴蕣詢諄醇錞順馴戌術述鉥崇崧�".split(""); +for(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];} +D[227] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������嵩瑟膝蝨濕拾習褶襲丞乘僧勝升承昇繩蠅陞侍匙嘶始媤尸屎屍市弑恃施是時枾柴猜矢示翅蒔蓍視試詩諡豕豺埴寔式息拭植殖湜熄篒蝕識軾食飾伸侁信呻娠宸愼新晨燼申神紳腎臣莘薪藎蜃訊身辛辰迅失室實悉審尋心沁�".split(""); +for(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];} +D[228] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������沈深瀋甚芯諶什十拾雙氏亞俄兒啞娥峨我牙芽莪蛾衙訝阿雅餓鴉鵝堊岳嶽幄惡愕握樂渥鄂鍔顎鰐齷安岸按晏案眼雁鞍顔鮟斡謁軋閼唵岩巖庵暗癌菴闇壓押狎鴨仰央怏昻殃秧鴦厓哀埃崖愛曖涯碍艾隘靄厄扼掖液縊腋額�".split(""); +for(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];} +D[229] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������櫻罌鶯鸚也倻冶夜惹揶椰爺耶若野弱掠略約若葯蒻藥躍亮佯兩凉壤孃恙揚攘敭暘梁楊樣洋瀁煬痒瘍禳穰糧羊良襄諒讓釀陽量養圄御於漁瘀禦語馭魚齬億憶抑檍臆偃堰彦焉言諺孼蘖俺儼嚴奄掩淹嶪業円予余勵呂女如廬�".split(""); +for(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];} +D[230] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������旅歟汝濾璵礖礪與艅茹輿轝閭餘驪麗黎亦力域役易曆歷疫繹譯轢逆驛嚥堧姸娟宴年延憐戀捐挻撚椽沇沿涎涓淵演漣烟然煙煉燃燕璉硏硯秊筵緣練縯聯衍軟輦蓮連鉛鍊鳶列劣咽悅涅烈熱裂說閱厭廉念捻染殮炎焰琰艶苒�".split(""); +for(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];} +D[231] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������簾閻髥鹽曄獵燁葉令囹塋寧嶺嶸影怜映暎楹榮永泳渶潁濚瀛瀯煐營獰玲瑛瑩瓔盈穎纓羚聆英詠迎鈴鍈零霙靈領乂倪例刈叡曳汭濊猊睿穢芮藝蘂禮裔詣譽豫醴銳隸霓預五伍俉傲午吾吳嗚塢墺奧娛寤悟惡懊敖旿晤梧汚澳�".split(""); +for(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];} +D[232] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������烏熬獒筽蜈誤鰲鼇屋沃獄玉鈺溫瑥瘟穩縕蘊兀壅擁瓮甕癰翁邕雍饔渦瓦窩窪臥蛙蝸訛婉完宛梡椀浣玩琓琬碗緩翫脘腕莞豌阮頑曰往旺枉汪王倭娃歪矮外嵬巍猥畏了僚僥凹堯夭妖姚寥寮尿嶢拗搖撓擾料曜樂橈燎燿瑤療�".split(""); +for(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];} +D[233] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������窈窯繇繞耀腰蓼蟯要謠遙遼邀饒慾欲浴縟褥辱俑傭冗勇埇墉容庸慂榕涌湧溶熔瑢用甬聳茸蓉踊鎔鏞龍于佑偶優又友右宇寓尤愚憂旴牛玗瑀盂祐禑禹紆羽芋藕虞迂遇郵釪隅雨雩勖彧旭昱栯煜稶郁頊云暈橒殞澐熉耘芸蕓�".split(""); +for(j = 0; j != D[233].length; ++j) if(D[233][j].charCodeAt(0) !== 0xFFFD) { e[D[233][j]] = 59648 + j; d[59648 + j] = D[233][j];} +D[234] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������運隕雲韻蔚鬱亐熊雄元原員圓園垣媛嫄寃怨愿援沅洹湲源爰猿瑗苑袁轅遠阮院願鴛月越鉞位偉僞危圍委威尉慰暐渭爲瑋緯胃萎葦蔿蝟衛褘謂違韋魏乳侑儒兪劉唯喩孺宥幼幽庾悠惟愈愉揄攸有杻柔柚柳楡楢油洧流游溜�".split(""); +for(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];} +D[235] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������濡猶猷琉瑜由留癒硫紐維臾萸裕誘諛諭踰蹂遊逾遺酉釉鍮類六堉戮毓肉育陸倫允奫尹崙淪潤玧胤贇輪鈗閏律慄栗率聿戎瀜絨融隆垠恩慇殷誾銀隱乙吟淫蔭陰音飮揖泣邑凝應膺鷹依倚儀宜意懿擬椅毅疑矣義艤薏蟻衣誼�".split(""); +for(j = 0; j != D[235].length; ++j) if(D[235][j].charCodeAt(0) !== 0xFFFD) { e[D[235][j]] = 60160 + j; d[60160 + j] = D[235][j];} +D[236] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������議醫二以伊利吏夷姨履已弛彛怡易李梨泥爾珥理異痍痢移罹而耳肄苡荑裏裡貽貳邇里離飴餌匿溺瀷益翊翌翼謚人仁刃印吝咽因姻寅引忍湮燐璘絪茵藺蚓認隣靭靷鱗麟一佚佾壹日溢逸鎰馹任壬妊姙恁林淋稔臨荏賃入卄�".split(""); +for(j = 0; j != D[236].length; ++j) if(D[236][j].charCodeAt(0) !== 0xFFFD) { e[D[236][j]] = 60416 + j; d[60416 + j] = D[236][j];} +D[237] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������立笠粒仍剩孕芿仔刺咨姉姿子字孜恣慈滋炙煮玆瓷疵磁紫者自茨蔗藉諮資雌作勺嚼斫昨灼炸爵綽芍酌雀鵲孱棧殘潺盞岑暫潛箴簪蠶雜丈仗匠場墻壯奬將帳庄張掌暲杖樟檣欌漿牆狀獐璋章粧腸臟臧莊葬蔣薔藏裝贓醬長�".split(""); +for(j = 0; j != D[237].length; ++j) if(D[237][j].charCodeAt(0) !== 0xFFFD) { e[D[237][j]] = 60672 + j; d[60672 + j] = D[237][j];} +D[238] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������障再哉在宰才材栽梓渽滓災縡裁財載齋齎爭箏諍錚佇低儲咀姐底抵杵楮樗沮渚狙猪疽箸紵苧菹著藷詛貯躇這邸雎齟勣吊嫡寂摘敵滴狄炙的積笛籍績翟荻謫賊赤跡蹟迪迹適鏑佃佺傳全典前剪塡塼奠專展廛悛戰栓殿氈澱�".split(""); +for(j = 0; j != D[238].length; ++j) if(D[238][j].charCodeAt(0) !== 0xFFFD) { e[D[238][j]] = 60928 + j; d[60928 + j] = D[238][j];} +D[239] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������煎琠田甸畑癲筌箋箭篆纏詮輾轉鈿銓錢鐫電顚顫餞切截折浙癤竊節絶占岾店漸点粘霑鮎點接摺蝶丁井亭停偵呈姃定幀庭廷征情挺政整旌晶晸柾楨檉正汀淀淨渟湞瀞炡玎珽町睛碇禎程穽精綎艇訂諪貞鄭酊釘鉦鋌錠霆靖�".split(""); +for(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];} +D[240] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������靜頂鼎制劑啼堤帝弟悌提梯濟祭第臍薺製諸蹄醍除際霽題齊俎兆凋助嘲弔彫措操早晁曺曹朝條棗槽漕潮照燥爪璪眺祖祚租稠窕粗糟組繰肇藻蚤詔調趙躁造遭釣阻雕鳥族簇足鏃存尊卒拙猝倧宗從悰慫棕淙琮種終綜縱腫�".split(""); +for(j = 0; j != D[240].length; ++j) if(D[240][j].charCodeAt(0) !== 0xFFFD) { e[D[240][j]] = 61440 + j; d[61440 + j] = D[240][j];} +D[241] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������踪踵鍾鐘佐坐左座挫罪主住侏做姝胄呪周嗾奏宙州廚晝朱柱株注洲湊澍炷珠疇籌紂紬綢舟蛛註誅走躊輳週酎酒鑄駐竹粥俊儁准埈寯峻晙樽浚準濬焌畯竣蠢逡遵雋駿茁中仲衆重卽櫛楫汁葺增憎曾拯烝甑症繒蒸證贈之只�".split(""); +for(j = 0; j != D[241].length; ++j) if(D[241][j].charCodeAt(0) !== 0xFFFD) { e[D[241][j]] = 61696 + j; d[61696 + j] = D[241][j];} +D[242] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������咫地址志持指摯支旨智枝枳止池沚漬知砥祉祗紙肢脂至芝芷蜘誌識贄趾遲直稙稷織職唇嗔塵振搢晉晋桭榛殄津溱珍瑨璡畛疹盡眞瞋秦縉縝臻蔯袗診賑軫辰進鎭陣陳震侄叱姪嫉帙桎瓆疾秩窒膣蛭質跌迭斟朕什執潗緝輯�".split(""); +for(j = 0; j != D[242].length; ++j) if(D[242][j].charCodeAt(0) !== 0xFFFD) { e[D[242][j]] = 61952 + j; d[61952 + j] = D[242][j];} +D[243] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������鏶集徵懲澄且侘借叉嗟嵯差次此磋箚茶蹉車遮捉搾着窄錯鑿齪撰澯燦璨瓚竄簒纂粲纘讚贊鑽餐饌刹察擦札紮僭參塹慘慙懺斬站讒讖倉倡創唱娼廠彰愴敞昌昶暢槍滄漲猖瘡窓脹艙菖蒼債埰寀寨彩採砦綵菜蔡采釵冊柵策�".split(""); +for(j = 0; j != D[243].length; ++j) if(D[243][j].charCodeAt(0) !== 0xFFFD) { e[D[243][j]] = 62208 + j; d[62208 + j] = D[243][j];} +D[244] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������責凄妻悽處倜刺剔尺慽戚拓擲斥滌瘠脊蹠陟隻仟千喘天川擅泉淺玔穿舛薦賤踐遷釧闡阡韆凸哲喆徹撤澈綴輟轍鐵僉尖沾添甛瞻簽籤詹諂堞妾帖捷牒疊睫諜貼輒廳晴淸聽菁請靑鯖切剃替涕滯締諦逮遞體初剿哨憔抄招梢�".split(""); +for(j = 0; j != D[244].length; ++j) if(D[244][j].charCodeAt(0) !== 0xFFFD) { e[D[244][j]] = 62464 + j; d[62464 + j] = D[244][j];} +D[245] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������椒楚樵炒焦硝礁礎秒稍肖艸苕草蕉貂超酢醋醮促囑燭矗蜀觸寸忖村邨叢塚寵悤憁摠總聰蔥銃撮催崔最墜抽推椎楸樞湫皺秋芻萩諏趨追鄒酋醜錐錘鎚雛騶鰍丑畜祝竺筑築縮蓄蹙蹴軸逐春椿瑃出朮黜充忠沖蟲衝衷悴膵萃�".split(""); +for(j = 0; j != D[245].length; ++j) if(D[245][j].charCodeAt(0) !== 0xFFFD) { e[D[245][j]] = 62720 + j; d[62720 + j] = D[245][j];} +D[246] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������贅取吹嘴娶就炊翠聚脆臭趣醉驟鷲側仄厠惻測層侈値嗤峙幟恥梔治淄熾痔痴癡稚穉緇緻置致蚩輜雉馳齒則勅飭親七柒漆侵寢枕沈浸琛砧針鍼蟄秤稱快他咤唾墮妥惰打拖朶楕舵陀馱駝倬卓啄坼度托拓擢晫柝濁濯琢琸託�".split(""); +for(j = 0; j != D[246].length; ++j) if(D[246][j].charCodeAt(0) !== 0xFFFD) { e[D[246][j]] = 62976 + j; d[62976 + j] = D[246][j];} +D[247] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������鐸呑嘆坦彈憚歎灘炭綻誕奪脫探眈耽貪塔搭榻宕帑湯糖蕩兌台太怠態殆汰泰笞胎苔跆邰颱宅擇澤撑攄兎吐土討慟桶洞痛筒統通堆槌腿褪退頹偸套妬投透鬪慝特闖坡婆巴把播擺杷波派爬琶破罷芭跛頗判坂板版瓣販辦鈑�".split(""); +for(j = 0; j != D[247].length; ++j) if(D[247][j].charCodeAt(0) !== 0xFFFD) { e[D[247][j]] = 63232 + j; d[63232 + j] = D[247][j];} +D[248] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������阪八叭捌佩唄悖敗沛浿牌狽稗覇貝彭澎烹膨愎便偏扁片篇編翩遍鞭騙貶坪平枰萍評吠嬖幣廢弊斃肺蔽閉陛佈包匍匏咆哺圃布怖抛抱捕暴泡浦疱砲胞脯苞葡蒲袍褒逋鋪飽鮑幅暴曝瀑爆輻俵剽彪慓杓標漂瓢票表豹飇飄驃�".split(""); +for(j = 0; j != D[248].length; ++j) if(D[248][j].charCodeAt(0) !== 0xFFFD) { e[D[248][j]] = 63488 + j; d[63488 + j] = D[248][j];} +D[249] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������品稟楓諷豊風馮彼披疲皮被避陂匹弼必泌珌畢疋筆苾馝乏逼下何厦夏廈昰河瑕荷蝦賀遐霞鰕壑學虐謔鶴寒恨悍旱汗漢澣瀚罕翰閑閒限韓割轄函含咸啣喊檻涵緘艦銜陷鹹合哈盒蛤閤闔陜亢伉姮嫦巷恒抗杭桁沆港缸肛航�".split(""); +for(j = 0; j != D[249].length; ++j) if(D[249][j].charCodeAt(0) !== 0xFFFD) { e[D[249][j]] = 63744 + j; d[63744 + j] = D[249][j];} +D[250] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������行降項亥偕咳垓奚孩害懈楷海瀣蟹解該諧邂駭骸劾核倖幸杏荇行享向嚮珦鄕響餉饗香噓墟虛許憲櫶獻軒歇險驗奕爀赫革俔峴弦懸晛泫炫玄玹現眩睍絃絢縣舷衒見賢鉉顯孑穴血頁嫌俠協夾峽挾浹狹脅脇莢鋏頰亨兄刑型�".split(""); +for(j = 0; j != D[250].length; ++j) if(D[250][j].charCodeAt(0) !== 0xFFFD) { e[D[250][j]] = 64000 + j; d[64000 + j] = D[250][j];} +D[251] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������形泂滎瀅灐炯熒珩瑩荊螢衡逈邢鎣馨兮彗惠慧暳蕙蹊醯鞋乎互呼壕壺好岵弧戶扈昊晧毫浩淏湖滸澔濠濩灝狐琥瑚瓠皓祜糊縞胡芦葫蒿虎號蝴護豪鎬頀顥惑或酷婚昏混渾琿魂忽惚笏哄弘汞泓洪烘紅虹訌鴻化和嬅樺火畵�".split(""); +for(j = 0; j != D[251].length; ++j) if(D[251][j].charCodeAt(0) !== 0xFFFD) { e[D[251][j]] = 64256 + j; d[64256 + j] = D[251][j];} +D[252] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������禍禾花華話譁貨靴廓擴攫確碻穫丸喚奐宦幻患換歡晥桓渙煥環紈還驩鰥活滑猾豁闊凰幌徨恍惶愰慌晃晄榥況湟滉潢煌璜皇篁簧荒蝗遑隍黃匯回廻徊恢悔懷晦會檜淮澮灰獪繪膾茴蛔誨賄劃獲宖橫鐄哮嚆孝效斅曉梟涍淆�".split(""); +for(j = 0; j != D[252].length; ++j) if(D[252][j].charCodeAt(0) !== 0xFFFD) { e[D[252][j]] = 64512 + j; d[64512 + j] = D[252][j];} +D[253] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������爻肴酵驍侯候厚后吼喉嗅帿後朽煦珝逅勛勳塤壎焄熏燻薰訓暈薨喧暄煊萱卉喙毁彙徽揮暉煇諱輝麾休携烋畦虧恤譎鷸兇凶匈洶胸黑昕欣炘痕吃屹紇訖欠欽歆吸恰洽翕興僖凞喜噫囍姬嬉希憙憘戱晞曦熙熹熺犧禧稀羲詰�".split(""); +for(j = 0; j != D[253].length; ++j) if(D[253][j].charCodeAt(0) !== 0xFFFD) { e[D[253][j]] = 64768 + j; d[64768 + j] = D[253][j];} +return {"enc": e, "dec": d }; })(); diff --git a/node_modules/codepage/bits/950.js b/node_modules/codepage/bits/950.js new file mode 100644 index 000000000..2ffabe890 --- /dev/null +++ b/node_modules/codepage/bits/950.js @@ -0,0 +1,179 @@ +if(typeof cptable === 'undefined') cptable = {}; +cptable[950] = (function(){ var d = [], e = {}, D = [], j; +D[0] = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~��������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];} +D[161] = "���������������������������������������������������������������� ,、。.‧;:?!︰…‥﹐﹑﹒·﹔﹕﹖﹗|–︱—︳╴︴﹏()︵︶{}︷︸〔〕︹︺【】︻︼《》︽︾〈〉︿﹀「」﹁﹂『』﹃﹄﹙﹚����������������������������������﹛﹜﹝﹞‘’“”〝〞‵′#&*※§〃○●△▲◎☆★◇◆□■▽▼㊣℅¯ ̄_ˍ﹉﹊﹍﹎﹋﹌﹟﹠﹡+-×÷±√<>=≦≧≠∞≒≡﹢﹣﹤﹥﹦~∩∪⊥∠∟⊿㏒㏑∫∮∵∴♀♂⊕⊙↑↓←→↖↗↙↘∥∣/�".split(""); +for(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];} +D[162] = "����������������������������������������������������������������\∕﹨$¥〒¢£%@℃℉﹩﹪﹫㏕㎜㎝㎞㏎㎡㎎㎏㏄°兙兛兞兝兡兣嗧瓩糎▁▂▃▄▅▆▇█▏▎▍▌▋▊▉┼┴┬┤├▔─│▕┌┐└┘╭����������������������������������╮╰╯═╞╪╡◢◣◥◤╱╲╳0123456789ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩ〡〢〣〤〥〦〧〨〩十卄卅ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuv�".split(""); +for(j = 0; j != D[162].length; ++j) if(D[162][j].charCodeAt(0) !== 0xFFFD) { e[D[162][j]] = 41472 + j; d[41472 + j] = D[162][j];} +D[163] = "����������������������������������������������������������������wxyzΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩαβγδεζηθικλμνξοπρστυφχψωㄅㄆㄇㄈㄉㄊㄋㄌㄍㄎㄏ����������������������������������ㄐㄑㄒㄓㄔㄕㄖㄗㄘㄙㄚㄛㄜㄝㄞㄟㄠㄡㄢㄣㄤㄥㄦㄧㄨㄩ˙ˉˊˇˋ���������������������������������€������������������������������".split(""); +for(j = 0; j != D[163].length; ++j) if(D[163][j].charCodeAt(0) !== 0xFFFD) { e[D[163][j]] = 41728 + j; d[41728 + j] = D[163][j];} +D[164] = "����������������������������������������������������������������一乙丁七乃九了二人儿入八几刀刁力匕十卜又三下丈上丫丸凡久么也乞于亡兀刃勺千叉口土士夕大女子孑孓寸小尢尸山川工己已巳巾干廾弋弓才����������������������������������丑丐不中丰丹之尹予云井互五亢仁什仃仆仇仍今介仄元允內六兮公冗凶分切刈勻勾勿化匹午升卅卞厄友及反壬天夫太夭孔少尤尺屯巴幻廿弔引心戈戶手扎支文斗斤方日曰月木欠止歹毋比毛氏水火爪父爻片牙牛犬王丙�".split(""); +for(j = 0; j != D[164].length; ++j) if(D[164][j].charCodeAt(0) !== 0xFFFD) { e[D[164][j]] = 41984 + j; d[41984 + j] = D[164][j];} +D[165] = "����������������������������������������������������������������世丕且丘主乍乏乎以付仔仕他仗代令仙仞充兄冉冊冬凹出凸刊加功包匆北匝仟半卉卡占卯卮去可古右召叮叩叨叼司叵叫另只史叱台句叭叻四囚外����������������������������������央失奴奶孕它尼巨巧左市布平幼弁弘弗必戊打扔扒扑斥旦朮本未末札正母民氐永汁汀氾犯玄玉瓜瓦甘生用甩田由甲申疋白皮皿目矛矢石示禾穴立丞丟乒乓乩亙交亦亥仿伉伙伊伕伍伐休伏仲件任仰仳份企伋光兇兆先全�".split(""); +for(j = 0; j != D[165].length; ++j) if(D[165][j].charCodeAt(0) !== 0xFFFD) { e[D[165][j]] = 42240 + j; d[42240 + j] = D[165][j];} +D[166] = "����������������������������������������������������������������共再冰列刑划刎刖劣匈匡匠印危吉吏同吊吐吁吋各向名合吃后吆吒因回囝圳地在圭圬圯圩夙多夷夸妄奸妃好她如妁字存宇守宅安寺尖屹州帆并年����������������������������������式弛忙忖戎戌戍成扣扛托收早旨旬旭曲曳有朽朴朱朵次此死氖汝汗汙江池汐汕污汛汍汎灰牟牝百竹米糸缶羊羽老考而耒耳聿肉肋肌臣自至臼舌舛舟艮色艾虫血行衣西阡串亨位住佇佗佞伴佛何估佐佑伽伺伸佃佔似但佣�".split(""); +for(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];} +D[167] = "����������������������������������������������������������������作你伯低伶余佝佈佚兌克免兵冶冷別判利刪刨劫助努劬匣即卵吝吭吞吾否呎吧呆呃吳呈呂君吩告吹吻吸吮吵吶吠吼呀吱含吟听囪困囤囫坊坑址坍����������������������������������均坎圾坐坏圻壯夾妝妒妨妞妣妙妖妍妤妓妊妥孝孜孚孛完宋宏尬局屁尿尾岐岑岔岌巫希序庇床廷弄弟彤形彷役忘忌志忍忱快忸忪戒我抄抗抖技扶抉扭把扼找批扳抒扯折扮投抓抑抆改攻攸旱更束李杏材村杜杖杞杉杆杠�".split(""); +for(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];} +D[168] = "����������������������������������������������������������������杓杗步每求汞沙沁沈沉沅沛汪決沐汰沌汨沖沒汽沃汲汾汴沆汶沍沔沘沂灶灼災灸牢牡牠狄狂玖甬甫男甸皂盯矣私秀禿究系罕肖肓肝肘肛肚育良芒����������������������������������芋芍見角言谷豆豕貝赤走足身車辛辰迂迆迅迄巡邑邢邪邦那酉釆里防阮阱阪阬並乖乳事些亞享京佯依侍佳使佬供例來侃佰併侈佩佻侖佾侏侑佺兔兒兕兩具其典冽函刻券刷刺到刮制剁劾劻卒協卓卑卦卷卸卹取叔受味呵�".split(""); +for(j = 0; j != D[168].length; ++j) if(D[168][j].charCodeAt(0) !== 0xFFFD) { e[D[168][j]] = 43008 + j; d[43008 + j] = D[168][j];} +D[169] = "����������������������������������������������������������������咖呸咕咀呻呷咄咒咆呼咐呱呶和咚呢周咋命咎固垃坷坪坩坡坦坤坼夜奉奇奈奄奔妾妻委妹妮姑姆姐姍始姓姊妯妳姒姅孟孤季宗定官宜宙宛尚屈居����������������������������������屆岷岡岸岩岫岱岳帘帚帖帕帛帑幸庚店府底庖延弦弧弩往征彿彼忝忠忽念忿怏怔怯怵怖怪怕怡性怩怫怛或戕房戾所承拉拌拄抿拂抹拒招披拓拔拋拈抨抽押拐拙拇拍抵拚抱拘拖拗拆抬拎放斧於旺昔易昌昆昂明昀昏昕昊�".split(""); +for(j = 0; j != D[169].length; ++j) if(D[169][j].charCodeAt(0) !== 0xFFFD) { e[D[169][j]] = 43264 + j; d[43264 + j] = D[169][j];} +D[170] = "����������������������������������������������������������������昇服朋杭枋枕東果杳杷枇枝林杯杰板枉松析杵枚枓杼杪杲欣武歧歿氓氛泣注泳沱泌泥河沽沾沼波沫法泓沸泄油況沮泗泅泱沿治泡泛泊沬泯泜泖泠����������������������������������炕炎炒炊炙爬爭爸版牧物狀狎狙狗狐玩玨玟玫玥甽疝疙疚的盂盲直知矽社祀祁秉秈空穹竺糾罔羌羋者肺肥肢肱股肫肩肴肪肯臥臾舍芳芝芙芭芽芟芹花芬芥芯芸芣芰芾芷虎虱初表軋迎返近邵邸邱邶采金長門阜陀阿阻附�".split(""); +for(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];} +D[171] = "����������������������������������������������������������������陂隹雨青非亟亭亮信侵侯便俠俑俏保促侶俘俟俊俗侮俐俄係俚俎俞侷兗冒冑冠剎剃削前剌剋則勇勉勃勁匍南卻厚叛咬哀咨哎哉咸咦咳哇哂咽咪品����������������������������������哄哈咯咫咱咻咩咧咿囿垂型垠垣垢城垮垓奕契奏奎奐姜姘姿姣姨娃姥姪姚姦威姻孩宣宦室客宥封屎屏屍屋峙峒巷帝帥帟幽庠度建弈弭彥很待徊律徇後徉怒思怠急怎怨恍恰恨恢恆恃恬恫恪恤扁拜挖按拼拭持拮拽指拱拷�".split(""); +for(j = 0; j != D[171].length; ++j) if(D[171][j].charCodeAt(0) !== 0xFFFD) { e[D[171][j]] = 43776 + j; d[43776 + j] = D[171][j];} +D[172] = "����������������������������������������������������������������拯括拾拴挑挂政故斫施既春昭映昧是星昨昱昤曷柿染柱柔某柬架枯柵柩柯柄柑枴柚查枸柏柞柳枰柙柢柝柒歪殃殆段毒毗氟泉洋洲洪流津洌洱洞洗����������������������������������活洽派洶洛泵洹洧洸洩洮洵洎洫炫為炳炬炯炭炸炮炤爰牲牯牴狩狠狡玷珊玻玲珍珀玳甚甭畏界畎畋疫疤疥疢疣癸皆皇皈盈盆盃盅省盹相眉看盾盼眇矜砂研砌砍祆祉祈祇禹禺科秒秋穿突竿竽籽紂紅紀紉紇約紆缸美羿耄�".split(""); +for(j = 0; j != D[172].length; ++j) if(D[172][j].charCodeAt(0) !== 0xFFFD) { e[D[172][j]] = 44032 + j; d[44032 + j] = D[172][j];} +D[173] = "����������������������������������������������������������������耐耍耑耶胖胥胚胃胄背胡胛胎胞胤胝致舢苧范茅苣苛苦茄若茂茉苒苗英茁苜苔苑苞苓苟苯茆虐虹虻虺衍衫要觔計訂訃貞負赴赳趴軍軌述迦迢迪迥����������������������������������迭迫迤迨郊郎郁郃酋酊重閂限陋陌降面革韋韭音頁風飛食首香乘亳倌倍倣俯倦倥俸倩倖倆值借倚倒們俺倀倔倨俱倡個候倘俳修倭倪俾倫倉兼冤冥冢凍凌准凋剖剜剔剛剝匪卿原厝叟哨唐唁唷哼哥哲唆哺唔哩哭員唉哮哪�".split(""); +for(j = 0; j != D[173].length; ++j) if(D[173][j].charCodeAt(0) !== 0xFFFD) { e[D[173][j]] = 44288 + j; d[44288 + j] = D[173][j];} +D[174] = "����������������������������������������������������������������哦唧唇哽唏圃圄埂埔埋埃堉夏套奘奚娑娘娜娟娛娓姬娠娣娩娥娌娉孫屘宰害家宴宮宵容宸射屑展屐峭峽峻峪峨峰島崁峴差席師庫庭座弱徒徑徐恙����������������������������������恣恥恐恕恭恩息悄悟悚悍悔悌悅悖扇拳挈拿捎挾振捕捂捆捏捉挺捐挽挪挫挨捍捌效敉料旁旅時晉晏晃晒晌晅晁書朔朕朗校核案框桓根桂桔栩梳栗桌桑栽柴桐桀格桃株桅栓栘桁殊殉殷氣氧氨氦氤泰浪涕消涇浦浸海浙涓�".split(""); +for(j = 0; j != D[174].length; ++j) if(D[174][j].charCodeAt(0) !== 0xFFFD) { e[D[174][j]] = 44544 + j; d[44544 + j] = D[174][j];} +D[175] = "����������������������������������������������������������������浬涉浮浚浴浩涌涊浹涅浥涔烊烘烤烙烈烏爹特狼狹狽狸狷玆班琉珮珠珪珞畔畝畜畚留疾病症疲疳疽疼疹痂疸皋皰益盍盎眩真眠眨矩砰砧砸砝破砷����������������������������������砥砭砠砟砲祕祐祠祟祖神祝祗祚秤秣秧租秦秩秘窄窈站笆笑粉紡紗紋紊素索純紐紕級紜納紙紛缺罟羔翅翁耆耘耕耙耗耽耿胱脂胰脅胭胴脆胸胳脈能脊胼胯臭臬舀舐航舫舨般芻茫荒荔荊茸荐草茵茴荏茲茹茶茗荀茱茨荃�".split(""); +for(j = 0; j != D[175].length; ++j) if(D[175][j].charCodeAt(0) !== 0xFFFD) { e[D[175][j]] = 44800 + j; d[44800 + j] = D[175][j];} +D[176] = "����������������������������������������������������������������虔蚊蚪蚓蚤蚩蚌蚣蚜衰衷袁袂衽衹記訐討訌訕訊託訓訖訏訑豈豺豹財貢起躬軒軔軏辱送逆迷退迺迴逃追逅迸邕郡郝郢酒配酌釘針釗釜釙閃院陣陡����������������������������������陛陝除陘陞隻飢馬骨高鬥鬲鬼乾偺偽停假偃偌做偉健偶偎偕偵側偷偏倏偯偭兜冕凰剪副勒務勘動匐匏匙匿區匾參曼商啪啦啄啞啡啃啊唱啖問啕唯啤唸售啜唬啣唳啁啗圈國圉域堅堊堆埠埤基堂堵執培夠奢娶婁婉婦婪婀�".split(""); +for(j = 0; j != D[176].length; ++j) if(D[176][j].charCodeAt(0) !== 0xFFFD) { e[D[176][j]] = 45056 + j; d[45056 + j] = D[176][j];} +D[177] = "����������������������������������������������������������������娼婢婚婆婊孰寇寅寄寂宿密尉專將屠屜屝崇崆崎崛崖崢崑崩崔崙崤崧崗巢常帶帳帷康庸庶庵庾張強彗彬彩彫得徙從徘御徠徜恿患悉悠您惋悴惦悽����������������������������������情悻悵惜悼惘惕惆惟悸惚惇戚戛扈掠控捲掖探接捷捧掘措捱掩掉掃掛捫推掄授掙採掬排掏掀捻捩捨捺敝敖救教敗啟敏敘敕敔斜斛斬族旋旌旎晝晚晤晨晦晞曹勗望梁梯梢梓梵桿桶梱梧梗械梃棄梭梆梅梔條梨梟梡梂欲殺�".split(""); +for(j = 0; j != D[177].length; ++j) if(D[177][j].charCodeAt(0) !== 0xFFFD) { e[D[177][j]] = 45312 + j; d[45312 + j] = D[177][j];} +D[178] = "����������������������������������������������������������������毫毬氫涎涼淳淙液淡淌淤添淺清淇淋涯淑涮淞淹涸混淵淅淒渚涵淚淫淘淪深淮淨淆淄涪淬涿淦烹焉焊烽烯爽牽犁猜猛猖猓猙率琅琊球理現琍瓠瓶����������������������������������瓷甜產略畦畢異疏痔痕疵痊痍皎盔盒盛眷眾眼眶眸眺硫硃硎祥票祭移窒窕笠笨笛第符笙笞笮粒粗粕絆絃統紮紹紼絀細紳組累終紲紱缽羞羚翌翎習耜聊聆脯脖脣脫脩脰脤舂舵舷舶船莎莞莘荸莢莖莽莫莒莊莓莉莠荷荻荼�".split(""); +for(j = 0; j != D[178].length; ++j) if(D[178][j].charCodeAt(0) !== 0xFFFD) { e[D[178][j]] = 45568 + j; d[45568 + j] = D[178][j];} +D[179] = "����������������������������������������������������������������莆莧處彪蛇蛀蚶蛄蚵蛆蛋蚱蚯蛉術袞袈被袒袖袍袋覓規訪訝訣訥許設訟訛訢豉豚販責貫貨貪貧赧赦趾趺軛軟這逍通逗連速逝逐逕逞造透逢逖逛途����������������������������������部郭都酗野釵釦釣釧釭釩閉陪陵陳陸陰陴陶陷陬雀雪雩章竟頂頃魚鳥鹵鹿麥麻傢傍傅備傑傀傖傘傚最凱割剴創剩勞勝勛博厥啻喀喧啼喊喝喘喂喜喪喔喇喋喃喳單喟唾喲喚喻喬喱啾喉喫喙圍堯堪場堤堰報堡堝堠壹壺奠�".split(""); +for(j = 0; j != D[179].length; ++j) if(D[179][j].charCodeAt(0) !== 0xFFFD) { e[D[179][j]] = 45824 + j; d[45824 + j] = D[179][j];} +D[180] = "����������������������������������������������������������������婷媚婿媒媛媧孳孱寒富寓寐尊尋就嵌嵐崴嵇巽幅帽幀幃幾廊廁廂廄弼彭復循徨惑惡悲悶惠愜愣惺愕惰惻惴慨惱愎惶愉愀愒戟扉掣掌描揀揩揉揆揍����������������������������������插揣提握揖揭揮捶援揪換摒揚揹敞敦敢散斑斐斯普晰晴晶景暑智晾晷曾替期朝棺棕棠棘棗椅棟棵森棧棹棒棲棣棋棍植椒椎棉棚楮棻款欺欽殘殖殼毯氮氯氬港游湔渡渲湧湊渠渥渣減湛湘渤湖湮渭渦湯渴湍渺測湃渝渾滋�".split(""); +for(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];} +D[181] = "����������������������������������������������������������������溉渙湎湣湄湲湩湟焙焚焦焰無然煮焜牌犄犀猶猥猴猩琺琪琳琢琥琵琶琴琯琛琦琨甥甦畫番痢痛痣痙痘痞痠登發皖皓皴盜睏短硝硬硯稍稈程稅稀窘����������������������������������窗窖童竣等策筆筐筒答筍筋筏筑粟粥絞結絨絕紫絮絲絡給絢絰絳善翔翕耋聒肅腕腔腋腑腎脹腆脾腌腓腴舒舜菩萃菸萍菠菅萋菁華菱菴著萊菰萌菌菽菲菊萸萎萄菜萇菔菟虛蛟蛙蛭蛔蛛蛤蛐蛞街裁裂袱覃視註詠評詞証詁�".split(""); +for(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];} +D[182] = "����������������������������������������������������������������詔詛詐詆訴診訶詖象貂貯貼貳貽賁費賀貴買貶貿貸越超趁跎距跋跚跑跌跛跆軻軸軼辜逮逵週逸進逶鄂郵鄉郾酣酥量鈔鈕鈣鈉鈞鈍鈐鈇鈑閔閏開閑����������������������������������間閒閎隊階隋陽隅隆隍陲隄雁雅雄集雇雯雲韌項順須飧飪飯飩飲飭馮馭黃黍黑亂傭債傲傳僅傾催傷傻傯僇剿剷剽募勦勤勢勣匯嗟嗨嗓嗦嗎嗜嗇嗑嗣嗤嗯嗚嗡嗅嗆嗥嗉園圓塞塑塘塗塚塔填塌塭塊塢塒塋奧嫁嫉嫌媾媽媼�".split(""); +for(j = 0; j != D[182].length; ++j) if(D[182][j].charCodeAt(0) !== 0xFFFD) { e[D[182][j]] = 46592 + j; d[46592 + j] = D[182][j];} +D[183] = "����������������������������������������������������������������媳嫂媲嵩嵯幌幹廉廈弒彙徬微愚意慈感想愛惹愁愈慎慌慄慍愾愴愧愍愆愷戡戢搓搾搞搪搭搽搬搏搜搔損搶搖搗搆敬斟新暗暉暇暈暖暄暘暍會榔業����������������������������������楚楷楠楔極椰概楊楨楫楞楓楹榆楝楣楛歇歲毀殿毓毽溢溯滓溶滂源溝滇滅溥溘溼溺溫滑準溜滄滔溪溧溴煎煙煩煤煉照煜煬煦煌煥煞煆煨煖爺牒猷獅猿猾瑯瑚瑕瑟瑞瑁琿瑙瑛瑜當畸瘀痰瘁痲痱痺痿痴痳盞盟睛睫睦睞督�".split(""); +for(j = 0; j != D[183].length; ++j) if(D[183][j].charCodeAt(0) !== 0xFFFD) { e[D[183][j]] = 46848 + j; d[46848 + j] = D[183][j];} +D[184] = "����������������������������������������������������������������睹睪睬睜睥睨睢矮碎碰碗碘碌碉硼碑碓硿祺祿禁萬禽稜稚稠稔稟稞窟窠筷節筠筮筧粱粳粵經絹綑綁綏絛置罩罪署義羨群聖聘肆肄腱腰腸腥腮腳腫����������������������������������腹腺腦舅艇蒂葷落萱葵葦葫葉葬葛萼萵葡董葩葭葆虞虜號蛹蜓蜈蜇蜀蛾蛻蜂蜃蜆蜊衙裟裔裙補裘裝裡裊裕裒覜解詫該詳試詩詰誇詼詣誠話誅詭詢詮詬詹詻訾詨豢貊貉賊資賈賄貲賃賂賅跡跟跨路跳跺跪跤跦躲較載軾輊�".split(""); +for(j = 0; j != D[184].length; ++j) if(D[184][j].charCodeAt(0) !== 0xFFFD) { e[D[184][j]] = 47104 + j; d[47104 + j] = D[184][j];} +D[185] = "����������������������������������������������������������������辟農運遊道遂達逼違遐遇遏過遍遑逾遁鄒鄗酬酪酩釉鈷鉗鈸鈽鉀鈾鉛鉋鉤鉑鈴鉉鉍鉅鈹鈿鉚閘隘隔隕雍雋雉雊雷電雹零靖靴靶預頑頓頊頒頌飼飴����������������������������������飽飾馳馱馴髡鳩麂鼎鼓鼠僧僮僥僖僭僚僕像僑僱僎僩兢凳劃劂匱厭嗾嘀嘛嘗嗽嘔嘆嘉嘍嘎嗷嘖嘟嘈嘐嗶團圖塵塾境墓墊塹墅塽壽夥夢夤奪奩嫡嫦嫩嫗嫖嫘嫣孵寞寧寡寥實寨寢寤察對屢嶄嶇幛幣幕幗幔廓廖弊彆彰徹慇�".split(""); +for(j = 0; j != D[185].length; ++j) if(D[185][j].charCodeAt(0) !== 0xFFFD) { e[D[185][j]] = 47360 + j; d[47360 + j] = D[185][j];} +D[186] = "����������������������������������������������������������������愿態慷慢慣慟慚慘慵截撇摘摔撤摸摟摺摑摧搴摭摻敲斡旗旖暢暨暝榜榨榕槁榮槓構榛榷榻榫榴槐槍榭槌榦槃榣歉歌氳漳演滾漓滴漩漾漠漬漏漂漢����������������������������������滿滯漆漱漸漲漣漕漫漯澈漪滬漁滲滌滷熔熙煽熊熄熒爾犒犖獄獐瑤瑣瑪瑰瑭甄疑瘧瘍瘋瘉瘓盡監瞄睽睿睡磁碟碧碳碩碣禎福禍種稱窪窩竭端管箕箋筵算箝箔箏箸箇箄粹粽精綻綰綜綽綾綠緊綴網綱綺綢綿綵綸維緒緇綬�".split(""); +for(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];} +D[187] = "����������������������������������������������������������������罰翠翡翟聞聚肇腐膀膏膈膊腿膂臧臺與舔舞艋蓉蒿蓆蓄蒙蒞蒲蒜蓋蒸蓀蓓蒐蒼蓑蓊蜿蜜蜻蜢蜥蜴蜘蝕蜷蜩裳褂裴裹裸製裨褚裯誦誌語誣認誡誓誤����������������������������������說誥誨誘誑誚誧豪貍貌賓賑賒赫趙趕跼輔輒輕輓辣遠遘遜遣遙遞遢遝遛鄙鄘鄞酵酸酷酴鉸銀銅銘銖鉻銓銜銨鉼銑閡閨閩閣閥閤隙障際雌雒需靼鞅韶頗領颯颱餃餅餌餉駁骯骰髦魁魂鳴鳶鳳麼鼻齊億儀僻僵價儂儈儉儅凜�".split(""); +for(j = 0; j != D[187].length; ++j) if(D[187][j].charCodeAt(0) !== 0xFFFD) { e[D[187][j]] = 47872 + j; d[47872 + j] = D[187][j];} +D[188] = "����������������������������������������������������������������劇劈劉劍劊勰厲嘮嘻嘹嘲嘿嘴嘩噓噎噗噴嘶嘯嘰墀墟增墳墜墮墩墦奭嬉嫻嬋嫵嬌嬈寮寬審寫層履嶝嶔幢幟幡廢廚廟廝廣廠彈影德徵慶慧慮慝慕憂����������������������������������慼慰慫慾憧憐憫憎憬憚憤憔憮戮摩摯摹撞撲撈撐撰撥撓撕撩撒撮播撫撚撬撙撢撳敵敷數暮暫暴暱樣樟槨樁樞標槽模樓樊槳樂樅槭樑歐歎殤毅毆漿潼澄潑潦潔澆潭潛潸潮澎潺潰潤澗潘滕潯潠潟熟熬熱熨牖犛獎獗瑩璋璃�".split(""); +for(j = 0; j != D[188].length; ++j) if(D[188][j].charCodeAt(0) !== 0xFFFD) { e[D[188][j]] = 48128 + j; d[48128 + j] = D[188][j];} +D[189] = "����������������������������������������������������������������瑾璀畿瘠瘩瘟瘤瘦瘡瘢皚皺盤瞎瞇瞌瞑瞋磋磅確磊碾磕碼磐稿稼穀稽稷稻窯窮箭箱範箴篆篇篁箠篌糊締練緯緻緘緬緝編緣線緞緩綞緙緲緹罵罷羯����������������������������������翩耦膛膜膝膠膚膘蔗蔽蔚蓮蔬蔭蔓蔑蔣蔡蔔蓬蔥蓿蔆螂蝴蝶蝠蝦蝸蝨蝙蝗蝌蝓衛衝褐複褒褓褕褊誼諒談諄誕請諸課諉諂調誰論諍誶誹諛豌豎豬賠賞賦賤賬賭賢賣賜質賡赭趟趣踫踐踝踢踏踩踟踡踞躺輝輛輟輩輦輪輜輞�".split(""); +for(j = 0; j != D[189].length; ++j) if(D[189][j].charCodeAt(0) !== 0xFFFD) { e[D[189][j]] = 48384 + j; d[48384 + j] = D[189][j];} +D[190] = "����������������������������������������������������������������輥適遮遨遭遷鄰鄭鄧鄱醇醉醋醃鋅銻銷鋪銬鋤鋁銳銼鋒鋇鋰銲閭閱霄霆震霉靠鞍鞋鞏頡頫頜颳養餓餒餘駝駐駟駛駑駕駒駙骷髮髯鬧魅魄魷魯鴆鴉����������������������������������鴃麩麾黎墨齒儒儘儔儐儕冀冪凝劑劓勳噙噫噹噩噤噸噪器噥噱噯噬噢噶壁墾壇壅奮嬝嬴學寰導彊憲憑憩憊懍憶憾懊懈戰擅擁擋撻撼據擄擇擂操撿擒擔撾整曆曉暹曄曇暸樽樸樺橙橫橘樹橄橢橡橋橇樵機橈歙歷氅濂澱澡�".split(""); +for(j = 0; j != D[190].length; ++j) if(D[190][j].charCodeAt(0) !== 0xFFFD) { e[D[190][j]] = 48640 + j; d[48640 + j] = D[190][j];} +D[191] = "����������������������������������������������������������������濃澤濁澧澳激澹澶澦澠澴熾燉燐燒燈燕熹燎燙燜燃燄獨璜璣璘璟璞瓢甌甍瘴瘸瘺盧盥瞠瞞瞟瞥磨磚磬磧禦積穎穆穌穋窺篙簑築篤篛篡篩篦糕糖縊����������������������������������縑縈縛縣縞縝縉縐罹羲翰翱翮耨膳膩膨臻興艘艙蕊蕙蕈蕨蕩蕃蕉蕭蕪蕞螃螟螞螢融衡褪褲褥褫褡親覦諦諺諫諱謀諜諧諮諾謁謂諷諭諳諶諼豫豭貓賴蹄踱踴蹂踹踵輻輯輸輳辨辦遵遴選遲遼遺鄴醒錠錶鋸錳錯錢鋼錫錄錚�".split(""); +for(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];} +D[192] = "����������������������������������������������������������������錐錦錡錕錮錙閻隧隨險雕霎霑霖霍霓霏靛靜靦鞘頰頸頻頷頭頹頤餐館餞餛餡餚駭駢駱骸骼髻髭鬨鮑鴕鴣鴦鴨鴒鴛默黔龍龜優償儡儲勵嚎嚀嚐嚅嚇����������������������������������嚏壕壓壑壎嬰嬪嬤孺尷屨嶼嶺嶽嶸幫彌徽應懂懇懦懋戲戴擎擊擘擠擰擦擬擱擢擭斂斃曙曖檀檔檄檢檜櫛檣橾檗檐檠歜殮毚氈濘濱濟濠濛濤濫濯澀濬濡濩濕濮濰燧營燮燦燥燭燬燴燠爵牆獰獲璩環璦璨癆療癌盪瞳瞪瞰瞬�".split(""); +for(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];} +D[193] = "����������������������������������������������������������������瞧瞭矯磷磺磴磯礁禧禪穗窿簇簍篾篷簌篠糠糜糞糢糟糙糝縮績繆縷縲繃縫總縱繅繁縴縹繈縵縿縯罄翳翼聱聲聰聯聳臆臃膺臂臀膿膽臉膾臨舉艱薪����������������������������������薄蕾薜薑薔薯薛薇薨薊虧蟀蟑螳蟒蟆螫螻螺蟈蟋褻褶襄褸褽覬謎謗謙講謊謠謝謄謐豁谿豳賺賽購賸賻趨蹉蹋蹈蹊轄輾轂轅輿避遽還邁邂邀鄹醣醞醜鍍鎂錨鍵鍊鍥鍋錘鍾鍬鍛鍰鍚鍔闊闋闌闈闆隱隸雖霜霞鞠韓顆颶餵騁�".split(""); +for(j = 0; j != D[193].length; ++j) if(D[193][j].charCodeAt(0) !== 0xFFFD) { e[D[193][j]] = 49408 + j; d[49408 + j] = D[193][j];} +D[194] = "����������������������������������������������������������������駿鮮鮫鮪鮭鴻鴿麋黏點黜黝黛鼾齋叢嚕嚮壙壘嬸彝懣戳擴擲擾攆擺擻擷斷曜朦檳檬櫃檻檸櫂檮檯歟歸殯瀉瀋濾瀆濺瀑瀏燻燼燾燸獷獵璧璿甕癖癘����������������������������������癒瞽瞿瞻瞼礎禮穡穢穠竄竅簫簧簪簞簣簡糧織繕繞繚繡繒繙罈翹翻職聶臍臏舊藏薩藍藐藉薰薺薹薦蟯蟬蟲蟠覆覲觴謨謹謬謫豐贅蹙蹣蹦蹤蹟蹕軀轉轍邇邃邈醫醬釐鎔鎊鎖鎢鎳鎮鎬鎰鎘鎚鎗闔闖闐闕離雜雙雛雞霤鞣鞦�".split(""); +for(j = 0; j != D[194].length; ++j) if(D[194][j].charCodeAt(0) !== 0xFFFD) { e[D[194][j]] = 49664 + j; d[49664 + j] = D[194][j];} +D[195] = "����������������������������������������������������������������鞭韹額顏題顎顓颺餾餿餽餮馥騎髁鬃鬆魏魎魍鯊鯉鯽鯈鯀鵑鵝鵠黠鼕鼬儳嚥壞壟壢寵龐廬懲懷懶懵攀攏曠曝櫥櫝櫚櫓瀛瀟瀨瀚瀝瀕瀘爆爍牘犢獸����������������������������������獺璽瓊瓣疇疆癟癡矇礙禱穫穩簾簿簸簽簷籀繫繭繹繩繪羅繳羶羹羸臘藩藝藪藕藤藥藷蟻蠅蠍蟹蟾襠襟襖襞譁譜識證譚譎譏譆譙贈贊蹼蹲躇蹶蹬蹺蹴轔轎辭邊邋醱醮鏡鏑鏟鏃鏈鏜鏝鏖鏢鏍鏘鏤鏗鏨關隴難霪霧靡韜韻類�".split(""); +for(j = 0; j != D[195].length; ++j) if(D[195][j].charCodeAt(0) !== 0xFFFD) { e[D[195][j]] = 49920 + j; d[49920 + j] = D[195][j];} +D[196] = "����������������������������������������������������������������願顛颼饅饉騖騙鬍鯨鯧鯖鯛鶉鵡鵲鵪鵬麒麗麓麴勸嚨嚷嚶嚴嚼壤孀孃孽寶巉懸懺攘攔攙曦朧櫬瀾瀰瀲爐獻瓏癢癥礦礪礬礫竇競籌籃籍糯糰辮繽繼����������������������������������纂罌耀臚艦藻藹蘑藺蘆蘋蘇蘊蠔蠕襤覺觸議譬警譯譟譫贏贍躉躁躅躂醴釋鐘鐃鏽闡霰飄饒饑馨騫騰騷騵鰓鰍鹹麵黨鼯齟齣齡儷儸囁囀囂夔屬巍懼懾攝攜斕曩櫻欄櫺殲灌爛犧瓖瓔癩矓籐纏續羼蘗蘭蘚蠣蠢蠡蠟襪襬覽譴�".split(""); +for(j = 0; j != D[196].length; ++j) if(D[196][j].charCodeAt(0) !== 0xFFFD) { e[D[196][j]] = 50176 + j; d[50176 + j] = D[196][j];} +D[197] = "����������������������������������������������������������������護譽贓躊躍躋轟辯醺鐮鐳鐵鐺鐸鐲鐫闢霸霹露響顧顥饗驅驃驀騾髏魔魑鰭鰥鶯鶴鷂鶸麝黯鼙齜齦齧儼儻囈囊囉孿巔巒彎懿攤權歡灑灘玀瓤疊癮癬����������������������������������禳籠籟聾聽臟襲襯觼讀贖贗躑躓轡酈鑄鑑鑒霽霾韃韁顫饕驕驍髒鬚鱉鰱鰾鰻鷓鷗鼴齬齪龔囌巖戀攣攫攪曬欐瓚竊籤籣籥纓纖纔臢蘸蘿蠱變邐邏鑣鑠鑤靨顯饜驚驛驗髓體髑鱔鱗鱖鷥麟黴囑壩攬灞癱癲矗罐羈蠶蠹衢讓讒�".split(""); +for(j = 0; j != D[197].length; ++j) if(D[197][j].charCodeAt(0) !== 0xFFFD) { e[D[197][j]] = 50432 + j; d[50432 + j] = D[197][j];} +D[198] = "����������������������������������������������������������������讖艷贛釀鑪靂靈靄韆顰驟鬢魘鱟鷹鷺鹼鹽鼇齷齲廳欖灣籬籮蠻觀躡釁鑲鑰顱饞髖鬣黌灤矚讚鑷韉驢驥纜讜躪釅鑽鑾鑼鱷鱸黷豔鑿鸚爨驪鬱鸛鸞籲���������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[198].length; ++j) if(D[198][j].charCodeAt(0) !== 0xFFFD) { e[D[198][j]] = 50688 + j; d[50688 + j] = D[198][j];} +D[201] = "����������������������������������������������������������������乂乜凵匚厂万丌乇亍囗兀屮彳丏冇与丮亓仂仉仈冘勼卬厹圠夃夬尐巿旡殳毌气爿丱丼仨仜仩仡仝仚刌匜卌圢圣夗夯宁宄尒尻屴屳帄庀庂忉戉扐氕����������������������������������氶汃氿氻犮犰玊禸肊阞伎优伬仵伔仱伀价伈伝伂伅伢伓伄仴伒冱刓刉刐劦匢匟卍厊吇囡囟圮圪圴夼妀奼妅奻奾奷奿孖尕尥屼屺屻屾巟幵庄异弚彴忕忔忏扜扞扤扡扦扢扙扠扚扥旯旮朾朹朸朻机朿朼朳氘汆汒汜汏汊汔汋�".split(""); +for(j = 0; j != D[201].length; ++j) if(D[201][j].charCodeAt(0) !== 0xFFFD) { e[D[201][j]] = 51456 + j; d[51456 + j] = D[201][j];} +D[202] = "����������������������������������������������������������������汌灱牞犴犵玎甪癿穵网艸艼芀艽艿虍襾邙邗邘邛邔阢阤阠阣佖伻佢佉体佤伾佧佒佟佁佘伭伳伿佡冏冹刜刞刡劭劮匉卣卲厎厏吰吷吪呔呅吙吜吥吘����������������������������������吽呏呁吨吤呇囮囧囥坁坅坌坉坋坒夆奀妦妘妠妗妎妢妐妏妧妡宎宒尨尪岍岏岈岋岉岒岊岆岓岕巠帊帎庋庉庌庈庍弅弝彸彶忒忑忐忭忨忮忳忡忤忣忺忯忷忻怀忴戺抃抌抎抏抔抇扱扻扺扰抁抈扷扽扲扴攷旰旴旳旲旵杅杇�".split(""); +for(j = 0; j != D[202].length; ++j) if(D[202][j].charCodeAt(0) !== 0xFFFD) { e[D[202][j]] = 51712 + j; d[51712 + j] = D[202][j];} +D[203] = "����������������������������������������������������������������杙杕杌杈杝杍杚杋毐氙氚汸汧汫沄沋沏汱汯汩沚汭沇沕沜汦汳汥汻沎灴灺牣犿犽狃狆狁犺狅玕玗玓玔玒町甹疔疕皁礽耴肕肙肐肒肜芐芏芅芎芑芓����������������������������������芊芃芄豸迉辿邟邡邥邞邧邠阰阨阯阭丳侘佼侅佽侀侇佶佴侉侄佷佌侗佪侚佹侁佸侐侜侔侞侒侂侕佫佮冞冼冾刵刲刳剆刱劼匊匋匼厒厔咇呿咁咑咂咈呫呺呾呥呬呴呦咍呯呡呠咘呣呧呤囷囹坯坲坭坫坱坰坶垀坵坻坳坴坢�".split(""); +for(j = 0; j != D[203].length; ++j) if(D[203][j].charCodeAt(0) !== 0xFFFD) { e[D[203][j]] = 51968 + j; d[51968 + j] = D[203][j];} +D[204] = "����������������������������������������������������������������坨坽夌奅妵妺姏姎妲姌姁妶妼姃姖妱妽姀姈妴姇孢孥宓宕屄屇岮岤岠岵岯岨岬岟岣岭岢岪岧岝岥岶岰岦帗帔帙弨弢弣弤彔徂彾彽忞忥怭怦怙怲怋����������������������������������怴怊怗怳怚怞怬怢怍怐怮怓怑怌怉怜戔戽抭抴拑抾抪抶拊抮抳抯抻抩抰抸攽斨斻昉旼昄昒昈旻昃昋昍昅旽昑昐曶朊枅杬枎枒杶杻枘枆构杴枍枌杺枟枑枙枃杽极杸杹枔欥殀歾毞氝沓泬泫泮泙沶泔沭泧沷泐泂沺泃泆泭泲�".split(""); +for(j = 0; j != D[204].length; ++j) if(D[204][j].charCodeAt(0) !== 0xFFFD) { e[D[204][j]] = 52224 + j; d[52224 + j] = D[204][j];} +D[205] = "����������������������������������������������������������������泒泝沴沊沝沀泞泀洰泍泇沰泹泏泩泑炔炘炅炓炆炄炑炖炂炚炃牪狖狋狘狉狜狒狔狚狌狑玤玡玭玦玢玠玬玝瓝瓨甿畀甾疌疘皯盳盱盰盵矸矼矹矻矺����������������������������������矷祂礿秅穸穻竻籵糽耵肏肮肣肸肵肭舠芠苀芫芚芘芛芵芧芮芼芞芺芴芨芡芩苂芤苃芶芢虰虯虭虮豖迒迋迓迍迖迕迗邲邴邯邳邰阹阽阼阺陃俍俅俓侲俉俋俁俔俜俙侻侳俛俇俖侺俀侹俬剄剉勀勂匽卼厗厖厙厘咺咡咭咥哏�".split(""); +for(j = 0; j != D[205].length; ++j) if(D[205][j].charCodeAt(0) !== 0xFFFD) { e[D[205][j]] = 52480 + j; d[52480 + j] = D[205][j];} +D[206] = "����������������������������������������������������������������哃茍咷咮哖咶哅哆咠呰咼咢咾呲哞咰垵垞垟垤垌垗垝垛垔垘垏垙垥垚垕壴复奓姡姞姮娀姱姝姺姽姼姶姤姲姷姛姩姳姵姠姾姴姭宨屌峐峘峌峗峋峛����������������������������������峞峚峉峇峊峖峓峔峏峈峆峎峟峸巹帡帢帣帠帤庰庤庢庛庣庥弇弮彖徆怷怹恔恲恞恅恓恇恉恛恌恀恂恟怤恄恘恦恮扂扃拏挍挋拵挎挃拫拹挏挌拸拶挀挓挔拺挕拻拰敁敃斪斿昶昡昲昵昜昦昢昳昫昺昝昴昹昮朏朐柁柲柈枺�".split(""); +for(j = 0; j != D[206].length; ++j) if(D[206][j].charCodeAt(0) !== 0xFFFD) { e[D[206][j]] = 52736 + j; d[52736 + j] = D[206][j];} +D[207] = "����������������������������������������������������������������柜枻柸柘柀枷柅柫柤柟枵柍枳柷柶柮柣柂枹柎柧柰枲柼柆柭柌枮柦柛柺柉柊柃柪柋欨殂殄殶毖毘毠氠氡洨洴洭洟洼洿洒洊泚洳洄洙洺洚洑洀洝浂����������������������������������洁洘洷洃洏浀洇洠洬洈洢洉洐炷炟炾炱炰炡炴炵炩牁牉牊牬牰牳牮狊狤狨狫狟狪狦狣玅珌珂珈珅玹玶玵玴珫玿珇玾珃珆玸珋瓬瓮甮畇畈疧疪癹盄眈眃眄眅眊盷盻盺矧矨砆砑砒砅砐砏砎砉砃砓祊祌祋祅祄秕种秏秖秎窀�".split(""); +for(j = 0; j != D[207].length; ++j) if(D[207][j].charCodeAt(0) !== 0xFFFD) { e[D[207][j]] = 52992 + j; d[52992 + j] = D[207][j];} +D[208] = "����������������������������������������������������������������穾竑笀笁籺籸籹籿粀粁紃紈紁罘羑羍羾耇耎耏耔耷胘胇胠胑胈胂胐胅胣胙胜胊胕胉胏胗胦胍臿舡芔苙苾苹茇苨茀苕茺苫苖苴苬苡苲苵茌苻苶苰苪����������������������������������苤苠苺苳苭虷虴虼虳衁衎衧衪衩觓訄訇赲迣迡迮迠郱邽邿郕郅邾郇郋郈釔釓陔陏陑陓陊陎倞倅倇倓倢倰倛俵俴倳倷倬俶俷倗倜倠倧倵倯倱倎党冔冓凊凄凅凈凎剡剚剒剞剟剕剢勍匎厞唦哢唗唒哧哳哤唚哿唄唈哫唑唅哱�".split(""); +for(j = 0; j != D[208].length; ++j) if(D[208][j].charCodeAt(0) !== 0xFFFD) { e[D[208][j]] = 53248 + j; d[53248 + j] = D[208][j];} +D[209] = "����������������������������������������������������������������唊哻哷哸哠唎唃唋圁圂埌堲埕埒垺埆垽垼垸垶垿埇埐垹埁夎奊娙娖娭娮娕娏娗娊娞娳孬宧宭宬尃屖屔峬峿峮峱峷崀峹帩帨庨庮庪庬弳弰彧恝恚恧����������������������������������恁悢悈悀悒悁悝悃悕悛悗悇悜悎戙扆拲挐捖挬捄捅挶捃揤挹捋捊挼挩捁挴捘捔捙挭捇挳捚捑挸捗捀捈敊敆旆旃旄旂晊晟晇晑朒朓栟栚桉栲栳栻桋桏栖栱栜栵栫栭栯桎桄栴栝栒栔栦栨栮桍栺栥栠欬欯欭欱欴歭肂殈毦毤�".split(""); +for(j = 0; j != D[209].length; ++j) if(D[209][j].charCodeAt(0) !== 0xFFFD) { e[D[209][j]] = 53504 + j; d[53504 + j] = D[209][j];} +D[210] = "����������������������������������������������������������������毨毣毢毧氥浺浣浤浶洍浡涒浘浢浭浯涑涍淯浿涆浞浧浠涗浰浼浟涂涘洯浨涋浾涀涄洖涃浻浽浵涐烜烓烑烝烋缹烢烗烒烞烠烔烍烅烆烇烚烎烡牂牸����������������������������������牷牶猀狺狴狾狶狳狻猁珓珙珥珖玼珧珣珩珜珒珛珔珝珚珗珘珨瓞瓟瓴瓵甡畛畟疰痁疻痄痀疿疶疺皊盉眝眛眐眓眒眣眑眕眙眚眢眧砣砬砢砵砯砨砮砫砡砩砳砪砱祔祛祏祜祓祒祑秫秬秠秮秭秪秜秞秝窆窉窅窋窌窊窇竘笐�".split(""); +for(j = 0; j != D[210].length; ++j) if(D[210][j].charCodeAt(0) !== 0xFFFD) { e[D[210][j]] = 53760 + j; d[53760 + j] = D[210][j];} +D[211] = "����������������������������������������������������������������笄笓笅笏笈笊笎笉笒粄粑粊粌粈粍粅紞紝紑紎紘紖紓紟紒紏紌罜罡罞罠罝罛羖羒翃翂翀耖耾耹胺胲胹胵脁胻脀舁舯舥茳茭荄茙荑茥荖茿荁茦茜茢����������������������������������荂荎茛茪茈茼荍茖茤茠茷茯茩荇荅荌荓茞茬荋茧荈虓虒蚢蚨蚖蚍蚑蚞蚇蚗蚆蚋蚚蚅蚥蚙蚡蚧蚕蚘蚎蚝蚐蚔衃衄衭衵衶衲袀衱衿衯袃衾衴衼訒豇豗豻貤貣赶赸趵趷趶軑軓迾迵适迿迻逄迼迶郖郠郙郚郣郟郥郘郛郗郜郤酐�".split(""); +for(j = 0; j != D[211].length; ++j) if(D[211][j].charCodeAt(0) !== 0xFFFD) { e[D[211][j]] = 54016 + j; d[54016 + j] = D[211][j];} +D[212] = "����������������������������������������������������������������酎酏釕釢釚陜陟隼飣髟鬯乿偰偪偡偞偠偓偋偝偲偈偍偁偛偊偢倕偅偟偩偫偣偤偆偀偮偳偗偑凐剫剭剬剮勖勓匭厜啵啶唼啍啐唴唪啑啢唶唵唰啒啅����������������������������������唌唲啥啎唹啈唭唻啀啋圊圇埻堔埢埶埜埴堀埭埽堈埸堋埳埏堇埮埣埲埥埬埡堎埼堐埧堁堌埱埩埰堍堄奜婠婘婕婧婞娸娵婭婐婟婥婬婓婤婗婃婝婒婄婛婈媎娾婍娹婌婰婩婇婑婖婂婜孲孮寁寀屙崞崋崝崚崠崌崨崍崦崥崏�".split(""); +for(j = 0; j != D[212].length; ++j) if(D[212][j].charCodeAt(0) !== 0xFFFD) { e[D[212][j]] = 54272 + j; d[54272 + j] = D[212][j];} +D[213] = "����������������������������������������������������������������崰崒崣崟崮帾帴庱庴庹庲庳弶弸徛徖徟悊悐悆悾悰悺惓惔惏惤惙惝惈悱惛悷惊悿惃惍惀挲捥掊掂捽掽掞掭掝掗掫掎捯掇掐据掯捵掜捭掮捼掤挻掟����������������������������������捸掅掁掑掍捰敓旍晥晡晛晙晜晢朘桹梇梐梜桭桮梮梫楖桯梣梬梩桵桴梲梏桷梒桼桫桲梪梀桱桾梛梖梋梠梉梤桸桻梑梌梊桽欶欳欷欸殑殏殍殎殌氪淀涫涴涳湴涬淩淢涷淶淔渀淈淠淟淖涾淥淜淝淛淴淊涽淭淰涺淕淂淏淉�".split(""); +for(j = 0; j != D[213].length; ++j) if(D[213][j].charCodeAt(0) !== 0xFFFD) { e[D[213][j]] = 54528 + j; d[54528 + j] = D[213][j];} +D[214] = "����������������������������������������������������������������淐淲淓淽淗淍淣涻烺焍烷焗烴焌烰焄烳焐烼烿焆焓焀烸烶焋焂焎牾牻牼牿猝猗猇猑猘猊猈狿猏猞玈珶珸珵琄琁珽琇琀珺珼珿琌琋珴琈畤畣痎痒痏����������������������������������痋痌痑痐皏皉盓眹眯眭眱眲眴眳眽眥眻眵硈硒硉硍硊硌砦硅硐祤祧祩祪祣祫祡离秺秸秶秷窏窔窐笵筇笴笥笰笢笤笳笘笪笝笱笫笭笯笲笸笚笣粔粘粖粣紵紽紸紶紺絅紬紩絁絇紾紿絊紻紨罣羕羜羝羛翊翋翍翐翑翇翏翉耟�".split(""); +for(j = 0; j != D[214].length; ++j) if(D[214][j].charCodeAt(0) !== 0xFFFD) { e[D[214][j]] = 54784 + j; d[54784 + j] = D[214][j];} +D[215] = "����������������������������������������������������������������耞耛聇聃聈脘脥脙脛脭脟脬脞脡脕脧脝脢舑舸舳舺舴舲艴莐莣莨莍荺荳莤荴莏莁莕莙荵莔莩荽莃莌莝莛莪莋荾莥莯莈莗莰荿莦莇莮荶莚虙虖蚿蚷����������������������������������蛂蛁蛅蚺蚰蛈蚹蚳蚸蛌蚴蚻蚼蛃蚽蚾衒袉袕袨袢袪袚袑袡袟袘袧袙袛袗袤袬袌袓袎覂觖觙觕訰訧訬訞谹谻豜豝豽貥赽赻赹趼跂趹趿跁軘軞軝軜軗軠軡逤逋逑逜逌逡郯郪郰郴郲郳郔郫郬郩酖酘酚酓酕釬釴釱釳釸釤釹釪�".split(""); +for(j = 0; j != D[215].length; ++j) if(D[215][j].charCodeAt(0) !== 0xFFFD) { e[D[215][j]] = 55040 + j; d[55040 + j] = D[215][j];} +D[216] = "����������������������������������������������������������������釫釷釨釮镺閆閈陼陭陫陱陯隿靪頄飥馗傛傕傔傞傋傣傃傌傎傝偨傜傒傂傇兟凔匒匑厤厧喑喨喥喭啷噅喢喓喈喏喵喁喣喒喤啽喌喦啿喕喡喎圌堩堷����������������������������������堙堞堧堣堨埵塈堥堜堛堳堿堶堮堹堸堭堬堻奡媯媔媟婺媢媞婸媦婼媥媬媕媮娷媄媊媗媃媋媩婻婽媌媜媏媓媝寪寍寋寔寑寊寎尌尰崷嵃嵫嵁嵋崿崵嵑嵎嵕崳崺嵒崽崱嵙嵂崹嵉崸崼崲崶嵀嵅幄幁彘徦徥徫惉悹惌惢惎惄愔�".split(""); +for(j = 0; j != D[216].length; ++j) if(D[216][j].charCodeAt(0) !== 0xFFFD) { e[D[216][j]] = 55296 + j; d[55296 + j] = D[216][j];} +D[217] = "����������������������������������������������������������������惲愊愖愅惵愓惸惼惾惁愃愘愝愐惿愄愋扊掔掱掰揎揥揨揯揃撝揳揊揠揶揕揲揵摡揟掾揝揜揄揘揓揂揇揌揋揈揰揗揙攲敧敪敤敜敨敥斌斝斞斮旐旒����������������������������������晼晬晻暀晱晹晪晲朁椌棓椄棜椪棬棪棱椏棖棷棫棤棶椓椐棳棡椇棌椈楰梴椑棯棆椔棸棐棽棼棨椋椊椗棎棈棝棞棦棴棑椆棔棩椕椥棇欹欻欿欼殔殗殙殕殽毰毲毳氰淼湆湇渟湉溈渼渽湅湢渫渿湁湝湳渜渳湋湀湑渻渃渮湞�".split(""); +for(j = 0; j != D[217].length; ++j) if(D[217][j].charCodeAt(0) !== 0xFFFD) { e[D[217][j]] = 55552 + j; d[55552 + j] = D[217][j];} +D[218] = "����������������������������������������������������������������湨湜湡渱渨湠湱湫渹渢渰湓湥渧湸湤湷湕湹湒湦渵渶湚焠焞焯烻焮焱焣焥焢焲焟焨焺焛牋牚犈犉犆犅犋猒猋猰猢猱猳猧猲猭猦猣猵猌琮琬琰琫琖����������������������������������琚琡琭琱琤琣琝琩琠琲瓻甯畯畬痧痚痡痦痝痟痤痗皕皒盚睆睇睄睍睅睊睎睋睌矞矬硠硤硥硜硭硱硪确硰硩硨硞硢祴祳祲祰稂稊稃稌稄窙竦竤筊笻筄筈筌筎筀筘筅粢粞粨粡絘絯絣絓絖絧絪絏絭絜絫絒絔絩絑絟絎缾缿罥�".split(""); +for(j = 0; j != D[218].length; ++j) if(D[218][j].charCodeAt(0) !== 0xFFFD) { e[D[218][j]] = 55808 + j; d[55808 + j] = D[218][j];} +D[219] = "����������������������������������������������������������������罦羢羠羡翗聑聏聐胾胔腃腊腒腏腇脽腍脺臦臮臷臸臹舄舼舽舿艵茻菏菹萣菀菨萒菧菤菼菶萐菆菈菫菣莿萁菝菥菘菿菡菋菎菖菵菉萉萏菞萑萆菂菳����������������������������������菕菺菇菑菪萓菃菬菮菄菻菗菢萛菛菾蛘蛢蛦蛓蛣蛚蛪蛝蛫蛜蛬蛩蛗蛨蛑衈衖衕袺裗袹袸裀袾袶袼袷袽袲褁裉覕覘覗觝觚觛詎詍訹詙詀詗詘詄詅詒詈詑詊詌詏豟貁貀貺貾貰貹貵趄趀趉跘跓跍跇跖跜跏跕跙跈跗跅軯軷軺�".split(""); +for(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];} +D[220] = "����������������������������������������������������������������軹軦軮軥軵軧軨軶軫軱軬軴軩逭逴逯鄆鄬鄄郿郼鄈郹郻鄁鄀鄇鄅鄃酡酤酟酢酠鈁鈊鈥鈃鈚鈦鈏鈌鈀鈒釿釽鈆鈄鈧鈂鈜鈤鈙鈗鈅鈖镻閍閌閐隇陾隈����������������������������������隉隃隀雂雈雃雱雰靬靰靮頇颩飫鳦黹亃亄亶傽傿僆傮僄僊傴僈僂傰僁傺傱僋僉傶傸凗剺剸剻剼嗃嗛嗌嗐嗋嗊嗝嗀嗔嗄嗩喿嗒喍嗏嗕嗢嗖嗈嗲嗍嗙嗂圔塓塨塤塏塍塉塯塕塎塝塙塥塛堽塣塱壼嫇嫄嫋媺媸媱媵媰媿嫈媻嫆�".split(""); +for(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];} +D[221] = "����������������������������������������������������������������媷嫀嫊媴媶嫍媹媐寖寘寙尟尳嵱嵣嵊嵥嵲嵬嵞嵨嵧嵢巰幏幎幊幍幋廅廌廆廋廇彀徯徭惷慉慊愫慅愶愲愮慆愯慏愩慀戠酨戣戥戤揅揱揫搐搒搉搠搤����������������������������������搳摃搟搕搘搹搷搢搣搌搦搰搨摁搵搯搊搚摀搥搧搋揧搛搮搡搎敯斒旓暆暌暕暐暋暊暙暔晸朠楦楟椸楎楢楱椿楅楪椹楂楗楙楺楈楉椵楬椳椽楥棰楸椴楩楀楯楄楶楘楁楴楌椻楋椷楜楏楑椲楒椯楻椼歆歅歃歂歈歁殛嗀毻毼�".split(""); +for(j = 0; j != D[221].length; ++j) if(D[221][j].charCodeAt(0) !== 0xFFFD) { e[D[221][j]] = 56576 + j; d[56576 + j] = D[221][j];} +D[222] = "����������������������������������������������������������������毹毷毸溛滖滈溏滀溟溓溔溠溱溹滆滒溽滁溞滉溷溰滍溦滏溲溾滃滜滘溙溒溎溍溤溡溿溳滐滊溗溮溣煇煔煒煣煠煁煝煢煲煸煪煡煂煘煃煋煰煟煐煓����������������������������������煄煍煚牏犍犌犑犐犎猼獂猻猺獀獊獉瑄瑊瑋瑒瑑瑗瑀瑏瑐瑎瑂瑆瑍瑔瓡瓿瓾瓽甝畹畷榃痯瘏瘃痷痾痼痹痸瘐痻痶痭痵痽皙皵盝睕睟睠睒睖睚睩睧睔睙睭矠碇碚碔碏碄碕碅碆碡碃硹碙碀碖硻祼禂祽祹稑稘稙稒稗稕稢稓�".split(""); +for(j = 0; j != D[222].length; ++j) if(D[222][j].charCodeAt(0) !== 0xFFFD) { e[D[222][j]] = 56832 + j; d[56832 + j] = D[222][j];} +D[223] = "����������������������������������������������������������������稛稐窣窢窞竫筦筤筭筴筩筲筥筳筱筰筡筸筶筣粲粴粯綈綆綀綍絿綅絺綎絻綃絼綌綔綄絽綒罭罫罧罨罬羦羥羧翛翜耡腤腠腷腜腩腛腢腲朡腞腶腧腯����������������������������������腄腡舝艉艄艀艂艅蓱萿葖葶葹蒏蒍葥葑葀蒆葧萰葍葽葚葙葴葳葝蔇葞萷萺萴葺葃葸萲葅萩菙葋萯葂萭葟葰萹葎葌葒葯蓅蒎萻葇萶萳葨葾葄萫葠葔葮葐蜋蜄蛷蜌蛺蛖蛵蝍蛸蜎蜉蜁蛶蜍蜅裖裋裍裎裞裛裚裌裐覅覛觟觥觤�".split(""); +for(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];} +D[224] = "����������������������������������������������������������������觡觠觢觜触詶誆詿詡訿詷誂誄詵誃誁詴詺谼豋豊豥豤豦貆貄貅賌赨赩趑趌趎趏趍趓趔趐趒跰跠跬跱跮跐跩跣跢跧跲跫跴輆軿輁輀輅輇輈輂輋遒逿����������������������������������遄遉逽鄐鄍鄏鄑鄖鄔鄋鄎酮酯鉈鉒鈰鈺鉦鈳鉥鉞銃鈮鉊鉆鉭鉬鉏鉠鉧鉯鈶鉡鉰鈱鉔鉣鉐鉲鉎鉓鉌鉖鈲閟閜閞閛隒隓隑隗雎雺雽雸雵靳靷靸靲頏頍頎颬飶飹馯馲馰馵骭骫魛鳪鳭鳧麀黽僦僔僗僨僳僛僪僝僤僓僬僰僯僣僠�".split(""); +for(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];} +D[225] = "����������������������������������������������������������������凘劀劁勩勫匰厬嘧嘕嘌嘒嗼嘏嘜嘁嘓嘂嗺嘝嘄嗿嗹墉塼墐墘墆墁塿塴墋塺墇墑墎塶墂墈塻墔墏壾奫嫜嫮嫥嫕嫪嫚嫭嫫嫳嫢嫠嫛嫬嫞嫝嫙嫨嫟孷寠����������������������������������寣屣嶂嶀嵽嶆嵺嶁嵷嶊嶉嶈嵾嵼嶍嵹嵿幘幙幓廘廑廗廎廜廕廙廒廔彄彃彯徶愬愨慁慞慱慳慒慓慲慬憀慴慔慺慛慥愻慪慡慖戩戧戫搫摍摛摝摴摶摲摳摽摵摦撦摎撂摞摜摋摓摠摐摿搿摬摫摙摥摷敳斠暡暠暟朅朄朢榱榶槉�".split(""); +for(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];} +D[226] = "����������������������������������������������������������������榠槎榖榰榬榼榑榙榎榧榍榩榾榯榿槄榽榤槔榹槊榚槏榳榓榪榡榞槙榗榐槂榵榥槆歊歍歋殞殟殠毃毄毾滎滵滱漃漥滸漷滻漮漉潎漙漚漧漘漻漒滭漊����������������������������������漶潳滹滮漭潀漰漼漵滫漇漎潃漅滽滶漹漜滼漺漟漍漞漈漡熇熐熉熀熅熂熏煻熆熁熗牄牓犗犕犓獃獍獑獌瑢瑳瑱瑵瑲瑧瑮甀甂甃畽疐瘖瘈瘌瘕瘑瘊瘔皸瞁睼瞅瞂睮瞀睯睾瞃碲碪碴碭碨硾碫碞碥碠碬碢碤禘禊禋禖禕禔禓�".split(""); +for(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];} +D[227] = "����������������������������������������������������������������禗禈禒禐稫穊稰稯稨稦窨窫窬竮箈箜箊箑箐箖箍箌箛箎箅箘劄箙箤箂粻粿粼粺綧綷緂綣綪緁緀緅綝緎緄緆緋緌綯綹綖綼綟綦綮綩綡緉罳翢翣翥翞����������������������������������耤聝聜膉膆膃膇膍膌膋舕蒗蒤蒡蒟蒺蓎蓂蒬蒮蒫蒹蒴蓁蓍蒪蒚蒱蓐蒝蒧蒻蒢蒔蓇蓌蒛蒩蒯蒨蓖蒘蒶蓏蒠蓗蓔蓒蓛蒰蒑虡蜳蜣蜨蝫蝀蜮蜞蜡蜙蜛蝃蜬蝁蜾蝆蜠蜲蜪蜭蜼蜒蜺蜱蜵蝂蜦蜧蜸蜤蜚蜰蜑裷裧裱裲裺裾裮裼裶裻�".split(""); +for(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];} +D[228] = "����������������������������������������������������������������裰裬裫覝覡覟覞觩觫觨誫誙誋誒誏誖谽豨豩賕賏賗趖踉踂跿踍跽踊踃踇踆踅跾踀踄輐輑輎輍鄣鄜鄠鄢鄟鄝鄚鄤鄡鄛酺酲酹酳銥銤鉶銛鉺銠銔銪銍����������������������������������銦銚銫鉹銗鉿銣鋮銎銂銕銢鉽銈銡銊銆銌銙銧鉾銇銩銝銋鈭隞隡雿靘靽靺靾鞃鞀鞂靻鞄鞁靿韎韍頖颭颮餂餀餇馝馜駃馹馻馺駂馽駇骱髣髧鬾鬿魠魡魟鳱鳲鳵麧僿儃儰僸儆儇僶僾儋儌僽儊劋劌勱勯噈噂噌嘵噁噊噉噆噘�".split(""); +for(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];} +D[229] = "����������������������������������������������������������������噚噀嘳嘽嘬嘾嘸嘪嘺圚墫墝墱墠墣墯墬墥墡壿嫿嫴嫽嫷嫶嬃嫸嬂嫹嬁嬇嬅嬏屧嶙嶗嶟嶒嶢嶓嶕嶠嶜嶡嶚嶞幩幝幠幜緳廛廞廡彉徲憋憃慹憱憰憢憉����������������������������������憛憓憯憭憟憒憪憡憍慦憳戭摮摰撖撠撅撗撜撏撋撊撌撣撟摨撱撘敶敺敹敻斲斳暵暰暩暲暷暪暯樀樆樗槥槸樕槱槤樠槿槬槢樛樝槾樧槲槮樔槷槧橀樈槦槻樍槼槫樉樄樘樥樏槶樦樇槴樖歑殥殣殢殦氁氀毿氂潁漦潾澇濆澒�".split(""); +for(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];} +D[230] = "����������������������������������������������������������������澍澉澌潢潏澅潚澖潶潬澂潕潲潒潐潗澔澓潝漀潡潫潽潧澐潓澋潩潿澕潣潷潪潻熲熯熛熰熠熚熩熵熝熥熞熤熡熪熜熧熳犘犚獘獒獞獟獠獝獛獡獚獙����������������������������������獢璇璉璊璆璁瑽璅璈瑼瑹甈甇畾瘥瘞瘙瘝瘜瘣瘚瘨瘛皜皝皞皛瞍瞏瞉瞈磍碻磏磌磑磎磔磈磃磄磉禚禡禠禜禢禛歶稹窲窴窳箷篋箾箬篎箯箹篊箵糅糈糌糋緷緛緪緧緗緡縃緺緦緶緱緰緮緟罶羬羰羭翭翫翪翬翦翨聤聧膣膟�".split(""); +for(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];} +D[231] = "����������������������������������������������������������������膞膕膢膙膗舖艏艓艒艐艎艑蔤蔻蔏蔀蔩蔎蔉蔍蔟蔊蔧蔜蓻蔫蓺蔈蔌蓴蔪蓲蔕蓷蓫蓳蓼蔒蓪蓩蔖蓾蔨蔝蔮蔂蓽蔞蓶蔱蔦蓧蓨蓰蓯蓹蔘蔠蔰蔋蔙蔯虢����������������������������������蝖蝣蝤蝷蟡蝳蝘蝔蝛蝒蝡蝚蝑蝞蝭蝪蝐蝎蝟蝝蝯蝬蝺蝮蝜蝥蝏蝻蝵蝢蝧蝩衚褅褌褔褋褗褘褙褆褖褑褎褉覢覤覣觭觰觬諏諆誸諓諑諔諕誻諗誾諀諅諘諃誺誽諙谾豍貏賥賟賙賨賚賝賧趠趜趡趛踠踣踥踤踮踕踛踖踑踙踦踧�".split(""); +for(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];} +D[232] = "����������������������������������������������������������������踔踒踘踓踜踗踚輬輤輘輚輠輣輖輗遳遰遯遧遫鄯鄫鄩鄪鄲鄦鄮醅醆醊醁醂醄醀鋐鋃鋄鋀鋙銶鋏鋱鋟鋘鋩鋗鋝鋌鋯鋂鋨鋊鋈鋎鋦鋍鋕鋉鋠鋞鋧鋑鋓����������������������������������銵鋡鋆銴镼閬閫閮閰隤隢雓霅霈霂靚鞊鞎鞈韐韏頞頝頦頩頨頠頛頧颲餈飺餑餔餖餗餕駜駍駏駓駔駎駉駖駘駋駗駌骳髬髫髳髲髱魆魃魧魴魱魦魶魵魰魨魤魬鳼鳺鳽鳿鳷鴇鴀鳹鳻鴈鴅鴄麃黓鼏鼐儜儓儗儚儑凞匴叡噰噠噮�".split(""); +for(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];} +D[233] = "����������������������������������������������������������������噳噦噣噭噲噞噷圜圛壈墽壉墿墺壂墼壆嬗嬙嬛嬡嬔嬓嬐嬖嬨嬚嬠嬞寯嶬嶱嶩嶧嶵嶰嶮嶪嶨嶲嶭嶯嶴幧幨幦幯廩廧廦廨廥彋徼憝憨憖懅憴懆懁懌憺����������������������������������憿憸憌擗擖擐擏擉撽撉擃擛擳擙攳敿敼斢曈暾曀曊曋曏暽暻暺曌朣樴橦橉橧樲橨樾橝橭橶橛橑樨橚樻樿橁橪橤橐橏橔橯橩橠樼橞橖橕橍橎橆歕歔歖殧殪殫毈毇氄氃氆澭濋澣濇澼濎濈潞濄澽澞濊澨瀄澥澮澺澬澪濏澿澸�".split(""); +for(j = 0; j != D[233].length; ++j) if(D[233][j].charCodeAt(0) !== 0xFFFD) { e[D[233][j]] = 59648 + j; d[59648 + j] = D[233][j];} +D[234] = "����������������������������������������������������������������澢濉澫濍澯澲澰燅燂熿熸燖燀燁燋燔燊燇燏熽燘熼燆燚燛犝犞獩獦獧獬獥獫獪瑿璚璠璔璒璕璡甋疀瘯瘭瘱瘽瘳瘼瘵瘲瘰皻盦瞚瞝瞡瞜瞛瞢瞣瞕瞙����������������������������������瞗磝磩磥磪磞磣磛磡磢磭磟磠禤穄穈穇窶窸窵窱窷篞篣篧篝篕篥篚篨篹篔篪篢篜篫篘篟糒糔糗糐糑縒縡縗縌縟縠縓縎縜縕縚縢縋縏縖縍縔縥縤罃罻罼罺羱翯耪耩聬膱膦膮膹膵膫膰膬膴膲膷膧臲艕艖艗蕖蕅蕫蕍蕓蕡蕘�".split(""); +for(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];} +D[235] = "����������������������������������������������������������������蕀蕆蕤蕁蕢蕄蕑蕇蕣蔾蕛蕱蕎蕮蕵蕕蕧蕠薌蕦蕝蕔蕥蕬虣虥虤螛螏螗螓螒螈螁螖螘蝹螇螣螅螐螑螝螄螔螜螚螉褞褦褰褭褮褧褱褢褩褣褯褬褟觱諠����������������������������������諢諲諴諵諝謔諤諟諰諈諞諡諨諿諯諻貑貒貐賵賮賱賰賳赬赮趥趧踳踾踸蹀蹅踶踼踽蹁踰踿躽輶輮輵輲輹輷輴遶遹遻邆郺鄳鄵鄶醓醐醑醍醏錧錞錈錟錆錏鍺錸錼錛錣錒錁鍆錭錎錍鋋錝鋺錥錓鋹鋷錴錂錤鋿錩錹錵錪錔錌�".split(""); +for(j = 0; j != D[235].length; ++j) if(D[235][j].charCodeAt(0) !== 0xFFFD) { e[D[235][j]] = 60160 + j; d[60160 + j] = D[235][j];} +D[236] = "����������������������������������������������������������������錋鋾錉錀鋻錖閼闍閾閹閺閶閿閵閽隩雔霋霒霐鞙鞗鞔韰韸頵頯頲餤餟餧餩馞駮駬駥駤駰駣駪駩駧骹骿骴骻髶髺髹髷鬳鮀鮅鮇魼魾魻鮂鮓鮒鮐魺鮕����������������������������������魽鮈鴥鴗鴠鴞鴔鴩鴝鴘鴢鴐鴙鴟麈麆麇麮麭黕黖黺鼒鼽儦儥儢儤儠儩勴嚓嚌嚍嚆嚄嚃噾嚂噿嚁壖壔壏壒嬭嬥嬲嬣嬬嬧嬦嬯嬮孻寱寲嶷幬幪徾徻懃憵憼懧懠懥懤懨懞擯擩擣擫擤擨斁斀斶旚曒檍檖檁檥檉檟檛檡檞檇檓檎�".split(""); +for(j = 0; j != D[236].length; ++j) if(D[236][j].charCodeAt(0) !== 0xFFFD) { e[D[236][j]] = 60416 + j; d[60416 + j] = D[236][j];} +D[237] = "����������������������������������������������������������������檕檃檨檤檑橿檦檚檅檌檒歛殭氉濌澩濴濔濣濜濭濧濦濞濲濝濢濨燡燱燨燲燤燰燢獳獮獯璗璲璫璐璪璭璱璥璯甐甑甒甏疄癃癈癉癇皤盩瞵瞫瞲瞷瞶����������������������������������瞴瞱瞨矰磳磽礂磻磼磲礅磹磾礄禫禨穜穛穖穘穔穚窾竀竁簅簏篲簀篿篻簎篴簋篳簂簉簃簁篸篽簆篰篱簐簊糨縭縼繂縳顈縸縪繉繀繇縩繌縰縻縶繄縺罅罿罾罽翴翲耬膻臄臌臊臅臇膼臩艛艚艜薃薀薏薧薕薠薋薣蕻薤薚薞�".split(""); +for(j = 0; j != D[237].length; ++j) if(D[237][j].charCodeAt(0) !== 0xFFFD) { e[D[237][j]] = 60672 + j; d[60672 + j] = D[237][j];} +D[238] = "����������������������������������������������������������������蕷蕼薉薡蕺蕸蕗薎薖薆薍薙薝薁薢薂薈薅蕹蕶薘薐薟虨螾螪螭蟅螰螬螹螵螼螮蟉蟃蟂蟌螷螯蟄蟊螴螶螿螸螽蟞螲褵褳褼褾襁襒褷襂覭覯覮觲觳謞����������������������������������謘謖謑謅謋謢謏謒謕謇謍謈謆謜謓謚豏豰豲豱豯貕貔賹赯蹎蹍蹓蹐蹌蹇轃轀邅遾鄸醚醢醛醙醟醡醝醠鎡鎃鎯鍤鍖鍇鍼鍘鍜鍶鍉鍐鍑鍠鍭鎏鍌鍪鍹鍗鍕鍒鍏鍱鍷鍻鍡鍞鍣鍧鎀鍎鍙闇闀闉闃闅閷隮隰隬霠霟霘霝霙鞚鞡鞜�".split(""); +for(j = 0; j != D[238].length; ++j) if(D[238][j].charCodeAt(0) !== 0xFFFD) { e[D[238][j]] = 60928 + j; d[60928 + j] = D[238][j];} +D[239] = "����������������������������������������������������������������鞞鞝韕韔韱顁顄顊顉顅顃餥餫餬餪餳餲餯餭餱餰馘馣馡騂駺駴駷駹駸駶駻駽駾駼騃骾髾髽鬁髼魈鮚鮨鮞鮛鮦鮡鮥鮤鮆鮢鮠鮯鴳鵁鵧鴶鴮鴯鴱鴸鴰����������������������������������鵅鵂鵃鴾鴷鵀鴽翵鴭麊麉麍麰黈黚黻黿鼤鼣鼢齔龠儱儭儮嚘嚜嚗嚚嚝嚙奰嬼屩屪巀幭幮懘懟懭懮懱懪懰懫懖懩擿攄擽擸攁攃擼斔旛曚曛曘櫅檹檽櫡櫆檺檶檷櫇檴檭歞毉氋瀇瀌瀍瀁瀅瀔瀎濿瀀濻瀦濼濷瀊爁燿燹爃燽獶�".split(""); +for(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];} +D[240] = "����������������������������������������������������������������璸瓀璵瓁璾璶璻瓂甔甓癜癤癙癐癓癗癚皦皽盬矂瞺磿礌礓礔礉礐礒礑禭禬穟簜簩簙簠簟簭簝簦簨簢簥簰繜繐繖繣繘繢繟繑繠繗繓羵羳翷翸聵臑臒����������������������������������臐艟艞薴藆藀藃藂薳薵薽藇藄薿藋藎藈藅薱薶藒蘤薸薷薾虩蟧蟦蟢蟛蟫蟪蟥蟟蟳蟤蟔蟜蟓蟭蟘蟣螤蟗蟙蠁蟴蟨蟝襓襋襏襌襆襐襑襉謪謧謣謳謰謵譇謯謼謾謱謥謷謦謶謮謤謻謽謺豂豵貙貘貗賾贄贂贀蹜蹢蹠蹗蹖蹞蹥蹧�".split(""); +for(j = 0; j != D[240].length; ++j) if(D[240][j].charCodeAt(0) !== 0xFFFD) { e[D[240][j]] = 61440 + j; d[61440 + j] = D[240][j];} +D[241] = "����������������������������������������������������������������蹛蹚蹡蹝蹩蹔轆轇轈轋鄨鄺鄻鄾醨醥醧醯醪鎵鎌鎒鎷鎛鎝鎉鎧鎎鎪鎞鎦鎕鎈鎙鎟鎍鎱鎑鎲鎤鎨鎴鎣鎥闒闓闑隳雗雚巂雟雘雝霣霢霥鞬鞮鞨鞫鞤鞪����������������������������������鞢鞥韗韙韖韘韺顐顑顒颸饁餼餺騏騋騉騍騄騑騊騅騇騆髀髜鬈鬄鬅鬩鬵魊魌魋鯇鯆鯃鮿鯁鮵鮸鯓鮶鯄鮹鮽鵜鵓鵏鵊鵛鵋鵙鵖鵌鵗鵒鵔鵟鵘鵚麎麌黟鼁鼀鼖鼥鼫鼪鼩鼨齌齕儴儵劖勷厴嚫嚭嚦嚧嚪嚬壚壝壛夒嬽嬾嬿巃幰�".split(""); +for(j = 0; j != D[241].length; ++j) if(D[241][j].charCodeAt(0) !== 0xFFFD) { e[D[241][j]] = 61696 + j; d[61696 + j] = D[241][j];} +D[242] = "����������������������������������������������������������������徿懻攇攐攍攉攌攎斄旞旝曞櫧櫠櫌櫑櫙櫋櫟櫜櫐櫫櫏櫍櫞歠殰氌瀙瀧瀠瀖瀫瀡瀢瀣瀩瀗瀤瀜瀪爌爊爇爂爅犥犦犤犣犡瓋瓅璷瓃甖癠矉矊矄矱礝礛����������������������������������礡礜礗礞禰穧穨簳簼簹簬簻糬糪繶繵繸繰繷繯繺繲繴繨罋罊羃羆羷翽翾聸臗臕艤艡艣藫藱藭藙藡藨藚藗藬藲藸藘藟藣藜藑藰藦藯藞藢蠀蟺蠃蟶蟷蠉蠌蠋蠆蟼蠈蟿蠊蠂襢襚襛襗襡襜襘襝襙覈覷覶觶譐譈譊譀譓譖譔譋譕�".split(""); +for(j = 0; j != D[242].length; ++j) if(D[242][j].charCodeAt(0) !== 0xFFFD) { e[D[242][j]] = 61952 + j; d[61952 + j] = D[242][j];} +D[243] = "����������������������������������������������������������������譑譂譒譗豃豷豶貚贆贇贉趬趪趭趫蹭蹸蹳蹪蹯蹻軂轒轑轏轐轓辴酀鄿醰醭鏞鏇鏏鏂鏚鏐鏹鏬鏌鏙鎩鏦鏊鏔鏮鏣鏕鏄鏎鏀鏒鏧镽闚闛雡霩霫霬霨霦����������������������������������鞳鞷鞶韝韞韟顜顙顝顗颿颽颻颾饈饇饃馦馧騚騕騥騝騤騛騢騠騧騣騞騜騔髂鬋鬊鬎鬌鬷鯪鯫鯠鯞鯤鯦鯢鯰鯔鯗鯬鯜鯙鯥鯕鯡鯚鵷鶁鶊鶄鶈鵱鶀鵸鶆鶋鶌鵽鵫鵴鵵鵰鵩鶅鵳鵻鶂鵯鵹鵿鶇鵨麔麑黀黼鼭齀齁齍齖齗齘匷嚲�".split(""); +for(j = 0; j != D[243].length; ++j) if(D[243][j].charCodeAt(0) !== 0xFFFD) { e[D[243][j]] = 62208 + j; d[62208 + j] = D[243][j];} +D[244] = "����������������������������������������������������������������嚵嚳壣孅巆巇廮廯忀忁懹攗攖攕攓旟曨曣曤櫳櫰櫪櫨櫹櫱櫮櫯瀼瀵瀯瀷瀴瀱灂瀸瀿瀺瀹灀瀻瀳灁爓爔犨獽獼璺皫皪皾盭矌矎矏矍矲礥礣礧礨礤礩����������������������������������禲穮穬穭竷籉籈籊籇籅糮繻繾纁纀羺翿聹臛臙舋艨艩蘢藿蘁藾蘛蘀藶蘄蘉蘅蘌藽蠙蠐蠑蠗蠓蠖襣襦覹觷譠譪譝譨譣譥譧譭趮躆躈躄轙轖轗轕轘轚邍酃酁醷醵醲醳鐋鐓鏻鐠鐏鐔鏾鐕鐐鐨鐙鐍鏵鐀鏷鐇鐎鐖鐒鏺鐉鏸鐊鏿�".split(""); +for(j = 0; j != D[244].length; ++j) if(D[244][j].charCodeAt(0) !== 0xFFFD) { e[D[244][j]] = 62464 + j; d[62464 + j] = D[244][j];} +D[245] = "����������������������������������������������������������������鏼鐌鏶鐑鐆闞闠闟霮霯鞹鞻韽韾顠顢顣顟飁飂饐饎饙饌饋饓騲騴騱騬騪騶騩騮騸騭髇髊髆鬐鬒鬑鰋鰈鯷鰅鰒鯸鱀鰇鰎鰆鰗鰔鰉鶟鶙鶤鶝鶒鶘鶐鶛����������������������������������鶠鶔鶜鶪鶗鶡鶚鶢鶨鶞鶣鶿鶩鶖鶦鶧麙麛麚黥黤黧黦鼰鼮齛齠齞齝齙龑儺儹劘劗囃嚽嚾孈孇巋巏廱懽攛欂櫼欃櫸欀灃灄灊灈灉灅灆爝爚爙獾甗癪矐礭礱礯籔籓糲纊纇纈纋纆纍罍羻耰臝蘘蘪蘦蘟蘣蘜蘙蘧蘮蘡蘠蘩蘞蘥�".split(""); +for(j = 0; j != D[245].length; ++j) if(D[245][j].charCodeAt(0) !== 0xFFFD) { e[D[245][j]] = 62720 + j; d[62720 + j] = D[245][j];} +D[246] = "����������������������������������������������������������������蠩蠝蠛蠠蠤蠜蠫衊襭襩襮襫觺譹譸譅譺譻贐贔趯躎躌轞轛轝酆酄酅醹鐿鐻鐶鐩鐽鐼鐰鐹鐪鐷鐬鑀鐱闥闤闣霵霺鞿韡顤飉飆飀饘饖騹騽驆驄驂驁騺����������������������������������騿髍鬕鬗鬘鬖鬺魒鰫鰝鰜鰬鰣鰨鰩鰤鰡鶷鶶鶼鷁鷇鷊鷏鶾鷅鷃鶻鶵鷎鶹鶺鶬鷈鶱鶭鷌鶳鷍鶲鹺麜黫黮黭鼛鼘鼚鼱齎齥齤龒亹囆囅囋奱孋孌巕巑廲攡攠攦攢欋欈欉氍灕灖灗灒爞爟犩獿瓘瓕瓙瓗癭皭礵禴穰穱籗籜籙籛籚�".split(""); +for(j = 0; j != D[246].length; ++j) if(D[246][j].charCodeAt(0) !== 0xFFFD) { e[D[246][j]] = 62976 + j; d[62976 + j] = D[246][j];} +D[247] = "����������������������������������������������������������������糴糱纑罏羇臞艫蘴蘵蘳蘬蘲蘶蠬蠨蠦蠪蠥襱覿覾觻譾讄讂讆讅譿贕躕躔躚躒躐躖躗轠轢酇鑌鑐鑊鑋鑏鑇鑅鑈鑉鑆霿韣顪顩飋饔饛驎驓驔驌驏驈驊����������������������������������驉驒驐髐鬙鬫鬻魖魕鱆鱈鰿鱄鰹鰳鱁鰼鰷鰴鰲鰽鰶鷛鷒鷞鷚鷋鷐鷜鷑鷟鷩鷙鷘鷖鷵鷕鷝麶黰鼵鼳鼲齂齫龕龢儽劙壨壧奲孍巘蠯彏戁戃戄攩攥斖曫欑欒欏毊灛灚爢玂玁玃癰矔籧籦纕艬蘺虀蘹蘼蘱蘻蘾蠰蠲蠮蠳襶襴襳觾�".split(""); +for(j = 0; j != D[247].length; ++j) if(D[247][j].charCodeAt(0) !== 0xFFFD) { e[D[247][j]] = 63232 + j; d[63232 + j] = D[247][j];} +D[248] = "����������������������������������������������������������������讌讎讋讈豅贙躘轤轣醼鑢鑕鑝鑗鑞韄韅頀驖驙鬞鬟鬠鱒鱘鱐鱊鱍鱋鱕鱙鱌鱎鷻鷷鷯鷣鷫鷸鷤鷶鷡鷮鷦鷲鷰鷢鷬鷴鷳鷨鷭黂黐黲黳鼆鼜鼸鼷鼶齃齏����������������������������������齱齰齮齯囓囍孎屭攭曭曮欓灟灡灝灠爣瓛瓥矕礸禷禶籪纗羉艭虃蠸蠷蠵衋讔讕躞躟躠躝醾醽釂鑫鑨鑩雥靆靃靇韇韥驞髕魙鱣鱧鱦鱢鱞鱠鸂鷾鸇鸃鸆鸅鸀鸁鸉鷿鷽鸄麠鼞齆齴齵齶囔攮斸欘欙欗欚灢爦犪矘矙礹籩籫糶纚�".split(""); +for(j = 0; j != D[248].length; ++j) if(D[248][j].charCodeAt(0) !== 0xFFFD) { e[D[248][j]] = 63488 + j; d[63488 + j] = D[248][j];} +D[249] = "����������������������������������������������������������������纘纛纙臠臡虆虇虈襹襺襼襻觿讘讙躥躤躣鑮鑭鑯鑱鑳靉顲饟鱨鱮鱭鸋鸍鸐鸏鸒鸑麡黵鼉齇齸齻齺齹圞灦籯蠼趲躦釃鑴鑸鑶鑵驠鱴鱳鱱鱵鸔鸓黶鼊����������������������������������龤灨灥糷虪蠾蠽蠿讞貜躩軉靋顳顴飌饡馫驤驦驧鬤鸕鸗齈戇欞爧虌躨钂钀钁驩驨鬮鸙爩虋讟钃鱹麷癵驫鱺鸝灩灪麤齾齉龘碁銹裏墻恒粧嫺╔╦╗╠╬╣╚╩╝╒╤╕╞╪╡╘╧╛╓╥╖╟╫╢╙╨╜║═╭╮╰╯▓�".split(""); +for(j = 0; j != D[249].length; ++j) if(D[249][j].charCodeAt(0) !== 0xFFFD) { e[D[249][j]] = 63744 + j; d[63744 + j] = D[249][j];} +return {"enc": e, "dec": d }; })(); diff --git a/node_modules/codepage/cptable.js b/node_modules/codepage/cptable.js new file mode 100644 index 000000000..ddca5af93 --- /dev/null +++ b/node_modules/codepage/cptable.js @@ -0,0 +1,4651 @@ +/*! cptable.js (C) 2013-present SheetJS -- http://sheetjs.com */ +/*jshint -W100 */ +var cptable = {version:"1.15.0"}; +cptable[37] = (function(){ var d = "\u0000\u0001\u0002\u0003œ\t†—Ž\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013…\b‡\u0018\u0019’\u001c\u001d\u001e\u001f€‚ƒ„\n\u0017\u001bˆ‰Š‹Œ\u0005\u0006\u0007‘\u0016“”•–\u0004˜™š›\u0014\u0015ž\u001a  âäàáãåçñ¢.<(+|&éêëèíîïìß!$*);¬-/ÂÄÀÁÃÅÇѦ,%_>?øÉÊËÈÍÎÏÌ`:#@'=\"Øabcdefghi«»ðýþ±°jklmnopqrªºæ¸Æ¤µ~stuvwxyz¡¿ÐÝÞ®^£¥·©§¶¼½¾[]¯¨´×{ABCDEFGHI­ôöòóõ}JKLMNOPQR¹ûüùúÿ\\÷STUVWXYZ²ÔÖÒÓÕ0123456789³ÛÜÙڟ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +cptable[437] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜ¢£¥₧ƒáíóúñѪº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +cptable[500] = (function(){ var d = "\u0000\u0001\u0002\u0003œ\t†—Ž\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013…\b‡\u0018\u0019’\u001c\u001d\u001e\u001f€‚ƒ„\n\u0017\u001bˆ‰Š‹Œ\u0005\u0006\u0007‘\u0016“”•–\u0004˜™š›\u0014\u0015ž\u001a  âäàáãåçñ[.<(+!&éêëèíîïìß]$*);^-/ÂÄÀÁÃÅÇѦ,%_>?øÉÊËÈÍÎÏÌ`:#@'=\"Øabcdefghi«»ðýþ±°jklmnopqrªºæ¸Æ¤µ~stuvwxyz¡¿ÐÝÞ®¢£¥·©§¶¼½¾¬|¯¨´×{ABCDEFGHI­ôöòóõ}JKLMNOPQR¹ûüùúÿ\\÷STUVWXYZ²ÔÖÒÓÕ0123456789³ÛÜÙڟ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +cptable[737] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩαβγδεζηθικλμνξοπρσςτυφχψ░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀ωάέήϊίόύϋώΆΈΉΊΌΎΏ±≥≤ΪΫ÷≈°∙·√ⁿ²■ ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +cptable[775] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ĆüéāäģåćłēŖŗīŹÄÅÉæÆōöĢ¢ŚśÖÜø£ØפĀĪóŻżź”¦©®¬½¼Ł«»░▒▓│┤ĄČĘĖ╣║╗╝ĮŠ┐└┴┬├─┼ŲŪ╚╔╩╦╠═╬Žąčęėįšųūž┘┌█▄▌▐▀ÓßŌŃõÕµńĶķĻļņĒŅ’­±“¾¶§÷„°∙·¹³²■ ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +cptable[850] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø׃áíóúñѪº¿®¬½¼¡«»░▒▓│┤ÁÂÀ©╣║╗╝¢¥┐└┴┬├─┼ãÃ╚╔╩╦╠═╬¤ðÐÊËÈıÍÎÏ┘┌█▄¦Ì▀ÓßÔÒõÕµþÞÚÛÙýݯ´­±‗¾¶§÷¸°¨·¹³²■ ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +cptable[852] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÇüéâäůćçłëŐőîŹÄĆÉĹĺôöĽľŚśÖÜŤťŁ×čáíóúĄąŽžĘ꬟Ⱥ«»░▒▓│┤ÁÂĚŞ╣║╗╝Żż┐└┴┬├─┼Ăă╚╔╩╦╠═╬¤đĐĎËďŇÍÎě┘┌█▄ŢŮ▀ÓßÔŃńňŠšŔÚŕŰýÝţ´­˝˛ˇ˘§÷¸°¨˙űŘř■ ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +cptable[855] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ђЂѓЃёЁєЄѕЅіІїЇјЈљЉњЊћЋќЌўЎџЏюЮъЪаАбБцЦдДеЕфФгГ«»░▒▓│┤хХиИ╣║╗╝йЙ┐└┴┬├─┼кК╚╔╩╦╠═╬¤лЛмМнНоОп┘┌█▄Пя▀ЯрРсСтТуУжЖвВьЬ№­ыЫзЗшШэЭщЩчЧ§■ ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +cptable[857] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÇüéâäàåçêëèïîıÄÅÉæÆôöòûùİÖÜø£ØŞşáíóúñÑĞ𿮬½¼¡«»░▒▓│┤ÁÂÀ©╣║╗╝¢¥┐└┴┬├─┼ãÃ╚╔╩╦╠═╬¤ºªÊËÈ�ÍÎÏ┘┌█▄¦Ì▀ÓßÔÒõÕµ�×ÚÛÙìÿ¯´­±�¾¶§÷¸°¨·¹³²■ ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +cptable[860] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÇüéâãàÁçêÊèÍÔìÃÂÉÀÈôõòÚùÌÕÜ¢£Ù₧ÓáíóúñѪº¿Ò¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +cptable[861] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÇüéâäàåçêëèÐðÞÄÅÉæÆôöþûÝýÖÜø£Ø₧ƒáíóúÁÍÓÚ¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +cptable[862] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~אבגדהוזחטיךכלםמןנסעףפץצקרשת¢£¥₧ƒáíóúñѪº¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +cptable[863] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÇüéâÂà¶çêëèïî‗À§ÉÈÊôËÏûù¤ÔÜ¢£ÙÛƒ¦´óú¨¸³¯Î⌐¬½¼¾«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +cptable[864] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$٪&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~°·∙√▒─│┼┤┬├┴┐┌└┘β∞φ±½¼≈«»ﻷﻸ��ﻻﻼ� ­ﺂ£¤ﺄ��ﺎﺏﺕﺙ،ﺝﺡﺥ٠١٢٣٤٥٦٧٨٩ﻑ؛ﺱﺵﺹ؟¢ﺀﺁﺃﺅﻊﺋﺍﺑﺓﺗﺛﺟﺣﺧﺩﺫﺭﺯﺳﺷﺻﺿﻁﻅﻋﻏ¦¬÷×ﻉـﻓﻗﻛﻟﻣﻧﻫﻭﻯﻳﺽﻌﻎﻍﻡﹽّﻥﻩﻬﻰﻲﻐﻕﻵﻶﻝﻙﻱ■�", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +cptable[865] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø₧ƒáíóúñѪº¿⌐¬½¼¡«¤░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +cptable[866] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀рстуфхцчшщъыьэюяЁёЄєЇїЎў°∙·√№¤■ ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +cptable[869] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~������Ά�·¬¦‘’Έ―ΉΊΪΌ��ΎΫ©Ώ²³ά£έήίϊΐόύΑΒΓΔΕΖΗ½ΘΙ«»░▒▓│┤ΚΛΜΝ╣║╗╝ΞΟ┐└┴┬├─┼ΠΡ╚╔╩╦╠═╬ΣΤΥΦΧΨΩαβγ┘┌█▄δε▀ζηθικλμνξοπρσςτ΄­±υφχ§ψ΅°¨ωϋΰώ■ ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +cptable[874] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€����…�����������‘’“”•–—�������� กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +cptable[875] = (function(){ var d = "\u0000\u0001\u0002\u0003œ\t†—Ž\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013…\b‡\u0018\u0019’\u001c\u001d\u001e\u001f€‚ƒ„\n\u0017\u001bˆ‰Š‹Œ\u0005\u0006\u0007‘\u0016“”•–\u0004˜™š›\u0014\u0015ž\u001a ΑΒΓΔΕΖΗΘΙ[.<(+!&ΚΛΜΝΞΟΠΡΣ]$*);^-/ΤΥΦΧΨΩΪΫ|,%_>?¨ΆΈΉ ΊΌΎΏ`:#@'=\"΅abcdefghiαβγδεζ°jklmnopqrηθικλμ´~stuvwxyzνξοπρσ£άέήϊίόύϋώςτυφχψ{ABCDEFGHI­ωΐΰ‘―}JKLMNOPQR±½\u001a·’¦\\\u001aSTUVWXYZ²§\u001a\u001a«¬0123456789³©\u001a\u001a»Ÿ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +cptable[932] = (function(){ var d = [], e = {}, D = [], j; +D[0] = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~���������������������������������。「」、・ヲァィゥェォャュョッーアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワン゙゚��������������������������������".split(""); +for(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];} +D[129] = "���������������������������������������������������������������� 、。,.・:;?!゛゜´`¨^ ̄_ヽヾゝゞ〃仝々〆〇ー―‐/\~∥|…‥‘’“”()〔〕[]{}〈〉《》「」『』【】+-±×�÷=≠<>≦≧∞∴♂♀°′″℃¥$¢£%#&*@§☆★○●◎◇◆□■△▲▽▼※〒→←↑↓〓�����������∈∋⊆⊇⊂⊃∪∩��������∧∨¬⇒⇔∀∃�����������∠⊥⌒∂∇≡≒≪≫√∽∝∵∫∬�������ʼn♯♭♪†‡¶����◯���".split(""); +for(j = 0; j != D[129].length; ++j) if(D[129][j].charCodeAt(0) !== 0xFFFD) { e[D[129][j]] = 33024 + j; d[33024 + j] = D[129][j];} +D[130] = "�������������������������������������������������������������������������������0123456789�������ABCDEFGHIJKLMNOPQRSTUVWXYZ�������abcdefghijklmnopqrstuvwxyz����ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをん��������������".split(""); +for(j = 0; j != D[130].length; ++j) if(D[130][j].charCodeAt(0) !== 0xFFFD) { e[D[130][j]] = 33280 + j; d[33280 + j] = D[130][j];} +D[131] = "����������������������������������������������������������������ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミ�ムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶ��������ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ��������αβγδεζηθικλμνξοπρστυφχψω�����������������������������������������".split(""); +for(j = 0; j != D[131].length; ++j) if(D[131][j].charCodeAt(0) !== 0xFFFD) { e[D[131][j]] = 33536 + j; d[33536 + j] = D[131][j];} +D[132] = "����������������������������������������������������������������АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ���������������абвгдеёжзийклмн�опрстуфхцчшщъыьэюя�������������─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂�����������������������������������������������������������������".split(""); +for(j = 0; j != D[132].length; ++j) if(D[132][j].charCodeAt(0) !== 0xFFFD) { e[D[132][j]] = 33792 + j; d[33792 + j] = D[132][j];} +D[135] = "����������������������������������������������������������������①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯⑰⑱⑲⑳ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩ�㍉㌔㌢㍍㌘㌧㌃㌶㍑㍗㌍㌦㌣㌫㍊㌻㎜㎝㎞㎎㎏㏄㎡��������㍻�〝〟№㏍℡㊤㊥㊦㊧㊨㈱㈲㈹㍾㍽㍼≒≡∫∮∑√⊥∠∟⊿∵∩∪���������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[135].length; ++j) if(D[135][j].charCodeAt(0) !== 0xFFFD) { e[D[135][j]] = 34560 + j; d[34560 + j] = D[135][j];} +D[136] = "���������������������������������������������������������������������������������������������������������������������������������������������������������������亜唖娃阿哀愛挨姶逢葵茜穐悪握渥旭葦芦鯵梓圧斡扱宛姐虻飴絢綾鮎或粟袷安庵按暗案闇鞍杏以伊位依偉囲夷委威尉惟意慰易椅為畏異移維緯胃萎衣謂違遺医井亥域育郁磯一壱溢逸稲茨芋鰯允印咽員因姻引飲淫胤蔭���".split(""); +for(j = 0; j != D[136].length; ++j) if(D[136][j].charCodeAt(0) !== 0xFFFD) { e[D[136][j]] = 34816 + j; d[34816 + j] = D[136][j];} +D[137] = "����������������������������������������������������������������院陰隠韻吋右宇烏羽迂雨卯鵜窺丑碓臼渦嘘唄欝蔚鰻姥厩浦瓜閏噂云運雲荏餌叡営嬰影映曳栄永泳洩瑛盈穎頴英衛詠鋭液疫益駅悦謁越閲榎厭円�園堰奄宴延怨掩援沿演炎焔煙燕猿縁艶苑薗遠鉛鴛塩於汚甥凹央奥往応押旺横欧殴王翁襖鴬鴎黄岡沖荻億屋憶臆桶牡乙俺卸恩温穏音下化仮何伽価佳加可嘉夏嫁家寡科暇果架歌河火珂禍禾稼箇花苛茄荷華菓蝦課嘩貨迦過霞蚊俄峨我牙画臥芽蛾賀雅餓駕介会解回塊壊廻快怪悔恢懐戒拐改���".split(""); +for(j = 0; j != D[137].length; ++j) if(D[137][j].charCodeAt(0) !== 0xFFFD) { e[D[137][j]] = 35072 + j; d[35072 + j] = D[137][j];} +D[138] = "����������������������������������������������������������������魁晦械海灰界皆絵芥蟹開階貝凱劾外咳害崖慨概涯碍蓋街該鎧骸浬馨蛙垣柿蛎鈎劃嚇各廓拡撹格核殻獲確穫覚角赫較郭閣隔革学岳楽額顎掛笠樫�橿梶鰍潟割喝恰括活渇滑葛褐轄且鰹叶椛樺鞄株兜竃蒲釜鎌噛鴨栢茅萱粥刈苅瓦乾侃冠寒刊勘勧巻喚堪姦完官寛干幹患感慣憾換敢柑桓棺款歓汗漢澗潅環甘監看竿管簡緩缶翰肝艦莞観諌貫還鑑間閑関陥韓館舘丸含岸巌玩癌眼岩翫贋雁頑顔願企伎危喜器基奇嬉寄岐希幾忌揮机旗既期棋棄���".split(""); +for(j = 0; j != D[138].length; ++j) if(D[138][j].charCodeAt(0) !== 0xFFFD) { e[D[138][j]] = 35328 + j; d[35328 + j] = D[138][j];} +D[139] = "����������������������������������������������������������������機帰毅気汽畿祈季稀紀徽規記貴起軌輝飢騎鬼亀偽儀妓宜戯技擬欺犠疑祇義蟻誼議掬菊鞠吉吃喫桔橘詰砧杵黍却客脚虐逆丘久仇休及吸宮弓急救�朽求汲泣灸球究窮笈級糾給旧牛去居巨拒拠挙渠虚許距鋸漁禦魚亨享京供侠僑兇競共凶協匡卿叫喬境峡強彊怯恐恭挟教橋況狂狭矯胸脅興蕎郷鏡響饗驚仰凝尭暁業局曲極玉桐粁僅勤均巾錦斤欣欽琴禁禽筋緊芹菌衿襟謹近金吟銀九倶句区狗玖矩苦躯駆駈駒具愚虞喰空偶寓遇隅串櫛釧屑屈���".split(""); +for(j = 0; j != D[139].length; ++j) if(D[139][j].charCodeAt(0) !== 0xFFFD) { e[D[139][j]] = 35584 + j; d[35584 + j] = D[139][j];} +D[140] = "����������������������������������������������������������������掘窟沓靴轡窪熊隈粂栗繰桑鍬勲君薫訓群軍郡卦袈祁係傾刑兄啓圭珪型契形径恵慶慧憩掲携敬景桂渓畦稽系経継繋罫茎荊蛍計詣警軽頚鶏芸迎鯨�劇戟撃激隙桁傑欠決潔穴結血訣月件倹倦健兼券剣喧圏堅嫌建憲懸拳捲検権牽犬献研硯絹県肩見謙賢軒遣鍵険顕験鹸元原厳幻弦減源玄現絃舷言諺限乎個古呼固姑孤己庫弧戸故枯湖狐糊袴股胡菰虎誇跨鈷雇顧鼓五互伍午呉吾娯後御悟梧檎瑚碁語誤護醐乞鯉交佼侯候倖光公功効勾厚口向���".split(""); +for(j = 0; j != D[140].length; ++j) if(D[140][j].charCodeAt(0) !== 0xFFFD) { e[D[140][j]] = 35840 + j; d[35840 + j] = D[140][j];} +D[141] = "����������������������������������������������������������������后喉坑垢好孔孝宏工巧巷幸広庚康弘恒慌抗拘控攻昂晃更杭校梗構江洪浩港溝甲皇硬稿糠紅紘絞綱耕考肯肱腔膏航荒行衡講貢購郊酵鉱砿鋼閤降�項香高鴻剛劫号合壕拷濠豪轟麹克刻告国穀酷鵠黒獄漉腰甑忽惚骨狛込此頃今困坤墾婚恨懇昏昆根梱混痕紺艮魂些佐叉唆嵯左差査沙瑳砂詐鎖裟坐座挫債催再最哉塞妻宰彩才採栽歳済災采犀砕砦祭斎細菜裁載際剤在材罪財冴坂阪堺榊肴咲崎埼碕鷺作削咋搾昨朔柵窄策索錯桜鮭笹匙冊刷���".split(""); +for(j = 0; j != D[141].length; ++j) if(D[141][j].charCodeAt(0) !== 0xFFFD) { e[D[141][j]] = 36096 + j; d[36096 + j] = D[141][j];} +D[142] = "����������������������������������������������������������������察拶撮擦札殺薩雑皐鯖捌錆鮫皿晒三傘参山惨撒散桟燦珊産算纂蚕讃賛酸餐斬暫残仕仔伺使刺司史嗣四士始姉姿子屍市師志思指支孜斯施旨枝止�死氏獅祉私糸紙紫肢脂至視詞詩試誌諮資賜雌飼歯事似侍児字寺慈持時次滋治爾璽痔磁示而耳自蒔辞汐鹿式識鴫竺軸宍雫七叱執失嫉室悉湿漆疾質実蔀篠偲柴芝屡蕊縞舎写射捨赦斜煮社紗者謝車遮蛇邪借勺尺杓灼爵酌釈錫若寂弱惹主取守手朱殊狩珠種腫趣酒首儒受呪寿授樹綬需囚収周���".split(""); +for(j = 0; j != D[142].length; ++j) if(D[142][j].charCodeAt(0) !== 0xFFFD) { e[D[142][j]] = 36352 + j; d[36352 + j] = D[142][j];} +D[143] = "����������������������������������������������������������������宗就州修愁拾洲秀秋終繍習臭舟蒐衆襲讐蹴輯週酋酬集醜什住充十従戎柔汁渋獣縦重銃叔夙宿淑祝縮粛塾熟出術述俊峻春瞬竣舜駿准循旬楯殉淳�準潤盾純巡遵醇順処初所暑曙渚庶緒署書薯藷諸助叙女序徐恕鋤除傷償勝匠升召哨商唱嘗奨妾娼宵将小少尚庄床廠彰承抄招掌捷昇昌昭晶松梢樟樵沼消渉湘焼焦照症省硝礁祥称章笑粧紹肖菖蒋蕉衝裳訟証詔詳象賞醤鉦鍾鐘障鞘上丈丞乗冗剰城場壌嬢常情擾条杖浄状畳穣蒸譲醸錠嘱埴飾���".split(""); +for(j = 0; j != D[143].length; ++j) if(D[143][j].charCodeAt(0) !== 0xFFFD) { e[D[143][j]] = 36608 + j; d[36608 + j] = D[143][j];} +D[144] = "����������������������������������������������������������������拭植殖燭織職色触食蝕辱尻伸信侵唇娠寝審心慎振新晋森榛浸深申疹真神秦紳臣芯薪親診身辛進針震人仁刃塵壬尋甚尽腎訊迅陣靭笥諏須酢図厨�逗吹垂帥推水炊睡粋翠衰遂酔錐錘随瑞髄崇嵩数枢趨雛据杉椙菅頗雀裾澄摺寸世瀬畝是凄制勢姓征性成政整星晴棲栖正清牲生盛精聖声製西誠誓請逝醒青静斉税脆隻席惜戚斥昔析石積籍績脊責赤跡蹟碩切拙接摂折設窃節説雪絶舌蝉仙先千占宣専尖川戦扇撰栓栴泉浅洗染潜煎煽旋穿箭線���".split(""); +for(j = 0; j != D[144].length; ++j) if(D[144][j].charCodeAt(0) !== 0xFFFD) { e[D[144][j]] = 36864 + j; d[36864 + j] = D[144][j];} +D[145] = "����������������������������������������������������������������繊羨腺舛船薦詮賎践選遷銭銑閃鮮前善漸然全禅繕膳糎噌塑岨措曾曽楚狙疏疎礎祖租粗素組蘇訴阻遡鼠僧創双叢倉喪壮奏爽宋層匝惣想捜掃挿掻�操早曹巣槍槽漕燥争痩相窓糟総綜聡草荘葬蒼藻装走送遭鎗霜騒像増憎臓蔵贈造促側則即息捉束測足速俗属賊族続卒袖其揃存孫尊損村遜他多太汰詑唾堕妥惰打柁舵楕陀駄騨体堆対耐岱帯待怠態戴替泰滞胎腿苔袋貸退逮隊黛鯛代台大第醍題鷹滝瀧卓啄宅托択拓沢濯琢託鐸濁諾茸凧蛸只���".split(""); +for(j = 0; j != D[145].length; ++j) if(D[145][j].charCodeAt(0) !== 0xFFFD) { e[D[145][j]] = 37120 + j; d[37120 + j] = D[145][j];} +D[146] = "����������������������������������������������������������������叩但達辰奪脱巽竪辿棚谷狸鱈樽誰丹単嘆坦担探旦歎淡湛炭短端箪綻耽胆蛋誕鍛団壇弾断暖檀段男談値知地弛恥智池痴稚置致蜘遅馳築畜竹筑蓄�逐秩窒茶嫡着中仲宙忠抽昼柱注虫衷註酎鋳駐樗瀦猪苧著貯丁兆凋喋寵帖帳庁弔張彫徴懲挑暢朝潮牒町眺聴脹腸蝶調諜超跳銚長頂鳥勅捗直朕沈珍賃鎮陳津墜椎槌追鎚痛通塚栂掴槻佃漬柘辻蔦綴鍔椿潰坪壷嬬紬爪吊釣鶴亭低停偵剃貞呈堤定帝底庭廷弟悌抵挺提梯汀碇禎程締艇訂諦蹄逓���".split(""); +for(j = 0; j != D[146].length; ++j) if(D[146][j].charCodeAt(0) !== 0xFFFD) { e[D[146][j]] = 37376 + j; d[37376 + j] = D[146][j];} +D[147] = "����������������������������������������������������������������邸鄭釘鼎泥摘擢敵滴的笛適鏑溺哲徹撤轍迭鉄典填天展店添纏甜貼転顛点伝殿澱田電兎吐堵塗妬屠徒斗杜渡登菟賭途都鍍砥砺努度土奴怒倒党冬�凍刀唐塔塘套宕島嶋悼投搭東桃梼棟盗淘湯涛灯燈当痘祷等答筒糖統到董蕩藤討謄豆踏逃透鐙陶頭騰闘働動同堂導憧撞洞瞳童胴萄道銅峠鴇匿得徳涜特督禿篤毒独読栃橡凸突椴届鳶苫寅酉瀞噸屯惇敦沌豚遁頓呑曇鈍奈那内乍凪薙謎灘捺鍋楢馴縄畷南楠軟難汝二尼弐迩匂賑肉虹廿日乳入���".split(""); +for(j = 0; j != D[147].length; ++j) if(D[147][j].charCodeAt(0) !== 0xFFFD) { e[D[147][j]] = 37632 + j; d[37632 + j] = D[147][j];} +D[148] = "����������������������������������������������������������������如尿韮任妊忍認濡禰祢寧葱猫熱年念捻撚燃粘乃廼之埜嚢悩濃納能脳膿農覗蚤巴把播覇杷波派琶破婆罵芭馬俳廃拝排敗杯盃牌背肺輩配倍培媒梅�楳煤狽買売賠陪這蝿秤矧萩伯剥博拍柏泊白箔粕舶薄迫曝漠爆縛莫駁麦函箱硲箸肇筈櫨幡肌畑畠八鉢溌発醗髪伐罰抜筏閥鳩噺塙蛤隼伴判半反叛帆搬斑板氾汎版犯班畔繁般藩販範釆煩頒飯挽晩番盤磐蕃蛮匪卑否妃庇彼悲扉批披斐比泌疲皮碑秘緋罷肥被誹費避非飛樋簸備尾微枇毘琵眉美���".split(""); +for(j = 0; j != D[148].length; ++j) if(D[148][j].charCodeAt(0) !== 0xFFFD) { e[D[148][j]] = 37888 + j; d[37888 + j] = D[148][j];} +D[149] = "����������������������������������������������������������������鼻柊稗匹疋髭彦膝菱肘弼必畢筆逼桧姫媛紐百謬俵彪標氷漂瓢票表評豹廟描病秒苗錨鋲蒜蛭鰭品彬斌浜瀕貧賓頻敏瓶不付埠夫婦富冨布府怖扶敷�斧普浮父符腐膚芙譜負賦赴阜附侮撫武舞葡蕪部封楓風葺蕗伏副復幅服福腹複覆淵弗払沸仏物鮒分吻噴墳憤扮焚奮粉糞紛雰文聞丙併兵塀幣平弊柄並蔽閉陛米頁僻壁癖碧別瞥蔑箆偏変片篇編辺返遍便勉娩弁鞭保舗鋪圃捕歩甫補輔穂募墓慕戊暮母簿菩倣俸包呆報奉宝峰峯崩庖抱捧放方朋���".split(""); +for(j = 0; j != D[149].length; ++j) if(D[149][j].charCodeAt(0) !== 0xFFFD) { e[D[149][j]] = 38144 + j; d[38144 + j] = D[149][j];} +D[150] = "����������������������������������������������������������������法泡烹砲縫胞芳萌蓬蜂褒訪豊邦鋒飽鳳鵬乏亡傍剖坊妨帽忘忙房暴望某棒冒紡肪膨謀貌貿鉾防吠頬北僕卜墨撲朴牧睦穆釦勃没殆堀幌奔本翻凡盆�摩磨魔麻埋妹昧枚毎哩槙幕膜枕鮪柾鱒桝亦俣又抹末沫迄侭繭麿万慢満漫蔓味未魅巳箕岬密蜜湊蓑稔脈妙粍民眠務夢無牟矛霧鵡椋婿娘冥名命明盟迷銘鳴姪牝滅免棉綿緬面麺摸模茂妄孟毛猛盲網耗蒙儲木黙目杢勿餅尤戻籾貰問悶紋門匁也冶夜爺耶野弥矢厄役約薬訳躍靖柳薮鑓愉愈油癒���".split(""); +for(j = 0; j != D[150].length; ++j) if(D[150][j].charCodeAt(0) !== 0xFFFD) { e[D[150][j]] = 38400 + j; d[38400 + j] = D[150][j];} +D[151] = "����������������������������������������������������������������諭輸唯佑優勇友宥幽悠憂揖有柚湧涌猶猷由祐裕誘遊邑郵雄融夕予余与誉輿預傭幼妖容庸揚揺擁曜楊様洋溶熔用窯羊耀葉蓉要謡踊遥陽養慾抑欲�沃浴翌翼淀羅螺裸来莱頼雷洛絡落酪乱卵嵐欄濫藍蘭覧利吏履李梨理璃痢裏裡里離陸律率立葎掠略劉流溜琉留硫粒隆竜龍侶慮旅虜了亮僚両凌寮料梁涼猟療瞭稜糧良諒遼量陵領力緑倫厘林淋燐琳臨輪隣鱗麟瑠塁涙累類令伶例冷励嶺怜玲礼苓鈴隷零霊麗齢暦歴列劣烈裂廉恋憐漣煉簾練聯���".split(""); +for(j = 0; j != D[151].length; ++j) if(D[151][j].charCodeAt(0) !== 0xFFFD) { e[D[151][j]] = 38656 + j; d[38656 + j] = D[151][j];} +D[152] = "����������������������������������������������������������������蓮連錬呂魯櫓炉賂路露労婁廊弄朗楼榔浪漏牢狼篭老聾蝋郎六麓禄肋録論倭和話歪賄脇惑枠鷲亙亘鰐詫藁蕨椀湾碗腕��������������������������������������������弌丐丕个丱丶丼丿乂乖乘亂亅豫亊舒弍于亞亟亠亢亰亳亶从仍仄仆仂仗仞仭仟价伉佚估佛佝佗佇佶侈侏侘佻佩佰侑佯來侖儘俔俟俎俘俛俑俚俐俤俥倚倨倔倪倥倅伜俶倡倩倬俾俯們倆偃假會偕偐偈做偖偬偸傀傚傅傴傲���".split(""); +for(j = 0; j != D[152].length; ++j) if(D[152][j].charCodeAt(0) !== 0xFFFD) { e[D[152][j]] = 38912 + j; d[38912 + j] = D[152][j];} +D[153] = "����������������������������������������������������������������僉僊傳僂僖僞僥僭僣僮價僵儉儁儂儖儕儔儚儡儺儷儼儻儿兀兒兌兔兢竸兩兪兮冀冂囘册冉冏冑冓冕冖冤冦冢冩冪冫决冱冲冰况冽凅凉凛几處凩凭�凰凵凾刄刋刔刎刧刪刮刳刹剏剄剋剌剞剔剪剴剩剳剿剽劍劔劒剱劈劑辨辧劬劭劼劵勁勍勗勞勣勦飭勠勳勵勸勹匆匈甸匍匐匏匕匚匣匯匱匳匸區卆卅丗卉卍凖卞卩卮夘卻卷厂厖厠厦厥厮厰厶參簒雙叟曼燮叮叨叭叺吁吽呀听吭吼吮吶吩吝呎咏呵咎呟呱呷呰咒呻咀呶咄咐咆哇咢咸咥咬哄哈咨���".split(""); +for(j = 0; j != D[153].length; ++j) if(D[153][j].charCodeAt(0) !== 0xFFFD) { e[D[153][j]] = 39168 + j; d[39168 + j] = D[153][j];} +D[154] = "����������������������������������������������������������������咫哂咤咾咼哘哥哦唏唔哽哮哭哺哢唹啀啣啌售啜啅啖啗唸唳啝喙喀咯喊喟啻啾喘喞單啼喃喩喇喨嗚嗅嗟嗄嗜嗤嗔嘔嗷嘖嗾嗽嘛嗹噎噐營嘴嘶嘲嘸�噫噤嘯噬噪嚆嚀嚊嚠嚔嚏嚥嚮嚶嚴囂嚼囁囃囀囈囎囑囓囗囮囹圀囿圄圉圈國圍圓團圖嗇圜圦圷圸坎圻址坏坩埀垈坡坿垉垓垠垳垤垪垰埃埆埔埒埓堊埖埣堋堙堝塲堡塢塋塰毀塒堽塹墅墹墟墫墺壞墻墸墮壅壓壑壗壙壘壥壜壤壟壯壺壹壻壼壽夂夊夐夛梦夥夬夭夲夸夾竒奕奐奎奚奘奢奠奧奬奩���".split(""); +for(j = 0; j != D[154].length; ++j) if(D[154][j].charCodeAt(0) !== 0xFFFD) { e[D[154][j]] = 39424 + j; d[39424 + j] = D[154][j];} +D[155] = "����������������������������������������������������������������奸妁妝佞侫妣妲姆姨姜妍姙姚娥娟娑娜娉娚婀婬婉娵娶婢婪媚媼媾嫋嫂媽嫣嫗嫦嫩嫖嫺嫻嬌嬋嬖嬲嫐嬪嬶嬾孃孅孀孑孕孚孛孥孩孰孳孵學斈孺宀�它宦宸寃寇寉寔寐寤實寢寞寥寫寰寶寳尅將專對尓尠尢尨尸尹屁屆屎屓屐屏孱屬屮乢屶屹岌岑岔妛岫岻岶岼岷峅岾峇峙峩峽峺峭嶌峪崋崕崗嵜崟崛崑崔崢崚崙崘嵌嵒嵎嵋嵬嵳嵶嶇嶄嶂嶢嶝嶬嶮嶽嶐嶷嶼巉巍巓巒巖巛巫已巵帋帚帙帑帛帶帷幄幃幀幎幗幔幟幢幤幇幵并幺麼广庠廁廂廈廐廏���".split(""); +for(j = 0; j != D[155].length; ++j) if(D[155][j].charCodeAt(0) !== 0xFFFD) { e[D[155][j]] = 39680 + j; d[39680 + j] = D[155][j];} +D[156] = "����������������������������������������������������������������廖廣廝廚廛廢廡廨廩廬廱廳廰廴廸廾弃弉彝彜弋弑弖弩弭弸彁彈彌彎弯彑彖彗彙彡彭彳彷徃徂彿徊很徑徇從徙徘徠徨徭徼忖忻忤忸忱忝悳忿怡恠�怙怐怩怎怱怛怕怫怦怏怺恚恁恪恷恟恊恆恍恣恃恤恂恬恫恙悁悍惧悃悚悄悛悖悗悒悧悋惡悸惠惓悴忰悽惆悵惘慍愕愆惶惷愀惴惺愃愡惻惱愍愎慇愾愨愧慊愿愼愬愴愽慂慄慳慷慘慙慚慫慴慯慥慱慟慝慓慵憙憖憇憬憔憚憊憑憫憮懌懊應懷懈懃懆憺懋罹懍懦懣懶懺懴懿懽懼懾戀戈戉戍戌戔戛���".split(""); +for(j = 0; j != D[156].length; ++j) if(D[156][j].charCodeAt(0) !== 0xFFFD) { e[D[156][j]] = 39936 + j; d[39936 + j] = D[156][j];} +D[157] = "����������������������������������������������������������������戞戡截戮戰戲戳扁扎扞扣扛扠扨扼抂抉找抒抓抖拔抃抔拗拑抻拏拿拆擔拈拜拌拊拂拇抛拉挌拮拱挧挂挈拯拵捐挾捍搜捏掖掎掀掫捶掣掏掉掟掵捫�捩掾揩揀揆揣揉插揶揄搖搴搆搓搦搶攝搗搨搏摧摯摶摎攪撕撓撥撩撈撼據擒擅擇撻擘擂擱擧舉擠擡抬擣擯攬擶擴擲擺攀擽攘攜攅攤攣攫攴攵攷收攸畋效敖敕敍敘敞敝敲數斂斃變斛斟斫斷旃旆旁旄旌旒旛旙无旡旱杲昊昃旻杳昵昶昴昜晏晄晉晁晞晝晤晧晨晟晢晰暃暈暎暉暄暘暝曁暹曉暾暼���".split(""); +for(j = 0; j != D[157].length; ++j) if(D[157][j].charCodeAt(0) !== 0xFFFD) { e[D[157][j]] = 40192 + j; d[40192 + j] = D[157][j];} +D[158] = "����������������������������������������������������������������曄暸曖曚曠昿曦曩曰曵曷朏朖朞朦朧霸朮朿朶杁朸朷杆杞杠杙杣杤枉杰枩杼杪枌枋枦枡枅枷柯枴柬枳柩枸柤柞柝柢柮枹柎柆柧檜栞框栩桀桍栲桎�梳栫桙档桷桿梟梏梭梔條梛梃檮梹桴梵梠梺椏梍桾椁棊椈棘椢椦棡椌棍棔棧棕椶椒椄棗棣椥棹棠棯椨椪椚椣椡棆楹楷楜楸楫楔楾楮椹楴椽楙椰楡楞楝榁楪榲榮槐榿槁槓榾槎寨槊槝榻槃榧樮榑榠榜榕榴槞槨樂樛槿權槹槲槧樅榱樞槭樔槫樊樒櫁樣樓橄樌橲樶橸橇橢橙橦橈樸樢檐檍檠檄檢檣���".split(""); +for(j = 0; j != D[158].length; ++j) if(D[158][j].charCodeAt(0) !== 0xFFFD) { e[D[158][j]] = 40448 + j; d[40448 + j] = D[158][j];} +D[159] = "����������������������������������������������������������������檗蘗檻櫃櫂檸檳檬櫞櫑櫟檪櫚櫪櫻欅蘖櫺欒欖鬱欟欸欷盜欹飮歇歃歉歐歙歔歛歟歡歸歹歿殀殄殃殍殘殕殞殤殪殫殯殲殱殳殷殼毆毋毓毟毬毫毳毯�麾氈氓气氛氤氣汞汕汢汪沂沍沚沁沛汾汨汳沒沐泄泱泓沽泗泅泝沮沱沾沺泛泯泙泪洟衍洶洫洽洸洙洵洳洒洌浣涓浤浚浹浙涎涕濤涅淹渕渊涵淇淦涸淆淬淞淌淨淒淅淺淙淤淕淪淮渭湮渮渙湲湟渾渣湫渫湶湍渟湃渺湎渤滿渝游溂溪溘滉溷滓溽溯滄溲滔滕溏溥滂溟潁漑灌滬滸滾漿滲漱滯漲滌���".split(""); +for(j = 0; j != D[159].length; ++j) if(D[159][j].charCodeAt(0) !== 0xFFFD) { e[D[159][j]] = 40704 + j; d[40704 + j] = D[159][j];} +D[224] = "����������������������������������������������������������������漾漓滷澆潺潸澁澀潯潛濳潭澂潼潘澎澑濂潦澳澣澡澤澹濆澪濟濕濬濔濘濱濮濛瀉瀋濺瀑瀁瀏濾瀛瀚潴瀝瀘瀟瀰瀾瀲灑灣炙炒炯烱炬炸炳炮烟烋烝�烙焉烽焜焙煥煕熈煦煢煌煖煬熏燻熄熕熨熬燗熹熾燒燉燔燎燠燬燧燵燼燹燿爍爐爛爨爭爬爰爲爻爼爿牀牆牋牘牴牾犂犁犇犒犖犢犧犹犲狃狆狄狎狒狢狠狡狹狷倏猗猊猜猖猝猴猯猩猥猾獎獏默獗獪獨獰獸獵獻獺珈玳珎玻珀珥珮珞璢琅瑯琥珸琲琺瑕琿瑟瑙瑁瑜瑩瑰瑣瑪瑶瑾璋璞璧瓊瓏瓔珱���".split(""); +for(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];} +D[225] = "����������������������������������������������������������������瓠瓣瓧瓩瓮瓲瓰瓱瓸瓷甄甃甅甌甎甍甕甓甞甦甬甼畄畍畊畉畛畆畚畩畤畧畫畭畸當疆疇畴疊疉疂疔疚疝疥疣痂疳痃疵疽疸疼疱痍痊痒痙痣痞痾痿�痼瘁痰痺痲痳瘋瘍瘉瘟瘧瘠瘡瘢瘤瘴瘰瘻癇癈癆癜癘癡癢癨癩癪癧癬癰癲癶癸發皀皃皈皋皎皖皓皙皚皰皴皸皹皺盂盍盖盒盞盡盥盧盪蘯盻眈眇眄眩眤眞眥眦眛眷眸睇睚睨睫睛睥睿睾睹瞎瞋瞑瞠瞞瞰瞶瞹瞿瞼瞽瞻矇矍矗矚矜矣矮矼砌砒礦砠礪硅碎硴碆硼碚碌碣碵碪碯磑磆磋磔碾碼磅磊磬���".split(""); +for(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];} +D[226] = "����������������������������������������������������������������磧磚磽磴礇礒礑礙礬礫祀祠祗祟祚祕祓祺祿禊禝禧齋禪禮禳禹禺秉秕秧秬秡秣稈稍稘稙稠稟禀稱稻稾稷穃穗穉穡穢穩龝穰穹穽窈窗窕窘窖窩竈窰�窶竅竄窿邃竇竊竍竏竕竓站竚竝竡竢竦竭竰笂笏笊笆笳笘笙笞笵笨笶筐筺笄筍笋筌筅筵筥筴筧筰筱筬筮箝箘箟箍箜箚箋箒箏筝箙篋篁篌篏箴篆篝篩簑簔篦篥籠簀簇簓篳篷簗簍篶簣簧簪簟簷簫簽籌籃籔籏籀籐籘籟籤籖籥籬籵粃粐粤粭粢粫粡粨粳粲粱粮粹粽糀糅糂糘糒糜糢鬻糯糲糴糶糺紆���".split(""); +for(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];} +D[227] = "����������������������������������������������������������������紂紜紕紊絅絋紮紲紿紵絆絳絖絎絲絨絮絏絣經綉絛綏絽綛綺綮綣綵緇綽綫總綢綯緜綸綟綰緘緝緤緞緻緲緡縅縊縣縡縒縱縟縉縋縢繆繦縻縵縹繃縷�縲縺繧繝繖繞繙繚繹繪繩繼繻纃緕繽辮繿纈纉續纒纐纓纔纖纎纛纜缸缺罅罌罍罎罐网罕罔罘罟罠罨罩罧罸羂羆羃羈羇羌羔羞羝羚羣羯羲羹羮羶羸譱翅翆翊翕翔翡翦翩翳翹飜耆耄耋耒耘耙耜耡耨耿耻聊聆聒聘聚聟聢聨聳聲聰聶聹聽聿肄肆肅肛肓肚肭冐肬胛胥胙胝胄胚胖脉胯胱脛脩脣脯腋���".split(""); +for(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];} +D[228] = "����������������������������������������������������������������隋腆脾腓腑胼腱腮腥腦腴膃膈膊膀膂膠膕膤膣腟膓膩膰膵膾膸膽臀臂膺臉臍臑臙臘臈臚臟臠臧臺臻臾舁舂舅與舊舍舐舖舩舫舸舳艀艙艘艝艚艟艤�艢艨艪艫舮艱艷艸艾芍芒芫芟芻芬苡苣苟苒苴苳苺莓范苻苹苞茆苜茉苙茵茴茖茲茱荀茹荐荅茯茫茗茘莅莚莪莟莢莖茣莎莇莊荼莵荳荵莠莉莨菴萓菫菎菽萃菘萋菁菷萇菠菲萍萢萠莽萸蔆菻葭萪萼蕚蒄葷葫蒭葮蒂葩葆萬葯葹萵蓊葢蒹蒿蒟蓙蓍蒻蓚蓐蓁蓆蓖蒡蔡蓿蓴蔗蔘蔬蔟蔕蔔蓼蕀蕣蕘蕈���".split(""); +for(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];} +D[229] = "����������������������������������������������������������������蕁蘂蕋蕕薀薤薈薑薊薨蕭薔薛藪薇薜蕷蕾薐藉薺藏薹藐藕藝藥藜藹蘊蘓蘋藾藺蘆蘢蘚蘰蘿虍乕虔號虧虱蚓蚣蚩蚪蚋蚌蚶蚯蛄蛆蚰蛉蠣蚫蛔蛞蛩蛬�蛟蛛蛯蜒蜆蜈蜀蜃蛻蜑蜉蜍蛹蜊蜴蜿蜷蜻蜥蜩蜚蝠蝟蝸蝌蝎蝴蝗蝨蝮蝙蝓蝣蝪蠅螢螟螂螯蟋螽蟀蟐雖螫蟄螳蟇蟆螻蟯蟲蟠蠏蠍蟾蟶蟷蠎蟒蠑蠖蠕蠢蠡蠱蠶蠹蠧蠻衄衂衒衙衞衢衫袁衾袞衵衽袵衲袂袗袒袮袙袢袍袤袰袿袱裃裄裔裘裙裝裹褂裼裴裨裲褄褌褊褓襃褞褥褪褫襁襄褻褶褸襌褝襠襞���".split(""); +for(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];} +D[230] = "����������������������������������������������������������������襦襤襭襪襯襴襷襾覃覈覊覓覘覡覩覦覬覯覲覺覽覿觀觚觜觝觧觴觸訃訖訐訌訛訝訥訶詁詛詒詆詈詼詭詬詢誅誂誄誨誡誑誥誦誚誣諄諍諂諚諫諳諧�諤諱謔諠諢諷諞諛謌謇謚諡謖謐謗謠謳鞫謦謫謾謨譁譌譏譎證譖譛譚譫譟譬譯譴譽讀讌讎讒讓讖讙讚谺豁谿豈豌豎豐豕豢豬豸豺貂貉貅貊貍貎貔豼貘戝貭貪貽貲貳貮貶賈賁賤賣賚賽賺賻贄贅贊贇贏贍贐齎贓賍贔贖赧赭赱赳趁趙跂趾趺跏跚跖跌跛跋跪跫跟跣跼踈踉跿踝踞踐踟蹂踵踰踴蹊���".split(""); +for(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];} +D[231] = "����������������������������������������������������������������蹇蹉蹌蹐蹈蹙蹤蹠踪蹣蹕蹶蹲蹼躁躇躅躄躋躊躓躑躔躙躪躡躬躰軆躱躾軅軈軋軛軣軼軻軫軾輊輅輕輒輙輓輜輟輛輌輦輳輻輹轅轂輾轌轉轆轎轗轜�轢轣轤辜辟辣辭辯辷迚迥迢迪迯邇迴逅迹迺逑逕逡逍逞逖逋逧逶逵逹迸遏遐遑遒逎遉逾遖遘遞遨遯遶隨遲邂遽邁邀邊邉邏邨邯邱邵郢郤扈郛鄂鄒鄙鄲鄰酊酖酘酣酥酩酳酲醋醉醂醢醫醯醪醵醴醺釀釁釉釋釐釖釟釡釛釼釵釶鈞釿鈔鈬鈕鈑鉞鉗鉅鉉鉤鉈銕鈿鉋鉐銜銖銓銛鉚鋏銹銷鋩錏鋺鍄錮���".split(""); +for(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];} +D[232] = "����������������������������������������������������������������錙錢錚錣錺錵錻鍜鍠鍼鍮鍖鎰鎬鎭鎔鎹鏖鏗鏨鏥鏘鏃鏝鏐鏈鏤鐚鐔鐓鐃鐇鐐鐶鐫鐵鐡鐺鑁鑒鑄鑛鑠鑢鑞鑪鈩鑰鑵鑷鑽鑚鑼鑾钁鑿閂閇閊閔閖閘閙�閠閨閧閭閼閻閹閾闊濶闃闍闌闕闔闖關闡闥闢阡阨阮阯陂陌陏陋陷陜陞陝陟陦陲陬隍隘隕隗險隧隱隲隰隴隶隸隹雎雋雉雍襍雜霍雕雹霄霆霈霓霎霑霏霖霙霤霪霰霹霽霾靄靆靈靂靉靜靠靤靦靨勒靫靱靹鞅靼鞁靺鞆鞋鞏鞐鞜鞨鞦鞣鞳鞴韃韆韈韋韜韭齏韲竟韶韵頏頌頸頤頡頷頽顆顏顋顫顯顰���".split(""); +for(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];} +D[233] = "����������������������������������������������������������������顱顴顳颪颯颱颶飄飃飆飩飫餃餉餒餔餘餡餝餞餤餠餬餮餽餾饂饉饅饐饋饑饒饌饕馗馘馥馭馮馼駟駛駝駘駑駭駮駱駲駻駸騁騏騅駢騙騫騷驅驂驀驃�騾驕驍驛驗驟驢驥驤驩驫驪骭骰骼髀髏髑髓體髞髟髢髣髦髯髫髮髴髱髷髻鬆鬘鬚鬟鬢鬣鬥鬧鬨鬩鬪鬮鬯鬲魄魃魏魍魎魑魘魴鮓鮃鮑鮖鮗鮟鮠鮨鮴鯀鯊鮹鯆鯏鯑鯒鯣鯢鯤鯔鯡鰺鯲鯱鯰鰕鰔鰉鰓鰌鰆鰈鰒鰊鰄鰮鰛鰥鰤鰡鰰鱇鰲鱆鰾鱚鱠鱧鱶鱸鳧鳬鳰鴉鴈鳫鴃鴆鴪鴦鶯鴣鴟鵄鴕鴒鵁鴿鴾鵆鵈���".split(""); +for(j = 0; j != D[233].length; ++j) if(D[233][j].charCodeAt(0) !== 0xFFFD) { e[D[233][j]] = 59648 + j; d[59648 + j] = D[233][j];} +D[234] = "����������������������������������������������������������������鵝鵞鵤鵑鵐鵙鵲鶉鶇鶫鵯鵺鶚鶤鶩鶲鷄鷁鶻鶸鶺鷆鷏鷂鷙鷓鷸鷦鷭鷯鷽鸚鸛鸞鹵鹹鹽麁麈麋麌麒麕麑麝麥麩麸麪麭靡黌黎黏黐黔黜點黝黠黥黨黯�黴黶黷黹黻黼黽鼇鼈皷鼕鼡鼬鼾齊齒齔齣齟齠齡齦齧齬齪齷齲齶龕龜龠堯槇遙瑤凜熙�������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];} +D[237] = "����������������������������������������������������������������纊褜鍈銈蓜俉炻昱棈鋹曻彅丨仡仼伀伃伹佖侒侊侚侔俍偀倢俿倞偆偰偂傔僴僘兊兤冝冾凬刕劜劦勀勛匀匇匤卲厓厲叝﨎咜咊咩哿喆坙坥垬埈埇﨏�塚增墲夋奓奛奝奣妤妺孖寀甯寘寬尞岦岺峵崧嵓﨑嵂嵭嶸嶹巐弡弴彧德忞恝悅悊惞惕愠惲愑愷愰憘戓抦揵摠撝擎敎昀昕昻昉昮昞昤晥晗晙晴晳暙暠暲暿曺朎朗杦枻桒柀栁桄棏﨓楨﨔榘槢樰橫橆橳橾櫢櫤毖氿汜沆汯泚洄涇浯涖涬淏淸淲淼渹湜渧渼溿澈澵濵瀅瀇瀨炅炫焏焄煜煆煇凞燁燾犱���".split(""); +for(j = 0; j != D[237].length; ++j) if(D[237][j].charCodeAt(0) !== 0xFFFD) { e[D[237][j]] = 60672 + j; d[60672 + j] = D[237][j];} +D[238] = "����������������������������������������������������������������犾猤猪獷玽珉珖珣珒琇珵琦琪琩琮瑢璉璟甁畯皂皜皞皛皦益睆劯砡硎硤硺礰礼神祥禔福禛竑竧靖竫箞精絈絜綷綠緖繒罇羡羽茁荢荿菇菶葈蒴蕓蕙�蕫﨟薰蘒﨡蠇裵訒訷詹誧誾諟諸諶譓譿賰賴贒赶﨣軏﨤逸遧郞都鄕鄧釚釗釞釭釮釤釥鈆鈐鈊鈺鉀鈼鉎鉙鉑鈹鉧銧鉷鉸鋧鋗鋙鋐﨧鋕鋠鋓錥錡鋻﨨錞鋿錝錂鍰鍗鎤鏆鏞鏸鐱鑅鑈閒隆﨩隝隯霳霻靃靍靏靑靕顗顥飯飼餧館馞驎髙髜魵魲鮏鮱鮻鰀鵰鵫鶴鸙黑��ⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹ¬¦'"���".split(""); +for(j = 0; j != D[238].length; ++j) if(D[238][j].charCodeAt(0) !== 0xFFFD) { e[D[238][j]] = 60928 + j; d[60928 + j] = D[238][j];} +D[250] = "����������������������������������������������������������������ⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩ¬¦'"㈱№℡∵纊褜鍈銈蓜俉炻昱棈鋹曻彅丨仡仼伀伃伹佖侒侊侚侔俍偀倢俿倞偆偰偂傔僴僘兊�兤冝冾凬刕劜劦勀勛匀匇匤卲厓厲叝﨎咜咊咩哿喆坙坥垬埈埇﨏塚增墲夋奓奛奝奣妤妺孖寀甯寘寬尞岦岺峵崧嵓﨑嵂嵭嶸嶹巐弡弴彧德忞恝悅悊惞惕愠惲愑愷愰憘戓抦揵摠撝擎敎昀昕昻昉昮昞昤晥晗晙晴晳暙暠暲暿曺朎朗杦枻桒柀栁桄棏﨓楨﨔榘槢樰橫橆橳橾櫢櫤毖氿汜沆汯泚洄涇浯���".split(""); +for(j = 0; j != D[250].length; ++j) if(D[250][j].charCodeAt(0) !== 0xFFFD) { e[D[250][j]] = 64000 + j; d[64000 + j] = D[250][j];} +D[251] = "����������������������������������������������������������������涖涬淏淸淲淼渹湜渧渼溿澈澵濵瀅瀇瀨炅炫焏焄煜煆煇凞燁燾犱犾猤猪獷玽珉珖珣珒琇珵琦琪琩琮瑢璉璟甁畯皂皜皞皛皦益睆劯砡硎硤硺礰礼神�祥禔福禛竑竧靖竫箞精絈絜綷綠緖繒罇羡羽茁荢荿菇菶葈蒴蕓蕙蕫﨟薰蘒﨡蠇裵訒訷詹誧誾諟諸諶譓譿賰賴贒赶﨣軏﨤逸遧郞都鄕鄧釚釗釞釭釮釤釥鈆鈐鈊鈺鉀鈼鉎鉙鉑鈹鉧銧鉷鉸鋧鋗鋙鋐﨧鋕鋠鋓錥錡鋻﨨錞鋿錝錂鍰鍗鎤鏆鏞鏸鐱鑅鑈閒隆﨩隝隯霳霻靃靍靏靑靕顗顥飯飼餧館馞驎髙���".split(""); +for(j = 0; j != D[251].length; ++j) if(D[251][j].charCodeAt(0) !== 0xFFFD) { e[D[251][j]] = 64256 + j; d[64256 + j] = D[251][j];} +D[252] = "����������������������������������������������������������������髜魵魲鮏鮱鮻鰀鵰鵫鶴鸙黑������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[252].length; ++j) if(D[252][j].charCodeAt(0) !== 0xFFFD) { e[D[252][j]] = 64512 + j; d[64512 + j] = D[252][j];} +return {"enc": e, "dec": d }; })(); +cptable[936] = (function(){ var d = [], e = {}, D = [], j; +D[0] = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€�������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];} +D[129] = "����������������������������������������������������������������丂丄丅丆丏丒丗丟丠両丣並丩丮丯丱丳丵丷丼乀乁乂乄乆乊乑乕乗乚乛乢乣乤乥乧乨乪乫乬乭乮乯乲乴乵乶乷乸乹乺乻乼乽乿亀亁亂亃亄亅亇亊�亐亖亗亙亜亝亞亣亪亯亰亱亴亶亷亸亹亼亽亾仈仌仏仐仒仚仛仜仠仢仦仧仩仭仮仯仱仴仸仹仺仼仾伀伂伃伄伅伆伇伈伋伌伒伓伔伕伖伜伝伡伣伨伩伬伭伮伱伳伵伷伹伻伾伿佀佁佂佄佅佇佈佉佊佋佌佒佔佖佡佢佦佨佪佫佭佮佱佲併佷佸佹佺佽侀侁侂侅來侇侊侌侎侐侒侓侕侖侘侙侚侜侞侟価侢�".split(""); +for(j = 0; j != D[129].length; ++j) if(D[129][j].charCodeAt(0) !== 0xFFFD) { e[D[129][j]] = 33024 + j; d[33024 + j] = D[129][j];} +D[130] = "����������������������������������������������������������������侤侫侭侰侱侲侳侴侶侷侸侹侺侻侼侽侾俀俁係俆俇俈俉俋俌俍俒俓俔俕俖俙俛俠俢俤俥俧俫俬俰俲俴俵俶俷俹俻俼俽俿倀倁倂倃倄倅倆倇倈倉倊�個倎倐們倓倕倖倗倛倝倞倠倢倣値倧倫倯倰倱倲倳倴倵倶倷倸倹倻倽倿偀偁偂偄偅偆偉偊偋偍偐偑偒偓偔偖偗偘偙偛偝偞偟偠偡偢偣偤偦偧偨偩偪偫偭偮偯偰偱偲偳側偵偸偹偺偼偽傁傂傃傄傆傇傉傊傋傌傎傏傐傑傒傓傔傕傖傗傘備傚傛傜傝傞傟傠傡傢傤傦傪傫傭傮傯傰傱傳傴債傶傷傸傹傼�".split(""); +for(j = 0; j != D[130].length; ++j) if(D[130][j].charCodeAt(0) !== 0xFFFD) { e[D[130][j]] = 33280 + j; d[33280 + j] = D[130][j];} +D[131] = "����������������������������������������������������������������傽傾傿僀僁僂僃僄僅僆僇僈僉僊僋僌働僎僐僑僒僓僔僕僗僘僙僛僜僝僞僟僠僡僢僣僤僥僨僩僪僫僯僰僱僲僴僶僷僸價僺僼僽僾僿儀儁儂儃億儅儈�儉儊儌儍儎儏儐儑儓儔儕儖儗儘儙儚儛儜儝儞償儠儢儣儤儥儦儧儨儩優儫儬儭儮儯儰儱儲儳儴儵儶儷儸儹儺儻儼儽儾兂兇兊兌兎兏児兒兓兗兘兙兛兝兞兟兠兡兣兤兦內兩兪兯兲兺兾兿冃冄円冇冊冋冎冏冐冑冓冔冘冚冝冞冟冡冣冦冧冨冩冪冭冮冴冸冹冺冾冿凁凂凃凅凈凊凍凎凐凒凓凔凕凖凗�".split(""); +for(j = 0; j != D[131].length; ++j) if(D[131][j].charCodeAt(0) !== 0xFFFD) { e[D[131][j]] = 33536 + j; d[33536 + j] = D[131][j];} +D[132] = "����������������������������������������������������������������凘凙凚凜凞凟凢凣凥処凧凨凩凪凬凮凱凲凴凷凾刄刅刉刋刌刏刐刓刔刕刜刞刟刡刢刣別刦刧刪刬刯刱刲刴刵刼刾剄剅剆則剈剉剋剎剏剒剓剕剗剘�剙剚剛剝剟剠剢剣剤剦剨剫剬剭剮剰剱剳剴創剶剷剸剹剺剻剼剾劀劃劄劅劆劇劉劊劋劌劍劎劏劑劒劔劕劖劗劘劙劚劜劤劥劦劧劮劯劰労劵劶劷劸効劺劻劼劽勀勁勂勄勅勆勈勊勌勍勎勏勑勓勔動勗務勚勛勜勝勞勠勡勢勣勥勦勧勨勩勪勫勬勭勮勯勱勲勳勴勵勶勷勸勻勼勽匁匂匃匄匇匉匊匋匌匎�".split(""); +for(j = 0; j != D[132].length; ++j) if(D[132][j].charCodeAt(0) !== 0xFFFD) { e[D[132][j]] = 33792 + j; d[33792 + j] = D[132][j];} +D[133] = "����������������������������������������������������������������匑匒匓匔匘匛匜匞匟匢匤匥匧匨匩匫匬匭匯匰匱匲匳匴匵匶匷匸匼匽區卂卄卆卋卌卍卐協単卙卛卝卥卨卪卬卭卲卶卹卻卼卽卾厀厁厃厇厈厊厎厏�厐厑厒厓厔厖厗厙厛厜厞厠厡厤厧厪厫厬厭厯厰厱厲厳厴厵厷厸厹厺厼厽厾叀參叄叅叆叇収叏叐叒叓叕叚叜叝叞叡叢叧叴叺叾叿吀吂吅吇吋吔吘吙吚吜吢吤吥吪吰吳吶吷吺吽吿呁呂呄呅呇呉呌呍呎呏呑呚呝呞呟呠呡呣呥呧呩呪呫呬呭呮呯呰呴呹呺呾呿咁咃咅咇咈咉咊咍咑咓咗咘咜咞咟咠咡�".split(""); +for(j = 0; j != D[133].length; ++j) if(D[133][j].charCodeAt(0) !== 0xFFFD) { e[D[133][j]] = 34048 + j; d[34048 + j] = D[133][j];} +D[134] = "����������������������������������������������������������������咢咥咮咰咲咵咶咷咹咺咼咾哃哅哊哋哖哘哛哠員哢哣哤哫哬哯哰哱哴哵哶哷哸哹哻哾唀唂唃唄唅唈唊唋唌唍唎唒唓唕唖唗唘唙唚唜唝唞唟唡唥唦�唨唩唫唭唲唴唵唶唸唹唺唻唽啀啂啅啇啈啋啌啍啎問啑啒啓啔啗啘啙啚啛啝啞啟啠啢啣啨啩啫啯啰啱啲啳啴啹啺啽啿喅喆喌喍喎喐喒喓喕喖喗喚喛喞喠喡喢喣喤喥喦喨喩喪喫喬喭單喯喰喲喴営喸喺喼喿嗀嗁嗂嗃嗆嗇嗈嗊嗋嗎嗏嗐嗕嗗嗘嗙嗚嗛嗞嗠嗢嗧嗩嗭嗮嗰嗱嗴嗶嗸嗹嗺嗻嗼嗿嘂嘃嘄嘅�".split(""); +for(j = 0; j != D[134].length; ++j) if(D[134][j].charCodeAt(0) !== 0xFFFD) { e[D[134][j]] = 34304 + j; d[34304 + j] = D[134][j];} +D[135] = "����������������������������������������������������������������嘆嘇嘊嘋嘍嘐嘑嘒嘓嘔嘕嘖嘗嘙嘚嘜嘝嘠嘡嘢嘥嘦嘨嘩嘪嘫嘮嘯嘰嘳嘵嘷嘸嘺嘼嘽嘾噀噁噂噃噄噅噆噇噈噉噊噋噏噐噑噒噓噕噖噚噛噝噞噟噠噡�噣噥噦噧噭噮噯噰噲噳噴噵噷噸噹噺噽噾噿嚀嚁嚂嚃嚄嚇嚈嚉嚊嚋嚌嚍嚐嚑嚒嚔嚕嚖嚗嚘嚙嚚嚛嚜嚝嚞嚟嚠嚡嚢嚤嚥嚦嚧嚨嚩嚪嚫嚬嚭嚮嚰嚱嚲嚳嚴嚵嚶嚸嚹嚺嚻嚽嚾嚿囀囁囂囃囄囅囆囇囈囉囋囌囍囎囏囐囑囒囓囕囖囘囙囜団囥囦囧囨囩囪囬囮囯囲図囶囷囸囻囼圀圁圂圅圇國圌圍圎圏圐圑�".split(""); +for(j = 0; j != D[135].length; ++j) if(D[135][j].charCodeAt(0) !== 0xFFFD) { e[D[135][j]] = 34560 + j; d[34560 + j] = D[135][j];} +D[136] = "����������������������������������������������������������������園圓圔圕圖圗團圙圚圛圝圞圠圡圢圤圥圦圧圫圱圲圴圵圶圷圸圼圽圿坁坃坄坅坆坈坉坋坒坓坔坕坖坘坙坢坣坥坧坬坮坰坱坲坴坵坸坹坺坽坾坿垀�垁垇垈垉垊垍垎垏垐垑垔垕垖垗垘垙垚垜垝垞垟垥垨垪垬垯垰垱垳垵垶垷垹垺垻垼垽垾垿埀埁埄埅埆埇埈埉埊埌埍埐埑埓埖埗埛埜埞埡埢埣埥埦埧埨埩埪埫埬埮埰埱埲埳埵埶執埻埼埾埿堁堃堄堅堈堉堊堌堎堏堐堒堓堔堖堗堘堚堛堜堝堟堢堣堥堦堧堨堩堫堬堭堮堯報堲堳場堶堷堸堹堺堻堼堽�".split(""); +for(j = 0; j != D[136].length; ++j) if(D[136][j].charCodeAt(0) !== 0xFFFD) { e[D[136][j]] = 34816 + j; d[34816 + j] = D[136][j];} +D[137] = "����������������������������������������������������������������堾堿塀塁塂塃塅塆塇塈塉塊塋塎塏塐塒塓塕塖塗塙塚塛塜塝塟塠塡塢塣塤塦塧塨塩塪塭塮塯塰塱塲塳塴塵塶塷塸塹塺塻塼塽塿墂墄墆墇墈墊墋墌�墍墎墏墐墑墔墕墖増墘墛墜墝墠墡墢墣墤墥墦墧墪墫墬墭墮墯墰墱墲墳墴墵墶墷墸墹墺墻墽墾墿壀壂壃壄壆壇壈壉壊壋壌壍壎壏壐壒壓壔壖壗壘壙壚壛壜壝壞壟壠壡壢壣壥壦壧壨壩壪壭壯壱売壴壵壷壸壺壻壼壽壾壿夀夁夃夅夆夈変夊夋夌夎夐夑夒夓夗夘夛夝夞夠夡夢夣夦夨夬夰夲夳夵夶夻�".split(""); +for(j = 0; j != D[137].length; ++j) if(D[137][j].charCodeAt(0) !== 0xFFFD) { e[D[137][j]] = 35072 + j; d[35072 + j] = D[137][j];} +D[138] = "����������������������������������������������������������������夽夾夿奀奃奅奆奊奌奍奐奒奓奙奛奜奝奞奟奡奣奤奦奧奨奩奪奫奬奭奮奯奰奱奲奵奷奺奻奼奾奿妀妅妉妋妌妎妏妐妑妔妕妘妚妛妜妝妟妠妡妢妦�妧妬妭妰妱妳妴妵妶妷妸妺妼妽妿姀姁姂姃姄姅姇姈姉姌姍姎姏姕姖姙姛姞姟姠姡姢姤姦姧姩姪姫姭姮姯姰姱姲姳姴姵姶姷姸姺姼姽姾娀娂娊娋娍娎娏娐娒娔娕娖娗娙娚娛娝娞娡娢娤娦娧娨娪娫娬娭娮娯娰娳娵娷娸娹娺娻娽娾娿婁婂婃婄婅婇婈婋婌婍婎婏婐婑婒婓婔婖婗婘婙婛婜婝婞婟婠�".split(""); +for(j = 0; j != D[138].length; ++j) if(D[138][j].charCodeAt(0) !== 0xFFFD) { e[D[138][j]] = 35328 + j; d[35328 + j] = D[138][j];} +D[139] = "����������������������������������������������������������������婡婣婤婥婦婨婩婫婬婭婮婯婰婱婲婳婸婹婻婼婽婾媀媁媂媃媄媅媆媇媈媉媊媋媌媍媎媏媐媑媓媔媕媖媗媘媙媜媝媞媟媠媡媢媣媤媥媦媧媨媩媫媬�媭媮媯媰媱媴媶媷媹媺媻媼媽媿嫀嫃嫄嫅嫆嫇嫈嫊嫋嫍嫎嫏嫐嫑嫓嫕嫗嫙嫚嫛嫝嫞嫟嫢嫤嫥嫧嫨嫪嫬嫭嫮嫯嫰嫲嫳嫴嫵嫶嫷嫸嫹嫺嫻嫼嫽嫾嫿嬀嬁嬂嬃嬄嬅嬆嬇嬈嬊嬋嬌嬍嬎嬏嬐嬑嬒嬓嬔嬕嬘嬙嬚嬛嬜嬝嬞嬟嬠嬡嬢嬣嬤嬥嬦嬧嬨嬩嬪嬫嬬嬭嬮嬯嬰嬱嬳嬵嬶嬸嬹嬺嬻嬼嬽嬾嬿孁孂孃孄孅孆孇�".split(""); +for(j = 0; j != D[139].length; ++j) if(D[139][j].charCodeAt(0) !== 0xFFFD) { e[D[139][j]] = 35584 + j; d[35584 + j] = D[139][j];} +D[140] = "����������������������������������������������������������������孈孉孊孋孌孍孎孏孒孖孞孠孡孧孨孫孭孮孯孲孴孶孷學孹孻孼孾孿宂宆宊宍宎宐宑宒宔宖実宧宨宩宬宭宮宯宱宲宷宺宻宼寀寁寃寈寉寊寋寍寎寏�寑寔寕寖寗寘寙寚寛寜寠寢寣實寧審寪寫寬寭寯寱寲寳寴寵寶寷寽対尀専尃尅將專尋尌對導尐尒尓尗尙尛尞尟尠尡尣尦尨尩尪尫尭尮尯尰尲尳尵尶尷屃屄屆屇屌屍屒屓屔屖屗屘屚屛屜屝屟屢層屧屨屩屪屫屬屭屰屲屳屴屵屶屷屸屻屼屽屾岀岃岄岅岆岇岉岊岋岎岏岒岓岕岝岞岟岠岡岤岥岦岧岨�".split(""); +for(j = 0; j != D[140].length; ++j) if(D[140][j].charCodeAt(0) !== 0xFFFD) { e[D[140][j]] = 35840 + j; d[35840 + j] = D[140][j];} +D[141] = "����������������������������������������������������������������岪岮岯岰岲岴岶岹岺岻岼岾峀峂峃峅峆峇峈峉峊峌峍峎峏峐峑峓峔峕峖峗峘峚峛峜峝峞峟峠峢峣峧峩峫峬峮峯峱峲峳峴峵島峷峸峹峺峼峽峾峿崀�崁崄崅崈崉崊崋崌崍崏崐崑崒崓崕崗崘崙崚崜崝崟崠崡崢崣崥崨崪崫崬崯崰崱崲崳崵崶崷崸崹崺崻崼崿嵀嵁嵂嵃嵄嵅嵆嵈嵉嵍嵎嵏嵐嵑嵒嵓嵔嵕嵖嵗嵙嵚嵜嵞嵟嵠嵡嵢嵣嵤嵥嵦嵧嵨嵪嵭嵮嵰嵱嵲嵳嵵嵶嵷嵸嵹嵺嵻嵼嵽嵾嵿嶀嶁嶃嶄嶅嶆嶇嶈嶉嶊嶋嶌嶍嶎嶏嶐嶑嶒嶓嶔嶕嶖嶗嶘嶚嶛嶜嶞嶟嶠�".split(""); +for(j = 0; j != D[141].length; ++j) if(D[141][j].charCodeAt(0) !== 0xFFFD) { e[D[141][j]] = 36096 + j; d[36096 + j] = D[141][j];} +D[142] = "����������������������������������������������������������������嶡嶢嶣嶤嶥嶦嶧嶨嶩嶪嶫嶬嶭嶮嶯嶰嶱嶲嶳嶴嶵嶶嶸嶹嶺嶻嶼嶽嶾嶿巀巁巂巃巄巆巇巈巉巊巋巌巎巏巐巑巒巓巔巕巖巗巘巙巚巜巟巠巣巤巪巬巭�巰巵巶巸巹巺巻巼巿帀帄帇帉帊帋帍帎帒帓帗帞帟帠帡帢帣帤帥帨帩帪師帬帯帰帲帳帴帵帶帹帺帾帿幀幁幃幆幇幈幉幊幋幍幎幏幐幑幒幓幖幗幘幙幚幜幝幟幠幣幤幥幦幧幨幩幪幫幬幭幮幯幰幱幵幷幹幾庁庂広庅庈庉庌庍庎庒庘庛庝庡庢庣庤庨庩庪庫庬庮庯庰庱庲庴庺庻庼庽庿廀廁廂廃廄廅�".split(""); +for(j = 0; j != D[142].length; ++j) if(D[142][j].charCodeAt(0) !== 0xFFFD) { e[D[142][j]] = 36352 + j; d[36352 + j] = D[142][j];} +D[143] = "����������������������������������������������������������������廆廇廈廋廌廍廎廏廐廔廕廗廘廙廚廜廝廞廟廠廡廢廣廤廥廦廧廩廫廬廭廮廯廰廱廲廳廵廸廹廻廼廽弅弆弇弉弌弍弎弐弒弔弖弙弚弜弝弞弡弢弣弤�弨弫弬弮弰弲弳弴張弶強弸弻弽弾弿彁彂彃彄彅彆彇彈彉彊彋彌彍彎彏彑彔彙彚彛彜彞彟彠彣彥彧彨彫彮彯彲彴彵彶彸彺彽彾彿徃徆徍徎徏徑従徔徖徚徛徝從徟徠徢徣徤徥徦徧復徫徬徯徰徱徲徳徴徶徸徹徺徻徾徿忀忁忂忇忈忊忋忎忓忔忕忚忛応忞忟忢忣忥忦忨忩忬忯忰忲忳忴忶忷忹忺忼怇�".split(""); +for(j = 0; j != D[143].length; ++j) if(D[143][j].charCodeAt(0) !== 0xFFFD) { e[D[143][j]] = 36608 + j; d[36608 + j] = D[143][j];} +D[144] = "����������������������������������������������������������������怈怉怋怌怐怑怓怗怘怚怞怟怢怣怤怬怭怮怰怱怲怳怴怶怷怸怹怺怽怾恀恄恅恆恇恈恉恊恌恎恏恑恓恔恖恗恘恛恜恞恟恠恡恥恦恮恱恲恴恵恷恾悀�悁悂悅悆悇悈悊悋悎悏悐悑悓悕悗悘悙悜悞悡悢悤悥悧悩悪悮悰悳悵悶悷悹悺悽悾悿惀惁惂惃惄惇惈惉惌惍惎惏惐惒惓惔惖惗惙惛惞惡惢惣惤惥惪惱惲惵惷惸惻惼惽惾惿愂愃愄愅愇愊愋愌愐愑愒愓愔愖愗愘愙愛愜愝愞愡愢愥愨愩愪愬愭愮愯愰愱愲愳愴愵愶愷愸愹愺愻愼愽愾慀慁慂慃慄慅慆�".split(""); +for(j = 0; j != D[144].length; ++j) if(D[144][j].charCodeAt(0) !== 0xFFFD) { e[D[144][j]] = 36864 + j; d[36864 + j] = D[144][j];} +D[145] = "����������������������������������������������������������������慇慉態慍慏慐慒慓慔慖慗慘慙慚慛慜慞慟慠慡慣慤慥慦慩慪慫慬慭慮慯慱慲慳慴慶慸慹慺慻慼慽慾慿憀憁憂憃憄憅憆憇憈憉憊憌憍憏憐憑憒憓憕�憖憗憘憙憚憛憜憞憟憠憡憢憣憤憥憦憪憫憭憮憯憰憱憲憳憴憵憶憸憹憺憻憼憽憿懀懁懃懄懅懆懇應懌懍懎懏懐懓懕懖懗懘懙懚懛懜懝懞懟懠懡懢懣懤懥懧懨懩懪懫懬懭懮懯懰懱懲懳懴懶懷懸懹懺懻懼懽懾戀戁戂戃戄戅戇戉戓戔戙戜戝戞戠戣戦戧戨戩戫戭戯戰戱戲戵戶戸戹戺戻戼扂扄扅扆扊�".split(""); +for(j = 0; j != D[145].length; ++j) if(D[145][j].charCodeAt(0) !== 0xFFFD) { e[D[145][j]] = 37120 + j; d[37120 + j] = D[145][j];} +D[146] = "����������������������������������������������������������������扏扐払扖扗扙扚扜扝扞扟扠扡扢扤扥扨扱扲扴扵扷扸扺扻扽抁抂抃抅抆抇抈抋抌抍抎抏抐抔抙抜抝択抣抦抧抩抪抭抮抯抰抲抳抴抶抷抸抺抾拀拁�拃拋拏拑拕拝拞拠拡拤拪拫拰拲拵拸拹拺拻挀挃挄挅挆挊挋挌挍挏挐挒挓挔挕挗挘挙挜挦挧挩挬挭挮挰挱挳挴挵挶挷挸挻挼挾挿捀捁捄捇捈捊捑捒捓捔捖捗捘捙捚捛捜捝捠捤捥捦捨捪捫捬捯捰捲捳捴捵捸捹捼捽捾捿掁掃掄掅掆掋掍掑掓掔掕掗掙掚掛掜掝掞掟採掤掦掫掯掱掲掵掶掹掻掽掿揀�".split(""); +for(j = 0; j != D[146].length; ++j) if(D[146][j].charCodeAt(0) !== 0xFFFD) { e[D[146][j]] = 37376 + j; d[37376 + j] = D[146][j];} +D[147] = "����������������������������������������������������������������揁揂揃揅揇揈揊揋揌揑揓揔揕揗揘揙揚換揜揝揟揢揤揥揦揧揨揫揬揮揯揰揱揳揵揷揹揺揻揼揾搃搄搆搇搈搉搊損搎搑搒搕搖搗搘搙搚搝搟搢搣搤�搥搧搨搩搫搮搯搰搱搲搳搵搶搷搸搹搻搼搾摀摂摃摉摋摌摍摎摏摐摑摓摕摖摗摙摚摛摜摝摟摠摡摢摣摤摥摦摨摪摫摬摮摯摰摱摲摳摴摵摶摷摻摼摽摾摿撀撁撃撆撈撉撊撋撌撍撎撏撐撓撔撗撘撚撛撜撝撟撠撡撢撣撥撦撧撨撪撫撯撱撲撳撴撶撹撻撽撾撿擁擃擄擆擇擈擉擊擋擌擏擑擓擔擕擖擙據�".split(""); +for(j = 0; j != D[147].length; ++j) if(D[147][j].charCodeAt(0) !== 0xFFFD) { e[D[147][j]] = 37632 + j; d[37632 + j] = D[147][j];} +D[148] = "����������������������������������������������������������������擛擜擝擟擠擡擣擥擧擨擩擪擫擬擭擮擯擰擱擲擳擴擵擶擷擸擹擺擻擼擽擾擿攁攂攃攄攅攆攇攈攊攋攌攍攎攏攐攑攓攔攕攖攗攙攚攛攜攝攞攟攠攡�攢攣攤攦攧攨攩攪攬攭攰攱攲攳攷攺攼攽敀敁敂敃敄敆敇敊敋敍敎敐敒敓敔敗敘敚敜敟敠敡敤敥敧敨敩敪敭敮敯敱敳敵敶數敹敺敻敼敽敾敿斀斁斂斃斄斅斆斈斉斊斍斎斏斒斔斕斖斘斚斝斞斠斢斣斦斨斪斬斮斱斲斳斴斵斶斷斸斺斻斾斿旀旂旇旈旉旊旍旐旑旓旔旕旘旙旚旛旜旝旞旟旡旣旤旪旫�".split(""); +for(j = 0; j != D[148].length; ++j) if(D[148][j].charCodeAt(0) !== 0xFFFD) { e[D[148][j]] = 37888 + j; d[37888 + j] = D[148][j];} +D[149] = "����������������������������������������������������������������旲旳旴旵旸旹旻旼旽旾旿昁昄昅昇昈昉昋昍昐昑昒昖昗昘昚昛昜昞昡昢昣昤昦昩昪昫昬昮昰昲昳昷昸昹昺昻昽昿晀時晄晅晆晇晈晉晊晍晎晐晑晘�晙晛晜晝晞晠晢晣晥晧晩晪晫晬晭晱晲晳晵晸晹晻晼晽晿暀暁暃暅暆暈暉暊暋暍暎暏暐暒暓暔暕暘暙暚暛暜暞暟暠暡暢暣暤暥暦暩暪暫暬暭暯暰暱暲暳暵暶暷暸暺暻暼暽暿曀曁曂曃曄曅曆曇曈曉曊曋曌曍曎曏曐曑曒曓曔曕曖曗曘曚曞曟曠曡曢曣曤曥曧曨曪曫曬曭曮曯曱曵曶書曺曻曽朁朂會�".split(""); +for(j = 0; j != D[149].length; ++j) if(D[149][j].charCodeAt(0) !== 0xFFFD) { e[D[149][j]] = 38144 + j; d[38144 + j] = D[149][j];} +D[150] = "����������������������������������������������������������������朄朅朆朇朌朎朏朑朒朓朖朘朙朚朜朞朠朡朢朣朤朥朧朩朮朰朲朳朶朷朸朹朻朼朾朿杁杄杅杇杊杋杍杒杔杕杗杘杙杚杛杝杢杣杤杦杧杫杬杮東杴杶�杸杹杺杻杽枀枂枃枅枆枈枊枌枍枎枏枑枒枓枔枖枙枛枟枠枡枤枦枩枬枮枱枲枴枹枺枻枼枽枾枿柀柂柅柆柇柈柉柊柋柌柍柎柕柖柗柛柟柡柣柤柦柧柨柪柫柭柮柲柵柶柷柸柹柺査柼柾栁栂栃栄栆栍栐栒栔栕栘栙栚栛栜栞栟栠栢栣栤栥栦栧栨栫栬栭栮栯栰栱栴栵栶栺栻栿桇桋桍桏桒桖桗桘桙桚桛�".split(""); +for(j = 0; j != D[150].length; ++j) if(D[150][j].charCodeAt(0) !== 0xFFFD) { e[D[150][j]] = 38400 + j; d[38400 + j] = D[150][j];} +D[151] = "����������������������������������������������������������������桜桝桞桟桪桬桭桮桯桰桱桲桳桵桸桹桺桻桼桽桾桿梀梂梄梇梈梉梊梋梌梍梎梐梑梒梔梕梖梘梙梚梛梜條梞梟梠梡梣梤梥梩梪梫梬梮梱梲梴梶梷梸�梹梺梻梼梽梾梿棁棃棄棅棆棇棈棊棌棎棏棐棑棓棔棖棗棙棛棜棝棞棟棡棢棤棥棦棧棨棩棪棫棬棭棯棲棳棴棶棷棸棻棽棾棿椀椂椃椄椆椇椈椉椊椌椏椑椓椔椕椖椗椘椙椚椛検椝椞椡椢椣椥椦椧椨椩椪椫椬椮椯椱椲椳椵椶椷椸椺椻椼椾楀楁楃楄楅楆楇楈楉楊楋楌楍楎楏楐楑楒楓楕楖楘楙楛楜楟�".split(""); +for(j = 0; j != D[151].length; ++j) if(D[151][j].charCodeAt(0) !== 0xFFFD) { e[D[151][j]] = 38656 + j; d[38656 + j] = D[151][j];} +D[152] = "����������������������������������������������������������������楡楢楤楥楧楨楩楪楬業楯楰楲楳楴極楶楺楻楽楾楿榁榃榅榊榋榌榎榏榐榑榒榓榖榗榙榚榝榞榟榠榡榢榣榤榥榦榩榪榬榮榯榰榲榳榵榶榸榹榺榼榽�榾榿槀槂槃槄槅槆槇槈槉構槍槏槑槒槓槕槖槗様槙槚槜槝槞槡槢槣槤槥槦槧槨槩槪槫槬槮槯槰槱槳槴槵槶槷槸槹槺槻槼槾樀樁樂樃樄樅樆樇樈樉樋樌樍樎樏樐樑樒樓樔樕樖標樚樛樜樝樞樠樢樣樤樥樦樧権樫樬樭樮樰樲樳樴樶樷樸樹樺樻樼樿橀橁橂橃橅橆橈橉橊橋橌橍橎橏橑橒橓橔橕橖橗橚�".split(""); +for(j = 0; j != D[152].length; ++j) if(D[152][j].charCodeAt(0) !== 0xFFFD) { e[D[152][j]] = 38912 + j; d[38912 + j] = D[152][j];} +D[153] = "����������������������������������������������������������������橜橝橞機橠橢橣橤橦橧橨橩橪橫橬橭橮橯橰橲橳橴橵橶橷橸橺橻橽橾橿檁檂檃檅檆檇檈檉檊檋檌檍檏檒檓檔檕檖檘檙檚檛檜檝檞檟檡檢檣檤檥檦�檧檨檪檭檮檯檰檱檲檳檴檵檶檷檸檹檺檻檼檽檾檿櫀櫁櫂櫃櫄櫅櫆櫇櫈櫉櫊櫋櫌櫍櫎櫏櫐櫑櫒櫓櫔櫕櫖櫗櫘櫙櫚櫛櫜櫝櫞櫟櫠櫡櫢櫣櫤櫥櫦櫧櫨櫩櫪櫫櫬櫭櫮櫯櫰櫱櫲櫳櫴櫵櫶櫷櫸櫹櫺櫻櫼櫽櫾櫿欀欁欂欃欄欅欆欇欈欉權欋欌欍欎欏欐欑欒欓欔欕欖欗欘欙欚欛欜欝欞欟欥欦欨欩欪欫欬欭欮�".split(""); +for(j = 0; j != D[153].length; ++j) if(D[153][j].charCodeAt(0) !== 0xFFFD) { e[D[153][j]] = 39168 + j; d[39168 + j] = D[153][j];} +D[154] = "����������������������������������������������������������������欯欰欱欳欴欵欶欸欻欼欽欿歀歁歂歄歅歈歊歋歍歎歏歐歑歒歓歔歕歖歗歘歚歛歜歝歞歟歠歡歨歩歫歬歭歮歯歰歱歲歳歴歵歶歷歸歺歽歾歿殀殅殈�殌殎殏殐殑殔殕殗殘殙殜殝殞殟殠殢殣殤殥殦殧殨殩殫殬殭殮殯殰殱殲殶殸殹殺殻殼殽殾毀毃毄毆毇毈毉毊毌毎毐毑毘毚毜毝毞毟毠毢毣毤毥毦毧毨毩毬毭毮毰毱毲毴毶毷毸毺毻毼毾毿氀氁氂氃氄氈氉氊氋氌氎氒気氜氝氞氠氣氥氫氬氭氱氳氶氷氹氺氻氼氾氿汃汄汅汈汋汌汍汎汏汑汒汓汖汘�".split(""); +for(j = 0; j != D[154].length; ++j) if(D[154][j].charCodeAt(0) !== 0xFFFD) { e[D[154][j]] = 39424 + j; d[39424 + j] = D[154][j];} +D[155] = "����������������������������������������������������������������汙汚汢汣汥汦汧汫汬汭汮汯汱汳汵汷汸決汻汼汿沀沄沇沊沋沍沎沑沒沕沖沗沘沚沜沝沞沠沢沨沬沯沰沴沵沶沷沺泀況泂泃泆泇泈泋泍泎泏泑泒泘�泙泚泜泝泟泤泦泧泩泬泭泲泴泹泿洀洂洃洅洆洈洉洊洍洏洐洑洓洔洕洖洘洜洝洟洠洡洢洣洤洦洨洩洬洭洯洰洴洶洷洸洺洿浀浂浄浉浌浐浕浖浗浘浛浝浟浡浢浤浥浧浨浫浬浭浰浱浲浳浵浶浹浺浻浽浾浿涀涁涃涄涆涇涊涋涍涏涐涒涖涗涘涙涚涜涢涥涬涭涰涱涳涴涶涷涹涺涻涼涽涾淁淂淃淈淉淊�".split(""); +for(j = 0; j != D[155].length; ++j) if(D[155][j].charCodeAt(0) !== 0xFFFD) { e[D[155][j]] = 39680 + j; d[39680 + j] = D[155][j];} +D[156] = "����������������������������������������������������������������淍淎淏淐淒淓淔淕淗淚淛淜淟淢淣淥淧淨淩淪淭淯淰淲淴淵淶淸淺淽淾淿渀渁渂渃渄渆渇済渉渋渏渒渓渕渘渙減渜渞渟渢渦渧渨渪測渮渰渱渳渵�渶渷渹渻渼渽渾渿湀湁湂湅湆湇湈湉湊湋湌湏湐湑湒湕湗湙湚湜湝湞湠湡湢湣湤湥湦湧湨湩湪湬湭湯湰湱湲湳湴湵湶湷湸湹湺湻湼湽満溁溂溄溇溈溊溋溌溍溎溑溒溓溔溕準溗溙溚溛溝溞溠溡溣溤溦溨溩溫溬溭溮溰溳溵溸溹溼溾溿滀滃滄滅滆滈滉滊滌滍滎滐滒滖滘滙滛滜滝滣滧滪滫滬滭滮滯�".split(""); +for(j = 0; j != D[156].length; ++j) if(D[156][j].charCodeAt(0) !== 0xFFFD) { e[D[156][j]] = 39936 + j; d[39936 + j] = D[156][j];} +D[157] = "����������������������������������������������������������������滰滱滲滳滵滶滷滸滺滻滼滽滾滿漀漁漃漄漅漇漈漊漋漌漍漎漐漑漒漖漗漘漙漚漛漜漝漞漟漡漢漣漥漦漧漨漬漮漰漲漴漵漷漸漹漺漻漼漽漿潀潁潂�潃潄潅潈潉潊潌潎潏潐潑潒潓潔潕潖潗潙潚潛潝潟潠潡潣潤潥潧潨潩潪潫潬潯潰潱潳潵潶潷潹潻潽潾潿澀澁澂澃澅澆澇澊澋澏澐澑澒澓澔澕澖澗澘澙澚澛澝澞澟澠澢澣澤澥澦澨澩澪澫澬澭澮澯澰澱澲澴澵澷澸澺澻澼澽澾澿濁濃濄濅濆濇濈濊濋濌濍濎濏濐濓濔濕濖濗濘濙濚濛濜濝濟濢濣濤濥�".split(""); +for(j = 0; j != D[157].length; ++j) if(D[157][j].charCodeAt(0) !== 0xFFFD) { e[D[157][j]] = 40192 + j; d[40192 + j] = D[157][j];} +D[158] = "����������������������������������������������������������������濦濧濨濩濪濫濬濭濰濱濲濳濴濵濶濷濸濹濺濻濼濽濾濿瀀瀁瀂瀃瀄瀅瀆瀇瀈瀉瀊瀋瀌瀍瀎瀏瀐瀒瀓瀔瀕瀖瀗瀘瀙瀜瀝瀞瀟瀠瀡瀢瀤瀥瀦瀧瀨瀩瀪�瀫瀬瀭瀮瀯瀰瀱瀲瀳瀴瀶瀷瀸瀺瀻瀼瀽瀾瀿灀灁灂灃灄灅灆灇灈灉灊灋灍灎灐灑灒灓灔灕灖灗灘灙灚灛灜灝灟灠灡灢灣灤灥灦灧灨灩灪灮灱灲灳灴灷灹灺灻災炁炂炃炄炆炇炈炋炌炍炏炐炑炓炗炘炚炛炞炟炠炡炢炣炤炥炦炧炨炩炪炰炲炴炵炶為炾炿烄烅烆烇烉烋烌烍烎烏烐烑烒烓烔烕烖烗烚�".split(""); +for(j = 0; j != D[158].length; ++j) if(D[158][j].charCodeAt(0) !== 0xFFFD) { e[D[158][j]] = 40448 + j; d[40448 + j] = D[158][j];} +D[159] = "����������������������������������������������������������������烜烝烞烠烡烢烣烥烪烮烰烱烲烳烴烵烶烸烺烻烼烾烿焀焁焂焃焄焅焆焇焈焋焌焍焎焏焑焒焔焗焛焜焝焞焟焠無焢焣焤焥焧焨焩焪焫焬焭焮焲焳焴�焵焷焸焹焺焻焼焽焾焿煀煁煂煃煄煆煇煈煉煋煍煏煐煑煒煓煔煕煖煗煘煙煚煛煝煟煠煡煢煣煥煩煪煫煬煭煯煰煱煴煵煶煷煹煻煼煾煿熀熁熂熃熅熆熇熈熉熋熌熍熎熐熑熒熓熕熖熗熚熛熜熝熞熡熢熣熤熥熦熧熩熪熫熭熮熯熰熱熲熴熶熷熸熺熻熼熽熾熿燀燁燂燄燅燆燇燈燉燊燋燌燍燏燐燑燒燓�".split(""); +for(j = 0; j != D[159].length; ++j) if(D[159][j].charCodeAt(0) !== 0xFFFD) { e[D[159][j]] = 40704 + j; d[40704 + j] = D[159][j];} +D[160] = "����������������������������������������������������������������燖燗燘燙燚燛燜燝燞營燡燢燣燤燦燨燩燪燫燬燭燯燰燱燲燳燴燵燶燷燸燺燻燼燽燾燿爀爁爂爃爄爅爇爈爉爊爋爌爍爎爏爐爑爒爓爔爕爖爗爘爙爚�爛爜爞爟爠爡爢爣爤爥爦爧爩爫爭爮爯爲爳爴爺爼爾牀牁牂牃牄牅牆牉牊牋牎牏牐牑牓牔牕牗牘牚牜牞牠牣牤牥牨牪牫牬牭牰牱牳牴牶牷牸牻牼牽犂犃犅犆犇犈犉犌犎犐犑犓犔犕犖犗犘犙犚犛犜犝犞犠犡犢犣犤犥犦犧犨犩犪犫犮犱犲犳犵犺犻犼犽犾犿狀狅狆狇狉狊狋狌狏狑狓狔狕狖狘狚狛�".split(""); +for(j = 0; j != D[160].length; ++j) if(D[160][j].charCodeAt(0) !== 0xFFFD) { e[D[160][j]] = 40960 + j; d[40960 + j] = D[160][j];} +D[161] = "����������������������������������������������������������������������������������������������������������������������������������������������������������������� 、。·ˉˇ¨〃々—~‖…‘’“”〔〕〈〉《》「」『』〖〗【】±×÷∶∧∨∑∏∪∩∈∷√⊥∥∠⌒⊙∫∮≡≌≈∽∝≠≮≯≤≥∞∵∴♂♀°′″℃$¤¢£‰§№☆★○●◎◇◆□■△▲※→←↑↓〓�".split(""); +for(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];} +D[162] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������ⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹ������⒈⒉⒊⒋⒌⒍⒎⒏⒐⒑⒒⒓⒔⒕⒖⒗⒘⒙⒚⒛⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽⑾⑿⒀⒁⒂⒃⒄⒅⒆⒇①②③④⑤⑥⑦⑧⑨⑩��㈠㈡㈢㈣㈤㈥㈦㈧㈨㈩��ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫ���".split(""); +for(j = 0; j != D[162].length; ++j) if(D[162][j].charCodeAt(0) !== 0xFFFD) { e[D[162][j]] = 41472 + j; d[41472 + j] = D[162][j];} +D[163] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������!"#¥%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|} ̄�".split(""); +for(j = 0; j != D[163].length; ++j) if(D[163][j].charCodeAt(0) !== 0xFFFD) { e[D[163][j]] = 41728 + j; d[41728 + j] = D[163][j];} +D[164] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをん������������".split(""); +for(j = 0; j != D[164].length; ++j) if(D[164][j].charCodeAt(0) !== 0xFFFD) { e[D[164][j]] = 41984 + j; d[41984 + j] = D[164][j];} +D[165] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶ���������".split(""); +for(j = 0; j != D[165].length; ++j) if(D[165][j].charCodeAt(0) !== 0xFFFD) { e[D[165][j]] = 42240 + j; d[42240 + j] = D[165][j];} +D[166] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ��������αβγδεζηθικλμνξοπρστυφχψω�������︵︶︹︺︿﹀︽︾﹁﹂﹃﹄��︻︼︷︸︱�︳︴����������".split(""); +for(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];} +D[167] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ���������������абвгдеёжзийклмнопрстуфхцчшщъыьэюя��������������".split(""); +for(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];} +D[168] = "����������������������������������������������������������������ˊˋ˙–―‥‵℅℉↖↗↘↙∕∟∣≒≦≧⊿═║╒╓╔╕╖╗╘╙╚╛╜╝╞╟╠╡╢╣╤╥╦╧╨╩╪╫╬╭╮╯╰╱╲╳▁▂▃▄▅▆▇�█▉▊▋▌▍▎▏▓▔▕▼▽◢◣◤◥☉⊕〒〝〞�����������āáǎàēéěèīíǐìōóǒòūúǔùǖǘǚǜüêɑ�ńň�ɡ����ㄅㄆㄇㄈㄉㄊㄋㄌㄍㄎㄏㄐㄑㄒㄓㄔㄕㄖㄗㄘㄙㄚㄛㄜㄝㄞㄟㄠㄡㄢㄣㄤㄥㄦㄧㄨㄩ����������������������".split(""); +for(j = 0; j != D[168].length; ++j) if(D[168][j].charCodeAt(0) !== 0xFFFD) { e[D[168][j]] = 43008 + j; d[43008 + j] = D[168][j];} +D[169] = "����������������������������������������������������������������〡〢〣〤〥〦〧〨〩㊣㎎㎏㎜㎝㎞㎡㏄㏎㏑㏒㏕︰¬¦�℡㈱�‐���ー゛゜ヽヾ〆ゝゞ﹉﹊﹋﹌﹍﹎﹏﹐﹑﹒﹔﹕﹖﹗﹙﹚﹛﹜﹝﹞﹟﹠﹡�﹢﹣﹤﹥﹦﹨﹩﹪﹫�������������〇�������������─━│┃┄┅┆┇┈┉┊┋┌┍┎┏┐┑┒┓└┕┖┗┘┙┚┛├┝┞┟┠┡┢┣┤┥┦┧┨┩┪┫┬┭┮┯┰┱┲┳┴┵┶┷┸┹┺┻┼┽┾┿╀╁╂╃╄╅╆╇╈╉╊╋����������������".split(""); +for(j = 0; j != D[169].length; ++j) if(D[169][j].charCodeAt(0) !== 0xFFFD) { e[D[169][j]] = 43264 + j; d[43264 + j] = D[169][j];} +D[170] = "����������������������������������������������������������������狜狝狟狢狣狤狥狦狧狪狫狵狶狹狽狾狿猀猂猄猅猆猇猈猉猋猌猍猏猐猑猒猔猘猙猚猟猠猣猤猦猧猨猭猯猰猲猳猵猶猺猻猼猽獀獁獂獃獄獅獆獇獈�獉獊獋獌獎獏獑獓獔獕獖獘獙獚獛獜獝獞獟獡獢獣獤獥獦獧獨獩獪獫獮獰獱�����������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];} +D[171] = "����������������������������������������������������������������獲獳獴獵獶獷獸獹獺獻獼獽獿玀玁玂玃玅玆玈玊玌玍玏玐玒玓玔玕玗玘玙玚玜玝玞玠玡玣玤玥玦玧玨玪玬玭玱玴玵玶玸玹玼玽玾玿珁珃珄珅珆珇�珋珌珎珒珓珔珕珖珗珘珚珛珜珝珟珡珢珣珤珦珨珪珫珬珮珯珰珱珳珴珵珶珷�����������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[171].length; ++j) if(D[171][j].charCodeAt(0) !== 0xFFFD) { e[D[171][j]] = 43776 + j; d[43776 + j] = D[171][j];} +D[172] = "����������������������������������������������������������������珸珹珺珻珼珽現珿琀琁琂琄琇琈琋琌琍琎琑琒琓琔琕琖琗琘琙琜琝琞琟琠琡琣琤琧琩琫琭琯琱琲琷琸琹琺琻琽琾琿瑀瑂瑃瑄瑅瑆瑇瑈瑉瑊瑋瑌瑍�瑎瑏瑐瑑瑒瑓瑔瑖瑘瑝瑠瑡瑢瑣瑤瑥瑦瑧瑨瑩瑪瑫瑬瑮瑯瑱瑲瑳瑴瑵瑸瑹瑺�����������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[172].length; ++j) if(D[172][j].charCodeAt(0) !== 0xFFFD) { e[D[172][j]] = 44032 + j; d[44032 + j] = D[172][j];} +D[173] = "����������������������������������������������������������������瑻瑼瑽瑿璂璄璅璆璈璉璊璌璍璏璑璒璓璔璕璖璗璘璙璚璛璝璟璠璡璢璣璤璥璦璪璫璬璭璮璯環璱璲璳璴璵璶璷璸璹璻璼璽璾璿瓀瓁瓂瓃瓄瓅瓆瓇�瓈瓉瓊瓋瓌瓍瓎瓏瓐瓑瓓瓔瓕瓖瓗瓘瓙瓚瓛瓝瓟瓡瓥瓧瓨瓩瓪瓫瓬瓭瓰瓱瓲�����������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[173].length; ++j) if(D[173][j].charCodeAt(0) !== 0xFFFD) { e[D[173][j]] = 44288 + j; d[44288 + j] = D[173][j];} +D[174] = "����������������������������������������������������������������瓳瓵瓸瓹瓺瓻瓼瓽瓾甀甁甂甃甅甆甇甈甉甊甋甌甎甐甒甔甕甖甗甛甝甞甠甡產産甤甦甧甪甮甴甶甹甼甽甿畁畂畃畄畆畇畉畊畍畐畑畒畓畕畖畗畘�畝畞畟畠畡畢畣畤畧畨畩畫畬畭畮畯異畱畳畵當畷畺畻畼畽畾疀疁疂疄疅疇�����������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[174].length; ++j) if(D[174][j].charCodeAt(0) !== 0xFFFD) { e[D[174][j]] = 44544 + j; d[44544 + j] = D[174][j];} +D[175] = "����������������������������������������������������������������疈疉疊疌疍疎疐疓疕疘疛疜疞疢疦疧疨疩疪疭疶疷疺疻疿痀痁痆痋痌痎痏痐痑痓痗痙痚痜痝痟痠痡痥痩痬痭痮痯痲痳痵痶痷痸痺痻痽痾瘂瘄瘆瘇�瘈瘉瘋瘍瘎瘏瘑瘒瘓瘔瘖瘚瘜瘝瘞瘡瘣瘧瘨瘬瘮瘯瘱瘲瘶瘷瘹瘺瘻瘽癁療癄�����������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[175].length; ++j) if(D[175][j].charCodeAt(0) !== 0xFFFD) { e[D[175][j]] = 44800 + j; d[44800 + j] = D[175][j];} +D[176] = "����������������������������������������������������������������癅癆癇癈癉癊癋癎癏癐癑癒癓癕癗癘癙癚癛癝癟癠癡癢癤癥癦癧癨癩癪癬癭癮癰癱癲癳癴癵癶癷癹発發癿皀皁皃皅皉皊皌皍皏皐皒皔皕皗皘皚皛�皜皝皞皟皠皡皢皣皥皦皧皨皩皪皫皬皭皯皰皳皵皶皷皸皹皺皻皼皽皾盀盁盃啊阿埃挨哎唉哀皑癌蔼矮艾碍爱隘鞍氨安俺按暗岸胺案肮昂盎凹敖熬翱袄傲奥懊澳芭捌扒叭吧笆八疤巴拔跋靶把耙坝霸罢爸白柏百摆佰败拜稗斑班搬扳般颁板版扮拌伴瓣半办绊邦帮梆榜膀绑棒磅蚌镑傍谤苞胞包褒剥�".split(""); +for(j = 0; j != D[176].length; ++j) if(D[176][j].charCodeAt(0) !== 0xFFFD) { e[D[176][j]] = 45056 + j; d[45056 + j] = D[176][j];} +D[177] = "����������������������������������������������������������������盄盇盉盋盌盓盕盙盚盜盝盞盠盡盢監盤盦盧盨盩盪盫盬盭盰盳盵盶盷盺盻盽盿眀眂眃眅眆眊県眎眏眐眑眒眓眔眕眖眗眘眛眜眝眞眡眣眤眥眧眪眫�眬眮眰眱眲眳眴眹眻眽眾眿睂睄睅睆睈睉睊睋睌睍睎睏睒睓睔睕睖睗睘睙睜薄雹保堡饱宝抱报暴豹鲍爆杯碑悲卑北辈背贝钡倍狈备惫焙被奔苯本笨崩绷甭泵蹦迸逼鼻比鄙笔彼碧蓖蔽毕毙毖币庇痹闭敝弊必辟壁臂避陛鞭边编贬扁便变卞辨辩辫遍标彪膘表鳖憋别瘪彬斌濒滨宾摈兵冰柄丙秉饼炳�".split(""); +for(j = 0; j != D[177].length; ++j) if(D[177][j].charCodeAt(0) !== 0xFFFD) { e[D[177][j]] = 45312 + j; d[45312 + j] = D[177][j];} +D[178] = "����������������������������������������������������������������睝睞睟睠睤睧睩睪睭睮睯睰睱睲睳睴睵睶睷睸睺睻睼瞁瞂瞃瞆瞇瞈瞉瞊瞋瞏瞐瞓瞔瞕瞖瞗瞘瞙瞚瞛瞜瞝瞞瞡瞣瞤瞦瞨瞫瞭瞮瞯瞱瞲瞴瞶瞷瞸瞹瞺�瞼瞾矀矁矂矃矄矅矆矇矈矉矊矋矌矎矏矐矑矒矓矔矕矖矘矙矚矝矞矟矠矡矤病并玻菠播拨钵波博勃搏铂箔伯帛舶脖膊渤泊驳捕卜哺补埠不布步簿部怖擦猜裁材才财睬踩采彩菜蔡餐参蚕残惭惨灿苍舱仓沧藏操糙槽曹草厕策侧册测层蹭插叉茬茶查碴搽察岔差诧拆柴豺搀掺蝉馋谗缠铲产阐颤昌猖�".split(""); +for(j = 0; j != D[178].length; ++j) if(D[178][j].charCodeAt(0) !== 0xFFFD) { e[D[178][j]] = 45568 + j; d[45568 + j] = D[178][j];} +D[179] = "����������������������������������������������������������������矦矨矪矯矰矱矲矴矵矷矹矺矻矼砃砄砅砆砇砈砊砋砎砏砐砓砕砙砛砞砠砡砢砤砨砪砫砮砯砱砲砳砵砶砽砿硁硂硃硄硆硈硉硊硋硍硏硑硓硔硘硙硚�硛硜硞硟硠硡硢硣硤硥硦硧硨硩硯硰硱硲硳硴硵硶硸硹硺硻硽硾硿碀碁碂碃场尝常长偿肠厂敞畅唱倡超抄钞朝嘲潮巢吵炒车扯撤掣彻澈郴臣辰尘晨忱沉陈趁衬撑称城橙成呈乘程惩澄诚承逞骋秤吃痴持匙池迟弛驰耻齿侈尺赤翅斥炽充冲虫崇宠抽酬畴踌稠愁筹仇绸瞅丑臭初出橱厨躇锄雏滁除楚�".split(""); +for(j = 0; j != D[179].length; ++j) if(D[179][j].charCodeAt(0) !== 0xFFFD) { e[D[179][j]] = 45824 + j; d[45824 + j] = D[179][j];} +D[180] = "����������������������������������������������������������������碄碅碆碈碊碋碏碐碒碔碕碖碙碝碞碠碢碤碦碨碩碪碫碬碭碮碯碵碶碷碸確碻碼碽碿磀磂磃磄磆磇磈磌磍磎磏磑磒磓磖磗磘磚磛磜磝磞磟磠磡磢磣�磤磥磦磧磩磪磫磭磮磯磰磱磳磵磶磸磹磻磼磽磾磿礀礂礃礄礆礇礈礉礊礋礌础储矗搐触处揣川穿椽传船喘串疮窗幢床闯创吹炊捶锤垂春椿醇唇淳纯蠢戳绰疵茨磁雌辞慈瓷词此刺赐次聪葱囱匆从丛凑粗醋簇促蹿篡窜摧崔催脆瘁粹淬翠村存寸磋撮搓措挫错搭达答瘩打大呆歹傣戴带殆代贷袋待逮�".split(""); +for(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];} +D[181] = "����������������������������������������������������������������礍礎礏礐礑礒礔礕礖礗礘礙礚礛礜礝礟礠礡礢礣礥礦礧礨礩礪礫礬礭礮礯礰礱礲礳礵礶礷礸礹礽礿祂祃祄祅祇祊祋祌祍祎祏祐祑祒祔祕祘祙祡祣�祤祦祩祪祫祬祮祰祱祲祳祴祵祶祹祻祼祽祾祿禂禃禆禇禈禉禋禌禍禎禐禑禒怠耽担丹单郸掸胆旦氮但惮淡诞弹蛋当挡党荡档刀捣蹈倒岛祷导到稻悼道盗德得的蹬灯登等瞪凳邓堤低滴迪敌笛狄涤翟嫡抵底地蒂第帝弟递缔颠掂滇碘点典靛垫电佃甸店惦奠淀殿碉叼雕凋刁掉吊钓调跌爹碟蝶迭谍叠�".split(""); +for(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];} +D[182] = "����������������������������������������������������������������禓禔禕禖禗禘禙禛禜禝禞禟禠禡禢禣禤禥禦禨禩禪禫禬禭禮禯禰禱禲禴禵禶禷禸禼禿秂秄秅秇秈秊秌秎秏秐秓秔秖秗秙秚秛秜秝秞秠秡秢秥秨秪�秬秮秱秲秳秴秵秶秷秹秺秼秾秿稁稄稅稇稈稉稊稌稏稐稑稒稓稕稖稘稙稛稜丁盯叮钉顶鼎锭定订丢东冬董懂动栋侗恫冻洞兜抖斗陡豆逗痘都督毒犊独读堵睹赌杜镀肚度渡妒端短锻段断缎堆兑队对墩吨蹲敦顿囤钝盾遁掇哆多夺垛躲朵跺舵剁惰堕蛾峨鹅俄额讹娥恶厄扼遏鄂饿恩而儿耳尔饵洱二�".split(""); +for(j = 0; j != D[182].length; ++j) if(D[182][j].charCodeAt(0) !== 0xFFFD) { e[D[182][j]] = 46592 + j; d[46592 + j] = D[182][j];} +D[183] = "����������������������������������������������������������������稝稟稡稢稤稥稦稧稨稩稪稫稬稭種稯稰稱稲稴稵稶稸稺稾穀穁穂穃穄穅穇穈穉穊穋穌積穎穏穐穒穓穔穕穖穘穙穚穛穜穝穞穟穠穡穢穣穤穥穦穧穨�穩穪穫穬穭穮穯穱穲穳穵穻穼穽穾窂窅窇窉窊窋窌窎窏窐窓窔窙窚窛窞窡窢贰发罚筏伐乏阀法珐藩帆番翻樊矾钒繁凡烦反返范贩犯饭泛坊芳方肪房防妨仿访纺放菲非啡飞肥匪诽吠肺废沸费芬酚吩氛分纷坟焚汾粉奋份忿愤粪丰封枫蜂峰锋风疯烽逢冯缝讽奉凤佛否夫敷肤孵扶拂辐幅氟符伏俘服�".split(""); +for(j = 0; j != D[183].length; ++j) if(D[183][j].charCodeAt(0) !== 0xFFFD) { e[D[183][j]] = 46848 + j; d[46848 + j] = D[183][j];} +D[184] = "����������������������������������������������������������������窣窤窧窩窪窫窮窯窰窱窲窴窵窶窷窸窹窺窻窼窽窾竀竁竂竃竄竅竆竇竈竉竊竌竍竎竏竐竑竒竓竔竕竗竘竚竛竜竝竡竢竤竧竨竩竪竫竬竮竰竱竲竳�竴竵競竷竸竻竼竾笀笁笂笅笇笉笌笍笎笐笒笓笖笗笘笚笜笝笟笡笢笣笧笩笭浮涪福袱弗甫抚辅俯釜斧脯腑府腐赴副覆赋复傅付阜父腹负富讣附妇缚咐噶嘎该改概钙盖溉干甘杆柑竿肝赶感秆敢赣冈刚钢缸肛纲岗港杠篙皋高膏羔糕搞镐稿告哥歌搁戈鸽胳疙割革葛格蛤阁隔铬个各给根跟耕更庚羹�".split(""); +for(j = 0; j != D[184].length; ++j) if(D[184][j].charCodeAt(0) !== 0xFFFD) { e[D[184][j]] = 47104 + j; d[47104 + j] = D[184][j];} +D[185] = "����������������������������������������������������������������笯笰笲笴笵笶笷笹笻笽笿筀筁筂筃筄筆筈筊筍筎筓筕筗筙筜筞筟筡筣筤筥筦筧筨筩筪筫筬筭筯筰筳筴筶筸筺筼筽筿箁箂箃箄箆箇箈箉箊箋箌箎箏�箑箒箓箖箘箙箚箛箞箟箠箣箤箥箮箯箰箲箳箵箶箷箹箺箻箼箽箾箿節篂篃範埂耿梗工攻功恭龚供躬公宫弓巩汞拱贡共钩勾沟苟狗垢构购够辜菇咕箍估沽孤姑鼓古蛊骨谷股故顾固雇刮瓜剐寡挂褂乖拐怪棺关官冠观管馆罐惯灌贯光广逛瑰规圭硅归龟闺轨鬼诡癸桂柜跪贵刽辊滚棍锅郭国果裹过哈�".split(""); +for(j = 0; j != D[185].length; ++j) if(D[185][j].charCodeAt(0) !== 0xFFFD) { e[D[185][j]] = 47360 + j; d[47360 + j] = D[185][j];} +D[186] = "����������������������������������������������������������������篅篈築篊篋篍篎篏篐篒篔篕篖篗篘篛篜篞篟篠篢篣篤篧篨篩篫篬篭篯篰篲篳篴篵篶篸篹篺篻篽篿簀簁簂簃簄簅簆簈簉簊簍簎簐簑簒簓簔簕簗簘簙�簚簛簜簝簞簠簡簢簣簤簥簨簩簫簬簭簮簯簰簱簲簳簴簵簶簷簹簺簻簼簽簾籂骸孩海氦亥害骇酣憨邯韩含涵寒函喊罕翰撼捍旱憾悍焊汗汉夯杭航壕嚎豪毫郝好耗号浩呵喝荷菏核禾和何合盒貉阂河涸赫褐鹤贺嘿黑痕很狠恨哼亨横衡恒轰哄烘虹鸿洪宏弘红喉侯猴吼厚候后呼乎忽瑚壶葫胡蝴狐糊湖�".split(""); +for(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];} +D[187] = "����������������������������������������������������������������籃籄籅籆籇籈籉籊籋籌籎籏籐籑籒籓籔籕籖籗籘籙籚籛籜籝籞籟籠籡籢籣籤籥籦籧籨籩籪籫籬籭籮籯籰籱籲籵籶籷籸籹籺籾籿粀粁粂粃粄粅粆粇�粈粊粋粌粍粎粏粐粓粔粖粙粚粛粠粡粣粦粧粨粩粫粬粭粯粰粴粵粶粷粸粺粻弧虎唬护互沪户花哗华猾滑画划化话槐徊怀淮坏欢环桓还缓换患唤痪豢焕涣宦幻荒慌黄磺蝗簧皇凰惶煌晃幌恍谎灰挥辉徽恢蛔回毁悔慧卉惠晦贿秽会烩汇讳诲绘荤昏婚魂浑混豁活伙火获或惑霍货祸击圾基机畸稽积箕�".split(""); +for(j = 0; j != D[187].length; ++j) if(D[187][j].charCodeAt(0) !== 0xFFFD) { e[D[187][j]] = 47872 + j; d[47872 + j] = D[187][j];} +D[188] = "����������������������������������������������������������������粿糀糂糃糄糆糉糋糎糏糐糑糒糓糔糘糚糛糝糞糡糢糣糤糥糦糧糩糪糫糬糭糮糰糱糲糳糴糵糶糷糹糺糼糽糾糿紀紁紂紃約紅紆紇紈紉紋紌納紎紏紐�紑紒紓純紕紖紗紘紙級紛紜紝紞紟紡紣紤紥紦紨紩紪紬紭紮細紱紲紳紴紵紶肌饥迹激讥鸡姬绩缉吉极棘辑籍集及急疾汲即嫉级挤几脊己蓟技冀季伎祭剂悸济寄寂计记既忌际妓继纪嘉枷夹佳家加荚颊贾甲钾假稼价架驾嫁歼监坚尖笺间煎兼肩艰奸缄茧检柬碱硷拣捡简俭剪减荐槛鉴践贱见键箭件�".split(""); +for(j = 0; j != D[188].length; ++j) if(D[188][j].charCodeAt(0) !== 0xFFFD) { e[D[188][j]] = 48128 + j; d[48128 + j] = D[188][j];} +D[189] = "����������������������������������������������������������������紷紸紹紺紻紼紽紾紿絀絁終絃組絅絆絇絈絉絊絋経絍絎絏結絑絒絓絔絕絖絗絘絙絚絛絜絝絞絟絠絡絢絣絤絥給絧絨絩絪絫絬絭絯絰統絲絳絴絵絶�絸絹絺絻絼絽絾絿綀綁綂綃綄綅綆綇綈綉綊綋綌綍綎綏綐綑綒經綔綕綖綗綘健舰剑饯渐溅涧建僵姜将浆江疆蒋桨奖讲匠酱降蕉椒礁焦胶交郊浇骄娇嚼搅铰矫侥脚狡角饺缴绞剿教酵轿较叫窖揭接皆秸街阶截劫节桔杰捷睫竭洁结解姐戒藉芥界借介疥诫届巾筋斤金今津襟紧锦仅谨进靳晋禁近烬浸�".split(""); +for(j = 0; j != D[189].length; ++j) if(D[189][j].charCodeAt(0) !== 0xFFFD) { e[D[189][j]] = 48384 + j; d[48384 + j] = D[189][j];} +D[190] = "����������������������������������������������������������������継続綛綜綝綞綟綠綡綢綣綤綥綧綨綩綪綫綬維綯綰綱網綳綴綵綶綷綸綹綺綻綼綽綾綿緀緁緂緃緄緅緆緇緈緉緊緋緌緍緎総緐緑緒緓緔緕緖緗緘緙�線緛緜緝緞緟締緡緢緣緤緥緦緧編緩緪緫緬緭緮緯緰緱緲緳練緵緶緷緸緹緺尽劲荆兢茎睛晶鲸京惊精粳经井警景颈静境敬镜径痉靖竟竞净炯窘揪究纠玖韭久灸九酒厩救旧臼舅咎就疚鞠拘狙疽居驹菊局咀矩举沮聚拒据巨具距踞锯俱句惧炬剧捐鹃娟倦眷卷绢撅攫抉掘倔爵觉决诀绝均菌钧军君峻�".split(""); +for(j = 0; j != D[190].length; ++j) if(D[190][j].charCodeAt(0) !== 0xFFFD) { e[D[190][j]] = 48640 + j; d[48640 + j] = D[190][j];} +D[191] = "����������������������������������������������������������������緻緼緽緾緿縀縁縂縃縄縅縆縇縈縉縊縋縌縍縎縏縐縑縒縓縔縕縖縗縘縙縚縛縜縝縞縟縠縡縢縣縤縥縦縧縨縩縪縫縬縭縮縯縰縱縲縳縴縵縶縷縸縹�縺縼總績縿繀繂繃繄繅繆繈繉繊繋繌繍繎繏繐繑繒繓織繕繖繗繘繙繚繛繜繝俊竣浚郡骏喀咖卡咯开揩楷凯慨刊堪勘坎砍看康慷糠扛抗亢炕考拷烤靠坷苛柯棵磕颗科壳咳可渴克刻客课肯啃垦恳坑吭空恐孔控抠口扣寇枯哭窟苦酷库裤夸垮挎跨胯块筷侩快宽款匡筐狂框矿眶旷况亏盔岿窥葵奎魁傀�".split(""); +for(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];} +D[192] = "����������������������������������������������������������������繞繟繠繡繢繣繤繥繦繧繨繩繪繫繬繭繮繯繰繱繲繳繴繵繶繷繸繹繺繻繼繽繾繿纀纁纃纄纅纆纇纈纉纊纋續纍纎纏纐纑纒纓纔纕纖纗纘纙纚纜纝纞�纮纴纻纼绖绤绬绹缊缐缞缷缹缻缼缽缾缿罀罁罃罆罇罈罉罊罋罌罍罎罏罒罓馈愧溃坤昆捆困括扩廓阔垃拉喇蜡腊辣啦莱来赖蓝婪栏拦篮阑兰澜谰揽览懒缆烂滥琅榔狼廊郎朗浪捞劳牢老佬姥酪烙涝勒乐雷镭蕾磊累儡垒擂肋类泪棱楞冷厘梨犁黎篱狸离漓理李里鲤礼莉荔吏栗丽厉励砾历利傈例俐�".split(""); +for(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];} +D[193] = "����������������������������������������������������������������罖罙罛罜罝罞罠罣罤罥罦罧罫罬罭罯罰罳罵罶罷罸罺罻罼罽罿羀羂羃羄羅羆羇羈羉羋羍羏羐羑羒羓羕羖羗羘羙羛羜羠羢羣羥羦羨義羪羫羬羭羮羱�羳羴羵羶羷羺羻羾翀翂翃翄翆翇翈翉翋翍翏翐翑習翓翖翗翙翚翛翜翝翞翢翣痢立粒沥隶力璃哩俩联莲连镰廉怜涟帘敛脸链恋炼练粮凉梁粱良两辆量晾亮谅撩聊僚疗燎寥辽潦了撂镣廖料列裂烈劣猎琳林磷霖临邻鳞淋凛赁吝拎玲菱零龄铃伶羚凌灵陵岭领另令溜琉榴硫馏留刘瘤流柳六龙聋咙笼窿�".split(""); +for(j = 0; j != D[193].length; ++j) if(D[193][j].charCodeAt(0) !== 0xFFFD) { e[D[193][j]] = 49408 + j; d[49408 + j] = D[193][j];} +D[194] = "����������������������������������������������������������������翤翧翨翪翫翬翭翯翲翴翵翶翷翸翹翺翽翾翿耂耇耈耉耊耎耏耑耓耚耛耝耞耟耡耣耤耫耬耭耮耯耰耲耴耹耺耼耾聀聁聄聅聇聈聉聎聏聐聑聓聕聖聗�聙聛聜聝聞聟聠聡聢聣聤聥聦聧聨聫聬聭聮聯聰聲聳聴聵聶職聸聹聺聻聼聽隆垄拢陇楼娄搂篓漏陋芦卢颅庐炉掳卤虏鲁麓碌露路赂鹿潞禄录陆戮驴吕铝侣旅履屡缕虑氯律率滤绿峦挛孪滦卵乱掠略抡轮伦仑沦纶论萝螺罗逻锣箩骡裸落洛骆络妈麻玛码蚂马骂嘛吗埋买麦卖迈脉瞒馒蛮满蔓曼慢漫�".split(""); +for(j = 0; j != D[194].length; ++j) if(D[194][j].charCodeAt(0) !== 0xFFFD) { e[D[194][j]] = 49664 + j; d[49664 + j] = D[194][j];} +D[195] = "����������������������������������������������������������������聾肁肂肅肈肊肍肎肏肐肑肒肔肕肗肙肞肣肦肧肨肬肰肳肵肶肸肹肻胅胇胈胉胊胋胏胐胑胒胓胔胕胘胟胠胢胣胦胮胵胷胹胻胾胿脀脁脃脄脅脇脈脋�脌脕脗脙脛脜脝脟脠脡脢脣脤脥脦脧脨脩脪脫脭脮脰脳脴脵脷脹脺脻脼脽脿谩芒茫盲氓忙莽猫茅锚毛矛铆卯茂冒帽貌贸么玫枚梅酶霉煤没眉媒镁每美昧寐妹媚门闷们萌蒙檬盟锰猛梦孟眯醚靡糜迷谜弥米秘觅泌蜜密幂棉眠绵冕免勉娩缅面苗描瞄藐秒渺庙妙蔑灭民抿皿敏悯闽明螟鸣铭名命谬摸�".split(""); +for(j = 0; j != D[195].length; ++j) if(D[195][j].charCodeAt(0) !== 0xFFFD) { e[D[195][j]] = 49920 + j; d[49920 + j] = D[195][j];} +D[196] = "����������������������������������������������������������������腀腁腂腃腄腅腇腉腍腎腏腒腖腗腘腛腜腝腞腟腡腢腣腤腦腨腪腫腬腯腲腳腵腶腷腸膁膃膄膅膆膇膉膋膌膍膎膐膒膓膔膕膖膗膙膚膞膟膠膡膢膤膥�膧膩膫膬膭膮膯膰膱膲膴膵膶膷膸膹膼膽膾膿臄臅臇臈臉臋臍臎臏臐臑臒臓摹蘑模膜磨摩魔抹末莫墨默沫漠寞陌谋牟某拇牡亩姆母墓暮幕募慕木目睦牧穆拿哪呐钠那娜纳氖乃奶耐奈南男难囊挠脑恼闹淖呢馁内嫩能妮霓倪泥尼拟你匿腻逆溺蔫拈年碾撵捻念娘酿鸟尿捏聂孽啮镊镍涅您柠狞凝宁�".split(""); +for(j = 0; j != D[196].length; ++j) if(D[196][j].charCodeAt(0) !== 0xFFFD) { e[D[196][j]] = 50176 + j; d[50176 + j] = D[196][j];} +D[197] = "����������������������������������������������������������������臔臕臖臗臘臙臚臛臜臝臞臟臠臡臢臤臥臦臨臩臫臮臯臰臱臲臵臶臷臸臹臺臽臿舃與興舉舊舋舎舏舑舓舕舖舗舘舙舚舝舠舤舥舦舧舩舮舲舺舼舽舿�艀艁艂艃艅艆艈艊艌艍艎艐艑艒艓艔艕艖艗艙艛艜艝艞艠艡艢艣艤艥艦艧艩拧泞牛扭钮纽脓浓农弄奴努怒女暖虐疟挪懦糯诺哦欧鸥殴藕呕偶沤啪趴爬帕怕琶拍排牌徘湃派攀潘盘磐盼畔判叛乓庞旁耪胖抛咆刨炮袍跑泡呸胚培裴赔陪配佩沛喷盆砰抨烹澎彭蓬棚硼篷膨朋鹏捧碰坯砒霹批披劈琵毗�".split(""); +for(j = 0; j != D[197].length; ++j) if(D[197][j].charCodeAt(0) !== 0xFFFD) { e[D[197][j]] = 50432 + j; d[50432 + j] = D[197][j];} +D[198] = "����������������������������������������������������������������艪艫艬艭艱艵艶艷艸艻艼芀芁芃芅芆芇芉芌芐芓芔芕芖芚芛芞芠芢芣芧芲芵芶芺芻芼芿苀苂苃苅苆苉苐苖苙苚苝苢苧苨苩苪苬苭苮苰苲苳苵苶苸�苺苼苽苾苿茀茊茋茍茐茒茓茖茘茙茝茞茟茠茡茢茣茤茥茦茩茪茮茰茲茷茻茽啤脾疲皮匹痞僻屁譬篇偏片骗飘漂瓢票撇瞥拼频贫品聘乒坪苹萍平凭瓶评屏坡泼颇婆破魄迫粕剖扑铺仆莆葡菩蒲埔朴圃普浦谱曝瀑期欺栖戚妻七凄漆柒沏其棋奇歧畦崎脐齐旗祈祁骑起岂乞企启契砌器气迄弃汽泣讫掐�".split(""); +for(j = 0; j != D[198].length; ++j) if(D[198][j].charCodeAt(0) !== 0xFFFD) { e[D[198][j]] = 50688 + j; d[50688 + j] = D[198][j];} +D[199] = "����������������������������������������������������������������茾茿荁荂荄荅荈荊荋荌荍荎荓荕荖荗荘荙荝荢荰荱荲荳荴荵荶荹荺荾荿莀莁莂莃莄莇莈莊莋莌莍莏莐莑莔莕莖莗莙莚莝莟莡莢莣莤莥莦莧莬莭莮�莯莵莻莾莿菂菃菄菆菈菉菋菍菎菐菑菒菓菕菗菙菚菛菞菢菣菤菦菧菨菫菬菭恰洽牵扦钎铅千迁签仟谦乾黔钱钳前潜遣浅谴堑嵌欠歉枪呛腔羌墙蔷强抢橇锹敲悄桥瞧乔侨巧鞘撬翘峭俏窍切茄且怯窃钦侵亲秦琴勤芹擒禽寝沁青轻氢倾卿清擎晴氰情顷请庆琼穷秋丘邱球求囚酋泅趋区蛆曲躯屈驱渠�".split(""); +for(j = 0; j != D[199].length; ++j) if(D[199][j].charCodeAt(0) !== 0xFFFD) { e[D[199][j]] = 50944 + j; d[50944 + j] = D[199][j];} +D[200] = "����������������������������������������������������������������菮華菳菴菵菶菷菺菻菼菾菿萀萂萅萇萈萉萊萐萒萓萔萕萖萗萙萚萛萞萟萠萡萢萣萩萪萫萬萭萮萯萰萲萳萴萵萶萷萹萺萻萾萿葀葁葂葃葄葅葇葈葉�葊葋葌葍葎葏葐葒葓葔葕葖葘葝葞葟葠葢葤葥葦葧葨葪葮葯葰葲葴葷葹葻葼取娶龋趣去圈颧权醛泉全痊拳犬券劝缺炔瘸却鹊榷确雀裙群然燃冉染瓤壤攘嚷让饶扰绕惹热壬仁人忍韧任认刃妊纫扔仍日戎茸蓉荣融熔溶容绒冗揉柔肉茹蠕儒孺如辱乳汝入褥软阮蕊瑞锐闰润若弱撒洒萨腮鳃塞赛三叁�".split(""); +for(j = 0; j != D[200].length; ++j) if(D[200][j].charCodeAt(0) !== 0xFFFD) { e[D[200][j]] = 51200 + j; d[51200 + j] = D[200][j];} +D[201] = "����������������������������������������������������������������葽葾葿蒀蒁蒃蒄蒅蒆蒊蒍蒏蒐蒑蒒蒓蒔蒕蒖蒘蒚蒛蒝蒞蒟蒠蒢蒣蒤蒥蒦蒧蒨蒩蒪蒫蒬蒭蒮蒰蒱蒳蒵蒶蒷蒻蒼蒾蓀蓂蓃蓅蓆蓇蓈蓋蓌蓎蓏蓒蓔蓕蓗�蓘蓙蓚蓛蓜蓞蓡蓢蓤蓧蓨蓩蓪蓫蓭蓮蓯蓱蓲蓳蓴蓵蓶蓷蓸蓹蓺蓻蓽蓾蔀蔁蔂伞散桑嗓丧搔骚扫嫂瑟色涩森僧莎砂杀刹沙纱傻啥煞筛晒珊苫杉山删煽衫闪陕擅赡膳善汕扇缮墒伤商赏晌上尚裳梢捎稍烧芍勺韶少哨邵绍奢赊蛇舌舍赦摄射慑涉社设砷申呻伸身深娠绅神沈审婶甚肾慎渗声生甥牲升绳�".split(""); +for(j = 0; j != D[201].length; ++j) if(D[201][j].charCodeAt(0) !== 0xFFFD) { e[D[201][j]] = 51456 + j; d[51456 + j] = D[201][j];} +D[202] = "����������������������������������������������������������������蔃蔄蔅蔆蔇蔈蔉蔊蔋蔍蔎蔏蔐蔒蔔蔕蔖蔘蔙蔛蔜蔝蔞蔠蔢蔣蔤蔥蔦蔧蔨蔩蔪蔭蔮蔯蔰蔱蔲蔳蔴蔵蔶蔾蔿蕀蕁蕂蕄蕅蕆蕇蕋蕌蕍蕎蕏蕐蕑蕒蕓蕔蕕�蕗蕘蕚蕛蕜蕝蕟蕠蕡蕢蕣蕥蕦蕧蕩蕪蕫蕬蕭蕮蕯蕰蕱蕳蕵蕶蕷蕸蕼蕽蕿薀薁省盛剩胜圣师失狮施湿诗尸虱十石拾时什食蚀实识史矢使屎驶始式示士世柿事拭誓逝势是嗜噬适仕侍释饰氏市恃室视试收手首守寿授售受瘦兽蔬枢梳殊抒输叔舒淑疏书赎孰熟薯暑曙署蜀黍鼠属术述树束戍竖墅庶数漱�".split(""); +for(j = 0; j != D[202].length; ++j) if(D[202][j].charCodeAt(0) !== 0xFFFD) { e[D[202][j]] = 51712 + j; d[51712 + j] = D[202][j];} +D[203] = "����������������������������������������������������������������薂薃薆薈薉薊薋薌薍薎薐薑薒薓薔薕薖薗薘薙薚薝薞薟薠薡薢薣薥薦薧薩薫薬薭薱薲薳薴薵薶薸薺薻薼薽薾薿藀藂藃藄藅藆藇藈藊藋藌藍藎藑藒�藔藖藗藘藙藚藛藝藞藟藠藡藢藣藥藦藧藨藪藫藬藭藮藯藰藱藲藳藴藵藶藷藸恕刷耍摔衰甩帅栓拴霜双爽谁水睡税吮瞬顺舜说硕朔烁斯撕嘶思私司丝死肆寺嗣四伺似饲巳松耸怂颂送宋讼诵搜艘擞嗽苏酥俗素速粟僳塑溯宿诉肃酸蒜算虽隋随绥髓碎岁穗遂隧祟孙损笋蓑梭唆缩琐索锁所塌他它她塔�".split(""); +for(j = 0; j != D[203].length; ++j) if(D[203][j].charCodeAt(0) !== 0xFFFD) { e[D[203][j]] = 51968 + j; d[51968 + j] = D[203][j];} +D[204] = "����������������������������������������������������������������藹藺藼藽藾蘀蘁蘂蘃蘄蘆蘇蘈蘉蘊蘋蘌蘍蘎蘏蘐蘒蘓蘔蘕蘗蘘蘙蘚蘛蘜蘝蘞蘟蘠蘡蘢蘣蘤蘥蘦蘨蘪蘫蘬蘭蘮蘯蘰蘱蘲蘳蘴蘵蘶蘷蘹蘺蘻蘽蘾蘿虀�虁虂虃虄虅虆虇虈虉虊虋虌虒虓處虖虗虘虙虛虜虝號虠虡虣虤虥虦虧虨虩虪獭挞蹋踏胎苔抬台泰酞太态汰坍摊贪瘫滩坛檀痰潭谭谈坦毯袒碳探叹炭汤塘搪堂棠膛唐糖倘躺淌趟烫掏涛滔绦萄桃逃淘陶讨套特藤腾疼誊梯剔踢锑提题蹄啼体替嚏惕涕剃屉天添填田甜恬舔腆挑条迢眺跳贴铁帖厅听烃�".split(""); +for(j = 0; j != D[204].length; ++j) if(D[204][j].charCodeAt(0) !== 0xFFFD) { e[D[204][j]] = 52224 + j; d[52224 + j] = D[204][j];} +D[205] = "����������������������������������������������������������������虭虯虰虲虳虴虵虶虷虸蚃蚄蚅蚆蚇蚈蚉蚎蚏蚐蚑蚒蚔蚖蚗蚘蚙蚚蚛蚞蚟蚠蚡蚢蚥蚦蚫蚭蚮蚲蚳蚷蚸蚹蚻蚼蚽蚾蚿蛁蛂蛃蛅蛈蛌蛍蛒蛓蛕蛖蛗蛚蛜�蛝蛠蛡蛢蛣蛥蛦蛧蛨蛪蛫蛬蛯蛵蛶蛷蛺蛻蛼蛽蛿蜁蜄蜅蜆蜋蜌蜎蜏蜐蜑蜔蜖汀廷停亭庭挺艇通桐酮瞳同铜彤童桶捅筒统痛偷投头透凸秃突图徒途涂屠土吐兔湍团推颓腿蜕褪退吞屯臀拖托脱鸵陀驮驼椭妥拓唾挖哇蛙洼娃瓦袜歪外豌弯湾玩顽丸烷完碗挽晚皖惋宛婉万腕汪王亡枉网往旺望忘妄威�".split(""); +for(j = 0; j != D[205].length; ++j) if(D[205][j].charCodeAt(0) !== 0xFFFD) { e[D[205][j]] = 52480 + j; d[52480 + j] = D[205][j];} +D[206] = "����������������������������������������������������������������蜙蜛蜝蜟蜠蜤蜦蜧蜨蜪蜫蜬蜭蜯蜰蜲蜳蜵蜶蜸蜹蜺蜼蜽蝀蝁蝂蝃蝄蝅蝆蝊蝋蝍蝏蝐蝑蝒蝔蝕蝖蝘蝚蝛蝜蝝蝞蝟蝡蝢蝦蝧蝨蝩蝪蝫蝬蝭蝯蝱蝲蝳蝵�蝷蝸蝹蝺蝿螀螁螄螆螇螉螊螌螎螏螐螑螒螔螕螖螘螙螚螛螜螝螞螠螡螢螣螤巍微危韦违桅围唯惟为潍维苇萎委伟伪尾纬未蔚味畏胃喂魏位渭谓尉慰卫瘟温蚊文闻纹吻稳紊问嗡翁瓮挝蜗涡窝我斡卧握沃巫呜钨乌污诬屋无芜梧吾吴毋武五捂午舞伍侮坞戊雾晤物勿务悟误昔熙析西硒矽晰嘻吸锡牺�".split(""); +for(j = 0; j != D[206].length; ++j) if(D[206][j].charCodeAt(0) !== 0xFFFD) { e[D[206][j]] = 52736 + j; d[52736 + j] = D[206][j];} +D[207] = "����������������������������������������������������������������螥螦螧螩螪螮螰螱螲螴螶螷螸螹螻螼螾螿蟁蟂蟃蟄蟅蟇蟈蟉蟌蟍蟎蟏蟐蟔蟕蟖蟗蟘蟙蟚蟜蟝蟞蟟蟡蟢蟣蟤蟦蟧蟨蟩蟫蟬蟭蟯蟰蟱蟲蟳蟴蟵蟶蟷蟸�蟺蟻蟼蟽蟿蠀蠁蠂蠄蠅蠆蠇蠈蠉蠋蠌蠍蠎蠏蠐蠑蠒蠔蠗蠘蠙蠚蠜蠝蠞蠟蠠蠣稀息希悉膝夕惜熄烯溪汐犀檄袭席习媳喜铣洗系隙戏细瞎虾匣霞辖暇峡侠狭下厦夏吓掀锨先仙鲜纤咸贤衔舷闲涎弦嫌显险现献县腺馅羡宪陷限线相厢镶香箱襄湘乡翔祥详想响享项巷橡像向象萧硝霄削哮嚣销消宵淆晓�".split(""); +for(j = 0; j != D[207].length; ++j) if(D[207][j].charCodeAt(0) !== 0xFFFD) { e[D[207][j]] = 52992 + j; d[52992 + j] = D[207][j];} +D[208] = "����������������������������������������������������������������蠤蠥蠦蠧蠨蠩蠪蠫蠬蠭蠮蠯蠰蠱蠳蠴蠵蠶蠷蠸蠺蠻蠽蠾蠿衁衂衃衆衇衈衉衊衋衎衏衐衑衒術衕衖衘衚衛衜衝衞衟衠衦衧衪衭衯衱衳衴衵衶衸衹衺�衻衼袀袃袆袇袉袊袌袎袏袐袑袓袔袕袗袘袙袚袛袝袞袟袠袡袣袥袦袧袨袩袪小孝校肖啸笑效楔些歇蝎鞋协挟携邪斜胁谐写械卸蟹懈泄泻谢屑薪芯锌欣辛新忻心信衅星腥猩惺兴刑型形邢行醒幸杏性姓兄凶胸匈汹雄熊休修羞朽嗅锈秀袖绣墟戌需虚嘘须徐许蓄酗叙旭序畜恤絮婿绪续轩喧宣悬旋玄�".split(""); +for(j = 0; j != D[208].length; ++j) if(D[208][j].charCodeAt(0) !== 0xFFFD) { e[D[208][j]] = 53248 + j; d[53248 + j] = D[208][j];} +D[209] = "����������������������������������������������������������������袬袮袯袰袲袳袴袵袶袸袹袺袻袽袾袿裀裃裄裇裈裊裋裌裍裏裐裑裓裖裗裚裛補裝裞裠裡裦裧裩裪裫裬裭裮裯裲裵裶裷裺裻製裿褀褁褃褄褅褆複褈�褉褋褌褍褎褏褑褔褕褖褗褘褜褝褞褟褠褢褣褤褦褧褨褩褬褭褮褯褱褲褳褵褷选癣眩绚靴薛学穴雪血勋熏循旬询寻驯巡殉汛训讯逊迅压押鸦鸭呀丫芽牙蚜崖衙涯雅哑亚讶焉咽阉烟淹盐严研蜒岩延言颜阎炎沿奄掩眼衍演艳堰燕厌砚雁唁彦焰宴谚验殃央鸯秧杨扬佯疡羊洋阳氧仰痒养样漾邀腰妖瑶�".split(""); +for(j = 0; j != D[209].length; ++j) if(D[209][j].charCodeAt(0) !== 0xFFFD) { e[D[209][j]] = 53504 + j; d[53504 + j] = D[209][j];} +D[210] = "����������������������������������������������������������������褸褹褺褻褼褽褾褿襀襂襃襅襆襇襈襉襊襋襌襍襎襏襐襑襒襓襔襕襖襗襘襙襚襛襜襝襠襡襢襣襤襥襧襨襩襪襫襬襭襮襯襰襱襲襳襴襵襶襷襸襹襺襼�襽襾覀覂覄覅覇覈覉覊見覌覍覎規覐覑覒覓覔覕視覗覘覙覚覛覜覝覞覟覠覡摇尧遥窑谣姚咬舀药要耀椰噎耶爷野冶也页掖业叶曳腋夜液一壹医揖铱依伊衣颐夷遗移仪胰疑沂宜姨彝椅蚁倚已乙矣以艺抑易邑屹亿役臆逸肄疫亦裔意毅忆义益溢诣议谊译异翼翌绎茵荫因殷音阴姻吟银淫寅饮尹引隐�".split(""); +for(j = 0; j != D[210].length; ++j) if(D[210][j].charCodeAt(0) !== 0xFFFD) { e[D[210][j]] = 53760 + j; d[53760 + j] = D[210][j];} +D[211] = "����������������������������������������������������������������覢覣覤覥覦覧覨覩親覫覬覭覮覯覰覱覲観覴覵覶覷覸覹覺覻覼覽覾覿觀觃觍觓觔觕觗觘觙觛觝觟觠觡觢觤觧觨觩觪觬觭觮觰觱觲觴觵觶觷觸觹觺�觻觼觽觾觿訁訂訃訄訅訆計訉訊訋訌訍討訏訐訑訒訓訔訕訖託記訙訚訛訜訝印英樱婴鹰应缨莹萤营荧蝇迎赢盈影颖硬映哟拥佣臃痈庸雍踊蛹咏泳涌永恿勇用幽优悠忧尤由邮铀犹油游酉有友右佑釉诱又幼迂淤于盂榆虞愚舆余俞逾鱼愉渝渔隅予娱雨与屿禹宇语羽玉域芋郁吁遇喻峪御愈欲狱育誉�".split(""); +for(j = 0; j != D[211].length; ++j) if(D[211][j].charCodeAt(0) !== 0xFFFD) { e[D[211][j]] = 54016 + j; d[54016 + j] = D[211][j];} +D[212] = "����������������������������������������������������������������訞訟訠訡訢訣訤訥訦訧訨訩訪訫訬設訮訯訰許訲訳訴訵訶訷訸訹診註証訽訿詀詁詂詃詄詅詆詇詉詊詋詌詍詎詏詐詑詒詓詔評詖詗詘詙詚詛詜詝詞�詟詠詡詢詣詤詥試詧詨詩詪詫詬詭詮詯詰話該詳詴詵詶詷詸詺詻詼詽詾詿誀浴寓裕预豫驭鸳渊冤元垣袁原援辕园员圆猿源缘远苑愿怨院曰约越跃钥岳粤月悦阅耘云郧匀陨允运蕴酝晕韵孕匝砸杂栽哉灾宰载再在咱攒暂赞赃脏葬遭糟凿藻枣早澡蚤躁噪造皂灶燥责择则泽贼怎增憎曾赠扎喳渣札轧�".split(""); +for(j = 0; j != D[212].length; ++j) if(D[212][j].charCodeAt(0) !== 0xFFFD) { e[D[212][j]] = 54272 + j; d[54272 + j] = D[212][j];} +D[213] = "����������������������������������������������������������������誁誂誃誄誅誆誇誈誋誌認誎誏誐誑誒誔誕誖誗誘誙誚誛誜誝語誟誠誡誢誣誤誥誦誧誨誩說誫説読誮誯誰誱課誳誴誵誶誷誸誹誺誻誼誽誾調諀諁諂�諃諄諅諆談諈諉諊請諌諍諎諏諐諑諒諓諔諕論諗諘諙諚諛諜諝諞諟諠諡諢諣铡闸眨栅榨咋乍炸诈摘斋宅窄债寨瞻毡詹粘沾盏斩辗崭展蘸栈占战站湛绽樟章彰漳张掌涨杖丈帐账仗胀瘴障招昭找沼赵照罩兆肇召遮折哲蛰辙者锗蔗这浙珍斟真甄砧臻贞针侦枕疹诊震振镇阵蒸挣睁征狰争怔整拯正政�".split(""); +for(j = 0; j != D[213].length; ++j) if(D[213][j].charCodeAt(0) !== 0xFFFD) { e[D[213][j]] = 54528 + j; d[54528 + j] = D[213][j];} +D[214] = "����������������������������������������������������������������諤諥諦諧諨諩諪諫諬諭諮諯諰諱諲諳諴諵諶諷諸諹諺諻諼諽諾諿謀謁謂謃謄謅謆謈謉謊謋謌謍謎謏謐謑謒謓謔謕謖謗謘謙謚講謜謝謞謟謠謡謢謣�謤謥謧謨謩謪謫謬謭謮謯謰謱謲謳謴謵謶謷謸謹謺謻謼謽謾謿譀譁譂譃譄譅帧症郑证芝枝支吱蜘知肢脂汁之织职直植殖执值侄址指止趾只旨纸志挚掷至致置帜峙制智秩稚质炙痔滞治窒中盅忠钟衷终种肿重仲众舟周州洲诌粥轴肘帚咒皱宙昼骤珠株蛛朱猪诸诛逐竹烛煮拄瞩嘱主著柱助蛀贮铸筑�".split(""); +for(j = 0; j != D[214].length; ++j) if(D[214][j].charCodeAt(0) !== 0xFFFD) { e[D[214][j]] = 54784 + j; d[54784 + j] = D[214][j];} +D[215] = "����������������������������������������������������������������譆譇譈證譊譋譌譍譎譏譐譑譒譓譔譕譖譗識譙譚譛譜譝譞譟譠譡譢譣譤譥譧譨譩譪譫譭譮譯議譱譲譳譴譵譶護譸譹譺譻譼譽譾譿讀讁讂讃讄讅讆�讇讈讉變讋讌讍讎讏讐讑讒讓讔讕讖讗讘讙讚讛讜讝讞讟讬讱讻诇诐诪谉谞住注祝驻抓爪拽专砖转撰赚篆桩庄装妆撞壮状椎锥追赘坠缀谆准捉拙卓桌琢茁酌啄着灼浊兹咨资姿滋淄孜紫仔籽滓子自渍字鬃棕踪宗综总纵邹走奏揍租足卒族祖诅阻组钻纂嘴醉最罪尊遵昨左佐柞做作坐座������".split(""); +for(j = 0; j != D[215].length; ++j) if(D[215][j].charCodeAt(0) !== 0xFFFD) { e[D[215][j]] = 55040 + j; d[55040 + j] = D[215][j];} +D[216] = "����������������������������������������������������������������谸谹谺谻谼谽谾谿豀豂豃豄豅豈豊豋豍豎豏豐豑豒豓豔豖豗豘豙豛豜豝豞豟豠豣豤豥豦豧豨豩豬豭豮豯豰豱豲豴豵豶豷豻豼豽豾豿貀貁貃貄貆貇�貈貋貍貎貏貐貑貒貓貕貖貗貙貚貛貜貝貞貟負財貢貣貤貥貦貧貨販貪貫責貭亍丌兀丐廿卅丕亘丞鬲孬噩丨禺丿匕乇夭爻卮氐囟胤馗毓睾鼗丶亟鼐乜乩亓芈孛啬嘏仄厍厝厣厥厮靥赝匚叵匦匮匾赜卦卣刂刈刎刭刳刿剀剌剞剡剜蒯剽劂劁劐劓冂罔亻仃仉仂仨仡仫仞伛仳伢佤仵伥伧伉伫佞佧攸佚佝�".split(""); +for(j = 0; j != D[216].length; ++j) if(D[216][j].charCodeAt(0) !== 0xFFFD) { e[D[216][j]] = 55296 + j; d[55296 + j] = D[216][j];} +D[217] = "����������������������������������������������������������������貮貯貰貱貲貳貴貵貶買貸貹貺費貼貽貾貿賀賁賂賃賄賅賆資賈賉賊賋賌賍賎賏賐賑賒賓賔賕賖賗賘賙賚賛賜賝賞賟賠賡賢賣賤賥賦賧賨賩質賫賬�賭賮賯賰賱賲賳賴賵賶賷賸賹賺賻購賽賾賿贀贁贂贃贄贅贆贇贈贉贊贋贌贍佟佗伲伽佶佴侑侉侃侏佾佻侪佼侬侔俦俨俪俅俚俣俜俑俟俸倩偌俳倬倏倮倭俾倜倌倥倨偾偃偕偈偎偬偻傥傧傩傺僖儆僭僬僦僮儇儋仝氽佘佥俎龠汆籴兮巽黉馘冁夔勹匍訇匐凫夙兕亠兖亳衮袤亵脔裒禀嬴蠃羸冫冱冽冼�".split(""); +for(j = 0; j != D[217].length; ++j) if(D[217][j].charCodeAt(0) !== 0xFFFD) { e[D[217][j]] = 55552 + j; d[55552 + j] = D[217][j];} +D[218] = "����������������������������������������������������������������贎贏贐贑贒贓贔贕贖贗贘贙贚贛贜贠赑赒赗赟赥赨赩赪赬赮赯赱赲赸赹赺赻赼赽赾赿趀趂趃趆趇趈趉趌趍趎趏趐趒趓趕趖趗趘趙趚趛趜趝趞趠趡�趢趤趥趦趧趨趩趪趫趬趭趮趯趰趲趶趷趹趻趽跀跁跂跅跇跈跉跊跍跐跒跓跔凇冖冢冥讠讦讧讪讴讵讷诂诃诋诏诎诒诓诔诖诘诙诜诟诠诤诨诩诮诰诳诶诹诼诿谀谂谄谇谌谏谑谒谔谕谖谙谛谘谝谟谠谡谥谧谪谫谮谯谲谳谵谶卩卺阝阢阡阱阪阽阼陂陉陔陟陧陬陲陴隈隍隗隰邗邛邝邙邬邡邴邳邶邺�".split(""); +for(j = 0; j != D[218].length; ++j) if(D[218][j].charCodeAt(0) !== 0xFFFD) { e[D[218][j]] = 55808 + j; d[55808 + j] = D[218][j];} +D[219] = "����������������������������������������������������������������跕跘跙跜跠跡跢跥跦跧跩跭跮跰跱跲跴跶跼跾跿踀踁踂踃踄踆踇踈踋踍踎踐踑踒踓踕踖踗踘踙踚踛踜踠踡踤踥踦踧踨踫踭踰踲踳踴踶踷踸踻踼踾�踿蹃蹅蹆蹌蹍蹎蹏蹐蹓蹔蹕蹖蹗蹘蹚蹛蹜蹝蹞蹟蹠蹡蹢蹣蹤蹥蹧蹨蹪蹫蹮蹱邸邰郏郅邾郐郄郇郓郦郢郜郗郛郫郯郾鄄鄢鄞鄣鄱鄯鄹酃酆刍奂劢劬劭劾哿勐勖勰叟燮矍廴凵凼鬯厶弁畚巯坌垩垡塾墼壅壑圩圬圪圳圹圮圯坜圻坂坩垅坫垆坼坻坨坭坶坳垭垤垌垲埏垧垴垓垠埕埘埚埙埒垸埴埯埸埤埝�".split(""); +for(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];} +D[220] = "����������������������������������������������������������������蹳蹵蹷蹸蹹蹺蹻蹽蹾躀躂躃躄躆躈躉躊躋躌躍躎躑躒躓躕躖躗躘躙躚躛躝躟躠躡躢躣躤躥躦躧躨躩躪躭躮躰躱躳躴躵躶躷躸躹躻躼躽躾躿軀軁軂�軃軄軅軆軇軈軉車軋軌軍軏軐軑軒軓軔軕軖軗軘軙軚軛軜軝軞軟軠軡転軣軤堋堍埽埭堀堞堙塄堠塥塬墁墉墚墀馨鼙懿艹艽艿芏芊芨芄芎芑芗芙芫芸芾芰苈苊苣芘芷芮苋苌苁芩芴芡芪芟苄苎芤苡茉苷苤茏茇苜苴苒苘茌苻苓茑茚茆茔茕苠苕茜荑荛荜茈莒茼茴茱莛荞茯荏荇荃荟荀茗荠茭茺茳荦荥�".split(""); +for(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];} +D[221] = "����������������������������������������������������������������軥軦軧軨軩軪軫軬軭軮軯軰軱軲軳軴軵軶軷軸軹軺軻軼軽軾軿輀輁輂較輄輅輆輇輈載輊輋輌輍輎輏輐輑輒輓輔輕輖輗輘輙輚輛輜輝輞輟輠輡輢輣�輤輥輦輧輨輩輪輫輬輭輮輯輰輱輲輳輴輵輶輷輸輹輺輻輼輽輾輿轀轁轂轃轄荨茛荩荬荪荭荮莰荸莳莴莠莪莓莜莅荼莶莩荽莸荻莘莞莨莺莼菁萁菥菘堇萘萋菝菽菖萜萸萑萆菔菟萏萃菸菹菪菅菀萦菰菡葜葑葚葙葳蒇蒈葺蒉葸萼葆葩葶蒌蒎萱葭蓁蓍蓐蓦蒽蓓蓊蒿蒺蓠蒡蒹蒴蒗蓥蓣蔌甍蔸蓰蔹蔟蔺�".split(""); +for(j = 0; j != D[221].length; ++j) if(D[221][j].charCodeAt(0) !== 0xFFFD) { e[D[221][j]] = 56576 + j; d[56576 + j] = D[221][j];} +D[222] = "����������������������������������������������������������������轅轆轇轈轉轊轋轌轍轎轏轐轑轒轓轔轕轖轗轘轙轚轛轜轝轞轟轠轡轢轣轤轥轪辀辌辒辝辠辡辢辤辥辦辧辪辬辭辮辯農辳辴辵辷辸辺辻込辿迀迃迆�迉迊迋迌迍迏迒迖迗迚迠迡迣迧迬迯迱迲迴迵迶迺迻迼迾迿逇逈逌逎逓逕逘蕖蔻蓿蓼蕙蕈蕨蕤蕞蕺瞢蕃蕲蕻薤薨薇薏蕹薮薜薅薹薷薰藓藁藜藿蘧蘅蘩蘖蘼廾弈夼奁耷奕奚奘匏尢尥尬尴扌扪抟抻拊拚拗拮挢拶挹捋捃掭揶捱捺掎掴捭掬掊捩掮掼揲揸揠揿揄揞揎摒揆掾摅摁搋搛搠搌搦搡摞撄摭撖�".split(""); +for(j = 0; j != D[222].length; ++j) if(D[222][j].charCodeAt(0) !== 0xFFFD) { e[D[222][j]] = 56832 + j; d[56832 + j] = D[222][j];} +D[223] = "����������������������������������������������������������������這逜連逤逥逧逨逩逪逫逬逰週進逳逴逷逹逺逽逿遀遃遅遆遈遉遊運遌過達違遖遙遚遜遝遞遟遠遡遤遦遧適遪遫遬遯遰遱遲遳遶遷選遹遺遻遼遾邁�還邅邆邇邉邊邌邍邎邏邐邒邔邖邘邚邜邞邟邠邤邥邧邨邩邫邭邲邷邼邽邿郀摺撷撸撙撺擀擐擗擤擢攉攥攮弋忒甙弑卟叱叽叩叨叻吒吖吆呋呒呓呔呖呃吡呗呙吣吲咂咔呷呱呤咚咛咄呶呦咝哐咭哂咴哒咧咦哓哔呲咣哕咻咿哌哙哚哜咩咪咤哝哏哞唛哧唠哽唔哳唢唣唏唑唧唪啧喏喵啉啭啁啕唿啐唼�".split(""); +for(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];} +D[224] = "����������������������������������������������������������������郂郃郆郈郉郋郌郍郒郔郕郖郘郙郚郞郟郠郣郤郥郩郪郬郮郰郱郲郳郵郶郷郹郺郻郼郿鄀鄁鄃鄅鄆鄇鄈鄉鄊鄋鄌鄍鄎鄏鄐鄑鄒鄓鄔鄕鄖鄗鄘鄚鄛鄜�鄝鄟鄠鄡鄤鄥鄦鄧鄨鄩鄪鄫鄬鄭鄮鄰鄲鄳鄴鄵鄶鄷鄸鄺鄻鄼鄽鄾鄿酀酁酂酄唷啖啵啶啷唳唰啜喋嗒喃喱喹喈喁喟啾嗖喑啻嗟喽喾喔喙嗪嗷嗉嘟嗑嗫嗬嗔嗦嗝嗄嗯嗥嗲嗳嗌嗍嗨嗵嗤辔嘞嘈嘌嘁嘤嘣嗾嘀嘧嘭噘嘹噗嘬噍噢噙噜噌噔嚆噤噱噫噻噼嚅嚓嚯囔囗囝囡囵囫囹囿圄圊圉圜帏帙帔帑帱帻帼�".split(""); +for(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];} +D[225] = "����������������������������������������������������������������酅酇酈酑酓酔酕酖酘酙酛酜酟酠酦酧酨酫酭酳酺酻酼醀醁醂醃醄醆醈醊醎醏醓醔醕醖醗醘醙醜醝醞醟醠醡醤醥醦醧醨醩醫醬醰醱醲醳醶醷醸醹醻�醼醽醾醿釀釁釂釃釄釅釆釈釋釐釒釓釔釕釖釗釘釙釚釛針釞釟釠釡釢釣釤釥帷幄幔幛幞幡岌屺岍岐岖岈岘岙岑岚岜岵岢岽岬岫岱岣峁岷峄峒峤峋峥崂崃崧崦崮崤崞崆崛嵘崾崴崽嵬嵛嵯嵝嵫嵋嵊嵩嵴嶂嶙嶝豳嶷巅彳彷徂徇徉後徕徙徜徨徭徵徼衢彡犭犰犴犷犸狃狁狎狍狒狨狯狩狲狴狷猁狳猃狺�".split(""); +for(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];} +D[226] = "����������������������������������������������������������������釦釧釨釩釪釫釬釭釮釯釰釱釲釳釴釵釶釷釸釹釺釻釼釽釾釿鈀鈁鈂鈃鈄鈅鈆鈇鈈鈉鈊鈋鈌鈍鈎鈏鈐鈑鈒鈓鈔鈕鈖鈗鈘鈙鈚鈛鈜鈝鈞鈟鈠鈡鈢鈣鈤�鈥鈦鈧鈨鈩鈪鈫鈬鈭鈮鈯鈰鈱鈲鈳鈴鈵鈶鈷鈸鈹鈺鈻鈼鈽鈾鈿鉀鉁鉂鉃鉄鉅狻猗猓猡猊猞猝猕猢猹猥猬猸猱獐獍獗獠獬獯獾舛夥飧夤夂饣饧饨饩饪饫饬饴饷饽馀馄馇馊馍馐馑馓馔馕庀庑庋庖庥庠庹庵庾庳赓廒廑廛廨廪膺忄忉忖忏怃忮怄忡忤忾怅怆忪忭忸怙怵怦怛怏怍怩怫怊怿怡恸恹恻恺恂�".split(""); +for(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];} +D[227] = "����������������������������������������������������������������鉆鉇鉈鉉鉊鉋鉌鉍鉎鉏鉐鉑鉒鉓鉔鉕鉖鉗鉘鉙鉚鉛鉜鉝鉞鉟鉠鉡鉢鉣鉤鉥鉦鉧鉨鉩鉪鉫鉬鉭鉮鉯鉰鉱鉲鉳鉵鉶鉷鉸鉹鉺鉻鉼鉽鉾鉿銀銁銂銃銄銅�銆銇銈銉銊銋銌銍銏銐銑銒銓銔銕銖銗銘銙銚銛銜銝銞銟銠銡銢銣銤銥銦銧恪恽悖悚悭悝悃悒悌悛惬悻悱惝惘惆惚悴愠愦愕愣惴愀愎愫慊慵憬憔憧憷懔懵忝隳闩闫闱闳闵闶闼闾阃阄阆阈阊阋阌阍阏阒阕阖阗阙阚丬爿戕氵汔汜汊沣沅沐沔沌汨汩汴汶沆沩泐泔沭泷泸泱泗沲泠泖泺泫泮沱泓泯泾�".split(""); +for(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];} +D[228] = "����������������������������������������������������������������銨銩銪銫銬銭銯銰銱銲銳銴銵銶銷銸銹銺銻銼銽銾銿鋀鋁鋂鋃鋄鋅鋆鋇鋉鋊鋋鋌鋍鋎鋏鋐鋑鋒鋓鋔鋕鋖鋗鋘鋙鋚鋛鋜鋝鋞鋟鋠鋡鋢鋣鋤鋥鋦鋧鋨�鋩鋪鋫鋬鋭鋮鋯鋰鋱鋲鋳鋴鋵鋶鋷鋸鋹鋺鋻鋼鋽鋾鋿錀錁錂錃錄錅錆錇錈錉洹洧洌浃浈洇洄洙洎洫浍洮洵洚浏浒浔洳涑浯涞涠浞涓涔浜浠浼浣渚淇淅淞渎涿淠渑淦淝淙渖涫渌涮渫湮湎湫溲湟溆湓湔渲渥湄滟溱溘滠漭滢溥溧溽溻溷滗溴滏溏滂溟潢潆潇漤漕滹漯漶潋潴漪漉漩澉澍澌潸潲潼潺濑�".split(""); +for(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];} +D[229] = "����������������������������������������������������������������錊錋錌錍錎錏錐錑錒錓錔錕錖錗錘錙錚錛錜錝錞錟錠錡錢錣錤錥錦錧錨錩錪錫錬錭錮錯錰錱録錳錴錵錶錷錸錹錺錻錼錽錿鍀鍁鍂鍃鍄鍅鍆鍇鍈鍉�鍊鍋鍌鍍鍎鍏鍐鍑鍒鍓鍔鍕鍖鍗鍘鍙鍚鍛鍜鍝鍞鍟鍠鍡鍢鍣鍤鍥鍦鍧鍨鍩鍫濉澧澹澶濂濡濮濞濠濯瀚瀣瀛瀹瀵灏灞宀宄宕宓宥宸甯骞搴寤寮褰寰蹇謇辶迓迕迥迮迤迩迦迳迨逅逄逋逦逑逍逖逡逵逶逭逯遄遑遒遐遨遘遢遛暹遴遽邂邈邃邋彐彗彖彘尻咫屐屙孱屣屦羼弪弩弭艴弼鬻屮妁妃妍妩妪妣�".split(""); +for(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];} +D[230] = "����������������������������������������������������������������鍬鍭鍮鍯鍰鍱鍲鍳鍴鍵鍶鍷鍸鍹鍺鍻鍼鍽鍾鍿鎀鎁鎂鎃鎄鎅鎆鎇鎈鎉鎊鎋鎌鎍鎎鎐鎑鎒鎓鎔鎕鎖鎗鎘鎙鎚鎛鎜鎝鎞鎟鎠鎡鎢鎣鎤鎥鎦鎧鎨鎩鎪鎫�鎬鎭鎮鎯鎰鎱鎲鎳鎴鎵鎶鎷鎸鎹鎺鎻鎼鎽鎾鎿鏀鏁鏂鏃鏄鏅鏆鏇鏈鏉鏋鏌鏍妗姊妫妞妤姒妲妯姗妾娅娆姝娈姣姘姹娌娉娲娴娑娣娓婀婧婊婕娼婢婵胬媪媛婷婺媾嫫媲嫒嫔媸嫠嫣嫱嫖嫦嫘嫜嬉嬗嬖嬲嬷孀尕尜孚孥孳孑孓孢驵驷驸驺驿驽骀骁骅骈骊骐骒骓骖骘骛骜骝骟骠骢骣骥骧纟纡纣纥纨纩�".split(""); +for(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];} +D[231] = "����������������������������������������������������������������鏎鏏鏐鏑鏒鏓鏔鏕鏗鏘鏙鏚鏛鏜鏝鏞鏟鏠鏡鏢鏣鏤鏥鏦鏧鏨鏩鏪鏫鏬鏭鏮鏯鏰鏱鏲鏳鏴鏵鏶鏷鏸鏹鏺鏻鏼鏽鏾鏿鐀鐁鐂鐃鐄鐅鐆鐇鐈鐉鐊鐋鐌鐍�鐎鐏鐐鐑鐒鐓鐔鐕鐖鐗鐘鐙鐚鐛鐜鐝鐞鐟鐠鐡鐢鐣鐤鐥鐦鐧鐨鐩鐪鐫鐬鐭鐮纭纰纾绀绁绂绉绋绌绐绔绗绛绠绡绨绫绮绯绱绲缍绶绺绻绾缁缂缃缇缈缋缌缏缑缒缗缙缜缛缟缡缢缣缤缥缦缧缪缫缬缭缯缰缱缲缳缵幺畿巛甾邕玎玑玮玢玟珏珂珑玷玳珀珉珈珥珙顼琊珩珧珞玺珲琏琪瑛琦琥琨琰琮琬�".split(""); +for(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];} +D[232] = "����������������������������������������������������������������鐯鐰鐱鐲鐳鐴鐵鐶鐷鐸鐹鐺鐻鐼鐽鐿鑀鑁鑂鑃鑄鑅鑆鑇鑈鑉鑊鑋鑌鑍鑎鑏鑐鑑鑒鑓鑔鑕鑖鑗鑘鑙鑚鑛鑜鑝鑞鑟鑠鑡鑢鑣鑤鑥鑦鑧鑨鑩鑪鑬鑭鑮鑯�鑰鑱鑲鑳鑴鑵鑶鑷鑸鑹鑺鑻鑼鑽鑾鑿钀钁钂钃钄钑钖钘铇铏铓铔铚铦铻锜锠琛琚瑁瑜瑗瑕瑙瑷瑭瑾璜璎璀璁璇璋璞璨璩璐璧瓒璺韪韫韬杌杓杞杈杩枥枇杪杳枘枧杵枨枞枭枋杷杼柰栉柘栊柩枰栌柙枵柚枳柝栀柃枸柢栎柁柽栲栳桠桡桎桢桄桤梃栝桕桦桁桧桀栾桊桉栩梵梏桴桷梓桫棂楮棼椟椠棹�".split(""); +for(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];} +D[233] = "����������������������������������������������������������������锧锳锽镃镈镋镕镚镠镮镴镵長镸镹镺镻镼镽镾門閁閂閃閄閅閆閇閈閉閊開閌閍閎閏閐閑閒間閔閕閖閗閘閙閚閛閜閝閞閟閠閡関閣閤閥閦閧閨閩閪�閫閬閭閮閯閰閱閲閳閴閵閶閷閸閹閺閻閼閽閾閿闀闁闂闃闄闅闆闇闈闉闊闋椤棰椋椁楗棣椐楱椹楠楂楝榄楫榀榘楸椴槌榇榈槎榉楦楣楹榛榧榻榫榭槔榱槁槊槟榕槠榍槿樯槭樗樘橥槲橄樾檠橐橛樵檎橹樽樨橘橼檑檐檩檗檫猷獒殁殂殇殄殒殓殍殚殛殡殪轫轭轱轲轳轵轶轸轷轹轺轼轾辁辂辄辇辋�".split(""); +for(j = 0; j != D[233].length; ++j) if(D[233][j].charCodeAt(0) !== 0xFFFD) { e[D[233][j]] = 59648 + j; d[59648 + j] = D[233][j];} +D[234] = "����������������������������������������������������������������闌闍闎闏闐闑闒闓闔闕闖闗闘闙闚闛關闝闞闟闠闡闢闣闤闥闦闧闬闿阇阓阘阛阞阠阣阤阥阦阧阨阩阫阬阭阯阰阷阸阹阺阾陁陃陊陎陏陑陒陓陖陗�陘陙陚陜陝陞陠陣陥陦陫陭陮陯陰陱陳陸陹険陻陼陽陾陿隀隁隂隃隄隇隉隊辍辎辏辘辚軎戋戗戛戟戢戡戥戤戬臧瓯瓴瓿甏甑甓攴旮旯旰昊昙杲昃昕昀炅曷昝昴昱昶昵耆晟晔晁晏晖晡晗晷暄暌暧暝暾曛曜曦曩贲贳贶贻贽赀赅赆赈赉赇赍赕赙觇觊觋觌觎觏觐觑牮犟牝牦牯牾牿犄犋犍犏犒挈挲掰�".split(""); +for(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];} +D[235] = "����������������������������������������������������������������隌階隑隒隓隕隖隚際隝隞隟隠隡隢隣隤隥隦隨隩險隫隬隭隮隯隱隲隴隵隷隸隺隻隿雂雃雈雊雋雐雑雓雔雖雗雘雙雚雛雜雝雞雟雡離難雤雥雦雧雫�雬雭雮雰雱雲雴雵雸雺電雼雽雿霂霃霅霊霋霌霐霑霒霔霕霗霘霙霚霛霝霟霠搿擘耄毪毳毽毵毹氅氇氆氍氕氘氙氚氡氩氤氪氲攵敕敫牍牒牖爰虢刖肟肜肓肼朊肽肱肫肭肴肷胧胨胩胪胛胂胄胙胍胗朐胝胫胱胴胭脍脎胲胼朕脒豚脶脞脬脘脲腈腌腓腴腙腚腱腠腩腼腽腭腧塍媵膈膂膑滕膣膪臌朦臊膻�".split(""); +for(j = 0; j != D[235].length; ++j) if(D[235][j].charCodeAt(0) !== 0xFFFD) { e[D[235][j]] = 60160 + j; d[60160 + j] = D[235][j];} +D[236] = "����������������������������������������������������������������霡霢霣霤霥霦霧霨霩霫霬霮霯霱霳霴霵霶霷霺霻霼霽霿靀靁靂靃靄靅靆靇靈靉靊靋靌靍靎靏靐靑靔靕靗靘靚靜靝靟靣靤靦靧靨靪靫靬靭靮靯靰靱�靲靵靷靸靹靺靻靽靾靿鞀鞁鞂鞃鞄鞆鞇鞈鞉鞊鞌鞎鞏鞐鞓鞕鞖鞗鞙鞚鞛鞜鞝臁膦欤欷欹歃歆歙飑飒飓飕飙飚殳彀毂觳斐齑斓於旆旄旃旌旎旒旖炀炜炖炝炻烀炷炫炱烨烊焐焓焖焯焱煳煜煨煅煲煊煸煺熘熳熵熨熠燠燔燧燹爝爨灬焘煦熹戾戽扃扈扉礻祀祆祉祛祜祓祚祢祗祠祯祧祺禅禊禚禧禳忑忐�".split(""); +for(j = 0; j != D[236].length; ++j) if(D[236][j].charCodeAt(0) !== 0xFFFD) { e[D[236][j]] = 60416 + j; d[60416 + j] = D[236][j];} +D[237] = "����������������������������������������������������������������鞞鞟鞡鞢鞤鞥鞦鞧鞨鞩鞪鞬鞮鞰鞱鞳鞵鞶鞷鞸鞹鞺鞻鞼鞽鞾鞿韀韁韂韃韄韅韆韇韈韉韊韋韌韍韎韏韐韑韒韓韔韕韖韗韘韙韚韛韜韝韞韟韠韡韢韣�韤韥韨韮韯韰韱韲韴韷韸韹韺韻韼韽韾響頀頁頂頃頄項順頇須頉頊頋頌頍頎怼恝恚恧恁恙恣悫愆愍慝憩憝懋懑戆肀聿沓泶淼矶矸砀砉砗砘砑斫砭砜砝砹砺砻砟砼砥砬砣砩硎硭硖硗砦硐硇硌硪碛碓碚碇碜碡碣碲碹碥磔磙磉磬磲礅磴礓礤礞礴龛黹黻黼盱眄眍盹眇眈眚眢眙眭眦眵眸睐睑睇睃睚睨�".split(""); +for(j = 0; j != D[237].length; ++j) if(D[237][j].charCodeAt(0) !== 0xFFFD) { e[D[237][j]] = 60672 + j; d[60672 + j] = D[237][j];} +D[238] = "����������������������������������������������������������������頏預頑頒頓頔頕頖頗領頙頚頛頜頝頞頟頠頡頢頣頤頥頦頧頨頩頪頫頬頭頮頯頰頱頲頳頴頵頶頷頸頹頺頻頼頽頾頿顀顁顂顃顄顅顆顇顈顉顊顋題額�顎顏顐顑顒顓顔顕顖顗願顙顚顛顜顝類顟顠顡顢顣顤顥顦顧顨顩顪顫顬顭顮睢睥睿瞍睽瞀瞌瞑瞟瞠瞰瞵瞽町畀畎畋畈畛畲畹疃罘罡罟詈罨罴罱罹羁罾盍盥蠲钅钆钇钋钊钌钍钏钐钔钗钕钚钛钜钣钤钫钪钭钬钯钰钲钴钶钷钸钹钺钼钽钿铄铈铉铊铋铌铍铎铐铑铒铕铖铗铙铘铛铞铟铠铢铤铥铧铨铪�".split(""); +for(j = 0; j != D[238].length; ++j) if(D[238][j].charCodeAt(0) !== 0xFFFD) { e[D[238][j]] = 60928 + j; d[60928 + j] = D[238][j];} +D[239] = "����������������������������������������������������������������顯顰顱顲顳顴颋颎颒颕颙颣風颩颪颫颬颭颮颯颰颱颲颳颴颵颶颷颸颹颺颻颼颽颾颿飀飁飂飃飄飅飆飇飈飉飊飋飌飍飏飐飔飖飗飛飜飝飠飡飢飣飤�飥飦飩飪飫飬飭飮飯飰飱飲飳飴飵飶飷飸飹飺飻飼飽飾飿餀餁餂餃餄餅餆餇铩铫铮铯铳铴铵铷铹铼铽铿锃锂锆锇锉锊锍锎锏锒锓锔锕锖锘锛锝锞锟锢锪锫锩锬锱锲锴锶锷锸锼锾锿镂锵镄镅镆镉镌镎镏镒镓镔镖镗镘镙镛镞镟镝镡镢镤镥镦镧镨镩镪镫镬镯镱镲镳锺矧矬雉秕秭秣秫稆嵇稃稂稞稔�".split(""); +for(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];} +D[240] = "����������������������������������������������������������������餈餉養餋餌餎餏餑餒餓餔餕餖餗餘餙餚餛餜餝餞餟餠餡餢餣餤餥餦餧館餩餪餫餬餭餯餰餱餲餳餴餵餶餷餸餹餺餻餼餽餾餿饀饁饂饃饄饅饆饇饈饉�饊饋饌饍饎饏饐饑饒饓饖饗饘饙饚饛饜饝饞饟饠饡饢饤饦饳饸饹饻饾馂馃馉稹稷穑黏馥穰皈皎皓皙皤瓞瓠甬鸠鸢鸨鸩鸪鸫鸬鸲鸱鸶鸸鸷鸹鸺鸾鹁鹂鹄鹆鹇鹈鹉鹋鹌鹎鹑鹕鹗鹚鹛鹜鹞鹣鹦鹧鹨鹩鹪鹫鹬鹱鹭鹳疒疔疖疠疝疬疣疳疴疸痄疱疰痃痂痖痍痣痨痦痤痫痧瘃痱痼痿瘐瘀瘅瘌瘗瘊瘥瘘瘕瘙�".split(""); +for(j = 0; j != D[240].length; ++j) if(D[240][j].charCodeAt(0) !== 0xFFFD) { e[D[240][j]] = 61440 + j; d[61440 + j] = D[240][j];} +D[241] = "����������������������������������������������������������������馌馎馚馛馜馝馞馟馠馡馢馣馤馦馧馩馪馫馬馭馮馯馰馱馲馳馴馵馶馷馸馹馺馻馼馽馾馿駀駁駂駃駄駅駆駇駈駉駊駋駌駍駎駏駐駑駒駓駔駕駖駗駘�駙駚駛駜駝駞駟駠駡駢駣駤駥駦駧駨駩駪駫駬駭駮駯駰駱駲駳駴駵駶駷駸駹瘛瘼瘢瘠癀瘭瘰瘿瘵癃瘾瘳癍癞癔癜癖癫癯翊竦穸穹窀窆窈窕窦窠窬窨窭窳衤衩衲衽衿袂袢裆袷袼裉裢裎裣裥裱褚裼裨裾裰褡褙褓褛褊褴褫褶襁襦襻疋胥皲皴矜耒耔耖耜耠耢耥耦耧耩耨耱耋耵聃聆聍聒聩聱覃顸颀颃�".split(""); +for(j = 0; j != D[241].length; ++j) if(D[241][j].charCodeAt(0) !== 0xFFFD) { e[D[241][j]] = 61696 + j; d[61696 + j] = D[241][j];} +D[242] = "����������������������������������������������������������������駺駻駼駽駾駿騀騁騂騃騄騅騆騇騈騉騊騋騌騍騎騏騐騑騒験騔騕騖騗騘騙騚騛騜騝騞騟騠騡騢騣騤騥騦騧騨騩騪騫騬騭騮騯騰騱騲騳騴騵騶騷騸�騹騺騻騼騽騾騿驀驁驂驃驄驅驆驇驈驉驊驋驌驍驎驏驐驑驒驓驔驕驖驗驘驙颉颌颍颏颔颚颛颞颟颡颢颥颦虍虔虬虮虿虺虼虻蚨蚍蚋蚬蚝蚧蚣蚪蚓蚩蚶蛄蚵蛎蚰蚺蚱蚯蛉蛏蚴蛩蛱蛲蛭蛳蛐蜓蛞蛴蛟蛘蛑蜃蜇蛸蜈蜊蜍蜉蜣蜻蜞蜥蜮蜚蜾蝈蜴蜱蜩蜷蜿螂蜢蝽蝾蝻蝠蝰蝌蝮螋蝓蝣蝼蝤蝙蝥螓螯螨蟒�".split(""); +for(j = 0; j != D[242].length; ++j) if(D[242][j].charCodeAt(0) !== 0xFFFD) { e[D[242][j]] = 61952 + j; d[61952 + j] = D[242][j];} +D[243] = "����������������������������������������������������������������驚驛驜驝驞驟驠驡驢驣驤驥驦驧驨驩驪驫驲骃骉骍骎骔骕骙骦骩骪骫骬骭骮骯骲骳骴骵骹骻骽骾骿髃髄髆髇髈髉髊髍髎髏髐髒體髕髖髗髙髚髛髜�髝髞髠髢髣髤髥髧髨髩髪髬髮髰髱髲髳髴髵髶髷髸髺髼髽髾髿鬀鬁鬂鬄鬅鬆蟆螈螅螭螗螃螫蟥螬螵螳蟋蟓螽蟑蟀蟊蟛蟪蟠蟮蠖蠓蟾蠊蠛蠡蠹蠼缶罂罄罅舐竺竽笈笃笄笕笊笫笏筇笸笪笙笮笱笠笥笤笳笾笞筘筚筅筵筌筝筠筮筻筢筲筱箐箦箧箸箬箝箨箅箪箜箢箫箴篑篁篌篝篚篥篦篪簌篾篼簏簖簋�".split(""); +for(j = 0; j != D[243].length; ++j) if(D[243][j].charCodeAt(0) !== 0xFFFD) { e[D[243][j]] = 62208 + j; d[62208 + j] = D[243][j];} +D[244] = "����������������������������������������������������������������鬇鬉鬊鬋鬌鬍鬎鬐鬑鬒鬔鬕鬖鬗鬘鬙鬚鬛鬜鬝鬞鬠鬡鬢鬤鬥鬦鬧鬨鬩鬪鬫鬬鬭鬮鬰鬱鬳鬴鬵鬶鬷鬸鬹鬺鬽鬾鬿魀魆魊魋魌魎魐魒魓魕魖魗魘魙魚�魛魜魝魞魟魠魡魢魣魤魥魦魧魨魩魪魫魬魭魮魯魰魱魲魳魴魵魶魷魸魹魺魻簟簪簦簸籁籀臾舁舂舄臬衄舡舢舣舭舯舨舫舸舻舳舴舾艄艉艋艏艚艟艨衾袅袈裘裟襞羝羟羧羯羰羲籼敉粑粝粜粞粢粲粼粽糁糇糌糍糈糅糗糨艮暨羿翎翕翥翡翦翩翮翳糸絷綦綮繇纛麸麴赳趄趔趑趱赧赭豇豉酊酐酎酏酤�".split(""); +for(j = 0; j != D[244].length; ++j) if(D[244][j].charCodeAt(0) !== 0xFFFD) { e[D[244][j]] = 62464 + j; d[62464 + j] = D[244][j];} +D[245] = "����������������������������������������������������������������魼魽魾魿鮀鮁鮂鮃鮄鮅鮆鮇鮈鮉鮊鮋鮌鮍鮎鮏鮐鮑鮒鮓鮔鮕鮖鮗鮘鮙鮚鮛鮜鮝鮞鮟鮠鮡鮢鮣鮤鮥鮦鮧鮨鮩鮪鮫鮬鮭鮮鮯鮰鮱鮲鮳鮴鮵鮶鮷鮸鮹鮺�鮻鮼鮽鮾鮿鯀鯁鯂鯃鯄鯅鯆鯇鯈鯉鯊鯋鯌鯍鯎鯏鯐鯑鯒鯓鯔鯕鯖鯗鯘鯙鯚鯛酢酡酰酩酯酽酾酲酴酹醌醅醐醍醑醢醣醪醭醮醯醵醴醺豕鹾趸跫踅蹙蹩趵趿趼趺跄跖跗跚跞跎跏跛跆跬跷跸跣跹跻跤踉跽踔踝踟踬踮踣踯踺蹀踹踵踽踱蹉蹁蹂蹑蹒蹊蹰蹶蹼蹯蹴躅躏躔躐躜躞豸貂貊貅貘貔斛觖觞觚觜�".split(""); +for(j = 0; j != D[245].length; ++j) if(D[245][j].charCodeAt(0) !== 0xFFFD) { e[D[245][j]] = 62720 + j; d[62720 + j] = D[245][j];} +D[246] = "����������������������������������������������������������������鯜鯝鯞鯟鯠鯡鯢鯣鯤鯥鯦鯧鯨鯩鯪鯫鯬鯭鯮鯯鯰鯱鯲鯳鯴鯵鯶鯷鯸鯹鯺鯻鯼鯽鯾鯿鰀鰁鰂鰃鰄鰅鰆鰇鰈鰉鰊鰋鰌鰍鰎鰏鰐鰑鰒鰓鰔鰕鰖鰗鰘鰙鰚�鰛鰜鰝鰞鰟鰠鰡鰢鰣鰤鰥鰦鰧鰨鰩鰪鰫鰬鰭鰮鰯鰰鰱鰲鰳鰴鰵鰶鰷鰸鰹鰺鰻觥觫觯訾謦靓雩雳雯霆霁霈霏霎霪霭霰霾龀龃龅龆龇龈龉龊龌黾鼋鼍隹隼隽雎雒瞿雠銎銮鋈錾鍪鏊鎏鐾鑫鱿鲂鲅鲆鲇鲈稣鲋鲎鲐鲑鲒鲔鲕鲚鲛鲞鲟鲠鲡鲢鲣鲥鲦鲧鲨鲩鲫鲭鲮鲰鲱鲲鲳鲴鲵鲶鲷鲺鲻鲼鲽鳄鳅鳆鳇鳊鳋�".split(""); +for(j = 0; j != D[246].length; ++j) if(D[246][j].charCodeAt(0) !== 0xFFFD) { e[D[246][j]] = 62976 + j; d[62976 + j] = D[246][j];} +D[247] = "����������������������������������������������������������������鰼鰽鰾鰿鱀鱁鱂鱃鱄鱅鱆鱇鱈鱉鱊鱋鱌鱍鱎鱏鱐鱑鱒鱓鱔鱕鱖鱗鱘鱙鱚鱛鱜鱝鱞鱟鱠鱡鱢鱣鱤鱥鱦鱧鱨鱩鱪鱫鱬鱭鱮鱯鱰鱱鱲鱳鱴鱵鱶鱷鱸鱹鱺�鱻鱽鱾鲀鲃鲄鲉鲊鲌鲏鲓鲖鲗鲘鲙鲝鲪鲬鲯鲹鲾鲿鳀鳁鳂鳈鳉鳑鳒鳚鳛鳠鳡鳌鳍鳎鳏鳐鳓鳔鳕鳗鳘鳙鳜鳝鳟鳢靼鞅鞑鞒鞔鞯鞫鞣鞲鞴骱骰骷鹘骶骺骼髁髀髅髂髋髌髑魅魃魇魉魈魍魑飨餍餮饕饔髟髡髦髯髫髻髭髹鬈鬏鬓鬟鬣麽麾縻麂麇麈麋麒鏖麝麟黛黜黝黠黟黢黩黧黥黪黯鼢鼬鼯鼹鼷鼽鼾齄�".split(""); +for(j = 0; j != D[247].length; ++j) if(D[247][j].charCodeAt(0) !== 0xFFFD) { e[D[247][j]] = 63232 + j; d[63232 + j] = D[247][j];} +D[248] = "����������������������������������������������������������������鳣鳤鳥鳦鳧鳨鳩鳪鳫鳬鳭鳮鳯鳰鳱鳲鳳鳴鳵鳶鳷鳸鳹鳺鳻鳼鳽鳾鳿鴀鴁鴂鴃鴄鴅鴆鴇鴈鴉鴊鴋鴌鴍鴎鴏鴐鴑鴒鴓鴔鴕鴖鴗鴘鴙鴚鴛鴜鴝鴞鴟鴠鴡�鴢鴣鴤鴥鴦鴧鴨鴩鴪鴫鴬鴭鴮鴯鴰鴱鴲鴳鴴鴵鴶鴷鴸鴹鴺鴻鴼鴽鴾鴿鵀鵁鵂�����������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[248].length; ++j) if(D[248][j].charCodeAt(0) !== 0xFFFD) { e[D[248][j]] = 63488 + j; d[63488 + j] = D[248][j];} +D[249] = "����������������������������������������������������������������鵃鵄鵅鵆鵇鵈鵉鵊鵋鵌鵍鵎鵏鵐鵑鵒鵓鵔鵕鵖鵗鵘鵙鵚鵛鵜鵝鵞鵟鵠鵡鵢鵣鵤鵥鵦鵧鵨鵩鵪鵫鵬鵭鵮鵯鵰鵱鵲鵳鵴鵵鵶鵷鵸鵹鵺鵻鵼鵽鵾鵿鶀鶁�鶂鶃鶄鶅鶆鶇鶈鶉鶊鶋鶌鶍鶎鶏鶐鶑鶒鶓鶔鶕鶖鶗鶘鶙鶚鶛鶜鶝鶞鶟鶠鶡鶢�����������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[249].length; ++j) if(D[249][j].charCodeAt(0) !== 0xFFFD) { e[D[249][j]] = 63744 + j; d[63744 + j] = D[249][j];} +D[250] = "����������������������������������������������������������������鶣鶤鶥鶦鶧鶨鶩鶪鶫鶬鶭鶮鶯鶰鶱鶲鶳鶴鶵鶶鶷鶸鶹鶺鶻鶼鶽鶾鶿鷀鷁鷂鷃鷄鷅鷆鷇鷈鷉鷊鷋鷌鷍鷎鷏鷐鷑鷒鷓鷔鷕鷖鷗鷘鷙鷚鷛鷜鷝鷞鷟鷠鷡�鷢鷣鷤鷥鷦鷧鷨鷩鷪鷫鷬鷭鷮鷯鷰鷱鷲鷳鷴鷵鷶鷷鷸鷹鷺鷻鷼鷽鷾鷿鸀鸁鸂�����������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[250].length; ++j) if(D[250][j].charCodeAt(0) !== 0xFFFD) { e[D[250][j]] = 64000 + j; d[64000 + j] = D[250][j];} +D[251] = "����������������������������������������������������������������鸃鸄鸅鸆鸇鸈鸉鸊鸋鸌鸍鸎鸏鸐鸑鸒鸓鸔鸕鸖鸗鸘鸙鸚鸛鸜鸝鸞鸤鸧鸮鸰鸴鸻鸼鹀鹍鹐鹒鹓鹔鹖鹙鹝鹟鹠鹡鹢鹥鹮鹯鹲鹴鹵鹶鹷鹸鹹鹺鹻鹼鹽麀�麁麃麄麅麆麉麊麌麍麎麏麐麑麔麕麖麗麘麙麚麛麜麞麠麡麢麣麤麥麧麨麩麪�����������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[251].length; ++j) if(D[251][j].charCodeAt(0) !== 0xFFFD) { e[D[251][j]] = 64256 + j; d[64256 + j] = D[251][j];} +D[252] = "����������������������������������������������������������������麫麬麭麮麯麰麱麲麳麵麶麷麹麺麼麿黀黁黂黃黅黆黇黈黊黋黌黐黒黓黕黖黗黙黚點黡黣黤黦黨黫黬黭黮黰黱黲黳黴黵黶黷黸黺黽黿鼀鼁鼂鼃鼄鼅�鼆鼇鼈鼉鼊鼌鼏鼑鼒鼔鼕鼖鼘鼚鼛鼜鼝鼞鼟鼡鼣鼤鼥鼦鼧鼨鼩鼪鼫鼭鼮鼰鼱�����������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[252].length; ++j) if(D[252][j].charCodeAt(0) !== 0xFFFD) { e[D[252][j]] = 64512 + j; d[64512 + j] = D[252][j];} +D[253] = "����������������������������������������������������������������鼲鼳鼴鼵鼶鼸鼺鼼鼿齀齁齂齃齅齆齇齈齉齊齋齌齍齎齏齒齓齔齕齖齗齘齙齚齛齜齝齞齟齠齡齢齣齤齥齦齧齨齩齪齫齬齭齮齯齰齱齲齳齴齵齶齷齸�齹齺齻齼齽齾龁龂龍龎龏龐龑龒龓龔龕龖龗龘龜龝龞龡龢龣龤龥郎凉秊裏隣�����������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[253].length; ++j) if(D[253][j].charCodeAt(0) !== 0xFFFD) { e[D[253][j]] = 64768 + j; d[64768 + j] = D[253][j];} +D[254] = "����������������������������������������������������������������兀嗀﨎﨏﨑﨓﨔礼﨟蘒﨡﨣﨤﨧﨨﨩��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[254].length; ++j) if(D[254][j].charCodeAt(0) !== 0xFFFD) { e[D[254][j]] = 65024 + j; d[65024 + j] = D[254][j];} +return {"enc": e, "dec": d }; })(); +cptable[949] = (function(){ var d = [], e = {}, D = [], j; +D[0] = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~��������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];} +D[129] = "�����������������������������������������������������������������갂갃갅갆갋갌갍갎갏갘갞갟갡갢갣갥갦갧갨갩갪갫갮갲갳갴������갵갶갷갺갻갽갾갿걁걂걃걄걅걆걇걈걉걊걌걎걏걐걑걒걓걕������걖걗걙걚걛걝걞걟걠걡걢걣걤걥걦걧걨걩걪걫걬걭걮걯걲걳걵걶걹걻걼걽걾걿겂겇겈겍겎겏겑겒겓겕겖겗겘겙겚겛겞겢겣겤겥겦겧겫겭겮겱겲겳겴겵겶겷겺겾겿곀곂곃곅곆곇곉곊곋곍곎곏곐곑곒곓곔곖곘곙곚곛곜곝곞곟곢곣곥곦곩곫곭곮곲곴곷곸곹곺곻곾곿괁괂괃괅괇괈괉괊괋괎괐괒괓�".split(""); +for(j = 0; j != D[129].length; ++j) if(D[129][j].charCodeAt(0) !== 0xFFFD) { e[D[129][j]] = 33024 + j; d[33024 + j] = D[129][j];} +D[130] = "�����������������������������������������������������������������괔괕괖괗괙괚괛괝괞괟괡괢괣괤괥괦괧괨괪괫괮괯괰괱괲괳������괶괷괹괺괻괽괾괿굀굁굂굃굆굈굊굋굌굍굎굏굑굒굓굕굖굗������굙굚굛굜굝굞굟굠굢굤굥굦굧굨굩굪굫굮굯굱굲굷굸굹굺굾궀궃궄궅궆궇궊궋궍궎궏궑궒궓궔궕궖궗궘궙궚궛궞궟궠궡궢궣궥궦궧궨궩궪궫궬궭궮궯궰궱궲궳궴궵궶궸궹궺궻궼궽궾궿귂귃귅귆귇귉귊귋귌귍귎귏귒귔귕귖귗귘귙귚귛귝귞귟귡귢귣귥귦귧귨귩귪귫귬귭귮귯귰귱귲귳귴귵귶귷�".split(""); +for(j = 0; j != D[130].length; ++j) if(D[130][j].charCodeAt(0) !== 0xFFFD) { e[D[130][j]] = 33280 + j; d[33280 + j] = D[130][j];} +D[131] = "�����������������������������������������������������������������귺귻귽귾긂긃긄긅긆긇긊긌긎긏긐긑긒긓긕긖긗긘긙긚긛긜������긝긞긟긠긡긢긣긤긥긦긧긨긩긪긫긬긭긮긯긲긳긵긶긹긻긼������긽긾긿깂깄깇깈깉깋깏깑깒깓깕깗깘깙깚깛깞깢깣깤깦깧깪깫깭깮깯깱깲깳깴깵깶깷깺깾깿꺀꺁꺂꺃꺆꺇꺈꺉꺊꺋꺍꺎꺏꺐꺑꺒꺓꺔꺕꺖꺗꺘꺙꺚꺛꺜꺝꺞꺟꺠꺡꺢꺣꺤꺥꺦꺧꺨꺩꺪꺫꺬꺭꺮꺯꺰꺱꺲꺳꺴꺵꺶꺷꺸꺹꺺꺻꺿껁껂껃껅껆껇껈껉껊껋껎껒껓껔껕껖껗껚껛껝껞껟껠껡껢껣껤껥�".split(""); +for(j = 0; j != D[131].length; ++j) if(D[131][j].charCodeAt(0) !== 0xFFFD) { e[D[131][j]] = 33536 + j; d[33536 + j] = D[131][j];} +D[132] = "�����������������������������������������������������������������껦껧껩껪껬껮껯껰껱껲껳껵껶껷껹껺껻껽껾껿꼀꼁꼂꼃꼄꼅������꼆꼉꼊꼋꼌꼎꼏꼑꼒꼓꼔꼕꼖꼗꼘꼙꼚꼛꼜꼝꼞꼟꼠꼡꼢꼣������꼤꼥꼦꼧꼨꼩꼪꼫꼮꼯꼱꼳꼵꼶꼷꼸꼹꼺꼻꼾꽀꽄꽅꽆꽇꽊꽋꽌꽍꽎꽏꽑꽒꽓꽔꽕꽖꽗꽘꽙꽚꽛꽞꽟꽠꽡꽢꽣꽦꽧꽨꽩꽪꽫꽬꽭꽮꽯꽰꽱꽲꽳꽴꽵꽶꽷꽸꽺꽻꽼꽽꽾꽿꾁꾂꾃꾅꾆꾇꾉꾊꾋꾌꾍꾎꾏꾒꾓꾔꾖꾗꾘꾙꾚꾛꾝꾞꾟꾠꾡꾢꾣꾤꾥꾦꾧꾨꾩꾪꾫꾬꾭꾮꾯꾰꾱꾲꾳꾴꾵꾶꾷꾺꾻꾽꾾�".split(""); +for(j = 0; j != D[132].length; ++j) if(D[132][j].charCodeAt(0) !== 0xFFFD) { e[D[132][j]] = 33792 + j; d[33792 + j] = D[132][j];} +D[133] = "�����������������������������������������������������������������꾿꿁꿂꿃꿄꿅꿆꿊꿌꿏꿐꿑꿒꿓꿕꿖꿗꿘꿙꿚꿛꿝꿞꿟꿠꿡������꿢꿣꿤꿥꿦꿧꿪꿫꿬꿭꿮꿯꿲꿳꿵꿶꿷꿹꿺꿻꿼꿽꿾꿿뀂뀃������뀅뀆뀇뀈뀉뀊뀋뀍뀎뀏뀑뀒뀓뀕뀖뀗뀘뀙뀚뀛뀞뀟뀠뀡뀢뀣뀤뀥뀦뀧뀩뀪뀫뀬뀭뀮뀯뀰뀱뀲뀳뀴뀵뀶뀷뀸뀹뀺뀻뀼뀽뀾뀿끀끁끂끃끆끇끉끋끍끏끐끑끒끖끘끚끛끜끞끟끠끡끢끣끤끥끦끧끨끩끪끫끬끭끮끯끰끱끲끳끴끵끶끷끸끹끺끻끾끿낁낂낃낅낆낇낈낉낊낋낎낐낒낓낔낕낖낗낛낝낞낣낤�".split(""); +for(j = 0; j != D[133].length; ++j) if(D[133][j].charCodeAt(0) !== 0xFFFD) { e[D[133][j]] = 34048 + j; d[34048 + j] = D[133][j];} +D[134] = "�����������������������������������������������������������������낥낦낧낪낰낲낶낷낹낺낻낽낾낿냀냁냂냃냆냊냋냌냍냎냏냒������냓냕냖냗냙냚냛냜냝냞냟냡냢냣냤냦냧냨냩냪냫냬냭냮냯냰������냱냲냳냴냵냶냷냸냹냺냻냼냽냾냿넀넁넂넃넄넅넆넇넊넍넎넏넑넔넕넖넗넚넞넟넠넡넢넦넧넩넪넫넭넮넯넰넱넲넳넶넺넻넼넽넾넿녂녃녅녆녇녉녊녋녌녍녎녏녒녓녖녗녙녚녛녝녞녟녡녢녣녤녥녦녧녨녩녪녫녬녭녮녯녰녱녲녳녴녵녶녷녺녻녽녾녿놁놃놄놅놆놇놊놌놎놏놐놑놕놖놗놙놚놛놝�".split(""); +for(j = 0; j != D[134].length; ++j) if(D[134][j].charCodeAt(0) !== 0xFFFD) { e[D[134][j]] = 34304 + j; d[34304 + j] = D[134][j];} +D[135] = "�����������������������������������������������������������������놞놟놠놡놢놣놤놥놦놧놩놪놫놬놭놮놯놰놱놲놳놴놵놶놷놸������놹놺놻놼놽놾놿뇀뇁뇂뇃뇄뇅뇆뇇뇈뇉뇊뇋뇍뇎뇏뇑뇒뇓뇕������뇖뇗뇘뇙뇚뇛뇞뇠뇡뇢뇣뇤뇥뇦뇧뇪뇫뇭뇮뇯뇱뇲뇳뇴뇵뇶뇷뇸뇺뇼뇾뇿눀눁눂눃눆눇눉눊눍눎눏눐눑눒눓눖눘눚눛눜눝눞눟눡눢눣눤눥눦눧눨눩눪눫눬눭눮눯눰눱눲눳눵눶눷눸눹눺눻눽눾눿뉀뉁뉂뉃뉄뉅뉆뉇뉈뉉뉊뉋뉌뉍뉎뉏뉐뉑뉒뉓뉔뉕뉖뉗뉙뉚뉛뉝뉞뉟뉡뉢뉣뉤뉥뉦뉧뉪뉫뉬뉭뉮�".split(""); +for(j = 0; j != D[135].length; ++j) if(D[135][j].charCodeAt(0) !== 0xFFFD) { e[D[135][j]] = 34560 + j; d[34560 + j] = D[135][j];} +D[136] = "�����������������������������������������������������������������뉯뉰뉱뉲뉳뉶뉷뉸뉹뉺뉻뉽뉾뉿늀늁늂늃늆늇늈늊늋늌늍늎������늏늒늓늕늖늗늛늜늝늞늟늢늤늧늨늩늫늭늮늯늱늲늳늵늶늷������늸늹늺늻늼늽늾늿닀닁닂닃닄닅닆닇닊닋닍닎닏닑닓닔닕닖닗닚닜닞닟닠닡닣닧닩닪닰닱닲닶닼닽닾댂댃댅댆댇댉댊댋댌댍댎댏댒댖댗댘댙댚댛댝댞댟댠댡댢댣댤댥댦댧댨댩댪댫댬댭댮댯댰댱댲댳댴댵댶댷댸댹댺댻댼댽댾댿덀덁덂덃덄덅덆덇덈덉덊덋덌덍덎덏덐덑덒덓덗덙덚덝덠덡덢덣�".split(""); +for(j = 0; j != D[136].length; ++j) if(D[136][j].charCodeAt(0) !== 0xFFFD) { e[D[136][j]] = 34816 + j; d[34816 + j] = D[136][j];} +D[137] = "�����������������������������������������������������������������덦덨덪덬덭덯덲덳덵덶덷덹덺덻덼덽덾덿뎂뎆뎇뎈뎉뎊뎋뎍������뎎뎏뎑뎒뎓뎕뎖뎗뎘뎙뎚뎛뎜뎝뎞뎟뎢뎣뎤뎥뎦뎧뎩뎪뎫뎭������뎮뎯뎰뎱뎲뎳뎴뎵뎶뎷뎸뎹뎺뎻뎼뎽뎾뎿돀돁돂돃돆돇돉돊돍돏돑돒돓돖돘돚돜돞돟돡돢돣돥돦돧돩돪돫돬돭돮돯돰돱돲돳돴돵돶돷돸돹돺돻돽돾돿됀됁됂됃됄됅됆됇됈됉됊됋됌됍됎됏됑됒됓됔됕됖됗됙됚됛됝됞됟됡됢됣됤됥됦됧됪됬됭됮됯됰됱됲됳됵됶됷됸됹됺됻됼됽됾됿둀둁둂둃둄�".split(""); +for(j = 0; j != D[137].length; ++j) if(D[137][j].charCodeAt(0) !== 0xFFFD) { e[D[137][j]] = 35072 + j; d[35072 + j] = D[137][j];} +D[138] = "�����������������������������������������������������������������둅둆둇둈둉둊둋둌둍둎둏둒둓둕둖둗둙둚둛둜둝둞둟둢둤둦������둧둨둩둪둫둭둮둯둰둱둲둳둴둵둶둷둸둹둺둻둼둽둾둿뒁뒂������뒃뒄뒅뒆뒇뒉뒊뒋뒌뒍뒎뒏뒐뒑뒒뒓뒔뒕뒖뒗뒘뒙뒚뒛뒜뒞뒟뒠뒡뒢뒣뒥뒦뒧뒩뒪뒫뒭뒮뒯뒰뒱뒲뒳뒴뒶뒸뒺뒻뒼뒽뒾뒿듁듂듃듅듆듇듉듊듋듌듍듎듏듑듒듓듔듖듗듘듙듚듛듞듟듡듢듥듧듨듩듪듫듮듰듲듳듴듵듶듷듹듺듻듼듽듾듿딀딁딂딃딄딅딆딇딈딉딊딋딌딍딎딏딐딑딒딓딖딗딙딚딝�".split(""); +for(j = 0; j != D[138].length; ++j) if(D[138][j].charCodeAt(0) !== 0xFFFD) { e[D[138][j]] = 35328 + j; d[35328 + j] = D[138][j];} +D[139] = "�����������������������������������������������������������������딞딟딠딡딢딣딦딫딬딭딮딯딲딳딵딶딷딹딺딻딼딽딾딿땂땆������땇땈땉땊땎땏땑땒땓땕땖땗땘땙땚땛땞땢땣땤땥땦땧땨땩땪������땫땬땭땮땯땰땱땲땳땴땵땶땷땸땹땺땻땼땽땾땿떀떁떂떃떄떅떆떇떈떉떊떋떌떍떎떏떐떑떒떓떔떕떖떗떘떙떚떛떜떝떞떟떢떣떥떦떧떩떬떭떮떯떲떶떷떸떹떺떾떿뗁뗂뗃뗅뗆뗇뗈뗉뗊뗋뗎뗒뗓뗔뗕뗖뗗뗙뗚뗛뗜뗝뗞뗟뗠뗡뗢뗣뗤뗥뗦뗧뗨뗩뗪뗫뗭뗮뗯뗰뗱뗲뗳뗴뗵뗶뗷뗸뗹뗺뗻뗼뗽뗾뗿�".split(""); +for(j = 0; j != D[139].length; ++j) if(D[139][j].charCodeAt(0) !== 0xFFFD) { e[D[139][j]] = 35584 + j; d[35584 + j] = D[139][j];} +D[140] = "�����������������������������������������������������������������똀똁똂똃똄똅똆똇똈똉똊똋똌똍똎똏똒똓똕똖똗똙똚똛똜똝������똞똟똠똡똢똣똤똦똧똨똩똪똫똭똮똯똰똱똲똳똵똶똷똸똹똺������똻똼똽똾똿뙀뙁뙂뙃뙄뙅뙆뙇뙉뙊뙋뙌뙍뙎뙏뙐뙑뙒뙓뙔뙕뙖뙗뙘뙙뙚뙛뙜뙝뙞뙟뙠뙡뙢뙣뙥뙦뙧뙩뙪뙫뙬뙭뙮뙯뙰뙱뙲뙳뙴뙵뙶뙷뙸뙹뙺뙻뙼뙽뙾뙿뚀뚁뚂뚃뚄뚅뚆뚇뚈뚉뚊뚋뚌뚍뚎뚏뚐뚑뚒뚓뚔뚕뚖뚗뚘뚙뚚뚛뚞뚟뚡뚢뚣뚥뚦뚧뚨뚩뚪뚭뚮뚯뚰뚲뚳뚴뚵뚶뚷뚸뚹뚺뚻뚼뚽뚾뚿뛀뛁뛂�".split(""); +for(j = 0; j != D[140].length; ++j) if(D[140][j].charCodeAt(0) !== 0xFFFD) { e[D[140][j]] = 35840 + j; d[35840 + j] = D[140][j];} +D[141] = "�����������������������������������������������������������������뛃뛄뛅뛆뛇뛈뛉뛊뛋뛌뛍뛎뛏뛐뛑뛒뛓뛕뛖뛗뛘뛙뛚뛛뛜뛝������뛞뛟뛠뛡뛢뛣뛤뛥뛦뛧뛨뛩뛪뛫뛬뛭뛮뛯뛱뛲뛳뛵뛶뛷뛹뛺������뛻뛼뛽뛾뛿뜂뜃뜄뜆뜇뜈뜉뜊뜋뜌뜍뜎뜏뜐뜑뜒뜓뜔뜕뜖뜗뜘뜙뜚뜛뜜뜝뜞뜟뜠뜡뜢뜣뜤뜥뜦뜧뜪뜫뜭뜮뜱뜲뜳뜴뜵뜶뜷뜺뜼뜽뜾뜿띀띁띂띃띅띆띇띉띊띋띍띎띏띐띑띒띓띖띗띘띙띚띛띜띝띞띟띡띢띣띥띦띧띩띪띫띬띭띮띯띲띴띶띷띸띹띺띻띾띿랁랂랃랅랆랇랈랉랊랋랎랓랔랕랚랛랝랞�".split(""); +for(j = 0; j != D[141].length; ++j) if(D[141][j].charCodeAt(0) !== 0xFFFD) { e[D[141][j]] = 36096 + j; d[36096 + j] = D[141][j];} +D[142] = "�����������������������������������������������������������������랟랡랢랣랤랥랦랧랪랮랯랰랱랲랳랶랷랹랺랻랼랽랾랿럀럁������럂럃럄럅럆럈럊럋럌럍럎럏럐럑럒럓럔럕럖럗럘럙럚럛럜럝������럞럟럠럡럢럣럤럥럦럧럨럩럪럫럮럯럱럲럳럵럶럷럸럹럺럻럾렂렃렄렅렆렊렋렍렎렏렑렒렓렔렕렖렗렚렜렞렟렠렡렢렣렦렧렩렪렫렭렮렯렰렱렲렳렶렺렻렼렽렾렿롁롂롃롅롆롇롈롉롊롋롌롍롎롏롐롒롔롕롖롗롘롙롚롛롞롟롡롢롣롥롦롧롨롩롪롫롮롰롲롳롴롵롶롷롹롺롻롽롾롿뢀뢁뢂뢃뢄�".split(""); +for(j = 0; j != D[142].length; ++j) if(D[142][j].charCodeAt(0) !== 0xFFFD) { e[D[142][j]] = 36352 + j; d[36352 + j] = D[142][j];} +D[143] = "�����������������������������������������������������������������뢅뢆뢇뢈뢉뢊뢋뢌뢎뢏뢐뢑뢒뢓뢔뢕뢖뢗뢘뢙뢚뢛뢜뢝뢞뢟������뢠뢡뢢뢣뢤뢥뢦뢧뢩뢪뢫뢬뢭뢮뢯뢱뢲뢳뢵뢶뢷뢹뢺뢻뢼뢽������뢾뢿룂룄룆룇룈룉룊룋룍룎룏룑룒룓룕룖룗룘룙룚룛룜룞룠룢룣룤룥룦룧룪룫룭룮룯룱룲룳룴룵룶룷룺룼룾룿뤀뤁뤂뤃뤅뤆뤇뤈뤉뤊뤋뤌뤍뤎뤏뤐뤑뤒뤓뤔뤕뤖뤗뤙뤚뤛뤜뤝뤞뤟뤡뤢뤣뤤뤥뤦뤧뤨뤩뤪뤫뤬뤭뤮뤯뤰뤱뤲뤳뤴뤵뤶뤷뤸뤹뤺뤻뤾뤿륁륂륃륅륆륇륈륉륊륋륍륎륐륒륓륔륕륖륗�".split(""); +for(j = 0; j != D[143].length; ++j) if(D[143][j].charCodeAt(0) !== 0xFFFD) { e[D[143][j]] = 36608 + j; d[36608 + j] = D[143][j];} +D[144] = "�����������������������������������������������������������������륚륛륝륞륟륡륢륣륤륥륦륧륪륬륮륯륰륱륲륳륶륷륹륺륻륽������륾륿릀릁릂릃릆릈릋릌릏릐릑릒릓릔릕릖릗릘릙릚릛릜릝릞������릟릠릡릢릣릤릥릦릧릨릩릪릫릮릯릱릲릳릵릶릷릸릹릺릻릾맀맂맃맄맅맆맇맊맋맍맓맔맕맖맗맚맜맟맠맢맦맧맩맪맫맭맮맯맰맱맲맳맶맻맼맽맾맿먂먃먄먅먆먇먉먊먋먌먍먎먏먐먑먒먓먔먖먗먘먙먚먛먜먝먞먟먠먡먢먣먤먥먦먧먨먩먪먫먬먭먮먯먰먱먲먳먴먵먶먷먺먻먽먾먿멁멃멄멅멆�".split(""); +for(j = 0; j != D[144].length; ++j) if(D[144][j].charCodeAt(0) !== 0xFFFD) { e[D[144][j]] = 36864 + j; d[36864 + j] = D[144][j];} +D[145] = "�����������������������������������������������������������������멇멊멌멏멐멑멒멖멗멙멚멛멝멞멟멠멡멢멣멦멪멫멬멭멮멯������멲멳멵멶멷멹멺멻멼멽멾멿몀몁몂몆몈몉몊몋몍몎몏몐몑몒������몓몔몕몖몗몘몙몚몛몜몝몞몟몠몡몢몣몤몥몦몧몪몭몮몯몱몳몴몵몶몷몺몼몾몿뫀뫁뫂뫃뫅뫆뫇뫉뫊뫋뫌뫍뫎뫏뫐뫑뫒뫓뫔뫕뫖뫗뫚뫛뫜뫝뫞뫟뫠뫡뫢뫣뫤뫥뫦뫧뫨뫩뫪뫫뫬뫭뫮뫯뫰뫱뫲뫳뫴뫵뫶뫷뫸뫹뫺뫻뫽뫾뫿묁묂묃묅묆묇묈묉묊묋묌묎묐묒묓묔묕묖묗묙묚묛묝묞묟묡묢묣묤묥묦묧�".split(""); +for(j = 0; j != D[145].length; ++j) if(D[145][j].charCodeAt(0) !== 0xFFFD) { e[D[145][j]] = 37120 + j; d[37120 + j] = D[145][j];} +D[146] = "�����������������������������������������������������������������묨묪묬묭묮묯묰묱묲묳묷묹묺묿뭀뭁뭂뭃뭆뭈뭊뭋뭌뭎뭑뭒������뭓뭕뭖뭗뭙뭚뭛뭜뭝뭞뭟뭠뭢뭤뭥뭦뭧뭨뭩뭪뭫뭭뭮뭯뭰뭱������뭲뭳뭴뭵뭶뭷뭸뭹뭺뭻뭼뭽뭾뭿뮀뮁뮂뮃뮄뮅뮆뮇뮉뮊뮋뮍뮎뮏뮑뮒뮓뮔뮕뮖뮗뮘뮙뮚뮛뮜뮝뮞뮟뮠뮡뮢뮣뮥뮦뮧뮩뮪뮫뮭뮮뮯뮰뮱뮲뮳뮵뮶뮸뮹뮺뮻뮼뮽뮾뮿믁믂믃믅믆믇믉믊믋믌믍믎믏믑믒믔믕믖믗믘믙믚믛믜믝믞믟믠믡믢믣믤믥믦믧믨믩믪믫믬믭믮믯믰믱믲믳믴믵믶믷믺믻믽믾밁�".split(""); +for(j = 0; j != D[146].length; ++j) if(D[146][j].charCodeAt(0) !== 0xFFFD) { e[D[146][j]] = 37376 + j; d[37376 + j] = D[146][j];} +D[147] = "�����������������������������������������������������������������밃밄밅밆밇밊밎밐밒밓밙밚밠밡밢밣밦밨밪밫밬밮밯밲밳밵������밶밷밹밺밻밼밽밾밿뱂뱆뱇뱈뱊뱋뱎뱏뱑뱒뱓뱔뱕뱖뱗뱘뱙������뱚뱛뱜뱞뱟뱠뱡뱢뱣뱤뱥뱦뱧뱨뱩뱪뱫뱬뱭뱮뱯뱰뱱뱲뱳뱴뱵뱶뱷뱸뱹뱺뱻뱼뱽뱾뱿벀벁벂벃벆벇벉벊벍벏벐벑벒벓벖벘벛벜벝벞벟벢벣벥벦벩벪벫벬벭벮벯벲벶벷벸벹벺벻벾벿볁볂볃볅볆볇볈볉볊볋볌볎볒볓볔볖볗볙볚볛볝볞볟볠볡볢볣볤볥볦볧볨볩볪볫볬볭볮볯볰볱볲볳볷볹볺볻볽�".split(""); +for(j = 0; j != D[147].length; ++j) if(D[147][j].charCodeAt(0) !== 0xFFFD) { e[D[147][j]] = 37632 + j; d[37632 + j] = D[147][j];} +D[148] = "�����������������������������������������������������������������볾볿봀봁봂봃봆봈봊봋봌봍봎봏봑봒봓봕봖봗봘봙봚봛봜봝������봞봟봠봡봢봣봥봦봧봨봩봪봫봭봮봯봰봱봲봳봴봵봶봷봸봹������봺봻봼봽봾봿뵁뵂뵃뵄뵅뵆뵇뵊뵋뵍뵎뵏뵑뵒뵓뵔뵕뵖뵗뵚뵛뵜뵝뵞뵟뵠뵡뵢뵣뵥뵦뵧뵩뵪뵫뵬뵭뵮뵯뵰뵱뵲뵳뵴뵵뵶뵷뵸뵹뵺뵻뵼뵽뵾뵿붂붃붅붆붋붌붍붎붏붒붔붖붗붘붛붝붞붟붠붡붢붣붥붦붧붨붩붪붫붬붭붮붯붱붲붳붴붵붶붷붹붺붻붼붽붾붿뷀뷁뷂뷃뷄뷅뷆뷇뷈뷉뷊뷋뷌뷍뷎뷏뷐뷑�".split(""); +for(j = 0; j != D[148].length; ++j) if(D[148][j].charCodeAt(0) !== 0xFFFD) { e[D[148][j]] = 37888 + j; d[37888 + j] = D[148][j];} +D[149] = "�����������������������������������������������������������������뷒뷓뷖뷗뷙뷚뷛뷝뷞뷟뷠뷡뷢뷣뷤뷥뷦뷧뷨뷪뷫뷬뷭뷮뷯뷱������뷲뷳뷵뷶뷷뷹뷺뷻뷼뷽뷾뷿븁븂븄븆븇븈븉븊븋븎븏븑븒븓������븕븖븗븘븙븚븛븞븠븡븢븣븤븥븦븧븨븩븪븫븬븭븮븯븰븱븲븳븴븵븶븷븸븹븺븻븼븽븾븿빀빁빂빃빆빇빉빊빋빍빏빐빑빒빓빖빘빜빝빞빟빢빣빥빦빧빩빫빬빭빮빯빲빶빷빸빹빺빾빿뺁뺂뺃뺅뺆뺇뺈뺉뺊뺋뺎뺒뺓뺔뺕뺖뺗뺚뺛뺜뺝뺞뺟뺠뺡뺢뺣뺤뺥뺦뺧뺩뺪뺫뺬뺭뺮뺯뺰뺱뺲뺳뺴뺵뺶뺷�".split(""); +for(j = 0; j != D[149].length; ++j) if(D[149][j].charCodeAt(0) !== 0xFFFD) { e[D[149][j]] = 38144 + j; d[38144 + j] = D[149][j];} +D[150] = "�����������������������������������������������������������������뺸뺹뺺뺻뺼뺽뺾뺿뻀뻁뻂뻃뻄뻅뻆뻇뻈뻉뻊뻋뻌뻍뻎뻏뻒뻓������뻕뻖뻙뻚뻛뻜뻝뻞뻟뻡뻢뻦뻧뻨뻩뻪뻫뻭뻮뻯뻰뻱뻲뻳뻴뻵������뻶뻷뻸뻹뻺뻻뻼뻽뻾뻿뼀뼂뼃뼄뼅뼆뼇뼊뼋뼌뼍뼎뼏뼐뼑뼒뼓뼔뼕뼖뼗뼚뼞뼟뼠뼡뼢뼣뼤뼥뼦뼧뼨뼩뼪뼫뼬뼭뼮뼯뼰뼱뼲뼳뼴뼵뼶뼷뼸뼹뼺뼻뼼뼽뼾뼿뽂뽃뽅뽆뽇뽉뽊뽋뽌뽍뽎뽏뽒뽓뽔뽖뽗뽘뽙뽚뽛뽜뽝뽞뽟뽠뽡뽢뽣뽤뽥뽦뽧뽨뽩뽪뽫뽬뽭뽮뽯뽰뽱뽲뽳뽴뽵뽶뽷뽸뽹뽺뽻뽼뽽뽾뽿뾀뾁뾂�".split(""); +for(j = 0; j != D[150].length; ++j) if(D[150][j].charCodeAt(0) !== 0xFFFD) { e[D[150][j]] = 38400 + j; d[38400 + j] = D[150][j];} +D[151] = "�����������������������������������������������������������������뾃뾄뾅뾆뾇뾈뾉뾊뾋뾌뾍뾎뾏뾐뾑뾒뾓뾕뾖뾗뾘뾙뾚뾛뾜뾝������뾞뾟뾠뾡뾢뾣뾤뾥뾦뾧뾨뾩뾪뾫뾬뾭뾮뾯뾱뾲뾳뾴뾵뾶뾷뾸������뾹뾺뾻뾼뾽뾾뾿뿀뿁뿂뿃뿄뿆뿇뿈뿉뿊뿋뿎뿏뿑뿒뿓뿕뿖뿗뿘뿙뿚뿛뿝뿞뿠뿢뿣뿤뿥뿦뿧뿨뿩뿪뿫뿬뿭뿮뿯뿰뿱뿲뿳뿴뿵뿶뿷뿸뿹뿺뿻뿼뿽뿾뿿쀀쀁쀂쀃쀄쀅쀆쀇쀈쀉쀊쀋쀌쀍쀎쀏쀐쀑쀒쀓쀔쀕쀖쀗쀘쀙쀚쀛쀜쀝쀞쀟쀠쀡쀢쀣쀤쀥쀦쀧쀨쀩쀪쀫쀬쀭쀮쀯쀰쀱쀲쀳쀴쀵쀶쀷쀸쀹쀺쀻쀽쀾쀿�".split(""); +for(j = 0; j != D[151].length; ++j) if(D[151][j].charCodeAt(0) !== 0xFFFD) { e[D[151][j]] = 38656 + j; d[38656 + j] = D[151][j];} +D[152] = "�����������������������������������������������������������������쁀쁁쁂쁃쁄쁅쁆쁇쁈쁉쁊쁋쁌쁍쁎쁏쁐쁒쁓쁔쁕쁖쁗쁙쁚쁛������쁝쁞쁟쁡쁢쁣쁤쁥쁦쁧쁪쁫쁬쁭쁮쁯쁰쁱쁲쁳쁴쁵쁶쁷쁸쁹������쁺쁻쁼쁽쁾쁿삀삁삂삃삄삅삆삇삈삉삊삋삌삍삎삏삒삓삕삖삗삙삚삛삜삝삞삟삢삤삦삧삨삩삪삫삮삱삲삷삸삹삺삻삾샂샃샄샆샇샊샋샍샎샏샑샒샓샔샕샖샗샚샞샟샠샡샢샣샦샧샩샪샫샭샮샯샰샱샲샳샶샸샺샻샼샽샾샿섁섂섃섅섆섇섉섊섋섌섍섎섏섑섒섓섔섖섗섘섙섚섛섡섢섥섨섩섪섫섮�".split(""); +for(j = 0; j != D[152].length; ++j) if(D[152][j].charCodeAt(0) !== 0xFFFD) { e[D[152][j]] = 38912 + j; d[38912 + j] = D[152][j];} +D[153] = "�����������������������������������������������������������������섲섳섴섵섷섺섻섽섾섿셁셂셃셄셅셆셇셊셎셏셐셑셒셓셖셗������셙셚셛셝셞셟셠셡셢셣셦셪셫셬셭셮셯셱셲셳셵셶셷셹셺셻������셼셽셾셿솀솁솂솃솄솆솇솈솉솊솋솏솑솒솓솕솗솘솙솚솛솞솠솢솣솤솦솧솪솫솭솮솯솱솲솳솴솵솶솷솸솹솺솻솼솾솿쇀쇁쇂쇃쇅쇆쇇쇉쇊쇋쇍쇎쇏쇐쇑쇒쇓쇕쇖쇙쇚쇛쇜쇝쇞쇟쇡쇢쇣쇥쇦쇧쇩쇪쇫쇬쇭쇮쇯쇲쇴쇵쇶쇷쇸쇹쇺쇻쇾쇿숁숂숃숅숆숇숈숉숊숋숎숐숒숓숔숕숖숗숚숛숝숞숡숢숣�".split(""); +for(j = 0; j != D[153].length; ++j) if(D[153][j].charCodeAt(0) !== 0xFFFD) { e[D[153][j]] = 39168 + j; d[39168 + j] = D[153][j];} +D[154] = "�����������������������������������������������������������������숤숥숦숧숪숬숮숰숳숵숶숷숸숹숺숻숼숽숾숿쉀쉁쉂쉃쉄쉅������쉆쉇쉉쉊쉋쉌쉍쉎쉏쉒쉓쉕쉖쉗쉙쉚쉛쉜쉝쉞쉟쉡쉢쉣쉤쉦������쉧쉨쉩쉪쉫쉮쉯쉱쉲쉳쉵쉶쉷쉸쉹쉺쉻쉾슀슂슃슄슅슆슇슊슋슌슍슎슏슑슒슓슔슕슖슗슙슚슜슞슟슠슡슢슣슦슧슩슪슫슮슯슰슱슲슳슶슸슺슻슼슽슾슿싀싁싂싃싄싅싆싇싈싉싊싋싌싍싎싏싐싑싒싓싔싕싖싗싘싙싚싛싞싟싡싢싥싦싧싨싩싪싮싰싲싳싴싵싷싺싽싾싿쌁쌂쌃쌄쌅쌆쌇쌊쌋쌎쌏�".split(""); +for(j = 0; j != D[154].length; ++j) if(D[154][j].charCodeAt(0) !== 0xFFFD) { e[D[154][j]] = 39424 + j; d[39424 + j] = D[154][j];} +D[155] = "�����������������������������������������������������������������쌐쌑쌒쌖쌗쌙쌚쌛쌝쌞쌟쌠쌡쌢쌣쌦쌧쌪쌫쌬쌭쌮쌯쌰쌱쌲������쌳쌴쌵쌶쌷쌸쌹쌺쌻쌼쌽쌾쌿썀썁썂썃썄썆썇썈썉썊썋썌썍������썎썏썐썑썒썓썔썕썖썗썘썙썚썛썜썝썞썟썠썡썢썣썤썥썦썧썪썫썭썮썯썱썳썴썵썶썷썺썻썾썿쎀쎁쎂쎃쎅쎆쎇쎉쎊쎋쎍쎎쎏쎐쎑쎒쎓쎔쎕쎖쎗쎘쎙쎚쎛쎜쎝쎞쎟쎠쎡쎢쎣쎤쎥쎦쎧쎨쎩쎪쎫쎬쎭쎮쎯쎰쎱쎲쎳쎴쎵쎶쎷쎸쎹쎺쎻쎼쎽쎾쎿쏁쏂쏃쏄쏅쏆쏇쏈쏉쏊쏋쏌쏍쏎쏏쏐쏑쏒쏓쏔쏕쏖쏗쏚�".split(""); +for(j = 0; j != D[155].length; ++j) if(D[155][j].charCodeAt(0) !== 0xFFFD) { e[D[155][j]] = 39680 + j; d[39680 + j] = D[155][j];} +D[156] = "�����������������������������������������������������������������쏛쏝쏞쏡쏣쏤쏥쏦쏧쏪쏫쏬쏮쏯쏰쏱쏲쏳쏶쏷쏹쏺쏻쏼쏽쏾������쏿쐀쐁쐂쐃쐄쐅쐆쐇쐉쐊쐋쐌쐍쐎쐏쐑쐒쐓쐔쐕쐖쐗쐘쐙쐚������쐛쐜쐝쐞쐟쐠쐡쐢쐣쐥쐦쐧쐨쐩쐪쐫쐭쐮쐯쐱쐲쐳쐵쐶쐷쐸쐹쐺쐻쐾쐿쑀쑁쑂쑃쑄쑅쑆쑇쑉쑊쑋쑌쑍쑎쑏쑐쑑쑒쑓쑔쑕쑖쑗쑘쑙쑚쑛쑜쑝쑞쑟쑠쑡쑢쑣쑦쑧쑩쑪쑫쑭쑮쑯쑰쑱쑲쑳쑶쑷쑸쑺쑻쑼쑽쑾쑿쒁쒂쒃쒄쒅쒆쒇쒈쒉쒊쒋쒌쒍쒎쒏쒐쒑쒒쒓쒕쒖쒗쒘쒙쒚쒛쒝쒞쒟쒠쒡쒢쒣쒤쒥쒦쒧쒨쒩�".split(""); +for(j = 0; j != D[156].length; ++j) if(D[156][j].charCodeAt(0) !== 0xFFFD) { e[D[156][j]] = 39936 + j; d[39936 + j] = D[156][j];} +D[157] = "�����������������������������������������������������������������쒪쒫쒬쒭쒮쒯쒰쒱쒲쒳쒴쒵쒶쒷쒹쒺쒻쒽쒾쒿쓀쓁쓂쓃쓄쓅������쓆쓇쓈쓉쓊쓋쓌쓍쓎쓏쓐쓑쓒쓓쓔쓕쓖쓗쓘쓙쓚쓛쓜쓝쓞쓟������쓠쓡쓢쓣쓤쓥쓦쓧쓨쓪쓫쓬쓭쓮쓯쓲쓳쓵쓶쓷쓹쓻쓼쓽쓾씂씃씄씅씆씇씈씉씊씋씍씎씏씑씒씓씕씖씗씘씙씚씛씝씞씟씠씡씢씣씤씥씦씧씪씫씭씮씯씱씲씳씴씵씶씷씺씼씾씿앀앁앂앃앆앇앋앏앐앑앒앖앚앛앜앟앢앣앥앦앧앩앪앫앬앭앮앯앲앶앷앸앹앺앻앾앿얁얂얃얅얆얈얉얊얋얎얐얒얓얔�".split(""); +for(j = 0; j != D[157].length; ++j) if(D[157][j].charCodeAt(0) !== 0xFFFD) { e[D[157][j]] = 40192 + j; d[40192 + j] = D[157][j];} +D[158] = "�����������������������������������������������������������������얖얙얚얛얝얞얟얡얢얣얤얥얦얧얨얪얫얬얭얮얯얰얱얲얳얶������얷얺얿엀엁엂엃엋엍엏엒엓엕엖엗엙엚엛엜엝엞엟엢엤엦엧������엨엩엪엫엯엱엲엳엵엸엹엺엻옂옃옄옉옊옋옍옎옏옑옒옓옔옕옖옗옚옝옞옟옠옡옢옣옦옧옩옪옫옯옱옲옶옸옺옼옽옾옿왂왃왅왆왇왉왊왋왌왍왎왏왒왖왗왘왙왚왛왞왟왡왢왣왤왥왦왧왨왩왪왫왭왮왰왲왳왴왵왶왷왺왻왽왾왿욁욂욃욄욅욆욇욊욌욎욏욐욑욒욓욖욗욙욚욛욝욞욟욠욡욢욣욦�".split(""); +for(j = 0; j != D[158].length; ++j) if(D[158][j].charCodeAt(0) !== 0xFFFD) { e[D[158][j]] = 40448 + j; d[40448 + j] = D[158][j];} +D[159] = "�����������������������������������������������������������������욨욪욫욬욭욮욯욲욳욵욶욷욻욼욽욾욿웂웄웆웇웈웉웊웋웎������웏웑웒웓웕웖웗웘웙웚웛웞웟웢웣웤웥웦웧웪웫웭웮웯웱웲������웳웴웵웶웷웺웻웼웾웿윀윁윂윃윆윇윉윊윋윍윎윏윐윑윒윓윖윘윚윛윜윝윞윟윢윣윥윦윧윩윪윫윬윭윮윯윲윴윶윸윹윺윻윾윿읁읂읃읅읆읇읈읉읋읎읐읙읚읛읝읞읟읡읢읣읤읥읦읧읩읪읬읭읮읯읰읱읲읳읶읷읹읺읻읿잀잁잂잆잋잌잍잏잒잓잕잙잛잜잝잞잟잢잧잨잩잪잫잮잯잱잲잳잵잶잷�".split(""); +for(j = 0; j != D[159].length; ++j) if(D[159][j].charCodeAt(0) !== 0xFFFD) { e[D[159][j]] = 40704 + j; d[40704 + j] = D[159][j];} +D[160] = "�����������������������������������������������������������������잸잹잺잻잾쟂쟃쟄쟅쟆쟇쟊쟋쟍쟏쟑쟒쟓쟔쟕쟖쟗쟙쟚쟛쟜������쟞쟟쟠쟡쟢쟣쟥쟦쟧쟩쟪쟫쟭쟮쟯쟰쟱쟲쟳쟴쟵쟶쟷쟸쟹쟺������쟻쟼쟽쟾쟿젂젃젅젆젇젉젋젌젍젎젏젒젔젗젘젙젚젛젞젟젡젢젣젥젦젧젨젩젪젫젮젰젲젳젴젵젶젷젹젺젻젽젾젿졁졂졃졄졅졆졇졊졋졎졏졐졑졒졓졕졖졗졘졙졚졛졜졝졞졟졠졡졢졣졤졥졦졧졨졩졪졫졬졭졮졯졲졳졵졶졷졹졻졼졽졾졿좂좄좈좉좊좎좏좐좑좒좓좕좖좗좘좙좚좛좜좞좠좢좣좤�".split(""); +for(j = 0; j != D[160].length; ++j) if(D[160][j].charCodeAt(0) !== 0xFFFD) { e[D[160][j]] = 40960 + j; d[40960 + j] = D[160][j];} +D[161] = "�����������������������������������������������������������������좥좦좧좩좪좫좬좭좮좯좰좱좲좳좴좵좶좷좸좹좺좻좾좿죀죁������죂죃죅죆죇죉죊죋죍죎죏죐죑죒죓죖죘죚죛죜죝죞죟죢죣죥������죦죧죨죩죪죫죬죭죮죯죰죱죲죳죴죶죷죸죹죺죻죾죿줁줂줃줇줈줉줊줋줎 、。·‥…¨〃­―∥\∼‘’“”〔〕〈〉《》「」『』【】±×÷≠≤≥∞∴°′″℃Å¢£¥♂♀∠⊥⌒∂∇≡≒§※☆★○●◎◇◆□■△▲▽▼→←↑↓↔〓≪≫√∽∝∵∫∬∈∋⊆⊇⊂⊃∪∩∧∨¬�".split(""); +for(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];} +D[162] = "�����������������������������������������������������������������줐줒줓줔줕줖줗줙줚줛줜줝줞줟줠줡줢줣줤줥줦줧줨줩줪줫������줭줮줯줰줱줲줳줵줶줷줸줹줺줻줼줽줾줿쥀쥁쥂쥃쥄쥅쥆쥇������쥈쥉쥊쥋쥌쥍쥎쥏쥒쥓쥕쥖쥗쥙쥚쥛쥜쥝쥞쥟쥢쥤쥥쥦쥧쥨쥩쥪쥫쥭쥮쥯⇒⇔∀∃´~ˇ˘˝˚˙¸˛¡¿ː∮∑∏¤℉‰◁◀▷▶♤♠♡♥♧♣⊙◈▣◐◑▒▤▥▨▧▦▩♨☏☎☜☞¶†‡↕↗↙↖↘♭♩♪♬㉿㈜№㏇™㏂㏘℡€®������������������������".split(""); +for(j = 0; j != D[162].length; ++j) if(D[162][j].charCodeAt(0) !== 0xFFFD) { e[D[162][j]] = 41472 + j; d[41472 + j] = D[162][j];} +D[163] = "�����������������������������������������������������������������쥱쥲쥳쥵쥶쥷쥸쥹쥺쥻쥽쥾쥿즀즁즂즃즄즅즆즇즊즋즍즎즏������즑즒즓즔즕즖즗즚즜즞즟즠즡즢즣즤즥즦즧즨즩즪즫즬즭즮������즯즰즱즲즳즴즵즶즷즸즹즺즻즼즽즾즿짂짃짅짆짉짋짌짍짎짏짒짔짗짘짛!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[₩]^_`abcdefghijklmnopqrstuvwxyz{|} ̄�".split(""); +for(j = 0; j != D[163].length; ++j) if(D[163][j].charCodeAt(0) !== 0xFFFD) { e[D[163][j]] = 41728 + j; d[41728 + j] = D[163][j];} +D[164] = "�����������������������������������������������������������������짞짟짡짣짥짦짨짩짪짫짮짲짳짴짵짶짷짺짻짽짾짿쨁쨂쨃쨄������쨅쨆쨇쨊쨎쨏쨐쨑쨒쨓쨕쨖쨗쨙쨚쨛쨜쨝쨞쨟쨠쨡쨢쨣쨤쨥������쨦쨧쨨쨪쨫쨬쨭쨮쨯쨰쨱쨲쨳쨴쨵쨶쨷쨸쨹쨺쨻쨼쨽쨾쨿쩀쩁쩂쩃쩄쩅쩆ㄱㄲㄳㄴㄵㄶㄷㄸㄹㄺㄻㄼㄽㄾㄿㅀㅁㅂㅃㅄㅅㅆㅇㅈㅉㅊㅋㅌㅍㅎㅏㅐㅑㅒㅓㅔㅕㅖㅗㅘㅙㅚㅛㅜㅝㅞㅟㅠㅡㅢㅣㅤㅥㅦㅧㅨㅩㅪㅫㅬㅭㅮㅯㅰㅱㅲㅳㅴㅵㅶㅷㅸㅹㅺㅻㅼㅽㅾㅿㆀㆁㆂㆃㆄㆅㆆㆇㆈㆉㆊㆋㆌㆍㆎ�".split(""); +for(j = 0; j != D[164].length; ++j) if(D[164][j].charCodeAt(0) !== 0xFFFD) { e[D[164][j]] = 41984 + j; d[41984 + j] = D[164][j];} +D[165] = "�����������������������������������������������������������������쩇쩈쩉쩊쩋쩎쩏쩑쩒쩓쩕쩖쩗쩘쩙쩚쩛쩞쩢쩣쩤쩥쩦쩧쩩쩪������쩫쩬쩭쩮쩯쩰쩱쩲쩳쩴쩵쩶쩷쩸쩹쩺쩻쩼쩾쩿쪀쪁쪂쪃쪅쪆������쪇쪈쪉쪊쪋쪌쪍쪎쪏쪐쪑쪒쪓쪔쪕쪖쪗쪙쪚쪛쪜쪝쪞쪟쪠쪡쪢쪣쪤쪥쪦쪧ⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹ�����ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩ�������ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ��������αβγδεζηθικλμνξοπρστυφχψω�������".split(""); +for(j = 0; j != D[165].length; ++j) if(D[165][j].charCodeAt(0) !== 0xFFFD) { e[D[165][j]] = 42240 + j; d[42240 + j] = D[165][j];} +D[166] = "�����������������������������������������������������������������쪨쪩쪪쪫쪬쪭쪮쪯쪰쪱쪲쪳쪴쪵쪶쪷쪸쪹쪺쪻쪾쪿쫁쫂쫃쫅������쫆쫇쫈쫉쫊쫋쫎쫐쫒쫔쫕쫖쫗쫚쫛쫜쫝쫞쫟쫡쫢쫣쫤쫥쫦쫧������쫨쫩쫪쫫쫭쫮쫯쫰쫱쫲쫳쫵쫶쫷쫸쫹쫺쫻쫼쫽쫾쫿쬀쬁쬂쬃쬄쬅쬆쬇쬉쬊─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂┒┑┚┙┖┕┎┍┞┟┡┢┦┧┩┪┭┮┱┲┵┶┹┺┽┾╀╁╃╄╅╆╇╈╉╊���������������������������".split(""); +for(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];} +D[167] = "�����������������������������������������������������������������쬋쬌쬍쬎쬏쬑쬒쬓쬕쬖쬗쬙쬚쬛쬜쬝쬞쬟쬢쬣쬤쬥쬦쬧쬨쬩������쬪쬫쬬쬭쬮쬯쬰쬱쬲쬳쬴쬵쬶쬷쬸쬹쬺쬻쬼쬽쬾쬿쭀쭂쭃쭄������쭅쭆쭇쭊쭋쭍쭎쭏쭑쭒쭓쭔쭕쭖쭗쭚쭛쭜쭞쭟쭠쭡쭢쭣쭥쭦쭧쭨쭩쭪쭫쭬㎕㎖㎗ℓ㎘㏄㎣㎤㎥㎦㎙㎚㎛㎜㎝㎞㎟㎠㎡㎢㏊㎍㎎㎏㏏㎈㎉㏈㎧㎨㎰㎱㎲㎳㎴㎵㎶㎷㎸㎹㎀㎁㎂㎃㎄㎺㎻㎼㎽㎾㎿㎐㎑㎒㎓㎔Ω㏀㏁㎊㎋㎌㏖㏅㎭㎮㎯㏛㎩㎪㎫㎬㏝㏐㏓㏃㏉㏜㏆����������������".split(""); +for(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];} +D[168] = "�����������������������������������������������������������������쭭쭮쭯쭰쭱쭲쭳쭴쭵쭶쭷쭺쭻쭼쭽쭾쭿쮀쮁쮂쮃쮄쮅쮆쮇쮈������쮉쮊쮋쮌쮍쮎쮏쮐쮑쮒쮓쮔쮕쮖쮗쮘쮙쮚쮛쮝쮞쮟쮠쮡쮢쮣������쮤쮥쮦쮧쮨쮩쮪쮫쮬쮭쮮쮯쮰쮱쮲쮳쮴쮵쮶쮷쮹쮺쮻쮼쮽쮾쮿쯀쯁쯂쯃쯄ÆЪĦ�IJ�ĿŁØŒºÞŦŊ�㉠㉡㉢㉣㉤㉥㉦㉧㉨㉩㉪㉫㉬㉭㉮㉯㉰㉱㉲㉳㉴㉵㉶㉷㉸㉹㉺㉻ⓐⓑⓒⓓⓔⓕⓖⓗⓘⓙⓚⓛⓜⓝⓞⓟⓠⓡⓢⓣⓤⓥⓦⓧⓨⓩ①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮½⅓⅔¼¾⅛⅜⅝⅞�".split(""); +for(j = 0; j != D[168].length; ++j) if(D[168][j].charCodeAt(0) !== 0xFFFD) { e[D[168][j]] = 43008 + j; d[43008 + j] = D[168][j];} +D[169] = "�����������������������������������������������������������������쯅쯆쯇쯈쯉쯊쯋쯌쯍쯎쯏쯐쯑쯒쯓쯕쯖쯗쯘쯙쯚쯛쯜쯝쯞쯟������쯠쯡쯢쯣쯥쯦쯨쯪쯫쯬쯭쯮쯯쯰쯱쯲쯳쯴쯵쯶쯷쯸쯹쯺쯻쯼������쯽쯾쯿찀찁찂찃찄찅찆찇찈찉찊찋찎찏찑찒찓찕찖찗찘찙찚찛찞찟찠찣찤æđðħıijĸŀłøœßþŧŋʼn㈀㈁㈂㈃㈄㈅㈆㈇㈈㈉㈊㈋㈌㈍㈎㈏㈐㈑㈒㈓㈔㈕㈖㈗㈘㈙㈚㈛⒜⒝⒞⒟⒠⒡⒢⒣⒤⒥⒦⒧⒨⒩⒪⒫⒬⒭⒮⒯⒰⒱⒲⒳⒴⒵⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽⑾⑿⒀⒁⒂¹²³⁴ⁿ₁₂₃₄�".split(""); +for(j = 0; j != D[169].length; ++j) if(D[169][j].charCodeAt(0) !== 0xFFFD) { e[D[169][j]] = 43264 + j; d[43264 + j] = D[169][j];} +D[170] = "�����������������������������������������������������������������찥찦찪찫찭찯찱찲찳찴찵찶찷찺찿챀챁챂챃챆챇챉챊챋챍챎������챏챐챑챒챓챖챚챛챜챝챞챟챡챢챣챥챧챩챪챫챬챭챮챯챱챲������챳챴챶챷챸챹챺챻챼챽챾챿첀첁첂첃첄첅첆첇첈첉첊첋첌첍첎첏첐첑첒첓ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをん������������".split(""); +for(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];} +D[171] = "�����������������������������������������������������������������첔첕첖첗첚첛첝첞첟첡첢첣첤첥첦첧첪첮첯첰첱첲첳첶첷첹������첺첻첽첾첿쳀쳁쳂쳃쳆쳈쳊쳋쳌쳍쳎쳏쳑쳒쳓쳕쳖쳗쳘쳙쳚������쳛쳜쳝쳞쳟쳠쳡쳢쳣쳥쳦쳧쳨쳩쳪쳫쳭쳮쳯쳱쳲쳳쳴쳵쳶쳷쳸쳹쳺쳻쳼쳽ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶ���������".split(""); +for(j = 0; j != D[171].length; ++j) if(D[171][j].charCodeAt(0) !== 0xFFFD) { e[D[171][j]] = 43776 + j; d[43776 + j] = D[171][j];} +D[172] = "�����������������������������������������������������������������쳾쳿촀촂촃촄촅촆촇촊촋촍촎촏촑촒촓촔촕촖촗촚촜촞촟촠������촡촢촣촥촦촧촩촪촫촭촮촯촰촱촲촳촴촵촶촷촸촺촻촼촽촾������촿쵀쵁쵂쵃쵄쵅쵆쵇쵈쵉쵊쵋쵌쵍쵎쵏쵐쵑쵒쵓쵔쵕쵖쵗쵘쵙쵚쵛쵝쵞쵟АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ���������������абвгдеёжзийклмнопрстуфхцчшщъыьэюя��������������".split(""); +for(j = 0; j != D[172].length; ++j) if(D[172][j].charCodeAt(0) !== 0xFFFD) { e[D[172][j]] = 44032 + j; d[44032 + j] = D[172][j];} +D[173] = "�����������������������������������������������������������������쵡쵢쵣쵥쵦쵧쵨쵩쵪쵫쵮쵰쵲쵳쵴쵵쵶쵷쵹쵺쵻쵼쵽쵾쵿춀������춁춂춃춄춅춆춇춉춊춋춌춍춎춏춐춑춒춓춖춗춙춚춛춝춞춟������춠춡춢춣춦춨춪춫춬춭춮춯춱춲춳춴춵춶춷춸춹춺춻춼춽춾춿췀췁췂췃췅�����������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[173].length; ++j) if(D[173][j].charCodeAt(0) !== 0xFFFD) { e[D[173][j]] = 44288 + j; d[44288 + j] = D[173][j];} +D[174] = "�����������������������������������������������������������������췆췇췈췉췊췋췍췎췏췑췒췓췔췕췖췗췘췙췚췛췜췝췞췟췠췡������췢췣췤췥췦췧췩췪췫췭췮췯췱췲췳췴췵췶췷췺췼췾췿츀츁츂������츃츅츆츇츉츊츋츍츎츏츐츑츒츓츕츖츗츘츚츛츜츝츞츟츢츣츥츦츧츩츪츫�����������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[174].length; ++j) if(D[174][j].charCodeAt(0) !== 0xFFFD) { e[D[174][j]] = 44544 + j; d[44544 + j] = D[174][j];} +D[175] = "�����������������������������������������������������������������츬츭츮츯츲츴츶츷츸츹츺츻츼츽츾츿칀칁칂칃칄칅칆칇칈칉������칊칋칌칍칎칏칐칑칒칓칔칕칖칗칚칛칝칞칢칣칤칥칦칧칪칬������칮칯칰칱칲칳칶칷칹칺칻칽칾칿캀캁캂캃캆캈캊캋캌캍캎캏캒캓캕캖캗캙�����������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[175].length; ++j) if(D[175][j].charCodeAt(0) !== 0xFFFD) { e[D[175][j]] = 44800 + j; d[44800 + j] = D[175][j];} +D[176] = "�����������������������������������������������������������������캚캛캜캝캞캟캢캦캧캨캩캪캫캮캯캰캱캲캳캴캵캶캷캸캹캺������캻캼캽캾캿컀컂컃컄컅컆컇컈컉컊컋컌컍컎컏컐컑컒컓컔컕������컖컗컘컙컚컛컜컝컞컟컠컡컢컣컦컧컩컪컭컮컯컰컱컲컳컶컺컻컼컽컾컿가각간갇갈갉갊감갑값갓갔강갖갗같갚갛개객갠갤갬갭갯갰갱갸갹갼걀걋걍걔걘걜거걱건걷걸걺검겁것겄겅겆겉겊겋게겐겔겜겝겟겠겡겨격겪견겯결겸겹겻겼경곁계곈곌곕곗고곡곤곧골곪곬곯곰곱곳공곶과곽관괄괆�".split(""); +for(j = 0; j != D[176].length; ++j) if(D[176][j].charCodeAt(0) !== 0xFFFD) { e[D[176][j]] = 45056 + j; d[45056 + j] = D[176][j];} +D[177] = "�����������������������������������������������������������������켂켃켅켆켇켉켊켋켌켍켎켏켒켔켖켗켘켙켚켛켝켞켟켡켢켣������켥켦켧켨켩켪켫켮켲켳켴켵켶켷켹켺켻켼켽켾켿콀콁콂콃콄������콅콆콇콈콉콊콋콌콍콎콏콐콑콒콓콖콗콙콚콛콝콞콟콠콡콢콣콦콨콪콫콬괌괍괏광괘괜괠괩괬괭괴괵괸괼굄굅굇굉교굔굘굡굣구국군굳굴굵굶굻굼굽굿궁궂궈궉권궐궜궝궤궷귀귁귄귈귐귑귓규균귤그극근귿글긁금급긋긍긔기긱긴긷길긺김깁깃깅깆깊까깍깎깐깔깖깜깝깟깠깡깥깨깩깬깰깸�".split(""); +for(j = 0; j != D[177].length; ++j) if(D[177][j].charCodeAt(0) !== 0xFFFD) { e[D[177][j]] = 45312 + j; d[45312 + j] = D[177][j];} +D[178] = "�����������������������������������������������������������������콭콮콯콲콳콵콶콷콹콺콻콼콽콾콿쾁쾂쾃쾄쾆쾇쾈쾉쾊쾋쾍������쾎쾏쾐쾑쾒쾓쾔쾕쾖쾗쾘쾙쾚쾛쾜쾝쾞쾟쾠쾢쾣쾤쾥쾦쾧쾩������쾪쾫쾬쾭쾮쾯쾱쾲쾳쾴쾵쾶쾷쾸쾹쾺쾻쾼쾽쾾쾿쿀쿁쿂쿃쿅쿆쿇쿈쿉쿊쿋깹깻깼깽꺄꺅꺌꺼꺽꺾껀껄껌껍껏껐껑께껙껜껨껫껭껴껸껼꼇꼈꼍꼐꼬꼭꼰꼲꼴꼼꼽꼿꽁꽂꽃꽈꽉꽐꽜꽝꽤꽥꽹꾀꾄꾈꾐꾑꾕꾜꾸꾹꾼꿀꿇꿈꿉꿋꿍꿎꿔꿜꿨꿩꿰꿱꿴꿸뀀뀁뀄뀌뀐뀔뀜뀝뀨끄끅끈끊끌끎끓끔끕끗끙�".split(""); +for(j = 0; j != D[178].length; ++j) if(D[178][j].charCodeAt(0) !== 0xFFFD) { e[D[178][j]] = 45568 + j; d[45568 + j] = D[178][j];} +D[179] = "�����������������������������������������������������������������쿌쿍쿎쿏쿐쿑쿒쿓쿔쿕쿖쿗쿘쿙쿚쿛쿜쿝쿞쿟쿢쿣쿥쿦쿧쿩������쿪쿫쿬쿭쿮쿯쿲쿴쿶쿷쿸쿹쿺쿻쿽쿾쿿퀁퀂퀃퀅퀆퀇퀈퀉퀊������퀋퀌퀍퀎퀏퀐퀒퀓퀔퀕퀖퀗퀙퀚퀛퀜퀝퀞퀟퀠퀡퀢퀣퀤퀥퀦퀧퀨퀩퀪퀫퀬끝끼끽낀낄낌낍낏낑나낙낚난낟날낡낢남납낫났낭낮낯낱낳내낵낸낼냄냅냇냈냉냐냑냔냘냠냥너넉넋넌널넒넓넘넙넛넜넝넣네넥넨넬넴넵넷넸넹녀녁년녈념녑녔녕녘녜녠노녹논놀놂놈놉놋농높놓놔놘놜놨뇌뇐뇔뇜뇝�".split(""); +for(j = 0; j != D[179].length; ++j) if(D[179][j].charCodeAt(0) !== 0xFFFD) { e[D[179][j]] = 45824 + j; d[45824 + j] = D[179][j];} +D[180] = "�����������������������������������������������������������������퀮퀯퀰퀱퀲퀳퀶퀷퀹퀺퀻퀽퀾퀿큀큁큂큃큆큈큊큋큌큍큎큏������큑큒큓큕큖큗큙큚큛큜큝큞큟큡큢큣큤큥큦큧큨큩큪큫큮큯������큱큲큳큵큶큷큸큹큺큻큾큿킀킂킃킄킅킆킇킈킉킊킋킌킍킎킏킐킑킒킓킔뇟뇨뇩뇬뇰뇹뇻뇽누눅눈눋눌눔눕눗눙눠눴눼뉘뉜뉠뉨뉩뉴뉵뉼늄늅늉느늑는늘늙늚늠늡늣능늦늪늬늰늴니닉닌닐닒님닙닛닝닢다닥닦단닫달닭닮닯닳담답닷닸당닺닻닿대댁댄댈댐댑댓댔댕댜더덕덖던덛덜덞덟덤덥�".split(""); +for(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];} +D[181] = "�����������������������������������������������������������������킕킖킗킘킙킚킛킜킝킞킟킠킡킢킣킦킧킩킪킫킭킮킯킰킱킲������킳킶킸킺킻킼킽킾킿탂탃탅탆탇탊탋탌탍탎탏탒탖탗탘탙탚������탛탞탟탡탢탣탥탦탧탨탩탪탫탮탲탳탴탵탶탷탹탺탻탼탽탾탿턀턁턂턃턄덧덩덫덮데덱덴델뎀뎁뎃뎄뎅뎌뎐뎔뎠뎡뎨뎬도독돈돋돌돎돐돔돕돗동돛돝돠돤돨돼됐되된될됨됩됫됴두둑둔둘둠둡둣둥둬뒀뒈뒝뒤뒨뒬뒵뒷뒹듀듄듈듐듕드득든듣들듦듬듭듯등듸디딕딘딛딜딤딥딧딨딩딪따딱딴딸�".split(""); +for(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];} +D[182] = "�����������������������������������������������������������������턅턆턇턈턉턊턋턌턎턏턐턑턒턓턔턕턖턗턘턙턚턛턜턝턞턟������턠턡턢턣턤턥턦턧턨턩턪턫턬턭턮턯턲턳턵턶턷턹턻턼턽턾������턿텂텆텇텈텉텊텋텎텏텑텒텓텕텖텗텘텙텚텛텞텠텢텣텤텥텦텧텩텪텫텭땀땁땃땄땅땋때땍땐땔땜땝땟땠땡떠떡떤떨떪떫떰떱떳떴떵떻떼떽뗀뗄뗌뗍뗏뗐뗑뗘뗬또똑똔똘똥똬똴뙈뙤뙨뚜뚝뚠뚤뚫뚬뚱뛔뛰뛴뛸뜀뜁뜅뜨뜩뜬뜯뜰뜸뜹뜻띄띈띌띔띕띠띤띨띰띱띳띵라락란랄람랍랏랐랑랒랖랗�".split(""); +for(j = 0; j != D[182].length; ++j) if(D[182][j].charCodeAt(0) !== 0xFFFD) { e[D[182][j]] = 46592 + j; d[46592 + j] = D[182][j];} +D[183] = "�����������������������������������������������������������������텮텯텰텱텲텳텴텵텶텷텸텹텺텻텽텾텿톀톁톂톃톅톆톇톉톊������톋톌톍톎톏톐톑톒톓톔톕톖톗톘톙톚톛톜톝톞톟톢톣톥톦톧������톩톪톫톬톭톮톯톲톴톶톷톸톹톻톽톾톿퇁퇂퇃퇄퇅퇆퇇퇈퇉퇊퇋퇌퇍퇎퇏래랙랜랠램랩랫랬랭랴략랸럇량러럭런럴럼럽럿렀렁렇레렉렌렐렘렙렛렝려력련렬렴렵렷렸령례롄롑롓로록론롤롬롭롯롱롸롼뢍뢨뢰뢴뢸룀룁룃룅료룐룔룝룟룡루룩룬룰룸룹룻룽뤄뤘뤠뤼뤽륀륄륌륏륑류륙륜률륨륩�".split(""); +for(j = 0; j != D[183].length; ++j) if(D[183][j].charCodeAt(0) !== 0xFFFD) { e[D[183][j]] = 46848 + j; d[46848 + j] = D[183][j];} +D[184] = "�����������������������������������������������������������������퇐퇑퇒퇓퇔퇕퇖퇗퇙퇚퇛퇜퇝퇞퇟퇠퇡퇢퇣퇤퇥퇦퇧퇨퇩퇪������퇫퇬퇭퇮퇯퇰퇱퇲퇳퇵퇶퇷퇹퇺퇻퇼퇽퇾퇿툀툁툂툃툄툅툆������툈툊툋툌툍툎툏툑툒툓툔툕툖툗툘툙툚툛툜툝툞툟툠툡툢툣툤툥툦툧툨툩륫륭르륵른를름릅릇릉릊릍릎리릭린릴림립릿링마막만많맏말맑맒맘맙맛망맞맡맣매맥맨맬맴맵맷맸맹맺먀먁먈먕머먹먼멀멂멈멉멋멍멎멓메멕멘멜멤멥멧멨멩며멱면멸몃몄명몇몌모목몫몬몰몲몸몹못몽뫄뫈뫘뫙뫼�".split(""); +for(j = 0; j != D[184].length; ++j) if(D[184][j].charCodeAt(0) !== 0xFFFD) { e[D[184][j]] = 47104 + j; d[47104 + j] = D[184][j];} +D[185] = "�����������������������������������������������������������������툪툫툮툯툱툲툳툵툶툷툸툹툺툻툾퉀퉂퉃퉄퉅퉆퉇퉉퉊퉋퉌������퉍퉎퉏퉐퉑퉒퉓퉔퉕퉖퉗퉘퉙퉚퉛퉝퉞퉟퉠퉡퉢퉣퉥퉦퉧퉨������퉩퉪퉫퉬퉭퉮퉯퉰퉱퉲퉳퉴퉵퉶퉷퉸퉹퉺퉻퉼퉽퉾퉿튂튃튅튆튇튉튊튋튌묀묄묍묏묑묘묜묠묩묫무묵묶문묻물묽묾뭄뭅뭇뭉뭍뭏뭐뭔뭘뭡뭣뭬뮈뮌뮐뮤뮨뮬뮴뮷므믄믈믐믓미믹민믿밀밂밈밉밋밌밍및밑바박밖밗반받발밝밞밟밤밥밧방밭배백밴밸뱀뱁뱃뱄뱅뱉뱌뱍뱐뱝버벅번벋벌벎범법벗�".split(""); +for(j = 0; j != D[185].length; ++j) if(D[185][j].charCodeAt(0) !== 0xFFFD) { e[D[185][j]] = 47360 + j; d[47360 + j] = D[185][j];} +D[186] = "�����������������������������������������������������������������튍튎튏튒튓튔튖튗튘튙튚튛튝튞튟튡튢튣튥튦튧튨튩튪튫튭������튮튯튰튲튳튴튵튶튷튺튻튽튾틁틃틄틅틆틇틊틌틍틎틏틐틑������틒틓틕틖틗틙틚틛틝틞틟틠틡틢틣틦틧틨틩틪틫틬틭틮틯틲틳틵틶틷틹틺벙벚베벡벤벧벨벰벱벳벴벵벼벽변별볍볏볐병볕볘볜보복볶본볼봄봅봇봉봐봔봤봬뵀뵈뵉뵌뵐뵘뵙뵤뵨부북분붇불붉붊붐붑붓붕붙붚붜붤붰붸뷔뷕뷘뷜뷩뷰뷴뷸븀븃븅브븍븐블븜븝븟비빅빈빌빎빔빕빗빙빚빛빠빡빤�".split(""); +for(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];} +D[187] = "�����������������������������������������������������������������틻틼틽틾틿팂팄팆팇팈팉팊팋팏팑팒팓팕팗팘팙팚팛팞팢팣������팤팦팧팪팫팭팮팯팱팲팳팴팵팶팷팺팾팿퍀퍁퍂퍃퍆퍇퍈퍉������퍊퍋퍌퍍퍎퍏퍐퍑퍒퍓퍔퍕퍖퍗퍘퍙퍚퍛퍜퍝퍞퍟퍠퍡퍢퍣퍤퍥퍦퍧퍨퍩빨빪빰빱빳빴빵빻빼빽뺀뺄뺌뺍뺏뺐뺑뺘뺙뺨뻐뻑뻔뻗뻘뻠뻣뻤뻥뻬뼁뼈뼉뼘뼙뼛뼜뼝뽀뽁뽄뽈뽐뽑뽕뾔뾰뿅뿌뿍뿐뿔뿜뿟뿡쀼쁑쁘쁜쁠쁨쁩삐삑삔삘삠삡삣삥사삭삯산삳살삵삶삼삽삿샀상샅새색샌샐샘샙샛샜생샤�".split(""); +for(j = 0; j != D[187].length; ++j) if(D[187][j].charCodeAt(0) !== 0xFFFD) { e[D[187][j]] = 47872 + j; d[47872 + j] = D[187][j];} +D[188] = "�����������������������������������������������������������������퍪퍫퍬퍭퍮퍯퍰퍱퍲퍳퍴퍵퍶퍷퍸퍹퍺퍻퍾퍿펁펂펃펅펆펇������펈펉펊펋펎펒펓펔펕펖펗펚펛펝펞펟펡펢펣펤펥펦펧펪펬펮������펯펰펱펲펳펵펶펷펹펺펻펽펾펿폀폁폂폃폆폇폊폋폌폍폎폏폑폒폓폔폕폖샥샨샬샴샵샷샹섀섄섈섐섕서석섞섟선섣설섦섧섬섭섯섰성섶세섹센셀셈셉셋셌셍셔셕션셜셤셥셧셨셩셰셴셸솅소속솎손솔솖솜솝솟송솥솨솩솬솰솽쇄쇈쇌쇔쇗쇘쇠쇤쇨쇰쇱쇳쇼쇽숀숄숌숍숏숑수숙순숟술숨숩숫숭�".split(""); +for(j = 0; j != D[188].length; ++j) if(D[188][j].charCodeAt(0) !== 0xFFFD) { e[D[188][j]] = 48128 + j; d[48128 + j] = D[188][j];} +D[189] = "�����������������������������������������������������������������폗폙폚폛폜폝폞폟폠폢폤폥폦폧폨폩폪폫폮폯폱폲폳폵폶폷������폸폹폺폻폾퐀퐂퐃퐄퐅퐆퐇퐉퐊퐋퐌퐍퐎퐏퐐퐑퐒퐓퐔퐕퐖������퐗퐘퐙퐚퐛퐜퐞퐟퐠퐡퐢퐣퐤퐥퐦퐧퐨퐩퐪퐫퐬퐭퐮퐯퐰퐱퐲퐳퐴퐵퐶퐷숯숱숲숴쉈쉐쉑쉔쉘쉠쉥쉬쉭쉰쉴쉼쉽쉿슁슈슉슐슘슛슝스슥슨슬슭슴습슷승시식신싣실싫심십싯싱싶싸싹싻싼쌀쌈쌉쌌쌍쌓쌔쌕쌘쌜쌤쌥쌨쌩썅써썩썬썰썲썸썹썼썽쎄쎈쎌쏀쏘쏙쏜쏟쏠쏢쏨쏩쏭쏴쏵쏸쐈쐐쐤쐬쐰�".split(""); +for(j = 0; j != D[189].length; ++j) if(D[189][j].charCodeAt(0) !== 0xFFFD) { e[D[189][j]] = 48384 + j; d[48384 + j] = D[189][j];} +D[190] = "�����������������������������������������������������������������퐸퐹퐺퐻퐼퐽퐾퐿푁푂푃푅푆푇푈푉푊푋푌푍푎푏푐푑푒푓������푔푕푖푗푘푙푚푛푝푞푟푡푢푣푥푦푧푨푩푪푫푬푮푰푱푲������푳푴푵푶푷푺푻푽푾풁풃풄풅풆풇풊풌풎풏풐풑풒풓풕풖풗풘풙풚풛풜풝쐴쐼쐽쑈쑤쑥쑨쑬쑴쑵쑹쒀쒔쒜쒸쒼쓩쓰쓱쓴쓸쓺쓿씀씁씌씐씔씜씨씩씬씰씸씹씻씽아악안앉않알앍앎앓암압앗았앙앝앞애액앤앨앰앱앳앴앵야약얀얄얇얌얍얏양얕얗얘얜얠얩어억언얹얻얼얽얾엄업없엇었엉엊엌엎�".split(""); +for(j = 0; j != D[190].length; ++j) if(D[190][j].charCodeAt(0) !== 0xFFFD) { e[D[190][j]] = 48640 + j; d[48640 + j] = D[190][j];} +D[191] = "�����������������������������������������������������������������풞풟풠풡풢풣풤풥풦풧풨풪풫풬풭풮풯풰풱풲풳풴풵풶풷풸������풹풺풻풼풽풾풿퓀퓁퓂퓃퓄퓅퓆퓇퓈퓉퓊퓋퓍퓎퓏퓑퓒퓓퓕������퓖퓗퓘퓙퓚퓛퓝퓞퓠퓡퓢퓣퓤퓥퓦퓧퓩퓪퓫퓭퓮퓯퓱퓲퓳퓴퓵퓶퓷퓹퓺퓼에엑엔엘엠엡엣엥여역엮연열엶엷염엽엾엿였영옅옆옇예옌옐옘옙옛옜오옥온올옭옮옰옳옴옵옷옹옻와왁완왈왐왑왓왔왕왜왝왠왬왯왱외왹왼욀욈욉욋욍요욕욘욜욤욥욧용우욱운울욹욺움웁웃웅워웍원월웜웝웠웡웨�".split(""); +for(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];} +D[192] = "�����������������������������������������������������������������퓾퓿픀픁픂픃픅픆픇픉픊픋픍픎픏픐픑픒픓픖픘픙픚픛픜픝������픞픟픠픡픢픣픤픥픦픧픨픩픪픫픬픭픮픯픰픱픲픳픴픵픶픷������픸픹픺픻픾픿핁핂핃핅핆핇핈핉핊핋핎핐핒핓핔핕핖핗핚핛핝핞핟핡핢핣웩웬웰웸웹웽위윅윈윌윔윕윗윙유육윤율윰윱윳융윷으윽은을읊음읍읏응읒읓읔읕읖읗의읜읠읨읫이익인일읽읾잃임입잇있잉잊잎자작잔잖잗잘잚잠잡잣잤장잦재잭잰잴잼잽잿쟀쟁쟈쟉쟌쟎쟐쟘쟝쟤쟨쟬저적전절젊�".split(""); +for(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];} +D[193] = "�����������������������������������������������������������������핤핦핧핪핬핮핯핰핱핲핳핶핷핹핺핻핽핾핿햀햁햂햃햆햊햋������햌햍햎햏햑햒햓햔햕햖햗햘햙햚햛햜햝햞햟햠햡햢햣햤햦햧������햨햩햪햫햬햭햮햯햰햱햲햳햴햵햶햷햸햹햺햻햼햽햾햿헀헁헂헃헄헅헆헇점접젓정젖제젝젠젤젬젭젯젱져젼졀졈졉졌졍졔조족존졸졺좀좁좃종좆좇좋좌좍좔좝좟좡좨좼좽죄죈죌죔죕죗죙죠죡죤죵주죽준줄줅줆줌줍줏중줘줬줴쥐쥑쥔쥘쥠쥡쥣쥬쥰쥴쥼즈즉즌즐즘즙즛증지직진짇질짊짐집짓�".split(""); +for(j = 0; j != D[193].length; ++j) if(D[193][j].charCodeAt(0) !== 0xFFFD) { e[D[193][j]] = 49408 + j; d[49408 + j] = D[193][j];} +D[194] = "�����������������������������������������������������������������헊헋헍헎헏헑헓헔헕헖헗헚헜헞헟헠헡헢헣헦헧헩헪헫헭헮������헯헰헱헲헳헶헸헺헻헼헽헾헿혂혃혅혆혇혉혊혋혌혍혎혏혒������혖혗혘혙혚혛혝혞혟혡혢혣혥혦혧혨혩혪혫혬혮혯혰혱혲혳혴혵혶혷혺혻징짖짙짚짜짝짠짢짤짧짬짭짯짰짱째짹짼쨀쨈쨉쨋쨌쨍쨔쨘쨩쩌쩍쩐쩔쩜쩝쩟쩠쩡쩨쩽쪄쪘쪼쪽쫀쫄쫌쫍쫏쫑쫓쫘쫙쫠쫬쫴쬈쬐쬔쬘쬠쬡쭁쭈쭉쭌쭐쭘쭙쭝쭤쭸쭹쮜쮸쯔쯤쯧쯩찌찍찐찔찜찝찡찢찧차착찬찮찰참찹찻�".split(""); +for(j = 0; j != D[194].length; ++j) if(D[194][j].charCodeAt(0) !== 0xFFFD) { e[D[194][j]] = 49664 + j; d[49664 + j] = D[194][j];} +D[195] = "�����������������������������������������������������������������혽혾혿홁홂홃홄홆홇홊홌홎홏홐홒홓홖홗홙홚홛홝홞홟홠홡������홢홣홤홥홦홨홪홫홬홭홮홯홲홳홵홶홷홸홹홺홻홼홽홾홿횀������횁횂횄횆횇횈횉횊횋횎횏횑횒횓횕횖횗횘횙횚횛횜횞횠횢횣횤횥횦횧횩횪찼창찾채책챈챌챔챕챗챘챙챠챤챦챨챰챵처척천철첨첩첫첬청체첵첸첼쳄쳅쳇쳉쳐쳔쳤쳬쳰촁초촉촌촐촘촙촛총촤촨촬촹최쵠쵤쵬쵭쵯쵱쵸춈추축춘출춤춥춧충춰췄췌췐취췬췰췸췹췻췽츄츈츌츔츙츠측츤츨츰츱츳층�".split(""); +for(j = 0; j != D[195].length; ++j) if(D[195][j].charCodeAt(0) !== 0xFFFD) { e[D[195][j]] = 49920 + j; d[49920 + j] = D[195][j];} +D[196] = "�����������������������������������������������������������������횫횭횮횯횱횲횳횴횵횶횷횸횺횼횽횾횿훀훁훂훃훆훇훉훊훋������훍훎훏훐훒훓훕훖훘훚훛훜훝훞훟훡훢훣훥훦훧훩훪훫훬훭������훮훯훱훲훳훴훶훷훸훹훺훻훾훿휁휂휃휅휆휇휈휉휊휋휌휍휎휏휐휒휓휔치칙친칟칠칡침칩칫칭카칵칸칼캄캅캇캉캐캑캔캘캠캡캣캤캥캬캭컁커컥컨컫컬컴컵컷컸컹케켁켄켈켐켑켓켕켜켠켤켬켭켯켰켱켸코콕콘콜콤콥콧콩콰콱콴콸쾀쾅쾌쾡쾨쾰쿄쿠쿡쿤쿨쿰쿱쿳쿵쿼퀀퀄퀑퀘퀭퀴퀵퀸퀼�".split(""); +for(j = 0; j != D[196].length; ++j) if(D[196][j].charCodeAt(0) !== 0xFFFD) { e[D[196][j]] = 50176 + j; d[50176 + j] = D[196][j];} +D[197] = "�����������������������������������������������������������������휕휖휗휚휛휝휞휟휡휢휣휤휥휦휧휪휬휮휯휰휱휲휳휶휷휹������휺휻휽휾휿흀흁흂흃흅흆흈흊흋흌흍흎흏흒흓흕흚흛흜흝흞������흟흢흤흦흧흨흪흫흭흮흯흱흲흳흵흶흷흸흹흺흻흾흿힀힂힃힄힅힆힇힊힋큄큅큇큉큐큔큘큠크큭큰클큼큽킁키킥킨킬킴킵킷킹타탁탄탈탉탐탑탓탔탕태택탠탤탬탭탯탰탱탸턍터턱턴털턺텀텁텃텄텅테텍텐텔템텝텟텡텨텬텼톄톈토톡톤톨톰톱톳통톺톼퇀퇘퇴퇸툇툉툐투툭툰툴툼툽툿퉁퉈퉜�".split(""); +for(j = 0; j != D[197].length; ++j) if(D[197][j].charCodeAt(0) !== 0xFFFD) { e[D[197][j]] = 50432 + j; d[50432 + j] = D[197][j];} +D[198] = "�����������������������������������������������������������������힍힎힏힑힒힓힔힕힖힗힚힜힞힟힠힡힢힣������������������������������������������������������������������������������퉤튀튁튄튈튐튑튕튜튠튤튬튱트특튼튿틀틂틈틉틋틔틘틜틤틥티틱틴틸팀팁팃팅파팍팎판팔팖팜팝팟팠팡팥패팩팬팰팸팹팻팼팽퍄퍅퍼퍽펀펄펌펍펏펐펑페펙펜펠펨펩펫펭펴편펼폄폅폈평폐폘폡폣포폭폰폴폼폽폿퐁�".split(""); +for(j = 0; j != D[198].length; ++j) if(D[198][j].charCodeAt(0) !== 0xFFFD) { e[D[198][j]] = 50688 + j; d[50688 + j] = D[198][j];} +D[199] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������퐈퐝푀푄표푠푤푭푯푸푹푼푿풀풂품풉풋풍풔풩퓌퓐퓔퓜퓟퓨퓬퓰퓸퓻퓽프픈플픔픕픗피픽핀필핌핍핏핑하학한할핥함합핫항해핵핸핼햄햅햇했행햐향허헉헌헐헒험헙헛헝헤헥헨헬헴헵헷헹혀혁현혈혐협혓혔형혜혠�".split(""); +for(j = 0; j != D[199].length; ++j) if(D[199][j].charCodeAt(0) !== 0xFFFD) { e[D[199][j]] = 50944 + j; d[50944 + j] = D[199][j];} +D[200] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������혤혭호혹혼홀홅홈홉홋홍홑화확환활홧황홰홱홴횃횅회획횐횔횝횟횡효횬횰횹횻후훅훈훌훑훔훗훙훠훤훨훰훵훼훽휀휄휑휘휙휜휠휨휩휫휭휴휵휸휼흄흇흉흐흑흔흖흗흘흙흠흡흣흥흩희흰흴흼흽힁히힉힌힐힘힙힛힝�".split(""); +for(j = 0; j != D[200].length; ++j) if(D[200][j].charCodeAt(0) !== 0xFFFD) { e[D[200][j]] = 51200 + j; d[51200 + j] = D[200][j];} +D[202] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������伽佳假價加可呵哥嘉嫁家暇架枷柯歌珂痂稼苛茄街袈訶賈跏軻迦駕刻却各恪慤殼珏脚覺角閣侃刊墾奸姦干幹懇揀杆柬桿澗癎看磵稈竿簡肝艮艱諫間乫喝曷渴碣竭葛褐蝎鞨勘坎堪嵌感憾戡敢柑橄減甘疳監瞰紺邯鑑鑒龕�".split(""); +for(j = 0; j != D[202].length; ++j) if(D[202][j].charCodeAt(0) !== 0xFFFD) { e[D[202][j]] = 51712 + j; d[51712 + j] = D[202][j];} +D[203] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������匣岬甲胛鉀閘剛堈姜岡崗康强彊慷江畺疆糠絳綱羌腔舡薑襁講鋼降鱇介价個凱塏愷愾慨改槪漑疥皆盖箇芥蓋豈鎧開喀客坑更粳羹醵倨去居巨拒据據擧渠炬祛距踞車遽鉅鋸乾件健巾建愆楗腱虔蹇鍵騫乞傑杰桀儉劍劒檢�".split(""); +for(j = 0; j != D[203].length; ++j) if(D[203][j].charCodeAt(0) !== 0xFFFD) { e[D[203][j]] = 51968 + j; d[51968 + j] = D[203][j];} +D[204] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������瞼鈐黔劫怯迲偈憩揭擊格檄激膈覡隔堅牽犬甄絹繭肩見譴遣鵑抉決潔結缺訣兼慊箝謙鉗鎌京俓倞傾儆勁勍卿坰境庚徑慶憬擎敬景暻更梗涇炅烱璟璥瓊痙硬磬竟競絅經耕耿脛莖警輕逕鏡頃頸驚鯨係啓堺契季屆悸戒桂械�".split(""); +for(j = 0; j != D[204].length; ++j) if(D[204][j].charCodeAt(0) !== 0xFFFD) { e[D[204][j]] = 52224 + j; d[52224 + j] = D[204][j];} +D[205] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������棨溪界癸磎稽系繫繼計誡谿階鷄古叩告呱固姑孤尻庫拷攷故敲暠枯槁沽痼皐睾稿羔考股膏苦苽菰藁蠱袴誥賈辜錮雇顧高鼓哭斛曲梏穀谷鵠困坤崑昆梱棍滾琨袞鯤汨滑骨供公共功孔工恐恭拱控攻珙空蚣貢鞏串寡戈果瓜�".split(""); +for(j = 0; j != D[205].length; ++j) if(D[205][j].charCodeAt(0) !== 0xFFFD) { e[D[205][j]] = 52480 + j; d[52480 + j] = D[205][j];} +D[206] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������科菓誇課跨過鍋顆廓槨藿郭串冠官寬慣棺款灌琯瓘管罐菅觀貫關館刮恝括适侊光匡壙廣曠洸炚狂珖筐胱鑛卦掛罫乖傀塊壞怪愧拐槐魁宏紘肱轟交僑咬喬嬌嶠巧攪敎校橋狡皎矯絞翹膠蕎蛟較轎郊餃驕鮫丘久九仇俱具勾�".split(""); +for(j = 0; j != D[206].length; ++j) if(D[206][j].charCodeAt(0) !== 0xFFFD) { e[D[206][j]] = 52736 + j; d[52736 + j] = D[206][j];} +D[207] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������區口句咎嘔坵垢寇嶇廐懼拘救枸柩構歐毆毬求溝灸狗玖球瞿矩究絿耉臼舅舊苟衢謳購軀逑邱鉤銶駒驅鳩鷗龜國局菊鞠鞫麴君窘群裙軍郡堀屈掘窟宮弓穹窮芎躬倦券勸卷圈拳捲權淃眷厥獗蕨蹶闕机櫃潰詭軌饋句晷歸貴�".split(""); +for(j = 0; j != D[207].length; ++j) if(D[207][j].charCodeAt(0) !== 0xFFFD) { e[D[207][j]] = 52992 + j; d[52992 + j] = D[207][j];} +D[208] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������鬼龜叫圭奎揆槻珪硅窺竅糾葵規赳逵閨勻均畇筠菌鈞龜橘克剋劇戟棘極隙僅劤勤懃斤根槿瑾筋芹菫覲謹近饉契今妗擒昑檎琴禁禽芩衾衿襟金錦伋及急扱汲級給亘兢矜肯企伎其冀嗜器圻基埼夔奇妓寄岐崎己幾忌技旗旣�".split(""); +for(j = 0; j != D[208].length; ++j) if(D[208][j].charCodeAt(0) !== 0xFFFD) { e[D[208][j]] = 53248 + j; d[53248 + j] = D[208][j];} +D[209] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������朞期杞棋棄機欺氣汽沂淇玘琦琪璂璣畸畿碁磯祁祇祈祺箕紀綺羈耆耭肌記譏豈起錡錤飢饑騎騏驥麒緊佶吉拮桔金喫儺喇奈娜懦懶拏拿癩羅蘿螺裸邏那樂洛烙珞落諾酪駱亂卵暖欄煖爛蘭難鸞捏捺南嵐枏楠湳濫男藍襤拉�".split(""); +for(j = 0; j != D[209].length; ++j) if(D[209][j].charCodeAt(0) !== 0xFFFD) { e[D[209][j]] = 53504 + j; d[53504 + j] = D[209][j];} +D[210] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������納臘蠟衲囊娘廊朗浪狼郎乃來內奈柰耐冷女年撚秊念恬拈捻寧寗努勞奴弩怒擄櫓爐瑙盧老蘆虜路露駑魯鷺碌祿綠菉錄鹿論壟弄濃籠聾膿農惱牢磊腦賂雷尿壘屢樓淚漏累縷陋嫩訥杻紐勒肋凜凌稜綾能菱陵尼泥匿溺多茶�".split(""); +for(j = 0; j != D[210].length; ++j) if(D[210][j].charCodeAt(0) !== 0xFFFD) { e[D[210][j]] = 53760 + j; d[53760 + j] = D[210][j];} +D[211] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������丹亶但單團壇彖斷旦檀段湍短端簞緞蛋袒鄲鍛撻澾獺疸達啖坍憺擔曇淡湛潭澹痰聃膽蕁覃談譚錟沓畓答踏遝唐堂塘幢戇撞棠當糖螳黨代垈坮大對岱帶待戴擡玳臺袋貸隊黛宅德悳倒刀到圖堵塗導屠島嶋度徒悼挑掉搗桃�".split(""); +for(j = 0; j != D[211].length; ++j) if(D[211][j].charCodeAt(0) !== 0xFFFD) { e[D[211][j]] = 54016 + j; d[54016 + j] = D[211][j];} +D[212] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������棹櫂淘渡滔濤燾盜睹禱稻萄覩賭跳蹈逃途道都鍍陶韜毒瀆牘犢獨督禿篤纛讀墩惇敦旽暾沌焞燉豚頓乭突仝冬凍動同憧東桐棟洞潼疼瞳童胴董銅兜斗杜枓痘竇荳讀豆逗頭屯臀芚遁遯鈍得嶝橙燈登等藤謄鄧騰喇懶拏癩羅�".split(""); +for(j = 0; j != D[212].length; ++j) if(D[212][j].charCodeAt(0) !== 0xFFFD) { e[D[212][j]] = 54272 + j; d[54272 + j] = D[212][j];} +D[213] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������蘿螺裸邏樂洛烙珞絡落諾酪駱丹亂卵欄欒瀾爛蘭鸞剌辣嵐擥攬欖濫籃纜藍襤覽拉臘蠟廊朗浪狼琅瑯螂郞來崍徠萊冷掠略亮倆兩凉梁樑粮粱糧良諒輛量侶儷勵呂廬慮戾旅櫚濾礪藜蠣閭驢驪麗黎力曆歷瀝礫轢靂憐戀攣漣�".split(""); +for(j = 0; j != D[213].length; ++j) if(D[213][j].charCodeAt(0) !== 0xFFFD) { e[D[213][j]] = 54528 + j; d[54528 + j] = D[213][j];} +D[214] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������煉璉練聯蓮輦連鍊冽列劣洌烈裂廉斂殮濂簾獵令伶囹寧岺嶺怜玲笭羚翎聆逞鈴零靈領齡例澧禮醴隷勞怒撈擄櫓潞瀘爐盧老蘆虜路輅露魯鷺鹵碌祿綠菉錄鹿麓論壟弄朧瀧瓏籠聾儡瀨牢磊賂賚賴雷了僚寮廖料燎療瞭聊蓼�".split(""); +for(j = 0; j != D[214].length; ++j) if(D[214][j].charCodeAt(0) !== 0xFFFD) { e[D[214][j]] = 54784 + j; d[54784 + j] = D[214][j];} +D[215] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������遼鬧龍壘婁屢樓淚漏瘻累縷蔞褸鏤陋劉旒柳榴流溜瀏琉瑠留瘤硫謬類六戮陸侖倫崙淪綸輪律慄栗率隆勒肋凜凌楞稜綾菱陵俚利厘吏唎履悧李梨浬犁狸理璃異痢籬罹羸莉裏裡里釐離鯉吝潾燐璘藺躪隣鱗麟林淋琳臨霖砬�".split(""); +for(j = 0; j != D[215].length; ++j) if(D[215][j].charCodeAt(0) !== 0xFFFD) { e[D[215][j]] = 55040 + j; d[55040 + j] = D[215][j];} +D[216] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������立笠粒摩瑪痲碼磨馬魔麻寞幕漠膜莫邈万卍娩巒彎慢挽晩曼滿漫灣瞞萬蔓蠻輓饅鰻唜抹末沫茉襪靺亡妄忘忙望網罔芒茫莽輞邙埋妹媒寐昧枚梅每煤罵買賣邁魅脈貊陌驀麥孟氓猛盲盟萌冪覓免冕勉棉沔眄眠綿緬面麵滅�".split(""); +for(j = 0; j != D[216].length; ++j) if(D[216][j].charCodeAt(0) !== 0xFFFD) { e[D[216][j]] = 55296 + j; d[55296 + j] = D[216][j];} +D[217] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������蔑冥名命明暝椧溟皿瞑茗蓂螟酩銘鳴袂侮冒募姆帽慕摸摹暮某模母毛牟牡瑁眸矛耗芼茅謀謨貌木沐牧目睦穆鶩歿沒夢朦蒙卯墓妙廟描昴杳渺猫竗苗錨務巫憮懋戊拇撫无楙武毋無珷畝繆舞茂蕪誣貿霧鵡墨默們刎吻問文�".split(""); +for(j = 0; j != D[217].length; ++j) if(D[217][j].charCodeAt(0) !== 0xFFFD) { e[D[217][j]] = 55552 + j; d[55552 + j] = D[217][j];} +D[218] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������汶紊紋聞蚊門雯勿沕物味媚尾嵋彌微未梶楣渼湄眉米美薇謎迷靡黴岷悶愍憫敏旻旼民泯玟珉緡閔密蜜謐剝博拍搏撲朴樸泊珀璞箔粕縛膊舶薄迫雹駁伴半反叛拌搬攀斑槃泮潘班畔瘢盤盼磐磻礬絆般蟠返頒飯勃拔撥渤潑�".split(""); +for(j = 0; j != D[218].length; ++j) if(D[218][j].charCodeAt(0) !== 0xFFFD) { e[D[218][j]] = 55808 + j; d[55808 + j] = D[218][j];} +D[219] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������發跋醱鉢髮魃倣傍坊妨尨幇彷房放方旁昉枋榜滂磅紡肪膀舫芳蒡蚌訪謗邦防龐倍俳北培徘拜排杯湃焙盃背胚裴裵褙賠輩配陪伯佰帛柏栢白百魄幡樊煩燔番磻繁蕃藩飜伐筏罰閥凡帆梵氾汎泛犯範范法琺僻劈壁擘檗璧癖�".split(""); +for(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];} +D[220] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������碧蘗闢霹便卞弁變辨辯邊別瞥鱉鼈丙倂兵屛幷昞昺柄棅炳甁病秉竝輧餠騈保堡報寶普步洑湺潽珤甫菩補褓譜輔伏僕匐卜宓復服福腹茯蔔複覆輹輻馥鰒本乶俸奉封峯峰捧棒烽熢琫縫蓬蜂逢鋒鳳不付俯傅剖副否咐埠夫婦�".split(""); +for(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];} +D[221] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������孚孵富府復扶敷斧浮溥父符簿缶腐腑膚艀芙莩訃負賦賻赴趺部釜阜附駙鳧北分吩噴墳奔奮忿憤扮昐汾焚盆粉糞紛芬賁雰不佛弗彿拂崩朋棚硼繃鵬丕備匕匪卑妃婢庇悲憊扉批斐枇榧比毖毗毘沸泌琵痺砒碑秕秘粃緋翡肥�".split(""); +for(j = 0; j != D[221].length; ++j) if(D[221][j].charCodeAt(0) !== 0xFFFD) { e[D[221][j]] = 56576 + j; d[56576 + j] = D[221][j];} +D[222] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������脾臂菲蜚裨誹譬費鄙非飛鼻嚬嬪彬斌檳殯浜濱瀕牝玭貧賓頻憑氷聘騁乍事些仕伺似使俟僿史司唆嗣四士奢娑寫寺射巳師徙思捨斜斯柶査梭死沙泗渣瀉獅砂社祀祠私篩紗絲肆舍莎蓑蛇裟詐詞謝賜赦辭邪飼駟麝削數朔索�".split(""); +for(j = 0; j != D[222].length; ++j) if(D[222][j].charCodeAt(0) !== 0xFFFD) { e[D[222][j]] = 56832 + j; d[56832 + j] = D[222][j];} +D[223] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������傘刪山散汕珊産疝算蒜酸霰乷撒殺煞薩三參杉森渗芟蔘衫揷澁鈒颯上傷像償商喪嘗孀尙峠常床庠廂想桑橡湘爽牀狀相祥箱翔裳觴詳象賞霜塞璽賽嗇塞穡索色牲生甥省笙墅壻嶼序庶徐恕抒捿敍暑曙書栖棲犀瑞筮絮緖署�".split(""); +for(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];} +D[224] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������胥舒薯西誓逝鋤黍鼠夕奭席惜昔晳析汐淅潟石碩蓆釋錫仙僊先善嬋宣扇敾旋渲煽琁瑄璇璿癬禪線繕羨腺膳船蘚蟬詵跣選銑鐥饍鮮卨屑楔泄洩渫舌薛褻設說雪齧剡暹殲纖蟾贍閃陝攝涉燮葉城姓宬性惺成星晟猩珹盛省筬�".split(""); +for(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];} +D[225] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������聖聲腥誠醒世勢歲洗稅笹細說貰召嘯塑宵小少巢所掃搔昭梳沼消溯瀟炤燒甦疏疎瘙笑篠簫素紹蔬蕭蘇訴逍遡邵銷韶騷俗屬束涑粟續謖贖速孫巽損蓀遜飡率宋悚松淞訟誦送頌刷殺灑碎鎖衰釗修受嗽囚垂壽嫂守岫峀帥愁�".split(""); +for(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];} +D[226] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������戍手授搜收數樹殊水洙漱燧狩獸琇璲瘦睡秀穗竪粹綏綬繡羞脩茱蒐蓚藪袖誰讐輸遂邃酬銖銹隋隧隨雖需須首髓鬚叔塾夙孰宿淑潚熟琡璹肅菽巡徇循恂旬栒楯橓殉洵淳珣盾瞬筍純脣舜荀蓴蕣詢諄醇錞順馴戌術述鉥崇崧�".split(""); +for(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];} +D[227] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������嵩瑟膝蝨濕拾習褶襲丞乘僧勝升承昇繩蠅陞侍匙嘶始媤尸屎屍市弑恃施是時枾柴猜矢示翅蒔蓍視試詩諡豕豺埴寔式息拭植殖湜熄篒蝕識軾食飾伸侁信呻娠宸愼新晨燼申神紳腎臣莘薪藎蜃訊身辛辰迅失室實悉審尋心沁�".split(""); +for(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];} +D[228] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������沈深瀋甚芯諶什十拾雙氏亞俄兒啞娥峨我牙芽莪蛾衙訝阿雅餓鴉鵝堊岳嶽幄惡愕握樂渥鄂鍔顎鰐齷安岸按晏案眼雁鞍顔鮟斡謁軋閼唵岩巖庵暗癌菴闇壓押狎鴨仰央怏昻殃秧鴦厓哀埃崖愛曖涯碍艾隘靄厄扼掖液縊腋額�".split(""); +for(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];} +D[229] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������櫻罌鶯鸚也倻冶夜惹揶椰爺耶若野弱掠略約若葯蒻藥躍亮佯兩凉壤孃恙揚攘敭暘梁楊樣洋瀁煬痒瘍禳穰糧羊良襄諒讓釀陽量養圄御於漁瘀禦語馭魚齬億憶抑檍臆偃堰彦焉言諺孼蘖俺儼嚴奄掩淹嶪業円予余勵呂女如廬�".split(""); +for(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];} +D[230] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������旅歟汝濾璵礖礪與艅茹輿轝閭餘驪麗黎亦力域役易曆歷疫繹譯轢逆驛嚥堧姸娟宴年延憐戀捐挻撚椽沇沿涎涓淵演漣烟然煙煉燃燕璉硏硯秊筵緣練縯聯衍軟輦蓮連鉛鍊鳶列劣咽悅涅烈熱裂說閱厭廉念捻染殮炎焰琰艶苒�".split(""); +for(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];} +D[231] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������簾閻髥鹽曄獵燁葉令囹塋寧嶺嶸影怜映暎楹榮永泳渶潁濚瀛瀯煐營獰玲瑛瑩瓔盈穎纓羚聆英詠迎鈴鍈零霙靈領乂倪例刈叡曳汭濊猊睿穢芮藝蘂禮裔詣譽豫醴銳隸霓預五伍俉傲午吾吳嗚塢墺奧娛寤悟惡懊敖旿晤梧汚澳�".split(""); +for(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];} +D[232] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������烏熬獒筽蜈誤鰲鼇屋沃獄玉鈺溫瑥瘟穩縕蘊兀壅擁瓮甕癰翁邕雍饔渦瓦窩窪臥蛙蝸訛婉完宛梡椀浣玩琓琬碗緩翫脘腕莞豌阮頑曰往旺枉汪王倭娃歪矮外嵬巍猥畏了僚僥凹堯夭妖姚寥寮尿嶢拗搖撓擾料曜樂橈燎燿瑤療�".split(""); +for(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];} +D[233] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������窈窯繇繞耀腰蓼蟯要謠遙遼邀饒慾欲浴縟褥辱俑傭冗勇埇墉容庸慂榕涌湧溶熔瑢用甬聳茸蓉踊鎔鏞龍于佑偶優又友右宇寓尤愚憂旴牛玗瑀盂祐禑禹紆羽芋藕虞迂遇郵釪隅雨雩勖彧旭昱栯煜稶郁頊云暈橒殞澐熉耘芸蕓�".split(""); +for(j = 0; j != D[233].length; ++j) if(D[233][j].charCodeAt(0) !== 0xFFFD) { e[D[233][j]] = 59648 + j; d[59648 + j] = D[233][j];} +D[234] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������運隕雲韻蔚鬱亐熊雄元原員圓園垣媛嫄寃怨愿援沅洹湲源爰猿瑗苑袁轅遠阮院願鴛月越鉞位偉僞危圍委威尉慰暐渭爲瑋緯胃萎葦蔿蝟衛褘謂違韋魏乳侑儒兪劉唯喩孺宥幼幽庾悠惟愈愉揄攸有杻柔柚柳楡楢油洧流游溜�".split(""); +for(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];} +D[235] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������濡猶猷琉瑜由留癒硫紐維臾萸裕誘諛諭踰蹂遊逾遺酉釉鍮類六堉戮毓肉育陸倫允奫尹崙淪潤玧胤贇輪鈗閏律慄栗率聿戎瀜絨融隆垠恩慇殷誾銀隱乙吟淫蔭陰音飮揖泣邑凝應膺鷹依倚儀宜意懿擬椅毅疑矣義艤薏蟻衣誼�".split(""); +for(j = 0; j != D[235].length; ++j) if(D[235][j].charCodeAt(0) !== 0xFFFD) { e[D[235][j]] = 60160 + j; d[60160 + j] = D[235][j];} +D[236] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������議醫二以伊利吏夷姨履已弛彛怡易李梨泥爾珥理異痍痢移罹而耳肄苡荑裏裡貽貳邇里離飴餌匿溺瀷益翊翌翼謚人仁刃印吝咽因姻寅引忍湮燐璘絪茵藺蚓認隣靭靷鱗麟一佚佾壹日溢逸鎰馹任壬妊姙恁林淋稔臨荏賃入卄�".split(""); +for(j = 0; j != D[236].length; ++j) if(D[236][j].charCodeAt(0) !== 0xFFFD) { e[D[236][j]] = 60416 + j; d[60416 + j] = D[236][j];} +D[237] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������立笠粒仍剩孕芿仔刺咨姉姿子字孜恣慈滋炙煮玆瓷疵磁紫者自茨蔗藉諮資雌作勺嚼斫昨灼炸爵綽芍酌雀鵲孱棧殘潺盞岑暫潛箴簪蠶雜丈仗匠場墻壯奬將帳庄張掌暲杖樟檣欌漿牆狀獐璋章粧腸臟臧莊葬蔣薔藏裝贓醬長�".split(""); +for(j = 0; j != D[237].length; ++j) if(D[237][j].charCodeAt(0) !== 0xFFFD) { e[D[237][j]] = 60672 + j; d[60672 + j] = D[237][j];} +D[238] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������障再哉在宰才材栽梓渽滓災縡裁財載齋齎爭箏諍錚佇低儲咀姐底抵杵楮樗沮渚狙猪疽箸紵苧菹著藷詛貯躇這邸雎齟勣吊嫡寂摘敵滴狄炙的積笛籍績翟荻謫賊赤跡蹟迪迹適鏑佃佺傳全典前剪塡塼奠專展廛悛戰栓殿氈澱�".split(""); +for(j = 0; j != D[238].length; ++j) if(D[238][j].charCodeAt(0) !== 0xFFFD) { e[D[238][j]] = 60928 + j; d[60928 + j] = D[238][j];} +D[239] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������煎琠田甸畑癲筌箋箭篆纏詮輾轉鈿銓錢鐫電顚顫餞切截折浙癤竊節絶占岾店漸点粘霑鮎點接摺蝶丁井亭停偵呈姃定幀庭廷征情挺政整旌晶晸柾楨檉正汀淀淨渟湞瀞炡玎珽町睛碇禎程穽精綎艇訂諪貞鄭酊釘鉦鋌錠霆靖�".split(""); +for(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];} +D[240] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������靜頂鼎制劑啼堤帝弟悌提梯濟祭第臍薺製諸蹄醍除際霽題齊俎兆凋助嘲弔彫措操早晁曺曹朝條棗槽漕潮照燥爪璪眺祖祚租稠窕粗糟組繰肇藻蚤詔調趙躁造遭釣阻雕鳥族簇足鏃存尊卒拙猝倧宗從悰慫棕淙琮種終綜縱腫�".split(""); +for(j = 0; j != D[240].length; ++j) if(D[240][j].charCodeAt(0) !== 0xFFFD) { e[D[240][j]] = 61440 + j; d[61440 + j] = D[240][j];} +D[241] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������踪踵鍾鐘佐坐左座挫罪主住侏做姝胄呪周嗾奏宙州廚晝朱柱株注洲湊澍炷珠疇籌紂紬綢舟蛛註誅走躊輳週酎酒鑄駐竹粥俊儁准埈寯峻晙樽浚準濬焌畯竣蠢逡遵雋駿茁中仲衆重卽櫛楫汁葺增憎曾拯烝甑症繒蒸證贈之只�".split(""); +for(j = 0; j != D[241].length; ++j) if(D[241][j].charCodeAt(0) !== 0xFFFD) { e[D[241][j]] = 61696 + j; d[61696 + j] = D[241][j];} +D[242] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������咫地址志持指摯支旨智枝枳止池沚漬知砥祉祗紙肢脂至芝芷蜘誌識贄趾遲直稙稷織職唇嗔塵振搢晉晋桭榛殄津溱珍瑨璡畛疹盡眞瞋秦縉縝臻蔯袗診賑軫辰進鎭陣陳震侄叱姪嫉帙桎瓆疾秩窒膣蛭質跌迭斟朕什執潗緝輯�".split(""); +for(j = 0; j != D[242].length; ++j) if(D[242][j].charCodeAt(0) !== 0xFFFD) { e[D[242][j]] = 61952 + j; d[61952 + j] = D[242][j];} +D[243] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������鏶集徵懲澄且侘借叉嗟嵯差次此磋箚茶蹉車遮捉搾着窄錯鑿齪撰澯燦璨瓚竄簒纂粲纘讚贊鑽餐饌刹察擦札紮僭參塹慘慙懺斬站讒讖倉倡創唱娼廠彰愴敞昌昶暢槍滄漲猖瘡窓脹艙菖蒼債埰寀寨彩採砦綵菜蔡采釵冊柵策�".split(""); +for(j = 0; j != D[243].length; ++j) if(D[243][j].charCodeAt(0) !== 0xFFFD) { e[D[243][j]] = 62208 + j; d[62208 + j] = D[243][j];} +D[244] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������責凄妻悽處倜刺剔尺慽戚拓擲斥滌瘠脊蹠陟隻仟千喘天川擅泉淺玔穿舛薦賤踐遷釧闡阡韆凸哲喆徹撤澈綴輟轍鐵僉尖沾添甛瞻簽籤詹諂堞妾帖捷牒疊睫諜貼輒廳晴淸聽菁請靑鯖切剃替涕滯締諦逮遞體初剿哨憔抄招梢�".split(""); +for(j = 0; j != D[244].length; ++j) if(D[244][j].charCodeAt(0) !== 0xFFFD) { e[D[244][j]] = 62464 + j; d[62464 + j] = D[244][j];} +D[245] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������椒楚樵炒焦硝礁礎秒稍肖艸苕草蕉貂超酢醋醮促囑燭矗蜀觸寸忖村邨叢塚寵悤憁摠總聰蔥銃撮催崔最墜抽推椎楸樞湫皺秋芻萩諏趨追鄒酋醜錐錘鎚雛騶鰍丑畜祝竺筑築縮蓄蹙蹴軸逐春椿瑃出朮黜充忠沖蟲衝衷悴膵萃�".split(""); +for(j = 0; j != D[245].length; ++j) if(D[245][j].charCodeAt(0) !== 0xFFFD) { e[D[245][j]] = 62720 + j; d[62720 + j] = D[245][j];} +D[246] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������贅取吹嘴娶就炊翠聚脆臭趣醉驟鷲側仄厠惻測層侈値嗤峙幟恥梔治淄熾痔痴癡稚穉緇緻置致蚩輜雉馳齒則勅飭親七柒漆侵寢枕沈浸琛砧針鍼蟄秤稱快他咤唾墮妥惰打拖朶楕舵陀馱駝倬卓啄坼度托拓擢晫柝濁濯琢琸託�".split(""); +for(j = 0; j != D[246].length; ++j) if(D[246][j].charCodeAt(0) !== 0xFFFD) { e[D[246][j]] = 62976 + j; d[62976 + j] = D[246][j];} +D[247] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������鐸呑嘆坦彈憚歎灘炭綻誕奪脫探眈耽貪塔搭榻宕帑湯糖蕩兌台太怠態殆汰泰笞胎苔跆邰颱宅擇澤撑攄兎吐土討慟桶洞痛筒統通堆槌腿褪退頹偸套妬投透鬪慝特闖坡婆巴把播擺杷波派爬琶破罷芭跛頗判坂板版瓣販辦鈑�".split(""); +for(j = 0; j != D[247].length; ++j) if(D[247][j].charCodeAt(0) !== 0xFFFD) { e[D[247][j]] = 63232 + j; d[63232 + j] = D[247][j];} +D[248] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������阪八叭捌佩唄悖敗沛浿牌狽稗覇貝彭澎烹膨愎便偏扁片篇編翩遍鞭騙貶坪平枰萍評吠嬖幣廢弊斃肺蔽閉陛佈包匍匏咆哺圃布怖抛抱捕暴泡浦疱砲胞脯苞葡蒲袍褒逋鋪飽鮑幅暴曝瀑爆輻俵剽彪慓杓標漂瓢票表豹飇飄驃�".split(""); +for(j = 0; j != D[248].length; ++j) if(D[248][j].charCodeAt(0) !== 0xFFFD) { e[D[248][j]] = 63488 + j; d[63488 + j] = D[248][j];} +D[249] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������品稟楓諷豊風馮彼披疲皮被避陂匹弼必泌珌畢疋筆苾馝乏逼下何厦夏廈昰河瑕荷蝦賀遐霞鰕壑學虐謔鶴寒恨悍旱汗漢澣瀚罕翰閑閒限韓割轄函含咸啣喊檻涵緘艦銜陷鹹合哈盒蛤閤闔陜亢伉姮嫦巷恒抗杭桁沆港缸肛航�".split(""); +for(j = 0; j != D[249].length; ++j) if(D[249][j].charCodeAt(0) !== 0xFFFD) { e[D[249][j]] = 63744 + j; d[63744 + j] = D[249][j];} +D[250] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������行降項亥偕咳垓奚孩害懈楷海瀣蟹解該諧邂駭骸劾核倖幸杏荇行享向嚮珦鄕響餉饗香噓墟虛許憲櫶獻軒歇險驗奕爀赫革俔峴弦懸晛泫炫玄玹現眩睍絃絢縣舷衒見賢鉉顯孑穴血頁嫌俠協夾峽挾浹狹脅脇莢鋏頰亨兄刑型�".split(""); +for(j = 0; j != D[250].length; ++j) if(D[250][j].charCodeAt(0) !== 0xFFFD) { e[D[250][j]] = 64000 + j; d[64000 + j] = D[250][j];} +D[251] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������形泂滎瀅灐炯熒珩瑩荊螢衡逈邢鎣馨兮彗惠慧暳蕙蹊醯鞋乎互呼壕壺好岵弧戶扈昊晧毫浩淏湖滸澔濠濩灝狐琥瑚瓠皓祜糊縞胡芦葫蒿虎號蝴護豪鎬頀顥惑或酷婚昏混渾琿魂忽惚笏哄弘汞泓洪烘紅虹訌鴻化和嬅樺火畵�".split(""); +for(j = 0; j != D[251].length; ++j) if(D[251][j].charCodeAt(0) !== 0xFFFD) { e[D[251][j]] = 64256 + j; d[64256 + j] = D[251][j];} +D[252] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������禍禾花華話譁貨靴廓擴攫確碻穫丸喚奐宦幻患換歡晥桓渙煥環紈還驩鰥活滑猾豁闊凰幌徨恍惶愰慌晃晄榥況湟滉潢煌璜皇篁簧荒蝗遑隍黃匯回廻徊恢悔懷晦會檜淮澮灰獪繪膾茴蛔誨賄劃獲宖橫鐄哮嚆孝效斅曉梟涍淆�".split(""); +for(j = 0; j != D[252].length; ++j) if(D[252][j].charCodeAt(0) !== 0xFFFD) { e[D[252][j]] = 64512 + j; d[64512 + j] = D[252][j];} +D[253] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������爻肴酵驍侯候厚后吼喉嗅帿後朽煦珝逅勛勳塤壎焄熏燻薰訓暈薨喧暄煊萱卉喙毁彙徽揮暉煇諱輝麾休携烋畦虧恤譎鷸兇凶匈洶胸黑昕欣炘痕吃屹紇訖欠欽歆吸恰洽翕興僖凞喜噫囍姬嬉希憙憘戱晞曦熙熹熺犧禧稀羲詰�".split(""); +for(j = 0; j != D[253].length; ++j) if(D[253][j].charCodeAt(0) !== 0xFFFD) { e[D[253][j]] = 64768 + j; d[64768 + j] = D[253][j];} +return {"enc": e, "dec": d }; })(); +cptable[950] = (function(){ var d = [], e = {}, D = [], j; +D[0] = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~��������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];} +D[161] = "���������������������������������������������������������������� ,、。.‧;:?!︰…‥﹐﹑﹒·﹔﹕﹖﹗|–︱—︳╴︴﹏()︵︶{}︷︸〔〕︹︺【】︻︼《》︽︾〈〉︿﹀「」﹁﹂『』﹃﹄﹙﹚����������������������������������﹛﹜﹝﹞‘’“”〝〞‵′#&*※§〃○●△▲◎☆★◇◆□■▽▼㊣℅¯ ̄_ˍ﹉﹊﹍﹎﹋﹌﹟﹠﹡+-×÷±√<>=≦≧≠∞≒≡﹢﹣﹤﹥﹦~∩∪⊥∠∟⊿㏒㏑∫∮∵∴♀♂⊕⊙↑↓←→↖↗↙↘∥∣/�".split(""); +for(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];} +D[162] = "����������������������������������������������������������������\∕﹨$¥〒¢£%@℃℉﹩﹪﹫㏕㎜㎝㎞㏎㎡㎎㎏㏄°兙兛兞兝兡兣嗧瓩糎▁▂▃▄▅▆▇█▏▎▍▌▋▊▉┼┴┬┤├▔─│▕┌┐└┘╭����������������������������������╮╰╯═╞╪╡◢◣◥◤╱╲╳0123456789ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩ〡〢〣〤〥〦〧〨〩十卄卅ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuv�".split(""); +for(j = 0; j != D[162].length; ++j) if(D[162][j].charCodeAt(0) !== 0xFFFD) { e[D[162][j]] = 41472 + j; d[41472 + j] = D[162][j];} +D[163] = "����������������������������������������������������������������wxyzΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩαβγδεζηθικλμνξοπρστυφχψωㄅㄆㄇㄈㄉㄊㄋㄌㄍㄎㄏ����������������������������������ㄐㄑㄒㄓㄔㄕㄖㄗㄘㄙㄚㄛㄜㄝㄞㄟㄠㄡㄢㄣㄤㄥㄦㄧㄨㄩ˙ˉˊˇˋ���������������������������������€������������������������������".split(""); +for(j = 0; j != D[163].length; ++j) if(D[163][j].charCodeAt(0) !== 0xFFFD) { e[D[163][j]] = 41728 + j; d[41728 + j] = D[163][j];} +D[164] = "����������������������������������������������������������������一乙丁七乃九了二人儿入八几刀刁力匕十卜又三下丈上丫丸凡久么也乞于亡兀刃勺千叉口土士夕大女子孑孓寸小尢尸山川工己已巳巾干廾弋弓才����������������������������������丑丐不中丰丹之尹予云井互五亢仁什仃仆仇仍今介仄元允內六兮公冗凶分切刈勻勾勿化匹午升卅卞厄友及反壬天夫太夭孔少尤尺屯巴幻廿弔引心戈戶手扎支文斗斤方日曰月木欠止歹毋比毛氏水火爪父爻片牙牛犬王丙�".split(""); +for(j = 0; j != D[164].length; ++j) if(D[164][j].charCodeAt(0) !== 0xFFFD) { e[D[164][j]] = 41984 + j; d[41984 + j] = D[164][j];} +D[165] = "����������������������������������������������������������������世丕且丘主乍乏乎以付仔仕他仗代令仙仞充兄冉冊冬凹出凸刊加功包匆北匝仟半卉卡占卯卮去可古右召叮叩叨叼司叵叫另只史叱台句叭叻四囚外����������������������������������央失奴奶孕它尼巨巧左市布平幼弁弘弗必戊打扔扒扑斥旦朮本未末札正母民氐永汁汀氾犯玄玉瓜瓦甘生用甩田由甲申疋白皮皿目矛矢石示禾穴立丞丟乒乓乩亙交亦亥仿伉伙伊伕伍伐休伏仲件任仰仳份企伋光兇兆先全�".split(""); +for(j = 0; j != D[165].length; ++j) if(D[165][j].charCodeAt(0) !== 0xFFFD) { e[D[165][j]] = 42240 + j; d[42240 + j] = D[165][j];} +D[166] = "����������������������������������������������������������������共再冰列刑划刎刖劣匈匡匠印危吉吏同吊吐吁吋各向名合吃后吆吒因回囝圳地在圭圬圯圩夙多夷夸妄奸妃好她如妁字存宇守宅安寺尖屹州帆并年����������������������������������式弛忙忖戎戌戍成扣扛托收早旨旬旭曲曳有朽朴朱朵次此死氖汝汗汙江池汐汕污汛汍汎灰牟牝百竹米糸缶羊羽老考而耒耳聿肉肋肌臣自至臼舌舛舟艮色艾虫血行衣西阡串亨位住佇佗佞伴佛何估佐佑伽伺伸佃佔似但佣�".split(""); +for(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];} +D[167] = "����������������������������������������������������������������作你伯低伶余佝佈佚兌克免兵冶冷別判利刪刨劫助努劬匣即卵吝吭吞吾否呎吧呆呃吳呈呂君吩告吹吻吸吮吵吶吠吼呀吱含吟听囪困囤囫坊坑址坍����������������������������������均坎圾坐坏圻壯夾妝妒妨妞妣妙妖妍妤妓妊妥孝孜孚孛完宋宏尬局屁尿尾岐岑岔岌巫希序庇床廷弄弟彤形彷役忘忌志忍忱快忸忪戒我抄抗抖技扶抉扭把扼找批扳抒扯折扮投抓抑抆改攻攸旱更束李杏材村杜杖杞杉杆杠�".split(""); +for(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];} +D[168] = "����������������������������������������������������������������杓杗步每求汞沙沁沈沉沅沛汪決沐汰沌汨沖沒汽沃汲汾汴沆汶沍沔沘沂灶灼災灸牢牡牠狄狂玖甬甫男甸皂盯矣私秀禿究系罕肖肓肝肘肛肚育良芒����������������������������������芋芍見角言谷豆豕貝赤走足身車辛辰迂迆迅迄巡邑邢邪邦那酉釆里防阮阱阪阬並乖乳事些亞享京佯依侍佳使佬供例來侃佰併侈佩佻侖佾侏侑佺兔兒兕兩具其典冽函刻券刷刺到刮制剁劾劻卒協卓卑卦卷卸卹取叔受味呵�".split(""); +for(j = 0; j != D[168].length; ++j) if(D[168][j].charCodeAt(0) !== 0xFFFD) { e[D[168][j]] = 43008 + j; d[43008 + j] = D[168][j];} +D[169] = "����������������������������������������������������������������咖呸咕咀呻呷咄咒咆呼咐呱呶和咚呢周咋命咎固垃坷坪坩坡坦坤坼夜奉奇奈奄奔妾妻委妹妮姑姆姐姍始姓姊妯妳姒姅孟孤季宗定官宜宙宛尚屈居����������������������������������屆岷岡岸岩岫岱岳帘帚帖帕帛帑幸庚店府底庖延弦弧弩往征彿彼忝忠忽念忿怏怔怯怵怖怪怕怡性怩怫怛或戕房戾所承拉拌拄抿拂抹拒招披拓拔拋拈抨抽押拐拙拇拍抵拚抱拘拖拗拆抬拎放斧於旺昔易昌昆昂明昀昏昕昊�".split(""); +for(j = 0; j != D[169].length; ++j) if(D[169][j].charCodeAt(0) !== 0xFFFD) { e[D[169][j]] = 43264 + j; d[43264 + j] = D[169][j];} +D[170] = "����������������������������������������������������������������昇服朋杭枋枕東果杳杷枇枝林杯杰板枉松析杵枚枓杼杪杲欣武歧歿氓氛泣注泳沱泌泥河沽沾沼波沫法泓沸泄油況沮泗泅泱沿治泡泛泊沬泯泜泖泠����������������������������������炕炎炒炊炙爬爭爸版牧物狀狎狙狗狐玩玨玟玫玥甽疝疙疚的盂盲直知矽社祀祁秉秈空穹竺糾罔羌羋者肺肥肢肱股肫肩肴肪肯臥臾舍芳芝芙芭芽芟芹花芬芥芯芸芣芰芾芷虎虱初表軋迎返近邵邸邱邶采金長門阜陀阿阻附�".split(""); +for(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];} +D[171] = "����������������������������������������������������������������陂隹雨青非亟亭亮信侵侯便俠俑俏保促侶俘俟俊俗侮俐俄係俚俎俞侷兗冒冑冠剎剃削前剌剋則勇勉勃勁匍南卻厚叛咬哀咨哎哉咸咦咳哇哂咽咪品����������������������������������哄哈咯咫咱咻咩咧咿囿垂型垠垣垢城垮垓奕契奏奎奐姜姘姿姣姨娃姥姪姚姦威姻孩宣宦室客宥封屎屏屍屋峙峒巷帝帥帟幽庠度建弈弭彥很待徊律徇後徉怒思怠急怎怨恍恰恨恢恆恃恬恫恪恤扁拜挖按拼拭持拮拽指拱拷�".split(""); +for(j = 0; j != D[171].length; ++j) if(D[171][j].charCodeAt(0) !== 0xFFFD) { e[D[171][j]] = 43776 + j; d[43776 + j] = D[171][j];} +D[172] = "����������������������������������������������������������������拯括拾拴挑挂政故斫施既春昭映昧是星昨昱昤曷柿染柱柔某柬架枯柵柩柯柄柑枴柚查枸柏柞柳枰柙柢柝柒歪殃殆段毒毗氟泉洋洲洪流津洌洱洞洗����������������������������������活洽派洶洛泵洹洧洸洩洮洵洎洫炫為炳炬炯炭炸炮炤爰牲牯牴狩狠狡玷珊玻玲珍珀玳甚甭畏界畎畋疫疤疥疢疣癸皆皇皈盈盆盃盅省盹相眉看盾盼眇矜砂研砌砍祆祉祈祇禹禺科秒秋穿突竿竽籽紂紅紀紉紇約紆缸美羿耄�".split(""); +for(j = 0; j != D[172].length; ++j) if(D[172][j].charCodeAt(0) !== 0xFFFD) { e[D[172][j]] = 44032 + j; d[44032 + j] = D[172][j];} +D[173] = "����������������������������������������������������������������耐耍耑耶胖胥胚胃胄背胡胛胎胞胤胝致舢苧范茅苣苛苦茄若茂茉苒苗英茁苜苔苑苞苓苟苯茆虐虹虻虺衍衫要觔計訂訃貞負赴赳趴軍軌述迦迢迪迥����������������������������������迭迫迤迨郊郎郁郃酋酊重閂限陋陌降面革韋韭音頁風飛食首香乘亳倌倍倣俯倦倥俸倩倖倆值借倚倒們俺倀倔倨俱倡個候倘俳修倭倪俾倫倉兼冤冥冢凍凌准凋剖剜剔剛剝匪卿原厝叟哨唐唁唷哼哥哲唆哺唔哩哭員唉哮哪�".split(""); +for(j = 0; j != D[173].length; ++j) if(D[173][j].charCodeAt(0) !== 0xFFFD) { e[D[173][j]] = 44288 + j; d[44288 + j] = D[173][j];} +D[174] = "����������������������������������������������������������������哦唧唇哽唏圃圄埂埔埋埃堉夏套奘奚娑娘娜娟娛娓姬娠娣娩娥娌娉孫屘宰害家宴宮宵容宸射屑展屐峭峽峻峪峨峰島崁峴差席師庫庭座弱徒徑徐恙����������������������������������恣恥恐恕恭恩息悄悟悚悍悔悌悅悖扇拳挈拿捎挾振捕捂捆捏捉挺捐挽挪挫挨捍捌效敉料旁旅時晉晏晃晒晌晅晁書朔朕朗校核案框桓根桂桔栩梳栗桌桑栽柴桐桀格桃株桅栓栘桁殊殉殷氣氧氨氦氤泰浪涕消涇浦浸海浙涓�".split(""); +for(j = 0; j != D[174].length; ++j) if(D[174][j].charCodeAt(0) !== 0xFFFD) { e[D[174][j]] = 44544 + j; d[44544 + j] = D[174][j];} +D[175] = "����������������������������������������������������������������浬涉浮浚浴浩涌涊浹涅浥涔烊烘烤烙烈烏爹特狼狹狽狸狷玆班琉珮珠珪珞畔畝畜畚留疾病症疲疳疽疼疹痂疸皋皰益盍盎眩真眠眨矩砰砧砸砝破砷����������������������������������砥砭砠砟砲祕祐祠祟祖神祝祗祚秤秣秧租秦秩秘窄窈站笆笑粉紡紗紋紊素索純紐紕級紜納紙紛缺罟羔翅翁耆耘耕耙耗耽耿胱脂胰脅胭胴脆胸胳脈能脊胼胯臭臬舀舐航舫舨般芻茫荒荔荊茸荐草茵茴荏茲茹茶茗荀茱茨荃�".split(""); +for(j = 0; j != D[175].length; ++j) if(D[175][j].charCodeAt(0) !== 0xFFFD) { e[D[175][j]] = 44800 + j; d[44800 + j] = D[175][j];} +D[176] = "����������������������������������������������������������������虔蚊蚪蚓蚤蚩蚌蚣蚜衰衷袁袂衽衹記訐討訌訕訊託訓訖訏訑豈豺豹財貢起躬軒軔軏辱送逆迷退迺迴逃追逅迸邕郡郝郢酒配酌釘針釗釜釙閃院陣陡����������������������������������陛陝除陘陞隻飢馬骨高鬥鬲鬼乾偺偽停假偃偌做偉健偶偎偕偵側偷偏倏偯偭兜冕凰剪副勒務勘動匐匏匙匿區匾參曼商啪啦啄啞啡啃啊唱啖問啕唯啤唸售啜唬啣唳啁啗圈國圉域堅堊堆埠埤基堂堵執培夠奢娶婁婉婦婪婀�".split(""); +for(j = 0; j != D[176].length; ++j) if(D[176][j].charCodeAt(0) !== 0xFFFD) { e[D[176][j]] = 45056 + j; d[45056 + j] = D[176][j];} +D[177] = "����������������������������������������������������������������娼婢婚婆婊孰寇寅寄寂宿密尉專將屠屜屝崇崆崎崛崖崢崑崩崔崙崤崧崗巢常帶帳帷康庸庶庵庾張強彗彬彩彫得徙從徘御徠徜恿患悉悠您惋悴惦悽����������������������������������情悻悵惜悼惘惕惆惟悸惚惇戚戛扈掠控捲掖探接捷捧掘措捱掩掉掃掛捫推掄授掙採掬排掏掀捻捩捨捺敝敖救教敗啟敏敘敕敔斜斛斬族旋旌旎晝晚晤晨晦晞曹勗望梁梯梢梓梵桿桶梱梧梗械梃棄梭梆梅梔條梨梟梡梂欲殺�".split(""); +for(j = 0; j != D[177].length; ++j) if(D[177][j].charCodeAt(0) !== 0xFFFD) { e[D[177][j]] = 45312 + j; d[45312 + j] = D[177][j];} +D[178] = "����������������������������������������������������������������毫毬氫涎涼淳淙液淡淌淤添淺清淇淋涯淑涮淞淹涸混淵淅淒渚涵淚淫淘淪深淮淨淆淄涪淬涿淦烹焉焊烽烯爽牽犁猜猛猖猓猙率琅琊球理現琍瓠瓶����������������������������������瓷甜產略畦畢異疏痔痕疵痊痍皎盔盒盛眷眾眼眶眸眺硫硃硎祥票祭移窒窕笠笨笛第符笙笞笮粒粗粕絆絃統紮紹紼絀細紳組累終紲紱缽羞羚翌翎習耜聊聆脯脖脣脫脩脰脤舂舵舷舶船莎莞莘荸莢莖莽莫莒莊莓莉莠荷荻荼�".split(""); +for(j = 0; j != D[178].length; ++j) if(D[178][j].charCodeAt(0) !== 0xFFFD) { e[D[178][j]] = 45568 + j; d[45568 + j] = D[178][j];} +D[179] = "����������������������������������������������������������������莆莧處彪蛇蛀蚶蛄蚵蛆蛋蚱蚯蛉術袞袈被袒袖袍袋覓規訪訝訣訥許設訟訛訢豉豚販責貫貨貪貧赧赦趾趺軛軟這逍通逗連速逝逐逕逞造透逢逖逛途����������������������������������部郭都酗野釵釦釣釧釭釩閉陪陵陳陸陰陴陶陷陬雀雪雩章竟頂頃魚鳥鹵鹿麥麻傢傍傅備傑傀傖傘傚最凱割剴創剩勞勝勛博厥啻喀喧啼喊喝喘喂喜喪喔喇喋喃喳單喟唾喲喚喻喬喱啾喉喫喙圍堯堪場堤堰報堡堝堠壹壺奠�".split(""); +for(j = 0; j != D[179].length; ++j) if(D[179][j].charCodeAt(0) !== 0xFFFD) { e[D[179][j]] = 45824 + j; d[45824 + j] = D[179][j];} +D[180] = "����������������������������������������������������������������婷媚婿媒媛媧孳孱寒富寓寐尊尋就嵌嵐崴嵇巽幅帽幀幃幾廊廁廂廄弼彭復循徨惑惡悲悶惠愜愣惺愕惰惻惴慨惱愎惶愉愀愒戟扉掣掌描揀揩揉揆揍����������������������������������插揣提握揖揭揮捶援揪換摒揚揹敞敦敢散斑斐斯普晰晴晶景暑智晾晷曾替期朝棺棕棠棘棗椅棟棵森棧棹棒棲棣棋棍植椒椎棉棚楮棻款欺欽殘殖殼毯氮氯氬港游湔渡渲湧湊渠渥渣減湛湘渤湖湮渭渦湯渴湍渺測湃渝渾滋�".split(""); +for(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];} +D[181] = "����������������������������������������������������������������溉渙湎湣湄湲湩湟焙焚焦焰無然煮焜牌犄犀猶猥猴猩琺琪琳琢琥琵琶琴琯琛琦琨甥甦畫番痢痛痣痙痘痞痠登發皖皓皴盜睏短硝硬硯稍稈程稅稀窘����������������������������������窗窖童竣等策筆筐筒答筍筋筏筑粟粥絞結絨絕紫絮絲絡給絢絰絳善翔翕耋聒肅腕腔腋腑腎脹腆脾腌腓腴舒舜菩萃菸萍菠菅萋菁華菱菴著萊菰萌菌菽菲菊萸萎萄菜萇菔菟虛蛟蛙蛭蛔蛛蛤蛐蛞街裁裂袱覃視註詠評詞証詁�".split(""); +for(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];} +D[182] = "����������������������������������������������������������������詔詛詐詆訴診訶詖象貂貯貼貳貽賁費賀貴買貶貿貸越超趁跎距跋跚跑跌跛跆軻軸軼辜逮逵週逸進逶鄂郵鄉郾酣酥量鈔鈕鈣鈉鈞鈍鈐鈇鈑閔閏開閑����������������������������������間閒閎隊階隋陽隅隆隍陲隄雁雅雄集雇雯雲韌項順須飧飪飯飩飲飭馮馭黃黍黑亂傭債傲傳僅傾催傷傻傯僇剿剷剽募勦勤勢勣匯嗟嗨嗓嗦嗎嗜嗇嗑嗣嗤嗯嗚嗡嗅嗆嗥嗉園圓塞塑塘塗塚塔填塌塭塊塢塒塋奧嫁嫉嫌媾媽媼�".split(""); +for(j = 0; j != D[182].length; ++j) if(D[182][j].charCodeAt(0) !== 0xFFFD) { e[D[182][j]] = 46592 + j; d[46592 + j] = D[182][j];} +D[183] = "����������������������������������������������������������������媳嫂媲嵩嵯幌幹廉廈弒彙徬微愚意慈感想愛惹愁愈慎慌慄慍愾愴愧愍愆愷戡戢搓搾搞搪搭搽搬搏搜搔損搶搖搗搆敬斟新暗暉暇暈暖暄暘暍會榔業����������������������������������楚楷楠楔極椰概楊楨楫楞楓楹榆楝楣楛歇歲毀殿毓毽溢溯滓溶滂源溝滇滅溥溘溼溺溫滑準溜滄滔溪溧溴煎煙煩煤煉照煜煬煦煌煥煞煆煨煖爺牒猷獅猿猾瑯瑚瑕瑟瑞瑁琿瑙瑛瑜當畸瘀痰瘁痲痱痺痿痴痳盞盟睛睫睦睞督�".split(""); +for(j = 0; j != D[183].length; ++j) if(D[183][j].charCodeAt(0) !== 0xFFFD) { e[D[183][j]] = 46848 + j; d[46848 + j] = D[183][j];} +D[184] = "����������������������������������������������������������������睹睪睬睜睥睨睢矮碎碰碗碘碌碉硼碑碓硿祺祿禁萬禽稜稚稠稔稟稞窟窠筷節筠筮筧粱粳粵經絹綑綁綏絛置罩罪署義羨群聖聘肆肄腱腰腸腥腮腳腫����������������������������������腹腺腦舅艇蒂葷落萱葵葦葫葉葬葛萼萵葡董葩葭葆虞虜號蛹蜓蜈蜇蜀蛾蛻蜂蜃蜆蜊衙裟裔裙補裘裝裡裊裕裒覜解詫該詳試詩詰誇詼詣誠話誅詭詢詮詬詹詻訾詨豢貊貉賊資賈賄貲賃賂賅跡跟跨路跳跺跪跤跦躲較載軾輊�".split(""); +for(j = 0; j != D[184].length; ++j) if(D[184][j].charCodeAt(0) !== 0xFFFD) { e[D[184][j]] = 47104 + j; d[47104 + j] = D[184][j];} +D[185] = "����������������������������������������������������������������辟農運遊道遂達逼違遐遇遏過遍遑逾遁鄒鄗酬酪酩釉鈷鉗鈸鈽鉀鈾鉛鉋鉤鉑鈴鉉鉍鉅鈹鈿鉚閘隘隔隕雍雋雉雊雷電雹零靖靴靶預頑頓頊頒頌飼飴����������������������������������飽飾馳馱馴髡鳩麂鼎鼓鼠僧僮僥僖僭僚僕像僑僱僎僩兢凳劃劂匱厭嗾嘀嘛嘗嗽嘔嘆嘉嘍嘎嗷嘖嘟嘈嘐嗶團圖塵塾境墓墊塹墅塽壽夥夢夤奪奩嫡嫦嫩嫗嫖嫘嫣孵寞寧寡寥實寨寢寤察對屢嶄嶇幛幣幕幗幔廓廖弊彆彰徹慇�".split(""); +for(j = 0; j != D[185].length; ++j) if(D[185][j].charCodeAt(0) !== 0xFFFD) { e[D[185][j]] = 47360 + j; d[47360 + j] = D[185][j];} +D[186] = "����������������������������������������������������������������愿態慷慢慣慟慚慘慵截撇摘摔撤摸摟摺摑摧搴摭摻敲斡旗旖暢暨暝榜榨榕槁榮槓構榛榷榻榫榴槐槍榭槌榦槃榣歉歌氳漳演滾漓滴漩漾漠漬漏漂漢����������������������������������滿滯漆漱漸漲漣漕漫漯澈漪滬漁滲滌滷熔熙煽熊熄熒爾犒犖獄獐瑤瑣瑪瑰瑭甄疑瘧瘍瘋瘉瘓盡監瞄睽睿睡磁碟碧碳碩碣禎福禍種稱窪窩竭端管箕箋筵算箝箔箏箸箇箄粹粽精綻綰綜綽綾綠緊綴網綱綺綢綿綵綸維緒緇綬�".split(""); +for(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];} +D[187] = "����������������������������������������������������������������罰翠翡翟聞聚肇腐膀膏膈膊腿膂臧臺與舔舞艋蓉蒿蓆蓄蒙蒞蒲蒜蓋蒸蓀蓓蒐蒼蓑蓊蜿蜜蜻蜢蜥蜴蜘蝕蜷蜩裳褂裴裹裸製裨褚裯誦誌語誣認誡誓誤����������������������������������說誥誨誘誑誚誧豪貍貌賓賑賒赫趙趕跼輔輒輕輓辣遠遘遜遣遙遞遢遝遛鄙鄘鄞酵酸酷酴鉸銀銅銘銖鉻銓銜銨鉼銑閡閨閩閣閥閤隙障際雌雒需靼鞅韶頗領颯颱餃餅餌餉駁骯骰髦魁魂鳴鳶鳳麼鼻齊億儀僻僵價儂儈儉儅凜�".split(""); +for(j = 0; j != D[187].length; ++j) if(D[187][j].charCodeAt(0) !== 0xFFFD) { e[D[187][j]] = 47872 + j; d[47872 + j] = D[187][j];} +D[188] = "����������������������������������������������������������������劇劈劉劍劊勰厲嘮嘻嘹嘲嘿嘴嘩噓噎噗噴嘶嘯嘰墀墟增墳墜墮墩墦奭嬉嫻嬋嫵嬌嬈寮寬審寫層履嶝嶔幢幟幡廢廚廟廝廣廠彈影德徵慶慧慮慝慕憂����������������������������������慼慰慫慾憧憐憫憎憬憚憤憔憮戮摩摯摹撞撲撈撐撰撥撓撕撩撒撮播撫撚撬撙撢撳敵敷數暮暫暴暱樣樟槨樁樞標槽模樓樊槳樂樅槭樑歐歎殤毅毆漿潼澄潑潦潔澆潭潛潸潮澎潺潰潤澗潘滕潯潠潟熟熬熱熨牖犛獎獗瑩璋璃�".split(""); +for(j = 0; j != D[188].length; ++j) if(D[188][j].charCodeAt(0) !== 0xFFFD) { e[D[188][j]] = 48128 + j; d[48128 + j] = D[188][j];} +D[189] = "����������������������������������������������������������������瑾璀畿瘠瘩瘟瘤瘦瘡瘢皚皺盤瞎瞇瞌瞑瞋磋磅確磊碾磕碼磐稿稼穀稽稷稻窯窮箭箱範箴篆篇篁箠篌糊締練緯緻緘緬緝編緣線緞緩綞緙緲緹罵罷羯����������������������������������翩耦膛膜膝膠膚膘蔗蔽蔚蓮蔬蔭蔓蔑蔣蔡蔔蓬蔥蓿蔆螂蝴蝶蝠蝦蝸蝨蝙蝗蝌蝓衛衝褐複褒褓褕褊誼諒談諄誕請諸課諉諂調誰論諍誶誹諛豌豎豬賠賞賦賤賬賭賢賣賜質賡赭趟趣踫踐踝踢踏踩踟踡踞躺輝輛輟輩輦輪輜輞�".split(""); +for(j = 0; j != D[189].length; ++j) if(D[189][j].charCodeAt(0) !== 0xFFFD) { e[D[189][j]] = 48384 + j; d[48384 + j] = D[189][j];} +D[190] = "����������������������������������������������������������������輥適遮遨遭遷鄰鄭鄧鄱醇醉醋醃鋅銻銷鋪銬鋤鋁銳銼鋒鋇鋰銲閭閱霄霆震霉靠鞍鞋鞏頡頫頜颳養餓餒餘駝駐駟駛駑駕駒駙骷髮髯鬧魅魄魷魯鴆鴉����������������������������������鴃麩麾黎墨齒儒儘儔儐儕冀冪凝劑劓勳噙噫噹噩噤噸噪器噥噱噯噬噢噶壁墾壇壅奮嬝嬴學寰導彊憲憑憩憊懍憶憾懊懈戰擅擁擋撻撼據擄擇擂操撿擒擔撾整曆曉暹曄曇暸樽樸樺橙橫橘樹橄橢橡橋橇樵機橈歙歷氅濂澱澡�".split(""); +for(j = 0; j != D[190].length; ++j) if(D[190][j].charCodeAt(0) !== 0xFFFD) { e[D[190][j]] = 48640 + j; d[48640 + j] = D[190][j];} +D[191] = "����������������������������������������������������������������濃澤濁澧澳激澹澶澦澠澴熾燉燐燒燈燕熹燎燙燜燃燄獨璜璣璘璟璞瓢甌甍瘴瘸瘺盧盥瞠瞞瞟瞥磨磚磬磧禦積穎穆穌穋窺篙簑築篤篛篡篩篦糕糖縊����������������������������������縑縈縛縣縞縝縉縐罹羲翰翱翮耨膳膩膨臻興艘艙蕊蕙蕈蕨蕩蕃蕉蕭蕪蕞螃螟螞螢融衡褪褲褥褫褡親覦諦諺諫諱謀諜諧諮諾謁謂諷諭諳諶諼豫豭貓賴蹄踱踴蹂踹踵輻輯輸輳辨辦遵遴選遲遼遺鄴醒錠錶鋸錳錯錢鋼錫錄錚�".split(""); +for(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];} +D[192] = "����������������������������������������������������������������錐錦錡錕錮錙閻隧隨險雕霎霑霖霍霓霏靛靜靦鞘頰頸頻頷頭頹頤餐館餞餛餡餚駭駢駱骸骼髻髭鬨鮑鴕鴣鴦鴨鴒鴛默黔龍龜優償儡儲勵嚎嚀嚐嚅嚇����������������������������������嚏壕壓壑壎嬰嬪嬤孺尷屨嶼嶺嶽嶸幫彌徽應懂懇懦懋戲戴擎擊擘擠擰擦擬擱擢擭斂斃曙曖檀檔檄檢檜櫛檣橾檗檐檠歜殮毚氈濘濱濟濠濛濤濫濯澀濬濡濩濕濮濰燧營燮燦燥燭燬燴燠爵牆獰獲璩環璦璨癆療癌盪瞳瞪瞰瞬�".split(""); +for(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];} +D[193] = "����������������������������������������������������������������瞧瞭矯磷磺磴磯礁禧禪穗窿簇簍篾篷簌篠糠糜糞糢糟糙糝縮績繆縷縲繃縫總縱繅繁縴縹繈縵縿縯罄翳翼聱聲聰聯聳臆臃膺臂臀膿膽臉膾臨舉艱薪����������������������������������薄蕾薜薑薔薯薛薇薨薊虧蟀蟑螳蟒蟆螫螻螺蟈蟋褻褶襄褸褽覬謎謗謙講謊謠謝謄謐豁谿豳賺賽購賸賻趨蹉蹋蹈蹊轄輾轂轅輿避遽還邁邂邀鄹醣醞醜鍍鎂錨鍵鍊鍥鍋錘鍾鍬鍛鍰鍚鍔闊闋闌闈闆隱隸雖霜霞鞠韓顆颶餵騁�".split(""); +for(j = 0; j != D[193].length; ++j) if(D[193][j].charCodeAt(0) !== 0xFFFD) { e[D[193][j]] = 49408 + j; d[49408 + j] = D[193][j];} +D[194] = "����������������������������������������������������������������駿鮮鮫鮪鮭鴻鴿麋黏點黜黝黛鼾齋叢嚕嚮壙壘嬸彝懣戳擴擲擾攆擺擻擷斷曜朦檳檬櫃檻檸櫂檮檯歟歸殯瀉瀋濾瀆濺瀑瀏燻燼燾燸獷獵璧璿甕癖癘����������������������������������癒瞽瞿瞻瞼礎禮穡穢穠竄竅簫簧簪簞簣簡糧織繕繞繚繡繒繙罈翹翻職聶臍臏舊藏薩藍藐藉薰薺薹薦蟯蟬蟲蟠覆覲觴謨謹謬謫豐贅蹙蹣蹦蹤蹟蹕軀轉轍邇邃邈醫醬釐鎔鎊鎖鎢鎳鎮鎬鎰鎘鎚鎗闔闖闐闕離雜雙雛雞霤鞣鞦�".split(""); +for(j = 0; j != D[194].length; ++j) if(D[194][j].charCodeAt(0) !== 0xFFFD) { e[D[194][j]] = 49664 + j; d[49664 + j] = D[194][j];} +D[195] = "����������������������������������������������������������������鞭韹額顏題顎顓颺餾餿餽餮馥騎髁鬃鬆魏魎魍鯊鯉鯽鯈鯀鵑鵝鵠黠鼕鼬儳嚥壞壟壢寵龐廬懲懷懶懵攀攏曠曝櫥櫝櫚櫓瀛瀟瀨瀚瀝瀕瀘爆爍牘犢獸����������������������������������獺璽瓊瓣疇疆癟癡矇礙禱穫穩簾簿簸簽簷籀繫繭繹繩繪羅繳羶羹羸臘藩藝藪藕藤藥藷蟻蠅蠍蟹蟾襠襟襖襞譁譜識證譚譎譏譆譙贈贊蹼蹲躇蹶蹬蹺蹴轔轎辭邊邋醱醮鏡鏑鏟鏃鏈鏜鏝鏖鏢鏍鏘鏤鏗鏨關隴難霪霧靡韜韻類�".split(""); +for(j = 0; j != D[195].length; ++j) if(D[195][j].charCodeAt(0) !== 0xFFFD) { e[D[195][j]] = 49920 + j; d[49920 + j] = D[195][j];} +D[196] = "����������������������������������������������������������������願顛颼饅饉騖騙鬍鯨鯧鯖鯛鶉鵡鵲鵪鵬麒麗麓麴勸嚨嚷嚶嚴嚼壤孀孃孽寶巉懸懺攘攔攙曦朧櫬瀾瀰瀲爐獻瓏癢癥礦礪礬礫竇競籌籃籍糯糰辮繽繼����������������������������������纂罌耀臚艦藻藹蘑藺蘆蘋蘇蘊蠔蠕襤覺觸議譬警譯譟譫贏贍躉躁躅躂醴釋鐘鐃鏽闡霰飄饒饑馨騫騰騷騵鰓鰍鹹麵黨鼯齟齣齡儷儸囁囀囂夔屬巍懼懾攝攜斕曩櫻欄櫺殲灌爛犧瓖瓔癩矓籐纏續羼蘗蘭蘚蠣蠢蠡蠟襪襬覽譴�".split(""); +for(j = 0; j != D[196].length; ++j) if(D[196][j].charCodeAt(0) !== 0xFFFD) { e[D[196][j]] = 50176 + j; d[50176 + j] = D[196][j];} +D[197] = "����������������������������������������������������������������護譽贓躊躍躋轟辯醺鐮鐳鐵鐺鐸鐲鐫闢霸霹露響顧顥饗驅驃驀騾髏魔魑鰭鰥鶯鶴鷂鶸麝黯鼙齜齦齧儼儻囈囊囉孿巔巒彎懿攤權歡灑灘玀瓤疊癮癬����������������������������������禳籠籟聾聽臟襲襯觼讀贖贗躑躓轡酈鑄鑑鑒霽霾韃韁顫饕驕驍髒鬚鱉鰱鰾鰻鷓鷗鼴齬齪龔囌巖戀攣攫攪曬欐瓚竊籤籣籥纓纖纔臢蘸蘿蠱變邐邏鑣鑠鑤靨顯饜驚驛驗髓體髑鱔鱗鱖鷥麟黴囑壩攬灞癱癲矗罐羈蠶蠹衢讓讒�".split(""); +for(j = 0; j != D[197].length; ++j) if(D[197][j].charCodeAt(0) !== 0xFFFD) { e[D[197][j]] = 50432 + j; d[50432 + j] = D[197][j];} +D[198] = "����������������������������������������������������������������讖艷贛釀鑪靂靈靄韆顰驟鬢魘鱟鷹鷺鹼鹽鼇齷齲廳欖灣籬籮蠻觀躡釁鑲鑰顱饞髖鬣黌灤矚讚鑷韉驢驥纜讜躪釅鑽鑾鑼鱷鱸黷豔鑿鸚爨驪鬱鸛鸞籲���������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[198].length; ++j) if(D[198][j].charCodeAt(0) !== 0xFFFD) { e[D[198][j]] = 50688 + j; d[50688 + j] = D[198][j];} +D[201] = "����������������������������������������������������������������乂乜凵匚厂万丌乇亍囗兀屮彳丏冇与丮亓仂仉仈冘勼卬厹圠夃夬尐巿旡殳毌气爿丱丼仨仜仩仡仝仚刌匜卌圢圣夗夯宁宄尒尻屴屳帄庀庂忉戉扐氕����������������������������������氶汃氿氻犮犰玊禸肊阞伎优伬仵伔仱伀价伈伝伂伅伢伓伄仴伒冱刓刉刐劦匢匟卍厊吇囡囟圮圪圴夼妀奼妅奻奾奷奿孖尕尥屼屺屻屾巟幵庄异弚彴忕忔忏扜扞扤扡扦扢扙扠扚扥旯旮朾朹朸朻机朿朼朳氘汆汒汜汏汊汔汋�".split(""); +for(j = 0; j != D[201].length; ++j) if(D[201][j].charCodeAt(0) !== 0xFFFD) { e[D[201][j]] = 51456 + j; d[51456 + j] = D[201][j];} +D[202] = "����������������������������������������������������������������汌灱牞犴犵玎甪癿穵网艸艼芀艽艿虍襾邙邗邘邛邔阢阤阠阣佖伻佢佉体佤伾佧佒佟佁佘伭伳伿佡冏冹刜刞刡劭劮匉卣卲厎厏吰吷吪呔呅吙吜吥吘����������������������������������吽呏呁吨吤呇囮囧囥坁坅坌坉坋坒夆奀妦妘妠妗妎妢妐妏妧妡宎宒尨尪岍岏岈岋岉岒岊岆岓岕巠帊帎庋庉庌庈庍弅弝彸彶忒忑忐忭忨忮忳忡忤忣忺忯忷忻怀忴戺抃抌抎抏抔抇扱扻扺扰抁抈扷扽扲扴攷旰旴旳旲旵杅杇�".split(""); +for(j = 0; j != D[202].length; ++j) if(D[202][j].charCodeAt(0) !== 0xFFFD) { e[D[202][j]] = 51712 + j; d[51712 + j] = D[202][j];} +D[203] = "����������������������������������������������������������������杙杕杌杈杝杍杚杋毐氙氚汸汧汫沄沋沏汱汯汩沚汭沇沕沜汦汳汥汻沎灴灺牣犿犽狃狆狁犺狅玕玗玓玔玒町甹疔疕皁礽耴肕肙肐肒肜芐芏芅芎芑芓����������������������������������芊芃芄豸迉辿邟邡邥邞邧邠阰阨阯阭丳侘佼侅佽侀侇佶佴侉侄佷佌侗佪侚佹侁佸侐侜侔侞侒侂侕佫佮冞冼冾刵刲刳剆刱劼匊匋匼厒厔咇呿咁咑咂咈呫呺呾呥呬呴呦咍呯呡呠咘呣呧呤囷囹坯坲坭坫坱坰坶垀坵坻坳坴坢�".split(""); +for(j = 0; j != D[203].length; ++j) if(D[203][j].charCodeAt(0) !== 0xFFFD) { e[D[203][j]] = 51968 + j; d[51968 + j] = D[203][j];} +D[204] = "����������������������������������������������������������������坨坽夌奅妵妺姏姎妲姌姁妶妼姃姖妱妽姀姈妴姇孢孥宓宕屄屇岮岤岠岵岯岨岬岟岣岭岢岪岧岝岥岶岰岦帗帔帙弨弢弣弤彔徂彾彽忞忥怭怦怙怲怋����������������������������������怴怊怗怳怚怞怬怢怍怐怮怓怑怌怉怜戔戽抭抴拑抾抪抶拊抮抳抯抻抩抰抸攽斨斻昉旼昄昒昈旻昃昋昍昅旽昑昐曶朊枅杬枎枒杶杻枘枆构杴枍枌杺枟枑枙枃杽极杸杹枔欥殀歾毞氝沓泬泫泮泙沶泔沭泧沷泐泂沺泃泆泭泲�".split(""); +for(j = 0; j != D[204].length; ++j) if(D[204][j].charCodeAt(0) !== 0xFFFD) { e[D[204][j]] = 52224 + j; d[52224 + j] = D[204][j];} +D[205] = "����������������������������������������������������������������泒泝沴沊沝沀泞泀洰泍泇沰泹泏泩泑炔炘炅炓炆炄炑炖炂炚炃牪狖狋狘狉狜狒狔狚狌狑玤玡玭玦玢玠玬玝瓝瓨甿畀甾疌疘皯盳盱盰盵矸矼矹矻矺����������������������������������矷祂礿秅穸穻竻籵糽耵肏肮肣肸肵肭舠芠苀芫芚芘芛芵芧芮芼芞芺芴芨芡芩苂芤苃芶芢虰虯虭虮豖迒迋迓迍迖迕迗邲邴邯邳邰阹阽阼阺陃俍俅俓侲俉俋俁俔俜俙侻侳俛俇俖侺俀侹俬剄剉勀勂匽卼厗厖厙厘咺咡咭咥哏�".split(""); +for(j = 0; j != D[205].length; ++j) if(D[205][j].charCodeAt(0) !== 0xFFFD) { e[D[205][j]] = 52480 + j; d[52480 + j] = D[205][j];} +D[206] = "����������������������������������������������������������������哃茍咷咮哖咶哅哆咠呰咼咢咾呲哞咰垵垞垟垤垌垗垝垛垔垘垏垙垥垚垕壴复奓姡姞姮娀姱姝姺姽姼姶姤姲姷姛姩姳姵姠姾姴姭宨屌峐峘峌峗峋峛����������������������������������峞峚峉峇峊峖峓峔峏峈峆峎峟峸巹帡帢帣帠帤庰庤庢庛庣庥弇弮彖徆怷怹恔恲恞恅恓恇恉恛恌恀恂恟怤恄恘恦恮扂扃拏挍挋拵挎挃拫拹挏挌拸拶挀挓挔拺挕拻拰敁敃斪斿昶昡昲昵昜昦昢昳昫昺昝昴昹昮朏朐柁柲柈枺�".split(""); +for(j = 0; j != D[206].length; ++j) if(D[206][j].charCodeAt(0) !== 0xFFFD) { e[D[206][j]] = 52736 + j; d[52736 + j] = D[206][j];} +D[207] = "����������������������������������������������������������������柜枻柸柘柀枷柅柫柤柟枵柍枳柷柶柮柣柂枹柎柧柰枲柼柆柭柌枮柦柛柺柉柊柃柪柋欨殂殄殶毖毘毠氠氡洨洴洭洟洼洿洒洊泚洳洄洙洺洚洑洀洝浂����������������������������������洁洘洷洃洏浀洇洠洬洈洢洉洐炷炟炾炱炰炡炴炵炩牁牉牊牬牰牳牮狊狤狨狫狟狪狦狣玅珌珂珈珅玹玶玵玴珫玿珇玾珃珆玸珋瓬瓮甮畇畈疧疪癹盄眈眃眄眅眊盷盻盺矧矨砆砑砒砅砐砏砎砉砃砓祊祌祋祅祄秕种秏秖秎窀�".split(""); +for(j = 0; j != D[207].length; ++j) if(D[207][j].charCodeAt(0) !== 0xFFFD) { e[D[207][j]] = 52992 + j; d[52992 + j] = D[207][j];} +D[208] = "����������������������������������������������������������������穾竑笀笁籺籸籹籿粀粁紃紈紁罘羑羍羾耇耎耏耔耷胘胇胠胑胈胂胐胅胣胙胜胊胕胉胏胗胦胍臿舡芔苙苾苹茇苨茀苕茺苫苖苴苬苡苲苵茌苻苶苰苪����������������������������������苤苠苺苳苭虷虴虼虳衁衎衧衪衩觓訄訇赲迣迡迮迠郱邽邿郕郅邾郇郋郈釔釓陔陏陑陓陊陎倞倅倇倓倢倰倛俵俴倳倷倬俶俷倗倜倠倧倵倯倱倎党冔冓凊凄凅凈凎剡剚剒剞剟剕剢勍匎厞唦哢唗唒哧哳哤唚哿唄唈哫唑唅哱�".split(""); +for(j = 0; j != D[208].length; ++j) if(D[208][j].charCodeAt(0) !== 0xFFFD) { e[D[208][j]] = 53248 + j; d[53248 + j] = D[208][j];} +D[209] = "����������������������������������������������������������������唊哻哷哸哠唎唃唋圁圂埌堲埕埒垺埆垽垼垸垶垿埇埐垹埁夎奊娙娖娭娮娕娏娗娊娞娳孬宧宭宬尃屖屔峬峿峮峱峷崀峹帩帨庨庮庪庬弳弰彧恝恚恧����������������������������������恁悢悈悀悒悁悝悃悕悛悗悇悜悎戙扆拲挐捖挬捄捅挶捃揤挹捋捊挼挩捁挴捘捔捙挭捇挳捚捑挸捗捀捈敊敆旆旃旄旂晊晟晇晑朒朓栟栚桉栲栳栻桋桏栖栱栜栵栫栭栯桎桄栴栝栒栔栦栨栮桍栺栥栠欬欯欭欱欴歭肂殈毦毤�".split(""); +for(j = 0; j != D[209].length; ++j) if(D[209][j].charCodeAt(0) !== 0xFFFD) { e[D[209][j]] = 53504 + j; d[53504 + j] = D[209][j];} +D[210] = "����������������������������������������������������������������毨毣毢毧氥浺浣浤浶洍浡涒浘浢浭浯涑涍淯浿涆浞浧浠涗浰浼浟涂涘洯浨涋浾涀涄洖涃浻浽浵涐烜烓烑烝烋缹烢烗烒烞烠烔烍烅烆烇烚烎烡牂牸����������������������������������牷牶猀狺狴狾狶狳狻猁珓珙珥珖玼珧珣珩珜珒珛珔珝珚珗珘珨瓞瓟瓴瓵甡畛畟疰痁疻痄痀疿疶疺皊盉眝眛眐眓眒眣眑眕眙眚眢眧砣砬砢砵砯砨砮砫砡砩砳砪砱祔祛祏祜祓祒祑秫秬秠秮秭秪秜秞秝窆窉窅窋窌窊窇竘笐�".split(""); +for(j = 0; j != D[210].length; ++j) if(D[210][j].charCodeAt(0) !== 0xFFFD) { e[D[210][j]] = 53760 + j; d[53760 + j] = D[210][j];} +D[211] = "����������������������������������������������������������������笄笓笅笏笈笊笎笉笒粄粑粊粌粈粍粅紞紝紑紎紘紖紓紟紒紏紌罜罡罞罠罝罛羖羒翃翂翀耖耾耹胺胲胹胵脁胻脀舁舯舥茳茭荄茙荑茥荖茿荁茦茜茢����������������������������������荂荎茛茪茈茼荍茖茤茠茷茯茩荇荅荌荓茞茬荋茧荈虓虒蚢蚨蚖蚍蚑蚞蚇蚗蚆蚋蚚蚅蚥蚙蚡蚧蚕蚘蚎蚝蚐蚔衃衄衭衵衶衲袀衱衿衯袃衾衴衼訒豇豗豻貤貣赶赸趵趷趶軑軓迾迵适迿迻逄迼迶郖郠郙郚郣郟郥郘郛郗郜郤酐�".split(""); +for(j = 0; j != D[211].length; ++j) if(D[211][j].charCodeAt(0) !== 0xFFFD) { e[D[211][j]] = 54016 + j; d[54016 + j] = D[211][j];} +D[212] = "����������������������������������������������������������������酎酏釕釢釚陜陟隼飣髟鬯乿偰偪偡偞偠偓偋偝偲偈偍偁偛偊偢倕偅偟偩偫偣偤偆偀偮偳偗偑凐剫剭剬剮勖勓匭厜啵啶唼啍啐唴唪啑啢唶唵唰啒啅����������������������������������唌唲啥啎唹啈唭唻啀啋圊圇埻堔埢埶埜埴堀埭埽堈埸堋埳埏堇埮埣埲埥埬埡堎埼堐埧堁堌埱埩埰堍堄奜婠婘婕婧婞娸娵婭婐婟婥婬婓婤婗婃婝婒婄婛婈媎娾婍娹婌婰婩婇婑婖婂婜孲孮寁寀屙崞崋崝崚崠崌崨崍崦崥崏�".split(""); +for(j = 0; j != D[212].length; ++j) if(D[212][j].charCodeAt(0) !== 0xFFFD) { e[D[212][j]] = 54272 + j; d[54272 + j] = D[212][j];} +D[213] = "����������������������������������������������������������������崰崒崣崟崮帾帴庱庴庹庲庳弶弸徛徖徟悊悐悆悾悰悺惓惔惏惤惙惝惈悱惛悷惊悿惃惍惀挲捥掊掂捽掽掞掭掝掗掫掎捯掇掐据掯捵掜捭掮捼掤挻掟����������������������������������捸掅掁掑掍捰敓旍晥晡晛晙晜晢朘桹梇梐梜桭桮梮梫楖桯梣梬梩桵桴梲梏桷梒桼桫桲梪梀桱桾梛梖梋梠梉梤桸桻梑梌梊桽欶欳欷欸殑殏殍殎殌氪淀涫涴涳湴涬淩淢涷淶淔渀淈淠淟淖涾淥淜淝淛淴淊涽淭淰涺淕淂淏淉�".split(""); +for(j = 0; j != D[213].length; ++j) if(D[213][j].charCodeAt(0) !== 0xFFFD) { e[D[213][j]] = 54528 + j; d[54528 + j] = D[213][j];} +D[214] = "����������������������������������������������������������������淐淲淓淽淗淍淣涻烺焍烷焗烴焌烰焄烳焐烼烿焆焓焀烸烶焋焂焎牾牻牼牿猝猗猇猑猘猊猈狿猏猞玈珶珸珵琄琁珽琇琀珺珼珿琌琋珴琈畤畣痎痒痏����������������������������������痋痌痑痐皏皉盓眹眯眭眱眲眴眳眽眥眻眵硈硒硉硍硊硌砦硅硐祤祧祩祪祣祫祡离秺秸秶秷窏窔窐笵筇笴笥笰笢笤笳笘笪笝笱笫笭笯笲笸笚笣粔粘粖粣紵紽紸紶紺絅紬紩絁絇紾紿絊紻紨罣羕羜羝羛翊翋翍翐翑翇翏翉耟�".split(""); +for(j = 0; j != D[214].length; ++j) if(D[214][j].charCodeAt(0) !== 0xFFFD) { e[D[214][j]] = 54784 + j; d[54784 + j] = D[214][j];} +D[215] = "����������������������������������������������������������������耞耛聇聃聈脘脥脙脛脭脟脬脞脡脕脧脝脢舑舸舳舺舴舲艴莐莣莨莍荺荳莤荴莏莁莕莙荵莔莩荽莃莌莝莛莪莋荾莥莯莈莗莰荿莦莇莮荶莚虙虖蚿蚷����������������������������������蛂蛁蛅蚺蚰蛈蚹蚳蚸蛌蚴蚻蚼蛃蚽蚾衒袉袕袨袢袪袚袑袡袟袘袧袙袛袗袤袬袌袓袎覂觖觙觕訰訧訬訞谹谻豜豝豽貥赽赻赹趼跂趹趿跁軘軞軝軜軗軠軡逤逋逑逜逌逡郯郪郰郴郲郳郔郫郬郩酖酘酚酓酕釬釴釱釳釸釤釹釪�".split(""); +for(j = 0; j != D[215].length; ++j) if(D[215][j].charCodeAt(0) !== 0xFFFD) { e[D[215][j]] = 55040 + j; d[55040 + j] = D[215][j];} +D[216] = "����������������������������������������������������������������釫釷釨釮镺閆閈陼陭陫陱陯隿靪頄飥馗傛傕傔傞傋傣傃傌傎傝偨傜傒傂傇兟凔匒匑厤厧喑喨喥喭啷噅喢喓喈喏喵喁喣喒喤啽喌喦啿喕喡喎圌堩堷����������������������������������堙堞堧堣堨埵塈堥堜堛堳堿堶堮堹堸堭堬堻奡媯媔媟婺媢媞婸媦婼媥媬媕媮娷媄媊媗媃媋媩婻婽媌媜媏媓媝寪寍寋寔寑寊寎尌尰崷嵃嵫嵁嵋崿崵嵑嵎嵕崳崺嵒崽崱嵙嵂崹嵉崸崼崲崶嵀嵅幄幁彘徦徥徫惉悹惌惢惎惄愔�".split(""); +for(j = 0; j != D[216].length; ++j) if(D[216][j].charCodeAt(0) !== 0xFFFD) { e[D[216][j]] = 55296 + j; d[55296 + j] = D[216][j];} +D[217] = "����������������������������������������������������������������惲愊愖愅惵愓惸惼惾惁愃愘愝愐惿愄愋扊掔掱掰揎揥揨揯揃撝揳揊揠揶揕揲揵摡揟掾揝揜揄揘揓揂揇揌揋揈揰揗揙攲敧敪敤敜敨敥斌斝斞斮旐旒����������������������������������晼晬晻暀晱晹晪晲朁椌棓椄棜椪棬棪棱椏棖棷棫棤棶椓椐棳棡椇棌椈楰梴椑棯棆椔棸棐棽棼棨椋椊椗棎棈棝棞棦棴棑椆棔棩椕椥棇欹欻欿欼殔殗殙殕殽毰毲毳氰淼湆湇渟湉溈渼渽湅湢渫渿湁湝湳渜渳湋湀湑渻渃渮湞�".split(""); +for(j = 0; j != D[217].length; ++j) if(D[217][j].charCodeAt(0) !== 0xFFFD) { e[D[217][j]] = 55552 + j; d[55552 + j] = D[217][j];} +D[218] = "����������������������������������������������������������������湨湜湡渱渨湠湱湫渹渢渰湓湥渧湸湤湷湕湹湒湦渵渶湚焠焞焯烻焮焱焣焥焢焲焟焨焺焛牋牚犈犉犆犅犋猒猋猰猢猱猳猧猲猭猦猣猵猌琮琬琰琫琖����������������������������������琚琡琭琱琤琣琝琩琠琲瓻甯畯畬痧痚痡痦痝痟痤痗皕皒盚睆睇睄睍睅睊睎睋睌矞矬硠硤硥硜硭硱硪确硰硩硨硞硢祴祳祲祰稂稊稃稌稄窙竦竤筊笻筄筈筌筎筀筘筅粢粞粨粡絘絯絣絓絖絧絪絏絭絜絫絒絔絩絑絟絎缾缿罥�".split(""); +for(j = 0; j != D[218].length; ++j) if(D[218][j].charCodeAt(0) !== 0xFFFD) { e[D[218][j]] = 55808 + j; d[55808 + j] = D[218][j];} +D[219] = "����������������������������������������������������������������罦羢羠羡翗聑聏聐胾胔腃腊腒腏腇脽腍脺臦臮臷臸臹舄舼舽舿艵茻菏菹萣菀菨萒菧菤菼菶萐菆菈菫菣莿萁菝菥菘菿菡菋菎菖菵菉萉萏菞萑萆菂菳����������������������������������菕菺菇菑菪萓菃菬菮菄菻菗菢萛菛菾蛘蛢蛦蛓蛣蛚蛪蛝蛫蛜蛬蛩蛗蛨蛑衈衖衕袺裗袹袸裀袾袶袼袷袽袲褁裉覕覘覗觝觚觛詎詍訹詙詀詗詘詄詅詒詈詑詊詌詏豟貁貀貺貾貰貹貵趄趀趉跘跓跍跇跖跜跏跕跙跈跗跅軯軷軺�".split(""); +for(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];} +D[220] = "����������������������������������������������������������������軹軦軮軥軵軧軨軶軫軱軬軴軩逭逴逯鄆鄬鄄郿郼鄈郹郻鄁鄀鄇鄅鄃酡酤酟酢酠鈁鈊鈥鈃鈚鈦鈏鈌鈀鈒釿釽鈆鈄鈧鈂鈜鈤鈙鈗鈅鈖镻閍閌閐隇陾隈����������������������������������隉隃隀雂雈雃雱雰靬靰靮頇颩飫鳦黹亃亄亶傽傿僆傮僄僊傴僈僂傰僁傺傱僋僉傶傸凗剺剸剻剼嗃嗛嗌嗐嗋嗊嗝嗀嗔嗄嗩喿嗒喍嗏嗕嗢嗖嗈嗲嗍嗙嗂圔塓塨塤塏塍塉塯塕塎塝塙塥塛堽塣塱壼嫇嫄嫋媺媸媱媵媰媿嫈媻嫆�".split(""); +for(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];} +D[221] = "����������������������������������������������������������������媷嫀嫊媴媶嫍媹媐寖寘寙尟尳嵱嵣嵊嵥嵲嵬嵞嵨嵧嵢巰幏幎幊幍幋廅廌廆廋廇彀徯徭惷慉慊愫慅愶愲愮慆愯慏愩慀戠酨戣戥戤揅揱揫搐搒搉搠搤����������������������������������搳摃搟搕搘搹搷搢搣搌搦搰搨摁搵搯搊搚摀搥搧搋揧搛搮搡搎敯斒旓暆暌暕暐暋暊暙暔晸朠楦楟椸楎楢楱椿楅楪椹楂楗楙楺楈楉椵楬椳椽楥棰楸椴楩楀楯楄楶楘楁楴楌椻楋椷楜楏楑椲楒椯楻椼歆歅歃歂歈歁殛嗀毻毼�".split(""); +for(j = 0; j != D[221].length; ++j) if(D[221][j].charCodeAt(0) !== 0xFFFD) { e[D[221][j]] = 56576 + j; d[56576 + j] = D[221][j];} +D[222] = "����������������������������������������������������������������毹毷毸溛滖滈溏滀溟溓溔溠溱溹滆滒溽滁溞滉溷溰滍溦滏溲溾滃滜滘溙溒溎溍溤溡溿溳滐滊溗溮溣煇煔煒煣煠煁煝煢煲煸煪煡煂煘煃煋煰煟煐煓����������������������������������煄煍煚牏犍犌犑犐犎猼獂猻猺獀獊獉瑄瑊瑋瑒瑑瑗瑀瑏瑐瑎瑂瑆瑍瑔瓡瓿瓾瓽甝畹畷榃痯瘏瘃痷痾痼痹痸瘐痻痶痭痵痽皙皵盝睕睟睠睒睖睚睩睧睔睙睭矠碇碚碔碏碄碕碅碆碡碃硹碙碀碖硻祼禂祽祹稑稘稙稒稗稕稢稓�".split(""); +for(j = 0; j != D[222].length; ++j) if(D[222][j].charCodeAt(0) !== 0xFFFD) { e[D[222][j]] = 56832 + j; d[56832 + j] = D[222][j];} +D[223] = "����������������������������������������������������������������稛稐窣窢窞竫筦筤筭筴筩筲筥筳筱筰筡筸筶筣粲粴粯綈綆綀綍絿綅絺綎絻綃絼綌綔綄絽綒罭罫罧罨罬羦羥羧翛翜耡腤腠腷腜腩腛腢腲朡腞腶腧腯����������������������������������腄腡舝艉艄艀艂艅蓱萿葖葶葹蒏蒍葥葑葀蒆葧萰葍葽葚葙葴葳葝蔇葞萷萺萴葺葃葸萲葅萩菙葋萯葂萭葟葰萹葎葌葒葯蓅蒎萻葇萶萳葨葾葄萫葠葔葮葐蜋蜄蛷蜌蛺蛖蛵蝍蛸蜎蜉蜁蛶蜍蜅裖裋裍裎裞裛裚裌裐覅覛觟觥觤�".split(""); +for(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];} +D[224] = "����������������������������������������������������������������觡觠觢觜触詶誆詿詡訿詷誂誄詵誃誁詴詺谼豋豊豥豤豦貆貄貅賌赨赩趑趌趎趏趍趓趔趐趒跰跠跬跱跮跐跩跣跢跧跲跫跴輆軿輁輀輅輇輈輂輋遒逿����������������������������������遄遉逽鄐鄍鄏鄑鄖鄔鄋鄎酮酯鉈鉒鈰鈺鉦鈳鉥鉞銃鈮鉊鉆鉭鉬鉏鉠鉧鉯鈶鉡鉰鈱鉔鉣鉐鉲鉎鉓鉌鉖鈲閟閜閞閛隒隓隑隗雎雺雽雸雵靳靷靸靲頏頍頎颬飶飹馯馲馰馵骭骫魛鳪鳭鳧麀黽僦僔僗僨僳僛僪僝僤僓僬僰僯僣僠�".split(""); +for(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];} +D[225] = "����������������������������������������������������������������凘劀劁勩勫匰厬嘧嘕嘌嘒嗼嘏嘜嘁嘓嘂嗺嘝嘄嗿嗹墉塼墐墘墆墁塿塴墋塺墇墑墎塶墂墈塻墔墏壾奫嫜嫮嫥嫕嫪嫚嫭嫫嫳嫢嫠嫛嫬嫞嫝嫙嫨嫟孷寠����������������������������������寣屣嶂嶀嵽嶆嵺嶁嵷嶊嶉嶈嵾嵼嶍嵹嵿幘幙幓廘廑廗廎廜廕廙廒廔彄彃彯徶愬愨慁慞慱慳慒慓慲慬憀慴慔慺慛慥愻慪慡慖戩戧戫搫摍摛摝摴摶摲摳摽摵摦撦摎撂摞摜摋摓摠摐摿搿摬摫摙摥摷敳斠暡暠暟朅朄朢榱榶槉�".split(""); +for(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];} +D[226] = "����������������������������������������������������������������榠槎榖榰榬榼榑榙榎榧榍榩榾榯榿槄榽榤槔榹槊榚槏榳榓榪榡榞槙榗榐槂榵榥槆歊歍歋殞殟殠毃毄毾滎滵滱漃漥滸漷滻漮漉潎漙漚漧漘漻漒滭漊����������������������������������漶潳滹滮漭潀漰漼漵滫漇漎潃漅滽滶漹漜滼漺漟漍漞漈漡熇熐熉熀熅熂熏煻熆熁熗牄牓犗犕犓獃獍獑獌瑢瑳瑱瑵瑲瑧瑮甀甂甃畽疐瘖瘈瘌瘕瘑瘊瘔皸瞁睼瞅瞂睮瞀睯睾瞃碲碪碴碭碨硾碫碞碥碠碬碢碤禘禊禋禖禕禔禓�".split(""); +for(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];} +D[227] = "����������������������������������������������������������������禗禈禒禐稫穊稰稯稨稦窨窫窬竮箈箜箊箑箐箖箍箌箛箎箅箘劄箙箤箂粻粿粼粺綧綷緂綣綪緁緀緅綝緎緄緆緋緌綯綹綖綼綟綦綮綩綡緉罳翢翣翥翞����������������������������������耤聝聜膉膆膃膇膍膌膋舕蒗蒤蒡蒟蒺蓎蓂蒬蒮蒫蒹蒴蓁蓍蒪蒚蒱蓐蒝蒧蒻蒢蒔蓇蓌蒛蒩蒯蒨蓖蒘蒶蓏蒠蓗蓔蓒蓛蒰蒑虡蜳蜣蜨蝫蝀蜮蜞蜡蜙蜛蝃蜬蝁蜾蝆蜠蜲蜪蜭蜼蜒蜺蜱蜵蝂蜦蜧蜸蜤蜚蜰蜑裷裧裱裲裺裾裮裼裶裻�".split(""); +for(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];} +D[228] = "����������������������������������������������������������������裰裬裫覝覡覟覞觩觫觨誫誙誋誒誏誖谽豨豩賕賏賗趖踉踂跿踍跽踊踃踇踆踅跾踀踄輐輑輎輍鄣鄜鄠鄢鄟鄝鄚鄤鄡鄛酺酲酹酳銥銤鉶銛鉺銠銔銪銍����������������������������������銦銚銫鉹銗鉿銣鋮銎銂銕銢鉽銈銡銊銆銌銙銧鉾銇銩銝銋鈭隞隡雿靘靽靺靾鞃鞀鞂靻鞄鞁靿韎韍頖颭颮餂餀餇馝馜駃馹馻馺駂馽駇骱髣髧鬾鬿魠魡魟鳱鳲鳵麧僿儃儰僸儆儇僶僾儋儌僽儊劋劌勱勯噈噂噌嘵噁噊噉噆噘�".split(""); +for(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];} +D[229] = "����������������������������������������������������������������噚噀嘳嘽嘬嘾嘸嘪嘺圚墫墝墱墠墣墯墬墥墡壿嫿嫴嫽嫷嫶嬃嫸嬂嫹嬁嬇嬅嬏屧嶙嶗嶟嶒嶢嶓嶕嶠嶜嶡嶚嶞幩幝幠幜緳廛廞廡彉徲憋憃慹憱憰憢憉����������������������������������憛憓憯憭憟憒憪憡憍慦憳戭摮摰撖撠撅撗撜撏撋撊撌撣撟摨撱撘敶敺敹敻斲斳暵暰暩暲暷暪暯樀樆樗槥槸樕槱槤樠槿槬槢樛樝槾樧槲槮樔槷槧橀樈槦槻樍槼槫樉樄樘樥樏槶樦樇槴樖歑殥殣殢殦氁氀毿氂潁漦潾澇濆澒�".split(""); +for(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];} +D[230] = "����������������������������������������������������������������澍澉澌潢潏澅潚澖潶潬澂潕潲潒潐潗澔澓潝漀潡潫潽潧澐潓澋潩潿澕潣潷潪潻熲熯熛熰熠熚熩熵熝熥熞熤熡熪熜熧熳犘犚獘獒獞獟獠獝獛獡獚獙����������������������������������獢璇璉璊璆璁瑽璅璈瑼瑹甈甇畾瘥瘞瘙瘝瘜瘣瘚瘨瘛皜皝皞皛瞍瞏瞉瞈磍碻磏磌磑磎磔磈磃磄磉禚禡禠禜禢禛歶稹窲窴窳箷篋箾箬篎箯箹篊箵糅糈糌糋緷緛緪緧緗緡縃緺緦緶緱緰緮緟罶羬羰羭翭翫翪翬翦翨聤聧膣膟�".split(""); +for(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];} +D[231] = "����������������������������������������������������������������膞膕膢膙膗舖艏艓艒艐艎艑蔤蔻蔏蔀蔩蔎蔉蔍蔟蔊蔧蔜蓻蔫蓺蔈蔌蓴蔪蓲蔕蓷蓫蓳蓼蔒蓪蓩蔖蓾蔨蔝蔮蔂蓽蔞蓶蔱蔦蓧蓨蓰蓯蓹蔘蔠蔰蔋蔙蔯虢����������������������������������蝖蝣蝤蝷蟡蝳蝘蝔蝛蝒蝡蝚蝑蝞蝭蝪蝐蝎蝟蝝蝯蝬蝺蝮蝜蝥蝏蝻蝵蝢蝧蝩衚褅褌褔褋褗褘褙褆褖褑褎褉覢覤覣觭觰觬諏諆誸諓諑諔諕誻諗誾諀諅諘諃誺誽諙谾豍貏賥賟賙賨賚賝賧趠趜趡趛踠踣踥踤踮踕踛踖踑踙踦踧�".split(""); +for(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];} +D[232] = "����������������������������������������������������������������踔踒踘踓踜踗踚輬輤輘輚輠輣輖輗遳遰遯遧遫鄯鄫鄩鄪鄲鄦鄮醅醆醊醁醂醄醀鋐鋃鋄鋀鋙銶鋏鋱鋟鋘鋩鋗鋝鋌鋯鋂鋨鋊鋈鋎鋦鋍鋕鋉鋠鋞鋧鋑鋓����������������������������������銵鋡鋆銴镼閬閫閮閰隤隢雓霅霈霂靚鞊鞎鞈韐韏頞頝頦頩頨頠頛頧颲餈飺餑餔餖餗餕駜駍駏駓駔駎駉駖駘駋駗駌骳髬髫髳髲髱魆魃魧魴魱魦魶魵魰魨魤魬鳼鳺鳽鳿鳷鴇鴀鳹鳻鴈鴅鴄麃黓鼏鼐儜儓儗儚儑凞匴叡噰噠噮�".split(""); +for(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];} +D[233] = "����������������������������������������������������������������噳噦噣噭噲噞噷圜圛壈墽壉墿墺壂墼壆嬗嬙嬛嬡嬔嬓嬐嬖嬨嬚嬠嬞寯嶬嶱嶩嶧嶵嶰嶮嶪嶨嶲嶭嶯嶴幧幨幦幯廩廧廦廨廥彋徼憝憨憖懅憴懆懁懌憺����������������������������������憿憸憌擗擖擐擏擉撽撉擃擛擳擙攳敿敼斢曈暾曀曊曋曏暽暻暺曌朣樴橦橉橧樲橨樾橝橭橶橛橑樨橚樻樿橁橪橤橐橏橔橯橩橠樼橞橖橕橍橎橆歕歔歖殧殪殫毈毇氄氃氆澭濋澣濇澼濎濈潞濄澽澞濊澨瀄澥澮澺澬澪濏澿澸�".split(""); +for(j = 0; j != D[233].length; ++j) if(D[233][j].charCodeAt(0) !== 0xFFFD) { e[D[233][j]] = 59648 + j; d[59648 + j] = D[233][j];} +D[234] = "����������������������������������������������������������������澢濉澫濍澯澲澰燅燂熿熸燖燀燁燋燔燊燇燏熽燘熼燆燚燛犝犞獩獦獧獬獥獫獪瑿璚璠璔璒璕璡甋疀瘯瘭瘱瘽瘳瘼瘵瘲瘰皻盦瞚瞝瞡瞜瞛瞢瞣瞕瞙����������������������������������瞗磝磩磥磪磞磣磛磡磢磭磟磠禤穄穈穇窶窸窵窱窷篞篣篧篝篕篥篚篨篹篔篪篢篜篫篘篟糒糔糗糐糑縒縡縗縌縟縠縓縎縜縕縚縢縋縏縖縍縔縥縤罃罻罼罺羱翯耪耩聬膱膦膮膹膵膫膰膬膴膲膷膧臲艕艖艗蕖蕅蕫蕍蕓蕡蕘�".split(""); +for(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];} +D[235] = "����������������������������������������������������������������蕀蕆蕤蕁蕢蕄蕑蕇蕣蔾蕛蕱蕎蕮蕵蕕蕧蕠薌蕦蕝蕔蕥蕬虣虥虤螛螏螗螓螒螈螁螖螘蝹螇螣螅螐螑螝螄螔螜螚螉褞褦褰褭褮褧褱褢褩褣褯褬褟觱諠����������������������������������諢諲諴諵諝謔諤諟諰諈諞諡諨諿諯諻貑貒貐賵賮賱賰賳赬赮趥趧踳踾踸蹀蹅踶踼踽蹁踰踿躽輶輮輵輲輹輷輴遶遹遻邆郺鄳鄵鄶醓醐醑醍醏錧錞錈錟錆錏鍺錸錼錛錣錒錁鍆錭錎錍鋋錝鋺錥錓鋹鋷錴錂錤鋿錩錹錵錪錔錌�".split(""); +for(j = 0; j != D[235].length; ++j) if(D[235][j].charCodeAt(0) !== 0xFFFD) { e[D[235][j]] = 60160 + j; d[60160 + j] = D[235][j];} +D[236] = "����������������������������������������������������������������錋鋾錉錀鋻錖閼闍閾閹閺閶閿閵閽隩雔霋霒霐鞙鞗鞔韰韸頵頯頲餤餟餧餩馞駮駬駥駤駰駣駪駩駧骹骿骴骻髶髺髹髷鬳鮀鮅鮇魼魾魻鮂鮓鮒鮐魺鮕����������������������������������魽鮈鴥鴗鴠鴞鴔鴩鴝鴘鴢鴐鴙鴟麈麆麇麮麭黕黖黺鼒鼽儦儥儢儤儠儩勴嚓嚌嚍嚆嚄嚃噾嚂噿嚁壖壔壏壒嬭嬥嬲嬣嬬嬧嬦嬯嬮孻寱寲嶷幬幪徾徻懃憵憼懧懠懥懤懨懞擯擩擣擫擤擨斁斀斶旚曒檍檖檁檥檉檟檛檡檞檇檓檎�".split(""); +for(j = 0; j != D[236].length; ++j) if(D[236][j].charCodeAt(0) !== 0xFFFD) { e[D[236][j]] = 60416 + j; d[60416 + j] = D[236][j];} +D[237] = "����������������������������������������������������������������檕檃檨檤檑橿檦檚檅檌檒歛殭氉濌澩濴濔濣濜濭濧濦濞濲濝濢濨燡燱燨燲燤燰燢獳獮獯璗璲璫璐璪璭璱璥璯甐甑甒甏疄癃癈癉癇皤盩瞵瞫瞲瞷瞶����������������������������������瞴瞱瞨矰磳磽礂磻磼磲礅磹磾礄禫禨穜穛穖穘穔穚窾竀竁簅簏篲簀篿篻簎篴簋篳簂簉簃簁篸篽簆篰篱簐簊糨縭縼繂縳顈縸縪繉繀繇縩繌縰縻縶繄縺罅罿罾罽翴翲耬膻臄臌臊臅臇膼臩艛艚艜薃薀薏薧薕薠薋薣蕻薤薚薞�".split(""); +for(j = 0; j != D[237].length; ++j) if(D[237][j].charCodeAt(0) !== 0xFFFD) { e[D[237][j]] = 60672 + j; d[60672 + j] = D[237][j];} +D[238] = "����������������������������������������������������������������蕷蕼薉薡蕺蕸蕗薎薖薆薍薙薝薁薢薂薈薅蕹蕶薘薐薟虨螾螪螭蟅螰螬螹螵螼螮蟉蟃蟂蟌螷螯蟄蟊螴螶螿螸螽蟞螲褵褳褼褾襁襒褷襂覭覯覮觲觳謞����������������������������������謘謖謑謅謋謢謏謒謕謇謍謈謆謜謓謚豏豰豲豱豯貕貔賹赯蹎蹍蹓蹐蹌蹇轃轀邅遾鄸醚醢醛醙醟醡醝醠鎡鎃鎯鍤鍖鍇鍼鍘鍜鍶鍉鍐鍑鍠鍭鎏鍌鍪鍹鍗鍕鍒鍏鍱鍷鍻鍡鍞鍣鍧鎀鍎鍙闇闀闉闃闅閷隮隰隬霠霟霘霝霙鞚鞡鞜�".split(""); +for(j = 0; j != D[238].length; ++j) if(D[238][j].charCodeAt(0) !== 0xFFFD) { e[D[238][j]] = 60928 + j; d[60928 + j] = D[238][j];} +D[239] = "����������������������������������������������������������������鞞鞝韕韔韱顁顄顊顉顅顃餥餫餬餪餳餲餯餭餱餰馘馣馡騂駺駴駷駹駸駶駻駽駾駼騃骾髾髽鬁髼魈鮚鮨鮞鮛鮦鮡鮥鮤鮆鮢鮠鮯鴳鵁鵧鴶鴮鴯鴱鴸鴰����������������������������������鵅鵂鵃鴾鴷鵀鴽翵鴭麊麉麍麰黈黚黻黿鼤鼣鼢齔龠儱儭儮嚘嚜嚗嚚嚝嚙奰嬼屩屪巀幭幮懘懟懭懮懱懪懰懫懖懩擿攄擽擸攁攃擼斔旛曚曛曘櫅檹檽櫡櫆檺檶檷櫇檴檭歞毉氋瀇瀌瀍瀁瀅瀔瀎濿瀀濻瀦濼濷瀊爁燿燹爃燽獶�".split(""); +for(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];} +D[240] = "����������������������������������������������������������������璸瓀璵瓁璾璶璻瓂甔甓癜癤癙癐癓癗癚皦皽盬矂瞺磿礌礓礔礉礐礒礑禭禬穟簜簩簙簠簟簭簝簦簨簢簥簰繜繐繖繣繘繢繟繑繠繗繓羵羳翷翸聵臑臒����������������������������������臐艟艞薴藆藀藃藂薳薵薽藇藄薿藋藎藈藅薱薶藒蘤薸薷薾虩蟧蟦蟢蟛蟫蟪蟥蟟蟳蟤蟔蟜蟓蟭蟘蟣螤蟗蟙蠁蟴蟨蟝襓襋襏襌襆襐襑襉謪謧謣謳謰謵譇謯謼謾謱謥謷謦謶謮謤謻謽謺豂豵貙貘貗賾贄贂贀蹜蹢蹠蹗蹖蹞蹥蹧�".split(""); +for(j = 0; j != D[240].length; ++j) if(D[240][j].charCodeAt(0) !== 0xFFFD) { e[D[240][j]] = 61440 + j; d[61440 + j] = D[240][j];} +D[241] = "����������������������������������������������������������������蹛蹚蹡蹝蹩蹔轆轇轈轋鄨鄺鄻鄾醨醥醧醯醪鎵鎌鎒鎷鎛鎝鎉鎧鎎鎪鎞鎦鎕鎈鎙鎟鎍鎱鎑鎲鎤鎨鎴鎣鎥闒闓闑隳雗雚巂雟雘雝霣霢霥鞬鞮鞨鞫鞤鞪����������������������������������鞢鞥韗韙韖韘韺顐顑顒颸饁餼餺騏騋騉騍騄騑騊騅騇騆髀髜鬈鬄鬅鬩鬵魊魌魋鯇鯆鯃鮿鯁鮵鮸鯓鮶鯄鮹鮽鵜鵓鵏鵊鵛鵋鵙鵖鵌鵗鵒鵔鵟鵘鵚麎麌黟鼁鼀鼖鼥鼫鼪鼩鼨齌齕儴儵劖勷厴嚫嚭嚦嚧嚪嚬壚壝壛夒嬽嬾嬿巃幰�".split(""); +for(j = 0; j != D[241].length; ++j) if(D[241][j].charCodeAt(0) !== 0xFFFD) { e[D[241][j]] = 61696 + j; d[61696 + j] = D[241][j];} +D[242] = "����������������������������������������������������������������徿懻攇攐攍攉攌攎斄旞旝曞櫧櫠櫌櫑櫙櫋櫟櫜櫐櫫櫏櫍櫞歠殰氌瀙瀧瀠瀖瀫瀡瀢瀣瀩瀗瀤瀜瀪爌爊爇爂爅犥犦犤犣犡瓋瓅璷瓃甖癠矉矊矄矱礝礛����������������������������������礡礜礗礞禰穧穨簳簼簹簬簻糬糪繶繵繸繰繷繯繺繲繴繨罋罊羃羆羷翽翾聸臗臕艤艡艣藫藱藭藙藡藨藚藗藬藲藸藘藟藣藜藑藰藦藯藞藢蠀蟺蠃蟶蟷蠉蠌蠋蠆蟼蠈蟿蠊蠂襢襚襛襗襡襜襘襝襙覈覷覶觶譐譈譊譀譓譖譔譋譕�".split(""); +for(j = 0; j != D[242].length; ++j) if(D[242][j].charCodeAt(0) !== 0xFFFD) { e[D[242][j]] = 61952 + j; d[61952 + j] = D[242][j];} +D[243] = "����������������������������������������������������������������譑譂譒譗豃豷豶貚贆贇贉趬趪趭趫蹭蹸蹳蹪蹯蹻軂轒轑轏轐轓辴酀鄿醰醭鏞鏇鏏鏂鏚鏐鏹鏬鏌鏙鎩鏦鏊鏔鏮鏣鏕鏄鏎鏀鏒鏧镽闚闛雡霩霫霬霨霦����������������������������������鞳鞷鞶韝韞韟顜顙顝顗颿颽颻颾饈饇饃馦馧騚騕騥騝騤騛騢騠騧騣騞騜騔髂鬋鬊鬎鬌鬷鯪鯫鯠鯞鯤鯦鯢鯰鯔鯗鯬鯜鯙鯥鯕鯡鯚鵷鶁鶊鶄鶈鵱鶀鵸鶆鶋鶌鵽鵫鵴鵵鵰鵩鶅鵳鵻鶂鵯鵹鵿鶇鵨麔麑黀黼鼭齀齁齍齖齗齘匷嚲�".split(""); +for(j = 0; j != D[243].length; ++j) if(D[243][j].charCodeAt(0) !== 0xFFFD) { e[D[243][j]] = 62208 + j; d[62208 + j] = D[243][j];} +D[244] = "����������������������������������������������������������������嚵嚳壣孅巆巇廮廯忀忁懹攗攖攕攓旟曨曣曤櫳櫰櫪櫨櫹櫱櫮櫯瀼瀵瀯瀷瀴瀱灂瀸瀿瀺瀹灀瀻瀳灁爓爔犨獽獼璺皫皪皾盭矌矎矏矍矲礥礣礧礨礤礩����������������������������������禲穮穬穭竷籉籈籊籇籅糮繻繾纁纀羺翿聹臛臙舋艨艩蘢藿蘁藾蘛蘀藶蘄蘉蘅蘌藽蠙蠐蠑蠗蠓蠖襣襦覹觷譠譪譝譨譣譥譧譭趮躆躈躄轙轖轗轕轘轚邍酃酁醷醵醲醳鐋鐓鏻鐠鐏鐔鏾鐕鐐鐨鐙鐍鏵鐀鏷鐇鐎鐖鐒鏺鐉鏸鐊鏿�".split(""); +for(j = 0; j != D[244].length; ++j) if(D[244][j].charCodeAt(0) !== 0xFFFD) { e[D[244][j]] = 62464 + j; d[62464 + j] = D[244][j];} +D[245] = "����������������������������������������������������������������鏼鐌鏶鐑鐆闞闠闟霮霯鞹鞻韽韾顠顢顣顟飁飂饐饎饙饌饋饓騲騴騱騬騪騶騩騮騸騭髇髊髆鬐鬒鬑鰋鰈鯷鰅鰒鯸鱀鰇鰎鰆鰗鰔鰉鶟鶙鶤鶝鶒鶘鶐鶛����������������������������������鶠鶔鶜鶪鶗鶡鶚鶢鶨鶞鶣鶿鶩鶖鶦鶧麙麛麚黥黤黧黦鼰鼮齛齠齞齝齙龑儺儹劘劗囃嚽嚾孈孇巋巏廱懽攛欂櫼欃櫸欀灃灄灊灈灉灅灆爝爚爙獾甗癪矐礭礱礯籔籓糲纊纇纈纋纆纍罍羻耰臝蘘蘪蘦蘟蘣蘜蘙蘧蘮蘡蘠蘩蘞蘥�".split(""); +for(j = 0; j != D[245].length; ++j) if(D[245][j].charCodeAt(0) !== 0xFFFD) { e[D[245][j]] = 62720 + j; d[62720 + j] = D[245][j];} +D[246] = "����������������������������������������������������������������蠩蠝蠛蠠蠤蠜蠫衊襭襩襮襫觺譹譸譅譺譻贐贔趯躎躌轞轛轝酆酄酅醹鐿鐻鐶鐩鐽鐼鐰鐹鐪鐷鐬鑀鐱闥闤闣霵霺鞿韡顤飉飆飀饘饖騹騽驆驄驂驁騺����������������������������������騿髍鬕鬗鬘鬖鬺魒鰫鰝鰜鰬鰣鰨鰩鰤鰡鶷鶶鶼鷁鷇鷊鷏鶾鷅鷃鶻鶵鷎鶹鶺鶬鷈鶱鶭鷌鶳鷍鶲鹺麜黫黮黭鼛鼘鼚鼱齎齥齤龒亹囆囅囋奱孋孌巕巑廲攡攠攦攢欋欈欉氍灕灖灗灒爞爟犩獿瓘瓕瓙瓗癭皭礵禴穰穱籗籜籙籛籚�".split(""); +for(j = 0; j != D[246].length; ++j) if(D[246][j].charCodeAt(0) !== 0xFFFD) { e[D[246][j]] = 62976 + j; d[62976 + j] = D[246][j];} +D[247] = "����������������������������������������������������������������糴糱纑罏羇臞艫蘴蘵蘳蘬蘲蘶蠬蠨蠦蠪蠥襱覿覾觻譾讄讂讆讅譿贕躕躔躚躒躐躖躗轠轢酇鑌鑐鑊鑋鑏鑇鑅鑈鑉鑆霿韣顪顩飋饔饛驎驓驔驌驏驈驊����������������������������������驉驒驐髐鬙鬫鬻魖魕鱆鱈鰿鱄鰹鰳鱁鰼鰷鰴鰲鰽鰶鷛鷒鷞鷚鷋鷐鷜鷑鷟鷩鷙鷘鷖鷵鷕鷝麶黰鼵鼳鼲齂齫龕龢儽劙壨壧奲孍巘蠯彏戁戃戄攩攥斖曫欑欒欏毊灛灚爢玂玁玃癰矔籧籦纕艬蘺虀蘹蘼蘱蘻蘾蠰蠲蠮蠳襶襴襳觾�".split(""); +for(j = 0; j != D[247].length; ++j) if(D[247][j].charCodeAt(0) !== 0xFFFD) { e[D[247][j]] = 63232 + j; d[63232 + j] = D[247][j];} +D[248] = "����������������������������������������������������������������讌讎讋讈豅贙躘轤轣醼鑢鑕鑝鑗鑞韄韅頀驖驙鬞鬟鬠鱒鱘鱐鱊鱍鱋鱕鱙鱌鱎鷻鷷鷯鷣鷫鷸鷤鷶鷡鷮鷦鷲鷰鷢鷬鷴鷳鷨鷭黂黐黲黳鼆鼜鼸鼷鼶齃齏����������������������������������齱齰齮齯囓囍孎屭攭曭曮欓灟灡灝灠爣瓛瓥矕礸禷禶籪纗羉艭虃蠸蠷蠵衋讔讕躞躟躠躝醾醽釂鑫鑨鑩雥靆靃靇韇韥驞髕魙鱣鱧鱦鱢鱞鱠鸂鷾鸇鸃鸆鸅鸀鸁鸉鷿鷽鸄麠鼞齆齴齵齶囔攮斸欘欙欗欚灢爦犪矘矙礹籩籫糶纚�".split(""); +for(j = 0; j != D[248].length; ++j) if(D[248][j].charCodeAt(0) !== 0xFFFD) { e[D[248][j]] = 63488 + j; d[63488 + j] = D[248][j];} +D[249] = "����������������������������������������������������������������纘纛纙臠臡虆虇虈襹襺襼襻觿讘讙躥躤躣鑮鑭鑯鑱鑳靉顲饟鱨鱮鱭鸋鸍鸐鸏鸒鸑麡黵鼉齇齸齻齺齹圞灦籯蠼趲躦釃鑴鑸鑶鑵驠鱴鱳鱱鱵鸔鸓黶鼊����������������������������������龤灨灥糷虪蠾蠽蠿讞貜躩軉靋顳顴飌饡馫驤驦驧鬤鸕鸗齈戇欞爧虌躨钂钀钁驩驨鬮鸙爩虋讟钃鱹麷癵驫鱺鸝灩灪麤齾齉龘碁銹裏墻恒粧嫺╔╦╗╠╬╣╚╩╝╒╤╕╞╪╡╘╧╛╓╥╖╟╫╢╙╨╜║═╭╮╰╯▓�".split(""); +for(j = 0; j != D[249].length; ++j) if(D[249][j].charCodeAt(0) !== 0xFFFD) { e[D[249][j]] = 63744 + j; d[63744 + j] = D[249][j];} +return {"enc": e, "dec": d }; })(); +cptable[1026] = (function(){ var d = "\u0000\u0001\u0002\u0003œ\t†—Ž\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013…\b‡\u0018\u0019’\u001c\u001d\u001e\u001f€‚ƒ„\n\u0017\u001bˆ‰Š‹Œ\u0005\u0006\u0007‘\u0016“”•–\u0004˜™š›\u0014\u0015ž\u001a  âäàáãå{ñÇ.<(+!&éêëèíîïìßĞİ*);^-/ÂÄÀÁÃÅ[Ñş,%_>?øÉÊËÈÍÎÏÌı:ÖŞ'=ÜØabcdefghi«»}`¦±°jklmnopqrªºæ¸Æ¤µöstuvwxyz¡¿]$@®¢£¥·©§¶¼½¾¬|¯¨´×çABCDEFGHI­ô~òóõğJKLMNOPQR¹û\\ùúÿü÷STUVWXYZ²Ô#ÒÓÕ0123456789³Û\"Ùڟ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +cptable[1250] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€�‚�„…†‡�‰Š‹ŚŤŽŹ�‘’“”•–—�™š›śťžź ˇ˘Ł¤Ą¦§¨©Ş«¬­®Ż°±˛ł´µ¶·¸ąş»Ľ˝ľżŔÁÂĂÄĹĆÇČÉĘËĚÍÎĎĐŃŇÓÔŐÖ×ŘŮÚŰÜÝŢßŕáâăäĺćçčéęëěíîďđńňóôőö÷řůúűüýţ˙", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +cptable[1251] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ЂЃ‚ѓ„…†‡€‰Љ‹ЊЌЋЏђ‘’“”•–—�™љ›њќћџ ЎўЈ¤Ґ¦§Ё©Є«¬­®Ї°±Ііґµ¶·ё№є»јЅѕїАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +cptable[1252] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€�‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‘’“”•–—˜™š›œ�žŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +cptable[1253] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€�‚ƒ„…†‡�‰�‹�����‘’“”•–—�™�›���� ΅Ά£¤¥¦§¨©�«¬­®―°±²³΄µ¶·ΈΉΊ»Ό½ΎΏΐΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡ�ΣΤΥΦΧΨΩΪΫάέήίΰαβγδεζηθικλμνξοπρςστυφχψωϊϋόύώ�", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +cptable[1254] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€�‚ƒ„…†‡ˆ‰Š‹Œ����‘’“”•–—˜™š›œ��Ÿ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏĞÑÒÓÔÕÖ×ØÙÚÛÜİŞßàáâãäåæçèéêëìíîïğñòóôõö÷øùúûüışÿ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +cptable[1255] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€�‚ƒ„…†‡ˆ‰�‹�����‘’“”•–—˜™�›���� ¡¢£₪¥¦§¨©×«¬­®¯°±²³´µ¶·¸¹÷»¼½¾¿ְֱֲֳִֵֶַָֹ�ֻּֽ־ֿ׀ׁׂ׃װױײ׳״�������אבגדהוזחטיךכלםמןנסעףפץצקרשת��‎‏�", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +cptable[1256] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€پ‚ƒ„…†‡ˆ‰ٹ‹Œچژڈگ‘’“”•–—ک™ڑ›œ‌‍ں ،¢£¤¥¦§¨©ھ«¬­®¯°±²³´µ¶·¸¹؛»¼½¾؟ہءآأؤإئابةتثجحخدذرزسشصض×طظعغـفقكàلâمنهوçèéêëىيîïًٌٍَôُِ÷ّùْûü‎‏ے", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +cptable[1257] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€�‚�„…†‡�‰�‹�¨ˇ¸�‘’“”•–—�™�›�¯˛� �¢£¤�¦§Ø©Ŗ«¬­®Æ°±²³´µ¶·ø¹ŗ»¼½¾æĄĮĀĆÄÅĘĒČÉŹĖĢĶĪĻŠŃŅÓŌÕÖ×ŲŁŚŪÜŻŽßąįāćäåęēčéźėģķīļšńņóōõö÷ųłśūüżž˙", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +cptable[1258] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€�‚ƒ„…†‡ˆ‰�‹Œ����‘’“”•–—˜™�›œ��Ÿ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂĂÄÅÆÇÈÉÊË̀ÍÎÏĐÑ̉ÓÔƠÖ×ØÙÚÛÜỮßàáâăäåæçèéêë́íîïđṇ̃óôơö÷øùúûüư₫ÿ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +cptable[47451] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜ¢£¥ßƒáíóúñѪº¿⌐¬½¼¡«»ãõØøœŒÀÃÕ¨´†¶©®™ijIJאבגדהוזחטיכלמנסעפצקרשתןךםףץ§∧∞αβΓπΣσµτΦΘΩδ∮φ∈∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²³¯", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +cptable[10000] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤‹›fifl‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +cptable[10006] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~Ĺ²É³ÖÜ΅àâä΄¨çéèê룙î‰ôö¦­ùûü†ΓΔΘΛΞΠß®©ΣΪ§≠°·Α±≤≥¥ΒΕΖΗΙΚΜΦΫΨΩάΝ¬ΟΡ≈Τ«»… ΥΧΆΈœ–―“”‘’÷ΉΊΌΎέήίόΏύαβψδεφγηιξκλμνοπώρστθωςχυζϊϋΐΰ�", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +cptable[10007] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ†°¢£§•¶І®©™Ђђ≠Ѓѓ∞±≤≥іµ∂ЈЄєЇїЉљЊњјЅ¬√ƒ≈∆«»… ЋћЌќѕ–—“”‘’÷„ЎўЏџ№Ёёяабвгдежзийклмнопрстуфхцчшщъыьэю¤", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +cptable[10029] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÄĀāÉĄÖÜáąČäčĆć鏟ĎíďĒēĖóėôöõúĚěü†°Ę£§•¶ß®©™ę¨≠ģĮįĪ≤≥īĶ∂∑łĻļĽľĹĺŅņѬ√ńŇ∆«»… ňŐÕőŌ–—“”‘’÷◊ōŔŕŘ‹›řŖŗŠ‚„šŚśÁŤťÍŽžŪÓÔūŮÚůŰűŲųÝýķŻŁżĢˇ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +cptable[10079] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûüÝ°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤ÐðÞþý·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +cptable[10081] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ÆØ∞±≤≥¥µ∂∑∏π∫ªºΩæø¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸĞğİıŞş‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔ�ÒÚÛÙ�ˆ˜¯˘˙˚¸˝˛ˇ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +cptable[28591] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +cptable[28592] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ Ą˘Ł¤ĽŚ§¨ŠŞŤŹ­ŽŻ°ą˛ł´ľśˇ¸šşťź˝žżŔÁÂĂÄĹĆÇČÉĘËĚÍÎĎĐŃŇÓÔŐÖ×ŘŮÚŰÜÝŢßŕáâăäĺćçčéęëěíîďđńňóôőö÷řůúűüýţ˙", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +cptable[28593] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ Ħ˘£¤�Ĥ§¨İŞĞĴ­�Ż°ħ²³´µĥ·¸ışğĵ½�żÀÁÂ�ÄĊĈÇÈÉÊËÌÍÎÏ�ÑÒÓÔĠÖ×ĜÙÚÛÜŬŜßàáâ�äċĉçèéêëìíîï�ñòóôġö÷ĝùúûüŭŝ˙", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +cptable[28594] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ĄĸŖ¤ĨĻ§¨ŠĒĢŦ­Ž¯°ą˛ŗ´ĩļˇ¸šēģŧŊžŋĀÁÂÃÄÅÆĮČÉĘËĖÍÎĪĐŅŌĶÔÕÖ×ØŲÚÛÜŨŪßāáâãäåæįčéęëėíîīđņōķôõö÷øųúûüũū˙", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +cptable[28595] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ЁЂЃЄЅІЇЈЉЊЋЌ­ЎЏАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя№ёђѓєѕіїјљњћќ§ўџ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +cptable[28596] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ���¤�������،­�������������؛���؟�ءآأؤإئابةتثجحخدذرزسشصضطظعغ�����ـفقكلمنهوىيًٌٍَُِّْ�������������", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +cptable[28597] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ‘’£€₯¦§¨©ͺ«¬­�―°±²³΄΅Ά·ΈΉΊ»Ό½ΎΏΐΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡ�ΣΤΥΦΧΨΩΪΫάέήίΰαβγδεζηθικλμνξοπρςστυφχψωϊϋόύώ�", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +cptable[28598] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ �¢£¤¥¦§¨©×«¬­®¯°±²³´µ¶·¸¹÷»¼½¾��������������������������������‗אבגדהוזחטיךכלםמןנסעףפץצקרשת��‎‏�", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +cptable[28599] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏĞÑÒÓÔÕÖ×ØÙÚÛÜİŞßàáâãäåæçèéêëìíîïğñòóôõö÷øùúûüışÿ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +cptable[28600] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ĄĒĢĪĨĶ§ĻĐŠŦŽ­ŪŊ°ąēģīĩķ·ļđšŧž―ūŋĀÁÂÃÄÅÆĮČÉĘËĖÍÎÏÐŅŌÓÔÕÖŨØŲÚÛÜÝÞßāáâãäåæįčéęëėíîïðņōóôõöũøųúûüýþĸ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +cptable[28601] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู����฿เแโใไๅๆ็่้๊๋์ํ๎๏๐๑๒๓๔๕๖๗๘๙๚๛����", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +cptable[28603] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ”¢£¤„¦§Ø©Ŗ«¬­®Æ°±²³“µ¶·ø¹ŗ»¼½¾æĄĮĀĆÄÅĘĒČÉŹĖĢĶĪĻŠŃŅÓŌÕÖ×ŲŁŚŪÜŻŽßąįāćäåęēčéźėģķīļšńņóōõö÷ųłśūüżž’", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +cptable[28604] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ Ḃḃ£ĊċḊ§Ẁ©ẂḋỲ­®ŸḞḟĠġṀṁ¶ṖẁṗẃṠỳẄẅṡÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏŴÑÒÓÔÕÖṪØÙÚÛÜÝŶßàáâãäåæçèéêëìíîïŵñòóôõöṫøùúûüýŷÿ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +cptable[28605] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£€¥Š§š©ª«¬­®¯°±²³Žµ¶·ž¹º»ŒœŸ¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +cptable[28606] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ĄąŁ€„Š§š©Ș«Ź­źŻ°±ČłŽ”¶·žčș»ŒœŸżÀÁÂĂÄĆÆÇÈÉÊËÌÍÎÏĐŃÒÓÔŐÖŚŰÙÚÛÜĘȚßàáâăäćæçèéêëìíîïđńòóôőöśűùúûüęțÿ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +cptable[708] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~│┤éâ╡à╢çêëèïî╖╕╣║╗╝ô╜╛ûù┐└š›œžŸ┴┬├¤─┼╞╟╚╔╩،╦«»░▒▓╠═╬╧╨╤╥╙؛╘╒╓؟╫ءآأؤإئابةتثجحخدذرزسشصضطظعغ█▄▌▐▀ـفقكلمنهوىيًٌٍَُِّْ╪┘┌µ£■ ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +cptable[720] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€éâ„à†çêëèïّْô¤ـûùءآأؤ£إئابةتثجحخدذرزسشص«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀ضطظعغفµقكلمنهوىي≡ًٌٍَُِ≈°∙·√ⁿ²■ ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +cptable[808] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмноп░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀рстуфхцчшщъыьэюяЁёЄєЇїЎў°∙·√№€■ ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +cptable[858] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùÿÖÜø£Ø׃áíóúñѪº¿®¬½¼¡«»░▒▓│┤ÁÂÀ©╣║╗╝¢¥┐└┴┬├─┼ãÃ╚╔╩╦╠═╬¤ðÐÊËÈ€ÍÎÏ┘┌█▄¦Ì▀ÓßÔÒõÕµþÞÚÛÙýݯ´­±‗¾¶§÷¸°¨·¹³²■ ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +cptable[870] = (function(){ var d = "\u0000\u0001\u0002\u0003œ\t†—Ž\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013…\b‡\u0018\u0019’\u001c\u001d\u001e\u001f€‚ƒ„\n\u0017\u001bˆ‰Š‹Œ\u0005\u0006\u0007‘\u0016“”•–\u0004˜™š›\u0014\u0015ž\u001a  âäţáăčçć[.<(+!&éęëůíîľĺß]$*);^-/ÂÄ˝ÁĂČÇĆ|,%_>?ˇÉĘËŮÍÎĽĹ`:#@'=\"˘abcdefghiśňđýřş°jklmnopqrłńš¸˛¤ą~stuvwxyzŚŇĐÝŘŞ˙ĄżŢŻ§žźŽŹŁŃŠ¨´×{ABCDEFGHI­ôöŕóő}JKLMNOPQRĚűüťúě\\÷STUVWXYZďÔÖŔÓŐ0123456789ĎŰܫڟ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +cptable[872] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ђЂѓЃёЁєЄѕЅіІїЇјЈљЉњЊћЋќЌўЎџЏюЮъЪаАбБцЦдДеЕфФгГ«»░▒▓│┤хХиИ╣║╗╝йЙ┐└┴┬├─┼кК╚╔╩╦╠═╬€лЛмМнНоОп┘┌█▄Пя▀ЯрРсСтТуУжЖвВьЬ№­ыЫзЗшШэЭщЩчЧ§■ ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +cptable[1010] = (function(){ var d = "�\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"£$%&’()*+,-./0123456789:;<=>?àABCDEFGHIJKLMNOPQRSTUVWXYZ°ç§ˆ_µabcdefghijklmnopqrstuvwxyzéùè¨���������������������������������������������������������������������������������������������������������������������������������", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +cptable[1047] = (function(){ var d = "\u0000\u0001\u0002\u0003œ\t†—Ž\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\n\b‡\u0018\u0019’\u001c\u001d\u001e\u001f€‚ƒ„…\u0017\u001bˆ‰Š‹Œ\u0005\u0006\u0007‘\u0016“”•–\u0004˜™š›\u0014\u0015ž\u001a  âäàáãåçñ¢.<(+|&éêëèíîïìß!$*);^-/ÂÄÀÁÃÅÇѦ,%_>?øÉÊËÈÍÎÏÌ`:#@'=\"Øabcdefghi«»ðýþ±°jklmnopqrªºæ¸Æ¤µ~stuvwxyz¡¿Ð[Þ®¬£¥·©§¶¼½¾Ý¨¯]´×{ABCDEFGHI­ôöòóõ}JKLMNOPQR¹ûüùúÿ\\÷STUVWXYZ²ÔÖÒÓÕ0123456789³ÛÜÙڟ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +cptable[1132] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~���������������������������������ກຂຄງຈສຊຍດຕຖທນບປຜຝພຟມຢຣລວຫອຮ���ຯະາຳິີຶືຸູຼັົຽ���ເແໂໃໄ່້໊໋໌ໍໆ�ໜໝ₭����������������໐໑໒໓໔໕໖໗໘໙��¢¬¦ ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +cptable[1140] = (function(){ var d = "\u0000\u0001\u0002\u0003œ\t†—Ž\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013…\b‡\u0018\u0019’\u001c\u001d\u001e\u001f€‚ƒ„\n\u0017\u001bˆ‰Š‹Œ\u0005\u0006\u0007‘\u0016“”•–\u0004˜™š›\u0014\u0015ž\u001a  âäàáãåçñ¢.<(+|&éêëèíîïìß!$*);¬-/ÂÄÀÁÃÅÇѦ,%_>?øÉÊËÈÍÎÏÌ`:#@'=\"Øabcdefghi«»ðýþ±°jklmnopqrªºæ¸Æ€µ~stuvwxyz¡¿ÐÝÞ®^£¥·©§¶¼½¾[]¯¨´×{ABCDEFGHI­ôöòóõ}JKLMNOPQR¹ûüùúÿ\\÷STUVWXYZ²ÔÖÒÓÕ0123456789³ÛÜÙڟ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +cptable[1141] = (function(){ var d = "\u0000\u0001\u0002\u0003œ\t†—Ž\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013…\b‡\u0018\u0019’\u001c\u001d\u001e\u001f€‚ƒ„\n\u0017\u001bˆ‰Š‹Œ\u0005\u0006\u0007‘\u0016“”•–\u0004˜™š›\u0014\u0015ž\u001a  â{àáãåçñÄ.<(+!&éêëèíîïì~Ü$*);^-/Â[ÀÁÃÅÇÑö,%_>?øÉÊËÈÍÎÏÌ`:#§'=\"Øabcdefghi«»ðýþ±°jklmnopqrªºæ¸Æ€µßstuvwxyz¡¿ÐÝÞ®¢£¥·©@¶¼½¾¬|¯¨´×äABCDEFGHI­ô¦òóõüJKLMNOPQR¹û}ùúÿÖ÷STUVWXYZ²Ô\\ÒÓÕ0123456789³Û]Ùڟ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +cptable[1142] = (function(){ var d = "\u0000\u0001\u0002\u0003œ\t†—Ž\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013…\b‡\u0018\u0019’\u001c\u001d\u001e\u001f€‚ƒ„\n\u0017\u001bˆ‰Š‹Œ\u0005\u0006\u0007‘\u0016“”•–\u0004˜™š›\u0014\u0015ž\u001a  âäàáã}çñ#.<(+!&éêëèíîïì߀Å*);^-/ÂÄÀÁÃ$ÇÑø,%_>?¦ÉÊËÈÍÎÏÌ`:ÆØ'=\"@abcdefghi«»ðýþ±°jklmnopqrªº{¸[]µüstuvwxyz¡¿ÐÝÞ®¢£¥·©§¶¼½¾¬|¯¨´×æABCDEFGHI­ôöòóõåJKLMNOPQR¹û~ùúÿ\\÷STUVWXYZ²ÔÖÒÓÕ0123456789³ÛÜÙڟ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +cptable[1143] = (function(){ var d = "\u0000\u0001\u0002\u0003œ\t†—Ž\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013…\b‡\u0018\u0019’\u001c\u001d\u001e\u001f€‚ƒ„\n\u0017\u001bˆ‰Š‹Œ\u0005\u0006\u0007‘\u0016“”•–\u0004˜™š›\u0014\u0015ž\u001a  â{àáã}çñ§.<(+!&`êëèíîïì߀Å*);^-/Â#ÀÁÃ$ÇÑö,%_>?ø\\ÊËÈÍÎÏÌé:ÄÖ'=\"Øabcdefghi«»ðýþ±°jklmnopqrªºæ¸Æ]µüstuvwxyz¡¿ÐÝÞ®¢£¥·©[¶¼½¾¬|¯¨´×äABCDEFGHI­ô¦òóõåJKLMNOPQR¹û~ùúÿÉ÷STUVWXYZ²Ô@ÒÓÕ0123456789³ÛÜÙڟ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +cptable[1144] = (function(){ var d = "\u0000\u0001\u0002\u0003œ\t†—Ž\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013…\b‡\u0018\u0019’\u001c\u001d\u001e\u001f€‚ƒ„\n\u0017\u001bˆ‰Š‹Œ\u0005\u0006\u0007‘\u0016“”•–\u0004˜™š›\u0014\u0015ž\u001a  âä{áãå\\ñ°.<(+!&]êë}íîï~ßé$*);^-/ÂÄÀÁÃÅÇÑò,%_>?øÉÊËÈÍÎÏÌù:£§'=\"Øabcdefghi«»ðýþ±[jklmnopqrªºæ¸Æ€µìstuvwxyz¡¿ÐÝÞ®¢#¥·©@¶¼½¾¬|¯¨´×àABCDEFGHI­ôö¦óõèJKLMNOPQR¹ûü`úÿç÷STUVWXYZ²ÔÖÒÓÕ0123456789³ÛÜÙڟ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +cptable[1145] = (function(){ var d = "\u0000\u0001\u0002\u0003œ\t†—Ž\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013…\b‡\u0018\u0019’\u001c\u001d\u001e\u001f€‚ƒ„\n\u0017\u001bˆ‰Š‹Œ\u0005\u0006\u0007‘\u0016“”•–\u0004˜™š›\u0014\u0015ž\u001a  âäàáãåç¦[.<(+|&éêëèíîïìß]$*);¬-/ÂÄÀÁÃÅÇ#ñ,%_>?øÉÊËÈÍÎÏÌ`:Ñ@'=\"Øabcdefghi«»ðýþ±°jklmnopqrªºæ¸Æ€µ¨stuvwxyz¡¿ÐÝÞ®¢£¥·©§¶¼½¾^!¯~´×{ABCDEFGHI­ôöòóõ}JKLMNOPQR¹ûüùúÿ\\÷STUVWXYZ²ÔÖÒÓÕ0123456789³ÛÜÙڟ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +cptable[1146] = (function(){ var d = "\u0000\u0001\u0002\u0003œ\t†—Ž\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013…\b‡\u0018\u0019’\u001c\u001d\u001e\u001f€‚ƒ„\n\u0017\u001bˆ‰Š‹Œ\u0005\u0006\u0007‘\u0016“”•–\u0004˜™š›\u0014\u0015ž\u001a  âäàáãåçñ$.<(+|&éêëèíîïìß!£*);¬-/ÂÄÀÁÃÅÇѦ,%_>?øÉÊËÈÍÎÏÌ`:#@'=\"Øabcdefghi«»ðýþ±°jklmnopqrªºæ¸Æ€µ¯stuvwxyz¡¿ÐÝÞ®¢[¥·©§¶¼½¾^]~¨´×{ABCDEFGHI­ôöòóõ}JKLMNOPQR¹ûüùúÿ\\÷STUVWXYZ²ÔÖÒÓÕ0123456789³ÛÜÙڟ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +cptable[1147] = (function(){ var d = "\u0000\u0001\u0002\u0003œ\t†—Ž\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013…\b‡\u0018\u0019’\u001c\u001d\u001e\u001f€‚ƒ„\n\u0017\u001bˆ‰Š‹Œ\u0005\u0006\u0007‘\u0016“”•–\u0004˜™š›\u0014\u0015ž\u001a  âä@áãå\\ñ°.<(+!&{êë}íîïìߧ$*);^-/ÂÄÀÁÃÅÇÑù,%_>?øÉÊËÈÍÎÏ̵:£à'=\"Øabcdefghi«»ðýþ±[jklmnopqrªºæ¸Æ€`¨stuvwxyz¡¿ÐÝÞ®¢#¥·©]¶¼½¾¬|¯~´×éABCDEFGHI­ôöòóõèJKLMNOPQR¹ûü¦úÿç÷STUVWXYZ²ÔÖÒÓÕ0123456789³ÛÜÙڟ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +cptable[1148] = (function(){ var d = "\u0000\u0001\u0002\u0003œ\t†—Ž\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013…\b‡\u0018\u0019’\u001c\u001d\u001e\u001f€‚ƒ„\n\u0017\u001bˆ‰Š‹Œ\u0005\u0006\u0007‘\u0016“”•–\u0004˜™š›\u0014\u0015ž\u001a  âäàáãåçñ[.<(+!&éêëèíîïìß]$*);^-/ÂÄÀÁÃÅÇѦ,%_>?øÉÊËÈÍÎÏÌ`:#@'=\"Øabcdefghi«»ðýþ±°jklmnopqrªºæ¸Æ€µ~stuvwxyz¡¿ÐÝÞ®¢£¥·©§¶¼½¾¬|¯¨´×{ABCDEFGHI­ôöòóõ}JKLMNOPQR¹ûüùúÿ\\÷STUVWXYZ²ÔÖÒÓÕ0123456789³ÛÜÙڟ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +cptable[1149] = (function(){ var d = "\u0000\u0001\u0002\u0003œ\t†—Ž\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013…\b‡\u0018\u0019’\u001c\u001d\u001e\u001f€‚ƒ„\n\u0017\u001bˆ‰Š‹Œ\u0005\u0006\u0007‘\u0016“”•–\u0004˜™š›\u0014\u0015ž\u001a  âäàáãåçñÞ.<(+!&éêëèíîïìßÆ$*);Ö-/ÂÄÀÁÃÅÇѦ,%_>?øÉÊËÈÍÎÏÌð:#Ð'=\"Øabcdefghi«»`ý{±°jklmnopqrªº}¸]€µöstuvwxyz¡¿@Ý[®¢£¥·©§¶¼½¾¬|¯¨\\×þABCDEFGHI­ô~òóõæJKLMNOPQR¹ûüùúÿ´÷STUVWXYZ²Ô^ÒÓÕ0123456789³ÛÜÙڟ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +cptable[1361] = (function(){ var d = [], e = {}, D = [], j; +D[0] = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ�����������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];} +D[132] = "������������������������������������������������������������������ᆨᆩᆪᆫᆬᆭᆮᆯᆰᆱᆲᆳᆴᆵᆶᆷ�ᆸᆹᆺᆻᆼᆽᆾᆿᇀᇁᇂ���ᅡ�������������������������������ᅢ�������������������������������ᅣ�������������������������������ᅤ�������������������������������ᅥ������������������������������".split(""); +for(j = 0; j != D[132].length; ++j) if(D[132][j].charCodeAt(0) !== 0xFFFD) { e[D[132][j]] = 33792 + j; d[33792 + j] = D[132][j];} +D[133] = "�����������������������������������������������������������������ᅦ�������������������������������ᅧ�������������������������������ᅨ�������������������������������ᅩ�������������������������������ᅪ�������������������������������ᅫ������������������������������".split(""); +for(j = 0; j != D[133].length; ++j) if(D[133][j].charCodeAt(0) !== 0xFFFD) { e[D[133][j]] = 34048 + j; d[34048 + j] = D[133][j];} +D[134] = "�����������������������������������������������������������������ᅬ�������������������������������ᅭ�������������������������������ᅮ�������������������������������ᅯ�������������������������������ᅰ�������������������������������ᅱ������������������������������".split(""); +for(j = 0; j != D[134].length; ++j) if(D[134][j].charCodeAt(0) !== 0xFFFD) { e[D[134][j]] = 34304 + j; d[34304 + j] = D[134][j];} +D[135] = "�����������������������������������������������������������������ᅲ�������������������������������ᅳ�������������������������������ᅴ�������������������������������ᅵ����������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[135].length; ++j) if(D[135][j].charCodeAt(0) !== 0xFFFD) { e[D[135][j]] = 34560 + j; d[34560 + j] = D[135][j];} +D[136] = "�����������������������������������������������������������������ᄀ�������������������������������가각갂갃간갅갆갇갈갉갊갋갌갍갎갏감�갑값갓갔강갖갗갘같갚갛���개객갞갟갠갡갢갣갤갥갦갧갨갩갪갫갬�갭갮갯갰갱갲갳갴갵갶갷���갸갹갺갻갼갽갾갿걀걁걂걃걄걅걆걇걈�걉걊걋걌걍걎걏걐걑걒걓���걔걕걖걗걘걙걚걛걜걝걞걟걠걡걢걣걤�걥걦걧걨걩걪걫걬걭걮걯���거걱걲걳건걵걶걷걸걹걺걻걼걽걾걿검�겁겂것겄겅겆겇겈겉겊겋��".split(""); +for(j = 0; j != D[136].length; ++j) if(D[136][j].charCodeAt(0) !== 0xFFFD) { e[D[136][j]] = 34816 + j; d[34816 + j] = D[136][j];} +D[137] = "�����������������������������������������������������������������게겍겎겏겐겑겒겓겔겕겖겗겘겙겚겛겜�겝겞겟겠겡겢겣겤겥겦겧���겨격겪겫견겭겮겯결겱겲겳겴겵겶겷겸�겹겺겻겼경겾겿곀곁곂곃���계곅곆곇곈곉곊곋곌곍곎곏곐곑곒곓곔�곕곖곗곘곙곚곛곜곝곞곟���고곡곢곣곤곥곦곧골곩곪곫곬곭곮곯곰�곱곲곳곴공곶곷곸곹곺곻���과곽곾곿관괁괂괃괄괅괆괇괈괉괊괋괌�괍괎괏괐광괒괓괔괕괖괗���괘괙괚괛괜괝괞괟괠괡괢괣괤괥괦괧괨�괩괪괫괬괭괮괯괰괱괲괳��".split(""); +for(j = 0; j != D[137].length; ++j) if(D[137][j].charCodeAt(0) !== 0xFFFD) { e[D[137][j]] = 35072 + j; d[35072 + j] = D[137][j];} +D[138] = "�����������������������������������������������������������������괴괵괶괷괸괹괺괻괼괽괾괿굀굁굂굃굄�굅굆굇굈굉굊굋굌굍굎굏���교굑굒굓굔굕굖굗굘굙굚굛굜굝굞굟굠�굡굢굣굤굥굦굧굨굩굪굫���구국굮굯군굱굲굳굴굵굶굷굸굹굺굻굼�굽굾굿궀궁궂궃궄궅궆궇���궈궉궊궋권궍궎궏궐궑궒궓궔궕궖궗궘�궙궚궛궜궝궞궟궠궡궢궣���궤궥궦궧궨궩궪궫궬궭궮궯궰궱궲궳궴�궵궶궷궸궹궺궻궼궽궾궿���귀귁귂귃귄귅귆귇귈귉귊귋귌귍귎귏귐�귑귒귓귔귕귖귗귘귙귚귛��".split(""); +for(j = 0; j != D[138].length; ++j) if(D[138][j].charCodeAt(0) !== 0xFFFD) { e[D[138][j]] = 35328 + j; d[35328 + j] = D[138][j];} +D[139] = "�����������������������������������������������������������������규귝귞귟균귡귢귣귤귥귦귧귨귩귪귫귬�귭귮귯귰귱귲귳귴귵귶귷���그극귺귻근귽귾귿글긁긂긃긄긅긆긇금�급긊긋긌긍긎긏긐긑긒긓���긔긕긖긗긘긙긚긛긜긝긞긟긠긡긢긣긤�긥긦긧긨긩긪긫긬긭긮긯���기긱긲긳긴긵긶긷길긹긺긻긼긽긾긿김�깁깂깃깄깅깆깇깈깉깊깋������������������������������������������������������������������".split(""); +for(j = 0; j != D[139].length; ++j) if(D[139][j].charCodeAt(0) !== 0xFFFD) { e[D[139][j]] = 35584 + j; d[35584 + j] = D[139][j];} +D[140] = "�����������������������������������������������������������������ᄁ�������������������������������까깍깎깏깐깑깒깓깔깕깖깗깘깙깚깛깜�깝깞깟깠깡깢깣깤깥깦깧���깨깩깪깫깬깭깮깯깰깱깲깳깴깵깶깷깸�깹깺깻깼깽깾깿꺀꺁꺂꺃���꺄꺅꺆꺇꺈꺉꺊꺋꺌꺍꺎꺏꺐꺑꺒꺓꺔�꺕꺖꺗꺘꺙꺚꺛꺜꺝꺞꺟���꺠꺡꺢꺣꺤꺥꺦꺧꺨꺩꺪꺫꺬꺭꺮꺯꺰�꺱꺲꺳꺴꺵꺶꺷꺸꺹꺺꺻���꺼꺽꺾꺿껀껁껂껃껄껅껆껇껈껉껊껋껌�껍껎껏껐껑껒껓껔껕껖껗��".split(""); +for(j = 0; j != D[140].length; ++j) if(D[140][j].charCodeAt(0) !== 0xFFFD) { e[D[140][j]] = 35840 + j; d[35840 + j] = D[140][j];} +D[141] = "�����������������������������������������������������������������께껙껚껛껜껝껞껟껠껡껢껣껤껥껦껧껨�껩껪껫껬껭껮껯껰껱껲껳���껴껵껶껷껸껹껺껻껼껽껾껿꼀꼁꼂꼃꼄�꼅꼆꼇꼈꼉꼊꼋꼌꼍꼎꼏���꼐꼑꼒꼓꼔꼕꼖꼗꼘꼙꼚꼛꼜꼝꼞꼟꼠�꼡꼢꼣꼤꼥꼦꼧꼨꼩꼪꼫���꼬꼭꼮꼯꼰꼱꼲꼳꼴꼵꼶꼷꼸꼹꼺꼻꼼�꼽꼾꼿꽀꽁꽂꽃꽄꽅꽆꽇���꽈꽉꽊꽋꽌꽍꽎꽏꽐꽑꽒꽓꽔꽕꽖꽗꽘�꽙꽚꽛꽜꽝꽞꽟꽠꽡꽢꽣���꽤꽥꽦꽧꽨꽩꽪꽫꽬꽭꽮꽯꽰꽱꽲꽳꽴�꽵꽶꽷꽸꽹꽺꽻꽼꽽꽾꽿��".split(""); +for(j = 0; j != D[141].length; ++j) if(D[141][j].charCodeAt(0) !== 0xFFFD) { e[D[141][j]] = 36096 + j; d[36096 + j] = D[141][j];} +D[142] = "�����������������������������������������������������������������꾀꾁꾂꾃꾄꾅꾆꾇꾈꾉꾊꾋꾌꾍꾎꾏꾐�꾑꾒꾓꾔꾕꾖꾗꾘꾙꾚꾛���꾜꾝꾞꾟꾠꾡꾢꾣꾤꾥꾦꾧꾨꾩꾪꾫꾬�꾭꾮꾯꾰꾱꾲꾳꾴꾵꾶꾷���꾸꾹꾺꾻꾼꾽꾾꾿꿀꿁꿂꿃꿄꿅꿆꿇꿈�꿉꿊꿋꿌꿍꿎꿏꿐꿑꿒꿓���꿔꿕꿖꿗꿘꿙꿚꿛꿜꿝꿞꿟꿠꿡꿢꿣꿤�꿥꿦꿧꿨꿩꿪꿫꿬꿭꿮꿯���꿰꿱꿲꿳꿴꿵꿶꿷꿸꿹꿺꿻꿼꿽꿾꿿뀀�뀁뀂뀃뀄뀅뀆뀇뀈뀉뀊뀋���뀌뀍뀎뀏뀐뀑뀒뀓뀔뀕뀖뀗뀘뀙뀚뀛뀜�뀝뀞뀟뀠뀡뀢뀣뀤뀥뀦뀧��".split(""); +for(j = 0; j != D[142].length; ++j) if(D[142][j].charCodeAt(0) !== 0xFFFD) { e[D[142][j]] = 36352 + j; d[36352 + j] = D[142][j];} +D[143] = "�����������������������������������������������������������������뀨뀩뀪뀫뀬뀭뀮뀯뀰뀱뀲뀳뀴뀵뀶뀷뀸�뀹뀺뀻뀼뀽뀾뀿끀끁끂끃���끄끅끆끇끈끉끊끋끌끍끎끏끐끑끒끓끔�끕끖끗끘끙끚끛끜끝끞끟���끠끡끢끣끤끥끦끧끨끩끪끫끬끭끮끯끰�끱끲끳끴끵끶끷끸끹끺끻���끼끽끾끿낀낁낂낃낄낅낆낇낈낉낊낋낌�낍낎낏낐낑낒낓낔낕낖낗������������������������������������������������������������������".split(""); +for(j = 0; j != D[143].length; ++j) if(D[143][j].charCodeAt(0) !== 0xFFFD) { e[D[143][j]] = 36608 + j; d[36608 + j] = D[143][j];} +D[144] = "�����������������������������������������������������������������ᄂ�������������������������������나낙낚낛난낝낞낟날낡낢낣낤낥낦낧남�납낪낫났낭낮낯낰낱낲낳���내낵낶낷낸낹낺낻낼낽낾낿냀냁냂냃냄�냅냆냇냈냉냊냋냌냍냎냏���냐냑냒냓냔냕냖냗냘냙냚냛냜냝냞냟냠�냡냢냣냤냥냦냧냨냩냪냫���냬냭냮냯냰냱냲냳냴냵냶냷냸냹냺냻냼�냽냾냿넀넁넂넃넄넅넆넇���너넉넊넋넌넍넎넏널넑넒넓넔넕넖넗넘�넙넚넛넜넝넞넟넠넡넢넣��".split(""); +for(j = 0; j != D[144].length; ++j) if(D[144][j].charCodeAt(0) !== 0xFFFD) { e[D[144][j]] = 36864 + j; d[36864 + j] = D[144][j];} +D[145] = "�����������������������������������������������������������������네넥넦넧넨넩넪넫넬넭넮넯넰넱넲넳넴�넵넶넷넸넹넺넻넼넽넾넿���녀녁녂녃년녅녆녇녈녉녊녋녌녍녎녏념�녑녒녓녔녕녖녗녘녙녚녛���녜녝녞녟녠녡녢녣녤녥녦녧녨녩녪녫녬�녭녮녯녰녱녲녳녴녵녶녷���노녹녺녻논녽녾녿놀놁놂놃놄놅놆놇놈�놉놊놋놌농놎놏놐놑높놓���놔놕놖놗놘놙놚놛놜놝놞놟놠놡놢놣놤�놥놦놧놨놩놪놫놬놭놮놯���놰놱놲놳놴놵놶놷놸놹놺놻놼놽놾놿뇀�뇁뇂뇃뇄뇅뇆뇇뇈뇉뇊뇋��".split(""); +for(j = 0; j != D[145].length; ++j) if(D[145][j].charCodeAt(0) !== 0xFFFD) { e[D[145][j]] = 37120 + j; d[37120 + j] = D[145][j];} +D[146] = "�����������������������������������������������������������������뇌뇍뇎뇏뇐뇑뇒뇓뇔뇕뇖뇗뇘뇙뇚뇛뇜�뇝뇞뇟뇠뇡뇢뇣뇤뇥뇦뇧���뇨뇩뇪뇫뇬뇭뇮뇯뇰뇱뇲뇳뇴뇵뇶뇷뇸�뇹뇺뇻뇼뇽뇾뇿눀눁눂눃���누눅눆눇눈눉눊눋눌눍눎눏눐눑눒눓눔�눕눖눗눘눙눚눛눜눝눞눟���눠눡눢눣눤눥눦눧눨눩눪눫눬눭눮눯눰�눱눲눳눴눵눶눷눸눹눺눻���눼눽눾눿뉀뉁뉂뉃뉄뉅뉆뉇뉈뉉뉊뉋뉌�뉍뉎뉏뉐뉑뉒뉓뉔뉕뉖뉗���뉘뉙뉚뉛뉜뉝뉞뉟뉠뉡뉢뉣뉤뉥뉦뉧뉨�뉩뉪뉫뉬뉭뉮뉯뉰뉱뉲뉳��".split(""); +for(j = 0; j != D[146].length; ++j) if(D[146][j].charCodeAt(0) !== 0xFFFD) { e[D[146][j]] = 37376 + j; d[37376 + j] = D[146][j];} +D[147] = "�����������������������������������������������������������������뉴뉵뉶뉷뉸뉹뉺뉻뉼뉽뉾뉿늀늁늂늃늄�늅늆늇늈늉늊늋늌늍늎늏���느늑늒늓는늕늖늗늘늙늚늛늜늝늞늟늠�늡늢늣늤능늦늧늨늩늪늫���늬늭늮늯늰늱늲늳늴늵늶늷늸늹늺늻늼�늽늾늿닀닁닂닃닄닅닆닇���니닉닊닋닌닍닎닏닐닑닒닓닔닕닖닗님�닙닚닛닜닝닞닟닠닡닢닣������������������������������������������������������������������".split(""); +for(j = 0; j != D[147].length; ++j) if(D[147][j].charCodeAt(0) !== 0xFFFD) { e[D[147][j]] = 37632 + j; d[37632 + j] = D[147][j];} +D[148] = "�����������������������������������������������������������������ᄃ�������������������������������다닥닦닧단닩닪닫달닭닮닯닰닱닲닳담�답닶닷닸당닺닻닼닽닾닿���대댁댂댃댄댅댆댇댈댉댊댋댌댍댎댏댐�댑댒댓댔댕댖댗댘댙댚댛���댜댝댞댟댠댡댢댣댤댥댦댧댨댩댪댫댬�댭댮댯댰댱댲댳댴댵댶댷���댸댹댺댻댼댽댾댿덀덁덂덃덄덅덆덇덈�덉덊덋덌덍덎덏덐덑덒덓���더덕덖덗던덙덚덛덜덝덞덟덠덡덢덣덤�덥덦덧덨덩덪덫덬덭덮덯��".split(""); +for(j = 0; j != D[148].length; ++j) if(D[148][j].charCodeAt(0) !== 0xFFFD) { e[D[148][j]] = 37888 + j; d[37888 + j] = D[148][j];} +D[149] = "�����������������������������������������������������������������데덱덲덳덴덵덶덷델덹덺덻덼덽덾덿뎀�뎁뎂뎃뎄뎅뎆뎇뎈뎉뎊뎋���뎌뎍뎎뎏뎐뎑뎒뎓뎔뎕뎖뎗뎘뎙뎚뎛뎜�뎝뎞뎟뎠뎡뎢뎣뎤뎥뎦뎧���뎨뎩뎪뎫뎬뎭뎮뎯뎰뎱뎲뎳뎴뎵뎶뎷뎸�뎹뎺뎻뎼뎽뎾뎿돀돁돂돃���도독돆돇돈돉돊돋돌돍돎돏돐돑돒돓돔�돕돖돗돘동돚돛돜돝돞돟���돠돡돢돣돤돥돦돧돨돩돪돫돬돭돮돯돰�돱돲돳돴돵돶돷돸돹돺돻���돼돽돾돿됀됁됂됃됄됅됆됇됈됉됊됋됌�됍됎됏됐됑됒됓됔됕됖됗��".split(""); +for(j = 0; j != D[149].length; ++j) if(D[149][j].charCodeAt(0) !== 0xFFFD) { e[D[149][j]] = 38144 + j; d[38144 + j] = D[149][j];} +D[150] = "�����������������������������������������������������������������되됙됚됛된됝됞됟될됡됢됣됤됥됦됧됨�됩됪됫됬됭됮됯됰됱됲됳���됴됵됶됷됸됹됺됻됼됽됾됿둀둁둂둃둄�둅둆둇둈둉둊둋둌둍둎둏���두둑둒둓둔둕둖둗둘둙둚둛둜둝둞둟둠�둡둢둣둤둥둦둧둨둩둪둫���둬둭둮둯둰둱둲둳둴둵둶둷둸둹둺둻둼�둽둾둿뒀뒁뒂뒃뒄뒅뒆뒇���뒈뒉뒊뒋뒌뒍뒎뒏뒐뒑뒒뒓뒔뒕뒖뒗뒘�뒙뒚뒛뒜뒝뒞뒟뒠뒡뒢뒣���뒤뒥뒦뒧뒨뒩뒪뒫뒬뒭뒮뒯뒰뒱뒲뒳뒴�뒵뒶뒷뒸뒹뒺뒻뒼뒽뒾뒿��".split(""); +for(j = 0; j != D[150].length; ++j) if(D[150][j].charCodeAt(0) !== 0xFFFD) { e[D[150][j]] = 38400 + j; d[38400 + j] = D[150][j];} +D[151] = "�����������������������������������������������������������������듀듁듂듃듄듅듆듇듈듉듊듋듌듍듎듏듐�듑듒듓듔듕듖듗듘듙듚듛���드득듞듟든듡듢듣들듥듦듧듨듩듪듫듬�듭듮듯듰등듲듳듴듵듶듷���듸듹듺듻듼듽듾듿딀딁딂딃딄딅딆딇딈�딉딊딋딌딍딎딏딐딑딒딓���디딕딖딗딘딙딚딛딜딝딞딟딠딡딢딣딤�딥딦딧딨딩딪딫딬딭딮딯������������������������������������������������������������������".split(""); +for(j = 0; j != D[151].length; ++j) if(D[151][j].charCodeAt(0) !== 0xFFFD) { e[D[151][j]] = 38656 + j; d[38656 + j] = D[151][j];} +D[152] = "�����������������������������������������������������������������ᄄ�������������������������������따딱딲딳딴딵딶딷딸딹딺딻딼딽딾딿땀�땁땂땃땄땅땆땇땈땉땊땋���때땍땎땏땐땑땒땓땔땕땖땗땘땙땚땛땜�땝땞땟땠땡땢땣땤땥땦땧���땨땩땪땫땬땭땮땯땰땱땲땳땴땵땶땷땸�땹땺땻땼땽땾땿떀떁떂떃���떄떅떆떇떈떉떊떋떌떍떎떏떐떑떒떓떔�떕떖떗떘떙떚떛떜떝떞떟���떠떡떢떣떤떥떦떧떨떩떪떫떬떭떮떯떰�떱떲떳떴떵떶떷떸떹떺떻��".split(""); +for(j = 0; j != D[152].length; ++j) if(D[152][j].charCodeAt(0) !== 0xFFFD) { e[D[152][j]] = 38912 + j; d[38912 + j] = D[152][j];} +D[153] = "�����������������������������������������������������������������떼떽떾떿뗀뗁뗂뗃뗄뗅뗆뗇뗈뗉뗊뗋뗌�뗍뗎뗏뗐뗑뗒뗓뗔뗕뗖뗗���뗘뗙뗚뗛뗜뗝뗞뗟뗠뗡뗢뗣뗤뗥뗦뗧뗨�뗩뗪뗫뗬뗭뗮뗯뗰뗱뗲뗳���뗴뗵뗶뗷뗸뗹뗺뗻뗼뗽뗾뗿똀똁똂똃똄�똅똆똇똈똉똊똋똌똍똎똏���또똑똒똓똔똕똖똗똘똙똚똛똜똝똞똟똠�똡똢똣똤똥똦똧똨똩똪똫���똬똭똮똯똰똱똲똳똴똵똶똷똸똹똺똻똼�똽똾똿뙀뙁뙂뙃뙄뙅뙆뙇���뙈뙉뙊뙋뙌뙍뙎뙏뙐뙑뙒뙓뙔뙕뙖뙗뙘�뙙뙚뙛뙜뙝뙞뙟뙠뙡뙢뙣��".split(""); +for(j = 0; j != D[153].length; ++j) if(D[153][j].charCodeAt(0) !== 0xFFFD) { e[D[153][j]] = 39168 + j; d[39168 + j] = D[153][j];} +D[154] = "�����������������������������������������������������������������뙤뙥뙦뙧뙨뙩뙪뙫뙬뙭뙮뙯뙰뙱뙲뙳뙴�뙵뙶뙷뙸뙹뙺뙻뙼뙽뙾뙿���뚀뚁뚂뚃뚄뚅뚆뚇뚈뚉뚊뚋뚌뚍뚎뚏뚐�뚑뚒뚓뚔뚕뚖뚗뚘뚙뚚뚛���뚜뚝뚞뚟뚠뚡뚢뚣뚤뚥뚦뚧뚨뚩뚪뚫뚬�뚭뚮뚯뚰뚱뚲뚳뚴뚵뚶뚷���뚸뚹뚺뚻뚼뚽뚾뚿뛀뛁뛂뛃뛄뛅뛆뛇뛈�뛉뛊뛋뛌뛍뛎뛏뛐뛑뛒뛓���뛔뛕뛖뛗뛘뛙뛚뛛뛜뛝뛞뛟뛠뛡뛢뛣뛤�뛥뛦뛧뛨뛩뛪뛫뛬뛭뛮뛯���뛰뛱뛲뛳뛴뛵뛶뛷뛸뛹뛺뛻뛼뛽뛾뛿뜀�뜁뜂뜃뜄뜅뜆뜇뜈뜉뜊뜋��".split(""); +for(j = 0; j != D[154].length; ++j) if(D[154][j].charCodeAt(0) !== 0xFFFD) { e[D[154][j]] = 39424 + j; d[39424 + j] = D[154][j];} +D[155] = "�����������������������������������������������������������������뜌뜍뜎뜏뜐뜑뜒뜓뜔뜕뜖뜗뜘뜙뜚뜛뜜�뜝뜞뜟뜠뜡뜢뜣뜤뜥뜦뜧���뜨뜩뜪뜫뜬뜭뜮뜯뜰뜱뜲뜳뜴뜵뜶뜷뜸�뜹뜺뜻뜼뜽뜾뜿띀띁띂띃���띄띅띆띇띈띉띊띋띌띍띎띏띐띑띒띓띔�띕띖띗띘띙띚띛띜띝띞띟���띠띡띢띣띤띥띦띧띨띩띪띫띬띭띮띯띰�띱띲띳띴띵띶띷띸띹띺띻������������������������������������������������������������������".split(""); +for(j = 0; j != D[155].length; ++j) if(D[155][j].charCodeAt(0) !== 0xFFFD) { e[D[155][j]] = 39680 + j; d[39680 + j] = D[155][j];} +D[156] = "�����������������������������������������������������������������ᄅ�������������������������������라락띾띿란랁랂랃랄랅랆랇랈랉랊랋람�랍랎랏랐랑랒랓랔랕랖랗���래랙랚랛랜랝랞랟랠랡랢랣랤랥랦랧램�랩랪랫랬랭랮랯랰랱랲랳���랴략랶랷랸랹랺랻랼랽랾랿럀럁럂럃럄�럅럆럇럈량럊럋럌럍럎럏���럐럑럒럓럔럕럖럗럘럙럚럛럜럝럞럟럠�럡럢럣럤럥럦럧럨럩럪럫���러럭럮럯런럱럲럳럴럵럶럷럸럹럺럻럼�럽럾럿렀렁렂렃렄렅렆렇��".split(""); +for(j = 0; j != D[156].length; ++j) if(D[156][j].charCodeAt(0) !== 0xFFFD) { e[D[156][j]] = 39936 + j; d[39936 + j] = D[156][j];} +D[157] = "�����������������������������������������������������������������레렉렊렋렌렍렎렏렐렑렒렓렔렕렖렗렘�렙렚렛렜렝렞렟렠렡렢렣���려력렦렧련렩렪렫렬렭렮렯렰렱렲렳렴�렵렶렷렸령렺렻렼렽렾렿���례롁롂롃롄롅롆롇롈롉롊롋롌롍롎롏롐�롑롒롓롔롕롖롗롘롙롚롛���로록롞롟론롡롢롣롤롥롦롧롨롩롪롫롬�롭롮롯롰롱롲롳롴롵롶롷���롸롹롺롻롼롽롾롿뢀뢁뢂뢃뢄뢅뢆뢇뢈�뢉뢊뢋뢌뢍뢎뢏뢐뢑뢒뢓���뢔뢕뢖뢗뢘뢙뢚뢛뢜뢝뢞뢟뢠뢡뢢뢣뢤�뢥뢦뢧뢨뢩뢪뢫뢬뢭뢮뢯��".split(""); +for(j = 0; j != D[157].length; ++j) if(D[157][j].charCodeAt(0) !== 0xFFFD) { e[D[157][j]] = 40192 + j; d[40192 + j] = D[157][j];} +D[158] = "�����������������������������������������������������������������뢰뢱뢲뢳뢴뢵뢶뢷뢸뢹뢺뢻뢼뢽뢾뢿룀�룁룂룃룄룅룆룇룈룉룊룋���료룍룎룏룐룑룒룓룔룕룖룗룘룙룚룛룜�룝룞룟룠룡룢룣룤룥룦룧���루룩룪룫룬룭룮룯룰룱룲룳룴룵룶룷룸�룹룺룻룼룽룾룿뤀뤁뤂뤃���뤄뤅뤆뤇뤈뤉뤊뤋뤌뤍뤎뤏뤐뤑뤒뤓뤔�뤕뤖뤗뤘뤙뤚뤛뤜뤝뤞뤟���뤠뤡뤢뤣뤤뤥뤦뤧뤨뤩뤪뤫뤬뤭뤮뤯뤰�뤱뤲뤳뤴뤵뤶뤷뤸뤹뤺뤻���뤼뤽뤾뤿륀륁륂륃륄륅륆륇륈륉륊륋륌�륍륎륏륐륑륒륓륔륕륖륗��".split(""); +for(j = 0; j != D[158].length; ++j) if(D[158][j].charCodeAt(0) !== 0xFFFD) { e[D[158][j]] = 40448 + j; d[40448 + j] = D[158][j];} +D[159] = "�����������������������������������������������������������������류륙륚륛륜륝륞륟률륡륢륣륤륥륦륧륨�륩륪륫륬륭륮륯륰륱륲륳���르륵륶륷른륹륺륻를륽륾륿릀릁릂릃름�릅릆릇릈릉릊릋릌릍릎릏���릐릑릒릓릔릕릖릗릘릙릚릛릜릝릞릟릠�릡릢릣릤릥릦릧릨릩릪릫���리릭릮릯린릱릲릳릴릵릶릷릸릹릺릻림�립릾릿맀링맂맃맄맅맆맇������������������������������������������������������������������".split(""); +for(j = 0; j != D[159].length; ++j) if(D[159][j].charCodeAt(0) !== 0xFFFD) { e[D[159][j]] = 40704 + j; d[40704 + j] = D[159][j];} +D[160] = "�����������������������������������������������������������������ᄆ�������������������������������마막맊맋만맍많맏말맑맒맓맔맕맖맗맘�맙맚맛맜망맞맟맠맡맢맣���매맥맦맧맨맩맪맫맬맭맮맯맰맱맲맳맴�맵맶맷맸맹맺맻맼맽맾맿���먀먁먂먃먄먅먆먇먈먉먊먋먌먍먎먏먐�먑먒먓먔먕먖먗먘먙먚먛���먜먝먞먟먠먡먢먣먤먥먦먧먨먩먪먫먬�먭먮먯먰먱먲먳먴먵먶먷���머먹먺먻먼먽먾먿멀멁멂멃멄멅멆멇멈�멉멊멋멌멍멎멏멐멑멒멓��".split(""); +for(j = 0; j != D[160].length; ++j) if(D[160][j].charCodeAt(0) !== 0xFFFD) { e[D[160][j]] = 40960 + j; d[40960 + j] = D[160][j];} +D[161] = "�����������������������������������������������������������������메멕멖멗멘멙멚멛멜멝멞멟멠멡멢멣멤�멥멦멧멨멩멪멫멬멭멮멯���며멱멲멳면멵멶멷멸멹멺멻멼멽멾멿몀�몁몂몃몄명몆몇몈몉몊몋���몌몍몎몏몐몑몒몓몔몕몖몗몘몙몚몛몜�몝몞몟몠몡몢몣몤몥몦몧���모목몪몫몬몭몮몯몰몱몲몳몴몵몶몷몸�몹몺못몼몽몾몿뫀뫁뫂뫃���뫄뫅뫆뫇뫈뫉뫊뫋뫌뫍뫎뫏뫐뫑뫒뫓뫔�뫕뫖뫗뫘뫙뫚뫛뫜뫝뫞뫟���뫠뫡뫢뫣뫤뫥뫦뫧뫨뫩뫪뫫뫬뫭뫮뫯뫰�뫱뫲뫳뫴뫵뫶뫷뫸뫹뫺뫻��".split(""); +for(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];} +D[162] = "�����������������������������������������������������������������뫼뫽뫾뫿묀묁묂묃묄묅묆묇묈묉묊묋묌�묍묎묏묐묑묒묓묔묕묖묗���묘묙묚묛묜묝묞묟묠묡묢묣묤묥묦묧묨�묩묪묫묬묭묮묯묰묱묲묳���무묵묶묷문묹묺묻물묽묾묿뭀뭁뭂뭃뭄�뭅뭆뭇뭈뭉뭊뭋뭌뭍뭎뭏���뭐뭑뭒뭓뭔뭕뭖뭗뭘뭙뭚뭛뭜뭝뭞뭟뭠�뭡뭢뭣뭤뭥뭦뭧뭨뭩뭪뭫���뭬뭭뭮뭯뭰뭱뭲뭳뭴뭵뭶뭷뭸뭹뭺뭻뭼�뭽뭾뭿뮀뮁뮂뮃뮄뮅뮆뮇���뮈뮉뮊뮋뮌뮍뮎뮏뮐뮑뮒뮓뮔뮕뮖뮗뮘�뮙뮚뮛뮜뮝뮞뮟뮠뮡뮢뮣��".split(""); +for(j = 0; j != D[162].length; ++j) if(D[162][j].charCodeAt(0) !== 0xFFFD) { e[D[162][j]] = 41472 + j; d[41472 + j] = D[162][j];} +D[163] = "�����������������������������������������������������������������뮤뮥뮦뮧뮨뮩뮪뮫뮬뮭뮮뮯뮰뮱뮲뮳뮴�뮵뮶뮷뮸뮹뮺뮻뮼뮽뮾뮿���므믁믂믃믄믅믆믇믈믉믊믋믌믍믎믏믐�믑믒믓믔믕믖믗믘믙믚믛���믜믝믞믟믠믡믢믣믤믥믦믧믨믩믪믫믬�믭믮믯믰믱믲믳믴믵믶믷���미믹믺믻민믽믾믿밀밁밂밃밄밅밆밇밈�밉밊밋밌밍밎및밐밑밒밓������������������������������������������������������������������".split(""); +for(j = 0; j != D[163].length; ++j) if(D[163][j].charCodeAt(0) !== 0xFFFD) { e[D[163][j]] = 41728 + j; d[41728 + j] = D[163][j];} +D[164] = "�����������������������������������������������������������������ᄇ�������������������������������바박밖밗반밙밚받발밝밞밟밠밡밢밣밤�밥밦밧밨방밪밫밬밭밮밯���배백밲밳밴밵밶밷밸밹밺밻밼밽밾밿뱀�뱁뱂뱃뱄뱅뱆뱇뱈뱉뱊뱋���뱌뱍뱎뱏뱐뱑뱒뱓뱔뱕뱖뱗뱘뱙뱚뱛뱜�뱝뱞뱟뱠뱡뱢뱣뱤뱥뱦뱧���뱨뱩뱪뱫뱬뱭뱮뱯뱰뱱뱲뱳뱴뱵뱶뱷뱸�뱹뱺뱻뱼뱽뱾뱿벀벁벂벃���버벅벆벇번벉벊벋벌벍벎벏벐벑벒벓범�법벖벗벘벙벚벛벜벝벞벟��".split(""); +for(j = 0; j != D[164].length; ++j) if(D[164][j].charCodeAt(0) !== 0xFFFD) { e[D[164][j]] = 41984 + j; d[41984 + j] = D[164][j];} +D[165] = "�����������������������������������������������������������������베벡벢벣벤벥벦벧벨벩벪벫벬벭벮벯벰�벱벲벳벴벵벶벷벸벹벺벻���벼벽벾벿변볁볂볃별볅볆볇볈볉볊볋볌�볍볎볏볐병볒볓볔볕볖볗���볘볙볚볛볜볝볞볟볠볡볢볣볤볥볦볧볨�볩볪볫볬볭볮볯볰볱볲볳���보복볶볷본볹볺볻볼볽볾볿봀봁봂봃봄�봅봆봇봈봉봊봋봌봍봎봏���봐봑봒봓봔봕봖봗봘봙봚봛봜봝봞봟봠�봡봢봣봤봥봦봧봨봩봪봫���봬봭봮봯봰봱봲봳봴봵봶봷봸봹봺봻봼�봽봾봿뵀뵁뵂뵃뵄뵅뵆뵇��".split(""); +for(j = 0; j != D[165].length; ++j) if(D[165][j].charCodeAt(0) !== 0xFFFD) { e[D[165][j]] = 42240 + j; d[42240 + j] = D[165][j];} +D[166] = "�����������������������������������������������������������������뵈뵉뵊뵋뵌뵍뵎뵏뵐뵑뵒뵓뵔뵕뵖뵗뵘�뵙뵚뵛뵜뵝뵞뵟뵠뵡뵢뵣���뵤뵥뵦뵧뵨뵩뵪뵫뵬뵭뵮뵯뵰뵱뵲뵳뵴�뵵뵶뵷뵸뵹뵺뵻뵼뵽뵾뵿���부북붂붃분붅붆붇불붉붊붋붌붍붎붏붐�붑붒붓붔붕붖붗붘붙붚붛���붜붝붞붟붠붡붢붣붤붥붦붧붨붩붪붫붬�붭붮붯붰붱붲붳붴붵붶붷���붸붹붺붻붼붽붾붿뷀뷁뷂뷃뷄뷅뷆뷇뷈�뷉뷊뷋뷌뷍뷎뷏뷐뷑뷒뷓���뷔뷕뷖뷗뷘뷙뷚뷛뷜뷝뷞뷟뷠뷡뷢뷣뷤�뷥뷦뷧뷨뷩뷪뷫뷬뷭뷮뷯��".split(""); +for(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];} +D[167] = "�����������������������������������������������������������������뷰뷱뷲뷳뷴뷵뷶뷷뷸뷹뷺뷻뷼뷽뷾뷿븀�븁븂븃븄븅븆븇븈븉븊븋���브븍븎븏븐븑븒븓블븕븖븗븘븙븚븛븜�븝븞븟븠븡븢븣븤븥븦븧���븨븩븪븫븬븭븮븯븰븱븲븳븴븵븶븷븸�븹븺븻븼븽븾븿빀빁빂빃���비빅빆빇빈빉빊빋빌빍빎빏빐빑빒빓빔�빕빖빗빘빙빚빛빜빝빞빟������������������������������������������������������������������".split(""); +for(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];} +D[168] = "�����������������������������������������������������������������ᄈ�������������������������������빠빡빢빣빤빥빦빧빨빩빪빫빬빭빮빯빰�빱빲빳빴빵빶빷빸빹빺빻���빼빽빾빿뺀뺁뺂뺃뺄뺅뺆뺇뺈뺉뺊뺋뺌�뺍뺎뺏뺐뺑뺒뺓뺔뺕뺖뺗���뺘뺙뺚뺛뺜뺝뺞뺟뺠뺡뺢뺣뺤뺥뺦뺧뺨�뺩뺪뺫뺬뺭뺮뺯뺰뺱뺲뺳���뺴뺵뺶뺷뺸뺹뺺뺻뺼뺽뺾뺿뻀뻁뻂뻃뻄�뻅뻆뻇뻈뻉뻊뻋뻌뻍뻎뻏���뻐뻑뻒뻓뻔뻕뻖뻗뻘뻙뻚뻛뻜뻝뻞뻟뻠�뻡뻢뻣뻤뻥뻦뻧뻨뻩뻪뻫��".split(""); +for(j = 0; j != D[168].length; ++j) if(D[168][j].charCodeAt(0) !== 0xFFFD) { e[D[168][j]] = 43008 + j; d[43008 + j] = D[168][j];} +D[169] = "�����������������������������������������������������������������뻬뻭뻮뻯뻰뻱뻲뻳뻴뻵뻶뻷뻸뻹뻺뻻뻼�뻽뻾뻿뼀뼁뼂뼃뼄뼅뼆뼇���뼈뼉뼊뼋뼌뼍뼎뼏뼐뼑뼒뼓뼔뼕뼖뼗뼘�뼙뼚뼛뼜뼝뼞뼟뼠뼡뼢뼣���뼤뼥뼦뼧뼨뼩뼪뼫뼬뼭뼮뼯뼰뼱뼲뼳뼴�뼵뼶뼷뼸뼹뼺뼻뼼뼽뼾뼿���뽀뽁뽂뽃뽄뽅뽆뽇뽈뽉뽊뽋뽌뽍뽎뽏뽐�뽑뽒뽓뽔뽕뽖뽗뽘뽙뽚뽛���뽜뽝뽞뽟뽠뽡뽢뽣뽤뽥뽦뽧뽨뽩뽪뽫뽬�뽭뽮뽯뽰뽱뽲뽳뽴뽵뽶뽷���뽸뽹뽺뽻뽼뽽뽾뽿뾀뾁뾂뾃뾄뾅뾆뾇뾈�뾉뾊뾋뾌뾍뾎뾏뾐뾑뾒뾓��".split(""); +for(j = 0; j != D[169].length; ++j) if(D[169][j].charCodeAt(0) !== 0xFFFD) { e[D[169][j]] = 43264 + j; d[43264 + j] = D[169][j];} +D[170] = "�����������������������������������������������������������������뾔뾕뾖뾗뾘뾙뾚뾛뾜뾝뾞뾟뾠뾡뾢뾣뾤�뾥뾦뾧뾨뾩뾪뾫뾬뾭뾮뾯���뾰뾱뾲뾳뾴뾵뾶뾷뾸뾹뾺뾻뾼뾽뾾뾿뿀�뿁뿂뿃뿄뿅뿆뿇뿈뿉뿊뿋���뿌뿍뿎뿏뿐뿑뿒뿓뿔뿕뿖뿗뿘뿙뿚뿛뿜�뿝뿞뿟뿠뿡뿢뿣뿤뿥뿦뿧���뿨뿩뿪뿫뿬뿭뿮뿯뿰뿱뿲뿳뿴뿵뿶뿷뿸�뿹뿺뿻뿼뿽뿾뿿쀀쀁쀂쀃���쀄쀅쀆쀇쀈쀉쀊쀋쀌쀍쀎쀏쀐쀑쀒쀓쀔�쀕쀖쀗쀘쀙쀚쀛쀜쀝쀞쀟���쀠쀡쀢쀣쀤쀥쀦쀧쀨쀩쀪쀫쀬쀭쀮쀯쀰�쀱쀲쀳쀴쀵쀶쀷쀸쀹쀺쀻��".split(""); +for(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];} +D[171] = "�����������������������������������������������������������������쀼쀽쀾쀿쁀쁁쁂쁃쁄쁅쁆쁇쁈쁉쁊쁋쁌�쁍쁎쁏쁐쁑쁒쁓쁔쁕쁖쁗���쁘쁙쁚쁛쁜쁝쁞쁟쁠쁡쁢쁣쁤쁥쁦쁧쁨�쁩쁪쁫쁬쁭쁮쁯쁰쁱쁲쁳���쁴쁵쁶쁷쁸쁹쁺쁻쁼쁽쁾쁿삀삁삂삃삄�삅삆삇삈삉삊삋삌삍삎삏���삐삑삒삓삔삕삖삗삘삙삚삛삜삝삞삟삠�삡삢삣삤삥삦삧삨삩삪삫������������������������������������������������������������������".split(""); +for(j = 0; j != D[171].length; ++j) if(D[171][j].charCodeAt(0) !== 0xFFFD) { e[D[171][j]] = 43776 + j; d[43776 + j] = D[171][j];} +D[172] = "�����������������������������������������������������������������ᄉ�������������������������������사삭삮삯산삱삲삳살삵삶삷삸삹삺삻삼�삽삾삿샀상샂샃샄샅샆샇���새색샊샋샌샍샎샏샐샑샒샓샔샕샖샗샘�샙샚샛샜생샞샟샠샡샢샣���샤샥샦샧샨샩샪샫샬샭샮샯샰샱샲샳샴�샵샶샷샸샹샺샻샼샽샾샿���섀섁섂섃섄섅섆섇섈섉섊섋섌섍섎섏섐�섑섒섓섔섕섖섗섘섙섚섛���서석섞섟선섡섢섣설섥섦섧섨섩섪섫섬�섭섮섯섰성섲섳섴섵섶섷��".split(""); +for(j = 0; j != D[172].length; ++j) if(D[172][j].charCodeAt(0) !== 0xFFFD) { e[D[172][j]] = 44032 + j; d[44032 + j] = D[172][j];} +D[173] = "�����������������������������������������������������������������세섹섺섻센섽섾섿셀셁셂셃셄셅셆셇셈�셉셊셋셌셍셎셏셐셑셒셓���셔셕셖셗션셙셚셛셜셝셞셟셠셡셢셣셤�셥셦셧셨셩셪셫셬셭셮셯���셰셱셲셳셴셵셶셷셸셹셺셻셼셽셾셿솀�솁솂솃솄솅솆솇솈솉솊솋���소속솎솏손솑솒솓솔솕솖솗솘솙솚솛솜�솝솞솟솠송솢솣솤솥솦솧���솨솩솪솫솬솭솮솯솰솱솲솳솴솵솶솷솸�솹솺솻솼솽솾솿쇀쇁쇂쇃���쇄쇅쇆쇇쇈쇉쇊쇋쇌쇍쇎쇏쇐쇑쇒쇓쇔�쇕쇖쇗쇘쇙쇚쇛쇜쇝쇞쇟��".split(""); +for(j = 0; j != D[173].length; ++j) if(D[173][j].charCodeAt(0) !== 0xFFFD) { e[D[173][j]] = 44288 + j; d[44288 + j] = D[173][j];} +D[174] = "�����������������������������������������������������������������쇠쇡쇢쇣쇤쇥쇦쇧쇨쇩쇪쇫쇬쇭쇮쇯쇰�쇱쇲쇳쇴쇵쇶쇷쇸쇹쇺쇻���쇼쇽쇾쇿숀숁숂숃숄숅숆숇숈숉숊숋숌�숍숎숏숐숑숒숓숔숕숖숗���수숙숚숛순숝숞숟술숡숢숣숤숥숦숧숨�숩숪숫숬숭숮숯숰숱숲숳���숴숵숶숷숸숹숺숻숼숽숾숿쉀쉁쉂쉃쉄�쉅쉆쉇쉈쉉쉊쉋쉌쉍쉎쉏���쉐쉑쉒쉓쉔쉕쉖쉗쉘쉙쉚쉛쉜쉝쉞쉟쉠�쉡쉢쉣쉤쉥쉦쉧쉨쉩쉪쉫���쉬쉭쉮쉯쉰쉱쉲쉳쉴쉵쉶쉷쉸쉹쉺쉻쉼�쉽쉾쉿슀슁슂슃슄슅슆슇��".split(""); +for(j = 0; j != D[174].length; ++j) if(D[174][j].charCodeAt(0) !== 0xFFFD) { e[D[174][j]] = 44544 + j; d[44544 + j] = D[174][j];} +D[175] = "�����������������������������������������������������������������슈슉슊슋슌슍슎슏슐슑슒슓슔슕슖슗슘�슙슚슛슜슝슞슟슠슡슢슣���스슥슦슧슨슩슪슫슬슭슮슯슰슱슲슳슴�습슶슷슸승슺슻슼슽슾슿���싀싁싂싃싄싅싆싇싈싉싊싋싌싍싎싏싐�싑싒싓싔싕싖싗싘싙싚싛���시식싞싟신싡싢싣실싥싦싧싨싩싪싫심�십싮싯싰싱싲싳싴싵싶싷������������������������������������������������������������������".split(""); +for(j = 0; j != D[175].length; ++j) if(D[175][j].charCodeAt(0) !== 0xFFFD) { e[D[175][j]] = 44800 + j; d[44800 + j] = D[175][j];} +D[176] = "�����������������������������������������������������������������ᄊ�������������������������������싸싹싺싻싼싽싾싿쌀쌁쌂쌃쌄쌅쌆쌇쌈�쌉쌊쌋쌌쌍쌎쌏쌐쌑쌒쌓���쌔쌕쌖쌗쌘쌙쌚쌛쌜쌝쌞쌟쌠쌡쌢쌣쌤�쌥쌦쌧쌨쌩쌪쌫쌬쌭쌮쌯���쌰쌱쌲쌳쌴쌵쌶쌷쌸쌹쌺쌻쌼쌽쌾쌿썀�썁썂썃썄썅썆썇썈썉썊썋���썌썍썎썏썐썑썒썓썔썕썖썗썘썙썚썛썜�썝썞썟썠썡썢썣썤썥썦썧���써썩썪썫썬썭썮썯썰썱썲썳썴썵썶썷썸�썹썺썻썼썽썾썿쎀쎁쎂쎃��".split(""); +for(j = 0; j != D[176].length; ++j) if(D[176][j].charCodeAt(0) !== 0xFFFD) { e[D[176][j]] = 45056 + j; d[45056 + j] = D[176][j];} +D[177] = "�����������������������������������������������������������������쎄쎅쎆쎇쎈쎉쎊쎋쎌쎍쎎쎏쎐쎑쎒쎓쎔�쎕쎖쎗쎘쎙쎚쎛쎜쎝쎞쎟���쎠쎡쎢쎣쎤쎥쎦쎧쎨쎩쎪쎫쎬쎭쎮쎯쎰�쎱쎲쎳쎴쎵쎶쎷쎸쎹쎺쎻���쎼쎽쎾쎿쏀쏁쏂쏃쏄쏅쏆쏇쏈쏉쏊쏋쏌�쏍쏎쏏쏐쏑쏒쏓쏔쏕쏖쏗���쏘쏙쏚쏛쏜쏝쏞쏟쏠쏡쏢쏣쏤쏥쏦쏧쏨�쏩쏪쏫쏬쏭쏮쏯쏰쏱쏲쏳���쏴쏵쏶쏷쏸쏹쏺쏻쏼쏽쏾쏿쐀쐁쐂쐃쐄�쐅쐆쐇쐈쐉쐊쐋쐌쐍쐎쐏���쐐쐑쐒쐓쐔쐕쐖쐗쐘쐙쐚쐛쐜쐝쐞쐟쐠�쐡쐢쐣쐤쐥쐦쐧쐨쐩쐪쐫��".split(""); +for(j = 0; j != D[177].length; ++j) if(D[177][j].charCodeAt(0) !== 0xFFFD) { e[D[177][j]] = 45312 + j; d[45312 + j] = D[177][j];} +D[178] = "�����������������������������������������������������������������쐬쐭쐮쐯쐰쐱쐲쐳쐴쐵쐶쐷쐸쐹쐺쐻쐼�쐽쐾쐿쑀쑁쑂쑃쑄쑅쑆쑇���쑈쑉쑊쑋쑌쑍쑎쑏쑐쑑쑒쑓쑔쑕쑖쑗쑘�쑙쑚쑛쑜쑝쑞쑟쑠쑡쑢쑣���쑤쑥쑦쑧쑨쑩쑪쑫쑬쑭쑮쑯쑰쑱쑲쑳쑴�쑵쑶쑷쑸쑹쑺쑻쑼쑽쑾쑿���쒀쒁쒂쒃쒄쒅쒆쒇쒈쒉쒊쒋쒌쒍쒎쒏쒐�쒑쒒쒓쒔쒕쒖쒗쒘쒙쒚쒛���쒜쒝쒞쒟쒠쒡쒢쒣쒤쒥쒦쒧쒨쒩쒪쒫쒬�쒭쒮쒯쒰쒱쒲쒳쒴쒵쒶쒷���쒸쒹쒺쒻쒼쒽쒾쒿쓀쓁쓂쓃쓄쓅쓆쓇쓈�쓉쓊쓋쓌쓍쓎쓏쓐쓑쓒쓓��".split(""); +for(j = 0; j != D[178].length; ++j) if(D[178][j].charCodeAt(0) !== 0xFFFD) { e[D[178][j]] = 45568 + j; d[45568 + j] = D[178][j];} +D[179] = "�����������������������������������������������������������������쓔쓕쓖쓗쓘쓙쓚쓛쓜쓝쓞쓟쓠쓡쓢쓣쓤�쓥쓦쓧쓨쓩쓪쓫쓬쓭쓮쓯���쓰쓱쓲쓳쓴쓵쓶쓷쓸쓹쓺쓻쓼쓽쓾쓿씀�씁씂씃씄씅씆씇씈씉씊씋���씌씍씎씏씐씑씒씓씔씕씖씗씘씙씚씛씜�씝씞씟씠씡씢씣씤씥씦씧���씨씩씪씫씬씭씮씯씰씱씲씳씴씵씶씷씸�씹씺씻씼씽씾씿앀앁앂앃������������������������������������������������������������������".split(""); +for(j = 0; j != D[179].length; ++j) if(D[179][j].charCodeAt(0) !== 0xFFFD) { e[D[179][j]] = 45824 + j; d[45824 + j] = D[179][j];} +D[180] = "�����������������������������������������������������������������ᄋ�������������������������������아악앆앇안앉않앋알앍앎앏앐앑앒앓암�압앖앗았앙앚앛앜앝앞앟���애액앢앣앤앥앦앧앨앩앪앫앬앭앮앯앰�앱앲앳앴앵앶앷앸앹앺앻���야약앾앿얀얁얂얃얄얅얆얇얈얉얊얋얌�얍얎얏얐양얒얓얔얕얖얗���얘얙얚얛얜얝얞얟얠얡얢얣얤얥얦얧얨�얩얪얫얬얭얮얯얰얱얲얳���어억얶얷언얹얺얻얼얽얾얿엀엁엂엃엄�업없엇었엉엊엋엌엍엎엏��".split(""); +for(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];} +D[181] = "�����������������������������������������������������������������에엑엒엓엔엕엖엗엘엙엚엛엜엝엞엟엠�엡엢엣엤엥엦엧엨엩엪엫���여역엮엯연엱엲엳열엵엶엷엸엹엺엻염�엽엾엿였영옂옃옄옅옆옇���예옉옊옋옌옍옎옏옐옑옒옓옔옕옖옗옘�옙옚옛옜옝옞옟옠옡옢옣���오옥옦옧온옩옪옫올옭옮옯옰옱옲옳옴�옵옶옷옸옹옺옻옼옽옾옿���와왁왂왃완왅왆왇왈왉왊왋왌왍왎왏왐�왑왒왓왔왕왖왗왘왙왚왛���왜왝왞왟왠왡왢왣왤왥왦왧왨왩왪왫왬�왭왮왯왰왱왲왳왴왵왶왷��".split(""); +for(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];} +D[182] = "�����������������������������������������������������������������외왹왺왻왼왽왾왿욀욁욂욃욄욅욆욇욈�욉욊욋욌욍욎욏욐욑욒욓���요욕욖욗욘욙욚욛욜욝욞욟욠욡욢욣욤�욥욦욧욨용욪욫욬욭욮욯���우욱욲욳운욵욶욷울욹욺욻욼욽욾욿움�웁웂웃웄웅웆웇웈웉웊웋���워웍웎웏원웑웒웓월웕웖웗웘웙웚웛웜�웝웞웟웠웡웢웣웤웥웦웧���웨웩웪웫웬웭웮웯웰웱웲웳웴웵웶웷웸�웹웺웻웼웽웾웿윀윁윂윃���위윅윆윇윈윉윊윋윌윍윎윏윐윑윒윓윔�윕윖윗윘윙윚윛윜윝윞윟��".split(""); +for(j = 0; j != D[182].length; ++j) if(D[182][j].charCodeAt(0) !== 0xFFFD) { e[D[182][j]] = 46592 + j; d[46592 + j] = D[182][j];} +D[183] = "�����������������������������������������������������������������유육윢윣윤윥윦윧율윩윪윫윬윭윮윯윰�윱윲윳윴융윶윷윸윹윺윻���으윽윾윿은읁읂읃을읅읆읇읈읉읊읋음�읍읎읏읐응읒읓읔읕읖읗���의읙읚읛읜읝읞읟읠읡읢읣읤읥읦읧읨�읩읪읫읬읭읮읯읰읱읲읳���이익읶읷인읹읺읻일읽읾읿잀잁잂잃임�입잆잇있잉잊잋잌잍잎잏������������������������������������������������������������������".split(""); +for(j = 0; j != D[183].length; ++j) if(D[183][j].charCodeAt(0) !== 0xFFFD) { e[D[183][j]] = 46848 + j; d[46848 + j] = D[183][j];} +D[184] = "�����������������������������������������������������������������ᄌ�������������������������������자작잒잓잔잕잖잗잘잙잚잛잜잝잞잟잠�잡잢잣잤장잦잧잨잩잪잫���재잭잮잯잰잱잲잳잴잵잶잷잸잹잺잻잼�잽잾잿쟀쟁쟂쟃쟄쟅쟆쟇���쟈쟉쟊쟋쟌쟍쟎쟏쟐쟑쟒쟓쟔쟕쟖쟗쟘�쟙쟚쟛쟜쟝쟞쟟쟠쟡쟢쟣���쟤쟥쟦쟧쟨쟩쟪쟫쟬쟭쟮쟯쟰쟱쟲쟳쟴�쟵쟶쟷쟸쟹쟺쟻쟼쟽쟾쟿���저적젂젃전젅젆젇절젉젊젋젌젍젎젏점�접젒젓젔정젖젗젘젙젚젛��".split(""); +for(j = 0; j != D[184].length; ++j) if(D[184][j].charCodeAt(0) !== 0xFFFD) { e[D[184][j]] = 47104 + j; d[47104 + j] = D[184][j];} +D[185] = "�����������������������������������������������������������������제젝젞젟젠젡젢젣젤젥젦젧젨젩젪젫젬�젭젮젯젰젱젲젳젴젵젶젷���져젹젺젻젼젽젾젿졀졁졂졃졄졅졆졇졈�졉졊졋졌졍졎졏졐졑졒졓���졔졕졖졗졘졙졚졛졜졝졞졟졠졡졢졣졤�졥졦졧졨졩졪졫졬졭졮졯���조족졲졳존졵졶졷졸졹졺졻졼졽졾졿좀�좁좂좃좄종좆좇좈좉좊좋���좌좍좎좏좐좑좒좓좔좕좖좗좘좙좚좛좜�좝좞좟좠좡좢좣좤좥좦좧���좨좩좪좫좬좭좮좯좰좱좲좳좴좵좶좷좸�좹좺좻좼좽좾좿죀죁죂죃��".split(""); +for(j = 0; j != D[185].length; ++j) if(D[185][j].charCodeAt(0) !== 0xFFFD) { e[D[185][j]] = 47360 + j; d[47360 + j] = D[185][j];} +D[186] = "�����������������������������������������������������������������죄죅죆죇죈죉죊죋죌죍죎죏죐죑죒죓죔�죕죖죗죘죙죚죛죜죝죞죟���죠죡죢죣죤죥죦죧죨죩죪죫죬죭죮죯죰�죱죲죳죴죵죶죷죸죹죺죻���주죽죾죿준줁줂줃줄줅줆줇줈줉줊줋줌�줍줎줏줐중줒줓줔줕줖줗���줘줙줚줛줜줝줞줟줠줡줢줣줤줥줦줧줨�줩줪줫줬줭줮줯줰줱줲줳���줴줵줶줷줸줹줺줻줼줽줾줿쥀쥁쥂쥃쥄�쥅쥆쥇쥈쥉쥊쥋쥌쥍쥎쥏���쥐쥑쥒쥓쥔쥕쥖쥗쥘쥙쥚쥛쥜쥝쥞쥟쥠�쥡쥢쥣쥤쥥쥦쥧쥨쥩쥪쥫��".split(""); +for(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];} +D[187] = "�����������������������������������������������������������������쥬쥭쥮쥯쥰쥱쥲쥳쥴쥵쥶쥷쥸쥹쥺쥻쥼�쥽쥾쥿즀즁즂즃즄즅즆즇���즈즉즊즋즌즍즎즏즐즑즒즓즔즕즖즗즘�즙즚즛즜증즞즟즠즡즢즣���즤즥즦즧즨즩즪즫즬즭즮즯즰즱즲즳즴�즵즶즷즸즹즺즻즼즽즾즿���지직짂짃진짅짆짇질짉짊짋짌짍짎짏짐�집짒짓짔징짖짗짘짙짚짛������������������������������������������������������������������".split(""); +for(j = 0; j != D[187].length; ++j) if(D[187][j].charCodeAt(0) !== 0xFFFD) { e[D[187][j]] = 47872 + j; d[47872 + j] = D[187][j];} +D[188] = "�����������������������������������������������������������������ᄍ�������������������������������짜짝짞짟짠짡짢짣짤짥짦짧짨짩짪짫짬�짭짮짯짰짱짲짳짴짵짶짷���째짹짺짻짼짽짾짿쨀쨁쨂쨃쨄쨅쨆쨇쨈�쨉쨊쨋쨌쨍쨎쨏쨐쨑쨒쨓���쨔쨕쨖쨗쨘쨙쨚쨛쨜쨝쨞쨟쨠쨡쨢쨣쨤�쨥쨦쨧쨨쨩쨪쨫쨬쨭쨮쨯���쨰쨱쨲쨳쨴쨵쨶쨷쨸쨹쨺쨻쨼쨽쨾쨿쩀�쩁쩂쩃쩄쩅쩆쩇쩈쩉쩊쩋���쩌쩍쩎쩏쩐쩑쩒쩓쩔쩕쩖쩗쩘쩙쩚쩛쩜�쩝쩞쩟쩠쩡쩢쩣쩤쩥쩦쩧��".split(""); +for(j = 0; j != D[188].length; ++j) if(D[188][j].charCodeAt(0) !== 0xFFFD) { e[D[188][j]] = 48128 + j; d[48128 + j] = D[188][j];} +D[189] = "�����������������������������������������������������������������쩨쩩쩪쩫쩬쩭쩮쩯쩰쩱쩲쩳쩴쩵쩶쩷쩸�쩹쩺쩻쩼쩽쩾쩿쪀쪁쪂쪃���쪄쪅쪆쪇쪈쪉쪊쪋쪌쪍쪎쪏쪐쪑쪒쪓쪔�쪕쪖쪗쪘쪙쪚쪛쪜쪝쪞쪟���쪠쪡쪢쪣쪤쪥쪦쪧쪨쪩쪪쪫쪬쪭쪮쪯쪰�쪱쪲쪳쪴쪵쪶쪷쪸쪹쪺쪻���쪼쪽쪾쪿쫀쫁쫂쫃쫄쫅쫆쫇쫈쫉쫊쫋쫌�쫍쫎쫏쫐쫑쫒쫓쫔쫕쫖쫗���쫘쫙쫚쫛쫜쫝쫞쫟쫠쫡쫢쫣쫤쫥쫦쫧쫨�쫩쫪쫫쫬쫭쫮쫯쫰쫱쫲쫳���쫴쫵쫶쫷쫸쫹쫺쫻쫼쫽쫾쫿쬀쬁쬂쬃쬄�쬅쬆쬇쬈쬉쬊쬋쬌쬍쬎쬏��".split(""); +for(j = 0; j != D[189].length; ++j) if(D[189][j].charCodeAt(0) !== 0xFFFD) { e[D[189][j]] = 48384 + j; d[48384 + j] = D[189][j];} +D[190] = "�����������������������������������������������������������������쬐쬑쬒쬓쬔쬕쬖쬗쬘쬙쬚쬛쬜쬝쬞쬟쬠�쬡쬢쬣쬤쬥쬦쬧쬨쬩쬪쬫���쬬쬭쬮쬯쬰쬱쬲쬳쬴쬵쬶쬷쬸쬹쬺쬻쬼�쬽쬾쬿쭀쭁쭂쭃쭄쭅쭆쭇���쭈쭉쭊쭋쭌쭍쭎쭏쭐쭑쭒쭓쭔쭕쭖쭗쭘�쭙쭚쭛쭜쭝쭞쭟쭠쭡쭢쭣���쭤쭥쭦쭧쭨쭩쭪쭫쭬쭭쭮쭯쭰쭱쭲쭳쭴�쭵쭶쭷쭸쭹쭺쭻쭼쭽쭾쭿���쮀쮁쮂쮃쮄쮅쮆쮇쮈쮉쮊쮋쮌쮍쮎쮏쮐�쮑쮒쮓쮔쮕쮖쮗쮘쮙쮚쮛���쮜쮝쮞쮟쮠쮡쮢쮣쮤쮥쮦쮧쮨쮩쮪쮫쮬�쮭쮮쮯쮰쮱쮲쮳쮴쮵쮶쮷��".split(""); +for(j = 0; j != D[190].length; ++j) if(D[190][j].charCodeAt(0) !== 0xFFFD) { e[D[190][j]] = 48640 + j; d[48640 + j] = D[190][j];} +D[191] = "�����������������������������������������������������������������쮸쮹쮺쮻쮼쮽쮾쮿쯀쯁쯂쯃쯄쯅쯆쯇쯈�쯉쯊쯋쯌쯍쯎쯏쯐쯑쯒쯓���쯔쯕쯖쯗쯘쯙쯚쯛쯜쯝쯞쯟쯠쯡쯢쯣쯤�쯥쯦쯧쯨쯩쯪쯫쯬쯭쯮쯯���쯰쯱쯲쯳쯴쯵쯶쯷쯸쯹쯺쯻쯼쯽쯾쯿찀�찁찂찃찄찅찆찇찈찉찊찋���찌찍찎찏찐찑찒찓찔찕찖찗찘찙찚찛찜�찝찞찟찠찡찢찣찤찥찦찧������������������������������������������������������������������".split(""); +for(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];} +D[192] = "�����������������������������������������������������������������ᄎ�������������������������������차착찪찫찬찭찮찯찰찱찲찳찴찵찶찷참�찹찺찻찼창찾찿챀챁챂챃���채책챆챇챈챉챊챋챌챍챎챏챐챑챒챓챔�챕챖챗챘챙챚챛챜챝챞챟���챠챡챢챣챤챥챦챧챨챩챪챫챬챭챮챯챰�챱챲챳챴챵챶챷챸챹챺챻���챼챽챾챿첀첁첂첃첄첅첆첇첈첉첊첋첌�첍첎첏첐첑첒첓첔첕첖첗���처척첚첛천첝첞첟철첡첢첣첤첥첦첧첨�첩첪첫첬청첮첯첰첱첲첳��".split(""); +for(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];} +D[193] = "�����������������������������������������������������������������체첵첶첷첸첹첺첻첼첽첾첿쳀쳁쳂쳃쳄�쳅쳆쳇쳈쳉쳊쳋쳌쳍쳎쳏���쳐쳑쳒쳓쳔쳕쳖쳗쳘쳙쳚쳛쳜쳝쳞쳟쳠�쳡쳢쳣쳤쳥쳦쳧쳨쳩쳪쳫���쳬쳭쳮쳯쳰쳱쳲쳳쳴쳵쳶쳷쳸쳹쳺쳻쳼�쳽쳾쳿촀촁촂촃촄촅촆촇���초촉촊촋촌촍촎촏촐촑촒촓촔촕촖촗촘�촙촚촛촜총촞촟촠촡촢촣���촤촥촦촧촨촩촪촫촬촭촮촯촰촱촲촳촴�촵촶촷촸촹촺촻촼촽촾촿���쵀쵁쵂쵃쵄쵅쵆쵇쵈쵉쵊쵋쵌쵍쵎쵏쵐�쵑쵒쵓쵔쵕쵖쵗쵘쵙쵚쵛��".split(""); +for(j = 0; j != D[193].length; ++j) if(D[193][j].charCodeAt(0) !== 0xFFFD) { e[D[193][j]] = 49408 + j; d[49408 + j] = D[193][j];} +D[194] = "�����������������������������������������������������������������최쵝쵞쵟쵠쵡쵢쵣쵤쵥쵦쵧쵨쵩쵪쵫쵬�쵭쵮쵯쵰쵱쵲쵳쵴쵵쵶쵷���쵸쵹쵺쵻쵼쵽쵾쵿춀춁춂춃춄춅춆춇춈�춉춊춋춌춍춎춏춐춑춒춓���추축춖춗춘춙춚춛출춝춞춟춠춡춢춣춤�춥춦춧춨충춪춫춬춭춮춯���춰춱춲춳춴춵춶춷춸춹춺춻춼춽춾춿췀�췁췂췃췄췅췆췇췈췉췊췋���췌췍췎췏췐췑췒췓췔췕췖췗췘췙췚췛췜�췝췞췟췠췡췢췣췤췥췦췧���취췩췪췫췬췭췮췯췰췱췲췳췴췵췶췷췸�췹췺췻췼췽췾췿츀츁츂츃��".split(""); +for(j = 0; j != D[194].length; ++j) if(D[194][j].charCodeAt(0) !== 0xFFFD) { e[D[194][j]] = 49664 + j; d[49664 + j] = D[194][j];} +D[195] = "�����������������������������������������������������������������츄츅츆츇츈츉츊츋츌츍츎츏츐츑츒츓츔�츕츖츗츘츙츚츛츜츝츞츟���츠측츢츣츤츥츦츧츨츩츪츫츬츭츮츯츰�츱츲츳츴층츶츷츸츹츺츻���츼츽츾츿칀칁칂칃칄칅칆칇칈칉칊칋칌�칍칎칏칐칑칒칓칔칕칖칗���치칙칚칛친칝칞칟칠칡칢칣칤칥칦칧침�칩칪칫칬칭칮칯칰칱칲칳������������������������������������������������������������������".split(""); +for(j = 0; j != D[195].length; ++j) if(D[195][j].charCodeAt(0) !== 0xFFFD) { e[D[195][j]] = 49920 + j; d[49920 + j] = D[195][j];} +D[196] = "�����������������������������������������������������������������ᄏ�������������������������������카칵칶칷칸칹칺칻칼칽칾칿캀캁캂캃캄�캅캆캇캈캉캊캋캌캍캎캏���캐캑캒캓캔캕캖캗캘캙캚캛캜캝캞캟캠�캡캢캣캤캥캦캧캨캩캪캫���캬캭캮캯캰캱캲캳캴캵캶캷캸캹캺캻캼�캽캾캿컀컁컂컃컄컅컆컇���컈컉컊컋컌컍컎컏컐컑컒컓컔컕컖컗컘�컙컚컛컜컝컞컟컠컡컢컣���커컥컦컧컨컩컪컫컬컭컮컯컰컱컲컳컴�컵컶컷컸컹컺컻컼컽컾컿��".split(""); +for(j = 0; j != D[196].length; ++j) if(D[196][j].charCodeAt(0) !== 0xFFFD) { e[D[196][j]] = 50176 + j; d[50176 + j] = D[196][j];} +D[197] = "�����������������������������������������������������������������케켁켂켃켄켅켆켇켈켉켊켋켌켍켎켏켐�켑켒켓켔켕켖켗켘켙켚켛���켜켝켞켟켠켡켢켣켤켥켦켧켨켩켪켫켬�켭켮켯켰켱켲켳켴켵켶켷���켸켹켺켻켼켽켾켿콀콁콂콃콄콅콆콇콈�콉콊콋콌콍콎콏콐콑콒콓���코콕콖콗콘콙콚콛콜콝콞콟콠콡콢콣콤�콥콦콧콨콩콪콫콬콭콮콯���콰콱콲콳콴콵콶콷콸콹콺콻콼콽콾콿쾀�쾁쾂쾃쾄쾅쾆쾇쾈쾉쾊쾋���쾌쾍쾎쾏쾐쾑쾒쾓쾔쾕쾖쾗쾘쾙쾚쾛쾜�쾝쾞쾟쾠쾡쾢쾣쾤쾥쾦쾧��".split(""); +for(j = 0; j != D[197].length; ++j) if(D[197][j].charCodeAt(0) !== 0xFFFD) { e[D[197][j]] = 50432 + j; d[50432 + j] = D[197][j];} +D[198] = "�����������������������������������������������������������������쾨쾩쾪쾫쾬쾭쾮쾯쾰쾱쾲쾳쾴쾵쾶쾷쾸�쾹쾺쾻쾼쾽쾾쾿쿀쿁쿂쿃���쿄쿅쿆쿇쿈쿉쿊쿋쿌쿍쿎쿏쿐쿑쿒쿓쿔�쿕쿖쿗쿘쿙쿚쿛쿜쿝쿞쿟���쿠쿡쿢쿣쿤쿥쿦쿧쿨쿩쿪쿫쿬쿭쿮쿯쿰�쿱쿲쿳쿴쿵쿶쿷쿸쿹쿺쿻���쿼쿽쿾쿿퀀퀁퀂퀃퀄퀅퀆퀇퀈퀉퀊퀋퀌�퀍퀎퀏퀐퀑퀒퀓퀔퀕퀖퀗���퀘퀙퀚퀛퀜퀝퀞퀟퀠퀡퀢퀣퀤퀥퀦퀧퀨�퀩퀪퀫퀬퀭퀮퀯퀰퀱퀲퀳���퀴퀵퀶퀷퀸퀹퀺퀻퀼퀽퀾퀿큀큁큂큃큄�큅큆큇큈큉큊큋큌큍큎큏��".split(""); +for(j = 0; j != D[198].length; ++j) if(D[198][j].charCodeAt(0) !== 0xFFFD) { e[D[198][j]] = 50688 + j; d[50688 + j] = D[198][j];} +D[199] = "�����������������������������������������������������������������큐큑큒큓큔큕큖큗큘큙큚큛큜큝큞큟큠�큡큢큣큤큥큦큧큨큩큪큫���크큭큮큯큰큱큲큳클큵큶큷큸큹큺큻큼�큽큾큿킀킁킂킃킄킅킆킇���킈킉킊킋킌킍킎킏킐킑킒킓킔킕킖킗킘�킙킚킛킜킝킞킟킠킡킢킣���키킥킦킧킨킩킪킫킬킭킮킯킰킱킲킳킴�킵킶킷킸킹킺킻킼킽킾킿������������������������������������������������������������������".split(""); +for(j = 0; j != D[199].length; ++j) if(D[199][j].charCodeAt(0) !== 0xFFFD) { e[D[199][j]] = 50944 + j; d[50944 + j] = D[199][j];} +D[200] = "�����������������������������������������������������������������ᄐ�������������������������������타탁탂탃탄탅탆탇탈탉탊탋탌탍탎탏탐�탑탒탓탔탕탖탗탘탙탚탛���태택탞탟탠탡탢탣탤탥탦탧탨탩탪탫탬�탭탮탯탰탱탲탳탴탵탶탷���탸탹탺탻탼탽탾탿턀턁턂턃턄턅턆턇턈�턉턊턋턌턍턎턏턐턑턒턓���턔턕턖턗턘턙턚턛턜턝턞턟턠턡턢턣턤�턥턦턧턨턩턪턫턬턭턮턯���터턱턲턳턴턵턶턷털턹턺턻턼턽턾턿텀�텁텂텃텄텅텆텇텈텉텊텋��".split(""); +for(j = 0; j != D[200].length; ++j) if(D[200][j].charCodeAt(0) !== 0xFFFD) { e[D[200][j]] = 51200 + j; d[51200 + j] = D[200][j];} +D[201] = "�����������������������������������������������������������������테텍텎텏텐텑텒텓텔텕텖텗텘텙텚텛템�텝텞텟텠텡텢텣텤텥텦텧���텨텩텪텫텬텭텮텯텰텱텲텳텴텵텶텷텸�텹텺텻텼텽텾텿톀톁톂톃���톄톅톆톇톈톉톊톋톌톍톎톏톐톑톒톓톔�톕톖톗톘톙톚톛톜톝톞톟���토톡톢톣톤톥톦톧톨톩톪톫톬톭톮톯톰�톱톲톳톴통톶톷톸톹톺톻���톼톽톾톿퇀퇁퇂퇃퇄퇅퇆퇇퇈퇉퇊퇋퇌�퇍퇎퇏퇐퇑퇒퇓퇔퇕퇖퇗���퇘퇙퇚퇛퇜퇝퇞퇟퇠퇡퇢퇣퇤퇥퇦퇧퇨�퇩퇪퇫퇬퇭퇮퇯퇰퇱퇲퇳��".split(""); +for(j = 0; j != D[201].length; ++j) if(D[201][j].charCodeAt(0) !== 0xFFFD) { e[D[201][j]] = 51456 + j; d[51456 + j] = D[201][j];} +D[202] = "�����������������������������������������������������������������퇴퇵퇶퇷퇸퇹퇺퇻퇼퇽퇾퇿툀툁툂툃툄�툅툆툇툈툉툊툋툌툍툎툏���툐툑툒툓툔툕툖툗툘툙툚툛툜툝툞툟툠�툡툢툣툤툥툦툧툨툩툪툫���투툭툮툯툰툱툲툳툴툵툶툷툸툹툺툻툼�툽툾툿퉀퉁퉂퉃퉄퉅퉆퉇���퉈퉉퉊퉋퉌퉍퉎퉏퉐퉑퉒퉓퉔퉕퉖퉗퉘�퉙퉚퉛퉜퉝퉞퉟퉠퉡퉢퉣���퉤퉥퉦퉧퉨퉩퉪퉫퉬퉭퉮퉯퉰퉱퉲퉳퉴�퉵퉶퉷퉸퉹퉺퉻퉼퉽퉾퉿���튀튁튂튃튄튅튆튇튈튉튊튋튌튍튎튏튐�튑튒튓튔튕튖튗튘튙튚튛��".split(""); +for(j = 0; j != D[202].length; ++j) if(D[202][j].charCodeAt(0) !== 0xFFFD) { e[D[202][j]] = 51712 + j; d[51712 + j] = D[202][j];} +D[203] = "�����������������������������������������������������������������튜튝튞튟튠튡튢튣튤튥튦튧튨튩튪튫튬�튭튮튯튰튱튲튳튴튵튶튷���트특튺튻튼튽튾튿틀틁틂틃틄틅틆틇틈�틉틊틋틌틍틎틏틐틑틒틓���틔틕틖틗틘틙틚틛틜틝틞틟틠틡틢틣틤�틥틦틧틨틩틪틫틬틭틮틯���티틱틲틳틴틵틶틷틸틹틺틻틼틽틾틿팀�팁팂팃팄팅팆팇팈팉팊팋������������������������������������������������������������������".split(""); +for(j = 0; j != D[203].length; ++j) if(D[203][j].charCodeAt(0) !== 0xFFFD) { e[D[203][j]] = 51968 + j; d[51968 + j] = D[203][j];} +D[204] = "�����������������������������������������������������������������ᄑ�������������������������������파팍팎팏판팑팒팓팔팕팖팗팘팙팚팛팜�팝팞팟팠팡팢팣팤팥팦팧���패팩팪팫팬팭팮팯팰팱팲팳팴팵팶팷팸�팹팺팻팼팽팾팿퍀퍁퍂퍃���퍄퍅퍆퍇퍈퍉퍊퍋퍌퍍퍎퍏퍐퍑퍒퍓퍔�퍕퍖퍗퍘퍙퍚퍛퍜퍝퍞퍟���퍠퍡퍢퍣퍤퍥퍦퍧퍨퍩퍪퍫퍬퍭퍮퍯퍰�퍱퍲퍳퍴퍵퍶퍷퍸퍹퍺퍻���퍼퍽퍾퍿펀펁펂펃펄펅펆펇펈펉펊펋펌�펍펎펏펐펑펒펓펔펕펖펗��".split(""); +for(j = 0; j != D[204].length; ++j) if(D[204][j].charCodeAt(0) !== 0xFFFD) { e[D[204][j]] = 52224 + j; d[52224 + j] = D[204][j];} +D[205] = "�����������������������������������������������������������������페펙펚펛펜펝펞펟펠펡펢펣펤펥펦펧펨�펩펪펫펬펭펮펯펰펱펲펳���펴펵펶펷편펹펺펻펼펽펾펿폀폁폂폃폄�폅폆폇폈평폊폋폌폍폎폏���폐폑폒폓폔폕폖폗폘폙폚폛폜폝폞폟폠�폡폢폣폤폥폦폧폨폩폪폫���포폭폮폯폰폱폲폳폴폵폶폷폸폹폺폻폼�폽폾폿퐀퐁퐂퐃퐄퐅퐆퐇���퐈퐉퐊퐋퐌퐍퐎퐏퐐퐑퐒퐓퐔퐕퐖퐗퐘�퐙퐚퐛퐜퐝퐞퐟퐠퐡퐢퐣���퐤퐥퐦퐧퐨퐩퐪퐫퐬퐭퐮퐯퐰퐱퐲퐳퐴�퐵퐶퐷퐸퐹퐺퐻퐼퐽퐾퐿��".split(""); +for(j = 0; j != D[205].length; ++j) if(D[205][j].charCodeAt(0) !== 0xFFFD) { e[D[205][j]] = 52480 + j; d[52480 + j] = D[205][j];} +D[206] = "�����������������������������������������������������������������푀푁푂푃푄푅푆푇푈푉푊푋푌푍푎푏푐�푑푒푓푔푕푖푗푘푙푚푛���표푝푞푟푠푡푢푣푤푥푦푧푨푩푪푫푬�푭푮푯푰푱푲푳푴푵푶푷���푸푹푺푻푼푽푾푿풀풁풂풃풄풅풆풇품�풉풊풋풌풍풎풏풐풑풒풓���풔풕풖풗풘풙풚풛풜풝풞풟풠풡풢풣풤�풥풦풧풨풩풪풫풬풭풮풯���풰풱풲풳풴풵풶풷풸풹풺풻풼풽풾풿퓀�퓁퓂퓃퓄퓅퓆퓇퓈퓉퓊퓋���퓌퓍퓎퓏퓐퓑퓒퓓퓔퓕퓖퓗퓘퓙퓚퓛퓜�퓝퓞퓟퓠퓡퓢퓣퓤퓥퓦퓧��".split(""); +for(j = 0; j != D[206].length; ++j) if(D[206][j].charCodeAt(0) !== 0xFFFD) { e[D[206][j]] = 52736 + j; d[52736 + j] = D[206][j];} +D[207] = "�����������������������������������������������������������������퓨퓩퓪퓫퓬퓭퓮퓯퓰퓱퓲퓳퓴퓵퓶퓷퓸�퓹퓺퓻퓼퓽퓾퓿픀픁픂픃���프픅픆픇픈픉픊픋플픍픎픏픐픑픒픓픔�픕픖픗픘픙픚픛픜픝픞픟���픠픡픢픣픤픥픦픧픨픩픪픫픬픭픮픯픰�픱픲픳픴픵픶픷픸픹픺픻���피픽픾픿핀핁핂핃필핅핆핇핈핉핊핋핌�핍핎핏핐핑핒핓핔핕핖핗������������������������������������������������������������������".split(""); +for(j = 0; j != D[207].length; ++j) if(D[207][j].charCodeAt(0) !== 0xFFFD) { e[D[207][j]] = 52992 + j; d[52992 + j] = D[207][j];} +D[208] = "�����������������������������������������������������������������ᄒ�������������������������������하학핚핛한핝핞핟할핡핢핣핤핥핦핧함�합핪핫핬항핮핯핰핱핲핳���해핵핶핷핸핹핺핻핼핽핾핿햀햁햂햃햄�햅햆햇했행햊햋햌햍햎햏���햐햑햒햓햔햕햖햗햘햙햚햛햜햝햞햟햠�햡햢햣햤향햦햧햨햩햪햫���햬햭햮햯햰햱햲햳햴햵햶햷햸햹햺햻햼�햽햾햿헀헁헂헃헄헅헆헇���허헉헊헋헌헍헎헏헐헑헒헓헔헕헖헗험�헙헚헛헜헝헞헟헠헡헢헣��".split(""); +for(j = 0; j != D[208].length; ++j) if(D[208][j].charCodeAt(0) !== 0xFFFD) { e[D[208][j]] = 53248 + j; d[53248 + j] = D[208][j];} +D[209] = "�����������������������������������������������������������������헤헥헦헧헨헩헪헫헬헭헮헯헰헱헲헳헴�헵헶헷헸헹헺헻헼헽헾헿���혀혁혂혃현혅혆혇혈혉혊혋혌혍혎혏혐�협혒혓혔형혖혗혘혙혚혛���혜혝혞혟혠혡혢혣혤혥혦혧혨혩혪혫혬�혭혮혯혰혱혲혳혴혵혶혷���호혹혺혻혼혽혾혿홀홁홂홃홄홅홆홇홈�홉홊홋홌홍홎홏홐홑홒홓���화확홖홗환홙홚홛활홝홞홟홠홡홢홣홤�홥홦홧홨황홪홫홬홭홮홯���홰홱홲홳홴홵홶홷홸홹홺홻홼홽홾홿횀�횁횂횃횄횅횆횇횈횉횊횋��".split(""); +for(j = 0; j != D[209].length; ++j) if(D[209][j].charCodeAt(0) !== 0xFFFD) { e[D[209][j]] = 53504 + j; d[53504 + j] = D[209][j];} +D[210] = "�����������������������������������������������������������������회획횎횏횐횑횒횓횔횕횖횗횘횙횚횛횜�횝횞횟횠횡횢횣횤횥횦횧���효횩횪횫횬횭횮횯횰횱횲횳횴횵횶횷횸�횹횺횻횼횽횾횿훀훁훂훃���후훅훆훇훈훉훊훋훌훍훎훏훐훑훒훓훔�훕훖훗훘훙훚훛훜훝훞훟���훠훡훢훣훤훥훦훧훨훩훪훫훬훭훮훯훰�훱훲훳훴훵훶훷훸훹훺훻���훼훽훾훿휀휁휂휃휄휅휆휇휈휉휊휋휌�휍휎휏휐휑휒휓휔휕휖휗���휘휙휚휛휜휝휞휟휠휡휢휣휤휥휦휧휨�휩휪휫휬휭휮휯휰휱휲휳��".split(""); +for(j = 0; j != D[210].length; ++j) if(D[210][j].charCodeAt(0) !== 0xFFFD) { e[D[210][j]] = 53760 + j; d[53760 + j] = D[210][j];} +D[211] = "�����������������������������������������������������������������휴휵휶휷휸휹휺휻휼휽휾휿흀흁흂흃흄�흅흆흇흈흉흊흋흌흍흎흏���흐흑흒흓흔흕흖흗흘흙흚흛흜흝흞흟흠�흡흢흣흤흥흦흧흨흩흪흫���희흭흮흯흰흱흲흳흴흵흶흷흸흹흺흻흼�흽흾흿힀힁힂힃힄힅힆힇���히힉힊힋힌힍힎힏힐힑힒힓힔힕힖힗힘�힙힚힛힜힝힞힟힠힡힢힣������������������������������������������������������������������".split(""); +for(j = 0; j != D[211].length; ++j) if(D[211][j].charCodeAt(0) !== 0xFFFD) { e[D[211][j]] = 54016 + j; d[54016 + j] = D[211][j];} +D[216] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[216].length; ++j) if(D[216][j].charCodeAt(0) !== 0xFFFD) { e[D[216][j]] = 55296 + j; d[55296 + j] = D[216][j];} +D[217] = "������������������������������������������������� 、。·‥…¨〃­―∥\∼‘’“”〔〕〈〉《》「」『』【】±×÷≠≤≥∞∴°′″℃Å¢£¥♂♀∠⊥⌒∂∇≡≒§※☆★○●◎◇◆□■△▲▽▼→←↑↓↔〓≪≫√������������������∽∝∵∫∬∈∋⊆⊇⊂⊃∪∩∧∨¬⇒⇔∀∃´~ˇ˘˝˚˙¸˛¡¿ː∮∑∏¤℉‰◁◀▷▶♤♠♡♥♧♣⊙◈▣◐◑▒▤▥▨▧▦▩♨☏☎☜☞¶†‡↕↗↙↖↘♭♩♪♬㉿㈜№㏇™㏂㏘℡€®������������������������".split(""); +for(j = 0; j != D[217].length; ++j) if(D[217][j].charCodeAt(0) !== 0xFFFD) { e[D[217][j]] = 55552 + j; d[55552 + j] = D[217][j];} +D[218] = "�������������������������������������������������!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[₩]^_`abcdefghijklmn������������������opqrstuvwxyz{|} ̄���������������������������������������������������ᅟᄔᄕᇇᇈᇌᇎᇓᇗᇙᄜᇝᇟᄝᄞᄠᄢᄣᄧᄨᄫᄬᄭᄮᄯᄲᄶᅀᅇᅌᅅᅆᅗᅘᅙᆄᆅᆈᆑᆒᆔᆞᆡ�".split(""); +for(j = 0; j != D[218].length; ++j) if(D[218][j].charCodeAt(0) !== 0xFFFD) { e[D[218][j]] = 55808 + j; d[55808 + j] = D[218][j];} +D[219] = "�������������������������������������������������ⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹ�����ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩ�������ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ��������αβγδεζηθικλμνξ������������������οπρστυφχψω������─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂┒┑┚┙┖┕┎┍┞┟┡┢┦┧┩┪┭┮┱┲┵┶┹┺┽┾╀╁╃╄╅╆╇╈╉╊���������������������������".split(""); +for(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];} +D[220] = "�������������������������������������������������㎕㎖㎗ℓ㎘㏄㎣㎤㎥㎦㎙㎚㎛㎜㎝㎞㎟㎠㎡㎢㏊㎍㎎㎏㏏㎈㎉㏈㎧㎨㎰㎱㎲㎳㎴㎵㎶㎷㎸㎹㎀㎁㎂㎃㎄㎺㎻㎼㎽㎾㎿㎐㎑㎒㎓㎔Ω㏀㏁㎊㎋㎌㏖㏅㎭㎮㎯㏛㎩㎪㎫㎬㏝㏐㏓㏃㏉㏜������������������㏆���������������ÆЪĦ�IJ�ĿŁØŒºÞŦŊ�㉠㉡㉢㉣㉤㉥㉦㉧㉨㉩㉪㉫㉬㉭㉮㉯㉰㉱㉲㉳㉴㉵㉶㉷㉸㉹㉺㉻ⓐⓑⓒⓓⓔⓕⓖⓗⓘⓙⓚⓛⓜⓝⓞⓟⓠⓡⓢⓣⓤⓥⓦⓧⓨⓩ①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮½⅓⅔¼¾⅛⅜⅝⅞�".split(""); +for(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];} +D[221] = "�������������������������������������������������æđðħıijĸŀłøœßþŧŋʼn㈀㈁㈂㈃㈄㈅㈆㈇㈈㈉㈊㈋㈌㈍㈎㈏㈐㈑㈒㈓㈔㈕㈖㈗㈘㈙㈚㈛⒜⒝⒞⒟⒠⒡⒢⒣⒤⒥⒦⒧⒨⒩⒪⒫⒬⒭⒮⒯⒰⒱⒲⒳⒴⒵⑴⑵⑶⑷⑸⑹⑺⑻������������������⑼⑽⑾⑿⒀⒁⒂¹²³⁴ⁿ₁₂₃₄ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをん������������".split(""); +for(j = 0; j != D[221].length; ++j) if(D[221][j].charCodeAt(0) !== 0xFFFD) { e[D[221][j]] = 56576 + j; d[56576 + j] = D[221][j];} +D[222] = "�������������������������������������������������ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮ������������������ワヰヱヲンヴヵヶ��������АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ���������������абвгдеёжзийклмнопрстуфхцчшщъыьэюя��������������".split(""); +for(j = 0; j != D[222].length; ++j) if(D[222][j].charCodeAt(0) !== 0xFFFD) { e[D[222][j]] = 56832 + j; d[56832 + j] = D[222][j];} +D[224] = "�������������������������������������������������伽佳假價加可呵哥嘉嫁家暇架枷柯歌珂痂稼苛茄街袈訶賈跏軻迦駕刻却各恪慤殼珏脚覺角閣侃刊墾奸姦干幹懇揀杆柬桿澗癎看磵稈竿簡肝艮艱諫間乫喝曷渴碣竭葛褐蝎鞨勘坎堪嵌������������������感憾戡敢柑橄減甘疳監瞰紺邯鑑鑒龕匣岬甲胛鉀閘剛堈姜岡崗康强彊慷江畺疆糠絳綱羌腔舡薑襁講鋼降鱇介价個凱塏愷愾慨改槪漑疥皆盖箇芥蓋豈鎧開喀客坑更粳羹醵倨去居巨拒据據擧渠炬祛距踞車遽鉅鋸乾件健巾建愆楗腱虔蹇鍵騫乞傑杰桀儉劍劒檢�".split(""); +for(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];} +D[225] = "�������������������������������������������������瞼鈐黔劫怯迲偈憩揭擊格檄激膈覡隔堅牽犬甄絹繭肩見譴遣鵑抉決潔結缺訣兼慊箝謙鉗鎌京俓倞傾儆勁勍卿坰境庚徑慶憬擎敬景暻更梗涇炅烱璟璥瓊痙硬磬竟競絅經耕耿脛莖警輕������������������逕鏡頃頸驚鯨係啓堺契季屆悸戒桂械棨溪界癸磎稽系繫繼計誡谿階鷄古叩告呱固姑孤尻庫拷攷故敲暠枯槁沽痼皐睾稿羔考股膏苦苽菰藁蠱袴誥賈辜錮雇顧高鼓哭斛曲梏穀谷鵠困坤崑昆梱棍滾琨袞鯤汨滑骨供公共功孔工恐恭拱控攻珙空蚣貢鞏串寡戈果瓜�".split(""); +for(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];} +D[226] = "�������������������������������������������������科菓誇課跨過鍋顆廓槨藿郭串冠官寬慣棺款灌琯瓘管罐菅觀貫關館刮恝括适侊光匡壙廣曠洸炚狂珖筐胱鑛卦掛罫乖傀塊壞怪愧拐槐魁宏紘肱轟交僑咬喬嬌嶠巧攪敎校橋狡皎矯絞翹������������������膠蕎蛟較轎郊餃驕鮫丘久九仇俱具勾區口句咎嘔坵垢寇嶇廐懼拘救枸柩構歐毆毬求溝灸狗玖球瞿矩究絿耉臼舅舊苟衢謳購軀逑邱鉤銶駒驅鳩鷗龜國局菊鞠鞫麴君窘群裙軍郡堀屈掘窟宮弓穹窮芎躬倦券勸卷圈拳捲權淃眷厥獗蕨蹶闕机櫃潰詭軌饋句晷歸貴�".split(""); +for(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];} +D[227] = "�������������������������������������������������鬼龜叫圭奎揆槻珪硅窺竅糾葵規赳逵閨勻均畇筠菌鈞龜橘克剋劇戟棘極隙僅劤勤懃斤根槿瑾筋芹菫覲謹近饉契今妗擒昑檎琴禁禽芩衾衿襟金錦伋及急扱汲級給亘兢矜肯企伎其冀嗜������������������器圻基埼夔奇妓寄岐崎己幾忌技旗旣朞期杞棋棄機欺氣汽沂淇玘琦琪璂璣畸畿碁磯祁祇祈祺箕紀綺羈耆耭肌記譏豈起錡錤飢饑騎騏驥麒緊佶吉拮桔金喫儺喇奈娜懦懶拏拿癩羅蘿螺裸邏那樂洛烙珞落諾酪駱亂卵暖欄煖爛蘭難鸞捏捺南嵐枏楠湳濫男藍襤拉�".split(""); +for(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];} +D[228] = "�������������������������������������������������納臘蠟衲囊娘廊朗浪狼郎乃來內奈柰耐冷女年撚秊念恬拈捻寧寗努勞奴弩怒擄櫓爐瑙盧老蘆虜路露駑魯鷺碌祿綠菉錄鹿論壟弄濃籠聾膿農惱牢磊腦賂雷尿壘屢樓淚漏累縷陋嫩訥杻������������������紐勒肋凜凌稜綾能菱陵尼泥匿溺多茶丹亶但單團壇彖斷旦檀段湍短端簞緞蛋袒鄲鍛撻澾獺疸達啖坍憺擔曇淡湛潭澹痰聃膽蕁覃談譚錟沓畓答踏遝唐堂塘幢戇撞棠當糖螳黨代垈坮大對岱帶待戴擡玳臺袋貸隊黛宅德悳倒刀到圖堵塗導屠島嶋度徒悼挑掉搗桃�".split(""); +for(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];} +D[229] = "�������������������������������������������������棹櫂淘渡滔濤燾盜睹禱稻萄覩賭跳蹈逃途道都鍍陶韜毒瀆牘犢獨督禿篤纛讀墩惇敦旽暾沌焞燉豚頓乭突仝冬凍動同憧東桐棟洞潼疼瞳童胴董銅兜斗杜枓痘竇荳讀豆逗頭屯臀芚遁遯������������������鈍得嶝橙燈登等藤謄鄧騰喇懶拏癩羅蘿螺裸邏樂洛烙珞絡落諾酪駱丹亂卵欄欒瀾爛蘭鸞剌辣嵐擥攬欖濫籃纜藍襤覽拉臘蠟廊朗浪狼琅瑯螂郞來崍徠萊冷掠略亮倆兩凉梁樑粮粱糧良諒輛量侶儷勵呂廬慮戾旅櫚濾礪藜蠣閭驢驪麗黎力曆歷瀝礫轢靂憐戀攣漣�".split(""); +for(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];} +D[230] = "�������������������������������������������������煉璉練聯蓮輦連鍊冽列劣洌烈裂廉斂殮濂簾獵令伶囹寧岺嶺怜玲笭羚翎聆逞鈴零靈領齡例澧禮醴隷勞怒撈擄櫓潞瀘爐盧老蘆虜路輅露魯鷺鹵碌祿綠菉錄鹿麓論壟弄朧瀧瓏籠聾儡瀨������������������牢磊賂賚賴雷了僚寮廖料燎療瞭聊蓼遼鬧龍壘婁屢樓淚漏瘻累縷蔞褸鏤陋劉旒柳榴流溜瀏琉瑠留瘤硫謬類六戮陸侖倫崙淪綸輪律慄栗率隆勒肋凜凌楞稜綾菱陵俚利厘吏唎履悧李梨浬犁狸理璃異痢籬罹羸莉裏裡里釐離鯉吝潾燐璘藺躪隣鱗麟林淋琳臨霖砬�".split(""); +for(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];} +D[231] = "�������������������������������������������������立笠粒摩瑪痲碼磨馬魔麻寞幕漠膜莫邈万卍娩巒彎慢挽晩曼滿漫灣瞞萬蔓蠻輓饅鰻唜抹末沫茉襪靺亡妄忘忙望網罔芒茫莽輞邙埋妹媒寐昧枚梅每煤罵買賣邁魅脈貊陌驀麥孟氓猛盲������������������盟萌冪覓免冕勉棉沔眄眠綿緬面麵滅蔑冥名命明暝椧溟皿瞑茗蓂螟酩銘鳴袂侮冒募姆帽慕摸摹暮某模母毛牟牡瑁眸矛耗芼茅謀謨貌木沐牧目睦穆鶩歿沒夢朦蒙卯墓妙廟描昴杳渺猫竗苗錨務巫憮懋戊拇撫无楙武毋無珷畝繆舞茂蕪誣貿霧鵡墨默們刎吻問文�".split(""); +for(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];} +D[232] = "�������������������������������������������������汶紊紋聞蚊門雯勿沕物味媚尾嵋彌微未梶楣渼湄眉米美薇謎迷靡黴岷悶愍憫敏旻旼民泯玟珉緡閔密蜜謐剝博拍搏撲朴樸泊珀璞箔粕縛膊舶薄迫雹駁伴半反叛拌搬攀斑槃泮潘班畔瘢������������������盤盼磐磻礬絆般蟠返頒飯勃拔撥渤潑發跋醱鉢髮魃倣傍坊妨尨幇彷房放方旁昉枋榜滂磅紡肪膀舫芳蒡蚌訪謗邦防龐倍俳北培徘拜排杯湃焙盃背胚裴裵褙賠輩配陪伯佰帛柏栢白百魄幡樊煩燔番磻繁蕃藩飜伐筏罰閥凡帆梵氾汎泛犯範范法琺僻劈壁擘檗璧癖�".split(""); +for(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];} +D[233] = "�������������������������������������������������碧蘗闢霹便卞弁變辨辯邊別瞥鱉鼈丙倂兵屛幷昞昺柄棅炳甁病秉竝輧餠騈保堡報寶普步洑湺潽珤甫菩補褓譜輔伏僕匐卜宓復服福腹茯蔔複覆輹輻馥鰒本乶俸奉封峯峰捧棒烽熢琫縫������������������蓬蜂逢鋒鳳不付俯傅剖副否咐埠夫婦孚孵富府復扶敷斧浮溥父符簿缶腐腑膚艀芙莩訃負賦賻赴趺部釜阜附駙鳧北分吩噴墳奔奮忿憤扮昐汾焚盆粉糞紛芬賁雰不佛弗彿拂崩朋棚硼繃鵬丕備匕匪卑妃婢庇悲憊扉批斐枇榧比毖毗毘沸泌琵痺砒碑秕秘粃緋翡肥�".split(""); +for(j = 0; j != D[233].length; ++j) if(D[233][j].charCodeAt(0) !== 0xFFFD) { e[D[233][j]] = 59648 + j; d[59648 + j] = D[233][j];} +D[234] = "�������������������������������������������������脾臂菲蜚裨誹譬費鄙非飛鼻嚬嬪彬斌檳殯浜濱瀕牝玭貧賓頻憑氷聘騁乍事些仕伺似使俟僿史司唆嗣四士奢娑寫寺射巳師徙思捨斜斯柶査梭死沙泗渣瀉獅砂社祀祠私篩紗絲肆舍莎蓑������������������蛇裟詐詞謝賜赦辭邪飼駟麝削數朔索傘刪山散汕珊産疝算蒜酸霰乷撒殺煞薩三參杉森渗芟蔘衫揷澁鈒颯上傷像償商喪嘗孀尙峠常床庠廂想桑橡湘爽牀狀相祥箱翔裳觴詳象賞霜塞璽賽嗇塞穡索色牲生甥省笙墅壻嶼序庶徐恕抒捿敍暑曙書栖棲犀瑞筮絮緖署�".split(""); +for(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];} +D[235] = "�������������������������������������������������胥舒薯西誓逝鋤黍鼠夕奭席惜昔晳析汐淅潟石碩蓆釋錫仙僊先善嬋宣扇敾旋渲煽琁瑄璇璿癬禪線繕羨腺膳船蘚蟬詵跣選銑鐥饍鮮卨屑楔泄洩渫舌薛褻設說雪齧剡暹殲纖蟾贍閃陝攝������������������涉燮葉城姓宬性惺成星晟猩珹盛省筬聖聲腥誠醒世勢歲洗稅笹細說貰召嘯塑宵小少巢所掃搔昭梳沼消溯瀟炤燒甦疏疎瘙笑篠簫素紹蔬蕭蘇訴逍遡邵銷韶騷俗屬束涑粟續謖贖速孫巽損蓀遜飡率宋悚松淞訟誦送頌刷殺灑碎鎖衰釗修受嗽囚垂壽嫂守岫峀帥愁�".split(""); +for(j = 0; j != D[235].length; ++j) if(D[235][j].charCodeAt(0) !== 0xFFFD) { e[D[235][j]] = 60160 + j; d[60160 + j] = D[235][j];} +D[236] = "�������������������������������������������������戍手授搜收數樹殊水洙漱燧狩獸琇璲瘦睡秀穗竪粹綏綬繡羞脩茱蒐蓚藪袖誰讐輸遂邃酬銖銹隋隧隨雖需須首髓鬚叔塾夙孰宿淑潚熟琡璹肅菽巡徇循恂旬栒楯橓殉洵淳珣盾瞬筍純脣������������������舜荀蓴蕣詢諄醇錞順馴戌術述鉥崇崧嵩瑟膝蝨濕拾習褶襲丞乘僧勝升承昇繩蠅陞侍匙嘶始媤尸屎屍市弑恃施是時枾柴猜矢示翅蒔蓍視試詩諡豕豺埴寔式息拭植殖湜熄篒蝕識軾食飾伸侁信呻娠宸愼新晨燼申神紳腎臣莘薪藎蜃訊身辛辰迅失室實悉審尋心沁�".split(""); +for(j = 0; j != D[236].length; ++j) if(D[236][j].charCodeAt(0) !== 0xFFFD) { e[D[236][j]] = 60416 + j; d[60416 + j] = D[236][j];} +D[237] = "�������������������������������������������������沈深瀋甚芯諶什十拾雙氏亞俄兒啞娥峨我牙芽莪蛾衙訝阿雅餓鴉鵝堊岳嶽幄惡愕握樂渥鄂鍔顎鰐齷安岸按晏案眼雁鞍顔鮟斡謁軋閼唵岩巖庵暗癌菴闇壓押狎鴨仰央怏昻殃秧鴦厓哀������������������埃崖愛曖涯碍艾隘靄厄扼掖液縊腋額櫻罌鶯鸚也倻冶夜惹揶椰爺耶若野弱掠略約若葯蒻藥躍亮佯兩凉壤孃恙揚攘敭暘梁楊樣洋瀁煬痒瘍禳穰糧羊良襄諒讓釀陽量養圄御於漁瘀禦語馭魚齬億憶抑檍臆偃堰彦焉言諺孼蘖俺儼嚴奄掩淹嶪業円予余勵呂女如廬�".split(""); +for(j = 0; j != D[237].length; ++j) if(D[237][j].charCodeAt(0) !== 0xFFFD) { e[D[237][j]] = 60672 + j; d[60672 + j] = D[237][j];} +D[238] = "�������������������������������������������������旅歟汝濾璵礖礪與艅茹輿轝閭餘驪麗黎亦力域役易曆歷疫繹譯轢逆驛嚥堧姸娟宴年延憐戀捐挻撚椽沇沿涎涓淵演漣烟然煙煉燃燕璉硏硯秊筵緣練縯聯衍軟輦蓮連鉛鍊鳶列劣咽悅涅������������������烈熱裂說閱厭廉念捻染殮炎焰琰艶苒簾閻髥鹽曄獵燁葉令囹塋寧嶺嶸影怜映暎楹榮永泳渶潁濚瀛瀯煐營獰玲瑛瑩瓔盈穎纓羚聆英詠迎鈴鍈零霙靈領乂倪例刈叡曳汭濊猊睿穢芮藝蘂禮裔詣譽豫醴銳隸霓預五伍俉傲午吾吳嗚塢墺奧娛寤悟惡懊敖旿晤梧汚澳�".split(""); +for(j = 0; j != D[238].length; ++j) if(D[238][j].charCodeAt(0) !== 0xFFFD) { e[D[238][j]] = 60928 + j; d[60928 + j] = D[238][j];} +D[239] = "�������������������������������������������������烏熬獒筽蜈誤鰲鼇屋沃獄玉鈺溫瑥瘟穩縕蘊兀壅擁瓮甕癰翁邕雍饔渦瓦窩窪臥蛙蝸訛婉完宛梡椀浣玩琓琬碗緩翫脘腕莞豌阮頑曰往旺枉汪王倭娃歪矮外嵬巍猥畏了僚僥凹堯夭妖姚������������������寥寮尿嶢拗搖撓擾料曜樂橈燎燿瑤療窈窯繇繞耀腰蓼蟯要謠遙遼邀饒慾欲浴縟褥辱俑傭冗勇埇墉容庸慂榕涌湧溶熔瑢用甬聳茸蓉踊鎔鏞龍于佑偶優又友右宇寓尤愚憂旴牛玗瑀盂祐禑禹紆羽芋藕虞迂遇郵釪隅雨雩勖彧旭昱栯煜稶郁頊云暈橒殞澐熉耘芸蕓�".split(""); +for(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];} +D[240] = "�������������������������������������������������運隕雲韻蔚鬱亐熊雄元原員圓園垣媛嫄寃怨愿援沅洹湲源爰猿瑗苑袁轅遠阮院願鴛月越鉞位偉僞危圍委威尉慰暐渭爲瑋緯胃萎葦蔿蝟衛褘謂違韋魏乳侑儒兪劉唯喩孺宥幼幽庾悠惟������������������愈愉揄攸有杻柔柚柳楡楢油洧流游溜濡猶猷琉瑜由留癒硫紐維臾萸裕誘諛諭踰蹂遊逾遺酉釉鍮類六堉戮毓肉育陸倫允奫尹崙淪潤玧胤贇輪鈗閏律慄栗率聿戎瀜絨融隆垠恩慇殷誾銀隱乙吟淫蔭陰音飮揖泣邑凝應膺鷹依倚儀宜意懿擬椅毅疑矣義艤薏蟻衣誼�".split(""); +for(j = 0; j != D[240].length; ++j) if(D[240][j].charCodeAt(0) !== 0xFFFD) { e[D[240][j]] = 61440 + j; d[61440 + j] = D[240][j];} +D[241] = "�������������������������������������������������議醫二以伊利吏夷姨履已弛彛怡易李梨泥爾珥理異痍痢移罹而耳肄苡荑裏裡貽貳邇里離飴餌匿溺瀷益翊翌翼謚人仁刃印吝咽因姻寅引忍湮燐璘絪茵藺蚓認隣靭靷鱗麟一佚佾壹日溢������������������逸鎰馹任壬妊姙恁林淋稔臨荏賃入卄立笠粒仍剩孕芿仔刺咨姉姿子字孜恣慈滋炙煮玆瓷疵磁紫者自茨蔗藉諮資雌作勺嚼斫昨灼炸爵綽芍酌雀鵲孱棧殘潺盞岑暫潛箴簪蠶雜丈仗匠場墻壯奬將帳庄張掌暲杖樟檣欌漿牆狀獐璋章粧腸臟臧莊葬蔣薔藏裝贓醬長�".split(""); +for(j = 0; j != D[241].length; ++j) if(D[241][j].charCodeAt(0) !== 0xFFFD) { e[D[241][j]] = 61696 + j; d[61696 + j] = D[241][j];} +D[242] = "�������������������������������������������������障再哉在宰才材栽梓渽滓災縡裁財載齋齎爭箏諍錚佇低儲咀姐底抵杵楮樗沮渚狙猪疽箸紵苧菹著藷詛貯躇這邸雎齟勣吊嫡寂摘敵滴狄炙的積笛籍績翟荻謫賊赤跡蹟迪迹適鏑佃佺傳������������������全典前剪塡塼奠專展廛悛戰栓殿氈澱煎琠田甸畑癲筌箋箭篆纏詮輾轉鈿銓錢鐫電顚顫餞切截折浙癤竊節絶占岾店漸点粘霑鮎點接摺蝶丁井亭停偵呈姃定幀庭廷征情挺政整旌晶晸柾楨檉正汀淀淨渟湞瀞炡玎珽町睛碇禎程穽精綎艇訂諪貞鄭酊釘鉦鋌錠霆靖�".split(""); +for(j = 0; j != D[242].length; ++j) if(D[242][j].charCodeAt(0) !== 0xFFFD) { e[D[242][j]] = 61952 + j; d[61952 + j] = D[242][j];} +D[243] = "�������������������������������������������������靜頂鼎制劑啼堤帝弟悌提梯濟祭第臍薺製諸蹄醍除際霽題齊俎兆凋助嘲弔彫措操早晁曺曹朝條棗槽漕潮照燥爪璪眺祖祚租稠窕粗糟組繰肇藻蚤詔調趙躁造遭釣阻雕鳥族簇足鏃存尊������������������卒拙猝倧宗從悰慫棕淙琮種終綜縱腫踪踵鍾鐘佐坐左座挫罪主住侏做姝胄呪周嗾奏宙州廚晝朱柱株注洲湊澍炷珠疇籌紂紬綢舟蛛註誅走躊輳週酎酒鑄駐竹粥俊儁准埈寯峻晙樽浚準濬焌畯竣蠢逡遵雋駿茁中仲衆重卽櫛楫汁葺增憎曾拯烝甑症繒蒸證贈之只�".split(""); +for(j = 0; j != D[243].length; ++j) if(D[243][j].charCodeAt(0) !== 0xFFFD) { e[D[243][j]] = 62208 + j; d[62208 + j] = D[243][j];} +D[244] = "�������������������������������������������������咫地址志持指摯支旨智枝枳止池沚漬知砥祉祗紙肢脂至芝芷蜘誌識贄趾遲直稙稷織職唇嗔塵振搢晉晋桭榛殄津溱珍瑨璡畛疹盡眞瞋秦縉縝臻蔯袗診賑軫辰進鎭陣陳震侄叱姪嫉帙桎������������������瓆疾秩窒膣蛭質跌迭斟朕什執潗緝輯鏶集徵懲澄且侘借叉嗟嵯差次此磋箚茶蹉車遮捉搾着窄錯鑿齪撰澯燦璨瓚竄簒纂粲纘讚贊鑽餐饌刹察擦札紮僭參塹慘慙懺斬站讒讖倉倡創唱娼廠彰愴敞昌昶暢槍滄漲猖瘡窓脹艙菖蒼債埰寀寨彩採砦綵菜蔡采釵冊柵策�".split(""); +for(j = 0; j != D[244].length; ++j) if(D[244][j].charCodeAt(0) !== 0xFFFD) { e[D[244][j]] = 62464 + j; d[62464 + j] = D[244][j];} +D[245] = "�������������������������������������������������責凄妻悽處倜刺剔尺慽戚拓擲斥滌瘠脊蹠陟隻仟千喘天川擅泉淺玔穿舛薦賤踐遷釧闡阡韆凸哲喆徹撤澈綴輟轍鐵僉尖沾添甛瞻簽籤詹諂堞妾帖捷牒疊睫諜貼輒廳晴淸聽菁請靑鯖切������������������剃替涕滯締諦逮遞體初剿哨憔抄招梢椒楚樵炒焦硝礁礎秒稍肖艸苕草蕉貂超酢醋醮促囑燭矗蜀觸寸忖村邨叢塚寵悤憁摠總聰蔥銃撮催崔最墜抽推椎楸樞湫皺秋芻萩諏趨追鄒酋醜錐錘鎚雛騶鰍丑畜祝竺筑築縮蓄蹙蹴軸逐春椿瑃出朮黜充忠沖蟲衝衷悴膵萃�".split(""); +for(j = 0; j != D[245].length; ++j) if(D[245][j].charCodeAt(0) !== 0xFFFD) { e[D[245][j]] = 62720 + j; d[62720 + j] = D[245][j];} +D[246] = "�������������������������������������������������贅取吹嘴娶就炊翠聚脆臭趣醉驟鷲側仄厠惻測層侈値嗤峙幟恥梔治淄熾痔痴癡稚穉緇緻置致蚩輜雉馳齒則勅飭親七柒漆侵寢枕沈浸琛砧針鍼蟄秤稱快他咤唾墮妥惰打拖朶楕舵陀馱������������������駝倬卓啄坼度托拓擢晫柝濁濯琢琸託鐸呑嘆坦彈憚歎灘炭綻誕奪脫探眈耽貪塔搭榻宕帑湯糖蕩兌台太怠態殆汰泰笞胎苔跆邰颱宅擇澤撑攄兎吐土討慟桶洞痛筒統通堆槌腿褪退頹偸套妬投透鬪慝特闖坡婆巴把播擺杷波派爬琶破罷芭跛頗判坂板版瓣販辦鈑�".split(""); +for(j = 0; j != D[246].length; ++j) if(D[246][j].charCodeAt(0) !== 0xFFFD) { e[D[246][j]] = 62976 + j; d[62976 + j] = D[246][j];} +D[247] = "�������������������������������������������������阪八叭捌佩唄悖敗沛浿牌狽稗覇貝彭澎烹膨愎便偏扁片篇編翩遍鞭騙貶坪平枰萍評吠嬖幣廢弊斃肺蔽閉陛佈包匍匏咆哺圃布怖抛抱捕暴泡浦疱砲胞脯苞葡蒲袍褒逋鋪飽鮑幅暴曝瀑������������������爆輻俵剽彪慓杓標漂瓢票表豹飇飄驃品稟楓諷豊風馮彼披疲皮被避陂匹弼必泌珌畢疋筆苾馝乏逼下何厦夏廈昰河瑕荷蝦賀遐霞鰕壑學虐謔鶴寒恨悍旱汗漢澣瀚罕翰閑閒限韓割轄函含咸啣喊檻涵緘艦銜陷鹹合哈盒蛤閤闔陜亢伉姮嫦巷恒抗杭桁沆港缸肛航�".split(""); +for(j = 0; j != D[247].length; ++j) if(D[247][j].charCodeAt(0) !== 0xFFFD) { e[D[247][j]] = 63232 + j; d[63232 + j] = D[247][j];} +D[248] = "�������������������������������������������������行降項亥偕咳垓奚孩害懈楷海瀣蟹解該諧邂駭骸劾核倖幸杏荇行享向嚮珦鄕響餉饗香噓墟虛許憲櫶獻軒歇險驗奕爀赫革俔峴弦懸晛泫炫玄玹現眩睍絃絢縣舷衒見賢鉉顯孑穴血頁嫌������������������俠協夾峽挾浹狹脅脇莢鋏頰亨兄刑型形泂滎瀅灐炯熒珩瑩荊螢衡逈邢鎣馨兮彗惠慧暳蕙蹊醯鞋乎互呼壕壺好岵弧戶扈昊晧毫浩淏湖滸澔濠濩灝狐琥瑚瓠皓祜糊縞胡芦葫蒿虎號蝴護豪鎬頀顥惑或酷婚昏混渾琿魂忽惚笏哄弘汞泓洪烘紅虹訌鴻化和嬅樺火畵�".split(""); +for(j = 0; j != D[248].length; ++j) if(D[248][j].charCodeAt(0) !== 0xFFFD) { e[D[248][j]] = 63488 + j; d[63488 + j] = D[248][j];} +D[249] = "�������������������������������������������������禍禾花華話譁貨靴廓擴攫確碻穫丸喚奐宦幻患換歡晥桓渙煥環紈還驩鰥活滑猾豁闊凰幌徨恍惶愰慌晃晄榥況湟滉潢煌璜皇篁簧荒蝗遑隍黃匯回廻徊恢悔懷晦會檜淮澮灰獪繪膾茴蛔������������������誨賄劃獲宖橫鐄哮嚆孝效斅曉梟涍淆爻肴酵驍侯候厚后吼喉嗅帿後朽煦珝逅勛勳塤壎焄熏燻薰訓暈薨喧暄煊萱卉喙毁彙徽揮暉煇諱輝麾休携烋畦虧恤譎鷸兇凶匈洶胸黑昕欣炘痕吃屹紇訖欠欽歆吸恰洽翕興僖凞喜噫囍姬嬉希憙憘戱晞曦熙熹熺犧禧稀羲詰�".split(""); +for(j = 0; j != D[249].length; ++j) if(D[249][j].charCodeAt(0) !== 0xFFFD) { e[D[249][j]] = 63744 + j; d[63744 + j] = D[249][j];} +return {"enc": e, "dec": d }; })(); +cptable[10001] = (function(){ var d = [], e = {}, D = [], j; +D[0] = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€������������������������������� 。「」、・ヲァィゥェォャュョッーアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワン゙゚�����������������������������©™�".split(""); +for(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];} +D[129] = "���������������������������������������������������������������� 、。,.・:;?!゛゜´`¨^ ̄_ヽヾゝゞ〃仝々〆〇ー―‐/\~∥|…‥‘’“”()〔〕[]{}〈〉《》「」『』【】+-±×�÷=≠<>≦≧∞∴♂♀°′″℃¥$¢£%#&*@§☆★○●◎◇◆□■△▲▽▼※〒→←↑↓〓�����������∈∋⊆⊇⊂⊃∪∩��������∧∨¬⇒⇔∀∃�����������∠⊥⌒∂∇≡≒≪≫√∽∝∵∫∬�������ʼn♯♭♪†‡¶����◯���".split(""); +for(j = 0; j != D[129].length; ++j) if(D[129][j].charCodeAt(0) !== 0xFFFD) { e[D[129][j]] = 33024 + j; d[33024 + j] = D[129][j];} +D[130] = "�������������������������������������������������������������������������������0123456789�������ABCDEFGHIJKLMNOPQRSTUVWXYZ�������abcdefghijklmnopqrstuvwxyz����ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをん��������������".split(""); +for(j = 0; j != D[130].length; ++j) if(D[130][j].charCodeAt(0) !== 0xFFFD) { e[D[130][j]] = 33280 + j; d[33280 + j] = D[130][j];} +D[131] = "����������������������������������������������������������������ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミ�ムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶ��������ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ��������αβγδεζηθικλμνξοπρστυφχψω�����������������������������������������".split(""); +for(j = 0; j != D[131].length; ++j) if(D[131][j].charCodeAt(0) !== 0xFFFD) { e[D[131][j]] = 33536 + j; d[33536 + j] = D[131][j];} +D[132] = "����������������������������������������������������������������АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ���������������абвгдеёжзийклмн�опрстуфхцчшщъыьэюя�������������─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂�����������������������������������������������������������������".split(""); +for(j = 0; j != D[132].length; ++j) if(D[132][j].charCodeAt(0) !== 0xFFFD) { e[D[132][j]] = 33792 + j; d[33792 + j] = D[132][j];} +D[133] = "����������������������������������������������������������������①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯⑰⑱⑲⑳���������������������������������������������������������������������������ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩ����������ⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹ�������������������������������������������������������������������".split(""); +for(j = 0; j != D[133].length; ++j) if(D[133][j].charCodeAt(0) !== 0xFFFD) { e[D[133][j]] = 34048 + j; d[34048 + j] = D[133][j];} +D[134] = "����������������������������������������������������������������㎜�㎝���㎡�㎞�㎎�㎏㏄�����������������������������������������������������������������������������№㏍℡��������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[134].length; ++j) if(D[134][j].charCodeAt(0) !== 0xFFFD) { e[D[134][j]] = 34304 + j; d[34304 + j] = D[134][j];} +D[135] = "���������������������������������������������������������������������������㈹�㈱��㈲�����������������������������������������������〝〟�����������������㊤㊥㊦㊧㊨�������㍉㌢㍍㌔����㌃㌶㌘�㌧㍑㍊�㍗㌍�㌣㌦㌻㌫�����������������������������������������������㍾㍽㍼㍻�����������������������".split(""); +for(j = 0; j != D[135].length; ++j) if(D[135][j].charCodeAt(0) !== 0xFFFD) { e[D[135][j]] = 34560 + j; d[34560 + j] = D[135][j];} +D[136] = "����������������������������������������������������������������∮∟⊿��������������������������������������������������������������������������������������������亜唖娃阿哀愛挨姶逢葵茜穐悪握渥旭葦芦鯵梓圧斡扱宛姐虻飴絢綾鮎或粟袷安庵按暗案闇鞍杏以伊位依偉囲夷委威尉惟意慰易椅為畏異移維緯胃萎衣謂違遺医井亥域育郁磯一壱溢逸稲茨芋鰯允印咽員因姻引飲淫胤蔭���".split(""); +for(j = 0; j != D[136].length; ++j) if(D[136][j].charCodeAt(0) !== 0xFFFD) { e[D[136][j]] = 34816 + j; d[34816 + j] = D[136][j];} +D[137] = "����������������������������������������������������������������院陰隠韻吋右宇烏羽迂雨卯鵜窺丑碓臼渦嘘唄欝蔚鰻姥厩浦瓜閏噂云運雲荏餌叡営嬰影映曳栄永泳洩瑛盈穎頴英衛詠鋭液疫益駅悦謁越閲榎厭円�園堰奄宴延怨掩援沿演炎焔煙燕猿縁艶苑薗遠鉛鴛塩於汚甥凹央奥往応押旺横欧殴王翁襖鴬鴎黄岡沖荻億屋憶臆桶牡乙俺卸恩温穏音下化仮何伽価佳加可嘉夏嫁家寡科暇果架歌河火珂禍禾稼箇花苛茄荷華菓蝦課嘩貨迦過霞蚊俄峨我牙画臥芽蛾賀雅餓駕介会解回塊壊廻快怪悔恢懐戒拐改���".split(""); +for(j = 0; j != D[137].length; ++j) if(D[137][j].charCodeAt(0) !== 0xFFFD) { e[D[137][j]] = 35072 + j; d[35072 + j] = D[137][j];} +D[138] = "����������������������������������������������������������������魁晦械海灰界皆絵芥蟹開階貝凱劾外咳害崖慨概涯碍蓋街該鎧骸浬馨蛙垣柿蛎鈎劃嚇各廓拡撹格核殻獲確穫覚角赫較郭閣隔革学岳楽額顎掛笠樫�橿梶鰍潟割喝恰括活渇滑葛褐轄且鰹叶椛樺鞄株兜竃蒲釜鎌噛鴨栢茅萱粥刈苅瓦乾侃冠寒刊勘勧巻喚堪姦完官寛干幹患感慣憾換敢柑桓棺款歓汗漢澗潅環甘監看竿管簡緩缶翰肝艦莞観諌貫還鑑間閑関陥韓館舘丸含岸巌玩癌眼岩翫贋雁頑顔願企伎危喜器基奇嬉寄岐希幾忌揮机旗既期棋棄���".split(""); +for(j = 0; j != D[138].length; ++j) if(D[138][j].charCodeAt(0) !== 0xFFFD) { e[D[138][j]] = 35328 + j; d[35328 + j] = D[138][j];} +D[139] = "����������������������������������������������������������������機帰毅気汽畿祈季稀紀徽規記貴起軌輝飢騎鬼亀偽儀妓宜戯技擬欺犠疑祇義蟻誼議掬菊鞠吉吃喫桔橘詰砧杵黍却客脚虐逆丘久仇休及吸宮弓急救�朽求汲泣灸球究窮笈級糾給旧牛去居巨拒拠挙渠虚許距鋸漁禦魚亨享京供侠僑兇競共凶協匡卿叫喬境峡強彊怯恐恭挟教橋況狂狭矯胸脅興蕎郷鏡響饗驚仰凝尭暁業局曲極玉桐粁僅勤均巾錦斤欣欽琴禁禽筋緊芹菌衿襟謹近金吟銀九倶句区狗玖矩苦躯駆駈駒具愚虞喰空偶寓遇隅串櫛釧屑屈���".split(""); +for(j = 0; j != D[139].length; ++j) if(D[139][j].charCodeAt(0) !== 0xFFFD) { e[D[139][j]] = 35584 + j; d[35584 + j] = D[139][j];} +D[140] = "����������������������������������������������������������������掘窟沓靴轡窪熊隈粂栗繰桑鍬勲君薫訓群軍郡卦袈祁係傾刑兄啓圭珪型契形径恵慶慧憩掲携敬景桂渓畦稽系経継繋罫茎荊蛍計詣警軽頚鶏芸迎鯨�劇戟撃激隙桁傑欠決潔穴結血訣月件倹倦健兼券剣喧圏堅嫌建憲懸拳捲検権牽犬献研硯絹県肩見謙賢軒遣鍵険顕験鹸元原厳幻弦減源玄現絃舷言諺限乎個古呼固姑孤己庫弧戸故枯湖狐糊袴股胡菰虎誇跨鈷雇顧鼓五互伍午呉吾娯後御悟梧檎瑚碁語誤護醐乞鯉交佼侯候倖光公功効勾厚口向���".split(""); +for(j = 0; j != D[140].length; ++j) if(D[140][j].charCodeAt(0) !== 0xFFFD) { e[D[140][j]] = 35840 + j; d[35840 + j] = D[140][j];} +D[141] = "����������������������������������������������������������������后喉坑垢好孔孝宏工巧巷幸広庚康弘恒慌抗拘控攻昂晃更杭校梗構江洪浩港溝甲皇硬稿糠紅紘絞綱耕考肯肱腔膏航荒行衡講貢購郊酵鉱砿鋼閤降�項香高鴻剛劫号合壕拷濠豪轟麹克刻告国穀酷鵠黒獄漉腰甑忽惚骨狛込此頃今困坤墾婚恨懇昏昆根梱混痕紺艮魂些佐叉唆嵯左差査沙瑳砂詐鎖裟坐座挫債催再最哉塞妻宰彩才採栽歳済災采犀砕砦祭斎細菜裁載際剤在材罪財冴坂阪堺榊肴咲崎埼碕鷺作削咋搾昨朔柵窄策索錯桜鮭笹匙冊刷���".split(""); +for(j = 0; j != D[141].length; ++j) if(D[141][j].charCodeAt(0) !== 0xFFFD) { e[D[141][j]] = 36096 + j; d[36096 + j] = D[141][j];} +D[142] = "����������������������������������������������������������������察拶撮擦札殺薩雑皐鯖捌錆鮫皿晒三傘参山惨撒散桟燦珊産算纂蚕讃賛酸餐斬暫残仕仔伺使刺司史嗣四士始姉姿子屍市師志思指支孜斯施旨枝止�死氏獅祉私糸紙紫肢脂至視詞詩試誌諮資賜雌飼歯事似侍児字寺慈持時次滋治爾璽痔磁示而耳自蒔辞汐鹿式識鴫竺軸宍雫七叱執失嫉室悉湿漆疾質実蔀篠偲柴芝屡蕊縞舎写射捨赦斜煮社紗者謝車遮蛇邪借勺尺杓灼爵酌釈錫若寂弱惹主取守手朱殊狩珠種腫趣酒首儒受呪寿授樹綬需囚収周���".split(""); +for(j = 0; j != D[142].length; ++j) if(D[142][j].charCodeAt(0) !== 0xFFFD) { e[D[142][j]] = 36352 + j; d[36352 + j] = D[142][j];} +D[143] = "����������������������������������������������������������������宗就州修愁拾洲秀秋終繍習臭舟蒐衆襲讐蹴輯週酋酬集醜什住充十従戎柔汁渋獣縦重銃叔夙宿淑祝縮粛塾熟出術述俊峻春瞬竣舜駿准循旬楯殉淳�準潤盾純巡遵醇順処初所暑曙渚庶緒署書薯藷諸助叙女序徐恕鋤除傷償勝匠升召哨商唱嘗奨妾娼宵将小少尚庄床廠彰承抄招掌捷昇昌昭晶松梢樟樵沼消渉湘焼焦照症省硝礁祥称章笑粧紹肖菖蒋蕉衝裳訟証詔詳象賞醤鉦鍾鐘障鞘上丈丞乗冗剰城場壌嬢常情擾条杖浄状畳穣蒸譲醸錠嘱埴飾���".split(""); +for(j = 0; j != D[143].length; ++j) if(D[143][j].charCodeAt(0) !== 0xFFFD) { e[D[143][j]] = 36608 + j; d[36608 + j] = D[143][j];} +D[144] = "����������������������������������������������������������������拭植殖燭織職色触食蝕辱尻伸信侵唇娠寝審心慎振新晋森榛浸深申疹真神秦紳臣芯薪親診身辛進針震人仁刃塵壬尋甚尽腎訊迅陣靭笥諏須酢図厨�逗吹垂帥推水炊睡粋翠衰遂酔錐錘随瑞髄崇嵩数枢趨雛据杉椙菅頗雀裾澄摺寸世瀬畝是凄制勢姓征性成政整星晴棲栖正清牲生盛精聖声製西誠誓請逝醒青静斉税脆隻席惜戚斥昔析石積籍績脊責赤跡蹟碩切拙接摂折設窃節説雪絶舌蝉仙先千占宣専尖川戦扇撰栓栴泉浅洗染潜煎煽旋穿箭線���".split(""); +for(j = 0; j != D[144].length; ++j) if(D[144][j].charCodeAt(0) !== 0xFFFD) { e[D[144][j]] = 36864 + j; d[36864 + j] = D[144][j];} +D[145] = "����������������������������������������������������������������繊羨腺舛船薦詮賎践選遷銭銑閃鮮前善漸然全禅繕膳糎噌塑岨措曾曽楚狙疏疎礎祖租粗素組蘇訴阻遡鼠僧創双叢倉喪壮奏爽宋層匝惣想捜掃挿掻�操早曹巣槍槽漕燥争痩相窓糟総綜聡草荘葬蒼藻装走送遭鎗霜騒像増憎臓蔵贈造促側則即息捉束測足速俗属賊族続卒袖其揃存孫尊損村遜他多太汰詑唾堕妥惰打柁舵楕陀駄騨体堆対耐岱帯待怠態戴替泰滞胎腿苔袋貸退逮隊黛鯛代台大第醍題鷹滝瀧卓啄宅托択拓沢濯琢託鐸濁諾茸凧蛸只���".split(""); +for(j = 0; j != D[145].length; ++j) if(D[145][j].charCodeAt(0) !== 0xFFFD) { e[D[145][j]] = 37120 + j; d[37120 + j] = D[145][j];} +D[146] = "����������������������������������������������������������������叩但達辰奪脱巽竪辿棚谷狸鱈樽誰丹単嘆坦担探旦歎淡湛炭短端箪綻耽胆蛋誕鍛団壇弾断暖檀段男談値知地弛恥智池痴稚置致蜘遅馳築畜竹筑蓄�逐秩窒茶嫡着中仲宙忠抽昼柱注虫衷註酎鋳駐樗瀦猪苧著貯丁兆凋喋寵帖帳庁弔張彫徴懲挑暢朝潮牒町眺聴脹腸蝶調諜超跳銚長頂鳥勅捗直朕沈珍賃鎮陳津墜椎槌追鎚痛通塚栂掴槻佃漬柘辻蔦綴鍔椿潰坪壷嬬紬爪吊釣鶴亭低停偵剃貞呈堤定帝底庭廷弟悌抵挺提梯汀碇禎程締艇訂諦蹄逓���".split(""); +for(j = 0; j != D[146].length; ++j) if(D[146][j].charCodeAt(0) !== 0xFFFD) { e[D[146][j]] = 37376 + j; d[37376 + j] = D[146][j];} +D[147] = "����������������������������������������������������������������邸鄭釘鼎泥摘擢敵滴的笛適鏑溺哲徹撤轍迭鉄典填天展店添纏甜貼転顛点伝殿澱田電兎吐堵塗妬屠徒斗杜渡登菟賭途都鍍砥砺努度土奴怒倒党冬�凍刀唐塔塘套宕島嶋悼投搭東桃梼棟盗淘湯涛灯燈当痘祷等答筒糖統到董蕩藤討謄豆踏逃透鐙陶頭騰闘働動同堂導憧撞洞瞳童胴萄道銅峠鴇匿得徳涜特督禿篤毒独読栃橡凸突椴届鳶苫寅酉瀞噸屯惇敦沌豚遁頓呑曇鈍奈那内乍凪薙謎灘捺鍋楢馴縄畷南楠軟難汝二尼弐迩匂賑肉虹廿日乳入���".split(""); +for(j = 0; j != D[147].length; ++j) if(D[147][j].charCodeAt(0) !== 0xFFFD) { e[D[147][j]] = 37632 + j; d[37632 + j] = D[147][j];} +D[148] = "����������������������������������������������������������������如尿韮任妊忍認濡禰祢寧葱猫熱年念捻撚燃粘乃廼之埜嚢悩濃納能脳膿農覗蚤巴把播覇杷波派琶破婆罵芭馬俳廃拝排敗杯盃牌背肺輩配倍培媒梅�楳煤狽買売賠陪這蝿秤矧萩伯剥博拍柏泊白箔粕舶薄迫曝漠爆縛莫駁麦函箱硲箸肇筈櫨幡肌畑畠八鉢溌発醗髪伐罰抜筏閥鳩噺塙蛤隼伴判半反叛帆搬斑板氾汎版犯班畔繁般藩販範釆煩頒飯挽晩番盤磐蕃蛮匪卑否妃庇彼悲扉批披斐比泌疲皮碑秘緋罷肥被誹費避非飛樋簸備尾微枇毘琵眉美���".split(""); +for(j = 0; j != D[148].length; ++j) if(D[148][j].charCodeAt(0) !== 0xFFFD) { e[D[148][j]] = 37888 + j; d[37888 + j] = D[148][j];} +D[149] = "����������������������������������������������������������������鼻柊稗匹疋髭彦膝菱肘弼必畢筆逼桧姫媛紐百謬俵彪標氷漂瓢票表評豹廟描病秒苗錨鋲蒜蛭鰭品彬斌浜瀕貧賓頻敏瓶不付埠夫婦富冨布府怖扶敷�斧普浮父符腐膚芙譜負賦赴阜附侮撫武舞葡蕪部封楓風葺蕗伏副復幅服福腹複覆淵弗払沸仏物鮒分吻噴墳憤扮焚奮粉糞紛雰文聞丙併兵塀幣平弊柄並蔽閉陛米頁僻壁癖碧別瞥蔑箆偏変片篇編辺返遍便勉娩弁鞭保舗鋪圃捕歩甫補輔穂募墓慕戊暮母簿菩倣俸包呆報奉宝峰峯崩庖抱捧放方朋���".split(""); +for(j = 0; j != D[149].length; ++j) if(D[149][j].charCodeAt(0) !== 0xFFFD) { e[D[149][j]] = 38144 + j; d[38144 + j] = D[149][j];} +D[150] = "����������������������������������������������������������������法泡烹砲縫胞芳萌蓬蜂褒訪豊邦鋒飽鳳鵬乏亡傍剖坊妨帽忘忙房暴望某棒冒紡肪膨謀貌貿鉾防吠頬北僕卜墨撲朴牧睦穆釦勃没殆堀幌奔本翻凡盆�摩磨魔麻埋妹昧枚毎哩槙幕膜枕鮪柾鱒桝亦俣又抹末沫迄侭繭麿万慢満漫蔓味未魅巳箕岬密蜜湊蓑稔脈妙粍民眠務夢無牟矛霧鵡椋婿娘冥名命明盟迷銘鳴姪牝滅免棉綿緬面麺摸模茂妄孟毛猛盲網耗蒙儲木黙目杢勿餅尤戻籾貰問悶紋門匁也冶夜爺耶野弥矢厄役約薬訳躍靖柳薮鑓愉愈油癒���".split(""); +for(j = 0; j != D[150].length; ++j) if(D[150][j].charCodeAt(0) !== 0xFFFD) { e[D[150][j]] = 38400 + j; d[38400 + j] = D[150][j];} +D[151] = "����������������������������������������������������������������諭輸唯佑優勇友宥幽悠憂揖有柚湧涌猶猷由祐裕誘遊邑郵雄融夕予余与誉輿預傭幼妖容庸揚揺擁曜楊様洋溶熔用窯羊耀葉蓉要謡踊遥陽養慾抑欲�沃浴翌翼淀羅螺裸来莱頼雷洛絡落酪乱卵嵐欄濫藍蘭覧利吏履李梨理璃痢裏裡里離陸律率立葎掠略劉流溜琉留硫粒隆竜龍侶慮旅虜了亮僚両凌寮料梁涼猟療瞭稜糧良諒遼量陵領力緑倫厘林淋燐琳臨輪隣鱗麟瑠塁涙累類令伶例冷励嶺怜玲礼苓鈴隷零霊麗齢暦歴列劣烈裂廉恋憐漣煉簾練聯���".split(""); +for(j = 0; j != D[151].length; ++j) if(D[151][j].charCodeAt(0) !== 0xFFFD) { e[D[151][j]] = 38656 + j; d[38656 + j] = D[151][j];} +D[152] = "����������������������������������������������������������������蓮連錬呂魯櫓炉賂路露労婁廊弄朗楼榔浪漏牢狼篭老聾蝋郎六麓禄肋録論倭和話歪賄脇惑枠鷲亙亘鰐詫藁蕨椀湾碗腕��������������������������������������������弌丐丕个丱丶丼丿乂乖乘亂亅豫亊舒弍于亞亟亠亢亰亳亶从仍仄仆仂仗仞仭仟价伉佚估佛佝佗佇佶侈侏侘佻佩佰侑佯來侖儘俔俟俎俘俛俑俚俐俤俥倚倨倔倪倥倅伜俶倡倩倬俾俯們倆偃假會偕偐偈做偖偬偸傀傚傅傴傲���".split(""); +for(j = 0; j != D[152].length; ++j) if(D[152][j].charCodeAt(0) !== 0xFFFD) { e[D[152][j]] = 38912 + j; d[38912 + j] = D[152][j];} +D[153] = "����������������������������������������������������������������僉僊傳僂僖僞僥僭僣僮價僵儉儁儂儖儕儔儚儡儺儷儼儻儿兀兒兌兔兢竸兩兪兮冀冂囘册冉冏冑冓冕冖冤冦冢冩冪冫决冱冲冰况冽凅凉凛几處凩凭�凰凵凾刄刋刔刎刧刪刮刳刹剏剄剋剌剞剔剪剴剩剳剿剽劍劔劒剱劈劑辨辧劬劭劼劵勁勍勗勞勣勦飭勠勳勵勸勹匆匈甸匍匐匏匕匚匣匯匱匳匸區卆卅丗卉卍凖卞卩卮夘卻卷厂厖厠厦厥厮厰厶參簒雙叟曼燮叮叨叭叺吁吽呀听吭吼吮吶吩吝呎咏呵咎呟呱呷呰咒呻咀呶咄咐咆哇咢咸咥咬哄哈咨���".split(""); +for(j = 0; j != D[153].length; ++j) if(D[153][j].charCodeAt(0) !== 0xFFFD) { e[D[153][j]] = 39168 + j; d[39168 + j] = D[153][j];} +D[154] = "����������������������������������������������������������������咫哂咤咾咼哘哥哦唏唔哽哮哭哺哢唹啀啣啌售啜啅啖啗唸唳啝喙喀咯喊喟啻啾喘喞單啼喃喩喇喨嗚嗅嗟嗄嗜嗤嗔嘔嗷嘖嗾嗽嘛嗹噎噐營嘴嘶嘲嘸�噫噤嘯噬噪嚆嚀嚊嚠嚔嚏嚥嚮嚶嚴囂嚼囁囃囀囈囎囑囓囗囮囹圀囿圄圉圈國圍圓團圖嗇圜圦圷圸坎圻址坏坩埀垈坡坿垉垓垠垳垤垪垰埃埆埔埒埓堊埖埣堋堙堝塲堡塢塋塰毀塒堽塹墅墹墟墫墺壞墻墸墮壅壓壑壗壙壘壥壜壤壟壯壺壹壻壼壽夂夊夐夛梦夥夬夭夲夸夾竒奕奐奎奚奘奢奠奧奬奩���".split(""); +for(j = 0; j != D[154].length; ++j) if(D[154][j].charCodeAt(0) !== 0xFFFD) { e[D[154][j]] = 39424 + j; d[39424 + j] = D[154][j];} +D[155] = "����������������������������������������������������������������奸妁妝佞侫妣妲姆姨姜妍姙姚娥娟娑娜娉娚婀婬婉娵娶婢婪媚媼媾嫋嫂媽嫣嫗嫦嫩嫖嫺嫻嬌嬋嬖嬲嫐嬪嬶嬾孃孅孀孑孕孚孛孥孩孰孳孵學斈孺宀�它宦宸寃寇寉寔寐寤實寢寞寥寫寰寶寳尅將專對尓尠尢尨尸尹屁屆屎屓屐屏孱屬屮乢屶屹岌岑岔妛岫岻岶岼岷峅岾峇峙峩峽峺峭嶌峪崋崕崗嵜崟崛崑崔崢崚崙崘嵌嵒嵎嵋嵬嵳嵶嶇嶄嶂嶢嶝嶬嶮嶽嶐嶷嶼巉巍巓巒巖巛巫已巵帋帚帙帑帛帶帷幄幃幀幎幗幔幟幢幤幇幵并幺麼广庠廁廂廈廐廏���".split(""); +for(j = 0; j != D[155].length; ++j) if(D[155][j].charCodeAt(0) !== 0xFFFD) { e[D[155][j]] = 39680 + j; d[39680 + j] = D[155][j];} +D[156] = "����������������������������������������������������������������廖廣廝廚廛廢廡廨廩廬廱廳廰廴廸廾弃弉彝彜弋弑弖弩弭弸彁彈彌彎弯彑彖彗彙彡彭彳彷徃徂彿徊很徑徇從徙徘徠徨徭徼忖忻忤忸忱忝悳忿怡恠�怙怐怩怎怱怛怕怫怦怏怺恚恁恪恷恟恊恆恍恣恃恤恂恬恫恙悁悍惧悃悚悄悛悖悗悒悧悋惡悸惠惓悴忰悽惆悵惘慍愕愆惶惷愀惴惺愃愡惻惱愍愎慇愾愨愧慊愿愼愬愴愽慂慄慳慷慘慙慚慫慴慯慥慱慟慝慓慵憙憖憇憬憔憚憊憑憫憮懌懊應懷懈懃懆憺懋罹懍懦懣懶懺懴懿懽懼懾戀戈戉戍戌戔戛���".split(""); +for(j = 0; j != D[156].length; ++j) if(D[156][j].charCodeAt(0) !== 0xFFFD) { e[D[156][j]] = 39936 + j; d[39936 + j] = D[156][j];} +D[157] = "����������������������������������������������������������������戞戡截戮戰戲戳扁扎扞扣扛扠扨扼抂抉找抒抓抖拔抃抔拗拑抻拏拿拆擔拈拜拌拊拂拇抛拉挌拮拱挧挂挈拯拵捐挾捍搜捏掖掎掀掫捶掣掏掉掟掵捫�捩掾揩揀揆揣揉插揶揄搖搴搆搓搦搶攝搗搨搏摧摯摶摎攪撕撓撥撩撈撼據擒擅擇撻擘擂擱擧舉擠擡抬擣擯攬擶擴擲擺攀擽攘攜攅攤攣攫攴攵攷收攸畋效敖敕敍敘敞敝敲數斂斃變斛斟斫斷旃旆旁旄旌旒旛旙无旡旱杲昊昃旻杳昵昶昴昜晏晄晉晁晞晝晤晧晨晟晢晰暃暈暎暉暄暘暝曁暹曉暾暼���".split(""); +for(j = 0; j != D[157].length; ++j) if(D[157][j].charCodeAt(0) !== 0xFFFD) { e[D[157][j]] = 40192 + j; d[40192 + j] = D[157][j];} +D[158] = "����������������������������������������������������������������曄暸曖曚曠昿曦曩曰曵曷朏朖朞朦朧霸朮朿朶杁朸朷杆杞杠杙杣杤枉杰枩杼杪枌枋枦枡枅枷柯枴柬枳柩枸柤柞柝柢柮枹柎柆柧檜栞框栩桀桍栲桎�梳栫桙档桷桿梟梏梭梔條梛梃檮梹桴梵梠梺椏梍桾椁棊椈棘椢椦棡椌棍棔棧棕椶椒椄棗棣椥棹棠棯椨椪椚椣椡棆楹楷楜楸楫楔楾楮椹楴椽楙椰楡楞楝榁楪榲榮槐榿槁槓榾槎寨槊槝榻槃榧樮榑榠榜榕榴槞槨樂樛槿權槹槲槧樅榱樞槭樔槫樊樒櫁樣樓橄樌橲樶橸橇橢橙橦橈樸樢檐檍檠檄檢檣���".split(""); +for(j = 0; j != D[158].length; ++j) if(D[158][j].charCodeAt(0) !== 0xFFFD) { e[D[158][j]] = 40448 + j; d[40448 + j] = D[158][j];} +D[159] = "����������������������������������������������������������������檗蘗檻櫃櫂檸檳檬櫞櫑櫟檪櫚櫪櫻欅蘖櫺欒欖鬱欟欸欷盜欹飮歇歃歉歐歙歔歛歟歡歸歹歿殀殄殃殍殘殕殞殤殪殫殯殲殱殳殷殼毆毋毓毟毬毫毳毯�麾氈氓气氛氤氣汞汕汢汪沂沍沚沁沛汾汨汳沒沐泄泱泓沽泗泅泝沮沱沾沺泛泯泙泪洟衍洶洫洽洸洙洵洳洒洌浣涓浤浚浹浙涎涕濤涅淹渕渊涵淇淦涸淆淬淞淌淨淒淅淺淙淤淕淪淮渭湮渮渙湲湟渾渣湫渫湶湍渟湃渺湎渤滿渝游溂溪溘滉溷滓溽溯滄溲滔滕溏溥滂溟潁漑灌滬滸滾漿滲漱滯漲滌���".split(""); +for(j = 0; j != D[159].length; ++j) if(D[159][j].charCodeAt(0) !== 0xFFFD) { e[D[159][j]] = 40704 + j; d[40704 + j] = D[159][j];} +D[224] = "����������������������������������������������������������������漾漓滷澆潺潸澁澀潯潛濳潭澂潼潘澎澑濂潦澳澣澡澤澹濆澪濟濕濬濔濘濱濮濛瀉瀋濺瀑瀁瀏濾瀛瀚潴瀝瀘瀟瀰瀾瀲灑灣炙炒炯烱炬炸炳炮烟烋烝�烙焉烽焜焙煥煕熈煦煢煌煖煬熏燻熄熕熨熬燗熹熾燒燉燔燎燠燬燧燵燼燹燿爍爐爛爨爭爬爰爲爻爼爿牀牆牋牘牴牾犂犁犇犒犖犢犧犹犲狃狆狄狎狒狢狠狡狹狷倏猗猊猜猖猝猴猯猩猥猾獎獏默獗獪獨獰獸獵獻獺珈玳珎玻珀珥珮珞璢琅瑯琥珸琲琺瑕琿瑟瑙瑁瑜瑩瑰瑣瑪瑶瑾璋璞璧瓊瓏瓔珱���".split(""); +for(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];} +D[225] = "����������������������������������������������������������������瓠瓣瓧瓩瓮瓲瓰瓱瓸瓷甄甃甅甌甎甍甕甓甞甦甬甼畄畍畊畉畛畆畚畩畤畧畫畭畸當疆疇畴疊疉疂疔疚疝疥疣痂疳痃疵疽疸疼疱痍痊痒痙痣痞痾痿�痼瘁痰痺痲痳瘋瘍瘉瘟瘧瘠瘡瘢瘤瘴瘰瘻癇癈癆癜癘癡癢癨癩癪癧癬癰癲癶癸發皀皃皈皋皎皖皓皙皚皰皴皸皹皺盂盍盖盒盞盡盥盧盪蘯盻眈眇眄眩眤眞眥眦眛眷眸睇睚睨睫睛睥睿睾睹瞎瞋瞑瞠瞞瞰瞶瞹瞿瞼瞽瞻矇矍矗矚矜矣矮矼砌砒礦砠礪硅碎硴碆硼碚碌碣碵碪碯磑磆磋磔碾碼磅磊磬���".split(""); +for(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];} +D[226] = "����������������������������������������������������������������磧磚磽磴礇礒礑礙礬礫祀祠祗祟祚祕祓祺祿禊禝禧齋禪禮禳禹禺秉秕秧秬秡秣稈稍稘稙稠稟禀稱稻稾稷穃穗穉穡穢穩龝穰穹穽窈窗窕窘窖窩竈窰�窶竅竄窿邃竇竊竍竏竕竓站竚竝竡竢竦竭竰笂笏笊笆笳笘笙笞笵笨笶筐筺笄筍笋筌筅筵筥筴筧筰筱筬筮箝箘箟箍箜箚箋箒箏筝箙篋篁篌篏箴篆篝篩簑簔篦篥籠簀簇簓篳篷簗簍篶簣簧簪簟簷簫簽籌籃籔籏籀籐籘籟籤籖籥籬籵粃粐粤粭粢粫粡粨粳粲粱粮粹粽糀糅糂糘糒糜糢鬻糯糲糴糶糺紆���".split(""); +for(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];} +D[227] = "����������������������������������������������������������������紂紜紕紊絅絋紮紲紿紵絆絳絖絎絲絨絮絏絣經綉絛綏絽綛綺綮綣綵緇綽綫總綢綯緜綸綟綰緘緝緤緞緻緲緡縅縊縣縡縒縱縟縉縋縢繆繦縻縵縹繃縷�縲縺繧繝繖繞繙繚繹繪繩繼繻纃緕繽辮繿纈纉續纒纐纓纔纖纎纛纜缸缺罅罌罍罎罐网罕罔罘罟罠罨罩罧罸羂羆羃羈羇羌羔羞羝羚羣羯羲羹羮羶羸譱翅翆翊翕翔翡翦翩翳翹飜耆耄耋耒耘耙耜耡耨耿耻聊聆聒聘聚聟聢聨聳聲聰聶聹聽聿肄肆肅肛肓肚肭冐肬胛胥胙胝胄胚胖脉胯胱脛脩脣脯腋���".split(""); +for(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];} +D[228] = "����������������������������������������������������������������隋腆脾腓腑胼腱腮腥腦腴膃膈膊膀膂膠膕膤膣腟膓膩膰膵膾膸膽臀臂膺臉臍臑臙臘臈臚臟臠臧臺臻臾舁舂舅與舊舍舐舖舩舫舸舳艀艙艘艝艚艟艤�艢艨艪艫舮艱艷艸艾芍芒芫芟芻芬苡苣苟苒苴苳苺莓范苻苹苞茆苜茉苙茵茴茖茲茱荀茹荐荅茯茫茗茘莅莚莪莟莢莖茣莎莇莊荼莵荳荵莠莉莨菴萓菫菎菽萃菘萋菁菷萇菠菲萍萢萠莽萸蔆菻葭萪萼蕚蒄葷葫蒭葮蒂葩葆萬葯葹萵蓊葢蒹蒿蒟蓙蓍蒻蓚蓐蓁蓆蓖蒡蔡蓿蓴蔗蔘蔬蔟蔕蔔蓼蕀蕣蕘蕈���".split(""); +for(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];} +D[229] = "����������������������������������������������������������������蕁蘂蕋蕕薀薤薈薑薊薨蕭薔薛藪薇薜蕷蕾薐藉薺藏薹藐藕藝藥藜藹蘊蘓蘋藾藺蘆蘢蘚蘰蘿虍乕虔號虧虱蚓蚣蚩蚪蚋蚌蚶蚯蛄蛆蚰蛉蠣蚫蛔蛞蛩蛬�蛟蛛蛯蜒蜆蜈蜀蜃蛻蜑蜉蜍蛹蜊蜴蜿蜷蜻蜥蜩蜚蝠蝟蝸蝌蝎蝴蝗蝨蝮蝙蝓蝣蝪蠅螢螟螂螯蟋螽蟀蟐雖螫蟄螳蟇蟆螻蟯蟲蟠蠏蠍蟾蟶蟷蠎蟒蠑蠖蠕蠢蠡蠱蠶蠹蠧蠻衄衂衒衙衞衢衫袁衾袞衵衽袵衲袂袗袒袮袙袢袍袤袰袿袱裃裄裔裘裙裝裹褂裼裴裨裲褄褌褊褓襃褞褥褪褫襁襄褻褶褸襌褝襠襞���".split(""); +for(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];} +D[230] = "����������������������������������������������������������������襦襤襭襪襯襴襷襾覃覈覊覓覘覡覩覦覬覯覲覺覽覿觀觚觜觝觧觴觸訃訖訐訌訛訝訥訶詁詛詒詆詈詼詭詬詢誅誂誄誨誡誑誥誦誚誣諄諍諂諚諫諳諧�諤諱謔諠諢諷諞諛謌謇謚諡謖謐謗謠謳鞫謦謫謾謨譁譌譏譎證譖譛譚譫譟譬譯譴譽讀讌讎讒讓讖讙讚谺豁谿豈豌豎豐豕豢豬豸豺貂貉貅貊貍貎貔豼貘戝貭貪貽貲貳貮貶賈賁賤賣賚賽賺賻贄贅贊贇贏贍贐齎贓賍贔贖赧赭赱赳趁趙跂趾趺跏跚跖跌跛跋跪跫跟跣跼踈踉跿踝踞踐踟蹂踵踰踴蹊���".split(""); +for(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];} +D[231] = "����������������������������������������������������������������蹇蹉蹌蹐蹈蹙蹤蹠踪蹣蹕蹶蹲蹼躁躇躅躄躋躊躓躑躔躙躪躡躬躰軆躱躾軅軈軋軛軣軼軻軫軾輊輅輕輒輙輓輜輟輛輌輦輳輻輹轅轂輾轌轉轆轎轗轜�轢轣轤辜辟辣辭辯辷迚迥迢迪迯邇迴逅迹迺逑逕逡逍逞逖逋逧逶逵逹迸遏遐遑遒逎遉逾遖遘遞遨遯遶隨遲邂遽邁邀邊邉邏邨邯邱邵郢郤扈郛鄂鄒鄙鄲鄰酊酖酘酣酥酩酳酲醋醉醂醢醫醯醪醵醴醺釀釁釉釋釐釖釟釡釛釼釵釶鈞釿鈔鈬鈕鈑鉞鉗鉅鉉鉤鉈銕鈿鉋鉐銜銖銓銛鉚鋏銹銷鋩錏鋺鍄錮���".split(""); +for(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];} +D[232] = "����������������������������������������������������������������錙錢錚錣錺錵錻鍜鍠鍼鍮鍖鎰鎬鎭鎔鎹鏖鏗鏨鏥鏘鏃鏝鏐鏈鏤鐚鐔鐓鐃鐇鐐鐶鐫鐵鐡鐺鑁鑒鑄鑛鑠鑢鑞鑪鈩鑰鑵鑷鑽鑚鑼鑾钁鑿閂閇閊閔閖閘閙�閠閨閧閭閼閻閹閾闊濶闃闍闌闕闔闖關闡闥闢阡阨阮阯陂陌陏陋陷陜陞陝陟陦陲陬隍隘隕隗險隧隱隲隰隴隶隸隹雎雋雉雍襍雜霍雕雹霄霆霈霓霎霑霏霖霙霤霪霰霹霽霾靄靆靈靂靉靜靠靤靦靨勒靫靱靹鞅靼鞁靺鞆鞋鞏鞐鞜鞨鞦鞣鞳鞴韃韆韈韋韜韭齏韲竟韶韵頏頌頸頤頡頷頽顆顏顋顫顯顰���".split(""); +for(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];} +D[233] = "����������������������������������������������������������������顱顴顳颪颯颱颶飄飃飆飩飫餃餉餒餔餘餡餝餞餤餠餬餮餽餾饂饉饅饐饋饑饒饌饕馗馘馥馭馮馼駟駛駝駘駑駭駮駱駲駻駸騁騏騅駢騙騫騷驅驂驀驃�騾驕驍驛驗驟驢驥驤驩驫驪骭骰骼髀髏髑髓體髞髟髢髣髦髯髫髮髴髱髷髻鬆鬘鬚鬟鬢鬣鬥鬧鬨鬩鬪鬮鬯鬲魄魃魏魍魎魑魘魴鮓鮃鮑鮖鮗鮟鮠鮨鮴鯀鯊鮹鯆鯏鯑鯒鯣鯢鯤鯔鯡鰺鯲鯱鯰鰕鰔鰉鰓鰌鰆鰈鰒鰊鰄鰮鰛鰥鰤鰡鰰鱇鰲鱆鰾鱚鱠鱧鱶鱸鳧鳬鳰鴉鴈鳫鴃鴆鴪鴦鶯鴣鴟鵄鴕鴒鵁鴿鴾鵆鵈���".split(""); +for(j = 0; j != D[233].length; ++j) if(D[233][j].charCodeAt(0) !== 0xFFFD) { e[D[233][j]] = 59648 + j; d[59648 + j] = D[233][j];} +D[234] = "����������������������������������������������������������������鵝鵞鵤鵑鵐鵙鵲鶉鶇鶫鵯鵺鶚鶤鶩鶲鷄鷁鶻鶸鶺鷆鷏鷂鷙鷓鷸鷦鷭鷯鷽鸚鸛鸞鹵鹹鹽麁麈麋麌麒麕麑麝麥麩麸麪麭靡黌黎黏黐黔黜點黝黠黥黨黯�黴黶黷黹黻黼黽鼇鼈皷鼕鼡鼬鼾齊齒齔齣齟齠齡齦齧齬齪齷齲齶龕龜龠堯槇遙瑤凜熙�������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];} +D[240] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[240].length; ++j) if(D[240][j].charCodeAt(0) !== 0xFFFD) { e[D[240][j]] = 61440 + j; d[61440 + j] = D[240][j];} +D[241] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[241].length; ++j) if(D[241][j].charCodeAt(0) !== 0xFFFD) { e[D[241][j]] = 61696 + j; d[61696 + j] = D[241][j];} +D[242] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[242].length; ++j) if(D[242][j].charCodeAt(0) !== 0xFFFD) { e[D[242][j]] = 61952 + j; d[61952 + j] = D[242][j];} +D[243] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[243].length; ++j) if(D[243][j].charCodeAt(0) !== 0xFFFD) { e[D[243][j]] = 62208 + j; d[62208 + j] = D[243][j];} +D[244] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[244].length; ++j) if(D[244][j].charCodeAt(0) !== 0xFFFD) { e[D[244][j]] = 62464 + j; d[62464 + j] = D[244][j];} +D[245] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[245].length; ++j) if(D[245][j].charCodeAt(0) !== 0xFFFD) { e[D[245][j]] = 62720 + j; d[62720 + j] = D[245][j];} +D[246] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[246].length; ++j) if(D[246][j].charCodeAt(0) !== 0xFFFD) { e[D[246][j]] = 62976 + j; d[62976 + j] = D[246][j];} +D[247] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[247].length; ++j) if(D[247][j].charCodeAt(0) !== 0xFFFD) { e[D[247][j]] = 63232 + j; d[63232 + j] = D[247][j];} +D[248] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[248].length; ++j) if(D[248][j].charCodeAt(0) !== 0xFFFD) { e[D[248][j]] = 63488 + j; d[63488 + j] = D[248][j];} +D[249] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[249].length; ++j) if(D[249][j].charCodeAt(0) !== 0xFFFD) { e[D[249][j]] = 63744 + j; d[63744 + j] = D[249][j];} +D[250] = "�������������������������������������������������������������������������������������¦'"����纊褜鍈銈蓜俉炻昱棈鋹曻彅丨仡仼伀伃伹佖侒侊侚侔俍偀倢俿倞偆偰偂傔僴僘兊�兤冝冾凬刕劜劦勀勛匀匇匤卲厓厲叝﨎咜咊咩哿喆坙坥垬埈埇﨏塚增墲夋奓奛奝奣妤妺孖寀甯寘寬尞岦岺峵崧嵓﨑嵂嵭嶸嶹巐弡弴彧德忞恝悅悊惞惕愠惲愑愷愰憘戓抦揵摠撝擎敎昀昕昻昉昮昞昤晥晗晙晴晳暙暠暲暿曺朎朗杦枻桒柀栁桄棏﨓楨﨔榘槢樰橫橆橳橾櫢櫤毖氿汜沆汯泚洄涇浯���".split(""); +for(j = 0; j != D[250].length; ++j) if(D[250][j].charCodeAt(0) !== 0xFFFD) { e[D[250][j]] = 64000 + j; d[64000 + j] = D[250][j];} +D[251] = "����������������������������������������������������������������涖涬淏淸淲淼渹湜渧渼溿澈澵濵瀅瀇瀨炅炫焏焄煜煆煇凞燁燾犱犾猤猪獷玽珉珖珣珒琇珵琦琪琩琮瑢璉璟甁畯皂皜皞皛皦益睆劯砡硎硤硺礰礼神�祥禔福禛竑竧靖竫箞精絈絜綷綠緖繒罇羡羽茁荢荿菇菶葈蒴蕓蕙蕫﨟薰蘒﨡蠇裵訒訷詹誧誾諟諸諶譓譿賰賴贒赶﨣軏﨤逸遧郞都鄕鄧釚釗釞釭釮釤釥鈆鈐鈊鈺鉀鈼鉎鉙鉑鈹鉧銧鉷鉸鋧鋗鋙鋐﨧鋕鋠鋓錥錡鋻﨨錞鋿錝錂鍰鍗鎤鏆鏞鏸鐱鑅鑈閒隆﨩隝隯霳霻靃靍靏靑靕顗顥飯飼餧館馞驎髙���".split(""); +for(j = 0; j != D[251].length; ++j) if(D[251][j].charCodeAt(0) !== 0xFFFD) { e[D[251][j]] = 64256 + j; d[64256 + j] = D[251][j];} +D[252] = "����������������������������������������������������������������髜魵魲鮏鮱鮻鰀鵰鵫鶴鸙黑������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[252].length; ++j) if(D[252][j].charCodeAt(0) !== 0xFFFD) { e[D[252][j]] = 64512 + j; d[64512 + j] = D[252][j];} +return {"enc": e, "dec": d }; })(); +cptable[10002] = (function(){ var d = [], e = {}, D = [], j; +D[0] = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€����������������������������������������������������������������������������������������������������������������������������©™…".split(""); +for(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];} +D[129] = "���������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[129].length; ++j) if(D[129][j].charCodeAt(0) !== 0xFFFD) { e[D[129][j]] = 33024 + j; d[33024 + j] = D[129][j];} +D[130] = "���������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[130].length; ++j) if(D[130][j].charCodeAt(0) !== 0xFFFD) { e[D[130][j]] = 33280 + j; d[33280 + j] = D[130][j];} +D[131] = "���������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[131].length; ++j) if(D[131][j].charCodeAt(0) !== 0xFFFD) { e[D[131][j]] = 33536 + j; d[33536 + j] = D[131][j];} +D[132] = "���������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[132].length; ++j) if(D[132][j].charCodeAt(0) !== 0xFFFD) { e[D[132][j]] = 33792 + j; d[33792 + j] = D[132][j];} +D[133] = "���������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[133].length; ++j) if(D[133][j].charCodeAt(0) !== 0xFFFD) { e[D[133][j]] = 34048 + j; d[34048 + j] = D[133][j];} +D[134] = "���������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[134].length; ++j) if(D[134][j].charCodeAt(0) !== 0xFFFD) { e[D[134][j]] = 34304 + j; d[34304 + j] = D[134][j];} +D[135] = "���������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[135].length; ++j) if(D[135][j].charCodeAt(0) !== 0xFFFD) { e[D[135][j]] = 34560 + j; d[34560 + j] = D[135][j];} +D[136] = "���������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[136].length; ++j) if(D[136][j].charCodeAt(0) !== 0xFFFD) { e[D[136][j]] = 34816 + j; d[34816 + j] = D[136][j];} +D[137] = "���������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[137].length; ++j) if(D[137][j].charCodeAt(0) !== 0xFFFD) { e[D[137][j]] = 35072 + j; d[35072 + j] = D[137][j];} +D[138] = "���������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[138].length; ++j) if(D[138][j].charCodeAt(0) !== 0xFFFD) { e[D[138][j]] = 35328 + j; d[35328 + j] = D[138][j];} +D[139] = "���������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[139].length; ++j) if(D[139][j].charCodeAt(0) !== 0xFFFD) { e[D[139][j]] = 35584 + j; d[35584 + j] = D[139][j];} +D[140] = "���������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[140].length; ++j) if(D[140][j].charCodeAt(0) !== 0xFFFD) { e[D[140][j]] = 35840 + j; d[35840 + j] = D[140][j];} +D[141] = "���������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[141].length; ++j) if(D[141][j].charCodeAt(0) !== 0xFFFD) { e[D[141][j]] = 36096 + j; d[36096 + j] = D[141][j];} +D[142] = "���������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[142].length; ++j) if(D[142][j].charCodeAt(0) !== 0xFFFD) { e[D[142][j]] = 36352 + j; d[36352 + j] = D[142][j];} +D[143] = "���������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[143].length; ++j) if(D[143][j].charCodeAt(0) !== 0xFFFD) { e[D[143][j]] = 36608 + j; d[36608 + j] = D[143][j];} +D[144] = "���������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[144].length; ++j) if(D[144][j].charCodeAt(0) !== 0xFFFD) { e[D[144][j]] = 36864 + j; d[36864 + j] = D[144][j];} +D[145] = "���������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[145].length; ++j) if(D[145][j].charCodeAt(0) !== 0xFFFD) { e[D[145][j]] = 37120 + j; d[37120 + j] = D[145][j];} +D[146] = "���������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[146].length; ++j) if(D[146][j].charCodeAt(0) !== 0xFFFD) { e[D[146][j]] = 37376 + j; d[37376 + j] = D[146][j];} +D[147] = "���������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[147].length; ++j) if(D[147][j].charCodeAt(0) !== 0xFFFD) { e[D[147][j]] = 37632 + j; d[37632 + j] = D[147][j];} +D[148] = "���������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[148].length; ++j) if(D[148][j].charCodeAt(0) !== 0xFFFD) { e[D[148][j]] = 37888 + j; d[37888 + j] = D[148][j];} +D[149] = "���������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[149].length; ++j) if(D[149][j].charCodeAt(0) !== 0xFFFD) { e[D[149][j]] = 38144 + j; d[38144 + j] = D[149][j];} +D[150] = "���������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[150].length; ++j) if(D[150][j].charCodeAt(0) !== 0xFFFD) { e[D[150][j]] = 38400 + j; d[38400 + j] = D[150][j];} +D[151] = "���������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[151].length; ++j) if(D[151][j].charCodeAt(0) !== 0xFFFD) { e[D[151][j]] = 38656 + j; d[38656 + j] = D[151][j];} +D[152] = "���������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[152].length; ++j) if(D[152][j].charCodeAt(0) !== 0xFFFD) { e[D[152][j]] = 38912 + j; d[38912 + j] = D[152][j];} +D[153] = "���������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[153].length; ++j) if(D[153][j].charCodeAt(0) !== 0xFFFD) { e[D[153][j]] = 39168 + j; d[39168 + j] = D[153][j];} +D[154] = "���������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[154].length; ++j) if(D[154][j].charCodeAt(0) !== 0xFFFD) { e[D[154][j]] = 39424 + j; d[39424 + j] = D[154][j];} +D[155] = "���������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[155].length; ++j) if(D[155][j].charCodeAt(0) !== 0xFFFD) { e[D[155][j]] = 39680 + j; d[39680 + j] = D[155][j];} +D[156] = "���������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[156].length; ++j) if(D[156][j].charCodeAt(0) !== 0xFFFD) { e[D[156][j]] = 39936 + j; d[39936 + j] = D[156][j];} +D[157] = "���������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[157].length; ++j) if(D[157][j].charCodeAt(0) !== 0xFFFD) { e[D[157][j]] = 40192 + j; d[40192 + j] = D[157][j];} +D[158] = "���������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[158].length; ++j) if(D[158][j].charCodeAt(0) !== 0xFFFD) { e[D[158][j]] = 40448 + j; d[40448 + j] = D[158][j];} +D[159] = "���������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[159].length; ++j) if(D[159][j].charCodeAt(0) !== 0xFFFD) { e[D[159][j]] = 40704 + j; d[40704 + j] = D[159][j];} +D[160] = "���������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[160].length; ++j) if(D[160][j].charCodeAt(0) !== 0xFFFD) { e[D[160][j]] = 40960 + j; d[40960 + j] = D[160][j];} +D[161] = "���������������������������������������������������������������� ,、。.‧;:?!︰�‥﹐﹑﹒·﹔﹕﹖﹗|–︱—︳╴︴﹏()︵︶{}︷︸〔〕︹︺【】︻︼《》︽︾〈〉︿﹀「」﹁﹂『』﹃﹄﹙﹚����������������������������������﹛﹜﹝﹞‘’“”〝〞‵′#&*※§〃○●△▲◎☆★◇◆□■▽▼㊣℅¯ ̄_ˍ﹉﹊﹍﹎﹋﹌﹟﹠﹡+-×÷±√<>=≦≧≠∞≒≡﹢﹣﹤﹥﹦~∩∪⊥∠∟⊿㏒㏑∫∮∵∴♀♂⊕⊙↑↓←→↖↗↙↘∥∣/�".split(""); +for(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];} +D[162] = "����������������������������������������������������������������\∕﹨$¥〒¢£%@℃℉﹩﹪﹫㏕㎜㎝㎞㏎㎡㎎㎏㏄°兙兛兞兝兡兣嗧瓩糎▁▂▃▄▅▆▇█▏▎▍▌▋▊▉┼┴┬┤├▔─│▕┌┐└┘╭����������������������������������╮╰╯����◢◣◥◤╱╲╳0123456789ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩ〡〢〣〤〥〦〧〨〩�卄�ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuv�".split(""); +for(j = 0; j != D[162].length; ++j) if(D[162][j].charCodeAt(0) !== 0xFFFD) { e[D[162][j]] = 41472 + j; d[41472 + j] = D[162][j];} +D[163] = "����������������������������������������������������������������wxyzΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩαβγδεζηθικλμνξοπρστυφχψωㄅㄆㄇㄈㄉㄊㄋㄌㄍㄎㄏ����������������������������������ㄐㄑㄒㄓㄔㄕㄖㄗㄘㄙㄚㄛㄜㄝㄞㄟㄠㄡㄢㄣㄤㄥㄦㄧㄨㄩ˙ˉˊˇˋ����������������������������������������������������������������".split(""); +for(j = 0; j != D[163].length; ++j) if(D[163][j].charCodeAt(0) !== 0xFFFD) { e[D[163][j]] = 41728 + j; d[41728 + j] = D[163][j];} +D[164] = "����������������������������������������������������������������一乙丁七乃九了二人儿入八几刀刁力匕十卜又三下丈上丫丸凡久么也乞于亡兀刃勺千叉口土士夕大女子孑孓寸小尢尸山川工己已巳巾干廾弋弓才����������������������������������丑丐不中丰丹之尹予云井互五亢仁什仃仆仇仍今介仄元允內六兮公冗凶分切刈勻勾勿化匹午升卅卞厄友及反壬天夫太夭孔少尤尺屯巴幻廿弔引心戈戶手扎支文斗斤方日曰月木欠止歹毋比毛氏水火爪父爻片牙牛犬王丙�".split(""); +for(j = 0; j != D[164].length; ++j) if(D[164][j].charCodeAt(0) !== 0xFFFD) { e[D[164][j]] = 41984 + j; d[41984 + j] = D[164][j];} +D[165] = "����������������������������������������������������������������世丕且丘主乍乏乎以付仔仕他仗代令仙仞充兄冉冊冬凹出凸刊加功包匆北匝仟半卉卡占卯卮去可古右召叮叩叨叼司叵叫另只史叱台句叭叻四囚外����������������������������������央失奴奶孕它尼巨巧左市布平幼弁弘弗必戊打扔扒扑斥旦朮本未末札正母民氐永汁汀氾犯玄玉瓜瓦甘生用甩田由甲申疋白皮皿目矛矢石示禾穴立丞丟乒乓乩亙交亦亥仿伉伙伊伕伍伐休伏仲件任仰仳份企伋光兇兆先全�".split(""); +for(j = 0; j != D[165].length; ++j) if(D[165][j].charCodeAt(0) !== 0xFFFD) { e[D[165][j]] = 42240 + j; d[42240 + j] = D[165][j];} +D[166] = "����������������������������������������������������������������共再冰列刑划刎刖劣匈匡匠印危吉吏同吊吐吁吋各向名合吃后吆吒因回囝圳地在圭圬圯圩夙多夷夸妄奸妃好她如妁字存宇守宅安寺尖屹州帆并年����������������������������������式弛忙忖戎戌戍成扣扛托收早旨旬旭曲曳有朽朴朱朵次此死氖汝汗汙江池汐汕污汛汍汎灰牟牝百竹米糸缶羊羽老考而耒耳聿肉肋肌臣自至臼舌舛舟艮色艾虫血行衣西阡串亨位住佇佗佞伴佛何估佐佑伽伺伸佃佔似但佣�".split(""); +for(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];} +D[167] = "����������������������������������������������������������������作你伯低伶余佝佈佚兌克免兵冶冷別判利刪刨劫助努劬匣即卵吝吭吞吾否呎吧呆呃吳呈呂君吩告吹吻吸吮吵吶吠吼呀吱含吟听囪困囤囫坊坑址坍����������������������������������均坎圾坐坏圻壯夾妝妒妨妞妣妙妖妍妤妓妊妥孝孜孚孛完宋宏尬局屁尿尾岐岑岔岌巫希序庇床廷弄弟彤形彷役忘忌志忍忱快忸忪戒我抄抗抖技扶抉扭把扼找批扳抒扯折扮投抓抑抆改攻攸旱更束李杏材村杜杖杞杉杆杠�".split(""); +for(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];} +D[168] = "����������������������������������������������������������������杓杗步每求汞沙沁沈沉沅沛汪決沐汰沌汨沖沒汽沃汲汾汴沆汶沍沔沘沂灶灼災灸牢牡牠狄狂玖甬甫男甸皂盯矣私秀禿究系罕肖肓肝肘肛肚育良芒����������������������������������芋芍見角言谷豆豕貝赤走足身車辛辰迂迆迅迄巡邑邢邪邦那酉釆里防阮阱阪阬並乖乳事些亞享京佯依侍佳使佬供例來侃佰併侈佩佻侖佾侏侑佺兔兒兕兩具其典冽函刻券刷刺到刮制剁劾劻卒協卓卑卦卷卸卹取叔受味呵�".split(""); +for(j = 0; j != D[168].length; ++j) if(D[168][j].charCodeAt(0) !== 0xFFFD) { e[D[168][j]] = 43008 + j; d[43008 + j] = D[168][j];} +D[169] = "����������������������������������������������������������������咖呸咕咀呻呷咄咒咆呼咐呱呶和咚呢周咋命咎固垃坷坪坩坡坦坤坼夜奉奇奈奄奔妾妻委妹妮姑姆姐姍始姓姊妯妳姒姅孟孤季宗定官宜宙宛尚屈居����������������������������������屆岷岡岸岩岫岱岳帘帚帖帕帛帑幸庚店府底庖延弦弧弩往征彿彼忝忠忽念忿怏怔怯怵怖怪怕怡性怩怫怛或戕房戾所承拉拌拄抿拂抹拒招披拓拔拋拈抨抽押拐拙拇拍抵拚抱拘拖拗拆抬拎放斧於旺昔易昌昆昂明昀昏昕昊�".split(""); +for(j = 0; j != D[169].length; ++j) if(D[169][j].charCodeAt(0) !== 0xFFFD) { e[D[169][j]] = 43264 + j; d[43264 + j] = D[169][j];} +D[170] = "����������������������������������������������������������������昇服朋杭枋枕東果杳杷枇枝林杯杰板枉松析杵枚枓杼杪杲欣武歧歿氓氛泣注泳沱泌泥河沽沾沼波沫法泓沸泄油況沮泗泅泱沿治泡泛泊沬泯泜泖泠����������������������������������炕炎炒炊炙爬爭爸版牧物狀狎狙狗狐玩玨玟玫玥甽疝疙疚的盂盲直知矽社祀祁秉秈空穹竺糾罔羌羋者肺肥肢肱股肫肩肴肪肯臥臾舍芳芝芙芭芽芟芹花芬芥芯芸芣芰芾芷虎虱初表軋迎返近邵邸邱邶采金長門阜陀阿阻附�".split(""); +for(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];} +D[171] = "����������������������������������������������������������������陂隹雨青非亟亭亮信侵侯便俠俑俏保促侶俘俟俊俗侮俐俄係俚俎俞侷兗冒冑冠剎剃削前剌剋則勇勉勃勁匍南卻厚叛咬哀咨哎哉咸咦咳哇哂咽咪品����������������������������������哄哈咯咫咱咻咩咧咿囿垂型垠垣垢城垮垓奕契奏奎奐姜姘姿姣姨娃姥姪姚姦威姻孩宣宦室客宥封屎屏屍屋峙峒巷帝帥帟幽庠度建弈弭彥很待徊律徇後徉怒思怠急怎怨恍恰恨恢恆恃恬恫恪恤扁拜挖按拼拭持拮拽指拱拷�".split(""); +for(j = 0; j != D[171].length; ++j) if(D[171][j].charCodeAt(0) !== 0xFFFD) { e[D[171][j]] = 43776 + j; d[43776 + j] = D[171][j];} +D[172] = "����������������������������������������������������������������拯括拾拴挑挂政故斫施既春昭映昧是星昨昱昤曷柿染柱柔某柬架枯柵柩柯柄柑枴柚查枸柏柞柳枰柙柢柝柒歪殃殆段毒毗氟泉洋洲洪流津洌洱洞洗����������������������������������活洽派洶洛泵洹洧洸洩洮洵洎洫炫為炳炬炯炭炸炮炤爰牲牯牴狩狠狡玷珊玻玲珍珀玳甚甭畏界畎畋疫疤疥疢疣癸皆皇皈盈盆盃盅省盹相眉看盾盼眇矜砂研砌砍祆祉祈祇禹禺科秒秋穿突竿竽籽紂紅紀紉紇約紆缸美羿耄�".split(""); +for(j = 0; j != D[172].length; ++j) if(D[172][j].charCodeAt(0) !== 0xFFFD) { e[D[172][j]] = 44032 + j; d[44032 + j] = D[172][j];} +D[173] = "����������������������������������������������������������������耐耍耑耶胖胥胚胃胄背胡胛胎胞胤胝致舢苧范茅苣苛苦茄若茂茉苒苗英茁苜苔苑苞苓苟苯茆虐虹虻虺衍衫要觔計訂訃貞負赴赳趴軍軌述迦迢迪迥����������������������������������迭迫迤迨郊郎郁郃酋酊重閂限陋陌降面革韋韭音頁風飛食首香乘亳倌倍倣俯倦倥俸倩倖倆值借倚倒們俺倀倔倨俱倡個候倘俳修倭倪俾倫倉兼冤冥冢凍凌准凋剖剜剔剛剝匪卿原厝叟哨唐唁唷哼哥哲唆哺唔哩哭員唉哮哪�".split(""); +for(j = 0; j != D[173].length; ++j) if(D[173][j].charCodeAt(0) !== 0xFFFD) { e[D[173][j]] = 44288 + j; d[44288 + j] = D[173][j];} +D[174] = "����������������������������������������������������������������哦唧唇哽唏圃圄埂埔埋埃堉夏套奘奚娑娘娜娟娛娓姬娠娣娩娥娌娉孫屘宰害家宴宮宵容宸射屑展屐峭峽峻峪峨峰島崁峴差席師庫庭座弱徒徑徐恙����������������������������������恣恥恐恕恭恩息悄悟悚悍悔悌悅悖扇拳挈拿捎挾振捕捂捆捏捉挺捐挽挪挫挨捍捌效敉料旁旅時晉晏晃晒晌晅晁書朔朕朗校核案框桓根桂桔栩梳栗桌桑栽柴桐桀格桃株桅栓栘桁殊殉殷氣氧氨氦氤泰浪涕消涇浦浸海浙涓�".split(""); +for(j = 0; j != D[174].length; ++j) if(D[174][j].charCodeAt(0) !== 0xFFFD) { e[D[174][j]] = 44544 + j; d[44544 + j] = D[174][j];} +D[175] = "����������������������������������������������������������������浬涉浮浚浴浩涌涊浹涅浥涔烊烘烤烙烈烏爹特狼狹狽狸狷玆班琉珮珠珪珞畔畝畜畚留疾病症疲疳疽疼疹痂疸皋皰益盍盎眩真眠眨矩砰砧砸砝破砷����������������������������������砥砭砠砟砲祕祐祠祟祖神祝祗祚秤秣秧租秦秩秘窄窈站笆笑粉紡紗紋紊素索純紐紕級紜納紙紛缺罟羔翅翁耆耘耕耙耗耽耿胱脂胰脅胭胴脆胸胳脈能脊胼胯臭臬舀舐航舫舨般芻茫荒荔荊茸荐草茵茴荏茲茹茶茗荀茱茨荃�".split(""); +for(j = 0; j != D[175].length; ++j) if(D[175][j].charCodeAt(0) !== 0xFFFD) { e[D[175][j]] = 44800 + j; d[44800 + j] = D[175][j];} +D[176] = "����������������������������������������������������������������虔蚊蚪蚓蚤蚩蚌蚣蚜衰衷袁袂衽衹記訐討訌訕訊託訓訖訏訑豈豺豹財貢起躬軒軔軏辱送逆迷退迺迴逃追逅迸邕郡郝郢酒配酌釘針釗釜釙閃院陣陡����������������������������������陛陝除陘陞隻飢馬骨高鬥鬲鬼乾偺偽停假偃偌做偉健偶偎偕偵側偷偏倏偯偭兜冕凰剪副勒務勘動匐匏匙匿區匾參曼商啪啦啄啞啡啃啊唱啖問啕唯啤唸售啜唬啣唳啁啗圈國圉域堅堊堆埠埤基堂堵執培夠奢娶婁婉婦婪婀�".split(""); +for(j = 0; j != D[176].length; ++j) if(D[176][j].charCodeAt(0) !== 0xFFFD) { e[D[176][j]] = 45056 + j; d[45056 + j] = D[176][j];} +D[177] = "����������������������������������������������������������������娼婢婚婆婊孰寇寅寄寂宿密尉專將屠屜屝崇崆崎崛崖崢崑崩崔崙崤崧崗巢常帶帳帷康庸庶庵庾張強彗彬彩彫得徙從徘御徠徜恿患悉悠您惋悴惦悽����������������������������������情悻悵惜悼惘惕惆惟悸惚惇戚戛扈掠控捲掖探接捷捧掘措捱掩掉掃掛捫推掄授掙採掬排掏掀捻捩捨捺敝敖救教敗啟敏敘敕敔斜斛斬族旋旌旎晝晚晤晨晦晞曹勗望梁梯梢梓梵桿桶梱梧梗械梃棄梭梆梅梔條梨梟梡梂欲殺�".split(""); +for(j = 0; j != D[177].length; ++j) if(D[177][j].charCodeAt(0) !== 0xFFFD) { e[D[177][j]] = 45312 + j; d[45312 + j] = D[177][j];} +D[178] = "����������������������������������������������������������������毫毬氫涎涼淳淙液淡淌淤添淺清淇淋涯淑涮淞淹涸混淵淅淒渚涵淚淫淘淪深淮淨淆淄涪淬涿淦烹焉焊烽烯爽牽犁猜猛猖猓猙率琅琊球理現琍瓠瓶����������������������������������瓷甜產略畦畢異疏痔痕疵痊痍皎盔盒盛眷眾眼眶眸眺硫硃硎祥票祭移窒窕笠笨笛第符笙笞笮粒粗粕絆絃統紮紹紼絀細紳組累終紲紱缽羞羚翌翎習耜聊聆脯脖脣脫脩脰脤舂舵舷舶船莎莞莘荸莢莖莽莫莒莊莓莉莠荷荻荼�".split(""); +for(j = 0; j != D[178].length; ++j) if(D[178][j].charCodeAt(0) !== 0xFFFD) { e[D[178][j]] = 45568 + j; d[45568 + j] = D[178][j];} +D[179] = "����������������������������������������������������������������莆莧處彪蛇蛀蚶蛄蚵蛆蛋蚱蚯蛉術袞袈被袒袖袍袋覓規訪訝訣訥許設訟訛訢豉豚販責貫貨貪貧赧赦趾趺軛軟這逍通逗連速逝逐逕逞造透逢逖逛途����������������������������������部郭都酗野釵釦釣釧釭釩閉陪陵陳陸陰陴陶陷陬雀雪雩章竟頂頃魚鳥鹵鹿麥麻傢傍傅備傑傀傖傘傚最凱割剴創剩勞勝勛博厥啻喀喧啼喊喝喘喂喜喪喔喇喋喃喳單喟唾喲喚喻喬喱啾喉喫喙圍堯堪場堤堰報堡堝堠壹壺奠�".split(""); +for(j = 0; j != D[179].length; ++j) if(D[179][j].charCodeAt(0) !== 0xFFFD) { e[D[179][j]] = 45824 + j; d[45824 + j] = D[179][j];} +D[180] = "����������������������������������������������������������������婷媚婿媒媛媧孳孱寒富寓寐尊尋就嵌嵐崴嵇巽幅帽幀幃幾廊廁廂廄弼彭復循徨惑惡悲悶惠愜愣惺愕惰惻惴慨惱愎惶愉愀愒戟扉掣掌描揀揩揉揆揍����������������������������������插揣提握揖揭揮捶援揪換摒揚揹敞敦敢散斑斐斯普晰晴晶景暑智晾晷曾替期朝棺棕棠棘棗椅棟棵森棧棹棒棲棣棋棍植椒椎棉棚楮棻款欺欽殘殖殼毯氮氯氬港游湔渡渲湧湊渠渥渣減湛湘渤湖湮渭渦湯渴湍渺測湃渝渾滋�".split(""); +for(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];} +D[181] = "����������������������������������������������������������������溉渙湎湣湄湲湩湟焙焚焦焰無然煮焜牌犄犀猶猥猴猩琺琪琳琢琥琵琶琴琯琛琦琨甥甦畫番痢痛痣痙痘痞痠登發皖皓皴盜睏短硝硬硯稍稈程稅稀窘����������������������������������窗窖童竣等策筆筐筒答筍筋筏筑粟粥絞結絨絕紫絮絲絡給絢絰絳善翔翕耋聒肅腕腔腋腑腎脹腆脾腌腓腴舒舜菩萃菸萍菠菅萋菁華菱菴著萊菰萌菌菽菲菊萸萎萄菜萇菔菟虛蛟蛙蛭蛔蛛蛤蛐蛞街裁裂袱覃視註詠評詞証詁�".split(""); +for(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];} +D[182] = "����������������������������������������������������������������詔詛詐詆訴診訶詖象貂貯貼貳貽賁費賀貴買貶貿貸越超趁跎距跋跚跑跌跛跆軻軸軼辜逮逵週逸進逶鄂郵鄉郾酣酥量鈔鈕鈣鈉鈞鈍鈐鈇鈑閔閏開閑����������������������������������間閒閎隊階隋陽隅隆隍陲隄雁雅雄集雇雯雲韌項順須飧飪飯飩飲飭馮馭黃黍黑亂傭債傲傳僅傾催傷傻傯僇剿剷剽募勦勤勢勣匯嗟嗨嗓嗦嗎嗜嗇嗑嗣嗤嗯嗚嗡嗅嗆嗥嗉園圓塞塑塘塗塚塔填塌塭塊塢塒塋奧嫁嫉嫌媾媽媼�".split(""); +for(j = 0; j != D[182].length; ++j) if(D[182][j].charCodeAt(0) !== 0xFFFD) { e[D[182][j]] = 46592 + j; d[46592 + j] = D[182][j];} +D[183] = "����������������������������������������������������������������媳嫂媲嵩嵯幌幹廉廈弒彙徬微愚意慈感想愛惹愁愈慎慌慄慍愾愴愧愍愆愷戡戢搓搾搞搪搭搽搬搏搜搔損搶搖搗搆敬斟新暗暉暇暈暖暄暘暍會榔業����������������������������������楚楷楠楔極椰概楊楨楫楞楓楹榆楝楣楛歇歲毀殿毓毽溢溯滓溶滂源溝滇滅溥溘溼溺溫滑準溜滄滔溪溧溴煎煙煩煤煉照煜煬煦煌煥煞煆煨煖爺牒猷獅猿猾瑯瑚瑕瑟瑞瑁琿瑙瑛瑜當畸瘀痰瘁痲痱痺痿痴痳盞盟睛睫睦睞督�".split(""); +for(j = 0; j != D[183].length; ++j) if(D[183][j].charCodeAt(0) !== 0xFFFD) { e[D[183][j]] = 46848 + j; d[46848 + j] = D[183][j];} +D[184] = "����������������������������������������������������������������睹睪睬睜睥睨睢矮碎碰碗碘碌碉硼碑碓硿祺祿禁萬禽稜稚稠稔稟稞窟窠筷節筠筮筧粱粳粵經絹綑綁綏絛置罩罪署義羨群聖聘肆肄腱腰腸腥腮腳腫����������������������������������腹腺腦舅艇蒂葷落萱葵葦葫葉葬葛萼萵葡董葩葭葆虞虜號蛹蜓蜈蜇蜀蛾蛻蜂蜃蜆蜊衙裟裔裙補裘裝裡裊裕裒覜解詫該詳試詩詰誇詼詣誠話誅詭詢詮詬詹詻訾詨豢貊貉賊資賈賄貲賃賂賅跡跟跨路跳跺跪跤跦躲較載軾輊�".split(""); +for(j = 0; j != D[184].length; ++j) if(D[184][j].charCodeAt(0) !== 0xFFFD) { e[D[184][j]] = 47104 + j; d[47104 + j] = D[184][j];} +D[185] = "����������������������������������������������������������������辟農運遊道遂達逼違遐遇遏過遍遑逾遁鄒鄗酬酪酩釉鈷鉗鈸鈽鉀鈾鉛鉋鉤鉑鈴鉉鉍鉅鈹鈿鉚閘隘隔隕雍雋雉雊雷電雹零靖靴靶預頑頓頊頒頌飼飴����������������������������������飽飾馳馱馴髡鳩麂鼎鼓鼠僧僮僥僖僭僚僕像僑僱僎僩兢凳劃劂匱厭嗾嘀嘛嘗嗽嘔嘆嘉嘍嘎嗷嘖嘟嘈嘐嗶團圖塵塾境墓墊塹墅塽壽夥夢夤奪奩嫡嫦嫩嫗嫖嫘嫣孵寞寧寡寥實寨寢寤察對屢嶄嶇幛幣幕幗幔廓廖弊彆彰徹慇�".split(""); +for(j = 0; j != D[185].length; ++j) if(D[185][j].charCodeAt(0) !== 0xFFFD) { e[D[185][j]] = 47360 + j; d[47360 + j] = D[185][j];} +D[186] = "����������������������������������������������������������������愿態慷慢慣慟慚慘慵截撇摘摔撤摸摟摺摑摧搴摭摻敲斡旗旖暢暨暝榜榨榕槁榮槓構榛榷榻榫榴槐槍榭槌榦槃榣歉歌氳漳演滾漓滴漩漾漠漬漏漂漢����������������������������������滿滯漆漱漸漲漣漕漫漯澈漪滬漁滲滌滷熔熙煽熊熄熒爾犒犖獄獐瑤瑣瑪瑰瑭甄疑瘧瘍瘋瘉瘓盡監瞄睽睿睡磁碟碧碳碩碣禎福禍種稱窪窩竭端管箕箋筵算箝箔箏箸箇箄粹粽精綻綰綜綽綾綠緊綴網綱綺綢綿綵綸維緒緇綬�".split(""); +for(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];} +D[187] = "����������������������������������������������������������������罰翠翡翟聞聚肇腐膀膏膈膊腿膂臧臺與舔舞艋蓉蒿蓆蓄蒙蒞蒲蒜蓋蒸蓀蓓蒐蒼蓑蓊蜿蜜蜻蜢蜥蜴蜘蝕蜷蜩裳褂裴裹裸製裨褚裯誦誌語誣認誡誓誤����������������������������������說誥誨誘誑誚誧豪貍貌賓賑賒赫趙趕跼輔輒輕輓辣遠遘遜遣遙遞遢遝遛鄙鄘鄞酵酸酷酴鉸銀銅銘銖鉻銓銜銨鉼銑閡閨閩閣閥閤隙障際雌雒需靼鞅韶頗領颯颱餃餅餌餉駁骯骰髦魁魂鳴鳶鳳麼鼻齊億儀僻僵價儂儈儉儅凜�".split(""); +for(j = 0; j != D[187].length; ++j) if(D[187][j].charCodeAt(0) !== 0xFFFD) { e[D[187][j]] = 47872 + j; d[47872 + j] = D[187][j];} +D[188] = "����������������������������������������������������������������劇劈劉劍劊勰厲嘮嘻嘹嘲嘿嘴嘩噓噎噗噴嘶嘯嘰墀墟增墳墜墮墩墦奭嬉嫻嬋嫵嬌嬈寮寬審寫層履嶝嶔幢幟幡廢廚廟廝廣廠彈影德徵慶慧慮慝慕憂����������������������������������慼慰慫慾憧憐憫憎憬憚憤憔憮戮摩摯摹撞撲撈撐撰撥撓撕撩撒撮播撫撚撬撙撢撳敵敷數暮暫暴暱樣樟槨樁樞標槽模樓樊槳樂樅槭樑歐歎殤毅毆漿潼澄潑潦潔澆潭潛潸潮澎潺潰潤澗潘滕潯潠潟熟熬熱熨牖犛獎獗瑩璋璃�".split(""); +for(j = 0; j != D[188].length; ++j) if(D[188][j].charCodeAt(0) !== 0xFFFD) { e[D[188][j]] = 48128 + j; d[48128 + j] = D[188][j];} +D[189] = "����������������������������������������������������������������瑾璀畿瘠瘩瘟瘤瘦瘡瘢皚皺盤瞎瞇瞌瞑瞋磋磅確磊碾磕碼磐稿稼穀稽稷稻窯窮箭箱範箴篆篇篁箠篌糊締練緯緻緘緬緝編緣線緞緩綞緙緲緹罵罷羯����������������������������������翩耦膛膜膝膠膚膘蔗蔽蔚蓮蔬蔭蔓蔑蔣蔡蔔蓬蔥蓿蔆螂蝴蝶蝠蝦蝸蝨蝙蝗蝌蝓衛衝褐複褒褓褕褊誼諒談諄誕請諸課諉諂調誰論諍誶誹諛豌豎豬賠賞賦賤賬賭賢賣賜質賡赭趟趣踫踐踝踢踏踩踟踡踞躺輝輛輟輩輦輪輜輞�".split(""); +for(j = 0; j != D[189].length; ++j) if(D[189][j].charCodeAt(0) !== 0xFFFD) { e[D[189][j]] = 48384 + j; d[48384 + j] = D[189][j];} +D[190] = "����������������������������������������������������������������輥適遮遨遭遷鄰鄭鄧鄱醇醉醋醃鋅銻銷鋪銬鋤鋁銳銼鋒鋇鋰銲閭閱霄霆震霉靠鞍鞋鞏頡頫頜颳養餓餒餘駝駐駟駛駑駕駒駙骷髮髯鬧魅魄魷魯鴆鴉����������������������������������鴃麩麾黎墨齒儒儘儔儐儕冀冪凝劑劓勳噙噫噹噩噤噸噪器噥噱噯噬噢噶壁墾壇壅奮嬝嬴學寰導彊憲憑憩憊懍憶憾懊懈戰擅擁擋撻撼據擄擇擂操撿擒擔撾整曆曉暹曄曇暸樽樸樺橙橫橘樹橄橢橡橋橇樵機橈歙歷氅濂澱澡�".split(""); +for(j = 0; j != D[190].length; ++j) if(D[190][j].charCodeAt(0) !== 0xFFFD) { e[D[190][j]] = 48640 + j; d[48640 + j] = D[190][j];} +D[191] = "����������������������������������������������������������������濃澤濁澧澳激澹澶澦澠澴熾燉燐燒燈燕熹燎燙燜燃燄獨璜璣璘璟璞瓢甌甍瘴瘸瘺盧盥瞠瞞瞟瞥磨磚磬磧禦積穎穆穌穋窺篙簑築篤篛篡篩篦糕糖縊����������������������������������縑縈縛縣縞縝縉縐罹羲翰翱翮耨膳膩膨臻興艘艙蕊蕙蕈蕨蕩蕃蕉蕭蕪蕞螃螟螞螢融衡褪褲褥褫褡親覦諦諺諫諱謀諜諧諮諾謁謂諷諭諳諶諼豫豭貓賴蹄踱踴蹂踹踵輻輯輸輳辨辦遵遴選遲遼遺鄴醒錠錶鋸錳錯錢鋼錫錄錚�".split(""); +for(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];} +D[192] = "����������������������������������������������������������������錐錦錡錕錮錙閻隧隨險雕霎霑霖霍霓霏靛靜靦鞘頰頸頻頷頭頹頤餐館餞餛餡餚駭駢駱骸骼髻髭鬨鮑鴕鴣鴦鴨鴒鴛默黔龍龜優償儡儲勵嚎嚀嚐嚅嚇����������������������������������嚏壕壓壑壎嬰嬪嬤孺尷屨嶼嶺嶽嶸幫彌徽應懂懇懦懋戲戴擎擊擘擠擰擦擬擱擢擭斂斃曙曖檀檔檄檢檜櫛檣橾檗檐檠歜殮毚氈濘濱濟濠濛濤濫濯澀濬濡濩濕濮濰燧營燮燦燥燭燬燴燠爵牆獰獲璩環璦璨癆療癌盪瞳瞪瞰瞬�".split(""); +for(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];} +D[193] = "����������������������������������������������������������������瞧瞭矯磷磺磴磯礁禧禪穗窿簇簍篾篷簌篠糠糜糞糢糟糙糝縮績繆縷縲繃縫總縱繅繁縴縹繈縵縿縯罄翳翼聱聲聰聯聳臆臃膺臂臀膿膽臉膾臨舉艱薪����������������������������������薄蕾薜薑薔薯薛薇薨薊虧蟀蟑螳蟒蟆螫螻螺蟈蟋褻褶襄褸褽覬謎謗謙講謊謠謝謄謐豁谿豳賺賽購賸賻趨蹉蹋蹈蹊轄輾轂轅輿避遽還邁邂邀鄹醣醞醜鍍鎂錨鍵鍊鍥鍋錘鍾鍬鍛鍰鍚鍔闊闋闌闈闆隱隸雖霜霞鞠韓顆颶餵騁�".split(""); +for(j = 0; j != D[193].length; ++j) if(D[193][j].charCodeAt(0) !== 0xFFFD) { e[D[193][j]] = 49408 + j; d[49408 + j] = D[193][j];} +D[194] = "����������������������������������������������������������������駿鮮鮫鮪鮭鴻鴿麋黏點黜黝黛鼾齋叢嚕嚮壙壘嬸彝懣戳擴擲擾攆擺擻擷斷曜朦檳檬櫃檻檸櫂檮檯歟歸殯瀉瀋濾瀆濺瀑瀏燻燼燾燸獷獵璧璿甕癖癘����������������������������������癒瞽瞿瞻瞼礎禮穡穢穠竄竅簫簧簪簞簣簡糧織繕繞繚繡繒繙罈翹翻職聶臍臏舊藏薩藍藐藉薰薺薹薦蟯蟬蟲蟠覆覲觴謨謹謬謫豐贅蹙蹣蹦蹤蹟蹕軀轉轍邇邃邈醫醬釐鎔鎊鎖鎢鎳鎮鎬鎰鎘鎚鎗闔闖闐闕離雜雙雛雞霤鞣鞦�".split(""); +for(j = 0; j != D[194].length; ++j) if(D[194][j].charCodeAt(0) !== 0xFFFD) { e[D[194][j]] = 49664 + j; d[49664 + j] = D[194][j];} +D[195] = "����������������������������������������������������������������鞭韹額顏題顎顓颺餾餿餽餮馥騎髁鬃鬆魏魎魍鯊鯉鯽鯈鯀鵑鵝鵠黠鼕鼬儳嚥壞壟壢寵龐廬懲懷懶懵攀攏曠曝櫥櫝櫚櫓瀛瀟瀨瀚瀝瀕瀘爆爍牘犢獸����������������������������������獺璽瓊瓣疇疆癟癡矇礙禱穫穩簾簿簸簽簷籀繫繭繹繩繪羅繳羶羹羸臘藩藝藪藕藤藥藷蟻蠅蠍蟹蟾襠襟襖襞譁譜識證譚譎譏譆譙贈贊蹼蹲躇蹶蹬蹺蹴轔轎辭邊邋醱醮鏡鏑鏟鏃鏈鏜鏝鏖鏢鏍鏘鏤鏗鏨關隴難霪霧靡韜韻類�".split(""); +for(j = 0; j != D[195].length; ++j) if(D[195][j].charCodeAt(0) !== 0xFFFD) { e[D[195][j]] = 49920 + j; d[49920 + j] = D[195][j];} +D[196] = "����������������������������������������������������������������願顛颼饅饉騖騙鬍鯨鯧鯖鯛鶉鵡鵲鵪鵬麒麗麓麴勸嚨嚷嚶嚴嚼壤孀孃孽寶巉懸懺攘攔攙曦朧櫬瀾瀰瀲爐獻瓏癢癥礦礪礬礫竇競籌籃籍糯糰辮繽繼����������������������������������纂罌耀臚艦藻藹蘑藺蘆蘋蘇蘊蠔蠕襤覺觸議譬警譯譟譫贏贍躉躁躅躂醴釋鐘鐃鏽闡霰飄饒饑馨騫騰騷騵鰓鰍鹹麵黨鼯齟齣齡儷儸囁囀囂夔屬巍懼懾攝攜斕曩櫻欄櫺殲灌爛犧瓖瓔癩矓籐纏續羼蘗蘭蘚蠣蠢蠡蠟襪襬覽譴�".split(""); +for(j = 0; j != D[196].length; ++j) if(D[196][j].charCodeAt(0) !== 0xFFFD) { e[D[196][j]] = 50176 + j; d[50176 + j] = D[196][j];} +D[197] = "����������������������������������������������������������������護譽贓躊躍躋轟辯醺鐮鐳鐵鐺鐸鐲鐫闢霸霹露響顧顥饗驅驃驀騾髏魔魑鰭鰥鶯鶴鷂鶸麝黯鼙齜齦齧儼儻囈囊囉孿巔巒彎懿攤權歡灑灘玀瓤疊癮癬����������������������������������禳籠籟聾聽臟襲襯觼讀贖贗躑躓轡酈鑄鑑鑒霽霾韃韁顫饕驕驍髒鬚鱉鰱鰾鰻鷓鷗鼴齬齪龔囌巖戀攣攫攪曬欐瓚竊籤籣籥纓纖纔臢蘸蘿蠱變邐邏鑣鑠鑤靨顯饜驚驛驗髓體髑鱔鱗鱖鷥麟黴囑壩攬灞癱癲矗罐羈蠶蠹衢讓讒�".split(""); +for(j = 0; j != D[197].length; ++j) if(D[197][j].charCodeAt(0) !== 0xFFFD) { e[D[197][j]] = 50432 + j; d[50432 + j] = D[197][j];} +D[198] = "����������������������������������������������������������������讖艷贛釀鑪靂靈靄韆顰驟鬢魘鱟鷹鷺鹼鹽鼇齷齲廳欖灣籬籮蠻觀躡釁鑲鑰顱饞髖鬣黌灤矚讚鑷韉驢驥纜讜躪釅鑽鑾鑼鱷鱸黷豔鑿鸚爨驪鬱鸛鸞籲�����������������������������������".split(""); +for(j = 0; j != D[198].length; ++j) if(D[198][j].charCodeAt(0) !== 0xFFFD) { e[D[198][j]] = 50688 + j; d[50688 + j] = D[198][j];} +D[199] = "���������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[199].length; ++j) if(D[199][j].charCodeAt(0) !== 0xFFFD) { e[D[199][j]] = 50944 + j; d[50944 + j] = D[199][j];} +D[200] = "���������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[200].length; ++j) if(D[200][j].charCodeAt(0) !== 0xFFFD) { e[D[200][j]] = 51200 + j; d[51200 + j] = D[200][j];} +D[201] = "����������������������������������������������������������������乂乜凵匚厂万丌乇亍囗兀屮彳丏冇与丮亓仂仉仈冘勼卬厹圠夃夬尐巿旡殳毌气爿丱丼仨仜仩仡仝仚刌匜卌圢圣夗夯宁宄尒尻屴屳帄庀庂忉戉扐氕����������������������������������氶汃氿氻犮犰玊禸肊阞伎优伬仵伔仱伀价伈伝伂伅伢伓伄仴伒冱刓刉刐劦匢匟卍厊吇囡囟圮圪圴夼妀奼妅奻奾奷奿孖尕尥屼屺屻屾巟幵庄异弚彴忕忔忏扜扞扤扡扦扢扙扠扚扥旯旮朾朹朸朻机朿朼朳氘汆汒汜汏汊汔汋�".split(""); +for(j = 0; j != D[201].length; ++j) if(D[201][j].charCodeAt(0) !== 0xFFFD) { e[D[201][j]] = 51456 + j; d[51456 + j] = D[201][j];} +D[202] = "����������������������������������������������������������������汌灱牞犴犵玎甪癿穵网艸艼芀艽艿虍襾邙邗邘邛邔阢阤阠阣佖伻佢佉体佤伾佧佒佟佁佘伭伳伿佡冏冹刜刞刡劭劮匉卣卲厎厏吰吷吪呔呅吙吜吥吘����������������������������������吽呏呁吨吤呇囮囧囥坁坅坌坉坋坒夆奀妦妘妠妗妎妢妐妏妧妡宎宒尨尪岍岏岈岋岉岒岊岆岓岕巠帊帎庋庉庌庈庍弅弝彸彶忒忑忐忭忨忮忳忡忤忣忺忯忷忻怀忴戺抃抌抎抏抔抇扱扻扺扰抁抈扷扽扲扴攷旰旴旳旲旵杅杇�".split(""); +for(j = 0; j != D[202].length; ++j) if(D[202][j].charCodeAt(0) !== 0xFFFD) { e[D[202][j]] = 51712 + j; d[51712 + j] = D[202][j];} +D[203] = "����������������������������������������������������������������杙杕杌杈杝杍杚杋毐氙氚汸汧汫沄沋沏汱汯汩沚汭沇沕沜汦汳汥汻沎灴灺牣犿犽狃狆狁犺狅玕玗玓玔玒町甹疔疕皁礽耴肕肙肐肒肜芐芏芅芎芑芓����������������������������������芊芃芄豸迉辿邟邡邥邞邧邠阰阨阯阭丳侘佼侅佽侀侇佶佴侉侄佷佌侗佪侚佹侁佸侐侜侔侞侒侂侕佫佮冞冼冾刵刲刳剆刱劼匊匋匼厒厔咇呿咁咑咂咈呫呺呾呥呬呴呦咍呯呡呠咘呣呧呤囷囹坯坲坭坫坱坰坶垀坵坻坳坴坢�".split(""); +for(j = 0; j != D[203].length; ++j) if(D[203][j].charCodeAt(0) !== 0xFFFD) { e[D[203][j]] = 51968 + j; d[51968 + j] = D[203][j];} +D[204] = "����������������������������������������������������������������坨坽夌奅妵妺姏姎妲姌姁妶妼姃姖妱妽姀姈妴姇孢孥宓宕屄屇岮岤岠岵岯岨岬岟岣岭岢岪岧岝岥岶岰岦帗帔帙弨弢弣弤彔徂彾彽忞忥怭怦怙怲怋����������������������������������怴怊怗怳怚怞怬怢怍怐怮怓怑怌怉怜戔戽抭抴拑抾抪抶拊抮抳抯抻抩抰抸攽斨斻昉旼昄昒昈旻昃昋昍昅旽昑昐曶朊枅杬枎枒杶杻枘枆构杴枍枌杺枟枑枙枃杽极杸杹枔欥殀歾毞氝沓泬泫泮泙沶泔沭泧沷泐泂沺泃泆泭泲�".split(""); +for(j = 0; j != D[204].length; ++j) if(D[204][j].charCodeAt(0) !== 0xFFFD) { e[D[204][j]] = 52224 + j; d[52224 + j] = D[204][j];} +D[205] = "����������������������������������������������������������������泒泝沴沊沝沀泞泀洰泍泇沰泹泏泩泑炔炘炅炓炆炄炑炖炂炚炃牪狖狋狘狉狜狒狔狚狌狑玤玡玭玦玢玠玬玝瓝瓨甿畀甾疌疘皯盳盱盰盵矸矼矹矻矺����������������������������������矷祂礿秅穸穻竻籵糽耵肏肮肣肸肵肭舠芠苀芫芚芘芛芵芧芮芼芞芺芴芨芡芩苂芤苃芶芢虰虯虭虮豖迒迋迓迍迖迕迗邲邴邯邳邰阹阽阼阺陃俍俅俓侲俉俋俁俔俜俙侻侳俛俇俖侺俀侹俬剄剉勀勂匽卼厗厖厙厘咺咡咭咥哏�".split(""); +for(j = 0; j != D[205].length; ++j) if(D[205][j].charCodeAt(0) !== 0xFFFD) { e[D[205][j]] = 52480 + j; d[52480 + j] = D[205][j];} +D[206] = "����������������������������������������������������������������哃茍咷咮哖咶哅哆咠呰咼咢咾呲哞咰垵垞垟垤垌垗垝垛垔垘垏垙垥垚垕壴复奓姡姞姮娀姱姝姺姽姼姶姤姲姷姛姩姳姵姠姾姴姭宨屌峐峘峌峗峋峛����������������������������������峞峚峉峇峊峖峓峔峏峈峆峎峟峸巹帡帢帣帠帤庰庤庢庛庣庥弇弮彖徆怷怹恔恲恞恅恓恇恉恛恌恀恂恟怤恄恘恦恮扂扃拏挍挋拵挎挃拫拹挏挌拸拶挀挓挔拺挕拻拰敁敃斪斿昶昡昲昵昜昦昢昳昫昺昝昴昹昮朏朐柁柲柈枺�".split(""); +for(j = 0; j != D[206].length; ++j) if(D[206][j].charCodeAt(0) !== 0xFFFD) { e[D[206][j]] = 52736 + j; d[52736 + j] = D[206][j];} +D[207] = "����������������������������������������������������������������柜枻柸柘柀枷柅柫柤柟枵柍枳柷柶柮柣柂枹柎柧柰枲柼柆柭柌枮柦柛柺柉柊柃柪柋欨殂殄殶毖毘毠氠氡洨洴洭洟洼洿洒洊泚洳洄洙洺洚洑洀洝浂����������������������������������洁洘洷洃洏浀洇洠洬洈洢洉洐炷炟炾炱炰炡炴炵炩牁牉牊牬牰牳牮狊狤狨狫狟狪狦狣玅珌珂珈珅玹玶玵玴珫玿珇玾珃珆玸珋瓬瓮甮畇畈疧疪癹盄眈眃眄眅眊盷盻盺矧矨砆砑砒砅砐砏砎砉砃砓祊祌祋祅祄秕种秏秖秎窀�".split(""); +for(j = 0; j != D[207].length; ++j) if(D[207][j].charCodeAt(0) !== 0xFFFD) { e[D[207][j]] = 52992 + j; d[52992 + j] = D[207][j];} +D[208] = "����������������������������������������������������������������穾竑笀笁籺籸籹籿粀粁紃紈紁罘羑羍羾耇耎耏耔耷胘胇胠胑胈胂胐胅胣胙胜胊胕胉胏胗胦胍臿舡芔苙苾苹茇苨茀苕茺苫苖苴苬苡苲苵茌苻苶苰苪����������������������������������苤苠苺苳苭虷虴虼虳衁衎衧衪衩觓訄訇赲迣迡迮迠郱邽邿郕郅邾郇郋郈釔釓陔陏陑陓陊陎倞倅倇倓倢倰倛俵俴倳倷倬俶俷倗倜倠倧倵倯倱倎党冔冓凊凄凅凈凎剡剚剒剞剟剕剢勍匎厞唦哢唗唒哧哳哤唚哿唄唈哫唑唅哱�".split(""); +for(j = 0; j != D[208].length; ++j) if(D[208][j].charCodeAt(0) !== 0xFFFD) { e[D[208][j]] = 53248 + j; d[53248 + j] = D[208][j];} +D[209] = "����������������������������������������������������������������唊哻哷哸哠唎唃唋圁圂埌堲埕埒垺埆垽垼垸垶垿埇埐垹埁夎奊娙娖娭娮娕娏娗娊娞娳孬宧宭宬尃屖屔峬峿峮峱峷崀峹帩帨庨庮庪庬弳弰彧恝恚恧����������������������������������恁悢悈悀悒悁悝悃悕悛悗悇悜悎戙扆拲挐捖挬捄捅挶捃揤挹捋捊挼挩捁挴捘捔捙挭捇挳捚捑挸捗捀捈敊敆旆旃旄旂晊晟晇晑朒朓栟栚桉栲栳栻桋桏栖栱栜栵栫栭栯桎桄栴栝栒栔栦栨栮桍栺栥栠欬欯欭欱欴歭肂殈毦毤�".split(""); +for(j = 0; j != D[209].length; ++j) if(D[209][j].charCodeAt(0) !== 0xFFFD) { e[D[209][j]] = 53504 + j; d[53504 + j] = D[209][j];} +D[210] = "����������������������������������������������������������������毨毣毢毧氥浺浣浤浶洍浡涒浘浢浭浯涑涍淯浿涆浞浧浠涗浰浼浟涂涘洯浨涋浾涀涄洖涃浻浽浵涐烜烓烑烝烋缹烢烗烒烞烠烔烍烅烆烇烚烎烡牂牸����������������������������������牷牶猀狺狴狾狶狳狻猁珓珙珥珖玼珧珣珩珜珒珛珔珝珚珗珘珨瓞瓟瓴瓵甡畛畟疰痁疻痄痀疿疶疺皊盉眝眛眐眓眒眣眑眕眙眚眢眧砣砬砢砵砯砨砮砫砡砩砳砪砱祔祛祏祜祓祒祑秫秬秠秮秭秪秜秞秝窆窉窅窋窌窊窇竘笐�".split(""); +for(j = 0; j != D[210].length; ++j) if(D[210][j].charCodeAt(0) !== 0xFFFD) { e[D[210][j]] = 53760 + j; d[53760 + j] = D[210][j];} +D[211] = "����������������������������������������������������������������笄笓笅笏笈笊笎笉笒粄粑粊粌粈粍粅紞紝紑紎紘紖紓紟紒紏紌罜罡罞罠罝罛羖羒翃翂翀耖耾耹胺胲胹胵脁胻脀舁舯舥茳茭荄茙荑茥荖茿荁茦茜茢����������������������������������荂荎茛茪茈茼荍茖茤茠茷茯茩荇荅荌荓茞茬荋茧荈虓虒蚢蚨蚖蚍蚑蚞蚇蚗蚆蚋蚚蚅蚥蚙蚡蚧蚕蚘蚎蚝蚐蚔衃衄衭衵衶衲袀衱衿衯袃衾衴衼訒豇豗豻貤貣赶赸趵趷趶軑軓迾迵适迿迻逄迼迶郖郠郙郚郣郟郥郘郛郗郜郤酐�".split(""); +for(j = 0; j != D[211].length; ++j) if(D[211][j].charCodeAt(0) !== 0xFFFD) { e[D[211][j]] = 54016 + j; d[54016 + j] = D[211][j];} +D[212] = "����������������������������������������������������������������酎酏釕釢釚陜陟隼飣髟鬯乿偰偪偡偞偠偓偋偝偲偈偍偁偛偊偢倕偅偟偩偫偣偤偆偀偮偳偗偑凐剫剭剬剮勖勓匭厜啵啶唼啍啐唴唪啑啢唶唵唰啒啅����������������������������������唌唲啥啎唹啈唭唻啀啋圊圇埻堔埢埶埜埴堀埭埽堈埸堋埳埏堇埮埣埲埥埬埡堎埼堐埧堁堌埱埩埰堍堄奜婠婘婕婧婞娸娵婭婐婟婥婬婓婤婗婃婝婒婄婛婈媎娾婍娹婌婰婩婇婑婖婂婜孲孮寁寀屙崞崋崝崚崠崌崨崍崦崥崏�".split(""); +for(j = 0; j != D[212].length; ++j) if(D[212][j].charCodeAt(0) !== 0xFFFD) { e[D[212][j]] = 54272 + j; d[54272 + j] = D[212][j];} +D[213] = "����������������������������������������������������������������崰崒崣崟崮帾帴庱庴庹庲庳弶弸徛徖徟悊悐悆悾悰悺惓惔惏惤惙惝惈悱惛悷惊悿惃惍惀挲捥掊掂捽掽掞掭掝掗掫掎捯掇掐据掯捵掜捭掮捼掤挻掟����������������������������������捸掅掁掑掍捰敓旍晥晡晛晙晜晢朘桹梇梐梜桭桮梮梫楖桯梣梬梩桵桴梲梏桷梒桼桫桲梪梀桱桾梛梖梋梠梉梤桸桻梑梌梊桽欶欳欷欸殑殏殍殎殌氪淀涫涴涳湴涬淩淢涷淶淔渀淈淠淟淖涾淥淜淝淛淴淊涽淭淰涺淕淂淏淉�".split(""); +for(j = 0; j != D[213].length; ++j) if(D[213][j].charCodeAt(0) !== 0xFFFD) { e[D[213][j]] = 54528 + j; d[54528 + j] = D[213][j];} +D[214] = "����������������������������������������������������������������淐淲淓淽淗淍淣涻烺焍烷焗烴焌烰焄烳焐烼烿焆焓焀烸烶焋焂焎牾牻牼牿猝猗猇猑猘猊猈狿猏猞玈珶珸珵琄琁珽琇琀珺珼珿琌琋珴琈畤畣痎痒痏����������������������������������痋痌痑痐皏皉盓眹眯眭眱眲眴眳眽眥眻眵硈硒硉硍硊硌砦硅硐祤祧祩祪祣祫祡离秺秸秶秷窏窔窐笵筇笴笥笰笢笤笳笘笪笝笱笫笭笯笲笸笚笣粔粘粖粣紵紽紸紶紺絅紬紩絁絇紾紿絊紻紨罣羕羜羝羛翊翋翍翐翑翇翏翉耟�".split(""); +for(j = 0; j != D[214].length; ++j) if(D[214][j].charCodeAt(0) !== 0xFFFD) { e[D[214][j]] = 54784 + j; d[54784 + j] = D[214][j];} +D[215] = "����������������������������������������������������������������耞耛聇聃聈脘脥脙脛脭脟脬脞脡脕脧脝脢舑舸舳舺舴舲艴莐莣莨莍荺荳莤荴莏莁莕莙荵莔莩荽莃莌莝莛莪莋荾莥莯莈莗莰荿莦莇莮荶莚虙虖蚿蚷����������������������������������蛂蛁蛅蚺蚰蛈蚹蚳蚸蛌蚴蚻蚼蛃蚽蚾衒袉袕袨袢袪袚袑袡袟袘袧袙袛袗袤袬袌袓袎覂觖觙觕訰訧訬訞谹谻豜豝豽貥赽赻赹趼跂趹趿跁軘軞軝軜軗軠軡逤逋逑逜逌逡郯郪郰郴郲郳郔郫郬郩酖酘酚酓酕釬釴釱釳釸釤釹釪�".split(""); +for(j = 0; j != D[215].length; ++j) if(D[215][j].charCodeAt(0) !== 0xFFFD) { e[D[215][j]] = 55040 + j; d[55040 + j] = D[215][j];} +D[216] = "����������������������������������������������������������������釫釷釨釮镺閆閈陼陭陫陱陯隿靪頄飥馗傛傕傔傞傋傣傃傌傎傝偨傜傒傂傇兟凔匒匑厤厧喑喨喥喭啷噅喢喓喈喏喵喁喣喒喤啽喌喦啿喕喡喎圌堩堷����������������������������������堙堞堧堣堨埵塈堥堜堛堳堿堶堮堹堸堭堬堻奡媯媔媟婺媢媞婸媦婼媥媬媕媮娷媄媊媗媃媋媩婻婽媌媜媏媓媝寪寍寋寔寑寊寎尌尰崷嵃嵫嵁嵋崿崵嵑嵎嵕崳崺嵒崽崱嵙嵂崹嵉崸崼崲崶嵀嵅幄幁彘徦徥徫惉悹惌惢惎惄愔�".split(""); +for(j = 0; j != D[216].length; ++j) if(D[216][j].charCodeAt(0) !== 0xFFFD) { e[D[216][j]] = 55296 + j; d[55296 + j] = D[216][j];} +D[217] = "����������������������������������������������������������������惲愊愖愅惵愓惸惼惾惁愃愘愝愐惿愄愋扊掔掱掰揎揥揨揯揃撝揳揊揠揶揕揲揵摡揟掾揝揜揄揘揓揂揇揌揋揈揰揗揙攲敧敪敤敜敨敥斌斝斞斮旐旒����������������������������������晼晬晻暀晱晹晪晲朁椌棓椄棜椪棬棪棱椏棖棷棫棤棶椓椐棳棡椇棌椈楰梴椑棯棆椔棸棐棽棼棨椋椊椗棎棈棝棞棦棴棑椆棔棩椕椥棇欹欻欿欼殔殗殙殕殽毰毲毳氰淼湆湇渟湉溈渼渽湅湢渫渿湁湝湳渜渳湋湀湑渻渃渮湞�".split(""); +for(j = 0; j != D[217].length; ++j) if(D[217][j].charCodeAt(0) !== 0xFFFD) { e[D[217][j]] = 55552 + j; d[55552 + j] = D[217][j];} +D[218] = "����������������������������������������������������������������湨湜湡渱渨湠湱湫渹渢渰湓湥渧湸湤湷湕湹湒湦渵渶湚焠焞焯烻焮焱焣焥焢焲焟焨焺焛牋牚犈犉犆犅犋猒猋猰猢猱猳猧猲猭猦猣猵猌琮琬琰琫琖����������������������������������琚琡琭琱琤琣琝琩琠琲瓻甯畯畬痧痚痡痦痝痟痤痗皕皒盚睆睇睄睍睅睊睎睋睌矞矬硠硤硥硜硭硱硪确硰硩硨硞硢祴祳祲祰稂稊稃稌稄窙竦竤筊笻筄筈筌筎筀筘筅粢粞粨粡絘絯絣絓絖絧絪絏絭絜絫絒絔絩絑絟絎缾缿罥�".split(""); +for(j = 0; j != D[218].length; ++j) if(D[218][j].charCodeAt(0) !== 0xFFFD) { e[D[218][j]] = 55808 + j; d[55808 + j] = D[218][j];} +D[219] = "����������������������������������������������������������������罦羢羠羡翗聑聏聐胾胔腃腊腒腏腇脽腍脺臦臮臷臸臹舄舼舽舿艵茻菏菹萣菀菨萒菧菤菼菶萐菆菈菫菣莿萁菝菥菘菿菡菋菎菖菵菉萉萏菞萑萆菂菳����������������������������������菕菺菇菑菪萓菃菬菮菄菻菗菢萛菛菾蛘蛢蛦蛓蛣蛚蛪蛝蛫蛜蛬蛩蛗蛨蛑衈衖衕袺裗袹袸裀袾袶袼袷袽袲褁裉覕覘覗觝觚觛詎詍訹詙詀詗詘詄詅詒詈詑詊詌詏豟貁貀貺貾貰貹貵趄趀趉跘跓跍跇跖跜跏跕跙跈跗跅軯軷軺�".split(""); +for(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];} +D[220] = "����������������������������������������������������������������軹軦軮軥軵軧軨軶軫軱軬軴軩逭逴逯鄆鄬鄄郿郼鄈郹郻鄁鄀鄇鄅鄃酡酤酟酢酠鈁鈊鈥鈃鈚鈦鈏鈌鈀鈒釿釽鈆鈄鈧鈂鈜鈤鈙鈗鈅鈖镻閍閌閐隇陾隈����������������������������������隉隃隀雂雈雃雱雰靬靰靮頇颩飫鳦黹亃亄亶傽傿僆傮僄僊傴僈僂傰僁傺傱僋僉傶傸凗剺剸剻剼嗃嗛嗌嗐嗋嗊嗝嗀嗔嗄嗩喿嗒喍嗏嗕嗢嗖嗈嗲嗍嗙嗂圔塓塨塤塏塍塉塯塕塎塝塙塥塛堽塣塱壼嫇嫄嫋媺媸媱媵媰媿嫈媻嫆�".split(""); +for(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];} +D[221] = "����������������������������������������������������������������媷嫀嫊媴媶嫍媹媐寖寘寙尟尳嵱嵣嵊嵥嵲嵬嵞嵨嵧嵢巰幏幎幊幍幋廅廌廆廋廇彀徯徭惷慉慊愫慅愶愲愮慆愯慏愩慀戠酨戣戥戤揅揱揫搐搒搉搠搤����������������������������������搳摃搟搕搘搹搷搢搣搌搦搰搨摁搵搯搊搚摀搥搧搋揧搛搮搡搎敯斒旓暆暌暕暐暋暊暙暔晸朠楦楟椸楎楢楱椿楅楪椹楂楗楙楺楈楉椵楬椳椽楥棰楸椴楩楀楯楄楶楘楁楴楌椻楋椷楜楏楑椲楒椯楻椼歆歅歃歂歈歁殛嗀毻毼�".split(""); +for(j = 0; j != D[221].length; ++j) if(D[221][j].charCodeAt(0) !== 0xFFFD) { e[D[221][j]] = 56576 + j; d[56576 + j] = D[221][j];} +D[222] = "����������������������������������������������������������������毹毷毸溛滖滈溏滀溟溓溔溠溱溹滆滒溽滁溞滉溷溰滍溦滏溲溾滃滜滘溙溒溎溍溤溡溿溳滐滊溗溮溣煇煔煒煣煠煁煝煢煲煸煪煡煂煘煃煋煰煟煐煓����������������������������������煄煍煚牏犍犌犑犐犎猼獂猻猺獀獊獉瑄瑊瑋瑒瑑瑗瑀瑏瑐瑎瑂瑆瑍瑔瓡瓿瓾瓽甝畹畷榃痯瘏瘃痷痾痼痹痸瘐痻痶痭痵痽皙皵盝睕睟睠睒睖睚睩睧睔睙睭矠碇碚碔碏碄碕碅碆碡碃硹碙碀碖硻祼禂祽祹稑稘稙稒稗稕稢稓�".split(""); +for(j = 0; j != D[222].length; ++j) if(D[222][j].charCodeAt(0) !== 0xFFFD) { e[D[222][j]] = 56832 + j; d[56832 + j] = D[222][j];} +D[223] = "����������������������������������������������������������������稛稐窣窢窞竫筦筤筭筴筩筲筥筳筱筰筡筸筶筣粲粴粯綈綆綀綍絿綅絺綎絻綃絼綌綔綄絽綒罭罫罧罨罬羦羥羧翛翜耡腤腠腷腜腩腛腢腲朡腞腶腧腯����������������������������������腄腡舝艉艄艀艂艅蓱萿葖葶葹蒏蒍葥葑葀蒆葧萰葍葽葚葙葴葳葝蔇葞萷萺萴葺葃葸萲葅萩菙葋萯葂萭葟葰萹葎葌葒葯蓅蒎萻葇萶萳葨葾葄萫葠葔葮葐蜋蜄蛷蜌蛺蛖蛵蝍蛸蜎蜉蜁蛶蜍蜅裖裋裍裎裞裛裚裌裐覅覛觟觥觤�".split(""); +for(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];} +D[224] = "����������������������������������������������������������������觡觠觢觜触詶誆詿詡訿詷誂誄詵誃誁詴詺谼豋豊豥豤豦貆貄貅賌赨赩趑趌趎趏趍趓趔趐趒跰跠跬跱跮跐跩跣跢跧跲跫跴輆軿輁輀輅輇輈輂輋遒逿����������������������������������遄遉逽鄐鄍鄏鄑鄖鄔鄋鄎酮酯鉈鉒鈰鈺鉦鈳鉥鉞銃鈮鉊鉆鉭鉬鉏鉠鉧鉯鈶鉡鉰鈱鉔鉣鉐鉲鉎鉓鉌鉖鈲閟閜閞閛隒隓隑隗雎雺雽雸雵靳靷靸靲頏頍頎颬飶飹馯馲馰馵骭骫魛鳪鳭鳧麀黽僦僔僗僨僳僛僪僝僤僓僬僰僯僣僠�".split(""); +for(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];} +D[225] = "����������������������������������������������������������������凘劀劁勩勫匰厬嘧嘕嘌嘒嗼嘏嘜嘁嘓嘂嗺嘝嘄嗿嗹墉塼墐墘墆墁塿塴墋塺墇墑墎塶墂墈塻墔墏壾奫嫜嫮嫥嫕嫪嫚嫭嫫嫳嫢嫠嫛嫬嫞嫝嫙嫨嫟孷寠����������������������������������寣屣嶂嶀嵽嶆嵺嶁嵷嶊嶉嶈嵾嵼嶍嵹嵿幘幙幓廘廑廗廎廜廕廙廒廔彄彃彯徶愬愨慁慞慱慳慒慓慲慬憀慴慔慺慛慥愻慪慡慖戩戧戫搫摍摛摝摴摶摲摳摽摵摦撦摎撂摞摜摋摓摠摐摿搿摬摫摙摥摷敳斠暡暠暟朅朄朢榱榶槉�".split(""); +for(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];} +D[226] = "����������������������������������������������������������������榠槎榖榰榬榼榑榙榎榧榍榩榾榯榿槄榽榤槔榹槊榚槏榳榓榪榡榞槙榗榐槂榵榥槆歊歍歋殞殟殠毃毄毾滎滵滱漃漥滸漷滻漮漉潎漙漚漧漘漻漒滭漊����������������������������������漶潳滹滮漭潀漰漼漵滫漇漎潃漅滽滶漹漜滼漺漟漍漞漈漡熇熐熉熀熅熂熏煻熆熁熗牄牓犗犕犓獃獍獑獌瑢瑳瑱瑵瑲瑧瑮甀甂甃畽疐瘖瘈瘌瘕瘑瘊瘔皸瞁睼瞅瞂睮瞀睯睾瞃碲碪碴碭碨硾碫碞碥碠碬碢碤禘禊禋禖禕禔禓�".split(""); +for(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];} +D[227] = "����������������������������������������������������������������禗禈禒禐稫穊稰稯稨稦窨窫窬竮箈箜箊箑箐箖箍箌箛箎箅箘劄箙箤箂粻粿粼粺綧綷緂綣綪緁緀緅綝緎緄緆緋緌綯綹綖綼綟綦綮綩綡緉罳翢翣翥翞����������������������������������耤聝聜膉膆膃膇膍膌膋舕蒗蒤蒡蒟蒺蓎蓂蒬蒮蒫蒹蒴蓁蓍蒪蒚蒱蓐蒝蒧蒻蒢蒔蓇蓌蒛蒩蒯蒨蓖蒘蒶蓏蒠蓗蓔蓒蓛蒰蒑虡蜳蜣蜨蝫蝀蜮蜞蜡蜙蜛蝃蜬蝁蜾蝆蜠蜲蜪蜭蜼蜒蜺蜱蜵蝂蜦蜧蜸蜤蜚蜰蜑裷裧裱裲裺裾裮裼裶裻�".split(""); +for(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];} +D[228] = "����������������������������������������������������������������裰裬裫覝覡覟覞觩觫觨誫誙誋誒誏誖谽豨豩賕賏賗趖踉踂跿踍跽踊踃踇踆踅跾踀踄輐輑輎輍鄣鄜鄠鄢鄟鄝鄚鄤鄡鄛酺酲酹酳銥銤鉶銛鉺銠銔銪銍����������������������������������銦銚銫鉹銗鉿銣鋮銎銂銕銢鉽銈銡銊銆銌銙銧鉾銇銩銝銋鈭隞隡雿靘靽靺靾鞃鞀鞂靻鞄鞁靿韎韍頖颭颮餂餀餇馝馜駃馹馻馺駂馽駇骱髣髧鬾鬿魠魡魟鳱鳲鳵麧僿儃儰僸儆儇僶僾儋儌僽儊劋劌勱勯噈噂噌嘵噁噊噉噆噘�".split(""); +for(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];} +D[229] = "����������������������������������������������������������������噚噀嘳嘽嘬嘾嘸嘪嘺圚墫墝墱墠墣墯墬墥墡壿嫿嫴嫽嫷嫶嬃嫸嬂嫹嬁嬇嬅嬏屧嶙嶗嶟嶒嶢嶓嶕嶠嶜嶡嶚嶞幩幝幠幜緳廛廞廡彉徲憋憃慹憱憰憢憉����������������������������������憛憓憯憭憟憒憪憡憍慦憳戭摮摰撖撠撅撗撜撏撋撊撌撣撟摨撱撘敶敺敹敻斲斳暵暰暩暲暷暪暯樀樆樗槥槸樕槱槤樠槿槬槢樛樝槾樧槲槮樔槷槧橀樈槦槻樍槼槫樉樄樘樥樏槶樦樇槴樖歑殥殣殢殦氁氀毿氂潁漦潾澇濆澒�".split(""); +for(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];} +D[230] = "����������������������������������������������������������������澍澉澌潢潏澅潚澖潶潬澂潕潲潒潐潗澔澓潝漀潡潫潽潧澐潓澋潩潿澕潣潷潪潻熲熯熛熰熠熚熩熵熝熥熞熤熡熪熜熧熳犘犚獘獒獞獟獠獝獛獡獚獙����������������������������������獢璇璉璊璆璁瑽璅璈瑼瑹甈甇畾瘥瘞瘙瘝瘜瘣瘚瘨瘛皜皝皞皛瞍瞏瞉瞈磍碻磏磌磑磎磔磈磃磄磉禚禡禠禜禢禛歶稹窲窴窳箷篋箾箬篎箯箹篊箵糅糈糌糋緷緛緪緧緗緡縃緺緦緶緱緰緮緟罶羬羰羭翭翫翪翬翦翨聤聧膣膟�".split(""); +for(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];} +D[231] = "����������������������������������������������������������������膞膕膢膙膗舖艏艓艒艐艎艑蔤蔻蔏蔀蔩蔎蔉蔍蔟蔊蔧蔜蓻蔫蓺蔈蔌蓴蔪蓲蔕蓷蓫蓳蓼蔒蓪蓩蔖蓾蔨蔝蔮蔂蓽蔞蓶蔱蔦蓧蓨蓰蓯蓹蔘蔠蔰蔋蔙蔯虢����������������������������������蝖蝣蝤蝷蟡蝳蝘蝔蝛蝒蝡蝚蝑蝞蝭蝪蝐蝎蝟蝝蝯蝬蝺蝮蝜蝥蝏蝻蝵蝢蝧蝩衚褅褌褔褋褗褘褙褆褖褑褎褉覢覤覣觭觰觬諏諆誸諓諑諔諕誻諗誾諀諅諘諃誺誽諙谾豍貏賥賟賙賨賚賝賧趠趜趡趛踠踣踥踤踮踕踛踖踑踙踦踧�".split(""); +for(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];} +D[232] = "����������������������������������������������������������������踔踒踘踓踜踗踚輬輤輘輚輠輣輖輗遳遰遯遧遫鄯鄫鄩鄪鄲鄦鄮醅醆醊醁醂醄醀鋐鋃鋄鋀鋙銶鋏鋱鋟鋘鋩鋗鋝鋌鋯鋂鋨鋊鋈鋎鋦鋍鋕鋉鋠鋞鋧鋑鋓����������������������������������銵鋡鋆銴镼閬閫閮閰隤隢雓霅霈霂靚鞊鞎鞈韐韏頞頝頦頩頨頠頛頧颲餈飺餑餔餖餗餕駜駍駏駓駔駎駉駖駘駋駗駌骳髬髫髳髲髱魆魃魧魴魱魦魶魵魰魨魤魬鳼鳺鳽鳿鳷鴇鴀鳹鳻鴈鴅鴄麃黓鼏鼐儜儓儗儚儑凞匴叡噰噠噮�".split(""); +for(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];} +D[233] = "����������������������������������������������������������������噳噦噣噭噲噞噷圜圛壈墽壉墿墺壂墼壆嬗嬙嬛嬡嬔嬓嬐嬖嬨嬚嬠嬞寯嶬嶱嶩嶧嶵嶰嶮嶪嶨嶲嶭嶯嶴幧幨幦幯廩廧廦廨廥彋徼憝憨憖懅憴懆懁懌憺����������������������������������憿憸憌擗擖擐擏擉撽撉擃擛擳擙攳敿敼斢曈暾曀曊曋曏暽暻暺曌朣樴橦橉橧樲橨樾橝橭橶橛橑樨橚樻樿橁橪橤橐橏橔橯橩橠樼橞橖橕橍橎橆歕歔歖殧殪殫毈毇氄氃氆澭濋澣濇澼濎濈潞濄澽澞濊澨瀄澥澮澺澬澪濏澿澸�".split(""); +for(j = 0; j != D[233].length; ++j) if(D[233][j].charCodeAt(0) !== 0xFFFD) { e[D[233][j]] = 59648 + j; d[59648 + j] = D[233][j];} +D[234] = "����������������������������������������������������������������澢濉澫濍澯澲澰燅燂熿熸燖燀燁燋燔燊燇燏熽燘熼燆燚燛犝犞獩獦獧獬獥獫獪瑿璚璠璔璒璕璡甋疀瘯瘭瘱瘽瘳瘼瘵瘲瘰皻盦瞚瞝瞡瞜瞛瞢瞣瞕瞙����������������������������������瞗磝磩磥磪磞磣磛磡磢磭磟磠禤穄穈穇窶窸窵窱窷篞篣篧篝篕篥篚篨篹篔篪篢篜篫篘篟糒糔糗糐糑縒縡縗縌縟縠縓縎縜縕縚縢縋縏縖縍縔縥縤罃罻罼罺羱翯耪耩聬膱膦膮膹膵膫膰膬膴膲膷膧臲艕艖艗蕖蕅蕫蕍蕓蕡蕘�".split(""); +for(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];} +D[235] = "����������������������������������������������������������������蕀蕆蕤蕁蕢蕄蕑蕇蕣蔾蕛蕱蕎蕮蕵蕕蕧蕠薌蕦蕝蕔蕥蕬虣虥虤螛螏螗螓螒螈螁螖螘蝹螇螣螅螐螑螝螄螔螜螚螉褞褦褰褭褮褧褱褢褩褣褯褬褟觱諠����������������������������������諢諲諴諵諝謔諤諟諰諈諞諡諨諿諯諻貑貒貐賵賮賱賰賳赬赮趥趧踳踾踸蹀蹅踶踼踽蹁踰踿躽輶輮輵輲輹輷輴遶遹遻邆郺鄳鄵鄶醓醐醑醍醏錧錞錈錟錆錏鍺錸錼錛錣錒錁鍆錭錎錍鋋錝鋺錥錓鋹鋷錴錂錤鋿錩錹錵錪錔錌�".split(""); +for(j = 0; j != D[235].length; ++j) if(D[235][j].charCodeAt(0) !== 0xFFFD) { e[D[235][j]] = 60160 + j; d[60160 + j] = D[235][j];} +D[236] = "����������������������������������������������������������������錋鋾錉錀鋻錖閼闍閾閹閺閶閿閵閽隩雔霋霒霐鞙鞗鞔韰韸頵頯頲餤餟餧餩馞駮駬駥駤駰駣駪駩駧骹骿骴骻髶髺髹髷鬳鮀鮅鮇魼魾魻鮂鮓鮒鮐魺鮕����������������������������������魽鮈鴥鴗鴠鴞鴔鴩鴝鴘鴢鴐鴙鴟麈麆麇麮麭黕黖黺鼒鼽儦儥儢儤儠儩勴嚓嚌嚍嚆嚄嚃噾嚂噿嚁壖壔壏壒嬭嬥嬲嬣嬬嬧嬦嬯嬮孻寱寲嶷幬幪徾徻懃憵憼懧懠懥懤懨懞擯擩擣擫擤擨斁斀斶旚曒檍檖檁檥檉檟檛檡檞檇檓檎�".split(""); +for(j = 0; j != D[236].length; ++j) if(D[236][j].charCodeAt(0) !== 0xFFFD) { e[D[236][j]] = 60416 + j; d[60416 + j] = D[236][j];} +D[237] = "����������������������������������������������������������������檕檃檨檤檑橿檦檚檅檌檒歛殭氉濌澩濴濔濣濜濭濧濦濞濲濝濢濨燡燱燨燲燤燰燢獳獮獯璗璲璫璐璪璭璱璥璯甐甑甒甏疄癃癈癉癇皤盩瞵瞫瞲瞷瞶����������������������������������瞴瞱瞨矰磳磽礂磻磼磲礅磹磾礄禫禨穜穛穖穘穔穚窾竀竁簅簏篲簀篿篻簎篴簋篳簂簉簃簁篸篽簆篰篱簐簊糨縭縼繂縳顈縸縪繉繀繇縩繌縰縻縶繄縺罅罿罾罽翴翲耬膻臄臌臊臅臇膼臩艛艚艜薃薀薏薧薕薠薋薣蕻薤薚薞�".split(""); +for(j = 0; j != D[237].length; ++j) if(D[237][j].charCodeAt(0) !== 0xFFFD) { e[D[237][j]] = 60672 + j; d[60672 + j] = D[237][j];} +D[238] = "����������������������������������������������������������������蕷蕼薉薡蕺蕸蕗薎薖薆薍薙薝薁薢薂薈薅蕹蕶薘薐薟虨螾螪螭蟅螰螬螹螵螼螮蟉蟃蟂蟌螷螯蟄蟊螴螶螿螸螽蟞螲褵褳褼褾襁襒褷襂覭覯覮觲觳謞����������������������������������謘謖謑謅謋謢謏謒謕謇謍謈謆謜謓謚豏豰豲豱豯貕貔賹赯蹎蹍蹓蹐蹌蹇轃轀邅遾鄸醚醢醛醙醟醡醝醠鎡鎃鎯鍤鍖鍇鍼鍘鍜鍶鍉鍐鍑鍠鍭鎏鍌鍪鍹鍗鍕鍒鍏鍱鍷鍻鍡鍞鍣鍧鎀鍎鍙闇闀闉闃闅閷隮隰隬霠霟霘霝霙鞚鞡鞜�".split(""); +for(j = 0; j != D[238].length; ++j) if(D[238][j].charCodeAt(0) !== 0xFFFD) { e[D[238][j]] = 60928 + j; d[60928 + j] = D[238][j];} +D[239] = "����������������������������������������������������������������鞞鞝韕韔韱顁顄顊顉顅顃餥餫餬餪餳餲餯餭餱餰馘馣馡騂駺駴駷駹駸駶駻駽駾駼騃骾髾髽鬁髼魈鮚鮨鮞鮛鮦鮡鮥鮤鮆鮢鮠鮯鴳鵁鵧鴶鴮鴯鴱鴸鴰����������������������������������鵅鵂鵃鴾鴷鵀鴽翵鴭麊麉麍麰黈黚黻黿鼤鼣鼢齔龠儱儭儮嚘嚜嚗嚚嚝嚙奰嬼屩屪巀幭幮懘懟懭懮懱懪懰懫懖懩擿攄擽擸攁攃擼斔旛曚曛曘櫅檹檽櫡櫆檺檶檷櫇檴檭歞毉氋瀇瀌瀍瀁瀅瀔瀎濿瀀濻瀦濼濷瀊爁燿燹爃燽獶�".split(""); +for(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];} +D[240] = "����������������������������������������������������������������璸瓀璵瓁璾璶璻瓂甔甓癜癤癙癐癓癗癚皦皽盬矂瞺磿礌礓礔礉礐礒礑禭禬穟簜簩簙簠簟簭簝簦簨簢簥簰繜繐繖繣繘繢繟繑繠繗繓羵羳翷翸聵臑臒����������������������������������臐艟艞薴藆藀藃藂薳薵薽藇藄薿藋藎藈藅薱薶藒蘤薸薷薾虩蟧蟦蟢蟛蟫蟪蟥蟟蟳蟤蟔蟜蟓蟭蟘蟣螤蟗蟙蠁蟴蟨蟝襓襋襏襌襆襐襑襉謪謧謣謳謰謵譇謯謼謾謱謥謷謦謶謮謤謻謽謺豂豵貙貘貗賾贄贂贀蹜蹢蹠蹗蹖蹞蹥蹧�".split(""); +for(j = 0; j != D[240].length; ++j) if(D[240][j].charCodeAt(0) !== 0xFFFD) { e[D[240][j]] = 61440 + j; d[61440 + j] = D[240][j];} +D[241] = "����������������������������������������������������������������蹛蹚蹡蹝蹩蹔轆轇轈轋鄨鄺鄻鄾醨醥醧醯醪鎵鎌鎒鎷鎛鎝鎉鎧鎎鎪鎞鎦鎕鎈鎙鎟鎍鎱鎑鎲鎤鎨鎴鎣鎥闒闓闑隳雗雚巂雟雘雝霣霢霥鞬鞮鞨鞫鞤鞪����������������������������������鞢鞥韗韙韖韘韺顐顑顒颸饁餼餺騏騋騉騍騄騑騊騅騇騆髀髜鬈鬄鬅鬩鬵魊魌魋鯇鯆鯃鮿鯁鮵鮸鯓鮶鯄鮹鮽鵜鵓鵏鵊鵛鵋鵙鵖鵌鵗鵒鵔鵟鵘鵚麎麌黟鼁鼀鼖鼥鼫鼪鼩鼨齌齕儴儵劖勷厴嚫嚭嚦嚧嚪嚬壚壝壛夒嬽嬾嬿巃幰�".split(""); +for(j = 0; j != D[241].length; ++j) if(D[241][j].charCodeAt(0) !== 0xFFFD) { e[D[241][j]] = 61696 + j; d[61696 + j] = D[241][j];} +D[242] = "����������������������������������������������������������������徿懻攇攐攍攉攌攎斄旞旝曞櫧櫠櫌櫑櫙櫋櫟櫜櫐櫫櫏櫍櫞歠殰氌瀙瀧瀠瀖瀫瀡瀢瀣瀩瀗瀤瀜瀪爌爊爇爂爅犥犦犤犣犡瓋瓅璷瓃甖癠矉矊矄矱礝礛����������������������������������礡礜礗礞禰穧穨簳簼簹簬簻糬糪繶繵繸繰繷繯繺繲繴繨罋罊羃羆羷翽翾聸臗臕艤艡艣藫藱藭藙藡藨藚藗藬藲藸藘藟藣藜藑藰藦藯藞藢蠀蟺蠃蟶蟷蠉蠌蠋蠆蟼蠈蟿蠊蠂襢襚襛襗襡襜襘襝襙覈覷覶觶譐譈譊譀譓譖譔譋譕�".split(""); +for(j = 0; j != D[242].length; ++j) if(D[242][j].charCodeAt(0) !== 0xFFFD) { e[D[242][j]] = 61952 + j; d[61952 + j] = D[242][j];} +D[243] = "����������������������������������������������������������������譑譂譒譗豃豷豶貚贆贇贉趬趪趭趫蹭蹸蹳蹪蹯蹻軂轒轑轏轐轓辴酀鄿醰醭鏞鏇鏏鏂鏚鏐鏹鏬鏌鏙鎩鏦鏊鏔鏮鏣鏕鏄鏎鏀鏒鏧镽闚闛雡霩霫霬霨霦����������������������������������鞳鞷鞶韝韞韟顜顙顝顗颿颽颻颾饈饇饃馦馧騚騕騥騝騤騛騢騠騧騣騞騜騔髂鬋鬊鬎鬌鬷鯪鯫鯠鯞鯤鯦鯢鯰鯔鯗鯬鯜鯙鯥鯕鯡鯚鵷鶁鶊鶄鶈鵱鶀鵸鶆鶋鶌鵽鵫鵴鵵鵰鵩鶅鵳鵻鶂鵯鵹鵿鶇鵨麔麑黀黼鼭齀齁齍齖齗齘匷嚲�".split(""); +for(j = 0; j != D[243].length; ++j) if(D[243][j].charCodeAt(0) !== 0xFFFD) { e[D[243][j]] = 62208 + j; d[62208 + j] = D[243][j];} +D[244] = "����������������������������������������������������������������嚵嚳壣孅巆巇廮廯忀忁懹攗攖攕攓旟曨曣曤櫳櫰櫪櫨櫹櫱櫮櫯瀼瀵瀯瀷瀴瀱灂瀸瀿瀺瀹灀瀻瀳灁爓爔犨獽獼璺皫皪皾盭矌矎矏矍矲礥礣礧礨礤礩����������������������������������禲穮穬穭竷籉籈籊籇籅糮繻繾纁纀羺翿聹臛臙舋艨艩蘢藿蘁藾蘛蘀藶蘄蘉蘅蘌藽蠙蠐蠑蠗蠓蠖襣襦覹觷譠譪譝譨譣譥譧譭趮躆躈躄轙轖轗轕轘轚邍酃酁醷醵醲醳鐋鐓鏻鐠鐏鐔鏾鐕鐐鐨鐙鐍鏵鐀鏷鐇鐎鐖鐒鏺鐉鏸鐊鏿�".split(""); +for(j = 0; j != D[244].length; ++j) if(D[244][j].charCodeAt(0) !== 0xFFFD) { e[D[244][j]] = 62464 + j; d[62464 + j] = D[244][j];} +D[245] = "����������������������������������������������������������������鏼鐌鏶鐑鐆闞闠闟霮霯鞹鞻韽韾顠顢顣顟飁飂饐饎饙饌饋饓騲騴騱騬騪騶騩騮騸騭髇髊髆鬐鬒鬑鰋鰈鯷鰅鰒鯸鱀鰇鰎鰆鰗鰔鰉鶟鶙鶤鶝鶒鶘鶐鶛����������������������������������鶠鶔鶜鶪鶗鶡鶚鶢鶨鶞鶣鶿鶩鶖鶦鶧麙麛麚黥黤黧黦鼰鼮齛齠齞齝齙龑儺儹劘劗囃嚽嚾孈孇巋巏廱懽攛欂櫼欃櫸欀灃灄灊灈灉灅灆爝爚爙獾甗癪矐礭礱礯籔籓糲纊纇纈纋纆纍罍羻耰臝蘘蘪蘦蘟蘣蘜蘙蘧蘮蘡蘠蘩蘞蘥�".split(""); +for(j = 0; j != D[245].length; ++j) if(D[245][j].charCodeAt(0) !== 0xFFFD) { e[D[245][j]] = 62720 + j; d[62720 + j] = D[245][j];} +D[246] = "����������������������������������������������������������������蠩蠝蠛蠠蠤蠜蠫衊襭襩襮襫觺譹譸譅譺譻贐贔趯躎躌轞轛轝酆酄酅醹鐿鐻鐶鐩鐽鐼鐰鐹鐪鐷鐬鑀鐱闥闤闣霵霺鞿韡顤飉飆飀饘饖騹騽驆驄驂驁騺����������������������������������騿髍鬕鬗鬘鬖鬺魒鰫鰝鰜鰬鰣鰨鰩鰤鰡鶷鶶鶼鷁鷇鷊鷏鶾鷅鷃鶻鶵鷎鶹鶺鶬鷈鶱鶭鷌鶳鷍鶲鹺麜黫黮黭鼛鼘鼚鼱齎齥齤龒亹囆囅囋奱孋孌巕巑廲攡攠攦攢欋欈欉氍灕灖灗灒爞爟犩獿瓘瓕瓙瓗癭皭礵禴穰穱籗籜籙籛籚�".split(""); +for(j = 0; j != D[246].length; ++j) if(D[246][j].charCodeAt(0) !== 0xFFFD) { e[D[246][j]] = 62976 + j; d[62976 + j] = D[246][j];} +D[247] = "����������������������������������������������������������������糴糱纑罏羇臞艫蘴蘵蘳蘬蘲蘶蠬蠨蠦蠪蠥襱覿覾觻譾讄讂讆讅譿贕躕躔躚躒躐躖躗轠轢酇鑌鑐鑊鑋鑏鑇鑅鑈鑉鑆霿韣顪顩飋饔饛驎驓驔驌驏驈驊����������������������������������驉驒驐髐鬙鬫鬻魖魕鱆鱈鰿鱄鰹鰳鱁鰼鰷鰴鰲鰽鰶鷛鷒鷞鷚鷋鷐鷜鷑鷟鷩鷙鷘鷖鷵鷕鷝麶黰鼵鼳鼲齂齫龕龢儽劙壨壧奲孍巘蠯彏戁戃戄攩攥斖曫欑欒欏毊灛灚爢玂玁玃癰矔籧籦纕艬蘺虀蘹蘼蘱蘻蘾蠰蠲蠮蠳襶襴襳觾�".split(""); +for(j = 0; j != D[247].length; ++j) if(D[247][j].charCodeAt(0) !== 0xFFFD) { e[D[247][j]] = 63232 + j; d[63232 + j] = D[247][j];} +D[248] = "����������������������������������������������������������������讌讎讋讈豅贙躘轤轣醼鑢鑕鑝鑗鑞韄韅頀驖驙鬞鬟鬠鱒鱘鱐鱊鱍鱋鱕鱙鱌鱎鷻鷷鷯鷣鷫鷸鷤鷶鷡鷮鷦鷲鷰鷢鷬鷴鷳鷨鷭黂黐黲黳鼆鼜鼸鼷鼶齃齏����������������������������������齱齰齮齯囓囍孎屭攭曭曮欓灟灡灝灠爣瓛瓥矕礸禷禶籪纗羉艭虃蠸蠷蠵衋讔讕躞躟躠躝醾醽釂鑫鑨鑩雥靆靃靇韇韥驞髕魙鱣鱧鱦鱢鱞鱠鸂鷾鸇鸃鸆鸅鸀鸁鸉鷿鷽鸄麠鼞齆齴齵齶囔攮斸欘欙欗欚灢爦犪矘矙礹籩籫糶纚�".split(""); +for(j = 0; j != D[248].length; ++j) if(D[248][j].charCodeAt(0) !== 0xFFFD) { e[D[248][j]] = 63488 + j; d[63488 + j] = D[248][j];} +D[249] = "����������������������������������������������������������������纘纛纙臠臡虆虇虈襹襺襼襻觿讘讙躥躤躣鑮鑭鑯鑱鑳靉顲饟鱨鱮鱭鸋鸍鸐鸏鸒鸑麡黵鼉齇齸齻齺齹圞灦籯蠼趲躦釃鑴鑸鑶鑵驠鱴鱳鱱鱵鸔鸓黶鼊����������������������������������龤灨灥糷虪蠾蠽蠿讞貜躩軉靋顳顴飌饡馫驤驦驧鬤鸕鸗齈戇欞爧虌躨钂钀钁驩驨鬮鸙爩虋讟钃鱹麷癵驫鱺鸝灩灪麤齾齉龘碁銹裏墻恒粧嫺╔╦╗╠╬╣╚╩╝╒╤╕╞╪╡╘╧╛╓╥╖╟╫╢╙╨╜║═����▓�".split(""); +for(j = 0; j != D[249].length; ++j) if(D[249][j].charCodeAt(0) !== 0xFFFD) { e[D[249][j]] = 63744 + j; d[63744 + j] = D[249][j];} +D[250] = "���������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[250].length; ++j) if(D[250][j].charCodeAt(0) !== 0xFFFD) { e[D[250][j]] = 64000 + j; d[64000 + j] = D[250][j];} +D[251] = "���������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[251].length; ++j) if(D[251][j].charCodeAt(0) !== 0xFFFD) { e[D[251][j]] = 64256 + j; d[64256 + j] = D[251][j];} +D[252] = "���������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[252].length; ++j) if(D[252][j].charCodeAt(0) !== 0xFFFD) { e[D[252][j]] = 64512 + j; d[64512 + j] = D[252][j];} +return {"enc": e, "dec": d }; })(); +cptable[10003] = (function(){ var d = [], e = {}, D = [], j; +D[0] = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];} +D[161] = "����������������������������������������������������������������������������������������������������������������������������������������������������������������� 、。·‥…¨〃­―∥\∼‘’“”〔〕〈〉《》「」『』【】±×÷≠≤≥∞∴°′″℃Å¢£¥♂♀∠⊥⌒∂∇≡≒§※☆★○●◎◇◆□■△▲▽▼→←↑↓↔〓≪≫√∽∝∵∫∬∈∋⊆⊇⊂⊃∪∩∧∨¬�".split(""); +for(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];} +D[162] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������⇒⇔∀∃´~ˇ˘˝˚˙¸˛¡¿ː∮∑∏¤℉‰◁◀▷▶♤♠♡♥♧♣⊙◈▣◐◑▒▤▥▨▧▦▩♨☏☎☜☞¶†‡↕↗↙↖↘♭♩♪♬㉿㈜№㏇™㏂㏘℡€®������������������������".split(""); +for(j = 0; j != D[162].length; ++j) if(D[162][j].charCodeAt(0) !== 0xFFFD) { e[D[162][j]] = 41472 + j; d[41472 + j] = D[162][j];} +D[163] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[₩]^_`abcdefghijklmnopqrstuvwxyz{|} ̄�".split(""); +for(j = 0; j != D[163].length; ++j) if(D[163][j].charCodeAt(0) !== 0xFFFD) { e[D[163][j]] = 41728 + j; d[41728 + j] = D[163][j];} +D[164] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������ㄱㄲㄳㄴㄵㄶㄷㄸㄹㄺㄻㄼㄽㄾㄿㅀㅁㅂㅃㅄㅅㅆㅇㅈㅉㅊㅋㅌㅍㅎㅏㅐㅑㅒㅓㅔㅕㅖㅗㅘㅙㅚㅛㅜㅝㅞㅟㅠㅡㅢㅣㅤㅥㅦㅧㅨㅩㅪㅫㅬㅭㅮㅯㅰㅱㅲㅳㅴㅵㅶㅷㅸㅹㅺㅻㅼㅽㅾㅿㆀㆁㆂㆃㆄㆅㆆㆇㆈㆉㆊㆋㆌㆍㆎ�".split(""); +for(j = 0; j != D[164].length; ++j) if(D[164][j].charCodeAt(0) !== 0xFFFD) { e[D[164][j]] = 41984 + j; d[41984 + j] = D[164][j];} +D[165] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������ⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹ�����ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩ�������ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ��������αβγδεζηθικλμνξοπρστυφχψω�������".split(""); +for(j = 0; j != D[165].length; ++j) if(D[165][j].charCodeAt(0) !== 0xFFFD) { e[D[165][j]] = 42240 + j; d[42240 + j] = D[165][j];} +D[166] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂┒┑┚┙┖┕┎┍┞┟┡┢┦┧┩┪┭┮┱┲┵┶┹┺┽┾╀╁╃╄╅╆╇╈╉╊���������������������������".split(""); +for(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];} +D[167] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������㎕㎖㎗ℓ㎘㏄㎣㎤㎥㎦㎙㎚㎛㎜㎝㎞㎟㎠㎡㎢㏊㎍㎎㎏㏏㎈㎉㏈㎧㎨㎰㎱㎲㎳㎴㎵㎶㎷㎸㎹㎀㎁㎂㎃㎄㎺㎻㎼㎽㎾㎿㎐㎑㎒㎓㎔Ω㏀㏁㎊㎋㎌㏖㏅㎭㎮㎯㏛㎩㎪㎫㎬㏝㏐㏓㏃㏉㏜㏆����������������".split(""); +for(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];} +D[168] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������ÆЪĦ�IJ�ĿŁØŒºÞŦŊ�㉠㉡㉢㉣㉤㉥㉦㉧㉨㉩㉪㉫㉬㉭㉮㉯㉰㉱㉲㉳㉴㉵㉶㉷㉸㉹㉺㉻ⓐⓑⓒⓓⓔⓕⓖⓗⓘⓙⓚⓛⓜⓝⓞⓟⓠⓡⓢⓣⓤⓥⓦⓧⓨⓩ①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮½⅓⅔¼¾⅛⅜⅝⅞�".split(""); +for(j = 0; j != D[168].length; ++j) if(D[168][j].charCodeAt(0) !== 0xFFFD) { e[D[168][j]] = 43008 + j; d[43008 + j] = D[168][j];} +D[169] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������æđðħıijĸŀłøœßþŧŋʼn㈀㈁㈂㈃㈄㈅㈆㈇㈈㈉㈊㈋㈌㈍㈎㈏㈐㈑㈒㈓㈔㈕㈖㈗㈘㈙㈚㈛⒜⒝⒞⒟⒠⒡⒢⒣⒤⒥⒦⒧⒨⒩⒪⒫⒬⒭⒮⒯⒰⒱⒲⒳⒴⒵⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽⑾⑿⒀⒁⒂¹²³⁴ⁿ₁₂₃₄�".split(""); +for(j = 0; j != D[169].length; ++j) if(D[169][j].charCodeAt(0) !== 0xFFFD) { e[D[169][j]] = 43264 + j; d[43264 + j] = D[169][j];} +D[170] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをん������������".split(""); +for(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];} +D[171] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶ���������".split(""); +for(j = 0; j != D[171].length; ++j) if(D[171][j].charCodeAt(0) !== 0xFFFD) { e[D[171][j]] = 43776 + j; d[43776 + j] = D[171][j];} +D[172] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ���������������абвгдеёжзийклмнопрстуфхцчшщъыьэюя��������������".split(""); +for(j = 0; j != D[172].length; ++j) if(D[172][j].charCodeAt(0) !== 0xFFFD) { e[D[172][j]] = 44032 + j; d[44032 + j] = D[172][j];} +D[176] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������가각간갇갈갉갊감갑값갓갔강갖갗같갚갛개객갠갤갬갭갯갰갱갸갹갼걀걋걍걔걘걜거걱건걷걸걺검겁것겄겅겆겉겊겋게겐겔겜겝겟겠겡겨격겪견겯결겸겹겻겼경곁계곈곌곕곗고곡곤곧골곪곬곯곰곱곳공곶과곽관괄괆�".split(""); +for(j = 0; j != D[176].length; ++j) if(D[176][j].charCodeAt(0) !== 0xFFFD) { e[D[176][j]] = 45056 + j; d[45056 + j] = D[176][j];} +D[177] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������괌괍괏광괘괜괠괩괬괭괴괵괸괼굄굅굇굉교굔굘굡굣구국군굳굴굵굶굻굼굽굿궁궂궈궉권궐궜궝궤궷귀귁귄귈귐귑귓규균귤그극근귿글긁금급긋긍긔기긱긴긷길긺김깁깃깅깆깊까깍깎깐깔깖깜깝깟깠깡깥깨깩깬깰깸�".split(""); +for(j = 0; j != D[177].length; ++j) if(D[177][j].charCodeAt(0) !== 0xFFFD) { e[D[177][j]] = 45312 + j; d[45312 + j] = D[177][j];} +D[178] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������깹깻깼깽꺄꺅꺌꺼꺽꺾껀껄껌껍껏껐껑께껙껜껨껫껭껴껸껼꼇꼈꼍꼐꼬꼭꼰꼲꼴꼼꼽꼿꽁꽂꽃꽈꽉꽐꽜꽝꽤꽥꽹꾀꾄꾈꾐꾑꾕꾜꾸꾹꾼꿀꿇꿈꿉꿋꿍꿎꿔꿜꿨꿩꿰꿱꿴꿸뀀뀁뀄뀌뀐뀔뀜뀝뀨끄끅끈끊끌끎끓끔끕끗끙�".split(""); +for(j = 0; j != D[178].length; ++j) if(D[178][j].charCodeAt(0) !== 0xFFFD) { e[D[178][j]] = 45568 + j; d[45568 + j] = D[178][j];} +D[179] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������끝끼끽낀낄낌낍낏낑나낙낚난낟날낡낢남납낫났낭낮낯낱낳내낵낸낼냄냅냇냈냉냐냑냔냘냠냥너넉넋넌널넒넓넘넙넛넜넝넣네넥넨넬넴넵넷넸넹녀녁년녈념녑녔녕녘녜녠노녹논놀놂놈놉놋농높놓놔놘놜놨뇌뇐뇔뇜뇝�".split(""); +for(j = 0; j != D[179].length; ++j) if(D[179][j].charCodeAt(0) !== 0xFFFD) { e[D[179][j]] = 45824 + j; d[45824 + j] = D[179][j];} +D[180] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������뇟뇨뇩뇬뇰뇹뇻뇽누눅눈눋눌눔눕눗눙눠눴눼뉘뉜뉠뉨뉩뉴뉵뉼늄늅늉느늑는늘늙늚늠늡늣능늦늪늬늰늴니닉닌닐닖님닙닛닝닢다닥닦단닫달닭닮닯닳담답닷닸당닺닻닿대댁댄댈댐댑댓댔댕댜더덕덖던덛덜덞덟덤덥�".split(""); +for(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];} +D[181] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������덧덩덫덮데덱덴델뎀뎁뎃뎄뎅뎌뎐뎔뎠뎡뎨뎬도독돈돋돌돎돐돔돕돗동돛돝돠돤돨돼됐되된될됨됩됫됴두둑둔둘둠둡둣둥둬뒀뒈뒝뒤뒨뒬뒵뒷뒹듀듄듈듐듕드득든듣들듦듬듭듯등듸디딕딘딛딜딤딥딧딨딩딪따딱딴딸�".split(""); +for(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];} +D[182] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������땀땁땃땄땅땋때땍땐땔땜땝땟땠땡떠떡떤떨떪떫떰떱떳떴떵떻떼떽뗀뗄뗌뗍뗏뗐뗑뗘뗬또똑똔똘똥똬똴뙈뙤뙨뚜뚝뚠뚤뚫뚬뚱뛔뛰뛴뛸뜀뜁뜅뜨뜩뜬뜯뜰뜸뜹뜻띄띈띌띔띕띠띤띨띰띱띳띵라락란랄람랍랏랐랑랒랖랗�".split(""); +for(j = 0; j != D[182].length; ++j) if(D[182][j].charCodeAt(0) !== 0xFFFD) { e[D[182][j]] = 46592 + j; d[46592 + j] = D[182][j];} +D[183] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������래랙랜랠램랩랫랬랭랴략랸럇량러럭런럴럼럽럿렀렁렇레렉렌렐렘렙렛렝려력련렬렴렵렷렸령례롄롑롓로록론롤롬롭롯롱롸롼뢍뢨뢰뢴뢸룀룁룃룅료룐룔룝룟룡루룩룬룰룸룹룻룽뤄뤘뤠뤼뤽륀륄륌륏륑류륙륜률륨륩�".split(""); +for(j = 0; j != D[183].length; ++j) if(D[183][j].charCodeAt(0) !== 0xFFFD) { e[D[183][j]] = 46848 + j; d[46848 + j] = D[183][j];} +D[184] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������륫륭르륵른를름릅릇릉릊릍릎리릭린릴림립릿링마막만많맏말맑맒맘맙맛망맞맡맣매맥맨맬맴맵맷맸맹맺먀먁먈먕머먹먼멀멂멈멉멋멍멎멓메멕멘멜멤멥멧멨멩며멱면멸몃몄명몇몌모목몫몬몰몲몸몹못몽뫄뫈뫘뫙뫼�".split(""); +for(j = 0; j != D[184].length; ++j) if(D[184][j].charCodeAt(0) !== 0xFFFD) { e[D[184][j]] = 47104 + j; d[47104 + j] = D[184][j];} +D[185] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������묀묄묍묏묑묘묜묠묩묫무묵묶문묻물묽묾뭄뭅뭇뭉뭍뭏뭐뭔뭘뭡뭣뭬뮈뮌뮐뮤뮨뮬뮴뮷므믄믈믐믓미믹민믿밀밂밈밉밋밌밍및밑바박밖밗반받발밝밞밟밤밥밧방밭배백밴밸뱀뱁뱃뱄뱅뱉뱌뱍뱐뱝버벅번벋벌벎범법벗�".split(""); +for(j = 0; j != D[185].length; ++j) if(D[185][j].charCodeAt(0) !== 0xFFFD) { e[D[185][j]] = 47360 + j; d[47360 + j] = D[185][j];} +D[186] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������벙벚베벡벤벧벨벰벱벳벴벵벼벽변별볍볏볐병볕볘볜보복볶본볼봄봅봇봉봐봔봤봬뵀뵈뵉뵌뵐뵘뵙뵤뵨부북분붇불붉붊붐붑붓붕붙붚붜붤붰붸뷔뷕뷘뷜뷩뷰뷴뷸븀븃븅브븍븐블븜븝븟비빅빈빌빎빔빕빗빙빚빛빠빡빤�".split(""); +for(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];} +D[187] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������빨빪빰빱빳빴빵빻빼빽뺀뺄뺌뺍뺏뺐뺑뺘뺙뺨뻐뻑뻔뻗뻘뻠뻣뻤뻥뻬뼁뼈뼉뼘뼙뼛뼜뼝뽀뽁뽄뽈뽐뽑뽕뾔뾰뿅뿌뿍뿐뿔뿜뿟뿡쀼쁑쁘쁜쁠쁨쁩삐삑삔삘삠삡삣삥사삭삯산삳살삵삶삼삽삿샀상샅새색샌샐샘샙샛샜생샤�".split(""); +for(j = 0; j != D[187].length; ++j) if(D[187][j].charCodeAt(0) !== 0xFFFD) { e[D[187][j]] = 47872 + j; d[47872 + j] = D[187][j];} +D[188] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������샥샨샬샴샵샷샹섀섄섈섐섕서석섞섟선섣설섦섧섬섭섯섰성섶세섹센셀셈셉셋셌셍셔셕션셜셤셥셧셨셩셰셴셸솅소속솎손솔솖솜솝솟송솥솨솩솬솰솽쇄쇈쇌쇔쇗쇘쇠쇤쇨쇰쇱쇳쇼쇽숀숄숌숍숏숑수숙순숟술숨숩숫숭�".split(""); +for(j = 0; j != D[188].length; ++j) if(D[188][j].charCodeAt(0) !== 0xFFFD) { e[D[188][j]] = 48128 + j; d[48128 + j] = D[188][j];} +D[189] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������숯숱숲숴쉈쉐쉑쉔쉘쉠쉥쉬쉭쉰쉴쉼쉽쉿슁슈슉슐슘슛슝스슥슨슬슭슴습슷승시식신싣실싫심십싯싱싶싸싹싻싼쌀쌈쌉쌌쌍쌓쌔쌕쌘쌜쌤쌥쌨쌩썅써썩썬썰썲썸썹썼썽쎄쎈쎌쏀쏘쏙쏜쏟쏠쏢쏨쏩쏭쏴쏵쏸쐈쐐쐤쐬쐰�".split(""); +for(j = 0; j != D[189].length; ++j) if(D[189][j].charCodeAt(0) !== 0xFFFD) { e[D[189][j]] = 48384 + j; d[48384 + j] = D[189][j];} +D[190] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������쐴쐼쐽쑈쑤쑥쑨쑬쑴쑵쑹쒀쒔쒜쒸쒼쓩쓰쓱쓴쓸쓺쓿씀씁씌씐씔씜씨씩씬씰씸씹씻씽아악안앉않알앍앎앓암압앗았앙앝앞애액앤앨앰앱앳앴앵야약얀얄얇얌얍얏양얕얗얘얜얠얩어억언얹얻얼얽얾엄업없엇었엉엊엌엎�".split(""); +for(j = 0; j != D[190].length; ++j) if(D[190][j].charCodeAt(0) !== 0xFFFD) { e[D[190][j]] = 48640 + j; d[48640 + j] = D[190][j];} +D[191] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������에엑엔엘엠엡엣엥여역엮연열엶엷염엽엾엿였영옅옆옇예옌옐옘옙옛옜오옥온올옭옮옰옳옴옵옷옹옻와왁완왈왐왑왓왔왕왜왝왠왬왯왱외왹왼욀욈욉욋욍요욕욘욜욤욥욧용우욱운울욹욺움웁웃웅워웍원월웜웝웠웡웨�".split(""); +for(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];} +D[192] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������웩웬웰웸웹웽위윅윈윌윔윕윗윙유육윤율윰윱윳융윷으윽은을읊음읍읏응읒읓읔읕읖읗의읜읠읨읫이익인일읽읾잃임입잇있잉잊잎자작잔잖잗잘잚잠잡잣잤장잦재잭잰잴잼잽잿쟀쟁쟈쟉쟌쟎쟐쟘쟝쟤쟨쟬저적전절젊�".split(""); +for(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];} +D[193] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������점접젓정젖제젝젠젤젬젭젯젱져젼졀졈졉졌졍졔조족존졸졺좀좁좃종좆좇좋좌좍좔좝좟좡좨좼좽죄죈죌죔죕죗죙죠죡죤죵주죽준줄줅줆줌줍줏중줘줬줴쥐쥑쥔쥘쥠쥡쥣쥬쥰쥴쥼즈즉즌즐즘즙즛증지직진짇질짊짐집짓�".split(""); +for(j = 0; j != D[193].length; ++j) if(D[193][j].charCodeAt(0) !== 0xFFFD) { e[D[193][j]] = 49408 + j; d[49408 + j] = D[193][j];} +D[194] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������징짖짙짚짜짝짠짢짤짧짬짭짯짰짱째짹짼쨀쨈쨉쨋쨌쨍쨔쨘쨩쩌쩍쩐쩔쩜쩝쩟쩠쩡쩨쩽쪄쪘쪼쪽쫀쫄쫌쫍쫏쫑쫓쫘쫙쫠쫬쫴쬈쬐쬔쬘쬠쬡쭁쭈쭉쭌쭐쭘쭙쭝쭤쭸쭹쮜쮸쯔쯤쯧쯩찌찍찐찔찜찝찡찢찧차착찬찮찰참찹찻�".split(""); +for(j = 0; j != D[194].length; ++j) if(D[194][j].charCodeAt(0) !== 0xFFFD) { e[D[194][j]] = 49664 + j; d[49664 + j] = D[194][j];} +D[195] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������찼창찾채책챈챌챔챕챗챘챙챠챤챦챨챰챵처척천철첨첩첫첬청체첵첸첼쳄쳅쳇쳉쳐쳔쳤쳬쳰촁초촉촌촐촘촙촛총촤촨촬촹최쵠쵤쵬쵭쵯쵱쵸춈추축춘출춤춥춧충춰췄췌췐취췬췰췸췹췻췽츄츈츌츔츙츠측츤츨츰츱츳층�".split(""); +for(j = 0; j != D[195].length; ++j) if(D[195][j].charCodeAt(0) !== 0xFFFD) { e[D[195][j]] = 49920 + j; d[49920 + j] = D[195][j];} +D[196] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������치칙친칟칠칡침칩칫칭카칵칸칼캄캅캇캉캐캑캔캘캠캡캣캤캥캬캭컁커컥컨컫컬컴컵컷컸컹케켁켄켈켐켑켓켕켜켠켤켬켭켯켰켱켸코콕콘콜콤콥콧콩콰콱콴콸쾀쾅쾌쾡쾨쾰쿄쿠쿡쿤쿨쿰쿱쿳쿵쿼퀀퀄퀑퀘퀭퀴퀵퀸퀼�".split(""); +for(j = 0; j != D[196].length; ++j) if(D[196][j].charCodeAt(0) !== 0xFFFD) { e[D[196][j]] = 50176 + j; d[50176 + j] = D[196][j];} +D[197] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������큄큅큇큉큐큔큘큠크큭큰클큼큽킁키킥킨킬킴킵킷킹타탁탄탈탉탐탑탓탔탕태택탠탤탬탭탯탰탱탸턍터턱턴털턺텀텁텃텄텅테텍텐텔템텝텟텡텨텬텼톄톈토톡톤톨톰톱톳통톺톼퇀퇘퇴퇸툇툉툐투툭툰툴툼툽툿퉁퉈퉜�".split(""); +for(j = 0; j != D[197].length; ++j) if(D[197][j].charCodeAt(0) !== 0xFFFD) { e[D[197][j]] = 50432 + j; d[50432 + j] = D[197][j];} +D[198] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������퉤튀튁튄튈튐튑튕튜튠튤튬튱트특튼튿틀틂틈틉틋틔틘틜틤틥티틱틴틸팀팁팃팅파팍팎판팔팖팜팝팟팠팡팥패팩팬팰팸팹팻팼팽퍄퍅퍼퍽펀펄펌펍펏펐펑페펙펜펠펨펩펫펭펴편펼폄폅폈평폐폘폡폣포폭폰폴폼폽폿퐁�".split(""); +for(j = 0; j != D[198].length; ++j) if(D[198][j].charCodeAt(0) !== 0xFFFD) { e[D[198][j]] = 50688 + j; d[50688 + j] = D[198][j];} +D[199] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������퐈퐝푀푄표푠푤푭푯푸푹푼푿풀풂품풉풋풍풔풩퓌퓐퓔퓜퓟퓨퓬퓰퓸퓻퓽프픈플픔픕픗피픽핀필핌핍핏핑하학한할핥함합핫항해핵핸핼햄햅햇했행햐향허헉헌헐헒험헙헛헝헤헥헨헬헴헵헷헹혀혁현혈혐협혓혔형혜혠�".split(""); +for(j = 0; j != D[199].length; ++j) if(D[199][j].charCodeAt(0) !== 0xFFFD) { e[D[199][j]] = 50944 + j; d[50944 + j] = D[199][j];} +D[200] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������혤혭호혹혼홀홅홈홉홋홍홑화확환활홧황홰홱홴횃횅회획횐횔횝횟횡효횬횰횹횻후훅훈훌훑훔훗훙훠훤훨훰훵훼훽휀휄휑휘휙휜휠휨휩휫휭휴휵휸휼흄흇흉흐흑흔흖흗흘흙흠흡흣흥흩희흰흴흼흽힁히힉힌힐힘힙힛힝�".split(""); +for(j = 0; j != D[200].length; ++j) if(D[200][j].charCodeAt(0) !== 0xFFFD) { e[D[200][j]] = 51200 + j; d[51200 + j] = D[200][j];} +D[202] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������伽佳假價加可呵哥嘉嫁家暇架枷柯歌珂痂稼苛茄街袈訶賈跏軻迦駕刻却各恪慤殼珏脚覺角閣侃刊墾奸姦干幹懇揀杆柬桿澗癎看磵稈竿簡肝艮艱諫間乫喝曷渴碣竭葛褐蝎鞨勘坎堪嵌感憾戡敢柑橄減甘疳監瞰紺邯鑑鑒龕�".split(""); +for(j = 0; j != D[202].length; ++j) if(D[202][j].charCodeAt(0) !== 0xFFFD) { e[D[202][j]] = 51712 + j; d[51712 + j] = D[202][j];} +D[203] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������匣岬甲胛鉀閘剛堈姜岡崗康强彊慷江畺疆糠絳綱羌腔舡薑襁講鋼降鱇介价個凱塏愷愾慨改槪漑疥皆盖箇芥蓋豈鎧開喀客坑更粳羹醵倨去居巨拒据據擧渠炬祛距踞車遽鉅鋸乾件健巾建愆楗腱虔蹇鍵騫乞傑杰桀儉劍劒檢�".split(""); +for(j = 0; j != D[203].length; ++j) if(D[203][j].charCodeAt(0) !== 0xFFFD) { e[D[203][j]] = 51968 + j; d[51968 + j] = D[203][j];} +D[204] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������瞼鈐黔劫怯迲偈憩揭擊格檄激膈覡隔堅牽犬甄絹繭肩見譴遣鵑抉決潔結缺訣兼慊箝謙鉗鎌京俓倞傾儆勁勍卿坰境庚徑慶憬擎敬景暻更梗涇炅烱璟璥瓊痙硬磬竟競絅經耕耿脛莖警輕逕鏡頃頸驚鯨係啓堺契季屆悸戒桂械�".split(""); +for(j = 0; j != D[204].length; ++j) if(D[204][j].charCodeAt(0) !== 0xFFFD) { e[D[204][j]] = 52224 + j; d[52224 + j] = D[204][j];} +D[205] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������棨溪界癸磎稽系繫繼計誡谿階鷄古叩告呱固姑孤尻庫拷攷故敲暠枯槁沽痼皐睾稿羔考股膏苦苽菰藁蠱袴誥賈辜錮雇顧高鼓哭斛曲梏穀谷鵠困坤崑昆梱棍滾琨袞鯤汨滑骨供公共功孔工恐恭拱控攻珙空蚣貢鞏串寡戈果瓜�".split(""); +for(j = 0; j != D[205].length; ++j) if(D[205][j].charCodeAt(0) !== 0xFFFD) { e[D[205][j]] = 52480 + j; d[52480 + j] = D[205][j];} +D[206] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������科菓誇課跨過鍋顆廓槨藿郭串冠官寬慣棺款灌琯瓘管罐菅觀貫關館刮恝括适侊光匡壙廣曠洸炚狂珖筐胱鑛卦掛罫乖傀塊壞怪愧拐槐魁宏紘肱轟交僑咬喬嬌嶠巧攪敎校橋狡皎矯絞翹膠蕎蛟較轎郊餃驕鮫丘久九仇俱具勾�".split(""); +for(j = 0; j != D[206].length; ++j) if(D[206][j].charCodeAt(0) !== 0xFFFD) { e[D[206][j]] = 52736 + j; d[52736 + j] = D[206][j];} +D[207] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������區口句咎嘔坵垢寇嶇廐懼拘救枸柩構歐毆毬求溝灸狗玖球瞿矩究絿耉臼舅舊苟衢謳購軀逑邱鉤銶駒驅鳩鷗龜國局菊鞠鞫麴君窘群裙軍郡堀屈掘窟宮弓穹窮芎躬倦券勸卷圈拳捲權淃眷厥獗蕨蹶闕机櫃潰詭軌饋句晷歸貴�".split(""); +for(j = 0; j != D[207].length; ++j) if(D[207][j].charCodeAt(0) !== 0xFFFD) { e[D[207][j]] = 52992 + j; d[52992 + j] = D[207][j];} +D[208] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������鬼龜叫圭奎揆槻珪硅窺竅糾葵規赳逵閨勻均畇筠菌鈞龜橘克剋劇戟棘極隙僅劤勤懃斤根槿瑾筋芹菫覲謹近饉契今妗擒昑檎琴禁禽芩衾衿襟金錦伋及急扱汲級給亘兢矜肯企伎其冀嗜器圻基埼夔奇妓寄岐崎己幾忌技旗旣�".split(""); +for(j = 0; j != D[208].length; ++j) if(D[208][j].charCodeAt(0) !== 0xFFFD) { e[D[208][j]] = 53248 + j; d[53248 + j] = D[208][j];} +D[209] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������朞期杞棋棄機欺氣汽沂淇玘琦琪璂璣畸畿碁磯祁祇祈祺箕紀綺羈耆耭肌記譏豈起錡錤飢饑騎騏驥麒緊佶吉拮桔金喫儺喇奈娜懦懶拏拿癩羅蘿螺裸邏那樂洛烙珞落諾酪駱亂卵暖欄煖爛蘭難鸞捏捺南嵐枏楠湳濫男藍襤拉�".split(""); +for(j = 0; j != D[209].length; ++j) if(D[209][j].charCodeAt(0) !== 0xFFFD) { e[D[209][j]] = 53504 + j; d[53504 + j] = D[209][j];} +D[210] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������納臘蠟衲囊娘廊朗浪狼郎乃來內奈柰耐冷女年撚秊念恬拈捻寧寗努勞奴弩怒擄櫓爐瑙盧老蘆虜路露駑魯鷺碌祿綠菉錄鹿論壟弄濃籠聾膿農惱牢磊腦賂雷尿壘屢樓淚漏累縷陋嫩訥杻紐勒肋凜凌稜綾能菱陵尼泥匿溺多茶�".split(""); +for(j = 0; j != D[210].length; ++j) if(D[210][j].charCodeAt(0) !== 0xFFFD) { e[D[210][j]] = 53760 + j; d[53760 + j] = D[210][j];} +D[211] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������丹亶但單團壇彖斷旦檀段湍短端簞緞蛋袒鄲鍛撻澾獺疸達啖坍憺擔曇淡湛潭澹痰聃膽蕁覃談譚錟沓畓答踏遝唐堂塘幢戇撞棠當糖螳黨代垈坮大對岱帶待戴擡玳臺袋貸隊黛宅德悳倒刀到圖堵塗導屠島嶋度徒悼挑掉搗桃�".split(""); +for(j = 0; j != D[211].length; ++j) if(D[211][j].charCodeAt(0) !== 0xFFFD) { e[D[211][j]] = 54016 + j; d[54016 + j] = D[211][j];} +D[212] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������棹櫂淘渡滔濤燾盜睹禱稻萄覩賭跳蹈逃途道都鍍陶韜毒瀆牘犢獨督禿篤纛讀墩惇敦旽暾沌焞燉豚頓乭突仝冬凍動同憧東桐棟洞潼疼瞳童胴董銅兜斗杜枓痘竇荳讀豆逗頭屯臀芚遁遯鈍得嶝橙燈登等藤謄鄧騰喇懶拏癩羅�".split(""); +for(j = 0; j != D[212].length; ++j) if(D[212][j].charCodeAt(0) !== 0xFFFD) { e[D[212][j]] = 54272 + j; d[54272 + j] = D[212][j];} +D[213] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������蘿螺裸邏樂洛烙珞絡落諾酪駱丹亂卵欄欒瀾爛蘭鸞剌辣嵐擥攬欖濫籃纜藍襤覽拉臘蠟廊朗浪狼琅瑯螂郞來崍徠萊冷掠略亮倆兩凉梁樑粮粱糧良諒輛量侶儷勵呂廬慮戾旅櫚濾礪藜蠣閭驢驪麗黎力曆歷瀝礫轢靂憐戀攣漣�".split(""); +for(j = 0; j != D[213].length; ++j) if(D[213][j].charCodeAt(0) !== 0xFFFD) { e[D[213][j]] = 54528 + j; d[54528 + j] = D[213][j];} +D[214] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������煉璉練聯蓮輦連鍊冽列劣洌烈裂廉斂殮濂簾獵令伶囹寧岺嶺怜玲笭羚翎聆逞鈴零靈領齡例澧禮醴隷勞怒撈擄櫓潞瀘爐盧老蘆虜路輅露魯鷺鹵碌祿綠菉錄鹿麓論壟弄朧瀧瓏籠聾儡瀨牢磊賂賚賴雷了僚寮廖料燎療瞭聊蓼�".split(""); +for(j = 0; j != D[214].length; ++j) if(D[214][j].charCodeAt(0) !== 0xFFFD) { e[D[214][j]] = 54784 + j; d[54784 + j] = D[214][j];} +D[215] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������遼鬧龍壘婁屢樓淚漏瘻累縷蔞褸鏤陋劉旒柳榴流溜瀏琉瑠留瘤硫謬類六戮陸侖倫崙淪綸輪律慄栗率隆勒肋凜凌楞稜綾菱陵俚利厘吏唎履悧李梨浬犁狸理璃異痢籬罹羸莉裏裡里釐離鯉吝潾燐璘藺躪隣鱗麟林淋琳臨霖砬�".split(""); +for(j = 0; j != D[215].length; ++j) if(D[215][j].charCodeAt(0) !== 0xFFFD) { e[D[215][j]] = 55040 + j; d[55040 + j] = D[215][j];} +D[216] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������立笠粒摩瑪痲碼磨馬魔麻寞幕漠膜莫邈万卍娩巒彎慢挽晩曼滿漫灣瞞萬蔓蠻輓饅鰻唜抹末沫茉襪靺亡妄忘忙望網罔芒茫莽輞邙埋妹媒寐昧枚梅每煤罵買賣邁魅脈貊陌驀麥孟氓猛盲盟萌冪覓免冕勉棉沔眄眠綿緬面麵滅�".split(""); +for(j = 0; j != D[216].length; ++j) if(D[216][j].charCodeAt(0) !== 0xFFFD) { e[D[216][j]] = 55296 + j; d[55296 + j] = D[216][j];} +D[217] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������蔑冥名命明暝椧溟皿瞑茗蓂螟酩銘鳴袂侮冒募姆帽慕摸摹暮某模母毛牟牡瑁眸矛耗芼茅謀謨貌木沐牧目睦穆鶩歿沒夢朦蒙卯墓妙廟描昴杳渺猫竗苗錨務巫憮懋戊拇撫无楙武毋無珷畝繆舞茂蕪誣貿霧鵡墨默們刎吻問文�".split(""); +for(j = 0; j != D[217].length; ++j) if(D[217][j].charCodeAt(0) !== 0xFFFD) { e[D[217][j]] = 55552 + j; d[55552 + j] = D[217][j];} +D[218] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������汶紊紋聞蚊門雯勿沕物味媚尾嵋彌微未梶楣渼湄眉米美薇謎迷靡黴岷悶愍憫敏旻旼民泯玟珉緡閔密蜜謐剝博拍搏撲朴樸泊珀璞箔粕縛膊舶薄迫雹駁伴半反叛拌搬攀斑槃泮潘班畔瘢盤盼磐磻礬絆般蟠返頒飯勃拔撥渤潑�".split(""); +for(j = 0; j != D[218].length; ++j) if(D[218][j].charCodeAt(0) !== 0xFFFD) { e[D[218][j]] = 55808 + j; d[55808 + j] = D[218][j];} +D[219] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������發跋醱鉢髮魃倣傍坊妨尨幇彷房放方旁昉枋榜滂磅紡肪膀舫芳蒡蚌訪謗邦防龐倍俳北培徘拜排杯湃焙盃背胚裴裵褙賠輩配陪伯佰帛柏栢白百魄幡樊煩燔番磻繁蕃藩飜伐筏罰閥凡帆梵氾汎泛犯範范法琺僻劈壁擘檗璧癖�".split(""); +for(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];} +D[220] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������碧蘗闢霹便卞弁變辨辯邊別瞥鱉鼈丙倂兵屛幷昞昺柄棅炳甁病秉竝輧餠騈保堡報寶普步洑湺潽珤甫菩補褓譜輔伏僕匐卜宓復服福腹茯蔔複覆輹輻馥鰒本乶俸奉封峯峰捧棒烽熢琫縫蓬蜂逢鋒鳳不付俯傅剖副否咐埠夫婦�".split(""); +for(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];} +D[221] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������孚孵富府復扶敷斧浮溥父符簿缶腐腑膚艀芙莩訃負賦賻赴趺部釜阜附駙鳧北分吩噴墳奔奮忿憤扮昐汾焚盆粉糞紛芬賁雰不佛弗彿拂崩朋棚硼繃鵬丕備匕匪卑妃婢庇悲憊扉批斐枇榧比毖毗毘沸泌琵痺砒碑秕秘粃緋翡肥�".split(""); +for(j = 0; j != D[221].length; ++j) if(D[221][j].charCodeAt(0) !== 0xFFFD) { e[D[221][j]] = 56576 + j; d[56576 + j] = D[221][j];} +D[222] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������脾臂菲蜚裨誹譬費鄙非飛鼻嚬嬪彬斌檳殯浜濱瀕牝玭貧賓頻憑氷聘騁乍事些仕伺似使俟僿史司唆嗣四士奢娑寫寺射巳師徙思捨斜斯柶査梭死沙泗渣瀉獅砂社祀祠私篩紗絲肆舍莎蓑蛇裟詐詞謝賜赦辭邪飼駟麝削數朔索�".split(""); +for(j = 0; j != D[222].length; ++j) if(D[222][j].charCodeAt(0) !== 0xFFFD) { e[D[222][j]] = 56832 + j; d[56832 + j] = D[222][j];} +D[223] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������傘刪山散汕珊産疝算蒜酸霰乷撒殺煞薩三參杉森渗芟蔘衫揷澁鈒颯上傷像償商喪嘗孀尙峠常床庠廂想桑橡湘爽牀狀相祥箱翔裳觴詳象賞霜塞璽賽嗇塞穡索色牲生甥省笙墅壻嶼序庶徐恕抒捿敍暑曙書栖棲犀瑞筮絮緖署�".split(""); +for(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];} +D[224] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������胥舒薯西誓逝鋤黍鼠夕奭席惜昔晳析汐淅潟石碩蓆釋錫仙僊先善嬋宣扇敾旋渲煽琁瑄璇璿癬禪線繕羨腺膳船蘚蟬詵跣選銑鐥饍鮮卨屑楔泄洩渫舌薛褻設說雪齧剡暹殲纖蟾贍閃陝攝涉燮葉城姓宬性惺成星晟猩珹盛省筬�".split(""); +for(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];} +D[225] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������聖聲腥誠醒世勢歲洗稅笹細說貰召嘯塑宵小少巢所掃搔昭梳沼消溯瀟炤燒甦疏疎瘙笑篠簫素紹蔬蕭蘇訴逍遡邵銷韶騷俗屬束涑粟續謖贖速孫巽損蓀遜飡率宋悚松淞訟誦送頌刷殺灑碎鎖衰釗修受嗽囚垂壽嫂守岫峀帥愁�".split(""); +for(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];} +D[226] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������戍手授搜收數樹殊水洙漱燧狩獸琇璲瘦睡秀穗竪粹綏綬繡羞脩茱蒐蓚藪袖誰讐輸遂邃酬銖銹隋隧隨雖需須首髓鬚叔塾夙孰宿淑潚熟琡璹肅菽巡徇循恂旬栒楯橓殉洵淳珣盾瞬筍純脣舜荀蓴蕣詢諄醇錞順馴戌術述鉥崇崧�".split(""); +for(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];} +D[227] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������嵩瑟膝蝨濕拾習褶襲丞乘僧勝升承昇繩蠅陞侍匙嘶始媤尸屎屍市弑恃施是時枾柴猜矢示翅蒔蓍視試詩諡豕豺埴寔式息拭植殖湜熄篒蝕識軾食飾伸侁信呻娠宸愼新晨燼申神紳腎臣莘薪藎蜃訊身辛辰迅失室實悉審尋心沁�".split(""); +for(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];} +D[228] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������沈深瀋甚芯諶什十拾雙氏亞俄兒啞娥峨我牙芽莪蛾衙訝阿雅餓鴉鵝堊岳嶽幄惡愕握樂渥鄂鍔顎鰐齷安岸按晏案眼雁鞍顔鮟斡謁軋閼唵岩巖庵暗癌菴闇壓押狎鴨仰央怏昻殃秧鴦厓哀埃崖愛曖涯碍艾隘靄厄扼掖液縊腋額�".split(""); +for(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];} +D[229] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������櫻罌鶯鸚也倻冶夜惹揶椰爺耶若野弱掠略約若葯蒻藥躍亮佯兩凉壤孃恙揚攘敭暘梁楊樣洋瀁煬痒瘍禳穰糧羊良襄諒讓釀陽量養圄御於漁瘀禦語馭魚齬億憶抑檍臆偃堰彦焉言諺孼蘖俺儼嚴奄掩淹嶪業円予余勵呂女如廬�".split(""); +for(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];} +D[230] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������旅歟汝濾璵礖礪與艅茹輿轝閭餘驪麗黎亦力域役易曆歷疫繹譯轢逆驛嚥堧姸娟宴年延憐戀捐挻撚椽沇沿涎涓淵演漣烟然煙煉燃燕璉硏硯秊筵緣練縯聯衍軟輦蓮連鉛鍊鳶列劣咽悅涅烈熱裂說閱厭廉念捻染殮炎焰琰艶苒�".split(""); +for(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];} +D[231] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������簾閻髥鹽曄獵燁葉令囹塋寧嶺嶸影怜映暎楹榮永泳渶潁濚瀛瀯煐營獰玲瑛瑩瓔盈穎纓羚聆英詠迎鈴鍈零霙靈領乂倪例刈叡曳汭濊猊睿穢芮藝蘂禮裔詣譽豫醴銳隸霓預五伍俉傲午吾吳嗚塢墺奧娛寤悟惡懊敖旿晤梧汚澳�".split(""); +for(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];} +D[232] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������烏熬獒筽蜈誤鰲鼇屋沃獄玉鈺溫瑥瘟穩縕蘊兀壅擁瓮甕癰翁邕雍饔渦瓦窩窪臥蛙蝸訛婉完宛梡椀浣玩琓琬碗緩翫脘腕莞豌阮頑曰往旺枉汪王倭娃歪矮外嵬巍猥畏了僚僥凹堯夭妖姚寥寮尿嶢拗搖撓擾料曜樂橈燎燿瑤療�".split(""); +for(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];} +D[233] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������窈窯繇繞耀腰蓼蟯要謠遙遼邀饒慾欲浴縟褥辱俑傭冗勇埇墉容庸慂榕涌湧溶熔瑢用甬聳茸蓉踊鎔鏞龍于佑偶優又友右宇寓尤愚憂旴牛玗瑀盂祐禑禹紆羽芋藕虞迂遇郵釪隅雨雩勖彧旭昱栯煜稶郁頊云暈橒殞澐熉耘芸蕓�".split(""); +for(j = 0; j != D[233].length; ++j) if(D[233][j].charCodeAt(0) !== 0xFFFD) { e[D[233][j]] = 59648 + j; d[59648 + j] = D[233][j];} +D[234] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������運隕雲韻蔚鬱亐熊雄元原員圓園垣媛嫄寃怨愿援沅洹湲源爰猿瑗苑袁轅遠阮院願鴛月越鉞位偉僞危圍委威尉慰暐渭爲瑋緯胃萎葦蔿蝟衛褘謂違韋魏乳侑儒兪劉唯喩孺宥幼幽庾悠惟愈愉揄攸有杻柔柚柳楡楢油洧流游溜�".split(""); +for(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];} +D[235] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������濡猶猷琉瑜由留癒硫紐維臾萸裕誘諛諭踰蹂遊逾遺酉釉鍮類六堉戮毓肉育陸倫允奫尹崙淪潤玧胤贇輪鈗閏律慄栗率聿戎瀜絨融隆垠恩慇殷誾銀隱乙吟淫蔭陰音飮揖泣邑凝應膺鷹依倚儀宜意懿擬椅毅疑矣義艤薏蟻衣誼�".split(""); +for(j = 0; j != D[235].length; ++j) if(D[235][j].charCodeAt(0) !== 0xFFFD) { e[D[235][j]] = 60160 + j; d[60160 + j] = D[235][j];} +D[236] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������議醫二以伊利吏夷姨履已弛彛怡易李梨泥爾珥理異痍痢移罹而耳肄苡荑裏裡貽貳邇里離飴餌匿溺瀷益翊翌翼謚人仁刃印吝咽因姻寅引忍湮燐璘絪茵藺蚓認隣靭靷鱗麟一佚佾壹日溢逸鎰馹任壬妊姙恁林淋稔臨荏賃入卄�".split(""); +for(j = 0; j != D[236].length; ++j) if(D[236][j].charCodeAt(0) !== 0xFFFD) { e[D[236][j]] = 60416 + j; d[60416 + j] = D[236][j];} +D[237] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������立笠粒仍剩孕芿仔刺咨姉姿子字孜恣慈滋炙煮玆瓷疵磁紫者自茨蔗藉諮資雌作勺嚼斫昨灼炸爵綽芍酌雀鵲孱棧殘潺盞岑暫潛箴簪蠶雜丈仗匠場墻壯奬將帳庄張掌暲杖樟檣欌漿牆狀獐璋章粧腸臟臧莊葬蔣薔藏裝贓醬長�".split(""); +for(j = 0; j != D[237].length; ++j) if(D[237][j].charCodeAt(0) !== 0xFFFD) { e[D[237][j]] = 60672 + j; d[60672 + j] = D[237][j];} +D[238] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������障再哉在宰才材栽梓渽滓災縡裁財載齋齎爭箏諍錚佇低儲咀姐底抵杵楮樗沮渚狙猪疽箸紵苧菹著藷詛貯躇這邸雎齟勣吊嫡寂摘敵滴狄炙的積笛籍績翟荻謫賊赤跡蹟迪迹適鏑佃佺傳全典前剪塡塼奠專展廛悛戰栓殿氈澱�".split(""); +for(j = 0; j != D[238].length; ++j) if(D[238][j].charCodeAt(0) !== 0xFFFD) { e[D[238][j]] = 60928 + j; d[60928 + j] = D[238][j];} +D[239] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������煎琠田甸畑癲筌箋箭篆纏詮輾轉鈿銓錢鐫電顚顫餞切截折浙癤竊節絶占岾店漸点粘霑鮎點接摺蝶丁井亭停偵呈姃定幀庭廷征情挺政整旌晶晸柾楨檉正汀淀淨渟湞瀞炡玎珽町睛碇禎程穽精綎艇訂諪貞鄭酊釘鉦鋌錠霆靖�".split(""); +for(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];} +D[240] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������靜頂鼎制劑啼堤帝弟悌提梯濟祭第臍薺製諸蹄醍除際霽題齊俎兆凋助嘲弔彫措操早晁曺曹朝條棗槽漕潮照燥爪璪眺祖祚租稠窕粗糟組繰肇藻蚤詔調趙躁造遭釣阻雕鳥族簇足鏃存尊卒拙猝倧宗從悰慫棕淙琮種終綜縱腫�".split(""); +for(j = 0; j != D[240].length; ++j) if(D[240][j].charCodeAt(0) !== 0xFFFD) { e[D[240][j]] = 61440 + j; d[61440 + j] = D[240][j];} +D[241] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������踪踵鍾鐘佐坐左座挫罪主住侏做姝胄呪周嗾奏宙州廚晝朱柱株注洲湊澍炷珠疇籌紂紬綢舟蛛註誅走躊輳週酎酒鑄駐竹粥俊儁准埈寯峻晙樽浚準濬焌畯竣蠢逡遵雋駿茁中仲衆重卽櫛楫汁葺增憎曾拯烝甑症繒蒸證贈之只�".split(""); +for(j = 0; j != D[241].length; ++j) if(D[241][j].charCodeAt(0) !== 0xFFFD) { e[D[241][j]] = 61696 + j; d[61696 + j] = D[241][j];} +D[242] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������咫地址志持指摯支旨智枝枳止池沚漬知砥祉祗紙肢脂至芝芷蜘誌識贄趾遲直稙稷織職唇嗔塵振搢晉晋桭榛殄津溱珍瑨璡畛疹盡眞瞋秦縉縝臻蔯袗診賑軫辰進鎭陣陳震侄叱姪嫉帙桎瓆疾秩窒膣蛭質跌迭斟朕什執潗緝輯�".split(""); +for(j = 0; j != D[242].length; ++j) if(D[242][j].charCodeAt(0) !== 0xFFFD) { e[D[242][j]] = 61952 + j; d[61952 + j] = D[242][j];} +D[243] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������鏶集徵懲澄且侘借叉嗟嵯差次此磋箚茶蹉車遮捉搾着窄錯鑿齪撰澯燦璨瓚竄簒纂粲纘讚贊鑽餐饌刹察擦札紮僭參塹慘慙懺斬站讒讖倉倡創唱娼廠彰愴敞昌昶暢槍滄漲猖瘡窓脹艙菖蒼債埰寀寨彩採砦綵菜蔡采釵冊柵策�".split(""); +for(j = 0; j != D[243].length; ++j) if(D[243][j].charCodeAt(0) !== 0xFFFD) { e[D[243][j]] = 62208 + j; d[62208 + j] = D[243][j];} +D[244] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������責凄妻悽處倜刺剔尺慽戚拓擲斥滌瘠脊蹠陟隻仟千喘天川擅泉淺玔穿舛薦賤踐遷釧闡阡韆凸哲喆徹撤澈綴輟轍鐵僉尖沾添甛瞻簽籤詹諂堞妾帖捷牒疊睫諜貼輒廳晴淸聽菁請靑鯖切剃替涕滯締諦逮遞體初剿哨憔抄招梢�".split(""); +for(j = 0; j != D[244].length; ++j) if(D[244][j].charCodeAt(0) !== 0xFFFD) { e[D[244][j]] = 62464 + j; d[62464 + j] = D[244][j];} +D[245] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������椒楚樵炒焦硝礁礎秒稍肖艸苕草蕉貂超酢醋醮促囑燭矗蜀觸寸忖村邨叢塚寵悤憁摠總聰蔥銃撮催崔最墜抽推椎楸樞湫皺秋芻萩諏趨追鄒酋醜錐錘鎚雛騶鰍丑畜祝竺筑築縮蓄蹙蹴軸逐春椿瑃出朮黜充忠沖蟲衝衷悴膵萃�".split(""); +for(j = 0; j != D[245].length; ++j) if(D[245][j].charCodeAt(0) !== 0xFFFD) { e[D[245][j]] = 62720 + j; d[62720 + j] = D[245][j];} +D[246] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������贅取吹嘴娶就炊翠聚脆臭趣醉驟鷲側仄厠惻測層侈値嗤峙幟恥梔治淄熾痔痴癡稚穉緇緻置致蚩輜雉馳齒則勅飭親七柒漆侵寢枕沈浸琛砧針鍼蟄秤稱快他咤唾墮妥惰打拖朶楕舵陀馱駝倬卓啄坼度托拓擢晫柝濁濯琢琸託�".split(""); +for(j = 0; j != D[246].length; ++j) if(D[246][j].charCodeAt(0) !== 0xFFFD) { e[D[246][j]] = 62976 + j; d[62976 + j] = D[246][j];} +D[247] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������鐸呑嘆坦彈憚歎灘炭綻誕奪脫探眈耽貪塔搭榻宕帑湯糖蕩兌台太怠態殆汰泰笞胎苔跆邰颱宅擇澤撑攄兎吐土討慟桶洞痛筒統通堆槌腿褪退頹偸套妬投透鬪慝特闖坡婆巴把播擺杷波派爬琶破罷芭跛頗判坂板版瓣販辦鈑�".split(""); +for(j = 0; j != D[247].length; ++j) if(D[247][j].charCodeAt(0) !== 0xFFFD) { e[D[247][j]] = 63232 + j; d[63232 + j] = D[247][j];} +D[248] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������阪八叭捌佩唄悖敗沛浿牌狽稗覇貝彭澎烹膨愎便偏扁片篇編翩遍鞭騙貶坪平枰萍評吠嬖幣廢弊斃肺蔽閉陛佈包匍匏咆哺圃布怖抛抱捕暴泡浦疱砲胞脯苞葡蒲袍褒逋鋪飽鮑幅暴曝瀑爆輻俵剽彪慓杓標漂瓢票表豹飇飄驃�".split(""); +for(j = 0; j != D[248].length; ++j) if(D[248][j].charCodeAt(0) !== 0xFFFD) { e[D[248][j]] = 63488 + j; d[63488 + j] = D[248][j];} +D[249] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������品稟楓諷豊風馮彼披疲皮被避陂匹弼必泌珌畢疋筆苾馝乏逼下何厦夏廈昰河瑕荷蝦賀遐霞鰕壑學虐謔鶴寒恨悍旱汗漢澣瀚罕翰閑閒限韓割轄函含咸啣喊檻涵緘艦銜陷鹹合哈盒蛤閤闔陜亢伉姮嫦巷恒抗杭桁沆港缸肛航�".split(""); +for(j = 0; j != D[249].length; ++j) if(D[249][j].charCodeAt(0) !== 0xFFFD) { e[D[249][j]] = 63744 + j; d[63744 + j] = D[249][j];} +D[250] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������行降項亥偕咳垓奚孩害懈楷海瀣蟹解該諧邂駭骸劾核倖幸杏荇行享向嚮珦鄕響餉饗香噓墟虛許憲櫶獻軒歇險驗奕爀赫革俔峴弦懸晛泫炫玄玹現眩睍絃絢縣舷衒見賢鉉顯孑穴血頁嫌俠協夾峽挾浹狹脅脇莢鋏頰亨兄刑型�".split(""); +for(j = 0; j != D[250].length; ++j) if(D[250][j].charCodeAt(0) !== 0xFFFD) { e[D[250][j]] = 64000 + j; d[64000 + j] = D[250][j];} +D[251] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������形泂滎瀅灐炯熒珩瑩荊螢衡逈邢鎣馨兮彗惠慧暳蕙蹊醯鞋乎互呼壕壺好岵弧戶扈昊晧毫浩淏湖滸澔濠濩灝狐琥瑚瓠皓祜糊縞胡芦葫蒿虎號蝴護豪鎬頀顥惑或酷婚昏混渾琿魂忽惚笏哄弘汞泓洪烘紅虹訌鴻化和嬅樺火畵�".split(""); +for(j = 0; j != D[251].length; ++j) if(D[251][j].charCodeAt(0) !== 0xFFFD) { e[D[251][j]] = 64256 + j; d[64256 + j] = D[251][j];} +D[252] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������禍禾花華話譁貨靴廓擴攫確碻穫丸喚奐宦幻患換歡晥桓渙煥環紈還驩鰥活滑猾豁闊凰幌徨恍惶愰慌晃晄榥況湟滉潢煌璜皇篁簧荒蝗遑隍黃匯回廻徊恢悔懷晦會檜淮澮灰獪繪膾茴蛔誨賄劃獲宖橫鐄哮嚆孝效斅曉梟涍淆�".split(""); +for(j = 0; j != D[252].length; ++j) if(D[252][j].charCodeAt(0) !== 0xFFFD) { e[D[252][j]] = 64512 + j; d[64512 + j] = D[252][j];} +D[253] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������爻肴酵驍侯候厚后吼喉嗅帿後朽煦珝逅勛勳塤壎焄熏燻薰訓暈薨喧暄煊萱卉喙毁彙徽揮暉煇諱輝麾休携烋畦虧恤譎鷸兇凶匈洶胸黑昕欣炘痕吃屹紇訖欠欽歆吸恰洽翕興僖凞喜噫囍姬嬉希憙憘戱晞曦熙熹熺犧禧稀羲詰�".split(""); +for(j = 0; j != D[253].length; ++j) if(D[253][j].charCodeAt(0) !== 0xFFFD) { e[D[253][j]] = 64768 + j; d[64768 + j] = D[253][j];} +return {"enc": e, "dec": d }; })(); +cptable[10004] = (function(){ var d = "ےے\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~Ä ÇÉÑÖÜáàâäں«çéèêëí…îïñó»ôö÷úùûü٪،٠١٢٣٤٥٦٧٨٩؛؟٭ءآأؤإئابةتثجحخدذرزسشصضطظعغـفقكلمنهوىيًٌٍَُِّْپٹچەڤگڈڑژے", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +cptable[10005] = (function(){ var d = "\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü¤₪„ּֽ… �ִֵֶַ–—“”‘’־ְֱֲֳָֻׁאבגדהוזחטיךכלםמןנסעףפץצקרשת", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +cptable[10008] = (function(){ var d = [], e = {}, D = [], j; +D[0] = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€���������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];} +D[161] = "����������������������������������������������������������������������������������������������������������������������������������������������������������������� 、。・ˉˇ¨〃々―~�…‘’“”〔〕〈〉《》「」『』〖〗【】±×÷∶∧∨∑∏∪∩∈∷√⊥∥∠⌒⊙∫∮≡≌≈∽∝≠≮≯≤≥∞∵∴♂♀°′″℃$¤¢£‰§№☆★○●◎◇◆□■△▲※→←↑↓〓�".split(""); +for(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];} +D[162] = "���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������⒈⒉⒊⒋⒌⒍⒎⒏⒐⒑⒒⒓⒔⒕⒖⒗⒘⒙⒚⒛⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽⑾⑿⒀⒁⒂⒃⒄⒅⒆⒇①②③④⑤⑥⑦⑧⑨⑩��㈠㈡㈢㈣㈤㈥㈦㈧㈨㈩��ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫ���".split(""); +for(j = 0; j != D[162].length; ++j) if(D[162][j].charCodeAt(0) !== 0xFFFD) { e[D[162][j]] = 41472 + j; d[41472 + j] = D[162][j];} +D[163] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������!"#¥%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|} ̄�".split(""); +for(j = 0; j != D[163].length; ++j) if(D[163][j].charCodeAt(0) !== 0xFFFD) { e[D[163][j]] = 41728 + j; d[41728 + j] = D[163][j];} +D[164] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをん������������".split(""); +for(j = 0; j != D[164].length; ++j) if(D[164][j].charCodeAt(0) !== 0xFFFD) { e[D[164][j]] = 41984 + j; d[41984 + j] = D[164][j];} +D[165] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶ���������".split(""); +for(j = 0; j != D[165].length; ++j) if(D[165][j].charCodeAt(0) !== 0xFFFD) { e[D[165][j]] = 42240 + j; d[42240 + j] = D[165][j];} +D[166] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ��������αβγδεζηθικλμνξοπρστυφχψω���������������������������������������".split(""); +for(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];} +D[167] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ���������������абвгдеёжзийклмнопрстуфхцчшщъыьэюя��������������".split(""); +for(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];} +D[168] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������āáǎàēéěèīíǐìōóǒòūúǔùǖǘǚǜüê����������ㄅㄆㄇㄈㄉㄊㄋㄌㄍㄎㄏㄐㄑㄒㄓㄔㄕㄖㄗㄘㄙㄚㄛㄜㄝㄞㄟㄠㄡㄢㄣㄤㄥㄦㄧㄨㄩ����������������������".split(""); +for(j = 0; j != D[168].length; ++j) if(D[168][j].charCodeAt(0) !== 0xFFFD) { e[D[168][j]] = 43008 + j; d[43008 + j] = D[168][j];} +D[169] = "��������������������������������������������������������������������������������������������������������������������������������������������������������������������─━│┃┄┅┆┇┈┉┊┋┌┍┎┏┐┑┒┓└┕┖┗┘┙┚┛├┝┞┟┠┡┢┣┤┥┦┧┨┩┪┫┬┭┮┯┰┱┲┳┴┵┶┷┸┹┺┻┼┽┾┿╀╁╂╃╄╅╆╇╈╉╊╋����������������".split(""); +for(j = 0; j != D[169].length; ++j) if(D[169][j].charCodeAt(0) !== 0xFFFD) { e[D[169][j]] = 43264 + j; d[43264 + j] = D[169][j];} +D[176] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������啊阿埃挨哎唉哀皑癌蔼矮艾碍爱隘鞍氨安俺按暗岸胺案肮昂盎凹敖熬翱袄傲奥懊澳芭捌扒叭吧笆八疤巴拔跋靶把耙坝霸罢爸白柏百摆佰败拜稗斑班搬扳般颁板版扮拌伴瓣半办绊邦帮梆榜膀绑棒磅蚌镑傍谤苞胞包褒剥�".split(""); +for(j = 0; j != D[176].length; ++j) if(D[176][j].charCodeAt(0) !== 0xFFFD) { e[D[176][j]] = 45056 + j; d[45056 + j] = D[176][j];} +D[177] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������薄雹保堡饱宝抱报暴豹鲍爆杯碑悲卑北辈背贝钡倍狈备惫焙被奔苯本笨崩绷甭泵蹦迸逼鼻比鄙笔彼碧蓖蔽毕毙毖币庇痹闭敝弊必辟壁臂避陛鞭边编贬扁便变卞辨辩辫遍标彪膘表鳖憋别瘪彬斌濒滨宾摈兵冰柄丙秉饼炳�".split(""); +for(j = 0; j != D[177].length; ++j) if(D[177][j].charCodeAt(0) !== 0xFFFD) { e[D[177][j]] = 45312 + j; d[45312 + j] = D[177][j];} +D[178] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������病并玻菠播拨钵波博勃搏铂箔伯帛舶脖膊渤泊驳捕卜哺补埠不布步簿部怖擦猜裁材才财睬踩采彩菜蔡餐参蚕残惭惨灿苍舱仓沧藏操糙槽曹草厕策侧册测层蹭插叉茬茶查碴搽察岔差诧拆柴豺搀掺蝉馋谗缠铲产阐颤昌猖�".split(""); +for(j = 0; j != D[178].length; ++j) if(D[178][j].charCodeAt(0) !== 0xFFFD) { e[D[178][j]] = 45568 + j; d[45568 + j] = D[178][j];} +D[179] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������场尝常长偿肠厂敞畅唱倡超抄钞朝嘲潮巢吵炒车扯撤掣彻澈郴臣辰尘晨忱沉陈趁衬撑称城橙成呈乘程惩澄诚承逞骋秤吃痴持匙池迟弛驰耻齿侈尺赤翅斥炽充冲虫崇宠抽酬畴踌稠愁筹仇绸瞅丑臭初出橱厨躇锄雏滁除楚�".split(""); +for(j = 0; j != D[179].length; ++j) if(D[179][j].charCodeAt(0) !== 0xFFFD) { e[D[179][j]] = 45824 + j; d[45824 + j] = D[179][j];} +D[180] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������础储矗搐触处揣川穿椽传船喘串疮窗幢床闯创吹炊捶锤垂春椿醇唇淳纯蠢戳绰疵茨磁雌辞慈瓷词此刺赐次聪葱囱匆从丛凑粗醋簇促蹿篡窜摧崔催脆瘁粹淬翠村存寸磋撮搓措挫错搭达答瘩打大呆歹傣戴带殆代贷袋待逮�".split(""); +for(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];} +D[181] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������怠耽担丹单郸掸胆旦氮但惮淡诞弹蛋当挡党荡档刀捣蹈倒岛祷导到稻悼道盗德得的蹬灯登等瞪凳邓堤低滴迪敌笛狄涤翟嫡抵底地蒂第帝弟递缔颠掂滇碘点典靛垫电佃甸店惦奠淀殿碉叼雕凋刁掉吊钓调跌爹碟蝶迭谍叠�".split(""); +for(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];} +D[182] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������丁盯叮钉顶鼎锭定订丢东冬董懂动栋侗恫冻洞兜抖斗陡豆逗痘都督毒犊独读堵睹赌杜镀肚度渡妒端短锻段断缎堆兑队对墩吨蹲敦顿囤钝盾遁掇哆多夺垛躲朵跺舵剁惰堕蛾峨鹅俄额讹娥恶厄扼遏鄂饿恩而儿耳尔饵洱二�".split(""); +for(j = 0; j != D[182].length; ++j) if(D[182][j].charCodeAt(0) !== 0xFFFD) { e[D[182][j]] = 46592 + j; d[46592 + j] = D[182][j];} +D[183] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������贰发罚筏伐乏阀法珐藩帆番翻樊矾钒繁凡烦反返范贩犯饭泛坊芳方肪房防妨仿访纺放菲非啡飞肥匪诽吠肺废沸费芬酚吩氛分纷坟焚汾粉奋份忿愤粪丰封枫蜂峰锋风疯烽逢冯缝讽奉凤佛否夫敷肤孵扶拂辐幅氟符伏俘服�".split(""); +for(j = 0; j != D[183].length; ++j) if(D[183][j].charCodeAt(0) !== 0xFFFD) { e[D[183][j]] = 46848 + j; d[46848 + j] = D[183][j];} +D[184] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������浮涪福袱弗甫抚辅俯釜斧脯腑府腐赴副覆赋复傅付阜父腹负富讣附妇缚咐噶嘎该改概钙盖溉干甘杆柑竿肝赶感秆敢赣冈刚钢缸肛纲岗港杠篙皋高膏羔糕搞镐稿告哥歌搁戈鸽胳疙割革葛格蛤阁隔铬个各给根跟耕更庚羹�".split(""); +for(j = 0; j != D[184].length; ++j) if(D[184][j].charCodeAt(0) !== 0xFFFD) { e[D[184][j]] = 47104 + j; d[47104 + j] = D[184][j];} +D[185] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������埂耿梗工攻功恭龚供躬公宫弓巩汞拱贡共钩勾沟苟狗垢构购够辜菇咕箍估沽孤姑鼓古蛊骨谷股故顾固雇刮瓜剐寡挂褂乖拐怪棺关官冠观管馆罐惯灌贯光广逛瑰规圭硅归龟闺轨鬼诡癸桂柜跪贵刽辊滚棍锅郭国果裹过哈�".split(""); +for(j = 0; j != D[185].length; ++j) if(D[185][j].charCodeAt(0) !== 0xFFFD) { e[D[185][j]] = 47360 + j; d[47360 + j] = D[185][j];} +D[186] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������骸孩海氦亥害骇酣憨邯韩含涵寒函喊罕翰撼捍旱憾悍焊汗汉夯杭航壕嚎豪毫郝好耗号浩呵喝荷菏核禾和何合盒貉阂河涸赫褐鹤贺嘿黑痕很狠恨哼亨横衡恒轰哄烘虹鸿洪宏弘红喉侯猴吼厚候后呼乎忽瑚壶葫胡蝴狐糊湖�".split(""); +for(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];} +D[187] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������弧虎唬护互沪户花哗华猾滑画划化话槐徊怀淮坏欢环桓还缓换患唤痪豢焕涣宦幻荒慌黄磺蝗簧皇凰惶煌晃幌恍谎灰挥辉徽恢蛔回毁悔慧卉惠晦贿秽会烩汇讳诲绘荤昏婚魂浑混豁活伙火获或惑霍货祸击圾基机畸稽积箕�".split(""); +for(j = 0; j != D[187].length; ++j) if(D[187][j].charCodeAt(0) !== 0xFFFD) { e[D[187][j]] = 47872 + j; d[47872 + j] = D[187][j];} +D[188] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������肌饥迹激讥鸡姬绩缉吉极棘辑籍集及急疾汲即嫉级挤几脊己蓟技冀季伎祭剂悸济寄寂计记既忌际妓继纪嘉枷夹佳家加荚颊贾甲钾假稼价架驾嫁歼监坚尖笺间煎兼肩艰奸缄茧检柬碱硷拣捡简俭剪减荐槛鉴践贱见键箭件�".split(""); +for(j = 0; j != D[188].length; ++j) if(D[188][j].charCodeAt(0) !== 0xFFFD) { e[D[188][j]] = 48128 + j; d[48128 + j] = D[188][j];} +D[189] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������健舰剑饯渐溅涧建僵姜将浆江疆蒋桨奖讲匠酱降蕉椒礁焦胶交郊浇骄娇嚼搅铰矫侥脚狡角饺缴绞剿教酵轿较叫窖揭接皆秸街阶截劫节桔杰捷睫竭洁结解姐戒藉芥界借介疥诫届巾筋斤金今津襟紧锦仅谨进靳晋禁近烬浸�".split(""); +for(j = 0; j != D[189].length; ++j) if(D[189][j].charCodeAt(0) !== 0xFFFD) { e[D[189][j]] = 48384 + j; d[48384 + j] = D[189][j];} +D[190] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������尽劲荆兢茎睛晶鲸京惊精粳经井警景颈静境敬镜径痉靖竟竞净炯窘揪究纠玖韭久灸九酒厩救旧臼舅咎就疚鞠拘狙疽居驹菊局咀矩举沮聚拒据巨具距踞锯俱句惧炬剧捐鹃娟倦眷卷绢撅攫抉掘倔爵觉决诀绝均菌钧军君峻�".split(""); +for(j = 0; j != D[190].length; ++j) if(D[190][j].charCodeAt(0) !== 0xFFFD) { e[D[190][j]] = 48640 + j; d[48640 + j] = D[190][j];} +D[191] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������俊竣浚郡骏喀咖卡咯开揩楷凯慨刊堪勘坎砍看康慷糠扛抗亢炕考拷烤靠坷苛柯棵磕颗科壳咳可渴克刻客课肯啃垦恳坑吭空恐孔控抠口扣寇枯哭窟苦酷库裤夸垮挎跨胯块筷侩快宽款匡筐狂框矿眶旷况亏盔岿窥葵奎魁傀�".split(""); +for(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];} +D[192] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������馈愧溃坤昆捆困括扩廓阔垃拉喇蜡腊辣啦莱来赖蓝婪栏拦篮阑兰澜谰揽览懒缆烂滥琅榔狼廊郎朗浪捞劳牢老佬姥酪烙涝勒乐雷镭蕾磊累儡垒擂肋类泪棱楞冷厘梨犁黎篱狸离漓理李里鲤礼莉荔吏栗丽厉励砾历利傈例俐�".split(""); +for(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];} +D[193] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������痢立粒沥隶力璃哩俩联莲连镰廉怜涟帘敛脸链恋炼练粮凉梁粱良两辆量晾亮谅撩聊僚疗燎寥辽潦了撂镣廖料列裂烈劣猎琳林磷霖临邻鳞淋凛赁吝拎玲菱零龄铃伶羚凌灵陵岭领另令溜琉榴硫馏留刘瘤流柳六龙聋咙笼窿�".split(""); +for(j = 0; j != D[193].length; ++j) if(D[193][j].charCodeAt(0) !== 0xFFFD) { e[D[193][j]] = 49408 + j; d[49408 + j] = D[193][j];} +D[194] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������隆垄拢陇楼娄搂篓漏陋芦卢颅庐炉掳卤虏鲁麓碌露路赂鹿潞禄录陆戮驴吕铝侣旅履屡缕虑氯律率滤绿峦挛孪滦卵乱掠略抡轮伦仑沦纶论萝螺罗逻锣箩骡裸落洛骆络妈麻玛码蚂马骂嘛吗埋买麦卖迈脉瞒馒蛮满蔓曼慢漫�".split(""); +for(j = 0; j != D[194].length; ++j) if(D[194][j].charCodeAt(0) !== 0xFFFD) { e[D[194][j]] = 49664 + j; d[49664 + j] = D[194][j];} +D[195] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������谩芒茫盲氓忙莽猫茅锚毛矛铆卯茂冒帽貌贸么玫枚梅酶霉煤没眉媒镁每美昧寐妹媚门闷们萌蒙檬盟锰猛梦孟眯醚靡糜迷谜弥米秘觅泌蜜密幂棉眠绵冕免勉娩缅面苗描瞄藐秒渺庙妙蔑灭民抿皿敏悯闽明螟鸣铭名命谬摸�".split(""); +for(j = 0; j != D[195].length; ++j) if(D[195][j].charCodeAt(0) !== 0xFFFD) { e[D[195][j]] = 49920 + j; d[49920 + j] = D[195][j];} +D[196] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������摹蘑模膜磨摩魔抹末莫墨默沫漠寞陌谋牟某拇牡亩姆母墓暮幕募慕木目睦牧穆拿哪呐钠那娜纳氖乃奶耐奈南男难囊挠脑恼闹淖呢馁内嫩能妮霓倪泥尼拟你匿腻逆溺蔫拈年碾撵捻念娘酿鸟尿捏聂孽啮镊镍涅您柠狞凝宁�".split(""); +for(j = 0; j != D[196].length; ++j) if(D[196][j].charCodeAt(0) !== 0xFFFD) { e[D[196][j]] = 50176 + j; d[50176 + j] = D[196][j];} +D[197] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������拧泞牛扭钮纽脓浓农弄奴努怒女暖虐疟挪懦糯诺哦欧鸥殴藕呕偶沤啪趴爬帕怕琶拍排牌徘湃派攀潘盘磐盼畔判叛乓庞旁耪胖抛咆刨炮袍跑泡呸胚培裴赔陪配佩沛喷盆砰抨烹澎彭蓬棚硼篷膨朋鹏捧碰坯砒霹批披劈琵毗�".split(""); +for(j = 0; j != D[197].length; ++j) if(D[197][j].charCodeAt(0) !== 0xFFFD) { e[D[197][j]] = 50432 + j; d[50432 + j] = D[197][j];} +D[198] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������啤脾疲皮匹痞僻屁譬篇偏片骗飘漂瓢票撇瞥拼频贫品聘乒坪苹萍平凭瓶评屏坡泼颇婆破魄迫粕剖扑铺仆莆葡菩蒲埔朴圃普浦谱曝瀑期欺栖戚妻七凄漆柒沏其棋奇歧畦崎脐齐旗祈祁骑起岂乞企启契砌器气迄弃汽泣讫掐�".split(""); +for(j = 0; j != D[198].length; ++j) if(D[198][j].charCodeAt(0) !== 0xFFFD) { e[D[198][j]] = 50688 + j; d[50688 + j] = D[198][j];} +D[199] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������恰洽牵扦钎铅千迁签仟谦乾黔钱钳前潜遣浅谴堑嵌欠歉枪呛腔羌墙蔷强抢橇锹敲悄桥瞧乔侨巧鞘撬翘峭俏窍切茄且怯窃钦侵亲秦琴勤芹擒禽寝沁青轻氢倾卿清擎晴氰情顷请庆琼穷秋丘邱球求囚酋泅趋区蛆曲躯屈驱渠�".split(""); +for(j = 0; j != D[199].length; ++j) if(D[199][j].charCodeAt(0) !== 0xFFFD) { e[D[199][j]] = 50944 + j; d[50944 + j] = D[199][j];} +D[200] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������取娶龋趣去圈颧权醛泉全痊拳犬券劝缺炔瘸却鹊榷确雀裙群然燃冉染瓤壤攘嚷让饶扰绕惹热壬仁人忍韧任认刃妊纫扔仍日戎茸蓉荣融熔溶容绒冗揉柔肉茹蠕儒孺如辱乳汝入褥软阮蕊瑞锐闰润若弱撒洒萨腮鳃塞赛三叁�".split(""); +for(j = 0; j != D[200].length; ++j) if(D[200][j].charCodeAt(0) !== 0xFFFD) { e[D[200][j]] = 51200 + j; d[51200 + j] = D[200][j];} +D[201] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������伞散桑嗓丧搔骚扫嫂瑟色涩森僧莎砂杀刹沙纱傻啥煞筛晒珊苫杉山删煽衫闪陕擅赡膳善汕扇缮墒伤商赏晌上尚裳梢捎稍烧芍勺韶少哨邵绍奢赊蛇舌舍赦摄射慑涉社设砷申呻伸身深娠绅神沈审婶甚肾慎渗声生甥牲升绳�".split(""); +for(j = 0; j != D[201].length; ++j) if(D[201][j].charCodeAt(0) !== 0xFFFD) { e[D[201][j]] = 51456 + j; d[51456 + j] = D[201][j];} +D[202] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������省盛剩胜圣师失狮施湿诗尸虱十石拾时什食蚀实识史矢使屎驶始式示士世柿事拭誓逝势是嗜噬适仕侍释饰氏市恃室视试收手首守寿授售受瘦兽蔬枢梳殊抒输叔舒淑疏书赎孰熟薯暑曙署蜀黍鼠属术述树束戍竖墅庶数漱�".split(""); +for(j = 0; j != D[202].length; ++j) if(D[202][j].charCodeAt(0) !== 0xFFFD) { e[D[202][j]] = 51712 + j; d[51712 + j] = D[202][j];} +D[203] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������恕刷耍摔衰甩帅栓拴霜双爽谁水睡税吮瞬顺舜说硕朔烁斯撕嘶思私司丝死肆寺嗣四伺似饲巳松耸怂颂送宋讼诵搜艘擞嗽苏酥俗素速粟僳塑溯宿诉肃酸蒜算虽隋随绥髓碎岁穗遂隧祟孙损笋蓑梭唆缩琐索锁所塌他它她塔�".split(""); +for(j = 0; j != D[203].length; ++j) if(D[203][j].charCodeAt(0) !== 0xFFFD) { e[D[203][j]] = 51968 + j; d[51968 + j] = D[203][j];} +D[204] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������獭挞蹋踏胎苔抬台泰酞太态汰坍摊贪瘫滩坛檀痰潭谭谈坦毯袒碳探叹炭汤塘搪堂棠膛唐糖倘躺淌趟烫掏涛滔绦萄桃逃淘陶讨套特藤腾疼誊梯剔踢锑提题蹄啼体替嚏惕涕剃屉天添填田甜恬舔腆挑条迢眺跳贴铁帖厅听烃�".split(""); +for(j = 0; j != D[204].length; ++j) if(D[204][j].charCodeAt(0) !== 0xFFFD) { e[D[204][j]] = 52224 + j; d[52224 + j] = D[204][j];} +D[205] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������汀廷停亭庭挺艇通桐酮瞳同铜彤童桶捅筒统痛偷投头透凸秃突图徒途涂屠土吐兔湍团推颓腿蜕褪退吞屯臀拖托脱鸵陀驮驼椭妥拓唾挖哇蛙洼娃瓦袜歪外豌弯湾玩顽丸烷完碗挽晚皖惋宛婉万腕汪王亡枉网往旺望忘妄威�".split(""); +for(j = 0; j != D[205].length; ++j) if(D[205][j].charCodeAt(0) !== 0xFFFD) { e[D[205][j]] = 52480 + j; d[52480 + j] = D[205][j];} +D[206] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������巍微危韦违桅围唯惟为潍维苇萎委伟伪尾纬未蔚味畏胃喂魏位渭谓尉慰卫瘟温蚊文闻纹吻稳紊问嗡翁瓮挝蜗涡窝我斡卧握沃巫呜钨乌污诬屋无芜梧吾吴毋武五捂午舞伍侮坞戊雾晤物勿务悟误昔熙析西硒矽晰嘻吸锡牺�".split(""); +for(j = 0; j != D[206].length; ++j) if(D[206][j].charCodeAt(0) !== 0xFFFD) { e[D[206][j]] = 52736 + j; d[52736 + j] = D[206][j];} +D[207] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������稀息希悉膝夕惜熄烯溪汐犀檄袭席习媳喜铣洗系隙戏细瞎虾匣霞辖暇峡侠狭下厦夏吓掀锨先仙鲜纤咸贤衔舷闲涎弦嫌显险现献县腺馅羡宪陷限线相厢镶香箱襄湘乡翔祥详想响享项巷橡像向象萧硝霄削哮嚣销消宵淆晓�".split(""); +for(j = 0; j != D[207].length; ++j) if(D[207][j].charCodeAt(0) !== 0xFFFD) { e[D[207][j]] = 52992 + j; d[52992 + j] = D[207][j];} +D[208] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������小孝校肖啸笑效楔些歇蝎鞋协挟携邪斜胁谐写械卸蟹懈泄泻谢屑薪芯锌欣辛新忻心信衅星腥猩惺兴刑型形邢行醒幸杏性姓兄凶胸匈汹雄熊休修羞朽嗅锈秀袖绣墟戌需虚嘘须徐许蓄酗叙旭序畜恤絮婿绪续轩喧宣悬旋玄�".split(""); +for(j = 0; j != D[208].length; ++j) if(D[208][j].charCodeAt(0) !== 0xFFFD) { e[D[208][j]] = 53248 + j; d[53248 + j] = D[208][j];} +D[209] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������选癣眩绚靴薛学穴雪血勋熏循旬询寻驯巡殉汛训讯逊迅压押鸦鸭呀丫芽牙蚜崖衙涯雅哑亚讶焉咽阉烟淹盐严研蜒岩延言颜阎炎沿奄掩眼衍演艳堰燕厌砚雁唁彦焰宴谚验殃央鸯秧杨扬佯疡羊洋阳氧仰痒养样漾邀腰妖瑶�".split(""); +for(j = 0; j != D[209].length; ++j) if(D[209][j].charCodeAt(0) !== 0xFFFD) { e[D[209][j]] = 53504 + j; d[53504 + j] = D[209][j];} +D[210] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������摇尧遥窑谣姚咬舀药要耀椰噎耶爷野冶也页掖业叶曳腋夜液一壹医揖铱依伊衣颐夷遗移仪胰疑沂宜姨彝椅蚁倚已乙矣以艺抑易邑屹亿役臆逸肄疫亦裔意毅忆义益溢诣议谊译异翼翌绎茵荫因殷音阴姻吟银淫寅饮尹引隐�".split(""); +for(j = 0; j != D[210].length; ++j) if(D[210][j].charCodeAt(0) !== 0xFFFD) { e[D[210][j]] = 53760 + j; d[53760 + j] = D[210][j];} +D[211] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������印英樱婴鹰应缨莹萤营荧蝇迎赢盈影颖硬映哟拥佣臃痈庸雍踊蛹咏泳涌永恿勇用幽优悠忧尤由邮铀犹油游酉有友右佑釉诱又幼迂淤于盂榆虞愚舆余俞逾鱼愉渝渔隅予娱雨与屿禹宇语羽玉域芋郁吁遇喻峪御愈欲狱育誉�".split(""); +for(j = 0; j != D[211].length; ++j) if(D[211][j].charCodeAt(0) !== 0xFFFD) { e[D[211][j]] = 54016 + j; d[54016 + j] = D[211][j];} +D[212] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������浴寓裕预豫驭鸳渊冤元垣袁原援辕园员圆猿源缘远苑愿怨院曰约越跃钥岳粤月悦阅耘云郧匀陨允运蕴酝晕韵孕匝砸杂栽哉灾宰载再在咱攒暂赞赃脏葬遭糟凿藻枣早澡蚤躁噪造皂灶燥责择则泽贼怎增憎曾赠扎喳渣札轧�".split(""); +for(j = 0; j != D[212].length; ++j) if(D[212][j].charCodeAt(0) !== 0xFFFD) { e[D[212][j]] = 54272 + j; d[54272 + j] = D[212][j];} +D[213] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������铡闸眨栅榨咋乍炸诈摘斋宅窄债寨瞻毡詹粘沾盏斩辗崭展蘸栈占战站湛绽樟章彰漳张掌涨杖丈帐账仗胀瘴障招昭找沼赵照罩兆肇召遮折哲蛰辙者锗蔗这浙珍斟真甄砧臻贞针侦枕疹诊震振镇阵蒸挣睁征狰争怔整拯正政�".split(""); +for(j = 0; j != D[213].length; ++j) if(D[213][j].charCodeAt(0) !== 0xFFFD) { e[D[213][j]] = 54528 + j; d[54528 + j] = D[213][j];} +D[214] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������帧症郑证芝枝支吱蜘知肢脂汁之织职直植殖执值侄址指止趾只旨纸志挚掷至致置帜峙制智秩稚质炙痔滞治窒中盅忠钟衷终种肿重仲众舟周州洲诌粥轴肘帚咒皱宙昼骤珠株蛛朱猪诸诛逐竹烛煮拄瞩嘱主著柱助蛀贮铸筑�".split(""); +for(j = 0; j != D[214].length; ++j) if(D[214][j].charCodeAt(0) !== 0xFFFD) { e[D[214][j]] = 54784 + j; d[54784 + j] = D[214][j];} +D[215] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������住注祝驻抓爪拽专砖转撰赚篆桩庄装妆撞壮状椎锥追赘坠缀谆准捉拙卓桌琢茁酌啄着灼浊兹咨资姿滋淄孜紫仔籽滓子自渍字鬃棕踪宗综总纵邹走奏揍租足卒族祖诅阻组钻纂嘴醉最罪尊遵昨左佐柞做作坐座������".split(""); +for(j = 0; j != D[215].length; ++j) if(D[215][j].charCodeAt(0) !== 0xFFFD) { e[D[215][j]] = 55040 + j; d[55040 + j] = D[215][j];} +D[216] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������亍丌兀丐廿卅丕亘丞鬲孬噩丨禺丿匕乇夭爻卮氐囟胤馗毓睾鼗丶亟鼐乜乩亓芈孛啬嘏仄厍厝厣厥厮靥赝匚叵匦匮匾赜卦卣刂刈刎刭刳刿剀剌剞剡剜蒯剽劂劁劐劓冂罔亻仃仉仂仨仡仫仞伛仳伢佤仵伥伧伉伫佞佧攸佚佝�".split(""); +for(j = 0; j != D[216].length; ++j) if(D[216][j].charCodeAt(0) !== 0xFFFD) { e[D[216][j]] = 55296 + j; d[55296 + j] = D[216][j];} +D[217] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������佟佗伲伽佶佴侑侉侃侏佾佻侪佼侬侔俦俨俪俅俚俣俜俑俟俸倩偌俳倬倏倮倭俾倜倌倥倨偾偃偕偈偎偬偻傥傧傩傺僖儆僭僬僦僮儇儋仝氽佘佥俎龠汆籴兮巽黉馘冁夔勹匍訇匐凫夙兕亠兖亳衮袤亵脔裒禀嬴蠃羸冫冱冽冼�".split(""); +for(j = 0; j != D[217].length; ++j) if(D[217][j].charCodeAt(0) !== 0xFFFD) { e[D[217][j]] = 55552 + j; d[55552 + j] = D[217][j];} +D[218] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������凇冖冢冥讠讦讧讪讴讵讷诂诃诋诏诎诒诓诔诖诘诙诜诟诠诤诨诩诮诰诳诶诹诼诿谀谂谄谇谌谏谑谒谔谕谖谙谛谘谝谟谠谡谥谧谪谫谮谯谲谳谵谶卩卺阝阢阡阱阪阽阼陂陉陔陟陧陬陲陴隈隍隗隰邗邛邝邙邬邡邴邳邶邺�".split(""); +for(j = 0; j != D[218].length; ++j) if(D[218][j].charCodeAt(0) !== 0xFFFD) { e[D[218][j]] = 55808 + j; d[55808 + j] = D[218][j];} +D[219] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������邸邰郏郅邾郐郄郇郓郦郢郜郗郛郫郯郾鄄鄢鄞鄣鄱鄯鄹酃酆刍奂劢劬劭劾哿勐勖勰叟燮矍廴凵凼鬯厶弁畚巯坌垩垡塾墼壅壑圩圬圪圳圹圮圯坜圻坂坩垅坫垆坼坻坨坭坶坳垭垤垌垲埏垧垴垓垠埕埘埚埙埒垸埴埯埸埤埝�".split(""); +for(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];} +D[220] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������堋堍埽埭堀堞堙塄堠塥塬墁墉墚墀馨鼙懿艹艽艿芏芊芨芄芎芑芗芙芫芸芾芰苈苊苣芘芷芮苋苌苁芩芴芡芪芟苄苎芤苡茉苷苤茏茇苜苴苒苘茌苻苓茑茚茆茔茕苠苕茜荑荛荜茈莒茼茴茱莛荞茯荏荇荃荟荀茗荠茭茺茳荦荥�".split(""); +for(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];} +D[221] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������荨茛荩荬荪荭荮莰荸莳莴莠莪莓莜莅荼莶莩荽莸荻莘莞莨莺莼菁萁菥菘堇萘萋菝菽菖萜萸萑萆菔菟萏萃菸菹菪菅菀萦菰菡葜葑葚葙葳蒇蒈葺蒉葸萼葆葩葶蒌蒎萱葭蓁蓍蓐蓦蒽蓓蓊蒿蒺蓠蒡蒹蒴蒗蓥蓣蔌甍蔸蓰蔹蔟蔺�".split(""); +for(j = 0; j != D[221].length; ++j) if(D[221][j].charCodeAt(0) !== 0xFFFD) { e[D[221][j]] = 56576 + j; d[56576 + j] = D[221][j];} +D[222] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������蕖蔻蓿蓼蕙蕈蕨蕤蕞蕺瞢蕃蕲蕻薤薨薇薏蕹薮薜薅薹薷薰藓藁藜藿蘧蘅蘩蘖蘼廾弈夼奁耷奕奚奘匏尢尥尬尴扌扪抟抻拊拚拗拮挢拶挹捋捃掭揶捱捺掎掴捭掬掊捩掮掼揲揸揠揿揄揞揎摒揆掾摅摁搋搛搠搌搦搡摞撄摭撖�".split(""); +for(j = 0; j != D[222].length; ++j) if(D[222][j].charCodeAt(0) !== 0xFFFD) { e[D[222][j]] = 56832 + j; d[56832 + j] = D[222][j];} +D[223] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������摺撷撸撙撺擀擐擗擤擢攉攥攮弋忒甙弑卟叱叽叩叨叻吒吖吆呋呒呓呔呖呃吡呗呙吣吲咂咔呷呱呤咚咛咄呶呦咝哐咭哂咴哒咧咦哓哔呲咣哕咻咿哌哙哚哜咩咪咤哝哏哞唛哧唠哽唔哳唢唣唏唑唧唪啧喏喵啉啭啁啕唿啐唼�".split(""); +for(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];} +D[224] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������唷啖啵啶啷唳唰啜喋嗒喃喱喹喈喁喟啾嗖喑啻嗟喽喾喔喙嗪嗷嗉嘟嗑嗫嗬嗔嗦嗝嗄嗯嗥嗲嗳嗌嗍嗨嗵嗤辔嘞嘈嘌嘁嘤嘣嗾嘀嘧嘭噘嘹噗嘬噍噢噙噜噌噔嚆噤噱噫噻噼嚅嚓嚯囔囗囝囡囵囫囹囿圄圊圉圜帏帙帔帑帱帻帼�".split(""); +for(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];} +D[225] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������帷幄幔幛幞幡岌屺岍岐岖岈岘岙岑岚岜岵岢岽岬岫岱岣峁岷峄峒峤峋峥崂崃崧崦崮崤崞崆崛嵘崾崴崽嵬嵛嵯嵝嵫嵋嵊嵩嵴嶂嶙嶝豳嶷巅彳彷徂徇徉後徕徙徜徨徭徵徼衢彡犭犰犴犷犸狃狁狎狍狒狨狯狩狲狴狷猁狳猃狺�".split(""); +for(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];} +D[226] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������狻猗猓猡猊猞猝猕猢猹猥猬猸猱獐獍獗獠獬獯獾舛夥飧夤夂饣饧饨饩饪饫饬饴饷饽馀馄馇馊馍馐馑馓馔馕庀庑庋庖庥庠庹庵庾庳赓廒廑廛廨廪膺忄忉忖忏怃忮怄忡忤忾怅怆忪忭忸怙怵怦怛怏怍怩怫怊怿怡恸恹恻恺恂�".split(""); +for(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];} +D[227] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������恪恽悖悚悭悝悃悒悌悛惬悻悱惝惘惆惚悴愠愦愕愣惴愀愎愫慊慵憬憔憧憷懔懵忝隳闩闫闱闳闵闶闼闾阃阄阆阈阊阋阌阍阏阒阕阖阗阙阚丬爿戕氵汔汜汊沣沅沐沔沌汨汩汴汶沆沩泐泔沭泷泸泱泗沲泠泖泺泫泮沱泓泯泾�".split(""); +for(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];} +D[228] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������洹洧洌浃浈洇洄洙洎洫浍洮洵洚浏浒浔洳涑浯涞涠浞涓涔浜浠浼浣渚淇淅淞渎涿淠渑淦淝淙渖涫渌涮渫湮湎湫溲湟溆湓湔渲渥湄滟溱溘滠漭滢溥溧溽溻溷滗溴滏溏滂溟潢潆潇漤漕滹漯漶潋潴漪漉漩澉澍澌潸潲潼潺濑�".split(""); +for(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];} +D[229] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������濉澧澹澶濂濡濮濞濠濯瀚瀣瀛瀹瀵灏灞宀宄宕宓宥宸甯骞搴寤寮褰寰蹇謇辶迓迕迥迮迤迩迦迳迨逅逄逋逦逑逍逖逡逵逶逭逯遄遑遒遐遨遘遢遛暹遴遽邂邈邃邋彐彗彖彘尻咫屐屙孱屣屦羼弪弩弭艴弼鬻屮妁妃妍妩妪妣�".split(""); +for(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];} +D[230] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������妗姊妫妞妤姒妲妯姗妾娅娆姝娈姣姘姹娌娉娲娴娑娣娓婀婧婊婕娼婢婵胬媪媛婷婺媾嫫媲嫒嫔媸嫠嫣嫱嫖嫦嫘嫜嬉嬗嬖嬲嬷孀尕尜孚孥孳孑孓孢驵驷驸驺驿驽骀骁骅骈骊骐骒骓骖骘骛骜骝骟骠骢骣骥骧纟纡纣纥纨纩�".split(""); +for(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];} +D[231] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������纭纰纾绀绁绂绉绋绌绐绔绗绛绠绡绨绫绮绯绱绲缍绶绺绻绾缁缂缃缇缈缋缌缏缑缒缗缙缜缛缟缡缢缣缤缥缦缧缪缫缬缭缯缰缱缲缳缵幺畿巛甾邕玎玑玮玢玟珏珂珑玷玳珀珉珈珥珙顼琊珩珧珞玺珲琏琪瑛琦琥琨琰琮琬�".split(""); +for(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];} +D[232] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������琛琚瑁瑜瑗瑕瑙瑷瑭瑾璜璎璀璁璇璋璞璨璩璐璧瓒璺韪韫韬杌杓杞杈杩枥枇杪杳枘枧杵枨枞枭枋杷杼柰栉柘栊柩枰栌柙枵柚枳柝栀柃枸柢栎柁柽栲栳桠桡桎桢桄桤梃栝桕桦桁桧桀栾桊桉栩梵梏桴桷梓桫棂楮棼椟椠棹�".split(""); +for(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];} +D[233] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������椤棰椋椁楗棣椐楱椹楠楂楝榄楫榀榘楸椴槌榇榈槎榉楦楣楹榛榧榻榫榭槔榱槁槊槟榕槠榍槿樯槭樗樘橥槲橄樾檠橐橛樵檎橹樽樨橘橼檑檐檩檗檫猷獒殁殂殇殄殒殓殍殚殛殡殪轫轭轱轲轳轵轶轸轷轹轺轼轾辁辂辄辇辋�".split(""); +for(j = 0; j != D[233].length; ++j) if(D[233][j].charCodeAt(0) !== 0xFFFD) { e[D[233][j]] = 59648 + j; d[59648 + j] = D[233][j];} +D[234] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������辍辎辏辘辚軎戋戗戛戟戢戡戥戤戬臧瓯瓴瓿甏甑甓攴旮旯旰昊昙杲昃昕昀炅曷昝昴昱昶昵耆晟晔晁晏晖晡晗晷暄暌暧暝暾曛曜曦曩贲贳贶贻贽赀赅赆赈赉赇赍赕赙觇觊觋觌觎觏觐觑牮犟牝牦牯牾牿犄犋犍犏犒挈挲掰�".split(""); +for(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];} +D[235] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������搿擘耄毪毳毽毵毹氅氇氆氍氕氘氙氚氡氩氤氪氲攵敕敫牍牒牖爰虢刖肟肜肓肼朊肽肱肫肭肴肷胧胨胩胪胛胂胄胙胍胗朐胝胫胱胴胭脍脎胲胼朕脒豚脶脞脬脘脲腈腌腓腴腙腚腱腠腩腼腽腭腧塍媵膈膂膑滕膣膪臌朦臊膻�".split(""); +for(j = 0; j != D[235].length; ++j) if(D[235][j].charCodeAt(0) !== 0xFFFD) { e[D[235][j]] = 60160 + j; d[60160 + j] = D[235][j];} +D[236] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������臁膦欤欷欹歃歆歙飑飒飓飕飙飚殳彀毂觳斐齑斓於旆旄旃旌旎旒旖炀炜炖炝炻烀炷炫炱烨烊焐焓焖焯焱煳煜煨煅煲煊煸煺熘熳熵熨熠燠燔燧燹爝爨灬焘煦熹戾戽扃扈扉礻祀祆祉祛祜祓祚祢祗祠祯祧祺禅禊禚禧禳忑忐�".split(""); +for(j = 0; j != D[236].length; ++j) if(D[236][j].charCodeAt(0) !== 0xFFFD) { e[D[236][j]] = 60416 + j; d[60416 + j] = D[236][j];} +D[237] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������怼恝恚恧恁恙恣悫愆愍慝憩憝懋懑戆肀聿沓泶淼矶矸砀砉砗砘砑斫砭砜砝砹砺砻砟砼砥砬砣砩硎硭硖硗砦硐硇硌硪碛碓碚碇碜碡碣碲碹碥磔磙磉磬磲礅磴礓礤礞礴龛黹黻黼盱眄眍盹眇眈眚眢眙眭眦眵眸睐睑睇睃睚睨�".split(""); +for(j = 0; j != D[237].length; ++j) if(D[237][j].charCodeAt(0) !== 0xFFFD) { e[D[237][j]] = 60672 + j; d[60672 + j] = D[237][j];} +D[238] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������睢睥睿瞍睽瞀瞌瞑瞟瞠瞰瞵瞽町畀畎畋畈畛畲畹疃罘罡罟詈罨罴罱罹羁罾盍盥蠲钅钆钇钋钊钌钍钏钐钔钗钕钚钛钜钣钤钫钪钭钬钯钰钲钴钶钷钸钹钺钼钽钿铄铈铉铊铋铌铍铎铐铑铒铕铖铗铙铘铛铞铟铠铢铤铥铧铨铪�".split(""); +for(j = 0; j != D[238].length; ++j) if(D[238][j].charCodeAt(0) !== 0xFFFD) { e[D[238][j]] = 60928 + j; d[60928 + j] = D[238][j];} +D[239] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������铩铫铮铯铳铴铵铷铹铼铽铿锃锂锆锇锉锊锍锎锏锒锓锔锕锖锘锛锝锞锟锢锪锫锩锬锱锲锴锶锷锸锼锾锿镂锵镄镅镆镉镌镎镏镒镓镔镖镗镘镙镛镞镟镝镡镢镤镥镦镧镨镩镪镫镬镯镱镲镳锺矧矬雉秕秭秣秫稆嵇稃稂稞稔�".split(""); +for(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];} +D[240] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������稹稷穑黏馥穰皈皎皓皙皤瓞瓠甬鸠鸢鸨鸩鸪鸫鸬鸲鸱鸶鸸鸷鸹鸺鸾鹁鹂鹄鹆鹇鹈鹉鹋鹌鹎鹑鹕鹗鹚鹛鹜鹞鹣鹦鹧鹨鹩鹪鹫鹬鹱鹭鹳疒疔疖疠疝疬疣疳疴疸痄疱疰痃痂痖痍痣痨痦痤痫痧瘃痱痼痿瘐瘀瘅瘌瘗瘊瘥瘘瘕瘙�".split(""); +for(j = 0; j != D[240].length; ++j) if(D[240][j].charCodeAt(0) !== 0xFFFD) { e[D[240][j]] = 61440 + j; d[61440 + j] = D[240][j];} +D[241] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������瘛瘼瘢瘠癀瘭瘰瘿瘵癃瘾瘳癍癞癔癜癖癫癯翊竦穸穹窀窆窈窕窦窠窬窨窭窳衤衩衲衽衿袂袢裆袷袼裉裢裎裣裥裱褚裼裨裾裰褡褙褓褛褊褴褫褶襁襦襻疋胥皲皴矜耒耔耖耜耠耢耥耦耧耩耨耱耋耵聃聆聍聒聩聱覃顸颀颃�".split(""); +for(j = 0; j != D[241].length; ++j) if(D[241][j].charCodeAt(0) !== 0xFFFD) { e[D[241][j]] = 61696 + j; d[61696 + j] = D[241][j];} +D[242] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������颉颌颍颏颔颚颛颞颟颡颢颥颦虍虔虬虮虿虺虼虻蚨蚍蚋蚬蚝蚧蚣蚪蚓蚩蚶蛄蚵蛎蚰蚺蚱蚯蛉蛏蚴蛩蛱蛲蛭蛳蛐蜓蛞蛴蛟蛘蛑蜃蜇蛸蜈蜊蜍蜉蜣蜻蜞蜥蜮蜚蜾蝈蜴蜱蜩蜷蜿螂蜢蝽蝾蝻蝠蝰蝌蝮螋蝓蝣蝼蝤蝙蝥螓螯螨蟒�".split(""); +for(j = 0; j != D[242].length; ++j) if(D[242][j].charCodeAt(0) !== 0xFFFD) { e[D[242][j]] = 61952 + j; d[61952 + j] = D[242][j];} +D[243] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������蟆螈螅螭螗螃螫蟥螬螵螳蟋蟓螽蟑蟀蟊蟛蟪蟠蟮蠖蠓蟾蠊蠛蠡蠹蠼缶罂罄罅舐竺竽笈笃笄笕笊笫笏筇笸笪笙笮笱笠笥笤笳笾笞筘筚筅筵筌筝筠筮筻筢筲筱箐箦箧箸箬箝箨箅箪箜箢箫箴篑篁篌篝篚篥篦篪簌篾篼簏簖簋�".split(""); +for(j = 0; j != D[243].length; ++j) if(D[243][j].charCodeAt(0) !== 0xFFFD) { e[D[243][j]] = 62208 + j; d[62208 + j] = D[243][j];} +D[244] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������簟簪簦簸籁籀臾舁舂舄臬衄舡舢舣舭舯舨舫舸舻舳舴舾艄艉艋艏艚艟艨衾袅袈裘裟襞羝羟羧羯羰羲籼敉粑粝粜粞粢粲粼粽糁糇糌糍糈糅糗糨艮暨羿翎翕翥翡翦翩翮翳糸絷綦綮繇纛麸麴赳趄趔趑趱赧赭豇豉酊酐酎酏酤�".split(""); +for(j = 0; j != D[244].length; ++j) if(D[244][j].charCodeAt(0) !== 0xFFFD) { e[D[244][j]] = 62464 + j; d[62464 + j] = D[244][j];} +D[245] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������酢酡酰酩酯酽酾酲酴酹醌醅醐醍醑醢醣醪醭醮醯醵醴醺豕鹾趸跫踅蹙蹩趵趿趼趺跄跖跗跚跞跎跏跛跆跬跷跸跣跹跻跤踉跽踔踝踟踬踮踣踯踺蹀踹踵踽踱蹉蹁蹂蹑蹒蹊蹰蹶蹼蹯蹴躅躏躔躐躜躞豸貂貊貅貘貔斛觖觞觚觜�".split(""); +for(j = 0; j != D[245].length; ++j) if(D[245][j].charCodeAt(0) !== 0xFFFD) { e[D[245][j]] = 62720 + j; d[62720 + j] = D[245][j];} +D[246] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������觥觫觯訾謦靓雩雳雯霆霁霈霏霎霪霭霰霾龀龃龅龆龇龈龉龊龌黾鼋鼍隹隼隽雎雒瞿雠銎銮鋈錾鍪鏊鎏鐾鑫鱿鲂鲅鲆鲇鲈稣鲋鲎鲐鲑鲒鲔鲕鲚鲛鲞鲟鲠鲡鲢鲣鲥鲦鲧鲨鲩鲫鲭鲮鲰鲱鲲鲳鲴鲵鲶鲷鲺鲻鲼鲽鳄鳅鳆鳇鳊鳋�".split(""); +for(j = 0; j != D[246].length; ++j) if(D[246][j].charCodeAt(0) !== 0xFFFD) { e[D[246][j]] = 62976 + j; d[62976 + j] = D[246][j];} +D[247] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������鳌鳍鳎鳏鳐鳓鳔鳕鳗鳘鳙鳜鳝鳟鳢靼鞅鞑鞒鞔鞯鞫鞣鞲鞴骱骰骷鹘骶骺骼髁髀髅髂髋髌髑魅魃魇魉魈魍魑飨餍餮饕饔髟髡髦髯髫髻髭髹鬈鬏鬓鬟鬣麽麾縻麂麇麈麋麒鏖麝麟黛黜黝黠黟黢黩黧黥黪黯鼢鼬鼯鼹鼷鼽鼾齄�".split(""); +for(j = 0; j != D[247].length; ++j) if(D[247][j].charCodeAt(0) !== 0xFFFD) { e[D[247][j]] = 63232 + j; d[63232 + j] = D[247][j];} +return {"enc": e, "dec": d }; })(); +cptable[10010] = (function(){ var d = "ˇˇ\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®©™´¨≠ĂŞ∞±≤≥¥µ∂∑∏π∫ªºΩăş¿¡¬√ƒ≈∆«»… ÀÃÕŒœ–—“”‘’÷◊ÿŸ⁄¤‹›Ţţ‡·‚„‰ÂÊÁËÈÍÎÏÌÓÔÒÚÛÙıˆ˜¯˘˙˚¸˝˛ˇ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +cptable[10017] = (function(){ var d = "¤¤\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ†°Ґ£§•¶І®©™Ђђ≠Ѓѓ∞±≤≥іµґЈЄєЇїЉљЊњјЅ¬√ƒ≈∆«»… ЋћЌќѕ–—“”‘’÷„ЎўЏџ№Ёёяабвгдежзийклмнопрстуфхцчшщъыьэю¤", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +cptable[10021] = (function(){ var d = "��\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~�«»…����������“”��•�����������‘’� กขฃคฅฆงจฉชซฌญฎฏฐฑฒณดตถทธนบปผฝพฟภมยรฤลฦวศษสหฬอฮฯะัาำิีึืฺุู​–—฿เแโใไๅๆ็่้๊๋์ํ™๏๐๑๒๓๔๕๖๗๘๙®©����", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +cptable[10082] = (function(){ var d = "ˇˇ\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÄÅÇÉÑÖÜáàâäãåçéèêëíìîïñóòôöõúùûü†°¢£§•¶ß®Š™´¨≠ŽØ∞±≤≥∆µ∂∑∏š∫ªºΩžø¿¡¬√ƒ≈Ć«Č… ÀÃÕŒœĐ—“”‘’÷◊©⁄¤‹›Æ»–·‚„‰ÂćÁčÈÍÎÏÌÓÔđÒÚÛÙıˆ˜¯πË˚¸Êæˇ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +cptable[20000] = (function(){ var d = [], e = {}, D = [], j; +D[0] = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ����������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];} +D[161] = "���������������������������������乂乜凵匚厂万丌乇亍囗屮彳丏冇与丮亓仂仉仈冘勼卬厹圠夃夬尐巿旡殳毌气爿丱丼仨仜仩仡仝仚刌刉匜卌圢圣夗夯宁宄尒尻屴屳帄庀庂忉戉扐氕氶汃氿氻犮犰玊禸肊阞伎优伬仵伔仱伀价伈伝伂伅伢伓伄仴伒冱刓刐劦���������������������������������� ,、。․•;:?!︰…‥﹐﹑‧﹒﹔﹕﹖﹗︱–︲—︳_︴﹏()︵︶{}︷︸〔〕︹︺【】︻︼《》︽︾〈〉︿﹀「」﹁﹂『』﹃﹄﹙﹚﹛﹜﹝﹞‘’“”〝〞′‵#&*※§〃○●△▲◎☆★◇◆□■▽▼�".split(""); +for(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];} +D[162] = "���������������������������������匢匟卍厊吇囡囟圮圪圴夼妀奼妅奻奾奷奿孖尕尥屼屺屻屾巟幵庄异弚彴忕忔忏扜扞扤扡扦扢扙扠扚扥攷旯旮朾朹朸朻机朿朼朳氘汆汒汜汏汊汔汋汌灱牞犴犵玎甪癿穵网艸艼芀艽艿虍襾邙邗邘邛邔阢阤阠阣佖伻佢佉体����������������������������������㊣℅‾ ̄��﹉﹊﹍﹎﹋﹌﹟﹠﹡+-×÷±√<>=≦≧≠∞≒≡﹢﹣﹤﹥﹦∼∩∪⊥∠∟⊿㏒㏑∫∮∵∴♀♂⊕⊙↑↓→←↖↗↙↘∥∣/\�﹨$¥〒¢£%@℃℉﹩﹪﹫㏕㎜㎝㎞㏎㎡㎎㎏㏄゜兙兛兞兝兡兣�".split(""); +for(j = 0; j != D[162].length; ++j) if(D[162][j].charCodeAt(0) !== 0xFFFD) { e[D[162][j]] = 41472 + j; d[41472 + j] = D[162][j];} +D[163] = "���������������������������������佤伾佧佒佟佁佘伭伳伿佡冏冹刜刞刡劭劮匉卣卲厎厏吰吷吪呔呅吙吜吥吘吽呏呁吨吤呇囮囧囥坁坅坌坉坋坒夆奀妦妘妠妗妎妢妐妏妧妡宎宒尨尪岍岏岈岋岉岒岊岆岓岕巠帊帎庋庉庌庈庍弅弝彸彶忒忑忐忭忨忮忳忡忤����������������������������������嗧瓩糎▁▂▃▄▅▆▇█▏▎▍▌▋▊▉┼┴┬┤├▔─│▕┌┐└┘╭╮╰╯═╞╪╡◢◣◥◤╱╲╳¨˄ヽヾゝゞ�〄々〆〇ー[]✽ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただち�".split(""); +for(j = 0; j != D[163].length; ++j) if(D[163][j].charCodeAt(0) !== 0xFFFD) { e[D[163][j]] = 41728 + j; d[41728 + j] = D[163][j];} +D[164] = "���������������������������������忣忺忯忷忻怀忴戺抃抌抎抏抔抇扱扻扺扰抁抈扷扽扲扴旰旴旳旲旵杅杇杙杕杌杈杝杍杚杋毐氙氚汸汧汫沄沋沏汱汯汩沚汭沇沕沜汦汳汥汻沎灴灺牣犿犽狃狆狁犺狅玕玗玓玔玒町甹疔疕皁礽耴肕肙肐肒肜芐芏芅芎芑芓����������������������������������0123456789ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩ〡〢〣〤〥〦〧〨〩�卄�ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzΑΒΓΔΕΖΗΘΙΚ�".split(""); +for(j = 0; j != D[164].length; ++j) if(D[164][j].charCodeAt(0) !== 0xFFFD) { e[D[164][j]] = 41984 + j; d[41984 + j] = D[164][j];} +D[165] = "���������������������������������芊芃芄豸迉辿邟邡邥邞邧邠阰阨阯阭丳侘佼侅佽侀侇佶佴侉侄佷佌侗佪侚佹侁佸侐侜侔侞侒侂侕佫佮冞冼冾刵刲刳剆刱劼匊匋匼厒厔咇呿咁咑咂咈呫呺呾呥呬呴呦咍呯呡呠咘呣呧呤囷囹坯坲坭坫坱坰坶垀坵坻坳坴坢����������������������������������ΛΜΝΞΟΠΡΣΤΥΦΧΨΩαβγδεζηθικλμνξοπρστυφχψωㄅㄆㄇㄈㄉㄊㄋㄌㄍㄎㄏㄐㄑㄒㄓㄔㄕㄖㄗㄘㄙㄚㄛㄜㄝㄞㄟㄠㄡㄢㄣㄤㄥㄦㄧㄨㄩ˙˟ˊˇˋぢっつづてでとどなにぬねのは�".split(""); +for(j = 0; j != D[165].length; ++j) if(D[165][j].charCodeAt(0) !== 0xFFFD) { e[D[165][j]] = 42240 + j; d[42240 + j] = D[165][j];} +D[166] = "���������������������������������坨坽夌奅妵妺姏姎妲姌姁妶妼姃姖妱妽姀姈妴姇孢孥宓宕屄屇岮岤岠岵岯岨岬岟岣岭岢岪岧岝岥岶岰岦帗帔帙弨弢弣弤彔徂彾彽忞忥怭怦怙怲怋怴怊怗怳怚怞怬怢怍怐怮怓怑怌怉怜戔戽抭抴拑抾抪抶拊抮抳抯抻抩抰����������������������������������①②③④⑤⑥⑦⑧⑨⑩⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽ⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをんァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼ�".split(""); +for(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];} +D[167] = "���������������������������������抸攽斨斻昉旼昄昒昈旻昃昋昍昅旽昑昐曶朊枅杬枎枒杶杻枘枆构杴枍枌杺枟枑枙枃杽极杸杹枔欥殀歾毞氝沓泬泫泮泙沶泔沭泧沷泐泂沺泃泆泭泲泒泝沴沊沝沀泞泀洰泍泇沰泹泏泩泑炔炘炅炓炆炄炑炖炂炚炃牪狖狋狘������������������������������������丶丿�亅�亠����冂冖冫����勹��匸��卩�厶�����夂����宀������巛����幺广廴���彐彡������攴����无�������������������������".split(""); +for(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];} +D[168] = "���������������������������������狉狜狒狔狚狌狑玤玡玭玦玢玠玬玝瓝瓨甿畀甾疌疘皯盳盱盰盵矸矼矹矻矺矷祂礿秅穸穻竻籵糽耵肏肮肣肸肵肭舠芠苀芫芚芘芛芵芧芮芼芞芺芴芨芡芩苂芤苃芶芢虰虯虭虮豖迒迋迓迍迖迕迗邲邴邯邳邰阹阽阼阺陃俍俅������������������������������������������疒癶��������������������������������������������������������辵��������隶�������������������".split(""); +for(j = 0; j != D[168].length; ++j) if(D[168][j].charCodeAt(0) !== 0xFFFD) { e[D[168][j]] = 43008 + j; d[43008 + j] = D[168][j];} +D[169] = "���������������������������������俓侲俉俋俁俔俜俙侻侳俛俇俖侺俀侹俬剄剉勀勂匽卼厗厖厙厘咺咡咭咥哏哃茍咷咮哖咶哅哆咠呰咼咢咾呲哞咰垵垞垟垤垌垗垝垛垔垘垏垙垥垚垕壴复奓姡姞姮娀姱姝姺姽姼姶姤姲姷姛姩姳姵姠姾姴姭宨屌峐峘峌峗峋���������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[169].length; ++j) if(D[169][j].charCodeAt(0) !== 0xFFFD) { e[D[169][j]] = 43264 + j; d[43264 + j] = D[169][j];} +D[170] = "���������������������������������峛峞峚峉峇峊峖峓峔峏峈峆峎峟峸巹帡帢帣帠帤庰庤庢庛庣庥弇弮彖徆怷怹恔恲恞恅恓恇恉恛恌恀恂恟怤恄恘恦恮扂扃拏挍挋拵挎挃拫拹挏挌拸拶挀挓挔拺挕拻拰敁敃斪斿昶昡昲昵昜昦昢昳昫昺昝昴昹昮朏朐柁柲柈�����������������������������������".split(""); +for(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];} +D[171] = "���������������������������������枺柜枻柸柘柀枷柅柫柤柟枵柍枳柷柶柮柣柂枹柎柧柰枲柼柆柭柌枮柦柛柺柉柊柃柪柋欨殂殄殶毖毘毠氠氡洨洴洭洟洼洿洒洊泚洳洄洙洺洚洑洀洝浂洁洘洷洃洏浀洇洠洬洈洢洉洐炷炟炾炱炰炡炴炵炩牁牉牊牬牰牳牮狊�����������������������������������".split(""); +for(j = 0; j != D[171].length; ++j) if(D[171][j].charCodeAt(0) !== 0xFFFD) { e[D[171][j]] = 43776 + j; d[43776 + j] = D[171][j];} +D[172] = "���������������������������������狤狨狫狟狪狦狣玅珌珂珈珅玹玶玵玴珫玿珇玾珃珆玸珋瓬瓮甮畇畈疧疪癹盄眈眃眄眅眊盷盻盺矧矨砆砑砒砅砐砏砎砉砃砓祊祌祋祅祄秕种秏秖秎窀穾竑笀笁籺籸籹籿粀粁紃紈紁罘羑羍羾耇耎耏耔耷胘胇胠胑胈胂胐胅�����������������������������������".split(""); +for(j = 0; j != D[172].length; ++j) if(D[172][j].charCodeAt(0) !== 0xFFFD) { e[D[172][j]] = 44032 + j; d[44032 + j] = D[172][j];} +D[173] = "���������������������������������胣胙胜胊胕胉胏胗胦胍臿舡芔苙苾苹茇苨茀苕茺苫苖苴苬苡苲苵茌苻苶苰苪苤苠苺苳苭虷虴虼虳衁衎衧衪衩觓訄訇赲迣迡迮迠郱邽邿郕郅邾郇郋郈釔釓陔陏陑陓陊陎倞倅倇倓倢倰倛俵俴倳倷倬俶俷倗倜倠倧倵倯倱倎�����������������������������������".split(""); +for(j = 0; j != D[173].length; ++j) if(D[173][j].charCodeAt(0) !== 0xFFFD) { e[D[173][j]] = 44288 + j; d[44288 + j] = D[173][j];} +D[174] = "���������������������������������党冔冓凊凄凅凈凎剡剚剒剞剟剕剢勍匎厞唦哢唗唒哧哳哤唚哿唄唈哫唑唅哱唊哻哷哸哠唎唃唋圁圂埌堲埕埒垺埆垽垼垸垶垿埇埐垹埁夎奊娙娖娭娮娕娏娗娊娞娳孬宧宭宬尃屖屔峬峿峮峱峷崀峹帩帨庨庮庪庬弳弰彧恝�����������������������������������".split(""); +for(j = 0; j != D[174].length; ++j) if(D[174][j].charCodeAt(0) !== 0xFFFD) { e[D[174][j]] = 44544 + j; d[44544 + j] = D[174][j];} +D[175] = "���������������������������������恚恧恁悢悈悀悒悁悝悃悕悛悗悇悜悎戙扆拲挐捖挬捄捅挶捃揤挹捋捊挼挩捁挴捘捔捙挭捇挳捚捑挸捗捀捈敊敆旆旃旄旂晊晟晇晑朒朓栟栚桉栲栳栻桋桏栖栱栜栵栫栭栯桎桄栴栝栒栔栦栨栮桍栺栥栠欬欯欭欱欴歭肂殈�����������������������������������".split(""); +for(j = 0; j != D[175].length; ++j) if(D[175][j].charCodeAt(0) !== 0xFFFD) { e[D[175][j]] = 44800 + j; d[44800 + j] = D[175][j];} +D[176] = "���������������������������������毦毤毨毣毢毧氥浺浣浤浶洍浡涒浘浢浭浯涑涍淯浿涆浞浧浠涗浰浼浟涂涘洯浨涋浾涀涄洖涃浻浽浵涐烜烓烑烝烋缹烢烗烒烞烠烔烍烅烆烇烚烎烡牂牸牷牶猀狺狴狾狶狳狻猁珓珙珥珖玼珧珣珩珜珒珛珔珝珚珗珘珨瓞瓟�����������������������������������".split(""); +for(j = 0; j != D[176].length; ++j) if(D[176][j].charCodeAt(0) !== 0xFFFD) { e[D[176][j]] = 45056 + j; d[45056 + j] = D[176][j];} +D[177] = "���������������������������������瓴瓵甡畛畟疰痁疻痄痀疿疶疺皊盉眝眛眐眓眒眣眑眕眙眚眢眧砣砬砢砵砯砨砮砫砡砩砳砪砱祔祛祏祜祓祒祑秫秬秠秮秭秪秜秞秝窆窉窅窋窌窊窇竘笐笄笓笅笏笈笊笎笉笒粄粑粊粌粈粍粅紞紝紑紎紘紖紓紟紒紏紌罜罡�����������������������������������".split(""); +for(j = 0; j != D[177].length; ++j) if(D[177][j].charCodeAt(0) !== 0xFFFD) { e[D[177][j]] = 45312 + j; d[45312 + j] = D[177][j];} +D[178] = "���������������������������������罞罠罝罛羖羒翃翂翀耖耾耹胺胲胹胵脁胻脀舁舯舥茳茭荄茙荑茥荖茿荁茦茜茢荂荎茛茪茈茼荍茖茤茠茷茯茩荇荅荌荓茞茬荋茧荈虓虒蚢蚨蚖蚍蚑蚞蚇蚗蚆蚋蚚蚅蚥蚙蚡蚧蚕蚘蚎蚝蚐蚔衃衄衭衵衶衲袀衱衿衯袃衾衴衼�����������������������������������".split(""); +for(j = 0; j != D[178].length; ++j) if(D[178][j].charCodeAt(0) !== 0xFFFD) { e[D[178][j]] = 45568 + j; d[45568 + j] = D[178][j];} +D[179] = "���������������������������������訒豇豗豻貤貣赶赸趵趷趶軑軓迾迵适迿迻逄迼迶郖郠郙郚郣郟郥郘郛郗郜郤酐酎酏釕釢釚陜陟隼飣髟鬯乿偰偪偡偞偠偓偋偝偲偈偍偁偛偊偢倕偅偟偩偫偣偤偆偀偮偳偗偑凐剫剭剬剮勖勓匭厜啵啶唼啍啐唴唪啑啢唶唵�����������������������������������".split(""); +for(j = 0; j != D[179].length; ++j) if(D[179][j].charCodeAt(0) !== 0xFFFD) { e[D[179][j]] = 45824 + j; d[45824 + j] = D[179][j];} +D[180] = "���������������������������������唰啒啅唌唲啥啎唹啈唭唻啀啋圊圇埻堔埢埶埜埴堀埭埽堈埸堋埳埏堇埮埣埲埥埬埡堎埼堐埧堁堌埱埩埰堍堄奜婠婘婕婧婞娸娵婭婐婟婥婬婓婤婗婃婝婒婄婛婈媎娾婍娹婌婰婩婇婑婖婂婜孲孮寁寀屙崞崋崝崚崠崌崨崍�����������������������������������".split(""); +for(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];} +D[181] = "���������������������������������崦崥崏崰崒崣崟崮帾帴庱庴庹庲庳弶弸徛徖徟悊悐悆悾悰悺惓惔惏惤惙惝惈悱惛悷惊悿惃惍惀挲捥掊掂捽掽掞掭掝掗掫掎捯掇掐据掯捵掜捭掮捼掤挻掟捸掅掁掑掍捰敓旍晥晡晛晙晜晢朘桹梇梐梜桭桮梮梫楖桯梣梬梩�����������������������������������".split(""); +for(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];} +D[182] = "���������������������������������桵桴梲梏桷梒桼桫桲梪梀桱桾梛梖梋梠梉梤桸桻梑梌梊桽欶欳欷欸殑殏殍殎殌氪淀涫涴涳湴涬淩淢涷淶淔渀淈淠淟淖涾淥淜淝淛淴淊涽淭淰涺淕淂淏淉淐淲淓淽淗淍淣涻烺焍烷焗烴焌烰焄烳焐烼烿焆焓焀烸烶焋焂焎�����������������������������������".split(""); +for(j = 0; j != D[182].length; ++j) if(D[182][j].charCodeAt(0) !== 0xFFFD) { e[D[182][j]] = 46592 + j; d[46592 + j] = D[182][j];} +D[183] = "���������������������������������牾牻牼牿猝猗猇猑猘猊猈狿猏猞玈珶珸珵琄琁珽琇琀珺珼珿琌琋珴琈畤畣痎痒痏痋痌痑痐皏皉盓眹眯眭眱眲眴眳眽眥眻眵硈硒硉硍硊硌砦硅硐祤祧祩祪祣祫祡离秺秸秶秷窏窔窐笵笻笴笥笰笢笤笳笘笪笝笱笫笭笯笲笸�����������������������������������".split(""); +for(j = 0; j != D[183].length; ++j) if(D[183][j].charCodeAt(0) !== 0xFFFD) { e[D[183][j]] = 46848 + j; d[46848 + j] = D[183][j];} +D[184] = "���������������������������������笚笣粔粘粖粣紵紽紸紶紺絅紬紩絁絇紾紿絊紻紨罣羕羜羝羛翊翋翍翐翑翇翏翉耟耞耛聇聃聈脘脥脙脛脭脟脬脞脡脕脧脝脢舑舸舳舺舴舲艴莐莣莨莍荺荳莤荴莏莁莕莙荵莔莩荽莃莌莝莛莪莋荾莥莯莈莗莰荿莦莇莮荶虙�����������������������������������".split(""); +for(j = 0; j != D[184].length; ++j) if(D[184][j].charCodeAt(0) !== 0xFFFD) { e[D[184][j]] = 47104 + j; d[47104 + j] = D[184][j];} +D[185] = "���������������������������������虖蚿蚷蛂蛁蛅蚺蚰蛈蚹蚳蚸蛌蚴蚻蚼蛃蚽蚾衒袉袕袨袢袪袚袑袡袟袘袧袙袛袗袤袬袌袓袎覂觖觙觕訰訧訬訞谹谻豜豝豽貥赽赻赹趼跂趹趿跁軘軞軝軜軗軠軡逤逋逑逜逌逡郯郪郰郴郲郳郔郫郬郩酖酘酚酓酕釬釴釱釳釸�����������������������������������".split(""); +for(j = 0; j != D[185].length; ++j) if(D[185][j].charCodeAt(0) !== 0xFFFD) { e[D[185][j]] = 47360 + j; d[47360 + j] = D[185][j];} +D[186] = "���������������������������������釤釹釪釫釷釨釮镺閆閈陼陭陫陱陯隿靪頄飥馗傛傕傔傞傋傣傃傌傎傝偨傜傒傂傇兟凔匒匑厤厧喑喨喥喭啷噅喢喓喈喏喵喁喣喒喤啽喌喦啿喕喡喎圌堩堷堙堞堧堣堨埵塈堥堜堛堳堿堶堮堹堸堭堬堻奡媯媔媟婺媢媞婸媦�����������������������������������".split(""); +for(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];} +D[187] = "���������������������������������婼媥媬媕媮娷媄媊媗媃媋媩婻婽媌媜媏媓媝寪寍寋寔寑寊寎尌尰崷嵃嵫嵁嵋崿崵嵑嵎嵕崳崺嵒崽崱嵙嵂崹嵉崸崼崲崶嵀嵅幄幁彘徦徥徫惉悹惌惢惎惄愔惲愊愖愅惵愓惸惼惾惁愃愘愝愐惿愄愋扊掔掱掰揎揥揨揯揃撝揳�����������������������������������".split(""); +for(j = 0; j != D[187].length; ++j) if(D[187][j].charCodeAt(0) !== 0xFFFD) { e[D[187][j]] = 47872 + j; d[47872 + j] = D[187][j];} +D[188] = "���������������������������������揊揠揶揕揲揵摡揟掾揝揜揄揘揓揂揇揌揋揈揰揗揙攲敧敪敤敜敨敥斌斝斞斮旐旒晼晬晻暀晱晹晪晲朁椌棓椄棜椪棬棪棱椏棖棷棫棤棶椓椐棳棡椇棌椈楰梴椑棯棆椔棸棐棽棼棨椋椊椗棎棈棝棞棦棴棑椆棔棩椕椥棇欹欻�����������������������������������".split(""); +for(j = 0; j != D[188].length; ++j) if(D[188][j].charCodeAt(0) !== 0xFFFD) { e[D[188][j]] = 48128 + j; d[48128 + j] = D[188][j];} +D[189] = "���������������������������������欿欼殔殗殙殕殽毰毲毳氰淼湆湇渟湉溈渼渽湅湢渫渿湁湝湳渜渳湋湀湑渻渃渮湞湨湜湡渱渨湠湱湫渹渢渰湓湥渧湸湤湷湕湹湒湦渵渶湚焠焞焯烻焮焱焣焥焢焲焟焨焺焛牋牚犈犉犆犅犋猒猋猰猢猱猳猧猲猭猦猣猵猌琮�����������������������������������".split(""); +for(j = 0; j != D[189].length; ++j) if(D[189][j].charCodeAt(0) !== 0xFFFD) { e[D[189][j]] = 48384 + j; d[48384 + j] = D[189][j];} +D[190] = "���������������������������������琬琰琫琖琚琡琭琱琤琣琝琩琠琲瓻甯畯畬痧痚痡痦痝痟痤痗皕皒盚睆睇睄睍睅睊睎睋睌矞矬硠硤硥硜硭硱硪确硰硩硨硞硢祴祳祲祰稂稊稃稌稄窙竦竤筊筇筄筈筌筎筀筘筅粢粞粨粡絘絯絣絓絖絧絪絏絭絜絫絒絔絩絑絟�����������������������������������".split(""); +for(j = 0; j != D[190].length; ++j) if(D[190][j].charCodeAt(0) !== 0xFFFD) { e[D[190][j]] = 48640 + j; d[48640 + j] = D[190][j];} +D[191] = "���������������������������������絎缾缿罥罦羢羠羡翗聑聏聐胾胔腃腊腒腏腇脽腍脺臦臮臷臸臹舄舼舽舿艵茻菏菹萣菀菨萒菧菤菼菶萐菆菈菫菣莿萁菝菥菘菿菡菋菎菖菵菉萉萏菞萑萆菂菳菕菺菇菑菪萓莚菃菬菮菄菻菗菢萛菛菾蛘蛢蛦蛓蛣蛚蛪蛝蛫蛜�����������������������������������".split(""); +for(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];} +D[192] = "���������������������������������蛬蛩蛗蛨蛑衈衖衕袺裗袹袸裀袾袶袼袷袽袲褁裉覕覘覗觝觚觛詎詍訹詙詀詗詘詄詅詒詈詑詊詌詏豟貁貀貺貾貰貹貵趄趀趉跘跓跍跇跖跜跏跕跙跈跗跅軯軷軺軹軦軮軥軵軧軨軶軫軱軬軴軩逭逴逯鄆鄬鄄郿郼鄈郹郻鄁鄀�����������������������������������".split(""); +for(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];} +D[193] = "���������������������������������鄇鄅鄃酡酤酟酢酠鈁鈊鈥鈃鈚鈦鈏鈌鈀鈒釿釽鈆鈄鈧鈂鈜鈤鈙鈗鈅鈖镻閍閌閐隇陾隈隉隃隀雂雈雃雱雰靬靰靮頇颩飫鳦黹亃亄亶傽傿僆傮僄僊傴僈僂傰僁傺傱僋僉傶傸凗剺剸剻剼嗃嗛嗌嗐嗋嗊嗝嗀嗔嗄嗩喿嗒喍嗏嗕�����������������������������������".split(""); +for(j = 0; j != D[193].length; ++j) if(D[193][j].charCodeAt(0) !== 0xFFFD) { e[D[193][j]] = 49408 + j; d[49408 + j] = D[193][j];} +D[194] = "���������������������������������嗢嗖嗈嗲嗍嗙嗂圔塓塨塤塏塍塉塯塕塎塝塙塥塛堽塣塱壼嫇嫄嫋媺媸媱媵媰媿嫈媻嫆媷嫀嫊媴媶嫍媹媐寖寘寙尟尳嵱嵣嵊嵥嵲嵬嵞嵨嵧嵢巰幏幎幊幍幋廅廌廆廋廇彀徯徭惷慉慊愫慅愶愲愮慆愯慏愩慀戠酨戣戥戤揅揱�������������������������������������������������������������������¬¦��㈱№℡�".split(""); +for(j = 0; j != D[194].length; ++j) if(D[194][j].charCodeAt(0) !== 0xFFFD) { e[D[194][j]] = 49664 + j; d[49664 + j] = D[194][j];} +D[195] = "���������������������������������揫搐搒搉搠搤搳摃搟搕搘搹搷搢搣搌搦搰搨摁搵搯搊搚摀搥搧搋揧搛搮搡搎敯斒旓暆暌暕暐暋暊暙暔晸朠楦楟椸楎楢楱椿楅楪椹楂楗楙楺楈楉椵楬椳椽楥棰楸椴楩楀楯楄楶楘楁楴楌椻楋椷楜楏楑椲楒椯楻椼歆歅歃歂�����������������������������������".split(""); +for(j = 0; j != D[195].length; ++j) if(D[195][j].charCodeAt(0) !== 0xFFFD) { e[D[195][j]] = 49920 + j; d[49920 + j] = D[195][j];} +D[196] = "���������������������������������歈歁殛毻毼毹毷毸溛滖滈溏滀溟溓溔溠溱溹滆滒溽滁溞滉溷溰滍溦滏溲溾滃滜滘溙溒溎溍溤溡溿溳滐滊溗溮溣煇煔煒煣煠煁煝煢煲煸煪煡煂煘煃煋煰煟煐煓煄煍煚牏犍犌犑犐犎猼獂猻猺獀獊獉瑄瑊瑋瑒瑑瑗瑀瑏瑐瑎����������������������������������一乙丁七乃九了二人儿入八几刀刁力匕十卜又三下丈上丫丸凡久么也乞于亡兀刃勺千叉口土士夕大女子孑孓寸小尢尸山川工己已巳巾干廾弋弓才丑丐不中丰丹之尹予云井互五亢仁什仃仆仇仍今介仄元允內六兮公冗凶�".split(""); +for(j = 0; j != D[196].length; ++j) if(D[196][j].charCodeAt(0) !== 0xFFFD) { e[D[196][j]] = 50176 + j; d[50176 + j] = D[196][j];} +D[197] = "���������������������������������瑂瑆瑍瑔瓡瓿瓾瓽甝畹畷榃痯瘏瘃痷痾痼痹痸瘐痻痶痭痵痽皙皵盝睕睟睠睒睖睚睩睧睔睙睭矠碇碚碔碏碄碕碅碆碡碃硹碙碀碖硻祼禂祽祹稑稘稙稒稗稕稢稓稛稐窣窢窞竫筦筤筭筴筩筲筥筳筱筰筡筸筶筣粲粴粯綈綆綀����������������������������������分切刈勻勾勿化匹午升卅卞厄友及反壬天夫太夭孔少尤尺屯巴幻廿弔引心戈戶手扎支文斗斤方日曰月木欠止歹毋比毛氏水火爪父爻片牙牛犬王丙世丕且丘主乍乏乎以付仔仕他仗代令仙仞充兄冉冊冬凹出凸刊加功包匆�".split(""); +for(j = 0; j != D[197].length; ++j) if(D[197][j].charCodeAt(0) !== 0xFFFD) { e[D[197][j]] = 50432 + j; d[50432 + j] = D[197][j];} +D[198] = "���������������������������������綍絿綅絺綎絻綃絼綌綔綄絽綒罭罫罧罨罬羦羥羧翛翜耡腤腠腷腜腩腛腢腲朡腞腶腧腯腄腡舝艉艄艀艂艅蓱萿葖葶葹蒏蒍葥葑葀蒆葧萰葍葽葚葙葴葳葝蔇葞萷萺萴葺葃葸萲葅萩菙葋萯葂萭葟葰萹葎葌葒葯蓅蒎萻葇萶萳����������������������������������北匝仟半卉卡占卯卮去可古右召叮叩叨叼司叵叫另只史叱台句叭叻四囚外央失奴奶孕它尼巨巧左市布平幼弁弘弗必戊打扔扒扑斥旦朮本未末札正母民氐永汁汀氾犯玄玉瓜瓦甘生用甩田由甲申疋白皮皿目矛矢石示禾穴�".split(""); +for(j = 0; j != D[198].length; ++j) if(D[198][j].charCodeAt(0) !== 0xFFFD) { e[D[198][j]] = 50688 + j; d[50688 + j] = D[198][j];} +D[199] = "���������������������������������葨葾葄萫葠葔葮葐蜋蜄蛷蜌蛺蛖蛵蝍蛸蜎蜉蜁蛶蜍蜅裖裋裍裎裞裛裚裌裐覅覛觟觥觤觡觠觢觜触詶誆詿詡訿詷誂誄詵誃誁詴詺谼豋豊豥豤豦貆貄貅賌赨赩趑趌趎趏趍趓趔趐趒跰跠跬跱跮跐跩跣跢跧跲跫跴輆軿輁輀輅����������������������������������立丞丟乒乓乩亙交亦亥仿伉伙伊伕伍伐休伏仲件任仰仳份企伋光兇兆先全共再冰列刑划刎刖劣匈匡匠印危吉吏同吊吐吁吋各向名合吃后吆吒因回囝圳地在圭圬圯圩夙多夷夸妄奸妃好她如妁字存宇守宅安寺尖屹州帆并�".split(""); +for(j = 0; j != D[199].length; ++j) if(D[199][j].charCodeAt(0) !== 0xFFFD) { e[D[199][j]] = 50944 + j; d[50944 + j] = D[199][j];} +D[200] = "���������������������������������輇輈輂輋遒逿遄遉逽鄐鄍鄏鄑鄖鄔鄋鄎酮酯鉈鉒鈰鈺鉦鈳鉥鉞銃鈮鉊鉆鉭鉬鉏鉠鉧鉯鈶鉡鉰鈱鉔鉣鉐鉲鉎鉓鉌鉖鈲閟閜閞閛隒隓隑隗雎雺雽雸雵靳靷靸靲頏頍頎颬飶飹馯馲馰馵骭骫魛鳪鳭鳧麀黽僦僔僗僨僳僛僪僝僤����������������������������������年式弛忙忖戎戌戍成扣扛托收早旨旬旭曲曳有朽朴朱朵次此死氖汝汗汙江池汐汕污汛汍汎灰牟牝百竹米糸缶羊羽老考而耒耳聿肉肋肌臣自至臼舌舛舟艮色艾虫血行衣西阡串亨位住佇佗佞伴佛何估佐佑伽伺伸佃佔似但�".split(""); +for(j = 0; j != D[200].length; ++j) if(D[200][j].charCodeAt(0) !== 0xFFFD) { e[D[200][j]] = 51200 + j; d[51200 + j] = D[200][j];} +D[201] = "���������������������������������僓僬僰僯僣僠凘劀劁勩勫匰厬嘧嘕嘌嘒嗼嘏嘜嘁嘓嘂嗺嘝嘄嗿嗹墉塼墐墘墆墁塿塴墋塺墇墑墎塶墂墈塻墔墏壾奫嫜嫮嫥嫕嫪嫚嫭嫫嫳嫢嫠嫛嫬嫞嫝嫙嫨嫟孷寠寣屣嶂嶀嵽嶆嵺嶁嵷嶊嶉嶈嵾嵼嶍嵹嵿幘幙幓廘廑廗廎廜����������������������������������佣作你伯低伶余佝佈佚兌克免兵冶冷別判利刪刨劫助努劬匣即卵吝吭吞吾否呎吧呆呃吳呈呂君吩告吹吻吸吮吵吶吠吼呀吱含吟听囪困囤囫坊坑址坍均坎圾坐坏圻壯夾妝妒妨妞妣妙妖妍妤妓妊妥孝孜孚孛完宋宏尬局屁�".split(""); +for(j = 0; j != D[201].length; ++j) if(D[201][j].charCodeAt(0) !== 0xFFFD) { e[D[201][j]] = 51456 + j; d[51456 + j] = D[201][j];} +D[202] = "���������������������������������廕廙廒廔彄彃彯徶愬愨慁慞慱慳慒慓慲慬憀慴慔慺慛慥愻慪慡慖戩戧戫搫摍摛摝摴摶摲摳摽摵摦撦摎撂摞摜摋摓摠摐摿搿摬摫摙摥摷敳斠暡暠暟朅朄朢榱榶槉榠槎榖榰榬榼榑榙榎榧榍榩榾榯榿槄榽榤槔榹槊榚槏榳榓����������������������������������尿尾岐岑岔岌巫希序庇床廷弄弟彤形彷役忘忌志忍忱快忸忪戒我抄抗抖技扶抉扭把扼找批扳抒扯折扮投抓抑抆改攻攸旱更束李杏材村杜杖杞杉杆杠杓杗步每求汞沙沁沈沉沅沛汪決沐汰沌汨沖沒汽沃汲汾汴沆汶沍沔沘�".split(""); +for(j = 0; j != D[202].length; ++j) if(D[202][j].charCodeAt(0) !== 0xFFFD) { e[D[202][j]] = 51712 + j; d[51712 + j] = D[202][j];} +D[203] = "���������������������������������榪榡榞槙榗榐槂榵榥槆歊歍歋殞殟殠毃毄毾滎滵滱漃漥滸漷滻漮漉潎漙漚漧漘漻漒滭漊漶潳滹滮漭潀漰漼漵滫漇漎潃漅滽滶漹漜滼漺漟漍漞漈漡熇熐熉熀熅熂熏煻熆熁熗牄牓犗犕犓獃獍獑獌瑢瑳瑱瑵瑲瑧瑮甀甂甃畽����������������������������������沂灶灼災灸牢牡牠狄狂玖甬甫男甸皂盯矣私秀禿究系罕肖肓肝肘肛肚育良芒芋芍見角言谷豆豕貝赤走足身車辛辰迂迆迅迄巡邑邢邪邦那酉釆里防阮阱阪阬並乖乳事些亞享京佯依侍佳使佬供例來侃佰併侈佩佻侖佾侏侑�".split(""); +for(j = 0; j != D[203].length; ++j) if(D[203][j].charCodeAt(0) !== 0xFFFD) { e[D[203][j]] = 51968 + j; d[51968 + j] = D[203][j];} +D[204] = "���������������������������������疐瘖瘈瘌瘕瘑瘊瘔皸瞁睼瞅瞂睮瞀睯睾瞃碲碪碴碭碨硾碫碞碥碠碬碢碤禘禊禋禖禕禔禓禗禈禒禐稫穊稰稯稨稦窨窫窬竮箈箜箊箑箐箖箍箌箛箎箅箘劄箙箤箂粻粿粼粺綧綷緂綣綪緁緀緅綝緎緄緆緋緌綯綹綖綼綟綦綮綩����������������������������������佺兔兒兕兩具其典冽函刻券刷刺到刮制剁劾劻卒協卓卑卦卷卸卹取叔受味呵咖呸咕咀呻呷咄咒咆呼咐呱呶和咚呢周咋命咎固垃坷坪坩坡坦坤坼夜奉奇奈奄奔妾妻委妹妮姑姆姐姍始姓姊妯妳姒姅孟孤季宗定官宜宙宛尚�".split(""); +for(j = 0; j != D[204].length; ++j) if(D[204][j].charCodeAt(0) !== 0xFFFD) { e[D[204][j]] = 52224 + j; d[52224 + j] = D[204][j];} +D[205] = "���������������������������������綡緉罳翢翣翥翞耤聝聜膉膆膃膇膍膌膋舕蒗蒤蒡蒟蒺蓎蓂蒬蒮蒫蒹蒴蓁蓍蒪蒚蒱蓐蒝蒧蒻蒢蒔蓇蓌蒛蒩蒯蒨蓖蒘蒶蓏蒠蓗蓔蓒蓛蒰蒑虡蜳蜣蜨蝫蝀蜮蜞蜡蜙蜛蝃蜬蝁蜾蝆蜠蜲蜪蜭蜼蜒蜺蜱蜵蝂蜦蜧蜸蜤蜚蜰蜑裷裧裱����������������������������������屈居屆岷岡岸岩岫岱岳帘帚帖帕帛帑幸庚店府底庖延弦弧弩往征彿彼忝忠忽念忿怏怔怯怵怖怪怕怡性怩怫怛或戕房戾所承拉拌拄抿拂抹拒招披拓拔拋拈抨抽押拐拙拇拍抵拚抱拘拖拗拆抬拎放斧於旺昔易昌昆昂明昀昏�".split(""); +for(j = 0; j != D[205].length; ++j) if(D[205][j].charCodeAt(0) !== 0xFFFD) { e[D[205][j]] = 52480 + j; d[52480 + j] = D[205][j];} +D[206] = "���������������������������������裲裺裾裮裼裶裻裰裬裫覝覡覟覞觩觫觨誫誙誋誒誏誖谽豨豩賕賏賗趖踉踂跿踍跽踊踃踇踆踅跾踀踄輐輑輎輍鄣鄜鄠鄢鄟鄝鄚鄤鄡鄛酺酲酹酳銥銤鉶銛鉺銠銔銪銍銦銚銫鉹銗鉿銣鋮銎銂銕銢鉽銈銡銊銆銌銙銧鉾銇銩銝����������������������������������昕昊昇服朋杭枋枕東果杳杷枇枝林杯杰板枉松析杵枚枓杼杪杲欣武歧歿氓氛泣注泳沱泌泥河沽沾沼波沫法泓沸泄油況沮泗泅泱沿治泡泛泊沬泯泜泖泠炕炎炒炊炙爬爭爸版牧物狀狎狙狗狐玩玨玟玫玥甽疝疙疚的盂盲直�".split(""); +for(j = 0; j != D[206].length; ++j) if(D[206][j].charCodeAt(0) !== 0xFFFD) { e[D[206][j]] = 52736 + j; d[52736 + j] = D[206][j];} +D[207] = "���������������������������������銋鈭隞隡雿靘靽靺靾鞃鞀鞂靻鞄鞁靿韎韍頖颭颮餂餀餇馝馜駃馹馻馺駂馽駇骱髣髧鬾鬿魠魡魟鳱鳲鳵麧僿儃儰僸儆儇僶僾儋儌僽儊劋劌勱勯噈噂噌嘵噁噊噉噆噘噚噀嘳嘽嘬嘾嘸嘪嘺圚墫墝墱墠墣墯墬墥墡壿嫿嫴嫽嫷����������������������������������知矽社祀祁秉秈空穹竺糾罔羌羋者肺肥肢肱股肫肩肴肪肯臥臾舍芳芝芙芭芽芟芹花芬芥芯芸芣芰芾芷虎虱初表軋迎返近邵邸邱邶采金長門阜陀阿阻附陂隹雨青非亟亭亮信侵侯便俠俑俏保促侶俘俟俊俗侮俐俄係俚俎俞�".split(""); +for(j = 0; j != D[207].length; ++j) if(D[207][j].charCodeAt(0) !== 0xFFFD) { e[D[207][j]] = 52992 + j; d[52992 + j] = D[207][j];} +D[208] = "���������������������������������嫶嬃嫸嬂嫹嬁嬇嬅嬏屧嶙嶗嶟嶒嶢嶓嶕嶠嶜嶡嶚嶞幩幝幠幜緳廛廞廡彉徲憋憃慹憱憰憢憉憛憓憯憭憟憒憪憡憍慦憳戭摮摰撖撠撅撗撜撏撋撊撌撣撟摨撱撘敶敺敹敻斲斳暵暰暩暲暷暪暯樀樆樗槥槸樕槱槤樠槿槬槢樛樝����������������������������������侷兗冒冑冠剎剃削前剌剋則勇勉勃勁匍南卻厚叛咬哀咨哎哉咸咦咳哇哂咽咪品哄哈咯咫咱咻咩咧咿囿垂型垠垣垢城垮垓奕契奏奎奐姜姘姿姣姨娃姥姪姚姦威姻孩宣宦室客宥封屎屏屍屋峙峒巷帝帥帟幽庠度建弈弭彥很�".split(""); +for(j = 0; j != D[208].length; ++j) if(D[208][j].charCodeAt(0) !== 0xFFFD) { e[D[208][j]] = 53248 + j; d[53248 + j] = D[208][j];} +D[209] = "���������������������������������槾樧槲槮樔槷槧橀樈槦槻樍槼槫樉樄樘樥樏槶樦樇槴樖歑殥殣殢殦氁氀毿氂潁漦潾澇濆澒澍澉澌潢潏澅潚澖潶潬澂潕潲潒潐潗澔澓潝漀潡潫潽潧澐潓澋潩潿澕潣潷潪潻熲熯熛熰熠熚熩熵熝熥熞熤熡熪熜熧熳犘犚獘獒����������������������������������待徊律徇後徉怒思怠急怎怨恍恰恨恢恆恃恬恫恪恤扁拜挖按拼拭持拮拽指拱拷拯括拾拴挑挂政故斫施既春昭映昧是星昨昱昤曷柿染柱柔某柬架枯柵柩柯柄柑枴柚查枸柏柞柳枰柙柢柝柒歪殃殆段毒毗氟泉洋洲洪流津洌�".split(""); +for(j = 0; j != D[209].length; ++j) if(D[209][j].charCodeAt(0) !== 0xFFFD) { e[D[209][j]] = 53504 + j; d[53504 + j] = D[209][j];} +D[210] = "���������������������������������獞獟獠獝獛獡獚獙獢璇璉璊璆璁瑽璅璈瑼瑹甈甇畾瘥瘞瘙瘝瘜瘣瘚瘨瘛皜皝皞皛瞍瞏瞉瞈磍碻磏磌磑磎磔磈磃磄磉禚禡禠禜禢禛歶稹窲窴窳箷篋箾箬篎箯箹篊箵糅糈糌糋緷緛緪緧緗緡縃緺緦緶緱緰緮緟罶羬羰羭翭翫����������������������������������洱洞洗活洽派洶洛泵洹洧洸洩洮洵洎洫炫為炳炬炯炭炸炮炤爰牲牯牴狩狠狡玷珊玻玲珍珀玳甚甭畏界畎畋疫疤疥疢疣癸皆皇皈盈盆盃盅省盹相眉看盾盼眇矜砂研砌砍祆祉祈祇禹禺科秒秋穿突竿竽籽紂紅紀紉紇約紆缸�".split(""); +for(j = 0; j != D[210].length; ++j) if(D[210][j].charCodeAt(0) !== 0xFFFD) { e[D[210][j]] = 53760 + j; d[53760 + j] = D[210][j];} +D[211] = "���������������������������������翪翬翦翨聤聧膣膟膞膕膢膙膗舖艏艓艒艐艎艑蔤蔻蔏蔀蔩蔎蔉蔍蔟蔊蔧蔜蓻蔫蓺蔈蔌蓴蔪蓲蔕蓷蓫蓳蓼蔒蓪蓩蔖蓾蔨蔝蔮蔂蓽蔞蓶蔱蔦蓧蓨蓰蓯蓹蔘蔠蔰蔋蔙蔯虢蝖蝣蝤蝷蟡蝳蝘蝔蝛蝒蝡蝚蝑蝞蝭蝪蝐蝎蝟蝝蝯蝬蝺����������������������������������美羿耐耍耑耶胖胥胚胃胄背胡胛胎胞胤胝致舢苧范茅苣苛苦茄若茂茉苒苗英茁苜苔苑苞苓苟苯茆虐虹虻虺衍衫要觔計訂訃貞負赴赳趴軍軌述迦迢迪迥迭迫迤迨郊郎郁郃酋酊重閂限陋陌降面革韋韭音頁風飛食首香乘亳�".split(""); +for(j = 0; j != D[211].length; ++j) if(D[211][j].charCodeAt(0) !== 0xFFFD) { e[D[211][j]] = 54016 + j; d[54016 + j] = D[211][j];} +D[212] = "���������������������������������蝮蝜蝥蝏蝻蝵蝢蝧蝩衚褅褌褔褋褗褘褙褆褖褑褎褉覢覤覣觭觰觬諏諆誸諓諑諔諕誻諗誾諀諅諘諃誺誽諙谾豍貏賥賟賙賨賚賝賧趠趜趡趛踠踣踥踤踮踕踛踖踑踙踦踧踔踒踘踓踜踗踚輬輤輘輚輠輣輖輗遳遰遯遧遫鄯鄫鄩����������������������������������倌倍倣俯倦倥俸倩倖倆值借倚倒們俺倀倔倨俱倡個候倘俳修倭倪俾倫倉兼冤冥冢凍凌准凋剖剜剔剛剝匪卿原厝叟哨唐唁唷哼哥哲唆哺唔哩哭員唉哮哪哦唧唇哽唏圃圄埂埔埋埃堉夏套奘奚娑娘娜娟娛娓姬娠娣娩娥娌娉�".split(""); +for(j = 0; j != D[212].length; ++j) if(D[212][j].charCodeAt(0) !== 0xFFFD) { e[D[212][j]] = 54272 + j; d[54272 + j] = D[212][j];} +D[213] = "���������������������������������鄪鄲鄦鄮醅醆醊醁醂醄醀鋐鋃鋄鋀鋙銶鋏鋱鋟鋘鋩鋗鋝鋌鋯鋂鋨鋊鋈鋎鋦鋍鋕鋉鋠鋞鋧鋑鋓銵鋡錥鋆銴镼閬閫閮閰隤隢雓霅霈霂靚鞊鞎鞈韐韏頞頝頦頩頨頠頛頧颲餈飺餑餔餖餗餕駜駍駏駓駔駎駉駖駘駋駗駌骳髬髫髳����������������������������������孫屘宰害家宴宮宵容宸射屑展屐峭峽峻峪峨峰島崁峴差席師庫庭座弱徒徑徐恙恣恥恐恕恭恩息悄悟悚悍悔悌悅悖扇拳挈拿捎挾振捕捂捆捏捉挺捐挽挪挫挨捍捌效敉料旁旅時晉晏晃晒晌晅晁書朔朕朗校核案框桓根桂桔�".split(""); +for(j = 0; j != D[213].length; ++j) if(D[213][j].charCodeAt(0) !== 0xFFFD) { e[D[213][j]] = 54528 + j; d[54528 + j] = D[213][j];} +D[214] = "���������������������������������髲髱魆魃魧魴魱魦魶魵魰魨魤魬鳼鳺鳽鳿鳷鴇鴀鳹鳻鴈鴅鴄麃黓鼏鼐儜儓儗儚儑凞匴叡噰噠噮噳噦噣噭噲噞噷圜圛壈墽壉墿墺壂墼壆嬗嬙嬛嬡嬔嬓嬐嬖嬨嬚嬠嬞寯嶬嶱嶩嶧嶵嶰嶮嶪嶨嶲嶭嶯嶴幧幨幦幯廩廧廦廨廥彋����������������������������������栩梳栗桌桑栽柴桐桀格桃株桅栓栘桁殊殉殷氣氧氨氦氤泰浪涕消涇浦浸海浙涓浬涉浮浚浴浩涌涊浹涅浥涔烊烘烤烙烈烏爹特狼狹狽狸狷玆班琉珮珠珪珞畔畝畜畚留疾病症疲疳疽疼疹痂疸皋皰益盍盎眩真眠眨矩砰砧砸�".split(""); +for(j = 0; j != D[214].length; ++j) if(D[214][j].charCodeAt(0) !== 0xFFFD) { e[D[214][j]] = 54784 + j; d[54784 + j] = D[214][j];} +D[215] = "���������������������������������徼徻憝憨憖懅憴懆懁懌憺憿憸憌擗擖擐擏擉撽撉擃擛擳擙攳敿敼斢曈暾曀曊曋曏暽暻暺曌朣樴橦橉橧樲橨樾橝橭橶橛橑樨橚樻樿橁橪橤橐橏橔橯橩橠樼橞橖橕橍橎橆歕歔歖殧殪殫毈毇氄氃氆澭濋澣濇澼濎濈潞濄澽澞����������������������������������砝破砷砥砭砠砟砲祕祐祠祟祖神祝祗祚秤秣秧租秦秩秘窄窈站笆笑粉紡紗紋紊素索純紐紕級紜納紙紛缺罟羔翅翁耆耄耘耕耙耗耽耿胱脂胰脅胭胴脆胸胳脈能脊胼胯臭臬舀舐航舫舨般芻茫荒荔荊茸荐草茵茴荏茲茹茶茗�".split(""); +for(j = 0; j != D[215].length; ++j) if(D[215][j].charCodeAt(0) !== 0xFFFD) { e[D[215][j]] = 55040 + j; d[55040 + j] = D[215][j];} +D[216] = "���������������������������������濊澨瀄澥澮澺澬澪濏澿澸澢濉澫濍澯澲澰燅燂熿熸燖燀燁燋燔燊燇燏熽燘熼燆燚燛犝犞獩獦獧獬獥獫獪瑿璚璠璔璒璕璡甋疀瘯瘭瘱瘽瘳瘼瘵瘲瘰皻盦瞚瞝瞡瞜瞛瞢瞣瞕瞙瞗磝磩磥磪磞磣磛磡磢磭磟磠禤穄穈穇窶窸窵����������������������������������荀茱茨荃虔蚊蚪蚓蚤蚩蚌蚣蚜衰衷袁袂衽衹記訐討訌訕訊託訓訖訏訑豈豺豹財貢起躬軒軔軏辱送逆迷退迺迴逃追逅迸邕郡郝郢酒配酌釘針釗釜釙閃院陣陡陛陝除陘陞隻飢馬骨高鬥鬲鬼乾偺偽停假偃偌做偉健偶偎偕偵�".split(""); +for(j = 0; j != D[216].length; ++j) if(D[216][j].charCodeAt(0) !== 0xFFFD) { e[D[216][j]] = 55296 + j; d[55296 + j] = D[216][j];} +D[217] = "���������������������������������窱窷篞篣篧篝篕篥篚篨篹篔篪篢篜篫篘篟糒糔糗糐糑縒縡縗縌縟縠縓縎縜縕縚縢縋縏縖縍縔縥縤罃罻罼罺羱翯耪耩聬膱膦膮膹膵膫膰膬膴膲膷膧臲艕艖艗蕖蕅蕫蕍蕓蕡蕘蕀蕆蕤蕁蕢蕄蕑蕇蕣蔾蕛蕱蕎蕮蕵蕕蕧蕠薌蕦����������������������������������側偷偏倏偯偭兜冕凰剪副勒務勘動匐匏匙匿區匾參曼商啪啦啄啞啡啃啊唱啖問啕唯啤唸售啜唬啣唳啁啗圈國圉域堅堊堆埠埤基堂堵執培夠奢娶婁婉婦婪婀娼婢婚婆婊孰寇寅寄寂宿密尉專將屠屜屝崇崆崎崛崖崢崑崩崔�".split(""); +for(j = 0; j != D[217].length; ++j) if(D[217][j].charCodeAt(0) !== 0xFFFD) { e[D[217][j]] = 55552 + j; d[55552 + j] = D[217][j];} +D[218] = "���������������������������������蕝蕔蕥蕬虣虥虤螤螛螏螗螓螒螈螁螖螘蝹螇螣螅螐螑螝螄螔螜螚螉褞褦褰褭褮褧褱褢褩褣褯褬褟觱諠諢諲諴諵諝謔諤諟諰諈諞諡諨諿諯諻貑貒貐賵賮賱賰賳赬赮趥趧踳踾踸蹀蹅踶踼踽蹁踰踿躽輶輮輵輲輹輷輴遶遹遻����������������������������������崙崤崧崗巢常帶帳帷康庸庶庵庾張強彗彬彩彫得徙從徘御徠徜恿患悉悠您惋悴惦悽情悻悵惜悼惘惕惆惟悸惚惇戚戛扈掠控捲掖探接捷捧掘措捱掩掉掃掛捫推掄授掙採掬排掏掀捻捩捨捺敝敖救教敗啟敏敘敕敔斜斛斬族�".split(""); +for(j = 0; j != D[218].length; ++j) if(D[218][j].charCodeAt(0) !== 0xFFFD) { e[D[218][j]] = 55808 + j; d[55808 + j] = D[218][j];} +D[219] = "���������������������������������邆郺鄳鄵鄶醓醐醑醍醏錧錞錈錟錆錏鍺錸錼錛錣錒錁鍆錭錎錍鋋錝鋺錓鋹鋷錴錂錤鋿錩錹錵錪錔錌錋鋾錉錀鋻錖閼闍閾閹閺閶閿閵閽隩雔霋霒霐鞙鞗鞔韰韸頵頯頲餤餟餧餩馞駮駬駥駤駰駣駪駩駧骹骿骴骻髶髺髹髷鬳����������������������������������旋旌旎晝晚晤晨晦晞曹勗望梁梯梢梓梵桿桶梱梧梗械梃棄梭梆梅梔條梨梟梡梂欲殺毫毬氫涎涼淳淙液淡淌淤添淺清淇淋涯淑涮淞淹涸混淵淅淒渚涵淚淫淘淪深淮淨淆淄涪淬涿淦烹焉焊烽烯爽牽犁猜猛猖猓猙率琅琊球�".split(""); +for(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];} +D[220] = "���������������������������������鮀鮅鮇魼魾魻鮂鮓鮒鮐魺鮕魽鮈鴥鴗鴠鴞鴔鴩鴝鴘鴢鴐鴙鴟麈麆麇麮麭黕黖黺鼒鼽儦儥儢儤儠儩勴嚓嚌嚍嚆嚄嚃噾嚂噿嚁壖壔壏壒嬭嬥嬲嬣嬬嬧嬦嬯嬮孻寱寲嶷幬幪徾懃憵憼懧懠懥懤懨懞擯擩擣擫擤擨斁斀斶旚曒檍����������������������������������理現琍瓠瓶瓷甜產略畦畢異疏痔痕疵痊痍皎盔盒盛眷眾眼眶眸眺硫硃硎祥票祭移窒窕笠笨笛第符笙笞笮粒粗粕絆絃統紮紹紼絀細紳組累終紲紱缽羞羚翌翎習耜聊聆脯脖脣脫脩脰脤舂舵舷舶船莎莞莘荸莢莖莽莫莒莊莓�".split(""); +for(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];} +D[221] = "���������������������������������檖檁檥檉檟檛檡檞檇檓檎檕檃檨檤檑橿檦檚檅檌檒歛殭氉濌澩濴濔濣濜濭濧濦濞濲濝濢濨燡燱燨燲燤燰燢獳獮獯璗璲璫璐璪璭璱璥璯甐甑甒甏疄癃癈癉癇皤盩瞵瞫瞲瞷瞶瞴瞱瞨矰磳磽礂磻磼磿磲礅磹磾礄禫禨穜穛穖����������������������������������莉莠荷荻荼莆莧處彪蛇蛀蚶蛄蚵蛆蛋蚱蚯蛉術袞袈被袒袖袍袋覓規訪訝訣訥許設訟訛訢豉豚販責貫貨貪貧赧赦趾趺軛軟這逍通逗連速逝逐逕逞造透逢逖逛途部郭都酗野釵釦釣釧釭釩閉陪陵陳陸陰陴陶陷陬雀雪雩章竟�".split(""); +for(j = 0; j != D[221].length; ++j) if(D[221][j].charCodeAt(0) !== 0xFFFD) { e[D[221][j]] = 56576 + j; d[56576 + j] = D[221][j];} +D[222] = "���������������������������������穘穔穚窾竀竁簅簏篲簀篿篻簎篴簋篳簂簉簃簁篸篽簆篰篱簐簊糨縭縼繂縳顈縸縪繉繀繇縩繌縰縻縶繄縺罅罿罾罽翴翲耬膻臄臌臊臅臇膼臩艛艚艜薃薀薏薧薕薠薋薣蕻薤薚薞蕷蕼薉薡蕺蕸蕗薎薖薆薍薙薝薁薢薂薈薅蕹����������������������������������頂頃魚鳥鹵鹿麥麻傢傍傅備傑傀傖傘傚最凱割剴創剩勞勝勛博厥啻喀喧啼喊喝喘喂喜喪喔喇喋喃喳單喟唾喲喚喻喬喱啾喉喫喙圍堯堪場堤堰報堡堝堠壹壺奠婷媚婿媒媛媧孳孱寒富寓寐尊尋就嵌嵐崴嵇巽幅帽幀幃幾廊�".split(""); +for(j = 0; j != D[222].length; ++j) if(D[222][j].charCodeAt(0) !== 0xFFFD) { e[D[222][j]] = 56832 + j; d[56832 + j] = D[222][j];} +D[223] = "���������������������������������蕶薘薐薟虨螾螪螭蟅螰螬螹螵螼螮蟉蟃蟂蟌螷螯蟄蟊螴螶螿螸螽蟞螲褵褳褼褾襁襒褷襂覭覯覮觲觳謞謘謖謑謅謋謢謏謒謕謇謍謈謆謜謓謚豏豰豲豱豯貕貔賹赯蹎蹍蹓蹐蹌蹇轃轀邅遾鄸醚醢醛醙醟醡醝醠鎡鎃鎯鍤鍖鍇����������������������������������廁廂廄弼彭復循徨惑惡悲悶惠愜愣惺愕惰惻惴慨惱愎惶愉愀愒戟扉掣掌描揀揩揉揆揍插揣提握揖揭揮捶援揪換摒揚揹敞敦敢散斑斐斯普晰晴晶景暑智晾晷曾替期朝棺棕棠棘棗椅棟棵森棧棹棒棲棣棋棍植椒椎棉棚楮棻�".split(""); +for(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];} +D[224] = "���������������������������������鍼鍘鍜鍶鍉鍐鍑鍠鍭鎏鍌鍪鍹鍗鍕鍒鍏鍱鍷鍻鍡鍞鍣鍧鍎鍙闇闀闉闃闅閷隮隰隬霠霟霘霝霙鞚鞡鞜鞞鞝韕韔韱顁顄顊顉顅顃餥餫餬餪餳餲餯餭餱餰馘馣馡騂駺駴駷駹駸駶駻駽駾駼騃骾髾髽鬁髼魈鮚鮨鮞鮛鮦鮡鮥鮤鮆����������������������������������款欺欽殘殖殼毯氮氯氬港游湔渡渲湧湊渠渥渣減湛湘渤湖湮渭渦湯渴湍渺測湃渝渾滋溉渙湎湣湄湲湩湟焙焚焦焰無然煮焜牌犄犀猶猥猴猩琺琪琳琢琥琵琶琴琯琛琦琨甥甦畫番痢痛痣痙痘痞痠登發皖皓皴盜睏短硝硬硯�".split(""); +for(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];} +D[225] = "���������������������������������鮢鮠鮯鴳鵁鵧鴶鴮鴯鴱鴸鴰鵅鵂鵃鴾鴷鵀鴽翵鴭麊麉麍麰黈黚黻黿鼤鼣鼢齔龠儱儭儮嚘嚜嚗嚚嚝嚙奰嬼屩屪巀幭幮懘懟懭懮懱懪懰懫懖懩擿攄擽擸攁攃擼斔旛曚曛曘櫅檹檽櫡櫆檺檶檷櫇檴檭歞毉氋瀇瀌瀍瀁瀅瀔瀎濿����������������������������������稍稈程稅稀窘窗窖童竣等策筆筐筒答筍筋筏筑粟粥絞結絨絕紫絮絲絡給絢絰絳善翔翕耋聒肅腕腔腋腑腎脹腆脾腌腓腴舒舜菩萃菸萍菠菅萋菁華菱菴著萊菰萌菌菽菲菊萸萎萄菜萇菔菟虛蛟蛙蛭蛔蛛蛤蛐蛞街裁裂袱覃視�".split(""); +for(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];} +D[226] = "���������������������������������瀀濻瀦濼濷瀊爁燿燹爃燽獶璸瓀璵瓁璾璶璻瓂甔甓癜癤癙癐癓癗癚皦皽盬矂瞺礌礓礔礉礐礒礑禭禬穟簜簩簙簠簟簭簝簦簨簢簥簰繜繐繖繣繘繢繟繑繠繗繓羵羳翷翸聵臑臒臐艟艞薴藆藀藃藂薳薵薽藇藄薿藋藎藈藅薱薶����������������������������������註詠評詞証詁詔詛詐詆訴診訶詖象貂貯貼貳貽賁費賀貴買貶貿貸越超趁跎距跋跚跑跌跛跆軻軸軼辜逮逵週逸進逶鄂郵鄉郾酣酥量鈔鈕鈣鈉鈞鈍鈐鈇鈑閔閏開閑間閒閎隊階隋陽隅隆隍陲隄雁雅雄集雇雯雲韌項順須飧飪�".split(""); +for(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];} +D[227] = "���������������������������������藒蘤薸薷薾虩蟧蟦蟢蟛蟫蟪蟥蟟蟳蟤蟔蟜蟓蟭蟘蟣蟗蟙蠁蟴蟨蟝襓襋襏襌襆襐襑襉謪謧謣謳謰謵譇謯謼謾謱謥謷謦謶謮謤謻謽謺豂豵貙貘貗賾贄贂贀蹜蹢蹠蹗蹖蹞蹥蹧蹛蹚蹡蹝蹩蹔轆轇轈轋鄨鄺鄻鄾醨醥醧醯醪鎵鎌����������������������������������飯飩飲飭馮馭黃黍黑亂傭債傲傳僅傾催傷傻傯僇剿剷剽募勦勤勢勣匯嗟嗨嗓嗦嗎嗜嗇嗑嗣嗤嗯嗚嗡嗅嗆嗥嗉園圓塞塑塘塗塚塔填塌塭塊塢塒塋奧嫁嫉嫌媾媽媼媳嫂媲嵩嵯幌幹廉廈弒彙徬微愚意慈感想愛惹愁愈慎慌慄�".split(""); +for(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];} +D[228] = "���������������������������������鎒鎷鎛鎝鎉鎧鎎鎪鎞鎦鎕鎈鎙鎟鎀鎍鎱鎑鎲鎤鎨鎴鎣闒闓闑隳雗雚巂雟雘雝霣霢霥鞬鞮鞨鞫鞤鞪鞢鞥韗韙韖韘韺顐顑顒颸饁餼餺騏騋騉騍騄騑騊騅騇騆髀髜鬈鬄鬅鬩鬵魊魌魋鯇鯆鯃鮿鯁鮵鮸鯓鮶鯄鮹鮽鵜鵓鵏鵊鵛鵋����������������������������������慍愾愴愧愍愆愷戡戢搓搾搞搪搭搽搬搏搜搔損搶搖搗搆敬斟新暗暉暇暈暖暄暘暍會榔業楚楷楠楔極椰概楊楨楫楞楓楹榆楝楣楛歇歲毀殿毓毽溢溯滓溶滂源溝滇滅溥溘溼溺溫滑準溜滄滔溪溧溴煎煙煩煤煉照煜煬煦煌煥�".split(""); +for(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];} +D[229] = "���������������������������������鵙鵖鵌鵗鵒鵔鵟鵘鵚麎麌黟鼁鼀鼖鼥鼫鼪鼩鼨齌齕儴儵劖勷厴嚫嚭嚦嚧嚪嚬壚壝壛夒嬽嬾嬿巃幰徿懻攇攐攍攉攌攎斄旞旝曞櫧櫠櫌櫑櫙櫋櫟櫜櫐櫫櫏櫍櫞歠殰氌瀙瀧瀠瀖瀫瀡瀢瀣瀩瀗瀤瀜爌爊爇爂爅犥犦犤犣犡瓋瓅����������������������������������煞煆煨煖爺牒猷獅猿猾瑯瑚瑕瑟瑞瑁琿瑙瑛瑜當畸瘀痰瘁痲痱痺痿痴痳盞盟睛睫睦睞督睹睪睬睜睥睨睢矮碎碰碗碘碌碉硼碑碓硿祺祿禁萬禽稜稚稠稔稟稞窟窠筷節筠筮筧粱粳粵經絹綑綁綏絛置罩罪署義羨群聖聘肆肄�".split(""); +for(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];} +D[230] = "���������������������������������璷瓃甖癠矉矊矄矱礝礛礡礜礗礞禰穧穨簳簼簹簬簻糬糪繶繵繸繰繷繯繺繲繴繨罋罊羃羆羷翽翾聸臗臕舋艤艡艣藫藱藭藙藡藨藚藗藬藲藸藘藟藣藜藑藰藦藯藞藢蠀蟺蠃蟶蟷蠉蠌蠋蠆蟼蠈蟿蠊蠂襢襚襛襗襡襜襘襝襙覈覷����������������������������������腱腰腸腥腮腳腫腹腺腦舅艇蒂葷落萱葵葦葫葉葬葛萼萵葡董葩葭葆虞虜號蛹蜓蜈蜇蜀蛾蛻蜂蜃蜆蜊衙裟裔裙補裘裝裡裊裕裒覜解詫該詳試詩詰誇詼詣誠話誅詭詢詮詬詹詻訾詨豢貊貉賊資賈賄貲賃賂賅跡跟跨路跳跺跪�".split(""); +for(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];} +D[231] = "���������������������������������覶觶譐譈譊譀譓譖譔譋譕譑譂譒譗豃豷豶貚贆贇贉趬趪趭趫蹭蹸蹳蹪蹯蹻軂轒轑轏轐轓辴酀鄿醰醭鏞鏇鏏鏂鏚鏐鏹鏬鏌鏙鎩鏦鏊鏔鏮鏣鏕鏄鏎鏀鏒鎥鏧镽闚闛雡霩霫霬霨霦鞳鞷鞶韝韞韟顜顙顝顗颿颽颻颾饈饇饃馦馧����������������������������������跤跦躲較載軾輊辟農運遊道遂達逼違遐遇遏過遍遑逾遁鄒鄗酬酪酩釉鈷鉗鈸鈽鉀鈾鉛鉋鉤鉑鈴鉉鉍鉅鈹鈿鉚閘隘隔隕雍雋雉雊雷電雹零靖靴靶預頑頓頊頒頌飼飴飽飾馳馱馴髡鳩麂鼎鼓鼠僧僮僥僖僭僚僕像僑僱僎僩兢�".split(""); +for(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];} +D[232] = "���������������������������������騚騕騥騝騤騛騢騠騧騣騞騜騔髂鬋鬊鬎鬌鬷鯪鯫鯠鯞鯤鯦鯢鯰鯔鯗鯬鯜鯙鯥鯕鯡鯚鵷鶁鶊鶄鶈鵱鶀鵸鶆鶋鶌鵽鵫鵴鵵鵰鵩鶅鵳鵻鶂鵯鵹鵿鶇鵨麔麑黀黼鼭齀齁齍齖齗齘匷嚲嚵嚳壣孅巆巇廮廯忀忁懹攗攖攕攓旟曨曣曤����������������������������������凳劃劂匱厭嗾嘀嘛嘗嗽嘔嘆嘉嘍嘎嗷嘖嘟嘈嘐嗶團圖塵塾境墓墊塹墅塽壽夥夢夤奪奩嫡嫦嫩嫗嫖嫘嫣孵寞寧寡寥實寨寢寤察對屢嶄嶇幛幣幕幗幔廓廖弊彆彰徹慇愿態慷慢慣慟慚慘慵截撇摘摔撤摸摟摺摑摧搴摭摻敲斡�".split(""); +for(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];} +D[233] = "���������������������������������櫳櫰櫪櫨櫹櫱櫮櫯瀼瀵瀯瀷瀴瀱灂瀸瀿瀺瀹瀪灀瀻瀳灁爓爔犨獽獼璺皫皪皾盭矌矎矏矍矲礥礣礧礨礤礩禲穮穬穭竷籉籈籊籇籅糮繻繾纁纀羺翿聹臛臙艨艩蘢藿蘁藾蘛蘀藶蘄蘉蘅蘌藽蠙蠐蠑蠗蠓蠖襣襦覹觷譠譪譝譨譣����������������������������������旗旖暢暨暝榜榨榕槁榮槓構榛榷榻榫榴槐槍榭槌榦槃榣歉歌氳漳演滾漓滴漩漾漠漬漏漂漢滿滯漆漱漸漲漣漕漫漯澈漪滬漁滲滌滷熔熙煽熊熄熒爾犒犖獄獐瑤瑣瑪瑰瑭甄疑瘧瘍瘋瘉瘓盡監瞄睽睿睡磁碟碧碳碩碣禎福禍�".split(""); +for(j = 0; j != D[233].length; ++j) if(D[233][j].charCodeAt(0) !== 0xFFFD) { e[D[233][j]] = 59648 + j; d[59648 + j] = D[233][j];} +D[234] = "���������������������������������譥譧譭趮躆躈躄轙轖轗轕轘轚邍酃酁醷醵醲醳鐋鐓鏻鐠鐏鐔鏾鐕鐐鐨鐙鐍鏵鐀鏷鐇鐎鐖鐒鏺鐉鏸鐼鐊鏿鏼鐌鏶鐑鐆闞闠闟霮霯鞹鞻韽韾顠顢顣顟飁飂饐饎饙饌饋饓騲騴騱騬騪騶騩騮騸騭髇髊髆鬐鬒鬑鰋鰈鯷鰅鰒鯸鱀����������������������������������種稱窪窩竭端管箕箋筵算箝箔箏箸箇箄粹粽精綻綰綜綽綾綠緊綴網綱綺綢綿綵綸維緒緇綬罰翠翡翟聞聚肇腐膀膏膈膊腿膂臧臺與舔舞艋蓉蒿蓆蓄蒙蒞蒲蒜蓋蒸蓀蓓蒐蒼蓑蓊蜿蜜蜻蜢蜥蜴蜘蝕蜷蜩裳褂裴裹裸製裨褚裯�".split(""); +for(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];} +D[235] = "���������������������������������鰇鰎鰆鰗鰔鰉鶟鶙鶤鶝鶒鶘鶐鶛鶠鶔鶜鶪鶗鶡鶚鶢鶨鶞鶣鶿鶩鶖鶦鶧麙麛麚黥黤黧黦鼰鼮齛齠齞齝齙龑儺儹劘劗囃嚽嚾孈孇巋巏廱懽攛欂櫼欃櫸欀灃灄灊灈灉灅灆爝爚爙獾甗癪矐礭礱礯籔籓糲纊纇纈纋纆纍罍羻耰臝����������������������������������誦誌語誣認誡誓誤說誥誨誘誑誚誧豪貍貌賓賑賒赫趙趕跼輔輒輕輓辣遠遘遜遣遙遞遢遝遛鄙鄘鄞酵酸酷酴鉸銬銀銅銘銖鉻銓銜銨鉼銑閡閨閩閣閥閤隙障際雌雒需靼鞅韶頗領颯颱餃餅餌餉駁骯骰髦魁魂鳴鳶鳳麼鼻齊億�".split(""); +for(j = 0; j != D[235].length; ++j) if(D[235][j].charCodeAt(0) !== 0xFFFD) { e[D[235][j]] = 60160 + j; d[60160 + j] = D[235][j];} +D[236] = "���������������������������������蘘蘪蘦蘟蘣蘜蘙蘧蘮蘡蘠蘩蘞蘥蠩蠝蠛蠠蠤蠜蠫衊襭襩襮襫觺譹譸譅譺譻贐贔趯躎躌轞轛轝酆酄酅醹鐿鐻鐶鐩鐽鐰鐹鐪鐷鐬鑀鐱闥闤闣霵霺鞿韡顤飉飆飀饘饖騹騽驆驄驂驁騺騿髍鬕鬗鬘鬖鬺魒鰫鰝鰜鰬鰣鰨鰩鰤鰡鶷����������������������������������儀僻僵價儂儈儉儅凜劇劈劉劍劊勰厲嘮嘻嘹嘲嘿嘴嘩噓噎噗噴嘶嘯嘰墀墟增墳墜墮墩墦奭嬉嫻嬋嫵嬌嬈寮寬審寫層履嶝嶔幢幟幡廢廚廟廝廣廠彈影德徵慶慧慮慝慕憂慼慰慫慾憧憐憫憎憬憚憤憔憮戮摩摯摹撞撲撈撐撰�".split(""); +for(j = 0; j != D[236].length; ++j) if(D[236][j].charCodeAt(0) !== 0xFFFD) { e[D[236][j]] = 60416 + j; d[60416 + j] = D[236][j];} +D[237] = "���������������������������������鶶鶼鷁鷇鷊鷏鶾鷅鷃鶻鶵鷎鶹鶺鶬鷈鶱鶭鷌鶳鷍鶲鹺麜黫黮黭鼛鼘鼚鼱齎齥齤龒亹囆囅囋奱孋孌巕巑廲攡攠攦攢欋欈欉氍灕灖灗灒爞爟犩獿瓘瓕瓙瓗癭皭礵禴穰穱籗籜籙籛籚糴糱纑罏羇臞艫蘴蘵蘳蘬蘲蘶蠬蠨蠦蠪蠥����������������������������������撥撓撕撩撒撮播撫撚撬撙撢撳敵敷數暮暫暴暱樣樟槨樁樞標槽模樓樊槳樂樅槭樑歐歎殤毅毆漿潼澄潑潦潔澆潭潛潸潮澎潺潰潤澗潘滕潯潠潟熟熬熱熨牖犛獎獗瑩璋璃瑾璀畿瘠瘩瘟瘤瘦瘡瘢皚皺盤瞎瞇瞌瞑瞋磋磅確磊�".split(""); +for(j = 0; j != D[237].length; ++j) if(D[237][j].charCodeAt(0) !== 0xFFFD) { e[D[237][j]] = 60672 + j; d[60672 + j] = D[237][j];} +D[238] = "���������������������������������襱覿覾觻譾讄讂讆讅譿贕躕躔躚躒躐躖躗轠轢酇鑌鑐鑊鑋鑏鑇鑅鑈鑉鑆霿韣顪顩飋饔饛驎驓驔驌驏驈驊驉驒驐髐鬙鬫鬻魖魕鱆鱈鰿鱄鰹鰳鱁鰼鰷鰴鰲鰽鰶鷛鷒鷞鷚鷋鷐鷜鷑鷟鷩鷙鷘鷖鷵鷕鷝麶黰鼵鼳鼲齂齫龕龢儽劙����������������������������������碾磕碼磐稿稼穀稽稷稻窯窮箭箱範箴篆篇篁箠篌糊締練緯緻緘緬緝編緣線緞緩綞緙緲緹罵罷羯翩耦膛膜膝膠膚膘蔗蔽蔚蓮蔬蔭蔓蔑蔣蔡蔔蓬蔥蓿蔆螂蝴蝶蝠蝦蝸蝨蝙蝗蝌蝓衛衝褐複褒褓褕褊誼諒談諄誕請諸課諉諂調�".split(""); +for(j = 0; j != D[238].length; ++j) if(D[238][j].charCodeAt(0) !== 0xFFFD) { e[D[238][j]] = 60928 + j; d[60928 + j] = D[238][j];} +D[239] = "���������������������������������壨壧奲孍巘蠯彏戁戃戄攩攥斖曫欑欒欏毊灛灚爢玂玁玃癰矔籧籦纕艬蘺虀蘹蘼蘱蘻蘾蠰蠲蠮蠳襶襴襳觾讌讎讋讈豅贙躘轤轣醼鑢鑕鑝鑗鑞韄韅頀驖驙鬞鬟鬠鱒鱘鱐鱊鱍鱋鱕鱙鱌鱎鷻鷷鷯鷣鷫鷸鷤鷶鷡鷮鷦鷲鷰鷢鷬鷴����������������������������������誰論諍誶誹諛豌豎豬賠賞賦賤賬賭賢賣賜質賡赭趟趣踫踐踝踢踏踩踟踡踞躺輝輛輟輩輦輪輜輞輥適遮遨遭遷鄰鄭鄧鄱醇醉醋醃鋅銻銷鋪鋤鋁銳銼鋒鋇鋰銲閭閱霄霆震霉靠鞍鞋鞏頡頫頜颳養餓餒餘駝駐駟駛駑駕駒駙骷�".split(""); +for(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];} +D[240] = "���������������������������������鷳鷨鷭黂黐黲黳鼆鼜鼸鼷鼶齃齏齱齰齮齯囓囍孎屭攭曭曮欓灟灡灝灠爣瓛瓥矕礸禷禶籪纗羉艭虃蠸蠷蠵衋讔讕躞躟躠躝醾醽釂鑫鑨鑩雥靆靃靇韇韥驞髕魙鱣鱧鱦鱢鱞鱠鸂鷾鸇鸃鸆鸅鸀鸁鸉鷿鷽鸄麠鼞齆齴齵齶囔攮斸����������������������������������髮髯鬧魅魄魷魯鴆鴉鴃麩麾黎墨齒儒儘儔儐儕冀冪凝劑劓勳噙噫噹噩噤噸噪器噥噱噯噬噢噶壁墾壇壅奮嬝嬴學寰導彊憲憑憩憊懍憶憾懊懈戰擅擁擋撻撼據擄擇擂操撿擒擔撾整曆曉暹曄曇暸樽樸樺橙橫橘樹橄橢橡橋橇�".split(""); +for(j = 0; j != D[240].length; ++j) if(D[240][j].charCodeAt(0) !== 0xFFFD) { e[D[240][j]] = 61440 + j; d[61440 + j] = D[240][j];} +D[241] = "���������������������������������欘欙欗欚灢爦犪矘矙礹籩籫糶纚纘纛纙臠臡虆虇虈襹襺襼襻觿讘讙躥躤躣鑮鑭鑯鑱鑳靉顲饟鱨鱮鱭鸋鸍鸐鸏鸒鸑麡黵鼉齇齸齻齺齹圞灦籯蠼趲躦釃鑴鑸鑶鑵驠鬮鱴鱳鱱鱵鸔鸓黶鼊龤灨灥糷虪蠾蠽蠿讞貜躩軉靋顳顴飌����������������������������������樵機橈歙歷氅濂澱澡濃澤濁澧澳激澹澶澦澠澴熾燉燐燒燈燕熹燎燙燜燃燄獨璜璣璘璟璞瓢甌甍瘴瘸瘺盧盥瞠瞞瞟瞥磨磚磬磧禦積穎穆穌穋窺篙簑築篤篛篡篩篦糕糖縊縑縈縛縣縞縝縉縐罹羲翰翱翮耨膳膩膨臻興艘艙蕊�".split(""); +for(j = 0; j != D[241].length; ++j) if(D[241][j].charCodeAt(0) !== 0xFFFD) { e[D[241][j]] = 61696 + j; d[61696 + j] = D[241][j];} +D[242] = "���������������������������������饡馫驤驦驧鬤鸕鸗齈戇欞爧虌躨钂钀钁驩驨鸙虋讟钃鱹麷癵驫鱺鸝灩灪爩麤齾齉龘��������������������������������������������������������������������������������������������蕙蕈蕨蕩蕃蕉蕭蕪蕞螃螟螞螢融衡褪褲褥褫褡親覦諦諺諫諱謀諜諧諮諾謁謂諷諭諳諶諼豫豭貓賴蹄踱踴蹂踹踵輻輯輸輳辨辦遵遴選遲遼遺鄴醒錠錶鋸錳錯錢鋼錫錄錚錐錦錡錕錮錙閻隧隨險雕霎霑霖霍霓霏靛靜靦鞘頰�".split(""); +for(j = 0; j != D[242].length; ++j) if(D[242][j].charCodeAt(0) !== 0xFFFD) { e[D[242][j]] = 61952 + j; d[61952 + j] = D[242][j];} +D[243] = "�������������������������������������������������������������������頸頻頷頭頹頤餐館餞餛餡餚駭駢駱骸骼髻髭鬨鮑鴕鴣鴦鴨鴒鴛默黔龍龜優償儡儲勵嚎嚀嚐嚅嚇嚏壕壓壑壎嬰嬪嬤孺尷屨嶼嶺嶽嶸幫彌徽應懂懇懦懋戲戴擎擊擘擠擰擦擬擱擢擭斂斃曙曖檀檔檄檢檜櫛檣橾檗檐檠歜殮毚�".split(""); +for(j = 0; j != D[243].length; ++j) if(D[243][j].charCodeAt(0) !== 0xFFFD) { e[D[243][j]] = 62208 + j; d[62208 + j] = D[243][j];} +D[244] = "�������������������������������������������������������������������氈濘濱濟濠濛濤濫濯澀濬濡濩濕濮濰燧營燮燦燥燭燬燴燠爵牆獰獲璩環璦璨癆療癌盪瞳瞪瞰瞬瞧瞭矯磷磺磴磯礁禧禪穗窿簇簍篾篷簌篠糠糜糞糢糟糙糝縮績繆縷縲繃縫總縱繅繁縴縹繈縵縿縯罄翳翼聱聲聰聯聳臆臃膺�".split(""); +for(j = 0; j != D[244].length; ++j) if(D[244][j].charCodeAt(0) !== 0xFFFD) { e[D[244][j]] = 62464 + j; d[62464 + j] = D[244][j];} +D[245] = "�������������������������������������������������������������������臂臀膿膽臉膾臨舉艱薪薄蕾薜薑薔薯薛薇薨薊薦虧蟀蟑螳蟒蟆螫螻螺蟈蟋褻褶襄褸褽覬謎謗謙講謊謠謝謄謐豁谿豳賺賽購賸賻趨蹉蹋蹈蹊轄輾轂轅輿避遽還邁邂邀鄹醣醞醜鍍鎂錨鍵鍊鍥鍋錘鍾鍬鍛鍰鍚鍔闊闋闌闈闆�".split(""); +for(j = 0; j != D[245].length; ++j) if(D[245][j].charCodeAt(0) !== 0xFFFD) { e[D[245][j]] = 62720 + j; d[62720 + j] = D[245][j];} +D[246] = "�������������������������������������������������������������������隱隸雖霜霞鞠韓顆颶餵騁駿鮮鮫鮪鮭鴻鴿麋黏點黜黝黛鼾齋叢嚕嚮壙壘嬸彝懣戳擴擲擾攆擺擻擷斷曜朦檳檬櫃檻檸櫂檮檯歟歸殯瀉瀋濾瀆濺瀑瀏燻燼燾燸獷獵璧璿甕癖癘癒瞽瞿瞻瞼礎禮穡穢穠竄竅簫簧簪簞簣簡糧織�".split(""); +for(j = 0; j != D[246].length; ++j) if(D[246][j].charCodeAt(0) !== 0xFFFD) { e[D[246][j]] = 62976 + j; d[62976 + j] = D[246][j];} +D[247] = "�������������������������������������������������������������������繕繞繚繡繒繙罈翹翻職聶臍臏舊藏薩藍藐藉薰薺薹蟯蟬蟲蟠覆覲觴謨謹謬謫豐贅蹙蹣蹦蹤蹟蹕軀轉轍邇邃邈醫醬釐鎔鎊鎖鎢鎳鎮鎬鎰鎘鎚鎗闔闖闐闕離雜雙雛雞霤鞣鞦鞭韹額顏題顎顓颺餾餿餽餮馥騎髁鬃鬆魏魎魍鯊�".split(""); +for(j = 0; j != D[247].length; ++j) if(D[247][j].charCodeAt(0) !== 0xFFFD) { e[D[247][j]] = 63232 + j; d[63232 + j] = D[247][j];} +D[248] = "�������������������������������������������������������������������鯉鯽鯈鯀鵑鵝鵠黠鼕鼬儳嚥嚨壞壟壢寵龐廬懲懷懶懵攀攏曠曝櫥櫝櫚櫓瀛瀟瀨瀚瀝瀕瀘爆爍牘犢獸獺璽瓊瓣疇疆癟癡矇礙禱穫穩簾簿簸簽簷籀繫繭繹繩繪繳羅羶羹羸臘藩藝藪藕藤藥藷蟻蠅蠍蟹蟾襠襟襖襞譁譜識證譚�".split(""); +for(j = 0; j != D[248].length; ++j) if(D[248][j].charCodeAt(0) !== 0xFFFD) { e[D[248][j]] = 63488 + j; d[63488 + j] = D[248][j];} +D[249] = "�������������������������������������������������������������������譎譏譆譙贈贊蹼蹲躇蹶蹬蹺蹴轔轎辭邊邋醱醮鏡鏑鏟鏃鏈鏜鏝鏖鏢鏍鏘鏤鏗鏨關隴難霪霧靡韜韻類願顛颼饅饉騖騙鬍鯨鯧鯖鯛鶉鵡鵲鵪鵬麒麗麓麴勸嚷嚶嚴嚼壤孀孃孽寶巉懸懺攘攔攙曦朧櫬瀾瀰瀲爐獻瓏癢癥礦礪礬�".split(""); +for(j = 0; j != D[249].length; ++j) if(D[249][j].charCodeAt(0) !== 0xFFFD) { e[D[249][j]] = 63744 + j; d[63744 + j] = D[249][j];} +D[250] = "�������������������������������������������������������������������礫竇競籌籃籍糯糰辮繽繼纂罌耀臚艦藻藹蘑藺蘆蘋蘇蘊蠔蠕襤覺觸議譬警譯譟譫贏贍躉躁躅躂醴釋鐘鐃鏽闡霰飄饒饑馨騫騰騷騵鰓鰍鹹麵黨鼯齟齣齡儷儸囁囀囂夔屬巍懼懾攝攜斕曩櫻欄櫺殲灌爛犧瓖瓔癩矓籐纏續羼�".split(""); +for(j = 0; j != D[250].length; ++j) if(D[250][j].charCodeAt(0) !== 0xFFFD) { e[D[250][j]] = 64000 + j; d[64000 + j] = D[250][j];} +D[251] = "�������������������������������������������������������������������蘗蘭蘚蠣蠢蠡蠟襪襬覽譴護譽贓躊躍躋轟辯醺鐮鐳鐵鐺鐸鐲鐫闢霸霹露響顧顥饗驅驃驀騾髏魔魑鰭鰥鶯鶴鷂鶸麝黯鼙齜齦齧儼儻囈囊囉孿巔巒彎懿攤權歡灑灘玀瓤疊癮癬禳籠籟聾聽臟襲襯觼讀贖贗躑躓轡酈鑄鑑鑒霽�".split(""); +for(j = 0; j != D[251].length; ++j) if(D[251][j].charCodeAt(0) !== 0xFFFD) { e[D[251][j]] = 64256 + j; d[64256 + j] = D[251][j];} +D[252] = "�������������������������������������������������������������������霾韃韁顫饕驕驍髒鬚鱉鰱鰾鰻鷓鷗鼴齬齪龔囌巖戀攣攫攪曬欐瓚竊籤籣籥纓纖纔臢蘸蘿蠱變邐邏鑣鑠鑤靨顯饜驚驛驗髓體髑鱔鱗鱖鷥麟黴囑壩攬灞癱癲矗罐羈蠶蠹衢讓讒讖艷贛釀鑪靂靈靄韆顰驟鬢魘鱟鷹鷺鹼鹽鼇齷�".split(""); +for(j = 0; j != D[252].length; ++j) if(D[252][j].charCodeAt(0) !== 0xFFFD) { e[D[252][j]] = 64512 + j; d[64512 + j] = D[252][j];} +D[253] = "�������������������������������������������������������������������齲廳欖灣籬籮蠻觀躡釁鑲鑰顱饞髖鬣黌灤矚讚鑷韉驢驥纜讜躪釅鑽鑾鑼鱷鱸黷豔鑿鸚爨驪鬱鸛鸞籲ソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワ�".split(""); +for(j = 0; j != D[253].length; ++j) if(D[253][j].charCodeAt(0) !== 0xFFFD) { e[D[253][j]] = 64768 + j; d[64768 + j] = D[253][j];} +D[254] = "�������������������������������������������������������������������ヰヱヲンヴヵヶАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдеёжзийклмнопрстуфхцчшщъыьэюя⇧↸↹��䅚ク刂�冈������������".split(""); +for(j = 0; j != D[254].length; ++j) if(D[254][j].charCodeAt(0) !== 0xFFFD) { e[D[254][j]] = 65024 + j; d[65024 + j] = D[254][j];} +return {"enc": e, "dec": d }; })(); +cptable[20001] = (function(){ var d = [], e = {}, D = [], j; +D[0] = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€����…†‡ˆ‰Š‹ŒŽ������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];} +D[129] = "������������������������������������������������ ,、。․•;:?!�������︰…‥﹐﹑‧﹒﹔﹕﹖﹗︱–︲—︳_︴﹏()︵︶{}︷������︸〔〕︹︺【】︻︼《》︽︾〈〉︿﹀「」﹁﹂『』﹃﹄﹙�����﹚﹛﹜﹝﹞‘’“”〝〞′‵#&*※§〃○●△▲◎☆★◇◆□■▽▼㊣℅‾ ̄��﹉﹊﹍﹎﹋﹌﹟﹠﹡+-×÷±√<>=≦≧≠∞≒≡﹢﹣﹤﹥﹦∼∩∪⊥∠∟⊿㏒㏑∫∮∵∴♀♂⊕⊙↑↓→←↖↗↙↘∥∣/\�﹨$¥〒¢£%@℃℉﹩﹪﹫㏕㎜㎝㎞㏎㎡㎎㎏㏄゜兙兛兞兝兡兣��".split(""); +for(j = 0; j != D[129].length; ++j) if(D[129][j].charCodeAt(0) !== 0xFFFD) { e[D[129][j]] = 33024 + j; d[33024 + j] = D[129][j];} +D[130] = "������������������������������������������������嗧瓩糎▁▂▃▄▅▆▇�������█▏▎▍▌▋▊▉┼┴┬┤├▔─│▕┌┐└┘╭╮╰╯═������╞╪╡◢◣◥◤╱╲╳¨˄ヽヾゝゞ�〄々〆〇ー[]✽ぁ�����あぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただち0123456789ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩ〡〢〣〤〥〦〧〨〩�卄�ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzΑΒΓΔΕΖΗΘΙΚ��".split(""); +for(j = 0; j != D[130].length; ++j) if(D[130][j].charCodeAt(0) !== 0xFFFD) { e[D[130][j]] = 33280 + j; d[33280 + j] = D[130][j];} +D[131] = "������������������������������������������������ΛΜΝΞΟΠΡΣΤΥ�������ΦΧΨΩαβγδεζηθικλμνξοπρστυφχ������ψωㄅㄆㄇㄈㄉㄊㄋㄌㄍㄎㄏㄐㄑㄒㄓㄔㄕㄖㄗㄘㄙㄚㄛㄜ�����ㄝㄞㄟㄠㄡㄢㄣㄤㄥㄦㄧㄨㄩ˙˟ˊˇˋぢっつづてでとどなにぬねのは①②③④⑤⑥⑦⑧⑨⑩⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽ⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをんァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼ��".split(""); +for(j = 0; j != D[131].length; ++j) if(D[131][j].charCodeAt(0) !== 0xFFFD) { e[D[131][j]] = 33536 + j; d[33536 + j] = D[131][j];} +D[132] = "��������������������������������������������������丶丿�亅�亠�����������冂冖冫����勹��匸��卩�厶�����夂����������宀������巛����幺广廴���彐彡�����������攴����无��������������������������������疒癶��������������������������������������������������������辵��������隶��������������������".split(""); +for(j = 0; j != D[132].length; ++j) if(D[132][j].charCodeAt(0) !== 0xFFFD) { e[D[132][j]] = 33792 + j; d[33792 + j] = D[132][j];} +D[145] = "���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������¬¦��㈱№℡������������������������".split(""); +for(j = 0; j != D[145].length; ++j) if(D[145][j].charCodeAt(0) !== 0xFFFD) { e[D[145][j]] = 37120 + j; d[37120 + j] = D[145][j];} +D[146] = "����������������������������������������������������������������������������������������������������������������������������������������������������������������一乙丁七乃九了二人儿入八几刀刁力匕十卜又三下丈上丫丸凡久么也乞于亡兀刃勺千叉口土士夕大女子孑孓寸小尢尸山川工己已巳巾干廾弋弓才丑丐不中丰丹之尹予云井互五亢仁什仃仆仇仍今介仄元允內六兮公冗凶��".split(""); +for(j = 0; j != D[146].length; ++j) if(D[146][j].charCodeAt(0) !== 0xFFFD) { e[D[146][j]] = 37376 + j; d[37376 + j] = D[146][j];} +D[147] = "������������������������������������������������分切刈勻勾勿化匹午升�������卅卞厄友及反壬天夫太夭孔少尤尺屯巴幻廿弔引心戈戶手扎������支文斗斤方日曰月木欠止歹毋比毛氏水火爪父爻片牙牛犬王�����丙世丕且丘主乍乏乎以付仔仕他仗代令仙仞充兄冉冊冬凹出凸刊加功包匆北匝仟半卉卡占卯卮去可古右召叮叩叨叼司叵叫另只史叱台句叭叻四囚外央失奴奶孕它尼巨巧左市布平幼弁弘弗必戊打扔扒扑斥旦朮本未末札正母民氐永汁汀氾犯玄玉瓜瓦甘生用甩田由甲申疋白皮皿目矛矢石示禾穴��".split(""); +for(j = 0; j != D[147].length; ++j) if(D[147][j].charCodeAt(0) !== 0xFFFD) { e[D[147][j]] = 37632 + j; d[37632 + j] = D[147][j];} +D[148] = "������������������������������������������������立丞丟乒乓乩亙交亦亥�������仿伉伙伊伕伍伐休伏仲件任仰仳份企伋光兇兆先全共再冰列������刑划刎刖劣匈匡匠印危吉吏同吊吐吁吋各向名合吃后吆吒因�����回囝圳地在圭圬圯圩夙多夷夸妄奸妃好她如妁字存宇守宅安寺尖屹州帆并年式弛忙忖戎戌戍成扣扛托收早旨旬旭曲曳有朽朴朱朵次此死氖汝汗汙江池汐汕污汛汍汎灰牟牝百竹米糸缶羊羽老考而耒耳聿肉肋肌臣自至臼舌舛舟艮色艾虫血行衣西阡串亨位住佇佗佞伴佛何估佐佑伽伺伸佃佔似但��".split(""); +for(j = 0; j != D[148].length; ++j) if(D[148][j].charCodeAt(0) !== 0xFFFD) { e[D[148][j]] = 37888 + j; d[37888 + j] = D[148][j];} +D[149] = "������������������������������������������������佣作你伯低伶余佝佈佚�������兌克免兵冶冷別判利刪刨劫助努劬匣即卵吝吭吞吾否呎吧呆������呃吳呈呂君吩告吹吻吸吮吵吶吠吼呀吱含吟听囪困囤囫坊坑�����址坍均坎圾坐坏圻壯夾妝妒妨妞妣妙妖妍妤妓妊妥孝孜孚孛完宋宏尬局屁尿尾岐岑岔岌巫希序庇床廷弄弟彤形彷役忘忌志忍忱快忸忪戒我抄抗抖技扶抉扭把扼找批扳抒扯折扮投抓抑抆改攻攸旱更束李杏材村杜杖杞杉杆杠杓杗步每求汞沙沁沈沉沅沛汪決沐汰沌汨沖沒汽沃汲汾汴沆汶沍沔沘��".split(""); +for(j = 0; j != D[149].length; ++j) if(D[149][j].charCodeAt(0) !== 0xFFFD) { e[D[149][j]] = 38144 + j; d[38144 + j] = D[149][j];} +D[150] = "������������������������������������������������沂灶灼災灸牢牡牠狄狂�������玖甬甫男甸皂盯矣私秀禿究系罕肖肓肝肘肛肚育良芒芋芍見������角言谷豆豕貝赤走足身車辛辰迂迆迅迄巡邑邢邪邦那酉釆里�����防阮阱阪阬並乖乳事些亞享京佯依侍佳使佬供例來侃佰併侈佩佻侖佾侏侑佺兔兒兕兩具其典冽函刻券刷刺到刮制剁劾劻卒協卓卑卦卷卸卹取叔受味呵咖呸咕咀呻呷咄咒咆呼咐呱呶和咚呢周咋命咎固垃坷坪坩坡坦坤坼夜奉奇奈奄奔妾妻委妹妮姑姆姐姍始姓姊妯妳姒姅孟孤季宗定官宜宙宛尚��".split(""); +for(j = 0; j != D[150].length; ++j) if(D[150][j].charCodeAt(0) !== 0xFFFD) { e[D[150][j]] = 38400 + j; d[38400 + j] = D[150][j];} +D[151] = "������������������������������������������������屈居屆岷岡岸岩岫岱岳�������帘帚帖帕帛帑幸庚店府底庖延弦弧弩往征彿彼忝忠忽念忿怏������怔怯怵怖怪怕怡性怩怫怛或戕房戾所承拉拌拄抿拂抹拒招披�����拓拔拋拈抨抽押拐拙拇拍抵拚抱拘拖拗拆抬拎放斧於旺昔易昌昆昂明昀昏昕昊昇服朋杭枋枕東果杳杷枇枝林杯杰板枉松析杵枚枓杼杪杲欣武歧歿氓氛泣注泳沱泌泥河沽沾沼波沫法泓沸泄油況沮泗泅泱沿治泡泛泊沬泯泜泖泠炕炎炒炊炙爬爭爸版牧物狀狎狙狗狐玩玨玟玫玥甽疝疙疚的盂盲直��".split(""); +for(j = 0; j != D[151].length; ++j) if(D[151][j].charCodeAt(0) !== 0xFFFD) { e[D[151][j]] = 38656 + j; d[38656 + j] = D[151][j];} +D[152] = "������������������������������������������������知矽社祀祁秉秈空穹竺�������糾罔羌羋者肺肥肢肱股肫肩肴肪肯臥臾舍芳芝芙芭芽芟芹花������芬芥芯芸芣芰芾芷虎虱初表軋迎返近邵邸邱邶采金長門阜陀�����阿阻附陂隹雨青非亟亭亮信侵侯便俠俑俏保促侶俘俟俊俗侮俐俄係俚俎俞侷兗冒冑冠剎剃削前剌剋則勇勉勃勁匍南卻厚叛咬哀咨哎哉咸咦咳哇哂咽咪品哄哈咯咫咱咻咩咧咿囿垂型垠垣垢城垮垓奕契奏奎奐姜姘姿姣姨娃姥姪姚姦威姻孩宣宦室客宥封屎屏屍屋峙峒巷帝帥帟幽庠度建弈弭彥很��".split(""); +for(j = 0; j != D[152].length; ++j) if(D[152][j].charCodeAt(0) !== 0xFFFD) { e[D[152][j]] = 38912 + j; d[38912 + j] = D[152][j];} +D[153] = "������������������������������������������������待徊律徇後徉怒思怠急�������怎怨恍恰恨恢恆恃恬恫恪恤扁拜挖按拼拭持拮拽指拱拷拯括������拾拴挑挂政故斫施既春昭映昧是星昨昱昤曷柿染柱柔某柬架�����枯柵柩柯柄柑枴柚查枸柏柞柳枰柙柢柝柒歪殃殆段毒毗氟泉洋洲洪流津洌洱洞洗活洽派洶洛泵洹洧洸洩洮洵洎洫炫為炳炬炯炭炸炮炤爰牲牯牴狩狠狡玷珊玻玲珍珀玳甚甭畏界畎畋疫疤疥疢疣癸皆皇皈盈盆盃盅省盹相眉看盾盼眇矜砂研砌砍祆祉祈祇禹禺科秒秋穿突竿竽籽紂紅紀紉紇約紆缸��".split(""); +for(j = 0; j != D[153].length; ++j) if(D[153][j].charCodeAt(0) !== 0xFFFD) { e[D[153][j]] = 39168 + j; d[39168 + j] = D[153][j];} +D[154] = "������������������������������������������������美羿耐耍耑耶胖胥胚胃�������胄背胡胛胎胞胤胝致舢苧范茅苣苛苦茄若茂茉苒苗英茁苜苔������苑苞苓苟苯茆虐虹虻虺衍衫要觔計訂訃貞負赴赳趴軍軌述迦�����迢迪迥迭迫迤迨郊郎郁郃酋酊重閂限陋陌降面革韋韭音頁風飛食首香乘亳倌倍倣俯倦倥俸倩倖倆值借倚倒們俺倀倔倨俱倡個候倘俳修倭倪俾倫倉兼冤冥冢凍凌准凋剖剜剔剛剝匪卿原厝叟哨唐唁唷哼哥哲唆哺唔哩哭員唉哮哪哦唧唇哽唏圃圄埂埔埋埃堉夏套奘奚娑娘娜娟娛娓姬娠娣娩娥娌娉��".split(""); +for(j = 0; j != D[154].length; ++j) if(D[154][j].charCodeAt(0) !== 0xFFFD) { e[D[154][j]] = 39424 + j; d[39424 + j] = D[154][j];} +D[155] = "������������������������������������������������孫屘宰害家宴宮宵容宸�������射屑展屐峭峽峻峪峨峰島崁峴差席師庫庭座弱徒徑徐恙恣恥������恐恕恭恩息悄悟悚悍悔悌悅悖扇拳挈拿捎挾振捕捂捆捏捉挺�����捐挽挪挫挨捍捌效敉料旁旅時晉晏晃晒晌晅晁書朔朕朗校核案框桓根桂桔栩梳栗桌桑栽柴桐桀格桃株桅栓栘桁殊殉殷氣氧氨氦氤泰浪涕消涇浦浸海浙涓浬涉浮浚浴浩涌涊浹涅浥涔烊烘烤烙烈烏爹特狼狹狽狸狷玆班琉珮珠珪珞畔畝畜畚留疾病症疲疳疽疼疹痂疸皋皰益盍盎眩真眠眨矩砰砧砸��".split(""); +for(j = 0; j != D[155].length; ++j) if(D[155][j].charCodeAt(0) !== 0xFFFD) { e[D[155][j]] = 39680 + j; d[39680 + j] = D[155][j];} +D[156] = "������������������������������������������������砝破砷砥砭砠砟砲祕祐�������祠祟祖神祝祗祚秤秣秧租秦秩秘窄窈站笆笑粉紡紗紋紊素索������純紐紕級紜納紙紛缺罟羔翅翁耆耄耘耕耙耗耽耿胱脂胰脅胭�����胴脆胸胳脈能脊胼胯臭臬舀舐航舫舨般芻茫荒荔荊茸荐草茵茴荏茲茹茶茗荀茱茨荃虔蚊蚪蚓蚤蚩蚌蚣蚜衰衷袁袂衽衹記訐討訌訕訊託訓訖訏訑豈豺豹財貢起躬軒軔軏辱送逆迷退迺迴逃追逅迸邕郡郝郢酒配酌釘針釗釜釙閃院陣陡陛陝除陘陞隻飢馬骨高鬥鬲鬼乾偺偽停假偃偌做偉健偶偎偕偵��".split(""); +for(j = 0; j != D[156].length; ++j) if(D[156][j].charCodeAt(0) !== 0xFFFD) { e[D[156][j]] = 39936 + j; d[39936 + j] = D[156][j];} +D[157] = "������������������������������������������������側偷偏倏偯偭兜冕凰剪�������副勒務勘動匐匏匙匿區匾參曼商啪啦啄啞啡啃啊唱啖問啕唯������啤唸售啜唬啣唳啁啗圈國圉域堅堊堆埠埤基堂堵執培夠奢娶�����婁婉婦婪婀娼婢婚婆婊孰寇寅寄寂宿密尉專將屠屜屝崇崆崎崛崖崢崑崩崔崙崤崧崗巢常帶帳帷康庸庶庵庾張強彗彬彩彫得徙從徘御徠徜恿患悉悠您惋悴惦悽情悻悵惜悼惘惕惆惟悸惚惇戚戛扈掠控捲掖探接捷捧掘措捱掩掉掃掛捫推掄授掙採掬排掏掀捻捩捨捺敝敖救教敗啟敏敘敕敔斜斛斬族��".split(""); +for(j = 0; j != D[157].length; ++j) if(D[157][j].charCodeAt(0) !== 0xFFFD) { e[D[157][j]] = 40192 + j; d[40192 + j] = D[157][j];} +D[158] = "������������������������������������������������旋旌旎晝晚晤晨晦晞曹�������勗望梁梯梢梓梵桿桶梱梧梗械梃棄梭梆梅梔條梨梟梡梂欲殺������毫毬氫涎涼淳淙液淡淌淤添淺清淇淋涯淑涮淞淹涸混淵淅淒�����渚涵淚淫淘淪深淮淨淆淄涪淬涿淦烹焉焊烽烯爽牽犁猜猛猖猓猙率琅琊球理現琍瓠瓶瓷甜產略畦畢異疏痔痕疵痊痍皎盔盒盛眷眾眼眶眸眺硫硃硎祥票祭移窒窕笠笨笛第符笙笞笮粒粗粕絆絃統紮紹紼絀細紳組累終紲紱缽羞羚翌翎習耜聊聆脯脖脣脫脩脰脤舂舵舷舶船莎莞莘荸莢莖莽莫莒莊莓��".split(""); +for(j = 0; j != D[158].length; ++j) if(D[158][j].charCodeAt(0) !== 0xFFFD) { e[D[158][j]] = 40448 + j; d[40448 + j] = D[158][j];} +D[159] = "������������������������������������������������莉莠荷荻荼莆莧處彪蛇�������蛀蚶蛄蚵蛆蛋蚱蚯蛉術袞袈被袒袖袍袋覓規訪訝訣訥許設訟������訛訢豉豚販責貫貨貪貧赧赦趾趺軛軟這逍通逗連速逝逐逕逞�����造透逢逖逛途部郭都酗野釵釦釣釧釭釩閉陪陵陳陸陰陴陶陷陬雀雪雩章竟頂頃魚鳥鹵鹿麥麻傢傍傅備傑傀傖傘傚最凱割剴創剩勞勝勛博厥啻喀喧啼喊喝喘喂喜喪喔喇喋喃喳單喟唾喲喚喻喬喱啾喉喫喙圍堯堪場堤堰報堡堝堠壹壺奠婷媚婿媒媛媧孳孱寒富寓寐尊尋就嵌嵐崴嵇巽幅帽幀幃幾廊��".split(""); +for(j = 0; j != D[159].length; ++j) if(D[159][j].charCodeAt(0) !== 0xFFFD) { e[D[159][j]] = 40704 + j; d[40704 + j] = D[159][j];} +D[160] = "������������������������������������������������廁廂廄弼彭復循徨惑惡�������悲悶惠愜愣惺愕惰惻惴慨惱愎惶愉愀愒戟扉掣掌描揀揩揉揆������揍插揣提握揖揭揮捶援揪換摒揚揹敞敦敢散斑斐斯普晰晴晶�����景暑智晾晷曾替期朝棺棕棠棘棗椅棟棵森棧棹棒棲棣棋棍植椒椎棉棚楮棻款欺欽殘殖殼毯氮氯氬港游湔渡渲湧湊渠渥渣減湛湘渤湖湮渭渦湯渴湍渺測湃渝渾滋溉渙湎湣湄湲湩湟焙焚焦焰無然煮焜牌犄犀猶猥猴猩琺琪琳琢琥琵琶琴琯琛琦琨甥甦畫番痢痛痣痙痘痞痠登發皖皓皴盜睏短硝硬硯��".split(""); +for(j = 0; j != D[160].length; ++j) if(D[160][j].charCodeAt(0) !== 0xFFFD) { e[D[160][j]] = 40960 + j; d[40960 + j] = D[160][j];} +D[161] = "������������������������������������������������稍稈程稅稀窘窗窖童竣�������等策筆筐筒答筍筋筏筑粟粥絞結絨絕紫絮絲絡給絢絰絳善翔������翕耋聒肅腕腔腋腑腎脹腆脾腌腓腴舒舜菩萃菸萍菠菅萋菁華�����菱菴著萊菰萌菌菽菲菊萸萎萄菜萇菔菟虛蛟蛙蛭蛔蛛蛤蛐蛞街裁裂袱覃視註詠評詞証詁詔詛詐詆訴診訶詖象貂貯貼貳貽賁費賀貴買貶貿貸越超趁跎距跋跚跑跌跛跆軻軸軼辜逮逵週逸進逶鄂郵鄉郾酣酥量鈔鈕鈣鈉鈞鈍鈐鈇鈑閔閏開閑間閒閎隊階隋陽隅隆隍陲隄雁雅雄集雇雯雲韌項順須飧飪��".split(""); +for(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];} +D[162] = "������������������������������������������������飯飩飲飭馮馭黃黍黑亂�������傭債傲傳僅傾催傷傻傯僇剿剷剽募勦勤勢勣匯嗟嗨嗓嗦嗎嗜������嗇嗑嗣嗤嗯嗚嗡嗅嗆嗥嗉園圓塞塑塘塗塚塔填塌塭塊塢塒塋�����奧嫁嫉嫌媾媽媼媳嫂媲嵩嵯幌幹廉廈弒彙徬微愚意慈感想愛惹愁愈慎慌慄慍愾愴愧愍愆愷戡戢搓搾搞搪搭搽搬搏搜搔損搶搖搗搆敬斟新暗暉暇暈暖暄暘暍會榔業楚楷楠楔極椰概楊楨楫楞楓楹榆楝楣楛歇歲毀殿毓毽溢溯滓溶滂源溝滇滅溥溘溼溺溫滑準溜滄滔溪溧溴煎煙煩煤煉照煜煬煦煌煥��".split(""); +for(j = 0; j != D[162].length; ++j) if(D[162][j].charCodeAt(0) !== 0xFFFD) { e[D[162][j]] = 41472 + j; d[41472 + j] = D[162][j];} +D[163] = "������������������������������������������������煞煆煨煖爺牒猷獅猿猾�������瑯瑚瑕瑟瑞瑁琿瑙瑛瑜當畸瘀痰瘁痲痱痺痿痴痳盞盟睛睫睦������睞督睹睪睬睜睥睨睢矮碎碰碗碘碌碉硼碑碓硿祺祿禁萬禽稜�����稚稠稔稟稞窟窠筷節筠筮筧粱粳粵經絹綑綁綏絛置罩罪署義羨群聖聘肆肄腱腰腸腥腮腳腫腹腺腦舅艇蒂葷落萱葵葦葫葉葬葛萼萵葡董葩葭葆虞虜號蛹蜓蜈蜇蜀蛾蛻蜂蜃蜆蜊衙裟裔裙補裘裝裡裊裕裒覜解詫該詳試詩詰誇詼詣誠話誅詭詢詮詬詹詻訾詨豢貊貉賊資賈賄貲賃賂賅跡跟跨路跳跺跪��".split(""); +for(j = 0; j != D[163].length; ++j) if(D[163][j].charCodeAt(0) !== 0xFFFD) { e[D[163][j]] = 41728 + j; d[41728 + j] = D[163][j];} +D[164] = "������������������������������������������������跤跦躲較載軾輊辟農運�������遊道遂達逼違遐遇遏過遍遑逾遁鄒鄗酬酪酩釉鈷鉗鈸鈽鉀鈾������鉛鉋鉤鉑鈴鉉鉍鉅鈹鈿鉚閘隘隔隕雍雋雉雊雷電雹零靖靴靶�����預頑頓頊頒頌飼飴飽飾馳馱馴髡鳩麂鼎鼓鼠僧僮僥僖僭僚僕像僑僱僎僩兢凳劃劂匱厭嗾嘀嘛嘗嗽嘔嘆嘉嘍嘎嗷嘖嘟嘈嘐嗶團圖塵塾境墓墊塹墅塽壽夥夢夤奪奩嫡嫦嫩嫗嫖嫘嫣孵寞寧寡寥實寨寢寤察對屢嶄嶇幛幣幕幗幔廓廖弊彆彰徹慇愿態慷慢慣慟慚慘慵截撇摘摔撤摸摟摺摑摧搴摭摻敲斡��".split(""); +for(j = 0; j != D[164].length; ++j) if(D[164][j].charCodeAt(0) !== 0xFFFD) { e[D[164][j]] = 41984 + j; d[41984 + j] = D[164][j];} +D[165] = "������������������������������������������������旗旖暢暨暝榜榨榕槁榮�������槓構榛榷榻榫榴槐槍榭槌榦槃榣歉歌氳漳演滾漓滴漩漾漠漬������漏漂漢滿滯漆漱漸漲漣漕漫漯澈漪滬漁滲滌滷熔熙煽熊熄熒�����爾犒犖獄獐瑤瑣瑪瑰瑭甄疑瘧瘍瘋瘉瘓盡監瞄睽睿睡磁碟碧碳碩碣禎福禍種稱窪窩竭端管箕箋筵算箝箔箏箸箇箄粹粽精綻綰綜綽綾綠緊綴網綱綺綢綿綵綸維緒緇綬罰翠翡翟聞聚肇腐膀膏膈膊腿膂臧臺與舔舞艋蓉蒿蓆蓄蒙蒞蒲蒜蓋蒸蓀蓓蒐蒼蓑蓊蜿蜜蜻蜢蜥蜴蜘蝕蜷蜩裳褂裴裹裸製裨褚裯��".split(""); +for(j = 0; j != D[165].length; ++j) if(D[165][j].charCodeAt(0) !== 0xFFFD) { e[D[165][j]] = 42240 + j; d[42240 + j] = D[165][j];} +D[166] = "������������������������������������������������誦誌語誣認誡誓誤說誥�������誨誘誑誚誧豪貍貌賓賑賒赫趙趕跼輔輒輕輓辣遠遘遜遣遙遞������遢遝遛鄙鄘鄞酵酸酷酴鉸銬銀銅銘銖鉻銓銜銨鉼銑閡閨閩閣�����閥閤隙障際雌雒需靼鞅韶頗領颯颱餃餅餌餉駁骯骰髦魁魂鳴鳶鳳麼鼻齊億儀僻僵價儂儈儉儅凜劇劈劉劍劊勰厲嘮嘻嘹嘲嘿嘴嘩噓噎噗噴嘶嘯嘰墀墟增墳墜墮墩墦奭嬉嫻嬋嫵嬌嬈寮寬審寫層履嶝嶔幢幟幡廢廚廟廝廣廠彈影德徵慶慧慮慝慕憂慼慰慫慾憧憐憫憎憬憚憤憔憮戮摩摯摹撞撲撈撐撰��".split(""); +for(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];} +D[167] = "������������������������������������������������撥撓撕撩撒撮播撫撚撬�������撙撢撳敵敷數暮暫暴暱樣樟槨樁樞標槽模樓樊槳樂樅槭樑歐������歎殤毅毆漿潼澄潑潦潔澆潭潛潸潮澎潺潰潤澗潘滕潯潠潟熟�����熬熱熨牖犛獎獗瑩璋璃瑾璀畿瘠瘩瘟瘤瘦瘡瘢皚皺盤瞎瞇瞌瞑瞋磋磅確磊碾磕碼磐稿稼穀稽稷稻窯窮箭箱範箴篆篇篁箠篌糊締練緯緻緘緬緝編緣線緞緩綞緙緲緹罵罷羯翩耦膛膜膝膠膚膘蔗蔽蔚蓮蔬蔭蔓蔑蔣蔡蔔蓬蔥蓿蔆螂蝴蝶蝠蝦蝸蝨蝙蝗蝌蝓衛衝褐複褒褓褕褊誼諒談諄誕請諸課諉諂調��".split(""); +for(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];} +D[168] = "������������������������������������������������誰論諍誶誹諛豌豎豬賠�������賞賦賤賬賭賢賣賜質賡赭趟趣踫踐踝踢踏踩踟踡踞躺輝輛輟������輩輦輪輜輞輥適遮遨遭遷鄰鄭鄧鄱醇醉醋醃鋅銻銷鋪鋤鋁銳�����銼鋒鋇鋰銲閭閱霄霆震霉靠鞍鞋鞏頡頫頜颳養餓餒餘駝駐駟駛駑駕駒駙骷髮髯鬧魅魄魷魯鴆鴉鴃麩麾黎墨齒儒儘儔儐儕冀冪凝劑劓勳噙噫噹噩噤噸噪器噥噱噯噬噢噶壁墾壇壅奮嬝嬴學寰導彊憲憑憩憊懍憶憾懊懈戰擅擁擋撻撼據擄擇擂操撿擒擔撾整曆曉暹曄曇暸樽樸樺橙橫橘樹橄橢橡橋橇��".split(""); +for(j = 0; j != D[168].length; ++j) if(D[168][j].charCodeAt(0) !== 0xFFFD) { e[D[168][j]] = 43008 + j; d[43008 + j] = D[168][j];} +D[169] = "������������������������������������������������樵機橈歙歷氅濂澱澡濃�������澤濁澧澳激澹澶澦澠澴熾燉燐燒燈燕熹燎燙燜燃燄獨璜璣璘������璟璞瓢甌甍瘴瘸瘺盧盥瞠瞞瞟瞥磨磚磬磧禦積穎穆穌穋窺篙�����簑築篤篛篡篩篦糕糖縊縑縈縛縣縞縝縉縐罹羲翰翱翮耨膳膩膨臻興艘艙蕊蕙蕈蕨蕩蕃蕉蕭蕪蕞螃螟螞螢融衡褪褲褥褫褡親覦諦諺諫諱謀諜諧諮諾謁謂諷諭諳諶諼豫豭貓賴蹄踱踴蹂踹踵輻輯輸輳辨辦遵遴選遲遼遺鄴醒錠錶鋸錳錯錢鋼錫錄錚錐錦錡錕錮錙閻隧隨險雕霎霑霖霍霓霏靛靜靦鞘頰��".split(""); +for(j = 0; j != D[169].length; ++j) if(D[169][j].charCodeAt(0) !== 0xFFFD) { e[D[169][j]] = 43264 + j; d[43264 + j] = D[169][j];} +D[170] = "������������������������������������������������頸頻頷頭頹頤餐館餞餛�������餡餚駭駢駱骸骼髻髭鬨鮑鴕鴣鴦鴨鴒鴛默黔龍龜優償儡儲勵������嚎嚀嚐嚅嚇嚏壕壓壑壎嬰嬪嬤孺尷屨嶼嶺嶽嶸幫彌徽應懂懇�����懦懋戲戴擎擊擘擠擰擦擬擱擢擭斂斃曙曖檀檔檄檢檜櫛檣橾檗檐檠歜殮毚氈濘濱濟濠濛濤濫濯澀濬濡濩濕濮濰燧營燮燦燥燭燬燴燠爵牆獰獲璩環璦璨癆療癌盪瞳瞪瞰瞬瞧瞭矯磷磺磴磯礁禧禪穗窿簇簍篾篷簌篠糠糜糞糢糟糙糝縮績繆縷縲繃縫總縱繅繁縴縹繈縵縿縯罄翳翼聱聲聰聯聳臆臃膺��".split(""); +for(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];} +D[171] = "������������������������������������������������臂臀膿膽臉膾臨舉艱薪�������薄蕾薜薑薔薯薛薇薨薊薦虧蟀蟑螳蟒蟆螫螻螺蟈蟋褻褶襄褸������褽覬謎謗謙講謊謠謝謄謐豁谿豳賺賽購賸賻趨蹉蹋蹈蹊轄輾�����轂轅輿避遽還邁邂邀鄹醣醞醜鍍鎂錨鍵鍊鍥鍋錘鍾鍬鍛鍰鍚鍔闊闋闌闈闆隱隸雖霜霞鞠韓顆颶餵騁駿鮮鮫鮪鮭鴻鴿麋黏點黜黝黛鼾齋叢嚕嚮壙壘嬸彝懣戳擴擲擾攆擺擻擷斷曜朦檳檬櫃檻檸櫂檮檯歟歸殯瀉瀋濾瀆濺瀑瀏燻燼燾燸獷獵璧璿甕癖癘癒瞽瞿瞻瞼礎禮穡穢穠竄竅簫簧簪簞簣簡糧織��".split(""); +for(j = 0; j != D[171].length; ++j) if(D[171][j].charCodeAt(0) !== 0xFFFD) { e[D[171][j]] = 43776 + j; d[43776 + j] = D[171][j];} +D[172] = "������������������������������������������������繕繞繚繡繒繙罈翹翻職�������聶臍臏舊藏薩藍藐藉薰薺薹蟯蟬蟲蟠覆覲觴謨謹謬謫豐贅蹙������蹣蹦蹤蹟蹕軀轉轍邇邃邈醫醬釐鎔鎊鎖鎢鎳鎮鎬鎰鎘鎚鎗闔�����闖闐闕離雜雙雛雞霤鞣鞦鞭韹額顏題顎顓颺餾餿餽餮馥騎髁鬃鬆魏魎魍鯊鯉鯽鯈鯀鵑鵝鵠黠鼕鼬儳嚥嚨壞壟壢寵龐廬懲懷懶懵攀攏曠曝櫥櫝櫚櫓瀛瀟瀨瀚瀝瀕瀘爆爍牘犢獸獺璽瓊瓣疇疆癟癡矇礙禱穫穩簾簿簸簽簷籀繫繭繹繩繪繳羅羶羹羸臘藩藝藪藕藤藥藷蟻蠅蠍蟹蟾襠襟襖襞譁譜識證譚��".split(""); +for(j = 0; j != D[172].length; ++j) if(D[172][j].charCodeAt(0) !== 0xFFFD) { e[D[172][j]] = 44032 + j; d[44032 + j] = D[172][j];} +D[173] = "������������������������������������������������譎譏譆譙贈贊蹼蹲躇蹶�������蹬蹺蹴轔轎辭邊邋醱醮鏡鏑鏟鏃鏈鏜鏝鏖鏢鏍鏘鏤鏗鏨關隴������難霪霧靡韜韻類願顛颼饅饉騖騙鬍鯨鯧鯖鯛鶉鵡鵲鵪鵬麒麗�����麓麴勸嚷嚶嚴嚼壤孀孃孽寶巉懸懺攘攔攙曦朧櫬瀾瀰瀲爐獻瓏癢癥礦礪礬礫竇競籌籃籍糯糰辮繽繼纂罌耀臚艦藻藹蘑藺蘆蘋蘇蘊蠔蠕襤覺觸議譬警譯譟譫贏贍躉躁躅躂醴釋鐘鐃鏽闡霰飄饒饑馨騫騰騷騵鰓鰍鹹麵黨鼯齟齣齡儷儸囁囀囂夔屬巍懼懾攝攜斕曩櫻欄櫺殲灌爛犧瓖瓔癩矓籐纏續羼��".split(""); +for(j = 0; j != D[173].length; ++j) if(D[173][j].charCodeAt(0) !== 0xFFFD) { e[D[173][j]] = 44288 + j; d[44288 + j] = D[173][j];} +D[174] = "������������������������������������������������蘗蘭蘚蠣蠢蠡蠟襪襬覽�������譴護譽贓躊躍躋轟辯醺鐮鐳鐵鐺鐸鐲鐫闢霸霹露響顧顥饗驅������驃驀騾髏魔魑鰭鰥鶯鶴鷂鶸麝黯鼙齜齦齧儼儻囈囊囉孿巔巒�����彎懿攤權歡灑灘玀瓤疊癮癬禳籠籟聾聽臟襲襯觼讀贖贗躑躓轡酈鑄鑑鑒霽霾韃韁顫饕驕驍髒鬚鱉鰱鰾鰻鷓鷗鼴齬齪龔囌巖戀攣攫攪曬欐瓚竊籤籣籥纓纖纔臢蘸蘿蠱變邐邏鑣鑠鑤靨顯饜驚驛驗髓體髑鱔鱗鱖鷥麟黴囑壩攬灞癱癲矗罐羈蠶蠹衢讓讒讖艷贛釀鑪靂靈靄韆顰驟鬢魘鱟鷹鷺鹼鹽鼇齷��".split(""); +for(j = 0; j != D[174].length; ++j) if(D[174][j].charCodeAt(0) !== 0xFFFD) { e[D[174][j]] = 44544 + j; d[44544 + j] = D[174][j];} +D[175] = "������������������������������������������������齲廳欖灣籬籮蠻觀躡釁�������鑲鑰顱饞髖鬣黌灤矚讚鑷韉驢驥纜讜躪釅鑽鑾鑼鱷鱸黷豔鑿������鸚爨驪鬱鸛鸞籲ソゾタダチヂッツヅテデトドナニヌネノハ�����バパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдеёжзийклмнопрстуфхцчшщъыьэюя⇧↸↹��䅚ク刂�冈�������������".split(""); +for(j = 0; j != D[175].length; ++j) if(D[175][j].charCodeAt(0) !== 0xFFFD) { e[D[175][j]] = 44800 + j; d[44800 + j] = D[175][j];} +D[176] = "������������������������������������������������乂乜凵匚厂万丌乇亍囗�������屮彳丏冇与丮亓仂仉仈冘勼卬厹圠夃夬尐巿旡殳毌气爿丱丼������仨仜仩仡仝仚刌刉匜卌圢圣夗夯宁宄尒尻屴屳帄庀庂忉戉扐�����氕氶汃氿氻犮犰玊禸肊阞伎优伬仵伔仱伀价伈伝伂伅伢伓伄仴伒冱刓刐劦匢匟卍厊吇囡囟圮圪圴夼妀奼妅奻奾奷奿孖尕尥屼屺屻屾巟幵庄异弚彴忕忔忏扜扞扤扡扦扢扙扠扚扥攷旯旮朾朹朸朻机朿朼朳氘汆汒汜汏汊汔汋汌灱牞犴犵玎甪癿穵网艸艼芀艽艿虍襾邙邗邘邛邔阢阤阠阣佖伻佢佉体��".split(""); +for(j = 0; j != D[176].length; ++j) if(D[176][j].charCodeAt(0) !== 0xFFFD) { e[D[176][j]] = 45056 + j; d[45056 + j] = D[176][j];} +D[177] = "������������������������������������������������佤伾佧佒佟佁佘伭伳伿�������佡冏冹刜刞刡劭劮匉卣卲厎厏吰吷吪呔呅吙吜吥吘吽呏呁吨������吤呇囮囧囥坁坅坌坉坋坒夆奀妦妘妠妗妎妢妐妏妧妡宎宒尨�����尪岍岏岈岋岉岒岊岆岓岕巠帊帎庋庉庌庈庍弅弝彸彶忒忑忐忭忨忮忳忡忤忣忺忯忷忻怀忴戺抃抌抎抏抔抇扱扻扺扰抁抈扷扽扲扴旰旴旳旲旵杅杇杙杕杌杈杝杍杚杋毐氙氚汸汧汫沄沋沏汱汯汩沚汭沇沕沜汦汳汥汻沎灴灺牣犿犽狃狆狁犺狅玕玗玓玔玒町甹疔疕皁礽耴肕肙肐肒肜芐芏芅芎芑芓��".split(""); +for(j = 0; j != D[177].length; ++j) if(D[177][j].charCodeAt(0) !== 0xFFFD) { e[D[177][j]] = 45312 + j; d[45312 + j] = D[177][j];} +D[178] = "������������������������������������������������芊芃芄豸迉辿邟邡邥邞�������邧邠阰阨阯阭丳侘佼侅佽侀侇佶佴侉侄佷佌侗佪侚佹侁佸侐������侜侔侞侒侂侕佫佮冞冼冾刵刲刳剆刱劼匊匋匼厒厔咇呿咁咑�����咂咈呫呺呾呥呬呴呦咍呯呡呠咘呣呧呤囷囹坯坲坭坫坱坰坶垀坵坻坳坴坢坨坽夌奅妵妺姏姎妲姌姁妶妼姃姖妱妽姀姈妴姇孢孥宓宕屄屇岮岤岠岵岯岨岬岟岣岭岢岪岧岝岥岶岰岦帗帔帙弨弢弣弤彔徂彾彽忞忥怭怦怙怲怋怴怊怗怳怚怞怬怢怍怐怮怓怑怌怉怜戔戽抭抴拑抾抪抶拊抮抳抯抻抩抰��".split(""); +for(j = 0; j != D[178].length; ++j) if(D[178][j].charCodeAt(0) !== 0xFFFD) { e[D[178][j]] = 45568 + j; d[45568 + j] = D[178][j];} +D[179] = "������������������������������������������������抸攽斨斻昉旼昄昒昈旻�������昃昋昍昅旽昑昐曶朊枅杬枎枒杶杻枘枆构杴枍枌杺枟枑枙枃������杽极杸杹枔欥殀歾毞氝沓泬泫泮泙沶泔沭泧沷泐泂沺泃泆泭�����泲泒泝沴沊沝沀泞泀洰泍泇沰泹泏泩泑炔炘炅炓炆炄炑炖炂炚炃牪狖狋狘狉狜狒狔狚狌狑玤玡玭玦玢玠玬玝瓝瓨甿畀甾疌疘皯盳盱盰盵矸矼矹矻矺矷祂礿秅穸穻竻籵糽耵肏肮肣肸肵肭舠芠苀芫芚芘芛芵芧芮芼芞芺芴芨芡芩苂芤苃芶芢虰虯虭虮豖迒迋迓迍迖迕迗邲邴邯邳邰阹阽阼阺陃俍俅��".split(""); +for(j = 0; j != D[179].length; ++j) if(D[179][j].charCodeAt(0) !== 0xFFFD) { e[D[179][j]] = 45824 + j; d[45824 + j] = D[179][j];} +D[180] = "������������������������������������������������俓侲俉俋俁俔俜俙侻侳�������俛俇俖侺俀侹俬剄剉勀勂匽卼厗厖厙厘咺咡咭咥哏哃茍咷咮������哖咶哅哆咠呰咼咢咾呲哞咰垵垞垟垤垌垗垝垛垔垘垏垙垥垚�����垕壴复奓姡姞姮娀姱姝姺姽姼姶姤姲姷姛姩姳姵姠姾姴姭宨屌峐峘峌峗峋峛峞峚峉峇峊峖峓峔峏峈峆峎峟峸巹帡帢帣帠帤庰庤庢庛庣庥弇弮彖徆怷怹恔恲恞恅恓恇恉恛恌恀恂恟怤恄恘恦恮扂扃拏挍挋拵挎挃拫拹挏挌拸拶挀挓挔拺挕拻拰敁敃斪斿昶昡昲昵昜昦昢昳昫昺昝昴昹昮朏朐柁柲柈��".split(""); +for(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];} +D[181] = "������������������������������������������������枺柜枻柸柘柀枷柅柫柤�������柟枵柍枳柷柶柮柣柂枹柎柧柰枲柼柆柭柌枮柦柛柺柉柊柃柪������柋欨殂殄殶毖毘毠氠氡洨洴洭洟洼洿洒洊泚洳洄洙洺洚洑洀�����洝浂洁洘洷洃洏浀洇洠洬洈洢洉洐炷炟炾炱炰炡炴炵炩牁牉牊牬牰牳牮狊狤狨狫狟狪狦狣玅珌珂珈珅玹玶玵玴珫玿珇玾珃珆玸珋瓬瓮甮畇畈疧疪癹盄眈眃眄眅眊盷盻盺矧矨砆砑砒砅砐砏砎砉砃砓祊祌祋祅祄秕种秏秖秎窀穾竑笀笁籺籸籹籿粀粁紃紈紁罘羑羍羾耇耎耏耔耷胘胇胠胑胈胂胐胅��".split(""); +for(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];} +D[182] = "������������������������������������������������胣胙胜胊胕胉胏胗胦胍�������臿舡芔苙苾苹茇苨茀苕茺苫苖苴苬苡苲苵茌苻苶苰苪苤苠苺������苳苭虷虴虼虳衁衎衧衪衩觓訄訇赲迣迡迮迠郱邽邿郕郅邾郇�����郋郈釔釓陔陏陑陓陊陎倞倅倇倓倢倰倛俵俴倳倷倬俶俷倗倜倠倧倵倯倱倎党冔冓凊凄凅凈凎剡剚剒剞剟剕剢勍匎厞唦哢唗唒哧哳哤唚哿唄唈哫唑唅哱唊哻哷哸哠唎唃唋圁圂埌堲埕埒垺埆垽垼垸垶垿埇埐垹埁夎奊娙娖娭娮娕娏娗娊娞娳孬宧宭宬尃屖屔峬峿峮峱峷崀峹帩帨庨庮庪庬弳弰彧恝��".split(""); +for(j = 0; j != D[182].length; ++j) if(D[182][j].charCodeAt(0) !== 0xFFFD) { e[D[182][j]] = 46592 + j; d[46592 + j] = D[182][j];} +D[183] = "������������������������������������������������恚恧恁悢悈悀悒悁悝悃�������悕悛悗悇悜悎戙扆拲挐捖挬捄捅挶捃揤挹捋捊挼挩捁挴捘捔������捙挭捇挳捚捑挸捗捀捈敊敆旆旃旄旂晊晟晇晑朒朓栟栚桉栲�����栳栻桋桏栖栱栜栵栫栭栯桎桄栴栝栒栔栦栨栮桍栺栥栠欬欯欭欱欴歭肂殈毦毤毨毣毢毧氥浺浣浤浶洍浡涒浘浢浭浯涑涍淯浿涆浞浧浠涗浰浼浟涂涘洯浨涋浾涀涄洖涃浻浽浵涐烜烓烑烝烋缹烢烗烒烞烠烔烍烅烆烇烚烎烡牂牸牷牶猀狺狴狾狶狳狻猁珓珙珥珖玼珧珣珩珜珒珛珔珝珚珗珘珨瓞瓟��".split(""); +for(j = 0; j != D[183].length; ++j) if(D[183][j].charCodeAt(0) !== 0xFFFD) { e[D[183][j]] = 46848 + j; d[46848 + j] = D[183][j];} +D[184] = "������������������������������������������������瓴瓵甡畛畟疰痁疻痄痀�������疿疶疺皊盉眝眛眐眓眒眣眑眕眙眚眢眧砣砬砢砵砯砨砮砫砡������砩砳砪砱祔祛祏祜祓祒祑秫秬秠秮秭秪秜秞秝窆窉窅窋窌窊�����窇竘笐笄笓笅笏笈笊笎笉笒粄粑粊粌粈粍粅紞紝紑紎紘紖紓紟紒紏紌罜罡罞罠罝罛羖羒翃翂翀耖耾耹胺胲胹胵脁胻脀舁舯舥茳茭荄茙荑茥荖茿荁茦茜茢荂荎茛茪茈茼荍茖茤茠茷茯茩荇荅荌荓茞茬荋茧荈虓虒蚢蚨蚖蚍蚑蚞蚇蚗蚆蚋蚚蚅蚥蚙蚡蚧蚕蚘蚎蚝蚐蚔衃衄衭衵衶衲袀衱衿衯袃衾衴衼��".split(""); +for(j = 0; j != D[184].length; ++j) if(D[184][j].charCodeAt(0) !== 0xFFFD) { e[D[184][j]] = 47104 + j; d[47104 + j] = D[184][j];} +D[185] = "������������������������������������������������訒豇豗豻貤貣赶赸趵趷�������趶軑軓迾迵适迿迻逄迼迶郖郠郙郚郣郟郥郘郛郗郜郤酐酎酏������釕釢釚陜陟隼飣髟鬯乿偰偪偡偞偠偓偋偝偲偈偍偁偛偊偢倕�����偅偟偩偫偣偤偆偀偮偳偗偑凐剫剭剬剮勖勓匭厜啵啶唼啍啐唴唪啑啢唶唵唰啒啅唌唲啥啎唹啈唭唻啀啋圊圇埻堔埢埶埜埴堀埭埽堈埸堋埳埏堇埮埣埲埥埬埡堎埼堐埧堁堌埱埩埰堍堄奜婠婘婕婧婞娸娵婭婐婟婥婬婓婤婗婃婝婒婄婛婈媎娾婍娹婌婰婩婇婑婖婂婜孲孮寁寀屙崞崋崝崚崠崌崨崍��".split(""); +for(j = 0; j != D[185].length; ++j) if(D[185][j].charCodeAt(0) !== 0xFFFD) { e[D[185][j]] = 47360 + j; d[47360 + j] = D[185][j];} +D[186] = "������������������������������������������������崦崥崏崰崒崣崟崮帾帴�������庱庴庹庲庳弶弸徛徖徟悊悐悆悾悰悺惓惔惏惤惙惝惈悱惛悷������惊悿惃惍惀挲捥掊掂捽掽掞掭掝掗掫掎捯掇掐据掯捵掜捭掮�����捼掤挻掟捸掅掁掑掍捰敓旍晥晡晛晙晜晢朘桹梇梐梜桭桮梮梫楖桯梣梬梩桵桴梲梏桷梒桼桫桲梪梀桱桾梛梖梋梠梉梤桸桻梑梌梊桽欶欳欷欸殑殏殍殎殌氪淀涫涴涳湴涬淩淢涷淶淔渀淈淠淟淖涾淥淜淝淛淴淊涽淭淰涺淕淂淏淉淐淲淓淽淗淍淣涻烺焍烷焗烴焌烰焄烳焐烼烿焆焓焀烸烶焋焂焎��".split(""); +for(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];} +D[187] = "������������������������������������������������牾牻牼牿猝猗猇猑猘猊�������猈狿猏猞玈珶珸珵琄琁珽琇琀珺珼珿琌琋珴琈畤畣痎痒痏痋������痌痑痐皏皉盓眹眯眭眱眲眴眳眽眥眻眵硈硒硉硍硊硌砦硅硐�����祤祧祩祪祣祫祡离秺秸秶秷窏窔窐笵笻笴笥笰笢笤笳笘笪笝笱笫笭笯笲笸笚笣粔粘粖粣紵紽紸紶紺絅紬紩絁絇紾紿絊紻紨罣羕羜羝羛翊翋翍翐翑翇翏翉耟耞耛聇聃聈脘脥脙脛脭脟脬脞脡脕脧脝脢舑舸舳舺舴舲艴莐莣莨莍荺荳莤荴莏莁莕莙荵莔莩荽莃莌莝莛莪莋荾莥莯莈莗莰荿莦莇莮荶虙��".split(""); +for(j = 0; j != D[187].length; ++j) if(D[187][j].charCodeAt(0) !== 0xFFFD) { e[D[187][j]] = 47872 + j; d[47872 + j] = D[187][j];} +D[188] = "������������������������������������������������虖蚿蚷蛂蛁蛅蚺蚰蛈蚹�������蚳蚸蛌蚴蚻蚼蛃蚽蚾衒袉袕袨袢袪袚袑袡袟袘袧袙袛袗袤袬������袌袓袎覂觖觙觕訰訧訬訞谹谻豜豝豽貥赽赻赹趼跂趹趿跁軘�����軞軝軜軗軠軡逤逋逑逜逌逡郯郪郰郴郲郳郔郫郬郩酖酘酚酓酕釬釴釱釳釸釤釹釪釫釷釨釮镺閆閈陼陭陫陱陯隿靪頄飥馗傛傕傔傞傋傣傃傌傎傝偨傜傒傂傇兟凔匒匑厤厧喑喨喥喭啷噅喢喓喈喏喵喁喣喒喤啽喌喦啿喕喡喎圌堩堷堙堞堧堣堨埵塈堥堜堛堳堿堶堮堹堸堭堬堻奡媯媔媟婺媢媞婸媦��".split(""); +for(j = 0; j != D[188].length; ++j) if(D[188][j].charCodeAt(0) !== 0xFFFD) { e[D[188][j]] = 48128 + j; d[48128 + j] = D[188][j];} +D[189] = "������������������������������������������������婼媥媬媕媮娷媄媊媗媃�������媋媩婻婽媌媜媏媓媝寪寍寋寔寑寊寎尌尰崷嵃嵫嵁嵋崿崵嵑������嵎嵕崳崺嵒崽崱嵙嵂崹嵉崸崼崲崶嵀嵅幄幁彘徦徥徫惉悹惌�����惢惎惄愔惲愊愖愅惵愓惸惼惾惁愃愘愝愐惿愄愋扊掔掱掰揎揥揨揯揃撝揳揊揠揶揕揲揵摡揟掾揝揜揄揘揓揂揇揌揋揈揰揗揙攲敧敪敤敜敨敥斌斝斞斮旐旒晼晬晻暀晱晹晪晲朁椌棓椄棜椪棬棪棱椏棖棷棫棤棶椓椐棳棡椇棌椈楰梴椑棯棆椔棸棐棽棼棨椋椊椗棎棈棝棞棦棴棑椆棔棩椕椥棇欹欻��".split(""); +for(j = 0; j != D[189].length; ++j) if(D[189][j].charCodeAt(0) !== 0xFFFD) { e[D[189][j]] = 48384 + j; d[48384 + j] = D[189][j];} +D[190] = "������������������������������������������������欿欼殔殗殙殕殽毰毲毳�������氰淼湆湇渟湉溈渼渽湅湢渫渿湁湝湳渜渳湋湀湑渻渃渮湞湨������湜湡渱渨湠湱湫渹渢渰湓湥渧湸湤湷湕湹湒湦渵渶湚焠焞焯�����烻焮焱焣焥焢焲焟焨焺焛牋牚犈犉犆犅犋猒猋猰猢猱猳猧猲猭猦猣猵猌琮琬琰琫琖琚琡琭琱琤琣琝琩琠琲瓻甯畯畬痧痚痡痦痝痟痤痗皕皒盚睆睇睄睍睅睊睎睋睌矞矬硠硤硥硜硭硱硪确硰硩硨硞硢祴祳祲祰稂稊稃稌稄窙竦竤筊筇筄筈筌筎筀筘筅粢粞粨粡絘絯絣絓絖絧絪絏絭絜絫絒絔絩絑絟��".split(""); +for(j = 0; j != D[190].length; ++j) if(D[190][j].charCodeAt(0) !== 0xFFFD) { e[D[190][j]] = 48640 + j; d[48640 + j] = D[190][j];} +D[191] = "������������������������������������������������絎缾缿罥罦羢羠羡翗聑�������聏聐胾胔腃腊腒腏腇脽腍脺臦臮臷臸臹舄舼舽舿艵茻菏菹萣������菀菨萒菧菤菼菶萐菆菈菫菣莿萁菝菥菘菿菡菋菎菖菵菉萉萏�����菞萑萆菂菳菕菺菇菑菪萓莚菃菬菮菄菻菗菢萛菛菾蛘蛢蛦蛓蛣蛚蛪蛝蛫蛜蛬蛩蛗蛨蛑衈衖衕袺裗袹袸裀袾袶袼袷袽袲褁裉覕覘覗觝觚觛詎詍訹詙詀詗詘詄詅詒詈詑詊詌詏豟貁貀貺貾貰貹貵趄趀趉跘跓跍跇跖跜跏跕跙跈跗跅軯軷軺軹軦軮軥軵軧軨軶軫軱軬軴軩逭逴逯鄆鄬鄄郿郼鄈郹郻鄁鄀��".split(""); +for(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];} +D[192] = "������������������������������������������������鄇鄅鄃酡酤酟酢酠鈁鈊�������鈥鈃鈚鈦鈏鈌鈀鈒釿釽鈆鈄鈧鈂鈜鈤鈙鈗鈅鈖镻閍閌閐隇陾������隈隉隃隀雂雈雃雱雰靬靰靮頇颩飫鳦黹亃亄亶傽傿僆傮僄僊�����傴僈僂傰僁傺傱僋僉傶傸凗剺剸剻剼嗃嗛嗌嗐嗋嗊嗝嗀嗔嗄嗩喿嗒喍嗏嗕嗢嗖嗈嗲嗍嗙嗂圔塓塨塤塏塍塉塯塕塎塝塙塥塛堽塣塱壼嫇嫄嫋媺媸媱媵媰媿嫈媻嫆媷嫀嫊媴媶嫍媹媐寖寘寙尟尳嵱嵣嵊嵥嵲嵬嵞嵨嵧嵢巰幏幎幊幍幋廅廌廆廋廇彀徯徭惷慉慊愫慅愶愲愮慆愯慏愩慀戠酨戣戥戤揅揱��".split(""); +for(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];} +D[193] = "������������������������������������������������揫搐搒搉搠搤搳摃搟搕�������搘搹搷搢搣搌搦搰搨摁搵搯搊搚摀搥搧搋揧搛搮搡搎敯斒旓������暆暌暕暐暋暊暙暔晸朠楦楟椸楎楢楱椿楅楪椹楂楗楙楺楈楉�����椵楬椳椽楥棰楸椴楩楀楯楄楶楘楁楴楌椻楋椷楜楏楑椲楒椯楻椼歆歅歃歂歈歁殛毻毼毹毷毸溛滖滈溏滀溟溓溔溠溱溹滆滒溽滁溞滉溷溰滍溦滏溲溾滃滜滘溙溒溎溍溤溡溿溳滐滊溗溮溣煇煔煒煣煠煁煝煢煲煸煪煡煂煘煃煋煰煟煐煓煄煍煚牏犍犌犑犐犎猼獂猻猺獀獊獉瑄瑊瑋瑒瑑瑗瑀瑏瑐瑎��".split(""); +for(j = 0; j != D[193].length; ++j) if(D[193][j].charCodeAt(0) !== 0xFFFD) { e[D[193][j]] = 49408 + j; d[49408 + j] = D[193][j];} +D[194] = "������������������������������������������������瑂瑆瑍瑔瓡瓿瓾瓽甝畹�������畷榃痯瘏瘃痷痾痼痹痸瘐痻痶痭痵痽皙皵盝睕睟睠睒睖睚睩������睧睔睙睭矠碇碚碔碏碄碕碅碆碡碃硹碙碀碖硻祼禂祽祹稑稘�����稙稒稗稕稢稓稛稐窣窢窞竫筦筤筭筴筩筲筥筳筱筰筡筸筶筣粲粴粯綈綆綀綍絿綅絺綎絻綃絼綌綔綄絽綒罭罫罧罨罬羦羥羧翛翜耡腤腠腷腜腩腛腢腲朡腞腶腧腯腄腡舝艉艄艀艂艅蓱萿葖葶葹蒏蒍葥葑葀蒆葧萰葍葽葚葙葴葳葝蔇葞萷萺萴葺葃葸萲葅萩菙葋萯葂萭葟葰萹葎葌葒葯蓅蒎萻葇萶萳��".split(""); +for(j = 0; j != D[194].length; ++j) if(D[194][j].charCodeAt(0) !== 0xFFFD) { e[D[194][j]] = 49664 + j; d[49664 + j] = D[194][j];} +D[195] = "������������������������������������������������葨葾葄萫葠葔葮葐蜋蜄�������蛷蜌蛺蛖蛵蝍蛸蜎蜉蜁蛶蜍蜅裖裋裍裎裞裛裚裌裐覅覛觟觥������觤觡觠觢觜触詶誆詿詡訿詷誂誄詵誃誁詴詺谼豋豊豥豤豦貆�����貄貅賌赨赩趑趌趎趏趍趓趔趐趒跰跠跬跱跮跐跩跣跢跧跲跫跴輆軿輁輀輅輇輈輂輋遒逿遄遉逽鄐鄍鄏鄑鄖鄔鄋鄎酮酯鉈鉒鈰鈺鉦鈳鉥鉞銃鈮鉊鉆鉭鉬鉏鉠鉧鉯鈶鉡鉰鈱鉔鉣鉐鉲鉎鉓鉌鉖鈲閟閜閞閛隒隓隑隗雎雺雽雸雵靳靷靸靲頏頍頎颬飶飹馯馲馰馵骭骫魛鳪鳭鳧麀黽僦僔僗僨僳僛僪僝僤��".split(""); +for(j = 0; j != D[195].length; ++j) if(D[195][j].charCodeAt(0) !== 0xFFFD) { e[D[195][j]] = 49920 + j; d[49920 + j] = D[195][j];} +D[196] = "������������������������������������������������僓僬僰僯僣僠凘劀劁勩�������勫匰厬嘧嘕嘌嘒嗼嘏嘜嘁嘓嘂嗺嘝嘄嗿嗹墉塼墐墘墆墁塿塴������墋塺墇墑墎塶墂墈塻墔墏壾奫嫜嫮嫥嫕嫪嫚嫭嫫嫳嫢嫠嫛嫬�����嫞嫝嫙嫨嫟孷寠寣屣嶂嶀嵽嶆嵺嶁嵷嶊嶉嶈嵾嵼嶍嵹嵿幘幙幓廘廑廗廎廜廕廙廒廔彄彃彯徶愬愨慁慞慱慳慒慓慲慬憀慴慔慺慛慥愻慪慡慖戩戧戫搫摍摛摝摴摶摲摳摽摵摦撦摎撂摞摜摋摓摠摐摿搿摬摫摙摥摷敳斠暡暠暟朅朄朢榱榶槉榠槎榖榰榬榼榑榙榎榧榍榩榾榯榿槄榽榤槔榹槊榚槏榳榓��".split(""); +for(j = 0; j != D[196].length; ++j) if(D[196][j].charCodeAt(0) !== 0xFFFD) { e[D[196][j]] = 50176 + j; d[50176 + j] = D[196][j];} +D[197] = "������������������������������������������������榪榡榞槙榗榐槂榵榥槆�������歊歍歋殞殟殠毃毄毾滎滵滱漃漥滸漷滻漮漉潎漙漚漧漘漻漒������滭漊漶潳滹滮漭潀漰漼漵滫漇漎潃漅滽滶漹漜滼漺漟漍漞漈�����漡熇熐熉熀熅熂熏煻熆熁熗牄牓犗犕犓獃獍獑獌瑢瑳瑱瑵瑲瑧瑮甀甂甃畽疐瘖瘈瘌瘕瘑瘊瘔皸瞁睼瞅瞂睮瞀睯睾瞃碲碪碴碭碨硾碫碞碥碠碬碢碤禘禊禋禖禕禔禓禗禈禒禐稫穊稰稯稨稦窨窫窬竮箈箜箊箑箐箖箍箌箛箎箅箘劄箙箤箂粻粿粼粺綧綷緂綣綪緁緀緅綝緎緄緆緋緌綯綹綖綼綟綦綮綩��".split(""); +for(j = 0; j != D[197].length; ++j) if(D[197][j].charCodeAt(0) !== 0xFFFD) { e[D[197][j]] = 50432 + j; d[50432 + j] = D[197][j];} +D[198] = "������������������������������������������������綡緉罳翢翣翥翞耤聝聜�������膉膆膃膇膍膌膋舕蒗蒤蒡蒟蒺蓎蓂蒬蒮蒫蒹蒴蓁蓍蒪蒚蒱蓐������蒝蒧蒻蒢蒔蓇蓌蒛蒩蒯蒨蓖蒘蒶蓏蒠蓗蓔蓒蓛蒰蒑虡蜳蜣蜨�����蝫蝀蜮蜞蜡蜙蜛蝃蜬蝁蜾蝆蜠蜲蜪蜭蜼蜒蜺蜱蜵蝂蜦蜧蜸蜤蜚蜰蜑裷裧裱裲裺裾裮裼裶裻裰裬裫覝覡覟覞觩觫觨誫誙誋誒誏誖谽豨豩賕賏賗趖踉踂跿踍跽踊踃踇踆踅跾踀踄輐輑輎輍鄣鄜鄠鄢鄟鄝鄚鄤鄡鄛酺酲酹酳銥銤鉶銛鉺銠銔銪銍銦銚銫鉹銗鉿銣鋮銎銂銕銢鉽銈銡銊銆銌銙銧鉾銇銩銝��".split(""); +for(j = 0; j != D[198].length; ++j) if(D[198][j].charCodeAt(0) !== 0xFFFD) { e[D[198][j]] = 50688 + j; d[50688 + j] = D[198][j];} +D[199] = "������������������������������������������������銋鈭隞隡雿靘靽靺靾鞃�������鞀鞂靻鞄鞁靿韎韍頖颭颮餂餀餇馝馜駃馹馻馺駂馽駇骱髣髧������鬾鬿魠魡魟鳱鳲鳵麧僿儃儰僸儆儇僶僾儋儌僽儊劋劌勱勯噈�����噂噌嘵噁噊噉噆噘噚噀嘳嘽嘬嘾嘸嘪嘺圚墫墝墱墠墣墯墬墥墡壿嫿嫴嫽嫷嫶嬃嫸嬂嫹嬁嬇嬅嬏屧嶙嶗嶟嶒嶢嶓嶕嶠嶜嶡嶚嶞幩幝幠幜緳廛廞廡彉徲憋憃慹憱憰憢憉憛憓憯憭憟憒憪憡憍慦憳戭摮摰撖撠撅撗撜撏撋撊撌撣撟摨撱撘敶敺敹敻斲斳暵暰暩暲暷暪暯樀樆樗槥槸樕槱槤樠槿槬槢樛樝��".split(""); +for(j = 0; j != D[199].length; ++j) if(D[199][j].charCodeAt(0) !== 0xFFFD) { e[D[199][j]] = 50944 + j; d[50944 + j] = D[199][j];} +D[200] = "������������������������������������������������槾樧槲槮樔槷槧橀樈槦�������槻樍槼槫樉樄樘樥樏槶樦樇槴樖歑殥殣殢殦氁氀毿氂潁漦潾������澇濆澒澍澉澌潢潏澅潚澖潶潬澂潕潲潒潐潗澔澓潝漀潡潫潽�����潧澐潓澋潩潿澕潣潷潪潻熲熯熛熰熠熚熩熵熝熥熞熤熡熪熜熧熳犘犚獘獒獞獟獠獝獛獡獚獙獢璇璉璊璆璁瑽璅璈瑼瑹甈甇畾瘥瘞瘙瘝瘜瘣瘚瘨瘛皜皝皞皛瞍瞏瞉瞈磍碻磏磌磑磎磔磈磃磄磉禚禡禠禜禢禛歶稹窲窴窳箷篋箾箬篎箯箹篊箵糅糈糌糋緷緛緪緧緗緡縃緺緦緶緱緰緮緟罶羬羰羭翭翫��".split(""); +for(j = 0; j != D[200].length; ++j) if(D[200][j].charCodeAt(0) !== 0xFFFD) { e[D[200][j]] = 51200 + j; d[51200 + j] = D[200][j];} +D[201] = "������������������������������������������������翪翬翦翨聤聧膣膟膞膕�������膢膙膗舖艏艓艒艐艎艑蔤蔻蔏蔀蔩蔎蔉蔍蔟蔊蔧蔜蓻蔫蓺蔈������蔌蓴蔪蓲蔕蓷蓫蓳蓼蔒蓪蓩蔖蓾蔨蔝蔮蔂蓽蔞蓶蔱蔦蓧蓨蓰�����蓯蓹蔘蔠蔰蔋蔙蔯虢蝖蝣蝤蝷蟡蝳蝘蝔蝛蝒蝡蝚蝑蝞蝭蝪蝐蝎蝟蝝蝯蝬蝺蝮蝜蝥蝏蝻蝵蝢蝧蝩衚褅褌褔褋褗褘褙褆褖褑褎褉覢覤覣觭觰觬諏諆誸諓諑諔諕誻諗誾諀諅諘諃誺誽諙谾豍貏賥賟賙賨賚賝賧趠趜趡趛踠踣踥踤踮踕踛踖踑踙踦踧踔踒踘踓踜踗踚輬輤輘輚輠輣輖輗遳遰遯遧遫鄯鄫鄩��".split(""); +for(j = 0; j != D[201].length; ++j) if(D[201][j].charCodeAt(0) !== 0xFFFD) { e[D[201][j]] = 51456 + j; d[51456 + j] = D[201][j];} +D[202] = "������������������������������������������������鄪鄲鄦鄮醅醆醊醁醂醄�������醀鋐鋃鋄鋀鋙銶鋏鋱鋟鋘鋩鋗鋝鋌鋯鋂鋨鋊鋈鋎鋦鋍鋕鋉鋠������鋞鋧鋑鋓銵鋡錥鋆銴镼閬閫閮閰隤隢雓霅霈霂靚鞊鞎鞈韐韏�����頞頝頦頩頨頠頛頧颲餈飺餑餔餖餗餕駜駍駏駓駔駎駉駖駘駋駗駌骳髬髫髳髲髱魆魃魧魴魱魦魶魵魰魨魤魬鳼鳺鳽鳿鳷鴇鴀鳹鳻鴈鴅鴄麃黓鼏鼐儜儓儗儚儑凞匴叡噰噠噮噳噦噣噭噲噞噷圜圛壈墽壉墿墺壂墼壆嬗嬙嬛嬡嬔嬓嬐嬖嬨嬚嬠嬞寯嶬嶱嶩嶧嶵嶰嶮嶪嶨嶲嶭嶯嶴幧幨幦幯廩廧廦廨廥彋��".split(""); +for(j = 0; j != D[202].length; ++j) if(D[202][j].charCodeAt(0) !== 0xFFFD) { e[D[202][j]] = 51712 + j; d[51712 + j] = D[202][j];} +D[203] = "������������������������������������������������徼徻憝憨憖懅憴懆懁懌�������憺憿憸憌擗擖擐擏擉撽撉擃擛擳擙攳敿敼斢曈暾曀曊曋曏暽������暻暺曌朣樴橦橉橧樲橨樾橝橭橶橛橑樨橚樻樿橁橪橤橐橏橔�����橯橩橠樼橞橖橕橍橎橆歕歔歖殧殪殫毈毇氄氃氆澭濋澣濇澼濎濈潞濄澽澞濊澨瀄澥澮澺澬澪濏澿澸澢濉澫濍澯澲澰燅燂熿熸燖燀燁燋燔燊燇燏熽燘熼燆燚燛犝犞獩獦獧獬獥獫獪瑿璚璠璔璒璕璡甋疀瘯瘭瘱瘽瘳瘼瘵瘲瘰皻盦瞚瞝瞡瞜瞛瞢瞣瞕瞙瞗磝磩磥磪磞磣磛磡磢磭磟磠禤穄穈穇窶窸窵��".split(""); +for(j = 0; j != D[203].length; ++j) if(D[203][j].charCodeAt(0) !== 0xFFFD) { e[D[203][j]] = 51968 + j; d[51968 + j] = D[203][j];} +D[204] = "������������������������������������������������窱窷篞篣篧篝篕篥篚篨�������篹篔篪篢篜篫篘篟糒糔糗糐糑縒縡縗縌縟縠縓縎縜縕縚縢縋������縏縖縍縔縥縤罃罻罼罺羱翯耪耩聬膱膦膮膹膵膫膰膬膴膲膷�����膧臲艕艖艗蕖蕅蕫蕍蕓蕡蕘蕀蕆蕤蕁蕢蕄蕑蕇蕣蔾蕛蕱蕎蕮蕵蕕蕧蕠薌蕦蕝蕔蕥蕬虣虥虤螤螛螏螗螓螒螈螁螖螘蝹螇螣螅螐螑螝螄螔螜螚螉褞褦褰褭褮褧褱褢褩褣褯褬褟觱諠諢諲諴諵諝謔諤諟諰諈諞諡諨諿諯諻貑貒貐賵賮賱賰賳赬赮趥趧踳踾踸蹀蹅踶踼踽蹁踰踿躽輶輮輵輲輹輷輴遶遹遻��".split(""); +for(j = 0; j != D[204].length; ++j) if(D[204][j].charCodeAt(0) !== 0xFFFD) { e[D[204][j]] = 52224 + j; d[52224 + j] = D[204][j];} +D[205] = "������������������������������������������������邆郺鄳鄵鄶醓醐醑醍醏�������錧錞錈錟錆錏鍺錸錼錛錣錒錁鍆錭錎錍鋋錝鋺錓鋹鋷錴錂錤������鋿錩錹錵錪錔錌錋鋾錉錀鋻錖閼闍閾閹閺閶閿閵閽隩雔霋霒�����霐鞙鞗鞔韰韸頵頯頲餤餟餧餩馞駮駬駥駤駰駣駪駩駧骹骿骴骻髶髺髹髷鬳鮀鮅鮇魼魾魻鮂鮓鮒鮐魺鮕魽鮈鴥鴗鴠鴞鴔鴩鴝鴘鴢鴐鴙鴟麈麆麇麮麭黕黖黺鼒鼽儦儥儢儤儠儩勴嚓嚌嚍嚆嚄嚃噾嚂噿嚁壖壔壏壒嬭嬥嬲嬣嬬嬧嬦嬯嬮孻寱寲嶷幬幪徾懃憵憼懧懠懥懤懨懞擯擩擣擫擤擨斁斀斶旚曒檍��".split(""); +for(j = 0; j != D[205].length; ++j) if(D[205][j].charCodeAt(0) !== 0xFFFD) { e[D[205][j]] = 52480 + j; d[52480 + j] = D[205][j];} +D[206] = "������������������������������������������������檖檁檥檉檟檛檡檞檇檓�������檎檕檃檨檤檑橿檦檚檅檌檒歛殭氉濌澩濴濔濣濜濭濧濦濞濲������濝濢濨燡燱燨燲燤燰燢獳獮獯璗璲璫璐璪璭璱璥璯甐甑甒甏�����疄癃癈癉癇皤盩瞵瞫瞲瞷瞶瞴瞱瞨矰磳磽礂磻磼磿磲礅磹磾礄禫禨穜穛穖穘穔穚窾竀竁簅簏篲簀篿篻簎篴簋篳簂簉簃簁篸篽簆篰篱簐簊糨縭縼繂縳顈縸縪繉繀繇縩繌縰縻縶繄縺罅罿罾罽翴翲耬膻臄臌臊臅臇膼臩艛艚艜薃薀薏薧薕薠薋薣蕻薤薚薞蕷蕼薉薡蕺蕸蕗薎薖薆薍薙薝薁薢薂薈薅蕹��".split(""); +for(j = 0; j != D[206].length; ++j) if(D[206][j].charCodeAt(0) !== 0xFFFD) { e[D[206][j]] = 52736 + j; d[52736 + j] = D[206][j];} +D[207] = "������������������������������������������������蕶薘薐薟虨螾螪螭蟅螰�������螬螹螵螼螮蟉蟃蟂蟌螷螯蟄蟊螴螶螿螸螽蟞螲褵褳褼褾襁襒������褷襂覭覯覮觲觳謞謘謖謑謅謋謢謏謒謕謇謍謈謆謜謓謚豏豰�����豲豱豯貕貔賹赯蹎蹍蹓蹐蹌蹇轃轀邅遾鄸醚醢醛醙醟醡醝醠鎡鎃鎯鍤鍖鍇鍼鍘鍜鍶鍉鍐鍑鍠鍭鎏鍌鍪鍹鍗鍕鍒鍏鍱鍷鍻鍡鍞鍣鍧鍎鍙闇闀闉闃闅閷隮隰隬霠霟霘霝霙鞚鞡鞜鞞鞝韕韔韱顁顄顊顉顅顃餥餫餬餪餳餲餯餭餱餰馘馣馡騂駺駴駷駹駸駶駻駽駾駼騃骾髾髽鬁髼魈鮚鮨鮞鮛鮦鮡鮥鮤鮆��".split(""); +for(j = 0; j != D[207].length; ++j) if(D[207][j].charCodeAt(0) !== 0xFFFD) { e[D[207][j]] = 52992 + j; d[52992 + j] = D[207][j];} +D[208] = "������������������������������������������������鮢鮠鮯鴳鵁鵧鴶鴮鴯鴱�������鴸鴰鵅鵂鵃鴾鴷鵀鴽翵鴭麊麉麍麰黈黚黻黿鼤鼣鼢齔龠儱儭������儮嚘嚜嚗嚚嚝嚙奰嬼屩屪巀幭幮懘懟懭懮懱懪懰懫懖懩擿攄�����擽擸攁攃擼斔旛曚曛曘櫅檹檽櫡櫆檺檶檷櫇檴檭歞毉氋瀇瀌瀍瀁瀅瀔瀎濿瀀濻瀦濼濷瀊爁燿燹爃燽獶璸瓀璵瓁璾璶璻瓂甔甓癜癤癙癐癓癗癚皦皽盬矂瞺礌礓礔礉礐礒礑禭禬穟簜簩簙簠簟簭簝簦簨簢簥簰繜繐繖繣繘繢繟繑繠繗繓羵羳翷翸聵臑臒臐艟艞薴藆藀藃藂薳薵薽藇藄薿藋藎藈藅薱薶��".split(""); +for(j = 0; j != D[208].length; ++j) if(D[208][j].charCodeAt(0) !== 0xFFFD) { e[D[208][j]] = 53248 + j; d[53248 + j] = D[208][j];} +D[209] = "������������������������������������������������藒蘤薸薷薾虩蟧蟦蟢蟛�������蟫蟪蟥蟟蟳蟤蟔蟜蟓蟭蟘蟣蟗蟙蠁蟴蟨蟝襓襋襏襌襆襐襑襉������謪謧謣謳謰謵譇謯謼謾謱謥謷謦謶謮謤謻謽謺豂豵貙貘貗賾�����贄贂贀蹜蹢蹠蹗蹖蹞蹥蹧蹛蹚蹡蹝蹩蹔轆轇轈轋鄨鄺鄻鄾醨醥醧醯醪鎵鎌鎒鎷鎛鎝鎉鎧鎎鎪鎞鎦鎕鎈鎙鎟鎀鎍鎱鎑鎲鎤鎨鎴鎣闒闓闑隳雗雚巂雟雘雝霣霢霥鞬鞮鞨鞫鞤鞪鞢鞥韗韙韖韘韺顐顑顒颸饁餼餺騏騋騉騍騄騑騊騅騇騆髀髜鬈鬄鬅鬩鬵魊魌魋鯇鯆鯃鮿鯁鮵鮸鯓鮶鯄鮹鮽鵜鵓鵏鵊鵛鵋��".split(""); +for(j = 0; j != D[209].length; ++j) if(D[209][j].charCodeAt(0) !== 0xFFFD) { e[D[209][j]] = 53504 + j; d[53504 + j] = D[209][j];} +D[210] = "������������������������������������������������鵙鵖鵌鵗鵒鵔鵟鵘鵚麎�������麌黟鼁鼀鼖鼥鼫鼪鼩鼨齌齕儴儵劖勷厴嚫嚭嚦嚧嚪嚬壚壝壛������夒嬽嬾嬿巃幰徿懻攇攐攍攉攌攎斄旞旝曞櫧櫠櫌櫑櫙櫋櫟櫜�����櫐櫫櫏櫍櫞歠殰氌瀙瀧瀠瀖瀫瀡瀢瀣瀩瀗瀤瀜爌爊爇爂爅犥犦犤犣犡瓋瓅璷瓃甖癠矉矊矄矱礝礛礡礜礗礞禰穧穨簳簼簹簬簻糬糪繶繵繸繰繷繯繺繲繴繨罋罊羃羆羷翽翾聸臗臕舋艤艡艣藫藱藭藙藡藨藚藗藬藲藸藘藟藣藜藑藰藦藯藞藢蠀蟺蠃蟶蟷蠉蠌蠋蠆蟼蠈蟿蠊蠂襢襚襛襗襡襜襘襝襙覈覷��".split(""); +for(j = 0; j != D[210].length; ++j) if(D[210][j].charCodeAt(0) !== 0xFFFD) { e[D[210][j]] = 53760 + j; d[53760 + j] = D[210][j];} +D[211] = "������������������������������������������������覶觶譐譈譊譀譓譖譔譋�������譕譑譂譒譗豃豷豶貚贆贇贉趬趪趭趫蹭蹸蹳蹪蹯蹻軂轒轑轏������轐轓辴酀鄿醰醭鏞鏇鏏鏂鏚鏐鏹鏬鏌鏙鎩鏦鏊鏔鏮鏣鏕鏄鏎�����鏀鏒鎥鏧镽闚闛雡霩霫霬霨霦鞳鞷鞶韝韞韟顜顙顝顗颿颽颻颾饈饇饃馦馧騚騕騥騝騤騛騢騠騧騣騞騜騔髂鬋鬊鬎鬌鬷鯪鯫鯠鯞鯤鯦鯢鯰鯔鯗鯬鯜鯙鯥鯕鯡鯚鵷鶁鶊鶄鶈鵱鶀鵸鶆鶋鶌鵽鵫鵴鵵鵰鵩鶅鵳鵻鶂鵯鵹鵿鶇鵨麔麑黀黼鼭齀齁齍齖齗齘匷嚲嚵嚳壣孅巆巇廮廯忀忁懹攗攖攕攓旟曨曣曤��".split(""); +for(j = 0; j != D[211].length; ++j) if(D[211][j].charCodeAt(0) !== 0xFFFD) { e[D[211][j]] = 54016 + j; d[54016 + j] = D[211][j];} +D[212] = "������������������������������������������������櫳櫰櫪櫨櫹櫱櫮櫯瀼瀵�������瀯瀷瀴瀱灂瀸瀿瀺瀹瀪灀瀻瀳灁爓爔犨獽獼璺皫皪皾盭矌矎������矏矍矲礥礣礧礨礤礩禲穮穬穭竷籉籈籊籇籅糮繻繾纁纀羺翿�����聹臛臙艨艩蘢藿蘁藾蘛蘀藶蘄蘉蘅蘌藽蠙蠐蠑蠗蠓蠖襣襦覹觷譠譪譝譨譣譥譧譭趮躆躈躄轙轖轗轕轘轚邍酃酁醷醵醲醳鐋鐓鏻鐠鐏鐔鏾鐕鐐鐨鐙鐍鏵鐀鏷鐇鐎鐖鐒鏺鐉鏸鐼鐊鏿鏼鐌鏶鐑鐆闞闠闟霮霯鞹鞻韽韾顠顢顣顟飁飂饐饎饙饌饋饓騲騴騱騬騪騶騩騮騸騭髇髊髆鬐鬒鬑鰋鰈鯷鰅鰒鯸鱀��".split(""); +for(j = 0; j != D[212].length; ++j) if(D[212][j].charCodeAt(0) !== 0xFFFD) { e[D[212][j]] = 54272 + j; d[54272 + j] = D[212][j];} +D[213] = "������������������������������������������������鰇鰎鰆鰗鰔鰉鶟鶙鶤鶝�������鶒鶘鶐鶛鶠鶔鶜鶪鶗鶡鶚鶢鶨鶞鶣鶿鶩鶖鶦鶧麙麛麚黥黤黧������黦鼰鼮齛齠齞齝齙龑儺儹劘劗囃嚽嚾孈孇巋巏廱懽攛欂櫼欃�����櫸欀灃灄灊灈灉灅灆爝爚爙獾甗癪矐礭礱礯籔籓糲纊纇纈纋纆纍罍羻耰臝蘘蘪蘦蘟蘣蘜蘙蘧蘮蘡蘠蘩蘞蘥蠩蠝蠛蠠蠤蠜蠫衊襭襩襮襫觺譹譸譅譺譻贐贔趯躎躌轞轛轝酆酄酅醹鐿鐻鐶鐩鐽鐰鐹鐪鐷鐬鑀鐱闥闤闣霵霺鞿韡顤飉飆飀饘饖騹騽驆驄驂驁騺騿髍鬕鬗鬘鬖鬺魒鰫鰝鰜鰬鰣鰨鰩鰤鰡鶷��".split(""); +for(j = 0; j != D[213].length; ++j) if(D[213][j].charCodeAt(0) !== 0xFFFD) { e[D[213][j]] = 54528 + j; d[54528 + j] = D[213][j];} +D[214] = "������������������������������������������������鶶鶼鷁鷇鷊鷏鶾鷅鷃鶻�������鶵鷎鶹鶺鶬鷈鶱鶭鷌鶳鷍鶲鹺麜黫黮黭鼛鼘鼚鼱齎齥齤龒亹������囆囅囋奱孋孌巕巑廲攡攠攦攢欋欈欉氍灕灖灗灒爞爟犩獿瓘�����瓕瓙瓗癭皭礵禴穰穱籗籜籙籛籚糴糱纑罏羇臞艫蘴蘵蘳蘬蘲蘶蠬蠨蠦蠪蠥襱覿覾觻譾讄讂讆讅譿贕躕躔躚躒躐躖躗轠轢酇鑌鑐鑊鑋鑏鑇鑅鑈鑉鑆霿韣顪顩飋饔饛驎驓驔驌驏驈驊驉驒驐髐鬙鬫鬻魖魕鱆鱈鰿鱄鰹鰳鱁鰼鰷鰴鰲鰽鰶鷛鷒鷞鷚鷋鷐鷜鷑鷟鷩鷙鷘鷖鷵鷕鷝麶黰鼵鼳鼲齂齫龕龢儽劙��".split(""); +for(j = 0; j != D[214].length; ++j) if(D[214][j].charCodeAt(0) !== 0xFFFD) { e[D[214][j]] = 54784 + j; d[54784 + j] = D[214][j];} +D[215] = "������������������������������������������������壨壧奲孍巘蠯彏戁戃戄�������攩攥斖曫欑欒欏毊灛灚爢玂玁玃癰矔籧籦纕艬蘺虀蘹蘼蘱蘻������蘾蠰蠲蠮蠳襶襴襳觾讌讎讋讈豅贙躘轤轣醼鑢鑕鑝鑗鑞韄韅�����頀驖驙鬞鬟鬠鱒鱘鱐鱊鱍鱋鱕鱙鱌鱎鷻鷷鷯鷣鷫鷸鷤鷶鷡鷮鷦鷲鷰鷢鷬鷴鷳鷨鷭黂黐黲黳鼆鼜鼸鼷鼶齃齏齱齰齮齯囓囍孎屭攭曭曮欓灟灡灝灠爣瓛瓥矕礸禷禶籪纗羉艭虃蠸蠷蠵衋讔讕躞躟躠躝醾醽釂鑫鑨鑩雥靆靃靇韇韥驞髕魙鱣鱧鱦鱢鱞鱠鸂鷾鸇鸃鸆鸅鸀鸁鸉鷿鷽鸄麠鼞齆齴齵齶囔攮斸��".split(""); +for(j = 0; j != D[215].length; ++j) if(D[215][j].charCodeAt(0) !== 0xFFFD) { e[D[215][j]] = 55040 + j; d[55040 + j] = D[215][j];} +D[216] = "������������������������������������������������欘欙欗欚灢爦犪矘矙礹�������籩籫糶纚纘纛纙臠臡虆虇虈襹襺襼襻觿讘讙躥躤躣鑮鑭鑯鑱������鑳靉顲饟鱨鱮鱭鸋鸍鸐鸏鸒鸑麡黵鼉齇齸齻齺齹圞灦籯蠼趲�����躦釃鑴鑸鑶鑵驠鬮鱴鱳鱱鱵鸔鸓黶鼊龤灨灥糷虪蠾蠽蠿讞貜躩軉靋顳顴飌饡馫驤驦驧鬤鸕鸗齈戇欞爧虌躨钂钀钁驩驨鸙虋讟钃鱹麷癵驫鱺鸝灩灪爩麤齾齉龘������������������������������������������������������������".split(""); +for(j = 0; j != D[216].length; ++j) if(D[216][j].charCodeAt(0) !== 0xFFFD) { e[D[216][j]] = 55296 + j; d[55296 + j] = D[216][j];} +D[223] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];} +D[224] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];} +D[225] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];} +D[226] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];} +D[227] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];} +D[228] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];} +D[229] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];} +D[230] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];} +D[231] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];} +D[232] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];} +D[233] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[233].length; ++j) if(D[233][j].charCodeAt(0) !== 0xFFFD) { e[D[233][j]] = 59648 + j; d[59648 + j] = D[233][j];} +D[234] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];} +D[235] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[235].length; ++j) if(D[235][j].charCodeAt(0) !== 0xFFFD) { e[D[235][j]] = 60160 + j; d[60160 + j] = D[235][j];} +D[236] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[236].length; ++j) if(D[236][j].charCodeAt(0) !== 0xFFFD) { e[D[236][j]] = 60416 + j; d[60416 + j] = D[236][j];} +D[237] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[237].length; ++j) if(D[237][j].charCodeAt(0) !== 0xFFFD) { e[D[237][j]] = 60672 + j; d[60672 + j] = D[237][j];} +D[238] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[238].length; ++j) if(D[238][j].charCodeAt(0) !== 0xFFFD) { e[D[238][j]] = 60928 + j; d[60928 + j] = D[238][j];} +D[239] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];} +D[240] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[240].length; ++j) if(D[240][j].charCodeAt(0) !== 0xFFFD) { e[D[240][j]] = 61440 + j; d[61440 + j] = D[240][j];} +D[241] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[241].length; ++j) if(D[241][j].charCodeAt(0) !== 0xFFFD) { e[D[241][j]] = 61696 + j; d[61696 + j] = D[241][j];} +D[242] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[242].length; ++j) if(D[242][j].charCodeAt(0) !== 0xFFFD) { e[D[242][j]] = 61952 + j; d[61952 + j] = D[242][j];} +D[243] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[243].length; ++j) if(D[243][j].charCodeAt(0) !== 0xFFFD) { e[D[243][j]] = 62208 + j; d[62208 + j] = D[243][j];} +D[244] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[244].length; ++j) if(D[244][j].charCodeAt(0) !== 0xFFFD) { e[D[244][j]] = 62464 + j; d[62464 + j] = D[244][j];} +D[245] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[245].length; ++j) if(D[245][j].charCodeAt(0) !== 0xFFFD) { e[D[245][j]] = 62720 + j; d[62720 + j] = D[245][j];} +D[246] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[246].length; ++j) if(D[246][j].charCodeAt(0) !== 0xFFFD) { e[D[246][j]] = 62976 + j; d[62976 + j] = D[246][j];} +D[247] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[247].length; ++j) if(D[247][j].charCodeAt(0) !== 0xFFFD) { e[D[247][j]] = 63232 + j; d[63232 + j] = D[247][j];} +D[248] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[248].length; ++j) if(D[248][j].charCodeAt(0) !== 0xFFFD) { e[D[248][j]] = 63488 + j; d[63488 + j] = D[248][j];} +D[249] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[249].length; ++j) if(D[249][j].charCodeAt(0) !== 0xFFFD) { e[D[249][j]] = 63744 + j; d[63744 + j] = D[249][j];} +D[250] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[250].length; ++j) if(D[250][j].charCodeAt(0) !== 0xFFFD) { e[D[250][j]] = 64000 + j; d[64000 + j] = D[250][j];} +D[251] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[251].length; ++j) if(D[251][j].charCodeAt(0) !== 0xFFFD) { e[D[251][j]] = 64256 + j; d[64256 + j] = D[251][j];} +D[252] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[252].length; ++j) if(D[252][j].charCodeAt(0) !== 0xFFFD) { e[D[252][j]] = 64512 + j; d[64512 + j] = D[252][j];} +return {"enc": e, "dec": d }; })(); +cptable[20002] = (function(){ var d = [], e = {}, D = [], j; +D[0] = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€���������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];} +D[129] = "������������������������������������������������ ,、。․•;:?!�������︰…‥﹐﹑‧﹒﹔﹕﹖﹗︱–︲—︳_︴﹏()︵︶{}︷������︸〔〕︹︺【】︻︼《》︽︾〈〉︿﹀「」﹁﹂『』﹃﹄﹙�����﹚﹛﹜﹝﹞‘’“”〝〞′‵#&*※§〃○●△▲◎☆★◇◆□■▽▼㊣℅‾ ̄��﹉﹊﹍﹎﹋﹌﹟﹠﹡+-×÷±√<>=≦≧≠∞≒≡﹢﹣﹤﹥﹦∼∩∪⊥∠∟⊿㏒㏑∫∮∵∴♀♂⊕⊙↑↓→←↖↗↙↘∥∣/\�﹨$¥〒¢£%@℃℉﹩﹪﹫㏕㎜㎝㎞㏎㎡㎎㎏㏄゜兙兛兞兝兡兣��".split(""); +for(j = 0; j != D[129].length; ++j) if(D[129][j].charCodeAt(0) !== 0xFFFD) { e[D[129][j]] = 33024 + j; d[33024 + j] = D[129][j];} +D[130] = "������������������������������������������������嗧瓩糎▁▂▃▄▅▆▇�������█▏▎▍▌▋▊▉┼┴┬┤├▔─│▕┌┐└┘╭╮╰╯═������╞╪╡◢◣◥◤╱╲╳¨˄ヽヾゝゞ�〄々〆〇ー[]✽ぁ�����あぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただち0123456789ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩ〡〢〣〤〥〦〧〨〩�卄�ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzΑΒΓΔΕΖΗΘΙΚ��".split(""); +for(j = 0; j != D[130].length; ++j) if(D[130][j].charCodeAt(0) !== 0xFFFD) { e[D[130][j]] = 33280 + j; d[33280 + j] = D[130][j];} +D[131] = "������������������������������������������������ΛΜΝΞΟΠΡΣΤΥ�������ΦΧΨΩαβγδεζηθικλμνξοπρστυφχ������ψωㄅㄆㄇㄈㄉㄊㄋㄌㄍㄎㄏㄐㄑㄒㄓㄔㄕㄖㄗㄘㄙㄚㄛㄜ�����ㄝㄞㄟㄠㄡㄢㄣㄤㄥㄦㄧㄨㄩ˙˟ˊˇˋぢっつづてでとどなにぬねのは①②③④⑤⑥⑦⑧⑨⑩⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽ⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをんァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼ��".split(""); +for(j = 0; j != D[131].length; ++j) if(D[131][j].charCodeAt(0) !== 0xFFFD) { e[D[131][j]] = 33536 + j; d[33536 + j] = D[131][j];} +D[132] = "��������������������������������������������������丶丿�亅�亠�����������冂冖冫����勹��匸��卩�厶�����夂����������宀������巛����幺广廴���彐彡�����������攴����无��������������������������������疒癶��������������������������������������������������������辵��������隶��������������������".split(""); +for(j = 0; j != D[132].length; ++j) if(D[132][j].charCodeAt(0) !== 0xFFFD) { e[D[132][j]] = 33792 + j; d[33792 + j] = D[132][j];} +D[133] = "��������������������������������������������������������������������������������鵙鵖鵌鵗鵒鵔鵟鵘鵚麎麌������黟鼁鼀鼖鼥鼫鼪鼩鼨齌齕儴儵劖勷厴嚫嚭嚦嚧嚪嚬壚壝壛夒�����嬽嬾嬿巃幰徿懻攇攐攍攉攌攎斄旞旝曞櫧櫠櫌櫑櫙櫋櫟櫜櫐櫫櫏櫍櫞歠殰氌瀙瀧瀠瀖瀫瀡瀢瀣瀩瀗瀤瀜爌爊爇爂爅犥犦犤犣犡瓋瓅璷瓃甖癠矉矊矄矱礝礛礡礜礗礞禰穧穨簳簼簹簬簻糬糪繶繵繸繰繷繯繺繲繴繨罋罊羃羆羷翽翾聸臗臕舋艤艡艣藫藱藭藙藡藨藚藗藬藲藸藘藟藣藜藑藰藦藯藞藢��".split(""); +for(j = 0; j != D[133].length; ++j) if(D[133][j].charCodeAt(0) !== 0xFFFD) { e[D[133][j]] = 34048 + j; d[34048 + j] = D[133][j];} +D[134] = "������������������������������������������������蠀蟺蠃蟶蟷蠉蠌蠋蠆蟼�������蠈蟿蠊蠂襢襚襛襗襡襜襘襝襙覈覷覶觶譐譈譊譀譓譖譔譋譕������譑譂譒譗豃豷豶貚贆贇贉趬趪趭趫蹭蹸蹳蹪蹯蹻軂轒轑轏轐�����轓辴酀鄿醰醭鏞鏇鏏鏂鏚鏐鏹鏬鏌鏙鎩鏦鏊鏔鏮鏣鏕鏄鏎鏀鏒鎥鏧镽闚闛雡霩霫霬霨霦鞳鞷鞶韝韞韟顜顙顝顗颿颽颻颾饈饇饃馦馧騚騕騥騝騤騛騢騠騧騣騞騜騔髂鬋鬊鬎鬌鬷鯪鯫鯠鯞鯤鯦鯢鯰鯔鯗鯬鯜鯙鯥鯕鯡鯚鵷鶁鶊鶄鶈鵱鶀鵸鶆鶋鶌鵽鵫鵴鵵鵰鵩鶅鵳鵻鶂鵯鵹鵿鶇鵨麔麑黀黼鼭齀齁��".split(""); +for(j = 0; j != D[134].length; ++j) if(D[134][j].charCodeAt(0) !== 0xFFFD) { e[D[134][j]] = 34304 + j; d[34304 + j] = D[134][j];} +D[135] = "������������������������������������������������齍齖齗齘匷嚲嚵嚳壣孅�������巆巇廮廯忀忁懹攗攖攕攓旟曨曣曤櫳櫰櫪櫨櫹櫱櫮櫯瀼瀵瀯������瀷瀴瀱灂瀸瀿瀺瀹瀪灀瀻瀳灁爓爔犨獽獼璺皫皪皾盭矌矎矏�����矍矲礥礣礧礨礤礩禲穮穬穭竷籉籈籊籇籅糮繻繾纁纀羺翿聹臛臙艨艩蘢藿蘁藾蘛蘀藶蘄蘉蘅蘌藽蠙蠐蠑蠗蠓蠖襣襦覹觷譠譪譝譨譣譥譧譭趮躆躈躄轙轖轗轕轘轚邍酃酁醷醵醲醳鐋鐓鏻鐠鐏鐔鏾鐕鐐鐨鐙鐍鏵鐀鏷鐇鐎鐖鐒鏺鐉鏸鐼鐊鏿鏼鐌鏶鐑鐆闞闠闟霮霯鞹鞻韽韾顠顢顣顟飁飂饐饎饙饌��".split(""); +for(j = 0; j != D[135].length; ++j) if(D[135][j].charCodeAt(0) !== 0xFFFD) { e[D[135][j]] = 34560 + j; d[34560 + j] = D[135][j];} +D[136] = "������������������������������������������������饋饓騲騴騱騬騪騶騩騮�������騸騭髇髊髆鬐鬒鬑鰋鰈鯷鰅鰒鯸鱀鰇鰎鰆鰗鰔鰉鶟鶙鶤鶝鶒������鶘鶐鶛鶠鶔鶜鶪鶗鶡鶚鶢鶨鶞鶣鶿鶩鶖鶦鶧麙麛麚黥黤黧黦�����鼰鼮齛齠齞齝齙龑儺儹劘劗囃嚽嚾孈孇巋巏廱懽攛欂櫼欃櫸欀灃灄灊灈灉灅灆爝爚爙獾甗癪矐礭礱礯籔籓糲纊纇纈纋纆纍罍羻耰臝蘘蘪蘦蘟蘣蘜蘙蘧蘮蘡蘠蘩蘞蘥蠩蠝蠛蠠蠤蠜蠫衊襭襩襮襫觺譹譸譅譺譻贐贔趯躎躌轞轛轝酆酄酅醹鐿鐻鐶鐩鐽鐰鐹鐪鐷鐬鑀鐱闥闤闣霵霺鞿韡顤飉飆飀饘饖��".split(""); +for(j = 0; j != D[136].length; ++j) if(D[136][j].charCodeAt(0) !== 0xFFFD) { e[D[136][j]] = 34816 + j; d[34816 + j] = D[136][j];} +D[137] = "������������������������������������������������騹騽驆驄驂驁騺騿髍鬕�������鬗鬘鬖鬺魒鰫鰝鰜鰬鰣鰨鰩鰤鰡鶷鶶鶼鷁鷇鷊鷏鶾鷅鷃鶻鶵������鷎鶹鶺鶬鷈鶱鶭鷌鶳鷍鶲鹺麜黫黮黭鼛鼘鼚鼱齎齥齤龒亹囆�����囅囋奱孋孌巕巑廲攡攠攦攢欋欈欉氍灕灖灗灒爞爟犩獿瓘瓕瓙瓗癭皭礵禴穰穱籗籜籙籛籚糴糱纑罏羇臞艫蘴蘵蘳蘬蘲蘶蠬蠨蠦蠪蠥襱覿覾觻譾讄讂讆讅譿贕躕躔躚躒躐躖躗轠轢酇鑌鑐鑊鑋鑏鑇鑅鑈鑉鑆霿韣顪顩飋饔饛驎驓驔驌驏驈驊驉驒驐髐鬙鬫鬻魖魕鱆鱈鰿鱄鰹鰳鱁鰼鰷鰴鰲鰽鰶鷛鷒��".split(""); +for(j = 0; j != D[137].length; ++j) if(D[137][j].charCodeAt(0) !== 0xFFFD) { e[D[137][j]] = 35072 + j; d[35072 + j] = D[137][j];} +D[138] = "������������������������������������������������鷞鷚鷋鷐鷜鷑鷟鷩鷙鷘�������鷖鷵鷕鷝麶黰鼵鼳鼲齂齫龕龢儽劙壨壧奲孍巘蠯彏戁戃戄攩������攥斖曫欑欒欏毊灛灚爢玂玁玃癰矔籧籦纕艬蘺虀蘹蘼蘱蘻蘾�����蠰蠲蠮蠳襶襴襳觾讌讎讋讈豅贙躘轤轣醼鑢鑕鑝鑗鑞韄韅頀驖驙鬞鬟鬠鱒鱘鱐鱊鱍鱋鱕鱙鱌鱎鷻鷷鷯鷣鷫鷸鷤鷶鷡鷮鷦鷲鷰鷢鷬鷴鷳鷨鷭黂黐黲黳鼆鼜鼸鼷鼶齃齏齱齰齮齯囓囍孎屭攭曭曮欓灟灡灝灠爣瓛瓥矕礸禷禶籪纗羉艭虃蠸蠷蠵衋讔讕躞躟躠躝醾醽釂鑫鑨鑩雥靆靃靇韇韥驞髕魙鱣鱧��".split(""); +for(j = 0; j != D[138].length; ++j) if(D[138][j].charCodeAt(0) !== 0xFFFD) { e[D[138][j]] = 35328 + j; d[35328 + j] = D[138][j];} +D[139] = "������������������������������������������������鱦鱢鱞鱠鸂鷾鸇鸃鸆鸅�������鸀鸁鸉鷿鷽鸄麠鼞齆齴齵齶囔攮斸欘欙欗欚灢爦犪矘矙礹籩������籫糶纚纘纛纙臠臡虆虇虈襹襺襼襻觿讘讙躥躤躣鑮鑭鑯鑱鑳�����靉顲饟鱨鱮鱭鸋鸍鸐鸏鸒鸑麡黵鼉齇齸齻齺齹圞灦籯蠼趲躦釃鑴鑸鑶鑵驠鬮鱴鱳鱱鱵鸔鸓黶鼊龤灨灥糷虪蠾蠽蠿讞貜躩軉靋顳顴飌饡馫驤驦驧鬤鸕鸗齈戇欞爧虌躨钂钀钁驩驨鸙虋讟钃鱹麷癵驫鱺鸝灩灪爩麤齾齉龘�����������������������������������".split(""); +for(j = 0; j != D[139].length; ++j) if(D[139][j].charCodeAt(0) !== 0xFFFD) { e[D[139][j]] = 35584 + j; d[35584 + j] = D[139][j];} +D[140] = "����������������������������������������������������������������������������".split(""); +for(j = 0; j != D[140].length; ++j) if(D[140][j].charCodeAt(0) !== 0xFFFD) { e[D[140][j]] = 35840 + j; d[35840 + j] = D[140][j];} +D[141] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[141].length; ++j) if(D[141][j].charCodeAt(0) !== 0xFFFD) { e[D[141][j]] = 36096 + j; d[36096 + j] = D[141][j];} +D[142] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[142].length; ++j) if(D[142][j].charCodeAt(0) !== 0xFFFD) { e[D[142][j]] = 36352 + j; d[36352 + j] = D[142][j];} +D[143] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[143].length; ++j) if(D[143][j].charCodeAt(0) !== 0xFFFD) { e[D[143][j]] = 36608 + j; d[36608 + j] = D[143][j];} +D[144] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[144].length; ++j) if(D[144][j].charCodeAt(0) !== 0xFFFD) { e[D[144][j]] = 36864 + j; d[36864 + j] = D[144][j];} +D[145] = "�����������������������������������������������������������������������������������������������������������������������������������¬¦��㈱№℡������������������������".split(""); +for(j = 0; j != D[145].length; ++j) if(D[145][j].charCodeAt(0) !== 0xFFFD) { e[D[145][j]] = 37120 + j; d[37120 + j] = D[145][j];} +D[146] = "����������������������������������������������������������������������������������������������������������������������������������������������������������������一乙丁七乃九了二人儿入八几刀刁力匕十卜又三下丈上丫丸凡久么也乞于亡兀刃勺千叉口土士夕大女子孑孓寸小尢尸山川工己已巳巾干廾弋弓才丑丐不中丰丹之尹予云井互五亢仁什仃仆仇仍今介仄元允內六兮公冗凶��".split(""); +for(j = 0; j != D[146].length; ++j) if(D[146][j].charCodeAt(0) !== 0xFFFD) { e[D[146][j]] = 37376 + j; d[37376 + j] = D[146][j];} +D[147] = "������������������������������������������������分切刈勻勾勿化匹午升�������卅卞厄友及反壬天夫太夭孔少尤尺屯巴幻廿弔引心戈戶手扎������支文斗斤方日曰月木欠止歹毋比毛氏水火爪父爻片牙牛犬王�����丙世丕且丘主乍乏乎以付仔仕他仗代令仙仞充兄冉冊冬凹出凸刊加功包匆北匝仟半卉卡占卯卮去可古右召叮叩叨叼司叵叫另只史叱台句叭叻四囚外央失奴奶孕它尼巨巧左市布平幼弁弘弗必戊打扔扒扑斥旦朮本未末札正母民氐永汁汀氾犯玄玉瓜瓦甘生用甩田由甲申疋白皮皿目矛矢石示禾穴��".split(""); +for(j = 0; j != D[147].length; ++j) if(D[147][j].charCodeAt(0) !== 0xFFFD) { e[D[147][j]] = 37632 + j; d[37632 + j] = D[147][j];} +D[148] = "������������������������������������������������立丞丟乒乓乩亙交亦亥�������仿伉伙伊伕伍伐休伏仲件任仰仳份企伋光兇兆先全共再冰列������刑划刎刖劣匈匡匠印危吉吏同吊吐吁吋各向名合吃后吆吒因�����回囝圳地在圭圬圯圩夙多夷夸妄奸妃好她如妁字存宇守宅安寺尖屹州帆并年式弛忙忖戎戌戍成扣扛托收早旨旬旭曲曳有朽朴朱朵次此死氖汝汗汙江池汐汕污汛汍汎灰牟牝百竹米糸缶羊羽老考而耒耳聿肉肋肌臣自至臼舌舛舟艮色艾虫血行衣西阡串亨位住佇佗佞伴佛何估佐佑伽伺伸佃佔似但��".split(""); +for(j = 0; j != D[148].length; ++j) if(D[148][j].charCodeAt(0) !== 0xFFFD) { e[D[148][j]] = 37888 + j; d[37888 + j] = D[148][j];} +D[149] = "������������������������������������������������佣作你伯低伶余佝佈佚�������兌克免兵冶冷別判利刪刨劫助努劬匣即卵吝吭吞吾否呎吧呆������呃吳呈呂君吩告吹吻吸吮吵吶吠吼呀吱含吟听囪困囤囫坊坑�����址坍均坎圾坐坏圻壯夾妝妒妨妞妣妙妖妍妤妓妊妥孝孜孚孛完宋宏尬局屁尿尾岐岑岔岌巫希序庇床廷弄弟彤形彷役忘忌志忍忱快忸忪戒我抄抗抖技扶抉扭把扼找批扳抒扯折扮投抓抑抆改攻攸旱更束李杏材村杜杖杞杉杆杠杓杗步每求汞沙沁沈沉沅沛汪決沐汰沌汨沖沒汽沃汲汾汴沆汶沍沔沘��".split(""); +for(j = 0; j != D[149].length; ++j) if(D[149][j].charCodeAt(0) !== 0xFFFD) { e[D[149][j]] = 38144 + j; d[38144 + j] = D[149][j];} +D[150] = "������������������������������������������������沂灶灼災灸牢牡牠狄狂�������玖甬甫男甸皂盯矣私秀禿究系罕肖肓肝肘肛肚育良芒芋芍見������角言谷豆豕貝赤走足身車辛辰迂迆迅迄巡邑邢邪邦那酉釆里�����防阮阱阪阬並乖乳事些亞享京佯依侍佳使佬供例來侃佰併侈佩佻侖佾侏侑佺兔兒兕兩具其典冽函刻券刷刺到刮制剁劾劻卒協卓卑卦卷卸卹取叔受味呵咖呸咕咀呻呷咄咒咆呼咐呱呶和咚呢周咋命咎固垃坷坪坩坡坦坤坼夜奉奇奈奄奔妾妻委妹妮姑姆姐姍始姓姊妯妳姒姅孟孤季宗定官宜宙宛尚��".split(""); +for(j = 0; j != D[150].length; ++j) if(D[150][j].charCodeAt(0) !== 0xFFFD) { e[D[150][j]] = 38400 + j; d[38400 + j] = D[150][j];} +D[151] = "������������������������������������������������屈居屆岷岡岸岩岫岱岳�������帘帚帖帕帛帑幸庚店府底庖延弦弧弩往征彿彼忝忠忽念忿怏������怔怯怵怖怪怕怡性怩怫怛或戕房戾所承拉拌拄抿拂抹拒招披�����拓拔拋拈抨抽押拐拙拇拍抵拚抱拘拖拗拆抬拎放斧於旺昔易昌昆昂明昀昏昕昊昇服朋杭枋枕東果杳杷枇枝林杯杰板枉松析杵枚枓杼杪杲欣武歧歿氓氛泣注泳沱泌泥河沽沾沼波沫法泓沸泄油況沮泗泅泱沿治泡泛泊沬泯泜泖泠炕炎炒炊炙爬爭爸版牧物狀狎狙狗狐玩玨玟玫玥甽疝疙疚的盂盲直��".split(""); +for(j = 0; j != D[151].length; ++j) if(D[151][j].charCodeAt(0) !== 0xFFFD) { e[D[151][j]] = 38656 + j; d[38656 + j] = D[151][j];} +D[152] = "������������������������������������������������知矽社祀祁秉秈空穹竺�������糾罔羌羋者肺肥肢肱股肫肩肴肪肯臥臾舍芳芝芙芭芽芟芹花������芬芥芯芸芣芰芾芷虎虱初表軋迎返近邵邸邱邶采金長門阜陀�����阿阻附陂隹雨青非亟亭亮信侵侯便俠俑俏保促侶俘俟俊俗侮俐俄係俚俎俞侷兗冒冑冠剎剃削前剌剋則勇勉勃勁匍南卻厚叛咬哀咨哎哉咸咦咳哇哂咽咪品哄哈咯咫咱咻咩咧咿囿垂型垠垣垢城垮垓奕契奏奎奐姜姘姿姣姨娃姥姪姚姦威姻孩宣宦室客宥封屎屏屍屋峙峒巷帝帥帟幽庠度建弈弭彥很��".split(""); +for(j = 0; j != D[152].length; ++j) if(D[152][j].charCodeAt(0) !== 0xFFFD) { e[D[152][j]] = 38912 + j; d[38912 + j] = D[152][j];} +D[153] = "������������������������������������������������待徊律徇後徉怒思怠急�������怎怨恍恰恨恢恆恃恬恫恪恤扁拜挖按拼拭持拮拽指拱拷拯括������拾拴挑挂政故斫施既春昭映昧是星昨昱昤曷柿染柱柔某柬架�����枯柵柩柯柄柑枴柚查枸柏柞柳枰柙柢柝柒歪殃殆段毒毗氟泉洋洲洪流津洌洱洞洗活洽派洶洛泵洹洧洸洩洮洵洎洫炫為炳炬炯炭炸炮炤爰牲牯牴狩狠狡玷珊玻玲珍珀玳甚甭畏界畎畋疫疤疥疢疣癸皆皇皈盈盆盃盅省盹相眉看盾盼眇矜砂研砌砍祆祉祈祇禹禺科秒秋穿突竿竽籽紂紅紀紉紇約紆缸��".split(""); +for(j = 0; j != D[153].length; ++j) if(D[153][j].charCodeAt(0) !== 0xFFFD) { e[D[153][j]] = 39168 + j; d[39168 + j] = D[153][j];} +D[154] = "������������������������������������������������美羿耐耍耑耶胖胥胚胃�������胄背胡胛胎胞胤胝致舢苧范茅苣苛苦茄若茂茉苒苗英茁苜苔������苑苞苓苟苯茆虐虹虻虺衍衫要觔計訂訃貞負赴赳趴軍軌述迦�����迢迪迥迭迫迤迨郊郎郁郃酋酊重閂限陋陌降面革韋韭音頁風飛食首香乘亳倌倍倣俯倦倥俸倩倖倆值借倚倒們俺倀倔倨俱倡個候倘俳修倭倪俾倫倉兼冤冥冢凍凌准凋剖剜剔剛剝匪卿原厝叟哨唐唁唷哼哥哲唆哺唔哩哭員唉哮哪哦唧唇哽唏圃圄埂埔埋埃堉夏套奘奚娑娘娜娟娛娓姬娠娣娩娥娌娉��".split(""); +for(j = 0; j != D[154].length; ++j) if(D[154][j].charCodeAt(0) !== 0xFFFD) { e[D[154][j]] = 39424 + j; d[39424 + j] = D[154][j];} +D[155] = "������������������������������������������������孫屘宰害家宴宮宵容宸�������射屑展屐峭峽峻峪峨峰島崁峴差席師庫庭座弱徒徑徐恙恣恥������恐恕恭恩息悄悟悚悍悔悌悅悖扇拳挈拿捎挾振捕捂捆捏捉挺�����捐挽挪挫挨捍捌效敉料旁旅時晉晏晃晒晌晅晁書朔朕朗校核案框桓根桂桔栩梳栗桌桑栽柴桐桀格桃株桅栓栘桁殊殉殷氣氧氨氦氤泰浪涕消涇浦浸海浙涓浬涉浮浚浴浩涌涊浹涅浥涔烊烘烤烙烈烏爹特狼狹狽狸狷玆班琉珮珠珪珞畔畝畜畚留疾病症疲疳疽疼疹痂疸皋皰益盍盎眩真眠眨矩砰砧砸��".split(""); +for(j = 0; j != D[155].length; ++j) if(D[155][j].charCodeAt(0) !== 0xFFFD) { e[D[155][j]] = 39680 + j; d[39680 + j] = D[155][j];} +D[156] = "������������������������������������������������砝破砷砥砭砠砟砲祕祐�������祠祟祖神祝祗祚秤秣秧租秦秩秘窄窈站笆笑粉紡紗紋紊素索������純紐紕級紜納紙紛缺罟羔翅翁耆耄耘耕耙耗耽耿胱脂胰脅胭�����胴脆胸胳脈能脊胼胯臭臬舀舐航舫舨般芻茫荒荔荊茸荐草茵茴荏茲茹茶茗荀茱茨荃虔蚊蚪蚓蚤蚩蚌蚣蚜衰衷袁袂衽衹記訐討訌訕訊託訓訖訏訑豈豺豹財貢起躬軒軔軏辱送逆迷退迺迴逃追逅迸邕郡郝郢酒配酌釘針釗釜釙閃院陣陡陛陝除陘陞隻飢馬骨高鬥鬲鬼乾偺偽停假偃偌做偉健偶偎偕偵��".split(""); +for(j = 0; j != D[156].length; ++j) if(D[156][j].charCodeAt(0) !== 0xFFFD) { e[D[156][j]] = 39936 + j; d[39936 + j] = D[156][j];} +D[157] = "������������������������������������������������側偷偏倏偯偭兜冕凰剪�������副勒務勘動匐匏匙匿區匾參曼商啪啦啄啞啡啃啊唱啖問啕唯������啤唸售啜唬啣唳啁啗圈國圉域堅堊堆埠埤基堂堵執培夠奢娶�����婁婉婦婪婀娼婢婚婆婊孰寇寅寄寂宿密尉專將屠屜屝崇崆崎崛崖崢崑崩崔崙崤崧崗巢常帶帳帷康庸庶庵庾張強彗彬彩彫得徙從徘御徠徜恿患悉悠您惋悴惦悽情悻悵惜悼惘惕惆惟悸惚惇戚戛扈掠控捲掖探接捷捧掘措捱掩掉掃掛捫推掄授掙採掬排掏掀捻捩捨捺敝敖救教敗啟敏敘敕敔斜斛斬族��".split(""); +for(j = 0; j != D[157].length; ++j) if(D[157][j].charCodeAt(0) !== 0xFFFD) { e[D[157][j]] = 40192 + j; d[40192 + j] = D[157][j];} +D[158] = "������������������������������������������������旋旌旎晝晚晤晨晦晞曹�������勗望梁梯梢梓梵桿桶梱梧梗械梃棄梭梆梅梔條梨梟梡梂欲殺������毫毬氫涎涼淳淙液淡淌淤添淺清淇淋涯淑涮淞淹涸混淵淅淒�����渚涵淚淫淘淪深淮淨淆淄涪淬涿淦烹焉焊烽烯爽牽犁猜猛猖猓猙率琅琊球理現琍瓠瓶瓷甜產略畦畢異疏痔痕疵痊痍皎盔盒盛眷眾眼眶眸眺硫硃硎祥票祭移窒窕笠笨笛第符笙笞笮粒粗粕絆絃統紮紹紼絀細紳組累終紲紱缽羞羚翌翎習耜聊聆脯脖脣脫脩脰脤舂舵舷舶船莎莞莘荸莢莖莽莫莒莊莓��".split(""); +for(j = 0; j != D[158].length; ++j) if(D[158][j].charCodeAt(0) !== 0xFFFD) { e[D[158][j]] = 40448 + j; d[40448 + j] = D[158][j];} +D[159] = "������������������������������������������������莉莠荷荻荼莆莧處彪蛇�������蛀蚶蛄蚵蛆蛋蚱蚯蛉術袞袈被袒袖袍袋覓規訪訝訣訥許設訟������訛訢豉豚販責貫貨貪貧赧赦趾趺軛軟這逍通逗連速逝逐逕逞�����造透逢逖逛途部郭都酗野釵釦釣釧釭釩閉陪陵陳陸陰陴陶陷陬雀雪雩章竟頂頃魚鳥鹵鹿麥麻傢傍傅備傑傀傖傘傚最凱割剴創剩勞勝勛博厥啻喀喧啼喊喝喘喂喜喪喔喇喋喃喳單喟唾喲喚喻喬喱啾喉喫喙圍堯堪場堤堰報堡堝堠壹壺奠婷媚婿媒媛媧孳孱寒富寓寐尊尋就嵌嵐崴嵇巽幅帽幀幃幾廊��".split(""); +for(j = 0; j != D[159].length; ++j) if(D[159][j].charCodeAt(0) !== 0xFFFD) { e[D[159][j]] = 40704 + j; d[40704 + j] = D[159][j];} +D[160] = "������������������������������������������������廁廂廄弼彭復循徨惑惡�������悲悶惠愜愣惺愕惰惻惴慨惱愎惶愉愀愒戟扉掣掌描揀揩揉揆������揍插揣提握揖揭揮捶援揪換摒揚揹敞敦敢散斑斐斯普晰晴晶�����景暑智晾晷曾替期朝棺棕棠棘棗椅棟棵森棧棹棒棲棣棋棍植椒椎棉棚楮棻款欺欽殘殖殼毯氮氯氬港游湔渡渲湧湊渠渥渣減湛湘渤湖湮渭渦湯渴湍渺測湃渝渾滋溉渙湎湣湄湲湩湟焙焚焦焰無然煮焜牌犄犀猶猥猴猩琺琪琳琢琥琵琶琴琯琛琦琨甥甦畫番痢痛痣痙痘痞痠登發皖皓皴盜睏短硝硬硯��".split(""); +for(j = 0; j != D[160].length; ++j) if(D[160][j].charCodeAt(0) !== 0xFFFD) { e[D[160][j]] = 40960 + j; d[40960 + j] = D[160][j];} +D[161] = "������������������������������������������������稍稈程稅稀窘窗窖童竣�������等策筆筐筒答筍筋筏筑粟粥絞結絨絕紫絮絲絡給絢絰絳善翔������翕耋聒肅腕腔腋腑腎脹腆脾腌腓腴舒舜菩萃菸萍菠菅萋菁華�����菱菴著萊菰萌菌菽菲菊萸萎萄菜萇菔菟虛蛟蛙蛭蛔蛛蛤蛐蛞街裁裂袱覃視註詠評詞証詁詔詛詐詆訴診訶詖象貂貯貼貳貽賁費賀貴買貶貿貸越超趁跎距跋跚跑跌跛跆軻軸軼辜逮逵週逸進逶鄂郵鄉郾酣酥量鈔鈕鈣鈉鈞鈍鈐鈇鈑閔閏開閑間閒閎隊階隋陽隅隆隍陲隄雁雅雄集雇雯雲韌項順須飧飪��".split(""); +for(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];} +D[162] = "������������������������������������������������飯飩飲飭馮馭黃黍黑亂�������傭債傲傳僅傾催傷傻傯僇剿剷剽募勦勤勢勣匯嗟嗨嗓嗦嗎嗜������嗇嗑嗣嗤嗯嗚嗡嗅嗆嗥嗉園圓塞塑塘塗塚塔填塌塭塊塢塒塋�����奧嫁嫉嫌媾媽媼媳嫂媲嵩嵯幌幹廉廈弒彙徬微愚意慈感想愛惹愁愈慎慌慄慍愾愴愧愍愆愷戡戢搓搾搞搪搭搽搬搏搜搔損搶搖搗搆敬斟新暗暉暇暈暖暄暘暍會榔業楚楷楠楔極椰概楊楨楫楞楓楹榆楝楣楛歇歲毀殿毓毽溢溯滓溶滂源溝滇滅溥溘溼溺溫滑準溜滄滔溪溧溴煎煙煩煤煉照煜煬煦煌煥��".split(""); +for(j = 0; j != D[162].length; ++j) if(D[162][j].charCodeAt(0) !== 0xFFFD) { e[D[162][j]] = 41472 + j; d[41472 + j] = D[162][j];} +D[163] = "������������������������������������������������煞煆煨煖爺牒猷獅猿猾�������瑯瑚瑕瑟瑞瑁琿瑙瑛瑜當畸瘀痰瘁痲痱痺痿痴痳盞盟睛睫睦������睞督睹睪睬睜睥睨睢矮碎碰碗碘碌碉硼碑碓硿祺祿禁萬禽稜�����稚稠稔稟稞窟窠筷節筠筮筧粱粳粵經絹綑綁綏絛置罩罪署義羨群聖聘肆肄腱腰腸腥腮腳腫腹腺腦舅艇蒂葷落萱葵葦葫葉葬葛萼萵葡董葩葭葆虞虜號蛹蜓蜈蜇蜀蛾蛻蜂蜃蜆蜊衙裟裔裙補裘裝裡裊裕裒覜解詫該詳試詩詰誇詼詣誠話誅詭詢詮詬詹詻訾詨豢貊貉賊資賈賄貲賃賂賅跡跟跨路跳跺跪��".split(""); +for(j = 0; j != D[163].length; ++j) if(D[163][j].charCodeAt(0) !== 0xFFFD) { e[D[163][j]] = 41728 + j; d[41728 + j] = D[163][j];} +D[164] = "������������������������������������������������跤跦躲較載軾輊辟農運�������遊道遂達逼違遐遇遏過遍遑逾遁鄒鄗酬酪酩釉鈷鉗鈸鈽鉀鈾������鉛鉋鉤鉑鈴鉉鉍鉅鈹鈿鉚閘隘隔隕雍雋雉雊雷電雹零靖靴靶�����預頑頓頊頒頌飼飴飽飾馳馱馴髡鳩麂鼎鼓鼠僧僮僥僖僭僚僕像僑僱僎僩兢凳劃劂匱厭嗾嘀嘛嘗嗽嘔嘆嘉嘍嘎嗷嘖嘟嘈嘐嗶團圖塵塾境墓墊塹墅塽壽夥夢夤奪奩嫡嫦嫩嫗嫖嫘嫣孵寞寧寡寥實寨寢寤察對屢嶄嶇幛幣幕幗幔廓廖弊彆彰徹慇愿態慷慢慣慟慚慘慵截撇摘摔撤摸摟摺摑摧搴摭摻敲斡��".split(""); +for(j = 0; j != D[164].length; ++j) if(D[164][j].charCodeAt(0) !== 0xFFFD) { e[D[164][j]] = 41984 + j; d[41984 + j] = D[164][j];} +D[165] = "������������������������������������������������旗旖暢暨暝榜榨榕槁榮�������槓構榛榷榻榫榴槐槍榭槌榦槃榣歉歌氳漳演滾漓滴漩漾漠漬������漏漂漢滿滯漆漱漸漲漣漕漫漯澈漪滬漁滲滌滷熔熙煽熊熄熒�����爾犒犖獄獐瑤瑣瑪瑰瑭甄疑瘧瘍瘋瘉瘓盡監瞄睽睿睡磁碟碧碳碩碣禎福禍種稱窪窩竭端管箕箋筵算箝箔箏箸箇箄粹粽精綻綰綜綽綾綠緊綴網綱綺綢綿綵綸維緒緇綬罰翠翡翟聞聚肇腐膀膏膈膊腿膂臧臺與舔舞艋蓉蒿蓆蓄蒙蒞蒲蒜蓋蒸蓀蓓蒐蒼蓑蓊蜿蜜蜻蜢蜥蜴蜘蝕蜷蜩裳褂裴裹裸製裨褚裯��".split(""); +for(j = 0; j != D[165].length; ++j) if(D[165][j].charCodeAt(0) !== 0xFFFD) { e[D[165][j]] = 42240 + j; d[42240 + j] = D[165][j];} +D[166] = "������������������������������������������������誦誌語誣認誡誓誤說誥�������誨誘誑誚誧豪貍貌賓賑賒赫趙趕跼輔輒輕輓辣遠遘遜遣遙遞������遢遝遛鄙鄘鄞酵酸酷酴鉸銬銀銅銘銖鉻銓銜銨鉼銑閡閨閩閣�����閥閤隙障際雌雒需靼鞅韶頗領颯颱餃餅餌餉駁骯骰髦魁魂鳴鳶鳳麼鼻齊億儀僻僵價儂儈儉儅凜劇劈劉劍劊勰厲嘮嘻嘹嘲嘿嘴嘩噓噎噗噴嘶嘯嘰墀墟增墳墜墮墩墦奭嬉嫻嬋嫵嬌嬈寮寬審寫層履嶝嶔幢幟幡廢廚廟廝廣廠彈影德徵慶慧慮慝慕憂慼慰慫慾憧憐憫憎憬憚憤憔憮戮摩摯摹撞撲撈撐撰��".split(""); +for(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];} +D[167] = "������������������������������������������������撥撓撕撩撒撮播撫撚撬�������撙撢撳敵敷數暮暫暴暱樣樟槨樁樞標槽模樓樊槳樂樅槭樑歐������歎殤毅毆漿潼澄潑潦潔澆潭潛潸潮澎潺潰潤澗潘滕潯潠潟熟�����熬熱熨牖犛獎獗瑩璋璃瑾璀畿瘠瘩瘟瘤瘦瘡瘢皚皺盤瞎瞇瞌瞑瞋磋磅確磊碾磕碼磐稿稼穀稽稷稻窯窮箭箱範箴篆篇篁箠篌糊締練緯緻緘緬緝編緣線緞緩綞緙緲緹罵罷羯翩耦膛膜膝膠膚膘蔗蔽蔚蓮蔬蔭蔓蔑蔣蔡蔔蓬蔥蓿蔆螂蝴蝶蝠蝦蝸蝨蝙蝗蝌蝓衛衝褐複褒褓褕褊誼諒談諄誕請諸課諉諂調��".split(""); +for(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];} +D[168] = "������������������������������������������������誰論諍誶誹諛豌豎豬賠�������賞賦賤賬賭賢賣賜質賡赭趟趣踫踐踝踢踏踩踟踡踞躺輝輛輟������輩輦輪輜輞輥適遮遨遭遷鄰鄭鄧鄱醇醉醋醃鋅銻銷鋪鋤鋁銳�����銼鋒鋇鋰銲閭閱霄霆震霉靠鞍鞋鞏頡頫頜颳養餓餒餘駝駐駟駛駑駕駒駙骷髮髯鬧魅魄魷魯鴆鴉鴃麩麾黎墨齒儒儘儔儐儕冀冪凝劑劓勳噙噫噹噩噤噸噪器噥噱噯噬噢噶壁墾壇壅奮嬝嬴學寰導彊憲憑憩憊懍憶憾懊懈戰擅擁擋撻撼據擄擇擂操撿擒擔撾整曆曉暹曄曇暸樽樸樺橙橫橘樹橄橢橡橋橇��".split(""); +for(j = 0; j != D[168].length; ++j) if(D[168][j].charCodeAt(0) !== 0xFFFD) { e[D[168][j]] = 43008 + j; d[43008 + j] = D[168][j];} +D[169] = "������������������������������������������������樵機橈歙歷氅濂澱澡濃�������澤濁澧澳激澹澶澦澠澴熾燉燐燒燈燕熹燎燙燜燃燄獨璜璣璘������璟璞瓢甌甍瘴瘸瘺盧盥瞠瞞瞟瞥磨磚磬磧禦積穎穆穌穋窺篙�����簑築篤篛篡篩篦糕糖縊縑縈縛縣縞縝縉縐罹羲翰翱翮耨膳膩膨臻興艘艙蕊蕙蕈蕨蕩蕃蕉蕭蕪蕞螃螟螞螢融衡褪褲褥褫褡親覦諦諺諫諱謀諜諧諮諾謁謂諷諭諳諶諼豫豭貓賴蹄踱踴蹂踹踵輻輯輸輳辨辦遵遴選遲遼遺鄴醒錠錶鋸錳錯錢鋼錫錄錚錐錦錡錕錮錙閻隧隨險雕霎霑霖霍霓霏靛靜靦鞘頰��".split(""); +for(j = 0; j != D[169].length; ++j) if(D[169][j].charCodeAt(0) !== 0xFFFD) { e[D[169][j]] = 43264 + j; d[43264 + j] = D[169][j];} +D[170] = "������������������������������������������������頸頻頷頭頹頤餐館餞餛�������餡餚駭駢駱骸骼髻髭鬨鮑鴕鴣鴦鴨鴒鴛默黔龍龜優償儡儲勵������嚎嚀嚐嚅嚇嚏壕壓壑壎嬰嬪嬤孺尷屨嶼嶺嶽嶸幫彌徽應懂懇�����懦懋戲戴擎擊擘擠擰擦擬擱擢擭斂斃曙曖檀檔檄檢檜櫛檣橾檗檐檠歜殮毚氈濘濱濟濠濛濤濫濯澀濬濡濩濕濮濰燧營燮燦燥燭燬燴燠爵牆獰獲璩環璦璨癆療癌盪瞳瞪瞰瞬瞧瞭矯磷磺磴磯礁禧禪穗窿簇簍篾篷簌篠糠糜糞糢糟糙糝縮績繆縷縲繃縫總縱繅繁縴縹繈縵縿縯罄翳翼聱聲聰聯聳臆臃膺��".split(""); +for(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];} +D[171] = "������������������������������������������������臂臀膿膽臉膾臨舉艱薪�������薄蕾薜薑薔薯薛薇薨薊薦虧蟀蟑螳蟒蟆螫螻螺蟈蟋褻褶襄褸������褽覬謎謗謙講謊謠謝謄謐豁谿豳賺賽購賸賻趨蹉蹋蹈蹊轄輾�����轂轅輿避遽還邁邂邀鄹醣醞醜鍍鎂錨鍵鍊鍥鍋錘鍾鍬鍛鍰鍚鍔闊闋闌闈闆隱隸雖霜霞鞠韓顆颶餵騁駿鮮鮫鮪鮭鴻鴿麋黏點黜黝黛鼾齋叢嚕嚮壙壘嬸彝懣戳擴擲擾攆擺擻擷斷曜朦檳檬櫃檻檸櫂檮檯歟歸殯瀉瀋濾瀆濺瀑瀏燻燼燾燸獷獵璧璿甕癖癘癒瞽瞿瞻瞼礎禮穡穢穠竄竅簫簧簪簞簣簡糧織��".split(""); +for(j = 0; j != D[171].length; ++j) if(D[171][j].charCodeAt(0) !== 0xFFFD) { e[D[171][j]] = 43776 + j; d[43776 + j] = D[171][j];} +D[172] = "������������������������������������������������繕繞繚繡繒繙罈翹翻職�������聶臍臏舊藏薩藍藐藉薰薺薹蟯蟬蟲蟠覆覲觴謨謹謬謫豐贅蹙������蹣蹦蹤蹟蹕軀轉轍邇邃邈醫醬釐鎔鎊鎖鎢鎳鎮鎬鎰鎘鎚鎗闔�����闖闐闕離雜雙雛雞霤鞣鞦鞭韹額顏題顎顓颺餾餿餽餮馥騎髁鬃鬆魏魎魍鯊鯉鯽鯈鯀鵑鵝鵠黠鼕鼬儳嚥嚨壞壟壢寵龐廬懲懷懶懵攀攏曠曝櫥櫝櫚櫓瀛瀟瀨瀚瀝瀕瀘爆爍牘犢獸獺璽瓊瓣疇疆癟癡矇礙禱穫穩簾簿簸簽簷籀繫繭繹繩繪繳羅羶羹羸臘藩藝藪藕藤藥藷蟻蠅蠍蟹蟾襠襟襖襞譁譜識證譚��".split(""); +for(j = 0; j != D[172].length; ++j) if(D[172][j].charCodeAt(0) !== 0xFFFD) { e[D[172][j]] = 44032 + j; d[44032 + j] = D[172][j];} +D[173] = "������������������������������������������������譎譏譆譙贈贊蹼蹲躇蹶�������蹬蹺蹴轔轎辭邊邋醱醮鏡鏑鏟鏃鏈鏜鏝鏖鏢鏍鏘鏤鏗鏨關隴������難霪霧靡韜韻類願顛颼饅饉騖騙鬍鯨鯧鯖鯛鶉鵡鵲鵪鵬麒麗�����麓麴勸嚷嚶嚴嚼壤孀孃孽寶巉懸懺攘攔攙曦朧櫬瀾瀰瀲爐獻瓏癢癥礦礪礬礫竇競籌籃籍糯糰辮繽繼纂罌耀臚艦藻藹蘑藺蘆蘋蘇蘊蠔蠕襤覺觸議譬警譯譟譫贏贍躉躁躅躂醴釋鐘鐃鏽闡霰飄饒饑馨騫騰騷騵鰓鰍鹹麵黨鼯齟齣齡儷儸囁囀囂夔屬巍懼懾攝攜斕曩櫻欄櫺殲灌爛犧瓖瓔癩矓籐纏續羼��".split(""); +for(j = 0; j != D[173].length; ++j) if(D[173][j].charCodeAt(0) !== 0xFFFD) { e[D[173][j]] = 44288 + j; d[44288 + j] = D[173][j];} +D[174] = "������������������������������������������������蘗蘭蘚蠣蠢蠡蠟襪襬覽�������譴護譽贓躊躍躋轟辯醺鐮鐳鐵鐺鐸鐲鐫闢霸霹露響顧顥饗驅������驃驀騾髏魔魑鰭鰥鶯鶴鷂鶸麝黯鼙齜齦齧儼儻囈囊囉孿巔巒�����彎懿攤權歡灑灘玀瓤疊癮癬禳籠籟聾聽臟襲襯觼讀贖贗躑躓轡酈鑄鑑鑒霽霾韃韁顫饕驕驍髒鬚鱉鰱鰾鰻鷓鷗鼴齬齪龔囌巖戀攣攫攪曬欐瓚竊籤籣籥纓纖纔臢蘸蘿蠱變邐邏鑣鑠鑤靨顯饜驚驛驗髓體髑鱔鱗鱖鷥麟黴囑壩攬灞癱癲矗罐羈蠶蠹衢讓讒讖艷贛釀鑪靂靈靄韆顰驟鬢魘鱟鷹鷺鹼鹽鼇齷��".split(""); +for(j = 0; j != D[174].length; ++j) if(D[174][j].charCodeAt(0) !== 0xFFFD) { e[D[174][j]] = 44544 + j; d[44544 + j] = D[174][j];} +D[175] = "������������������������������������������������齲廳欖灣籬籮蠻觀躡釁�������鑲鑰顱饞髖鬣黌灤矚讚鑷韉驢驥纜讜躪釅鑽鑾鑼鱷鱸黷豔鑿������鸚爨驪鬱鸛鸞籲ソゾタダチヂッツヅテデトドナニヌネノハ�����バパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдеёжзийклмнопрстуфхцчшщъыьэюя⇧↸↹��䅚ク刂�冈�������������".split(""); +for(j = 0; j != D[175].length; ++j) if(D[175][j].charCodeAt(0) !== 0xFFFD) { e[D[175][j]] = 44800 + j; d[44800 + j] = D[175][j];} +D[221] = "������������������������������������������������乂乜凵匚厂万丌乇亍囗�������屮彳丏冇与丮亓仂仉仈冘勼卬厹圠夃夬尐巿旡殳毌气爿丱丼������仨仜仩仡仝仚刌刉匜卌圢圣夗夯宁宄尒尻屴屳帄庀庂忉戉扐�����氕氶汃氿氻犮犰玊禸肊阞伎优伬仵伔仱伀价伈伝伂伅伢伓伄仴伒冱刓刐劦匢匟卍厊吇囡囟圮圪圴夼妀奼妅奻奾奷奿孖尕尥屼屺屻屾巟幵庄异弚彴忕忔忏扜扞扤扡扦扢扙扠扚扥攷旯旮朾朹朸朻机朿朼朳氘汆汒汜汏汊汔汋汌灱牞犴犵玎甪癿穵网艸艼芀艽艿虍襾邙邗邘邛邔阢阤阠阣佖伻佢佉体��".split(""); +for(j = 0; j != D[221].length; ++j) if(D[221][j].charCodeAt(0) !== 0xFFFD) { e[D[221][j]] = 56576 + j; d[56576 + j] = D[221][j];} +D[222] = "������������������������������������������������佤伾佧佒佟佁佘伭伳伿�������佡冏冹刜刞刡劭劮匉卣卲厎厏吰吷吪呔呅吙吜吥吘吽呏呁吨������吤呇囮囧囥坁坅坌坉坋坒夆奀妦妘妠妗妎妢妐妏妧妡宎宒尨�����尪岍岏岈岋岉岒岊岆岓岕巠帊帎庋庉庌庈庍弅弝彸彶忒忑忐忭忨忮忳忡忤忣忺忯忷忻怀忴戺抃抌抎抏抔抇扱扻扺扰抁抈扷扽扲扴旰旴旳旲旵杅杇杙杕杌杈杝杍杚杋毐氙氚汸汧汫沄沋沏汱汯汩沚汭沇沕沜汦汳汥汻沎灴灺牣犿犽狃狆狁犺狅玕玗玓玔玒町甹疔疕皁礽耴肕肙肐肒肜芐芏芅芎芑芓��".split(""); +for(j = 0; j != D[222].length; ++j) if(D[222][j].charCodeAt(0) !== 0xFFFD) { e[D[222][j]] = 56832 + j; d[56832 + j] = D[222][j];} +D[223] = "������������������������������������������������芊芃芄豸迉辿邟邡邥邞�������邧邠阰阨阯阭丳侘佼侅佽侀侇佶佴侉侄佷佌侗佪侚佹侁佸侐������侜侔侞侒侂侕佫佮冞冼冾刵刲刳剆刱劼匊匋匼厒厔咇呿咁咑�����咂咈呫呺呾呥呬呴呦咍呯呡呠咘呣呧呤囷囹坯坲坭坫坱坰坶垀坵坻坳坴坢坨坽夌奅妵妺姏姎妲姌姁妶妼姃姖妱妽姀姈妴姇孢孥宓宕屄屇岮岤岠岵岯岨岬岟岣岭岢岪岧岝岥岶岰岦帗帔帙弨弢弣弤彔徂彾彽忞忥怭怦怙怲怋怴怊怗怳怚怞怬怢怍怐怮怓怑怌怉怜戔戽抭抴拑抾抪抶拊抮抳抯抻抩抰��".split(""); +for(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];} +D[224] = "������������������������������������������������抸攽斨斻昉旼昄昒昈旻�������昃昋昍昅旽昑昐曶朊枅杬枎枒杶杻枘枆构杴枍枌杺枟枑枙枃������杽极杸杹枔欥殀歾毞氝沓泬泫泮泙沶泔沭泧沷泐泂沺泃泆泭�����泲泒泝沴沊沝沀泞泀洰泍泇沰泹泏泩泑炔炘炅炓炆炄炑炖炂炚炃牪狖狋狘狉狜狒狔狚狌狑玤玡玭玦玢玠玬玝瓝瓨甿畀甾疌疘皯盳盱盰盵矸矼矹矻矺矷祂礿秅穸穻竻籵糽耵肏肮肣肸肵肭舠芠苀芫芚芘芛芵芧芮芼芞芺芴芨芡芩苂芤苃芶芢虰虯虭虮豖迒迋迓迍迖迕迗邲邴邯邳邰阹阽阼阺陃俍俅��".split(""); +for(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];} +D[225] = "������������������������������������������������俓侲俉俋俁俔俜俙侻侳�������俛俇俖侺俀侹俬剄剉勀勂匽卼厗厖厙厘咺咡咭咥哏哃茍咷咮������哖咶哅哆咠呰咼咢咾呲哞咰垵垞垟垤垌垗垝垛垔垘垏垙垥垚�����垕壴复奓姡姞姮娀姱姝姺姽姼姶姤姲姷姛姩姳姵姠姾姴姭宨屌峐峘峌峗峋峛峞峚峉峇峊峖峓峔峏峈峆峎峟峸巹帡帢帣帠帤庰庤庢庛庣庥弇弮彖徆怷怹恔恲恞恅恓恇恉恛恌恀恂恟怤恄恘恦恮扂扃拏挍挋拵挎挃拫拹挏挌拸拶挀挓挔拺挕拻拰敁敃斪斿昶昡昲昵昜昦昢昳昫昺昝昴昹昮朏朐柁柲柈��".split(""); +for(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];} +D[226] = "������������������������������������������������枺柜枻柸柘柀枷柅柫柤�������柟枵柍枳柷柶柮柣柂枹柎柧柰枲柼柆柭柌枮柦柛柺柉柊柃柪������柋欨殂殄殶毖毘毠氠氡洨洴洭洟洼洿洒洊泚洳洄洙洺洚洑洀�����洝浂洁洘洷洃洏浀洇洠洬洈洢洉洐炷炟炾炱炰炡炴炵炩牁牉牊牬牰牳牮狊狤狨狫狟狪狦狣玅珌珂珈珅玹玶玵玴珫玿珇玾珃珆玸珋瓬瓮甮畇畈疧疪癹盄眈眃眄眅眊盷盻盺矧矨砆砑砒砅砐砏砎砉砃砓祊祌祋祅祄秕种秏秖秎窀穾竑笀笁籺籸籹籿粀粁紃紈紁罘羑羍羾耇耎耏耔耷胘胇胠胑胈胂胐胅��".split(""); +for(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];} +D[227] = "������������������������������������������������胣胙胜胊胕胉胏胗胦胍�������臿舡芔苙苾苹茇苨茀苕茺苫苖苴苬苡苲苵茌苻苶苰苪苤苠苺������苳苭虷虴虼虳衁衎衧衪衩觓訄訇赲迣迡迮迠郱邽邿郕郅邾郇�����郋郈釔釓陔陏陑陓陊陎倞倅倇倓倢倰倛俵俴倳倷倬俶俷倗倜倠倧倵倯倱倎党冔冓凊凄凅凈凎剡剚剒剞剟剕剢勍匎厞唦哢唗唒哧哳哤唚哿唄唈哫唑唅哱唊哻哷哸哠唎唃唋圁圂埌堲埕埒垺埆垽垼垸垶垿埇埐垹埁夎奊娙娖娭娮娕娏娗娊娞娳孬宧宭宬尃屖屔峬峿峮峱峷崀峹帩帨庨庮庪庬弳弰彧恝��".split(""); +for(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];} +D[228] = "������������������������������������������������恚恧恁悢悈悀悒悁悝悃�������悕悛悗悇悜悎戙扆拲挐捖挬捄捅挶捃揤挹捋捊挼挩捁挴捘捔������捙挭捇挳捚捑挸捗捀捈敊敆旆旃旄旂晊晟晇晑朒朓栟栚桉栲�����栳栻桋桏栖栱栜栵栫栭栯桎桄栴栝栒栔栦栨栮桍栺栥栠欬欯欭欱欴歭肂殈毦毤毨毣毢毧氥浺浣浤浶洍浡涒浘浢浭浯涑涍淯浿涆浞浧浠涗浰浼浟涂涘洯浨涋浾涀涄洖涃浻浽浵涐烜烓烑烝烋缹烢烗烒烞烠烔烍烅烆烇烚烎烡牂牸牷牶猀狺狴狾狶狳狻猁珓珙珥珖玼珧珣珩珜珒珛珔珝珚珗珘珨瓞瓟��".split(""); +for(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];} +D[229] = "������������������������������������������������瓴瓵甡畛畟疰痁疻痄痀�������疿疶疺皊盉眝眛眐眓眒眣眑眕眙眚眢眧砣砬砢砵砯砨砮砫砡������砩砳砪砱祔祛祏祜祓祒祑秫秬秠秮秭秪秜秞秝窆窉窅窋窌窊�����窇竘笐笄笓笅笏笈笊笎笉笒粄粑粊粌粈粍粅紞紝紑紎紘紖紓紟紒紏紌罜罡罞罠罝罛羖羒翃翂翀耖耾耹胺胲胹胵脁胻脀舁舯舥茳茭荄茙荑茥荖茿荁茦茜茢荂荎茛茪茈茼荍茖茤茠茷茯茩荇荅荌荓茞茬荋茧荈虓虒蚢蚨蚖蚍蚑蚞蚇蚗蚆蚋蚚蚅蚥蚙蚡蚧蚕蚘蚎蚝蚐蚔衃衄衭衵衶衲袀衱衿衯袃衾衴衼��".split(""); +for(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];} +D[230] = "������������������������������������������������訒豇豗豻貤貣赶赸趵趷�������趶軑軓迾迵适迿迻逄迼迶郖郠郙郚郣郟郥郘郛郗郜郤酐酎酏������釕釢釚陜陟隼飣髟鬯乿偰偪偡偞偠偓偋偝偲偈偍偁偛偊偢倕�����偅偟偩偫偣偤偆偀偮偳偗偑凐剫剭剬剮勖勓匭厜啵啶唼啍啐唴唪啑啢唶唵唰啒啅唌唲啥啎唹啈唭唻啀啋圊圇埻堔埢埶埜埴堀埭埽堈埸堋埳埏堇埮埣埲埥埬埡堎埼堐埧堁堌埱埩埰堍堄奜婠婘婕婧婞娸娵婭婐婟婥婬婓婤婗婃婝婒婄婛婈媎娾婍娹婌婰婩婇婑婖婂婜孲孮寁寀屙崞崋崝崚崠崌崨崍��".split(""); +for(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];} +D[231] = "������������������������������������������������崦崥崏崰崒崣崟崮帾帴�������庱庴庹庲庳弶弸徛徖徟悊悐悆悾悰悺惓惔惏惤惙惝惈悱惛悷������惊悿惃惍惀挲捥掊掂捽掽掞掭掝掗掫掎捯掇掐据掯捵掜捭掮�����捼掤挻掟捸掅掁掑掍捰敓旍晥晡晛晙晜晢朘桹梇梐梜桭桮梮梫楖桯梣梬梩桵桴梲梏桷梒桼桫桲梪梀桱桾梛梖梋梠梉梤桸桻梑梌梊桽欶欳欷欸殑殏殍殎殌氪淀涫涴涳湴涬淩淢涷淶淔渀淈淠淟淖涾淥淜淝淛淴淊涽淭淰涺淕淂淏淉淐淲淓淽淗淍淣涻烺焍烷焗烴焌烰焄烳焐烼烿焆焓焀烸烶焋焂焎��".split(""); +for(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];} +D[232] = "������������������������������������������������牾牻牼牿猝猗猇猑猘猊�������猈狿猏猞玈珶珸珵琄琁珽琇琀珺珼珿琌琋珴琈畤畣痎痒痏痋������痌痑痐皏皉盓眹眯眭眱眲眴眳眽眥眻眵硈硒硉硍硊硌砦硅硐�����祤祧祩祪祣祫祡离秺秸秶秷窏窔窐笵笻笴笥笰笢笤笳笘笪笝笱笫笭笯笲笸笚笣粔粘粖粣紵紽紸紶紺絅紬紩絁絇紾紿絊紻紨罣羕羜羝羛翊翋翍翐翑翇翏翉耟耞耛聇聃聈脘脥脙脛脭脟脬脞脡脕脧脝脢舑舸舳舺舴舲艴莐莣莨莍荺荳莤荴莏莁莕莙荵莔莩荽莃莌莝莛莪莋荾莥莯莈莗莰荿莦莇莮荶虙��".split(""); +for(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];} +D[233] = "������������������������������������������������虖蚿蚷蛂蛁蛅蚺蚰蛈蚹�������蚳蚸蛌蚴蚻蚼蛃蚽蚾衒袉袕袨袢袪袚袑袡袟袘袧袙袛袗袤袬������袌袓袎覂觖觙觕訰訧訬訞谹谻豜豝豽貥赽赻赹趼跂趹趿跁軘�����軞軝軜軗軠軡逤逋逑逜逌逡郯郪郰郴郲郳郔郫郬郩酖酘酚酓酕釬釴釱釳釸釤釹釪釫釷釨釮镺閆閈陼陭陫陱陯隿靪頄飥馗傛傕傔傞傋傣傃傌傎傝偨傜傒傂傇兟凔匒匑厤厧喑喨喥喭啷噅喢喓喈喏喵喁喣喒喤啽喌喦啿喕喡喎圌堩堷堙堞堧堣堨埵塈堥堜堛堳堿堶堮堹堸堭堬堻奡媯媔媟婺媢媞婸媦��".split(""); +for(j = 0; j != D[233].length; ++j) if(D[233][j].charCodeAt(0) !== 0xFFFD) { e[D[233][j]] = 59648 + j; d[59648 + j] = D[233][j];} +D[234] = "������������������������������������������������婼媥媬媕媮娷媄媊媗媃�������媋媩婻婽媌媜媏媓媝寪寍寋寔寑寊寎尌尰崷嵃嵫嵁嵋崿崵嵑������嵎嵕崳崺嵒崽崱嵙嵂崹嵉崸崼崲崶嵀嵅幄幁彘徦徥徫惉悹惌�����惢惎惄愔惲愊愖愅惵愓惸惼惾惁愃愘愝愐惿愄愋扊掔掱掰揎揥揨揯揃撝揳揊揠揶揕揲揵摡揟掾揝揜揄揘揓揂揇揌揋揈揰揗揙攲敧敪敤敜敨敥斌斝斞斮旐旒晼晬晻暀晱晹晪晲朁椌棓椄棜椪棬棪棱椏棖棷棫棤棶椓椐棳棡椇棌椈楰梴椑棯棆椔棸棐棽棼棨椋椊椗棎棈棝棞棦棴棑椆棔棩椕椥棇欹欻��".split(""); +for(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];} +D[235] = "������������������������������������������������欿欼殔殗殙殕殽毰毲毳�������氰淼湆湇渟湉溈渼渽湅湢渫渿湁湝湳渜渳湋湀湑渻渃渮湞湨������湜湡渱渨湠湱湫渹渢渰湓湥渧湸湤湷湕湹湒湦渵渶湚焠焞焯�����烻焮焱焣焥焢焲焟焨焺焛牋牚犈犉犆犅犋猒猋猰猢猱猳猧猲猭猦猣猵猌琮琬琰琫琖琚琡琭琱琤琣琝琩琠琲瓻甯畯畬痧痚痡痦痝痟痤痗皕皒盚睆睇睄睍睅睊睎睋睌矞矬硠硤硥硜硭硱硪确硰硩硨硞硢祴祳祲祰稂稊稃稌稄窙竦竤筊筇筄筈筌筎筀筘筅粢粞粨粡絘絯絣絓絖絧絪絏絭絜絫絒絔絩絑絟��".split(""); +for(j = 0; j != D[235].length; ++j) if(D[235][j].charCodeAt(0) !== 0xFFFD) { e[D[235][j]] = 60160 + j; d[60160 + j] = D[235][j];} +D[236] = "������������������������������������������������絎缾缿罥罦羢羠羡翗聑�������聏聐胾胔腃腊腒腏腇脽腍脺臦臮臷臸臹舄舼舽舿艵茻菏菹萣������菀菨萒菧菤菼菶萐菆菈菫菣莿萁菝菥菘菿菡菋菎菖菵菉萉萏�����菞萑萆菂菳菕菺菇菑菪萓莚菃菬菮菄菻菗菢萛菛菾蛘蛢蛦蛓蛣蛚蛪蛝蛫蛜蛬蛩蛗蛨蛑衈衖衕袺裗袹袸裀袾袶袼袷袽袲褁裉覕覘覗觝觚觛詎詍訹詙詀詗詘詄詅詒詈詑詊詌詏豟貁貀貺貾貰貹貵趄趀趉跘跓跍跇跖跜跏跕跙跈跗跅軯軷軺軹軦軮軥軵軧軨軶軫軱軬軴軩逭逴逯鄆鄬鄄郿郼鄈郹郻鄁鄀��".split(""); +for(j = 0; j != D[236].length; ++j) if(D[236][j].charCodeAt(0) !== 0xFFFD) { e[D[236][j]] = 60416 + j; d[60416 + j] = D[236][j];} +D[237] = "������������������������������������������������鄇鄅鄃酡酤酟酢酠鈁鈊�������鈥鈃鈚鈦鈏鈌鈀鈒釿釽鈆鈄鈧鈂鈜鈤鈙鈗鈅鈖镻閍閌閐隇陾������隈隉隃隀雂雈雃雱雰靬靰靮頇颩飫鳦黹亃亄亶傽傿僆傮僄僊�����傴僈僂傰僁傺傱僋僉傶傸凗剺剸剻剼嗃嗛嗌嗐嗋嗊嗝嗀嗔嗄嗩喿嗒喍嗏嗕嗢嗖嗈嗲嗍嗙嗂圔塓塨塤塏塍塉塯塕塎塝塙塥塛堽塣塱壼嫇嫄嫋媺媸媱媵媰媿嫈媻嫆媷嫀嫊媴媶嫍媹媐寖寘寙尟尳嵱嵣嵊嵥嵲嵬嵞嵨嵧嵢巰幏幎幊幍幋廅廌廆廋廇彀徯徭惷慉慊愫慅愶愲愮慆愯慏愩慀戠酨戣戥戤揅揱��".split(""); +for(j = 0; j != D[237].length; ++j) if(D[237][j].charCodeAt(0) !== 0xFFFD) { e[D[237][j]] = 60672 + j; d[60672 + j] = D[237][j];} +D[238] = "������������������������������������������������揫搐搒搉搠搤搳摃搟搕�������搘搹搷搢搣搌搦搰搨摁搵搯搊搚摀搥搧搋揧搛搮搡搎敯斒旓������暆暌暕暐暋暊暙暔晸朠楦楟椸楎楢楱椿楅楪椹楂楗楙楺楈楉�����椵楬椳椽楥棰楸椴楩楀楯楄楶楘楁楴楌椻楋椷楜楏楑椲楒椯楻椼歆歅歃歂歈歁殛毻毼毹毷毸溛滖滈溏滀溟溓溔溠溱溹滆滒溽滁溞滉溷溰滍溦滏溲溾滃滜滘溙溒溎溍溤溡溿溳滐滊溗溮溣煇煔煒煣煠煁煝煢煲煸煪煡煂煘煃煋煰煟煐煓煄煍煚牏犍犌犑犐犎猼獂猻猺獀獊獉瑄瑊瑋瑒瑑瑗瑀瑏瑐瑎��".split(""); +for(j = 0; j != D[238].length; ++j) if(D[238][j].charCodeAt(0) !== 0xFFFD) { e[D[238][j]] = 60928 + j; d[60928 + j] = D[238][j];} +D[239] = "������������������������������������������������瑂瑆瑍瑔瓡瓿瓾瓽甝畹�������畷榃痯瘏瘃痷痾痼痹痸瘐痻痶痭痵痽皙皵盝睕睟睠睒睖睚睩������睧睔睙睭矠碇碚碔碏碄碕碅碆碡碃硹碙碀碖硻祼禂祽祹稑稘�����稙稒稗稕稢稓稛稐窣窢窞竫筦筤筭筴筩筲筥筳筱筰筡筸筶筣粲粴粯綈綆綀綍絿綅絺綎絻綃絼綌綔綄絽綒罭罫罧罨罬羦羥羧翛翜耡腤腠腷腜腩腛腢腲朡腞腶腧腯腄腡舝艉艄艀艂艅蓱萿葖葶葹蒏蒍葥葑葀蒆葧萰葍葽葚葙葴葳葝蔇葞萷萺萴葺葃葸萲葅萩菙葋萯葂萭葟葰萹葎葌葒葯蓅蒎萻葇萶萳��".split(""); +for(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];} +D[240] = "������������������������������������������������葨葾葄萫葠葔葮葐蜋蜄�������蛷蜌蛺蛖蛵蝍蛸蜎蜉蜁蛶蜍蜅裖裋裍裎裞裛裚裌裐覅覛觟觥������觤觡觠觢觜触詶誆詿詡訿詷誂誄詵誃誁詴詺谼豋豊豥豤豦貆�����貄貅賌赨赩趑趌趎趏趍趓趔趐趒跰跠跬跱跮跐跩跣跢跧跲跫跴輆軿輁輀輅輇輈輂輋遒逿遄遉逽鄐鄍鄏鄑鄖鄔鄋鄎酮酯鉈鉒鈰鈺鉦鈳鉥鉞銃鈮鉊鉆鉭鉬鉏鉠鉧鉯鈶鉡鉰鈱鉔鉣鉐鉲鉎鉓鉌鉖鈲閟閜閞閛隒隓隑隗雎雺雽雸雵靳靷靸靲頏頍頎颬飶飹馯馲馰馵骭骫魛鳪鳭鳧麀黽僦僔僗僨僳僛僪僝僤��".split(""); +for(j = 0; j != D[240].length; ++j) if(D[240][j].charCodeAt(0) !== 0xFFFD) { e[D[240][j]] = 61440 + j; d[61440 + j] = D[240][j];} +D[241] = "������������������������������������������������僓僬僰僯僣僠凘劀劁勩�������勫匰厬嘧嘕嘌嘒嗼嘏嘜嘁嘓嘂嗺嘝嘄嗿嗹墉塼墐墘墆墁塿塴������墋塺墇墑墎塶墂墈塻墔墏壾奫嫜嫮嫥嫕嫪嫚嫭嫫嫳嫢嫠嫛嫬�����嫞嫝嫙嫨嫟孷寠寣屣嶂嶀嵽嶆嵺嶁嵷嶊嶉嶈嵾嵼嶍嵹嵿幘幙幓廘廑廗廎廜廕廙廒廔彄彃彯徶愬愨慁慞慱慳慒慓慲慬憀慴慔慺慛慥愻慪慡慖戩戧戫搫摍摛摝摴摶摲摳摽摵摦撦摎撂摞摜摋摓摠摐摿搿摬摫摙摥摷敳斠暡暠暟朅朄朢榱榶槉榠槎榖榰榬榼榑榙榎榧榍榩榾榯榿槄榽榤槔榹槊榚槏榳榓��".split(""); +for(j = 0; j != D[241].length; ++j) if(D[241][j].charCodeAt(0) !== 0xFFFD) { e[D[241][j]] = 61696 + j; d[61696 + j] = D[241][j];} +D[242] = "������������������������������������������������榪榡榞槙榗榐槂榵榥槆�������歊歍歋殞殟殠毃毄毾滎滵滱漃漥滸漷滻漮漉潎漙漚漧漘漻漒������滭漊漶潳滹滮漭潀漰漼漵滫漇漎潃漅滽滶漹漜滼漺漟漍漞漈�����漡熇熐熉熀熅熂熏煻熆熁熗牄牓犗犕犓獃獍獑獌瑢瑳瑱瑵瑲瑧瑮甀甂甃畽疐瘖瘈瘌瘕瘑瘊瘔皸瞁睼瞅瞂睮瞀睯睾瞃碲碪碴碭碨硾碫碞碥碠碬碢碤禘禊禋禖禕禔禓禗禈禒禐稫穊稰稯稨稦窨窫窬竮箈箜箊箑箐箖箍箌箛箎箅箘劄箙箤箂粻粿粼粺綧綷緂綣綪緁緀緅綝緎緄緆緋緌綯綹綖綼綟綦綮綩��".split(""); +for(j = 0; j != D[242].length; ++j) if(D[242][j].charCodeAt(0) !== 0xFFFD) { e[D[242][j]] = 61952 + j; d[61952 + j] = D[242][j];} +D[243] = "������������������������������������������������綡緉罳翢翣翥翞耤聝聜�������膉膆膃膇膍膌膋舕蒗蒤蒡蒟蒺蓎蓂蒬蒮蒫蒹蒴蓁蓍蒪蒚蒱蓐������蒝蒧蒻蒢蒔蓇蓌蒛蒩蒯蒨蓖蒘蒶蓏蒠蓗蓔蓒蓛蒰蒑虡蜳蜣蜨�����蝫蝀蜮蜞蜡蜙蜛蝃蜬蝁蜾蝆蜠蜲蜪蜭蜼蜒蜺蜱蜵蝂蜦蜧蜸蜤蜚蜰蜑裷裧裱裲裺裾裮裼裶裻裰裬裫覝覡覟覞觩觫觨誫誙誋誒誏誖谽豨豩賕賏賗趖踉踂跿踍跽踊踃踇踆踅跾踀踄輐輑輎輍鄣鄜鄠鄢鄟鄝鄚鄤鄡鄛酺酲酹酳銥銤鉶銛鉺銠銔銪銍銦銚銫鉹銗鉿銣鋮銎銂銕銢鉽銈銡銊銆銌銙銧鉾銇銩銝��".split(""); +for(j = 0; j != D[243].length; ++j) if(D[243][j].charCodeAt(0) !== 0xFFFD) { e[D[243][j]] = 62208 + j; d[62208 + j] = D[243][j];} +D[244] = "������������������������������������������������銋鈭隞隡雿靘靽靺靾鞃�������鞀鞂靻鞄鞁靿韎韍頖颭颮餂餀餇馝馜駃馹馻馺駂馽駇骱髣髧������鬾鬿魠魡魟鳱鳲鳵麧僿儃儰僸儆儇僶僾儋儌僽儊劋劌勱勯噈�����噂噌嘵噁噊噉噆噘噚噀嘳嘽嘬嘾嘸嘪嘺圚墫墝墱墠墣墯墬墥墡壿嫿嫴嫽嫷嫶嬃嫸嬂嫹嬁嬇嬅嬏屧嶙嶗嶟嶒嶢嶓嶕嶠嶜嶡嶚嶞幩幝幠幜緳廛廞廡彉徲憋憃慹憱憰憢憉憛憓憯憭憟憒憪憡憍慦憳戭摮摰撖撠撅撗撜撏撋撊撌撣撟摨撱撘敶敺敹敻斲斳暵暰暩暲暷暪暯樀樆樗槥槸樕槱槤樠槿槬槢樛樝��".split(""); +for(j = 0; j != D[244].length; ++j) if(D[244][j].charCodeAt(0) !== 0xFFFD) { e[D[244][j]] = 62464 + j; d[62464 + j] = D[244][j];} +D[245] = "������������������������������������������������槾樧槲槮樔槷槧橀樈槦�������槻樍槼槫樉樄樘樥樏槶樦樇槴樖歑殥殣殢殦氁氀毿氂潁漦潾������澇濆澒澍澉澌潢潏澅潚澖潶潬澂潕潲潒潐潗澔澓潝漀潡潫潽�����潧澐潓澋潩潿澕潣潷潪潻熲熯熛熰熠熚熩熵熝熥熞熤熡熪熜熧熳犘犚獘獒獞獟獠獝獛獡獚獙獢璇璉璊璆璁瑽璅璈瑼瑹甈甇畾瘥瘞瘙瘝瘜瘣瘚瘨瘛皜皝皞皛瞍瞏瞉瞈磍碻磏磌磑磎磔磈磃磄磉禚禡禠禜禢禛歶稹窲窴窳箷篋箾箬篎箯箹篊箵糅糈糌糋緷緛緪緧緗緡縃緺緦緶緱緰緮緟罶羬羰羭翭翫��".split(""); +for(j = 0; j != D[245].length; ++j) if(D[245][j].charCodeAt(0) !== 0xFFFD) { e[D[245][j]] = 62720 + j; d[62720 + j] = D[245][j];} +D[246] = "������������������������������������������������翪翬翦翨聤聧膣膟膞膕�������膢膙膗舖艏艓艒艐艎艑蔤蔻蔏蔀蔩蔎蔉蔍蔟蔊蔧蔜蓻蔫蓺蔈������蔌蓴蔪蓲蔕蓷蓫蓳蓼蔒蓪蓩蔖蓾蔨蔝蔮蔂蓽蔞蓶蔱蔦蓧蓨蓰�����蓯蓹蔘蔠蔰蔋蔙蔯虢蝖蝣蝤蝷蟡蝳蝘蝔蝛蝒蝡蝚蝑蝞蝭蝪蝐蝎蝟蝝蝯蝬蝺蝮蝜蝥蝏蝻蝵蝢蝧蝩衚褅褌褔褋褗褘褙褆褖褑褎褉覢覤覣觭觰觬諏諆誸諓諑諔諕誻諗誾諀諅諘諃誺誽諙谾豍貏賥賟賙賨賚賝賧趠趜趡趛踠踣踥踤踮踕踛踖踑踙踦踧踔踒踘踓踜踗踚輬輤輘輚輠輣輖輗遳遰遯遧遫鄯鄫鄩��".split(""); +for(j = 0; j != D[246].length; ++j) if(D[246][j].charCodeAt(0) !== 0xFFFD) { e[D[246][j]] = 62976 + j; d[62976 + j] = D[246][j];} +D[247] = "������������������������������������������������鄪鄲鄦鄮醅醆醊醁醂醄�������醀鋐鋃鋄鋀鋙銶鋏鋱鋟鋘鋩鋗鋝鋌鋯鋂鋨鋊鋈鋎鋦鋍鋕鋉鋠������鋞鋧鋑鋓銵鋡錥鋆銴镼閬閫閮閰隤隢雓霅霈霂靚鞊鞎鞈韐韏�����頞頝頦頩頨頠頛頧颲餈飺餑餔餖餗餕駜駍駏駓駔駎駉駖駘駋駗駌骳髬髫髳髲髱魆魃魧魴魱魦魶魵魰魨魤魬鳼鳺鳽鳿鳷鴇鴀鳹鳻鴈鴅鴄麃黓鼏鼐儜儓儗儚儑凞匴叡噰噠噮噳噦噣噭噲噞噷圜圛壈墽壉墿墺壂墼壆嬗嬙嬛嬡嬔嬓嬐嬖嬨嬚嬠嬞寯嶬嶱嶩嶧嶵嶰嶮嶪嶨嶲嶭嶯嶴幧幨幦幯廩廧廦廨廥彋��".split(""); +for(j = 0; j != D[247].length; ++j) if(D[247][j].charCodeAt(0) !== 0xFFFD) { e[D[247][j]] = 63232 + j; d[63232 + j] = D[247][j];} +D[248] = "������������������������������������������������徼徻憝憨憖懅憴懆懁懌�������憺憿憸憌擗擖擐擏擉撽撉擃擛擳擙攳敿敼斢曈暾曀曊曋曏暽������暻暺曌朣樴橦橉橧樲橨樾橝橭橶橛橑樨橚樻樿橁橪橤橐橏橔�����橯橩橠樼橞橖橕橍橎橆歕歔歖殧殪殫毈毇氄氃氆澭濋澣濇澼濎濈潞濄澽澞濊澨瀄澥澮澺澬澪濏澿澸澢濉澫濍澯澲澰燅燂熿熸燖燀燁燋燔燊燇燏熽燘熼燆燚燛犝犞獩獦獧獬獥獫獪瑿璚璠璔璒璕璡甋疀瘯瘭瘱瘽瘳瘼瘵瘲瘰皻盦瞚瞝瞡瞜瞛瞢瞣瞕瞙瞗磝磩磥磪磞磣磛磡磢磭磟磠禤穄穈穇窶窸窵��".split(""); +for(j = 0; j != D[248].length; ++j) if(D[248][j].charCodeAt(0) !== 0xFFFD) { e[D[248][j]] = 63488 + j; d[63488 + j] = D[248][j];} +D[249] = "������������������������������������������������窱窷篞篣篧篝篕篥篚篨�������篹篔篪篢篜篫篘篟糒糔糗糐糑縒縡縗縌縟縠縓縎縜縕縚縢縋������縏縖縍縔縥縤罃罻罼罺羱翯耪耩聬膱膦膮膹膵膫膰膬膴膲膷�����膧臲艕艖艗蕖蕅蕫蕍蕓蕡蕘蕀蕆蕤蕁蕢蕄蕑蕇蕣蔾蕛蕱蕎蕮蕵蕕蕧蕠薌蕦蕝蕔蕥蕬虣虥虤螤螛螏螗螓螒螈螁螖螘蝹螇螣螅螐螑螝螄螔螜螚螉褞褦褰褭褮褧褱褢褩褣褯褬褟觱諠諢諲諴諵諝謔諤諟諰諈諞諡諨諿諯諻貑貒貐賵賮賱賰賳赬赮趥趧踳踾踸蹀蹅踶踼踽蹁踰踿躽輶輮輵輲輹輷輴遶遹遻��".split(""); +for(j = 0; j != D[249].length; ++j) if(D[249][j].charCodeAt(0) !== 0xFFFD) { e[D[249][j]] = 63744 + j; d[63744 + j] = D[249][j];} +D[250] = "������������������������������������������������邆郺鄳鄵鄶醓醐醑醍醏�������錧錞錈錟錆錏鍺錸錼錛錣錒錁鍆錭錎錍鋋錝鋺錓鋹鋷錴錂錤������鋿錩錹錵錪錔錌錋鋾錉錀鋻錖閼闍閾閹閺閶閿閵閽隩雔霋霒�����霐鞙鞗鞔韰韸頵頯頲餤餟餧餩馞駮駬駥駤駰駣駪駩駧骹骿骴骻髶髺髹髷鬳鮀鮅鮇魼魾魻鮂鮓鮒鮐魺鮕魽鮈鴥鴗鴠鴞鴔鴩鴝鴘鴢鴐鴙鴟麈麆麇麮麭黕黖黺鼒鼽儦儥儢儤儠儩勴嚓嚌嚍嚆嚄嚃噾嚂噿嚁壖壔壏壒嬭嬥嬲嬣嬬嬧嬦嬯嬮孻寱寲嶷幬幪徾懃憵憼懧懠懥懤懨懞擯擩擣擫擤擨斁斀斶旚曒檍��".split(""); +for(j = 0; j != D[250].length; ++j) if(D[250][j].charCodeAt(0) !== 0xFFFD) { e[D[250][j]] = 64000 + j; d[64000 + j] = D[250][j];} +D[251] = "������������������������������������������������檖檁檥檉檟檛檡檞檇檓�������檎檕檃檨檤檑橿檦檚檅檌檒歛殭氉濌澩濴濔濣濜濭濧濦濞濲������濝濢濨燡燱燨燲燤燰燢獳獮獯璗璲璫璐璪璭璱璥璯甐甑甒甏�����疄癃癈癉癇皤盩瞵瞫瞲瞷瞶瞴瞱瞨矰磳磽礂磻磼磿磲礅磹磾礄禫禨穜穛穖穘穔穚窾竀竁簅簏篲簀篿篻簎篴簋篳簂簉簃簁篸篽簆篰篱簐簊糨縭縼繂縳顈縸縪繉繀繇縩繌縰縻縶繄縺罅罿罾罽翴翲耬膻臄臌臊臅臇膼臩艛艚艜薃薀薏薧薕薠薋薣蕻薤薚薞蕷蕼薉薡蕺蕸蕗薎薖薆薍薙薝薁薢薂薈薅蕹��".split(""); +for(j = 0; j != D[251].length; ++j) if(D[251][j].charCodeAt(0) !== 0xFFFD) { e[D[251][j]] = 64256 + j; d[64256 + j] = D[251][j];} +D[252] = "������������������������������������������������蕶薘薐薟虨螾螪螭蟅螰�������螬螹螵螼螮蟉蟃蟂蟌螷螯蟄蟊螴螶螿螸螽蟞螲褵褳褼褾襁襒������褷襂覭覯覮觲觳謞謘謖謑謅謋謢謏謒謕謇謍謈謆謜謓謚豏豰�����豲豱豯貕貔賹赯蹎蹍蹓蹐蹌蹇轃轀邅遾鄸醚醢醛醙醟醡醝醠鎡鎃鎯鍤鍖鍇鍼鍘鍜鍶鍉鍐鍑鍠鍭鎏鍌鍪鍹鍗鍕鍒鍏鍱鍷鍻鍡鍞鍣鍧鍎鍙闇闀闉闃闅閷隮隰隬霠霟霘霝霙鞚鞡鞜鞞鞝韕韔韱顁顄顊顉顅顃餥餫餬餪餳餲餯餭餱餰馘馣馡騂駺駴駷駹駸駶駻駽駾駼騃骾髾髽鬁髼魈鮚鮨鮞鮛鮦鮡鮥鮤鮆��".split(""); +for(j = 0; j != D[252].length; ++j) if(D[252][j].charCodeAt(0) !== 0xFFFD) { e[D[252][j]] = 64512 + j; d[64512 + j] = D[252][j];} +D[253] = "������������������������������������������������鮢鮠鮯鴳鵁鵧鴶鴮鴯鴱�������鴸鴰鵅鵂鵃鴾鴷鵀鴽翵鴭麊麉麍麰黈黚黻黿鼤鼣鼢齔龠儱儭������儮嚘嚜嚗嚚嚝嚙奰嬼屩屪巀幭幮懘懟懭懮懱懪懰懫懖懩擿攄�����擽擸攁攃擼斔旛曚曛曘櫅檹檽櫡櫆檺檶檷櫇檴檭歞毉氋瀇瀌瀍瀁瀅瀔瀎濿瀀濻瀦濼濷瀊爁燿燹爃燽獶璸瓀璵瓁璾璶璻瓂甔甓癜癤癙癐癓癗癚皦皽盬矂瞺礌礓礔礉礐礒礑禭禬穟簜簩簙簠簟簭簝簦簨簢簥簰繜繐繖繣繘繢繟繑繠繗繓羵羳翷翸聵臑臒臐艟艞薴藆藀藃藂薳薵薽藇藄薿藋藎藈藅薱薶��".split(""); +for(j = 0; j != D[253].length; ++j) if(D[253][j].charCodeAt(0) !== 0xFFFD) { e[D[253][j]] = 64768 + j; d[64768 + j] = D[253][j];} +D[254] = "������������������������������������������������藒蘤薸薷薾虩蟧蟦蟢蟛�������蟫蟪蟥蟟蟳蟤蟔蟜蟓蟭蟘蟣蟗蟙蠁蟴蟨蟝襓襋襏襌襆襐襑襉������謪謧謣謳謰謵譇謯謼謾謱謥謷謦謶謮謤謻謽謺豂豵貙貘貗賾�����贄贂贀蹜蹢蹠蹗蹖蹞蹥蹧蹛蹚蹡蹝蹩蹔轆轇轈轋鄨鄺鄻鄾醨醥醧醯醪鎵鎌鎒鎷鎛鎝鎉鎧鎎鎪鎞鎦鎕鎈鎙鎟鎀鎍鎱鎑鎲鎤鎨鎴鎣闒闓闑隳雗雚巂雟雘雝霣霢霥鞬鞮鞨鞫鞤鞪鞢鞥韗韙韖韘韺顐顑顒颸饁餼餺騏騋騉騍騄騑騊騅騇騆髀髜鬈鬄鬅鬩鬵魊魌魋鯇鯆鯃鮿鯁鮵鮸鯓鮶鯄鮹鮽鵜鵓鵏鵊鵛鵋��".split(""); +for(j = 0; j != D[254].length; ++j) if(D[254][j].charCodeAt(0) !== 0xFFFD) { e[D[254][j]] = 65024 + j; d[65024 + j] = D[254][j];} +return {"enc": e, "dec": d }; })(); +cptable[20003] = (function(){ var d = [], e = {}, D = [], j; +D[0] = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€��������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];} +D[129] = "���������������������������������������������������������������� 、。,․•:;?!��‵′¨˄‾_ヽヾゝゞ〃〄々〆〇ー–—/\∼∥∣…‥‘’“”()〔〕[]{}〈〉《》「」『』【】+-±×�÷=≠<>≦≧∞∴♂♀゜��℃¥$¢£%#&✽@§☆★○●◎◇◆□■△▲▽▼※〒→←↑↓������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[129].length; ++j) if(D[129][j].charCodeAt(0) !== 0xFFFD) { e[D[129][j]] = 33024 + j; d[33024 + j] = D[129][j];} +D[130] = "�������������������������������������������������������������������������������0123456789�������ABCDEFGHIJKLMNOPQRSTUVWXYZ�������abcdefghijklmnopqrstuvwxyz����ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをん��������������".split(""); +for(j = 0; j != D[130].length; ++j) if(D[130][j].charCodeAt(0) !== 0xFFFD) { e[D[130][j]] = 33280 + j; d[33280 + j] = D[130][j];} +D[131] = "����������������������������������������������������������������ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミ�ムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶ��������ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ��������αβγδεζηθικλμνξοπρστυφχψω�����������������������������������������".split(""); +for(j = 0; j != D[131].length; ++j) if(D[131][j].charCodeAt(0) !== 0xFFFD) { e[D[131][j]] = 33536 + j; d[33536 + j] = D[131][j];} +D[132] = "����������������������������������������������������������������АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ���������������абвгдеёжзийклмн�опрстуфхцчшщъыьэюя��������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[132].length; ++j) if(D[132][j].charCodeAt(0) !== 0xFFFD) { e[D[132][j]] = 33792 + j; d[33792 + j] = D[132][j];} +D[135] = "������������������������������������������������������������������丶丿�亅�亠����冂冖冫����勹��匸��卩�厶�����夂����宀������巛����幺广廴���彐彡�������攴����无��������������������������������疒癶��������������������������������������������������������辵��������隶���������������������".split(""); +for(j = 0; j != D[135].length; ++j) if(D[135][j].charCodeAt(0) !== 0xFFFD) { e[D[135][j]] = 34560 + j; d[34560 + j] = D[135][j];} +D[137] = "����������������������������������������������������������������〡〢〣〤〥〦〧〨〩�卄�����˟ˊˇˋ˙ㄅㄆㄇㄈㄉㄊㄋㄌㄍㄎㄏㄐㄑㄒㄓㄔㄕㄖㄗㄘㄙㄚㄛㄜㄝㄞㄟㄠㄡㄢㄣㄤㄥㄦㄧㄨㄩ��������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[137].length; ++j) if(D[137][j].charCodeAt(0) !== 0xFFFD) { e[D[137][j]] = 35072 + j; d[35072 + j] = D[137][j];} +D[138] = "����������������������������������������������������������������①②③④⑤⑥⑦⑧⑨⑩������⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽�����▁▂▃▄▅▆▇█▏▎▍▌▋▊▉┼┴┬┤├▔─│▕┌┐└┘╭╮╰╯�═╞╪╡◢◣◥◤╱╲╳��������������������﹁﹂﹃﹄︻︼�︲︳�︴﹏︵︶︷︸︹︺︽︾︿﹀��*"㊣℅��﹉﹊﹍﹎﹋﹌﹡√≒≡∩∪⊥∠∟⊿㏒㏑∫∮⊕⊙↖↗↙↘∵��℉㏕㎜㎝㎞㏎㎡㎎㎏㏄﹒���〝〞���⇧↸↹兙兛兞兝兡兣嗧瓩糎�������".split(""); +for(j = 0; j != D[138].length; ++j) if(D[138][j].charCodeAt(0) !== 0xFFFD) { e[D[138][j]] = 35328 + j; d[35328 + j] = D[138][j];} +D[139] = "�����������������������������������������������������������������ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩ������ⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹ¬¦��㈱№℡��������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[139].length; ++j) if(D[139][j].charCodeAt(0) !== 0xFFFD) { e[D[139][j]] = 35584 + j; d[35584 + j] = D[139][j];} +D[140] = "����������������������������������������������������������������一乙丁七乃九了二人儿入八几刀刁力匕十卜又三下丈上丫丸凡久么也乞于亡兀刃勺千叉口土士夕大女子孑孓寸小尢尸山川工己已巳巾干廾弋弓才�丑丐不中丰丹之尹予云井互五亢仁什仃仆仇仍今介仄元允內六兮公冗凶分切刈勻勾勿化匹午升卅卞厄友及反壬天夫太夭孔少尤尺屯巴幻廿弔引心戈戶手扎支文斗斤方日曰月木欠止歹毋比毛氏水火爪父爻片牙牛犬王丙世丕且丘主乍乏乎以付仔仕他仗代令仙仞充兄冉冊冬凹出凸刊加功包匆���".split(""); +for(j = 0; j != D[140].length; ++j) if(D[140][j].charCodeAt(0) !== 0xFFFD) { e[D[140][j]] = 35840 + j; d[35840 + j] = D[140][j];} +D[141] = "����������������������������������������������������������������北匝仟半卉卡占卯卮去可古右召叮叩叨叼司叵叫另只史叱台句叭叻四囚外央失奴奶孕它尼巨巧左市布平幼弁弘弗必戊打扔扒扑斥旦朮本未末札正�母民氐永汁汀氾犯玄玉瓜瓦甘生用甩田由甲申疋白皮皿目矛矢石示禾穴立丞丟乒乓乩亙交亦亥仿伉伙伊伕伍伐休伏仲件任仰仳份企伋光兇兆先全共再冰列刑划刎刖劣匈匡匠印危吉吏同吊吐吁吋各向名合吃后吆吒因回囝圳地在圭圬圯圩夙多夷夸妄奸妃好她如妁字存宇守宅安寺尖屹州帆并���".split(""); +for(j = 0; j != D[141].length; ++j) if(D[141][j].charCodeAt(0) !== 0xFFFD) { e[D[141][j]] = 36096 + j; d[36096 + j] = D[141][j];} +D[142] = "����������������������������������������������������������������年式弛忙忖戎戌戍成扣扛托收早旨旬旭曲曳有朽朴朱朵次此死氖汝汗汙江池汐汕污汛汍汎灰牟牝百竹米糸缶羊羽老考而耒耳聿肉肋肌臣自至臼舌�舛舟艮色艾虫血行衣西阡串亨位住佇佗佞伴佛何估佐佑伽伺伸佃佔似但佣作你伯低伶余佝佈佚兌克免兵冶冷別判利刪刨劫助努劬匣即卵吝吭吞吾否呎吧呆呃吳呈呂君吩告吹吻吸吮吵吶吠吼呀吱含吟听囪困囤囫坊坑址坍均坎圾坐坏圻壯夾妝妒妨妞妣妙妖妍妤妓妊妥孝孜孚孛完宋宏尬局屁���".split(""); +for(j = 0; j != D[142].length; ++j) if(D[142][j].charCodeAt(0) !== 0xFFFD) { e[D[142][j]] = 36352 + j; d[36352 + j] = D[142][j];} +D[143] = "����������������������������������������������������������������尿尾岐岑岔岌巫希序庇床廷弄弟彤形彷役忘忌志忍忱快忸忪戒我抄抗抖技扶抉扭把扼找批扳抒扯折扮投抓抑抆改攻攸旱更束李杏材村杜杖杞杉杆�杠杓杗步每求汞沙沁沈沉沅沛汪決沐汰沌汨沖沒汽沃汲汾汴沆汶沍沔沘沂灶灼災灸牢牡牠狄狂玖甬甫男甸皂盯矣私秀禿究系罕肖肓肝肘肛肚育良芒芋芍見角言谷豆豕貝赤走足身車辛辰迂迆迅迄巡邑邢邪邦那酉釆里防阮阱阪阬並乖乳事些亞享京佯依侍佳使佬供例來侃佰併侈佩佻侖佾侏侑���".split(""); +for(j = 0; j != D[143].length; ++j) if(D[143][j].charCodeAt(0) !== 0xFFFD) { e[D[143][j]] = 36608 + j; d[36608 + j] = D[143][j];} +D[144] = "����������������������������������������������������������������佺兔兒兕兩具其典冽函刻券刷刺到刮制剁劾劻卒協卓卑卦卷卸卹取叔受味呵咖呸咕咀呻呷咄咒咆呼咐呱呶和咚呢周咋命咎固垃坷坪坩坡坦坤坼夜�奉奇奈奄奔妾妻委妹妮姑姆姐姍始姓姊妯妳姒姅孟孤季宗定官宜宙宛尚屈居屆岷岡岸岩岫岱岳帘帚帖帕帛帑幸庚店府底庖延弦弧弩往征彿彼忝忠忽念忿怏怔怯怵怖怪怕怡性怩怫怛或戕房戾所承拉拌拄抿拂抹拒招披拓拔拋拈抨抽押拐拙拇拍抵拚抱拘拖拗拆抬拎放斧於旺昔易昌昆昂明昀昏���".split(""); +for(j = 0; j != D[144].length; ++j) if(D[144][j].charCodeAt(0) !== 0xFFFD) { e[D[144][j]] = 36864 + j; d[36864 + j] = D[144][j];} +D[145] = "����������������������������������������������������������������昕昊昇服朋杭枋枕東果杳杷枇枝林杯杰板枉松析杵枚枓杼杪杲欣武歧歿氓氛泣注泳沱泌泥河沽沾沼波沫法泓沸泄油況沮泗泅泱沿治泡泛泊沬泯泜�泖泠炕炎炒炊炙爬爭爸版牧物狀狎狙狗狐玩玨玟玫玥甽疝疙疚的盂盲直知矽社祀祁秉秈空穹竺糾罔羌羋者肺肥肢肱股肫肩肴肪肯臥臾舍芳芝芙芭芽芟芹花芬芥芯芸芣芰芾芷虎虱初表軋迎返近邵邸邱邶采金長門阜陀阿阻附陂隹雨青非亟亭亮信侵侯便俠俑俏保促侶俘俟俊俗侮俐俄係俚俎俞���".split(""); +for(j = 0; j != D[145].length; ++j) if(D[145][j].charCodeAt(0) !== 0xFFFD) { e[D[145][j]] = 37120 + j; d[37120 + j] = D[145][j];} +D[146] = "����������������������������������������������������������������侷兗冒冑冠剎剃削前剌剋則勇勉勃勁匍南卻厚叛咬哀咨哎哉咸咦咳哇哂咽咪品哄哈咯咫咱咻咩咧咿囿垂型垠垣垢城垮垓奕契奏奎奐姜姘姿姣姨娃�姥姪姚姦威姻孩宣宦室客宥封屎屏屍屋峙峒巷帝帥帟幽庠度建弈弭彥很待徊律徇後徉怒思怠急怎怨恍恰恨恢恆恃恬恫恪恤扁拜挖按拼拭持拮拽指拱拷拯括拾拴挑挂政故斫施既春昭映昧是星昨昱昤曷柿染柱柔某柬架枯柵柩柯柄柑枴柚查枸柏柞柳枰柙柢柝柒歪殃殆段毒毗氟泉洋洲洪流津洌���".split(""); +for(j = 0; j != D[146].length; ++j) if(D[146][j].charCodeAt(0) !== 0xFFFD) { e[D[146][j]] = 37376 + j; d[37376 + j] = D[146][j];} +D[147] = "����������������������������������������������������������������洱洞洗活洽派洶洛泵洹洧洸洩洮洵洎洫炫為炳炬炯炭炸炮炤爰牲牯牴狩狠狡玷珊玻玲珍珀玳甚甭畏界畎畋疫疤疥疢疣癸皆皇皈盈盆盃盅省盹相眉�看盾盼眇矜砂研砌砍祆祉祈祇禹禺科秒秋穿突竿竽籽紂紅紀紉紇約紆缸美羿耄耐耍耑耶胖胥胚胃胄背胡胛胎胞胤胝致舢苧范茅苣苛苦茄若茂茉苒苗英茁苜苔苑苞苓苟苯茆虐虹虻虺衍衫要觔計訂訃貞負赴赳趴軍軌述迦迢迪迥迭迫迤迨郊郎郁郃酋酊重閂限陋陌降面革韋韭音頁風飛食首香乘���".split(""); +for(j = 0; j != D[147].length; ++j) if(D[147][j].charCodeAt(0) !== 0xFFFD) { e[D[147][j]] = 37632 + j; d[37632 + j] = D[147][j];} +D[148] = "����������������������������������������������������������������亳倌倍倣俯倦倥俸倩倖倆值借倚倒們俺倀倔倨俱倡個候倘俳修倭倪俾倫倉兼冤冥冢凍凌准凋剖剜剔剛剝匪卿原厝叟哨唐唁唷哼哥哲唆哺唔哩哭員�唉哮哪哦唧唇哽唏圃圄埂埔埋埃堉夏套奘奚娑娘娜娟娛娓姬娠娣娩娥娌娉孫屘宰害家宴宮宵容宸射屑展屐峭峽峻峪峨峰島崁峴差席師庫庭座弱徒徑徐恙恣恥恐恕恭恩息悄悟悚悍悔悌悅悖扇拳挈拿捎挾振捕捂捆捏捉挺捐挽挪挫挨捍捌效敉料旁旅時晉晏晃晒晌晅晁書朔朕朗校核案框桓根桂���".split(""); +for(j = 0; j != D[148].length; ++j) if(D[148][j].charCodeAt(0) !== 0xFFFD) { e[D[148][j]] = 37888 + j; d[37888 + j] = D[148][j];} +D[149] = "����������������������������������������������������������������桔栩梳栗桌桑栽柴桐桀格桃株桅栓栘桁殊殉殷氣氧氨氦氤泰浪涕消涇浦浸海浙涓浬涉浮浚浴浩涌涊浹涅浥涔烊烘烤烙烈烏爹特狼狹狽狸狷玆班琉�珮珠珪珞畔畝畜畚留疾病症疲疳疽疼疹痂疸皋皰益盍盎眩真眠眨矩砰砧砸砝破砷砥砭砠砟砲祕祐祠祟祖神祝祗祚秤秣秧租秦秩秘窄窈站笆笑粉紡紗紋紊素索純紐紕級紜納紙紛缺罟羔翅翁耆耘耕耙耗耽耿胱脂胰脅胭胴脆胸胳脈能脊胼胯臭臬舀舐航舫舨般芻茫荒荔荊茸荐草茵茴荏茲茹茶茗���".split(""); +for(j = 0; j != D[149].length; ++j) if(D[149][j].charCodeAt(0) !== 0xFFFD) { e[D[149][j]] = 38144 + j; d[38144 + j] = D[149][j];} +D[150] = "����������������������������������������������������������������荀茱茨荃虔蚊蚪蚓蚤蚩蚌蚣蚜衰衷袁袂衽衹記訐討訌訕訊託訓訖訏訑豈豺豹財貢起躬軒軔軏辱送逆迷退迺迴逃追逅迸邕郡郝郢酒配酌釘針釗釜釙�閃院陣陡陛陝除陘陞隻飢馬骨高鬥鬲鬼乾偺偽停假偃偌做偉健偶偎偕偵側偷偏倏偯偭兜冕凰剪副勒務勘動匐匏匙匿區匾參曼商啪啦啄啞啡啃啊唱啖問啕唯啤唸售啜唬啣唳啁啗圈國圉域堅堊堆埠埤基堂堵執培夠奢娶婁婉婦婪婀娼婢婚婆婊孰寇寅寄寂宿密尉專將屠屜屝崇崆崎崛崖崢崑崩崔���".split(""); +for(j = 0; j != D[150].length; ++j) if(D[150][j].charCodeAt(0) !== 0xFFFD) { e[D[150][j]] = 38400 + j; d[38400 + j] = D[150][j];} +D[151] = "����������������������������������������������������������������崙崤崧崗巢常帶帳帷康庸庶庵庾張強彗彬彩彫得徙從徘御徠徜恿患悉悠您惋悴惦悽情悻悵惜悼惘惕惆惟悸惚惇戚戛扈掠控捲掖探接捷捧掘措捱掩�掉掃掛捫推掄授掙採掬排掏掀捻捩捨捺敝敖救教敗啟敏敘敕敔斜斛斬族旋旌旎晝晚晤晨晦晞曹勗望梁梯梢梓梵桿桶梱梧梗械梃棄梭梆梅梔條梨梟梡梂欲殺毫毬氫涎涼淳淙液淡淌淤添淺清淇淋涯淑涮淞淹涸混淵淅淒渚涵淚淫淘淪深淮淨淆淄涪淬涿淦烹焉焊烽烯爽牽犁猜猛猖猓猙率琅琊球���".split(""); +for(j = 0; j != D[151].length; ++j) if(D[151][j].charCodeAt(0) !== 0xFFFD) { e[D[151][j]] = 38656 + j; d[38656 + j] = D[151][j];} +D[152] = "����������������������������������������������������������������理現琍瓠瓶瓷甜產略畦畢異疏痔痕疵痊痍皎盔盒盛眷眾眼眶眸眺硫硃硎祥票祭移窒窕笠笨笛第符笙笞笮粒粗粕絆絃統紮紹紼絀細紳組累終紲紱缽�羞羚翌翎習耜聊聆脯脖脣脫脩脰脤舂舵舷舶船莎莞莘荸莢莖莽莫莒莊莓莉莠荷荻荼莆莧處彪蛇蛀蚶蛄蚵蛆蛋蚱蚯蛉術袞袈被袒袖袍袋覓規訪訝訣訥許設訟訛訢豉豚販責貫貨貪貧赧赦趾趺軛軟這逍通逗連速逝逐逕逞造透逢逖逛途部郭都酗野釵釦釣釧釭釩閉陪陵陳陸陰陴陶陷陬雀雪雩章竟���".split(""); +for(j = 0; j != D[152].length; ++j) if(D[152][j].charCodeAt(0) !== 0xFFFD) { e[D[152][j]] = 38912 + j; d[38912 + j] = D[152][j];} +D[153] = "����������������������������������������������������������������頂頃魚鳥鹵鹿麥麻傢傍傅備傑傀傖傘傚最凱割剴創剩勞勝勛博厥啻喀喧啼喊喝喘喂喜喪喔喇喋喃喳單喟唾喲喚喻喬喱啾喉喫喙圍堯堪場堤堰報堡�堝堠壹壺奠婷媚婿媒媛媧孳孱寒富寓寐尊尋就嵌嵐崴嵇巽幅帽幀幃幾廊廁廂廄弼彭復循徨惑惡悲悶惠愜愣惺愕惰惻惴慨惱愎惶愉愀愒戟扉掣掌描揀揩揉揆揍插揣提握揖揭揮捶援揪換摒揚揹敞敦敢散斑斐斯普晰晴晶景暑智晾晷曾替期朝棺棕棠棘棗椅棟棵森棧棹棒棲棣棋棍植椒椎棉棚楮棻���".split(""); +for(j = 0; j != D[153].length; ++j) if(D[153][j].charCodeAt(0) !== 0xFFFD) { e[D[153][j]] = 39168 + j; d[39168 + j] = D[153][j];} +D[154] = "����������������������������������������������������������������款欺欽殘殖殼毯氮氯氬港游湔渡渲湧湊渠渥渣減湛湘渤湖湮渭渦湯渴湍渺測湃渝渾滋溉渙湎湣湄湲湩湟焙焚焦焰無然煮焜牌犄犀猶猥猴猩琺琪琳�琢琥琵琶琴琯琛琦琨甥甦畫番痢痛痣痙痘痞痠登發皖皓皴盜睏短硝硬硯稍稈程稅稀窘窗窖童竣等策筆筐筒答筍筋筏筑粟粥絞結絨絕紫絮絲絡給絢絰絳善翔翕耋聒肅腕腔腋腑腎脹腆脾腌腓腴舒舜菩萃菸萍菠菅萋菁華菱菴著萊菰萌菌菽菲菊萸萎萄菜萇菔菟虛蛟蛙蛭蛔蛛蛤蛐蛞街裁裂袱覃視���".split(""); +for(j = 0; j != D[154].length; ++j) if(D[154][j].charCodeAt(0) !== 0xFFFD) { e[D[154][j]] = 39424 + j; d[39424 + j] = D[154][j];} +D[155] = "����������������������������������������������������������������註詠評詞証詁詔詛詐詆訴診訶詖象貂貯貼貳貽賁費賀貴買貶貿貸越超趁跎距跋跚跑跌跛跆軻軸軼辜逮逵週逸進逶鄂郵鄉郾酣酥量鈔鈕鈣鈉鈞鈍鈐�鈇鈑閔閏開閑間閒閎隊階隋陽隅隆隍陲隄雁雅雄集雇雯雲韌項順須飧飪飯飩飲飭馮馭黃黍黑亂傭債傲傳僅傾催傷傻傯僇剿剷剽募勦勤勢勣匯嗟嗨嗓嗦嗎嗜嗇嗑嗣嗤嗯嗚嗡嗅嗆嗥嗉園圓塞塑塘塗塚塔填塌塭塊塢塒塋奧嫁嫉嫌媾媽媼媳嫂媲嵩嵯幌幹廉廈弒彙徬微愚意慈感想愛惹愁愈慎慌慄���".split(""); +for(j = 0; j != D[155].length; ++j) if(D[155][j].charCodeAt(0) !== 0xFFFD) { e[D[155][j]] = 39680 + j; d[39680 + j] = D[155][j];} +D[156] = "����������������������������������������������������������������慍愾愴愧愍愆愷戡戢搓搾搞搪搭搽搬搏搜搔損搶搖搗搆敬斟新暗暉暇暈暖暄暘暍會榔業楚楷楠楔極椰概楊楨楫楞楓楹榆楝楣楛歇歲毀殿毓毽溢溯�滓溶滂源溝滇滅溥溘溼溺溫滑準溜滄滔溪溧溴煎煙煩煤煉照煜煬煦煌煥煞煆煨煖爺牒猷獅猿猾瑯瑚瑕瑟瑞瑁琿瑙瑛瑜當畸瘀痰瘁痲痱痺痿痴痳盞盟睛睫睦睞督睹睪睬睜睥睨睢矮碎碰碗碘碌碉硼碑碓硿祺祿禁萬禽稜稚稠稔稟稞窟窠筷節筠筮筧粱粳粵經絹綑綁綏絛置罩罪署義羨群聖聘肆肄���".split(""); +for(j = 0; j != D[156].length; ++j) if(D[156][j].charCodeAt(0) !== 0xFFFD) { e[D[156][j]] = 39936 + j; d[39936 + j] = D[156][j];} +D[157] = "����������������������������������������������������������������腱腰腸腥腮腳腫腹腺腦舅艇蒂葷落萱葵葦葫葉葬葛萼萵葡董葩葭葆虞虜號蛹蜓蜈蜇蜀蛾蛻蜂蜃蜆蜊衙裟裔裙補裘裝裡裊裕裒覜解詫該詳試詩詰誇�詼詣誠話誅詭詢詮詬詹詻訾詨豢貊貉賊資賈賄貲賃賂賅跡跟跨路跳跺跪跤跦躲較載軾輊辟農運遊道遂達逼違遐遇遏過遍遑逾遁鄒鄗酬酪酩釉鈷鉗鈸鈽鉀鈾鉛鉋鉤鉑鈴鉉鉍鉅鈹鈿鉚閘隘隔隕雍雋雉雊雷電雹零靖靴靶預頑頓頊頒頌飼飴飽飾馳馱馴髡鳩麂鼎鼓鼠僧僮僥僖僭僚僕像僑僱僎僩兢���".split(""); +for(j = 0; j != D[157].length; ++j) if(D[157][j].charCodeAt(0) !== 0xFFFD) { e[D[157][j]] = 40192 + j; d[40192 + j] = D[157][j];} +D[158] = "����������������������������������������������������������������凳劃劂匱厭嗾嘀嘛嘗嗽嘔嘆嘉嘍嘎嗷嘖嘟嘈嘐嗶團圖塵塾境墓墊塹墅塽壽夥夢夤奪奩嫡嫦嫩嫗嫖嫘嫣孵寞寧寡寥實寨寢寤察對屢嶄嶇幛幣幕幗幔�廓廖弊彆彰徹慇愿態慷慢慣慟慚慘慵截撇摘摔撤摸摟摺摑摧搴摭摻敲斡旗旖暢暨暝榜榨榕槁榮槓構榛榷榻榫榴槐槍榭槌榦槃榣歉歌氳漳演滾漓滴漩漾漠漬漏漂漢滿滯漆漱漸漲漣漕漫漯澈漪滬漁滲滌滷熔熙煽熊熄熒爾犒犖獄獐瑤瑣瑪瑰瑭甄疑瘧瘍瘋瘉瘓盡監瞄睽睿睡磁碟碧碳碩碣禎福禍���".split(""); +for(j = 0; j != D[158].length; ++j) if(D[158][j].charCodeAt(0) !== 0xFFFD) { e[D[158][j]] = 40448 + j; d[40448 + j] = D[158][j];} +D[159] = "����������������������������������������������������������������種稱窪窩竭端管箕箋筵算箝箔箏箸箇箄粹粽精綻綰綜綽綾綠緊綴網綱綺綢綿綵綸維緒緇綬罰翠翡翟聞聚肇腐膀膏膈膊腿膂臧臺與舔舞艋蓉蒿蓆蓄�蒙蒞蒲蒜蓋蒸蓀蓓蒐蒼蓑蓊蜿蜜蜻蜢蜥蜴蜘蝕蜷蜩裳褂裴裹裸製裨褚裯誦誌語誣認誡誓誤說誥誨誘誑誚誧豪貍貌賓賑賒赫趙趕跼輔輒輕輓辣遠遘遜遣遙遞遢遝遛鄙鄘鄞酵酸酷酴鉸銀銅銘銖鉻銓銜銨鉼銑閡閨閩閣閥閤隙障際雌雒需靼鞅韶頗領颯颱餃餅餌餉駁骯骰髦魁魂鳴鳶鳳麼鼻齊億儀���".split(""); +for(j = 0; j != D[159].length; ++j) if(D[159][j].charCodeAt(0) !== 0xFFFD) { e[D[159][j]] = 40704 + j; d[40704 + j] = D[159][j];} +D[160] = "����������������������������������������������������������������僻僵價儂儈儉儅凜劇劈劉劍劊勰厲嘮嘻嘹嘲嘿嘴嘩噓噎噗噴嘶嘯嘰墀墟增墳墜墮墩墦奭嬉嫻嬋嫵嬌嬈寮寬審寫層履嶝嶔幢幟幡廢廚廟廝廣廠彈影�德徵慶慧慮慝慕憂慼慰慫慾憧憐憫憎憬憚憤憔憮戮摩摯摹撞撲撈撐撰撥撓撕撩撒撮播撫撚撬撙撢撳敵敷數暮暫暴暱樣樟槨樁樞標槽模樓樊槳樂樅槭樑歐歎殤毅毆漿潼澄潑潦潔澆潭潛潸潮澎潺潰潤澗潘滕潯潠潟熟熬熱熨牖犛獎獗瑩璋璃瑾璀畿瘠瘩瘟瘤瘦瘡瘢皚皺盤瞎瞇瞌瞑瞋磋磅確磊碾���".split(""); +for(j = 0; j != D[160].length; ++j) if(D[160][j].charCodeAt(0) !== 0xFFFD) { e[D[160][j]] = 40960 + j; d[40960 + j] = D[160][j];} +D[161] = "����������������������������������������������������������������磕碼磐稿稼穀稽稷稻窯窮箭箱範箴篆篇篁箠篌糊締練緯緻緘緬緝編緣線緞緩綞緙緲緹罵罷羯翩耦膛膜膝膠膚膘蔗蔽蔚蓮蔬蔭蔓蔑蔣蔡蔔蓬蔥蓿蔆�螂蝴蝶蝠蝦蝸蝨蝙蝗蝌蝓衛衝褐複褒褓褕褊誼諒談諄誕請諸課諉諂調誰論諍誶誹諛豌豎豬賠賞賦賤賬賭賢賣賜質賡赭趟趣踫踐踝踢踏踩踟踡踞躺輝輛輟輩輦輪輜輞輥適遮遨遭遷鄰鄭鄧鄱醇醉醋醃鋅銻銷鋪銬鋤鋁銳銼鋒鋇鋰銲閭閱霄霆震霉靠鞍鞋鞏頡頫頜颳養餓餒餘駝駐駟駛駑駕駒駙骷���".split(""); +for(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];} +D[162] = "����������������������������������������������������������������髮髯鬧魅魄魷魯鴆鴉鴃麩麾黎墨齒儒儘儔儐儕冀冪凝劑劓勳噙噫噹噩噤噸噪器噥噱噯噬噢噶壁墾壇壅奮嬝嬴學寰導彊憲憑憩憊懍憶憾懊懈戰擅擁�擋撻撼據擄擇擂操撿擒擔撾整曆曉暹曄曇暸樽樸樺橙橫橘樹橄橢橡橋橇樵機橈歙歷氅濂澱澡濃澤濁澧澳激澹澶澦澠澴熾燉燐燒燈燕熹燎燙燜燃燄獨璜璣璘璟璞瓢甌甍瘴瘸瘺盧盥瞠瞞瞟瞥磨磚磬磧禦積穎穆穌穋窺篙簑築篤篛篡篩篦糕糖縊縑縈縛縣縞縝縉縐罹羲翰翱翮耨膳膩膨臻興艘艙蕊���".split(""); +for(j = 0; j != D[162].length; ++j) if(D[162][j].charCodeAt(0) !== 0xFFFD) { e[D[162][j]] = 41472 + j; d[41472 + j] = D[162][j];} +D[163] = "����������������������������������������������������������������蕙蕈蕨蕩蕃蕉蕭蕪蕞螃螟螞螢融衡褪褲褥褫褡親覦諦諺諫諱謀諜諧諮諾謁謂諷諭諳諶諼豫豭貓賴蹄踱踴蹂踹踵輻輯輸輳辨辦遵遴選遲遼遺鄴醒錠�錶鋸錳錯錢鋼錫錄錚錐錦錡錕錮錙閻隧隨險雕霎霑霖霍霓霏靛靜靦鞘頰頸頻頷頭頹頤餐館餞餛餡餚駭駢駱骸骼髻髭鬨鮑鴕鴣鴦鴨鴒鴛默黔龍龜優償儡儲勵嚎嚀嚐嚅嚇嚏壕壓壑壎嬰嬪嬤孺尷屨嶼嶺嶽嶸幫彌徽應懂懇懦懋戲戴擎擊擘擠擰擦擬擱擢擭斂斃曙曖檀檔檄檢檜櫛檣橾檗檐檠歜殮毚���".split(""); +for(j = 0; j != D[163].length; ++j) if(D[163][j].charCodeAt(0) !== 0xFFFD) { e[D[163][j]] = 41728 + j; d[41728 + j] = D[163][j];} +D[164] = "����������������������������������������������������������������氈濘濱濟濠濛濤濫濯澀濬濡濩濕濮濰燧營燮燦燥燭燬燴燠爵牆獰獲璩環璦璨癆療癌盪瞳瞪瞰瞬瞧瞭矯磷磺磴磯礁禧禪穗窿簇簍篾篷簌篠糠糜糞糢�糟糙糝縮績繆縷縲繃縫總縱繅繁縴縹繈縵縿縯罄翳翼聱聲聰聯聳臆臃膺臂臀膿膽臉膾臨舉艱薪薄蕾薜薑薔薯薛薇薨薊虧蟀蟑螳蟒蟆螫螻螺蟈蟋褻褶襄褸褽覬謎謗謙講謊謠謝謄謐豁谿豳賺賽購賸賻趨蹉蹋蹈蹊轄輾轂轅輿避遽還邁邂邀鄹醣醞醜鍍鎂錨鍵鍊鍥鍋錘鍾鍬鍛鍰鍚鍔闊闋闌闈闆隱���".split(""); +for(j = 0; j != D[164].length; ++j) if(D[164][j].charCodeAt(0) !== 0xFFFD) { e[D[164][j]] = 41984 + j; d[41984 + j] = D[164][j];} +D[165] = "����������������������������������������������������������������隸雖霜霞鞠韓顆颶餵騁駿鮮鮫鮪鮭鴻鴿麋黏點黜黝黛鼾齋叢嚕嚮壙壘嬸彝懣戳擴擲擾攆擺擻擷斷曜朦檳檬櫃檻檸櫂檮檯歟歸殯瀉瀋濾瀆濺瀑瀏燻�燼燾燸獷獵璧璿甕癖癘癒瞽瞿瞻瞼礎禮穡穢穠竄竅簫簧簪簞簣簡糧織繕繞繚繡繒繙罈翹翻職聶臍臏舊藏薩藍藐藉薰薺薹薦蟯蟬蟲蟠覆覲觴謨謹謬謫豐贅蹙蹣蹦蹤蹟蹕軀轉轍邇邃邈醫醬釐鎔鎊鎖鎢鎳鎮鎬鎰鎘鎚鎗闔闖闐闕離雜雙雛雞霤鞣鞦鞭韹額顏題顎顓颺餾餿餽餮馥騎髁鬃鬆魏魎魍鯊���".split(""); +for(j = 0; j != D[165].length; ++j) if(D[165][j].charCodeAt(0) !== 0xFFFD) { e[D[165][j]] = 42240 + j; d[42240 + j] = D[165][j];} +D[166] = "����������������������������������������������������������������鯉鯽鯈鯀鵑鵝鵠黠鼕鼬儳嚥壞壟壢寵龐廬懲懷懶懵攀攏曠曝櫥櫝櫚櫓瀛瀟瀨瀚瀝瀕瀘爆爍牘犢獸獺璽瓊瓣疇疆癟癡矇礙禱穫穩簾簿簸簽簷籀繫繭�繹繩繪羅繳羶羹羸臘藩藝藪藕藤藥藷蟻蠅蠍蟹蟾襠襟襖襞譁譜識證譚譎譏譆譙贈贊蹼蹲躇蹶蹬蹺蹴轔轎辭邊邋醱醮鏡鏑鏟鏃鏈鏜鏝鏖鏢鏍鏘鏤鏗鏨關隴難霪霧靡韜韻類願顛颼饅饉騖騙鬍鯨鯧鯖鯛鶉鵡鵲鵪鵬麒麗麓麴勸嚨嚷嚶嚴嚼壤孀孃孽寶巉懸懺攘攔攙曦朧櫬瀾瀰瀲爐獻瓏癢癥礦礪礬���".split(""); +for(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];} +D[167] = "����������������������������������������������������������������礫竇競籌籃籍糯糰辮繽繼纂罌耀臚艦藻藹蘑藺蘆蘋蘇蘊蠔蠕襤覺觸議譬警譯譟譫贏贍躉躁躅躂醴釋鐘鐃鏽闡霰飄饒饑馨騫騰騷騵鰓鰍鹹麵黨鼯齟�齣齡儷儸囁囀囂夔屬巍懼懾攝攜斕曩櫻欄櫺殲灌爛犧瓖瓔癩矓籐纏續羼蘗蘭蘚蠣蠢蠡蠟襪襬覽譴護譽贓躊躍躋轟辯醺鐮鐳鐵鐺鐸鐲鐫闢霸霹露響顧顥饗驅驃驀騾髏魔魑鰭鰥鶯鶴鷂鶸麝黯鼙齜齦齧儼儻囈囊囉孿巔巒彎懿攤權歡灑灘玀瓤疊癮癬禳籠籟聾聽臟襲襯觼讀贖贗躑躓轡酈鑄鑑鑒霽���".split(""); +for(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];} +D[168] = "����������������������������������������������������������������霾韃韁顫饕驕驍髒鬚鱉鰱鰾鰻鷓鷗鼴齬齪龔囌巖戀攣攫攪曬欐瓚竊籤籣籥纓纖纔臢蘸蘿蠱變邐邏鑣鑠鑤靨顯饜驚驛驗髓體髑鱔鱗鱖鷥麟黴囑壩攬�灞癱癲矗罐羈蠶蠹衢讓讒讖艷贛釀鑪靂靈靄韆顰驟鬢魘鱟鷹鷺鹼鹽鼇齷齲廳欖灣籬籮蠻觀躡釁鑲鑰顱饞髖鬣黌灤矚讚鑷韉驢驥纜讜躪釅鑽鑾鑼鱷鱸黷豔鑿鸚爨驪鬱鸛鸞籲������������������������������������������������������".split(""); +for(j = 0; j != D[168].length; ++j) if(D[168][j].charCodeAt(0) !== 0xFFFD) { e[D[168][j]] = 43008 + j; d[43008 + j] = D[168][j];} +D[169] = "����������������������������������������������������������������乂乜凵匚厂万丌乇亍囗兀屮彳丏冇与丮亓仂仉仈冘勼卬厹圠夃夬尐巿旡殳毌气爿丱丼仨仜仩仡仝仚刌匜卌圢圣夗夯宁宄尒尻屴屳帄庀庂忉戉扐氕�氶汃氿氻犮犰玊禸肊阞伎优伬仵伔仱伀价伈伝伂伅伢伓伄仴伒冱刓刉刐劦匢匟卍厊吇囡囟圮圪圴夼妀奼妅奻奾奷奿孖尕尥屼屺屻屾巟幵庄异弚彴忕忔忏扜扞扤扡扦扢扙扠扚扥旯旮朾朹朸朻机朿朼朳氘汆汒汜汏汊汔汋汌灱牞犴犵玎甪癿穵网艸艼芀艽艿虍襾邙邗邘邛邔阢阤阠阣佖伻佢佉体���".split(""); +for(j = 0; j != D[169].length; ++j) if(D[169][j].charCodeAt(0) !== 0xFFFD) { e[D[169][j]] = 43264 + j; d[43264 + j] = D[169][j];} +D[170] = "����������������������������������������������������������������佤伾佧佒佟佁佘伭伳伿佡冏冹刜刞刡劭劮匉卣卲厎厏吰吷吪呔呅吙吜吥吘吽呏呁吨吤呇囮囧囥坁坅坌坉坋坒夆奀妦妘妠妗妎妢妐妏妧妡宎宒尨尪�岍岏岈岋岉岒岊岆岓岕巠帊帎庋庉庌庈庍弅弝彸彶忒忑忐忭忨忮忳忡忤忣忺忯忷忻怀忴戺抃抌抎抏抔抇扱扻扺扰抁抈扷扽扲扴攷旰旴旳旲旵杅杇杙杕杌杈杝杍杚杋毐氙氚汸汧汫沄沋沏汱汯汩沚汭沇沕沜汦汳汥汻沎灴灺牣犿犽狃狆狁犺狅玕玗玓玔玒町甹疔疕皁礽耴肕肙肐肒肜芐芏芅芎芑���".split(""); +for(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];} +D[171] = "����������������������������������������������������������������芓芊芃芄豸迉辿邟邡邥邞邧邠阰阨阯阭丳侘佼侅佽侀侇佶佴侉侄佷佌侗佪侚佹侁佸侐侜侔侞侒侂侕佫佮冞冼冾刵刲刳剆刱劼匊匋匼厒厔咇呿咁咑�咂咈呫呺呾呥呬呴呦咍呯呡呠咘呣呧呤囷囹坯坲坭坫坱坰坶垀坵坻坳坴坢坨坽夌奅妵妺姏姎妲姌姁妶妼姃姖妱妽姀姈妴姇孢孥宓宕屄屇岮岤岠岵岯岨岬岟岣岭岢岪岧岝岥岶岰岦帗帔帙弨弢弣弤彔徂彾彽忞忥怭怦怙怲怋怴怊怗怳怚怞怬怢怍怐怮怓怑怌怉怜戔戽抭抴拑抾抪抶拊抮抳抯抻抩���".split(""); +for(j = 0; j != D[171].length; ++j) if(D[171][j].charCodeAt(0) !== 0xFFFD) { e[D[171][j]] = 43776 + j; d[43776 + j] = D[171][j];} +D[172] = "����������������������������������������������������������������抰抸攽斨斻昉旼昄昒昈旻昃昋昍昅旽昑昐曶朊枅杬枎枒杶杻枘枆构杴枍枌杺枟枑枙枃杽极杸杹枔欥殀歾毞氝沓泬泫泮泙沶泔沭泧沷泐泂沺泃泆泭�泲泒泝沴沊沝沀泞泀洰泍泇沰泹泏泩泑炔炘炅炓炆炄炑炖炂炚炃牪狖狋狘狉狜狒狔狚狌狑玤玡玭玦玢玠玬玝瓝瓨甿畀甾疌疘皯盳盱盰盵矸矼矹矻矺矷祂礿秅穸穻竻籵糽耵肏肮肣肸肵肭舠芠苀芫芚芘芛芵芧芮芼芞芺芴芨芡芩苂芤苃芶芢虰虯虭虮豖迒迋迓迍迖迕迗邲邴邯邳邰阹阽阼阺陃俍���".split(""); +for(j = 0; j != D[172].length; ++j) if(D[172][j].charCodeAt(0) !== 0xFFFD) { e[D[172][j]] = 44032 + j; d[44032 + j] = D[172][j];} +D[173] = "����������������������������������������������������������������俅俓侲俉俋俁俔俜俙侻侳俛俇俖侺俀侹俬剄剉勀勂匽卼厗厖厙厘咺咡咭咥哏哃茍咷咮哖咶哅哆咠呰咼咢咾呲哞咰垵垞垟垤垌垗垝垛垔垘垏垙垥垚�垕壴复奓姡姞姮娀姱姝姺姽姼姶姤姲姷姛姩姳姵姠姾姴姭宨屌峐峘峌峗峋峛峞峚峉峇峊峖峓峔峏峈峆峎峟峸巹帡帢帣帠帤庰庤庢庛庣庥弇弮彖徆怷怹恔恲恞恅恓恇恉恛恌恀恂恟怤恄恘恦恮扂扃拏挍挋拵挎挃拫拹挏挌拸拶挀挓挔拺挕拻拰敁敃斪斿昶昡昲昵昜昦昢昳昫昺昝昴昹昮朏朐柁柲���".split(""); +for(j = 0; j != D[173].length; ++j) if(D[173][j].charCodeAt(0) !== 0xFFFD) { e[D[173][j]] = 44288 + j; d[44288 + j] = D[173][j];} +D[174] = "����������������������������������������������������������������柈枺柜枻柸柘柀枷柅柫柤柟枵柍枳柷柶柮柣柂枹柎柧柰枲柼柆柭柌枮柦柛柺柉柊柃柪柋欨殂殄殶毖毘毠氠氡洨洴洭洟洼洿洒洊泚洳洄洙洺洚洑洀�洝浂洁洘洷洃洏浀洇洠洬洈洢洉洐炷炟炾炱炰炡炴炵炩牁牉牊牬牰牳牮狊狤狨狫狟狪狦狣玅珌珂珈珅玹玶玵玴珫玿珇玾珃珆玸珋瓬瓮甮畇畈疧疪癹盄眈眃眄眅眊盷盻盺矧矨砆砑砒砅砐砏砎砉砃砓祊祌祋祅祄秕种秏秖秎窀穾竑笀笁籺籸籹籿粀粁紃紈紁罘羑羍羾耇耎耏耔耷胘胇胠胑胈胂胐���".split(""); +for(j = 0; j != D[174].length; ++j) if(D[174][j].charCodeAt(0) !== 0xFFFD) { e[D[174][j]] = 44544 + j; d[44544 + j] = D[174][j];} +D[175] = "����������������������������������������������������������������胅胣胙胜胊胕胉胏胗胦胍臿舡芔苙苾苹茇苨茀苕茺苫苖苴苬苡苲苵茌苻苶苰苪苤苠苺苳苭虷虴虼虳衁衎衧衪衩觓訄訇赲迣迡迮迠郱邽邿郕郅邾郇�郋郈釔釓陔陏陑陓陊陎倞倅倇倓倢倰倛俵俴倳倷倬俶俷倗倜倠倧倵倯倱倎党冔冓凊凄凅凈凎剡剚剒剞剟剕剢勍匎厞唦哢唗唒哧哳哤唚哿唄唈哫唑唅哱唊哻哷哸哠唎唃唋圁圂埌堲埕埒垺埆垽垼垸垶垿埇埐垹埁夎奊娙娖娭娮娕娏娗娊娞娳孬宧宭宬尃屖屔峬峿峮峱峷崀峹帩帨庨庮庪庬弳弰彧���".split(""); +for(j = 0; j != D[175].length; ++j) if(D[175][j].charCodeAt(0) !== 0xFFFD) { e[D[175][j]] = 44800 + j; d[44800 + j] = D[175][j];} +D[176] = "����������������������������������������������������������������恝恚恧恁悢悈悀悒悁悝悃悕悛悗悇悜悎戙扆拲挐捖挬捄捅挶捃揤挹捋捊挼挩捁挴捘捔捙挭捇挳捚捑挸捗捀捈敊敆旆旃旄旂晊晟晇晑朒朓栟栚桉栲�栳栻桋桏栖栱栜栵栫栭栯桎桄栴栝栒栔栦栨栮桍栺栥栠欬欯欭欱欴歭肂殈毦毤毨毣毢毧氥浺浣浤浶洍浡涒浘浢浭浯涑涍淯浿涆浞浧浠涗浰浼浟涂涘洯浨涋浾涀涄洖涃浻浽浵涐烜烓烑烝烋缹烢烗烒烞烠烔烍烅烆烇烚烎烡牂牸牷牶猀狺狴狾狶狳狻猁珓珙珥珖玼珧珣珩珜珒珛珔珝珚珗珘珨瓞���".split(""); +for(j = 0; j != D[176].length; ++j) if(D[176][j].charCodeAt(0) !== 0xFFFD) { e[D[176][j]] = 45056 + j; d[45056 + j] = D[176][j];} +D[177] = "����������������������������������������������������������������瓟瓴瓵甡畛畟疰痁疻痄痀疿疶疺皊盉眝眛眐眓眒眣眑眕眙眚眢眧砣砬砢砵砯砨砮砫砡砩砳砪砱祔祛祏祜祓祒祑秫秬秠秮秭秪秜秞秝窆窉窅窋窌窊�窇竘笐笄笓笅笏笈笊笎笉笒粄粑粊粌粈粍粅紞紝紑紎紘紖紓紟紒紏紌罜罡罞罠罝罛羖羒翃翂翀耖耾耹胺胲胹胵脁胻脀舁舯舥茳茭荄茙荑茥荖茿荁茦茜茢荂荎茛茪茈茼荍茖茤茠茷茯茩荇荅荌荓茞茬荋茧荈虓虒蚢蚨蚖蚍蚑蚞蚇蚗蚆蚋蚚蚅蚥蚙蚡蚧蚕蚘蚎蚝蚐蚔衃衄衭衵衶衲袀衱衿衯袃衾衴���".split(""); +for(j = 0; j != D[177].length; ++j) if(D[177][j].charCodeAt(0) !== 0xFFFD) { e[D[177][j]] = 45312 + j; d[45312 + j] = D[177][j];} +D[178] = "����������������������������������������������������������������衼訒豇豗豻貤貣赶赸趵趷趶軑軓迾迵适迿迻逄迼迶郖郠郙郚郣郟郥郘郛郗郜郤酐酎酏釕釢釚陜陟隼飣髟鬯乿偰偪偡偞偠偓偋偝偲偈偍偁偛偊偢倕�偅偟偩偫偣偤偆偀偮偳偗偑凐剫剭剬剮勖勓匭厜啵啶唼啍啐唴唪啑啢唶唵唰啒啅唌唲啥啎唹啈唭唻啀啋圊圇埻堔埢埶埜埴堀埭埽堈埸堋埳埏堇埮埣埲埥埬埡堎埼堐埧堁堌埱埩埰堍堄奜婠婘婕婧婞娸娵婭婐婟婥婬婓婤婗婃婝婒婄婛婈媎娾婍娹婌婰婩婇婑婖婂婜孲孮寁寀屙崞崋崝崚崠崌崨���".split(""); +for(j = 0; j != D[178].length; ++j) if(D[178][j].charCodeAt(0) !== 0xFFFD) { e[D[178][j]] = 45568 + j; d[45568 + j] = D[178][j];} +D[179] = "����������������������������������������������������������������崍崦崥崏崰崒崣崟崮帾帴庱庴庹庲庳弶弸徛徖徟悊悐悆悾悰悺惓惔惏惤惙惝惈悱惛悷惊悿惃惍惀挲捥掊掂捽掽掞掭掝掗掫掎捯掇掐据掯捵掜捭掮�捼掤挻掟捸掅掁掑掍捰敓旍晥晡晛晙晜晢朘桹梇梐梜桭桮梮梫楖桯梣梬梩桵桴梲梏桷梒桼桫桲梪梀桱桾梛梖梋梠梉梤桸桻梑梌梊桽欶欳欷欸殑殏殍殎殌氪淀涫涴涳湴涬淩淢涷淶淔渀淈淠淟淖涾淥淜淝淛淴淊涽淭淰涺淕淂淏淉淐淲淓淽淗淍淣涻烺焍烷焗烴焌烰焄烳焐烼烿焆焓焀烸烶焋焂���".split(""); +for(j = 0; j != D[179].length; ++j) if(D[179][j].charCodeAt(0) !== 0xFFFD) { e[D[179][j]] = 45824 + j; d[45824 + j] = D[179][j];} +D[180] = "����������������������������������������������������������������焎牾牻牼牿猝猗猇猑猘猊猈狿猏猞玈珶珸珵琄琁珽琇琀珺珼珿琌琋珴琈畤畣痎痒痏痋痌痑痐皏皉盓眹眯眭眱眲眴眳眽眥眻眵硈硒硉硍硊硌砦硅硐�祤祧祩祪祣祫祡离秺秸秶秷窏窔窐笵筇笴笥笰笢笤笳笘笪笝笱笫笭笯笲笸笚笣粔粘粖粣紵紽紸紶紺絅紬紩絁絇紾紿絊紻紨罣羕羜羝羛翊翋翍翐翑翇翏翉耟耞耛聇聃聈脘脥脙脛脭脟脬脞脡脕脧脝脢舑舸舳舺舴舲艴莐莣莨莍荺荳莤荴莏莁莕莙荵莔莩荽莃莌莝莛莪莋荾莥莯莈莗莰荿莦莇莮荶���".split(""); +for(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];} +D[181] = "����������������������������������������������������������������莚虙虖蚿蚷蛂蛁蛅蚺蚰蛈蚹蚳蚸蛌蚴蚻蚼蛃蚽蚾衒袉袕袨袢袪袚袑袡袟袘袧袙袛袗袤袬袌袓袎覂觖觙觕訰訧訬訞谹谻豜豝豽貥赽赻赹趼跂趹趿跁�軘軞軝軜軗軠軡逤逋逑逜逌逡郯郪郰郴郲郳郔郫郬郩酖酘酚酓酕釬釴釱釳釸釤釹釪釫釷釨釮镺閆閈陼陭陫陱陯隿靪頄飥馗傛傕傔傞傋傣傃傌傎傝偨傜傒傂傇兟凔匒匑厤厧喑喨喥喭啷噅喢喓喈喏喵喁喣喒喤啽喌喦啿喕喡喎圌堩堷堙堞堧堣堨埵塈堥堜堛堳堿堶堮堹堸堭堬堻奡媯媔媟婺媢媞���".split(""); +for(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];} +D[182] = "����������������������������������������������������������������婸媦婼媥媬媕媮娷媄媊媗媃媋媩婻婽媌媜媏媓媝寪寍寋寔寑寊寎尌尰崷嵃嵫嵁嵋崿崵嵑嵎嵕崳崺嵒崽崱嵙嵂崹嵉崸崼崲崶嵀嵅幄幁彘徦徥徫惉悹�惌惢惎惄愔惲愊愖愅惵愓惸惼惾惁愃愘愝愐惿愄愋扊掔掱掰揎揥揨揯揃撝揳揊揠揶揕揲揵摡揟掾揝揜揄揘揓揂揇揌揋揈揰揗揙攲敧敪敤敜敨敥斌斝斞斮旐旒晼晬晻暀晱晹晪晲朁椌棓椄棜椪棬棪棱椏棖棷棫棤棶椓椐棳棡椇棌椈楰梴椑棯棆椔棸棐棽棼棨椋椊椗棎棈棝棞棦棴棑椆棔棩椕椥棇���".split(""); +for(j = 0; j != D[182].length; ++j) if(D[182][j].charCodeAt(0) !== 0xFFFD) { e[D[182][j]] = 46592 + j; d[46592 + j] = D[182][j];} +D[183] = "����������������������������������������������������������������欹欻欿欼殔殗殙殕殽毰毲毳氰淼湆湇渟湉溈渼渽湅湢渫渿湁湝湳渜渳湋湀湑渻渃渮湞湨湜湡渱渨湠湱湫渹渢渰湓湥渧湸湤湷湕湹湒湦渵渶湚焠焞�焯烻焮焱焣焥焢焲焟焨焺焛牋牚犈犉犆犅犋猒猋猰猢猱猳猧猲猭猦猣猵猌琮琬琰琫琖琚琡琭琱琤琣琝琩琠琲瓻甯畯畬痧痚痡痦痝痟痤痗皕皒盚睆睇睄睍睅睊睎睋睌矞矬硠硤硥硜硭硱硪确硰硩硨硞硢祴祳祲祰稂稊稃稌稄窙竦竤筊笻筄筈筌筎筀筘筅粢粞粨粡絘絯絣絓絖絧絪絏絭絜絫絒絔絩���".split(""); +for(j = 0; j != D[183].length; ++j) if(D[183][j].charCodeAt(0) !== 0xFFFD) { e[D[183][j]] = 46848 + j; d[46848 + j] = D[183][j];} +D[184] = "����������������������������������������������������������������絑絟絎缾缿罥罦羢羠羡翗聑聏聐胾胔腃腊腒腏腇脽腍脺臦臮臷臸臹舄舼舽舿艵茻菏菹萣菀菨萒菧菤菼菶萐菆菈菫菣莿萁菝菥菘菿菡菋菎菖菵菉萉�萏菞萑萆菂菳菕菺菇菑菪萓菃菬菮菄菻菗菢萛菛菾蛘蛢蛦蛓蛣蛚蛪蛝蛫蛜蛬蛩蛗蛨蛑衈衖衕袺裗袹袸裀袾袶袼袷袽袲褁裉覕覘覗觝觚觛詎詍訹詙詀詗詘詄詅詒詈詑詊詌詏豟貁貀貺貾貰貹貵趄趀趉跘跓跍跇跖跜跏跕跙跈跗跅軯軷軺軹軦軮軥軵軧軨軶軫軱軬軴軩逭逴逯鄆鄬鄄郿郼鄈郹郻鄁���".split(""); +for(j = 0; j != D[184].length; ++j) if(D[184][j].charCodeAt(0) !== 0xFFFD) { e[D[184][j]] = 47104 + j; d[47104 + j] = D[184][j];} +D[185] = "����������������������������������������������������������������鄀鄇鄅鄃酡酤酟酢酠鈁鈊鈥鈃鈚鈦鈏鈌鈀鈒釿釽鈆鈄鈧鈂鈜鈤鈙鈗鈅鈖镻閍閌閐隇陾隈隉隃隀雂雈雃雱雰靬靰靮頇颩飫鳦黹亃亄亶傽傿僆傮僄僊�傴僈僂傰僁傺傱僋僉傶傸凗剺剸剻剼嗃嗛嗌嗐嗋嗊嗝嗀嗔嗄嗩喿嗒喍嗏嗕嗢嗖嗈嗲嗍嗙嗂圔塓塨塤塏塍塉塯塕塎塝塙塥塛堽塣塱壼嫇嫄嫋媺媸媱媵媰媿嫈媻嫆媷嫀嫊媴媶嫍媹媐寖寘寙尟尳嵱嵣嵊嵥嵲嵬嵞嵨嵧嵢巰幏幎幊幍幋廅廌廆廋廇彀徯徭惷慉慊愫慅愶愲愮慆愯慏愩慀戠酨戣戥戤揅���".split(""); +for(j = 0; j != D[185].length; ++j) if(D[185][j].charCodeAt(0) !== 0xFFFD) { e[D[185][j]] = 47360 + j; d[47360 + j] = D[185][j];} +D[186] = "����������������������������������������������������������������揱揫搐搒搉搠搤搳摃搟搕搘搹搷搢搣搌搦搰搨摁搵搯搊搚摀搥搧搋揧搛搮搡搎敯斒旓暆暌暕暐暋暊暙暔晸朠楦楟椸楎楢楱椿楅楪椹楂楗楙楺楈楉�椵楬椳椽楥棰楸椴楩楀楯楄楶楘楁楴楌椻楋椷楜楏楑椲楒椯楻椼歆歅歃歂歈歁殛嗀毻毼毹毷毸溛滖滈溏滀溟溓溔溠溱溹滆滒溽滁溞滉溷溰滍溦滏溲溾滃滜滘溙溒溎溍溤溡溿溳滐滊溗溮溣煇煔煒煣煠煁煝煢煲煸煪煡煂煘煃煋煰煟煐煓煄煍煚牏犍犌犑犐犎猼獂猻猺獀獊獉瑄瑊瑋瑒瑑瑗瑀瑏���".split(""); +for(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];} +D[187] = "����������������������������������������������������������������瑐瑎瑂瑆瑍瑔瓡瓿瓾瓽甝畹畷榃痯瘏瘃痷痾痼痹痸瘐痻痶痭痵痽皙皵盝睕睟睠睒睖睚睩睧睔睙睭矠碇碚碔碏碄碕碅碆碡碃硹碙碀碖硻祼禂祽祹稑�稘稙稒稗稕稢稓稛稐窣窢窞竫筦筤筭筴筩筲筥筳筱筰筡筸筶筣粲粴粯綈綆綀綍絿綅絺綎絻綃絼綌綔綄絽綒罭罫罧罨罬羦羥羧翛翜耡腤腠腷腜腩腛腢腲朡腞腶腧腯腄腡舝艉艄艀艂艅蓱萿葖葶葹蒏蒍葥葑葀蒆葧萰葍葽葚葙葴葳葝蔇葞萷萺萴葺葃葸萲葅萩菙葋萯葂萭葟葰萹葎葌葒葯蓅蒎萻葇���".split(""); +for(j = 0; j != D[187].length; ++j) if(D[187][j].charCodeAt(0) !== 0xFFFD) { e[D[187][j]] = 47872 + j; d[47872 + j] = D[187][j];} +D[188] = "����������������������������������������������������������������萶萳葨葾葄萫葠葔葮葐蜋蜄蛷蜌蛺蛖蛵蝍蛸蜎蜉蜁蛶蜍蜅裖裋裍裎裞裛裚裌裐覅覛觟觥觤觡觠觢觜触詶誆詿詡訿詷誂誄詵誃誁詴詺谼豋豊豥豤豦�貆貄貅賌赨赩趑趌趎趏趍趓趔趐趒跰跠跬跱跮跐跩跣跢跧跲跫跴輆軿輁輀輅輇輈輂輋遒逿遄遉逽鄐鄍鄏鄑鄖鄔鄋鄎酮酯鉈鉒鈰鈺鉦鈳鉥鉞銃鈮鉊鉆鉭鉬鉏鉠鉧鉯鈶鉡鉰鈱鉔鉣鉐鉲鉎鉓鉌鉖鈲閟閜閞閛隒隓隑隗雎雺雽雸雵靳靷靸靲頏頍頎颬飶飹馯馲馰馵骭骫魛鳪鳭鳧麀黽僦僔僗僨僳僛僪���".split(""); +for(j = 0; j != D[188].length; ++j) if(D[188][j].charCodeAt(0) !== 0xFFFD) { e[D[188][j]] = 48128 + j; d[48128 + j] = D[188][j];} +D[189] = "����������������������������������������������������������������僝僤僓僬僰僯僣僠凘劀劁勩勫匰厬嘧嘕嘌嘒嗼嘏嘜嘁嘓嘂嗺嘝嘄嗿嗹墉塼墐墘墆墁塿塴墋塺墇墑墎塶墂墈塻墔墏壾奫嫜嫮嫥嫕嫪嫚嫭嫫嫳嫢嫠嫛�嫬嫞嫝嫙嫨嫟孷寠寣屣嶂嶀嵽嶆嵺嶁嵷嶊嶉嶈嵾嵼嶍嵹嵿幘幙幓廘廑廗廎廜廕廙廒廔彄彃彯徶愬愨慁慞慱慳慒慓慲慬憀慴慔慺慛慥愻慪慡慖戩戧戫搫摍摛摝摴摶摲摳摽摵摦撦摎撂摞摜摋摓摠摐摿搿摬摫摙摥摷敳斠暡暠暟朅朄朢榱榶槉榠槎榖榰榬榼榑榙榎榧榍榩榾榯榿槄榽榤槔榹槊榚槏���".split(""); +for(j = 0; j != D[189].length; ++j) if(D[189][j].charCodeAt(0) !== 0xFFFD) { e[D[189][j]] = 48384 + j; d[48384 + j] = D[189][j];} +D[190] = "����������������������������������������������������������������榳榓榪榡榞槙榗榐槂榵榥槆歊歍歋殞殟殠毃毄毾滎滵滱漃漥滸漷滻漮漉潎漙漚漧漘漻漒滭漊漶潳滹滮漭潀漰漼漵滫漇漎潃漅滽滶漹漜滼漺漟漍漞�漈漡熇熐熉熀熅熂熏煻熆熁熗牄牓犗犕犓獃獍獑獌瑢瑳瑱瑵瑲瑧瑮甀甂甃畽疐瘖瘈瘌瘕瘑瘊瘔皸瞁睼瞅瞂睮瞀睯睾瞃碲碪碴碭碨硾碫碞碥碠碬碢碤禘禊禋禖禕禔禓禗禈禒禐稫穊稰稯稨稦窨窫窬竮箈箜箊箑箐箖箍箌箛箎箅箘劄箙箤箂粻粿粼粺綧綷緂綣綪緁緀緅綝緎緄緆緋緌綯綹綖綼綟綦���".split(""); +for(j = 0; j != D[190].length; ++j) if(D[190][j].charCodeAt(0) !== 0xFFFD) { e[D[190][j]] = 48640 + j; d[48640 + j] = D[190][j];} +D[191] = "����������������������������������������������������������������綮綩綡緉罳翢翣翥翞耤聝聜膉膆膃膇膍膌膋舕蒗蒤蒡蒟蒺蓎蓂蒬蒮蒫蒹蒴蓁蓍蒪蒚蒱蓐蒝蒧蒻蒢蒔蓇蓌蒛蒩蒯蒨蓖蒘蒶蓏蒠蓗蓔蓒蓛蒰蒑虡蜳蜣�蜨蝫蝀蜮蜞蜡蜙蜛蝃蜬蝁蜾蝆蜠蜲蜪蜭蜼蜒蜺蜱蜵蝂蜦蜧蜸蜤蜚蜰蜑裷裧裱裲裺裾裮裼裶裻裰裬裫覝覡覟覞觩觫觨誫誙誋誒誏誖谽豨豩賕賏賗趖踉踂跿踍跽踊踃踇踆踅跾踀踄輐輑輎輍鄣鄜鄠鄢鄟鄝鄚鄤鄡鄛酺酲酹酳銥銤鉶銛鉺銠銔銪銍銦銚銫鉹銗鉿銣鋮銎銂銕銢鉽銈銡銊銆銌銙銧鉾銇���".split(""); +for(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];} +D[192] = "����������������������������������������������������������������銩銝銋鈭隞隡雿靘靽靺靾鞃鞀鞂靻鞄鞁靿韎韍頖颭颮餂餀餇馝馜駃馹馻馺駂馽駇骱髣髧鬾鬿魠魡魟鳱鳲鳵麧僿儃儰僸儆儇僶僾儋儌僽儊劋劌勱勯�噈噂噌嘵噁噊噉噆噘噚噀嘳嘽嘬嘾嘸嘪嘺圚墫墝墱墠墣墯墬墥墡壿嫿嫴嫽嫷嫶嬃嫸嬂嫹嬁嬇嬅嬏屧嶙嶗嶟嶒嶢嶓嶕嶠嶜嶡嶚嶞幩幝幠幜緳廛廞廡彉徲憋憃慹憱憰憢憉憛憓憯憭憟憒憪憡憍慦憳戭摮摰撖撠撅撗撜撏撋撊撌撣撟摨撱撘敶敺敹敻斲斳暵暰暩暲暷暪暯樀樆樗槥槸樕槱槤樠槿槬槢���".split(""); +for(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];} +D[193] = "����������������������������������������������������������������樛樝槾樧槲槮樔槷槧橀樈槦槻樍槼槫樉樄樘樥樏槶樦樇槴樖歑殥殣殢殦氁氀毿氂潁漦潾澇濆澒澍澉澌潢潏澅潚澖潶潬澂潕潲潒潐潗澔澓潝漀潡潫�潽潧澐潓澋潩潿澕潣潷潪潻熲熯熛熰熠熚熩熵熝熥熞熤熡熪熜熧熳犘犚獘獒獞獟獠獝獛獡獚獙獢璇璉璊璆璁瑽璅璈瑼瑹甈甇畾瘥瘞瘙瘝瘜瘣瘚瘨瘛皜皝皞皛瞍瞏瞉瞈磍碻磏磌磑磎磔磈磃磄磉禚禡禠禜禢禛歶稹窲窴窳箷篋箾箬篎箯箹篊箵糅糈糌糋緷緛緪緧緗緡縃緺緦緶緱緰緮緟罶羬羰羭���".split(""); +for(j = 0; j != D[193].length; ++j) if(D[193][j].charCodeAt(0) !== 0xFFFD) { e[D[193][j]] = 49408 + j; d[49408 + j] = D[193][j];} +D[194] = "����������������������������������������������������������������翭翫翪翬翦翨聤聧膣膟膞膕膢膙膗舖艏艓艒艐艎艑蔤蔻蔏蔀蔩蔎蔉蔍蔟蔊蔧蔜蓻蔫蓺蔈蔌蓴蔪蓲蔕蓷蓫蓳蓼蔒蓪蓩蔖蓾蔨蔝蔮蔂蓽蔞蓶蔱蔦蓧蓨�蓰蓯蓹蔘蔠蔰蔋蔙蔯虢蝖蝣蝤蝷蟡蝳蝘蝔蝛蝒蝡蝚蝑蝞蝭蝪蝐蝎蝟蝝蝯蝬蝺蝮蝜蝥蝏蝻蝵蝢蝧蝩衚褅褌褔褋褗褘褙褆褖褑褎褉覢覤覣觭觰觬諏諆誸諓諑諔諕誻諗誾諀諅諘諃誺誽諙谾豍貏賥賟賙賨賚賝賧趠趜趡趛踠踣踥踤踮踕踛踖踑踙踦踧踔踒踘踓踜踗踚輬輤輘輚輠輣輖輗遳遰遯遧遫鄯���".split(""); +for(j = 0; j != D[194].length; ++j) if(D[194][j].charCodeAt(0) !== 0xFFFD) { e[D[194][j]] = 49664 + j; d[49664 + j] = D[194][j];} +D[195] = "����������������������������������������������������������������鄫鄩鄪鄲鄦鄮醅醆醊醁醂醄醀鋐鋃鋄鋀鋙銶鋏鋱鋟鋘鋩鋗鋝鋌鋯鋂鋨鋊鋈鋎鋦鋍鋕鋉鋠鋞鋧鋑鋓銵鋡鋆銴镼閬閫閮閰隤隢雓霅霈霂靚鞊鞎鞈韐韏�頞頝頦頩頨頠頛頧颲餈飺餑餔餖餗餕駜駍駏駓駔駎駉駖駘駋駗駌骳髬髫髳髲髱魆魃魧魴魱魦魶魵魰魨魤魬鳼鳺鳽鳿鳷鴇鴀鳹鳻鴈鴅鴄麃黓鼏鼐儜儓儗儚儑凞匴叡噰噠噮噳噦噣噭噲噞噷圜圛壈墽壉墿墺壂墼壆嬗嬙嬛嬡嬔嬓嬐嬖嬨嬚嬠嬞寯嶬嶱嶩嶧嶵嶰嶮嶪嶨嶲嶭嶯嶴幧幨幦幯廩廧廦廨廥���".split(""); +for(j = 0; j != D[195].length; ++j) if(D[195][j].charCodeAt(0) !== 0xFFFD) { e[D[195][j]] = 49920 + j; d[49920 + j] = D[195][j];} +D[196] = "����������������������������������������������������������������彋徼憝憨憖懅憴懆懁懌憺憿憸憌擗擖擐擏擉撽撉擃擛擳擙攳敿敼斢曈暾曀曊曋曏暽暻暺曌朣樴橦橉橧樲橨樾橝橭橶橛橑樨橚樻樿橁橪橤橐橏橔橯�橩橠樼橞橖橕橍橎橆歕歔歖殧殪殫毈毇氄氃氆澭濋澣濇澼濎濈潞濄澽澞濊澨瀄澥澮澺澬澪濏澿澸澢濉澫濍澯澲澰燅燂熿熸燖燀燁燋燔燊燇燏熽燘熼燆燚燛犝犞獩獦獧獬獥獫獪瑿璚璠璔璒璕璡甋疀瘯瘭瘱瘽瘳瘼瘵瘲瘰皻盦瞚瞝瞡瞜瞛瞢瞣瞕瞙瞗磝磩磥磪磞磣磛磡磢磭磟磠禤穄穈穇窶窸窵���".split(""); +for(j = 0; j != D[196].length; ++j) if(D[196][j].charCodeAt(0) !== 0xFFFD) { e[D[196][j]] = 50176 + j; d[50176 + j] = D[196][j];} +D[197] = "����������������������������������������������������������������窱窷篞篣篧篝篕篥篚篨篹篔篪篢篜篫篘篟糒糔糗糐糑縒縡縗縌縟縠縓縎縜縕縚縢縋縏縖縍縔縥縤罃罻罼罺羱翯耪耩聬膱膦膮膹膵膫膰膬膴膲膷膧�臲艕艖艗蕖蕅蕫蕍蕓蕡蕘蕀蕆蕤蕁蕢蕄蕑蕇蕣蔾蕛蕱蕎蕮蕵蕕蕧蕠薌蕦蕝蕔蕥蕬虣虥虤螛螏螗螓螒螈螁螖螘蝹螇螣螅螐螑螝螄螔螜螚螉褞褦褰褭褮褧褱褢褩褣褯褬褟觱諠諢諲諴諵諝謔諤諟諰諈諞諡諨諿諯諻貑貒貐賵賮賱賰賳赬赮趥趧踳踾踸蹀蹅踶踼踽蹁踰踿躽輶輮輵輲輹輷輴遶遹遻邆���".split(""); +for(j = 0; j != D[197].length; ++j) if(D[197][j].charCodeAt(0) !== 0xFFFD) { e[D[197][j]] = 50432 + j; d[50432 + j] = D[197][j];} +D[198] = "����������������������������������������������������������������郺鄳鄵鄶醓醐醑醍醏錧錞錈錟錆錏鍺錸錼錛錣錒錁鍆錭錎錍鋋錝鋺錥錓鋹鋷錴錂錤鋿錩錹錵錪錔錌錋鋾錉錀鋻錖閼闍閾閹閺閶閿閵閽隩雔霋霒霐�鞙鞗鞔韰韸頵頯頲餤餟餧餩馞駮駬駥駤駰駣駪駩駧骹骿骴骻髶髺髹髷鬳鮀鮅鮇魼魾魻鮂鮓鮒鮐魺鮕魽鮈鴥鴗鴠鴞鴔鴩鴝鴘鴢鴐鴙鴟麈麆麇麮麭黕黖黺鼒鼽儦儥儢儤儠儩勴嚓嚌嚍嚆嚄嚃噾嚂噿嚁壖壔壏壒嬭嬥嬲嬣嬬嬧嬦嬯嬮孻寱寲嶷幬幪徾徻懃憵憼懧懠懥懤懨懞擯擩擣擫擤擨斁斀斶旚曒���".split(""); +for(j = 0; j != D[198].length; ++j) if(D[198][j].charCodeAt(0) !== 0xFFFD) { e[D[198][j]] = 50688 + j; d[50688 + j] = D[198][j];} +D[199] = "����������������������������������������������������������������檍檖檁檥檉檟檛檡檞檇檓檎檕檃檨檤檑橿檦檚檅檌檒歛殭氉濌澩濴濔濣濜濭濧濦濞濲濝濢濨燡燱燨燲燤燰燢獳獮獯璗璲璫璐璪璭璱璥璯甐甑甒甏�疄癃癈癉癇皤盩瞵瞫瞲瞷瞶瞴瞱瞨矰磳磽礂磻磼磲礅磹磾礄禫禨穜穛穖穘穔穚窾竀竁簅簏篲簀篿篻簎篴簋篳簂簉簃簁篸篽簆篰篱簐簊糨縭縼繂縳顈縸縪繉繀繇縩繌縰縻縶繄縺罅罿罾罽翴翲耬膻臄臌臊臅臇膼臩艛艚艜薃薀薏薧薕薠薋薣蕻薤薚薞蕷蕼薉薡蕺蕸蕗薎薖薆薍薙薝薁薢薂薈薅蕹���".split(""); +for(j = 0; j != D[199].length; ++j) if(D[199][j].charCodeAt(0) !== 0xFFFD) { e[D[199][j]] = 50944 + j; d[50944 + j] = D[199][j];} +D[200] = "����������������������������������������������������������������蕶薘薐薟虨螾螪螭蟅螰螬螹螵螼螮蟉蟃蟂蟌螷螯蟄蟊螴螶螿螸螽蟞螲褵褳褼褾襁襒褷襂覭覯覮觲觳謞謘謖謑謅謋謢謏謒謕謇謍謈謆謜謓謚豏豰豲�豱豯貕貔賹赯蹎蹍蹓蹐蹌蹇轃轀邅遾鄸醚醢醛醙醟醡醝醠鎡鎃鎯鍤鍖鍇鍼鍘鍜鍶鍉鍐鍑鍠鍭鎏鍌鍪鍹鍗鍕鍒鍏鍱鍷鍻鍡鍞鍣鍧鎀鍎鍙闇闀闉闃闅閷隮隰隬霠霟霘霝霙鞚鞡鞜鞞鞝韕韔韱顁顄顊顉顅顃餥餫餬餪餳餲餯餭餱餰馘馣馡騂駺駴駷駹駸駶駻駽駾駼騃骾髾髽鬁髼魈鮚鮨鮞鮛鮦鮡鮥鮤���".split(""); +for(j = 0; j != D[200].length; ++j) if(D[200][j].charCodeAt(0) !== 0xFFFD) { e[D[200][j]] = 51200 + j; d[51200 + j] = D[200][j];} +D[201] = "����������������������������������������������������������������鮆鮢鮠鮯鴳鵁鵧鴶鴮鴯鴱鴸鴰鵅鵂鵃鴾鴷鵀鴽翵鴭麊麉麍麰黈黚黻黿鼤鼣鼢齔龠儱儭儮嚘嚜嚗嚚嚝嚙奰嬼屩屪巀幭幮懘懟懭懮懱懪懰懫懖懩擿攄�擽擸攁攃擼斔旛曚曛曘櫅檹檽櫡櫆檺檶檷櫇檴檭歞毉氋瀇瀌瀍瀁瀅瀔瀎濿瀀濻瀦濼濷瀊爁燿燹爃燽獶璸瓀璵瓁璾璶璻瓂甔甓癜癤癙癐癓癗癚皦皽盬矂瞺磿礌礓礔礉礐礒礑禭禬穟簜簩簙簠簟簭簝簦簨簢簥簰繜繐繖繣繘繢繟繑繠繗繓羵羳翷翸聵臑臒臐艟艞薴藆藀藃藂薳薵薽藇藄薿藋藎藈藅���".split(""); +for(j = 0; j != D[201].length; ++j) if(D[201][j].charCodeAt(0) !== 0xFFFD) { e[D[201][j]] = 51456 + j; d[51456 + j] = D[201][j];} +D[202] = "����������������������������������������������������������������薱薶藒蘤薸薷薾虩蟧蟦蟢蟛蟫蟪蟥蟟蟳蟤蟔蟜蟓蟭蟘蟣螤蟗蟙蠁蟴蟨蟝襓襋襏襌襆襐襑襉謪謧謣謳謰謵譇謯謼謾謱謥謷謦謶謮謤謻謽謺豂豵貙貘�貗賾贄贂贀蹜蹢蹠蹗蹖蹞蹥蹧蹛蹚蹡蹝蹩蹔轆轇轈轋鄨鄺鄻鄾醨醥醧醯醪鎵鎌鎒鎷鎛鎝鎉鎧鎎鎪鎞鎦鎕鎈鎙鎟鎍鎱鎑鎲鎤鎨鎴鎣鎥闒闓闑隳雗雚巂雟雘雝霣霢霥鞬鞮鞨鞫鞤鞪鞢鞥韗韙韖韘韺顐顑顒颸饁餼餺騏騋騉騍騄騑騊騅騇騆髀髜鬈鬄鬅鬩鬵魊魌魋鯇鯆鯃鮿鯁鮵鮸鯓鮶鯄鮹鮽鵜鵓鵏���".split(""); +for(j = 0; j != D[202].length; ++j) if(D[202][j].charCodeAt(0) !== 0xFFFD) { e[D[202][j]] = 51712 + j; d[51712 + j] = D[202][j];} +D[203] = "����������������������������������������������������������������鵊鵛鵋鵙鵖鵌鵗鵒鵔鵟鵘鵚麎麌黟鼁鼀鼖鼥鼫鼪鼩鼨齌齕儴儵劖勷厴嚫嚭嚦嚧嚪嚬壚壝壛夒嬽嬾嬿巃幰徿懻攇攐攍攉攌攎斄旞旝曞櫧櫠櫌櫑櫙櫋�櫟櫜櫐櫫櫏櫍櫞歠殰氌瀙瀧瀠瀖瀫瀡瀢瀣瀩瀗瀤瀜瀪爌爊爇爂爅犥犦犤犣犡瓋瓅璷瓃甖癠矉矊矄矱礝礛礡礜礗礞禰穧穨簳簼簹簬簻糬糪繶繵繸繰繷繯繺繲繴繨罋罊羃羆羷翽翾聸臗臕艤艡艣藫藱藭藙藡藨藚藗藬藲藸藘藟藣藜藑藰藦藯藞藢蠀蟺蠃蟶蟷蠉蠌蠋蠆蟼蠈蟿蠊蠂襢襚襛襗襡襜襘襝���".split(""); +for(j = 0; j != D[203].length; ++j) if(D[203][j].charCodeAt(0) !== 0xFFFD) { e[D[203][j]] = 51968 + j; d[51968 + j] = D[203][j];} +D[204] = "����������������������������������������������������������������襙覈覷覶觶譐譈譊譀譓譖譔譋譕譑譂譒譗豃豷豶貚贆贇贉趬趪趭趫蹭蹸蹳蹪蹯蹻軂轒轑轏轐轓辴酀鄿醰醭鏞鏇鏏鏂鏚鏐鏹鏬鏌鏙鎩鏦鏊鏔鏮鏣鏕�鏄鏎鏀鏒鏧镽闚闛雡霩霫霬霨霦鞳鞷鞶韝韞韟顜顙顝顗颿颽颻颾饈饇饃馦馧騚騕騥騝騤騛騢騠騧騣騞騜騔髂鬋鬊鬎鬌鬷鯪鯫鯠鯞鯤鯦鯢鯰鯔鯗鯬鯜鯙鯥鯕鯡鯚鵷鶁鶊鶄鶈鵱鶀鵸鶆鶋鶌鵽鵫鵴鵵鵰鵩鶅鵳鵻鶂鵯鵹鵿鶇鵨麔麑黀黼鼭齀齁齍齖齗齘匷嚲嚵嚳壣孅巆巇廮廯忀忁懹攗攖攕攓旟曨���".split(""); +for(j = 0; j != D[204].length; ++j) if(D[204][j].charCodeAt(0) !== 0xFFFD) { e[D[204][j]] = 52224 + j; d[52224 + j] = D[204][j];} +D[205] = "����������������������������������������������������������������曣曤櫳櫰櫪櫨櫹櫱櫮櫯瀼瀵瀯瀷瀴瀱灂瀸瀿瀺瀹灀瀻瀳灁爓爔犨獽獼璺皫皪皾盭矌矎矏矍矲礥礣礧礨礤礩禲穮穬穭竷籉籈籊籇籅糮繻繾纁纀羺翿�聹臛臙舋艨艩蘢藿蘁藾蘛蘀藶蘄蘉蘅蘌藽蠙蠐蠑蠗蠓蠖襣襦覹觷譠譪譝譨譣譥譧譭趮躆躈躄轙轖轗轕轘轚邍酃酁醷醵醲醳鐋鐓鏻鐠鐏鐔鏾鐕鐐鐨鐙鐍鏵鐀鏷鐇鐎鐖鐒鏺鐉鏸鐊鏿鏼鐌鏶鐑鐆闞闠闟霮霯鞹鞻韽韾顠顢顣顟飁飂饐饎饙饌饋饓騲騴騱騬騪騶騩騮騸騭髇髊髆鬐鬒鬑鰋鰈鯷鰅鰒鯸���".split(""); +for(j = 0; j != D[205].length; ++j) if(D[205][j].charCodeAt(0) !== 0xFFFD) { e[D[205][j]] = 52480 + j; d[52480 + j] = D[205][j];} +D[206] = "����������������������������������������������������������������鱀鰇鰎鰆鰗鰔鰉鶟鶙鶤鶝鶒鶘鶐鶛鶠鶔鶜鶪鶗鶡鶚鶢鶨鶞鶣鶿鶩鶖鶦鶧麙麛麚黥黤黧黦鼰鼮齛齠齞齝齙龑儺儹劘劗囃嚽嚾孈孇巋巏廱懽攛欂櫼欃�櫸欀灃灄灊灈灉灅灆爝爚爙獾甗癪矐礭礱礯籔籓糲纊纇纈纋纆纍罍羻耰臝蘘蘪蘦蘟蘣蘜蘙蘧蘮蘡蘠蘩蘞蘥蠩蠝蠛蠠蠤蠜蠫衊襭襩襮襫觺譹譸譅譺譻贐贔趯躎躌轞轛轝酆酄酅醹鐿鐻鐶鐩鐽鐼鐰鐹鐪鐷鐬鑀鐱闥闤闣霵霺鞿韡顤飉飆飀饘饖騹騽驆驄驂驁騺騿髍鬕鬗鬘鬖鬺魒鰫鰝鰜鰬鰣鰨鰩鰤���".split(""); +for(j = 0; j != D[206].length; ++j) if(D[206][j].charCodeAt(0) !== 0xFFFD) { e[D[206][j]] = 52736 + j; d[52736 + j] = D[206][j];} +D[207] = "����������������������������������������������������������������鰡鶷鶶鶼鷁鷇鷊鷏鶾鷅鷃鶻鶵鷎鶹鶺鶬鷈鶱鶭鷌鶳鷍鶲鹺麜黫黮黭鼛鼘鼚鼱齎齥齤龒亹囆囅囋奱孋孌巕巑廲攡攠攦攢欋欈欉氍灕灖灗灒爞爟犩獿�瓘瓕瓙瓗癭皭礵禴穰穱籗籜籙籛籚糴糱纑罏羇臞艫蘴蘵蘳蘬蘲蘶蠬蠨蠦蠪蠥襱覿覾觻譾讄讂讆讅譿贕躕躔躚躒躐躖躗轠轢酇鑌鑐鑊鑋鑏鑇鑅鑈鑉鑆霿韣顪顩飋饔饛驎驓驔驌驏驈驊驉驒驐髐鬙鬫鬻魖魕鱆鱈鰿鱄鰹鰳鱁鰼鰷鰴鰲鰽鰶鷛鷒鷞鷚鷋鷐鷜鷑鷟鷩鷙鷘鷖鷵鷕鷝麶黰鼵鼳鼲齂齫龕龢���".split(""); +for(j = 0; j != D[207].length; ++j) if(D[207][j].charCodeAt(0) !== 0xFFFD) { e[D[207][j]] = 52992 + j; d[52992 + j] = D[207][j];} +D[208] = "����������������������������������������������������������������儽劙壨壧奲孍巘蠯彏戁戃戄攩攥斖曫欑欒欏毊灛灚爢玂玁玃癰矔籧籦纕艬蘺虀蘹蘼蘱蘻蘾蠰蠲蠮蠳襶襴襳觾讌讎讋讈豅贙躘轤轣醼鑢鑕鑝鑗鑞韄�韅頀驖驙鬞鬟鬠鱒鱘鱐鱊鱍鱋鱕鱙鱌鱎鷻鷷鷯鷣鷫鷸鷤鷶鷡鷮鷦鷲鷰鷢鷬鷴鷳鷨鷭黂黐黲黳鼆鼜鼸鼷鼶齃齏齱齰齮齯囓囍孎屭攭曭曮欓灟灡灝灠爣瓛瓥矕礸禷禶籪纗羉艭虃蠸蠷蠵衋讔讕躞躟躠躝醾醽釂鑫鑨鑩雥靆靃靇韇韥驞髕魙鱣鱧鱦鱢鱞鱠鸂鷾鸇鸃鸆鸅鸀鸁鸉鷿鷽鸄麠鼞齆齴齵齶囔���".split(""); +for(j = 0; j != D[208].length; ++j) if(D[208][j].charCodeAt(0) !== 0xFFFD) { e[D[208][j]] = 53248 + j; d[53248 + j] = D[208][j];} +D[209] = "����������������������������������������������������������������攮斸欘欙欗欚灢爦犪矘矙礹籩籫糶纚纘纛纙臠臡虆虇虈襹襺襼襻觿讘讙躥躤躣鑮鑭鑯鑱鑳靉顲饟鱨鱮鱭鸋鸍鸐鸏鸒鸑麡黵鼉齇齸齻齺齹圞灦籯蠼�趲躦釃鑴鑸鑶鑵驠鱴鱳鱱鱵鸔鸓黶鼊龤灨灥糷虪蠾蠽蠿讞貜躩軉靋顳顴飌饡馫驤驦驧鬤鸕鸗齈戇欞爧虌躨钂钀钁驩驨鬮鸙爩虋讟钃鱹麷癵驫鱺鸝灩灪麤齾齉龘�����������������������������������������������������������".split(""); +for(j = 0; j != D[209].length; ++j) if(D[209][j].charCodeAt(0) !== 0xFFFD) { e[D[209][j]] = 53504 + j; d[53504 + j] = D[209][j];} +D[210] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[210].length; ++j) if(D[210][j].charCodeAt(0) !== 0xFFFD) { e[D[210][j]] = 53760 + j; d[53760 + j] = D[210][j];} +D[211] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[211].length; ++j) if(D[211][j].charCodeAt(0) !== 0xFFFD) { e[D[211][j]] = 54016 + j; d[54016 + j] = D[211][j];} +D[212] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[212].length; ++j) if(D[212][j].charCodeAt(0) !== 0xFFFD) { e[D[212][j]] = 54272 + j; d[54272 + j] = D[212][j];} +D[213] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[213].length; ++j) if(D[213][j].charCodeAt(0) !== 0xFFFD) { e[D[213][j]] = 54528 + j; d[54528 + j] = D[213][j];} +D[214] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[214].length; ++j) if(D[214][j].charCodeAt(0) !== 0xFFFD) { e[D[214][j]] = 54784 + j; d[54784 + j] = D[214][j];} +D[215] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[215].length; ++j) if(D[215][j].charCodeAt(0) !== 0xFFFD) { e[D[215][j]] = 55040 + j; d[55040 + j] = D[215][j];} +D[216] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[216].length; ++j) if(D[216][j].charCodeAt(0) !== 0xFFFD) { e[D[216][j]] = 55296 + j; d[55296 + j] = D[216][j];} +D[217] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[217].length; ++j) if(D[217][j].charCodeAt(0) !== 0xFFFD) { e[D[217][j]] = 55552 + j; d[55552 + j] = D[217][j];} +D[218] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[218].length; ++j) if(D[218][j].charCodeAt(0) !== 0xFFFD) { e[D[218][j]] = 55808 + j; d[55808 + j] = D[218][j];} +D[219] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];} +D[220] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];} +D[221] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[221].length; ++j) if(D[221][j].charCodeAt(0) !== 0xFFFD) { e[D[221][j]] = 56576 + j; d[56576 + j] = D[221][j];} +D[222] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[222].length; ++j) if(D[222][j].charCodeAt(0) !== 0xFFFD) { e[D[222][j]] = 56832 + j; d[56832 + j] = D[222][j];} +D[223] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];} +D[224] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];} +D[225] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];} +D[226] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];} +D[227] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];} +D[228] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];} +D[229] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];} +D[230] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];} +D[231] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];} +D[232] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];} +D[249] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[249].length; ++j) if(D[249][j].charCodeAt(0) !== 0xFFFD) { e[D[249][j]] = 63744 + j; d[63744 + j] = D[249][j];} +D[250] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[250].length; ++j) if(D[250][j].charCodeAt(0) !== 0xFFFD) { e[D[250][j]] = 64000 + j; d[64000 + j] = D[250][j];} +D[251] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[251].length; ++j) if(D[251][j].charCodeAt(0) !== 0xFFFD) { e[D[251][j]] = 64256 + j; d[64256 + j] = D[251][j];} +return {"enc": e, "dec": d }; })(); +cptable[20004] = (function(){ var d = [], e = {}, D = [], j; +D[0] = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€����������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];} +D[161] = "����������������������������������万丌丏冇与丘�丮丳么�乒乓�亄�亍亓��������仈��仜仨仩���仚�伔伀伕伈仱优伬��伓�������伝仴�������伂伭���伿�伳��佖佢佉体佤佡佧佒佁佇佝伾佣侅侀佴侄佷佌侚�����������������������������������一丁七丈三上下不丐丑且丕世丙丞丟並���丫中丰丱串�丶�丸丹主�丿乂乃久之乍乎乏乖乘�乙乜九乞也乩乳乾亂�亅了予事�二于云互五井亙�些亞亟�亠亡亢交亥亦亨享京亭亮亳亶亹�人什仁仃仄仆仇今�".split(""); +for(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];} +D[162] = "���������������������������������佹侁侐侞侇侒侕�佫佬侘佼侉佰侜�����������俬�侺����俙俍俓侲俉俋俁俜侻侳俇�俖侹���倓倢倞倇倰倛俴倳倷俷倗倠倧倵倯倱�倔��������倎�偯偺偤偰偆偡偞偠偋偍偛偊偝偢倕�����������������������������������介仍仂仉仔仕他仗付仙仝仞仡仟代令以仰仲仳仵件价任份仿企伉伊伋伍伎伏伐休伙伯估你伴伶伸伺伻似伽佃但佈位低住佐佑佔何佗余佘佚佛作佞佟佺佽佩佪佯佳併佶佸佻佾使侃來侈例侍侏侑侔侖侗供依侷俔俅侮侯侵�".split(""); +for(j = 0; j != D[162].length; ++j) if(D[162][j].charCodeAt(0) !== 0xFFFD) { e[D[162][j]] = 41472 + j; d[41472 + j] = D[162][j];} +D[163] = "���������������������������������偭偓�偀����偣���偮�偳�偅偟偩偌偷�傣傋傂�傌傢傛傃傕傝偨傜�傇�������傸�傽傻傺僈�傿僆傮僄傯傰僁傱僋�僣������僬僝僤僓僛僪僔僿儃儰僸僽僶儅����儊儜儑�儚儓�������������������������������������侶便係促俄俊俎俏俐俑俗俘俚俛保俟俠俞�信修俶倀倅倌倬俯俱俳俵俸俺俾倉個倍倆倏們倒倖倘候倚倜�借倡倣值倥倦倨倩倪倫倭偈偎偲偁偃假偉偏偕做停健偪側偵偶傎傔傖傀傅傍傑傒偫傘備傚傞�催傭傲傳傴債傷�".split(""); +for(j = 0; j != D[163].length; ++j) if(D[163][j].charCodeAt(0) !== 0xFFFD) { e[D[163][j]] = 41728 + j; d[41728 + j] = D[163][j];} +D[164] = "���������������������������������儩儠儦儥儡儢��������儱儭儴儵��儹儺儸儽��兙党兛兞兝兟�����������冔冘������������冼��冾����凅���凐���凔凘�����������刌刉刓刐刜刞刡�����������������������������������傾僂僅僇僉僊像僱僎僦僨僩僑僕僖僚偽僥僧僭僮�僵價僻僾儀儂億儆儈儉�儌僰儋儇儐儒儔儕儗儘儤償優儲儳儷儻儼兡儿兀允元兄充兆先光兇克兌免兔兒兕兗兜兢兣入內全兩��八公六兮共兵其具典兼冀�冂冉冊再�".split(""); +for(j = 0; j != D[164].length; ++j) if(D[164][j].charCodeAt(0) !== 0xFFFD) { e[D[164][j]] = 41984 + j; d[41984 + j] = D[164][j];} +D[165] = "����������������������������������刱�剆��剎剌����剚剒剟剕剫剭剬剷剺剻剼劀劁劋��劗劘劙劦勀��������勛���勴�匆��匋匑�匢����匰匴匷匼匽卌��卹�卼��厒厗厖��厞厜厤�厬�����������������������������������������������冏冓冑冒冕�冖冗冞冠冢冤冥冪�冫冬冰�冱冶冷�冽�凄准凈�凊凋凌凍���凜凝�几凡�凱凳凰�凵凶凸凹�出函�刀刁刃分切刈刊刎刑划刖列刨初刪判別�利剁刮到刲刳刵制刷券�刺剋剃剄則剉削刻前剜剞�".split(""); +for(j = 0; j != D[165].length; ++j) if(D[165][j].charCodeAt(0) !== 0xFFFD) { e[D[165][j]] = 42240 + j; d[42240 + j] = D[165][j];} +D[166] = "����������������������������������叼����吆吋�吇����吱呎吧��呅�呔听吨吰吷吘吽�吜吥咇呿咁咑咖呸咕咚呾呥呬呴�呠呺呤����呯�呡��咶哅�������咦咪哎咭咮哖咩咾咠呰咼哏哃哞哸��唑唅唦唇唔哪唷哢唗唒哧哳����������������������������������剡剔剖�剛剝剩剪剮副割剴創剸剽剿劂劃劄劇劈劉劊劌劍劑劓劖��力功加劣助努劫劬劭�劻劾劼勁勃�勇勉勍勒動勖勘務勝勞�募勢勣勤勦勩勰勳勱勵勷勸�勹勺勻勿�包匈匊匍匏匐勾匕化北匙�匚匜匝匟匠匡匣�".split(""); +for(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];} +D[167] = "���������������������������������唚哫�唋�唃唊��啡啃啊啪啦啤啍唭唴啵啶唌唲啥啎啑啢唶唵����啕唸唬�唻�������唹�唰啒啅������啿�喡喣喳喲喱喨喥喒噅喢�啽喌�喵啷嗡嗨嗦嗄嗩喿嗏嗕嗢嗖嗈嗲嗌嗐喍嗧��嗋嗊嗝����������������������������������匪匯匱匭���匸匹匾匿區�十千廾卅升午卉半卑卒卓協南博卍卜卞占卡卣卦�卩卬�卯印危卲�卵卷卸�卻卮即�卿�厂厄厎�厔厘厙厚厝原�厥�厭�厲��厶厹去�參��又叉及友反叔取受�叛叟叡叢�口古�".split(""); +for(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];} +D[168] = "���������������������������������嗀嗥嗯�����������嘌嘓嗼嗺嘝嘟嘍嘀嘛嘜嘁嘄嘧嘕噘噚噀嘳嘽噆嘾嘸嘺噈噂噁噊嘪嘮噗�������噙噹噞噰噠噣噭噮噳嚎嚐嚓嚌嚍嚆嚄嚃嚂噾���嚁���嚕嚘嚜嚗�������嚦嚧嚪嚫嚭嚵����������������������������������句另叨叩只叫召叭叮叱可台史右叵�司吁吃各合吉吊同名后吏吐向�吒君吝吞吟吠否吩咐吪含吭吮呈吳吵吶吸吹告吻吼吾呀呂呃呆咂呢呦呧周咒�呱呫味呵呶呷呻呼命咀咄咆咈和咎�咋咍咡�咢咥咧咨咫咬咯咱咳咷�".split(""); +for(j = 0; j != D[168].length; ++j) if(D[168][j].charCodeAt(0) !== 0xFFFD) { e[D[168][j]] = 43008 + j; d[43008 + j] = D[168][j];} +D[169] = "�����������������������������������囃嚽嚾囆囋��囌�囔囝囡��囟囧�囥��������圁圊圌圔圚圛�圞圠�圣�圮��圴��圪���坁坋�坒�����坅圾����������坽坴坶垀坲坱垃坩坯坨坢����������垵垘����������������������������������咸咺咽哀品哂哄哆哇哈哉咻咿員哥唎哦哩哭哮哲哺哼哽哿唁唆唈唉唐哤哨唄唏售唯唱唳唾啁啣啄商問啟啖啗啜啞唪唼啐啻啼喁喀喂喃善�喇喈喉喊喏喓喋喑喘喙喚喜喝唧喧喻喪喬單啾嗃嗅嗎嗇嗑嗓嗔嗚嗛嗜嗟嗣嗤喔�".split(""); +for(j = 0; j != D[169].length; ++j) if(D[169][j].charCodeAt(0) !== 0xFFFD) { e[D[169][j]] = 43264 + j; d[43264 + j] = D[169][j];} +D[170] = "���������������������������������垮垔垏垗�垥垙垟垌�������垕����垸埌垶垿埕埔埆垽垼�埇���垹垺�������埥埬埣埲埮埽埼埻堔堈埢埜埳�埧堀堌埱堎埩埰堍堄堋堉堐����������堩堷堥堣堭堬堝堨堛堮堿�堸�����������������������������������喟喤喫喭嗆嗉嗒嗿�嘆嘈嘉嘏嘐�嘒嘖嘗噓嗹嘂嘎嘔嗷嗽嗾嘬嘩嗶嘰嘯嘲嘴嘵嘶�嘹嘻嘿噉噌�噎噢�噤器噩噪噫噬噯噲噴噶噥噦噸噱嚀嚅嚇嚏嚙嚚嚲囅嚥嚬嚮嚳嚴嚨嚶嚼囀囁囂嚷囉囊囈囑囓叻囗回囚四囪因囤困囫�".split(""); +for(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];} +D[171] = "�����������������������������������������������堳��塥塭塨塣塝塙塉塯塕��������堽���墆塻墔墏墇塶墘墑墂墈塽塴墋塺��墎����������墥��������墡�墣墯墬墱�������壆墽壂�壔壒�����������������������������������囷囹固囿圃圄圈圉國�圇圂囮圍園圓圖團圜�土在圩圬圭圯地圻址坻�均坊坍坎坏坐坑�坌坡坤坦坭坵坷坼垂坪坫坰坳型垓垝垠垢垣垞垤垛垚埃埋城埒埂埏域埠�埭埶執培基堂堅堆堊埤埴埵埸�堙堞堡堠堤堪堯報堲�".split(""); +for(j = 0; j != D[171].length; ++j) if(D[171][j].charCodeAt(0) !== 0xFFFD) { e[D[171][j]] = 43776 + j; d[43776 + j] = D[171][j];} +D[172] = "��������������������������������������壢壝壛�������壨壧��壴�壾�夃夌复夎夒夗����夼奅奊�奜���奫��奰�奲奿�奻奾她妅妀奼���妧妘妠妦妡�妏妎妢妐�����������妵妺姏姎妽姈妱姃�妶妴姌姁�妼����������������������������������場堵堧堰�塍塊塋塌塑塔墓塚塗塘塞填塢塏塤塒塎塓塵塹塼塾塿墀墁境墅墉墊�塈墐墜墝增墟墨墩墮墺墳墠墫墦墾壁壅壇壈壎壑壓壕壖壘壙壞壟壚�壤壩圳士壬壯壹壺�壽壼��夆�夂夏�夔�夕外夙多夜夠夢夤夥�".split(""); +for(j = 0; j != D[172].length; ++j) if(D[172][j].charCodeAt(0) !== 0xFFFD) { e[D[172][j]] = 44032 + j; d[44032 + j] = D[172][j];} +D[173] = "���������������������������������姀妳姠���姲�姩姳姵姺姽娀姶姴�姛�姘姡娖娏娗娳����娭�������娊��娕婠婘婀婧娸婝媎�婰�娹�娾婃��婂�婑婍�����婟婥婬婒婛�婩婇��婈婌婓婤婗�������媃媄���������������������������������������大夭天太夫夬央失夯夷夸夾奄奇奈奉奎奏奐契奔奕奓套奚�奘奠奡奢奧奩奪�奭奮奀女奴奶奸好妁如妃妄妊妒妍妓妖妗妙妝妣妤妥妨妯妹妻妾姆姊始姍姐姑姒姓妲妮委姚姜姝姞�姣姤姥姨姦姪姬姅姻娃姿威娉姮姱�".split(""); +for(j = 0; j != D[173].length; ++j) if(D[173][j].charCodeAt(0) !== 0xFFFD) { e[D[173][j]] = 44288 + j; d[44288 + j] = D[173][j];} +D[174] = "�����������������������������������婿媌媜婻媦媏媞婸�媓���媋���媝媮娷媔婼媥媬媗�嫇媱嫈媻媰嫀嫊�嫆��媐媹��媷媴媶��嫮嫥嫕嫭嫛嫳嫢嫬��嬞�嫨��嫿嫴嫽嫷嫶�嬅嫸�嫻�嫵����嬝嬔嬓嬐嬠��嬚�嬡���嬨�����������������������������������娌娑娘娛娜娟娠娣娥娩娓娼�娶婁婆婉婊婕婚婢�婦婪婭娵婐婞婷婺媒媚媛媟媢媧媊媕�媳媵媸媼媽媾媿嫁嫂嫄嫉嫋嫌媲媺嫖嫗嫠嫡嫣嫦嫩嫪嫘嫚嫜嫫�媯嬈嬉嬋嬌嬃嬖嬗嬙嬛嬴嬪嬤嬭嬲嬾嬰嬸孀孅孌妞子孑孔孕孖�".split(""); +for(j = 0; j != D[174].length; ++j) if(D[174][j].charCodeAt(0) !== 0xFFFD) { e[D[174][j]] = 44544 + j; d[44544 + j] = D[174][j];} +D[175] = "���������������������������������嬦嬮�嬯���嬬嬥嬧�嬽嬿�����孃��孈孇孋�孍孎��孓����孢孬屘孮孲�孷�孻���宒宎����宨�宭��������寑寪寍寋寊������寯寲寱����尃�尌�尒尐�尳尷屇��屄����������������������������������字存孚孛孜孝孟季孤孥孩孫孰孱孳學孺�孿孵宀宁它宄�宅宇守安宋完宏宓宕宗官宙定宛宜客宣室宥宦宬宮宰害宴宵家宸容�寀宿寁寂�寄寅密寇寧富寐寒寓寔寖寘寎寞察寡寢寤寥實寨寠寙審寫寬寮寰寵寶宧寸寺封�".split(""); +for(j = 0; j != D[175].length; ++j) if(D[175][j].charCodeAt(0) !== 0xFFFD) { e[D[175][j]] = 44800 + j; d[44800 + j] = D[175][j];} +D[176] = "���������������������������������屌�屖屔�屙屜�屪�屴�屾���岓����岍岏岈岋岉岒岊�������岥�岶��岮岤岠岭岪岧岬岟岦岯岝峐峘峌峛峞峚峖峗峎�峉峇峊�����峟���峏�峪�峿峮峱峷�峰��崀��崁峬崞崋崝崤����������������������������������射�將專尉尊尋對導�小少�尖尚�尟尕尢尤尨尪就尰�尬�尸尹尺尻尼尾尿局屁居屆屈�屋屍屎屐屑展屏屝屠屢屣層履屧屨屩屬屭�屮屯岳山屹屺屼岌岐岑岔�岡岢岨岩岫岱岵岷岸岣峒峙峋峨峭�島峻峽峓峴峹��".split(""); +for(j = 0; j != D[176].length; ++j) if(D[176][j].charCodeAt(0) !== 0xFFFD) { e[D[176][j]] = 45056 + j; d[45056 + j] = D[176][j];} +D[177] = "���������������������������������崥崠崌崨崍�崆崏崰崒崣崟������崮��崷嵃��嵕崳崺崴崵嵑嵁崽�嵙嵂����嵧嵢嵨�����嵱嵣嵥嵲嵞�嶀嵽嶆嵺��嵷嶊嶉嶈嵹���嵿嵼嶜嶟��嶢嶝嶓嶕嶡嶚�������������嶵����������������������������������崇崎�崑崔崖崙崗崛崢崩崚崧崦嵇崿嵋嵫嵊嵌崶嵎嵐喦崱嵩嶁嵬嵯嵾嶂嶄嶇嶒嶔嶸嶠嶞嶧嶙嶷嶺嶼嶽巉巋巍巒巘巔巖嶗巛川州巡巢�工左巧巨巫差�己巳已巴�巷巽�巾�市布帆�帑帕希帖帗帘帙帚帛帔帝帡帟帥師�".split(""); +for(j = 0; j != D[177].length; ++j) if(D[177][j].charCodeAt(0) !== 0xFFFD) { e[D[177][j]] = 45312 + j; d[45312 + j] = D[177][j];} +D[178] = "���������������������������������嶰嶮嶪嶨嶬嶱嶭嶩嶴��巀�巃����巆巇��巏�巕巑�巟巠�巰��巹�帊帢帣帠帤��帩帾帴�幏幎�幙幓幩幝幠�幧幨幦�幵�庂�庉庌庈����庰庤庢庛庣庨庮庪��庹庲庱����廄��廅廆廇�����������������������������������席帨帳帶帷常帽幃幄幅幀幋幌幔幕幗幘幟幡幢幣幪幫幬幭幯幰幛干平年并幸幹�幺幻幼幽幾�广庀庄庇床庋序底庖店庚府庠庥度座庫庭庳庵庶康庸庾庬庴廁廂廌廑廈廉廊廋�廓廖廚廕廝廛廟廠廡廢廣廨廩廬廱廳龐��".split(""); +for(j = 0; j != D[178].length; ++j) if(D[178][j].charCodeAt(0) !== 0xFFFD) { e[D[178][j]] = 45568 + j; d[45568 + j] = D[178][j];} +D[179] = "����������������������������������廗廎廜廔廒廙廘��緳廞�廧廦廥��廮廯�廲蠯�异�弅������弚弝��弮弳弶�彃彆彉彋�彏彔�����彯虨彴�彸彶�彾彽�徛徖�徟�徫��徦徥��徲�徻徾�徿忀忁�����忔忕忷忨忞忥����������������������������������廴延廷�建���廿弁弄弇弈弊�弋�式弒�弓弔引弗弛弟弢弣弦弧弩弤弨弭弱弰張彄強弸弼彀彈彊彌彎弘彐彖彗彘彙彝��彡形彤彥彧彩彪彫彬彭彰影��彳彷役彼彿往征徂待徇很徉徊律後徐徑徒得徘徙徜從徠御�".split(""); +for(j = 0; j != D[179].length; ++j) if(D[179][j].charCodeAt(0) !== 0xFFFD) { e[D[179][j]] = 45824 + j; d[45824 + j] = D[179][j];} +D[180] = "���������������������������������������怀���忣忺忯忳怜�怭怲怋怴怊怚怞怬怢怐怌怮怓怷怹�怉����恀恟恬�������恔恲恞恅恓恛����悎��悕悗悢悈悀悇悊悐悆恿您惦惈惔悺惁惏惤惌惢悷惉悹�惍������惊�������������������������������������徨復循徬徭微徯徵德徹徼徽�心必忉忌忍忒忖志忘忐忑忙忝忠忡忪快忭忮念忱忸忤忻忽忿怍怎怏怒怕怖怗怙怛思怠怡急怦性怨怩怪怫怯�怵�怳怔恁恂恃恆恇恌恍恐恕恙恚恝恢恣恤恥恧恨恩恪恫恭息恰悃恉悄悅悌�".split(""); +for(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];} +D[181] = "������������������������������������悿�����愘���惼惾惷愖愅惵�愓愃愐愣��愋惿���愝愄����慅愶愲慉愩愨愯愮���慦�慔慺慛慲慒慱慬憀慞�慖��憋憃慹��憱憰憪憡憭憟憢憉憛憓��憌��憳��������������������������������������������悍悒悔悖悚悉悛悝�悟悠患�悁悱�悲悴悵悶悸悻悼悽悾惄情惆惇惎惑惓惕惘惙惚惛惜惝惟惠惡悰惋惰惱惲想惴惶惸惹惺惻愀愁愆愈愉愊愍愎意愒愔愕愚愛愜感慍愧�愫愬愴愷慎愾愿�慄慆慇慈慊態慌慁慓慕慘�慝�".split(""); +for(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];} +D[182] = "������������������������������������憺憿懅憴懁憵憼���懖���懧懠懤懨懞懘�懭懮懱懪懰懫�懩懻懹��戃戄������戠酨���戫戧戭����戺扂扔扜扞�扡���扚�扺抈�扲����扽扴抁抌抎抏抇扻�抸�抭拎抮抿抴抾抪����������������������������������慚慟慢慣�慧慨慫慮慰慳慴慵慶慷慼慾�憂慥憊憐憑憔憚憎憝憤憧憨憩憬憫憮憯憲憍憶憸憾懃懆懂懇懈應懊懋懌懍�憒憖��懟懣懥懦懲懿懵懶懷懸懺懼懽懾戀戁戇�戈戊戌戍戎成我戒戔戕或戚戛戟戢戥戡戣戩截戳�".split(""); +for(j = 0; j != D[182].length; ++j) if(D[182][j].charCodeAt(0) !== 0xFFFD) { e[D[182][j]] = 46592 + j; d[46592 + j] = D[182][j];} +D[183] = "�������������������������������������抰抩挋拵挎挃拫拹挏挌拸拶挀拲挐挕���挓�����挔�捖挬捅捃揤挩捁捘捔挭捀捏���挴捂�捇挸����捗捵掜掮掰捼掤挻掱�����掟��掁捥掂掭掝掗捺捯掙��掅���揎揥揨��������������������������������������戮戰戲戴戤戶戾房所戽扁扃�扆扇扈扉扊�手才扎扑扒打扐托扛扠扢扦扣扭扮扯扱扳扶批抵扼找承技抃抄抆抉把抑抒抓抔投抖抗折抨披抬抱抶抹押抽拂拄拆拇�拈拉拊拋拌拍拏拐拑拒拓拔�拖拗拘拙拚招拜扤拮拭括�".split(""); +for(j = 0; j != D[183].length; ++j) if(D[183][j].charCodeAt(0) !== 0xFFFD) { e[D[183][j]] = 46848 + j; d[46848 + j] = D[183][j];} +D[184] = "���������������������������������揝揯揃揳揊揶揇揙�揵摡揟揹揕揘揱揍搾搉搤搳摃搟���搎搕搹搷搣搌搰摁搯搚摀搞搧搋搿搫��搡搛����摍摲摵摦撦摎撂摞摜摔摝�摋摻摓摐摿摮摰摫����摬���摷������撢撳撟撖撠撗撜撏撋����������������������������������拱拯拳拴拷拽拾拿持挂指挈按挍挑挖拼挨挪挫振挶挹挺挼挽挾捄捆捉捋捌捍捚捐�捕挲捎捧捨捩捫�捭据捲捱�捶捷�捻捽掀掃掇授掉掊掌掏掎掐排掖掘掛掠採探掣接控推掩措掬掯掄掞掔掫揀揄揆揉描�提插揖揚換�".split(""); +for(j = 0; j != D[184].length; ++j) if(D[184][j].charCodeAt(0) !== 0xFFFD) { e[D[184][j]] = 47104 + j; d[47104 + j] = D[184][j];} +D[185] = "���������������������������������撊撌撣�������撘�����摨��撽撿�擃�擖擏擉���擩擤擨��擰�攁攎攆擽擸攇�擿攐攍攉攌攏��攗攕攓�攛攡攠攦����攭�攮��攳攽敁敃��敊敆��敓敧敪敤敜敯��敳�敹敿斀������������������������������������揜揠搽握揣揩揪揭揮揲援掽掾揅揗揰揫搆�損搏搒搓搔搖搗搜搠搢搥搦搨搪搬搭搴搵搶搐�搊搘摘摟摠摧摩摭摯摳摶摸摹摺摑摒摛撅摴摽撩撇撈撐撒撓撕撙撚撝撞撤撥撫播撮撰撲撬擫撱撻撼撾擁擂擄擅擇擊擋操擎擐�".split(""); +for(j = 0; j != D[185].length; ++j) if(D[185][j].charCodeAt(0) !== 0xFFFD) { e[D[185][j]] = 47360 + j; d[47360 + j] = D[185][j];} +D[186] = "���������������������������������斄�斒斔斖�斞斠斪斲斳斶�斻��旍��旓旗�旚旞�旯旮�旳旲�昐昑炚�旼昄昒昍昈旻昊昋���昺昳昫����昤�昹�昡昲昜昦昢�������晒晅晊晟晇�����晥晙晜晢�����晼晾晻暀晪晱����������������������������������擒擔擗擘據擷攙擠�擢擣擦擬擯擱�擭擲擴擺擻擾攀攄攔攖攘攜攝�攢攣攤攪攫攬攩�支攲�攴收攷攸改攻放政故效敉敘教敏救敕敖敗敔�敝敞敢散敦敻敬敲整敵敷數敺斁斂斃��文斌斐斑斕�斗料斛斜斝斟斡斢斤�".split(""); +for(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];} +D[187] = "������������������������������������������暊�����暆暌暕暐暔晸暋�������暟暡暠�����暯��暰暩暲��曌���暺�暸暻曊曄曆�暽������曖曒曘���曣曤��曭曮曫曶朁朄�����������朒������������������������������������斥斧斨斬斯斮新斷�斸�方於施斿旎旁旂旃旄旅旆旐旋旌族旖旒�旛旟旝�无既旡日旦旨早旬旭旰旱旴旺昌昂昆昃明昏易昔昀昉昕昝星映春昧昨昭是昱昴昵昶晁時晃晉晌晏晚晛晝晞晡晤晨晦�普景晰�晴晶晷智晬暄�".split(""); +for(j = 0; j != D[187].length; ++j) if(D[187][j].charCodeAt(0) !== 0xFFFD) { e[D[187][j]] = 47872 + j; d[47872 + j] = D[187][j];} +D[188] = "�����������������������������������������朠��������朣���朾朹朸朻机朿朼朳杙杅杍杚���杋���杈杹枍杺枔�杷枓枅杬枎枒杻枆构杴���柭���杸��柉����极�柲柈柸柃柀柅柫柋柤柍柶柣柂柧���柺�柊�����������������������������������暇暍暑暖暗暘暝暢暈暉暫�暮暱暴暵暹暨曉暾曀曈曇曏曙曚曛曜曝�曠曦曨曩曬昇曰曲曳更曷書曹曼曾替最會朅勗月有朋服朔朐朓朏朕朗望�朝期朢朦朧�木未末本札朮朱朴朵朽杆�杇杉杌李杏�材村杓杖杕杜杞束�".split(""); +for(j = 0; j != D[188].length; ++j) if(D[188][j].charCodeAt(0) !== 0xFFFD) { e[D[188][j]] = 48128 + j; d[48128 + j] = D[188][j];} +D[189] = "�����������������������������������枺柦枮柛��柆桋桏栵栫栭栯栴栝栘栒栔�����������栮�栓栟栚桉栜�梠梉梤桸梑梌梊梒桼梖���桻梀梪���������梨梡梂梇桭梮梫楖梣梬梩桵桱桾梛棳棡椇棌椈楰梴椑棯棆椔棸棽棵棇����������������������������������杠杗杪杭柿杯杰東杲杳杶杵杝杼松板枉析枕林枙枚果枝�枇枋枌枘枯枲枳枵架枷枸柎枻柁柄柏某柑柒染柔柘柙柚柜柝柞柟柢查柬柯柮柰柱柳柴柵枰枹柷栗校栩株核栱根栻格栽桀桁桂桃桅框案桌桎桐桑桓桔�栖栲栳桄�".split(""); +for(j = 0; j != D[189].length; ++j) if(D[189][j].charCodeAt(0) !== 0xFFFD) { e[D[189][j]] = 48384 + j; d[48384 + j] = D[189][j];} +D[190] = "���������������������������������椋椌椗棑椆椄棜椪棪椏棷棤棶�����������椊�椕�棴棔�����棎棩������椯楑������������楺楈楉椵楬椳楥椴楀楄楶���楌楋����楟楎楱楪楂楴椲楒楻椼���榵�������������������������������������桫桴桹桶桷桿梃梁梅梆梏梓梔梗�梜條梟梢梧�梭梯梱械梲梳梵桮梐桯棄棉棋棍棒棕棖棗棘棚棟棠棣棧棫棬森棰楦棲棹棺�棻棼�椅植椎椒棐棓棱棨椐椓椷椰椹椽椿楅楊楓楔櫛楗楙楘楚楞楝楠榆楢楣楫業楯楮極楷楹�".split(""); +for(j = 0; j != D[190].length; ++j) if(D[190][j].charCodeAt(0) !== 0xFFFD) { e[D[190][j]] = 48640 + j; d[48640 + j] = D[190][j];} +D[191] = "���������������������������������槂�榳榞槙榶槉榠榰榬榑榙榍榩榗���������榽槔榹榐�榣榯榿槄�����槏�樝槾樧槲槮樔樀樆槸�槤樠槬槭槢樍�樘槶�樖樇槼���槦������槻�槷橀樄槴�����橞����橩���������������������������������������椸楛楨楩楸榔榕榖�榛榜榦榧榨榫榭榮榱榴榻榾槁�槊構槌槍槎槐槓榎榤榥榷榼樑槃槧槨�概槳�槽槿樁樂樊樓樕標樛樞樟模樣槥樅樏樗槱樲樸樵樹樽樾橄橈橋橐橙橛機橡橧橫樨檸橢樺橁檖橘檀檉檄檐檔檜檟�檠�".split(""); +for(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];} +D[192] = "�����������������������������������燊橯橇����橖樴橦橉橨橝橭橶橑橚樻樿橪橤���檛檡檞檇檓檎檕檃檨檑檚橿��檁檥檍橾檗�檽檭櫡櫆��櫅檹檴�������櫠櫌櫑櫙�櫋櫥櫐櫫櫧����櫰櫸櫨櫹����欂櫼��欋欈欉欐欑�����������������������������������檢檣檬檮檯檳檻櫂櫃�櫓櫚櫜櫝櫞櫟櫱櫪櫬櫺櫳�欄櫻權�欒欖欃柩欠次欣欬欲款欷欹欺欽欿歃歆歇歕歉歌歎歐歔欻歙歛�歟歠歡歞止正此步武歪歧歲歷歸�歹死歿殀殂殃殄殆殉殊殍殖殘殕殛殞殤殫殢殪殮殯殲�殳�".split(""); +for(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];} +D[193] = "���������������������������������欘欗欚欙欥欨�欯欭欱欴欶欳欸欼�歁�歂歈歊歍歋��歜歭�歾肂殈殑殏殔殗殙殟殠殥殣殦殧殭殰殶�毃毄毈毇毉毊毌毐�毚�毞�毦毤毨毣毰毲��毻毼毽毾氁氀毿氆氕氘氖氙氚氝氠氟氥氧氨氦氪氫��氰氬氮����������������������������������段殷殺殼殽殿毀毅毆�母毋每毒毓�比毖毗毘�毛�毧毫毬毯毳氂氅毸毹氄氈氍�氏氐民氓氯气氛氣氤氳浠水�永氾汁汀求汎汗污汛汜汝江池�汐汔汕汞汨汪汰汲汴汶�決汾沁沂沄沃沈沉沌沍沐沒沔沖�沙沚沛沆沓�".split(""); +for(j = 0; j != D[193].length; ++j) if(D[193][j].charCodeAt(0) !== 0xFFFD) { e[D[193][j]] = 49408 + j; d[49408 + j] = D[193][j];} +D[194] = "���������������������������������氶�汃氿�氻���汆�������汌汒汍汙汏汊汋����汥�����沝沎�汽汸汫沋沏沘汱汯沇沕沜汦汳�泧沷泭泜泒泵��泍���泀泏泇沰����泩沺泃泬沶沭洢洏��浂���洬洉洁���洇洃�����������������������������������汩汭沅沬沫沮沱河沸油治沼沽沾沿泂泄況泅泔泆泉泊泌泓法泗泚泙泛泠泡波泣泥注泫泯泮泰泱泲泳�沴泐泖泝洄洊洋洌洎洒洗洛洟洞津洧汧洪洫洮洲洱洳洵洶洸活洼洽派洿流洙洚洹浙浚浣浦浩浪浮浴海浸浹浼涇消涉�".split(""); +for(j = 0; j != D[194].length; ++j) if(D[194][j].charCodeAt(0) !== 0xFFFD) { e[D[194][j]] = 49664 + j; d[49664 + j] = D[194][j];} +D[195] = "���������������������������������洨洴洭洩洺洑洀洐���浀�洝�浻����洖�����涄�涐浽涮�涃涀�����浵����浺浤浶洍浘浬浢浭浯涍涊淯浿涆浞浧涗浰浟������������淗涺淕淐��淂淲�涫涳湴涬淢淶淔渀淈淠����������������������������������涌涓涔涕�涘浡�浥涂涅涒涑涯液涵涸涼涿淅淆淇淋淑淖淘淙淚淝淡淤淦淨淪淫淬淮淰深淟混清淹淺添涎涪涴淀淄淒淞�淩淜渙渚減渝渠渡渣渤渥渦測渭港渰渴游渺渾湃湄湅湊湍湎湖湘湛湝湧湫湮湯湲湱渟渢湑湓湔�".split(""); +for(j = 0; j != D[195].length; ++j) if(D[195][j].charCodeAt(0) !== 0xFFFD) { e[D[195][j]] = 49920 + j; d[49920 + j] = D[195][j];} +D[196] = "���������������������������������涾淥淛淴淊涽淭淌淏淍��淉淣淓淳淵淼�湸���湒��湡渱渨湠渹湟��湚�湦���渧�渶�湕溙���湷��湆湇湉渼渽渲湥湢渫渿湁湳渜渳湣湋湀渻渃渮湞湨����湹湤�溎溣�溳����溗滐�������������������������������������湜�湩源準溛溜溝溟溠溢溤溥溧溦溪溫溯溱溲溶溷溺溼溽滁滂滃滄滅滋滌滎滑滓滔滕溏溘滇滘滫滮滯滲�滴滬滸�滾滿漁漂漆漏溉漓演漘漙漠漢漣漪漫漬漭漰漱漲漳漸漾漿�滷滹漈漉漎漚漦漩漯漵漶漊漕潁潑潔潘潛�".split(""); +for(j = 0; j != D[196].length; ++j) if(D[196][j].charCodeAt(0) !== 0xFFFD) { e[D[196][j]] = 50176 + j; d[50176 + j] = D[196][j];} +D[197] = "���������������������������������溍�滊溿溒�滖滈滀溓溔溹滆滒�溞滉溰滍滏溴溾滜������漞����滵滱���漍����漟�潩��漀漜���漺滽��漹潻滼漃漥漷滻漮潎漧漻漒滭漼潳漇潃漅潽�潗澔澓澅潚澖潶潬潕潲潒潐�潣潡�����������������������������������潟潢�潤潦潭潮潰潼�潸潺澀澄澆澇澈澉澌澎潏潝潞潠潀濆潯潾澍澂澒溈澡�澣澤澮澳澹激濁�濃澠澥澦澧澨澰澴澱濇澶澼濘濔濕濈濊濛濟濠濡濤濫濬濮濯濰濱瀉濩濞濺濼濾瀆瀏瀑瀁瀕灠瀚瀛瀝瀟瀠瀨瀘瀡瀣瀼瀋瀍�".split(""); +for(j = 0; j != D[197].length; ++j) if(D[197][j].charCodeAt(0) !== 0xFFFD) { e[D[197][j]] = 50432 + j; d[50432 + j] = D[197][j];} +D[198] = "�����������������������������������澐�澋�潪潓澕��澗����潧����澭濋濎濄澽澞濂瀄濌澩澬濏澢澫濍澲澿澺澪澯�濨����濷�濢������濲����濴濜濭濣濧濦�瀀濻���瀊���瀇瀌瀅瀔瀎濿�瀙瀖��瀫瀢瀩�瀤瀗����������������������������������瀧瀦�瀲瀾瀰瀵瀹瀺灌灃灉�灑灘灝灣灩灞灤炸火灰灶灸灺灼災�炊炎炒炕炙炘炤炫炬炭炮炯炰炱炳炷��烈烋烏��烘烜烝�烹烺烽焌焙焚焜無焦焰然焞焠��煇煉�煌煎煮煒熙煖煜煞煢煤煥煦照煩煨�煬煽熀熄�".split(""); +for(j = 0; j != D[198].length; ++j) if(D[198][j].charCodeAt(0) !== 0xFFFD) { e[D[198][j]] = 50688 + j; d[50688 + j] = D[198][j];} +D[199] = "�����������������������������������瀯瀷瀴瀱灂瀸瀿灀瀳�瀻������灅灄灊灈�灆��灗��灒灛����灚灡灟灦灥灨灪��灱�灴���炔炅�������炑���炓炖炃���炄炆炟炾���炡���炩�炵炴�烅�烚�烞�烎烒����������������������������������熅熇熊熏熒熛熟熔熨熬熯熱熠熲熸�熹熾燀燂燐燖燙燃燄燈燎燒燔燕營燠燥燦燧燬燭燻燮燹燼燿燾爆爇爍爓爐爛爚爝爟焮焯�爨烤爪爭�爬爰為爵�父爹爺爸爻爽爾�爿�牂牁牆�片版牋牌牒�牖牘牓牙�牛牝牟牡�".split(""); +for(j = 0; j != D[199].length; ++j) if(D[199][j].charCodeAt(0) !== 0xFFFD) { e[D[199][j]] = 50944 + j; d[50944 + j] = D[199][j];} +D[200] = "���������������������������������烇烡���烢烗烠��烍�烓烑缹烊烙����烶��烳焆�焋��焂烼烸��焀�烿����焉焊焍烷焗烴烯烰�焄��������������焱焣����������焟�焢����煠煁煝��煓��煋����������������������������������牢牣牧牴物牮牯牲牶牷特牽牿犀�犉犍犒犖犢犧犨牳犬犯犴狀狂狃狄狁狎狐狗狙狡�狠狩狴狸狹狼狽狻狺狷猋猁猖猗猙猛猜猝猞猊猘猢猥猩��猴猶猷�猱猺猻猾猿獃獄獅獍獐獒獗獘獧獨獪獬獠獮獲獯獳獷獵獸獺獻�".split(""); +for(j = 0; j != D[200].length; ++j) if(D[200][j].charCodeAt(0) !== 0xFFFD) { e[D[200][j]] = 51200 + j; d[51200 + j] = D[200][j];} +D[201] = "���������������������������������煘���煪煄���煲��煸���煚煐煃煟煔煙煆煣熐熉熂煻��爃������熆�����熡��熥��熧�������熼熝熪熳熤熞熜熰熚�����燅熿燉燜燘燁燋燏��燇�燚���������熽����������������������������������玁獰玀玄率玅玈�玉王玎玕玔玖玟玠玢玦玨玩玫玲玳玷珂珇珈�玻珀珊珍珌玼珞珓珠珙珖珥珣珩珪班珧珮珽現球琅理琇琉珶�琊�琖琚琛琢琤琥琦琨琪琭琮琯琳琴琶琵琫琬玤琲瑋瑕瑙瑚瑛瑜瑞瑟�瑀瑁�瑑瑗瑣瑤瑩�".split(""); +for(j = 0; j != D[201].length; ++j) if(D[201][j].charCodeAt(0) !== 0xFFFD) { e[D[201][j]] = 51456 + j; d[51456 + j] = D[201][j];} +D[202] = "������������������������������������燨�����燢�燤燱���燡燴��燸燽������爁���爌爊爂���������爔����爙��爞���爢�爣��爩������牄牉��牏牚牞牠牪牬牰牸�牼牾牻�犁犄犈犆犅��犌犑����������������������������������瑪瑰瑲�瑯瑱瑳�璀璃璋瑽瑾璁璆�璈璡璇璐璜璣璘璞璟璠璧璨璯環璪璫璽璲璸璵瓊瓏瓔瓛璿瓚�瓀瓘璥瓜瓞瓠瓢瓣瓤�瓦瓮瓴瓶瓷瓻甃甄甇瓿甌甍�甑甓甕甗甔甖瓩甘甚甜��生甡產甥甦�用甪甫甬甯�田由甲申�".split(""); +for(j = 0; j != D[202].length; ++j) if(D[202][j].charCodeAt(0) !== 0xFFFD) { e[D[202][j]] = 51712 + j; d[51712 + j] = D[202][j];} +D[203] = "���������������������������������犐犎犕犓犗���犘犚犛��犝犞犥犦犤犣犡�犩犪�犮犰犵�犺狅犿犽狆�狖狋狘狉狜狒狔狚狌狑狊狤狨狫�狟狪狦狣猀狾狶狳���猌�猓猇猑猒猈狿猏猣猵猰猳猧猲猭猦�����猼獂獀獊��獎獑獌��獞����������������������������������男甸甽甾畀畋界畎畏町�甿畇畔畚畛畜畝留畟畢畤略畦番畫畬畯異�畷畹畽當畸畿疆疇疊�疋�疏疐疑�疒疔�疕疚疝疢疣疤疥疫疧疲疳�疵疸疹疼疽疾疿病症痂痊痌痍痒痔痕痗痘痛痞痣痡痢痯痰痲痴痺痼痾痿瘀瘁�".split(""); +for(j = 0; j != D[203].length; ++j) if(D[203][j].charCodeAt(0) !== 0xFFFD) { e[D[203][j]] = 51968 + j; d[51968 + j] = D[203][j];} +D[204] = "���������������������������������獟獝獛獡獢獩獦獥獫�獶獽獼獾獿玂玃玆��玒�玗玓��玥�玬�玡玭�������珆�玹�玴珃珋�����玿玸玾玶珅�珛珔�珚���珨�珫珒����珜珘�珝�珸珵琄琁琀琍�琋�珼��珿珺琈�珴������������������������������������瘉瘋瘍瘏瘝瘐瘓瘕瘖瘞瘟瘠瘡瘢瘤瘥瘦瘧�瘨瘰瘳瘴瘵�瘼療癃癆癇癉癖瘺�癘癙癜癤癡癢癥�癭�癩癬癮�癰癱癲疙癶癸登發�白百皂的皆皇皈�皎皓皖皙皜皚皤�皦皭皪皫�皮皴�皸皺皽�皿盂盃盅盆盈益�".split(""); +for(j = 0; j != D[204].length; ++j) if(D[204][j].charCodeAt(0) !== 0xFFFD) { e[D[204][j]] = 52224 + j; d[52224 + j] = D[204][j];} +D[205] = "������������������������������������������������瑎琠�������琩琺琰琡琱�������瑄瑊琿瑒�瑂瑔�瑏�瑍�����瑆��������瑹瑢瑵�����瑭������瑮瑧����������瑼璉璊璅�������������������������������������盍盎盒盔盛盜盝盞盟�盡監盤盥盧盦盭盩盪盬�目盲直相盼盾省眄眇眈眉眊看盻盰盱眚眛真眠眢眥�眩眙眯眵眴眶眷眸眺眼眾�眹睨睇睆睊睍睚睛睜睞睪睡睢督睦睫睠睟睥睹睿瞀�睯瞋瞍瞎瞑瞞瞠瞪瞥瞧瞬瞳�瞭�".split(""); +for(j = 0; j != D[205].length; ++j) if(D[205][j].charCodeAt(0) !== 0xFFFD) { e[D[205][j]] = 52480 + j; d[52480 + j] = D[205][j];} +D[206] = "����������������������������������瑿������璕�璚璗����������璭���璱璩璦瓁�����璻�瓋璺瓅����������瓖瓗����瓝瓟瓡瓥瓨瓬瓵�瓾瓽甀甂�甈甋甐甒甏�甝����甩甭甮甹���畈���畣������������������������������������瞰瞶瞻瞽瞿矇矍矓矗矙瞢矚眭矛矜矞�矢矣知矧矩短矮矰矯矱�石�矼砆矻砂砉砌砍砑砒砭砢砣砥斫砦破砲砠砧砮砰硃研硎硜硝硤硨硫硬硭硯确碆碌碎硼碗�碇碔碑碓硾碡碪碞碭碟碣碧碩碬�碰確碼碾磁磅磊�磋磐�".split(""); +for(j = 0; j != D[206].length; ++j) if(D[206][j].charCodeAt(0) !== 0xFFFD) { e[D[206][j]] = 52736 + j; d[52736 + j] = D[206][j];} +D[207] = "�����������������������������������������畾�疀��疌疘疶疰痁疻痄痀痐痎痏痋痑痦痝痟痤痠痙痧痚�痵痽瘃痱痷痹痸痻瘑瘊瘈瘌瘙瘜瘣瘩�瘯瘭�瘽瘲瘸癌癈�癒癐癓癠癟癪�癵癹癿皁��皊皋皏��皒���皝皞皛皯皰皵皻皾盄�盉�����������������������������������磔磕磉磑磛磟磚磧磨磬磯磲磺磽礁磷磻礎磈礙礬礧磴�礦礪礫礱��示礽社祀祁祅祇祈祉礿祕祊祏祐祓祔祖祗祚祛祜祝神祟祠祫祲祥祧票祭�祼祺祿�禁禋禍禎福禘禊禔禖禕禡�禦禠禫禧禪禨禮禰禱禳禴�禸禹禺�".split(""); +for(j = 0; j != D[207].length; ++j) if(D[207][j].charCodeAt(0) !== 0xFFFD) { e[D[207][j]] = 52992 + j; d[52992 + j] = D[207][j];} +D[208] = "���������������������������������盓�����盚��������盯盵盳�眃眅盹�������眝眧眐眓眒眣眨眕眑眲眳眽���眱��睄睅睎睋睌��睏睙���睕睒睬睖睩睧睔瞁睼瞅瞂睮�瞄睽��������瞉瞇�瞏瞌瞟瞙瞚瞝瞡瞜瞛����������������������������������离禽�禾禿秀私秈秉�秋种科秕秒�秘秪租秠�秤秦秧秩秫秭秬秷秸移稀稂稅稈程稌稍稊稔稗稙稚稛稜稟稠�稹種稱稷稻稼稽稿穀穄穆�穋穌積穎穗穜穡穟穢穠穨穩穫穭穰�穴穵究穸穹突空�穿窀窄窅窆窈窋窊窒窕�".split(""); +for(j = 0; j != D[208].length; ++j) if(D[208][j].charCodeAt(0) !== 0xFFFD) { e[D[208][j]] = 53248 + j; d[53248 + j] = D[208][j];} +D[209] = "���������������������������������瞕��瞵瞫瞴����矂瞼瞺�矉矊�矌矎矏矐矔矕矘��矠���矬�矲��矸�矹矽��矺矷�������砅砐砏砎�砃�砓砱砳��砷砬砵砯砟砨砸砝砡�砫����硐������������硅硈硉硍����������������������������������窖窞窗窘窟窠窨窩窪窬窮�窳窵窶窸窣窺窾�竁竄竅竇�竊�立竑站��竟章竣童竦�竭端競�竹竺竽竿笄笈笊笏笑笙笛笞笤笠笥符笨�笪笫第笮笆笎笱笳筅筆筇等筊筋筌筍筎筏筐筑筒�答策筠筤筥筦筧筩筮筲筴筵�".split(""); +for(j = 0; j != D[209].length; ++j) if(D[209][j].charCodeAt(0) !== 0xFFFD) { e[D[209][j]] = 53504 + j; d[53504 + j] = D[209][j];} +D[210] = "���������������������������������硊硌硢�硠硥硱硪硰硩��碏碚碄碕碅碘碉���硻碖��硹�硿碙���碥�碳碲碴碨碫碤�碢����磍碻磏磌磎�磃������磠磡���磭磝磩磥磪磞磣磳礂磼��磹�礄�礅�������礌礓礔礉礝�����������������������������������筱箋箎箂箍箇箔箕算箛箝箠管箏箐��箘箜箊箬箭箯箱箴箸箾節篁範篆篇築篋篘篔篙篚篝篠篡篤簑篧篨篩篦篪篲篳�篴篷簀簆簇簋簍簌簏篌篾簃�簜簟簞簠簡簣簥簦簧簨簪簫簷簸�簻簽簾簿�籃籊籌籍�籐籔籓籀�".split(""); +for(j = 0; j != D[210].length; ++j) if(D[210][j].charCodeAt(0) !== 0xFFFD) { e[D[210][j]] = 53760 + j; d[53760 + j] = D[210][j];} +D[211] = "���������������������������������礛礜�礞�礥礣礨礩��礯��礭礵��礸礹�祂��祄�祌祋��祒祑��祤���祩祪祣祡�����祴祳禂祹��������禓禗禐����禈�禒�禛�禚禜�禤�禭禬��禲���禷禶歶�秅��秏秖����������������������������������籙籚籛籜籟籠籤籥�籧籩籫籮籬籯籲篰米�籹粉粒粕粗粘粟粢粵粥��粱粲粹粳粺粼精糈糊�糕�糖糗糜糝糞糟糠�糙糧�糯糲糴�糱糶糎糸系糾紀紂約紅紆紇紈紉紊紋紵紖紏紝紞紽納紐紓純紗紘紙級紛紜素紡索紫�".split(""); +for(j = 0; j != D[211].length; ++j) if(D[211][j].charCodeAt(0) !== 0xFFFD) { e[D[211][j]] = 54016 + j; d[54016 + j] = D[211][j];} +D[212] = "���������������������������������秎秝秮秜��秣��秺秶�稃���稄���稐稘稞稒�稑�稦稓���稫穊稰稯������穇穔�穈穘穚穛����穧��穮穬�穱����穾�窉窌��窏窔窐��窙���窢窫窴窲窯�窱窷竀窿���������������������������������������紩紬紮累細紲紳紹紺紼紾紿絀終絃組絆紱絅絏結絕絛絜�絞絡絢給絨絪絮絰統絲絳絖絹絺絿綁綈�綆綌綍綏綑經綃綜綠綢綦�綬維綮綰網綱�綴綵綸綹綺綻綽緅緌緎綾緇緊緋綣綯緒緘緝綿緞締緣�緦�編緩緬緯練緻�".split(""); +for(j = 0; j != D[212].length; ++j) if(D[212][j].charCodeAt(0) !== 0xFFFD) { e[D[212][j]] = 54272 + j; d[54272 + j] = D[212][j];} +D[213] = "������������������������������������竘��竤���竫�竮��������竷�����笐笓笅��笉笵笻笴笰笢笘笝笭笯笲�笚������笣筘��筀�筄筈��筷筭筳�筣����筶筰筡��箤��箈箑箖箌箅箙箄�������������������������������������������縕緗緙緡�緲縏緹縈縉縊縋縐縗縛縝縟縣縑繁縞縠縢縫縱縲縳縵縶縷縹縻總績繄繅繆繇縭縰縴繈織繕繙繚繐繞繢繡繒繩繪繫繭�繯繳繹辮繻繼纁纂繽繾纆纇纈纘續纍纖纏纊纑纓纔纛纚纜�缶缸缺缾�罃�罄罅�罋罌�".split(""); +for(j = 0; j != D[213].length; ++j) if(D[213][j].charCodeAt(0) !== 0xFFFD) { e[D[213][j]] = 54528 + j; d[54528 + j] = D[213][j];} +D[214] = "���������������������������������箷篎�箹�篛篕篥篞篣篹�篜篟篢����簉簁篸篽簅篿篻簎簂��簊��篱簩簙簭簝簢������簰��簳簼簹簬��籉籈籅�籇�籗���籣籦���籵籽籺籸��粁�粄粑粊�粅粍�����粣���������������������������������������罍罏罐�网罔罕罘罛罝罟罡罣�罩罪罭置罰罨署罳罫罶罵罷罹羃罽罿羅羆羇羈�羊羌美羑羔羖羜羚羝羞羢群羨義羯羲羵羶羸羹羼羽翀翁翅翊翌翎習翔翕翛翟翠翡翣翥翦翩翫翬翮翯翰翳翹翱翻翼翽翾翿耀�老考耄者耆�".split(""); +for(j = 0; j != D[214].length; ++j) if(D[214][j].charCodeAt(0) !== 0xFFFD) { e[D[214][j]] = 54784 + j; d[54784 + j] = D[214][j];} +D[215] = "���������������������������������粔粨粞��粯������粽粻粿�����糌糅��糒糔�糑糢��糬糪���糰�糷��紁紃��紕紑紎紟紒�絊紨���紸紶絁絇�������絑絒絔���絩絘絯絣絓絧絫絭��絽綄��綒���綀綅綎����������������������������������耇耋�而耍耎耐耑�耒耔耕耗耘耙耜�耞耡耤耦耨�耰�耳耶�耽耿聃聆聊聒聖聘聚聞聯聰聲聳聵聶職聽聾�聿肄肅肆肇��肉肋肌肓肖肘肚肛肝股肢肥�肩肫肯肱育肴肸肺胃胄背胗胔胍胎胏胖胙胚胛胝胞�胠胭胯�".split(""); +for(j = 0; j != D[215].length; ++j) if(D[215][j].charCodeAt(0) !== 0xFFFD) { e[D[215][j]] = 55040 + j; d[55040 + j] = D[215][j];} +D[216] = "���������������������������������絻絼綔綡�綧綷緂綪緁緀綝緄��綩��緆綖綼綟����������緟緮�線緷緛緪緧縃緺緶緱緰綞���縤縍�縒縡縌縓縎縜縚縖縮縸縪繉繀繃縩縿縼繂顈縺�縯����繜繖繣繘繟繑繠�繓��繗繶繵繸繰����������������������������������胡胥胸胼能胾脂�脅�胱脈脊�脘脛脞脤脣朘脩脥脫脬脯脹脾腆腊腋腎腐腑腓腔腕腥腦腴腫腮腯腰腱腸腹腠腿膀膂膋膏�腳膈膊膕膚膛膜膝膠膩膰膳膺膴膽膻膾膿臀臂臄臆臉臊臍臘臙臑臚臝臟臠胤臣臥臧臨�自臬臭�".split(""); +for(j = 0; j != D[216].length; ++j) if(D[216][j].charCodeAt(0) !== 0xFFFD) { e[D[216][j]] = 55296 + j; d[55296 + j] = D[216][j];} +D[217] = "���������������������������������繷繺繲繴�纀��纋纕纗�纙�缽缿�罈罊�罜罞罠罦罧罬�罻罼罺罾羉羋羍���羒羕羛羠羡羥羧羦羬羰羭羱�羳�羷�羺羻羿羾翃翂��翋翍翐翑翇翏�翗翜�翢���翭翪翨��翴翲耏耖耟�耪耬耴��耵耷�����������������������������������臲�至致�臺臻�臼臾舁舀舂舄舅與興舉舊舋�舌舍舐舒�舖舛舜舞舝�舟舠舡航般舫�舷舵舶船舸舲舳舴艇艋艄艖艗艎艘艙艤艟艨艭艦艫�艮良艱�色艴艷�艸艽艾芃芄芊芋芍芎芑芒芙芝芟芡芣芤芧芨芥芩�芫�".split(""); +for(j = 0; j != D[217].length; ++j) if(D[217][j].charCodeAt(0) !== 0xFFFD) { e[D[217][j]] = 55552 + j; d[55552 + j] = D[217][j];} +D[218] = "���������������������������������耾耹��聇聈����聑聏��������聝������聬聱�������聸聹��肊肏肕肙肐肒肜��肭�肮肪肣肵��胘胇胑胈胂胐胅胣胜胊胕胉�胳�胺胲胰胴胹胵脁胻脀�脆脝脰脙脖脭脟脡脕�脢�����������������������������������芬芭芮芯芰花芳芷芸芹芻芼芽�芾苑茆苒苓苔苕苗苙苛苜苞茍苣苡若苦苧苫英苴苹苻�苾茀茁茂范茄茈茅苃�茉茗荔茜茢茦茨茫茭茯茱茲茴茵茶茷茸茹荀荃萄荊荸荇草荍荏荐荑荒�荄莛荳荷荻荼荽�莊莎莒莓莖莘莞�".split(""); +for(j = 0; j != D[218].length; ++j) if(D[218][j].charCodeAt(0) !== 0xFFFD) { e[D[218][j]] = 55808 + j; d[55808 + j] = D[218][j];} +D[219] = "�����������������������������������腃腌腒腏腇脽腍��脺���腤腷腜腩腛腢腲朡腞腶腧腺腄������膉膆膃膇膍膌膣膟膘膞膢����膱膦膮膹膵膫膨膬膲膷����臌臃臅臇臏臒臐臗臕�臛臞臢臡�臦臩臮臷臸臿��舑舕舔�舢舯舨�����������������������������������莠莢莧莆莨莩莪莫菟莉莽菀菁菅菇菉菊菑�菖菔菘菠菜菩堇華菰菱菲菴菶菹菼菽萁萃萆萊萋萌萍萎雈菡菌萩萐萇萼萬萱萵萸萹落葆葉葍著�葚葛葡董葦葩葫葬葭葯�葳葵葷葸葺葽蒂葑葹蒐�蒔蒙蒜蒡蒞蒟蒨�蒲蒸蒹�".split(""); +for(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];} +D[220] = "���������������������������������舺舿舼舽�艉艀艂艅��艏艓艒艐艑艕艚艜艛�艣艡�艩艬�艵�艼芀芐芏芅芓芔芠苀�苂芶�����芚芘芛芞芺芴苳���苪����苯苨茺苖苬苲苵茌苶�苠�苺茬��荌茳茙茥荖茿荁荂荎茛茪茧荈��荋茞����������������������������������蒺蒼蒿蓀蓁蓂蓄蓆蓉蓊蓋蓌蓍�蓑蔀蓐蓓�蔌蒯蒱蓧蓫蓬蓮蓰�蓴蔻蓺薌蓼蔆蔇蓿蔂蔑蔒蔓蔕蔗蔚蔞蔟蔡蔣蔭�蔥蔦蔔蓽蔽蔬蕺蔾蕃蕉蕊蕎蕕蕖蕘蕙蕝蕞蕡蕢蕨蕩蕪蕭薀薯蕆蕈�蕤薁蕷蕸蕾薐薢薄薅薇薈薉薊薑薔薖�".split(""); +for(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];} +D[221] = "���������������������������������荿茼茖茤茠茩荅茻莐�荶莰�莣莍荺莤荴莏莁莕莙荵莔莃莌莝���莗莇莦���淽��莋荾莥菏萣菸菨萒菧菤�菆菈�菣莿菝菥菿菋菎菻莚����菕菺菵萉萏菞菂菳��菮�����菄����菬菛萓��������������������������������������薙薛孽薜薦薨薩薪薤�薏薰薳薹薺薽薿藄藇藉藎藏藐藍�藕�藚藜藝藟藤藩藥藪藷藹藺�藻藾藿蘄蘅蘆蘇蘊��蘋蘀蘚蘞蘢蘩蘭�虀蘧蘸蘿蘼�虆蘑虍虎虐虓虔處虛虜虞號虡虢虥虣虧虩�虫虱虯虹虺蚓蚔蚕蚊蚋蚌蚣�".split(""); +for(j = 0; j != D[221].length; ++j) if(D[221][j].charCodeAt(0) !== 0xFFFD) { e[D[221][j]] = 56576 + j; d[56576 + j] = D[221][j];} +D[222] = "���������������������������������葮��葄葠�葋萯葂萭葟葰葎葌葒�蓱�萿葖葶蒏蒍葥葀蒆葧萰葙葴葝�葞萷萺萴葃萲葅菙��萫����葇萶萳萻����������蓅蒗蒤蓎蒬蒮蒫蒴蒪蒚蒝蒧蒻蒢蓇蒛蒩蓖蒘蒶蓏蒠����蓒�蒰��������������������������������������蚤蚧蚩蚪蚨蚯蚰蚱蚳蚶�蛄蛀蛆蛇蛉蛑蛋蛙蛛蛟蛣蛤蛩蛺蛭蛾�蜂蜃蜇蜈蜋蜓蛸蛹蛻蜀蜉蜍蜊蜎蜘蜚蜜蜡蜣蜩蜥蜺蝃蜴蜞蝀螂蜢蜮蝎蝓蝕蝗蝘蝙蝝蝟蝠蝏蝥蝦蝮�蝶蜷�蜻蝌蝨蝡蝣蝤蝴蝸融螓螞螘螟螢螣�螃螄螫��".split(""); +for(j = 0; j != D[222].length; ++j) if(D[222][j].charCodeAt(0) !== 0xFFFD) { e[D[222][j]] = 56832 + j; d[56832 + j] = D[222][j];} +D[223] = "�����������������������������������蔤蔏蔩蔎蔉蔍蔊蔧蔜蓻蔫蔈蔪��������蔋蔙�����蓲蓷蓳蓪蓩蔖蓾蔨蔝蔮蓶蔱蓨蕵蓯蓹蔘蔠蔰蕅蕫蕍蕓蕀蕁蕄蕇蕣蕛蕱蕮����蕧蕠蕦��蕬��蕔����������蕥�������������������������������������������螺螻螽螿蟄蟊螬螭螮螯螳蟀蟆蟈蟋蟣蟪蟒�蟠蟬蟲蟭蟹蟻蟾蟳蟶蠃蟿蠁蠅蠆蠍蠕蠖蠛蠜蠟蠡蠢蠣蠨蠹蠱蠲蠶蠻�血�衁衄����衊�行衍衎術衒衕衖街衙衚衝衛衡衢�衣表衫衰衲衷�衵衽衾衿袁袈袋袍袒袖袗�袚�".split(""); +for(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];} +D[224] = "�����������������������������������薟薃薧薕薠薋薣蕻薚薞蕼薡蕗薎薆薍薝薂薵藋藈藅薱薶藒蘤���薸薾薷��������薴藆藀藃藂���藫藱藭藙藡藨�藗藬藸藘藣藑�藯藞���������藰蘁蘛藲藶蘉蘌��藽�����蘘蘪蘦蘟����������������������������������袞�袤袪被衭��袷袱裁裂裊裎裀�裒裔裕裘裙補裝裟褎裨裯裰裱裳裴裸裼裹製裾複褊褌褉褂褪褐褓褘褙褡褚褥褧褫褰褲褦褵褶褻�襄襋襁�襖襚襌襜襞襛襝襠襟襦襪襏襤褸襫襭襯襴襲襼襶裌襾西要覃覆�覈��見�".split(""); +for(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];} +D[225] = "���������������������������������蘣蘜蘙蘮蘡蘠蘥���蘗蘶������蘴蘵�蘳蘬��蘲�蘺蘹蘱蘻蘾虃虇虈虌虋虒虙虖�虤虪虰虭虮�虳��虻虷虴蚢蚖蚍蚑蚞蚜蚇蚗蚆蚚蚅蚥�蚐蚝蚎蚙蚡��蚵�蛃蚾��蚽蚿蚷蛂蛁蛅蚺蛈蚹蚸蛌蚴蚻蚼蛔����������������������������������規覓視覘覜覡覦�親覬覯覲覷�覺覽覿�觀��角觔觖觚觝觕解觥觩觫觭觱觳觴觸觶觼觿�言訂訃訇計訊討訐訓訕訖託記訌訏訑訒訛訝訟訣訥訪許設�訢訴訶診証註訾詁詆詈�詎詐詒詔評詖詘詛詞詠詡詢詣�試詩詫�".split(""); +for(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];} +D[226] = "���������������������������������蛘蛢蛦蛓蛚蛪蛝蛐蛨蛫蛜蛬蛗蜄蛷蜌蛖蛵蝍蜆蜁蛶蜅�触�蜳蜿蜨蝫蜙蜛蜬蝁蜾蝆蜠蜲��蜪蜭蜼蜒蜱蜵蝂蜦蜧蜸蜤蜰蜑�蝻蝖蝷蟡蝳蝔蝛蝒蝚蝑蝞蝭蝪蝢���蝐蝯蝬蝺蝜螛螏螗螒螈螁螖蝹螇螅螐螑螝螔螜螚�螉����������������������������������詬詭詮詰話該詳詼詿誆誄誅誇詵詹誌認�誑誓誕誘誚語誠誡誣誤誥誦誨說誰課誶誹誼誾調諂諄談諉請諍諏諒諑論諗�諛諝諞諟諠諤諦諧諫諭諮諱諳諷諸諺諵諼諾謀謁謂諜諡諴諶謄謅謆謇�謊謎謐謔謗謙謚講謝�謠謏�".split(""); +for(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];} +D[227] = "����������������������������������螶螸蟞��螾螪蟅螰蟑螹螵螼蟉蟃蟂蟌螷��螴蟧蟦蟢蟯蟫蟥蟟蟤蟔蟜蟓蟘����蟗蟙蟴蟨�蠀蟺蟷蠉蠌蠋蟼蠈���蠔蠙蠐蠑蠗蠓蠩蠝蠠蠤蠫蠬�蠦蠪蠥蠰蠮蠳�蠸蠷蠵蠼蠾蠽蠿衃衈衋������衧衪衩袂����������������������������������謖謦謨謫謬謳謹謾譁�證�譎譏譒譔譖識譙譚�譜警譟譫譬譯議譴護譸譽讀譾�變讌讎讋讒讖讓讙讚�讜讞讟�谷谿豁��豆豈豋豌豉豇豎豐�豔豏豕豚豝象豢豨豪豫豬豭豳豵�豸豹豺貂貆貅貉貊貌貍貓貔��貝貞�".split(""); +for(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];} +D[228] = "���������������������������������衶袀衱衹衯袃衴������袉袕袨袢袑袡袟袘袧袙袛袬袌袺裗袹袸袶袼袽袲��袾���裖裋裡裍裞裛裚���裷裧裲裺裮裶裻褁�褅褔褋�褗褆褖褑褕褒褞褭褮褱褢褩褣褟褳褼褾襒褷襂褽����襓襆��������������������������������������負財貢貤貧貨貪販貫責貯貲貳貴貶貸買貺費貼貽貿賀賁貰賂賃賄賅資賈賊�賑賒賓賕賙賚賜賝賞�賠賡賢賣賤賦質賬賟賭賴賵賮賺賻購賽賾賸贄贅贈贊贇贍贏贐贓贔贖�贗贛贉赤赦赧赫赭赬�走赳赴赶起趁趄超越趕�".split(""); +for(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];} +D[229] = "����������������������������������襐襢襗襡襘��襣�襩襮襬襱�襳襹襺�覂覅�����覕覛覝覟覢覤覣覭覮�覶觓觙觛觟觤觡觠觢觜觨��觰觬觲觷觺觻觾�訄訰訧訬訞������詍訹詙詀詗詄詅詑��詊���詏詨��詶訿詷誂詻誃������������������������������������趙趣�趨趯�足趵趾跁趺趹跂跋跅跌跎跏跑跕跖跚跛距跗跫跟跡跣跨跪跬路跱跳跽踉踊跼踏踐踔踖踝踞踢踣踧踘踡踟踦踰踴踵踶�踽蹁蹂蹄踱蹀蹐蹇蹈蹉蹊躍蹌蹕蹔蹙蹟蹣蹤蹜蹝蹠蹯蹲蹴蹶蹺蹡蹢蹬蹭躕躁躄躅躇躉�".split(""); +for(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];} +D[230] = "�����������������������������������詴���誫誙誋誒誖誏�諃�誽�諆誸諓諔諕誻諀諅����諘�誺諿����諢諲諰諈諻�謞謘謑謋謢謒謕謍���謜謓謈謪謧謣謰謵譇謯謼謱謥謷���謽�謤��譗譐譈譊譆譀譓譋譕譑譠譪譝譨譧�譥譣����������������������������������躊躋蹋躐躑躒躓躔躚躡躩躪�蹚身躬�躲軀��躺車軋軌軍軏軒軔軛軟軨軫軸軹軷軼軺軾較輅輈載輀輇輊輒輓輔輕輗�輛輜輝輟輦輩輪輞輠輥�輯輳輸輹輻�輮輴輶輾輿轂轄轅轀轆轇轕轉轍轎轏轒轖轘轞轟轡轢轤��".split(""); +for(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];} +D[231] = "����������������������������������譹譅譺譻��讄讂讆��譿��讅���讔讕讘谹谻谼谽谾�豃豅豊豍��豗豜豟豥豤豦豰豲豱豯豷豶�豻豽貁貀貄貏貑貒�貕貙貘貗貚貜�貣�����貵貹��貾�賌賗賧��賥賨��賳賰��賹���贆�����������������������������������辛辜辟�辣�辦辨辭辯�辰辱農�辵迂迄迅迋迍迎近迓返迕迢迤迥迦迨迪迫迭迮述迴迷迸�追迺退送适逃逅逆逋逌逍透逐逑途逕逖逗這通逛逝逞速造逡逢連逭逮週進逵逶逸�逼遇遁遂遄逾遊運遍過遏遐遑遒道達違遘�".split(""); +for(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];} +D[232] = "�����������������������������������贕贙赨赩赮����赲赸��赻�����趀��趑趌趎趏趍趓趒�����趖�趟趠趜趡��趛�趥趧������趬趪趭趫趮��趲趴趷趼趿跘跓跍跇跜跙跈跆�跴跤跰跠跺跮跐跩跦跢跧跲踂跿踍踃踇踆踅����������������������������������遙遛遜遞遠�遣遢遝遨適遭遮遯遲遴遵遶遷選遹遺遻遼遽避邀邁邂還邅邇邃邈邊邏邐迻邑邛邗邙邕邢�那邡邦�邪邠邯邱邲邴邳邵邶邸邰邽郁郅郇郊邾郃��郕郛郎郡郢郤郙郜郟部郭郴郵郯都郿鄂鄒鄄鄔鄉鄗鄖鄙鄘�".split(""); +for(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];} +D[233] = "���������������������������������跾���踀�踚�踜踠踫踥踤踮踕踛踑踙踩踒踓��踳踾踸踹蹅踼�蹓�蹎蹍蹗蹖蹞蹥蹧蹛蹩蹦��蹼蹸蹳蹪蹻躆躈躂躎躖躗躘躞躟躠躝躥躤躣�躦躨��������躽軂����軉軑軓軘軞軝軜��軠�軴軩軯����������������������������������鄢鄞鄠鄜鄧鄫鄭鄰鄱鄴鄶鄲鄹鄿鄺酇酃酆酈郝酉酊酋酌配酎酒酖酗酢酥酣酤酡酩酪酬酲酵酷酸酴酹酺醃醅醆醇醉醊醋醍醐醒醓醜醞醡醢�醪醫醬醮醯醴醲醵醺醽醁醼釀釁釂�醱釆采釋釉里重野量釐鋅金釗釘釜針釣釧�".split(""); +for(j = 0; j != D[233].length; ++j) if(D[233][j].charCodeAt(0) !== 0xFFFD) { e[D[233][j]] = 59648 + j; d[59648 + j] = D[233][j];} +D[234] = "���������������������������������軻軦軮軥軵軧軶軱軬�輆軿輁輂輋輍輐輑����輤輘輚輣輖輬輵輲輷���轃���轈轑轔轐轓轗轚轙轛轝轠轣��辴���辿迉迆������迒迖����迣��迠迡�迼迾迵迿逄逤逜��逴逯����逿�����������������������������������釬釦釭釵鈇鈀鈍�鈐鈒鈔鈕鈞鈴鈸鈺�鈿鉅鉉鉏鉗鉛鉞�鉤鉋鉶鉸鉦銀銃銅銎銍銑銓銖銘銛銜銚銳銶銷�銼鋈鋌鋏鋒鋟鋘鋤鋩鋪鋙銲鋸鋼錄錐錕錘錙錚錠錢錦錨錫錮錯錞錡鍊鍋鍛鍪�鍬鍵鍼鍾鍇鍍鍔鍠鍤鍥鍭鍰鎔鎉�".split(""); +for(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];} +D[235] = "����������������������������������������逽����������遫�遳遰邆�遾���邋邍邘邔�邟邥邞邧���������郱邿���郈郖郠�郚郣郥郘郗���郪郰郲郳郔郫�鄆鄬郾�鄃郺郼鄈郹郻鄁鄀鄇鄅�鄐鄍鄏鄑鄋鄎鄣鄟鄝����������������������������������鎖鎗鎚鎛鎞鎡鎌鎧鎬鎰鎮鎊鏃鏈鏑鏖鏗鏘鏜鏡鏝鏢鏞鏤鏟鏐鏦鏨鐃鏵鐓鏹鐘鐙鐫鐮鐲鐵鐶鐸鐩鐺鐻鑄鑊鑌鑑鑒鑤鑕�鑠鑢鑣鑪鑰鑯鑲鑵鑷鑱鑼鑽鑾鑿錳長�門閂閃閆閉閈開閎閏閑閒間閔閘閟閡閤閣閥閨閩閫閬閭閱閶�".split(""); +for(j = 0; j != D[235].length; ++j) if(D[235][j].charCodeAt(0) !== 0xFFFD) { e[D[235][j]] = 60160 + j; d[60160 + j] = D[235][j];} +D[236] = "���������������������������������鄚鄤鄡鄛鄨�鄯鄩鄪鄦鄮�鄳鄵鄸�鄻鄾酀酁酅酄酐酏�酘酚酓����酠�酟�酮酯�酳��醀��醑�醣醚醛醙醟���醝醨醥醧�醰醭�醷醳�醹�醾釃釅釔釕釙釢������釴釱釳釩釸釤釹釫釷釮�釪�����������������������������������閹閻閼閽閾闃闇闈闉闊闋闌闍闐�闓闔闕闖闒關闚闠闡闞闢闤闥闆阜�阞阡阤阨阬阮阯阱防阪阻阼阿陀陂附陋限陌降陔陘陛陝陞陟陡院陣除陪陬陰陲陳陴陵陶陷陸陼陽�隍隄隅隆隈隉隊隋階隔隕�隗隘隙際障�隤隧�".split(""); +for(j = 0; j != D[236].length; ++j) if(D[236][j].charCodeAt(0) !== 0xFFFD) { e[D[236][j]] = 60416 + j; d[60416 + j] = D[236][j];} +D[237] = "���������������������������������釨鈏鈌釿鈑釽鈆��鈂����鈗��鈤鈣鈉鈁鈊鈥鈃鈚鈦鈄鈜鈅鈖����鉚鈶����鉈鉒鈰鈷鈽鉍鈳鉥鉊鈹鉆鉑鉀鈾鉭鉬鉠鉧鉯鉡���鉰鉣鉎鉌�鈲鈱�鉖����鉐鉔銕�鉾��鉽銝銆����鈭�銙銂����������������������������������隩險隮隰隱隳隴隨隶隸�隹隻隼雀雁雄雅集雇雉雋雌雍雎雊雒雕嶲雖雘雙雛雜雝雞離難�雨雩雪雯雰雱雲零雷雹電需�霅霄霈霉霆震霍霎霏霑霓霖霜霞霢霤霧霰霪�露�霸霹霮霽霥霾靄靂靆靈靉霨青靖靚靛靜�非靠�".split(""); +for(j = 0; j != D[237].length; ++j) if(D[237][j].charCodeAt(0) !== 0xFFFD) { e[D[237][j]] = 60672 + j; d[60672 + j] = D[237][j];} +D[238] = "�����������������������������������銨銥鉼銤鉻鉺銠銔銪銦銫鉹銗鉿銣鋮�銈銧銋���銌銇�鋇鋰鋗鋝鋯鋂鋨鋊鋁鋓鋉���銡��鋆鋕���鋡��鋧�鋎�鋑鋐鋃鋄鋀銻鋱銬�鋠������錧錈錟錆錏鍺錶錸錼錛錣錒錁鍆錭錎錍鋋�鏒�����������������������������������靡�面靦�靨�革靳靴鞅靶靷靸鞀�鞍鞏鞋鞗鞘鞙鞞鞚�鞠鞦鞫鞬鞭鞮�鞶�鞹�韁韃韆��韋韍韓韌韎韐�韔韝韘韙韜韞���韭�韱�音韶韻響韺頀�頁頂頃項頇順須頌頏預頑頒頷頓頊頍頎頖頗領頞頡頤�頲頦�".split(""); +for(j = 0; j != D[238].length; ++j) if(D[238][j].charCodeAt(0) !== 0xFFFD) { e[D[238][j]] = 60928 + j; d[60928 + j] = D[238][j];} +D[239] = "������������������������������������鋺錴�������������錉鋿��鋻錔錖錩錪錂錀鋹錝�鋾��錥錋��錤�������鋷��錵���鍹鍏�鍕�鍱鍙��鍒���鍧�鍗����鎃鎯鍖鍘鍜鍶鍉鍚鍐鍑鎏鍌鎂������顉����������������������������������頫頭�頰��頸頹頻顆��題額顏�顓願顙顛類顜顢顥�顧顫顯顰顱顴�風颭颯颶颸颿颺颻颼飄飆飀颽�飛�食�飢飣�飧飩飪飫飭飲飯飴飼飽飾飶餂餃餅餈餉養餌餐餖餗餒餓餔餕餘餛餚餡餞餤餟餧館餬餮餱餲餳��".split(""); +for(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];} +D[240] = "�������������������������������������鎙��鍞����鍎���鎤鎣�鎕鎱鎟�鎈�����鎨������鎑�鎍鎵鎒鎷鎘鎝鎎鎪鎢鎳鎦鎀�����鏄鏕��������鏣鏔����鎥鏮����鏇鏏鏂鏚鏬鏌鏙鎩鏊鏍鏎����鏧鏀����������������������������������餼餽饁饅饈饉饋饌饎饐饑饒饔饕饗饜饟饞�首馘馗�香馥馨馝馡馣�馬馭馮馳馴馱馹駁駃駐駑駒駕駘駙駛駋駜駝駟駪駉駢駬駭駮駱�駰駸駿�騁騅騂騃�騑騎騋騏騖騄騙驄騠騣騤騧騫騰騶騵騸騷騮騾驀驁驂驃驅驈��".split(""); +for(j = 0; j != D[240].length; ++j) if(D[240][j].charCodeAt(0) !== 0xFFFD) { e[D[240][j]] = 61440 + j; d[61440 + j] = D[240][j];} +D[241] = "���������������������������������鏽鐖鐉����鐆������鐑�鐌�鏺��鏸�鏿�鏶��鐋鏻鐠鐏鐔鏾鐕鐐鐨鐍鐀鏷鐇鐎鐼��鐿鐳�鐱��鐽�鑀�鐷������鐬鑈鑆�鑉鑅鑐鑋鑇鑗�鑏���������鑨��鑫鑩��鑮鑭鑸�����������������������������������驊驔驍驖驕驌驗驒驚�驙驛驟驢驤驥驩驪駗骨�骭骯骱骰骷骸骼�髀骾髏髆髑髒體髖髓�高�髟髡�髣髦髧髫髭髮�髳�髻髹鬆鬈鬅鬋鬍鬐鬒鬑鬘�鬙鬚鬟鬣鬢鬎鬥鬨鬧鬩�鬮�鬯鬱�鬲�鬵鬷鬻�鬼魁魂魃魄魊魅�".split(""); +for(j = 0; j != D[241].length; ++j) if(D[241][j].charCodeAt(0) !== 0xFFFD) { e[D[241][j]] = 61696 + j; d[61696 + j] = D[241][j];} +D[242] = "����������������������������������鑴鑶��钂钀钁���钃�镺镻镼�镽���閍閌���閜閞���閮�����閺閿閵闀闅閷�闑闛闟�闣��阢阠阰����阹阽阺陃陏陑陓陊��陎����陭陫���隇陾隃隀����陱隒隓隑隞�������������������������������������魏��魈魍魎魑魔�魘�魚魨魯鮀魴�鮒鮐鮓鮞鮪鮆鮑鯗鮮鮫鯀鯉鯁鯊鯖鯢鯧鯫鯤鯨鯽��鰈鰍��鰓鰥鰜鰣鰭鰲鰷鰻鱄鱉鱔鱘鱟鱠鱣鱗鱎鱖鱨鱷鱸魺鳥鳦鳩鳧鳲鳳鳴鳶鴄鴟鴆鴇鴈鴉鴃�鴛鴞鴣鴦鴨鴒鴝鴻鴿鴽鵀鵂�".split(""); +for(j = 0; j != D[242].length; ++j) if(D[242][j].charCodeAt(0) !== 0xFFFD) { e[D[242][j]] = 61952 + j; d[61952 + j] = D[242][j];} +D[243] = "�����������������������������������隡隢���隬����隿雂雃�雓雔��雗雚巂雟�雡�雥���雸雺雽雿��霂�������霙��霟霣�霬霦霩霫霯���霺霵霿�靃靇�靋���靪靬靰靮�靲靽靺靾鞃靼鞂靻鞄鞁靿�鞊鞎鞈鞔鞡鞜�����������������������������������鵜鵝鵑鵠鵓鵡鵒鵪鵰鵲鶉鵩鵬��鶖鶘鶚鶩鶯鶱鶴鶵鶺鶿鶊鷇鶬鶹鶻鶼鷁鷂�鷃鷗鷓鷕鷖鷙鷥鷩鷲鷹鷺鷦鷯鷴鷸鸇鸑鷽鸕鸚鸞鷟鸛鸝�鹵鹹鹼鹽鹺�鹿麂�麀麃麇麈麋麌�麑麒麓�麗麚麛麝�麟�麤�麥��麰麴��".split(""); +for(j = 0; j != D[243].length; ++j) if(D[243][j].charCodeAt(0) !== 0xFFFD) { e[D[243][j]] = 62208 + j; d[62208 + j] = D[243][j];} +D[244] = "����������������������������������鞨鞣鞤鞪鞳鞷鞻鞿韄韅韇韉韏韕�韗韟韡韣韥韰���韹韽韾��頄����頧頛頩頝頨頠頜頵頯��顃顁顄顊�顅顐顑顒顎顝顗顠�顣顟顤顪顩��顲顳颬�颮颱颲颳���颾飁飂���飉飋飌���飥��飹����������������������������������麻麼麾�黃黈黌�黍黏黎黐�黑黔默黛黜點黝黠黥黧黨黯黴黮黶黷�黹黻黼�黽黿��鼇�鼉�鼎鼐鼏鼒�鼓鼕�鼖鼙鼛鼚�鼠鼢鼫鼬鼯�鼷�鼻鼽鼾齁��齊齋齎齏�齒齔齕齗齟齡齠齦齧�齬齪齮齲齶齷齣龍�龔�".split(""); +for(j = 0; j != D[244].length; ++j) if(D[244][j].charCodeAt(0) !== 0xFFFD) { e[D[244][j]] = 62464 + j; d[62464 + j] = D[244][j];} +D[245] = "�������������������������������������餀飺�餇���餑餥���餯餭餰餫餪餵餾餿餺����饇饃饙�饖饘��饛����馜��馧��馦���馯馲馰馵馻馺駂馽駇�����駌�駍駏駓駔駎駖駥駤駣駩�������駺駴駷駹駶駻駽駾駼����������������������������������龕�龜�龠龢�ㄅㄆㄇㄈㄉㄊㄋㄌㄍㄎㄏㄐㄑㄒㄓㄔㄕㄖㄗㄘㄙㄚㄛㄜㄝㄞㄟㄠㄡㄢㄣㄤㄥㄦㄧㄨㄩˊˇˋ˙�!"#$%&‵()*+,-./0123456789:;<=>?@ABCDEFGHIJKLM�".split(""); +for(j = 0; j != D[245].length; ++j) if(D[245][j].charCodeAt(0) !== 0xFFFD) { e[D[245][j]] = 62720 + j; d[62720 + j] = D[245][j];} +D[246] = "���������������������������������騉騍騊騇����騆�騚騕騥騝騛騢騞騜騲騴騱騬騪騩騭�騿�騹騽驆騺�驎驓驏驉�驞驠�驦驧�驨驫骹骿骴髁髂髇髊髍髐髕���髜��髬髲�髯�髺髶�髾髽鬁髼鬃鬄���鬊鬌鬕鬗鬖鬞鬠鬤鬫鬳鬺鬾鬿魆魌����������������������������������NOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}∼�。︵︶﹁﹂�".split(""); +for(j = 0; j != D[246].length; ++j) if(D[246][j].charCodeAt(0) !== 0xFFFD) { e[D[246][j]] = 62976 + j; d[62976 + j] = D[246][j];} +D[247] = "���������������������������������魋����魒魖��魠魡���魤魧魷魱魦魶魵�鮕鮈��魽��鮅鮇魼魾魻鮂鮚鮭鮨鮛鮦鮡鮥鮤鮯��鮹��鮽鯇鯆鯃鮿鮵鮸鯈鯓�����鯕���鯪鯠鯞鯛鯦鯰鯔鯬�鯚鰗�鰋鯷鰅鰒鯸鱀鰎�鰇鰉�鰡��������������������������������������".split(""); +for(j = 0; j != D[247].length; ++j) if(D[247][j].charCodeAt(0) !== 0xFFFD) { e[D[247][j]] = 63232 + j; d[63232 + j] = D[247][j];} +D[248] = "����������������������������������鰫鰝鰬鰨鰩鱆鱈鰿鰱鰾鰴鰹鰳鱁鰼���鱙�鱐鱊鱍鱋鱕��鱧鱦鱢鱞��鱭��鱮鱴鱳鱱���鱹鱺��鳪鳭鳱鳵鳼���鳺鳽鳿鳷鴀鳹鳻鴅���瞗��鴕鴥鴗鴠鴔鴩鴘鴢鴐鴳鵁鵧鴶鴮鴯鴱鴸������鴰�����������������������������������".split(""); +for(j = 0; j != D[248].length; ++j) if(D[248][j].charCodeAt(0) !== 0xFFFD) { e[D[248][j]] = 63488 + j; d[63488 + j] = D[248][j];} +D[249] = "���������������������������������鵅鵃鴾鴷鵏鵊鵛鵋鵙鵖鵌鵗鵔鵟�鵘�����鵷鶁鶄鶈鵱鶀鵸鶆鶋鶌�鵿鵽鵫鵴鵵鶅鵳鵻鶂鵯鵹鶟鶙鶤鶝鶒鶐鶛鶠鶔鶜鶪鶗鶡鶢鶨鶞鶣�鶧鶷鶶鷊鷏鶾鷅鷎鷈鶭�鷌鷍鷝�鷛鷒鷞鷚鷋鷐鷜鷑鷘鷵鷻鷷鷣鷫鷬鷭�������������������������������������".split(""); +for(j = 0; j != D[249].length; ++j) if(D[249][j].charCodeAt(0) !== 0xFFFD) { e[D[249][j]] = 63744 + j; d[63744 + j] = D[249][j];} +D[250] = "���������������������������������鷤鷶鷡鷮鷰鷢鸂鷾鸃鸆鸅鸀鸁鸉鷿鸄�鸋鸍鸐鸏鸔鸒鸓鸗鸙���麆麊麉���麎麔麙�麜�麠麡�麧麭麩麮��麵麶�麷�黀黂�黓黕黖黚黟黤黫黭黰黲黳黵�鼁鼀鼆鼊鼘鼜鼤鼣鼥鼪鼩鼨鼭鼰鼮鼱鼵鼴鼳鼲鼸鼶齀�����������������������������������".split(""); +for(j = 0; j != D[250].length; ++j) if(D[250][j].charCodeAt(0) !== 0xFFFD) { e[D[250][j]] = 64000 + j; d[64000 + j] = D[250][j];} +D[251] = "���������������������������������齂齃齇齉齌齍齖齘齛齞齝齜齥齤齫齱齰齯齴齵齸齻齺齹齾�龒��龤���������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[251].length; ++j) if(D[251][j].charCodeAt(0) !== 0xFFFD) { e[D[251][j]] = 64256 + j; d[64256 + j] = D[251][j];} +D[252] = "������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[252].length; ++j) if(D[252][j].charCodeAt(0) !== 0xFFFD) { e[D[252][j]] = 64512 + j; d[64512 + j] = D[252][j];} +D[253] = "������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[253].length; ++j) if(D[253][j].charCodeAt(0) !== 0xFFFD) { e[D[253][j]] = 64768 + j; d[64768 + j] = D[253][j];} +D[254] = "������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[254].length; ++j) if(D[254][j].charCodeAt(0) !== 0xFFFD) { e[D[254][j]] = 65024 + j; d[65024 + j] = D[254][j];} +return {"enc": e, "dec": d }; })(); +cptable[20005] = (function(){ var d = [], e = {}, D = [], j; +D[0] = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€�������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];} +D[141] = "������������������������������������������������ ,、。․•;:?!�������︰…‥﹐﹑‧﹒﹔﹕﹖﹗︱–︲—︳_︴﹏()︵︶{}︷������︸〔〕︹︺【】︻︼《》︽︾〈〉︿﹀「」﹁﹂『』﹃﹄﹙������������������﹚﹛﹜﹝﹞‘’“”〝〞′‵#&*※§〃○●△▲◎☆★◇◆□■▽▼㊣℅‾ ̄��﹉﹊﹍﹎﹋﹌﹟﹠﹡+-×÷±√<>=≦≧≠∞≒≡﹢﹣﹤﹥﹦∼∩∪⊥∠∟⊿㏒㏑∫∮∵∴♀♂⊕⊙↑↓←→↖↗↙↘∥∣/\�﹨�$¥〒¢£%@℃℉﹩﹪﹫㏕���".split(""); +for(j = 0; j != D[141].length; ++j) if(D[141][j].charCodeAt(0) !== 0xFFFD) { e[D[141][j]] = 36096 + j; d[36096 + j] = D[141][j];} +D[142] = "������������������������������������������������㎜㎝㎞㏎㎡㎎㎏㏄゜兙�������兛兞兝兡兣嗧瓩糎▁▂▃▄▅▆▇█▏▎▍▌▋▊▉┼┴┬������┤├▔─│▕┌┐└┘╭╮╰╯═╞╪╡◢◣◥◤╱╲╳0������������������123456789ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩ〡〢〣〤〥〦〧〨〩�卄�ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟ�ΠΡΣΤΥΦΧΨΩαβγδ���".split(""); +for(j = 0; j != D[142].length; ++j) if(D[142][j].charCodeAt(0) !== 0xFFFD) { e[D[142][j]] = 36352 + j; d[36352 + j] = D[142][j];} +D[143] = "������������������������������������������������εζηθικλμνξ�������οπρστυφχψωㄅㄆㄇㄈㄉㄊㄋㄌㄍㄎㄏㄐㄑㄒㄓㄔ������ㄕㄖㄗㄘㄙㄚㄛㄜㄝㄞㄟㄠㄡㄢㄣㄤㄥㄦㄧㄨㄩ˙˟ˊˇˋ���������������������������������������������������������������������������������一乙丁七乃九了二人儿入八几刀刁力匕十卜又三下丈上丫丸凡久么也乞于亡兀刃�勺千叉口土士夕大女子孑孓寸���".split(""); +for(j = 0; j != D[143].length; ++j) if(D[143][j].charCodeAt(0) !== 0xFFFD) { e[D[143][j]] = 36608 + j; d[36608 + j] = D[143][j];} +D[144] = "������������������������������������������������小尢尸山川工己已巳巾�������干廾弋弓才丑丐不中丰丹之尹予云井互五亢仁什仃仆仇仍今������介仄元允內六兮公冗凶分切刈勻勾勿化匹午升卅卞厄友及反������������������壬天夫太夭孔少尤尺屯巴幻廿弔引心戈戶手扎支文斗斤方日曰月木欠止歹毋比毛氏水火爪父爻片牙牛犬王丙世丕且丘主乍乏乎以付仔仕他仗代令仙仞充兄冉冊冬凹出凸刊加功包匆北匝仟半卉卡占卯卮去可古右召叮叩叨叼司叵�叫另只史叱台句叭叻四囚外央���".split(""); +for(j = 0; j != D[144].length; ++j) if(D[144][j].charCodeAt(0) !== 0xFFFD) { e[D[144][j]] = 36864 + j; d[36864 + j] = D[144][j];} +D[145] = "������������������������������������������������失奴奶孕它尼巨巧左市�������布平幼弁弘弗必戊打扔扒扑斥旦朮本未末札正母民氐永汁汀������氾犯玄玉瓜瓦甘生用甩田由甲申疋白皮皿目矛矢石示禾穴立������������������丞丟乒乓乩亙交亦亥仿伉伙伊伕伍伐休伏仲件任仰仳份企伋光兇兆先全共再冰列刑划刎刖劣匈匡匠印危吉吏同吊吐吁吋各向名合吃后吆吒因回囝圳地在圭圬圯圩夙多夷夸妄奸妃好她如妁字存宇守宅安寺尖屹州帆并年式弛忙忖�戎戌戍成扣扛托收早旨旬旭曲���".split(""); +for(j = 0; j != D[145].length; ++j) if(D[145][j].charCodeAt(0) !== 0xFFFD) { e[D[145][j]] = 37120 + j; d[37120 + j] = D[145][j];} +D[146] = "������������������������������������������������曳有朽朴朱朵次此死氖�������汝汗汙江池汐汕污汛汍汎灰牟牝百竹米糸缶羊羽老考而耒耳������聿肉肋肌臣自至臼舌舛舟艮色艾虫血行衣西阡串亨位住佇佗������������������佞伴佛何估佐佑伽伺伸佃佔似但佣作你伯低伶余佝佈佚兌克免兵冶冷別判利刪刨劫助努劬匣即卵吝吭吞吾否呎吧呆呃吳呈呂君吩告吹吻吸吮吵吶吠吼呀吱含吟听囪困囤囫坊坑址坍均坎圾坐坏圻壯夾妝妒妨妞妣妙妖妍妤妓妊妥�孝孜孚孛完宋宏尬局屁尿尾岐���".split(""); +for(j = 0; j != D[146].length; ++j) if(D[146][j].charCodeAt(0) !== 0xFFFD) { e[D[146][j]] = 37376 + j; d[37376 + j] = D[146][j];} +D[147] = "������������������������������������������������岑岔岌巫希序庇床廷弄�������弟彤形彷役忘忌志忍忱快忸忪戒我抄抗抖技扶抉扭把扼找批������扳抒扯折扮投抓抑抆改攻攸旱更束李杏材村杜杖杞杉杆杠杓������������������杗步每求汞沙沁沈沉沅沛汪決沐汰沌汨沖沒汽沃汲汾汴沆汶沍沔沘沂灶灼災灸牢牡牠狄狂玖甬甫男甸皂盯矣私秀禿究系罕肖肓肝肘肛肚育良芒芋芍見角言谷豆豕貝赤走足身車辛辰迂迆迅迄巡邑邢邪邦那酉釆里防阮阱阪阬並乖�乳事些亞享京佯依侍佳使佬供���".split(""); +for(j = 0; j != D[147].length; ++j) if(D[147][j].charCodeAt(0) !== 0xFFFD) { e[D[147][j]] = 37632 + j; d[37632 + j] = D[147][j];} +D[148] = "������������������������������������������������例來侃佰併侈佩佻侖佾�������侏侑佺兔兒兕兩具其典冽函刻券刷刺到刮制剁劾劻卒協卓卑������卦卷卸卹取叔受味呵咖呸咕咀呻呷咄咒咆呼咐呱呶和咚呢周������������������咋命咎固垃坷坪坩坡坦坤坼夜奉奇奈奄奔妾妻委妹妮姑姆姐姍始姓姊妯妳姒姅孟孤季宗定官宜宙宛尚屈居屆岷岡岸岩岫岱岳帘帚帖帕帛帑幸庚店府底庖延弦弧弩往征彿彼忝忠忽念忿怏怔怯怵怖怪怕怡性怩怫怛或戕房戾所承拉�拌拄抿拂抹拒招披拓拔拋拈抨���".split(""); +for(j = 0; j != D[148].length; ++j) if(D[148][j].charCodeAt(0) !== 0xFFFD) { e[D[148][j]] = 37888 + j; d[37888 + j] = D[148][j];} +D[149] = "������������������������������������������������抽押拐拙拇拍抵拚抱拘�������拖拗拆抬拎放斧於旺昔易昌昆昂明昀昏昕昊昇服朋杭枋枕東������果杳杷枇枝林杯杰板枉松析杵枚枓杼杪杲欣武歧歿氓氛泣注������������������泳沱泌泥河沽沾沼波沫法泓沸泄油況沮泗泅泱沿治泡泛泊沬泯泜泖泠炕炎炒炊炙爬爭爸版牧物狀狎狙狗狐玩玨玟玫玥甽疝疙疚的盂盲直知矽社祀祁秉秈空穹竺糾罔羌羋者肺肥肢肱股肫肩肴肪肯臥臾舍芳芝芙芭芽芟芹花芬芥芯�芸芣芰芾芷虎虱初表軋迎返近���".split(""); +for(j = 0; j != D[149].length; ++j) if(D[149][j].charCodeAt(0) !== 0xFFFD) { e[D[149][j]] = 38144 + j; d[38144 + j] = D[149][j];} +D[150] = "������������������������������������������������邵邸邱邶采金長門阜陀�������阿阻附陂隹雨青非亟亭亮信侵侯便俠俑俏保促侶俘俟俊俗侮������俐俄係俚俎俞侷兗冒冑冠剎剃削前剌剋則勇勉勃勁匍南卻厚������������������叛咬哀咨哎哉咸咦咳哇哂咽咪品哄哈咯咫咱咻咩咧咿囿垂型垠垣垢城垮垓奕契奏奎奐姜姘姿姣姨娃姥姪姚姦威姻孩宣宦室客宥封屎屏屍屋峙峒巷帝帥帟幽庠度建弈弭彥很待徊律徇後徉怒思怠急怎怨恍恰恨恢恆恃恬恫恪恤扁拜�挖按拼拭持拮拽指拱拷拯括拾���".split(""); +for(j = 0; j != D[150].length; ++j) if(D[150][j].charCodeAt(0) !== 0xFFFD) { e[D[150][j]] = 38400 + j; d[38400 + j] = D[150][j];} +D[151] = "������������������������������������������������拴挑挂政故斫施既春昭�������映昧是星昨昱昤曷柿染柱柔某柬架枯柵柩柯柄柑枴柚查枸柏������柞柳枰柙柢柝柒歪殃殆段毒毗氟泉洋洲洪流津洌洱洞洗活洽������������������派洶洛泵洹洧洸洩洮洵洎洫炫為炳炬炯炭炸炮炤爰牲牯牴狩狠狡玷珊玻玲珍珀玳甚甭畏界畎畋疫疤疥疢疣癸皆皇皈盈盆盃盅省盹相眉看盾盼眇矜砂研砌砍祆祉祈祇禹禺科秒秋穿突竿竽籽紂紅紀紉紇約紆缸美羿耄耐耍耑耶胖胥�胚胃胄背胡胛胎胞胤胝致舢苧���".split(""); +for(j = 0; j != D[151].length; ++j) if(D[151][j].charCodeAt(0) !== 0xFFFD) { e[D[151][j]] = 38656 + j; d[38656 + j] = D[151][j];} +D[152] = "������������������������������������������������范茅苣苛苦茄若茂茉苒�������苗英茁苜苔苑苞苓苟苯茆虐虹虻虺衍衫要觔計訂訃貞負赴赳������趴軍軌述迦迢迪迥迭迫迤迨郊郎郁郃酋酊重閂限陋陌降面革������������������韋韭音頁風飛食首香乘亳倌倍倣俯倦倥俸倩倖倆值借倚倒們俺倀倔倨俱倡個候倘俳修倭倪俾倫倉兼冤冥冢凍凌准凋剖剜剔剛剝匪卿原厝叟哨唐唁唷哼哥哲唆哺唔哩哭員唉哮哪哦唧唇哽唏圃圄埂埔埋埃堉夏套奘奚娑娘娜娟娛娓�姬娠娣娩娥娌娉孫屘宰害家宴���".split(""); +for(j = 0; j != D[152].length; ++j) if(D[152][j].charCodeAt(0) !== 0xFFFD) { e[D[152][j]] = 38912 + j; d[38912 + j] = D[152][j];} +D[153] = "������������������������������������������������宮宵容宸射屑展屐峭峽�������峻峪峨峰島崁峴差席師庫庭座弱徒徑徐恙恣恥恐恕恭恩息悄������悟悚悍悔悌悅悖扇拳挈拿捎挾振捕捂捆捏捉挺捐挽挪挫挨捍������������������捌效敉料旁旅時晉晏晃晒晌晅晁書朔朕朗校核案框桓根桂桔栩梳栗桌桑栽柴桐桀格桃株桅栓栘桁殊殉殷氣氧氨氦氤泰浪涕消涇浦浸海浙涓浬涉浮浚浴浩涌涊浹涅浥涔烊烘烤烙烈烏爹特狼狹狽狸狷玆班琉珮珠珪珞畔畝畜畚留疾�病症疲疳疽疼疹痂疸皋皰益盍���".split(""); +for(j = 0; j != D[153].length; ++j) if(D[153][j].charCodeAt(0) !== 0xFFFD) { e[D[153][j]] = 39168 + j; d[39168 + j] = D[153][j];} +D[154] = "������������������������������������������������盎眩真眠眨矩砰砧砸砝�������破砷砥砭砠砟砲祕祐祠祟祖神祝祗祚秤秣秧租秦秩秘窄窈站������笆笑粉紡紗紋紊素索純紐紕級紜納紙紛缺罟羔翅翁耆耘耕耙������������������耗耽耿胱脂胰脅胭胴脆胸胳脈能脊胼胯臭臬舀舐航舫舨般芻茫荒荔荊茸荐草茵茴荏茲茹茶茗荀茱茨荃虔蚊蚪蚓蚤蚩蚌蚣蚜衰衷袁袂衽衹記訐討訌訕訊託訓訖訏訑豈豺豹財貢起躬軒軔軏辱送逆迷退迺迴逃追逅迸邕郡郝郢酒配酌�釘針釗釜釙閃院陣陡陛陝除陘���".split(""); +for(j = 0; j != D[154].length; ++j) if(D[154][j].charCodeAt(0) !== 0xFFFD) { e[D[154][j]] = 39424 + j; d[39424 + j] = D[154][j];} +D[155] = "������������������������������������������������陞隻飢馬骨高鬥鬲鬼乾�������偺偽停假偃偌做偉健偶偎偕偵側偷偏倏偯偭兜冕凰剪副勒務������勘動匐匏匙匿區匾參曼商啪啦啄啞啡啃啊唱啖問啕唯啤唸售������������������啜唬啣唳啁啗圈國圉域堅堊堆埠埤基堂堵執培夠奢娶婁婉婦婪婀娼婢婚婆婊孰寇寅寄寂宿密尉專將屠屜屝崇崆崎崛崖崢崑崩崔崙崤崧崗巢常帶帳帷康庸庶庵庾張強彗彬彩彫得徙從徘御徠徜恿患悉悠您惋悴惦悽情悻悵惜悼惘惕�惆惟悸惚惇戚戛扈掠控捲掖探���".split(""); +for(j = 0; j != D[155].length; ++j) if(D[155][j].charCodeAt(0) !== 0xFFFD) { e[D[155][j]] = 39680 + j; d[39680 + j] = D[155][j];} +D[156] = "������������������������������������������������接捷捧掘措捱掩掉掃掛�������捫推掄授掙採掬排掏掀捻捩捨捺敝敖救教敗啟敏敘敕敔斜斛������斬族旋旌旎晝晚晤晨晦晞曹勗望梁梯梢梓梵桿桶梱梧梗械梃������������������棄梭梆梅梔條梨梟梡梂欲殺毫毬氫涎涼淳淙液淡淌淤添淺清淇淋涯淑涮淞淹涸混淵淅淒渚涵淚淫淘淪深淮淨淆淄涪淬涿淦烹焉焊烽烯爽牽犁猜猛猖猓猙率琅琊球理現琍瓠瓶瓷甜產略畦畢異疏痔痕疵痊痍皎盔盒盛眷眾眼眶眸眺�硫硃硎祥票祭移窒窕笠笨笛第���".split(""); +for(j = 0; j != D[156].length; ++j) if(D[156][j].charCodeAt(0) !== 0xFFFD) { e[D[156][j]] = 39936 + j; d[39936 + j] = D[156][j];} +D[157] = "������������������������������������������������符笙笞笮粒粗粕絆絃統�������紮紹紼絀細紳組累終紲紱缽羞羚翌翎習耜聊聆脯脖脣脫脩脰������脤舂舵舷舶船莎莞莘荸莢莖莽莫莒莊莓莉莠荷荻荼莆莧處彪������������������蛇蛀蚶蛄蚵蛆蛋蚱蚯蛉術袞袈被袒袖袍袋覓規訪訝訣訥許設訟訛訢豉豚販責貫貨貪貧赧赦趾趺軛軟這逍通逗連速逝逐逕逞造透逢逖逛途部郭都酗野釵釦釣釧釭釩閉陪陵陳陸陰陴陶陷陬雀雪雩章竟頂頃魚鳥鹵鹿麥麻傢傍傅備傑�傀傖傘傚最凱割剴創剩勞勝勛���".split(""); +for(j = 0; j != D[157].length; ++j) if(D[157][j].charCodeAt(0) !== 0xFFFD) { e[D[157][j]] = 40192 + j; d[40192 + j] = D[157][j];} +D[158] = "������������������������������������������������博厥啻喀喧啼喊喝喘喂�������喜喪喔喇喋喃喳單喟唾喲喚喻喬喱啾喉喫喙圍堯堪場堤堰報������堡堝堠壹壺奠婷媚婿媒媛媧孳孱寒富寓寐尊尋就嵌嵐崴嵇巽������������������幅帽幀幃幾廊廁廂廄弼彭復循徨惑惡悲悶惠愜愣惺愕惰惻惴慨惱愎惶愉愀愒戟扉掣掌描揀揩揉揆揍插揣提握揖揭揮捶援揪換摒揚揹敞敦敢散斑斐斯普晰晴晶景暑智晾晷曾替期朝棺棕棠棘棗椅棟棵森棧棹棒棲棣棋棍植椒椎棉棚�楮棻款欺欽殘殖殼毯氮氯氬港���".split(""); +for(j = 0; j != D[158].length; ++j) if(D[158][j].charCodeAt(0) !== 0xFFFD) { e[D[158][j]] = 40448 + j; d[40448 + j] = D[158][j];} +D[159] = "������������������������������������������������游湔渡渲湧湊渠渥渣減�������湛湘渤湖湮渭渦湯渴湍渺測湃渝渾滋溉渙湎湣湄湲湩湟焙焚������焦焰無然煮焜牌犄犀猶猥猴猩琺琪琳琢琥琵琶琴琯琛琦琨甥������������������甦畫番痢痛痣痙痘痞痠登發皖皓皴盜睏短硝硬硯稍稈程稅稀窘窗窖童竣等策筆筐筒答筍筋筏筑粟粥絞結絨絕紫絮絲絡給絢絰絳善翔翕耋聒肅腕腔腋腑腎脹腆脾腌腓腴舒舜菩萃菸萍菠菅萋菁華菱菴著萊菰萌菌菽菲菊萸萎萄菜萇�菔菟虛蛟蛙蛭蛔蛛蛤蛐蛞街裁���".split(""); +for(j = 0; j != D[159].length; ++j) if(D[159][j].charCodeAt(0) !== 0xFFFD) { e[D[159][j]] = 40704 + j; d[40704 + j] = D[159][j];} +D[160] = "������������������������������������������������裂袱覃視註詠評詞証詁�������詔詛詐詆訴診訶詖象貂貯貼貳貽賁費賀貴買貶貿貸越超趁跎������距跋跚跑跌跛跆軻軸軼辜逮逵週逸進逶鄂郵鄉郾酣酥量鈔鈕������������������鈣鈉鈞鈍鈐鈇鈑閔閏開閑間閒閎隊階隋陽隅隆隍陲隄雁雅雄集雇雯雲韌項順須飧飪飯飩飲飭馮馭黃黍黑亂傭債傲傳僅傾催傷傻傯僇剿剷剽募勦勤勢勣匯嗟嗨嗓嗦嗎嗜嗇嗑嗣嗤嗯嗚嗡嗅嗆嗥嗉園圓塞塑塘塗塚塔填塌塭塊塢塒塋�奧嫁嫉嫌媾媽媼媳嫂媲嵩嵯幌���".split(""); +for(j = 0; j != D[160].length; ++j) if(D[160][j].charCodeAt(0) !== 0xFFFD) { e[D[160][j]] = 40960 + j; d[40960 + j] = D[160][j];} +D[161] = "������������������������������������������������幹廉廈弒彙徬微愚意慈�������感想愛惹愁愈慎慌慄慍愾愴愧愍愆愷戡戢搓搾搞搪搭搽搬搏������搜搔損搶搖搗搆敬斟新暗暉暇暈暖暄暘暍會榔業楚楷楠楔極������������������椰概楊楨楫楞楓楹榆楝楣楛歇歲毀殿毓毽溢溯滓溶滂源溝滇滅溥溘溼溺溫滑準溜滄滔溪溧溴煎煙煩煤煉照煜煬煦煌煥煞煆煨煖爺牒猷獅猿猾瑯瑚瑕瑟瑞瑁琿瑙瑛瑜當畸瘀痰瘁痲痱痺痿痴痳盞盟睛睫睦睞督睹睪睬睜睥睨睢矮碎�碰碗碘碌碉硼碑碓硿祺祿禁萬���".split(""); +for(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];} +D[162] = "������������������������������������������������禽稜稚稠稔稟稞窟窠筷�������節筠筮筧粱粳粵經絹綑綁綏絛置罩罪署義羨群聖聘肆肄腱腰������腸腥腮腳腫腹腺腦舅艇蒂葷落萱葵葦葫葉葬葛萼萵葡董葩葭������������������葆虞虜號蛹蜓蜈蜇蜀蛾蛻蜂蜃蜆蜊衙裟裔裙補裘裝裡裊裕裒覜解詫該詳試詩詰誇詼詣誠話誅詭詢詮詬詹詻訾詨豢貊貉賊資賈賄貲賃賂賅跡跟跨路跳跺跪跤跦躲較載軾輊辟農運遊道遂達逼違遐遇遏過遍遑逾遁鄒鄗酬酪酩釉鈷鉗�鈸鈽鉀鈾鉛鉋鉤鉑鈴鉉鉍鉅鈹���".split(""); +for(j = 0; j != D[162].length; ++j) if(D[162][j].charCodeAt(0) !== 0xFFFD) { e[D[162][j]] = 41472 + j; d[41472 + j] = D[162][j];} +D[163] = "������������������������������������������������鈿鉚閘隘隔隕雍雋雉雊�������雷電雹零靖靴靶預頑頓頊頒頌飼飴飽飾馳馱馴髡鳩麂鼎鼓鼠������僧僮僥僖僭僚僕像僑僱僎僩兢凳劃劂匱厭嗾嘀嘛嘗嗽嘔嘆嘉������������������嘍嘎嗷嘖嘟嘈嘐嗶團圖塵塾境墓墊塹墅塽壽夥夢夤奪奩嫡嫦嫩嫗嫖嫘嫣孵寞寧寡寥實寨寢寤察對屢嶄嶇幛幣幕幗幔廓廖弊彆彰徹慇愿態慷慢慣慟慚慘慵截撇摘摔撤摸摟摺摑摧搴摭摻敲斡旗旖暢暨暝榜榨榕槁榮槓構榛榷榻榫榴�槐槍榭槌榦槃榣歉歌氳漳演滾���".split(""); +for(j = 0; j != D[163].length; ++j) if(D[163][j].charCodeAt(0) !== 0xFFFD) { e[D[163][j]] = 41728 + j; d[41728 + j] = D[163][j];} +D[164] = "������������������������������������������������漓滴漩漾漠漬漏漂漢滿�������滯漆漱漸漲漣漕漫漯澈漪滬漁滲滌滷熔熙煽熊熄熒爾犒犖獄������獐瑤瑣瑪瑰瑭甄疑瘧瘍瘋瘉瘓盡監瞄睽睿睡磁碟碧碳碩碣禎������������������福禍種稱窪窩竭端管箕箋筵算箝箔箏箸箇箄粹粽精綻綰綜綽綾綠緊綴網綱綺綢綿綵綸維緒緇綬罰翠翡翟聞聚肇腐膀膏膈膊腿膂臧臺與舔舞艋蓉蒿蓆蓄蒙蒞蒲蒜蓋蒸蓀蓓蒐蒼蓑蓊蜿蜜蜻蜢蜥蜴蜘蝕蜷蜩裳褂裴裹裸製裨褚裯誦誌�語誣認誡誓誤說誥誨誘誑誚誧���".split(""); +for(j = 0; j != D[164].length; ++j) if(D[164][j].charCodeAt(0) !== 0xFFFD) { e[D[164][j]] = 41984 + j; d[41984 + j] = D[164][j];} +D[165] = "������������������������������������������������豪貍貌賓賑賒赫趙趕跼�������輔輒輕輓辣遠遘遜遣遙遞遢遝遛鄙鄘鄞酵酸酷酴鉸銀銅銘銖������鉻銓銜銨鉼銑閡閨閩閣閥閤隙障際雌雒需靼鞅韶頗領颯颱餃������������������餅餌餉駁骯骰髦魁魂鳴鳶鳳麼鼻齊億儀僻僵價儂儈儉儅凜劇劈劉劍劊勰厲嘮嘻嘹嘲嘿嘴嘩噓噎噗噴嘶嘯嘰墀墟增墳墜墮墩墦奭嬉嫻嬋嫵嬌嬈寮寬審寫層履嶝嶔幢幟幡廢廚廟廝廣廠彈影德徵慶慧慮慝慕憂慼慰慫慾憧憐憫憎憬憚�憤憔憮戮摩摯摹撞撲撈撐撰撥���".split(""); +for(j = 0; j != D[165].length; ++j) if(D[165][j].charCodeAt(0) !== 0xFFFD) { e[D[165][j]] = 42240 + j; d[42240 + j] = D[165][j];} +D[166] = "������������������������������������������������撓撕撩撒撮播撫撚撬撙�������撢撳敵敷數暮暫暴暱樣樟槨樁樞標槽模樓樊槳樂樅槭樑歐歎������殤毅毆漿潼澄潑潦潔澆潭潛潸潮澎潺潰潤澗潘滕潯潠潟熟熬������������������熱熨牖犛獎獗瑩璋璃瑾璀畿瘠瘩瘟瘤瘦瘡瘢皚皺盤瞎瞇瞌瞑瞋磋磅確磊碾磕碼磐稿稼穀稽稷稻窯窮箭箱範箴篆篇篁箠篌糊締練緯緻緘緬緝編緣線緞緩綞緙緲緹罵罷羯翩耦膛膜膝膠膚膘蔗蔽蔚蓮蔬蔭蔓蔑蔣蔡蔔蓬蔥蓿蔆螂蝴蝶�蝠蝦蝸蝨蝙蝗蝌蝓衛衝褐複褒���".split(""); +for(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];} +D[167] = "������������������������������������������������褓褕褊誼諒談諄誕請諸�������課諉諂調誰論諍誶誹諛豌豎豬賠賞賦賤賬賭賢賣賜質賡赭趟������趣踫踐踝踢踏踩踟踡踞躺輝輛輟輩輦輪輜輞輥適遮遨遭遷鄰������������������鄭鄧鄱醇醉醋醃鋅銻銷鋪銬鋤鋁銳銼鋒鋇鋰銲閭閱霄霆震霉靠鞍鞋鞏頡頫頜颳養餓餒餘駝駐駟駛駑駕駒駙骷髮髯鬧魅魄魷魯鴆鴉鴃麩麾黎墨齒儒儘儔儐儕冀冪凝劑劓勳噙噫噹噩噤噸噪器噥噱噯噬噢噶壁墾壇壅奮嬝嬴學寰導彊�憲憑憩憊懍憶憾懊懈戰擅擁擋���".split(""); +for(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];} +D[168] = "������������������������������������������������撻撼據擄擇擂操撿擒擔�������撾整曆曉暹曄曇暸樽樸樺橙橫橘樹橄橢橡橋橇樵機橈歙歷氅������濂澱澡濃澤濁澧澳激澹澶澦澠澴熾燉燐燒燈燕熹燎燙燜燃燄������������������獨璜璣璘璟璞瓢甌甍瘴瘸瘺盧盥瞠瞞瞟瞥磨磚磬磧禦積穎穆穌穋窺篙簑築篤篛篡篩篦糕糖縊縑縈縛縣縞縝縉縐罹羲翰翱翮耨膳膩膨臻興艘艙蕊蕙蕈蕨蕩蕃蕉蕭蕪蕞螃螟螞螢融衡褪褲褥褫褡親覦諦諺諫諱謀諜諧諮諾謁謂諷諭諳�諶諼豫豭貓賴蹄踱踴蹂踹踵輻���".split(""); +for(j = 0; j != D[168].length; ++j) if(D[168][j].charCodeAt(0) !== 0xFFFD) { e[D[168][j]] = 43008 + j; d[43008 + j] = D[168][j];} +D[169] = "������������������������������������������������輯輸輳辨辦遵遴選遲遼�������遺鄴醒錠錶鋸錳錯錢鋼錫錄錚錐錦錡錕錮錙閻隧隨險雕霎霑������霖霍霓霏靛靜靦鞘頰頸頻頷頭頹頤餐館餞餛餡餚駭駢駱骸骼������������������髻髭鬨鮑鴕鴣鴦鴨鴒鴛默黔龍龜優償儡儲勵嚎嚀嚐嚅嚇嚏壕壓壑壎嬰嬪嬤孺尷屨嶼嶺嶽嶸幫彌徽應懂懇懦懋戲戴擎擊擘擠擰擦擬擱擢擭斂斃曙曖檀檔檄檢檜櫛檣橾檗檐檠歜殮毚氈濘濱濟濠濛濤濫濯澀濬濡濩濕濮濰燧營燮燦燥�燭燬燴燠爵牆獰獲璩環璦璨癆���".split(""); +for(j = 0; j != D[169].length; ++j) if(D[169][j].charCodeAt(0) !== 0xFFFD) { e[D[169][j]] = 43264 + j; d[43264 + j] = D[169][j];} +D[170] = "������������������������������������������������療癌盪瞳瞪瞰瞬瞧瞭矯�������磷磺磴磯礁禧禪穗窿簇簍篾篷簌篠糠糜糞糢糟糙糝縮績繆縷������縲繃縫總縱繅繁縴縹繈縵縿縯罄翳翼聱聲聰聯聳臆臃膺臂臀������������������膿膽臉膾臨舉艱薪薄蕾薜薑薔薯薛薇薨薊虧蟀蟑螳蟒蟆螫螻螺蟈蟋褻褶襄褸褽覬謎謗謙講謊謠謝謄謐豁谿豳賺賽購賸賻趨蹉蹋蹈蹊轄輾轂轅輿避遽還邁邂邀鄹醣醞醜鍍鎂錨鍵鍊鍥鍋錘鍾鍬鍛鍰鍚鍔闊闋闌闈闆隱隸雖霜霞鞠韓�顆颶餵騁駿鮮鮫鮪鮭鴻鴿麋黏���".split(""); +for(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];} +D[171] = "������������������������������������������������點黜黝黛鼾齋叢嚕嚮壙�������壘嬸彝懣戳擴擲擾攆擺擻擷斷曜朦檳檬櫃檻檸櫂檮檯歟歸殯������瀉瀋濾瀆濺瀑瀏燻燼燾燸獷獵璧璿甕癖癘癒瞽瞿瞻瞼礎禮穡������������������穢穠竄竅簫簧簪簞簣簡糧織繕繞繚繡繒繙罈翹翻職聶臍臏舊藏薩藍藐藉薰薺薹薦蟯蟬蟲蟠覆覲觴謨謹謬謫豐贅蹙蹣蹦蹤蹟蹕軀轉轍邇邃邈醫醬釐鎔鎊鎖鎢鎳鎮鎬鎰鎘鎚鎗闔闖闐闕離雜雙雛雞霤鞣鞦鞭韹額顏題顎顓颺餾餿餽餮�馥騎髁鬃鬆魏魎魍鯊鯉鯽鯈鯀���".split(""); +for(j = 0; j != D[171].length; ++j) if(D[171][j].charCodeAt(0) !== 0xFFFD) { e[D[171][j]] = 43776 + j; d[43776 + j] = D[171][j];} +D[172] = "������������������������������������������������鵑鵝鵠黠鼕鼬儳嚥壞壟�������壢寵龐廬懲懷懶懵攀攏曠曝櫥櫝櫚櫓瀛瀟瀨瀚瀝瀕瀘爆爍牘������犢獸獺璽瓊瓣疇疆癟癡矇礙禱穫穩簾簿簸簽簷籀繫繭繹繩繪������������������羅繳羶羹羸臘藩藝藪藕藤藥藷蟻蠅蠍蟹蟾襠襟襖襞譁譜識證譚譎譏譆譙贈贊蹼蹲躇蹶蹬蹺蹴轔轎辭邊邋醱醮鏡鏑鏟鏃鏈鏜鏝鏖鏢鏍鏘鏤鏗鏨關隴難霪霧靡韜韻類願顛颼饅饉騖騙鬍鯨鯧鯖鯛鶉鵡鵲鵪鵬麒麗麓麴勸嚨嚷嚶嚴嚼壤�孀孃孽寶巉懸懺攘攔攙曦朧櫬���".split(""); +for(j = 0; j != D[172].length; ++j) if(D[172][j].charCodeAt(0) !== 0xFFFD) { e[D[172][j]] = 44032 + j; d[44032 + j] = D[172][j];} +D[173] = "������������������������������������������������瀾瀰瀲爐獻瓏癢癥礦礪�������礬礫竇競籌籃籍糯糰辮繽繼纂罌耀臚艦藻藹蘑藺蘆蘋蘇蘊蠔������蠕襤覺觸議譬警譯譟譫贏贍躉躁躅躂醴釋鐘鐃鏽闡霰飄饒饑������������������馨騫騰騷騵鰓鰍鹹麵黨鼯齟齣齡儷儸囁囀囂夔屬巍懼懾攝攜斕曩櫻欄櫺殲灌爛犧瓖瓔癩矓籐纏續羼蘗蘭蘚蠣蠢蠡蠟襪襬覽譴護譽贓躊躍躋轟辯醺鐮鐳鐵鐺鐸鐲鐫闢霸霹露響顧顥饗驅驃驀騾髏魔魑鰭鰥鶯鶴鷂鶸麝黯鼙齜齦齧儼�儻囈囊囉孿巔巒彎懿攤權歡灑���".split(""); +for(j = 0; j != D[173].length; ++j) if(D[173][j].charCodeAt(0) !== 0xFFFD) { e[D[173][j]] = 44288 + j; d[44288 + j] = D[173][j];} +D[174] = "������������������������������������������������灘玀瓤疊癮癬禳籠籟聾�������聽臟襲襯觼讀贖贗躑躓轡酈鑄鑑鑒霽霾韃韁顫饕驕驍髒鬚鱉������鰱鰾鰻鷓鷗鼴齬齪龔囌巖戀攣攫攪曬欐瓚竊籤籣籥纓纖纔臢������������������蘸蘿蠱變邐邏鑣鑠鑤靨顯饜驚驛驗髓體髑鱔鱗鱖鷥麟黴囑壩攬灞癱癲矗罐羈蠶蠹衢讓讒讖艷贛釀鑪靂靈靄韆顰驟鬢魘鱟鷹鷺鹼鹽鼇齷齲廳欖灣籬籮蠻觀躡釁鑲鑰顱饞髖鬣黌灤矚讚鑷韉驢驥纜讜躪釅鑽鑾鑼鱷鱸黷豔鑿鸚爨驪鬱�鸛鸞籲乂乜凵匚厂万丌乇亍囗���".split(""); +for(j = 0; j != D[174].length; ++j) if(D[174][j].charCodeAt(0) !== 0xFFFD) { e[D[174][j]] = 44544 + j; d[44544 + j] = D[174][j];} +D[175] = "������������������������������������������������兀屮彳丏冇与丮亓仂仉�������仈冘勼卬厹圠夃夬尐巿旡殳毌气爿丱丼仨仜仩仡仝仚刌匜卌������圢圣夗夯宁宄尒尻屴屳帄庀庂忉戉扐氕氶汃氿氻犮犰玊禸肊������������������阞伎优伬仵伔仱伀价伈伝伂伅伢伓伄仴伒冱刓刉刐劦匢匟卍厊吇囡囟圮圪圴夼妀奼妅奻奾奷奿孖尕尥屼屺屻屾巟幵庄异弚彴忕忔忏扜扞扤扡扦扢扙扠扚扥旯旮朾朹朸朻机朿朼朳氘汆汒汜汏汊汔汋汌灱牞犴犵玎甪癿穵网艸艼芀�艽艿虍襾邙邗邘邛邔阢阤阠阣���".split(""); +for(j = 0; j != D[175].length; ++j) if(D[175][j].charCodeAt(0) !== 0xFFFD) { e[D[175][j]] = 44800 + j; d[44800 + j] = D[175][j];} +D[176] = "������������������������������������������������佖伻佢佉体佤伾佧佒佟�������佁佘伭伳伿佡冏冹刜刞刡劭劮匉卣卲厎厏吰吷吪呔呅吙吜吥������吘吽呏呁吨吤呇囮囧囥坁坅坌坉坋坒夆奀妦妘妠妗妎妢妐妏������������������妧妡宎宒尨尪岍岏岈岋岉岒岊岆岓岕巠帊帎庋庉庌庈庍弅弝彸彶忒忑忐忭忨忮忳忡忤忣忺忯忷忻怀忴戺抃抌抎抏抔抇扱扻扺扰抁抈扷扽扲扴攷旰旴旳旲旵杅杇杙杕杌杈杝杍杚杋毐氙氚汸汧汫沄沋沏汱汯汩沚汭沇沕沜汦汳汥汻�沎灴灺牣犿犽狃狆狁犺狅玕玗���".split(""); +for(j = 0; j != D[176].length; ++j) if(D[176][j].charCodeAt(0) !== 0xFFFD) { e[D[176][j]] = 45056 + j; d[45056 + j] = D[176][j];} +D[177] = "������������������������������������������������玓玔玒町甹疔疕皁礽耴�������肕肙肐肒肜芐芏芅芎芑芓芊芃芄豸迉辿邟邡邥邞邧邠阰阨阯������阭丳侘佼侅佽侀侇佶佴侉侄佷佌侗佪侚佹侁佸侐侜侔侞侒侂������������������侕佫佮冞冼冾刵刲刳剆刱劼匊匋匼厒厔咇呿咁咑咂咈呫呺呾呥呬呴呦咍呯呡呠咘呣呧呤囷囹坯坲坭坫坱坰坶垀坵坻坳坴坢坨坽夌奅妵妺姏姎妲姌姁妶妼姃姖妱妽姀姈妴姇孢孥宓宕屄屇岮岤岠岵岯岨岬岟岣岭岢岪岧岝岥岶岰岦�帗帔帙弨弢弣弤彔徂彾彽忞忥���".split(""); +for(j = 0; j != D[177].length; ++j) if(D[177][j].charCodeAt(0) !== 0xFFFD) { e[D[177][j]] = 45312 + j; d[45312 + j] = D[177][j];} +D[178] = "������������������������������������������������怭怦怙怲怋怴怊怗怳怚�������怞怬怢怍怐怮怓怑怌怉怜戔戽抭抴拑抾抪抶拊抮抳抯抻抩抰������抸攽斨斻昉旼昄昒昈旻昃昋昍昅旽昑昐曶朊枅杬枎枒杶杻枘������������������枆构杴枍枌杺枟枑枙枃杽极杸杹枔欥殀歾毞氝沓泬泫泮泙沶泔沭泧沷泐泂沺泃泆泭泲泒泝沴沊沝沀泞泀洰泍泇沰泹泏泩泑炔炘炅炓炆炄炑炖炂炚炃牪狖狋狘狉狜狒狔狚狌狑玤玡玭玦玢玠玬玝瓝瓨甿畀甾疌疘皯盳盱盰盵矸矼矹�矻矺矷祂礿秅穸穻竻籵糽耵肏���".split(""); +for(j = 0; j != D[178].length; ++j) if(D[178][j].charCodeAt(0) !== 0xFFFD) { e[D[178][j]] = 45568 + j; d[45568 + j] = D[178][j];} +D[179] = "������������������������������������������������肮肣肸肵肭舠芠苀芫芚�������芘芛芵芧芮芼芞芺芴芨芡芩苂芤苃芶芢虰虯虭虮豖迒迋迓迍������迖迕迗邲邴邯邳邰阹阽阼阺陃俍俅俓侲俉俋俁俔俜俙侻侳俛������������������俇俖侺俀侹俬剄剉勀勂匽卼厗厖厙厘咺咡咭咥哏哃茍咷咮哖咶哅哆咠呰咼咢咾呲哞咰垵垞垟垤垌垗垝垛垔垘垏垙垥垚垕壴复奓姡姞姮娀姱姝姺姽姼姶姤姲姷姛姩姳姵姠姾姴姭宨屌峐峘峌峗峋峛峞峚峉峇峊峖峓峔峏峈峆峎峟峸�巹帡帢帣帠帤庰庤庢庛庣庥弇���".split(""); +for(j = 0; j != D[179].length; ++j) if(D[179][j].charCodeAt(0) !== 0xFFFD) { e[D[179][j]] = 45824 + j; d[45824 + j] = D[179][j];} +D[180] = "������������������������������������������������弮彖徆怷怹恔恲恞恅恓�������恇恉恛恌恀恂恟怤恄恘恦恮扂扃拏挍挋拵挎挃拫拹挏挌拸拶������挀挓挔拺挕拻拰敁敃斪斿昶昡昲昵昜昦昢昳昫昺昝昴昹昮朏������������������朐柁柲柈枺柜枻柸柘柀枷柅柫柤柟枵柍枳柷柶柮柣柂枹柎柧柰枲柼柆柭柌枮柦柛柺柉柊柃柪柋欨殂殄殶毖毘毠氠氡洨洴洭洟洼洿洒洊泚洳洄洙洺洚洑洀洝浂洁洘洷洃洏浀洇洠洬洈洢洉洐炷炟炾炱炰炡炴炵炩牁牉牊牬牰牳牮狊�狤狨狫狟狪狦狣玅珌珂珈珅玹���".split(""); +for(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];} +D[181] = "������������������������������������������������玶玵玴珫玿珇玾珃珆玸�������珋瓬瓮甮畇畈疧疪癹盄眈眃眄眅眊盷盻盺矧矨砆砑砒砅砐砏������砎砉砃砓祊祌祋祅祄秕种秏秖秎窀穾竑笀笁籺籸籹籿粀粁紃������������������紈紁罘羑羍羾耇耎耏耔耷胘胇胠胑胈胂胐胅胣胙胜胊胕胉胏胗胦胍臿舡芔苙苾苹茇苨茀苕茺苫苖苴苬苡苲苵茌苻苶苰苪苤苠苺苳苭虷虴虼虳衁衎衧衪衩觓訄訇赲迣迡迮迠郱邽邿郕郅邾郇郋郈釔釓陔陏陑陓陊陎倞倅倇倓倢倰倛�俵俴倳倷倬俶俷倗倜倠倧倵倯���".split(""); +for(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];} +D[182] = "������������������������������������������������倱倎党冔冓凊凄凅凈凎�������剡剚剒剞剟剕剢勍匎厞唦哢唗唒哧哳哤唚哿唄唈哫唑唅哱唊������哻哷哸哠唎唃唋圁圂埌堲埕埒垺埆垽垼垸垶垿埇埐垹埁夎奊������������������娙娖娭娮娕娏娗娊娞娳孬宧宭宬尃屖屔峬峿峮峱峷崀峹帩帨庨庮庪庬弳弰彧恝恚恧恁悢悈悀悒悁悝悃悕悛悗悇悜悎戙扆拲挐捖挬捄捅挶捃揤挹捋捊挼挩捁挴捘捔捙挭捇挳捚捑挸捗捀捈敊敆旆旃旄旂晊晟晇晑朒朓栟栚桉栲栳栻�桋桏栖栱栜栵栫栭栯桎桄栴栝���".split(""); +for(j = 0; j != D[182].length; ++j) if(D[182][j].charCodeAt(0) !== 0xFFFD) { e[D[182][j]] = 46592 + j; d[46592 + j] = D[182][j];} +D[183] = "������������������������������������������������栒栔栦栨栮桍栺栥栠欬�������欯欭欱欴歭肂殈毦毤毨毣毢毧氥浺浣浤浶洍浡涒浘浢浭浯涑������涍淯浿涆浞浧浠涗浰浼浟涂涘洯浨涋浾涀涄洖涃浻浽浵涐烜������������������烓烑烝烋缹烢烗烒烞烠烔烍烅烆烇烚烎烡牂牸牷牶猀狺狴狾狶狳狻猁珓珙珥珖玼珧珣珩珜珒珛珔珝珚珗珘珨瓞瓟瓴瓵甡畛畟疰痁疻痄痀疿疶疺皊盉眝眛眐眓眒眣眑眕眙眚眢眧砣砬砢砵砯砨砮砫砡砩砳砪砱祔祛祏祜祓祒祑秫秬�秠秮秭秪秜秞秝窆窉窅窋窌窊���".split(""); +for(j = 0; j != D[183].length; ++j) if(D[183][j].charCodeAt(0) !== 0xFFFD) { e[D[183][j]] = 46848 + j; d[46848 + j] = D[183][j];} +D[184] = "������������������������������������������������窇竘笐笄笓笅笏笈笊笎�������笉笒粄粑粊粌粈粍粅紞紝紑紎紘紖紓紟紒紏紌罜罡罞罠罝罛������羖羒翃翂翀耖耾耹胺胲胹胵脁胻脀舁舯舥茳茭荄茙荑茥荖茿������������������荁茦茜茢荂荎茛茪茈茼荍茖茤茠茷茯茩荇荅荌荓茞茬荋茧荈虓虒蚢蚨蚖蚍蚑蚞蚇蚗蚆蚋蚚蚅蚥蚙蚡蚧蚕蚘蚎蚝蚐蚔衃衄衭衵衶衲袀衱衿衯袃衾衴衼訒豇豗豻貤貣赶赸趵趷趶軑軓迾迵适迿迻逄迼迶郖郠郙郚郣郟郥郘郛郗郜郤酐�酎酏釕釢釚陜陟隼飣髟鬯乿偰���".split(""); +for(j = 0; j != D[184].length; ++j) if(D[184][j].charCodeAt(0) !== 0xFFFD) { e[D[184][j]] = 47104 + j; d[47104 + j] = D[184][j];} +D[185] = "������������������������������������������������偪偡偞偠偓偋偝偲偈偍�������偁偛偊偢倕偅偟偩偫偣偤偆偀偮偳偗偑凐剫剭剬剮勖勓匭厜������啵啶唼啍啐唴唪啑啢唶唵唰啒啅唌唲啥啎唹啈唭唻啀啋圊圇������������������埻堔埢埶埜埴堀埭埽堈埸堋埳埏堇埮埣埲埥埬埡堎埼堐埧堁堌埱埩埰堍堄奜婠婘婕婧婞娸娵婭婐婟婥婬婓婤婗婃婝婒婄婛婈媎娾婍娹婌婰婩婇婑婖婂婜孲孮寁寀屙崞崋崝崚崠崌崨崍崦崥崏崰崒崣崟崮帾帴庱庴庹庲庳弶弸徛徖�徟悊悐悆悾悰悺惓惔惏惤惙惝���".split(""); +for(j = 0; j != D[185].length; ++j) if(D[185][j].charCodeAt(0) !== 0xFFFD) { e[D[185][j]] = 47360 + j; d[47360 + j] = D[185][j];} +D[186] = "������������������������������������������������惈悱惛悷惊悿惃惍惀挲�������捥掊掂捽掽掞掭掝掗掫掎捯掇掐据掯捵掜捭掮捼掤挻掟捸掅������掁掑掍捰敓旍晥晡晛晙晜晢朘桹梇梐梜桭桮梮梫楖桯梣梬梩������������������桵桴梲梏桷梒桼桫桲梪梀桱桾梛梖梋梠梉梤桸桻梑梌梊桽欶欳欷欸殑殏殍殎殌氪淀涫涴涳湴涬淩淢涷淶淔渀淈淠淟淖涾淥淜淝淛淴淊涽淭淰涺淕淂淏淉淐淲淓淽淗淍淣涻烺焍烷焗烴焌烰焄烳焐烼烿焆焓焀烸烶焋焂焎牾牻牼牿�猝猗猇猑猘猊猈狿猏猞玈珶珸���".split(""); +for(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];} +D[187] = "������������������������������������������������珵琄琁珽琇琀珺珼珿琌�������琋珴琈畤畣痎痒痏痋痌痑痐皏皉盓眹眯眭眱眲眴眳眽眥眻眵������硈硒硉硍硊硌砦硅硐祤祧祩祪祣祫祡离秺秸秶秷窏窔窐笵筇������������������笴笥笰笢笤笳笘笪笝笱笫笭笯笲笸笚笣粔粘粖粣紵紽紸紶紺絅紬紩絁絇紾紿絊紻紨罣羕羜羝羛翊翋翍翐翑翇翏翉耟耞耛聇聃聈脘脥脙脛脭脟脬脞脡脕脧脝脢舑舸舳舺舴舲艴莐莣莨莍荺荳莤荴莏莁莕莙荵莔莩荽莃莌莝莛莪莋荾�莥莯莈莗莰荿莦莇莮荶莚虙虖���".split(""); +for(j = 0; j != D[187].length; ++j) if(D[187][j].charCodeAt(0) !== 0xFFFD) { e[D[187][j]] = 47872 + j; d[47872 + j] = D[187][j];} +D[188] = "������������������������������������������������蚿蚷蛂蛁蛅蚺蚰蛈蚹蚳�������蚸蛌蚴蚻蚼蛃蚽蚾衒袉袕袨袢袪袚袑袡袟袘袧袙袛袗袤袬袌������袓袎覂觖觙觕訰訧訬訞谹谻豜豝豽貥赽赻赹趼跂趹趿跁軘軞������������������軝軜軗軠軡逤逋逑逜逌逡郯郪郰郴郲郳郔郫郬郩酖酘酚酓酕釬釴釱釳釸釤釹釪釫釷釨釮镺閆閈陼陭陫陱陯隿靪頄飥馗傛傕傔傞傋傣傃傌傎傝偨傜傒傂傇兟凔匒匑厤厧喑喨喥喭啷噅喢喓喈喏喵喁喣喒喤啽喌喦啿喕喡喎圌堩堷堙�堞堧堣堨埵塈堥堜堛堳堿堶堮���".split(""); +for(j = 0; j != D[188].length; ++j) if(D[188][j].charCodeAt(0) !== 0xFFFD) { e[D[188][j]] = 48128 + j; d[48128 + j] = D[188][j];} +D[189] = "������������������������������������������������堹堸堭堬堻奡媯媔媟婺�������媢媞婸媦婼媥媬媕媮娷媄媊媗媃媋媩婻婽媌媜媏媓媝寪寍寋������寔寑寊寎尌尰崷嵃嵫嵁嵋崿崵嵑嵎嵕崳崺嵒崽崱嵙嵂崹嵉崸������������������崼崲崶嵀嵅幄幁彘徦徥徫惉悹惌惢惎惄愔惲愊愖愅惵愓惸惼惾惁愃愘愝愐惿愄愋扊掔掱掰揎揥揨揯揃撝揳揊揠揶揕揲揵摡揟掾揝揜揄揘揓揂揇揌揋揈揰揗揙攲敧敪敤敜敨敥斌斝斞斮旐旒晼晬晻暀晱晹晪晲朁椌棓椄棜椪棬棪棱�椏棖棷棫棤棶椓椐棳棡椇棌椈���".split(""); +for(j = 0; j != D[189].length; ++j) if(D[189][j].charCodeAt(0) !== 0xFFFD) { e[D[189][j]] = 48384 + j; d[48384 + j] = D[189][j];} +D[190] = "������������������������������������������������楰梴椑棯棆椔棸棐棽棼�������棨椋椊椗棎棈棝棞棦棴棑椆棔棩椕椥棇欹欻欿欼殔殗殙殕殽������毰毲毳氰淼湆湇渟湉溈渼渽湅湢渫渿湁湝湳渜渳湋湀湑渻渃������������������渮湞湨湜湡渱渨湠湱湫渹渢渰湓湥渧湸湤湷湕湹湒湦渵渶湚焠焞焯烻焮焱焣焥焢焲焟焨焺焛牋牚犈犉犆犅犋猒猋猰猢猱猳猧猲猭猦猣猵猌琮琬琰琫琖琚琡琭琱琤琣琝琩琠琲瓻甯畯畬痧痚痡痦痝痟痤痗皕皒盚睆睇睄睍睅睊睎睋�睌矞矬硠硤硥硜硭硱硪确硰硩���".split(""); +for(j = 0; j != D[190].length; ++j) if(D[190][j].charCodeAt(0) !== 0xFFFD) { e[D[190][j]] = 48640 + j; d[48640 + j] = D[190][j];} +D[191] = "������������������������������������������������硨硞硢祴祳祲祰稂稊稃�������稌稄窙竦竤筊笻筄筈筌筎筀筘筅粢粞粨粡絘絯絣絓絖絧絪絏������絭絜絫絒絔絩絑絟絎缾缿罥罦羢羠羡翗聑聏聐胾胔腃腊腒腏������������������腇脽腍脺臦臮臷臸臹舄舼舽舿艵茻菏菹萣菀菨萒菧菤菼菶萐菆菈菫菣莿萁菝菥菘菿菡菋菎菖菵菉萉萏菞萑萆菂菳菕菺菇菑菪萓菃菬菮菄菻菗菢萛菛菾蛘蛢蛦蛓蛣蛚蛪蛝蛫蛜蛬蛩蛗蛨蛑衈衖衕袺裗袹袸裀袾袶袼袷袽袲褁裉覕覘�覗觝觚觛詎詍訹詙詀詗詘詄詅���".split(""); +for(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];} +D[192] = "������������������������������������������������詒詈詑詊詌詏豟貁貀貺�������貾貰貹貵趄趀趉跘跓跍跇跖跜跏跕跙跈跗跅軯軷軺軹軦軮軥������軵軧軨軶軫軱軬軴軩逭逴逯鄆鄬鄄郿郼鄈郹郻鄁鄀鄇鄅鄃酡������������������酤酟酢酠鈁鈊鈥鈃鈚鈦鈏鈌鈀鈒釿釽鈆鈄鈧鈂鈜鈤鈙鈗鈅鈖镻閍閌閐隇陾隈隉隃隀雂雈雃雱雰靬靰靮頇颩飫鳦黹亃亄亶傽傿僆傮僄僊傴僈僂傰僁傺傱僋僉傶傸凗剺剸剻剼嗃嗛嗌嗐嗋嗊嗝嗀嗔嗄嗩喿嗒喍嗏嗕嗢嗖嗈嗲嗍嗙嗂圔�塓塨塤塏塍塉塯塕塎塝塙塥塛���".split(""); +for(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];} +D[193] = "������������������������������������������������堽塣塱壼嫇嫄嫋媺媸媱�������媵媰媿嫈媻嫆媷嫀嫊媴媶嫍媹媐寖寘寙尟尳嵱嵣嵊嵥嵲嵬嵞������嵨嵧嵢巰幏幎幊幍幋廅廌廆廋廇彀徯徭惷慉慊愫慅愶愲愮慆������������������愯慏愩慀戠酨戣戥戤揅揱揫搐搒搉搠搤搳摃搟搕搘搹搷搢搣搌搦搰搨摁搵搯搊搚摀搥搧搋揧搛搮搡搎敯斒旓暆暌暕暐暋暊暙暔晸朠楦楟椸楎楢楱椿楅楪椹楂楗楙楺楈楉椵楬椳椽楥棰楸椴楩楀楯楄楶楘楁楴楌椻楋椷楜楏楑椲楒�椯楻椼歆歅歃歂歈歁殛嗀毻毼���".split(""); +for(j = 0; j != D[193].length; ++j) if(D[193][j].charCodeAt(0) !== 0xFFFD) { e[D[193][j]] = 49408 + j; d[49408 + j] = D[193][j];} +D[194] = "������������������������������������������������毹毷毸溛滖滈溏滀溟溓�������溔溠溱溹滆滒溽滁溞滉溷溰滍溦滏溲溾滃滜滘溙溒溎溍溤溡������溿溳滐滊溗溮溣煇煔煒煣煠煁煝煢煲煸煪煡煂煘煃煋煰煟煐������������������煓煄煍煚牏犍犌犑犐犎猼獂猻猺獀獊獉瑄瑊瑋瑒瑑瑗瑀瑏瑐瑎瑂瑆瑍瑔瓡瓿瓾瓽甝畹畷榃痯瘏瘃痷痾痼痹痸瘐痻痶痭痵痽皙皵盝睕睟睠睒睖睚睩睧睔睙睭矠碇碚碔碏碄碕碅碆碡碃硹碙碀碖硻祼禂祽祹稑稘稙稒稗稕稢稓稛稐窣�窢窞竫筦筤筭筴筩筲筥筳筱筰���".split(""); +for(j = 0; j != D[194].length; ++j) if(D[194][j].charCodeAt(0) !== 0xFFFD) { e[D[194][j]] = 49664 + j; d[49664 + j] = D[194][j];} +D[195] = "������������������������������������������������筡筸筶筣粲粴粯綈綆綀�������綍絿綅絺綎絻綃絼綌綔綄絽綒罭罫罧罨罬羦羥羧翛翜耡腤腠������腷腜腩腛腢腲朡腞腶腧腯腄腡舝艉艄艀艂艅蓱萿葖葶葹蒏蒍������������������葥葑葀蒆葧萰葍葽葚葙葴葳葝蔇葞萷萺萴葺葃葸萲葅萩菙葋萯葂萭葟葰萹葎葌葒葯蓅蒎萻葇萶萳葨葾葄萫葠葔葮葐蜋蜄蛷蜌蛺蛖蛵蝍蛸蜎蜉蜁蛶蜍蜅裖裋裍裎裞裛裚裌裐覅覛觟觥觤觡觠觢觜触詶誆詿詡訿詷誂誄詵誃誁詴詺谼�豋豊豥豤豦貆貄貅賌赨赩趑趌���".split(""); +for(j = 0; j != D[195].length; ++j) if(D[195][j].charCodeAt(0) !== 0xFFFD) { e[D[195][j]] = 49920 + j; d[49920 + j] = D[195][j];} +D[196] = "������������������������������������������������趎趏趍趓趔趐趒跰跠跬�������跱跮跐跩跣跢跧跲跫跴輆軿輁輀輅輇輈輂輋遒逿遄遉逽鄐鄍������鄏鄑鄖鄔鄋鄎酮酯鉈鉒鈰鈺鉦鈳鉥鉞銃鈮鉊鉆鉭鉬鉏鉠鉧鉯������������������鈶鉡鉰鈱鉔鉣鉐鉲鉎鉓鉌鉖鈲閟閜閞閛隒隓隑隗雎雺雽雸雵靳靷靸靲頏頍頎颬飶飹馯馲馰馵骭骫魛鳪鳭鳧麀黽僦僔僗僨僳僛僪僝僤僓僬僰僯僣僠凘劀劁勩勫匰厬嘧嘕嘌嘒嗼嘏嘜嘁嘓嘂嗺嘝嘄嗿嗹墉塼墐墘墆墁塿塴墋塺墇墑墎�塶墂墈塻墔墏壾奫嫜嫮嫥嫕嫪���".split(""); +for(j = 0; j != D[196].length; ++j) if(D[196][j].charCodeAt(0) !== 0xFFFD) { e[D[196][j]] = 50176 + j; d[50176 + j] = D[196][j];} +D[197] = "������������������������������������������������嫚嫭嫫嫳嫢嫠嫛嫬嫞嫝�������嫙嫨嫟孷寠寣屣嶂嶀嵽嶆嵺嶁嵷嶊嶉嶈嵾嵼嶍嵹嵿幘幙幓廘������廑廗廎廜廕廙廒廔彄彃彯徶愬愨慁慞慱慳慒慓慲慬憀慴慔慺������������������慛慥愻慪慡慖戩戧戫搫摍摛摝摴摶摲摳摽摵摦撦摎撂摞摜摋摓摠摐摿搿摬摫摙摥摷敳斠暡暠暟朅朄朢榱榶槉榠槎榖榰榬榼榑榙榎榧榍榩榾榯榿槄榽榤槔榹槊榚槏榳榓榪榡榞槙榗榐槂榵榥槆歊歍歋殞殟殠毃毄毾滎滵滱漃漥滸漷�滻漮漉潎漙漚漧漘漻漒滭漊漶���".split(""); +for(j = 0; j != D[197].length; ++j) if(D[197][j].charCodeAt(0) !== 0xFFFD) { e[D[197][j]] = 50432 + j; d[50432 + j] = D[197][j];} +D[198] = "������������������������������������������������潳滹滮漭潀漰漼漵滫漇�������漎潃漅滽滶漹漜滼漺漟漍漞漈漡熇熐熉熀熅熂熏煻熆熁熗牄������牓犗犕犓獃獍獑獌瑢瑳瑱瑵瑲瑧瑮甀甂甃畽疐瘖瘈瘌瘕瘑瘊������������������瘔皸瞁睼瞅瞂睮瞀睯睾瞃碲碪碴碭碨硾碫碞碥碠碬碢碤禘禊禋禖禕禔禓禗禈禒禐稫穊稰稯稨稦窨窫窬竮箈箜箊箑箐箖箍箌箛箎箅箘劄箙箤箂粻粿粼粺綧綷緂綣綪緁緀緅綝緎緄緆緋緌綯綹綖綼綟綦綮綩綡緉罳翢翣翥翞耤聝聜膉�膆膃膇膍膌膋舕蒗蒤蒡蒟蒺蓎���".split(""); +for(j = 0; j != D[198].length; ++j) if(D[198][j].charCodeAt(0) !== 0xFFFD) { e[D[198][j]] = 50688 + j; d[50688 + j] = D[198][j];} +D[199] = "������������������������������������������������蓂蒬蒮蒫蒹蒴蓁蓍蒪蒚�������蒱蓐蒝蒧蒻蒢蒔蓇蓌蒛蒩蒯蒨蓖蒘蒶蓏蒠蓗蓔蓒蓛蒰蒑虡蜳������蜣蜨蝫蝀蜮蜞蜡蜙蜛蝃蜬蝁蜾蝆蜠蜲蜪蜭蜼蜒蜺蜱蜵蝂蜦蜧������������������蜸蜤蜚蜰蜑裷裧裱裲裺裾裮裼裶裻裰裬裫覝覡覟覞觩觫觨誫誙誋誒誏誖谽豨豩賕賏賗趖踉踂跿踍跽踊踃踇踆踅跾踀踄輐輑輎輍鄣鄜鄠鄢鄟鄝鄚鄤鄡鄛酺酲酹酳銥銤鉶銛鉺銠銔銪銍銦銚銫鉹銗鉿銣鋮銎銂銕銢鉽銈銡銊銆銌銙銧�鉾銇銩銝銋鈭隞隡雿靘靽靺靾���".split(""); +for(j = 0; j != D[199].length; ++j) if(D[199][j].charCodeAt(0) !== 0xFFFD) { e[D[199][j]] = 50944 + j; d[50944 + j] = D[199][j];} +D[200] = "������������������������������������������������鞃鞀鞂靻鞄鞁靿韎韍頖�������颭颮餂餀餇馝馜駃馹馻馺駂馽駇骱髣髧鬾鬿魠魡魟鳱鳲鳵麧������僿儃儰僸儆儇僶僾儋儌僽儊劋劌勱勯噈噂噌嘵噁噊噉噆噘噚������������������噀嘳嘽嘬嘾嘸嘪嘺圚墫墝墱墠墣墯墬墥墡壿嫿嫴嫽嫷嫶嬃嫸嬂嫹嬁嬇嬅嬏屧嶙嶗嶟嶒嶢嶓嶕嶠嶜嶡嶚嶞幩幝幠幜緳廛廞廡彉徲憋憃慹憱憰憢憉憛憓憯憭憟憒憪憡憍慦憳戭摮摰撖撠撅撗撜撏撋撊撌撣撟摨撱撘敶敺敹敻斲斳暵暰�暩暲暷暪暯樀樆樗槥槸樕槱槤���".split(""); +for(j = 0; j != D[200].length; ++j) if(D[200][j].charCodeAt(0) !== 0xFFFD) { e[D[200][j]] = 51200 + j; d[51200 + j] = D[200][j];} +D[201] = "������������������������������������������������樠槿槬槢樛樝槾樧槲槮�������樔槷槧橀樈槦槻樍槼槫樉樄樘樥樏槶樦樇槴樖歑殥殣殢殦氁������氀毿氂潁漦潾澇濆澒澍澉澌潢潏澅潚澖潶潬澂潕潲潒潐潗澔������������������澓潝漀潡潫潽潧澐潓澋潩潿澕潣潷潪潻熲熯熛熰熠熚熩熵熝熥熞熤熡熪熜熧熳犘犚獘獒獞獟獠獝獛獡獚獙獢璇璉璊璆璁瑽璅璈瑼瑹甈甇畾瘥瘞瘙瘝瘜瘣瘚瘨瘛皜皝皞皛瞍瞏瞉瞈磍碻磏磌磑磎磔磈磃磄磉禚禡禠禜禢禛歶稹窲窴�窳箷篋箾箬篎箯箹篊箵糅糈糌���".split(""); +for(j = 0; j != D[201].length; ++j) if(D[201][j].charCodeAt(0) !== 0xFFFD) { e[D[201][j]] = 51456 + j; d[51456 + j] = D[201][j];} +D[202] = "������������������������������������������������糋緷緛緪緧緗緡縃緺緦�������緶緱緰緮緟罶羬羰羭翭翫翪翬翦翨聤聧膣膟膞膕膢膙膗舖艏������艓艒艐艎艑蔤蔻蔏蔀蔩蔎蔉蔍蔟蔊蔧蔜蓻蔫蓺蔈蔌蓴蔪蓲蔕������������������蓷蓫蓳蓼蔒蓪蓩蔖蓾蔨蔝蔮蔂蓽蔞蓶蔱蔦蓧蓨蓰蓯蓹蔘蔠蔰蔋蔙蔯虢蝖蝣蝤蝷蟡蝳蝘蝔蝛蝒蝡蝚蝑蝞蝭蝪蝐蝎蝟蝝蝯蝬蝺蝮蝜蝥蝏蝻蝵蝢蝧蝩衚褅褌褔褋褗褘褙褆褖褑褎褉覢覤覣觭觰觬諏諆誸諓諑諔諕誻諗誾諀諅諘諃誺誽諙�谾豍貏賥賟賙賨賚賝賧趠趜趡���".split(""); +for(j = 0; j != D[202].length; ++j) if(D[202][j].charCodeAt(0) !== 0xFFFD) { e[D[202][j]] = 51712 + j; d[51712 + j] = D[202][j];} +D[203] = "������������������������������������������������趛踠踣踥踤踮踕踛踖踑�������踙踦踧踔踒踘踓踜踗踚輬輤輘輚輠輣輖輗遳遰遯遧遫鄯鄫鄩������鄪鄲鄦鄮醅醆醊醁醂醄醀鋐鋃鋄鋀鋙銶鋏鋱鋟鋘鋩鋗鋝鋌鋯������������������鋂鋨鋊鋈鋎鋦鋍鋕鋉鋠鋞鋧鋑鋓銵鋡鋆銴镼閬閫閮閰隤隢雓霅霈霂靚鞊鞎鞈韐韏頞頝頦頩頨頠頛頧颲餈飺餑餔餖餗餕駜駍駏駓駔駎駉駖駘駋駗駌骳髬髫髳髲髱魆魃魧魴魱魦魶魵魰魨魤魬鳼鳺鳽鳿鳷鴇鴀鳹鳻鴈鴅鴄麃黓鼏鼐儜�儓儗儚儑凞匴叡噰噠噮噳噦噣���".split(""); +for(j = 0; j != D[203].length; ++j) if(D[203][j].charCodeAt(0) !== 0xFFFD) { e[D[203][j]] = 51968 + j; d[51968 + j] = D[203][j];} +D[204] = "������������������������������������������������噭噲噞噷圜圛壈墽壉墿�������墺壂墼壆嬗嬙嬛嬡嬔嬓嬐嬖嬨嬚嬠嬞寯嶬嶱嶩嶧嶵嶰嶮嶪嶨������嶲嶭嶯嶴幧幨幦幯廩廧廦廨廥彋徼憝憨憖懅憴懆懁懌憺憿憸������������������憌擗擖擐擏擉撽撉擃擛擳擙攳敿敼斢曈暾曀曊曋曏暽暻暺曌朣樴橦橉橧樲橨樾橝橭橶橛橑樨橚樻樿橁橪橤橐橏橔橯橩橠樼橞橖橕橍橎橆歕歔歖殧殪殫毈毇氄氃氆澭濋澣濇澼濎濈潞濄澽澞濊澨瀄澥澮澺澬澪濏澿澸澢濉澫濍澯澲�澰燅燂熿熸燖燀燁燋燔燊燇燏���".split(""); +for(j = 0; j != D[204].length; ++j) if(D[204][j].charCodeAt(0) !== 0xFFFD) { e[D[204][j]] = 52224 + j; d[52224 + j] = D[204][j];} +D[205] = "������������������������������������������������熽燘熼燆燚燛犝犞獩獦�������獧獬獥獫獪瑿璚璠璔璒璕璡甋疀瘯瘭瘱瘽瘳瘼瘵瘲瘰皻盦瞚������瞝瞡瞜瞛瞢瞣瞕瞙瞗磝磩磥磪磞磣磛磡磢磭磟磠禤穄穈穇窶������������������窸窵窱窷篞篣篧篝篕篥篚篨篹篔篪篢篜篫篘篟糒糔糗糐糑縒縡縗縌縟縠縓縎縜縕縚縢縋縏縖縍縔縥縤罃罻罼罺羱翯耪耩聬膱膦膮膹膵膫膰膬膴膲膷膧臲艕艖艗蕖蕅蕫蕍蕓蕡蕘蕀蕆蕤蕁蕢蕄蕑蕇蕣蔾蕛蕱蕎蕮蕵蕕蕧蕠薌蕦蕝蕔�蕥蕬虣虥虤螛螏螗螓螒螈螁螖���".split(""); +for(j = 0; j != D[205].length; ++j) if(D[205][j].charCodeAt(0) !== 0xFFFD) { e[D[205][j]] = 52480 + j; d[52480 + j] = D[205][j];} +D[206] = "������������������������������������������������螘蝹螇螣螅螐螑螝螄螔�������螜螚螉褞褦褰褭褮褧褱褢褩褣褯褬褟觱諠諢諲諴諵諝謔諤諟������諰諈諞諡諨諿諯諻貑貒貐賵賮賱賰賳赬赮趥趧踳踾踸蹀蹅踶������������������踼踽蹁踰踿躽輶輮輵輲輹輷輴遶遹遻邆郺鄳鄵鄶醓醐醑醍醏錧錞錈錟錆錏鍺錸錼錛錣錒錁鍆錭錎錍鋋錝鋺錥錓鋹鋷錴錂錤鋿錩錹錵錪錔錌錋鋾錉錀鋻錖閼闍閾閹閺閶閿閵閽隩雔霋霒霐鞙鞗鞔韰韸頵頯頲餤餟餧餩馞駮駬駥駤駰�駣駪駩駧骹骿骴骻髶髺髹髷鬳���".split(""); +for(j = 0; j != D[206].length; ++j) if(D[206][j].charCodeAt(0) !== 0xFFFD) { e[D[206][j]] = 52736 + j; d[52736 + j] = D[206][j];} +D[207] = "������������������������������������������������鮀鮅鮇魼魾魻鮂鮓鮒鮐�������魺鮕魽鮈鴥鴗鴠鴞鴔鴩鴝鴘鴢鴐鴙鴟麈麆麇麮麭黕黖黺鼒鼽������儦儥儢儤儠儩勴嚓嚌嚍嚆嚄嚃噾嚂噿嚁壖壔壏壒嬭嬥嬲嬣嬬������������������嬧嬦嬯嬮孻寱寲嶷幬幪徾徻懃憵憼懧懠懥懤懨懞擯擩擣擫擤擨斁斀斶旚曒檍檖檁檥檉檟檛檡檞檇檓檎檕檃檨檤檑橿檦檚檅檌檒歛殭氉濌澩濴濔濣濜濭濧濦濞濲濝濢濨燡燱燨燲燤燰燢獳獮獯璗璲璫璐璪璭璱璥璯甐甑甒甏疄癃癈�癉癇皤盩瞵瞫瞲瞷瞶瞴瞱瞨矰���".split(""); +for(j = 0; j != D[207].length; ++j) if(D[207][j].charCodeAt(0) !== 0xFFFD) { e[D[207][j]] = 52992 + j; d[52992 + j] = D[207][j];} +D[208] = "������������������������������������������������磳磽礂磻磼磲礅磹磾礄�������禫禨穜穛穖穘穔穚窾竀竁簅簏篲簀篿篻簎篴簋篳簂簉簃簁篸������篽簆篰篱簐簊糨縭縼繂縳顈縸縪繉繀繇縩繌縰縻縶繄縺罅罿������������������罾罽翴翲耬膻臄臌臊臅臇膼臩艛艚艜薃薀薏薧薕薠薋薣蕻薤薚薞蕷蕼薉薡蕺蕸蕗薎薖薆薍薙薝薁薢薂薈薅蕹蕶薘薐薟虨螾螪螭蟅螰螬螹螵螼螮蟉蟃蟂蟌螷螯蟄蟊螴螶螿螸螽蟞螲褵褳褼褾襁襒褷襂覭覯覮觲觳謞謘謖謑謅謋謢謏�謒謕謇謍謈謆謜謓謚豏豰豲豱���".split(""); +for(j = 0; j != D[208].length; ++j) if(D[208][j].charCodeAt(0) !== 0xFFFD) { e[D[208][j]] = 53248 + j; d[53248 + j] = D[208][j];} +D[209] = "������������������������������������������������豯貕貔賹赯蹎蹍蹓蹐蹌�������蹇轃轀邅遾鄸醚醢醛醙醟醡醝醠鎡鎃鎯鍤鍖鍇鍼鍘鍜鍶鍉鍐������鍑鍠鍭鎏鍌鍪鍹鍗鍕鍒鍏鍱鍷鍻鍡鍞鍣鍧鎀鍎鍙闇闀闉闃闅������������������閷隮隰隬霠霟霘霝霙鞚鞡鞜鞞鞝韕韔韱顁顄顊顉顅顃餥餫餬餪餳餲餯餭餱餰馘馣馡騂駺駴駷駹駸駶駻駽駾駼騃骾髾髽鬁髼魈鮚鮨鮞鮛鮦鮡鮥鮤鮆鮢鮠鮯鴳鵁鵧鴶鴮鴯鴱鴸鴰鵅鵂鵃鴾鴷鵀鴽翵鴭麊麉麍麰黈黚黻黿鼤鼣鼢齔龠儱�儭儮嚘嚜嚗嚚嚝嚙奰嬼屩屪巀���".split(""); +for(j = 0; j != D[209].length; ++j) if(D[209][j].charCodeAt(0) !== 0xFFFD) { e[D[209][j]] = 53504 + j; d[53504 + j] = D[209][j];} +D[210] = "������������������������������������������������幭幮懘懟懭懮懱懪懰懫�������懖懩擿攄擽擸攁攃擼斔旛曚曛曘櫅檹檽櫡櫆檺檶檷櫇檴檭歞������毉氋瀇瀌瀍瀁瀅瀔瀎濿瀀濻瀦濼濷瀊爁燿燹爃燽獶璸瓀璵瓁������������������璾璶璻瓂甔甓癜癤癙癐癓癗癚皦皽盬矂瞺磿礌礓礔礉礐礒礑禭禬穟簜簩簙簠簟簭簝簦簨簢簥簰繜繐繖繣繘繢繟繑繠繗繓羵羳翷翸聵臑臒臐艟艞薴藆藀藃藂薳薵薽藇藄薿藋藎藈藅薱薶藒蘤薸薷薾虩蟧蟦蟢蟛蟫蟪蟥蟟蟳蟤蟔蟜蟓�蟭蟘蟣螤蟗蟙蠁蟴蟨蟝襓襋襏���".split(""); +for(j = 0; j != D[210].length; ++j) if(D[210][j].charCodeAt(0) !== 0xFFFD) { e[D[210][j]] = 53760 + j; d[53760 + j] = D[210][j];} +D[211] = "������������������������������������������������襌襆襐襑襉謪謧謣謳謰�������謵譇謯謼謾謱謥謷謦謶謮謤謻謽謺豂豵貙貘貗賾贄贂贀蹜蹢������蹠蹗蹖蹞蹥蹧蹛蹚蹡蹝蹩蹔轆轇轈轋鄨鄺鄻鄾醨醥醧醯醪鎵������������������鎌鎒鎷鎛鎝鎉鎧鎎鎪鎞鎦鎕鎈鎙鎟鎍鎱鎑鎲鎤鎨鎴鎣鎥闒闓闑隳雗雚巂雟雘雝霣霢霥鞬鞮鞨鞫鞤鞪鞢鞥韗韙韖韘韺顐顑顒颸饁餼餺騏騋騉騍騄騑騊騅騇騆髀髜鬈鬄鬅鬩鬵魊魌魋鯇鯆鯃鮿鯁鮵鮸鯓鮶鯄鮹鮽鵜鵓鵏鵊鵛鵋鵙鵖鵌�鵗鵒鵔鵟鵘鵚麎麌黟鼁鼀鼖鼥���".split(""); +for(j = 0; j != D[211].length; ++j) if(D[211][j].charCodeAt(0) !== 0xFFFD) { e[D[211][j]] = 54016 + j; d[54016 + j] = D[211][j];} +D[212] = "������������������������������������������������鼫鼪鼩鼨齌齕儴儵劖勷�������厴嚫嚭嚦嚧嚪嚬壚壝壛夒嬽嬾嬿巃幰徿懻攇攐攍攉攌攎斄旞������旝曞櫧櫠櫌櫑櫙櫋櫟櫜櫐櫫櫏櫍櫞歠殰氌瀙瀧瀠瀖瀫瀡瀢瀣������������������瀩瀗瀤瀜瀪爌爊爇爂爅犥犦犤犣犡瓋瓅璷瓃甖癠矉矊矄矱礝礛礡礜礗礞禰穧穨簳簼簹簬簻糬糪繶繵繸繰繷繯繺繲繴繨罋罊羃羆羷翽翾聸臗臕艤艡艣藫藱藭藙藡藨藚藗藬藲藸藘藟藣藜藑藰藦藯藞藢蠀蟺蠃蟶蟷蠉蠌蠋蠆蟼蠈蟿蠊�蠂襢襚襛襗襡襜襘襝襙覈覷覶���".split(""); +for(j = 0; j != D[212].length; ++j) if(D[212][j].charCodeAt(0) !== 0xFFFD) { e[D[212][j]] = 54272 + j; d[54272 + j] = D[212][j];} +D[213] = "������������������������������������������������觶譐譈譊譀譓譖譔譋譕�������譑譂譒譗豃豷豶貚贆贇贉趬趪趭趫蹭蹸蹳蹪蹯蹻軂轒轑轏轐������轓辴酀鄿醰醭鏞鏇鏏鏂鏚鏐鏹鏬鏌鏙鎩鏦鏊鏔鏮鏣鏕鏄鏎鏀������������������鏒鏧镽闚闛雡霩霫霬霨霦鞳鞷鞶韝韞韟顜顙顝顗颿颽颻颾饈饇饃馦馧騚騕騥騝騤騛騢騠騧騣騞騜騔髂鬋鬊鬎鬌鬷鯪鯫鯠鯞鯤鯦鯢鯰鯔鯗鯬鯜鯙鯥鯕鯡鯚鵷鶁鶊鶄鶈鵱鶀鵸鶆鶋鶌鵽鵫鵴鵵鵰鵩鶅鵳鵻鶂鵯鵹鵿鶇鵨麔麑黀黼鼭齀�齁齍齖齗齘匷嚲嚵嚳壣孅巆巇���".split(""); +for(j = 0; j != D[213].length; ++j) if(D[213][j].charCodeAt(0) !== 0xFFFD) { e[D[213][j]] = 54528 + j; d[54528 + j] = D[213][j];} +D[214] = "������������������������������������������������廮廯忀忁懹攗攖攕攓旟�������曨曣曤櫳櫰櫪櫨櫹櫱櫮櫯瀼瀵瀯瀷瀴瀱灂瀸瀿瀺瀹灀瀻瀳灁������爓爔犨獽獼璺皫皪皾盭矌矎矏矍矲礥礣礧礨礤礩禲穮穬穭竷������������������籉籈籊籇籅糮繻繾纁纀羺翿聹臛臙舋艨艩蘢藿蘁藾蘛蘀藶蘄蘉蘅蘌藽蠙蠐蠑蠗蠓蠖襣襦覹觷譠譪譝譨譣譥譧譭趮躆躈躄轙轖轗轕轘轚邍酃酁醷醵醲醳鐋鐓鏻鐠鐏鐔鏾鐕鐐鐨鐙鐍鏵鐀鏷鐇鐎鐖鐒鏺鐉鏸鐊鏿鏼鐌鏶鐑鐆闞闠闟霮�霯鞹鞻韽韾顠顢顣顟飁飂饐饎���".split(""); +for(j = 0; j != D[214].length; ++j) if(D[214][j].charCodeAt(0) !== 0xFFFD) { e[D[214][j]] = 54784 + j; d[54784 + j] = D[214][j];} +D[215] = "������������������������������������������������饙饌饋饓騲騴騱騬騪騶�������騩騮騸騭髇髊髆鬐鬒鬑鰋鰈鯷鰅鰒鯸鱀鰇鰎鰆鰗鰔鰉鶟鶙鶤������鶝鶒鶘鶐鶛鶠鶔鶜鶪鶗鶡鶚鶢鶨鶞鶣鶿鶩鶖鶦鶧麙麛麚黥黤������������������黧黦鼰鼮齛齠齞齝齙龑儺儹劘劗囃嚽嚾孈孇巋巏廱懽攛欂櫼欃櫸欀灃灄灊灈灉灅灆爝爚爙獾甗癪矐礭礱礯籔籓糲纊纇纈纋纆纍罍羻耰臝蘘蘪蘦蘟蘣蘜蘙蘧蘮蘡蘠蘩蘞蘥蠩蠝蠛蠠蠤蠜蠫衊襭襩襮襫觺譹譸譅譺譻贐贔趯躎躌轞轛�轝酆酄酅醹鐿鐻鐶鐩鐽鐼鐰鐹���".split(""); +for(j = 0; j != D[215].length; ++j) if(D[215][j].charCodeAt(0) !== 0xFFFD) { e[D[215][j]] = 55040 + j; d[55040 + j] = D[215][j];} +D[216] = "������������������������������������������������鐪鐷鐬鑀鐱闥闤闣霵霺�������鞿韡顤飉飆飀饘饖騹騽驆驄驂驁騺騿髍鬕鬗鬘鬖鬺魒鰫鰝鰜������鰬鰣鰨鰩鰤鰡鶷鶶鶼鷁鷇鷊鷏鶾鷅鷃鶻鶵鷎鶹鶺鶬鷈鶱鶭鷌������������������鶳鷍鶲鹺麜黫黮黭鼛鼘鼚鼱齎齥齤龒亹囆囅囋奱孋孌巕巑廲攡攠攦攢欋欈欉氍灕灖灗灒爞爟犩獿瓘瓕瓙瓗癭皭礵禴穰穱籗籜籙籛籚糴糱纑罏羇臞艫蘴蘵蘳蘬蘲蘶蠬蠨蠦蠪蠥襱覿覾觻譾讄讂讆讅譿贕躕躔躚躒躐躖躗轠轢酇鑌鑐�鑊鑋鑏鑇鑅鑈鑉鑆霿韣顪顩飋���".split(""); +for(j = 0; j != D[216].length; ++j) if(D[216][j].charCodeAt(0) !== 0xFFFD) { e[D[216][j]] = 55296 + j; d[55296 + j] = D[216][j];} +D[217] = "������������������������������������������������饔饛驎驓驔驌驏驈驊驉�������驒驐髐鬙鬫鬻魖魕鱆鱈鰿鱄鰹鰳鱁鰼鰷鰴鰲鰽鰶鷛鷒鷞鷚鷋������鷐鷜鷑鷟鷩鷙鷘鷖鷵鷕鷝麶黰鼵鼳鼲齂齫龕龢儽劙壨壧奲孍������������������巘蠯彏戁戃戄攩攥斖曫欑欒欏毊灛灚爢玂玁玃癰矔籧籦纕艬蘺虀蘹蘼蘱蘻蘾蠰蠲蠮蠳襶襴襳觾讌讎讋讈豅贙躘轤轣醼鑢鑕鑝鑗鑞韄韅頀驖驙鬞鬟鬠鱒鱘鱐鱊鱍鱋鱕鱙鱌鱎鷻鷷鷯鷣鷫鷸鷤鷶鷡鷮鷦鷲鷰鷢鷬鷴鷳鷨鷭黂黐黲黳鼆�鼜鼸鼷鼶齃齏齱齰齮齯囓囍孎���".split(""); +for(j = 0; j != D[217].length; ++j) if(D[217][j].charCodeAt(0) !== 0xFFFD) { e[D[217][j]] = 55552 + j; d[55552 + j] = D[217][j];} +D[218] = "������������������������������������������������屭攭曭曮欓灟灡灝灠爣�������瓛瓥矕礸禷禶籪纗羉艭虃蠸蠷蠵衋讔讕躞躟躠躝醾醽釂鑫鑨������鑩雥靆靃靇韇韥驞髕魙鱣鱧鱦鱢鱞鱠鸂鷾鸇鸃鸆鸅鸀鸁鸉鷿������������������鷽鸄麠鼞齆齴齵齶囔攮斸欘欙欗欚灢爦犪矘矙礹籩籫糶纚纘纛纙臠臡虆虇虈襹襺襼襻觿讘讙躥躤躣鑮鑭鑯鑱鑳靉顲饟鱨鱮鱭鸋鸍鸐鸏鸒鸑麡黵鼉齇齸齻齺齹圞灦籯蠼趲躦釃鑴鑸鑶鑵驠鱴鱳鱱鱵鸔鸓黶鼊龤灨灥糷虪蠾蠽蠿讞貜�躩軉靋顳顴飌饡馫驤驦驧鬤鸕���".split(""); +for(j = 0; j != D[218].length; ++j) if(D[218][j].charCodeAt(0) !== 0xFFFD) { e[D[218][j]] = 55808 + j; d[55808 + j] = D[218][j];} +D[219] = "������������������������������������������������鸗齈戇欞爧虌躨钂钀钁�������驩驨鬮鸙爩虋讟钃鱹麷癵驫鱺鸝灩灪麤齾齉龘����������������������������".split(""); +for(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];} +D[220] = "�����������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];} +D[221] = "�����������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[221].length; ++j) if(D[221][j].charCodeAt(0) !== 0xFFFD) { e[D[221][j]] = 56576 + j; d[56576 + j] = D[221][j];} +D[222] = "�����������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[222].length; ++j) if(D[222][j].charCodeAt(0) !== 0xFFFD) { e[D[222][j]] = 56832 + j; d[56832 + j] = D[222][j];} +D[223] = "�����������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];} +D[224] = "�����������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];} +D[225] = "�����������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];} +D[226] = "�����������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];} +D[227] = "�����������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];} +D[228] = "�����������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];} +D[229] = "�����������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];} +D[230] = "�����������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];} +D[231] = "�����������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];} +D[232] = "�����������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];} +D[233] = "�����������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[233].length; ++j) if(D[233][j].charCodeAt(0) !== 0xFFFD) { e[D[233][j]] = 59648 + j; d[59648 + j] = D[233][j];} +D[234] = "�����������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];} +D[235] = "�����������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[235].length; ++j) if(D[235][j].charCodeAt(0) !== 0xFFFD) { e[D[235][j]] = 60160 + j; d[60160 + j] = D[235][j];} +D[236] = "�����������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[236].length; ++j) if(D[236][j].charCodeAt(0) !== 0xFFFD) { e[D[236][j]] = 60416 + j; d[60416 + j] = D[236][j];} +D[237] = "�����������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[237].length; ++j) if(D[237][j].charCodeAt(0) !== 0xFFFD) { e[D[237][j]] = 60672 + j; d[60672 + j] = D[237][j];} +D[238] = "�����������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[238].length; ++j) if(D[238][j].charCodeAt(0) !== 0xFFFD) { e[D[238][j]] = 60928 + j; d[60928 + j] = D[238][j];} +D[239] = "�����������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];} +D[240] = "�����������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[240].length; ++j) if(D[240][j].charCodeAt(0) !== 0xFFFD) { e[D[240][j]] = 61440 + j; d[61440 + j] = D[240][j];} +D[241] = "�����������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[241].length; ++j) if(D[241][j].charCodeAt(0) !== 0xFFFD) { e[D[241][j]] = 61696 + j; d[61696 + j] = D[241][j];} +D[242] = "�����������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[242].length; ++j) if(D[242][j].charCodeAt(0) !== 0xFFFD) { e[D[242][j]] = 61952 + j; d[61952 + j] = D[242][j];} +D[243] = "�����������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[243].length; ++j) if(D[243][j].charCodeAt(0) !== 0xFFFD) { e[D[243][j]] = 62208 + j; d[62208 + j] = D[243][j];} +D[244] = "�����������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[244].length; ++j) if(D[244][j].charCodeAt(0) !== 0xFFFD) { e[D[244][j]] = 62464 + j; d[62464 + j] = D[244][j];} +D[245] = "������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[245].length; ++j) if(D[245][j].charCodeAt(0) !== 0xFFFD) { e[D[245][j]] = 62720 + j; d[62720 + j] = D[245][j];} +D[249] = "��������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[249].length; ++j) if(D[249][j].charCodeAt(0) !== 0xFFFD) { e[D[249][j]] = 63744 + j; d[63744 + j] = D[249][j];} +D[250] = "�����������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[250].length; ++j) if(D[250][j].charCodeAt(0) !== 0xFFFD) { e[D[250][j]] = 64000 + j; d[64000 + j] = D[250][j];} +D[251] = "�����������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[251].length; ++j) if(D[251][j].charCodeAt(0) !== 0xFFFD) { e[D[251][j]] = 64256 + j; d[64256 + j] = D[251][j];} +D[252] = "������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[252].length; ++j) if(D[252][j].charCodeAt(0) !== 0xFFFD) { e[D[252][j]] = 64512 + j; d[64512 + j] = D[252][j];} +return {"enc": e, "dec": d }; })(); +cptable[20105] = (function(){ var d = "��\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#¤%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}‾∇��������������������������������������������������������������������������������������������������������������������������������", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +cptable[20106] = (function(){ var d = "��\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?§ABCDEFGHIJKLMNOPQRSTUVWXYZÄÖÜ^_`abcdefghijklmnopqrstuvwxyzäöüß��������������������������������������������������������������������������������������������������������������������������������", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +cptable[20107] = (function(){ var d = "��\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#¤%&'()*+,-./0123456789:;<=>?ÉABCDEFGHIJKLMNOPQRSTUVWXYZÄÖÅÜ_éabcdefghijklmnopqrstuvwxyzäöåü��������������������������������������������������������������������������������������������������������������������������������", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +cptable[20108] = (function(){ var d = "��\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"§$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZÆØÅ^_`abcdefghijklmnopqrstuvwxyzæøå|��������������������������������������������������������������������������������������������������������������������������������", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +cptable[20261] = (function(){ var d = [], e = {}, D = [], j; +D[0] = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"��%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]_abcdefghijklmnopqrstuvwxyz|€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ¡¢£$¥#§¤«°±²³×µ¶·÷»¼½¾¿���������������ΩÆЪĦIJĿŁØŒºÞŦŊʼnĸæđðħıijŀłøœßþŧŋ".split(""); +for(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];} +D[193] = "��������������������������������`��������������������������������À���È���Ì�����Ò�����Ù�Ẁ�Ỳ�������à���è���ì�����ò�����ù�ẁ�ỳ��������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[193].length; ++j) if(D[193][j].charCodeAt(0) !== 0xFFFD) { e[D[193][j]] = 49408 + j; d[49408 + j] = D[193][j];} +D[194] = "��������������������������������´��������������������������������Á�Ć�É�Ǵ�Í�ḰĹḾŃÓṔ�ŔŚ�Ú�Ẃ�ÝŹ������á�ć�é�ǵ�í�ḱĺḿńóṕ�ŕś�ú�ẃ�ýź�������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[194].length; ++j) if(D[194][j].charCodeAt(0) !== 0xFFFD) { e[D[194][j]] = 49664 + j; d[49664 + j] = D[194][j];} +D[195] = "��������������������������������^��������������������������������Â�Ĉ�Ê�ĜĤÎĴ����Ô���Ŝ�Û�Ŵ�ŶẐ������â�ĉ�ê�ĝĥîĵ����ô���ŝ�û�ŵ�ŷẑ�������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[195].length; ++j) if(D[195][j].charCodeAt(0) !== 0xFFFD) { e[D[195][j]] = 49920 + j; d[49920 + j] = D[195][j];} +D[196] = "��������������������������������~��������������������������������Ã���Ẽ���Ĩ����ÑÕ�����ŨṼ��Ỹ�������ã���ẽ���ĩ����ñõ�����ũṽ��ỹ��������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[196].length; ++j) if(D[196][j].charCodeAt(0) !== 0xFFFD) { e[D[196][j]] = 50176 + j; d[50176 + j] = D[196][j];} +D[197] = "��������������������������������¯��������������������������������Ā���Ē�Ḡ�Ī�����Ō�����Ū�����������ā���ē�ḡ�ī�����ō�����ū�����������������������������������������������������������������������������������������������������������Ǣ���������������ǣ��������������".split(""); +for(j = 0; j != D[197].length; ++j) if(D[197][j].charCodeAt(0) !== 0xFFFD) { e[D[197][j]] = 50432 + j; d[50432 + j] = D[197][j];} +D[198] = "��������������������������������˘��������������������������������Ă���Ĕ�Ğ�Ĭ�����Ŏ�����Ŭ�����������ă���ĕ�ğ�ĭ�����ŏ�����ŭ������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[198].length; ++j) if(D[198][j].charCodeAt(0) !== 0xFFFD) { e[D[198][j]] = 50688 + j; d[50688 + j] = D[198][j];} +D[199] = "��������������������������������˙���������������������������������ḂĊḊĖḞĠḢİ���ṀṄ�Ṗ�ṘṠṪ��ẆẊẎŻ�������ḃċḋėḟġḣ����ṁṅ�ṗ�ṙṡṫ��ẇẋẏż�������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[199].length; ++j) if(D[199][j].charCodeAt(0) !== 0xFFFD) { e[D[199][j]] = 50944 + j; d[50944 + j] = D[199][j];} +D[200] = "��������������������������������¨��������������������������������Ä���Ë��ḦÏ�����Ö�����Ü�ẄẌŸ�������ä���ë��ḧï�����ö����ẗü�ẅẍÿ��������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[200].length; ++j) if(D[200][j].charCodeAt(0) !== 0xFFFD) { e[D[200][j]] = 51200 + j; d[51200 + j] = D[200][j];} +D[202] = "��������������������������������˚��������������������������������Å�������������������Ů�����������å�������������������ů�ẘ�ẙ��������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[202].length; ++j) if(D[202][j].charCodeAt(0) !== 0xFFFD) { e[D[202][j]] = 51712 + j; d[51712 + j] = D[202][j];} +D[203] = "��������������������������������¸����������������������������������ÇḐ��ĢḨ��ĶĻ�Ņ���ŖŞŢ��������������çḑ��ģḩ��ķļ�ņ���ŗşţ�������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[203].length; ++j) if(D[203][j].charCodeAt(0) !== 0xFFFD) { e[D[203][j]] = 51968 + j; d[51968 + j] = D[203][j];} +D[205] = "��������������������������������˝����������������������������������������������Ő�����Ű�������������������������ő�����ű������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[205].length; ++j) if(D[205][j].charCodeAt(0) !== 0xFFFD) { e[D[205][j]] = 52480 + j; d[52480 + j] = D[205][j];} +D[206] = "��������������������������������˛��������������������������������Ą���Ę���Į�����Ǫ�����Ų�����������ą���ę���į�����ǫ�����ų������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[206].length; ++j) if(D[206][j].charCodeAt(0) !== 0xFFFD) { e[D[206][j]] = 52736 + j; d[52736 + j] = D[206][j];} +D[207] = "��������������������������������ˇ��������������������������������Ǎ�ČĎĚ�Ǧ�Ǐ�ǨĽ�ŇǑ��ŘŠŤǓ����Ž������ǎ�čďě�ǧ�ǐǰǩľ�ňǒ��řšťǔ����ž�������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[207].length; ++j) if(D[207][j].charCodeAt(0) !== 0xFFFD) { e[D[207][j]] = 52992 + j; d[52992 + j] = D[207][j];} +return {"enc": e, "dec": d }; })(); +cptable[20269] = (function(){ var d = "\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"��%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]�_�abcdefghijklmnopqrstuvwxyz{|}�€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œ�� ¡¢£$¥#§¤‘“«←↑→↓°±²³×µ¶·÷’”»¼½¿�`´^~¯̆̈�̧̨̲̊̋̌―¹®©™♩��⅛⅜⅝⅞ΩÆÐĦ�IJĿŁØŒºÞŦŊʼnĸæđðħıijŀłøœßþŧ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +cptable[20273] = (function(){ var d = "ŸŸ\u0002\u0003œ\t†—Ž\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013…\b‡\u0018\u0019’\u001c\u001d\u001e\u001f€‚ƒ„\n\u0017\u001bˆ‰Š‹Œ\u0005\u0006\u0007‘\u0016“”•–\u0004˜™š›\u0014\u0015ž\u001a  â{àáãåçñÄ.<(+!&éêëèíîïì~Ü$*);^-/Â[ÀÁÃÅÇÑö,%_>?øÉÊËÈÍÎÏÌ`:#§'=\"Øabcdefghi«»ðýþ±°jklmnopqrªºæ¸Æ¤µßstuvwxyz¡¿ÐÝÞ®¢£¥·©@¶¼½¾¬|¯¨´×äABCDEFGHI­ô¦òóõüJKLMNOPQR¹û}ùúÿÖ÷STUVWXYZ²Ô\\ÒÓÕ0123456789³Û]Ùڟ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +cptable[20277] = (function(){ var d = "ŸŸ\u0002\u0003œ\t†—Ž\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013…\b‡\u0018\u0019’\u001c\u001d\u001e\u001f€‚ƒ„\n\u0017\u001bˆ‰Š‹Œ\u0005\u0006\u0007‘\u0016“”•–\u0004˜™š›\u0014\u0015ž\u001a  âäàáã}çñ#.<(+!&éêëèíîïìߤÅ*);^-/ÂÄÀÁÃ$ÇÑø,%_>?¦ÉÊËÈÍÎÏÌ`:ÆØ'=\"@abcdefghi«»ðýþ±°jklmnopqrªº{¸[]µüstuvwxyz¡¿ÐÝÞ®¢£¥·©§¶¼½¾¬|¯¨´×æABCDEFGHI­ôöòóõåJKLMNOPQR¹û~ùúÿ\\÷STUVWXYZ²ÔÖÒÓÕ0123456789³ÛÜÙڟ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +cptable[20278] = (function(){ var d = "ŸŸ\u0002\u0003œ\t†—Ž\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013…\b‡\u0018\u0019’\u001c\u001d\u001e\u001f€‚ƒ„\n\u0017\u001bˆ‰Š‹Œ\u0005\u0006\u0007‘\u0016“”•–\u0004˜™š›\u0014\u0015ž\u001a  â{àáã}çñ§.<(+!&`êëèíîïìߤÅ*);^-/Â#ÀÁÃ$ÇÑö,%_>?ø\\ÊËÈÍÎÏÌé:ÄÖ'=\"Øabcdefghi«»ðýþ±°jklmnopqrªºæ¸Æ]µüstuvwxyz¡¿ÐÝÞ®¢£¥·©[¶¼½¾¬|¯¨´×äABCDEFGHI­ô¦òóõåJKLMNOPQR¹û~ùúÿÉ÷STUVWXYZ²Ô@ÒÓÕ0123456789³ÛÜÙڟ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +cptable[20280] = (function(){ var d = "ŸŸ\u0002\u0003œ\t†—Ž\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013…\b‡\u0018\u0019’\u001c\u001d\u001e\u001f€‚ƒ„\n\u0017\u001bˆ‰Š‹Œ\u0005\u0006\u0007‘\u0016“”•–\u0004˜™š›\u0014\u0015ž\u001a  âä{áãå\\ñ°.<(+!&]êë}íîï~ßé$*);^-/ÂÄÀÁÃÅÇÑò,%_>?øÉÊËÈÍÎÏÌù:£§'=\"Øabcdefghi«»ðýþ±[jklmnopqrªºæ¸Æ¤µìstuvwxyz¡¿ÐÝÞ®¢#¥·©@¶¼½¾¬|¯¨´×àABCDEFGHI­ôö¦óõèJKLMNOPQR¹ûü`úÿç÷STUVWXYZ²ÔÖÒÓÕ0123456789³ÛÜÙڟ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +cptable[20284] = (function(){ var d = "ŸŸ\u0002\u0003œ\t†—Ž\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013…\b‡\u0018\u0019’\u001c\u001d\u001e\u001f€‚ƒ„\n\u0017\u001bˆ‰Š‹Œ\u0005\u0006\u0007‘\u0016“”•–\u0004˜™š›\u0014\u0015ž\u001a  âäàáãåç¦[.<(+|&éêëèíîïìß]$*);¬-/ÂÄÀÁÃÅÇ#ñ,%_>?øÉÊËÈÍÎÏÌ`:Ñ@'=\"Øabcdefghi«»ðýþ±°jklmnopqrªºæ¸Æ¤µ¨stuvwxyz¡¿ÐÝÞ®¢£¥·©§¶¼½¾^!¯~´×{ABCDEFGHI­ôöòóõ}JKLMNOPQR¹ûüùúÿ\\÷STUVWXYZ²ÔÖÒÓÕ0123456789³ÛÜÙڟ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +cptable[20285] = (function(){ var d = "ŸŸ\u0002\u0003œ\t†—Ž\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013…\b‡\u0018\u0019’\u001c\u001d\u001e\u001f€‚ƒ„\n\u0017\u001bˆ‰Š‹Œ\u0005\u0006\u0007‘\u0016“”•–\u0004˜™š›\u0014\u0015ž\u001a  âäàáãåçñ$.<(+|&éêëèíîïìß!£*);¬-/ÂÄÀÁÃÅÇѦ,%_>?øÉÊËÈÍÎÏÌ`:#@'=\"Øabcdefghi«»ðýþ±°jklmnopqrªºæ¸Æ¤µ¯stuvwxyz¡¿ÐÝÞ®¢[¥·©§¶¼½¾^]~¨´×{ABCDEFGHI­ôöòóõ}JKLMNOPQR¹ûüùúÿ\\÷STUVWXYZ²ÔÖÒÓÕ0123456789³ÛÜÙڟ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +cptable[20290] = (function(){ var d = "ŸŸ\u0002\u0003œ\t†—Ž\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013…\b‡\u0018\u0019’\u001c\u001d\u001e\u001f€‚ƒ„\n\u0017\u001bˆ‰Š‹Œ\u0005\u0006\u0007‘\u0016“”•–\u0004˜™š›\u0014\u0015ž\u001a 。「」、・ヲァィゥ£.<(+|&ェォャュョッ�ー�!¥*);¬-/abcdefgh�,%_>?[ijklmnop`:#@'=\"]アイウエオカキクケコqサシスセソタチツテトナニヌネノr�ハヒフ~‾ヘホマミムメモヤユsヨラリル^¢\\tuvwxyzレロワン゙゚{ABCDEFGHI������}JKLMNOPQR������$�STUVWXYZ������0123456789�����Ÿ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +cptable[20297] = (function(){ var d = "ŸŸ\u0002\u0003œ\t†—Ž\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013…\b‡\u0018\u0019’\u001c\u001d\u001e\u001f€‚ƒ„\n\u0017\u001bˆ‰Š‹Œ\u0005\u0006\u0007‘\u0016“”•–\u0004˜™š›\u0014\u0015ž\u001a  âä@áãå\\ñ°.<(+!&{êë}íîïìߧ$*);^-/ÂÄÀÁÃÅÇÑù,%_>?øÉÊËÈÍÎÏ̵:£à'=\"Øabcdefghi«»ðýþ±[jklmnopqrªºæ¸Æ¤`¨stuvwxyz¡¿ÐÝÞ®¢#¥·©]¶¼½¾¬|¯~´×éABCDEFGHI­ôöòóõèJKLMNOPQR¹ûü¦úÿç÷STUVWXYZ²ÔÖÒÓÕ0123456789³ÛÜÙڟ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +cptable[20420] = (function(){ var d = "ŸŸ\u0002\u0003œ\t†—Ž\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013…\b‡\u0018\u0019’\u001c\u001d\u001e\u001f€‚ƒ„\n\u0017\u001bˆ‰Š‹Œ\u0005\u0006\u0007‘\u0016“”•–\u0004˜™š›\u0014\u0015ž\u001a  ﹼﹽـﺀﺁﺂﺃ¢.<(+|&ﺄﺅ��ﺋﺍﺎﺏﺑ!$*);¬-/ﺓﺕﺗﺙﺛﺝﺟﺡ¦,%_>?ﺣﺥﺧﺩﺫﺭﺯﺳ،:#@'=\"abcdefghiﺷﺻﺿﻃﻇjklmnopqrﻉﻊﻋﻌﻍﻎﻏ÷stuvwxyzﻐﻑﻓﻕﻗﻙﻛﻝﻵﻶﻷﻸ��ﻻﻼﻟﻡﻣﻥﻧﻩ؛ABCDEFGHI­ﻫ�ﻬ�ﻭ؟JKLMNOPQRﻯﻰﻱﻲﻳ٠× STUVWXYZ١٢�٣٤٥0123456789�٦٧٨٩Ÿ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +cptable[20423] = (function(){ var d = "ŸŸ\u0002\u0003œ\t†—Ž\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013…\b‡\u0018\u0019’\u001c\u001d\u001e\u001f€‚ƒ„\n\u0017\u001bˆ‰Š‹Œ\u0005\u0006\u0007‘\u0016“”•–\u0004˜™š›\u0014\u0015ž\u001a ΑΒΓΔΕΖΗΘΙ[.<(+!&ΚΛΜΝΞΟΠΡΣ]$*);^-/ΤΥΦΧΨΩ��|,%_>?�ΆΈΉ ΊΌΎΏ`:£§'=\"ÄabcdefghiαβγδεζÖjklmnopqrηθικλμܨstuvwxyzνξοπρσ�άέήϊίόύϋώςτυφχψ¸ABCDEFGHI­ωâàäê´JKLMNOPQR±éèëîï°�STUVWXYZ½öôûùü0123456789ÿçÇ��Ÿ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +cptable[20424] = (function(){ var d = "ŸŸ\u0002\u0003œ\t†—Ž\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013…\b‡\u0018\u0019’\u001c\u001d\u001e\u001f€‚ƒ„\n\u0017\u001bˆ‰Š‹Œ\u0005\u0006\u0007‘\u0016“”•–\u0004˜™š›\u0014\u0015ž\u001a אבגדהוזחט¢.<(+|&יךכלםמןנס!$*);¬-/עףפץצקרש¦,%_>?�ת�� ���‗`:#@'=\"�abcdefghi«»���±°jklmnopqr���¸�¤µ~stuvwxyz�����®^£¥•©§¶¼½¾[]‾¨´×{ABCDEFGHI­�����}JKLMNOPQR¹�����\\÷STUVWXYZ²�����0123456789³����Ÿ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +cptable[20833] = (function(){ var d = "ŸŸ\u0002\u0003œ\t†—Ž\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013…\b‡\u0018\u0019’\u001c\u001d\u001e\u001f€‚ƒ„\n\u0017\u001bˆ‰Š‹Œ\u0005\u0006\u0007‘\u0016“”•–\u0004˜™š›\u0014\u0015ž\u001a �ᅠᄀᄁᆪᄂᆬᆭᄃ¢.<(+|&�ᄄᄅᆰᆱᆲᆳᆴᆵ!$*);¬-/ᄚᄆᄇᄈᄡᄉᄊᄋ¦,%_>?[�ᄌᄍᄎᄏᄐᄑᄒ`:#@'=\"]abcdefghiᅡᅢᅣᅤᅥᅦ�jklmnopqrᅧᅨᅩᅪᅫᅬ‾~stuvwxyzᅭᅮᅯᅰᅱᅲ^�\\�������ᅳᅴᅵ���{ABCDEFGHI������}JKLMNOPQR������₩�STUVWXYZ������0123456789�����Ÿ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +cptable[20838] = (function(){ var d = "ŸŸ\u0002\u0003œ\t†—Ž\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013…\b‡\u0018\u0019’\u001c\u001d\u001e\u001f€‚ƒ„\n\u0017\u001bˆ‰Š‹Œ\u0005\u0006\u0007‘\u0016“”•–\u0004˜™š›\u0014\u0015ž\u001a  กขฃคฅฆง[¢.<(+|&�จฉชซฌญฎ]!$*);¬-/ฏฐฑฒณดต^¦,%_>?฿๎ถทธนบปผ`:#@'=\"๏abcdefghiฝพฟภมย๚jklmnopqrรฤลฦวศ๛~stuvwxyzษสหฬอฮ๐๑๒๓๔๕๖๗๘๙ฯะัาำิ{ABCDEFGHI�ีึืุู}JKLMNOPQRฺเแโใไ\\�STUVWXYZๅๆ็่้๊0123456789๋์ํ��Ÿ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +cptable[20866] = (function(){ var d = "ЪЪ\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~─│┌┐└┘├┤┬┴┼▀▄█▌▐░▒▓⌠■∙√≈≤≥ ⌡°²·÷═║╒ё╓╔╕╖╗╘╙╚╛╜╝╞╟╠╡Ё╢╣╤╥╦╧╨╩╪╫╬©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +cptable[20871] = (function(){ var d = "ŸŸ\u0002\u0003œ\t†—Ž\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013…\b‡\u0018\u0019’\u001c\u001d\u001e\u001f€‚ƒ„\n\u0017\u001bˆ‰Š‹Œ\u0005\u0006\u0007‘\u0016“”•–\u0004˜™š›\u0014\u0015ž\u001a  âäàáãåçñÞ.<(+!&éêëèíîïìßÆ$*);Ö-/ÂÄÀÁÃÅÇѦ,%_>?øÉÊËÈÍÎÏÌð:#Ð'=\"Øabcdefghi«»`ý{±°jklmnopqrªº}¸]¤µöstuvwxyz¡¿@Ý[®¢£¥·©§¶¼½¾¬|¯¨\\×þABCDEFGHI­ô~òóõæJKLMNOPQR¹ûüùúÿ´÷STUVWXYZ²Ô^ÒÓÕ0123456789³ÛÜÙڟ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +cptable[20880] = (function(){ var d = "ŸŸ\u0002\u0003œ\t†—Ž\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013…\b‡\u0018\u0019’\u001c\u001d\u001e\u001f€‚ƒ„\n\u0017\u001bˆ‰Š‹Œ\u0005\u0006\u0007‘\u0016“”•–\u0004˜™š›\u0014\u0015ž\u001a  ђѓёєѕіїј[.<(+!&љњћќўџЪ№Ђ]$*);^-/ЃЁЄЅІЇЈЉ|,%_>?ЊЋЌ­ЎЏюаб`:#@'=\"цabcdefghiдефгхийjklmnopqrклмнопя~stuvwxyzрстужвьызшэщчъЮАБЦДЕФГ{ABCDEFGHIХИЙКЛМ}JKLMNOPQRНОПЯРС\\¤STUVWXYZТУЖВЬЫ0123456789ЗШЭЩЧŸ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +cptable[20905] = (function(){ var d = "ŸŸ\u0002\u0003œ\t†—Ž\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013…\b‡\u0018\u0019’\u001c\u001d\u001e\u001f€‚ƒ„\n\u0017\u001bˆ‰Š‹Œ\u0005\u0006\u0007‘\u0016“”•–\u0004˜™š›\u0014\u0015ž\u001a  âäàá�ċ{ñÇ.<(+!&éêëèíîïìßĞİ*);^-/ÂÄÀÁ�Ċ[Ñş,%_>?�ÉÊËÈÍÎÏÌı:ÖŞ'=ܢabcdefghiħĉŝŭ�|°jklmnopqrĥĝĵ¸�¤µöstuvwxyzĦĈŜŬ�@˙£ż}Ż§]·½$ĤĜĴ¨´×çABCDEFGHI­ô~òóġğJKLMNOPQR`û\\ùú�ü÷STUVWXYZ²Ô#ÒÓĠ0123456789³Û\"Ùڟ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +cptable[20924] = (function(){ var d = "ŸŸ\u0002\u0003œ\t†—Ž\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\n\b‡\u0018\u0019’\u001c\u001d\u001e\u001f€‚ƒ„…\u0017\u001bˆ‰Š‹Œ\u0005\u0006\u0007‘\u0016“”•–\u0004˜™š›\u0014\u0015ž\u001a  âäàáãåçñÝ.<(+|&éêëèíîïìß!$*);^-/ÂÄÀÁÃÅÇÑŠ,%_>?øÉÊËÈÍÎÏÌ`:#@'=\"Øabcdefghi«»ðýþ±°jklmnopqrªºæžÆ€µ~stuvwxyz¡¿Ð[Þ®¢£¥·©§¶Œœ�¬š¯]Ž×{ABCDEFGHI­ôöòóõ}JKLMNOPQR¹ûüùúÿ\\÷STUVWXYZ²ÔÖÒÓÕ0123456789³ÛÜÙڟ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +cptable[20932] = (function(){ var d = [], e = {}, D = [], j; +D[0] = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹Œ�‘’“”•–—˜™š›œžŸ����������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];} +D[142] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������。「」、・ヲァィゥェォャュョッーアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワン゙゚��������������������������������".split(""); +for(j = 0; j != D[142].length; ++j) if(D[142][j].charCodeAt(0) !== 0xFFFD) { e[D[142][j]] = 36352 + j; d[36352 + j] = D[142][j];} +D[161] = "����������������������������������������������������������������������������������������������������������������������������������������������������������������� 、。,.・:;?!゛゜´`¨^ ̄_ヽヾゝゞ〃仝々〆〇ー―‐/\〜‖|…‥‘’“”()〔〕[]{}〈〉《》「」『』【】+−±×÷=≠<>≦≧∞∴♂♀°′″℃¥$¢£%#&*@§☆★○●◎◇�".split(""); +for(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];} +D[162] = "�����������������������������������������������˘ˇ¸˙˝¯˛˚�΄΅��������¡¦¿��������������������������������������ºª©®™¤������������������������������������������������◆□■△▲▽▼※〒→←↑↓〓�����������∈∋⊆⊇⊂⊃∪∩��������∧∨¬⇒⇔∀∃�����������∠⊥⌒∂∇≡≒≪≫√∽∝∵∫∬�������ʼn♯♭♪†‡¶����◯�".split(""); +for(j = 0; j != D[162].length; ++j) if(D[162][j].charCodeAt(0) !== 0xFFFD) { e[D[162][j]] = 41472 + j; d[41472 + j] = D[162][j];} +D[163] = "��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������0123456789�������ABCDEFGHIJKLMNOPQRSTUVWXYZ������abcdefghijklmnopqrstuvwxyz�����".split(""); +for(j = 0; j != D[163].length; ++j) if(D[163][j].charCodeAt(0) !== 0xFFFD) { e[D[163][j]] = 41728 + j; d[41728 + j] = D[163][j];} +D[164] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをん������������".split(""); +for(j = 0; j != D[164].length; ++j) if(D[164][j].charCodeAt(0) !== 0xFFFD) { e[D[164][j]] = 41984 + j; d[41984 + j] = D[164][j];} +D[165] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶ���������".split(""); +for(j = 0; j != D[165].length; ++j) if(D[165][j].charCodeAt(0) !== 0xFFFD) { e[D[165][j]] = 42240 + j; d[42240 + j] = D[165][j];} +D[166] = "�������������������������������������������������������������������������������������������������ΆΈΉΊΪ�Ό�ΎΫ�Ώ����άέήίϊΐόςύϋΰώ������������������������������������ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ��������αβγδεζηθικλμνξοπρστυφχψω���������������������������������������".split(""); +for(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];} +D[167] = "������������������������������������������������������������������ЂЃЄЅІЇЈЉЊЋЌЎЏ�����������������������������������ђѓєѕіїјљњћќўџ����������������������������������АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ���������������абвгдеёжзийклмнопрстуфхцчшщъыьэюя��������������".split(""); +for(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];} +D[168] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂���������������������������������������������������������������".split(""); +for(j = 0; j != D[168].length; ++j) if(D[168][j].charCodeAt(0) !== 0xFFFD) { e[D[168][j]] = 43008 + j; d[43008 + j] = D[168][j];} +D[169] = "���������������������������������ÆĐ�Ħ�IJ�ŁĿ�ŊØŒ�ŦÞ����������������æđðħıijĸłŀʼnŋøœßŧþ�������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[169].length; ++j) if(D[169][j].charCodeAt(0) !== 0xFFFD) { e[D[169][j]] = 43264 + j; d[43264 + j] = D[169][j];} +D[170] = "���������������������������������ÁÀÄÂĂǍĀĄÅÃĆĈČÇĊĎÉÈËÊĚĖĒĘ�ĜĞĢĠĤÍÌÏÎǏİĪĮĨĴĶĹĽĻŃŇŅÑÓÒÖÔǑŐŌÕŔŘŖŚŜŠŞŤŢÚÙÜÛŬǓŰŪŲŮŨǗǛǙǕŴÝŸŶŹŽŻ����������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];} +D[171] = "���������������������������������áàäâăǎāąåãćĉčçċďéèëêěėēęǵĝğ�ġĥíìïîǐ�īįĩĵķĺľļńňņñóòöôǒőōõŕřŗśŝšşťţúùüûŭǔűūųůũǘǜǚǖŵýÿŷźžż����������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[171].length; ++j) if(D[171][j].charCodeAt(0) !== 0xFFFD) { e[D[171][j]] = 43776 + j; d[43776 + j] = D[171][j];} +D[173] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯⑰⑱⑲⑳ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩ�㍉㌔㌢㍍㌘㌧㌃㌶㍑㍗㌍㌦㌣㌫㍊㌻㎜㎝㎞㎎㎏㏄㎡��������㍻〞〟№㏍℡㊤㊥㊦㊧㊨㈱㈲㈹㍾㍽㍼���∮∑���∟⊿������".split(""); +for(j = 0; j != D[173].length; ++j) if(D[173][j].charCodeAt(0) !== 0xFFFD) { e[D[173][j]] = 44288 + j; d[44288 + j] = D[173][j];} +D[176] = "���������������������������������丂丄丅丌丒丟丣两丨丫丮丯丰丵乀乁乄乇乑乚乜乣乨乩乴乵乹乿亍亖亗亝亯亹仃仐仚仛仠仡仢仨仯仱仳仵份仾仿伀伂伃伈伋伌伒伕伖众伙伮伱你伳伵伷伹伻伾佀佂佈佉佋佌佒佔佖佘佟佣佪佬佮佱佷佸佹佺佽佾侁侂侄����������������������������������亜唖娃阿哀愛挨姶逢葵茜穐悪握渥旭葦芦鯵梓圧斡扱宛姐虻飴絢綾鮎或粟袷安庵按暗案闇鞍杏以伊位依偉囲夷委威尉惟意慰易椅為畏異移維緯胃萎衣謂違遺医井亥域育郁磯一壱溢逸稲茨芋鰯允印咽員因姻引飲淫胤蔭�".split(""); +for(j = 0; j != D[176].length; ++j) if(D[176][j].charCodeAt(0) !== 0xFFFD) { e[D[176][j]] = 45056 + j; d[45056 + j] = D[176][j];} +D[177] = "���������������������������������侅侉侊侌侎侐侒侓侔侗侙侚侞侟侲侷侹侻侼侽侾俀俁俅俆俈俉俋俌俍俏俒俜俠俢俰俲俼俽俿倀倁倄倇倊倌倎倐倓倗倘倛倜倝倞倢倧倮倰倲倳倵偀偁偂偅偆偊偌偎偑偒偓偗偙偟偠偢偣偦偧偪偭偰偱倻傁傃傄傆傊傎傏傐����������������������������������院陰隠韻吋右宇烏羽迂雨卯鵜窺丑碓臼渦嘘唄欝蔚鰻姥厩浦瓜閏噂云運雲荏餌叡営嬰影映曳栄永泳洩瑛盈穎頴英衛詠鋭液疫益駅悦謁越閲榎厭円園堰奄宴延怨掩援沿演炎焔煙燕猿縁艶苑薗遠鉛鴛塩於汚甥凹央奥往応�".split(""); +for(j = 0; j != D[177].length; ++j) if(D[177][j].charCodeAt(0) !== 0xFFFD) { e[D[177][j]] = 45312 + j; d[45312 + j] = D[177][j];} +D[178] = "���������������������������������傒傓傔傖傛傜傞傟傠傡傢傪傯傰傹傺傽僀僃僄僇僌僎僐僓僔僘僜僝僟僢僤僦僨僩僯僱僶僺僾儃儆儇儈儋儌儍儎僲儐儗儙儛儜儝儞儣儧儨儬儭儯儱儳儴儵儸儹兂兊兏兓兕兗兘兟兤兦兾冃冄冋冎冘冝冡冣冭冸冺冼冾冿凂����������������������������������押旺横欧殴王翁襖鴬鴎黄岡沖荻億屋憶臆桶牡乙俺卸恩温穏音下化仮何伽価佳加可嘉夏嫁家寡科暇果架歌河火珂禍禾稼箇花苛茄荷華菓蝦課嘩貨迦過霞蚊俄峨我牙画臥芽蛾賀雅餓駕介会解回塊壊廻快怪悔恢懐戒拐改�".split(""); +for(j = 0; j != D[178].length; ++j) if(D[178][j].charCodeAt(0) !== 0xFFFD) { e[D[178][j]] = 45568 + j; d[45568 + j] = D[178][j];} +D[179] = "���������������������������������凈减凑凒凓凕凘凞凢凥凮凲凳凴凷刁刂刅划刓刕刖刘刢刨刱刲刵刼剅剉剕剗剘剚剜剟剠剡剦剮剷剸剹劀劂劅劊劌劓劕劖劗劘劚劜劤劥劦劧劯劰劶劷劸劺劻劽勀勄勆勈勌勏勑勔勖勛勜勡勥勨勩勪勬勰勱勴勶勷匀匃匊匋����������������������������������魁晦械海灰界皆絵芥蟹開階貝凱劾外咳害崖慨概涯碍蓋街該鎧骸浬馨蛙垣柿蛎鈎劃嚇各廓拡撹格核殻獲確穫覚角赫較郭閣隔革学岳楽額顎掛笠樫橿梶鰍潟割喝恰括活渇滑葛褐轄且鰹叶椛樺鞄株兜竃蒲釜鎌噛鴨栢茅萱�".split(""); +for(j = 0; j != D[179].length; ++j) if(D[179][j].charCodeAt(0) !== 0xFFFD) { e[D[179][j]] = 45824 + j; d[45824 + j] = D[179][j];} +D[180] = "���������������������������������匌匑匓匘匛匜匞匟匥匧匨匩匫匬匭匰匲匵匼匽匾卂卌卋卙卛卡卣卥卬卭卲卹卾厃厇厈厎厓厔厙厝厡厤厪厫厯厲厴厵厷厸厺厽叀叅叏叒叓叕叚叝叞叠另叧叵吂吓吚吡吧吨吪启吱吴吵呃呄呇呍呏呞呢呤呦呧呩呫呭呮呴呿����������������������������������粥刈苅瓦乾侃冠寒刊勘勧巻喚堪姦完官寛干幹患感慣憾換敢柑桓棺款歓汗漢澗潅環甘監看竿管簡緩缶翰肝艦莞観諌貫還鑑間閑関陥韓館舘丸含岸巌玩癌眼岩翫贋雁頑顔願企伎危喜器基奇嬉寄岐希幾忌揮机旗既期棋棄�".split(""); +for(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];} +D[181] = "���������������������������������咁咃咅咈咉咍咑咕咖咜咟咡咦咧咩咪咭咮咱咷咹咺咻咿哆哊响哎哠哪哬哯哶哼哾哿唀唁唅唈唉唌唍唎唕唪唫唲唵唶唻唼唽啁啇啉啊啍啐啑啘啚啛啞啠啡啤啦啿喁喂喆喈喎喏喑喒喓喔喗喣喤喭喲喿嗁嗃嗆嗉嗋嗌嗎嗑嗒����������������������������������機帰毅気汽畿祈季稀紀徽規記貴起軌輝飢騎鬼亀偽儀妓宜戯技擬欺犠疑祇義蟻誼議掬菊鞠吉吃喫桔橘詰砧杵黍却客脚虐逆丘久仇休及吸宮弓急救朽求汲泣灸球究窮笈級糾給旧牛去居巨拒拠挙渠虚許距鋸漁禦魚亨享京�".split(""); +for(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];} +D[182] = "���������������������������������嗓嗗嗘嗛嗞嗢嗩嗶嗿嘅嘈嘊嘍嘎嘏嘐嘑嘒嘙嘬嘰嘳嘵嘷嘹嘻嘼嘽嘿噀噁噃噄噆噉噋噍噏噔噞噠噡噢噣噦噩噭噯噱噲噵嚄嚅嚈嚋嚌嚕嚙嚚嚝嚞嚟嚦嚧嚨嚩嚫嚬嚭嚱嚳嚷嚾囅囉囊囋囏囐囌囍囙囜囝囟囡囤囥囦囧囨囱囫园����������������������������������供侠僑兇競共凶協匡卿叫喬境峡強彊怯恐恭挟教橋況狂狭矯胸脅興蕎郷鏡響饗驚仰凝尭暁業局曲極玉桐粁僅勤均巾錦斤欣欽琴禁禽筋緊芹菌衿襟謹近金吟銀九倶句区狗玖矩苦躯駆駈駒具愚虞喰空偶寓遇隅串櫛釧屑屈�".split(""); +for(j = 0; j != D[182].length; ++j) if(D[182][j].charCodeAt(0) !== 0xFFFD) { e[D[182][j]] = 46592 + j; d[46592 + j] = D[182][j];} +D[183] = "���������������������������������囶囷圁圂圇圊圌圑圕圚圛圝圠圢圣圤圥圩圪圬圮圯圳圴圽圾圿坅坆坌坍坒坢坥坧坨坫坭坮坯坰坱坳坴坵坷坹坺坻坼坾垁垃垌垔垗垙垚垜垝垞垟垡垕垧垨垩垬垸垽埇埈埌埏埕埝埞埤埦埧埩埭埰埵埶埸埽埾埿堃堄堈堉埡����������������������������������掘窟沓靴轡窪熊隈粂栗繰桑鍬勲君薫訓群軍郡卦袈祁係傾刑兄啓圭珪型契形径恵慶慧憩掲携敬景桂渓畦稽系経継繋罫茎荊蛍計詣警軽頚鶏芸迎鯨劇戟撃激隙桁傑欠決潔穴結血訣月件倹倦健兼券剣喧圏堅嫌建憲懸拳捲�".split(""); +for(j = 0; j != D[183].length; ++j) if(D[183][j].charCodeAt(0) !== 0xFFFD) { e[D[183][j]] = 46848 + j; d[46848 + j] = D[183][j];} +D[184] = "���������������������������������堌堍堛堞堟堠堦堧堭堲堹堿塉塌塍塏塐塕塟塡塤塧塨塸塼塿墀墁墇墈墉墊墌墍墏墐墔墖墝墠墡墢墦墩墱墲壄墼壂壈壍壎壐壒壔壖壚壝壡壢壩壳夅夆夋夌夒夓夔虁夝夡夣夤夨夯夰夳夵夶夿奃奆奒奓奙奛奝奞奟奡奣奫奭����������������������������������検権牽犬献研硯絹県肩見謙賢軒遣鍵険顕験鹸元原厳幻弦減源玄現絃舷言諺限乎個古呼固姑孤己庫弧戸故枯湖狐糊袴股胡菰虎誇跨鈷雇顧鼓五互伍午呉吾娯後御悟梧檎瑚碁語誤護醐乞鯉交佼侯候倖光公功効勾厚口向�".split(""); +for(j = 0; j != D[184].length; ++j) if(D[184][j].charCodeAt(0) !== 0xFFFD) { e[D[184][j]] = 47104 + j; d[47104 + j] = D[184][j];} +D[185] = "���������������������������������奯奲奵奶她奻奼妋妌妎妒妕妗妟妤妧妭妮妯妰妳妷妺妼姁姃姄姈姊姍姒姝姞姟姣姤姧姮姯姱姲姴姷娀娄娌娍娎娒娓娞娣娤娧娨娪娭娰婄婅婇婈婌婐婕婞婣婥婧婭婷婺婻婾媋媐媓媖媙媜媞媟媠媢媧媬媱媲媳媵媸媺媻媿����������������������������������后喉坑垢好孔孝宏工巧巷幸広庚康弘恒慌抗拘控攻昂晃更杭校梗構江洪浩港溝甲皇硬稿糠紅紘絞綱耕考肯肱腔膏航荒行衡講貢購郊酵鉱砿鋼閤降項香高鴻剛劫号合壕拷濠豪轟麹克刻告国穀酷鵠黒獄漉腰甑忽惚骨狛込�".split(""); +for(j = 0; j != D[185].length; ++j) if(D[185][j].charCodeAt(0) !== 0xFFFD) { e[D[185][j]] = 47360 + j; d[47360 + j] = D[185][j];} +D[186] = "���������������������������������嫄嫆嫈嫏嫚嫜嫠嫥嫪嫮嫵嫶嫽嬀嬁嬈嬗嬴嬙嬛嬝嬡嬥嬭嬸孁孋孌孒孖孞孨孮孯孼孽孾孿宁宄宆宊宎宐宑宓宔宖宨宩宬宭宯宱宲宷宺宼寀寁寍寏寖寗寘寙寚寠寯寱寴寽尌尗尞尟尣尦尩尫尬尮尰尲尵尶屙屚屜屢屣屧屨屩����������������������������������此頃今困坤墾婚恨懇昏昆根梱混痕紺艮魂些佐叉唆嵯左差査沙瑳砂詐鎖裟坐座挫債催再最哉塞妻宰彩才採栽歳済災采犀砕砦祭斎細菜裁載際剤在材罪財冴坂阪堺榊肴咲崎埼碕鷺作削咋搾昨朔柵窄策索錯桜鮭笹匙冊刷�".split(""); +for(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];} +D[187] = "���������������������������������屭屰屴屵屺屻屼屽岇岈岊岏岒岝岟岠岢岣岦岪岲岴岵岺峉峋峒峝峗峮峱峲峴崁崆崍崒崫崣崤崦崧崱崴崹崽崿嵂嵃嵆嵈嵕嵑嵙嵊嵟嵠嵡嵢嵤嵪嵭嵰嵹嵺嵾嵿嶁嶃嶈嶊嶒嶓嶔嶕嶙嶛嶟嶠嶧嶫嶰嶴嶸嶹巃巇巋巐巎巘巙巠巤����������������������������������察拶撮擦札殺薩雑皐鯖捌錆鮫皿晒三傘参山惨撒散桟燦珊産算纂蚕讃賛酸餐斬暫残仕仔伺使刺司史嗣四士始姉姿子屍市師志思指支孜斯施旨枝止死氏獅祉私糸紙紫肢脂至視詞詩試誌諮資賜雌飼歯事似侍児字寺慈持時�".split(""); +for(j = 0; j != D[187].length; ++j) if(D[187][j].charCodeAt(0) !== 0xFFFD) { e[D[187][j]] = 47872 + j; d[47872 + j] = D[187][j];} +D[188] = "���������������������������������巩巸巹帀帇帍帒帔帕帘帟帠帮帨帲帵帾幋幐幉幑幖幘幛幜幞幨幪幫幬幭幮幰庀庋庎庢庤庥庨庪庬庱庳庽庾庿廆廌廋廎廑廒廔廕廜廞廥廫异弆弇弈弎弙弜弝弡弢弣弤弨弫弬弮弰弴弶弻弽弿彀彄彅彇彍彐彔彘彛彠彣彤彧����������������������������������次滋治爾璽痔磁示而耳自蒔辞汐鹿式識鴫竺軸宍雫七叱執失嫉室悉湿漆疾質実蔀篠偲柴芝屡蕊縞舎写射捨赦斜煮社紗者謝車遮蛇邪借勺尺杓灼爵酌釈錫若寂弱惹主取守手朱殊狩珠種腫趣酒首儒受呪寿授樹綬需囚収周�".split(""); +for(j = 0; j != D[188].length; ++j) if(D[188][j].charCodeAt(0) !== 0xFFFD) { e[D[188][j]] = 48128 + j; d[48128 + j] = D[188][j];} +D[189] = "���������������������������������彯彲彴彵彸彺彽彾徉徍徏徖徜徝徢徧徫徤徬徯徰徱徸忄忇忈忉忋忐忑忒忓忔忞忡忢忨忩忪忬忭忮忯忲忳忶忺忼怇怊怍怓怔怗怘怚怟怤怭怳怵恀恇恈恉恌恑恔恖恗恝恡恧恱恾恿悂悆悈悊悎悑悓悕悘悝悞悢悤悥您悰悱悷����������������������������������宗就州修愁拾洲秀秋終繍習臭舟蒐衆襲讐蹴輯週酋酬集醜什住充十従戎柔汁渋獣縦重銃叔夙宿淑祝縮粛塾熟出術述俊峻春瞬竣舜駿准循旬楯殉淳準潤盾純巡遵醇順処初所暑曙渚庶緒署書薯藷諸助叙女序徐恕鋤除傷償�".split(""); +for(j = 0; j != D[189].length; ++j) if(D[189][j].charCodeAt(0) !== 0xFFFD) { e[D[189][j]] = 48384 + j; d[48384 + j] = D[189][j];} +D[190] = "���������������������������������悻悾惂惄惈惉惊惋惎惏惔惕惙惛惝惞惢惥惲惵惸惼惽愂愇愊愌愐愑愒愓愔愖愗愙愜愞愢愪愫愰愱愵愶愷愹慁慅慆慉慞慠慬慲慸慻慼慿憀憁憃憄憋憍憒憓憗憘憜憝憟憠憥憨憪憭憸憹憼懀懁懂懎懏懕懜懝懞懟懡懢懧懩懥����������������������������������勝匠升召哨商唱嘗奨妾娼宵将小少尚庄床廠彰承抄招掌捷昇昌昭晶松梢樟樵沼消渉湘焼焦照症省硝礁祥称章笑粧紹肖菖蒋蕉衝裳訟証詔詳象賞醤鉦鍾鐘障鞘上丈丞乗冗剰城場壌嬢常情擾条杖浄状畳穣蒸譲醸錠嘱埴飾�".split(""); +for(j = 0; j != D[190].length; ++j) if(D[190][j].charCodeAt(0) !== 0xFFFD) { e[D[190][j]] = 48640 + j; d[48640 + j] = D[190][j];} +D[191] = "���������������������������������懬懭懯戁戃戄戇戓戕戜戠戢戣戧戩戫戹戽扂扃扄扆扌扐扑扒扔扖扚扜扤扭扯扳扺扽抍抎抏抐抦抨抳抶抷抺抾抿拄拎拕拖拚拪拲拴拼拽挃挄挊挋挍挐挓挖挘挩挪挭挵挶挹挼捁捂捃捄捆捊捋捎捒捓捔捘捛捥捦捬捭捱捴捵����������������������������������拭植殖燭織職色触食蝕辱尻伸信侵唇娠寝審心慎振新晋森榛浸深申疹真神秦紳臣芯薪親診身辛進針震人仁刃塵壬尋甚尽腎訊迅陣靭笥諏須酢図厨逗吹垂帥推水炊睡粋翠衰遂酔錐錘随瑞髄崇嵩数枢趨雛据杉椙菅頗雀裾�".split(""); +for(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];} +D[192] = "���������������������������������捸捼捽捿掂掄掇掊掐掔掕掙掚掞掤掦掭掮掯掽揁揅揈揎揑揓揔揕揜揠揥揪揬揲揳揵揸揹搉搊搐搒搔搘搞搠搢搤搥搩搪搯搰搵搽搿摋摏摑摒摓摔摚摛摜摝摟摠摡摣摭摳摴摻摽撅撇撏撐撑撘撙撛撝撟撡撣撦撨撬撳撽撾撿����������������������������������澄摺寸世瀬畝是凄制勢姓征性成政整星晴棲栖正清牲生盛精聖声製西誠誓請逝醒青静斉税脆隻席惜戚斥昔析石積籍績脊責赤跡蹟碩切拙接摂折設窃節説雪絶舌蝉仙先千占宣専尖川戦扇撰栓栴泉浅洗染潜煎煽旋穿箭線�".split(""); +for(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];} +D[193] = "���������������������������������擄擉擊擋擌擎擐擑擕擗擤擥擩擪擭擰擵擷擻擿攁攄攈攉攊攏攓攔攖攙攛攞攟攢攦攩攮攱攺攼攽敃敇敉敐敒敔敟敠敧敫敺敽斁斅斊斒斕斘斝斠斣斦斮斲斳斴斿旂旈旉旎旐旔旖旘旟旰旲旴旵旹旾旿昀昄昈昉昍昑昒昕昖昝����������������������������������繊羨腺舛船薦詮賎践選遷銭銑閃鮮前善漸然全禅繕膳糎噌塑岨措曾曽楚狙疏疎礎祖租粗素組蘇訴阻遡鼠僧創双叢倉喪壮奏爽宋層匝惣想捜掃挿掻操早曹巣槍槽漕燥争痩相窓糟総綜聡草荘葬蒼藻装走送遭鎗霜騒像増憎�".split(""); +for(j = 0; j != D[193].length; ++j) if(D[193][j].charCodeAt(0) !== 0xFFFD) { e[D[193][j]] = 49408 + j; d[49408 + j] = D[193][j];} +D[194] = "���������������������������������昞昡昢昣昤昦昩昪昫昬昮昰昱昳昹昷晀晅晆晊晌晑晎晗晘晙晛晜晠晡曻晪晫晬晾晳晵晿晷晸晹晻暀晼暋暌暍暐暒暙暚暛暜暟暠暤暭暱暲暵暻暿曀曂曃曈曌曎曏曔曛曟曨曫曬曮曺朅朇朎朓朙朜朠朢朳朾杅杇杈杌杔杕杝����������������������������������臓蔵贈造促側則即息捉束測足速俗属賊族続卒袖其揃存孫尊損村遜他多太汰詑唾堕妥惰打柁舵楕陀駄騨体堆対耐岱帯待怠態戴替泰滞胎腿苔袋貸退逮隊黛鯛代台大第醍題鷹滝瀧卓啄宅托択拓沢濯琢託鐸濁諾茸凧蛸只�".split(""); +for(j = 0; j != D[194].length; ++j) if(D[194][j].charCodeAt(0) !== 0xFFFD) { e[D[194][j]] = 49664 + j; d[49664 + j] = D[194][j];} +D[195] = "���������������������������������杦杬杮杴杶杻极构枎枏枑枓枖枘枙枛枰枱枲枵枻枼枽柹柀柂柃柅柈柉柒柗柙柜柡柦柰柲柶柷桒栔栙栝栟栨栧栬栭栯栰栱栳栻栿桄桅桊桌桕桗桘桛桫桮桯桰桱桲桵桹桺桻桼梂梄梆梈梖梘梚梜梡梣梥梩梪梮梲梻棅棈棌棏����������������������������������叩但達辰奪脱巽竪辿棚谷狸鱈樽誰丹単嘆坦担探旦歎淡湛炭短端箪綻耽胆蛋誕鍛団壇弾断暖檀段男談値知地弛恥智池痴稚置致蜘遅馳築畜竹筑蓄逐秩窒茶嫡着中仲宙忠抽昼柱注虫衷註酎鋳駐樗瀦猪苧著貯丁兆凋喋寵�".split(""); +for(j = 0; j != D[195].length; ++j) if(D[195][j].charCodeAt(0) !== 0xFFFD) { e[D[195][j]] = 49920 + j; d[49920 + j] = D[195][j];} +D[196] = "���������������������������������棐棑棓棖棙棜棝棥棨棪棫棬棭棰棱棵棶棻棼棽椆椉椊椐椑椓椖椗椱椳椵椸椻楂楅楉楎楗楛楣楤楥楦楨楩楬楰楱楲楺楻楿榀榍榒榖榘榡榥榦榨榫榭榯榷榸榺榼槅槈槑槖槗槢槥槮槯槱槳槵槾樀樁樃樏樑樕樚樝樠樤樨樰樲����������������������������������帖帳庁弔張彫徴懲挑暢朝潮牒町眺聴脹腸蝶調諜超跳銚長頂鳥勅捗直朕沈珍賃鎮陳津墜椎槌追鎚痛通塚栂掴槻佃漬柘辻蔦綴鍔椿潰坪壷嬬紬爪吊釣鶴亭低停偵剃貞呈堤定帝底庭廷弟悌抵挺提梯汀碇禎程締艇訂諦蹄逓�".split(""); +for(j = 0; j != D[196].length; ++j) if(D[196][j].charCodeAt(0) !== 0xFFFD) { e[D[196][j]] = 50176 + j; d[50176 + j] = D[196][j];} +D[197] = "���������������������������������樴樷樻樾樿橅橆橉橊橎橐橑橒橕橖橛橤橧橪橱橳橾檁檃檆檇檉檋檑檛檝檞檟檥檫檯檰檱檴檽檾檿櫆櫉櫈櫌櫐櫔櫕櫖櫜櫝櫤櫧櫬櫰櫱櫲櫼櫽欂欃欆欇欉欏欐欑欗欛欞欤欨欫欬欯欵欶欻欿歆歊歍歒歖歘歝歠歧歫歮歰歵歽����������������������������������邸鄭釘鼎泥摘擢敵滴的笛適鏑溺哲徹撤轍迭鉄典填天展店添纏甜貼転顛点伝殿澱田電兎吐堵塗妬屠徒斗杜渡登菟賭途都鍍砥砺努度土奴怒倒党冬凍刀唐塔塘套宕島嶋悼投搭東桃梼棟盗淘湯涛灯燈当痘祷等答筒糖統到�".split(""); +for(j = 0; j != D[197].length; ++j) if(D[197][j].charCodeAt(0) !== 0xFFFD) { e[D[197][j]] = 50432 + j; d[50432 + j] = D[197][j];} +D[198] = "���������������������������������歾殂殅殗殛殟殠殢殣殨殩殬殭殮殰殸殹殽殾毃毄毉毌毖毚毡毣毦毧毮毱毷毹毿氂氄氅氉氍氎氐氒氙氟氦氧氨氬氮氳氵氶氺氻氿汊汋汍汏汒汔汙汛汜汫汭汯汴汶汸汹汻沅沆沇沉沔沕沗沘沜沟沰沲沴泂泆泍泏泐泑泒泔泖����������������������������������董蕩藤討謄豆踏逃透鐙陶頭騰闘働動同堂導憧撞洞瞳童胴萄道銅峠鴇匿得徳涜特督禿篤毒独読栃橡凸突椴届鳶苫寅酉瀞噸屯惇敦沌豚遁頓呑曇鈍奈那内乍凪薙謎灘捺鍋楢馴縄畷南楠軟難汝二尼弐迩匂賑肉虹廿日乳入�".split(""); +for(j = 0; j != D[198].length; ++j) if(D[198][j].charCodeAt(0) !== 0xFFFD) { e[D[198][j]] = 50688 + j; d[50688 + j] = D[198][j];} +D[199] = "���������������������������������泚泜泠泧泩泫泬泮泲泴洄洇洊洎洏洑洓洚洦洧洨汧洮洯洱洹洼洿浗浞浟浡浥浧浯浰浼涂涇涑涒涔涖涗涘涪涬涴涷涹涽涿淄淈淊淎淏淖淛淝淟淠淢淥淩淯淰淴淶淼渀渄渞渢渧渲渶渹渻渼湄湅湈湉湋湏湑湒湓湔湗湜湝湞����������������������������������如尿韮任妊忍認濡禰祢寧葱猫熱年念捻撚燃粘乃廼之埜嚢悩濃納能脳膿農覗蚤巴把播覇杷波派琶破婆罵芭馬俳廃拝排敗杯盃牌背肺輩配倍培媒梅楳煤狽買売賠陪這蝿秤矧萩伯剥博拍柏泊白箔粕舶薄迫曝漠爆縛莫駁麦�".split(""); +for(j = 0; j != D[199].length; ++j) if(D[199][j].charCodeAt(0) !== 0xFFFD) { e[D[199][j]] = 50944 + j; d[50944 + j] = D[199][j];} +D[200] = "���������������������������������湢湣湨湳湻湽溍溓溙溠溧溭溮溱溳溻溿滀滁滃滇滈滊滍滎滏滫滭滮滹滻滽漄漈漊漌漍漖漘漚漛漦漩漪漯漰漳漶漻漼漭潏潑潒潓潗潙潚潝潞潡潢潨潬潽潾澃澇澈澋澌澍澐澒澓澔澖澚澟澠澥澦澧澨澮澯澰澵澶澼濅濇濈濊����������������������������������函箱硲箸肇筈櫨幡肌畑畠八鉢溌発醗髪伐罰抜筏閥鳩噺塙蛤隼伴判半反叛帆搬斑板氾汎版犯班畔繁般藩販範釆煩頒飯挽晩番盤磐蕃蛮匪卑否妃庇彼悲扉批披斐比泌疲皮碑秘緋罷肥被誹費避非飛樋簸備尾微枇毘琵眉美�".split(""); +for(j = 0; j != D[200].length; ++j) if(D[200][j].charCodeAt(0) !== 0xFFFD) { e[D[200][j]] = 51200 + j; d[51200 + j] = D[200][j];} +D[201] = "���������������������������������濚濞濨濩濰濵濹濼濽瀀瀅瀆瀇瀍瀗瀠瀣瀯瀴瀷瀹瀼灃灄灈灉灊灋灔灕灝灞灎灤灥灬灮灵灶灾炁炅炆炔炕炖炗炘炛炤炫炰炱炴炷烊烑烓烔烕烖烘烜烤烺焃焄焅焆焇焋焌焏焞焠焫焭焯焰焱焸煁煅煆煇煊煋煐煒煗煚煜煞煠����������������������������������鼻柊稗匹疋髭彦膝菱肘弼必畢筆逼桧姫媛紐百謬俵彪標氷漂瓢票表評豹廟描病秒苗錨鋲蒜蛭鰭品彬斌浜瀕貧賓頻敏瓶不付埠夫婦富冨布府怖扶敷斧普浮父符腐膚芙譜負賦赴阜附侮撫武舞葡蕪部封楓風葺蕗伏副復幅服�".split(""); +for(j = 0; j != D[201].length; ++j) if(D[201][j].charCodeAt(0) !== 0xFFFD) { e[D[201][j]] = 51456 + j; d[51456 + j] = D[201][j];} +D[202] = "���������������������������������煨煹熀熅熇熌熒熚熛熠熢熯熰熲熳熺熿燀燁燄燋燌燓燖燙燚燜燸燾爀爇爈爉爓爗爚爝爟爤爫爯爴爸爹牁牂牃牅牎牏牐牓牕牖牚牜牞牠牣牨牫牮牯牱牷牸牻牼牿犄犉犍犎犓犛犨犭犮犱犴犾狁狇狉狌狕狖狘狟狥狳狴狺狻����������������������������������福腹複覆淵弗払沸仏物鮒分吻噴墳憤扮焚奮粉糞紛雰文聞丙併兵塀幣平弊柄並蔽閉陛米頁僻壁癖碧別瞥蔑箆偏変片篇編辺返遍便勉娩弁鞭保舗鋪圃捕歩甫補輔穂募墓慕戊暮母簿菩倣俸包呆報奉宝峰峯崩庖抱捧放方朋�".split(""); +for(j = 0; j != D[202].length; ++j) if(D[202][j].charCodeAt(0) !== 0xFFFD) { e[D[202][j]] = 51712 + j; d[51712 + j] = D[202][j];} +D[203] = "���������������������������������狾猂猄猅猇猋猍猒猓猘猙猞猢猤猧猨猬猱猲猵猺猻猽獃獍獐獒獖獘獝獞獟獠獦獧獩獫獬獮獯獱獷獹獼玀玁玃玅玆玎玐玓玕玗玘玜玞玟玠玢玥玦玪玫玭玵玷玹玼玽玿珅珆珉珋珌珏珒珓珖珙珝珡珣珦珧珩珴珵珷珹珺珻珽����������������������������������法泡烹砲縫胞芳萌蓬蜂褒訪豊邦鋒飽鳳鵬乏亡傍剖坊妨帽忘忙房暴望某棒冒紡肪膨謀貌貿鉾防吠頬北僕卜墨撲朴牧睦穆釦勃没殆堀幌奔本翻凡盆摩磨魔麻埋妹昧枚毎哩槙幕膜枕鮪柾鱒桝亦俣又抹末沫迄侭繭麿万慢満�".split(""); +for(j = 0; j != D[203].length; ++j) if(D[203][j].charCodeAt(0) !== 0xFFFD) { e[D[203][j]] = 51968 + j; d[51968 + j] = D[203][j];} +D[204] = "���������������������������������珿琀琁琄琇琊琑琚琛琤琦琨琩琪琫琬琭琮琯琰琱琹瑀瑃瑄瑆瑇瑋瑍瑑瑒瑗瑝瑢瑦瑧瑨瑫瑭瑮瑱瑲璀璁璅璆璇璉璏璐璑璒璘璙璚璜璟璠璡璣璦璨璩璪璫璮璯璱璲璵璹璻璿瓈瓉瓌瓐瓓瓘瓚瓛瓞瓟瓤瓨瓪瓫瓯瓴瓺瓻瓼瓿甆����������������������������������漫蔓味未魅巳箕岬密蜜湊蓑稔脈妙粍民眠務夢無牟矛霧鵡椋婿娘冥名命明盟迷銘鳴姪牝滅免棉綿緬面麺摸模茂妄孟毛猛盲網耗蒙儲木黙目杢勿餅尤戻籾貰問悶紋門匁也冶夜爺耶野弥矢厄役約薬訳躍靖柳薮鑓愉愈油癒�".split(""); +for(j = 0; j != D[204].length; ++j) if(D[204][j].charCodeAt(0) !== 0xFFFD) { e[D[204][j]] = 52224 + j; d[52224 + j] = D[204][j];} +D[205] = "���������������������������������甒甖甗甠甡甤甧甩甪甯甶甹甽甾甿畀畃畇畈畎畐畒畗畞畟畡畯畱畹畺畻畼畽畾疁疅疐疒疓疕疙疜疢疤疴疺疿痀痁痄痆痌痎痏痗痜痟痠痡痤痧痬痮痯痱痹瘀瘂瘃瘄瘇瘈瘊瘌瘏瘒瘓瘕瘖瘙瘛瘜瘝瘞瘣瘥瘦瘩瘭瘲瘳瘵瘸瘹����������������������������������諭輸唯佑優勇友宥幽悠憂揖有柚湧涌猶猷由祐裕誘遊邑郵雄融夕予余与誉輿預傭幼妖容庸揚揺擁曜楊様洋溶熔用窯羊耀葉蓉要謡踊遥陽養慾抑欲沃浴翌翼淀羅螺裸来莱頼雷洛絡落酪乱卵嵐欄濫藍蘭覧利吏履李梨理璃�".split(""); +for(j = 0; j != D[205].length; ++j) if(D[205][j].charCodeAt(0) !== 0xFFFD) { e[D[205][j]] = 52480 + j; d[52480 + j] = D[205][j];} +D[206] = "���������������������������������瘺瘼癊癀癁癃癄癅癉癋癕癙癟癤癥癭癮癯癱癴皁皅皌皍皕皛皜皝皟皠皢皣皤皥皦皧皨皪皭皽盁盅盉盋盌盎盔盙盠盦盨盬盰盱盶盹盼眀眆眊眎眒眔眕眗眙眚眜眢眨眭眮眯眴眵眶眹眽眾睂睅睆睊睍睎睏睒睖睗睜睞睟睠睢����������������������������������痢裏裡里離陸律率立葎掠略劉流溜琉留硫粒隆竜龍侶慮旅虜了亮僚両凌寮料梁涼猟療瞭稜糧良諒遼量陵領力緑倫厘林淋燐琳臨輪隣鱗麟瑠塁涙累類令伶例冷励嶺怜玲礼苓鈴隷零霊麗齢暦歴列劣烈裂廉恋憐漣煉簾練聯�".split(""); +for(j = 0; j != D[206].length; ++j) if(D[206][j].charCodeAt(0) !== 0xFFFD) { e[D[206][j]] = 52736 + j; d[52736 + j] = D[206][j];} +D[207] = "���������������������������������睤睧睪睬睰睲睳睴睺睽瞀瞄瞌瞍瞔瞕瞖瞚瞟瞢瞧瞪瞮瞯瞱瞵瞾矃矉矑矒矕矙矞矟矠矤矦矪矬矰矱矴矸矻砅砆砉砍砎砑砝砡砢砣砭砮砰砵砷硃硄硇硈硌硎硒硜硞硠硡硣硤硨硪确硺硾碊碏碔碘碡碝碞碟碤碨碬碭碰碱碲碳����������������������������������蓮連錬呂魯櫓炉賂路露労婁廊弄朗楼榔浪漏牢狼篭老聾蝋郎六麓禄肋録論倭和話歪賄脇惑枠鷲亙亘鰐詫藁蕨椀湾碗腕��������������������������������������������".split(""); +for(j = 0; j != D[207].length; ++j) if(D[207][j].charCodeAt(0) !== 0xFFFD) { e[D[207][j]] = 52992 + j; d[52992 + j] = D[207][j];} +D[208] = "���������������������������������碻碽碿磇磈磉磌磎磒磓磕磖磤磛磟磠磡磦磪磲磳礀磶磷磺磻磿礆礌礐礚礜礞礟礠礥礧礩礭礱礴礵礻礽礿祄祅祆祊祋祏祑祔祘祛祜祧祩祫祲祹祻祼祾禋禌禑禓禔禕禖禘禛禜禡禨禩禫禯禱禴禸离秂秄秇秈秊秏秔秖秚秝秞����������������������������������弌丐丕个丱丶丼丿乂乖乘亂亅豫亊舒弍于亞亟亠亢亰亳亶从仍仄仆仂仗仞仭仟价伉佚估佛佝佗佇佶侈侏侘佻佩佰侑佯來侖儘俔俟俎俘俛俑俚俐俤俥倚倨倔倪倥倅伜俶倡倩倬俾俯們倆偃假會偕偐偈做偖偬偸傀傚傅傴傲�".split(""); +for(j = 0; j != D[208].length; ++j) if(D[208][j].charCodeAt(0) !== 0xFFFD) { e[D[208][j]] = 53248 + j; d[53248 + j] = D[208][j];} +D[209] = "���������������������������������秠秢秥秪秫秭秱秸秼稂稃稇稉稊稌稑稕稛稞稡稧稫稭稯稰稴稵稸稹稺穄穅穇穈穌穕穖穙穜穝穟穠穥穧穪穭穵穸穾窀窂窅窆窊窋窐窑窔窞窠窣窬窳窵窹窻窼竆竉竌竎竑竛竨竩竫竬竱竴竻竽竾笇笔笟笣笧笩笪笫笭笮笯笰����������������������������������僉僊傳僂僖僞僥僭僣僮價僵儉儁儂儖儕儔儚儡儺儷儼儻儿兀兒兌兔兢竸兩兪兮冀冂囘册冉冏冑冓冕冖冤冦冢冩冪冫决冱冲冰况冽凅凉凛几處凩凭凰凵凾刄刋刔刎刧刪刮刳刹剏剄剋剌剞剔剪剴剩剳剿剽劍劔劒剱劈劑辨�".split(""); +for(j = 0; j != D[209].length; ++j) if(D[209][j].charCodeAt(0) !== 0xFFFD) { e[D[209][j]] = 53504 + j; d[53504 + j] = D[209][j];} +D[210] = "���������������������������������笱笴笽笿筀筁筇筎筕筠筤筦筩筪筭筯筲筳筷箄箉箎箐箑箖箛箞箠箥箬箯箰箲箵箶箺箻箼箽篂篅篈篊篔篖篗篙篚篛篨篪篲篴篵篸篹篺篼篾簁簂簃簄簆簉簋簌簎簏簙簛簠簥簦簨簬簱簳簴簶簹簺籆籊籕籑籒籓籙籚籛籜籝籞����������������������������������辧劬劭劼劵勁勍勗勞勣勦飭勠勳勵勸勹匆匈甸匍匐匏匕匚匣匯匱匳匸區卆卅丗卉卍凖卞卩卮夘卻卷厂厖厠厦厥厮厰厶參簒雙叟曼燮叮叨叭叺吁吽呀听吭吼吮吶吩吝呎咏呵咎呟呱呷呰咒呻咀呶咄咐咆哇咢咸咥咬哄哈咨�".split(""); +for(j = 0; j != D[210].length; ++j) if(D[210][j].charCodeAt(0) !== 0xFFFD) { e[D[210][j]] = 53760 + j; d[53760 + j] = D[210][j];} +D[211] = "���������������������������������籡籣籧籩籭籮籰籲籹籼籽粆粇粏粔粞粠粦粰粶粷粺粻粼粿糄糇糈糉糍糏糓糔糕糗糙糚糝糦糩糫糵紃紇紈紉紏紑紒紓紖紝紞紣紦紪紭紱紼紽紾絀絁絇絈絍絑絓絗絙絚絜絝絥絧絪絰絸絺絻絿綁綂綃綅綆綈綋綌綍綑綖綗綝����������������������������������咫哂咤咾咼哘哥哦唏唔哽哮哭哺哢唹啀啣啌售啜啅啖啗唸唳啝喙喀咯喊喟啻啾喘喞單啼喃喩喇喨嗚嗅嗟嗄嗜嗤嗔嘔嗷嘖嗾嗽嘛嗹噎噐營嘴嘶嘲嘸噫噤嘯噬噪嚆嚀嚊嚠嚔嚏嚥嚮嚶嚴囂嚼囁囃囀囈囎囑囓囗囮囹圀囿圄圉�".split(""); +for(j = 0; j != D[211].length; ++j) if(D[211][j].charCodeAt(0) !== 0xFFFD) { e[D[211][j]] = 54016 + j; d[54016 + j] = D[211][j];} +D[212] = "���������������������������������綞綦綧綪綳綶綷綹緂緃緄緅緆緌緍緎緗緙縀緢緥緦緪緫緭緱緵緶緹緺縈縐縑縕縗縜縝縠縧縨縬縭縯縳縶縿繄繅繇繎繐繒繘繟繡繢繥繫繮繯繳繸繾纁纆纇纊纍纑纕纘纚纝纞缼缻缽缾缿罃罄罇罏罒罓罛罜罝罡罣罤罥罦罭����������������������������������圈國圍圓團圖嗇圜圦圷圸坎圻址坏坩埀垈坡坿垉垓垠垳垤垪垰埃埆埔埒埓堊埖埣堋堙堝塲堡塢塋塰毀塒堽塹墅墹墟墫墺壞墻墸墮壅壓壑壗壙壘壥壜壤壟壯壺壹壻壼壽夂夊夐夛梦夥夬夭夲夸夾竒奕奐奎奚奘奢奠奧奬奩�".split(""); +for(j = 0; j != D[212].length; ++j) if(D[212][j].charCodeAt(0) !== 0xFFFD) { e[D[212][j]] = 54272 + j; d[54272 + j] = D[212][j];} +D[213] = "���������������������������������罱罽罾罿羀羋羍羏羐羑羖羗羜羡羢羦羪羭羴羼羿翀翃翈翎翏翛翟翣翥翨翬翮翯翲翺翽翾翿耇耈耊耍耎耏耑耓耔耖耝耞耟耠耤耦耬耮耰耴耵耷耹耺耼耾聀聄聠聤聦聭聱聵肁肈肎肜肞肦肧肫肸肹胈胍胏胒胔胕胗胘胠胭胮����������������������������������奸妁妝佞侫妣妲姆姨姜妍姙姚娥娟娑娜娉娚婀婬婉娵娶婢婪媚媼媾嫋嫂媽嫣嫗嫦嫩嫖嫺嫻嬌嬋嬖嬲嫐嬪嬶嬾孃孅孀孑孕孚孛孥孩孰孳孵學斈孺宀它宦宸寃寇寉寔寐寤實寢寞寥寫寰寶寳尅將專對尓尠尢尨尸尹屁屆屎屓�".split(""); +for(j = 0; j != D[213].length; ++j) if(D[213][j].charCodeAt(0) !== 0xFFFD) { e[D[213][j]] = 54528 + j; d[54528 + j] = D[213][j];} +D[214] = "���������������������������������胰胲胳胶胹胺胾脃脋脖脗脘脜脞脠脤脧脬脰脵脺脼腅腇腊腌腒腗腠腡腧腨腩腭腯腷膁膐膄膅膆膋膎膖膘膛膞膢膮膲膴膻臋臃臅臊臎臏臕臗臛臝臞臡臤臫臬臰臱臲臵臶臸臹臽臿舀舃舏舓舔舙舚舝舡舢舨舲舴舺艃艄艅艆����������������������������������屐屏孱屬屮乢屶屹岌岑岔妛岫岻岶岼岷峅岾峇峙峩峽峺峭嶌峪崋崕崗嵜崟崛崑崔崢崚崙崘嵌嵒嵎嵋嵬嵳嵶嶇嶄嶂嶢嶝嶬嶮嶽嶐嶷嶼巉巍巓巒巖巛巫已巵帋帚帙帑帛帶帷幄幃幀幎幗幔幟幢幤幇幵并幺麼广庠廁廂廈廐廏�".split(""); +for(j = 0; j != D[214].length; ++j) if(D[214][j].charCodeAt(0) !== 0xFFFD) { e[D[214][j]] = 54784 + j; d[54784 + j] = D[214][j];} +D[215] = "���������������������������������艋艎艏艑艖艜艠艣艧艭艴艻艽艿芀芁芃芄芇芉芊芎芑芔芖芘芚芛芠芡芣芤芧芨芩芪芮芰芲芴芷芺芼芾芿苆苐苕苚苠苢苤苨苪苭苯苶苷苽苾茀茁茇茈茊茋荔茛茝茞茟茡茢茬茭茮茰茳茷茺茼茽荂荃荄荇荍荎荑荕荖荗荰荸����������������������������������廖廣廝廚廛廢廡廨廩廬廱廳廰廴廸廾弃弉彝彜弋弑弖弩弭弸彁彈彌彎弯彑彖彗彙彡彭彳彷徃徂彿徊很徑徇從徙徘徠徨徭徼忖忻忤忸忱忝悳忿怡恠怙怐怩怎怱怛怕怫怦怏怺恚恁恪恷恟恊恆恍恣恃恤恂恬恫恙悁悍惧悃悚�".split(""); +for(j = 0; j != D[215].length; ++j) if(D[215][j].charCodeAt(0) !== 0xFFFD) { e[D[215][j]] = 55040 + j; d[55040 + j] = D[215][j];} +D[216] = "���������������������������������荽荿莀莂莄莆莍莒莔莕莘莙莛莜莝莦莧莩莬莾莿菀菇菉菏菐菑菔菝荓菨菪菶菸菹菼萁萆萊萏萑萕萙莭萯萹葅葇葈葊葍葏葑葒葖葘葙葚葜葠葤葥葧葪葰葳葴葶葸葼葽蒁蒅蒒蒓蒕蒞蒦蒨蒩蒪蒯蒱蒴蒺蒽蒾蓀蓂蓇蓈蓌蓏蓓����������������������������������悄悛悖悗悒悧悋惡悸惠惓悴忰悽惆悵惘慍愕愆惶惷愀惴惺愃愡惻惱愍愎慇愾愨愧慊愿愼愬愴愽慂慄慳慷慘慙慚慫慴慯慥慱慟慝慓慵憙憖憇憬憔憚憊憑憫憮懌懊應懷懈懃懆憺懋罹懍懦懣懶懺懴懿懽懼懾戀戈戉戍戌戔戛�".split(""); +for(j = 0; j != D[216].length; ++j) if(D[216][j].charCodeAt(0) !== 0xFFFD) { e[D[216][j]] = 55296 + j; d[55296 + j] = D[216][j];} +D[217] = "���������������������������������蓜蓧蓪蓯蓰蓱蓲蓷蔲蓺蓻蓽蔂蔃蔇蔌蔎蔐蔜蔞蔢蔣蔤蔥蔧蔪蔫蔯蔳蔴蔶蔿蕆蕏蕐蕑蕒蕓蕖蕙蕜蕝蕞蕟蕠蕡蕢蕤蕫蕯蕹蕺蕻蕽蕿薁薅薆薉薋薌薏薓薘薝薟薠薢薥薧薴薶薷薸薼薽薾薿藂藇藊藋藎薭藘藚藟藠藦藨藭藳藶藼����������������������������������戞戡截戮戰戲戳扁扎扞扣扛扠扨扼抂抉找抒抓抖拔抃抔拗拑抻拏拿拆擔拈拜拌拊拂拇抛拉挌拮拱挧挂挈拯拵捐挾捍搜捏掖掎掀掫捶掣掏掉掟掵捫捩掾揩揀揆揣揉插揶揄搖搴搆搓搦搶攝搗搨搏摧摯摶摎攪撕撓撥撩撈撼�".split(""); +for(j = 0; j != D[217].length; ++j) if(D[217][j].charCodeAt(0) !== 0xFFFD) { e[D[217][j]] = 55552 + j; d[55552 + j] = D[217][j];} +D[218] = "���������������������������������藿蘀蘄蘅蘍蘎蘐蘑蘒蘘蘙蘛蘞蘡蘧蘩蘶蘸蘺蘼蘽虀虂虆虒虓虖虗虘虙虝虠虡虢虣虤虩虬虯虵虶虷虺蚍蚑蚖蚘蚚蚜蚡蚦蚧蚨蚭蚱蚳蚴蚵蚷蚸蚹蚿蛀蛁蛃蛅蛑蛒蛕蛗蛚蛜蛠蛣蛥蛧蚈蛺蛼蛽蜄蜅蜇蜋蜎蜏蜐蜓蜔蜙蜞蜟蜡蜣����������������������������������據擒擅擇撻擘擂擱擧舉擠擡抬擣擯攬擶擴擲擺攀擽攘攜攅攤攣攫攴攵攷收攸畋效敖敕敍敘敞敝敲數斂斃變斛斟斫斷旃旆旁旄旌旒旛旙无旡旱杲昊昃旻杳昵昶昴昜晏晄晉晁晞晝晤晧晨晟晢晰暃暈暎暉暄暘暝曁暹曉暾暼�".split(""); +for(j = 0; j != D[218].length; ++j) if(D[218][j].charCodeAt(0) !== 0xFFFD) { e[D[218][j]] = 55808 + j; d[55808 + j] = D[218][j];} +D[219] = "���������������������������������蜨蜮蜯蜱蜲蜹蜺蜼蜽蜾蝀蝃蝅蝍蝘蝝蝡蝤蝥蝯蝱蝲蝻螃螄螅螆螇螈螉螋螌螐螓螕螗螘螙螞螠螣螧螬螭螮螱螵螾螿蟁蟈蟉蟊蟎蟕蟖蟙蟚蟜蟟蟢蟣蟤蟪蟫蟭蟱蟳蟸蟺蟿蠁蠃蠆蠉蠊蠋蠐蠙蠒蠓蠔蠘蠚蠛蠜蠞蠟蠨蠭蠮蠰蠲蠵����������������������������������曄暸曖曚曠昿曦曩曰曵曷朏朖朞朦朧霸朮朿朶杁朸朷杆杞杠杙杣杤枉杰枩杼杪枌枋枦枡枅枷柯枴柬枳柩枸柤柞柝柢柮枹柎柆柧檜栞框栩桀桍栲桎梳栫桙档桷桿梟梏梭梔條梛梃檮梹桴梵梠梺椏梍桾椁棊椈棘椢椦棡椌棍�".split(""); +for(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];} +D[220] = "���������������������������������蠺蠼衁衃衅衈衉衊衋衎衑衕衖衘衚衜衟衠衤衩衱衹衻袀袘袚袛袜袟袠袨袪袺袽袾裀裊裋裌裍裎裑裒裓裛裞裧裯裰裱裵裷褁褆褍褎褏褕褖褘褙褚褜褠褦褧褨褰褱褲褵褹褺褾襀襂襅襆襉襏襒襗襚襛襜襡襢襣襫襮襰襳襵襺����������������������������������棔棧棕椶椒椄棗棣椥棹棠棯椨椪椚椣椡棆楹楷楜楸楫楔楾楮椹楴椽楙椰楡楞楝榁楪榲榮槐榿槁槓榾槎寨槊槝榻槃榧樮榑榠榜榕榴槞槨樂樛槿權槹槲槧樅榱樞槭樔槫樊樒櫁樣樓橄樌橲樶橸橇橢橙橦橈樸樢檐檍檠檄檢檣�".split(""); +for(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];} +D[221] = "���������������������������������襻襼襽覉覍覐覔覕覛覜覟覠覥覰覴覵覶覷覼觔觕觖觗觘觥觩觫觭觱觳觶觹觽觿訄訅訇訏訑訒訔訕訞訠訢訤訦訫訬訯訵訷訽訾詀詃詅詇詉詍詎詓詖詗詘詜詝詡詥詧詵詶詷詹詺詻詾詿誀誃誆誋誏誐誒誖誗誙誟誧誩誮誯誳����������������������������������檗蘗檻櫃櫂檸檳檬櫞櫑櫟檪櫚櫪櫻欅蘖櫺欒欖鬱欟欸欷盜欹飮歇歃歉歐歙歔歛歟歡歸歹歿殀殄殃殍殘殕殞殤殪殫殯殲殱殳殷殼毆毋毓毟毬毫毳毯麾氈氓气氛氤氣汞汕汢汪沂沍沚沁沛汾汨汳沒沐泄泱泓沽泗泅泝沮沱沾�".split(""); +for(j = 0; j != D[221].length; ++j) if(D[221][j].charCodeAt(0) !== 0xFFFD) { e[D[221][j]] = 56576 + j; d[56576 + j] = D[221][j];} +D[222] = "���������������������������������誶誷誻誾諃諆諈諉諊諑諓諔諕諗諝諟諬諰諴諵諶諼諿謅謆謋謑謜謞謟謊謭謰謷謼譂譃譄譅譆譈譒譓譔譙譍譞譣譭譶譸譹譼譾讁讄讅讋讍讏讔讕讜讞讟谸谹谽谾豅豇豉豋豏豑豓豔豗豘豛豝豙豣豤豦豨豩豭豳豵豶豻豾貆����������������������������������沺泛泯泙泪洟衍洶洫洽洸洙洵洳洒洌浣涓浤浚浹浙涎涕濤涅淹渕渊涵淇淦涸淆淬淞淌淨淒淅淺淙淤淕淪淮渭湮渮渙湲湟渾渣湫渫湶湍渟湃渺湎渤滿渝游溂溪溘滉溷滓溽溯滄溲滔滕溏溥滂溟潁漑灌滬滸滾漿滲漱滯漲滌�".split(""); +for(j = 0; j != D[222].length; ++j) if(D[222][j].charCodeAt(0) !== 0xFFFD) { e[D[222][j]] = 56832 + j; d[56832 + j] = D[222][j];} +D[223] = "���������������������������������貇貋貐貒貓貙貛貜貤貹貺賅賆賉賋賏賖賕賙賝賡賨賬賯賰賲賵賷賸賾賿贁贃贉贒贗贛赥赩赬赮赿趂趄趈趍趐趑趕趞趟趠趦趫趬趯趲趵趷趹趻跀跅跆跇跈跊跎跑跔跕跗跙跤跥跧跬跰趼跱跲跴跽踁踄踅踆踋踑踔踖踠踡踢����������������������������������漾漓滷澆潺潸澁澀潯潛濳潭澂潼潘澎澑濂潦澳澣澡澤澹濆澪濟濕濬濔濘濱濮濛瀉瀋濺瀑瀁瀏濾瀛瀚潴瀝瀘瀟瀰瀾瀲灑灣炙炒炯烱炬炸炳炮烟烋烝烙焉烽焜焙煥煕熈煦煢煌煖煬熏燻熄熕熨熬燗熹熾燒燉燔燎燠燬燧燵燼�".split(""); +for(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];} +D[224] = "���������������������������������踣踦踧踱踳踶踷踸踹踽蹀蹁蹋蹍蹎蹏蹔蹛蹜蹝蹞蹡蹢蹩蹬蹭蹯蹰蹱蹹蹺蹻躂躃躉躐躒躕躚躛躝躞躢躧躩躭躮躳躵躺躻軀軁軃軄軇軏軑軔軜軨軮軰軱軷軹軺軭輀輂輇輈輏輐輖輗輘輞輠輡輣輥輧輨輬輭輮輴輵輶輷輺轀轁����������������������������������燹燿爍爐爛爨爭爬爰爲爻爼爿牀牆牋牘牴牾犂犁犇犒犖犢犧犹犲狃狆狄狎狒狢狠狡狹狷倏猗猊猜猖猝猴猯猩猥猾獎獏默獗獪獨獰獸獵獻獺珈玳珎玻珀珥珮珞璢琅瑯琥珸琲琺瑕琿瑟瑙瑁瑜瑩瑰瑣瑪瑶瑾璋璞璧瓊瓏瓔珱�".split(""); +for(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];} +D[225] = "���������������������������������轃轇轏轑轒轓轔轕轘轝轞轥辝辠辡辤辥辦辵辶辸达迀迁迆迊迋迍运迒迓迕迠迣迤迨迮迱迵迶迻迾适逄逈逌逘逛逨逩逯逪逬逭逳逴逷逿遃遄遌遛遝遢遦遧遬遰遴遹邅邈邋邌邎邐邕邗邘邙邛邠邡邢邥邰邲邳邴邶邽郌邾郃����������������������������������瓠瓣瓧瓩瓮瓲瓰瓱瓸瓷甄甃甅甌甎甍甕甓甞甦甬甼畄畍畊畉畛畆畚畩畤畧畫畭畸當疆疇畴疊疉疂疔疚疝疥疣痂疳痃疵疽疸疼疱痍痊痒痙痣痞痾痿痼瘁痰痺痲痳瘋瘍瘉瘟瘧瘠瘡瘢瘤瘴瘰瘻癇癈癆癜癘癡癢癨癩癪癧癬癰�".split(""); +for(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];} +D[226] = "���������������������������������郄郅郇郈郕郗郘郙郜郝郟郥郒郶郫郯郰郴郾郿鄀鄄鄅鄆鄈鄍鄐鄔鄖鄗鄘鄚鄜鄞鄠鄥鄢鄣鄧鄩鄮鄯鄱鄴鄶鄷鄹鄺鄼鄽酃酇酈酏酓酗酙酚酛酡酤酧酭酴酹酺酻醁醃醅醆醊醎醑醓醔醕醘醞醡醦醨醬醭醮醰醱醲醳醶醻醼醽醿����������������������������������癲癶癸發皀皃皈皋皎皖皓皙皚皰皴皸皹皺盂盍盖盒盞盡盥盧盪蘯盻眈眇眄眩眤眞眥眦眛眷眸睇睚睨睫睛睥睿睾睹瞎瞋瞑瞠瞞瞰瞶瞹瞿瞼瞽瞻矇矍矗矚矜矣矮矼砌砒礦砠礪硅碎硴碆硼碚碌碣碵碪碯磑磆磋磔碾碼磅磊磬�".split(""); +for(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];} +D[227] = "���������������������������������釂釃釅釓釔釗釙釚釞釤釥釩釪釬釭釮釯釰釱釷釹釻釽鈀鈁鈄鈅鈆鈇鈉鈊鈌鈐鈒鈓鈖鈘鈜鈝鈣鈤鈥鈦鈨鈮鈯鈰鈳鈵鈶鈸鈹鈺鈼鈾鉀鉂鉃鉆鉇鉊鉍鉎鉏鉑鉘鉙鉜鉝鉠鉡鉥鉧鉨鉩鉮鉯鉰鉵鉶鉷鉸鉹鉻鉼鉽鉿銈銉銊銍銎銒銗����������������������������������磧磚磽磴礇礒礑礙礬礫祀祠祗祟祚祕祓祺祿禊禝禧齋禪禮禳禹禺秉秕秧秬秡秣稈稍稘稙稠稟禀稱稻稾稷穃穗穉穡穢穩龝穰穹穽窈窗窕窘窖窩竈窰窶竅竄窿邃竇竊竍竏竕竓站竚竝竡竢竦竭竰笂笏笊笆笳笘笙笞笵笨笶筐�".split(""); +for(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];} +D[228] = "���������������������������������銙銟銠銤銥銧銨銫銯銲銶銸銺銻銼銽銿鋀鋁鋂鋃鋅鋆鋇鋈鋋鋌鋍鋎鋐鋓鋕鋗鋘鋙鋜鋝鋟鋠鋡鋣鋥鋧鋨鋬鋮鋰鋹鋻鋿錀錂錈錍錑錔錕錜錝錞錟錡錤錥錧錩錪錳錴錶錷鍇鍈鍉鍐鍑鍒鍕鍗鍘鍚鍞鍤鍥鍧鍩鍪鍭鍯鍰鍱鍳鍴鍶����������������������������������筺笄筍笋筌筅筵筥筴筧筰筱筬筮箝箘箟箍箜箚箋箒箏筝箙篋篁篌篏箴篆篝篩簑簔篦篥籠簀簇簓篳篷簗簍篶簣簧簪簟簷簫簽籌籃籔籏籀籐籘籟籤籖籥籬籵粃粐粤粭粢粫粡粨粳粲粱粮粹粽糀糅糂糘糒糜糢鬻糯糲糴糶糺紆�".split(""); +for(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];} +D[229] = "���������������������������������鍺鍽鍿鎀鎁鎂鎈鎊鎋鎍鎏鎒鎕鎘鎛鎞鎡鎣鎤鎦鎨鎫鎴鎵鎶鎺鎩鏁鏄鏅鏆鏇鏉鏊鏋鏌鏍鏓鏙鏜鏞鏟鏢鏦鏧鏹鏷鏸鏺鏻鏽鐁鐂鐄鐈鐉鐍鐎鐏鐕鐖鐗鐟鐮鐯鐱鐲鐳鐴鐻鐿鐽鑃鑅鑈鑊鑌鑕鑙鑜鑟鑡鑣鑨鑫鑭鑮鑯鑱鑲钄钃镸镹����������������������������������紂紜紕紊絅絋紮紲紿紵絆絳絖絎絲絨絮絏絣經綉絛綏絽綛綺綮綣綵緇綽綫總綢綯緜綸綟綰緘緝緤緞緻緲緡縅縊縣縡縒縱縟縉縋縢繆繦縻縵縹繃縷縲縺繧繝繖繞繙繚繹繪繩繼繻纃緕繽辮繿纈纉續纒纐纓纔纖纎纛纜缸缺�".split(""); +for(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];} +D[230] = "���������������������������������镾閄閈閌閍閎閝閞閟閡閦閩閫閬閴閶閺閽閿闆闈闉闋闐闑闒闓闙闚闝闞闟闠闤闦阝阞阢阤阥阦阬阱阳阷阸阹阺阼阽陁陒陔陖陗陘陡陮陴陻陼陾陿隁隂隃隄隉隑隖隚隝隟隤隥隦隩隮隯隳隺雊雒嶲雘雚雝雞雟雩雯雱雺霂����������������������������������罅罌罍罎罐网罕罔罘罟罠罨罩罧罸羂羆羃羈羇羌羔羞羝羚羣羯羲羹羮羶羸譱翅翆翊翕翔翡翦翩翳翹飜耆耄耋耒耘耙耜耡耨耿耻聊聆聒聘聚聟聢聨聳聲聰聶聹聽聿肄肆肅肛肓肚肭冐肬胛胥胙胝胄胚胖脉胯胱脛脩脣脯腋�".split(""); +for(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];} +D[231] = "���������������������������������霃霅霉霚霛霝霡霢霣霨霱霳靁靃靊靎靏靕靗靘靚靛靣靧靪靮靳靶靷靸靻靽靿鞀鞉鞕鞖鞗鞙鞚鞞鞟鞢鞬鞮鞱鞲鞵鞶鞸鞹鞺鞼鞾鞿韁韄韅韇韉韊韌韍韎韐韑韔韗韘韙韝韞韠韛韡韤韯韱韴韷韸韺頇頊頙頍頎頔頖頜頞頠頣頦����������������������������������隋腆脾腓腑胼腱腮腥腦腴膃膈膊膀膂膠膕膤膣腟膓膩膰膵膾膸膽臀臂膺臉臍臑臙臘臈臚臟臠臧臺臻臾舁舂舅與舊舍舐舖舩舫舸舳艀艙艘艝艚艟艤艢艨艪艫舮艱艷艸艾芍芒芫芟芻芬苡苣苟苒苴苳苺莓范苻苹苞茆苜茉苙�".split(""); +for(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];} +D[232] = "���������������������������������頫頮頯頰頲頳頵頥頾顄顇顊顑顒顓顖顗顙顚顢顣顥顦顪顬颫颭颮颰颴颷颸颺颻颿飂飅飈飌飡飣飥飦飧飪飳飶餂餇餈餑餕餖餗餚餛餜餟餢餦餧餫餱餲餳餴餵餹餺餻餼饀饁饆饇饈饍饎饔饘饙饛饜饞饟饠馛馝馟馦馰馱馲馵����������������������������������茵茴茖茲茱荀茹荐荅茯茫茗茘莅莚莪莟莢莖茣莎莇莊荼莵荳荵莠莉莨菴萓菫菎菽萃菘萋菁菷萇菠菲萍萢萠莽萸蔆菻葭萪萼蕚蒄葷葫蒭葮蒂葩葆萬葯葹萵蓊葢蒹蒿蒟蓙蓍蒻蓚蓐蓁蓆蓖蒡蔡蓿蓴蔗蔘蔬蔟蔕蔔蓼蕀蕣蕘蕈�".split(""); +for(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];} +D[233] = "���������������������������������馹馺馽馿駃駉駓駔駙駚駜駞駧駪駫駬駰駴駵駹駽駾騂騃騄騋騌騐騑騖騞騠騢騣騤騧騭騮騳騵騶騸驇驁驄驊驋驌驎驑驔驖驝骪骬骮骯骲骴骵骶骹骻骾骿髁髃髆髈髎髐髒髕髖髗髛髜髠髤髥髧髩髬髲髳髵髹髺髽髿鬀鬁鬂鬃����������������������������������蕁蘂蕋蕕薀薤薈薑薊薨蕭薔薛藪薇薜蕷蕾薐藉薺藏薹藐藕藝藥藜藹蘊蘓蘋藾藺蘆蘢蘚蘰蘿虍乕虔號虧虱蚓蚣蚩蚪蚋蚌蚶蚯蛄蛆蚰蛉蠣蚫蛔蛞蛩蛬蛟蛛蛯蜒蜆蜈蜀蜃蛻蜑蜉蜍蛹蜊蜴蜿蜷蜻蜥蜩蜚蝠蝟蝸蝌蝎蝴蝗蝨蝮蝙�".split(""); +for(j = 0; j != D[233].length; ++j) if(D[233][j].charCodeAt(0) !== 0xFFFD) { e[D[233][j]] = 59648 + j; d[59648 + j] = D[233][j];} +D[234] = "���������������������������������鬄鬅鬈鬉鬋鬌鬍鬎鬐鬒鬖鬙鬛鬜鬠鬦鬫鬭鬳鬴鬵鬷鬹鬺鬽魈魋魌魕魖魗魛魞魡魣魥魦魨魪魫魬魭魮魳魵魷魸魹魿鮀鮄鮅鮆鮇鮉鮊鮋鮍鮏鮐鮔鮚鮝鮞鮦鮧鮩鮬鮰鮱鮲鮷鮸鮻鮼鮾鮿鯁鯇鯈鯎鯐鯗鯘鯝鯟鯥鯧鯪鯫鯯鯳鯷鯸����������������������������������蝓蝣蝪蠅螢螟螂螯蟋螽蟀蟐雖螫蟄螳蟇蟆螻蟯蟲蟠蠏蠍蟾蟶蟷蠎蟒蠑蠖蠕蠢蠡蠱蠶蠹蠧蠻衄衂衒衙衞衢衫袁衾袞衵衽袵衲袂袗袒袮袙袢袍袤袰袿袱裃裄裔裘裙裝裹褂裼裴裨裲褄褌褊褓襃褞褥褪褫襁襄褻褶褸襌褝襠襞�".split(""); +for(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];} +D[235] = "���������������������������������鯹鯺鯽鯿鰀鰂鰋鰏鰑鰖鰘鰙鰚鰜鰞鰢鰣鰦鰧鰨鰩鰪鰱鰵鰶鰷鰽鱁鱃鱄鱅鱉鱊鱎鱏鱐鱓鱔鱖鱘鱛鱝鱞鱟鱣鱩鱪鱜鱫鱨鱮鱰鱲鱵鱷鱻鳦鳲鳷鳹鴋鴂鴑鴗鴘鴜鴝鴞鴯鴰鴲鴳鴴鴺鴼鵅鴽鵂鵃鵇鵊鵓鵔鵟鵣鵢鵥鵩鵪鵫鵰鵶鵷鵻����������������������������������襦襤襭襪襯襴襷襾覃覈覊覓覘覡覩覦覬覯覲覺覽覿觀觚觜觝觧觴觸訃訖訐訌訛訝訥訶詁詛詒詆詈詼詭詬詢誅誂誄誨誡誑誥誦誚誣諄諍諂諚諫諳諧諤諱謔諠諢諷諞諛謌謇謚諡謖謐謗謠謳鞫謦謫謾謨譁譌譏譎證譖譛譚譫�".split(""); +for(j = 0; j != D[235].length; ++j) if(D[235][j].charCodeAt(0) !== 0xFFFD) { e[D[235][j]] = 60160 + j; d[60160 + j] = D[235][j];} +D[236] = "���������������������������������鵼鵾鶃鶄鶆鶊鶍鶎鶒鶓鶕鶖鶗鶘鶡鶪鶬鶮鶱鶵鶹鶼鶿鷃鷇鷉鷊鷔鷕鷖鷗鷚鷞鷟鷠鷥鷧鷩鷫鷮鷰鷳鷴鷾鸊鸂鸇鸎鸐鸑鸒鸕鸖鸙鸜鸝鹺鹻鹼麀麂麃麄麅麇麎麏麖麘麛麞麤麨麬麮麯麰麳麴麵黆黈黋黕黟黤黧黬黭黮黰黱黲黵����������������������������������譟譬譯譴譽讀讌讎讒讓讖讙讚谺豁谿豈豌豎豐豕豢豬豸豺貂貉貅貊貍貎貔豼貘戝貭貪貽貲貳貮貶賈賁賤賣賚賽賺賻贄贅贊贇贏贍贐齎贓賍贔贖赧赭赱赳趁趙跂趾趺跏跚跖跌跛跋跪跫跟跣跼踈踉跿踝踞踐踟蹂踵踰踴蹊�".split(""); +for(j = 0; j != D[236].length; ++j) if(D[236][j].charCodeAt(0) !== 0xFFFD) { e[D[236][j]] = 60416 + j; d[60416 + j] = D[236][j];} +D[237] = "���������������������������������黸黿鼂鼃鼉鼏鼐鼑鼒鼔鼖鼗鼙鼚鼛鼟鼢鼦鼪鼫鼯鼱鼲鼴鼷鼹鼺鼼鼽鼿齁齃齄齅齆齇齓齕齖齗齘齚齝齞齨齩齭齮齯齰齱齳齵齺齽龏龐龑龒龔龖龗龞龡龢龣龥�������������������������������������������������������������蹇蹉蹌蹐蹈蹙蹤蹠踪蹣蹕蹶蹲蹼躁躇躅躄躋躊躓躑躔躙躪躡躬躰軆躱躾軅軈軋軛軣軼軻軫軾輊輅輕輒輙輓輜輟輛輌輦輳輻輹轅轂輾轌轉轆轎轗轜轢轣轤辜辟辣辭辯辷迚迥迢迪迯邇迴逅迹迺逑逕逡逍逞逖逋逧逶逵逹迸�".split(""); +for(j = 0; j != D[237].length; ++j) if(D[237][j].charCodeAt(0) !== 0xFFFD) { e[D[237][j]] = 60672 + j; d[60672 + j] = D[237][j];} +D[238] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������遏遐遑遒逎遉逾遖遘遞遨遯遶隨遲邂遽邁邀邊邉邏邨邯邱邵郢郤扈郛鄂鄒鄙鄲鄰酊酖酘酣酥酩酳酲醋醉醂醢醫醯醪醵醴醺釀釁釉釋釐釖釟釡釛釼釵釶鈞釿鈔鈬鈕鈑鉞鉗鉅鉉鉤鉈銕鈿鉋鉐銜銖銓銛鉚鋏銹銷鋩錏鋺鍄錮�".split(""); +for(j = 0; j != D[238].length; ++j) if(D[238][j].charCodeAt(0) !== 0xFFFD) { e[D[238][j]] = 60928 + j; d[60928 + j] = D[238][j];} +D[239] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������錙錢錚錣錺錵錻鍜鍠鍼鍮鍖鎰鎬鎭鎔鎹鏖鏗鏨鏥鏘鏃鏝鏐鏈鏤鐚鐔鐓鐃鐇鐐鐶鐫鐵鐡鐺鑁鑒鑄鑛鑠鑢鑞鑪鈩鑰鑵鑷鑽鑚鑼鑾钁鑿閂閇閊閔閖閘閙閠閨閧閭閼閻閹閾闊濶闃闍闌闕闔闖關闡闥闢阡阨阮阯陂陌陏陋陷陜陞�".split(""); +for(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];} +D[240] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������陝陟陦陲陬隍隘隕隗險隧隱隲隰隴隶隸隹雎雋雉雍襍雜霍雕雹霄霆霈霓霎霑霏霖霙霤霪霰霹霽霾靄靆靈靂靉靜靠靤靦靨勒靫靱靹鞅靼鞁靺鞆鞋鞏鞐鞜鞨鞦鞣鞳鞴韃韆韈韋韜韭齏韲竟韶韵頏頌頸頤頡頷頽顆顏顋顫顯顰�".split(""); +for(j = 0; j != D[240].length; ++j) if(D[240][j].charCodeAt(0) !== 0xFFFD) { e[D[240][j]] = 61440 + j; d[61440 + j] = D[240][j];} +D[241] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������顱顴顳颪颯颱颶飄飃飆飩飫餃餉餒餔餘餡餝餞餤餠餬餮餽餾饂饉饅饐饋饑饒饌饕馗馘馥馭馮馼駟駛駝駘駑駭駮駱駲駻駸騁騏騅駢騙騫騷驅驂驀驃騾驕驍驛驗驟驢驥驤驩驫驪骭骰骼髀髏髑髓體髞髟髢髣髦髯髫髮髴髱髷�".split(""); +for(j = 0; j != D[241].length; ++j) if(D[241][j].charCodeAt(0) !== 0xFFFD) { e[D[241][j]] = 61696 + j; d[61696 + j] = D[241][j];} +D[242] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������髻鬆鬘鬚鬟鬢鬣鬥鬧鬨鬩鬪鬮鬯鬲魄魃魏魍魎魑魘魴鮓鮃鮑鮖鮗鮟鮠鮨鮴鯀鯊鮹鯆鯏鯑鯒鯣鯢鯤鯔鯡鰺鯲鯱鯰鰕鰔鰉鰓鰌鰆鰈鰒鰊鰄鰮鰛鰥鰤鰡鰰鱇鰲鱆鰾鱚鱠鱧鱶鱸鳧鳬鳰鴉鴈鳫鴃鴆鴪鴦鶯鴣鴟鵄鴕鴒鵁鴿鴾鵆鵈�".split(""); +for(j = 0; j != D[242].length; ++j) if(D[242][j].charCodeAt(0) !== 0xFFFD) { e[D[242][j]] = 61952 + j; d[61952 + j] = D[242][j];} +D[243] = "���������������������������������ⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹ����������'"���炻仼僴凬匇匤﨎咊坙﨏塚增寬峵嵓﨑德悅愠敎�晥晴朗栁﨓﨔橫櫢淸淲瀨凞猪甁皂皞益礰礼神祥福竧靖精綠緖羽荢﨟薰蘒﨡蠇諸譿賴赶﨣﨤逸郞都鄕﨧﨨閒隆����������������������������������鵝鵞鵤鵑鵐鵙鵲鶉鶇鶫鵯鵺鶚鶤鶩鶲鷄鷁鶻鶸鶺鷆鷏鷂鷙鷓鷸鷦鷭鷯鷽鸚鸛鸞鹵鹹鹽麁麈麋麌麒麕麑麝麥麩麸麪麭靡黌黎黏黐黔黜點黝黠黥黨黯黴黶黷黹黻黼黽鼇鼈皷鼕鼡鼬鼾齊齒齔齣齟齠齡齦齧齬齪齷齲齶龕龜龠�".split(""); +for(j = 0; j != D[243].length; ++j) if(D[243][j].charCodeAt(0) !== 0xFFFD) { e[D[243][j]] = 62208 + j; d[62208 + j] = D[243][j];} +D[244] = "���������������������������������﨩霻�靑飯飼館馞髙魲鶴黑������������������������������������������������������靍�������������������������������������������������������������堯槇遙瑤凜熙�����������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[244].length; ++j) if(D[244][j].charCodeAt(0) !== 0xFFFD) { e[D[244][j]] = 62464 + j; d[62464 + j] = D[244][j];} +D[245] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[245].length; ++j) if(D[245][j].charCodeAt(0) !== 0xFFFD) { e[D[245][j]] = 62720 + j; d[62720 + j] = D[245][j];} +D[246] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[246].length; ++j) if(D[246][j].charCodeAt(0) !== 0xFFFD) { e[D[246][j]] = 62976 + j; d[62976 + j] = D[246][j];} +D[247] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[247].length; ++j) if(D[247][j].charCodeAt(0) !== 0xFFFD) { e[D[247][j]] = 63232 + j; d[63232 + j] = D[247][j];} +D[248] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[248].length; ++j) if(D[248][j].charCodeAt(0) !== 0xFFFD) { e[D[248][j]] = 63488 + j; d[63488 + j] = D[248][j];} +D[249] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[249].length; ++j) if(D[249][j].charCodeAt(0) !== 0xFFFD) { e[D[249][j]] = 63744 + j; d[63744 + j] = D[249][j];} +D[250] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[250].length; ++j) if(D[250][j].charCodeAt(0) !== 0xFFFD) { e[D[250][j]] = 64000 + j; d[64000 + j] = D[250][j];} +D[251] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[251].length; ++j) if(D[251][j].charCodeAt(0) !== 0xFFFD) { e[D[251][j]] = 64256 + j; d[64256 + j] = D[251][j];} +D[252] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[252].length; ++j) if(D[252][j].charCodeAt(0) !== 0xFFFD) { e[D[252][j]] = 64512 + j; d[64512 + j] = D[252][j];} +D[253] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[253].length; ++j) if(D[253][j].charCodeAt(0) !== 0xFFFD) { e[D[253][j]] = 64768 + j; d[64768 + j] = D[253][j];} +D[254] = "��������������������������������������������������������������������".split(""); +for(j = 0; j != D[254].length; ++j) if(D[254][j].charCodeAt(0) !== 0xFFFD) { e[D[254][j]] = 65024 + j; d[65024 + j] = D[254][j];} +return {"enc": e, "dec": d }; })(); +cptable[20936] = (function(){ var d = [], e = {}, D = [], j; +D[0] = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€���������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];} +D[161] = "����������������������������������������������������������������������������������������������������������������������������������������������������������������� 、。・ˉˇ¨〃々―~�…‘’“”〔〕〈〉《》「」『』〖〗【】±×÷∶∧∨∑∏∪∩∈∷√⊥∥∠⌒⊙∫∮≡≌≈∽∝≠≮≯≤≥∞∵∴♂♀°′″℃$¤¢£‰§№☆★○●◎◇◆□■△▲※→←↑↓〓�".split(""); +for(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];} +D[162] = "���������������������������������������������������������������������������������������������������������������������������������������������������������������������������������⒈⒉⒊⒋⒌⒍⒎⒏⒐⒑⒒⒓⒔⒕⒖⒗⒘⒙⒚⒛⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽⑾⑿⒀⒁⒂⒃⒄⒅⒆⒇①②③④⑤⑥⑦⑧⑨⑩��㈠㈡㈢㈣㈤㈥㈦㈧㈨㈩��ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫ���".split(""); +for(j = 0; j != D[162].length; ++j) if(D[162][j].charCodeAt(0) !== 0xFFFD) { e[D[162][j]] = 41472 + j; d[41472 + j] = D[162][j];} +D[163] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������!"#¥%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|} ̄�".split(""); +for(j = 0; j != D[163].length; ++j) if(D[163][j].charCodeAt(0) !== 0xFFFD) { e[D[163][j]] = 41728 + j; d[41728 + j] = D[163][j];} +D[164] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをん������������".split(""); +for(j = 0; j != D[164].length; ++j) if(D[164][j].charCodeAt(0) !== 0xFFFD) { e[D[164][j]] = 41984 + j; d[41984 + j] = D[164][j];} +D[165] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶ���������".split(""); +for(j = 0; j != D[165].length; ++j) if(D[165][j].charCodeAt(0) !== 0xFFFD) { e[D[165][j]] = 42240 + j; d[42240 + j] = D[165][j];} +D[166] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ��������αβγδεζηθικλμνξοπρστυφχψω���������������������������������������".split(""); +for(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];} +D[167] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ���������������абвгдеёжзийклмнопрстуфхцчшщъыьэюя��������������".split(""); +for(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];} +D[168] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������āáǎàēéěèīíǐìōóǒòūúǔùǖǘǚǜüê����������ㄅㄆㄇㄈㄉㄊㄋㄌㄍㄎㄏㄐㄑㄒㄓㄔㄕㄖㄗㄘㄙㄚㄛㄜㄝㄞㄟㄠㄡㄢㄣㄤㄥㄦㄧㄨㄩ����������������������".split(""); +for(j = 0; j != D[168].length; ++j) if(D[168][j].charCodeAt(0) !== 0xFFFD) { e[D[168][j]] = 43008 + j; d[43008 + j] = D[168][j];} +D[169] = "��������������������������������������������������������������������������������������������������������������������������������������������������������������������─━│┃┄┅┆┇┈┉┊┋┌┍┎┏┐┑┒┓└┕┖┗┘┙┚┛├┝┞┟┠┡┢┣┤┥┦┧┨┩┪┫┬┭┮┯┰┱┲┳┴┵┶┷┸┹┺┻┼┽┾┿╀╁╂╃╄╅╆╇╈╉╊╋����������������".split(""); +for(j = 0; j != D[169].length; ++j) if(D[169][j].charCodeAt(0) !== 0xFFFD) { e[D[169][j]] = 43264 + j; d[43264 + j] = D[169][j];} +D[176] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������啊阿埃挨哎唉哀皑癌蔼矮艾碍爱隘鞍氨安俺按暗岸胺案肮昂盎凹敖熬翱袄傲奥懊澳芭捌扒叭吧笆八疤巴拔跋靶把耙坝霸罢爸白柏百摆佰败拜稗斑班搬扳般颁板版扮拌伴瓣半办绊邦帮梆榜膀绑棒磅蚌镑傍谤苞胞包褒剥�".split(""); +for(j = 0; j != D[176].length; ++j) if(D[176][j].charCodeAt(0) !== 0xFFFD) { e[D[176][j]] = 45056 + j; d[45056 + j] = D[176][j];} +D[177] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������薄雹保堡饱宝抱报暴豹鲍爆杯碑悲卑北辈背贝钡倍狈备惫焙被奔苯本笨崩绷甭泵蹦迸逼鼻比鄙笔彼碧蓖蔽毕毙毖币庇痹闭敝弊必辟壁臂避陛鞭边编贬扁便变卞辨辩辫遍标彪膘表鳖憋别瘪彬斌濒滨宾摈兵冰柄丙秉饼炳�".split(""); +for(j = 0; j != D[177].length; ++j) if(D[177][j].charCodeAt(0) !== 0xFFFD) { e[D[177][j]] = 45312 + j; d[45312 + j] = D[177][j];} +D[178] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������病并玻菠播拨钵波博勃搏铂箔伯帛舶脖膊渤泊驳捕卜哺补埠不布步簿部怖擦猜裁材才财睬踩采彩菜蔡餐参蚕残惭惨灿苍舱仓沧藏操糙槽曹草厕策侧册测层蹭插叉茬茶查碴搽察岔差诧拆柴豺搀掺蝉馋谗缠铲产阐颤昌猖�".split(""); +for(j = 0; j != D[178].length; ++j) if(D[178][j].charCodeAt(0) !== 0xFFFD) { e[D[178][j]] = 45568 + j; d[45568 + j] = D[178][j];} +D[179] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������场尝常长偿肠厂敞畅唱倡超抄钞朝嘲潮巢吵炒车扯撤掣彻澈郴臣辰尘晨忱沉陈趁衬撑称城橙成呈乘程惩澄诚承逞骋秤吃痴持匙池迟弛驰耻齿侈尺赤翅斥炽充冲虫崇宠抽酬畴踌稠愁筹仇绸瞅丑臭初出橱厨躇锄雏滁除楚�".split(""); +for(j = 0; j != D[179].length; ++j) if(D[179][j].charCodeAt(0) !== 0xFFFD) { e[D[179][j]] = 45824 + j; d[45824 + j] = D[179][j];} +D[180] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������础储矗搐触处揣川穿椽传船喘串疮窗幢床闯创吹炊捶锤垂春椿醇唇淳纯蠢戳绰疵茨磁雌辞慈瓷词此刺赐次聪葱囱匆从丛凑粗醋簇促蹿篡窜摧崔催脆瘁粹淬翠村存寸磋撮搓措挫错搭达答瘩打大呆歹傣戴带殆代贷袋待逮�".split(""); +for(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];} +D[181] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������怠耽担丹单郸掸胆旦氮但惮淡诞弹蛋当挡党荡档刀捣蹈倒岛祷导到稻悼道盗德得的蹬灯登等瞪凳邓堤低滴迪敌笛狄涤翟嫡抵底地蒂第帝弟递缔颠掂滇碘点典靛垫电佃甸店惦奠淀殿碉叼雕凋刁掉吊钓调跌爹碟蝶迭谍叠�".split(""); +for(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];} +D[182] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������丁盯叮钉顶鼎锭定订丢东冬董懂动栋侗恫冻洞兜抖斗陡豆逗痘都督毒犊独读堵睹赌杜镀肚度渡妒端短锻段断缎堆兑队对墩吨蹲敦顿囤钝盾遁掇哆多夺垛躲朵跺舵剁惰堕蛾峨鹅俄额讹娥恶厄扼遏鄂饿恩而儿耳尔饵洱二�".split(""); +for(j = 0; j != D[182].length; ++j) if(D[182][j].charCodeAt(0) !== 0xFFFD) { e[D[182][j]] = 46592 + j; d[46592 + j] = D[182][j];} +D[183] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������贰发罚筏伐乏阀法珐藩帆番翻樊矾钒繁凡烦反返范贩犯饭泛坊芳方肪房防妨仿访纺放菲非啡飞肥匪诽吠肺废沸费芬酚吩氛分纷坟焚汾粉奋份忿愤粪丰封枫蜂峰锋风疯烽逢冯缝讽奉凤佛否夫敷肤孵扶拂辐幅氟符伏俘服�".split(""); +for(j = 0; j != D[183].length; ++j) if(D[183][j].charCodeAt(0) !== 0xFFFD) { e[D[183][j]] = 46848 + j; d[46848 + j] = D[183][j];} +D[184] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������浮涪福袱弗甫抚辅俯釜斧脯腑府腐赴副覆赋复傅付阜父腹负富讣附妇缚咐噶嘎该改概钙盖溉干甘杆柑竿肝赶感秆敢赣冈刚钢缸肛纲岗港杠篙皋高膏羔糕搞镐稿告哥歌搁戈鸽胳疙割革葛格蛤阁隔铬个各给根跟耕更庚羹�".split(""); +for(j = 0; j != D[184].length; ++j) if(D[184][j].charCodeAt(0) !== 0xFFFD) { e[D[184][j]] = 47104 + j; d[47104 + j] = D[184][j];} +D[185] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������埂耿梗工攻功恭龚供躬公宫弓巩汞拱贡共钩勾沟苟狗垢构购够辜菇咕箍估沽孤姑鼓古蛊骨谷股故顾固雇刮瓜剐寡挂褂乖拐怪棺关官冠观管馆罐惯灌贯光广逛瑰规圭硅归龟闺轨鬼诡癸桂柜跪贵刽辊滚棍锅郭国果裹过哈�".split(""); +for(j = 0; j != D[185].length; ++j) if(D[185][j].charCodeAt(0) !== 0xFFFD) { e[D[185][j]] = 47360 + j; d[47360 + j] = D[185][j];} +D[186] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������骸孩海氦亥害骇酣憨邯韩含涵寒函喊罕翰撼捍旱憾悍焊汗汉夯杭航壕嚎豪毫郝好耗号浩呵喝荷菏核禾和何合盒貉阂河涸赫褐鹤贺嘿黑痕很狠恨哼亨横衡恒轰哄烘虹鸿洪宏弘红喉侯猴吼厚候后呼乎忽瑚壶葫胡蝴狐糊湖�".split(""); +for(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];} +D[187] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������弧虎唬护互沪户花哗华猾滑画划化话槐徊怀淮坏欢环桓还缓换患唤痪豢焕涣宦幻荒慌黄磺蝗簧皇凰惶煌晃幌恍谎灰挥辉徽恢蛔回毁悔慧卉惠晦贿秽会烩汇讳诲绘荤昏婚魂浑混豁活伙火获或惑霍货祸击圾基机畸稽积箕�".split(""); +for(j = 0; j != D[187].length; ++j) if(D[187][j].charCodeAt(0) !== 0xFFFD) { e[D[187][j]] = 47872 + j; d[47872 + j] = D[187][j];} +D[188] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������肌饥迹激讥鸡姬绩缉吉极棘辑籍集及急疾汲即嫉级挤几脊己蓟技冀季伎祭剂悸济寄寂计记既忌际妓继纪嘉枷夹佳家加荚颊贾甲钾假稼价架驾嫁歼监坚尖笺间煎兼肩艰奸缄茧检柬碱硷拣捡简俭剪减荐槛鉴践贱见键箭件�".split(""); +for(j = 0; j != D[188].length; ++j) if(D[188][j].charCodeAt(0) !== 0xFFFD) { e[D[188][j]] = 48128 + j; d[48128 + j] = D[188][j];} +D[189] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������健舰剑饯渐溅涧建僵姜将浆江疆蒋桨奖讲匠酱降蕉椒礁焦胶交郊浇骄娇嚼搅铰矫侥脚狡角饺缴绞剿教酵轿较叫窖揭接皆秸街阶截劫节桔杰捷睫竭洁结解姐戒藉芥界借介疥诫届巾筋斤金今津襟紧锦仅谨进靳晋禁近烬浸�".split(""); +for(j = 0; j != D[189].length; ++j) if(D[189][j].charCodeAt(0) !== 0xFFFD) { e[D[189][j]] = 48384 + j; d[48384 + j] = D[189][j];} +D[190] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������尽劲荆兢茎睛晶鲸京惊精粳经井警景颈静境敬镜径痉靖竟竞净炯窘揪究纠玖韭久灸九酒厩救旧臼舅咎就疚鞠拘狙疽居驹菊局咀矩举沮聚拒据巨具距踞锯俱句惧炬剧捐鹃娟倦眷卷绢撅攫抉掘倔爵觉决诀绝均菌钧军君峻�".split(""); +for(j = 0; j != D[190].length; ++j) if(D[190][j].charCodeAt(0) !== 0xFFFD) { e[D[190][j]] = 48640 + j; d[48640 + j] = D[190][j];} +D[191] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������俊竣浚郡骏喀咖卡咯开揩楷凯慨刊堪勘坎砍看康慷糠扛抗亢炕考拷烤靠坷苛柯棵磕颗科壳咳可渴克刻客课肯啃垦恳坑吭空恐孔控抠口扣寇枯哭窟苦酷库裤夸垮挎跨胯块筷侩快宽款匡筐狂框矿眶旷况亏盔岿窥葵奎魁傀�".split(""); +for(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];} +D[192] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������馈愧溃坤昆捆困括扩廓阔垃拉喇蜡腊辣啦莱来赖蓝婪栏拦篮阑兰澜谰揽览懒缆烂滥琅榔狼廊郎朗浪捞劳牢老佬姥酪烙涝勒乐雷镭蕾磊累儡垒擂肋类泪棱楞冷厘梨犁黎篱狸离漓理李里鲤礼莉荔吏栗丽厉励砾历利傈例俐�".split(""); +for(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];} +D[193] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������痢立粒沥隶力璃哩俩联莲连镰廉怜涟帘敛脸链恋炼练粮凉梁粱良两辆量晾亮谅撩聊僚疗燎寥辽潦了撂镣廖料列裂烈劣猎琳林磷霖临邻鳞淋凛赁吝拎玲菱零龄铃伶羚凌灵陵岭领另令溜琉榴硫馏留刘瘤流柳六龙聋咙笼窿�".split(""); +for(j = 0; j != D[193].length; ++j) if(D[193][j].charCodeAt(0) !== 0xFFFD) { e[D[193][j]] = 49408 + j; d[49408 + j] = D[193][j];} +D[194] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������隆垄拢陇楼娄搂篓漏陋芦卢颅庐炉掳卤虏鲁麓碌露路赂鹿潞禄录陆戮驴吕铝侣旅履屡缕虑氯律率滤绿峦挛孪滦卵乱掠略抡轮伦仑沦纶论萝螺罗逻锣箩骡裸落洛骆络妈麻玛码蚂马骂嘛吗埋买麦卖迈脉瞒馒蛮满蔓曼慢漫�".split(""); +for(j = 0; j != D[194].length; ++j) if(D[194][j].charCodeAt(0) !== 0xFFFD) { e[D[194][j]] = 49664 + j; d[49664 + j] = D[194][j];} +D[195] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������谩芒茫盲氓忙莽猫茅锚毛矛铆卯茂冒帽貌贸么玫枚梅酶霉煤没眉媒镁每美昧寐妹媚门闷们萌蒙檬盟锰猛梦孟眯醚靡糜迷谜弥米秘觅泌蜜密幂棉眠绵冕免勉娩缅面苗描瞄藐秒渺庙妙蔑灭民抿皿敏悯闽明螟鸣铭名命谬摸�".split(""); +for(j = 0; j != D[195].length; ++j) if(D[195][j].charCodeAt(0) !== 0xFFFD) { e[D[195][j]] = 49920 + j; d[49920 + j] = D[195][j];} +D[196] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������摹蘑模膜磨摩魔抹末莫墨默沫漠寞陌谋牟某拇牡亩姆母墓暮幕募慕木目睦牧穆拿哪呐钠那娜纳氖乃奶耐奈南男难囊挠脑恼闹淖呢馁内嫩能妮霓倪泥尼拟你匿腻逆溺蔫拈年碾撵捻念娘酿鸟尿捏聂孽啮镊镍涅您柠狞凝宁�".split(""); +for(j = 0; j != D[196].length; ++j) if(D[196][j].charCodeAt(0) !== 0xFFFD) { e[D[196][j]] = 50176 + j; d[50176 + j] = D[196][j];} +D[197] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������拧泞牛扭钮纽脓浓农弄奴努怒女暖虐疟挪懦糯诺哦欧鸥殴藕呕偶沤啪趴爬帕怕琶拍排牌徘湃派攀潘盘磐盼畔判叛乓庞旁耪胖抛咆刨炮袍跑泡呸胚培裴赔陪配佩沛喷盆砰抨烹澎彭蓬棚硼篷膨朋鹏捧碰坯砒霹批披劈琵毗�".split(""); +for(j = 0; j != D[197].length; ++j) if(D[197][j].charCodeAt(0) !== 0xFFFD) { e[D[197][j]] = 50432 + j; d[50432 + j] = D[197][j];} +D[198] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������啤脾疲皮匹痞僻屁譬篇偏片骗飘漂瓢票撇瞥拼频贫品聘乒坪苹萍平凭瓶评屏坡泼颇婆破魄迫粕剖扑铺仆莆葡菩蒲埔朴圃普浦谱曝瀑期欺栖戚妻七凄漆柒沏其棋奇歧畦崎脐齐旗祈祁骑起岂乞企启契砌器气迄弃汽泣讫掐�".split(""); +for(j = 0; j != D[198].length; ++j) if(D[198][j].charCodeAt(0) !== 0xFFFD) { e[D[198][j]] = 50688 + j; d[50688 + j] = D[198][j];} +D[199] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������恰洽牵扦钎铅千迁签仟谦乾黔钱钳前潜遣浅谴堑嵌欠歉枪呛腔羌墙蔷强抢橇锹敲悄桥瞧乔侨巧鞘撬翘峭俏窍切茄且怯窃钦侵亲秦琴勤芹擒禽寝沁青轻氢倾卿清擎晴氰情顷请庆琼穷秋丘邱球求囚酋泅趋区蛆曲躯屈驱渠�".split(""); +for(j = 0; j != D[199].length; ++j) if(D[199][j].charCodeAt(0) !== 0xFFFD) { e[D[199][j]] = 50944 + j; d[50944 + j] = D[199][j];} +D[200] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������取娶龋趣去圈颧权醛泉全痊拳犬券劝缺炔瘸却鹊榷确雀裙群然燃冉染瓤壤攘嚷让饶扰绕惹热壬仁人忍韧任认刃妊纫扔仍日戎茸蓉荣融熔溶容绒冗揉柔肉茹蠕儒孺如辱乳汝入褥软阮蕊瑞锐闰润若弱撒洒萨腮鳃塞赛三叁�".split(""); +for(j = 0; j != D[200].length; ++j) if(D[200][j].charCodeAt(0) !== 0xFFFD) { e[D[200][j]] = 51200 + j; d[51200 + j] = D[200][j];} +D[201] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������伞散桑嗓丧搔骚扫嫂瑟色涩森僧莎砂杀刹沙纱傻啥煞筛晒珊苫杉山删煽衫闪陕擅赡膳善汕扇缮墒伤商赏晌上尚裳梢捎稍烧芍勺韶少哨邵绍奢赊蛇舌舍赦摄射慑涉社设砷申呻伸身深娠绅神沈审婶甚肾慎渗声生甥牲升绳�".split(""); +for(j = 0; j != D[201].length; ++j) if(D[201][j].charCodeAt(0) !== 0xFFFD) { e[D[201][j]] = 51456 + j; d[51456 + j] = D[201][j];} +D[202] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������省盛剩胜圣师失狮施湿诗尸虱十石拾时什食蚀实识史矢使屎驶始式示士世柿事拭誓逝势是嗜噬适仕侍释饰氏市恃室视试收手首守寿授售受瘦兽蔬枢梳殊抒输叔舒淑疏书赎孰熟薯暑曙署蜀黍鼠属术述树束戍竖墅庶数漱�".split(""); +for(j = 0; j != D[202].length; ++j) if(D[202][j].charCodeAt(0) !== 0xFFFD) { e[D[202][j]] = 51712 + j; d[51712 + j] = D[202][j];} +D[203] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������恕刷耍摔衰甩帅栓拴霜双爽谁水睡税吮瞬顺舜说硕朔烁斯撕嘶思私司丝死肆寺嗣四伺似饲巳松耸怂颂送宋讼诵搜艘擞嗽苏酥俗素速粟僳塑溯宿诉肃酸蒜算虽隋随绥髓碎岁穗遂隧祟孙损笋蓑梭唆缩琐索锁所塌他它她塔�".split(""); +for(j = 0; j != D[203].length; ++j) if(D[203][j].charCodeAt(0) !== 0xFFFD) { e[D[203][j]] = 51968 + j; d[51968 + j] = D[203][j];} +D[204] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������獭挞蹋踏胎苔抬台泰酞太态汰坍摊贪瘫滩坛檀痰潭谭谈坦毯袒碳探叹炭汤塘搪堂棠膛唐糖倘躺淌趟烫掏涛滔绦萄桃逃淘陶讨套特藤腾疼誊梯剔踢锑提题蹄啼体替嚏惕涕剃屉天添填田甜恬舔腆挑条迢眺跳贴铁帖厅听烃�".split(""); +for(j = 0; j != D[204].length; ++j) if(D[204][j].charCodeAt(0) !== 0xFFFD) { e[D[204][j]] = 52224 + j; d[52224 + j] = D[204][j];} +D[205] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������汀廷停亭庭挺艇通桐酮瞳同铜彤童桶捅筒统痛偷投头透凸秃突图徒途涂屠土吐兔湍团推颓腿蜕褪退吞屯臀拖托脱鸵陀驮驼椭妥拓唾挖哇蛙洼娃瓦袜歪外豌弯湾玩顽丸烷完碗挽晚皖惋宛婉万腕汪王亡枉网往旺望忘妄威�".split(""); +for(j = 0; j != D[205].length; ++j) if(D[205][j].charCodeAt(0) !== 0xFFFD) { e[D[205][j]] = 52480 + j; d[52480 + j] = D[205][j];} +D[206] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������巍微危韦违桅围唯惟为潍维苇萎委伟伪尾纬未蔚味畏胃喂魏位渭谓尉慰卫瘟温蚊文闻纹吻稳紊问嗡翁瓮挝蜗涡窝我斡卧握沃巫呜钨乌污诬屋无芜梧吾吴毋武五捂午舞伍侮坞戊雾晤物勿务悟误昔熙析西硒矽晰嘻吸锡牺�".split(""); +for(j = 0; j != D[206].length; ++j) if(D[206][j].charCodeAt(0) !== 0xFFFD) { e[D[206][j]] = 52736 + j; d[52736 + j] = D[206][j];} +D[207] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������稀息希悉膝夕惜熄烯溪汐犀檄袭席习媳喜铣洗系隙戏细瞎虾匣霞辖暇峡侠狭下厦夏吓掀锨先仙鲜纤咸贤衔舷闲涎弦嫌显险现献县腺馅羡宪陷限线相厢镶香箱襄湘乡翔祥详想响享项巷橡像向象萧硝霄削哮嚣销消宵淆晓�".split(""); +for(j = 0; j != D[207].length; ++j) if(D[207][j].charCodeAt(0) !== 0xFFFD) { e[D[207][j]] = 52992 + j; d[52992 + j] = D[207][j];} +D[208] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������小孝校肖啸笑效楔些歇蝎鞋协挟携邪斜胁谐写械卸蟹懈泄泻谢屑薪芯锌欣辛新忻心信衅星腥猩惺兴刑型形邢行醒幸杏性姓兄凶胸匈汹雄熊休修羞朽嗅锈秀袖绣墟戌需虚嘘须徐许蓄酗叙旭序畜恤絮婿绪续轩喧宣悬旋玄�".split(""); +for(j = 0; j != D[208].length; ++j) if(D[208][j].charCodeAt(0) !== 0xFFFD) { e[D[208][j]] = 53248 + j; d[53248 + j] = D[208][j];} +D[209] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������选癣眩绚靴薛学穴雪血勋熏循旬询寻驯巡殉汛训讯逊迅压押鸦鸭呀丫芽牙蚜崖衙涯雅哑亚讶焉咽阉烟淹盐严研蜒岩延言颜阎炎沿奄掩眼衍演艳堰燕厌砚雁唁彦焰宴谚验殃央鸯秧杨扬佯疡羊洋阳氧仰痒养样漾邀腰妖瑶�".split(""); +for(j = 0; j != D[209].length; ++j) if(D[209][j].charCodeAt(0) !== 0xFFFD) { e[D[209][j]] = 53504 + j; d[53504 + j] = D[209][j];} +D[210] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������摇尧遥窑谣姚咬舀药要耀椰噎耶爷野冶也页掖业叶曳腋夜液一壹医揖铱依伊衣颐夷遗移仪胰疑沂宜姨彝椅蚁倚已乙矣以艺抑易邑屹亿役臆逸肄疫亦裔意毅忆义益溢诣议谊译异翼翌绎茵荫因殷音阴姻吟银淫寅饮尹引隐�".split(""); +for(j = 0; j != D[210].length; ++j) if(D[210][j].charCodeAt(0) !== 0xFFFD) { e[D[210][j]] = 53760 + j; d[53760 + j] = D[210][j];} +D[211] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������印英樱婴鹰应缨莹萤营荧蝇迎赢盈影颖硬映哟拥佣臃痈庸雍踊蛹咏泳涌永恿勇用幽优悠忧尤由邮铀犹油游酉有友右佑釉诱又幼迂淤于盂榆虞愚舆余俞逾鱼愉渝渔隅予娱雨与屿禹宇语羽玉域芋郁吁遇喻峪御愈欲狱育誉�".split(""); +for(j = 0; j != D[211].length; ++j) if(D[211][j].charCodeAt(0) !== 0xFFFD) { e[D[211][j]] = 54016 + j; d[54016 + j] = D[211][j];} +D[212] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������浴寓裕预豫驭鸳渊冤元垣袁原援辕园员圆猿源缘远苑愿怨院曰约越跃钥岳粤月悦阅耘云郧匀陨允运蕴酝晕韵孕匝砸杂栽哉灾宰载再在咱攒暂赞赃脏葬遭糟凿藻枣早澡蚤躁噪造皂灶燥责择则泽贼怎增憎曾赠扎喳渣札轧�".split(""); +for(j = 0; j != D[212].length; ++j) if(D[212][j].charCodeAt(0) !== 0xFFFD) { e[D[212][j]] = 54272 + j; d[54272 + j] = D[212][j];} +D[213] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������铡闸眨栅榨咋乍炸诈摘斋宅窄债寨瞻毡詹粘沾盏斩辗崭展蘸栈占战站湛绽樟章彰漳张掌涨杖丈帐账仗胀瘴障招昭找沼赵照罩兆肇召遮折哲蛰辙者锗蔗这浙珍斟真甄砧臻贞针侦枕疹诊震振镇阵蒸挣睁征狰争怔整拯正政�".split(""); +for(j = 0; j != D[213].length; ++j) if(D[213][j].charCodeAt(0) !== 0xFFFD) { e[D[213][j]] = 54528 + j; d[54528 + j] = D[213][j];} +D[214] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������帧症郑证芝枝支吱蜘知肢脂汁之织职直植殖执值侄址指止趾只旨纸志挚掷至致置帜峙制智秩稚质炙痔滞治窒中盅忠钟衷终种肿重仲众舟周州洲诌粥轴肘帚咒皱宙昼骤珠株蛛朱猪诸诛逐竹烛煮拄瞩嘱主著柱助蛀贮铸筑�".split(""); +for(j = 0; j != D[214].length; ++j) if(D[214][j].charCodeAt(0) !== 0xFFFD) { e[D[214][j]] = 54784 + j; d[54784 + j] = D[214][j];} +D[215] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������住注祝驻抓爪拽专砖转撰赚篆桩庄装妆撞壮状椎锥追赘坠缀谆准捉拙卓桌琢茁酌啄着灼浊兹咨资姿滋淄孜紫仔籽滓子自渍字鬃棕踪宗综总纵邹走奏揍租足卒族祖诅阻组钻纂嘴醉最罪尊遵昨左佐柞做作坐座������".split(""); +for(j = 0; j != D[215].length; ++j) if(D[215][j].charCodeAt(0) !== 0xFFFD) { e[D[215][j]] = 55040 + j; d[55040 + j] = D[215][j];} +D[216] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������亍丌兀丐廿卅丕亘丞鬲孬噩丨禺丿匕乇夭爻卮氐囟胤馗毓睾鼗丶亟鼐乜乩亓芈孛啬嘏仄厍厝厣厥厮靥赝匚叵匦匮匾赜卦卣刂刈刎刭刳刿剀剌剞剡剜蒯剽劂劁劐劓冂罔亻仃仉仂仨仡仫仞伛仳伢佤仵伥伧伉伫佞佧攸佚佝�".split(""); +for(j = 0; j != D[216].length; ++j) if(D[216][j].charCodeAt(0) !== 0xFFFD) { e[D[216][j]] = 55296 + j; d[55296 + j] = D[216][j];} +D[217] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������佟佗伲伽佶佴侑侉侃侏佾佻侪佼侬侔俦俨俪俅俚俣俜俑俟俸倩偌俳倬倏倮倭俾倜倌倥倨偾偃偕偈偎偬偻傥傧傩傺僖儆僭僬僦僮儇儋仝氽佘佥俎龠汆籴兮巽黉馘冁夔勹匍訇匐凫夙兕亠兖亳衮袤亵脔裒禀嬴蠃羸冫冱冽冼�".split(""); +for(j = 0; j != D[217].length; ++j) if(D[217][j].charCodeAt(0) !== 0xFFFD) { e[D[217][j]] = 55552 + j; d[55552 + j] = D[217][j];} +D[218] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������凇冖冢冥讠讦讧讪讴讵讷诂诃诋诏诎诒诓诔诖诘诙诜诟诠诤诨诩诮诰诳诶诹诼诿谀谂谄谇谌谏谑谒谔谕谖谙谛谘谝谟谠谡谥谧谪谫谮谯谲谳谵谶卩卺阝阢阡阱阪阽阼陂陉陔陟陧陬陲陴隈隍隗隰邗邛邝邙邬邡邴邳邶邺�".split(""); +for(j = 0; j != D[218].length; ++j) if(D[218][j].charCodeAt(0) !== 0xFFFD) { e[D[218][j]] = 55808 + j; d[55808 + j] = D[218][j];} +D[219] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������邸邰郏郅邾郐郄郇郓郦郢郜郗郛郫郯郾鄄鄢鄞鄣鄱鄯鄹酃酆刍奂劢劬劭劾哿勐勖勰叟燮矍廴凵凼鬯厶弁畚巯坌垩垡塾墼壅壑圩圬圪圳圹圮圯坜圻坂坩垅坫垆坼坻坨坭坶坳垭垤垌垲埏垧垴垓垠埕埘埚埙埒垸埴埯埸埤埝�".split(""); +for(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];} +D[220] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������堋堍埽埭堀堞堙塄堠塥塬墁墉墚墀馨鼙懿艹艽艿芏芊芨芄芎芑芗芙芫芸芾芰苈苊苣芘芷芮苋苌苁芩芴芡芪芟苄苎芤苡茉苷苤茏茇苜苴苒苘茌苻苓茑茚茆茔茕苠苕茜荑荛荜茈莒茼茴茱莛荞茯荏荇荃荟荀茗荠茭茺茳荦荥�".split(""); +for(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];} +D[221] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������荨茛荩荬荪荭荮莰荸莳莴莠莪莓莜莅荼莶莩荽莸荻莘莞莨莺莼菁萁菥菘堇萘萋菝菽菖萜萸萑萆菔菟萏萃菸菹菪菅菀萦菰菡葜葑葚葙葳蒇蒈葺蒉葸萼葆葩葶蒌蒎萱葭蓁蓍蓐蓦蒽蓓蓊蒿蒺蓠蒡蒹蒴蒗蓥蓣蔌甍蔸蓰蔹蔟蔺�".split(""); +for(j = 0; j != D[221].length; ++j) if(D[221][j].charCodeAt(0) !== 0xFFFD) { e[D[221][j]] = 56576 + j; d[56576 + j] = D[221][j];} +D[222] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������蕖蔻蓿蓼蕙蕈蕨蕤蕞蕺瞢蕃蕲蕻薤薨薇薏蕹薮薜薅薹薷薰藓藁藜藿蘧蘅蘩蘖蘼廾弈夼奁耷奕奚奘匏尢尥尬尴扌扪抟抻拊拚拗拮挢拶挹捋捃掭揶捱捺掎掴捭掬掊捩掮掼揲揸揠揿揄揞揎摒揆掾摅摁搋搛搠搌搦搡摞撄摭撖�".split(""); +for(j = 0; j != D[222].length; ++j) if(D[222][j].charCodeAt(0) !== 0xFFFD) { e[D[222][j]] = 56832 + j; d[56832 + j] = D[222][j];} +D[223] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������摺撷撸撙撺擀擐擗擤擢攉攥攮弋忒甙弑卟叱叽叩叨叻吒吖吆呋呒呓呔呖呃吡呗呙吣吲咂咔呷呱呤咚咛咄呶呦咝哐咭哂咴哒咧咦哓哔呲咣哕咻咿哌哙哚哜咩咪咤哝哏哞唛哧唠哽唔哳唢唣唏唑唧唪啧喏喵啉啭啁啕唿啐唼�".split(""); +for(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];} +D[224] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������唷啖啵啶啷唳唰啜喋嗒喃喱喹喈喁喟啾嗖喑啻嗟喽喾喔喙嗪嗷嗉嘟嗑嗫嗬嗔嗦嗝嗄嗯嗥嗲嗳嗌嗍嗨嗵嗤辔嘞嘈嘌嘁嘤嘣嗾嘀嘧嘭噘嘹噗嘬噍噢噙噜噌噔嚆噤噱噫噻噼嚅嚓嚯囔囗囝囡囵囫囹囿圄圊圉圜帏帙帔帑帱帻帼�".split(""); +for(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];} +D[225] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������帷幄幔幛幞幡岌屺岍岐岖岈岘岙岑岚岜岵岢岽岬岫岱岣峁岷峄峒峤峋峥崂崃崧崦崮崤崞崆崛嵘崾崴崽嵬嵛嵯嵝嵫嵋嵊嵩嵴嶂嶙嶝豳嶷巅彳彷徂徇徉後徕徙徜徨徭徵徼衢彡犭犰犴犷犸狃狁狎狍狒狨狯狩狲狴狷猁狳猃狺�".split(""); +for(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];} +D[226] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������狻猗猓猡猊猞猝猕猢猹猥猬猸猱獐獍獗獠獬獯獾舛夥飧夤夂饣饧饨饩饪饫饬饴饷饽馀馄馇馊馍馐馑馓馔馕庀庑庋庖庥庠庹庵庾庳赓廒廑廛廨廪膺忄忉忖忏怃忮怄忡忤忾怅怆忪忭忸怙怵怦怛怏怍怩怫怊怿怡恸恹恻恺恂�".split(""); +for(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];} +D[227] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������恪恽悖悚悭悝悃悒悌悛惬悻悱惝惘惆惚悴愠愦愕愣惴愀愎愫慊慵憬憔憧憷懔懵忝隳闩闫闱闳闵闶闼闾阃阄阆阈阊阋阌阍阏阒阕阖阗阙阚丬爿戕氵汔汜汊沣沅沐沔沌汨汩汴汶沆沩泐泔沭泷泸泱泗沲泠泖泺泫泮沱泓泯泾�".split(""); +for(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];} +D[228] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������洹洧洌浃浈洇洄洙洎洫浍洮洵洚浏浒浔洳涑浯涞涠浞涓涔浜浠浼浣渚淇淅淞渎涿淠渑淦淝淙渖涫渌涮渫湮湎湫溲湟溆湓湔渲渥湄滟溱溘滠漭滢溥溧溽溻溷滗溴滏溏滂溟潢潆潇漤漕滹漯漶潋潴漪漉漩澉澍澌潸潲潼潺濑�".split(""); +for(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];} +D[229] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������濉澧澹澶濂濡濮濞濠濯瀚瀣瀛瀹瀵灏灞宀宄宕宓宥宸甯骞搴寤寮褰寰蹇謇辶迓迕迥迮迤迩迦迳迨逅逄逋逦逑逍逖逡逵逶逭逯遄遑遒遐遨遘遢遛暹遴遽邂邈邃邋彐彗彖彘尻咫屐屙孱屣屦羼弪弩弭艴弼鬻屮妁妃妍妩妪妣�".split(""); +for(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];} +D[230] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������妗姊妫妞妤姒妲妯姗妾娅娆姝娈姣姘姹娌娉娲娴娑娣娓婀婧婊婕娼婢婵胬媪媛婷婺媾嫫媲嫒嫔媸嫠嫣嫱嫖嫦嫘嫜嬉嬗嬖嬲嬷孀尕尜孚孥孳孑孓孢驵驷驸驺驿驽骀骁骅骈骊骐骒骓骖骘骛骜骝骟骠骢骣骥骧纟纡纣纥纨纩�".split(""); +for(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];} +D[231] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������纭纰纾绀绁绂绉绋绌绐绔绗绛绠绡绨绫绮绯绱绲缍绶绺绻绾缁缂缃缇缈缋缌缏缑缒缗缙缜缛缟缡缢缣缤缥缦缧缪缫缬缭缯缰缱缲缳缵幺畿巛甾邕玎玑玮玢玟珏珂珑玷玳珀珉珈珥珙顼琊珩珧珞玺珲琏琪瑛琦琥琨琰琮琬�".split(""); +for(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];} +D[232] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������琛琚瑁瑜瑗瑕瑙瑷瑭瑾璜璎璀璁璇璋璞璨璩璐璧瓒璺韪韫韬杌杓杞杈杩枥枇杪杳枘枧杵枨枞枭枋杷杼柰栉柘栊柩枰栌柙枵柚枳柝栀柃枸柢栎柁柽栲栳桠桡桎桢桄桤梃栝桕桦桁桧桀栾桊桉栩梵梏桴桷梓桫棂楮棼椟椠棹�".split(""); +for(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];} +D[233] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������椤棰椋椁楗棣椐楱椹楠楂楝榄楫榀榘楸椴槌榇榈槎榉楦楣楹榛榧榻榫榭槔榱槁槊槟榕槠榍槿樯槭樗樘橥槲橄樾檠橐橛樵檎橹樽樨橘橼檑檐檩檗檫猷獒殁殂殇殄殒殓殍殚殛殡殪轫轭轱轲轳轵轶轸轷轹轺轼轾辁辂辄辇辋�".split(""); +for(j = 0; j != D[233].length; ++j) if(D[233][j].charCodeAt(0) !== 0xFFFD) { e[D[233][j]] = 59648 + j; d[59648 + j] = D[233][j];} +D[234] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������辍辎辏辘辚軎戋戗戛戟戢戡戥戤戬臧瓯瓴瓿甏甑甓攴旮旯旰昊昙杲昃昕昀炅曷昝昴昱昶昵耆晟晔晁晏晖晡晗晷暄暌暧暝暾曛曜曦曩贲贳贶贻贽赀赅赆赈赉赇赍赕赙觇觊觋觌觎觏觐觑牮犟牝牦牯牾牿犄犋犍犏犒挈挲掰�".split(""); +for(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];} +D[235] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������搿擘耄毪毳毽毵毹氅氇氆氍氕氘氙氚氡氩氤氪氲攵敕敫牍牒牖爰虢刖肟肜肓肼朊肽肱肫肭肴肷胧胨胩胪胛胂胄胙胍胗朐胝胫胱胴胭脍脎胲胼朕脒豚脶脞脬脘脲腈腌腓腴腙腚腱腠腩腼腽腭腧塍媵膈膂膑滕膣膪臌朦臊膻�".split(""); +for(j = 0; j != D[235].length; ++j) if(D[235][j].charCodeAt(0) !== 0xFFFD) { e[D[235][j]] = 60160 + j; d[60160 + j] = D[235][j];} +D[236] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������臁膦欤欷欹歃歆歙飑飒飓飕飙飚殳彀毂觳斐齑斓於旆旄旃旌旎旒旖炀炜炖炝炻烀炷炫炱烨烊焐焓焖焯焱煳煜煨煅煲煊煸煺熘熳熵熨熠燠燔燧燹爝爨灬焘煦熹戾戽扃扈扉礻祀祆祉祛祜祓祚祢祗祠祯祧祺禅禊禚禧禳忑忐�".split(""); +for(j = 0; j != D[236].length; ++j) if(D[236][j].charCodeAt(0) !== 0xFFFD) { e[D[236][j]] = 60416 + j; d[60416 + j] = D[236][j];} +D[237] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������怼恝恚恧恁恙恣悫愆愍慝憩憝懋懑戆肀聿沓泶淼矶矸砀砉砗砘砑斫砭砜砝砹砺砻砟砼砥砬砣砩硎硭硖硗砦硐硇硌硪碛碓碚碇碜碡碣碲碹碥磔磙磉磬磲礅磴礓礤礞礴龛黹黻黼盱眄眍盹眇眈眚眢眙眭眦眵眸睐睑睇睃睚睨�".split(""); +for(j = 0; j != D[237].length; ++j) if(D[237][j].charCodeAt(0) !== 0xFFFD) { e[D[237][j]] = 60672 + j; d[60672 + j] = D[237][j];} +D[238] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������睢睥睿瞍睽瞀瞌瞑瞟瞠瞰瞵瞽町畀畎畋畈畛畲畹疃罘罡罟詈罨罴罱罹羁罾盍盥蠲钅钆钇钋钊钌钍钏钐钔钗钕钚钛钜钣钤钫钪钭钬钯钰钲钴钶钷钸钹钺钼钽钿铄铈铉铊铋铌铍铎铐铑铒铕铖铗铙铘铛铞铟铠铢铤铥铧铨铪�".split(""); +for(j = 0; j != D[238].length; ++j) if(D[238][j].charCodeAt(0) !== 0xFFFD) { e[D[238][j]] = 60928 + j; d[60928 + j] = D[238][j];} +D[239] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������铩铫铮铯铳铴铵铷铹铼铽铿锃锂锆锇锉锊锍锎锏锒锓锔锕锖锘锛锝锞锟锢锪锫锩锬锱锲锴锶锷锸锼锾锿镂锵镄镅镆镉镌镎镏镒镓镔镖镗镘镙镛镞镟镝镡镢镤镥镦镧镨镩镪镫镬镯镱镲镳锺矧矬雉秕秭秣秫稆嵇稃稂稞稔�".split(""); +for(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];} +D[240] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������稹稷穑黏馥穰皈皎皓皙皤瓞瓠甬鸠鸢鸨鸩鸪鸫鸬鸲鸱鸶鸸鸷鸹鸺鸾鹁鹂鹄鹆鹇鹈鹉鹋鹌鹎鹑鹕鹗鹚鹛鹜鹞鹣鹦鹧鹨鹩鹪鹫鹬鹱鹭鹳疒疔疖疠疝疬疣疳疴疸痄疱疰痃痂痖痍痣痨痦痤痫痧瘃痱痼痿瘐瘀瘅瘌瘗瘊瘥瘘瘕瘙�".split(""); +for(j = 0; j != D[240].length; ++j) if(D[240][j].charCodeAt(0) !== 0xFFFD) { e[D[240][j]] = 61440 + j; d[61440 + j] = D[240][j];} +D[241] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������瘛瘼瘢瘠癀瘭瘰瘿瘵癃瘾瘳癍癞癔癜癖癫癯翊竦穸穹窀窆窈窕窦窠窬窨窭窳衤衩衲衽衿袂袢裆袷袼裉裢裎裣裥裱褚裼裨裾裰褡褙褓褛褊褴褫褶襁襦襻疋胥皲皴矜耒耔耖耜耠耢耥耦耧耩耨耱耋耵聃聆聍聒聩聱覃顸颀颃�".split(""); +for(j = 0; j != D[241].length; ++j) if(D[241][j].charCodeAt(0) !== 0xFFFD) { e[D[241][j]] = 61696 + j; d[61696 + j] = D[241][j];} +D[242] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������颉颌颍颏颔颚颛颞颟颡颢颥颦虍虔虬虮虿虺虼虻蚨蚍蚋蚬蚝蚧蚣蚪蚓蚩蚶蛄蚵蛎蚰蚺蚱蚯蛉蛏蚴蛩蛱蛲蛭蛳蛐蜓蛞蛴蛟蛘蛑蜃蜇蛸蜈蜊蜍蜉蜣蜻蜞蜥蜮蜚蜾蝈蜴蜱蜩蜷蜿螂蜢蝽蝾蝻蝠蝰蝌蝮螋蝓蝣蝼蝤蝙蝥螓螯螨蟒�".split(""); +for(j = 0; j != D[242].length; ++j) if(D[242][j].charCodeAt(0) !== 0xFFFD) { e[D[242][j]] = 61952 + j; d[61952 + j] = D[242][j];} +D[243] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������蟆螈螅螭螗螃螫蟥螬螵螳蟋蟓螽蟑蟀蟊蟛蟪蟠蟮蠖蠓蟾蠊蠛蠡蠹蠼缶罂罄罅舐竺竽笈笃笄笕笊笫笏筇笸笪笙笮笱笠笥笤笳笾笞筘筚筅筵筌筝筠筮筻筢筲筱箐箦箧箸箬箝箨箅箪箜箢箫箴篑篁篌篝篚篥篦篪簌篾篼簏簖簋�".split(""); +for(j = 0; j != D[243].length; ++j) if(D[243][j].charCodeAt(0) !== 0xFFFD) { e[D[243][j]] = 62208 + j; d[62208 + j] = D[243][j];} +D[244] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������簟簪簦簸籁籀臾舁舂舄臬衄舡舢舣舭舯舨舫舸舻舳舴舾艄艉艋艏艚艟艨衾袅袈裘裟襞羝羟羧羯羰羲籼敉粑粝粜粞粢粲粼粽糁糇糌糍糈糅糗糨艮暨羿翎翕翥翡翦翩翮翳糸絷綦綮繇纛麸麴赳趄趔趑趱赧赭豇豉酊酐酎酏酤�".split(""); +for(j = 0; j != D[244].length; ++j) if(D[244][j].charCodeAt(0) !== 0xFFFD) { e[D[244][j]] = 62464 + j; d[62464 + j] = D[244][j];} +D[245] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������酢酡酰酩酯酽酾酲酴酹醌醅醐醍醑醢醣醪醭醮醯醵醴醺豕鹾趸跫踅蹙蹩趵趿趼趺跄跖跗跚跞跎跏跛跆跬跷跸跣跹跻跤踉跽踔踝踟踬踮踣踯踺蹀踹踵踽踱蹉蹁蹂蹑蹒蹊蹰蹶蹼蹯蹴躅躏躔躐躜躞豸貂貊貅貘貔斛觖觞觚觜�".split(""); +for(j = 0; j != D[245].length; ++j) if(D[245][j].charCodeAt(0) !== 0xFFFD) { e[D[245][j]] = 62720 + j; d[62720 + j] = D[245][j];} +D[246] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������觥觫觯訾謦靓雩雳雯霆霁霈霏霎霪霭霰霾龀龃龅龆龇龈龉龊龌黾鼋鼍隹隼隽雎雒瞿雠銎銮鋈錾鍪鏊鎏鐾鑫鱿鲂鲅鲆鲇鲈稣鲋鲎鲐鲑鲒鲔鲕鲚鲛鲞鲟鲠鲡鲢鲣鲥鲦鲧鲨鲩鲫鲭鲮鲰鲱鲲鲳鲴鲵鲶鲷鲺鲻鲼鲽鳄鳅鳆鳇鳊鳋�".split(""); +for(j = 0; j != D[246].length; ++j) if(D[246][j].charCodeAt(0) !== 0xFFFD) { e[D[246][j]] = 62976 + j; d[62976 + j] = D[246][j];} +D[247] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������鳌鳍鳎鳏鳐鳓鳔鳕鳗鳘鳙鳜鳝鳟鳢靼鞅鞑鞒鞔鞯鞫鞣鞲鞴骱骰骷鹘骶骺骼髁髀髅髂髋髌髑魅魃魇魉魈魍魑飨餍餮饕饔髟髡髦髯髫髻髭髹鬈鬏鬓鬟鬣麽麾縻麂麇麈麋麒鏖麝麟黛黜黝黠黟黢黩黧黥黪黯鼢鼬鼯鼹鼷鼽鼾齄�".split(""); +for(j = 0; j != D[247].length; ++j) if(D[247][j].charCodeAt(0) !== 0xFFFD) { e[D[247][j]] = 63232 + j; d[63232 + j] = D[247][j];} +return {"enc": e, "dec": d }; })(); +cptable[20949] = (function(){ var d = [], e = {}, D = [], j; +D[0] = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];} +D[161] = "����������������������������������������������������������������������������������������������������������������������������������������������������������������� 、。·‥…¨〃­―∥\∼‘’“”〔〕〈〉《》「」『』【】±×÷≠≤≥∞∴°′″℃Å¢£¥♂♀∠⊥⌒∂∇≡≒§※☆★○●◎◇◆□■△▲▽▼→←↑↓↔〓≪≫√∽∝∵∫∬∈∋⊆⊇⊂⊃∪∩∧∨¬�".split(""); +for(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];} +D[162] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������⇒⇔∀∃´~ˇ˘˝˚˙¸˛¡¿ː∮∑∏¤℉‰◁◀▷▶♤♠♡♥♧♣⊙◈▣◐◑▒▤▥▨▧▦▩♨☏☎☜☞¶†‡↕↗↙↖↘♭♩♪♬㉿㈜№㏇™㏂㏘℡€®������������������������".split(""); +for(j = 0; j != D[162].length; ++j) if(D[162][j].charCodeAt(0) !== 0xFFFD) { e[D[162][j]] = 41472 + j; d[41472 + j] = D[162][j];} +D[163] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[₩]^_`abcdefghijklmnopqrstuvwxyz{|} ̄�".split(""); +for(j = 0; j != D[163].length; ++j) if(D[163][j].charCodeAt(0) !== 0xFFFD) { e[D[163][j]] = 41728 + j; d[41728 + j] = D[163][j];} +D[164] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������ㄱㄲㄳㄴㄵㄶㄷㄸㄹㄺㄻㄼㄽㄾㄿㅀㅁㅂㅃㅄㅅㅆㅇㅈㅉㅊㅋㅌㅍㅎㅏㅐㅑㅒㅓㅔㅕㅖㅗㅘㅙㅚㅛㅜㅝㅞㅟㅠㅡㅢㅣㅤㅥㅦㅧㅨㅩㅪㅫㅬㅭㅮㅯㅰㅱㅲㅳㅴㅵㅶㅷㅸㅹㅺㅻㅼㅽㅾㅿㆀㆁㆂㆃㆄㆅㆆㆇㆈㆉㆊㆋㆌㆍㆎ�".split(""); +for(j = 0; j != D[164].length; ++j) if(D[164][j].charCodeAt(0) !== 0xFFFD) { e[D[164][j]] = 41984 + j; d[41984 + j] = D[164][j];} +D[165] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������ⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹ�����ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩ�������ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ��������αβγδεζηθικλμνξοπρστυφχψω�������".split(""); +for(j = 0; j != D[165].length; ++j) if(D[165][j].charCodeAt(0) !== 0xFFFD) { e[D[165][j]] = 42240 + j; d[42240 + j] = D[165][j];} +D[166] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂┒┑┚┙┖┕┎┍┞┟┡┢┦┧┩┪┭┮┱┲┵┶┹┺┽┾╀╁╃╄╅╆╇╈╉╊���������������������������".split(""); +for(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];} +D[167] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������㎕㎖㎗ℓ㎘㏄㎣㎤㎥㎦㎙㎚㎛㎜㎝㎞㎟㎠㎡㎢㏊㎍㎎㎏㏏㎈㎉㏈㎧㎨㎰㎱㎲㎳㎴㎵㎶㎷㎸㎹㎀㎁㎂㎃㎄㎺㎻㎼㎽㎾㎿㎐㎑㎒㎓㎔Ω㏀㏁㎊㎋㎌㏖㏅㎭㎮㎯㏛㎩㎪㎫㎬㏝㏐㏓㏃㏉㏜㏆����������������".split(""); +for(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];} +D[168] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������ÆЪĦ�IJ�ĿŁØŒºÞŦŊ�㉠㉡㉢㉣㉤㉥㉦㉧㉨㉩㉪㉫㉬㉭㉮㉯㉰㉱㉲㉳㉴㉵㉶㉷㉸㉹㉺㉻ⓐⓑⓒⓓⓔⓕⓖⓗⓘⓙⓚⓛⓜⓝⓞⓟⓠⓡⓢⓣⓤⓥⓦⓧⓨⓩ①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮½⅓⅔¼¾⅛⅜⅝⅞�".split(""); +for(j = 0; j != D[168].length; ++j) if(D[168][j].charCodeAt(0) !== 0xFFFD) { e[D[168][j]] = 43008 + j; d[43008 + j] = D[168][j];} +D[169] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������æđðħıijĸŀłøœßþŧŋʼn㈀㈁㈂㈃㈄㈅㈆㈇㈈㈉㈊㈋㈌㈍㈎㈏㈐㈑㈒㈓㈔㈕㈖㈗㈘㈙㈚㈛⒜⒝⒞⒟⒠⒡⒢⒣⒤⒥⒦⒧⒨⒩⒪⒫⒬⒭⒮⒯⒰⒱⒲⒳⒴⒵⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽⑾⑿⒀⒁⒂¹²³⁴ⁿ₁₂₃₄�".split(""); +for(j = 0; j != D[169].length; ++j) if(D[169][j].charCodeAt(0) !== 0xFFFD) { e[D[169][j]] = 43264 + j; d[43264 + j] = D[169][j];} +D[170] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをん������������".split(""); +for(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];} +D[171] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶ���������".split(""); +for(j = 0; j != D[171].length; ++j) if(D[171][j].charCodeAt(0) !== 0xFFFD) { e[D[171][j]] = 43776 + j; d[43776 + j] = D[171][j];} +D[172] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ���������������абвгдеёжзийклмнопрстуфхцчшщъыьэюя��������������".split(""); +for(j = 0; j != D[172].length; ++j) if(D[172][j].charCodeAt(0) !== 0xFFFD) { e[D[172][j]] = 44032 + j; d[44032 + j] = D[172][j];} +D[176] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������가각간갇갈갉갊감갑값갓갔강갖갗같갚갛개객갠갤갬갭갯갰갱갸갹갼걀걋걍걔걘걜거걱건걷걸걺검겁것겄겅겆겉겊겋게겐겔겜겝겟겠겡겨격겪견겯결겸겹겻겼경곁계곈곌곕곗고곡곤곧골곪곬곯곰곱곳공곶과곽관괄괆�".split(""); +for(j = 0; j != D[176].length; ++j) if(D[176][j].charCodeAt(0) !== 0xFFFD) { e[D[176][j]] = 45056 + j; d[45056 + j] = D[176][j];} +D[177] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������괌괍괏광괘괜괠괩괬괭괴괵괸괼굄굅굇굉교굔굘굡굣구국군굳굴굵굶굻굼굽굿궁궂궈궉권궐궜궝궤궷귀귁귄귈귐귑귓규균귤그극근귿글긁금급긋긍긔기긱긴긷길긺김깁깃깅깆깊까깍깎깐깔깖깜깝깟깠깡깥깨깩깬깰깸�".split(""); +for(j = 0; j != D[177].length; ++j) if(D[177][j].charCodeAt(0) !== 0xFFFD) { e[D[177][j]] = 45312 + j; d[45312 + j] = D[177][j];} +D[178] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������깹깻깼깽꺄꺅꺌꺼꺽꺾껀껄껌껍껏껐껑께껙껜껨껫껭껴껸껼꼇꼈꼍꼐꼬꼭꼰꼲꼴꼼꼽꼿꽁꽂꽃꽈꽉꽐꽜꽝꽤꽥꽹꾀꾄꾈꾐꾑꾕꾜꾸꾹꾼꿀꿇꿈꿉꿋꿍꿎꿔꿜꿨꿩꿰꿱꿴꿸뀀뀁뀄뀌뀐뀔뀜뀝뀨끄끅끈끊끌끎끓끔끕끗끙�".split(""); +for(j = 0; j != D[178].length; ++j) if(D[178][j].charCodeAt(0) !== 0xFFFD) { e[D[178][j]] = 45568 + j; d[45568 + j] = D[178][j];} +D[179] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������끝끼끽낀낄낌낍낏낑나낙낚난낟날낡낢남납낫났낭낮낯낱낳내낵낸낼냄냅냇냈냉냐냑냔냘냠냥너넉넋넌널넒넓넘넙넛넜넝넣네넥넨넬넴넵넷넸넹녀녁년녈념녑녔녕녘녜녠노녹논놀놂놈놉놋농높놓놔놘놜놨뇌뇐뇔뇜뇝�".split(""); +for(j = 0; j != D[179].length; ++j) if(D[179][j].charCodeAt(0) !== 0xFFFD) { e[D[179][j]] = 45824 + j; d[45824 + j] = D[179][j];} +D[180] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������뇟뇨뇩뇬뇰뇹뇻뇽누눅눈눋눌눔눕눗눙눠눴눼뉘뉜뉠뉨뉩뉴뉵뉼늄늅늉느늑는늘늙늚늠늡늣능늦늪늬늰늴니닉닌닐닖님닙닛닝닢다닥닦단닫달닭닮닯닳담답닷닸당닺닻닿대댁댄댈댐댑댓댔댕댜더덕덖던덛덜덞덟덤덥�".split(""); +for(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];} +D[181] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������덧덩덫덮데덱덴델뎀뎁뎃뎄뎅뎌뎐뎔뎠뎡뎨뎬도독돈돋돌돎돐돔돕돗동돛돝돠돤돨돼됐되된될됨됩됫됴두둑둔둘둠둡둣둥둬뒀뒈뒝뒤뒨뒬뒵뒷뒹듀듄듈듐듕드득든듣들듦듬듭듯등듸디딕딘딛딜딤딥딧딨딩딪따딱딴딸�".split(""); +for(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];} +D[182] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������땀땁땃땄땅땋때땍땐땔땜땝땟땠땡떠떡떤떨떪떫떰떱떳떴떵떻떼떽뗀뗄뗌뗍뗏뗐뗑뗘뗬또똑똔똘똥똬똴뙈뙤뙨뚜뚝뚠뚤뚫뚬뚱뛔뛰뛴뛸뜀뜁뜅뜨뜩뜬뜯뜰뜸뜹뜻띄띈띌띔띕띠띤띨띰띱띳띵라락란랄람랍랏랐랑랒랖랗�".split(""); +for(j = 0; j != D[182].length; ++j) if(D[182][j].charCodeAt(0) !== 0xFFFD) { e[D[182][j]] = 46592 + j; d[46592 + j] = D[182][j];} +D[183] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������래랙랜랠램랩랫랬랭랴략랸럇량러럭런럴럼럽럿렀렁렇레렉렌렐렘렙렛렝려력련렬렴렵렷렸령례롄롑롓로록론롤롬롭롯롱롸롼뢍뢨뢰뢴뢸룀룁룃룅료룐룔룝룟룡루룩룬룰룸룹룻룽뤄뤘뤠뤼뤽륀륄륌륏륑류륙륜률륨륩�".split(""); +for(j = 0; j != D[183].length; ++j) if(D[183][j].charCodeAt(0) !== 0xFFFD) { e[D[183][j]] = 46848 + j; d[46848 + j] = D[183][j];} +D[184] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������륫륭르륵른를름릅릇릉릊릍릎리릭린릴림립릿링마막만많맏말맑맒맘맙맛망맞맡맣매맥맨맬맴맵맷맸맹맺먀먁먈먕머먹먼멀멂멈멉멋멍멎멓메멕멘멜멤멥멧멨멩며멱면멸몃몄명몇몌모목몫몬몰몲몸몹못몽뫄뫈뫘뫙뫼�".split(""); +for(j = 0; j != D[184].length; ++j) if(D[184][j].charCodeAt(0) !== 0xFFFD) { e[D[184][j]] = 47104 + j; d[47104 + j] = D[184][j];} +D[185] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������묀묄묍묏묑묘묜묠묩묫무묵묶문묻물묽묾뭄뭅뭇뭉뭍뭏뭐뭔뭘뭡뭣뭬뮈뮌뮐뮤뮨뮬뮴뮷므믄믈믐믓미믹민믿밀밂밈밉밋밌밍및밑바박밖밗반받발밝밞밟밤밥밧방밭배백밴밸뱀뱁뱃뱄뱅뱉뱌뱍뱐뱝버벅번벋벌벎범법벗�".split(""); +for(j = 0; j != D[185].length; ++j) if(D[185][j].charCodeAt(0) !== 0xFFFD) { e[D[185][j]] = 47360 + j; d[47360 + j] = D[185][j];} +D[186] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������벙벚베벡벤벧벨벰벱벳벴벵벼벽변별볍볏볐병볕볘볜보복볶본볼봄봅봇봉봐봔봤봬뵀뵈뵉뵌뵐뵘뵙뵤뵨부북분붇불붉붊붐붑붓붕붙붚붜붤붰붸뷔뷕뷘뷜뷩뷰뷴뷸븀븃븅브븍븐블븜븝븟비빅빈빌빎빔빕빗빙빚빛빠빡빤�".split(""); +for(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];} +D[187] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������빨빪빰빱빳빴빵빻빼빽뺀뺄뺌뺍뺏뺐뺑뺘뺙뺨뻐뻑뻔뻗뻘뻠뻣뻤뻥뻬뼁뼈뼉뼘뼙뼛뼜뼝뽀뽁뽄뽈뽐뽑뽕뾔뾰뿅뿌뿍뿐뿔뿜뿟뿡쀼쁑쁘쁜쁠쁨쁩삐삑삔삘삠삡삣삥사삭삯산삳살삵삶삼삽삿샀상샅새색샌샐샘샙샛샜생샤�".split(""); +for(j = 0; j != D[187].length; ++j) if(D[187][j].charCodeAt(0) !== 0xFFFD) { e[D[187][j]] = 47872 + j; d[47872 + j] = D[187][j];} +D[188] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������샥샨샬샴샵샷샹섀섄섈섐섕서석섞섟선섣설섦섧섬섭섯섰성섶세섹센셀셈셉셋셌셍셔셕션셜셤셥셧셨셩셰셴셸솅소속솎손솔솖솜솝솟송솥솨솩솬솰솽쇄쇈쇌쇔쇗쇘쇠쇤쇨쇰쇱쇳쇼쇽숀숄숌숍숏숑수숙순숟술숨숩숫숭�".split(""); +for(j = 0; j != D[188].length; ++j) if(D[188][j].charCodeAt(0) !== 0xFFFD) { e[D[188][j]] = 48128 + j; d[48128 + j] = D[188][j];} +D[189] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������숯숱숲숴쉈쉐쉑쉔쉘쉠쉥쉬쉭쉰쉴쉼쉽쉿슁슈슉슐슘슛슝스슥슨슬슭슴습슷승시식신싣실싫심십싯싱싶싸싹싻싼쌀쌈쌉쌌쌍쌓쌔쌕쌘쌜쌤쌥쌨쌩썅써썩썬썰썲썸썹썼썽쎄쎈쎌쏀쏘쏙쏜쏟쏠쏢쏨쏩쏭쏴쏵쏸쐈쐐쐤쐬쐰�".split(""); +for(j = 0; j != D[189].length; ++j) if(D[189][j].charCodeAt(0) !== 0xFFFD) { e[D[189][j]] = 48384 + j; d[48384 + j] = D[189][j];} +D[190] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������쐴쐼쐽쑈쑤쑥쑨쑬쑴쑵쑹쒀쒔쒜쒸쒼쓩쓰쓱쓴쓸쓺쓿씀씁씌씐씔씜씨씩씬씰씸씹씻씽아악안앉않알앍앎앓암압앗았앙앝앞애액앤앨앰앱앳앴앵야약얀얄얇얌얍얏양얕얗얘얜얠얩어억언얹얻얼얽얾엄업없엇었엉엊엌엎�".split(""); +for(j = 0; j != D[190].length; ++j) if(D[190][j].charCodeAt(0) !== 0xFFFD) { e[D[190][j]] = 48640 + j; d[48640 + j] = D[190][j];} +D[191] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������에엑엔엘엠엡엣엥여역엮연열엶엷염엽엾엿였영옅옆옇예옌옐옘옙옛옜오옥온올옭옮옰옳옴옵옷옹옻와왁완왈왐왑왓왔왕왜왝왠왬왯왱외왹왼욀욈욉욋욍요욕욘욜욤욥욧용우욱운울욹욺움웁웃웅워웍원월웜웝웠웡웨�".split(""); +for(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];} +D[192] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������웩웬웰웸웹웽위윅윈윌윔윕윗윙유육윤율윰윱윳융윷으윽은을읊음읍읏응읒읓읔읕읖읗의읜읠읨읫이익인일읽읾잃임입잇있잉잊잎자작잔잖잗잘잚잠잡잣잤장잦재잭잰잴잼잽잿쟀쟁쟈쟉쟌쟎쟐쟘쟝쟤쟨쟬저적전절젊�".split(""); +for(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];} +D[193] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������점접젓정젖제젝젠젤젬젭젯젱져젼졀졈졉졌졍졔조족존졸졺좀좁좃종좆좇좋좌좍좔좝좟좡좨좼좽죄죈죌죔죕죗죙죠죡죤죵주죽준줄줅줆줌줍줏중줘줬줴쥐쥑쥔쥘쥠쥡쥣쥬쥰쥴쥼즈즉즌즐즘즙즛증지직진짇질짊짐집짓�".split(""); +for(j = 0; j != D[193].length; ++j) if(D[193][j].charCodeAt(0) !== 0xFFFD) { e[D[193][j]] = 49408 + j; d[49408 + j] = D[193][j];} +D[194] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������징짖짙짚짜짝짠짢짤짧짬짭짯짰짱째짹짼쨀쨈쨉쨋쨌쨍쨔쨘쨩쩌쩍쩐쩔쩜쩝쩟쩠쩡쩨쩽쪄쪘쪼쪽쫀쫄쫌쫍쫏쫑쫓쫘쫙쫠쫬쫴쬈쬐쬔쬘쬠쬡쭁쭈쭉쭌쭐쭘쭙쭝쭤쭸쭹쮜쮸쯔쯤쯧쯩찌찍찐찔찜찝찡찢찧차착찬찮찰참찹찻�".split(""); +for(j = 0; j != D[194].length; ++j) if(D[194][j].charCodeAt(0) !== 0xFFFD) { e[D[194][j]] = 49664 + j; d[49664 + j] = D[194][j];} +D[195] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������찼창찾채책챈챌챔챕챗챘챙챠챤챦챨챰챵처척천철첨첩첫첬청체첵첸첼쳄쳅쳇쳉쳐쳔쳤쳬쳰촁초촉촌촐촘촙촛총촤촨촬촹최쵠쵤쵬쵭쵯쵱쵸춈추축춘출춤춥춧충춰췄췌췐취췬췰췸췹췻췽츄츈츌츔츙츠측츤츨츰츱츳층�".split(""); +for(j = 0; j != D[195].length; ++j) if(D[195][j].charCodeAt(0) !== 0xFFFD) { e[D[195][j]] = 49920 + j; d[49920 + j] = D[195][j];} +D[196] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������치칙친칟칠칡침칩칫칭카칵칸칼캄캅캇캉캐캑캔캘캠캡캣캤캥캬캭컁커컥컨컫컬컴컵컷컸컹케켁켄켈켐켑켓켕켜켠켤켬켭켯켰켱켸코콕콘콜콤콥콧콩콰콱콴콸쾀쾅쾌쾡쾨쾰쿄쿠쿡쿤쿨쿰쿱쿳쿵쿼퀀퀄퀑퀘퀭퀴퀵퀸퀼�".split(""); +for(j = 0; j != D[196].length; ++j) if(D[196][j].charCodeAt(0) !== 0xFFFD) { e[D[196][j]] = 50176 + j; d[50176 + j] = D[196][j];} +D[197] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������큄큅큇큉큐큔큘큠크큭큰클큼큽킁키킥킨킬킴킵킷킹타탁탄탈탉탐탑탓탔탕태택탠탤탬탭탯탰탱탸턍터턱턴털턺텀텁텃텄텅테텍텐텔템텝텟텡텨텬텼톄톈토톡톤톨톰톱톳통톺톼퇀퇘퇴퇸툇툉툐투툭툰툴툼툽툿퉁퉈퉜�".split(""); +for(j = 0; j != D[197].length; ++j) if(D[197][j].charCodeAt(0) !== 0xFFFD) { e[D[197][j]] = 50432 + j; d[50432 + j] = D[197][j];} +D[198] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������퉤튀튁튄튈튐튑튕튜튠튤튬튱트특튼튿틀틂틈틉틋틔틘틜틤틥티틱틴틸팀팁팃팅파팍팎판팔팖팜팝팟팠팡팥패팩팬팰팸팹팻팼팽퍄퍅퍼퍽펀펄펌펍펏펐펑페펙펜펠펨펩펫펭펴편펼폄폅폈평폐폘폡폣포폭폰폴폼폽폿퐁�".split(""); +for(j = 0; j != D[198].length; ++j) if(D[198][j].charCodeAt(0) !== 0xFFFD) { e[D[198][j]] = 50688 + j; d[50688 + j] = D[198][j];} +D[199] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������퐈퐝푀푄표푠푤푭푯푸푹푼푿풀풂품풉풋풍풔풩퓌퓐퓔퓜퓟퓨퓬퓰퓸퓻퓽프픈플픔픕픗피픽핀필핌핍핏핑하학한할핥함합핫항해핵핸핼햄햅햇했행햐향허헉헌헐헒험헙헛헝헤헥헨헬헴헵헷헹혀혁현혈혐협혓혔형혜혠�".split(""); +for(j = 0; j != D[199].length; ++j) if(D[199][j].charCodeAt(0) !== 0xFFFD) { e[D[199][j]] = 50944 + j; d[50944 + j] = D[199][j];} +D[200] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������혤혭호혹혼홀홅홈홉홋홍홑화확환활홧황홰홱홴횃횅회획횐횔횝횟횡효횬횰횹횻후훅훈훌훑훔훗훙훠훤훨훰훵훼훽휀휄휑휘휙휜휠휨휩휫휭휴휵휸휼흄흇흉흐흑흔흖흗흘흙흠흡흣흥흩희흰흴흼흽힁히힉힌힐힘힙힛힝�".split(""); +for(j = 0; j != D[200].length; ++j) if(D[200][j].charCodeAt(0) !== 0xFFFD) { e[D[200][j]] = 51200 + j; d[51200 + j] = D[200][j];} +D[202] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������伽佳假價加可呵哥嘉嫁家暇架枷柯歌珂痂稼苛茄街袈訶賈跏軻迦駕刻却各恪慤殼珏脚覺角閣侃刊墾奸姦干幹懇揀杆柬桿澗癎看磵稈竿簡肝艮艱諫間乫喝曷渴碣竭葛褐蝎鞨勘坎堪嵌感憾戡敢柑橄減甘疳監瞰紺邯鑑鑒龕�".split(""); +for(j = 0; j != D[202].length; ++j) if(D[202][j].charCodeAt(0) !== 0xFFFD) { e[D[202][j]] = 51712 + j; d[51712 + j] = D[202][j];} +D[203] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������匣岬甲胛鉀閘剛堈姜岡崗康强彊慷江畺疆糠絳綱羌腔舡薑襁講鋼降鱇介价個凱塏愷愾慨改槪漑疥皆盖箇芥蓋豈鎧開喀客坑更粳羹醵倨去居巨拒据據擧渠炬祛距踞車遽鉅鋸乾件健巾建愆楗腱虔蹇鍵騫乞傑杰桀儉劍劒檢�".split(""); +for(j = 0; j != D[203].length; ++j) if(D[203][j].charCodeAt(0) !== 0xFFFD) { e[D[203][j]] = 51968 + j; d[51968 + j] = D[203][j];} +D[204] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������瞼鈐黔劫怯迲偈憩揭擊格檄激膈覡隔堅牽犬甄絹繭肩見譴遣鵑抉決潔結缺訣兼慊箝謙鉗鎌京俓倞傾儆勁勍卿坰境庚徑慶憬擎敬景暻更梗涇炅烱璟璥瓊痙硬磬竟競絅經耕耿脛莖警輕逕鏡頃頸驚鯨係啓堺契季屆悸戒桂械�".split(""); +for(j = 0; j != D[204].length; ++j) if(D[204][j].charCodeAt(0) !== 0xFFFD) { e[D[204][j]] = 52224 + j; d[52224 + j] = D[204][j];} +D[205] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������棨溪界癸磎稽系繫繼計誡谿階鷄古叩告呱固姑孤尻庫拷攷故敲暠枯槁沽痼皐睾稿羔考股膏苦苽菰藁蠱袴誥賈辜錮雇顧高鼓哭斛曲梏穀谷鵠困坤崑昆梱棍滾琨袞鯤汨滑骨供公共功孔工恐恭拱控攻珙空蚣貢鞏串寡戈果瓜�".split(""); +for(j = 0; j != D[205].length; ++j) if(D[205][j].charCodeAt(0) !== 0xFFFD) { e[D[205][j]] = 52480 + j; d[52480 + j] = D[205][j];} +D[206] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������科菓誇課跨過鍋顆廓槨藿郭串冠官寬慣棺款灌琯瓘管罐菅觀貫關館刮恝括适侊光匡壙廣曠洸炚狂珖筐胱鑛卦掛罫乖傀塊壞怪愧拐槐魁宏紘肱轟交僑咬喬嬌嶠巧攪敎校橋狡皎矯絞翹膠蕎蛟較轎郊餃驕鮫丘久九仇俱具勾�".split(""); +for(j = 0; j != D[206].length; ++j) if(D[206][j].charCodeAt(0) !== 0xFFFD) { e[D[206][j]] = 52736 + j; d[52736 + j] = D[206][j];} +D[207] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������區口句咎嘔坵垢寇嶇廐懼拘救枸柩構歐毆毬求溝灸狗玖球瞿矩究絿耉臼舅舊苟衢謳購軀逑邱鉤銶駒驅鳩鷗龜國局菊鞠鞫麴君窘群裙軍郡堀屈掘窟宮弓穹窮芎躬倦券勸卷圈拳捲權淃眷厥獗蕨蹶闕机櫃潰詭軌饋句晷歸貴�".split(""); +for(j = 0; j != D[207].length; ++j) if(D[207][j].charCodeAt(0) !== 0xFFFD) { e[D[207][j]] = 52992 + j; d[52992 + j] = D[207][j];} +D[208] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������鬼龜叫圭奎揆槻珪硅窺竅糾葵規赳逵閨勻均畇筠菌鈞龜橘克剋劇戟棘極隙僅劤勤懃斤根槿瑾筋芹菫覲謹近饉契今妗擒昑檎琴禁禽芩衾衿襟金錦伋及急扱汲級給亘兢矜肯企伎其冀嗜器圻基埼夔奇妓寄岐崎己幾忌技旗旣�".split(""); +for(j = 0; j != D[208].length; ++j) if(D[208][j].charCodeAt(0) !== 0xFFFD) { e[D[208][j]] = 53248 + j; d[53248 + j] = D[208][j];} +D[209] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������朞期杞棋棄機欺氣汽沂淇玘琦琪璂璣畸畿碁磯祁祇祈祺箕紀綺羈耆耭肌記譏豈起錡錤飢饑騎騏驥麒緊佶吉拮桔金喫儺喇奈娜懦懶拏拿癩羅蘿螺裸邏那樂洛烙珞落諾酪駱亂卵暖欄煖爛蘭難鸞捏捺南嵐枏楠湳濫男藍襤拉�".split(""); +for(j = 0; j != D[209].length; ++j) if(D[209][j].charCodeAt(0) !== 0xFFFD) { e[D[209][j]] = 53504 + j; d[53504 + j] = D[209][j];} +D[210] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������納臘蠟衲囊娘廊朗浪狼郎乃來內奈柰耐冷女年撚秊念恬拈捻寧寗努勞奴弩怒擄櫓爐瑙盧老蘆虜路露駑魯鷺碌祿綠菉錄鹿論壟弄濃籠聾膿農惱牢磊腦賂雷尿壘屢樓淚漏累縷陋嫩訥杻紐勒肋凜凌稜綾能菱陵尼泥匿溺多茶�".split(""); +for(j = 0; j != D[210].length; ++j) if(D[210][j].charCodeAt(0) !== 0xFFFD) { e[D[210][j]] = 53760 + j; d[53760 + j] = D[210][j];} +D[211] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������丹亶但單團壇彖斷旦檀段湍短端簞緞蛋袒鄲鍛撻澾獺疸達啖坍憺擔曇淡湛潭澹痰聃膽蕁覃談譚錟沓畓答踏遝唐堂塘幢戇撞棠當糖螳黨代垈坮大對岱帶待戴擡玳臺袋貸隊黛宅德悳倒刀到圖堵塗導屠島嶋度徒悼挑掉搗桃�".split(""); +for(j = 0; j != D[211].length; ++j) if(D[211][j].charCodeAt(0) !== 0xFFFD) { e[D[211][j]] = 54016 + j; d[54016 + j] = D[211][j];} +D[212] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������棹櫂淘渡滔濤燾盜睹禱稻萄覩賭跳蹈逃途道都鍍陶韜毒瀆牘犢獨督禿篤纛讀墩惇敦旽暾沌焞燉豚頓乭突仝冬凍動同憧東桐棟洞潼疼瞳童胴董銅兜斗杜枓痘竇荳讀豆逗頭屯臀芚遁遯鈍得嶝橙燈登等藤謄鄧騰喇懶拏癩羅�".split(""); +for(j = 0; j != D[212].length; ++j) if(D[212][j].charCodeAt(0) !== 0xFFFD) { e[D[212][j]] = 54272 + j; d[54272 + j] = D[212][j];} +D[213] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������蘿螺裸邏樂洛烙珞絡落諾酪駱丹亂卵欄欒瀾爛蘭鸞剌辣嵐擥攬欖濫籃纜藍襤覽拉臘蠟廊朗浪狼琅瑯螂郞來崍徠萊冷掠略亮倆兩凉梁樑粮粱糧良諒輛量侶儷勵呂廬慮戾旅櫚濾礪藜蠣閭驢驪麗黎力曆歷瀝礫轢靂憐戀攣漣�".split(""); +for(j = 0; j != D[213].length; ++j) if(D[213][j].charCodeAt(0) !== 0xFFFD) { e[D[213][j]] = 54528 + j; d[54528 + j] = D[213][j];} +D[214] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������煉璉練聯蓮輦連鍊冽列劣洌烈裂廉斂殮濂簾獵令伶囹寧岺嶺怜玲笭羚翎聆逞鈴零靈領齡例澧禮醴隷勞怒撈擄櫓潞瀘爐盧老蘆虜路輅露魯鷺鹵碌祿綠菉錄鹿麓論壟弄朧瀧瓏籠聾儡瀨牢磊賂賚賴雷了僚寮廖料燎療瞭聊蓼�".split(""); +for(j = 0; j != D[214].length; ++j) if(D[214][j].charCodeAt(0) !== 0xFFFD) { e[D[214][j]] = 54784 + j; d[54784 + j] = D[214][j];} +D[215] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������遼鬧龍壘婁屢樓淚漏瘻累縷蔞褸鏤陋劉旒柳榴流溜瀏琉瑠留瘤硫謬類六戮陸侖倫崙淪綸輪律慄栗率隆勒肋凜凌楞稜綾菱陵俚利厘吏唎履悧李梨浬犁狸理璃異痢籬罹羸莉裏裡里釐離鯉吝潾燐璘藺躪隣鱗麟林淋琳臨霖砬�".split(""); +for(j = 0; j != D[215].length; ++j) if(D[215][j].charCodeAt(0) !== 0xFFFD) { e[D[215][j]] = 55040 + j; d[55040 + j] = D[215][j];} +D[216] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������立笠粒摩瑪痲碼磨馬魔麻寞幕漠膜莫邈万卍娩巒彎慢挽晩曼滿漫灣瞞萬蔓蠻輓饅鰻唜抹末沫茉襪靺亡妄忘忙望網罔芒茫莽輞邙埋妹媒寐昧枚梅每煤罵買賣邁魅脈貊陌驀麥孟氓猛盲盟萌冪覓免冕勉棉沔眄眠綿緬面麵滅�".split(""); +for(j = 0; j != D[216].length; ++j) if(D[216][j].charCodeAt(0) !== 0xFFFD) { e[D[216][j]] = 55296 + j; d[55296 + j] = D[216][j];} +D[217] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������蔑冥名命明暝椧溟皿瞑茗蓂螟酩銘鳴袂侮冒募姆帽慕摸摹暮某模母毛牟牡瑁眸矛耗芼茅謀謨貌木沐牧目睦穆鶩歿沒夢朦蒙卯墓妙廟描昴杳渺猫竗苗錨務巫憮懋戊拇撫无楙武毋無珷畝繆舞茂蕪誣貿霧鵡墨默們刎吻問文�".split(""); +for(j = 0; j != D[217].length; ++j) if(D[217][j].charCodeAt(0) !== 0xFFFD) { e[D[217][j]] = 55552 + j; d[55552 + j] = D[217][j];} +D[218] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������汶紊紋聞蚊門雯勿沕物味媚尾嵋彌微未梶楣渼湄眉米美薇謎迷靡黴岷悶愍憫敏旻旼民泯玟珉緡閔密蜜謐剝博拍搏撲朴樸泊珀璞箔粕縛膊舶薄迫雹駁伴半反叛拌搬攀斑槃泮潘班畔瘢盤盼磐磻礬絆般蟠返頒飯勃拔撥渤潑�".split(""); +for(j = 0; j != D[218].length; ++j) if(D[218][j].charCodeAt(0) !== 0xFFFD) { e[D[218][j]] = 55808 + j; d[55808 + j] = D[218][j];} +D[219] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������發跋醱鉢髮魃倣傍坊妨尨幇彷房放方旁昉枋榜滂磅紡肪膀舫芳蒡蚌訪謗邦防龐倍俳北培徘拜排杯湃焙盃背胚裴裵褙賠輩配陪伯佰帛柏栢白百魄幡樊煩燔番磻繁蕃藩飜伐筏罰閥凡帆梵氾汎泛犯範范法琺僻劈壁擘檗璧癖�".split(""); +for(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];} +D[220] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������碧蘗闢霹便卞弁變辨辯邊別瞥鱉鼈丙倂兵屛幷昞昺柄棅炳甁病秉竝輧餠騈保堡報寶普步洑湺潽珤甫菩補褓譜輔伏僕匐卜宓復服福腹茯蔔複覆輹輻馥鰒本乶俸奉封峯峰捧棒烽熢琫縫蓬蜂逢鋒鳳不付俯傅剖副否咐埠夫婦�".split(""); +for(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];} +D[221] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������孚孵富府復扶敷斧浮溥父符簿缶腐腑膚艀芙莩訃負賦賻赴趺部釜阜附駙鳧北分吩噴墳奔奮忿憤扮昐汾焚盆粉糞紛芬賁雰不佛弗彿拂崩朋棚硼繃鵬丕備匕匪卑妃婢庇悲憊扉批斐枇榧比毖毗毘沸泌琵痺砒碑秕秘粃緋翡肥�".split(""); +for(j = 0; j != D[221].length; ++j) if(D[221][j].charCodeAt(0) !== 0xFFFD) { e[D[221][j]] = 56576 + j; d[56576 + j] = D[221][j];} +D[222] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������脾臂菲蜚裨誹譬費鄙非飛鼻嚬嬪彬斌檳殯浜濱瀕牝玭貧賓頻憑氷聘騁乍事些仕伺似使俟僿史司唆嗣四士奢娑寫寺射巳師徙思捨斜斯柶査梭死沙泗渣瀉獅砂社祀祠私篩紗絲肆舍莎蓑蛇裟詐詞謝賜赦辭邪飼駟麝削數朔索�".split(""); +for(j = 0; j != D[222].length; ++j) if(D[222][j].charCodeAt(0) !== 0xFFFD) { e[D[222][j]] = 56832 + j; d[56832 + j] = D[222][j];} +D[223] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������傘刪山散汕珊産疝算蒜酸霰乷撒殺煞薩三參杉森渗芟蔘衫揷澁鈒颯上傷像償商喪嘗孀尙峠常床庠廂想桑橡湘爽牀狀相祥箱翔裳觴詳象賞霜塞璽賽嗇塞穡索色牲生甥省笙墅壻嶼序庶徐恕抒捿敍暑曙書栖棲犀瑞筮絮緖署�".split(""); +for(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];} +D[224] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������胥舒薯西誓逝鋤黍鼠夕奭席惜昔晳析汐淅潟石碩蓆釋錫仙僊先善嬋宣扇敾旋渲煽琁瑄璇璿癬禪線繕羨腺膳船蘚蟬詵跣選銑鐥饍鮮卨屑楔泄洩渫舌薛褻設說雪齧剡暹殲纖蟾贍閃陝攝涉燮葉城姓宬性惺成星晟猩珹盛省筬�".split(""); +for(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];} +D[225] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������聖聲腥誠醒世勢歲洗稅笹細說貰召嘯塑宵小少巢所掃搔昭梳沼消溯瀟炤燒甦疏疎瘙笑篠簫素紹蔬蕭蘇訴逍遡邵銷韶騷俗屬束涑粟續謖贖速孫巽損蓀遜飡率宋悚松淞訟誦送頌刷殺灑碎鎖衰釗修受嗽囚垂壽嫂守岫峀帥愁�".split(""); +for(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];} +D[226] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������戍手授搜收數樹殊水洙漱燧狩獸琇璲瘦睡秀穗竪粹綏綬繡羞脩茱蒐蓚藪袖誰讐輸遂邃酬銖銹隋隧隨雖需須首髓鬚叔塾夙孰宿淑潚熟琡璹肅菽巡徇循恂旬栒楯橓殉洵淳珣盾瞬筍純脣舜荀蓴蕣詢諄醇錞順馴戌術述鉥崇崧�".split(""); +for(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];} +D[227] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������嵩瑟膝蝨濕拾習褶襲丞乘僧勝升承昇繩蠅陞侍匙嘶始媤尸屎屍市弑恃施是時枾柴猜矢示翅蒔蓍視試詩諡豕豺埴寔式息拭植殖湜熄篒蝕識軾食飾伸侁信呻娠宸愼新晨燼申神紳腎臣莘薪藎蜃訊身辛辰迅失室實悉審尋心沁�".split(""); +for(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];} +D[228] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������沈深瀋甚芯諶什十拾雙氏亞俄兒啞娥峨我牙芽莪蛾衙訝阿雅餓鴉鵝堊岳嶽幄惡愕握樂渥鄂鍔顎鰐齷安岸按晏案眼雁鞍顔鮟斡謁軋閼唵岩巖庵暗癌菴闇壓押狎鴨仰央怏昻殃秧鴦厓哀埃崖愛曖涯碍艾隘靄厄扼掖液縊腋額�".split(""); +for(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];} +D[229] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������櫻罌鶯鸚也倻冶夜惹揶椰爺耶若野弱掠略約若葯蒻藥躍亮佯兩凉壤孃恙揚攘敭暘梁楊樣洋瀁煬痒瘍禳穰糧羊良襄諒讓釀陽量養圄御於漁瘀禦語馭魚齬億憶抑檍臆偃堰彦焉言諺孼蘖俺儼嚴奄掩淹嶪業円予余勵呂女如廬�".split(""); +for(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];} +D[230] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������旅歟汝濾璵礖礪與艅茹輿轝閭餘驪麗黎亦力域役易曆歷疫繹譯轢逆驛嚥堧姸娟宴年延憐戀捐挻撚椽沇沿涎涓淵演漣烟然煙煉燃燕璉硏硯秊筵緣練縯聯衍軟輦蓮連鉛鍊鳶列劣咽悅涅烈熱裂說閱厭廉念捻染殮炎焰琰艶苒�".split(""); +for(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];} +D[231] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������簾閻髥鹽曄獵燁葉令囹塋寧嶺嶸影怜映暎楹榮永泳渶潁濚瀛瀯煐營獰玲瑛瑩瓔盈穎纓羚聆英詠迎鈴鍈零霙靈領乂倪例刈叡曳汭濊猊睿穢芮藝蘂禮裔詣譽豫醴銳隸霓預五伍俉傲午吾吳嗚塢墺奧娛寤悟惡懊敖旿晤梧汚澳�".split(""); +for(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];} +D[232] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������烏熬獒筽蜈誤鰲鼇屋沃獄玉鈺溫瑥瘟穩縕蘊兀壅擁瓮甕癰翁邕雍饔渦瓦窩窪臥蛙蝸訛婉完宛梡椀浣玩琓琬碗緩翫脘腕莞豌阮頑曰往旺枉汪王倭娃歪矮外嵬巍猥畏了僚僥凹堯夭妖姚寥寮尿嶢拗搖撓擾料曜樂橈燎燿瑤療�".split(""); +for(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];} +D[233] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������窈窯繇繞耀腰蓼蟯要謠遙遼邀饒慾欲浴縟褥辱俑傭冗勇埇墉容庸慂榕涌湧溶熔瑢用甬聳茸蓉踊鎔鏞龍于佑偶優又友右宇寓尤愚憂旴牛玗瑀盂祐禑禹紆羽芋藕虞迂遇郵釪隅雨雩勖彧旭昱栯煜稶郁頊云暈橒殞澐熉耘芸蕓�".split(""); +for(j = 0; j != D[233].length; ++j) if(D[233][j].charCodeAt(0) !== 0xFFFD) { e[D[233][j]] = 59648 + j; d[59648 + j] = D[233][j];} +D[234] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������運隕雲韻蔚鬱亐熊雄元原員圓園垣媛嫄寃怨愿援沅洹湲源爰猿瑗苑袁轅遠阮院願鴛月越鉞位偉僞危圍委威尉慰暐渭爲瑋緯胃萎葦蔿蝟衛褘謂違韋魏乳侑儒兪劉唯喩孺宥幼幽庾悠惟愈愉揄攸有杻柔柚柳楡楢油洧流游溜�".split(""); +for(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];} +D[235] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������濡猶猷琉瑜由留癒硫紐維臾萸裕誘諛諭踰蹂遊逾遺酉釉鍮類六堉戮毓肉育陸倫允奫尹崙淪潤玧胤贇輪鈗閏律慄栗率聿戎瀜絨融隆垠恩慇殷誾銀隱乙吟淫蔭陰音飮揖泣邑凝應膺鷹依倚儀宜意懿擬椅毅疑矣義艤薏蟻衣誼�".split(""); +for(j = 0; j != D[235].length; ++j) if(D[235][j].charCodeAt(0) !== 0xFFFD) { e[D[235][j]] = 60160 + j; d[60160 + j] = D[235][j];} +D[236] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������議醫二以伊利吏夷姨履已弛彛怡易李梨泥爾珥理異痍痢移罹而耳肄苡荑裏裡貽貳邇里離飴餌匿溺瀷益翊翌翼謚人仁刃印吝咽因姻寅引忍湮燐璘絪茵藺蚓認隣靭靷鱗麟一佚佾壹日溢逸鎰馹任壬妊姙恁林淋稔臨荏賃入卄�".split(""); +for(j = 0; j != D[236].length; ++j) if(D[236][j].charCodeAt(0) !== 0xFFFD) { e[D[236][j]] = 60416 + j; d[60416 + j] = D[236][j];} +D[237] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������立笠粒仍剩孕芿仔刺咨姉姿子字孜恣慈滋炙煮玆瓷疵磁紫者自茨蔗藉諮資雌作勺嚼斫昨灼炸爵綽芍酌雀鵲孱棧殘潺盞岑暫潛箴簪蠶雜丈仗匠場墻壯奬將帳庄張掌暲杖樟檣欌漿牆狀獐璋章粧腸臟臧莊葬蔣薔藏裝贓醬長�".split(""); +for(j = 0; j != D[237].length; ++j) if(D[237][j].charCodeAt(0) !== 0xFFFD) { e[D[237][j]] = 60672 + j; d[60672 + j] = D[237][j];} +D[238] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������障再哉在宰才材栽梓渽滓災縡裁財載齋齎爭箏諍錚佇低儲咀姐底抵杵楮樗沮渚狙猪疽箸紵苧菹著藷詛貯躇這邸雎齟勣吊嫡寂摘敵滴狄炙的積笛籍績翟荻謫賊赤跡蹟迪迹適鏑佃佺傳全典前剪塡塼奠專展廛悛戰栓殿氈澱�".split(""); +for(j = 0; j != D[238].length; ++j) if(D[238][j].charCodeAt(0) !== 0xFFFD) { e[D[238][j]] = 60928 + j; d[60928 + j] = D[238][j];} +D[239] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������煎琠田甸畑癲筌箋箭篆纏詮輾轉鈿銓錢鐫電顚顫餞切截折浙癤竊節絶占岾店漸点粘霑鮎點接摺蝶丁井亭停偵呈姃定幀庭廷征情挺政整旌晶晸柾楨檉正汀淀淨渟湞瀞炡玎珽町睛碇禎程穽精綎艇訂諪貞鄭酊釘鉦鋌錠霆靖�".split(""); +for(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];} +D[240] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������靜頂鼎制劑啼堤帝弟悌提梯濟祭第臍薺製諸蹄醍除際霽題齊俎兆凋助嘲弔彫措操早晁曺曹朝條棗槽漕潮照燥爪璪眺祖祚租稠窕粗糟組繰肇藻蚤詔調趙躁造遭釣阻雕鳥族簇足鏃存尊卒拙猝倧宗從悰慫棕淙琮種終綜縱腫�".split(""); +for(j = 0; j != D[240].length; ++j) if(D[240][j].charCodeAt(0) !== 0xFFFD) { e[D[240][j]] = 61440 + j; d[61440 + j] = D[240][j];} +D[241] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������踪踵鍾鐘佐坐左座挫罪主住侏做姝胄呪周嗾奏宙州廚晝朱柱株注洲湊澍炷珠疇籌紂紬綢舟蛛註誅走躊輳週酎酒鑄駐竹粥俊儁准埈寯峻晙樽浚準濬焌畯竣蠢逡遵雋駿茁中仲衆重卽櫛楫汁葺增憎曾拯烝甑症繒蒸證贈之只�".split(""); +for(j = 0; j != D[241].length; ++j) if(D[241][j].charCodeAt(0) !== 0xFFFD) { e[D[241][j]] = 61696 + j; d[61696 + j] = D[241][j];} +D[242] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������咫地址志持指摯支旨智枝枳止池沚漬知砥祉祗紙肢脂至芝芷蜘誌識贄趾遲直稙稷織職唇嗔塵振搢晉晋桭榛殄津溱珍瑨璡畛疹盡眞瞋秦縉縝臻蔯袗診賑軫辰進鎭陣陳震侄叱姪嫉帙桎瓆疾秩窒膣蛭質跌迭斟朕什執潗緝輯�".split(""); +for(j = 0; j != D[242].length; ++j) if(D[242][j].charCodeAt(0) !== 0xFFFD) { e[D[242][j]] = 61952 + j; d[61952 + j] = D[242][j];} +D[243] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������鏶集徵懲澄且侘借叉嗟嵯差次此磋箚茶蹉車遮捉搾着窄錯鑿齪撰澯燦璨瓚竄簒纂粲纘讚贊鑽餐饌刹察擦札紮僭參塹慘慙懺斬站讒讖倉倡創唱娼廠彰愴敞昌昶暢槍滄漲猖瘡窓脹艙菖蒼債埰寀寨彩採砦綵菜蔡采釵冊柵策�".split(""); +for(j = 0; j != D[243].length; ++j) if(D[243][j].charCodeAt(0) !== 0xFFFD) { e[D[243][j]] = 62208 + j; d[62208 + j] = D[243][j];} +D[244] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������責凄妻悽處倜刺剔尺慽戚拓擲斥滌瘠脊蹠陟隻仟千喘天川擅泉淺玔穿舛薦賤踐遷釧闡阡韆凸哲喆徹撤澈綴輟轍鐵僉尖沾添甛瞻簽籤詹諂堞妾帖捷牒疊睫諜貼輒廳晴淸聽菁請靑鯖切剃替涕滯締諦逮遞體初剿哨憔抄招梢�".split(""); +for(j = 0; j != D[244].length; ++j) if(D[244][j].charCodeAt(0) !== 0xFFFD) { e[D[244][j]] = 62464 + j; d[62464 + j] = D[244][j];} +D[245] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������椒楚樵炒焦硝礁礎秒稍肖艸苕草蕉貂超酢醋醮促囑燭矗蜀觸寸忖村邨叢塚寵悤憁摠總聰蔥銃撮催崔最墜抽推椎楸樞湫皺秋芻萩諏趨追鄒酋醜錐錘鎚雛騶鰍丑畜祝竺筑築縮蓄蹙蹴軸逐春椿瑃出朮黜充忠沖蟲衝衷悴膵萃�".split(""); +for(j = 0; j != D[245].length; ++j) if(D[245][j].charCodeAt(0) !== 0xFFFD) { e[D[245][j]] = 62720 + j; d[62720 + j] = D[245][j];} +D[246] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������贅取吹嘴娶就炊翠聚脆臭趣醉驟鷲側仄厠惻測層侈値嗤峙幟恥梔治淄熾痔痴癡稚穉緇緻置致蚩輜雉馳齒則勅飭親七柒漆侵寢枕沈浸琛砧針鍼蟄秤稱快他咤唾墮妥惰打拖朶楕舵陀馱駝倬卓啄坼度托拓擢晫柝濁濯琢琸託�".split(""); +for(j = 0; j != D[246].length; ++j) if(D[246][j].charCodeAt(0) !== 0xFFFD) { e[D[246][j]] = 62976 + j; d[62976 + j] = D[246][j];} +D[247] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������鐸呑嘆坦彈憚歎灘炭綻誕奪脫探眈耽貪塔搭榻宕帑湯糖蕩兌台太怠態殆汰泰笞胎苔跆邰颱宅擇澤撑攄兎吐土討慟桶洞痛筒統通堆槌腿褪退頹偸套妬投透鬪慝特闖坡婆巴把播擺杷波派爬琶破罷芭跛頗判坂板版瓣販辦鈑�".split(""); +for(j = 0; j != D[247].length; ++j) if(D[247][j].charCodeAt(0) !== 0xFFFD) { e[D[247][j]] = 63232 + j; d[63232 + j] = D[247][j];} +D[248] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������阪八叭捌佩唄悖敗沛浿牌狽稗覇貝彭澎烹膨愎便偏扁片篇編翩遍鞭騙貶坪平枰萍評吠嬖幣廢弊斃肺蔽閉陛佈包匍匏咆哺圃布怖抛抱捕暴泡浦疱砲胞脯苞葡蒲袍褒逋鋪飽鮑幅暴曝瀑爆輻俵剽彪慓杓標漂瓢票表豹飇飄驃�".split(""); +for(j = 0; j != D[248].length; ++j) if(D[248][j].charCodeAt(0) !== 0xFFFD) { e[D[248][j]] = 63488 + j; d[63488 + j] = D[248][j];} +D[249] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������品稟楓諷豊風馮彼披疲皮被避陂匹弼必泌珌畢疋筆苾馝乏逼下何厦夏廈昰河瑕荷蝦賀遐霞鰕壑學虐謔鶴寒恨悍旱汗漢澣瀚罕翰閑閒限韓割轄函含咸啣喊檻涵緘艦銜陷鹹合哈盒蛤閤闔陜亢伉姮嫦巷恒抗杭桁沆港缸肛航�".split(""); +for(j = 0; j != D[249].length; ++j) if(D[249][j].charCodeAt(0) !== 0xFFFD) { e[D[249][j]] = 63744 + j; d[63744 + j] = D[249][j];} +D[250] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������行降項亥偕咳垓奚孩害懈楷海瀣蟹解該諧邂駭骸劾核倖幸杏荇行享向嚮珦鄕響餉饗香噓墟虛許憲櫶獻軒歇險驗奕爀赫革俔峴弦懸晛泫炫玄玹現眩睍絃絢縣舷衒見賢鉉顯孑穴血頁嫌俠協夾峽挾浹狹脅脇莢鋏頰亨兄刑型�".split(""); +for(j = 0; j != D[250].length; ++j) if(D[250][j].charCodeAt(0) !== 0xFFFD) { e[D[250][j]] = 64000 + j; d[64000 + j] = D[250][j];} +D[251] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������形泂滎瀅灐炯熒珩瑩荊螢衡逈邢鎣馨兮彗惠慧暳蕙蹊醯鞋乎互呼壕壺好岵弧戶扈昊晧毫浩淏湖滸澔濠濩灝狐琥瑚瓠皓祜糊縞胡芦葫蒿虎號蝴護豪鎬頀顥惑或酷婚昏混渾琿魂忽惚笏哄弘汞泓洪烘紅虹訌鴻化和嬅樺火畵�".split(""); +for(j = 0; j != D[251].length; ++j) if(D[251][j].charCodeAt(0) !== 0xFFFD) { e[D[251][j]] = 64256 + j; d[64256 + j] = D[251][j];} +D[252] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������禍禾花華話譁貨靴廓擴攫確碻穫丸喚奐宦幻患換歡晥桓渙煥環紈還驩鰥活滑猾豁闊凰幌徨恍惶愰慌晃晄榥況湟滉潢煌璜皇篁簧荒蝗遑隍黃匯回廻徊恢悔懷晦會檜淮澮灰獪繪膾茴蛔誨賄劃獲宖橫鐄哮嚆孝效斅曉梟涍淆�".split(""); +for(j = 0; j != D[252].length; ++j) if(D[252][j].charCodeAt(0) !== 0xFFFD) { e[D[252][j]] = 64512 + j; d[64512 + j] = D[252][j];} +D[253] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������爻肴酵驍侯候厚后吼喉嗅帿後朽煦珝逅勛勳塤壎焄熏燻薰訓暈薨喧暄煊萱卉喙毁彙徽揮暉煇諱輝麾休携烋畦虧恤譎鷸兇凶匈洶胸黑昕欣炘痕吃屹紇訖欠欽歆吸恰洽翕興僖凞喜噫囍姬嬉希憙憘戱晞曦熙熹熺犧禧稀羲詰�".split(""); +for(j = 0; j != D[253].length; ++j) if(D[253][j].charCodeAt(0) !== 0xFFFD) { e[D[253][j]] = 64768 + j; d[64768 + j] = D[253][j];} +return {"enc": e, "dec": d }; })(); +cptable[21025] = (function(){ var d = "ŸŸ\u0002\u0003œ\t†—Ž\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013…\b‡\u0018\u0019’\u001c\u001d\u001e\u001f€‚ƒ„\n\u0017\u001bˆ‰Š‹Œ\u0005\u0006\u0007‘\u0016“”•–\u0004˜™š›\u0014\u0015ž\u001a  ђѓёєѕіїј[.<(+!&љњћќўџЪ№Ђ]$*);^-/ЃЁЄЅІЇЈЉ|,%_>?ЊЋЌ­ЎЏюаб`:#@'=\"цabcdefghiдефгхийjklmnopqrклмнопя~stuvwxyzрстужвьызшэщчъЮАБЦДЕФГ{ABCDEFGHIХИЙКЛМ}JKLMNOPQRНОПЯРС\\§STUVWXYZТУЖВЬЫ0123456789ЗШЭЩЧŸ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +cptable[21027] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f\u0000 \u0000。「」、・ヲァィ¢.<(+|&ゥェォャュョッーア!$*);¬-/イウエオカキケ\u0000,%_>?コサシスセソタチツ`:#@'\"\u0000abcdefghiテトナニŽネ\u0000jklmnopqrノハヒフヘホ¯~stuvwxyzマミム[メモ^£¥ヤユヨラリルレロワン]゙゚{ABCDEFG\u0000\u0000}JKLMNOP\u0000\\\u0000STUVWX\u0000\u000001234567", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +cptable[21866] = (function(){ var d = "ЪЪ\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~─│┌┐└┘├┤┬┴┼▀▄█▌▐░▒▓⌠■∙√≈≤≥ ⌡°²·÷═║╒ёє╔ії╗╘╙╚╛ґў╞╟╠╡ЁЄ╣ІЇ╦╧╨╩╪ҐЎ©юабцдефгхийклмнопярстужвьызшэщчъЮАБЦДЕФГХИЙКЛМНОПЯРСТУЖВЬЫЗШЭЩЧЪ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +cptable[29001] = (function(){ var d = "ΈΉΊΌΎ°◘○◙♂♀♪♬☼▶◀↕‼¶§£Ώ↑↓→←Ë↔▲▼ !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÇüéâäàåçêëèïîìÄÅÉæÆôöòûùΑÖÜøαØάΒáíóúñÑβΓγΔδΕεέΖζΗηή│ªÁÂÀΘθ║╗╝ΙΪ┐└º¡¿─΄ãÃ╚╔ιίϊ═ΐΚκΛÊλΜμÍΝν┘┌ΞξΟοόÓßÔΠõÕπΡρÚΣςσΤτΥΫυύϋΰΦφΧχΨ·ψΩωώ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +cptable[38598] = (function(){ var d = "\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¢£¤¥¦§¨©×«¬­®‾°±²³´µ¶·¸¹÷»¼½¾‗אבגדהוזחטיךכלםמןנסעףפץצקרשת", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +cptable[51932] = (function(){ var d = [], e = {}, D = [], j; +D[0] = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€�����������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];} +D[142] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������。「」、・ヲァィゥェォャュョッーアイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワン゙゚��������������������������������".split(""); +for(j = 0; j != D[142].length; ++j) if(D[142][j].charCodeAt(0) !== 0xFFFD) { e[D[142][j]] = 36352 + j; d[36352 + j] = D[142][j];} +D[161] = "����������������������������������������������������������������������������������������������������������������������������������������������������������������� 、。,.・:;?!゛゜´`¨^ ̄_ヽヾゝゞ〃仝々〆〇ー―‐/\~∥|…‥‘’“”()〔〕[]{}〈〉《》「」『』【】+-±×÷=≠<>≦≧∞∴♂♀°′″℃¥$¢£%#&*@§☆★○●◎◇�".split(""); +for(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];} +D[162] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������◆□■△▲▽▼※〒→←↑↓〓�����������∈∋⊆⊇⊂⊃∪∩��������∧∨¬⇒⇔∀∃�����������∠⊥⌒∂∇≡≒≪≫√∽∝∵∫∬�������ʼn♯♭♪†‡¶����◯�".split(""); +for(j = 0; j != D[162].length; ++j) if(D[162][j].charCodeAt(0) !== 0xFFFD) { e[D[162][j]] = 41472 + j; d[41472 + j] = D[162][j];} +D[163] = "��������������������������������������������������������������������������������������������������������������������������������������������������������������������������������0123456789�������ABCDEFGHIJKLMNOPQRSTUVWXYZ������abcdefghijklmnopqrstuvwxyz�����".split(""); +for(j = 0; j != D[163].length; ++j) if(D[163][j].charCodeAt(0) !== 0xFFFD) { e[D[163][j]] = 41728 + j; d[41728 + j] = D[163][j];} +D[164] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをん������������".split(""); +for(j = 0; j != D[164].length; ++j) if(D[164][j].charCodeAt(0) !== 0xFFFD) { e[D[164][j]] = 41984 + j; d[41984 + j] = D[164][j];} +D[165] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶ���������".split(""); +for(j = 0; j != D[165].length; ++j) if(D[165][j].charCodeAt(0) !== 0xFFFD) { e[D[165][j]] = 42240 + j; d[42240 + j] = D[165][j];} +D[166] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ��������αβγδεζηθικλμνξοπρστυφχψω���������������������������������������".split(""); +for(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];} +D[167] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ���������������абвгдеёжзийклмнопрстуфхцчшщъыьэюя��������������".split(""); +for(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];} +D[168] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂���������������������������������������������������������������".split(""); +for(j = 0; j != D[168].length; ++j) if(D[168][j].charCodeAt(0) !== 0xFFFD) { e[D[168][j]] = 43008 + j; d[43008 + j] = D[168][j];} +D[173] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯⑰⑱⑲⑳ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩ�㍉㌔㌢㍍㌘㌧㌃㌶㍑㍗㌍㌦㌣㌫㍊㌻㎜㎝㎞㎎㎏㏄㎡��������㍻〝〟№㏍℡㊤㊥㊦㊧㊨㈱㈲㈹㍾㍽㍼���∮∑���∟⊿������".split(""); +for(j = 0; j != D[173].length; ++j) if(D[173][j].charCodeAt(0) !== 0xFFFD) { e[D[173][j]] = 44288 + j; d[44288 + j] = D[173][j];} +D[176] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������亜唖娃阿哀愛挨姶逢葵茜穐悪握渥旭葦芦鯵梓圧斡扱宛姐虻飴絢綾鮎或粟袷安庵按暗案闇鞍杏以伊位依偉囲夷委威尉惟意慰易椅為畏異移維緯胃萎衣謂違遺医井亥域育郁磯一壱溢逸稲茨芋鰯允印咽員因姻引飲淫胤蔭�".split(""); +for(j = 0; j != D[176].length; ++j) if(D[176][j].charCodeAt(0) !== 0xFFFD) { e[D[176][j]] = 45056 + j; d[45056 + j] = D[176][j];} +D[177] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������院陰隠韻吋右宇烏羽迂雨卯鵜窺丑碓臼渦嘘唄欝蔚鰻姥厩浦瓜閏噂云運雲荏餌叡営嬰影映曳栄永泳洩瑛盈穎頴英衛詠鋭液疫益駅悦謁越閲榎厭円園堰奄宴延怨掩援沿演炎焔煙燕猿縁艶苑薗遠鉛鴛塩於汚甥凹央奥往応�".split(""); +for(j = 0; j != D[177].length; ++j) if(D[177][j].charCodeAt(0) !== 0xFFFD) { e[D[177][j]] = 45312 + j; d[45312 + j] = D[177][j];} +D[178] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������押旺横欧殴王翁襖鴬鴎黄岡沖荻億屋憶臆桶牡乙俺卸恩温穏音下化仮何伽価佳加可嘉夏嫁家寡科暇果架歌河火珂禍禾稼箇花苛茄荷華菓蝦課嘩貨迦過霞蚊俄峨我牙画臥芽蛾賀雅餓駕介会解回塊壊廻快怪悔恢懐戒拐改�".split(""); +for(j = 0; j != D[178].length; ++j) if(D[178][j].charCodeAt(0) !== 0xFFFD) { e[D[178][j]] = 45568 + j; d[45568 + j] = D[178][j];} +D[179] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������魁晦械海灰界皆絵芥蟹開階貝凱劾外咳害崖慨概涯碍蓋街該鎧骸浬馨蛙垣柿蛎鈎劃嚇各廓拡撹格核殻獲確穫覚角赫較郭閣隔革学岳楽額顎掛笠樫橿梶鰍潟割喝恰括活渇滑葛褐轄且鰹叶椛樺鞄株兜竃蒲釜鎌噛鴨栢茅萱�".split(""); +for(j = 0; j != D[179].length; ++j) if(D[179][j].charCodeAt(0) !== 0xFFFD) { e[D[179][j]] = 45824 + j; d[45824 + j] = D[179][j];} +D[180] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������粥刈苅瓦乾侃冠寒刊勘勧巻喚堪姦完官寛干幹患感慣憾換敢柑桓棺款歓汗漢澗潅環甘監看竿管簡緩缶翰肝艦莞観諌貫還鑑間閑関陥韓館舘丸含岸巌玩癌眼岩翫贋雁頑顔願企伎危喜器基奇嬉寄岐希幾忌揮机旗既期棋棄�".split(""); +for(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];} +D[181] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������機帰毅気汽畿祈季稀紀徽規記貴起軌輝飢騎鬼亀偽儀妓宜戯技擬欺犠疑祇義蟻誼議掬菊鞠吉吃喫桔橘詰砧杵黍却客脚虐逆丘久仇休及吸宮弓急救朽求汲泣灸球究窮笈級糾給旧牛去居巨拒拠挙渠虚許距鋸漁禦魚亨享京�".split(""); +for(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];} +D[182] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������供侠僑兇競共凶協匡卿叫喬境峡強彊怯恐恭挟教橋況狂狭矯胸脅興蕎郷鏡響饗驚仰凝尭暁業局曲極玉桐粁僅勤均巾錦斤欣欽琴禁禽筋緊芹菌衿襟謹近金吟銀九倶句区狗玖矩苦躯駆駈駒具愚虞喰空偶寓遇隅串櫛釧屑屈�".split(""); +for(j = 0; j != D[182].length; ++j) if(D[182][j].charCodeAt(0) !== 0xFFFD) { e[D[182][j]] = 46592 + j; d[46592 + j] = D[182][j];} +D[183] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������掘窟沓靴轡窪熊隈粂栗繰桑鍬勲君薫訓群軍郡卦袈祁係傾刑兄啓圭珪型契形径恵慶慧憩掲携敬景桂渓畦稽系経継繋罫茎荊蛍計詣警軽頚鶏芸迎鯨劇戟撃激隙桁傑欠決潔穴結血訣月件倹倦健兼券剣喧圏堅嫌建憲懸拳捲�".split(""); +for(j = 0; j != D[183].length; ++j) if(D[183][j].charCodeAt(0) !== 0xFFFD) { e[D[183][j]] = 46848 + j; d[46848 + j] = D[183][j];} +D[184] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������検権牽犬献研硯絹県肩見謙賢軒遣鍵険顕験鹸元原厳幻弦減源玄現絃舷言諺限乎個古呼固姑孤己庫弧戸故枯湖狐糊袴股胡菰虎誇跨鈷雇顧鼓五互伍午呉吾娯後御悟梧檎瑚碁語誤護醐乞鯉交佼侯候倖光公功効勾厚口向�".split(""); +for(j = 0; j != D[184].length; ++j) if(D[184][j].charCodeAt(0) !== 0xFFFD) { e[D[184][j]] = 47104 + j; d[47104 + j] = D[184][j];} +D[185] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������后喉坑垢好孔孝宏工巧巷幸広庚康弘恒慌抗拘控攻昂晃更杭校梗構江洪浩港溝甲皇硬稿糠紅紘絞綱耕考肯肱腔膏航荒行衡講貢購郊酵鉱砿鋼閤降項香高鴻剛劫号合壕拷濠豪轟麹克刻告国穀酷鵠黒獄漉腰甑忽惚骨狛込�".split(""); +for(j = 0; j != D[185].length; ++j) if(D[185][j].charCodeAt(0) !== 0xFFFD) { e[D[185][j]] = 47360 + j; d[47360 + j] = D[185][j];} +D[186] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������此頃今困坤墾婚恨懇昏昆根梱混痕紺艮魂些佐叉唆嵯左差査沙瑳砂詐鎖裟坐座挫債催再最哉塞妻宰彩才採栽歳済災采犀砕砦祭斎細菜裁載際剤在材罪財冴坂阪堺榊肴咲崎埼碕鷺作削咋搾昨朔柵窄策索錯桜鮭笹匙冊刷�".split(""); +for(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];} +D[187] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������察拶撮擦札殺薩雑皐鯖捌錆鮫皿晒三傘参山惨撒散桟燦珊産算纂蚕讃賛酸餐斬暫残仕仔伺使刺司史嗣四士始姉姿子屍市師志思指支孜斯施旨枝止死氏獅祉私糸紙紫肢脂至視詞詩試誌諮資賜雌飼歯事似侍児字寺慈持時�".split(""); +for(j = 0; j != D[187].length; ++j) if(D[187][j].charCodeAt(0) !== 0xFFFD) { e[D[187][j]] = 47872 + j; d[47872 + j] = D[187][j];} +D[188] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������次滋治爾璽痔磁示而耳自蒔辞汐鹿式識鴫竺軸宍雫七叱執失嫉室悉湿漆疾質実蔀篠偲柴芝屡蕊縞舎写射捨赦斜煮社紗者謝車遮蛇邪借勺尺杓灼爵酌釈錫若寂弱惹主取守手朱殊狩珠種腫趣酒首儒受呪寿授樹綬需囚収周�".split(""); +for(j = 0; j != D[188].length; ++j) if(D[188][j].charCodeAt(0) !== 0xFFFD) { e[D[188][j]] = 48128 + j; d[48128 + j] = D[188][j];} +D[189] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������宗就州修愁拾洲秀秋終繍習臭舟蒐衆襲讐蹴輯週酋酬集醜什住充十従戎柔汁渋獣縦重銃叔夙宿淑祝縮粛塾熟出術述俊峻春瞬竣舜駿准循旬楯殉淳準潤盾純巡遵醇順処初所暑曙渚庶緒署書薯藷諸助叙女序徐恕鋤除傷償�".split(""); +for(j = 0; j != D[189].length; ++j) if(D[189][j].charCodeAt(0) !== 0xFFFD) { e[D[189][j]] = 48384 + j; d[48384 + j] = D[189][j];} +D[190] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������勝匠升召哨商唱嘗奨妾娼宵将小少尚庄床廠彰承抄招掌捷昇昌昭晶松梢樟樵沼消渉湘焼焦照症省硝礁祥称章笑粧紹肖菖蒋蕉衝裳訟証詔詳象賞醤鉦鍾鐘障鞘上丈丞乗冗剰城場壌嬢常情擾条杖浄状畳穣蒸譲醸錠嘱埴飾�".split(""); +for(j = 0; j != D[190].length; ++j) if(D[190][j].charCodeAt(0) !== 0xFFFD) { e[D[190][j]] = 48640 + j; d[48640 + j] = D[190][j];} +D[191] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������拭植殖燭織職色触食蝕辱尻伸信侵唇娠寝審心慎振新晋森榛浸深申疹真神秦紳臣芯薪親診身辛進針震人仁刃塵壬尋甚尽腎訊迅陣靭笥諏須酢図厨逗吹垂帥推水炊睡粋翠衰遂酔錐錘随瑞髄崇嵩数枢趨雛据杉椙菅頗雀裾�".split(""); +for(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];} +D[192] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������澄摺寸世瀬畝是凄制勢姓征性成政整星晴棲栖正清牲生盛精聖声製西誠誓請逝醒青静斉税脆隻席惜戚斥昔析石積籍績脊責赤跡蹟碩切拙接摂折設窃節説雪絶舌蝉仙先千占宣専尖川戦扇撰栓栴泉浅洗染潜煎煽旋穿箭線�".split(""); +for(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];} +D[193] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������繊羨腺舛船薦詮賎践選遷銭銑閃鮮前善漸然全禅繕膳糎噌塑岨措曾曽楚狙疏疎礎祖租粗素組蘇訴阻遡鼠僧創双叢倉喪壮奏爽宋層匝惣想捜掃挿掻操早曹巣槍槽漕燥争痩相窓糟総綜聡草荘葬蒼藻装走送遭鎗霜騒像増憎�".split(""); +for(j = 0; j != D[193].length; ++j) if(D[193][j].charCodeAt(0) !== 0xFFFD) { e[D[193][j]] = 49408 + j; d[49408 + j] = D[193][j];} +D[194] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������臓蔵贈造促側則即息捉束測足速俗属賊族続卒袖其揃存孫尊損村遜他多太汰詑唾堕妥惰打柁舵楕陀駄騨体堆対耐岱帯待怠態戴替泰滞胎腿苔袋貸退逮隊黛鯛代台大第醍題鷹滝瀧卓啄宅托択拓沢濯琢託鐸濁諾茸凧蛸只�".split(""); +for(j = 0; j != D[194].length; ++j) if(D[194][j].charCodeAt(0) !== 0xFFFD) { e[D[194][j]] = 49664 + j; d[49664 + j] = D[194][j];} +D[195] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������叩但達辰奪脱巽竪辿棚谷狸鱈樽誰丹単嘆坦担探旦歎淡湛炭短端箪綻耽胆蛋誕鍛団壇弾断暖檀段男談値知地弛恥智池痴稚置致蜘遅馳築畜竹筑蓄逐秩窒茶嫡着中仲宙忠抽昼柱注虫衷註酎鋳駐樗瀦猪苧著貯丁兆凋喋寵�".split(""); +for(j = 0; j != D[195].length; ++j) if(D[195][j].charCodeAt(0) !== 0xFFFD) { e[D[195][j]] = 49920 + j; d[49920 + j] = D[195][j];} +D[196] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������帖帳庁弔張彫徴懲挑暢朝潮牒町眺聴脹腸蝶調諜超跳銚長頂鳥勅捗直朕沈珍賃鎮陳津墜椎槌追鎚痛通塚栂掴槻佃漬柘辻蔦綴鍔椿潰坪壷嬬紬爪吊釣鶴亭低停偵剃貞呈堤定帝底庭廷弟悌抵挺提梯汀碇禎程締艇訂諦蹄逓�".split(""); +for(j = 0; j != D[196].length; ++j) if(D[196][j].charCodeAt(0) !== 0xFFFD) { e[D[196][j]] = 50176 + j; d[50176 + j] = D[196][j];} +D[197] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������邸鄭釘鼎泥摘擢敵滴的笛適鏑溺哲徹撤轍迭鉄典填天展店添纏甜貼転顛点伝殿澱田電兎吐堵塗妬屠徒斗杜渡登菟賭途都鍍砥砺努度土奴怒倒党冬凍刀唐塔塘套宕島嶋悼投搭東桃梼棟盗淘湯涛灯燈当痘祷等答筒糖統到�".split(""); +for(j = 0; j != D[197].length; ++j) if(D[197][j].charCodeAt(0) !== 0xFFFD) { e[D[197][j]] = 50432 + j; d[50432 + j] = D[197][j];} +D[198] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������董蕩藤討謄豆踏逃透鐙陶頭騰闘働動同堂導憧撞洞瞳童胴萄道銅峠鴇匿得徳涜特督禿篤毒独読栃橡凸突椴届鳶苫寅酉瀞噸屯惇敦沌豚遁頓呑曇鈍奈那内乍凪薙謎灘捺鍋楢馴縄畷南楠軟難汝二尼弐迩匂賑肉虹廿日乳入�".split(""); +for(j = 0; j != D[198].length; ++j) if(D[198][j].charCodeAt(0) !== 0xFFFD) { e[D[198][j]] = 50688 + j; d[50688 + j] = D[198][j];} +D[199] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������如尿韮任妊忍認濡禰祢寧葱猫熱年念捻撚燃粘乃廼之埜嚢悩濃納能脳膿農覗蚤巴把播覇杷波派琶破婆罵芭馬俳廃拝排敗杯盃牌背肺輩配倍培媒梅楳煤狽買売賠陪這蝿秤矧萩伯剥博拍柏泊白箔粕舶薄迫曝漠爆縛莫駁麦�".split(""); +for(j = 0; j != D[199].length; ++j) if(D[199][j].charCodeAt(0) !== 0xFFFD) { e[D[199][j]] = 50944 + j; d[50944 + j] = D[199][j];} +D[200] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������函箱硲箸肇筈櫨幡肌畑畠八鉢溌発醗髪伐罰抜筏閥鳩噺塙蛤隼伴判半反叛帆搬斑板氾汎版犯班畔繁般藩販範釆煩頒飯挽晩番盤磐蕃蛮匪卑否妃庇彼悲扉批披斐比泌疲皮碑秘緋罷肥被誹費避非飛樋簸備尾微枇毘琵眉美�".split(""); +for(j = 0; j != D[200].length; ++j) if(D[200][j].charCodeAt(0) !== 0xFFFD) { e[D[200][j]] = 51200 + j; d[51200 + j] = D[200][j];} +D[201] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������鼻柊稗匹疋髭彦膝菱肘弼必畢筆逼桧姫媛紐百謬俵彪標氷漂瓢票表評豹廟描病秒苗錨鋲蒜蛭鰭品彬斌浜瀕貧賓頻敏瓶不付埠夫婦富冨布府怖扶敷斧普浮父符腐膚芙譜負賦赴阜附侮撫武舞葡蕪部封楓風葺蕗伏副復幅服�".split(""); +for(j = 0; j != D[201].length; ++j) if(D[201][j].charCodeAt(0) !== 0xFFFD) { e[D[201][j]] = 51456 + j; d[51456 + j] = D[201][j];} +D[202] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������福腹複覆淵弗払沸仏物鮒分吻噴墳憤扮焚奮粉糞紛雰文聞丙併兵塀幣平弊柄並蔽閉陛米頁僻壁癖碧別瞥蔑箆偏変片篇編辺返遍便勉娩弁鞭保舗鋪圃捕歩甫補輔穂募墓慕戊暮母簿菩倣俸包呆報奉宝峰峯崩庖抱捧放方朋�".split(""); +for(j = 0; j != D[202].length; ++j) if(D[202][j].charCodeAt(0) !== 0xFFFD) { e[D[202][j]] = 51712 + j; d[51712 + j] = D[202][j];} +D[203] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������法泡烹砲縫胞芳萌蓬蜂褒訪豊邦鋒飽鳳鵬乏亡傍剖坊妨帽忘忙房暴望某棒冒紡肪膨謀貌貿鉾防吠頬北僕卜墨撲朴牧睦穆釦勃没殆堀幌奔本翻凡盆摩磨魔麻埋妹昧枚毎哩槙幕膜枕鮪柾鱒桝亦俣又抹末沫迄侭繭麿万慢満�".split(""); +for(j = 0; j != D[203].length; ++j) if(D[203][j].charCodeAt(0) !== 0xFFFD) { e[D[203][j]] = 51968 + j; d[51968 + j] = D[203][j];} +D[204] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������漫蔓味未魅巳箕岬密蜜湊蓑稔脈妙粍民眠務夢無牟矛霧鵡椋婿娘冥名命明盟迷銘鳴姪牝滅免棉綿緬面麺摸模茂妄孟毛猛盲網耗蒙儲木黙目杢勿餅尤戻籾貰問悶紋門匁也冶夜爺耶野弥矢厄役約薬訳躍靖柳薮鑓愉愈油癒�".split(""); +for(j = 0; j != D[204].length; ++j) if(D[204][j].charCodeAt(0) !== 0xFFFD) { e[D[204][j]] = 52224 + j; d[52224 + j] = D[204][j];} +D[205] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������諭輸唯佑優勇友宥幽悠憂揖有柚湧涌猶猷由祐裕誘遊邑郵雄融夕予余与誉輿預傭幼妖容庸揚揺擁曜楊様洋溶熔用窯羊耀葉蓉要謡踊遥陽養慾抑欲沃浴翌翼淀羅螺裸来莱頼雷洛絡落酪乱卵嵐欄濫藍蘭覧利吏履李梨理璃�".split(""); +for(j = 0; j != D[205].length; ++j) if(D[205][j].charCodeAt(0) !== 0xFFFD) { e[D[205][j]] = 52480 + j; d[52480 + j] = D[205][j];} +D[206] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������痢裏裡里離陸律率立葎掠略劉流溜琉留硫粒隆竜龍侶慮旅虜了亮僚両凌寮料梁涼猟療瞭稜糧良諒遼量陵領力緑倫厘林淋燐琳臨輪隣鱗麟瑠塁涙累類令伶例冷励嶺怜玲礼苓鈴隷零霊麗齢暦歴列劣烈裂廉恋憐漣煉簾練聯�".split(""); +for(j = 0; j != D[206].length; ++j) if(D[206][j].charCodeAt(0) !== 0xFFFD) { e[D[206][j]] = 52736 + j; d[52736 + j] = D[206][j];} +D[207] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������蓮連錬呂魯櫓炉賂路露労婁廊弄朗楼榔浪漏牢狼篭老聾蝋郎六麓禄肋録論倭和話歪賄脇惑枠鷲亙亘鰐詫藁蕨椀湾碗腕��������������������������������������������".split(""); +for(j = 0; j != D[207].length; ++j) if(D[207][j].charCodeAt(0) !== 0xFFFD) { e[D[207][j]] = 52992 + j; d[52992 + j] = D[207][j];} +D[208] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������弌丐丕个丱丶丼丿乂乖乘亂亅豫亊舒弍于亞亟亠亢亰亳亶从仍仄仆仂仗仞仭仟价伉佚估佛佝佗佇佶侈侏侘佻佩佰侑佯來侖儘俔俟俎俘俛俑俚俐俤俥倚倨倔倪倥倅伜俶倡倩倬俾俯們倆偃假會偕偐偈做偖偬偸傀傚傅傴傲�".split(""); +for(j = 0; j != D[208].length; ++j) if(D[208][j].charCodeAt(0) !== 0xFFFD) { e[D[208][j]] = 53248 + j; d[53248 + j] = D[208][j];} +D[209] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������僉僊傳僂僖僞僥僭僣僮價僵儉儁儂儖儕儔儚儡儺儷儼儻儿兀兒兌兔兢竸兩兪兮冀冂囘册冉冏冑冓冕冖冤冦冢冩冪冫决冱冲冰况冽凅凉凛几處凩凭凰凵凾刄刋刔刎刧刪刮刳刹剏剄剋剌剞剔剪剴剩剳剿剽劍劔劒剱劈劑辨�".split(""); +for(j = 0; j != D[209].length; ++j) if(D[209][j].charCodeAt(0) !== 0xFFFD) { e[D[209][j]] = 53504 + j; d[53504 + j] = D[209][j];} +D[210] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������辧劬劭劼劵勁勍勗勞勣勦飭勠勳勵勸勹匆匈甸匍匐匏匕匚匣匯匱匳匸區卆卅丗卉卍凖卞卩卮夘卻卷厂厖厠厦厥厮厰厶參簒雙叟曼燮叮叨叭叺吁吽呀听吭吼吮吶吩吝呎咏呵咎呟呱呷呰咒呻咀呶咄咐咆哇咢咸咥咬哄哈咨�".split(""); +for(j = 0; j != D[210].length; ++j) if(D[210][j].charCodeAt(0) !== 0xFFFD) { e[D[210][j]] = 53760 + j; d[53760 + j] = D[210][j];} +D[211] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������咫哂咤咾咼哘哥哦唏唔哽哮哭哺哢唹啀啣啌售啜啅啖啗唸唳啝喙喀咯喊喟啻啾喘喞單啼喃喩喇喨嗚嗅嗟嗄嗜嗤嗔嘔嗷嘖嗾嗽嘛嗹噎噐營嘴嘶嘲嘸噫噤嘯噬噪嚆嚀嚊嚠嚔嚏嚥嚮嚶嚴囂嚼囁囃囀囈囎囑囓囗囮囹圀囿圄圉�".split(""); +for(j = 0; j != D[211].length; ++j) if(D[211][j].charCodeAt(0) !== 0xFFFD) { e[D[211][j]] = 54016 + j; d[54016 + j] = D[211][j];} +D[212] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������圈國圍圓團圖嗇圜圦圷圸坎圻址坏坩埀垈坡坿垉垓垠垳垤垪垰埃埆埔埒埓堊埖埣堋堙堝塲堡塢塋塰毀塒堽塹墅墹墟墫墺壞墻墸墮壅壓壑壗壙壘壥壜壤壟壯壺壹壻壼壽夂夊夐夛梦夥夬夭夲夸夾竒奕奐奎奚奘奢奠奧奬奩�".split(""); +for(j = 0; j != D[212].length; ++j) if(D[212][j].charCodeAt(0) !== 0xFFFD) { e[D[212][j]] = 54272 + j; d[54272 + j] = D[212][j];} +D[213] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������奸妁妝佞侫妣妲姆姨姜妍姙姚娥娟娑娜娉娚婀婬婉娵娶婢婪媚媼媾嫋嫂媽嫣嫗嫦嫩嫖嫺嫻嬌嬋嬖嬲嫐嬪嬶嬾孃孅孀孑孕孚孛孥孩孰孳孵學斈孺宀它宦宸寃寇寉寔寐寤實寢寞寥寫寰寶寳尅將專對尓尠尢尨尸尹屁屆屎屓�".split(""); +for(j = 0; j != D[213].length; ++j) if(D[213][j].charCodeAt(0) !== 0xFFFD) { e[D[213][j]] = 54528 + j; d[54528 + j] = D[213][j];} +D[214] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������屐屏孱屬屮乢屶屹岌岑岔妛岫岻岶岼岷峅岾峇峙峩峽峺峭嶌峪崋崕崗嵜崟崛崑崔崢崚崙崘嵌嵒嵎嵋嵬嵳嵶嶇嶄嶂嶢嶝嶬嶮嶽嶐嶷嶼巉巍巓巒巖巛巫已巵帋帚帙帑帛帶帷幄幃幀幎幗幔幟幢幤幇幵并幺麼广庠廁廂廈廐廏�".split(""); +for(j = 0; j != D[214].length; ++j) if(D[214][j].charCodeAt(0) !== 0xFFFD) { e[D[214][j]] = 54784 + j; d[54784 + j] = D[214][j];} +D[215] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������廖廣廝廚廛廢廡廨廩廬廱廳廰廴廸廾弃弉彝彜弋弑弖弩弭弸彁彈彌彎弯彑彖彗彙彡彭彳彷徃徂彿徊很徑徇從徙徘徠徨徭徼忖忻忤忸忱忝悳忿怡恠怙怐怩怎怱怛怕怫怦怏怺恚恁恪恷恟恊恆恍恣恃恤恂恬恫恙悁悍惧悃悚�".split(""); +for(j = 0; j != D[215].length; ++j) if(D[215][j].charCodeAt(0) !== 0xFFFD) { e[D[215][j]] = 55040 + j; d[55040 + j] = D[215][j];} +D[216] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������悄悛悖悗悒悧悋惡悸惠惓悴忰悽惆悵惘慍愕愆惶惷愀惴惺愃愡惻惱愍愎慇愾愨愧慊愿愼愬愴愽慂慄慳慷慘慙慚慫慴慯慥慱慟慝慓慵憙憖憇憬憔憚憊憑憫憮懌懊應懷懈懃懆憺懋罹懍懦懣懶懺懴懿懽懼懾戀戈戉戍戌戔戛�".split(""); +for(j = 0; j != D[216].length; ++j) if(D[216][j].charCodeAt(0) !== 0xFFFD) { e[D[216][j]] = 55296 + j; d[55296 + j] = D[216][j];} +D[217] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������戞戡截戮戰戲戳扁扎扞扣扛扠扨扼抂抉找抒抓抖拔抃抔拗拑抻拏拿拆擔拈拜拌拊拂拇抛拉挌拮拱挧挂挈拯拵捐挾捍搜捏掖掎掀掫捶掣掏掉掟掵捫捩掾揩揀揆揣揉插揶揄搖搴搆搓搦搶攝搗搨搏摧摯摶摎攪撕撓撥撩撈撼�".split(""); +for(j = 0; j != D[217].length; ++j) if(D[217][j].charCodeAt(0) !== 0xFFFD) { e[D[217][j]] = 55552 + j; d[55552 + j] = D[217][j];} +D[218] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������據擒擅擇撻擘擂擱擧舉擠擡抬擣擯攬擶擴擲擺攀擽攘攜攅攤攣攫攴攵攷收攸畋效敖敕敍敘敞敝敲數斂斃變斛斟斫斷旃旆旁旄旌旒旛旙无旡旱杲昊昃旻杳昵昶昴昜晏晄晉晁晞晝晤晧晨晟晢晰暃暈暎暉暄暘暝曁暹曉暾暼�".split(""); +for(j = 0; j != D[218].length; ++j) if(D[218][j].charCodeAt(0) !== 0xFFFD) { e[D[218][j]] = 55808 + j; d[55808 + j] = D[218][j];} +D[219] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������曄暸曖曚曠昿曦曩曰曵曷朏朖朞朦朧霸朮朿朶杁朸朷杆杞杠杙杣杤枉杰枩杼杪枌枋枦枡枅枷柯枴柬枳柩枸柤柞柝柢柮枹柎柆柧檜栞框栩桀桍栲桎梳栫桙档桷桿梟梏梭梔條梛梃檮梹桴梵梠梺椏梍桾椁棊椈棘椢椦棡椌棍�".split(""); +for(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];} +D[220] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������棔棧棕椶椒椄棗棣椥棹棠棯椨椪椚椣椡棆楹楷楜楸楫楔楾楮椹楴椽楙椰楡楞楝榁楪榲榮槐榿槁槓榾槎寨槊槝榻槃榧樮榑榠榜榕榴槞槨樂樛槿權槹槲槧樅榱樞槭樔槫樊樒櫁樣樓橄樌橲樶橸橇橢橙橦橈樸樢檐檍檠檄檢檣�".split(""); +for(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];} +D[221] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������檗蘗檻櫃櫂檸檳檬櫞櫑櫟檪櫚櫪櫻欅蘖櫺欒欖鬱欟欸欷盜欹飮歇歃歉歐歙歔歛歟歡歸歹歿殀殄殃殍殘殕殞殤殪殫殯殲殱殳殷殼毆毋毓毟毬毫毳毯麾氈氓气氛氤氣汞汕汢汪沂沍沚沁沛汾汨汳沒沐泄泱泓沽泗泅泝沮沱沾�".split(""); +for(j = 0; j != D[221].length; ++j) if(D[221][j].charCodeAt(0) !== 0xFFFD) { e[D[221][j]] = 56576 + j; d[56576 + j] = D[221][j];} +D[222] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������沺泛泯泙泪洟衍洶洫洽洸洙洵洳洒洌浣涓浤浚浹浙涎涕濤涅淹渕渊涵淇淦涸淆淬淞淌淨淒淅淺淙淤淕淪淮渭湮渮渙湲湟渾渣湫渫湶湍渟湃渺湎渤滿渝游溂溪溘滉溷滓溽溯滄溲滔滕溏溥滂溟潁漑灌滬滸滾漿滲漱滯漲滌�".split(""); +for(j = 0; j != D[222].length; ++j) if(D[222][j].charCodeAt(0) !== 0xFFFD) { e[D[222][j]] = 56832 + j; d[56832 + j] = D[222][j];} +D[223] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������漾漓滷澆潺潸澁澀潯潛濳潭澂潼潘澎澑濂潦澳澣澡澤澹濆澪濟濕濬濔濘濱濮濛瀉瀋濺瀑瀁瀏濾瀛瀚潴瀝瀘瀟瀰瀾瀲灑灣炙炒炯烱炬炸炳炮烟烋烝烙焉烽焜焙煥煕熈煦煢煌煖煬熏燻熄熕熨熬燗熹熾燒燉燔燎燠燬燧燵燼�".split(""); +for(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];} +D[224] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������燹燿爍爐爛爨爭爬爰爲爻爼爿牀牆牋牘牴牾犂犁犇犒犖犢犧犹犲狃狆狄狎狒狢狠狡狹狷倏猗猊猜猖猝猴猯猩猥猾獎獏默獗獪獨獰獸獵獻獺珈玳珎玻珀珥珮珞璢琅瑯琥珸琲琺瑕琿瑟瑙瑁瑜瑩瑰瑣瑪瑶瑾璋璞璧瓊瓏瓔珱�".split(""); +for(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];} +D[225] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������瓠瓣瓧瓩瓮瓲瓰瓱瓸瓷甄甃甅甌甎甍甕甓甞甦甬甼畄畍畊畉畛畆畚畩畤畧畫畭畸當疆疇畴疊疉疂疔疚疝疥疣痂疳痃疵疽疸疼疱痍痊痒痙痣痞痾痿痼瘁痰痺痲痳瘋瘍瘉瘟瘧瘠瘡瘢瘤瘴瘰瘻癇癈癆癜癘癡癢癨癩癪癧癬癰�".split(""); +for(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];} +D[226] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������癲癶癸發皀皃皈皋皎皖皓皙皚皰皴皸皹皺盂盍盖盒盞盡盥盧盪蘯盻眈眇眄眩眤眞眥眦眛眷眸睇睚睨睫睛睥睿睾睹瞎瞋瞑瞠瞞瞰瞶瞹瞿瞼瞽瞻矇矍矗矚矜矣矮矼砌砒礦砠礪硅碎硴碆硼碚碌碣碵碪碯磑磆磋磔碾碼磅磊磬�".split(""); +for(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];} +D[227] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������磧磚磽磴礇礒礑礙礬礫祀祠祗祟祚祕祓祺祿禊禝禧齋禪禮禳禹禺秉秕秧秬秡秣稈稍稘稙稠稟禀稱稻稾稷穃穗穉穡穢穩龝穰穹穽窈窗窕窘窖窩竈窰窶竅竄窿邃竇竊竍竏竕竓站竚竝竡竢竦竭竰笂笏笊笆笳笘笙笞笵笨笶筐�".split(""); +for(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];} +D[228] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������筺笄筍笋筌筅筵筥筴筧筰筱筬筮箝箘箟箍箜箚箋箒箏筝箙篋篁篌篏箴篆篝篩簑簔篦篥籠簀簇簓篳篷簗簍篶簣簧簪簟簷簫簽籌籃籔籏籀籐籘籟籤籖籥籬籵粃粐粤粭粢粫粡粨粳粲粱粮粹粽糀糅糂糘糒糜糢鬻糯糲糴糶糺紆�".split(""); +for(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];} +D[229] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������紂紜紕紊絅絋紮紲紿紵絆絳絖絎絲絨絮絏絣經綉絛綏絽綛綺綮綣綵緇綽綫總綢綯緜綸綟綰緘緝緤緞緻緲緡縅縊縣縡縒縱縟縉縋縢繆繦縻縵縹繃縷縲縺繧繝繖繞繙繚繹繪繩繼繻纃緕繽辮繿纈纉續纒纐纓纔纖纎纛纜缸缺�".split(""); +for(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];} +D[230] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������罅罌罍罎罐网罕罔罘罟罠罨罩罧罸羂羆羃羈羇羌羔羞羝羚羣羯羲羹羮羶羸譱翅翆翊翕翔翡翦翩翳翹飜耆耄耋耒耘耙耜耡耨耿耻聊聆聒聘聚聟聢聨聳聲聰聶聹聽聿肄肆肅肛肓肚肭冐肬胛胥胙胝胄胚胖脉胯胱脛脩脣脯腋�".split(""); +for(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];} +D[231] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������隋腆脾腓腑胼腱腮腥腦腴膃膈膊膀膂膠膕膤膣腟膓膩膰膵膾膸膽臀臂膺臉臍臑臙臘臈臚臟臠臧臺臻臾舁舂舅與舊舍舐舖舩舫舸舳艀艙艘艝艚艟艤艢艨艪艫舮艱艷艸艾芍芒芫芟芻芬苡苣苟苒苴苳苺莓范苻苹苞茆苜茉苙�".split(""); +for(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];} +D[232] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������茵茴茖茲茱荀茹荐荅茯茫茗茘莅莚莪莟莢莖茣莎莇莊荼莵荳荵莠莉莨菴萓菫菎菽萃菘萋菁菷萇菠菲萍萢萠莽萸蔆菻葭萪萼蕚蒄葷葫蒭葮蒂葩葆萬葯葹萵蓊葢蒹蒿蒟蓙蓍蒻蓚蓐蓁蓆蓖蒡蔡蓿蓴蔗蔘蔬蔟蔕蔔蓼蕀蕣蕘蕈�".split(""); +for(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];} +D[233] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������蕁蘂蕋蕕薀薤薈薑薊薨蕭薔薛藪薇薜蕷蕾薐藉薺藏薹藐藕藝藥藜藹蘊蘓蘋藾藺蘆蘢蘚蘰蘿虍乕虔號虧虱蚓蚣蚩蚪蚋蚌蚶蚯蛄蛆蚰蛉蠣蚫蛔蛞蛩蛬蛟蛛蛯蜒蜆蜈蜀蜃蛻蜑蜉蜍蛹蜊蜴蜿蜷蜻蜥蜩蜚蝠蝟蝸蝌蝎蝴蝗蝨蝮蝙�".split(""); +for(j = 0; j != D[233].length; ++j) if(D[233][j].charCodeAt(0) !== 0xFFFD) { e[D[233][j]] = 59648 + j; d[59648 + j] = D[233][j];} +D[234] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������蝓蝣蝪蠅螢螟螂螯蟋螽蟀蟐雖螫蟄螳蟇蟆螻蟯蟲蟠蠏蠍蟾蟶蟷蠎蟒蠑蠖蠕蠢蠡蠱蠶蠹蠧蠻衄衂衒衙衞衢衫袁衾袞衵衽袵衲袂袗袒袮袙袢袍袤袰袿袱裃裄裔裘裙裝裹褂裼裴裨裲褄褌褊褓襃褞褥褪褫襁襄褻褶褸襌褝襠襞�".split(""); +for(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];} +D[235] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������襦襤襭襪襯襴襷襾覃覈覊覓覘覡覩覦覬覯覲覺覽覿觀觚觜觝觧觴觸訃訖訐訌訛訝訥訶詁詛詒詆詈詼詭詬詢誅誂誄誨誡誑誥誦誚誣諄諍諂諚諫諳諧諤諱謔諠諢諷諞諛謌謇謚諡謖謐謗謠謳鞫謦謫謾謨譁譌譏譎證譖譛譚譫�".split(""); +for(j = 0; j != D[235].length; ++j) if(D[235][j].charCodeAt(0) !== 0xFFFD) { e[D[235][j]] = 60160 + j; d[60160 + j] = D[235][j];} +D[236] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������譟譬譯譴譽讀讌讎讒讓讖讙讚谺豁谿豈豌豎豐豕豢豬豸豺貂貉貅貊貍貎貔豼貘戝貭貪貽貲貳貮貶賈賁賤賣賚賽賺賻贄贅贊贇贏贍贐齎贓賍贔贖赧赭赱赳趁趙跂趾趺跏跚跖跌跛跋跪跫跟跣跼踈踉跿踝踞踐踟蹂踵踰踴蹊�".split(""); +for(j = 0; j != D[236].length; ++j) if(D[236][j].charCodeAt(0) !== 0xFFFD) { e[D[236][j]] = 60416 + j; d[60416 + j] = D[236][j];} +D[237] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������蹇蹉蹌蹐蹈蹙蹤蹠踪蹣蹕蹶蹲蹼躁躇躅躄躋躊躓躑躔躙躪躡躬躰軆躱躾軅軈軋軛軣軼軻軫軾輊輅輕輒輙輓輜輟輛輌輦輳輻輹轅轂輾轌轉轆轎轗轜轢轣轤辜辟辣辭辯辷迚迥迢迪迯邇迴逅迹迺逑逕逡逍逞逖逋逧逶逵逹迸�".split(""); +for(j = 0; j != D[237].length; ++j) if(D[237][j].charCodeAt(0) !== 0xFFFD) { e[D[237][j]] = 60672 + j; d[60672 + j] = D[237][j];} +D[238] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������遏遐遑遒逎遉逾遖遘遞遨遯遶隨遲邂遽邁邀邊邉邏邨邯邱邵郢郤扈郛鄂鄒鄙鄲鄰酊酖酘酣酥酩酳酲醋醉醂醢醫醯醪醵醴醺釀釁釉釋釐釖釟釡釛釼釵釶鈞釿鈔鈬鈕鈑鉞鉗鉅鉉鉤鉈銕鈿鉋鉐銜銖銓銛鉚鋏銹銷鋩錏鋺鍄錮�".split(""); +for(j = 0; j != D[238].length; ++j) if(D[238][j].charCodeAt(0) !== 0xFFFD) { e[D[238][j]] = 60928 + j; d[60928 + j] = D[238][j];} +D[239] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������錙錢錚錣錺錵錻鍜鍠鍼鍮鍖鎰鎬鎭鎔鎹鏖鏗鏨鏥鏘鏃鏝鏐鏈鏤鐚鐔鐓鐃鐇鐐鐶鐫鐵鐡鐺鑁鑒鑄鑛鑠鑢鑞鑪鈩鑰鑵鑷鑽鑚鑼鑾钁鑿閂閇閊閔閖閘閙閠閨閧閭閼閻閹閾闊濶闃闍闌闕闔闖關闡闥闢阡阨阮阯陂陌陏陋陷陜陞�".split(""); +for(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];} +D[240] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������陝陟陦陲陬隍隘隕隗險隧隱隲隰隴隶隸隹雎雋雉雍襍雜霍雕雹霄霆霈霓霎霑霏霖霙霤霪霰霹霽霾靄靆靈靂靉靜靠靤靦靨勒靫靱靹鞅靼鞁靺鞆鞋鞏鞐鞜鞨鞦鞣鞳鞴韃韆韈韋韜韭齏韲竟韶韵頏頌頸頤頡頷頽顆顏顋顫顯顰�".split(""); +for(j = 0; j != D[240].length; ++j) if(D[240][j].charCodeAt(0) !== 0xFFFD) { e[D[240][j]] = 61440 + j; d[61440 + j] = D[240][j];} +D[241] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������顱顴顳颪颯颱颶飄飃飆飩飫餃餉餒餔餘餡餝餞餤餠餬餮餽餾饂饉饅饐饋饑饒饌饕馗馘馥馭馮馼駟駛駝駘駑駭駮駱駲駻駸騁騏騅駢騙騫騷驅驂驀驃騾驕驍驛驗驟驢驥驤驩驫驪骭骰骼髀髏髑髓體髞髟髢髣髦髯髫髮髴髱髷�".split(""); +for(j = 0; j != D[241].length; ++j) if(D[241][j].charCodeAt(0) !== 0xFFFD) { e[D[241][j]] = 61696 + j; d[61696 + j] = D[241][j];} +D[242] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������髻鬆鬘鬚鬟鬢鬣鬥鬧鬨鬩鬪鬮鬯鬲魄魃魏魍魎魑魘魴鮓鮃鮑鮖鮗鮟鮠鮨鮴鯀鯊鮹鯆鯏鯑鯒鯣鯢鯤鯔鯡鰺鯲鯱鯰鰕鰔鰉鰓鰌鰆鰈鰒鰊鰄鰮鰛鰥鰤鰡鰰鱇鰲鱆鰾鱚鱠鱧鱶鱸鳧鳬鳰鴉鴈鳫鴃鴆鴪鴦鶯鴣鴟鵄鴕鴒鵁鴿鴾鵆鵈�".split(""); +for(j = 0; j != D[242].length; ++j) if(D[242][j].charCodeAt(0) !== 0xFFFD) { e[D[242][j]] = 61952 + j; d[61952 + j] = D[242][j];} +D[243] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������鵝鵞鵤鵑鵐鵙鵲鶉鶇鶫鵯鵺鶚鶤鶩鶲鷄鷁鶻鶸鶺鷆鷏鷂鷙鷓鷸鷦鷭鷯鷽鸚鸛鸞鹵鹹鹽麁麈麋麌麒麕麑麝麥麩麸麪麭靡黌黎黏黐黔黜點黝黠黥黨黯黴黶黷黹黻黼黽鼇鼈皷鼕鼡鼬鼾齊齒齔齣齟齠齡齦齧齬齪齷齲齶龕龜龠�".split(""); +for(j = 0; j != D[243].length; ++j) if(D[243][j].charCodeAt(0) !== 0xFFFD) { e[D[243][j]] = 62208 + j; d[62208 + j] = D[243][j];} +D[244] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������堯槇遙瑤凜熙�����������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[244].length; ++j) if(D[244][j].charCodeAt(0) !== 0xFFFD) { e[D[244][j]] = 62464 + j; d[62464 + j] = D[244][j];} +D[249] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������纊褜鍈銈蓜俉炻昱棈鋹曻彅丨仡仼伀伃伹佖侒侊侚侔俍偀倢俿倞偆偰偂傔僴僘兊兤冝冾凬刕劜劦勀勛匀匇匤卲厓厲叝﨎咜咊咩哿喆坙坥垬埈埇﨏塚增墲夋奓奛奝奣妤妺孖寀甯寘寬尞岦岺峵崧嵓﨑嵂嵭嶸嶹巐弡弴彧德�".split(""); +for(j = 0; j != D[249].length; ++j) if(D[249][j].charCodeAt(0) !== 0xFFFD) { e[D[249][j]] = 63744 + j; d[63744 + j] = D[249][j];} +D[250] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������忞恝悅悊惞惕愠惲愑愷愰憘戓抦揵摠撝擎敎昀昕昻昉昮昞昤晥晗晙晴晳暙暠暲暿曺朎朗杦枻桒柀栁桄棏﨓楨﨔榘槢樰橫橆橳橾櫢櫤毖氿汜沆汯泚洄涇浯涖涬淏淸淲淼渹湜渧渼溿澈澵濵瀅瀇瀨炅炫焏焄煜煆煇凞燁燾犱�".split(""); +for(j = 0; j != D[250].length; ++j) if(D[250][j].charCodeAt(0) !== 0xFFFD) { e[D[250][j]] = 64000 + j; d[64000 + j] = D[250][j];} +D[251] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������犾猤猪獷玽珉珖珣珒琇珵琦琪琩琮瑢璉璟甁畯皂皜皞皛皦益睆劯砡硎硤硺礰礼神祥禔福禛竑竧靖竫箞精絈絜綷綠緖繒罇羡羽茁荢荿菇菶葈蒴蕓蕙蕫﨟薰蘒﨡蠇裵訒訷詹誧誾諟諸諶譓譿賰賴贒赶﨣軏﨤逸遧郞都鄕鄧釚�".split(""); +for(j = 0; j != D[251].length; ++j) if(D[251][j].charCodeAt(0) !== 0xFFFD) { e[D[251][j]] = 64256 + j; d[64256 + j] = D[251][j];} +D[252] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������釗釞釭釮釤釥鈆鈐鈊鈺鉀鈼鉎鉙鉑鈹鉧銧鉷鉸鋧鋗鋙鋐﨧鋕鋠鋓錥錡鋻﨨錞鋿錝錂鍰鍗鎤鏆鏞鏸鐱鑅鑈閒隆﨩隝隯霳霻靃靍靏靑靕顗顥飯飼餧館馞驎髙髜魵魲鮏鮱鮻鰀鵰鵫鶴鸙黑��ⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹ�¦'"�".split(""); +for(j = 0; j != D[252].length; ++j) if(D[252][j].charCodeAt(0) !== 0xFFFD) { e[D[252][j]] = 64512 + j; d[64512 + j] = D[252][j];} +return {"enc": e, "dec": d }; })(); +cptable[51936] = (function(){ var d = [], e = {}, D = [], j; +D[0] = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];} +D[129] = "����������������������������������������������������������������丂丄丅丆丏丒丗丟丠両丣並丩丮丯丱丳丵丷丼乀乁乂乄乆乊乑乕乗乚乛乢乣乤乥乧乨乪乫乬乭乮乯乲乴乵乶乷乸乹乺乻乼乽乿亀亁亂亃亄亅亇亊�亐亖亗亙亜亝亞亣亪亯亰亱亴亶亷亸亹亼亽亾仈仌仏仐仒仚仛仜仠仢仦仧仩仭仮仯仱仴仸仹仺仼仾伀伂伃伄伅伆伇伈伋伌伒伓伔伕伖伜伝伡伣伨伩伬伭伮伱伳伵伷伹伻伾伿佀佁佂佄佅佇佈佉佊佋佌佒佔佖佡佢佦佨佪佫佭佮佱佲併佷佸佹佺佽侀侁侂侅來侇侊侌侎侐侒侓侕侖侘侙侚侜侞侟価侢�".split(""); +for(j = 0; j != D[129].length; ++j) if(D[129][j].charCodeAt(0) !== 0xFFFD) { e[D[129][j]] = 33024 + j; d[33024 + j] = D[129][j];} +D[130] = "����������������������������������������������������������������侤侫侭侰侱侲侳侴侶侷侸侹侺侻侼侽侾俀俁係俆俇俈俉俋俌俍俒俓俔俕俖俙俛俠俢俤俥俧俫俬俰俲俴俵俶俷俹俻俼俽俿倀倁倂倃倄倅倆倇倈倉倊�個倎倐們倓倕倖倗倛倝倞倠倢倣値倧倫倯倰倱倲倳倴倵倶倷倸倹倻倽倿偀偁偂偄偅偆偉偊偋偍偐偑偒偓偔偖偗偘偙偛偝偞偟偠偡偢偣偤偦偧偨偩偪偫偭偮偯偰偱偲偳側偵偸偹偺偼偽傁傂傃傄傆傇傉傊傋傌傎傏傐傑傒傓傔傕傖傗傘備傚傛傜傝傞傟傠傡傢傤傦傪傫傭傮傯傰傱傳傴債傶傷傸傹傼�".split(""); +for(j = 0; j != D[130].length; ++j) if(D[130][j].charCodeAt(0) !== 0xFFFD) { e[D[130][j]] = 33280 + j; d[33280 + j] = D[130][j];} +D[131] = "����������������������������������������������������������������傽傾傿僀僁僂僃僄僅僆僇僈僉僊僋僌働僎僐僑僒僓僔僕僗僘僙僛僜僝僞僟僠僡僢僣僤僥僨僩僪僫僯僰僱僲僴僶僷僸價僺僼僽僾僿儀儁儂儃億儅儈�儉儊儌儍儎儏儐儑儓儔儕儖儗儘儙儚儛儜儝儞償儠儢儣儤儥儦儧儨儩優儫儬儭儮儯儰儱儲儳儴儵儶儷儸儹儺儻儼儽儾兂兇兊兌兎兏児兒兓兗兘兙兛兝兞兟兠兡兣兤兦內兩兪兯兲兺兾兿冃冄円冇冊冋冎冏冐冑冓冔冘冚冝冞冟冡冣冦冧冨冩冪冭冮冴冸冹冺冾冿凁凂凃凅凈凊凍凎凐凒凓凔凕凖凗�".split(""); +for(j = 0; j != D[131].length; ++j) if(D[131][j].charCodeAt(0) !== 0xFFFD) { e[D[131][j]] = 33536 + j; d[33536 + j] = D[131][j];} +D[132] = "����������������������������������������������������������������凘凙凚凜凞凟凢凣凥処凧凨凩凪凬凮凱凲凴凷凾刄刅刉刋刌刏刐刓刔刕刜刞刟刡刢刣別刦刧刪刬刯刱刲刴刵刼刾剄剅剆則剈剉剋剎剏剒剓剕剗剘�剙剚剛剝剟剠剢剣剤剦剨剫剬剭剮剰剱剳剴創剶剷剸剹剺剻剼剾劀劃劄劅劆劇劉劊劋劌劍劎劏劑劒劔劕劖劗劘劙劚劜劤劥劦劧劮劯劰労劵劶劷劸効劺劻劼劽勀勁勂勄勅勆勈勊勌勍勎勏勑勓勔動勗務勚勛勜勝勞勠勡勢勣勥勦勧勨勩勪勫勬勭勮勯勱勲勳勴勵勶勷勸勻勼勽匁匂匃匄匇匉匊匋匌匎�".split(""); +for(j = 0; j != D[132].length; ++j) if(D[132][j].charCodeAt(0) !== 0xFFFD) { e[D[132][j]] = 33792 + j; d[33792 + j] = D[132][j];} +D[133] = "����������������������������������������������������������������匑匒匓匔匘匛匜匞匟匢匤匥匧匨匩匫匬匭匯匰匱匲匳匴匵匶匷匸匼匽區卂卄卆卋卌卍卐協単卙卛卝卥卨卪卬卭卲卶卹卻卼卽卾厀厁厃厇厈厊厎厏�厐厑厒厓厔厖厗厙厛厜厞厠厡厤厧厪厫厬厭厯厰厱厲厳厴厵厷厸厹厺厼厽厾叀參叄叅叆叇収叏叐叒叓叕叚叜叝叞叡叢叧叴叺叾叿吀吂吅吇吋吔吘吙吚吜吢吤吥吪吰吳吶吷吺吽吿呁呂呄呅呇呉呌呍呎呏呑呚呝呞呟呠呡呣呥呧呩呪呫呬呭呮呯呰呴呹呺呾呿咁咃咅咇咈咉咊咍咑咓咗咘咜咞咟咠咡�".split(""); +for(j = 0; j != D[133].length; ++j) if(D[133][j].charCodeAt(0) !== 0xFFFD) { e[D[133][j]] = 34048 + j; d[34048 + j] = D[133][j];} +D[134] = "����������������������������������������������������������������咢咥咮咰咲咵咶咷咹咺咼咾哃哅哊哋哖哘哛哠員哢哣哤哫哬哯哰哱哴哵哶哷哸哹哻哾唀唂唃唄唅唈唊唋唌唍唎唒唓唕唖唗唘唙唚唜唝唞唟唡唥唦�唨唩唫唭唲唴唵唶唸唹唺唻唽啀啂啅啇啈啋啌啍啎問啑啒啓啔啗啘啙啚啛啝啞啟啠啢啣啨啩啫啯啰啱啲啳啴啹啺啽啿喅喆喌喍喎喐喒喓喕喖喗喚喛喞喠喡喢喣喤喥喦喨喩喪喫喬喭單喯喰喲喴営喸喺喼喿嗀嗁嗂嗃嗆嗇嗈嗊嗋嗎嗏嗐嗕嗗嗘嗙嗚嗛嗞嗠嗢嗧嗩嗭嗮嗰嗱嗴嗶嗸嗹嗺嗻嗼嗿嘂嘃嘄嘅�".split(""); +for(j = 0; j != D[134].length; ++j) if(D[134][j].charCodeAt(0) !== 0xFFFD) { e[D[134][j]] = 34304 + j; d[34304 + j] = D[134][j];} +D[135] = "����������������������������������������������������������������嘆嘇嘊嘋嘍嘐嘑嘒嘓嘔嘕嘖嘗嘙嘚嘜嘝嘠嘡嘢嘥嘦嘨嘩嘪嘫嘮嘯嘰嘳嘵嘷嘸嘺嘼嘽嘾噀噁噂噃噄噅噆噇噈噉噊噋噏噐噑噒噓噕噖噚噛噝噞噟噠噡�噣噥噦噧噭噮噯噰噲噳噴噵噷噸噹噺噽噾噿嚀嚁嚂嚃嚄嚇嚈嚉嚊嚋嚌嚍嚐嚑嚒嚔嚕嚖嚗嚘嚙嚚嚛嚜嚝嚞嚟嚠嚡嚢嚤嚥嚦嚧嚨嚩嚪嚫嚬嚭嚮嚰嚱嚲嚳嚴嚵嚶嚸嚹嚺嚻嚽嚾嚿囀囁囂囃囄囅囆囇囈囉囋囌囍囎囏囐囑囒囓囕囖囘囙囜団囥囦囧囨囩囪囬囮囯囲図囶囷囸囻囼圀圁圂圅圇國圌圍圎圏圐圑�".split(""); +for(j = 0; j != D[135].length; ++j) if(D[135][j].charCodeAt(0) !== 0xFFFD) { e[D[135][j]] = 34560 + j; d[34560 + j] = D[135][j];} +D[136] = "����������������������������������������������������������������園圓圔圕圖圗團圙圚圛圝圞圠圡圢圤圥圦圧圫圱圲圴圵圶圷圸圼圽圿坁坃坄坅坆坈坉坋坒坓坔坕坖坘坙坢坣坥坧坬坮坰坱坲坴坵坸坹坺坽坾坿垀�垁垇垈垉垊垍垎垏垐垑垔垕垖垗垘垙垚垜垝垞垟垥垨垪垬垯垰垱垳垵垶垷垹垺垻垼垽垾垿埀埁埄埅埆埇埈埉埊埌埍埐埑埓埖埗埛埜埞埡埢埣埥埦埧埨埩埪埫埬埮埰埱埲埳埵埶執埻埼埾埿堁堃堄堅堈堉堊堌堎堏堐堒堓堔堖堗堘堚堛堜堝堟堢堣堥堦堧堨堩堫堬堭堮堯報堲堳場堶堷堸堹堺堻堼堽�".split(""); +for(j = 0; j != D[136].length; ++j) if(D[136][j].charCodeAt(0) !== 0xFFFD) { e[D[136][j]] = 34816 + j; d[34816 + j] = D[136][j];} +D[137] = "����������������������������������������������������������������堾堿塀塁塂塃塅塆塇塈塉塊塋塎塏塐塒塓塕塖塗塙塚塛塜塝塟塠塡塢塣塤塦塧塨塩塪塭塮塯塰塱塲塳塴塵塶塷塸塹塺塻塼塽塿墂墄墆墇墈墊墋墌�墍墎墏墐墑墔墕墖増墘墛墜墝墠墡墢墣墤墥墦墧墪墫墬墭墮墯墰墱墲墳墴墵墶墷墸墹墺墻墽墾墿壀壂壃壄壆壇壈壉壊壋壌壍壎壏壐壒壓壔壖壗壘壙壚壛壜壝壞壟壠壡壢壣壥壦壧壨壩壪壭壯壱売壴壵壷壸壺壻壼壽壾壿夀夁夃夅夆夈変夊夋夌夎夐夑夒夓夗夘夛夝夞夠夡夢夣夦夨夬夰夲夳夵夶夻�".split(""); +for(j = 0; j != D[137].length; ++j) if(D[137][j].charCodeAt(0) !== 0xFFFD) { e[D[137][j]] = 35072 + j; d[35072 + j] = D[137][j];} +D[138] = "����������������������������������������������������������������夽夾夿奀奃奅奆奊奌奍奐奒奓奙奛奜奝奞奟奡奣奤奦奧奨奩奪奫奬奭奮奯奰奱奲奵奷奺奻奼奾奿妀妅妉妋妌妎妏妐妑妔妕妘妚妛妜妝妟妠妡妢妦�妧妬妭妰妱妳妴妵妶妷妸妺妼妽妿姀姁姂姃姄姅姇姈姉姌姍姎姏姕姖姙姛姞姟姠姡姢姤姦姧姩姪姫姭姮姯姰姱姲姳姴姵姶姷姸姺姼姽姾娀娂娊娋娍娎娏娐娒娔娕娖娗娙娚娛娝娞娡娢娤娦娧娨娪娫娬娭娮娯娰娳娵娷娸娹娺娻娽娾娿婁婂婃婄婅婇婈婋婌婍婎婏婐婑婒婓婔婖婗婘婙婛婜婝婞婟婠�".split(""); +for(j = 0; j != D[138].length; ++j) if(D[138][j].charCodeAt(0) !== 0xFFFD) { e[D[138][j]] = 35328 + j; d[35328 + j] = D[138][j];} +D[139] = "����������������������������������������������������������������婡婣婤婥婦婨婩婫婬婭婮婯婰婱婲婳婸婹婻婼婽婾媀媁媂媃媄媅媆媇媈媉媊媋媌媍媎媏媐媑媓媔媕媖媗媘媙媜媝媞媟媠媡媢媣媤媥媦媧媨媩媫媬�媭媮媯媰媱媴媶媷媹媺媻媼媽媿嫀嫃嫄嫅嫆嫇嫈嫊嫋嫍嫎嫏嫐嫑嫓嫕嫗嫙嫚嫛嫝嫞嫟嫢嫤嫥嫧嫨嫪嫬嫭嫮嫯嫰嫲嫳嫴嫵嫶嫷嫸嫹嫺嫻嫼嫽嫾嫿嬀嬁嬂嬃嬄嬅嬆嬇嬈嬊嬋嬌嬍嬎嬏嬐嬑嬒嬓嬔嬕嬘嬙嬚嬛嬜嬝嬞嬟嬠嬡嬢嬣嬤嬥嬦嬧嬨嬩嬪嬫嬬嬭嬮嬯嬰嬱嬳嬵嬶嬸嬹嬺嬻嬼嬽嬾嬿孁孂孃孄孅孆孇�".split(""); +for(j = 0; j != D[139].length; ++j) if(D[139][j].charCodeAt(0) !== 0xFFFD) { e[D[139][j]] = 35584 + j; d[35584 + j] = D[139][j];} +D[140] = "����������������������������������������������������������������孈孉孊孋孌孍孎孏孒孖孞孠孡孧孨孫孭孮孯孲孴孶孷學孹孻孼孾孿宂宆宊宍宎宐宑宒宔宖実宧宨宩宬宭宮宯宱宲宷宺宻宼寀寁寃寈寉寊寋寍寎寏�寑寔寕寖寗寘寙寚寛寜寠寢寣實寧審寪寫寬寭寯寱寲寳寴寵寶寷寽対尀専尃尅將專尋尌對導尐尒尓尗尙尛尞尟尠尡尣尦尨尩尪尫尭尮尯尰尲尳尵尶尷屃屄屆屇屌屍屒屓屔屖屗屘屚屛屜屝屟屢層屧屨屩屪屫屬屭屰屲屳屴屵屶屷屸屻屼屽屾岀岃岄岅岆岇岉岊岋岎岏岒岓岕岝岞岟岠岡岤岥岦岧岨�".split(""); +for(j = 0; j != D[140].length; ++j) if(D[140][j].charCodeAt(0) !== 0xFFFD) { e[D[140][j]] = 35840 + j; d[35840 + j] = D[140][j];} +D[141] = "����������������������������������������������������������������岪岮岯岰岲岴岶岹岺岻岼岾峀峂峃峅峆峇峈峉峊峌峍峎峏峐峑峓峔峕峖峗峘峚峛峜峝峞峟峠峢峣峧峩峫峬峮峯峱峲峳峴峵島峷峸峹峺峼峽峾峿崀�崁崄崅崈崉崊崋崌崍崏崐崑崒崓崕崗崘崙崚崜崝崟崠崡崢崣崥崨崪崫崬崯崰崱崲崳崵崶崷崸崹崺崻崼崿嵀嵁嵂嵃嵄嵅嵆嵈嵉嵍嵎嵏嵐嵑嵒嵓嵔嵕嵖嵗嵙嵚嵜嵞嵟嵠嵡嵢嵣嵤嵥嵦嵧嵨嵪嵭嵮嵰嵱嵲嵳嵵嵶嵷嵸嵹嵺嵻嵼嵽嵾嵿嶀嶁嶃嶄嶅嶆嶇嶈嶉嶊嶋嶌嶍嶎嶏嶐嶑嶒嶓嶔嶕嶖嶗嶘嶚嶛嶜嶞嶟嶠�".split(""); +for(j = 0; j != D[141].length; ++j) if(D[141][j].charCodeAt(0) !== 0xFFFD) { e[D[141][j]] = 36096 + j; d[36096 + j] = D[141][j];} +D[142] = "����������������������������������������������������������������嶡嶢嶣嶤嶥嶦嶧嶨嶩嶪嶫嶬嶭嶮嶯嶰嶱嶲嶳嶴嶵嶶嶸嶹嶺嶻嶼嶽嶾嶿巀巁巂巃巄巆巇巈巉巊巋巌巎巏巐巑巒巓巔巕巖巗巘巙巚巜巟巠巣巤巪巬巭�巰巵巶巸巹巺巻巼巿帀帄帇帉帊帋帍帎帒帓帗帞帟帠帡帢帣帤帥帨帩帪師帬帯帰帲帳帴帵帶帹帺帾帿幀幁幃幆幇幈幉幊幋幍幎幏幐幑幒幓幖幗幘幙幚幜幝幟幠幣幤幥幦幧幨幩幪幫幬幭幮幯幰幱幵幷幹幾庁庂広庅庈庉庌庍庎庒庘庛庝庡庢庣庤庨庩庪庫庬庮庯庰庱庲庴庺庻庼庽庿廀廁廂廃廄廅�".split(""); +for(j = 0; j != D[142].length; ++j) if(D[142][j].charCodeAt(0) !== 0xFFFD) { e[D[142][j]] = 36352 + j; d[36352 + j] = D[142][j];} +D[143] = "����������������������������������������������������������������廆廇廈廋廌廍廎廏廐廔廕廗廘廙廚廜廝廞廟廠廡廢廣廤廥廦廧廩廫廬廭廮廯廰廱廲廳廵廸廹廻廼廽弅弆弇弉弌弍弎弐弒弔弖弙弚弜弝弞弡弢弣弤�弨弫弬弮弰弲弳弴張弶強弸弻弽弾弿彁彂彃彄彅彆彇彈彉彊彋彌彍彎彏彑彔彙彚彛彜彞彟彠彣彥彧彨彫彮彯彲彴彵彶彸彺彽彾彿徃徆徍徎徏徑従徔徖徚徛徝從徟徠徢徣徤徥徦徧復徫徬徯徰徱徲徳徴徶徸徹徺徻徾徿忀忁忂忇忈忊忋忎忓忔忕忚忛応忞忟忢忣忥忦忨忩忬忯忰忲忳忴忶忷忹忺忼怇�".split(""); +for(j = 0; j != D[143].length; ++j) if(D[143][j].charCodeAt(0) !== 0xFFFD) { e[D[143][j]] = 36608 + j; d[36608 + j] = D[143][j];} +D[144] = "����������������������������������������������������������������怈怉怋怌怐怑怓怗怘怚怞怟怢怣怤怬怭怮怰怱怲怳怴怶怷怸怹怺怽怾恀恄恅恆恇恈恉恊恌恎恏恑恓恔恖恗恘恛恜恞恟恠恡恥恦恮恱恲恴恵恷恾悀�悁悂悅悆悇悈悊悋悎悏悐悑悓悕悗悘悙悜悞悡悢悤悥悧悩悪悮悰悳悵悶悷悹悺悽悾悿惀惁惂惃惄惇惈惉惌惍惎惏惐惒惓惔惖惗惙惛惞惡惢惣惤惥惪惱惲惵惷惸惻惼惽惾惿愂愃愄愅愇愊愋愌愐愑愒愓愔愖愗愘愙愛愜愝愞愡愢愥愨愩愪愬愭愮愯愰愱愲愳愴愵愶愷愸愹愺愻愼愽愾慀慁慂慃慄慅慆�".split(""); +for(j = 0; j != D[144].length; ++j) if(D[144][j].charCodeAt(0) !== 0xFFFD) { e[D[144][j]] = 36864 + j; d[36864 + j] = D[144][j];} +D[145] = "����������������������������������������������������������������慇慉態慍慏慐慒慓慔慖慗慘慙慚慛慜慞慟慠慡慣慤慥慦慩慪慫慬慭慮慯慱慲慳慴慶慸慹慺慻慼慽慾慿憀憁憂憃憄憅憆憇憈憉憊憌憍憏憐憑憒憓憕�憖憗憘憙憚憛憜憞憟憠憡憢憣憤憥憦憪憫憭憮憯憰憱憲憳憴憵憶憸憹憺憻憼憽憿懀懁懃懄懅懆懇應懌懍懎懏懐懓懕懖懗懘懙懚懛懜懝懞懟懠懡懢懣懤懥懧懨懩懪懫懬懭懮懯懰懱懲懳懴懶懷懸懹懺懻懼懽懾戀戁戂戃戄戅戇戉戓戔戙戜戝戞戠戣戦戧戨戩戫戭戯戰戱戲戵戶戸戹戺戻戼扂扄扅扆扊�".split(""); +for(j = 0; j != D[145].length; ++j) if(D[145][j].charCodeAt(0) !== 0xFFFD) { e[D[145][j]] = 37120 + j; d[37120 + j] = D[145][j];} +D[146] = "����������������������������������������������������������������扏扐払扖扗扙扚扜扝扞扟扠扡扢扤扥扨扱扲扴扵扷扸扺扻扽抁抂抃抅抆抇抈抋抌抍抎抏抐抔抙抜抝択抣抦抧抩抪抭抮抯抰抲抳抴抶抷抸抺抾拀拁�拃拋拏拑拕拝拞拠拡拤拪拫拰拲拵拸拹拺拻挀挃挄挅挆挊挋挌挍挏挐挒挓挔挕挗挘挙挜挦挧挩挬挭挮挰挱挳挴挵挶挷挸挻挼挾挿捀捁捄捇捈捊捑捒捓捔捖捗捘捙捚捛捜捝捠捤捥捦捨捪捫捬捯捰捲捳捴捵捸捹捼捽捾捿掁掃掄掅掆掋掍掑掓掔掕掗掙掚掛掜掝掞掟採掤掦掫掯掱掲掵掶掹掻掽掿揀�".split(""); +for(j = 0; j != D[146].length; ++j) if(D[146][j].charCodeAt(0) !== 0xFFFD) { e[D[146][j]] = 37376 + j; d[37376 + j] = D[146][j];} +D[147] = "����������������������������������������������������������������揁揂揃揅揇揈揊揋揌揑揓揔揕揗揘揙揚換揜揝揟揢揤揥揦揧揨揫揬揮揯揰揱揳揵揷揹揺揻揼揾搃搄搆搇搈搉搊損搎搑搒搕搖搗搘搙搚搝搟搢搣搤�搥搧搨搩搫搮搯搰搱搲搳搵搶搷搸搹搻搼搾摀摂摃摉摋摌摍摎摏摐摑摓摕摖摗摙摚摛摜摝摟摠摡摢摣摤摥摦摨摪摫摬摮摯摰摱摲摳摴摵摶摷摻摼摽摾摿撀撁撃撆撈撉撊撋撌撍撎撏撐撓撔撗撘撚撛撜撝撟撠撡撢撣撥撦撧撨撪撫撯撱撲撳撴撶撹撻撽撾撿擁擃擄擆擇擈擉擊擋擌擏擑擓擔擕擖擙據�".split(""); +for(j = 0; j != D[147].length; ++j) if(D[147][j].charCodeAt(0) !== 0xFFFD) { e[D[147][j]] = 37632 + j; d[37632 + j] = D[147][j];} +D[148] = "����������������������������������������������������������������擛擜擝擟擠擡擣擥擧擨擩擪擫擬擭擮擯擰擱擲擳擴擵擶擷擸擹擺擻擼擽擾擿攁攂攃攄攅攆攇攈攊攋攌攍攎攏攐攑攓攔攕攖攗攙攚攛攜攝攞攟攠攡�攢攣攤攦攧攨攩攪攬攭攰攱攲攳攷攺攼攽敀敁敂敃敄敆敇敊敋敍敎敐敒敓敔敗敘敚敜敟敠敡敤敥敧敨敩敪敭敮敯敱敳敵敶數敹敺敻敼敽敾敿斀斁斂斃斄斅斆斈斉斊斍斎斏斒斔斕斖斘斚斝斞斠斢斣斦斨斪斬斮斱斲斳斴斵斶斷斸斺斻斾斿旀旂旇旈旉旊旍旐旑旓旔旕旘旙旚旛旜旝旞旟旡旣旤旪旫�".split(""); +for(j = 0; j != D[148].length; ++j) if(D[148][j].charCodeAt(0) !== 0xFFFD) { e[D[148][j]] = 37888 + j; d[37888 + j] = D[148][j];} +D[149] = "����������������������������������������������������������������旲旳旴旵旸旹旻旼旽旾旿昁昄昅昇昈昉昋昍昐昑昒昖昗昘昚昛昜昞昡昢昣昤昦昩昪昫昬昮昰昲昳昷昸昹昺昻昽昿晀時晄晅晆晇晈晉晊晍晎晐晑晘�晙晛晜晝晞晠晢晣晥晧晩晪晫晬晭晱晲晳晵晸晹晻晼晽晿暀暁暃暅暆暈暉暊暋暍暎暏暐暒暓暔暕暘暙暚暛暜暞暟暠暡暢暣暤暥暦暩暪暫暬暭暯暰暱暲暳暵暶暷暸暺暻暼暽暿曀曁曂曃曄曅曆曇曈曉曊曋曌曍曎曏曐曑曒曓曔曕曖曗曘曚曞曟曠曡曢曣曤曥曧曨曪曫曬曭曮曯曱曵曶書曺曻曽朁朂會�".split(""); +for(j = 0; j != D[149].length; ++j) if(D[149][j].charCodeAt(0) !== 0xFFFD) { e[D[149][j]] = 38144 + j; d[38144 + j] = D[149][j];} +D[150] = "����������������������������������������������������������������朄朅朆朇朌朎朏朑朒朓朖朘朙朚朜朞朠朡朢朣朤朥朧朩朮朰朲朳朶朷朸朹朻朼朾朿杁杄杅杇杊杋杍杒杔杕杗杘杙杚杛杝杢杣杤杦杧杫杬杮東杴杶�杸杹杺杻杽枀枂枃枅枆枈枊枌枍枎枏枑枒枓枔枖枙枛枟枠枡枤枦枩枬枮枱枲枴枹枺枻枼枽枾枿柀柂柅柆柇柈柉柊柋柌柍柎柕柖柗柛柟柡柣柤柦柧柨柪柫柭柮柲柵柶柷柸柹柺査柼柾栁栂栃栄栆栍栐栒栔栕栘栙栚栛栜栞栟栠栢栣栤栥栦栧栨栫栬栭栮栯栰栱栴栵栶栺栻栿桇桋桍桏桒桖桗桘桙桚桛�".split(""); +for(j = 0; j != D[150].length; ++j) if(D[150][j].charCodeAt(0) !== 0xFFFD) { e[D[150][j]] = 38400 + j; d[38400 + j] = D[150][j];} +D[151] = "����������������������������������������������������������������桜桝桞桟桪桬桭桮桯桰桱桲桳桵桸桹桺桻桼桽桾桿梀梂梄梇梈梉梊梋梌梍梎梐梑梒梔梕梖梘梙梚梛梜條梞梟梠梡梣梤梥梩梪梫梬梮梱梲梴梶梷梸�梹梺梻梼梽梾梿棁棃棄棅棆棇棈棊棌棎棏棐棑棓棔棖棗棙棛棜棝棞棟棡棢棤棥棦棧棨棩棪棫棬棭棯棲棳棴棶棷棸棻棽棾棿椀椂椃椄椆椇椈椉椊椌椏椑椓椔椕椖椗椘椙椚椛検椝椞椡椢椣椥椦椧椨椩椪椫椬椮椯椱椲椳椵椶椷椸椺椻椼椾楀楁楃楄楅楆楇楈楉楊楋楌楍楎楏楐楑楒楓楕楖楘楙楛楜楟�".split(""); +for(j = 0; j != D[151].length; ++j) if(D[151][j].charCodeAt(0) !== 0xFFFD) { e[D[151][j]] = 38656 + j; d[38656 + j] = D[151][j];} +D[152] = "����������������������������������������������������������������楡楢楤楥楧楨楩楪楬業楯楰楲楳楴極楶楺楻楽楾楿榁榃榅榊榋榌榎榏榐榑榒榓榖榗榙榚榝榞榟榠榡榢榣榤榥榦榩榪榬榮榯榰榲榳榵榶榸榹榺榼榽�榾榿槀槂槃槄槅槆槇槈槉構槍槏槑槒槓槕槖槗様槙槚槜槝槞槡槢槣槤槥槦槧槨槩槪槫槬槮槯槰槱槳槴槵槶槷槸槹槺槻槼槾樀樁樂樃樄樅樆樇樈樉樋樌樍樎樏樐樑樒樓樔樕樖標樚樛樜樝樞樠樢樣樤樥樦樧権樫樬樭樮樰樲樳樴樶樷樸樹樺樻樼樿橀橁橂橃橅橆橈橉橊橋橌橍橎橏橑橒橓橔橕橖橗橚�".split(""); +for(j = 0; j != D[152].length; ++j) if(D[152][j].charCodeAt(0) !== 0xFFFD) { e[D[152][j]] = 38912 + j; d[38912 + j] = D[152][j];} +D[153] = "����������������������������������������������������������������橜橝橞機橠橢橣橤橦橧橨橩橪橫橬橭橮橯橰橲橳橴橵橶橷橸橺橻橽橾橿檁檂檃檅檆檇檈檉檊檋檌檍檏檒檓檔檕檖檘檙檚檛檜檝檞檟檡檢檣檤檥檦�檧檨檪檭檮檯檰檱檲檳檴檵檶檷檸檹檺檻檼檽檾檿櫀櫁櫂櫃櫄櫅櫆櫇櫈櫉櫊櫋櫌櫍櫎櫏櫐櫑櫒櫓櫔櫕櫖櫗櫘櫙櫚櫛櫜櫝櫞櫟櫠櫡櫢櫣櫤櫥櫦櫧櫨櫩櫪櫫櫬櫭櫮櫯櫰櫱櫲櫳櫴櫵櫶櫷櫸櫹櫺櫻櫼櫽櫾櫿欀欁欂欃欄欅欆欇欈欉權欋欌欍欎欏欐欑欒欓欔欕欖欗欘欙欚欛欜欝欞欟欥欦欨欩欪欫欬欭欮�".split(""); +for(j = 0; j != D[153].length; ++j) if(D[153][j].charCodeAt(0) !== 0xFFFD) { e[D[153][j]] = 39168 + j; d[39168 + j] = D[153][j];} +D[154] = "����������������������������������������������������������������欯欰欱欳欴欵欶欸欻欼欽欿歀歁歂歄歅歈歊歋歍歎歏歐歑歒歓歔歕歖歗歘歚歛歜歝歞歟歠歡歨歩歫歬歭歮歯歰歱歲歳歴歵歶歷歸歺歽歾歿殀殅殈�殌殎殏殐殑殔殕殗殘殙殜殝殞殟殠殢殣殤殥殦殧殨殩殫殬殭殮殯殰殱殲殶殸殹殺殻殼殽殾毀毃毄毆毇毈毉毊毌毎毐毑毘毚毜毝毞毟毠毢毣毤毥毦毧毨毩毬毭毮毰毱毲毴毶毷毸毺毻毼毾毿氀氁氂氃氄氈氉氊氋氌氎氒気氜氝氞氠氣氥氫氬氭氱氳氶氷氹氺氻氼氾氿汃汄汅汈汋汌汍汎汏汑汒汓汖汘�".split(""); +for(j = 0; j != D[154].length; ++j) if(D[154][j].charCodeAt(0) !== 0xFFFD) { e[D[154][j]] = 39424 + j; d[39424 + j] = D[154][j];} +D[155] = "����������������������������������������������������������������汙汚汢汣汥汦汧汫汬汭汮汯汱汳汵汷汸決汻汼汿沀沄沇沊沋沍沎沑沒沕沖沗沘沚沜沝沞沠沢沨沬沯沰沴沵沶沷沺泀況泂泃泆泇泈泋泍泎泏泑泒泘�泙泚泜泝泟泤泦泧泩泬泭泲泴泹泿洀洂洃洅洆洈洉洊洍洏洐洑洓洔洕洖洘洜洝洟洠洡洢洣洤洦洨洩洬洭洯洰洴洶洷洸洺洿浀浂浄浉浌浐浕浖浗浘浛浝浟浡浢浤浥浧浨浫浬浭浰浱浲浳浵浶浹浺浻浽浾浿涀涁涃涄涆涇涊涋涍涏涐涒涖涗涘涙涚涜涢涥涬涭涰涱涳涴涶涷涹涺涻涼涽涾淁淂淃淈淉淊�".split(""); +for(j = 0; j != D[155].length; ++j) if(D[155][j].charCodeAt(0) !== 0xFFFD) { e[D[155][j]] = 39680 + j; d[39680 + j] = D[155][j];} +D[156] = "����������������������������������������������������������������淍淎淏淐淒淓淔淕淗淚淛淜淟淢淣淥淧淨淩淪淭淯淰淲淴淵淶淸淺淽淾淿渀渁渂渃渄渆渇済渉渋渏渒渓渕渘渙減渜渞渟渢渦渧渨渪測渮渰渱渳渵�渶渷渹渻渼渽渾渿湀湁湂湅湆湇湈湉湊湋湌湏湐湑湒湕湗湙湚湜湝湞湠湡湢湣湤湥湦湧湨湩湪湬湭湯湰湱湲湳湴湵湶湷湸湹湺湻湼湽満溁溂溄溇溈溊溋溌溍溎溑溒溓溔溕準溗溙溚溛溝溞溠溡溣溤溦溨溩溫溬溭溮溰溳溵溸溹溼溾溿滀滃滄滅滆滈滉滊滌滍滎滐滒滖滘滙滛滜滝滣滧滪滫滬滭滮滯�".split(""); +for(j = 0; j != D[156].length; ++j) if(D[156][j].charCodeAt(0) !== 0xFFFD) { e[D[156][j]] = 39936 + j; d[39936 + j] = D[156][j];} +D[157] = "����������������������������������������������������������������滰滱滲滳滵滶滷滸滺滻滼滽滾滿漀漁漃漄漅漇漈漊漋漌漍漎漐漑漒漖漗漘漙漚漛漜漝漞漟漡漢漣漥漦漧漨漬漮漰漲漴漵漷漸漹漺漻漼漽漿潀潁潂�潃潄潅潈潉潊潌潎潏潐潑潒潓潔潕潖潗潙潚潛潝潟潠潡潣潤潥潧潨潩潪潫潬潯潰潱潳潵潶潷潹潻潽潾潿澀澁澂澃澅澆澇澊澋澏澐澑澒澓澔澕澖澗澘澙澚澛澝澞澟澠澢澣澤澥澦澨澩澪澫澬澭澮澯澰澱澲澴澵澷澸澺澻澼澽澾澿濁濃濄濅濆濇濈濊濋濌濍濎濏濐濓濔濕濖濗濘濙濚濛濜濝濟濢濣濤濥�".split(""); +for(j = 0; j != D[157].length; ++j) if(D[157][j].charCodeAt(0) !== 0xFFFD) { e[D[157][j]] = 40192 + j; d[40192 + j] = D[157][j];} +D[158] = "����������������������������������������������������������������濦濧濨濩濪濫濬濭濰濱濲濳濴濵濶濷濸濹濺濻濼濽濾濿瀀瀁瀂瀃瀄瀅瀆瀇瀈瀉瀊瀋瀌瀍瀎瀏瀐瀒瀓瀔瀕瀖瀗瀘瀙瀜瀝瀞瀟瀠瀡瀢瀤瀥瀦瀧瀨瀩瀪�瀫瀬瀭瀮瀯瀰瀱瀲瀳瀴瀶瀷瀸瀺瀻瀼瀽瀾瀿灀灁灂灃灄灅灆灇灈灉灊灋灍灎灐灑灒灓灔灕灖灗灘灙灚灛灜灝灟灠灡灢灣灤灥灦灧灨灩灪灮灱灲灳灴灷灹灺灻災炁炂炃炄炆炇炈炋炌炍炏炐炑炓炗炘炚炛炞炟炠炡炢炣炤炥炦炧炨炩炪炰炲炴炵炶為炾炿烄烅烆烇烉烋烌烍烎烏烐烑烒烓烔烕烖烗烚�".split(""); +for(j = 0; j != D[158].length; ++j) if(D[158][j].charCodeAt(0) !== 0xFFFD) { e[D[158][j]] = 40448 + j; d[40448 + j] = D[158][j];} +D[159] = "����������������������������������������������������������������烜烝烞烠烡烢烣烥烪烮烰烱烲烳烴烵烶烸烺烻烼烾烿焀焁焂焃焄焅焆焇焈焋焌焍焎焏焑焒焔焗焛焜焝焞焟焠無焢焣焤焥焧焨焩焪焫焬焭焮焲焳焴�焵焷焸焹焺焻焼焽焾焿煀煁煂煃煄煆煇煈煉煋煍煏煐煑煒煓煔煕煖煗煘煙煚煛煝煟煠煡煢煣煥煩煪煫煬煭煯煰煱煴煵煶煷煹煻煼煾煿熀熁熂熃熅熆熇熈熉熋熌熍熎熐熑熒熓熕熖熗熚熛熜熝熞熡熢熣熤熥熦熧熩熪熫熭熮熯熰熱熲熴熶熷熸熺熻熼熽熾熿燀燁燂燄燅燆燇燈燉燊燋燌燍燏燐燑燒燓�".split(""); +for(j = 0; j != D[159].length; ++j) if(D[159][j].charCodeAt(0) !== 0xFFFD) { e[D[159][j]] = 40704 + j; d[40704 + j] = D[159][j];} +D[160] = "����������������������������������������������������������������燖燗燘燙燚燛燜燝燞營燡燢燣燤燦燨燩燪燫燬燭燯燰燱燲燳燴燵燶燷燸燺燻燼燽燾燿爀爁爂爃爄爅爇爈爉爊爋爌爍爎爏爐爑爒爓爔爕爖爗爘爙爚�爛爜爞爟爠爡爢爣爤爥爦爧爩爫爭爮爯爲爳爴爺爼爾牀牁牂牃牄牅牆牉牊牋牎牏牐牑牓牔牕牗牘牚牜牞牠牣牤牥牨牪牫牬牭牰牱牳牴牶牷牸牻牼牽犂犃犅犆犇犈犉犌犎犐犑犓犔犕犖犗犘犙犚犛犜犝犞犠犡犢犣犤犥犦犧犨犩犪犫犮犱犲犳犵犺犻犼犽犾犿狀狅狆狇狉狊狋狌狏狑狓狔狕狖狘狚狛�".split(""); +for(j = 0; j != D[160].length; ++j) if(D[160][j].charCodeAt(0) !== 0xFFFD) { e[D[160][j]] = 40960 + j; d[40960 + j] = D[160][j];} +D[161] = "����������������������������������������������������������������� 、。·ˉˇ¨〃々—~‖…‘’“”〔〕〈〉《》「」『』〖〗【】±×÷∶∧∨∑∏∪∩∈∷√⊥∥∠⌒⊙∫∮≡≌≈∽∝≠≮≯≤≥∞∵∴♂♀°′″℃$¤¢£‰§№☆★○●◎◇◆□■△▲※→←↑↓〓�".split(""); +for(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];} +D[162] = "�����������������������������������������������������������������ⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹ⒈⒉⒊⒋⒌⒍⒎⒏⒐⒑⒒⒓⒔⒕⒖⒗⒘⒙⒚⒛⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽⑾⑿⒀⒁⒂⒃⒄⒅⒆⒇①②③④⑤⑥⑦⑧⑨⑩㈠㈡㈢㈣㈤㈥㈦㈧㈨㈩ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫ�".split(""); +for(j = 0; j != D[162].length; ++j) if(D[162][j].charCodeAt(0) !== 0xFFFD) { e[D[162][j]] = 41472 + j; d[41472 + j] = D[162][j];} +D[163] = "�����������������������������������������������������������������!"#¥%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|} ̄�".split(""); +for(j = 0; j != D[163].length; ++j) if(D[163][j].charCodeAt(0) !== 0xFFFD) { e[D[163][j]] = 41728 + j; d[41728 + j] = D[163][j];} +D[164] = "�����������������������������������������������������������������ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをん�".split(""); +for(j = 0; j != D[164].length; ++j) if(D[164][j].charCodeAt(0) !== 0xFFFD) { e[D[164][j]] = 41984 + j; d[41984 + j] = D[164][j];} +D[165] = "�����������������������������������������������������������������ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶ�".split(""); +for(j = 0; j != D[165].length; ++j) if(D[165][j].charCodeAt(0) !== 0xFFFD) { e[D[165][j]] = 42240 + j; d[42240 + j] = D[165][j];} +D[166] = "�����������������������������������������������������������������ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩαβγδεζηθικλμνξοπρστυφχψω︵︶︹︺︿﹀︽︾﹁﹂﹃﹄︻︼︷︸︱︳︴�".split(""); +for(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];} +D[167] = "�����������������������������������������������������������������АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдеёжзийклмнопрстуфхцчшщъыьэюя�".split(""); +for(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];} +D[168] = "����������������������������������������������������������������ˊˋ˙–―‥‵℅℉↖↗↘↙∕∟∣≒≦≧⊿═║╒╓╔╕╖╗╘╙╚╛╜╝╞╟╠╡╢╣╤╥╦╧╨╩╪╫╬╭╮╯╰╱╲╳▁▂▃▄▅▆▇�█▉▊▋▌▍▎▏▓▔▕▼▽◢◣◤◥☉⊕〒〝〞āáǎàēéěèīíǐìōóǒòūúǔùǖǘǚǜüêɑńňɡㄅㄆㄇㄈㄉㄊㄋㄌㄍㄎㄏㄐㄑㄒㄓㄔㄕㄖㄗㄘㄙㄚㄛㄜㄝㄞㄟㄠㄡㄢㄣㄤㄥㄦㄧㄨㄩ�".split(""); +for(j = 0; j != D[168].length; ++j) if(D[168][j].charCodeAt(0) !== 0xFFFD) { e[D[168][j]] = 43008 + j; d[43008 + j] = D[168][j];} +D[169] = "����������������������������������������������������������������〡〢〣〤〥〦〧〨〩㊣㎎㎏㎜㎝㎞㎡㏄㏎㏑㏒㏕︰¬¦℡㈱‐ー゛゜ヽヾ〆ゝゞ﹉﹊﹋﹌﹍﹎﹏﹐﹑﹒﹔﹕﹖﹗﹙﹚﹛﹜﹝﹞﹟﹠﹡�﹢﹣﹤﹥﹦﹨﹩﹪﹫〇─━│┃┄┅┆┇┈┉┊┋┌┍┎┏┐┑┒┓└┕┖┗┘┙┚┛├┝┞┟┠┡┢┣┤┥┦┧┨┩┪┫┬┭┮┯┰┱┲┳┴┵┶┷┸┹┺┻┼┽┾┿╀╁╂╃╄╅╆╇╈╉╊╋�".split(""); +for(j = 0; j != D[169].length; ++j) if(D[169][j].charCodeAt(0) !== 0xFFFD) { e[D[169][j]] = 43264 + j; d[43264 + j] = D[169][j];} +D[170] = "����������������������������������������������������������������狜狝狟狢狣狤狥狦狧狪狫狵狶狹狽狾狿猀猂猄猅猆猇猈猉猋猌猍猏猐猑猒猔猘猙猚猟猠猣猤猦猧猨猭猯猰猲猳猵猶猺猻猼猽獀獁獂獃獄獅獆獇獈�獉獊獋獌獎獏獑獓獔獕獖獘獙獚獛獜獝獞獟獡獢獣獤獥獦獧獨獩獪獫獮獰獱�".split(""); +for(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];} +D[171] = "����������������������������������������������������������������獲獳獴獵獶獷獸獹獺獻獼獽獿玀玁玂玃玅玆玈玊玌玍玏玐玒玓玔玕玗玘玙玚玜玝玞玠玡玣玤玥玦玧玨玪玬玭玱玴玵玶玸玹玼玽玾玿珁珃珄珅珆珇�珋珌珎珒珓珔珕珖珗珘珚珛珜珝珟珡珢珣珤珦珨珪珫珬珮珯珰珱珳珴珵珶珷�".split(""); +for(j = 0; j != D[171].length; ++j) if(D[171][j].charCodeAt(0) !== 0xFFFD) { e[D[171][j]] = 43776 + j; d[43776 + j] = D[171][j];} +D[172] = "����������������������������������������������������������������珸珹珺珻珼珽現珿琀琁琂琄琇琈琋琌琍琎琑琒琓琔琕琖琗琘琙琜琝琞琟琠琡琣琤琧琩琫琭琯琱琲琷琸琹琺琻琽琾琿瑀瑂瑃瑄瑅瑆瑇瑈瑉瑊瑋瑌瑍�瑎瑏瑐瑑瑒瑓瑔瑖瑘瑝瑠瑡瑢瑣瑤瑥瑦瑧瑨瑩瑪瑫瑬瑮瑯瑱瑲瑳瑴瑵瑸瑹瑺�".split(""); +for(j = 0; j != D[172].length; ++j) if(D[172][j].charCodeAt(0) !== 0xFFFD) { e[D[172][j]] = 44032 + j; d[44032 + j] = D[172][j];} +D[173] = "����������������������������������������������������������������瑻瑼瑽瑿璂璄璅璆璈璉璊璌璍璏璑璒璓璔璕璖璗璘璙璚璛璝璟璠璡璢璣璤璥璦璪璫璬璭璮璯環璱璲璳璴璵璶璷璸璹璻璼璽璾璿瓀瓁瓂瓃瓄瓅瓆瓇�瓈瓉瓊瓋瓌瓍瓎瓏瓐瓑瓓瓔瓕瓖瓗瓘瓙瓚瓛瓝瓟瓡瓥瓧瓨瓩瓪瓫瓬瓭瓰瓱瓲�".split(""); +for(j = 0; j != D[173].length; ++j) if(D[173][j].charCodeAt(0) !== 0xFFFD) { e[D[173][j]] = 44288 + j; d[44288 + j] = D[173][j];} +D[174] = "����������������������������������������������������������������瓳瓵瓸瓹瓺瓻瓼瓽瓾甀甁甂甃甅甆甇甈甉甊甋甌甎甐甒甔甕甖甗甛甝甞甠甡產産甤甦甧甪甮甴甶甹甼甽甿畁畂畃畄畆畇畉畊畍畐畑畒畓畕畖畗畘�畝畞畟畠畡畢畣畤畧畨畩畫畬畭畮畯異畱畳畵當畷畺畻畼畽畾疀疁疂疄疅疇�".split(""); +for(j = 0; j != D[174].length; ++j) if(D[174][j].charCodeAt(0) !== 0xFFFD) { e[D[174][j]] = 44544 + j; d[44544 + j] = D[174][j];} +D[175] = "����������������������������������������������������������������疈疉疊疌疍疎疐疓疕疘疛疜疞疢疦疧疨疩疪疭疶疷疺疻疿痀痁痆痋痌痎痏痐痑痓痗痙痚痜痝痟痠痡痥痩痬痭痮痯痲痳痵痶痷痸痺痻痽痾瘂瘄瘆瘇�瘈瘉瘋瘍瘎瘏瘑瘒瘓瘔瘖瘚瘜瘝瘞瘡瘣瘧瘨瘬瘮瘯瘱瘲瘶瘷瘹瘺瘻瘽癁療癄�".split(""); +for(j = 0; j != D[175].length; ++j) if(D[175][j].charCodeAt(0) !== 0xFFFD) { e[D[175][j]] = 44800 + j; d[44800 + j] = D[175][j];} +D[176] = "����������������������������������������������������������������癅癆癇癈癉癊癋癎癏癐癑癒癓癕癗癘癙癚癛癝癟癠癡癢癤癥癦癧癨癩癪癬癭癮癰癱癲癳癴癵癶癷癹発發癿皀皁皃皅皉皊皌皍皏皐皒皔皕皗皘皚皛�皜皝皞皟皠皡皢皣皥皦皧皨皩皪皫皬皭皯皰皳皵皶皷皸皹皺皻皼皽皾盀盁盃啊阿埃挨哎唉哀皑癌蔼矮艾碍爱隘鞍氨安俺按暗岸胺案肮昂盎凹敖熬翱袄傲奥懊澳芭捌扒叭吧笆八疤巴拔跋靶把耙坝霸罢爸白柏百摆佰败拜稗斑班搬扳般颁板版扮拌伴瓣半办绊邦帮梆榜膀绑棒磅蚌镑傍谤苞胞包褒剥�".split(""); +for(j = 0; j != D[176].length; ++j) if(D[176][j].charCodeAt(0) !== 0xFFFD) { e[D[176][j]] = 45056 + j; d[45056 + j] = D[176][j];} +D[177] = "����������������������������������������������������������������盄盇盉盋盌盓盕盙盚盜盝盞盠盡盢監盤盦盧盨盩盪盫盬盭盰盳盵盶盷盺盻盽盿眀眂眃眅眆眊県眎眏眐眑眒眓眔眕眖眗眘眛眜眝眞眡眣眤眥眧眪眫�眬眮眰眱眲眳眴眹眻眽眾眿睂睄睅睆睈睉睊睋睌睍睎睏睒睓睔睕睖睗睘睙睜薄雹保堡饱宝抱报暴豹鲍爆杯碑悲卑北辈背贝钡倍狈备惫焙被奔苯本笨崩绷甭泵蹦迸逼鼻比鄙笔彼碧蓖蔽毕毙毖币庇痹闭敝弊必辟壁臂避陛鞭边编贬扁便变卞辨辩辫遍标彪膘表鳖憋别瘪彬斌濒滨宾摈兵冰柄丙秉饼炳�".split(""); +for(j = 0; j != D[177].length; ++j) if(D[177][j].charCodeAt(0) !== 0xFFFD) { e[D[177][j]] = 45312 + j; d[45312 + j] = D[177][j];} +D[178] = "����������������������������������������������������������������睝睞睟睠睤睧睩睪睭睮睯睰睱睲睳睴睵睶睷睸睺睻睼瞁瞂瞃瞆瞇瞈瞉瞊瞋瞏瞐瞓瞔瞕瞖瞗瞘瞙瞚瞛瞜瞝瞞瞡瞣瞤瞦瞨瞫瞭瞮瞯瞱瞲瞴瞶瞷瞸瞹瞺�瞼瞾矀矁矂矃矄矅矆矇矈矉矊矋矌矎矏矐矑矒矓矔矕矖矘矙矚矝矞矟矠矡矤病并玻菠播拨钵波博勃搏铂箔伯帛舶脖膊渤泊驳捕卜哺补埠不布步簿部怖擦猜裁材才财睬踩采彩菜蔡餐参蚕残惭惨灿苍舱仓沧藏操糙槽曹草厕策侧册测层蹭插叉茬茶查碴搽察岔差诧拆柴豺搀掺蝉馋谗缠铲产阐颤昌猖�".split(""); +for(j = 0; j != D[178].length; ++j) if(D[178][j].charCodeAt(0) !== 0xFFFD) { e[D[178][j]] = 45568 + j; d[45568 + j] = D[178][j];} +D[179] = "����������������������������������������������������������������矦矨矪矯矰矱矲矴矵矷矹矺矻矼砃砄砅砆砇砈砊砋砎砏砐砓砕砙砛砞砠砡砢砤砨砪砫砮砯砱砲砳砵砶砽砿硁硂硃硄硆硈硉硊硋硍硏硑硓硔硘硙硚�硛硜硞硟硠硡硢硣硤硥硦硧硨硩硯硰硱硲硳硴硵硶硸硹硺硻硽硾硿碀碁碂碃场尝常长偿肠厂敞畅唱倡超抄钞朝嘲潮巢吵炒车扯撤掣彻澈郴臣辰尘晨忱沉陈趁衬撑称城橙成呈乘程惩澄诚承逞骋秤吃痴持匙池迟弛驰耻齿侈尺赤翅斥炽充冲虫崇宠抽酬畴踌稠愁筹仇绸瞅丑臭初出橱厨躇锄雏滁除楚�".split(""); +for(j = 0; j != D[179].length; ++j) if(D[179][j].charCodeAt(0) !== 0xFFFD) { e[D[179][j]] = 45824 + j; d[45824 + j] = D[179][j];} +D[180] = "����������������������������������������������������������������碄碅碆碈碊碋碏碐碒碔碕碖碙碝碞碠碢碤碦碨碩碪碫碬碭碮碯碵碶碷碸確碻碼碽碿磀磂磃磄磆磇磈磌磍磎磏磑磒磓磖磗磘磚磛磜磝磞磟磠磡磢磣�磤磥磦磧磩磪磫磭磮磯磰磱磳磵磶磸磹磻磼磽磾磿礀礂礃礄礆礇礈礉礊礋礌础储矗搐触处揣川穿椽传船喘串疮窗幢床闯创吹炊捶锤垂春椿醇唇淳纯蠢戳绰疵茨磁雌辞慈瓷词此刺赐次聪葱囱匆从丛凑粗醋簇促蹿篡窜摧崔催脆瘁粹淬翠村存寸磋撮搓措挫错搭达答瘩打大呆歹傣戴带殆代贷袋待逮�".split(""); +for(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];} +D[181] = "����������������������������������������������������������������礍礎礏礐礑礒礔礕礖礗礘礙礚礛礜礝礟礠礡礢礣礥礦礧礨礩礪礫礬礭礮礯礰礱礲礳礵礶礷礸礹礽礿祂祃祄祅祇祊祋祌祍祎祏祐祑祒祔祕祘祙祡祣�祤祦祩祪祫祬祮祰祱祲祳祴祵祶祹祻祼祽祾祿禂禃禆禇禈禉禋禌禍禎禐禑禒怠耽担丹单郸掸胆旦氮但惮淡诞弹蛋当挡党荡档刀捣蹈倒岛祷导到稻悼道盗德得的蹬灯登等瞪凳邓堤低滴迪敌笛狄涤翟嫡抵底地蒂第帝弟递缔颠掂滇碘点典靛垫电佃甸店惦奠淀殿碉叼雕凋刁掉吊钓调跌爹碟蝶迭谍叠�".split(""); +for(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];} +D[182] = "����������������������������������������������������������������禓禔禕禖禗禘禙禛禜禝禞禟禠禡禢禣禤禥禦禨禩禪禫禬禭禮禯禰禱禲禴禵禶禷禸禼禿秂秄秅秇秈秊秌秎秏秐秓秔秖秗秙秚秛秜秝秞秠秡秢秥秨秪�秬秮秱秲秳秴秵秶秷秹秺秼秾秿稁稄稅稇稈稉稊稌稏稐稑稒稓稕稖稘稙稛稜丁盯叮钉顶鼎锭定订丢东冬董懂动栋侗恫冻洞兜抖斗陡豆逗痘都督毒犊独读堵睹赌杜镀肚度渡妒端短锻段断缎堆兑队对墩吨蹲敦顿囤钝盾遁掇哆多夺垛躲朵跺舵剁惰堕蛾峨鹅俄额讹娥恶厄扼遏鄂饿恩而儿耳尔饵洱二�".split(""); +for(j = 0; j != D[182].length; ++j) if(D[182][j].charCodeAt(0) !== 0xFFFD) { e[D[182][j]] = 46592 + j; d[46592 + j] = D[182][j];} +D[183] = "����������������������������������������������������������������稝稟稡稢稤稥稦稧稨稩稪稫稬稭種稯稰稱稲稴稵稶稸稺稾穀穁穂穃穄穅穇穈穉穊穋穌積穎穏穐穒穓穔穕穖穘穙穚穛穜穝穞穟穠穡穢穣穤穥穦穧穨�穩穪穫穬穭穮穯穱穲穳穵穻穼穽穾窂窅窇窉窊窋窌窎窏窐窓窔窙窚窛窞窡窢贰发罚筏伐乏阀法珐藩帆番翻樊矾钒繁凡烦反返范贩犯饭泛坊芳方肪房防妨仿访纺放菲非啡飞肥匪诽吠肺废沸费芬酚吩氛分纷坟焚汾粉奋份忿愤粪丰封枫蜂峰锋风疯烽逢冯缝讽奉凤佛否夫敷肤孵扶拂辐幅氟符伏俘服�".split(""); +for(j = 0; j != D[183].length; ++j) if(D[183][j].charCodeAt(0) !== 0xFFFD) { e[D[183][j]] = 46848 + j; d[46848 + j] = D[183][j];} +D[184] = "����������������������������������������������������������������窣窤窧窩窪窫窮窯窰窱窲窴窵窶窷窸窹窺窻窼窽窾竀竁竂竃竄竅竆竇竈竉竊竌竍竎竏竐竑竒竓竔竕竗竘竚竛竜竝竡竢竤竧竨竩竪竫竬竮竰竱竲竳�竴竵競竷竸竻竼竾笀笁笂笅笇笉笌笍笎笐笒笓笖笗笘笚笜笝笟笡笢笣笧笩笭浮涪福袱弗甫抚辅俯釜斧脯腑府腐赴副覆赋复傅付阜父腹负富讣附妇缚咐噶嘎该改概钙盖溉干甘杆柑竿肝赶感秆敢赣冈刚钢缸肛纲岗港杠篙皋高膏羔糕搞镐稿告哥歌搁戈鸽胳疙割革葛格蛤阁隔铬个各给根跟耕更庚羹�".split(""); +for(j = 0; j != D[184].length; ++j) if(D[184][j].charCodeAt(0) !== 0xFFFD) { e[D[184][j]] = 47104 + j; d[47104 + j] = D[184][j];} +D[185] = "����������������������������������������������������������������笯笰笲笴笵笶笷笹笻笽笿筀筁筂筃筄筆筈筊筍筎筓筕筗筙筜筞筟筡筣筤筥筦筧筨筩筪筫筬筭筯筰筳筴筶筸筺筼筽筿箁箂箃箄箆箇箈箉箊箋箌箎箏�箑箒箓箖箘箙箚箛箞箟箠箣箤箥箮箯箰箲箳箵箶箷箹箺箻箼箽箾箿節篂篃範埂耿梗工攻功恭龚供躬公宫弓巩汞拱贡共钩勾沟苟狗垢构购够辜菇咕箍估沽孤姑鼓古蛊骨谷股故顾固雇刮瓜剐寡挂褂乖拐怪棺关官冠观管馆罐惯灌贯光广逛瑰规圭硅归龟闺轨鬼诡癸桂柜跪贵刽辊滚棍锅郭国果裹过哈�".split(""); +for(j = 0; j != D[185].length; ++j) if(D[185][j].charCodeAt(0) !== 0xFFFD) { e[D[185][j]] = 47360 + j; d[47360 + j] = D[185][j];} +D[186] = "����������������������������������������������������������������篅篈築篊篋篍篎篏篐篒篔篕篖篗篘篛篜篞篟篠篢篣篤篧篨篩篫篬篭篯篰篲篳篴篵篶篸篹篺篻篽篿簀簁簂簃簄簅簆簈簉簊簍簎簐簑簒簓簔簕簗簘簙�簚簛簜簝簞簠簡簢簣簤簥簨簩簫簬簭簮簯簰簱簲簳簴簵簶簷簹簺簻簼簽簾籂骸孩海氦亥害骇酣憨邯韩含涵寒函喊罕翰撼捍旱憾悍焊汗汉夯杭航壕嚎豪毫郝好耗号浩呵喝荷菏核禾和何合盒貉阂河涸赫褐鹤贺嘿黑痕很狠恨哼亨横衡恒轰哄烘虹鸿洪宏弘红喉侯猴吼厚候后呼乎忽瑚壶葫胡蝴狐糊湖�".split(""); +for(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];} +D[187] = "����������������������������������������������������������������籃籄籅籆籇籈籉籊籋籌籎籏籐籑籒籓籔籕籖籗籘籙籚籛籜籝籞籟籠籡籢籣籤籥籦籧籨籩籪籫籬籭籮籯籰籱籲籵籶籷籸籹籺籾籿粀粁粂粃粄粅粆粇�粈粊粋粌粍粎粏粐粓粔粖粙粚粛粠粡粣粦粧粨粩粫粬粭粯粰粴粵粶粷粸粺粻弧虎唬护互沪户花哗华猾滑画划化话槐徊怀淮坏欢环桓还缓换患唤痪豢焕涣宦幻荒慌黄磺蝗簧皇凰惶煌晃幌恍谎灰挥辉徽恢蛔回毁悔慧卉惠晦贿秽会烩汇讳诲绘荤昏婚魂浑混豁活伙火获或惑霍货祸击圾基机畸稽积箕�".split(""); +for(j = 0; j != D[187].length; ++j) if(D[187][j].charCodeAt(0) !== 0xFFFD) { e[D[187][j]] = 47872 + j; d[47872 + j] = D[187][j];} +D[188] = "����������������������������������������������������������������粿糀糂糃糄糆糉糋糎糏糐糑糒糓糔糘糚糛糝糞糡糢糣糤糥糦糧糩糪糫糬糭糮糰糱糲糳糴糵糶糷糹糺糼糽糾糿紀紁紂紃約紅紆紇紈紉紋紌納紎紏紐�紑紒紓純紕紖紗紘紙級紛紜紝紞紟紡紣紤紥紦紨紩紪紬紭紮細紱紲紳紴紵紶肌饥迹激讥鸡姬绩缉吉极棘辑籍集及急疾汲即嫉级挤几脊己蓟技冀季伎祭剂悸济寄寂计记既忌际妓继纪嘉枷夹佳家加荚颊贾甲钾假稼价架驾嫁歼监坚尖笺间煎兼肩艰奸缄茧检柬碱硷拣捡简俭剪减荐槛鉴践贱见键箭件�".split(""); +for(j = 0; j != D[188].length; ++j) if(D[188][j].charCodeAt(0) !== 0xFFFD) { e[D[188][j]] = 48128 + j; d[48128 + j] = D[188][j];} +D[189] = "����������������������������������������������������������������紷紸紹紺紻紼紽紾紿絀絁終絃組絅絆絇絈絉絊絋経絍絎絏結絑絒絓絔絕絖絗絘絙絚絛絜絝絞絟絠絡絢絣絤絥給絧絨絩絪絫絬絭絯絰統絲絳絴絵絶�絸絹絺絻絼絽絾絿綀綁綂綃綄綅綆綇綈綉綊綋綌綍綎綏綐綑綒經綔綕綖綗綘健舰剑饯渐溅涧建僵姜将浆江疆蒋桨奖讲匠酱降蕉椒礁焦胶交郊浇骄娇嚼搅铰矫侥脚狡角饺缴绞剿教酵轿较叫窖揭接皆秸街阶截劫节桔杰捷睫竭洁结解姐戒藉芥界借介疥诫届巾筋斤金今津襟紧锦仅谨进靳晋禁近烬浸�".split(""); +for(j = 0; j != D[189].length; ++j) if(D[189][j].charCodeAt(0) !== 0xFFFD) { e[D[189][j]] = 48384 + j; d[48384 + j] = D[189][j];} +D[190] = "����������������������������������������������������������������継続綛綜綝綞綟綠綡綢綣綤綥綧綨綩綪綫綬維綯綰綱網綳綴綵綶綷綸綹綺綻綼綽綾綿緀緁緂緃緄緅緆緇緈緉緊緋緌緍緎総緐緑緒緓緔緕緖緗緘緙�線緛緜緝緞緟締緡緢緣緤緥緦緧編緩緪緫緬緭緮緯緰緱緲緳練緵緶緷緸緹緺尽劲荆兢茎睛晶鲸京惊精粳经井警景颈静境敬镜径痉靖竟竞净炯窘揪究纠玖韭久灸九酒厩救旧臼舅咎就疚鞠拘狙疽居驹菊局咀矩举沮聚拒据巨具距踞锯俱句惧炬剧捐鹃娟倦眷卷绢撅攫抉掘倔爵觉决诀绝均菌钧军君峻�".split(""); +for(j = 0; j != D[190].length; ++j) if(D[190][j].charCodeAt(0) !== 0xFFFD) { e[D[190][j]] = 48640 + j; d[48640 + j] = D[190][j];} +D[191] = "����������������������������������������������������������������緻緼緽緾緿縀縁縂縃縄縅縆縇縈縉縊縋縌縍縎縏縐縑縒縓縔縕縖縗縘縙縚縛縜縝縞縟縠縡縢縣縤縥縦縧縨縩縪縫縬縭縮縯縰縱縲縳縴縵縶縷縸縹�縺縼總績縿繀繂繃繄繅繆繈繉繊繋繌繍繎繏繐繑繒繓織繕繖繗繘繙繚繛繜繝俊竣浚郡骏喀咖卡咯开揩楷凯慨刊堪勘坎砍看康慷糠扛抗亢炕考拷烤靠坷苛柯棵磕颗科壳咳可渴克刻客课肯啃垦恳坑吭空恐孔控抠口扣寇枯哭窟苦酷库裤夸垮挎跨胯块筷侩快宽款匡筐狂框矿眶旷况亏盔岿窥葵奎魁傀�".split(""); +for(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];} +D[192] = "����������������������������������������������������������������繞繟繠繡繢繣繤繥繦繧繨繩繪繫繬繭繮繯繰繱繲繳繴繵繶繷繸繹繺繻繼繽繾繿纀纁纃纄纅纆纇纈纉纊纋續纍纎纏纐纑纒纓纔纕纖纗纘纙纚纜纝纞�纮纴纻纼绖绤绬绹缊缐缞缷缹缻缼缽缾缿罀罁罃罆罇罈罉罊罋罌罍罎罏罒罓馈愧溃坤昆捆困括扩廓阔垃拉喇蜡腊辣啦莱来赖蓝婪栏拦篮阑兰澜谰揽览懒缆烂滥琅榔狼廊郎朗浪捞劳牢老佬姥酪烙涝勒乐雷镭蕾磊累儡垒擂肋类泪棱楞冷厘梨犁黎篱狸离漓理李里鲤礼莉荔吏栗丽厉励砾历利傈例俐�".split(""); +for(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];} +D[193] = "����������������������������������������������������������������罖罙罛罜罝罞罠罣罤罥罦罧罫罬罭罯罰罳罵罶罷罸罺罻罼罽罿羀羂羃羄羅羆羇羈羉羋羍羏羐羑羒羓羕羖羗羘羙羛羜羠羢羣羥羦羨義羪羫羬羭羮羱�羳羴羵羶羷羺羻羾翀翂翃翄翆翇翈翉翋翍翏翐翑習翓翖翗翙翚翛翜翝翞翢翣痢立粒沥隶力璃哩俩联莲连镰廉怜涟帘敛脸链恋炼练粮凉梁粱良两辆量晾亮谅撩聊僚疗燎寥辽潦了撂镣廖料列裂烈劣猎琳林磷霖临邻鳞淋凛赁吝拎玲菱零龄铃伶羚凌灵陵岭领另令溜琉榴硫馏留刘瘤流柳六龙聋咙笼窿�".split(""); +for(j = 0; j != D[193].length; ++j) if(D[193][j].charCodeAt(0) !== 0xFFFD) { e[D[193][j]] = 49408 + j; d[49408 + j] = D[193][j];} +D[194] = "����������������������������������������������������������������翤翧翨翪翫翬翭翯翲翴翵翶翷翸翹翺翽翾翿耂耇耈耉耊耎耏耑耓耚耛耝耞耟耡耣耤耫耬耭耮耯耰耲耴耹耺耼耾聀聁聄聅聇聈聉聎聏聐聑聓聕聖聗�聙聛聜聝聞聟聠聡聢聣聤聥聦聧聨聫聬聭聮聯聰聲聳聴聵聶職聸聹聺聻聼聽隆垄拢陇楼娄搂篓漏陋芦卢颅庐炉掳卤虏鲁麓碌露路赂鹿潞禄录陆戮驴吕铝侣旅履屡缕虑氯律率滤绿峦挛孪滦卵乱掠略抡轮伦仑沦纶论萝螺罗逻锣箩骡裸落洛骆络妈麻玛码蚂马骂嘛吗埋买麦卖迈脉瞒馒蛮满蔓曼慢漫�".split(""); +for(j = 0; j != D[194].length; ++j) if(D[194][j].charCodeAt(0) !== 0xFFFD) { e[D[194][j]] = 49664 + j; d[49664 + j] = D[194][j];} +D[195] = "����������������������������������������������������������������聾肁肂肅肈肊肍肎肏肐肑肒肔肕肗肙肞肣肦肧肨肬肰肳肵肶肸肹肻胅胇胈胉胊胋胏胐胑胒胓胔胕胘胟胠胢胣胦胮胵胷胹胻胾胿脀脁脃脄脅脇脈脋�脌脕脗脙脛脜脝脟脠脡脢脣脤脥脦脧脨脩脪脫脭脮脰脳脴脵脷脹脺脻脼脽脿谩芒茫盲氓忙莽猫茅锚毛矛铆卯茂冒帽貌贸么玫枚梅酶霉煤没眉媒镁每美昧寐妹媚门闷们萌蒙檬盟锰猛梦孟眯醚靡糜迷谜弥米秘觅泌蜜密幂棉眠绵冕免勉娩缅面苗描瞄藐秒渺庙妙蔑灭民抿皿敏悯闽明螟鸣铭名命谬摸�".split(""); +for(j = 0; j != D[195].length; ++j) if(D[195][j].charCodeAt(0) !== 0xFFFD) { e[D[195][j]] = 49920 + j; d[49920 + j] = D[195][j];} +D[196] = "����������������������������������������������������������������腀腁腂腃腄腅腇腉腍腎腏腒腖腗腘腛腜腝腞腟腡腢腣腤腦腨腪腫腬腯腲腳腵腶腷腸膁膃膄膅膆膇膉膋膌膍膎膐膒膓膔膕膖膗膙膚膞膟膠膡膢膤膥�膧膩膫膬膭膮膯膰膱膲膴膵膶膷膸膹膼膽膾膿臄臅臇臈臉臋臍臎臏臐臑臒臓摹蘑模膜磨摩魔抹末莫墨默沫漠寞陌谋牟某拇牡亩姆母墓暮幕募慕木目睦牧穆拿哪呐钠那娜纳氖乃奶耐奈南男难囊挠脑恼闹淖呢馁内嫩能妮霓倪泥尼拟你匿腻逆溺蔫拈年碾撵捻念娘酿鸟尿捏聂孽啮镊镍涅您柠狞凝宁�".split(""); +for(j = 0; j != D[196].length; ++j) if(D[196][j].charCodeAt(0) !== 0xFFFD) { e[D[196][j]] = 50176 + j; d[50176 + j] = D[196][j];} +D[197] = "����������������������������������������������������������������臔臕臖臗臘臙臚臛臜臝臞臟臠臡臢臤臥臦臨臩臫臮臯臰臱臲臵臶臷臸臹臺臽臿舃與興舉舊舋舎舏舑舓舕舖舗舘舙舚舝舠舤舥舦舧舩舮舲舺舼舽舿�艀艁艂艃艅艆艈艊艌艍艎艐艑艒艓艔艕艖艗艙艛艜艝艞艠艡艢艣艤艥艦艧艩拧泞牛扭钮纽脓浓农弄奴努怒女暖虐疟挪懦糯诺哦欧鸥殴藕呕偶沤啪趴爬帕怕琶拍排牌徘湃派攀潘盘磐盼畔判叛乓庞旁耪胖抛咆刨炮袍跑泡呸胚培裴赔陪配佩沛喷盆砰抨烹澎彭蓬棚硼篷膨朋鹏捧碰坯砒霹批披劈琵毗�".split(""); +for(j = 0; j != D[197].length; ++j) if(D[197][j].charCodeAt(0) !== 0xFFFD) { e[D[197][j]] = 50432 + j; d[50432 + j] = D[197][j];} +D[198] = "����������������������������������������������������������������艪艫艬艭艱艵艶艷艸艻艼芀芁芃芅芆芇芉芌芐芓芔芕芖芚芛芞芠芢芣芧芲芵芶芺芻芼芿苀苂苃苅苆苉苐苖苙苚苝苢苧苨苩苪苬苭苮苰苲苳苵苶苸�苺苼苽苾苿茀茊茋茍茐茒茓茖茘茙茝茞茟茠茡茢茣茤茥茦茩茪茮茰茲茷茻茽啤脾疲皮匹痞僻屁譬篇偏片骗飘漂瓢票撇瞥拼频贫品聘乒坪苹萍平凭瓶评屏坡泼颇婆破魄迫粕剖扑铺仆莆葡菩蒲埔朴圃普浦谱曝瀑期欺栖戚妻七凄漆柒沏其棋奇歧畦崎脐齐旗祈祁骑起岂乞企启契砌器气迄弃汽泣讫掐�".split(""); +for(j = 0; j != D[198].length; ++j) if(D[198][j].charCodeAt(0) !== 0xFFFD) { e[D[198][j]] = 50688 + j; d[50688 + j] = D[198][j];} +D[199] = "����������������������������������������������������������������茾茿荁荂荄荅荈荊荋荌荍荎荓荕荖荗荘荙荝荢荰荱荲荳荴荵荶荹荺荾荿莀莁莂莃莄莇莈莊莋莌莍莏莐莑莔莕莖莗莙莚莝莟莡莢莣莤莥莦莧莬莭莮�莯莵莻莾莿菂菃菄菆菈菉菋菍菎菐菑菒菓菕菗菙菚菛菞菢菣菤菦菧菨菫菬菭恰洽牵扦钎铅千迁签仟谦乾黔钱钳前潜遣浅谴堑嵌欠歉枪呛腔羌墙蔷强抢橇锹敲悄桥瞧乔侨巧鞘撬翘峭俏窍切茄且怯窃钦侵亲秦琴勤芹擒禽寝沁青轻氢倾卿清擎晴氰情顷请庆琼穷秋丘邱球求囚酋泅趋区蛆曲躯屈驱渠�".split(""); +for(j = 0; j != D[199].length; ++j) if(D[199][j].charCodeAt(0) !== 0xFFFD) { e[D[199][j]] = 50944 + j; d[50944 + j] = D[199][j];} +D[200] = "����������������������������������������������������������������菮華菳菴菵菶菷菺菻菼菾菿萀萂萅萇萈萉萊萐萒萓萔萕萖萗萙萚萛萞萟萠萡萢萣萩萪萫萬萭萮萯萰萲萳萴萵萶萷萹萺萻萾萿葀葁葂葃葄葅葇葈葉�葊葋葌葍葎葏葐葒葓葔葕葖葘葝葞葟葠葢葤葥葦葧葨葪葮葯葰葲葴葷葹葻葼取娶龋趣去圈颧权醛泉全痊拳犬券劝缺炔瘸却鹊榷确雀裙群然燃冉染瓤壤攘嚷让饶扰绕惹热壬仁人忍韧任认刃妊纫扔仍日戎茸蓉荣融熔溶容绒冗揉柔肉茹蠕儒孺如辱乳汝入褥软阮蕊瑞锐闰润若弱撒洒萨腮鳃塞赛三叁�".split(""); +for(j = 0; j != D[200].length; ++j) if(D[200][j].charCodeAt(0) !== 0xFFFD) { e[D[200][j]] = 51200 + j; d[51200 + j] = D[200][j];} +D[201] = "����������������������������������������������������������������葽葾葿蒀蒁蒃蒄蒅蒆蒊蒍蒏蒐蒑蒒蒓蒔蒕蒖蒘蒚蒛蒝蒞蒟蒠蒢蒣蒤蒥蒦蒧蒨蒩蒪蒫蒬蒭蒮蒰蒱蒳蒵蒶蒷蒻蒼蒾蓀蓂蓃蓅蓆蓇蓈蓋蓌蓎蓏蓒蓔蓕蓗�蓘蓙蓚蓛蓜蓞蓡蓢蓤蓧蓨蓩蓪蓫蓭蓮蓯蓱蓲蓳蓴蓵蓶蓷蓸蓹蓺蓻蓽蓾蔀蔁蔂伞散桑嗓丧搔骚扫嫂瑟色涩森僧莎砂杀刹沙纱傻啥煞筛晒珊苫杉山删煽衫闪陕擅赡膳善汕扇缮墒伤商赏晌上尚裳梢捎稍烧芍勺韶少哨邵绍奢赊蛇舌舍赦摄射慑涉社设砷申呻伸身深娠绅神沈审婶甚肾慎渗声生甥牲升绳�".split(""); +for(j = 0; j != D[201].length; ++j) if(D[201][j].charCodeAt(0) !== 0xFFFD) { e[D[201][j]] = 51456 + j; d[51456 + j] = D[201][j];} +D[202] = "����������������������������������������������������������������蔃蔄蔅蔆蔇蔈蔉蔊蔋蔍蔎蔏蔐蔒蔔蔕蔖蔘蔙蔛蔜蔝蔞蔠蔢蔣蔤蔥蔦蔧蔨蔩蔪蔭蔮蔯蔰蔱蔲蔳蔴蔵蔶蔾蔿蕀蕁蕂蕄蕅蕆蕇蕋蕌蕍蕎蕏蕐蕑蕒蕓蕔蕕�蕗蕘蕚蕛蕜蕝蕟蕠蕡蕢蕣蕥蕦蕧蕩蕪蕫蕬蕭蕮蕯蕰蕱蕳蕵蕶蕷蕸蕼蕽蕿薀薁省盛剩胜圣师失狮施湿诗尸虱十石拾时什食蚀实识史矢使屎驶始式示士世柿事拭誓逝势是嗜噬适仕侍释饰氏市恃室视试收手首守寿授售受瘦兽蔬枢梳殊抒输叔舒淑疏书赎孰熟薯暑曙署蜀黍鼠属术述树束戍竖墅庶数漱�".split(""); +for(j = 0; j != D[202].length; ++j) if(D[202][j].charCodeAt(0) !== 0xFFFD) { e[D[202][j]] = 51712 + j; d[51712 + j] = D[202][j];} +D[203] = "����������������������������������������������������������������薂薃薆薈薉薊薋薌薍薎薐薑薒薓薔薕薖薗薘薙薚薝薞薟薠薡薢薣薥薦薧薩薫薬薭薱薲薳薴薵薶薸薺薻薼薽薾薿藀藂藃藄藅藆藇藈藊藋藌藍藎藑藒�藔藖藗藘藙藚藛藝藞藟藠藡藢藣藥藦藧藨藪藫藬藭藮藯藰藱藲藳藴藵藶藷藸恕刷耍摔衰甩帅栓拴霜双爽谁水睡税吮瞬顺舜说硕朔烁斯撕嘶思私司丝死肆寺嗣四伺似饲巳松耸怂颂送宋讼诵搜艘擞嗽苏酥俗素速粟僳塑溯宿诉肃酸蒜算虽隋随绥髓碎岁穗遂隧祟孙损笋蓑梭唆缩琐索锁所塌他它她塔�".split(""); +for(j = 0; j != D[203].length; ++j) if(D[203][j].charCodeAt(0) !== 0xFFFD) { e[D[203][j]] = 51968 + j; d[51968 + j] = D[203][j];} +D[204] = "����������������������������������������������������������������藹藺藼藽藾蘀蘁蘂蘃蘄蘆蘇蘈蘉蘊蘋蘌蘍蘎蘏蘐蘒蘓蘔蘕蘗蘘蘙蘚蘛蘜蘝蘞蘟蘠蘡蘢蘣蘤蘥蘦蘨蘪蘫蘬蘭蘮蘯蘰蘱蘲蘳蘴蘵蘶蘷蘹蘺蘻蘽蘾蘿虀�虁虂虃虄虅虆虇虈虉虊虋虌虒虓處虖虗虘虙虛虜虝號虠虡虣虤虥虦虧虨虩虪獭挞蹋踏胎苔抬台泰酞太态汰坍摊贪瘫滩坛檀痰潭谭谈坦毯袒碳探叹炭汤塘搪堂棠膛唐糖倘躺淌趟烫掏涛滔绦萄桃逃淘陶讨套特藤腾疼誊梯剔踢锑提题蹄啼体替嚏惕涕剃屉天添填田甜恬舔腆挑条迢眺跳贴铁帖厅听烃�".split(""); +for(j = 0; j != D[204].length; ++j) if(D[204][j].charCodeAt(0) !== 0xFFFD) { e[D[204][j]] = 52224 + j; d[52224 + j] = D[204][j];} +D[205] = "����������������������������������������������������������������虭虯虰虲虳虴虵虶虷虸蚃蚄蚅蚆蚇蚈蚉蚎蚏蚐蚑蚒蚔蚖蚗蚘蚙蚚蚛蚞蚟蚠蚡蚢蚥蚦蚫蚭蚮蚲蚳蚷蚸蚹蚻蚼蚽蚾蚿蛁蛂蛃蛅蛈蛌蛍蛒蛓蛕蛖蛗蛚蛜�蛝蛠蛡蛢蛣蛥蛦蛧蛨蛪蛫蛬蛯蛵蛶蛷蛺蛻蛼蛽蛿蜁蜄蜅蜆蜋蜌蜎蜏蜐蜑蜔蜖汀廷停亭庭挺艇通桐酮瞳同铜彤童桶捅筒统痛偷投头透凸秃突图徒途涂屠土吐兔湍团推颓腿蜕褪退吞屯臀拖托脱鸵陀驮驼椭妥拓唾挖哇蛙洼娃瓦袜歪外豌弯湾玩顽丸烷完碗挽晚皖惋宛婉万腕汪王亡枉网往旺望忘妄威�".split(""); +for(j = 0; j != D[205].length; ++j) if(D[205][j].charCodeAt(0) !== 0xFFFD) { e[D[205][j]] = 52480 + j; d[52480 + j] = D[205][j];} +D[206] = "����������������������������������������������������������������蜙蜛蜝蜟蜠蜤蜦蜧蜨蜪蜫蜬蜭蜯蜰蜲蜳蜵蜶蜸蜹蜺蜼蜽蝀蝁蝂蝃蝄蝅蝆蝊蝋蝍蝏蝐蝑蝒蝔蝕蝖蝘蝚蝛蝜蝝蝞蝟蝡蝢蝦蝧蝨蝩蝪蝫蝬蝭蝯蝱蝲蝳蝵�蝷蝸蝹蝺蝿螀螁螄螆螇螉螊螌螎螏螐螑螒螔螕螖螘螙螚螛螜螝螞螠螡螢螣螤巍微危韦违桅围唯惟为潍维苇萎委伟伪尾纬未蔚味畏胃喂魏位渭谓尉慰卫瘟温蚊文闻纹吻稳紊问嗡翁瓮挝蜗涡窝我斡卧握沃巫呜钨乌污诬屋无芜梧吾吴毋武五捂午舞伍侮坞戊雾晤物勿务悟误昔熙析西硒矽晰嘻吸锡牺�".split(""); +for(j = 0; j != D[206].length; ++j) if(D[206][j].charCodeAt(0) !== 0xFFFD) { e[D[206][j]] = 52736 + j; d[52736 + j] = D[206][j];} +D[207] = "����������������������������������������������������������������螥螦螧螩螪螮螰螱螲螴螶螷螸螹螻螼螾螿蟁蟂蟃蟄蟅蟇蟈蟉蟌蟍蟎蟏蟐蟔蟕蟖蟗蟘蟙蟚蟜蟝蟞蟟蟡蟢蟣蟤蟦蟧蟨蟩蟫蟬蟭蟯蟰蟱蟲蟳蟴蟵蟶蟷蟸�蟺蟻蟼蟽蟿蠀蠁蠂蠄蠅蠆蠇蠈蠉蠋蠌蠍蠎蠏蠐蠑蠒蠔蠗蠘蠙蠚蠜蠝蠞蠟蠠蠣稀息希悉膝夕惜熄烯溪汐犀檄袭席习媳喜铣洗系隙戏细瞎虾匣霞辖暇峡侠狭下厦夏吓掀锨先仙鲜纤咸贤衔舷闲涎弦嫌显险现献县腺馅羡宪陷限线相厢镶香箱襄湘乡翔祥详想响享项巷橡像向象萧硝霄削哮嚣销消宵淆晓�".split(""); +for(j = 0; j != D[207].length; ++j) if(D[207][j].charCodeAt(0) !== 0xFFFD) { e[D[207][j]] = 52992 + j; d[52992 + j] = D[207][j];} +D[208] = "����������������������������������������������������������������蠤蠥蠦蠧蠨蠩蠪蠫蠬蠭蠮蠯蠰蠱蠳蠴蠵蠶蠷蠸蠺蠻蠽蠾蠿衁衂衃衆衇衈衉衊衋衎衏衐衑衒術衕衖衘衚衛衜衝衞衟衠衦衧衪衭衯衱衳衴衵衶衸衹衺�衻衼袀袃袆袇袉袊袌袎袏袐袑袓袔袕袗袘袙袚袛袝袞袟袠袡袣袥袦袧袨袩袪小孝校肖啸笑效楔些歇蝎鞋协挟携邪斜胁谐写械卸蟹懈泄泻谢屑薪芯锌欣辛新忻心信衅星腥猩惺兴刑型形邢行醒幸杏性姓兄凶胸匈汹雄熊休修羞朽嗅锈秀袖绣墟戌需虚嘘须徐许蓄酗叙旭序畜恤絮婿绪续轩喧宣悬旋玄�".split(""); +for(j = 0; j != D[208].length; ++j) if(D[208][j].charCodeAt(0) !== 0xFFFD) { e[D[208][j]] = 53248 + j; d[53248 + j] = D[208][j];} +D[209] = "����������������������������������������������������������������袬袮袯袰袲袳袴袵袶袸袹袺袻袽袾袿裀裃裄裇裈裊裋裌裍裏裐裑裓裖裗裚裛補裝裞裠裡裦裧裩裪裫裬裭裮裯裲裵裶裷裺裻製裿褀褁褃褄褅褆複褈�褉褋褌褍褎褏褑褔褕褖褗褘褜褝褞褟褠褢褣褤褦褧褨褩褬褭褮褯褱褲褳褵褷选癣眩绚靴薛学穴雪血勋熏循旬询寻驯巡殉汛训讯逊迅压押鸦鸭呀丫芽牙蚜崖衙涯雅哑亚讶焉咽阉烟淹盐严研蜒岩延言颜阎炎沿奄掩眼衍演艳堰燕厌砚雁唁彦焰宴谚验殃央鸯秧杨扬佯疡羊洋阳氧仰痒养样漾邀腰妖瑶�".split(""); +for(j = 0; j != D[209].length; ++j) if(D[209][j].charCodeAt(0) !== 0xFFFD) { e[D[209][j]] = 53504 + j; d[53504 + j] = D[209][j];} +D[210] = "����������������������������������������������������������������褸褹褺褻褼褽褾褿襀襂襃襅襆襇襈襉襊襋襌襍襎襏襐襑襒襓襔襕襖襗襘襙襚襛襜襝襠襡襢襣襤襥襧襨襩襪襫襬襭襮襯襰襱襲襳襴襵襶襷襸襹襺襼�襽襾覀覂覄覅覇覈覉覊見覌覍覎規覐覑覒覓覔覕視覗覘覙覚覛覜覝覞覟覠覡摇尧遥窑谣姚咬舀药要耀椰噎耶爷野冶也页掖业叶曳腋夜液一壹医揖铱依伊衣颐夷遗移仪胰疑沂宜姨彝椅蚁倚已乙矣以艺抑易邑屹亿役臆逸肄疫亦裔意毅忆义益溢诣议谊译异翼翌绎茵荫因殷音阴姻吟银淫寅饮尹引隐�".split(""); +for(j = 0; j != D[210].length; ++j) if(D[210][j].charCodeAt(0) !== 0xFFFD) { e[D[210][j]] = 53760 + j; d[53760 + j] = D[210][j];} +D[211] = "����������������������������������������������������������������覢覣覤覥覦覧覨覩親覫覬覭覮覯覰覱覲観覴覵覶覷覸覹覺覻覼覽覾覿觀觃觍觓觔觕觗觘觙觛觝觟觠觡觢觤觧觨觩觪觬觭觮觰觱觲觴觵觶觷觸觹觺�觻觼觽觾觿訁訂訃訄訅訆計訉訊訋訌訍討訏訐訑訒訓訔訕訖託記訙訚訛訜訝印英樱婴鹰应缨莹萤营荧蝇迎赢盈影颖硬映哟拥佣臃痈庸雍踊蛹咏泳涌永恿勇用幽优悠忧尤由邮铀犹油游酉有友右佑釉诱又幼迂淤于盂榆虞愚舆余俞逾鱼愉渝渔隅予娱雨与屿禹宇语羽玉域芋郁吁遇喻峪御愈欲狱育誉�".split(""); +for(j = 0; j != D[211].length; ++j) if(D[211][j].charCodeAt(0) !== 0xFFFD) { e[D[211][j]] = 54016 + j; d[54016 + j] = D[211][j];} +D[212] = "����������������������������������������������������������������訞訟訠訡訢訣訤訥訦訧訨訩訪訫訬設訮訯訰許訲訳訴訵訶訷訸訹診註証訽訿詀詁詂詃詄詅詆詇詉詊詋詌詍詎詏詐詑詒詓詔評詖詗詘詙詚詛詜詝詞�詟詠詡詢詣詤詥試詧詨詩詪詫詬詭詮詯詰話該詳詴詵詶詷詸詺詻詼詽詾詿誀浴寓裕预豫驭鸳渊冤元垣袁原援辕园员圆猿源缘远苑愿怨院曰约越跃钥岳粤月悦阅耘云郧匀陨允运蕴酝晕韵孕匝砸杂栽哉灾宰载再在咱攒暂赞赃脏葬遭糟凿藻枣早澡蚤躁噪造皂灶燥责择则泽贼怎增憎曾赠扎喳渣札轧�".split(""); +for(j = 0; j != D[212].length; ++j) if(D[212][j].charCodeAt(0) !== 0xFFFD) { e[D[212][j]] = 54272 + j; d[54272 + j] = D[212][j];} +D[213] = "����������������������������������������������������������������誁誂誃誄誅誆誇誈誋誌認誎誏誐誑誒誔誕誖誗誘誙誚誛誜誝語誟誠誡誢誣誤誥誦誧誨誩說誫説読誮誯誰誱課誳誴誵誶誷誸誹誺誻誼誽誾調諀諁諂�諃諄諅諆談諈諉諊請諌諍諎諏諐諑諒諓諔諕論諗諘諙諚諛諜諝諞諟諠諡諢諣铡闸眨栅榨咋乍炸诈摘斋宅窄债寨瞻毡詹粘沾盏斩辗崭展蘸栈占战站湛绽樟章彰漳张掌涨杖丈帐账仗胀瘴障招昭找沼赵照罩兆肇召遮折哲蛰辙者锗蔗这浙珍斟真甄砧臻贞针侦枕疹诊震振镇阵蒸挣睁征狰争怔整拯正政�".split(""); +for(j = 0; j != D[213].length; ++j) if(D[213][j].charCodeAt(0) !== 0xFFFD) { e[D[213][j]] = 54528 + j; d[54528 + j] = D[213][j];} +D[214] = "����������������������������������������������������������������諤諥諦諧諨諩諪諫諬諭諮諯諰諱諲諳諴諵諶諷諸諹諺諻諼諽諾諿謀謁謂謃謄謅謆謈謉謊謋謌謍謎謏謐謑謒謓謔謕謖謗謘謙謚講謜謝謞謟謠謡謢謣�謤謥謧謨謩謪謫謬謭謮謯謰謱謲謳謴謵謶謷謸謹謺謻謼謽謾謿譀譁譂譃譄譅帧症郑证芝枝支吱蜘知肢脂汁之织职直植殖执值侄址指止趾只旨纸志挚掷至致置帜峙制智秩稚质炙痔滞治窒中盅忠钟衷终种肿重仲众舟周州洲诌粥轴肘帚咒皱宙昼骤珠株蛛朱猪诸诛逐竹烛煮拄瞩嘱主著柱助蛀贮铸筑�".split(""); +for(j = 0; j != D[214].length; ++j) if(D[214][j].charCodeAt(0) !== 0xFFFD) { e[D[214][j]] = 54784 + j; d[54784 + j] = D[214][j];} +D[215] = "����������������������������������������������������������������譆譇譈證譊譋譌譍譎譏譐譑譒譓譔譕譖譗識譙譚譛譜譝譞譟譠譡譢譣譤譥譧譨譩譪譫譭譮譯議譱譲譳譴譵譶護譸譹譺譻譼譽譾譿讀讁讂讃讄讅讆�讇讈讉變讋讌讍讎讏讐讑讒讓讔讕讖讗讘讙讚讛讜讝讞讟讬讱讻诇诐诪谉谞住注祝驻抓爪拽专砖转撰赚篆桩庄装妆撞壮状椎锥追赘坠缀谆准捉拙卓桌琢茁酌啄着灼浊兹咨资姿滋淄孜紫仔籽滓子自渍字鬃棕踪宗综总纵邹走奏揍租足卒族祖诅阻组钻纂嘴醉最罪尊遵昨左佐柞做作坐座�".split(""); +for(j = 0; j != D[215].length; ++j) if(D[215][j].charCodeAt(0) !== 0xFFFD) { e[D[215][j]] = 55040 + j; d[55040 + j] = D[215][j];} +D[216] = "����������������������������������������������������������������谸谹谺谻谼谽谾谿豀豂豃豄豅豈豊豋豍豎豏豐豑豒豓豔豖豗豘豙豛豜豝豞豟豠豣豤豥豦豧豨豩豬豭豮豯豰豱豲豴豵豶豷豻豼豽豾豿貀貁貃貄貆貇�貈貋貍貎貏貐貑貒貓貕貖貗貙貚貛貜貝貞貟負財貢貣貤貥貦貧貨販貪貫責貭亍丌兀丐廿卅丕亘丞鬲孬噩丨禺丿匕乇夭爻卮氐囟胤馗毓睾鼗丶亟鼐乜乩亓芈孛啬嘏仄厍厝厣厥厮靥赝匚叵匦匮匾赜卦卣刂刈刎刭刳刿剀剌剞剡剜蒯剽劂劁劐劓冂罔亻仃仉仂仨仡仫仞伛仳伢佤仵伥伧伉伫佞佧攸佚佝�".split(""); +for(j = 0; j != D[216].length; ++j) if(D[216][j].charCodeAt(0) !== 0xFFFD) { e[D[216][j]] = 55296 + j; d[55296 + j] = D[216][j];} +D[217] = "����������������������������������������������������������������貮貯貰貱貲貳貴貵貶買貸貹貺費貼貽貾貿賀賁賂賃賄賅賆資賈賉賊賋賌賍賎賏賐賑賒賓賔賕賖賗賘賙賚賛賜賝賞賟賠賡賢賣賤賥賦賧賨賩質賫賬�賭賮賯賰賱賲賳賴賵賶賷賸賹賺賻購賽賾賿贀贁贂贃贄贅贆贇贈贉贊贋贌贍佟佗伲伽佶佴侑侉侃侏佾佻侪佼侬侔俦俨俪俅俚俣俜俑俟俸倩偌俳倬倏倮倭俾倜倌倥倨偾偃偕偈偎偬偻傥傧傩傺僖儆僭僬僦僮儇儋仝氽佘佥俎龠汆籴兮巽黉馘冁夔勹匍訇匐凫夙兕亠兖亳衮袤亵脔裒禀嬴蠃羸冫冱冽冼�".split(""); +for(j = 0; j != D[217].length; ++j) if(D[217][j].charCodeAt(0) !== 0xFFFD) { e[D[217][j]] = 55552 + j; d[55552 + j] = D[217][j];} +D[218] = "����������������������������������������������������������������贎贏贐贑贒贓贔贕贖贗贘贙贚贛贜贠赑赒赗赟赥赨赩赪赬赮赯赱赲赸赹赺赻赼赽赾赿趀趂趃趆趇趈趉趌趍趎趏趐趒趓趕趖趗趘趙趚趛趜趝趞趠趡�趢趤趥趦趧趨趩趪趫趬趭趮趯趰趲趶趷趹趻趽跀跁跂跅跇跈跉跊跍跐跒跓跔凇冖冢冥讠讦讧讪讴讵讷诂诃诋诏诎诒诓诔诖诘诙诜诟诠诤诨诩诮诰诳诶诹诼诿谀谂谄谇谌谏谑谒谔谕谖谙谛谘谝谟谠谡谥谧谪谫谮谯谲谳谵谶卩卺阝阢阡阱阪阽阼陂陉陔陟陧陬陲陴隈隍隗隰邗邛邝邙邬邡邴邳邶邺�".split(""); +for(j = 0; j != D[218].length; ++j) if(D[218][j].charCodeAt(0) !== 0xFFFD) { e[D[218][j]] = 55808 + j; d[55808 + j] = D[218][j];} +D[219] = "����������������������������������������������������������������跕跘跙跜跠跡跢跥跦跧跩跭跮跰跱跲跴跶跼跾跿踀踁踂踃踄踆踇踈踋踍踎踐踑踒踓踕踖踗踘踙踚踛踜踠踡踤踥踦踧踨踫踭踰踲踳踴踶踷踸踻踼踾�踿蹃蹅蹆蹌蹍蹎蹏蹐蹓蹔蹕蹖蹗蹘蹚蹛蹜蹝蹞蹟蹠蹡蹢蹣蹤蹥蹧蹨蹪蹫蹮蹱邸邰郏郅邾郐郄郇郓郦郢郜郗郛郫郯郾鄄鄢鄞鄣鄱鄯鄹酃酆刍奂劢劬劭劾哿勐勖勰叟燮矍廴凵凼鬯厶弁畚巯坌垩垡塾墼壅壑圩圬圪圳圹圮圯坜圻坂坩垅坫垆坼坻坨坭坶坳垭垤垌垲埏垧垴垓垠埕埘埚埙埒垸埴埯埸埤埝�".split(""); +for(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];} +D[220] = "����������������������������������������������������������������蹳蹵蹷蹸蹹蹺蹻蹽蹾躀躂躃躄躆躈躉躊躋躌躍躎躑躒躓躕躖躗躘躙躚躛躝躟躠躡躢躣躤躥躦躧躨躩躪躭躮躰躱躳躴躵躶躷躸躹躻躼躽躾躿軀軁軂�軃軄軅軆軇軈軉車軋軌軍軏軐軑軒軓軔軕軖軗軘軙軚軛軜軝軞軟軠軡転軣軤堋堍埽埭堀堞堙塄堠塥塬墁墉墚墀馨鼙懿艹艽艿芏芊芨芄芎芑芗芙芫芸芾芰苈苊苣芘芷芮苋苌苁芩芴芡芪芟苄苎芤苡茉苷苤茏茇苜苴苒苘茌苻苓茑茚茆茔茕苠苕茜荑荛荜茈莒茼茴茱莛荞茯荏荇荃荟荀茗荠茭茺茳荦荥�".split(""); +for(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];} +D[221] = "����������������������������������������������������������������軥軦軧軨軩軪軫軬軭軮軯軰軱軲軳軴軵軶軷軸軹軺軻軼軽軾軿輀輁輂較輄輅輆輇輈載輊輋輌輍輎輏輐輑輒輓輔輕輖輗輘輙輚輛輜輝輞輟輠輡輢輣�輤輥輦輧輨輩輪輫輬輭輮輯輰輱輲輳輴輵輶輷輸輹輺輻輼輽輾輿轀轁轂轃轄荨茛荩荬荪荭荮莰荸莳莴莠莪莓莜莅荼莶莩荽莸荻莘莞莨莺莼菁萁菥菘堇萘萋菝菽菖萜萸萑萆菔菟萏萃菸菹菪菅菀萦菰菡葜葑葚葙葳蒇蒈葺蒉葸萼葆葩葶蒌蒎萱葭蓁蓍蓐蓦蒽蓓蓊蒿蒺蓠蒡蒹蒴蒗蓥蓣蔌甍蔸蓰蔹蔟蔺�".split(""); +for(j = 0; j != D[221].length; ++j) if(D[221][j].charCodeAt(0) !== 0xFFFD) { e[D[221][j]] = 56576 + j; d[56576 + j] = D[221][j];} +D[222] = "����������������������������������������������������������������轅轆轇轈轉轊轋轌轍轎轏轐轑轒轓轔轕轖轗轘轙轚轛轜轝轞轟轠轡轢轣轤轥轪辀辌辒辝辠辡辢辤辥辦辧辪辬辭辮辯農辳辴辵辷辸辺辻込辿迀迃迆�迉迊迋迌迍迏迒迖迗迚迠迡迣迧迬迯迱迲迴迵迶迺迻迼迾迿逇逈逌逎逓逕逘蕖蔻蓿蓼蕙蕈蕨蕤蕞蕺瞢蕃蕲蕻薤薨薇薏蕹薮薜薅薹薷薰藓藁藜藿蘧蘅蘩蘖蘼廾弈夼奁耷奕奚奘匏尢尥尬尴扌扪抟抻拊拚拗拮挢拶挹捋捃掭揶捱捺掎掴捭掬掊捩掮掼揲揸揠揿揄揞揎摒揆掾摅摁搋搛搠搌搦搡摞撄摭撖�".split(""); +for(j = 0; j != D[222].length; ++j) if(D[222][j].charCodeAt(0) !== 0xFFFD) { e[D[222][j]] = 56832 + j; d[56832 + j] = D[222][j];} +D[223] = "����������������������������������������������������������������這逜連逤逥逧逨逩逪逫逬逰週進逳逴逷逹逺逽逿遀遃遅遆遈遉遊運遌過達違遖遙遚遜遝遞遟遠遡遤遦遧適遪遫遬遯遰遱遲遳遶遷選遹遺遻遼遾邁�還邅邆邇邉邊邌邍邎邏邐邒邔邖邘邚邜邞邟邠邤邥邧邨邩邫邭邲邷邼邽邿郀摺撷撸撙撺擀擐擗擤擢攉攥攮弋忒甙弑卟叱叽叩叨叻吒吖吆呋呒呓呔呖呃吡呗呙吣吲咂咔呷呱呤咚咛咄呶呦咝哐咭哂咴哒咧咦哓哔呲咣哕咻咿哌哙哚哜咩咪咤哝哏哞唛哧唠哽唔哳唢唣唏唑唧唪啧喏喵啉啭啁啕唿啐唼�".split(""); +for(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];} +D[224] = "����������������������������������������������������������������郂郃郆郈郉郋郌郍郒郔郕郖郘郙郚郞郟郠郣郤郥郩郪郬郮郰郱郲郳郵郶郷郹郺郻郼郿鄀鄁鄃鄅鄆鄇鄈鄉鄊鄋鄌鄍鄎鄏鄐鄑鄒鄓鄔鄕鄖鄗鄘鄚鄛鄜�鄝鄟鄠鄡鄤鄥鄦鄧鄨鄩鄪鄫鄬鄭鄮鄰鄲鄳鄴鄵鄶鄷鄸鄺鄻鄼鄽鄾鄿酀酁酂酄唷啖啵啶啷唳唰啜喋嗒喃喱喹喈喁喟啾嗖喑啻嗟喽喾喔喙嗪嗷嗉嘟嗑嗫嗬嗔嗦嗝嗄嗯嗥嗲嗳嗌嗍嗨嗵嗤辔嘞嘈嘌嘁嘤嘣嗾嘀嘧嘭噘嘹噗嘬噍噢噙噜噌噔嚆噤噱噫噻噼嚅嚓嚯囔囗囝囡囵囫囹囿圄圊圉圜帏帙帔帑帱帻帼�".split(""); +for(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];} +D[225] = "����������������������������������������������������������������酅酇酈酑酓酔酕酖酘酙酛酜酟酠酦酧酨酫酭酳酺酻酼醀醁醂醃醄醆醈醊醎醏醓醔醕醖醗醘醙醜醝醞醟醠醡醤醥醦醧醨醩醫醬醰醱醲醳醶醷醸醹醻�醼醽醾醿釀釁釂釃釄釅釆釈釋釐釒釓釔釕釖釗釘釙釚釛針釞釟釠釡釢釣釤釥帷幄幔幛幞幡岌屺岍岐岖岈岘岙岑岚岜岵岢岽岬岫岱岣峁岷峄峒峤峋峥崂崃崧崦崮崤崞崆崛嵘崾崴崽嵬嵛嵯嵝嵫嵋嵊嵩嵴嶂嶙嶝豳嶷巅彳彷徂徇徉後徕徙徜徨徭徵徼衢彡犭犰犴犷犸狃狁狎狍狒狨狯狩狲狴狷猁狳猃狺�".split(""); +for(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];} +D[226] = "����������������������������������������������������������������釦釧釨釩釪釫釬釭釮釯釰釱釲釳釴釵釶釷釸釹釺釻釼釽釾釿鈀鈁鈂鈃鈄鈅鈆鈇鈈鈉鈊鈋鈌鈍鈎鈏鈐鈑鈒鈓鈔鈕鈖鈗鈘鈙鈚鈛鈜鈝鈞鈟鈠鈡鈢鈣鈤�鈥鈦鈧鈨鈩鈪鈫鈬鈭鈮鈯鈰鈱鈲鈳鈴鈵鈶鈷鈸鈹鈺鈻鈼鈽鈾鈿鉀鉁鉂鉃鉄鉅狻猗猓猡猊猞猝猕猢猹猥猬猸猱獐獍獗獠獬獯獾舛夥飧夤夂饣饧饨饩饪饫饬饴饷饽馀馄馇馊馍馐馑馓馔馕庀庑庋庖庥庠庹庵庾庳赓廒廑廛廨廪膺忄忉忖忏怃忮怄忡忤忾怅怆忪忭忸怙怵怦怛怏怍怩怫怊怿怡恸恹恻恺恂�".split(""); +for(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];} +D[227] = "����������������������������������������������������������������鉆鉇鉈鉉鉊鉋鉌鉍鉎鉏鉐鉑鉒鉓鉔鉕鉖鉗鉘鉙鉚鉛鉜鉝鉞鉟鉠鉡鉢鉣鉤鉥鉦鉧鉨鉩鉪鉫鉬鉭鉮鉯鉰鉱鉲鉳鉵鉶鉷鉸鉹鉺鉻鉼鉽鉾鉿銀銁銂銃銄銅�銆銇銈銉銊銋銌銍銏銐銑銒銓銔銕銖銗銘銙銚銛銜銝銞銟銠銡銢銣銤銥銦銧恪恽悖悚悭悝悃悒悌悛惬悻悱惝惘惆惚悴愠愦愕愣惴愀愎愫慊慵憬憔憧憷懔懵忝隳闩闫闱闳闵闶闼闾阃阄阆阈阊阋阌阍阏阒阕阖阗阙阚丬爿戕氵汔汜汊沣沅沐沔沌汨汩汴汶沆沩泐泔沭泷泸泱泗沲泠泖泺泫泮沱泓泯泾�".split(""); +for(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];} +D[228] = "����������������������������������������������������������������銨銩銪銫銬銭銯銰銱銲銳銴銵銶銷銸銹銺銻銼銽銾銿鋀鋁鋂鋃鋄鋅鋆鋇鋉鋊鋋鋌鋍鋎鋏鋐鋑鋒鋓鋔鋕鋖鋗鋘鋙鋚鋛鋜鋝鋞鋟鋠鋡鋢鋣鋤鋥鋦鋧鋨�鋩鋪鋫鋬鋭鋮鋯鋰鋱鋲鋳鋴鋵鋶鋷鋸鋹鋺鋻鋼鋽鋾鋿錀錁錂錃錄錅錆錇錈錉洹洧洌浃浈洇洄洙洎洫浍洮洵洚浏浒浔洳涑浯涞涠浞涓涔浜浠浼浣渚淇淅淞渎涿淠渑淦淝淙渖涫渌涮渫湮湎湫溲湟溆湓湔渲渥湄滟溱溘滠漭滢溥溧溽溻溷滗溴滏溏滂溟潢潆潇漤漕滹漯漶潋潴漪漉漩澉澍澌潸潲潼潺濑�".split(""); +for(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];} +D[229] = "����������������������������������������������������������������錊錋錌錍錎錏錐錑錒錓錔錕錖錗錘錙錚錛錜錝錞錟錠錡錢錣錤錥錦錧錨錩錪錫錬錭錮錯錰錱録錳錴錵錶錷錸錹錺錻錼錽錿鍀鍁鍂鍃鍄鍅鍆鍇鍈鍉�鍊鍋鍌鍍鍎鍏鍐鍑鍒鍓鍔鍕鍖鍗鍘鍙鍚鍛鍜鍝鍞鍟鍠鍡鍢鍣鍤鍥鍦鍧鍨鍩鍫濉澧澹澶濂濡濮濞濠濯瀚瀣瀛瀹瀵灏灞宀宄宕宓宥宸甯骞搴寤寮褰寰蹇謇辶迓迕迥迮迤迩迦迳迨逅逄逋逦逑逍逖逡逵逶逭逯遄遑遒遐遨遘遢遛暹遴遽邂邈邃邋彐彗彖彘尻咫屐屙孱屣屦羼弪弩弭艴弼鬻屮妁妃妍妩妪妣�".split(""); +for(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];} +D[230] = "����������������������������������������������������������������鍬鍭鍮鍯鍰鍱鍲鍳鍴鍵鍶鍷鍸鍹鍺鍻鍼鍽鍾鍿鎀鎁鎂鎃鎄鎅鎆鎇鎈鎉鎊鎋鎌鎍鎎鎐鎑鎒鎓鎔鎕鎖鎗鎘鎙鎚鎛鎜鎝鎞鎟鎠鎡鎢鎣鎤鎥鎦鎧鎨鎩鎪鎫�鎬鎭鎮鎯鎰鎱鎲鎳鎴鎵鎶鎷鎸鎹鎺鎻鎼鎽鎾鎿鏀鏁鏂鏃鏄鏅鏆鏇鏈鏉鏋鏌鏍妗姊妫妞妤姒妲妯姗妾娅娆姝娈姣姘姹娌娉娲娴娑娣娓婀婧婊婕娼婢婵胬媪媛婷婺媾嫫媲嫒嫔媸嫠嫣嫱嫖嫦嫘嫜嬉嬗嬖嬲嬷孀尕尜孚孥孳孑孓孢驵驷驸驺驿驽骀骁骅骈骊骐骒骓骖骘骛骜骝骟骠骢骣骥骧纟纡纣纥纨纩�".split(""); +for(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];} +D[231] = "����������������������������������������������������������������鏎鏏鏐鏑鏒鏓鏔鏕鏗鏘鏙鏚鏛鏜鏝鏞鏟鏠鏡鏢鏣鏤鏥鏦鏧鏨鏩鏪鏫鏬鏭鏮鏯鏰鏱鏲鏳鏴鏵鏶鏷鏸鏹鏺鏻鏼鏽鏾鏿鐀鐁鐂鐃鐄鐅鐆鐇鐈鐉鐊鐋鐌鐍�鐎鐏鐐鐑鐒鐓鐔鐕鐖鐗鐘鐙鐚鐛鐜鐝鐞鐟鐠鐡鐢鐣鐤鐥鐦鐧鐨鐩鐪鐫鐬鐭鐮纭纰纾绀绁绂绉绋绌绐绔绗绛绠绡绨绫绮绯绱绲缍绶绺绻绾缁缂缃缇缈缋缌缏缑缒缗缙缜缛缟缡缢缣缤缥缦缧缪缫缬缭缯缰缱缲缳缵幺畿巛甾邕玎玑玮玢玟珏珂珑玷玳珀珉珈珥珙顼琊珩珧珞玺珲琏琪瑛琦琥琨琰琮琬�".split(""); +for(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];} +D[232] = "����������������������������������������������������������������鐯鐰鐱鐲鐳鐴鐵鐶鐷鐸鐹鐺鐻鐼鐽鐿鑀鑁鑂鑃鑄鑅鑆鑇鑈鑉鑊鑋鑌鑍鑎鑏鑐鑑鑒鑓鑔鑕鑖鑗鑘鑙鑚鑛鑜鑝鑞鑟鑠鑡鑢鑣鑤鑥鑦鑧鑨鑩鑪鑬鑭鑮鑯�鑰鑱鑲鑳鑴鑵鑶鑷鑸鑹鑺鑻鑼鑽鑾鑿钀钁钂钃钄钑钖钘铇铏铓铔铚铦铻锜锠琛琚瑁瑜瑗瑕瑙瑷瑭瑾璜璎璀璁璇璋璞璨璩璐璧瓒璺韪韫韬杌杓杞杈杩枥枇杪杳枘枧杵枨枞枭枋杷杼柰栉柘栊柩枰栌柙枵柚枳柝栀柃枸柢栎柁柽栲栳桠桡桎桢桄桤梃栝桕桦桁桧桀栾桊桉栩梵梏桴桷梓桫棂楮棼椟椠棹�".split(""); +for(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];} +D[233] = "����������������������������������������������������������������锧锳锽镃镈镋镕镚镠镮镴镵長镸镹镺镻镼镽镾門閁閂閃閄閅閆閇閈閉閊開閌閍閎閏閐閑閒間閔閕閖閗閘閙閚閛閜閝閞閟閠閡関閣閤閥閦閧閨閩閪�閫閬閭閮閯閰閱閲閳閴閵閶閷閸閹閺閻閼閽閾閿闀闁闂闃闄闅闆闇闈闉闊闋椤棰椋椁楗棣椐楱椹楠楂楝榄楫榀榘楸椴槌榇榈槎榉楦楣楹榛榧榻榫榭槔榱槁槊槟榕槠榍槿樯槭樗樘橥槲橄樾檠橐橛樵檎橹樽樨橘橼檑檐檩檗檫猷獒殁殂殇殄殒殓殍殚殛殡殪轫轭轱轲轳轵轶轸轷轹轺轼轾辁辂辄辇辋�".split(""); +for(j = 0; j != D[233].length; ++j) if(D[233][j].charCodeAt(0) !== 0xFFFD) { e[D[233][j]] = 59648 + j; d[59648 + j] = D[233][j];} +D[234] = "����������������������������������������������������������������闌闍闎闏闐闑闒闓闔闕闖闗闘闙闚闛關闝闞闟闠闡闢闣闤闥闦闧闬闿阇阓阘阛阞阠阣阤阥阦阧阨阩阫阬阭阯阰阷阸阹阺阾陁陃陊陎陏陑陒陓陖陗�陘陙陚陜陝陞陠陣陥陦陫陭陮陯陰陱陳陸陹険陻陼陽陾陿隀隁隂隃隄隇隉隊辍辎辏辘辚軎戋戗戛戟戢戡戥戤戬臧瓯瓴瓿甏甑甓攴旮旯旰昊昙杲昃昕昀炅曷昝昴昱昶昵耆晟晔晁晏晖晡晗晷暄暌暧暝暾曛曜曦曩贲贳贶贻贽赀赅赆赈赉赇赍赕赙觇觊觋觌觎觏觐觑牮犟牝牦牯牾牿犄犋犍犏犒挈挲掰�".split(""); +for(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];} +D[235] = "����������������������������������������������������������������隌階隑隒隓隕隖隚際隝隞隟隠隡隢隣隤隥隦隨隩險隫隬隭隮隯隱隲隴隵隷隸隺隻隿雂雃雈雊雋雐雑雓雔雖雗雘雙雚雛雜雝雞雟雡離難雤雥雦雧雫�雬雭雮雰雱雲雴雵雸雺電雼雽雿霂霃霅霊霋霌霐霑霒霔霕霗霘霙霚霛霝霟霠搿擘耄毪毳毽毵毹氅氇氆氍氕氘氙氚氡氩氤氪氲攵敕敫牍牒牖爰虢刖肟肜肓肼朊肽肱肫肭肴肷胧胨胩胪胛胂胄胙胍胗朐胝胫胱胴胭脍脎胲胼朕脒豚脶脞脬脘脲腈腌腓腴腙腚腱腠腩腼腽腭腧塍媵膈膂膑滕膣膪臌朦臊膻�".split(""); +for(j = 0; j != D[235].length; ++j) if(D[235][j].charCodeAt(0) !== 0xFFFD) { e[D[235][j]] = 60160 + j; d[60160 + j] = D[235][j];} +D[236] = "����������������������������������������������������������������霡霢霣霤霥霦霧霨霩霫霬霮霯霱霳霴霵霶霷霺霻霼霽霿靀靁靂靃靄靅靆靇靈靉靊靋靌靍靎靏靐靑靔靕靗靘靚靜靝靟靣靤靦靧靨靪靫靬靭靮靯靰靱�靲靵靷靸靹靺靻靽靾靿鞀鞁鞂鞃鞄鞆鞇鞈鞉鞊鞌鞎鞏鞐鞓鞕鞖鞗鞙鞚鞛鞜鞝臁膦欤欷欹歃歆歙飑飒飓飕飙飚殳彀毂觳斐齑斓於旆旄旃旌旎旒旖炀炜炖炝炻烀炷炫炱烨烊焐焓焖焯焱煳煜煨煅煲煊煸煺熘熳熵熨熠燠燔燧燹爝爨灬焘煦熹戾戽扃扈扉礻祀祆祉祛祜祓祚祢祗祠祯祧祺禅禊禚禧禳忑忐�".split(""); +for(j = 0; j != D[236].length; ++j) if(D[236][j].charCodeAt(0) !== 0xFFFD) { e[D[236][j]] = 60416 + j; d[60416 + j] = D[236][j];} +D[237] = "����������������������������������������������������������������鞞鞟鞡鞢鞤鞥鞦鞧鞨鞩鞪鞬鞮鞰鞱鞳鞵鞶鞷鞸鞹鞺鞻鞼鞽鞾鞿韀韁韂韃韄韅韆韇韈韉韊韋韌韍韎韏韐韑韒韓韔韕韖韗韘韙韚韛韜韝韞韟韠韡韢韣�韤韥韨韮韯韰韱韲韴韷韸韹韺韻韼韽韾響頀頁頂頃頄項順頇須頉頊頋頌頍頎怼恝恚恧恁恙恣悫愆愍慝憩憝懋懑戆肀聿沓泶淼矶矸砀砉砗砘砑斫砭砜砝砹砺砻砟砼砥砬砣砩硎硭硖硗砦硐硇硌硪碛碓碚碇碜碡碣碲碹碥磔磙磉磬磲礅磴礓礤礞礴龛黹黻黼盱眄眍盹眇眈眚眢眙眭眦眵眸睐睑睇睃睚睨�".split(""); +for(j = 0; j != D[237].length; ++j) if(D[237][j].charCodeAt(0) !== 0xFFFD) { e[D[237][j]] = 60672 + j; d[60672 + j] = D[237][j];} +D[238] = "����������������������������������������������������������������頏預頑頒頓頔頕頖頗領頙頚頛頜頝頞頟頠頡頢頣頤頥頦頧頨頩頪頫頬頭頮頯頰頱頲頳頴頵頶頷頸頹頺頻頼頽頾頿顀顁顂顃顄顅顆顇顈顉顊顋題額�顎顏顐顑顒顓顔顕顖顗願顙顚顛顜顝類顟顠顡顢顣顤顥顦顧顨顩顪顫顬顭顮睢睥睿瞍睽瞀瞌瞑瞟瞠瞰瞵瞽町畀畎畋畈畛畲畹疃罘罡罟詈罨罴罱罹羁罾盍盥蠲钅钆钇钋钊钌钍钏钐钔钗钕钚钛钜钣钤钫钪钭钬钯钰钲钴钶钷钸钹钺钼钽钿铄铈铉铊铋铌铍铎铐铑铒铕铖铗铙铘铛铞铟铠铢铤铥铧铨铪�".split(""); +for(j = 0; j != D[238].length; ++j) if(D[238][j].charCodeAt(0) !== 0xFFFD) { e[D[238][j]] = 60928 + j; d[60928 + j] = D[238][j];} +D[239] = "����������������������������������������������������������������顯顰顱顲顳顴颋颎颒颕颙颣風颩颪颫颬颭颮颯颰颱颲颳颴颵颶颷颸颹颺颻颼颽颾颿飀飁飂飃飄飅飆飇飈飉飊飋飌飍飏飐飔飖飗飛飜飝飠飡飢飣飤�飥飦飩飪飫飬飭飮飯飰飱飲飳飴飵飶飷飸飹飺飻飼飽飾飿餀餁餂餃餄餅餆餇铩铫铮铯铳铴铵铷铹铼铽铿锃锂锆锇锉锊锍锎锏锒锓锔锕锖锘锛锝锞锟锢锪锫锩锬锱锲锴锶锷锸锼锾锿镂锵镄镅镆镉镌镎镏镒镓镔镖镗镘镙镛镞镟镝镡镢镤镥镦镧镨镩镪镫镬镯镱镲镳锺矧矬雉秕秭秣秫稆嵇稃稂稞稔�".split(""); +for(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];} +D[240] = "����������������������������������������������������������������餈餉養餋餌餎餏餑餒餓餔餕餖餗餘餙餚餛餜餝餞餟餠餡餢餣餤餥餦餧館餩餪餫餬餭餯餰餱餲餳餴餵餶餷餸餹餺餻餼餽餾餿饀饁饂饃饄饅饆饇饈饉�饊饋饌饍饎饏饐饑饒饓饖饗饘饙饚饛饜饝饞饟饠饡饢饤饦饳饸饹饻饾馂馃馉稹稷穑黏馥穰皈皎皓皙皤瓞瓠甬鸠鸢鸨鸩鸪鸫鸬鸲鸱鸶鸸鸷鸹鸺鸾鹁鹂鹄鹆鹇鹈鹉鹋鹌鹎鹑鹕鹗鹚鹛鹜鹞鹣鹦鹧鹨鹩鹪鹫鹬鹱鹭鹳疒疔疖疠疝疬疣疳疴疸痄疱疰痃痂痖痍痣痨痦痤痫痧瘃痱痼痿瘐瘀瘅瘌瘗瘊瘥瘘瘕瘙�".split(""); +for(j = 0; j != D[240].length; ++j) if(D[240][j].charCodeAt(0) !== 0xFFFD) { e[D[240][j]] = 61440 + j; d[61440 + j] = D[240][j];} +D[241] = "����������������������������������������������������������������馌馎馚馛馜馝馞馟馠馡馢馣馤馦馧馩馪馫馬馭馮馯馰馱馲馳馴馵馶馷馸馹馺馻馼馽馾馿駀駁駂駃駄駅駆駇駈駉駊駋駌駍駎駏駐駑駒駓駔駕駖駗駘�駙駚駛駜駝駞駟駠駡駢駣駤駥駦駧駨駩駪駫駬駭駮駯駰駱駲駳駴駵駶駷駸駹瘛瘼瘢瘠癀瘭瘰瘿瘵癃瘾瘳癍癞癔癜癖癫癯翊竦穸穹窀窆窈窕窦窠窬窨窭窳衤衩衲衽衿袂袢裆袷袼裉裢裎裣裥裱褚裼裨裾裰褡褙褓褛褊褴褫褶襁襦襻疋胥皲皴矜耒耔耖耜耠耢耥耦耧耩耨耱耋耵聃聆聍聒聩聱覃顸颀颃�".split(""); +for(j = 0; j != D[241].length; ++j) if(D[241][j].charCodeAt(0) !== 0xFFFD) { e[D[241][j]] = 61696 + j; d[61696 + j] = D[241][j];} +D[242] = "����������������������������������������������������������������駺駻駼駽駾駿騀騁騂騃騄騅騆騇騈騉騊騋騌騍騎騏騐騑騒験騔騕騖騗騘騙騚騛騜騝騞騟騠騡騢騣騤騥騦騧騨騩騪騫騬騭騮騯騰騱騲騳騴騵騶騷騸�騹騺騻騼騽騾騿驀驁驂驃驄驅驆驇驈驉驊驋驌驍驎驏驐驑驒驓驔驕驖驗驘驙颉颌颍颏颔颚颛颞颟颡颢颥颦虍虔虬虮虿虺虼虻蚨蚍蚋蚬蚝蚧蚣蚪蚓蚩蚶蛄蚵蛎蚰蚺蚱蚯蛉蛏蚴蛩蛱蛲蛭蛳蛐蜓蛞蛴蛟蛘蛑蜃蜇蛸蜈蜊蜍蜉蜣蜻蜞蜥蜮蜚蜾蝈蜴蜱蜩蜷蜿螂蜢蝽蝾蝻蝠蝰蝌蝮螋蝓蝣蝼蝤蝙蝥螓螯螨蟒�".split(""); +for(j = 0; j != D[242].length; ++j) if(D[242][j].charCodeAt(0) !== 0xFFFD) { e[D[242][j]] = 61952 + j; d[61952 + j] = D[242][j];} +D[243] = "����������������������������������������������������������������驚驛驜驝驞驟驠驡驢驣驤驥驦驧驨驩驪驫驲骃骉骍骎骔骕骙骦骩骪骫骬骭骮骯骲骳骴骵骹骻骽骾骿髃髄髆髇髈髉髊髍髎髏髐髒體髕髖髗髙髚髛髜�髝髞髠髢髣髤髥髧髨髩髪髬髮髰髱髲髳髴髵髶髷髸髺髼髽髾髿鬀鬁鬂鬄鬅鬆蟆螈螅螭螗螃螫蟥螬螵螳蟋蟓螽蟑蟀蟊蟛蟪蟠蟮蠖蠓蟾蠊蠛蠡蠹蠼缶罂罄罅舐竺竽笈笃笄笕笊笫笏筇笸笪笙笮笱笠笥笤笳笾笞筘筚筅筵筌筝筠筮筻筢筲筱箐箦箧箸箬箝箨箅箪箜箢箫箴篑篁篌篝篚篥篦篪簌篾篼簏簖簋�".split(""); +for(j = 0; j != D[243].length; ++j) if(D[243][j].charCodeAt(0) !== 0xFFFD) { e[D[243][j]] = 62208 + j; d[62208 + j] = D[243][j];} +D[244] = "����������������������������������������������������������������鬇鬉鬊鬋鬌鬍鬎鬐鬑鬒鬔鬕鬖鬗鬘鬙鬚鬛鬜鬝鬞鬠鬡鬢鬤鬥鬦鬧鬨鬩鬪鬫鬬鬭鬮鬰鬱鬳鬴鬵鬶鬷鬸鬹鬺鬽鬾鬿魀魆魊魋魌魎魐魒魓魕魖魗魘魙魚�魛魜魝魞魟魠魡魢魣魤魥魦魧魨魩魪魫魬魭魮魯魰魱魲魳魴魵魶魷魸魹魺魻簟簪簦簸籁籀臾舁舂舄臬衄舡舢舣舭舯舨舫舸舻舳舴舾艄艉艋艏艚艟艨衾袅袈裘裟襞羝羟羧羯羰羲籼敉粑粝粜粞粢粲粼粽糁糇糌糍糈糅糗糨艮暨羿翎翕翥翡翦翩翮翳糸絷綦綮繇纛麸麴赳趄趔趑趱赧赭豇豉酊酐酎酏酤�".split(""); +for(j = 0; j != D[244].length; ++j) if(D[244][j].charCodeAt(0) !== 0xFFFD) { e[D[244][j]] = 62464 + j; d[62464 + j] = D[244][j];} +D[245] = "����������������������������������������������������������������魼魽魾魿鮀鮁鮂鮃鮄鮅鮆鮇鮈鮉鮊鮋鮌鮍鮎鮏鮐鮑鮒鮓鮔鮕鮖鮗鮘鮙鮚鮛鮜鮝鮞鮟鮠鮡鮢鮣鮤鮥鮦鮧鮨鮩鮪鮫鮬鮭鮮鮯鮰鮱鮲鮳鮴鮵鮶鮷鮸鮹鮺�鮻鮼鮽鮾鮿鯀鯁鯂鯃鯄鯅鯆鯇鯈鯉鯊鯋鯌鯍鯎鯏鯐鯑鯒鯓鯔鯕鯖鯗鯘鯙鯚鯛酢酡酰酩酯酽酾酲酴酹醌醅醐醍醑醢醣醪醭醮醯醵醴醺豕鹾趸跫踅蹙蹩趵趿趼趺跄跖跗跚跞跎跏跛跆跬跷跸跣跹跻跤踉跽踔踝踟踬踮踣踯踺蹀踹踵踽踱蹉蹁蹂蹑蹒蹊蹰蹶蹼蹯蹴躅躏躔躐躜躞豸貂貊貅貘貔斛觖觞觚觜�".split(""); +for(j = 0; j != D[245].length; ++j) if(D[245][j].charCodeAt(0) !== 0xFFFD) { e[D[245][j]] = 62720 + j; d[62720 + j] = D[245][j];} +D[246] = "����������������������������������������������������������������鯜鯝鯞鯟鯠鯡鯢鯣鯤鯥鯦鯧鯨鯩鯪鯫鯬鯭鯮鯯鯰鯱鯲鯳鯴鯵鯶鯷鯸鯹鯺鯻鯼鯽鯾鯿鰀鰁鰂鰃鰄鰅鰆鰇鰈鰉鰊鰋鰌鰍鰎鰏鰐鰑鰒鰓鰔鰕鰖鰗鰘鰙鰚�鰛鰜鰝鰞鰟鰠鰡鰢鰣鰤鰥鰦鰧鰨鰩鰪鰫鰬鰭鰮鰯鰰鰱鰲鰳鰴鰵鰶鰷鰸鰹鰺鰻觥觫觯訾謦靓雩雳雯霆霁霈霏霎霪霭霰霾龀龃龅龆龇龈龉龊龌黾鼋鼍隹隼隽雎雒瞿雠銎銮鋈錾鍪鏊鎏鐾鑫鱿鲂鲅鲆鲇鲈稣鲋鲎鲐鲑鲒鲔鲕鲚鲛鲞鲟鲠鲡鲢鲣鲥鲦鲧鲨鲩鲫鲭鲮鲰鲱鲲鲳鲴鲵鲶鲷鲺鲻鲼鲽鳄鳅鳆鳇鳊鳋�".split(""); +for(j = 0; j != D[246].length; ++j) if(D[246][j].charCodeAt(0) !== 0xFFFD) { e[D[246][j]] = 62976 + j; d[62976 + j] = D[246][j];} +D[247] = "����������������������������������������������������������������鰼鰽鰾鰿鱀鱁鱂鱃鱄鱅鱆鱇鱈鱉鱊鱋鱌鱍鱎鱏鱐鱑鱒鱓鱔鱕鱖鱗鱘鱙鱚鱛鱜鱝鱞鱟鱠鱡鱢鱣鱤鱥鱦鱧鱨鱩鱪鱫鱬鱭鱮鱯鱰鱱鱲鱳鱴鱵鱶鱷鱸鱹鱺�鱻鱽鱾鲀鲃鲄鲉鲊鲌鲏鲓鲖鲗鲘鲙鲝鲪鲬鲯鲹鲾鲿鳀鳁鳂鳈鳉鳑鳒鳚鳛鳠鳡鳌鳍鳎鳏鳐鳓鳔鳕鳗鳘鳙鳜鳝鳟鳢靼鞅鞑鞒鞔鞯鞫鞣鞲鞴骱骰骷鹘骶骺骼髁髀髅髂髋髌髑魅魃魇魉魈魍魑飨餍餮饕饔髟髡髦髯髫髻髭髹鬈鬏鬓鬟鬣麽麾縻麂麇麈麋麒鏖麝麟黛黜黝黠黟黢黩黧黥黪黯鼢鼬鼯鼹鼷鼽鼾齄�".split(""); +for(j = 0; j != D[247].length; ++j) if(D[247][j].charCodeAt(0) !== 0xFFFD) { e[D[247][j]] = 63232 + j; d[63232 + j] = D[247][j];} +D[248] = "����������������������������������������������������������������鳣鳤鳥鳦鳧鳨鳩鳪鳫鳬鳭鳮鳯鳰鳱鳲鳳鳴鳵鳶鳷鳸鳹鳺鳻鳼鳽鳾鳿鴀鴁鴂鴃鴄鴅鴆鴇鴈鴉鴊鴋鴌鴍鴎鴏鴐鴑鴒鴓鴔鴕鴖鴗鴘鴙鴚鴛鴜鴝鴞鴟鴠鴡�鴢鴣鴤鴥鴦鴧鴨鴩鴪鴫鴬鴭鴮鴯鴰鴱鴲鴳鴴鴵鴶鴷鴸鴹鴺鴻鴼鴽鴾鴿鵀鵁鵂�".split(""); +for(j = 0; j != D[248].length; ++j) if(D[248][j].charCodeAt(0) !== 0xFFFD) { e[D[248][j]] = 63488 + j; d[63488 + j] = D[248][j];} +D[249] = "����������������������������������������������������������������鵃鵄鵅鵆鵇鵈鵉鵊鵋鵌鵍鵎鵏鵐鵑鵒鵓鵔鵕鵖鵗鵘鵙鵚鵛鵜鵝鵞鵟鵠鵡鵢鵣鵤鵥鵦鵧鵨鵩鵪鵫鵬鵭鵮鵯鵰鵱鵲鵳鵴鵵鵶鵷鵸鵹鵺鵻鵼鵽鵾鵿鶀鶁�鶂鶃鶄鶅鶆鶇鶈鶉鶊鶋鶌鶍鶎鶏鶐鶑鶒鶓鶔鶕鶖鶗鶘鶙鶚鶛鶜鶝鶞鶟鶠鶡鶢�".split(""); +for(j = 0; j != D[249].length; ++j) if(D[249][j].charCodeAt(0) !== 0xFFFD) { e[D[249][j]] = 63744 + j; d[63744 + j] = D[249][j];} +D[250] = "����������������������������������������������������������������鶣鶤鶥鶦鶧鶨鶩鶪鶫鶬鶭鶮鶯鶰鶱鶲鶳鶴鶵鶶鶷鶸鶹鶺鶻鶼鶽鶾鶿鷀鷁鷂鷃鷄鷅鷆鷇鷈鷉鷊鷋鷌鷍鷎鷏鷐鷑鷒鷓鷔鷕鷖鷗鷘鷙鷚鷛鷜鷝鷞鷟鷠鷡�鷢鷣鷤鷥鷦鷧鷨鷩鷪鷫鷬鷭鷮鷯鷰鷱鷲鷳鷴鷵鷶鷷鷸鷹鷺鷻鷼鷽鷾鷿鸀鸁鸂�".split(""); +for(j = 0; j != D[250].length; ++j) if(D[250][j].charCodeAt(0) !== 0xFFFD) { e[D[250][j]] = 64000 + j; d[64000 + j] = D[250][j];} +D[251] = "����������������������������������������������������������������鸃鸄鸅鸆鸇鸈鸉鸊鸋鸌鸍鸎鸏鸐鸑鸒鸓鸔鸕鸖鸗鸘鸙鸚鸛鸜鸝鸞鸤鸧鸮鸰鸴鸻鸼鹀鹍鹐鹒鹓鹔鹖鹙鹝鹟鹠鹡鹢鹥鹮鹯鹲鹴鹵鹶鹷鹸鹹鹺鹻鹼鹽麀�麁麃麄麅麆麉麊麌麍麎麏麐麑麔麕麖麗麘麙麚麛麜麞麠麡麢麣麤麥麧麨麩麪�".split(""); +for(j = 0; j != D[251].length; ++j) if(D[251][j].charCodeAt(0) !== 0xFFFD) { e[D[251][j]] = 64256 + j; d[64256 + j] = D[251][j];} +D[252] = "����������������������������������������������������������������麫麬麭麮麯麰麱麲麳麵麶麷麹麺麼麿黀黁黂黃黅黆黇黈黊黋黌黐黒黓黕黖黗黙黚點黡黣黤黦黨黫黬黭黮黰黱黲黳黴黵黶黷黸黺黽黿鼀鼁鼂鼃鼄鼅�鼆鼇鼈鼉鼊鼌鼏鼑鼒鼔鼕鼖鼘鼚鼛鼜鼝鼞鼟鼡鼣鼤鼥鼦鼧鼨鼩鼪鼫鼭鼮鼰鼱�".split(""); +for(j = 0; j != D[252].length; ++j) if(D[252][j].charCodeAt(0) !== 0xFFFD) { e[D[252][j]] = 64512 + j; d[64512 + j] = D[252][j];} +D[253] = "����������������������������������������������������������������鼲鼳鼴鼵鼶鼸鼺鼼鼿齀齁齂齃齅齆齇齈齉齊齋齌齍齎齏齒齓齔齕齖齗齘齙齚齛齜齝齞齟齠齡齢齣齤齥齦齧齨齩齪齫齬齭齮齯齰齱齲齳齴齵齶齷齸�齹齺齻齼齽齾龁龂龍龎龏龐龑龒龓龔龕龖龗龘龜龝龞龡龢龣龤龥郎凉秊裏隣�".split(""); +for(j = 0; j != D[253].length; ++j) if(D[253][j].charCodeAt(0) !== 0xFFFD) { e[D[253][j]] = 64768 + j; d[64768 + j] = D[253][j];} +D[254] = "����������������������������������������������������������������兀嗀﨎﨏﨑﨓﨔礼﨟蘒﨡﨣﨤﨧﨨﨩��".split(""); +for(j = 0; j != D[254].length; ++j) if(D[254][j].charCodeAt(0) !== 0xFFFD) { e[D[254][j]] = 65024 + j; d[65024 + j] = D[254][j];} +return {"enc": e, "dec": d }; })(); +cptable[51949] = (function(){ var d = [], e = {}, D = [], j; +D[0] = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];} +D[161] = "����������������������������������������������������������������������������������������������������������������������������������������������������������������� 、。·‥…¨〃­―∥\∼‘’“”〔〕〈〉《》「」『』【】±×÷≠≤≥∞∴°′″℃Å¢£¥♂♀∠⊥⌒∂∇≡≒§※☆★○●◎◇◆□■△▲▽▼→←↑↓↔〓≪≫√∽∝∵∫∬∈∋⊆⊇⊂⊃∪∩∧∨¬�".split(""); +for(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];} +D[162] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������⇒⇔∀∃´~ˇ˘˝˚˙¸˛¡¿ː∮∑∏¤℉‰◁◀▷▶♤♠♡♥♧♣⊙◈▣◐◑▒▤▥▨▧▦▩♨☏☎☜☞¶†‡↕↗↙↖↘♭♩♪♬㉿㈜№㏇™㏂㏘℡€®������������������������".split(""); +for(j = 0; j != D[162].length; ++j) if(D[162][j].charCodeAt(0) !== 0xFFFD) { e[D[162][j]] = 41472 + j; d[41472 + j] = D[162][j];} +D[163] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[₩]^_`abcdefghijklmnopqrstuvwxyz{|} ̄�".split(""); +for(j = 0; j != D[163].length; ++j) if(D[163][j].charCodeAt(0) !== 0xFFFD) { e[D[163][j]] = 41728 + j; d[41728 + j] = D[163][j];} +D[164] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������ㄱㄲㄳㄴㄵㄶㄷㄸㄹㄺㄻㄼㄽㄾㄿㅀㅁㅂㅃㅄㅅㅆㅇㅈㅉㅊㅋㅌㅍㅎㅏㅐㅑㅒㅓㅔㅕㅖㅗㅘㅙㅚㅛㅜㅝㅞㅟㅠㅡㅢㅣㅤㅥㅦㅧㅨㅩㅪㅫㅬㅭㅮㅯㅰㅱㅲㅳㅴㅵㅶㅷㅸㅹㅺㅻㅼㅽㅾㅿㆀㆁㆂㆃㆄㆅㆆㆇㆈㆉㆊㆋㆌㆍㆎ�".split(""); +for(j = 0; j != D[164].length; ++j) if(D[164][j].charCodeAt(0) !== 0xFFFD) { e[D[164][j]] = 41984 + j; d[41984 + j] = D[164][j];} +D[165] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������ⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹ�����ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩ�������ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ��������αβγδεζηθικλμνξοπρστυφχψω�������".split(""); +for(j = 0; j != D[165].length; ++j) if(D[165][j].charCodeAt(0) !== 0xFFFD) { e[D[165][j]] = 42240 + j; d[42240 + j] = D[165][j];} +D[166] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������─│┌┐┘└├┬┤┴┼━┃┏┓┛┗┣┳┫┻╋┠┯┨┷┿┝┰┥┸╂┒┑┚┙┖┕┎┍┞┟┡┢┦┧┩┪┭┮┱┲┵┶┹┺┽┾╀╁╃╄╅╆╇╈╉╊���������������������������".split(""); +for(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];} +D[167] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������㎕㎖㎗ℓ㎘㏄㎣㎤㎥㎦㎙㎚㎛㎜㎝㎞㎟㎠㎡㎢㏊㎍㎎㎏㏏㎈㎉㏈㎧㎨㎰㎱㎲㎳㎴㎵㎶㎷㎸㎹㎀㎁㎂㎃㎄㎺㎻㎼㎽㎾㎿㎐㎑㎒㎓㎔Ω㏀㏁㎊㎋㎌㏖㏅㎭㎮㎯㏛㎩㎪㎫㎬㏝㏐㏓㏃㏉㏜㏆����������������".split(""); +for(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];} +D[168] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������ÆЪĦ�IJ�ĿŁØŒºÞŦŊ�㉠㉡㉢㉣㉤㉥㉦㉧㉨㉩㉪㉫㉬㉭㉮㉯㉰㉱㉲㉳㉴㉵㉶㉷㉸㉹㉺㉻ⓐⓑⓒⓓⓔⓕⓖⓗⓘⓙⓚⓛⓜⓝⓞⓟⓠⓡⓢⓣⓤⓥⓦⓧⓨⓩ①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮½⅓⅔¼¾⅛⅜⅝⅞�".split(""); +for(j = 0; j != D[168].length; ++j) if(D[168][j].charCodeAt(0) !== 0xFFFD) { e[D[168][j]] = 43008 + j; d[43008 + j] = D[168][j];} +D[169] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������æđðħıijĸŀłøœßþŧŋʼn㈀㈁㈂㈃㈄㈅㈆㈇㈈㈉㈊㈋㈌㈍㈎㈏㈐㈑㈒㈓㈔㈕㈖㈗㈘㈙㈚㈛⒜⒝⒞⒟⒠⒡⒢⒣⒤⒥⒦⒧⒨⒩⒪⒫⒬⒭⒮⒯⒰⒱⒲⒳⒴⒵⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽⑾⑿⒀⒁⒂¹²³⁴ⁿ₁₂₃₄�".split(""); +for(j = 0; j != D[169].length; ++j) if(D[169][j].charCodeAt(0) !== 0xFFFD) { e[D[169][j]] = 43264 + j; d[43264 + j] = D[169][j];} +D[170] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをん������������".split(""); +for(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];} +D[171] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶ���������".split(""); +for(j = 0; j != D[171].length; ++j) if(D[171][j].charCodeAt(0) !== 0xFFFD) { e[D[171][j]] = 43776 + j; d[43776 + j] = D[171][j];} +D[172] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ���������������абвгдеёжзийклмнопрстуфхцчшщъыьэюя��������������".split(""); +for(j = 0; j != D[172].length; ++j) if(D[172][j].charCodeAt(0) !== 0xFFFD) { e[D[172][j]] = 44032 + j; d[44032 + j] = D[172][j];} +D[176] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������가각간갇갈갉갊감갑값갓갔강갖갗같갚갛개객갠갤갬갭갯갰갱갸갹갼걀걋걍걔걘걜거걱건걷걸걺검겁것겄겅겆겉겊겋게겐겔겜겝겟겠겡겨격겪견겯결겸겹겻겼경곁계곈곌곕곗고곡곤곧골곪곬곯곰곱곳공곶과곽관괄괆�".split(""); +for(j = 0; j != D[176].length; ++j) if(D[176][j].charCodeAt(0) !== 0xFFFD) { e[D[176][j]] = 45056 + j; d[45056 + j] = D[176][j];} +D[177] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������괌괍괏광괘괜괠괩괬괭괴괵괸괼굄굅굇굉교굔굘굡굣구국군굳굴굵굶굻굼굽굿궁궂궈궉권궐궜궝궤궷귀귁귄귈귐귑귓규균귤그극근귿글긁금급긋긍긔기긱긴긷길긺김깁깃깅깆깊까깍깎깐깔깖깜깝깟깠깡깥깨깩깬깰깸�".split(""); +for(j = 0; j != D[177].length; ++j) if(D[177][j].charCodeAt(0) !== 0xFFFD) { e[D[177][j]] = 45312 + j; d[45312 + j] = D[177][j];} +D[178] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������깹깻깼깽꺄꺅꺌꺼꺽꺾껀껄껌껍껏껐껑께껙껜껨껫껭껴껸껼꼇꼈꼍꼐꼬꼭꼰꼲꼴꼼꼽꼿꽁꽂꽃꽈꽉꽐꽜꽝꽤꽥꽹꾀꾄꾈꾐꾑꾕꾜꾸꾹꾼꿀꿇꿈꿉꿋꿍꿎꿔꿜꿨꿩꿰꿱꿴꿸뀀뀁뀄뀌뀐뀔뀜뀝뀨끄끅끈끊끌끎끓끔끕끗끙�".split(""); +for(j = 0; j != D[178].length; ++j) if(D[178][j].charCodeAt(0) !== 0xFFFD) { e[D[178][j]] = 45568 + j; d[45568 + j] = D[178][j];} +D[179] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������끝끼끽낀낄낌낍낏낑나낙낚난낟날낡낢남납낫났낭낮낯낱낳내낵낸낼냄냅냇냈냉냐냑냔냘냠냥너넉넋넌널넒넓넘넙넛넜넝넣네넥넨넬넴넵넷넸넹녀녁년녈념녑녔녕녘녜녠노녹논놀놂놈놉놋농높놓놔놘놜놨뇌뇐뇔뇜뇝�".split(""); +for(j = 0; j != D[179].length; ++j) if(D[179][j].charCodeAt(0) !== 0xFFFD) { e[D[179][j]] = 45824 + j; d[45824 + j] = D[179][j];} +D[180] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������뇟뇨뇩뇬뇰뇹뇻뇽누눅눈눋눌눔눕눗눙눠눴눼뉘뉜뉠뉨뉩뉴뉵뉼늄늅늉느늑는늘늙늚늠늡늣능늦늪늬늰늴니닉닌닐닖님닙닛닝닢다닥닦단닫달닭닮닯닳담답닷닸당닺닻닿대댁댄댈댐댑댓댔댕댜더덕덖던덛덜덞덟덤덥�".split(""); +for(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];} +D[181] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������덧덩덫덮데덱덴델뎀뎁뎃뎄뎅뎌뎐뎔뎠뎡뎨뎬도독돈돋돌돎돐돔돕돗동돛돝돠돤돨돼됐되된될됨됩됫됴두둑둔둘둠둡둣둥둬뒀뒈뒝뒤뒨뒬뒵뒷뒹듀듄듈듐듕드득든듣들듦듬듭듯등듸디딕딘딛딜딤딥딧딨딩딪따딱딴딸�".split(""); +for(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];} +D[182] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������땀땁땃땄땅땋때땍땐땔땜땝땟땠땡떠떡떤떨떪떫떰떱떳떴떵떻떼떽뗀뗄뗌뗍뗏뗐뗑뗘뗬또똑똔똘똥똬똴뙈뙤뙨뚜뚝뚠뚤뚫뚬뚱뛔뛰뛴뛸뜀뜁뜅뜨뜩뜬뜯뜰뜸뜹뜻띄띈띌띔띕띠띤띨띰띱띳띵라락란랄람랍랏랐랑랒랖랗�".split(""); +for(j = 0; j != D[182].length; ++j) if(D[182][j].charCodeAt(0) !== 0xFFFD) { e[D[182][j]] = 46592 + j; d[46592 + j] = D[182][j];} +D[183] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������래랙랜랠램랩랫랬랭랴략랸럇량러럭런럴럼럽럿렀렁렇레렉렌렐렘렙렛렝려력련렬렴렵렷렸령례롄롑롓로록론롤롬롭롯롱롸롼뢍뢨뢰뢴뢸룀룁룃룅료룐룔룝룟룡루룩룬룰룸룹룻룽뤄뤘뤠뤼뤽륀륄륌륏륑류륙륜률륨륩�".split(""); +for(j = 0; j != D[183].length; ++j) if(D[183][j].charCodeAt(0) !== 0xFFFD) { e[D[183][j]] = 46848 + j; d[46848 + j] = D[183][j];} +D[184] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������륫륭르륵른를름릅릇릉릊릍릎리릭린릴림립릿링마막만많맏말맑맒맘맙맛망맞맡맣매맥맨맬맴맵맷맸맹맺먀먁먈먕머먹먼멀멂멈멉멋멍멎멓메멕멘멜멤멥멧멨멩며멱면멸몃몄명몇몌모목몫몬몰몲몸몹못몽뫄뫈뫘뫙뫼�".split(""); +for(j = 0; j != D[184].length; ++j) if(D[184][j].charCodeAt(0) !== 0xFFFD) { e[D[184][j]] = 47104 + j; d[47104 + j] = D[184][j];} +D[185] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������묀묄묍묏묑묘묜묠묩묫무묵묶문묻물묽묾뭄뭅뭇뭉뭍뭏뭐뭔뭘뭡뭣뭬뮈뮌뮐뮤뮨뮬뮴뮷므믄믈믐믓미믹민믿밀밂밈밉밋밌밍및밑바박밖밗반받발밝밞밟밤밥밧방밭배백밴밸뱀뱁뱃뱄뱅뱉뱌뱍뱐뱝버벅번벋벌벎범법벗�".split(""); +for(j = 0; j != D[185].length; ++j) if(D[185][j].charCodeAt(0) !== 0xFFFD) { e[D[185][j]] = 47360 + j; d[47360 + j] = D[185][j];} +D[186] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������벙벚베벡벤벧벨벰벱벳벴벵벼벽변별볍볏볐병볕볘볜보복볶본볼봄봅봇봉봐봔봤봬뵀뵈뵉뵌뵐뵘뵙뵤뵨부북분붇불붉붊붐붑붓붕붙붚붜붤붰붸뷔뷕뷘뷜뷩뷰뷴뷸븀븃븅브븍븐블븜븝븟비빅빈빌빎빔빕빗빙빚빛빠빡빤�".split(""); +for(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];} +D[187] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������빨빪빰빱빳빴빵빻빼빽뺀뺄뺌뺍뺏뺐뺑뺘뺙뺨뻐뻑뻔뻗뻘뻠뻣뻤뻥뻬뼁뼈뼉뼘뼙뼛뼜뼝뽀뽁뽄뽈뽐뽑뽕뾔뾰뿅뿌뿍뿐뿔뿜뿟뿡쀼쁑쁘쁜쁠쁨쁩삐삑삔삘삠삡삣삥사삭삯산삳살삵삶삼삽삿샀상샅새색샌샐샘샙샛샜생샤�".split(""); +for(j = 0; j != D[187].length; ++j) if(D[187][j].charCodeAt(0) !== 0xFFFD) { e[D[187][j]] = 47872 + j; d[47872 + j] = D[187][j];} +D[188] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������샥샨샬샴샵샷샹섀섄섈섐섕서석섞섟선섣설섦섧섬섭섯섰성섶세섹센셀셈셉셋셌셍셔셕션셜셤셥셧셨셩셰셴셸솅소속솎손솔솖솜솝솟송솥솨솩솬솰솽쇄쇈쇌쇔쇗쇘쇠쇤쇨쇰쇱쇳쇼쇽숀숄숌숍숏숑수숙순숟술숨숩숫숭�".split(""); +for(j = 0; j != D[188].length; ++j) if(D[188][j].charCodeAt(0) !== 0xFFFD) { e[D[188][j]] = 48128 + j; d[48128 + j] = D[188][j];} +D[189] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������숯숱숲숴쉈쉐쉑쉔쉘쉠쉥쉬쉭쉰쉴쉼쉽쉿슁슈슉슐슘슛슝스슥슨슬슭슴습슷승시식신싣실싫심십싯싱싶싸싹싻싼쌀쌈쌉쌌쌍쌓쌔쌕쌘쌜쌤쌥쌨쌩썅써썩썬썰썲썸썹썼썽쎄쎈쎌쏀쏘쏙쏜쏟쏠쏢쏨쏩쏭쏴쏵쏸쐈쐐쐤쐬쐰�".split(""); +for(j = 0; j != D[189].length; ++j) if(D[189][j].charCodeAt(0) !== 0xFFFD) { e[D[189][j]] = 48384 + j; d[48384 + j] = D[189][j];} +D[190] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������쐴쐼쐽쑈쑤쑥쑨쑬쑴쑵쑹쒀쒔쒜쒸쒼쓩쓰쓱쓴쓸쓺쓿씀씁씌씐씔씜씨씩씬씰씸씹씻씽아악안앉않알앍앎앓암압앗았앙앝앞애액앤앨앰앱앳앴앵야약얀얄얇얌얍얏양얕얗얘얜얠얩어억언얹얻얼얽얾엄업없엇었엉엊엌엎�".split(""); +for(j = 0; j != D[190].length; ++j) if(D[190][j].charCodeAt(0) !== 0xFFFD) { e[D[190][j]] = 48640 + j; d[48640 + j] = D[190][j];} +D[191] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������에엑엔엘엠엡엣엥여역엮연열엶엷염엽엾엿였영옅옆옇예옌옐옘옙옛옜오옥온올옭옮옰옳옴옵옷옹옻와왁완왈왐왑왓왔왕왜왝왠왬왯왱외왹왼욀욈욉욋욍요욕욘욜욤욥욧용우욱운울욹욺움웁웃웅워웍원월웜웝웠웡웨�".split(""); +for(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];} +D[192] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������웩웬웰웸웹웽위윅윈윌윔윕윗윙유육윤율윰윱윳융윷으윽은을읊음읍읏응읒읓읔읕읖읗의읜읠읨읫이익인일읽읾잃임입잇있잉잊잎자작잔잖잗잘잚잠잡잣잤장잦재잭잰잴잼잽잿쟀쟁쟈쟉쟌쟎쟐쟘쟝쟤쟨쟬저적전절젊�".split(""); +for(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];} +D[193] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������점접젓정젖제젝젠젤젬젭젯젱져젼졀졈졉졌졍졔조족존졸졺좀좁좃종좆좇좋좌좍좔좝좟좡좨좼좽죄죈죌죔죕죗죙죠죡죤죵주죽준줄줅줆줌줍줏중줘줬줴쥐쥑쥔쥘쥠쥡쥣쥬쥰쥴쥼즈즉즌즐즘즙즛증지직진짇질짊짐집짓�".split(""); +for(j = 0; j != D[193].length; ++j) if(D[193][j].charCodeAt(0) !== 0xFFFD) { e[D[193][j]] = 49408 + j; d[49408 + j] = D[193][j];} +D[194] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������징짖짙짚짜짝짠짢짤짧짬짭짯짰짱째짹짼쨀쨈쨉쨋쨌쨍쨔쨘쨩쩌쩍쩐쩔쩜쩝쩟쩠쩡쩨쩽쪄쪘쪼쪽쫀쫄쫌쫍쫏쫑쫓쫘쫙쫠쫬쫴쬈쬐쬔쬘쬠쬡쭁쭈쭉쭌쭐쭘쭙쭝쭤쭸쭹쮜쮸쯔쯤쯧쯩찌찍찐찔찜찝찡찢찧차착찬찮찰참찹찻�".split(""); +for(j = 0; j != D[194].length; ++j) if(D[194][j].charCodeAt(0) !== 0xFFFD) { e[D[194][j]] = 49664 + j; d[49664 + j] = D[194][j];} +D[195] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������찼창찾채책챈챌챔챕챗챘챙챠챤챦챨챰챵처척천철첨첩첫첬청체첵첸첼쳄쳅쳇쳉쳐쳔쳤쳬쳰촁초촉촌촐촘촙촛총촤촨촬촹최쵠쵤쵬쵭쵯쵱쵸춈추축춘출춤춥춧충춰췄췌췐취췬췰췸췹췻췽츄츈츌츔츙츠측츤츨츰츱츳층�".split(""); +for(j = 0; j != D[195].length; ++j) if(D[195][j].charCodeAt(0) !== 0xFFFD) { e[D[195][j]] = 49920 + j; d[49920 + j] = D[195][j];} +D[196] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������치칙친칟칠칡침칩칫칭카칵칸칼캄캅캇캉캐캑캔캘캠캡캣캤캥캬캭컁커컥컨컫컬컴컵컷컸컹케켁켄켈켐켑켓켕켜켠켤켬켭켯켰켱켸코콕콘콜콤콥콧콩콰콱콴콸쾀쾅쾌쾡쾨쾰쿄쿠쿡쿤쿨쿰쿱쿳쿵쿼퀀퀄퀑퀘퀭퀴퀵퀸퀼�".split(""); +for(j = 0; j != D[196].length; ++j) if(D[196][j].charCodeAt(0) !== 0xFFFD) { e[D[196][j]] = 50176 + j; d[50176 + j] = D[196][j];} +D[197] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������큄큅큇큉큐큔큘큠크큭큰클큼큽킁키킥킨킬킴킵킷킹타탁탄탈탉탐탑탓탔탕태택탠탤탬탭탯탰탱탸턍터턱턴털턺텀텁텃텄텅테텍텐텔템텝텟텡텨텬텼톄톈토톡톤톨톰톱톳통톺톼퇀퇘퇴퇸툇툉툐투툭툰툴툼툽툿퉁퉈퉜�".split(""); +for(j = 0; j != D[197].length; ++j) if(D[197][j].charCodeAt(0) !== 0xFFFD) { e[D[197][j]] = 50432 + j; d[50432 + j] = D[197][j];} +D[198] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������퉤튀튁튄튈튐튑튕튜튠튤튬튱트특튼튿틀틂틈틉틋틔틘틜틤틥티틱틴틸팀팁팃팅파팍팎판팔팖팜팝팟팠팡팥패팩팬팰팸팹팻팼팽퍄퍅퍼퍽펀펄펌펍펏펐펑페펙펜펠펨펩펫펭펴편펼폄폅폈평폐폘폡폣포폭폰폴폼폽폿퐁�".split(""); +for(j = 0; j != D[198].length; ++j) if(D[198][j].charCodeAt(0) !== 0xFFFD) { e[D[198][j]] = 50688 + j; d[50688 + j] = D[198][j];} +D[199] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������퐈퐝푀푄표푠푤푭푯푸푹푼푿풀풂품풉풋풍풔풩퓌퓐퓔퓜퓟퓨퓬퓰퓸퓻퓽프픈플픔픕픗피픽핀필핌핍핏핑하학한할핥함합핫항해핵핸핼햄햅햇했행햐향허헉헌헐헒험헙헛헝헤헥헨헬헴헵헷헹혀혁현혈혐협혓혔형혜혠�".split(""); +for(j = 0; j != D[199].length; ++j) if(D[199][j].charCodeAt(0) !== 0xFFFD) { e[D[199][j]] = 50944 + j; d[50944 + j] = D[199][j];} +D[200] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������혤혭호혹혼홀홅홈홉홋홍홑화확환활홧황홰홱홴횃횅회획횐횔횝횟횡효횬횰횹횻후훅훈훌훑훔훗훙훠훤훨훰훵훼훽휀휄휑휘휙휜휠휨휩휫휭휴휵휸휼흄흇흉흐흑흔흖흗흘흙흠흡흣흥흩희흰흴흼흽힁히힉힌힐힘힙힛힝�".split(""); +for(j = 0; j != D[200].length; ++j) if(D[200][j].charCodeAt(0) !== 0xFFFD) { e[D[200][j]] = 51200 + j; d[51200 + j] = D[200][j];} +D[202] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������伽佳假價加可呵哥嘉嫁家暇架枷柯歌珂痂稼苛茄街袈訶賈跏軻迦駕刻却各恪慤殼珏脚覺角閣侃刊墾奸姦干幹懇揀杆柬桿澗癎看磵稈竿簡肝艮艱諫間乫喝曷渴碣竭葛褐蝎鞨勘坎堪嵌感憾戡敢柑橄減甘疳監瞰紺邯鑑鑒龕�".split(""); +for(j = 0; j != D[202].length; ++j) if(D[202][j].charCodeAt(0) !== 0xFFFD) { e[D[202][j]] = 51712 + j; d[51712 + j] = D[202][j];} +D[203] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������匣岬甲胛鉀閘剛堈姜岡崗康强彊慷江畺疆糠絳綱羌腔舡薑襁講鋼降鱇介价個凱塏愷愾慨改槪漑疥皆盖箇芥蓋豈鎧開喀客坑更粳羹醵倨去居巨拒据據擧渠炬祛距踞車遽鉅鋸乾件健巾建愆楗腱虔蹇鍵騫乞傑杰桀儉劍劒檢�".split(""); +for(j = 0; j != D[203].length; ++j) if(D[203][j].charCodeAt(0) !== 0xFFFD) { e[D[203][j]] = 51968 + j; d[51968 + j] = D[203][j];} +D[204] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������瞼鈐黔劫怯迲偈憩揭擊格檄激膈覡隔堅牽犬甄絹繭肩見譴遣鵑抉決潔結缺訣兼慊箝謙鉗鎌京俓倞傾儆勁勍卿坰境庚徑慶憬擎敬景暻更梗涇炅烱璟璥瓊痙硬磬竟競絅經耕耿脛莖警輕逕鏡頃頸驚鯨係啓堺契季屆悸戒桂械�".split(""); +for(j = 0; j != D[204].length; ++j) if(D[204][j].charCodeAt(0) !== 0xFFFD) { e[D[204][j]] = 52224 + j; d[52224 + j] = D[204][j];} +D[205] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������棨溪界癸磎稽系繫繼計誡谿階鷄古叩告呱固姑孤尻庫拷攷故敲暠枯槁沽痼皐睾稿羔考股膏苦苽菰藁蠱袴誥賈辜錮雇顧高鼓哭斛曲梏穀谷鵠困坤崑昆梱棍滾琨袞鯤汨滑骨供公共功孔工恐恭拱控攻珙空蚣貢鞏串寡戈果瓜�".split(""); +for(j = 0; j != D[205].length; ++j) if(D[205][j].charCodeAt(0) !== 0xFFFD) { e[D[205][j]] = 52480 + j; d[52480 + j] = D[205][j];} +D[206] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������科菓誇課跨過鍋顆廓槨藿郭串冠官寬慣棺款灌琯瓘管罐菅觀貫關館刮恝括适侊光匡壙廣曠洸炚狂珖筐胱鑛卦掛罫乖傀塊壞怪愧拐槐魁宏紘肱轟交僑咬喬嬌嶠巧攪敎校橋狡皎矯絞翹膠蕎蛟較轎郊餃驕鮫丘久九仇俱具勾�".split(""); +for(j = 0; j != D[206].length; ++j) if(D[206][j].charCodeAt(0) !== 0xFFFD) { e[D[206][j]] = 52736 + j; d[52736 + j] = D[206][j];} +D[207] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������區口句咎嘔坵垢寇嶇廐懼拘救枸柩構歐毆毬求溝灸狗玖球瞿矩究絿耉臼舅舊苟衢謳購軀逑邱鉤銶駒驅鳩鷗龜國局菊鞠鞫麴君窘群裙軍郡堀屈掘窟宮弓穹窮芎躬倦券勸卷圈拳捲權淃眷厥獗蕨蹶闕机櫃潰詭軌饋句晷歸貴�".split(""); +for(j = 0; j != D[207].length; ++j) if(D[207][j].charCodeAt(0) !== 0xFFFD) { e[D[207][j]] = 52992 + j; d[52992 + j] = D[207][j];} +D[208] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������鬼龜叫圭奎揆槻珪硅窺竅糾葵規赳逵閨勻均畇筠菌鈞龜橘克剋劇戟棘極隙僅劤勤懃斤根槿瑾筋芹菫覲謹近饉契今妗擒昑檎琴禁禽芩衾衿襟金錦伋及急扱汲級給亘兢矜肯企伎其冀嗜器圻基埼夔奇妓寄岐崎己幾忌技旗旣�".split(""); +for(j = 0; j != D[208].length; ++j) if(D[208][j].charCodeAt(0) !== 0xFFFD) { e[D[208][j]] = 53248 + j; d[53248 + j] = D[208][j];} +D[209] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������朞期杞棋棄機欺氣汽沂淇玘琦琪璂璣畸畿碁磯祁祇祈祺箕紀綺羈耆耭肌記譏豈起錡錤飢饑騎騏驥麒緊佶吉拮桔金喫儺喇奈娜懦懶拏拿癩羅蘿螺裸邏那樂洛烙珞落諾酪駱亂卵暖欄煖爛蘭難鸞捏捺南嵐枏楠湳濫男藍襤拉�".split(""); +for(j = 0; j != D[209].length; ++j) if(D[209][j].charCodeAt(0) !== 0xFFFD) { e[D[209][j]] = 53504 + j; d[53504 + j] = D[209][j];} +D[210] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������納臘蠟衲囊娘廊朗浪狼郎乃來內奈柰耐冷女年撚秊念恬拈捻寧寗努勞奴弩怒擄櫓爐瑙盧老蘆虜路露駑魯鷺碌祿綠菉錄鹿論壟弄濃籠聾膿農惱牢磊腦賂雷尿壘屢樓淚漏累縷陋嫩訥杻紐勒肋凜凌稜綾能菱陵尼泥匿溺多茶�".split(""); +for(j = 0; j != D[210].length; ++j) if(D[210][j].charCodeAt(0) !== 0xFFFD) { e[D[210][j]] = 53760 + j; d[53760 + j] = D[210][j];} +D[211] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������丹亶但單團壇彖斷旦檀段湍短端簞緞蛋袒鄲鍛撻澾獺疸達啖坍憺擔曇淡湛潭澹痰聃膽蕁覃談譚錟沓畓答踏遝唐堂塘幢戇撞棠當糖螳黨代垈坮大對岱帶待戴擡玳臺袋貸隊黛宅德悳倒刀到圖堵塗導屠島嶋度徒悼挑掉搗桃�".split(""); +for(j = 0; j != D[211].length; ++j) if(D[211][j].charCodeAt(0) !== 0xFFFD) { e[D[211][j]] = 54016 + j; d[54016 + j] = D[211][j];} +D[212] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������棹櫂淘渡滔濤燾盜睹禱稻萄覩賭跳蹈逃途道都鍍陶韜毒瀆牘犢獨督禿篤纛讀墩惇敦旽暾沌焞燉豚頓乭突仝冬凍動同憧東桐棟洞潼疼瞳童胴董銅兜斗杜枓痘竇荳讀豆逗頭屯臀芚遁遯鈍得嶝橙燈登等藤謄鄧騰喇懶拏癩羅�".split(""); +for(j = 0; j != D[212].length; ++j) if(D[212][j].charCodeAt(0) !== 0xFFFD) { e[D[212][j]] = 54272 + j; d[54272 + j] = D[212][j];} +D[213] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������蘿螺裸邏樂洛烙珞絡落諾酪駱丹亂卵欄欒瀾爛蘭鸞剌辣嵐擥攬欖濫籃纜藍襤覽拉臘蠟廊朗浪狼琅瑯螂郞來崍徠萊冷掠略亮倆兩凉梁樑粮粱糧良諒輛量侶儷勵呂廬慮戾旅櫚濾礪藜蠣閭驢驪麗黎力曆歷瀝礫轢靂憐戀攣漣�".split(""); +for(j = 0; j != D[213].length; ++j) if(D[213][j].charCodeAt(0) !== 0xFFFD) { e[D[213][j]] = 54528 + j; d[54528 + j] = D[213][j];} +D[214] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������煉璉練聯蓮輦連鍊冽列劣洌烈裂廉斂殮濂簾獵令伶囹寧岺嶺怜玲笭羚翎聆逞鈴零靈領齡例澧禮醴隷勞怒撈擄櫓潞瀘爐盧老蘆虜路輅露魯鷺鹵碌祿綠菉錄鹿麓論壟弄朧瀧瓏籠聾儡瀨牢磊賂賚賴雷了僚寮廖料燎療瞭聊蓼�".split(""); +for(j = 0; j != D[214].length; ++j) if(D[214][j].charCodeAt(0) !== 0xFFFD) { e[D[214][j]] = 54784 + j; d[54784 + j] = D[214][j];} +D[215] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������遼鬧龍壘婁屢樓淚漏瘻累縷蔞褸鏤陋劉旒柳榴流溜瀏琉瑠留瘤硫謬類六戮陸侖倫崙淪綸輪律慄栗率隆勒肋凜凌楞稜綾菱陵俚利厘吏唎履悧李梨浬犁狸理璃異痢籬罹羸莉裏裡里釐離鯉吝潾燐璘藺躪隣鱗麟林淋琳臨霖砬�".split(""); +for(j = 0; j != D[215].length; ++j) if(D[215][j].charCodeAt(0) !== 0xFFFD) { e[D[215][j]] = 55040 + j; d[55040 + j] = D[215][j];} +D[216] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������立笠粒摩瑪痲碼磨馬魔麻寞幕漠膜莫邈万卍娩巒彎慢挽晩曼滿漫灣瞞萬蔓蠻輓饅鰻唜抹末沫茉襪靺亡妄忘忙望網罔芒茫莽輞邙埋妹媒寐昧枚梅每煤罵買賣邁魅脈貊陌驀麥孟氓猛盲盟萌冪覓免冕勉棉沔眄眠綿緬面麵滅�".split(""); +for(j = 0; j != D[216].length; ++j) if(D[216][j].charCodeAt(0) !== 0xFFFD) { e[D[216][j]] = 55296 + j; d[55296 + j] = D[216][j];} +D[217] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������蔑冥名命明暝椧溟皿瞑茗蓂螟酩銘鳴袂侮冒募姆帽慕摸摹暮某模母毛牟牡瑁眸矛耗芼茅謀謨貌木沐牧目睦穆鶩歿沒夢朦蒙卯墓妙廟描昴杳渺猫竗苗錨務巫憮懋戊拇撫无楙武毋無珷畝繆舞茂蕪誣貿霧鵡墨默們刎吻問文�".split(""); +for(j = 0; j != D[217].length; ++j) if(D[217][j].charCodeAt(0) !== 0xFFFD) { e[D[217][j]] = 55552 + j; d[55552 + j] = D[217][j];} +D[218] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������汶紊紋聞蚊門雯勿沕物味媚尾嵋彌微未梶楣渼湄眉米美薇謎迷靡黴岷悶愍憫敏旻旼民泯玟珉緡閔密蜜謐剝博拍搏撲朴樸泊珀璞箔粕縛膊舶薄迫雹駁伴半反叛拌搬攀斑槃泮潘班畔瘢盤盼磐磻礬絆般蟠返頒飯勃拔撥渤潑�".split(""); +for(j = 0; j != D[218].length; ++j) if(D[218][j].charCodeAt(0) !== 0xFFFD) { e[D[218][j]] = 55808 + j; d[55808 + j] = D[218][j];} +D[219] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������發跋醱鉢髮魃倣傍坊妨尨幇彷房放方旁昉枋榜滂磅紡肪膀舫芳蒡蚌訪謗邦防龐倍俳北培徘拜排杯湃焙盃背胚裴裵褙賠輩配陪伯佰帛柏栢白百魄幡樊煩燔番磻繁蕃藩飜伐筏罰閥凡帆梵氾汎泛犯範范法琺僻劈壁擘檗璧癖�".split(""); +for(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];} +D[220] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������碧蘗闢霹便卞弁變辨辯邊別瞥鱉鼈丙倂兵屛幷昞昺柄棅炳甁病秉竝輧餠騈保堡報寶普步洑湺潽珤甫菩補褓譜輔伏僕匐卜宓復服福腹茯蔔複覆輹輻馥鰒本乶俸奉封峯峰捧棒烽熢琫縫蓬蜂逢鋒鳳不付俯傅剖副否咐埠夫婦�".split(""); +for(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];} +D[221] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������孚孵富府復扶敷斧浮溥父符簿缶腐腑膚艀芙莩訃負賦賻赴趺部釜阜附駙鳧北分吩噴墳奔奮忿憤扮昐汾焚盆粉糞紛芬賁雰不佛弗彿拂崩朋棚硼繃鵬丕備匕匪卑妃婢庇悲憊扉批斐枇榧比毖毗毘沸泌琵痺砒碑秕秘粃緋翡肥�".split(""); +for(j = 0; j != D[221].length; ++j) if(D[221][j].charCodeAt(0) !== 0xFFFD) { e[D[221][j]] = 56576 + j; d[56576 + j] = D[221][j];} +D[222] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������脾臂菲蜚裨誹譬費鄙非飛鼻嚬嬪彬斌檳殯浜濱瀕牝玭貧賓頻憑氷聘騁乍事些仕伺似使俟僿史司唆嗣四士奢娑寫寺射巳師徙思捨斜斯柶査梭死沙泗渣瀉獅砂社祀祠私篩紗絲肆舍莎蓑蛇裟詐詞謝賜赦辭邪飼駟麝削數朔索�".split(""); +for(j = 0; j != D[222].length; ++j) if(D[222][j].charCodeAt(0) !== 0xFFFD) { e[D[222][j]] = 56832 + j; d[56832 + j] = D[222][j];} +D[223] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������傘刪山散汕珊産疝算蒜酸霰乷撒殺煞薩三參杉森渗芟蔘衫揷澁鈒颯上傷像償商喪嘗孀尙峠常床庠廂想桑橡湘爽牀狀相祥箱翔裳觴詳象賞霜塞璽賽嗇塞穡索色牲生甥省笙墅壻嶼序庶徐恕抒捿敍暑曙書栖棲犀瑞筮絮緖署�".split(""); +for(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];} +D[224] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������胥舒薯西誓逝鋤黍鼠夕奭席惜昔晳析汐淅潟石碩蓆釋錫仙僊先善嬋宣扇敾旋渲煽琁瑄璇璿癬禪線繕羨腺膳船蘚蟬詵跣選銑鐥饍鮮卨屑楔泄洩渫舌薛褻設說雪齧剡暹殲纖蟾贍閃陝攝涉燮葉城姓宬性惺成星晟猩珹盛省筬�".split(""); +for(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];} +D[225] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������聖聲腥誠醒世勢歲洗稅笹細說貰召嘯塑宵小少巢所掃搔昭梳沼消溯瀟炤燒甦疏疎瘙笑篠簫素紹蔬蕭蘇訴逍遡邵銷韶騷俗屬束涑粟續謖贖速孫巽損蓀遜飡率宋悚松淞訟誦送頌刷殺灑碎鎖衰釗修受嗽囚垂壽嫂守岫峀帥愁�".split(""); +for(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];} +D[226] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������戍手授搜收數樹殊水洙漱燧狩獸琇璲瘦睡秀穗竪粹綏綬繡羞脩茱蒐蓚藪袖誰讐輸遂邃酬銖銹隋隧隨雖需須首髓鬚叔塾夙孰宿淑潚熟琡璹肅菽巡徇循恂旬栒楯橓殉洵淳珣盾瞬筍純脣舜荀蓴蕣詢諄醇錞順馴戌術述鉥崇崧�".split(""); +for(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];} +D[227] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������嵩瑟膝蝨濕拾習褶襲丞乘僧勝升承昇繩蠅陞侍匙嘶始媤尸屎屍市弑恃施是時枾柴猜矢示翅蒔蓍視試詩諡豕豺埴寔式息拭植殖湜熄篒蝕識軾食飾伸侁信呻娠宸愼新晨燼申神紳腎臣莘薪藎蜃訊身辛辰迅失室實悉審尋心沁�".split(""); +for(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];} +D[228] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������沈深瀋甚芯諶什十拾雙氏亞俄兒啞娥峨我牙芽莪蛾衙訝阿雅餓鴉鵝堊岳嶽幄惡愕握樂渥鄂鍔顎鰐齷安岸按晏案眼雁鞍顔鮟斡謁軋閼唵岩巖庵暗癌菴闇壓押狎鴨仰央怏昻殃秧鴦厓哀埃崖愛曖涯碍艾隘靄厄扼掖液縊腋額�".split(""); +for(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];} +D[229] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������櫻罌鶯鸚也倻冶夜惹揶椰爺耶若野弱掠略約若葯蒻藥躍亮佯兩凉壤孃恙揚攘敭暘梁楊樣洋瀁煬痒瘍禳穰糧羊良襄諒讓釀陽量養圄御於漁瘀禦語馭魚齬億憶抑檍臆偃堰彦焉言諺孼蘖俺儼嚴奄掩淹嶪業円予余勵呂女如廬�".split(""); +for(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];} +D[230] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������旅歟汝濾璵礖礪與艅茹輿轝閭餘驪麗黎亦力域役易曆歷疫繹譯轢逆驛嚥堧姸娟宴年延憐戀捐挻撚椽沇沿涎涓淵演漣烟然煙煉燃燕璉硏硯秊筵緣練縯聯衍軟輦蓮連鉛鍊鳶列劣咽悅涅烈熱裂說閱厭廉念捻染殮炎焰琰艶苒�".split(""); +for(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];} +D[231] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������簾閻髥鹽曄獵燁葉令囹塋寧嶺嶸影怜映暎楹榮永泳渶潁濚瀛瀯煐營獰玲瑛瑩瓔盈穎纓羚聆英詠迎鈴鍈零霙靈領乂倪例刈叡曳汭濊猊睿穢芮藝蘂禮裔詣譽豫醴銳隸霓預五伍俉傲午吾吳嗚塢墺奧娛寤悟惡懊敖旿晤梧汚澳�".split(""); +for(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];} +D[232] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������烏熬獒筽蜈誤鰲鼇屋沃獄玉鈺溫瑥瘟穩縕蘊兀壅擁瓮甕癰翁邕雍饔渦瓦窩窪臥蛙蝸訛婉完宛梡椀浣玩琓琬碗緩翫脘腕莞豌阮頑曰往旺枉汪王倭娃歪矮外嵬巍猥畏了僚僥凹堯夭妖姚寥寮尿嶢拗搖撓擾料曜樂橈燎燿瑤療�".split(""); +for(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];} +D[233] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������窈窯繇繞耀腰蓼蟯要謠遙遼邀饒慾欲浴縟褥辱俑傭冗勇埇墉容庸慂榕涌湧溶熔瑢用甬聳茸蓉踊鎔鏞龍于佑偶優又友右宇寓尤愚憂旴牛玗瑀盂祐禑禹紆羽芋藕虞迂遇郵釪隅雨雩勖彧旭昱栯煜稶郁頊云暈橒殞澐熉耘芸蕓�".split(""); +for(j = 0; j != D[233].length; ++j) if(D[233][j].charCodeAt(0) !== 0xFFFD) { e[D[233][j]] = 59648 + j; d[59648 + j] = D[233][j];} +D[234] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������運隕雲韻蔚鬱亐熊雄元原員圓園垣媛嫄寃怨愿援沅洹湲源爰猿瑗苑袁轅遠阮院願鴛月越鉞位偉僞危圍委威尉慰暐渭爲瑋緯胃萎葦蔿蝟衛褘謂違韋魏乳侑儒兪劉唯喩孺宥幼幽庾悠惟愈愉揄攸有杻柔柚柳楡楢油洧流游溜�".split(""); +for(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];} +D[235] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������濡猶猷琉瑜由留癒硫紐維臾萸裕誘諛諭踰蹂遊逾遺酉釉鍮類六堉戮毓肉育陸倫允奫尹崙淪潤玧胤贇輪鈗閏律慄栗率聿戎瀜絨融隆垠恩慇殷誾銀隱乙吟淫蔭陰音飮揖泣邑凝應膺鷹依倚儀宜意懿擬椅毅疑矣義艤薏蟻衣誼�".split(""); +for(j = 0; j != D[235].length; ++j) if(D[235][j].charCodeAt(0) !== 0xFFFD) { e[D[235][j]] = 60160 + j; d[60160 + j] = D[235][j];} +D[236] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������議醫二以伊利吏夷姨履已弛彛怡易李梨泥爾珥理異痍痢移罹而耳肄苡荑裏裡貽貳邇里離飴餌匿溺瀷益翊翌翼謚人仁刃印吝咽因姻寅引忍湮燐璘絪茵藺蚓認隣靭靷鱗麟一佚佾壹日溢逸鎰馹任壬妊姙恁林淋稔臨荏賃入卄�".split(""); +for(j = 0; j != D[236].length; ++j) if(D[236][j].charCodeAt(0) !== 0xFFFD) { e[D[236][j]] = 60416 + j; d[60416 + j] = D[236][j];} +D[237] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������立笠粒仍剩孕芿仔刺咨姉姿子字孜恣慈滋炙煮玆瓷疵磁紫者自茨蔗藉諮資雌作勺嚼斫昨灼炸爵綽芍酌雀鵲孱棧殘潺盞岑暫潛箴簪蠶雜丈仗匠場墻壯奬將帳庄張掌暲杖樟檣欌漿牆狀獐璋章粧腸臟臧莊葬蔣薔藏裝贓醬長�".split(""); +for(j = 0; j != D[237].length; ++j) if(D[237][j].charCodeAt(0) !== 0xFFFD) { e[D[237][j]] = 60672 + j; d[60672 + j] = D[237][j];} +D[238] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������障再哉在宰才材栽梓渽滓災縡裁財載齋齎爭箏諍錚佇低儲咀姐底抵杵楮樗沮渚狙猪疽箸紵苧菹著藷詛貯躇這邸雎齟勣吊嫡寂摘敵滴狄炙的積笛籍績翟荻謫賊赤跡蹟迪迹適鏑佃佺傳全典前剪塡塼奠專展廛悛戰栓殿氈澱�".split(""); +for(j = 0; j != D[238].length; ++j) if(D[238][j].charCodeAt(0) !== 0xFFFD) { e[D[238][j]] = 60928 + j; d[60928 + j] = D[238][j];} +D[239] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������煎琠田甸畑癲筌箋箭篆纏詮輾轉鈿銓錢鐫電顚顫餞切截折浙癤竊節絶占岾店漸点粘霑鮎點接摺蝶丁井亭停偵呈姃定幀庭廷征情挺政整旌晶晸柾楨檉正汀淀淨渟湞瀞炡玎珽町睛碇禎程穽精綎艇訂諪貞鄭酊釘鉦鋌錠霆靖�".split(""); +for(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];} +D[240] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������靜頂鼎制劑啼堤帝弟悌提梯濟祭第臍薺製諸蹄醍除際霽題齊俎兆凋助嘲弔彫措操早晁曺曹朝條棗槽漕潮照燥爪璪眺祖祚租稠窕粗糟組繰肇藻蚤詔調趙躁造遭釣阻雕鳥族簇足鏃存尊卒拙猝倧宗從悰慫棕淙琮種終綜縱腫�".split(""); +for(j = 0; j != D[240].length; ++j) if(D[240][j].charCodeAt(0) !== 0xFFFD) { e[D[240][j]] = 61440 + j; d[61440 + j] = D[240][j];} +D[241] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������踪踵鍾鐘佐坐左座挫罪主住侏做姝胄呪周嗾奏宙州廚晝朱柱株注洲湊澍炷珠疇籌紂紬綢舟蛛註誅走躊輳週酎酒鑄駐竹粥俊儁准埈寯峻晙樽浚準濬焌畯竣蠢逡遵雋駿茁中仲衆重卽櫛楫汁葺增憎曾拯烝甑症繒蒸證贈之只�".split(""); +for(j = 0; j != D[241].length; ++j) if(D[241][j].charCodeAt(0) !== 0xFFFD) { e[D[241][j]] = 61696 + j; d[61696 + j] = D[241][j];} +D[242] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������咫地址志持指摯支旨智枝枳止池沚漬知砥祉祗紙肢脂至芝芷蜘誌識贄趾遲直稙稷織職唇嗔塵振搢晉晋桭榛殄津溱珍瑨璡畛疹盡眞瞋秦縉縝臻蔯袗診賑軫辰進鎭陣陳震侄叱姪嫉帙桎瓆疾秩窒膣蛭質跌迭斟朕什執潗緝輯�".split(""); +for(j = 0; j != D[242].length; ++j) if(D[242][j].charCodeAt(0) !== 0xFFFD) { e[D[242][j]] = 61952 + j; d[61952 + j] = D[242][j];} +D[243] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������鏶集徵懲澄且侘借叉嗟嵯差次此磋箚茶蹉車遮捉搾着窄錯鑿齪撰澯燦璨瓚竄簒纂粲纘讚贊鑽餐饌刹察擦札紮僭參塹慘慙懺斬站讒讖倉倡創唱娼廠彰愴敞昌昶暢槍滄漲猖瘡窓脹艙菖蒼債埰寀寨彩採砦綵菜蔡采釵冊柵策�".split(""); +for(j = 0; j != D[243].length; ++j) if(D[243][j].charCodeAt(0) !== 0xFFFD) { e[D[243][j]] = 62208 + j; d[62208 + j] = D[243][j];} +D[244] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������責凄妻悽處倜刺剔尺慽戚拓擲斥滌瘠脊蹠陟隻仟千喘天川擅泉淺玔穿舛薦賤踐遷釧闡阡韆凸哲喆徹撤澈綴輟轍鐵僉尖沾添甛瞻簽籤詹諂堞妾帖捷牒疊睫諜貼輒廳晴淸聽菁請靑鯖切剃替涕滯締諦逮遞體初剿哨憔抄招梢�".split(""); +for(j = 0; j != D[244].length; ++j) if(D[244][j].charCodeAt(0) !== 0xFFFD) { e[D[244][j]] = 62464 + j; d[62464 + j] = D[244][j];} +D[245] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������椒楚樵炒焦硝礁礎秒稍肖艸苕草蕉貂超酢醋醮促囑燭矗蜀觸寸忖村邨叢塚寵悤憁摠總聰蔥銃撮催崔最墜抽推椎楸樞湫皺秋芻萩諏趨追鄒酋醜錐錘鎚雛騶鰍丑畜祝竺筑築縮蓄蹙蹴軸逐春椿瑃出朮黜充忠沖蟲衝衷悴膵萃�".split(""); +for(j = 0; j != D[245].length; ++j) if(D[245][j].charCodeAt(0) !== 0xFFFD) { e[D[245][j]] = 62720 + j; d[62720 + j] = D[245][j];} +D[246] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������贅取吹嘴娶就炊翠聚脆臭趣醉驟鷲側仄厠惻測層侈値嗤峙幟恥梔治淄熾痔痴癡稚穉緇緻置致蚩輜雉馳齒則勅飭親七柒漆侵寢枕沈浸琛砧針鍼蟄秤稱快他咤唾墮妥惰打拖朶楕舵陀馱駝倬卓啄坼度托拓擢晫柝濁濯琢琸託�".split(""); +for(j = 0; j != D[246].length; ++j) if(D[246][j].charCodeAt(0) !== 0xFFFD) { e[D[246][j]] = 62976 + j; d[62976 + j] = D[246][j];} +D[247] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������鐸呑嘆坦彈憚歎灘炭綻誕奪脫探眈耽貪塔搭榻宕帑湯糖蕩兌台太怠態殆汰泰笞胎苔跆邰颱宅擇澤撑攄兎吐土討慟桶洞痛筒統通堆槌腿褪退頹偸套妬投透鬪慝特闖坡婆巴把播擺杷波派爬琶破罷芭跛頗判坂板版瓣販辦鈑�".split(""); +for(j = 0; j != D[247].length; ++j) if(D[247][j].charCodeAt(0) !== 0xFFFD) { e[D[247][j]] = 63232 + j; d[63232 + j] = D[247][j];} +D[248] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������阪八叭捌佩唄悖敗沛浿牌狽稗覇貝彭澎烹膨愎便偏扁片篇編翩遍鞭騙貶坪平枰萍評吠嬖幣廢弊斃肺蔽閉陛佈包匍匏咆哺圃布怖抛抱捕暴泡浦疱砲胞脯苞葡蒲袍褒逋鋪飽鮑幅暴曝瀑爆輻俵剽彪慓杓標漂瓢票表豹飇飄驃�".split(""); +for(j = 0; j != D[248].length; ++j) if(D[248][j].charCodeAt(0) !== 0xFFFD) { e[D[248][j]] = 63488 + j; d[63488 + j] = D[248][j];} +D[249] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������品稟楓諷豊風馮彼披疲皮被避陂匹弼必泌珌畢疋筆苾馝乏逼下何厦夏廈昰河瑕荷蝦賀遐霞鰕壑學虐謔鶴寒恨悍旱汗漢澣瀚罕翰閑閒限韓割轄函含咸啣喊檻涵緘艦銜陷鹹合哈盒蛤閤闔陜亢伉姮嫦巷恒抗杭桁沆港缸肛航�".split(""); +for(j = 0; j != D[249].length; ++j) if(D[249][j].charCodeAt(0) !== 0xFFFD) { e[D[249][j]] = 63744 + j; d[63744 + j] = D[249][j];} +D[250] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������行降項亥偕咳垓奚孩害懈楷海瀣蟹解該諧邂駭骸劾核倖幸杏荇行享向嚮珦鄕響餉饗香噓墟虛許憲櫶獻軒歇險驗奕爀赫革俔峴弦懸晛泫炫玄玹現眩睍絃絢縣舷衒見賢鉉顯孑穴血頁嫌俠協夾峽挾浹狹脅脇莢鋏頰亨兄刑型�".split(""); +for(j = 0; j != D[250].length; ++j) if(D[250][j].charCodeAt(0) !== 0xFFFD) { e[D[250][j]] = 64000 + j; d[64000 + j] = D[250][j];} +D[251] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������形泂滎瀅灐炯熒珩瑩荊螢衡逈邢鎣馨兮彗惠慧暳蕙蹊醯鞋乎互呼壕壺好岵弧戶扈昊晧毫浩淏湖滸澔濠濩灝狐琥瑚瓠皓祜糊縞胡芦葫蒿虎號蝴護豪鎬頀顥惑或酷婚昏混渾琿魂忽惚笏哄弘汞泓洪烘紅虹訌鴻化和嬅樺火畵�".split(""); +for(j = 0; j != D[251].length; ++j) if(D[251][j].charCodeAt(0) !== 0xFFFD) { e[D[251][j]] = 64256 + j; d[64256 + j] = D[251][j];} +D[252] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������禍禾花華話譁貨靴廓擴攫確碻穫丸喚奐宦幻患換歡晥桓渙煥環紈還驩鰥活滑猾豁闊凰幌徨恍惶愰慌晃晄榥況湟滉潢煌璜皇篁簧荒蝗遑隍黃匯回廻徊恢悔懷晦會檜淮澮灰獪繪膾茴蛔誨賄劃獲宖橫鐄哮嚆孝效斅曉梟涍淆�".split(""); +for(j = 0; j != D[252].length; ++j) if(D[252][j].charCodeAt(0) !== 0xFFFD) { e[D[252][j]] = 64512 + j; d[64512 + j] = D[252][j];} +D[253] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������爻肴酵驍侯候厚后吼喉嗅帿後朽煦珝逅勛勳塤壎焄熏燻薰訓暈薨喧暄煊萱卉喙毁彙徽揮暉煇諱輝麾休携烋畦虧恤譎鷸兇凶匈洶胸黑昕欣炘痕吃屹紇訖欠欽歆吸恰洽翕興僖凞喜噫囍姬嬉希憙憘戱晞曦熙熹熺犧禧稀羲詰�".split(""); +for(j = 0; j != D[253].length; ++j) if(D[253][j].charCodeAt(0) !== 0xFFFD) { e[D[253][j]] = 64768 + j; d[64768 + j] = D[253][j];} +return {"enc": e, "dec": d }; })(); +cptable[52936] = (function(){ var d = [], e = {}, D = [], j; +D[0] = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}�€������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];} +D[126] = "���������������������������������������������������������������������������������������������������������������������������~���������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[126].length; ++j) if(D[126][j].charCodeAt(0) !== 0xFFFD) { e[D[126][j]] = 32256 + j; d[32256 + j] = D[126][j];} +return {"enc": e, "dec": d }; })(); +cptable[54936] = (function(){ var d = [], e = {}, D = [], j; +D[0] = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~��������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];} +D[129] = "����������������������������������������������������������������丂丄丅丆丏丒丗丟丠両丣並丩丮丯丱丳丵丷丼乀乁乂乄乆乊乑乕乗乚乛乢乣乤乥乧乨乪乫乬乭乮乯乲乴乵乶乷乸乹乺乻乼乽乿亀亁亂亃亄亅亇亊�亐亖亗亙亜亝亞亣亪亯亰亱亴亶亷亸亹亼亽亾仈仌仏仐仒仚仛仜仠仢仦仧仩仭仮仯仱仴仸仹仺仼仾伀伂伃伄伅伆伇伈伋伌伒伓伔伕伖伜伝伡伣伨伩伬伭伮伱伳伵伷伹伻伾伿佀佁佂佄佅佇佈佉佊佋佌佒佔佖佡佢佦佨佪佫佭佮佱佲併佷佸佹佺佽侀侁侂侅來侇侊侌侎侐侒侓侕侖侘侙侚侜侞侟価侢�".split(""); +for(j = 0; j != D[129].length; ++j) if(D[129][j].charCodeAt(0) !== 0xFFFD) { e[D[129][j]] = 33024 + j; d[33024 + j] = D[129][j];} +D[130] = "����������������������������������������������������������������侤侫侭侰侱侲侳侴侶侷侸侹侺侻侼侽侾俀俁係俆俇俈俉俋俌俍俒俓俔俕俖俙俛俠俢俤俥俧俫俬俰俲俴俵俶俷俹俻俼俽俿倀倁倂倃倄倅倆倇倈倉倊�個倎倐們倓倕倖倗倛倝倞倠倢倣値倧倫倯倰倱倲倳倴倵倶倷倸倹倻倽倿偀偁偂偄偅偆偉偊偋偍偐偑偒偓偔偖偗偘偙偛偝偞偟偠偡偢偣偤偦偧偨偩偪偫偭偮偯偰偱偲偳側偵偸偹偺偼偽傁傂傃傄傆傇傉傊傋傌傎傏傐傑傒傓傔傕傖傗傘備傚傛傜傝傞傟傠傡傢傤傦傪傫傭傮傯傰傱傳傴債傶傷傸傹傼�".split(""); +for(j = 0; j != D[130].length; ++j) if(D[130][j].charCodeAt(0) !== 0xFFFD) { e[D[130][j]] = 33280 + j; d[33280 + j] = D[130][j];} +D[131] = "����������������������������������������������������������������傽傾傿僀僁僂僃僄僅僆僇僈僉僊僋僌働僎僐僑僒僓僔僕僗僘僙僛僜僝僞僟僠僡僢僣僤僥僨僩僪僫僯僰僱僲僴僶僷僸價僺僼僽僾僿儀儁儂儃億儅儈�儉儊儌儍儎儏儐儑儓儔儕儖儗儘儙儚儛儜儝儞償儠儢儣儤儥儦儧儨儩優儫儬儭儮儯儰儱儲儳儴儵儶儷儸儹儺儻儼儽儾兂兇兊兌兎兏児兒兓兗兘兙兛兝兞兟兠兡兣兤兦內兩兪兯兲兺兾兿冃冄円冇冊冋冎冏冐冑冓冔冘冚冝冞冟冡冣冦冧冨冩冪冭冮冴冸冹冺冾冿凁凂凃凅凈凊凍凎凐凒凓凔凕凖凗�".split(""); +for(j = 0; j != D[131].length; ++j) if(D[131][j].charCodeAt(0) !== 0xFFFD) { e[D[131][j]] = 33536 + j; d[33536 + j] = D[131][j];} +D[132] = "����������������������������������������������������������������凘凙凚凜凞凟凢凣凥処凧凨凩凪凬凮凱凲凴凷凾刄刅刉刋刌刏刐刓刔刕刜刞刟刡刢刣別刦刧刪刬刯刱刲刴刵刼刾剄剅剆則剈剉剋剎剏剒剓剕剗剘�剙剚剛剝剟剠剢剣剤剦剨剫剬剭剮剰剱剳剴創剶剷剸剹剺剻剼剾劀劃劄劅劆劇劉劊劋劌劍劎劏劑劒劔劕劖劗劘劙劚劜劤劥劦劧劮劯劰労劵劶劷劸効劺劻劼劽勀勁勂勄勅勆勈勊勌勍勎勏勑勓勔動勗務勚勛勜勝勞勠勡勢勣勥勦勧勨勩勪勫勬勭勮勯勱勲勳勴勵勶勷勸勻勼勽匁匂匃匄匇匉匊匋匌匎�".split(""); +for(j = 0; j != D[132].length; ++j) if(D[132][j].charCodeAt(0) !== 0xFFFD) { e[D[132][j]] = 33792 + j; d[33792 + j] = D[132][j];} +D[133] = "����������������������������������������������������������������匑匒匓匔匘匛匜匞匟匢匤匥匧匨匩匫匬匭匯匰匱匲匳匴匵匶匷匸匼匽區卂卄卆卋卌卍卐協単卙卛卝卥卨卪卬卭卲卶卹卻卼卽卾厀厁厃厇厈厊厎厏�厐厑厒厓厔厖厗厙厛厜厞厠厡厤厧厪厫厬厭厯厰厱厲厳厴厵厷厸厹厺厼厽厾叀參叄叅叆叇収叏叐叒叓叕叚叜叝叞叡叢叧叴叺叾叿吀吂吅吇吋吔吘吙吚吜吢吤吥吪吰吳吶吷吺吽吿呁呂呄呅呇呉呌呍呎呏呑呚呝呞呟呠呡呣呥呧呩呪呫呬呭呮呯呰呴呹呺呾呿咁咃咅咇咈咉咊咍咑咓咗咘咜咞咟咠咡�".split(""); +for(j = 0; j != D[133].length; ++j) if(D[133][j].charCodeAt(0) !== 0xFFFD) { e[D[133][j]] = 34048 + j; d[34048 + j] = D[133][j];} +D[134] = "����������������������������������������������������������������咢咥咮咰咲咵咶咷咹咺咼咾哃哅哊哋哖哘哛哠員哢哣哤哫哬哯哰哱哴哵哶哷哸哹哻哾唀唂唃唄唅唈唊唋唌唍唎唒唓唕唖唗唘唙唚唜唝唞唟唡唥唦�唨唩唫唭唲唴唵唶唸唹唺唻唽啀啂啅啇啈啋啌啍啎問啑啒啓啔啗啘啙啚啛啝啞啟啠啢啣啨啩啫啯啰啱啲啳啴啹啺啽啿喅喆喌喍喎喐喒喓喕喖喗喚喛喞喠喡喢喣喤喥喦喨喩喪喫喬喭單喯喰喲喴営喸喺喼喿嗀嗁嗂嗃嗆嗇嗈嗊嗋嗎嗏嗐嗕嗗嗘嗙嗚嗛嗞嗠嗢嗧嗩嗭嗮嗰嗱嗴嗶嗸嗹嗺嗻嗼嗿嘂嘃嘄嘅�".split(""); +for(j = 0; j != D[134].length; ++j) if(D[134][j].charCodeAt(0) !== 0xFFFD) { e[D[134][j]] = 34304 + j; d[34304 + j] = D[134][j];} +D[135] = "����������������������������������������������������������������嘆嘇嘊嘋嘍嘐嘑嘒嘓嘔嘕嘖嘗嘙嘚嘜嘝嘠嘡嘢嘥嘦嘨嘩嘪嘫嘮嘯嘰嘳嘵嘷嘸嘺嘼嘽嘾噀噁噂噃噄噅噆噇噈噉噊噋噏噐噑噒噓噕噖噚噛噝噞噟噠噡�噣噥噦噧噭噮噯噰噲噳噴噵噷噸噹噺噽噾噿嚀嚁嚂嚃嚄嚇嚈嚉嚊嚋嚌嚍嚐嚑嚒嚔嚕嚖嚗嚘嚙嚚嚛嚜嚝嚞嚟嚠嚡嚢嚤嚥嚦嚧嚨嚩嚪嚫嚬嚭嚮嚰嚱嚲嚳嚴嚵嚶嚸嚹嚺嚻嚽嚾嚿囀囁囂囃囄囅囆囇囈囉囋囌囍囎囏囐囑囒囓囕囖囘囙囜団囥囦囧囨囩囪囬囮囯囲図囶囷囸囻囼圀圁圂圅圇國圌圍圎圏圐圑�".split(""); +for(j = 0; j != D[135].length; ++j) if(D[135][j].charCodeAt(0) !== 0xFFFD) { e[D[135][j]] = 34560 + j; d[34560 + j] = D[135][j];} +D[136] = "����������������������������������������������������������������園圓圔圕圖圗團圙圚圛圝圞圠圡圢圤圥圦圧圫圱圲圴圵圶圷圸圼圽圿坁坃坄坅坆坈坉坋坒坓坔坕坖坘坙坢坣坥坧坬坮坰坱坲坴坵坸坹坺坽坾坿垀�垁垇垈垉垊垍垎垏垐垑垔垕垖垗垘垙垚垜垝垞垟垥垨垪垬垯垰垱垳垵垶垷垹垺垻垼垽垾垿埀埁埄埅埆埇埈埉埊埌埍埐埑埓埖埗埛埜埞埡埢埣埥埦埧埨埩埪埫埬埮埰埱埲埳埵埶執埻埼埾埿堁堃堄堅堈堉堊堌堎堏堐堒堓堔堖堗堘堚堛堜堝堟堢堣堥堦堧堨堩堫堬堭堮堯報堲堳場堶堷堸堹堺堻堼堽�".split(""); +for(j = 0; j != D[136].length; ++j) if(D[136][j].charCodeAt(0) !== 0xFFFD) { e[D[136][j]] = 34816 + j; d[34816 + j] = D[136][j];} +D[137] = "����������������������������������������������������������������堾堿塀塁塂塃塅塆塇塈塉塊塋塎塏塐塒塓塕塖塗塙塚塛塜塝塟塠塡塢塣塤塦塧塨塩塪塭塮塯塰塱塲塳塴塵塶塷塸塹塺塻塼塽塿墂墄墆墇墈墊墋墌�墍墎墏墐墑墔墕墖増墘墛墜墝墠墡墢墣墤墥墦墧墪墫墬墭墮墯墰墱墲墳墴墵墶墷墸墹墺墻墽墾墿壀壂壃壄壆壇壈壉壊壋壌壍壎壏壐壒壓壔壖壗壘壙壚壛壜壝壞壟壠壡壢壣壥壦壧壨壩壪壭壯壱売壴壵壷壸壺壻壼壽壾壿夀夁夃夅夆夈変夊夋夌夎夐夑夒夓夗夘夛夝夞夠夡夢夣夦夨夬夰夲夳夵夶夻�".split(""); +for(j = 0; j != D[137].length; ++j) if(D[137][j].charCodeAt(0) !== 0xFFFD) { e[D[137][j]] = 35072 + j; d[35072 + j] = D[137][j];} +D[138] = "����������������������������������������������������������������夽夾夿奀奃奅奆奊奌奍奐奒奓奙奛奜奝奞奟奡奣奤奦奧奨奩奪奫奬奭奮奯奰奱奲奵奷奺奻奼奾奿妀妅妉妋妌妎妏妐妑妔妕妘妚妛妜妝妟妠妡妢妦�妧妬妭妰妱妳妴妵妶妷妸妺妼妽妿姀姁姂姃姄姅姇姈姉姌姍姎姏姕姖姙姛姞姟姠姡姢姤姦姧姩姪姫姭姮姯姰姱姲姳姴姵姶姷姸姺姼姽姾娀娂娊娋娍娎娏娐娒娔娕娖娗娙娚娛娝娞娡娢娤娦娧娨娪娫娬娭娮娯娰娳娵娷娸娹娺娻娽娾娿婁婂婃婄婅婇婈婋婌婍婎婏婐婑婒婓婔婖婗婘婙婛婜婝婞婟婠�".split(""); +for(j = 0; j != D[138].length; ++j) if(D[138][j].charCodeAt(0) !== 0xFFFD) { e[D[138][j]] = 35328 + j; d[35328 + j] = D[138][j];} +D[139] = "����������������������������������������������������������������婡婣婤婥婦婨婩婫婬婭婮婯婰婱婲婳婸婹婻婼婽婾媀媁媂媃媄媅媆媇媈媉媊媋媌媍媎媏媐媑媓媔媕媖媗媘媙媜媝媞媟媠媡媢媣媤媥媦媧媨媩媫媬�媭媮媯媰媱媴媶媷媹媺媻媼媽媿嫀嫃嫄嫅嫆嫇嫈嫊嫋嫍嫎嫏嫐嫑嫓嫕嫗嫙嫚嫛嫝嫞嫟嫢嫤嫥嫧嫨嫪嫬嫭嫮嫯嫰嫲嫳嫴嫵嫶嫷嫸嫹嫺嫻嫼嫽嫾嫿嬀嬁嬂嬃嬄嬅嬆嬇嬈嬊嬋嬌嬍嬎嬏嬐嬑嬒嬓嬔嬕嬘嬙嬚嬛嬜嬝嬞嬟嬠嬡嬢嬣嬤嬥嬦嬧嬨嬩嬪嬫嬬嬭嬮嬯嬰嬱嬳嬵嬶嬸嬹嬺嬻嬼嬽嬾嬿孁孂孃孄孅孆孇�".split(""); +for(j = 0; j != D[139].length; ++j) if(D[139][j].charCodeAt(0) !== 0xFFFD) { e[D[139][j]] = 35584 + j; d[35584 + j] = D[139][j];} +D[140] = "����������������������������������������������������������������孈孉孊孋孌孍孎孏孒孖孞孠孡孧孨孫孭孮孯孲孴孶孷學孹孻孼孾孿宂宆宊宍宎宐宑宒宔宖実宧宨宩宬宭宮宯宱宲宷宺宻宼寀寁寃寈寉寊寋寍寎寏�寑寔寕寖寗寘寙寚寛寜寠寢寣實寧審寪寫寬寭寯寱寲寳寴寵寶寷寽対尀専尃尅將專尋尌對導尐尒尓尗尙尛尞尟尠尡尣尦尨尩尪尫尭尮尯尰尲尳尵尶尷屃屄屆屇屌屍屒屓屔屖屗屘屚屛屜屝屟屢層屧屨屩屪屫屬屭屰屲屳屴屵屶屷屸屻屼屽屾岀岃岄岅岆岇岉岊岋岎岏岒岓岕岝岞岟岠岡岤岥岦岧岨�".split(""); +for(j = 0; j != D[140].length; ++j) if(D[140][j].charCodeAt(0) !== 0xFFFD) { e[D[140][j]] = 35840 + j; d[35840 + j] = D[140][j];} +D[141] = "����������������������������������������������������������������岪岮岯岰岲岴岶岹岺岻岼岾峀峂峃峅峆峇峈峉峊峌峍峎峏峐峑峓峔峕峖峗峘峚峛峜峝峞峟峠峢峣峧峩峫峬峮峯峱峲峳峴峵島峷峸峹峺峼峽峾峿崀�崁崄崅崈崉崊崋崌崍崏崐崑崒崓崕崗崘崙崚崜崝崟崠崡崢崣崥崨崪崫崬崯崰崱崲崳崵崶崷崸崹崺崻崼崿嵀嵁嵂嵃嵄嵅嵆嵈嵉嵍嵎嵏嵐嵑嵒嵓嵔嵕嵖嵗嵙嵚嵜嵞嵟嵠嵡嵢嵣嵤嵥嵦嵧嵨嵪嵭嵮嵰嵱嵲嵳嵵嵶嵷嵸嵹嵺嵻嵼嵽嵾嵿嶀嶁嶃嶄嶅嶆嶇嶈嶉嶊嶋嶌嶍嶎嶏嶐嶑嶒嶓嶔嶕嶖嶗嶘嶚嶛嶜嶞嶟嶠�".split(""); +for(j = 0; j != D[141].length; ++j) if(D[141][j].charCodeAt(0) !== 0xFFFD) { e[D[141][j]] = 36096 + j; d[36096 + j] = D[141][j];} +D[142] = "����������������������������������������������������������������嶡嶢嶣嶤嶥嶦嶧嶨嶩嶪嶫嶬嶭嶮嶯嶰嶱嶲嶳嶴嶵嶶嶸嶹嶺嶻嶼嶽嶾嶿巀巁巂巃巄巆巇巈巉巊巋巌巎巏巐巑巒巓巔巕巖巗巘巙巚巜巟巠巣巤巪巬巭�巰巵巶巸巹巺巻巼巿帀帄帇帉帊帋帍帎帒帓帗帞帟帠帡帢帣帤帥帨帩帪師帬帯帰帲帳帴帵帶帹帺帾帿幀幁幃幆幇幈幉幊幋幍幎幏幐幑幒幓幖幗幘幙幚幜幝幟幠幣幤幥幦幧幨幩幪幫幬幭幮幯幰幱幵幷幹幾庁庂広庅庈庉庌庍庎庒庘庛庝庡庢庣庤庨庩庪庫庬庮庯庰庱庲庴庺庻庼庽庿廀廁廂廃廄廅�".split(""); +for(j = 0; j != D[142].length; ++j) if(D[142][j].charCodeAt(0) !== 0xFFFD) { e[D[142][j]] = 36352 + j; d[36352 + j] = D[142][j];} +D[143] = "����������������������������������������������������������������廆廇廈廋廌廍廎廏廐廔廕廗廘廙廚廜廝廞廟廠廡廢廣廤廥廦廧廩廫廬廭廮廯廰廱廲廳廵廸廹廻廼廽弅弆弇弉弌弍弎弐弒弔弖弙弚弜弝弞弡弢弣弤�弨弫弬弮弰弲弳弴張弶強弸弻弽弾弿彁彂彃彄彅彆彇彈彉彊彋彌彍彎彏彑彔彙彚彛彜彞彟彠彣彥彧彨彫彮彯彲彴彵彶彸彺彽彾彿徃徆徍徎徏徑従徔徖徚徛徝從徟徠徢徣徤徥徦徧復徫徬徯徰徱徲徳徴徶徸徹徺徻徾徿忀忁忂忇忈忊忋忎忓忔忕忚忛応忞忟忢忣忥忦忨忩忬忯忰忲忳忴忶忷忹忺忼怇�".split(""); +for(j = 0; j != D[143].length; ++j) if(D[143][j].charCodeAt(0) !== 0xFFFD) { e[D[143][j]] = 36608 + j; d[36608 + j] = D[143][j];} +D[144] = "����������������������������������������������������������������怈怉怋怌怐怑怓怗怘怚怞怟怢怣怤怬怭怮怰怱怲怳怴怶怷怸怹怺怽怾恀恄恅恆恇恈恉恊恌恎恏恑恓恔恖恗恘恛恜恞恟恠恡恥恦恮恱恲恴恵恷恾悀�悁悂悅悆悇悈悊悋悎悏悐悑悓悕悗悘悙悜悞悡悢悤悥悧悩悪悮悰悳悵悶悷悹悺悽悾悿惀惁惂惃惄惇惈惉惌惍惎惏惐惒惓惔惖惗惙惛惞惡惢惣惤惥惪惱惲惵惷惸惻惼惽惾惿愂愃愄愅愇愊愋愌愐愑愒愓愔愖愗愘愙愛愜愝愞愡愢愥愨愩愪愬愭愮愯愰愱愲愳愴愵愶愷愸愹愺愻愼愽愾慀慁慂慃慄慅慆�".split(""); +for(j = 0; j != D[144].length; ++j) if(D[144][j].charCodeAt(0) !== 0xFFFD) { e[D[144][j]] = 36864 + j; d[36864 + j] = D[144][j];} +D[145] = "����������������������������������������������������������������慇慉態慍慏慐慒慓慔慖慗慘慙慚慛慜慞慟慠慡慣慤慥慦慩慪慫慬慭慮慯慱慲慳慴慶慸慹慺慻慼慽慾慿憀憁憂憃憄憅憆憇憈憉憊憌憍憏憐憑憒憓憕�憖憗憘憙憚憛憜憞憟憠憡憢憣憤憥憦憪憫憭憮憯憰憱憲憳憴憵憶憸憹憺憻憼憽憿懀懁懃懄懅懆懇應懌懍懎懏懐懓懕懖懗懘懙懚懛懜懝懞懟懠懡懢懣懤懥懧懨懩懪懫懬懭懮懯懰懱懲懳懴懶懷懸懹懺懻懼懽懾戀戁戂戃戄戅戇戉戓戔戙戜戝戞戠戣戦戧戨戩戫戭戯戰戱戲戵戶戸戹戺戻戼扂扄扅扆扊�".split(""); +for(j = 0; j != D[145].length; ++j) if(D[145][j].charCodeAt(0) !== 0xFFFD) { e[D[145][j]] = 37120 + j; d[37120 + j] = D[145][j];} +D[146] = "����������������������������������������������������������������扏扐払扖扗扙扚扜扝扞扟扠扡扢扤扥扨扱扲扴扵扷扸扺扻扽抁抂抃抅抆抇抈抋抌抍抎抏抐抔抙抜抝択抣抦抧抩抪抭抮抯抰抲抳抴抶抷抸抺抾拀拁�拃拋拏拑拕拝拞拠拡拤拪拫拰拲拵拸拹拺拻挀挃挄挅挆挊挋挌挍挏挐挒挓挔挕挗挘挙挜挦挧挩挬挭挮挰挱挳挴挵挶挷挸挻挼挾挿捀捁捄捇捈捊捑捒捓捔捖捗捘捙捚捛捜捝捠捤捥捦捨捪捫捬捯捰捲捳捴捵捸捹捼捽捾捿掁掃掄掅掆掋掍掑掓掔掕掗掙掚掛掜掝掞掟採掤掦掫掯掱掲掵掶掹掻掽掿揀�".split(""); +for(j = 0; j != D[146].length; ++j) if(D[146][j].charCodeAt(0) !== 0xFFFD) { e[D[146][j]] = 37376 + j; d[37376 + j] = D[146][j];} +D[147] = "����������������������������������������������������������������揁揂揃揅揇揈揊揋揌揑揓揔揕揗揘揙揚換揜揝揟揢揤揥揦揧揨揫揬揮揯揰揱揳揵揷揹揺揻揼揾搃搄搆搇搈搉搊損搎搑搒搕搖搗搘搙搚搝搟搢搣搤�搥搧搨搩搫搮搯搰搱搲搳搵搶搷搸搹搻搼搾摀摂摃摉摋摌摍摎摏摐摑摓摕摖摗摙摚摛摜摝摟摠摡摢摣摤摥摦摨摪摫摬摮摯摰摱摲摳摴摵摶摷摻摼摽摾摿撀撁撃撆撈撉撊撋撌撍撎撏撐撓撔撗撘撚撛撜撝撟撠撡撢撣撥撦撧撨撪撫撯撱撲撳撴撶撹撻撽撾撿擁擃擄擆擇擈擉擊擋擌擏擑擓擔擕擖擙據�".split(""); +for(j = 0; j != D[147].length; ++j) if(D[147][j].charCodeAt(0) !== 0xFFFD) { e[D[147][j]] = 37632 + j; d[37632 + j] = D[147][j];} +D[148] = "����������������������������������������������������������������擛擜擝擟擠擡擣擥擧擨擩擪擫擬擭擮擯擰擱擲擳擴擵擶擷擸擹擺擻擼擽擾擿攁攂攃攄攅攆攇攈攊攋攌攍攎攏攐攑攓攔攕攖攗攙攚攛攜攝攞攟攠攡�攢攣攤攦攧攨攩攪攬攭攰攱攲攳攷攺攼攽敀敁敂敃敄敆敇敊敋敍敎敐敒敓敔敗敘敚敜敟敠敡敤敥敧敨敩敪敭敮敯敱敳敵敶數敹敺敻敼敽敾敿斀斁斂斃斄斅斆斈斉斊斍斎斏斒斔斕斖斘斚斝斞斠斢斣斦斨斪斬斮斱斲斳斴斵斶斷斸斺斻斾斿旀旂旇旈旉旊旍旐旑旓旔旕旘旙旚旛旜旝旞旟旡旣旤旪旫�".split(""); +for(j = 0; j != D[148].length; ++j) if(D[148][j].charCodeAt(0) !== 0xFFFD) { e[D[148][j]] = 37888 + j; d[37888 + j] = D[148][j];} +D[149] = "����������������������������������������������������������������旲旳旴旵旸旹旻旼旽旾旿昁昄昅昇昈昉昋昍昐昑昒昖昗昘昚昛昜昞昡昢昣昤昦昩昪昫昬昮昰昲昳昷昸昹昺昻昽昿晀時晄晅晆晇晈晉晊晍晎晐晑晘�晙晛晜晝晞晠晢晣晥晧晩晪晫晬晭晱晲晳晵晸晹晻晼晽晿暀暁暃暅暆暈暉暊暋暍暎暏暐暒暓暔暕暘暙暚暛暜暞暟暠暡暢暣暤暥暦暩暪暫暬暭暯暰暱暲暳暵暶暷暸暺暻暼暽暿曀曁曂曃曄曅曆曇曈曉曊曋曌曍曎曏曐曑曒曓曔曕曖曗曘曚曞曟曠曡曢曣曤曥曧曨曪曫曬曭曮曯曱曵曶書曺曻曽朁朂會�".split(""); +for(j = 0; j != D[149].length; ++j) if(D[149][j].charCodeAt(0) !== 0xFFFD) { e[D[149][j]] = 38144 + j; d[38144 + j] = D[149][j];} +D[150] = "����������������������������������������������������������������朄朅朆朇朌朎朏朑朒朓朖朘朙朚朜朞朠朡朢朣朤朥朧朩朮朰朲朳朶朷朸朹朻朼朾朿杁杄杅杇杊杋杍杒杔杕杗杘杙杚杛杝杢杣杤杦杧杫杬杮東杴杶�杸杹杺杻杽枀枂枃枅枆枈枊枌枍枎枏枑枒枓枔枖枙枛枟枠枡枤枦枩枬枮枱枲枴枹枺枻枼枽枾枿柀柂柅柆柇柈柉柊柋柌柍柎柕柖柗柛柟柡柣柤柦柧柨柪柫柭柮柲柵柶柷柸柹柺査柼柾栁栂栃栄栆栍栐栒栔栕栘栙栚栛栜栞栟栠栢栣栤栥栦栧栨栫栬栭栮栯栰栱栴栵栶栺栻栿桇桋桍桏桒桖桗桘桙桚桛�".split(""); +for(j = 0; j != D[150].length; ++j) if(D[150][j].charCodeAt(0) !== 0xFFFD) { e[D[150][j]] = 38400 + j; d[38400 + j] = D[150][j];} +D[151] = "����������������������������������������������������������������桜桝桞桟桪桬桭桮桯桰桱桲桳桵桸桹桺桻桼桽桾桿梀梂梄梇梈梉梊梋梌梍梎梐梑梒梔梕梖梘梙梚梛梜條梞梟梠梡梣梤梥梩梪梫梬梮梱梲梴梶梷梸�梹梺梻梼梽梾梿棁棃棄棅棆棇棈棊棌棎棏棐棑棓棔棖棗棙棛棜棝棞棟棡棢棤棥棦棧棨棩棪棫棬棭棯棲棳棴棶棷棸棻棽棾棿椀椂椃椄椆椇椈椉椊椌椏椑椓椔椕椖椗椘椙椚椛検椝椞椡椢椣椥椦椧椨椩椪椫椬椮椯椱椲椳椵椶椷椸椺椻椼椾楀楁楃楄楅楆楇楈楉楊楋楌楍楎楏楐楑楒楓楕楖楘楙楛楜楟�".split(""); +for(j = 0; j != D[151].length; ++j) if(D[151][j].charCodeAt(0) !== 0xFFFD) { e[D[151][j]] = 38656 + j; d[38656 + j] = D[151][j];} +D[152] = "����������������������������������������������������������������楡楢楤楥楧楨楩楪楬業楯楰楲楳楴極楶楺楻楽楾楿榁榃榅榊榋榌榎榏榐榑榒榓榖榗榙榚榝榞榟榠榡榢榣榤榥榦榩榪榬榮榯榰榲榳榵榶榸榹榺榼榽�榾榿槀槂槃槄槅槆槇槈槉構槍槏槑槒槓槕槖槗様槙槚槜槝槞槡槢槣槤槥槦槧槨槩槪槫槬槮槯槰槱槳槴槵槶槷槸槹槺槻槼槾樀樁樂樃樄樅樆樇樈樉樋樌樍樎樏樐樑樒樓樔樕樖標樚樛樜樝樞樠樢樣樤樥樦樧権樫樬樭樮樰樲樳樴樶樷樸樹樺樻樼樿橀橁橂橃橅橆橈橉橊橋橌橍橎橏橑橒橓橔橕橖橗橚�".split(""); +for(j = 0; j != D[152].length; ++j) if(D[152][j].charCodeAt(0) !== 0xFFFD) { e[D[152][j]] = 38912 + j; d[38912 + j] = D[152][j];} +D[153] = "����������������������������������������������������������������橜橝橞機橠橢橣橤橦橧橨橩橪橫橬橭橮橯橰橲橳橴橵橶橷橸橺橻橽橾橿檁檂檃檅檆檇檈檉檊檋檌檍檏檒檓檔檕檖檘檙檚檛檜檝檞檟檡檢檣檤檥檦�檧檨檪檭檮檯檰檱檲檳檴檵檶檷檸檹檺檻檼檽檾檿櫀櫁櫂櫃櫄櫅櫆櫇櫈櫉櫊櫋櫌櫍櫎櫏櫐櫑櫒櫓櫔櫕櫖櫗櫘櫙櫚櫛櫜櫝櫞櫟櫠櫡櫢櫣櫤櫥櫦櫧櫨櫩櫪櫫櫬櫭櫮櫯櫰櫱櫲櫳櫴櫵櫶櫷櫸櫹櫺櫻櫼櫽櫾櫿欀欁欂欃欄欅欆欇欈欉權欋欌欍欎欏欐欑欒欓欔欕欖欗欘欙欚欛欜欝欞欟欥欦欨欩欪欫欬欭欮�".split(""); +for(j = 0; j != D[153].length; ++j) if(D[153][j].charCodeAt(0) !== 0xFFFD) { e[D[153][j]] = 39168 + j; d[39168 + j] = D[153][j];} +D[154] = "����������������������������������������������������������������欯欰欱欳欴欵欶欸欻欼欽欿歀歁歂歄歅歈歊歋歍歎歏歐歑歒歓歔歕歖歗歘歚歛歜歝歞歟歠歡歨歩歫歬歭歮歯歰歱歲歳歴歵歶歷歸歺歽歾歿殀殅殈�殌殎殏殐殑殔殕殗殘殙殜殝殞殟殠殢殣殤殥殦殧殨殩殫殬殭殮殯殰殱殲殶殸殹殺殻殼殽殾毀毃毄毆毇毈毉毊毌毎毐毑毘毚毜毝毞毟毠毢毣毤毥毦毧毨毩毬毭毮毰毱毲毴毶毷毸毺毻毼毾毿氀氁氂氃氄氈氉氊氋氌氎氒気氜氝氞氠氣氥氫氬氭氱氳氶氷氹氺氻氼氾氿汃汄汅汈汋汌汍汎汏汑汒汓汖汘�".split(""); +for(j = 0; j != D[154].length; ++j) if(D[154][j].charCodeAt(0) !== 0xFFFD) { e[D[154][j]] = 39424 + j; d[39424 + j] = D[154][j];} +D[155] = "����������������������������������������������������������������汙汚汢汣汥汦汧汫汬汭汮汯汱汳汵汷汸決汻汼汿沀沄沇沊沋沍沎沑沒沕沖沗沘沚沜沝沞沠沢沨沬沯沰沴沵沶沷沺泀況泂泃泆泇泈泋泍泎泏泑泒泘�泙泚泜泝泟泤泦泧泩泬泭泲泴泹泿洀洂洃洅洆洈洉洊洍洏洐洑洓洔洕洖洘洜洝洟洠洡洢洣洤洦洨洩洬洭洯洰洴洶洷洸洺洿浀浂浄浉浌浐浕浖浗浘浛浝浟浡浢浤浥浧浨浫浬浭浰浱浲浳浵浶浹浺浻浽浾浿涀涁涃涄涆涇涊涋涍涏涐涒涖涗涘涙涚涜涢涥涬涭涰涱涳涴涶涷涹涺涻涼涽涾淁淂淃淈淉淊�".split(""); +for(j = 0; j != D[155].length; ++j) if(D[155][j].charCodeAt(0) !== 0xFFFD) { e[D[155][j]] = 39680 + j; d[39680 + j] = D[155][j];} +D[156] = "����������������������������������������������������������������淍淎淏淐淒淓淔淕淗淚淛淜淟淢淣淥淧淨淩淪淭淯淰淲淴淵淶淸淺淽淾淿渀渁渂渃渄渆渇済渉渋渏渒渓渕渘渙減渜渞渟渢渦渧渨渪測渮渰渱渳渵�渶渷渹渻渼渽渾渿湀湁湂湅湆湇湈湉湊湋湌湏湐湑湒湕湗湙湚湜湝湞湠湡湢湣湤湥湦湧湨湩湪湬湭湯湰湱湲湳湴湵湶湷湸湹湺湻湼湽満溁溂溄溇溈溊溋溌溍溎溑溒溓溔溕準溗溙溚溛溝溞溠溡溣溤溦溨溩溫溬溭溮溰溳溵溸溹溼溾溿滀滃滄滅滆滈滉滊滌滍滎滐滒滖滘滙滛滜滝滣滧滪滫滬滭滮滯�".split(""); +for(j = 0; j != D[156].length; ++j) if(D[156][j].charCodeAt(0) !== 0xFFFD) { e[D[156][j]] = 39936 + j; d[39936 + j] = D[156][j];} +D[157] = "����������������������������������������������������������������滰滱滲滳滵滶滷滸滺滻滼滽滾滿漀漁漃漄漅漇漈漊漋漌漍漎漐漑漒漖漗漘漙漚漛漜漝漞漟漡漢漣漥漦漧漨漬漮漰漲漴漵漷漸漹漺漻漼漽漿潀潁潂�潃潄潅潈潉潊潌潎潏潐潑潒潓潔潕潖潗潙潚潛潝潟潠潡潣潤潥潧潨潩潪潫潬潯潰潱潳潵潶潷潹潻潽潾潿澀澁澂澃澅澆澇澊澋澏澐澑澒澓澔澕澖澗澘澙澚澛澝澞澟澠澢澣澤澥澦澨澩澪澫澬澭澮澯澰澱澲澴澵澷澸澺澻澼澽澾澿濁濃濄濅濆濇濈濊濋濌濍濎濏濐濓濔濕濖濗濘濙濚濛濜濝濟濢濣濤濥�".split(""); +for(j = 0; j != D[157].length; ++j) if(D[157][j].charCodeAt(0) !== 0xFFFD) { e[D[157][j]] = 40192 + j; d[40192 + j] = D[157][j];} +D[158] = "����������������������������������������������������������������濦濧濨濩濪濫濬濭濰濱濲濳濴濵濶濷濸濹濺濻濼濽濾濿瀀瀁瀂瀃瀄瀅瀆瀇瀈瀉瀊瀋瀌瀍瀎瀏瀐瀒瀓瀔瀕瀖瀗瀘瀙瀜瀝瀞瀟瀠瀡瀢瀤瀥瀦瀧瀨瀩瀪�瀫瀬瀭瀮瀯瀰瀱瀲瀳瀴瀶瀷瀸瀺瀻瀼瀽瀾瀿灀灁灂灃灄灅灆灇灈灉灊灋灍灎灐灑灒灓灔灕灖灗灘灙灚灛灜灝灟灠灡灢灣灤灥灦灧灨灩灪灮灱灲灳灴灷灹灺灻災炁炂炃炄炆炇炈炋炌炍炏炐炑炓炗炘炚炛炞炟炠炡炢炣炤炥炦炧炨炩炪炰炲炴炵炶為炾炿烄烅烆烇烉烋烌烍烎烏烐烑烒烓烔烕烖烗烚�".split(""); +for(j = 0; j != D[158].length; ++j) if(D[158][j].charCodeAt(0) !== 0xFFFD) { e[D[158][j]] = 40448 + j; d[40448 + j] = D[158][j];} +D[159] = "����������������������������������������������������������������烜烝烞烠烡烢烣烥烪烮烰烱烲烳烴烵烶烸烺烻烼烾烿焀焁焂焃焄焅焆焇焈焋焌焍焎焏焑焒焔焗焛焜焝焞焟焠無焢焣焤焥焧焨焩焪焫焬焭焮焲焳焴�焵焷焸焹焺焻焼焽焾焿煀煁煂煃煄煆煇煈煉煋煍煏煐煑煒煓煔煕煖煗煘煙煚煛煝煟煠煡煢煣煥煩煪煫煬煭煯煰煱煴煵煶煷煹煻煼煾煿熀熁熂熃熅熆熇熈熉熋熌熍熎熐熑熒熓熕熖熗熚熛熜熝熞熡熢熣熤熥熦熧熩熪熫熭熮熯熰熱熲熴熶熷熸熺熻熼熽熾熿燀燁燂燄燅燆燇燈燉燊燋燌燍燏燐燑燒燓�".split(""); +for(j = 0; j != D[159].length; ++j) if(D[159][j].charCodeAt(0) !== 0xFFFD) { e[D[159][j]] = 40704 + j; d[40704 + j] = D[159][j];} +D[160] = "����������������������������������������������������������������燖燗燘燙燚燛燜燝燞營燡燢燣燤燦燨燩燪燫燬燭燯燰燱燲燳燴燵燶燷燸燺燻燼燽燾燿爀爁爂爃爄爅爇爈爉爊爋爌爍爎爏爐爑爒爓爔爕爖爗爘爙爚�爛爜爞爟爠爡爢爣爤爥爦爧爩爫爭爮爯爲爳爴爺爼爾牀牁牂牃牄牅牆牉牊牋牎牏牐牑牓牔牕牗牘牚牜牞牠牣牤牥牨牪牫牬牭牰牱牳牴牶牷牸牻牼牽犂犃犅犆犇犈犉犌犎犐犑犓犔犕犖犗犘犙犚犛犜犝犞犠犡犢犣犤犥犦犧犨犩犪犫犮犱犲犳犵犺犻犼犽犾犿狀狅狆狇狉狊狋狌狏狑狓狔狕狖狘狚狛�".split(""); +for(j = 0; j != D[160].length; ++j) if(D[160][j].charCodeAt(0) !== 0xFFFD) { e[D[160][j]] = 40960 + j; d[40960 + j] = D[160][j];} +D[161] = "����������������������������������������������������������������� 、。·ˉˇ¨〃々—~‖…‘’“”〔〕〈〉《》「」『』〖〗【】±×÷∶∧∨∑∏∪∩∈∷√⊥∥∠⌒⊙∫∮≡≌≈∽∝≠≮≯≤≥∞∵∴♂♀°′″℃$¤¢£‰§№☆★○●◎◇◆□■△▲※→←↑↓〓�".split(""); +for(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];} +D[162] = "�����������������������������������������������������������������ⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹ⒈⒉⒊⒋⒌⒍⒎⒏⒐⒑⒒⒓⒔⒕⒖⒗⒘⒙⒚⒛⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽⑾⑿⒀⒁⒂⒃⒄⒅⒆⒇①②③④⑤⑥⑦⑧⑨⑩€㈠㈡㈢㈣㈤㈥㈦㈧㈨㈩ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩⅪⅫ�".split(""); +for(j = 0; j != D[162].length; ++j) if(D[162][j].charCodeAt(0) !== 0xFFFD) { e[D[162][j]] = 41472 + j; d[41472 + j] = D[162][j];} +D[163] = "�����������������������������������������������������������������!"#¥%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|} ̄�".split(""); +for(j = 0; j != D[163].length; ++j) if(D[163][j].charCodeAt(0) !== 0xFFFD) { e[D[163][j]] = 41728 + j; d[41728 + j] = D[163][j];} +D[164] = "�����������������������������������������������������������������ぁあぃいぅうぇえぉおかがきぎくぐけげこごさざしじすずせぜそぞただちぢっつづてでとどなにぬねのはばぱひびぴふぶぷへべぺほぼぽまみむめもゃやゅゆょよらりるれろゎわゐゑをん�".split(""); +for(j = 0; j != D[164].length; ++j) if(D[164][j].charCodeAt(0) !== 0xFFFD) { e[D[164][j]] = 41984 + j; d[41984 + j] = D[164][j];} +D[165] = "�����������������������������������������������������������������ァアィイゥウェエォオカガキギクグケゲコゴサザシジスズセゼソゾタダチヂッツヅテデトドナニヌネノハバパヒビピフブプヘベペホボポマミムメモャヤュユョヨラリルレロヮワヰヱヲンヴヵヶ�".split(""); +for(j = 0; j != D[165].length; ++j) if(D[165][j].charCodeAt(0) !== 0xFFFD) { e[D[165][j]] = 42240 + j; d[42240 + j] = D[165][j];} +D[166] = "�����������������������������������������������������������������ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩαβγδεζηθικλμνξοπρστυφχψω︵︶︹︺︿﹀︽︾﹁﹂﹃﹄︻︼︷︸︱︳︴�".split(""); +for(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];} +D[167] = "�����������������������������������������������������������������АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдеёжзийклмнопрстуфхцчшщъыьэюя�".split(""); +for(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];} +D[168] = "����������������������������������������������������������������ˊˋ˙–―‥‵℅℉↖↗↘↙∕∟∣≒≦≧⊿═║╒╓╔╕╖╗╘╙╚╛╜╝╞╟╠╡╢╣╤╥╦╧╨╩╪╫╬╭╮╯╰╱╲╳▁▂▃▄▅▆▇�█▉▊▋▌▍▎▏▓▔▕▼▽◢◣◤◥☉⊕〒〝〞āáǎàēéěèīíǐìōóǒòūúǔùǖǘǚǜüêɑńňǹɡㄅㄆㄇㄈㄉㄊㄋㄌㄍㄎㄏㄐㄑㄒㄓㄔㄕㄖㄗㄘㄙㄚㄛㄜㄝㄞㄟㄠㄡㄢㄣㄤㄥㄦㄧㄨㄩ�".split(""); +for(j = 0; j != D[168].length; ++j) if(D[168][j].charCodeAt(0) !== 0xFFFD) { e[D[168][j]] = 43008 + j; d[43008 + j] = D[168][j];} +D[169] = "����������������������������������������������������������������〡〢〣〤〥〦〧〨〩㊣㎎㎏㎜㎝㎞㎡㏄㏎㏑㏒㏕︰¬¦℡㈱‐ー゛゜ヽヾ〆ゝゞ﹉﹊﹋﹌﹍﹎﹏﹐﹑﹒﹔﹕﹖﹗﹙﹚﹛﹜﹝﹞﹟﹠﹡�﹢﹣﹤﹥﹦﹨﹩﹪﹫〾⿰⿱⿲⿳⿴⿵⿶⿷⿸⿹⿺⿻〇─━│┃┄┅┆┇┈┉┊┋┌┍┎┏┐┑┒┓└┕┖┗┘┙┚┛├┝┞┟┠┡┢┣┤┥┦┧┨┩┪┫┬┭┮┯┰┱┲┳┴┵┶┷┸┹┺┻┼┽┾┿╀╁╂╃╄╅╆╇╈╉╊╋�".split(""); +for(j = 0; j != D[169].length; ++j) if(D[169][j].charCodeAt(0) !== 0xFFFD) { e[D[169][j]] = 43264 + j; d[43264 + j] = D[169][j];} +D[170] = "����������������������������������������������������������������狜狝狟狢狣狤狥狦狧狪狫狵狶狹狽狾狿猀猂猄猅猆猇猈猉猋猌猍猏猐猑猒猔猘猙猚猟猠猣猤猦猧猨猭猯猰猲猳猵猶猺猻猼猽獀獁獂獃獄獅獆獇獈�獉獊獋獌獎獏獑獓獔獕獖獘獙獚獛獜獝獞獟獡獢獣獤獥獦獧獨獩獪獫獮獰獱�".split(""); +for(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];} +D[171] = "����������������������������������������������������������������獲獳獴獵獶獷獸獹獺獻獼獽獿玀玁玂玃玅玆玈玊玌玍玏玐玒玓玔玕玗玘玙玚玜玝玞玠玡玣玤玥玦玧玨玪玬玭玱玴玵玶玸玹玼玽玾玿珁珃珄珅珆珇�珋珌珎珒珓珔珕珖珗珘珚珛珜珝珟珡珢珣珤珦珨珪珫珬珮珯珰珱珳珴珵珶珷�".split(""); +for(j = 0; j != D[171].length; ++j) if(D[171][j].charCodeAt(0) !== 0xFFFD) { e[D[171][j]] = 43776 + j; d[43776 + j] = D[171][j];} +D[172] = "����������������������������������������������������������������珸珹珺珻珼珽現珿琀琁琂琄琇琈琋琌琍琎琑琒琓琔琕琖琗琘琙琜琝琞琟琠琡琣琤琧琩琫琭琯琱琲琷琸琹琺琻琽琾琿瑀瑂瑃瑄瑅瑆瑇瑈瑉瑊瑋瑌瑍�瑎瑏瑐瑑瑒瑓瑔瑖瑘瑝瑠瑡瑢瑣瑤瑥瑦瑧瑨瑩瑪瑫瑬瑮瑯瑱瑲瑳瑴瑵瑸瑹瑺�".split(""); +for(j = 0; j != D[172].length; ++j) if(D[172][j].charCodeAt(0) !== 0xFFFD) { e[D[172][j]] = 44032 + j; d[44032 + j] = D[172][j];} +D[173] = "����������������������������������������������������������������瑻瑼瑽瑿璂璄璅璆璈璉璊璌璍璏璑璒璓璔璕璖璗璘璙璚璛璝璟璠璡璢璣璤璥璦璪璫璬璭璮璯環璱璲璳璴璵璶璷璸璹璻璼璽璾璿瓀瓁瓂瓃瓄瓅瓆瓇�瓈瓉瓊瓋瓌瓍瓎瓏瓐瓑瓓瓔瓕瓖瓗瓘瓙瓚瓛瓝瓟瓡瓥瓧瓨瓩瓪瓫瓬瓭瓰瓱瓲�".split(""); +for(j = 0; j != D[173].length; ++j) if(D[173][j].charCodeAt(0) !== 0xFFFD) { e[D[173][j]] = 44288 + j; d[44288 + j] = D[173][j];} +D[174] = "����������������������������������������������������������������瓳瓵瓸瓹瓺瓻瓼瓽瓾甀甁甂甃甅甆甇甈甉甊甋甌甎甐甒甔甕甖甗甛甝甞甠甡產産甤甦甧甪甮甴甶甹甼甽甿畁畂畃畄畆畇畉畊畍畐畑畒畓畕畖畗畘�畝畞畟畠畡畢畣畤畧畨畩畫畬畭畮畯異畱畳畵當畷畺畻畼畽畾疀疁疂疄疅疇�".split(""); +for(j = 0; j != D[174].length; ++j) if(D[174][j].charCodeAt(0) !== 0xFFFD) { e[D[174][j]] = 44544 + j; d[44544 + j] = D[174][j];} +D[175] = "����������������������������������������������������������������疈疉疊疌疍疎疐疓疕疘疛疜疞疢疦疧疨疩疪疭疶疷疺疻疿痀痁痆痋痌痎痏痐痑痓痗痙痚痜痝痟痠痡痥痩痬痭痮痯痲痳痵痶痷痸痺痻痽痾瘂瘄瘆瘇�瘈瘉瘋瘍瘎瘏瘑瘒瘓瘔瘖瘚瘜瘝瘞瘡瘣瘧瘨瘬瘮瘯瘱瘲瘶瘷瘹瘺瘻瘽癁療癄�".split(""); +for(j = 0; j != D[175].length; ++j) if(D[175][j].charCodeAt(0) !== 0xFFFD) { e[D[175][j]] = 44800 + j; d[44800 + j] = D[175][j];} +D[176] = "����������������������������������������������������������������癅癆癇癈癉癊癋癎癏癐癑癒癓癕癗癘癙癚癛癝癟癠癡癢癤癥癦癧癨癩癪癬癭癮癰癱癲癳癴癵癶癷癹発發癿皀皁皃皅皉皊皌皍皏皐皒皔皕皗皘皚皛�皜皝皞皟皠皡皢皣皥皦皧皨皩皪皫皬皭皯皰皳皵皶皷皸皹皺皻皼皽皾盀盁盃啊阿埃挨哎唉哀皑癌蔼矮艾碍爱隘鞍氨安俺按暗岸胺案肮昂盎凹敖熬翱袄傲奥懊澳芭捌扒叭吧笆八疤巴拔跋靶把耙坝霸罢爸白柏百摆佰败拜稗斑班搬扳般颁板版扮拌伴瓣半办绊邦帮梆榜膀绑棒磅蚌镑傍谤苞胞包褒剥�".split(""); +for(j = 0; j != D[176].length; ++j) if(D[176][j].charCodeAt(0) !== 0xFFFD) { e[D[176][j]] = 45056 + j; d[45056 + j] = D[176][j];} +D[177] = "����������������������������������������������������������������盄盇盉盋盌盓盕盙盚盜盝盞盠盡盢監盤盦盧盨盩盪盫盬盭盰盳盵盶盷盺盻盽盿眀眂眃眅眆眊県眎眏眐眑眒眓眔眕眖眗眘眛眜眝眞眡眣眤眥眧眪眫�眬眮眰眱眲眳眴眹眻眽眾眿睂睄睅睆睈睉睊睋睌睍睎睏睒睓睔睕睖睗睘睙睜薄雹保堡饱宝抱报暴豹鲍爆杯碑悲卑北辈背贝钡倍狈备惫焙被奔苯本笨崩绷甭泵蹦迸逼鼻比鄙笔彼碧蓖蔽毕毙毖币庇痹闭敝弊必辟壁臂避陛鞭边编贬扁便变卞辨辩辫遍标彪膘表鳖憋别瘪彬斌濒滨宾摈兵冰柄丙秉饼炳�".split(""); +for(j = 0; j != D[177].length; ++j) if(D[177][j].charCodeAt(0) !== 0xFFFD) { e[D[177][j]] = 45312 + j; d[45312 + j] = D[177][j];} +D[178] = "����������������������������������������������������������������睝睞睟睠睤睧睩睪睭睮睯睰睱睲睳睴睵睶睷睸睺睻睼瞁瞂瞃瞆瞇瞈瞉瞊瞋瞏瞐瞓瞔瞕瞖瞗瞘瞙瞚瞛瞜瞝瞞瞡瞣瞤瞦瞨瞫瞭瞮瞯瞱瞲瞴瞶瞷瞸瞹瞺�瞼瞾矀矁矂矃矄矅矆矇矈矉矊矋矌矎矏矐矑矒矓矔矕矖矘矙矚矝矞矟矠矡矤病并玻菠播拨钵波博勃搏铂箔伯帛舶脖膊渤泊驳捕卜哺补埠不布步簿部怖擦猜裁材才财睬踩采彩菜蔡餐参蚕残惭惨灿苍舱仓沧藏操糙槽曹草厕策侧册测层蹭插叉茬茶查碴搽察岔差诧拆柴豺搀掺蝉馋谗缠铲产阐颤昌猖�".split(""); +for(j = 0; j != D[178].length; ++j) if(D[178][j].charCodeAt(0) !== 0xFFFD) { e[D[178][j]] = 45568 + j; d[45568 + j] = D[178][j];} +D[179] = "����������������������������������������������������������������矦矨矪矯矰矱矲矴矵矷矹矺矻矼砃砄砅砆砇砈砊砋砎砏砐砓砕砙砛砞砠砡砢砤砨砪砫砮砯砱砲砳砵砶砽砿硁硂硃硄硆硈硉硊硋硍硏硑硓硔硘硙硚�硛硜硞硟硠硡硢硣硤硥硦硧硨硩硯硰硱硲硳硴硵硶硸硹硺硻硽硾硿碀碁碂碃场尝常长偿肠厂敞畅唱倡超抄钞朝嘲潮巢吵炒车扯撤掣彻澈郴臣辰尘晨忱沉陈趁衬撑称城橙成呈乘程惩澄诚承逞骋秤吃痴持匙池迟弛驰耻齿侈尺赤翅斥炽充冲虫崇宠抽酬畴踌稠愁筹仇绸瞅丑臭初出橱厨躇锄雏滁除楚�".split(""); +for(j = 0; j != D[179].length; ++j) if(D[179][j].charCodeAt(0) !== 0xFFFD) { e[D[179][j]] = 45824 + j; d[45824 + j] = D[179][j];} +D[180] = "����������������������������������������������������������������碄碅碆碈碊碋碏碐碒碔碕碖碙碝碞碠碢碤碦碨碩碪碫碬碭碮碯碵碶碷碸確碻碼碽碿磀磂磃磄磆磇磈磌磍磎磏磑磒磓磖磗磘磚磛磜磝磞磟磠磡磢磣�磤磥磦磧磩磪磫磭磮磯磰磱磳磵磶磸磹磻磼磽磾磿礀礂礃礄礆礇礈礉礊礋礌础储矗搐触处揣川穿椽传船喘串疮窗幢床闯创吹炊捶锤垂春椿醇唇淳纯蠢戳绰疵茨磁雌辞慈瓷词此刺赐次聪葱囱匆从丛凑粗醋簇促蹿篡窜摧崔催脆瘁粹淬翠村存寸磋撮搓措挫错搭达答瘩打大呆歹傣戴带殆代贷袋待逮�".split(""); +for(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];} +D[181] = "����������������������������������������������������������������礍礎礏礐礑礒礔礕礖礗礘礙礚礛礜礝礟礠礡礢礣礥礦礧礨礩礪礫礬礭礮礯礰礱礲礳礵礶礷礸礹礽礿祂祃祄祅祇祊祋祌祍祎祏祐祑祒祔祕祘祙祡祣�祤祦祩祪祫祬祮祰祱祲祳祴祵祶祹祻祼祽祾祿禂禃禆禇禈禉禋禌禍禎禐禑禒怠耽担丹单郸掸胆旦氮但惮淡诞弹蛋当挡党荡档刀捣蹈倒岛祷导到稻悼道盗德得的蹬灯登等瞪凳邓堤低滴迪敌笛狄涤翟嫡抵底地蒂第帝弟递缔颠掂滇碘点典靛垫电佃甸店惦奠淀殿碉叼雕凋刁掉吊钓调跌爹碟蝶迭谍叠�".split(""); +for(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];} +D[182] = "����������������������������������������������������������������禓禔禕禖禗禘禙禛禜禝禞禟禠禡禢禣禤禥禦禨禩禪禫禬禭禮禯禰禱禲禴禵禶禷禸禼禿秂秄秅秇秈秊秌秎秏秐秓秔秖秗秙秚秛秜秝秞秠秡秢秥秨秪�秬秮秱秲秳秴秵秶秷秹秺秼秾秿稁稄稅稇稈稉稊稌稏稐稑稒稓稕稖稘稙稛稜丁盯叮钉顶鼎锭定订丢东冬董懂动栋侗恫冻洞兜抖斗陡豆逗痘都督毒犊独读堵睹赌杜镀肚度渡妒端短锻段断缎堆兑队对墩吨蹲敦顿囤钝盾遁掇哆多夺垛躲朵跺舵剁惰堕蛾峨鹅俄额讹娥恶厄扼遏鄂饿恩而儿耳尔饵洱二�".split(""); +for(j = 0; j != D[182].length; ++j) if(D[182][j].charCodeAt(0) !== 0xFFFD) { e[D[182][j]] = 46592 + j; d[46592 + j] = D[182][j];} +D[183] = "����������������������������������������������������������������稝稟稡稢稤稥稦稧稨稩稪稫稬稭種稯稰稱稲稴稵稶稸稺稾穀穁穂穃穄穅穇穈穉穊穋穌積穎穏穐穒穓穔穕穖穘穙穚穛穜穝穞穟穠穡穢穣穤穥穦穧穨�穩穪穫穬穭穮穯穱穲穳穵穻穼穽穾窂窅窇窉窊窋窌窎窏窐窓窔窙窚窛窞窡窢贰发罚筏伐乏阀法珐藩帆番翻樊矾钒繁凡烦反返范贩犯饭泛坊芳方肪房防妨仿访纺放菲非啡飞肥匪诽吠肺废沸费芬酚吩氛分纷坟焚汾粉奋份忿愤粪丰封枫蜂峰锋风疯烽逢冯缝讽奉凤佛否夫敷肤孵扶拂辐幅氟符伏俘服�".split(""); +for(j = 0; j != D[183].length; ++j) if(D[183][j].charCodeAt(0) !== 0xFFFD) { e[D[183][j]] = 46848 + j; d[46848 + j] = D[183][j];} +D[184] = "����������������������������������������������������������������窣窤窧窩窪窫窮窯窰窱窲窴窵窶窷窸窹窺窻窼窽窾竀竁竂竃竄竅竆竇竈竉竊竌竍竎竏竐竑竒竓竔竕竗竘竚竛竜竝竡竢竤竧竨竩竪竫竬竮竰竱竲竳�竴竵競竷竸竻竼竾笀笁笂笅笇笉笌笍笎笐笒笓笖笗笘笚笜笝笟笡笢笣笧笩笭浮涪福袱弗甫抚辅俯釜斧脯腑府腐赴副覆赋复傅付阜父腹负富讣附妇缚咐噶嘎该改概钙盖溉干甘杆柑竿肝赶感秆敢赣冈刚钢缸肛纲岗港杠篙皋高膏羔糕搞镐稿告哥歌搁戈鸽胳疙割革葛格蛤阁隔铬个各给根跟耕更庚羹�".split(""); +for(j = 0; j != D[184].length; ++j) if(D[184][j].charCodeAt(0) !== 0xFFFD) { e[D[184][j]] = 47104 + j; d[47104 + j] = D[184][j];} +D[185] = "����������������������������������������������������������������笯笰笲笴笵笶笷笹笻笽笿筀筁筂筃筄筆筈筊筍筎筓筕筗筙筜筞筟筡筣筤筥筦筧筨筩筪筫筬筭筯筰筳筴筶筸筺筼筽筿箁箂箃箄箆箇箈箉箊箋箌箎箏�箑箒箓箖箘箙箚箛箞箟箠箣箤箥箮箯箰箲箳箵箶箷箹箺箻箼箽箾箿節篂篃範埂耿梗工攻功恭龚供躬公宫弓巩汞拱贡共钩勾沟苟狗垢构购够辜菇咕箍估沽孤姑鼓古蛊骨谷股故顾固雇刮瓜剐寡挂褂乖拐怪棺关官冠观管馆罐惯灌贯光广逛瑰规圭硅归龟闺轨鬼诡癸桂柜跪贵刽辊滚棍锅郭国果裹过哈�".split(""); +for(j = 0; j != D[185].length; ++j) if(D[185][j].charCodeAt(0) !== 0xFFFD) { e[D[185][j]] = 47360 + j; d[47360 + j] = D[185][j];} +D[186] = "����������������������������������������������������������������篅篈築篊篋篍篎篏篐篒篔篕篖篗篘篛篜篞篟篠篢篣篤篧篨篩篫篬篭篯篰篲篳篴篵篶篸篹篺篻篽篿簀簁簂簃簄簅簆簈簉簊簍簎簐簑簒簓簔簕簗簘簙�簚簛簜簝簞簠簡簢簣簤簥簨簩簫簬簭簮簯簰簱簲簳簴簵簶簷簹簺簻簼簽簾籂骸孩海氦亥害骇酣憨邯韩含涵寒函喊罕翰撼捍旱憾悍焊汗汉夯杭航壕嚎豪毫郝好耗号浩呵喝荷菏核禾和何合盒貉阂河涸赫褐鹤贺嘿黑痕很狠恨哼亨横衡恒轰哄烘虹鸿洪宏弘红喉侯猴吼厚候后呼乎忽瑚壶葫胡蝴狐糊湖�".split(""); +for(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];} +D[187] = "����������������������������������������������������������������籃籄籅籆籇籈籉籊籋籌籎籏籐籑籒籓籔籕籖籗籘籙籚籛籜籝籞籟籠籡籢籣籤籥籦籧籨籩籪籫籬籭籮籯籰籱籲籵籶籷籸籹籺籾籿粀粁粂粃粄粅粆粇�粈粊粋粌粍粎粏粐粓粔粖粙粚粛粠粡粣粦粧粨粩粫粬粭粯粰粴粵粶粷粸粺粻弧虎唬护互沪户花哗华猾滑画划化话槐徊怀淮坏欢环桓还缓换患唤痪豢焕涣宦幻荒慌黄磺蝗簧皇凰惶煌晃幌恍谎灰挥辉徽恢蛔回毁悔慧卉惠晦贿秽会烩汇讳诲绘荤昏婚魂浑混豁活伙火获或惑霍货祸击圾基机畸稽积箕�".split(""); +for(j = 0; j != D[187].length; ++j) if(D[187][j].charCodeAt(0) !== 0xFFFD) { e[D[187][j]] = 47872 + j; d[47872 + j] = D[187][j];} +D[188] = "����������������������������������������������������������������粿糀糂糃糄糆糉糋糎糏糐糑糒糓糔糘糚糛糝糞糡糢糣糤糥糦糧糩糪糫糬糭糮糰糱糲糳糴糵糶糷糹糺糼糽糾糿紀紁紂紃約紅紆紇紈紉紋紌納紎紏紐�紑紒紓純紕紖紗紘紙級紛紜紝紞紟紡紣紤紥紦紨紩紪紬紭紮細紱紲紳紴紵紶肌饥迹激讥鸡姬绩缉吉极棘辑籍集及急疾汲即嫉级挤几脊己蓟技冀季伎祭剂悸济寄寂计记既忌际妓继纪嘉枷夹佳家加荚颊贾甲钾假稼价架驾嫁歼监坚尖笺间煎兼肩艰奸缄茧检柬碱硷拣捡简俭剪减荐槛鉴践贱见键箭件�".split(""); +for(j = 0; j != D[188].length; ++j) if(D[188][j].charCodeAt(0) !== 0xFFFD) { e[D[188][j]] = 48128 + j; d[48128 + j] = D[188][j];} +D[189] = "����������������������������������������������������������������紷紸紹紺紻紼紽紾紿絀絁終絃組絅絆絇絈絉絊絋経絍絎絏結絑絒絓絔絕絖絗絘絙絚絛絜絝絞絟絠絡絢絣絤絥給絧絨絩絪絫絬絭絯絰統絲絳絴絵絶�絸絹絺絻絼絽絾絿綀綁綂綃綄綅綆綇綈綉綊綋綌綍綎綏綐綑綒經綔綕綖綗綘健舰剑饯渐溅涧建僵姜将浆江疆蒋桨奖讲匠酱降蕉椒礁焦胶交郊浇骄娇嚼搅铰矫侥脚狡角饺缴绞剿教酵轿较叫窖揭接皆秸街阶截劫节桔杰捷睫竭洁结解姐戒藉芥界借介疥诫届巾筋斤金今津襟紧锦仅谨进靳晋禁近烬浸�".split(""); +for(j = 0; j != D[189].length; ++j) if(D[189][j].charCodeAt(0) !== 0xFFFD) { e[D[189][j]] = 48384 + j; d[48384 + j] = D[189][j];} +D[190] = "����������������������������������������������������������������継続綛綜綝綞綟綠綡綢綣綤綥綧綨綩綪綫綬維綯綰綱網綳綴綵綶綷綸綹綺綻綼綽綾綿緀緁緂緃緄緅緆緇緈緉緊緋緌緍緎総緐緑緒緓緔緕緖緗緘緙�線緛緜緝緞緟締緡緢緣緤緥緦緧編緩緪緫緬緭緮緯緰緱緲緳練緵緶緷緸緹緺尽劲荆兢茎睛晶鲸京惊精粳经井警景颈静境敬镜径痉靖竟竞净炯窘揪究纠玖韭久灸九酒厩救旧臼舅咎就疚鞠拘狙疽居驹菊局咀矩举沮聚拒据巨具距踞锯俱句惧炬剧捐鹃娟倦眷卷绢撅攫抉掘倔爵觉决诀绝均菌钧军君峻�".split(""); +for(j = 0; j != D[190].length; ++j) if(D[190][j].charCodeAt(0) !== 0xFFFD) { e[D[190][j]] = 48640 + j; d[48640 + j] = D[190][j];} +D[191] = "����������������������������������������������������������������緻緼緽緾緿縀縁縂縃縄縅縆縇縈縉縊縋縌縍縎縏縐縑縒縓縔縕縖縗縘縙縚縛縜縝縞縟縠縡縢縣縤縥縦縧縨縩縪縫縬縭縮縯縰縱縲縳縴縵縶縷縸縹�縺縼總績縿繀繂繃繄繅繆繈繉繊繋繌繍繎繏繐繑繒繓織繕繖繗繘繙繚繛繜繝俊竣浚郡骏喀咖卡咯开揩楷凯慨刊堪勘坎砍看康慷糠扛抗亢炕考拷烤靠坷苛柯棵磕颗科壳咳可渴克刻客课肯啃垦恳坑吭空恐孔控抠口扣寇枯哭窟苦酷库裤夸垮挎跨胯块筷侩快宽款匡筐狂框矿眶旷况亏盔岿窥葵奎魁傀�".split(""); +for(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];} +D[192] = "����������������������������������������������������������������繞繟繠繡繢繣繤繥繦繧繨繩繪繫繬繭繮繯繰繱繲繳繴繵繶繷繸繹繺繻繼繽繾繿纀纁纃纄纅纆纇纈纉纊纋續纍纎纏纐纑纒纓纔纕纖纗纘纙纚纜纝纞�纮纴纻纼绖绤绬绹缊缐缞缷缹缻缼缽缾缿罀罁罃罆罇罈罉罊罋罌罍罎罏罒罓馈愧溃坤昆捆困括扩廓阔垃拉喇蜡腊辣啦莱来赖蓝婪栏拦篮阑兰澜谰揽览懒缆烂滥琅榔狼廊郎朗浪捞劳牢老佬姥酪烙涝勒乐雷镭蕾磊累儡垒擂肋类泪棱楞冷厘梨犁黎篱狸离漓理李里鲤礼莉荔吏栗丽厉励砾历利傈例俐�".split(""); +for(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];} +D[193] = "����������������������������������������������������������������罖罙罛罜罝罞罠罣罤罥罦罧罫罬罭罯罰罳罵罶罷罸罺罻罼罽罿羀羂羃羄羅羆羇羈羉羋羍羏羐羑羒羓羕羖羗羘羙羛羜羠羢羣羥羦羨義羪羫羬羭羮羱�羳羴羵羶羷羺羻羾翀翂翃翄翆翇翈翉翋翍翏翐翑習翓翖翗翙翚翛翜翝翞翢翣痢立粒沥隶力璃哩俩联莲连镰廉怜涟帘敛脸链恋炼练粮凉梁粱良两辆量晾亮谅撩聊僚疗燎寥辽潦了撂镣廖料列裂烈劣猎琳林磷霖临邻鳞淋凛赁吝拎玲菱零龄铃伶羚凌灵陵岭领另令溜琉榴硫馏留刘瘤流柳六龙聋咙笼窿�".split(""); +for(j = 0; j != D[193].length; ++j) if(D[193][j].charCodeAt(0) !== 0xFFFD) { e[D[193][j]] = 49408 + j; d[49408 + j] = D[193][j];} +D[194] = "����������������������������������������������������������������翤翧翨翪翫翬翭翯翲翴翵翶翷翸翹翺翽翾翿耂耇耈耉耊耎耏耑耓耚耛耝耞耟耡耣耤耫耬耭耮耯耰耲耴耹耺耼耾聀聁聄聅聇聈聉聎聏聐聑聓聕聖聗�聙聛聜聝聞聟聠聡聢聣聤聥聦聧聨聫聬聭聮聯聰聲聳聴聵聶職聸聹聺聻聼聽隆垄拢陇楼娄搂篓漏陋芦卢颅庐炉掳卤虏鲁麓碌露路赂鹿潞禄录陆戮驴吕铝侣旅履屡缕虑氯律率滤绿峦挛孪滦卵乱掠略抡轮伦仑沦纶论萝螺罗逻锣箩骡裸落洛骆络妈麻玛码蚂马骂嘛吗埋买麦卖迈脉瞒馒蛮满蔓曼慢漫�".split(""); +for(j = 0; j != D[194].length; ++j) if(D[194][j].charCodeAt(0) !== 0xFFFD) { e[D[194][j]] = 49664 + j; d[49664 + j] = D[194][j];} +D[195] = "����������������������������������������������������������������聾肁肂肅肈肊肍肎肏肐肑肒肔肕肗肙肞肣肦肧肨肬肰肳肵肶肸肹肻胅胇胈胉胊胋胏胐胑胒胓胔胕胘胟胠胢胣胦胮胵胷胹胻胾胿脀脁脃脄脅脇脈脋�脌脕脗脙脛脜脝脟脠脡脢脣脤脥脦脧脨脩脪脫脭脮脰脳脴脵脷脹脺脻脼脽脿谩芒茫盲氓忙莽猫茅锚毛矛铆卯茂冒帽貌贸么玫枚梅酶霉煤没眉媒镁每美昧寐妹媚门闷们萌蒙檬盟锰猛梦孟眯醚靡糜迷谜弥米秘觅泌蜜密幂棉眠绵冕免勉娩缅面苗描瞄藐秒渺庙妙蔑灭民抿皿敏悯闽明螟鸣铭名命谬摸�".split(""); +for(j = 0; j != D[195].length; ++j) if(D[195][j].charCodeAt(0) !== 0xFFFD) { e[D[195][j]] = 49920 + j; d[49920 + j] = D[195][j];} +D[196] = "����������������������������������������������������������������腀腁腂腃腄腅腇腉腍腎腏腒腖腗腘腛腜腝腞腟腡腢腣腤腦腨腪腫腬腯腲腳腵腶腷腸膁膃膄膅膆膇膉膋膌膍膎膐膒膓膔膕膖膗膙膚膞膟膠膡膢膤膥�膧膩膫膬膭膮膯膰膱膲膴膵膶膷膸膹膼膽膾膿臄臅臇臈臉臋臍臎臏臐臑臒臓摹蘑模膜磨摩魔抹末莫墨默沫漠寞陌谋牟某拇牡亩姆母墓暮幕募慕木目睦牧穆拿哪呐钠那娜纳氖乃奶耐奈南男难囊挠脑恼闹淖呢馁内嫩能妮霓倪泥尼拟你匿腻逆溺蔫拈年碾撵捻念娘酿鸟尿捏聂孽啮镊镍涅您柠狞凝宁�".split(""); +for(j = 0; j != D[196].length; ++j) if(D[196][j].charCodeAt(0) !== 0xFFFD) { e[D[196][j]] = 50176 + j; d[50176 + j] = D[196][j];} +D[197] = "����������������������������������������������������������������臔臕臖臗臘臙臚臛臜臝臞臟臠臡臢臤臥臦臨臩臫臮臯臰臱臲臵臶臷臸臹臺臽臿舃與興舉舊舋舎舏舑舓舕舖舗舘舙舚舝舠舤舥舦舧舩舮舲舺舼舽舿�艀艁艂艃艅艆艈艊艌艍艎艐艑艒艓艔艕艖艗艙艛艜艝艞艠艡艢艣艤艥艦艧艩拧泞牛扭钮纽脓浓农弄奴努怒女暖虐疟挪懦糯诺哦欧鸥殴藕呕偶沤啪趴爬帕怕琶拍排牌徘湃派攀潘盘磐盼畔判叛乓庞旁耪胖抛咆刨炮袍跑泡呸胚培裴赔陪配佩沛喷盆砰抨烹澎彭蓬棚硼篷膨朋鹏捧碰坯砒霹批披劈琵毗�".split(""); +for(j = 0; j != D[197].length; ++j) if(D[197][j].charCodeAt(0) !== 0xFFFD) { e[D[197][j]] = 50432 + j; d[50432 + j] = D[197][j];} +D[198] = "����������������������������������������������������������������艪艫艬艭艱艵艶艷艸艻艼芀芁芃芅芆芇芉芌芐芓芔芕芖芚芛芞芠芢芣芧芲芵芶芺芻芼芿苀苂苃苅苆苉苐苖苙苚苝苢苧苨苩苪苬苭苮苰苲苳苵苶苸�苺苼苽苾苿茀茊茋茍茐茒茓茖茘茙茝茞茟茠茡茢茣茤茥茦茩茪茮茰茲茷茻茽啤脾疲皮匹痞僻屁譬篇偏片骗飘漂瓢票撇瞥拼频贫品聘乒坪苹萍平凭瓶评屏坡泼颇婆破魄迫粕剖扑铺仆莆葡菩蒲埔朴圃普浦谱曝瀑期欺栖戚妻七凄漆柒沏其棋奇歧畦崎脐齐旗祈祁骑起岂乞企启契砌器气迄弃汽泣讫掐�".split(""); +for(j = 0; j != D[198].length; ++j) if(D[198][j].charCodeAt(0) !== 0xFFFD) { e[D[198][j]] = 50688 + j; d[50688 + j] = D[198][j];} +D[199] = "����������������������������������������������������������������茾茿荁荂荄荅荈荊荋荌荍荎荓荕荖荗荘荙荝荢荰荱荲荳荴荵荶荹荺荾荿莀莁莂莃莄莇莈莊莋莌莍莏莐莑莔莕莖莗莙莚莝莟莡莢莣莤莥莦莧莬莭莮�莯莵莻莾莿菂菃菄菆菈菉菋菍菎菐菑菒菓菕菗菙菚菛菞菢菣菤菦菧菨菫菬菭恰洽牵扦钎铅千迁签仟谦乾黔钱钳前潜遣浅谴堑嵌欠歉枪呛腔羌墙蔷强抢橇锹敲悄桥瞧乔侨巧鞘撬翘峭俏窍切茄且怯窃钦侵亲秦琴勤芹擒禽寝沁青轻氢倾卿清擎晴氰情顷请庆琼穷秋丘邱球求囚酋泅趋区蛆曲躯屈驱渠�".split(""); +for(j = 0; j != D[199].length; ++j) if(D[199][j].charCodeAt(0) !== 0xFFFD) { e[D[199][j]] = 50944 + j; d[50944 + j] = D[199][j];} +D[200] = "����������������������������������������������������������������菮華菳菴菵菶菷菺菻菼菾菿萀萂萅萇萈萉萊萐萒萓萔萕萖萗萙萚萛萞萟萠萡萢萣萩萪萫萬萭萮萯萰萲萳萴萵萶萷萹萺萻萾萿葀葁葂葃葄葅葇葈葉�葊葋葌葍葎葏葐葒葓葔葕葖葘葝葞葟葠葢葤葥葦葧葨葪葮葯葰葲葴葷葹葻葼取娶龋趣去圈颧权醛泉全痊拳犬券劝缺炔瘸却鹊榷确雀裙群然燃冉染瓤壤攘嚷让饶扰绕惹热壬仁人忍韧任认刃妊纫扔仍日戎茸蓉荣融熔溶容绒冗揉柔肉茹蠕儒孺如辱乳汝入褥软阮蕊瑞锐闰润若弱撒洒萨腮鳃塞赛三叁�".split(""); +for(j = 0; j != D[200].length; ++j) if(D[200][j].charCodeAt(0) !== 0xFFFD) { e[D[200][j]] = 51200 + j; d[51200 + j] = D[200][j];} +D[201] = "����������������������������������������������������������������葽葾葿蒀蒁蒃蒄蒅蒆蒊蒍蒏蒐蒑蒒蒓蒔蒕蒖蒘蒚蒛蒝蒞蒟蒠蒢蒣蒤蒥蒦蒧蒨蒩蒪蒫蒬蒭蒮蒰蒱蒳蒵蒶蒷蒻蒼蒾蓀蓂蓃蓅蓆蓇蓈蓋蓌蓎蓏蓒蓔蓕蓗�蓘蓙蓚蓛蓜蓞蓡蓢蓤蓧蓨蓩蓪蓫蓭蓮蓯蓱蓲蓳蓴蓵蓶蓷蓸蓹蓺蓻蓽蓾蔀蔁蔂伞散桑嗓丧搔骚扫嫂瑟色涩森僧莎砂杀刹沙纱傻啥煞筛晒珊苫杉山删煽衫闪陕擅赡膳善汕扇缮墒伤商赏晌上尚裳梢捎稍烧芍勺韶少哨邵绍奢赊蛇舌舍赦摄射慑涉社设砷申呻伸身深娠绅神沈审婶甚肾慎渗声生甥牲升绳�".split(""); +for(j = 0; j != D[201].length; ++j) if(D[201][j].charCodeAt(0) !== 0xFFFD) { e[D[201][j]] = 51456 + j; d[51456 + j] = D[201][j];} +D[202] = "����������������������������������������������������������������蔃蔄蔅蔆蔇蔈蔉蔊蔋蔍蔎蔏蔐蔒蔔蔕蔖蔘蔙蔛蔜蔝蔞蔠蔢蔣蔤蔥蔦蔧蔨蔩蔪蔭蔮蔯蔰蔱蔲蔳蔴蔵蔶蔾蔿蕀蕁蕂蕄蕅蕆蕇蕋蕌蕍蕎蕏蕐蕑蕒蕓蕔蕕�蕗蕘蕚蕛蕜蕝蕟蕠蕡蕢蕣蕥蕦蕧蕩蕪蕫蕬蕭蕮蕯蕰蕱蕳蕵蕶蕷蕸蕼蕽蕿薀薁省盛剩胜圣师失狮施湿诗尸虱十石拾时什食蚀实识史矢使屎驶始式示士世柿事拭誓逝势是嗜噬适仕侍释饰氏市恃室视试收手首守寿授售受瘦兽蔬枢梳殊抒输叔舒淑疏书赎孰熟薯暑曙署蜀黍鼠属术述树束戍竖墅庶数漱�".split(""); +for(j = 0; j != D[202].length; ++j) if(D[202][j].charCodeAt(0) !== 0xFFFD) { e[D[202][j]] = 51712 + j; d[51712 + j] = D[202][j];} +D[203] = "����������������������������������������������������������������薂薃薆薈薉薊薋薌薍薎薐薑薒薓薔薕薖薗薘薙薚薝薞薟薠薡薢薣薥薦薧薩薫薬薭薱薲薳薴薵薶薸薺薻薼薽薾薿藀藂藃藄藅藆藇藈藊藋藌藍藎藑藒�藔藖藗藘藙藚藛藝藞藟藠藡藢藣藥藦藧藨藪藫藬藭藮藯藰藱藲藳藴藵藶藷藸恕刷耍摔衰甩帅栓拴霜双爽谁水睡税吮瞬顺舜说硕朔烁斯撕嘶思私司丝死肆寺嗣四伺似饲巳松耸怂颂送宋讼诵搜艘擞嗽苏酥俗素速粟僳塑溯宿诉肃酸蒜算虽隋随绥髓碎岁穗遂隧祟孙损笋蓑梭唆缩琐索锁所塌他它她塔�".split(""); +for(j = 0; j != D[203].length; ++j) if(D[203][j].charCodeAt(0) !== 0xFFFD) { e[D[203][j]] = 51968 + j; d[51968 + j] = D[203][j];} +D[204] = "����������������������������������������������������������������藹藺藼藽藾蘀蘁蘂蘃蘄蘆蘇蘈蘉蘊蘋蘌蘍蘎蘏蘐蘒蘓蘔蘕蘗蘘蘙蘚蘛蘜蘝蘞蘟蘠蘡蘢蘣蘤蘥蘦蘨蘪蘫蘬蘭蘮蘯蘰蘱蘲蘳蘴蘵蘶蘷蘹蘺蘻蘽蘾蘿虀�虁虂虃虄虅虆虇虈虉虊虋虌虒虓處虖虗虘虙虛虜虝號虠虡虣虤虥虦虧虨虩虪獭挞蹋踏胎苔抬台泰酞太态汰坍摊贪瘫滩坛檀痰潭谭谈坦毯袒碳探叹炭汤塘搪堂棠膛唐糖倘躺淌趟烫掏涛滔绦萄桃逃淘陶讨套特藤腾疼誊梯剔踢锑提题蹄啼体替嚏惕涕剃屉天添填田甜恬舔腆挑条迢眺跳贴铁帖厅听烃�".split(""); +for(j = 0; j != D[204].length; ++j) if(D[204][j].charCodeAt(0) !== 0xFFFD) { e[D[204][j]] = 52224 + j; d[52224 + j] = D[204][j];} +D[205] = "����������������������������������������������������������������虭虯虰虲虳虴虵虶虷虸蚃蚄蚅蚆蚇蚈蚉蚎蚏蚐蚑蚒蚔蚖蚗蚘蚙蚚蚛蚞蚟蚠蚡蚢蚥蚦蚫蚭蚮蚲蚳蚷蚸蚹蚻蚼蚽蚾蚿蛁蛂蛃蛅蛈蛌蛍蛒蛓蛕蛖蛗蛚蛜�蛝蛠蛡蛢蛣蛥蛦蛧蛨蛪蛫蛬蛯蛵蛶蛷蛺蛻蛼蛽蛿蜁蜄蜅蜆蜋蜌蜎蜏蜐蜑蜔蜖汀廷停亭庭挺艇通桐酮瞳同铜彤童桶捅筒统痛偷投头透凸秃突图徒途涂屠土吐兔湍团推颓腿蜕褪退吞屯臀拖托脱鸵陀驮驼椭妥拓唾挖哇蛙洼娃瓦袜歪外豌弯湾玩顽丸烷完碗挽晚皖惋宛婉万腕汪王亡枉网往旺望忘妄威�".split(""); +for(j = 0; j != D[205].length; ++j) if(D[205][j].charCodeAt(0) !== 0xFFFD) { e[D[205][j]] = 52480 + j; d[52480 + j] = D[205][j];} +D[206] = "����������������������������������������������������������������蜙蜛蜝蜟蜠蜤蜦蜧蜨蜪蜫蜬蜭蜯蜰蜲蜳蜵蜶蜸蜹蜺蜼蜽蝀蝁蝂蝃蝄蝅蝆蝊蝋蝍蝏蝐蝑蝒蝔蝕蝖蝘蝚蝛蝜蝝蝞蝟蝡蝢蝦蝧蝨蝩蝪蝫蝬蝭蝯蝱蝲蝳蝵�蝷蝸蝹蝺蝿螀螁螄螆螇螉螊螌螎螏螐螑螒螔螕螖螘螙螚螛螜螝螞螠螡螢螣螤巍微危韦违桅围唯惟为潍维苇萎委伟伪尾纬未蔚味畏胃喂魏位渭谓尉慰卫瘟温蚊文闻纹吻稳紊问嗡翁瓮挝蜗涡窝我斡卧握沃巫呜钨乌污诬屋无芜梧吾吴毋武五捂午舞伍侮坞戊雾晤物勿务悟误昔熙析西硒矽晰嘻吸锡牺�".split(""); +for(j = 0; j != D[206].length; ++j) if(D[206][j].charCodeAt(0) !== 0xFFFD) { e[D[206][j]] = 52736 + j; d[52736 + j] = D[206][j];} +D[207] = "����������������������������������������������������������������螥螦螧螩螪螮螰螱螲螴螶螷螸螹螻螼螾螿蟁蟂蟃蟄蟅蟇蟈蟉蟌蟍蟎蟏蟐蟔蟕蟖蟗蟘蟙蟚蟜蟝蟞蟟蟡蟢蟣蟤蟦蟧蟨蟩蟫蟬蟭蟯蟰蟱蟲蟳蟴蟵蟶蟷蟸�蟺蟻蟼蟽蟿蠀蠁蠂蠄蠅蠆蠇蠈蠉蠋蠌蠍蠎蠏蠐蠑蠒蠔蠗蠘蠙蠚蠜蠝蠞蠟蠠蠣稀息希悉膝夕惜熄烯溪汐犀檄袭席习媳喜铣洗系隙戏细瞎虾匣霞辖暇峡侠狭下厦夏吓掀锨先仙鲜纤咸贤衔舷闲涎弦嫌显险现献县腺馅羡宪陷限线相厢镶香箱襄湘乡翔祥详想响享项巷橡像向象萧硝霄削哮嚣销消宵淆晓�".split(""); +for(j = 0; j != D[207].length; ++j) if(D[207][j].charCodeAt(0) !== 0xFFFD) { e[D[207][j]] = 52992 + j; d[52992 + j] = D[207][j];} +D[208] = "����������������������������������������������������������������蠤蠥蠦蠧蠨蠩蠪蠫蠬蠭蠮蠯蠰蠱蠳蠴蠵蠶蠷蠸蠺蠻蠽蠾蠿衁衂衃衆衇衈衉衊衋衎衏衐衑衒術衕衖衘衚衛衜衝衞衟衠衦衧衪衭衯衱衳衴衵衶衸衹衺�衻衼袀袃袆袇袉袊袌袎袏袐袑袓袔袕袗袘袙袚袛袝袞袟袠袡袣袥袦袧袨袩袪小孝校肖啸笑效楔些歇蝎鞋协挟携邪斜胁谐写械卸蟹懈泄泻谢屑薪芯锌欣辛新忻心信衅星腥猩惺兴刑型形邢行醒幸杏性姓兄凶胸匈汹雄熊休修羞朽嗅锈秀袖绣墟戌需虚嘘须徐许蓄酗叙旭序畜恤絮婿绪续轩喧宣悬旋玄�".split(""); +for(j = 0; j != D[208].length; ++j) if(D[208][j].charCodeAt(0) !== 0xFFFD) { e[D[208][j]] = 53248 + j; d[53248 + j] = D[208][j];} +D[209] = "����������������������������������������������������������������袬袮袯袰袲袳袴袵袶袸袹袺袻袽袾袿裀裃裄裇裈裊裋裌裍裏裐裑裓裖裗裚裛補裝裞裠裡裦裧裩裪裫裬裭裮裯裲裵裶裷裺裻製裿褀褁褃褄褅褆複褈�褉褋褌褍褎褏褑褔褕褖褗褘褜褝褞褟褠褢褣褤褦褧褨褩褬褭褮褯褱褲褳褵褷选癣眩绚靴薛学穴雪血勋熏循旬询寻驯巡殉汛训讯逊迅压押鸦鸭呀丫芽牙蚜崖衙涯雅哑亚讶焉咽阉烟淹盐严研蜒岩延言颜阎炎沿奄掩眼衍演艳堰燕厌砚雁唁彦焰宴谚验殃央鸯秧杨扬佯疡羊洋阳氧仰痒养样漾邀腰妖瑶�".split(""); +for(j = 0; j != D[209].length; ++j) if(D[209][j].charCodeAt(0) !== 0xFFFD) { e[D[209][j]] = 53504 + j; d[53504 + j] = D[209][j];} +D[210] = "����������������������������������������������������������������褸褹褺褻褼褽褾褿襀襂襃襅襆襇襈襉襊襋襌襍襎襏襐襑襒襓襔襕襖襗襘襙襚襛襜襝襠襡襢襣襤襥襧襨襩襪襫襬襭襮襯襰襱襲襳襴襵襶襷襸襹襺襼�襽襾覀覂覄覅覇覈覉覊見覌覍覎規覐覑覒覓覔覕視覗覘覙覚覛覜覝覞覟覠覡摇尧遥窑谣姚咬舀药要耀椰噎耶爷野冶也页掖业叶曳腋夜液一壹医揖铱依伊衣颐夷遗移仪胰疑沂宜姨彝椅蚁倚已乙矣以艺抑易邑屹亿役臆逸肄疫亦裔意毅忆义益溢诣议谊译异翼翌绎茵荫因殷音阴姻吟银淫寅饮尹引隐�".split(""); +for(j = 0; j != D[210].length; ++j) if(D[210][j].charCodeAt(0) !== 0xFFFD) { e[D[210][j]] = 53760 + j; d[53760 + j] = D[210][j];} +D[211] = "����������������������������������������������������������������覢覣覤覥覦覧覨覩親覫覬覭覮覯覰覱覲観覴覵覶覷覸覹覺覻覼覽覾覿觀觃觍觓觔觕觗觘觙觛觝觟觠觡觢觤觧觨觩觪觬觭觮觰觱觲觴觵觶觷觸觹觺�觻觼觽觾觿訁訂訃訄訅訆計訉訊訋訌訍討訏訐訑訒訓訔訕訖託記訙訚訛訜訝印英樱婴鹰应缨莹萤营荧蝇迎赢盈影颖硬映哟拥佣臃痈庸雍踊蛹咏泳涌永恿勇用幽优悠忧尤由邮铀犹油游酉有友右佑釉诱又幼迂淤于盂榆虞愚舆余俞逾鱼愉渝渔隅予娱雨与屿禹宇语羽玉域芋郁吁遇喻峪御愈欲狱育誉�".split(""); +for(j = 0; j != D[211].length; ++j) if(D[211][j].charCodeAt(0) !== 0xFFFD) { e[D[211][j]] = 54016 + j; d[54016 + j] = D[211][j];} +D[212] = "����������������������������������������������������������������訞訟訠訡訢訣訤訥訦訧訨訩訪訫訬設訮訯訰許訲訳訴訵訶訷訸訹診註証訽訿詀詁詂詃詄詅詆詇詉詊詋詌詍詎詏詐詑詒詓詔評詖詗詘詙詚詛詜詝詞�詟詠詡詢詣詤詥試詧詨詩詪詫詬詭詮詯詰話該詳詴詵詶詷詸詺詻詼詽詾詿誀浴寓裕预豫驭鸳渊冤元垣袁原援辕园员圆猿源缘远苑愿怨院曰约越跃钥岳粤月悦阅耘云郧匀陨允运蕴酝晕韵孕匝砸杂栽哉灾宰载再在咱攒暂赞赃脏葬遭糟凿藻枣早澡蚤躁噪造皂灶燥责择则泽贼怎增憎曾赠扎喳渣札轧�".split(""); +for(j = 0; j != D[212].length; ++j) if(D[212][j].charCodeAt(0) !== 0xFFFD) { e[D[212][j]] = 54272 + j; d[54272 + j] = D[212][j];} +D[213] = "����������������������������������������������������������������誁誂誃誄誅誆誇誈誋誌認誎誏誐誑誒誔誕誖誗誘誙誚誛誜誝語誟誠誡誢誣誤誥誦誧誨誩說誫説読誮誯誰誱課誳誴誵誶誷誸誹誺誻誼誽誾調諀諁諂�諃諄諅諆談諈諉諊請諌諍諎諏諐諑諒諓諔諕論諗諘諙諚諛諜諝諞諟諠諡諢諣铡闸眨栅榨咋乍炸诈摘斋宅窄债寨瞻毡詹粘沾盏斩辗崭展蘸栈占战站湛绽樟章彰漳张掌涨杖丈帐账仗胀瘴障招昭找沼赵照罩兆肇召遮折哲蛰辙者锗蔗这浙珍斟真甄砧臻贞针侦枕疹诊震振镇阵蒸挣睁征狰争怔整拯正政�".split(""); +for(j = 0; j != D[213].length; ++j) if(D[213][j].charCodeAt(0) !== 0xFFFD) { e[D[213][j]] = 54528 + j; d[54528 + j] = D[213][j];} +D[214] = "����������������������������������������������������������������諤諥諦諧諨諩諪諫諬諭諮諯諰諱諲諳諴諵諶諷諸諹諺諻諼諽諾諿謀謁謂謃謄謅謆謈謉謊謋謌謍謎謏謐謑謒謓謔謕謖謗謘謙謚講謜謝謞謟謠謡謢謣�謤謥謧謨謩謪謫謬謭謮謯謰謱謲謳謴謵謶謷謸謹謺謻謼謽謾謿譀譁譂譃譄譅帧症郑证芝枝支吱蜘知肢脂汁之织职直植殖执值侄址指止趾只旨纸志挚掷至致置帜峙制智秩稚质炙痔滞治窒中盅忠钟衷终种肿重仲众舟周州洲诌粥轴肘帚咒皱宙昼骤珠株蛛朱猪诸诛逐竹烛煮拄瞩嘱主著柱助蛀贮铸筑�".split(""); +for(j = 0; j != D[214].length; ++j) if(D[214][j].charCodeAt(0) !== 0xFFFD) { e[D[214][j]] = 54784 + j; d[54784 + j] = D[214][j];} +D[215] = "����������������������������������������������������������������譆譇譈證譊譋譌譍譎譏譐譑譒譓譔譕譖譗識譙譚譛譜譝譞譟譠譡譢譣譤譥譧譨譩譪譫譭譮譯議譱譲譳譴譵譶護譸譹譺譻譼譽譾譿讀讁讂讃讄讅讆�讇讈讉變讋讌讍讎讏讐讑讒讓讔讕讖讗讘讙讚讛讜讝讞讟讬讱讻诇诐诪谉谞住注祝驻抓爪拽专砖转撰赚篆桩庄装妆撞壮状椎锥追赘坠缀谆准捉拙卓桌琢茁酌啄着灼浊兹咨资姿滋淄孜紫仔籽滓子自渍字鬃棕踪宗综总纵邹走奏揍租足卒族祖诅阻组钻纂嘴醉最罪尊遵昨左佐柞做作坐座�".split(""); +for(j = 0; j != D[215].length; ++j) if(D[215][j].charCodeAt(0) !== 0xFFFD) { e[D[215][j]] = 55040 + j; d[55040 + j] = D[215][j];} +D[216] = "����������������������������������������������������������������谸谹谺谻谼谽谾谿豀豂豃豄豅豈豊豋豍豎豏豐豑豒豓豔豖豗豘豙豛豜豝豞豟豠豣豤豥豦豧豨豩豬豭豮豯豰豱豲豴豵豶豷豻豼豽豾豿貀貁貃貄貆貇�貈貋貍貎貏貐貑貒貓貕貖貗貙貚貛貜貝貞貟負財貢貣貤貥貦貧貨販貪貫責貭亍丌兀丐廿卅丕亘丞鬲孬噩丨禺丿匕乇夭爻卮氐囟胤馗毓睾鼗丶亟鼐乜乩亓芈孛啬嘏仄厍厝厣厥厮靥赝匚叵匦匮匾赜卦卣刂刈刎刭刳刿剀剌剞剡剜蒯剽劂劁劐劓冂罔亻仃仉仂仨仡仫仞伛仳伢佤仵伥伧伉伫佞佧攸佚佝�".split(""); +for(j = 0; j != D[216].length; ++j) if(D[216][j].charCodeAt(0) !== 0xFFFD) { e[D[216][j]] = 55296 + j; d[55296 + j] = D[216][j];} +D[217] = "����������������������������������������������������������������貮貯貰貱貲貳貴貵貶買貸貹貺費貼貽貾貿賀賁賂賃賄賅賆資賈賉賊賋賌賍賎賏賐賑賒賓賔賕賖賗賘賙賚賛賜賝賞賟賠賡賢賣賤賥賦賧賨賩質賫賬�賭賮賯賰賱賲賳賴賵賶賷賸賹賺賻購賽賾賿贀贁贂贃贄贅贆贇贈贉贊贋贌贍佟佗伲伽佶佴侑侉侃侏佾佻侪佼侬侔俦俨俪俅俚俣俜俑俟俸倩偌俳倬倏倮倭俾倜倌倥倨偾偃偕偈偎偬偻傥傧傩傺僖儆僭僬僦僮儇儋仝氽佘佥俎龠汆籴兮巽黉馘冁夔勹匍訇匐凫夙兕亠兖亳衮袤亵脔裒禀嬴蠃羸冫冱冽冼�".split(""); +for(j = 0; j != D[217].length; ++j) if(D[217][j].charCodeAt(0) !== 0xFFFD) { e[D[217][j]] = 55552 + j; d[55552 + j] = D[217][j];} +D[218] = "����������������������������������������������������������������贎贏贐贑贒贓贔贕贖贗贘贙贚贛贜贠赑赒赗赟赥赨赩赪赬赮赯赱赲赸赹赺赻赼赽赾赿趀趂趃趆趇趈趉趌趍趎趏趐趒趓趕趖趗趘趙趚趛趜趝趞趠趡�趢趤趥趦趧趨趩趪趫趬趭趮趯趰趲趶趷趹趻趽跀跁跂跅跇跈跉跊跍跐跒跓跔凇冖冢冥讠讦讧讪讴讵讷诂诃诋诏诎诒诓诔诖诘诙诜诟诠诤诨诩诮诰诳诶诹诼诿谀谂谄谇谌谏谑谒谔谕谖谙谛谘谝谟谠谡谥谧谪谫谮谯谲谳谵谶卩卺阝阢阡阱阪阽阼陂陉陔陟陧陬陲陴隈隍隗隰邗邛邝邙邬邡邴邳邶邺�".split(""); +for(j = 0; j != D[218].length; ++j) if(D[218][j].charCodeAt(0) !== 0xFFFD) { e[D[218][j]] = 55808 + j; d[55808 + j] = D[218][j];} +D[219] = "����������������������������������������������������������������跕跘跙跜跠跡跢跥跦跧跩跭跮跰跱跲跴跶跼跾跿踀踁踂踃踄踆踇踈踋踍踎踐踑踒踓踕踖踗踘踙踚踛踜踠踡踤踥踦踧踨踫踭踰踲踳踴踶踷踸踻踼踾�踿蹃蹅蹆蹌蹍蹎蹏蹐蹓蹔蹕蹖蹗蹘蹚蹛蹜蹝蹞蹟蹠蹡蹢蹣蹤蹥蹧蹨蹪蹫蹮蹱邸邰郏郅邾郐郄郇郓郦郢郜郗郛郫郯郾鄄鄢鄞鄣鄱鄯鄹酃酆刍奂劢劬劭劾哿勐勖勰叟燮矍廴凵凼鬯厶弁畚巯坌垩垡塾墼壅壑圩圬圪圳圹圮圯坜圻坂坩垅坫垆坼坻坨坭坶坳垭垤垌垲埏垧垴垓垠埕埘埚埙埒垸埴埯埸埤埝�".split(""); +for(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];} +D[220] = "����������������������������������������������������������������蹳蹵蹷蹸蹹蹺蹻蹽蹾躀躂躃躄躆躈躉躊躋躌躍躎躑躒躓躕躖躗躘躙躚躛躝躟躠躡躢躣躤躥躦躧躨躩躪躭躮躰躱躳躴躵躶躷躸躹躻躼躽躾躿軀軁軂�軃軄軅軆軇軈軉車軋軌軍軏軐軑軒軓軔軕軖軗軘軙軚軛軜軝軞軟軠軡転軣軤堋堍埽埭堀堞堙塄堠塥塬墁墉墚墀馨鼙懿艹艽艿芏芊芨芄芎芑芗芙芫芸芾芰苈苊苣芘芷芮苋苌苁芩芴芡芪芟苄苎芤苡茉苷苤茏茇苜苴苒苘茌苻苓茑茚茆茔茕苠苕茜荑荛荜茈莒茼茴茱莛荞茯荏荇荃荟荀茗荠茭茺茳荦荥�".split(""); +for(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];} +D[221] = "����������������������������������������������������������������軥軦軧軨軩軪軫軬軭軮軯軰軱軲軳軴軵軶軷軸軹軺軻軼軽軾軿輀輁輂較輄輅輆輇輈載輊輋輌輍輎輏輐輑輒輓輔輕輖輗輘輙輚輛輜輝輞輟輠輡輢輣�輤輥輦輧輨輩輪輫輬輭輮輯輰輱輲輳輴輵輶輷輸輹輺輻輼輽輾輿轀轁轂轃轄荨茛荩荬荪荭荮莰荸莳莴莠莪莓莜莅荼莶莩荽莸荻莘莞莨莺莼菁萁菥菘堇萘萋菝菽菖萜萸萑萆菔菟萏萃菸菹菪菅菀萦菰菡葜葑葚葙葳蒇蒈葺蒉葸萼葆葩葶蒌蒎萱葭蓁蓍蓐蓦蒽蓓蓊蒿蒺蓠蒡蒹蒴蒗蓥蓣蔌甍蔸蓰蔹蔟蔺�".split(""); +for(j = 0; j != D[221].length; ++j) if(D[221][j].charCodeAt(0) !== 0xFFFD) { e[D[221][j]] = 56576 + j; d[56576 + j] = D[221][j];} +D[222] = "����������������������������������������������������������������轅轆轇轈轉轊轋轌轍轎轏轐轑轒轓轔轕轖轗轘轙轚轛轜轝轞轟轠轡轢轣轤轥轪辀辌辒辝辠辡辢辤辥辦辧辪辬辭辮辯農辳辴辵辷辸辺辻込辿迀迃迆�迉迊迋迌迍迏迒迖迗迚迠迡迣迧迬迯迱迲迴迵迶迺迻迼迾迿逇逈逌逎逓逕逘蕖蔻蓿蓼蕙蕈蕨蕤蕞蕺瞢蕃蕲蕻薤薨薇薏蕹薮薜薅薹薷薰藓藁藜藿蘧蘅蘩蘖蘼廾弈夼奁耷奕奚奘匏尢尥尬尴扌扪抟抻拊拚拗拮挢拶挹捋捃掭揶捱捺掎掴捭掬掊捩掮掼揲揸揠揿揄揞揎摒揆掾摅摁搋搛搠搌搦搡摞撄摭撖�".split(""); +for(j = 0; j != D[222].length; ++j) if(D[222][j].charCodeAt(0) !== 0xFFFD) { e[D[222][j]] = 56832 + j; d[56832 + j] = D[222][j];} +D[223] = "����������������������������������������������������������������這逜連逤逥逧逨逩逪逫逬逰週進逳逴逷逹逺逽逿遀遃遅遆遈遉遊運遌過達違遖遙遚遜遝遞遟遠遡遤遦遧適遪遫遬遯遰遱遲遳遶遷選遹遺遻遼遾邁�還邅邆邇邉邊邌邍邎邏邐邒邔邖邘邚邜邞邟邠邤邥邧邨邩邫邭邲邷邼邽邿郀摺撷撸撙撺擀擐擗擤擢攉攥攮弋忒甙弑卟叱叽叩叨叻吒吖吆呋呒呓呔呖呃吡呗呙吣吲咂咔呷呱呤咚咛咄呶呦咝哐咭哂咴哒咧咦哓哔呲咣哕咻咿哌哙哚哜咩咪咤哝哏哞唛哧唠哽唔哳唢唣唏唑唧唪啧喏喵啉啭啁啕唿啐唼�".split(""); +for(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];} +D[224] = "����������������������������������������������������������������郂郃郆郈郉郋郌郍郒郔郕郖郘郙郚郞郟郠郣郤郥郩郪郬郮郰郱郲郳郵郶郷郹郺郻郼郿鄀鄁鄃鄅鄆鄇鄈鄉鄊鄋鄌鄍鄎鄏鄐鄑鄒鄓鄔鄕鄖鄗鄘鄚鄛鄜�鄝鄟鄠鄡鄤鄥鄦鄧鄨鄩鄪鄫鄬鄭鄮鄰鄲鄳鄴鄵鄶鄷鄸鄺鄻鄼鄽鄾鄿酀酁酂酄唷啖啵啶啷唳唰啜喋嗒喃喱喹喈喁喟啾嗖喑啻嗟喽喾喔喙嗪嗷嗉嘟嗑嗫嗬嗔嗦嗝嗄嗯嗥嗲嗳嗌嗍嗨嗵嗤辔嘞嘈嘌嘁嘤嘣嗾嘀嘧嘭噘嘹噗嘬噍噢噙噜噌噔嚆噤噱噫噻噼嚅嚓嚯囔囗囝囡囵囫囹囿圄圊圉圜帏帙帔帑帱帻帼�".split(""); +for(j = 0; j != D[224].length; ++j) if(D[224][j].charCodeAt(0) !== 0xFFFD) { e[D[224][j]] = 57344 + j; d[57344 + j] = D[224][j];} +D[225] = "����������������������������������������������������������������酅酇酈酑酓酔酕酖酘酙酛酜酟酠酦酧酨酫酭酳酺酻酼醀醁醂醃醄醆醈醊醎醏醓醔醕醖醗醘醙醜醝醞醟醠醡醤醥醦醧醨醩醫醬醰醱醲醳醶醷醸醹醻�醼醽醾醿釀釁釂釃釄釅釆釈釋釐釒釓釔釕釖釗釘釙釚釛針釞釟釠釡釢釣釤釥帷幄幔幛幞幡岌屺岍岐岖岈岘岙岑岚岜岵岢岽岬岫岱岣峁岷峄峒峤峋峥崂崃崧崦崮崤崞崆崛嵘崾崴崽嵬嵛嵯嵝嵫嵋嵊嵩嵴嶂嶙嶝豳嶷巅彳彷徂徇徉後徕徙徜徨徭徵徼衢彡犭犰犴犷犸狃狁狎狍狒狨狯狩狲狴狷猁狳猃狺�".split(""); +for(j = 0; j != D[225].length; ++j) if(D[225][j].charCodeAt(0) !== 0xFFFD) { e[D[225][j]] = 57600 + j; d[57600 + j] = D[225][j];} +D[226] = "����������������������������������������������������������������釦釧釨釩釪釫釬釭釮釯釰釱釲釳釴釵釶釷釸釹釺釻釼釽釾釿鈀鈁鈂鈃鈄鈅鈆鈇鈈鈉鈊鈋鈌鈍鈎鈏鈐鈑鈒鈓鈔鈕鈖鈗鈘鈙鈚鈛鈜鈝鈞鈟鈠鈡鈢鈣鈤�鈥鈦鈧鈨鈩鈪鈫鈬鈭鈮鈯鈰鈱鈲鈳鈴鈵鈶鈷鈸鈹鈺鈻鈼鈽鈾鈿鉀鉁鉂鉃鉄鉅狻猗猓猡猊猞猝猕猢猹猥猬猸猱獐獍獗獠獬獯獾舛夥飧夤夂饣饧饨饩饪饫饬饴饷饽馀馄馇馊馍馐馑馓馔馕庀庑庋庖庥庠庹庵庾庳赓廒廑廛廨廪膺忄忉忖忏怃忮怄忡忤忾怅怆忪忭忸怙怵怦怛怏怍怩怫怊怿怡恸恹恻恺恂�".split(""); +for(j = 0; j != D[226].length; ++j) if(D[226][j].charCodeAt(0) !== 0xFFFD) { e[D[226][j]] = 57856 + j; d[57856 + j] = D[226][j];} +D[227] = "����������������������������������������������������������������鉆鉇鉈鉉鉊鉋鉌鉍鉎鉏鉐鉑鉒鉓鉔鉕鉖鉗鉘鉙鉚鉛鉜鉝鉞鉟鉠鉡鉢鉣鉤鉥鉦鉧鉨鉩鉪鉫鉬鉭鉮鉯鉰鉱鉲鉳鉵鉶鉷鉸鉹鉺鉻鉼鉽鉾鉿銀銁銂銃銄銅�銆銇銈銉銊銋銌銍銏銐銑銒銓銔銕銖銗銘銙銚銛銜銝銞銟銠銡銢銣銤銥銦銧恪恽悖悚悭悝悃悒悌悛惬悻悱惝惘惆惚悴愠愦愕愣惴愀愎愫慊慵憬憔憧憷懔懵忝隳闩闫闱闳闵闶闼闾阃阄阆阈阊阋阌阍阏阒阕阖阗阙阚丬爿戕氵汔汜汊沣沅沐沔沌汨汩汴汶沆沩泐泔沭泷泸泱泗沲泠泖泺泫泮沱泓泯泾�".split(""); +for(j = 0; j != D[227].length; ++j) if(D[227][j].charCodeAt(0) !== 0xFFFD) { e[D[227][j]] = 58112 + j; d[58112 + j] = D[227][j];} +D[228] = "����������������������������������������������������������������銨銩銪銫銬銭銯銰銱銲銳銴銵銶銷銸銹銺銻銼銽銾銿鋀鋁鋂鋃鋄鋅鋆鋇鋉鋊鋋鋌鋍鋎鋏鋐鋑鋒鋓鋔鋕鋖鋗鋘鋙鋚鋛鋜鋝鋞鋟鋠鋡鋢鋣鋤鋥鋦鋧鋨�鋩鋪鋫鋬鋭鋮鋯鋰鋱鋲鋳鋴鋵鋶鋷鋸鋹鋺鋻鋼鋽鋾鋿錀錁錂錃錄錅錆錇錈錉洹洧洌浃浈洇洄洙洎洫浍洮洵洚浏浒浔洳涑浯涞涠浞涓涔浜浠浼浣渚淇淅淞渎涿淠渑淦淝淙渖涫渌涮渫湮湎湫溲湟溆湓湔渲渥湄滟溱溘滠漭滢溥溧溽溻溷滗溴滏溏滂溟潢潆潇漤漕滹漯漶潋潴漪漉漩澉澍澌潸潲潼潺濑�".split(""); +for(j = 0; j != D[228].length; ++j) if(D[228][j].charCodeAt(0) !== 0xFFFD) { e[D[228][j]] = 58368 + j; d[58368 + j] = D[228][j];} +D[229] = "����������������������������������������������������������������錊錋錌錍錎錏錐錑錒錓錔錕錖錗錘錙錚錛錜錝錞錟錠錡錢錣錤錥錦錧錨錩錪錫錬錭錮錯錰錱録錳錴錵錶錷錸錹錺錻錼錽錿鍀鍁鍂鍃鍄鍅鍆鍇鍈鍉�鍊鍋鍌鍍鍎鍏鍐鍑鍒鍓鍔鍕鍖鍗鍘鍙鍚鍛鍜鍝鍞鍟鍠鍡鍢鍣鍤鍥鍦鍧鍨鍩鍫濉澧澹澶濂濡濮濞濠濯瀚瀣瀛瀹瀵灏灞宀宄宕宓宥宸甯骞搴寤寮褰寰蹇謇辶迓迕迥迮迤迩迦迳迨逅逄逋逦逑逍逖逡逵逶逭逯遄遑遒遐遨遘遢遛暹遴遽邂邈邃邋彐彗彖彘尻咫屐屙孱屣屦羼弪弩弭艴弼鬻屮妁妃妍妩妪妣�".split(""); +for(j = 0; j != D[229].length; ++j) if(D[229][j].charCodeAt(0) !== 0xFFFD) { e[D[229][j]] = 58624 + j; d[58624 + j] = D[229][j];} +D[230] = "����������������������������������������������������������������鍬鍭鍮鍯鍰鍱鍲鍳鍴鍵鍶鍷鍸鍹鍺鍻鍼鍽鍾鍿鎀鎁鎂鎃鎄鎅鎆鎇鎈鎉鎊鎋鎌鎍鎎鎐鎑鎒鎓鎔鎕鎖鎗鎘鎙鎚鎛鎜鎝鎞鎟鎠鎡鎢鎣鎤鎥鎦鎧鎨鎩鎪鎫�鎬鎭鎮鎯鎰鎱鎲鎳鎴鎵鎶鎷鎸鎹鎺鎻鎼鎽鎾鎿鏀鏁鏂鏃鏄鏅鏆鏇鏈鏉鏋鏌鏍妗姊妫妞妤姒妲妯姗妾娅娆姝娈姣姘姹娌娉娲娴娑娣娓婀婧婊婕娼婢婵胬媪媛婷婺媾嫫媲嫒嫔媸嫠嫣嫱嫖嫦嫘嫜嬉嬗嬖嬲嬷孀尕尜孚孥孳孑孓孢驵驷驸驺驿驽骀骁骅骈骊骐骒骓骖骘骛骜骝骟骠骢骣骥骧纟纡纣纥纨纩�".split(""); +for(j = 0; j != D[230].length; ++j) if(D[230][j].charCodeAt(0) !== 0xFFFD) { e[D[230][j]] = 58880 + j; d[58880 + j] = D[230][j];} +D[231] = "����������������������������������������������������������������鏎鏏鏐鏑鏒鏓鏔鏕鏗鏘鏙鏚鏛鏜鏝鏞鏟鏠鏡鏢鏣鏤鏥鏦鏧鏨鏩鏪鏫鏬鏭鏮鏯鏰鏱鏲鏳鏴鏵鏶鏷鏸鏹鏺鏻鏼鏽鏾鏿鐀鐁鐂鐃鐄鐅鐆鐇鐈鐉鐊鐋鐌鐍�鐎鐏鐐鐑鐒鐓鐔鐕鐖鐗鐘鐙鐚鐛鐜鐝鐞鐟鐠鐡鐢鐣鐤鐥鐦鐧鐨鐩鐪鐫鐬鐭鐮纭纰纾绀绁绂绉绋绌绐绔绗绛绠绡绨绫绮绯绱绲缍绶绺绻绾缁缂缃缇缈缋缌缏缑缒缗缙缜缛缟缡缢缣缤缥缦缧缪缫缬缭缯缰缱缲缳缵幺畿巛甾邕玎玑玮玢玟珏珂珑玷玳珀珉珈珥珙顼琊珩珧珞玺珲琏琪瑛琦琥琨琰琮琬�".split(""); +for(j = 0; j != D[231].length; ++j) if(D[231][j].charCodeAt(0) !== 0xFFFD) { e[D[231][j]] = 59136 + j; d[59136 + j] = D[231][j];} +D[232] = "����������������������������������������������������������������鐯鐰鐱鐲鐳鐴鐵鐶鐷鐸鐹鐺鐻鐼鐽鐿鑀鑁鑂鑃鑄鑅鑆鑇鑈鑉鑊鑋鑌鑍鑎鑏鑐鑑鑒鑓鑔鑕鑖鑗鑘鑙鑚鑛鑜鑝鑞鑟鑠鑡鑢鑣鑤鑥鑦鑧鑨鑩鑪鑬鑭鑮鑯�鑰鑱鑲鑳鑴鑵鑶鑷鑸鑹鑺鑻鑼鑽鑾鑿钀钁钂钃钄钑钖钘铇铏铓铔铚铦铻锜锠琛琚瑁瑜瑗瑕瑙瑷瑭瑾璜璎璀璁璇璋璞璨璩璐璧瓒璺韪韫韬杌杓杞杈杩枥枇杪杳枘枧杵枨枞枭枋杷杼柰栉柘栊柩枰栌柙枵柚枳柝栀柃枸柢栎柁柽栲栳桠桡桎桢桄桤梃栝桕桦桁桧桀栾桊桉栩梵梏桴桷梓桫棂楮棼椟椠棹�".split(""); +for(j = 0; j != D[232].length; ++j) if(D[232][j].charCodeAt(0) !== 0xFFFD) { e[D[232][j]] = 59392 + j; d[59392 + j] = D[232][j];} +D[233] = "����������������������������������������������������������������锧锳锽镃镈镋镕镚镠镮镴镵長镸镹镺镻镼镽镾門閁閂閃閄閅閆閇閈閉閊開閌閍閎閏閐閑閒間閔閕閖閗閘閙閚閛閜閝閞閟閠閡関閣閤閥閦閧閨閩閪�閫閬閭閮閯閰閱閲閳閴閵閶閷閸閹閺閻閼閽閾閿闀闁闂闃闄闅闆闇闈闉闊闋椤棰椋椁楗棣椐楱椹楠楂楝榄楫榀榘楸椴槌榇榈槎榉楦楣楹榛榧榻榫榭槔榱槁槊槟榕槠榍槿樯槭樗樘橥槲橄樾檠橐橛樵檎橹樽樨橘橼檑檐檩檗檫猷獒殁殂殇殄殒殓殍殚殛殡殪轫轭轱轲轳轵轶轸轷轹轺轼轾辁辂辄辇辋�".split(""); +for(j = 0; j != D[233].length; ++j) if(D[233][j].charCodeAt(0) !== 0xFFFD) { e[D[233][j]] = 59648 + j; d[59648 + j] = D[233][j];} +D[234] = "����������������������������������������������������������������闌闍闎闏闐闑闒闓闔闕闖闗闘闙闚闛關闝闞闟闠闡闢闣闤闥闦闧闬闿阇阓阘阛阞阠阣阤阥阦阧阨阩阫阬阭阯阰阷阸阹阺阾陁陃陊陎陏陑陒陓陖陗�陘陙陚陜陝陞陠陣陥陦陫陭陮陯陰陱陳陸陹険陻陼陽陾陿隀隁隂隃隄隇隉隊辍辎辏辘辚軎戋戗戛戟戢戡戥戤戬臧瓯瓴瓿甏甑甓攴旮旯旰昊昙杲昃昕昀炅曷昝昴昱昶昵耆晟晔晁晏晖晡晗晷暄暌暧暝暾曛曜曦曩贲贳贶贻贽赀赅赆赈赉赇赍赕赙觇觊觋觌觎觏觐觑牮犟牝牦牯牾牿犄犋犍犏犒挈挲掰�".split(""); +for(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];} +D[235] = "����������������������������������������������������������������隌階隑隒隓隕隖隚際隝隞隟隠隡隢隣隤隥隦隨隩險隫隬隭隮隯隱隲隴隵隷隸隺隻隿雂雃雈雊雋雐雑雓雔雖雗雘雙雚雛雜雝雞雟雡離難雤雥雦雧雫�雬雭雮雰雱雲雴雵雸雺電雼雽雿霂霃霅霊霋霌霐霑霒霔霕霗霘霙霚霛霝霟霠搿擘耄毪毳毽毵毹氅氇氆氍氕氘氙氚氡氩氤氪氲攵敕敫牍牒牖爰虢刖肟肜肓肼朊肽肱肫肭肴肷胧胨胩胪胛胂胄胙胍胗朐胝胫胱胴胭脍脎胲胼朕脒豚脶脞脬脘脲腈腌腓腴腙腚腱腠腩腼腽腭腧塍媵膈膂膑滕膣膪臌朦臊膻�".split(""); +for(j = 0; j != D[235].length; ++j) if(D[235][j].charCodeAt(0) !== 0xFFFD) { e[D[235][j]] = 60160 + j; d[60160 + j] = D[235][j];} +D[236] = "����������������������������������������������������������������霡霢霣霤霥霦霧霨霩霫霬霮霯霱霳霴霵霶霷霺霻霼霽霿靀靁靂靃靄靅靆靇靈靉靊靋靌靍靎靏靐靑靔靕靗靘靚靜靝靟靣靤靦靧靨靪靫靬靭靮靯靰靱�靲靵靷靸靹靺靻靽靾靿鞀鞁鞂鞃鞄鞆鞇鞈鞉鞊鞌鞎鞏鞐鞓鞕鞖鞗鞙鞚鞛鞜鞝臁膦欤欷欹歃歆歙飑飒飓飕飙飚殳彀毂觳斐齑斓於旆旄旃旌旎旒旖炀炜炖炝炻烀炷炫炱烨烊焐焓焖焯焱煳煜煨煅煲煊煸煺熘熳熵熨熠燠燔燧燹爝爨灬焘煦熹戾戽扃扈扉礻祀祆祉祛祜祓祚祢祗祠祯祧祺禅禊禚禧禳忑忐�".split(""); +for(j = 0; j != D[236].length; ++j) if(D[236][j].charCodeAt(0) !== 0xFFFD) { e[D[236][j]] = 60416 + j; d[60416 + j] = D[236][j];} +D[237] = "����������������������������������������������������������������鞞鞟鞡鞢鞤鞥鞦鞧鞨鞩鞪鞬鞮鞰鞱鞳鞵鞶鞷鞸鞹鞺鞻鞼鞽鞾鞿韀韁韂韃韄韅韆韇韈韉韊韋韌韍韎韏韐韑韒韓韔韕韖韗韘韙韚韛韜韝韞韟韠韡韢韣�韤韥韨韮韯韰韱韲韴韷韸韹韺韻韼韽韾響頀頁頂頃頄項順頇須頉頊頋頌頍頎怼恝恚恧恁恙恣悫愆愍慝憩憝懋懑戆肀聿沓泶淼矶矸砀砉砗砘砑斫砭砜砝砹砺砻砟砼砥砬砣砩硎硭硖硗砦硐硇硌硪碛碓碚碇碜碡碣碲碹碥磔磙磉磬磲礅磴礓礤礞礴龛黹黻黼盱眄眍盹眇眈眚眢眙眭眦眵眸睐睑睇睃睚睨�".split(""); +for(j = 0; j != D[237].length; ++j) if(D[237][j].charCodeAt(0) !== 0xFFFD) { e[D[237][j]] = 60672 + j; d[60672 + j] = D[237][j];} +D[238] = "����������������������������������������������������������������頏預頑頒頓頔頕頖頗領頙頚頛頜頝頞頟頠頡頢頣頤頥頦頧頨頩頪頫頬頭頮頯頰頱頲頳頴頵頶頷頸頹頺頻頼頽頾頿顀顁顂顃顄顅顆顇顈顉顊顋題額�顎顏顐顑顒顓顔顕顖顗願顙顚顛顜顝類顟顠顡顢顣顤顥顦顧顨顩顪顫顬顭顮睢睥睿瞍睽瞀瞌瞑瞟瞠瞰瞵瞽町畀畎畋畈畛畲畹疃罘罡罟詈罨罴罱罹羁罾盍盥蠲钅钆钇钋钊钌钍钏钐钔钗钕钚钛钜钣钤钫钪钭钬钯钰钲钴钶钷钸钹钺钼钽钿铄铈铉铊铋铌铍铎铐铑铒铕铖铗铙铘铛铞铟铠铢铤铥铧铨铪�".split(""); +for(j = 0; j != D[238].length; ++j) if(D[238][j].charCodeAt(0) !== 0xFFFD) { e[D[238][j]] = 60928 + j; d[60928 + j] = D[238][j];} +D[239] = "����������������������������������������������������������������顯顰顱顲顳顴颋颎颒颕颙颣風颩颪颫颬颭颮颯颰颱颲颳颴颵颶颷颸颹颺颻颼颽颾颿飀飁飂飃飄飅飆飇飈飉飊飋飌飍飏飐飔飖飗飛飜飝飠飡飢飣飤�飥飦飩飪飫飬飭飮飯飰飱飲飳飴飵飶飷飸飹飺飻飼飽飾飿餀餁餂餃餄餅餆餇铩铫铮铯铳铴铵铷铹铼铽铿锃锂锆锇锉锊锍锎锏锒锓锔锕锖锘锛锝锞锟锢锪锫锩锬锱锲锴锶锷锸锼锾锿镂锵镄镅镆镉镌镎镏镒镓镔镖镗镘镙镛镞镟镝镡镢镤镥镦镧镨镩镪镫镬镯镱镲镳锺矧矬雉秕秭秣秫稆嵇稃稂稞稔�".split(""); +for(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];} +D[240] = "����������������������������������������������������������������餈餉養餋餌餎餏餑餒餓餔餕餖餗餘餙餚餛餜餝餞餟餠餡餢餣餤餥餦餧館餩餪餫餬餭餯餰餱餲餳餴餵餶餷餸餹餺餻餼餽餾餿饀饁饂饃饄饅饆饇饈饉�饊饋饌饍饎饏饐饑饒饓饖饗饘饙饚饛饜饝饞饟饠饡饢饤饦饳饸饹饻饾馂馃馉稹稷穑黏馥穰皈皎皓皙皤瓞瓠甬鸠鸢鸨鸩鸪鸫鸬鸲鸱鸶鸸鸷鸹鸺鸾鹁鹂鹄鹆鹇鹈鹉鹋鹌鹎鹑鹕鹗鹚鹛鹜鹞鹣鹦鹧鹨鹩鹪鹫鹬鹱鹭鹳疒疔疖疠疝疬疣疳疴疸痄疱疰痃痂痖痍痣痨痦痤痫痧瘃痱痼痿瘐瘀瘅瘌瘗瘊瘥瘘瘕瘙�".split(""); +for(j = 0; j != D[240].length; ++j) if(D[240][j].charCodeAt(0) !== 0xFFFD) { e[D[240][j]] = 61440 + j; d[61440 + j] = D[240][j];} +D[241] = "����������������������������������������������������������������馌馎馚馛馜馝馞馟馠馡馢馣馤馦馧馩馪馫馬馭馮馯馰馱馲馳馴馵馶馷馸馹馺馻馼馽馾馿駀駁駂駃駄駅駆駇駈駉駊駋駌駍駎駏駐駑駒駓駔駕駖駗駘�駙駚駛駜駝駞駟駠駡駢駣駤駥駦駧駨駩駪駫駬駭駮駯駰駱駲駳駴駵駶駷駸駹瘛瘼瘢瘠癀瘭瘰瘿瘵癃瘾瘳癍癞癔癜癖癫癯翊竦穸穹窀窆窈窕窦窠窬窨窭窳衤衩衲衽衿袂袢裆袷袼裉裢裎裣裥裱褚裼裨裾裰褡褙褓褛褊褴褫褶襁襦襻疋胥皲皴矜耒耔耖耜耠耢耥耦耧耩耨耱耋耵聃聆聍聒聩聱覃顸颀颃�".split(""); +for(j = 0; j != D[241].length; ++j) if(D[241][j].charCodeAt(0) !== 0xFFFD) { e[D[241][j]] = 61696 + j; d[61696 + j] = D[241][j];} +D[242] = "����������������������������������������������������������������駺駻駼駽駾駿騀騁騂騃騄騅騆騇騈騉騊騋騌騍騎騏騐騑騒験騔騕騖騗騘騙騚騛騜騝騞騟騠騡騢騣騤騥騦騧騨騩騪騫騬騭騮騯騰騱騲騳騴騵騶騷騸�騹騺騻騼騽騾騿驀驁驂驃驄驅驆驇驈驉驊驋驌驍驎驏驐驑驒驓驔驕驖驗驘驙颉颌颍颏颔颚颛颞颟颡颢颥颦虍虔虬虮虿虺虼虻蚨蚍蚋蚬蚝蚧蚣蚪蚓蚩蚶蛄蚵蛎蚰蚺蚱蚯蛉蛏蚴蛩蛱蛲蛭蛳蛐蜓蛞蛴蛟蛘蛑蜃蜇蛸蜈蜊蜍蜉蜣蜻蜞蜥蜮蜚蜾蝈蜴蜱蜩蜷蜿螂蜢蝽蝾蝻蝠蝰蝌蝮螋蝓蝣蝼蝤蝙蝥螓螯螨蟒�".split(""); +for(j = 0; j != D[242].length; ++j) if(D[242][j].charCodeAt(0) !== 0xFFFD) { e[D[242][j]] = 61952 + j; d[61952 + j] = D[242][j];} +D[243] = "����������������������������������������������������������������驚驛驜驝驞驟驠驡驢驣驤驥驦驧驨驩驪驫驲骃骉骍骎骔骕骙骦骩骪骫骬骭骮骯骲骳骴骵骹骻骽骾骿髃髄髆髇髈髉髊髍髎髏髐髒體髕髖髗髙髚髛髜�髝髞髠髢髣髤髥髧髨髩髪髬髮髰髱髲髳髴髵髶髷髸髺髼髽髾髿鬀鬁鬂鬄鬅鬆蟆螈螅螭螗螃螫蟥螬螵螳蟋蟓螽蟑蟀蟊蟛蟪蟠蟮蠖蠓蟾蠊蠛蠡蠹蠼缶罂罄罅舐竺竽笈笃笄笕笊笫笏筇笸笪笙笮笱笠笥笤笳笾笞筘筚筅筵筌筝筠筮筻筢筲筱箐箦箧箸箬箝箨箅箪箜箢箫箴篑篁篌篝篚篥篦篪簌篾篼簏簖簋�".split(""); +for(j = 0; j != D[243].length; ++j) if(D[243][j].charCodeAt(0) !== 0xFFFD) { e[D[243][j]] = 62208 + j; d[62208 + j] = D[243][j];} +D[244] = "����������������������������������������������������������������鬇鬉鬊鬋鬌鬍鬎鬐鬑鬒鬔鬕鬖鬗鬘鬙鬚鬛鬜鬝鬞鬠鬡鬢鬤鬥鬦鬧鬨鬩鬪鬫鬬鬭鬮鬰鬱鬳鬴鬵鬶鬷鬸鬹鬺鬽鬾鬿魀魆魊魋魌魎魐魒魓魕魖魗魘魙魚�魛魜魝魞魟魠魡魢魣魤魥魦魧魨魩魪魫魬魭魮魯魰魱魲魳魴魵魶魷魸魹魺魻簟簪簦簸籁籀臾舁舂舄臬衄舡舢舣舭舯舨舫舸舻舳舴舾艄艉艋艏艚艟艨衾袅袈裘裟襞羝羟羧羯羰羲籼敉粑粝粜粞粢粲粼粽糁糇糌糍糈糅糗糨艮暨羿翎翕翥翡翦翩翮翳糸絷綦綮繇纛麸麴赳趄趔趑趱赧赭豇豉酊酐酎酏酤�".split(""); +for(j = 0; j != D[244].length; ++j) if(D[244][j].charCodeAt(0) !== 0xFFFD) { e[D[244][j]] = 62464 + j; d[62464 + j] = D[244][j];} +D[245] = "����������������������������������������������������������������魼魽魾魿鮀鮁鮂鮃鮄鮅鮆鮇鮈鮉鮊鮋鮌鮍鮎鮏鮐鮑鮒鮓鮔鮕鮖鮗鮘鮙鮚鮛鮜鮝鮞鮟鮠鮡鮢鮣鮤鮥鮦鮧鮨鮩鮪鮫鮬鮭鮮鮯鮰鮱鮲鮳鮴鮵鮶鮷鮸鮹鮺�鮻鮼鮽鮾鮿鯀鯁鯂鯃鯄鯅鯆鯇鯈鯉鯊鯋鯌鯍鯎鯏鯐鯑鯒鯓鯔鯕鯖鯗鯘鯙鯚鯛酢酡酰酩酯酽酾酲酴酹醌醅醐醍醑醢醣醪醭醮醯醵醴醺豕鹾趸跫踅蹙蹩趵趿趼趺跄跖跗跚跞跎跏跛跆跬跷跸跣跹跻跤踉跽踔踝踟踬踮踣踯踺蹀踹踵踽踱蹉蹁蹂蹑蹒蹊蹰蹶蹼蹯蹴躅躏躔躐躜躞豸貂貊貅貘貔斛觖觞觚觜�".split(""); +for(j = 0; j != D[245].length; ++j) if(D[245][j].charCodeAt(0) !== 0xFFFD) { e[D[245][j]] = 62720 + j; d[62720 + j] = D[245][j];} +D[246] = "����������������������������������������������������������������鯜鯝鯞鯟鯠鯡鯢鯣鯤鯥鯦鯧鯨鯩鯪鯫鯬鯭鯮鯯鯰鯱鯲鯳鯴鯵鯶鯷鯸鯹鯺鯻鯼鯽鯾鯿鰀鰁鰂鰃鰄鰅鰆鰇鰈鰉鰊鰋鰌鰍鰎鰏鰐鰑鰒鰓鰔鰕鰖鰗鰘鰙鰚�鰛鰜鰝鰞鰟鰠鰡鰢鰣鰤鰥鰦鰧鰨鰩鰪鰫鰬鰭鰮鰯鰰鰱鰲鰳鰴鰵鰶鰷鰸鰹鰺鰻觥觫觯訾謦靓雩雳雯霆霁霈霏霎霪霭霰霾龀龃龅龆龇龈龉龊龌黾鼋鼍隹隼隽雎雒瞿雠銎銮鋈錾鍪鏊鎏鐾鑫鱿鲂鲅鲆鲇鲈稣鲋鲎鲐鲑鲒鲔鲕鲚鲛鲞鲟鲠鲡鲢鲣鲥鲦鲧鲨鲩鲫鲭鲮鲰鲱鲲鲳鲴鲵鲶鲷鲺鲻鲼鲽鳄鳅鳆鳇鳊鳋�".split(""); +for(j = 0; j != D[246].length; ++j) if(D[246][j].charCodeAt(0) !== 0xFFFD) { e[D[246][j]] = 62976 + j; d[62976 + j] = D[246][j];} +D[247] = "����������������������������������������������������������������鰼鰽鰾鰿鱀鱁鱂鱃鱄鱅鱆鱇鱈鱉鱊鱋鱌鱍鱎鱏鱐鱑鱒鱓鱔鱕鱖鱗鱘鱙鱚鱛鱜鱝鱞鱟鱠鱡鱢鱣鱤鱥鱦鱧鱨鱩鱪鱫鱬鱭鱮鱯鱰鱱鱲鱳鱴鱵鱶鱷鱸鱹鱺�鱻鱽鱾鲀鲃鲄鲉鲊鲌鲏鲓鲖鲗鲘鲙鲝鲪鲬鲯鲹鲾鲿鳀鳁鳂鳈鳉鳑鳒鳚鳛鳠鳡鳌鳍鳎鳏鳐鳓鳔鳕鳗鳘鳙鳜鳝鳟鳢靼鞅鞑鞒鞔鞯鞫鞣鞲鞴骱骰骷鹘骶骺骼髁髀髅髂髋髌髑魅魃魇魉魈魍魑飨餍餮饕饔髟髡髦髯髫髻髭髹鬈鬏鬓鬟鬣麽麾縻麂麇麈麋麒鏖麝麟黛黜黝黠黟黢黩黧黥黪黯鼢鼬鼯鼹鼷鼽鼾齄�".split(""); +for(j = 0; j != D[247].length; ++j) if(D[247][j].charCodeAt(0) !== 0xFFFD) { e[D[247][j]] = 63232 + j; d[63232 + j] = D[247][j];} +D[248] = "����������������������������������������������������������������鳣鳤鳥鳦鳧鳨鳩鳪鳫鳬鳭鳮鳯鳰鳱鳲鳳鳴鳵鳶鳷鳸鳹鳺鳻鳼鳽鳾鳿鴀鴁鴂鴃鴄鴅鴆鴇鴈鴉鴊鴋鴌鴍鴎鴏鴐鴑鴒鴓鴔鴕鴖鴗鴘鴙鴚鴛鴜鴝鴞鴟鴠鴡�鴢鴣鴤鴥鴦鴧鴨鴩鴪鴫鴬鴭鴮鴯鴰鴱鴲鴳鴴鴵鴶鴷鴸鴹鴺鴻鴼鴽鴾鴿鵀鵁鵂�".split(""); +for(j = 0; j != D[248].length; ++j) if(D[248][j].charCodeAt(0) !== 0xFFFD) { e[D[248][j]] = 63488 + j; d[63488 + j] = D[248][j];} +D[249] = "����������������������������������������������������������������鵃鵄鵅鵆鵇鵈鵉鵊鵋鵌鵍鵎鵏鵐鵑鵒鵓鵔鵕鵖鵗鵘鵙鵚鵛鵜鵝鵞鵟鵠鵡鵢鵣鵤鵥鵦鵧鵨鵩鵪鵫鵬鵭鵮鵯鵰鵱鵲鵳鵴鵵鵶鵷鵸鵹鵺鵻鵼鵽鵾鵿鶀鶁�鶂鶃鶄鶅鶆鶇鶈鶉鶊鶋鶌鶍鶎鶏鶐鶑鶒鶓鶔鶕鶖鶗鶘鶙鶚鶛鶜鶝鶞鶟鶠鶡鶢�".split(""); +for(j = 0; j != D[249].length; ++j) if(D[249][j].charCodeAt(0) !== 0xFFFD) { e[D[249][j]] = 63744 + j; d[63744 + j] = D[249][j];} +D[250] = "����������������������������������������������������������������鶣鶤鶥鶦鶧鶨鶩鶪鶫鶬鶭鶮鶯鶰鶱鶲鶳鶴鶵鶶鶷鶸鶹鶺鶻鶼鶽鶾鶿鷀鷁鷂鷃鷄鷅鷆鷇鷈鷉鷊鷋鷌鷍鷎鷏鷐鷑鷒鷓鷔鷕鷖鷗鷘鷙鷚鷛鷜鷝鷞鷟鷠鷡�鷢鷣鷤鷥鷦鷧鷨鷩鷪鷫鷬鷭鷮鷯鷰鷱鷲鷳鷴鷵鷶鷷鷸鷹鷺鷻鷼鷽鷾鷿鸀鸁鸂�".split(""); +for(j = 0; j != D[250].length; ++j) if(D[250][j].charCodeAt(0) !== 0xFFFD) { e[D[250][j]] = 64000 + j; d[64000 + j] = D[250][j];} +D[251] = "����������������������������������������������������������������鸃鸄鸅鸆鸇鸈鸉鸊鸋鸌鸍鸎鸏鸐鸑鸒鸓鸔鸕鸖鸗鸘鸙鸚鸛鸜鸝鸞鸤鸧鸮鸰鸴鸻鸼鹀鹍鹐鹒鹓鹔鹖鹙鹝鹟鹠鹡鹢鹥鹮鹯鹲鹴鹵鹶鹷鹸鹹鹺鹻鹼鹽麀�麁麃麄麅麆麉麊麌麍麎麏麐麑麔麕麖麗麘麙麚麛麜麞麠麡麢麣麤麥麧麨麩麪�".split(""); +for(j = 0; j != D[251].length; ++j) if(D[251][j].charCodeAt(0) !== 0xFFFD) { e[D[251][j]] = 64256 + j; d[64256 + j] = D[251][j];} +D[252] = "����������������������������������������������������������������麫麬麭麮麯麰麱麲麳麵麶麷麹麺麼麿黀黁黂黃黅黆黇黈黊黋黌黐黒黓黕黖黗黙黚點黡黣黤黦黨黫黬黭黮黰黱黲黳黴黵黶黷黸黺黽黿鼀鼁鼂鼃鼄鼅�鼆鼇鼈鼉鼊鼌鼏鼑鼒鼔鼕鼖鼘鼚鼛鼜鼝鼞鼟鼡鼣鼤鼥鼦鼧鼨鼩鼪鼫鼭鼮鼰鼱�".split(""); +for(j = 0; j != D[252].length; ++j) if(D[252][j].charCodeAt(0) !== 0xFFFD) { e[D[252][j]] = 64512 + j; d[64512 + j] = D[252][j];} +D[253] = "����������������������������������������������������������������鼲鼳鼴鼵鼶鼸鼺鼼鼿齀齁齂齃齅齆齇齈齉齊齋齌齍齎齏齒齓齔齕齖齗齘齙齚齛齜齝齞齟齠齡齢齣齤齥齦齧齨齩齪齫齬齭齮齯齰齱齲齳齴齵齶齷齸�齹齺齻齼齽齾龁龂龍龎龏龐龑龒龓龔龕龖龗龘龜龝龞龡龢龣龤龥郎凉秊裏隣�".split(""); +for(j = 0; j != D[253].length; ++j) if(D[253][j].charCodeAt(0) !== 0xFFFD) { e[D[253][j]] = 64768 + j; d[64768 + j] = D[253][j];} +D[254] = "����������������������������������������������������������������兀嗀﨎﨏﨑﨓﨔礼﨟蘒﨡﨣﨤﨧﨨﨩⺁⺄㑳㑇⺈⺋㖞㘚㘎⺌⺗㥮㤘㧏㧟㩳㧐㭎㱮㳠⺧⺪䁖䅟⺮䌷⺳⺶⺷䎱䎬⺻䏝䓖䙡䙌�䜣䜩䝼䞍⻊䥇䥺䥽䦂䦃䦅䦆䦟䦛䦷䦶䲣䲟䲠䲡䱷䲢䴓䴔䴕䴖䴗䴘䴙䶮�".split(""); +for(j = 0; j != D[254].length; ++j) if(D[254][j].charCodeAt(0) !== 0xFFFD) { e[D[254][j]] = 65024 + j; d[65024 + j] = D[254][j];} +return {"enc": e, "dec": d }; })(); +cptable[57002] = (function(){ var d = [], e = {}, D = [], j; +D[0] = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ�ँंःअआइईउऊऋऎएऐऍऒओऔऑकखगघङचछजझञटठडढणतथदधनऩपफबभमयय़रऱलळऴवशषसह�ािीुूृॆेैॅॊोौॉ़्।������०१२३४५६७८९�����".split(""); +for(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];} +D[161] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ॐ����������������������".split(""); +for(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];} +D[166] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ऌ����������������������".split(""); +for(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];} +D[167] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ॡ����������������������".split(""); +for(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];} +D[170] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ॠ����������������������".split(""); +for(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];} +D[179] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������क़����������������������".split(""); +for(j = 0; j != D[179].length; ++j) if(D[179][j].charCodeAt(0) !== 0xFFFD) { e[D[179][j]] = 45824 + j; d[45824 + j] = D[179][j];} +D[180] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ख़����������������������".split(""); +for(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];} +D[181] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ग़����������������������".split(""); +for(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];} +D[186] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ज़����������������������".split(""); +for(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];} +D[191] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ड़����������������������".split(""); +for(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];} +D[192] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ढ़����������������������".split(""); +for(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];} +D[201] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������फ़����������������������".split(""); +for(j = 0; j != D[201].length; ++j) if(D[201][j].charCodeAt(0) !== 0xFFFD) { e[D[201][j]] = 51456 + j; d[51456 + j] = D[201][j];} +D[219] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ॢ����������������������".split(""); +for(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];} +D[220] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ॣ����������������������".split(""); +for(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];} +D[223] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ॄ����������������������".split(""); +for(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];} +D[234] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ऽ����������������������".split(""); +for(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];} +D[239] = "����������������������������������������������������������������९९९९९९९९९९९९������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];} +D[240] = "����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������॒������॰����������������������������������������������������������������".split(""); +for(j = 0; j != D[240].length; ++j) if(D[240][j].charCodeAt(0) !== 0xFFFD) { e[D[240][j]] = 61440 + j; d[61440 + j] = D[240][j];} +return {"enc": e, "dec": d }; })(); +cptable[57003] = (function(){ var d = [], e = {}, D = [], j; +D[0] = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ�ঁংঃঅআইঈউঊঋএএঐঐওওঔঔকখগঘঙচছজঝঞটঠডঢণতথদধননপফবভমযয়ররলললবশষসহ�ািীুূৃেেৈৈোোৌৌ়্.������০১২৩৪৫৬৭৮৯�����".split(""); +for(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];} +D[166] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ঌ����������������������".split(""); +for(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];} +D[167] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ৡ����������������������".split(""); +for(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];} +D[170] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ৠ����������������������".split(""); +for(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];} +D[191] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ড়����������������������".split(""); +for(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];} +D[192] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ঢ়����������������������".split(""); +for(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];} +D[219] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ৢ����������������������".split(""); +for(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];} +D[220] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ৣ����������������������".split(""); +for(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];} +D[223] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ৄ����������������������".split(""); +for(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];} +D[239] = "����������������������������������������������������������������৯৯৯৯৯৯৯৯৯৯৯৯������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];} +return {"enc": e, "dec": d }; })(); +cptable[57004] = (function(){ var d = [], e = {}, D = [], j; +D[0] = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ��ஂஃஅஆஇஈஉஊ�ஏஏஐஐஒஓஔஔககககஙசசஜஜஞடடடடணததததநனபபபபமயயரறலளழவஷஷஸஹ�ாிீுூ�ெேைைொோௌௌ்�.������0௧௨௩௪௫௬௭௮௯�����".split(""); +for(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];} +D[239] = "����������������������������������������������������������������௯௯௯௯௯௯௯௯௯௯௯௯������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];} +return {"enc": e, "dec": d }; })(); +cptable[57005] = (function(){ var d = [], e = {}, D = [], j; +D[0] = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ�ఁంఃఅఆఇఈఉఊఋఎఏఐఐఒఓఔఔకఖగఘఙచఛజఝఞటఠడఢణతథదధననపఫబభమయయరఱలళళవశషసహ�ాిీుూృెేైైొోౌౌ్�.������౦౧౨౩౪౫౬౭౮౯�����".split(""); +for(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];} +D[166] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ఌ����������������������".split(""); +for(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];} +D[167] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ౡ����������������������".split(""); +for(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];} +D[170] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ౠ����������������������".split(""); +for(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];} +D[223] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ౄ����������������������".split(""); +for(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];} +D[239] = "����������������������������������������������������������������౯౯౯౯౯౯౯౯౯౯౯౯������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];} +return {"enc": e, "dec": d }; })(); +cptable[57006] = (function(){ var d = [], e = {}, D = [], j; +D[0] = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ�ঁংঃঅআইঈউঊঋএএঐঐওওঔঔকখগঘঙচছজঝঞটঠডঢণতথদধননপফবভমযয়ররলললবশষসহ�ািীুূৃেেৈৈোোৌৌ়্.������০১২৩৪৫৬৭৮৯�����".split(""); +for(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];} +D[166] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ঌ����������������������".split(""); +for(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];} +D[167] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ৡ����������������������".split(""); +for(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];} +D[170] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ৠ����������������������".split(""); +for(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];} +D[191] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ড়����������������������".split(""); +for(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];} +D[192] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ঢ়����������������������".split(""); +for(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];} +D[219] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ৢ����������������������".split(""); +for(j = 0; j != D[219].length; ++j) if(D[219][j].charCodeAt(0) !== 0xFFFD) { e[D[219][j]] = 56064 + j; d[56064 + j] = D[219][j];} +D[220] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ৣ����������������������".split(""); +for(j = 0; j != D[220].length; ++j) if(D[220][j].charCodeAt(0) !== 0xFFFD) { e[D[220][j]] = 56320 + j; d[56320 + j] = D[220][j];} +D[223] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ৄ����������������������".split(""); +for(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];} +D[239] = "����������������������������������������������������������������৯৯৯৯৯৯৯৯৯৯৯৯������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];} +return {"enc": e, "dec": d }; })(); +cptable[57007] = (function(){ var d = [], e = {}, D = [], j; +D[0] = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ�ଁଂଃଅଆଇଈଉଊଋଏଏଐଐଐଓଔଔକଖଗଘଙଚଛଜଝଞଟଠଡଢଣତଥଦଧନନପଫବଭମଯୟରରଲଳଳବଶଷସହ�ାିୀୁୂୃେେୈୈୋୋୌୌ଼୍.������୦୧୨୩୪୫୬୭୮୯�����".split(""); +for(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];} +D[166] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ఌ����������������������".split(""); +for(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];} +D[167] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ౡ����������������������".split(""); +for(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];} +D[170] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ౠ����������������������".split(""); +for(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];} +D[191] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ଡ଼����������������������".split(""); +for(j = 0; j != D[191].length; ++j) if(D[191][j].charCodeAt(0) !== 0xFFFD) { e[D[191][j]] = 48896 + j; d[48896 + j] = D[191][j];} +D[192] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ଢ଼����������������������".split(""); +for(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];} +D[223] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ౄ����������������������".split(""); +for(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];} +D[234] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ଽ����������������������".split(""); +for(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];} +D[239] = "����������������������������������������������������������������୯୯୯୯୯୯୯୯୯୯୯୯������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];} +return {"enc": e, "dec": d }; })(); +cptable[57008] = (function(){ var d = [], e = {}, D = [], j; +D[0] = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ��ಂಃಅಆಇಈಉಊಋಎಏಐಐಒಓಔಔಕಖಗಘಙಚಛಜಝಞಟಠಡಢಣತಥದಧನನಪಫಬಭಮಯಯರಱಲಳಳವಶಷಸಹ�ಾಿೀುೂೃೆೇೈೈೊೋೌೌ್�.������೦೧೨೩೪೫೬೭೮೯�����".split(""); +for(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];} +D[166] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ಌ����������������������".split(""); +for(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];} +D[167] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ೡ����������������������".split(""); +for(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];} +D[170] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ೠ����������������������".split(""); +for(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];} +D[201] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ೞ����������������������".split(""); +for(j = 0; j != D[201].length; ++j) if(D[201][j].charCodeAt(0) !== 0xFFFD) { e[D[201][j]] = 51456 + j; d[51456 + j] = D[201][j];} +D[223] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ೄ����������������������".split(""); +for(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];} +D[239] = "����������������������������������������������������������������೯೯೯೯೯೯೯೯೯೯೯೯������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];} +return {"enc": e, "dec": d }; })(); +cptable[57009] = (function(){ var d = [], e = {}, D = [], j; +D[0] = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ��ംഃഅആഇഈഉഊഋഎഏഐഐഒഓഔഔകഖഗഘങചഛജഝഞടഠഡഢണതഥദധനനപഫബഭമയയരറലളഴവശഷസഹ�ാിീുൂൃെേൈൈൊോൌൌ്�.������൦൧൨൩൪൫൬൭൮൯�����".split(""); +for(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];} +D[166] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ഌ����������������������".split(""); +for(j = 0; j != D[166].length; ++j) if(D[166][j].charCodeAt(0) !== 0xFFFD) { e[D[166][j]] = 42496 + j; d[42496 + j] = D[166][j];} +D[167] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ൡ����������������������".split(""); +for(j = 0; j != D[167].length; ++j) if(D[167][j].charCodeAt(0) !== 0xFFFD) { e[D[167][j]] = 42752 + j; d[42752 + j] = D[167][j];} +D[170] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ൠ����������������������".split(""); +for(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];} +D[239] = "����������������������������������������������������������������൯൯൯൯൯൯൯൯൯൯൯൯������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];} +return {"enc": e, "dec": d }; })(); +cptable[57010] = (function(){ var d = [], e = {}, D = [], j; +D[0] = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ�ઁંઃઅઆઇઈઉઊઋએએઐઍઍઓઔઑકખગઘઙચછજઝઞટઠડઢણતથદધનનપફબભમયયરરલળળવશષસહ�ાિીુૂૃેેૈૅોોૌૉ઼્.������૦૧૨૩૪૫૬૭૮૯�����".split(""); +for(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];} +D[161] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ૐ����������������������".split(""); +for(j = 0; j != D[161].length; ++j) if(D[161][j].charCodeAt(0) !== 0xFFFD) { e[D[161][j]] = 41216 + j; d[41216 + j] = D[161][j];} +D[170] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ૠ����������������������".split(""); +for(j = 0; j != D[170].length; ++j) if(D[170][j].charCodeAt(0) !== 0xFFFD) { e[D[170][j]] = 43520 + j; d[43520 + j] = D[170][j];} +D[223] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ૄ����������������������".split(""); +for(j = 0; j != D[223].length; ++j) if(D[223][j].charCodeAt(0) !== 0xFFFD) { e[D[223][j]] = 57088 + j; d[57088 + j] = D[223][j];} +D[234] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ઽ����������������������".split(""); +for(j = 0; j != D[234].length; ++j) if(D[234][j].charCodeAt(0) !== 0xFFFD) { e[D[234][j]] = 59904 + j; d[59904 + j] = D[234][j];} +D[239] = "����������������������������������������������������������������૯૯૯૯૯૯૯૯૯૯૯૯������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];} +return {"enc": e, "dec": d }; })(); +cptable[57011] = (function(){ var d = [], e = {}, D = [], j; +D[0] = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ��ਂ�ਅਆਇਈਉਊ�ਏਏਐਐਐਓਔਔਕਖਗਘਙਚਛਜਝਞਟਠਡਢਣਤਥਦਧਨਨਪਫਬਭਮਯਯਰਰਲਲ਼ਲ਼ਵਸ਼ਸ਼ਸਹ�ਾਿੀੁੂ�ੇੇੈੈੋੋੌੌ਼੍.������੦੧੨੩੪੫੬੭੮੯�����".split(""); +for(j = 0; j != D[0].length; ++j) if(D[0][j].charCodeAt(0) !== 0xFFFD) { e[D[0][j]] = 0 + j; d[0 + j] = D[0][j];} +D[180] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ਖ਼����������������������".split(""); +for(j = 0; j != D[180].length; ++j) if(D[180][j].charCodeAt(0) !== 0xFFFD) { e[D[180][j]] = 46080 + j; d[46080 + j] = D[180][j];} +D[181] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ਗ਼����������������������".split(""); +for(j = 0; j != D[181].length; ++j) if(D[181][j].charCodeAt(0) !== 0xFFFD) { e[D[181][j]] = 46336 + j; d[46336 + j] = D[181][j];} +D[186] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ਜ਼����������������������".split(""); +for(j = 0; j != D[186].length; ++j) if(D[186][j].charCodeAt(0) !== 0xFFFD) { e[D[186][j]] = 47616 + j; d[47616 + j] = D[186][j];} +D[192] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ੜ����������������������".split(""); +for(j = 0; j != D[192].length; ++j) if(D[192][j].charCodeAt(0) !== 0xFFFD) { e[D[192][j]] = 49152 + j; d[49152 + j] = D[192][j];} +D[201] = "�����������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������ਫ਼����������������������".split(""); +for(j = 0; j != D[201].length; ++j) if(D[201][j].charCodeAt(0) !== 0xFFFD) { e[D[201][j]] = 51456 + j; d[51456 + j] = D[201][j];} +D[239] = "����������������������������������������������������������������੯੯੯੯੯੯੯੯੯੯੯੯������������������������������������������������������������������������������������������������������������������������������������������������������������������������������������".split(""); +for(j = 0; j != D[239].length; ++j) if(D[239][j].charCodeAt(0) !== 0xFFFD) { e[D[239][j]] = 61184 + j; d[61184 + j] = D[239][j];} +return {"enc": e, "dec": d }; })(); +cptable[620] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ÇüéâäàąçêëèïîćÄĄĘęłôöĆûùŚÖÜ¢Ł¥śƒŹŻóÓńŃźż¿⌐¬½¼¡«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +cptable[895] = (function(){ var d = "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~ČüéďäĎŤčěĚĹÍľǪÄÁÉžŽôöÓůÚýÖÜŠĽÝŘťáíóúňŇŮÔšřŕŔ¼§«»░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀αßΓπΣσµτΦΘΩδ∞φε∩≡±≥≤⌠⌡÷≈°∙·√ⁿ²■ ", D = [], e = {}; for(var i=0;i!=d.length;++i) { if(d.charCodeAt(i) !== 0xFFFD) e[d.charAt(i)] = i; D[i] = d.charAt(i); } return {"enc": e, "dec": D }; })(); +// eslint-disable-next-line no-undef +if (typeof module !== 'undefined' && module.exports && typeof DO_NOT_EXPORT_CODEPAGE === 'undefined') module.exports = cptable; diff --git a/node_modules/codepage/cputils.js b/node_modules/codepage/cputils.js new file mode 100644 index 000000000..a06d06319 --- /dev/null +++ b/node_modules/codepage/cputils.js @@ -0,0 +1,528 @@ +/*! cputils.js (C) 2013-present SheetJS -- http://sheetjs.com */ +/* vim: set ft=javascript: */ +/*jshint newcap: false */ +(function(root, factory) { + /*jshint ignore:start */ + /*eslint-disable */ + "use strict"; + if(typeof cptable === "undefined") { + if(typeof require !== "undefined"){ + var cpt = require('./cptable'); + if (typeof module !== 'undefined' && module.exports && typeof DO_NOT_EXPORT_CODEPAGE === 'undefined') module.exports = factory(cpt); + else root.cptable = factory(cpt); + } else throw new Error("cptable not found"); + } else cptable = factory(cptable); + /*eslint-enable */ + /*jshint ignore:end */ +}(this, function(cpt){ + "use strict"; + /*global module, Buffer */ + var magic = { + "1200":"utf16le", + "1201":"utf16be", + "12000":"utf32le", + "12001":"utf32be", + "16969":"utf64le", + "20127":"ascii", + "65000":"utf7", + "65001":"utf8" + }; + + var sbcs_cache = [874,1250,1251,1252,1253,1254,1255,1256,10000]; + var dbcs_cache = [932,936,949,950]; + var magic_cache = [65001]; + var magic_decode = {}; + var magic_encode = {}; + var cpdcache = {}; + var cpecache = {}; + + var sfcc = function sfcc(x) { return String.fromCharCode(x); }; + var cca = function cca(x) { return x.charCodeAt(0); }; + + var has_buf = (typeof Buffer !== 'undefined'); + var Buffer_from = function(){}; + if(has_buf) { + var nbfs = !Buffer.from; + if(!nbfs) try { Buffer.from("foo", "utf8"); } catch(e) { nbfs = true; } + Buffer_from = nbfs ? function(buf, enc) { return (enc) ? new Buffer(buf, enc) : new Buffer(buf); } : Buffer.from.bind(Buffer); + // $FlowIgnore + if(!Buffer.allocUnsafe) Buffer.allocUnsafe = function(n) { return new Buffer(n); }; + + var mdl = 1024, mdb = Buffer.allocUnsafe(mdl); + var make_EE = function make_EE(E){ + var EE = Buffer.allocUnsafe(65536); + for(var i = 0; i < 65536;++i) EE[i] = 0; + var keys = Object.keys(E), len = keys.length; + for(var ee = 0, e = keys[ee]; ee < len; ++ee) { + if(!(e = keys[ee])) continue; + EE[e.charCodeAt(0)] = E[e]; + } + return EE; + }; + var sbcs_encode = function make_sbcs_encode(cp) { + var EE = make_EE(cpt[cp].enc); + return function sbcs_e(data, ofmt) { + var len = data.length; + var out, i=0, j=0, D=0, w=0; + if(typeof data === 'string') { + out = Buffer.allocUnsafe(len); + for(i = 0; i < len; ++i) out[i] = EE[data.charCodeAt(i)]; + } else if(Buffer.isBuffer(data)) { + out = Buffer.allocUnsafe(2*len); + j = 0; + for(i = 0; i < len; ++i) { + D = data[i]; + if(D < 128) out[j++] = EE[D]; + else if(D < 224) { out[j++] = EE[((D&31)<<6)+(data[i+1]&63)]; ++i; } + else if(D < 240) { out[j++] = EE[((D&15)<<12)+((data[i+1]&63)<<6)+(data[i+2]&63)]; i+=2; } + else { + w = ((D&7)<<18)+((data[i+1]&63)<<12)+((data[i+2]&63)<<6)+(data[i+3]&63); i+=3; + if(w < 65536) out[j++] = EE[w]; + else { w -= 65536; out[j++] = EE[0xD800 + ((w>>10)&1023)]; out[j++] = EE[0xDC00 + (w&1023)]; } + } + } + out = out.slice(0,j); + } else { + out = Buffer.allocUnsafe(len); + for(i = 0; i < len; ++i) out[i] = EE[data[i].charCodeAt(0)]; + } + if(!ofmt || ofmt === 'buf') return out; + if(ofmt !== 'arr') return out.toString('binary'); + return [].slice.call(out); + }; + }; + var sbcs_decode = function make_sbcs_decode(cp) { + var D = cpt[cp].dec; + var DD = Buffer.allocUnsafe(131072), d=0, c=""; + for(d=0;d>8; + } + return function sbcs_d(data) { + var len = data.length, i=0, j=0; + if(2 * len > mdl) { mdl = 2 * len; mdb = Buffer.allocUnsafe(mdl); } + if(Buffer.isBuffer(data)) { + for(i = 0; i < len; i++) { + j = 2*data[i]; + mdb[2*i] = DD[j]; mdb[2*i+1] = DD[j+1]; + } + } else if(typeof data === "string") { + for(i = 0; i < len; i++) { + j = 2*data.charCodeAt(i); + mdb[2*i] = DD[j]; mdb[2*i+1] = DD[j+1]; + } + } else { + for(i = 0; i < len; i++) { + j = 2*data[i]; + mdb[2*i] = DD[j]; mdb[2*i+1] = DD[j+1]; + } + } + return mdb.slice(0, 2 * len).toString('ucs2'); + }; + }; + var dbcs_encode = function make_dbcs_encode(cp) { + var E = cpt[cp].enc; + var EE = Buffer.allocUnsafe(131072); + for(var i = 0; i < 131072; ++i) EE[i] = 0; + var keys = Object.keys(E); + for(var ee = 0, e = keys[ee]; ee < keys.length; ++ee) { + if(!(e = keys[ee])) continue; + var f = e.charCodeAt(0); + EE[2*f] = E[e] & 255; EE[2*f+1] = E[e]>>8; + } + return function dbcs_e(data, ofmt) { + var len = data.length, out = Buffer.allocUnsafe(2*len), i=0, j=0, jj=0, k=0, D=0; + if(typeof data === 'string') { + for(i = k = 0; i < len; ++i) { + j = data.charCodeAt(i)*2; + out[k++] = EE[j+1] || EE[j]; if(EE[j+1] > 0) out[k++] = EE[j]; + } + out = out.slice(0,k); + } else if(Buffer.isBuffer(data)) { + for(i = k = 0; i < len; ++i) { + D = data[i]; + if(D < 128) j = D; + else if(D < 224) { j = ((D&31)<<6)+(data[i+1]&63); ++i; } + else if(D < 240) { j = ((D&15)<<12)+((data[i+1]&63)<<6)+(data[i+2]&63); i+=2; } + else { j = ((D&7)<<18)+((data[i+1]&63)<<12)+((data[i+2]&63)<<6)+(data[i+3]&63); i+=3; } + if(j<65536) { j*=2; out[k++] = EE[j+1] || EE[j]; if(EE[j+1] > 0) out[k++] = EE[j]; } + else { jj = j-65536; + j=2*(0xD800 + ((jj>>10)&1023)); out[k++] = EE[j+1] || EE[j]; if(EE[j+1] > 0) out[k++] = EE[j]; + j=2*(0xDC00 + (jj&1023)); out[k++] = EE[j+1] || EE[j]; if(EE[j+1] > 0) out[k++] = EE[j]; + } + } + out = out.slice(0,k); + } else { + for(i = k = 0; i < len; i++) { + j = data[i].charCodeAt(0)*2; + out[k++] = EE[j+1] || EE[j]; if(EE[j+1] > 0) out[k++] = EE[j]; + } + } + if(!ofmt || ofmt === 'buf') return out; + if(ofmt !== 'arr') return out.toString('binary'); + return [].slice.call(out); + }; + }; + var dbcs_decode = function make_dbcs_decode(cp) { + var D = cpt[cp].dec; + var DD = Buffer.allocUnsafe(131072), d=0, c, w=0, j=0, i=0; + for(i = 0; i < 65536; ++i) { DD[2*i] = 0xFF; DD[2*i+1] = 0xFD;} + for(d = 0; d < D.length; ++d) { + if(!(c=D[d])) continue; + w = c.charCodeAt(0); + j = 2*d; + DD[j] = w&255; DD[j+1] = w>>8; + } + return function dbcs_d(data) { + var len = data.length, out = Buffer.allocUnsafe(2*len), i=0, j=0, k=0; + if(Buffer.isBuffer(data)) { + for(i = 0; i < len; i++) { + j = 2*data[i]; + if(DD[j]===0xFF && DD[j+1]===0xFD) { j=2*((data[i]<<8)+data[i+1]); ++i; } + out[k++] = DD[j]; out[k++] = DD[j+1]; + } + } else if(typeof data === "string") { + for(i = 0; i < len; i++) { + j = 2*data.charCodeAt(i); + if(DD[j]===0xFF && DD[j+1]===0xFD) { j=2*((data.charCodeAt(i)<<8)+data.charCodeAt(i+1)); ++i; } + out[k++] = DD[j]; out[k++] = DD[j+1]; + } + } else { + for(i = 0; i < len; i++) { + j = 2*data[i]; + if(DD[j]===0xFF && DD[j+1]===0xFD) { j=2*((data[i]<<8)+data[i+1]); ++i; } + out[k++] = DD[j]; out[k++] = DD[j+1]; + } + } + return out.slice(0,k).toString('ucs2'); + }; + }; + magic_decode[65001] = function utf8_d(data) { + if(typeof data === "string") return utf8_d(data.split("").map(cca)); + var len = data.length, w = 0, ww = 0; + if(4 * len > mdl) { mdl = 4 * len; mdb = Buffer.allocUnsafe(mdl); } + var i = 0; + if(len >= 3 && data[0] == 0xEF) if(data[1] == 0xBB && data[2] == 0xBF) i = 3; + for(var j = 1, k = 0, D = 0; i < len; i+=j) { + j = 1; D = data[i]; + if(D < 128) w = D; + else if(D < 224) { w=(D&31)*64+(data[i+1]&63); j=2; } + else if(D < 240) { w=((D&15)<<12)+(data[i+1]&63)*64+(data[i+2]&63); j=3; } + else { w=(D&7)*262144+((data[i+1]&63)<<12)+(data[i+2]&63)*64+(data[i+3]&63); j=4; } + if(w < 65536) { mdb[k++] = w&255; mdb[k++] = w>>8; } + else { + w -= 65536; ww = 0xD800 + ((w>>10)&1023); w = 0xDC00 + (w&1023); + mdb[k++] = ww&255; mdb[k++] = ww>>>8; mdb[k++] = w&255; mdb[k++] = (w>>>8)&255; + } + } + return mdb.slice(0,k).toString('ucs2'); + }; + magic_encode[65001] = function utf8_e(data, ofmt) { + if(has_buf && Buffer.isBuffer(data)) { + if(!ofmt || ofmt === 'buf') return data; + if(ofmt !== 'arr') return data.toString('binary'); + return [].slice.call(data); + } + var len = data.length, w = 0, ww = 0, j = 0; + var direct = typeof data === "string"; + if(4 * len > mdl) { mdl = 4 * len; mdb = Buffer.allocUnsafe(mdl); } + for(var i = 0; i < len; ++i) { + w = direct ? data.charCodeAt(i) : data[i].charCodeAt(0); + if(w <= 0x007F) mdb[j++] = w; + else if(w <= 0x07FF) { + mdb[j++] = 192 + (w >> 6); + mdb[j++] = 128 + (w&63); + } else if(w >= 0xD800 && w <= 0xDFFF) { + w -= 0xD800; ++i; + ww = (direct ? data.charCodeAt(i) : data[i].charCodeAt(0)) - 0xDC00 + (w << 10); + mdb[j++] = 240 + ((ww>>>18) & 0x07); + mdb[j++] = 144 + ((ww>>>12) & 0x3F); + mdb[j++] = 128 + ((ww>>>6) & 0x3F); + mdb[j++] = 128 + (ww & 0x3F); + } else { + mdb[j++] = 224 + (w >> 12); + mdb[j++] = 128 + ((w >> 6)&63); + mdb[j++] = 128 + (w&63); + } + } + if(!ofmt || ofmt === 'buf') return mdb.slice(0,j); + if(ofmt !== 'arr') return mdb.slice(0,j).toString('binary'); + return [].slice.call(mdb, 0, j); + }; + } + + var encache = function encache() { + if(has_buf) { + if(cpdcache[sbcs_cache[0]]) return; + var i=0, s=0; + for(i = 0; i < sbcs_cache.length; ++i) { + s = sbcs_cache[i]; + if(cpt[s]) { + cpdcache[s] = sbcs_decode(s); + cpecache[s] = sbcs_encode(s); + } + } + for(i = 0; i < dbcs_cache.length; ++i) { + s = dbcs_cache[i]; + if(cpt[s]) { + cpdcache[s] = dbcs_decode(s); + cpecache[s] = dbcs_encode(s); + } + } + for(i = 0; i < magic_cache.length; ++i) { + s = magic_cache[i]; + if(magic_decode[s]) cpdcache[s] = magic_decode[s]; + if(magic_encode[s]) cpecache[s] = magic_encode[s]; + } + } + }; + var null_enc = function(data, ofmt) { void ofmt; return ""; }; + var cp_decache = function cp_decache(cp) { delete cpdcache[cp]; delete cpecache[cp]; }; + var decache = function decache() { + if(has_buf) { + if(!cpdcache[sbcs_cache[0]]) return; + sbcs_cache.forEach(cp_decache); + dbcs_cache.forEach(cp_decache); + magic_cache.forEach(cp_decache); + } + last_enc = null_enc; last_cp = 0; + }; + var cache = { + encache: encache, + decache: decache, + sbcs: sbcs_cache, + dbcs: dbcs_cache + }; + + encache(); + + var BM = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; + var SetD = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'(),-./:?"; + var last_enc = null_enc, last_cp = 0; + var encode = function encode(cp, data, ofmt) { + if(cp === last_cp && last_enc) { return last_enc(data, ofmt); } + if(cpecache[cp]) { last_enc = cpecache[last_cp=cp]; return last_enc(data, ofmt); } + if(has_buf && Buffer.isBuffer(data)) data = data.toString('utf8'); + var len = data.length; + var out = has_buf ? Buffer.allocUnsafe(4*len) : [], w=0, i=0, j = 0, ww=0; + var C = cpt[cp], E, M = ""; + var isstr = typeof data === 'string'; + if(C && (E=C.enc)) for(i = 0; i < len; ++i, ++j) { + w = E[isstr? data.charAt(i) : data[i]]; + if(w > 255) { + out[j] = w>>8; + out[++j] = w&255; + } else out[j] = w&255; + } + else if((M=magic[cp])) switch(M) { + case "utf8": + if(has_buf && isstr) { out = Buffer_from(data, M); j = out.length; break; } + for(i = 0; i < len; ++i, ++j) { + w = isstr ? data.charCodeAt(i) : data[i].charCodeAt(0); + if(w <= 0x007F) out[j] = w; + else if(w <= 0x07FF) { + out[j] = 192 + (w >> 6); + out[++j] = 128 + (w&63); + } else if(w >= 0xD800 && w <= 0xDFFF) { + w -= 0xD800; + ww = (isstr ? data.charCodeAt(++i) : data[++i].charCodeAt(0)) - 0xDC00 + (w << 10); + out[j] = 240 + ((ww>>>18) & 0x07); + out[++j] = 144 + ((ww>>>12) & 0x3F); + out[++j] = 128 + ((ww>>>6) & 0x3F); + out[++j] = 128 + (ww & 0x3F); + } else { + out[j] = 224 + (w >> 12); + out[++j] = 128 + ((w >> 6)&63); + out[++j] = 128 + (w&63); + } + } + break; + case "ascii": + if(has_buf && typeof data === "string") { out = Buffer_from(data, M); j = out.length; break; } + for(i = 0; i < len; ++i, ++j) { + w = isstr ? data.charCodeAt(i) : data[i].charCodeAt(0); + if(w <= 0x007F) out[j] = w; + else throw new Error("bad ascii " + w); + } + break; + case "utf16le": + if(has_buf && typeof data === "string") { out = Buffer_from(data, M); j = out.length; break; } + for(i = 0; i < len; ++i) { + w = isstr ? data.charCodeAt(i) : data[i].charCodeAt(0); + out[j++] = w&255; + out[j++] = w>>8; + } + break; + case "utf16be": + for(i = 0; i < len; ++i) { + w = isstr ? data.charCodeAt(i) : data[i].charCodeAt(0); + out[j++] = w>>8; + out[j++] = w&255; + } + break; + case "utf32le": + for(i = 0; i < len; ++i) { + w = isstr ? data.charCodeAt(i) : data[i].charCodeAt(0); + if(w >= 0xD800 && w <= 0xDFFF) w = 0x10000 + ((w - 0xD800) << 10) + (data[++i].charCodeAt(0) - 0xDC00); + out[j++] = w&255; w >>= 8; + out[j++] = w&255; w >>= 8; + out[j++] = w&255; w >>= 8; + out[j++] = w&255; + } + break; + case "utf32be": + for(i = 0; i < len; ++i) { + w = isstr ? data.charCodeAt(i) : data[i].charCodeAt(0); + if(w >= 0xD800 && w <= 0xDFFF) w = 0x10000 + ((w - 0xD800) << 10) + (data[++i].charCodeAt(0) - 0xDC00); + out[j+3] = w&255; w >>= 8; + out[j+2] = w&255; w >>= 8; + out[j+1] = w&255; w >>= 8; + out[j] = w&255; + j+=4; + } + break; + case "utf7": + for(i = 0; i < len; i++) { + var c = isstr ? data.charAt(i) : data[i].charAt(0); + if(c === "+") { out[j++] = 0x2b; out[j++] = 0x2d; continue; } + if(SetD.indexOf(c) > -1) { out[j++] = c.charCodeAt(0); continue; } + var tt = encode(1201, c); + out[j++] = 0x2b; + out[j++] = BM.charCodeAt(tt[0]>>2); + out[j++] = BM.charCodeAt(((tt[0]&0x03)<<4) + ((tt[1]||0)>>4)); + out[j++] = BM.charCodeAt(((tt[1]&0x0F)<<2) + ((tt[2]||0)>>6)); + out[j++] = 0x2d; + } + break; + default: throw new Error("Unsupported magic: " + cp + " " + magic[cp]); + } + else throw new Error("Unrecognized CP: " + cp); + out = out.slice(0,j); + if(!has_buf) return (ofmt == 'str') ? (out).map(sfcc).join("") : out; + if(!ofmt || ofmt === 'buf') return out; + if(ofmt !== 'arr') return out.toString('binary'); + return [].slice.call(out); + }; + var decode = function decode(cp, data) { + var F; if((F=cpdcache[cp])) return F(data); + if(typeof data === "string") return decode(cp, data.split("").map(cca)); + var len = data.length, out = new Array(len), s="", w=0, i=0, j=1, k=0, ww=0; + var C = cpt[cp], D, M=""; + if(C && (D=C.dec)) { + for(i = 0; i < len; i+=j) { + j = 2; + s = D[(data[i]<<8)+ data[i+1]]; + if(!s) { + j = 1; + s = D[data[i]]; + } + if(!s) throw new Error('Unrecognized code: ' + data[i] + ' ' + data[i+j-1] + ' ' + i + ' ' + j + ' ' + D[data[i]]); + out[k++] = s; + } + } + else if((M=magic[cp])) switch(M) { + case "utf8": + if(len >= 3 && data[0] == 0xEF) if(data[1] == 0xBB && data[2] == 0xBF) i = 3; + for(; i < len; i+=j) { + j = 1; + if(data[i] < 128) w = data[i]; + else if(data[i] < 224) { w=(data[i]&31)*64+(data[i+1]&63); j=2; } + else if(data[i] < 240) { w=((data[i]&15)<<12)+(data[i+1]&63)*64+(data[i+2]&63); j=3; } + else { w=(data[i]&7)*262144+((data[i+1]&63)<<12)+(data[i+2]&63)*64+(data[i+3]&63); j=4; } + if(w < 65536) { out[k++] = String.fromCharCode(w); } + else { + w -= 65536; ww = 0xD800 + ((w>>10)&1023); w = 0xDC00 + (w&1023); + out[k++] = String.fromCharCode(ww); out[k++] = String.fromCharCode(w); + } + } + break; + case "ascii": + if(has_buf && Buffer.isBuffer(data)) return data.toString(M); + for(i = 0; i < len; i++) out[i] = String.fromCharCode(data[i]); + k = len; break; + case "utf16le": + if(len >= 2 && data[0] == 0xFF) if(data[1] == 0xFE) i = 2; + if(has_buf && Buffer.isBuffer(data)) return data.toString(M); + j = 2; + for(; i+1 < len; i+=j) { + out[k++] = String.fromCharCode((data[i+1]<<8) + data[i]); + } + break; + case "utf16be": + if(len >= 2 && data[0] == 0xFE) if(data[1] == 0xFF) i = 2; + j = 2; + for(; i+1 < len; i+=j) { + out[k++] = String.fromCharCode((data[i]<<8) + data[i+1]); + } + break; + case "utf32le": + if(len >= 4 && data[0] == 0xFF) if(data[1] == 0xFE && data[2] === 0 && data[3] === 0) i = 4; + j = 4; + for(; i < len; i+=j) { + w = (data[i+3]<<24) + (data[i+2]<<16) + (data[i+1]<<8) + (data[i]); + if(w > 0xFFFF) { + w -= 0x10000; + out[k++] = String.fromCharCode(0xD800 + ((w >> 10) & 0x3FF)); + out[k++] = String.fromCharCode(0xDC00 + (w & 0x3FF)); + } + else out[k++] = String.fromCharCode(w); + } + break; + case "utf32be": + if(len >= 4 && data[3] == 0xFF) if(data[2] == 0xFE && data[1] === 0 && data[0] === 0) i = 4; + j = 4; + for(; i < len; i+=j) { + w = (data[i]<<24) + (data[i+1]<<16) + (data[i+2]<<8) + (data[i+3]); + if(w > 0xFFFF) { + w -= 0x10000; + out[k++] = String.fromCharCode(0xD800 + ((w >> 10) & 0x3FF)); + out[k++] = String.fromCharCode(0xDC00 + (w & 0x3FF)); + } + else out[k++] = String.fromCharCode(w); + } + break; + case "utf7": + if(len >= 4 && data[0] == 0x2B && data[1] == 0x2F && data[2] == 0x76) { + if(len >= 5 && data[3] == 0x38 && data[4] == 0x2D) i = 5; + else if(data[3] == 0x38 || data[3] == 0x39 || data[3] == 0x2B || data[3] == 0x2F) i = 4; + } + for(; i < len; i+=j) { + if(data[i] !== 0x2b) { j=1; out[k++] = String.fromCharCode(data[i]); continue; } + j=1; + if(data[i+1] === 0x2d) { j = 2; out[k++] = "+"; continue; } + // eslint-disable-next-line no-useless-escape + while(String.fromCharCode(data[i+j]).match(/[A-Za-z0-9+\/]/)) j++; + var dash = 0; + if(data[i+j] === 0x2d) { ++j; dash=1; } + var tt = []; + var o64 = ""; + var c1=0, c2=0, c3=0; + var e1=0, e2=0, e3=0, e4=0; + for(var l = 1; l < j - dash;) { + e1 = BM.indexOf(String.fromCharCode(data[i+l++])); + e2 = BM.indexOf(String.fromCharCode(data[i+l++])); + c1 = e1 << 2 | e2 >> 4; + tt.push(c1); + e3 = BM.indexOf(String.fromCharCode(data[i+l++])); + if(e3 === -1) break; + c2 = (e2 & 15) << 4 | e3 >> 2; + tt.push(c2); + e4 = BM.indexOf(String.fromCharCode(data[i+l++])); + if(e4 === -1) break; + c3 = (e3 & 3) << 6 | e4; + if(e4 < 64) tt.push(c3); + } + o64 = decode(1201, tt); + for(l = 0; l < o64.length; ++l) out[k++] = o64.charAt(l); + } + break; + default: throw new Error("Unsupported magic: " + cp + " " + magic[cp]); + } + else throw new Error("Unrecognized CP: " + cp); + return out.slice(0,k).join(""); + }; + var hascp = function hascp(cp) { return !!(cpt[cp] || magic[cp]); }; + cpt.utils = { decode: decode, encode: encode, hascp: hascp, magic: magic, cache:cache }; + return cpt; +})); diff --git a/node_modules/codepage/package.json b/node_modules/codepage/package.json new file mode 100644 index 000000000..51cca8e88 --- /dev/null +++ b/node_modules/codepage/package.json @@ -0,0 +1,72 @@ +{ + "name": "codepage", + "version": "1.15.0", + "author": "SheetJS", + "description": "pure-JS library to handle codepages", + "keywords": [ + "codepage", + "iconv", + "convert", + "strings" + ], + "main": "cputils.js", + "types": "types", + "browser": { + "buffer": "false" + }, + "devDependencies": { + "voc": "~1.1.0", + "mocha": "~2.5.3", + "blanket": "~1.2.3", + "@sheetjs/uglify-js": "~2.7.3", + "@types/node": "^8.0.7", + "@types/commander": "^2.12.0", + "dtslint": "^0.1.2", + "typescript": "2.2.0" + }, + "repository": { + "type": "git", + "url": "git://github.com/SheetJS/js-codepage.git" + }, + "scripts": { + "pretest": "git submodule init && git submodule update", + "test": "make test", + "build": "make js", + "lint": "make fullint", + "dtslint": "dtslint types" + }, + "config": { + "blanket": { + "pattern": "[cputils.js]" + } + }, + "alex": { + "allow": [ + "chinese", + "european", + "german", + "japanese", + "latin" + ] + }, + "homepage": "https://sheetjs.com/", + "files": [ + "LICENSE", + "README.md", + "bin", + "bits/*.js", + "types/index.d.ts", + "types/*.json", + "cptable.js", + "cputils.js", + "dist/sbcs.full.js", + "dist/cpexcel.full.js" + ], + "bugs": { + "url": "https://github.com/SheetJS/js-codepage/issues" + }, + "license": "Apache-2.0", + "engines": { + "node": ">=0.8" + } +} diff --git a/node_modules/codepage/types/index.d.ts b/node_modules/codepage/types/index.d.ts new file mode 100644 index 000000000..dcfb537a0 --- /dev/null +++ b/node_modules/codepage/types/index.d.ts @@ -0,0 +1,39 @@ +/* codepage.js (C) 2013-present SheetJS -- http://sheetjs.com */ +// TypeScript Version: 2.2 + +/** Codepage index type (integer or string representation) */ +export type CP$Index = number | string; + +/* Individual codepage converter */ +export interface CP$Conv { + enc: {[n: string]: number; }; + dec: {[n: number]: string; }; +} + +/** Encode input type (string, array of characters, Buffer) */ +export type CP$String = string | string[] | Uint8Array; + +/** Encode output / decode input type */ +export type CP$Data = string | number[] | Uint8Array; + +/** General utilities */ +export interface CP$Utils { + decode(cp: CP$Index, data: CP$Data): string; + encode(cp: CP$Index, data: CP$String, opts?: any): CP$Data; + hascp(n: number): boolean; + magic: {[cp: string]: string}; +} + +/* note: TS cannot export top-level indexer, hence default workaround */ +export interface CP$Module { + /** Version string */ + version: string; + + /** Utility Functions */ + utils: CP$Utils; + + /** Codepage Converters */ + [cp: number]: CP$Conv; +} +export const cptable: CP$Module; +export default cptable; diff --git a/node_modules/codepage/types/tsconfig.json b/node_modules/codepage/types/tsconfig.json new file mode 100644 index 000000000..b49fee959 --- /dev/null +++ b/node_modules/codepage/types/tsconfig.json @@ -0,0 +1,15 @@ +{ + "compilerOptions": { + "module": "commonjs", + "lib": [ "es5" ], + "noImplicitAny": true, + "noImplicitThis": true, + "strictNullChecks": false, + "baseUrl": ".", + "paths": { "codepage": ["."] }, + "types": [], + "noEmit": true, + "strictFunctionTypes": true, + "forceConsistentCasingInFileNames": true + } +} diff --git a/node_modules/codepage/types/tslint.json b/node_modules/codepage/types/tslint.json new file mode 100644 index 000000000..d9401a976 --- /dev/null +++ b/node_modules/codepage/types/tslint.json @@ -0,0 +1,11 @@ +{ + "extends": "dtslint/dtslint.json", + "rules": { + "whitespace": false, + "no-sparse-arrays": false, + "only-arrow-functions": false, + "no-consecutive-blank-lines": false, + "prefer-conditional-expression": false, + "one-variable-per-declaration": false + } +} diff --git a/node_modules/crc-32/LICENSE b/node_modules/crc-32/LICENSE new file mode 100644 index 000000000..5723c45b6 --- /dev/null +++ b/node_modules/crc-32/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright (C) 2014-present SheetJS LLC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/node_modules/crc-32/README.md b/node_modules/crc-32/README.md new file mode 100644 index 000000000..082127a0d --- /dev/null +++ b/node_modules/crc-32/README.md @@ -0,0 +1,200 @@ +# crc32 + +Standard CRC-32 algorithm implementation in JS (for the browser and nodejs). +Emphasis on correctness, performance, and IE6+ support. + +## Installation + +With [npm](https://www.npmjs.org/package/crc-32): + +```bash +$ npm install crc-32 +``` + +When installed globally, npm installs a script `crc32` that computes the +checksum for a specified file or standard input. + +
+ CDN Availability (click to show) + +| CDN | URL | +|-----------:|:-------------------------------------------| +| `unpkg` | | +| `jsDelivr` | | +| `CDNjs` | | + +
+ + +## Integration + +Using NodeJS or a bundler: + +```js +var CRC32 = require("crc-32"); +``` + +In the browser, the `crc32.js` script can be loaded directly: + +```html + +``` + +The browser script exposes a variable `CRC32`. + +The script will manipulate `module.exports` if available . This is not always +desirable. To prevent the behavior, define `DO_NOT_EXPORT_CRC`. + +### CRC32C (Castagnoli) + +The module and CDNs also include a parallel script for CRC32C calculations. + +Using NodeJS or a bundler: + +```js +var CRC32C = require("crc-32/crc32c"); +``` + +In the browser, the `crc32c.js` script can be loaded directly: + +```html + +``` + +The browser exposes a variable `CRC32C`. + +The script will manipulate `module.exports` if available . This is not always +desirable. To prevent the behavior, define `DO_NOT_EXPORT_CRC`. + +## Usage + +In all cases, the relevant function takes an argument representing data and an +optional second argument representing the starting "seed" (for rolling CRC). + +The return value is a signed 32-bit integer. + +- `CRC32.buf(byte array or buffer[, seed])` assumes the argument is a sequence + of 8-bit unsigned integers (nodejs `Buffer`, `Uint8Array` or array of bytes). + +- `CRC32.bstr(binary string[, seed])` assumes the argument is a binary string + where byte `i` is the low byte of the UCS-2 char: `str.charCodeAt(i) & 0xFF` + +- `CRC32.str(string[, seed])` assumes the argument is a standard JS string and + calculates the hash of the UTF-8 encoding. + +For example: + +```js +// var CRC32 = require('crc-32'); // uncomment this line if in node +CRC32.str("SheetJS") // -1647298270 +CRC32.bstr("SheetJS") // -1647298270 +CRC32.buf([ 83, 104, 101, 101, 116, 74, 83 ]) // -1647298270 + +crc32 = CRC32.buf([83, 104]) // -1826163454 "Sh" +crc32 = CRC32.str("eet", crc32) // 1191034598 "Sheet" +CRC32.bstr("JS", crc32) // -1647298270 "SheetJS" + +[CRC32.str("\u2603"), CRC32.str("\u0003")] // [ -1743909036, 1259060791 ] +[CRC32.bstr("\u2603"), CRC32.bstr("\u0003")] // [ 1259060791, 1259060791 ] +[CRC32.buf([0x2603]), CRC32.buf([0x0003])] // [ 1259060791, 1259060791 ] + +// var CRC32C = require('crc-32/crc32c'); // uncomment this line if in node +CRC32C.str("SheetJS") // -284764294 +CRC32C.bstr("SheetJS") // -284764294 +CRC32C.buf([ 83, 104, 101, 101, 116, 74, 83 ]) // -284764294 + +crc32c = CRC32C.buf([83, 104]) // -297065629 "Sh" +crc32c = CRC32C.str("eet", crc32c) // 1241364256 "Sheet" +CRC32C.bstr("JS", crc32c) // -284764294 "SheetJS" + +[CRC32C.str("\u2603"), CRC32C.str("\u0003")] // [ 1253703093, 1093509285 ] +[CRC32C.bstr("\u2603"), CRC32C.bstr("\u0003")] // [ 1093509285, 1093509285 ] +[CRC32C.buf([0x2603]), CRC32C.buf([0x0003])] // [ 1093509285, 1093509285 ] +``` + +### Best Practices + +Even though the initial seed is optional, for performance reasons it is highly +recommended to explicitly pass the default seed 0. + +In NodeJS with the native Buffer implementation, it is oftentimes faster to +convert binary strings with `Buffer.from(bstr, "binary")` first: + +```js +/* Frequently slower in NodeJS */ +crc32 = CRC32.bstr(bstr, 0); +/* Frequently faster in NodeJS */ +crc32 = CRC32.buf(Buffer.from(bstr, "binary"), 0); +``` + +This does not apply to browser `Buffer` shims, and thus is not implemented in +the library directly. + +## Testing + +`make test` will run the nodejs-based test. + +To run the in-browser tests, run a local server and go to the `ctest` directory. +`make ctestserv` will start a python `SimpleHTTPServer` server on port 8000. + +To update the browser artifacts, run `make ctest`. + +To generate the bits file, use the `crc32` function from python `zlib`: + +```python +>>> from zlib import crc32 +>>> x="foo bar baz٪☃🍣" +>>> crc32(x) +1531648243 +>>> crc32(x+x) +-218791105 +>>> crc32(x+x+x) +1834240887 +``` + +The included `crc32.njs` script can process files or standard input: + +```bash +$ echo "this is a test" > t.txt +$ bin/crc32.njs t.txt +1912935186 +``` + +For comparison, the included `crc32.py` script uses python `zlib`: + +```bash +$ bin/crc32.py t.txt +1912935186 +``` + +On OSX the command `cksum` generates unsigned CRC-32 with Algorithm 3: + +```bash +$ cksum -o 3 < IE8.Win7.For.Windows.VMware.zip +1891069052 4161613172 +$ crc32 --unsigned ~/Downloads/IE8.Win7.For.Windows.VMware.zip +1891069052 +``` + +## Performance + +`make perf` will run algorithmic performance tests (which should justify certain +decisions in the code). + +The [`adler-32` project](http://git.io/adler32) has more performance notes + +## License + +Please consult the attached LICENSE file for details. All rights not explicitly +granted by the Apache 2.0 license are reserved by the Original Author. + +## Badges + +[![Sauce Test Status](https://saucelabs.com/browser-matrix/crc32.svg)](https://saucelabs.com/u/crc32) + +[![Build Status](https://travis-ci.org/SheetJS/js-crc32.svg?branch=master)](https://travis-ci.org/SheetJS/js-crc32) +[![Coverage Status](http://img.shields.io/coveralls/SheetJS/js-crc32/master.svg)](https://coveralls.io/r/SheetJS/js-crc32?branch=master) +[![Dependencies Status](https://david-dm.org/sheetjs/js-crc32/status.svg)](https://david-dm.org/sheetjs/js-crc32) +[![NPM Downloads](https://img.shields.io/npm/dt/crc-32.svg)](https://npmjs.org/package/crc-32) +[![ghit.me](https://ghit.me/badge.svg?repo=sheetjs/js-xlsx)](https://ghit.me/repo/sheetjs/js-xlsx) +[![Analytics](https://ga-beacon.appspot.com/UA-36810333-1/SheetJS/js-crc32?pixel)](https://github.com/SheetJS/js-crc32) diff --git a/node_modules/crc-32/crc32.js b/node_modules/crc-32/crc32.js new file mode 100644 index 000000000..c92664a72 --- /dev/null +++ b/node_modules/crc-32/crc32.js @@ -0,0 +1,115 @@ +/*! crc32.js (C) 2014-present SheetJS -- http://sheetjs.com */ +/* vim: set ts=2: */ +/*exported CRC32 */ +var CRC32; +(function (factory) { + /*jshint ignore:start */ + /*eslint-disable */ + if(typeof DO_NOT_EXPORT_CRC === 'undefined') { + if('object' === typeof exports) { + factory(exports); + } else if ('function' === typeof define && define.amd) { + define(function () { + var module = {}; + factory(module); + return module; + }); + } else { + factory(CRC32 = {}); + } + } else { + factory(CRC32 = {}); + } + /*eslint-enable */ + /*jshint ignore:end */ +}(function(CRC32) { +CRC32.version = '1.2.2'; +/*global Int32Array */ +function signed_crc_table() { + var c = 0, table = new Array(256); + + for(var n =0; n != 256; ++n){ + c = n; + c = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1)); + c = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1)); + c = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1)); + c = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1)); + c = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1)); + c = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1)); + c = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1)); + c = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1)); + table[n] = c; + } + + return typeof Int32Array !== 'undefined' ? new Int32Array(table) : table; +} + +var T0 = signed_crc_table(); +function slice_by_16_tables(T) { + var c = 0, v = 0, n = 0, table = typeof Int32Array !== 'undefined' ? new Int32Array(4096) : new Array(4096) ; + + for(n = 0; n != 256; ++n) table[n] = T[n]; + for(n = 0; n != 256; ++n) { + v = T[n]; + for(c = 256 + n; c < 4096; c += 256) v = table[c] = (v >>> 8) ^ T[v & 0xFF]; + } + var out = []; + for(n = 1; n != 16; ++n) out[n - 1] = typeof Int32Array !== 'undefined' ? table.subarray(n * 256, n * 256 + 256) : table.slice(n * 256, n * 256 + 256); + return out; +} +var TT = slice_by_16_tables(T0); +var T1 = TT[0], T2 = TT[1], T3 = TT[2], T4 = TT[3], T5 = TT[4]; +var T6 = TT[5], T7 = TT[6], T8 = TT[7], T9 = TT[8], Ta = TT[9]; +var Tb = TT[10], Tc = TT[11], Td = TT[12], Te = TT[13], Tf = TT[14]; +function crc32_bstr(bstr, seed) { + var C = seed ^ -1; + for(var i = 0, L = bstr.length; i < L;) C = (C>>>8) ^ T0[(C^bstr.charCodeAt(i++))&0xFF]; + return ~C; +} + +function crc32_buf(B, seed) { + var C = seed ^ -1, L = B.length - 15, i = 0; + for(; i < L;) C = + Tf[B[i++] ^ (C & 255)] ^ + Te[B[i++] ^ ((C >> 8) & 255)] ^ + Td[B[i++] ^ ((C >> 16) & 255)] ^ + Tc[B[i++] ^ (C >>> 24)] ^ + Tb[B[i++]] ^ Ta[B[i++]] ^ T9[B[i++]] ^ T8[B[i++]] ^ + T7[B[i++]] ^ T6[B[i++]] ^ T5[B[i++]] ^ T4[B[i++]] ^ + T3[B[i++]] ^ T2[B[i++]] ^ T1[B[i++]] ^ T0[B[i++]]; + L += 15; + while(i < L) C = (C>>>8) ^ T0[(C^B[i++])&0xFF]; + return ~C; +} + +function crc32_str(str, seed) { + var C = seed ^ -1; + for(var i = 0, L = str.length, c = 0, d = 0; i < L;) { + c = str.charCodeAt(i++); + if(c < 0x80) { + C = (C>>>8) ^ T0[(C^c)&0xFF]; + } else if(c < 0x800) { + C = (C>>>8) ^ T0[(C ^ (192|((c>>6)&31)))&0xFF]; + C = (C>>>8) ^ T0[(C ^ (128|(c&63)))&0xFF]; + } else if(c >= 0xD800 && c < 0xE000) { + c = (c&1023)+64; d = str.charCodeAt(i++)&1023; + C = (C>>>8) ^ T0[(C ^ (240|((c>>8)&7)))&0xFF]; + C = (C>>>8) ^ T0[(C ^ (128|((c>>2)&63)))&0xFF]; + C = (C>>>8) ^ T0[(C ^ (128|((d>>6)&15)|((c&3)<<4)))&0xFF]; + C = (C>>>8) ^ T0[(C ^ (128|(d&63)))&0xFF]; + } else { + C = (C>>>8) ^ T0[(C ^ (224|((c>>12)&15)))&0xFF]; + C = (C>>>8) ^ T0[(C ^ (128|((c>>6)&63)))&0xFF]; + C = (C>>>8) ^ T0[(C ^ (128|(c&63)))&0xFF]; + } + } + return ~C; +} +CRC32.table = T0; +// $FlowIgnore +CRC32.bstr = crc32_bstr; +// $FlowIgnore +CRC32.buf = crc32_buf; +// $FlowIgnore +CRC32.str = crc32_str; +})); diff --git a/node_modules/crc-32/crc32c.js b/node_modules/crc-32/crc32c.js new file mode 100644 index 000000000..447fc8f7b --- /dev/null +++ b/node_modules/crc-32/crc32c.js @@ -0,0 +1,115 @@ +/*! crc32.js (C) 2014-present SheetJS -- http://sheetjs.com */ +/* vim: set ts=2: */ +/*exported CRC32C */ +var CRC32C; +(function (factory) { + /*jshint ignore:start */ + /*eslint-disable */ + if(typeof DO_NOT_EXPORT_CRC === 'undefined') { + if('object' === typeof exports) { + factory(exports); + } else if ('function' === typeof define && define.amd) { + define(function () { + var module = {}; + factory(module); + return module; + }); + } else { + factory(CRC32C = {}); + } + } else { + factory(CRC32C = {}); + } + /*eslint-enable */ + /*jshint ignore:end */ +}(function(CRC32C) { +CRC32C.version = '1.2.2'; +/*global Int32Array */ +function signed_crc_table() { + var c = 0, table = new Array(256); + + for(var n =0; n != 256; ++n){ + c = n; + c = ((c&1) ? (-2097792136 ^ (c >>> 1)) : (c >>> 1)); + c = ((c&1) ? (-2097792136 ^ (c >>> 1)) : (c >>> 1)); + c = ((c&1) ? (-2097792136 ^ (c >>> 1)) : (c >>> 1)); + c = ((c&1) ? (-2097792136 ^ (c >>> 1)) : (c >>> 1)); + c = ((c&1) ? (-2097792136 ^ (c >>> 1)) : (c >>> 1)); + c = ((c&1) ? (-2097792136 ^ (c >>> 1)) : (c >>> 1)); + c = ((c&1) ? (-2097792136 ^ (c >>> 1)) : (c >>> 1)); + c = ((c&1) ? (-2097792136 ^ (c >>> 1)) : (c >>> 1)); + table[n] = c; + } + + return typeof Int32Array !== 'undefined' ? new Int32Array(table) : table; +} + +var T0 = signed_crc_table(); +function slice_by_16_tables(T) { + var c = 0, v = 0, n = 0, table = typeof Int32Array !== 'undefined' ? new Int32Array(4096) : new Array(4096) ; + + for(n = 0; n != 256; ++n) table[n] = T[n]; + for(n = 0; n != 256; ++n) { + v = T[n]; + for(c = 256 + n; c < 4096; c += 256) v = table[c] = (v >>> 8) ^ T[v & 0xFF]; + } + var out = []; + for(n = 1; n != 16; ++n) out[n - 1] = typeof Int32Array !== 'undefined' ? table.subarray(n * 256, n * 256 + 256) : table.slice(n * 256, n * 256 + 256); + return out; +} +var TT = slice_by_16_tables(T0); +var T1 = TT[0], T2 = TT[1], T3 = TT[2], T4 = TT[3], T5 = TT[4]; +var T6 = TT[5], T7 = TT[6], T8 = TT[7], T9 = TT[8], Ta = TT[9]; +var Tb = TT[10], Tc = TT[11], Td = TT[12], Te = TT[13], Tf = TT[14]; +function crc32_bstr(bstr, seed) { + var C = seed ^ -1; + for(var i = 0, L = bstr.length; i < L;) C = (C>>>8) ^ T0[(C^bstr.charCodeAt(i++))&0xFF]; + return ~C; +} + +function crc32_buf(B, seed) { + var C = seed ^ -1, L = B.length - 15, i = 0; + for(; i < L;) C = + Tf[B[i++] ^ (C & 255)] ^ + Te[B[i++] ^ ((C >> 8) & 255)] ^ + Td[B[i++] ^ ((C >> 16) & 255)] ^ + Tc[B[i++] ^ (C >>> 24)] ^ + Tb[B[i++]] ^ Ta[B[i++]] ^ T9[B[i++]] ^ T8[B[i++]] ^ + T7[B[i++]] ^ T6[B[i++]] ^ T5[B[i++]] ^ T4[B[i++]] ^ + T3[B[i++]] ^ T2[B[i++]] ^ T1[B[i++]] ^ T0[B[i++]]; + L += 15; + while(i < L) C = (C>>>8) ^ T0[(C^B[i++])&0xFF]; + return ~C; +} + +function crc32_str(str, seed) { + var C = seed ^ -1; + for(var i = 0, L = str.length, c = 0, d = 0; i < L;) { + c = str.charCodeAt(i++); + if(c < 0x80) { + C = (C>>>8) ^ T0[(C^c)&0xFF]; + } else if(c < 0x800) { + C = (C>>>8) ^ T0[(C ^ (192|((c>>6)&31)))&0xFF]; + C = (C>>>8) ^ T0[(C ^ (128|(c&63)))&0xFF]; + } else if(c >= 0xD800 && c < 0xE000) { + c = (c&1023)+64; d = str.charCodeAt(i++)&1023; + C = (C>>>8) ^ T0[(C ^ (240|((c>>8)&7)))&0xFF]; + C = (C>>>8) ^ T0[(C ^ (128|((c>>2)&63)))&0xFF]; + C = (C>>>8) ^ T0[(C ^ (128|((d>>6)&15)|((c&3)<<4)))&0xFF]; + C = (C>>>8) ^ T0[(C ^ (128|(d&63)))&0xFF]; + } else { + C = (C>>>8) ^ T0[(C ^ (224|((c>>12)&15)))&0xFF]; + C = (C>>>8) ^ T0[(C ^ (128|((c>>6)&63)))&0xFF]; + C = (C>>>8) ^ T0[(C ^ (128|(c&63)))&0xFF]; + } + } + return ~C; +} +CRC32C.table = T0; +// $FlowIgnore +CRC32C.bstr = crc32_bstr; +// $FlowIgnore +CRC32C.buf = crc32_buf; +// $FlowIgnore +CRC32C.str = crc32_str; +})); diff --git a/node_modules/crc-32/package.json b/node_modules/crc-32/package.json new file mode 100644 index 000000000..a523291a5 --- /dev/null +++ b/node_modules/crc-32/package.json @@ -0,0 +1,43 @@ +{ + "name": "crc-32", + "version": "1.2.2", + "author": "sheetjs", + "description": "Pure-JS CRC-32", + "keywords": [ "crc", "crc32", "checksum" ], + "bin": { + "crc32": "bin/crc32.njs" + }, + "main": "crc32.js", + "types": "types/index.d.ts", + "typesVersions": { "*": { "*": ["types/index.d.ts" ] } }, + "dependencies": { + }, + "devDependencies": { + "printj": "~1.3.1", + "exit-on-epipe": "~1.0.1", + "mocha": "~2.5.3", + "blanket": "~1.2.3", + "codepage": "~1.10.0", + "@sheetjs/uglify-js": "~2.7.3", + "@types/node": "^8.0.7", + "dtslint": "^0.1.2", + "typescript": "2.2.0" + }, + "repository": { "type": "git", "url": "git://github.com/SheetJS/js-crc32.git" }, + "scripts": { + "test": "make test", + "build": "make", + "lint": "make fullint", + "dtslint": "dtslint types" + }, + "config": { + "blanket": { + "pattern": "crc32.js" + } + }, + "homepage": "https://sheetjs.com/", + "files": ["crc32.js", "crc32c.js", "bin/crc32.njs", "LICENSE", "README.md", "types/index.d.ts", "types/*.json"], + "bugs": { "url": "https://github.com/SheetJS/js-crc32/issues" }, + "license": "Apache-2.0", + "engines": { "node": ">=0.8" } +} diff --git a/node_modules/crc-32/types/index.d.ts b/node_modules/crc-32/types/index.d.ts new file mode 100644 index 000000000..163869007 --- /dev/null +++ b/node_modules/crc-32/types/index.d.ts @@ -0,0 +1,14 @@ +/* crc32.js (C) 2014-present SheetJS -- http://sheetjs.com */ +// TypeScript Version: 2.2 + +/** Version string */ +export const version: string; + +/** Process a node buffer or byte array */ +export function buf(data: number[] | Uint8Array, seed?: number): number; + +/** Process a binary string */ +export function bstr(data: string, seed?: number): number; + +/** Process a JS string based on the UTF8 encoding */ +export function str(data: string, seed?: number): number; diff --git a/node_modules/crc-32/types/tsconfig.json b/node_modules/crc-32/types/tsconfig.json new file mode 100644 index 000000000..6e122c779 --- /dev/null +++ b/node_modules/crc-32/types/tsconfig.json @@ -0,0 +1,14 @@ +{ + "compilerOptions": { + "module": "commonjs", + "lib": [ "es5" ], + "noImplicitAny": true, + "noImplicitThis": true, + "strictNullChecks": false, + "baseUrl": ".", + "paths": { "crc-32": ["."] }, + "types": [], + "noEmit": true, + "forceConsistentCasingInFileNames": true + } +} diff --git a/node_modules/crc-32/types/tslint.json b/node_modules/crc-32/types/tslint.json new file mode 100644 index 000000000..d9401a976 --- /dev/null +++ b/node_modules/crc-32/types/tslint.json @@ -0,0 +1,11 @@ +{ + "extends": "dtslint/dtslint.json", + "rules": { + "whitespace": false, + "no-sparse-arrays": false, + "only-arrow-functions": false, + "no-consecutive-blank-lines": false, + "prefer-conditional-expression": false, + "one-variable-per-declaration": false + } +} diff --git a/node_modules/frac/LICENSE b/node_modules/frac/LICENSE new file mode 100644 index 000000000..d99d93d8d --- /dev/null +++ b/node_modules/frac/LICENSE @@ -0,0 +1,13 @@ +Copyright (C) 2012-present SheetJS + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/node_modules/frac/README.md b/node_modules/frac/README.md new file mode 100644 index 000000000..3c982ec0e --- /dev/null +++ b/node_modules/frac/README.md @@ -0,0 +1,128 @@ +# frac + +Rational approximation to a floating point number with bounded denominator. + +Uses the [Mediant Method](https://en.wikipedia.org/wiki/Mediant_method). + +This module also provides an implementation of the continued fraction method as +described by Aberth in "A method for exact computation with rational numbers". +The algorithm is used in SheetJS Libraries to +replicate fraction formats. + +## Installation + +### JS + +With [`npm`](https://www.npmjs.org/package/frac): + +```bash +$ npm install frac +``` + +In the browser: + +```html + +``` + +The script will manipulate `module.exports` if available . This is not always +desirable. To prevent the behavior, define `DO_NOT_EXPORT_FRAC` + +### Python + +From [`PyPI`](https://pypi.python.org/pypi/frac): + +```bash +$ pip install frac +``` + +## Usage + +In all cases, the relevant function takes 3 arguments: + + - `x` the number we wish to approximate + - `D` the maximum denominator + - `mixed` if true, return a mixed fraction; if false, improper + +The return value is an array of the form `[quot, num, den]` where `quot==0` +for improper fractions. `quot <= x` for mixed fractions, which may lead to some +unexpected results when rendering negative numbers. + +### JS + +The exported `frac` function implements the Mediant method. + +`frac.cont` implements the Aberth algorithm + +For example: + +```js +> // var frac = require('frac'); // uncomment this line if in node +> frac(1.3, 9); // [ 0, 9, 7 ] // 1.3 ~ 9/7 +> frac(1.3, 9, true); // [ 1, 2, 7 ] // 1.3 ~ 1 + 2/7 +> frac(-1.3, 9); // [ 0, -9, 7 ] // -1.3 ~ -9/7 +> frac(-1.3, 9, true); // [ -2, 5, 7 ] // -1.3 ~ -2 + 5/7 + +> frac.cont(1.3, 9); // [ 0, 4, 3 ] // 1.3 ~ 4/3 +> frac.cont(1.3, 9, true); // [ 1, 1, 3 ] // 1.3 ~ 1 + 1/3 +> frac.cont(-1.3, 9); // [ 0, -4, 3 ] // -1.3 ~ -4/3 +> frac.cont(-1.3, 9, true); // [ -2, 2, 3 ] // -1.3 ~ -2 + 2/3 +``` + + +### Python + +`frac.med` implements Mediant method. + +`frac.cont` implements Aberth algorithm. + +For example: + +```py +>>> import frac +>>> frac.med(1.3, 9) ## [ 0, 9, 7 ] ## 1.3 ~ 9/7 +>>> frac.med(1.3, 9, True) ## [ 1, 2, 7 ] ## 1.3 ~ 1 + 2/7 +>>> frac.med(-1.3, 9) ## [ 0, -9, 7 ] ## -1.3 ~ -9/7 +>>> frac.med(-1.3, 9, True) ## [ -2, 5, 7 ] ## -1.3 ~ -2 + 5/7 + +>>> frac.cont(1.3, 9) ## [ 0, 4, 3 ] ## 1.3 ~ 4/3 +>>> frac.cont(1.3, 9, True) ## [ 1, 1, 3 ] ## 1.3 ~ 1 + 1/3 +>>> frac.cont(-1.3, 9) ## [ 0, -4, 3 ] ## -1.3 ~ -4/3 +>>> frac.cont(-1.3, 9, True) ## [ -2, 2, 3 ] ## -1.3 ~ -2 + 2/3 +``` + +## Testing + +The test TSV baselines in the `test_files` directory have four columns: + +- Column A contains the raw values +- Column B format "Up to one digit (1/4)" (`denominator = 9`) +- Column C format "Up to two digits (21/25)" (`denominator = 99`) +- Column D format "Up to three digits (312/943)" (`denominator = 999`) + +`make test` will run the node-based tests. + +`make pytest` will run the python tests against the system Python version. + +`make pypytest` will run the python tests against `pypy` if installed + +## License + +Please consult the attached LICENSE file for details. All rights not explicitly +granted by the Apache 2.0 License are reserved by the Original Author. + +## Badges + +[![Build Status](https://saucelabs.com/browser-matrix/frac.svg)](https://saucelabs.com/u/frac) + +[![Build Status](https://travis-ci.org/SheetJS/frac.svg?branch=master)](https://travis-ci.org/SheetJS/frac) + +[![Coverage Status](http://img.shields.io/coveralls/SheetJS/frac/master.svg)](https://coveralls.io/r/SheetJS/frac?branch=master) + +[![NPM Downloads](https://img.shields.io/npm/dt/frac.svg)](https://npmjs.org/package/frac) + +[![Dependencies Status](https://david-dm.org/sheetjs/frac/status.svg)](https://david-dm.org/sheetjs/frac) + +[![ghit.me](https://ghit.me/badge.svg?repo=sheetjs/js-xlsx)](https://ghit.me/repo/sheetjs/js-xlsx) + +[![Analytics](https://ga-beacon.appspot.com/UA-36810333-1/SheetJS/frac?pixel)](https://github.com/SheetJS/frac) diff --git a/node_modules/frac/frac.js b/node_modules/frac/frac.js new file mode 100644 index 000000000..efd1a0dcb --- /dev/null +++ b/node_modules/frac/frac.js @@ -0,0 +1,42 @@ +/* frac.js (C) 2012-present SheetJS -- http://sheetjs.com */ +var frac = function frac(x, D, mixed) { + var n1 = Math.floor(x), d1 = 1; + var n2 = n1+1, d2 = 1; + if(x !== n1) while(d1 <= D && d2 <= D) { + var m = (n1 + n2) / (d1 + d2); + if(x === m) { + if(d1 + d2 <= D) { d1+=d2; n1+=n2; d2=D+1; } + else if(d1 > d2) d2=D+1; + else d1=D+1; + break; + } + else if(x < m) { n2 = n1+n2; d2 = d1+d2; } + else { n1 = n1+n2; d1 = d1+d2; } + } + if(d1 > D) { d1 = d2; n1 = n2; } + if(!mixed) return [0, n1, d1]; + var q = Math.floor(n1/d1); + return [q, n1 - q*d1, d1]; +}; +frac.cont = function cont(x, D, mixed) { + var sgn = x < 0 ? -1 : 1; + var B = x * sgn; + var P_2 = 0, P_1 = 1, P = 0; + var Q_2 = 1, Q_1 = 0, Q = 0; + var A = Math.floor(B); + while(Q_1 < D) { + A = Math.floor(B); + P = A * P_1 + P_2; + Q = A * Q_1 + Q_2; + if((B - A) < 0.00000005) break; + B = 1 / (B - A); + P_2 = P_1; P_1 = P; + Q_2 = Q_1; Q_1 = Q; + } + if(Q > D) { if(Q_1 > D) { Q = Q_2; P = P_2; } else { Q = Q_1; P = P_1; } } + if(!mixed) return [0, sgn * P, Q]; + var q = Math.floor(sgn * P/Q); + return [q, sgn*P - q*Q, Q]; +}; +// eslint-disable-next-line no-undef +if(typeof module !== 'undefined' && typeof DO_NOT_EXPORT_FRAC === 'undefined') module.exports = frac; diff --git a/node_modules/frac/package.json b/node_modules/frac/package.json new file mode 100644 index 000000000..d9ee483eb --- /dev/null +++ b/node_modules/frac/package.json @@ -0,0 +1,36 @@ +{ + "name": "frac", + "version": "1.1.2", + "author": "SheetJS", + "description": "Rational approximation with bounded denominator", + "keywords": [ "math", "fraction", "rational", "approximation" ], + "main": "./frac", + "types": "types", + "dependencies": {}, + "devDependencies": { + "voc": "~1.1.0", + "mocha": "~2.5.3", + "blanket": "~1.2.3", + "codepage": "~1.10.0", + "@sheetjs/uglify-js": "~2.7.3", + "@types/node": "^8.0.7", + "dtslint": "^0.1.2", + "typescript": "2.2.0" + }, + "repository": { "type":"git", "url":"git://github.com/SheetJS/frac.git" }, + "scripts": { + "test": "make test", + "build": "make", + "lint": "make fullint", + "dtslint": "dtslint types" + }, + "config": { + "blanket": { + "pattern": "frac.js" + } + }, + "homepage": "http://sheetjs.com/opensource", + "bugs": { "url": "https://github.com/SheetJS/frac/issues" }, + "license": "Apache-2.0", + "engines": { "node": ">=0.8" } +} diff --git a/node_modules/frac/types/index.d.ts b/node_modules/frac/types/index.d.ts new file mode 100644 index 000000000..f823c95e6 --- /dev/null +++ b/node_modules/frac/types/index.d.ts @@ -0,0 +1,9 @@ +/* frac.js (C) 2012-present SheetJS -- http://sheetjs.com */ +// TypeScript Version: 2.2 + +export interface Frac$Module { + (x: number, D: number, mixed?: boolean): [number, number, number]; + cont(x: number, D: number, mixed?: boolean): [number, number, number]; +} +export const frac: Frac$Module; +export default frac; diff --git a/node_modules/frac/types/tsconfig.json b/node_modules/frac/types/tsconfig.json new file mode 100644 index 000000000..d6a44d3b5 --- /dev/null +++ b/node_modules/frac/types/tsconfig.json @@ -0,0 +1,14 @@ +{ + "compilerOptions": { + "module": "commonjs", + "lib": [ "es5" ], + "noImplicitAny": true, + "noImplicitThis": true, + "strictNullChecks": false, + "baseUrl": ".", + "paths": { "frac": ["."] }, + "types": [], + "noEmit": true, + "forceConsistentCasingInFileNames": true + } +} diff --git a/node_modules/frac/types/tslint.json b/node_modules/frac/types/tslint.json new file mode 100644 index 000000000..d9401a976 --- /dev/null +++ b/node_modules/frac/types/tslint.json @@ -0,0 +1,11 @@ +{ + "extends": "dtslint/dtslint.json", + "rules": { + "whitespace": false, + "no-sparse-arrays": false, + "only-arrow-functions": false, + "no-consecutive-blank-lines": false, + "prefer-conditional-expression": false, + "one-variable-per-declaration": false + } +} diff --git a/node_modules/ssf/LICENSE b/node_modules/ssf/LICENSE new file mode 100644 index 000000000..ac1d91a4b --- /dev/null +++ b/node_modules/ssf/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright (C) 2013-present SheetJS LLC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/node_modules/ssf/README.md b/node_modules/ssf/README.md new file mode 100644 index 000000000..eeb5584ab --- /dev/null +++ b/node_modules/ssf/README.md @@ -0,0 +1,119 @@ +# [SheetJS SSF](http://sheetjs.com) + +ssf (SpreadSheet Format) is a pure JS library to format data using ECMA-376 +spreadsheet format codes (used in popular spreadsheet software packages). + +This is the community version. We also offer a pro version with additional +features like international support as well as dedicated support. + +## Installation + +With [npm](https://www.npmjs.org/package/ssf): + +```bash +$ npm install ssf +``` + +In the browser: + +```html + +``` + +The browser exposes a variable `SSF` + +When installed globally, npm installs a script `ssf` that renders the format +string with the given arguments. Running the script with `-h` displays help. + +The script will manipulate `module.exports` if available . This is not always +desirable. To prevent the behavior, define `DO_NOT_EXPORT_SSF`. + +## Usage + +`SSF.format(fmt, val, opts)` formats `val` using the format `fmt`. + +If `fmt` is a string, it will be parsed and evaluated. If `fmt` is a `number`, +the actual format will be the corresponding entry in the internal format table. +For a raw numeric format like `000`, the value should be passed as a string. + +Date arguments are interpreted in the local time of the JS client. + +The options argument may contain the following keys: + +| Option Name | Default | Description | +| :---------- | :-----: | :--------------------------------------------------- | +| `date1904` | false | Use 1904 date system if true, 1900 system if false | + +### Manipulating the Internal Format Table + +Binary spreadsheet formats store cell formats in a table and reference by index. +This library uses a global table: + +`SSF._table` is the underlying object, mapping numeric keys to format strings. + +`SSF.load(fmt:string, idx:?number):number` assigns the format to the specified +index and returns the index. If the index is not specified, SSF will search the +space for an available format slot pick an unused slot. For compatibility with +the XLS and XLSB file formats, custom indices should be in the valid ranges +`5-8`, `23-26`, `41-44`, `63-66`, `164-382` (see `[MS-XLSB] 2.4.655 BrtFmt`) + +`SSF.get_table()` gets the internal format table (number to format mapping). + +`SSF.load_table(table)` sets the internal format table. + +### Other Utilities + +`SSF.parse_date_code(val:number, opts:?any)` parses `val`, returning an object: + +```typescript +type SSFDate = { + D:number; /* number of whole days since relevant epoch, 0 <= D */ + y:number; /* integral year portion, epoch_year <= y */ + m:number; /* integral month portion, 1 <= m <= 12 */ + d:number; /* integral day portion, subject to gregorian YMD constraints */ + q:number; /* integral day of week (0=Sunday .. 6=Saturday) 0 <= q <= 6 */ + + T:number; /* number of seconds since midnight, 0 <= T < 86400 */ + H:number; /* integral number of hours since midnight, 0 <= H < 24 */ + M:number; /* integral number of minutes since the last hour, 0 <= M < 60 */ + S:number; /* integral number of seconds since the last minute, 0 <= S < 60 */ + u:number; /* sub-second part of time, 0 <= u < 1 */ +} +``` + +`SSF.is_date(fmt:string):boolean` returns `true` if `fmt` encodes a date format. + +## Examples + +- [Basic Demo](http://oss.sheetjs.com/ssf/) +- [Custom Formats Builder](https://customformats.com) + +## Related Packages + +[`ssf-cli`](https://www.npmjs.com/package/ssf-cli) is a simple NodeJS command +line tool for formatting numbers. + +## License + +Please consult the attached LICENSE file for details. All rights not explicitly +granted by the Apache 2.0 license are reserved by the Original Author. + +## References + + - `ECMA-376`: Office Open XML File Formats + - `MS-XLS`: Excel Binary File Format (.xls) Structure Specification + - `MS-XLSB`: Excel (.xlsb) Binary File Format + +## Badges + +[![Sauce Test Status](https://saucelabs.com/browser-matrix/ssfjs.svg)](https://saucelabs.com/u/ssfjs) + +[![Build Status](https://travis-ci.org/SheetJS/ssf.svg?branch=master)](https://travis-ci.org/SheetJS/ssf) + +[![Coverage Status](http://img.shields.io/coveralls/SheetJS/ssf/master.svg)](https://coveralls.io/r/SheetJS/ssf?branch=master) + +[![NPM Downloads](https://img.shields.io/npm/dt/ssf.svg)](https://npmjs.org/package/ssf) + +[![Dependencies Status](https://david-dm.org/sheetjs/ssf/status.svg)](https://david-dm.org/sheetjs/ssf) + +[![Analytics](https://ga-beacon.appspot.com/UA-36810333-1/SheetJS/ssf?pixel)](https://github.com/SheetJS/ssf) diff --git a/node_modules/ssf/package.json b/node_modules/ssf/package.json new file mode 100644 index 000000000..4fcf03990 --- /dev/null +++ b/node_modules/ssf/package.json @@ -0,0 +1,57 @@ +{ + "name": "ssf", + "version": "0.11.2", + "author": "sheetjs", + "description": "Format data using ECMA-376 spreadsheet Format Codes", + "keywords": [ + "format", + "sprintf", + "spreadsheet" + ], + "main": "./ssf", + "types": "types", + "dependencies": { + "frac":"~1.1.2" + }, + "devDependencies": { + "@sheetjs/uglify-js":"~2.7.3", + "@types/node":"^8.0.7", + "blanket": "~1.2.3", + "dtslint": "^0.1.2", + "mocha": "~2.5.3", + "typescript": "2.2.0" + }, + "repository": { + "type": "git", + "url": "git://github.com/SheetJS/ssf.git" + }, + "scripts": { + "test": "make test", + "build": "make", + "lint": "make fullint", + "dtslint": "dtslint types" + }, + "config": { + "blanket": { + "pattern": "ssf.js" + } + }, + "alex": { + "allow": [ + "special", + "simple", + "just", + "crash", + "wtf", + "holes" + ] + }, + "homepage": "http://sheetjs.com/", + "bugs": { + "url": "https://github.com/SheetJS/ssf/issues" + }, + "license": "Apache-2.0", + "engines": { + "node": ">=0.8" + } +} diff --git a/node_modules/ssf/ssf.flow.js b/node_modules/ssf/ssf.flow.js new file mode 100644 index 000000000..66c0b6f73 --- /dev/null +++ b/node_modules/ssf/ssf.flow.js @@ -0,0 +1,980 @@ +/* ssf.js (C) 2013-present SheetJS -- http://sheetjs.com */ +/* vim: set ts=2: */ +/*jshint -W041 */ +/*:: declare var DO_NOT_EXPORT_SSF: any; */ +var SSF/*:SSFModule*/ = ({}/*:any*/); +var make_ssf = function make_ssf(SSF/*:SSFModule*/){ +SSF.version = '0.11.2'; +function _strrev(x/*:string*/)/*:string*/ { var o = "", i = x.length-1; while(i>=0) o += x.charAt(i--); return o; } +function fill(c/*:string*/,l/*:number*/)/*:string*/ { var o = ""; while(o.length < l) o+=c; return o; } +function pad0(v/*:any*/,d/*:number*/)/*:string*/{var t=""+v; return t.length>=d?t:fill('0',d-t.length)+t;} +function pad_(v/*:any*/,d/*:number*/)/*:string*/{var t=""+v;return t.length>=d?t:fill(' ',d-t.length)+t;} +function rpad_(v/*:any*/,d/*:number*/)/*:string*/{var t=""+v; return t.length>=d?t:t+fill(' ',d-t.length);} +function pad0r1(v/*:any*/,d/*:number*/)/*:string*/{var t=""+Math.round(v); return t.length>=d?t:fill('0',d-t.length)+t;} +function pad0r2(v/*:any*/,d/*:number*/)/*:string*/{var t=""+v; return t.length>=d?t:fill('0',d-t.length)+t;} +var p2_32 = Math.pow(2,32); +function pad0r(v/*:any*/,d/*:number*/)/*:string*/{if(v>p2_32||v<-p2_32) return pad0r1(v,d); var i = Math.round(v); return pad0r2(i,d); } +function isgeneral(s/*:string*/, i/*:?number*/)/*:boolean*/ { i = i || 0; return s.length >= 7 + i && (s.charCodeAt(i)|32) === 103 && (s.charCodeAt(i+1)|32) === 101 && (s.charCodeAt(i+2)|32) === 110 && (s.charCodeAt(i+3)|32) === 101 && (s.charCodeAt(i+4)|32) === 114 && (s.charCodeAt(i+5)|32) === 97 && (s.charCodeAt(i+6)|32) === 108; } +/*:: +type SSF_write_num = {(type:string, fmt:string, val:number):string}; +*/ +var days/*:Array >*/ = [ + ['Sun', 'Sunday'], + ['Mon', 'Monday'], + ['Tue', 'Tuesday'], + ['Wed', 'Wednesday'], + ['Thu', 'Thursday'], + ['Fri', 'Friday'], + ['Sat', 'Saturday'] +]; +var months/*:Array >*/ = [ + ['J', 'Jan', 'January'], + ['F', 'Feb', 'February'], + ['M', 'Mar', 'March'], + ['A', 'Apr', 'April'], + ['M', 'May', 'May'], + ['J', 'Jun', 'June'], + ['J', 'Jul', 'July'], + ['A', 'Aug', 'August'], + ['S', 'Sep', 'September'], + ['O', 'Oct', 'October'], + ['N', 'Nov', 'November'], + ['D', 'Dec', 'December'] +]; +function init_table(t/*:any*/) { + t[0]= 'General'; + t[1]= '0'; + t[2]= '0.00'; + t[3]= '#,##0'; + t[4]= '#,##0.00'; + t[9]= '0%'; + t[10]= '0.00%'; + t[11]= '0.00E+00'; + t[12]= '# ?/?'; + t[13]= '# ??/??'; + t[14]= 'm/d/yy'; + t[15]= 'd-mmm-yy'; + t[16]= 'd-mmm'; + t[17]= 'mmm-yy'; + t[18]= 'h:mm AM/PM'; + t[19]= 'h:mm:ss AM/PM'; + t[20]= 'h:mm'; + t[21]= 'h:mm:ss'; + t[22]= 'm/d/yy h:mm'; + t[37]= '#,##0 ;(#,##0)'; + t[38]= '#,##0 ;[Red](#,##0)'; + t[39]= '#,##0.00;(#,##0.00)'; + t[40]= '#,##0.00;[Red](#,##0.00)'; + t[45]= 'mm:ss'; + t[46]= '[h]:mm:ss'; + t[47]= 'mmss.0'; + t[48]= '##0.0E+0'; + t[49]= '@'; + t[56]= '"上午/下午 "hh"時"mm"分"ss"秒 "'; +} + +var table_fmt = {}; +init_table(table_fmt); +/* Defaults determined by systematically testing in Excel 2019 */ + +/* These formats appear to default to other formats in the table */ +var default_map/*:Array*/ = []; +var defi = 0; + +// 5 -> 37 ... 8 -> 40 +for(defi = 5; defi <= 8; ++defi) default_map[defi] = 32 + defi; + +// 23 -> 0 ... 26 -> 0 +for(defi = 23; defi <= 26; ++defi) default_map[defi] = 0; + +// 27 -> 14 ... 31 -> 14 +for(defi = 27; defi <= 31; ++defi) default_map[defi] = 14; +// 50 -> 14 ... 58 -> 14 +for(defi = 50; defi <= 58; ++defi) default_map[defi] = 14; + +// 59 -> 1 ... 62 -> 4 +for(defi = 59; defi <= 62; ++defi) default_map[defi] = defi - 58; +// 67 -> 9 ... 68 -> 10 +for(defi = 67; defi <= 68; ++defi) default_map[defi] = defi - 58; +// 72 -> 14 ... 75 -> 17 +for(defi = 72; defi <= 75; ++defi) default_map[defi] = defi - 58; + +// 69 -> 12 ... 71 -> 14 +for(defi = 67; defi <= 68; ++defi) default_map[defi] = defi - 57; + +// 76 -> 20 ... 78 -> 22 +for(defi = 76; defi <= 78; ++defi) default_map[defi] = defi - 56; + +// 79 -> 45 ... 81 -> 47 +for(defi = 79; defi <= 81; ++defi) default_map[defi] = defi - 34; + +// 82 -> 0 ... 65536 -> 0 (omitted) + +/* These formats technically refer to Accounting formats with no equivalent */ +var default_str/*:Array*/ = []; + +// 5 -- Currency, 0 decimal, black negative +default_str[5] = default_str[63] = '"$"#,##0_);\\("$"#,##0\\)'; +// 6 -- Currency, 0 decimal, red negative +default_str[6] = default_str[64] = '"$"#,##0_);[Red]\\("$"#,##0\\)'; +// 7 -- Currency, 2 decimal, black negative +default_str[7] = default_str[65] = '"$"#,##0.00_);\\("$"#,##0.00\\)'; +// 8 -- Currency, 2 decimal, red negative +default_str[8] = default_str[66] = '"$"#,##0.00_);[Red]\\("$"#,##0.00\\)'; + +// 41 -- Accounting, 0 decimal, No Symbol +default_str[41] = '_(* #,##0_);_(* \\(#,##0\\);_(* "-"_);_(@_)'; +// 42 -- Accounting, 0 decimal, $ Symbol +default_str[42] = '_("$"* #,##0_);_("$"* \\(#,##0\\);_("$"* "-"_);_(@_)'; +// 43 -- Accounting, 2 decimal, No Symbol +default_str[43] = '_(* #,##0.00_);_(* \\(#,##0.00\\);_(* "-"??_);_(@_)'; +// 44 -- Accounting, 2 decimal, $ Symbol +default_str[44] = '_("$"* #,##0.00_);_("$"* \\(#,##0.00\\);_("$"* "-"??_);_(@_)'; +function frac(x/*:number*/, D/*:number*/, mixed/*:?boolean*/)/*:Array*/ { + var sgn = x < 0 ? -1 : 1; + var B = x * sgn; + var P_2 = 0, P_1 = 1, P = 0; + var Q_2 = 1, Q_1 = 0, Q = 0; + var A = Math.floor(B); + while(Q_1 < D) { + A = Math.floor(B); + P = A * P_1 + P_2; + Q = A * Q_1 + Q_2; + if((B - A) < 0.00000005) break; + B = 1 / (B - A); + P_2 = P_1; P_1 = P; + Q_2 = Q_1; Q_1 = Q; + } + if(Q > D) { if(Q_1 > D) { Q = Q_2; P = P_2; } else { Q = Q_1; P = P_1; } } + if(!mixed) return [0, sgn * P, Q]; + var q = Math.floor(sgn * P/Q); + return [q, sgn*P - q*Q, Q]; +} +function parse_date_code(v/*:number*/,opts/*:?any*/,b2/*:?boolean*/) { + if(v > 2958465 || v < 0) return null; + var date = (v|0), time = Math.floor(86400 * (v - date)), dow=0; + var dout=[]; + var out={D:date, T:time, u:86400*(v-date)-time,y:0,m:0,d:0,H:0,M:0,S:0,q:0}; + if(Math.abs(out.u) < 1e-6) out.u = 0; + if(opts && opts.date1904) date += 1462; + if(out.u > 0.9999) { + out.u = 0; + if(++time == 86400) { out.T = time = 0; ++date; ++out.D; } + } + if(date === 60) {dout = b2 ? [1317,10,29] : [1900,2,29]; dow=3;} + else if(date === 0) {dout = b2 ? [1317,8,29] : [1900,1,0]; dow=6;} + else { + if(date > 60) --date; + /* 1 = Jan 1 1900 in Gregorian */ + var d = new Date(1900, 0, 1); + d.setDate(d.getDate() + date - 1); + dout = [d.getFullYear(), d.getMonth()+1,d.getDate()]; + dow = d.getDay(); + if(date < 60) dow = (dow + 6) % 7; + if(b2) dow = fix_hijri(d, dout); + } + out.y = dout[0]; out.m = dout[1]; out.d = dout[2]; + out.S = time % 60; time = Math.floor(time / 60); + out.M = time % 60; time = Math.floor(time / 60); + out.H = time; + out.q = dow; + return out; +} +SSF.parse_date_code = parse_date_code; +var basedate = new Date(1899, 11, 31, 0, 0, 0); +var dnthresh = basedate.getTime(); +var base1904 = new Date(1900, 2, 1, 0, 0, 0); +function datenum_local(v/*:Date*/, date1904/*:?boolean*/)/*:number*/ { + var epoch = v.getTime(); + if(date1904) epoch -= 1461*24*60*60*1000; + else if(v >= base1904) epoch += 24*60*60*1000; + return (epoch - (dnthresh + (v.getTimezoneOffset() - basedate.getTimezoneOffset()) * 60000)) / (24 * 60 * 60 * 1000); +} +/* The longest 32-bit integer text is "-4294967296", exactly 11 chars */ +function general_fmt_int(v/*:number*/)/*:string*/ { return v.toString(10); } +SSF._general_int = general_fmt_int; + +/* ECMA-376 18.8.30 numFmt*/ +/* Note: `toPrecision` uses standard form when prec > E and E >= -6 */ +var general_fmt_num = (function make_general_fmt_num() { + var trailing_zeroes_and_decimal = /(?:\.0*|(\.\d*[1-9])0+)$/; + function strip_decimal(o/*:string*/)/*:string*/ { + return (o.indexOf(".") == -1) ? o : o.replace(trailing_zeroes_and_decimal, "$1"); + } + + /* General Exponential always shows 2 digits exp and trims the mantissa */ + var mantissa_zeroes_and_decimal = /(?:\.0*|(\.\d*[1-9])0+)[Ee]/; + var exp_with_single_digit = /(E[+-])(\d)$/; + function normalize_exp(o/*:string*/)/*:string*/ { + if(o.indexOf("E") == -1) return o; + return o.replace(mantissa_zeroes_and_decimal,"$1E").replace(exp_with_single_digit,"$10$2"); + } + + /* exponent >= -9 and <= 9 */ + function small_exp(v/*:number*/)/*:string*/ { + var w = (v<0?12:11); + var o = strip_decimal(v.toFixed(12)); if(o.length <= w) return o; + o = v.toPrecision(10); if(o.length <= w) return o; + return v.toExponential(5); + } + + /* exponent >= 11 or <= -10 likely exponential */ + function large_exp(v/*:number*/)/*:string*/ { + var o = strip_decimal(v.toFixed(11)); + return (o.length > (v<0?12:11) || o === "0" || o === "-0") ? v.toPrecision(6) : o; + } + + function general_fmt_num_base(v/*:number*/)/*:string*/ { + var V = Math.floor(Math.log(Math.abs(v))*Math.LOG10E), o; + + if(V >= -4 && V <= -1) o = v.toPrecision(10+V); + else if(Math.abs(V) <= 9) o = small_exp(v); + else if(V === 10) o = v.toFixed(10).substr(0,12); + else o = large_exp(v); + + return strip_decimal(normalize_exp(o.toUpperCase())); + } + + return general_fmt_num_base; +})(); +SSF._general_num = general_fmt_num; + +/* + "General" rules: + - text is passed through ("@") + - booleans are rendered as TRUE/FALSE + - "up to 11 characters" displayed for numbers + - Default date format (code 14) used for Dates + + TODO: technically the display depends on the width of the cell +*/ +function general_fmt(v/*:any*/, opts/*:any*/) { + switch(typeof v) { + case 'string': return v; + case 'boolean': return v ? "TRUE" : "FALSE"; + case 'number': return (v|0) === v ? v.toString(10) : general_fmt_num(v); + case 'undefined': return ""; + case 'object': + if(v == null) return ""; + if(v instanceof Date) return format(14, datenum_local(v, opts && opts.date1904), opts); + } + throw new Error("unsupported value in General format: " + v); +} +SSF._general = general_fmt; +function fix_hijri(date/*:Date*/, o/*:[number, number, number]*/) { + /* TODO: properly adjust y/m/d and */ + o[0] -= 581; + var dow = date.getDay(); + if(date < 60) dow = (dow + 6) % 7; + return dow; +} +var THAI_DIGITS = "\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59".split(""); +/*jshint -W086 */ +function write_date(type/*:number*/, fmt/*:string*/, val, ss0/*:?number*/)/*:string*/ { + var o="", ss=0, tt=0, y = val.y, out, outl = 0; + switch(type) { + case 98: /* 'b' buddhist year */ + y = val.y + 543; + /* falls through */ + case 121: /* 'y' year */ + switch(fmt.length) { + case 1: case 2: out = y % 100; outl = 2; break; + default: out = y % 10000; outl = 4; break; + } break; + case 109: /* 'm' month */ + switch(fmt.length) { + case 1: case 2: out = val.m; outl = fmt.length; break; + case 3: return months[val.m-1][1]; + case 5: return months[val.m-1][0]; + default: return months[val.m-1][2]; + } break; + case 100: /* 'd' day */ + switch(fmt.length) { + case 1: case 2: out = val.d; outl = fmt.length; break; + case 3: return days[val.q][0]; + default: return days[val.q][1]; + } break; + case 104: /* 'h' 12-hour */ + switch(fmt.length) { + case 1: case 2: out = 1+(val.H+11)%12; outl = fmt.length; break; + default: throw 'bad hour format: ' + fmt; + } break; + case 72: /* 'H' 24-hour */ + switch(fmt.length) { + case 1: case 2: out = val.H; outl = fmt.length; break; + default: throw 'bad hour format: ' + fmt; + } break; + case 77: /* 'M' minutes */ + switch(fmt.length) { + case 1: case 2: out = val.M; outl = fmt.length; break; + default: throw 'bad minute format: ' + fmt; + } break; + case 115: /* 's' seconds */ + if(fmt != 's' && fmt != 'ss' && fmt != '.0' && fmt != '.00' && fmt != '.000') throw 'bad second format: ' + fmt; + if(val.u === 0 && (fmt == "s" || fmt == "ss")) return pad0(val.S, fmt.length); + /*::if(!ss0) ss0 = 0; */ + if(ss0 >= 2) tt = ss0 === 3 ? 1000 : 100; + else tt = ss0 === 1 ? 10 : 1; + ss = Math.round((tt)*(val.S + val.u)); + if(ss >= 60*tt) ss = 0; + if(fmt === 's') return ss === 0 ? "0" : ""+ss/tt; + o = pad0(ss,2 + ss0); + if(fmt === 'ss') return o.substr(0,2); + return "." + o.substr(2,fmt.length-1); + case 90: /* 'Z' absolute time */ + switch(fmt) { + case '[h]': case '[hh]': out = val.D*24+val.H; break; + case '[m]': case '[mm]': out = (val.D*24+val.H)*60+val.M; break; + case '[s]': case '[ss]': out = ((val.D*24+val.H)*60+val.M)*60+Math.round(val.S+val.u); break; + default: throw 'bad abstime format: ' + fmt; + } outl = fmt.length === 3 ? 1 : 2; break; + case 101: /* 'e' era */ + out = y; outl = 1; break; + } + var outstr = outl > 0 ? pad0(out, outl) : ""; + return outstr; +} +/*jshint +W086 */ +function commaify(s/*:string*/)/*:string*/ { + var w = 3; + if(s.length <= w) return s; + var j = (s.length % w), o = s.substr(0,j); + for(; j!=s.length; j+=w) o+=(o.length > 0 ? "," : "") + s.substr(j,w); + return o; +} +var write_num/*:SSF_write_num*/ = (function make_write_num(){ +var pct1 = /%/g; +function write_num_pct(type/*:string*/, fmt/*:string*/, val/*:number*/)/*:string*/{ + var sfmt = fmt.replace(pct1,""), mul = fmt.length - sfmt.length; + return write_num(type, sfmt, val * Math.pow(10,2*mul)) + fill("%",mul); +} +function write_num_cm(type/*:string*/, fmt/*:string*/, val/*:number*/)/*:string*/{ + var idx = fmt.length - 1; + while(fmt.charCodeAt(idx-1) === 44) --idx; + return write_num(type, fmt.substr(0,idx), val / Math.pow(10,3*(fmt.length-idx))); +} +function write_num_exp(fmt/*:string*/, val/*:number*/)/*:string*/{ + var o/*:string*/; + var idx = fmt.indexOf("E") - fmt.indexOf(".") - 1; + if(fmt.match(/^#+0.0E\+0$/)) { + if(val == 0) return "0.0E+0"; + else if(val < 0) return "-" + write_num_exp(fmt, -val); + var period = fmt.indexOf("."); if(period === -1) period=fmt.indexOf('E'); + var ee = Math.floor(Math.log(val)*Math.LOG10E)%period; + if(ee < 0) ee += period; + o = (val/Math.pow(10,ee)).toPrecision(idx+1+(period+ee)%period); + if(o.indexOf("e") === -1) { + var fakee = Math.floor(Math.log(val)*Math.LOG10E); + if(o.indexOf(".") === -1) o = o.charAt(0) + "." + o.substr(1) + "E+" + (fakee - o.length+ee); + else o += "E+" + (fakee - ee); + while(o.substr(0,2) === "0.") { + o = o.charAt(0) + o.substr(2,period) + "." + o.substr(2+period); + o = o.replace(/^0+([1-9])/,"$1").replace(/^0+\./,"0."); + } + o = o.replace(/\+-/,"-"); + } + o = o.replace(/^([+-]?)(\d*)\.(\d*)[Ee]/,function($$,$1,$2,$3) { return $1 + $2 + $3.substr(0,(period+ee)%period) + "." + $3.substr(ee) + "E"; }); + } else o = val.toExponential(idx); + if(fmt.match(/E\+00$/) && o.match(/e[+-]\d$/)) o = o.substr(0,o.length-1) + "0" + o.charAt(o.length-1); + if(fmt.match(/E\-/) && o.match(/e\+/)) o = o.replace(/e\+/,"e"); + return o.replace("e","E"); +} +var frac1 = /# (\?+)( ?)\/( ?)(\d+)/; +function write_num_f1(r/*:Array*/, aval/*:number*/, sign/*:string*/)/*:string*/ { + var den = parseInt(r[4],10), rr = Math.round(aval * den), base = Math.floor(rr/den); + var myn = (rr - base*den), myd = den; + return sign + (base === 0 ? "" : ""+base) + " " + (myn === 0 ? fill(" ", r[1].length + 1 + r[4].length) : pad_(myn,r[1].length) + r[2] + "/" + r[3] + pad0(myd,r[4].length)); +} +function write_num_f2(r/*:Array*/, aval/*:number*/, sign/*:string*/)/*:string*/ { + return sign + (aval === 0 ? "" : ""+aval) + fill(" ", r[1].length + 2 + r[4].length); +} +var dec1 = /^#*0*\.([0#]+)/; +var closeparen = /\).*[0#]/; +var phone = /\(###\) ###\\?-####/; +function hashq(str/*:string*/)/*:string*/ { + var o = "", cc; + for(var i = 0; i != str.length; ++i) switch((cc=str.charCodeAt(i))) { + case 35: break; + case 63: o+= " "; break; + case 48: o+= "0"; break; + default: o+= String.fromCharCode(cc); + } + return o; +} +function rnd(val/*:number*/, d/*:number*/)/*:string*/ { var dd = Math.pow(10,d); return ""+(Math.round(val * dd)/dd); } +function dec(val/*:number*/, d/*:number*/)/*:number*/ { + var _frac = val - Math.floor(val), dd = Math.pow(10,d); + if (d < ('' + Math.round(_frac * dd)).length) return 0; + return Math.round(_frac * dd); +} +function carry(val/*:number*/, d/*:number*/)/*:number*/ { + if (d < ('' + Math.round((val-Math.floor(val))*Math.pow(10,d))).length) { + return 1; + } + return 0; +} +function flr(val/*:number*/)/*:string*/ { + if(val < 2147483647 && val > -2147483648) return ""+(val >= 0 ? (val|0) : (val-1|0)); + return ""+Math.floor(val); +} +function write_num_flt(type/*:string*/, fmt/*:string*/, val/*:number*/)/*:string*/ { + if(type.charCodeAt(0) === 40 && !fmt.match(closeparen)) { + var ffmt = fmt.replace(/\( */,"").replace(/ \)/,"").replace(/\)/,""); + if(val >= 0) return write_num_flt('n', ffmt, val); + return '(' + write_num_flt('n', ffmt, -val) + ')'; + } + if(fmt.charCodeAt(fmt.length - 1) === 44) return write_num_cm(type, fmt, val); + if(fmt.indexOf('%') !== -1) return write_num_pct(type, fmt, val); + if(fmt.indexOf('E') !== -1) return write_num_exp(fmt, val); + if(fmt.charCodeAt(0) === 36) return "$"+write_num_flt(type,fmt.substr(fmt.charAt(1)==' '?2:1),val); + var o; + var r/*:?Array*/, ri, ff, aval = Math.abs(val), sign = val < 0 ? "-" : ""; + if(fmt.match(/^00+$/)) return sign + pad0r(aval,fmt.length); + if(fmt.match(/^[#?]+$/)) { + o = pad0r(val,0); if(o === "0") o = ""; + return o.length > fmt.length ? o : hashq(fmt.substr(0,fmt.length-o.length)) + o; + } + if((r = fmt.match(frac1))) return write_num_f1(r, aval, sign); + if(fmt.match(/^#+0+$/)) return sign + pad0r(aval,fmt.length - fmt.indexOf("0")); + if((r = fmt.match(dec1))) { + o = rnd(val, r[1].length).replace(/^([^\.]+)$/,"$1."+hashq(r[1])).replace(/\.$/,"."+hashq(r[1])).replace(/\.(\d*)$/,function($$, $1) { return "." + $1 + fill("0", hashq(/*::(*/r/*::||[""])*/[1]).length-$1.length); }); + return fmt.indexOf("0.") !== -1 ? o : o.replace(/^0\./,"."); + } + fmt = fmt.replace(/^#+([0.])/, "$1"); + if((r = fmt.match(/^(0*)\.(#*)$/))) { + return sign + rnd(aval, r[2].length).replace(/\.(\d*[1-9])0*$/,".$1").replace(/^(-?\d*)$/,"$1.").replace(/^0\./,r[1].length?"0.":"."); + } + if((r = fmt.match(/^#{1,3},##0(\.?)$/))) return sign + commaify(pad0r(aval,0)); + if((r = fmt.match(/^#,##0\.([#0]*0)$/))) { + return val < 0 ? "-" + write_num_flt(type, fmt, -val) : commaify(""+(Math.floor(val) + carry(val, r[1].length))) + "." + pad0(dec(val, r[1].length),r[1].length); + } + if((r = fmt.match(/^#,#*,#0/))) return write_num_flt(type,fmt.replace(/^#,#*,/,""),val); + if((r = fmt.match(/^([0#]+)(\\?-([0#]+))+$/))) { + o = _strrev(write_num_flt(type, fmt.replace(/[\\-]/g,""), val)); + ri = 0; + return _strrev(_strrev(fmt.replace(/\\/g,"")).replace(/[0#]/g,function(x){return ri= 0) return write_num_int('n', ffmt, val); + return '(' + write_num_int('n', ffmt, -val) + ')'; + } + if(fmt.charCodeAt(fmt.length - 1) === 44) return write_num_cm2(type, fmt, val); + if(fmt.indexOf('%') !== -1) return write_num_pct2(type, fmt, val); + if(fmt.indexOf('E') !== -1) return write_num_exp2(fmt, val); + if(fmt.charCodeAt(0) === 36) return "$"+write_num_int(type,fmt.substr(fmt.charAt(1)==' '?2:1),val); + var o; + var r/*:?Array*/, ri, ff, aval = Math.abs(val), sign = val < 0 ? "-" : ""; + if(fmt.match(/^00+$/)) return sign + pad0(aval,fmt.length); + if(fmt.match(/^[#?]+$/)) { + o = (""+val); if(val === 0) o = ""; + return o.length > fmt.length ? o : hashq(fmt.substr(0,fmt.length-o.length)) + o; + } + if((r = fmt.match(frac1))) return write_num_f2(r, aval, sign); + if(fmt.match(/^#+0+$/)) return sign + pad0(aval,fmt.length - fmt.indexOf("0")); + if((r = fmt.match(dec1))) { + /*:: if(!Array.isArray(r)) throw new Error("unreachable"); */ + o = (""+val).replace(/^([^\.]+)$/,"$1."+hashq(r[1])).replace(/\.$/,"."+hashq(r[1])); + o = o.replace(/\.(\d*)$/,function($$, $1) { + /*:: if(!Array.isArray(r)) throw new Error("unreachable"); */ + return "." + $1 + fill("0", hashq(r[1]).length-$1.length); }); + return fmt.indexOf("0.") !== -1 ? o : o.replace(/^0\./,"."); + } + fmt = fmt.replace(/^#+([0.])/, "$1"); + if((r = fmt.match(/^(0*)\.(#*)$/))) { + return sign + (""+aval).replace(/\.(\d*[1-9])0*$/,".$1").replace(/^(-?\d*)$/,"$1.").replace(/^0\./,r[1].length?"0.":"."); + } + if((r = fmt.match(/^#{1,3},##0(\.?)$/))) return sign + commaify((""+aval)); + if((r = fmt.match(/^#,##0\.([#0]*0)$/))) { + return val < 0 ? "-" + write_num_int(type, fmt, -val) : commaify((""+val)) + "." + fill('0',r[1].length); + } + if((r = fmt.match(/^#,#*,#0/))) return write_num_int(type,fmt.replace(/^#,#*,/,""),val); + if((r = fmt.match(/^([0#]+)(\\?-([0#]+))+$/))) { + o = _strrev(write_num_int(type, fmt.replace(/[\\-]/g,""), val)); + ri = 0; + return _strrev(_strrev(fmt.replace(/\\/g,"")).replace(/[0#]/g,function(x){return ri*/ { + var out/*:Array*/ = []; + var in_str = false/*, cc*/; + for(var i = 0, j = 0; i < fmt.length; ++i) switch((/*cc=*/fmt.charCodeAt(i))) { + case 34: /* '"' */ + in_str = !in_str; break; + case 95: case 42: case 92: /* '_' '*' '\\' */ + ++i; break; + case 59: /* ';' */ + out[out.length] = fmt.substr(j,i-j); + j = i+1; + } + out[out.length] = fmt.substr(j); + if(in_str === true) throw new Error("Format |" + fmt + "| unterminated string "); + return out; +} +SSF._split = split_fmt; +var abstime = /\[[HhMmSs\u0E0A\u0E19\u0E17]*\]/; +function fmt_is_date(fmt/*:string*/)/*:boolean*/ { + var i = 0, /*cc = 0,*/ c = "", o = ""; + while(i < fmt.length) { + switch((c = fmt.charAt(i))) { + case 'G': if(isgeneral(fmt, i)) i+= 6; i++; break; + case '"': for(;(/*cc=*/fmt.charCodeAt(++i)) !== 34 && i < fmt.length;){/*empty*/} ++i; break; + case '\\': i+=2; break; + case '_': i+=2; break; + case '@': ++i; break; + case 'B': case 'b': + if(fmt.charAt(i+1) === "1" || fmt.charAt(i+1) === "2") return true; + /* falls through */ + case 'M': case 'D': case 'Y': case 'H': case 'S': case 'E': + /* falls through */ + case 'm': case 'd': case 'y': case 'h': case 's': case 'e': case 'g': return true; + case 'A': case 'a': case '上': + if(fmt.substr(i, 3).toUpperCase() === "A/P") return true; + if(fmt.substr(i, 5).toUpperCase() === "AM/PM") return true; + if(fmt.substr(i, 5).toUpperCase() === "上午/下午") return true; + ++i; break; + case '[': + o = c; + while(fmt.charAt(i++) !== ']' && i < fmt.length) o += fmt.charAt(i); + if(o.match(abstime)) return true; + break; + case '.': + /* falls through */ + case '0': case '#': + while(i < fmt.length && ("0#?.,E+-%".indexOf(c=fmt.charAt(++i)) > -1 || (c=='\\' && fmt.charAt(i+1) == "-" && "0#".indexOf(fmt.charAt(i+2))>-1))){/* empty */} + break; + case '?': while(fmt.charAt(++i) === c){/* empty */} break; + case '*': ++i; if(fmt.charAt(i) == ' ' || fmt.charAt(i) == '*') ++i; break; + case '(': case ')': ++i; break; + case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': + while(i < fmt.length && "0123456789".indexOf(fmt.charAt(++i)) > -1){/* empty */} break; + case ' ': ++i; break; + default: ++i; break; + } + } + return false; +} +SSF.is_date = fmt_is_date; +function eval_fmt(fmt/*:string*/, v/*:any*/, opts/*:any*/, flen/*:number*/) { + var out = [], o = "", i = 0, c = "", lst='t', dt, j, cc; + var hr='H'; + /* Tokenize */ + while(i < fmt.length) { + switch((c = fmt.charAt(i))) { + case 'G': /* General */ + if(!isgeneral(fmt, i)) throw new Error('unrecognized character ' + c + ' in ' +fmt); + out[out.length] = {t:'G', v:'General'}; i+=7; break; + case '"': /* Literal text */ + for(o="";(cc=fmt.charCodeAt(++i)) !== 34 && i < fmt.length;) o += String.fromCharCode(cc); + out[out.length] = {t:'t', v:o}; ++i; break; + case '\\': var w = fmt.charAt(++i), t = (w === "(" || w === ")") ? w : 't'; + out[out.length] = {t:t, v:w}; ++i; break; + case '_': out[out.length] = {t:'t', v:" "}; i+=2; break; + case '@': /* Text Placeholder */ + out[out.length] = {t:'T', v:v}; ++i; break; + case 'B': case 'b': + if(fmt.charAt(i+1) === "1" || fmt.charAt(i+1) === "2") { + if(dt==null) { dt=parse_date_code(v, opts, fmt.charAt(i+1) === "2"); if(dt==null) return ""; } + out[out.length] = {t:'X', v:fmt.substr(i,2)}; lst = c; i+=2; break; + } + /* falls through */ + case 'M': case 'D': case 'Y': case 'H': case 'S': case 'E': + c = c.toLowerCase(); + /* falls through */ + case 'm': case 'd': case 'y': case 'h': case 's': case 'e': case 'g': + if(v < 0) return ""; + if(dt==null) { dt=parse_date_code(v, opts); if(dt==null) return ""; } + o = c; while(++i < fmt.length && fmt.charAt(i).toLowerCase() === c) o+=c; + if(c === 'm' && lst.toLowerCase() === 'h') c = 'M'; + if(c === 'h') c = hr; + out[out.length] = {t:c, v:o}; lst = c; break; + case 'A': case 'a': case '上': + var q={t:c, v:c}; + if(dt==null) dt=parse_date_code(v, opts); + if(fmt.substr(i, 3).toUpperCase() === "A/P") { if(dt!=null) q.v = dt.H >= 12 ? "P" : "A"; q.t = 'T'; hr='h';i+=3;} + else if(fmt.substr(i,5).toUpperCase() === "AM/PM") { if(dt!=null) q.v = dt.H >= 12 ? "PM" : "AM"; q.t = 'T'; i+=5; hr='h'; } + else if(fmt.substr(i,5).toUpperCase() === "上午/下午") { if(dt!=null) q.v = dt.H >= 12 ? "下午" : "上午"; q.t = 'T'; i+=5; hr='h'; } + else { q.t = "t"; ++i; } + if(dt==null && q.t === 'T') return ""; + out[out.length] = q; lst = c; break; + case '[': + o = c; + while(fmt.charAt(i++) !== ']' && i < fmt.length) o += fmt.charAt(i); + if(o.slice(-1) !== ']') throw 'unterminated "[" block: |' + o + '|'; + if(o.match(abstime)) { + if(dt==null) { dt=parse_date_code(v, opts); if(dt==null) return ""; } + out[out.length] = {t:'Z', v:o.toLowerCase()}; + lst = o.charAt(1); + } else if(o.indexOf("$") > -1) { + o = (o.match(/\$([^-\[\]]*)/)||[])[1]||"$"; + if(!fmt_is_date(fmt)) out[out.length] = {t:'t',v:o}; + } + break; + /* Numbers */ + case '.': + if(dt != null) { + o = c; while(++i < fmt.length && (c=fmt.charAt(i)) === "0") o += c; + out[out.length] = {t:'s', v:o}; break; + } + /* falls through */ + case '0': case '#': + o = c; while(++i < fmt.length && "0#?.,E+-%".indexOf(c=fmt.charAt(i)) > -1) o += c; + out[out.length] = {t:'n', v:o}; break; + case '?': + o = c; while(fmt.charAt(++i) === c) o+=c; + out[out.length] = {t:c, v:o}; lst = c; break; + case '*': ++i; if(fmt.charAt(i) == ' ' || fmt.charAt(i) == '*') ++i; break; // ** + case '(': case ')': out[out.length] = {t:(flen===1?'t':c), v:c}; ++i; break; + case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': + o = c; while(i < fmt.length && "0123456789".indexOf(fmt.charAt(++i)) > -1) o+=fmt.charAt(i); + out[out.length] = {t:'D', v:o}; break; + case ' ': out[out.length] = {t:c, v:c}; ++i; break; + case '$': out[out.length] = {t:'t', v:'$'}; ++i; break; + default: + if(",$-+/():!^&'~{}<>=€acfijklopqrtuvwxzP".indexOf(c) === -1) throw new Error('unrecognized character ' + c + ' in ' + fmt); + out[out.length] = {t:'t', v:c}; ++i; break; + } + } + + /* Scan for date/time parts */ + var bt = 0, ss0 = 0, ssm; + for(i=out.length-1, lst='t'; i >= 0; --i) { + switch(out[i].t) { + case 'h': case 'H': out[i].t = hr; lst='h'; if(bt < 1) bt = 1; break; + case 's': + if((ssm=out[i].v.match(/\.0+$/))) ss0=Math.max(ss0,ssm[0].length-1); + if(bt < 3) bt = 3; + /* falls through */ + case 'd': case 'y': case 'M': case 'e': lst=out[i].t; break; + case 'm': if(lst === 's') { out[i].t = 'M'; if(bt < 2) bt = 2; } break; + case 'X': /*if(out[i].v === "B2");*/ + break; + case 'Z': + if(bt < 1 && out[i].v.match(/[Hh]/)) bt = 1; + if(bt < 2 && out[i].v.match(/[Mm]/)) bt = 2; + if(bt < 3 && out[i].v.match(/[Ss]/)) bt = 3; + } + } + /* time rounding depends on presence of minute / second / usec fields */ + switch(bt) { + case 0: break; + case 1: + /*::if(!dt) break;*/ + if(dt.u >= 0.5) { dt.u = 0; ++dt.S; } + if(dt.S >= 60) { dt.S = 0; ++dt.M; } + if(dt.M >= 60) { dt.M = 0; ++dt.H; } + break; + case 2: + /*::if(!dt) break;*/ + if(dt.u >= 0.5) { dt.u = 0; ++dt.S; } + if(dt.S >= 60) { dt.S = 0; ++dt.M; } + break; + } + + /* replace fields */ + var nstr = "", jj; + for(i=0; i < out.length; ++i) { + switch(out[i].t) { + case 't': case 'T': case ' ': case 'D': break; + case 'X': out[i].v = ""; out[i].t = ";"; break; + case 'd': case 'm': case 'y': case 'h': case 'H': case 'M': case 's': case 'e': case 'b': case 'Z': + /*::if(!dt) throw "unreachable"; */ + out[i].v = write_date(out[i].t.charCodeAt(0), out[i].v, dt, ss0); + out[i].t = 't'; break; + case 'n': case '?': + jj = i+1; + while(out[jj] != null && ( + (c=out[jj].t) === "?" || c === "D" || + ((c === " " || c === "t") && out[jj+1] != null && (out[jj+1].t === '?' || out[jj+1].t === "t" && out[jj+1].v === '/')) || + (out[i].t === '(' && (c === ' ' || c === 'n' || c === ')')) || + (c === 't' && (out[jj].v === '/' || out[jj].v === ' ' && out[jj+1] != null && out[jj+1].t == '?')) + )) { + out[i].v += out[jj].v; + out[jj] = {v:"", t:";"}; ++jj; + } + nstr += out[i].v; + i = jj-1; break; + case 'G': out[i].t = 't'; out[i].v = general_fmt(v,opts); break; + } + } + var vv = "", myv, ostr; + if(nstr.length > 0) { + if(nstr.charCodeAt(0) == 40) /* '(' */ { + myv = (v<0&&nstr.charCodeAt(0) === 45 ? -v : v); + ostr = write_num('n', nstr, myv); + } else { + myv = (v<0 && flen > 1 ? -v : v); + ostr = write_num('n', nstr, myv); + if(myv < 0 && out[0] && out[0].t == 't') { + ostr = ostr.substr(1); + out[0].v = "-" + out[0].v; + } + } + jj=ostr.length-1; + var decpt = out.length; + for(i=0; i < out.length; ++i) if(out[i] != null && out[i].t != 't' && out[i].v.indexOf(".") > -1) { decpt = i; break; } + var lasti=out.length; + if(decpt === out.length && ostr.indexOf("E") === -1) { + for(i=out.length-1; i>= 0;--i) { + if(out[i] == null || 'n?'.indexOf(out[i].t) === -1) continue; + if(jj>=out[i].v.length-1) { jj -= out[i].v.length; out[i].v = ostr.substr(jj+1, out[i].v.length); } + else if(jj < 0) out[i].v = ""; + else { out[i].v = ostr.substr(0, jj+1); jj = -1; } + out[i].t = 't'; + lasti = i; + } + if(jj>=0 && lasti= 0; --i) { + if(out[i] == null || 'n?'.indexOf(out[i].t) === -1) continue; + j=out[i].v.indexOf(".")>-1&&i===decpt?out[i].v.indexOf(".")-1:out[i].v.length-1; + vv = out[i].v.substr(j+1); + for(; j>=0; --j) { + if(jj>=0 && (out[i].v.charAt(j) === "0" || out[i].v.charAt(j) === "#")) vv = ostr.charAt(jj--) + vv; + } + out[i].v = vv; + out[i].t = 't'; + lasti = i; + } + if(jj>=0 && lasti-1&&i===decpt?out[i].v.indexOf(".")+1:0; + vv = out[i].v.substr(0,j); + for(; j-1) { + myv = (flen >1 && v < 0 && i>0 && out[i-1].v === "-" ? -v:v); + out[i].v = write_num(out[i].t, out[i].v, myv); + out[i].t = 't'; + } + var retval = ""; + for(i=0; i !== out.length; ++i) if(out[i] != null) retval += out[i].v; + return retval; +} +SSF._eval = eval_fmt; +var cfregex = /\[[=<>]/; +var cfregex2 = /\[(=|>[=]?|<[>=]?)(-?\d+(?:\.\d*)?)\]/; +function chkcond(v, rr) { + if(rr == null) return false; + var thresh = parseFloat(rr[2]); + switch(rr[1]) { + case "=": if(v == thresh) return true; break; + case ">": if(v > thresh) return true; break; + case "<": if(v < thresh) return true; break; + case "<>": if(v != thresh) return true; break; + case ">=": if(v >= thresh) return true; break; + case "<=": if(v <= thresh) return true; break; + } + return false; +} +function choose_fmt(f/*:string*/, v/*:any*/) { + var fmt = split_fmt(f); + var l = fmt.length, lat = fmt[l-1].indexOf("@"); + if(l<4 && lat>-1) --l; + if(fmt.length > 4) throw new Error("cannot find right format for |" + fmt.join("|") + "|"); + if(typeof v !== "number") return [4, fmt.length === 4 || lat>-1?fmt[fmt.length-1]:"@"]; + switch(fmt.length) { + case 1: fmt = lat>-1 ? ["General", "General", "General", fmt[0]] : [fmt[0], fmt[0], fmt[0], "@"]; break; + case 2: fmt = lat>-1 ? [fmt[0], fmt[0], fmt[0], fmt[1]] : [fmt[0], fmt[1], fmt[0], "@"]; break; + case 3: fmt = lat>-1 ? [fmt[0], fmt[1], fmt[0], fmt[2]] : [fmt[0], fmt[1], fmt[2], "@"]; break; + case 4: break; + } + var ff = v > 0 ? fmt[0] : v < 0 ? fmt[1] : fmt[2]; + if(fmt[0].indexOf("[") === -1 && fmt[1].indexOf("[") === -1) return [l, ff]; + if(fmt[0].match(cfregex) != null || fmt[1].match(cfregex) != null) { + var m1 = fmt[0].match(cfregex2); + var m2 = fmt[1].match(cfregex2); + return chkcond(v, m1) ? [l, fmt[0]] : chkcond(v, m2) ? [l, fmt[1]] : [l, fmt[m1 != null && m2 != null ? 2 : 1]]; + } + return [l, ff]; +} +function format(fmt/*:string|number*/,v/*:any*/,o/*:?any*/) { + if(o == null) o = {}; + var sfmt = ""; + switch(typeof fmt) { + case "string": + if(fmt == "m/d/yy" && o.dateNF) sfmt = o.dateNF; + else sfmt = fmt; + break; + case "number": + if(fmt == 14 && o.dateNF) sfmt = o.dateNF; + else sfmt = (o.table != null ? (o.table/*:any*/) : table_fmt)[fmt]; + if(sfmt == null) sfmt = (o.table && o.table[default_map[fmt]]) || table_fmt[default_map[fmt]]; + if(sfmt == null) sfmt = default_str[fmt] || "General"; + break; + } + if(isgeneral(sfmt,0)) return general_fmt(v, o); + if(v instanceof Date) v = datenum_local(v, o.date1904); + var f = choose_fmt(sfmt, v); + if(isgeneral(f[1])) return general_fmt(v, o); + if(v === true) v = "TRUE"; else if(v === false) v = "FALSE"; + else if(v === "" || v == null) return ""; + return eval_fmt(f[1], v, o, f[0]); +} +function load_entry(fmt/*:string*/, idx/*:?number*/)/*:number*/ { + if(typeof idx != 'number') { + idx = +idx || -1; +/*::if(typeof idx != 'number') return 0x188; */ + for(var i = 0; i < 0x0188; ++i) { +/*::if(typeof idx != 'number') return 0x188; */ + if(table_fmt[i] == undefined) { if(idx < 0) idx = i; continue; } + if(table_fmt[i] == fmt) { idx = i; break; } + } +/*::if(typeof idx != 'number') return 0x188; */ + if(idx < 0) idx = 0x187; + } +/*::if(typeof idx != 'number') return 0x188; */ + table_fmt[idx] = fmt; + return idx; +} +SSF.load = load_entry; +SSF._table = table_fmt; +SSF.get_table = function get_table()/*:SSFTable*/ { return table_fmt; }; +SSF.load_table = function load_table(tbl/*:SSFTable*/)/*:void*/ { + for(var i=0; i!=0x0188; ++i) + if(tbl[i] !== undefined) load_entry(tbl[i], i); +}; +SSF.init_table = init_table; +SSF.format = format; +}; +make_ssf(SSF); +/*global module */ +if(typeof module !== 'undefined' && typeof DO_NOT_EXPORT_SSF === 'undefined') module.exports = SSF; diff --git a/node_modules/ssf/ssf.js b/node_modules/ssf/ssf.js new file mode 100644 index 000000000..37eba7a0c --- /dev/null +++ b/node_modules/ssf/ssf.js @@ -0,0 +1,966 @@ +/* ssf.js (C) 2013-present SheetJS -- http://sheetjs.com */ +/* vim: set ts=2: */ +/*jshint -W041 */ +var SSF = ({}); +var make_ssf = function make_ssf(SSF){ +SSF.version = '0.11.2'; +function _strrev(x) { var o = "", i = x.length-1; while(i>=0) o += x.charAt(i--); return o; } +function fill(c,l) { var o = ""; while(o.length < l) o+=c; return o; } +function pad0(v,d){var t=""+v; return t.length>=d?t:fill('0',d-t.length)+t;} +function pad_(v,d){var t=""+v;return t.length>=d?t:fill(' ',d-t.length)+t;} +function rpad_(v,d){var t=""+v; return t.length>=d?t:t+fill(' ',d-t.length);} +function pad0r1(v,d){var t=""+Math.round(v); return t.length>=d?t:fill('0',d-t.length)+t;} +function pad0r2(v,d){var t=""+v; return t.length>=d?t:fill('0',d-t.length)+t;} +var p2_32 = Math.pow(2,32); +function pad0r(v,d){if(v>p2_32||v<-p2_32) return pad0r1(v,d); var i = Math.round(v); return pad0r2(i,d); } +function isgeneral(s, i) { i = i || 0; return s.length >= 7 + i && (s.charCodeAt(i)|32) === 103 && (s.charCodeAt(i+1)|32) === 101 && (s.charCodeAt(i+2)|32) === 110 && (s.charCodeAt(i+3)|32) === 101 && (s.charCodeAt(i+4)|32) === 114 && (s.charCodeAt(i+5)|32) === 97 && (s.charCodeAt(i+6)|32) === 108; } +var days = [ + ['Sun', 'Sunday'], + ['Mon', 'Monday'], + ['Tue', 'Tuesday'], + ['Wed', 'Wednesday'], + ['Thu', 'Thursday'], + ['Fri', 'Friday'], + ['Sat', 'Saturday'] +]; +var months = [ + ['J', 'Jan', 'January'], + ['F', 'Feb', 'February'], + ['M', 'Mar', 'March'], + ['A', 'Apr', 'April'], + ['M', 'May', 'May'], + ['J', 'Jun', 'June'], + ['J', 'Jul', 'July'], + ['A', 'Aug', 'August'], + ['S', 'Sep', 'September'], + ['O', 'Oct', 'October'], + ['N', 'Nov', 'November'], + ['D', 'Dec', 'December'] +]; +function init_table(t) { + t[0]= 'General'; + t[1]= '0'; + t[2]= '0.00'; + t[3]= '#,##0'; + t[4]= '#,##0.00'; + t[9]= '0%'; + t[10]= '0.00%'; + t[11]= '0.00E+00'; + t[12]= '# ?/?'; + t[13]= '# ??/??'; + t[14]= 'm/d/yy'; + t[15]= 'd-mmm-yy'; + t[16]= 'd-mmm'; + t[17]= 'mmm-yy'; + t[18]= 'h:mm AM/PM'; + t[19]= 'h:mm:ss AM/PM'; + t[20]= 'h:mm'; + t[21]= 'h:mm:ss'; + t[22]= 'm/d/yy h:mm'; + t[37]= '#,##0 ;(#,##0)'; + t[38]= '#,##0 ;[Red](#,##0)'; + t[39]= '#,##0.00;(#,##0.00)'; + t[40]= '#,##0.00;[Red](#,##0.00)'; + t[45]= 'mm:ss'; + t[46]= '[h]:mm:ss'; + t[47]= 'mmss.0'; + t[48]= '##0.0E+0'; + t[49]= '@'; + t[56]= '"上午/下午 "hh"時"mm"分"ss"秒 "'; +} + +var table_fmt = {}; +init_table(table_fmt); +/* Defaults determined by systematically testing in Excel 2019 */ + +/* These formats appear to default to other formats in the table */ +var default_map = []; +var defi = 0; + +// 5 -> 37 ... 8 -> 40 +for(defi = 5; defi <= 8; ++defi) default_map[defi] = 32 + defi; + +// 23 -> 0 ... 26 -> 0 +for(defi = 23; defi <= 26; ++defi) default_map[defi] = 0; + +// 27 -> 14 ... 31 -> 14 +for(defi = 27; defi <= 31; ++defi) default_map[defi] = 14; +// 50 -> 14 ... 58 -> 14 +for(defi = 50; defi <= 58; ++defi) default_map[defi] = 14; + +// 59 -> 1 ... 62 -> 4 +for(defi = 59; defi <= 62; ++defi) default_map[defi] = defi - 58; +// 67 -> 9 ... 68 -> 10 +for(defi = 67; defi <= 68; ++defi) default_map[defi] = defi - 58; +// 72 -> 14 ... 75 -> 17 +for(defi = 72; defi <= 75; ++defi) default_map[defi] = defi - 58; + +// 69 -> 12 ... 71 -> 14 +for(defi = 67; defi <= 68; ++defi) default_map[defi] = defi - 57; + +// 76 -> 20 ... 78 -> 22 +for(defi = 76; defi <= 78; ++defi) default_map[defi] = defi - 56; + +// 79 -> 45 ... 81 -> 47 +for(defi = 79; defi <= 81; ++defi) default_map[defi] = defi - 34; + +// 82 -> 0 ... 65536 -> 0 (omitted) + +/* These formats technically refer to Accounting formats with no equivalent */ +var default_str = []; + +// 5 -- Currency, 0 decimal, black negative +default_str[5] = default_str[63] = '"$"#,##0_);\\("$"#,##0\\)'; +// 6 -- Currency, 0 decimal, red negative +default_str[6] = default_str[64] = '"$"#,##0_);[Red]\\("$"#,##0\\)'; +// 7 -- Currency, 2 decimal, black negative +default_str[7] = default_str[65] = '"$"#,##0.00_);\\("$"#,##0.00\\)'; +// 8 -- Currency, 2 decimal, red negative +default_str[8] = default_str[66] = '"$"#,##0.00_);[Red]\\("$"#,##0.00\\)'; + +// 41 -- Accounting, 0 decimal, No Symbol +default_str[41] = '_(* #,##0_);_(* \\(#,##0\\);_(* "-"_);_(@_)'; +// 42 -- Accounting, 0 decimal, $ Symbol +default_str[42] = '_("$"* #,##0_);_("$"* \\(#,##0\\);_("$"* "-"_);_(@_)'; +// 43 -- Accounting, 2 decimal, No Symbol +default_str[43] = '_(* #,##0.00_);_(* \\(#,##0.00\\);_(* "-"??_);_(@_)'; +// 44 -- Accounting, 2 decimal, $ Symbol +default_str[44] = '_("$"* #,##0.00_);_("$"* \\(#,##0.00\\);_("$"* "-"??_);_(@_)'; +function frac(x, D, mixed) { + var sgn = x < 0 ? -1 : 1; + var B = x * sgn; + var P_2 = 0, P_1 = 1, P = 0; + var Q_2 = 1, Q_1 = 0, Q = 0; + var A = Math.floor(B); + while(Q_1 < D) { + A = Math.floor(B); + P = A * P_1 + P_2; + Q = A * Q_1 + Q_2; + if((B - A) < 0.00000005) break; + B = 1 / (B - A); + P_2 = P_1; P_1 = P; + Q_2 = Q_1; Q_1 = Q; + } + if(Q > D) { if(Q_1 > D) { Q = Q_2; P = P_2; } else { Q = Q_1; P = P_1; } } + if(!mixed) return [0, sgn * P, Q]; + var q = Math.floor(sgn * P/Q); + return [q, sgn*P - q*Q, Q]; +} +function parse_date_code(v,opts,b2) { + if(v > 2958465 || v < 0) return null; + var date = (v|0), time = Math.floor(86400 * (v - date)), dow=0; + var dout=[]; + var out={D:date, T:time, u:86400*(v-date)-time,y:0,m:0,d:0,H:0,M:0,S:0,q:0}; + if(Math.abs(out.u) < 1e-6) out.u = 0; + if(opts && opts.date1904) date += 1462; + if(out.u > 0.9999) { + out.u = 0; + if(++time == 86400) { out.T = time = 0; ++date; ++out.D; } + } + if(date === 60) {dout = b2 ? [1317,10,29] : [1900,2,29]; dow=3;} + else if(date === 0) {dout = b2 ? [1317,8,29] : [1900,1,0]; dow=6;} + else { + if(date > 60) --date; + /* 1 = Jan 1 1900 in Gregorian */ + var d = new Date(1900, 0, 1); + d.setDate(d.getDate() + date - 1); + dout = [d.getFullYear(), d.getMonth()+1,d.getDate()]; + dow = d.getDay(); + if(date < 60) dow = (dow + 6) % 7; + if(b2) dow = fix_hijri(d, dout); + } + out.y = dout[0]; out.m = dout[1]; out.d = dout[2]; + out.S = time % 60; time = Math.floor(time / 60); + out.M = time % 60; time = Math.floor(time / 60); + out.H = time; + out.q = dow; + return out; +} +SSF.parse_date_code = parse_date_code; +var basedate = new Date(1899, 11, 31, 0, 0, 0); +var dnthresh = basedate.getTime(); +var base1904 = new Date(1900, 2, 1, 0, 0, 0); +function datenum_local(v, date1904) { + var epoch = v.getTime(); + if(date1904) epoch -= 1461*24*60*60*1000; + else if(v >= base1904) epoch += 24*60*60*1000; + return (epoch - (dnthresh + (v.getTimezoneOffset() - basedate.getTimezoneOffset()) * 60000)) / (24 * 60 * 60 * 1000); +} +/* The longest 32-bit integer text is "-4294967296", exactly 11 chars */ +function general_fmt_int(v) { return v.toString(10); } +SSF._general_int = general_fmt_int; + +/* ECMA-376 18.8.30 numFmt*/ +/* Note: `toPrecision` uses standard form when prec > E and E >= -6 */ +var general_fmt_num = (function make_general_fmt_num() { + var trailing_zeroes_and_decimal = /(?:\.0*|(\.\d*[1-9])0+)$/; + function strip_decimal(o) { + return (o.indexOf(".") == -1) ? o : o.replace(trailing_zeroes_and_decimal, "$1"); + } + + /* General Exponential always shows 2 digits exp and trims the mantissa */ + var mantissa_zeroes_and_decimal = /(?:\.0*|(\.\d*[1-9])0+)[Ee]/; + var exp_with_single_digit = /(E[+-])(\d)$/; + function normalize_exp(o) { + if(o.indexOf("E") == -1) return o; + return o.replace(mantissa_zeroes_and_decimal,"$1E").replace(exp_with_single_digit,"$10$2"); + } + + /* exponent >= -9 and <= 9 */ + function small_exp(v) { + var w = (v<0?12:11); + var o = strip_decimal(v.toFixed(12)); if(o.length <= w) return o; + o = v.toPrecision(10); if(o.length <= w) return o; + return v.toExponential(5); + } + + /* exponent >= 11 or <= -10 likely exponential */ + function large_exp(v) { + var o = strip_decimal(v.toFixed(11)); + return (o.length > (v<0?12:11) || o === "0" || o === "-0") ? v.toPrecision(6) : o; + } + + function general_fmt_num_base(v) { + var V = Math.floor(Math.log(Math.abs(v))*Math.LOG10E), o; + + if(V >= -4 && V <= -1) o = v.toPrecision(10+V); + else if(Math.abs(V) <= 9) o = small_exp(v); + else if(V === 10) o = v.toFixed(10).substr(0,12); + else o = large_exp(v); + + return strip_decimal(normalize_exp(o.toUpperCase())); + } + + return general_fmt_num_base; +})(); +SSF._general_num = general_fmt_num; + +/* + "General" rules: + - text is passed through ("@") + - booleans are rendered as TRUE/FALSE + - "up to 11 characters" displayed for numbers + - Default date format (code 14) used for Dates + + TODO: technically the display depends on the width of the cell +*/ +function general_fmt(v, opts) { + switch(typeof v) { + case 'string': return v; + case 'boolean': return v ? "TRUE" : "FALSE"; + case 'number': return (v|0) === v ? v.toString(10) : general_fmt_num(v); + case 'undefined': return ""; + case 'object': + if(v == null) return ""; + if(v instanceof Date) return format(14, datenum_local(v, opts && opts.date1904), opts); + } + throw new Error("unsupported value in General format: " + v); +} +SSF._general = general_fmt; +function fix_hijri(date, o) { + /* TODO: properly adjust y/m/d and */ + o[0] -= 581; + var dow = date.getDay(); + if(date < 60) dow = (dow + 6) % 7; + return dow; +} +var THAI_DIGITS = "\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59".split(""); +/*jshint -W086 */ +function write_date(type, fmt, val, ss0) { + var o="", ss=0, tt=0, y = val.y, out, outl = 0; + switch(type) { + case 98: /* 'b' buddhist year */ + y = val.y + 543; + /* falls through */ + case 121: /* 'y' year */ + switch(fmt.length) { + case 1: case 2: out = y % 100; outl = 2; break; + default: out = y % 10000; outl = 4; break; + } break; + case 109: /* 'm' month */ + switch(fmt.length) { + case 1: case 2: out = val.m; outl = fmt.length; break; + case 3: return months[val.m-1][1]; + case 5: return months[val.m-1][0]; + default: return months[val.m-1][2]; + } break; + case 100: /* 'd' day */ + switch(fmt.length) { + case 1: case 2: out = val.d; outl = fmt.length; break; + case 3: return days[val.q][0]; + default: return days[val.q][1]; + } break; + case 104: /* 'h' 12-hour */ + switch(fmt.length) { + case 1: case 2: out = 1+(val.H+11)%12; outl = fmt.length; break; + default: throw 'bad hour format: ' + fmt; + } break; + case 72: /* 'H' 24-hour */ + switch(fmt.length) { + case 1: case 2: out = val.H; outl = fmt.length; break; + default: throw 'bad hour format: ' + fmt; + } break; + case 77: /* 'M' minutes */ + switch(fmt.length) { + case 1: case 2: out = val.M; outl = fmt.length; break; + default: throw 'bad minute format: ' + fmt; + } break; + case 115: /* 's' seconds */ + if(fmt != 's' && fmt != 'ss' && fmt != '.0' && fmt != '.00' && fmt != '.000') throw 'bad second format: ' + fmt; + if(val.u === 0 && (fmt == "s" || fmt == "ss")) return pad0(val.S, fmt.length); +if(ss0 >= 2) tt = ss0 === 3 ? 1000 : 100; + else tt = ss0 === 1 ? 10 : 1; + ss = Math.round((tt)*(val.S + val.u)); + if(ss >= 60*tt) ss = 0; + if(fmt === 's') return ss === 0 ? "0" : ""+ss/tt; + o = pad0(ss,2 + ss0); + if(fmt === 'ss') return o.substr(0,2); + return "." + o.substr(2,fmt.length-1); + case 90: /* 'Z' absolute time */ + switch(fmt) { + case '[h]': case '[hh]': out = val.D*24+val.H; break; + case '[m]': case '[mm]': out = (val.D*24+val.H)*60+val.M; break; + case '[s]': case '[ss]': out = ((val.D*24+val.H)*60+val.M)*60+Math.round(val.S+val.u); break; + default: throw 'bad abstime format: ' + fmt; + } outl = fmt.length === 3 ? 1 : 2; break; + case 101: /* 'e' era */ + out = y; outl = 1; break; + } + var outstr = outl > 0 ? pad0(out, outl) : ""; + return outstr; +} +/*jshint +W086 */ +function commaify(s) { + var w = 3; + if(s.length <= w) return s; + var j = (s.length % w), o = s.substr(0,j); + for(; j!=s.length; j+=w) o+=(o.length > 0 ? "," : "") + s.substr(j,w); + return o; +} +var write_num = (function make_write_num(){ +var pct1 = /%/g; +function write_num_pct(type, fmt, val){ + var sfmt = fmt.replace(pct1,""), mul = fmt.length - sfmt.length; + return write_num(type, sfmt, val * Math.pow(10,2*mul)) + fill("%",mul); +} +function write_num_cm(type, fmt, val){ + var idx = fmt.length - 1; + while(fmt.charCodeAt(idx-1) === 44) --idx; + return write_num(type, fmt.substr(0,idx), val / Math.pow(10,3*(fmt.length-idx))); +} +function write_num_exp(fmt, val){ + var o; + var idx = fmt.indexOf("E") - fmt.indexOf(".") - 1; + if(fmt.match(/^#+0.0E\+0$/)) { + if(val == 0) return "0.0E+0"; + else if(val < 0) return "-" + write_num_exp(fmt, -val); + var period = fmt.indexOf("."); if(period === -1) period=fmt.indexOf('E'); + var ee = Math.floor(Math.log(val)*Math.LOG10E)%period; + if(ee < 0) ee += period; + o = (val/Math.pow(10,ee)).toPrecision(idx+1+(period+ee)%period); + if(o.indexOf("e") === -1) { + var fakee = Math.floor(Math.log(val)*Math.LOG10E); + if(o.indexOf(".") === -1) o = o.charAt(0) + "." + o.substr(1) + "E+" + (fakee - o.length+ee); + else o += "E+" + (fakee - ee); + while(o.substr(0,2) === "0.") { + o = o.charAt(0) + o.substr(2,period) + "." + o.substr(2+period); + o = o.replace(/^0+([1-9])/,"$1").replace(/^0+\./,"0."); + } + o = o.replace(/\+-/,"-"); + } + o = o.replace(/^([+-]?)(\d*)\.(\d*)[Ee]/,function($$,$1,$2,$3) { return $1 + $2 + $3.substr(0,(period+ee)%period) + "." + $3.substr(ee) + "E"; }); + } else o = val.toExponential(idx); + if(fmt.match(/E\+00$/) && o.match(/e[+-]\d$/)) o = o.substr(0,o.length-1) + "0" + o.charAt(o.length-1); + if(fmt.match(/E\-/) && o.match(/e\+/)) o = o.replace(/e\+/,"e"); + return o.replace("e","E"); +} +var frac1 = /# (\?+)( ?)\/( ?)(\d+)/; +function write_num_f1(r, aval, sign) { + var den = parseInt(r[4],10), rr = Math.round(aval * den), base = Math.floor(rr/den); + var myn = (rr - base*den), myd = den; + return sign + (base === 0 ? "" : ""+base) + " " + (myn === 0 ? fill(" ", r[1].length + 1 + r[4].length) : pad_(myn,r[1].length) + r[2] + "/" + r[3] + pad0(myd,r[4].length)); +} +function write_num_f2(r, aval, sign) { + return sign + (aval === 0 ? "" : ""+aval) + fill(" ", r[1].length + 2 + r[4].length); +} +var dec1 = /^#*0*\.([0#]+)/; +var closeparen = /\).*[0#]/; +var phone = /\(###\) ###\\?-####/; +function hashq(str) { + var o = "", cc; + for(var i = 0; i != str.length; ++i) switch((cc=str.charCodeAt(i))) { + case 35: break; + case 63: o+= " "; break; + case 48: o+= "0"; break; + default: o+= String.fromCharCode(cc); + } + return o; +} +function rnd(val, d) { var dd = Math.pow(10,d); return ""+(Math.round(val * dd)/dd); } +function dec(val, d) { + var _frac = val - Math.floor(val), dd = Math.pow(10,d); + if (d < ('' + Math.round(_frac * dd)).length) return 0; + return Math.round(_frac * dd); +} +function carry(val, d) { + if (d < ('' + Math.round((val-Math.floor(val))*Math.pow(10,d))).length) { + return 1; + } + return 0; +} +function flr(val) { + if(val < 2147483647 && val > -2147483648) return ""+(val >= 0 ? (val|0) : (val-1|0)); + return ""+Math.floor(val); +} +function write_num_flt(type, fmt, val) { + if(type.charCodeAt(0) === 40 && !fmt.match(closeparen)) { + var ffmt = fmt.replace(/\( */,"").replace(/ \)/,"").replace(/\)/,""); + if(val >= 0) return write_num_flt('n', ffmt, val); + return '(' + write_num_flt('n', ffmt, -val) + ')'; + } + if(fmt.charCodeAt(fmt.length - 1) === 44) return write_num_cm(type, fmt, val); + if(fmt.indexOf('%') !== -1) return write_num_pct(type, fmt, val); + if(fmt.indexOf('E') !== -1) return write_num_exp(fmt, val); + if(fmt.charCodeAt(0) === 36) return "$"+write_num_flt(type,fmt.substr(fmt.charAt(1)==' '?2:1),val); + var o; + var r, ri, ff, aval = Math.abs(val), sign = val < 0 ? "-" : ""; + if(fmt.match(/^00+$/)) return sign + pad0r(aval,fmt.length); + if(fmt.match(/^[#?]+$/)) { + o = pad0r(val,0); if(o === "0") o = ""; + return o.length > fmt.length ? o : hashq(fmt.substr(0,fmt.length-o.length)) + o; + } + if((r = fmt.match(frac1))) return write_num_f1(r, aval, sign); + if(fmt.match(/^#+0+$/)) return sign + pad0r(aval,fmt.length - fmt.indexOf("0")); + if((r = fmt.match(dec1))) { + o = rnd(val, r[1].length).replace(/^([^\.]+)$/,"$1."+hashq(r[1])).replace(/\.$/,"."+hashq(r[1])).replace(/\.(\d*)$/,function($$, $1) { return "." + $1 + fill("0", hashq(r[1]).length-$1.length); }); + return fmt.indexOf("0.") !== -1 ? o : o.replace(/^0\./,"."); + } + fmt = fmt.replace(/^#+([0.])/, "$1"); + if((r = fmt.match(/^(0*)\.(#*)$/))) { + return sign + rnd(aval, r[2].length).replace(/\.(\d*[1-9])0*$/,".$1").replace(/^(-?\d*)$/,"$1.").replace(/^0\./,r[1].length?"0.":"."); + } + if((r = fmt.match(/^#{1,3},##0(\.?)$/))) return sign + commaify(pad0r(aval,0)); + if((r = fmt.match(/^#,##0\.([#0]*0)$/))) { + return val < 0 ? "-" + write_num_flt(type, fmt, -val) : commaify(""+(Math.floor(val) + carry(val, r[1].length))) + "." + pad0(dec(val, r[1].length),r[1].length); + } + if((r = fmt.match(/^#,#*,#0/))) return write_num_flt(type,fmt.replace(/^#,#*,/,""),val); + if((r = fmt.match(/^([0#]+)(\\?-([0#]+))+$/))) { + o = _strrev(write_num_flt(type, fmt.replace(/[\\-]/g,""), val)); + ri = 0; + return _strrev(_strrev(fmt.replace(/\\/g,"")).replace(/[0#]/g,function(x){return ri= 0) return write_num_int('n', ffmt, val); + return '(' + write_num_int('n', ffmt, -val) + ')'; + } + if(fmt.charCodeAt(fmt.length - 1) === 44) return write_num_cm2(type, fmt, val); + if(fmt.indexOf('%') !== -1) return write_num_pct2(type, fmt, val); + if(fmt.indexOf('E') !== -1) return write_num_exp2(fmt, val); + if(fmt.charCodeAt(0) === 36) return "$"+write_num_int(type,fmt.substr(fmt.charAt(1)==' '?2:1),val); + var o; + var r, ri, ff, aval = Math.abs(val), sign = val < 0 ? "-" : ""; + if(fmt.match(/^00+$/)) return sign + pad0(aval,fmt.length); + if(fmt.match(/^[#?]+$/)) { + o = (""+val); if(val === 0) o = ""; + return o.length > fmt.length ? o : hashq(fmt.substr(0,fmt.length-o.length)) + o; + } + if((r = fmt.match(frac1))) return write_num_f2(r, aval, sign); + if(fmt.match(/^#+0+$/)) return sign + pad0(aval,fmt.length - fmt.indexOf("0")); + if((r = fmt.match(dec1))) { +o = (""+val).replace(/^([^\.]+)$/,"$1."+hashq(r[1])).replace(/\.$/,"."+hashq(r[1])); + o = o.replace(/\.(\d*)$/,function($$, $1) { +return "." + $1 + fill("0", hashq(r[1]).length-$1.length); }); + return fmt.indexOf("0.") !== -1 ? o : o.replace(/^0\./,"."); + } + fmt = fmt.replace(/^#+([0.])/, "$1"); + if((r = fmt.match(/^(0*)\.(#*)$/))) { + return sign + (""+aval).replace(/\.(\d*[1-9])0*$/,".$1").replace(/^(-?\d*)$/,"$1.").replace(/^0\./,r[1].length?"0.":"."); + } + if((r = fmt.match(/^#{1,3},##0(\.?)$/))) return sign + commaify((""+aval)); + if((r = fmt.match(/^#,##0\.([#0]*0)$/))) { + return val < 0 ? "-" + write_num_int(type, fmt, -val) : commaify((""+val)) + "." + fill('0',r[1].length); + } + if((r = fmt.match(/^#,#*,#0/))) return write_num_int(type,fmt.replace(/^#,#*,/,""),val); + if((r = fmt.match(/^([0#]+)(\\?-([0#]+))+$/))) { + o = _strrev(write_num_int(type, fmt.replace(/[\\-]/g,""), val)); + ri = 0; + return _strrev(_strrev(fmt.replace(/\\/g,"")).replace(/[0#]/g,function(x){return ri -1 || (c=='\\' && fmt.charAt(i+1) == "-" && "0#".indexOf(fmt.charAt(i+2))>-1))){/* empty */} + break; + case '?': while(fmt.charAt(++i) === c){/* empty */} break; + case '*': ++i; if(fmt.charAt(i) == ' ' || fmt.charAt(i) == '*') ++i; break; + case '(': case ')': ++i; break; + case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': + while(i < fmt.length && "0123456789".indexOf(fmt.charAt(++i)) > -1){/* empty */} break; + case ' ': ++i; break; + default: ++i; break; + } + } + return false; +} +SSF.is_date = fmt_is_date; +function eval_fmt(fmt, v, opts, flen) { + var out = [], o = "", i = 0, c = "", lst='t', dt, j, cc; + var hr='H'; + /* Tokenize */ + while(i < fmt.length) { + switch((c = fmt.charAt(i))) { + case 'G': /* General */ + if(!isgeneral(fmt, i)) throw new Error('unrecognized character ' + c + ' in ' +fmt); + out[out.length] = {t:'G', v:'General'}; i+=7; break; + case '"': /* Literal text */ + for(o="";(cc=fmt.charCodeAt(++i)) !== 34 && i < fmt.length;) o += String.fromCharCode(cc); + out[out.length] = {t:'t', v:o}; ++i; break; + case '\\': var w = fmt.charAt(++i), t = (w === "(" || w === ")") ? w : 't'; + out[out.length] = {t:t, v:w}; ++i; break; + case '_': out[out.length] = {t:'t', v:" "}; i+=2; break; + case '@': /* Text Placeholder */ + out[out.length] = {t:'T', v:v}; ++i; break; + case 'B': case 'b': + if(fmt.charAt(i+1) === "1" || fmt.charAt(i+1) === "2") { + if(dt==null) { dt=parse_date_code(v, opts, fmt.charAt(i+1) === "2"); if(dt==null) return ""; } + out[out.length] = {t:'X', v:fmt.substr(i,2)}; lst = c; i+=2; break; + } + /* falls through */ + case 'M': case 'D': case 'Y': case 'H': case 'S': case 'E': + c = c.toLowerCase(); + /* falls through */ + case 'm': case 'd': case 'y': case 'h': case 's': case 'e': case 'g': + if(v < 0) return ""; + if(dt==null) { dt=parse_date_code(v, opts); if(dt==null) return ""; } + o = c; while(++i < fmt.length && fmt.charAt(i).toLowerCase() === c) o+=c; + if(c === 'm' && lst.toLowerCase() === 'h') c = 'M'; + if(c === 'h') c = hr; + out[out.length] = {t:c, v:o}; lst = c; break; + case 'A': case 'a': case '上': + var q={t:c, v:c}; + if(dt==null) dt=parse_date_code(v, opts); + if(fmt.substr(i, 3).toUpperCase() === "A/P") { if(dt!=null) q.v = dt.H >= 12 ? "P" : "A"; q.t = 'T'; hr='h';i+=3;} + else if(fmt.substr(i,5).toUpperCase() === "AM/PM") { if(dt!=null) q.v = dt.H >= 12 ? "PM" : "AM"; q.t = 'T'; i+=5; hr='h'; } + else if(fmt.substr(i,5).toUpperCase() === "上午/下午") { if(dt!=null) q.v = dt.H >= 12 ? "下午" : "上午"; q.t = 'T'; i+=5; hr='h'; } + else { q.t = "t"; ++i; } + if(dt==null && q.t === 'T') return ""; + out[out.length] = q; lst = c; break; + case '[': + o = c; + while(fmt.charAt(i++) !== ']' && i < fmt.length) o += fmt.charAt(i); + if(o.slice(-1) !== ']') throw 'unterminated "[" block: |' + o + '|'; + if(o.match(abstime)) { + if(dt==null) { dt=parse_date_code(v, opts); if(dt==null) return ""; } + out[out.length] = {t:'Z', v:o.toLowerCase()}; + lst = o.charAt(1); + } else if(o.indexOf("$") > -1) { + o = (o.match(/\$([^-\[\]]*)/)||[])[1]||"$"; + if(!fmt_is_date(fmt)) out[out.length] = {t:'t',v:o}; + } + break; + /* Numbers */ + case '.': + if(dt != null) { + o = c; while(++i < fmt.length && (c=fmt.charAt(i)) === "0") o += c; + out[out.length] = {t:'s', v:o}; break; + } + /* falls through */ + case '0': case '#': + o = c; while(++i < fmt.length && "0#?.,E+-%".indexOf(c=fmt.charAt(i)) > -1) o += c; + out[out.length] = {t:'n', v:o}; break; + case '?': + o = c; while(fmt.charAt(++i) === c) o+=c; + out[out.length] = {t:c, v:o}; lst = c; break; + case '*': ++i; if(fmt.charAt(i) == ' ' || fmt.charAt(i) == '*') ++i; break; // ** + case '(': case ')': out[out.length] = {t:(flen===1?'t':c), v:c}; ++i; break; + case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': + o = c; while(i < fmt.length && "0123456789".indexOf(fmt.charAt(++i)) > -1) o+=fmt.charAt(i); + out[out.length] = {t:'D', v:o}; break; + case ' ': out[out.length] = {t:c, v:c}; ++i; break; + case '$': out[out.length] = {t:'t', v:'$'}; ++i; break; + default: + if(",$-+/():!^&'~{}<>=€acfijklopqrtuvwxzP".indexOf(c) === -1) throw new Error('unrecognized character ' + c + ' in ' + fmt); + out[out.length] = {t:'t', v:c}; ++i; break; + } + } + + /* Scan for date/time parts */ + var bt = 0, ss0 = 0, ssm; + for(i=out.length-1, lst='t'; i >= 0; --i) { + switch(out[i].t) { + case 'h': case 'H': out[i].t = hr; lst='h'; if(bt < 1) bt = 1; break; + case 's': + if((ssm=out[i].v.match(/\.0+$/))) ss0=Math.max(ss0,ssm[0].length-1); + if(bt < 3) bt = 3; + /* falls through */ + case 'd': case 'y': case 'M': case 'e': lst=out[i].t; break; + case 'm': if(lst === 's') { out[i].t = 'M'; if(bt < 2) bt = 2; } break; + case 'X': /*if(out[i].v === "B2");*/ + break; + case 'Z': + if(bt < 1 && out[i].v.match(/[Hh]/)) bt = 1; + if(bt < 2 && out[i].v.match(/[Mm]/)) bt = 2; + if(bt < 3 && out[i].v.match(/[Ss]/)) bt = 3; + } + } + /* time rounding depends on presence of minute / second / usec fields */ + switch(bt) { + case 0: break; + case 1: +if(dt.u >= 0.5) { dt.u = 0; ++dt.S; } + if(dt.S >= 60) { dt.S = 0; ++dt.M; } + if(dt.M >= 60) { dt.M = 0; ++dt.H; } + break; + case 2: +if(dt.u >= 0.5) { dt.u = 0; ++dt.S; } + if(dt.S >= 60) { dt.S = 0; ++dt.M; } + break; + } + + /* replace fields */ + var nstr = "", jj; + for(i=0; i < out.length; ++i) { + switch(out[i].t) { + case 't': case 'T': case ' ': case 'D': break; + case 'X': out[i].v = ""; out[i].t = ";"; break; + case 'd': case 'm': case 'y': case 'h': case 'H': case 'M': case 's': case 'e': case 'b': case 'Z': +out[i].v = write_date(out[i].t.charCodeAt(0), out[i].v, dt, ss0); + out[i].t = 't'; break; + case 'n': case '?': + jj = i+1; + while(out[jj] != null && ( + (c=out[jj].t) === "?" || c === "D" || + ((c === " " || c === "t") && out[jj+1] != null && (out[jj+1].t === '?' || out[jj+1].t === "t" && out[jj+1].v === '/')) || + (out[i].t === '(' && (c === ' ' || c === 'n' || c === ')')) || + (c === 't' && (out[jj].v === '/' || out[jj].v === ' ' && out[jj+1] != null && out[jj+1].t == '?')) + )) { + out[i].v += out[jj].v; + out[jj] = {v:"", t:";"}; ++jj; + } + nstr += out[i].v; + i = jj-1; break; + case 'G': out[i].t = 't'; out[i].v = general_fmt(v,opts); break; + } + } + var vv = "", myv, ostr; + if(nstr.length > 0) { + if(nstr.charCodeAt(0) == 40) /* '(' */ { + myv = (v<0&&nstr.charCodeAt(0) === 45 ? -v : v); + ostr = write_num('n', nstr, myv); + } else { + myv = (v<0 && flen > 1 ? -v : v); + ostr = write_num('n', nstr, myv); + if(myv < 0 && out[0] && out[0].t == 't') { + ostr = ostr.substr(1); + out[0].v = "-" + out[0].v; + } + } + jj=ostr.length-1; + var decpt = out.length; + for(i=0; i < out.length; ++i) if(out[i] != null && out[i].t != 't' && out[i].v.indexOf(".") > -1) { decpt = i; break; } + var lasti=out.length; + if(decpt === out.length && ostr.indexOf("E") === -1) { + for(i=out.length-1; i>= 0;--i) { + if(out[i] == null || 'n?'.indexOf(out[i].t) === -1) continue; + if(jj>=out[i].v.length-1) { jj -= out[i].v.length; out[i].v = ostr.substr(jj+1, out[i].v.length); } + else if(jj < 0) out[i].v = ""; + else { out[i].v = ostr.substr(0, jj+1); jj = -1; } + out[i].t = 't'; + lasti = i; + } + if(jj>=0 && lasti= 0; --i) { + if(out[i] == null || 'n?'.indexOf(out[i].t) === -1) continue; + j=out[i].v.indexOf(".")>-1&&i===decpt?out[i].v.indexOf(".")-1:out[i].v.length-1; + vv = out[i].v.substr(j+1); + for(; j>=0; --j) { + if(jj>=0 && (out[i].v.charAt(j) === "0" || out[i].v.charAt(j) === "#")) vv = ostr.charAt(jj--) + vv; + } + out[i].v = vv; + out[i].t = 't'; + lasti = i; + } + if(jj>=0 && lasti-1&&i===decpt?out[i].v.indexOf(".")+1:0; + vv = out[i].v.substr(0,j); + for(; j-1) { + myv = (flen >1 && v < 0 && i>0 && out[i-1].v === "-" ? -v:v); + out[i].v = write_num(out[i].t, out[i].v, myv); + out[i].t = 't'; + } + var retval = ""; + for(i=0; i !== out.length; ++i) if(out[i] != null) retval += out[i].v; + return retval; +} +SSF._eval = eval_fmt; +var cfregex = /\[[=<>]/; +var cfregex2 = /\[(=|>[=]?|<[>=]?)(-?\d+(?:\.\d*)?)\]/; +function chkcond(v, rr) { + if(rr == null) return false; + var thresh = parseFloat(rr[2]); + switch(rr[1]) { + case "=": if(v == thresh) return true; break; + case ">": if(v > thresh) return true; break; + case "<": if(v < thresh) return true; break; + case "<>": if(v != thresh) return true; break; + case ">=": if(v >= thresh) return true; break; + case "<=": if(v <= thresh) return true; break; + } + return false; +} +function choose_fmt(f, v) { + var fmt = split_fmt(f); + var l = fmt.length, lat = fmt[l-1].indexOf("@"); + if(l<4 && lat>-1) --l; + if(fmt.length > 4) throw new Error("cannot find right format for |" + fmt.join("|") + "|"); + if(typeof v !== "number") return [4, fmt.length === 4 || lat>-1?fmt[fmt.length-1]:"@"]; + switch(fmt.length) { + case 1: fmt = lat>-1 ? ["General", "General", "General", fmt[0]] : [fmt[0], fmt[0], fmt[0], "@"]; break; + case 2: fmt = lat>-1 ? [fmt[0], fmt[0], fmt[0], fmt[1]] : [fmt[0], fmt[1], fmt[0], "@"]; break; + case 3: fmt = lat>-1 ? [fmt[0], fmt[1], fmt[0], fmt[2]] : [fmt[0], fmt[1], fmt[2], "@"]; break; + case 4: break; + } + var ff = v > 0 ? fmt[0] : v < 0 ? fmt[1] : fmt[2]; + if(fmt[0].indexOf("[") === -1 && fmt[1].indexOf("[") === -1) return [l, ff]; + if(fmt[0].match(cfregex) != null || fmt[1].match(cfregex) != null) { + var m1 = fmt[0].match(cfregex2); + var m2 = fmt[1].match(cfregex2); + return chkcond(v, m1) ? [l, fmt[0]] : chkcond(v, m2) ? [l, fmt[1]] : [l, fmt[m1 != null && m2 != null ? 2 : 1]]; + } + return [l, ff]; +} +function format(fmt,v,o) { + if(o == null) o = {}; + var sfmt = ""; + switch(typeof fmt) { + case "string": + if(fmt == "m/d/yy" && o.dateNF) sfmt = o.dateNF; + else sfmt = fmt; + break; + case "number": + if(fmt == 14 && o.dateNF) sfmt = o.dateNF; + else sfmt = (o.table != null ? (o.table) : table_fmt)[fmt]; + if(sfmt == null) sfmt = (o.table && o.table[default_map[fmt]]) || table_fmt[default_map[fmt]]; + if(sfmt == null) sfmt = default_str[fmt] || "General"; + break; + } + if(isgeneral(sfmt,0)) return general_fmt(v, o); + if(v instanceof Date) v = datenum_local(v, o.date1904); + var f = choose_fmt(sfmt, v); + if(isgeneral(f[1])) return general_fmt(v, o); + if(v === true) v = "TRUE"; else if(v === false) v = "FALSE"; + else if(v === "" || v == null) return ""; + return eval_fmt(f[1], v, o, f[0]); +} +function load_entry(fmt, idx) { + if(typeof idx != 'number') { + idx = +idx || -1; +for(var i = 0; i < 0x0188; ++i) { +if(table_fmt[i] == undefined) { if(idx < 0) idx = i; continue; } + if(table_fmt[i] == fmt) { idx = i; break; } + } +if(idx < 0) idx = 0x187; + } +table_fmt[idx] = fmt; + return idx; +} +SSF.load = load_entry; +SSF._table = table_fmt; +SSF.get_table = function get_table() { return table_fmt; }; +SSF.load_table = function load_table(tbl) { + for(var i=0; i!=0x0188; ++i) + if(tbl[i] !== undefined) load_entry(tbl[i], i); +}; +SSF.init_table = init_table; +SSF.format = format; +}; +make_ssf(SSF); +/*global module */ +if(typeof module !== 'undefined' && typeof DO_NOT_EXPORT_SSF === 'undefined') module.exports = SSF; diff --git a/node_modules/ssf/types/index.d.ts b/node_modules/ssf/types/index.d.ts new file mode 100644 index 000000000..f788a3dcd --- /dev/null +++ b/node_modules/ssf/types/index.d.ts @@ -0,0 +1,56 @@ +/* ssf.js (C) 2013-present SheetJS -- http://sheetjs.com */ +// TypeScript Version: 2.2 + +/** Version string */ +export const version: string; + +/** Render value using format string or code */ +export function format(fmt: string|number, val: any, opts?: any): string; + +/** Load format string */ +export function load(fmt: string, idx?: number): number; + +/** Test if the format is a Date format */ +export function is_date(fmt: string): boolean; + + +/** Format Table */ +export interface SSF$Table { + [key: number]: string; + [key: string]: string; +} + +/** Get format table */ +export function get_table(): SSF$Table; + +/** Set format table */ +export function load_table(tbl: SSF$Table): void; + + +/** Parsed date */ +export interface SSF$Date { + /** number of whole days since relevant epoch, 0 <= D */ + D: number; + /** integral year portion, epoch_year <= y */ + y: number; + /** integral month portion, 1 <= m <= 12 */ + m: number; + /** integral day portion, subject to gregorian YMD constraints */ + d: number; + /** integral day of week (0=Sunday .. 6=Saturday) 0 <= q <= 6 */ + q: number; + + /** number of seconds since midnight, 0 <= T < 86400 */ + T: number; + /** integral number of hours since midnight, 0 <= H < 24 */ + H: number; + /** integral number of minutes since the last hour, 0 <= M < 60 */ + M: number; + /** integral number of seconds since the last minute, 0 <= S < 60 */ + S: number; + /** sub-second part of time, 0 <= u < 1 */ + u: number; +} + +/** Parse numeric date code */ +export function parse_date_code(v: number, opts?: any): SSF$Date; diff --git a/node_modules/ssf/types/tsconfig.json b/node_modules/ssf/types/tsconfig.json new file mode 100644 index 000000000..fe5b50ce5 --- /dev/null +++ b/node_modules/ssf/types/tsconfig.json @@ -0,0 +1,15 @@ +{ + "compilerOptions": { + "module": "commonjs", + "lib": [ "es5" ], + "noImplicitAny": true, + "noImplicitThis": true, + "strictNullChecks": false, + "baseUrl": ".", + "paths": { "ssf": ["."] }, + "types": [], + "noEmit": true, + "strictFunctionTypes": true, + "forceConsistentCasingInFileNames": true + } +} diff --git a/node_modules/wmf/LICENSE b/node_modules/wmf/LICENSE new file mode 100644 index 000000000..39cf48216 --- /dev/null +++ b/node_modules/wmf/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright (C) 2020-present SheetJS LLC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/node_modules/wmf/README.md b/node_modules/wmf/README.md new file mode 100644 index 000000000..2d8dc7afa --- /dev/null +++ b/node_modules/wmf/README.md @@ -0,0 +1,92 @@ +# js-wmf + +Processor for Windows MetaFile (WMF) files in JS (for the browser and nodejs). + + +## Installation + +With [npm](https://www.npmjs.org/package/wmf): + +```bash +$ npm install wmf +``` + +In the browser: + +```html + +``` + +The browser exposes a variable `WMF`. + + +## Usage + +The `data` argument is expected to be an `ArrayBuffer`, `Uint8Array` or `Buffer` + +- `WMF.image_size(data)` extracts the image offset and extents, returns an Array + `[width, height]` where both metrics are measured in pixels. + +- `WMF.draw_canvas(data, canvas)` parses the WMF and draws to a `Canvas`. + +### Notes + +- The library assumes the global `ImageData` is available. For nodejs-powered + canvas implementations, a shim must be exposed as a global. Using the `canvas` + npm package: + +```js +const { createImageData } = require("canvas"); +global.ImageData = createImageData; +``` + +- `OffscreenCanvas` in Chrome and some other Canvas implementations require + the dimensions in the constructor: + +```js +const size = WMF.image_size(data); +const canvas = new OffscreenCanvas(size[0], size[1]); +``` + + +## Examples + +
+ Browser Fetch into canvas (click to show) + +```js +// assume `canvas` is a DOM element +(async() => { + const res = await fetch("url/for/image.wmf"); + const ab = await res.arrayBuffer(); + WMF.draw_canvas(ab, document.getElementById("canvas")); +})(); +``` + +
+ +
+ NodeJS (using `canvas` npm module) (click to show) + +```js +const { createCanvas, createImageData } = require("canvas"); +global.ImageData = createImageData; + +const size = WMF.image_size(data); +const canvas = createCanvas(size[0], size[1]); +WMF.draw_canvas(data, canvas); +``` + +
+ + +## License + +Please consult the attached LICENSE file for details. All rights not explicitly +granted by the Apache 2.0 License are reserved by the Original Author. + + +## References + + - `MS-WMF`: Windows Metafile Format + diff --git a/node_modules/wmf/package.json b/node_modules/wmf/package.json new file mode 100644 index 000000000..86ea031b1 --- /dev/null +++ b/node_modules/wmf/package.json @@ -0,0 +1,68 @@ +{ + "name": "wmf", + "version": "1.0.2", + "author": "sheetjs", + "description": "Windows MetaFile (WMF) parser", + "keywords": [ + "wmf", + "image", + "office", + "word" + ], + "bin": { + }, + "main": "./dist/wmf.node.js", + "unpkg": "./dist/wmf.js", + "jsdelivr": "./dist/wmf.js", + "types": "types", + "browser": { + "buffer": false, + "crypto": false, + "stream": false, + "process": false, + "fs": false + }, + "dependencies": { + }, + "devDependencies": { + "source-map-loader": "^0.2.4", + "uglifyjs-webpack-plugin": "^2.2.0" + }, + "repository": { + "type": "git", + "url": "git://github.com/SheetJS/js-wmf.git" + }, + "scripts": { + }, + "config": { + "blanket": { + "pattern": "wmf.js" + } + }, + "alex": { + "allow": [ + "special", + "simple", + "just", + "crash", + "wtf", + "holes" + ] + }, + "homepage": "https://sheetjs.com/", + "files": [ + "LICENSE", + "README.md", + "dist/wmf.js", + "dist/wmf.node.js", + "dist/wmf.js.map", + "dist/wmf.node.js.map" + ], + "bugs": { + "url": "https://github.com/SheetJS/js-wmf/issues" + }, + "license": "Apache-2.0", + "engines": { + "node": ">=0.8" + } +} diff --git a/node_modules/word/CONTRIBUTING.md b/node_modules/word/CONTRIBUTING.md new file mode 100644 index 000000000..07147d0d9 --- /dev/null +++ b/node_modules/word/CONTRIBUTING.md @@ -0,0 +1,61 @@ +# Contributing + +The WordJS Libraries should be free and clear to use in your projects. In +order to maintain that, every contributor must be vigilant. + +There have been many projects in the past that have been very lax regarding +licensing, and we are of the opinion that those are ticking timebombs and that +no corporate product should depend on them. + + +# Required Reading + +These are pretty short reads and emphasize the importance of proper licensing: + +- https://github.com/kennethreitz/tablib/issues/114 (discussion of other tools) + +- http://www.codinghorror.com/blog/2007/04/pick-a-license-any-license.html + + +# Raising Issues + +Issues should generally be accompanied by test files. Since github does not +support attachments, the best method is to send files to +(subject line should contain issue number or message) or to share using some +storage service. Unless expressly permitted, any attachments will not be +shared or included in a test suite (although I will ask :) + +# Pre-Contribution Checklist + +Before thinking about contributing, make sure that: + +- You are not, nor have ever been, an employee of Microsoft Corporation. + +- You have not signed any NDAs or Shared Source Agreements with Microsoft + Corporation or a subsidiary + +- You have not consulted any existing relevant codebase (if you have, please +take note of which codebases were consulted). + +If you cannot attest to each of these items, the best approach is to raise an +issue. If it is a particularly high-priority issue, please drop an email to + and it will be prioritized. + + +# Intra-Contribution + +Keep these in mind as you work: + +- Your contributions are your original work. Take note of any resources you + consult in the process (and be extra careful not to use unlicensed code on + the internet. + +- You are working on your own time. Unless they explicitly grant permission, + your employer may be the ultimate owner of your IP + + +# Post-Contribution + +Before contributions are merged, you will receive an email (at the address +associated with the git commit) and will be asked to confirm the aforementioned +items. diff --git a/node_modules/word/LICENSE b/node_modules/word/LICENSE new file mode 100644 index 000000000..39cf48216 --- /dev/null +++ b/node_modules/word/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright (C) 2020-present SheetJS LLC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/node_modules/word/README.md b/node_modules/word/README.md new file mode 100644 index 000000000..a653813cf --- /dev/null +++ b/node_modules/word/README.md @@ -0,0 +1,2 @@ +# [SheetJS js-word](http://wordjs.com) + diff --git a/node_modules/word/package.json b/node_modules/word/package.json new file mode 100644 index 000000000..1bb5df66a --- /dev/null +++ b/node_modules/word/package.json @@ -0,0 +1,29 @@ +{ + "name": "word", + "version": "0.3.0", + "author": "sheetjs", + "description": "Word Processing Document library", + "keywords": [ + "word" + ], + "main": "./word", + "dependencies": { + }, + "devDependencies": { + }, + "repository": { + "type": "git", + "url": "git://github.com/SheetJS/js-word.git" + }, + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "homepage": "https://wordjs.com/", + "bugs": { + "url": "https://github.com/SheetJS/js-word/issues" + }, + "license": "Apache-2.0", + "engines": { + "node": ">=0.8" + } +} diff --git a/node_modules/word/word.js b/node_modules/word/word.js new file mode 100644 index 000000000..f053ebf79 --- /dev/null +++ b/node_modules/word/word.js @@ -0,0 +1 @@ +module.exports = {}; diff --git a/node_modules/xlsx/CHANGELOG.md b/node_modules/xlsx/CHANGELOG.md new file mode 100644 index 000000000..b339e1e47 --- /dev/null +++ b/node_modules/xlsx/CHANGELOG.md @@ -0,0 +1,264 @@ +# CHANGELOG + +This log is intended to keep track of backwards-incompatible changes, including +but not limited to API changes and file location changes. Minor behavioral +changes may not be included if they are not expected to break existing code. + +## v0.18.5 + +* Enabled `sideEffects: false` in package.json +* Basic NUMBERS write support + +## v0.18.4 + +* CSV output omits trailing record separator +* Properly terminate NodeJS Streams +* DBF preserve column types on import and use when applicable on export + +## v0.18.3 + +* Removed references to `require` and `process` in browser builds + +## v0.18.2 + +* Hotfix for unicode processing of XLSX exports + +## v0.18.1 + +* Removed Node ESM build script and folded into standard ESM build +* Removed undocumented aliases including `make_formulae` and `get_formulae` + +## v0.18.0 + +* Browser scripts only expose `XLSX` variable +* Module no longer ships with `dist/jszip.js` browser script + +## v0.17.4 + +* CLI script moved to `xlsx-cli` package + +## v0.17.3 + +* `window.XLSX` explicit assignment to satiate LWC +* CSV Proper formatting of errors +* HTML emit data-\* attributes + +## v0.17.2 + +* Browser and Node optional ESM support +* DSV correct handling of bare quotes (h/t @bgamrat) + +## v0.17.1 + +* `XLSB` writer uses short cell form when viable + +## 0.17.0: + +* mini build includes ODS parse/write support +* DBF explicitly cap worksheet to 1<<20 rows +* XLS throw errors on truncated records + +## v0.16.2 + +* Disabled `PRN` parsing by default (better support for CSV without delimeters) + +## v0.16.1 + +* skip empty custom property tags if data is absent (fixes DocSecurity issue) +* HTML output add raw value, type, number format +* DOM parse look for `v` / `t` / `z` attributes when determining value +* double quotes in properties escaped using `_x0022_` +* changed AMD structure for NetSuite and other RequireJS implementations +- `encode_cell` and `decode_cell` do not rely on `encode_col` / `decode_col` + +## v0.16.0 + +* Date handling changed +* XLML certain tag tests are now case insensitive +* Fixed potentially vulnerable regular expressions + +## v0.15.6 + +* CFB prevent infinite loop +* ODS empty cells marked as stub (type "z") +* `cellStyles` option implies `sheetStubs` + +## v0.15.5 + +* `sheets` parse option to specify which sheets to parse + +## v0.15.4 + +* AOA utilities properly preserve number formats +* Number formats captured in stub cells + +## v0.15.3 + +* Properties and Custom Properties properly XML-encoded + +## v0.15.2 + +- `sheet_get_cell` utility function +- `sheet_to_json` explicitly support `null` as alias for default behavior +- `encode_col` throw on negative column index +- HTML properly handle whitespace around tags in a run +- HTML use `id` option on write +- Files starting with `0x09` followed by a display character are now TSV files +- XLS parse references col/row indices mod by the correct number for BIFF ver +- XLSX comments moved to avoid overlapping cell +- XLSB outline level +- AutoFilter update `_FilterDatabase` defined name on write +- XLML skip CDATA blocks + +## v0.15.1 (2019-08-14) + +* XLSX ignore XML artifacts +* HTML capture and persist merges + +## v0.15.0 + +* `dist/xlsx.mini.min.js` mini build with XLSX read/write and some utilities +* Removed legacy conversion utility functions + +## v0.14.5 + +* XLS PtgNameX lookup +* XLS always create stub cells for blank cells with comments + + +## v0.14.4 + +* Better treatment of `skipHidden` in CSV output +* Ignore CLSID in XLS +* SYLK 7-bit character encoding +* SYLK and DBF codepage support + +## v0.14.3 + +* Proper shifting of addresses in Shared Formulae + +## v0.14.2 + +* Proper XML encoding of comments + +## v0.14.1 + +* raw cell objects can be passed to `sheet_add_aoa` +* `_FilterDatabase` fix for AutoFilter-related crashes +* `stream.to_json` doesn't end up accidentally scanning to max row + +## 0.14.0 (2018-09-06) + +* `sheet_to_json` default flipped to `raw: true` + +## 0.13.5 (2018-08-25) + +* HTML output generates `
` instead of encoded newline character + +## 0.13.2 (2018-07-08) + +* Buffer.from shim replaced, will not be defined in node `<=0.12` + +## 0.13.0 (2018-06-01) + +* Library reshaped to support AMD out of the box + +## 0.12.11 (2018-04-27) + +* XLS/XLSX/XLSB range truncation (errors in `WTF` mode) + +## 0.12.4 (2018-03-04) + +* `JSZip` renamed to `JSZipSync` + +## 0.12.0 (2018-02-08) + +* Extendscript target script in NPM package + +## 0.11.19 (2018-02-03) + +* Error on empty workbook + +## 0.11.16 (2017-12-30) + +* XLS ANSI/CP separation +* 'array' write type and ArrayBuffer processing + +## 0.11.6 (2017-10-16) + +* Semicolon-delimited files are detected + +## 0.11.5 (2017-09-30) + +* Bower main script shifted to full version +* 'binary' / 'string' encoding + +## 0.11.3 (2017-08-19) + +* XLS cell ixfe/XF removed + +## 0.11.0 (2017-07-31) + +* Strip `require` statements from minified version +* minifier mangler enabled + +## 0.10.9 (2017-07-28) + +* XLML/HTML resolution logic looks further into the data stream to decide type +* Errors thrown on suspected RTF files + +## 0.10.5 (2017-06-09) + +* HTML Table output header/footer should not include `
` tag + +## 0.10.2 (2017-05-16) + +* Dates are converted to numbers by default (set `cellDates:true` to emit Dates) +* Module does not export CFB + +## 0.9.10 (2017-04-08) + +* `--perf` renamed to `--read-only` + +## 0.9.9 (2017-04-03) + +* default output format changed to XLSB +* comment text line endings are now normalized +* errors thrown on write when worksheets have invalid names + +## 0.9.7 (2017-03-28) + +* XLS legacy `!range` field removed +* Hyperlink tooltip is stored in the `Tooltip` field + +## 0.9.6 (2017-03-25) + +* `sheet_to_json` now passes `null` values when `raw` is set to `true` +* `sheet_to_json` treats `null` stub cells as values in conjunction with `raw` + +## 0.9.5 (2017-03-22) + +* `cellDates` affects parsing in non-XLSX formats + +## 0.9.3 (2017-03-15) + +* XLML property names are more closely mapped to the XLSX equivalent +* Stub cells are now cell type `z` + +## 0.9.2 (2017-03-13) + +* Removed stale TypeScript definition files. Flowtype comments are used in the + `xlsx.flow.js` source and stripped to produce `xlsx.js`. +* sed usage reworked to support GNU sed in-place form. BSD sed seems to work, + but the build script has not been tested on other sed variants: + +```bash +$ sed -i.ext [...] # GNU +$ sed -i .ext [...] # bsd +``` + +## 0.9.0 (2017-03-09) + +* Removed ods.js source. The xlsx.js source absorbed the ODS logic and exposes + the ODS variable, so projects should remove references to ods.js + diff --git a/node_modules/xlsx/LICENSE b/node_modules/xlsx/LICENSE new file mode 100644 index 000000000..4bdda8038 --- /dev/null +++ b/node_modules/xlsx/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "{}" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright (C) 2012-present SheetJS LLC + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/node_modules/xlsx/README.md b/node_modules/xlsx/README.md new file mode 100644 index 000000000..7714ade60 --- /dev/null +++ b/node_modules/xlsx/README.md @@ -0,0 +1,4504 @@ +# [SheetJS](https://sheetjs.com) + +The SheetJS Community Edition offers battle-tested open-source solutions for +extracting useful data from almost any complex spreadsheet and generating new +spreadsheets that will work with legacy and modern software alike. + +[SheetJS Pro](https://sheetjs.com/pro) offers solutions beyond data processing: +Edit complex templates with ease; let out your inner Picasso with styling; make +custom sheets with images/graphs/PivotTables; evaluate formula expressions and +port calculations to web apps; automate common spreadsheet tasks, and much more! + +![License](https://img.shields.io/github/license/SheetJS/sheetjs) +[![Build Status](https://img.shields.io/github/workflow/status/sheetjs/sheetjs/Tests:%20node.js)](https://github.com/SheetJS/sheetjs/actions) +[![Snyk Vulnerabilities](https://img.shields.io/snyk/vulnerabilities/github/SheetJS/sheetjs)](https://snyk.io/test/github/SheetJS/sheetjs) +[![npm Downloads](https://img.shields.io/npm/dm/xlsx.svg)](https://npmjs.org/package/xlsx) +[![Analytics](https://ga-beacon.appspot.com/UA-36810333-1/SheetJS/sheetjs?pixel)](https://github.com/SheetJS/sheetjs) + +[**Browser Test and Support Matrix**](https://oss.sheetjs.com/sheetjs/tests/) + +[![Build Status](https://saucelabs.com/browser-matrix/sheetjs.svg)](https://saucelabs.com/u/sheetjs) + +**Supported File Formats** + +![circo graph of format support](formats.png) + +![graph legend](legend.png) + +## Table of Contents + +
+ Expand to show Table of Contents + + + +- [Getting Started](#getting-started) + * [Installation](#installation) + * [Usage](#usage) + * [The Zen of SheetJS](#the-zen-of-sheetjs) + * [JS Ecosystem Demos](#js-ecosystem-demos) +- [Acquiring and Extracting Data](#acquiring-and-extracting-data) + * [Parsing Workbooks](#parsing-workbooks) + * [Processing JSON and JS Data](#processing-json-and-js-data) + * [Processing HTML Tables](#processing-html-tables) +- [Processing Data](#processing-data) + * [Modifying Workbook Structure](#modifying-workbook-structure) + * [Modifying Cell Values](#modifying-cell-values) + * [Modifying Other Worksheet / Workbook / Cell Properties](#modifying-other-worksheet--workbook--cell-properties) +- [Packaging and Releasing Data](#packaging-and-releasing-data) + * [Writing Workbooks](#writing-workbooks) + * [Writing Examples](#writing-examples) + * [Streaming Write](#streaming-write) + * [Generating JSON and JS Data](#generating-json-and-js-data) + * [Generating HTML Tables](#generating-html-tables) + * [Generating Single-Worksheet Snapshots](#generating-single-worksheet-snapshots) +- [Interface](#interface) + * [Parsing functions](#parsing-functions) + * [Writing functions](#writing-functions) + * [Utilities](#utilities) +- [Common Spreadsheet Format](#common-spreadsheet-format) + * [General Structures](#general-structures) + * [Cell Object](#cell-object) + + [Data Types](#data-types) + + [Dates](#dates) + * [Sheet Objects](#sheet-objects) + + [Worksheet Object](#worksheet-object) + + [Chartsheet Object](#chartsheet-object) + + [Macrosheet Object](#macrosheet-object) + + [Dialogsheet Object](#dialogsheet-object) + * [Workbook Object](#workbook-object) + + [Workbook File Properties](#workbook-file-properties) + * [Workbook-Level Attributes](#workbook-level-attributes) + + [Defined Names](#defined-names) + + [Workbook Views](#workbook-views) + + [Miscellaneous Workbook Properties](#miscellaneous-workbook-properties) + * [Document Features](#document-features) + + [Formulae](#formulae) + + [Row and Column Properties](#row-and-column-properties) + + [Number Formats](#number-formats) + + [Hyperlinks](#hyperlinks) + + [Cell Comments](#cell-comments) + + [Sheet Visibility](#sheet-visibility) + + [VBA and Macros](#vba-and-macros) +- [Parsing Options](#parsing-options) + * [Input Type](#input-type) + * [Guessing File Type](#guessing-file-type) +- [Writing Options](#writing-options) + * [Supported Output Formats](#supported-output-formats) + * [Output Type](#output-type) +- [Utility Functions](#utility-functions) + * [Array of Arrays Input](#array-of-arrays-input) + * [Array of Objects Input](#array-of-objects-input) + * [HTML Table Input](#html-table-input) + * [Formulae Output](#formulae-output) + * [Delimiter-Separated Output](#delimiter-separated-output) + + [UTF-16 Unicode Text](#utf-16-unicode-text) + * [HTML Output](#html-output) + * [JSON](#json) +- [File Formats](#file-formats) +- [Testing](#testing) + * [Node](#node) + * [Browser](#browser) + * [Tested Environments](#tested-environments) + * [Test Files](#test-files) +- [Contributing](#contributing) + * [OSX/Linux](#osxlinux) + * [Windows](#windows) + * [Tests](#tests) +- [License](#license) +- [References](#references) + + + +
+ +## Getting Started + +### Installation + +**Standalone Browser Scripts** + +The complete browser standalone build is saved to `dist/xlsx.full.min.js` and +can be directly added to a page with a `script` tag: + +```html + +``` + +
+ CDN Availability (click to show) + +| CDN | URL | +|-----------:|:-------------------------------------------| +| `unpkg` | | +| `jsDelivr` | | +| `CDNjs` | | + +For example, `unpkg` makes the latest version available at: + +```html + +``` + +
+ +
+ Browser builds (click to show) + +The complete single-file version is generated at `dist/xlsx.full.min.js` + +`dist/xlsx.core.min.js` omits codepage library (no support for XLS encodings) + +A slimmer build is generated at `dist/xlsx.mini.min.js`. Compared to full build: +- codepage library skipped (no support for XLS encodings) +- no support for XLSB / XLS / Lotus 1-2-3 / SpreadsheetML 2003 / Numbers +- node stream utils removed + +
+ + +With [bower](https://bower.io/search/?q=js-xlsx): + +```bash +$ bower install js-xlsx +``` + +**ECMAScript Modules** + +The ECMAScript Module build is saved to `xlsx.mjs` and can be directly added to +a page with a `script` tag using `type=module`: + +```html + +``` + +The [npm package](https://www.npmjs.org/package/xlsx) also exposes the module +with the `module` parameter, supported in Angular and other projects: + +```ts +import { read, writeFileXLSX } from "xlsx"; + +/* load the codepage support library for extended support with older formats */ +import { set_cptable } from "xlsx"; +import * as cptable from 'xlsx/dist/cpexcel.full.mjs'; +set_cptable(cptable); +``` + +**Deno** + +`xlsx.mjs` can be imported in Deno. It is available from `unpkg`: + +```ts +// @deno-types="https://unpkg.com/xlsx/types/index.d.ts" +import * as XLSX from 'https://unpkg.com/xlsx/xlsx.mjs'; + +/* load the codepage support library for extended support with older formats */ +import * as cptable from 'https://unpkg.com/xlsx/dist/cpexcel.full.mjs'; +XLSX.set_cptable(cptable); +``` + +**NodeJS** + +With [npm](https://www.npmjs.org/package/xlsx): + +```bash +$ npm install xlsx +``` + +By default, the module supports `require`: + +```js +var XLSX = require("xlsx"); +``` + +The module also ships with `xlsx.mjs` for use with `import`: + +```js +import * as XLSX from 'xlsx/xlsx.mjs'; + +/* load 'fs' for readFile and writeFile support */ +import * as fs from 'fs'; +XLSX.set_fs(fs); + +/* load 'stream' for stream support */ +import { Readable } from 'stream'; +XLSX.stream.set_readable(Readable); + +/* load the codepage support library for extended support with older formats */ +import * as cpexcel from 'xlsx/dist/cpexcel.full.mjs'; +XLSX.set_cptable(cpexcel); +``` + +**Photoshop and InDesign** + +`dist/xlsx.extendscript.js` is an ExtendScript build for Photoshop and InDesign +that is included in the `npm` package. It can be directly referenced with a +`#include` directive: + +```extendscript +#include "xlsx.extendscript.js" +``` + + +
+ Internet Explorer and ECMAScript 3 Compatibility (click to show) + +For broad compatibility with JavaScript engines, the library is written using +ECMAScript 3 language dialect as well as some ES5 features like `Array#forEach`. +Older browsers require shims to provide missing functions. + +To use the shim, add the shim before the script tag that loads `xlsx.js`: + +```html + + + + +``` + +The script also includes `IE_LoadFile` and `IE_SaveFile` for loading and saving +files in Internet Explorer versions 6-9. The `xlsx.extendscript.js` script +bundles the shim in a format suitable for Photoshop and other Adobe products. + +
+ +### Usage + +Most scenarios involving spreadsheets and data can be broken into 5 parts: + +1) **Acquire Data**: Data may be stored anywhere: local or remote files, + databases, HTML TABLE, or even generated programmatically in the web browser. + +2) **Extract Data**: For spreadsheet files, this involves parsing raw bytes to + read the cell data. For general JS data, this involves reshaping the data. + +3) **Process Data**: From generating summary statistics to cleaning data + records, this step is the heart of the problem. + +4) **Package Data**: This can involve making a new spreadsheet or serializing + with `JSON.stringify` or writing XML or simply flattening data for UI tools. + +5) **Release Data**: Spreadsheet files can be uploaded to a server or written + locally. Data can be presented to users in an HTML TABLE or data grid. + +A common problem involves generating a valid spreadsheet export from data stored +in an HTML table. In this example, an HTML TABLE on the page will be scraped, +a row will be added to the bottom with the date of the report, and a new file +will be generated and downloaded locally. `XLSX.writeFile` takes care of +packaging the data and attempting a local download: + +```js +// Acquire Data (reference to the HTML table) +var table_elt = document.getElementById("my-table-id"); + +// Extract Data (create a workbook object from the table) +var workbook = XLSX.utils.table_to_book(table_elt); + +// Process Data (add a new row) +var ws = workbook.Sheets["Sheet1"]; +XLSX.utils.sheet_add_aoa(ws, [["Created "+new Date().toISOString()]], {origin:-1}); + +// Package and Release Data (`writeFile` tries to write and save an XLSB file) +XLSX.writeFile(workbook, "Report.xlsb"); +``` + +This library tries to simplify steps 2 and 4 with functions to extract useful +data from spreadsheet files (`read` / `readFile`) and generate new spreadsheet +files from data (`write` / `writeFile`). Additional utility functions like +`table_to_book` work with other common data sources like HTML tables. + +This documentation and various demo projects cover a number of common scenarios +and approaches for steps 1 and 5. + +Utility functions help with step 3. + +["Acquiring and Extracting Data"](#acquiring-and-extracting-data) describes +solutions for common data import scenarios. + +["Packaging and Releasing Data"](#packaging-and-releasing-data) describes +solutions for common data export scenarios. + +["Processing Data"](#packaging-and-releasing-data) describes solutions for +common workbook processing and manipulation scenarios. + +["Utility Functions"](#utility-functions) details utility functions for +translating JSON Arrays and other common JS structures into worksheet objects. + +### The Zen of SheetJS + +_Data processing should fit in any workflow_ + +The library does not impose a separate lifecycle. It fits nicely in websites +and apps built using any framework. The plain JS data objects play nice with +Web Workers and future APIs. + +_JavaScript is a powerful language for data processing_ + +The ["Common Spreadsheet Format"](#common-spreadsheet-format) is a simple object +representation of the core concepts of a workbook. The various functions in the +library provide low-level tools for working with the object. + +For friendly JS processing, there are utility functions for converting parts of +a worksheet to/from an Array of Arrays. The following example combines powerful +JS Array methods with a network request library to download data, select the +information we want and create a workbook file: + +
+ Get Data from a JSON Endpoint and Generate a Workbook (click to show) + +The goal is to generate a XLSB workbook of US President names and birthdays. + +**Acquire Data** + +_Raw Data_ + + has the desired +data. For example, John Adams: + +```js +{ + "id": { /* (data omitted) */ }, + "name": { + "first": "John", // <-- first name + "last": "Adams" // <-- last name + }, + "bio": { + "birthday": "1735-10-19", // <-- birthday + "gender": "M" + }, + "terms": [ + { "type": "viceprez", /* (other fields omitted) */ }, + { "type": "viceprez", /* (other fields omitted) */ }, + { "type": "prez", /* (other fields omitted) */ } // <-- look for "prez" + ] +} +``` + +_Filtering for Presidents_ + +The dataset includes Aaron Burr, a Vice President who was never President! + +`Array#filter` creates a new array with the desired rows. A President served +at least one term with `type` set to `"prez"`. To test if a particular row has +at least one `"prez"` term, `Array#some` is another native JS function. The +complete filter would be: + +```js +const prez = raw_data.filter(row => row.terms.some(term => term.type === "prez")); +``` + +_Lining up the data_ + +For this example, the name will be the first name combined with the last name +(`row.name.first + " " + row.name.last`) and the birthday will be the subfield +`row.bio.birthday`. Using `Array#map`, the dataset can be massaged in one call: + +```js +const rows = prez.map(row => ({ + name: row.name.first + " " + row.name.last, + birthday: row.bio.birthday +})); +``` + +The result is an array of "simple" objects with no nesting: + +```js +[ + { name: "George Washington", birthday: "1732-02-22" }, + { name: "John Adams", birthday: "1735-10-19" }, + // ... one row per President +] +``` + +**Extract Data** + +With the cleaned dataset, `XLSX.utils.json_to_sheet` generates a worksheet: + +```js +const worksheet = XLSX.utils.json_to_sheet(rows); +``` + +`XLSX.utils.book_new` creates a new workbook and `XLSX.utils.book_append_sheet` +appends a worksheet to the workbook. The new worksheet will be called "Dates": + +```js +const workbook = XLSX.utils.book_new(); +XLSX.utils.book_append_sheet(workbook, worksheet, "Dates"); +``` + +**Process Data** + +_Fixing headers_ + +By default, `json_to_sheet` creates a worksheet with a header row. In this case, +the headers come from the JS object keys: "name" and "birthday". + +The headers are in cells A1 and B1. `XLSX.utils.sheet_add_aoa` can write text +values to the existing worksheet starting at cell A1: + +```js +XLSX.utils.sheet_add_aoa(worksheet, [["Name", "Birthday"]], { origin: "A1" }); +``` + +_Fixing Column Widths_ + +Some of the names are longer than the default column width. Column widths are +set by [setting the `"!cols"` worksheet property](#row-and-column-properties). + +The following line sets the width of column A to approximately 10 characters: + +```js +worksheet["!cols"] = [ { wch: 10 } ]; // set column A width to 10 characters +``` + +One `Array#reduce` call over `rows` can calculate the maximum width: + +```js +const max_width = rows.reduce((w, r) => Math.max(w, r.name.length), 10); +worksheet["!cols"] = [ { wch: max_width } ]; +``` + +Note: If the starting point was a file or HTML table, `XLSX.utils.sheet_to_json` +will generate an array of JS objects. + +**Package and Release Data** + +`XLSX.writeFile` creates a spreadsheet file and tries to write it to the system. +In the browser, it will try to prompt the user to download the file. In NodeJS, +it will write to the local directory. + +```js +XLSX.writeFile(workbook, "Presidents.xlsx"); +``` + +**Complete Example** + +```js +// Uncomment the next line for use in NodeJS: +// const XLSX = require("xlsx"), axios = require("axios"); + +(async() => { + /* fetch JSON data and parse */ + const url = "https://theunitedstates.io/congress-legislators/executive.json"; + const raw_data = (await axios(url, {responseType: "json"})).data; + + /* filter for the Presidents */ + const prez = raw_data.filter(row => row.terms.some(term => term.type === "prez")); + + /* flatten objects */ + const rows = prez.map(row => ({ + name: row.name.first + " " + row.name.last, + birthday: row.bio.birthday + })); + + /* generate worksheet and workbook */ + const worksheet = XLSX.utils.json_to_sheet(rows); + const workbook = XLSX.utils.book_new(); + XLSX.utils.book_append_sheet(workbook, worksheet, "Dates"); + + /* fix headers */ + XLSX.utils.sheet_add_aoa(worksheet, [["Name", "Birthday"]], { origin: "A1" }); + + /* calculate column width */ + const max_width = rows.reduce((w, r) => Math.max(w, r.name.length), 10); + worksheet["!cols"] = [ { wch: max_width } ]; + + /* create an XLSX file and try to save to Presidents.xlsx */ + XLSX.writeFile(workbook, "Presidents.xlsx"); +})(); +``` + +For use in the web browser, assuming the snippet is saved to `snippet.js`, +script tags should be used to include the `axios` and `xlsx` standalone builds: + +```html + + + +``` + + +
+ +_File formats are implementation details_ + +The parser covers a wide gamut of common spreadsheet file formats to ensure that +"HTML-saved-as-XLS" files work as well as actual XLS or XLSX files. + +The writer supports a number of common output formats for broad compatibility +with the data ecosystem. + +To the greatest extent possible, data processing code should not have to worry +about the specific file formats involved. + + +### JS Ecosystem Demos + +The [`demos` directory](demos/) includes sample projects for: + +**Frameworks and APIs** +- [`angularjs`](demos/angular/) +- [`angular and ionic`](demos/angular2/) +- [`knockout`](demos/knockout/) +- [`meteor`](demos/meteor/) +- [`react and react-native`](demos/react/) +- [`vue 2.x and weex`](demos/vue/) +- [`XMLHttpRequest and fetch`](demos/xhr/) +- [`nodejs server`](demos/server/) +- [`databases and key/value stores`](demos/database/) +- [`typed arrays and math`](demos/array/) + +**Bundlers and Tooling** +- [`browserify`](demos/browserify/) +- [`fusebox`](demos/fusebox/) +- [`parcel`](demos/parcel/) +- [`requirejs`](demos/requirejs/) +- [`rollup`](demos/rollup/) +- [`systemjs`](demos/systemjs/) +- [`typescript`](demos/typescript/) +- [`webpack 2.x`](demos/webpack/) + +**Platforms and Integrations** +- [`deno`](demos/deno/) +- [`electron application`](demos/electron/) +- [`nw.js application`](demos/nwjs/) +- [`Chrome / Chromium extensions`](demos/chrome/) +- [`Download a Google Sheet locally`](demos/google-sheet/) +- [`Adobe ExtendScript`](demos/extendscript/) +- [`Headless Browsers`](demos/headless/) +- [`canvas-datagrid`](demos/datagrid/) +- [`x-spreadsheet`](demos/xspreadsheet/) +- [`react-data-grid`](demos/react/modify/) +- [`vue3-table-light`](demos/vue/modify/) +- [`Swift JSC and other engines`](demos/altjs/) +- [`"serverless" functions`](demos/function/) +- [`internet explorer`](demos/oldie/) + +Other examples are included in the [showcase](demos/showcase/). + + shows a complete example of reading, +modifying, and writing files. + + is the command-line +tool included with node installations, reading spreadsheet files and exporting +the contents in various formats. +## Acquiring and Extracting Data + +### Parsing Workbooks + +**API** + +_Extract data from spreadsheet bytes_ + +```js +var workbook = XLSX.read(data, opts); +``` + +The `read` method can extract data from spreadsheet bytes stored in a JS string, +"binary string", NodeJS buffer or typed array (`Uint8Array` or `ArrayBuffer`). + + +_Read spreadsheet bytes from a local file and extract data_ + +```js +var workbook = XLSX.readFile(filename, opts); +``` + +The `readFile` method attempts to read a spreadsheet file at the supplied path. +Browsers generally do not allow reading files in this way (it is deemed a +security risk), and attempts to read files in this way will throw an error. + +The second `opts` argument is optional. ["Parsing Options"](#parsing-options) +covers the supported properties and behaviors. + +**Examples** + +Here are a few common scenarios (click on each subtitle to see the code): + +
+ Local file in a NodeJS server (click to show) + +`readFile` uses `fs.readFileSync` under the hood: + +```js +var XLSX = require("xlsx"); + +var workbook = XLSX.readFile("test.xlsx"); +``` + +For Node ESM, the `readFile` helper is not enabled. Instead, `fs.readFileSync` +should be used to read the file data as a `Buffer` for use with `XLSX.read`: + +```js +import { readFileSync } from "fs"; +import { read } from "xlsx/xlsx.mjs"; + +const buf = readFileSync("test.xlsx"); +/* buf is a Buffer */ +const workbook = read(buf); +``` + +
+ +
+ Local file in a Deno application (click to show) + +`readFile` uses `Deno.readFileSync` under the hood: + +```js +// @deno-types="https://deno.land/x/sheetjs/types/index.d.ts" +import * as XLSX from 'https://deno.land/x/sheetjs/xlsx.mjs' + +const workbook = XLSX.readFile("test.xlsx"); +``` + +Applications reading files must be invoked with the `--allow-read` flag. The +[`deno` demo](demos/deno/) has more examples + +
+ +
+ User-submitted file in a web page ("Drag-and-Drop") (click to show) + +For modern websites targeting Chrome 76+, `File#arrayBuffer` is recommended: + +```js +// XLSX is a global from the standalone script + +async function handleDropAsync(e) { + e.stopPropagation(); e.preventDefault(); + const f = e.dataTransfer.files[0]; + /* f is a File */ + const data = await f.arrayBuffer(); + /* data is an ArrayBuffer */ + const workbook = XLSX.read(data); + + /* DO SOMETHING WITH workbook HERE */ +} +drop_dom_element.addEventListener("drop", handleDropAsync, false); +``` + +For maximal compatibility, the `FileReader` API should be used: + +```js +function handleDrop(e) { + e.stopPropagation(); e.preventDefault(); + var f = e.dataTransfer.files[0]; + /* f is a File */ + var reader = new FileReader(); + reader.onload = function(e) { + var data = e.target.result; + /* reader.readAsArrayBuffer(file) -> data will be an ArrayBuffer */ + var workbook = XLSX.read(data); + + /* DO SOMETHING WITH workbook HERE */ + }; + reader.readAsArrayBuffer(f); +} +drop_dom_element.addEventListener("drop", handleDrop, false); +``` + + demonstrates the FileReader technique. + +
+ +
+ User-submitted file with an HTML INPUT element (click to show) + +Starting with an HTML INPUT element with `type="file"`: + +```html + +``` + +For modern websites targeting Chrome 76+, `Blob#arrayBuffer` is recommended: + +```js +// XLSX is a global from the standalone script + +async function handleFileAsync(e) { + const file = e.target.files[0]; + const data = await file.arrayBuffer(); + /* data is an ArrayBuffer */ + const workbook = XLSX.read(data); + + /* DO SOMETHING WITH workbook HERE */ +} +input_dom_element.addEventListener("change", handleFileAsync, false); +``` + +For broader support (including IE10+), the `FileReader` approach is recommended: + +```js +function handleFile(e) { + var file = e.target.files[0]; + var reader = new FileReader(); + reader.onload = function(e) { + var data = e.target.result; + /* reader.readAsArrayBuffer(file) -> data will be an ArrayBuffer */ + var workbook = XLSX.read(e.target.result); + + /* DO SOMETHING WITH workbook HERE */ + }; + reader.readAsArrayBuffer(file); +} +input_dom_element.addEventListener("change", handleFile, false); +``` + +The [`oldie` demo](demos/oldie/) shows an IE-compatible fallback scenario. + +
+ +
+ Fetching a file in the web browser ("Ajax") (click to show) + +For modern websites targeting Chrome 42+, `fetch` is recommended: + +```js +// XLSX is a global from the standalone script + +(async() => { + const url = "http://oss.sheetjs.com/test_files/formula_stress_test.xlsx"; + const data = await (await fetch(url)).arrayBuffer(); + /* data is an ArrayBuffer */ + const workbook = XLSX.read(data); + + /* DO SOMETHING WITH workbook HERE */ +})(); +``` + +For broader support, the `XMLHttpRequest` approach is recommended: + +```js +var url = "http://oss.sheetjs.com/test_files/formula_stress_test.xlsx"; + +/* set up async GET request */ +var req = new XMLHttpRequest(); +req.open("GET", url, true); +req.responseType = "arraybuffer"; + +req.onload = function(e) { + var workbook = XLSX.read(req.response); + + /* DO SOMETHING WITH workbook HERE */ +}; + +req.send(); +``` + +The [`xhr` demo](demos/xhr/) includes a longer discussion and more examples. + + shows fallback approaches for IE6+. + +
+ +
+ Local file in a PhotoShop or InDesign plugin (click to show) + +`readFile` wraps the `File` logic in Photoshop and other ExtendScript targets. +The specified path should be an absolute path: + +```js +#include "xlsx.extendscript.js" + +/* Read test.xlsx from the Documents folder */ +var workbook = XLSX.readFile(Folder.myDocuments + "/test.xlsx"); +``` + +The [`extendscript` demo](demos/extendscript/) includes a more complex example. + +
+ +
+ Local file in an Electron app (click to show) + +`readFile` can be used in the renderer process: + +```js +/* From the renderer process */ +var XLSX = require("xlsx"); + +var workbook = XLSX.readFile(path); +``` + +Electron APIs have changed over time. The [`electron` demo](demos/electron/) +shows a complete example and details the required version-specific settings. + +
+ +
+ Local file in a mobile app with React Native (click to show) + +The [`react` demo](demos/react) includes a sample React Native app. + +Since React Native does not provide a way to read files from the filesystem, a +third-party library must be used. The following libraries have been tested: + +- [`react-native-file-access`](https://npm.im/react-native-file-access) + +The `base64` encoding returns strings compatible with the `base64` type: + +```js +import XLSX from "xlsx"; +import { FileSystem } from "react-native-file-access"; + +const b64 = await FileSystem.readFile(path, "base64"); +/* b64 is a base64 string */ +const workbook = XLSX.read(b64, {type: "base64"}); +``` + +- [`react-native-fs`](https://npm.im/react-native-fs) + +The `ascii` encoding returns binary strings compatible with the `binary` type: + +```js +import XLSX from "xlsx"; +import { readFile } from "react-native-fs"; + +const bstr = await readFile(path, "ascii"); +/* bstr is a binary string */ +const workbook = XLSX.read(bstr, {type: "binary"}); +``` + +
+ +
+ NodeJS Server File Uploads (click to show) + +`read` can accept a NodeJS buffer. `readFile` can read files generated by a +HTTP POST request body parser like [`formidable`](https://npm.im/formidable): + +```js +const XLSX = require("xlsx"); +const http = require("http"); +const formidable = require("formidable"); + +const server = http.createServer((req, res) => { + const form = new formidable.IncomingForm(); + form.parse(req, (err, fields, files) => { + /* grab the first file */ + const f = Object.entries(files)[0][1]; + const path = f.filepath; + const workbook = XLSX.readFile(path); + + /* DO SOMETHING WITH workbook HERE */ + }); +}).listen(process.env.PORT || 7262); +``` + +The [`server` demo](demos/server) has more advanced examples. + +
+ +
+ Download files in a NodeJS process (click to show) + +Node 17.5 and 18.0 have native support for fetch: + +```js +const XLSX = require("xlsx"); + +const data = await (await fetch(url)).arrayBuffer(); +/* data is an ArrayBuffer */ +const workbook = XLSX.read(data); +``` + +For broader compatibility, third-party modules are recommended. + +[`request`](https://npm.im/request) requires a `null` encoding to yield Buffers: + +```js +var XLSX = require("xlsx"); +var request = require("request"); + +request({url: url, encoding: null}, function(err, resp, body) { + var workbook = XLSX.read(body); + + /* DO SOMETHING WITH workbook HERE */ +}); +``` + +[`axios`](https://npm.im/axios) works the same way in browser and in NodeJS: + +```js +const XLSX = require("xlsx"); +const axios = require("axios"); + +(async() => { + const res = await axios.get(url, {responseType: "arraybuffer"}); + /* res.data is a Buffer */ + const workbook = XLSX.read(res.data); + + /* DO SOMETHING WITH workbook HERE */ +})(); +``` + +
+ +
+ Download files in an Electron app (click to show) + +The `net` module in the main process can make HTTP/HTTPS requests to external +resources. Responses should be manually concatenated using `Buffer.concat`: + +```js +const XLSX = require("xlsx"); +const { net } = require("electron"); + +const req = net.request(url); +req.on("response", (res) => { + const bufs = []; // this array will collect all of the buffers + res.on("data", (chunk) => { bufs.push(chunk); }); + res.on("end", () => { + const workbook = XLSX.read(Buffer.concat(bufs)); + + /* DO SOMETHING WITH workbook HERE */ + }); +}); +req.end(); +``` + +
+ +
+ Readable Streams in NodeJS (click to show) + +When dealing with Readable Streams, the easiest approach is to buffer the stream +and process the whole thing at the end: + +```js +var fs = require("fs"); +var XLSX = require("xlsx"); + +function process_RS(stream, cb) { + var buffers = []; + stream.on("data", function(data) { buffers.push(data); }); + stream.on("end", function() { + var buffer = Buffer.concat(buffers); + var workbook = XLSX.read(buffer, {type:"buffer"}); + + /* DO SOMETHING WITH workbook IN THE CALLBACK */ + cb(workbook); + }); +} +``` + +
+ +
+ ReadableStream in the browser (click to show) + +When dealing with `ReadableStream`, the easiest approach is to buffer the stream +and process the whole thing at the end: + +```js +// XLSX is a global from the standalone script + +async function process_RS(stream) { + /* collect data */ + const buffers = []; + const reader = stream.getReader(); + for(;;) { + const res = await reader.read(); + if(res.value) buffers.push(res.value); + if(res.done) break; + } + + /* concat */ + const out = new Uint8Array(buffers.reduce((acc, v) => acc + v.length, 0)); + + let off = 0; + for(const u8 of arr) { + out.set(u8, off); + off += u8.length; + } + + return out; +} + +const data = await process_RS(stream); +/* data is Uint8Array */ +const workbook = XLSX.read(data); +``` + +
+ +More detailed examples are covered in the [included demos](demos/) + +### Processing JSON and JS Data + +JSON and JS data tend to represent single worksheets. This section will use a +few utility functions to generate workbooks. + +_Create a new Workbook_ + +```js +var workbook = XLSX.utils.book_new(); +``` + +The `book_new` utility function creates an empty workbook with no worksheets. + +Spreadsheet software generally require at least one worksheet and enforce the +requirement in the user interface. This library enforces the requirement at +write time, throwing errors if an empty workbook is passed to write functions. + + +**API** + +_Create a worksheet from an array of arrays of JS values_ + +```js +var worksheet = XLSX.utils.aoa_to_sheet(aoa, opts); +``` + +The `aoa_to_sheet` utility function walks an "array of arrays" in row-major +order, generating a worksheet object. The following snippet generates a sheet +with cell `A1` set to the string `A1`, cell `B1` set to `B1`, etc: + +```js +var worksheet = XLSX.utils.aoa_to_sheet([ + ["A1", "B1", "C1"], + ["A2", "B2", "C2"], + ["A3", "B3", "C3"] +]); +``` + +["Array of Arrays Input"](#array-of-arrays-input) describes the function and the +optional `opts` argument in more detail. + + +_Create a worksheet from an array of JS objects_ + +```js +var worksheet = XLSX.utils.json_to_sheet(jsa, opts); +``` + +The `json_to_sheet` utility function walks an array of JS objects in order, +generating a worksheet object. By default, it will generate a header row and +one row per object in the array. The optional `opts` argument has settings to +control the column order and header output. + +["Array of Objects Input"](#array-of-arrays-input) describes the function and +the optional `opts` argument in more detail. + +**Examples** + +["Zen of SheetJS"](#the-zen-of-sheetjs) contains a detailed example "Get Data +from a JSON Endpoint and Generate a Workbook" + + +[`x-spreadsheet`](https://github.com/myliang/x-spreadsheet) is an interactive +data grid for previewing and modifying structured data in the web browser. The +[`xspreadsheet` demo](/demos/xspreadsheet) includes a sample script with the +`xtos` function for converting from x-spreadsheet data object to a workbook. + is a live demo. + +
+ Records from a database query (SQL or no-SQL) (click to show) + +The [`database` demo](/demos/database/) includes examples of working with +databases and query results. + +
+ + +
+ Numerical Computations with TensorFlow.js (click to show) + +[`@tensorflow/tfjs`](@tensorflow/tfjs) and other libraries expect data in simple +arrays, well-suited for worksheets where each column is a data vector. That is +the transpose of how most people use spreadsheets, where each row is a vector. + +When recovering data from `tfjs`, the returned data points are stored in a typed +array. An array of arrays can be constructed with loops. `Array#unshift` can +prepend a title row before the conversion: + +```js +const XLSX = require("xlsx"); +const tf = require('@tensorflow/tfjs'); + +/* suppose xs and ys are vectors (1D tensors) -> tfarr will be a typed array */ +const tfdata = tf.stack([xs, ys]).transpose(); +const shape = tfdata.shape; +const tfarr = tfdata.dataSync(); + +/* construct the array of arrays */ +const aoa = []; +for(let j = 0; j < shape[0]; ++j) { + aoa[j] = []; + for(let i = 0; i < shape[1]; ++i) aoa[j][i] = tfarr[j * shape[1] + i]; +} +/* add headers to the top */ +aoa.unshift(["x", "y"]); + +/* generate worksheet */ +const worksheet = XLSX.utils.aoa_to_sheet(aoa); +``` + +The [`array` demo](demos/array/) shows a complete example. + +
+ + +### Processing HTML Tables + +**API** + +_Create a worksheet by scraping an HTML TABLE in the page_ + +```js +var worksheet = XLSX.utils.table_to_sheet(dom_element, opts); +``` + +The `table_to_sheet` utility function takes a DOM TABLE element and iterates +through the rows to generate a worksheet. The `opts` argument is optional. +["HTML Table Input"](#html-table-input) describes the function in more detail. + + + +_Create a workbook by scraping an HTML TABLE in the page_ + +```js +var workbook = XLSX.utils.table_to_book(dom_element, opts); +``` + +The `table_to_book` utility function follows the same logic as `table_to_sheet`. +After generating a worksheet, it creates a blank workbook and appends the +spreadsheet. + +The options argument supports the same options as `table_to_sheet`, with the +addition of a `sheet` property to control the worksheet name. If the property +is missing or no options are specified, the default name `Sheet1` is used. + +**Examples** + +Here are a few common scenarios (click on each subtitle to see the code): + +
+ HTML TABLE element in a webpage (click to show) + +```html + + + + + +
+ + +
SheetJS
1234567
+ + + +``` + +Multiple tables on a web page can be converted to individual worksheets: + +```js +/* create new workbook */ +var workbook = XLSX.utils.book_new(); + +/* convert table "table1" to worksheet named "Sheet1" */ +var sheet1 = XLSX.utils.table_to_sheet(document.getElementById("table1")); +XLSX.utils.book_append_sheet(workbook, sheet1, "Sheet1"); + +/* convert table "table2" to worksheet named "Sheet2" */ +var sheet2 = XLSX.utils.table_to_sheet(document.getElementById("table2")); +XLSX.utils.book_append_sheet(workbook, sheet2, "Sheet2"); + +/* workbook now has 2 worksheets */ +``` + +Alternatively, the HTML code can be extracted and parsed: + +```js +var htmlstr = document.getElementById("tableau").outerHTML; +var workbook = XLSX.read(htmlstr, {type:"string"}); +``` + + + +
+ Chrome/Chromium Extension (click to show) + +The [`chrome` demo](demos/chrome/) shows a complete example and details the +required permissions and other settings. + +In an extension, it is recommended to generate the workbook in a content script +and pass the object back to the extension: + +```js +/* in the worker script */ +chrome.runtime.onMessage.addListener(function(msg, sender, cb) { + /* pass a message like { sheetjs: true } from the extension to scrape */ + if(!msg || !msg.sheetjs) return; + /* create a new workbook */ + var workbook = XLSX.utils.book_new(); + /* loop through each table element */ + var tables = document.getElementsByTagName("table") + for(var i = 0; i < tables.length; ++i) { + var worksheet = XLSX.utils.table_to_sheet(tables[i]); + XLSX.utils.book_append_sheet(workbook, worksheet, "Table" + i); + } + /* pass back to the extension */ + return cb(workbook); +}); +``` + +
+ +
+ Server-Side HTML Tables with Headless Chrome (click to show) + +The [`headless` demo](demos/headless/) includes a complete demo to convert HTML +files to XLSB workbooks. The core idea is to add the script to the page, parse +the table in the page context, generate a `base64` workbook and send it back +for further processing: + +```js +const XLSX = require("xlsx"); +const { readFileSync } = require("fs"), puppeteer = require("puppeteer"); + +const url = `https://sheetjs.com/demos/table`; + +/* get the standalone build source (node_modules/xlsx/dist/xlsx.full.min.js) */ +const lib = readFileSync(require.resolve("xlsx/dist/xlsx.full.min.js"), "utf8"); + +(async() => { + /* start browser and go to web page */ + const browser = await puppeteer.launch(); + const page = await browser.newPage(); + await page.goto(url, {waitUntil: "networkidle2"}); + + /* inject library */ + await page.addScriptTag({content: lib}); + + /* this function `s5s` will be called by the script below, receiving the Base64-encoded file */ + await page.exposeFunction("s5s", async(b64) => { + const workbook = XLSX.read(b64, {type: "base64" }); + + /* DO SOMETHING WITH workbook HERE */ + }); + + /* generate XLSB file in webpage context and send back result */ + await page.addScriptTag({content: ` + /* call table_to_book on first table */ + var workbook = XLSX.utils.table_to_book(document.querySelector("TABLE")); + + /* generate XLSX file */ + var b64 = XLSX.write(workbook, {type: "base64", bookType: "xlsb"}); + + /* call "s5s" hook exposed from the node process */ + window.s5s(b64); + `}); + + /* cleanup */ + await browser.close(); +})(); +``` + +
+ +
+ Server-Side HTML Tables with Headless WebKit (click to show) + +The [`headless` demo](demos/headless/) includes a complete demo to convert HTML +files to XLSB workbooks using [PhantomJS](https://phantomjs.org/). The core idea +is to add the script to the page, parse the table in the page context, generate +a `binary` workbook and send it back for further processing: + +```js +var XLSX = require('xlsx'); +var page = require('webpage').create(); + +/* this code will be run in the page */ +var code = [ "function(){", + /* call table_to_book on first table */ + "var wb = XLSX.utils.table_to_book(document.body.getElementsByTagName('table')[0]);", + + /* generate XLSB file and return binary string */ + "return XLSX.write(wb, {type: 'binary', bookType: 'xlsb'});", +"}" ].join(""); + +page.open('https://sheetjs.com/demos/table', function() { + /* Load the browser script from the UNPKG CDN */ + page.includeJs("https://unpkg.com/xlsx/dist/xlsx.full.min.js", function() { + /* The code will return an XLSB file encoded as binary string */ + var bin = page.evaluateJavaScript(code); + + var workbook = XLSX.read(bin, {type: "binary"}); + /* DO SOMETHING WITH workbook HERE */ + + phantom.exit(); + }); +}); +``` + +
+ +
+ NodeJS HTML Tables without a browser (click to show) + +NodeJS does not include a DOM implementation and Puppeteer requires a hefty +Chromium build. [`jsdom`](https://npm.im/jsdom) is a lightweight alternative: + +```js +const XLSX = require("xlsx"); +const { readFileSync } = require("fs"); +const { JSDOM } = require("jsdom"); + +/* obtain HTML string. This example reads from test.html */ +const html_str = fs.readFileSync("test.html", "utf8"); +/* get first TABLE element */ +const doc = new JSDOM(html_str).window.document.querySelector("table"); +/* generate workbook */ +const workbook = XLSX.utils.table_to_book(doc); +``` + +
+ +## Processing Data + +The ["Common Spreadsheet Format"](#common-spreadsheet-format) is a simple object +representation of the core concepts of a workbook. The utility functions work +with the object representation and are intended to handle common use cases. + +### Modifying Workbook Structure + +**API** + +_Append a Worksheet to a Workbook_ + +```js +XLSX.utils.book_append_sheet(workbook, worksheet, sheet_name); +``` + +The `book_append_sheet` utility function appends a worksheet to the workbook. +The third argument specifies the desired worksheet name. Multiple worksheets can +be added to a workbook by calling the function multiple times. If the worksheet +name is already used in the workbook, it will throw an error. + +_Append a Worksheet to a Workbook and find a unique name_ + +```js +var new_name = XLSX.utils.book_append_sheet(workbook, worksheet, name, true); +``` + +If the fourth argument is `true`, the function will start with the specified +worksheet name. If the sheet name exists in the workbook, a new worksheet name +will be chosen by finding the name stem and incrementing the counter: + +```js +XLSX.utils.book_append_sheet(workbook, sheetA, "Sheet2", true); // Sheet2 +XLSX.utils.book_append_sheet(workbook, sheetB, "Sheet2", true); // Sheet3 +XLSX.utils.book_append_sheet(workbook, sheetC, "Sheet2", true); // Sheet4 +XLSX.utils.book_append_sheet(workbook, sheetD, "Sheet2", true); // Sheet5 +``` + +_List the Worksheet names in tab order_ + +```js +var wsnames = workbook.SheetNames; +``` + +The `SheetNames` property of the workbook object is a list of the worksheet +names in "tab order". API functions will look at this array. + +_Replace a Worksheet in place_ + +```js +workbook.Sheets[sheet_name] = new_worksheet; +``` + +The `Sheets` property of the workbook object is an object whose keys are names +and whose values are worksheet objects. By reassigning to a property of the +`Sheets` object, the worksheet object can be changed without disrupting the +rest of the worksheet structure. + +**Examples** + +
+ Add a new worksheet to a workbook (click to show) + +This example uses [`XLSX.utils.aoa_to_sheet`](#array-of-arrays-input). + +```js +var ws_name = "SheetJS"; + +/* Create worksheet */ +var ws_data = [ + [ "S", "h", "e", "e", "t", "J", "S" ], + [ 1 , 2 , 3 , 4 , 5 ] +]; +var ws = XLSX.utils.aoa_to_sheet(ws_data); + +/* Add the worksheet to the workbook */ +XLSX.utils.book_append_sheet(wb, ws, ws_name); +``` + +
+ +### Modifying Cell Values + +**API** + +_Modify a single cell value in a worksheet_ + +```js +XLSX.utils.sheet_add_aoa(worksheet, [[new_value]], { origin: address }); +``` + +_Modify multiple cell values in a worksheet_ + +```js +XLSX.utils.sheet_add_aoa(worksheet, aoa, opts); +``` + +The `sheet_add_aoa` utility function modifies cell values in a worksheet. The +first argument is the worksheet object. The second argument is an array of +arrays of values. The `origin` key of the third argument controls where cells +will be written. The following snippet sets `B3=1` and `E5="abc"`: + +```js +XLSX.utils.sheet_add_aoa(worksheet, [ + [1], // <-- Write 1 to cell B3 + , // <-- Do nothing in row 4 + [/*B5*/, /*C5*/, /*D5*/, "abc"] // <-- Write "abc" to cell E5 +], { origin: "B3" }); +``` + +["Array of Arrays Input"](#array-of-arrays-input) describes the function and the +optional `opts` argument in more detail. + +**Examples** + +
+ Appending rows to a worksheet (click to show) + +The special origin value `-1` instructs `sheet_add_aoa` to start in column A of +the row after the last row in the range, appending the data: + +```js +XLSX.utils.sheet_add_aoa(worksheet, [ + ["first row after data", 1], + ["second row after data", 2] +], { origin: -1 }); +``` + +
+ + +### Modifying Other Worksheet / Workbook / Cell Properties + +The ["Common Spreadsheet Format"](#common-spreadsheet-format) section describes +the object structures in greater detail. + +## Packaging and Releasing Data + +### Writing Workbooks + +**API** + +_Generate spreadsheet bytes (file) from data_ + +```js +var data = XLSX.write(workbook, opts); +``` + +The `write` method attempts to package data from the workbook into a file in +memory. By default, XLSX files are generated, but that can be controlled with +the `bookType` property of the `opts` argument. Based on the `type` option, +the data can be stored as a "binary string", JS string, `Uint8Array` or Buffer. + +The second `opts` argument is required. ["Writing Options"](#writing-options) +covers the supported properties and behaviors. + +_Generate and attempt to save file_ + +```js +XLSX.writeFile(workbook, filename, opts); +``` + +The `writeFile` method packages the data and attempts to save the new file. The +export file format is determined by the extension of `filename` (`SheetJS.xlsx` +signals XLSX export, `SheetJS.xlsb` signals XLSB export, etc). + +The `writeFile` method uses platform-specific APIs to initiate the file save. In +NodeJS, `fs.readFileSync` can create a file. In the web browser, a download is +attempted using the HTML5 `download` attribute, with fallbacks for IE. + +_Generate and attempt to save an XLSX file_ + +```js +XLSX.writeFileXLSX(workbook, filename, opts); +``` + +The `writeFile` method embeds a number of different export functions. This is +great for developer experience but not amenable to tree shaking using the +current developer tools. When only XLSX exports are needed, this method avoids +referencing the other export functions. + +The second `opts` argument is optional. ["Writing Options"](#writing-options) +covers the supported properties and behaviors. + +**Examples** + +
+ Local file in a NodeJS server (click to show) + +`writeFile` uses `fs.writeFileSync` in server environments: + +```js +var XLSX = require("xlsx"); + +/* output format determined by filename */ +XLSX.writeFile(workbook, "out.xlsb"); +``` + +For Node ESM, the `writeFile` helper is not enabled. Instead, `fs.writeFileSync` +should be used to write the file data to a `Buffer` for use with `XLSX.write`: + +```js +import { writeFileSync } from "fs"; +import { write } from "xlsx/xlsx.mjs"; + +const buf = write(workbook, {type: "buffer", bookType: "xlsb"}); +/* buf is a Buffer */ +const workbook = writeFileSync("out.xlsb", buf); +``` + +
+ +
+ Local file in a Deno application (click to show) + +`writeFile` uses `Deno.writeFileSync` under the hood: + +```js +// @deno-types="https://deno.land/x/sheetjs/types/index.d.ts" +import * as XLSX from 'https://deno.land/x/sheetjs/xlsx.mjs' + +XLSX.writeFile(workbook, "test.xlsx"); +``` + +Applications writing files must be invoked with the `--allow-write` flag. The +[`deno` demo](demos/deno/) has more examples + +
+ +
+ Local file in a PhotoShop or InDesign plugin (click to show) + +`writeFile` wraps the `File` logic in Photoshop and other ExtendScript targets. +The specified path should be an absolute path: + +```js +#include "xlsx.extendscript.js" + +/* output format determined by filename */ +XLSX.writeFile(workbook, "out.xlsx"); +/* at this point, out.xlsx is a file that you can distribute */ +``` + +The [`extendscript` demo](demos/extendscript/) includes a more complex example. + +
+ +
+ Download a file in the browser to the user machine (click to show) + +`XLSX.writeFile` wraps a few techniques for triggering a file save: + +- `URL` browser API creates an object URL for the file, which the library uses + by creating a link and forcing a click. It is supported in modern browsers. +- `msSaveBlob` is an IE10+ API for triggering a file save. +- `IE_FileSave` uses VBScript and ActiveX to write a file in IE6+ for Windows + XP and Windows 7. The shim must be included in the containing HTML page. + +There is no standard way to determine if the actual file has been downloaded. + +```js +/* output format determined by filename */ +XLSX.writeFile(workbook, "out.xlsb"); +/* at this point, out.xlsb will have been downloaded */ +``` + +
+ +
+ Download a file in legacy browsers (click to show) + +`XLSX.writeFile` techniques work for most modern browsers as well as older IE. +For much older browsers, there are workarounds implemented by wrapper libraries. + +[`FileSaver.js`](https://github.com/eligrey/FileSaver.js/) implements `saveAs`. +Note: `XLSX.writeFile` will automatically call `saveAs` if available. + +```js +/* bookType can be any supported output type */ +var wopts = { bookType:"xlsx", bookSST:false, type:"array" }; + +var wbout = XLSX.write(workbook,wopts); + +/* the saveAs call downloads a file on the local machine */ +saveAs(new Blob([wbout],{type:"application/octet-stream"}), "test.xlsx"); +``` + +[`Downloadify`](https://github.com/dcneiner/downloadify) uses a Flash SWF button +to generate local files, suitable for environments where ActiveX is unavailable: + +```js +Downloadify.create(id,{ + /* other options are required! read the downloadify docs for more info */ + filename: "test.xlsx", + data: function() { return XLSX.write(wb, {bookType:"xlsx", type:"base64"}); }, + append: false, + dataType: "base64" +}); +``` + +The [`oldie` demo](demos/oldie/) shows an IE-compatible fallback scenario. + +
+ +
+ Browser upload file (ajax) (click to show) + +A complete example using XHR is [included in the XHR demo](demos/xhr/), along +with examples for fetch and wrapper libraries. This example assumes the server +can handle Base64-encoded files (see the demo for a basic nodejs server): + +```js +/* in this example, send a base64 string to the server */ +var wopts = { bookType:"xlsx", bookSST:false, type:"base64" }; + +var wbout = XLSX.write(workbook,wopts); + +var req = new XMLHttpRequest(); +req.open("POST", "/upload", true); +var formdata = new FormData(); +formdata.append("file", "test.xlsx"); // <-- server expects `file` to hold name +formdata.append("data", wbout); // <-- `data` holds the base64-encoded data +req.send(formdata); +``` + +
+ +
+ PhantomJS (Headless Webkit) File Generation (click to show) + +The [`headless` demo](demos/headless/) includes a complete demo to convert HTML +files to XLSB workbooks using [PhantomJS](https://phantomjs.org/). PhantomJS +`fs.write` supports writing files from the main process but has a different +interface from the NodeJS `fs` module: + +```js +var XLSX = require('xlsx'); +var fs = require('fs'); + +/* generate a binary string */ +var bin = XLSX.write(workbook, { type:"binary", bookType: "xlsx" }); +/* write to file */ +fs.write("test.xlsx", bin, "wb"); +``` + +Note: The section ["Processing HTML Tables"](#processing-html-tables) shows how +to generate a workbook from HTML tables in a page in "Headless WebKit". + +
+ + + +The [included demos](demos/) cover mobile apps and other special deployments. + +### Writing Examples + +- exporting an HTML table +- generates a simple file + +### Streaming Write + +The streaming write functions are available in the `XLSX.stream` object. They +take the same arguments as the normal write functions but return a NodeJS +Readable Stream. + +- `XLSX.stream.to_csv` is the streaming version of `XLSX.utils.sheet_to_csv`. +- `XLSX.stream.to_html` is the streaming version of `XLSX.utils.sheet_to_html`. +- `XLSX.stream.to_json` is the streaming version of `XLSX.utils.sheet_to_json`. + +
+ nodejs convert to CSV and write file (click to show) + +```js +var output_file_name = "out.csv"; +var stream = XLSX.stream.to_csv(worksheet); +stream.pipe(fs.createWriteStream(output_file_name)); +``` + +
+ +
+ nodejs write JSON stream to screen (click to show) + +```js +/* to_json returns an object-mode stream */ +var stream = XLSX.stream.to_json(worksheet, {raw:true}); + +/* the following stream converts JS objects to text via JSON.stringify */ +var conv = new Transform({writableObjectMode:true}); +conv._transform = function(obj, e, cb){ cb(null, JSON.stringify(obj) + "\n"); }; + +stream.pipe(conv); conv.pipe(process.stdout); +``` + +
+ +
+ Exporting NUMBERS files (click to show) + +The NUMBERS writer requires a fairly large base. The supplementary `xlsx.zahl` +scripts provide support. `xlsx.zahl.js` is designed for standalone and NodeJS +use, while `xlsx.zahl.mjs` is suitable for ESM. + +_Browser_ + +```html + + + + +``` + +_Node_ + +```js +var XLSX = require("./xlsx.flow"); +var XLSX_ZAHL = require("./dist/xlsx.zahl"); +var wb = XLSX.utils.book_new(); var ws = XLSX.utils.aoa_to_sheet([ + ["SheetJS", "<3","விரிதாள்"], + [72,,"Arbeitsblätter"], + [,62,"数据"], + [true,false,], +]); XLSX.utils.book_append_sheet(wb, ws, "Sheet1"); +XLSX.writeFile(wb, "textport.numbers", {numbers: XLSX_ZAHL, compression: true}); +``` + +_Deno_ + +```ts +import * as XLSX from './xlsx.mjs'; +import XLSX_ZAHL from './dist/xlsx.zahl.mjs'; + +var wb = XLSX.utils.book_new(); var ws = XLSX.utils.aoa_to_sheet([ + ["SheetJS", "<3","விரிதாள்"], + [72,,"Arbeitsblätter"], + [,62,"数据"], + [true,false,], +]); XLSX.utils.book_append_sheet(wb, ws, "Sheet1"); +XLSX.writeFile(wb, "textports.numbers", {numbers: XLSX_ZAHL, compression: true}); +``` + +
+ + pipes write streams to nodejs response. + +### Generating JSON and JS Data + +JSON and JS data tend to represent single worksheets. The utility functions in +this section work with single worksheets. + +The ["Common Spreadsheet Format"](#common-spreadsheet-format) section describes +the object structure in more detail. `workbook.SheetNames` is an ordered list +of the worksheet names. `workbook.Sheets` is an object whose keys are sheet +names and whose values are worksheet objects. + +The "first worksheet" is stored at `workbook.Sheets[workbook.SheetNames[0]]`. + +**API** + +_Create an array of JS objects from a worksheet_ + +```js +var jsa = XLSX.utils.sheet_to_json(worksheet, opts); +``` + +_Create an array of arrays of JS values from a worksheet_ + +```js +var aoa = XLSX.utils.sheet_to_json(worksheet, {...opts, header: 1}); +``` + +The `sheet_to_json` utility function walks a workbook in row-major order, +generating an array of objects. The second `opts` argument controls a number of +export decisions including the type of values (JS values or formatted text). The +["JSON"](#json) section describes the argument in more detail. + +By default, `sheet_to_json` scans the first row and uses the values as headers. +With the `header: 1` option, the function exports an array of arrays of values. + +**Examples** + +[`x-spreadsheet`](https://github.com/myliang/x-spreadsheet) is an interactive +data grid for previewing and modifying structured data in the web browser. The +[`xspreadsheet` demo](/demos/xspreadsheet) includes a sample script with the +`stox` function for converting from a workbook to x-spreadsheet data object. + is a live demo. + +
+ Previewing data in a React data grid (click to show) + +[`react-data-grid`](https://npm.im/react-data-grid) is a data grid tailored for +react. It expects two properties: `rows` of data objects and `columns` which +describe the columns. For the purposes of massaging the data to fit the react +data grid API it is easiest to start from an array of arrays. + +This demo starts by fetching a remote file and using `XLSX.read` to extract: + +```js +import { useEffect, useState } from "react"; +import DataGrid from "react-data-grid"; +import { read, utils } from "xlsx"; + +const url = "https://oss.sheetjs.com/test_files/RkNumber.xls"; + +export default function App() { + const [columns, setColumns] = useState([]); + const [rows, setRows] = useState([]); + useEffect(() => {(async () => { + const wb = read(await (await fetch(url)).arrayBuffer(), { WTF: 1 }); + + /* use sheet_to_json with header: 1 to generate an array of arrays */ + const data = utils.sheet_to_json(wb.Sheets[wb.SheetNames[0]], { header: 1 }); + + /* see react-data-grid docs to understand the shape of the expected data */ + setColumns(data[0].map((r) => ({ key: r, name: r }))); + setRows(data.slice(1).map((r) => r.reduce((acc, x, i) => { + acc[data[0][i]] = x; + return acc; + }, {}))); + })(); }); + + return ; +} +``` + +
+ +
+ Previewing data in a VueJS data grid (click to show) + +[`vue3-table-lite`](https://github.com/linmasahiro/vue3-table-lite) is a simple +VueJS 3 data table. It is featured [in the VueJS demo](/demos/vue/modify/). + +
+ +
+ Populating a database (SQL or no-SQL) (click to show) + +The [`database` demo](/demos/database/) includes examples of working with +databases and query results. + +
+ +
+ Numerical Computations with TensorFlow.js (click to show) + +[`@tensorflow/tfjs`](@tensorflow/tfjs) and other libraries expect data in simple +arrays, well-suited for worksheets where each column is a data vector. That is +the transpose of how most people use spreadsheets, where each row is a vector. + +A single `Array#map` can pull individual named rows from `sheet_to_json` export: + +```js +const XLSX = require("xlsx"); +const tf = require('@tensorflow/tfjs'); + +const key = "age"; // this is the field we want to pull +const ages = XLSX.utils.sheet_to_json(worksheet).map(r => r[key]); +const tf_data = tf.tensor1d(ages); +``` + +All fields can be processed at once using a transpose of the 2D tensor generated +with the `sheet_to_json` export with `header: 1`. The first row, if it contains +header labels, should be removed with a slice: + +```js +const XLSX = require("xlsx"); +const tf = require('@tensorflow/tfjs'); + +/* array of arrays of the data starting on the second row */ +const aoa = XLSX.utils.sheet_to_json(worksheet, {header: 1}).slice(1); +/* dataset in the "correct orientation" */ +const tf_dataset = tf.tensor2d(aoa).transpose(); +/* pull out each dataset with a slice */ +const tf_field0 = tf_dataset.slice([0,0], [1,tensor.shape[1]]).flatten(); +const tf_field1 = tf_dataset.slice([1,0], [1,tensor.shape[1]]).flatten(); +``` + +The [`array` demo](demos/array/) shows a complete example. + +
+ + +### Generating HTML Tables + +**API** + +_Generate HTML Table from Worksheet_ + +```js +var html = XLSX.utils.sheet_to_html(worksheet); +``` + +The `sheet_to_html` utility function generates HTML code based on the worksheet +data. Each cell in the worksheet is mapped to a `` element. Merged cells +in the worksheet are serialized by setting `colspan` and `rowspan` attributes. + +**Examples** + +The `sheet_to_html` utility function generates HTML code that can be added to +any DOM element by setting the `innerHTML`: + +```js +var container = document.getElementById("tavolo"); +container.innerHTML = XLSX.utils.sheet_to_html(worksheet); +``` + +Combining with `fetch`, constructing a site from a workbook is straightforward: + +
+ Vanilla JS + HTML fetch workbook and generate table previews (click to show) + +```html + + +
+ + + +``` + +
+ +
+ React fetch workbook and generate HTML table previews (click to show) + +It is generally recommended to use a React-friendly workflow, but it is possible +to generate HTML and use it in React with `dangerouslySetInnerHTML`: + +```jsx +function Tabeller(props) { + /* the workbook object is the state */ + const [workbook, setWorkbook] = React.useState(XLSX.utils.book_new()); + + /* fetch and update the workbook with an effect */ + React.useEffect(() => { (async() => { + /* fetch and parse workbook -- see the fetch example for details */ + const wb = XLSX.read(await (await fetch("sheetjs.xlsx")).arrayBuffer()); + setWorkbook(wb); + })(); }); + + return workbook.SheetNames.map(name => (<> +

name

+
+ )); +} +``` + +The [`react` demo](demos/react) includes more React examples. + +
+ +
+ VueJS fetch workbook and generate HTML table previews (click to show) + +It is generally recommended to use a VueJS-friendly workflow, but it is possible +to generate HTML and use it in VueJS with the `v-html` directive: + +```jsx +import { read, utils } from 'xlsx'; +import { reactive } from 'vue'; + +const S5SComponent = { + mounted() { (async() => { + /* fetch and parse workbook -- see the fetch example for details */ + const workbook = read(await (await fetch("sheetjs.xlsx")).arrayBuffer()); + /* loop through the worksheet names in order */ + workbook.SheetNames.forEach(name => { + /* generate HTML from the corresponding worksheets */ + const html = utils.sheet_to_html(workbook.Sheets[name]); + /* add to state */ + this.wb.wb.push({ name, html }); + }); + })(); }, + /* this state mantra is required for array updates to work */ + setup() { return { wb: reactive({ wb: [] }) }; }, + template: ` +
+

{{ ws.name }}

+
+
` +}; +``` + +The [`vuejs` demo](demos/vue) includes more React examples. + +
+ +### Generating Single-Worksheet Snapshots + +The `sheet_to_*` functions accept a worksheet object. + +**API** + +_Generate a CSV from a single worksheet_ + +```js +var csv = XLSX.utils.sheet_to_csv(worksheet, opts); +``` + +This snapshot is designed to replicate the "CSV UTF8 (`.csv`)" output type. +["Delimiter-Separated Output"](#delimiter-separated-output) describes the +function and the optional `opts` argument in more detail. + +_Generate "Text" from a single worksheet_ + +```js +var txt = XLSX.utils.sheet_to_txt(worksheet, opts); +``` + +This snapshot is designed to replicate the "UTF16 Text (`.txt`)" output type. +["Delimiter-Separated Output"](#delimiter-separated-output) describes the +function and the optional `opts` argument in more detail. + +_Generate a list of formulae from a single worksheet_ + +```js +var fmla = XLSX.utils.sheet_to_formulae(worksheet); +``` + +This snapshot generates an array of entries representing the embedded formulae. +Array formulae are rendered in the form `range=formula` while plain cells are +rendered in the form `cell=formula or value`. String literals are prefixed with +an apostrophe `'`, consistent with Excel's formula bar display. + +["Formulae Output"](#formulae-output) describes the function in more detail. + +## Interface + +`XLSX` is the exposed variable in the browser and the exported node variable + +`XLSX.version` is the version of the library (added by the build script). + +`XLSX.SSF` is an embedded version of the [format library](https://git.io/ssf). + +### Parsing functions + +`XLSX.read(data, read_opts)` attempts to parse `data`. + +`XLSX.readFile(filename, read_opts)` attempts to read `filename` and parse. + +Parse options are described in the [Parsing Options](#parsing-options) section. + +### Writing functions + +`XLSX.write(wb, write_opts)` attempts to write the workbook `wb` + +`XLSX.writeFile(wb, filename, write_opts)` attempts to write `wb` to `filename`. +In browser-based environments, it will attempt to force a client-side download. + +`XLSX.writeFileAsync(wb, filename, o, cb)` attempts to write `wb` to `filename`. +If `o` is omitted, the writer will use the third argument as the callback. + +`XLSX.stream` contains a set of streaming write functions. + +Write options are described in the [Writing Options](#writing-options) section. + +### Utilities + +Utilities are available in the `XLSX.utils` object and are described in the +[Utility Functions](#utility-functions) section: + +**Constructing:** + +- `book_new` creates an empty workbook +- `book_append_sheet` adds a worksheet to a workbook + +**Importing:** + +- `aoa_to_sheet` converts an array of arrays of JS data to a worksheet. +- `json_to_sheet` converts an array of JS objects to a worksheet. +- `table_to_sheet` converts a DOM TABLE element to a worksheet. +- `sheet_add_aoa` adds an array of arrays of JS data to an existing worksheet. +- `sheet_add_json` adds an array of JS objects to an existing worksheet. + + +**Exporting:** + +- `sheet_to_json` converts a worksheet object to an array of JSON objects. +- `sheet_to_csv` generates delimiter-separated-values output. +- `sheet_to_txt` generates UTF16 formatted text. +- `sheet_to_html` generates HTML output. +- `sheet_to_formulae` generates a list of the formulae (with value fallbacks). + + +**Cell and cell address manipulation:** + +- `format_cell` generates the text value for a cell (using number formats). +- `encode_row / decode_row` converts between 0-indexed rows and 1-indexed rows. +- `encode_col / decode_col` converts between 0-indexed columns and column names. +- `encode_cell / decode_cell` converts cell addresses. +- `encode_range / decode_range` converts cell ranges. + +## Common Spreadsheet Format + +SheetJS conforms to the Common Spreadsheet Format (CSF): + +### General Structures + +Cell address objects are stored as `{c:C, r:R}` where `C` and `R` are 0-indexed +column and row numbers, respectively. For example, the cell address `B5` is +represented by the object `{c:1, r:4}`. + +Cell range objects are stored as `{s:S, e:E}` where `S` is the first cell and +`E` is the last cell in the range. The ranges are inclusive. For example, the +range `A3:B7` is represented by the object `{s:{c:0, r:2}, e:{c:1, r:6}}`. +Utility functions perform a row-major order walk traversal of a sheet range: + +```js +for(var R = range.s.r; R <= range.e.r; ++R) { + for(var C = range.s.c; C <= range.e.c; ++C) { + var cell_address = {c:C, r:R}; + /* if an A1-style address is needed, encode the address */ + var cell_ref = XLSX.utils.encode_cell(cell_address); + } +} +``` + +### Cell Object + +Cell objects are plain JS objects with keys and values following the convention: + +| Key | Description | +| --- | ---------------------------------------------------------------------- | +| `v` | raw value (see Data Types section for more info) | +| `w` | formatted text (if applicable) | +| `t` | type: `b` Boolean, `e` Error, `n` Number, `d` Date, `s` Text, `z` Stub | +| `f` | cell formula encoded as an A1-style string (if applicable) | +| `F` | range of enclosing array if formula is array formula (if applicable) | +| `D` | if true, array formula is dynamic (if applicable) | +| `r` | rich text encoding (if applicable) | +| `h` | HTML rendering of the rich text (if applicable) | +| `c` | comments associated with the cell | +| `z` | number format string associated with the cell (if requested) | +| `l` | cell hyperlink object (`.Target` holds link, `.Tooltip` is tooltip) | +| `s` | the style/theme of the cell (if applicable) | + +Built-in export utilities (such as the CSV exporter) will use the `w` text if it +is available. To change a value, be sure to delete `cell.w` (or set it to +`undefined`) before attempting to export. The utilities will regenerate the `w` +text from the number format (`cell.z`) and the raw value if possible. + +The actual array formula is stored in the `f` field of the first cell in the +array range. Other cells in the range will omit the `f` field. + +#### Data Types + +The raw value is stored in the `v` value property, interpreted based on the `t` +type property. This separation allows for representation of numbers as well as +numeric text. There are 6 valid cell types: + +| Type | Description | +| :--: | :-------------------------------------------------------------------- | +| `b` | Boolean: value interpreted as JS `boolean` | +| `e` | Error: value is a numeric code and `w` property stores common name ** | +| `n` | Number: value is a JS `number` ** | +| `d` | Date: value is a JS `Date` object or string to be parsed as Date ** | +| `s` | Text: value interpreted as JS `string` and written as text ** | +| `z` | Stub: blank stub cell that is ignored by data processing utilities ** | + +
+ Error values and interpretation (click to show) + +| Value | Error Meaning | +| -----: | :-------------- | +| `0x00` | `#NULL!` | +| `0x07` | `#DIV/0!` | +| `0x0F` | `#VALUE!` | +| `0x17` | `#REF!` | +| `0x1D` | `#NAME?` | +| `0x24` | `#NUM!` | +| `0x2A` | `#N/A` | +| `0x2B` | `#GETTING_DATA` | + +
+ +Type `n` is the Number type. This includes all forms of data that Excel stores +as numbers, such as dates/times and Boolean fields. Excel exclusively uses data +that can be fit in an IEEE754 floating point number, just like JS Number, so the +`v` field holds the raw number. The `w` field holds formatted text. Dates are +stored as numbers by default and converted with `XLSX.SSF.parse_date_code`. + +Type `d` is the Date type, generated only when the option `cellDates` is passed. +Since JSON does not have a natural Date type, parsers are generally expected to +store ISO 8601 Date strings like you would get from `date.toISOString()`. On +the other hand, writers and exporters should be able to handle date strings and +JS Date objects. Note that Excel disregards timezone modifiers and treats all +dates in the local timezone. The library does not correct for this error. + +Type `s` is the String type. Values are explicitly stored as text. Excel will +interpret these cells as "number stored as text". Generated Excel files +automatically suppress that class of error, but other formats may elicit errors. + +Type `z` represents blank stub cells. They are generated in cases where cells +have no assigned value but hold comments or other metadata. They are ignored by +the core library data processing utility functions. By default these cells are +not generated; the parser `sheetStubs` option must be set to `true`. + + +#### Dates + +
+ Excel Date Code details (click to show) + +By default, Excel stores dates as numbers with a format code that specifies date +processing. For example, the date `19-Feb-17` is stored as the number `42785` +with a number format of `d-mmm-yy`. The `SSF` module understands number formats +and performs the appropriate conversion. + +XLSX also supports a special date type `d` where the data is an ISO 8601 date +string. The formatter converts the date back to a number. + +The default behavior for all parsers is to generate number cells. Setting +`cellDates` to true will force the generators to store dates. + +
+ +
+ Time Zones and Dates (click to show) + +Excel has no native concept of universal time. All times are specified in the +local time zone. Excel limitations prevent specifying true absolute dates. + +Following Excel, this library treats all dates as relative to local time zone. + +
+ +
+ Epochs: 1900 and 1904 (click to show) + +Excel supports two epochs (January 1 1900 and January 1 1904). +The workbook's epoch can be determined by examining the workbook's +`wb.Workbook.WBProps.date1904` property: + +```js +!!(((wb.Workbook||{}).WBProps||{}).date1904) +``` + +
+ +### Sheet Objects + +Each key that does not start with `!` maps to a cell (using `A-1` notation) + +`sheet[address]` returns the cell object for the specified address. + +**Special sheet keys (accessible as `sheet[key]`, each starting with `!`):** + +- `sheet['!ref']`: A-1 based range representing the sheet range. Functions that + work with sheets should use this parameter to determine the range. Cells that + are assigned outside of the range are not processed. In particular, when + writing a sheet by hand, cells outside of the range are not included + + Functions that handle sheets should test for the presence of `!ref` field. + If the `!ref` is omitted or is not a valid range, functions are free to treat + the sheet as empty or attempt to guess the range. The standard utilities that + ship with this library treat sheets as empty (for example, the CSV output is + empty string). + + When reading a worksheet with the `sheetRows` property set, the ref parameter + will use the restricted range. The original range is set at `ws['!fullref']` + +- `sheet['!margins']`: Object representing the page margins. The default values + follow Excel's "normal" preset. Excel also has a "wide" and a "narrow" preset + but they are stored as raw measurements. The main properties are listed below: + +
+ Page margin details (click to show) + +| key | description | "normal" | "wide" | "narrow" | +|----------|------------------------|:---------|:-------|:-------- | +| `left` | left margin (inches) | `0.7` | `1.0` | `0.25` | +| `right` | right margin (inches) | `0.7` | `1.0` | `0.25` | +| `top` | top margin (inches) | `0.75` | `1.0` | `0.75` | +| `bottom` | bottom margin (inches) | `0.75` | `1.0` | `0.75` | +| `header` | header margin (inches) | `0.3` | `0.5` | `0.3` | +| `footer` | footer margin (inches) | `0.3` | `0.5` | `0.3` | + +```js +/* Set worksheet sheet to "normal" */ +ws["!margins"]={left:0.7, right:0.7, top:0.75,bottom:0.75,header:0.3,footer:0.3} +/* Set worksheet sheet to "wide" */ +ws["!margins"]={left:1.0, right:1.0, top:1.0, bottom:1.0, header:0.5,footer:0.5} +/* Set worksheet sheet to "narrow" */ +ws["!margins"]={left:0.25,right:0.25,top:0.75,bottom:0.75,header:0.3,footer:0.3} +``` +
+ +#### Worksheet Object + +In addition to the base sheet keys, worksheets also add: + +- `ws['!cols']`: array of column properties objects. Column widths are actually + stored in files in a normalized manner, measured in terms of the "Maximum + Digit Width" (the largest width of the rendered digits 0-9, in pixels). When + parsed, the column objects store the pixel width in the `wpx` field, character + width in the `wch` field, and the maximum digit width in the `MDW` field. + +- `ws['!rows']`: array of row properties objects as explained later in the docs. + Each row object encodes properties including row height and visibility. + +- `ws['!merges']`: array of range objects corresponding to the merged cells in + the worksheet. Plain text formats do not support merge cells. CSV export + will write all cells in the merge range if they exist, so be sure that only + the first cell (upper-left) in the range is set. + +- `ws['!outline']`: configure how outlines should behave. Options default to + the default settings in Excel 2019: + +| key | Excel feature | default | +|:----------|:----------------------------------------------|:--------| +| `above` | Uncheck "Summary rows below detail" | `false` | +| `left` | Uncheck "Summary rows to the right of detail" | `false` | + +- `ws['!protect']`: object of write sheet protection properties. The `password` + key specifies the password for formats that support password-protected sheets + (XLSX/XLSB/XLS). The writer uses the XOR obfuscation method. The following + keys control the sheet protection -- set to `false` to enable a feature when + sheet is locked or set to `true` to disable a feature: + +
+ Worksheet Protection Details (click to show) + +| key | feature (true=disabled / false=enabled) | default | +|:----------------------|:----------------------------------------|:-----------| +| `selectLockedCells` | Select locked cells | enabled | +| `selectUnlockedCells` | Select unlocked cells | enabled | +| `formatCells` | Format cells | disabled | +| `formatColumns` | Format columns | disabled | +| `formatRows` | Format rows | disabled | +| `insertColumns` | Insert columns | disabled | +| `insertRows` | Insert rows | disabled | +| `insertHyperlinks` | Insert hyperlinks | disabled | +| `deleteColumns` | Delete columns | disabled | +| `deleteRows` | Delete rows | disabled | +| `sort` | Sort | disabled | +| `autoFilter` | Filter | disabled | +| `pivotTables` | Use PivotTable reports | disabled | +| `objects` | Edit objects | enabled | +| `scenarios` | Edit scenarios | enabled | +
+ +- `ws['!autofilter']`: AutoFilter object following the schema: + +```typescript +type AutoFilter = { + ref:string; // A-1 based range representing the AutoFilter table range +} +``` + +#### Chartsheet Object + +Chartsheets are represented as standard sheets. They are distinguished with the +`!type` property set to `"chart"`. + +The underlying data and `!ref` refer to the cached data in the chartsheet. The +first row of the chartsheet is the underlying header. + +#### Macrosheet Object + +Macrosheets are represented as standard sheets. They are distinguished with the +`!type` property set to `"macro"`. + +#### Dialogsheet Object + +Dialogsheets are represented as standard sheets. They are distinguished with the +`!type` property set to `"dialog"`. + +### Workbook Object + +`workbook.SheetNames` is an ordered list of the sheets in the workbook + +`wb.Sheets[sheetname]` returns an object representing the worksheet. + +`wb.Props` is an object storing the standard properties. `wb.Custprops` stores +custom properties. Since the XLS standard properties deviate from the XLSX +standard, XLS parsing stores core properties in both places. + +`wb.Workbook` stores [workbook-level attributes](#workbook-level-attributes). + +#### Workbook File Properties + +The various file formats use different internal names for file properties. The +workbook `Props` object normalizes the names: + +
+ File Properties (click to show) + +| JS Name | Excel Description | +|:--------------|:-------------------------------| +| `Title` | Summary tab "Title" | +| `Subject` | Summary tab "Subject" | +| `Author` | Summary tab "Author" | +| `Manager` | Summary tab "Manager" | +| `Company` | Summary tab "Company" | +| `Category` | Summary tab "Category" | +| `Keywords` | Summary tab "Keywords" | +| `Comments` | Summary tab "Comments" | +| `LastAuthor` | Statistics tab "Last saved by" | +| `CreatedDate` | Statistics tab "Created" | + +
+ +For example, to set the workbook title property: + +```js +if(!wb.Props) wb.Props = {}; +wb.Props.Title = "Insert Title Here"; +``` + +Custom properties are added in the workbook `Custprops` object: + +```js +if(!wb.Custprops) wb.Custprops = {}; +wb.Custprops["Custom Property"] = "Custom Value"; +``` + +Writers will process the `Props` key of the options object: + +```js +/* force the Author to be "SheetJS" */ +XLSX.write(wb, {Props:{Author:"SheetJS"}}); +``` + +### Workbook-Level Attributes + +`wb.Workbook` stores workbook-level attributes. + +#### Defined Names + +`wb.Workbook.Names` is an array of defined name objects which have the keys: + +
+ Defined Name Properties (click to show) + +| Key | Description | +|:----------|:-----------------------------------------------------------------| +| `Sheet` | Name scope. Sheet Index (0 = first sheet) or `null` (Workbook) | +| `Name` | Case-sensitive name. Standard rules apply ** | +| `Ref` | A1-style Reference (`"Sheet1!$A$1:$D$20"`) | +| `Comment` | Comment (only applicable for XLS/XLSX/XLSB) | + +
+ +Excel allows two sheet-scoped defined names to share the same name. However, a +sheet-scoped name cannot collide with a workbook-scope name. Workbook writers +may not enforce this constraint. + +#### Workbook Views + +`wb.Workbook.Views` is an array of workbook view objects which have the keys: + +| Key | Description | +|:----------------|:----------------------------------------------------| +| `RTL` | If true, display right-to-left | + +#### Miscellaneous Workbook Properties + +`wb.Workbook.WBProps` holds other workbook properties: + +| Key | Description | +|:----------------|:----------------------------------------------------| +| `CodeName` | [VBA Project Workbook Code Name](#vba-and-macros) | +| `date1904` | epoch: 0/false for 1900 system, 1/true for 1904 | +| `filterPrivacy` | Warn or strip personally identifying info on save | + +### Document Features + +Even for basic features like date storage, the official Excel formats store the +same content in different ways. The parsers are expected to convert from the +underlying file format representation to the Common Spreadsheet Format. Writers +are expected to convert from CSF back to the underlying file format. + +#### Formulae + +The A1-style formula string is stored in the `f` field. Even though different +file formats store the formulae in different ways, the formats are translated. +Even though some formats store formulae with a leading equal sign, CSF formulae +do not start with `=`. + +
+ Formulae File Format Support (click to show) + +| Storage Representation | Formats | Read | Write | +|:-----------------------|:-------------------------|:-----:|:-----:| +| A1-style strings | XLSX | ✔ | ✔ | +| RC-style strings | XLML and plain text | ✔ | ✔ | +| BIFF Parsed formulae | XLSB and all XLS formats | ✔ | | +| OpenFormula formulae | ODS/FODS/UOS | ✔ | ✔ | +| Lotus Parsed formulae | All Lotus WK_ formats | ✔ | | + +Since Excel prohibits named cells from colliding with names of A1 or RC style +cell references, a (not-so-simple) regex conversion is possible. BIFF Parsed +formulae and Lotus Parsed formulae have to be explicitly unwound. OpenFormula +formulae can be converted with regular expressions. + +Shared formulae are decompressed and each cell has the formula corresponding to +its cell. Writers generally do not attempt to generate shared formulae. +
+ +**Single-Cell Formulae** + +For simple formulae, the `f` key of the desired cell can be set to the actual +formula text. This worksheet represents `A1=1`, `A2=2`, and `A3=A1+A2`: + +```js +var worksheet = { + "!ref": "A1:A3", + A1: { t:'n', v:1 }, + A2: { t:'n', v:2 }, + A3: { t:'n', v:3, f:'A1+A2' } +}; +``` + +Utilities like `aoa_to_sheet` will accept cell objects in lieu of values: + +```js +var worksheet = XLSX.utils.aoa_to_sheet([ + [ 1 ], // A1 + [ 2 ], // A2 + [ {t: "n", v: 3, f: "A1+A2"} ] // A3 +]); +``` + +Cells with formula entries but no value will be serialized in a way that Excel +and other spreadsheet tools will recognize. This library will not automatically +compute formula results! For example, the following worksheet will include the +`BESSELJ` function but the result will not be available in JavaScript: + +```js +var worksheet = XLSX.utils.aoa_to_sheet([ + [ 3.14159, 2 ], // Row "1" + [ { t:'n', f:'BESSELJ(A1,B1)' } ] // Row "2" will be calculated on file open +} +``` + +If the actual results are needed in JS, [SheetJS Pro](https://sheetjs.com/pro) +offers a formula calculator component for evaluating expressions, updating +values and dependent cells, and refreshing entire workbooks. + + +**Array Formulae** + +_Assign an array formula_ + +```js +XLSX.utils.sheet_set_array_formula(worksheet, range, formula); +``` + +Array formulae are stored in the top-left cell of the array block. All cells +of an array formula have a `F` field corresponding to the range. A single-cell +formula can be distinguished from a plain formula by the presence of `F` field. + +For example, setting the cell `C1` to the array formula `{=SUM(A1:A3*B1:B3)}`: + +```js +// API function +XLSX.utils.sheet_set_array_formula(worksheet, "C1", "SUM(A1:A3*B1:B3)"); + +// ... OR raw operations +worksheet['C1'] = { t:'n', f: "SUM(A1:A3*B1:B3)", F:"C1:C1" }; +``` + +For a multi-cell array formula, every cell has the same array range but only the +first cell specifies the formula. Consider `D1:D3=A1:A3*B1:B3`: + +```js +// API function +XLSX.utils.sheet_set_array_formula(worksheet, "D1:D3", "A1:A3*B1:B3"); + +// ... OR raw operations +worksheet['D1'] = { t:'n', F:"D1:D3", f:"A1:A3*B1:B3" }; +worksheet['D2'] = { t:'n', F:"D1:D3" }; +worksheet['D3'] = { t:'n', F:"D1:D3" }; +``` + +Utilities and writers are expected to check for the presence of a `F` field and +ignore any possible formula element `f` in cells other than the starting cell. +They are not expected to perform validation of the formulae! + + +**Dynamic Array Formulae** + +_Assign a dynamic array formula_ + +```js +XLSX.utils.sheet_set_array_formula(worksheet, range, formula, true); +``` + +Released in 2020, Dynamic Array Formulae are supported in the XLSX/XLSM and XLSB +file formats. They are represented like normal array formulae but have special +cell metadata indicating that the formula should be allowed to adjust the range. + +An array formula can be marked as dynamic by setting the cell's `D` property to +true. The `F` range is expected but can be the set to the current cell: + +```js +// API function +XLSX.utils.sheet_set_array_formula(worksheet, "C1", "_xlfn.UNIQUE(A1:A3)", 1); + +// ... OR raw operations +worksheet['C1'] = { t: "s", f: "_xlfn.UNIQUE(A1:A3)", F:"C1", D: 1 }; // dynamic +``` + +**Localization with Function Names** + +SheetJS operates at the file level. Excel stores formula expressions using the +English (United States) function names. For non-English users, Excel uses a +localized set of function names. + +For example, when the computer language and region is set to French (France), +Excel interprets `=SOMME(A1:C3)` as if `SOMME` is the `SUM` function. However, +in the actual file, Excel stores `SUM(A1:C3)`. + +**Prefixed "Future Functions"** + +Functions introduced in newer versions of Excel are prefixed with `_xlfn.` when +stored in files. When writing formula expressions using these functions, the +prefix is required for maximal compatibility: + +```js +// Broadest compatibility +XLSX.utils.sheet_set_array_formula(worksheet, "C1", "_xlfn.UNIQUE(A1:A3)", 1); + +// Can cause errors in spreadsheet software +XLSX.utils.sheet_set_array_formula(worksheet, "C1", "UNIQUE(A1:A3)", 1); +``` + +When reading a file, the `xlfn` option preserves the prefixes. + +
+ Functions requiring `_xlfn.` prefix (click to show) + +This list is growing with each Excel release. + +``` +ACOT +ACOTH +AGGREGATE +ARABIC +BASE +BETA.DIST +BETA.INV +BINOM.DIST +BINOM.DIST.RANGE +BINOM.INV +BITAND +BITLSHIFT +BITOR +BITRSHIFT +BITXOR +BYCOL +BYROW +CEILING.MATH +CEILING.PRECISE +CHISQ.DIST +CHISQ.DIST.RT +CHISQ.INV +CHISQ.INV.RT +CHISQ.TEST +COMBINA +CONFIDENCE.NORM +CONFIDENCE.T +COT +COTH +COVARIANCE.P +COVARIANCE.S +CSC +CSCH +DAYS +DECIMAL +ERF.PRECISE +ERFC.PRECISE +EXPON.DIST +F.DIST +F.DIST.RT +F.INV +F.INV.RT +F.TEST +FIELDVALUE +FILTERXML +FLOOR.MATH +FLOOR.PRECISE +FORMULATEXT +GAMMA +GAMMA.DIST +GAMMA.INV +GAMMALN.PRECISE +GAUSS +HYPGEOM.DIST +IFNA +IMCOSH +IMCOT +IMCSC +IMCSCH +IMSEC +IMSECH +IMSINH +IMTAN +ISFORMULA +ISOMITTED +ISOWEEKNUM +LAMBDA +LET +LOGNORM.DIST +LOGNORM.INV +MAKEARRAY +MAP +MODE.MULT +MODE.SNGL +MUNIT +NEGBINOM.DIST +NORM.DIST +NORM.INV +NORM.S.DIST +NORM.S.INV +NUMBERVALUE +PDURATION +PERCENTILE.EXC +PERCENTILE.INC +PERCENTRANK.EXC +PERCENTRANK.INC +PERMUTATIONA +PHI +POISSON.DIST +QUARTILE.EXC +QUARTILE.INC +QUERYSTRING +RANDARRAY +RANK.AVG +RANK.EQ +REDUCE +RRI +SCAN +SEC +SECH +SEQUENCE +SHEET +SHEETS +SKEW.P +SORTBY +STDEV.P +STDEV.S +T.DIST +T.DIST.2T +T.DIST.RT +T.INV +T.INV.2T +T.TEST +UNICHAR +UNICODE +UNIQUE +VAR.P +VAR.S +WEBSERVICE +WEIBULL.DIST +XLOOKUP +XOR +Z.TEST +``` + +
+ +#### Row and Column Properties + +
+ Format Support (click to show) + +**Row Properties**: XLSX/M, XLSB, BIFF8 XLS, XLML, SYLK, DOM, ODS + +**Column Properties**: XLSX/M, XLSB, BIFF8 XLS, XLML, SYLK, DOM + +
+ + +Row and Column properties are not extracted by default when reading from a file +and are not persisted by default when writing to a file. The option +`cellStyles: true` must be passed to the relevant read or write function. + +_Column Properties_ + +The `!cols` array in each worksheet, if present, is a collection of `ColInfo` +objects which have the following properties: + +```typescript +type ColInfo = { + /* visibility */ + hidden?: boolean; // if true, the column is hidden + + /* column width is specified in one of the following ways: */ + wpx?: number; // width in screen pixels + width?: number; // width in Excel's "Max Digit Width", width*256 is integral + wch?: number; // width in characters + + /* other fields for preserving features from files */ + level?: number; // 0-indexed outline / group level + MDW?: number; // Excel's "Max Digit Width" unit, always integral +}; +``` + +_Row Properties_ + +The `!rows` array in each worksheet, if present, is a collection of `RowInfo` +objects which have the following properties: + +```typescript +type RowInfo = { + /* visibility */ + hidden?: boolean; // if true, the row is hidden + + /* row height is specified in one of the following ways: */ + hpx?: number; // height in screen pixels + hpt?: number; // height in points + + level?: number; // 0-indexed outline / group level +}; +``` + +_Outline / Group Levels Convention_ + +The Excel UI displays the base outline level as `1` and the max level as `8`. +Following JS conventions, SheetJS uses 0-indexed outline levels wherein the base +outline level is `0` and the max level is `7`. + +
+ Why are there three width types? (click to show) + +There are three different width types corresponding to the three different ways +spreadsheets store column widths: + +SYLK and other plain text formats use raw character count. Contemporaneous tools +like Visicalc and Multiplan were character based. Since the characters had the +same width, it sufficed to store a count. This tradition was continued into the +BIFF formats. + +SpreadsheetML (2003) tried to align with HTML by standardizing on screen pixel +count throughout the file. Column widths, row heights, and other measures use +pixels. When the pixel and character counts do not align, Excel rounds values. + +XLSX internally stores column widths in a nebulous "Max Digit Width" form. The +Max Digit Width is the width of the largest digit when rendered (generally the +"0" character is the widest). The internal width must be an integer multiple of +the the width divided by 256. ECMA-376 describes a formula for converting +between pixels and the internal width. This represents a hybrid approach. + +Read functions attempt to populate all three properties. Write functions will +try to cycle specified values to the desired type. In order to avoid potential +conflicts, manipulation should delete the other properties first. For example, +when changing the pixel width, delete the `wch` and `width` properties. +
+ +
+ Implementation details (click to show) + +_Row Heights_ + +Excel internally stores row heights in points. The default resolution is 72 DPI +or 96 PPI, so the pixel and point size should agree. For different resolutions +they may not agree, so the library separates the concepts. + +Even though all of the information is made available, writers are expected to +follow the priority order: + +1) use `hpx` pixel height if available +2) use `hpt` point height if available + +_Column Widths_ + +Given the constraints, it is possible to determine the MDW without actually +inspecting the font! The parsers guess the pixel width by converting from width +to pixels and back, repeating for all possible MDW and selecting the MDW that +minimizes the error. XLML actually stores the pixel width, so the guess works +in the opposite direction. + +Even though all of the information is made available, writers are expected to +follow the priority order: + +1) use `width` field if available +2) use `wpx` pixel width if available +3) use `wch` character count if available + +
+ +#### Number Formats + +The `cell.w` formatted text for each cell is produced from `cell.v` and `cell.z` +format. If the format is not specified, the Excel `General` format is used. +The format can either be specified as a string or as an index into the format +table. Parsers are expected to populate `workbook.SSF` with the number format +table. Writers are expected to serialize the table. + +Custom tools should ensure that the local table has each used format string +somewhere in the table. Excel convention mandates that the custom formats start +at index 164. The following example creates a custom format from scratch: + +
+ New worksheet with custom format (click to show) + +```js +var wb = { + SheetNames: ["Sheet1"], + Sheets: { + Sheet1: { + "!ref":"A1:C1", + A1: { t:"n", v:10000 }, // <-- General format + B1: { t:"n", v:10000, z: "0%" }, // <-- Builtin format + C1: { t:"n", v:10000, z: "\"T\"\ #0.00" } // <-- Custom format + } + } +} +``` +
+ +The rules are slightly different from how Excel displays custom number formats. +In particular, literal characters must be wrapped in double quotes or preceded +by a backslash. For more info, see the Excel documentation article +`Create or delete a custom number format` or ECMA-376 18.8.31 (Number Formats) + + +
+ Default Number Formats (click to show) + +The default formats are listed in ECMA-376 18.8.30: + +| ID | Format | +|---:|:---------------------------| +| 0 | `General` | +| 1 | `0` | +| 2 | `0.00` | +| 3 | `#,##0` | +| 4 | `#,##0.00` | +| 9 | `0%` | +| 10 | `0.00%` | +| 11 | `0.00E+00` | +| 12 | `# ?/?` | +| 13 | `# ??/??` | +| 14 | `m/d/yy` (see below) | +| 15 | `d-mmm-yy` | +| 16 | `d-mmm` | +| 17 | `mmm-yy` | +| 18 | `h:mm AM/PM` | +| 19 | `h:mm:ss AM/PM` | +| 20 | `h:mm` | +| 21 | `h:mm:ss` | +| 22 | `m/d/yy h:mm` | +| 37 | `#,##0 ;(#,##0)` | +| 38 | `#,##0 ;[Red](#,##0)` | +| 39 | `#,##0.00;(#,##0.00)` | +| 40 | `#,##0.00;[Red](#,##0.00)` | +| 45 | `mm:ss` | +| 46 | `[h]:mm:ss` | +| 47 | `mmss.0` | +| 48 | `##0.0E+0` | +| 49 | `@` | + +
+ +Format 14 (`m/d/yy`) is localized by Excel: even though the file specifies that +number format, it will be drawn differently based on system settings. It makes +sense when the producer and consumer of files are in the same locale, but that +is not always the case over the Internet. To get around this ambiguity, parse +functions accept the `dateNF` option to override the interpretation of that +specific format string. + +#### Hyperlinks + +
+ Format Support (click to show) + +**Cell Hyperlinks**: XLSX/M, XLSB, BIFF8 XLS, XLML, ODS + +**Tooltips**: XLSX/M, XLSB, BIFF8 XLS, XLML + +
+ +Hyperlinks are stored in the `l` key of cell objects. The `Target` field of the +hyperlink object is the target of the link, including the URI fragment. Tooltips +are stored in the `Tooltip` field and are displayed when you move your mouse +over the text. + +For example, the following snippet creates a link from cell `A3` to + with the tip `"Find us @ SheetJS.com!"`: + +```js +ws['A1'].l = { Target:"https://sheetjs.com", Tooltip:"Find us @ SheetJS.com!" }; +``` + +Note that Excel does not automatically style hyperlinks -- they will generally +be displayed as normal text. + +_Remote Links_ + +HTTP / HTTPS links can be used directly: + +```js +ws['A2'].l = { Target:"https://docs.sheetjs.com/#hyperlinks" }; +ws['A3'].l = { Target:"http://localhost:7262/yes_localhost_works" }; +``` + +Excel also supports `mailto` email links with subject line: + +```js +ws['A4'].l = { Target:"mailto:ignored@dev.null" }; +ws['A5'].l = { Target:"mailto:ignored@dev.null?subject=Test Subject" }; +``` + +_Local Links_ + +Links to absolute paths should use the `file://` URI scheme: + +```js +ws['B1'].l = { Target:"file:///SheetJS/t.xlsx" }; /* Link to /SheetJS/t.xlsx */ +ws['B2'].l = { Target:"file:///c:/SheetJS.xlsx" }; /* Link to c:\SheetJS.xlsx */ +``` + +Links to relative paths can be specified without a scheme: + +```js +ws['B3'].l = { Target:"SheetJS.xlsb" }; /* Link to SheetJS.xlsb */ +ws['B4'].l = { Target:"../SheetJS.xlsm" }; /* Link to ../SheetJS.xlsm */ +``` + +Relative Paths have undefined behavior in the SpreadsheetML 2003 format. Excel +2019 will treat a `..\` parent mark as two levels up. + +_Internal Links_ + +Links where the target is a cell or range or defined name in the same workbook +("Internal Links") are marked with a leading hash character: + +```js +ws['C1'].l = { Target:"#E2" }; /* Link to cell E2 */ +ws['C2'].l = { Target:"#Sheet2!E2" }; /* Link to cell E2 in sheet Sheet2 */ +ws['C3'].l = { Target:"#SomeDefinedName" }; /* Link to Defined Name */ +``` + +#### Cell Comments + +Cell comments are objects stored in the `c` array of cell objects. The actual +contents of the comment are split into blocks based on the comment author. The +`a` field of each comment object is the author of the comment and the `t` field +is the plain text representation. + +For example, the following snippet appends a cell comment into cell `A1`: + +```js +if(!ws.A1.c) ws.A1.c = []; +ws.A1.c.push({a:"SheetJS", t:"I'm a little comment, short and stout!"}); +``` + +Note: XLSB enforces a 54 character limit on the Author name. Names longer than +54 characters may cause issues with other formats. + +To mark a comment as normally hidden, set the `hidden` property: + +```js +if(!ws.A1.c) ws.A1.c = []; +ws.A1.c.push({a:"SheetJS", t:"This comment is visible"}); + +if(!ws.A2.c) ws.A2.c = []; +ws.A2.c.hidden = true; +ws.A2.c.push({a:"SheetJS", t:"This comment will be hidden"}); +``` + + +_Threaded Comments_ + +Introduced in Excel 365, threaded comments are plain text comment snippets with +author metadata and parent references. They are supported in XLSX and XLSB. + +To mark a comment as threaded, each comment part must have a true `T` property: + +```js +if(!ws.A1.c) ws.A1.c = []; +ws.A1.c.push({a:"SheetJS", t:"This is not threaded"}); + +if(!ws.A2.c) ws.A2.c = []; +ws.A2.c.hidden = true; +ws.A2.c.push({a:"SheetJS", t:"This is threaded", T: true}); +ws.A2.c.push({a:"JSSheet", t:"This is also threaded", T: true}); +``` + +There is no Active Directory or Office 365 metadata associated with authors in a thread. + +#### Sheet Visibility + +Excel enables hiding sheets in the lower tab bar. The sheet data is stored in +the file but the UI does not readily make it available. Standard hidden sheets +are revealed in the "Unhide" menu. Excel also has "very hidden" sheets which +cannot be revealed in the menu. It is only accessible in the VB Editor! + +The visibility setting is stored in the `Hidden` property of sheet props array. + +
+ More details (click to show) + +| Value | Definition | +|:-----:|:------------| +| 0 | Visible | +| 1 | Hidden | +| 2 | Very Hidden | + +With : + +```js +> wb.Workbook.Sheets.map(function(x) { return [x.name, x.Hidden] }) +[ [ 'Visible', 0 ], [ 'Hidden', 1 ], [ 'VeryHidden', 2 ] ] +``` + +Non-Excel formats do not support the Very Hidden state. The best way to test +if a sheet is visible is to check if the `Hidden` property is logical truth: + +```js +> wb.Workbook.Sheets.map(function(x) { return [x.name, !x.Hidden] }) +[ [ 'Visible', true ], [ 'Hidden', false ], [ 'VeryHidden', false ] ] +``` +
+ +#### VBA and Macros + +VBA Macros are stored in a special data blob that is exposed in the `vbaraw` +property of the workbook object when the `bookVBA` option is `true`. They are +supported in `XLSM`, `XLSB`, and `BIFF8 XLS` formats. The supported format +writers automatically insert the data blobs if it is present in the workbook and +associate with the worksheet names. + +
+ Custom Code Names (click to show) + +The workbook code name is stored in `wb.Workbook.WBProps.CodeName`. By default, +Excel will write `ThisWorkbook` or a translated phrase like `DieseArbeitsmappe`. +Worksheet and Chartsheet code names are in the worksheet properties object at +`wb.Workbook.Sheets[i].CodeName`. Macrosheets and Dialogsheets are ignored. + +The readers and writers preserve the code names, but they have to be manually +set when adding a VBA blob to a different workbook. + +
+ +
+ Macrosheets (click to show) + +Older versions of Excel also supported a non-VBA "macrosheet" sheet type that +stored automation commands. These are exposed in objects with the `!type` +property set to `"macro"`. + +
+ +
+ Detecting macros in workbooks (click to show) + +The `vbaraw` field will only be set if macros are present, so testing is simple: + +```js +function wb_has_macro(wb/*:workbook*/)/*:boolean*/ { + if(!!wb.vbaraw) return true; + const sheets = wb.SheetNames.map((n) => wb.Sheets[n]); + return sheets.some((ws) => !!ws && ws['!type']=='macro'); +} +``` + +
+ +## Parsing Options + +The exported `read` and `readFile` functions accept an options argument: + +| Option Name | Default | Description | +| :---------- | ------: | :--------------------------------------------------- | +|`type` | | Input data encoding (see Input Type below) | +|`raw` | false | If true, plain text parsing will not parse values ** | +|`codepage` | | If specified, use code page when appropriate ** | +|`cellFormula`| true | Save formulae to the .f field | +|`cellHTML` | true | Parse rich text and save HTML to the `.h` field | +|`cellNF` | false | Save number format string to the `.z` field | +|`cellStyles` | false | Save style/theme info to the `.s` field | +|`cellText` | true | Generated formatted text to the `.w` field | +|`cellDates` | false | Store dates as type `d` (default is `n`) | +|`dateNF` | | If specified, use the string for date code 14 ** | +|`sheetStubs` | false | Create cell objects of type `z` for stub cells | +|`sheetRows` | 0 | If >0, read the first `sheetRows` rows ** | +|`bookDeps` | false | If true, parse calculation chains | +|`bookFiles` | false | If true, add raw files to book object ** | +|`bookProps` | false | If true, only parse enough to get book metadata ** | +|`bookSheets` | false | If true, only parse enough to get the sheet names | +|`bookVBA` | false | If true, copy VBA blob to `vbaraw` field ** | +|`password` | "" | If defined and file is encrypted, use password ** | +|`WTF` | false | If true, throw errors on unexpected file features ** | +|`sheets` | | If specified, only parse specified sheets ** | +|`PRN` | false | If true, allow parsing of PRN files ** | +|`xlfn` | false | If true, preserve `_xlfn.` prefixes in formulae ** | +|`FS` | | DSV Field Separator override | + +- Even if `cellNF` is false, formatted text will be generated and saved to `.w` +- In some cases, sheets may be parsed even if `bookSheets` is false. +- Excel aggressively tries to interpret values from CSV and other plain text. + This leads to surprising behavior! The `raw` option suppresses value parsing. +- `bookSheets` and `bookProps` combine to give both sets of information +- `Deps` will be an empty object if `bookDeps` is false +- `bookFiles` behavior depends on file type: + * `keys` array (paths in the ZIP) for ZIP-based formats + * `files` hash (mapping paths to objects representing the files) for ZIP + * `cfb` object for formats using CFB containers +- `sheetRows-1` rows will be generated when looking at the JSON object output + (since the header row is counted as a row when parsing the data) +- By default all worksheets are parsed. `sheets` restricts based on input type: + * number: zero-based index of worksheet to parse (`0` is first worksheet) + * string: name of worksheet to parse (case insensitive) + * array of numbers and strings to select multiple worksheets. +- `bookVBA` merely exposes the raw VBA CFB object. It does not parse the data. + XLSM and XLSB store the VBA CFB object in `xl/vbaProject.bin`. BIFF8 XLS mixes + the VBA entries alongside the core Workbook entry, so the library generates a + new XLSB-compatible blob from the XLS CFB container. +- `codepage` is applied to BIFF2 - BIFF5 files without `CodePage` records and to + CSV files without BOM in `type:"binary"`. BIFF8 XLS always defaults to 1200. +- `PRN` affects parsing of text files without a common delimiter character. +- Currently only XOR encryption is supported. Unsupported error will be thrown + for files employing other encryption methods. +- Newer Excel functions are serialized with the `_xlfn.` prefix, hidden from the + user. SheetJS will strip `_xlfn.` normally. The `xlfn` option preserves them. +- WTF is mainly for development. By default, the parser will suppress read + errors on single worksheets, allowing you to read from the worksheets that do + parse properly. Setting `WTF:true` forces those errors to be thrown. + +### Input Type + +Strings can be interpreted in multiple ways. The `type` parameter for `read` +tells the library how to parse the data argument: + +| `type` | expected input | +|------------|-----------------------------------------------------------------| +| `"base64"` | string: Base64 encoding of the file | +| `"binary"` | string: binary string (byte `n` is `data.charCodeAt(n)`) | +| `"string"` | string: JS string (characters interpreted as UTF8) | +| `"buffer"` | nodejs Buffer | +| `"array"` | array: array of 8-bit unsigned int (byte `n` is `data[n]`) | +| `"file"` | string: path of file that will be read (nodejs only) | + +### Guessing File Type + +
+ Implementation Details (click to show) + +Excel and other spreadsheet tools read the first few bytes and apply other +heuristics to determine a file type. This enables file type punning: renaming +files with the `.xls` extension will tell your computer to use Excel to open the +file but Excel will know how to handle it. This library applies similar logic: + +| Byte 0 | Raw File Type | Spreadsheet Types | +|:-------|:--------------|:----------------------------------------------------| +| `0xD0` | CFB Container | BIFF 5/8 or protected XLSX/XLSB or WQ3/QPW or XLR | +| `0x09` | BIFF Stream | BIFF 2/3/4/5 | +| `0x3C` | XML/HTML | SpreadsheetML / Flat ODS / UOS1 / HTML / plain text | +| `0x50` | ZIP Archive | XLSB or XLSX/M or ODS or UOS2 or NUMBERS or text | +| `0x49` | Plain Text | SYLK or plain text | +| `0x54` | Plain Text | DIF or plain text | +| `0xEF` | UTF8 Encoded | SpreadsheetML / Flat ODS / UOS1 / HTML / plain text | +| `0xFF` | UTF16 Encoded | SpreadsheetML / Flat ODS / UOS1 / HTML / plain text | +| `0x00` | Record Stream | Lotus WK\* or Quattro Pro or plain text | +| `0x7B` | Plain text | RTF or plain text | +| `0x0A` | Plain text | SpreadsheetML / Flat ODS / UOS1 / HTML / plain text | +| `0x0D` | Plain text | SpreadsheetML / Flat ODS / UOS1 / HTML / plain text | +| `0x20` | Plain text | SpreadsheetML / Flat ODS / UOS1 / HTML / plain text | + +DBF files are detected based on the first byte as well as the third and fourth +bytes (corresponding to month and day of the file date) + +Works for Windows files are detected based on the BOF record with type `0xFF` + +Plain text format guessing follows the priority order: + +| Format | Test | +|:-------|:--------------------------------------------------------------------| +| XML | ` + +
+ Why are random text files valid? (click to show) + +Excel is extremely aggressive in reading files. Adding an XLS extension to any +display text file (where the only characters are ANSI display chars) tricks +Excel into thinking that the file is potentially a CSV or TSV file, even if it +is only one column! This library attempts to replicate that behavior. + +The best approach is to validate the desired worksheet and ensure it has the +expected number of rows or columns. Extracting the range is extremely simple: + +```js +var range = XLSX.utils.decode_range(worksheet['!ref']); +var ncols = range.e.c - range.s.c + 1, nrows = range.e.r - range.s.r + 1; +``` + +
+ +## Writing Options + +The exported `write` and `writeFile` functions accept an options argument: + +| Option Name | Default | Description | +| :---------- | -------: | :-------------------------------------------------- | +|`type` | | Output data encoding (see Output Type below) | +|`cellDates` | `false` | Store dates as type `d` (default is `n`) | +|`bookSST` | `false` | Generate Shared String Table ** | +|`bookType` | `"xlsx"` | Type of Workbook (see below for supported formats) | +|`sheet` | `""` | Name of Worksheet for single-sheet formats ** | +|`compression`| `false` | Use ZIP compression for ZIP-based formats ** | +|`Props` | | Override workbook properties when writing ** | +|`themeXLSX` | | Override theme XML when writing XLSX/XLSB/XLSM ** | +|`ignoreEC` | `true` | Suppress "number as text" errors ** | +|`numbers` | | Payload for NUMBERS export ** | + +- `bookSST` is slower and more memory intensive, but has better compatibility + with older versions of iOS Numbers +- The raw data is the only thing guaranteed to be saved. Features not described + in this README may not be serialized. +- `cellDates` only applies to XLSX output and is not guaranteed to work with + third-party readers. Excel itself does not usually write cells with type `d` + so non-Excel tools may ignore the data or error in the presence of dates. +- `Props` is an object mirroring the workbook `Props` field. See the table from + the [Workbook File Properties](#workbook-file-properties) section. +- if specified, the string from `themeXLSX` will be saved as the primary theme + for XLSX/XLSB/XLSM files (to `xl/theme/theme1.xml` in the ZIP) +- Due to a bug in the program, some features like "Text to Columns" will crash + Excel on worksheets where error conditions are ignored. The writer will mark + files to ignore the error by default. Set `ignoreEC` to `false` to suppress. +- Due to the size of the data, the NUMBERS data is not included by default. The + included `xlsx.zahl.js` and `xlsx.zahl.mjs` scripts include the data. + +### Supported Output Formats + +For broad compatibility with third-party tools, this library supports many +output formats. The specific file type is controlled with `bookType` option: + +| `bookType` | file ext | container | sheets | Description | +| :--------- | -------: | :-------: | :----- |:------------------------------- | +| `xlsx` | `.xlsx` | ZIP | multi | Excel 2007+ XML Format | +| `xlsm` | `.xlsm` | ZIP | multi | Excel 2007+ Macro XML Format | +| `xlsb` | `.xlsb` | ZIP | multi | Excel 2007+ Binary Format | +| `biff8` | `.xls` | CFB | multi | Excel 97-2004 Workbook Format | +| `biff5` | `.xls` | CFB | multi | Excel 5.0/95 Workbook Format | +| `biff4` | `.xls` | none | single | Excel 4.0 Worksheet Format | +| `biff3` | `.xls` | none | single | Excel 3.0 Worksheet Format | +| `biff2` | `.xls` | none | single | Excel 2.0 Worksheet Format | +| `xlml` | `.xls` | none | multi | Excel 2003-2004 (SpreadsheetML) | +| `numbers` |`.numbers`| ZIP | single | Numbers 3.0+ Spreadsheet | +| `ods` | `.ods` | ZIP | multi | OpenDocument Spreadsheet | +| `fods` | `.fods` | none | multi | Flat OpenDocument Spreadsheet | +| `wk3` | `.wk3` | none | multi | Lotus Workbook (WK3) | +| `csv` | `.csv` | none | single | Comma Separated Values | +| `txt` | `.txt` | none | single | UTF-16 Unicode Text (TXT) | +| `sylk` | `.sylk` | none | single | Symbolic Link (SYLK) | +| `html` | `.html` | none | single | HTML Document | +| `dif` | `.dif` | none | single | Data Interchange Format (DIF) | +| `dbf` | `.dbf` | none | single | dBASE II + VFP Extensions (DBF) | +| `wk1` | `.wk1` | none | single | Lotus Worksheet (WK1) | +| `rtf` | `.rtf` | none | single | Rich Text Format (RTF) | +| `prn` | `.prn` | none | single | Lotus Formatted Text | +| `eth` | `.eth` | none | single | Ethercalc Record Format (ETH) | + +- `compression` only applies to formats with ZIP containers. +- Formats that only support a single sheet require a `sheet` option specifying + the worksheet. If the string is empty, the first worksheet is used. +- `writeFile` will automatically guess the output file format based on the file + extension if `bookType` is not specified. It will choose the first format in + the aforementioned table that matches the extension. + +### Output Type + +The `type` argument for `write` mirrors the `type` argument for `read`: + +| `type` | output | +|------------|-----------------------------------------------------------------| +| `"base64"` | string: Base64 encoding of the file | +| `"binary"` | string: binary string (byte `n` is `data.charCodeAt(n)`) | +| `"string"` | string: JS string (characters interpreted as UTF8) | +| `"buffer"` | nodejs Buffer | +| `"array"` | ArrayBuffer, fallback array of 8-bit unsigned int | +| `"file"` | string: path of file that will be created (nodejs only) | + +- For compatibility with Excel, `csv` output will always include the UTF-8 byte + order mark. + +## Utility Functions + +The `sheet_to_*` functions accept a worksheet and an optional options object. + +The `*_to_sheet` functions accept a data object and an optional options object. + +The examples are based on the following worksheet: + +``` +XXX| A | B | C | D | E | F | G | +---+---+---+---+---+---+---+---+ + 1 | S | h | e | e | t | J | S | + 2 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | + 3 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | +``` + +### Array of Arrays Input + +`XLSX.utils.aoa_to_sheet` takes an array of arrays of JS values and returns a +worksheet resembling the input data. Numbers, Booleans and Strings are stored +as the corresponding styles. Dates are stored as date or numbers. Array holes +and explicit `undefined` values are skipped. `null` values may be stubbed. All +other values are stored as strings. The function takes an options argument: + +| Option Name | Default | Description | +| :---------- | :-----: | :--------------------------------------------------- | +|`dateNF` | FMT 14 | Use specified date format in string output | +|`cellDates` | false | Store dates as type `d` (default is `n`) | +|`sheetStubs` | false | Create cell objects of type `z` for `null` values | +|`nullError` | false | If true, emit `#NULL!` error cells for `null` values | + +
+ Examples (click to show) + +To generate the example sheet: + +```js +var ws = XLSX.utils.aoa_to_sheet([ + "SheetJS".split(""), + [1,2,3,4,5,6,7], + [2,3,4,5,6,7,8] +]); +``` +
+ +`XLSX.utils.sheet_add_aoa` takes an array of arrays of JS values and updates an +existing worksheet object. It follows the same process as `aoa_to_sheet` and +accepts an options argument: + +| Option Name | Default | Description | +| :---------- | :-----: | :--------------------------------------------------- | +|`dateNF` | FMT 14 | Use specified date format in string output | +|`cellDates` | false | Store dates as type `d` (default is `n`) | +|`sheetStubs` | false | Create cell objects of type `z` for `null` values | +|`nullError` | false | If true, emit `#NULL!` error cells for `null` values | +|`origin` | | Use specified cell as starting point (see below) | + +`origin` is expected to be one of: + +| `origin` | Description | +| :--------------- | :-------------------------------------------------------- | +| (cell object) | Use specified cell (cell object) | +| (string) | Use specified cell (A1-style cell) | +| (number >= 0) | Start from the first column at specified row (0-indexed) | +| -1 | Append to bottom of worksheet starting on first column | +| (default) | Start from cell A1 | + + +
+ Examples (click to show) + +Consider the worksheet: + +``` +XXX| A | B | C | D | E | F | G | +---+---+---+---+---+---+---+---+ + 1 | S | h | e | e | t | J | S | + 2 | 1 | 2 | | | 5 | 6 | 7 | + 3 | 2 | 3 | | | 6 | 7 | 8 | + 4 | 3 | 4 | | | 7 | 8 | 9 | + 5 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | +``` + +This worksheet can be built up in the order `A1:G1, A2:B4, E2:G4, A5:G5`: + +```js +/* Initial row */ +var ws = XLSX.utils.aoa_to_sheet([ "SheetJS".split("") ]); + +/* Write data starting at A2 */ +XLSX.utils.sheet_add_aoa(ws, [[1,2], [2,3], [3,4]], {origin: "A2"}); + +/* Write data starting at E2 */ +XLSX.utils.sheet_add_aoa(ws, [[5,6,7], [6,7,8], [7,8,9]], {origin:{r:1, c:4}}); + +/* Append row */ +XLSX.utils.sheet_add_aoa(ws, [[4,5,6,7,8,9,0]], {origin: -1}); +``` + +
+ +### Array of Objects Input + +`XLSX.utils.json_to_sheet` takes an array of objects and returns a worksheet +with automatically-generated "headers" based on the keys of the objects. The +default column order is determined by the first appearance of the field using +`Object.keys`. The function accepts an options argument: + +| Option Name | Default | Description | +| :---------- | :-----: | :--------------------------------------------------- | +|`header` | | Use specified field order (default `Object.keys`) ** | +|`dateNF` | FMT 14 | Use specified date format in string output | +|`cellDates` | false | Store dates as type `d` (default is `n`) | +|`skipHeader` | false | If true, do not include header row in output | +|`nullError` | false | If true, emit `#NULL!` error cells for `null` values | + +- All fields from each row will be written. If `header` is an array and it does + not contain a particular field, the key will be appended to the array. +- Cell types are deduced from the type of each value. For example, a `Date` + object will generate a Date cell, while a string will generate a Text cell. +- Null values will be skipped by default. If `nullError` is true, an error cell + corresponding to `#NULL!` will be written to the worksheet. + +
+ Examples (click to show) + +The original sheet cannot be reproduced using plain objects since JS object keys +must be unique. After replacing the second `e` and `S` with `e_1` and `S_1`: + +```js +var ws = XLSX.utils.json_to_sheet([ + { S:1, h:2, e:3, e_1:4, t:5, J:6, S_1:7 }, + { S:2, h:3, e:4, e_1:5, t:6, J:7, S_1:8 } +], {header:["S","h","e","e_1","t","J","S_1"]}); +``` + +Alternatively, the header row can be skipped: + +```js +var ws = XLSX.utils.json_to_sheet([ + { A:"S", B:"h", C:"e", D:"e", E:"t", F:"J", G:"S" }, + { A: 1, B: 2, C: 3, D: 4, E: 5, F: 6, G: 7 }, + { A: 2, B: 3, C: 4, D: 5, E: 6, F: 7, G: 8 } +], {header:["A","B","C","D","E","F","G"], skipHeader:true}); +``` + +
+ +`XLSX.utils.sheet_add_json` takes an array of objects and updates an existing +worksheet object. It follows the same process as `json_to_sheet` and accepts +an options argument: + +| Option Name | Default | Description | +| :---------- | :-----: | :--------------------------------------------------- | +|`header` | | Use specified column order (default `Object.keys`) | +|`dateNF` | FMT 14 | Use specified date format in string output | +|`cellDates` | false | Store dates as type `d` (default is `n`) | +|`skipHeader` | false | If true, do not include header row in output | +|`nullError` | false | If true, emit `#NULL!` error cells for `null` values | +|`origin` | | Use specified cell as starting point (see below) | + +`origin` is expected to be one of: + +| `origin` | Description | +| :--------------- | :-------------------------------------------------------- | +| (cell object) | Use specified cell (cell object) | +| (string) | Use specified cell (A1-style cell) | +| (number >= 0) | Start from the first column at specified row (0-indexed) | +| -1 | Append to bottom of worksheet starting on first column | +| (default) | Start from cell A1 | + + +
+ Examples (click to show) + +Consider the worksheet: + +``` +XXX| A | B | C | D | E | F | G | +---+---+---+---+---+---+---+---+ + 1 | S | h | e | e | t | J | S | + 2 | 1 | 2 | | | 5 | 6 | 7 | + 3 | 2 | 3 | | | 6 | 7 | 8 | + 4 | 3 | 4 | | | 7 | 8 | 9 | + 5 | 4 | 5 | 6 | 7 | 8 | 9 | 0 | +``` + +This worksheet can be built up in the order `A1:G1, A2:B4, E2:G4, A5:G5`: + +```js +/* Initial row */ +var ws = XLSX.utils.json_to_sheet([ + { A: "S", B: "h", C: "e", D: "e", E: "t", F: "J", G: "S" } +], {header: ["A", "B", "C", "D", "E", "F", "G"], skipHeader: true}); + +/* Write data starting at A2 */ +XLSX.utils.sheet_add_json(ws, [ + { A: 1, B: 2 }, { A: 2, B: 3 }, { A: 3, B: 4 } +], {skipHeader: true, origin: "A2"}); + +/* Write data starting at E2 */ +XLSX.utils.sheet_add_json(ws, [ + { A: 5, B: 6, C: 7 }, { A: 6, B: 7, C: 8 }, { A: 7, B: 8, C: 9 } +], {skipHeader: true, origin: { r: 1, c: 4 }, header: [ "A", "B", "C" ]}); + +/* Append row */ +XLSX.utils.sheet_add_json(ws, [ + { A: 4, B: 5, C: 6, D: 7, E: 8, F: 9, G: 0 } +], {header: ["A", "B", "C", "D", "E", "F", "G"], skipHeader: true, origin: -1}); +``` + +
+ +### HTML Table Input + +`XLSX.utils.table_to_sheet` takes a table DOM element and returns a worksheet +resembling the input table. Numbers are parsed. All other data will be stored +as strings. + +`XLSX.utils.table_to_book` produces a minimal workbook based on the worksheet. + +Both functions accept options arguments: + +| Option Name | Default | Description | +| :---------- | :------: | :-------------------------------------------------- | +|`raw` | | If true, every cell will hold raw strings | +|`dateNF` | FMT 14 | Use specified date format in string output | +|`cellDates` | false | Store dates as type `d` (default is `n`) | +|`sheetRows` | 0 | If >0, read the first `sheetRows` rows of the table | +|`display` | false | If true, hidden rows and cells will not be parsed | + + +
+ Examples (click to show) + +To generate the example sheet, start with the HTML table: + +```html + + + + +
SheetJS
1234567
2345678
+``` + +To process the table: + +```js +var tbl = document.getElementById('sheetjs'); +var wb = XLSX.utils.table_to_book(tbl); +``` +
+ +Note: `XLSX.read` can handle HTML represented as strings. + + +`XLSX.utils.sheet_add_dom` takes a table DOM element and updates an existing +worksheet object. It follows the same process as `table_to_sheet` and accepts +an options argument: + +| Option Name | Default | Description | +| :---------- | :------: | :-------------------------------------------------- | +|`raw` | | If true, every cell will hold raw strings | +|`dateNF` | FMT 14 | Use specified date format in string output | +|`cellDates` | false | Store dates as type `d` (default is `n`) | +|`sheetRows` | 0 | If >0, read the first `sheetRows` rows of the table | +|`display` | false | If true, hidden rows and cells will not be parsed | + +`origin` is expected to be one of: + +| `origin` | Description | +| :--------------- | :-------------------------------------------------------- | +| (cell object) | Use specified cell (cell object) | +| (string) | Use specified cell (A1-style cell) | +| (number >= 0) | Start from the first column at specified row (0-indexed) | +| -1 | Append to bottom of worksheet starting on first column | +| (default) | Start from cell A1 | + + +
+ Examples (click to show) + +A small helper function can create gap rows between tables: + +```js +function create_gap_rows(ws, nrows) { + var ref = XLSX.utils.decode_range(ws["!ref"]); // get original range + ref.e.r += nrows; // add to ending row + ws["!ref"] = XLSX.utils.encode_range(ref); // reassign row +} + +/* first table */ +var ws = XLSX.utils.table_to_sheet(document.getElementById('table1')); +create_gap_rows(ws, 1); // one row gap after first table + +/* second table */ +XLSX.utils.sheet_add_dom(ws, document.getElementById('table2'), {origin: -1}); +create_gap_rows(ws, 3); // three rows gap after second table + +/* third table */ +XLSX.utils.sheet_add_dom(ws, document.getElementById('table3'), {origin: -1}); +``` + +
+ +### Formulae Output + +`XLSX.utils.sheet_to_formulae` generates an array of commands that represent +how a person would enter data into an application. Each entry is of the form +`A1-cell-address=formula-or-value`. String literals are prefixed with a `'` in +accordance with Excel. + +
+ Examples (click to show) + +For the example sheet: + +```js +> var o = XLSX.utils.sheet_to_formulae(ws); +> [o[0], o[5], o[10], o[15], o[20]]; +[ 'A1=\'S', 'F1=\'J', 'D2=4', 'B3=3', 'G3=8' ] +``` +
+ +### Delimiter-Separated Output + +As an alternative to the `writeFile` CSV type, `XLSX.utils.sheet_to_csv` also +produces CSV output. The function takes an options argument: + +| Option Name | Default | Description | +| :----------- | :------: | :------------------------------------------------- | +|`FS` | `","` | "Field Separator" delimiter between fields | +|`RS` | `"\n"` | "Record Separator" delimiter between rows | +|`dateNF` | FMT 14 | Use specified date format in string output | +|`strip` | false | Remove trailing field separators in each record ** | +|`blankrows` | true | Include blank lines in the CSV output | +|`skipHidden` | false | Skips hidden rows/columns in the CSV output | +|`forceQuotes` | false | Force quotes around fields | + +- `strip` will remove trailing commas from each line under default `FS/RS` +- `blankrows` must be set to `false` to skip blank lines. +- Fields containing the record or field separator will automatically be wrapped + in double quotes; `forceQuotes` forces all cells to be wrapped in quotes. +- `XLSX.write` with `csv` type will always prepend the UTF-8 byte-order mark for + Excel compatibility. `sheet_to_csv` returns a JS string and omits the mark. + Using `XLSX.write` with type `string` will also skip the mark. + + +
+ Examples (click to show) + +For the example sheet: + +```js +> console.log(XLSX.utils.sheet_to_csv(ws)); +S,h,e,e,t,J,S +1,2,3,4,5,6,7 +2,3,4,5,6,7,8 +> console.log(XLSX.utils.sheet_to_csv(ws, {FS:"\t"})); +S h e e t J S +1 2 3 4 5 6 7 +2 3 4 5 6 7 8 +> console.log(XLSX.utils.sheet_to_csv(ws,{FS:":",RS:"|"})); +S:h:e:e:t:J:S|1:2:3:4:5:6:7|2:3:4:5:6:7:8| +``` +
+ +#### UTF-16 Unicode Text + +The `txt` output type uses the tab character as the field separator. If the +`codepage` library is available (included in full distribution but not core), +the output will be encoded in `CP1200` and the BOM will be prepended. + +`XLSX.utils.sheet_to_txt` takes the same arguments as `sheet_to_csv`. + +### HTML Output + +As an alternative to the `writeFile` HTML type, `XLSX.utils.sheet_to_html` also +produces HTML output. The function takes an options argument: + +| Option Name | Default | Description | +| :---------- | :------: | :-------------------------------------------------- | +|`id` | | Specify the `id` attribute for the `TABLE` element | +|`editable` | false | If true, set `contenteditable="true"` for every TD | +|`header` | | Override header (default `html body`) | +|`footer` | | Override footer (default `/body /html`) | + +
+ Examples (click to show) + +For the example sheet: + +```js +> console.log(XLSX.utils.sheet_to_html(ws)); +// ... +``` +
+ +### JSON + +`XLSX.utils.sheet_to_json` generates different types of JS objects. The function +takes an options argument: + +| Option Name | Default | Description | +| :---------- | :------: | :-------------------------------------------------- | +|`raw` | `true` | Use raw values (true) or formatted strings (false) | +|`range` | from WS | Override Range (see table below) | +|`header` | | Control output format (see table below) | +|`dateNF` | FMT 14 | Use specified date format in string output | +|`defval` | | Use specified value in place of null or undefined | +|`blankrows` | ** | Include blank lines in the output ** | + +- `raw` only affects cells which have a format code (`.z`) field or a formatted + text (`.w`) field. +- If `header` is specified, the first row is considered a data row; if `header` + is not specified, the first row is the header row and not considered data. +- When `header` is not specified, the conversion will automatically disambiguate + header entries by affixing `_` and a count starting at `1`. For example, if + three columns have header `foo` the output fields are `foo`, `foo_1`, `foo_2` +- `null` values are returned when `raw` is true but are skipped when false. +- If `defval` is not specified, null and undefined values are skipped normally. + If specified, all null and undefined points will be filled with `defval` +- When `header` is `1`, the default is to generate blank rows. `blankrows` must + be set to `false` to skip blank rows. +- When `header` is not `1`, the default is to skip blank rows. `blankrows` must + be true to generate blank rows + +`range` is expected to be one of: + +| `range` | Description | +| :--------------- | :-------------------------------------------------------- | +| (number) | Use worksheet range but set starting row to the value | +| (string) | Use specified range (A1-style bounded range string) | +| (default) | Use worksheet range (`ws['!ref']`) | + +`header` is expected to be one of: + +| `header` | Description | +| :--------------- | :-------------------------------------------------------- | +| `1` | Generate an array of arrays ("2D Array") | +| `"A"` | Row object keys are literal column labels | +| array of strings | Use specified strings as keys in row objects | +| (default) | Read and disambiguate first row as keys | + +- If header is not `1`, the row object will contain the non-enumerable property + `__rowNum__` that represents the row of the sheet corresponding to the entry. +- If header is an array, the keys will not be disambiguated. This can lead to + unexpected results if the array values are not unique! + + +
+ Examples (click to show) + +For the example sheet: + +```js +> XLSX.utils.sheet_to_json(ws); +[ { S: 1, h: 2, e: 3, e_1: 4, t: 5, J: 6, S_1: 7 }, + { S: 2, h: 3, e: 4, e_1: 5, t: 6, J: 7, S_1: 8 } ] + +> XLSX.utils.sheet_to_json(ws, {header:"A"}); +[ { A: 'S', B: 'h', C: 'e', D: 'e', E: 't', F: 'J', G: 'S' }, + { A: '1', B: '2', C: '3', D: '4', E: '5', F: '6', G: '7' }, + { A: '2', B: '3', C: '4', D: '5', E: '6', F: '7', G: '8' } ] + +> XLSX.utils.sheet_to_json(ws, {header:["A","E","I","O","U","6","9"]}); +[ { '6': 'J', '9': 'S', A: 'S', E: 'h', I: 'e', O: 'e', U: 't' }, + { '6': '6', '9': '7', A: '1', E: '2', I: '3', O: '4', U: '5' }, + { '6': '7', '9': '8', A: '2', E: '3', I: '4', O: '5', U: '6' } ] + +> XLSX.utils.sheet_to_json(ws, {header:1}); +[ [ 'S', 'h', 'e', 'e', 't', 'J', 'S' ], + [ '1', '2', '3', '4', '5', '6', '7' ], + [ '2', '3', '4', '5', '6', '7', '8' ] ] +``` + +Example showing the effect of `raw`: + +```js +> ws['A2'].w = "3"; // set A2 formatted string value + +> XLSX.utils.sheet_to_json(ws, {header:1, raw:false}); +[ [ 'S', 'h', 'e', 'e', 't', 'J', 'S' ], + [ '3', '2', '3', '4', '5', '6', '7' ], // <-- A2 uses the formatted string + [ '2', '3', '4', '5', '6', '7', '8' ] ] + +> XLSX.utils.sheet_to_json(ws, {header:1}); +[ [ 'S', 'h', 'e', 'e', 't', 'J', 'S' ], + [ 1, 2, 3, 4, 5, 6, 7 ], // <-- A2 uses the raw value + [ 2, 3, 4, 5, 6, 7, 8 ] ] +``` +
+ +## File Formats + +Despite the library name `xlsx`, it supports numerous spreadsheet file formats: + +| Format | Read | Write | +|:-------------------------------------------------------------|:-----:|:-----:| +| **Excel Worksheet/Workbook Formats** |:-----:|:-----:| +| Excel 2007+ XML Formats (XLSX/XLSM) | ✔ | ✔ | +| Excel 2007+ Binary Format (XLSB BIFF12) | ✔ | ✔ | +| Excel 2003-2004 XML Format (XML "SpreadsheetML") | ✔ | ✔ | +| Excel 97-2004 (XLS BIFF8) | ✔ | ✔ | +| Excel 5.0/95 (XLS BIFF5) | ✔ | ✔ | +| Excel 4.0 (XLS/XLW BIFF4) | ✔ | ✔ | +| Excel 3.0 (XLS BIFF3) | ✔ | ✔ | +| Excel 2.0/2.1 (XLS BIFF2) | ✔ | ✔ | +| **Excel Supported Text Formats** |:-----:|:-----:| +| Delimiter-Separated Values (CSV/TXT) | ✔ | ✔ | +| Data Interchange Format (DIF) | ✔ | ✔ | +| Symbolic Link (SYLK/SLK) | ✔ | ✔ | +| Lotus Formatted Text (PRN) | ✔ | ✔ | +| UTF-16 Unicode Text (TXT) | ✔ | ✔ | +| **Other Workbook/Worksheet Formats** |:-----:|:-----:| +| Numbers 3.0+ / iWork 2013+ Spreadsheet (NUMBERS) | ✔ | ✔ | +| OpenDocument Spreadsheet (ODS) | ✔ | ✔ | +| Flat XML ODF Spreadsheet (FODS) | ✔ | ✔ | +| Uniform Office Format Spreadsheet (标文通 UOS1/UOS2) | ✔ | | +| dBASE II/III/IV / Visual FoxPro (DBF) | ✔ | ✔ | +| Lotus 1-2-3 (WK1/WK3) | ✔ | ✔ | +| Lotus 1-2-3 (WKS/WK2/WK4/123) | ✔ | | +| Quattro Pro Spreadsheet (WQ1/WQ2/WB1/WB2/WB3/QPW) | ✔ | | +| Works 1.x-3.x DOS / 2.x-5.x Windows Spreadsheet (WKS) | ✔ | | +| Works 6.x-9.x Spreadsheet (XLR) | ✔ | | +| **Other Common Spreadsheet Output Formats** |:-----:|:-----:| +| HTML Tables | ✔ | ✔ | +| Rich Text Format tables (RTF) | | ✔ | +| Ethercalc Record Format (ETH) | ✔ | ✔ | + +Features not supported by a given file format will not be written. Formats with +range limits will be silently truncated: + +| Format | Last Cell | Max Cols | Max Rows | +|:------------------------------------------|:-----------|---------:|---------:| +| Excel 2007+ XML Formats (XLSX/XLSM) | XFD1048576 | 16384 | 1048576 | +| Excel 2007+ Binary Format (XLSB BIFF12) | XFD1048576 | 16384 | 1048576 | +| Excel 97-2004 (XLS BIFF8) | IV65536 | 256 | 65536 | +| Excel 5.0/95 (XLS BIFF5) | IV16384 | 256 | 16384 | +| Excel 4.0 (XLS BIFF4) | IV16384 | 256 | 16384 | +| Excel 3.0 (XLS BIFF3) | IV16384 | 256 | 16384 | +| Excel 2.0/2.1 (XLS BIFF2) | IV16384 | 256 | 16384 | +| Lotus 1-2-3 R2 - R5 (WK1/WK3/WK4) | IV8192 | 256 | 8192 | +| Lotus 1-2-3 R1 (WKS) | IV2048 | 256 | 2048 | + +Excel 2003 SpreadsheetML range limits are governed by the version of Excel and +are not enforced by the writer. + +
+ File Format Details (click to show) + +**Core Spreadsheet Formats** + +- **Excel 2007+ XML (XLSX/XLSM)** + +XLSX and XLSM files are ZIP containers containing a series of XML files in +accordance with the Open Packaging Conventions (OPC). The XLSM format, almost +identical to XLSX, is used for files containing macros. + +The format is standardized in ECMA-376 and later in ISO/IEC 29500. Excel does +not follow the specification, and there are additional documents discussing how +Excel deviates from the specification. + +- **Excel 2.0-95 (BIFF2/BIFF3/BIFF4/BIFF5)** + +BIFF 2/3 XLS are single-sheet streams of binary records. Excel 4 introduced +the concept of a workbook (`XLW` files) but also had single-sheet `XLS` format. +The structure is largely similar to the Lotus 1-2-3 file formats. BIFF5/8/12 +extended the format in various ways but largely stuck to the same record format. + +There is no official specification for any of these formats. Excel 95 can write +files in these formats, so record lengths and fields were determined by writing +in all of the supported formats and comparing files. Excel 2016 can generate +BIFF5 files, enabling a full suite of file tests starting from XLSX or BIFF2. + +- **Excel 97-2004 Binary (BIFF8)** + +BIFF8 exclusively uses the Compound File Binary container format, splitting some +content into streams within the file. At its core, it still uses an extended +version of the binary record format from older versions of BIFF. + +The `MS-XLS` specification covers the basics of the file format, and other +specifications expand on serialization of features like properties. + +- **Excel 2003-2004 (SpreadsheetML)** + +Predating XLSX, SpreadsheetML files are simple XML files. There is no official +and comprehensive specification, although MS has released documentation on the +format. Since Excel 2016 can generate SpreadsheetML files, mapping features is +pretty straightforward. + +- **Excel 2007+ Binary (XLSB, BIFF12)** + +Introduced in parallel with XLSX, the XLSB format combines the BIFF architecture +with the content separation and ZIP container of XLSX. For the most part nodes +in an XLSX sub-file can be mapped to XLSB records in a corresponding sub-file. + +The `MS-XLSB` specification covers the basics of the file format, and other +specifications expand on serialization of features like properties. + +- **Delimiter-Separated Values (CSV/TXT)** + +Excel CSV deviates from RFC4180 in a number of important ways. The generated +CSV files should generally work in Excel although they may not work in RFC4180 +compatible readers. The parser should generally understand Excel CSV. The +writer proactively generates cells for formulae if values are unavailable. + +Excel TXT uses tab as the delimiter and code page 1200. + +Like in Excel, files starting with `0x49 0x44 ("ID")` are treated as Symbolic +Link files. Unlike Excel, if the file does not have a valid SYLK header, it +will be proactively reinterpreted as CSV. There are some files with semicolon +delimiter that align with a valid SYLK file. For the broadest compatibility, +all cells with the value of `ID` are automatically wrapped in double-quotes. + +**Miscellaneous Workbook Formats** + +Support for other formats is generally far behind XLS/XLSB/XLSX support, due in +part to a lack of publicly available documentation. Test files were produced in +the respective apps and compared to their XLS exports to determine structure. +The main focus is data extraction. + +- **Lotus 1-2-3 (WKS/WK1/WK2/WK3/WK4/123)** + +The Lotus formats consist of binary records similar to the BIFF structure. Lotus +did release a specification decades ago covering the original WK1 format. Other +features were deduced by producing files and comparing to Excel support. + +Generated WK1 worksheets are compatible with Lotus 1-2-3 R2 and Excel 5.0. + +Generated WK3 workbooks are compatible with Lotus 1-2-3 R9 and Excel 5.0. + +- **Quattro Pro (WQ1/WQ2/WB1/WB2/WB3/QPW)** + +The Quattro Pro formats use binary records in the same way as BIFF and Lotus. +Some of the newer formats (namely WB3 and QPW) use a CFB enclosure just like +BIFF8 XLS. + +- **Works for DOS / Windows Spreadsheet (WKS/XLR)** + +All versions of Works were limited to a single worksheet. + +Works for DOS 1.x - 3.x and Works for Windows 2.x extends the Lotus WKS format +with additional record types. + +Works for Windows 3.x - 5.x uses the same format and WKS extension. The BOF +record has type `FF` + +Works for Windows 6.x - 9.x use the XLR format. XLR is nearly identical to +BIFF8 XLS: it uses the CFB container with a Workbook stream. Works 9 saves the +exact Workbook stream for the XLR and the 97-2003 XLS export. Works 6 XLS +includes two empty worksheets but the main worksheet has an identical encoding. +XLR also includes a `WksSSWorkBook` stream similar to Lotus FM3/FMT files. + +- **Numbers 3.0+ / iWork 2013+ Spreadsheet (NUMBERS)** + +iWork 2013 (Numbers 3.0 / Pages 5.0 / Keynote 6.0) switched from a proprietary +XML-based format to the current file format based on the iWork Archive (IWA). +This format has been used up through the current release (Numbers 11.2). + +The parser focuses on extracting raw data from tables. Numbers technically +supports multiple tables in a logical worksheet, including custom titles. This +parser will generate one worksheet per Numbers table. + +The writer currently exports a small range from the first worksheet. + +- **OpenDocument Spreadsheet (ODS/FODS)** + +ODS is an XML-in-ZIP format akin to XLSX while FODS is an XML format akin to +SpreadsheetML. Both are detailed in the OASIS standard, but tools like LO/OO +add undocumented extensions. The parsers and writers do not implement the full +standard, instead focusing on parts necessary to extract and store raw data. + +- **Uniform Office Spreadsheet (UOS1/2)** + +UOS is a very similar format, and it comes in 2 varieties corresponding to ODS +and FODS respectively. For the most part, the difference between the formats +is in the names of tags and attributes. + +**Miscellaneous Worksheet Formats** + +Many older formats supported only one worksheet: + +- **dBASE and Visual FoxPro (DBF)** + +DBF is really a typed table format: each column can only hold one data type and +each record omits type information. The parser generates a header row and +inserts records starting at the second row of the worksheet. The writer makes +files compatible with Visual FoxPro extensions. + +Multi-file extensions like external memos and tables are currently unsupported, +limited by the general ability to read arbitrary files in the web browser. The +reader understands DBF Level 7 extensions like DATETIME. + +- **Symbolic Link (SYLK)** + +There is no real documentation. All knowledge was gathered by saving files in +various versions of Excel to deduce the meaning of fields. Notes: + +- Plain formulae are stored in the RC form. +- Column widths are rounded to integral characters. + +- **Lotus Formatted Text (PRN)** + +There is no real documentation, and in fact Excel treats PRN as an output-only +file format. Nevertheless we can guess the column widths and reverse-engineer +the original layout. Excel's 240 character width limitation is not enforced. + +- **Data Interchange Format (DIF)** + +There is no unified definition. Visicalc DIF differs from Lotus DIF, and both +differ from Excel DIF. Where ambiguous, the parser/writer follows the expected +behavior from Excel. In particular, Excel extends DIF in incompatible ways: + +- Since Excel automatically converts numbers-as-strings to numbers, numeric + string constants are converted to formulae: `"0.3" -> "=""0.3""` +- DIF technically expects numeric cells to hold the raw numeric data, but Excel + permits formatted numbers (including dates) +- DIF technically has no support for formulae, but Excel will automatically + convert plain formulae. Array formulae are not preserved. + +- **HTML** + +Excel HTML worksheets include special metadata encoded in styles. For example, +`mso-number-format` is a localized string containing the number format. Despite +the metadata the output is valid HTML, although it does accept bare `&` symbols. + +The writer adds type metadata to the TD elements via the `t` tag. The parser +looks for those tags and overrides the default interpretation. For example, text +like `12345` will be parsed as numbers but `12345` will +be parsed as text. + +- **Rich Text Format (RTF)** + +Excel RTF worksheets are stored in clipboard when copying cells or ranges from a +worksheet. The supported codes are a subset of the Word RTF support. + +- **Ethercalc Record Format (ETH)** + +[Ethercalc](https://ethercalc.net/) is an open source web spreadsheet powered by +a record format reminiscent of SYLK wrapped in a MIME multi-part message. + +
+ + +## Testing + +### Node + +
+ (click to show) + +`make test` will run the node-based tests. By default it runs tests on files in +every supported format. To test a specific file type, set `FMTS` to the format +you want to test. Feature-specific tests are available with `make test_misc` + +```bash +$ make test_misc # run core tests +$ make test # run full tests +$ make test_xls # only use the XLS test files +$ make test_xlsx # only use the XLSX test files +$ make test_xlsb # only use the XLSB test files +$ make test_xml # only use the XML test files +$ make test_ods # only use the ODS test files +``` + +To enable all errors, set the environment variable `WTF=1`: + +```bash +$ make test # run full tests +$ WTF=1 make test # enable all error messages +``` + +`flow` and `eslint` checks are available: + +```bash +$ make lint # eslint checks +$ make flow # make lint + Flow checking +$ make tslint # check TS definitions +``` + +
+ +### Browser + +
+ (click to show) + +The core in-browser tests are available at `tests/index.html` within this repo. +Start a local server and navigate to that directory to run the tests. +`make ctestserv` will start a server on port 8000. + +`make ctest` will generate the browser fixtures. To add more files, edit the +`tests/fixtures.lst` file and add the paths. + +To run the full in-browser tests, clone the repo for +[`oss.sheetjs.com`](https://github.com/SheetJS/SheetJS.github.io) and replace +the `xlsx.js` file (then open a browser window and go to `stress.html`): + +```bash +$ cp xlsx.js ../SheetJS.github.io +$ cd ../SheetJS.github.io +$ simplehttpserver # or "python -mSimpleHTTPServer" or "serve" +$ open -a Chromium.app http://localhost:8000/stress.html +``` +
+ +### Tested Environments + +
+ (click to show) + + - NodeJS `0.8`, `0.10`, `0.12`, `4.x`, `5.x`, `6.x`, `7.x`, `8.x` + - IE 6/7/8/9/10/11 (IE 6-9 require shims) + - Chrome 24+ (including Android 4.0+) + - Safari 6+ (iOS and Desktop) + - Edge 13+, FF 18+, and Opera 12+ + +Tests utilize the mocha testing framework. + + - for XLS\* modules using Sauce Labs + +The test suite also includes tests for various time zones. To change +the timezone locally, set the TZ environment variable: + +```bash +$ env TZ="Asia/Kolkata" WTF=1 make test_misc +``` + +
+ +### Test Files + +Test files are housed in [another repo](https://github.com/SheetJS/test_files). + +Running `make init` will refresh the `test_files` submodule and get the files. +Note that this requires `svn`, `git`, `hg` and other commands that may not be +available. If `make init` fails, please download the latest version of the test +files snapshot from [the repo](https://github.com/SheetJS/test_files/releases) + +
+ Latest Snapshot (click to show) + +Latest test files snapshot: + + +(download and unzip to the `test_files` subdirectory) + +
+ +## Contributing + +Due to the precarious nature of the Open Specifications Promise, it is very +important to ensure code is cleanroom. [Contribution Notes](CONTRIBUTING.md) + +
+ File organization (click to show) + +At a high level, the final script is a concatenation of the individual files in +the `bits` folder. Running `make` should reproduce the final output on all +platforms. The README is similarly split into bits in the `docbits` folder. + +Folders: + +| folder | contents | +|:-------------|:--------------------------------------------------------------| +| `bits` | raw source files that make up the final script | +| `docbits` | raw markdown files that make up `README.md` | +| `bin` | server-side bin scripts (`xlsx.njs`) | +| `dist` | dist files for web browsers and nonstandard JS environments | +| `demos` | demo projects for platforms like ExtendScript and Webpack | +| `tests` | browser tests (run `make ctest` to rebuild) | +| `types` | typescript definitions and tests | +| `misc` | miscellaneous supporting scripts | +| `test_files` | test files (pulled from the test files repository) | + +
+ +After cloning the repo, running `make help` will display a list of commands. + +### OSX/Linux + +
+ (click to show) + +The `xlsx.js` file is constructed from the files in the `bits` subdirectory. The +build script (run `make`) will concatenate the individual bits to produce the +script. Before submitting a contribution, ensure that running make will produce +the `xlsx.js` file exactly. The simplest way to test is to add the script: + +```bash +$ git add xlsx.js +$ make clean +$ make +$ git diff xlsx.js +``` + +To produce the dist files, run `make dist`. The dist files are updated in each +version release and *should not be committed between versions*. +
+ +### Windows + +
+ (click to show) + +The included `make.cmd` script will build `xlsx.js` from the `bits` directory. +Building is as simple as: + +```cmd +> make +``` + +To prepare development environment: + +```cmd +> make init +``` + +The full list of commands available in Windows are displayed in `make help`: + +``` +make init -- install deps and global modules +make lint -- run eslint linter +make test -- run mocha test suite +make misc -- run smaller test suite +make book -- rebuild README and summary +make help -- display this message +``` + +As explained in [Test Files](#test-files), on Windows the release ZIP file must +be downloaded and extracted. If Bash on Windows is available, it is possible +to run the OSX/Linux workflow. The following steps prepares the environment: + +```bash +# Install support programs for the build and test commands +sudo apt-get install make git subversion mercurial + +# Install nodejs and NPM within the WSL +wget -qO- https://deb.nodesource.com/setup_8.x | sudo bash +sudo apt-get install nodejs + +# Install dev dependencies +sudo npm install -g mocha voc blanket xlsjs +``` + +
+ +### Tests + +
+ (click to show) + +The `test_misc` target (`make test_misc` on Linux/OSX / `make misc` on Windows) +runs the targeted feature tests. It should take 5-10 seconds to perform feature +tests without testing against the entire test battery. New features should be +accompanied with tests for the relevant file formats and features. + +For tests involving the read side, an appropriate feature test would involve +reading an existing file and checking the resulting workbook object. If a +parameter is involved, files should be read with different values to verify that +the feature is working as expected. + +For tests involving a new write feature which can already be parsed, appropriate +feature tests would involve writing a workbook with the feature and then opening +and verifying that the feature is preserved. + +For tests involving a new write feature without an existing read ability, please +add a feature test to the kitchen sink `tests/write.js`. +
+ +## License + +Please consult the attached LICENSE file for details. All rights not explicitly +granted by the Apache 2.0 License are reserved by the Original Author. + + +## References + +
+ OSP-covered Specifications (click to show) + + - `MS-CFB`: Compound File Binary File Format + - `MS-CTXLS`: Excel Custom Toolbar Binary File Format + - `MS-EXSPXML3`: Excel Calculation Version 2 Web Service XML Schema + - `MS-ODATA`: Open Data Protocol (OData) + - `MS-ODRAW`: Office Drawing Binary File Format + - `MS-ODRAWXML`: Office Drawing Extensions to Office Open XML Structure + - `MS-OE376`: Office Implementation Information for ECMA-376 Standards Support + - `MS-OFFCRYPTO`: Office Document Cryptography Structure + - `MS-OI29500`: Office Implementation Information for ISO/IEC 29500 Standards Support + - `MS-OLEDS`: Object Linking and Embedding (OLE) Data Structures + - `MS-OLEPS`: Object Linking and Embedding (OLE) Property Set Data Structures + - `MS-OODF3`: Office Implementation Information for ODF 1.2 Standards Support + - `MS-OSHARED`: Office Common Data Types and Objects Structures + - `MS-OVBA`: Office VBA File Format Structure + - `MS-XLDM`: Spreadsheet Data Model File Format + - `MS-XLS`: Excel Binary File Format (.xls) Structure Specification + - `MS-XLSB`: Excel (.xlsb) Binary File Format + - `MS-XLSX`: Excel (.xlsx) Extensions to the Office Open XML SpreadsheetML File Format + - `XLS`: Microsoft Office Excel 97-2007 Binary File Format Specification + - `RTF`: Rich Text Format + +
+ +- ISO/IEC 29500:2012(E) "Information technology — Document description and processing languages — Office Open XML File Formats" +- Open Document Format for Office Applications Version 1.2 (29 September 2011) +- Worksheet File Format (From Lotus) December 1984 diff --git a/node_modules/xlsx/bower.json b/node_modules/xlsx/bower.json new file mode 100644 index 000000000..ec587d2a3 --- /dev/null +++ b/node_modules/xlsx/bower.json @@ -0,0 +1,22 @@ +{ + "name": "js-xlsx", + "homepage": "https://github.com/SheetJS/js-xlsx", + "main": ["xlsx.js"], + "ignore": [ + "bin", + "bits", + "misc", + "**/.*" + ], + "keywords": [ + "excel", + "xls", + "xml", + "xlsx", + "xlsm", + "xlsb", + "ods", + "js-xls", + "js-xlsx" + ] +} diff --git a/node_modules/xlsx/formats.png b/node_modules/xlsx/formats.png new file mode 100644 index 0000000000000000000000000000000000000000..dd478aa58ce856b72751689a07b5ec0cf5668a19 GIT binary patch literal 208619 zcmXuKbwE_#^FRDn1SAYvT3SFrx4v3yN$CdZ2BjP6a^X3CzR&Lu z5tildJ?GAunO97xvZB-rbRzWs{`>ERjI_AwfB!xG1pY}qM***JckLVe_ut$9WW+_( zJ<|_YJem?_7OoMm+P+=9R85FN!HvoN?E36|_8SZ$WtC7O1>DF`{lgGrq-VI*Kf|Bq zaump-J}HoKfUe%(KCmu%#qG4ooh_fvQlGa)@m}e<)Ys1%KyRHI5-BJ}!*JHUVOqDRH_;De{%%MfDN0 zKy9r{3SvZmd5zl?rXsyeu__G2Uo=Zbdiky>J%Y_TKX$(qmZx~uY)C|xQ8ytu%#RJ_86~f2dRxc}bmvf7Af0fl5oTs5PyfKOR_L6T79>rH$ zki_hg>U)OR+;E;&aq#SJY_A_-E6Q-6)h@47)prAnGh?2TX9xQe#J&6rr5BHT(UN!b z=SQTLqpK*7&Ez%KetGs$qhL}eaRaXz6)El&z1^;?R;7PCfBSzsPfcjw#NAd>-N#UB z8B8ikSdeCI?;PKSem~z&cAkdTwa9Rb4Ub?SdxnFnCjXLmd4D!b zzN)NomC=B8*^vM~K(n_baDFkZCP~3eY0e({c{+EjS&FW6M( zhVdPg=~%;;x7-)4LMZ$X8fyl(DPDQa*0K$n=Ev3ym1elRFWJ>iq*<3{e=STat?DAO zdUm%DtL`g>*$3h!X&1&y7N!;^sHRzd{eH7w-WbIPV%{u?Mq*?~sIeFS{>Wp5m3Px| zgf-gxf}D$tF8xnc@F>?3p#>(pJnvS%4Ew;_j&pu(Q`Sjo_|~kd99_n=reTJghA5iP z(Pi44z_HVZuIFBx6RL7HWvu-qFF2G%ki*}f)mMV`S9*;;#lTe^08tXisQ2rswizP$ zk_D_#n5Bg86F4?dml4*vmQ_sl&3GjUMDReHb6Q!?DY<2t7K+K*V`m?)z!mMYEJhY5 zLz{J{{`{!Ur3_WmghL_-?@-RkA>4JsqZ``2pgV+q?r|@6od2Zj%#u z-CERkMVq#pVq))_7s-`oTSL6^F3Z>8vXr^`UG``A_M%l$6yMiZe#H%or6uNZGTB}n z-1f^nn!@h&yyIg|hX*FJS|(eAi5f5TX*suwKm?23$AM!G*gqO(NZTusCO?)y5xHYVJ!%Lf34Zc`Yq5lvRG3Yt;u8q9D=Uy_QM0;f=Fvh=dmO(Y@y6-<#Jws$ejT;Q4l%Zp54$FNj$vtp)#&TwzM#9 z)w`ve)Op~E!IiUWgorSr?x!egZ{75yWgZAukaX=^9*N4lzcH zPyPU*C`HD9_$PII`PiNM83dIyZXqKtLRFD>2GTgI!#+9<(fku(;W`6(f}HNIBa9F@ zG-52PTJ?UxnPBLD;-$n?zr3#z?LGaR3Z%9FkbJio?+@<-9=D1>6|dIo@oqUh3uKvAQ_?o``-PMUao5fnb`8jGnW58cnM_>uN7&6>HO>BR z3m)|e$i&movMPAVH$WLK;e$`F2d}EYYi7`?FCP2G*K%BVfUEw~d079@c$C@B{LimW zW=pp(`r+>I@>RRlv!ts|~0!fi?d`XUl+G$cHA#~h6E+A-?*i-~^6Zm>B4e^9HY z6zS4$9QrqW)_f+ygNXKZ*M^vVCf)9WxLtpWu=b|APC{4ZoAFTz^P~6}V3^yf7Fm8e zR%X$HLZM3PZ!|kiq6G_AYL5~gn(HQI`PW0}1agWpx#mA5LP}v35o|)|pjg1C3#6Yn zbGLz-|xeS|I5P z-OGRIL}pgjcgwn!*U-l4+*p|9iP`zg)ZLhJeJh~LX6q!e#>lZWHBtwk+H7V{X4K2c z{<;liVMd2#>YCk+?76Ei<*2u-mX_|@7{ao@5?S-O?#8gn^}h=c@v(qV zlgqo3e?pZKRAv1xAu19MZJ>9snp9Wre$02iS{b^ z=gpFhg5cexQ9SD|S+KGi41LQm`l|(yqd?X~6>iE|d0`N6=SFv)p}rR@+ibpTy^$F? zmLv=-ND8AjkK{B@Py5~e_nMH;wb(c#%xh=c1GB@YsoJNXp*TBSAM;9M`5<^k_|47z zm%D(uwO($6!g+3SmOs>p~EVS>Xx)$;Ga(MF`)<@0Yd= zLCywuJ|hJYXJWn~x5}psE6$68Z{Kyk@;{mb@txs@&S3cifmC<+b8?zSZDoVZBAxZ@ zhcpC36QZGQHRXat>+ueZ0GU+C0guwuMtr zuYv7pZZNt3JbBjNJS<7-jUo*lkTm@_xTE+hqJ0gjyYz{>j zM)m91jDF}wBKy$!th_ExNyufSdP>o*UP3eiPhGjTb+iuN80oKcS^Fyo`6Vfz>Ba7Z z0sn29Vd7mPCfjaNmU$X|UIeWmG=;-7j<5r2biO@$x0gJEEvSAHL&EDke|}0v%IBec zH&@_yF(Tz`K4z6_Hmj9aJ0{)J;`USI3G(t5GyhTDoB@36L1tS9-~oS~|EmR5{;t(4 z`x<76Zp%*OcgiM_iK;`?@tZMXY6_tESi|&p_&{~&L?JY*^I5j1TmLR;LS&^}_T>u_ z3XyS0nwK?S^FwjB#VemF=tIoytDyw?jq04}1#fqljlPX_P>Hp^w%pcwV!3v0AHJ?U z*Fx`_p6&Rm;HvOlJOA<%(UcCi_E{Z}s9$j1OeP;Y2FtT~El!bL7KhRf(Phc$ftG3L z?YFhN@_0p^PhZTE5Je_u-|6%=h_Y@+0-4oCkZsB@BOT)G2PE(pEc31w?^myD>V}P% zr#3c+lgFu|1=ce#Pm1e{l1jH=L{|AVL(SlwSvt0I4@`wGG78m-6m`~?7jIhnVNH#> zp|t3~ABayp5SMeXyN{4pjs9Bxw|2Foo*OHBiXY}bCBx+j%?@jZRpkT^jX-DAn~>!> z`!6vTy*(da`TP%toH))Kfj`%_;GF(Q*}ew?AkA7P)+w0(eeDPXtZrKMIb)gQk0+#V z)4u{y()<^vSB{g;3(|=^>EGDMt2uHy zw&yV*bNDjyfZKgFaA&U|*+RfXDv(rGPo=A=Z$o~NueaKypJc@QC;95_H-^%At0K@) zcazo(?GujQl&|R+hcY!#ODu_El-Fwz=$j_a=-3=J8k$5tb_Z4x=z!*($TB;Ga=-N8 zGm_9nj_^G@Hb#sRxBe@^!-l2jRJLsaFc6wrHKw7llBLCzs66U7F?mtVeVnuD1{-tb z{&sf>d!eG$m(hE?^+n4jE;iE*v2-1tlYyzsuIEVHu;tbof#I`vGua6^ik?%@%s5?Y%pPbda zTvFmaU$tH%8Gk(EW$D4FW}fXWQ7bYQvkiHe5O(ja(86Lg?g_;@9bI);A4z4$!kS?B z?mOin!@_dt)vbPqPjkY~RM_itYEW|oKJYLa0p3A(*Hfy6cVMi45w+^XrU-85`qU3I zSAEL;min|HgzQlnM*0n%`Y2 zYZr&#SV~;{FYCh_s{W{mmAy9JS)@?xfpn`pz1pboUbz&vQ)O&41o7U5_ z!J-H@(Ki-)HPQ@d;lFq`)Rjf}k4zILh7H_XmbMb6ocjF^O_=J{)m6s56g^hj&bk=A zFZa#9AnUYE%PxNBz-VBqs=ZQ#uxljJtI=+SCpE5b;RU^TvmHz&-1Iw)IKrM)riabWeIb(eH9m4Q`yZb0Vgq#Yvoevfni6SVVD;av%i+i3rZW<@!a|D1LOB?82 zb#1Fh*tQbXB=BlSz=|c5@Hw4#rF}||s~vYmO{600`OocF_&vBc5fsiz<5o?-ha|P@ zbCcj0JKmQ|nu*H>lQ#W^wSxEVX0nMYHL@}r4bkkb2<5<+_>+&e0jOiVZ^dRXz4d3q zZOa7eCacJU;I-Qs0NQ$u)4`6Txpa&IXVjZdPOG05H z-W)2bbPZ(u5i!YrLAs)e2Zpj|gm^Em9J5gSsyAJF3@hFw6l4v& zl8$*?`iH>5cX`Xs!<69>Y&tfemj*rVVU5qqL4{j+UKA)N*s{e1NoGmBzrX)IgJsq? zhm*BP*D8*3!0STS32;4fPtlS&TjdYYv+hYE;64$^82Fw?(7D6Zrv9)>4Ia1O^aW## zG}p7s_D#Q0SR#D~tJYqqwK=+(`9u1)eW9cz?#fUuJ6pkK$lCb*87FwgX>*%o$xEZj zYlo-5qd{41SR}Ho0$f4%Q*2}%o8p|((m@1em}Oq1Z4K}4Tk1I*Y9qW6#!6B2lESp# zL5!8HI@VtR(NdUlw@+*mF)7Q=E+R(B33wXcw%~OMxz9GjUEz zNL7K8bGmAX0aosw2>bEA7FYd4y?{y>?&J6T_y6Mzs``lFTN>&rUR##{R;Wmz(a3Yo z@Q$fy>I>g=GPeKXz!`7Kqe6K&B=>8L*icXif_LI6{)px+pUifp?F#A`NR0t>S=Z- zN=pw7iXutz+>Jp+`=+(cQaLBXeQ^i2>_&u3luI08O!tdqHO2BeQDf}_#1&mFVE}cs z0Nc=R_O~P*^fa3X%{kYJUQBipcOLEku8Q;Sb~gyeKVP@*7!$zq;{YMk`3lejwPW6E z_sni3aVnE)8(B3*zftgNATe+i^EK`}16X2tD`IBJ+N07goT+)w{A_a&f7`J5s<$2j z;iMk{oLlV}k#%vA;ERSO`wIAesZF$?@YeJ#l;`(%s;B{$4otSUv4eLTfQQpIy-n2x z*?=YZ|N7a_i5k|~UjVykmK;jUkRL;2onjl{Z*9~80XIydTZ`*&uX{$nhyMA@BrBLC28j#8A+Y=!PYr{61C{tR=sFEb6M zi|bsCdwva#2D;vGh9wBw_JFj#WICbIJX7}w!nXpVRIaM257KS>-1#lrd2-scwed~R zZ}n|!O{(h6aRZ-~b^H(iSVHOM3&7?fhRG;w&C@s;iTlAdVOU7m^%mrBKD%g>y-P< zeDq)pdXjJ?&gIeWS!7S#%-e{76A8`#EGJmmuMaoC!8-Q25K?&jIo(YlZ2JY7Yw3`y z@e7^c-ji3KO`-_x>KYck=euR;xANm_hVG^msnHI8^BvgM464cjrp_7$2neTsKdkQ&JTN!oxXte*v> zXOgxeZ$Vzv)#8B|`CXncWwo+fYM9ykqn7E>%H_igq@tO>xrJ9pOFq^YYU;G(Hv+4p z*A?7Z{!{yvny^a)CS*Ch>0hfT2JOGiJP=pR7|Bc=u#5NP$&Xs~)-%gjfJ)fEO==)$ zsNWo>kxgL!?VP-14y8{mYFeBLvL#*rsz*T0c>VYbwRTjIIgew>mLhK5rse2vuc$C> zGJnB%_)+O|hWny{PyG6U?pm5%!*TPHQ7{^9Q@`Ng`QxTi=4Ba9pyIBh3+gKcKWS*0 zoxt^-i%{BGtjB%(LB;inYP}Q$@WA7rCq;c=r6cLjI^+~Yl6^8Q( z%xbNVKktR0x2ceGO|OCW^q=+tC0hoPor7Si}G8GgHF=O|m>200atL zsm5WX?gLDX@_V`xc!0rX9|cV3@dcp60%*YV?ClV+p#Dl4fcp{E@pZw}wZ|t+=1zmd zK0VwY4;SaxG9jfV*j+Y_-(&a!N%pSC-cmH6=V!%ZElg#_qQNJZ;vk}*%_NarZ-cLI zgtzOaN=vo@nzt&5U_*~ByLbp>F-=e*wj*&87e)X+k2Y2Q1I6!LfyN4Mt`4IZk>er9 zXO7n_co z58l`PoHUWsH$3s4aVS5&QR{c3U+jH?8o_PgGFraYzM7fm25DE^8V4vXGG^K=JWeh= z`=zo1HaqXh)oWZupSS-)?v2L3zUp@%7I3bzy{y?wYlGDmje*48Pm{DqYMG5f#53;o z%f^s@Hya?vByG{Z`EEasoua9tv>e*x^!KZ}Wf}H}*NV$(zM=#9$f~d;H*8jis`~S7 zFSCXe>HXn(eWh8lJ_eKTp4|N*Aop?P0dw|PTCspaJi<9=W8gBa03w6~&z)SJn z&i(5USm>W5tsACMrF;*sLWQx)ivE}J!@W#`9y9K>%93NwcgrDKigxroHZJLq(p+p~ zrpE6x@407lo;$De%>GKh*g1@SZI((czUZ-6$?^wlKgay;azS};%{=nn2ZX2a&9`ws z`_@y?FQaP?yvyU==GlxfPa9-z;coq{Gslqqxug($5jfL2A0^VgvY*(qr1Nsw1`r%{ zRkk*)@bJwB+Z8rYk{9I7NcsE+&TxijMl{su3jhs*Emz09xY+D=;CtdT%;X^v#dz54 zmOLm$*HX0@$aOMbrdl97R_WeOn&E!qIntl$g&-`T4ohg?5zKINk8&Ad8^+g-TL+Ci zD10wHb_<~{8Bo2U9hO1rc>87`<_yw;N5S08vtK;!TbL6h6TYxP=27XhmBbGh_(^p{ zrgFD9S>eBJ{YvmGMwWrF-J(f;i+wLQync4kB>J$Z#wMX7Hbcx~k>qB5@hvT0#|a3}hs6Q+JzD;9fCf21GCrMBtmwUoawAB|)?8cE<@=XJJ(6O z1%rE2tJvDHLN*b#ziP4ApXeXV=IJP`xl9=GH&D?SXDHB4)ucsVbBbuc@6Icxph!pg z?Tq%sod}6$`FkXF&k_Y%b%U(v`$UF;(9=dvh-~I%2ER1%s2Yld6oc zjgNGF>5YtrV^_0Uv2!bJ?--@-5D$jkDK5iDRo#61#ehHBR06bpB4k##60i~PvO6A_ zonz02pca{3=t~w^)}>ypT^oxA6B;{x8D^ttGm9oRiK99ij~;i#ab6*31;eo7+!tIt z9TT@TC!-ZQr`CYNWzT|-+G%L&+5Jun+)g`CP3GIn2Pu7Hn$+E(d5WO7{m;SL<6=-M zv3wf0%&Bp&;Nqn52UpLq7MAGcDngvM8zJVuD}U_T$)#N zZ>6S483lp>P?3r!j3&0N`YFm(?;7QDF{K2QSJ%ngvB#F}F3^3(D+t}jWdSJ*C}|ld zbw9gQ(9+VVCa`A1($g`D{)l~YG=f|zdo%;VjFTmjUu=cy=)yuGV>ppA5R{1ZuQjEiT z@rRjPJX)#pBGBm*%94{np27H+XR^`?Qi39R-W#PZQX54wgoZW!S5Nb7%C=6DH9`V* z;di6lrRr{U_i)g}fml4L!r7`a5KX{Kd~LWUqt%io7gAZhCk&Mh=^V_LI-_2FByywa znG@Wbi*@vQc#9Q%)%Jbnu;rrt@FOYO7cJ&CLr&^4bKz#*M||hua`^Vu(us_c_iXKU zYEgBc>^q|fR&@GJ?Btt1Za^951Xj4$gM}3Ca$2`0YW3|RvouXaf_J4Dl@_nVlsal= zG>B~-0SN_8w+!72&gsO81Wkh-eb-DPf*Fu!w_^K0eFN;6*V&fJ^=&iT;O2^O$AJm? zFio=i;+JUO1bGsW#_0?HLLvaJb)8!wUi~oij>Y@5@>$>GD51sjfdSAIM_AYHW>uu> ze^PpNEUi>jb#X1(R`&w^bfL-2y_dN$0^S?uqp{1L9eub`W0PJ~Jw6+-eNbySoW=^n zPu2B=jp(AhB(?l=`E76@0aI#aYcT&35n-a5z5LU<#o>UMnG;-5+rr}0kl_j zWl}c)&H#FrBBid;W-Qqh*zuZzE?RCZU)V)*0%!o}?UY|l8~d;mkyk(om(!zk*@rRp z3O^~)PFv54B3}uMrzta#pefU}ped7u|B3nzb147*A7j|>Vj7Bee3|E^OH(Jj3Y6vt zH5Z6gkZ98Oc9{CTuth6hqp$0s8P#zhTH|gw5O?m_PxnnGyL(dK8O@Z2J5ZNd%@va0 zD|TUPD2lcwir-#XtVa5k0jRq!>FFt%^s*kggZa;RjtA~i9#VaIKQ>x%~KIYP--c zq@k(5mEbZdlNYH0fovrJN{72yh0JT@LpN(bupX$%$3kZFAzS^(MNk|2a3&zi;x|%v zSY}8g{hj5s=O7Hc0ZB?tUsvjpE5wD^XmXKMz8q^&AkBe%_lCWL;Vk z#sG@Vio32+ppBkMNkPLx()+jfYt;jk3LF!<4(B7lkMK|bH%BFLTz2w+4_6}iv^UB# zy#Y>&mAG1j)s79C2q*1onMCq#H;wy!N>Bk*R-%R?U#i~3+wk{&L@*G4Hf5j$IEtwH zj&kv{;`0G%HURIDYt>T%4=DPF)j(GO#X?=pEP3Ta_upTr+`tu6q-w^Z`Zss*HP-1` z7Dz(l<1!bWn%JyrHq_64La?9amwg}pql5N^L#xY8i;#+@N1H!%zPwR-{77!uf@BZv zA=IMoBOY2T2Ok0<6q-^&uKz8V=Ib@1^s_%ovX5nX-&6J(jgA<;(4++OQ!nRrQ-6nO z*v2{kOoA@1AlUJ`g0^9G>jDi3qT~_;o z3lxYI_hCx8nzBw3mjrb-t1ZuQA0Sob1mWu*60bFNlLAJqq+pB>RtRh@mT@vKdGq5H zKNaTy<47ni;2~#q_{Y7HbnSx(y?1|u7V@wPL%+Cb9Vjx*d&kbn99DgA@&fUP7@!f~ z!1MZo0?HETD6yjdM&`u~6x-&<4$?B_MeGRdpeYSd$BVtBA?OBh9YjLQ(YGbcCbQ4J zXI^tH3?=zFL4{EJqKrjr#_l~#Z;RvdV6ri%D8DPOtxd*bVdoCt+cWJ%r^JFJU~P%w zF-}nNKe>L%^Q*U(#hY(qYVhg>o3vS?{yH|GHWMp>{>(de8Y0zt;x_|%gx)pxV55>w zD+z-~y6j|AHUZHb<%p*p#Z_BAIyP<96}$w<$-t-WK>r#(?t2anm>d%@xsdr>%*>f! z2bu-w?U&|7WjC$@j;m$}k8n z494Ypv=d{h1n^=Vk(gs%e{7Ua@g?sw!LDdQ+NGlia$ZMDXZd~1&q%TB-};zYZ^QI( zCTAs=3?#<*y)F!Wmtm#~CdklJw8q~r_KuDijYMEy>n<$*vLX;Xp>OKW_QoG&DcfP8 z-@~iZzGvUdQ8X!2qLjnGBOj}UYBjWCKRr$OK0m_zn-Vdxb(`hXM@VRvAcB(N>ikor z((45!+J1RyI?(%&PPI8nDaqX~5M2GhFE?ES=0t zM@J{E4&AE4G9d6OaIxjQmmjjPH|SSzavrL*DHuQ3Wq=_FY9dfmleG6sEaDa1=VSFO zT$A-t-eebL0)9<`Wj|ldxouMHN)#C)BF+RP_F*0^iWE zjkmZ$%Q{7|HL9%lc3LCsvDa;)zVlcyU&lB2yYC~9KkBvOV0|Di6#pp zgDYDnA)1Eex{nV!0oNId+{@Xg1??$s}%Q1LII8@qZbXKK}uSe1s*1Z+JDVY>6sYcY-qaZUY5 zHd)RYfUVq@0HI9ZUYN4}9S5`wAyliUQ2-8taF|SHD1BEuGDM&J{;PMnjal5FZEbNkm0g7NLfpwsF^JhjB5jnJuu+hQxI}Y?mIn;El*hlM@>@}MwC5ZuP z2&ssZWB!JzDwUCc;|-`5H(0v!qC*Eb7RGm16&`Lgke9q5THB5l!YWz(_9EDIZ0tZc zeOUr3a9Q=)fJyCWK<&*}=H@qM3C;W93SkWUWY^R-;cXkF+)W~iye~M_?ds##VOjoz zwgUx8M5j=!F-GT1AZO`n_@v@_lvmxg%m7c(%x{R~8k!{u?wptlPxyXnAd{-cYtAIW&a8UlpT*LgPpw>;b(RJ25}(GvIx&%r_Fub+{T zTjDzaZc$WHz~C_&s3^5{_$dB!r-*_t7~9PuO*E9vl06=KS$?Eg-yYY~H7VEcFRl-$ z*4rh*jYm>gs~IU##Cy_0<{RvETU~A(N5Vp|s3d!;jJnqmAt{Oe`qBOfV|nq5{Tar^ zdK-c~Dr0r=i_{MkLzw~ozPAM9E%|m!yDc_Agk`+m<8ee3J)S`v{E{>* zo=&OH1&cMHKdNbCj6d(XE0ERs@qq^m%jfzyQrEzjm4VapH5OJl)q3epR`hC{Pk)Qe zoMaXr<2qPh==EBF@SS*1>BT)uR7m608cRfo1EukuVV#|qxE?;130Ou5&l@b%hra4e z9G6_Xy2$YL+$P53FprIu&1!8{MtFcgR6qNv{9)7z78a{OP=C}sR;`JY$!Zo;UHpU-yO_D4Ff^1T1~w)!bKo4fFU@Cf@R4GFVu#_*SP*z9bkX zM&jb~QG=%{zPMOe;Foog4JtIHJ$a{=hY=aof(?(6ZGWSAiKI5f(?g;rSTn!}+onf~ zu)Zto1%KknzZ!MRDojaf5JF(=SEgjZExb+F@1uDbX0e{iLlT@PbrIsl%0eXmjR(i# zVY?j?Zau--+*g)@N4H_x`kJL@dp=!Y2jMB)9#u(2xgLK*P20b@S&ha@(bwC=^BUFI z5i_cwnj?+Nj!3uBJ~DY@OAE(_lG0eBEJSl-Mp{lTe0vnyf3Y!T@)0vc&52>QC(V=7 zAd=T*`&n+UAd~UWY!MaU11O%$Ht;3Ol8Wr(G+uddI~5l=)jT@E@mpWI;i9CJ>>EgV zgF{8hI-VI;wC^TpBh*vCDQ6wMYF7Z9-3(sQ3uz`}BxQsC~L zkEb&czpJiP%#6t0$s)&!{rlC@e_Zf%1l(yhxYIc1I7-TG$sW#eVe;{|KcaezHD>8+ ztzKvIr6I*j^)_V&ZG4oJD3U$PwH6!GC2FU?W2sIrOVlQ+<&uHcOoYW^JO8>sHZe>= zDyl~f>-5*RSA7RKbbb5*6CJN6$0I}L3DK$vv8t&k+e2=`D+k3NrHUF)zl1a~Qa;>d zMI8r>RLtXb8*9~t;5&Kgk*(zU08#tYx|IkEt7yZu6}ytU!?nL}ejdkX{rpCNl2Wm^ zh?AcmAm5im>2_ES#X=1F0b{z<(qf7y&3LHTs7BU0c^S zJS3!Oy=3!VqWayPxoFg5;L&` zM=9J296##l(dgR=upaTA&u?P>wlN#F3zTw{V_$c82axc&zT@ia+XV&!a4JGVlBL>7 zAViv>*HUfdRz*|mr=DPoP!vhu*k#({oV1=R3fykSv+jkyKeE;b3EVC z7gJ(?J&rW`^jD}wXD#z(&Jy!NtZHgWQd%!DHmDd^RmZCas1!Kzq|2-TnBowFMr6^ zS)0x5WGyw=LG_Ci7t(oaZK&4^w#^6Q*v~U`zoEc6KK?E zU5exM)nL`_ZFr;Q;3z_t(@4dwk~jlX5Z6dS4@8in7D>x zYbT9PUN_1#(PBtbBkR#%%|BkFc;ahl(Pj7^yNr8l(54C;Ss^Yx;-Sk&_FFX8e!#w9 z5;^*TittbXc%C;WKO!BJ)%IY&;Hc^+gOyFn(50H5eI;<6ke~>Z=hA-33tYYQMgI(@ zM;={hjV&uo_7hU%pzX^ej^tW=ErzRhcyhS1)(4yln)=);zK1693c#UGY*#mL>^7~U z=LF1h^)NimWgQ!)svngIBHOwNJ(qZiPdlj=!K9$KN5-Ewhh8lb+msoHm6UVMUq4oR ztQn~$SrGgP&@Glrq$Q=7#lpgkDg3PZ?3s8K+_UE%C5twBFg8)f76U$YXvrxN+1AT`;Jbdl^ zyeQzm0}T;=BbWjha}4s{=k>lQ-r8ZFa}ibIM4xq3X$xPzz2;wWIV79ZcDGG6J__^l zIBc1Huf4IXv(xNc(RX=YvSj~adcp7xVAAI5awzho>(*wh;Y9_MFhpPKi8 zq!CJ+q-9)EFmZnG5ilo12j4t{k26(M^WnJ0$v zC%-Yisl*D;3He2egmE~TyFil#!{;jD{0nMC2G0auxh^rUb%IrBDD%-o_e71^N}6EHo~YD@u^t%# zo!nUZEU*Jk#!$#6zx&OZW5Yf?k@t`)+!6Q<6?#5M$LG3Fo#Sj~@_0sIGse>`^^`sm zhmzxEuG{8=H$__Rr%m4@tmitx18F-LCdpxcd)CC5>JwClh7B6J(5WKpemn(+=x#EA zm%*R_Ud4x1&z7TxelolI`Uy$EU+BB-O#-KR0dwNJ37kyFP&wO%g}2{K<3~j?UT`my zxPX$!tWV|ze9h(dZdvz=IzwJ@)Jk4Mj@`gJ>NY*0t_CJsc*mR?YV*VkYleWzhm&QQ zAN%)AF1ey{RYiDluDxM|?Wn%76XkpqJgxtkBK2KG{_tH+4u2y9!!LjpQs8p%l4I=! zLIBXb{W(gG*EVD|_w(bQp%Gbwi-j?gDa;5TR((N{RJazy46X1g%IG6H0I@ctsiD1P z@1a{~8M_lCSTxFR$Dw3-{O3h5lS89kl%`7)VtWbFTpZVCcGcXzby>PuYCONuJ<@7d zC@k<76^ZMGqr?NFZP?QHU-a*b(n(}^F}2t~-imJJ`PXeFfvFsy6&t8s-y57GTT%K@Y6L%;~FT)b_ z#$TxCxfW&-X&*+|oDn5fdIa8dh4oh=j=9tMkj$sN^q*7bn_Y@D*LE-X3GasQazphl6+JPy*?DJZ(vIh%2#Ya5yc)*-@?6B(51t=;9bj+L*E z`<}xM6QfAgs=Zv;>6GxJt=$f+dCkHY@}z7gYYL)p=$ctInPo%?wtRE$*^@uEbD@d9 zPktRgLH-KkyIX4Zf7=&RXm4^EfPJY0=LmR7$nSps&jG6{mshgQ;={W;n z8AM!BoV#CaQrTt>Ew7sdBLXq8?s>#!@uTKYfO{Cr!Pv|g55PTKOMw39CW~rcb;)#T zSpq4{a|4WpD;{L6xH1I<2{bQXrZQ&O;WzhDJ>Kf7)21Q zp7c_(?B|BFj|qqk`pDhwmsD=H3elyQM5)SZn)auTDafeB=VBK z!{x^lzspGT@JMchIO@xp#$kZf&ZGjq@BVkGyS)AxY4xIzc;yWOGwVPP2@}{+^CI1o zYSVXGAFnpB#4sP(ji0>_nnIWQPJM4JewX&uyG}&8=?YyxhL9D51%osS`I%}1fyDJm zGL4`T(VbxUq%rE~g6Q2sHIQbM{Bm2(>CR1#ZtFt`_Ikh7Db;v^5uxJNxb9V#%ksZpez2Ah4J{Kl0bTUJoIcx zs-ud%CSNtbIQuI^<90}Mh~8qmk8{;_PBz*jNsjk`5gAWi%ZPU~=51$VdnD}&PC~N4 znK%-M65j3CbZ0QMwdzf5p5oEE0Z2f~aNT9&q73s?8mR5WDesAoq1P5Lh=<{xc#Q*R zn>ZGbWT_%I;~0qqW4{=9gAoY_-whg;1*2ffu%=PFiHNdCT&u~}9YN0Np9VgLcayS= zE2k`N)l`w{l7u^an&f_UQ)7fGb z>}J=1aRhir{*pt7ekz;Up~3>pYO3(q>x8V*duG%=iF(jNsJ0WOv6(aN@hT>`C$x6W zzx&0Ufe-KIpD<0=X;#^GFp(82DRdfIQph)z%6f*^O)nMkxz|z0DEf8YA5d1zDIDuy z%GSO}86?pOmXw?BOkF}05tkn;^vtR0Y;+qd+$-Dnqm_iLF0YPsJoY!Ewny8(Ej|80 zoilL!LIQWTI_<%sE!W%I$`sUBh1YO;or!SZd^N3g}=*Cvb;AxrQ$GHfRs+mgngX=32}*rP=vB z+(&PBS{`DhBKGH$9v=`HbES#P{ZXk|>_wIChmKAw%{uAivWoG~0uOw1p4~>izR{5z z!17TD+2dgt$z6V%;1FPccIjstE5X`}tNgK4-GWz6fwQw3@5ROH$j_F8H{2D97rci4 zg9{ce1`Q|vX!y#%2n>#tq|$ljB$)*-K~43$yd($!BdAPujz2}@nCg3zighlO9$i(e z{SGV=8mlH8E%CP%_Z1bOH)YTx6w#!*jj6ghKG(*Dt)70O)6Rx?Vt!^=E2sUx=nxn#z}X1oawXzIcXqu&O0Aban+>6@J9NoPO%n+Dz@sL`&FK1k!hZG+eP5MxJNYi`IYals%|jdR8~D%U{hW% z_R?$h95m&6&cNqZRwF4TILbDx$j|xnhwGGCyaEOjCbyn}SDx9pU4yoHY8Sc`l1IxP zzP?WY;?iz)F8$O6lSA360NlY~oZyjFz$t;#dh0gl<#c#y9ulUqhBiUV4gZsJ!v3=C zui^T(ppS8HJWt=DS6Z-!wVp}(S+Mpv)?lgqFy>)$3VvP8r>b0^gg&Gw(LWru^W5Zn z)boNa#=y8`jvVn+)^1kFn`T6+azl%Rattk+)h!|Vglgxs(pzTD=i8S`>+81RB!-)B z;sbxpael>4lzI~-sJN?>PC!r;`oX!l^<#U(bCV!z^r4yM8_&u*j7lEOx8LBv`g)%0H_TI3wxS$oI!v{b#YHP{^b^51YdTSS zai`SPR@^kjBC{lJ`8Q+SW(Qe1x?e&+eI-8>@%?{Z01E*e8bhdU%>X4q(+^r`Sq($! zEEwSBT3S9d&$?eWhpv#NCfxl>e$~u%ssm@(Vq3EHIh@e8sG2ukveVRe17$)*N`Frl zG`p0&GqF}hgK?wWhQLDmq1zfJxS6xNxOUzC9$HhZ+8Wk4+hI0C0CTloKr<_33?g3)I5av*!6;U@1=2P&u2CA_u`HMcQ)6w(OYP)bo=6V$RU-GA}xk zB1rAan%`gkFut4o=l+~w66K3+I@LR+d*n-)%BGiJU`1c#S6)HrFFIYCcV?Ps zvI{(4JTs_@B~U{b?K>Nzm zTLyYpi3hZR@YYptk$P{fw=Ray_pS&%<&;mHr81|I241Irp!r4ASrE%5j%3H=!)Ba<`x z)ES=eH*gLNa097*lM0n21~OZm)-Y$lKB_K?229Egjd|Ve9ar_Y+b#WqSBo|YDqu`2 zij==_VkHt+j?sKpyB4=Zy+_YQzxoWF>DVe~8F@?ZDtS0TZA|DM;P@5S+5t+N@<>U^ z*CXd(HacD{lf!PF0}nEN(&ca8a>P|TQnTjYvbIt#f6gZK=H|;RjV@J>g6p)(sX(uS z4(DK30|wKbBi5;rns3K>S21HLMVW;7{#ZW@3}Ax^gp?98SfC|HL&fQH4GTf4ps(EnO~dp+hgID#dXbRb&8^{t9(g0dL6PPPZ4eV^<%rn^Ub5?frD|Z zhefN;1R+=Lqa`J+gT`Y?4GHh)q?9SsnyG+HPr-=e2Kv(fdx zEs#+YdjTugP~Ze}p{43L3K8bzZR?4}cXhq^z_%Uk^SY1L%$0--p|5sSY3ndg-0gZW zG5Qe+jC$kH%KzD|jn-+lDk*nq1irb6eo025<|ZMNd##xEkBsG}$tyrZ5a9cxav66( zXq7L<`^xM1VdpPmp##eAQ88f{+3-^oxDB#8{cvqnf3`2&*V(TuenbLO=Qo;tx=^=r zYbA9xRtE`k|C^kxB&bcr7$5N0x1N<&3O&6Ab7&|;{~t|f6%}OHZDA>;yOHj0q@=sM zOS%yR>F)0CmM-b;29@p(>5#6ozkiH#;{}5Y+3&73*PPFmN(Lb+w;m|axkfOgDKm9$ zvOr|blKEf##<>l%cP#I3i-|SnY6D$Aqk6%Mgb}8ooc~WtkA${0s9sOqe?TsVzdK*Z z{tBVE-8g;+4YT4Vpf8z@#?mSvwIY7AVVMH8L_(xrh}4TLiRBKyc(@(L#kO9kD`S&5 zARu*%*B!zYUZA=;sNOh@U*|vc%gfm+g0T4l@!>nWHJKEKU4H5Aq?cRz{GgHy zx{6B2p@$L41PYJ*|gq=J3@LZ_P4NV>@j}kz^-yxW_BJ4LR@fTLBVe$s+gWSunSGuYnQ&lb!9$ z){TAZ1$O8H@$E^&v`)KORm~Xmob5m=xv3y~JJ-YVNIGZf(u4Upb9d38w88NUxJ;A!+p~dGIw5MURpGl4(N>jf&_w{Ypbk%>&+k8f&oigaqw-d2V~+{ zP2mR+OiSbAYBI?Zx=`5$uqAINQNuLVg@c!4c>_d}1+TIq0t9UX^8`*Y zWm3puDU-OE(MOh-N3P4oVwySYLn_E(z2RKpimZPM{ji3osN;%9yb@}`2R|qfB4YP| zbQRCZR3vfa3_1+Qd=@706@?Bymmnp%b$+rbHT{~o-u*w-jG%`-F8d;-{KV!Qu#5i+9-}?rnFe*soJRW)=j-2G9c#R3 z^ZQ5;sY~1*1ma&oM0s@^92M?Ov$6o;6Kw$9ym;zi+(lWqDp+h^zX>N!WfTpzGpbqX zijTR_g3L{R2}(MzOS!lWj{DUO^=ae6ez#o;KZSN3*Wf?Anc+}kUmDNilWO^{`JqaiQZ|A_J`p)yo@H4e=S4Q>N!nZ z<&emNafHxR3|u@G-fQJt0RC-WUW_+gT#+c*=%dI|O;BD3C2SGxCka@HQadsmPpB&B zf?MI;n+o`@%DxzkHneyXLyEM0LCQy0_wt?nmq$0jtFCp-Fbkr5u}ACOhf?}B7le{0 za>)R+ZckSLMYw-05D(<>y|cfv_#^StB6sh&rgaCoM1hhi1_mMKe50N+Nmr5UYP_Z> z0mzB|Fu*ea91`UbLS2AWQCaUZ>@2vTR}ovOp(OlpeQ?**Jg3HfL<#l{?^~<*^}Yv_ zsZU-LUoqCxNa{oj+KvGB;PK`-v&*urfr(!>i+e_Xp-2JaspKp%Bjac(H5WLh1_f!( zhHM=EZ4RSk2pV_!$07msE19_3cEn8d-};JfBSATBNm|F1O!843TI}ED`ig#J&xQ8i zBr7o3S|;+&Q7XV)_p4WX$_d={IW8rAovXhozA}>okqNqVg?N&6;DWf&k0s_nKHsK} z9~*YB{}j^wFV%pYEjqvcOVGzU&7eP9x^5C9FY{X(Zb!g79P+_%l zN9xFpLs6jFG(=gB4$x;Civv{V*{)jZAV;mSS_Nt9sUTUsbd;_n5OSJcMatNk^Qz^Y z9}{a3ZPzC(a)VdG!$B?LWmsptJA$TGKM@gvB$_1=OZ3xWx-Yo*I{8vSRR!`l{}Kos zgS`JtIy}v$D6#bqQW2Fmmugk5FE&-23wngkwSDl{ldcx?e8ojYX>PU!Km)XVSFWcd ze(Y2=`7)ztcV=1mf^<4ZrzZQyOuD3-OaJBPql$`32m1-(-f{}N?>{f{yJ(PDl6`Fz ztI}!Y2Y!a?=auB;(x!zLGm}hLTP}wY{;JF->|9I-KZu;q2inIAH4CnahRp(Q6@>Hw z$``LZcPkg`@9lJ(IDZMbwy9!kgJkc4z=8yUw&`WLCitPY8R7TEhpD>)oNf#;0#U?L zC}Vgn#B_Ye0O?LYp&+)AUw=kin3~|MHPrJ>UBiuz6tTww@Q5mc19;vTg&{l@4+~bw zQ49Ox7s|5Vt^kC0E~FB5ygw}Y?QEdHM7dw1O^NFTIC z;<_EW;PyrnqoWkM0Y#xW)oBdRJni%CkJ6m0u@(FFvJ&8>Bagwg2bOjyOBYpo*T$Cd z8CQP0b2CrE2~VXN$xNM#eaKv&%Q7I4%AN2jU#Cwt;?Iw9j#n$!7Jh5lS z{OP>TJ){Yb?u%vsRVt_B!(OWHj92vP=WpOPpFVq1R&Jm(7e6Su>UrLob7QOa8(8be zFD3Qj-{1o=-g_GV#(3mBwb;H7f26vd)6fN+s!^(jNnm`l;1&gVglBC`K8hsHp)4;18Zo=SI@PAo(VsA&ja&9P;n$_6R{dd#u*Y&~A-_yuxZA46r^kti z4Kioz`Le~cTd=HPVAlFl8U-UH<`Bumr4#0QOEg;lv~l%X$rlxdpw~Frt)V7&uuWD6 zKGN>jAw24u4iI$5q@_yB3xEfewK%iKgbA!@+s;|cwa(lEgLcQj)NZ!*DB z0U9&FMUfx?2C!_Gl&6wa`?kMSs`Bc9<#V&p^4-KYUijaQul#j$Ctel~YjbzE)0r4gDX zfoNw%wc`*72K=65SU(*{&#?;#DTk_s(o~%miESHfQ@sQ!9S>#-2 z{l_0l1O6#=N_-ptLCnH}DX*V7*<~C}xVD($%x6 za=WBTFZ%h1t_+h>Fi{RTj)BxoQ;4adg=Yrbg~I|V`rnZ_08$Ec5(^0^rLT&a3%9EA zsGbms7fcgD_rk6bFqtfP#?fW}{eqfcl_V|Q92iFJR}`8EA_h`2IXcGQMb;mLiURIl zo`3%&F;CZiDYdsN#eX}3;8TWU2RL>i4um+H4RgF5w!F{z#XWLq2)G(;mAfz|W0aoF)nQ$-q(W`=M1 zF1Ni;Z44h|*e9c~1N7eZ9YCyOUWdR~D#~jxjusUt6=7SxLOS^FSJ2(l`mT-#*|U|S zdtVgl2po1}eG&b$@bI*{DJdukrys}C*|Ta8cPH?M(Ct>fThHHq+d8fheHJTI*;woH z;DkZQ$>4m!O(07J5|@1&^=GRfG#%@*yZ~jkpS|x97}X5DfnW>>8cKaYW?ixW)Xw8E zL0ck~bXeOzMpIalVU%vRpSI)bW04?zH4bQaWAqLcRRUMaYIXP~QQ$ULRszJGegc3^ z1GzPauE!(#A9;bu9xE$g&R4eqk`#jeA<8S*G@Ql>v%T@a(Zcti=8yaOVPN<}z~x?Q zmaD;Gh|MZ@)JBno~C?1qJlB`>s@r@BM}AT`Em)^G43I%S%=oU#d*9 zPmA|jn<|FzW$re5YMO0**Q3YU@feLsaWe3x2V+_P*rGS2EsE2zUNTLDqY|5Z3_>?6 z5X-bx(O9ya9rQQ`!OhSASo#rRFux9e4k3qdl6b)nj!XaxT(=r=_VkCwI8Z@A;v zx`SK&q%eZIO~mN65m=(7n|I9?RJO}vogRX#UGCRqfBl}zfb@>7^P^!3{1ZxKa2b)~ zkzrZzM+T^xnw|LaMWHobAR(rq4cwm@Vj@PsdR@~648!cXqtv;bx8+q$&VLQ=+A8!J zbG^DQf;s1b;E7K0A7#&_%Iga6OVA`&rgb^+ns;1*#aNOKe5Y2X|IMzl|8%hX+&byQ zlX1s#9H)plMgrLs=s$Cf^e<1o3wJY>c%mWD#YMLczoK%tpvE(9TF_JcZI`%rqBf!U zvgZnj`=_#n|MDuwEaiNjEqA$E__t92N*Wux^0N8=^5CFjs`$E_W&$V~4zK$k52TW< zi<6zk8Ko1jb)@9?DzGGx%Km*)^jsD}00vUtV?CzX-Hof1wj)r>fnG=-4m{nV?gk+6 z{oePx90IYfK6tR?K+*uoVI&vMBW$Kf+osBWe~^sD_`dnSeg4((1YKpVLE>z>Px%YS zG&ia2vC3Azvm7kuWNp73R){t=+>+LZmq%k<19!@}P+bQkfjs5HzEea@dWm58j+a}9 zR6j!Quf~uXwML80p04{8M!=;s_6wjK`n`|mv)!KlMsYjh+c3yyWUkr9eg-~o8^fnQ z91u&AHC#3d?1KkYpIRAJTF*p?hF6MaV8qkvN7shRdJrw6D^L6KUzcMyPDRGO7oll| zNj`%tV)09;DDo(IELjA|cmL->Fy|oJaqbiTAkQ}HJX2NsAJR!32<3obKvx0c9e`>W zCkmu}6)80FBvl2g;$#(>tQOT54P)-$|BV3SKCgg`1$!5IeI+uSyS8UAPjLT56-#cN zUtC}^gQ;aUBXnAI)G8A*;)wl69u0HJaP%#U$&7pg``eRqbe5J^4 z;FE_I4?)7Px#Av=C4YIr%k@Y6$c;L(4<<48faEIe!`=dmlfPP7itgF53H@i+Q<$-r zGxk%Hf5lZ0zr!f#=0_m$Sp$zpv?@u=`FNlcsW>7DO zh659&Y1z7*Hq$o2N1b(o_1X7-$GsmOWN!w|1O)?C(O4;hm~|lwf+KS^#%vX28gZ*W zPOcFYQ`B=7LtLG9-(rq)2UF4XCo+}1k<}mS^oXVcPqx^M@K8V4mAZYDWCR|=G96wo zO`h@Nlbo~sybU4f)o8>xO*J5!j35rOj1*>XPyN$gmU#`?rTWh^G@DKdmZ_7JnA!GA z=NSxM30ydTZum$NVlf*Oh&`PoY8rrjh)!MLLE)0`;cn41F&JCNELm9s*t?zoj?ser z1gIV2M1euMqKfW^Q3S31*T7XL(3k&wE7mS!co6_rPQot12C#3N#AsXQ|1AN##JFBb z-H?tYn(B}b`G0?ZSD=00L|?s#j8~SD!UQ!%_b03nHAPHVH3>%}nO&Ywuo2q)9ul{m zA%YT3FBsXuOOfM2!ZYMSO0(4gZ1dYVUcTKFOdWAJ2C)8F4HmwserRg7q@q6U&VzWv{W%wWrQiZ&H6IT!Kt<7w!WH7$qW<7dNPv`z!U zr>1@{!TK+$LQAe?03Z5Ac4To}QR6fQGSQ?VKy<8j^-ek*yf_xGL|}Vwb3rlo1({dE z-nEzJS^L6HKk9u9O6nAeVeXe;(BI!SS*7}6=_^S%+b`)x<@9EyM;TZ1B|zm?%aqXY zE#UknRbn#Z%kI?4lHlq>fw)w_+rOE_?rPO=-%`K5a51jaMaQd!n{MN$+h4uz1+Wq7 z6$t>?t}DG zu3eWyvPm@E&-G*0$?6$4_Hn|?mW6(hT#KMylo(xrC0El}f?;|GSd|@azyl|aT^K#D zs<`HImyoKaB+NP2aiqTHe4WxZ5>&1%5FJ6))r{D_A6 zM$2Uj>qs{k8TxgL-@VUsx@WfRr@i;l{9QM|@!K+$|U$UAt(m$JwkbTp#5D*hL4-{)>ps%ks!>*rEfBeAT*?JP$?;sikO0 z;c^+%AJSpDZYZv>re(34dt=e@0S=XIO7{HhPP)5p6)-Ti&3SFf!{Q>trh>z=@z*d7 zzUIQG%lRCtHAJ9K^VRoYD&IDFX=cM0o~@0f!Q$;K_51q>9F$48bR=*%V0L1l)glqF z)j+(79nLcbA!(MOKS!-J6KgUzJD{9@YCx;4Y64b@U~HMVyl5_Py6aejlkGQbxUvLo zLD;f&rdbM*U5b+d7^S);!^@I2=*GL|7 zSk+viXI5SYu2doTM0YKbdb@s5L%1eEXffPZh3C{E6QOAzPCkX91?VJGpjOrYh@}kp z(nSgnryslHNH0g^`_&w708>B07@`YojdjE)qwR&go=uF)63| zaIr2&tF~v|c8P-1au<&V5S`ZRGJ7+$`)8Y3B;yE>Fq zA(x_(u|CZV08Pe{t(Y_6vXI^8k|Vb}hLu#qpsjFnL#M&O!DtGi4lX1V)O{uL-PI%U ztR`+RH(&MZDQw4a>tEMBd*9O1!n@>=d3Ny^EKAZsYjN6JhTg7uZT-gH`S9K}u`qCe zI*r7jBLx5PPioWBzDEAqgE({B(&W{cO^&;UE+OH^999Joag(91s_AMw!jE16gLb>T zVhw~RNvsBOY@S^uXPw@6Pyj|?_;Q1pRfp>XH-K5YflKuz2Nh2l%>r)M1`8XOsHRV3 z)Df2VBcJ*H+1hsuw4J4h^ria04+ny}9Y+3=`xABF=IACXG#A=bsWILjHIe@OIRSl& zoP*qEj~nY~J{OfAcDfboUNbGifnGFmHL|Q2lD`J5J}gbuzI+p0{*({Fd0 z{=DVd;z%AVfZybMA$;-49J{h!Mpgdvp)f$|N>c-X3B!^Ql*_!fhBo6*7G9}mjNC96UW9MMw?*fdt7!*vp2itp6j5eO%uztPRf59rfcQ1P zZs=;%q9D9F7MHv0rpl^BTw0H*byfu=i~jvN#>{H`Z~VYYgk52Ub%&m-=n!(^g8z+? z3P*>NpQZJfsK`;HyAXJ~a;(|iCE)$I=zfx>e5mvz&SP&pGZ^af5`V7DL^7K6lXF$!R@?m#Hw3i2RHF?P`&B!h>Zg(>^5sYM+RNo z&_qBa6FfBVePd)^>Ndg~8s~a{zgqZC7Z(q8YXZ$+*kxqC(RjRDbJ{&PmA%!OMH8_7 zD?iW6ya{#w4dwdadWfLoMgx}E{ufD7N-9&a$?)6TLn##3VqQh{dji|`QxL!l!B;89 zH;o&@r>|~N*GRW62WFda%6V;I@4c;D--&OHbzAH=O8esEFmjr;`;GtiG2Hb8fEO*9 z0YtKX&Ntx0w}481R#rhn0#-wxW7U0ny~gXEP)`W>=5m= z6a5Jg9^vU)egy-|NeKQFI_?uds%5V1CX9y)B$1HvjseaBFeU`R0WeXnH?>d0fBlyK zrtl85s3&9oi5sjaOoQjpVV-L+Yy=xEZ45U3e*J1ImgL!L>z>y?vj-AUrA;Vu^~vmL=IedK7tGx;m(?KO0=6AIiy*JE35g!i z^i>dh#j=@){*(UsY1D9mIe4i-v}uX4*~|4wk~r8hV#05V7qnXvD1hH#USy$%dk0Lb zK_<{m?!5UP>j@IK95Vn1Y*mcJrPaxQ!|yar&L36B_y1miwzuMT9AbCnhnKw@!nuV~ zNdff|F}%H?wreHPWVJu+pK~t%_cvvRih`5+ zuHLRIXKVQw|CZ%g93Dl90bt>F88{}G+WgYZmu+fpmt|8hT{Wa305C&WW?DCBp7Hm4^M7QPWc6ytXv!4e7;HOw4E4>* zz`*aH4#0(YiZ<%ZW6{TJ-H;_Q+#|oUK+umpWsx8e|774^tdPy?Zg*#Y^Pd+f6oZOe zE6tjQy-syh^bx9{=LvgK;dC;s$?XksiZ(z06+}N6Y=Fv)1Rr$>^y;@ht3WzuP zKii3a$d}H8w-#&iril`0lNzBOm%D#ctL3s2X}dqj&3$gnwgvaA5lds^3rTNc7zFbi zmib+v?LOAQM%)}L>Sat+y6va`db#)Z`iG`z@X&u+NGQ{=FZHN{e-k!^IsV|5>ld`WL_;8t`Z#Fk&i!&*^=vtJylH zp&QMqVUbNKRlD|`JUZ&Tde^ykwsQiBuzf2CKqIGrjS@o)+w*%dk0VHh{f3w8%#Z03 zyt(z5{R@dld1O668V-)>aDH-pt<4|jH$K+u-gnyF?rr#3ht z?u59!E0DN2xn1G>>@<)N_+fG+bK&LE|A`r!mxvi>M1z!!mOCGD3F;HVT0;6M-)TYQ z{e`H{U3(t3*9N_6ldY1nL<~irxNqaVCh=mvsNhF!)t0aOa3=cgT)UkwxTDJ*JlDYq zueekSh(QleWh!S!Y|!MPP~|Iwn^DDIHDn-)~9R zH6WP->+T;J19!W+!C`@UDe~(HphC1chu78olM7ySIQ|qwA5=Rt8UJJmw-$^-qJ7By ztZ%yU(Lc^5eAQQ-Mq8uDNI1S6b?FWppOUIv=jRWHppmfeBTUW)LkK?ANtN2s;~8_g zWYfCXtz4){&Cp+-(ee@9Dc^4rR~&_F|EP_nz0{eWkvv&T=>(30(0k#-OUHM8_4p>pGaaP#>H| zDXD!wzafESFHkjeJerowi{jf3$%F%X--8|yzO|N-f3k)|Lo?vQ1!Ke0SAr_@V@2U+ z6-?E1^ST7V+@#Ke3wce$IFt9k%hBW9`|TTM2Eiu1$$^Xry7K;0Lfa1S!r>VH{mtIM zkUhc@4=y{|MRmMNoVTPEg4h25{o zhvqSp!A)4t??<_d#_Lzt%zoy4QIlhz{0{;%DEt9D(a_u?F7VK?L-?=<$^+249!vt( zJiDJi)vW}MU((I>Gx2`;_?1n|sbAJdfcHTXWMt@p#0MUoAo9=xcn6KL1TAqqvyU#b z-*T=ceUmtCG!m~BHMqJemjfKnw5L5*cQ!wtm;ETPF85#PtOo3NI{ZmeU=4k_1#JmH zIV1;K>7tQnl$V*xe-#-ldJwW`K-(;$BHYk3gk=CaWH`RRC(IRx)P>0$=2&pWZ%(Hy zTF5#ZGBL3z%zc>@^rS}pKCe-3Vc~WNck-G#A>6}k-LQrcl7LJY$RdE z0{b;ogQW&)#m_hWDheWyjJj-=sDPznJ@3XA$EZ6ZI-brRRP93ySivK*9v+7&{MoF& z0&^9)ZX1s``TXgh&PVlUnEi1K`Rg7VooPMqoF4Y5edPsVfX=7?-Rcjf#v-`Ehe__n z5969pNP(AJEHA8vj81s=7rjgyssfv3YO?J2H`9lrKJF-OlYY|oOzcK}uAnokkV-v! z_;=tEeQbUCDYEl=iSN&Rv9{OOx}YHFYxwDJo=Yp{Gu(fA3R)nCERi}hM zP(EPE9(Mn4s7adO#g4ptv$_?+!nw&%b24H2pJ21dlL**{;LYM{YJ#u6NW8n{i=qEQ zj8Lv2>FiVP*EwAxES9Z?Jrjs z^qNrDgi)Nl0;A+jjeti~`;kXMuE*&Bd4QhX)W1sSW{36;wB?pkKoi;v9UrM{<3UQQ z&tdj(x8`ptSuFq5_of6H&}=?)so}r6UmOM|s{djw<)t~wxeK4VF3S|x5^k_hb1X}Z zLIdy(SGDG>)lcnPRvvDqHNA8#9lb|oQ@$G>^)x{l5MQ_1MK$_(vN9#cU0>7<8P3I;6MA20Y;jfsb z#!CR^QI^vqcpr$4CRGnSA{2rLfPZ1+e~NR*R0;ci!_&ZhL2T$PyA#^XI#Vbh;g>;J zU|J}9u>EMDh|$qn{DB=RFA4j|qFcVRdz})~DtQt+T*<3gJ_L!rQu8)U0hca~85Jzu z;&=;*(;ESQkeA@jlYsgU-A`WmW=W*usc&bm5mQBpgwDbI}Sz|NQcmHHEtKV(6 zEk|3Gj#biiy*}GqPc~2SHn)N++qs7(_-&;=T$5*F&jZ4Re-DjY2oOuMXqc;>N*}D1 z(Y`9KHlB4#>e|`ZgwE+m>Q}W}SLrB!J?~WNg|QbGPN~Q2^^X|ydEbm---tBakh8rA#zAw>qx_>kI7Vok0aD33@*y)z9W_W^e(^mVkWyP zC#8D(YJ^~1zma!uFo%}Acz}s`34<=_xF6-k@6CJ13H2USaDM{m!%Q`Mk{U@2af~wL z)RKb6Uawiix#HuU@`N&5-IVE?`a@oxnoNd^vh|v)AMb9s^!DiXXmi>(>Z!KR;b9U`edqZH@#)3%^o5qwGBNLxPZy$LzLSeEB3n^Q zkTDJm_ne1)5q$R}!mU>UvLB6EN4S4Zy@MSYxi$CJW?n955uqG!V?xda;m??ixrKGx zyY_FA#&|NRQ!lrNmf<+R&CREt??&=%J38}SY;MjD^uP8aq3|#EA}2_f5Z%-cVmow{ ziC|eP1)3&+F)LTiE>|-ny2kB=m1Ct$Gh(ANk8`I_3^!CXwY$)RGpr8=4XYi zQRn*!Zi(|fGSNu3;`!IQY4L=P1a6yeDROL9ik^^g1Mdk6!V2DVa`(dF|Av(;8tzOg zRx3b1waT5=)EZs^OZTsmjEj-LA1XcnU2l1zKj#RfIZUFPbYw#@WYmDgJCls^>?Tp3>ZiUOrx(PEXYj*x2Q| zaU^|IObVS(k8kK7D|vV5S>pWg*gC5XT?wI~IVotQDF zwum9JI*YP#+%^!KL|I9&&(~v9XZ?`i%(+T}`k2S$A`L4=a`}bqDfhgTU=5JjL|}!P zHBhMesF^~?X(G9P=8J`+Pef)(dM@vTk%Jf1Qd|EuoJ+d7ar@lI%g|L>ikGPrFQRt% z`)fe`eUMgs<$s};ruYpiShOIXeNezwSxqW@-;QG6i@!Q*_KL*P;3&3IuunriEhNDq zbnbwn9T}A}*>yIxGYBtoE~?VPx01&v8+s6ts`tTGSsJVL)A|PMjcgE|fBP|9&+;9| zA=1KBf2yI3SidiXt80rhoWLt?wVuCDY+yuhb;hG&k{pGg8}Yym__EEwmxuqO}KRh!xpS@|0M4&jZWn`Jd!j@p|FH zk%4moM%_Sy3|%8Ql%k^_hZK$vG9)N zqLKnHmmNH{;;XJ7#J?lT)-N#fes~132o+zy>_JYf8yJ7&Nak}@izR7u6csCKVsoMU zcNqUihx+v)r=LVuYoPcUdp%Ex!VhojZ-o=VQZvTEu1mf-tlr zkkT~}Z2(}uAZ!fHaNX@1jaWGlpT};b<^kW&MsEk3?dKEz0ua=Af5V9)@(lC9tESPZ zk*1p}II&rv-htH;hyoB+5?n{d)bQ_kAxd@vRVvf&eLFe_jb0WE$=VERE>6~wvU&G5 zh~}i5;JSqaSH)AJqwfdiYc${11vsdv&^hxb4%F)@_&ti&Kfm}&$py`-?NO7ElO;v6 z%OA9#=gH#iHJ`7-b$V7f2ogh@M5XsY%P0j<^KY?)F7>=0VtMbUyGrKgm({e6WRI%A zoqGWX0S%sbbk2i{7psr;jxu9-_gm~+Tp*%kzznh@tVz_RP>9)-2@w>o9}G6ngRu#& zC@g8#9)l=e1n2zyc4X)FB(BN#`b1Kx_Dw{Ki{4O76|G@jIac+%y_rjhUtn$%XPHlK zUVO1)oy=t}IJse^N~Y_z$fb4g#iUqW?b$F4O6&GLvw8d%&rlMIGS}XW65ZMg%VJha zBAXnLgsEK^4h=1Ix;!RHY4r_yaK37+!f>Hlnm??x6wF=HuYKW{QPdfhfHM*=_PsXH zZF{K~S%Mwk?`d@y#}M3OP(@%VlfM51Cka=rKb+jVO$e05o{+2>1hO!rfN%U?DzwB+ z@DI`s4%kxRe_!fMQ;)_|vASYQ|MUDm0py_mN2$slfdO;|AnKLTaTMqxWGT zWeP=HkHPJ}T3=HGA>WCm5Y)SU_FPg#(s(hj!gKzCqmIc54LH*Vlh~5BP(x{?rB7;i zbi2$x?i|WHa5dl+zBwKo{rV0+B1lV^A=m1pa_Q)-_5$5#99;R$l{rmYYsplzyM86U zb#m_bHO{SG&RAQVKjmMo**mEv1Rc09h zY9M3gdfW!tBkK6^0CX;aR;GdzOK=`kol3g9G15D>V!ER4+)f%&1$e&^EFMfQh`Jh|E9 zC*h}0X#)BZohPg5?eC6frA4%B^k>fW$`)8ZrA8QfwDH#+AHSWSnwzsBk+3RX*O%0j zQzf}~oNc7eWG{1tdHyE*VW97R?EL0arZ-Vn4dKoRU#6^e%_?8~x9Y6T{;GuM!y-<+-1Y_U zNrNa2w~rpUZs6SBUKN=eLpD3~&y-$09CLGzl(7@%22l3oe8$MXd4A~jHGgMg!$Ygn z-Sv1^8j*&J7EPHvG1}&%&!-4$zrhsPoLpy5=zN&h^|JdR8p}Z#x-NuMkK4Atv$4u@ zXD^yO=D7z2q%M>rRHBRrFs5Y<{)n=&o3dxpisD(TW@fJLLgE}sD^%b znzKea+`ng^kfMmEWY}Vjg`#Z3F;e==<&7xZ5+W|il2uvRSRuhrxNqOeDAF_NaKNnm zdI!p#6dYw`bd>GGw5L;2(q+w;tIPQA3XdD7?w2$D%T6oZ+l3XCU3(-V`HcQSM(v;Y z=(6H;PC?|{J95A1a71+0_ifA82GApsxb*hftcotP4gj`}e;>RFt5(YEbAOqTdSd>G z(NY*Vj?;#o2NVa;hP}@ch2N`}$sn@MmI@GGqIv(#oY@8+>Gw-XV_fC)dJkXy*Zc`_ zL|COR^L@GSs*78Vjjq}7%*-f4r*DZz()Mm{QsRdrXg6o4qL+`{WM%>^y1H=3a~uHy zMK0A*wJfKRd0KUl645F?PdT5Bv6Qg+b>qMf1Rlho%UWBB2o6$AISQBhu*Zl$%3BNB z!4qJUg;PwhmU0xk50Ilv<=CtrHG-oj;Vv~54^G*i0E_R3XYAheZUls$W}X$ z@H@&JRurr-TDg3|7nkj0!H{aml<6V}xDl4)r-;~TKhr_qQd)s&NMk>tJc0{xraM(w z>D-0)Da@g0>E!lzrLHV31u~zZ7zK#VU$O1D=O^| zg4=etS$|G`2ztah{MWtjIeXJwGgFCS%FO7FR`N#2;<1uICXJin>}YsPD^h$=&`Y zxM3iO+@`V-38ri;9ps8GRIBVoMJ75LEy?9Dd=L?M!4yLIES9cKvo52WfztsN%F*>$ z%V8*Sb;}W*4zF4Ph7oZZLl1EavK~Y=**9!rC^J7YKWei2F(@;va|=}E`S)cW`tL&^ z(tBcs$i6B%`o_jtFA)p9XN#>P{Dt`SUDCkQF5kBUkwhvsoZoAo?>O!4w`1|S5MQ5F zJD;9@wX}v0+f9Asaf{1*SD_^AC8^sK=Ae){ifvRZOOIoOjGTcZL_o-hr!|InPf|*f zodrIYD=7!2{aONi1Di%oO1B~g#?7hh+Q4vs0_7EVQVtUt1Kp8&DP`kM(@i6$$ER~di8hJF#(b4U<$5+oi zo7uFS$lWSJAY^Pq)&Pv=8iRLLT*pz8mL{A zD^d_0tJP)8kz2pmGE@P`=zmv4|KMQUtYo-aGI6m9OBE~z8mawcI&uoJn=mqY<0G|8 zmlt;EI~TB3*suL>tKh=^e&V;)zZJ=B`s;qFLFMM^I`I17OK-sQdT~rZjDlb1hg&El zztEoMh&vA<*`i?Fu&|ue9)~>K9e7>Td^LPDlWR2J1ZGY?)TPsWitU1A1k;F7rGx8`G{u()S_xb< zX^LW6d8%|=V<~KHtuKRE)kcwwF*MR-^OqWj(2IO5a8_G{8eTroRv&Jayab5T5Ldf> za~-~)_C3COzv?u{oLfv&^)05ocXWJyJg%YO=B;<0XE=kXD=EQ*6p)}(osPsZX-UO_ zioo7W{iXCB2~UI-3Tkz2?JtK5UGhqEDQyB8m+^&>IWn%$BsOE3>j5%Ep(MN8D0+lu z)fjCL@@3YXB>$Jseg|Q&e9*QZ1`ijXw?c_`;f#+p<{0BnSMqf@t%^HdH_NJ$=&6Zn zoc6?wZq9R`+K4_=V92e&XlbN4VF-l1n@Qq$KD0zL8biMjrZW`{`Qf1GFrLAQ&Rrg% z->w!*_2>J1buw&Lp=7=~J?pkbgLnHtXQfWE?~|t{+sG!~GzgChJ}*w%gR>G;7~$Zp zZ$M=Pj|KJkgS)hhGI+Xz6os`P(WVkSghS2W3-O_{whxh=P8AQl1g7YIQdi0XW5h2h zP>5mVFlt<+lkCmSh#DqIXZWrGmAsSm>)2FG{?4$fAZvUn8rtgdT%;gscgjN=D>Sp= zlpmG66un+r-~RqY4vYW4{Yjn=m=!88C`M4fT8zaNaPir`ZVK7*x$c9-d@n#B$)Tv2 z@@|lbKM#0LK7RX}XH%v!A?ShWhv0{mz%viYlf48;=v6QRAKpVvNtq5!M|AFe@O@+4 zuF&V3lib8%PT?GjI$jRRB+%=mV?`7eZtaFV|07Ok_Q@gQ-JHb4Yeiuz|9aEjeno@<_CB-?Bfou%MVe`@^}e+ z)ie=F-UK1Y4?H8E&(P#KKuI1Ks#Zi6Z6zmfZ5+*sRR-H5Z?A&H=>2u?!;DN41`T?ybDQ5aaS zp>2P1PyHl~HDRytw545^NV!78_}!Ge9~L7#5`LJp$1=x%S3RRImq*e{c;XS33iv*9 zh#hYEdVb=Pk@;)$8viMw^-h#gAIm%@4Sn}=#5GaFA_L_!cMsa#uQwJ7EEHLHY{sqT zeVuZjqD(&07J)3oSqp|JA`teB-hWHX)H0T)*MW$Wz;FB!4DlWsRfs)98AbVkJ*}6) zTsdnyYnMVp>v#GT{~qnS8-@&xRgq&_zuQhU64%e-(>Fw#g-i28xqF9RVj)qn#Z{qY z4>PphMmRXFDue-uVYEvuJUr#3Hl5e`ddZGr1WEPeMc}bQ@1eJNo+@^@mnD zW?)B$l)Ma?(+Zby+^umFHP_l$1oiLVY42_#u?K5)ICTaGj51OrG7>TRQ3wlKs~D@R ztDpZpol_K*Vnl}3U`Qcr5g4(P)zgu0Rq4hb=~EkVJ@7ePMKV(adrsod9h*f&cXG#Hx$^=tc z@v6n;Q8%vVebEHv*S$Z}&$|MJ19!z&1P2$c_EeGyKl9$z%!$>H^x+t4G-TA=M*syS zMeC%t@bhVzw7djsg!=?|9_yE+prqHsPAp?nQQ{N~(`Jxr%zehRSKIICZOjAwg)pj& zl%E68|3}kVMrGA?U6}6fkS^)&?gr`Z776L@xan?0=}@{vy1Toi5k*ouzx}*peEI`@J*`}<15RQitl0RM zwuB}!RM=+U187Is4ydJnOcK{_ZEh-SO)=nGufIK1?LtGg*mCK{HYr2v9Zu9BiK#-8 znLF*y7f1;=YHdJuz=VN=lAV~0@x6i|^qBqrO>6oi;^!yf_&lDN@SeAUfe%-|`@0(L zVx~vT=e|fb$ya$Uhnn^<()x-E@7mJMkmQIv)aaMrO4e-T?H$k|U-*7{SZ^onx|h4g z{n4_0%0`n_rI&@9)HYj@5+P46RPwX4lf8l2yei1d%PZF%g-gWv8d8{ywfMrJYTgSI zWAJWpDB;q*B6fX7H|WJ6Dv{lgmh(;Rzo)jl-6qB(fe0+n{tj_OIepk;()&1=;rVS3 zSQz2xK*NRMu?@%IGeGm>?M5dw9C*D)Y2D+D(#u8A?V)lrk6i%*E=`ra~~q(CmP$e-XiO?_0@3{t3z-6)kz9 zW?kW~k~vlP6-rPQsSZZ5lszn8EFe+4@Pl%?xs5gLUb4i(B|g*n<&JcK?bN=MpHLF? z*K|CXR%g0;%fbA#7(%FUM9jB;{>Dc~!aIHzvDmA#XmWKg*8C*&_xiScbucbO#?Y99 zv+()XXZL?IR7DL9D~R#XHB={aLlD=Ec*tn3!dMWJ+XGiOqoFpJ@58lL=hO&N&||gv zet27Ze+=%-_xei}j%4VuwOnLd3#vs`Ev*Bmk=;RF8t1*AqMX}VY}Em(`q{Sf?>5>I z3EBI;f2>+|S}od)7ET8mg@CYf26L-%Ee6^4FvVhbZEG(@a1>Yi$M`*tXySe%v0v^& zvoY{2U+_wis3L&NN&H!G+Ls#g1v3!p`NfwOLo_KiM#n-!Kg1LD{>os|XxHb=WHlP1*3x>q z`D<}|bJFyFF&5!ujkDQGzKqv-0&M5KGg42g4Y42WVy4V74^kMc!FQGa=+9CsV;#ip zQ%7_`$fn&{qs0*8Fmq!N^YAcJSNPP*1ijSWs%^?MSn={oWfYS0UrPkqJM4j6QCLl# zNM<2JYHgm39PWdy=z`ePn>P1dcV;AZOVeKy#11x}#aOAw7p{U`K6A-ZoBi1THG9Ut zO*DL@AYaCbP7`0Dq?72L&*njuZT>)2t4VR04CW%JU7%A}bI+ATgDH6r=5k5CDg*|g zbW=8jsmtmlvXF7lg{=b#Dkb#16}?W*dr9J=zhfB7?snv{B(F-@d*J{RbR~Nk0z}R+ zZ6GUEO2AKWNK*uM?J|RXCJX~^lI+aNMw_(vaolw%*c?g8Oqw<&orH-KW+HKr@?MD9 zU+)qW+bFn_GOCj?VTC`P&|GZxq~!n$@en2~ z4gA#n2?hs;Y<(kc^gDzL4>I|QC#MvH4Ed1y*xJ0B@2}4tv5PZsrd{cJb@EAvpZI>3 z#Oyydy)P~33`AlxNsWQBwSCuG6aRKBp~j@tGE>h+dL9yoD=na~A?LhUT=Djv3<2@0 zx67;bFh&fm{`Ysj8DE0}+eD279B~*K!LWYIthp^z;)PpeybuF=9O*3=gR^BFZBW!#Pi<5*GV@tk6JGr3FY#o!v{NO1U1 zwZcszGz}Q`hLXXS<(UO{BuMXwU=XzR6@U6ZdGZFk_0vg-nDW8>;V)yIPvCt z{&__q|>piES_Bh1{M}pm!`j^aZoR0w<|g~$HKvB5{*`~4~96&Iu`9|3Ij4p zU}mboe2u}eCu&-J8(Lp4l6>HpVPhztcEw>CKD6y>bSdUo^}09zyC+~PbuTh?;MKFOt(O^ zyc+Z-;_c!6-GhV>Dl?sJ_aOK5Vl-P0w(oTr)!H05(5SF(oslSzMwZ)`4z)ZKz>C@Pmi$WW2Wm)Fdz@nUo6^zJ-VGx{D5YXNaEG3C>-{$rz?M zVPQ96j$*dQHNlQUX^gxr6dmDk!h${sfoloVZc>9S#{2wQq;I5f@thD+1<8IStBftY z3kr%A<&lypDw}QoT2k~2AIrfBeJh9=h{VL+-aeNyYNd?0R0RcdWApoZ=WP}iRN{GU zZEn!EAJBkM``YDqd!rr}esDG=p{TF!^Sx=LasHV%flPQnzA|<)ulJ{^zx#ok)q_W+ zf|y_W;A<#bOREdIUDp zvDk8Moum65rO4nAwn0Lxp-s(vvC~Opf*%^~XQ>gA$l|9BDE@}+Bc1UM8U;W6+wO&( zS`h4CF6}CF+H3hH@FNUTg&nUc(mr8H@cDvRjwnS6<=9}_906C6wlHEYMvcf^0*OlG z7ub8$n72urGQeV6A5JE+i#=K~Qgom61=swn2kr}h>LV|L13UsvJsvE+qchb%N`Gpp zinlng=L#1=6eBIBEb_KI^i-^44axj{hDxul`}*@|#M>gGv3F1B#j(2r>HI%I)8bh<9&}>`u}Cy?WOb}m zHW|}Mgl92FvjVdZJk9gLEIiE$O9S|2cH_2x<78crH^Qf)o$}EqWEIyX1P4l)H1Qm2 zA7cxyWGDjvuvbjS1Tn09H>Z)D4g&m?4hu%*i-EM=SZHrlgOTz8B?RI(zXY5d z;&_*2uq0uSMYf^A%DXoozwas;i~%MF{H|@Y57s@G@Id24MjX}z)tD@E&z(Gf5EM(h zk|bl876l$JY{>(DEL>sOT~`$)^>2|Gw93pj8mHdB!*OvCGZrHjQAsI_Ms?*Wi7@Rr znwNUQ5%zl;Yb0;(5;`G``qoSc<%i2Dz1@Cp$ECbxYQ5S_M8mOqjHlz}m2Z3#{Wq;tTtxFDv_`Vs!OGj6ky8lkqrUBNz zPBkMWwDhgf)y7@;XNKRuHK~>tMq)hXeye#C{Ckgc=hdPWLG82M%czE}%wmE+T;kP8 zs>}kW_ylz!l4wOpvQR7i~oOF%1m%4tqK7 zH?G@k-pCC3)~OD%%mwFg;!hQ_tX+G;0M|jHR-n^)CN$`uL9V;)(HrSGF@zlbhBTqV zCM#(R;Dl6Ru24D+!oP5O&~p74ii~?{+WxWF>(Nj|WIx@?IR8>1 zDwnrZr`0hF93nOP`V}`Jp-;va7eKfbk4cz(gtK<7v(@c^ff>kK>TLhx`BisxE2k>O zY^|?9`tqNQZ0}k3uP)ndiOK+n_v1c%jg@MiBs68s;cwu+pgV!^3s4{ucFssA&F9m{ z(1HOo9ZMniClDfxWsxaI0uT?%(55f&++F#S>I?WF|AKHgrKIOBK9YUS=i zXu3@w@V6AZ7K+J{ACUEL>usl3MfGj<=WO4RqG&+MVy{L-|Mp@C8@pP-l7gpN^)7N) za5=S6s>6_V%#^^lVfzc`Z&B-q+0Upc|sEvkW!Eghb$QauQ9y_7Rd zR)=O7@c1mst%)f}mxGcn7yo#IO%o(&j(iS}@c= z@R3j6Fd>+VCZUEBzezngvwZxq1L-|zX3noOXb!6?j18D%eBs}{XF5IA+#F-Z{pP55 zexU*OY9qQZ^<2)w5|A=e{EPikQG{IR`wIRV@kULo-SqYtz96zb*4?SFgJ>c-E5+;R zMw_P26tf;jH-tKNeFJ#pB-9w_laq0IKc>Vrm9pAq1B(HuCjx(uzt`2u`k`IM1r;qg zVMV?diuiIj50Nw8@J#vkjYVwr0@)@m>tJKdoiiVf|nm^)xx;51|i)<4#7e&WLVw$ zE|=mbFHQ!{OlNIglnDET?B=TtnBC>Ksx86g`kb75%*A%<4q38tRp9JU@`9JrL7iLT z3m(QE9Flrpm0zSa)ajq=4a3Ez7O|Mk36ATZEN%L^Ew8N>Q*SN;f3)?=Q#?Q3)N%Mu z=y#hw`}=Ew$-kCLrGhNm#~3WBBW1H9$S#W=_=-Q&AMmxVP6rKfWs?2v!4L)z9M&v> zDi7IF4`8Lhub>F0(QdkIb;35=yf3Pabfw*eoq1Pxrq#?W@x>EQR8$l}hbSWOizw;M z2lJhq$O#wT&lGFV5?>Rmk2bz@GZTE1P*+bvqCW3Wf=1isYZV+{&3{u@{b3M^Mu@un zi*6%{U4Esi(@kCUE?&9NVhlYADhqi1m%iB0FWtsF6Wt;frS1k2x#DAs4r6l%YLt-J zCdjDMQfAb8>|gD{)1o!w?Oqs0XWv!h--^Ol#v4$&Gj>bKG`P{eHMP)K~*N9lmcnDHqxz0ySH(#msQ_wP34wQn9qt3F2^avlE2AL1{(%R2t zaXI-3&r+D6ZS4@TvHy3FK#~KQ9Q8y4nXEqWuts>k1UM|_<$X164eD&#Z~El4ULtE& zPu=8@_Ly5BYBTel9#@ViiYQf%1k`ChL++m+-yFPEwGX371hoN^E@wt1xWd$Zb8)Fa zKVKNZ6$1SI zAutnyV7!a-aey;_=WZ{Fb4cH65-W-$yLZCIxy$7CNlp)13zipq{*iA$=9RV9mMszP zkcxq1oeG8(h8VjEPCtR@>6XgU5f6uvldQ7N2|=Xs%RL4W7tUPGSRgqpj+f-lrmL56 zFSgmL$|olB{7!$J+WGl3lF;`$x4>BjbL#72b>1J(+^NN{sctToMI9MJ@9~

8;lSAd{JrA0O-&or@oQ?w}PIUNmg)dafkxEf{@uCA|FN7X*mjS5=a zXRVsWHu*Jn%nCan{_MX|ENm$xGGTEwQ_NefNSpHf z*G{0nZORky!2W*~=`uL_z=hgUTv$%M5K;qEW{W~2^>x$n^$df0qM@;S7aR6ft38|`+l6t{q5J|-b#IaFRU7h(5otQUIlVn64_8=tnzZXnA`mMEU zbbmRvyz#y8hiDE3iy7Nbd7VCN+PP8#?i0Q(aew-@ki)~>voTP5Zy&1uk09|Uy_x|v zT4sGb&m17VNanMvMriK<<427Pf(51DSfb5YVbBwq1vn5dq}u$-O3BET)pW&~Cs3uK zWr}F2Uc+&vhLR4HPP8W5sr;$6)@2_z?Lcv}u_m1}z@?&|r`9CPvvlyy!DX{xarWzK zkhd_MX{LGUg%U{Q9YtRzjj!T}MXblHI5y03E^f!JA{={>e`ItqC}6}NNC-%D2gn7K zb=}d~(^S%vg2)9Rr0}cWefl$D!`AtG5}fp*sDk}{ua1BxL3k&3Q9!zieCIHtsHi+J zeXafnJrteUVwU=%cA|jwCxn<=#^>)Ado5fR>-Z)^VFDgITiLo~IIW)){(PCD^U~=i zSBRd``FV0^pRH}Ga_QgE=0N{8gf+?@7M2pjVxIL3a%xn69+fN-F8aH8oR=FKUA0Mg!_W(-Sg)a!0z7X~p1Z_FRhL_)FPR}t~6iBOuF`qpkXzyr0lLwHRpgK0Ob%GAV@6s$YBh&#x#zkfBi zp$o39+J#ce&}5wvqph#M+^1hnih-vJ0LTcM zcyl;8IXQhpLoUk`q|Cskcnnry*TEwcK=XDP`g=KVD9SCPbx~Z47F3IVB>$tbsHT(i z(^2Snsm97_-!M1Hd1{7D`uAEhGw~+(-QV_Uq$~7+(k#@tZZnneK6HpG#D)sheP9`u zye=g{aFSJ-Tkt$qscnG7`04_EubL|u+ zMJ9^Ujq4xV$r7#>zh*Qnwzqe8Bhv+`MSh>EtC40lhSKc0$jLQ1HR*bow3Blp^Y|)V zz-yJ0^OQi(@ReNN+8zlR`OhXPM4X9Rs~IXT23zABqmOT=K}kew>!BQH2eSVSB)Zy6 z+@bYwsJ2@vK88>B1CTuhc8JVFm}^Q>hTa^`WYhrq?AQP}4>Y5=HulKDQ^d^~0l*%A zFn4A>o~FnrqvaMkcGV=d>UIv7UXjcxW2J+uvG3ZhJ1R%SmHJt>|IY#dEbP7ZUd}3a zO|)tGP57F%$QWh%J5ZnS(K{hwV%m)tvzE}8?56BUqA-4AZc1EDvvoiFDN5q;A!Ja* z7ydf`7ijWulS78~-Y}%8;1N3x{xr@HIf~$S5thQcspez2dpAo0!1w%^s zc(0R^&6V2E+1Z3F$%w@t-Y+Dlg$slB=6Yh{Y5n-IZ$QQry*sATrw1y=D;v;r!#dkL zREyPfr8Z9qTz*%{KG3SebDB(^Rfm#c8wC`55Gg6^nu;o_rQ0({HRjhtRo`hxrGdq- z)NIWs@CtljxES(bP1{uEP|mfk1IeIOt<&FM4@6wj^X$;`12R3c9!*`OQid+k4bLhb z{MYS^0Imxp>Z@5hMrGou^L(Z`Rp%l-gQPLV4C0q{SKUnmS>$n?r;T5BOLpIehbE$` zrmHUZb}3d5I^$MNZ0C!-P=!2BdUpTCF$Pxf%$KQJP2~%sRSHGGI}y|cJ^TF!g!)Mn zt$0)N%{vKrJrJqm7PxKCKnLyd%W&DM*V3_}kJ5sjRJg2Q;`rS+$ET(5dd*L{cxve(fU6JpIVB7t`Wb-$*k{ZF=n z$0xpj)f0aLeS&OU?9O_xq~}}5+fy7pY=W|`&Q5d!0vGxorOfnite&_8We;^qHxOD? z&K-8+x7cWMa#hRK`cz4%QDXsUBr5N#RC-+9G(~rc^wVi4*HoU=fwmBT;>)g5~`^ytYe#8DG&O&ELlOs}nbTkBC$4LPfSJ1ipea6GhH6I=mE$dKUqz)>FsOa@{ z_{2!^2Coh`d96trA*UZnvh~w;sE>$zf@UY1puvk*6uQ=Q*H8YvAw@bfou$oWs+oG4 zh1%M#z)lx>j?g&c5^8+VZI-eeFn3X>zk@+8;Yska z8GRKZ>oDe;yFGQT(eya>Xir7QL|MhLK+$%;h=_=~C|;gIkE}eo*-X}bk_c_%2 z#njACEfE?&+Ldh@y_`l7w1$$Y=E9adSXd>^%>E654k|WTM`sfSb2%SdCit07vL9f2 zrmen>K4t0mWjr~h$_Ke$QA}G|1TuyCbK&zmjtX~^?PqZpAsh2G=uW{P&X_J`CDu6@Y< z{{98IqNTKSABS>&iP#}41CPqa#)iQ2IZx~NL52VrbgF)l@JjSDOBWaQ93`7NM%(^; z4R^P$Zc=CPdOsY^LkqqS`uqs~T$)1DUoMy+e5zu@)R-OVsn&59jQa_Sd7Fp`;&2_u zUUHI6`Z`$`vXW{~zx2>>#e3zEiZp#e%Ch-Dn0mg9iYQpss{Bd}A-x1gl~ z#46jdiS5aj?-52KJFSo;>J=jI5yfBpK)4}JQ zK9czK=IN=7#|eeqObITmYD;~&Cf7x(r7l_5+7#w*FYNUR^8T4Px7PJa)p{#$acWaw zyLKBXzi#I#kUdnZSVr`;Vjv+~L1{TPRfc_?{^M48RnoX?L(mw>k_gNOig+48GU6QA zP7-&r568B=8z*=Vnr_ZSFf#%29xVBGG{xz6z`KK~0r42<+n@xc*n~S@yo1WQKh^gq zf;zkx1q?QUe-^L&NRB_A^AJT3i6)+Wr0MqgFSrpw!5)s5I~(7JH+4@8!XPfw8A71G z)tAwb8T6CHCXWwXy;2H6-%#vM5DVg0{w*>7cR1Ilq@JafK5Lkt)M`1HM<(6cl#ZLy z=^uP2+R3c*bu1Ja5pmHJ+#@AQX`hP&E~$lKRWhI&8`I+XJ#k2xKhjq*nR}nTAHq5o zf7NzUn6@3o8AV#)L%>K+n{;*_TYkDLo(K)VT@P)kPcIeOK}Hl*fI)`CQScqpf=2$* zJ{@>dpA?E_&EF0{en1()qOD8^<$o*#CDNpGJZBjlE3^V-C~p22R;T)&Fr9BjROppq zSBs76<|LLQ&=}jHh&L;M0*Sy1BXtJUm+ur1=J{64L!i+evfWAk!7+@`rXlcb|M`i4ZXqBJEGsHe6~=jN)tLvjj}8l=*`nrCJvXOtR-tge3zexo51A@lC7qqk@v3cKn4E7mEq zUP)lVGHP@Q?LEJUWrW|&br+G?oBU6M-Bs~gD%aj)>B2Ar5QxgKye%ALInGGMTND~F-u!u9; zB3Z$C1UMMJ7LEUjHrO&)azywQ5_VyXKA-hx544|Ro{34mA!W#UT*Q`)I5{~)89$sf1WG(i7VJD~R{ssYag zaLgF30G$N@{4Dh{SfR-Dz(o;5+mO5XeJ6@@2*`>p5XQ^5@{061EDhNsGT^m4yGtx( z(Rq!WhXInR_}I@*YJqgR-Mm~S)1^i`ED|PqeJAVd_e8=slS>bG3aGki0A9dZ8_$FX zw!`Be-dVZ^_TZrck$p^$#KX4&dT41{4wb(O^WSB z3{TIp+DbF5MmeDU`lqp4dlI1pU45prfZ*ZrC|RPF3i`QHIKQr4E4tn^T=V z_JDfU13h&4r9w9Q{U(K~ZkLBXrFFrN zQida{q}k^_t)!l3twY}jXu5Vt5jY`EAFQ}vhkyD;%X&JSJRvewj8GEP4aE{^uvAoN zK>NFJdRf)h58~C*w+&_6$BU96;}lyau*xCp{;jtl)RvI_9g8lLa(Mr;0()_oCdiON z-19vk0M0ksS8yV~aq6dIZFA0izAaYx_hC^`bHu0&pmBa}|KHPWX`+iFx@pKtiHD;d z{)n4LG_Eg&w8ND}+yezN$hq@--?#%ylKVu?ln2QS6qyhxl3n`%;*>j|zdCUULr64X z4*F*Hd#*IfuHNyBsF3IJi*fc~l2+TuX)#>Ka2&e*nt!X@^C#@W=NH48oBFM4fhXyV z)TYyuwq>e$N?%#1dh4{F&UfnUl78P@djsdh5gNMSRJh80WOSab`s}P_&3k*8%frch z^c`Ki^MB#9#f!^+z6Y$wF{Yj7m)5RcQ+|`pj=O=Gdf%*G7z@M+os9aU03x8`qm~N? z&pLT;QG?HHFlu_k_4yw3Z=g~Z|Ho}|1W-h<)de7kAfEh}7(+7JNEn_qvk~!xIZGX7 zhPKFsHH#H+jy#=PQNsF8xnsB`H>86)M&lj0_je)v6v4J!X({phT4I3m0#zfU%74S? zA&xOiN`-55E{n3av8nTUKH>Sp5bU|j95K;jUSTf?)ovu}`J&#t!m!^rw^a(N_)gQ4 zdDNEt5qCa5zsQie`8_zN6n*?rIV(-p&t+SD-7A?q{-j^$=1Zu=N6-%sk?=uzd1f$u z%UzW6GT#((SY~;r7>za4^K3mC;Ic%MbR6TWpCNkr(T`4#rW~ zMpl0-Lp7$EDX?21O$MwoQh4Cw1Zs$8dLKn_{zv)@ZQv*;aV!FikG>_N43)=`Ph6{O ze}d3LFSa~5yFy;3NuNabr+=gG!xcbdhB8aQoh!TstA}Xsf60a=kg(_>`Hs2(I|oJj zr6EWaTVnRr%rvUC)wqH|bI^ zPCp0XSUPm{OXVnrar_-0*cc4Wth#urGgro%B*tFW#R7 z4*@l@Hv~ouI@T#CuLT{Lt|1aImGYv%i>_x}-xn({0-g$pBA`wE@5HV@5S#`Yp)C(! z2@$xGzZwrBGYHKx&IkWRZ$NxSfw>_PKzV}BUkVPQsDoFcrmdoN#i)qGs%?~je;(Eg z4eN2<=1Yd5g;ft#lF-{$ri>fC770J=O6yslEw*7gw*k_p+8;47H^QJ>=hOD@c9D|d z*5~FsQXq7z-?800>t@sL^C*vvb9i{T_NAs)DN~M)(T5SNwz|P#)SOY)x`wcF^~k^0 zSoK-GQ&S$!cgwY;VsaW9ZWHcROn#^N+AV&!x@PT8dD^jV!Z0xV#zkdz8+DRZ%kODf zYiYPNonL^+RVg1J0*5%Burv_E75YfMyI1IL*H-`SDpkeN@!M}{ivP{FOYp0q1co@l z8mmK|Vc<7bEEC=YHgYgj1^6F!!dnH&H?ChWJXOx;Umwp69eZA&Y+*Y?KV#wCu+<@D zBd{O_A?iZi^oVUEenF`t(uehsAIYGYAzVQofH8x$3JL15_=3-Y$nnw3wZ-bxxa|m? z1bixM&83wLUFSA~* zvzcMxe9X~i@~5bbj5`xzQU`}QjA~=SW8T6-O{(!&77|iWB`X^wD4ea*ob7o3@1k_(fw$L>R0~tv5nGm>y}K`TKDT~O}CE*f)l+u!KdSK zP|>bfDjTiYrq=Sz0k0}JLEATg`}PNo=r#CUU{HZWoJ@$N&PTc{9fXq|NR<2`>xHXpqR2}>A=X}p2s&j@DO)jEbP^j&FS`Uy*h8_ z%p?RR=RyMNe)RLIQd2($|HjMKL%{xc%jXmHh9O7Uo&so!->+gaOuFsKnHIudSk6hm zz~)k|RnsZxe50*Hr?PNH%JIYCk-0MSrsDR0K{H1XfEi5jDkal2Fp9(Kk$X7v?)MR| z(ctuC;(2ea{~><|p8$)J0E62$+c~&4?B+z4qL{93eOANL*sYj1QVo&!JyJ|tfZ(yG z$q$8Nrne&={_`-O)Ql)^!x4wJls%f>$V(I6fBBL>uU&1%E>kLp-hW(FZ1b5$KG)Xl z6|X-!E?-i$>-=~5_C9TjOf5}cUxc<^B{jb$Ir*!&X_bdVrL~>;&4;#~&6dgYfg{rW zpbkDb7PLySPf$_NpP^Z?H+7M>$+nS-UjGyY$F~Nl%9gCzV0geK!hQ_lrv4$0&;-wd zE#-+?fsu|FmeOKH{QUYGYmSf5!6Z@o%GMVY$Vbu`+Wiy zL)z+G_g@RkYB|)EP+xV4gUx~o$;sWyzumZdoaA~wX{$+=kf^xsA`2NzJc>XU9I-#N$Q_X4_1EGkpIk*IM6^Ai&u{(-Q2RMWV1vOP@Z zWJTjl;o4u+DEGgzyOIgKo>NVRTK1SyiZUX*2M144pN#zgX=h0HOrc0uUn#9IWFThb zu98d+{#ew9@!H!hG<^Z?5qOERRe&o=Sx;=@ttC28Ai{)2fE+jFM%}3p5 zL95*7XRU=AR`1V-VX;n5!0YwWjm5|R#YUNmJ1T6RjBL=3k>8=W3C=Bx&4~oY>#;>Y z!hDjhOBG599C;YGHXp=viq;bld>08)IlkDtC%b@C zUTx2UGBRT0vzIWD83`tv^?#P{u00Ehc}UWO(MlN|^@SwJ3e!*!T78kn%z1e~Bf(>4 zP^eC^(yn)E4tD>ZXgDWI<#0+5`~|x*tS7Miu2WkMu70;EpB?T{K_AN}#X7Sydz`Tu zQuEH%RDPLPyeTR~(Qk9x#kKvg@!cZZSXK@tl%pBzX+w}IxYMt)7GzR-+vV`Nu${;> zUxn9pM_CSD>PD3k+&wDuHmXz1x=iL*)-YaOq`1$Iq!b+lgfFA|w!qvlTXNUK-(gen zdZzr*#F~3hmgg})gHrT9!wGA`iiVnXaMQd-6B4YzP(A11P zx4RMA#QKkVttAp3wZtvGpy2ukpHqq9%~8t6MYWmB578Ig4{NlRTRiBZyZFo{u_dy? zwoDz@nOGUP3MFS|+o^Q-$#h1S zk>%r95yc)pD%N3N1=I%IqVXS*DsO*KOtpA+a3Db$Q9kc()3K+-+ZQMs9&HV#NYVMVVpj;6dQ22F}r*58Ryu~NR;`*z?8V% zJl~eB?`=hX`jq|VeW%a;okBY=e{a7u(qz4rK`o=PzD!r!;KbaTAyPI8RZ{~FwF`@k zeB9?;s%Jgdy5GgEmX;;e8^zHNYjnyB%-;ngDT0#S2b&zCmg(peOYIh!uD{oHgdt+e zbY0x6OZAMUr?@9jiTKfq#h0s%hG>~8lKO^sCyCs0B}oljJNGb_%pE|QNHD3LMq07b z7HxahAwFWWQy5vduI=eY|e*R{P<0twWieLM52bBFu?q+je7F81SdP|(rat`jAr^Hlz2%4UR-w3 zlGKEDuEKnPKUy9U< z4zHMp1CKItM*UV{!k|%VII(D&d!N*nN#98M@$A8~|MPn|PQqSQOh+XmXkYg>iFvb^>OL zL^}PmmL5F)lQ-nEQ1Fq^&<6>rd@5sN26A%h;j^J=)0qZizEHjw@sqjO9gLCmunotu z(qkV$A{c=3BFFKE!-Alp2ZS{#x69r-K5E5<$}j2H2&YA3w4{_az(z8sI7LOS4?P^4Uy zU{zUJ?4N%6)8a7=2qT61KZMoocsorKjjreMTdTNL0s%5gj|KlUr? ze2@@m=}pA+YCOh*d=<>7&oMzl4G(%AAh3P(vfngZpWIleO#KQLOP&g5b%Z)3mm{r^56Cl1GY6tw z?EQ&ox-7yDgDpZ-mdQUU4vp6NstJ5Er!;(cq9}xAUrOm(Ltqu)Q7P*+Xw)9>W>j8% z2eE0gt!;;FWZe0>j0I1(y4ANrVRKq7;c+J>&MPz{)iEfh;)P*8_E9A1>kUxz;fF&x zK2K{v&z3vE$EJES&`8oZaq(c3s}Y+%{w|-Ja#&V7O}RCc_s$M&<) zjx^ZJaHg%X>Dc+_gr92jd#U$9&x;<9V<sAL$9`RuNQM@!_GVgK@avrars5`37Pk zuC6?6BO_*pCKKXs*Kd(7m?NlYvG{W@ zi>afzdG#N1HnfEV6lm9rWdB${1Je?(STLL49DiD3ay&FypJS|uWKS4Y*gm+#(xv2&luPK9*nHR2@IiF&MWD%O zmU=jA8{Ei`4Pka2*~o7SxaVrN{+hgGgHHPRQ zHyV$8Elygna`C&t+Z%tnmlY_;d$T5qrkcl-@>_v-f1JU)yN#-@T?TpeHjyl9If0ml z5L&v+qAVmK!H?W}G<9e^JU%96Lq@vIFEq3PQEU4p@T0=Ar8}2Pf&GA6oQ5&w8cL3Sj%D$`n7We!rxqaM=2gm9;gT4=zda&F@$E-w&jO!TW|0l@dsL*u)t&ZMTLa z3Wj2J$48{1&(7+nGfI<|gyEM2i(ygg<6OM>VN6IV6k#}+MbVJdyFO2+hxkOv9#NE! zPr+tMztw+t`ICe{Gp>pXUFNGUmu>9PnIj6q}oi z%cmCRD28Q2oA8rX@92^~=0*PTICC@j#acK5W&>L-u`7S4W`XVhiL8SYs z(mV$r`JY!XZUFgj}oBBD9-Mp~d4#2A6unV-jMEE{f&j zi8#Zi#GfQU^Z@c&efXKBWyPP+BBy5q&Yx;8=e&?^RYft!8ggz9f20{oxh2vl+h zoYmEx@z@iWU!K$3JYtSbeqiY|Gbu{Qjg9N|L_-9`u`0I{q(w$CXdY_OG;a}iZ8C># zuyQ!~30d|39daG;1^6sEni%iXir6LE8xXLLnFPsw)$R2^i-E3Q<5~9JLdIV2G}=5H z&bD9ERy#$+uvYDn;9&qEPAt&#I3p%Mnl3gTtt+ zdv}L4JIZPhgUg^qsv76)G=NmO;p;;bY&O(0^=a-Q@YaMlOut?Cne+E=95!bgIzQ>= zr{Rv+y*Iy{ehv{>EG@T98BFcQv9o;#-Zzk2R~TU#iO=^SJ|&PQg#!FP>LS3eB6_Nk zUc_PpJho{H)GaG>xl1y*s_cFm$Y6|ZoM^1xW4hnAqhRwDS`+>_-o6d$kVfch5rqCP ziqw!A402{>e1$PFYR|;ag0%#a*-j0bsjE{}nDgUhvosv+-oMAozTU^WhWM;wMpIKO zGV)ro!BOq80xMbS$}~Jwq3pk=O4U-RdEC9rmCt_0i~6R1gtu;Oyq`AbNULYvZ{qlk{&57Rk;XF8?lJdOXPblZ1?# zcDriiGCHZD_A{Rt7X^iL0E7y14glldip4N~&ATMOl2j0V1$=EBQ6LcvK*>%Hh|pP!)%tk|O=4@|PK*o&JND=1VM~u5}t*@YoV_D6Aax z%*LSzdQ15GV0>{|w}O&z2o#0g?9%7wSWa5bw{YM^uP#-(QUCa_%>E;a_3Z3Oof2mW z_Bh*zEw&6@Vd4H`He;-6{po_JY7#|@7O<$nk ziTa7&xJpDP!r*O_cI|*q16SQ}E|v8|A*xA*s*})6D6j?sah@g-OA2H-=1f>~#u4`- zoqp++6(*!o$KrrTUMhfSCwWnqpp@V&!Bm7b-L}w#-PrVP=Gyoz-OYH=)inl|f;gu)vsfm}0TDh$j1VB!ejQ z<%?^)6^jM(9+5ne#e_9|C>)NO0Kn12F0m!yqhg# zYi*pE8`5lChD;dPP*5+Pf&~2lRaf&abY|uqIZR6yTfP6SGw`_%MQygFhM}?TieKgpi@r0yJ9RKPq+A*MYuJUJNUkb_~Uev z^e#l`@>j%xmGv6-z{)kW)D%uK)8=vFWM1iJvFz6MNvm7d>rel=mvMBpf2B$>QPPet zdp|tg3VCcnAOCQL&00VO-CkVWr0vE;p;?Yg7{CjoTLS3_YQW{>q>kd#-b6tTjirC9 z;j&IYEX8`uDN6SAY%zwncczFg>L2^j{*%xjNAWue1md+;{+F%>T!3nBEmcRx`};b? z1sML&9(mpyc4HfHEYU)*ENOtqe%~EKcjm|$jko0iVJzXq6E06fmIP^LwQiRKX>1-l ze67fI=}S%E3jq$Ft-Ayew?NQZp&$z?9W@W?9P6d}L|{@OX#L&;k3bDGiYQ`E*bZof zhdDx*4lv~H`sI(KXbl`fQn+gFLJXK`OqX!busKY|2osVrH(JvW#xBz+IO8Q#C%j4ZS+WjBJnabI+9KHS)phq)tH)<%n1W@ zlafrfuLvv#|3}kVM^(XmUtdaEx}~K%q)WQHQ@Xnwk?!sgB&0(cq&uZky1P5xdA{%Z zE&hVLh&z`%bLO1AKO0gZ*J`9OlT~aBSs8nb0&b_Phc*Jx&NytS0Jep0{ z!@!-5ai9Apv{<{8wcKd)jZVYlkcG*x3$kYJ@4@!X10YnzN=c*BMI>RCAdF{&swe|r z!6T6O^tp@p*n|qWZXJ6kvnkqq&o0GfH~LiG(A2xzJEflUhxVgaF$_z5_- z+&xoK*u;dIQ9MHe`pAu3VSB@F(q4_@4paDrEyl@b3oFCSY+#r%OQidt+@kRvy9Qtb z$kocGTD;u_?B`>!Z*P&RG||==bR1kW%4QB5JBlfT5;`8x~(G#NnXm60gNk_`$p1yzb!lS3}wGxijjV5N| z&OSIOTAYvkdr%>vL~@%5u8XnYYn!@RZygC+HFNq z;T1Z4X9|&&thCYvu%1$P$w{Bi!jXRNV>9$NX(E%7=D(FIei=MSW9eTjD*^OMAXx=c zRWlCbNCvP&sg){!LjXG$M!F>FAM0I~n2Rupwy|Yk$2&X!Pufec0O6d$wf>F zn>qqL?~ULG^{{}L64AlDoie8BpM2^8Ofh(6%$;Gxi3{-A{55f|66Ow-m{P)ZuDueb zY3%D(PelIxzF-Xaa#%h!?{#i5O$6&n@PHop{^opYaxAe2X{DqyOtJ9SWxME*qG?e7CSx<9ny9;F^rV7II zMMZJ-=gU&_>Gf?g_+PMkLg}Q>RwFKtwdSk=oik}daAI{&uR&JH>sB>sa4^*$AV27R%EAkK>4N(!+I ziwgU~(FxO=VMLPf*%Pq_WQzCd1uPh0ic+%q#^0KtgK8ZCci*S&_I{V3@a*nnDs`%p1dERrp$e~44N818>%aP`Q z5w>$6Mzi>j+&wtW_XrTv@sJ9-Y|Gzr z1mMt|zXUxE1k8oaYm(&e9fpSOqL42pD#1NSPx}kf6`UM=)0FQezs0b8JY#uB>M|P; z$GgZkmps61n<2~F(mE3S7Zsm9&LgEvV`D?aHb=L=_xWL}K_yZb(!mY8%Sk@Idi9Uk zwk@1qt2DKPWSHgcHJOdg%oRx_PN+m|?VYFnO5Ck+yARWwmjg2IaD zJ`Oe|C$TnJL{u;YR1kH8MP9qxk$OB5y{^TxuPLnG{TJ<(iQExuIqUY_c>|e|%calZ zD{|u;6pv0y4wfiG8&kTQ5(POc<$O{2 z5I=TIx%gSkNq3;?m~?Z znrBMDH`S5`QngZ7xDu_{xawia;9>E%Mo8hT52V{={H)n&@f%I>Xs4VKqL;1le@`!k zkn-2?gX0+dd)?_jl-OyJZdYPfi@Z7d77TMBmiPoi62u>B4Vg=2H4%v_&M?g7EJ&x_CtICWWDYZQcM7 zJyc@@1Cgq%XKBrmSY3HYzl0QhmPx_f%+`~XM(;MK=Ail{s#88LC?*@lRcd_^rBf}m zO3oeZd1X?)E%>HnK!8Vsbs9|&-BG2{ceO`W+1QBllqulbYbT5x9-gmM|2vTYhl$B{ zwzdtyzAe3<{T*;=UncEwGy)_F8Rk%V1VzH2wE9%2!1MSSa3#BzAPW6pM2!t6f*waI zm`D=X_Rq@g>tO8X>B2v9ngb3%&tY?``Z;?2p3ZMj4-OZhqEzD3*{3TTALg6H9V51a zFi3+?B}xA5!$_))Bhall7^8SscSnRsPCej_D~7OwVw_GhKAj~!ac~+MsQ|r!z(GPg zaXubl&NIj&owWBD!bnF6c|Rzw>M=|rl~|d=I#jikgB&Ai7L~OD0yj!ll}KE2S*75{ zqG~M^YBPzr>g`oYQguqL7kX|lm|q8nzBe(+MA(RY606Q=dC~aU@8Z+JM6UT>-Vhru zhwSO`(~ZiV7p;=;$JM*D)I;#DDO%hbQLM^Qg%-FM@?{9aeeHO|Qjt*Uo>QlPH^Ug# z6Z%F2$4LQ3-OJ17_9X5ub-K*6^wd#!H@~e@J>u)F3ft!`f$o~;1%WA8qUTYTX~e5GTh6NhCm&n22is6L`B~ zxV-*;2S2k5*^A7s52vY<@KiCF7FZ+!4xN%?XB5I0!ZRnpblvzXzHomCNyX4W*eM<1 zWW?w9E2tVT%3;xc0zp}(_xP1xXszqNVZQ9?#X-5^{>ppf!Y(Nl+n*01pRNBE265aP zw(L6+mMQD|{8sg`!fM9YX*mb8q3#pu0sMuO!oA(Rxcq8UhA%7yiecwFQX`e3LHKdh z%e~aY>4Ryfgn1)GLwcXf@H&P1w92K$uI(XiW4X!JMxN$UEfrdUR=0FB1-$B-N$kPw zY)8?WnyFiM(N4QH>^*1Wt^tYC4lB(zP3?1TG+jb;GIfMC|Ee(?*KX*=GHj8>tln=> z%F*M$+9q;yUGcjk7aA1?E&jD^qL@?f-MV%$x@`nua5jAdVnih%%mWKV@`_2}wISxc zgdqVW>81&})cGK^2sr$|B*IRXTeAr>1}Ww~7Q}TYOK4Ox*vU9XV93zJOyHQT;#@UN z_`2;b4`sYsb9r8VnxCrL;0MTz$M#vDU2|<&@UD6Xfn=me*^D0;%e548YMC6DI4(mG+9JoGqAq4>x(8*URHHGtQpvSsuP{ISxIASjs*vc+~i=qFxO1AYgyPN4n6bh zsy+;z20~3#Z0cHvx=w7aKej>Bxr1k}%l_9D-`)4X^bb0Y-|>4da)x@(QE@Hwh zRS1%E1FaS4HRkP#gl1FEDXM5L+9gGIFCjS(Zz3M0k)7Ea08opW3O$*>ph zVjT=EeQiZWSO5C@J{0aF$9{|tS7v~Md1v5Dank=&qHt&b*ao~>*uAJCknjL5Vu%1< zDjP!?$}R}a39nM6=!}_O@B-}`3k_!C=*xbEtm&;iZZ$poY#u6>a-wILHuYazj}wgzo8)R(P0Qg!STG$VEVaJ*U}S|bC}5wV*sC@RmHauAh?>AcIv*ixn8W<5P)#sm#r=Y;|kM$Sp@H?N=IbSqCw7%L) zrTvzIsN-g|ugK*+=TJB_rOen;G+I+vqcriIofBtF-K}|Jpm*@-QyI32W?EfAUGMm_ z9yF}X>CY7A6QIpX$2RBW<2SVswJvP1Hz4I~R=dN(p~A*brj;uAoAG(++BcRM5v@X1 zin4mX()YzE7>V>7^r;h$#K$28zlPdmDcSsYQ&s=EKDg`$sj|c>JYceoN|GZh@Uit> zbOBu$?rLC;*p8Tg|0dE=W5u3+y7yO#72ldjGh zbNA&ND+kUCcQsVmF2JiTiVhsREz{ZPNnZ(%9QxA_RVT_LxHkZP0A$dZbIaI!K{>>I z2So?kwoUOt{im<~V&0+w{_pOg;qO*q>x6r6*#bzuqOFJ5;hvE)487|W-(>4u$}fGb zG3(?CYO0tNlu+N_S_;e$jyV5!MnI!i$0Z@cI9Z)Q{)eFbxnXX&mV_`{@8O3jXV$Rl zwyY-HbVKF6#z7As-zV?MX%&7&{7;xovUm=z$!>CPtwq*dfiTMT)57@6jW}pkDJ8YX z!s)D2m1@ouXS0Z4{><(TNeUbtOP3^UD@O)chK5sq!?|xe1}I1~yRJ71)yAQydi6qk zX}F7_C4{pmA5pUt=fW4@F?y$&sEXN%i7T=nixjS~AqK8#M7~eb1KH4SC`aJbXZIDl; zRymd0PEGBxB}c`h6ypT!PXG`ONGW2NPm2mVOUmiPpoanYAjJD@mK-(kgggNFiGbWK zPEHm%J#hq2$eNe7ftVHmH0YA@+b{)%X+g{?&b{6F?EVdG|L)CUZEZ#>eHvV0sO;M3l=I z47R$pL2D^fi{f!l2}=rswltK_K}x2}G^--Pxu#M1B-^IXPpv+B{s;tB*n>lfhd5iu z!fWm4(+VNW^}tC8L&v9E>eVkUPE>#o@w;I>2SHOfu#R{H&jV4f!|vmY254v#*VmQp zjnA5e$7MJ9>g2d@irSuKpDc@omh_=8QGr8izaauEkv0W;jBv1XI2;3rb*m;wMP`Vv zc)CA2D@#!X!fF2vyd2aUl9C6lY~Vo@=K#5H_D3h99f*%HNo+I=#S2^BW2rSV{YE%; z60IC3nw}mMCE(IO;X9S=VwBrw`T4FMrWFDwQ98_t}UiI6zAiSKr*2JV&Mqr0G29hftE(|C=(CI(M&euc}j7u2V8NIx1s$$HU9wRIp%F z$Ei9sPtK?7B=7$?bpP~7rCBYc&xFG`=n$)Z2?CfbmeA3EI2!Ly_B1_>jyd$k1CABA zu#%8>fvh0Bapt7FkL&Lcq>E6}nA%l;X?>&EN>MyY)YjD0WL|J(_FX$cgjsi6vMsNn zJT$}{F{2k*EJVdZ?|Ux1YJOSg_^$h2sZy7Fj!1W8Gbb{95eGzc$iP()4X0@vODZVr zeXkPydL@x*X|@QW8@WaeLzsi0(HD9t!T#qo_-__H#iW7Se@6qv%Mko)>LE;!%*Um5 z9}@5H$OuTsZwRi?;`s{sf?scQpe>>;Kkgg zC6PlZxTVv9Z1aKZdFd&Xn_CKNbV30x65nbzP%5#v;p;L7m+SDow-4HH^N~KO$OEfr z{HaRX76GgQD=G%IJ>#h|2QQ_#wir5Xk6su0cXz)YzR2;s6k{Y($%3g8NHlCnU9LU*D*$|Eb9LiUBH9By0HuLH zv(6lYIcd{xE8m}lCNtbUIY#D@e68~&NwLs6$q>fw?stiw&N^aJb%T>n@+ zptUG<11haa-Oqg6fMiriewdV@?(nJ1;P#ltifWm^u{NL6H@;u#Z(C%bG`_piG5 zs0l04L=zV2V_($7?`#X|#w_9c~`WGmaU8t)4`fs7Y4B}*mH$mZhZ!XP9Z6ULtEE``a<%L`gXF&*pq93}3f z;e+t-BZx**pmzK3KM`HYW}&U#epQ!WgFd@#$t9y{EZ@gaIHm)!RYguS+VoCrUSH?Z(1PlC98^-#~^KF;uOg>$z9|N25~*J)xZFnUOHc$vf}(>h|lb@%xrp_5W`OM? z8HUSeYkYn8^#D{kh7S*m-?j#Jd|3?xTkOzG!pPZGOU0VuLqAA8Ra>c*=v&nn!XqVp z%f)8c7T=F#>czcBhW6d>A-ZMGT$D8fDCSX)hRJYw%sjX~uFybXcHrP04r+`I?n#lMr`Uv$Q2>r1h9oCW%N!V-jYPxJ&!wV)NfQE3Xr_rK%O(S<%k>Z$AVhJM>29Ds(O!E<53=ga+67 zPeJ-<)&>%gbTEGkyTdGoBZZcsr;$4twfg_7PGO;4f&FuZ*U-*R9P5cybU?84D2{34 zZdQ!xhL)@P#{{l6_pEu>Dg*seYjP`mm3ezXc6O6fE-w|89K-o_((rJzv#^V7uz~>E zS*hpM%se(7rJ%yuYX2Hen7sU$gX<{ng$yf<3s1TvyJ&R;)(8$e47?|&Xlp>J*$n68#2_NtX^^dpzh+Ae&3{_{czP(2sX5eav3>WMS| zT1___)fq~>toVzcGuI>NEDH=H8F*aE&H1A(M8#;)MNttDXbKbq(O0%9?JuxDgbheU zh#*Xm=Q@MnbsEiJ1Y*_BihP2O*GD>y)s{ftFn*N*In%4%v8EVD3Tm=25m=Oq>Q@nI z4cf6hxzPQodPI@R52PGiDKLoG)xR(0`K&zGHCN)t1~^pe_0=-4?GQRa{&Tnt(${yO zePGHsP3$?Xx67Ir1Ze0yF4tYX0zyn(1du6_Urn{b7+o{gmGkiD&qS5y8o)mVQ}xNQ zQiAe~40(n1%+|n{L~2`|z=_6}(Myr`g2Lj=uX{zo@>C3oai}Nm&A-hfncs%79J@KN zcE^KzLU*e0#bYo@9}_4*lQ9Th8A~;(d>)hO!)#e(NdE%0wkl(Q)wh+!JP1UT)ZDSD zOHhe^NC|H~?p^((>}tI{ciz(KP61=|?9p>ni-*wf8CL24oaf5{{)=u z$=cZ3K>~tauCj38tyLHB5aYIcs$`}K@+y{Lw>?#&3Ng%P%4HUGo7)ioetzg0lPhON z$}?A(wwPuWJ+ShOvr@;h^0<~PO$b?vjE`SDb7{9qM$-B9pfHwh%p+LQ?7ZV)VM`H% zOKLkgR}tOHRN?WgY1etVgK^pJQM1of|Mk&@^yTU9t;F2>d->#dqECrY#C`y20k#Ju zmThw49hwQp7~@dF$|gvMNF7k)`!+tty{{msH&dAApK&Vf3$Mm#x^ez#o}BZEf}$pU zY^J*E3r(3a2-+j|i~0f`C!;0(MXoDp9GC3 zS1X{c2gB)&w89)2TG`6>92g~5O`ex1vYH(Gpj$Z@IBZb6Y*QJRjI6|?6H11|;HE7# z-=n0=9pD&P=yX`bbEIBt^m(6^B$jo3FFd>+93-?QASmg_BP%f-Zu25>myOab_&w!c zSTLAzd>zZ{r79`>pS;TbG|5ub*!anfg?j84Qkmgwso++K6I5WJiS*>Sd}$rA->(x# z6k_T6iA60xrZSDl^H=0oK~PJhC*(MAZjd&ftr`B^+Q9trZtao*+%45g!TVFASz0Lq zAdudHSO|G83hFO~kIDNT6@ndEuffv;^1pd3K0|RLo5Y=vNGH>ZDNN)5Y1RNF;bMz1 zos3ono@rftG}lINDtY_1)RG+KaK0|PUYOn8f(W8PIqjAqi?60Q8P@Sl87s{N>=gOHfuyOmVCxL~p+p#+5lNfWfWI z*IWGMal`aRV5kwV3LMYg3B<&;@X(9K@2|o&ORFiZCjqe#XM$oj^=E-9&N7`d7=yG79Q6gr~d6?9k@sm0vDLMX$JV zxle*`@f_#T1j?4Tflv_CE6$T^W5*y3GMnNB&<^&fW|BJMMdtG4t5y z6SxJ;&SGvkK%U;AAw-@0r;>v%^e%=A{R{M6vjSSg-?V-ZZW_v+C6xtuT6DU3#0mAE z!3EY335GgA@HNda1eWNYbXwTfQU+7$*a$}iSJ>~;Iei2=4F(|A-T_7@0s|y=7Sti-br66qIwv;LL+z!FjAi@7jz7G(HOV#YIANL9zEj6 zcOT#xz0{kydusTj{#Xr+ke8O5qOOTbs4D&Xe?*_Wt<&@xUnQn#KTX zk1hz~d_CSF0`?#Xs2M6s11zyfgc?>+z%>lw`y=hmq3(ZXXaUK}|F2r+b*<}U85Q-1 zoI#!6pI!?*3>q3?;jFCfn<|*^@1@k#M}i7!HcpU>6(ViH;9?2x)1ddzn!&N!)U=$6 z>8N#+D^my|PK-)^*oXPy+4Q9v;;W~qE;0kZ(j+%EjieF54-f+Yu)w_+qyAo9s_G~@W~yxoM~ z4Gy}2^V0On`ebz7#5En3)9Q*L_`5``nE0o zz6)rxRFvy8ps@A?l9eH7I#kDX2?xJEIJbo%Z7#JnZ@A)pcwo>mo47IyE>S7$F0LmO zFbTU)`D|^r;%nLE|3(MBIHzu>=)z+gdv%)vSC)p$Ex0Y((TFV$irCheM()yFFQL%A)N(FBns5bJ7&L)fVV67$OcEE8MrOBPEm#RSEIbZbOGk3p3 z#I_(u0(F93Z#Hj{U*RL3rAy3SA#iTsz1&S(CyHtm9)CQkSJlt#~4XP^vo7CSbj7e>5a7kVzg5k zWE3JeG+FtSyW2IEU)chBaLcbRtfD{qthUwy<9OrCxoRT=s=p3n(G7uJO|^ze#>ffX zjYr4qsq&}m*yFXcZTv%87_4JCPhISKnWJpe10G=5YxsaPA0UVIUX&5RcZ&NCqGZHq zhQW;^gaz=cfM8sV5m3Vc!G}5z^t?1$fIb#X_Q~;v0QmhsJhRXjg#UOp>%y+3&S4@T zUM#spR;|=2#u-euLC7*o1Q>Dy#4lA27?&am_Yg3Lo`V|0uubogLBQ&X=wR5HjHp-X zkE*9zmSD^ph3z7*S=xnRW{%IIE$ToO?8T(G0;8zKe(a8u&tpj)5XaJKpguK4QeY-q&_&xppAO5>}U?pUP0U8 zA|F*qMrO!lW{D#@Hq@}k1mWS_u-Wro@OGTHayZa;%ivbO*2G>E^J5d%7(boNnA>iZ zvNwT!hV5E|mf1*S?Z#ldWybC*B5Xup0Ex~bHHkOk>uXb&5AwL@2gsPV=j#oOy~RC; zoTKKmqxQ;_kL69-Xt_Ya6xx6mpAnWB&5sj-_^Y(U(CQrb^kgY@oH0lCZ3mHuyP2(4 z1?3&Bb?G9iU)qj@d%RZMNZN-N+|&6)ziVS;YmX4~`#`4q02Gg8jha4eVxRkX;;Il2 z^LR1(8Zh4kSs-Fqbg1)Bbh;bf?dFgez)>Nin=klcDZxAU8_aDEWDMMDG03B;yFy}I zK81b+1SAZF6^AYOoUf#afE?$0+3(&!))ogTpjJeREPHkG>ati(Bw#>#s-ZHzNdiL$wVJtQAGH z=zHQU9@QV02Z-sGCmwH@oz0F2Cz5ECADSKV4outHf_~X8{Ph~hD=uCw+7Q1aK}4i* zo|>$=n76hrY}q|qYdbNBRV(`>tDpVL@AY}EK4)+=2_dt%m=!U6Sele+&7TQtATyXj zCx}b0ojyJBk2jqT6QwwknnV<;@E?b~TCRLvLi69s4;Sm|WYdWkb&l)8ju6SSYJ7xz z5srF~U(Kj}@5bec_-3q`w^}1P2jUBG1(wJ` z{|B+fOAJcMvdYg=9Xvj7e~`-3GGz#qXuxUT;Z8u%oFkn8d+O3_lC$Sv#Li)ct%;YJ zs1+AkSVIHF3vFa*GPUh>!F^y8%_lEqikF?uk9WF8=!`WouRH?r0W@5|@GJA*cESi+ z3`oWTNlk)}lZiR1%HjOCAd3aW-mvt69z1FAf}zAa2tYGK6V*k&I~C^y5p&QOK-S4% zLmJI~Ty2c{-6Lnuv9JC!qhZ-b1J&2mZ>@>F{sTD+4(Lu(2PX##s^YA3l)L{ea%Bs8 z&u2{^3treQa=f)af++9*LDH_68NGNlcfr7fr-;I1)5p2`-RJGFK@gy#k%}5^iZ&mV z^xR)4XM69arwFEiA)l3pvKY3HV~uQlaB#i6smUZ6S_PBN9Q(z~I+SDW+k^R7V~2l7 zoi;3roe%BBAeyCt{UTXQ9s!_g4}X5S0t@YXlU$cSTOW`a>3K!Mqb*=AEiiDkJGAFC zmNCaoMB(vd8xIAlOIgAB016pVfw&~-pAu!nK26hT*^V)BLDWk+bv;uHQTtIQZO2)- z3#6#dB3qR6t%|yxMPWY+42Js#R>QrYTQ;ZUeXqa3U|IZ>qeupYJIS{sMPMFM7DdxC z0kya&YM0hHNQ!iw$qUB*zy(51U1xwGT@2Il8zR?+C?q_{lK0#OP_*F5O;%*e{&{(At@|{4V!S1Ok>GV)lae`QE!5$s?7Gyb zP((!Vy}23bJ&4sdsVFqGq)E=$+$@4mtEli=t1XJlW_XB^tA|cZENpT6xm}ho99EEE zUFTI_TmE+!U=+8risaSA+hd5Zj8}~ZwD&w_NI5l1?cTpX@5NBASC2pui2IfSwCfSe z`2JOmh+vn2mkR4I%w~9vIn9!n=@!z6E$K3@Y``NBx!J*QkO+0;;|3Gui`;8>7nL>x za+BrvxIi#eKcg%Jq3;1!9OVMF5A%0IGLW0s&(vZ~hHfV+a4Z6oVM|Y@sb$?^8V`JI6XzvLh;+vTJwS{!B5Zzs?jD4~;n%1e`q+RCj!_LXRapD+@ zmYvf*Mb5j3?U{uqa@yCmdHc8?i$`9t6DwH2lV?(U^!BPC*@eh7C|9deoFZ6ho)b^7 z`gA5UqCzO}gml_rpv}M#?R}PfsG{+JWgNtVwwu>mcq2+@n5lIYg)+8KIgcIR=pf0R-`*q8Qf0 z_ST?5_ZV3OZtsuf9G@FXfmD+8f|&LWbCzih%tn_#v>MCDyRanst!8s&r$jZ!vlv5q8UN_wJZ;#=C`aU# z)WBgXLTShG{kJUh4$cAWfYPLc_{<0)7dh|cX?eTZA4<|2(Dj<+g@AXraE4=yPK*8 zL{Q)jl@6!pFe&8{r1N;HD*k(kj+1CO8#<1ZRLCEG-QFJl79e2us*}YNc(NHGibS_r zB&*QoD4M(qoCM zdUL@}IB|k@wLdLDpFW+307Hblh~X`w-Vniu$d2^-fSfb^*~gNNw(D=6aQp74k{Mwh z4G8(!1!7NI5?9RzS#6E*;SgP{o<*(Ry+bnd5G19uoVAad+R};*r3h)?zt@gV^v9*s zV7NxdSJ7!~-`M@jXgql@Dn4vd#v^AS9Ef_BLTNyft0E#|IYQF~Y-}d`V27C?wmbf04?HjDKQn(!aL(CYD{p?}7~ zg>rcx1JcwhZ$|u(eW2Um_+Z*p-mW?%tyv2g zI=g)-Q4-&NgNfZOlgOcZFyg4Hc!}=`pRDkhVTfeZ`!v{CAlf`+sTe0q*8W&}k5JD} zDUa!N(T6i!PSgI@?i$5QC5tMTLCg12*V|RcPR|fbQi8Z`_W{Bh4#VBS;`t^7NmA!V z+c0~vJGn0qW|Mhs3W%mkzf2c%%ClDuwEJEv)_6FM5J&Qirjx5pz!Lo(g|dBc znru*08(O;*99w+VbfUj%tjeoyOVZCF3?Gv&EH4c__lriUtm6Uqf(>3PP zeC2L4O7H2p08I%EWBlt5c$o*AQSiB1v`lg=L$9Lzw!%jq9 zTWQ&B6-a^=zSl5FCa{&+x|t7#_Q@xyrRUOIa$&H=Vz$ddRZ*jXp`}S3b95NyC>KqC*H19EreVzGqq*An<42KB z)BNVMX9P&V z2Yb^c?VD60BGWw?1Ngj6IPWAUk@;}cV1d4};sQ0Dch~rXz(mA}V7ST?Wm;7w2{L-Q% z>HWJ4!3<{|$_1+Z3*3@}D9)`y-{3gEC$j|!T8UH|0p6DFUN2|s+q$Mx`KGOli_6Z{ z&@}ul^7_B%j`P{dn0hE1hLBwgL0W8Icdflo52GgZdM~M$uisXBg|(}*%Bq++kPjL|9LN{?<`} zdy&X+M@$mZJL>l$F8VYE&kLulqxSO8&uYf>>3r(l9^)JiT!6$6sz%!{Sah!-~^} z;dHJpIOuCO$2A?Z>l3|_R7ItQ{hmcm@jA;Fb5Ma>a9T$?N1W0}l5o+kBH>{ce9h3- zZL-Eua6cVgetqqwp!y9r>E@~1+`X5{aWT?*c6qeYyd4r$4NYq2CnWsB@ut_2?HeX0 z24kdP7*xjx3xzMsyB1&lr--4M|B(yS;mYc2L+($n+ga~zhvKunYwr&<4t3M5hp{8&XDF53Mc&q!lzeVk#>=#9toE;97LhzrPR1^?dW2ge&Q}TWjt9(2v_MGhNVp_ROoi&SLqqurhzJQ2{iz0}9sP~Ghm|vq zB#a5M990FU(u7}52_;+7q{QSXn2`PB(6YUL*%IVP%bDyRo-JTGC*XvvPGouKc8*kr zVev?dZLK9y^JlT$|LmCrFDXGR_z88Ma;g*KBco5Zt}!X}?iSe3+* z%@f=sj21Fi&?mlv3*IUGq&N7fNrXfKed2te1eMkr^Lqb~<+BI-6_vu4k3I)mihtim zuNgjPJz7+BpGR$jI<1a5*7&F66&hROLL>7+kCV@6L7a6us$C;8w0I0OyQd&q9UZb7f$O%qC_b*1P!BJUP8)f6cado{7Y1yQqsa-O9**fpLwJNV>KngeBpDKKK zY9TW4XF!2r`cp7Ua+hjg5_mqsq;rZpW4I$dSuB@P;ByaSa(J_sYs%FH!;SE}`t#x#eUT>J*A02I> zWI;_`UR_*WZTT@VjXykHO-&V!dT+ur9vxjRY!As+REVM6n@v+1#Sn@h!o8Cx#fZxZ z`?Usj-{iN(yL>3TvWdIcOoie7;nTAZnRk&Pn4A&0EKtTE}swy|hdv1$iKm zpC%=Pn&I<(3f0%s(?gv&Y;2>Y5_m@aBo1{I{OXw*f=FWRKiY%Up&7?(6fy-c^U4eL zGPH$Xz6{r*lamGgt#f(O#ai{#5ugI-0vU~rBx0^vxe8}ov?l^lJnvBX(KV2_HMA1QnGR3FMp8SCVSj$+(*`1AD&eAN5R~ zw$KDBmNG3`%fHDVxxV{A(UetgF8|4>r+6X!r+I$v^8WGt`D786PrWyPp&C|&$2Mn( zeFql#aJ_YM*K-yR=MkTy5Qs*XZ(G_beZR<)}PTg&xPzHus682Oyd*X;S!3_2F* zzYD9X$|0BHATLf^^ZjjXlTwDwKT(QH=C;U=TC@1Km*-~Dqj35@{xaBe6V+0q;LTU4 zc9?iCi-felb1(p|3l1==Eq6-qpIp@lh&8m;x-?qnujU^6?iYBkwvy7LKB%VY`r&Y5 z*-Cfj$I;>nk^M!qAX32gOVv|U^mz57A{qQ?(|izCqFo4*jBgMDL5C!Zl_S~t*?79h&ab9Sc?DcAYykJ5v(vH$)u2W*emV3 za4ZB-S#^k2SbZ29dWOZc3~8E#7r1lYb=L>hvnYHqb_dA&Is?JmljYFa^9>(PH~MTD znFB5>%yccS0z&RUbyEsFJG*TX@pA6~AJM_J0Nb$8G)`7j2OR%_FnRv88DrE9%kVT@ z+)Z19wUn8!+R8FAktJO}(|I@W5}3>`pChWcOTXy+X1I8L5`NDPFYR}y=Q(UogAQ#Z zXJ}PAnz7lu7xb0dRZt^Tf;c&RB0s+<)pI*OrGC4*PL)`~#Ju=1tx`fhM)o5|;oI;a zs?*#G0iXpPhPz9JtFr2ps=XW(3oF0A*psduGW)mJef`YBYs+|hid8Y!gA!S!Ofxl2 zu{Sdyu^Ou&X#2;wO$$_=#xmP1DIv!{vP-zf)f+y_MD!^tLGOguhjrtFXeN5KZ~>%xblvMM30C#{kqo8)Dl`SAJ2Y}lK7Rp} zlvL-3OH+ZEXo{;?L5Jbd-r?Eg<}!7bigpD@Wf{cSi>(WHhjj}hvSL>k54-V?tN!$I+tqM+tb*QS;}pOP`6FZtxJ0MEx?Xr!c+ zCu?7Cm#wNjbMPx^J;%F%tj67bdL#;u+=RL%cz7Ts6jGWK@l%{6#;)q9Er62qOn-0wK&(K$rcUZ2)N>hfJ zm&YoLic77I!PExY(H?AZ2HK;!XcC%^HaHDt>i67Ds0pai>3L{XQCX6L_NLkuf(pbt z>86N-O-Up3vF(GAA_HaDZ!M8J1mM5;BdV{40txyBg!NyO*LO%?L@)4!eD=oqxGhjm zmKz63L|||Io>@|~v{V-s{=V$x;_0gQH#u(MvKv7wL=#U;K|nd&-cnXsYpet`68Yg0 zn43Qr%Neti-J?i^Y4)6-Dh0W~K+xQDsGKuD#D>;U5Em8H2Hs~O1^Pm9C1C!H52q6f zNQ5;Ixa9L~ry!7wjKsZd`K{TE1HF`aoQxxT4?XC2KO9#=> zoK%abR(hS}S!>lzOie|+j&d(?v9PAIk>D-%$$72owxkg|m^!5MACf+L(8y4(y6%3O zsJhP>tTS0{J(Dtv$qFiTM8qHZ*C+QSGsMweIBX79(&cYQoZB{2*cU6oUd$UP6IL`) zE(0jOcP0=r->lif%+)p6ip!Bi5E1?6=lW45Qwqr_D@4$`>+vq0E-MYrxKO{T_HdBa zNUY7DomFyHJ8h?8{bso2qI@3$iiuh(jx0a@*K4(V(fNRkr4f4Ww(sXx@He~FjVXOM zk2gkSB^4C{Ce08}x8ZBklRr7_TC^0;HJ+rUD7Mng3lh$A-&PjrM#l=?_+J(lizQJyr34qYDk)Yu4*x8}P;f9AXPSz40Kc6k0il@^=xAdZT4lONK zkBdo(QnpVWZ~9qh^HuXUPtk^#CTRcOo_`~K_|+4J=A>T{&%GE>N^2=bK!Av*!B&1J zc>ickx-vN_jHwpfxhCJFsoR-%PklKOaj?7F)3+&{z-YqS$r(U&+J4BX7z^%$nqco{ z6EP+_<3$pLomb~OY_+hivxK3CyI5NaO#5L)+O;VE{5hJ7crpOuxXR!af&}G0{EfnZ z7^>>%$k^1h&&k%-2kp`oBE1v|xDa>)7@x)3$y^;o`9qL24Ao@=cw zR&%iIh5Pj!tgm-hrX^lqUE0sp739P)PQQ=ddbv>HO7zTWoM)os`<#artIH;vMv@$J zXtk3ZMJm#}WYqa?EPJ^sG&y-?yS#!TQJK*1Rf`s}W|+b&x_iyw5<_iARr7b8hCB-It~1k)SN)?d?Ghg0cWpGlXvrw*9`gTjFSUWr*kcHNtRP(VHVoh02`X z4Xl@+ty7Rf>L?$irM_+S6k@eF6`E}y)z1g{U|~t^9Ltj!Xazr%b31|%Uvh_f%h>OQ zpYw)lxO5iJ&(JV16RW@osqOYD)+UOp8|;SXliyX&5~_Gn!S=93Ivut54ocMD6oDOS zhhB6r1q)pwDMIyEE!x(cd)49`+1HQg+;!+^7k3a50soJts|?Dj>)I;P-3`*+-O>$8 zcXvuRNOyNPNH-!W-QC^Y9U^}F`DR}Ks5mfld-mCDt!rHo7}hUlPA)owb@a7Mk5r^p zPpp#p21Pr9nSmj|IF_(Bocl9nK(N-n?L**PEu7z&CQ;8mph?e zO2J_%+x*jF(C@-4V7LRS?(9lIaH%mMixd)9*!DXB|I&zbbuC$Fg&!|~Pm_vE5?(uJ zuwn0;RVZyZ@yl^(ih~X@o5aVxaw(urW5AX-u`F9T-sl!?&sWh@)rrg^NXN3NluwH% z!6KCpcCP3-nV+#!3nt_fdvqyG47FYeOVtEMo{371Hl+$pb`xMLd-LqMk9qx~6akMd zM!Zm+jetg-z0;l???96}KloTDaKcU0e9kgAOT~FhaItXiVYw9O>~gQxh5Bh*1nSaG zXCR@Mucby-|3HX6`V%6pnVW-GzPxrEB2J`Axf#hvgg(MeED~dfu=PG!7{eEcG+6eh ze{T^-!%z^XsOt+BMLxd}uhH7DE!iYKOn#DMBTR42ibesn{+S2wzn6F>Y>=iD1Ytt* zVp^;;*bUzr8%qEb=hN}((9r2$+u{cUHzK=)=RrUw;KOfAxQy-<@xJr@o$3#_7A(Ik zIK#vA#Jg{g`(UYEl`MYJFx zRJ9F1T#lAD0dDK=SRUVUU~u%~YPBwx-mv=)Y?+kLtHbQ*(+eD|YU;X%7VS0v{Jcm| z&0wpG($}?L%0VwO4o|g>L5~-z>v}{&dLJf|57;3ZMimVjxjT zpeN^uh-slgwR%4Bwa#vqvgzvZ+i%gXJ#%Mf4=fCQdGUN!{;Di5qQGnX!E4uUHi*yz zow}mj#9_#F!X#(6JI_GEW#RX9T`~$f8CM=WcHcw3p{F8dLgK!}>j1tIixp!}Z$F-> zq-45)c&;F8aA`R6i)Z^|4$6B~-V#)@prEn}xU$}{bkd=>?a-3c;{|!C@YV-?r38!L z&Mv0h+n(Ma&nzM-C|5tSOxaXKO;tz5vHob($nLjgakCmsSxgM;y1HRLf-V1}&MD7e z*F%O*Lz6WJ`h)!j0+m9T|5+9f7uH|r1_ws2%-(Qw5CH$W(&i{A6xws66yWpW=;#N( z%AJwJdsz|JxU9_nrQd>4mm6J}u`i5v9BWCA0bC-rg23_`SE{K3!IHx_NDQNxw5ZbG zJNvWFZLWw>5aS2Lz|Y#K*X>MS!eOogQEyZ=yJ|v)I+@~|&0gbmkLFZ%O>BCQjFqhz z^(AECW$5UpX6KDXI#9g7E53v97V{@aOqY=oAr~TE6Y-GeASBd1KA(>N z@MJ?DYz+?AKY}=m-XRcHBfrFV`NIwS@g`xUyJ2!9DVMU2ezCyIjl>Z23w>bNzQ3tZ zlm2rjac5vW5O(x;uB@aA8LuGRF6sO7avAngW=1*kIaHYv9uB+h$Bejl8zZfv>hb9` z=X=Wys!UvdZ_%N;U5`19lEi*G=@-^7&K`bRk=_DNd2x)Y3*^xtkk_LN4!)S9dQZnr zoLqm5l$-=lmypnVwJk0oQ{4H0C%}hyx1#&;tDYrl7s0Z)+<}J#$)~q7`U* zICE`0#JuWX;Z(}oZ>(AA<%EF@*I*5ovmd_MV{&CT2!yoB5eG&C2;mp$yqK@ADolKC z)s3+BLQ}%M%d2mjwHD(Z;<2CMV;`PQUnTr>xhLcH8Ry@vz!?6M!P7pT2$k(^&3A{CdJsluOR zvZ34ZY0vuiyZhv%lDG`omFhK}^hV|Xcu2X(0(0$ut8{4Q8&xa7PD9`>F0K)OxOlBe zwvrHu2!pA9;OeNbJ~zF*5kks~n+yBpG1aoe8l3&U)2g5B){_tCbOpB#yBT_BZ{AX} z%A9p8I10Hbrhp340ZEE|mnA(rTnO?7Yp@M&D zGJMw#_|B2{A>B7hloIn6#U~AmbmcNw?u!ES3YnnZz-Rt~d)^qF@)!_5ej8_%PBRm6 z783T_rt@<%E{N^b{Ttiv2d~-b>1bjkJJS^bV@^?a>i=eDEI7Eg+ zMA^g?*5B)9xWvBXbg@@mpC)t02F}osG;6a{*M043#QQ&~~?a+Mzc#YT;mB;34~m9zg>HUnThf!4|VyP~-c2TmVt zIrZ)%I&|2$LjUYS{NNv?F6%r`2r05?wybTm)G(?XIaUxQPg~ABkVacRB^o>O;#ZPp zq@K%~Es8{u^hK6o0LM6*gEB2InzJ7xQ4}dfgEf5^u(UI?CK<$kS4#?tloz0E`|^{P z)QI(2t9>Rk2v2J|Sp4UQ%gSO2AtzE0^ZNDNQD0Meyvy$|mRF>!MrPXe%(wJ#xi05; zU2_FgS4JddQ8FmEvw^9Ybqt}7y;LkGS`PoIJ&hZgh+1aW?#b!ooD1KlW_5|93l$9Y zlm^fqzPsQ&UnX|T==KFwsw^+ojnD}2yq>4j!1Bt&ZmPvhbx!L8vG*rcct1bW^tk6| zBTGZ;)mN+GEFPnY<(k|Vn4-(B)bOro{LG&oB#Mu9 znMJE$;`j1h4mBy8H(Z@H_{Gnj{sf2w!C?x+NVH?FyU0*Rxm>@#Z~SQ?`_Nxcko^!; ztC&+MX!WBRYaj-5=l;@<%id4k@WBSR{pnV5eC0=*TjW+}-e+3>bB@ekzskY@10z3( z`fRM~TcgEb`q(X4g8kR}0EFkik!&Y|l{1L=Kum^U<3WLc#hm)#K%QTIEm$T9ZG`9n zMV=ivpTr8PX&8o)T(p2ZdiR}Sfwe$PHNdB5Y}txrqD+gE=d{+0B#T)xo&;uUqKKtD zfCHK!fv0H_F9N5gfhtXImd28pj!@__=xlHKVFBX?g*7EgLlFZw`J2CyYKMd^rcwU* zQEfC3QIp2<76R`cV)(Uw6nVWO7q0D~fV|7nGfty)%p%{EC0aX%FcJu`U(d?d$6 zcwyPd3%iZGyQ{)op(PWhYZ1!Tf*ACp9cjRXnK;~MrmRI~JWul5<}d)zR%+t}LRmFvX0E~$HL`!7;PvFm zifWWTy;goP{#iu=E)>1Mp|){gV=dxG6o!o)!_nm|E;RgpCvAW7zD*4GNZp>sTIIP% z(IZM$=Cyz;c5V8&_vp{Luc44w2&UBH7%cv<8pb}!Hnv9SvuPnDAwlR0G{qoR(XCZk zjs;%hGw=)+LycXa62|`WnR`3UD1z?-*hg)+8%NM=2i-#Z<;4oltK6b7u|!}oGA!;k zlN&7VvfA=Zr2EpO5>8XW@L`7**Wm{8xtdxG+R;M(Sp@fBTH2Ts0gzpT=BCNT#o6sP zKhz8Ql|W~D+DIy9vBwyPN%1HYW=qjz=&b~AH4WoUubN%dLU z!8p1$ylVFuG%_3yBBE;ZxV6Jeqe{%(U0=BvAr?czt$u6cz9Z4??fze%3!ZUkv4e?Z z>+@p|<6a8e@S!^sg`z$~bGz{9bc%S(;l`h}MxfPoJ%DRBJ^8AnIkE5qoj{&n)N9n0 zf5!Ss_m?zVU2>K8fcZOM!SUz-l5(Ab$lSNZsq+Exu=VH$H}{$u8Q7ZuJ4r>s)+1mC zprSnfr+t!~(jkNm@U<3(h)00&VGwHeQJ_4&#Yf%E5# znrn&PcuS5ckIRnL&Cr&rvWVb#SmBG#sPh?U0bO0B0m*vKvrlCn*p~K&;l*`$ZgRgh zHs5ibK79NGHPhPx!C8XUXIAV$evQCa&^yFHBOh$DWef_~>ZQ#-I(T+*64o+EVp{!yo(nnsedY&8VOhw|}`4uE>wtf8{ToE9eC`3z- zagSO`As=w+grPWVEzzsqZQAyabVV8wmO`M?#f9dtEw(j&fJjjZa4XihtI`G^zY4U`n2p8&H6W8 zjg+Zu@{rGi4FC?xd6zKCD}tRdF}neCOjZ-q^%CpvW~JuHz4Zy;TH4;)cTUrfb(BaD z5y8Rjtz}x*%%p@#$(z_N2{$%1I@p=_1}BJEom%0}7IO*Pb*AA^JMA-6l^ZDcef8z3 zkBm5>%|RmShggR;aB+jvGsaMoC0Eh>9~WQh_8T9WwS%D? z&y>({R*dY!JtX`x4^7_LC#zx5jbIihrWC2xdja#owIQ##I5hH)%78woNM3(s%3cz{S5zeTqYCX&XUjn89$4FC2PAv<6YrhdW9HD0}$C; zj9nToo&)zaf%M2< z(L6jFdT@~KYKdNMaShXasLQEI&-9p_*k7;$jy-a*vMz@FQ68~SmY8NVFfbC7M_JqW zYAsS%_ubCcb~>DpuS5=d5eG!k#QSVgMx>gWip-QK+I!+tDURfcwz>LkDoBK=ypxPg ziHPPsTcJ3tl(_@kwE0G0V{L!w$zFuV|B&{wE3J_77le#S)G+uL%Lc!@SSwrJ`V3-7 z+Gy#-+e%D6Jelq6J%3!t;r`y4Lu9w`0FJs*f&I{xg7AL;5WOZfc(m$cG`>9TiL$1} z{L_BiiJnM319Jt*lUoygKw}(j31m7#*XVlgb)f<{hCvWWK%k@EA_C285K4I6hpxb_ zc=ZvKKPggG6&30B;sFM8*WY`1U<8 z#xSBFDB87A6rO>=VNd@x64)SNH5|#AuYIv=S;e>r!`iC~3A~OckdGh%rSAPi4xkp# z)6Y&t_6LIx;YfarAii%pr&m@S*?_&i=6&Vn{715pCbqP%PKYt!KT=?7W;EbP8-Mtd zS6Wzj-K-XRK>=QJ06TfKUotnYgpC2iA~AY0QOc3I{BjvuKHWCBaC~;D=T0M|H@I!R z28sLnt|32sWolt+>IqGNa_7)v!Hd14VB26&h$ zZz1{Zro}y{2A2vz=NF(=6{DkLAzvULDXRj#Tn->2gOb9+!n_BbBQI|Y+8O@$^!)Pc z%75b0raaI)q&z6t;rTg4;IS!X-MV8(8?!_LyPJ(&0nfQo&fKk!*uSKJ*{dX>VbFB? z#M8DUsyHZ|;H6Vhmgn9ERAu))OMAiF^xq#@hsndqb0iSn$x?4a`)<+X^x#<^u%;fm zBk`Suk)s($Nt1>PBao)*Fgl_dN6{2U8Aa3$5^=4CQKT?ECm15^YUXt0J9Wwa)g-fUC(X8SN6MO#S7!pC6#EMiV;TLSfetzJZsF9z!cKSImYKZuX8*q(XkPbd&nrzjviV=a!Rr3xLkNeyl*~;yvgVWlBH6-H?4gr!?xb7K+6C`WqQsr_D?C zF)nh(cmwxu(3@A|ssft5j^I03hm({QDAPZpkC`$8PtlfL1xQSw|F!*(_YBn3a;(q6 z`oN{(u?C93DyEHLNG+(YlSEgy19!0)dBN-;ODf#BzivHiT&5S4OG!iot#O3tt40@t zFQJTJgJ)!CBBG)N$D(=2lYk;`W=OQMva-~aKT%edS6CID8wd}|DuE(T^=wH|2ig?;Co6m6TV67g!-AHNPt(YF5u1R(iok;z81SrEW${3bzS z$$jR&O{JKfd>#7)wH=7;cSD7x!5k*6u74`Q^#R5JUYofujs&6m9fa?pTb4r!SBK_^ z5+%!V`H?T~=#hfkn#{Vp?Yy;ERpib{I-O2)t6Z5pO=?TuJ1Bz)8to;KPyQHRK0{(A zeF1-R-|9w7F$jQ#zy&YpnIW>ro^I8eWklP@%IGZ<%ihnMpF{pYOPkW);AoS@Du4MJ z(bgmYh1WuwiJ!h@dN?HDt9#w-BBrRGI(s}UR$N*Oro>=OQwwWrV{2FQW7M(JP+}Qc zI&KtfX>4`-f*ECiR0gJI7fLW_^0CPRl&=V^QGxI(F~!ecLE$2zD=iZO8@nv8s5pFS zW3$V$@GA<#JOr{-1r4``^H+Jxf@;a1b|3;u9+RZ)S43mU*TN#*qsy8Vy=|?dBbao4 z2N8CYXxq&hC0dHVFC5wZOBnU_2LF8LKUyxclGH~Z?^#)q(`zXzmg_I#Prkjfar4oU zW!JQmzS))ExihtYGSNggx|^01A-e2PukN5dTPExIpL z23*gbl>b6rveTRMgp;#oA3N{VF!o)(#_(O-6<`|%f!Q$j6Hhv#i4BbC(xh+ox8MW; ziWZHQZ$nQgO>?XvEZ%7UUuH*cd z^Vh!J(~D)q3pe|FBO-nUDjutUscL(J*t!HMHLsX$swA86+Ms1TnE^ zwQn=Nw{|)@J((FE&YphXaaHT|iT5u-q-ZmGPKLYcTn#LJl>Akln^CR4I=FR>jSPmu zleobS!1yqod8C|fdSRxs%p;ru5n9$7$`yv3kuMtD&jj>UntrSwA#??zODNv+a<`zI z;r|Dr`U-Sn+csWLe_EASURsr%r=buZifn2+$!u9lw)3-|j&NPW$Ck9rurwjAa zX4^}3<&V=-GM;BF`&A51PQzkzGYM+P_q7e^AD}Y$@>7$g@8vMx|G8JchPAeVW9HL- z<8xD(I9}o0Po|r>z~@ytV^rCm6#6&QP{te6$WCG&X?n^_~R?5-FW3Xu$zPPZ5|DjT>gaG{!R+|Zmv$y%!MYJh7P^<&M z5q7&s&GfYG)s0}ow{_6+M|Q?AN+ufphn@gE7p+w}*ktsUC$HMtLK1tKXRR(fo_K#C z;yf>_s`&3roQ)-G`m_HAS{%I`-=`)wQ_(&{5Wn?%exP%nGNZDxXs6CDdu{1+(2l&Y zwsy(-hNtY9ve27`<{p@UR214f#QjP}(l`3WrM3YK{*?54K*Da1N`ZYnr=l`RW-f_l zqtB!Q;Mbj|~KG#nEg zl`9<)@B1Or?%(LWOP*?tR^X6`1?7T;A&)y|Jp8fWJq0PcvmMFnxnDpkVC4MHZ-96_ z+6;um0?zzA6NUk>??2XN?aLXVxh^@RGyv(O6aS#^gR%%L8IC_JrOH=v#$P50(onch z+o8B43{v3vYkw4cm_Rti5F=*tOJFpsoYBGU}6j?&%i^tyW^;LX~8tKG7wW&w=ZX0{6y6%L8%;?mrz?~F` z&!7T^JiAFMN~YdZA)}_pi-bNfR_&D78+|Yy7<%%Pk6w#Xedaknf`QHCkS#Z4>L6ET zaOuqhVw>pI1+}oOhKRcg!(Opb6XU`xxw(1R{Mve}EHN#u2#wWA#rw{h(3~8UT1g^H zUP_BqPD=((vqDrhfB~sd2re*sC-R^-#+}p> z8eN(;#(liy79_l(c{ytEy0lYp&)GUf(k~3g0tczkN&*$Y*P(-a-zfJHM&ImlwUV{C z@0_=y9&mYQ;;Wtal?6>{mFs$Az_r6O>Jh!jJuF>6WW*c@uoSCu%^oz**~|}cKk`Gw z&_J?%|KjchVRoCmp}k#yL*T$ouQFRY4tpFM?xFk6pki8=4@0REdPdVYc*b%U0%?j= z0;7S#5Lfk1CVn~}g$S0$1_2*}i!#=!}&&)?1?POYJ^sYC$3(?1iLd(2|?&%gm3S9*2Mb*R)7ZYBqvF zVppD5NQRlTqV;saR|bZxo?wxs`ue2oULc3E{pIDhTjS*^L#L!12|-52vk8x#p;w~Y zRx&9>CAsj^wg@I6g;F!}MCl#yBAHNBm37?~F?CQz1lh18D~}r$zW;!rdGEFJ4?9`S zVxgNoNxn=8eNF#PfBi(I=E-W2t^Z1^*27@7*+%m`z~q1+MOsIJ7YS=&jDRIxk7#67 z2y&m|KdrF+gUyz+78)2b-CgEHqY%%c%ktx25ZA;T0A$R2q=Px1sx;!5a*HqtP{c@0 zIlq_PKxA=@x+v2z11MD$hpb(Td~xRPB;^Uk*S@)kvauYFOr&1EDZz4q5~)LDuWi?y zW?wvp#;5Gf>4+(#`>c8L1gQiCG<(4ZN-9xBB_-`1bVVUyua(_MCg3uHd_6V)?h=xI zOMYVy!5p;m1_5;g8N4SN6OJIk;N6F6Ee#+;WgU*F8Pvs(SbdjzYPJ0Bgc%U$zvya< zDk2L3p*(UX{*;TVZZ!$zE&p~|I9T0^Xv^ZuqAPoPy-W`e6Iv&(s=jx6zx)~X?*I=iij@^E`Ue{SQO`+2WVY(*(k}`d>qz3kkGQH)^|q( z`ie3MYK4Kln@u{ze)P#~US4Gdx{<$}`pI2y&F24HE-J#2pvi|P6P~UB2sFtc-`7s@9cfx~=h(hIhEoxj%H=4mj$#xiPr6njakiw$T+8%05x$K!>4Z z3y(NYAKOqaQ^{^)i$6JOBdfAF3a5}0OZ9s>5dfIw)>cP5C*o98m<7WUaq3EaV7~%@ zz3C6$VD<7tG?mXz=~Zn2vzj?R9K`Pci=RjhG2$2C`EzE<h|*H3 z$P{|gc3JK+cqM7xoS^Dz#`M;7orzy#S?Ny99!o*Mb3%|@%ZMfNSiz0J!316#XUu>< zzI3grvLDYngf;2!nIyKZOV-m9WNA@70l2r%#u$#aH~yQ;#z~pD@JV2&!DhF2vO5{n1egmH zDSajmr+?9TK(hwuV-7ny1RVme?nRR*joM4^9zmi(w~IuGg}q8XiO^LflgV<9z`ts@ zR;p$OTo^M;5 z(jzSnB1)NfMAUSFd7m5t)lDZ>zGLeroopu2lxIJVj`Yol$jX+7$RBU2Y)5ke<^OH7 zeQ)1UAhL|=y;**JNk&|d1?fxz01OL(@G)To?&Xj3f(CM?w$f0z)3um+QC?MXaAuPL z1fO$vw@7!UD>g#}?@8L2i3AIruJiRk=G&dQ&>v|EaPW@!I)O1lHIyk;yqLY`ZUB6R zW;6uSTCYH5l$Nxk3+v?r3RxQ&0m-opnxdru=+Y`p8ITtRqV_RmeP^D-_3m2nr0TFwORYi!cLmRoOKf5 zX|mF$kQ_~^u+G;-ZJEf~1RP!;I+m$xs*Swn96;aC%)wmJSRU}Uk$qJ=@7>N{!JKO< z>6)M!H<?V#MbXm zl}faVsy|+>M}tZ!rGm|xw)Lr6*^oE*daCOg3dCZppjB3_KT3Fg{XZ8=CWhpNy_F`B z3?d(up`NDn#D9|;9-)$&CAzO%i5p(_L3eQy_MijC5c@1nzce+EiHhQ;>n6OcIM-BL z@M9?8J81+WCS;KmqCk@K%pdZ^4NBXW$HBxeiN8O8ULPOs7atzuyOir`r+Vahwa!<5A|<7fn2mCBh5>d7Cx1y$@!2x>Y-0T;a;XNj?Eb;)Dm!FU3&;I*G*;0XWQ>!O+zeYn`+^R%rlYz&<>e2u( zOI6^j&>RPwYGPji5-u70byD4EclHx`f%(&>ez~6!s~+XMC_zDzk{Mej@^hR+6dBs| z>;i7<%R6LX%L<2)W;F6G~RN9{fiYVZ+YCD7K2Q5M*REjzNe2U?&wYpp7`P%$>b)b2F7;6kuu@I zWw^?up}OhLZW^##%j7PwW{`sU|_?CSCmSJiIBA7F4kbfKAoQn z3#agOpKDXNlvi6Eu8&V!jI5Nj|NdyOzSS5`ypQXP^Q2EQh{(Zv z$C!GS;~`SlT?yY__nC~~ei?~B z9%7-ANNvrR1crz2SeGs8ceGt+yM460yJl$@_*{dH4pwMgt)W+rAX-vt=P+0Q&x5sn zfod^1319GCJ!!yNyM>jtc!a#gmf@M>$i-P8Wh*Gg1@`%;AM_okgP-nxoRPyE7N$ykq4! z!?%WW63-6kB`poqBiax8f7(2aER9Bnd*l*iZRM zff;3qG&~l}Wtt8nr2<*&atINNNF2VO9}D8?2=^us9Xa?v+@kN5^Wor&swRJmCLvL` zBUVWJM9Fu$7^!p$NRkfN0+4-J*pb6y``RIPc0Eru(=ep2lLD!}f*h)GGbNOD!b{=x ztils!lURvF@R8Nw`?r(uWpkaGYBh-Xeb(*Y3?C1XdKB+R=ypz@YW%_}!Y;1HxdQq) zx$qV8W@h>po#)Fdy#6o_($$0w_^-Fww{HvqU+Y!wr0gE1GOD_!S_#_ZylE?3bTn~q zsYc;}rOD?Z6e%0{IRQ%*Z+H^aX?74=r_E$fq z2Gf67a*rAH$9I$xNW{ZpAOlpEDq9TABcgPOB9%1aTX%3bg5afM=7h8J(GYo}NrFcl zG|S-$zNF8`vo4(X)j3hf_(M-q{zE6_ODWz_`bvsQvui;$iTGGhbHus`06`St_fA6* z#37c%zVj4-<*_VEI!IK@P|VZ{j{XIiQUX=kzHa2s!_CHP@$OmGaSjjBvm-};GP`?t z1xpfw>$9kUH|`#G-}S50tNR0tTFJo^&*qcj+S^;eQc?=sWx~&&Va`Wz2M0YL|MkEJ zd_KAlpmv_01#+txWhK&^T8XG5L7mxoRg^&0iXfggs>zh>?4=uP%U=nv9$xTWb4Aid z#;jD5a`CNnH&7Nf7-&bzin=eCdU_%<@(Nh!m7`pr!Ij^qTG26wUb+~$D=rTE>tU1$ z61EKop9{|M{;VPOtxe9=|J`IR6J=<3_j)d0SUab-HcK+xk)h`0p0qIDWDW;EtHJ+a$u9(jgO}5DaxJ#^f*E&P5lWC^+Kr#K~l$;mFD`ZX>JN7#gq8g}{zM z@frh-oZQ8mzZ?A>!5*;2VNFa=QW`;i{q22FC^61t*A>@7k1AgkvfN;f{_iV)?2BLo zQ|B4ovZS6cQAMs!^d+-?^Vw$4b}TYF9-hqXZ%R_4XoKC?=)J>3<2x!cy=brGmLYB< zsy-!eek=Qf|8W7-S^O^knZF1v5Nm?)OcVSN1Y8kRad4>VO-O<<669F_9xJj>gGm*Z zq7OY5*UWotFzL&OZ@%eURxQE*&R?#yyC-HMBqbDg;-?d(nCNyEqh{$>+ToZav3CMU z)3^=7gasn7$(Ghb4cv$?h&f}NOvSTk#|*u0U|mZncFayc+kE+ms`sXm{`YMtO@-9d z>JDZv+U4wodovMIGmB=#RA%m*4Z;wFV}r|t3bDZF=9IE znKCUR(x-BI^tBFH>DchvW~2!U{B3O6@_RW>-aB+m%fvRewH;ollC-q2$m{GR3KtUr zt_w{~$}~*KdrNhQdxzRahKBwP4Q#;qrKQC^Po>qs#F?fdDgvz@*qa5UxtQi`wri&S zV;W?egz4cjjfi8fSs?jk8rhOvYCcKcP$2TOEhksafcejeUXNaHHVLEmLS5U-5dTi1 zA{xQJpd-1L$I?VSY3J}Pq&S_2Haep&pQQ!gB7&)sk&1*W8_Sdr4OSx~gN2g&1lct7 z$-cjN&zPFSDymp136JAb_xu17HXn2n9;Q4nGw#7Ck^+oJ_L&KFwBiIA#$UkE4N$3o zCndrp*h&#!z5j{3Ibe2f1`a^LKMlW5&nr4RZ5Mor*{G?g1%taz)R$#Xwb~E%*<7sY zQO*s{aP)BQ3tF!#$(G5(=f8d$pV-NCH0I1BRd{sYLLvh*VY5LNT#JHTM2g6CgFQW+>`Ism;K#;Q}^3;vONYS7Z^t7A+V1DE1z zv+eHMFQ+U%HzY+x#n;!@+J=VSZjgZp4Gm(5zgEm=@mnGtg-2L@E}XvVMHc#^rWT@9 zR#a7mn5_`1RW-1@jEjwpU80Z;2Blpbp^c;wnWg3`Ovynr@Wbs09iEn#cf4n2s`)Q1 zXZzSIs^r^CN=ig-I{sYHDc{`Q1Yy_I-<+5|g%Y7DkNEyYh&%%LiCm3ZRqMl_?`iIW ze;cp7?p12$GQTwbjE_r{u?t49m&7j5IC1#tM9xW#roL+DykQrot~#)t#op*Cz?+Q) zi?$eUro4_GrkC%zWWr6oqcgUqK>0h;!03VTtnx z`)|{vx@cPvcYBc5kTDM$mI-csqlsKLbELpr!l=P7$O9^|+x^8%O6Xd>DbLzz?5=2u z$a0j{zF0!O*JNBfd#DQ(yUK)%;?1uy>Y(Xa^ZL}=1eBKP1LKy)O0(b88p3bvT()=c?xAM z@LQ5+=;%Z}6L3qB^I!pTgrtQ{*LxJ_)}am)C;|w4AJT`I+OA$zDmCf?fN-|K{n}`3Z0tux1>e64z@mD2 z@tm{bu(h>qY;K;}*oY}CBuh_E2Y)G0q5Vpm{6mG-nV0Y#_;(9-yr}5tc$wUu1y>Z& z5F68>IDhJ7naZjv&02%^OdTfSO)iVdol6?REoKuK+WG%pOSvDr{+^GlPNb9RO=9bx z@tnUEr}hOkv}%bd>cFee*7aRYiSBqKbcYhd4LfcMI{0$o%iA)L?-j-CtA>PTqu&hh zzUr=pBSx@uKe4wJB=zzH;L4Jt6`{cvet<@CB>czpXUfasYcokjO@3oFo~AB`coQbL zzvA`O`f>->q|-`~NBy3m!o_-C!`*gmFMAA;ZfR@k6OtQeCk&uwW$3ImdgaV^{GsVI zx(oRMHS~3C634JFJ1mzMyZzVqhg#Q#2@P4kbFkjk4z)F1U9gR6wd(>J%oq((er3aHN z$}(_2v19UDcu!~ z&DfZomk_TiWjMa~TT4veS<;L*C((LfSsg5>b5bpbfVRY>L%k>1(P`f6YFWm->SjmL zc@@wyrGJsWQZG&b7X3j?a^?Cz6-->lv+0I*`ln9srO44p zNrMoc4l)@`Oibbu5_*7}!0^Px!0Kw|)06uOpJ!sD76WZE92*xdLB2Oz?d=LEIU%+-7}^Qwl+GQ(FWu0jHZDhBP)Sz_1z)6|c8~~KTsIegIg#cV zov&1P_y}w-n?p|jx!~))a1*ewvEBY=M+-X5HJfu9`%1FD@ywPjDI3JBkGXVA2j3L5 zB;WFKT%$9d;=lrZ@Vqy=P;2_Lr7j1Uf$H}t*qfRR?2IB*XvGWXSp{uAZRhyDI-N>D zxj+AR^zPE8*Kh@16Ly`U>KP4T-&JUc6F7*W_Gh*alko>|ZGdz^OqDAXAeOBWIldp8~f|Y2mudO4_@3Dr!1$eT?Zmb z#zdz@W4G&ApMM5e4esfw$B*Jd53lW^ih|EUO|I6%f2@ffU&@-#q^A3 z-wx7RYo6fLb$&&!zQY;S$k~D=+Ml-e75D?ALEI`XqJRh8kU&#i_ItBG@Om2{$Wx*b zMel#ulv9;)$0kCi&;8^ywm0lgi=&2mhWuMS*6^&leHp^*57vTaowwM*!Z5$f)grq6AxAI$T~jr3vyMNftE z!&z~6DRyC}p3bYjmwX(LqN0Ov7r$ghkr)9P``wJ#zn&hE&nV>`UQW~u0t#QhzPD=1 zSXoI(;t=+HGjVu(lI6PQ-dUM_z z3Mt)Cd-TTfkwx6b7PDq`B-y|Rar0u+n~dKm6iHY6>a@RQ7m3BPEv4@bUsze24wi>T zg_Fa;(ki5~I>RFOodmQv&e?nUL`+9+DnxuIcu9v~_c3s5RNxIfo7BIPhTZmf<}(zY=C zwkwrzjj#36q3CsBENb)UlF`2DDT@*jSxU{ou=9Zsl>|mueHK4hL@JVo#^}Ss67}AYedn)w zrfok^yH(N z!3sO7Ul<0vXP`8FI0_-iaEMUMzBx%aN(+WMDLd5Hi-!`4YttDA6e3g;odgi3J;TT~L5-Qn%8 zpz8W=1TUSCAA#8A*Is=fA^+syPN(!{oHF{Jsa~dRvh1KmsNOeK!Kz zj8tKqNDmBI*e8>rr;kRn?`3r?07>|-26n_8=BQ+i9uE5Ti&^!Z#iLiZ?RoV=#dE3Z&__M4>prou z2F*PwPOo$i5=U}}9?vqZ9Sot?;nF0AS9Oivc4NSyPBXid$8CoopprAQ-i$aNvzZ5F zaXDL1Z2JDe()WF)m@SbP&HwU6SvgRSl8l=h$IHu$pPxT0CT3uK98pL}2sHJ~=QQl6 zl-qa5voZ@)o)SjH^g8v-D-v5SJGvC_V+H zdOW{6fZVfu1XDnE>qeUUk=~6kLSqiE4VI#H{V9IeOhmgZ?N_9c^dr>0Q1~G%2#|0o z4OxCSib&tSYgtVWitC)QwQ-|heF{WClQLj*;+b%OqXyjZ+HNQYEpWHE?|8&xBl`N- z(Y~jHQh2}r+wK#ga3}kBv|8w_cXXdW%(=cUSMT1cex?hEazUzven;ld_pVpg}r9s2*f%?gXrBN~~k9tb81HKO%`Ic73XiJ8bO%fx+YHZ01+Dw}o|esK0a+ zWWC#^UJL<`h_A1pQW-Jcxa{kFO%DIF$rR?#&3f_n z=C?QOh~BoIUS#;=hg5wr6dT1a)CN0ZUv-_EelLz*A7s|LT_(?bv(GQ93Jy9`ajY1r z{aIVmUYF96C$$qm7Vo@BH;;%0U(cPDC==I)4BnBMR@#9O3G{6j5$aJUpM$?T2nh0yH;Sx1Lw3O_=b;`RP|p8K>l7l*IG;eyGwDcglpYMu6dukA^1O&MSD*i z0^vyK(+vwTh{cW<13ar_l^HQ$eF`m;1e)*LG)ao&GqcC%m;7FWk~k5f{jX?Jd0_>& zg4L`eOG6S^4QaDkC0ULI;RDD*b3Z&1s6cj<+i}6$F5dsqbd^C>cF|e{q=iFww|t~@ zcY}0ycc*lBinK_Bbc29&cZYN%NO#`ty>n;$;T+BoXYY5#6KhSD!IZ-;#*->ecs$w1 zk$!q1^7q5XMWlT5esXFY#sJ!WlI1M8E&^f6uCpudcLr2x=Y$Z3u?RLQ-#gv=#>H@* zQ1^zYkSx{r`vpo%nv(uFiv8iJrfL4CR~eRWJc-RY>2g|nSVjFsG05=Sjb~kp+ADX? zo!8_5RLZuB1hH2|S*7pG!R7+iHt16JGJAt(**RHwXoKjKdaC@2N2>ih;JN;zgWw#W zh=?eD!%VL1coKi|eRQ9);_`n9{mpk@(0pcLdgXK8@#=T(xw}ig@o_KjE|aO_DQQ9f zGfIk#xThyqMMZ_&H@@^xB%GHMcny!mRu3kdh04Cs(U_zpbU8UWcmxEa&F)YbkG9VH z`)<#wIel9E4qPp*Zl=9sGD(3a{*uf4s@w>rrWaj&mMX~IJ`X=0y(`?o3y>%2%nf_0p8)(#Z~ zA!a!mlR`_A29DVlB})9-Dr3x9X!x!HuSrmiqxn8Y0PoU_0YGZ8wk&qe!j2H`rj(k>2>d^?PF-fVQDX6o39Gm;SIW)R33hzCZ5B zDu@xQAlqC_(jX2@?a4i|Jt6pcoKVfU2Z37(uRCB#EI2m*4v> zLNAsEm;etJ*@mFa*L~w{!SH`dq}W#x*d=*_=5_{U&9_}GhU)L3*dV_Rcx6f8)8!*$ z(Ni-AdU&NW)Bku+z_8dnXrWR$~jym5Lcwr`2W&0s6WfDluG+#g2BN2G&vFd18T086tnX?XDu!549V!BmuyW1Fd=kw8i zE=t9Jgo84m{)td8?weVQ1kncNBvjR=0bo#JDzI8yON%VN8?p~DltDqgl)If!HP?$6R(ID6J%j>JANuwHhVz-zMm*b+|`3deaoAMrGBqBj8wbu`f7XLd}VB}f4q>$wRE5&qlpCoKVTb; ztWD)Yngm6kQNZHQ2JN_=0%wL(Lg?qWN>;Oje{3EiQlUz$>Tu?VM zF+w1!VGOL)4{3hf*xm4%VZh%-X#gc-vVopLMIHj6Oo+Uf)#!s(+Yy{E$tUNIerhXz zp=IfgP`v+wRlafhL?lTFI%v}*rCjpw+a{==ONug;r-uZZR;w(mz>eivDFm1;TB$Kw8RS*qWzio8QS}2IS{3-C+g~S^p zGE|FjP_F2^c3g4;3g{yukmCNZBh)muL}r&pX3-B9=~Wmf7@#GShi#nt*bszWmJR=- zqFhu|tTAI_5F(9Dg_^qt=zf&$WcEVW|5(O5rU`PYnp<31qz%&8-V!qv_8@RouH%k`1y}jR+OS#;Saj&nhV+c6o=v0c( zu+0}kcH#qeM^aS)qFqt(AM`u1%fn)W%?-ou=|b5m&tHJ&r(ExNmX~VK(lTDY8{^b) zcMv!WxYPE1sxjKXyx%8B@dxwA9;XN_)f*ENvSl*L(QMdU0Q}|Dm56-7b__>QC?PK5 zj&Bj|f_s1?mnkD{rKd)6{u2@NZ^akRS!I0#QDHaO`?=kNYwv^r<%<6GzU)sP25m%H z=gzKOjX13Mts<@3;(lr%Fd0u5E*!CNaDWf3cdkFsZ`>ZH+57t8b2%Y5TRQMzIB|NI zME{3QDTX0W9%-61#9*!@LkAX`1LZh6l{6(p0v8sOIb#YCVwRJROt-c1zN(+PY{k5< z%i4xr_`)$1+D2M|t4kOrS9}D29=uZwBNh=W=Yo!RF_6F>xO+_aB!rl1qHL%QcRPW* zkOj8{t{V-bl12B-xgB~XJOROjochzPo6iX^j8!HKCRxO^0h4!(N5EqsVMvE8DzeyM zs&y~rF_-bM8>&bK19TG9e}*U@Ns%8MD5x#_JJ$mjZM>3vn-2l7>hh5@xTmF5^#lHy zo2!|vC9>$VC<}|D%MV`g4AlX~Y>4XqA78{r8Us2k`{wt9Xq4EdHMc8xx^_gC8f9sO z>@ja}ddwCnTC9#01Y;G7O_n>AkWc;p7MP#tD(MwWx#rZrTuyYK=_!#7c4x3}1$|2( zMXcJNz{v!)4h|3c$nfyp)r=ww3yaZs7PswEZ72vW_}K~rwPqu@{!Y+0{$%cdm;2&~ zc;9H&TSCe-s;C78bB2;>E@#EZHg8vHV(uj*@*-A7WMNkI%fBqlM-9e5o^r0(u4{F- zyB&q*oe>B}*T#lqeN2+QsNrCfq)$XAAT&A)s|0KrMav=RJI_6wip7^C+kOV?S4pZH z$ZPqcn4vTb9@!*v&KrXaRWWC1X0A}3$@!eM>hQ<448!c29R!~wJtY}wJ1TW^?1L-v z2%g@a)HgV&53QbS=%;^e+WO5oKp0~%gyL}pzS}(2cN;x$KAn`*5E|A#@4*6N< zgC>L|w+KAllvw}R7g9&0xn#3aY65*DNpd$F#-F9nM$w>l;Z90bPQJ_H5Iql3*>Xp$663K7JI^-U0-=)V{(_hQ8HH6ByN{I z$Ad{SVy_*DzVEeK@V5mLJm;1yuwd8F)^-#~dlc2xu|H^3_V)Ayn~i*(n%wA(!ON>1 z>Jp}$GFbVHAY$+HnJwxrZvKe4Z*I^9V}&xGMww`0;6 zW8ro>Q#;9Fa;4wMK>F{UH$E6bRU3`rH=e93=GU-5VPiKhE+_45bn@HVi@k$mGwy|N zOwTk4PrzqSo<~*we=PvKm&<7otf{IxISX6QSod2O0s{Q3?DUPpp|c41ckc-Y{VCDI zNS%9}(Nq}WdZ~*L$&~QPA~dkO1#ieVf=SIdU(r{>ZN!ZlviR{Vq!@>KdKc3Ie+7bm zBiDc_uIbi13!wP;0F&?Ldj=Xc@nbhzN4%&XMeo4%5}BHpiT;_L`z(S-VC^~NQPdXl zU-5e*V^g{6R!)_?Fas5ZiHluB2UImRJ%V~ORx+)xU!&xz;swx~T%6Hc)JS|OsjZF{ z{Ktb)y`3NbV!Xi>^y5=gQ}el9^>|Hj-fl1i9hIt@+Ic^LgQ1a8R}z(MNmZ3(uI9ku zi~@re`Ht@62v0GmJtm&@@21-o94~H#Z&24mQpNK-KBX^ zFz8_69Wv`=ULUp&zGWwdqJ+DTr;Cg1S}T>P@O^6tG+cuvEsp-H}1f3SQ z$Vs{A-PDhO*EeCU&JT`d3G^Q}7Gl_T)P}2B>kP$&aGko8+OcnzE7fZ#c425PCX^O_ zkS^0CAV9x^oH&^f#cGIxyRm9jT+Q0lsY(A8{hcTNFZT|b=a0qFE<6u(;jCBqTLSYH z7}E>6qU5tPKakitC`1S2CF2p}mBmBP{$u~Bda;vC0wn7ELaM5`Kx7{h9*#jmGO^D| zak_yT*0kmw4f^mkuYDrGmfmj!qb}AKW*;0teC{?=@+*KvT^5zsL!Vw!A0?ABx?+ar zTQf_YZ>x4+?lGnUmbrz53@{Bn*|97|MgI4fAawe+|?&BACseY7m|j`Ro0%kfbP=8rC|Y zsu_wD8Tj+FK2Yxf;Ezl5g{AQefhB1qCBWn`l@rK%klD(syTJ?(mf}ciN-5@kT(J7E z@2hzR=)l2%odH5D`V6c7_q-zTWHHs3th*H=sW8X9AuyUq499nm@V#Ft;4iRZN%<=} zI|4KyGeyzzH-()DVq#*L)x?X;W{8sh_pkw&8_^gvC0b2!;qw(eGKE{~iUN_zRZO?- z5A@^x{bFyy8lau_XAT0vCp5I$d^%=4%~dDj;1<}ljEm?w885@9ie{j8~@fh@Uw@M3qQrn-9L4h*Ny=1I}e_X^$5@n8Gy^5Ou(M4K>3 zQl}lS0xvHwl$4a!=41F_?}@yJj$BXMH}=e%m;9DkrR1@u&q|aQJmP@9R&5rS)*@i#T8(a-TcqA4kd*WQ;vGIyCis^@c1&fKw4Hst)nj! z{e#Ga0s?JhWGoTU%BfE@^PdCUz7BTs%$ z39N^n#Pjfn=cWVuVQ;ED_$K(z2!37pGQ%{C$rFyr?_28gjQzE{<7#1L{1_JaOE?Yx zR$)*oqdWm1F`x7ef{Aeb~FM)F$Ve8*P5*j;Y8i_S;}s8xa-LeFT1HNS=@DzSRcNEoY?aYn@N9E zQSiC<>_nvhCA`M{uXdx|@BaQ+0w-5jN(zd9B?gP_A~PsQm{z=s2jA*cZ!E{tB_ot7 zm0|`~LM_zz6wX`!(~RbpV~)y?ow+zuFmhdF_=aTDmVb50BSlJ)kWUL|qH@b)VrHZb zVxGw4<$tM|DpFR~Hi#{+#0M~nm09TiXU5;N^bg!Ekc~e}WK=&59lVaP{bsdeNp#uK8LZ*mUru0JM3o&|)G7uk_gJH*11dm)mg#EB37 zICbM=;x@+nj_S_a9+6ss-uAABDqZnv|t z5=pwc!i2Hi>iyu5{C`3Pt!X2Comx`_!IwJ^Kmd8d%|9_D5V2Z*dyQ zaQ@R4+m69|;uZL&{Jo(f7I-y!`=*lyTTjimR$5jCiN?Bn#lEq#<-gU0 zYeODHoB7Yb*PR-^#}_g0;(##7)y@5Vm9X5U2-*mYNg!v{>-ABOLyWB#-D6!6un&+5 zcawII_J{T9YV3$={3C5O_1_IR&rJQfZeCu*ARruiqbNvN?mfYlsHEO|a;1VR8_SX; z(?Vfg(ltR=tlZzYv%Q$1GhM09Lgnq*G>|Y7ieuFauatb*DV`owT3TxRyYVmIz4uO{ z1@CK^Qjd3;;g4;WnCWnw$YCKf`U%k zRvwH2qK_=E5J#&d1I#HX$2LLLkd~Q-{$~@^T?JjqD>1d?aXUrZhGy~s(Zwa{N(~q! zgyP=={c6^EL7p9Vpx#p*{A9x}^}q5+{hM)^*3a9!8!_?uBMw_B^dK--Yb$`#V)Vjz z6i9mixHf~GihG;E{&1VM2SyL8;p-%fWQNHB;b=RQ2rRH{!k%4mq%n6UkZC=N?hpf1 zp9rZuI2NqS6E1c3Alm2cJh(QGU74W379<>H*tVB$q!l(>-1(W}I@2w&Uk`UCG5L91 z5zH6C%opqYChu~X^kjO!3%7+1qRzbOAm^dvb@@e)HYbrBAQFOFQD@@`P2Ort8D!cB zl|wpuZyrG7o0;gZ3P_Do+U6Gp@S% z9_WiV&29YsTBR$nwTwi=bO#Y-6&3e81EEJx59t0KrKO#n+1_Y6-`z$qKff&rV|Ny} zi=&$x*eSFwQHG^um@gT>Hzi53JCS`2jbn7@SQAK}+|?OKni7Su+vXL2Nf+hB`9(NWVjsmWo7-ZyurR9^b`1MNlMBSu;nl|J=+8H&hoC9P1ftEQh zAzlyH2VFn0fh5DdFq^zsIjl4h0^RnMjF?Z=Q&9d^BaHxWwVtOQ}A-vHA zu%hND?W%B}52-f)8=i0|Y`GU#uh53=thbsuSnm)7dYrbiZY0jDtQQ;z0l`RjC{oL* z07QIse!jmq5<{!alSPH`52JRg`j_;HOd6@`(9ksRRhNkd!TH3MkB#5>qtYYkf}ewM zG0@GH z!s{A{jEH~Takp$4oyJ6u#dZklo^oT)sVAxFizwN_y8VYZc~sL-Pd!~m0#&Jh$KASm zrCTkqqMb!!C`d6lD~M)lEj57RP6jUr(@k*$jWd0uLEfefjW%7#f>ZEo0WHaN|JaBr zXmLyojh&#Ak3FT19;-_U|{UR86S-`2ey7*)eXfaB6Zn zsH_6oL^Ln*9O*cPlMPe>hi2kHJ85ih8zhrY1_)TFZ+;=4AB>ibX4}_HUcFBk*rVQo zqOnLKp0uBH^1BJZ@Gv(147p^g0}UG*2-;p|%RL%$;$NAMt0 zfm3T+?pMG?U;G#zDy1!yFBGFs$(yo9aJ;6RU4>(U!vR_#KenOD(u$P4WklBDs6hs% zT&<;d2Q_u|)WfZUP>kRH9o_UzoWP1VI64QiHf>H1o~}NJu4`(PF$%NWMFIiC@H*=PF3Z7!eseJsOsn zBm|=st{IKu94ha$06X&D(^dOXAwT^aR|N$(*}o_teFt1o!>Rn6$vOnF|XUxl*ulTbChK+|2YP& z%oWO%r2(h4sqcq;cI>e#vFfthcPu9h!w;x-N6B7hpX|z2spp<_m}#@VHr8jO#w?i) zQ(@}YU$5!1_I0L1=;akSj;HPRPwTJzpyz@CohjeT-8KyD>Vxy;D>fmIYs7+qe|9#n zhw%!TnVGpctHT=Kujd;b{m*0R%i1-G8R-aM8OvVK;mqdE?^eN+p&+?mg1&$=0}28> z48qX%!fW=NRP|!s4mCbFRr2s}=d9*dozF(PQZ8?;48UeQwBLCLrK@`<6C7-l8ZO;~5h2hq-$&=N+L6 zEj$wgC8G>wa=U?sWM9+zmZ`l$=XQLK0j3n}IC(^d*MN%;uJEWcWcm+tFNYap^>^*@ zwR$noFMxLX&6VXf58%N6T4Vh;%<;vVeSQy{OM7X{)GjzbPENb>-5f+|Y z27|Z3NQJ@sKMP|`gNJ#xjadpp6?34q0-9Ld;5CosIr_N0BG8{CFMfvya6i|#)WG}{ zl;B6$_1UM^H6cKmzhe8lHJ}TVcs(+(L}T4~xIRk1@5S(;Ok_4Fqf%kqx6~tAXVC6lN!8EO ztk_%J&oL?Zl%S+5H(DUg$KuWqTTx-FAT8{7fR;I5-t~b#3Kim4OAb~g|1v|$7?#-^ z%N*d9mbUe|(fX!S9l+-1#>eJBEXwmu_P-!_9*US7qX?A2cVd`*Wf6BVa}j^XsSd0h z)W2Ig6lyJn<+Y;#eV+W^3b0ci3i8Xs*fgXj@y<%UY$k8&&nIiu02tuTdCFd``N%%d zHH;7Ufq<~W_TeS}IWCckX%l#g=?Y=r^xnNgBO#QJ7>K1I$C*=2QqGW+&|*1pe-980 z(B@Qf+=RHbK?vTaNc4P*nJE}XoV0A{g_Q&cRW$H;%)a$n&NA>!yF${lR0K^W&o#u< zGY%=a>iTFQ|2;w%AIFUk%k3gC!94G#j$U5%zT0GZ^uHPB<@>>Ex7|@HO`Xh|ye3MY zOPS{?CIlf6H&w%i)%&c6ITHT!*jPtgZzPIHd_fH&Hl>DRMGm^pNolh73Ci@feINg} z5iRTqX;6N8bque4FiL@eh~E#wN#i zd!=!d(<_}@f=5E4BIn^iC+qe9W1;^sdM0qmsOPxe#C_@^a4zz<$f=7sm;rUQ}PN(urC29Hd$rR(PQ6Kmm7up%OG^g$U^S)C2Re$+~5o2 zDJyd&>qi!b4%AJ0_VurS;g?GZ%Wm`s5bdxr-2Qg|{!v~?Ts9LZ_ik!a+c{a8R%VD& zFIC7n=B0qRc=c~VZ9`-Q`|hz#DNe`;QzBN5+-blLsc4R;va}I=u|N=vEmBaxl{oy_ zBl&bR$N?p=xd_qXVqYoW7Z8#7{$-c*eY_YI=4X9)J&zxKI5J58q}tnohLsW=Xk$LM zwIa*3+gLZAhXV1v7|rO@vd9+SKHDr9-qrnqVSqSs?~`@vnnag;o+}|*Gch1oEWiDH zyT0E-;%B%EN8)H?&lr1uZ@RzhWTNoi2Kq5xRIH7ITxvV#?Y6&UfwBr@tXEJNjg8%r zA^LdiJppw%N}XuJ$NVw5=$2#-7aHtTQd{SAWNCC5d7M%#9yUAVAr|lH>+@b~7-8O& zjJy~9jjLvGpr+Srb|2ju^VLfaa@0B}+tvz>;^Wflwd8EeDhze(VENINBM{>|cdBbT z8Y1^5?>w;D0ErQS-&#s4Rh~j_2@XX z_ocCzIPzr6rL*o@DzJp~Y&8D17p+>jTr`P?9hk2I_Fa#)p(6RrpB1gerC)CsstQ)k z_qu;Uw^X0LQH{!ZHCeMh-1+VM+ls}5860vF%=%Xc8qw6jv!GwSR{8NuUPLJPys@*m z+KW@wIZ^WxeELj&LyF2V-?|H25tG>lBV_pwja{Q>gtc6V3f)q^G;wS=g1qNzN<%rr zOBF3}$Xy(3&lsWtx9Zc$D12wgA6uO%C0syC1n-*$tpuSXTe%QUsL{b;+C!AyLiN9c zCjEijk;$8?L`Ns4m=S_NR%8HQp2nMcnVgj7dcQmRc58p!?8IfF#{boCYkKA|Gj-sf znDe#$p89j@fB6>f9CO%6bvTTse=!sjQd0-kbG*XBWo7SWg`p^l6sUYV-`p^1c50;> zj2A8##3Kvi+dwiJKffJ#pwDYpV(GSY7dKo9vy5~lKO$b$uOhWlAfV1np;mz#GpCR! z!^@wG8M2pTOx?VEjQms<`97Xffk0eDl>r>RvdOkoL==^JKK~};Xa{E+A%~33hr1$M zxQe~^^?_jGsB=`@gMyEu3Ciz3^j7R1lbjUcj-eSDH`sq-Dz0QkiZra}Uysk>&w5_k zeH!hEGO8WH=Zibj`l@Ih{OjpL7EE~sI2b4#%GEz4QP$WlvF=Ue_^a+?c5hD2&h~=# zEnU!GKwMnB>zu&8Ik2FBlGy*rX;=r}(___HdyGg|mo-8*3hp&;!b9&f!FtLm4Bi*h z9b*@6EuBV+jUWRb5uKeUTy*q?ez3loU};8G76d8QUKC3O5&CwOxQH5DIipU-2<`eXOxXp zgmgbShkX0-;bK>`;G(jkWFyofXLmQ%V9zGRv*WTb_0Dz-zu)hU%!7P7qat7{S#h!5 zg(k7i+=(vFW9LYxvD$HsPaTG5mQh@lPk$WhF-n&3JvM`;(1hS~!G}EuNF{xQ$nO{lKeOb&`20s5pIk!~jOWpxU~tv0 zvNS*FvCErC8EJIy%d9Da*%vRoYL3SUXfj zlbrmi<;}e+B6sWdY;_GqLD?vCs(2aITto*SwVlzG>BbL)m1O4WFxZhdn}S6%oYvzf z-B;tzRKQv*@1jBs14bSnB7mkzV`7QV=vcjQC8(9$M1@ zzvJ5_B9hm2wucl6Us|@!!o}=p`myeZq=Y&&KQk71^o2NDN^s>KFVU2KHM)(oe54O^ zFH1L9;k_n$_r}(qMn5M$wdf@sey)@*tG-n)?N}XOUP616sNS`4#+n5o$h>Lm{4s$t z^1uz6N>8JU?ak0-7F44gnheD~~k^7E+Dz;}i0$>GjN;NSVnGPU<61b?}W z=YK^e7>zbl4+LDcr@~kHk9mKOc>nWVSj)uGa5N5SmZF3|+WO>>NxK zO}@BJO8vhU0Od2jjTJ`|g{Xw7CfB{R6?p!WaurF>F(|gGZ0wNULt7; z2PLmUR$z2VxW>IAN`Cu@sTCh@bJA5*fN0$FeTCec+QQIZW?U!Kuq|Xp!xrPiruMrLs`xC<` z?t!ISmI09&ZZA8gMBxcu_)RiI9fBCrq`{Y0sKoLeh0q3%JhVgvt&BWmqXS|jcy74C zCAckQQ|P(@0X1%}Dy^sY;oA%zUM>o@)VwbY!x=|(73+$pvvP9pc@^Rb-uQN^lPeI& z2XTZgc0SH1(K>jvS~g`^9ekX|jL5@dpyqi?r_f;_QmFbJW#N1DBsvb3yz-a0okcEI z*YjRWaz$QcZ*mX|!FEu7+me;wnQdxb#>makzN?YZ$GKNUQ1*0Tnyp_Ejt`ECli-bg zqlVa7*11l9V2_Sfdo20*(aC-jPmX}voA=nZWUJ2ZC=y}e)6Fivx2Y*mad-CN7>xd( z9%aDt<3$s2VQcD#p~bz)nHT^8Jq z@JGFF>3BjfUjZd2T?1)xS?JhoiF%_=(|(#MHtt}*bT89)_L?H_o2FaUFr)DiA^bs7 z{Noaq#X^>)TaYauw2Yd{AA>GvYO#7DHY`E3*P`_(-nd2|rs58^xk8~UqP~fWRn$U? zs!~bG)%4V2O9O9_p!7Bx@N)O@qex9;(Z=s^$UYjrzIj1S6j_asvZ@q9>nlceVF6uA zdaE%)O@`D*qfJWjBd!l+0e`O_S+wQ3Rv5ucB`Neftavh^=$RvdGk+z>QZb5S56#Ev zN44`6brRe9tOjSxffDx0 zg647L&NP2`a&)=&uk8=Ufxp)YnQ6m=-RLr`F8)etzq^2o(bPsBma!_6jr9^-F4U@t zky<^SyVDz#m{ZP}F}24*X&IA02~%BvvHi~J*guaP+MaHl50JoZ6lL0rR4urSu`jq{ zgoQi$oIhPoT#j+BpAFIEzzpaz;{2mVzI{H~oR&r1A^4{C6D^h}X8Na$1a^v}a896Y z$>P{aKmPdmY0t*WHb#RjyT_;BYr~DpGN4RzY}UJ@62yCe@h&uScy((_X41^on8)ZI0(UB!x&?U3ju5+;A#GxNR3Pu`-e%*Coi`0HKJB z3i#mJNOkTq-vzcq)E`19Z?bG*OCc>BzgFC2?6gI zs`V*?X0Jsejx@*y7gGYcQRj>Qiq^9~5GF<)uZ8S>Dqm?x*XX#<`Yj=Es5%9eEStIz zJZ0T)$R24e9*qz^BCS#k70Z+5n1Y`o5-3OAb99T4Llqwl?}qD?2sfyuOIql~<4-4* zBv!l{HDz5iWm-@(BUM%k9X%5_W#9G3_09J$A0p-~#e11$JiizA_vS80yq+*{fMQgu z&Vg6Q=EK=t8z!{{b8Sh;))nDSt%1UH>oG&){Fmg^Fa2vp+HHO$P1(GGX%SN2p0=Qu z?XX`?w}vPO4q9Fwj-(Y7_9|OX$jQh8!AOc)$4xN5OXXkQjqkw=ccj#0z?O)`?|Ztx zJp6qtv}3*2=GFH4@>s6jfEci!>Knqy8l_*V1=_ee>j~_l96^NqF_G8fAPV`{vdKlO zg84-mtLzBENJdg(P$?Z`f0Y+j=1F&wrg;vl%_}4;Ni4T<=-G5iE{aBS%^2J(KYsee z!xA#{_BA;mutcN{YN~c0YJ*ygWZJ_^FH!O8aYa zVAR)l>ZiZ^=a*%C1W0^YopF^u$>r1^+e>5%;`~0kxx8gsGm)})s1)2MAI>DOVrk0% zGLrtf%BuVYQZlR~B_(ADP|-I}&!_$ahRkOJf-i|s(C-M3RFF6QHvrdISXmhdaB_Yw zbJp~KOb6$hC&e5@f5(}-?{G=%2m6)6#MWs}hoqnKI}H-drKg4x_D1F3Yuz_LpT9JH zeAA6i&dCxgP|A%-S)AkQ@F8b?VlRW$opb)vnzEuvc%oxU2D0zl&>=ibi=CubHvUTx zBvpGR$PLlS|I>mR6^qzp5(JN2g zc*p#lun2Q;vgyb^c-C7)M=TLZY#hyR(ahniT~LY7yzpCU5mId9k_oLiep6=L?gvpB z4ZnY4)PW|WK{-^SLZVQW4Eo7W&^`yJbp(NRDe$AYkV_FNTElwxYW9**@r-?8--@tk zap2y#JF+^)UkR~~W#E4(Q_555c+~(5< z%;q-zHa{lBmMrk|R=n1F4P0Het{?v$h>5L{q%T%VMQjNs;)*^~OJphdyc3cW&>8l) zv@AK?sw;}J+Q%AZadoWfT$6CIWbKXVVTbUtQc~gtOyMBi4lshz0nfNcfs&ArLu9dx zQ!_D{3j#47*7s9v&R8O@uMjkp7=+O&Ox(;MQbz;Wc^%?3#W<EJ4 zpW-cFo`nqCUrForTOlE5=o?jmCfry??#ot9+RV#x^*a9vC(YZ}p;)={8kNH#Tua&gwNXF5f_bG?W5&ii+)kD$k#!8;wmCV>f&Tk%m`y2L! zM66V?a*62mQ%UONb3nJ(f-e6HJyspG$YWnLPMzPgH&E>2S~vTmv)He2^~aM;#B#3T z66)OlwccZV2|x;qH(mVRWjSkY{84+0JpZs7sb}RCE8W9;Wwx({>Z_c!>~7#;sZ>1+|ucY*t#FAu*KtG@Yn&Yo@i z!aGtm9D^vg>*#hfl@i30_f-V4q-ONf8E{8qdHyQy=z2S&mKcX)d*kny%c+solWFH9 z!xS$th$_k0spD|vDZy`^WO9A*u~>2L&o59CuhpeYFUwF$=W(&6CWcx}ez;C$Kl1}Z zTkyjXFsOk+3c1twc2yG00(03P7cb^L|0SnhhE=F6?Rj_FDzy!c!W>AAeeQQtSNoY- zk6CN$>bwB2<3G=*N36>pW`6T=ZhCepPA0c=_d20evB1F_wRSrh%p!hKqdPGPRA^19 zXu$f?G^;WbVBIeC*=6T&A%kmez?Qz4T(pb_#aun zX<88d91wuZKyJ2RUpHybPBBC(QuVXO&MI>^{ynp*L%2JE8f-cWosaISA$#>ZS zMm;t7eP+u0)=-YIG(xtt)SUHi34uTg`ea-&hKCMF8=zwk7;2R1+ZK`zJA| zU7nn^vAr^>#1UobTsnr9A=g9uM$x{>VO;<)HsMRQdmuy+9# z6jrv!hQ)FGKpCUmm08h8rK@oQPY$9)vx0=EWzM>yxQ(cgfx4paX9A9<=r5Z5+z52w z>v;xyRkwpkWFhNsymx$T zC;2S+=60%B#zj^)dK79t-skH%4HjHv;PrC> z|AVdutnxnuI0ONs8B8QrSakZ_uKzC+!s8NurH4u zTbG!7h@t>|qh6aAL8EkNmL@6ni-eQ+dypw4ivss3=H^3fiVI<7R|89;haTc}jtYv||a6KSj`fWjG@Yob+dhX&jMMes`r9(ud?oTrH?EyzKxYl<37r-W1@ih}kn38|}UV88FgJs0d8WjA+%gRo^&|KU{2 zJvhHVsE(F0E^A5td87Uh(9x0uz$-{%0z-;oq|RSKiSmIlT~&|JDRHV-vM&p>LdHuL z+Te6`7!(H0?Zn>2*Be;@haZ6WHF;=oa06@&BK;tHFi7mV0R`rg{d>fvrKGrw1|GJe znUpm(2LamtzIDZxLj?>ak&uvR+U8k=(odoUKzqD)MUnsOOSm4~_lAZPFe8c0^K8SO zZhmji9DJw4xiTF5SY`+Zer((2I4^jv>^q*_$;lOLRn5DCVB4N=elzI(tp9yi&+Cv2 zjY`4P@St#*2otR{nCYx#TfV`Rx1~2}P5=*P^L$h%JoFu>& zb{Am<(BhYZ{U`H}rDRzGjvGRe=veewTr7r$G`xuvlCc?8cTxD(z|#$j$aBycjYA?} zI_S717W|IW-gz)L1f6jcU4j)Ik9C&tcV;GrNT(kndbiVh^x4w|nbcPj;WiPjm+BTm z@(QauV<&D)mIfqe@GRUu2KBum?P0nHmyk=BQQ6I@B;^Mw%Z#K1Y@US@&FY5(&2Faq z;Hh4K#<~5qt4~{IS*oblmJ4*FG-lWSmnCDTk|C*5MFNRjcB2Sv`4!eS#&g7E8%?d* z2fLe}7Q#$xFRy00y%$YcSxowoue^O7kHt2BlvRSgVQaj{wUQ*hU?`+|Vq)Sy`^VkI z2vccg<=&izL19r*SWwVg{m*~d%}3J$7moU@8=OG^ciGSOV0Ay%)#wN_55@@@;vK;TdKFhi08k-6?{5_e!M*u z++rbS^5i4FxV$VaFBfx~lpphD;*)OglhT!875#jR5%Pg7y#QlHwx)Du5Hx)tLnzx> z=JuGA$rX}|<_Ot~(ECo;4#~=h`X-@hiQf5|px9`3A!cz|<;PNIoNaVPVNuD9rbSZY zb34n>3X9~0;Zw8Wv0HZU2MoRL|eXfjNJAkB|_6eaL-?n zVyr_sy`8QJCBRuKWWe7oh%hE&RK=3%6Nm~cdpDW+N$2r@YSCVplF6<~$++R*P)jv( zUQ8S!l`ADz$%)|56%7*zJZ`3}#ZZp(G7^gq!K_r2g8II^IGXIx5yl`gzUW60e003l zPSBz|KA9^TfB5Sa=h*!b0()!Va}JwCd49cM09|b{L2Tc4E>YRChi`0RqE%;(@wo#+xy$-|(gK`7HC~tI=olDYyD1uJoDRhA zf&()hex)Z;^fh>%w%>X_92PtAWb-{7i`rJ9v)6)-*jPM@U5Tk-od*D3p z@3!Mxo-Rg$w=HfD|G69o->0Ur-mT=MZ7$}{*qiz5U_55nlv>(-AGZ_|AqSric=#~J z31yU=sn3;IXm&h7WRxl?{Q92fj_Gxm;8#~jWVO)Z9^W`cw(HIySXK4yN-Q+W`w!j# zm(QJNMzPly$*KH(yl+O-Y(rG3IG%x8qj{X|V7~8t0BW@nusnN4rj~pUif&1(i76C( zR?3&S|4=$BO=C!wwLDqU1O7?P^pVt#9y*bTjQ-TmJa*S5Myirh61gJ*aPSXr%q)K9lCDZWpqh=`mXzqe z^upqQFYfP8#>x>>@IjPj5ftpM@iw6IopFwsaaX)G9iW;y@3D7waXADtY#n_jzVU;n zrnb&s`+sQq3aG5IwrxV`?(XiAlJ0I15R?)rDUlNCZbYO(NBP6j)eTA$M4rm_lH2SHIZQF)%QokTNmh`T6pP#nqJ?3q{Z5+L9?sWOXJUtY&0>aaQRPJWN>haLgUn$oyr2sgjZnA8&A%-chH z9utoIuzZ z67uVIJTd!|W7cQxWQv4hpZ;X%LT-vRIdoRIENDIDO3Bb7X_MNZyD$nrEGMiqNTH%u zb==F>ar)*sEZ1$p-~&uaCWsBAVH|LA7?^<-f=3- zVhe7lX^;Il1KRSQ&wmm0t8;rd3K4{#KJA4)rVi5NYg$i=nd<9P^ZUCM+;3~W`@Q1t z?vJW@kHYDz+WRkq?C%*Z8I0!kn0<^NhTGX0YxLBN4?r^FCGXQ)ii|unlf1aY4Dp}7 zJwkJ>j(HG9*yGb9oRZ-=(eLrjP>B#?k=b+nhkw|n3|perhOyd@34}4)k5z||b`fbp zC4?Y-ijE{aSa=77hZnlEk$9{L`&rQYe~|mj;|NOi*f`rz!=sNE`5bW%^4tS4uC9r~ zFibFd?>ZL8tW!w$3tlL`J7<;MH^$DvbE>wko#cDmkbWQd)G~dJD5J==!^XoifMi_$ zChN1P?A~FVjM~cJ6T*UNr|9h*J+2YfT|kv=>3U8}0Sag-4!(Y_E#g^MQ<#rc*nOvO zEFv<6qJsIJimto{n`m0-CI1a`URvem@4Ng!5NoCF zyy_vSr1Q6b#1uNMRG%Nd2;3xfmP2j&;kmz3glZCLTG!U&X9$p6#Nx_<{3YJX>0Nf6 z$E&Q67LxmS-OhzA!?s75E(jteY9+Fk{`SPCK@LqYP7(dJ$)K5S9~1@BND5uCj+Nylzgut zBP&TGU4u3I@Sd49b3MQ|>{@pMTdb-xOC6m)e5{DRz(bv@cGKA9&X_rHRw2s?{^q<| zR*YTUl+EE7zpk{!!N-SZOzSfLCEokz>$Fdwcy3_F%v-OO_)rlRxs{uzQ z(?*}Fp#Gmsa7&lbMbRk(ujq}~A5)B#(_rbnmAjAMr|48}m_hJ!hFy;!9xm0=hJ{d{ zC5yuRIo<(;YJx+W?q7AzK8_VehV6s`cC1MkskuCNg@32m!pMH3n_ya#`S3JLau=Ft zbtvru#TMT+?@t3=>6G*?XxCFFnuH8 zZzziI6G%+jk2@7cMT;Ltt{EvllzbtVsDNa=w=~rHOVYr4?X18P^^xO%yYJV=1sAFf zufN8u2ua0$d3m{e^CCNI$BP#C#g{*h(%PqiPczv_rPwKQEikW=DbVvPh+rmLZjY_Lbiqgc2 z;;+XwxZ%7Y(U%(Pq!9d^S`lX_LWL+cr4o@pK9M;{QK3SmRHJ_GKYEH|Ly=*-+730d zkWQhd=HJ0SWKD+jC%xBRB}Iwo{%pV3mlyXsgx#5`p*qVwt}qzwW0^{1g0OffECH$G zBxZL0!-p!ADse3x+z{q;dNir>gAs+S!y#OtIHt&ckx=splx>pxqVgkqA=yBcnrYEa z)i>lD!-f>5)Tp5yIjoRveCF5fR2b?oJQJnnS>iXyq)wvHax+X0Fkqji#>VQZeAi&7 z&vxDmPS-hAl^*0jga7>}x!@w^?%w<5{toO1XFKIphdxpy>5I$Wmzql-FI5|1#y$=*Qyu3CKyguoj>TfG5T2FeXgo%l1BE>g%!BUg&FV-15 zf>2Z0_?@zI^CeTnzbi*ew6oM1Wgeme(2CxxI+WZO+8uloHtma&wVkagIw6&)!WmN2 zT~^5CiWm!{?L?SpZ;|QU_%`1pZZRD((iEq(M$LR z;tZdzKRATd1ObM?b3{+uuLwx^H2jF|w<=~Pkf?3Sq2OW5)ZRDxB2wK@MwV(oSvPff z(NapHK~!KJp37^j8^(o`qk<5G)lluL-zyx})!AIau3`XSW=5V)>u2Dt^vcSL?K3ae zWs8RoBYW2vCC+E=Sw3!Xp>=IJLOWg3&8{Zu#(s zu0Kb>H``2#>6uYQMnXbBA83D%uN_YPCXgirc-#;&t5gFD33AoL+S5gl9f7r02M%&W zs6nGUY)Bd0_+(o9i#%^l*Qz}Tna89WsbN0e>~+xD=Cf0ViRbLvSy7Ao1=9=PYM<~b zFs7uuk5}QtcW6{N+iwpF_Vz)S_RC#Y&lZR37=|yjw|$h?-LQ6B`j_??JENE=GJTH8nLPdM_3{VZcadQD5}KqvMs7 zlvGn!&-Zq9CkMk7{>|v~%*;#^cxHKlHxg9w5fGM<2PWpb6~=>o$;?g11KhLKR;XO5 z45<(*wg#7Ao3))AeNL)cZ{CRtm1{rh)=H^3hISo0uxjXm00Ic{1B023xkEn^+ zw3d6QyVIWJ$-IUVWJdbee+eP%c_>?gI8~z?B7*Rn4?cp3qxIa*ZX~-uhLqdq`s7E` z2AO;B^M-i`C#S;N+LW!WEe65+R1h}3eB@*A=!oUTi^Rdjp=4niy~Mg1A;=`nsZIoP z0wd~2TX_~fQs+0|-!Y(uUe;MdS*Pis84d;HjzNmp?-e?_RYt#wlocG= zb#ui#JYfVVTgOtG5^)u1QC>Q54PtA?O;MCWU`cR{R5;2jV0j`XF{TZ=H)eO)*TL|e zL_n&UEt&~?9)RrDBFSAU_KBLkNVT(Zqno?`n3rZ|DC$JS$!znn$)ETOW{Eyu{XEFG z7K~132`ggpotT(dEokMlb=X7Ea0^ru>7;J2{)p%3(7oCdM8xR8B?%I`5ziIq7`P2p zn^k-xQ;>f3Z@oC}amTi&kmD3bOl-HsCOF&s;a(E{&2l;W#R&49rsj=zk9+{&fSVXQ zVvdGq%^)b43>nP`Gc;VB&i>82`X2YQBi3?4;{if|1oJ_{($`nSl$8AtpNoTGbp_uz zw%gk3c)fqYYyLUhtZquHiXT_?uDFdYEG+E*HVRX( zzFnhx3Q8Kk{v1pm;9p|4HXSC;1>7nxF0p;%%4XkVz6fu##yp*Q+6@Ds}6Ji?~*?P z25`nJEv1NXVoEZd|9&4{6XUbli>9Fhhg;qhY8)FaX=7TQM=z9gMMT#|{yaUx=ebC~ zprmK=xRR=URCE+cI0j*I+egQWuU~0vXBT);zR%7^_uDeDvv0D0xq1o*7{CTM{~Fr# z4GlZ@W@{ZB99A-(<>o)Eddy>17u5!pR|sVfM6n|<4Pc=q-@JJPc3E~_-uSvY5%A}Q zn^pV*6@e{y0kT25Eq^>cGt)=wy&$ixjY~;MnLcdy*k|P~WVfeFzw#1bx)*Te16QpO z{VI6FlCk+)s531)J{UJ_N+lcmU3#&o;dXrP0u8ckKCAVImT! z2?ZdVl9iKlJLx7~6%}X>$UlW#6&xxN4)NTiq@Y=cUe@zcQISr0{Rh!ymHWY$_K_B2-xj&{qZeQMV3UHQkV-e>D! zE0o0ex7Z`&>iq-TZ%>8f_#WP=ETd3l!^vrW>|GJbQypN**QBNNGw_P%@nAA~?|R>c z(0VYne2v!7i{-C-MRl={zIszDm(8*$)5~BVx!!0qhJ%`tdPWYNR=znJ@&aFoM>>BF zC5^xBy+t0=xeueMvmL6QGAUGgTde(Nx{dL#^trL39QOp*JQ|n~og2Y*I5>GKRUu9kyX)POg2JbRi`aDZx!yB&+`J zR{b?V)+-IWSb^}WVDq=0F?lbzqrec?V=4SHhRJXc71K6n0&^xjF}c63`pQ?L|tbcbI?QmzJijHyifd z%;|;i*S!512@rvRw%c?S637CWX$uT&sOjobnzIo7ZC)ZTobosjlZACSp_jEpR+;b^0*<`?5O=FQ? zwzZbG6lUs}nz5*Czpx-FkDXFm{FM~sR*Y5hL)-hySz#j#jA@rAwt)Z}p!ae#Y(c z+P0)$u|k3tTkqN*w4vhe&wK^m0xQHy>cKxY?{7KMdhX*%iUtW3Qn#WBu4?HNLrVVJ zL4EGGrEfLfdfeqICQ3CA*2q^X(>wk?R~*LqplFwiY{Y|R!#M5{rA@xiymeJOm?eSTnmOCBE$k5=v9M`vUI|3WtTd=riad;i4$qn;`a zU3bEMRBg?gC0`tf1 zDTM8Cn!OKt9P5Q_`v?#WBy*w^ik!SWGF>8i?W`79Xd7NDL8+L>$|-Y7f4YbR(W5WU zD|@x0cE1;zw6evMNx6*$fPnx9jq3B~ydc_Rfavf|INVV!fjvN+mIyo1)YR0SO|Rxf z7It=e_n(L*hgdE?z$D=_K4D-o)F~038Q3ymfXyE&rd(|Bn!*^(I}()&`zfwg47o@+ zHdYDgKB#b}!D$uTyNP?Fh8C!YI*yNcOAb3f8h;EK=Q3qrVoK=`+4WL>`rj{P)Am68 zb(*M-F;ZVlp0xg_eFXYxsJ7ws%AP3t%os!^l^D~>aaPUobagl1k}E=)U96?#q)@7w zF$%hn-^?oOG&4;aSUwAAlNE1x@+O2(t}T5z2_sKdE}|Ku;&0)P*7l14bp^(>m4AN8 zD1U&txT&r2M#NZPjb-c91&Gn5w>S29;` zNEiY=z#K)FM;<&GHxn|U_Q^$yTCmg0!=}rt z02UUHRl_9Yh6Jinu}h6}w>3vH7xUp|(Drtf9Gd>>#d(Wg6pSY21D80dME+ zX8tiHjaki@s{Wghoe%kq<4QIiT|)2N*`6JDK9kjBe4zJV(cAmC{_KG{rw=PzRx~bD zPM>z(;GRWXG$vlUapfdo&i|Yr*$8aOreBw}Of_vfnRqmNS@pHW@CNT9zz+yAB&eA| zMI%y^OU#A9^=K{VP~$P#QluwRTjpIV2qVHGq#CY?LtI+0Dj7(REQtTN!Ngwv4f4`ckwi2hot8Be+92gu_*VTOn!#0dK zf%5r!@KflS^ZgKHwe0WjhoH#fc@tv=A=UwLXJc;f1d2rCR~J4%!rdGTciBeB8G=_$ z3GU_HBKf8eh(*CH@r1l)t=-Q8pHnY;{f{?cC%kvE_aewZ<3&~yS{@OnLQmPvT`p_W z|NSL!3{-5+mX145A>9+tOW;kixZ9!3!5@rOyM6krP^ZQS6D7}E+$Br#&VD9r{>Ly1 zGR1HdCDrK0KV971O=4VIcs8<;mvY-*7h59eu*1@$OE-E`cIkU>^TCIfd*PRxi@Kdz zxN$W1iDG{!w6M`dev|(<=3FouWk<87S5Op!MP)A+nLy)l7L`cR&9OJ*kRJ{pGGk;h z59=E>xRgSq^*giA{cH*1ts9Rj*EJZ{!{`+-+9VcE+i$JxpWEDIx!&ysnR{R@WXyx6 z$4BeVnry`AW~Z|#%;J=BWbr_0VDmKw&AYZ;rym>`1^w8S{=jJwl=dVb12DYf*=Kn# zso@eQ2~p7qMj5>2G*-I=3gRzo;7UsVkZ0w){u;=>yT4?5urOHU$yq%XI<@`TM}9my zJNOv*LZ+x?ce+i?oC4iFE-$E`GnxjtW#2Sev8# zWOvUhj8K^bS|fNyJ*0mSA0%!PZxgeGchR4rP8-!`4F7dIeIHqYjw^`k{Lb|k5g%i& z&rYe${rPCtcfmNeGJm#p1K+4a3+{N~Gm1`*;Hp4yW`~VE1s9boMYC|57XudNPB=(n-uryTR*b}Z z3U7Mv)4&pxgnQ>GD&E6i+I_Mv|VX!o_Y#Nu)} zDFI?PX-7Hk>yC)86_3SW@`-JLhiRa;qA0_Xwa0L7Hte`JlhMV3gNB;O8yGhiU$2Lo z_*Ay%-b0Jd=^u}WMZerNOntr82?eh#Yyd8CuXDqZhgAts2K`yE^JfXe*K8*{eyxxT zwT!YFT@o+)<#Q@W0Y#6%(h4mW2ScKiaZQXG6J?LU$1*!qYN)x+w8xU%B-an47MnI& zTW;UHuhb4dy+~Kvcm8M3UXw~hm-(M{I)bvRFF}({mK8Oyk*N9WWnv?!Z8!hq=tW)t z&+l=2eM&F%`}7h#p2GLNe;1XNVU|p)`}l}&Z*SvJi^jn z$nfwLujWMTZBWV(2bUgV{BE-s>KFXaGGCwkV;NiS+54JpEMo#4aYf1jgLefg!@k+* z?S9`U)ojMBZmQ^SNS{Z%o6yyiI9U2aF&oHo>$@ZC`FOmaGG(MaHjQusW^;^uuGu8o(`e?7Lba~OYE!|H;atRxhp z53HK~xKIcoAaFvq*`w#4W8Vzkc@UBl%HM&;Z!+Fa3bb~JkH#6~P)es~$cT&>_68RugBJ@}dT z?%g}Z9CSeQNM@js=KN%92Loi7oy~s7)H65L+ z3C+%?X@wpvGc&VvSi^j2vCyq0{CrLXQ5^_QKHXh2;GqF2dT#!EG%V}73{>ZNBHg8W z9N_h2H!^=GHf8EcmWlKaG)FgpE=)S|0Cs(<>herZNf!cjwv~tQ0&q$e15;jRwze+j*d>p z$cRKIEw-hQb^R@!Sz=1kbPFZg-&kt zYM-biCYi}wldzHtd{R%gQSO4skYwPPQFIUe}s zJ)Qfak*Ljs(VZJzE1tgGauy~n@7RT+Nnl(wU{fvA8*U4si6GbUZ zJ+tin^=GdPSLu6nX^0=KaDGaEnf?t20!jD7&GzVLG7e|&v|e3k{vscFMpD?vi2mSB zOm&Xc-^OP29m#vR-MCuRvhn=qZ>(_EDokCG-DaiJ-1n!Pnph3%?oG!1aAPEgAY7@x z7m7G}V%eY527O-4XDOY;LfOOkdn-)Mt)1%>MLaYd^A1+X(+#?d^9+$jE_g9nO2A-= ze8)}0t!WV~dPAc88J|tNTNi&dq#hD-)(*#XTd7tU<-Zx!A0X+_?cHo%IBC7w&_+ni-x&6=)l~iE3)D2vkzWOMl`XF=kvBvd zOiPT*rP(j?pGdCJgyB6$HxN@*U{OT+;0moc0@^DK&H#$e>INNTnIs!kdTlM z`09ONf0ckA_~px&2re5|GEkaLfTTx9N3Q_7V+~;N!mER?SD+#Z3lC>Z>G#>?J-T}z zMmL0yOVazdzska%E-78&W)Wd^h|PwG>UMh5-!{-h`>}s`p`PX}*O4%xfJa;Ye%!Ww z+sn$^&oy9ac>f=U0b2^;$7!1v;z{a&$gx=&GWzG5-STqTdQ4#z|1_G~L}yJINYZ@7 z%X@XBPsHg_W@MtRmLP_Fk{RyD%jIuVVNCKSWzJyv^c!RxDW(su{?q*^pmlgP zA@$uUmeae#Y-#Ig z0r+DHUjE$=K`0OyXXzn>JyA(7VC;V76yj<~~8<8^PvS}i&sNTUmIm8Wh& z^`4%d-q^4I{K*J6HOK!zE(-$wJzt5WH-W@O*a;E158@&KewfzVn^z=QcW=)}0}=Qj z_|Zf_GRiI}IPSV934kL=9CcyN0?jT5+^_c*no>$jIlzG3jtC(DaM@=oKhmVx3vftI z3LG@!N^^Bz-*Za$TGN6kb0=#7olZlP*O|+hPQz*XBPG4(c<6Wy#O0l@7jS>RFfe$Z)L%36 zd^JKFYW|k!2X&35T-FUT4m%`AHd<4cgL?NP)@aU1g(SRwM3`A}JLpOK1|m+VD( z^v545Lu-Lc-|OxvkSi6=&g^JMj5_3svP?Ydp(+};u1mjStG($z%IR!?^#5rORn;d8-1vj~qG?eLsn~plRow$%8M9QZ;?v074(jJv z22O6xiyU9?XfP6I9W*UaOPs`)CA?b9P!btW7pO_C(6VLPHR*+SMV&=eTmktmOOhO! zDO7}0&$Qnj1yTqeqq(}#pXOtJ*E2R$>6xb7Yx9!zz3Xd!Zn9r_g5LpwKwzRx)=TETNcG8@^{^nvV)f7^C#?fKWX>xI8kZ>Y{h`cwG z$+XLqFnO6or!KvvrV7lcfksBZ)+ZCwQ9r(4){c^v}MF)P{d=k&vZd+cDJ_V4MpI3oy`MWZ;w;#i-;vt_96q(6!(l1$c%2>|UDG;PKaIKRW*M z@02LIYkvRR8vFAb`^h7_lBEVURw5dmXWZW|!^g`;Dd3A9|95&>sM#hUCfynuG{2@& zV$g8ZdaV2*o9~CaZSTg*4D<{mh1l+e9_gi1jx-HjfsX0&>6sjzb)lN7r2b^T!UT`9 zsoNapG!4+y-;@>%U7otP{JG*k9aVk=A<5W{LDGBBcH;OEO2c(L3u3rLYcpaSql^qB zItXRfgntQ#O*TYhWF_q>tBq3A7X&cnm~$e%)v%N%rbw**2dag5Q5 zYUeEB9pzZ(XD5lj9t1Da-a~L5l22eCQn+n z*8Ak~W3y|ba1v-ZTo@Wgg6etOBzbnpWJSDbBdB9Q`eZ}fJUjeH>gTWjQ19>rwb6XS zYmU;0EKaoir~Z<213;o*pM-SGQXbw~i_GzeTkwHE>KhfUydy4E z)sjY`QT|Ez2q{xt<%3eaSBZngo5qhOYZd3zPozOQz}{GPNhK|I?_N&D#xtb5w zpB39M4f|ItjRE=nPKq-v%nTvQ9%Vz+M@J`W&ev_T?^t5iu$oZP<~P{iVO71j<$uL= z(L*AX(Xd&Z7Io9H`17aXc$Pxyg&&8;P#dk{|7iitCMyie?qnP^c?V=@?d*Q1Xm?OR z!SpO*HmiePIH`d`=;CG*9nTm6xQp}wh#5ejf&}tMVBSu*9Y#;4 zcM}#XbmQdUY(eYQ3irm4kXS9u}$|RL#-!$qjJWFjHp?nj?KI`{nZc z7nuuVOsVJ(T9_HL$pvQbxPP8`PVtFMOEfmmlCpvJA>QBru)EsAP0>35zb^ zM$C>czIHM9Kk60{5h0+a#*W%rT=f1q3@&cqW&wLU1hF{)%;^BvJ$?E#07VoyxWFP- z=n|}Iy%>VNsP)9T!Or84*AasIU;mlo-eg-BY!M1bu{pSAlRYrFca z@Q)=i1HUx9KBr_gQPN5}mabfG9jH$h=PUI;^H<@ikvd;ak*YuA{P@o}xj@rur68Q= z#!8S|=CQoUIEg`@Jf2WW#!PihQh31TjmJPnkBHw`XWPFuLbne5<+yJph7PO-#&M6W zr=1D4%d&V>aL8iY`peDoyO@!iI~fD|U!CB=LWSj;Z}zoqyI!YQev?(tubwR4AX+8= zLUkc-$cs9j4OQE&a0X;CLn=Es+V-{@OD(rQ{XvF!^ESJ4WjTV{#j-1k5I)H@nyQ{+Aeqh5yi0@&zG{@Mv&8C5+`L$-ZpLtMn|6VuIc= z>ZW9Y4wG&!7Bz}a3g;Q0m=b8rOlEpYTCP|4%Ybj=g$%kSjtvsH3|W}BwVv^q_=Jjq z3=odbp>*G1^2W$lWBE4NkHq`rKL~__GT(;A289@j(6>1Wds`kq)8W_M$A`p~z&EaW zxs=fEmzLx@Xmth!<2s8wO#Qt&|Ao2CkDN8hsP;BZD|(a3Z`xLH!d7U)S@RxtIhH4vkoa&U&BPS(9)s#NG<@(Eo>z9fKADB+@Q3=YegTO40$g5Yw zXFsOK#@ctL%QK{Wj~((Z)4WL9$Tx}4QK0gV0}u*VVdKY-6Xy5-k<;HHX#YtX&EkRX zeTY?ch<5<1zBW=CbkSB}N6fNN90@{aVr@`qczduL6!{M}qzk?veOQw*EHb(GYAO@S2}mt{u^{l1^dvD*<7*nSM4O-0k=TfPCdDvE&zh`+?`PTB zv)eMVxPXgcEt)xAS4fK_oDoeUaq#D+>cgkeD%U)u5lS8}YL%?Jq0=Gbjz?MR^(Mnp z)LDX{bWP86Z;}pp9@h0}bFKND`>BipsY=NV-qr(0h~H2C^@o^;S2C5VTXrU^Z`;GF zI@)edd&zFD*Nm!6SVZ4dWXx7{S>Aty$Q847ahpY{kXeCVD-n+~%<;sYgv${pUTI4q z3J;T&jV0SMUac6$;~ME_&3Qq{P(`fw@S(SHr64~)KD3N(j^te103{0m?geK0xcxe) zayFp54QMC#?c%gA4)3mC)%cw_0=AGL^ZEj_7s05u1zg`u-P>DiPJ=|)V6Z&sKYZ8= zUg%*cg4Qpe4s>k&8M5e7QdSndzP>KH2BIKlCZ^T6`eZDIpg)*3T|%*@piqC2G3abZ ztSi+#tBrgYq{~M7-Edl)^bn~R-Ogy)y-}sRoav=qKyK$UCRAr3_h3YdHPw1@F%ixe z#PDQ|QWt~K$e`cvyKpcjOsVi&r_JN3?me0bK}NNqj77(X{$epVRI9L>H>qI%5}id_ z=!-Wp9KLMP#Sv`tt3XEiCl)zvb^3-&7!96JcicC}o)r&|x|#%)lwh)Q%65K{yH}*L zJ`76b%tnPJuYIsq{$rTJVuiOGcIekrS8M92_%a^T&Sd)KeumifyxI^|VlVJz%vsR7 zW?pZA^l>Z}I}v7>f30Prpum<-jkU59s}cJ76>Vhh90*~_QO^YJ-^S!$ytVrY*=RW9Agf==kRg8;hRxT2u7H5a!1 ziZcy&1}3d%*A6ggFsVJsvK*u?T(Q3zc@qV8>;QYJ71d zCFE_4+Z4U`)C6m<>Es^42O8)&@Nj=~67^m>u88l6JYS+J1-qZ}uT~0kw*w5+qatfjK45>Tbs#`+7Ym`+|`%tx=)P7p^60^XZa`!8IY#(S(aOwpPZOb0DT0AgWtbrKmgejh5&JqjU`!*vrLHUb zIXTUzU-r~BnO__m+I%@sVuFRDxFp=&_N3Feb~vV5R} zxj-kTO-9VS#1Zq2OX}lJJlam2wn#=Cg)>>3(>;t$>tb^X#t3^)#FAC*@hxPh3K22$ zgedv4Bp5}7$;E8AkEcPtH`R7JrVz3bd!2NYxKDw>tNx2a*tnLrfDRe1v zMtU4D(}hf%!Iub`diL*yPE-`2;mdAKYOx8MwK=lY0Z;H6@M%N8TW; zWeG>*u)$gvGBq^?%n;y?{vc#jlX^!|U_NQY-GZQEh7O8>8(bEz9-BcoIWH+GDagbi zEOE@kygE+;`&N6v6FN}<$>4WBQ z$Abrr?i0lG8Ri-=HPN3Z4>r+Ac)Y8LgSkgfL1I83q_1>JCX>!q*s2mcryFx!Y|b+j z31g1}`XXWECo_dvAC%`*4nYJ5qqb~9wg7qE^eo?>jYhefYIIDQH?Ad2{z9-eWB*6+ zHJJ`KaxK!Z9BVbUd>tNR-#e5frUHxoU>`a3zLv`>B#WzmA@w#0LFt zXArL}oOpt*k`?}L?ap^zGGWBYD<(Q=DP&n^HdcPGae;1O={u=T19pyvcB!$h!CQf! zIRBQ`Pq_3MDT*fE8{b@WBL(6EM$Xnunlc^IziZ~|K2z%8P_$%wNRCZWL1z0{mXY8_ z-2n5BgJ+mis6z>UzM&S1{_z%xXa_pEW{Q2@)uF(w>J89weux-o;qC0`n!91Jiuh)L&2h!M!$`}YQ-&nFlvzNV@fcJ2v{1T7|~<~H0^2!7t9KSTzD z6^*-pe_BBDt;|1tb=FvuFl5vWTMu&Y@wC>!t^ahWk!w+IQNA!6M2j*I5svQ!tMUFq z5kr0*lt&o0$E3t1)Zd&gzjSWQP++~?uF}4jBTP%E{s_$ZmzhU+-mptFUvyA`6 zzy08)q}7pF=@+Y-M}jjv6crt-1>?4d^FlC9FDwPP5>?%AFk&)8xm#8rW?xq~iJn48 ztlRvaAaDozN93!%=ZZP}$b6^bkx2I9{l~aBbB;L1!dy)u354Ue-dZ*jLCHKf0lfHu z|L{`ysrnCxzTaX(B_gPA5xE|0I@w$F2f$A?d+kf^JJrwcBi*3Q$VmO0u|e2Xhw^0U z3BLY`iH(KuURQ*g2sjFaEz+s7DFTMU9B6T^_S~Kz{)LZ=TU=dTjqAQQQH*WzpJ)F2 z_dzo=CWw7xb#)b#eOj3!(IYwcg~1>$>bf+9kP(9swy&?x66`BCFTYPson6-liKa$? zE~mcIt+($u;BM0hko zIyvx|*wBg$W*YDV&gAX8goNhad=`HD5|1IM7DdA2gHY;t+%Jozr+2wcMm*psdeoF^ zt8_Hbb}n|i`UDBQlB(hzYAOY)qw;vi!m`5A>PUd;ql>rmE_9fEFHqS(m_8Ghy?iBB z`IOh72*(mh_lP8GCX79v?ylPj)| zpV!X|&V5RECR?#Tc)esRI_^x!Dfc8#Ia(p=Y52tr9xGV=wC&Fs(IyIhB*__F^z6pZfLM8>cyj zApUpJ(lb;voMi}tdH?a_fUBpZ|Jh-RF?KH3TaBmGy}tAiRnoNgd9V>gA{k(bM$E8( zx5iuGxIvJeAO}L}XbJ$II|2utGFXND;I&MrN~`nZjR31aD=S7gZ{U71UZ{$XIOTvb zfN`j(xLDu7pd*Tq8IqgcgNS|M#i%q6y-fDlnDGO|IGiEzf(^FqFbe4Eb+Ud~@8rNTY{~`AVi7QIYL&3V6;iJv*D^kV;NaiGgUORu%ilt0?K)Sh zt?K6md@S}~-_ca6a8BPBtt$MAnK&P+#b$P=|EWjdnrX>={3LHCdZf?r!_GSS$3(^d z-f&qxBP=3Y->Lde)wNSy+t8B!nv|8MvaIN18C|`Cx}%nqI&4kd>?t&quQYDGG&D6c z?m3ZxUGNq4ut6H1g~?aH6HFksyUVLu2Qu$Df!7VKGXmGi@M)vNBpco9zxoj3();m2 zIe0);fe5#p|MDCn`9QEWJw1(hBNp5`aoKYM!JmTI$2dr^fM9|eVMHK_=l)zO7)=mj zN@eA{j`f*waX3qUyS%`@B6M%?pD^FMml{du7j@8jnJ_k{he$$g@%_^`JiGy230)f= zgj7@m@B;cQ2cx?+nIkZM&^CuGHhT-(k1+rj&BDq$2obyh;9_maxW7kO-!2gt6-_(-$_oXS5BcAjHQkYa`*4T30GBbbH(o3MTk zmxQ6u_`Z^7IUPj;!E$-~t`+vnD76eiim0)y*JyEQL{Jk~93`@)-S&ryhL8Pa4;dGg zlf;~!CUhm%N7(Je4L3@=*e;D6IyQxPT@WyZDn{dCvU7<~Y2t)n8059-r^;fd&Bw!i zyyW5&9=aWWw9qT{)NU(y&1}BZCk#Fn0(F94JX!fL+r^;o>khE&L2_#IWUxUcw5lB`0$Zb&3Y25FW@^@|jJNNsrtK z1Np9)m^+;J{V5a_<@1qB4DAQz8eCazf;mi)0v~`D;?>OB4@b(DK*@<@hLD-j0MJhs z6h~0KQ7g#xvyNts;m}HN%-t2VhP@z)`FGr>Ke~j~tQg0&NKr_+cXH)K^cQ1G{q_=~ z0;G|pa4CWw$e|UyIjWu>2yt!eZhFc6;OUc& zXzX|f8L2mY@AVYw{S-t37xTj4gpTb@=>8q6HCrROKa-88Wz22YeA2kKq}q%Nq7buu zCB_uSl)f>J2jb>BRhb%FKIU{{I%&ksnn_%#<}0p*Bp*mWkWa=6LtX^RrB`JfDQH zuscZacuYGWi=_*;gwd_@QC2cO^FCN;`ejClFsIj-|Bk8xuXoM)cZ*C~{UyM22JEx| zXd-UU;NsK>8Bvt?z4j<2s(L4>X#YslNwRQp7aO>VE4}^n%3FTG!0;~TCGKS%;2;Nj zy3!DWCIJ3mQD@I$?wz%pFh^LiIb3?aD0zpMC^_Fm(y)Z*u@Ofm+27`zUv0$> zpTtF})vMZ92dJ1R7AdP3w0d$@DJv~QOOjKGPH~R;$Qmj-)9Y1CF8;P`%!d};;q4#a zk}O>vDpu~#rhF`7`3)m+EJ4}e580b^8q3*5Z{ffje-U?g|D`dxGxj{U{TAPaHalFM zig%COH>3K@P%1jEw#WA~Xy=31`(|G3yxQ<=u9l!t@N{XwQrL)BG2Lfk+F;g_DcAtT z6=ZVIdaWA}h8ql!LJ!=!L0Pqq9LB_k0i_FnhJg?5_Xi$#@zRK6J9R?)mszbH>$pfk z5>TcT^L@V0Y?sy0tQadtBVMHp>n!XV?U*~Ey5veAd|H*$wN#!nZIV$cbHtrCV=RzD zJ-KZuVAZprs4{bPj_doz^EEXKT&C=O(1R5`_z2JiDS7{?(~nC`6LWJKz#Dj;v}Pmf z!ajZa<80Frh6y&VC^)jI;#FR#Wbf*tgI5gplDF^PA;$Gv_!#^Z0GH4y<&vIE>NlHA zl$qIoUTEvyM07tcc8ikZ zg#GYS`)Qz<<9D7))EIa|nyzg*r0uFfjsqlLm=^xNVyLrC4m#L%LKYxDgN(yl?>A00 z611QCuQT-GbFD1=Zbo)P7-%94gXUkKM+j^R3v+<&-xQLbboeuOOXU53 zO~G&ebJTDupRq6w1EE7mSZ6QSSlK<#=Xq*Idg9lUl7_|)J3r<;+9J;xs%+7KwWIU1 zwWH)0bgry#m*m~d6IDa73fQwoVa`+6&{!Sdu9EtpDak47JR=8C!1hc{Vc@5-vhdfJ z10b-uKe94lmT!dR@zVSuC(pYtMb1C?I5-J8HA@V||DA3jo0?YWe}4b|iL5FT@)hw> zGo}f0fteufOtd|r2$CDqM3OgyRGTqF-ILb@(+OFuLW5%N4t*?w1 zo}+BBr4_n03H<%7efur6$@R*ouBt8J&j7bRY8vYQqvF-Q6H9-AH#zNq0(jhah~1cdgHVDlYK8&b80%nc1^rTh|x_J(51tVIfC{cy;7x ziY?b7C=j`qyJnZ8ibIN`{bi@`RU!F4V6hjN%blR58#G`89d7qY*y)4@I6~S+gJ*X8 zfzQ#Y}R@5A?c#wLiE>8&Ai^D8pr@KchpkB*r7m0CPiPM``dZ5 zaD@^zii9gx{r6Grd(!C2NjWBBEwfSsnTEe^q$wP@J>MQz5|;hJq5>WMG5p-oXTSy9 zNw@+_9Y!%fziXmNWH{)^uiC-%;7##(VqE;RiEz_7QmGy)F`8Sum`W zNbH@|oPdtKZV&h8tUd9$!*eM)t~+7Jhz~5BvmWU)*f9HlF93R7UvC_wFcdeb(>H!U z*iGzn{67D4|1-vDuV!bAwoznuQpQB{Kql(0_MmY%$8ZFM`=jg~8Y4w8i4QDYA1Udm*dQ5TO@4V z9T*zQl-pfSpr&YR(X-`nd6rV0?r~}C6pj&}4Cdjl!8KJ2VvIl!Jay<4h0hrQX5(M1 z5pds@ZGogu!G%$t|GjIV929+mb(^rphG6 ziteDb{4>#Z=;5aJ?d$GuW&9%1rf7n7C#j>O1#;8EW)6);&(^fD@P7@2y~Iu(9`>s! z|CcL77!zf*8~`H#C?R28SE7Qw$r4Ek*b!FN8zSx)0kQIYo*=Bjx&Ls#29RpqyG_1w z1TdU|we-;_x)h~449wBF;UgwR6`dhL!)8vB9NKZy!AOd&&xa^1eqF>Ta@6jUGK)Gc zVSw@cVN*pdOCTogL`czgS8VHG>O^;IEAN!?RaLKVf&z{gJR*QhrTo+4?CQ1?56~Cl zkFu`QdFfP*XavI zY72`Y3U(IL%^@}PepO#cbPT9rIhd2NTF_%2w6N6rytLj?;{mpZ(8jc^#ii5go?Dh; z5_zA^ll%u^iVp6rXs9!>uoZ4n1~LyacvT@0zjONUx`9#(cTi;rH}yxnsx#C5!1sHnlJr$sDHsmrRCHykKon8!p76gR zmnmw@PnfEy^`+mqi=5|xk5(u=T zpr?S$>L;$Ts`^@x0j;j9qJ2OfBOm7U@3FsBkPh0ZNq$Q1pBM*H$mgk{&Y zY^N$M)g10mDLkhsRfR9#F*Ro3_=oz-3;zv!WzZB$T#}{yy7v3O`{QcUm#)_@S<1f# ziTKsqT^N4~T*0S8kdTHg{1-&MI0L_efcm0`-yLkGc7q$x@c8wsbI@}Hg%vZepJwUy zh9T9zJQN1MYZ6d%+OG`ml8E*;YZ1#b3E<}sq@p7Vv_#lC&}Swsw8%jmfSf&9i)18^ zR|QmLpM;gvyX-%F)BLR2JHyR-bN9PRn02+^a3souQKMrNG`tV-bDgFaUWivcjw^w( z^G4Z2fD!#>5ap@SWTins<_2Mk4OaNEDqD~}4XflDhT-Js3>(@Kll`g%oXA~lI5ue1*V)J!%VucJJ z#kGI#o&Q-O>=u6K8|GK}Us_HvMVJ!%1(e7MvWV|3-$j_~>j$y=Q_TAG-aQj8F$sqf z?HJexZV`TLf7IK3@&>I=0u})Hc53r_eXC4|I9mHZzDx!n2F{H&Z9{vx+A*_HiiHNTHYjo7)gqL%H-UVD ztFd->*|uHmuJhTq&;uzcczMCwS=)AgzZrj!UI8jc1Q=`tvA}+2CPD`N@NdJr(VaEF z?H^9qr;MI1hvYd#1if%|JwI?+2lR`j@nH={@#;r(!FVCRc;1CoR#eQ52s6nYOnTg) z7BY}tp=^2$k&u705fdJg74tX;-CF|L>XDwf*a*3QtUnECIq}rPeki{eT@=#}lKQwu zp_t)_dK#iiD)t;6hB(TMdN?72CJv$Hmkxh*8{sN=in^}1;I`k1F_mJ*(Hk%9*M+l6 zi~?6ax}@L{2R&yziXNcjJlQL* zg<4OP9!^qEI#?CSUv8}!f0^34v$B;YRb76*k&+^#y}C)GJEdXV0fJ_}kox#MqwwY9 zFBL$nAtE6GVUq5={TkWa{B@;}#ZPI-Fji0k1W359Ij3&GyMnpUw}EJ|G5Gn=y;3#4 z^=T8DB@+axep_zn`Wf5c?;0KYQ)hr*)w*Ll zj6e{nr>)!mImDRcq8!7gxO%LxCNYZF;b0g$-Gb((h^z!?Oyv~!Xn8D3@xf_Ep>(0o zcwz_gz9a*$FeH#;00Fdbr7aZa3$9@#w2*$hMp5a)R!*+%X!a}HgVna-HlI3eVc|@C zs2Seyxwh>-wZER(`d6{q0u#FO*~Cin>Q^M~dh*b&`O;VhCz9VArFe8?0rD`se(k^C zTzFd~hs~%d=HO7*b^067-05KQI~LTKKsXd3#{H#E9kBriM;OSKKgb7bPYtr(>wVwM zJ{t4#l3S=MQRM5(l}PR19l>PtAt++Ink+xVpmy7CqhPS0kbij~jf+O@9)i+ARVZ5v z^NCaHsP=`N`pS##VC-FjX{UP$&wxFtOeX>%P;#qglQVRg0@>S^xM84Y%!+r0eR z6zc)F_G8`t>BPQ8#O7(w3N?9urNQ=5&5GA9*1NzkU-jYnRr_x5hOSxCr zml&Si%t&%iA0Q)VNnXZx$A53fsgR_uT?sE@+1luacMM&L}2tw_K!U0A6T?n53G1Dfjw`+5W9igNKzFf zw90S~vgg(av?eSYv4QPBe&~7h&=>A1wjzbhU*OqpN#2=Xi?{uy7+yv`$InM?!gOAL ze9c)qeOdouR$+J_FG^Tey7`|oFH>q}44Q&dxJ;qE11wQ*!NidVuogC9W5u~Pgyk<= z7@^bJ>!TSp$rtJ=QX7a;_;@BHc7JQEsciPM7KZ^&1&;J+BUdTo|1{^#r%LBCH6J?d zn1wOVisl!i`gX~gII?Dc+yP4cT1TIWcr%`!iVb{1F@(ImAW121#ON*O`K>`P9!<%< z;)CKr)AM=!nCtVG7Uc82%?&}c*L(1uS3L(wo&j?rky03fkYi=2&_B#|cQ`saK)P%- zt%yaOS?-9imUUTbYU8i7hqh0H>DHiz016$<$8R1B32iQM|f zr$R_uh%3~1)?BTB>|yX4nE4iLaA{kDcNpX<8eynw%#hQljB!G@6a4sO4Y{Fa;+Vmt zw$SpsB2YZ#z(N=gByj-Okr$M=op^yxK~e8b-jO){*#al>gn`cN3m1LcFJy%Kr=x-f zby-R=F+`}eq)!&gPf8gZCFd5kX*F%yv-lYYxvS}s)2(1^Mc(}%R$9y@6RK#Cb{0v()ed~&5Js!qfeFvrI?K=qrSHt^=) zVMavEhZ)fMPju3YDjs3bbGx854f_og0BTmN@y zY13)OgHveqccTk<4d0X!kSz5J=)j+yojEBaqP_um-hi~DFGuh;ueR=aF34rQyhD-+ z?iV25+_c>}aABS4FAo&h@nn1X+A$Y74}pO+SrYIWA3U(vfze4cG_5w(gW|#1P+BD@ zL4w%OIXbDOt-f9kmr3Hw7FtYlMQjr0C_{c%n~%o6ALW}MCK!S8&rb~4Q%i30*10HB zRTcOSRl;7?d^ClR>3&j%bdWFsHJoJADdF(r8Zr0Y|4_{bbxS;_AhT3)D@=YJ#nx6f z$3d$YgWrH*Ky%j1o0Bw&{l%Cdi^(dO;XFgE9ZV9^t|NHRn4nV@ivKK;6hRckn2|4k z`WG`DXhl!=Ux^}Fyp%ahqn*A5)xQM(*Skz#IKcnxWj<$fWJH-I(=m-7$+(0n15Kaa zUB^RvPG*SzG<1BCN{VwbF9www}3aks#tj zGP1PoXHqbboqn_KnVr7#^yhQf$3p7-y&U$T#2xPq+McoOr`7#+4Xf4Wc$I7&0bt%8 z%jQo7j=@}_r?D9M8Ws+H=V6hY)fY78s%IqZg7&rYuibm&3AB4hh{y9i(?tb;QGHSY z3m4cWLgrJ~FUG=wxji>anVBklo7mF)JRj@!J{3wL*zXqS(GQQM)z@K=1=q>RDNad2 zL{T3ZA$SQ>Sp|YDAZrD23L|Kd#Y5V*L z%vzU4oIe|{PFpZI=)o=x3!{PACAa094y}#V`Ct3-p?0-(;(C=mP4_~@V9yexRujbL z@$o3g60mb3%y>PWi~{luinX;hILy&V8`rnDyWpwt+{F3XEl^iauTS-mztYOu-;xzn z#1&zfJRdd3OBfayMOd%VX=rh;lK%M|Ii(}?qEle$RQgq_L(!+R@b>rso)!ra-C%F` zW8s*Otp3ByRs#7q!{!DBb)8QV=8*P}h-}i4zo&oqtIOv?NODuPdHm707A_O23Yj-S zN2+6v>mHoPW{4igwLR~3awYLP)s~nY&ehSC)%KwREizBKmV&NcWK0Sddk0j=M}fxT z()ju%bHXp-pCq*i^!QCp9^d`5qTt}-4h$S&#XTn2G|(Sc!4Q3NK26#dxEshN>+Xqu zE@L}O>j-i*ovgE5VB+B9bU$m^2Vsr+b7d;PF7f`cFyhmrq>BnwipZ*N!?0qF0v{Nu(6Rc$g&L#qD)f$ zlMmk8vk_5Men%|_KXuCXXlW*8qJ=|teUmgX#`f<+9#YKO+;xM%ASN->*!$e1wK^)5-;(R=h=-b6&sD^uM@zen@1ScYLiV<*~;G zVa&tZP9|&;9PaA(xo zZgjE=FG9qpr456*)3=#Z7LFvh_;Q;Tf30fW5fJsiQEdtI&N@LVLOoAvK%%qGaqpCU z{ztJ$;eTSqdV0P_Z!xap`p=#|RssnNYwgj9mUf$VW&uZD!?K*lM5*K#Pjh5idQ5cK z3kxmg0brKRYG$x3N5i<`J+Pc5_=tkSmk0)Iwh$YB?>;ial+3@*u$sC{zg zUCz*STjFEs0gFGFbk#qInwk6l1}8ba0+XCQ@v@<5=s&gConCFP6G8+R5@Ci|iu#JM z;W4ASUy%xBDnV|4G4`NWQYu)iG z()i$PSM*|WgkPT>fv>+5WIKXYg8O-)#J#JlSzxDu!SLkeq#y7?n2cwLgOSI*J&}xR zO<#VGGnc6Q84%E*c%l`KYs#XZD^=EO6mj7wcezo@6nz=E?`? zxl$521%^issfcXuq(Z`pV|C=q{Csw`4P?U#bfF=l z`uOlini)LV>0>P?9K~%F2)O*C}En^H$iQcrXFuS+B>tQwK>KH8#|Tf}W|am@*brC9 zNnF3M#C1rYgEO3Oeu@l@Tu4Zy|M^*r@rfPoZ=T5s zreseonSEd`Q&ok)v`#U7mxyPxYAA9Gys$%xf6SE1zyADL|JxT)Kj+2lrlvkeHEXiT zaR|@UEGo2-NKFp@@c!RPq;Q~OWqw{G3>-VsUTp5_KJQ%gZTs~jwNnF~IYZ^nn-6FA zSF*OtlJQ##0klVsFV#C(*tY^EARzFgv{Zks)j236;zcNGiy)8q$!CR zmrT#j|H{BaY8I&R6_3_=wE07%9X2}pc3lXTr4>X!dx0neJo(m^5x1)h%fCXl?*m2M z-S6j(B|@T@qN96;rP@uRqt{?|bfnX>*KGg&7`l*&LaPzx0Z(SQl!h$t>(~*#*>?*y zjDv%apOqNI^LGVhbd5ACQp}8-+D$uwa~zxo`L=$!9qdZl-WT<*cvvJ0191wPQbs1| z(#a9v9-zZNl42gA9;1&#oy_BpT~VgXuT$bl!VIix;_~3*8@tW!=ittb%&Dhm3RwN6 zc$AURY_m-0b(;O;td|_^Y!xjK)YU-`K70*~y6<|UkXW~kURchUUp{nozO0Vv%xyRr9CW~xnW6Tj2wp-N)=mGD`Tq?dA@PuLaA zZ93f~4_~idEz`?oenpZ%vWTRs!!(7cOykr{<-dZ@($hzp02y{&2 z;Qn2@AGYSOd@NJk1__bWLN0P{>ijo+KKM39sW^^Q^vOHsg z#Srr=SP`EbDWx%9Y59YDbYQ?ek&vupdjIs2?>Nnym>iLr%s6gcS&_y?@ZqmqAVX#O zUYjGenU(cc46jTL2isdPQx>0d#L0=(y4UrW9Jg(Rlhad>aBBMZpWDkYu#LT$fycZeDlsSpX1L7oaEY_osEMI zPZ_zHnIF$-xVk?eNylj`=zK>V!LxoCsjR#<&5&CE!TcRX9Wo_buT4bwg%4SH5Pp#a zq9wV=C>aL>U@;#RJU&g$A1f;ePEOR_Qy)+Wp3n}H+HfN*>B1+*Ny&sGr~g{uYiZg2 ztfLqn2`se{;(1>;?9rU3Sk9ZBE^DNU_~%r|uC9ivg(XxqIRRDvRe$7yuB?<&FV$^&6Rhw5) z*XaRA%p#NEaRqDPAA{mfGEpvu&mBWbQM47v`v;3Mp}{ZU^j$q4x|I}@mPQ12VL><) z;{NsZoVUS-Hy7wzjx2BxKOa3H^SM17y8=)pZJ|KS9W*vHJ?!+m_M>!T#3^gZ@7dqq zI|`tQ7_F!dtkA zX%TSSkCZbMWg|Zm?KB=ldZo;&UXCvrnpv0`m|Ok2o!QT?ToP`qt7#3Wj1Pr(xFfA4 z&CC>GKIUE;FJ~||)qZz+dTOQJaMgRC80p}Czi0z$9lXnJ-i;Uo2p0gs+KD$eP7V$Z zi>=Oqa>lfg z&us)BU;_(#30?YwFb;Mk4D^xdizkRvP*D328u8bCNrYatEj;Hd{5{W!RyLm)^Ata6 zW}w#HIJM9wZ&M#jU!EVtK{?>0+BA-tIce=Mks?13mr^-FV)~JN^Pk0&gL?L}m&)F9 z4^ke08iZ%%4~S#ipQx6nc*h81zL5?!28A8ndyPl&tqZ!LEXgPtD_%uGMB4`TLnR}` zf%!4Z$N-Wpzht`=;qMvZY}DD}Ce?%php>sy)PSD-J5MzhEqhU)NNy?YiF4Dy+|gC0 zW1+0@pu)n-rUp? zuddH0yuKN)+O9Y*CVL=@5LhVg^v%t~Q&VwBe4kmhe%gGb`Qag%?#agBL!4Qim-Z_lctN&tTV6D@X5;JOKP5UX#NNjM#U7m1 zs}Rj7r`yXWXM?(O9Dlj9G-Of2J}I(}2EUo~ksq@bA{|gaENv)7;)B2|#ohrOf4x}u z|6YL5fj}27{%8tXRzKJ;m5gHq!r?5{em-bZ;3;+TdJ;lF6X{fCa+M6hN96qe1gAxT zqHpm{%*7qS(Tn;$jiI!H>M(dVCt%hIqYl+??2257rxV38(SGa-`Fn9oJPF3+<Mg!A}oPI=tkJA&fcel3iX3SRgv+h(f;GFhI++`zyo7MMv1h^@---mydJgpC(dDB z=LdKR%=)c`Z0g}x7Zgrvg{G*E%hUJ4!__Rr8GVW7|QbYG-i1c z{eXJ@;JM@q1P#B^Pp_{>Maet$^juK3TGT1>=?H#hI^&h+T~cYO!t4V7YPst-L;D>$ znwsooS9*&>RWvq258BDfTV`w0<8S}1F}RnK@Qe7FcDHxQPsJe zYQ7O*8=b3BIWbJex16$$*IVn4(39VIa$Ir%V1|sbVL(h7*hx9Q@L)l)aA$>FLLhI_&~=aV~JD)C~uJDsYCenVY>Y zPSJ1u;X5=~GQr+8@w5ObfEH{m@O$d9BhMhp?_bC;12Z`|OAqY~bOgu0XJ>wCQL4!aDav=?T~2ER(@{a>(o~nF$r|m7QBPwBLjW2UWN_Q=hLTZHc)Y` z_&uY_LOk9(-Kt{=pwvS?SD}2AR9aXS%ajgond&x#Pe62B%*7oLqn^y|SSp{j06(Ui z%Ytdz5y91Otn!D+&Ps-C)ZPH%t3G85P89E3t}i2ugim|#eS8?fczTV=IDU@z-4di= zu?!Z-$`Jqx4lX`En||**kb}_=T=i}{@sdoK$-YF+QHA+dFSR#Ry02SWSLLH_W|wsB zuxaWf*_jhlNj&Y=+3H-pR>QF!-^;R2YfEal>q#pM{dN;g?^@kGX}`Vtxa||U8|u|U z5xW~P7{4k?T3X&WvypuYOZWFjt&2fc7*?hOejyL(Zx!;)xtt`B4*s@&-hPP9_-;6t zrZ6tV_wO!vzClnr6MG69)V<=TMg7ou@>AW^{4bnF{~ls5OvDAX8G%K--RLQv)s)C! zRyd5tB&3@|Oosp&G$9IN?%s?VyW*5MyYaK;IclXU&FYJ&J3IcNje>w1nCa96AF8Yk zU#&YL+h~NDg>}!;G%RQ;i#;E<^f{d<{+i`i6@^QQqfhbT1$jLFvD}w+lH&u--q;PI z(IAVF+pcPg10Q?(O@asqM|a)L zOv^~r(-=%Z=y6+mKPG^o7dKF~2#*aTYaAjuSv@*6%M(L6G@WlzP}r35bKd6Qvag$8 z(ls%?YP2m@yT>q=Q$hQgrbI3qq|XK3-MN5F!huL^dA*~s=;+-*6d_Uy3TQ(^Lppl; z+WPuGr6oD!q@Ul!D zT6v;QB;c!_BjYAPjsUY1#m*t3q?CxIWKtj)p}-ON$%U)^nT?R|9T}P3>pzxCU-w4C z=67+a)M6FK^Na8%Cf`e_5C5sCi1ZJ}p1)Mb0Ce?3Vt8JoU&@#Nf=r}1fWP{cEnljI zqF_)7J{))enV7#(*&(xTxgwO=LLvD0X;zGK!vWNs;__-Hz%`qPj8s{e*5m&JOE>3<<5pidNWo` z8PA@Ae7@)Br4X@h9ULAgepMNq4kvr-6;mu@DVLWw8y7Y+ZM%OVo;5?;G;jU%Q8vV- zv9JgV+ui-7o%L==QxlQQ(lXKDipuxE4c&zdxaPY>yRrK@Hg4^AM8#k-{b|%C(a?<% zPu@8g7?|;UrEL#NIGmigSzQ^u<($e{TSuW?6^g;nHNy8OLXo)Y))OyfRERc__r)(F z3L9CO!)nL;a1iamg(NTmWK^WPkZ@$ww1|_llbK2rD_~a;bNa z1dwEA_DnTgH#9X){hsdy*fGc>=3LEnqng-O15Gc7Hz2Qy_>&wl^xeZrRP^_j%HX47 z*y3gnJ>{084^zB{RSleAh&z(g%zkCq5d0}$!ZHM(`HYBG2 z9Ow?pk^Ch{f(1)Ov883KS-7kB4ogV(z}{h8PUb)V*#UDm2mz1>D>6Y?@4cuYzh`DdavSRy!uh1GtUr>@?a`S=x6UDh9#H$i}? zoG>c>X7Md3K8JWgE?tmePP4$@w$mR)IO$7=O8MqF7{P)GjrsIlRn)@bo>2g6`oq>) zSGUg0mh-0GFi#C+bLVw?HawoeB=I`H&U6$MIXYcAqs8*n=wX%?+ks2;T)cxt5n_X$H%wOS}RU=3QRmDsCKxA#-{1Kl28nTe!X|k5NQxGegvrDQ9{&Y zf8;#HXbIkfml!oqx%_JqR=k4df7(?6CdTwcL@a6_{)dI`NKsKg26r;j zfu^FWdv*97Gl3*kiyP~}96_It&AiSpso_Z~HhMfmL1+=dp_vLR3IPf<3PEph!2&5o zb5A`}`i<6>R5V~^Wf7~iF|9i9C!0e(jT9EO_$&k_&*plr;gY6Qb@lq@hx>Rm)B!6p z5Y3ML-oo-)Ruz%optr?yU8Py$RvR%@Gi#`13r?N;oNkrb;r;N#w?D-cg*jLH5hWN( zCDJIHEslaDuctpRZf3C5HP*zOtlr@hp@KOzFy^Mw>U8LrJ8DPH%p420`CNc~FK_7r zy1K+*ntT-~T@{+n)b*yBy2H|J2Z63bJ0>*%jy>6@tO}mfxeQ9!F;PdGrmXRqUAMJ% zWV^zjWb1;B`n(_59ALVX<+`4SyKo=BM?agTt9-foB$7b8~HBUm=v|V?7?BM@kgP zfq?-ld%JJH4rgYuFi{=WoZGcDMy8BMo9~t_X)mv~!AU;&tA0(i4d-dw2V2##1?yxw zv7<@pT7mv~EH@~MjRNiCS>QyjV06?cxIk7YF8HLmxi}3~DWKCt)EV3~G=43cd&ldJ zy15wvuHrojid=zQ-Gs@ORVT&BtKo8nzQt}-W=l9IqP6rbUSf=Y{`8!wbQ4BJsHIYa zqx13KT=fvk=;75Uw|OQazE(q=gf;`?p!(!t1!gbSXI!&m17m|hhVyPRyc8LWa-KM+ zn1~R*c5A{G55)t&3E{+K5p7*6SiV;E%oxMZU+p%iZ~frK(KjS>x2Haq*R%`|E0wBV z-rEXqmW7jz-Dl1o-=29l_)QAo4i%u_*4yPNXPs=IYvzgVnzby78nVCS?uh=&w%lg3T5^jTL0Z<3+S zS)CCHpcZ7xoPplqcZS}gfD-fmZ1SM<{>zt(UZfiDwzSss7DcYzBafi6!|XwohT-3T+c)$f zUW|#7fg{l8mgxQ)4vKd|qyu1-3-cQBAheVm-&8&GQx>D$BH>{=W-1_T?Br`-(aB8B z&G!HZ^&d62N%NDT{_~JUyR`}}fYE4qQsj$kv0s^e(UIzT(^LKft*^eWe-u06a*CP0 zGfaF0B|4(x?^y^vejF3Gm~$1#BNVy90Y^T1JZ~aFY&barJIRey)0p4u>vA^6vPFPr3d%&770MBG)WsMA*;ecsMNli^sR1_Md3Im-nJ|$(aRH;NtS~~yx zcL)&iuS|y}Au(fa-je-+zyj=l!wL!MnyB+UAX~c7Y(amy!XeX#R?tL8tXm?&>Dm6i z8R>EMH?pz>B~dwToFY;UU}yt4*#F z<aaUIjKqrNK?j`$i)A_{7-)?EhKK!<`&dMS0|>{4 z#s+wYE7IX9A`}A8D7Y;ce0Xq9!beo%)RVr*xg%%-qF-YP?ciX-2}Sq>Rv+qB@H;4w zVG}R?U*&zlIRm_SFnF=++o2FHuSn_;<5aWco5|y!%Nzg}6A}D}aEU9t<5dsTfA6*s3lE~pmt*_0p5a7F zYDx#Y1zj-BT3T9~S5<`!GRS4We3_b_?(Ob|$eviomywadCm`_M`&eIB_jVY-vM#X4 zPr4`}Bm@@l#Vp+1L(|jf?Ck6nm6Zs{$R-<|oP{N^e-hyWEFf4U1^iz;ySRl z&fR7dTd2BXN8HubhlaLi_BX2c=AB0U!-7Bb4j#S(J9=pChoy;kG!UIoXRs+yNb#&Y z-|R+snfc>Xej^ty34BPeA0*F&kCuvC#*(5trE87k4vh#na@fAE4;vZ(p5KX$0WHe# z{tM89v<0jQCECUKs>`Arm&^+>cN3H}5dDB)`{#76ne)aWOR{$3^5=hmsEkh^0U9;> z9@c+pYNUXRr89-$q1eyBs7Y?qf2WsiM?zgexx@|08B0Fc%#ysLNkeo7JsBW~J@Q?C$Pv zWNaLtk@4&Dk2oPO8xnnaiJ4VJNnRc#I87jI(#+Pj>$?e9OBbJ=9bFWP)atQ}Yl&M> zUJ%*YDRg#rwz#~!y}uutn@iH!*$Hv7L}A>=+(9X=BY$y~Fl`Vll2qNq^>8!ek5+SB zJWdAwe`*SnEsl4;$$3-0Aoq!F`29pa-vo-!MFVkX@y_KPQs?oVeWxYv-6o;8F+_hfUCMi|A;}XKcN4nn0_h6smH&gD@`~SWNLVtpUZ2#K>XZ4Beu|pYDN}sF z?&5{Ce3uZLDgsCXf3)S6gX77~HZ9Ei+~Cw~a$4YVB4x_^ zJqiKn5d%7=HJw5}z@}l!lxS5_M#XBRYI13;g~x!pku&{>k(?~yErT)m7gn3|a+~#i zU=O!xY&>W&6I(dT1NJ|dZRO=PrZdZtNT|sWBx?>h&+LEG=XpSznI9I#Tu{9{KYp3s zugygEo(#B5d?K_j#@vnn8aDu)TD_CA(r-JHJbdx+M=!R^~P~5=Dx6 zm6g#cDcB$l#;bxSIwu7gC0Hl8rG*z88#^uS=2^3;vF8i-i0WF7pxvBGm(bv}VhVDO zJM78n)>+$tDaY4UbQj)@9DccG^6+$BNblU=NZ==miq8=u$$s|d1Q6V_<|yCK+-->m zDAidPQDO;^g%bz&P5pmP-rIK4{!G@>pD>xcgY3q|RE6tN?<}KO{!F4>6@@FqVp1eSgu{o+91F+=J4xy=P!-oU z2LCuw1|lkLMb-DxN-Pq7YQS7?o^OWS!mFMbrC?!Xrhd}=EHuEG42Xng^=0(UgF$7r zTuAGoe`s;)X`(^o2pHa=-`V{_D-thdXo&=v`_NTAwVB!O!!e_n;v7kNto3?0HD<27wYIIfJ}q3~qJ+@Yir!^6 z!pXCjEW9(HF8ommngsYssU3haghz|YDuUdvjh^iOc{HCkt>?g(eLzg>7!cyYSW)~j}1N%&+k^x;-yw4ehoZ5t^mOI9|Y_Tapt?buc*)u=IfR|@HQ z=P-xlFv_V3QOyx&G^&#i&m?sSXnuv;P*xHqwU1KzC0J_(zZUqaUss-$+j zbg7J;=hX2tS(gS9ElbAmr+fyIwzapf*gi8(lzcCHPh@?H6l7_AVBD( znoO`OkaM^@*&@+#CQYlh$v%FS4b;@bA2ShqU<_2dOg#gm`$7Z-p}zRp$>=42l##~=O~C~VaZ zZAQ>M5sahcdRWgUImM!1nK`a#yx!s6Z9k7u<^X?`pmT**kt zPvw(un&Y3%zqP#ncqDE=SNIiJgMhh;mtm{y1-WXK|J7ohukKppWzEh|p<5Yrgo|hd z6Qxl>a-3H4-|H@zU@9~}{yZ>yMBUnglu7;7#aXiTq|FrqnU9C|wE~UlTR>cOIqF9X zZV?x!_>8>QX+dl+427bs)04&LIW+G1D8yMTR%Z!~Sy4O6Mzl{H8}T@t} zVakreSCyFfPDmTorgv>mbv`|ufzooX1^<<*Vl1^x@c{SGiYYTyc}1GwzPw?X?Jz+5 zWS%F}GDyHgB?$})(v2CT(8cI%!<)0~UxC2`rv#-ynLhn!ug~}eTB$O^g6{EZ3=L?4 zHLRTbXYPVyov>lt$UdQO&@i`1^Y%& zYxSZy(C~(gK9{_I5y=Mjv)x*H+nqU*p9(XxEC)Xl*1ri)BzW%Y^^M%TlQX8gT8`bQ ze%gECJ<5ou#2aj`ckh?C{O8c)#9UkQ3`Nv@K~_ zlFELqE%}^S$S|%QSwg}Fq!)(`VXpIDT-JZjJ35|gPpCOtVKf#n@OjhX`7|8-zSz-G zVr@dm^r%&r5WSy##3YJvKCj`SN<{k!Mhk2Oht;0q8J#qfxRWtU!Yd=91}HHTrw~Rch60y@OEOryWAUQZGp8FYLbS4Rt9_rv2I-i0I^JJ4g&Yr2 z0B?AcKRzt+qaB<~q+CGL{6e~{JLAn8ngvsdozIG`u-VyL*OQ)9dOGU0BE$=MqE{h; zxInC7S)mSt7bov@nczVYy)O@rN08TZM2hu&B?AtRRTkNQ@m>8^xuj6ptBb_m5g6wC z%x--?lkS0ogBQN9)IY~F2PS_MP>4NGbPjB>zGtT*&yHp$E!?*xg}?NL_6m9E5r|iZ z$7%g?Ay1*ijEb(}Z{&{$fi`?|N+q^dC(#@T!^Sx(*(`ycALU#rPwOuqC-y?M$)l)u z^NxkkGZjJL#>%Wgeyi3ifIQu(D;= zkeI$1Up~p%$U5GOOCED?m^T}J)l~aZNS+SNZf}y}&i2yb?Pr75HfF$bgG)%QvHZpa!eEuIADyk`@-&rj`;1K0&W|n=6$rdJ6??XV8JpPlHIn zR(;t5+35eh08pH{8~=E7=8;!%r@LZL0c`u^^$B~D>AdeNj6mZb3@E}?pcuve8QR(k zB_kJE|IQTh?`iAwr#MWxt@(Bz##8#gnSHv@i_m%i?0d69rKgLDe8R5YxLAnPd>=y`oJC0Hb$FOSusa``>%GSJ zwRE!})oQK!w%^Pb)!AC$!|G{m5mi(1>;rNuaCA#3i6#OA9*Vi) zy<*>b2bjbCs`KG`KhnL6+dwE}YlwKq`yb+F>BPBrFvFrwBx)Il7y|Sbb~&0N7E%(K z52IfHbkaNRKvZ_aAo>Tgqj{#nJsL=bC7&{~u6L_pH1@d^DAlU6>ot-;*_2bE80UIeYI5$>Ze2Qc@6jaA3wo zO_i^w9px;8WO{q6v9r@(m(E^$bF)L=Pq@G8p8E-ioNxxqPv+QAd& z?*9gF{cvw5_i3eQC#cKY!$58f_~Tm6#_pNr98yyhs8ILogV=zq2z20gDz!ByAESrB zkTlrL%^R`!-_Zb&U6xz;FdXr`ls(0rkX9VhLvx`{^>CEbOT5B>HXCzv13HN zMkx*#EeF28uP8Z6KJzUx-&^x<^0)} z@S{M~OV8XqpGQM$^hZrY!~T<%LR0PiGhSx|UoVfSA@KA9+%u@Wk@i~kXjy%Uzq`AA zn!zf{Mf_wT!RH_bzbA?U#);2|?m~Wr@V&UY@hj`)?-- zF;vE~<`Ri7thff5jp`i(0^;E8_xpj+4UFlT-HnZK3@~={JTZjQ8E^F-+7F6Me`{FG zif#L{lQ=!;^gj^=&iMPs^e}7MylWoOp#P)k8l&s#qHPG!n?@Z>|B(eFdPff4IRponR$KX<-<$pUm-PWNa@4h_UDWLRZW=BB1wjCF1p!o!mlgxHvF%`1>#d)fR8#S+ZfL zo&0}&66JH^01s{EsBjhQrOYTgzc8ZlzGg2<+~;AUh`t*NR;bs6-Jyt6esi z5Qo+F9gOBm=kh!i)iYfU1{-qPkr$i7EYWcg8Mh=vuqwZVR z$4Tn(UT0XZ=^3SUji$Z&pQ9LZa%YUxh9}_|E{KR(pVvs4aVQ7s!>gr?4p7gKN#N@2 z9JMc@)iaE=`-jtGwaiQdGFvd>&elMKgw~qMI*&j09)4zM;p|%)G7t>_2QaNM%l8-g z;?9D=t4Ii7d~WIq#&F#TOQ_3x!>*5?1g|uJGxrc8TO0>}D{2N$0R~~|{um1j3n$MW z6*CWnGufh!u4KS3sZgdW<8r-!6JXi*uuSmzLHZq9)?AM;D~f-hSa^*wvF;Iy+JAH6 zhMI+uN-cwZDFi>^(=L2;`~wGmkM24sEd9PCOf3>fY;C@5#vVkDdy+P zUdZqELxzKl5@TQs`hHx#@HJ6{fMDeaASzwV#ceo4;|qXzUKnF3gAp7`r8oY&i_T#|5&d zznl13h5eXkCL@v!+yA|Bx+m=8!~0b_ITz^L*N%^W0*3IWG5ho7h=^V%mD5(^U@4@g zNlLh~9nfGL(a}xM%^ER~Xydr)-HP`s{1F)Uc(KBGTv|dlIPZB#O#pZV!1ZcuXcJ!6 ziEk^52!1B)CpAnzYd}ZvQ+V@CGZS8u- z2IJa~bfcQj4QS<|0d{XDb4+qzbU6}N_`3mLkHS3QCd88qD=H`mY|M)YX{2=NTjXdZ zcR`th-fn$nx~2oTCEm6|`|G#PJ#R-%FR*JZ-Wx{u#F-QDptEceHuyFDX%s`W2P;?tQxYe ziVM%r;t3V&`CJ zIW->Hoa3K8oEU+V@#2Bc< z0dYq$@jFUF%5^And^E)T`MFV{IvMl8KnBkd9dUDA;$^-((1rkd-lN%reFk>*<$J!-Su8ZLezlQ(K-ezpFJ2@UekM!yW^4_85!!a3$Tq*5Agh z&5DoRZ2D^F%QtH%6~{!tjqnjv;%6F|H6d5jP!%4E>5kTzq8}noaPsP>=Zit$Q}cS7 zn9pnW3RTOt`=i`@dDPm%mI7#}F;!*&#t0+VM1La|1OL?(&44dZuC#JgOVpLUuEX?7 zNq%2#^ZKwxKF`8|sS|pYCMzzTk=lckH zT=H7syqRa?xD^&cf8Cox&Pte+&4Y)2BR*6b>hN?L8xLC2PpQ#ELVET$sJO7$H;Cz1 zS&xo{oQv&QoCATJ;db!2B|_BAj+po)Ak;{EW!+o|?592P^+ixJ0wPJpCl%kEBVoRl zi)ZVQ=l}j?!zL%vgl8R4FVPXiK|;IvyGFy-*f>8Td>Jq^n(ysVH`Q!oQ&N5;B?g^1 zPsKGk5CiwC?+icRc7XFncTA&zG^?NtTQ4L+(P6+RMZlfgyh-m}U4SDpII^DZnY9UB!u!~mDt>+V!;Ufy4N!w3g#1Bt5qhFB!|3vp%TKsI9d*GLa6m{k>;MgIq= z7+uf30M(xV&co@SsZ*AqCcqtJYaZilJS-H+)2!V6uGTB{deiPws!z*9It+j&>gwve zqRMmgYgGPV;AbDAAN1N0%FFiK7{GOG7M2$C0Amij>n9A>FqV?AFwF9T`lBzvwMg3x zRO#mXAwUAHiG@6vR|{zcPpe!=(u^naC}%sNX?Z9yKJN@ul`Xy+N>8u7ySWBnJPS1` zj}bVF+6-%#7}?oZ-Jg<@onmxQ$D#0fs zSA9&>kCH96?0qtjF3E;h0!J7&P#&wh8M;!su9Pn^U7`u`btD<7Tc`{p$CM4s43^8= zG*yAi=mJ%GxVbHq@9iOAg?c8l&%2Svf$Nvz+THuo+3Ezj&~> zhxc}yhM)thM-??!Dbl6g3X0+t9WoLQXi-1NjV%#Vo0 zP*Cp2g1(B`HEM!@M#ChK6A<{~{&sHv=Kkqdb#uGNW@}5q%`=yjX~OQ!&Y`NB7o7UO zL=@6m4~nazrM$*szR-!ly3|2&;tYu>XsAlRERe6ezcU0{L0Zi}*Z_&{c6XCep{d-{ zUcgbOHS( zo(DtroN3>uFn-Nx;(D#r#8=lO4wGb-rk4Cdh^KL**R|oBw5{JyuUE;8GOf=?K0K=EAr(uS_a_6d&5+eQs$% zxKeGd7$+4Bn2unj?XUDG2$Nb|99y%~lT}|$R{A5fq+))jb(?Y9#Bd@(eQVsgosYDL z(_Q4EfO7mgt4CP9LP%XZL;b;D*2IkQm!1EAC(lmbXb+CNvF^df7;|&u^l*H-XJs`iROo&}u?^(uFHBRm zFWcb7#DnjmpnNr0yu$X*H!7j73lWJG%&etSF|!flCoX`mfK?}(nVuaVm-|!=A_-&B zqz3l%)l|71&g?xBS@r?oB5$Bs)A-@X?62+f4)RuF2=To(2YPdUY;FeQnvD}WfG&V) z-K{^ncc3@9d%VkOSsUr5eDr^}-^J=$4YonBs;Do0PSEFYp!yv?X6paR`1iNf&nu4{ zw*U0Udl?t1znkKcH>z4#TN&A#tr#!cn0caT;iUT}S0XKf7yqdg_7;a8^-I6{ihwvE zVrxcWpXlqV3%0xxW`8!uD0*^CpWDO_(2a(GsC&jo7#5Q?2V%7ZEU<_E)*N-$5uc7@ zO0O%3&g-<~PJkU#uL!5Enr||1j3~XGd3a3v-b4kufst3 z9b4%*96}Bn`J9}jbOnIB|(?Ola3-C zrwu5l_{Qg0S6dl;KJy1~*%JVGUQGtLbEbN05?%=~x>4@%&jPLgB%h^0-$>B!6RrqH zsHhDTdm2!#ztN1sdG7VN^R~aaRX|-s-LJ;1wU8L#T&Q(^N~@PHbhsNKMSur7HeY;5 z+{}pAd2*J=;QuCAsNU592m?u4>Yl#hqZlsOXU$`)(>t8(wN*HJdZ9=eD2w^&r5VwM zDuQVkR5A@VHdUDAI@5O^^A+ZipKG1kW#J*=fHW00B6~D<1#Y9mihz0cwQY5^!*>jv z_ikZLg@fJ6l)rvI1RSX0ubSOW0Sk3U!zV3Za~;Lof-P|S?1p@MH#M$n!2;&x=y?d1 z#n`pMCNrjR7c#wZF&RO~pix)PZ~r$wqNZfBGUD@C_w2VWdXmvs@4uV1xNOO(Sh7ZK z)Q{4g9IYnV+YZFhQwk2mkNp~r07<2?$jRYz&!hH{=)8!0M3$8#X{#-I*d;B9ZflLk`HB{EPC-O(#thRr++YnzBsRbLYajOcCZ_TuNv(G6BGRS-65PwmGua@ z8drCAF#a-9WHuhfTn{t^v#RZ?>7%&ma0QmeF-_9M9!90eO^;Wg6r6v!+nhFUZO8B@ z=2-WIbiW2d4vNn;3#-dL>y|sbplpk&fRy~J8d$NvC^WyrD1D`6pw1JB`c5XX-IS5x zb@Xpu@?ot`lm!C8U}qcl&A|xs2+Wrz(tZ}*&+9?;!`A@~+jC|7MBN*9UhD;mj)3{= zR;t6IKIdfc_F4z;yym&oJi5O9wqN-SII)-9u!I$i(1QTf z7e6sEg`7z)I6JYBZIplVVh6ENpJsXP@WnRtF~fFz}hb5zv_U6nu4KCjo*TajHd6x}+p^n>43|4x)BH0f{; zV9x24%(C6aL~Tng<0nt(<-4rW=6$To$~|RpEMImArAxnyv}niuh( zOed{v9(nuRhdxa*eF+DbttV?*x_WyApg0aElOBP=XgBstRV2&Ra{UX+ym}=`cgNr$ z`~d>8IZK=xOiS2kWgBO-5nC@r*yD$2m&vt?|r?n20a@JVhQ{tK*n8I@(HYN2#7g)A!+r=5s3@HXnAmRqUMjU*M1kbNqaA zdWldCS0AON+eUgU_;2UW#$FbVd*gK;jIa&~`j^+eUx&7I&;p&rSBu)8ubsI;RBal( zT0Vrxgkj&cq$K^EnD_Tpq5`o0oy4W3hzlFDt!raAI0TeXSqhg)_2A)&AT=3>n!#WR zR6k^0M?@KHJRAF{^*I7JKc@E4Gz-)5H^#WDP9s{O0wye84g=QrN*m2RKlB&{{$zxl z$RgCWL`uj4v5~z&#N`fbzIPR^c*ZWOBqqekJ6_SBL6b*0<;)g(KheMT#Xb};)PR+` zbb@3UpuU(R2R5RMn0y+LX}7|3!zz(Wi-R>w$2Qy`A)~5=aBek=IZ^S8pe`KUObr$x z^SkM}7Q}^NE8{`MC*_RoWTY@n&kePD^W&{)8k?2)f$RhoQM4J`>t@f9xgej%&sY*M zvj(ksm#WGfuCMoP0yx|%*KQX}EUlXFI(osM-`5S#v>J~(YwHuCG}JMU!0eo!4o$mK zo30p<7+kOS!ZwzhFM1?!p^MfSfCczAL6^F`=P#V=|14@lnE0%f#Y?TMH9<0L zh0$sN(?h4^#H7ieBkXW#DH`%?c@nKA^jN0RSi=K`qO{g7sl`D zI2U7rxqp2hDeA*_|Ex7)p#pi0ZRxXD2VQ;kCDZ#(eNDZzq9PIzGrIo$2Kzggtbv|C zViFrokK~p$Ui(M#6I1rG(I}J1hsJ9 z(}QPb_Dn0RU$cdg_fa|%AG7C$)u#V+fb_82w(x2=9~OUITzG1w=>zi5RkdUNH9~ve zA82-zoNP67>r!|P&A;M=VX!w5jNvnvy}?&2<_@Q7y44rdtWjE}0Y72TM8FTjMNpH5 zAZ#EP9k-Nv(H(?mC;kw9M>|5kU3`$hokc0F!XRx`@Fxj7BKrNh>Y7wWI7~~|^YiNa zYqfr^Z~b=}M=TK&DUwiMUW=^;NavTB{<5^9)h2i%jA;Hz!U58GLfo+?AHD<67tIxw zQd2eM7WCaA0!H`rwDjA5AZn|lA0cFeH#vbB7B-6kF2wn zkX)-_4*Ek@vlos_$Tg)ZwGFmQ!sYf#bNd>Tzak7(GL|Cj$V8_|LdfH*bw`7wtpYJ9 zuBfFZrip!g@=pb;2R{?J?;e!f9oHSceMo^8CY@Z8059RRNCc;RB@_ zLib$~?D>&zr{62DVea?rlz71_&yUygthiEu_v2l4fxH8dip2&a>reY&v=3~nR>ce* zQPvo8h+p(jh1>5+X7836rs_R{p09VeuQ{9Q)w+b)YKF$LPEiDXSd1MTh2poCyMALr zMFD|8ym=KaJmTqWn^;bZLz6UEFXS>zXC~U7_l6CxbwP&012x zhwSH?OGRuzr6a!-&>SpHaD!KVb>szJS67IrjA3)_K+a7c)+|1y@Cx30z2~qS)DTGU z!IfnA=5Y=6dQ5u%pd7;Z&3>TFQ~D68q}A#yumuBu5QyFt-a9`JaF>XH1oM1;W>|OY z>}h@HqQ&uYq&2GFLR2~O!Q73xd z*o(@_)LqWwI6vtmVq(%LS%N=Ld+UlW4UL*W&f|I)Q?VARD@H~p90+HD9-$sLj+^sn z>@5?Fl>YQK!Sx&n_ThHqJD(r_rGmM}(7ua?G3d^sFDBmpk0wCXF4SVKuvLoB7MCGA z7cifT%I$qVtRwMDB%L%a5%@;3nC~Y%-5mJ)Urfs)QQTwopyZ6noF1s`d}J_Y^|p%p zCl$XeR%4>PU4>`SC6aJ5rF(O&a5kJ5x>+yHqwDD8)*y?OoJ<;6P`!S`E!NzKmK}4$ z>+nQ@zolp>foz9@za6}@nG54^uQ2g>>{@tyB>8Bi~<|~oBNi(|9&mi=#;Jp8ILgVUtLa3|`!hwTkeDl>L^tj(y{>J44uhbd2&r|NLKNpSe=#%QbQdlhMW7Dd<5G zVbv~QNSWEc#c8kL!b~b;u?x_r5O?S5Q<`)cndFqF~x{9@2&l5K6`EoGi5&rUvo6rdW zbEAe;9=srg{)z>Vzh3aEA(`3co)U;qGVRf!?m|p`tV!qFb)Ujkz~99O)w0cfObn;N zEnM|aYYR(Dmet9)snf715mSlr4hloQ;{W#o47J@34J(4C&KJhx=;&z=+KtnaL%?^)3J+4bVozn-$h{tD*Wcp**rzfV6^OsA0H<0&3= zHG6pAVlxwNZ%$W*adW>H_S59>;AX3ok!ni=){na}1@`AlIr?ugWCr+FU-+n(JA--CHV4osFhR)uCy0&<_DBZgXu=^*YYV8AR>In85W(_b=)Im%zH?C7PiG1xE4d#4q)zZRj{nx9 z?mF;*!f~i9jlBL9u^=q$W&bY^GenAZHknzmq47+zJjI0iiJ9IK6$8EDTv38ZF&T50 zcQ>45FmnZ;cWO_NMOS)Ljn-g&Sv~-dE@M6=NtIdju(``uht~e>NExHC46e}DmO+18 zZ;?=RbS&yUUnn=7txk!bEN^dD={{65D8ck)OnZ=}ml&HY%nQ>D_9}14q?>iBQ+e2z zlEt`D)&+x7P*7q6TPz5DVp0tbV6&zWM#SZi>W`$zE2x~nCH+(LvW~*7-B7BeqpDhK z^`ZT?mCaUoWWrKwz5(2El{YXu!}4D?iJ|-`RDWe?yx7+#+&QC*x$&8ez&v`3|LSWDI(uN*%b%icwoi3W|`>1p|VPnJx2`l8U*NQ-@8yKGkafr(*YlHBBr3R9ii_K;{hBGbofdv-i zfT+)D9U2R%F|bIrt3yB)3PeTF!4ypl&P^CxA3wwIR&X&R1;I5&B7t$a?q{)QPye@C zr(b>sI_Q-+Y~-9wP^X6&@DRLx7Y2r#8V8pB^D3}=c8XD&FaWVMN>v~+!I=-uwl{Pz_(#&E$)Yb;?xDhkXV^T!dJ#BsZ$C~k`1m`5$KUV{%eHyc z=Z=7IbI|w0owY803aAba{ zu`i@|mD}RA`(jKf_=mWj{B5xtrR7I59!g?qf!^3XpJB0*?E@;MAt1Y2m>7+&6_ndU zXKHKoTpmSVy$qL1xvFSBd*a=71sJzaE;m*@9qHDKv67846Ef-`3$fbk4NL)VWdV-3 zo4&JooAJP0%o6EuM}@vcQo0JS1x6}+K{eSR{piW8BCqY!@;C0Ek>Bt|s5&hZ4q>r+ z#`%Pw_j`bm<(_4%kmZv9Ay+@%+6=Y}aZl6bLam?frW(vXsKjARZ(fH)x>^l~6N+>H zyd>|zHrhr=X{12QmD&!+u^o(ASqH*m1(ZDCoqBuMt?>LiAQ@Sc*QB`?=;!GIS@CoZ zi{Ut+5}f7O-wV6NT5Jp*-KTA?36Li4dfRQwk;Rn%Zv}+@IQl$}OC$U{j{lzy<$f;#}lccWF^Lef-?IVVBs^?L?IIM0ZN70?bBLgmM92LtLkfZy^G`vcH zi&3oI?A4NAT|R{#8vaMfeluuVVWIf0>ytpww{iCbm%Hkuol~%yekqLzw z7U6td_jv>z6jth&8B?204D`G#kQhWqqfYFfYB#={PbI%I>XzN05`?)AjqfK`V*-o} zoAYn+ZT&rSWi2RLIl_{AXLTq5uxheh%E}-hcv{}duY+L9fCz=#U<(h(APM8|uMq>I z3*~^x3svwtp3V|2IyzBy4pITaHT*>R#=$)2zj4q#H3aZ?bP$reuiPqE(bCc-WVD$7 zL%$1hofbKuL=ig?2*;m7ei?YHuKD(%RSou91H38RLFO7?#O=JMYdvZ8uz1yMXOEr6 z5;pXXJS;&h!fhpfx77^5W__MJ#q;8B!&v20ffV&w2^eT3F*Rluxv`Zs#~Auj|M>#x=hcMz zUHz-sRES_8O*D@Z#)u|%1)qDWVAdIyskWuNpl5tD%8 zorPWdF^7_r+z-Haks^wjm3&0tGyzCzXSx_I!RwpCNCj%Y+>VwA@~geh_P-4Q5@j^( z)gtKsQiS^}11l?goc%J|T4}ysH1YPX)10PpbHPJU%af2+0z`G^*h)x3{l^JQ})k&=hx8;&?;w)jT*sp-<*uie}wHtkwh zQ&%&0esI%iD71W~Wzr)97@SB>bBZDU1|oP*AeRQ#RKd zmzMd~Y1!k%r1I&w6wa9xZP4{}Y-8WUkE=7MxcIQaHeal2p8rc0Peg5bDRoe2#3B=` z3I&zmZZzw8w>QCZWNNuNF-o8x=sOK^ZDIHqy13!LU&z{~2}XkK0-k<72(P+N{GtL> z$YFx;*tQ!z@r7AeYb1F#gT}~`d67xzjluEhRJjRlv}AN?pn?MDS(#}?MJftM&dDB) z0vP~257Qz?VIs5GD(CdnXz`>@d3i)^zs6z>@W?`j{ejGydyBi@8kPLgWcU55= z-?slT%aYsDklJenx)K~dn#`IF!DAMAe}_hlKkf8xws5op1ODJhxwgMyjVnim_I#J} zu1TmM>ksCGiE~;Frc2p|GSp2?;Z%MDbmKGc+r4Z4R;=BzP&8KFO;LjH9#@{!ssdQAva*Gff`BlBbd%5tQ-6V|{UTe5QB+ezqMjEQt9CCBgFI0@Y9{ zF5|uL>0xcOQUA+d*cqVa6qYcuDdKn!c%r&%a6Qf)eB~h*TVY$8Srk*(PFe4L zv%()*R9j`?<5MLy_`=u))BQmsbljv0U!oB1AC)l?L+M`s(%O6)^ab&B72MevO>grJ zt$W-T94&D59p48%J%eq3XhnK??_l!x{nqtc4^w1=YsIPQ0?+c=7%7Dq@7eAy8MW~W za~OB}55ZQ$+dc`%F0lq(qU>zZ9zz52D>$JVK(k%MC)S4!Xj-S#uaX$BW)-R$B-)2J zU=wOcC(@jjjYF_hHi+2ejX*ytv-iu73B`G364UXbX|KvYkO|4g3## zccvsr?bA}TWF>Uz0W4brkn#!-%x0=A;mscL2X~3l2&`{h895^CW6t{*KDptcW0W&| zAp6B{W)E{L>=r?UW}Ql>`=@R$SWA6@RKNt?Feu92jteN%Wc0CKxH??I!2<<>rdmb~6Q{KwgBX^>5UC+9<*{^s@+8@+sAjd6gL*wk3h) zVTrAPv$ua^ZlMS$H(IKZxX_5Wy}xkg%eC2>3jv6eoVBj(OsNPK+LZNVGV9#&dSn$} zKYMC}pJb@EWmu8^_}%Q3BoXMRGOP(eWnlcw11TP36Ww^{-~o z)Bcx92|Z`!Le(c)r3oC6N~KF2=r2W&=m6gVHZ-3^kTyj6 zGDP2&5p7g6jailO%jG?!daPgort<88dq`5B5eF+hHY-P5&X8};8`01#Cy&Om!^gOH zW!Etr$a^3u>Ec8sZZ`Xo%&xw)1#^w4P_ZReAa~wojWN*SupjVO!GH7(h>zqoDi+)xRdiiH!e zt&!^^Ope8?v6{c&h@Qiz8-l~kT-KQ>b^VrGOJ-i=%+T}aP%a$#;!+OLe%ElGzziwhyX_}Br?SMmuzJ`N(5qg_+RjEj7&UXDy^df z6mdPWK!pjF3e74qyqeM@-6Jm{&HP78UCbF+eAdYMOqmDW?tq9X3}E!v$naQRMMWYY zq%ci5{+LKSPFHef<^t%Y%jnBq9_FC668>pMRggl16qR2)klaYMF z8k`oHTDA$P-Xk52#^eL!MRXbOR$0h105ugvNg1oI(X&gO&gS)UvQIF$@|af%$G^mm z^vucKsXjoUbFkc@*&rbt%J<^2R4r_>UqDYYx)!rDa@}AzUm@h3SXkk0a&WY}tmgX3 zh+IGXuZeKXu*_Z}8ww^hFtCBRd^cP_dL)6|sFY$ijG%uA?Wnfz7GVX_m7~Vqax?WZ zTXP&~=(C@nA%Al5nhM~1`|YPXgT+e-Klxh1#yi&A^prXW`@?qeIbBLD`o|}VwBBdL zuWqN1?*jIQ+zQVhnXYh1%J{)LVCkR_NioX3VM=j&eCd}63`%!7B|#eg6v&7k&N->i zVD7)Lk$m1MYaleBWyFKth{zc5j=$)9Z3w`Ol^kmuR7OkT&ZfRvDXQ@g3&a-N?R;Nq<2GJN;GEc@t#m0UR z2s>4l)z@+xj%)XIvxCd3O)J4Qy}wm}5ZKuxv^3KmSXXlL95RSe4r+gOZgU^Wfw!b> zJ<>pR9i^gX>;AAA@H!pNd2V zHA#rON@UbV#3znfH@t`jWI+ndEOdQL;@%e|jHv_Sd|z`B{=<+4manJ*1wGK=)qw$X z;nmHg3k^=-f3UW>m26Lg8-8r5W_rWri~l$bUNJoRz+!4!mL!up4+prRB6%y-^vzc=04c9chd=Egh*M7Tge zD&J0!yj>vC2k5M)?w{6ST`A)LkFkXP>~!BP=ViwZs4_T|`al7#1KVDpbb77kf(1bS zJG(7S%jl!U%G^KDq+(QDhx8H>0pwEg(ZA7*kJt0>^*_}ha!P&xRN>1pxN5+%hQ*(} z=8mvDlz}4hM5~^E4tEx52$kOeB85a}PPJynt@8&5>yCW2Gn+RFIY3e!#Xw%xJib8c zyxYy6Xc0gj5xi?MT_V~ItsnIHo=S{Y6jnc=`{!wMJnf?a_k+Z-lTir8Vc@kvp7WvI zB!OV|`Nb+IUr6Voi6BPl7^0m*2MOc;B{3-gch|4ZDnWq_4h(cOJCTP{${&^klisM< zlj$W)WuajN%S^EKeFSr0(Il>K3py}kAu@%6-a9dlY!J}F>H{PtXd4O#tKyw_$qg2I zfL#eB9AOnJR8LXJ2J6}1NLe|ig_V1xdq#Gmp|vY}=+GUE`Q?=WVfGDzLc}oNz9&Ks zEp>A&Of8C)ET|NEn4ZpHW#lJb*U8^8VM^w_c2uOGP=~ukj1OlEc(k_1J>WDfuB5)! zuBihlngqapN6@OZ=t{6~5fM)l=g86_vP%CRlhSg=uC>*f*nSv!EM>>6KlFS>37E>R z^g-13QS{tb;JTm~GM=l$x8zDo#Z6OL{>Df{4KM?7JM31`GQ|GFl{6`JrI0|28!#b+ zii)Pmpri`$_QW=X&sr73W#nrD{Jh|5`A`1G}L-}He?s3nk+rNBg9bQdU zDN58b2$4@y`;d`Mrvu$cHYSe?ZRFK4@T-kzs1MJN4$EJ-H-4KE4&UwBZToH`Pa|Ak zfX#S3i-~O4+h7y9p`!gt4nNxZ=>qdf=-&_J@zD8rJlDdswpdx9db;RhyOEwe6g`7% zNuMp)pv$+jBct6K58T0xNRPi9>;YOK5~)B&c}XGex22wjDFrQHWJ`b*pWWJh-Q`eH z^$6K81gOHNp`e0-%0SyOHy>U{0^v3naqaS5X`GboQCNM(F2@x?;2Q$G>Gbe&B7igL z#&NGl`aOZOp}- zu%w))f)J}M4hJa}amZql%H|}L$6Q`%@G4XrQCmF2s4j=fZ=jJ?%R*5>mhs0IYwNV} z4%c$8p|qdc2#kz6B@gk5yBoDE&ks*k>HKkUPhKx17Zd~6L#+j_or&T`g;Asc*bHo^ zzV3KDx)dpaRI881yBDPYeFbPH}iTm3)6%`Q^Q(P7dHBEI8 zK6u;Rzk!{DG0l|t-@vkca@Z5lYc&x0?Mr<3zxv9fR%Mb=PFvMu(?7l7xWUbLu^b0< zUpd8%uGLF;-_q^o^TW125<(Y)HUBb?eK2L?Q&)wL>4X|5L|Ho_VQ5oFF>W3NEz7|Z zn>>S{K|D%_2x7dFH*v60;!7y#N8wT1LDiUA7KU~clBlKRqZt`pbW*l_3&?f z3R7R&)y}cDDjC)Lz(>ZXiU4lG)hJU#`w8F-^xVNcn?7M0*A$Ne?dzAuvJ{)5U8}~H z0lFC~WDwAHnfwD#DU=~wUi2yHc@mH)s4y+F;O_*1Ia6U9uf|qa7Ihy-IjB}YH6g9* z7`p-nXe2^@?-pR&*#76hz&8GTJSGk}-4V13wofT2k??4C#7Lo@!quVE zRSdbz*s#H}eBMIuy}`2A@KU(;j^-8I2Gl*|C4Zd8*%CfM327LJ+p;-Cz{~e zuCIWCdH_^2T|7+@07>`HWc0;RkZjk1@JpeUxIDB`*`yx?DxlH#F2# zC|kkWAC{kf{awA#dhQVN^d>5P_PesW|iM$!1$3ZWW%y7niE6IOshK!tDXD&w1>`3m2aVGq9(WoDJ9$ZJL) zWd}ZPrC4dj;4u7Sz+ujQ{CLYMcLyhUHmq%`aT!No*Wvwp6xuZ3{x%%SROsyP)qL5z zddtw!YD{h)nWA>pU>scsL6tAY(%BruJ`az zywYgxv(n7S5x_1S@v3c#f54mFYnF9dJH~**x_kk zG99?nvpw8-{fiy3SFO;%v%b*VUnS&=?I4HXEfjhUTk~OFHO<)8VV41M&{b9I?oOae zHv=i78#?o$Rn=2>!mcNNA(HJcoimdlmjU8_1e5i9ZU?#ADXtjhmW@_P0I%(}-5;cF z3V#gsotmjo>9?N|9qPdqnVJImOVCU2+s3NK%pYG&5+$@&r^j!$xNOE^m&D5rHrmxX z`D{_NhVB~9o56y>$OQuCow&hVq&+PUTpukdkHR1H#WxIPAQ&mp4>_ws4Y@6nnVZ)cx@c6uuNf99tC;y<(XvO_eDOF1HmUq405wD^YK8>x+Wn6O*<12se% z6nP23G8bp_e>HOe17FT~UBhYh^a}M`0{Z&HT8@tPfO(K~zOS}`8rkai!FzdkE*%z! zQcbTLuBwQluA>9GTu-aEu?@SrCg$Qwi}8C;O3-ea){&3-Qb_Yiqm-(drx8QY3tNZG z&!lf6?%y0NDd|PLTIDJ>IJ7+n;|@$M|i{rRm{(ygD=n=|H~Z3my>Nw-yLO zQj$GeMw!ek^{d*;7rn~)1RbRp7xU2uro}NSdvh(6m(7iD3Nx|%IDFsmzXG(v`R7o2 z(_?c}VIbvHaJeTI@u=5&l(76u_GlwA`-2uIDG}Q%L2NXd9hln7*D50r!OZpmVEbmBQ2#~neQD#&`(KeY-cxV zE}dM%!k)}aO8Vd3sWLJMxV%44tSmbEE{-*r73DirD0Y0jhSr z7U<1gIU97_3|8~RDB~iM14=|gNk=;OjZob&w~EX^LetyeS7C6brw4N`7FK^_>XTJ0 z{%Njh_&&gFtho@8GKQx4CUT~zp)}`TI`JGb0BBM7qzUu4U4p)f0I;?+jVA7wA!1Pm zsc;?FV~phG3fQyG_0&`}`J#bh07t4KC1rd;&a#qcm6TjUWwE04>{iw*F%=MBr*y+A z(j!oHlE!j1$+N&SnJc)P*I z$t2AR{zC<(LUph_U{{Gl)St{s0))#z@87-b_ED` zKanz4=}%P;`?j*|qC8OMKQjwJJa~atPN@sAlo`VA#b^vC!+niAbQJ&J3*b_!djomz z0XK_bi626m-^Bz9mGCs)GbeKrz?=!hCR$}+Da>3(@H8$YC7*G+@1q&;i$eM8&w7*3 zE(q~E5Pi)Z3g`5=1|0=fjHu9#8xQ~r)OoD!f}j)9QiRiE(eCg36)?MAZeWjT`rh^5Kc za2a5;)ANJx`@zoUIf*k9M#UP9W(*_a!Du=woV6p)7`Y3AR<*V}>zH|e{!F{=L&DRj z3CKB`*gIvj9zNU5qAyohR?->Q3Zis@Vn!ypr&E$?4MsOJBTb0Wf{CFzLVyJ^*|Zo{ z;=pYyz~9FQy#H$W<`2eBf=L7op2n-Uw$n zS{a}aWZEpCcZV2${zBEX5rf>~b`u0z&SoQp{b0fP<>n7^$*fz?{nTU`Ezo%KOe|ztG}sd zP2t37bXhRAroQUL=AI=>{54^4VuW-oY!+cP6pzav`ZD0WMY5^$_2a{)%MU-RS7;U- zJneH)yPwT&JcP;kcp(qm-RnM|#Q>X7UQZJC6b{bf@Nlrm_Z1|fl>?7*qEx#3G$^4u zNmv?GMC2%8i(y@2JMTNPL);P8;c>vuB?yy1Z$Ez~=v3hK)qHdm#OZ~eg3EDiU?5;j zN!gH@Y2o?IO#3?!`*Bt}60D=6!(n00I4BU@4JHpBeE01g+t_@_PJodtD7m=Uz;Z;i zP?Zb(1j+mBr&8ut#}Sd*+GCMvL9tJf@)`@;Jvaxc@QTAVL|^-ZiJ1L8Xw;6;-A+7| zsY#nqY~`UW52GxGQ0~l3BZZ*fyl~MX;xP7+94PD47Q{XM9j4ga(^FY<^~G^z5;f!k zAojdG!=Pl+?nNX(GCSu=e<{jJ3R9Q8sa-70M*e0HB;i!Nh;5lx!EKr(5tBo5yQ_6& zasOE4AmY)lZw2|jNE}!dLWLOR_sd;f*h1|Ms+=;95|8u$C~y9=67=4dVa ziN*?%XyPx>1{!FQ1{@0)bLc*qUUIujbzrLJET3fD#ihmEUY_6E`|vyZkGFkErPq67 zzZ|}G&Cc|KfdSU(8AGg^muP%e_k)XHR-(Q&+==!}EXq*D9K_O?y-JcWK+Ye!A75WV@&d$zYahq4X zK`<90W%@)3DU~?vX0CJJ*QaOl{IuZ~5!m%O|Gq>F0brHIDy|yPg}U5U{+=KI(8Kws zV?V4eX-U1+a%SM64voq@m%5w#ahF{NBOSh{lN%$YD7@4gI6OI35M~M9)~r@Z*Wlg! zZ=rgMPx-x=FcVqWJYunbUHX4$y2h}|+pn9=$*z-YvTaO!vdyU`+qS2g+)TD@8v|=eR_=_)pUtiP`C*CC_+s7%LgYs`3jDywQ@~}G@bIK?{?EDeSH>r|_`paNai|<7 zolyG6kwxqQS2q-*9Rs0{VVAuPJK&z!2En-7t&i^5t{?GxvVVtxkpqv6isC^-6V`WR zHFCQ!G`1T3MnnWdPQe60yPyfezusNT3BCKzdlQ1pgoB*hgZ%^j%Jn?bbttxfb;Z$imP(udkr2k*{H^5&fl86Weozd7!)kk) zgkD>%%jrT_uscS8jex*fM+eXQvIQZpbGWyO2@07SH=131nzYv}5p7cnX~F0e8eepI zdMEQel*4h!*Y#%tXiAAU&d(nW&VoR}=K65n=^sY{=)|Wxzw0@#e#Qcl;!eKKD2E3h z>2WzTN94HU&$HGzk9R5BdkNWz$^P35B4wvqRojrl{O}APOpf*>$2j)n=x<+7z{uoeG_gQ>(vER!Muth` zRoF#1!H0k$6R5dK_~Ov4n_1j$0ed=Rp7R76Tvps!Z$C}$Pk5QF#@^04G=IQ=bQRt} zm$l$qyvu51%~O_}eR%93iAPTun1aviO<5UzQ7oa+LH@V=!ou9mR*r&jl&>f>$7^Xp zQvyQ)kg%3Z%`8IXd$I&0H77Cd!MYMq-tw5%D`A#HF935(O+@Wob-kbP13)Tr6^#;> z#$R)YmxdeK0>)3+>Ltr$Pe4VaaRz#iY?V4BJ8YLMHA7(gd}@$oYbew6wG2KLNgCm< z?%5&+QgJ*!YLCS9i@p=7f4o<#xxg2CvnlKNSsE@$W&Y-N zf~bphZMM2U>(W8kU}$C84`e^A%SNOZB7)uy?(_hlcIha`mvHNs5QOJOY9D_O{MJJC z6>-{AUJUBS3!kI+D;YSs_|ENlZwU9VecAGYR^ZJ6}o$(KYt~HcV>8%W&4&Iny+bT1VXv(v{X>Z`dhHQzoT?beP{h@QsO z%yKSAj-ro#L3H1WD8N8iuj%0$o&HXBRb?X7)zd{rBxM$iOMTm4@*K92{WR085p3-uB0AnJ_94N5Ulbk73&JK45UCxw)UBJq;Z#6&*vwpRBS< zA9z$8h?4KAM+BCtfaa_xXgf3XCS9i4Bg;QJ5*uw*3R806p9kt26kRO^) zNXJHyeW~#sy?HnQq>p|sS&~S2y&*@Itnnae4Qp$D6XR4kO?>>Frzdb_xbo}jza z#kjT@g4x}IUrX<=mrv|=u^hd$j%Wfa!WTFy!rP8u?J?X`Z?G*xi~nvSqVS-qO8kQ% zYwqo+B%RzPnOd!M{@n3@y5rFfyGwzpC7~#U!`2p4tR8ok`i`zt415`C-C^DHWg6ev z4Z%e4@a`-Zkev2nZdiX8RmcNfMDOMkxl-!b=LsLq+>g*tJl7~v;LS>Bd;wO?E@P$Low+|Bzw zUrZ}t;L| z_7duP^M4zbE?dVa3uh`~pr99uyNsQW`_I9}(A;ty&@tdHRxkk)1wc+H39*xR;;Dr% zC6rHN6tY(527$`E+D!U09wl6`oP}9fHmVa6_U5?8LoKzO|_4H74!6v-X8=1o(w|lOZ?HXci`n7cz%gy@JHRRA`9e=UDTNi0OifZ!lABSx{|OrL$$n4T zRj;+5C|^}8kooo@yzf$J0DnwMLl2!{B@g47Skb2AY*ex6;U?jh@SvDw-gWd6AL!Hk z$A7No6)h5YMK}UNcazT;#Jjp$G6AMAKypsAS(5&=f9D&zdY5lM#xRqU=I(3RBj=?Hj!nc#^iT}MrvyS?2V!mng)^!; zLC(vp5I#Q7CoeA9uRDk-cPA2`0g!1x>ovR0a$*nM9|9p~8h{YIJKM}T4uZXH%Ocv| z-sYaj8dK}{8iyov6H6d#>w_~miotXNq4(|r9h;J5=YLzHL#l9~%3)`IGDy-HNM8Nw z(I&{JT!JE#uRxEAJY1+MGEqQzr&2I|Pi67ubfF7^MWw1!q1HcL{uwH)ZOb_F@`40K z1yqT`8#ymej<)7Fa{bMDJ)E{=I2VvT^x)CBC*!i+tU`{o=+p&H7ns%7@3&Q zBuWjyyMwh`L>q$2-*g3+nqv3Hkrwzr8HrReSB5O|Z)Qt60D^y>?}jRdt!0< z{R@D8{uOHDIElXflSS%HC>mXKdZGvr5f$>%G&L+a>?6s`5il=Qa!Fe4SzIiWGnCV+ z2uBpr8~DQ4S;&ef&`D2@3M)#%VnC7`Ur=hi_`-dQHVck%{JA7WMh4D1*IkqrI#`IA zf@%HH?Vm?ZIKM@6C(8sc5?i_tiZEGK&`jmpd33sWt9%6z>XGsCzs90{{fk|$m$~l0 zsUbl_EHeuMI@3npE~fNcd7`Jll@#O3he!!dtqa6dbp^L0m5AzFYw}zIkG7kSq(7Xz z24ZPH0p9f`I(c|>?7{1AQcqq!HiYYEc5wZR^^9a#6z0{jsA}0?SC5Z}j{;uJ)5YjP z=tIHY;-&`vm~!I*J<=@uUzF$YDl})mIf21>A*ckTNN#^a6<1s>lFp;NV#ooV+$HN_wR#ZglB`HsB|>{6WkZT!_z~apWmmr za@E2+*4EBc%JdV~!sDy2uNIT}^(&stA3E~gjTGX|*pNqbG8;-4{??)|1Y`V|D>0!F z>y=+ExDK4_I;KTdUy1DYB~F=^uBZ_`Iej>dZv&{LOS$?I=UE4MLsN>^4ZhQSrnL)y ze|^ZW!U060fR?S4qZkbXabgWxK9uJ}l6q-H=y?th3zzJ-xecZ?g9Ac!wpW{EkDeni()kX` zwf^S8df!AG#Fo%)tkom}`?bBK@XgbU$oMlR3XpgF6XI)glp~&wpOCXL{Sw6yVb}^h{06Ykc`CIB!Ao-xcYTw!QyD(ca@zUNb$El3X?;D4AO2rfm>L^ zkXH0W9U_N*QX?Gc;$EuNJWZNKJnZ#x?^~qb6q$B4xb*1_Vn4$s`gG_#<%t9|(iWe% zT?3v6_#nu*6N*A<9VP;~H9QGv7agPF5X{HN#~YtR^b-8W1<7NZT1V3!5B>Jn)MdfR zi6hi8_@VW82W(nB6etDD??%9MW5B#2Nu%?DOi3y)o=fw2?qE08K=JZ0Y18FjLptlT z%%qIP{c_*G>jl6R5`|P1rV$NyNB%o_m7nxEa-S594S1$AJwOUx-8nnWL4iNo-)O^?F@tXLMRbqIGu76|OC;zumfSj~~%{+C5O+70iX zcbeW-Due&x;8Hny6Bo(ecfN|7%!j_>yikaar-PWJdB71QU&i)3bV)8SiiE|59@=+W zkb={?BHykm;kF4P;@dDyRTm_#eW>%HT1m(ZexhSO~Y>`x9QjzJFyee|0?eg30 zRcf^r2NTC(X*H-lSG2*|fb>V{llzFHYT-KqVh{nBYK}J)u(A|D{p<$;m&QN!TQ{IS zwLh8Bi%I?@iin6$N07H7jat^+^k*$bKaURxSW+V7&2KS5Az`HOxYVB@QcwFJGP;zQw>!Om1Z?8RHdQ|94D1ffwmOO5GaM z0=uyHP%irOj2gwpU-%ZcsfvJ{Ho9UiC?wOBZLeVNEU`QN*x~+dL2pwP}U zwBrp_hljO61~@@Jfc|eQ*+?d_8h!m&gM@XfX8mC8AI~$BOa1CH%3pvsQQd6{YiZ-JY0oXrR{9;+1J%ryOK4W0=I%^q#aiij^|gCipdV7^D}M(idF7RdlXogpb} z6Cu9gL74q?d#QCZpzJo zXuC^-p->hoPy3b5RGe}-BwbQe5+6_--Ar2U`=VJu+RpUXg99~tq{fTF1rHFpME%8K z(VFMZg&{IW+(ORu@ABF-( zYHSe@Op+YNCTc2Hh^P+81REBRm#_q^xn(j*p3x)3qo{F;Mk|odvk_4=TGHfx!hF}m z1`VK-2m3FBvTAyyuLtyND)^MSm!r|T3#8GdT%2-NL^{X~NpWtuZ+gcy-nxip`X+We zQ>+nLeOE-U?_q#Vg?Wo$K6G?yNFELr_u4~_kG_k!q?=^JBlBL5$5}?9joJ{sGa(^2 zDK`Kmw+^8L2;(!S<2E+xM4{_514XPV(BGdOYakGMV8bM$aEPMNLf&bXGvkb^jW$Dm z+2Cc+ZZzE#Baf;^Jf>p+0sE_e;N1qFv|X1_cG{67R6q-x*j~GSJKDjdw;&|WWy>MY zlt;7OK40_$@=igBo58G;75>T7!4acEA@z>2$eM2tnu+8jGr(4tS>p* zAS|r;Qlc{krM$RiW>!jb4L~D*+PNgtS!o1YEwksffnvv$qx1-X853_Tos@d*s}cN?wo8FA9FAwKN#7*1dNnbb-q{~h8?3~ps9FsfOrl_Io4gIzboCkP}#$ZHWrea zBJ>{}hE?xtil1u-yLW1%i*>;p-v|Z2-3W@DOcjQ+{6(ORpmY9NNduhT=T$`mBa4Ea zOD@KNnetn-;=&YcUv39~U{J9QgW4Led9AvPyv&ZNCkU$nr=~%5dSziWY3m|x;Fxam z(ERFlSz14}DStNSvh^qks`+84cf4Ikq~Y^9E_MF>t>14BUEfD-hv>kyMu&n|AmIaL zGD%g#xT@AxV|ta?E0A*~m2i#?Qm~skXPCHwNaRmX!k$y}(h7!mvdE5r#J7lO%GOhuzNtm@^y}$V4AXfxKazB|N$XHUYl_ z9mXb(d5=h#PPF>W{}FB92KZowHdB~JP*OtQR3fxU9=RN(OXu*wc^1ysvtshfo(h!2xbD=+uSL&_pt?2NTBVe>OO4K*{FYR-woz-4c(5fb{5jIL` z>}f#Q7n7PgRrH*k0hPK|Up0BfUr|01(CxPhheO2tOC25|BOyF%Jhr?-IWeX$TMrpH zfO8U?8luo)D{pay8Wpqwq_wPU>1k4wdh;>W(-!1;*99c%@KW*ZA*F}GA~PGy{`SZ% z5YB92TASTkl*AX0EDncN*zC67^-iDcr(m)>VVDa4n8;k&!+0SX`rMHrl#ROEE%IW= zMISlWhLZJR)51@Rgsb!JphhYA2}V5)mdDfmB2un^pj~b#5t0O{|M?@`q8y|Z*#&w2 zM+1!+*~Wk51T}s#LPgqxnfO^k6O?F1*jxQ0zH-1*oJCe5wGnG3+bU8z<9*)X739mt zr`JvfeZ8>20gN%dIVWe*zjfjiC&{gDB{U&7!A3#tI-v0O*|EIgIZ4N7=HlpE8cq%O z|C1&3ElRV-kBuz5GfPszG#M*FUs+gBMeG+jHM?dPv9}N9^~UyS+R|rG(?+1jZFfx+ zhPf=0y3r4#h~zXLN}RHl3D>rz|D=q}@Gu~}CJ`bd^Iw%BkeHEG&9Ngrx`kVn^mG9q z@6?SBgCA{I*8vIS68CS4yu5z@uLZagJMXa7K-)PU3-(7-Kiljj;1c?sBkv6Es!pe` z?apOqtJg;$RJHR=a53izR#mxeemJ~4i&G=CjdU*`Lns%$?QILg70Vt>QI_3pw~m9v^$sPZjO~sN;z7r~Ob9>0U~k{95Smu2kyL#A%lEi>Z<@c? zwrI`qIRkBcex?t9r`H6{PdEgqOGv|9rePgamuEJ6LI!4AvEfRY2o)mpN(%5WOfbfy zwWp+|jILX=-5tFG?Z8jX1ZmzI|3 zzDaaXU&0KlD5aqsd4ubj>_1eEW1JUqcaaOSv{p&+U)I!CQu0!2f%a!HF+5Z_ z|HABVHnvC3rIBW|zZf`>2jWgk7)GV`-HxpZy(mTBzetvNyt&`bdb56g@NUb3gO%L_d*L;LFn^*JpyqtA62r}XD8|v4>H?FiF?Zu4d*iG5&2k77O;t(;V|nr0>e*xLMAN{h9FML4i;qcDM2hZ(W<7 z0T~~k;<2o5a;W?(w`=)nivgHC!^ECi($49Qg0c}~&w0NhdsBV9cIwz3ap9(Qd!2|ZW)|!6Xg6FxRM$#H72(d8cz|E6F-SwL4@n_fFT!C7{ zg5x1mXrQwBXDU7c+aOaa0PPw#BprPaSrq{OEkd)0>DkCR%=+mcp^bMA_`xbu{o8^hm2_uMgu&;AzG z`T1&rhvv?v8A>3G&_U|GI&srhYQzD%#)U*6D=rL&HvnBc&fxC17}sxFbmFDs(+qQm zUacP%Xxu8Y-)qw%HXH zTvZnrjZFT`AU>B`+iaEf@wJ$&v1gX^aWcHy@8A@o5|03G$mSuzE?yJ&r+`N3%^-_b z!mf*dVcL*eKRpJmAoCnG>NFKaXd5q z*Fk~;EfIs=2zLAbwCe2pp%g5roXCV^yE2YJ*nq`${0AiW&$PKyDV%p~-%4VBzdoY+ zhJdOlK0L~ha-POG-VjOqdl9}Pa>EX!O_I&23>}Tz@iUzkE@RiCA&tew>-lY>%&D>d z-tlO!!KoS9zX=c^oz}VFqI!$vj&Z5b5l_@S*E2#vhv-_gR#X) zPqtDD-34>6Pfq|~<>3KZY#!&U&T2urHfJTp9pMcjl&4g zW2*AnpQ#jf3Yz)5mVd+>1RIo=Hol<>fht(sbuIqOB-(%(*tWWtB|&_wk2EU+wyf^K%RD@GHS)0! zZt-1T}OrwYw3ea4gQ?5tnM>?glYlWX)AgMsPj5HB8y zx~X1j_ow#8_S&FV}Rr z9rIsLaHL;+422XE5o)VS?FaS?+4Q4MOdM*G=38a)tFW*O&2jPYR2K8!pe+ZHlt9V; z$;o@s$Mi|}j;Xi=b8MbTrZbs7rU_s8Q|v{<54! z@{P3rtr5_6diTT=+C89(I3n8KjWg;AoaCdZ3N3BbKFPob^z`|yov|P1(U~J z7d?&|O$WWcGP^Bl%9PSSSx!m%*h!%y9bfk4*fsxri&PF=>!7VH-C7+Mn4{sw%SBy` z6@)PV9X>U-*K#Q|07ov^>GjNk+_&yXmDmA15$49@^&;eHIJ^q5eDi|7ygtDJmG890 zU;BDi3RR|(6E(eTgboS|zY=rQ^zFtLQ5xErO+?%w3PfgtDb?53?uo9ZJ<>BN!f-Mf zY`otCPTp{5hZ2q=C;{iDegW(bPpz#c=D8i)czAeUu&r~0Oih7Ub zCarpXXvWus;tq1(&rM47c zM5wP&+0JYS?^}7nyHxT}b3JDSvCa?d#WdeD@2`x><8o8toX+CDT>#ieOepltjAw#z zDYg@OsjKL85sQk2WIiy$G)26x|2aZU#;T0Zjsz|{C_e;zC5Zw}QqLb|020>PoItFsYz66^(k=!l zm!kel?ek`BDOiLu{QHN6;xg>)`OtvqjgW+*6JNk&}%whoN# z4>6kZ(k=0Hh}%?WFg|)~;I5%C2Uf+Mfr{E6lU1vr>6{QRqEcgGS}1W4YVj@v;-^q; zD0%aC(;qyxTnx$3kmSH^VJ{#zAU=@Kpc=t5{89Z61NZ`jAPvAerf7@#f&C6JoO)I% z=daJ&hJ1S-nm~2+oUSS_+m8y;0elg9fs6dnY5Bbhk8+N9L5jpUd@8#p&9G!9Nc zaVTBGNqH*s^AtCXZ zNF^nUg}y}mOTenskP&=aoA6R<`5V>;^~2Gkva${1zi_fLG_uXcPhf z=))B>M)``QIq$V0Drw)m1LF&I{N4P~wsN{Z#fBG|x75V(yug+qykXXmqcn1}0?4QI9bW0dAF+q80xvjjx%yADfp+yrvt{9P~vN-Q+y^iBUA57{V-et$6H3|DfLQrUp4Dm$%# z!C9$~Lmr?~+g`s-Ke=zpOm2$V6q^-K9oXEO0BL%Rva{Ru5ZVa@zlcC($ennxulgr zn6rv)1;q? zGCCUQCmiv<53!i4Dd-tlg_q}daBg8!-SZ3C!EbU8gE%9jjGOB%p zHCMMQcT(!f7{>7yB?d><`6F9e!$F)c3YKOdH11+sY-%a!l zUxGsU*}xaIOsU@)hidao@n~B{`dRhHu8@?Je`j*}Ak0lla%H3_rTqgSMG6va2PQ*{ zAE8hM;po-7k-2D^BsCnImMA_Nc42|_8eE(w;*(A8Y?}M=58!oN7yX<2KejAwOUNR! zsWU^z8qkDZyN6mI5`EzFdtp3tDuCJ_f)uA1g8hAq58app;y8S5k`f@Jul?o0%h7Hc zz>Z)kz#_U;;Fdi}+@V>HNtFFQ*#W zKi1-uLi~9~M49v(3u+`bM1bPDqznc7l!Yw*$G}ynVz0HK^^5QMQ zfHBid|A-rSL~h&24Qv}xU_?5<+|+R=xCRUrZZ2&*Skx)oH`Y+r<@>Yv_HgU0-n*ZV z${eSUjh(K&s%g>`RAiSL{Ep2zGJX5cSAtdrHsmSp{(!j? zGK(dZGjCO$RCR$}fXVq={>G-2N(Z51lyt|0Uw_bV;oVygk}h`AhU3JMLV8~;E40;25-WHOoz zqH`a?G?pX74Gu6{(Yj3U0SUq!GZM$HdvGY>BA>1lY&H}#5+0CORPll0n!2d_ErJk* zgG#}20%4hiDAK+o#D++@f!}Qw4$)hj(_cIkq<`>%(MtKke1%1U^plDXD+9OlvUouy znh-Xm6g?S5pM7WB^c$@$LF7qwPx*Nq0gx_nrLFks=^4z6#xKo+*Ft+^lhdTbINhUS zs}6N;ri1ZHM8uCj_J}VKawcDng4TFFYtfuLqd4fyXFpF^HJui$VVJBitAT; zLlBj7XR&~eWlPJMa{(9k=6)p#`ZcF6o3y<_GjqB&1q~LTE9vOy=x_9s zFf1N_?ST;V^th38*O5iM{cTUX39RI=J18r5HNo0|+a990s$$?z?HAPiR*We3#GRy1zeg21?sJD7U@J;V4aBC}T2T1l$Szpv(h)bc@ubX7+2_7elqr$liTgu}S z0=d!e8xHFj)w9y)FS7Y50{BW@g0LWeZgH9Uwem};R-SC}rA{742pF=&C;jA7T z#)L*O|Cko&OOP8eTl_`bh)_`DvOXaA%P;%wk^YRr|?`=I2?<0+?lEVixf%E z+p~a1m%o9J0l)@88JG>4*(l&+)UUl4i->?D{WY@53Mt_MtRM3FSo1ps+`alP)<-LM zcR(LKaYE{@Sr>-eSN4nxi`TOyee5oO*VlEJmrTHJ!@_1476$oN7iZ>XUJ=YlK#}vv z(t#a3x$Y9=W+M{e?^Gns)ehuouqgk<>LSXciR@sIJ}dfx_K%cC)6<)uFWR1OcLvJe z&e$5WdHSNrrFP0tdRHS-pHEQ^5^Soyz#4%ySHdq% zbxQ`julwgeE|4Xb!srCF&3y`nWG0Qpvmh=HXNfV3cIrdwLo7i0hSwwPU`0uVYY zDlHO2ZdiT)V+N$jhZ~cbI>b9!1&X)5?UZW-EMfMaWalW77eAJO3=kdiZGLa8$8cD~ z!3A1pQrvMhm6j+pnpjb`8^C=4b>yx0;-Xo22KaKDnj322t$8~Q4Pj$_lN(S`{BHIg zsBvF8IZ#({lYF|~bk&YV0{dy43c*6{;&QXS+<8@q`&E8|rmCZOmZL~PO)wUMBGu*7 zcmH1ibyZ)GL%DL5;9x|sCrgkTOK>w=pJ}RB>W--JxjAkILXV@MQjd&9ZAD-_ zkL7%hzsvrrrKJwD`TZGzA(z343@aogiU#@xWohfhVG?628T}e7{f$inRtVK+r z1um~id^Cs)>@;3E55}OR%Pyo?e_C4Bmcy|&lyp>+;LCrHUqP#!ICih3VEv6ESF7rO`3Vc}{FwWv1&^E@?v@4V2Ks6_paP(u zU6!E!`%gSoq?$3dN(FWR#x1d;}NCc_Kv4v@~?hJWFK$Ohwab3 zh|!TzyPZM&C3Q9fx4DPmCGMu}jhjL(_VNkb=e3Rq*f z)~EXY3hBubd_L4mo$F@hMm3Ph1IwPMq%7>CLhck6JO7yCI}qFaQ*};%??C}XtuAo^ zSi@?SN30C3?^;;>cu&DrsxK|$d-TP^>gn{kTI{m2I8OrMb*?Kt?xu}n4nEP%J}K!U z4Gy+a8>$~*tIi#(gCoKxJbIoa-B=4e5|(S_z45O107+D$x~?!_-KJ#*!z$4p_FtOL z)lILLC1m4JHfhV>t9yKv;9w$2xHyg(XIC!eNd73?9gdDIN^tNw3MyrYd<_jJ({pXA z#nJy>85$eipP!gFrsCEQCzTN0xwvkJGHgK&H3{trz%jxtLnMgSG3n=< z-&V^ z+G!5HA#Iq2d;<&i#i)jWg)Uq5(xC`+sqgl5e1{&m-ZAo(fxWnv91ff(k#L9{&?Xpr z-wOqhC=eP>7sL4qVvGRFgL-`LHlrX@4>Pj}tv2%ZXR7f`_{z!^tykqY@z-YqppK}z zFi*poEc_F^u;S6F0$508J&m$e33L~yRnGlIctl84)TaZ2{l$}irJc}-i0eyG`i>(% z->dq#oZJ$DU#Uhkqm{_aaR++aIA%9ug!~Euf4<-aF7x+cG-DIvVR^Z|ETNBto`3-U z$2BLLva&o2`gNLbW^4U25DdnP}!;msT;r^B1l91@_b5)K8S z7qMkyfqcW#+K|vuPY%*nr7EXXP*Q5w_&)G7*8g4S{aNk)kX#zxA@=3eG+*NJs_R3- z!-J;~5<EYTGowh|ObLw6p!wm!DCWl$SR>+^);aLKV|OF|*tD*-=607U}izVt+i1 zZLPzDjR_>Q^$D@@{QNXGhZeUN{JnQlHokFF2;_1NBOantaWy6K%|_4()350RAanu3 z)bKwuDgPy-SR3iGozAwkwc&k@#DOq#NhSOTJgQq+Nyha zIJ~iu6ToDv6UltpDgGH1kgn>Z^|UET!-Ud$^oBrfru0s@`(Qkvm}b5Fe#xZTvA}lW zgzimOz`n@|1k~L~6pp%ai^SH198ell=yH{JB4l`~F3)wbpryHt5q6+&ML|D>@rP2# z)Y5LH&%^^G;Qc^H~?b^j|&C$%3Qe(f~~HKiy^&!E-mz_-{#>4Plha}4$(@rovg>*Erex%U&k z;EqP8efTa8j|hVqi>3?(=nZ-S5^L?|OAv(tz&8!7^d=HW=?hHrR^=w$wj2jPL!qZR zW&?a(eQVf{RSI%CN(plq*I>U74D*Q@Vy$nC!vg@>ahC`I<5llx=Rrpv!7Q}zYlnw- z;~VX4<62)+J%oCm=v1_rdcnY%k+R(Jj_l{5#3wr2=LTA3BDqmtJ8EBctSsc zytw}$AMfl4gk>D@O$6y89i^WM9kdt8UN8?5tUx2RSYdZGF?QdHpr(Pf$@T~xEv4%e za)zthGAs=kP*5n>tO-1kO+X~_TwE(7!qS-r6 zj?%&k;Td+FX?oO(tl9;=o1>9J?GO0YmmR+-MMU!R^S7S*F_55LD|LnzPOQ=s6ymO0 zoR;gXasGIC+=Wr*IkHrzw+H~vb4wz38@)c&>UvzCUlhd*{JDsru&W1cc)8rgn z3Obwe)YjOoKmf1wQ#)xag)QM_V-l-cY!F;tTqYV@`YwoV$GTEn5;_gEIADjK!!BKL zq_SnyKkE(N5<96P^no`+$piKTule${`&Fkg`c4vF7)6ByCra0%FCk#V%U=g=8yMtp z-Zo4b_4g8Q5es}a8u>;zsU#vCUp*`{x}sYypMskhPF(sw^&boyOO;JQ->Et zIaCncLt(`e86LpQ)t%j4t+)F{C~iKs-^w2#=c?}HPAArB0o3U4U ztY!%c3vl?2^dU!RnK+x3tvN(pH-z8R?8wzfVvc=LzX(l7>gMTpoV9F{MkYflSA3U* zLc-`bXM?)txRgk|r-nE{M_+RH%x#I85S@VyC0lIMlST@q2gN6WDC~Z@ZZ`Jpw1NzO z3^VZ}9E&5V`T3zLrxQjyhjD}C0O!ZT)SbhjuFrS7h5mu-UL1p~2T0WaAWTDp4K2(D zP=$brw@yx0@k^1-Gs+hqC-lmnuLcN+h|dVeFR6I=GTP=;r|~~IFcSh$$xB|yq@_1} zPKIWaKNBpWUoj@PY!9WC)IvlOnf!r5`R|-8j9K1PYj=wO2@=>F*;VvaCc?qNwKsf=ctAHwWN6cr7FoBZ11zC%`2BzhI1LYP~d z$^Q@wy1o0YF-Zzb;6L_*SVOEY4xc@dPc&7lZiv26co1x zatt9A5tp}Q)k}E~oyMbxnFMotke$qdf4C9;73t?>BaSGkmaH^zl@9c$2hn7T!>ym6 z>_(#nLg!kYi}711gv)T^kBsw2;@)fuLq*WrA^YVtSHdkB2Ky9&+`viAr1^sHEyxR> zB;YU%P`^UMz{0RzJRi0^CTlbcF~^$+({$ir_Gj`qRpYUT|03~8(!s|ch6a_DMOfM% z^q~rwuAME}NE+fL}%!Ahc;PL_@i4Z_2lY1hw zcAkZl=uIRSP1cng4NEoIa>4>E9iVhz+3DWA5+%QX5VvYFIP(vDF#e=Tq2I zKVid@kdhVkdfWs91Ey*c8!dNzmW4I!zLz8S`QKisxWktn708p>^Anzm zg0ytj`q{P%rzqGl;akq;tPB-DGRMvtnlct+w>Li4n4P~CaHx6L+WqWoa)O2-m;bJl zV6;L7_bem4lXx~iR6v%0#A%4AYouI3X4NI^+)F?{8n%Wzg|4m1MH+l{r-W$*aQR`NdXCc3EH+PDJQ3; ze3aRXE`inzFY0k)mpOe2Zv!x)cM6V! zBn*`AO<{>&m|3P#!JSl>l^2V1zT~Ij1&8*=618eg4M<3Te7@%Z>&loCtXNc8lf8bJ zTk`$sec%Vo-R)i@i%RkL;zNVguA*iCL6#OU41bMy>rEYL(1%>GVNU_sN)%d1xey3t ziHu?lm(0Kcu0%W5y*U~UF)ri9#aFysNHBcGEKD~{NQ{>x10A9W*1A~V0bumFf`dE4 zs$X=2-=07xvyS%;pCYVnglM5c?EIN-wm+Q{lZWAX!CG{f{T{SZAh{Uz$AcTJ;Ui-9 zJNYgtwt8SopgwpVKzwc&dub{~nm2PQT~vF1;lUF;ARbd&X&*iEPi#^Tlh8;YS4&M# z{ZG#ztgND=2WjDh;ls(E;Ez5e-+28Crz6*+Lh3{Sq6OaErc}bUVi>Bd_VaRGu8m8u z+h$0HEd(sX27>zHA|P*8RQrJ}qVcUuDA7CiPxdI%=ECoCIdh5=UPz>1|Kl-87}4-p z;`w#YH~|=)#^EJuu>l~n)crvOcYSBp0G@nO5AViDO`PLP?jj%4-tq%k%_Wqhbr_PC z`~}j_+!|v_5E2-pLDe=D2ik0oB z-*#Gry}xsL@J$)^`2T1+$MC$`rftWzZ6}Rw+cp~8w(X>G5P%e%|f- zo9+6MwbqH5WA82f59)X~8GdwV~h|D|jRk_cuM*Vk7^M5qS+i)-}dKg0KdHEU^ z3P>nae_8&SMfc@*O=+CdVaR7*-+C@XXmap-5Is4}I))BxUwTaXM|-N?M)_^MSIik0 zow+p7eH3#$TG84#)Zqz?c1=uD*-Xq7vtGok{M;~z+`&>i7KNS+a?u$sxAcZ3Hz&+=E68^hSmz>&+bFK(K0tdU5jKYTVJJmbUO)?L;&C<6q z8Sj^WQc0;zh$^kZW_r`g^La3*x+MX2kS<_+gvqui3i9<^4FHrIql8 zXnUY;XO1lJcsBwnM!*HdR?^!Dr|rO~ts9a~WD%R0m1+Flu80eAU>Uo*#=R;;;Dg=o zDevO52hcKgT)N#y2YN96G zljTgYmw-*#6IJwB(z5*<%ZXJWIcCjfZLLqle2^QmsmLb=z(?5TsFRYa(iXDy^qy~q zKml2|Kil+8o7I6=5{@$T^FB2xA;#3@q|H zKwkhg25Vc}`KKQkg8<>MyZ>)SsVosCKcnL6;&&`;)EG*r*N`wT#xW_`5Oma8I`X^D z$HV&A12dRP^JkR4ngPoBEbkD!2R@nG{Vp%1G0C^4D^dgeFX0jmM@Cd;=!fO?Ht{rB z6ip!%Qu``YwZakZFRFs^sg1-W4#fUBHx0oU=>}STJSmJ&92A4(DduT)AF%dFun}D3KkBQ!(S>|iCJHdCk~hKnF{I?-oW?0@jMS)H1!S1#Hnu%ACtau zcMk(*l$cgGzxS&7$bfDsI+S1@x2}J{proeDw)Nij&Uf)&+XTY%2B)_}Vm80t?M!8X z!@{P-)zLHPK>@7&e~U@-1wwUsVJs{tX}gA4K9p}n(Of!^*dvb*Xi5&@?|59v42lKv z6`6TFOX`v1-KQ*`X(bG%^MTSia~D;2Zb|X|)ZT0$cDLE;l=xR3@$K8NaTtn!Vj86w zir9Dhz1g*pOjJjy%y&q}c%_vn>H7JFx(B5lorADVVD62=A8+vQTY-2L`Cka{h&RbK z;%7VVeduGbc2?XOIf{}pqzOx$01}AU@()H7gXzHXX6(RQOW;WPJ42!2CxAIQGjfGW z{hHFU69Q&Ur42QE2-2adB~>c+3gx5^)R@-Z4<2g$P%$tnOJ!Ud5Y4Rq2urk$0D_r` zwOAj$z%bs3%YQn!Dkbn69{BI)MsqN%)+r84{}>$z1+qL_>de!85LO_<`LiN|fE={G zp?*(Ul>tC-<%#)KxAo32mh`i8HX?uScWCsn!${ezAW7G}Vv6VSMxm6gqvmVU-413C zQ(pZTnYjyp-6qmkopR6;T8hiWca-Qd+a@=uxgznVwQQ%D#Up!>Wf-F(WrF9U$F!jO z1*OpQpFe1K2$Tu}p}#IK6EX>O{RMx(@ppgJu&sSGh&$*$Yckjlu;>L@&-Ppdcn&o^?0=95*6o(8^{pg1erSZ}d z3QqYtD@EU2>GfZ!4uhsnUG4mua67ER45Le7@WQCqyTRU*$2OUvzvh!Zh@ zzU!|f6iREko>wYRg>7K9?nMSkn&|_F-r3-}xGF4aiMU;}p|fQ|+gts-zL?J%4|_xY z`?=Q}Oa(4ajEaG`qOGl3dfZik%eE6q?ACcyoG6RSN-5Dnj))7MyLs(=CY6I)ov=3O z>gss)F4K)e-UVLY`upfV_=|nPb#%o#PpAU97heAfZsiaslEyetG%hS!pLNl8kF+RB z)%=?(Z?yzQjjMF_Cs~P|PDoPIzVy>5^U%GJ;l~42SUE1;fB5&V@OOj{!dw} zX|cVwfk0{Y+PU53*~8ob5uhmI?$iX`YfHoh&&fkX!GTPB@!?fwaM^f{f|>J21cX8V z27yDD3hR*%_%8%JMOhO@Qz)eG`xS$LlD&8B`mi&e6&pP+yAQBF58Zi!CoukS+I%n? zfed0WS`6Qpgrenxw_|C{6k%59#1$6EhN?hGHNTCWgrCBkcHG`tX42Hw8rx2>KzVza zhM}T|Mx6S}5f+tKhU7VqW?{18B~~FMZ{eX+!WrTdC@JjRoW`yRDC({Jmg)G2K!Svi zts*W{>1EVcwji#M@CK|ly04WLJD{U)=I@t@HvT~&m6-tm(GZWch0+!5> zP!sZF`=kAxAM*MV*9&SzJ?TGeJo`FT+vxqE{$pJF0t^9Ym{q?Yw=@C-@Ut2Az65No zbwnV0I_{jV=HW=a{WAI2{b@6~E3E{U>P^7$!T;&&Q~^I8TZ?DWYZ#Zt+} zokD+n$FwBu5x4W7!}~v=jl)n=F>~R|zr8<=F}~~b*LEyt{!?FDGadp71ih9X01mxO0XOz4)%_k(hR|J*&8zD>ZkW{WtsevOpbb`?Ff{W!G-b! zr>wS(<>TUfAzxk(2Xrd&Y}$CLKOSr6vgs12@-26xZU82A96%ZCn^aq_JFU?Xa7eIq z^wz70wbUsJbL+ZX9!z~ge((AD8EnYVPLYp&$bv1cY>3OM5TS#oDfBLrkb`eL_)&ki zG_QF=qv-4Mb~-{h@nPSAXX=|3IuF>q{9ay040I!jyG1mcZukIJ;mq|=oJ8CW{1MZ+ z))@z9De?q>*F1m*ajrc(J^6&ZdaEq22!{=jTmKFQI3Of_?#Y4O{W@MNz5TbCX_?|0 zMA2?&x{k7Jyz%#mv9^|((NekebvYXqqR+GYx5wMw?~U{I>>Q($GF%+}xda~`!eHFG z>&j)5D796_Log}==~0BIFrc8!P9%Px?GDQquvqcA!od0yK z^^9$bfHkIb!1DTXhPdw3|J-uInz$nt@H;>YuC_)q=L-V>Z5EGN8jvX~JipjsAby)> zz+DdTSsT9>&$YM1JzxpCDtdIDg)sLwBKiFFO)t#K?N>neJsSUYkc%(Cic8Dc(n~C2 zYAN&z<>yq)v${%zf0Co9AEEK7u4~tA$Aiq54Hk-Z7%t^5 zK&k`qU`c7S1^~n00+B|e-^lmR?kj4%#h>+N6pW{WC30U5W(S*MXR}A>Or&ah zXl?8aoyZZvf?ytbg{95ubFmqp2)+DWp@6M|os)}&&&&;amYskC^9Us`c_^h}el5>7 zQ_pY!fck$S;*A4N2>=HSYihnVHR7@lNkX~4J6}0Z`-w!YG!V-~*P4Oh{`#>P;Yf{n z0D^K*o5R^Pr)p)NUIFqNmflV&DI5=qb5o{}8WBGrx>@&eJqV2A?l5Yl#<>EVkQ1!G zkno%h#MShXgtU+ijov{V3D-yOq_sY_lR;NSggIEVN)b={n8Z77l|ZF}5>c*h-AYXC z2=;Wgzzu2^1r8?Q1FW0s0Vk z&ZwQ>_jb{5jJUXad=XG%JF~F%EL=<*3TCUyN>(kt6 z*?vHMD5gCI=$kxJI4?DG1+^i9%H&!fUo$W{vJ~1EDAqkjj3{yGwY)y+KG+A_t_T{l ze(95E)*T|CZ^_zgf!_a~Y27q|rLC7ZQ2zsVkpBb5>ER&4P`n2)>PYM9(YGdM&0X$q z6KoFqqq>&c+L%fGgLS|w&Dr(r^bAc*^vdO(@Q{^H1KpezDEk+n3U_B^W8Gu(!oo-$ z56f%!`wxxrD}u?Qu(^eZMBe8JszJiF(@MLVknOfRcGp)=z|tjSTzp&>A!~L>r3>SM zW%3svS6M5m>G>m=gEadbh*`)4X&)*qSTC_k&k|@N`CVL~@K`3*FbnFKWYijQa^r!g z^ynw!PMx%eIk8(Lu<{5^CbOh-t1mJIy|~q&!v6z`A$(7mVH+c(re*f^9e9zA%>O)Y zJ_ zgpjkP6QJow^^3%L-xYa zPE2DNOilrwDfGW*`Y#+|i-;?#to<=eP7S2({YFc53r{Vzu<_Fh)dDT~e|!2bUVos$ zH`3NsSojIU@a-$29HEEh}EX zo6ZS`dtWg(sAp8G_+~g|u+;5u+Pz1u??)?+MNT z&H-#b=Z2mH0D$9NUq6~w)`D*0Mcpv;$Nap8K72yY&yc~lM|ilmf4Tv}&$z|@f1{Jh z>7`#NnuvfrU(OoDteM0OM@&p>at=N#2> zdU1Y(Rxo@Nb6YBuczy6oE#girS~esoBr?<6qbg#0v07v$P;VI2d3Ga5^}wIV`XDJu z3FFwo>!=ddz}@MHRT5l`gu5XC@?yFc_6#zW)LBAzfCRlmJVqdEX-qSB%8G48M^9G6 zjSK{f?uhZi_<^0yw1P7qZm)(Nu>c>OJ3GAt95)w&pWEb}-o|tKz^$>0p>BL%R5T5!VM^2^?Ln4z^FoZs6hb zV51FOn@_^TL>Y6cCh$k5(c7Zdt%#Hmv}3ndT-EKob^incKU@;DAmU`7PpchQvyHz- z$-z6r!jMj=FM~JYpD>}pt9=k8@XsKm=6Wu3Fekv|vOIFN5HVlOmrCn$OR;;Cfse?Y zV;}Rl*CRHmEDU}Gsq}AEWKZ>OA(wteB<)5uHF>_hhJl1czSaAtzk}sYpDx~d$<$_c zO|HV4!%J^-+7TcjBgFaumetCRGZ)u4m0C=nAT8tE@uLn~k@LFrbsOk@X^WKv{~qGTnGJqbZ6F6%q^SXBq^0TND*|fd|A6W4?%oBtk)1kt zdSXQt`1Y-{xQN?(43uR2Nf7#KYadt4yc}*UcXp~8aIS_~g9`=ih z3robg4o3k?R`t}k>w3?DuDtuVwp{j+S5J~f+MpIrQtX}!Epc}w=yZ-lC={_m5hv!% zoO9{~FcM&pCl?@k1uR|BVj&REw&%LN8wjlCJ4tS@pQ3(($AP?(E+V-CeGcUbh0|&S zq`CH6ZI@YjcyNP+h7?TK z3MFEr;^GcajN#*?{LG#zm+ip8g71WjFSkD3BYV(FeyYU07y5@K)x(qsa4UVRD2s2d zfo%k5vWoB1QhJn5Wm34B_qcmb6_*DlaknRKh53)+b`B}~T zF%vP>e>k&}Cr47xk~fg#0M@1>gvFYC`#Xzq=QH^ap9_vdK4K1O+KFKi^Ud1V#XlS3 zKu-c>rJvg~Z0TY$u$h@Sk`RzVp%W2!;L-!V1p6cXj~A*53(%MC&|7|Lf=`kg0wz@F zN(AEOCNe(G0i8D9j=~Hsrrm@pQdFcrQfGr$#=bU(rM+(_k%bPJl!W4^Yg%2Lml+=~ zRzu_C5wUM?y*9Ug_DiGKHp>pf(9;_RTyQYr;HvoF)1*=>S&VmH&A~mBP3RW**eBVh zaHVjy5H~d5i@cqv_1#DL_p$ZS9YB1cK7)}eN(K?8+%tqNlelDY}97C@C|ui za*s5dFaiar0ca$Os`jh}4%?OIX|9!(m3qYbmIf0v7k}=MINICCo82;?DD3;cqOkYr zc^!+3#|Uow-#V#USQ4Tp)shfayy&_Ucxw$Pz)zwSB_bOg@E-U$!^dCga=zD_v<3U^ z-Vi*B9kx4EwItdYRD!W62ytDb&PT{sM7%*C1405t9JFFCd5fVob6HDx37K!GwJCn{;O93LAqhDS;N zsknK2C?mcc6dW}~XuW|0lxsDo@@FNuxD<=dL#gLbky*FCAR2$+SZ^dqELY~NUoHhO z!)6lJ!^Ovx2g}Cfp`gY}xVG;F*GBmXB&PdKi)JxWFF<-@O+SJqx37)Onv=(*`H;D| z!@xdFl6*golit)7A7~+)JEmDd^@)ob;wGXiI(If06Fh^|EcIE1tLAOYS+81duDFCZ z<7u#npRl=DH+plX*An&NMZmYnaR)q2D$2@E3QuqQEW2*@PJ|7*EToKz=wSSIRd2mi zU7MS4*VO=Cq<3aaHWO+iFz;VWQyd@V$Bmbn}k(y|*eWn_cZ27%-IeS5YXG!Iv{} zfc86iBtu(TvZAH~5;h~{TxtJBcmgpuaZGC`v_=fgF&39%9-59jh8Hej!KqGySRY7- zTkymA?l|?=bHi}B$>2^Xvhfnb8!#pNyLjhMhOOTCYjIpOXs?$wUzxxtesLElQke;p z1BbRAudlC3yv9&^cms0rSSK|A*5o$ZhO^||@Jb+wh(PaG(pzf@BZ40eqxUAq_CLB~~mzWBlU&bML1 z%x26v!mqyHi!MR%Lniz@X{(C&`g5V8>vh%APOtMvx9=0{b*d7KPE&-&*9X(ZNP_vE z=l0Ft97k4@4Q|cPNBnf3$CA!op{syfSh)qsNqfinKwKk2DG!&pzf@8 z?gvX>=y30RG{yQhcNGk7-}Gy~A$frYe=PhUR-H+&@Xt+68S?yZ*>CF%N1jnJE(GYB zAk?`|p6>4Diqc6SU;lL8vWo;?DE@6$eKn=Tzy*M^S83+RmQG#|CZrTXyGpJmB}5qu zAjffCZimVS5vuUquoVO6u`anLpY%m<<^JlKz&!00guu0|);lpsQ_#mR0J--_XtkklN zMt9-Njv;l!5$3d;Qx@|^3C?V_WTRfd35{SqKWNeDJtj`Zq*4#UGp$%C6xP#GH*UPa1^Sfd* zYU7=sE}e0*lH3EY<%LTbFCF(oB`5$6MvS5yt@0;35qF3O(m2khOr+V#_gu!!7+;K@kNl^4&uuPv_6!9O}qqv@b z!B$6_VA)U2+uU30lkmvM$bwmddCMd5`*|br-Zz_`FTJyZgW%1G`J&+tqjR{Q=Nl#B0@Agc)A=`*h zez9s1>N#6ccjLE?%+AMRMtaOOT7XZyy{?<*#bQs+S4t(?3LQlfQ~YTyEfqFX<+s+! zl2}s;8<9-TFcMZaf3qufc1|!IunA7=q?S2NU`cwDg@B$+82IV+r~`=y{GsO5aer&c zfEyEC#7~yBj7faWmnRVJMH=J^+%IfQmCy{;878^$a>P^!#8BAx(PY7n1I0kegT%3} z@dVEmPQ$>1ERjj>nHSkQGRMfd6RWZ787*GCaaPgSwvWP?b4ZqbdJB5-ZI(RwFz*CH zW|ViZsz8?m$!>FE&~u~zO|O;J_ra!e%L88_$d$%d1HYUArEm1_-`~(Shle*SZO#Pz zZc(jO8pXCw%z2l+`4-qrs+hQE_FMs6!s6AOw|H{GLw^iI`HwEOBYVrZHt{%m&ps~- zN!vQx<_c6f5+uWM4HO?P8b=8ENWLLnc3!;6{%3Zu@nr6mz(FG9dqmgCuAwYs40%;rnwOxT#|`HD%JJN@uR_Ld|#A@04>PT z#hS24e>2q~FOqDb@LG!T7iw}bJA29r>i%b|%5fL66Vz$smALO4QT4#fK23cuI)`35 z*rh0LQ+iaFJBOhw?UHxuCdw(k5kvl57$g;F6RL{}1bUbvmC(WQ9CC7n@@33z**cqCF%P8BWue(GGey$%ce#pN)a^d3YO= z)=b2F)ymo(7^-S@jsiEUmbWe)KiNLxC2cgJfP+b2TCvD*c;L0}Ve|=GX38!c9y<;6 z&Xbu`Mu%94wUN+u!eF_!{x4_>$6!Q%hS8cYCKuG;<%#Gh-QsnZJw4BGpGj2$uCF$7e7TL^pLakJ9AyfkZC2*SH z1Is1C3&LH9NGy-x95t))z`sYb;vj}b^z`+5@E#tfz*!kZsm?%7Q5J4GB~?Z$VN40c ze(kr(<5o9;B<0jckXDtZ-{V=8R}uTYj{0rfC|%!1T+z?k^1DXJIrJ4YDY98KZSKw{l+R-_~p3(>^M9 zwD68qOJnZ&)_|Ye+i=uh6xH^%yPn~>vp;)#C8r#E;W7txUTKbSOwL@6g+j|kUBQ@L zOBw^A8aEFQOI=v|!IP+NwWhQrE7ZluH)X1SAeB)B;!CLWN%_kx;!_c%x9%Hl{*gCt zi2LrXg&-fWI~@4_ROli9-DsLLXsdCJN*4_+&y2#v5e_&h6JWjo!Gqmsv0B4jIaRUtZn6Z?BnlH>`MWaI0|RS)L5&ej@s91&WAo_{K6E z{AYzGS1z5d@r^}*FZQGaf_JU|V=LtDn3VaCgJYlqu;xhVsUzRPMzf%;MdI-$a6TV% zy0yT_CHu8$KPFN1%TQllUaH|&Ew2vWDHou(M1QScAc zwH(O^CUp6U_+Kswp<^i^NlA%L>aZdO1`@BeP2OZD4?%!uoPD! z%`fr?Z>of-O>`$h6{MBZTr8h?i3G`!#i>mAc}_KPPdd?!hCNaGo00dRSgK1zr3Fld z_f6l%msi`Y9>emC-O2BqTG~xe8ymIxA3ksP zR`XD2D_%41;@=5Cw*)DEm1204uA+N{XmVU=1wdH$RbnX4tP*YkF9FmVi8Em=M9|;N z_q$_Tr&wx&ds5zq;3ueG(nAky z#ahO)@SF&w)fUa20wdThn}BjU&T}h0T{>@_@DNSlvT> zrJwjgX-cVQuCn$DMknwnf!j3F$2R;(8#@v=4Xk|XC_JsCh|?TR=3h`$|BunSa zV;QPe@r(j%lEu>LvHkf44GC@Q)>8WMVB%v323O->CEoMk;NZCZMX-n-#WjE6p%Wk) zIuKzf?>OC&d^_1PAS_8n+9BpO0sFUA6Ai@$Pju>p4O=nJu+_S_CD*=tEutybtjuhL zoldR5O(YLyL5)%1c1@&?Nz)sp2=defZ3s$(cy8k*S03_f}Gh+}WG@cmWb#c0PR$^89Ch+_%J3WbL>2L z`gwWI?jEE(gEt%3B6-CMIRgXXkA|@7l@K+$6_ZaEB0NTcuiIM*VyKod(Y(O+&1{n} zL1X6Yhc&O506|ZB(xSSx@J4>=+(>xW*DS&^vlO3GMQwKhB};bNMo+G@p!wj(Xp5?5 z+!D)b!X2@7kkn<@(_w*D)*yYeSukDtp>c3@{84&*RGi>}PW1^Z zkJ zziq{ZP6dFjJfM!Zj4`n{kLR#D575qb3i3F#LCttvs zW)H#gd$CvTlk&hGlhgIPwW49v&P%5mb`|OR1MIykLi51CRTm1!wcjWEQVD%OzCF4! z2)UD{bcOh3tJea8+*UpMv$xOchoko;!ShQnVGeU0ypa-93LC+4T9YWGds3|~WcS5n zDX7;Ot=DdNPHYe;|E4X>eqb(?rIK=sCb%d{e~c*9s&~1%dJv2bZ8f5Tpf*RFVL3bt zA!JW_{C@nO0D`!G6!Mw%KnjBdCHJ?Sj(OslCt^f`qA-;o?sSA-Ic#ybO$Z(*=(kBi zL>(uisr+#da2_|D4vG9A-tyKtc4y{K+vwugT`0Fa)_`khAk$i&6a*}b2sp;Q{}h3c zyEIo;rA&19etl`4)Ptk8nS^1AMM3-9_1*PRN~ldA!^s*Zr=1f5*ivb%B;_|lzYp(n zO2{{qXx^PYS*zLpT!Rm`Q98}irZO&2Vd#aEw3tStQe_hSXo$;Zm7Puu4%y9wkb`^_ zYdHzuCvOa4%R-xBkcF_t70LYhu>AoFV@i+Mx^9q1dcFI>DNz>q@0IE-5JgXZdXW5-DX!B+Bak5Kng{f5rkPF zS;8T`<;*qVqQPX8br6hvXDA}*V8wJ1lbxYi;9_dMuz?Y`aR7QmhFCkSYzaBH-6Da7 z0w4FZ5zP>}_c!T0eZ=-r6uh30#fnqqomt|U3zlv#^MIc80S!Na*jT?66eNst2#^aU zYh2PRcGU2k{)<2!4Gu7AXp~=Wvd+C+yFNJi?@^wyjs!XTfi1(YZxD;IogW2D%|{*C zad<%@|3*kgPN)@xtUR-xXa>C$6x^tY%_N(60@L;tVEsnWU;MA`J0>$~mO+Nd525V> zmtFe4?~X^Rc&t1dl7tNV%^tip}iksPWr9P4lGI-W{sa z-{#$mmJgI=An+f^WLXycyzE3H?Od&>BBf?ZjEZ$OJ2F%2whI>>MV87f6zit)(AF^- z8eJbHzL*`@p3ixI2Wxb7{nwp#K9Ky61_aR7n=DBwhPLQmO#g`z?#gKAWVVoO4^K;* zo+mukhxQGQ+$oX{Xv}c;z{dwoN>IvsR%g|@iSPZC@HHhiLpSsO;#NOnIiPp28w-`Y|-xdVcNMv9e)rtcrLJ!fF zIwDQ=XJQ+Ul8*=0bmgiS)f`7sCQP%2=`A9FV0l8b4DP}*LzBd7?b?A zhd1)uT{)^2Dnc_gDw%&p%u)jPi=BwWMCEyd^;+e|N__0-7#pzUh2z`|Hjf(8i7cn> zd}O^AK!MQ4D^n^)dc27;OBVsJ(;_4DKy{a@m55ls`0Ld!Y!Y zM#b19Jh&D!VaGq4F0um>fe;@EbIOexoL-#wZ@}3r54cZRo6JNA;_8BvN{jQb= z>$;#gc|*UxOQoEcD_zc?FqVrWq!$S=D>40%l`rKxN5Ecd&oRNkLk`-5jW&T@@DjyT zm{<(YXh`O%Op7LW#FLf>!tA9 zxr$jF;&pBVk>w72nnqKgP*e0?h)xK*GiE{|Zn|SJyPqosiGoOWcuOC3l(svRp;XRa zi2Y;C-_Fxg_*ujKLQBKpm7YS}MJ@ev5ogpX~PMpDMl8_9*DUf1a4wt>t3x)!v?Jlyp`9pK9{<2-u^$wM-<6C9`i{ zrnw#sWlZ=Jhi>RqGy}-ta3%}9+o+Yx$N+ITg!R5)N)59FIVbe7w}YmD0em4omRx`l zDTv9%6?UT~9!C836&x7W)g@pKm)Ly^C$sH0`1tI_SeWei_SY~gcub3KB3lROE92S6 zZTitenL&Xb8PW8VKZtRZ=YaR4H*@cd(ocQnK4sm*q!`T zvAlP`8AATCM)S$c^sMpffDh@I1Pfv~b~QCM+?(q`Gbrf0`!;88Z||F_o&JrS966jd zHdmE))Zfd3zQb$15I!Vwg)x03;v`>J5uf4m+-N{N9U_m>eIaaC3FopO2-9qEB}x0% zBTbMUJdyGifBeX7Xh|r0>dEXdD~vA__?vb~40V%4{Py;5Tj|&LFT0f#%In)n3E~`1 zg}mfP&OrpZwxF^cspLoWbJ0i4RZMH9Ts~;?i4|YWKm3+Xo>QBak}TgQZ&brJ&%pwDD(tp{oM6@&`{Q72q>V#Ot*}So1cQ?R zqtCMg^xBwuxfY|-s2s|^b~;KRp8eAwDud4oAvecQ%a#gZY1zT)s5nihaZMzc8=AwJ ze6%+JYO3%9?GT%$uX(ES8C8boj5LKC&wTrPoO^9|e;_@20%&T`=AN{~=}l)4a?-Uc z#hRPTpI;jA63K5#AiX?*EC9CQ*fpcM5M$r|fw}hVQ#{QGDiN(yUh)DG1LCiu_Y7kC z?XfS7_D`k8-(Q8kk9{}$%mG~&%MZS}anU3Ke5pQ|@EOEU5qSp*YY8eqsuxP&4t0=z z{cwHoy>cI&ISA_;LF7MeW@tL!n7{RT^A zse_$rh9X9NV=OxOS`qWnIpO>t-?I3EhN}$eXcwMo~w?^j;Z=vm(LrTv6e;3AmM@H zSr{}+e5xVht0+K`3L~{z5{NsRq9S!5PC`Nww8_H4AM0kCACDIfFf<~<7i-NGSQtb7 zW74dus?wJmS*Y60rgCs_PBYVo75$;O9d5LjQVD;a68N5h$>(!Ph>+zINikEpB7jmF zW%W%mtRdm1&FwcAl8DIJDgM(j>n;g1?8>(|ktlXVVHI5>P3RMI8rdpb!f720(nl%U zyV;;XaA2$)0f?aYg9c!%(5fx@I{C}~@I;McO-%5P zlxAcBuezi|w=E;>3%NZUkB!=)nD8UqY)$;P+31J}I^lUHK6&jlv0OL128+Jp=q6DO z5%97Hudh|}o$=57XykZZ&&23tMw8R0Ut`ZF9?IXfh!R2)+z~8sDC7d~RL?@Vevbta zSU6c%mFUHxX-Hsu6?tKs=l>KDAICQ@1^H2YQU!heeqMK{=Epy%O!w)(1Dgg3e>oS9 zK0f~3-r?fBE%?*_!+lGqE7QTyuv!#ihMGDue7+3bu$}d=&MT2P8NV5MqK!~2%#OHa zk#8!~*?zmOLT&M4v9S~p+YK={A)X>1>vGEoQY(&MLJsGOQw9<<~hG-e@vHn3=^Kso+nL9oGd&9VCgY!;lc} z4lC5@^JUAiC{+GlCsMJAG!s}l^P_{qo0&o6CYwb%ze>$vRwpa?IrBCWfmI}oLR~l9 zJG&cbkOV@t$o)`cEJ04+7DlgSGRu~ciWQp1#-<95%d-wc4+loe{bE9!Y>=_A=7@dm z6a)0qZvVElLt)xdAz|Qlw@L5Ta^?U7ryS!#6W|P_TKu<#13jFUo!;X;kPXthBC6w9c^m#O-O5q32G~F!0sd(EmYWOY-eol=4T+ zL`rEet@a_ocF{iro!_IE&>h7S;xusT3LE^)@!F0e43edNX&!9FVCsa~(U1k{?2n*2 zyrX@h`MAab1$@pcti zmj6StMgo4l=Sig+q7rq@v{3~`o5)>)bAZn03zP$fLkjFYFAAX)R7a!I$!QQOS9$Qy zrNgE)60&8*P4;F`Ej(5|{)LVb0^vlE?(j18HpIQIDq3vK?`I9;%sGvGd$@Q?oqGSJy-%;t zww#9+)pq#+m71CiwNMWHk(CE>DEZvWz9nrp1FjI;4d2Z3EA%;{S;)*O-s zr^49^f`M|C*TD=}hX%L*Wkuq`gRqycG*gGWJh87r@@1xm6 zE)P4ubBLCafBN9=EiD8)*Edss6Z1Mu#qB8CoYW57xGOlP&({?Qk0>4BbNCh=S#{h{}!K!1rdCoM9UNt z*uGQVi(&xvsc^rZ+uJ)Hpc0<(I$e7s|3<=3(A7=($HUF5({~S|#4-Z`3~G*o(a`Qn z17la>xbdY3ge@?=U?r{FZL89(CO5>%1@H)8WP8`4Ickf=og8j`JW z{t00UR`hftCK829>ED(XU#UVrU?cyFJVe;Vsax2{bc_nTEiR*?HX~GbkAqy@&u^dm zf;W7xy5rvO)wZ@8Lg90`_K8vYKAUa5k9xmKWtCB8#>dl$xRVqnf85-Z<=+AaFal(k zi;LA_1^S(e#|1N5wkBu5OyQg*QyT2LZC9YP>8BqKSMBu&n}xKpo#XNw{eKdkJDvK- z;NnH)n`fSYqO~J2-E(@&{6x&i%N^w)I6~j(W+&g++b0GCF)|Pz5AC5$Ln?Is0E_H`qM*nVY zz@d(xmdm+tkwql%v2G1*1Na8;(nL=GeQ5IqPmrBQ!&wcELwrVdP~>~musv%{p_l{qW)o-`7b8*XlScb80_ z#_OL=vU3Ma`dx2Je){Q`l1wgjyBH47?YIioSBXyje3Gh!0~;0=_Q!UCX6tM@@uaTz z7s%?fb~V!$q#^Ssp-FWU+#0cvh_5R*UGOVuqvhVw|K6jzMDmJy2~T+fSqlUP3s_gA zyD4`JS^ZxcAHJX-ZiRT$c42yI>aOG)8;u=KYU*1R2uoT^M$WBCvIv6^&TOc$dkzGN zs?FG4Hlt|Ao?w;Y+8!n*rM$%G=#D6EIK^S{l;k{#yxZ{eLek`8g4#D!x0`RUrcn&Q z3nU?J2HqE)#{JW#ag{@QZ;+rr3D>d*rK%AIJ1_ZFZK_q`gs@HtgnD*$Bv>zp)zt*l znVC7N|1Oxwh^>FZLb4$XZ=&D_Zz+0=0ER< zsT6aihi~?+)AJO3Tv-2}p7MX}#meJW4jlU@3P?U#=9{1I4cl#Yq<_W6o70e~=7SC< zweC^=&NwQj`sJ9!xeT9NmpH!+}(X}m%-hF z3<>T8cemi~?yd<02<{$8U~q>Z!7UKnE&TI->zwO-v3K|CU0qd=RFYs1qpd}4xKVNZ z^=fZ$e-nxisjA03Q|wu#Ms`dG=pC9r9m6q\|seXq!!I7v{RyF`!{+lL=745GV( zk!jmuE}_MhLa}y?78I#Sg`z_++LVdBc}Mq93N0^BpYN>TxjuX*zHWJ%rHBski#!P5 zTNI5#gN|+@(S#DQ!i};6^Idtrq7#``(?t z6ZP>qE@d~es0g1NIS%|qcpANri@O#&mQ<>jsQ+Io@?TQ-9)w_+EJDSB@bVbLEg(}E zCu!>Dh|Np#Hy)TTL}$^O(zqqDo5QyHfDmd{kuMzC^OL@*`&pEZh#*!crI53GB^!QWo+y`aO=QAzuZmde;I7HVA zg`sFO68g(Y$w#Crz>kiO?g73Ez5rG%Xm|UhM>Jhfih6x~YIC~zJ0E>lSLcXy6&Uzu zt_NIHR8;%BFHI{Q!dhw__NR{QS@SbN>1UZT>W2Eo5G(e)PO;s3f5; zE_67LU6@V*@2_w7(OpFvN8Vf z&UQ%^K7xm3q!iLxEg}&7gxcgZ)3%ImwV_BqD(jGOiY80^%A5GVna3GRRXmydd zoF(@vcaf${b{l?roq4Fht@>!Ta}Z|t<5PUO1S=1g)ZjD6(GSTGK{j-jyigIwUP#-YmEH+)0lf|DT3Zzt=;*-Wc zq1nU~A^=fu;VEF@2OeC@!vje7%c3k{vO?rGAkvYA0$yMLn2tl45$fLe8BFmfB<}8H zU<;1C7M(@#SriID^ZkdUO`Y==If3<7hhRd>PW?wAhfiaraJPuJV2y;iLCYv^)P# zyq^|8X;Z~E+WTW2@cX=c`Yo{LXEuk0dAqaRh6nayx7Y6G{icSQIu^CHHC}qwa00dj zoEGYZ48Ed$=^q9Sl46_i#sl#x=`rMB8GLV8bW`0zP(?nV!CR!xMKr+p)-Rv0L&M6) zRDy}E6*nQX^9ssP51tUdGXXD;OS0z-U+z(eD0i!yTLmJpmmVCcMb*rZD(b z03gaS>DJ}VVY@*=#t$2W=O{a1P*(fum+`gzmq@L2?wyG3rhP)#NFj)Z!uT_qm!M;b z2%W4~x7QG(SOLP`s~0?!l0U{c99a|B%b81N^;>GP#8?nReGVKT_!7x5B)j-ioW6#* zd`x3jxcH|OqyRvVdF@G6W1WXB!(63O_(@XOg0PlIVFG_Ale2mbqY{2cx#RNlz&I%F zMUp}FcY@#-Z(Bq|L@`G(u89Y`D5Z4@27+4|^0=Qpu2^H<97FaI9heV7O~nmJI&~3U zUZtjzCxIx~aS6STU&g@w|Ln_uzM#r645yl=Xq2l&I`~D?PtP@)%+nQF1^*a1@lmET zBMf+#t`nA^#{v8KavO}h|MsSp&3;L2F&ocXIe0}bW7pNFxco$Jwe3(6SVdt^A`)VW zBb)Nj%adlZApdNbb!ot&gy_%AY8oce$yO$H%a1oI8KF{=pZcp`g3hWt<;Ngm=keRJ zZzA_XB&l`J-Leukc}(V(c*0l(^~Y8yx7#(0E|S}U7M@rv0D3}`{XEQ0(3mJi`pvWD zdxre%mjA%(@UDqG`2=y58VszdwvBuLhiHE;kzXZQI{!$yrISk5)ERr%=30>C7V8H} zRXK=UF92uo?t4n;7=tk0)DQXe^lZi6%}ml{#p03C(XUFT+=^0;wZk}%PpkjoSQ1o4 z5Qvn44)VrXlE8=SPgS}a^T=(^k#)vz50`BU=NreICLI^Y1C_$F=*p~vngcl@VIvGJ zZxo6vm1k8G%ebknbs$iJ+}_BJ(I&3d^neKGH}bJP7wOzL_7+n?S^sTiEz+Z?JH>ID zv-h^eadPg-Ndp?g9%N+amxM5Un8Ksc;4Y^F{2zuVUsidEk3J!zU&~$b4ipak03SEC zA+2AZs5A{hb)r~_!B~{H8Wj}sO{~!zz2>I#J=7GOMoq0_x4w{v|hdw-K&ZIxFf&T(VbKw0LVa-4g-1}zU zcLeZ=Ua|%)iAlmwUxS0Kj+W{osl*+xix45MzBtO15{mFUe*AXj0=%VXiM(cr2_sYk zBIrIutIX^GTXZ_L-!nx`$f;l8Dq@}Ds)5fCyJo^Gu>fjqq_L9TOCXvGd1)XUcFp>T<}UkV!Syd z9xF1bun%W+D~mGTH_L*C1=W731$IA^sem&FhZYkf7Ty7#GTHBb)si}{eQ}0v?cBLO zk{`{Z2s$s^pc>+G&-hV908=FMn)RqN0n>DE-xERep2(++L_SZ&v;P)HI|6~3$mHd( zuDEEzE{H*LL2>Q$?wPT7y~xm`E=kr^ELZj?qAWk6=bJJV)s z_abamH&q0kItl=iv?ssgN*Rwz3C%IW&l;De1R=xFvBblaHZS%u?^c=TpA;FCC|(L* zJ_>x6NDS-XjTvx~4z*#H%Lz+Z23rSEaq%zsN4fR?vvK; zyhl9{F*HQ5o&PZII_Pa$@J-2Z2_uvIHO1|OQ?4(H=BgF_kDvd!_!snJeg%{q0VEnoFz;~7?qu`Sn4=&H-p2P%^6=@8Q$7s9QsSI z3bLI{eQ0}ed&9)jYT3Dsn8AUbNWSI`cV{Y1G-F>9<;i7G;r#u}QNd|g(}J-k_bu5K zhM2vW&k3f1EVZZlz4Z4L8A}Oqaxap;gu9k+F*uk4Ma1Dv7N1iBc0gq41QDLrn6oDM zVJ}#PDJI^Wd94nOFzrhPZf4^2E6-~8Fb$@@VA_YAy_2QzTzI~1nAxUCG+v5pFw+&f zLwu9|8iZk$G?P{w0$9a&iXu-v@glE)_k&C2ND&{FYca1AGT8;OqPECbh4O*k|D$qh zbN>0DADoPMs4@RV9a8#yUo84_W~tDrBdtH_!Pl=QlmEg0lN(R(9xitZi6kr9-B~7l zHN83cOarHIKh|~mc0RxDF=l;IKI7h*>(F2v0O!$U%$ppwMSBw z{jHESDm)Ka&?n90Jt^TG(yutTjaMNygoO*<4G*55R3#gqI(H6K3=^%$!Q@MsI-L$Ez51!k( zNzla4q1S4A>6r;iV={8y&WfZL_bvl@J(>!yL7qwHGS5;3bSCLIj~>$dvx1-@FA4`@ zi@=P|wQ%06k=dfA!46|2q>y(BhYB#zfwcafcXeDf2lij0Mh_~ zt%~TtmajwEy0T5?(j;yCXhh)=TD?E+Vd%`c=6$*o&<$(FlRu$qB>`p0%kftUIOq(= zCpy+rHg@3`a<$fr#4111!It~kIkIM6se6iod0@P92I8zJBNG--{6gsyyDUfQVyZr( zu;Nb|j6RuXcX69U$sP1UE!o$R8WA%=vB2mniC4sos6m#To225KC73=v13rjTN+K3H zzc0U9w_~8SH50R0z|^yeX4`nfz?+Sx?_HAL-4qS=tzh($Iqc_a`lZZ6rAunH_#u&+ zE8}O4S?#^P+$x2TC$BjdjKdf)WX7&C8T{#Ipd@XXWo(+H-2M=zrl!_cqg;CE4;(E{ z$Mker3mcm+Fn|>19P#D15A`cD)?N~ig)PDYCi-qEwge5B3;QjOko0*cUe4cdmcl7z zO|#Q1PV^Ui(t=Hxvdz^1_5r6XEw$j?D2~+XcDDP~%Zcy*diEJ9nQYPP|;n3#L zD!Z0Cya8uekwro$L@b#basGTUp!?`S-{;(#NZl~?O-&}$AmK8oNC_`BiT89{338rz z_bmS`(1q$8>|Il=2Xa3H6ljAnq?|+ccAFS^jsi;M> zkgL+|xah)4nhxx>oJo@St=|-gQ+A{jyoq>5V{aS-yh7<1t|-pxocU{ye%Yr+08&HK zlm=KIvS|g_hG0d}TF0rN)qwX|3pPBubm6SAW~H0hF~fvhZo}-6m~l+g648|adFI`@ z)EzofOu*;zQPM!1$1&Nu>-bcgWed=?C8-H+R4u*po@L_P3*Wg+dO+?2eU5Po69odf z=F>)5fI-rPHb-t1b*f2?7|ixgej*ZmJ+y4P(-!|6xy5lMEtyHrLk0M{9u-54ezy%+oYMZOW3o2$L(h*-{pVY zP7|uW-pdF0tiPKoCBbk$f=+6Syh**E4To_uf8be`n8J~+=o3K9&Og6!@H-&?`9o(8 z)0_~r^n@!dlhz7iZI-!-?$3Zv!@82CKTAkz?MTM7Xk}sjIEQRmusjCG<+=4}uAHmM z-JQwmpXfOXElotklEXl;+y>DrNNySBoUWciP>cMhxZ7ciuvE|nJxxe$4#^lz>B)p< z`H@x$`eE8?s~sMJ+(%0W78aHVud|8YwjL&SFIc9HVduo04A(pId6t&0xbkaRv$VKM z;Y110Wqktkb{VU<%%3+tzlgo#r263k#CzcM8f@?-|E@yEB`3FBeL;pA)Qo)0-8mbt z#q_k&Nq-qrL;N~BcmHa|RkUdNbM3p7Dq!L^C?sw{ao2iXfc9Cr31cpzjcN6nApb=S zFWKSJze`yhhI(Nt&xjC6GrZNPN-4X(S1o1owPt4{RRfyU2y%(@zUS^M<#(x-h}eEK z*s5KD843pRpOp~tBFYYis`8H|S{^?kejCqb7Npy8Ut;&(l<+>^m=tTV+g$mIA3ZpP zS_=aim{iR+$1)wI^O6*Zx#rG4XZwB{CtBh(g34k`PTZrSwkVLcSuzZs$3S%jyWkQO z=+=>qe$%+py9r;hb2u#Z2XtqoAt9*p7|k8seBQ|s#TqC`-KJ;yHcZgVZ#ctD^+PR zCkqPuEl~@*eVEO@BZ!55Jz2hf{MGov>&Vk>&4aKhBtn%e5i(fzV(f!+yc+f^fzsZ!L ztuCKy^X}}F6;-(=M+;OZ!0FUBsC**z_YWU_HguTyD+xW-W0V_~vYK{}xjB_%XsEtCr?7B(1E5yzI*_yOPK=I+UuF8zbd2oJSqDkO>vygM z+^+E|w4KN!NshE-Ybe2CV_)>nPAo)S++Wd_0`R#ZcjJq#592BNAdA!3#cFdDk>pQw zHCcBtmW6Or`v<%(XGZRGbHX3G1v#r=Bi$rtXEW3^Dq*U*ABX#zC-WMy;%;Gm7Q-;r z`L>v|7$+u@LSVvuBk*5)iAR9VWsoI4le6#y1}ydaULz$bH*kzlOw!Krsa7KeZuukM zt>A^&TneR3ZguK#<8*3P4PIOhIi2n^x7Ji`6ekvL72>$e&Qe)oP}OB#E{OgxNg?Y7 z>C?;TG)$ns6rfe-rXbSJJM8~ZhOQsc%*Xjn^csnE-xrb4$O!Ds5}U^%nufa&rnjJZ zP^F{_@VQS@8yI`eI#Bwd4~vo1rTToBy?y5rne^dk$ppQ$P^rU|{dEla&`H;YTq7bc zo?=Bo!fA;Y?%R-tA980mw^kX&)ahhGUyf%=3t;SyKOZX7P%-@fFrIz;5RK2(BlWc} z&@JfE3JRrJn@>O2taOJ*TTm!vFJL=%uG1BxUW|zS2m=aLg)xq4+W+cmj%bnBUK1ad z@G8>p-Vw;PjnTYsC7;Z^mRfDZvXwPSp6e0UB)t?~Z7`&Fzopa(y{HF?-onw@J!@Lm zkzLS``B;+rd5Zs)%Kf&Pa9JM6*{V@ z&-==c@=@5->WeS}4xbZQy=sx_atY0gxL8Mxzt6h3cy81kB5}qas;DV{mtAlDj8;MO zGKTM8VFPz9MX>Wa?068Isy-yF)ui4Hef%PViCaY!!_6V{CBZ8p*uTtu2Ujj^n7*lX z$~VYIZb1T;5iuQ?jY;L!tIF-1@oqc^+v2#^OX}T&weXOPZ&qn}@5$-Zd`L&|VE84L zG0CPPG0!`}ZHtV@nuwTO>bRR=S>i_I;lsiZ&WNNCBy_XaPbB=nPp`AoW74?Ac@x(# zfuqL_dhm-GiVW71I;C7!6~j$$tQ00aX;tV?#LW40h^`9(9ltcx{NFkBezo-6o|tCF zx6mdv_R8_b*eQDIXQE!@&AY~~jl=Si69J1!l*B^;L8@mCw2#%LA=T-PORq5xel(-s z-vwK|GO7N;w?>8)4d#MZK(a(@?xo>8)aQ+k-v~}u{UmR7;hZ8YRX4uy#u)!B#9S!H z#I&W!?;IHx>g~li@iR4eXY}Z?w>0Hk+sNDNqYDS7V_q^9hg0s$CyWS;mKuN19sX;K z2?z{V$%Ey#^Lo1C74i;|P2Lu>ksi2nNrC1RIQIEm7-Wr8BFMMB4&#U(jZZ#>|61elw3@H^CuF*{yzT}GT%8L{2Ru<-S7a6-SC0e zfJ2!_xUxq}E$h{k5Srb%4w(vdIPX$$Sr!9OK25Ua9GXLcEw+ zbL(HjZ}-c2KXUE8-m-~kM3-vHxgCj~h69&aZ;aJtD~_FS?vr_!7FT?Ko8s{F;Om9N z=<+SRcEDTR9MID}9aGoNMxZK2!gK-K7cmO?7b*m^h9V7lw1ry0Ip@WPx4S8EiNmh9 z-RZ&!>tEJW)@UB=4Ew6;sSWD}SgC3Gp564nJx_>cx6l6i>Vnegekx5x=T1D<(#rAY zfgSlKer-R!UOoi`E++4&|IVB~x%_3(?QQ%VB)K_MH+}u77n^!7KtPHx*|b#Xa>#aP zB3bI2#3%eWj82n3w(cjPOjRedL)Kz0C6-$U)~e$;5U`&Eb?L>SxV2dEmWXHfq;HX2 z`WLPST8>0mGb1O4B2?vYn$PLfKx{I99#hTMKlQ^BWhY?`j@du1h3@uMY7Fu(`!PYu zA`#>VDl+f(EX!1SUqBRD9)jTzF0MWcGPE~$bdf@CF@_OXJ37BzfXPuu42<2E{;y-MNrhJ9Q^}_KAZ1?3EHrw z>Q>W_f3RD*FKl|i{nJ%y(@cbYy=X_&%T*^5&RR2s*`4JE<^&!J>s}us?$W1 z-IOxTB`{;|N52O3sIb+Xq$6?HNM_*8F#l}@7B%5mBGI{`D!Tl&aWifbyRq)YS1b5x z`@Sk(VqfT$YlIgyuq>D;lG33x1xiaGL5h(;C7uVXDsTvXa6DdxwhOH|t#Vg=l;0@k zkG=NuqnIi#ev+2c# zmn}<^9YT?~`JO6ym5P8J=+blfY(LzE1ZI2($*B?R(siGeD@r`U_#MV-dAPfwSTiHO zfE9@@SYF`;IWwz!{7vi0<#qT(`%gs#qbKRAf+)v{dF$ZWiGSn{@FW={U;4;dU<5xk>tXNcAY4%u7~i{-8b)e z{wasW>h1IM>G7Z-v5YjC{hgn73stxpjLdv=0+~UGD08r}d%R7}qZ=);518aJGWa_p zG>pvAXeK5E3b8NaIKotN>BjW@m;GUbTBXp|M~;lV>b>WLgiS>tFX6Z93si)&_dv6# zl9V+B02~TVg7y!Ns|P^gh>mR&SNPy!AF#?)sNSE@_!&sxEgHAAYv;M)UwW|`OrN|m zZ44AKQK-w9uQ`Kr?|-7d_e%0}0&5k_lEI@@t+t6iQ9l5FzqQW3jYM~h115P62SV!w zKtjBToughU-GWr@gcHfy=wK5@h{P{FPfA|RoPWaZf5S8l2H*khKC}-8<|fxbgprjF zd45A&txu(Ify}=L#*UNO(am&%^}v%|O2_ zOiu2zBZQ02Tn0z1BjLb#!YPyzQ6;s$I@D9;7S&m~P8A`Uni2=R5!dJhg;11~0XzB> zk+3xn9#??X>ZQv40M3BGn1R1kd#pwBTL;kvm6``$A0`~=An!Y=o#l_|0DRN*TaV1F zUplBJrOmX_B7ZWMxEkT8*cQj4GZoW4)SLgSqd0RnI7e(hTb0kXU(CU-_`9i*UP1%X zPa{rG1NC|^OFOMKA?+uFA-dl(Goqr;KwY02rXr&})VsBef@(UF=g;M|P&pJNb@3D^_@+<9SI zNSoVymnK-5E+Vgp?{KGy&Uh&L`Sm3AnH#&4#||oBduK{jJl}E$49i3ZS?gXf3+J2gZ^%3n3KHSqJ1SXUUim zCKogxRLvfOGGfm6a73IGlIU$+;R2At60>pFd+mpBaM0jQ96B8F+`k#*yk;umw38bj zR!*FJOiO3cYhp;$)Kp{*lM0#UG%Bg+mrRewEZ1^mzlhQhK~_ zRWCy`K{;wGpVR~14N3bC9r*{GS|zj|b4 zbm4yv{82L!OmWn*ZgD|s(qN(G@?OvlK{C@O!ht{Tje^_Y-;vSI=dptDkNdQhJv2^{ z;G%Qanhg`#bT{oiIqltH?<>;;vle!PqGJ;Pl+bmX4NH2N1IT`De7BBabm)MHkUI?h z9Y7fQLuR&9`6njV2(4~4)fk~iUfvT8#6DzI?nY=jdAri1O3J(&POG;A4J?UG|F9az ziiS>?5=$ykpwHDmaoNC4w5x+y2OlNqGIpUjPEV)F%emrqAEq4mV)~`H) z7MLs4C~#*anS4b2^|_g>H4-S}Jnz~(8F?fTqhJp8aVpZTXbq}uXh>xmVdspT%>IB0^=bL=H>Q8|bC-k}w3E+b! z&`mpTJAzvx_zY#T@tMA=n~?EGG;NM>@>#qbfFE)8u{RAX*Xb2$IrccZn!8_NxvXPl zNufklhlp9DXm7Wn;T`(IInT(i4twq4>0H@usL~hDbM^H!#)^ojw3v{K`GCh9N{Wfz zfqPMJ?z`VUqklGw`{_dhu(hcU6d}gH3YrB#wfWK2>GiE!0vAoi4mn&8Z{svp`Ss(b zE>^cTnWu=>R$i2O$xNTGps}u9pM(_ZzU%PEwksB2&AWU2$<0R}*eRe$VrKsEdZgJW zbv7Jmdu2k28~T>Tv4_|etofJ22)9Bm2cNS|c3kKcxWxstp1F)VS|-^uvfI%Zd!p&}@=bJF)n3h=zE0IowWU&5)QT?PMzUajoW99|p(GGNFS+r_`vD(bGPj^GVL*=)$ zFd`kLT+>7G3WJ^T$is}jhC-!}L-9(VOO*f7RDXF!i`?v!ZD>V<*LP^996_~DpeR`Z zishA{`ZJ-4KhoG(gg+V+xMzLDz1V-9@C~j##KFK;keY}8euTRo^j`VEM=j)G&$0(6 z2B~Dd`UT1(>I(DW3*8@z`pR-%CO>hu7_ShC?m_hZLn4fI?K23-latqcnN>u6dU7ZV zIw0-ADG`uQS_A{a+e^G@FlPl2q#sc;WW7E!)hW)js>|VICJwX;s9Sjj7- z!NjTU@RjdB`1v2GMwPDfYZQu9P>CtoxwyDrUD=XSsvYv#T*%TG1Yejj-5p8)?(#x) zUP|ct5+H!P-|8iG|DAVT5GQ{okT7X|ws;)AxvA;NP9LthsY?M|ymT(ZDILU5t1TTk zI#!zU0gxwL4CsOZCpIWp-1|3nN&aH0YRaXDKVm)k*76dWTB1Tj1G3V>g7rw8LeU6W zT@4SXC}cR`;@}H)YD@U?0+@4OMa<&*GimdxRqIXkS#lMJ=1FDfR~B0nN%+X!B${m7E^u_ETVbxltR8?= zBhSf;&tfHf(5KHje;gMs5G6o3K$uaZsGX&a5ygR4Y^20=J#HF}Nl(KPd;jsHUS|Gy zmVUFX+x>3<008OIR{5)}QWpG4g!;ev%y*}|{9%{OIG`!% zZ-P=-+en^V$mP$KbFHSlY-}}b|4UlDs#)9}@5)i_Nb|JtHTxD&K!1dRY8i?lc_t=~ z()fMzi_h=&+*=gPn$KqJL^4tG->+C$a>v5lnlKKBE?IoIp0;r!ylAgvFOrYARm+wYlt z4VS$(ufcC;&n(~gf=vnGmv=#`?L?svZg*Bm8QSm7z_{0@CZMoiS|POePlQpGMo6A^ zO`5O`R%mK!&r+`_n}r1`CMF|tB=b1@Jq%?=d3lXJ{gq0eFX)ETnTR=Yw@hEzfED(h zSrr3e;C!+XTWVQAlCuJAA6>A(aUhcM(~0Pr6Jd`VAn6fGOUQ~tNcdBHb~b@jG%N9B zna|k{C)Ellfh1|rKlVVch<`1RjU{%d z*#_Tp2e1!A^(q7XS)(FxD9ThbC4c~BU?V2l8_s^>|+`(AB@R61uCc&JE1@p_3 zf;RaUfwzhy%bOHyECft`=N)?L!RFq`v?EKig&-eZcdhy#Y00AU}v-m3})Dg`Y@mJ?pEm9Cs>ho z)R(V~ZPX1_)-8K4H{5-L;=v#xq`iRD5RO#^n2^9={uV?9|Ng@VKZ^rZXGQTf=dT~4 zolvmdliP*-{QUS6lMdE%`LYcX*6(LzYu~*qXLF^Y3lpkT-TtF%Vs5$F*VAo*5(Mm% z(k=?b3E1D_WcW?;n=iQ>A?XyP+I^}x@&M{`c|QsMg!G#kD!T1XsxqhA}U>7H4M|p7@h51lt zh%)e_)qzy2Ut(UwtIT95>cwkEu4rl$ey`-SwUy@jNVGw#{iXJwxrLMU+(gr$Q3F%c zY8oI^hIZ8X;Kf*OF%-M>rPWFo9JNwa_+$Lw5^WC$d@7|=?z&+rD(paXzZocmgn(eXR6{J_f3wwlFsZDhv_$~v2=q@%B>6s9 z%N|FM(qNHDwvJ0VIlNfYx%oG^x|3*sVwVJ<*a}e+MAPmWE*q{51=evbQyx)ON7mgA z0gt4YUl`o!Z1PX$fnK{BiZ}*%@c;0PnB6eLRt15d9Jag3oK_2D`}Itxqsn`fav8en|%vT zzw@j-4rXYDvXMYOf3Wz9-e@Z8Fv4VPeh-NNOR$W#N!n<(V3sR!-H;feRk41={Wba0 zlq3Cxlv_Bo{MYflcdfBW2bYZ&E3HA|HM;d*l$3z%rc-S63OJBfR)3A+gP&EPgX!Yw zoJNa3g!n_x;{NYjjYa?cZeI_0DxZcLw~`Hl#f~`5o_4>gd4`q!f<@TzHso z^FFOFhQfCD{iIuP=z2e1mGPis#*cou!0H}iaO(Jk;1FcvJ)Sejm$%ELbwW@FUQL{e zu1D+qiD_nbmv(wQ-U3)+2(#IdpbtMsBPcQN3y3Ip$eqA0EGO7I`bj6{;xL@E`GSFV z{YXd5f2Fw0ju=VZO>2fJm863lR;`H3|FitLq6n;OF>$F-@_a&{QQv_nUHf6NgW!AJ zuC;iy(F!-EzW#5}|6)2Z2msdnmO7tC{e2D(U_i5#n?zAEW?MG> z!+013ugxUV+j>x{EQ%AEzFLmz!C-HiV%v6&A&G5DQwhRQt4Nx6&nH!EBOOuLi}GaC z4Ex>fa~(P&%jOZVvH{yfaJqd^5XIX8`LK;um9vG6J3hemV+QdrvXq7Z-Rv4AumD31*x}3IKe-# z@Ai_Gks-nWxzBq?$14oo0-H9)ZPmDzXJp^#+6x$izH^7#Z4`+UGAZL{LZxNgjr(0! zkTXZ*kPjKGgKORML34J{{MrDePmop^_7ZmYzQL6AcAzggydjV0TW?e(7h4TE$A9IL zkWysoJU^AttWqbch zHj-&Ke8BF$4t;qc%!}xk9etT18RNH=T0fdy|1WdpFg#lA7TOrd?GPTM_6_+(B@Wbh zhqy(U94(s7`B^EIE(6v>h=m!q(=tXH?bUg4X@&)3kPO_&#|uZwM3g8?NTSWR$$;%J zC-gW?t1C&u2)HuX?nn``Sq~@@kri^TcU_9c<(yc~hP}f21~>@x!Ur9`O*rV%p|H9f zsxztPxS~$k=bT!WT)5zM1?}U&oy#sygIx?EXZpm~*V5P5R31j(G#}2$0ZPOZji2b1 z`rq@d;vPH%YR0FZLNoIc@m>v$yd|zn9r9yV^=<^$3L{vF3wi3g9VhT7a{8oDpNn%E zkxJs0Q#&5xbzqyQVX-dR5e4dFq-N9BlK1zydX&iq{xP| zpBY&aP$sI`arTKY!H5*weFBSq%MW9p%t^-2&IAhX^13kdzB!VHUTiPetz|KPw6M!d z8!YoUJc6m*l+Sw=IcuGRmETOg0aO6sW`9A84f z<;jVPjU1jE{@s-%nIOVc|7I$%CMj^t-ej9(&W#N{pXMP};LtN2TuC@fZqU<-tR12a z%Yhd+i?Qt&5diWhDgH4l3b+~Ft&cnMM2>3;*Z`aBNeOZ~X6JmrQ%Y;m8coSYIDqyg zG4X;Qhr2}3&FKfV9qB?Hn4)^*A;+a@qQ3T3%>RNdtYo4@i-emCPYUQqfUV1Tt zH3)8f_ME3=A7k5Tt4ytjAsYp{)PP!!nZT=EtFYSITIbsTT2!wptT7bDRpUYJ#LL?v zQR~>$H_0Rka178FCtx+&%V$h3HrgYWB#IQdy@>+p?dH6Wx_QxoffAZ93yVjz)<9nz zJ>xGJnUF!j*Qf2pdg|NMcNq~(_kB{ODw)2HSC(Xmr}OipH`nxEq(a{fc;IxZqym}l z>DwCsXr+aNlc`-sijZI51QDtNp{S}dhdc=IiUlh=9DsspF2msg(Q`mX^u0v&!8jDU zHRRIwolC5MQ$8M{fddv9VI|~gE?-Z-3(TMg)-jO?>;TqIPaXVPHl6?1wx-wUFGOz| zOj(T23_Y0%t=j0#jWxT#ap&;QcN;0&L0}#^@gVU2<}|Dclzv>?8rSs8u<#{;w{atI zFHG2~AwfemmAZ!j5qKmQ1nCIDG1~_LR`grnqR*1!fHH;J=&&6O3jD7af5Oy`-3&s_ zMgtzpK;j??ag!>TiiKa;5@5*u~%JCfl zg^%nuX)GFVp15q6EBWL>Tgt2hk1@ei*#v|e06#WqpJbHZ3svhO+}}dl;hes4DOo6$ zm0PcWnibM4dwf@}z{AX$6t=zXSSXrpk4~J{V1w-DHmrS(GROwqc$$?qw z(Ldj<$(wOHGWpkpLnv}&fd)le$KUu1zLbJHUhBT(Z;B!zfjgXceKXoynHVEuVt^a6 zkG|wY>{~e_Ll>EBU*QWjo1;fQ-5>mm0O;`B4useg@6Y;OL;Jls42d|pv~Yhd>~3cc zMJvPQc^wU0x$R!q|0dH|YxBInKcr*D>Y#2d|CO-SlKl9*ctGLFpS&r1@%T$S>E3`a zWXf*8*uNB3Y@VwNqHc~IGo=WrbQDG7%^a2*F^%LJgwue?!2*k#zql}o?R98ljzZk$ zcT&lB_dcu1h2SQvw{&aTvSGJQ#mLdt0r%>_i~iH4W15xV(@cVpK|96N@a7*0y)0vk zS27`yE6Yv?Y~tdD5h*w-`Mbt_R_LjknsOzUPll|z)^D-+Vn`LA#3;tcb~v{-@&s}v zT&VhBJW-%tR{&TsJstJNH;3C6M>Yz>ym3U<_dQ;3c^S#YhCja|%_o9L8On~;c#1y7 ziQPv~#1psR^w`+3b=H4*ZN3t9c~AW=@T1i0Xcx^uth}ELDX{5GaWPU9a;9gqSMW{x zVg~BCiw>Y(Ons+A;?sD+0_+M%F>C{XU8olJ`|0W&ykW$-{%;9JZHQGOE>vjW7Nxe^ zGLO_I?F3a^xx29`cY^kQA*~0AnyME~ocj4$+Strr6~9%$%%C3-P$OZMi+t&E18D4-wZU(ZtbJ6D94DA&}M2Z6#u>6%rE$#aCi^@fS~T1O-eo5 z1p&<}cRAr(e-@16+n#E`^7VXOL4ci=SGpaB{mdg{*k?gtQC4Z6NiNWuj4nk*j<)p- zI%yC=Gx^7~6&K!^ORLZafm2&7C}A)XNmI##$G!SXX+iD3mz$lnq`0yr)OxyK@qBA& zy^ie95a@#2ToS@!G?tah$x=^2fvT&oFjvqc<3CYvNToVu+EmeJ^VcWUpnGEpID-t< zpQ~GDecWpl{Jz|xA1(BAGJc?6AKXh{jAsL`vP0<-@lGY)>f(hXB7A*{+KD_ zzrH7oTO?ij@ln}Wg-(Lj?KcCy)jB(`s6W6i!LN6vkZqBS1j>XH-b|i;(Kx&w7sZr2 zSog&ZZaOw!tFr2aDMFJL2;T=qeB3{VGJsW1yk=oZo5m6YtkEz^v3gz z+?V)?Q4z9g@g;A{_5P%i>g|Sw>Hpnx`o?oURT|5J07!JoyUb7->%)|jy~L6leuSc3 zsNIz!+(B)sK2>XO2fDz05AOJiWto+qgrYfA+4_0v4kk8wK$!dyVbt-`IMu&K%j3#zlD*i7r#?iwPhNt7B97);0_V=3aU%8u$ zKL95RM%3ZM5KWtLxbI|BbY2t+;9zf+jQsD)*MF^0xfr@74d(iU@EwL~N{na%Z%wXW z*)qtN$o9J#OU8zbp_j)lCLiFmqeQm9doIk^mOlEijyYUQzk9$KaiYFNHaNj=o=opJ zW!g!7_QDhDv9q$W+K0B4Ho#icvSZ{AC}XJI*rD&ifOxlqMaHGPao1m4MWIZh1< zN3^G8^?R|1t#7%H5~KnjFag7*$5SuXZ!Tqw(N~v40s_*R$$^lml~3#e|9x#RjIi+E z$M=YV3Ob0T-(wP-u|*kG!$UFsQ6kYlq_Abhu39{lz0|VrMSL!2{lA?$E?{%kp_Nnj z?7yUdtr@XX%)hU^>CU5-al*|na(DdOj48mm&)^cL-AQ!vjF z`C!zvW-G_8RSE}YH5c8Sr4aC&Bh+M?%fi$71=X|9y8pd!Yw@0q+s~S9SNguT{bpb3 zUQjE*3zX*9{42TD5ap<{sAjFlmWFcWCtbD8542=-AJq!3Xcl^J?^Yn%cdfw3^|YF( zbM1jgfkpqcK3m+dxi7w3Z85NV*$S#Wr(T^OR(axWRNE?r%K|w+7uIZaxDvKlglV1g zv+oNvTq=dOKKS5tVOp2dY|RzN!}(eA{NjL`fSON%HTy0$KHxZ|qMl*vB8$$VeV-bX zI4(Ix?zb&q!~b`{Cg+lm4xnfHAibA_WZe d$iK&a*+16UWodpS%#{HMJYD@<);T3K0RW!4Q+NOX literal 0 HcmV?d00001 diff --git a/node_modules/xlsx/legend.png b/node_modules/xlsx/legend.png new file mode 100644 index 0000000000000000000000000000000000000000..686a7518d665fdb2270508bed42fa7ca2e8af880 GIT binary patch literal 33608 zcmb4rbyQXD*DaxdQqn012pl@4Q%Vq}B?Y8YTImq!k`j<^5l}$7rMp7`=@b+R>A36M z-~Imh#vR`n_m1&~Lpb~F{XFYgYpyxx+F`0s6>x7;-bO(|!Bu=Ds}BF)hJR17FyOyk z#BFjYDECklWu-OU({|Ed8)$Z)h0uQR*9@b76Uu0;&`C%VrW2b*XT>QW#bJ}979U#9 zG|yES64!{bq2PC*zU)BD+@8s-Ey+}P@Td!bP;yjXq&%)T+`gFkQ*Yua+vHZunl~$uN$Li|pLQcy! zczAfsEG%+Htv;$|qy5{S-uPX!(ACkg>Op#4USd!eH&bOhUhlRY@`sU$iPw7UzO%D4 zHxJLZfdL#gHa6C0C86>0L{C2OFAWMVc(bf|KX)(noZ8v3!@#3{v^`ZyA?$pgl$7*v za}>Qw?^3CsgqC)=$?LdsnvBcPY`)QhTEum;+)3osPS4flIjzTT&4Moj4^Ql9u7ath zrNUQ>LF8Sf3OaOkcZZ~w!kmS`#;E%7CF2850TC|dQqZ;M&^70;?AN`ig zR~L76xVkuXUTVAf+s)az;yxqeW$wlP{{HH6XN2?bnFj;}y*)ke&@u6PLJ1i192T0L zH%I7thli7ne$PI(vie9&Ox#m#Kl{IbvcIahcXY(5R`9&xmEuCPkNHrVu=B>yUDW$r zT)X9`UheKun3d?p#A&AY%p|_`wl4r=y z&UXGaQAB8M|Gi9FK8lj@^XJbq`=2IlQbgQ7d0$^1&xmEns;a)TgCBeOz(a)eQPI*~ zckp*bQ8Dvb47@Y#jt)yrO>ypn4DU^8{=UAIhU#dvtss1$NXAHf$^W{xMYXx!)KR-Le^x`Bbw_nt#P zL+5=(pDn|)DEZvWHZybcURdXj!NDih4hx+0^n8{>2@v)+nfSMF$Hg)zgopNgRLku^ z-p_C**H_D7Qf+N*VZWNdSC2yFR!iT|GsH4_(5yA-+OC}5mo6z zN=&NsS%2A!_Kvo;hbTq5Uki@zRBc`QCSdg%-b-!`%fV{`cUcTgnd}cRS8w)wZX8hM&9Um-xo&s3ml2AJaOl&iQ$k1 zZN50n)uO7Jd_G5kpObPKDnm9YGN|LF_5K@hWGE|pW5MS*{Rn<@s>G;;1~#>=y}jyR zO+`i9_&AY|j}K(JM@^pp+~MG&BGYJpe+2A4;hj6Ja9*99oge0_@4-26KHOBZPhDMG z6Cd9&b#NGlRjr(cuQDCZ5QkhUqhDBCD`YX0cG@Grg+NH!xhE~*8cn% zf;$j$`$a7Ha?ZFt7#HQ@Z2QZwW_3lIt*NoiY&8euLWb9W=0=0HJ{zPUOT^EH*9TMj z4o#b~)YV?$=`{`VZ@-b+{xVUPX1qk8YteORp*FJ5GGG{nXdtaQf|nskPv=;-N5eAQvo z`qVL5tj)sCeuJ3c>SQIxpwT_{aS|tw`(NXi^Npt+0$l9u_Zb+_y}Zr|t*`&K<3lPz zcW`hB#=G11YqI$C@^~S$A^W%1!OUR^E|q}Uw>LMv|4nM&zklD@#N?s0H0qBZKL#=- zX~o6GApv#3M~V!aL?HVbLn@hT@yjeJVfXg-K7rCIjt_`!`EH;^BPZPhI| zxp{VW=6(G0wY$6fojZ4=8eaYG>F;kJ8j4OAeQjc6)2Be|(-B1_=;-J;^1f8}tHli0 zza%5y-U{=6$Jei!`S^&KnVI2uNyCc#sJ5pP5Dwo8&GN5Vb`jrjeJiTb#--Twl6Nc4GavD z#k~Y_<)i4u#HbUMXXRS@!4ZT!t?ws%$31q1-KPZ%0&BJz&%Rj7;PxC3;oi zMH+?bpAG61sy)(0+;r-k8OIBrm@apOp-hzOCqV%0{b|_UUrREw*^ZBkYpZoy;pXG> zTCYgFc_?c*oK8PBKF-6->-h__;8`*JVfo_pfFGi)qsil7-3boKo4~+pHC@@aP%d$B zjZzonIc%!V>L!bgT73Df$5!hqPq%w)`EafrN=i#Jw~{7DM&3P57a_QN_j07EX5KR* zG&I!DfK*((XmLl2cP#oUfOsqX5P&Z)|kKd3E0|tw|PfV~wJGu-tS!KVEfeIufSU z&9(wd454y|h$yhIkQoZDw2I2E7FqE`4pDKm_ETS9iLS1$FZJa4H2()W;wXQ)<>BE$ zOhVEG0MR|5F(bn78r`7YHEg!VK?BOKlG5$#W4~(!C^Sy5UKRLWo9elcv)ey)6X znBXUOEsoQ2$E}AlGEkDl;N&nrc#sHK>(6{sL~braBAYf73riS8hO>(ckAOgdrUNcme?G(UT{PaIl~p&;9%fh*T+T18Uk6Wo4X=;Y`cfYI`#? zvk}PNP|ABD#1F%5vR5*5h-_IbJHtsjIy+xjTlWH%*c!=3H#9U95)p|@NRTx!pcZtP zzb`793Se-;<^g1~Z>_B;a01}KDw&zxci9+Xl#s~S+_Zvq?P?7`x1OooD*l`i-QxeW zBtKa(p6P|HZGR9p+2(wc=<|BlrM^TqsN+ybSQbu7|T3Y^@ zt80hHwi?a3x!Zis32C+U$Bz`afQg-*G87#+2`}2--uhDiK_r79UFR_iB%toGF+zaI z!T7X8fU8o3U6|mJ3*{n6amcwBvuoZ;d4xRR;D`czqpqQG>(;F$2$uWI%;?$mBGV;6p_qa4Qx2T=?*C;m^O8{&tmxm_sehX^kko=m?hVYpE! zwSZOHAcN{w+fhK-LPB4MrY+~QL+dwh-eBS4u0bZ-0Hl7OpFe?!`DvMHH=doHouSkd zL-wFnwR_m^E0S&f=vpYEBfe+4Qa4n~Pjt7hYqg&tCQX_;IS3W+Cu)9nNyj!=8} zjJK$zsJQRYSJ4Fh^$~4VT+L)g)JFa@{BERI*61IlOKcc zrLD1JkQ;~G<*-)7pqN|Ze5Rw8u`f#)hK@J4A#sz~I7YmS+~p0C**j^n`o$1hhkYja zl<@jy5^v@^$hj4;G@eI0VQ}OWqN!g%%EqCUxTvEHeE9I;2~<K@ z_72L@41Mqhi}WkGGOJ>sv4lFuE<28q3n@bQ}p<`-e@@Gg!|+Z|Im^A$7D0r z_We-Gkp%(Do%zo9awrNC#}|0C5)c}uSlHMyvdAL9@ z92}Qjl&4a6v#{g_j7Ymvaoth00^TlfMCTqBSR+g#(OwZ3Y7y09%A!~M3y$D&dw%y-9ET z)B1}e-t3?qqHyNmc%`DIs=l=f9J4h$}Ze~--Y_`0C1Oce?70T~by#QI%s8&#O~ z#uav)Z2$}jg%0mN6BD!*TrC&$kkLGrP9>sc33S=%|Ht!PxbA-og`TMF!6JnIq@3Q8s zE5TGe9c6)cab$kzI`Bm7wP7=-)%IyUb@>p0b0eY7fmp3}NnVb1AJZ>OT1G*{Ihb#5 zh34u+;}M2W>7o0#CES`(MwRTqQ)AkQ1MWj{AG=4xQRdFrQQ6DZXckT zFkf!uM0pVKS}nLyR5iHF0qs-@V+4&GbE1{rn7hy50r_SqFZDdSrc}ytvxY(N0YZFR zXOSx5#bNPcez?{hkud^V@9*F6_^o>ABcfezEb2Ei`lFy!m*dLd>~*D{&uyS!{_P}V zEBW3d|4W@r+n{dH{#AKI^I<2s=^v*Um$Y0~tsPFBmVx>k z7K7f%8$k~uzl$PiT>7v)T>DKGzdz2$ijy8M*^QbFM77fd9cbd2o_Ma;!kQS=IxabE z{4CO7#-kB?1oaCA66^FI(F@*MOz&u3Y9AtUtVnqR1?s=p+;_{Q2)3lNB*TsI&@xF2 zzv9R_k_kGjhiDWc(DZWHe;C}P%+U#AdHNN-k9Wv3OL!42O(un*hLv+#ytPSaSGU#C z*wV?vL2NhJ9mDXGj@Ni9&EX=0#4@|3B7KB>o43wHX=_8urA_7@foFo56bAV1)RD5CcOXbV6sxyDD~e z>}qOijmPs|!_*4^^I#EdzYq};Cc|10F)82U=6;uukigvKFyAN)75;5-Fk0Wb6JT7f zHM{Q+4wWL|2x|X&e?CWCEVM2%NiWR&XI3eRGK-C7dR_;ufGrbN-Pnf_^t^4(#WizSmO?OTtTM4CO`LvGQ=aGJ0fA#GzRQfX+6Hq)%is&H~3ZV z?-rNU{GuWjpw(tp81LS_TV7Mc%+9{EtNn|j2gL%-Q0f6OW{9AwXO)gIo0Yx#GqY zqNorDjwvQA9qT60;*eN9f0+}o5TGW72p=utEn7Vm>?iVIF&Sh`y7xxs+wB`K1iqeD zeDCp1ZpV5kI^*<)$Y6~%5r;LqTAj$AGAciSaWLY8OL?2z*rQyw=cqbE&SHCcOb<|# zNq8fohy>$mSqXebEekxEEIrdu7wg;I-bmi+BGJyrVRim|Wc3FwNyfTNxW}?L6 zLHcIL4W>Ivh%WN4$(>v!_JDq?Ea%>agp31m(?Yy3KX2&uwkzfqww(0FtW9hluT4mT;Uk}F4P2{id}nJ$@RjM6n%FK2ar1guA< z{F78dVP7!}YwI*A0=@Gz>OXmTcizA6QY9k7!NomwpW$CW-U-v)iy4aEo=)L6Mll>3 zqK=Gaa^F(-_RkwoCJlM}_q-?8d-Mx!N(jCSx_hzEu9dNulZUUumi2-(g?y$0#itf_ z!|=z$t_3S0v>4=naTmDX5NzfSyM1;E=8Lr8w-k~QTJknH;W3i;=~c*;ST-CJ$9YL* zY;4=Qcr#GAeDTI)gEn)yF8xy>C!W9bv&+@7+X?-H#ex((?l+1pOV^#h_VdTsJ;hz1 z)bTYA)BjABMD~0g1(Ulwt?^K7$c2W=F7!Sjtv8BJzh3=VqK&30S%Z}fRdof4^rQQ+ zpEP~`*t=Ywxs?JnVmod1y=+NiWoMx!Gx~0#M{__xz^m(=a1u6NlMXD%^+*D_xw#n_ z2eAj@z^5Gj`5B><-!?Hp4A>gF!%WKE-MF{=a(bLuv@42epTE^A zkw8n>vh0P|`h4+5W2M$v68)4$n#rBO$ejfl7!i`enfApK>F<2GuMo%l$vwRn4DZk)i^mCI?AluYkTD6dBUYXNfWF0xP2bKo6n3*AF8C8L-S9l zlcl1!i^_q$e3iIRr(2|p_o%LBFtELpkcen>e4Ncmekd2g%4*V=z@k_F#`#R@=~F!D zCQnXJN1>khUhF9}pRQ9CD5pFG+A|}$0Jwh0n5*mSKuLtBr2N4CNxx1Q&SuO<%o8cM zMfW-f$ALC2_wU_4&#lb_;v7nWJl4gRRy|EL;(trEW6+zt4m{k2c0+>Wbn18kzP-Ry z^;nRQ|FmJ;z*~cS`8vB&>zTl%B!V9~IU_4XD`q`eF;7*j4dFBxz~x zi|vUxH*yA^3}*{H!(nZHjc5LS2h{+?n@ML%ucKK}mw`=a1DKEbzv ziAWI)x0962z3StFmv!}_xsI9VC)0bDyV*^1f1AE-ct6DxCRXdPe`)JAfle(&>jR-~ zYrqhW5c}JThONv^m*%Lh=tK9Lp^u^t*~!}4o=TyrFplt`Kaym;Jc_u zoQa)sCf;44*XuaPY3YjS7}K8zua-?k^s{gVzp6DBFrf8{mo6fRs_lB9%>4~d)J8QB+dwLJG^_BLSn`7@5 z6_u%-oxw6z7c-K_`)t%Q1YFFh6+e*gqrgrx(|DZTXJ=>U=H(ru=}rdPVDi(jUk`q` zw(5;O?i$HHvcF_meBs%*7MT+ai}4(9Y;xO?_cy%Wura%j?eB+L^Tlw@QTB!mn|1-U zv0)J*>FKE^Ds^c|ZAS7VL>3D|ii<76BGda}$4nJ}MGbRXPbig?*S+~MLh)8!mauTd zb`_sL3*xaLl|Mn}T0Od*>}fz!b~CVE{~oy$X{V{nn)W=cNca;I)wzS&+2s~a@&gnvS}%EzsO6Jy zE8dO!roPnw7-qZeEGs6>B5f(Zia83WYr7UqcNiK-dZ({V^*dSrZaZISQR&9JTizCK z7WZS=x0Fxrjx>KR1vI`Wl6yp#o85L68qv;N9eWE?Q}4fj*ZJ_k_9#i9HUlUrAgKy~ zG&%h9^SnsGP~w(`h6c!h?kl)!a$iA}3mJ;>F*MuTNadbXdpqMVne+@zEp7LwKVRqY zvG+E|hr!I4-FI{e)6*OHL_~jPf9#D9ORlJw)6@CuZ%wGXZCN5J@)Liuj3du`*7oNnc3s&o%cW0@7;`}qo~k6 z>SOwG|EBuAS+i8?c+PY7omtcwbuYxWiR3DZfI~`%HH3UY|{?yiCw-nB8dIHUl_4az1%`iZ!5RzxOaUVvHa8> zy2I2VPPMt44iP=91a$_~zQsZQvF1y1d_%xQ?6 zP+Yq#mM2AW9GuRvLd%sd-!o5Bjw%apYbAG!4e)f+UXzUp0Q3Yw*4W%UsIE@9J7PoS zI>AzWpYWcDh@PmC1c({*Z{p*}U0Awvp-;yb!#|XDx<04KFZ?H!!rYZJU__OrW1yjC zaO*f12XjH*gJ|Okv1y{^-u{Fdaj`vS!UG+_gi|MsK7HY#PU}Cid&bUeoZ}C(i2C|b zx79q)L^_Xi-LAU-%L}lcD|D?b%ftCw!6_&CU`}uKhdYbOZ)MBF5t*QHfyyP)8t$&- zPnv7w-DO>r%xR(Y;jEg{fx-0?jLF8-PI&}TkLbhPmw_YWbX|hhu7gRQm(V}4B#&ay zN(vn?z?~5CRutY|GrjSaxi(2$>J%B+{b^abHuYGgLxf|OW1({TRj#&QVjD{1lR`0SK-ksXi ztM{aDG>yE1=06*bONo9>w1m%@BWM{(zR8Y2`~uO+466e|+uYn-2F(^NFNV2Kg`^VK z54^SXiF8QE_G(i+f?2gB^YSUouN1a;X0t*IY@Ix{Ro|ZDg`ZGm*Al3w$#W1Zgq(No zg%B^yhA#_GVsz&JB@921XeCXUZ+f6K+)SerQE_z6YFOZ1)cmbj_X(-)TcRPnSMMI) z_E=Sm(3@Kq5Uf*V7J;6dSy)lUGftk8tnLx1?#Yq@T~LYXT|@UJfAsSoF%oC4+1M!1 zZk(9JjNN+!c;&+=PS#s;X%F2jJhzVu;-4LZ;?p{?xkN@#(Q!_q77UddkSzo>BlYeFzS_!CqPrQMtv|GaZbOSGZMTR!v#Vf3Ewcf&$ zAH9gC19ileK$AB#{QpK6LhnIX2Chp$G)e)x9$^1i zjGDzj8uMlG2&~AMAu*@%B9sfYNvN@!S4d(0Bj;hyL1Iqsg(m0Sg_y0|k>7IiQ_zie z;(B`iI$`NB@Wp=L@;QlW@YEin$%;;CclK6i?l1CisuwB=^FN8!x{dkzs6@VmYwt^J z%QB56HK(mm|EVRCzA+?}8zYfa`_F`@-o^l7F<6i6|kx%qf@Yz!D1Q-x=L zr2R|KM_r8(?*9NGvuc5mFM5XPXQ@M=9m){c;S#S9AeziL{pvAkxSkf0ginwDSoW5p zxZRL7U_DH-;1EzTf6f`6y=CH*V#xT#RX@pf?AHBv={tGUYh@jTM&8y+8lRm>a4F|k z#1BU|uoOb+f&*~wCmA%a>05B4`$ySzP}=H^f4IBTN^bf)Rrt7W_~k2&%rpK1p6R-w z;R|IM%8Hahv$$TLKYYV zz1y#eC9sY7(4C62DX7WDz2Qwdlqp}FlI6KqmwgzSMec!-+junfPBMM>IQy^-|LI9x zF#Xvp#Jr-HKUer}x-^fFj~;b1!CD9%QGWO3ndF$yWI{OZ_}HTrECnF%K+7AOad(j=J zYEzX3j2v6amIFL~ouw#XIj{ho;Nt3h7X|3_h=M1nNM%!kaoxxgbOI2sOe`%!l=4kL zK?k)-BEBCw7V7YFYe}UTotx&h7sd)9!ia|wQOlawi=A!ph-b5ySM{&MGkIjTJOr~& z=nF|C8_>-^Qitp_{57`vNoGD?IVM|lXWLI*3N=Ki_Ei?0N=%5aO;U`;6B z@LJx8cAH!sceX6@i~+Ss^_o+c8X1zl3yr9K-qZADzg)G*XUA&qji^=GzeRDV<#TCrl~HWY^{2Fia!i^n6k)Rkr(cnaOWE6?uz@ zX(TtqL@1Ttnh<2O62qo5+WZFVaVDezv#B5`@tO6!D`Zx^-Sg1t zKs3mNqB&w&_Qeeyh@LJ4>2sNc>=H`zTk8RqH8=aX>qPn@(1s8$6NN3xCpIj6CQs;s z_7gy5aqgAF7gy%-ne6nWo2z$=P?0!&J1lvfhIdy4h1=)M6@=p8mKI5$^P|q5%^$BS zLEl{69L-G=a(Z)qysMEbj|*-m84$q9`K|7NR&D|UI9G)TSI{{^eB(K>v~BqHdd^|} zdjx%zZ23v^-lmz-19SP3Yg;g)jW)b?05LtcY6MtIUidN)^c`QlS_dyd0odMj^z}`x ztraaSzycHw;1X+xZKS|FrT$b+jQ|+e#TdyeV=z)MM%UDO9dnM3j?RIl zDlLur@bC~s{#>O**4o18sSV@u6X1 z-=?RN;Azxg?U?_RYl4PtWrYAg!}`vTuZ{nv^pTC`Z4y>7f#~S5h^Hmyk^MB{1z{Bc1QKh4#c*RNokGa*p4KN#kIww*J(ZELsz@+H zf;6@QHzO-AAD5949T0%Z#KiP{c6Pkc!v%ncmQ5P9>xIjIe4DEEPl=|oWx7pA!?Z%8 zdEflMdOClNsL6xC|Nrw5wEE-SOl9y|fwl#T|MkIzO4vWJ2Xu6FBw#hTZIfP}A76J{ zZ>+7Ag9E8hA}KYsAAFU%6=t`#k6Y%)&oWj^{g zSWCbW0k2w?#@fIo3U*UNk$l6Fy1F_L>BaUzf1fu}>ThlJ2bX9P*4MJKMNq8$8ocqr z$n*jv7Zo3*AE%?Ms{(o*pyoWl(BSCo45pE^mp|*pk6mMAlwtJ zz#gT5j?Zb>h%{Gb*w)3x$0PM?@RQ|#{J6>04VJ6Dg>dbHSoINKX&S053#10f9BxeM}Fgt@x3y zPGPU35^zZ*)|VaEzkVJA ziUUDx$XHBdB+}HUgmmTEf%1s_H77T>L|9L&ZCB78_x}A$gwv|=wfp^b z%j}tSJ=F2|y_N2Mpebmm1O)`1iMai`4^qzlziFd>P{3tn!Hpz?M=f-ZK|b;wSQ7iP zWkT-L(?0~EgKK_%et%p=(t5ns1Itt{M*R%d%xD7B)LBi>xlFg($n+0{nE5vXl?>lN(#u5)xS&aykH7EU5?DQdClcP8s&I7XoVyoOsS)8M8lw1x8u{(J^rD07<(w zRhs&7(gu8gq<(&Wdj|*c@ByT+5$W#Q?<6zoIX&1|`#LNU4^||}azpSqQ~~|`<#SnLjSLLZCW^IH zG+7hb^{bUZ8fFH+@mQ(8U>*2VW!AvKnhcDPc*RbP%{GYOVWp*|k#|L(AHy;l8)r{ob-Sj!_+Q#4Q}01UQBNWtjYLj!}tf21HbXXE_EYWMPK!RYqn|$Vi>vnDSVdEcC*!`vYsH;FR!mNfzNTK%-Xp;kEVkHtoj{PLQIKSTqWHAj8PXnnBI3aNSZz znvWr?^urS)_c|vxS56klJ7w?$Dy<4y4pCF^nuUU;P*=e2`#ng0^z=xFB!#%=p=tkD zyB`&V)=x6Tbf0}TU;)20GU_3DB*Hx_X=+ZG&Sq7r{n{uQ8X7Wa@+9#GFCLg-dU|_N zTj%De!8G(VO-OB7C=||w%k`Dduc^|0fZvbvHWnA9;P4b_6~7l403#k8SU&q1e$a)i z$MSALD1L*FdwF@G9RB-4T*F%+DEGr5$s-4IpZp{~k= z;H^PiQwux4h5tzk{DjUu@ncASKBGOT6EicEqN1W0xRf2|yDc%`{I1LgSP_CxyB@*S zd=G&LWl)IzyZxnQELQ;^Oz^i6T?~mz|Gx7=#7poG-^9Yl_cPPi*VD5Z{)uV@Hcv?M z>yRqU*ZLB{p`XL5G*8)@MJjvrX20I=pP?(CF2**@7@Vcf^Y!ZHRE)8^Ke)4}?a zi;D{#s2fvLQ=oxKR*Qigk(`oZ-QLvH^rOas_RpU`$o5-s-aSyi<|Pj-3_zTNj^W}; z)nA=@(4BG`)V6|k45{D1%7cLo@Iz%+GCVaAIeDmjZgyGOJ0z4Vdm#hAJ_s&E8YLH4 zZ=|OkU=Qj@mNa_x%b!XhXlGqWfiXEgEv@7-yVm=Z7wPV_pRES;Q0BBEj{?aK!UGHH z6Y|!N|2)UQrx}1e2V5}z+ND2uyNK@IeNMmQv{emAM^+sA<=%mT3B&WVGeSzrPfeWA zKZ0KljOkWUj`H&Ik+hN-AV8soFVZr0VY>dAO92O(hNh-07`-4Z(8E4}txTe#^!LtA zt?#9XO_g41CU91;3xJIFmqKVEw#ndIP63DOG`!*fpAcj8=gP{;8za7)HdP>B99rS;BldR~t}MBM1Rx z4tWdNWX#}YX&!uPII^U>e_z(%`Ezryr9wuBItLDX5@3kJ!ovw+gaDZ}!6Faw8HO@Ki-52@aE@nOWY^Jd{l2=z-|&)p5%;SVHx{ zq5rH+sLEkM0$J^lNe*TZ@(r6jkv=a10?6p@JCYHZZp@ z|M|lS;SO^NIq4ROuUtjOyf0L0hU(6XC&HJb*^J_C6gf9Ul zWgm0^b;(75Az3YXW>r@b#thzcO(kl*p)I{)Pkwyqi<*1hGJz&-PBn!6$zH+2uq+Ucrc^m2d zLw3rLLBKlPk4ft-1!oKl|DGoE;D^@R^SL_RDA6fLgRIzmd8F@q`A-{;i;TCoSRf|; zI)Ihr4f=>S#*MD1nQeDmf_)40&- zIjW%B16`{`Cw5{&Q)){qhE_5<6b3M&!9Q}myMVa}-UpbzIHIjii|)=Q+Qx3{?G1bT z_ATKH*f`Bknqe>%gaU(DW##2`%*@C^3uIY?tcEmB!n6b`-~da&!HwsC8ekfO3|a%E zMLT&HovZ;lpaMXy8!U>I;`4q(Dc}?Cr}ewYZt_hNR6YLl6WP!}9)%PcmzdZI`K9*N zZ%P6J0&+@9Bpd}G)n*Bu=`fW_Hv{sh@qm}0{`KxtW8-^Z-5m+`1EW1M?qIA$4N8?> zrBy&fgD58_C#b(=kRyOMP>_;BiDy0t z#2j)!4G#|wxecJV!CV8a%&fUWUDQkYx{&HnPb>v5$uF-*gpO-fd;@+lZ z=L;K{QkS62AWf-SWNTIO|Cto5e^K^7&Jh0J{buyVms_lfx53d5N4C1U8cY@_;gb7- z*V~BM%?`aT5Tl^!cmwwarq@T09^GSOivaWl0S17geR7fns><(IxnLyr{-jbKJr)C< z_gknbXqTpHMQd1+6lE|Q*boBN8$`%5W1Ll2*C@EpAiyv&d7BI0e)8yfn zAP(O1P8br~?`6*9hUO6FA%#5l?*n0w1L#;UAVb3E!@GBPB+fP&0O37`cJ;Ac+U31; zKyKw;$1efcCPN2R{4qM(FBClD3DD!M52Zf_KqBmY!VOgb8bzn09bNFWhr+JD>@~5n z3I%2w_K%!`;)R2QN+1Sqt>3i-e1grXq!ZHO_bOX5XfGz35QbeN5QXva@fynmiI#K% z0`CD~t}HJ4hlF54ySWUFdE4M%6o8Hj-%C$1F|p0Dd~8@c=%L^_Lc_!9;UmBY$AV7? zImiNl1^MhJf0u-Wgi!8~kRV5*w!W7mOT7odHH?i-NDOkiXm8U$NgPfsW? zGAAh+F=1gZfK0E1nGI-g;~|?v*ufx=F>oQ8Fb@P2kfht6Q)87v7|N=)`_UFg#Qb+} zkEPsi91cAQP!<67{94|aN5Ue(I1N58AD^O%ih_zt3`B>rvT~&#Ox(N$L1+d1Z=4lgfAPO-wK7R^7N@7z+1$T7F zLQ5bGx3a#z9*PCA&H$;uN-qkY2u7O#WM+?A^$ZO$adF|pkU&`2Enttn!8`!Kk5RC= z+fy~O8-CD%j5!4B8x|UR4{ZK$(ckrpfnERM(qJ4{(a?~_!op(aCu(kPE)>O)3^5BR zD3Fg8pFGJ2w(4+uIwnKhtNC4p5hMthJspAeo=|}oZALuQX8QAGPwnaHX>xKh*c$W1 zCH9>TcYefoT@TNvbWc`ZUSGQnS!WO{KEk3iixiTh-zpe$!+!pmjxWi!UOU)qGdw1x zKi_dMMbSByI6JPKUT(C+Lj>2-^ZH7N_MFY_1E06=#;JRnLVDA*;daxM?rzhu-geXc zu7uCx`Z@**oE6gWhzK6jE*u!K5>R?h&%nTA-bZ`^1cvf+@C%{AC=`HU0VRq|LK>QA zz@7f>OZR}41U|GI$PAQ67A0Q{>fRs&CPS=FEh!m53Uc}knhgdfCJYJ+3Iq#_G{o&l z!4oQA-g2RL9~l`jJ|mCleCXjJd;<;j#9IO|VC%}Bs=E3cD16YT(s6R)K@x`1DH-@3 zm_f#Z`v8vm7KDX76pm4VPV&Xwh5SE6Y@a4VC1Z~h*5YW;Zl~&M*dlHM$#HdZcNdOBQ zCXC_OYhvfYTEpNThR@mIH^4-rfajpwyaD`FAoP+eR63MUnBsp~hK1fCAP4{g0SLRc zzP{VJ3Nc-PEU|N`m3s`eS=K)x1XzpJGy^3O<3cL2mt}iToaIyg+O+I zaaFnp4@lq!6u=;6Y-$<^tdNY65iN&a4$L?NU4E+4WT!xMQ&CL=pZAm~u zaSPgRh}W-beMM5H!Fg;fEZMNXv4Mf;|29Vh!BWx#gzqhmg#^gxV=y_=Gd327ob3Us znV5)3qfiV6cEkGDp#RuKz~Kg(pr@_v&8@0hXf>GT7B|=pYTrRh4;|i!&&Z$wzHt=p z3r4sc8I}L#1%M#S zGbAD*k!!iW5z8YU3&DypjsU^f39?8~j7Hjxc&BbbPnfoDYC z9;KMOV^xcrj1{r@U~g|WV8VB$r5w6CIwSBXEP{eHJQbhGfScp@Jhb{C;UiLN)Y3dP z4Kuo$SoTJGdP*?Q3N1bzxOhl)_4SEjx*6zm_V=Cj06M|piUlN-lA4NK9jFs!59h|A zA>`%e&Vs&Lkz*RB?d7AX6=h+6jT{4ja?RtkEXzdy+6^Fe)f)yoSbK{!F%ShV z0A>t)$mh45fs-Hus5?bW>G9*(ckh52Dq-zs=i)+wKfd{Sz|N6TQ9M>7S;73$rQ{;6 z2pk-o#oxbiQ9yu^2QUed@kx0BdVt&ipo5Zq_z(@H6<&-0NHmc;#MZ`U8CC|R^*by2 z$M}`~VUM#z7APzMfG%^NqzWM60X+G2C$smbwxJ>wVDxDKR?){O4Id{;3K zbErVAs%mJozr96N229zyB$LGd_*CBgI+-Ilg8A62;$m#hqzIrTkT0zOFR^;M zb&c&b9^~9W2!Ez0AKt=lECGTdX;b%BGBKftXvi)s41w`MtQ&7cs`5dz0p6Bi$a$=cewI>36Qkmtz- zUn1Xhfr5=4p%mR-RarSws6vY(l`3GLe2d23{Ep3p5OCL4eFj;TwF6yU7CE(-$QwkL(U570Bf(GkeH}N zcL{-FlduHuDp_4#ez?2P@`cA<FKu5eV-R8zW;z!L&beB zYM)uFq>IRzl-EA|0mSj@%8Cr!E6LbY!EfaE!OZ!6`Wz@!Ga$Z|t^v0r3JVeez}UuT zaARV-my(neO% z1h~r|PfkpfL2ri=7itaNUKjkHEp zg5vr$CnPwJ85p1rY+st#sw#s3iu@+0t4o2RIPd{Rz>#JZr0BW2`pGC8UL_$4FI$0^ z&2)9C8~vaP{ACsvjy5;v|M%~wVN48+H|)X@H+UlS^z%_$L7jxt773+`TGuT?z%9_2vF5*aacKusUj_rMO5f4}Q6Mh`)!!7zxf9sfrL8Sp z(~ukfP-<4r{;8&k+yvinB<0Q8S`;>IwC!p1^JDZRPSkJTS`Rj)oOxCCZijYO*(QBL zu-}+(M19Ydv`TabML8LzG0|JDZqGFw`)vdU2C^y7 zPj5q!;2n~bY^peIeb7H86Q2@|@;hsFB1X5o}RJ0x5*Z?fg4HS6Yg{I9#O!_e_ zIq1UepyZ4+dA&xOkUY>}^7j^$+S=E1#>pC2Xmku&)2MTF5MSKCKD5~Ki%%> zM@Pp%v7bfj>yvtfHPRqB((EHy=|CI3ylnFE(cWP+L+DKcz0{a6=L*x1uKuJnjY=i~Jx_!G1(k_q106DS>QR86(fDB4ZBr$AsS7SCeFV{h^^-JBIH$-_P z!VrT=Orj{FqZYfWp~tG$wePHG$ry+5dy&2BV3;9Wr=`W{0qZRjg68Sj`g@j;5g*63 zqa*Bf>&8KLetu_ijiSagypTYkM3-UG`WuK;DJ!6-y@g}~gmrd7K`0*z<{-BW7@(Le!mDt#{8u_7We?fcy-oHlh@82cex54{au$+KjvS2$Q za~Dsszl4Q_cU**k_yK{Xrm2afsZF-V@{xlSV8*zKf~>uyoCcwwwrUlZpauBrN&=S` z{QensqaPQ%O2a?w)=0B>RxU%`)<;;__`&xG(h!C^MW0pEtmBxz0h7xGqW6~z(%Met zvH_CKqr}809QtT6w2w0iBqZX>Z5v*-elKqwNb&!~ij9d+NiQr+K`Y^H{0o7bt%?PT zM4E`(ZCD9d7Fhs=nwpyMhKL}5M+HOBbroyP`keel1-0EgZOn(ASzP=see6g1uc}bv zpxV-jiZ(p`azI;@RPpN190dS+$Wm{LimaoyYV3ZXf$V|O3UwKYWxvnNC!&HmPru zib7FDQFhoUgb0NcqQR6YnhYt4GHz+mTqrZ!kYu)1rb2o@*YmvZ`mOc;@&5BZYd>qT zci+DEecjh}p2v9{$9di?UU*fb&9rH~kcg|h3(>y%z^Lq^I=c`6Q~LbBMxGpRYun;= zLFNAW9tcbN#`blgGDj}lmz2d0uz{7J6c*wkwaAoIvsQMRphQ1^c+`tUeSPO-FCfQ8 zHoU>0L7gW|m_Ri(aM-X?K<&wz!8mzB6P%OYK4@w&v43=K_u~=^g#`-|Zmd6l&wSG+ z$0zpa45RXHxSq($%v90Uje(IP(oUNpSS>Mi;4+bGE~ZdX2#?n7PCi>@rAOcE^ua$qKrN&qQiXUsWLvL28aFPi)f(k7?@WZc zlH787^}N%69HauOtf>ijZ*_Rw`ibE5kY0(=j8?>+D-Xr_101+Gc~o7gM$OZVXl@Q+kf!j%*Y&% zkT+u;#*a_l@N@=r8O+XY2Y+#%6ciNlR`(24R_L+k@3(6w;(w{l@E8o2kb-U^QW?s* z&dj8vN9SezF%{J!m7z+Kg7@7QEI4`O`}6njV;Jyp=fZ%y6%{8Ej4sB`s2^*%NIrSk zqG>aXT@u5=hNA+9FS#-_QTz=~;Tiv?+WYQ#F^9W93d?Dm#r@h}S=oA=(IS8b)XQ-bDJ2+@o&K$eEo?&_E zh36-c1qBtvxnpqLH6%il_m^6|<>cl4?q+&L$HZJ?ejEzNuRObi2^dht0XuR;Ut9xp zihv~6*48`su6&ScS-$8PuUbvvejGQ9CbN;!}T_+`3MUalJ zA08LG=G(u8PoCtvw=CMV@(|2#F*-jvn-~%fw~chSmAE|8{%eS#zP^NAU&@jvA2|}v z@m~L_`(6A6wFt^E;@u!=Xfu(cHs1o}vQr)n6_IlP!>4 zMGqcmgS&QKn)}*0sIgK57~qFLMeuhB^f!;su+w?0c#AIzZhmg}`t@t;ern0^Os|=@ zg4gJ&{~^KI5tL%ST_vDloYBPDciiGcQ;o$ zHhdHo<_LI}vyRzCnaNRYiw{j(6B=621fJ1rz7D}|9Msz6$4>0bqbVWe^v=tqz(8{m zMJmtecrrkRm+RcdSk<) z*^Ts-r?7y}mR^J-SiCe!#`WLFrhql3>)0^$25vp7yxj5hgTGjWpwYTefz}QVikB{3 zf;akud{8(ir(oV$gWW1YmIEhw;NAmSN!-F0Yv+E~Vf4}m+1CP@kDE@t1W4&@$tR@N{&qHbrm zK>!^;e*6eT3?NH!|EMM1DXIb&F0}RW>C@QQ2yPrWbf_KrEJAo(Vq!G9pvYe^uA)8# z3xV-{mn@k*+&S%gOG&%JwvssvLYok}YuVVg)I|;ZPi%o#$E&t*oesxbbS^jaRlHZn77Y zvNe0~2<1NNsJMB|jBOeJZp|MY`?KS!zKW92JQ3M7$Vek36?)GJL?g1>$&p%&z+&Q- z`-h3UP{;%q!8vhra}z8lhf6TexL-RFu8R?}^1Y0rhZj1euI}GIeaY$_wnsCc4wQ|M zAoAR-tu17%l~DU6YKjZ-dntA9Jbu-x(P*+L+={t>Jy4@&8901+6fO&xxcH@VNMenWF-!^;n(#Zh;?nWV%&x!!xU)_$ z+0jaDyw?xT4)}CwCb)_OIwCt99veW{bnkdV%xc3acRz-+j0dek)d&X;t5=T^q`IP_ zqVSr%y?-SwO%4w>vW+$8j*?tpP(Cb!PE&O7w`KW3L;Wq(_nlei05E+HC+3pu1GqMgcV-Tngu%O=e%j#B?p)9c`^|O)XtrUH$CYGq<_beYBq%n+LRCcXD(r zph%5Bcrd1}ZgOcXQq)LJL}K}$A;D3G4UeQpGtK?O283PyaRk@5yUe~bm2u6ig{QW8 zeoy~O6Wh|28(h2s%3CMK4LaFX`)OzMfZYZSzmNa#$I5qkY>xRT_y6^wyY^zR0?I|( z!#QDR$!--7kEsSO4_N#8wW^q8M}#~$ZoMAINfM5tb9<1O3|HEAZ|_m4$BBh8{09sH z+wBLhX8;nEU1rNnWD3Zq(`$dMz_n8F_%Sr|`vM4ecTdl|f#$cb0gamAt`^+l+x$RA zrk0i^kgEA{{&}gV+M8z_ao_!=aHHaVJX?$yj6ySi&Zh-MA~`bY@Ys;8mW(;_qO+!t zr0ID{7f9VsP=x4 zOS?xddE$Zq;$)<`Z4l$WqNBMa+p^fc$0*xxQmixZFNX0}uQ8iWt~#HWm({Y0ulMry z_B44#D(I)S#c_xx1JSfDUcS8Z?AZ~aYu4-}W$)g-n|Pr*l%Z6FqQ)05Zqis>@$lh( zp>^7SWe}RVnOQQqkC=3JAn`5QG2=Z|hxjV8-EyYLE?u!=p8w$C!v{D!J1ckV)_?5b z;d!T^!#wml{$4DVQvT*b81Pd^0lrgUNmW&s{b~royr{0HH_PBEmZ&<8kB~i>u|`|y zK=nF+`0H^UZIdFOew;#fcf!dKXR@9f5}f~q{J;M`h@x)Ke7I!Tai=Su-j|Q2rwhR= zknVm9Jd_iV^9hklgM#!yp32?3&ueMT9e39*2@BYM^8n=s_wU~X+79(7J<6u>7@{fW z{+8F)=G4XNsjEvdYowBB1aa?kW%X|6xy^?yl1e`lqt4*+0NZ(AUH8X_`#Bq#+aT1G z%Bm`40(jOJA3x4c=1DnVvy)263jI8W5gt(xQwg2s%=>zA`s~?M&cftr(~b?8lynmi z^%}1AGwN+Eh$xWbKzOl{N+CJ~L1>dK^c`e!XBTaRI&j^fF+tBH+=7a#)9!YprRp9v z4b6!oy_$F}DTYiU|##qu44s^(iQFmqQ{SMU0+V>xpB z(aghR<)2(#KZ$$lzi{EgtvhxY8>WDFYFV_3l9I^(bXPPky{O)|?<9N!e*ebdeauBb zdkDvkELMjefJ4R0f6=0vf7-;%WxDRKH7*r`40vdga7yaJV9!aalS;8!>%$nZ50b$J zh6z?)=rXo~y2ZSt{H2Ymp@PlB}Q-r{d z1t()yd|5;M$&(9rzgpLU-5(D4Q#+3-7cOcHvpa`+o!RsoqQgWCI0l%Owr<&CU|4Zr z3bw=BD;}R)G$S(KP6|&VWw7ZnFy*DCjmoJn`u>>f({Oef9=> zowGaoj??2@NF+F~gi<@>++T&@;O5V7rUd?1LJDMLk;rrJbai!A0KsJ95i;@ENyq^T zd=wnX?J1zjm9cNCX8u5~)rX`YoCp$Hgnf(zIMih%aqye~S+mBj+U9Z~X0YzuA_w3o z%x688Ebxmp^GtWs*>BNbe+9j}I}{bhO!XrKmS~>H^V!bt2H+|;3S|WYB)qyz(zx}Q z?0Vuo7}1_{s%41R89BPqeRHPc*WAqE{YpPcfRD}r`zfAq!{p(qtuouUZ?A`KhT%#9 z#R%wqX~l=FJXf>%6l`F$9l5y{q|6>XPr=A?0jvdi5}wQU^}BcX25v;pC1h`g1YtO5 z=Z>GBdXO6BBCNx)`uLT{830*}Sz8$iy;Fi(6q8zE8|vXeTxLNyVMc-WQMlzUiaj<( zacQXnp-9YE4F2-ggV?|ZGNgczBq}|u^FM$7d>M%af=z)1n(*c3?c15bHZIeqoiCER z;UIq^V=+(Q0{eBRC+Lf!qni2kWz*bjG&D3+RH;5j7-grYNAf65Ro}xOrd5{134qIK zW|WnXr-BjfAmfW~-c&)L>LiGBU&6rYbLZ^&JFA733^>G*a-D6q^Mo*rqrX`Nce(VJ&~J`PQ9>gEJw5C$ndW*9Nv= z1G(bPFVF3fGv@|~D2PX=5QdU_;OE2>MidA_ln+s*96C zJf_2A*J46a3JD3xUGh{<6!RdbLjRYmUH^|4pmC}D^y$&;=((7!MIq8(+j!!^Xhuc& zl0P7&WhFm{*vs=c#^n!o{0{&Sl;HS^OKzO)2KR6*lXof)|wWeqnt z_S~(=^TzCIc$YAQZ4Xn;HxT5Nd;0Bt5y0M2(G}kmx-wR3}-%%u-rHU$j1vx7|c+=OQ zH+JmU-7m<3^7{LH`MpKhr4xSw;HNDLC7&}%PfsbSF+>oJp595eBA7I z%ho9bJGhOj=d|*Su`Yr5Ge|*214Ojx4GD0SL?3qmi;)#B@ z$iXLbt+qx-ANNoHa&hMH+4-j-_lY<8 zdRc=~jq?Wuv_BDC5I!;!T?XyII!fp;+lFTblU-_pygR$CE^}GNnV%VzX_GuWJTe+< zUwL{Tt_mP@LH5rZ{(+J!hz(3n$1}hlM3@T-2`S+yzk3*C zzF>=smremwG@FD*hXE+3g=WS`+zh|IzZ;IXyf+&1>C>l=n;N8LWo@T%Z!R{En|JQm zL4u3^AJp)<56%SeZ-l3WF{Qrq<|%MJLcw#JXlZGQ3hR+@f@4b?u@LeEi_HT>SwCcp zPpba;^T~cGua{jEGau*~@P(uhOq75R@G|33i?K$%W^gcIPen(k3x_2}XB4!}@&XRG z8J?1+wlL&`QFc?Rtb2Nyws#1}i*S;3)g7%u)64OoVg38d!ysfgS^SvY4^t=Ge={Cj z(g2ig$Jz2-d7V|aNa;>4=Kijp8)*JZG46`OD780l-jw4W3yLYO4_klA);~=AsNiW% ze7;oG&}{PlpE!e5gYqFcI$Qd#Yn6c@l;R`72f2aEdq(-FW$s^oPt&!uL+Om!LZit@ z8sJSq#PMsx_wVnGe+3TeTb|v{=5gUJUI(JjoG~XfnZAyp&$ur~|J|8rHPbnIAD zS>jKUu(j}*rvSYq;WVB2V!MQXy?N`FErm6_6GQf80X!ya)dn!IpKvCo{NW;NNdJR}6TtO1G*%PUB z%4q9*Mi)IRC`eWZhhvj}!TkxB1`@LVfB{iBmi&nLLfzb1irXH&Rk6EnT$bYc9%19N z)jMXlQ0997aQ@C~QAP$|{6{&ym6l;^Vst7c^W8z&Fs^uJMzqtO!yA86ltVRp^#WG6 zPc6Kf5VK@&_E-O*!-toFUgok^ za*nVIrcAlDq~#6XTOrr(+NDk_$T`n@1RQHB+s;*@Nzss(5>PhCMirmft1AK_b%@Z) z0U+XeOM>Xs6RassoCN@sce_`H2yP65SJXSe<)f1h?^yqXT?F;h~F~f!beq<(G$q48Bm)rrBmMF1yI~Sf?*!bDXm^{82$B!C1v>PqAI4w4B+vY5f-Fr&} za$UMvy~9)w4?o6LVFf5aTPr;yS~5o-=!POJDOhr~U4d)l2^||B!VJ11sFTxFE@%uw zfDxoChF0Zq@mDVX1*)y^NRrQ&ZYBG!{+^3@n(Uue_EjOLQk;wi`Z016T)%9b1o<- zIPzpE1%vtAD_Epy?@eLoM&gJ+yNl?ouD%H_Z!T$ABFUK^gCJtSZh*SHcKy)rNF0JD z7f}LX1pP>)IGm(8ysu_K)g)I}(a|F=J=5p1ra(K$j=Oi%_AWxQ6P{(hM`%=tJw-Iq zh=F0ets?#5Lf$JgJIglrUiNGwQ&Sa4FyZ!M-h2d6zNofV)k?1iHt%=#7sdyry2h1hPkX#9NzO?_F@b2f+;65(vc9fqRq*C2|_4y0F#YSmQ!Y+-`nMO;JH=j*b?*6CR)C z*q=ZYhLBGu3M0pfnJ1i@iGW(5vgvnPQ4^29+g<}7Y$DfX*7?PK8f-jzhmAeFD>B{3aIW4HJks!h0d&o@vyzl0IkpTkSe_LnY~}?MLU_3V03UPCeU3~lW4Y4=;O>^ zp1<|E7R+ip%>sZ12QH%jk|iIN`((h-7@92iHQaLR16le%^dmAndJ}jGev@L)29zp3 z10)m795mqVJ9o4@%J>7XDJj2u_uRuX_=jNIYFTgCN9xZP_4V$1-`>*(hL`qghU5@j zF1ks7%eAQ3uDlqiEgv?PO{b~qWLTppCpWdlZiu?FumH53N=>zuN)a=UVw*MXUOO#w zx_kB*7=lfd^1`4}@l%5W=@uwzJ|?tW%!J+V2GE#0JwxGNgJCg za-1*_6C8VAzMu^GfkB!=f-ELsVa=eDp{M z;f84g@{lPaHF5&!-#mf=rh2lnDx(OJZLDr*Tv+>KB#}`lgpe#oBSxH^a5Am*1&`={ z?);uS0Z~IB>oPvX(e){tMETc7dR0|=^-{EcKByVswL44|2B#lyevAJHD%(J9i#V6N z_UsXyN7L7@rD&&b`>i2TApRki37JCJkzHSAUx2E=kAoV&Csb7@79TUYAC7C+$w?Ny zJ-qnSHdwqA=*j7{1XAtBjw#7BNbw%*8S)>*TGMUZ&!$dP|C=ds=x;by`VP`T;#j() z?>=5fL&>-Ur={ujY#Gyrcd@@hA$Cqf6tbK`G2;k~7quuk1hcZ~sR`+-nwp!DmqgxX zfnsFVxuTBU`F-^POu)RBDVjTykzhUAfvdvF^(i5Oj4u4U?ASt7mLSd=t!vLnV~`3b zUTo8nh>xL;Nvsk1+^MHADI@FBYJY^_7LxFT3m5T)B3is)DV2>r`IfSrEV1s+p!K3v za4yeSP;^4#hlhY!vY7BBFC|B>mUapK88c>JK{@I1ooM|K6vlghHWNP`@TN|kHS2oJ z+~|G{n>i@cE`3E>L(YhHJY%e_q0v9@ASCR58VRu{Y$Y))*d^GN<%AmLGH3uh8XU+D z($kfl)mEQ6Ia9dX!r{4eJ6{mt78O- zDV1XW63&|50sRe?J9kbN)ZkOX@FXalW0cHs=g+T8i{GxOncO2l8E4tK;6@U^wHrjDLQ2Q=j&gNp6BlS?8=GtgRW<(mH3m_cTyS#kFgjV5Mn(4~LPlzHxY5_MJQ`#TTz% zJ4zEKf;614w+e0_JGwt_HIqw7u;)N9TXci?9B1OrM03ks`~6Sspg8PpHbrB~>?n`?hyXa@@XsPHYUk>!Pzpgh?bE9!8?Y`i}NdKD^e4 zGtSGv&Ugk097$=$<)(PP(K(Qr5_aO1(B8yr#Z;ZtSCSg@u7A7L`5+ndOm1!(fObs9 zOGt6xc^a4B+tk-OZ;6Sk(>%YikJq-_ysepo$*a&p zjJAL{NFYB&CpLi@T;fkG&ac_0S(QMz5)9HxlP2AGIPFyYszdQHPbYpTPMNYMr=c|T zpV-*ViPx&zaBLVCcu zpmjI)K5uDQGrHMS#X0QT+>alsl-B%E4v-xy(Kj*Ky06pmEwsz}VQQLugU7EU(krhr ziJ+8vd4Ucc4ttr4!jp^3j@cWD*$w(o__gr__dgu<>g9{6N;d5f4dY4cocNwwTr}SiFg}K3}vWt@~};F zR424G4(zGqHtbodOF@+N5ZT!S!ySj%UkvXN;V73py{@gz#(#h<;#tIGGc@>hRpqpvpSXF+}IC==OxNm2FIr^k&sce_M?ri;wk+%?pZZT2FI{zb{|2>np}Xf-$%XA| zs&X$HZtE1PT`4EqWGB0;i`=s=@*RteG^PC%x=6N_D0B&zjp`&H8hU)-K$|IceQG@V z_YJ+?5mIO#FPZ1F+S)nsr1;wo z-4~;ED`snU(cPhYzhif7@yqbyc^gaS7?=(2<7FqWqSQ9s|BKNsb@kvcZ#r!%wQD$h zQ^z-N@eZy@MuI?#0lL4(y8m%M`>E?n@LMX8>hPo5xVm=3;#WjZj%cHRTk?oLHOnK3 zDMa{k+&rcfUn%mxmh>&cZO8`4A+oe?4m#W;e!857eE*n4?+5%QYXR5o6di%*oO$Qi0`t#Wp+93I8*$k?E!-l%cY#YTnljgmZ79eTkiq{vPwIhZL8EuuI5-wRd4deBCu~Oz zSx?}_*)1ZAr)Hw4iE@MSkliNi88M+gJiXJ5Yh#wrDer)_v}Xyb2j|?t!Gn@DdL%9w+na~t7C&v%))ci} zjT%QX-Oi@mmd|&K-cVthyLKJcGQ zFQTH~ANOwjoylmz8OWE3-dz+s3}k}&z%3_w-7>%szA$0wfN84Hus zFKK>%+o|NI`OGz%o7H~J?fUUO%xpR3qqu3y$2)PUau5%~)9CH(jd#LG zfP2(JVN_}Q_N@&4K(ub7cnes|3;lB5DTIqbA1Dv>t#G-x7jb#-HQPLYa__l&-cp>x zunZC6`=L`kl_P0)ozb}e!Lcc?`?f8A*zrlb_~DRIXn9G{iXH>B5A5evp`zl{`q6-h zzcVK%c;lYY(fvl=LWQ$DdYM+u_Li#QfY7z8o1V#J&APH5K=b&>nRnaV`la0eoMv*P zd6m`M$CpO|V$Rf74#sMIy3%bLor$i{xJOa84=@9%HgKs^s{4>cYOPLeAbhv?=G#Nd z;>$c)8617;)Z+BHhyPvWyY_pMSIM^w(N;*MFl%93zMNo4Jv;)2gpFO?Df9aK?2)LW zo|m`1F~aYpq8wQrbDBO1%1NE6E7sPZe(*Zu(W%O1XawSSpa4G&Y&?;X;rZrRhIj{Y zF|UXveW4L9u(+638~Aebxc1LInY6YIXVECnJ=^U$YJfipmF<{)|B910ySW-%p(Vh^s_@0`m>%k2wv ztmwLT*=H^f`C{4o)cQftPFs1b;o|dspK(=gd;Yt53@8=tW3=wQQtoL#TRdCJ z74a&{3!$Hki4i~V_@CHvc-?pIp>wr@EKUgA!}=B$xfPWz@T8Ppz$IVE)TX8&LB9jl zi@;&~Gyf^&RZJ?Vo{7wF<&5P|zX)0tJ)DGvBd1R7z!9}R=S+n0XLVH_oo&>@<2^hy zkY`R~;5r+1^^%QLm(qt^U%x2}JOeMKr2}mB<&Vd=@^#OVu}WY&gmIUHGZ)L%)3i>O^YJ(Uf0B?8h^&;yVF?{)6(-N2`^e4>P3+)Xc5G2T&* zo_SiCHK@um&v&Fz7l>*UQd#sV3bOY2@$%}bu%Y?UJ&X-)py;8LBB=rRPmpyINO^cpchop3Bp#Dyv{9fJhszkO?=EqdW% z%ZkBf633r?sFAuM$87)J`znbaW3PBMG4m42xO-7)^G>8f*qGYNwgjtnKU+KUR*o8e z;(f4ILEpMk`x?6q4JqEzP1_zSIobKDem0RakRST!!t1`#fweZ#fqn;2E4I7EspoCc zPf;>5Q=f0TEp4xzX@0+#()ppiz9q^0_HFX3q+9ckerg{QsjX1IPrK~Zw>~tB(?ik) zusBd%*|hie<5^jDYuElUddEi3lac&mpBitnC(=d+6Q*POjhsdv)hu#w}O>{#!rZ(ON|=ZStTumEJ=% z8B*eFzEAvP(RHS+hoG@p&Eo4FZ;yu5Q@96}W4n?Njgn^Uo%IB~z`g zm~UFvC)(uO`gv$&-`fU?W+6eJx#!Op|25J!`<`w3WP^A|{X-LN)$Mfq^oa=YV%pE& z`T0eQ&tLuhg>>D(Oyw^hJnw$|mWl|&lpKYPGP-5_)QeA{r-y9A>wwMt^VhHI+OA&7 zAEW%PSHUMMy14a~WD_dVJ|F!AwVhBHBz-V2bJM_0OZWe~>1Vz8qg>=}mB=Hf)lyW{ zJ#ExC6itY>ahu-RT}gScf%162{!#<+L)T_+*&1rK_S2du3IB7ln=0.8" + } +} diff --git a/node_modules/xlsx/types/index.d.ts b/node_modules/xlsx/types/index.d.ts new file mode 100644 index 000000000..fa06782f8 --- /dev/null +++ b/node_modules/xlsx/types/index.d.ts @@ -0,0 +1,900 @@ +/* index.d.ts (C) 2015-present SheetJS and contributors */ +// TypeScript Version: 2.2 +// import * as CFB from "cfb"; +// import * as SSF from "ssf"; + +/** Version string */ +export const version: string; + +/** SSF Formatter Library */ +// export { SSF }; +export const SSF: any; + +/** CFB Library */ +// export { CFB }; +export const CFB: any; + +/** ESM ONLY! Set internal `fs` instance */ +export function set_fs(fs: any): void; +/** ESM ONLY! Set internal codepage tables */ +export function set_cptable(cptable: any): void; + +/** NODE ONLY! Attempts to read filename and parse */ +export function readFile(filename: string, opts?: ParsingOptions): WorkBook; +/** Attempts to parse data */ +export function read(data: any, opts?: ParsingOptions): WorkBook; +/** Attempts to write or download workbook data to file */ +export function writeFile(data: WorkBook, filename: string, opts?: WritingOptions): any; +/** Attempts to write or download workbook data to XLSX file */ +export function writeFileXLSX(data: WorkBook, filename: string, opts?: WritingOptions): any; +/** Attempts to write or download workbook data to file asynchronously */ +type CBFunc = () => void; +export function writeFileAsync(filename: string, data: WorkBook, opts: WritingOptions | CBFunc, cb?: CBFunc): any; +/** Attempts to write the workbook data */ +export function write(data: WorkBook, opts: WritingOptions): any; +/** Attempts to write the workbook data as XLSX */ +export function writeXLSX(data: WorkBook, opts: WritingOptions): any; + +/** Utility Functions */ +export const utils: XLSX$Utils; +/** Stream Utility Functions */ +export const stream: StreamUtils; + +/** Number Format (either a string or an index to the format table) */ +export type NumberFormat = string | number; + +/** Worksheet specifier (string, number, worksheet) */ +export type WSSpec = string | number | WorkSheet; + +/** Range specifier (string or range or cell), single-cell lifted to range */ +export type RangeSpec = string | Range | CellAddress; + +/** Basic File Properties */ +export interface Properties { + /** Summary tab "Title" */ + Title?: string; + /** Summary tab "Subject" */ + Subject?: string; + /** Summary tab "Author" */ + Author?: string; + /** Summary tab "Manager" */ + Manager?: string; + /** Summary tab "Company" */ + Company?: string; + /** Summary tab "Category" */ + Category?: string; + /** Summary tab "Keywords" */ + Keywords?: string; + /** Summary tab "Comments" */ + Comments?: string; + /** Statistics tab "Last saved by" */ + LastAuthor?: string; + /** Statistics tab "Created" */ + CreatedDate?: Date; +} + +/** Other supported properties */ +export interface FullProperties extends Properties { + ModifiedDate?: Date; + Application?: string; + AppVersion?: string; + DocSecurity?: string; + HyperlinksChanged?: boolean; + SharedDoc?: boolean; + LinksUpToDate?: boolean; + ScaleCrop?: boolean; + Worksheets?: number; + SheetNames?: string[]; + ContentStatus?: string; + LastPrinted?: string; + Revision?: string | number; + Version?: string; + Identifier?: string; + Language?: string; +} + +export interface CommonOptions { + /** + * If true, throw errors when features are not understood + * @default false + */ + WTF?: boolean; + + /** + * When reading a file with VBA macros, expose CFB blob to `vbaraw` field + * When writing BIFF8/XLSB/XLSM, reseat `vbaraw` and export to file + * @default false + */ + bookVBA?: boolean; + + /** + * When reading a file, store dates as type d (default is n) + * When writing XLSX/XLSM file, use native date (default uses date codes) + * @default false + */ + cellDates?: boolean; + + /** + * Create cell objects for stub cells + * @default false + */ + sheetStubs?: boolean; + + /** + * When reading a file, save style/theme info to the .s field + * When writing a file, export style/theme info + * @default false + */ + cellStyles?: boolean; + + /** + * If defined and file is encrypted, use password + * @default '' + */ + password?: string; +} + +export interface DateNFOption { + /** Use specified date format */ + dateNF?: NumberFormat; +} + +/** Options for read and readFile */ +export interface ParsingOptions extends CommonOptions { + /** Input data encoding */ + type?: 'base64' | 'binary' | 'buffer' | 'file' | 'array' | 'string'; + + /** Default codepage */ + codepage?: number; + + /** + * Save formulae to the .f field + * @default true + */ + cellFormula?: boolean; + + /** + * Parse rich text and save HTML to the .h field + * @default true + */ + cellHTML?: boolean; + + /** + * Save number format string to the .z field + * @default false + */ + cellNF?: boolean; + + /** + * Generate formatted text to the .w field + * @default true + */ + cellText?: boolean; + + /** Override default date format (code 14) */ + dateNF?: string; + + /** Field Separator ("Delimiter" override) */ + FS?: string; + + /** + * If >0, read the first sheetRows rows + * @default 0 + */ + sheetRows?: number; + + /** + * If true, parse calculation chains + * @default false + */ + bookDeps?: boolean; + + /** + * If true, add raw files to book object + * @default false + */ + bookFiles?: boolean; + + /** + * If true, only parse enough to get book metadata + * @default false + */ + bookProps?: boolean; + + /** + * If true, only parse enough to get the sheet names + * @default false + */ + bookSheets?: boolean; + + /** If specified, only parse the specified sheets or sheet names */ + sheets?: number | string | Array; + + /** If true, plaintext parsing will not parse values */ + raw?: boolean; + + /** If true, preserve _xlfn. prefixes in formula function names */ + xlfn?: boolean; + + dense?: boolean; + + PRN?: boolean; +} + +export interface SheetOption { + /** + * Name of Worksheet (for single-sheet formats) + * @default '' + */ + sheet?: string; +} + +/** Options for write and writeFile */ +export interface WritingOptions extends CommonOptions, SheetOption { + /** Output data encoding */ + type?: 'base64' | 'binary' | 'buffer' | 'file' | 'array' | 'string'; + + /** + * Generate Shared String Table + * @default false + */ + bookSST?: boolean; + + /** + * File format of generated workbook + * @default 'xlsx' + */ + bookType?: BookType; + + /** + * Use ZIP compression for ZIP-based formats + * @default false + */ + compression?: boolean; + + /** + * Suppress "number stored as text" errors in generated files + * @default true + */ + ignoreEC?: boolean; + + /** Override workbook properties on save */ + Props?: Properties; + + /** Base64 encoding of NUMBERS base for exports */ + numbers?: string; +} + +/** Workbook Object */ +export interface WorkBook { + /** + * A dictionary of the worksheets in the workbook. + * Use SheetNames to reference these. + */ + Sheets: { [sheet: string]: WorkSheet }; + + /** Ordered list of the sheet names in the workbook */ + SheetNames: string[]; + + /** Standard workbook Properties */ + Props?: FullProperties; + + /** Custom workbook Properties */ + Custprops?: object; + + Workbook?: WBProps; + + vbaraw?: any; +} + +export interface SheetProps { + /** Name of Sheet */ + name?: string; + + /** Sheet Visibility (0=Visible 1=Hidden 2=VeryHidden) */ + Hidden?: 0 | 1 | 2; + + /** Name of Document Module in associated VBA Project */ + CodeName?: string; +} + +/** Defined Name Object */ +export interface DefinedName { + /** Name */ + Name: string; + + /** Reference */ + Ref: string; + + /** Scope (undefined for workbook scope) */ + Sheet?: number; + + /** Name comment */ + Comment?: string; +} + +/** Workbook-Level Attributes */ +export interface WBProps { + /** Sheet Properties */ + Sheets?: SheetProps[]; + + /** Defined Names */ + Names?: DefinedName[]; + + /** Workbook Views */ + Views?: WBView[]; + + /** Other Workbook Properties */ + WBProps?: WorkbookProperties; +} + +/** Workbook View */ +export interface WBView { + /** Right-to-left mode */ + RTL?: boolean; +} + +/** Other Workbook Properties */ +export interface WorkbookProperties { + /** Worksheet Epoch (1904 if true, 1900 if false) */ + date1904?: boolean; + + /** Warn or strip personally identifying info on save */ + filterPrivacy?: boolean; + + /** Name of Document Module in associated VBA Project */ + CodeName?: string; +} + +/** DBF Field Header */ +export interface DBFField { + /** Original Field Name */ + name?: string; + + /** Field Type */ + type?: string; + + /** Field Length */ + len?: number; + + /** Field Decimal Count */ + dec?: number; +} + +/** Column Properties Object */ +export interface ColInfo { + /* --- visibility --- */ + + /** if true, the column is hidden */ + hidden?: boolean; + + /* --- column width --- */ + + /** width in Excel's "Max Digit Width", width*256 is integral */ + width?: number; + + /** width in screen pixels */ + wpx?: number; + + /** width in "characters" */ + wch?: number; + + /** outline / group level */ + level?: number; + + /** Excel's "Max Digit Width" unit, always integral */ + MDW?: number; + + /** DBF Field Header */ + DBF?: DBFField; +} + +/** Row Properties Object */ +export interface RowInfo { + /* --- visibility --- */ + + /** if true, the column is hidden */ + hidden?: boolean; + + /* --- row height --- */ + + /** height in screen pixels */ + hpx?: number; + + /** height in points */ + hpt?: number; + + /** outline / group level */ + level?: number; +} + +/** + * Write sheet protection properties. + */ +export interface ProtectInfo { + /** + * The password for formats that support password-protected sheets + * (XLSX/XLSB/XLS). The writer uses the XOR obfuscation method. + */ + password?: string; + /** + * Select locked cells + * @default: true + */ + selectLockedCells?: boolean; + /** + * Select unlocked cells + * @default: true + */ + selectUnlockedCells?: boolean; + /** + * Format cells + * @default: false + */ + formatCells?: boolean; + /** + * Format columns + * @default: false + */ + formatColumns?: boolean; + /** + * Format rows + * @default: false + */ + formatRows?: boolean; + /** + * Insert columns + * @default: false + */ + insertColumns?: boolean; + /** + * Insert rows + * @default: false + */ + insertRows?: boolean; + /** + * Insert hyperlinks + * @default: false + */ + insertHyperlinks?: boolean; + /** + * Delete columns + * @default: false + */ + deleteColumns?: boolean; + /** + * Delete rows + * @default: false + */ + deleteRows?: boolean; + /** + * Sort + * @default: false + */ + sort?: boolean; + /** + * Filter + * @default: false + */ + autoFilter?: boolean; + /** + * Use PivotTable reports + * @default: false + */ + pivotTables?: boolean; + /** + * Edit objects + * @default: true + */ + objects?: boolean; + /** + * Edit scenarios + * @default: true + */ + scenarios?: boolean; +} + +/** Page Margins -- see Excel Page Setup .. Margins diagram for explanation */ +export interface MarginInfo { + /** Left side margin (inches) */ + left?: number; + /** Right side margin (inches) */ + right?: number; + /** Top side margin (inches) */ + top?: number; + /** Bottom side margin (inches) */ + bottom?: number; + /** Header top margin (inches) */ + header?: number; + /** Footer bottom height (inches) */ + footer?: number; +} +export type SheetType = 'sheet' | 'chart'; +export type SheetKeys = string | MarginInfo | SheetType; +/** General object representing a Sheet (worksheet or chartsheet) */ +export interface Sheet { + /** + * Indexing with a cell address string maps to a cell object + * Special keys start with '!' + */ + [cell: string]: CellObject | SheetKeys | any; + + /** Sheet type */ + '!type'?: SheetType; + + /** Sheet Range */ + '!ref'?: string; + + /** Page Margins */ + '!margins'?: MarginInfo; +} + +/** AutoFilter properties */ +export interface AutoFilterInfo { + /** Range of the AutoFilter table */ + ref: string; +} + +export type WSKeys = SheetKeys | ColInfo[] | RowInfo[] | Range[] | ProtectInfo | AutoFilterInfo; + +/** Worksheet Object */ +export interface WorkSheet extends Sheet { + /** + * Indexing with a cell address string maps to a cell object + * Special keys start with '!' + */ + [cell: string]: CellObject | WSKeys | any; + + /** Column Info */ + '!cols'?: ColInfo[]; + + /** Row Info */ + '!rows'?: RowInfo[]; + + /** Merge Ranges */ + '!merges'?: Range[]; + + /** Worksheet Protection info */ + '!protect'?: ProtectInfo; + + /** AutoFilter info */ + '!autofilter'?: AutoFilterInfo; +} + +/** + * Worksheet Object with CellObject type + * + * The normal Worksheet type uses indexer of type `any` -- this enforces CellObject + */ +export interface StrictWS { [addr: string]: CellObject; } + +/** + * The Excel data type for a cell. + * b Boolean, n Number, e error, s String, d Date, z Stub + */ +export type ExcelDataType = 'b' | 'n' | 'e' | 's' | 'd' | 'z'; + +/** + * Type of generated workbook + * @default 'xlsx' + */ +export type BookType = 'xlsx' | 'xlsm' | 'xlsb' | 'xls' | 'xla' | 'biff8' | 'biff5' | 'biff2' | 'xlml' | 'ods' | 'fods' | 'csv' | 'txt' | 'sylk' | 'slk' | 'html' | 'dif' | 'rtf' | 'prn' | 'eth' | 'dbf'; + +/** Comment element */ +export interface Comment { + /** Author of the comment block */ + a?: string; + + /** Plaintext of the comment */ + t: string; + + /** If true, mark the comment as a part of a thread */ + T?: boolean; +} + +/** Cell comments */ +export interface Comments extends Array { + /** Hide comment by default */ + hidden?: boolean; +} + +/** Link object */ +export interface Hyperlink { + /** Target of the link (HREF) */ + Target: string; + + /** Plaintext tooltip to display when mouse is over cell */ + Tooltip?: string; +} + +/** Worksheet Cell Object */ +export interface CellObject { + /** The raw value of the cell. Can be omitted if a formula is specified */ + v?: string | number | boolean | Date; + + /** Formatted text (if applicable) */ + w?: string; + + /** + * The Excel Data Type of the cell. + * b Boolean, n Number, e Error, s String, d Date, z Empty + */ + t: ExcelDataType; + + /** Cell formula (if applicable) */ + f?: string; + + /** Range of enclosing array if formula is array formula (if applicable) */ + F?: string; + + /** Rich text encoding (if applicable) */ + r?: any; + + /** HTML rendering of the rich text (if applicable) */ + h?: string; + + /** Comments associated with the cell */ + c?: Comments; + + /** Number format string associated with the cell (if requested) */ + z?: NumberFormat; + + /** Cell hyperlink object (.Target holds link, .tooltip is tooltip) */ + l?: Hyperlink; + + /** The style/theme of the cell (if applicable) */ + s?: any; +} + +/** Simple Cell Address */ +export interface CellAddress { + /** Column number */ + c: number; + /** Row number */ + r: number; +} + +/** Range object (representing ranges like "A1:B2") */ +export interface Range { + /** Starting cell */ + s: CellAddress; + /** Ending cell */ + e: CellAddress; +} + +export interface Sheet2CSVOpts extends DateNFOption { + /** Field Separator ("delimiter") */ + FS?: string; + + /** Record Separator ("row separator") */ + RS?: string; + + /** Remove trailing field separators in each record */ + strip?: boolean; + + /** Include blank lines in the CSV output */ + blankrows?: boolean; + + /** Skip hidden rows and columns in the CSV output */ + skipHidden?: boolean; + + /** Force quotes around fields */ + forceQuotes?: boolean; + + /** if true, return raw numbers; if false, return formatted numbers */ + rawNumbers?: boolean; +} + +export interface OriginOption { + /** Top-Left cell for operation (CellAddress or A1 string or row) */ + origin?: number | string | CellAddress; +} + +export interface Sheet2HTMLOpts { + /** TABLE element id attribute */ + id?: string; + + /** Add contenteditable to every cell */ + editable?: boolean; + + /** Header HTML */ + header?: string; + + /** Footer HTML */ + footer?: string; +} + +export interface Sheet2JSONOpts extends DateNFOption { + /** Output format */ + header?: "A"|number|string[]; + + /** Override worksheet range */ + range?: any; + + /** Include or omit blank lines in the output */ + blankrows?: boolean; + + /** Default value for null/undefined values */ + defval?: any; + + /** if true, return raw data; if false, return formatted text */ + raw?: boolean; + + /** if true, skip hidden rows and columns */ + skipHidden?: boolean; + + /** if true, return raw numbers; if false, return formatted numbers */ + rawNumbers?: boolean; +} + +export interface AOA2SheetOpts extends CommonOptions, DateNFOption { + /** + * Create cell objects for stub cells + * @default false + */ + sheetStubs?: boolean; +} + +export interface SheetAOAOpts extends AOA2SheetOpts, OriginOption {} + +export interface JSON2SheetOpts extends CommonOptions, DateNFOption { + /** Use specified column order */ + header?: string[]; + + /** Skip header row in generated sheet */ + skipHeader?: boolean; +} + +export interface SheetJSONOpts extends JSON2SheetOpts, OriginOption {} + +export interface Table2SheetOpts extends CommonOptions, DateNFOption, OriginOption, SheetOption { + /** If true, plaintext parsing will not parse values */ + raw?: boolean; + + /** + * If >0, read the first sheetRows rows + * @default 0 + */ + sheetRows?: number; + + /** If true, hidden rows and cells will not be parsed */ + display?: boolean; +} + +/** General utilities */ +export interface XLSX$Utils { + /* --- Import Functions --- */ + + /** Converts an array of arrays of JS data to a worksheet. */ + aoa_to_sheet(data: T[][], opts?: AOA2SheetOpts): WorkSheet; + aoa_to_sheet(data: any[][], opts?: AOA2SheetOpts): WorkSheet; + + /** Converts an array of JS objects to a worksheet. */ + json_to_sheet(data: T[], opts?: JSON2SheetOpts): WorkSheet; + json_to_sheet(data: any[], opts?: JSON2SheetOpts): WorkSheet; + + /** BROWSER ONLY! Converts a TABLE DOM element to a worksheet. */ + table_to_sheet(data: any, opts?: Table2SheetOpts): WorkSheet; + table_to_book(data: any, opts?: Table2SheetOpts): WorkBook; + sheet_add_dom(ws: WorkSheet, data: any, opts?: Table2SheetOpts): WorkSheet; + + /* --- Export Functions --- */ + + /** Converts a worksheet object to an array of JSON objects */ + sheet_to_json(worksheet: WorkSheet, opts?: Sheet2JSONOpts): T[]; + sheet_to_json(worksheet: WorkSheet, opts?: Sheet2JSONOpts): any[][]; + sheet_to_json(worksheet: WorkSheet, opts?: Sheet2JSONOpts): any[]; + + /** Generates delimiter-separated-values output */ + sheet_to_csv(worksheet: WorkSheet, options?: Sheet2CSVOpts): string; + + /** Generates UTF16 Formatted Text */ + sheet_to_txt(worksheet: WorkSheet, options?: Sheet2CSVOpts): string; + + /** Generates HTML */ + sheet_to_html(worksheet: WorkSheet, options?: Sheet2HTMLOpts): string; + + /** Generates a list of the formulae (with value fallbacks) */ + sheet_to_formulae(worksheet: WorkSheet): string[]; + + /** Generates DIF */ + sheet_to_dif(worksheet: WorkSheet, options?: Sheet2HTMLOpts): string; + + /** Generates SYLK (Symbolic Link) */ + sheet_to_slk(worksheet: WorkSheet, options?: Sheet2HTMLOpts): string; + + /** Generates ETH */ + sheet_to_eth(worksheet: WorkSheet, options?: Sheet2HTMLOpts): string; + + /* --- Cell Address Utilities --- */ + + /** Converts 0-indexed cell address to A1 form */ + encode_cell(cell: CellAddress): string; + + /** Converts 0-indexed row to A1 form */ + encode_row(row: number): string; + + /** Converts 0-indexed column to A1 form */ + encode_col(col: number): string; + + /** Converts 0-indexed range to A1 form */ + encode_range(s: CellAddress, e: CellAddress): string; + encode_range(r: Range): string; + + /** Converts A1 cell address to 0-indexed form */ + decode_cell(address: string): CellAddress; + + /** Converts A1 row to 0-indexed form */ + decode_row(row: string): number; + + /** Converts A1 column to 0-indexed form */ + decode_col(col: string): number; + + /** Converts A1 range to 0-indexed form */ + decode_range(range: string): Range; + + /** Format cell */ + format_cell(cell: CellObject, v?: any, opts?: any): string; + + /* --- General Utilities --- */ + + /** Creates a new workbook */ + book_new(): WorkBook; + + /** Append a worksheet to a workbook */ + book_append_sheet(workbook: WorkBook, worksheet: WorkSheet, name?: string, roll?: boolean): void; + + /** Set sheet visibility (visible/hidden/very hidden) */ + book_set_sheet_visibility(workbook: WorkBook, sheet: number|string, visibility: number): void; + + /** Set number format for a cell */ + cell_set_number_format(cell: CellObject, fmt: string|number): CellObject; + + /** Set hyperlink for a cell */ + cell_set_hyperlink(cell: CellObject, target: string, tooltip?: string): CellObject; + + /** Set internal link for a cell */ + cell_set_internal_link(cell: CellObject, target: string, tooltip?: string): CellObject; + + /** Add comment to a cell */ + cell_add_comment(cell: CellObject, text: string, author?: string): void; + + /** Assign an Array Formula to a range */ + sheet_set_array_formula(ws: WorkSheet, range: Range|string, formula: string, dynamic?: boolean): WorkSheet; + + /** Add an array of arrays of JS data to a worksheet */ + sheet_add_aoa(ws: WorkSheet, data: T[][], opts?: SheetAOAOpts): WorkSheet; + sheet_add_aoa(ws: WorkSheet, data: any[][], opts?: SheetAOAOpts): WorkSheet; + + /** Add an array of JS objects to a worksheet */ + sheet_add_json(ws: WorkSheet, data: any[], opts?: SheetJSONOpts): WorkSheet; + sheet_add_json(ws: WorkSheet, data: T[], opts?: SheetJSONOpts): WorkSheet; + + + consts: XLSX$Consts; +} + +export interface XLSX$Consts { + /* --- Sheet Visibility --- */ + + /** Visibility: Visible */ + SHEET_VISIBLE: 0; + + /** Visibility: Hidden */ + SHEET_HIDDEN: 1; + + /** Visibility: Very Hidden */ + SHEET_VERYHIDDEN: 2; +} + +/** NODE ONLY! these return Readable Streams */ +export interface StreamUtils { + /** CSV output stream, generate one line at a time */ + to_csv(sheet: WorkSheet, opts?: Sheet2CSVOpts): any; + /** HTML output stream, generate one line at a time */ + to_html(sheet: WorkSheet, opts?: Sheet2HTMLOpts): any; + /** JSON object stream, generate one row at a time */ + to_json(sheet: WorkSheet, opts?: Sheet2JSONOpts): any; + /** Set `Readable` (internal) */ + set_readable(Readable: any): void; +} diff --git a/node_modules/xlsx/types/tsconfig.json b/node_modules/xlsx/types/tsconfig.json new file mode 100644 index 000000000..63534df95 --- /dev/null +++ b/node_modules/xlsx/types/tsconfig.json @@ -0,0 +1,15 @@ +{ + "compilerOptions": { + "module": "commonjs", + "lib": [ "es5" ], + "noImplicitAny": true, + "noImplicitThis": true, + "strictNullChecks": false, + "baseUrl": ".", + "paths": { "xlsx": ["."] }, + "types": [], + "noEmit": true, + "strictFunctionTypes": true, + "forceConsistentCasingInFileNames": true + } +} diff --git a/node_modules/xlsx/xlsx.js b/node_modules/xlsx/xlsx.js new file mode 100644 index 000000000..e61c7cc29 --- /dev/null +++ b/node_modules/xlsx/xlsx.js @@ -0,0 +1,24486 @@ +/*! xlsx.js (C) 2013-present SheetJS -- http://sheetjs.com */ +/* vim: set ts=2: */ +/*exported XLSX */ +/*global exports, module, require:false, process:false, Buffer:false, ArrayBuffer:false, DataView:false, Deno:false */ +var XLSX = {}; +function make_xlsx_lib(XLSX){ +XLSX.version = '0.18.5'; +var current_codepage = 1200, current_ansi = 1252; +/*global cptable:true, window */ +var $cptable; +if(typeof cptable !== 'undefined') $cptable = cptable; +else if(typeof module !== "undefined" && typeof require !== 'undefined') { + $cptable = require('./dist/cpexcel.js'); +} + +var VALID_ANSI = [ 874, 932, 936, 949, 950, 1250, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 1258, 10000 ]; +/* ECMA-376 Part I 18.4.1 charset to codepage mapping */ +var CS2CP = ({ +0: 1252, /* ANSI */ +1: 65001, /* DEFAULT */ +2: 65001, /* SYMBOL */ +77: 10000, /* MAC */ +128: 932, /* SHIFTJIS */ +129: 949, /* HANGUL */ +130: 1361, /* JOHAB */ +134: 936, /* GB2312 */ +136: 950, /* CHINESEBIG5 */ +161: 1253, /* GREEK */ +162: 1254, /* TURKISH */ +163: 1258, /* VIETNAMESE */ +177: 1255, /* HEBREW */ +178: 1256, /* ARABIC */ +186: 1257, /* BALTIC */ +204: 1251, /* RUSSIAN */ +222: 874, /* THAI */ +238: 1250, /* EASTEUROPE */ +255: 1252, /* OEM */ +69: 6969 /* MISC */ +}); + +var set_ansi = function(cp) { if(VALID_ANSI.indexOf(cp) == -1) return; current_ansi = CS2CP[0] = cp; }; +function reset_ansi() { set_ansi(1252); } + +var set_cp = function(cp) { current_codepage = cp; set_ansi(cp); }; +function reset_cp() { set_cp(1200); reset_ansi(); } + +function char_codes(data) { var o = []; for(var i = 0, len = data.length; i < len; ++i) o[i] = data.charCodeAt(i); return o; } + +function utf16leread(data) { + var o = []; + for(var i = 0; i < (data.length>>1); ++i) o[i] = String.fromCharCode(data.charCodeAt(2*i) + (data.charCodeAt(2*i+1)<<8)); + return o.join(""); +} +function utf16beread(data) { + var o = []; + for(var i = 0; i < (data.length>>1); ++i) o[i] = String.fromCharCode(data.charCodeAt(2*i+1) + (data.charCodeAt(2*i)<<8)); + return o.join(""); +} + +var debom = function(data) { + var c1 = data.charCodeAt(0), c2 = data.charCodeAt(1); + if(c1 == 0xFF && c2 == 0xFE) return utf16leread(data.slice(2)); + if(c1 == 0xFE && c2 == 0xFF) return utf16beread(data.slice(2)); + if(c1 == 0xFEFF) return data.slice(1); + return data; +}; + +var _getchar = function _gc1(x) { return String.fromCharCode(x); }; +var _getansi = function _ga1(x) { return String.fromCharCode(x); }; +if(typeof $cptable !== 'undefined') { + set_cp = function(cp) { current_codepage = cp; set_ansi(cp); }; + debom = function(data) { + if(data.charCodeAt(0) === 0xFF && data.charCodeAt(1) === 0xFE) { return $cptable.utils.decode(1200, char_codes(data.slice(2))); } + return data; + }; + _getchar = function _gc2(x) { + if(current_codepage === 1200) return String.fromCharCode(x); + return $cptable.utils.decode(current_codepage, [x&255,x>>8])[0]; + }; + _getansi = function _ga2(x) { + return $cptable.utils.decode(current_ansi, [x])[0]; + }; +} +var DENSE = null; +var DIF_XL = true; +var Base64_map = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; +function Base64_encode(input) { + var o = ""; + var c1 = 0, c2 = 0, c3 = 0, e1 = 0, e2 = 0, e3 = 0, e4 = 0; + for (var i = 0; i < input.length; ) { + c1 = input.charCodeAt(i++); + e1 = c1 >> 2; + c2 = input.charCodeAt(i++); + e2 = (c1 & 3) << 4 | c2 >> 4; + c3 = input.charCodeAt(i++); + e3 = (c2 & 15) << 2 | c3 >> 6; + e4 = c3 & 63; + if (isNaN(c2)) { + e3 = e4 = 64; + } else if (isNaN(c3)) { + e4 = 64; + } + o += Base64_map.charAt(e1) + Base64_map.charAt(e2) + Base64_map.charAt(e3) + Base64_map.charAt(e4); + } + return o; +} +function Base64_decode(input) { + var o = ""; + var c1 = 0, c2 = 0, c3 = 0, e1 = 0, e2 = 0, e3 = 0, e4 = 0; + input = input.replace(/[^\w\+\/\=]/g, ""); + for (var i = 0; i < input.length; ) { + e1 = Base64_map.indexOf(input.charAt(i++)); + e2 = Base64_map.indexOf(input.charAt(i++)); + c1 = e1 << 2 | e2 >> 4; + o += String.fromCharCode(c1); + e3 = Base64_map.indexOf(input.charAt(i++)); + c2 = (e2 & 15) << 4 | e3 >> 2; + if (e3 !== 64) { + o += String.fromCharCode(c2); + } + e4 = Base64_map.indexOf(input.charAt(i++)); + c3 = (e3 & 3) << 6 | e4; + if (e4 !== 64) { + o += String.fromCharCode(c3); + } + } + return o; +} +var has_buf = (function() { return typeof Buffer !== 'undefined' && typeof process !== 'undefined' && typeof process.versions !== 'undefined' && !!process.versions.node; })(); + +var Buffer_from = (function() { + if(typeof Buffer !== 'undefined') { + var nbfs = !Buffer.from; + if(!nbfs) try { Buffer.from("foo", "utf8"); } catch(e) { nbfs = true; } + return nbfs ? function(buf, enc) { return (enc) ? new Buffer(buf, enc) : new Buffer(buf); } : Buffer.from.bind(Buffer); + } + return function() {}; +})(); + + +function new_raw_buf(len) { + /* jshint -W056 */ + if(has_buf) return Buffer.alloc ? Buffer.alloc(len) : new Buffer(len); + return typeof Uint8Array != "undefined" ? new Uint8Array(len) : new Array(len); + /* jshint +W056 */ +} + +function new_unsafe_buf(len) { + /* jshint -W056 */ + if(has_buf) return Buffer.allocUnsafe ? Buffer.allocUnsafe(len) : new Buffer(len); + return typeof Uint8Array != "undefined" ? new Uint8Array(len) : new Array(len); + /* jshint +W056 */ +} + +var s2a = function s2a(s) { + if(has_buf) return Buffer_from(s, "binary"); + return s.split("").map(function(x){ return x.charCodeAt(0) & 0xff; }); +}; + +function s2ab(s) { + if(typeof ArrayBuffer === 'undefined') return s2a(s); + var buf = new ArrayBuffer(s.length), view = new Uint8Array(buf); + for (var i=0; i!=s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF; + return buf; +} + +function a2s(data) { + if(Array.isArray(data)) return data.map(function(c) { return String.fromCharCode(c); }).join(""); + var o = []; for(var i = 0; i < data.length; ++i) o[i] = String.fromCharCode(data[i]); return o.join(""); +} + +function a2u(data) { + if(typeof Uint8Array === 'undefined') throw new Error("Unsupported"); + return new Uint8Array(data); +} + +function ab2a(data) { + if(typeof ArrayBuffer == 'undefined') throw new Error("Unsupported"); + if(data instanceof ArrayBuffer) return ab2a(new Uint8Array(data)); +var o = new Array(data.length); + for(var i = 0; i < data.length; ++i) o[i] = data[i]; + return o; +} + +var bconcat = has_buf ? function(bufs) { return Buffer.concat(bufs.map(function(buf) { return Buffer.isBuffer(buf) ? buf : Buffer_from(buf); })); } : function(bufs) { + if(typeof Uint8Array !== "undefined") { + var i = 0, maxlen = 0; + for(i = 0; i < bufs.length; ++i) maxlen += bufs[i].length; + var o = new Uint8Array(maxlen); + var len = 0; + for(i = 0, maxlen = 0; i < bufs.length; maxlen += len, ++i) { + len = bufs[i].length; + if(bufs[i] instanceof Uint8Array) o.set(bufs[i], maxlen); + else if(typeof bufs[i] == "string") { throw "wtf"; } + else o.set(new Uint8Array(bufs[i]), maxlen); + } + return o; + } + return [].concat.apply([], bufs.map(function(buf) { return Array.isArray(buf) ? buf : [].slice.call(buf); })); +}; + +function utf8decode(content) { + var out = [], widx = 0, L = content.length + 250; + var o = new_raw_buf(content.length + 255); + for(var ridx = 0; ridx < content.length; ++ridx) { + var c = content.charCodeAt(ridx); + if(c < 0x80) o[widx++] = c; + else if(c < 0x800) { + o[widx++] = (192|((c>>6)&31)); + o[widx++] = (128|(c&63)); + } else if(c >= 0xD800 && c < 0xE000) { + c = (c&1023)+64; + var d = content.charCodeAt(++ridx)&1023; + o[widx++] = (240|((c>>8)&7)); + o[widx++] = (128|((c>>2)&63)); + o[widx++] = (128|((d>>6)&15)|((c&3)<<4)); + o[widx++] = (128|(d&63)); + } else { + o[widx++] = (224|((c>>12)&15)); + o[widx++] = (128|((c>>6)&63)); + o[widx++] = (128|(c&63)); + } + if(widx > L) { + out.push(o.slice(0, widx)); + widx = 0; + o = new_raw_buf(65535); + L = 65530; + } + } + out.push(o.slice(0, widx)); + return bconcat(out); +} + +var chr0 = /\u0000/g, chr1 = /[\u0001-\u0006]/g; +/* ssf.js (C) 2013-present SheetJS -- http://sheetjs.com */ +/*jshint -W041 */ +function _strrev(x) { var o = "", i = x.length-1; while(i>=0) o += x.charAt(i--); return o; } +function pad0(v,d){var t=""+v; return t.length>=d?t:fill('0',d-t.length)+t;} +function pad_(v,d){var t=""+v;return t.length>=d?t:fill(' ',d-t.length)+t;} +function rpad_(v,d){var t=""+v; return t.length>=d?t:t+fill(' ',d-t.length);} +function pad0r1(v,d){var t=""+Math.round(v); return t.length>=d?t:fill('0',d-t.length)+t;} +function pad0r2(v,d){var t=""+v; return t.length>=d?t:fill('0',d-t.length)+t;} +var p2_32 = Math.pow(2,32); +function pad0r(v,d){if(v>p2_32||v<-p2_32) return pad0r1(v,d); var i = Math.round(v); return pad0r2(i,d); } +/* yes, in 2022 this is still faster than string compare */ +function SSF_isgeneral(s, i) { i = i || 0; return s.length >= 7 + i && (s.charCodeAt(i)|32) === 103 && (s.charCodeAt(i+1)|32) === 101 && (s.charCodeAt(i+2)|32) === 110 && (s.charCodeAt(i+3)|32) === 101 && (s.charCodeAt(i+4)|32) === 114 && (s.charCodeAt(i+5)|32) === 97 && (s.charCodeAt(i+6)|32) === 108; } +var days = [ + ['Sun', 'Sunday'], + ['Mon', 'Monday'], + ['Tue', 'Tuesday'], + ['Wed', 'Wednesday'], + ['Thu', 'Thursday'], + ['Fri', 'Friday'], + ['Sat', 'Saturday'] +]; +var months = [ + ['J', 'Jan', 'January'], + ['F', 'Feb', 'February'], + ['M', 'Mar', 'March'], + ['A', 'Apr', 'April'], + ['M', 'May', 'May'], + ['J', 'Jun', 'June'], + ['J', 'Jul', 'July'], + ['A', 'Aug', 'August'], + ['S', 'Sep', 'September'], + ['O', 'Oct', 'October'], + ['N', 'Nov', 'November'], + ['D', 'Dec', 'December'] +]; +function SSF_init_table(t) { + if(!t) t = {}; + t[0]= 'General'; + t[1]= '0'; + t[2]= '0.00'; + t[3]= '#,##0'; + t[4]= '#,##0.00'; + t[9]= '0%'; + t[10]= '0.00%'; + t[11]= '0.00E+00'; + t[12]= '# ?/?'; + t[13]= '# ??/??'; + t[14]= 'm/d/yy'; + t[15]= 'd-mmm-yy'; + t[16]= 'd-mmm'; + t[17]= 'mmm-yy'; + t[18]= 'h:mm AM/PM'; + t[19]= 'h:mm:ss AM/PM'; + t[20]= 'h:mm'; + t[21]= 'h:mm:ss'; + t[22]= 'm/d/yy h:mm'; + t[37]= '#,##0 ;(#,##0)'; + t[38]= '#,##0 ;[Red](#,##0)'; + t[39]= '#,##0.00;(#,##0.00)'; + t[40]= '#,##0.00;[Red](#,##0.00)'; + t[45]= 'mm:ss'; + t[46]= '[h]:mm:ss'; + t[47]= 'mmss.0'; + t[48]= '##0.0E+0'; + t[49]= '@'; + t[56]= '"上午/下午 "hh"時"mm"分"ss"秒 "'; + return t; +} +/* repeated to satiate webpack */ +var table_fmt = { + 0: 'General', + 1: '0', + 2: '0.00', + 3: '#,##0', + 4: '#,##0.00', + 9: '0%', + 10: '0.00%', + 11: '0.00E+00', + 12: '# ?/?', + 13: '# ??/??', + 14: 'm/d/yy', + 15: 'd-mmm-yy', + 16: 'd-mmm', + 17: 'mmm-yy', + 18: 'h:mm AM/PM', + 19: 'h:mm:ss AM/PM', + 20: 'h:mm', + 21: 'h:mm:ss', + 22: 'm/d/yy h:mm', + 37: '#,##0 ;(#,##0)', + 38: '#,##0 ;[Red](#,##0)', + 39: '#,##0.00;(#,##0.00)', + 40: '#,##0.00;[Red](#,##0.00)', + 45: 'mm:ss', + 46: '[h]:mm:ss', + 47: 'mmss.0', + 48: '##0.0E+0', + 49: '@', + 56: '"上午/下午 "hh"時"mm"分"ss"秒 "' +}; + +/* Defaults determined by systematically testing in Excel 2019 */ + +/* These formats appear to default to other formats in the table */ +var SSF_default_map = { + 5: 37, 6: 38, 7: 39, 8: 40, // 5 -> 37 ... 8 -> 40 + + 23: 0, 24: 0, 25: 0, 26: 0, // 23 -> 0 ... 26 -> 0 + + 27: 14, 28: 14, 29: 14, 30: 14, 31: 14, // 27 -> 14 ... 31 -> 14 + + 50: 14, 51: 14, 52: 14, 53: 14, 54: 14, // 50 -> 14 ... 58 -> 14 + 55: 14, 56: 14, 57: 14, 58: 14, + 59: 1, 60: 2, 61: 3, 62: 4, // 59 -> 1 ... 62 -> 4 + + 67: 9, 68: 10, // 67 -> 9 ... 68 -> 10 + 69: 12, 70: 13, 71: 14, // 69 -> 12 ... 71 -> 14 + 72: 14, 73: 15, 74: 16, 75: 17, // 72 -> 14 ... 75 -> 17 + 76: 20, 77: 21, 78: 22, // 76 -> 20 ... 78 -> 22 + 79: 45, 80: 46, 81: 47, // 79 -> 45 ... 81 -> 47 + 82: 0 // 82 -> 0 ... 65536 -> 0 (omitted) +}; + + +/* These formats technically refer to Accounting formats with no equivalent */ +var SSF_default_str = { + // 5 -- Currency, 0 decimal, black negative + 5: '"$"#,##0_);\\("$"#,##0\\)', + 63: '"$"#,##0_);\\("$"#,##0\\)', + + // 6 -- Currency, 0 decimal, red negative + 6: '"$"#,##0_);[Red]\\("$"#,##0\\)', + 64: '"$"#,##0_);[Red]\\("$"#,##0\\)', + + // 7 -- Currency, 2 decimal, black negative + 7: '"$"#,##0.00_);\\("$"#,##0.00\\)', + 65: '"$"#,##0.00_);\\("$"#,##0.00\\)', + + // 8 -- Currency, 2 decimal, red negative + 8: '"$"#,##0.00_);[Red]\\("$"#,##0.00\\)', + 66: '"$"#,##0.00_);[Red]\\("$"#,##0.00\\)', + + // 41 -- Accounting, 0 decimal, No Symbol + 41: '_(* #,##0_);_(* \\(#,##0\\);_(* "-"_);_(@_)', + + // 42 -- Accounting, 0 decimal, $ Symbol + 42: '_("$"* #,##0_);_("$"* \\(#,##0\\);_("$"* "-"_);_(@_)', + + // 43 -- Accounting, 2 decimal, No Symbol + 43: '_(* #,##0.00_);_(* \\(#,##0.00\\);_(* "-"??_);_(@_)', + + // 44 -- Accounting, 2 decimal, $ Symbol + 44: '_("$"* #,##0.00_);_("$"* \\(#,##0.00\\);_("$"* "-"??_);_(@_)' +}; + +function SSF_frac(x, D, mixed) { + var sgn = x < 0 ? -1 : 1; + var B = x * sgn; + var P_2 = 0, P_1 = 1, P = 0; + var Q_2 = 1, Q_1 = 0, Q = 0; + var A = Math.floor(B); + while(Q_1 < D) { + A = Math.floor(B); + P = A * P_1 + P_2; + Q = A * Q_1 + Q_2; + if((B - A) < 0.00000005) break; + B = 1 / (B - A); + P_2 = P_1; P_1 = P; + Q_2 = Q_1; Q_1 = Q; + } + if(Q > D) { if(Q_1 > D) { Q = Q_2; P = P_2; } else { Q = Q_1; P = P_1; } } + if(!mixed) return [0, sgn * P, Q]; + var q = Math.floor(sgn * P/Q); + return [q, sgn*P - q*Q, Q]; +} +function SSF_parse_date_code(v,opts,b2) { + if(v > 2958465 || v < 0) return null; + var date = (v|0), time = Math.floor(86400 * (v - date)), dow=0; + var dout=[]; + var out={D:date, T:time, u:86400*(v-date)-time,y:0,m:0,d:0,H:0,M:0,S:0,q:0}; + if(Math.abs(out.u) < 1e-6) out.u = 0; + if(opts && opts.date1904) date += 1462; + if(out.u > 0.9999) { + out.u = 0; + if(++time == 86400) { out.T = time = 0; ++date; ++out.D; } + } + if(date === 60) {dout = b2 ? [1317,10,29] : [1900,2,29]; dow=3;} + else if(date === 0) {dout = b2 ? [1317,8,29] : [1900,1,0]; dow=6;} + else { + if(date > 60) --date; + /* 1 = Jan 1 1900 in Gregorian */ + var d = new Date(1900, 0, 1); + d.setDate(d.getDate() + date - 1); + dout = [d.getFullYear(), d.getMonth()+1,d.getDate()]; + dow = d.getDay(); + if(date < 60) dow = (dow + 6) % 7; + if(b2) dow = SSF_fix_hijri(d, dout); + } + out.y = dout[0]; out.m = dout[1]; out.d = dout[2]; + out.S = time % 60; time = Math.floor(time / 60); + out.M = time % 60; time = Math.floor(time / 60); + out.H = time; + out.q = dow; + return out; +} +var SSFbasedate = new Date(1899, 11, 31, 0, 0, 0); +var SSFdnthresh = SSFbasedate.getTime(); +var SSFbase1904 = new Date(1900, 2, 1, 0, 0, 0); +function datenum_local(v, date1904) { + var epoch = v.getTime(); + if(date1904) epoch -= 1461*24*60*60*1000; + else if(v >= SSFbase1904) epoch += 24*60*60*1000; + return (epoch - (SSFdnthresh + (v.getTimezoneOffset() - SSFbasedate.getTimezoneOffset()) * 60000)) / (24 * 60 * 60 * 1000); +} +/* ECMA-376 18.8.30 numFmt*/ +/* Note: `toPrecision` uses standard form when prec > E and E >= -6 */ +/* exponent >= -9 and <= 9 */ +function SSF_strip_decimal(o) { + return (o.indexOf(".") == -1) ? o : o.replace(/(?:\.0*|(\.\d*[1-9])0+)$/, "$1"); +} + +/* General Exponential always shows 2 digits exp and trims the mantissa */ +function SSF_normalize_exp(o) { + if(o.indexOf("E") == -1) return o; + return o.replace(/(?:\.0*|(\.\d*[1-9])0+)[Ee]/,"$1E").replace(/(E[+-])(\d)$/,"$10$2"); +} + +/* exponent >= -9 and <= 9 */ +function SSF_small_exp(v) { + var w = (v<0?12:11); + var o = SSF_strip_decimal(v.toFixed(12)); if(o.length <= w) return o; + o = v.toPrecision(10); if(o.length <= w) return o; + return v.toExponential(5); +} + +/* exponent >= 11 or <= -10 likely exponential */ +function SSF_large_exp(v) { + var o = SSF_strip_decimal(v.toFixed(11)); + return (o.length > (v<0?12:11) || o === "0" || o === "-0") ? v.toPrecision(6) : o; +} + +function SSF_general_num(v) { + var V = Math.floor(Math.log(Math.abs(v))*Math.LOG10E), o; + + if(V >= -4 && V <= -1) o = v.toPrecision(10+V); + else if(Math.abs(V) <= 9) o = SSF_small_exp(v); + else if(V === 10) o = v.toFixed(10).substr(0,12); + else o = SSF_large_exp(v); + + return SSF_strip_decimal(SSF_normalize_exp(o.toUpperCase())); +} + + +/* + "General" rules: + - text is passed through ("@") + - booleans are rendered as TRUE/FALSE + - "up to 11 characters" displayed for numbers + - Default date format (code 14) used for Dates + + The longest 32-bit integer text is "-2147483648", exactly 11 chars + TODO: technically the display depends on the width of the cell +*/ +function SSF_general(v, opts) { + switch(typeof v) { + case 'string': return v; + case 'boolean': return v ? "TRUE" : "FALSE"; + case 'number': return (v|0) === v ? v.toString(10) : SSF_general_num(v); + case 'undefined': return ""; + case 'object': + if(v == null) return ""; + if(v instanceof Date) return SSF_format(14, datenum_local(v, opts && opts.date1904), opts); + } + throw new Error("unsupported value in General format: " + v); +} + +function SSF_fix_hijri(date, o) { + /* TODO: properly adjust y/m/d and */ + o[0] -= 581; + var dow = date.getDay(); + if(date < 60) dow = (dow + 6) % 7; + return dow; +} +//var THAI_DIGITS = "\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59".split(""); +function SSF_write_date(type, fmt, val, ss0) { + var o="", ss=0, tt=0, y = val.y, out, outl = 0; + switch(type) { + case 98: /* 'b' buddhist year */ + y = val.y + 543; + /* falls through */ + case 121: /* 'y' year */ + switch(fmt.length) { + case 1: case 2: out = y % 100; outl = 2; break; + default: out = y % 10000; outl = 4; break; + } break; + case 109: /* 'm' month */ + switch(fmt.length) { + case 1: case 2: out = val.m; outl = fmt.length; break; + case 3: return months[val.m-1][1]; + case 5: return months[val.m-1][0]; + default: return months[val.m-1][2]; + } break; + case 100: /* 'd' day */ + switch(fmt.length) { + case 1: case 2: out = val.d; outl = fmt.length; break; + case 3: return days[val.q][0]; + default: return days[val.q][1]; + } break; + case 104: /* 'h' 12-hour */ + switch(fmt.length) { + case 1: case 2: out = 1+(val.H+11)%12; outl = fmt.length; break; + default: throw 'bad hour format: ' + fmt; + } break; + case 72: /* 'H' 24-hour */ + switch(fmt.length) { + case 1: case 2: out = val.H; outl = fmt.length; break; + default: throw 'bad hour format: ' + fmt; + } break; + case 77: /* 'M' minutes */ + switch(fmt.length) { + case 1: case 2: out = val.M; outl = fmt.length; break; + default: throw 'bad minute format: ' + fmt; + } break; + case 115: /* 's' seconds */ + if(fmt != 's' && fmt != 'ss' && fmt != '.0' && fmt != '.00' && fmt != '.000') throw 'bad second format: ' + fmt; + if(val.u === 0 && (fmt == "s" || fmt == "ss")) return pad0(val.S, fmt.length); +if(ss0 >= 2) tt = ss0 === 3 ? 1000 : 100; + else tt = ss0 === 1 ? 10 : 1; + ss = Math.round((tt)*(val.S + val.u)); + if(ss >= 60*tt) ss = 0; + if(fmt === 's') return ss === 0 ? "0" : ""+ss/tt; + o = pad0(ss,2 + ss0); + if(fmt === 'ss') return o.substr(0,2); + return "." + o.substr(2,fmt.length-1); + case 90: /* 'Z' absolute time */ + switch(fmt) { + case '[h]': case '[hh]': out = val.D*24+val.H; break; + case '[m]': case '[mm]': out = (val.D*24+val.H)*60+val.M; break; + case '[s]': case '[ss]': out = ((val.D*24+val.H)*60+val.M)*60+Math.round(val.S+val.u); break; + default: throw 'bad abstime format: ' + fmt; + } outl = fmt.length === 3 ? 1 : 2; break; + case 101: /* 'e' era */ + out = y; outl = 1; break; + } + var outstr = outl > 0 ? pad0(out, outl) : ""; + return outstr; +} + + +/*jshint -W086 */ +/*jshint +W086 */ +function commaify(s) { + var w = 3; + if(s.length <= w) return s; + var j = (s.length % w), o = s.substr(0,j); + for(; j!=s.length; j+=w) o+=(o.length > 0 ? "," : "") + s.substr(j,w); + return o; +} +var pct1 = /%/g; +function write_num_pct(type, fmt, val){ + var sfmt = fmt.replace(pct1,""), mul = fmt.length - sfmt.length; + return write_num(type, sfmt, val * Math.pow(10,2*mul)) + fill("%",mul); +} + +function write_num_cm(type, fmt, val){ + var idx = fmt.length - 1; + while(fmt.charCodeAt(idx-1) === 44) --idx; + return write_num(type, fmt.substr(0,idx), val / Math.pow(10,3*(fmt.length-idx))); +} + +function write_num_exp(fmt, val){ + var o; + var idx = fmt.indexOf("E") - fmt.indexOf(".") - 1; + if(fmt.match(/^#+0.0E\+0$/)) { + if(val == 0) return "0.0E+0"; + else if(val < 0) return "-" + write_num_exp(fmt, -val); + var period = fmt.indexOf("."); if(period === -1) period=fmt.indexOf('E'); + var ee = Math.floor(Math.log(val)*Math.LOG10E)%period; + if(ee < 0) ee += period; + o = (val/Math.pow(10,ee)).toPrecision(idx+1+(period+ee)%period); + if(o.indexOf("e") === -1) { + var fakee = Math.floor(Math.log(val)*Math.LOG10E); + if(o.indexOf(".") === -1) o = o.charAt(0) + "." + o.substr(1) + "E+" + (fakee - o.length+ee); + else o += "E+" + (fakee - ee); + while(o.substr(0,2) === "0.") { + o = o.charAt(0) + o.substr(2,period) + "." + o.substr(2+period); + o = o.replace(/^0+([1-9])/,"$1").replace(/^0+\./,"0."); + } + o = o.replace(/\+-/,"-"); + } + o = o.replace(/^([+-]?)(\d*)\.(\d*)[Ee]/,function($$,$1,$2,$3) { return $1 + $2 + $3.substr(0,(period+ee)%period) + "." + $3.substr(ee) + "E"; }); + } else o = val.toExponential(idx); + if(fmt.match(/E\+00$/) && o.match(/e[+-]\d$/)) o = o.substr(0,o.length-1) + "0" + o.charAt(o.length-1); + if(fmt.match(/E\-/) && o.match(/e\+/)) o = o.replace(/e\+/,"e"); + return o.replace("e","E"); +} +var frac1 = /# (\?+)( ?)\/( ?)(\d+)/; +function write_num_f1(r, aval, sign) { + var den = parseInt(r[4],10), rr = Math.round(aval * den), base = Math.floor(rr/den); + var myn = (rr - base*den), myd = den; + return sign + (base === 0 ? "" : ""+base) + " " + (myn === 0 ? fill(" ", r[1].length + 1 + r[4].length) : pad_(myn,r[1].length) + r[2] + "/" + r[3] + pad0(myd,r[4].length)); +} +function write_num_f2(r, aval, sign) { + return sign + (aval === 0 ? "" : ""+aval) + fill(" ", r[1].length + 2 + r[4].length); +} +var dec1 = /^#*0*\.([0#]+)/; +var closeparen = /\).*[0#]/; +var phone = /\(###\) ###\\?-####/; +function hashq(str) { + var o = "", cc; + for(var i = 0; i != str.length; ++i) switch((cc=str.charCodeAt(i))) { + case 35: break; + case 63: o+= " "; break; + case 48: o+= "0"; break; + default: o+= String.fromCharCode(cc); + } + return o; +} +function rnd(val, d) { var dd = Math.pow(10,d); return ""+(Math.round(val * dd)/dd); } +function dec(val, d) { + var _frac = val - Math.floor(val), dd = Math.pow(10,d); + if (d < ('' + Math.round(_frac * dd)).length) return 0; + return Math.round(_frac * dd); +} +function carry(val, d) { + if (d < ('' + Math.round((val-Math.floor(val))*Math.pow(10,d))).length) { + return 1; + } + return 0; +} +function flr(val) { + if(val < 2147483647 && val > -2147483648) return ""+(val >= 0 ? (val|0) : (val-1|0)); + return ""+Math.floor(val); +} +function write_num_flt(type, fmt, val) { + if(type.charCodeAt(0) === 40 && !fmt.match(closeparen)) { + var ffmt = fmt.replace(/\( */,"").replace(/ \)/,"").replace(/\)/,""); + if(val >= 0) return write_num_flt('n', ffmt, val); + return '(' + write_num_flt('n', ffmt, -val) + ')'; + } + if(fmt.charCodeAt(fmt.length - 1) === 44) return write_num_cm(type, fmt, val); + if(fmt.indexOf('%') !== -1) return write_num_pct(type, fmt, val); + if(fmt.indexOf('E') !== -1) return write_num_exp(fmt, val); + if(fmt.charCodeAt(0) === 36) return "$"+write_num_flt(type,fmt.substr(fmt.charAt(1)==' '?2:1),val); + var o; + var r, ri, ff, aval = Math.abs(val), sign = val < 0 ? "-" : ""; + if(fmt.match(/^00+$/)) return sign + pad0r(aval,fmt.length); + if(fmt.match(/^[#?]+$/)) { + o = pad0r(val,0); if(o === "0") o = ""; + return o.length > fmt.length ? o : hashq(fmt.substr(0,fmt.length-o.length)) + o; + } + if((r = fmt.match(frac1))) return write_num_f1(r, aval, sign); + if(fmt.match(/^#+0+$/)) return sign + pad0r(aval,fmt.length - fmt.indexOf("0")); + if((r = fmt.match(dec1))) { + o = rnd(val, r[1].length).replace(/^([^\.]+)$/,"$1."+hashq(r[1])).replace(/\.$/,"."+hashq(r[1])).replace(/\.(\d*)$/,function($$, $1) { return "." + $1 + fill("0", hashq(r[1]).length-$1.length); }); + return fmt.indexOf("0.") !== -1 ? o : o.replace(/^0\./,"."); + } + fmt = fmt.replace(/^#+([0.])/, "$1"); + if((r = fmt.match(/^(0*)\.(#*)$/))) { + return sign + rnd(aval, r[2].length).replace(/\.(\d*[1-9])0*$/,".$1").replace(/^(-?\d*)$/,"$1.").replace(/^0\./,r[1].length?"0.":"."); + } + if((r = fmt.match(/^#{1,3},##0(\.?)$/))) return sign + commaify(pad0r(aval,0)); + if((r = fmt.match(/^#,##0\.([#0]*0)$/))) { + return val < 0 ? "-" + write_num_flt(type, fmt, -val) : commaify(""+(Math.floor(val) + carry(val, r[1].length))) + "." + pad0(dec(val, r[1].length),r[1].length); + } + if((r = fmt.match(/^#,#*,#0/))) return write_num_flt(type,fmt.replace(/^#,#*,/,""),val); + if((r = fmt.match(/^([0#]+)(\\?-([0#]+))+$/))) { + o = _strrev(write_num_flt(type, fmt.replace(/[\\-]/g,""), val)); + ri = 0; + return _strrev(_strrev(fmt.replace(/\\/g,"")).replace(/[0#]/g,function(x){return ri= 0) return write_num_int('n', ffmt, val); + return '(' + write_num_int('n', ffmt, -val) + ')'; + } + if(fmt.charCodeAt(fmt.length - 1) === 44) return write_num_cm2(type, fmt, val); + if(fmt.indexOf('%') !== -1) return write_num_pct2(type, fmt, val); + if(fmt.indexOf('E') !== -1) return write_num_exp2(fmt, val); + if(fmt.charCodeAt(0) === 36) return "$"+write_num_int(type,fmt.substr(fmt.charAt(1)==' '?2:1),val); + var o; + var r, ri, ff, aval = Math.abs(val), sign = val < 0 ? "-" : ""; + if(fmt.match(/^00+$/)) return sign + pad0(aval,fmt.length); + if(fmt.match(/^[#?]+$/)) { + o = (""+val); if(val === 0) o = ""; + return o.length > fmt.length ? o : hashq(fmt.substr(0,fmt.length-o.length)) + o; + } + if((r = fmt.match(frac1))) return write_num_f2(r, aval, sign); + if(fmt.match(/^#+0+$/)) return sign + pad0(aval,fmt.length - fmt.indexOf("0")); + if((r = fmt.match(dec1))) { +o = (""+val).replace(/^([^\.]+)$/,"$1."+hashq(r[1])).replace(/\.$/,"."+hashq(r[1])); + o = o.replace(/\.(\d*)$/,function($$, $1) { +return "." + $1 + fill("0", hashq(r[1]).length-$1.length); }); + return fmt.indexOf("0.") !== -1 ? o : o.replace(/^0\./,"."); + } + fmt = fmt.replace(/^#+([0.])/, "$1"); + if((r = fmt.match(/^(0*)\.(#*)$/))) { + return sign + (""+aval).replace(/\.(\d*[1-9])0*$/,".$1").replace(/^(-?\d*)$/,"$1.").replace(/^0\./,r[1].length?"0.":"."); + } + if((r = fmt.match(/^#{1,3},##0(\.?)$/))) return sign + commaify((""+aval)); + if((r = fmt.match(/^#,##0\.([#0]*0)$/))) { + return val < 0 ? "-" + write_num_int(type, fmt, -val) : commaify((""+val)) + "." + fill('0',r[1].length); + } + if((r = fmt.match(/^#,#*,#0/))) return write_num_int(type,fmt.replace(/^#,#*,/,""),val); + if((r = fmt.match(/^([0#]+)(\\?-([0#]+))+$/))) { + o = _strrev(write_num_int(type, fmt.replace(/[\\-]/g,""), val)); + ri = 0; + return _strrev(_strrev(fmt.replace(/\\/g,"")).replace(/[0#]/g,function(x){return ri -1 || (c=='\\' && fmt.charAt(i+1) == "-" && "0#".indexOf(fmt.charAt(i+2))>-1))){/* empty */} + break; + case '?': while(fmt.charAt(++i) === c){/* empty */} break; + case '*': ++i; if(fmt.charAt(i) == ' ' || fmt.charAt(i) == '*') ++i; break; + case '(': case ')': ++i; break; + case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': + while(i < fmt.length && "0123456789".indexOf(fmt.charAt(++i)) > -1){/* empty */} break; + case ' ': ++i; break; + default: ++i; break; + } + } + return false; +} + +function eval_fmt(fmt, v, opts, flen) { + var out = [], o = "", i = 0, c = "", lst='t', dt, j, cc; + var hr='H'; + /* Tokenize */ + while(i < fmt.length) { + switch((c = fmt.charAt(i))) { + case 'G': /* General */ + if(!SSF_isgeneral(fmt, i)) throw new Error('unrecognized character ' + c + ' in ' +fmt); + out[out.length] = {t:'G', v:'General'}; i+=7; break; + case '"': /* Literal text */ + for(o="";(cc=fmt.charCodeAt(++i)) !== 34 && i < fmt.length;) o += String.fromCharCode(cc); + out[out.length] = {t:'t', v:o}; ++i; break; + case '\\': var w = fmt.charAt(++i), t = (w === "(" || w === ")") ? w : 't'; + out[out.length] = {t:t, v:w}; ++i; break; + case '_': out[out.length] = {t:'t', v:" "}; i+=2; break; + case '@': /* Text Placeholder */ + out[out.length] = {t:'T', v:v}; ++i; break; + case 'B': case 'b': + if(fmt.charAt(i+1) === "1" || fmt.charAt(i+1) === "2") { + if(dt==null) { dt=SSF_parse_date_code(v, opts, fmt.charAt(i+1) === "2"); if(dt==null) return ""; } + out[out.length] = {t:'X', v:fmt.substr(i,2)}; lst = c; i+=2; break; + } + /* falls through */ + case 'M': case 'D': case 'Y': case 'H': case 'S': case 'E': + c = c.toLowerCase(); + /* falls through */ + case 'm': case 'd': case 'y': case 'h': case 's': case 'e': case 'g': + if(v < 0) return ""; + if(dt==null) { dt=SSF_parse_date_code(v, opts); if(dt==null) return ""; } + o = c; while(++i < fmt.length && fmt.charAt(i).toLowerCase() === c) o+=c; + if(c === 'm' && lst.toLowerCase() === 'h') c = 'M'; + if(c === 'h') c = hr; + out[out.length] = {t:c, v:o}; lst = c; break; + case 'A': case 'a': case '上': + var q={t:c, v:c}; + if(dt==null) dt=SSF_parse_date_code(v, opts); + if(fmt.substr(i, 3).toUpperCase() === "A/P") { if(dt!=null) q.v = dt.H >= 12 ? "P" : "A"; q.t = 'T'; hr='h';i+=3;} + else if(fmt.substr(i,5).toUpperCase() === "AM/PM") { if(dt!=null) q.v = dt.H >= 12 ? "PM" : "AM"; q.t = 'T'; i+=5; hr='h'; } + else if(fmt.substr(i,5).toUpperCase() === "上午/下午") { if(dt!=null) q.v = dt.H >= 12 ? "下午" : "上午"; q.t = 'T'; i+=5; hr='h'; } + else { q.t = "t"; ++i; } + if(dt==null && q.t === 'T') return ""; + out[out.length] = q; lst = c; break; + case '[': + o = c; + while(fmt.charAt(i++) !== ']' && i < fmt.length) o += fmt.charAt(i); + if(o.slice(-1) !== ']') throw 'unterminated "[" block: |' + o + '|'; + if(o.match(SSF_abstime)) { + if(dt==null) { dt=SSF_parse_date_code(v, opts); if(dt==null) return ""; } + out[out.length] = {t:'Z', v:o.toLowerCase()}; + lst = o.charAt(1); + } else if(o.indexOf("$") > -1) { + o = (o.match(/\$([^-\[\]]*)/)||[])[1]||"$"; + if(!fmt_is_date(fmt)) out[out.length] = {t:'t',v:o}; + } + break; + /* Numbers */ + case '.': + if(dt != null) { + o = c; while(++i < fmt.length && (c=fmt.charAt(i)) === "0") o += c; + out[out.length] = {t:'s', v:o}; break; + } + /* falls through */ + case '0': case '#': + o = c; while(++i < fmt.length && "0#?.,E+-%".indexOf(c=fmt.charAt(i)) > -1) o += c; + out[out.length] = {t:'n', v:o}; break; + case '?': + o = c; while(fmt.charAt(++i) === c) o+=c; + out[out.length] = {t:c, v:o}; lst = c; break; + case '*': ++i; if(fmt.charAt(i) == ' ' || fmt.charAt(i) == '*') ++i; break; // ** + case '(': case ')': out[out.length] = {t:(flen===1?'t':c), v:c}; ++i; break; + case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': + o = c; while(i < fmt.length && "0123456789".indexOf(fmt.charAt(++i)) > -1) o+=fmt.charAt(i); + out[out.length] = {t:'D', v:o}; break; + case ' ': out[out.length] = {t:c, v:c}; ++i; break; + case '$': out[out.length] = {t:'t', v:'$'}; ++i; break; + default: + if(",$-+/():!^&'~{}<>=€acfijklopqrtuvwxzP".indexOf(c) === -1) throw new Error('unrecognized character ' + c + ' in ' + fmt); + out[out.length] = {t:'t', v:c}; ++i; break; + } + } + + /* Scan for date/time parts */ + var bt = 0, ss0 = 0, ssm; + for(i=out.length-1, lst='t'; i >= 0; --i) { + switch(out[i].t) { + case 'h': case 'H': out[i].t = hr; lst='h'; if(bt < 1) bt = 1; break; + case 's': + if((ssm=out[i].v.match(/\.0+$/))) ss0=Math.max(ss0,ssm[0].length-1); + if(bt < 3) bt = 3; + /* falls through */ + case 'd': case 'y': case 'M': case 'e': lst=out[i].t; break; + case 'm': if(lst === 's') { out[i].t = 'M'; if(bt < 2) bt = 2; } break; + case 'X': /*if(out[i].v === "B2");*/ + break; + case 'Z': + if(bt < 1 && out[i].v.match(/[Hh]/)) bt = 1; + if(bt < 2 && out[i].v.match(/[Mm]/)) bt = 2; + if(bt < 3 && out[i].v.match(/[Ss]/)) bt = 3; + } + } + /* time rounding depends on presence of minute / second / usec fields */ + switch(bt) { + case 0: break; + case 1: +if(dt.u >= 0.5) { dt.u = 0; ++dt.S; } + if(dt.S >= 60) { dt.S = 0; ++dt.M; } + if(dt.M >= 60) { dt.M = 0; ++dt.H; } + break; + case 2: +if(dt.u >= 0.5) { dt.u = 0; ++dt.S; } + if(dt.S >= 60) { dt.S = 0; ++dt.M; } + break; + } + + /* replace fields */ + var nstr = "", jj; + for(i=0; i < out.length; ++i) { + switch(out[i].t) { + case 't': case 'T': case ' ': case 'D': break; + case 'X': out[i].v = ""; out[i].t = ";"; break; + case 'd': case 'm': case 'y': case 'h': case 'H': case 'M': case 's': case 'e': case 'b': case 'Z': +out[i].v = SSF_write_date(out[i].t.charCodeAt(0), out[i].v, dt, ss0); + out[i].t = 't'; break; + case 'n': case '?': + jj = i+1; + while(out[jj] != null && ( + (c=out[jj].t) === "?" || c === "D" || + ((c === " " || c === "t") && out[jj+1] != null && (out[jj+1].t === '?' || out[jj+1].t === "t" && out[jj+1].v === '/')) || + (out[i].t === '(' && (c === ' ' || c === 'n' || c === ')')) || + (c === 't' && (out[jj].v === '/' || out[jj].v === ' ' && out[jj+1] != null && out[jj+1].t == '?')) + )) { + out[i].v += out[jj].v; + out[jj] = {v:"", t:";"}; ++jj; + } + nstr += out[i].v; + i = jj-1; break; + case 'G': out[i].t = 't'; out[i].v = SSF_general(v,opts); break; + } + } + var vv = "", myv, ostr; + if(nstr.length > 0) { + if(nstr.charCodeAt(0) == 40) /* '(' */ { + myv = (v<0&&nstr.charCodeAt(0) === 45 ? -v : v); + ostr = write_num('n', nstr, myv); + } else { + myv = (v<0 && flen > 1 ? -v : v); + ostr = write_num('n', nstr, myv); + if(myv < 0 && out[0] && out[0].t == 't') { + ostr = ostr.substr(1); + out[0].v = "-" + out[0].v; + } + } + jj=ostr.length-1; + var decpt = out.length; + for(i=0; i < out.length; ++i) if(out[i] != null && out[i].t != 't' && out[i].v.indexOf(".") > -1) { decpt = i; break; } + var lasti=out.length; + if(decpt === out.length && ostr.indexOf("E") === -1) { + for(i=out.length-1; i>= 0;--i) { + if(out[i] == null || 'n?'.indexOf(out[i].t) === -1) continue; + if(jj>=out[i].v.length-1) { jj -= out[i].v.length; out[i].v = ostr.substr(jj+1, out[i].v.length); } + else if(jj < 0) out[i].v = ""; + else { out[i].v = ostr.substr(0, jj+1); jj = -1; } + out[i].t = 't'; + lasti = i; + } + if(jj>=0 && lasti= 0; --i) { + if(out[i] == null || 'n?'.indexOf(out[i].t) === -1) continue; + j=out[i].v.indexOf(".")>-1&&i===decpt?out[i].v.indexOf(".")-1:out[i].v.length-1; + vv = out[i].v.substr(j+1); + for(; j>=0; --j) { + if(jj>=0 && (out[i].v.charAt(j) === "0" || out[i].v.charAt(j) === "#")) vv = ostr.charAt(jj--) + vv; + } + out[i].v = vv; + out[i].t = 't'; + lasti = i; + } + if(jj>=0 && lasti-1&&i===decpt?out[i].v.indexOf(".")+1:0; + vv = out[i].v.substr(0,j); + for(; j-1) { + myv = (flen >1 && v < 0 && i>0 && out[i-1].v === "-" ? -v:v); + out[i].v = write_num(out[i].t, out[i].v, myv); + out[i].t = 't'; + } + var retval = ""; + for(i=0; i !== out.length; ++i) if(out[i] != null) retval += out[i].v; + return retval; +} + +var cfregex2 = /\[(=|>[=]?|<[>=]?)(-?\d+(?:\.\d*)?)\]/; +function chkcond(v, rr) { + if(rr == null) return false; + var thresh = parseFloat(rr[2]); + switch(rr[1]) { + case "=": if(v == thresh) return true; break; + case ">": if(v > thresh) return true; break; + case "<": if(v < thresh) return true; break; + case "<>": if(v != thresh) return true; break; + case ">=": if(v >= thresh) return true; break; + case "<=": if(v <= thresh) return true; break; + } + return false; +} +function choose_fmt(f, v) { + var fmt = SSF_split_fmt(f); + var l = fmt.length, lat = fmt[l-1].indexOf("@"); + if(l<4 && lat>-1) --l; + if(fmt.length > 4) throw new Error("cannot find right format for |" + fmt.join("|") + "|"); + if(typeof v !== "number") return [4, fmt.length === 4 || lat>-1?fmt[fmt.length-1]:"@"]; + switch(fmt.length) { + case 1: fmt = lat>-1 ? ["General", "General", "General", fmt[0]] : [fmt[0], fmt[0], fmt[0], "@"]; break; + case 2: fmt = lat>-1 ? [fmt[0], fmt[0], fmt[0], fmt[1]] : [fmt[0], fmt[1], fmt[0], "@"]; break; + case 3: fmt = lat>-1 ? [fmt[0], fmt[1], fmt[0], fmt[2]] : [fmt[0], fmt[1], fmt[2], "@"]; break; + case 4: break; + } + var ff = v > 0 ? fmt[0] : v < 0 ? fmt[1] : fmt[2]; + if(fmt[0].indexOf("[") === -1 && fmt[1].indexOf("[") === -1) return [l, ff]; + if(fmt[0].match(/\[[=<>]/) != null || fmt[1].match(/\[[=<>]/) != null) { + var m1 = fmt[0].match(cfregex2); + var m2 = fmt[1].match(cfregex2); + return chkcond(v, m1) ? [l, fmt[0]] : chkcond(v, m2) ? [l, fmt[1]] : [l, fmt[m1 != null && m2 != null ? 2 : 1]]; + } + return [l, ff]; +} +function SSF_format(fmt,v,o) { + if(o == null) o = {}; + var sfmt = ""; + switch(typeof fmt) { + case "string": + if(fmt == "m/d/yy" && o.dateNF) sfmt = o.dateNF; + else sfmt = fmt; + break; + case "number": + if(fmt == 14 && o.dateNF) sfmt = o.dateNF; + else sfmt = (o.table != null ? (o.table) : table_fmt)[fmt]; + if(sfmt == null) sfmt = (o.table && o.table[SSF_default_map[fmt]]) || table_fmt[SSF_default_map[fmt]]; + if(sfmt == null) sfmt = SSF_default_str[fmt] || "General"; + break; + } + if(SSF_isgeneral(sfmt,0)) return SSF_general(v, o); + if(v instanceof Date) v = datenum_local(v, o.date1904); + var f = choose_fmt(sfmt, v); + if(SSF_isgeneral(f[1])) return SSF_general(v, o); + if(v === true) v = "TRUE"; else if(v === false) v = "FALSE"; + else if(v === "" || v == null) return ""; + return eval_fmt(f[1], v, o, f[0]); +} +function SSF_load(fmt, idx) { + if(typeof idx != 'number') { + idx = +idx || -1; +for(var i = 0; i < 0x0188; ++i) { +if(table_fmt[i] == undefined) { if(idx < 0) idx = i; continue; } + if(table_fmt[i] == fmt) { idx = i; break; } + } +if(idx < 0) idx = 0x187; + } +table_fmt[idx] = fmt; + return idx; +} +function SSF_load_table(tbl) { + for(var i=0; i!=0x0188; ++i) + if(tbl[i] !== undefined) SSF_load(tbl[i], i); +} + +function make_ssf() { + table_fmt = SSF_init_table(); +} + +var SSF = { + format: SSF_format, + load: SSF_load, + _table: table_fmt, + load_table: SSF_load_table, + parse_date_code: SSF_parse_date_code, + is_date: fmt_is_date, + get_table: function get_table() { return SSF._table = table_fmt; } +}; + +var SSFImplicit/*{[number]:string}*/ = ({ + "5": '"$"#,##0_);\\("$"#,##0\\)', + "6": '"$"#,##0_);[Red]\\("$"#,##0\\)', + "7": '"$"#,##0.00_);\\("$"#,##0.00\\)', + "8": '"$"#,##0.00_);[Red]\\("$"#,##0.00\\)', + "23": 'General', "24": 'General', "25": 'General', "26": 'General', + "27": 'm/d/yy', "28": 'm/d/yy', "29": 'm/d/yy', "30": 'm/d/yy', "31": 'm/d/yy', + "32": 'h:mm:ss', "33": 'h:mm:ss', "34": 'h:mm:ss', "35": 'h:mm:ss', + "36": 'm/d/yy', + "41": '_(* #,##0_);_(* \(#,##0\);_(* "-"_);_(@_)', + "42": '_("$"* #,##0_);_("$"* \(#,##0\);_("$"* "-"_);_(@_)', + "43": '_(* #,##0.00_);_(* \(#,##0.00\);_(* "-"??_);_(@_)', + "44": '_("$"* #,##0.00_);_("$"* \(#,##0.00\);_("$"* "-"??_);_(@_)', + "50": 'm/d/yy', "51": 'm/d/yy', "52": 'm/d/yy', "53": 'm/d/yy', "54": 'm/d/yy', + "55": 'm/d/yy', "56": 'm/d/yy', "57": 'm/d/yy', "58": 'm/d/yy', + "59": '0', + "60": '0.00', + "61": '#,##0', + "62": '#,##0.00', + "63": '"$"#,##0_);\\("$"#,##0\\)', + "64": '"$"#,##0_);[Red]\\("$"#,##0\\)', + "65": '"$"#,##0.00_);\\("$"#,##0.00\\)', + "66": '"$"#,##0.00_);[Red]\\("$"#,##0.00\\)', + "67": '0%', + "68": '0.00%', + "69": '# ?/?', + "70": '# ??/??', + "71": 'm/d/yy', + "72": 'm/d/yy', + "73": 'd-mmm-yy', + "74": 'd-mmm', + "75": 'mmm-yy', + "76": 'h:mm', + "77": 'h:mm:ss', + "78": 'm/d/yy h:mm', + "79": 'mm:ss', + "80": '[h]:mm:ss', + "81": 'mmss.0' +}); + +/* dateNF parse TODO: move to SSF */ +var dateNFregex = /[dD]+|[mM]+|[yYeE]+|[Hh]+|[Ss]+/g; +function dateNF_regex(dateNF) { + var fmt = typeof dateNF == "number" ? table_fmt[dateNF] : dateNF; + fmt = fmt.replace(dateNFregex, "(\\d+)"); + return new RegExp("^" + fmt + "$"); +} +function dateNF_fix(str, dateNF, match) { + var Y = -1, m = -1, d = -1, H = -1, M = -1, S = -1; + (dateNF.match(dateNFregex)||[]).forEach(function(n, i) { + var v = parseInt(match[i+1], 10); + switch(n.toLowerCase().charAt(0)) { + case 'y': Y = v; break; case 'd': d = v; break; + case 'h': H = v; break; case 's': S = v; break; + case 'm': if(H >= 0) M = v; else m = v; break; + } + }); + if(S >= 0 && M == -1 && m >= 0) { M = m; m = -1; } + var datestr = (("" + (Y>=0?Y: new Date().getFullYear())).slice(-4) + "-" + ("00" + (m>=1?m:1)).slice(-2) + "-" + ("00" + (d>=1?d:1)).slice(-2)); + if(datestr.length == 7) datestr = "0" + datestr; + if(datestr.length == 8) datestr = "20" + datestr; + var timestr = (("00" + (H>=0?H:0)).slice(-2) + ":" + ("00" + (M>=0?M:0)).slice(-2) + ":" + ("00" + (S>=0?S:0)).slice(-2)); + if(H == -1 && M == -1 && S == -1) return datestr; + if(Y == -1 && m == -1 && d == -1) return timestr; + return datestr + "T" + timestr; +} + +/* cfb.js (C) 2013-present SheetJS -- http://sheetjs.com */ +/* vim: set ts=2: */ +/*jshint eqnull:true */ +/*exported CFB */ +/*global Uint8Array:false, Uint16Array:false */ + +/* crc32.js (C) 2014-present SheetJS -- http://sheetjs.com */ +/* vim: set ts=2: */ +/*exported CRC32 */ +var CRC32 = (function() { +var CRC32 = {}; +CRC32.version = '1.2.0'; +/* see perf/crc32table.js */ +/*global Int32Array */ +function signed_crc_table() { + var c = 0, table = new Array(256); + + for(var n =0; n != 256; ++n){ + c = n; + c = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1)); + c = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1)); + c = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1)); + c = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1)); + c = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1)); + c = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1)); + c = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1)); + c = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1)); + table[n] = c; + } + + return typeof Int32Array !== 'undefined' ? new Int32Array(table) : table; +} + +var T0 = signed_crc_table(); +function slice_by_16_tables(T) { + var c = 0, v = 0, n = 0, table = typeof Int32Array !== 'undefined' ? new Int32Array(4096) : new Array(4096) ; + + for(n = 0; n != 256; ++n) table[n] = T[n]; + for(n = 0; n != 256; ++n) { + v = T[n]; + for(c = 256 + n; c < 4096; c += 256) v = table[c] = (v >>> 8) ^ T[v & 0xFF]; + } + var out = []; + for(n = 1; n != 16; ++n) out[n - 1] = typeof Int32Array !== 'undefined' ? table.subarray(n * 256, n * 256 + 256) : table.slice(n * 256, n * 256 + 256); + return out; +} +var TT = slice_by_16_tables(T0); +var T1 = TT[0], T2 = TT[1], T3 = TT[2], T4 = TT[3], T5 = TT[4]; +var T6 = TT[5], T7 = TT[6], T8 = TT[7], T9 = TT[8], Ta = TT[9]; +var Tb = TT[10], Tc = TT[11], Td = TT[12], Te = TT[13], Tf = TT[14]; +function crc32_bstr(bstr, seed) { + var C = seed ^ -1; + for(var i = 0, L = bstr.length; i < L;) C = (C>>>8) ^ T0[(C^bstr.charCodeAt(i++))&0xFF]; + return ~C; +} + +function crc32_buf(B, seed) { + var C = seed ^ -1, L = B.length - 15, i = 0; + for(; i < L;) C = + Tf[B[i++] ^ (C & 255)] ^ + Te[B[i++] ^ ((C >> 8) & 255)] ^ + Td[B[i++] ^ ((C >> 16) & 255)] ^ + Tc[B[i++] ^ (C >>> 24)] ^ + Tb[B[i++]] ^ Ta[B[i++]] ^ T9[B[i++]] ^ T8[B[i++]] ^ + T7[B[i++]] ^ T6[B[i++]] ^ T5[B[i++]] ^ T4[B[i++]] ^ + T3[B[i++]] ^ T2[B[i++]] ^ T1[B[i++]] ^ T0[B[i++]]; + L += 15; + while(i < L) C = (C>>>8) ^ T0[(C^B[i++])&0xFF]; + return ~C; +} + +function crc32_str(str, seed) { + var C = seed ^ -1; + for(var i = 0, L = str.length, c = 0, d = 0; i < L;) { + c = str.charCodeAt(i++); + if(c < 0x80) { + C = (C>>>8) ^ T0[(C^c)&0xFF]; + } else if(c < 0x800) { + C = (C>>>8) ^ T0[(C ^ (192|((c>>6)&31)))&0xFF]; + C = (C>>>8) ^ T0[(C ^ (128|(c&63)))&0xFF]; + } else if(c >= 0xD800 && c < 0xE000) { + c = (c&1023)+64; d = str.charCodeAt(i++)&1023; + C = (C>>>8) ^ T0[(C ^ (240|((c>>8)&7)))&0xFF]; + C = (C>>>8) ^ T0[(C ^ (128|((c>>2)&63)))&0xFF]; + C = (C>>>8) ^ T0[(C ^ (128|((d>>6)&15)|((c&3)<<4)))&0xFF]; + C = (C>>>8) ^ T0[(C ^ (128|(d&63)))&0xFF]; + } else { + C = (C>>>8) ^ T0[(C ^ (224|((c>>12)&15)))&0xFF]; + C = (C>>>8) ^ T0[(C ^ (128|((c>>6)&63)))&0xFF]; + C = (C>>>8) ^ T0[(C ^ (128|(c&63)))&0xFF]; + } + } + return ~C; +} +CRC32.table = T0; +CRC32.bstr = crc32_bstr; +CRC32.buf = crc32_buf; +CRC32.str = crc32_str; +return CRC32; +})(); +/* [MS-CFB] v20171201 */ +var CFB = (function _CFB(){ +var exports = {}; +exports.version = '1.2.1'; +/* [MS-CFB] 2.6.4 */ +function namecmp(l, r) { + var L = l.split("/"), R = r.split("/"); + for(var i = 0, c = 0, Z = Math.min(L.length, R.length); i < Z; ++i) { + if((c = L[i].length - R[i].length)) return c; + if(L[i] != R[i]) return L[i] < R[i] ? -1 : 1; + } + return L.length - R.length; +} +function dirname(p) { + if(p.charAt(p.length - 1) == "/") return (p.slice(0,-1).indexOf("/") === -1) ? p : dirname(p.slice(0, -1)); + var c = p.lastIndexOf("/"); + return (c === -1) ? p : p.slice(0, c+1); +} + +function filename(p) { + if(p.charAt(p.length - 1) == "/") return filename(p.slice(0, -1)); + var c = p.lastIndexOf("/"); + return (c === -1) ? p : p.slice(c+1); +} +/* -------------------------------------------------------------------------- */ +/* DOS Date format: + high|YYYYYYYm.mmmddddd.HHHHHMMM.MMMSSSSS|low + add 1980 to stored year + stored second should be doubled +*/ + +/* write JS date to buf as a DOS date */ +function write_dos_date(buf, date) { + if(typeof date === "string") date = new Date(date); + var hms = date.getHours(); + hms = hms << 6 | date.getMinutes(); + hms = hms << 5 | (date.getSeconds()>>>1); + buf.write_shift(2, hms); + var ymd = (date.getFullYear() - 1980); + ymd = ymd << 4 | (date.getMonth()+1); + ymd = ymd << 5 | date.getDate(); + buf.write_shift(2, ymd); +} + +/* read four bytes from buf and interpret as a DOS date */ +function parse_dos_date(buf) { + var hms = buf.read_shift(2) & 0xFFFF; + var ymd = buf.read_shift(2) & 0xFFFF; + var val = new Date(); + var d = ymd & 0x1F; ymd >>>= 5; + var m = ymd & 0x0F; ymd >>>= 4; + val.setMilliseconds(0); + val.setFullYear(ymd + 1980); + val.setMonth(m-1); + val.setDate(d); + var S = hms & 0x1F; hms >>>= 5; + var M = hms & 0x3F; hms >>>= 6; + val.setHours(hms); + val.setMinutes(M); + val.setSeconds(S<<1); + return val; +} +function parse_extra_field(blob) { + prep_blob(blob, 0); + var o = {}; + var flags = 0; + while(blob.l <= blob.length - 4) { + var type = blob.read_shift(2); + var sz = blob.read_shift(2), tgt = blob.l + sz; + var p = {}; + switch(type) { + /* UNIX-style Timestamps */ + case 0x5455: { + flags = blob.read_shift(1); + if(flags & 1) p.mtime = blob.read_shift(4); + /* for some reason, CD flag corresponds to LFH */ + if(sz > 5) { + if(flags & 2) p.atime = blob.read_shift(4); + if(flags & 4) p.ctime = blob.read_shift(4); + } + if(p.mtime) p.mt = new Date(p.mtime*1000); + } + break; + } + blob.l = tgt; + o[type] = p; + } + return o; +} +var fs; +function get_fs() { return fs || (fs = require('fs')); } +function parse(file, options) { +if(file[0] == 0x50 && file[1] == 0x4b) return parse_zip(file, options); +if((file[0] | 0x20) == 0x6d && (file[1]|0x20) == 0x69) return parse_mad(file, options); +if(file.length < 512) throw new Error("CFB file size " + file.length + " < 512"); +var mver = 3; +var ssz = 512; +var nmfs = 0; // number of mini FAT sectors +var difat_sec_cnt = 0; +var dir_start = 0; +var minifat_start = 0; +var difat_start = 0; + +var fat_addrs = []; // locations of FAT sectors + +/* [MS-CFB] 2.2 Compound File Header */ +var blob = file.slice(0,512); +prep_blob(blob, 0); + +/* major version */ +var mv = check_get_mver(blob); +mver = mv[0]; +switch(mver) { + case 3: ssz = 512; break; case 4: ssz = 4096; break; + case 0: if(mv[1] == 0) return parse_zip(file, options); + /* falls through */ + default: throw new Error("Major Version: Expected 3 or 4 saw " + mver); +} + +/* reprocess header */ +if(ssz !== 512) { blob = file.slice(0,ssz); prep_blob(blob, 28 /* blob.l */); } +/* Save header for final object */ +var header = file.slice(0,ssz); + +check_shifts(blob, mver); + +// Number of Directory Sectors +var dir_cnt = blob.read_shift(4, 'i'); +if(mver === 3 && dir_cnt !== 0) throw new Error('# Directory Sectors: Expected 0 saw ' + dir_cnt); + +// Number of FAT Sectors +blob.l += 4; + +// First Directory Sector Location +dir_start = blob.read_shift(4, 'i'); + +// Transaction Signature +blob.l += 4; + +// Mini Stream Cutoff Size +blob.chk('00100000', 'Mini Stream Cutoff Size: '); + +// First Mini FAT Sector Location +minifat_start = blob.read_shift(4, 'i'); + +// Number of Mini FAT Sectors +nmfs = blob.read_shift(4, 'i'); + +// First DIFAT sector location +difat_start = blob.read_shift(4, 'i'); + +// Number of DIFAT Sectors +difat_sec_cnt = blob.read_shift(4, 'i'); + +// Grab FAT Sector Locations +for(var q = -1, j = 0; j < 109; ++j) { /* 109 = (512 - blob.l)>>>2; */ + q = blob.read_shift(4, 'i'); + if(q<0) break; + fat_addrs[j] = q; +} + +/** Break the file up into sectors */ +var sectors = sectorify(file, ssz); + +sleuth_fat(difat_start, difat_sec_cnt, sectors, ssz, fat_addrs); + +/** Chains */ +var sector_list = make_sector_list(sectors, dir_start, fat_addrs, ssz); + +sector_list[dir_start].name = "!Directory"; +if(nmfs > 0 && minifat_start !== ENDOFCHAIN) sector_list[minifat_start].name = "!MiniFAT"; +sector_list[fat_addrs[0]].name = "!FAT"; +sector_list.fat_addrs = fat_addrs; +sector_list.ssz = ssz; + +/* [MS-CFB] 2.6.1 Compound File Directory Entry */ +var files = {}, Paths = [], FileIndex = [], FullPaths = []; +read_directory(dir_start, sector_list, sectors, Paths, nmfs, files, FileIndex, minifat_start); + +build_full_paths(FileIndex, FullPaths, Paths); +Paths.shift(); + +var o = { + FileIndex: FileIndex, + FullPaths: FullPaths +}; + +// $FlowIgnore +if(options && options.raw) o.raw = {header: header, sectors: sectors}; +return o; +} // parse + +/* [MS-CFB] 2.2 Compound File Header -- read up to major version */ +function check_get_mver(blob) { + if(blob[blob.l] == 0x50 && blob[blob.l + 1] == 0x4b) return [0, 0]; + // header signature 8 + blob.chk(HEADER_SIGNATURE, 'Header Signature: '); + + // clsid 16 + //blob.chk(HEADER_CLSID, 'CLSID: '); + blob.l += 16; + + // minor version 2 + var mver = blob.read_shift(2, 'u'); + + return [blob.read_shift(2,'u'), mver]; +} +function check_shifts(blob, mver) { + var shift = 0x09; + + // Byte Order + //blob.chk('feff', 'Byte Order: '); // note: some writers put 0xffff + blob.l += 2; + + // Sector Shift + switch((shift = blob.read_shift(2))) { + case 0x09: if(mver != 3) throw new Error('Sector Shift: Expected 9 saw ' + shift); break; + case 0x0c: if(mver != 4) throw new Error('Sector Shift: Expected 12 saw ' + shift); break; + default: throw new Error('Sector Shift: Expected 9 or 12 saw ' + shift); + } + + // Mini Sector Shift + blob.chk('0600', 'Mini Sector Shift: '); + + // Reserved + blob.chk('000000000000', 'Reserved: '); +} + +/** Break the file up into sectors */ +function sectorify(file, ssz) { + var nsectors = Math.ceil(file.length/ssz)-1; + var sectors = []; + for(var i=1; i < nsectors; ++i) sectors[i-1] = file.slice(i*ssz,(i+1)*ssz); + sectors[nsectors-1] = file.slice(nsectors*ssz); + return sectors; +} + +/* [MS-CFB] 2.6.4 Red-Black Tree */ +function build_full_paths(FI, FP, Paths) { + var i = 0, L = 0, R = 0, C = 0, j = 0, pl = Paths.length; + var dad = [], q = []; + + for(; i < pl; ++i) { dad[i]=q[i]=i; FP[i]=Paths[i]; } + + for(; j < q.length; ++j) { + i = q[j]; + L = FI[i].L; R = FI[i].R; C = FI[i].C; + if(dad[i] === i) { + if(L !== -1 /*NOSTREAM*/ && dad[L] !== L) dad[i] = dad[L]; + if(R !== -1 && dad[R] !== R) dad[i] = dad[R]; + } + if(C !== -1 /*NOSTREAM*/) dad[C] = i; + if(L !== -1 && i != dad[i]) { dad[L] = dad[i]; if(q.lastIndexOf(L) < j) q.push(L); } + if(R !== -1 && i != dad[i]) { dad[R] = dad[i]; if(q.lastIndexOf(R) < j) q.push(R); } + } + for(i=1; i < pl; ++i) if(dad[i] === i) { + if(R !== -1 /*NOSTREAM*/ && dad[R] !== R) dad[i] = dad[R]; + else if(L !== -1 && dad[L] !== L) dad[i] = dad[L]; + } + + for(i=1; i < pl; ++i) { + if(FI[i].type === 0 /* unknown */) continue; + j = i; + if(j != dad[j]) do { + j = dad[j]; + FP[i] = FP[j] + "/" + FP[i]; + } while (j !== 0 && -1 !== dad[j] && j != dad[j]); + dad[i] = -1; + } + + FP[0] += "/"; + for(i=1; i < pl; ++i) { + if(FI[i].type !== 2 /* stream */) FP[i] += "/"; + } +} + +function get_mfat_entry(entry, payload, mini) { + var start = entry.start, size = entry.size; + //return (payload.slice(start*MSSZ, start*MSSZ + size)); + var o = []; + var idx = start; + while(mini && size > 0 && idx >= 0) { + o.push(payload.slice(idx * MSSZ, idx * MSSZ + MSSZ)); + size -= MSSZ; + idx = __readInt32LE(mini, idx * 4); + } + if(o.length === 0) return (new_buf(0)); + return (bconcat(o).slice(0, entry.size)); +} + +/** Chase down the rest of the DIFAT chain to build a comprehensive list + DIFAT chains by storing the next sector number as the last 32 bits */ +function sleuth_fat(idx, cnt, sectors, ssz, fat_addrs) { + var q = ENDOFCHAIN; + if(idx === ENDOFCHAIN) { + if(cnt !== 0) throw new Error("DIFAT chain shorter than expected"); + } else if(idx !== -1 /*FREESECT*/) { + var sector = sectors[idx], m = (ssz>>>2)-1; + if(!sector) return; + for(var i = 0; i < m; ++i) { + if((q = __readInt32LE(sector,i*4)) === ENDOFCHAIN) break; + fat_addrs.push(q); + } + sleuth_fat(__readInt32LE(sector,ssz-4),cnt - 1, sectors, ssz, fat_addrs); + } +} + +/** Follow the linked list of sectors for a given starting point */ +function get_sector_list(sectors, start, fat_addrs, ssz, chkd) { + var buf = [], buf_chain = []; + if(!chkd) chkd = []; + var modulus = ssz - 1, j = 0, jj = 0; + for(j=start; j>=0;) { + chkd[j] = true; + buf[buf.length] = j; + buf_chain.push(sectors[j]); + var addr = fat_addrs[Math.floor(j*4/ssz)]; + jj = ((j*4) & modulus); + if(ssz < 4 + jj) throw new Error("FAT boundary crossed: " + j + " 4 "+ssz); + if(!sectors[addr]) break; + j = __readInt32LE(sectors[addr], jj); + } + return {nodes: buf, data:__toBuffer([buf_chain])}; +} + +/** Chase down the sector linked lists */ +function make_sector_list(sectors, dir_start, fat_addrs, ssz) { + var sl = sectors.length, sector_list = ([]); + var chkd = [], buf = [], buf_chain = []; + var modulus = ssz - 1, i=0, j=0, k=0, jj=0; + for(i=0; i < sl; ++i) { + buf = ([]); + k = (i + dir_start); if(k >= sl) k-=sl; + if(chkd[k]) continue; + buf_chain = []; + var seen = []; + for(j=k; j>=0;) { + seen[j] = true; + chkd[j] = true; + buf[buf.length] = j; + buf_chain.push(sectors[j]); + var addr = fat_addrs[Math.floor(j*4/ssz)]; + jj = ((j*4) & modulus); + if(ssz < 4 + jj) throw new Error("FAT boundary crossed: " + j + " 4 "+ssz); + if(!sectors[addr]) break; + j = __readInt32LE(sectors[addr], jj); + if(seen[j]) break; + } + sector_list[k] = ({nodes: buf, data:__toBuffer([buf_chain])}); + } + return sector_list; +} + +/* [MS-CFB] 2.6.1 Compound File Directory Entry */ +function read_directory(dir_start, sector_list, sectors, Paths, nmfs, files, FileIndex, mini) { + var minifat_store = 0, pl = (Paths.length?2:0); + var sector = sector_list[dir_start].data; + var i = 0, namelen = 0, name; + for(; i < sector.length; i+= 128) { + var blob = sector.slice(i, i+128); + prep_blob(blob, 64); + namelen = blob.read_shift(2); + name = __utf16le(blob,0,namelen-pl); + Paths.push(name); + var o = ({ + name: name, + type: blob.read_shift(1), + color: blob.read_shift(1), + L: blob.read_shift(4, 'i'), + R: blob.read_shift(4, 'i'), + C: blob.read_shift(4, 'i'), + clsid: blob.read_shift(16), + state: blob.read_shift(4, 'i'), + start: 0, + size: 0 + }); + var ctime = blob.read_shift(2) + blob.read_shift(2) + blob.read_shift(2) + blob.read_shift(2); + if(ctime !== 0) o.ct = read_date(blob, blob.l-8); + var mtime = blob.read_shift(2) + blob.read_shift(2) + blob.read_shift(2) + blob.read_shift(2); + if(mtime !== 0) o.mt = read_date(blob, blob.l-8); + o.start = blob.read_shift(4, 'i'); + o.size = blob.read_shift(4, 'i'); + if(o.size < 0 && o.start < 0) { o.size = o.type = 0; o.start = ENDOFCHAIN; o.name = ""; } + if(o.type === 5) { /* root */ + minifat_store = o.start; + if(nmfs > 0 && minifat_store !== ENDOFCHAIN) sector_list[minifat_store].name = "!StreamData"; + /*minifat_size = o.size;*/ + } else if(o.size >= 4096 /* MSCSZ */) { + o.storage = 'fat'; + if(sector_list[o.start] === undefined) sector_list[o.start] = get_sector_list(sectors, o.start, sector_list.fat_addrs, sector_list.ssz); + sector_list[o.start].name = o.name; + o.content = (sector_list[o.start].data.slice(0,o.size)); + } else { + o.storage = 'minifat'; + if(o.size < 0) o.size = 0; + else if(minifat_store !== ENDOFCHAIN && o.start !== ENDOFCHAIN && sector_list[minifat_store]) { + o.content = get_mfat_entry(o, sector_list[minifat_store].data, (sector_list[mini]||{}).data); + } + } + if(o.content) prep_blob(o.content, 0); + files[name] = o; + FileIndex.push(o); + } +} + +function read_date(blob, offset) { + return new Date(( ( (__readUInt32LE(blob,offset+4)/1e7)*Math.pow(2,32)+__readUInt32LE(blob,offset)/1e7 ) - 11644473600)*1000); +} + +function read_file(filename, options) { + get_fs(); + return parse(fs.readFileSync(filename), options); +} + +function read(blob, options) { + var type = options && options.type; + if(!type) { + if(has_buf && Buffer.isBuffer(blob)) type = "buffer"; + } + switch(type || "base64") { + case "file": return read_file(blob, options); + case "base64": return parse(s2a(Base64_decode(blob)), options); + case "binary": return parse(s2a(blob), options); + } + return parse(blob, options); +} + +function init_cfb(cfb, opts) { + var o = opts || {}, root = o.root || "Root Entry"; + if(!cfb.FullPaths) cfb.FullPaths = []; + if(!cfb.FileIndex) cfb.FileIndex = []; + if(cfb.FullPaths.length !== cfb.FileIndex.length) throw new Error("inconsistent CFB structure"); + if(cfb.FullPaths.length === 0) { + cfb.FullPaths[0] = root + "/"; + cfb.FileIndex[0] = ({ name: root, type: 5 }); + } + if(o.CLSID) cfb.FileIndex[0].clsid = o.CLSID; + seed_cfb(cfb); +} +function seed_cfb(cfb) { + var nm = "\u0001Sh33tJ5"; + if(CFB.find(cfb, "/" + nm)) return; + var p = new_buf(4); p[0] = 55; p[1] = p[3] = 50; p[2] = 54; + cfb.FileIndex.push(({ name: nm, type: 2, content:p, size:4, L:69, R:69, C:69 })); + cfb.FullPaths.push(cfb.FullPaths[0] + nm); + rebuild_cfb(cfb); +} +function rebuild_cfb(cfb, f) { + init_cfb(cfb); + var gc = false, s = false; + for(var i = cfb.FullPaths.length - 1; i >= 0; --i) { + var _file = cfb.FileIndex[i]; + switch(_file.type) { + case 0: + if(s) gc = true; + else { cfb.FileIndex.pop(); cfb.FullPaths.pop(); } + break; + case 1: case 2: case 5: + s = true; + if(isNaN(_file.R * _file.L * _file.C)) gc = true; + if(_file.R > -1 && _file.L > -1 && _file.R == _file.L) gc = true; + break; + default: gc = true; break; + } + } + if(!gc && !f) return; + + var now = new Date(1987, 1, 19), j = 0; + // Track which names exist + var fullPaths = Object.create ? Object.create(null) : {}; + var data = []; + for(i = 0; i < cfb.FullPaths.length; ++i) { + fullPaths[cfb.FullPaths[i]] = true; + if(cfb.FileIndex[i].type === 0) continue; + data.push([cfb.FullPaths[i], cfb.FileIndex[i]]); + } + for(i = 0; i < data.length; ++i) { + var dad = dirname(data[i][0]); + s = fullPaths[dad]; + if(!s) { + data.push([dad, ({ + name: filename(dad).replace("/",""), + type: 1, + clsid: HEADER_CLSID, + ct: now, mt: now, + content: null + })]); + // Add name to set + fullPaths[dad] = true; + } + } + + data.sort(function(x,y) { return namecmp(x[0], y[0]); }); + cfb.FullPaths = []; cfb.FileIndex = []; + for(i = 0; i < data.length; ++i) { cfb.FullPaths[i] = data[i][0]; cfb.FileIndex[i] = data[i][1]; } + for(i = 0; i < data.length; ++i) { + var elt = cfb.FileIndex[i]; + var nm = cfb.FullPaths[i]; + + elt.name = filename(nm).replace("/",""); + elt.L = elt.R = elt.C = -(elt.color = 1); + elt.size = elt.content ? elt.content.length : 0; + elt.start = 0; + elt.clsid = (elt.clsid || HEADER_CLSID); + if(i === 0) { + elt.C = data.length > 1 ? 1 : -1; + elt.size = 0; + elt.type = 5; + } else if(nm.slice(-1) == "/") { + for(j=i+1;j < data.length; ++j) if(dirname(cfb.FullPaths[j])==nm) break; + elt.C = j >= data.length ? -1 : j; + for(j=i+1;j < data.length; ++j) if(dirname(cfb.FullPaths[j])==dirname(nm)) break; + elt.R = j >= data.length ? -1 : j; + elt.type = 1; + } else { + if(dirname(cfb.FullPaths[i+1]||"") == dirname(nm)) elt.R = i + 1; + elt.type = 2; + } + } + +} + +function _write(cfb, options) { + var _opts = options || {}; + /* MAD is order-sensitive, skip rebuild and sort */ + if(_opts.fileType == 'mad') return write_mad(cfb, _opts); + rebuild_cfb(cfb); + switch(_opts.fileType) { + case 'zip': return write_zip(cfb, _opts); + //case 'mad': return write_mad(cfb, _opts); + } + var L = (function(cfb){ + var mini_size = 0, fat_size = 0; + for(var i = 0; i < cfb.FileIndex.length; ++i) { + var file = cfb.FileIndex[i]; + if(!file.content) continue; +var flen = file.content.length; + if(flen > 0){ + if(flen < 0x1000) mini_size += (flen + 0x3F) >> 6; + else fat_size += (flen + 0x01FF) >> 9; + } + } + var dir_cnt = (cfb.FullPaths.length +3) >> 2; + var mini_cnt = (mini_size + 7) >> 3; + var mfat_cnt = (mini_size + 0x7F) >> 7; + var fat_base = mini_cnt + fat_size + dir_cnt + mfat_cnt; + var fat_cnt = (fat_base + 0x7F) >> 7; + var difat_cnt = fat_cnt <= 109 ? 0 : Math.ceil((fat_cnt-109)/0x7F); + while(((fat_base + fat_cnt + difat_cnt + 0x7F) >> 7) > fat_cnt) difat_cnt = ++fat_cnt <= 109 ? 0 : Math.ceil((fat_cnt-109)/0x7F); + var L = [1, difat_cnt, fat_cnt, mfat_cnt, dir_cnt, fat_size, mini_size, 0]; + cfb.FileIndex[0].size = mini_size << 6; + L[7] = (cfb.FileIndex[0].start=L[0]+L[1]+L[2]+L[3]+L[4]+L[5])+((L[6]+7) >> 3); + return L; + })(cfb); + var o = new_buf(L[7] << 9); + var i = 0, T = 0; + { + for(i = 0; i < 8; ++i) o.write_shift(1, HEADER_SIG[i]); + for(i = 0; i < 8; ++i) o.write_shift(2, 0); + o.write_shift(2, 0x003E); + o.write_shift(2, 0x0003); + o.write_shift(2, 0xFFFE); + o.write_shift(2, 0x0009); + o.write_shift(2, 0x0006); + for(i = 0; i < 3; ++i) o.write_shift(2, 0); + o.write_shift(4, 0); + o.write_shift(4, L[2]); + o.write_shift(4, L[0] + L[1] + L[2] + L[3] - 1); + o.write_shift(4, 0); + o.write_shift(4, 1<<12); + o.write_shift(4, L[3] ? L[0] + L[1] + L[2] - 1: ENDOFCHAIN); + o.write_shift(4, L[3]); + o.write_shift(-4, L[1] ? L[0] - 1: ENDOFCHAIN); + o.write_shift(4, L[1]); + for(i = 0; i < 109; ++i) o.write_shift(-4, i < L[2] ? L[1] + i : -1); + } + if(L[1]) { + for(T = 0; T < L[1]; ++T) { + for(; i < 236 + T * 127; ++i) o.write_shift(-4, i < L[2] ? L[1] + i : -1); + o.write_shift(-4, T === L[1] - 1 ? ENDOFCHAIN : T + 1); + } + } + var chainit = function(w) { + for(T += w; i> 9); + } + chainit((L[6] + 7) >> 3); + while(o.l & 0x1FF) o.write_shift(-4, consts.ENDOFCHAIN); + T = i = 0; + for(j = 0; j < cfb.FileIndex.length; ++j) { + file = cfb.FileIndex[j]; + if(!file.content) continue; +flen = file.content.length; + if(!flen || flen >= 0x1000) continue; + file.start = T; + chainit((flen + 0x3F) >> 6); + } + while(o.l & 0x1FF) o.write_shift(-4, consts.ENDOFCHAIN); + for(i = 0; i < L[4]<<2; ++i) { + var nm = cfb.FullPaths[i]; + if(!nm || nm.length === 0) { + for(j = 0; j < 17; ++j) o.write_shift(4, 0); + for(j = 0; j < 3; ++j) o.write_shift(4, -1); + for(j = 0; j < 12; ++j) o.write_shift(4, 0); + continue; + } + file = cfb.FileIndex[i]; + if(i === 0) file.start = file.size ? file.start - 1 : ENDOFCHAIN; + var _nm = (i === 0 && _opts.root) || file.name; + flen = 2*(_nm.length+1); + o.write_shift(64, _nm, "utf16le"); + o.write_shift(2, flen); + o.write_shift(1, file.type); + o.write_shift(1, file.color); + o.write_shift(-4, file.L); + o.write_shift(-4, file.R); + o.write_shift(-4, file.C); + if(!file.clsid) for(j = 0; j < 4; ++j) o.write_shift(4, 0); + else o.write_shift(16, file.clsid, "hex"); + o.write_shift(4, file.state || 0); + o.write_shift(4, 0); o.write_shift(4, 0); + o.write_shift(4, 0); o.write_shift(4, 0); + o.write_shift(4, file.start); + o.write_shift(4, file.size); o.write_shift(4, 0); + } + for(i = 1; i < cfb.FileIndex.length; ++i) { + file = cfb.FileIndex[i]; +if(file.size >= 0x1000) { + o.l = (file.start+1) << 9; + if (has_buf && Buffer.isBuffer(file.content)) { + file.content.copy(o, o.l, 0, file.size); + // o is a 0-filled Buffer so just set next offset + o.l += (file.size + 511) & -512; + } else { + for(j = 0; j < file.size; ++j) o.write_shift(1, file.content[j]); + for(; j & 0x1FF; ++j) o.write_shift(1, 0); + } + } + } + for(i = 1; i < cfb.FileIndex.length; ++i) { + file = cfb.FileIndex[i]; +if(file.size > 0 && file.size < 0x1000) { + if (has_buf && Buffer.isBuffer(file.content)) { + file.content.copy(o, o.l, 0, file.size); + // o is a 0-filled Buffer so just set next offset + o.l += (file.size + 63) & -64; + } else { + for(j = 0; j < file.size; ++j) o.write_shift(1, file.content[j]); + for(; j & 0x3F; ++j) o.write_shift(1, 0); + } + } + } + if (has_buf) { + o.l = o.length; + } else { + // When using Buffer, already 0-filled + while(o.l < o.length) o.write_shift(1, 0); + } + return o; +} +/* [MS-CFB] 2.6.4 (Unicode 3.0.1 case conversion) */ +function find(cfb, path) { + var UCFullPaths = cfb.FullPaths.map(function(x) { return x.toUpperCase(); }); + var UCPaths = UCFullPaths.map(function(x) { var y = x.split("/"); return y[y.length - (x.slice(-1) == "/" ? 2 : 1)]; }); + var k = false; + if(path.charCodeAt(0) === 47 /* "/" */) { k = true; path = UCFullPaths[0].slice(0, -1) + path; } + else k = path.indexOf("/") !== -1; + var UCPath = path.toUpperCase(); + var w = k === true ? UCFullPaths.indexOf(UCPath) : UCPaths.indexOf(UCPath); + if(w !== -1) return cfb.FileIndex[w]; + + var m = !UCPath.match(chr1); + UCPath = UCPath.replace(chr0,''); + if(m) UCPath = UCPath.replace(chr1,'!'); + for(w = 0; w < UCFullPaths.length; ++w) { + if((m ? UCFullPaths[w].replace(chr1,'!') : UCFullPaths[w]).replace(chr0,'') == UCPath) return cfb.FileIndex[w]; + if((m ? UCPaths[w].replace(chr1,'!') : UCPaths[w]).replace(chr0,'') == UCPath) return cfb.FileIndex[w]; + } + return null; +} +/** CFB Constants */ +var MSSZ = 64; /* Mini Sector Size = 1<<6 */ +//var MSCSZ = 4096; /* Mini Stream Cutoff Size */ +/* 2.1 Compound File Sector Numbers and Types */ +var ENDOFCHAIN = -2; +/* 2.2 Compound File Header */ +var HEADER_SIGNATURE = 'd0cf11e0a1b11ae1'; +var HEADER_SIG = [0xD0, 0xCF, 0x11, 0xE0, 0xA1, 0xB1, 0x1A, 0xE1]; +var HEADER_CLSID = '00000000000000000000000000000000'; +var consts = { + /* 2.1 Compund File Sector Numbers and Types */ + MAXREGSECT: -6, + DIFSECT: -4, + FATSECT: -3, + ENDOFCHAIN: ENDOFCHAIN, + FREESECT: -1, + /* 2.2 Compound File Header */ + HEADER_SIGNATURE: HEADER_SIGNATURE, + HEADER_MINOR_VERSION: '3e00', + MAXREGSID: -6, + NOSTREAM: -1, + HEADER_CLSID: HEADER_CLSID, + /* 2.6.1 Compound File Directory Entry */ + EntryTypes: ['unknown','storage','stream','lockbytes','property','root'] +}; + +function write_file(cfb, filename, options) { + get_fs(); + var o = _write(cfb, options); +fs.writeFileSync(filename, o); +} + +function a2s(o) { + var out = new Array(o.length); + for(var i = 0; i < o.length; ++i) out[i] = String.fromCharCode(o[i]); + return out.join(""); +} + +function write(cfb, options) { + var o = _write(cfb, options); + switch(options && options.type || "buffer") { + case "file": get_fs(); fs.writeFileSync(options.filename, (o)); return o; + case "binary": return typeof o == "string" ? o : a2s(o); + case "base64": return Base64_encode(typeof o == "string" ? o : a2s(o)); + case "buffer": if(has_buf) return Buffer.isBuffer(o) ? o : Buffer_from(o); + /* falls through */ + case "array": return typeof o == "string" ? s2a(o) : o; + } + return o; +} +/* node < 8.1 zlib does not expose bytesRead, so default to pure JS */ +var _zlib; +function use_zlib(zlib) { try { + var InflateRaw = zlib.InflateRaw; + var InflRaw = new InflateRaw(); + InflRaw._processChunk(new Uint8Array([3, 0]), InflRaw._finishFlushFlag); + if(InflRaw.bytesRead) _zlib = zlib; + else throw new Error("zlib does not expose bytesRead"); +} catch(e) {console.error("cannot use native zlib: " + (e.message || e)); } } + +function _inflateRawSync(payload, usz) { + if(!_zlib) return _inflate(payload, usz); + var InflateRaw = _zlib.InflateRaw; + var InflRaw = new InflateRaw(); + var out = InflRaw._processChunk(payload.slice(payload.l), InflRaw._finishFlushFlag); + payload.l += InflRaw.bytesRead; + return out; +} + +function _deflateRawSync(payload) { + return _zlib ? _zlib.deflateRawSync(payload) : _deflate(payload); +} +var CLEN_ORDER = [ 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 ]; + +/* LEN_ID = [ 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285 ]; */ +var LEN_LN = [ 3, 4, 5, 6, 7, 8, 9, 10, 11, 13 , 15, 17, 19, 23, 27, 31, 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258 ]; + +/* DST_ID = [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29 ]; */ +var DST_LN = [ 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, 8193, 12289, 16385, 24577 ]; + +function bit_swap_8(n) { var t = (((((n<<1)|(n<<11)) & 0x22110) | (((n<<5)|(n<<15)) & 0x88440))); return ((t>>16) | (t>>8) |t)&0xFF; } + +var use_typed_arrays = typeof Uint8Array !== 'undefined'; + +var bitswap8 = use_typed_arrays ? new Uint8Array(1<<8) : []; +for(var q = 0; q < (1<<8); ++q) bitswap8[q] = bit_swap_8(q); + +function bit_swap_n(n, b) { + var rev = bitswap8[n & 0xFF]; + if(b <= 8) return rev >>> (8-b); + rev = (rev << 8) | bitswap8[(n>>8)&0xFF]; + if(b <= 16) return rev >>> (16-b); + rev = (rev << 8) | bitswap8[(n>>16)&0xFF]; + return rev >>> (24-b); +} + +/* helpers for unaligned bit reads */ +function read_bits_2(buf, bl) { var w = (bl&7), h = (bl>>>3); return ((buf[h]|(w <= 6 ? 0 : buf[h+1]<<8))>>>w)& 0x03; } +function read_bits_3(buf, bl) { var w = (bl&7), h = (bl>>>3); return ((buf[h]|(w <= 5 ? 0 : buf[h+1]<<8))>>>w)& 0x07; } +function read_bits_4(buf, bl) { var w = (bl&7), h = (bl>>>3); return ((buf[h]|(w <= 4 ? 0 : buf[h+1]<<8))>>>w)& 0x0F; } +function read_bits_5(buf, bl) { var w = (bl&7), h = (bl>>>3); return ((buf[h]|(w <= 3 ? 0 : buf[h+1]<<8))>>>w)& 0x1F; } +function read_bits_7(buf, bl) { var w = (bl&7), h = (bl>>>3); return ((buf[h]|(w <= 1 ? 0 : buf[h+1]<<8))>>>w)& 0x7F; } + +/* works up to n = 3 * 8 + 1 = 25 */ +function read_bits_n(buf, bl, n) { + var w = (bl&7), h = (bl>>>3), f = ((1<>> w; + if(n < 8 - w) return v & f; + v |= buf[h+1]<<(8-w); + if(n < 16 - w) return v & f; + v |= buf[h+2]<<(16-w); + if(n < 24 - w) return v & f; + v |= buf[h+3]<<(24-w); + return v & f; +} + +/* helpers for unaligned bit writes */ +function write_bits_3(buf, bl, v) { var w = bl & 7, h = bl >>> 3; + if(w <= 5) buf[h] |= (v & 7) << w; + else { + buf[h] |= (v << w) & 0xFF; + buf[h+1] = (v&7) >> (8-w); + } + return bl + 3; +} + +function write_bits_1(buf, bl, v) { + var w = bl & 7, h = bl >>> 3; + v = (v&1) << w; + buf[h] |= v; + return bl + 1; +} +function write_bits_8(buf, bl, v) { + var w = bl & 7, h = bl >>> 3; + v <<= w; + buf[h] |= v & 0xFF; v >>>= 8; + buf[h+1] = v; + return bl + 8; +} +function write_bits_16(buf, bl, v) { + var w = bl & 7, h = bl >>> 3; + v <<= w; + buf[h] |= v & 0xFF; v >>>= 8; + buf[h+1] = v & 0xFF; + buf[h+2] = v >>> 8; + return bl + 16; +} + +/* until ArrayBuffer#realloc is a thing, fake a realloc */ +function realloc(b, sz) { + var L = b.length, M = 2*L > sz ? 2*L : sz + 5, i = 0; + if(L >= sz) return b; + if(has_buf) { + var o = new_unsafe_buf(M); + // $FlowIgnore + if(b.copy) b.copy(o); + else for(; i < b.length; ++i) o[i] = b[i]; + return o; + } else if(use_typed_arrays) { + var a = new Uint8Array(M); + if(a.set) a.set(b); + else for(; i < L; ++i) a[i] = b[i]; + return a; + } + b.length = M; + return b; +} + +/* zero-filled arrays for older browsers */ +function zero_fill_array(n) { + var o = new Array(n); + for(var i = 0; i < n; ++i) o[i] = 0; + return o; +} + +/* build tree (used for literals and lengths) */ +function build_tree(clens, cmap, MAX) { + var maxlen = 1, w = 0, i = 0, j = 0, ccode = 0, L = clens.length; + + var bl_count = use_typed_arrays ? new Uint16Array(32) : zero_fill_array(32); + for(i = 0; i < 32; ++i) bl_count[i] = 0; + + for(i = L; i < MAX; ++i) clens[i] = 0; + L = clens.length; + + var ctree = use_typed_arrays ? new Uint16Array(L) : zero_fill_array(L); // [] + + /* build code tree */ + for(i = 0; i < L; ++i) { + bl_count[(w = clens[i])]++; + if(maxlen < w) maxlen = w; + ctree[i] = 0; + } + bl_count[0] = 0; + for(i = 1; i <= maxlen; ++i) bl_count[i+16] = (ccode = (ccode + bl_count[i-1])<<1); + for(i = 0; i < L; ++i) { + ccode = clens[i]; + if(ccode != 0) ctree[i] = bl_count[ccode+16]++; + } + + /* cmap[maxlen + 4 bits] = (off&15) + (lit<<4) reverse mapping */ + var cleni = 0; + for(i = 0; i < L; ++i) { + cleni = clens[i]; + if(cleni != 0) { + ccode = bit_swap_n(ctree[i], maxlen)>>(maxlen-cleni); + for(j = (1<<(maxlen + 4 - cleni)) - 1; j>=0; --j) + cmap[ccode|(j< 0) out[out.l++] = data[boff++]; + } + return out.l; + } + + /* Fixed Huffman */ + function write_huff_fixed(data, out) { + var bl = 0; + var boff = 0; + var addrs = use_typed_arrays ? new Uint16Array(0x8000) : []; + while(boff < data.length) { + var L = /* data.length - boff; */ Math.min(0xFFFF, data.length - boff); + + /* write a stored block for short data */ + if(L < 10) { + bl = write_bits_3(out, bl, +!!(boff + L == data.length)); // jshint ignore:line + if(bl & 7) bl += 8 - (bl & 7); + out.l = (bl / 8) | 0; + out.write_shift(2, L); + out.write_shift(2, (~L) & 0xFFFF); + while(L-- > 0) out[out.l++] = data[boff++]; + bl = out.l * 8; + continue; + } + + bl = write_bits_3(out, bl, +!!(boff + L == data.length) + 2); // jshint ignore:line + var hash = 0; + while(L-- > 0) { + var d = data[boff]; + hash = ((hash << 5) ^ d) & 0x7FFF; + + var match = -1, mlen = 0; + + if((match = addrs[hash])) { + match |= boff & ~0x7FFF; + if(match > boff) match -= 0x8000; + if(match < boff) while(data[match + mlen] == data[boff + mlen] && mlen < 250) ++mlen; + } + + if(mlen > 2) { + /* Copy Token */ + d = LEN_LN_RE[mlen]; + if(d <= 22) bl = write_bits_8(out, bl, bitswap8[d+1]>>1) - 1; + else { + write_bits_8(out, bl, 3); + bl += 5; + write_bits_8(out, bl, bitswap8[d-23]>>5); + bl += 3; + } + var len_eb = (d < 8) ? 0 : ((d - 4)>>2); + if(len_eb > 0) { + write_bits_16(out, bl, mlen - LEN_LN[d]); + bl += len_eb; + } + + d = DST_LN_RE[boff - match]; + bl = write_bits_8(out, bl, bitswap8[d]>>3); + bl -= 3; + + var dst_eb = d < 4 ? 0 : (d-2)>>1; + if(dst_eb > 0) { + write_bits_16(out, bl, boff - match - DST_LN[d]); + bl += dst_eb; + } + for(var q = 0; q < mlen; ++q) { + addrs[hash] = boff & 0x7FFF; + hash = ((hash << 5) ^ data[boff]) & 0x7FFF; + ++boff; + } + L-= mlen - 1; + } else { + /* Literal Token */ + if(d <= 143) d = d + 48; + else bl = write_bits_1(out, bl, 1); + bl = write_bits_8(out, bl, bitswap8[d]); + addrs[hash] = boff & 0x7FFF; + ++boff; + } + } + + bl = write_bits_8(out, bl, 0) - 1; + } + out.l = ((bl + 7)/8)|0; + return out.l; + } + return function _deflateRaw(data, out) { + if(data.length < 8) return write_stored(data, out); + return write_huff_fixed(data, out); + }; +})(); + +function _deflate(data) { + var buf = new_buf(50+Math.floor(data.length*1.1)); + var off = _deflateRaw(data, buf); + return buf.slice(0, off); +} +/* modified inflate function also moves original read head */ + +var dyn_lmap = use_typed_arrays ? new Uint16Array(32768) : zero_fill_array(32768); +var dyn_dmap = use_typed_arrays ? new Uint16Array(32768) : zero_fill_array(32768); +var dyn_cmap = use_typed_arrays ? new Uint16Array(128) : zero_fill_array(128); +var dyn_len_1 = 1, dyn_len_2 = 1; + +/* 5.5.3 Expanding Huffman Codes */ +function dyn(data, boff) { + /* nomenclature from RFC1951 refers to bit values; these are offset by the implicit constant */ + var _HLIT = read_bits_5(data, boff) + 257; boff += 5; + var _HDIST = read_bits_5(data, boff) + 1; boff += 5; + var _HCLEN = read_bits_4(data, boff) + 4; boff += 4; + var w = 0; + + /* grab and store code lengths */ + var clens = use_typed_arrays ? new Uint8Array(19) : zero_fill_array(19); + var ctree = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]; + var maxlen = 1; + var bl_count = use_typed_arrays ? new Uint8Array(8) : zero_fill_array(8); + var next_code = use_typed_arrays ? new Uint8Array(8) : zero_fill_array(8); + var L = clens.length; /* 19 */ + for(var i = 0; i < _HCLEN; ++i) { + clens[CLEN_ORDER[i]] = w = read_bits_3(data, boff); + if(maxlen < w) maxlen = w; + bl_count[w]++; + boff += 3; + } + + /* build code tree */ + var ccode = 0; + bl_count[0] = 0; + for(i = 1; i <= maxlen; ++i) next_code[i] = ccode = (ccode + bl_count[i-1])<<1; + for(i = 0; i < L; ++i) if((ccode = clens[i]) != 0) ctree[i] = next_code[ccode]++; + /* cmap[7 bits from stream] = (off&7) + (lit<<3) */ + var cleni = 0; + for(i = 0; i < L; ++i) { + cleni = clens[i]; + if(cleni != 0) { + ccode = bitswap8[ctree[i]]>>(8-cleni); + for(var j = (1<<(7-cleni))-1; j>=0; --j) dyn_cmap[ccode|(j<>>= 3)) { + case 16: + w = 3 + read_bits_2(data, boff); boff += 2; + ccode = hcodes[hcodes.length - 1]; + while(w-- > 0) hcodes.push(ccode); + break; + case 17: + w = 3 + read_bits_3(data, boff); boff += 3; + while(w-- > 0) hcodes.push(0); + break; + case 18: + w = 11 + read_bits_7(data, boff); boff += 7; + while(w -- > 0) hcodes.push(0); + break; + default: + hcodes.push(ccode); + if(maxlen < ccode) maxlen = ccode; + break; + } + } + + /* build literal / length trees */ + var h1 = hcodes.slice(0, _HLIT), h2 = hcodes.slice(_HLIT); + for(i = _HLIT; i < 286; ++i) h1[i] = 0; + for(i = _HDIST; i < 30; ++i) h2[i] = 0; + dyn_len_1 = build_tree(h1, dyn_lmap, 286); + dyn_len_2 = build_tree(h2, dyn_dmap, 30); + return boff; +} + +/* return [ data, bytesRead ] */ +function inflate(data, usz) { + /* shortcircuit for empty buffer [0x03, 0x00] */ + if(data[0] == 3 && !(data[1] & 0x3)) { return [new_raw_buf(usz), 2]; } + + /* bit offset */ + var boff = 0; + + /* header includes final bit and type bits */ + var header = 0; + + var outbuf = new_unsafe_buf(usz ? usz : (1<<18)); + var woff = 0; + var OL = outbuf.length>>>0; + var max_len_1 = 0, max_len_2 = 0; + + while((header&1) == 0) { + header = read_bits_3(data, boff); boff += 3; + if((header >>> 1) == 0) { + /* Stored block */ + if(boff & 7) boff += 8 - (boff&7); + /* 2 bytes sz, 2 bytes bit inverse */ + var sz = data[boff>>>3] | data[(boff>>>3)+1]<<8; + boff += 32; + /* push sz bytes */ + if(sz > 0) { + if(!usz && OL < woff + sz) { outbuf = realloc(outbuf, woff + sz); OL = outbuf.length; } + while(sz-- > 0) { outbuf[woff++] = data[boff>>>3]; boff += 8; } + } + continue; + } else if((header >> 1) == 1) { + /* Fixed Huffman */ + max_len_1 = 9; max_len_2 = 5; + } else { + /* Dynamic Huffman */ + boff = dyn(data, boff); + max_len_1 = dyn_len_1; max_len_2 = dyn_len_2; + } + for(;;) { // while(true) is apparently out of vogue in modern JS circles + if(!usz && (OL < woff + 32767)) { outbuf = realloc(outbuf, woff + 32767); OL = outbuf.length; } + /* ingest code and move read head */ + var bits = read_bits_n(data, boff, max_len_1); + var code = (header>>>1) == 1 ? fix_lmap[bits] : dyn_lmap[bits]; + boff += code & 15; code >>>= 4; + /* 0-255 are literals, 256 is end of block token, 257+ are copy tokens */ + if(((code>>>8)&0xFF) === 0) outbuf[woff++] = code; + else if(code == 256) break; + else { + code -= 257; + var len_eb = (code < 8) ? 0 : ((code-4)>>2); if(len_eb > 5) len_eb = 0; + var tgt = woff + LEN_LN[code]; + /* length extra bits */ + if(len_eb > 0) { + tgt += read_bits_n(data, boff, len_eb); + boff += len_eb; + } + + /* dist code */ + bits = read_bits_n(data, boff, max_len_2); + code = (header>>>1) == 1 ? fix_dmap[bits] : dyn_dmap[bits]; + boff += code & 15; code >>>= 4; + var dst_eb = (code < 4 ? 0 : (code-2)>>1); + var dst = DST_LN[code]; + /* dist extra bits */ + if(dst_eb > 0) { + dst += read_bits_n(data, boff, dst_eb); + boff += dst_eb; + } + + /* in the common case, manual byte copy is faster than TA set / Buffer copy */ + if(!usz && OL < tgt) { outbuf = realloc(outbuf, tgt + 100); OL = outbuf.length; } + while(woff < tgt) { outbuf[woff] = outbuf[woff - dst]; ++woff; } + } + } + } + if(usz) return [outbuf, (boff+7)>>>3]; + return [outbuf.slice(0, woff), (boff+7)>>>3]; +} + +function _inflate(payload, usz) { + var data = payload.slice(payload.l||0); + var out = inflate(data, usz); + payload.l += out[1]; + return out[0]; +} + +function warn_or_throw(wrn, msg) { + if(wrn) { if(typeof console !== 'undefined') console.error(msg); } + else throw new Error(msg); +} + +function parse_zip(file, options) { + var blob = file; + prep_blob(blob, 0); + + var FileIndex = [], FullPaths = []; + var o = { + FileIndex: FileIndex, + FullPaths: FullPaths + }; + init_cfb(o, { root: options.root }); + + /* find end of central directory, start just after signature */ + var i = blob.length - 4; + while((blob[i] != 0x50 || blob[i+1] != 0x4b || blob[i+2] != 0x05 || blob[i+3] != 0x06) && i >= 0) --i; + blob.l = i + 4; + + /* parse end of central directory */ + blob.l += 4; + var fcnt = blob.read_shift(2); + blob.l += 6; + var start_cd = blob.read_shift(4); + + /* parse central directory */ + blob.l = start_cd; + + for(i = 0; i < fcnt; ++i) { + /* trust local file header instead of CD entry */ + blob.l += 20; + var csz = blob.read_shift(4); + var usz = blob.read_shift(4); + var namelen = blob.read_shift(2); + var efsz = blob.read_shift(2); + var fcsz = blob.read_shift(2); + blob.l += 8; + var offset = blob.read_shift(4); + var EF = parse_extra_field(blob.slice(blob.l+namelen, blob.l+namelen+efsz)); + blob.l += namelen + efsz + fcsz; + + var L = blob.l; + blob.l = offset + 4; + parse_local_file(blob, csz, usz, o, EF); + blob.l = L; + } + return o; +} + + +/* head starts just after local file header signature */ +function parse_local_file(blob, csz, usz, o, EF) { + /* [local file header] */ + blob.l += 2; + var flags = blob.read_shift(2); + var meth = blob.read_shift(2); + var date = parse_dos_date(blob); + + if(flags & 0x2041) throw new Error("Unsupported ZIP encryption"); + var crc32 = blob.read_shift(4); + var _csz = blob.read_shift(4); + var _usz = blob.read_shift(4); + + var namelen = blob.read_shift(2); + var efsz = blob.read_shift(2); + + // TODO: flags & (1<<11) // UTF8 + var name = ""; for(var i = 0; i < namelen; ++i) name += String.fromCharCode(blob[blob.l++]); + if(efsz) { + var ef = parse_extra_field(blob.slice(blob.l, blob.l + efsz)); + if((ef[0x5455]||{}).mt) date = ef[0x5455].mt; + if(((EF||{})[0x5455]||{}).mt) date = EF[0x5455].mt; + } + blob.l += efsz; + + /* [encryption header] */ + + /* [file data] */ + var data = blob.slice(blob.l, blob.l + _csz); + switch(meth) { + case 8: data = _inflateRawSync(blob, _usz); break; + case 0: break; // TODO: scan for magic number + default: throw new Error("Unsupported ZIP Compression method " + meth); + } + + /* [data descriptor] */ + var wrn = false; + if(flags & 8) { + crc32 = blob.read_shift(4); + if(crc32 == 0x08074b50) { crc32 = blob.read_shift(4); wrn = true; } + _csz = blob.read_shift(4); + _usz = blob.read_shift(4); + } + + if(_csz != csz) warn_or_throw(wrn, "Bad compressed size: " + csz + " != " + _csz); + if(_usz != usz) warn_or_throw(wrn, "Bad uncompressed size: " + usz + " != " + _usz); + //var _crc32 = CRC32.buf(data, 0); + //if((crc32>>0) != (_crc32>>0)) warn_or_throw(wrn, "Bad CRC32 checksum: " + crc32 + " != " + _crc32); + cfb_add(o, name, data, {unsafe: true, mt: date}); +} +function write_zip(cfb, options) { + var _opts = options || {}; + var out = [], cdirs = []; + var o = new_buf(1); + var method = (_opts.compression ? 8 : 0), flags = 0; + var desc = false; + if(desc) flags |= 8; + var i = 0, j = 0; + + var start_cd = 0, fcnt = 0; + var root = cfb.FullPaths[0], fp = root, fi = cfb.FileIndex[0]; + var crcs = []; + var sz_cd = 0; + + for(i = 1; i < cfb.FullPaths.length; ++i) { + fp = cfb.FullPaths[i].slice(root.length); fi = cfb.FileIndex[i]; + if(!fi.size || !fi.content || fp == "\u0001Sh33tJ5") continue; + var start = start_cd; + + /* TODO: CP437 filename */ + var namebuf = new_buf(fp.length); + for(j = 0; j < fp.length; ++j) namebuf.write_shift(1, fp.charCodeAt(j) & 0x7F); + namebuf = namebuf.slice(0, namebuf.l); + crcs[fcnt] = CRC32.buf(fi.content, 0); + + var outbuf = fi.content; + if(method == 8) outbuf = _deflateRawSync(outbuf); + + /* local file header */ + o = new_buf(30); + o.write_shift(4, 0x04034b50); + o.write_shift(2, 20); + o.write_shift(2, flags); + o.write_shift(2, method); + /* TODO: last mod file time/date */ + if(fi.mt) write_dos_date(o, fi.mt); + else o.write_shift(4, 0); + o.write_shift(-4, (flags & 8) ? 0 : crcs[fcnt]); + o.write_shift(4, (flags & 8) ? 0 : outbuf.length); + o.write_shift(4, (flags & 8) ? 0 : fi.content.length); + o.write_shift(2, namebuf.length); + o.write_shift(2, 0); + + start_cd += o.length; + out.push(o); + start_cd += namebuf.length; + out.push(namebuf); + + /* TODO: extra fields? */ + + /* TODO: encryption header ? */ + + start_cd += outbuf.length; + out.push(outbuf); + + /* data descriptor */ + if(flags & 8) { + o = new_buf(12); + o.write_shift(-4, crcs[fcnt]); + o.write_shift(4, outbuf.length); + o.write_shift(4, fi.content.length); + start_cd += o.l; + out.push(o); + } + + /* central directory */ + o = new_buf(46); + o.write_shift(4, 0x02014b50); + o.write_shift(2, 0); + o.write_shift(2, 20); + o.write_shift(2, flags); + o.write_shift(2, method); + o.write_shift(4, 0); /* TODO: last mod file time/date */ + o.write_shift(-4, crcs[fcnt]); + + o.write_shift(4, outbuf.length); + o.write_shift(4, fi.content.length); + o.write_shift(2, namebuf.length); + o.write_shift(2, 0); + o.write_shift(2, 0); + o.write_shift(2, 0); + o.write_shift(2, 0); + o.write_shift(4, 0); + o.write_shift(4, start); + + sz_cd += o.l; + cdirs.push(o); + sz_cd += namebuf.length; + cdirs.push(namebuf); + ++fcnt; + } + + /* end of central directory */ + o = new_buf(22); + o.write_shift(4, 0x06054b50); + o.write_shift(2, 0); + o.write_shift(2, 0); + o.write_shift(2, fcnt); + o.write_shift(2, fcnt); + o.write_shift(4, sz_cd); + o.write_shift(4, start_cd); + o.write_shift(2, 0); + + return bconcat(([bconcat((out)), bconcat(cdirs), o])); +} +var ContentTypeMap = ({ + "htm": "text/html", + "xml": "text/xml", + + "gif": "image/gif", + "jpg": "image/jpeg", + "png": "image/png", + + "mso": "application/x-mso", + "thmx": "application/vnd.ms-officetheme", + "sh33tj5": "application/octet-stream" +}); + +function get_content_type(fi, fp) { + if(fi.ctype) return fi.ctype; + + var ext = fi.name || "", m = ext.match(/\.([^\.]+)$/); + if(m && ContentTypeMap[m[1]]) return ContentTypeMap[m[1]]; + + if(fp) { + m = (ext = fp).match(/[\.\\]([^\.\\])+$/); + if(m && ContentTypeMap[m[1]]) return ContentTypeMap[m[1]]; + } + + return "application/octet-stream"; +} + +/* 76 character chunks TODO: intertwine encoding */ +function write_base64_76(bstr) { + var data = Base64_encode(bstr); + var o = []; + for(var i = 0; i < data.length; i+= 76) o.push(data.slice(i, i+76)); + return o.join("\r\n") + "\r\n"; +} + +/* +Rules for QP: + - escape =## applies for all non-display characters and literal "=" + - space or tab at end of line must be encoded + - \r\n newlines can be preserved, but bare \r and \n must be escaped + - lines must not exceed 76 characters, use soft breaks =\r\n + +TODO: Some files from word appear to write line extensions with bare equals: + +``` + 0) { + root = root.slice(0, root.length - 1); + root = root.slice(0, root.lastIndexOf("/") + 1); + if(row.slice(0,root.length) == root) break; + } + } + + var mboundary = (data[1] || "").match(/boundary="(.*?)"/); + if(!mboundary) throw new Error("MAD cannot find boundary"); + var boundary = "--" + (mboundary[1] || ""); + + var FileIndex = [], FullPaths = []; + var o = { + FileIndex: FileIndex, + FullPaths: FullPaths + }; + init_cfb(o); + var start_di, fcnt = 0; + for(di = 0; di < data.length; ++di) { + var line = data[di]; + if(line !== boundary && line !== boundary + "--") continue; + if(fcnt++) parse_mime(o, data.slice(start_di, di), root); + start_di = di; + } + return o; +} + +function write_mad(cfb, options) { + var opts = options || {}; + var boundary = opts.boundary || "SheetJS"; + boundary = '------=' + boundary; + + var out = [ + 'MIME-Version: 1.0', + 'Content-Type: multipart/related; boundary="' + boundary.slice(2) + '"', + '', + '', + '' + ]; + + var root = cfb.FullPaths[0], fp = root, fi = cfb.FileIndex[0]; + for(var i = 1; i < cfb.FullPaths.length; ++i) { + fp = cfb.FullPaths[i].slice(root.length); + fi = cfb.FileIndex[i]; + if(!fi.size || !fi.content || fp == "\u0001Sh33tJ5") continue; + + /* Normalize filename */ + fp = fp.replace(/[\x00-\x08\x0B\x0C\x0E-\x1F\x7E-\xFF]/g, function(c) { + return "_x" + c.charCodeAt(0).toString(16) + "_"; + }).replace(/[\u0080-\uFFFF]/g, function(u) { + return "_u" + u.charCodeAt(0).toString(16) + "_"; + }); + + /* Extract content as binary string */ + var ca = fi.content; + // $FlowIgnore + var cstr = has_buf && Buffer.isBuffer(ca) ? ca.toString("binary") : a2s(ca); + + /* 4/5 of first 1024 chars ascii -> quoted printable, else base64 */ + var dispcnt = 0, L = Math.min(1024, cstr.length), cc = 0; + for(var csl = 0; csl <= L; ++csl) if((cc=cstr.charCodeAt(csl)) >= 0x20 && cc < 0x80) ++dispcnt; + var qp = dispcnt >= L * 4 / 5; + + out.push(boundary); + out.push('Content-Location: ' + (opts.root || 'file:///C:/SheetJS/') + fp); + out.push('Content-Transfer-Encoding: ' + (qp ? 'quoted-printable' : 'base64')); + out.push('Content-Type: ' + get_content_type(fi, fp)); + out.push(''); + + out.push(qp ? write_quoted_printable(cstr) : write_base64_76(cstr)); + } + out.push(boundary + '--\r\n'); + return out.join("\r\n"); +} +function cfb_new(opts) { + var o = ({}); + init_cfb(o, opts); + return o; +} + +function cfb_add(cfb, name, content, opts) { + var unsafe = opts && opts.unsafe; + if(!unsafe) init_cfb(cfb); + var file = !unsafe && CFB.find(cfb, name); + if(!file) { + var fpath = cfb.FullPaths[0]; + if(name.slice(0, fpath.length) == fpath) fpath = name; + else { + if(fpath.slice(-1) != "/") fpath += "/"; + fpath = (fpath + name).replace("//","/"); + } + file = ({name: filename(name), type: 2}); + cfb.FileIndex.push(file); + cfb.FullPaths.push(fpath); + if(!unsafe) CFB.utils.cfb_gc(cfb); + } +file.content = (content); + file.size = content ? content.length : 0; + if(opts) { + if(opts.CLSID) file.clsid = opts.CLSID; + if(opts.mt) file.mt = opts.mt; + if(opts.ct) file.ct = opts.ct; + } + return file; +} + +function cfb_del(cfb, name) { + init_cfb(cfb); + var file = CFB.find(cfb, name); + if(file) for(var j = 0; j < cfb.FileIndex.length; ++j) if(cfb.FileIndex[j] == file) { + cfb.FileIndex.splice(j, 1); + cfb.FullPaths.splice(j, 1); + return true; + } + return false; +} + +function cfb_mov(cfb, old_name, new_name) { + init_cfb(cfb); + var file = CFB.find(cfb, old_name); + if(file) for(var j = 0; j < cfb.FileIndex.length; ++j) if(cfb.FileIndex[j] == file) { + cfb.FileIndex[j].name = filename(new_name); + cfb.FullPaths[j] = new_name; + return true; + } + return false; +} + +function cfb_gc(cfb) { rebuild_cfb(cfb, true); } + +exports.find = find; +exports.read = read; +exports.parse = parse; +exports.write = write; +exports.writeFile = write_file; +exports.utils = { + cfb_new: cfb_new, + cfb_add: cfb_add, + cfb_del: cfb_del, + cfb_mov: cfb_mov, + cfb_gc: cfb_gc, + ReadShift: ReadShift, + CheckField: CheckField, + prep_blob: prep_blob, + bconcat: bconcat, + use_zlib: use_zlib, + _deflateRaw: _deflate, + _inflateRaw: _inflate, + consts: consts +}; + +return exports; +})(); + +var _fs; +if(typeof require !== 'undefined') try { _fs = require('fs'); } catch(e) {} + +/* normalize data for blob ctor */ +function blobify(data) { + if(typeof data === "string") return s2ab(data); + if(Array.isArray(data)) return a2u(data); + return data; +} +/* write or download file */ +function write_dl(fname, payload, enc) { + /*global IE_SaveFile, Blob, navigator, saveAs, document, File, chrome */ + if(typeof _fs !== 'undefined' && _fs.writeFileSync) return enc ? _fs.writeFileSync(fname, payload, enc) : _fs.writeFileSync(fname, payload); + if(typeof Deno !== 'undefined') { + /* in this spot, it's safe to assume typed arrays and TextEncoder/TextDecoder exist */ + if(enc && typeof payload == "string") switch(enc) { + case "utf8": payload = new TextEncoder(enc).encode(payload); break; + case "binary": payload = s2ab(payload); break; + /* TODO: binary equivalent */ + default: throw new Error("Unsupported encoding " + enc); + } + return Deno.writeFileSync(fname, payload); + } + var data = (enc == "utf8") ? utf8write(payload) : payload; +if(typeof IE_SaveFile !== 'undefined') return IE_SaveFile(data, fname); + if(typeof Blob !== 'undefined') { + var blob = new Blob([blobify(data)], {type:"application/octet-stream"}); +if(typeof navigator !== 'undefined' && navigator.msSaveBlob) return navigator.msSaveBlob(blob, fname); +if(typeof saveAs !== 'undefined') return saveAs(blob, fname); + if(typeof URL !== 'undefined' && typeof document !== 'undefined' && document.createElement && URL.createObjectURL) { + var url = URL.createObjectURL(blob); +if(typeof chrome === 'object' && typeof (chrome.downloads||{}).download == "function") { + if(URL.revokeObjectURL && typeof setTimeout !== 'undefined') setTimeout(function() { URL.revokeObjectURL(url); }, 60000); + return chrome.downloads.download({ url: url, filename: fname, saveAs: true}); + } + var a = document.createElement("a"); + if(a.download != null) { +a.download = fname; a.href = url; document.body.appendChild(a); a.click(); +document.body.removeChild(a); + if(URL.revokeObjectURL && typeof setTimeout !== 'undefined') setTimeout(function() { URL.revokeObjectURL(url); }, 60000); + return url; + } + } + } + // $FlowIgnore + if(typeof $ !== 'undefined' && typeof File !== 'undefined' && typeof Folder !== 'undefined') try { // extendscript + // $FlowIgnore + var out = File(fname); out.open("w"); out.encoding = "binary"; + if(Array.isArray(payload)) payload = a2s(payload); + out.write(payload); out.close(); return payload; + } catch(e) { if(!e.message || !e.message.match(/onstruct/)) throw e; } + throw new Error("cannot save file " + fname); +} + +/* read binary data from file */ +function read_binary(path) { + if(typeof _fs !== 'undefined') return _fs.readFileSync(path); + if(typeof Deno !== 'undefined') return Deno.readFileSync(path); + // $FlowIgnore + if(typeof $ !== 'undefined' && typeof File !== 'undefined' && typeof Folder !== 'undefined') try { // extendscript + // $FlowIgnore + var infile = File(path); infile.open("r"); infile.encoding = "binary"; + var data = infile.read(); infile.close(); + return data; + } catch(e) { if(!e.message || !e.message.match(/onstruct/)) throw e; } + throw new Error("Cannot access file " + path); +} +function keys(o) { + var ks = Object.keys(o), o2 = []; + for(var i = 0; i < ks.length; ++i) if(Object.prototype.hasOwnProperty.call(o, ks[i])) o2.push(ks[i]); + return o2; +} + +function evert_key(obj, key) { + var o = ([]), K = keys(obj); + for(var i = 0; i !== K.length; ++i) if(o[obj[K[i]][key]] == null) o[obj[K[i]][key]] = K[i]; + return o; +} + +function evert(obj) { + var o = ([]), K = keys(obj); + for(var i = 0; i !== K.length; ++i) o[obj[K[i]]] = K[i]; + return o; +} + +function evert_num(obj) { + var o = ([]), K = keys(obj); + for(var i = 0; i !== K.length; ++i) o[obj[K[i]]] = parseInt(K[i],10); + return o; +} + +function evert_arr(obj) { + var o = ([]), K = keys(obj); + for(var i = 0; i !== K.length; ++i) { + if(o[obj[K[i]]] == null) o[obj[K[i]]] = []; + o[obj[K[i]]].push(K[i]); + } + return o; +} + +var basedate = new Date(1899, 11, 30, 0, 0, 0); // 2209161600000 +function datenum(v, date1904) { + var epoch = v.getTime(); + if(date1904) epoch -= 1462*24*60*60*1000; + var dnthresh = basedate.getTime() + (v.getTimezoneOffset() - basedate.getTimezoneOffset()) * 60000; + return (epoch - dnthresh) / (24 * 60 * 60 * 1000); +} +var refdate = new Date(); +var dnthresh = basedate.getTime() + (refdate.getTimezoneOffset() - basedate.getTimezoneOffset()) * 60000; +var refoffset = refdate.getTimezoneOffset(); +function numdate(v) { + var out = new Date(); + out.setTime(v * 24 * 60 * 60 * 1000 + dnthresh); + if (out.getTimezoneOffset() !== refoffset) { + out.setTime(out.getTime() + (out.getTimezoneOffset() - refoffset) * 60000); + } + return out; +} + +/* ISO 8601 Duration */ +function parse_isodur(s) { + var sec = 0, mt = 0, time = false; + var m = s.match(/P([0-9\.]+Y)?([0-9\.]+M)?([0-9\.]+D)?T([0-9\.]+H)?([0-9\.]+M)?([0-9\.]+S)?/); + if(!m) throw new Error("|" + s + "| is not an ISO8601 Duration"); + for(var i = 1; i != m.length; ++i) { + if(!m[i]) continue; + mt = 1; + if(i > 3) time = true; + switch(m[i].slice(m[i].length-1)) { + case 'Y': + throw new Error("Unsupported ISO Duration Field: " + m[i].slice(m[i].length-1)); + case 'D': mt *= 24; + /* falls through */ + case 'H': mt *= 60; + /* falls through */ + case 'M': + if(!time) throw new Error("Unsupported ISO Duration Field: M"); + else mt *= 60; + /* falls through */ + case 'S': break; + } + sec += mt * parseInt(m[i], 10); + } + return sec; +} + +var good_pd_date_1 = new Date('2017-02-19T19:06:09.000Z'); +var good_pd_date = isNaN(good_pd_date_1.getFullYear()) ? new Date('2/19/17') : good_pd_date_1; +var good_pd = good_pd_date.getFullYear() == 2017; +/* parses a date as a local date */ +function parseDate(str, fixdate) { + var d = new Date(str); + if(good_pd) { +if(fixdate > 0) d.setTime(d.getTime() + d.getTimezoneOffset() * 60 * 1000); + else if(fixdate < 0) d.setTime(d.getTime() - d.getTimezoneOffset() * 60 * 1000); + return d; + } + if(str instanceof Date) return str; + if(good_pd_date.getFullYear() == 1917 && !isNaN(d.getFullYear())) { + var s = d.getFullYear(); + if(str.indexOf("" + s) > -1) return d; + d.setFullYear(d.getFullYear() + 100); return d; + } + var n = str.match(/\d+/g)||["2017","2","19","0","0","0"]; + var out = new Date(+n[0], +n[1] - 1, +n[2], (+n[3]||0), (+n[4]||0), (+n[5]||0)); + if(str.indexOf("Z") > -1) out = new Date(out.getTime() - out.getTimezoneOffset() * 60 * 1000); + return out; +} + +function cc2str(arr, debomit) { + if(has_buf && Buffer.isBuffer(arr)) { + if(debomit) { + if(arr[0] == 0xFF && arr[1] == 0xFE) return utf8write(arr.slice(2).toString("utf16le")); + if(arr[1] == 0xFE && arr[2] == 0xFF) return utf8write(utf16beread(arr.slice(2).toString("binary"))); + } + return arr.toString("binary"); + } + + if(typeof TextDecoder !== "undefined") try { + if(debomit) { + if(arr[0] == 0xFF && arr[1] == 0xFE) return utf8write(new TextDecoder("utf-16le").decode(arr.slice(2))); + if(arr[0] == 0xFE && arr[1] == 0xFF) return utf8write(new TextDecoder("utf-16be").decode(arr.slice(2))); + } + var rev = { + "\u20ac": "\x80", "\u201a": "\x82", "\u0192": "\x83", "\u201e": "\x84", + "\u2026": "\x85", "\u2020": "\x86", "\u2021": "\x87", "\u02c6": "\x88", + "\u2030": "\x89", "\u0160": "\x8a", "\u2039": "\x8b", "\u0152": "\x8c", + "\u017d": "\x8e", "\u2018": "\x91", "\u2019": "\x92", "\u201c": "\x93", + "\u201d": "\x94", "\u2022": "\x95", "\u2013": "\x96", "\u2014": "\x97", + "\u02dc": "\x98", "\u2122": "\x99", "\u0161": "\x9a", "\u203a": "\x9b", + "\u0153": "\x9c", "\u017e": "\x9e", "\u0178": "\x9f" + }; + if(Array.isArray(arr)) arr = new Uint8Array(arr); + return new TextDecoder("latin1").decode(arr).replace(/[€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ]/g, function(c) { return rev[c] || c; }); + } catch(e) {} + + var o = []; + for(var i = 0; i != arr.length; ++i) o.push(String.fromCharCode(arr[i])); + return o.join(""); +} + +function dup(o) { + if(typeof JSON != 'undefined' && !Array.isArray(o)) return JSON.parse(JSON.stringify(o)); + if(typeof o != 'object' || o == null) return o; + if(o instanceof Date) return new Date(o.getTime()); + var out = {}; + for(var k in o) if(Object.prototype.hasOwnProperty.call(o, k)) out[k] = dup(o[k]); + return out; +} + +function fill(c,l) { var o = ""; while(o.length < l) o+=c; return o; } + +/* TODO: stress test */ +function fuzzynum(s) { + var v = Number(s); + if(!isNaN(v)) return isFinite(v) ? v : NaN; + if(!/\d/.test(s)) return v; + var wt = 1; + var ss = s.replace(/([\d]),([\d])/g,"$1$2").replace(/[$]/g,"").replace(/[%]/g, function() { wt *= 100; return "";}); + if(!isNaN(v = Number(ss))) return v / wt; + ss = ss.replace(/[(](.*)[)]/,function($$, $1) { wt = -wt; return $1;}); + if(!isNaN(v = Number(ss))) return v / wt; + return v; +} +var lower_months = ['january', 'february', 'march', 'april', 'may', 'june', 'july', 'august', 'september', 'october', 'november', 'december']; +function fuzzydate(s) { + var o = new Date(s), n = new Date(NaN); + var y = o.getYear(), m = o.getMonth(), d = o.getDate(); + if(isNaN(d)) return n; + var lower = s.toLowerCase(); + if(lower.match(/jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec/)) { + lower = lower.replace(/[^a-z]/g,"").replace(/([^a-z]|^)[ap]m?([^a-z]|$)/,""); + if(lower.length > 3 && lower_months.indexOf(lower) == -1) return n; + } else if(lower.match(/[a-z]/)) return n; + if(y < 0 || y > 8099) return n; + if((m > 0 || d > 1) && y != 101) return o; + if(s.match(/[^-0-9:,\/\\]/)) return n; + return o; +} + +var split_regex = (function() { + var safe_split_regex = "abacaba".split(/(:?b)/i).length == 5; + return function split_regex(str, re, def) { + if(safe_split_regex || typeof re == "string") return str.split(re); + var p = str.split(re), o = [p[0]]; + for(var i = 1; i < p.length; ++i) { o.push(def); o.push(p[i]); } + return o; + }; +})(); +function getdatastr(data) { + if(!data) return null; + if(data.content && data.type) return cc2str(data.content, true); + if(data.data) return debom(data.data); + if(data.asNodeBuffer && has_buf) return debom(data.asNodeBuffer().toString('binary')); + if(data.asBinary) return debom(data.asBinary()); + if(data._data && data._data.getContent) return debom(cc2str(Array.prototype.slice.call(data._data.getContent(),0))); + return null; +} + +function getdatabin(data) { + if(!data) return null; + if(data.data) return char_codes(data.data); + if(data.asNodeBuffer && has_buf) return data.asNodeBuffer(); + if(data._data && data._data.getContent) { + var o = data._data.getContent(); + if(typeof o == "string") return char_codes(o); + return Array.prototype.slice.call(o); + } + if(data.content && data.type) return data.content; + return null; +} + +function getdata(data) { return (data && data.name.slice(-4) === ".bin") ? getdatabin(data) : getdatastr(data); } + +/* Part 2 Section 10.1.2 "Mapping Content Types" Names are case-insensitive */ +/* OASIS does not comment on filename case sensitivity */ +function safegetzipfile(zip, file) { + var k = zip.FullPaths || keys(zip.files); + var f = file.toLowerCase().replace(/[\/]/g, '\\'), g = f.replace(/\\/g,'\/'); + for(var i=0; i\/]+)\s*=\s*((?:")([^"]*)(?:")|(?:')([^']*)(?:')|([^'">\s]+))/g; +var tagregex1=/<[\/\?]?[a-zA-Z0-9:_-]+(?:\s+[^"\s?>\/]+\s*=\s*(?:"[^"]*"|'[^']*'|[^'">\s=]+))*\s*[\/\?]?>/mg, tagregex2 = /<[^>]*>/g; +var tagregex = XML_HEADER.match(tagregex1) ? tagregex1 : tagregex2; +var nsregex=/<\w*:/, nsregex2 = /<(\/?)\w+:/; +function parsexmltag(tag, skip_root, skip_LC) { + var z = ({}); + var eq = 0, c = 0; + for(; eq !== tag.length; ++eq) if((c = tag.charCodeAt(eq)) === 32 || c === 10 || c === 13) break; + if(!skip_root) z[0] = tag.slice(0, eq); + if(eq === tag.length) return z; + var m = tag.match(attregexg), j=0, v="", i=0, q="", cc="", quot = 1; + if(m) for(i = 0; i != m.length; ++i) { + cc = m[i]; + for(c=0; c != cc.length; ++c) if(cc.charCodeAt(c) === 61) break; + q = cc.slice(0,c).trim(); + while(cc.charCodeAt(c+1) == 32) ++c; + quot = ((eq=cc.charCodeAt(c+1)) == 34 || eq == 39) ? 1 : 0; + v = cc.slice(c+1+quot, cc.length-quot); + for(j=0;j!=q.length;++j) if(q.charCodeAt(j) === 58) break; + if(j===q.length) { + if(q.indexOf("_") > 0) q = q.slice(0, q.indexOf("_")); // from ods + z[q] = v; + if(!skip_LC) z[q.toLowerCase()] = v; + } + else { + var k = (j===5 && q.slice(0,5)==="xmlns"?"xmlns":"")+q.slice(j+1); + if(z[k] && q.slice(j-3,j) == "ext") continue; // from ods + z[k] = v; + if(!skip_LC) z[k.toLowerCase()] = v; + } + } + return z; +} +function strip_ns(x) { return x.replace(nsregex2, "<$1"); } + +var encodings = { + '"': '"', + ''': "'", + '>': '>', + '<': '<', + '&': '&' +}; +var rencoding = evert(encodings); +//var rencstr = "&<>'\"".split(""); + +// TODO: CP remap (need to read file version to determine OS) +var unescapexml = (function() { + /* 22.4.2.4 bstr (Basic String) */ + var encregex = /&(?:quot|apos|gt|lt|amp|#x?([\da-fA-F]+));/ig, coderegex = /_x([\da-fA-F]{4})_/ig; + return function unescapexml(text) { + var s = text + '', i = s.indexOf("-1?16:10))||$$; }).replace(coderegex,function(m,c) {return String.fromCharCode(parseInt(c,16));}); + var j = s.indexOf("]]>"); + return unescapexml(s.slice(0, i)) + s.slice(i+9,j) + unescapexml(s.slice(j+3)); + }; +})(); + +var decregex=/[&<>'"]/g, charegex = /[\u0000-\u0008\u000b-\u001f]/g; +function escapexml(text){ + var s = text + ''; + return s.replace(decregex, function(y) { return rencoding[y]; }).replace(charegex,function(s) { return "_x" + ("000"+s.charCodeAt(0).toString(16)).slice(-4) + "_";}); +} +function escapexmltag(text){ return escapexml(text).replace(/ /g,"_x0020_"); } + +var htmlcharegex = /[\u0000-\u001f]/g; +function escapehtml(text){ + var s = text + ''; + return s.replace(decregex, function(y) { return rencoding[y]; }).replace(/\n/g, "
").replace(htmlcharegex,function(s) { return "&#x" + ("000"+s.charCodeAt(0).toString(16)).slice(-4) + ";"; }); +} + +function escapexlml(text){ + var s = text + ''; + return s.replace(decregex, function(y) { return rencoding[y]; }).replace(htmlcharegex,function(s) { return "&#x" + (s.charCodeAt(0).toString(16)).toUpperCase() + ";"; }); +} + +/* TODO: handle codepages */ +var xlml_fixstr = (function() { + var entregex = /&#(\d+);/g; + function entrepl($$,$1) { return String.fromCharCode(parseInt($1,10)); } + return function xlml_fixstr(str) { return str.replace(entregex,entrepl); }; +})(); +function xlml_unfixstr(str) { return str.replace(/(\r\n|[\r\n])/g,"\ "); } + +function parsexmlbool(value) { + switch(value) { + case 1: case true: case '1': case 'true': case 'TRUE': return true; + /* case '0': case 'false': case 'FALSE':*/ + default: return false; + } +} + +function utf8reada(orig) { + var out = "", i = 0, c = 0, d = 0, e = 0, f = 0, w = 0; + while (i < orig.length) { + c = orig.charCodeAt(i++); + if (c < 128) { out += String.fromCharCode(c); continue; } + d = orig.charCodeAt(i++); + if (c>191 && c<224) { f = ((c & 31) << 6); f |= (d & 63); out += String.fromCharCode(f); continue; } + e = orig.charCodeAt(i++); + if (c < 240) { out += String.fromCharCode(((c & 15) << 12) | ((d & 63) << 6) | (e & 63)); continue; } + f = orig.charCodeAt(i++); + w = (((c & 7) << 18) | ((d & 63) << 12) | ((e & 63) << 6) | (f & 63))-65536; + out += String.fromCharCode(0xD800 + ((w>>>10)&1023)); + out += String.fromCharCode(0xDC00 + (w&1023)); + } + return out; +} + +function utf8readb(data) { + var out = new_raw_buf(2*data.length), w, i, j = 1, k = 0, ww=0, c; + for(i = 0; i < data.length; i+=j) { + j = 1; + if((c=data.charCodeAt(i)) < 128) w = c; + else if(c < 224) { w = (c&31)*64+(data.charCodeAt(i+1)&63); j=2; } + else if(c < 240) { w=(c&15)*4096+(data.charCodeAt(i+1)&63)*64+(data.charCodeAt(i+2)&63); j=3; } + else { j = 4; + w = (c & 7)*262144+(data.charCodeAt(i+1)&63)*4096+(data.charCodeAt(i+2)&63)*64+(data.charCodeAt(i+3)&63); + w -= 65536; ww = 0xD800 + ((w>>>10)&1023); w = 0xDC00 + (w&1023); + } + if(ww !== 0) { out[k++] = ww&255; out[k++] = ww>>>8; ww = 0; } + out[k++] = w%256; out[k++] = w>>>8; + } + return out.slice(0,k).toString('ucs2'); +} + +function utf8readc(data) { return Buffer_from(data, 'binary').toString('utf8'); } + +var utf8corpus = "foo bar baz\u00e2\u0098\u0083\u00f0\u009f\u008d\u00a3"; +var utf8read = has_buf && (utf8readc(utf8corpus) == utf8reada(utf8corpus) && utf8readc || utf8readb(utf8corpus) == utf8reada(utf8corpus) && utf8readb) || utf8reada; + +var utf8write = has_buf ? function(data) { return Buffer_from(data, 'utf8').toString("binary"); } : function(orig) { + var out = [], i = 0, c = 0, d = 0; + while(i < orig.length) { + c = orig.charCodeAt(i++); + switch(true) { + case c < 128: out.push(String.fromCharCode(c)); break; + case c < 2048: + out.push(String.fromCharCode(192 + (c >> 6))); + out.push(String.fromCharCode(128 + (c & 63))); + break; + case c >= 55296 && c < 57344: + c -= 55296; d = orig.charCodeAt(i++) - 56320 + (c<<10); + out.push(String.fromCharCode(240 + ((d >>18) & 7))); + out.push(String.fromCharCode(144 + ((d >>12) & 63))); + out.push(String.fromCharCode(128 + ((d >> 6) & 63))); + out.push(String.fromCharCode(128 + (d & 63))); + break; + default: + out.push(String.fromCharCode(224 + (c >> 12))); + out.push(String.fromCharCode(128 + ((c >> 6) & 63))); + out.push(String.fromCharCode(128 + (c & 63))); + } + } + return out.join(""); +}; + +// matches ... extracts content +var matchtag = (function() { + var mtcache = ({}); + return function matchtag(f,g) { + var t = f+"|"+(g||""); + if(mtcache[t]) return mtcache[t]; + return (mtcache[t] = new RegExp('<(?:\\w+:)?'+f+'(?: xml:space="preserve")?(?:[^>]*)>([\\s\\S]*?)',((g||"")))); + }; +})(); + +var htmldecode = (function() { + var entities = [ + ['nbsp', ' '], ['middot', '·'], + ['quot', '"'], ['apos', "'"], ['gt', '>'], ['lt', '<'], ['amp', '&'] + ].map(function(x) { return [new RegExp('&' + x[0] + ';', "ig"), x[1]]; }); + return function htmldecode(str) { + var o = str + // Remove new lines and spaces from start of content + .replace(/^[\t\n\r ]+/, "") + // Remove new lines and spaces from end of content + .replace(/[\t\n\r ]+$/,"") + // Added line which removes any white space characters after and before html tags + .replace(/>\s+/g,">").replace(/\s+ tags with new lines + .replace(/<\s*[bB][rR]\s*\/?>/g,"\n") + // Strip HTML elements + .replace(/<[^>]*>/g,""); + for(var i = 0; i < entities.length; ++i) o = o.replace(entities[i][0], entities[i][1]); + return o; + }; +})(); + +var vtregex = (function(){ var vt_cache = {}; + return function vt_regex(bt) { + if(vt_cache[bt] !== undefined) return vt_cache[bt]; + return (vt_cache[bt] = new RegExp("<(?:vt:)?" + bt + ">([\\s\\S]*?)", 'g') ); +};})(); +var vtvregex = /<\/?(?:vt:)?variant>/g, vtmregex = /<(?:vt:)([^>]*)>([\s\S]*)' + g + ''; } + +function wxt_helper(h) { return keys(h).map(function(k) { return " " + k + '="' + h[k] + '"';}).join(""); } +function writextag(f,g,h) { return '<' + f + ((h != null) ? wxt_helper(h) : "") + ((g != null) ? (g.match(wtregex)?' xml:space="preserve"' : "") + '>' + g + '';} + +function write_w3cdtf(d, t) { try { return d.toISOString().replace(/\.\d*/,""); } catch(e) { if(t) throw e; } return ""; } + +function write_vt(s, xlsx) { + switch(typeof s) { + case 'string': + var o = writextag('vt:lpwstr', escapexml(s)); + if(xlsx) o = o.replace(/"/g, "_x0022_"); + return o; + case 'number': return writextag((s|0)==s?'vt:i4':'vt:r8', escapexml(String(s))); + case 'boolean': return writextag('vt:bool',s?'true':'false'); + } + if(s instanceof Date) return writextag('vt:filetime', write_w3cdtf(s)); + throw new Error("Unable to serialize " + s); +} + +function xlml_normalize(d) { + if(has_buf && Buffer.isBuffer(d)) return d.toString('utf8'); + if(typeof d === 'string') return d; + /* duktape */ + if(typeof Uint8Array !== 'undefined' && d instanceof Uint8Array) return utf8read(a2s(ab2a(d))); + throw new Error("Bad input format: expected Buffer or string"); +} +/* UOS uses CJK in tags */ +var xlmlregex = /<(\/?)([^\s?>:\/]+)(?:[\s?:\/][^>]*)?>/mg; +//var xlmlregex = /<(\/?)([a-z0-9]*:|)(\w+)[^>]*>/mg; + +var XMLNS = ({ + CORE_PROPS: 'http://schemas.openxmlformats.org/package/2006/metadata/core-properties', + CUST_PROPS: "http://schemas.openxmlformats.org/officeDocument/2006/custom-properties", + EXT_PROPS: "http://schemas.openxmlformats.org/officeDocument/2006/extended-properties", + CT: 'http://schemas.openxmlformats.org/package/2006/content-types', + RELS: 'http://schemas.openxmlformats.org/package/2006/relationships', + TCMNT: 'http://schemas.microsoft.com/office/spreadsheetml/2018/threadedcomments', + 'dc': 'http://purl.org/dc/elements/1.1/', + 'dcterms': 'http://purl.org/dc/terms/', + 'dcmitype': 'http://purl.org/dc/dcmitype/', + 'mx': 'http://schemas.microsoft.com/office/mac/excel/2008/main', + 'r': 'http://schemas.openxmlformats.org/officeDocument/2006/relationships', + 'sjs': 'http://schemas.openxmlformats.org/package/2006/sheetjs/core-properties', + 'vt': 'http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes', + 'xsi': 'http://www.w3.org/2001/XMLSchema-instance', + 'xsd': 'http://www.w3.org/2001/XMLSchema' +}); + +var XMLNS_main = [ + 'http://schemas.openxmlformats.org/spreadsheetml/2006/main', + 'http://purl.oclc.org/ooxml/spreadsheetml/main', + 'http://schemas.microsoft.com/office/excel/2006/main', + 'http://schemas.microsoft.com/office/excel/2006/2' +]; + +var XLMLNS = ({ + 'o': 'urn:schemas-microsoft-com:office:office', + 'x': 'urn:schemas-microsoft-com:office:excel', + 'ss': 'urn:schemas-microsoft-com:office:spreadsheet', + 'dt': 'uuid:C2F41010-65B3-11d1-A29F-00AA00C14882', + 'mv': 'http://macVmlSchemaUri', + 'v': 'urn:schemas-microsoft-com:vml', + 'html': 'http://www.w3.org/TR/REC-html40' +}); +function read_double_le(b, idx) { + var s = 1 - 2 * (b[idx + 7] >>> 7); + var e = ((b[idx + 7] & 0x7f) << 4) + ((b[idx + 6] >>> 4) & 0x0f); + var m = (b[idx+6]&0x0f); + for(var i = 5; i >= 0; --i) m = m * 256 + b[idx + i]; + if(e == 0x7ff) return m == 0 ? (s * Infinity) : NaN; + if(e == 0) e = -1022; + else { e -= 1023; m += Math.pow(2,52); } + return s * Math.pow(2, e - 52) * m; +} + +function write_double_le(b, v, idx) { + var bs = ((((v < 0) || (1/v == -Infinity)) ? 1 : 0) << 7), e = 0, m = 0; + var av = bs ? (-v) : v; + if(!isFinite(av)) { e = 0x7ff; m = isNaN(v) ? 0x6969 : 0; } + else if(av == 0) e = m = 0; + else { + e = Math.floor(Math.log(av) / Math.LN2); + m = av * Math.pow(2, 52 - e); + if((e <= -1023) && (!isFinite(m) || (m < Math.pow(2,52)))) { e = -1022; } + else { m -= Math.pow(2,52); e+=1023; } + } + for(var i = 0; i <= 5; ++i, m/=256) b[idx + i] = m & 0xff; + b[idx + 6] = ((e & 0x0f) << 4) | (m & 0xf); + b[idx + 7] = (e >> 4) | bs; +} + +var ___toBuffer = function(bufs) { var x=[],w=10240; for(var i=0;i 0 && Buffer.isBuffer(bufs[0][0])) ? Buffer.concat(bufs[0].map(function(x) { return Buffer.isBuffer(x) ? x : Buffer_from(x); })) : ___toBuffer(bufs);} : ___toBuffer; + +var ___utf16le = function(b,s,e) { var ss=[]; for(var i=s; i 0 ? __utf8(b, i+4,i+4+len-1) : "";}; +var __lpstr = ___lpstr; + +var ___cpstr = function(b,i) { var len = __readUInt32LE(b,i); return len > 0 ? __utf8(b, i+4,i+4+len-1) : "";}; +var __cpstr = ___cpstr; + +var ___lpwstr = function(b,i) { var len = 2*__readUInt32LE(b,i); return len > 0 ? __utf8(b, i+4,i+4+len-1) : "";}; +var __lpwstr = ___lpwstr; + +var ___lpp4 = function lpp4_(b,i) { var len = __readUInt32LE(b,i); return len > 0 ? __utf16le(b, i+4,i+4+len) : "";}; +var __lpp4 = ___lpp4; + +var ___8lpp4 = function(b,i) { var len = __readUInt32LE(b,i); return len > 0 ? __utf8(b, i+4,i+4+len) : "";}; +var __8lpp4 = ___8lpp4; + +var ___double = function(b, idx) { return read_double_le(b, idx);}; +var __double = ___double; + +var is_buf = function is_buf_a(a) { return Array.isArray(a) || (typeof Uint8Array !== "undefined" && a instanceof Uint8Array); }; + +if(has_buf) { + __lpstr = function lpstr_b(b, i) { if(!Buffer.isBuffer(b)) return ___lpstr(b, i); var len = b.readUInt32LE(i); return len > 0 ? b.toString('utf8',i+4,i+4+len-1) : "";}; + __cpstr = function cpstr_b(b, i) { if(!Buffer.isBuffer(b)) return ___cpstr(b, i); var len = b.readUInt32LE(i); return len > 0 ? b.toString('utf8',i+4,i+4+len-1) : "";}; + __lpwstr = function lpwstr_b(b, i) { if(!Buffer.isBuffer(b)) return ___lpwstr(b, i); var len = 2*b.readUInt32LE(i); return b.toString('utf16le',i+4,i+4+len-1);}; + __lpp4 = function lpp4_b(b, i) { if(!Buffer.isBuffer(b)) return ___lpp4(b, i); var len = b.readUInt32LE(i); return b.toString('utf16le',i+4,i+4+len);}; + __8lpp4 = function lpp4_8b(b, i) { if(!Buffer.isBuffer(b)) return ___8lpp4(b, i); var len = b.readUInt32LE(i); return b.toString('utf8',i+4,i+4+len);}; + __double = function double_(b, i) { if(Buffer.isBuffer(b)) return b.readDoubleLE(i); return ___double(b,i); }; + is_buf = function is_buf_b(a) { return Buffer.isBuffer(a) || Array.isArray(a) || (typeof Uint8Array !== "undefined" && a instanceof Uint8Array); }; +} + +/* from js-xls */ +function cpdoit() { + __utf16le = function(b,s,e) { return $cptable.utils.decode(1200, b.slice(s,e)).replace(chr0, ''); }; + __utf8 = function(b,s,e) { return $cptable.utils.decode(65001, b.slice(s,e)); }; + __lpstr = function(b,i) { var len = __readUInt32LE(b,i); return len > 0 ? $cptable.utils.decode(current_ansi, b.slice(i+4, i+4+len-1)) : "";}; + __cpstr = function(b,i) { var len = __readUInt32LE(b,i); return len > 0 ? $cptable.utils.decode(current_codepage, b.slice(i+4, i+4+len-1)) : "";}; + __lpwstr = function(b,i) { var len = 2*__readUInt32LE(b,i); return len > 0 ? $cptable.utils.decode(1200, b.slice(i+4,i+4+len-1)) : "";}; + __lpp4 = function(b,i) { var len = __readUInt32LE(b,i); return len > 0 ? $cptable.utils.decode(1200, b.slice(i+4,i+4+len)) : "";}; + __8lpp4 = function(b,i) { var len = __readUInt32LE(b,i); return len > 0 ? $cptable.utils.decode(65001, b.slice(i+4,i+4+len)) : "";}; +} +if(typeof $cptable !== 'undefined') cpdoit(); + +var __readUInt8 = function(b, idx) { return b[idx]; }; +var __readUInt16LE = function(b, idx) { return (b[idx+1]*(1<<8))+b[idx]; }; +var __readInt16LE = function(b, idx) { var u = (b[idx+1]*(1<<8))+b[idx]; return (u < 0x8000) ? u : ((0xffff - u + 1) * -1); }; +var __readUInt32LE = function(b, idx) { return b[idx+3]*(1<<24)+(b[idx+2]<<16)+(b[idx+1]<<8)+b[idx]; }; +var __readInt32LE = function(b, idx) { return (b[idx+3]<<24)|(b[idx+2]<<16)|(b[idx+1]<<8)|b[idx]; }; +var __readInt32BE = function(b, idx) { return (b[idx]<<24)|(b[idx+1]<<16)|(b[idx+2]<<8)|b[idx+3]; }; + +function ReadShift(size, t) { + var o="", oI, oR, oo=[], w, vv, i, loc; + switch(t) { + case 'dbcs': + loc = this.l; + if(has_buf && Buffer.isBuffer(this)) o = this.slice(this.l, this.l+2*size).toString("utf16le"); + else for(i = 0; i < size; ++i) { o+=String.fromCharCode(__readUInt16LE(this, loc)); loc+=2; } + size *= 2; + break; + + case 'utf8': o = __utf8(this, this.l, this.l + size); break; + case 'utf16le': size *= 2; o = __utf16le(this, this.l, this.l + size); break; + + case 'wstr': + if(typeof $cptable !== 'undefined') o = $cptable.utils.decode(current_codepage, this.slice(this.l, this.l+2*size)); + else return ReadShift.call(this, size, 'dbcs'); + size = 2 * size; break; + + /* [MS-OLEDS] 2.1.4 LengthPrefixedAnsiString */ + case 'lpstr-ansi': o = __lpstr(this, this.l); size = 4 + __readUInt32LE(this, this.l); break; + case 'lpstr-cp': o = __cpstr(this, this.l); size = 4 + __readUInt32LE(this, this.l); break; + /* [MS-OLEDS] 2.1.5 LengthPrefixedUnicodeString */ + case 'lpwstr': o = __lpwstr(this, this.l); size = 4 + 2 * __readUInt32LE(this, this.l); break; + /* [MS-OFFCRYPTO] 2.1.2 Length-Prefixed Padded Unicode String (UNICODE-LP-P4) */ + case 'lpp4': size = 4 + __readUInt32LE(this, this.l); o = __lpp4(this, this.l); if(size & 0x02) size += 2; break; + /* [MS-OFFCRYPTO] 2.1.3 Length-Prefixed UTF-8 String (UTF-8-LP-P4) */ + case '8lpp4': size = 4 + __readUInt32LE(this, this.l); o = __8lpp4(this, this.l); if(size & 0x03) size += 4 - (size & 0x03); break; + + case 'cstr': size = 0; o = ""; + while((w=__readUInt8(this, this.l + size++))!==0) oo.push(_getchar(w)); + o = oo.join(""); break; + case '_wstr': size = 0; o = ""; + while((w=__readUInt16LE(this,this.l +size))!==0){oo.push(_getchar(w));size+=2;} + size+=2; o = oo.join(""); break; + + /* sbcs and dbcs support continue records in the SST way TODO codepages */ + case 'dbcs-cont': o = ""; loc = this.l; + for(i = 0; i < size; ++i) { + if(this.lens && this.lens.indexOf(loc) !== -1) { + w = __readUInt8(this, loc); + this.l = loc + 1; + vv = ReadShift.call(this, size-i, w ? 'dbcs-cont' : 'sbcs-cont'); + return oo.join("") + vv; + } + oo.push(_getchar(__readUInt16LE(this, loc))); + loc+=2; + } o = oo.join(""); size *= 2; break; + + case 'cpstr': + if(typeof $cptable !== 'undefined') { + o = $cptable.utils.decode(current_codepage, this.slice(this.l, this.l + size)); + break; + } + /* falls through */ + case 'sbcs-cont': o = ""; loc = this.l; + for(i = 0; i != size; ++i) { + if(this.lens && this.lens.indexOf(loc) !== -1) { + w = __readUInt8(this, loc); + this.l = loc + 1; + vv = ReadShift.call(this, size-i, w ? 'dbcs-cont' : 'sbcs-cont'); + return oo.join("") + vv; + } + oo.push(_getchar(__readUInt8(this, loc))); + loc+=1; + } o = oo.join(""); break; + + default: + switch(size) { + case 1: oI = __readUInt8(this, this.l); this.l++; return oI; + case 2: oI = (t === 'i' ? __readInt16LE : __readUInt16LE)(this, this.l); this.l += 2; return oI; + case 4: case -4: + if(t === 'i' || ((this[this.l+3] & 0x80)===0)) { oI = ((size > 0) ? __readInt32LE : __readInt32BE)(this, this.l); this.l += 4; return oI; } + else { oR = __readUInt32LE(this, this.l); this.l += 4; } return oR; + case 8: case -8: + if(t === 'f') { + if(size == 8) oR = __double(this, this.l); + else oR = __double([this[this.l+7],this[this.l+6],this[this.l+5],this[this.l+4],this[this.l+3],this[this.l+2],this[this.l+1],this[this.l+0]], 0); + this.l += 8; return oR; + } else size = 8; + /* falls through */ + case 16: o = __hexlify(this, this.l, size); break; + }} + this.l+=size; return o; +} + +var __writeUInt32LE = function(b, val, idx) { b[idx] = (val & 0xFF); b[idx+1] = ((val >>> 8) & 0xFF); b[idx+2] = ((val >>> 16) & 0xFF); b[idx+3] = ((val >>> 24) & 0xFF); }; +var __writeInt32LE = function(b, val, idx) { b[idx] = (val & 0xFF); b[idx+1] = ((val >> 8) & 0xFF); b[idx+2] = ((val >> 16) & 0xFF); b[idx+3] = ((val >> 24) & 0xFF); }; +var __writeUInt16LE = function(b, val, idx) { b[idx] = (val & 0xFF); b[idx+1] = ((val >>> 8) & 0xFF); }; + +function WriteShift(t, val, f) { + var size = 0, i = 0; + if(f === 'dbcs') { +for(i = 0; i != val.length; ++i) __writeUInt16LE(this, val.charCodeAt(i), this.l + 2 * i); + size = 2 * val.length; + } else if(f === 'sbcs') { + if(typeof $cptable !== 'undefined' && current_ansi == 874) { + /* TODO: use tables directly, don't encode */ +for(i = 0; i != val.length; ++i) { + var cppayload = $cptable.utils.encode(current_ansi, val.charAt(i)); + this[this.l + i] = cppayload[0]; + } + } else { +val = val.replace(/[^\x00-\x7F]/g, "_"); +for(i = 0; i != val.length; ++i) this[this.l + i] = (val.charCodeAt(i) & 0xFF); + } + size = val.length; + } else if(f === 'hex') { + for(; i < t; ++i) { +this[this.l++] = (parseInt(val.slice(2*i, 2*i+2), 16)||0); + } return this; + } else if(f === 'utf16le') { +var end = Math.min(this.l + t, this.length); + for(i = 0; i < Math.min(val.length, t); ++i) { + var cc = val.charCodeAt(i); + this[this.l++] = (cc & 0xff); + this[this.l++] = (cc >> 8); + } + while(this.l < end) this[this.l++] = 0; + return this; + } else switch(t) { + case 1: size = 1; this[this.l] = val&0xFF; break; + case 2: size = 2; this[this.l] = val&0xFF; val >>>= 8; this[this.l+1] = val&0xFF; break; + case 3: size = 3; this[this.l] = val&0xFF; val >>>= 8; this[this.l+1] = val&0xFF; val >>>= 8; this[this.l+2] = val&0xFF; break; + case 4: size = 4; __writeUInt32LE(this, val, this.l); break; + case 8: size = 8; if(f === 'f') { write_double_le(this, val, this.l); break; } + /* falls through */ + case 16: break; + case -4: size = 4; __writeInt32LE(this, val, this.l); break; + } + this.l += size; return this; +} + +function CheckField(hexstr, fld) { + var m = __hexlify(this,this.l,hexstr.length>>1); + if(m !== hexstr) throw new Error(fld + 'Expected ' + hexstr + ' saw ' + m); + this.l += hexstr.length>>1; +} + +function prep_blob(blob, pos) { + blob.l = pos; + blob.read_shift = ReadShift; + blob.chk = CheckField; + blob.write_shift = WriteShift; +} + +function parsenoop(blob, length) { blob.l += length; } + +function new_buf(sz) { + var o = new_raw_buf(sz); + prep_blob(o, 0); + return o; +} + +/* [MS-XLSB] 2.1.4 Record */ +function recordhopper(data, cb, opts) { + if(!data) return; + var tmpbyte, cntbyte, length; + prep_blob(data, data.l || 0); + var L = data.length, RT = 0, tgt = 0; + while(data.l < L) { + RT = data.read_shift(1); + if(RT & 0x80) RT = (RT & 0x7F) + ((data.read_shift(1) & 0x7F)<<7); + var R = XLSBRecordEnum[RT] || XLSBRecordEnum[0xFFFF]; + tmpbyte = data.read_shift(1); + length = tmpbyte & 0x7F; + for(cntbyte = 1; cntbyte <4 && (tmpbyte & 0x80); ++cntbyte) length += ((tmpbyte = data.read_shift(1)) & 0x7F)<<(7*cntbyte); + tgt = data.l + length; + var d = R.f && R.f(data, length, opts); + data.l = tgt; + if(cb(d, R, RT)) return; + } +} + +/* control buffer usage for fixed-length buffers */ +function buf_array() { + var bufs = [], blksz = has_buf ? 256 : 2048; + var newblk = function ba_newblk(sz) { + var o = (new_buf(sz)); + prep_blob(o, 0); + return o; + }; + + var curbuf = newblk(blksz); + + var endbuf = function ba_endbuf() { + if(!curbuf) return; + if(curbuf.length > curbuf.l) { curbuf = curbuf.slice(0, curbuf.l); curbuf.l = curbuf.length; } + if(curbuf.length > 0) bufs.push(curbuf); + curbuf = null; + }; + + var next = function ba_next(sz) { + if(curbuf && (sz < (curbuf.length - curbuf.l))) return curbuf; + endbuf(); + return (curbuf = newblk(Math.max(sz+1, blksz))); + }; + + var end = function ba_end() { + endbuf(); + return bconcat(bufs); + }; + + var push = function ba_push(buf) { endbuf(); curbuf = buf; if(curbuf.l == null) curbuf.l = curbuf.length; next(blksz); }; + + return ({ next:next, push:push, end:end, _bufs:bufs }); +} + +function write_record(ba, type, payload, length) { + var t = +type, l; + if(isNaN(t)) return; // TODO: throw something here? + if(!length) length = XLSBRecordEnum[t].p || (payload||[]).length || 0; + l = 1 + (t >= 0x80 ? 1 : 0) + 1/* + length*/; + if(length >= 0x80) ++l; if(length >= 0x4000) ++l; if(length >= 0x200000) ++l; + var o = ba.next(l); + if(t <= 0x7F) o.write_shift(1, t); + else { + o.write_shift(1, (t & 0x7F) + 0x80); + o.write_shift(1, (t >> 7)); + } + for(var i = 0; i != 4; ++i) { + if(length >= 0x80) { o.write_shift(1, (length & 0x7F)+0x80); length >>= 7; } + else { o.write_shift(1, length); break; } + } + if(length > 0 && is_buf(payload)) ba.push(payload); +} +/* XLS ranges enforced */ +function shift_cell_xls(cell, tgt, opts) { + var out = dup(cell); + if(tgt.s) { + if(out.cRel) out.c += tgt.s.c; + if(out.rRel) out.r += tgt.s.r; + } else { + if(out.cRel) out.c += tgt.c; + if(out.rRel) out.r += tgt.r; + } + if(!opts || opts.biff < 12) { + while(out.c >= 0x100) out.c -= 0x100; + while(out.r >= 0x10000) out.r -= 0x10000; + } + return out; +} + +function shift_range_xls(cell, range, opts) { + var out = dup(cell); + out.s = shift_cell_xls(out.s, range.s, opts); + out.e = shift_cell_xls(out.e, range.s, opts); + return out; +} + +function encode_cell_xls(c, biff) { + if(c.cRel && c.c < 0) { c = dup(c); while(c.c < 0) c.c += (biff > 8) ? 0x4000 : 0x100; } + if(c.rRel && c.r < 0) { c = dup(c); while(c.r < 0) c.r += (biff > 8) ? 0x100000 : ((biff > 5) ? 0x10000 : 0x4000); } + var s = encode_cell(c); + if(!c.cRel && c.cRel != null) s = fix_col(s); + if(!c.rRel && c.rRel != null) s = fix_row(s); + return s; +} + +function encode_range_xls(r, opts) { + if(r.s.r == 0 && !r.s.rRel) { + if(r.e.r == (opts.biff >= 12 ? 0xFFFFF : (opts.biff >= 8 ? 0x10000 : 0x4000)) && !r.e.rRel) { + return (r.s.cRel ? "" : "$") + encode_col(r.s.c) + ":" + (r.e.cRel ? "" : "$") + encode_col(r.e.c); + } + } + if(r.s.c == 0 && !r.s.cRel) { + if(r.e.c == (opts.biff >= 12 ? 0x3FFF : 0xFF) && !r.e.cRel) { + return (r.s.rRel ? "" : "$") + encode_row(r.s.r) + ":" + (r.e.rRel ? "" : "$") + encode_row(r.e.r); + } + } + return encode_cell_xls(r.s, opts.biff) + ":" + encode_cell_xls(r.e, opts.biff); +} +function decode_row(rowstr) { return parseInt(unfix_row(rowstr),10) - 1; } +function encode_row(row) { return "" + (row + 1); } +function fix_row(cstr) { return cstr.replace(/([A-Z]|^)(\d+)$/,"$1$$$2"); } +function unfix_row(cstr) { return cstr.replace(/\$(\d+)$/,"$1"); } + +function decode_col(colstr) { var c = unfix_col(colstr), d = 0, i = 0; for(; i !== c.length; ++i) d = 26*d + c.charCodeAt(i) - 64; return d - 1; } +function encode_col(col) { if(col < 0) throw new Error("invalid column " + col); var s=""; for(++col; col; col=Math.floor((col-1)/26)) s = String.fromCharCode(((col-1)%26) + 65) + s; return s; } +function fix_col(cstr) { return cstr.replace(/^([A-Z])/,"$$$1"); } +function unfix_col(cstr) { return cstr.replace(/^\$([A-Z])/,"$1"); } + +function split_cell(cstr) { return cstr.replace(/(\$?[A-Z]*)(\$?\d*)/,"$1,$2").split(","); } +//function decode_cell(cstr) { var splt = split_cell(cstr); return { c:decode_col(splt[0]), r:decode_row(splt[1]) }; } +function decode_cell(cstr) { + var R = 0, C = 0; + for(var i = 0; i < cstr.length; ++i) { + var cc = cstr.charCodeAt(i); + if(cc >= 48 && cc <= 57) R = 10 * R + (cc - 48); + else if(cc >= 65 && cc <= 90) C = 26 * C + (cc - 64); + } + return { c: C - 1, r:R - 1 }; +} +//function encode_cell(cell) { return encode_col(cell.c) + encode_row(cell.r); } +function encode_cell(cell) { + var col = cell.c + 1; + var s=""; + for(; col; col=((col-1)/26)|0) s = String.fromCharCode(((col-1)%26) + 65) + s; + return s + (cell.r + 1); +} +function decode_range(range) { + var idx = range.indexOf(":"); + if(idx == -1) return { s: decode_cell(range), e: decode_cell(range) }; + return { s: decode_cell(range.slice(0, idx)), e: decode_cell(range.slice(idx + 1)) }; +} +function encode_range(cs,ce) { + if(typeof ce === 'undefined' || typeof ce === 'number') { +return encode_range(cs.s, cs.e); + } +if(typeof cs !== 'string') cs = encode_cell((cs)); + if(typeof ce !== 'string') ce = encode_cell((ce)); +return cs == ce ? cs : cs + ":" + ce; +} + +function safe_decode_range(range) { + var o = {s:{c:0,r:0},e:{c:0,r:0}}; + var idx = 0, i = 0, cc = 0; + var len = range.length; + for(idx = 0; i < len; ++i) { + if((cc=range.charCodeAt(i)-64) < 1 || cc > 26) break; + idx = 26*idx + cc; + } + o.s.c = --idx; + + for(idx = 0; i < len; ++i) { + if((cc=range.charCodeAt(i)-48) < 0 || cc > 9) break; + idx = 10*idx + cc; + } + o.s.r = --idx; + + if(i === len || cc != 10) { o.e.c=o.s.c; o.e.r=o.s.r; return o; } + ++i; + + for(idx = 0; i != len; ++i) { + if((cc=range.charCodeAt(i)-64) < 1 || cc > 26) break; + idx = 26*idx + cc; + } + o.e.c = --idx; + + for(idx = 0; i != len; ++i) { + if((cc=range.charCodeAt(i)-48) < 0 || cc > 9) break; + idx = 10*idx + cc; + } + o.e.r = --idx; + return o; +} + +function safe_format_cell(cell, v) { + var q = (cell.t == 'd' && v instanceof Date); + if(cell.z != null) try { return (cell.w = SSF_format(cell.z, q ? datenum(v) : v)); } catch(e) { } + try { return (cell.w = SSF_format((cell.XF||{}).numFmtId||(q ? 14 : 0), q ? datenum(v) : v)); } catch(e) { return ''+v; } +} + +function format_cell(cell, v, o) { + if(cell == null || cell.t == null || cell.t == 'z') return ""; + if(cell.w !== undefined) return cell.w; + if(cell.t == 'd' && !cell.z && o && o.dateNF) cell.z = o.dateNF; + if(cell.t == "e") return BErr[cell.v] || cell.v; + if(v == undefined) return safe_format_cell(cell, cell.v); + return safe_format_cell(cell, v); +} + +function sheet_to_workbook(sheet, opts) { + var n = opts && opts.sheet ? opts.sheet : "Sheet1"; + var sheets = {}; sheets[n] = sheet; + return { SheetNames: [n], Sheets: sheets }; +} + +function sheet_add_aoa(_ws, data, opts) { + var o = opts || {}; + var dense = _ws ? Array.isArray(_ws) : o.dense; + if(DENSE != null && dense == null) dense = DENSE; + var ws = _ws || (dense ? ([]) : ({})); + var _R = 0, _C = 0; + if(ws && o.origin != null) { + if(typeof o.origin == 'number') _R = o.origin; + else { + var _origin = typeof o.origin == "string" ? decode_cell(o.origin) : o.origin; + _R = _origin.r; _C = _origin.c; + } + if(!ws["!ref"]) ws["!ref"] = "A1:A1"; + } + var range = ({s: {c:10000000, r:10000000}, e: {c:0, r:0}}); + if(ws['!ref']) { + var _range = safe_decode_range(ws['!ref']); + range.s.c = _range.s.c; + range.s.r = _range.s.r; + range.e.c = Math.max(range.e.c, _range.e.c); + range.e.r = Math.max(range.e.r, _range.e.r); + if(_R == -1) range.e.r = _R = _range.e.r + 1; + } + for(var R = 0; R != data.length; ++R) { + if(!data[R]) continue; + if(!Array.isArray(data[R])) throw new Error("aoa_to_sheet expects an array of arrays"); + for(var C = 0; C != data[R].length; ++C) { + if(typeof data[R][C] === 'undefined') continue; + var cell = ({v: data[R][C] }); + var __R = _R + R, __C = _C + C; + if(range.s.r > __R) range.s.r = __R; + if(range.s.c > __C) range.s.c = __C; + if(range.e.r < __R) range.e.r = __R; + if(range.e.c < __C) range.e.c = __C; + if(data[R][C] && typeof data[R][C] === 'object' && !Array.isArray(data[R][C]) && !(data[R][C] instanceof Date)) cell = data[R][C]; + else { + if(Array.isArray(cell.v)) { cell.f = data[R][C][1]; cell.v = cell.v[0]; } + if(cell.v === null) { + if(cell.f) cell.t = 'n'; + else if(o.nullError) { cell.t = 'e'; cell.v = 0; } + else if(!o.sheetStubs) continue; + else cell.t = 'z'; + } + else if(typeof cell.v === 'number') cell.t = 'n'; + else if(typeof cell.v === 'boolean') cell.t = 'b'; + else if(cell.v instanceof Date) { + cell.z = o.dateNF || table_fmt[14]; + if(o.cellDates) { cell.t = 'd'; cell.w = SSF_format(cell.z, datenum(cell.v)); } + else { cell.t = 'n'; cell.v = datenum(cell.v); cell.w = SSF_format(cell.z, cell.v); } + } + else cell.t = 's'; + } + if(dense) { + if(!ws[__R]) ws[__R] = []; + if(ws[__R][__C] && ws[__R][__C].z) cell.z = ws[__R][__C].z; + ws[__R][__C] = cell; + } else { + var cell_ref = encode_cell(({c:__C,r:__R})); + if(ws[cell_ref] && ws[cell_ref].z) cell.z = ws[cell_ref].z; + ws[cell_ref] = cell; + } + } + } + if(range.s.c < 10000000) ws['!ref'] = encode_range(range); + return ws; +} +function aoa_to_sheet(data, opts) { return sheet_add_aoa(null, data, opts); } + +function parse_Int32LE(data) { + return data.read_shift(4, 'i'); +} +function write_UInt32LE(x, o) { + if (!o) o = new_buf(4); + o.write_shift(4, x); + return o; +} + +/* [MS-XLSB] 2.5.168 */ +function parse_XLWideString(data) { + var cchCharacters = data.read_shift(4); + return cchCharacters === 0 ? "" : data.read_shift(cchCharacters, 'dbcs'); +} +function write_XLWideString(data, o) { + var _null = false; if (o == null) { _null = true; o = new_buf(4 + 2 * data.length); } + o.write_shift(4, data.length); + if (data.length > 0) o.write_shift(0, data, 'dbcs'); + return _null ? o.slice(0, o.l) : o; +} + +/* [MS-XLSB] 2.5.91 */ +//function parse_LPWideString(data) { +// var cchCharacters = data.read_shift(2); +// return cchCharacters === 0 ? "" : data.read_shift(cchCharacters, "utf16le"); +//} + +/* [MS-XLSB] 2.5.143 */ +function parse_StrRun(data) { + return { ich: data.read_shift(2), ifnt: data.read_shift(2) }; +} +function write_StrRun(run, o) { + if (!o) o = new_buf(4); + o.write_shift(2, run.ich || 0); + o.write_shift(2, run.ifnt || 0); + return o; +} + +/* [MS-XLSB] 2.5.121 */ +function parse_RichStr(data, length) { + var start = data.l; + var flags = data.read_shift(1); + var str = parse_XLWideString(data); + var rgsStrRun = []; + var z = ({ t: str, h: str }); + if ((flags & 1) !== 0) { /* fRichStr */ + /* TODO: formatted string */ + var dwSizeStrRun = data.read_shift(4); + for (var i = 0; i != dwSizeStrRun; ++i) rgsStrRun.push(parse_StrRun(data)); + z.r = rgsStrRun; + } + else z.r = [{ ich: 0, ifnt: 0 }]; + //if((flags & 2) !== 0) { /* fExtStr */ + // /* TODO: phonetic string */ + //} + data.l = start + length; + return z; +} +function write_RichStr(str, o) { + /* TODO: formatted string */ + var _null = false; if (o == null) { _null = true; o = new_buf(15 + 4 * str.t.length); } + o.write_shift(1, 0); + write_XLWideString(str.t, o); + return _null ? o.slice(0, o.l) : o; +} +/* [MS-XLSB] 2.4.328 BrtCommentText (RichStr w/1 run) */ +var parse_BrtCommentText = parse_RichStr; +function write_BrtCommentText(str, o) { + /* TODO: formatted string */ + var _null = false; if (o == null) { _null = true; o = new_buf(23 + 4 * str.t.length); } + o.write_shift(1, 1); + write_XLWideString(str.t, o); + o.write_shift(4, 1); + write_StrRun({ ich: 0, ifnt: 0 }, o); + return _null ? o.slice(0, o.l) : o; +} + +/* [MS-XLSB] 2.5.9 */ +function parse_XLSBCell(data) { + var col = data.read_shift(4); + var iStyleRef = data.read_shift(2); + iStyleRef += data.read_shift(1) << 16; + data.l++; //var fPhShow = data.read_shift(1); + return { c: col, iStyleRef: iStyleRef }; +} +function write_XLSBCell(cell, o) { + if (o == null) o = new_buf(8); + o.write_shift(-4, cell.c); + o.write_shift(3, cell.iStyleRef || cell.s); + o.write_shift(1, 0); /* fPhShow */ + return o; +} + +/* Short XLSB Cell does not include column */ +function parse_XLSBShortCell(data) { + var iStyleRef = data.read_shift(2); + iStyleRef += data.read_shift(1) <<16; + data.l++; //var fPhShow = data.read_shift(1); + return { c:-1, iStyleRef: iStyleRef }; +} +function write_XLSBShortCell(cell, o) { + if(o == null) o = new_buf(4); + o.write_shift(3, cell.iStyleRef || cell.s); + o.write_shift(1, 0); /* fPhShow */ + return o; +} + +/* [MS-XLSB] 2.5.21 */ +var parse_XLSBCodeName = parse_XLWideString; +var write_XLSBCodeName = write_XLWideString; + +/* [MS-XLSB] 2.5.166 */ +function parse_XLNullableWideString(data) { + var cchCharacters = data.read_shift(4); + return cchCharacters === 0 || cchCharacters === 0xFFFFFFFF ? "" : data.read_shift(cchCharacters, 'dbcs'); +} +function write_XLNullableWideString(data, o) { + var _null = false; if (o == null) { _null = true; o = new_buf(127); } + o.write_shift(4, data.length > 0 ? data.length : 0xFFFFFFFF); + if (data.length > 0) o.write_shift(0, data, 'dbcs'); + return _null ? o.slice(0, o.l) : o; +} + +/* [MS-XLSB] 2.5.165 */ +var parse_XLNameWideString = parse_XLWideString; +//var write_XLNameWideString = write_XLWideString; + +/* [MS-XLSB] 2.5.114 */ +var parse_RelID = parse_XLNullableWideString; +var write_RelID = write_XLNullableWideString; + + +/* [MS-XLS] 2.5.217 ; [MS-XLSB] 2.5.122 */ +function parse_RkNumber(data) { + var b = data.slice(data.l, data.l + 4); + var fX100 = (b[0] & 1), fInt = (b[0] & 2); + data.l += 4; + var RK = fInt === 0 ? __double([0, 0, 0, 0, (b[0] & 0xFC), b[1], b[2], b[3]], 0) : __readInt32LE(b, 0) >> 2; + return fX100 ? (RK / 100) : RK; +} +function write_RkNumber(data, o) { + if (o == null) o = new_buf(4); + var fX100 = 0, fInt = 0, d100 = data * 100; + if ((data == (data | 0)) && (data >= -(1 << 29)) && (data < (1 << 29))) { fInt = 1; } + else if ((d100 == (d100 | 0)) && (d100 >= -(1 << 29)) && (d100 < (1 << 29))) { fInt = 1; fX100 = 1; } + if (fInt) o.write_shift(-4, ((fX100 ? d100 : data) << 2) + (fX100 + 2)); + else throw new Error("unsupported RkNumber " + data); // TODO +} + + +/* [MS-XLSB] 2.5.117 RfX */ +function parse_RfX(data ) { + var cell = ({ s: {}, e: {} }); + cell.s.r = data.read_shift(4); + cell.e.r = data.read_shift(4); + cell.s.c = data.read_shift(4); + cell.e.c = data.read_shift(4); + return cell; +} +function write_RfX(r, o) { + if (!o) o = new_buf(16); + o.write_shift(4, r.s.r); + o.write_shift(4, r.e.r); + o.write_shift(4, r.s.c); + o.write_shift(4, r.e.c); + return o; +} + +/* [MS-XLSB] 2.5.153 UncheckedRfX */ +var parse_UncheckedRfX = parse_RfX; +var write_UncheckedRfX = write_RfX; + +/* [MS-XLSB] 2.5.155 UncheckedSqRfX */ +//function parse_UncheckedSqRfX(data) { +// var cnt = data.read_shift(4); +// var out = []; +// for(var i = 0; i < cnt; ++i) { +// var rng = parse_UncheckedRfX(data); +// out.push(encode_range(rng)); +// } +// return out.join(","); +//} +//function write_UncheckedSqRfX(sqrfx) { +// var parts = sqrfx.split(/\s*,\s*/); +// var o = new_buf(4); o.write_shift(4, parts.length); +// var out = [o]; +// parts.forEach(function(rng) { +// out.push(write_UncheckedRfX(safe_decode_range(rng))); +// }); +// return bconcat(out); +//} + +/* [MS-XLS] 2.5.342 ; [MS-XLSB] 2.5.171 */ +/* TODO: error checking, NaN and Infinity values are not valid Xnum */ +function parse_Xnum(data) { + if(data.length - data.l < 8) throw "XLS Xnum Buffer underflow"; + return data.read_shift(8, 'f'); +} +function write_Xnum(data, o) { return (o || new_buf(8)).write_shift(8, data, 'f'); } + +/* [MS-XLSB] 2.4.324 BrtColor */ +function parse_BrtColor(data) { + var out = {}; + var d = data.read_shift(1); + + //var fValidRGB = d & 1; + var xColorType = d >>> 1; + + var index = data.read_shift(1); + var nTS = data.read_shift(2, 'i'); + var bR = data.read_shift(1); + var bG = data.read_shift(1); + var bB = data.read_shift(1); + data.l++; //var bAlpha = data.read_shift(1); + + switch (xColorType) { + case 0: out.auto = 1; break; + case 1: + out.index = index; + var icv = XLSIcv[index]; + /* automatic pseudo index 81 */ + if (icv) out.rgb = rgb2Hex(icv); + break; + case 2: + /* if(!fValidRGB) throw new Error("invalid"); */ + out.rgb = rgb2Hex([bR, bG, bB]); + break; + case 3: out.theme = index; break; + } + if (nTS != 0) out.tint = nTS > 0 ? nTS / 32767 : nTS / 32768; + + return out; +} +function write_BrtColor(color, o) { + if (!o) o = new_buf(8); + if (!color || color.auto) { o.write_shift(4, 0); o.write_shift(4, 0); return o; } + if (color.index != null) { + o.write_shift(1, 0x02); + o.write_shift(1, color.index); + } else if (color.theme != null) { + o.write_shift(1, 0x06); + o.write_shift(1, color.theme); + } else { + o.write_shift(1, 0x05); + o.write_shift(1, 0); + } + var nTS = color.tint || 0; + if (nTS > 0) nTS *= 32767; + else if (nTS < 0) nTS *= 32768; + o.write_shift(2, nTS); + if (!color.rgb || color.theme != null) { + o.write_shift(2, 0); + o.write_shift(1, 0); + o.write_shift(1, 0); + } else { + var rgb = (color.rgb || 'FFFFFF'); + if (typeof rgb == 'number') rgb = ("000000" + rgb.toString(16)).slice(-6); + o.write_shift(1, parseInt(rgb.slice(0, 2), 16)); + o.write_shift(1, parseInt(rgb.slice(2, 4), 16)); + o.write_shift(1, parseInt(rgb.slice(4, 6), 16)); + o.write_shift(1, 0xFF); + } + return o; +} + +/* [MS-XLSB] 2.5.52 */ +function parse_FontFlags(data) { + var d = data.read_shift(1); + data.l++; + var out = { + fBold: d & 0x01, + fItalic: d & 0x02, + fUnderline: d & 0x04, + fStrikeout: d & 0x08, + fOutline: d & 0x10, + fShadow: d & 0x20, + fCondense: d & 0x40, + fExtend: d & 0x80 + }; + return out; +} +function write_FontFlags(font, o) { + if (!o) o = new_buf(2); + var grbit = + (font.italic ? 0x02 : 0) | + (font.strike ? 0x08 : 0) | + (font.outline ? 0x10 : 0) | + (font.shadow ? 0x20 : 0) | + (font.condense ? 0x40 : 0) | + (font.extend ? 0x80 : 0); + o.write_shift(1, grbit); + o.write_shift(1, 0); + return o; +} + +/* [MS-OLEDS] 2.3.1 and 2.3.2 */ +function parse_ClipboardFormatOrString(o, w) { + // $FlowIgnore + var ClipFmt = { 2: "BITMAP", 3: "METAFILEPICT", 8: "DIB", 14: "ENHMETAFILE" }; + var m = o.read_shift(4); + switch (m) { + case 0x00000000: return ""; + case 0xffffffff: case 0xfffffffe: return ClipFmt[o.read_shift(4)] || ""; + } + if (m > 0x190) throw new Error("Unsupported Clipboard: " + m.toString(16)); + o.l -= 4; + return o.read_shift(0, w == 1 ? "lpstr" : "lpwstr"); +} +function parse_ClipboardFormatOrAnsiString(o) { return parse_ClipboardFormatOrString(o, 1); } +function parse_ClipboardFormatOrUnicodeString(o) { return parse_ClipboardFormatOrString(o, 2); } + +/* [MS-OLEPS] 2.2 PropertyType */ +// Note: some tree shakers cannot handle VT_VECTOR | $CONST, hence extra vars +//var VT_EMPTY = 0x0000; +//var VT_NULL = 0x0001; +var VT_I2 = 0x0002; +var VT_I4 = 0x0003; +//var VT_R4 = 0x0004; +//var VT_R8 = 0x0005; +//var VT_CY = 0x0006; +//var VT_DATE = 0x0007; +//var VT_BSTR = 0x0008; +//var VT_ERROR = 0x000A; +var VT_BOOL = 0x000B; +var VT_VARIANT = 0x000C; +//var VT_DECIMAL = 0x000E; +//var VT_I1 = 0x0010; +//var VT_UI1 = 0x0011; +//var VT_UI2 = 0x0012; +var VT_UI4 = 0x0013; +//var VT_I8 = 0x0014; +//var VT_UI8 = 0x0015; +//var VT_INT = 0x0016; +//var VT_UINT = 0x0017; +var VT_LPSTR = 0x001E; +//var VT_LPWSTR = 0x001F; +var VT_FILETIME = 0x0040; +var VT_BLOB = 0x0041; +//var VT_STREAM = 0x0042; +//var VT_STORAGE = 0x0043; +//var VT_STREAMED_Object = 0x0044; +//var VT_STORED_Object = 0x0045; +//var VT_BLOB_Object = 0x0046; +var VT_CF = 0x0047; +//var VT_CLSID = 0x0048; +//var VT_VERSIONED_STREAM = 0x0049; +var VT_VECTOR = 0x1000; +var VT_VECTOR_VARIANT = 0x100C; +var VT_VECTOR_LPSTR = 0x101E; +//var VT_ARRAY = 0x2000; + +var VT_STRING = 0x0050; // 2.3.3.1.11 VtString +var VT_USTR = 0x0051; // 2.3.3.1.12 VtUnalignedString +var VT_CUSTOM = [VT_STRING, VT_USTR]; + +/* [MS-OSHARED] 2.3.3.2.2.1 Document Summary Information PIDDSI */ +var DocSummaryPIDDSI = { +0x01: { n: 'CodePage', t: VT_I2 }, +0x02: { n: 'Category', t: VT_STRING }, +0x03: { n: 'PresentationFormat', t: VT_STRING }, +0x04: { n: 'ByteCount', t: VT_I4 }, +0x05: { n: 'LineCount', t: VT_I4 }, +0x06: { n: 'ParagraphCount', t: VT_I4 }, +0x07: { n: 'SlideCount', t: VT_I4 }, +0x08: { n: 'NoteCount', t: VT_I4 }, +0x09: { n: 'HiddenCount', t: VT_I4 }, +0x0a: { n: 'MultimediaClipCount', t: VT_I4 }, +0x0b: { n: 'ScaleCrop', t: VT_BOOL }, +0x0c: { n: 'HeadingPairs', t: VT_VECTOR_VARIANT /* VT_VECTOR | VT_VARIANT */ }, +0x0d: { n: 'TitlesOfParts', t: VT_VECTOR_LPSTR /* VT_VECTOR | VT_LPSTR */ }, +0x0e: { n: 'Manager', t: VT_STRING }, +0x0f: { n: 'Company', t: VT_STRING }, +0x10: { n: 'LinksUpToDate', t: VT_BOOL }, +0x11: { n: 'CharacterCount', t: VT_I4 }, +0x13: { n: 'SharedDoc', t: VT_BOOL }, +0x16: { n: 'HyperlinksChanged', t: VT_BOOL }, +0x17: { n: 'AppVersion', t: VT_I4, p: 'version' }, +0x18: { n: 'DigSig', t: VT_BLOB }, +0x1A: { n: 'ContentType', t: VT_STRING }, +0x1B: { n: 'ContentStatus', t: VT_STRING }, +0x1C: { n: 'Language', t: VT_STRING }, +0x1D: { n: 'Version', t: VT_STRING }, +0xFF: {}, + /* [MS-OLEPS] 2.18 */ +0x80000000: { n: 'Locale', t: VT_UI4 }, +0x80000003: { n: 'Behavior', t: VT_UI4 }, +0x72627262: {} +}; + +/* [MS-OSHARED] 2.3.3.2.1.1 Summary Information Property Set PIDSI */ +var SummaryPIDSI = { +0x01: { n: 'CodePage', t: VT_I2 }, +0x02: { n: 'Title', t: VT_STRING }, +0x03: { n: 'Subject', t: VT_STRING }, +0x04: { n: 'Author', t: VT_STRING }, +0x05: { n: 'Keywords', t: VT_STRING }, +0x06: { n: 'Comments', t: VT_STRING }, +0x07: { n: 'Template', t: VT_STRING }, +0x08: { n: 'LastAuthor', t: VT_STRING }, +0x09: { n: 'RevNumber', t: VT_STRING }, +0x0A: { n: 'EditTime', t: VT_FILETIME }, +0x0B: { n: 'LastPrinted', t: VT_FILETIME }, +0x0C: { n: 'CreatedDate', t: VT_FILETIME }, +0x0D: { n: 'ModifiedDate', t: VT_FILETIME }, +0x0E: { n: 'PageCount', t: VT_I4 }, +0x0F: { n: 'WordCount', t: VT_I4 }, +0x10: { n: 'CharCount', t: VT_I4 }, +0x11: { n: 'Thumbnail', t: VT_CF }, +0x12: { n: 'Application', t: VT_STRING }, +0x13: { n: 'DocSecurity', t: VT_I4 }, +0xFF: {}, + /* [MS-OLEPS] 2.18 */ +0x80000000: { n: 'Locale', t: VT_UI4 }, +0x80000003: { n: 'Behavior', t: VT_UI4 }, +0x72627262: {} +}; + +/* [MS-XLS] 2.4.63 Country/Region codes */ +var CountryEnum = { +0x0001: "US", // United States +0x0002: "CA", // Canada +0x0003: "", // Latin America (except Brazil) +0x0007: "RU", // Russia +0x0014: "EG", // Egypt +0x001E: "GR", // Greece +0x001F: "NL", // Netherlands +0x0020: "BE", // Belgium +0x0021: "FR", // France +0x0022: "ES", // Spain +0x0024: "HU", // Hungary +0x0027: "IT", // Italy +0x0029: "CH", // Switzerland +0x002B: "AT", // Austria +0x002C: "GB", // United Kingdom +0x002D: "DK", // Denmark +0x002E: "SE", // Sweden +0x002F: "NO", // Norway +0x0030: "PL", // Poland +0x0031: "DE", // Germany +0x0034: "MX", // Mexico +0x0037: "BR", // Brazil +0x003d: "AU", // Australia +0x0040: "NZ", // New Zealand +0x0042: "TH", // Thailand +0x0051: "JP", // Japan +0x0052: "KR", // Korea +0x0054: "VN", // Viet Nam +0x0056: "CN", // China +0x005A: "TR", // Turkey +0x0069: "JS", // Ramastan +0x00D5: "DZ", // Algeria +0x00D8: "MA", // Morocco +0x00DA: "LY", // Libya +0x015F: "PT", // Portugal +0x0162: "IS", // Iceland +0x0166: "FI", // Finland +0x01A4: "CZ", // Czech Republic +0x0376: "TW", // Taiwan +0x03C1: "LB", // Lebanon +0x03C2: "JO", // Jordan +0x03C3: "SY", // Syria +0x03C4: "IQ", // Iraq +0x03C5: "KW", // Kuwait +0x03C6: "SA", // Saudi Arabia +0x03CB: "AE", // United Arab Emirates +0x03CC: "IL", // Israel +0x03CE: "QA", // Qatar +0x03D5: "IR", // Iran +0xFFFF: "US" // United States +}; + +/* [MS-XLS] 2.5.127 */ +var XLSFillPattern = [ + null, + 'solid', + 'mediumGray', + 'darkGray', + 'lightGray', + 'darkHorizontal', + 'darkVertical', + 'darkDown', + 'darkUp', + 'darkGrid', + 'darkTrellis', + 'lightHorizontal', + 'lightVertical', + 'lightDown', + 'lightUp', + 'lightGrid', + 'lightTrellis', + 'gray125', + 'gray0625' +]; + +function rgbify(arr) { return arr.map(function(x) { return [(x>>16)&255,(x>>8)&255,x&255]; }); } + +/* [MS-XLS] 2.5.161 */ +/* [MS-XLSB] 2.5.75 Icv */ +var _XLSIcv = rgbify([ + /* Color Constants */ + 0x000000, + 0xFFFFFF, + 0xFF0000, + 0x00FF00, + 0x0000FF, + 0xFFFF00, + 0xFF00FF, + 0x00FFFF, + + /* Overridable Defaults */ + 0x000000, + 0xFFFFFF, + 0xFF0000, + 0x00FF00, + 0x0000FF, + 0xFFFF00, + 0xFF00FF, + 0x00FFFF, + + 0x800000, + 0x008000, + 0x000080, + 0x808000, + 0x800080, + 0x008080, + 0xC0C0C0, + 0x808080, + 0x9999FF, + 0x993366, + 0xFFFFCC, + 0xCCFFFF, + 0x660066, + 0xFF8080, + 0x0066CC, + 0xCCCCFF, + + 0x000080, + 0xFF00FF, + 0xFFFF00, + 0x00FFFF, + 0x800080, + 0x800000, + 0x008080, + 0x0000FF, + 0x00CCFF, + 0xCCFFFF, + 0xCCFFCC, + 0xFFFF99, + 0x99CCFF, + 0xFF99CC, + 0xCC99FF, + 0xFFCC99, + + 0x3366FF, + 0x33CCCC, + 0x99CC00, + 0xFFCC00, + 0xFF9900, + 0xFF6600, + 0x666699, + 0x969696, + 0x003366, + 0x339966, + 0x003300, + 0x333300, + 0x993300, + 0x993366, + 0x333399, + 0x333333, + + /* Other entries to appease BIFF8/12 */ + 0xFFFFFF, /* 0x40 icvForeground ?? */ + 0x000000, /* 0x41 icvBackground ?? */ + 0x000000, /* 0x42 icvFrame ?? */ + 0x000000, /* 0x43 icv3D ?? */ + 0x000000, /* 0x44 icv3DText ?? */ + 0x000000, /* 0x45 icv3DHilite ?? */ + 0x000000, /* 0x46 icv3DShadow ?? */ + 0x000000, /* 0x47 icvHilite ?? */ + 0x000000, /* 0x48 icvCtlText ?? */ + 0x000000, /* 0x49 icvCtlScrl ?? */ + 0x000000, /* 0x4A icvCtlInv ?? */ + 0x000000, /* 0x4B icvCtlBody ?? */ + 0x000000, /* 0x4C icvCtlFrame ?? */ + 0x000000, /* 0x4D icvCtlFore ?? */ + 0x000000, /* 0x4E icvCtlBack ?? */ + 0x000000, /* 0x4F icvCtlNeutral */ + 0x000000, /* 0x50 icvInfoBk ?? */ + 0x000000 /* 0x51 icvInfoText ?? */ +]); +var XLSIcv = dup(_XLSIcv); + +/* [MS-XLSB] 2.5.97.2 */ +var BErr = { +0x00: "#NULL!", +0x07: "#DIV/0!", +0x0F: "#VALUE!", +0x17: "#REF!", +0x1D: "#NAME?", +0x24: "#NUM!", +0x2A: "#N/A", +0x2B: "#GETTING_DATA", +0xFF: "#WTF?" +}; +//var RBErr = evert_num(BErr); +var RBErr = { + "#NULL!": 0x00, + "#DIV/0!": 0x07, + "#VALUE!": 0x0F, + "#REF!": 0x17, + "#NAME?": 0x1D, + "#NUM!": 0x24, + "#N/A": 0x2A, + "#GETTING_DATA": 0x2B, + "#WTF?": 0xFF +}; + +/* Parts enumerated in OPC spec, MS-XLSB and MS-XLSX */ +/* 12.3 Part Summary */ +/* 14.2 Part Summary */ +/* [MS-XLSX] 2.1 Part Enumerations ; [MS-XLSB] 2.1.7 Part Enumeration */ +var ct2type/*{[string]:string}*/ = ({ + /* Workbook */ + "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml": "workbooks", + "application/vnd.ms-excel.sheet.macroEnabled.main+xml": "workbooks", + "application/vnd.ms-excel.sheet.binary.macroEnabled.main": "workbooks", + "application/vnd.ms-excel.addin.macroEnabled.main+xml": "workbooks", + "application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml": "workbooks", + + /* Worksheet */ + "application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml": "sheets", + "application/vnd.ms-excel.worksheet": "sheets", + "application/vnd.ms-excel.binIndexWs": "TODO", /* Binary Index */ + + /* Chartsheet */ + "application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml": "charts", + "application/vnd.ms-excel.chartsheet": "charts", + + /* Macrosheet */ + "application/vnd.ms-excel.macrosheet+xml": "macros", + "application/vnd.ms-excel.macrosheet": "macros", + "application/vnd.ms-excel.intlmacrosheet": "TODO", + "application/vnd.ms-excel.binIndexMs": "TODO", /* Binary Index */ + + /* Dialogsheet */ + "application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml": "dialogs", + "application/vnd.ms-excel.dialogsheet": "dialogs", + + /* Shared Strings */ + "application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml": "strs", + "application/vnd.ms-excel.sharedStrings": "strs", + + /* Styles */ + "application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml": "styles", + "application/vnd.ms-excel.styles": "styles", + + /* File Properties */ + "application/vnd.openxmlformats-package.core-properties+xml": "coreprops", + "application/vnd.openxmlformats-officedocument.custom-properties+xml": "custprops", + "application/vnd.openxmlformats-officedocument.extended-properties+xml": "extprops", + + /* Custom Data Properties */ + "application/vnd.openxmlformats-officedocument.customXmlProperties+xml": "TODO", + "application/vnd.openxmlformats-officedocument.spreadsheetml.customProperty": "TODO", + + /* Comments */ + "application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml": "comments", + "application/vnd.ms-excel.comments": "comments", + "application/vnd.ms-excel.threadedcomments+xml": "threadedcomments", + "application/vnd.ms-excel.person+xml": "people", + + /* Metadata (Stock/Geography and Dynamic Array) */ + "application/vnd.openxmlformats-officedocument.spreadsheetml.sheetMetadata+xml": "metadata", + "application/vnd.ms-excel.sheetMetadata": "metadata", + + /* PivotTable */ + "application/vnd.ms-excel.pivotTable": "TODO", + "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotTable+xml": "TODO", + + /* Chart Objects */ + "application/vnd.openxmlformats-officedocument.drawingml.chart+xml": "TODO", + + /* Chart Colors */ + "application/vnd.ms-office.chartcolorstyle+xml": "TODO", + + /* Chart Style */ + "application/vnd.ms-office.chartstyle+xml": "TODO", + + /* Chart Advanced */ + "application/vnd.ms-office.chartex+xml": "TODO", + + /* Calculation Chain */ + "application/vnd.ms-excel.calcChain": "calcchains", + "application/vnd.openxmlformats-officedocument.spreadsheetml.calcChain+xml": "calcchains", + + /* Printer Settings */ + "application/vnd.openxmlformats-officedocument.spreadsheetml.printerSettings": "TODO", + + /* ActiveX */ + "application/vnd.ms-office.activeX": "TODO", + "application/vnd.ms-office.activeX+xml": "TODO", + + /* Custom Toolbars */ + "application/vnd.ms-excel.attachedToolbars": "TODO", + + /* External Data Connections */ + "application/vnd.ms-excel.connections": "TODO", + "application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml": "TODO", + + /* External Links */ + "application/vnd.ms-excel.externalLink": "links", + "application/vnd.openxmlformats-officedocument.spreadsheetml.externalLink+xml": "links", + + /* PivotCache */ + "application/vnd.ms-excel.pivotCacheDefinition": "TODO", + "application/vnd.ms-excel.pivotCacheRecords": "TODO", + "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotCacheDefinition+xml": "TODO", + "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotCacheRecords+xml": "TODO", + + /* Query Table */ + "application/vnd.ms-excel.queryTable": "TODO", + "application/vnd.openxmlformats-officedocument.spreadsheetml.queryTable+xml": "TODO", + + /* Shared Workbook */ + "application/vnd.ms-excel.userNames": "TODO", + "application/vnd.ms-excel.revisionHeaders": "TODO", + "application/vnd.ms-excel.revisionLog": "TODO", + "application/vnd.openxmlformats-officedocument.spreadsheetml.revisionHeaders+xml": "TODO", + "application/vnd.openxmlformats-officedocument.spreadsheetml.revisionLog+xml": "TODO", + "application/vnd.openxmlformats-officedocument.spreadsheetml.userNames+xml": "TODO", + + /* Single Cell Table */ + "application/vnd.ms-excel.tableSingleCells": "TODO", + "application/vnd.openxmlformats-officedocument.spreadsheetml.tableSingleCells+xml": "TODO", + + /* Slicer */ + "application/vnd.ms-excel.slicer": "TODO", + "application/vnd.ms-excel.slicerCache": "TODO", + "application/vnd.ms-excel.slicer+xml": "TODO", + "application/vnd.ms-excel.slicerCache+xml": "TODO", + + /* Sort Map */ + "application/vnd.ms-excel.wsSortMap": "TODO", + + /* Table */ + "application/vnd.ms-excel.table": "TODO", + "application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml": "TODO", + + /* Themes */ + "application/vnd.openxmlformats-officedocument.theme+xml": "themes", + + /* Theme Override */ + "application/vnd.openxmlformats-officedocument.themeOverride+xml": "TODO", + + /* Timeline */ + "application/vnd.ms-excel.Timeline+xml": "TODO", /* verify */ + "application/vnd.ms-excel.TimelineCache+xml": "TODO", /* verify */ + + /* VBA */ + "application/vnd.ms-office.vbaProject": "vba", + "application/vnd.ms-office.vbaProjectSignature": "TODO", + + /* Volatile Dependencies */ + "application/vnd.ms-office.volatileDependencies": "TODO", + "application/vnd.openxmlformats-officedocument.spreadsheetml.volatileDependencies+xml": "TODO", + + /* Control Properties */ + "application/vnd.ms-excel.controlproperties+xml": "TODO", + + /* Data Model */ + "application/vnd.openxmlformats-officedocument.model+data": "TODO", + + /* Survey */ + "application/vnd.ms-excel.Survey+xml": "TODO", + + /* Drawing */ + "application/vnd.openxmlformats-officedocument.drawing+xml": "drawings", + "application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml": "TODO", + "application/vnd.openxmlformats-officedocument.drawingml.diagramColors+xml": "TODO", + "application/vnd.openxmlformats-officedocument.drawingml.diagramData+xml": "TODO", + "application/vnd.openxmlformats-officedocument.drawingml.diagramLayout+xml": "TODO", + "application/vnd.openxmlformats-officedocument.drawingml.diagramStyle+xml": "TODO", + + /* VML */ + "application/vnd.openxmlformats-officedocument.vmlDrawing": "TODO", + + "application/vnd.openxmlformats-package.relationships+xml": "rels", + "application/vnd.openxmlformats-officedocument.oleObject": "TODO", + + /* Image */ + "image/png": "TODO", + + "sheet": "js" +}); + +var CT_LIST = { + workbooks: { + xlsx: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml", + xlsm: "application/vnd.ms-excel.sheet.macroEnabled.main+xml", + xlsb: "application/vnd.ms-excel.sheet.binary.macroEnabled.main", + xlam: "application/vnd.ms-excel.addin.macroEnabled.main+xml", + xltx: "application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml" + }, + strs: { /* Shared Strings */ + xlsx: "application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml", + xlsb: "application/vnd.ms-excel.sharedStrings" + }, + comments: { /* Comments */ + xlsx: "application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml", + xlsb: "application/vnd.ms-excel.comments" + }, + sheets: { /* Worksheet */ + xlsx: "application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml", + xlsb: "application/vnd.ms-excel.worksheet" + }, + charts: { /* Chartsheet */ + xlsx: "application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml", + xlsb: "application/vnd.ms-excel.chartsheet" + }, + dialogs: { /* Dialogsheet */ + xlsx: "application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml", + xlsb: "application/vnd.ms-excel.dialogsheet" + }, + macros: { /* Macrosheet (Excel 4.0 Macros) */ + xlsx: "application/vnd.ms-excel.macrosheet+xml", + xlsb: "application/vnd.ms-excel.macrosheet" + }, + metadata: { /* Metadata (Stock/Geography and Dynamic Array) */ + xlsx: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheetMetadata+xml", + xlsb: "application/vnd.ms-excel.sheetMetadata" + }, + styles: { /* Styles */ + xlsx: "application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml", + xlsb: "application/vnd.ms-excel.styles" + } +}; + +function new_ct() { + return ({ + workbooks:[], sheets:[], charts:[], dialogs:[], macros:[], + rels:[], strs:[], comments:[], threadedcomments:[], links:[], + coreprops:[], extprops:[], custprops:[], themes:[], styles:[], + calcchains:[], vba: [], drawings: [], metadata: [], people:[], + TODO:[], xmlns: "" }); +} + +function parse_ct(data) { + var ct = new_ct(); + if(!data || !data.match) return ct; + var ctext = {}; + (data.match(tagregex)||[]).forEach(function(x) { + var y = parsexmltag(x); + switch(y[0].replace(nsregex,"<")) { + case ' 0 ? ct.calcchains[0] : ""; + ct.sst = ct.strs.length > 0 ? ct.strs[0] : ""; + ct.style = ct.styles.length > 0 ? ct.styles[0] : ""; + ct.defaults = ctext; + delete ct.calcchains; + return ct; +} + +function write_ct(ct, opts) { + var type2ct/*{[string]:Array}*/ = evert_arr(ct2type); + + var o = [], v; + o[o.length] = (XML_HEADER); + o[o.length] = writextag('Types', null, { + 'xmlns': XMLNS.CT, + 'xmlns:xsd': XMLNS.xsd, + 'xmlns:xsi': XMLNS.xsi + }); + + o = o.concat([ + ['xml', 'application/xml'], + ['bin', 'application/vnd.ms-excel.sheet.binary.macroEnabled.main'], + ['vml', 'application/vnd.openxmlformats-officedocument.vmlDrawing'], + ['data', 'application/vnd.openxmlformats-officedocument.model+data'], + /* from test files */ + ['bmp', 'image/bmp'], + ['png', 'image/png'], + ['gif', 'image/gif'], + ['emf', 'image/x-emf'], + ['wmf', 'image/x-wmf'], + ['jpg', 'image/jpeg'], ['jpeg', 'image/jpeg'], + ['tif', 'image/tiff'], ['tiff', 'image/tiff'], + ['pdf', 'application/pdf'], + ['rels', 'application/vnd.openxmlformats-package.relationships+xml'] + ].map(function(x) { + return writextag('Default', null, {'Extension':x[0], 'ContentType': x[1]}); + })); + + /* only write first instance */ + var f1 = function(w) { + if(ct[w] && ct[w].length > 0) { + v = ct[w][0]; + o[o.length] = (writextag('Override', null, { + 'PartName': (v[0] == '/' ? "":"/") + v, + 'ContentType': CT_LIST[w][opts.bookType] || CT_LIST[w]['xlsx'] + })); + } + }; + + /* book type-specific */ + var f2 = function(w) { + (ct[w]||[]).forEach(function(v) { + o[o.length] = (writextag('Override', null, { + 'PartName': (v[0] == '/' ? "":"/") + v, + 'ContentType': CT_LIST[w][opts.bookType] || CT_LIST[w]['xlsx'] + })); + }); + }; + + /* standard type */ + var f3 = function(t) { + (ct[t]||[]).forEach(function(v) { + o[o.length] = (writextag('Override', null, { + 'PartName': (v[0] == '/' ? "":"/") + v, + 'ContentType': type2ct[t][0] + })); + }); + }; + + f1('workbooks'); + f2('sheets'); + f2('charts'); + f3('themes'); + ['strs', 'styles'].forEach(f1); + ['coreprops', 'extprops', 'custprops'].forEach(f3); + f3('vba'); + f3('comments'); + f3('threadedcomments'); + f3('drawings'); + f2('metadata'); + f3('people'); + if(o.length>2){ o[o.length] = (''); o[1]=o[1].replace("/>",">"); } + return o.join(""); +} +/* 9.3 Relationships */ +var RELS = ({ + WB: "http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument", + SHEET: "http://sheetjs.openxmlformats.org/officeDocument/2006/relationships/officeDocument", + HLINK: "http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink", + VML: "http://schemas.openxmlformats.org/officeDocument/2006/relationships/vmlDrawing", + XPATH: "http://schemas.openxmlformats.org/officeDocument/2006/relationships/externalLinkPath", + XMISS: "http://schemas.microsoft.com/office/2006/relationships/xlExternalLinkPath/xlPathMissing", + XLINK: "http://schemas.openxmlformats.org/officeDocument/2006/relationships/externalLink", + CXML: "http://schemas.openxmlformats.org/officeDocument/2006/relationships/customXml", + CXMLP: "http://schemas.openxmlformats.org/officeDocument/2006/relationships/customXmlProps", + CMNT: "http://schemas.openxmlformats.org/officeDocument/2006/relationships/comments", + CORE_PROPS: "http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties", + EXT_PROPS: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties', + CUST_PROPS: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/custom-properties', + SST: "http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings", + STY: "http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles", + THEME: "http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme", + CHART: "http://schemas.openxmlformats.org/officeDocument/2006/relationships/chart", + CHARTEX: "http://schemas.microsoft.com/office/2014/relationships/chartEx", + CS: "http://schemas.openxmlformats.org/officeDocument/2006/relationships/chartsheet", + WS: [ + "http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet", + "http://purl.oclc.org/ooxml/officeDocument/relationships/worksheet" + ], + DS: "http://schemas.openxmlformats.org/officeDocument/2006/relationships/dialogsheet", + MS: "http://schemas.microsoft.com/office/2006/relationships/xlMacrosheet", + IMG: "http://schemas.openxmlformats.org/officeDocument/2006/relationships/image", + DRAW: "http://schemas.openxmlformats.org/officeDocument/2006/relationships/drawing", + XLMETA: "http://schemas.openxmlformats.org/officeDocument/2006/relationships/sheetMetadata", + TCMNT: "http://schemas.microsoft.com/office/2017/10/relationships/threadedComment", + PEOPLE: "http://schemas.microsoft.com/office/2017/10/relationships/person", + VBA: "http://schemas.microsoft.com/office/2006/relationships/vbaProject" +}); + + +/* 9.3.3 Representing Relationships */ +function get_rels_path(file) { + var n = file.lastIndexOf("/"); + return file.slice(0,n+1) + '_rels/' + file.slice(n+1) + ".rels"; +} + +function parse_rels(data, currentFilePath) { + var rels = {"!id":{}}; + if (!data) return rels; + if (currentFilePath.charAt(0) !== '/') { + currentFilePath = '/'+currentFilePath; + } + var hash = {}; + + (data.match(tagregex)||[]).forEach(function(x) { + var y = parsexmltag(x); + /* 9.3.2.2 OPC_Relationships */ + if (y[0] === '2){ o[o.length] = (''); o[1]=o[1].replace("/>",">"); } + return o.join(""); +} + +function add_rels(rels, rId, f, type, relobj, targetmode) { + if(!relobj) relobj = {}; + if(!rels['!id']) rels['!id'] = {}; + if(!rels['!idx']) rels['!idx'] = 1; + if(rId < 0) for(rId = rels['!idx']; rels['!id']['rId' + rId]; ++rId){/* empty */} + rels['!idx'] = rId + 1; + relobj.Id = 'rId' + rId; + relobj.Type = type; + relobj.Target = f; + if(targetmode) relobj.TargetMode = targetmode; + else if([RELS.HLINK, RELS.XPATH, RELS.XMISS].indexOf(relobj.Type) > -1) relobj.TargetMode = "External"; + if(rels['!id'][relobj.Id]) throw new Error("Cannot rewrite rId " + rId); + rels['!id'][relobj.Id] = relobj; + rels[('/' + relobj.Target).replace("//","/")] = relobj; + return rId; +} +/* Open Document Format for Office Applications (OpenDocument) Version 1.2 */ +/* Part 3 Section 4 Manifest File */ +var CT_ODS = "application/vnd.oasis.opendocument.spreadsheet"; +function parse_manifest(d, opts) { + var str = xlml_normalize(d); + var Rn; + var FEtag; + while((Rn = xlmlregex.exec(str))) switch(Rn[3]) { + case 'manifest': break; // 4.2 + case 'file-entry': // 4.3 + FEtag = parsexmltag(Rn[0], false); + if(FEtag.path == '/' && FEtag.type !== CT_ODS) throw new Error("This OpenDocument is not a spreadsheet"); + break; + case 'encryption-data': // 4.4 + case 'algorithm': // 4.5 + case 'start-key-generation': // 4.6 + case 'key-derivation': // 4.7 + throw new Error("Unsupported ODS Encryption"); + default: if(opts && opts.WTF) throw Rn; + } +} + +function write_manifest(manifest) { + var o = [XML_HEADER]; + o.push('\n'); + o.push(' \n'); + for(var i = 0; i < manifest.length; ++i) o.push(' \n'); + o.push(''); + return o.join(""); +} + +/* Part 3 Section 6 Metadata Manifest File */ +function write_rdf_type(file, res, tag) { + return [ + ' \n', + ' \n', + ' \n' + ].join(""); +} +function write_rdf_has(base, file) { + return [ + ' \n', + ' \n', + ' \n' + ].join(""); +} +function write_rdf(rdf) { + var o = [XML_HEADER]; + o.push('\n'); + for(var i = 0; i != rdf.length; ++i) { + o.push(write_rdf_type(rdf[i][0], rdf[i][1])); + o.push(write_rdf_has("",rdf[i][0])); + } + o.push(write_rdf_type("","Document", "pkg")); + o.push(''); + return o.join(""); +} +/* TODO: pull properties */ +function write_meta_ods() { + return 'Sheet' + 'JS ' + XLSX.version + ''; +} + +/* ECMA-376 Part II 11.1 Core Properties Part */ +/* [MS-OSHARED] 2.3.3.2.[1-2].1 (PIDSI/PIDDSI) */ +var CORE_PROPS = [ + ["cp:category", "Category"], + ["cp:contentStatus", "ContentStatus"], + ["cp:keywords", "Keywords"], + ["cp:lastModifiedBy", "LastAuthor"], + ["cp:lastPrinted", "LastPrinted"], + ["cp:revision", "RevNumber"], + ["cp:version", "Version"], + ["dc:creator", "Author"], + ["dc:description", "Comments"], + ["dc:identifier", "Identifier"], + ["dc:language", "Language"], + ["dc:subject", "Subject"], + ["dc:title", "Title"], + ["dcterms:created", "CreatedDate", 'date'], + ["dcterms:modified", "ModifiedDate", 'date'] +]; + +var CORE_PROPS_REGEX = (function() { + var r = new Array(CORE_PROPS.length); + for(var i = 0; i < CORE_PROPS.length; ++i) { + var f = CORE_PROPS[i]; + var g = "(?:"+ f[0].slice(0,f[0].indexOf(":")) +":)"+ f[0].slice(f[0].indexOf(":")+1); + r[i] = new RegExp("<" + g + "[^>]*>([\\s\\S]*?)<\/" + g + ">"); + } + return r; +})(); + +function parse_core_props(data) { + var p = {}; + data = utf8read(data); + + for(var i = 0; i < CORE_PROPS.length; ++i) { + var f = CORE_PROPS[i], cur = data.match(CORE_PROPS_REGEX[i]); + if(cur != null && cur.length > 0) p[f[1]] = unescapexml(cur[1]); + if(f[2] === 'date' && p[f[1]]) p[f[1]] = parseDate(p[f[1]]); + } + + return p; +} + +function cp_doit(f, g, h, o, p) { + if(p[f] != null || g == null || g === "") return; + p[f] = g; + g = escapexml(g); + o[o.length] = (h ? writextag(f,g,h) : writetag(f,g)); +} + +function write_core_props(cp, _opts) { + var opts = _opts || {}; + var o = [XML_HEADER, writextag('cp:coreProperties', null, { + //'xmlns': XMLNS.CORE_PROPS, + 'xmlns:cp': XMLNS.CORE_PROPS, + 'xmlns:dc': XMLNS.dc, + 'xmlns:dcterms': XMLNS.dcterms, + 'xmlns:dcmitype': XMLNS.dcmitype, + 'xmlns:xsi': XMLNS.xsi + })], p = {}; + if(!cp && !opts.Props) return o.join(""); + + if(cp) { + if(cp.CreatedDate != null) cp_doit("dcterms:created", typeof cp.CreatedDate === "string" ? cp.CreatedDate : write_w3cdtf(cp.CreatedDate, opts.WTF), {"xsi:type":"dcterms:W3CDTF"}, o, p); + if(cp.ModifiedDate != null) cp_doit("dcterms:modified", typeof cp.ModifiedDate === "string" ? cp.ModifiedDate : write_w3cdtf(cp.ModifiedDate, opts.WTF), {"xsi:type":"dcterms:W3CDTF"}, o, p); + } + + for(var i = 0; i != CORE_PROPS.length; ++i) { + var f = CORE_PROPS[i]; + var v = opts.Props && opts.Props[f[1]] != null ? opts.Props[f[1]] : cp ? cp[f[1]] : null; + if(v === true) v = "1"; + else if(v === false) v = "0"; + else if(typeof v == "number") v = String(v); + if(v != null) cp_doit(f[0], v, null, o, p); + } + if(o.length>2){ o[o.length] = (''); o[1]=o[1].replace("/>",">"); } + return o.join(""); +} +/* 15.2.12.3 Extended File Properties Part */ +/* [MS-OSHARED] 2.3.3.2.[1-2].1 (PIDSI/PIDDSI) */ +var EXT_PROPS = [ + ["Application", "Application", "string"], + ["AppVersion", "AppVersion", "string"], + ["Company", "Company", "string"], + ["DocSecurity", "DocSecurity", "string"], + ["Manager", "Manager", "string"], + ["HyperlinksChanged", "HyperlinksChanged", "bool"], + ["SharedDoc", "SharedDoc", "bool"], + ["LinksUpToDate", "LinksUpToDate", "bool"], + ["ScaleCrop", "ScaleCrop", "bool"], + ["HeadingPairs", "HeadingPairs", "raw"], + ["TitlesOfParts", "TitlesOfParts", "raw"] +]; + +var PseudoPropsPairs = [ + "Worksheets", "SheetNames", + "NamedRanges", "DefinedNames", + "Chartsheets", "ChartNames" +]; +function load_props_pairs(HP, TOP, props, opts) { + var v = []; + if(typeof HP == "string") v = parseVector(HP, opts); + else for(var j = 0; j < HP.length; ++j) v = v.concat(HP[j].map(function(hp) { return {v:hp}; })); + var parts = (typeof TOP == "string") ? parseVector(TOP, opts).map(function (x) { return x.v; }) : TOP; + var idx = 0, len = 0; + if(parts.length > 0) for(var i = 0; i !== v.length; i += 2) { + len = +(v[i+1].v); + switch(v[i].v) { + case "Worksheets": + case "工作表": + case "Листы": + case "أوراق العمل": + case "ワークシート": + case "גליונות עבודה": + case "Arbeitsblätter": + case "Çalışma Sayfaları": + case "Feuilles de calcul": + case "Fogli di lavoro": + case "Folhas de cálculo": + case "Planilhas": + case "Regneark": + case "Hojas de cálculo": + case "Werkbladen": + props.Worksheets = len; + props.SheetNames = parts.slice(idx, idx + len); + break; + + case "Named Ranges": + case "Rangos con nombre": + case "名前付き一覧": + case "Benannte Bereiche": + case "Navngivne områder": + props.NamedRanges = len; + props.DefinedNames = parts.slice(idx, idx + len); + break; + + case "Charts": + case "Diagramme": + props.Chartsheets = len; + props.ChartNames = parts.slice(idx, idx + len); + break; + } + idx += len; + } +} + +function parse_ext_props(data, p, opts) { + var q = {}; if(!p) p = {}; + data = utf8read(data); + + EXT_PROPS.forEach(function(f) { + var xml = (data.match(matchtag(f[0]))||[])[1]; + switch(f[2]) { + case "string": if(xml) p[f[1]] = unescapexml(xml); break; + case "bool": p[f[1]] = xml === "true"; break; + case "raw": + var cur = data.match(new RegExp("<" + f[0] + "[^>]*>([\\s\\S]*?)<\/" + f[0] + ">")); + if(cur && cur.length > 0) q[f[1]] = cur[1]; + break; + } + }); + + if(q.HeadingPairs && q.TitlesOfParts) load_props_pairs(q.HeadingPairs, q.TitlesOfParts, p, opts); + + return p; +} + +function write_ext_props(cp) { + var o = [], W = writextag; + if(!cp) cp = {}; + cp.Application = "SheetJS"; + o[o.length] = (XML_HEADER); + o[o.length] = (writextag('Properties', null, { + 'xmlns': XMLNS.EXT_PROPS, + 'xmlns:vt': XMLNS.vt + })); + + EXT_PROPS.forEach(function(f) { + if(cp[f[1]] === undefined) return; + var v; + switch(f[2]) { + case 'string': v = escapexml(String(cp[f[1]])); break; + case 'bool': v = cp[f[1]] ? 'true' : 'false'; break; + } + if(v !== undefined) o[o.length] = (W(f[0], v)); + }); + + /* TODO: HeadingPairs, TitlesOfParts */ + o[o.length] = (W('HeadingPairs', W('vt:vector', W('vt:variant', 'Worksheets')+W('vt:variant', W('vt:i4', String(cp.Worksheets))), {size:2, baseType:"variant"}))); + o[o.length] = (W('TitlesOfParts', W('vt:vector', cp.SheetNames.map(function(s) { return "" + escapexml(s) + ""; }).join(""), {size: cp.Worksheets, baseType:"lpstr"}))); + if(o.length>2){ o[o.length] = (''); o[1]=o[1].replace("/>",">"); } + return o.join(""); +} +/* 15.2.12.2 Custom File Properties Part */ +var custregex = /<[^>]+>[^<]*/g; +function parse_cust_props(data, opts) { + var p = {}, name = ""; + var m = data.match(custregex); + if(m) for(var i = 0; i != m.length; ++i) { + var x = m[i], y = parsexmltag(x); + switch(y[0]) { + case '': name = null; break; + default: if (x.indexOf(''); + var type = toks[0].slice(4), text = toks[1]; + /* 22.4.2.32 (CT_Variant). Omit the binary types from 22.4 (Variant Types) */ + switch(type) { + case 'lpstr': case 'bstr': case 'lpwstr': + p[name] = unescapexml(text); + break; + case 'bool': + p[name] = parsexmlbool(text); + break; + case 'i1': case 'i2': case 'i4': case 'i8': case 'int': case 'uint': + p[name] = parseInt(text, 10); + break; + case 'r4': case 'r8': case 'decimal': + p[name] = parseFloat(text); + break; + case 'filetime': case 'date': + p[name] = parseDate(text); + break; + case 'cy': case 'error': + p[name] = unescapexml(text); + break; + default: + if(type.slice(-1) == '/') break; + if(opts.WTF && typeof console !== 'undefined') console.warn('Unexpected', x, type, toks); + } + } else if(x.slice(0,2) === "2){ o[o.length] = ''; o[1]=o[1].replace("/>",">"); } + return o.join(""); +} +/* Common Name -> XLML Name */ +var XLMLDocPropsMap = { + Title: 'Title', + Subject: 'Subject', + Author: 'Author', + Keywords: 'Keywords', + Comments: 'Description', + LastAuthor: 'LastAuthor', + RevNumber: 'Revision', + Application: 'AppName', + /* TotalTime: 'TotalTime', */ + LastPrinted: 'LastPrinted', + CreatedDate: 'Created', + ModifiedDate: 'LastSaved', + /* Pages */ + /* Words */ + /* Characters */ + Category: 'Category', + /* PresentationFormat */ + Manager: 'Manager', + Company: 'Company', + /* Guid */ + /* HyperlinkBase */ + /* Bytes */ + /* Lines */ + /* Paragraphs */ + /* CharactersWithSpaces */ + AppVersion: 'Version', + + ContentStatus: 'ContentStatus', /* NOTE: missing from schema */ + Identifier: 'Identifier', /* NOTE: missing from schema */ + Language: 'Language' /* NOTE: missing from schema */ +}; +var evert_XLMLDPM; + +function xlml_set_prop(Props, tag, val) { + if(!evert_XLMLDPM) evert_XLMLDPM = evert(XLMLDocPropsMap); + tag = evert_XLMLDPM[tag] || tag; + Props[tag] = val; +} + +function xlml_write_docprops(Props, opts) { + var o = []; + keys(XLMLDocPropsMap).map(function(m) { + for(var i = 0; i < CORE_PROPS.length; ++i) if(CORE_PROPS[i][1] == m) return CORE_PROPS[i]; + for(i = 0; i < EXT_PROPS.length; ++i) if(EXT_PROPS[i][1] == m) return EXT_PROPS[i]; + throw m; + }).forEach(function(p) { + if(Props[p[1]] == null) return; + var m = opts && opts.Props && opts.Props[p[1]] != null ? opts.Props[p[1]] : Props[p[1]]; + switch(p[2]) { + case 'date': m = new Date(m).toISOString().replace(/\.\d*Z/,"Z"); break; + } + if(typeof m == 'number') m = String(m); + else if(m === true || m === false) { m = m ? "1" : "0"; } + else if(m instanceof Date) m = new Date(m).toISOString().replace(/\.\d*Z/,""); + o.push(writetag(XLMLDocPropsMap[p[1]] || p[1], m)); + }); + return writextag('DocumentProperties', o.join(""), {xmlns:XLMLNS.o }); +} +function xlml_write_custprops(Props, Custprops) { + var BLACKLIST = ["Worksheets","SheetNames"]; + var T = 'CustomDocumentProperties'; + var o = []; + if(Props) keys(Props).forEach(function(k) { +if(!Object.prototype.hasOwnProperty.call(Props, k)) return; + for(var i = 0; i < CORE_PROPS.length; ++i) if(k == CORE_PROPS[i][1]) return; + for(i = 0; i < EXT_PROPS.length; ++i) if(k == EXT_PROPS[i][1]) return; + for(i = 0; i < BLACKLIST.length; ++i) if(k == BLACKLIST[i]) return; + + var m = Props[k]; + var t = "string"; + if(typeof m == 'number') { t = "float"; m = String(m); } + else if(m === true || m === false) { t = "boolean"; m = m ? "1" : "0"; } + else m = String(m); + o.push(writextag(escapexmltag(k), m, {"dt:dt":t})); + }); + if(Custprops) keys(Custprops).forEach(function(k) { +if(!Object.prototype.hasOwnProperty.call(Custprops, k)) return; + if(Props && Object.prototype.hasOwnProperty.call(Props, k)) return; + var m = Custprops[k]; + var t = "string"; + if(typeof m == 'number') { t = "float"; m = String(m); } + else if(m === true || m === false) { t = "boolean"; m = m ? "1" : "0"; } + else if(m instanceof Date) { t = "dateTime.tz"; m = m.toISOString(); } + else m = String(m); + o.push(writextag(escapexmltag(k), m, {"dt:dt":t})); + }); + return '<' + T + ' xmlns="' + XLMLNS.o + '">' + o.join("") + ''; +} +/* [MS-DTYP] 2.3.3 FILETIME */ +/* [MS-OLEDS] 2.1.3 FILETIME (Packet Version) */ +/* [MS-OLEPS] 2.8 FILETIME (Packet Version) */ +function parse_FILETIME(blob) { + var dwLowDateTime = blob.read_shift(4), dwHighDateTime = blob.read_shift(4); + return new Date(((dwHighDateTime/1e7*Math.pow(2,32) + dwLowDateTime/1e7) - 11644473600)*1000).toISOString().replace(/\.000/,""); +} +function write_FILETIME(time) { + var date = (typeof time == "string") ? new Date(Date.parse(time)) : time; + var t = date.getTime() / 1000 + 11644473600; + var l = t % Math.pow(2,32), h = (t - l) / Math.pow(2,32); + l *= 1e7; h *= 1e7; + var w = (l / Math.pow(2,32)) | 0; + if(w > 0) { l = l % Math.pow(2,32); h += w; } + var o = new_buf(8); o.write_shift(4, l); o.write_shift(4, h); return o; +} + +/* [MS-OSHARED] 2.3.3.1.4 Lpstr */ +function parse_lpstr(blob, type, pad) { + var start = blob.l; + var str = blob.read_shift(0, 'lpstr-cp'); + if(pad) while((blob.l - start) & 3) ++blob.l; + return str; +} + +/* [MS-OSHARED] 2.3.3.1.6 Lpwstr */ +function parse_lpwstr(blob, type, pad) { + var str = blob.read_shift(0, 'lpwstr'); + if(pad) blob.l += (4 - ((str.length+1) & 3)) & 3; + return str; +} + + +/* [MS-OSHARED] 2.3.3.1.11 VtString */ +/* [MS-OSHARED] 2.3.3.1.12 VtUnalignedString */ +function parse_VtStringBase(blob, stringType, pad) { + if(stringType === 0x1F /*VT_LPWSTR*/) return parse_lpwstr(blob); + return parse_lpstr(blob, stringType, pad); +} + +function parse_VtString(blob, t, pad) { return parse_VtStringBase(blob, t, pad === false ? 0: 4); } +function parse_VtUnalignedString(blob, t) { if(!t) throw new Error("VtUnalignedString must have positive length"); return parse_VtStringBase(blob, t, 0); } + +/* [MS-OSHARED] 2.3.3.1.7 VtVecLpwstrValue */ +function parse_VtVecLpwstrValue(blob) { + var length = blob.read_shift(4); + var ret = []; + for(var i = 0; i != length; ++i) { + var start = blob.l; + ret[i] = blob.read_shift(0, 'lpwstr').replace(chr0,''); + if((blob.l - start) & 0x02) blob.l += 2; + } + return ret; +} + +/* [MS-OSHARED] 2.3.3.1.9 VtVecUnalignedLpstrValue */ +function parse_VtVecUnalignedLpstrValue(blob) { + var length = blob.read_shift(4); + var ret = []; + for(var i = 0; i != length; ++i) ret[i] = blob.read_shift(0, 'lpstr-cp').replace(chr0,''); + return ret; +} + + +/* [MS-OSHARED] 2.3.3.1.13 VtHeadingPair */ +function parse_VtHeadingPair(blob) { + var start = blob.l; + var headingString = parse_TypedPropertyValue(blob, VT_USTR); + if(blob[blob.l] == 0x00 && blob[blob.l+1] == 0x00 && ((blob.l - start) & 0x02)) blob.l += 2; + var headerParts = parse_TypedPropertyValue(blob, VT_I4); + return [headingString, headerParts]; +} + +/* [MS-OSHARED] 2.3.3.1.14 VtVecHeadingPairValue */ +function parse_VtVecHeadingPairValue(blob) { + var cElements = blob.read_shift(4); + var out = []; + for(var i = 0; i < cElements / 2; ++i) out.push(parse_VtHeadingPair(blob)); + return out; +} + +/* [MS-OLEPS] 2.18.1 Dictionary (uses 2.17, 2.16) */ +function parse_dictionary(blob,CodePage) { + var cnt = blob.read_shift(4); + var dict = ({}); + for(var j = 0; j != cnt; ++j) { + var pid = blob.read_shift(4); + var len = blob.read_shift(4); + dict[pid] = blob.read_shift(len, (CodePage === 0x4B0 ?'utf16le':'utf8')).replace(chr0,'').replace(chr1,'!'); + if(CodePage === 0x4B0 && (len % 2)) blob.l += 2; + } + if(blob.l & 3) blob.l = (blob.l>>2+1)<<2; + return dict; +} + +/* [MS-OLEPS] 2.9 BLOB */ +function parse_BLOB(blob) { + var size = blob.read_shift(4); + var bytes = blob.slice(blob.l,blob.l+size); + blob.l += size; + if((size & 3) > 0) blob.l += (4 - (size & 3)) & 3; + return bytes; +} + +/* [MS-OLEPS] 2.11 ClipboardData */ +function parse_ClipboardData(blob) { + // TODO + var o = {}; + o.Size = blob.read_shift(4); + //o.Format = blob.read_shift(4); + blob.l += o.Size + 3 - (o.Size - 1) % 4; + return o; +} + +/* [MS-OLEPS] 2.15 TypedPropertyValue */ +function parse_TypedPropertyValue(blob, type, _opts) { + var t = blob.read_shift(2), ret, opts = _opts||{}; + blob.l += 2; + if(type !== VT_VARIANT) + if(t !== type && VT_CUSTOM.indexOf(type)===-1 && !((type & 0xFFFE) == 0x101E && (t & 0xFFFE) == 0x101E)) throw new Error('Expected type ' + type + ' saw ' + t); + switch(type === VT_VARIANT ? t : type) { + case 0x02 /*VT_I2*/: ret = blob.read_shift(2, 'i'); if(!opts.raw) blob.l += 2; return ret; + case 0x03 /*VT_I4*/: ret = blob.read_shift(4, 'i'); return ret; + case 0x0B /*VT_BOOL*/: return blob.read_shift(4) !== 0x0; + case 0x13 /*VT_UI4*/: ret = blob.read_shift(4); return ret; + case 0x1E /*VT_LPSTR*/: return parse_lpstr(blob, t, 4).replace(chr0,''); + case 0x1F /*VT_LPWSTR*/: return parse_lpwstr(blob); + case 0x40 /*VT_FILETIME*/: return parse_FILETIME(blob); + case 0x41 /*VT_BLOB*/: return parse_BLOB(blob); + case 0x47 /*VT_CF*/: return parse_ClipboardData(blob); + case 0x50 /*VT_STRING*/: return parse_VtString(blob, t, !opts.raw).replace(chr0,''); + case 0x51 /*VT_USTR*/: return parse_VtUnalignedString(blob, t/*, 4*/).replace(chr0,''); + case 0x100C /*VT_VECTOR|VT_VARIANT*/: return parse_VtVecHeadingPairValue(blob); + case 0x101E /*VT_VECTOR|VT_LPSTR*/: + case 0x101F /*VT_VECTOR|VT_LPWSTR*/: + return t == 0x101F ? parse_VtVecLpwstrValue(blob) : parse_VtVecUnalignedLpstrValue(blob); + default: throw new Error("TypedPropertyValue unrecognized type " + type + " " + t); + } +} +function write_TypedPropertyValue(type, value) { + var o = new_buf(4), p = new_buf(4); + o.write_shift(4, type == 0x50 ? 0x1F : type); + switch(type) { + case 0x03 /*VT_I4*/: p.write_shift(-4, value); break; + case 0x05 /*VT_I4*/: p = new_buf(8); p.write_shift(8, value, 'f'); break; + case 0x0B /*VT_BOOL*/: p.write_shift(4, value ? 0x01 : 0x00); break; + case 0x40 /*VT_FILETIME*/: p = write_FILETIME(value); break; + case 0x1F /*VT_LPWSTR*/: + case 0x50 /*VT_STRING*/: +p = new_buf(4 + 2 * (value.length + 1) + (value.length % 2 ? 0 : 2)); + p.write_shift(4, value.length + 1); + p.write_shift(0, value, "dbcs"); + while(p.l != p.length) p.write_shift(1, 0); + break; + default: throw new Error("TypedPropertyValue unrecognized type " + type + " " + value); + } + return bconcat([o, p]); +} + +/* [MS-OLEPS] 2.20 PropertySet */ +function parse_PropertySet(blob, PIDSI) { + var start_addr = blob.l; + var size = blob.read_shift(4); + var NumProps = blob.read_shift(4); + var Props = [], i = 0; + var CodePage = 0; + var Dictionary = -1, DictObj = ({}); + for(i = 0; i != NumProps; ++i) { + var PropID = blob.read_shift(4); + var Offset = blob.read_shift(4); + Props[i] = [PropID, Offset + start_addr]; + } + Props.sort(function(x,y) { return x[1] - y[1]; }); + var PropH = {}; + for(i = 0; i != NumProps; ++i) { + if(blob.l !== Props[i][1]) { + var fail = true; + if(i>0 && PIDSI) switch(PIDSI[Props[i-1][0]].t) { + case 0x02 /*VT_I2*/: if(blob.l+2 === Props[i][1]) { blob.l+=2; fail = false; } break; + case 0x50 /*VT_STRING*/: if(blob.l <= Props[i][1]) { blob.l=Props[i][1]; fail = false; } break; + case 0x100C /*VT_VECTOR|VT_VARIANT*/: if(blob.l <= Props[i][1]) { blob.l=Props[i][1]; fail = false; } break; + } + if((!PIDSI||i==0) && blob.l <= Props[i][1]) { fail=false; blob.l = Props[i][1]; } + if(fail) throw new Error("Read Error: Expected address " + Props[i][1] + ' at ' + blob.l + ' :' + i); + } + if(PIDSI) { + var piddsi = PIDSI[Props[i][0]]; + PropH[piddsi.n] = parse_TypedPropertyValue(blob, piddsi.t, {raw:true}); + if(piddsi.p === 'version') PropH[piddsi.n] = String(PropH[piddsi.n] >> 16) + "." + ("0000" + String(PropH[piddsi.n] & 0xFFFF)).slice(-4); + if(piddsi.n == "CodePage") switch(PropH[piddsi.n]) { + case 0: PropH[piddsi.n] = 1252; + /* falls through */ + case 874: + case 932: + case 936: + case 949: + case 950: + case 1250: + case 1251: + case 1253: + case 1254: + case 1255: + case 1256: + case 1257: + case 1258: + case 10000: + case 1200: + case 1201: + case 1252: + case 65000: case -536: + case 65001: case -535: + set_cp(CodePage = (PropH[piddsi.n]>>>0) & 0xFFFF); break; + default: throw new Error("Unsupported CodePage: " + PropH[piddsi.n]); + } + } else { + if(Props[i][0] === 0x1) { + CodePage = PropH.CodePage = (parse_TypedPropertyValue(blob, VT_I2)); + set_cp(CodePage); + if(Dictionary !== -1) { + var oldpos = blob.l; + blob.l = Props[Dictionary][1]; + DictObj = parse_dictionary(blob,CodePage); + blob.l = oldpos; + } + } else if(Props[i][0] === 0) { + if(CodePage === 0) { Dictionary = i; blob.l = Props[i+1][1]; continue; } + DictObj = parse_dictionary(blob,CodePage); + } else { + var name = DictObj[Props[i][0]]; + var val; + /* [MS-OSHARED] 2.3.3.2.3.1.2 + PROPVARIANT */ + switch(blob[blob.l]) { + case 0x41 /*VT_BLOB*/: blob.l += 4; val = parse_BLOB(blob); break; + case 0x1E /*VT_LPSTR*/: blob.l += 4; val = parse_VtString(blob, blob[blob.l-4]).replace(/\u0000+$/,""); break; + case 0x1F /*VT_LPWSTR*/: blob.l += 4; val = parse_VtString(blob, blob[blob.l-4]).replace(/\u0000+$/,""); break; + case 0x03 /*VT_I4*/: blob.l += 4; val = blob.read_shift(4, 'i'); break; + case 0x13 /*VT_UI4*/: blob.l += 4; val = blob.read_shift(4); break; + case 0x05 /*VT_R8*/: blob.l += 4; val = blob.read_shift(8, 'f'); break; + case 0x0B /*VT_BOOL*/: blob.l += 4; val = parsebool(blob, 4); break; + case 0x40 /*VT_FILETIME*/: blob.l += 4; val = parseDate(parse_FILETIME(blob)); break; + default: throw new Error("unparsed value: " + blob[blob.l]); + } + PropH[name] = val; + } + } + } + blob.l = start_addr + size; /* step ahead to skip padding */ + return PropH; +} +var XLSPSSkip = [ "CodePage", "Thumbnail", "_PID_LINKBASE", "_PID_HLINKS", "SystemIdentifier", "FMTID" ]; //.concat(PseudoPropsPairs); +function guess_property_type(val) { + switch(typeof val) { + case "boolean": return 0x0B; + case "number": return ((val|0)==val) ? 0x03 : 0x05; + case "string": return 0x1F; + case "object": if(val instanceof Date) return 0x40; break; + } + return -1; +} +function write_PropertySet(entries, RE, PIDSI) { + var hdr = new_buf(8), piao = [], prop = []; + var sz = 8, i = 0; + + var pr = new_buf(8), pio = new_buf(8); + pr.write_shift(4, 0x0002); + pr.write_shift(4, 0x04B0); + pio.write_shift(4, 0x0001); + prop.push(pr); piao.push(pio); + sz += 8 + pr.length; + + if(!RE) { + pio = new_buf(8); + pio.write_shift(4, 0); + piao.unshift(pio); + + var bufs = [new_buf(4)]; + bufs[0].write_shift(4, entries.length); + for(i = 0; i < entries.length; ++i) { + var value = entries[i][0]; + pr = new_buf(4 + 4 + 2 * (value.length + 1) + (value.length % 2 ? 0 : 2)); + pr.write_shift(4, i+2); + pr.write_shift(4, value.length + 1); + pr.write_shift(0, value, "dbcs"); + while(pr.l != pr.length) pr.write_shift(1, 0); + bufs.push(pr); + } + pr = bconcat(bufs); + prop.unshift(pr); + sz += 8 + pr.length; + } + + for(i = 0; i < entries.length; ++i) { + if(RE && !RE[entries[i][0]]) continue; + if(XLSPSSkip.indexOf(entries[i][0]) > -1 || PseudoPropsPairs.indexOf(entries[i][0]) > -1) continue; + if(entries[i][1] == null) continue; + + var val = entries[i][1], idx = 0; + if(RE) { + idx = +RE[entries[i][0]]; + var pinfo = (PIDSI)[idx]; + if(pinfo.p == "version" && typeof val == "string") { +var arr = val.split("."); + val = ((+arr[0])<<16) + ((+arr[1])||0); + } + pr = write_TypedPropertyValue(pinfo.t, val); + } else { + var T = guess_property_type(val); + if(T == -1) { T = 0x1F; val = String(val); } + pr = write_TypedPropertyValue(T, val); + } + prop.push(pr); + + pio = new_buf(8); + pio.write_shift(4, !RE ? 2+i : idx); + piao.push(pio); + + sz += 8 + pr.length; + } + + var w = 8 * (prop.length + 1); + for(i = 0; i < prop.length; ++i) { piao[i].write_shift(4, w); w += prop[i].length; } + hdr.write_shift(4, sz); + hdr.write_shift(4, prop.length); + return bconcat([hdr].concat(piao).concat(prop)); +} + +/* [MS-OLEPS] 2.21 PropertySetStream */ +function parse_PropertySetStream(file, PIDSI, clsid) { + var blob = file.content; + if(!blob) return ({}); + prep_blob(blob, 0); + + var NumSets, FMTID0, FMTID1, Offset0, Offset1 = 0; + blob.chk('feff', 'Byte Order: '); + + /*var vers = */blob.read_shift(2); // TODO: check version + var SystemIdentifier = blob.read_shift(4); + var CLSID = blob.read_shift(16); + if(CLSID !== CFB.utils.consts.HEADER_CLSID && CLSID !== clsid) throw new Error("Bad PropertySet CLSID " + CLSID); + NumSets = blob.read_shift(4); + if(NumSets !== 1 && NumSets !== 2) throw new Error("Unrecognized #Sets: " + NumSets); + FMTID0 = blob.read_shift(16); Offset0 = blob.read_shift(4); + + if(NumSets === 1 && Offset0 !== blob.l) throw new Error("Length mismatch: " + Offset0 + " !== " + blob.l); + else if(NumSets === 2) { FMTID1 = blob.read_shift(16); Offset1 = blob.read_shift(4); } + var PSet0 = parse_PropertySet(blob, PIDSI); + + var rval = ({ SystemIdentifier: SystemIdentifier }); + for(var y in PSet0) rval[y] = PSet0[y]; + //rval.blob = blob; + rval.FMTID = FMTID0; + //rval.PSet0 = PSet0; + if(NumSets === 1) return rval; + if(Offset1 - blob.l == 2) blob.l += 2; + if(blob.l !== Offset1) throw new Error("Length mismatch 2: " + blob.l + " !== " + Offset1); + var PSet1; + try { PSet1 = parse_PropertySet(blob, null); } catch(e) {/* empty */} + for(y in PSet1) rval[y] = PSet1[y]; + rval.FMTID = [FMTID0, FMTID1]; // TODO: verify FMTID0/1 + return rval; +} +function write_PropertySetStream(entries, clsid, RE, PIDSI, entries2, clsid2) { + var hdr = new_buf(entries2 ? 68 : 48); + var bufs = [hdr]; + hdr.write_shift(2, 0xFFFE); + hdr.write_shift(2, 0x0000); /* TODO: type 1 props */ + hdr.write_shift(4, 0x32363237); + hdr.write_shift(16, CFB.utils.consts.HEADER_CLSID, "hex"); + hdr.write_shift(4, (entries2 ? 2 : 1)); + hdr.write_shift(16, clsid, "hex"); + hdr.write_shift(4, (entries2 ? 68 : 48)); + var ps0 = write_PropertySet(entries, RE, PIDSI); + bufs.push(ps0); + + if(entries2) { + var ps1 = write_PropertySet(entries2, null, null); + hdr.write_shift(16, clsid2, "hex"); + hdr.write_shift(4, 68 + ps0.length); + bufs.push(ps1); + } + return bconcat(bufs); +} + +function parsenoop2(blob, length) { blob.read_shift(length); return null; } +function writezeroes(n, o) { if(!o) o=new_buf(n); for(var j=0; j= 12 ? 2 : 1); + var encoding = 'sbcs-cont'; + var cp = current_codepage; + if(opts && opts.biff >= 8) current_codepage = 1200; + if(!opts || opts.biff == 8 ) { + var fHighByte = blob.read_shift(1); + if(fHighByte) { encoding = 'dbcs-cont'; } + } else if(opts.biff == 12) { + encoding = 'wstr'; + } + if(opts.biff >= 2 && opts.biff <= 5) encoding = 'cpstr'; + var o = cch ? blob.read_shift(cch, encoding) : ""; + current_codepage = cp; + return o; +} + +/* 2.5.293 XLUnicodeRichExtendedString */ +function parse_XLUnicodeRichExtendedString(blob) { + var cp = current_codepage; + current_codepage = 1200; + var cch = blob.read_shift(2), flags = blob.read_shift(1); + var /*fHighByte = flags & 0x1,*/ fExtSt = flags & 0x4, fRichSt = flags & 0x8; + var width = 1 + (flags & 0x1); // 0x0 -> utf8, 0x1 -> dbcs + var cRun = 0, cbExtRst; + var z = {}; + if(fRichSt) cRun = blob.read_shift(2); + if(fExtSt) cbExtRst = blob.read_shift(4); + var encoding = width == 2 ? 'dbcs-cont' : 'sbcs-cont'; + var msg = cch === 0 ? "" : blob.read_shift(cch, encoding); + if(fRichSt) blob.l += 4 * cRun; //TODO: parse this + if(fExtSt) blob.l += cbExtRst; //TODO: parse this + z.t = msg; + if(!fRichSt) { z.raw = "" + z.t + ""; z.r = z.t; } + current_codepage = cp; + return z; +} +function write_XLUnicodeRichExtendedString(xlstr) { + var str = (xlstr.t||""), nfmts = 1; + + var hdr = new_buf(3 + (nfmts > 1 ? 2 : 0)); + hdr.write_shift(2, str.length); + hdr.write_shift(1, (nfmts > 1 ? 0x08 : 0x00) | 0x01); + if(nfmts > 1) hdr.write_shift(2, nfmts); + + var otext = new_buf(2 * str.length); + otext.write_shift(2 * str.length, str, 'utf16le'); + + var out = [hdr, otext]; + + return bconcat(out); +} + +/* 2.5.296 XLUnicodeStringNoCch */ +function parse_XLUnicodeStringNoCch(blob, cch, opts) { + var retval; + if(opts) { + if(opts.biff >= 2 && opts.biff <= 5) return blob.read_shift(cch, 'cpstr'); + if(opts.biff >= 12) return blob.read_shift(cch, 'dbcs-cont'); + } + var fHighByte = blob.read_shift(1); + if(fHighByte===0) { retval = blob.read_shift(cch, 'sbcs-cont'); } + else { retval = blob.read_shift(cch, 'dbcs-cont'); } + return retval; +} + +/* 2.5.294 XLUnicodeString */ +function parse_XLUnicodeString(blob, length, opts) { + var cch = blob.read_shift(opts && opts.biff == 2 ? 1 : 2); + if(cch === 0) { blob.l++; return ""; } + return parse_XLUnicodeStringNoCch(blob, cch, opts); +} +/* BIFF5 override */ +function parse_XLUnicodeString2(blob, length, opts) { + if(opts.biff > 5) return parse_XLUnicodeString(blob, length, opts); + var cch = blob.read_shift(1); + if(cch === 0) { blob.l++; return ""; } + return blob.read_shift(cch, (opts.biff <= 4 || !blob.lens ) ? 'cpstr' : 'sbcs-cont'); +} +/* TODO: BIFF5 and lower, codepage awareness */ +function write_XLUnicodeString(str, opts, o) { + if(!o) o = new_buf(3 + 2 * str.length); + o.write_shift(2, str.length); + o.write_shift(1, 1); + o.write_shift(31, str, 'utf16le'); + return o; +} + +/* [MS-XLS] 2.5.61 ControlInfo */ +function parse_ControlInfo(blob) { + var flags = blob.read_shift(1); + blob.l++; + var accel = blob.read_shift(2); + blob.l += 2; + return [flags, accel]; +} + +/* [MS-OSHARED] 2.3.7.6 URLMoniker TODO: flags */ +function parse_URLMoniker(blob) { + var len = blob.read_shift(4), start = blob.l; + var extra = false; + if(len > 24) { + /* look ahead */ + blob.l += len - 24; + if(blob.read_shift(16) === "795881f43b1d7f48af2c825dc4852763") extra = true; + blob.l = start; + } + var url = blob.read_shift((extra?len-24:len)>>1, 'utf16le').replace(chr0,""); + if(extra) blob.l += 24; + return url; +} + +/* [MS-OSHARED] 2.3.7.8 FileMoniker TODO: all fields */ +function parse_FileMoniker(blob) { + var cAnti = blob.read_shift(2); + var preamble = ""; while(cAnti-- > 0) preamble += "../"; + var ansiPath = blob.read_shift(0, 'lpstr-ansi'); + blob.l += 2; //var endServer = blob.read_shift(2); + if(blob.read_shift(2) != 0xDEAD) throw new Error("Bad FileMoniker"); + var sz = blob.read_shift(4); + if(sz === 0) return preamble + ansiPath.replace(/\\/g,"/"); + var bytes = blob.read_shift(4); + if(blob.read_shift(2) != 3) throw new Error("Bad FileMoniker"); + var unicodePath = blob.read_shift(bytes>>1, 'utf16le').replace(chr0,""); + return preamble + unicodePath; +} + +/* [MS-OSHARED] 2.3.7.2 HyperlinkMoniker TODO: all the monikers */ +function parse_HyperlinkMoniker(blob, length) { + var clsid = blob.read_shift(16); length -= 16; + switch(clsid) { + case "e0c9ea79f9bace118c8200aa004ba90b": return parse_URLMoniker(blob, length); + case "0303000000000000c000000000000046": return parse_FileMoniker(blob, length); + default: throw new Error("Unsupported Moniker " + clsid); + } +} + +/* [MS-OSHARED] 2.3.7.9 HyperlinkString */ +function parse_HyperlinkString(blob) { + var len = blob.read_shift(4); + var o = len > 0 ? blob.read_shift(len, 'utf16le').replace(chr0, "") : ""; + return o; +} +function write_HyperlinkString(str, o) { + if(!o) o = new_buf(6 + str.length * 2); + o.write_shift(4, 1 + str.length); + for(var i = 0; i < str.length; ++i) o.write_shift(2, str.charCodeAt(i)); + o.write_shift(2, 0); + return o; +} + +/* [MS-OSHARED] 2.3.7.1 Hyperlink Object */ +function parse_Hyperlink(blob, length) { + var end = blob.l + length; + var sVer = blob.read_shift(4); + if(sVer !== 2) throw new Error("Unrecognized streamVersion: " + sVer); + var flags = blob.read_shift(2); + blob.l += 2; + var displayName, targetFrameName, moniker, oleMoniker, Loc="", guid, fileTime; + if(flags & 0x0010) displayName = parse_HyperlinkString(blob, end - blob.l); + if(flags & 0x0080) targetFrameName = parse_HyperlinkString(blob, end - blob.l); + if((flags & 0x0101) === 0x0101) moniker = parse_HyperlinkString(blob, end - blob.l); + if((flags & 0x0101) === 0x0001) oleMoniker = parse_HyperlinkMoniker(blob, end - blob.l); + if(flags & 0x0008) Loc = parse_HyperlinkString(blob, end - blob.l); + if(flags & 0x0020) guid = blob.read_shift(16); + if(flags & 0x0040) fileTime = parse_FILETIME(blob/*, 8*/); + blob.l = end; + var target = targetFrameName||moniker||oleMoniker||""; + if(target && Loc) target+="#"+Loc; + if(!target) target = "#" + Loc; + if((flags & 0x0002) && target.charAt(0) == "/" && target.charAt(1) != "/") target = "file://" + target; + var out = ({Target:target}); + if(guid) out.guid = guid; + if(fileTime) out.time = fileTime; + if(displayName) out.Tooltip = displayName; + return out; +} +function write_Hyperlink(hl) { + var out = new_buf(512), i = 0; + var Target = hl.Target; + if(Target.slice(0,7) == "file://") Target = Target.slice(7); + var hashidx = Target.indexOf("#"); + var F = hashidx > -1 ? 0x1f : 0x17; + switch(Target.charAt(0)) { case "#": F=0x1c; break; case ".": F&=~2; break; } + out.write_shift(4,2); out.write_shift(4, F); + var data = [8,6815827,6619237,4849780,83]; for(i = 0; i < data.length; ++i) out.write_shift(4, data[i]); + if(F == 0x1C) { + Target = Target.slice(1); + write_HyperlinkString(Target, out); + } else if(F & 0x02) { + data = "e0 c9 ea 79 f9 ba ce 11 8c 82 00 aa 00 4b a9 0b".split(" "); + for(i = 0; i < data.length; ++i) out.write_shift(1, parseInt(data[i], 16)); + var Pretarget = hashidx > -1 ? Target.slice(0, hashidx) : Target; + out.write_shift(4, 2*(Pretarget.length + 1)); + for(i = 0; i < Pretarget.length; ++i) out.write_shift(2, Pretarget.charCodeAt(i)); + out.write_shift(2, 0); + if(F & 0x08) write_HyperlinkString(hashidx > -1 ? Target.slice(hashidx+1): "", out); + } else { + data = "03 03 00 00 00 00 00 00 c0 00 00 00 00 00 00 46".split(" "); + for(i = 0; i < data.length; ++i) out.write_shift(1, parseInt(data[i], 16)); + var P = 0; + while(Target.slice(P*3,P*3+3)=="../"||Target.slice(P*3,P*3+3)=="..\\") ++P; + out.write_shift(2, P); + out.write_shift(4, Target.length - 3 * P + 1); + for(i = 0; i < Target.length - 3 * P; ++i) out.write_shift(1, Target.charCodeAt(i + 3 * P) & 0xFF); + out.write_shift(1, 0); + out.write_shift(2, 0xFFFF); + out.write_shift(2, 0xDEAD); + for(i = 0; i < 6; ++i) out.write_shift(4, 0); + } + return out.slice(0, out.l); +} + +/* 2.5.178 LongRGBA */ +function parse_LongRGBA(blob) { var r = blob.read_shift(1), g = blob.read_shift(1), b = blob.read_shift(1), a = blob.read_shift(1); return [r,g,b,a]; } + +/* 2.5.177 LongRGB */ +function parse_LongRGB(blob, length) { var x = parse_LongRGBA(blob, length); x[3] = 0; return x; } + + +/* [MS-XLS] 2.5.19 */ +function parse_XLSCell(blob) { + var rw = blob.read_shift(2); // 0-indexed + var col = blob.read_shift(2); + var ixfe = blob.read_shift(2); + return ({r:rw, c:col, ixfe:ixfe}); +} +function write_XLSCell(R, C, ixfe, o) { + if(!o) o = new_buf(6); + o.write_shift(2, R); + o.write_shift(2, C); + o.write_shift(2, ixfe||0); + return o; +} + +/* [MS-XLS] 2.5.134 */ +function parse_frtHeader(blob) { + var rt = blob.read_shift(2); + var flags = blob.read_shift(2); // TODO: parse these flags + blob.l += 8; + return {type: rt, flags: flags}; +} + + + +function parse_OptXLUnicodeString(blob, length, opts) { return length === 0 ? "" : parse_XLUnicodeString2(blob, length, opts); } + +/* [MS-XLS] 2.5.344 */ +function parse_XTI(blob, length, opts) { + var w = opts.biff > 8 ? 4 : 2; + var iSupBook = blob.read_shift(w), itabFirst = blob.read_shift(w,'i'), itabLast = blob.read_shift(w,'i'); + return [iSupBook, itabFirst, itabLast]; +} + +/* [MS-XLS] 2.5.218 */ +function parse_RkRec(blob) { + var ixfe = blob.read_shift(2); + var RK = parse_RkNumber(blob); + return [ixfe, RK]; +} + +/* [MS-XLS] 2.5.1 */ +function parse_AddinUdf(blob, length, opts) { + blob.l += 4; length -= 4; + var l = blob.l + length; + var udfName = parse_ShortXLUnicodeString(blob, length, opts); + var cb = blob.read_shift(2); + l -= blob.l; + if(cb !== l) throw new Error("Malformed AddinUdf: padding = " + l + " != " + cb); + blob.l += cb; + return udfName; +} + +/* [MS-XLS] 2.5.209 TODO: Check sizes */ +function parse_Ref8U(blob) { + var rwFirst = blob.read_shift(2); + var rwLast = blob.read_shift(2); + var colFirst = blob.read_shift(2); + var colLast = blob.read_shift(2); + return {s:{c:colFirst, r:rwFirst}, e:{c:colLast,r:rwLast}}; +} +function write_Ref8U(r, o) { + if(!o) o = new_buf(8); + o.write_shift(2, r.s.r); + o.write_shift(2, r.e.r); + o.write_shift(2, r.s.c); + o.write_shift(2, r.e.c); + return o; +} + +/* [MS-XLS] 2.5.211 */ +function parse_RefU(blob) { + var rwFirst = blob.read_shift(2); + var rwLast = blob.read_shift(2); + var colFirst = blob.read_shift(1); + var colLast = blob.read_shift(1); + return {s:{c:colFirst, r:rwFirst}, e:{c:colLast,r:rwLast}}; +} + +/* [MS-XLS] 2.5.207 */ +var parse_Ref = parse_RefU; + +/* [MS-XLS] 2.5.143 */ +function parse_FtCmo(blob) { + blob.l += 4; + var ot = blob.read_shift(2); + var id = blob.read_shift(2); + var flags = blob.read_shift(2); + blob.l+=12; + return [id, ot, flags]; +} + +/* [MS-XLS] 2.5.149 */ +function parse_FtNts(blob) { + var out = {}; + blob.l += 4; + blob.l += 16; // GUID TODO + out.fSharedNote = blob.read_shift(2); + blob.l += 4; + return out; +} + +/* [MS-XLS] 2.5.142 */ +function parse_FtCf(blob) { + var out = {}; + blob.l += 4; + blob.cf = blob.read_shift(2); + return out; +} + +/* [MS-XLS] 2.5.140 - 2.5.154 and friends */ +function parse_FtSkip(blob) { blob.l += 2; blob.l += blob.read_shift(2); } +var FtTab = { +0x00: parse_FtSkip, /* FtEnd */ +0x04: parse_FtSkip, /* FtMacro */ +0x05: parse_FtSkip, /* FtButton */ +0x06: parse_FtSkip, /* FtGmo */ +0x07: parse_FtCf, /* FtCf */ +0x08: parse_FtSkip, /* FtPioGrbit */ +0x09: parse_FtSkip, /* FtPictFmla */ +0x0A: parse_FtSkip, /* FtCbls */ +0x0B: parse_FtSkip, /* FtRbo */ +0x0C: parse_FtSkip, /* FtSbs */ +0x0D: parse_FtNts, /* FtNts */ +0x0E: parse_FtSkip, /* FtSbsFmla */ +0x0F: parse_FtSkip, /* FtGboData */ +0x10: parse_FtSkip, /* FtEdoData */ +0x11: parse_FtSkip, /* FtRboData */ +0x12: parse_FtSkip, /* FtCblsData */ +0x13: parse_FtSkip, /* FtLbsData */ +0x14: parse_FtSkip, /* FtCblsFmla */ +0x15: parse_FtCmo +}; +function parse_FtArray(blob, length) { + var tgt = blob.l + length; + var fts = []; + while(blob.l < tgt) { + var ft = blob.read_shift(2); + blob.l-=2; + try { + fts.push(FtTab[ft](blob, tgt - blob.l)); + } catch(e) { blob.l = tgt; return fts; } + } + if(blob.l != tgt) blob.l = tgt; //throw new Error("bad Object Ft-sequence"); + return fts; +} + +/* --- 2.4 Records --- */ + +/* [MS-XLS] 2.4.21 */ +function parse_BOF(blob, length) { + var o = {BIFFVer:0, dt:0}; + o.BIFFVer = blob.read_shift(2); length -= 2; + if(length >= 2) { o.dt = blob.read_shift(2); blob.l -= 2; } + switch(o.BIFFVer) { + case 0x0600: /* BIFF8 */ + case 0x0500: /* BIFF5 */ + case 0x0400: /* BIFF4 */ + case 0x0300: /* BIFF3 */ + case 0x0200: /* BIFF2 */ + case 0x0002: case 0x0007: /* BIFF2 */ + break; + default: if(length > 6) throw new Error("Unexpected BIFF Ver " + o.BIFFVer); + } + + blob.read_shift(length); + return o; +} +function write_BOF(wb, t, o) { + var h = 0x0600, w = 16; + switch(o.bookType) { + case 'biff8': break; + case 'biff5': h = 0x0500; w = 8; break; + case 'biff4': h = 0x0004; w = 6; break; + case 'biff3': h = 0x0003; w = 6; break; + case 'biff2': h = 0x0002; w = 4; break; + case 'xla': break; + default: throw new Error("unsupported BIFF version"); + } + var out = new_buf(w); + out.write_shift(2, h); + out.write_shift(2, t); + if(w > 4) out.write_shift(2, 0x7262); + if(w > 6) out.write_shift(2, 0x07CD); + if(w > 8) { + out.write_shift(2, 0xC009); + out.write_shift(2, 0x0001); + out.write_shift(2, 0x0706); + out.write_shift(2, 0x0000); + } + return out; +} + + +/* [MS-XLS] 2.4.146 */ +function parse_InterfaceHdr(blob, length) { + if(length === 0) return 0x04b0; + if((blob.read_shift(2))!==0x04b0){/* empty */} + return 0x04b0; +} + + +/* [MS-XLS] 2.4.349 */ +function parse_WriteAccess(blob, length, opts) { + if(opts.enc) { blob.l += length; return ""; } + var l = blob.l; + // TODO: make sure XLUnicodeString doesnt overrun + var UserName = parse_XLUnicodeString2(blob, 0, opts); + blob.read_shift(length + l - blob.l); + return UserName; +} +function write_WriteAccess(s, opts) { + var b8 = !opts || opts.biff == 8; + var o = new_buf(b8 ? 112 : 54); + o.write_shift(opts.biff == 8 ? 2 : 1, 7); + if(b8) o.write_shift(1, 0); + o.write_shift(4, 0x33336853); + o.write_shift(4, (0x00534A74 | (b8 ? 0 : 0x20000000))); + while(o.l < o.length) o.write_shift(1, (b8 ? 0 : 32)); + return o; +} + +/* [MS-XLS] 2.4.351 */ +function parse_WsBool(blob, length, opts) { + var flags = opts && opts.biff == 8 || length == 2 ? blob.read_shift(2) : (blob.l += length, 0); + return { fDialog: flags & 0x10, fBelow: flags & 0x40, fRight: flags & 0x80 }; +} + +/* [MS-XLS] 2.4.28 */ +function parse_BoundSheet8(blob, length, opts) { + var pos = blob.read_shift(4); + var hidden = blob.read_shift(1) & 0x03; + var dt = blob.read_shift(1); + switch(dt) { + case 0: dt = 'Worksheet'; break; + case 1: dt = 'Macrosheet'; break; + case 2: dt = 'Chartsheet'; break; + case 6: dt = 'VBAModule'; break; + } + var name = parse_ShortXLUnicodeString(blob, 0, opts); + if(name.length === 0) name = "Sheet1"; + return { pos:pos, hs:hidden, dt:dt, name:name }; +} +function write_BoundSheet8(data, opts) { + var w = (!opts || opts.biff >= 8 ? 2 : 1); + var o = new_buf(8 + w * data.name.length); + o.write_shift(4, data.pos); + o.write_shift(1, data.hs || 0); + o.write_shift(1, data.dt); + o.write_shift(1, data.name.length); + if(opts.biff >= 8) o.write_shift(1, 1); + o.write_shift(w * data.name.length, data.name, opts.biff < 8 ? 'sbcs' : 'utf16le'); + var out = o.slice(0, o.l); + out.l = o.l; return out; +} + +/* [MS-XLS] 2.4.265 TODO */ +function parse_SST(blob, length) { + var end = blob.l + length; + var cnt = blob.read_shift(4); + var ucnt = blob.read_shift(4); + var strs = ([]); + for(var i = 0; i != ucnt && blob.l < end; ++i) { + strs.push(parse_XLUnicodeRichExtendedString(blob)); + } + strs.Count = cnt; strs.Unique = ucnt; + return strs; +} +function write_SST(sst, opts) { + var header = new_buf(8); + header.write_shift(4, sst.Count); + header.write_shift(4, sst.Unique); + var strs = []; + for(var j = 0; j < sst.length; ++j) strs[j] = write_XLUnicodeRichExtendedString(sst[j], opts); + var o = bconcat([header].concat(strs)); +o.parts = [header.length].concat(strs.map(function(str) { return str.length; })); + return o; +} + +/* [MS-XLS] 2.4.107 */ +function parse_ExtSST(blob, length) { + var extsst = {}; + extsst.dsst = blob.read_shift(2); + blob.l += length-2; + return extsst; +} + + +/* [MS-XLS] 2.4.221 TODO: check BIFF2-4 */ +function parse_Row(blob) { + var z = ({}); + z.r = blob.read_shift(2); + z.c = blob.read_shift(2); + z.cnt = blob.read_shift(2) - z.c; + var miyRw = blob.read_shift(2); + blob.l += 4; // reserved(2), unused(2) + var flags = blob.read_shift(1); // various flags + blob.l += 3; // reserved(8), ixfe(12), flags(4) + if(flags & 0x07) z.level = flags & 0x07; + // collapsed: flags & 0x10 + if(flags & 0x20) z.hidden = true; + if(flags & 0x40) z.hpt = miyRw / 20; + return z; +} + + +/* [MS-XLS] 2.4.125 */ +function parse_ForceFullCalculation(blob) { + var header = parse_frtHeader(blob); + if(header.type != 0x08A3) throw new Error("Invalid Future Record " + header.type); + var fullcalc = blob.read_shift(4); + return fullcalc !== 0x0; +} + + + + + +/* [MS-XLS] 2.4.215 rt */ +function parse_RecalcId(blob) { + blob.read_shift(2); + return blob.read_shift(4); +} + +/* [MS-XLS] 2.4.87 */ +function parse_DefaultRowHeight(blob, length, opts) { + var f = 0; + if(!(opts && opts.biff == 2)) { + f = blob.read_shift(2); + } + var miyRw = blob.read_shift(2); + if((opts && opts.biff == 2)) { + f = 1 - (miyRw >> 15); miyRw &= 0x7fff; + } + var fl = {Unsynced:f&1,DyZero:(f&2)>>1,ExAsc:(f&4)>>2,ExDsc:(f&8)>>3}; + return [fl, miyRw]; +} + +/* [MS-XLS] 2.4.345 TODO */ +function parse_Window1(blob) { + var xWn = blob.read_shift(2), yWn = blob.read_shift(2), dxWn = blob.read_shift(2), dyWn = blob.read_shift(2); + var flags = blob.read_shift(2), iTabCur = blob.read_shift(2), iTabFirst = blob.read_shift(2); + var ctabSel = blob.read_shift(2), wTabRatio = blob.read_shift(2); + return { Pos: [xWn, yWn], Dim: [dxWn, dyWn], Flags: flags, CurTab: iTabCur, + FirstTab: iTabFirst, Selected: ctabSel, TabRatio: wTabRatio }; +} +function write_Window1() { + var o = new_buf(18); + o.write_shift(2, 0); + o.write_shift(2, 0); + o.write_shift(2, 0x7260); + o.write_shift(2, 0x44c0); + o.write_shift(2, 0x38); + o.write_shift(2, 0); + o.write_shift(2, 0); + o.write_shift(2, 1); + o.write_shift(2, 0x01f4); + return o; +} +/* [MS-XLS] 2.4.346 TODO */ +function parse_Window2(blob, length, opts) { + if(opts && opts.biff >= 2 && opts.biff < 5) return {}; + var f = blob.read_shift(2); + return { RTL: f & 0x40 }; +} +function write_Window2(view) { + var o = new_buf(18), f = 0x6b6; + if(view && view.RTL) f |= 0x40; + o.write_shift(2, f); + o.write_shift(4, 0); + o.write_shift(4, 64); + o.write_shift(4, 0); + o.write_shift(4, 0); + return o; +} + +/* [MS-XLS] 2.4.189 TODO */ +function parse_Pane(/*blob, length, opts*/) { +} + +/* [MS-XLS] 2.4.122 TODO */ +function parse_Font(blob, length, opts) { + var o = { + dyHeight: blob.read_shift(2), + fl: blob.read_shift(2) + }; + switch((opts && opts.biff) || 8) { + case 2: break; + case 3: case 4: blob.l += 2; break; + default: blob.l += 10; break; + } + o.name = parse_ShortXLUnicodeString(blob, 0, opts); + return o; +} +function write_Font(data, opts) { + var name = data.name || "Arial"; + var b5 = (opts && (opts.biff == 5)), w = (b5 ? (15 + name.length) : (16 + 2 * name.length)); + var o = new_buf(w); + o.write_shift(2, (data.sz || 12) * 20); + o.write_shift(4, 0); + o.write_shift(2, 400); + o.write_shift(4, 0); + o.write_shift(2, 0); + o.write_shift(1, name.length); + if(!b5) o.write_shift(1, 1); + o.write_shift((b5 ? 1 : 2) * name.length, name, (b5 ? "sbcs" : "utf16le")); + return o; +} + +/* [MS-XLS] 2.4.149 */ +function parse_LabelSst(blob) { + var cell = parse_XLSCell(blob); + cell.isst = blob.read_shift(4); + return cell; +} +function write_LabelSst(R, C, v, os ) { + var o = new_buf(10); + write_XLSCell(R, C, os, o); + o.write_shift(4, v); + return o; +} + +/* [MS-XLS] 2.4.148 */ +function parse_Label(blob, length, opts) { + if(opts.biffguess && opts.biff == 2) opts.biff = 5; + var target = blob.l + length; + var cell = parse_XLSCell(blob, 6); + if(opts.biff == 2) blob.l++; + var str = parse_XLUnicodeString(blob, target - blob.l, opts); + cell.val = str; + return cell; +} +function write_Label(R, C, v, os, opts) { + var b8 = !opts || opts.biff == 8; + var o = new_buf(6 + 2 + (+b8) + (1 + b8) * v.length); + write_XLSCell(R, C, os, o); + o.write_shift(2, v.length); + if(b8) o.write_shift(1, 1); + o.write_shift((1 + b8) * v.length, v, b8 ? 'utf16le' : 'sbcs'); + return o; +} + + +/* [MS-XLS] 2.4.126 Number Formats */ +function parse_Format(blob, length, opts) { + var numFmtId = blob.read_shift(2); + var fmtstr = parse_XLUnicodeString2(blob, 0, opts); + return [numFmtId, fmtstr]; +} +function write_Format(i, f, opts, o) { + var b5 = (opts && (opts.biff == 5)); + if(!o) o = new_buf(b5 ? (3 + f.length) : (5 + 2 * f.length)); + o.write_shift(2, i); + o.write_shift((b5 ? 1 : 2), f.length); + if(!b5) o.write_shift(1, 1); + o.write_shift((b5 ? 1 : 2) * f.length, f, (b5 ? 'sbcs' : 'utf16le')); + var out = (o.length > o.l) ? o.slice(0, o.l) : o; + if(out.l == null) out.l = out.length; + return out; +} +var parse_BIFF2Format = parse_XLUnicodeString2; + +/* [MS-XLS] 2.4.90 */ +function parse_Dimensions(blob, length, opts) { + var end = blob.l + length; + var w = opts.biff == 8 || !opts.biff ? 4 : 2; + var r = blob.read_shift(w), R = blob.read_shift(w); + var c = blob.read_shift(2), C = blob.read_shift(2); + blob.l = end; + return {s: {r:r, c:c}, e: {r:R, c:C}}; +} +function write_Dimensions(range, opts) { + var w = opts.biff == 8 || !opts.biff ? 4 : 2; + var o = new_buf(2*w + 6); + o.write_shift(w, range.s.r); + o.write_shift(w, range.e.r + 1); + o.write_shift(2, range.s.c); + o.write_shift(2, range.e.c + 1); + o.write_shift(2, 0); + return o; +} + +/* [MS-XLS] 2.4.220 */ +function parse_RK(blob) { + var rw = blob.read_shift(2), col = blob.read_shift(2); + var rkrec = parse_RkRec(blob); + return {r:rw, c:col, ixfe:rkrec[0], rknum:rkrec[1]}; +} + +/* [MS-XLS] 2.4.175 */ +function parse_MulRk(blob, length) { + var target = blob.l + length - 2; + var rw = blob.read_shift(2), col = blob.read_shift(2); + var rkrecs = []; + while(blob.l < target) rkrecs.push(parse_RkRec(blob)); + if(blob.l !== target) throw new Error("MulRK read error"); + var lastcol = blob.read_shift(2); + if(rkrecs.length != lastcol - col + 1) throw new Error("MulRK length mismatch"); + return {r:rw, c:col, C:lastcol, rkrec:rkrecs}; +} +/* [MS-XLS] 2.4.174 */ +function parse_MulBlank(blob, length) { + var target = blob.l + length - 2; + var rw = blob.read_shift(2), col = blob.read_shift(2); + var ixfes = []; + while(blob.l < target) ixfes.push(blob.read_shift(2)); + if(blob.l !== target) throw new Error("MulBlank read error"); + var lastcol = blob.read_shift(2); + if(ixfes.length != lastcol - col + 1) throw new Error("MulBlank length mismatch"); + return {r:rw, c:col, C:lastcol, ixfe:ixfes}; +} + +/* [MS-XLS] 2.5.20 2.5.249 TODO: interpret values here */ +function parse_CellStyleXF(blob, length, style, opts) { + var o = {}; + var a = blob.read_shift(4), b = blob.read_shift(4); + var c = blob.read_shift(4), d = blob.read_shift(2); + o.patternType = XLSFillPattern[c >> 26]; + + if(!opts.cellStyles) return o; + o.alc = a & 0x07; + o.fWrap = (a >> 3) & 0x01; + o.alcV = (a >> 4) & 0x07; + o.fJustLast = (a >> 7) & 0x01; + o.trot = (a >> 8) & 0xFF; + o.cIndent = (a >> 16) & 0x0F; + o.fShrinkToFit = (a >> 20) & 0x01; + o.iReadOrder = (a >> 22) & 0x02; + o.fAtrNum = (a >> 26) & 0x01; + o.fAtrFnt = (a >> 27) & 0x01; + o.fAtrAlc = (a >> 28) & 0x01; + o.fAtrBdr = (a >> 29) & 0x01; + o.fAtrPat = (a >> 30) & 0x01; + o.fAtrProt = (a >> 31) & 0x01; + + o.dgLeft = b & 0x0F; + o.dgRight = (b >> 4) & 0x0F; + o.dgTop = (b >> 8) & 0x0F; + o.dgBottom = (b >> 12) & 0x0F; + o.icvLeft = (b >> 16) & 0x7F; + o.icvRight = (b >> 23) & 0x7F; + o.grbitDiag = (b >> 30) & 0x03; + + o.icvTop = c & 0x7F; + o.icvBottom = (c >> 7) & 0x7F; + o.icvDiag = (c >> 14) & 0x7F; + o.dgDiag = (c >> 21) & 0x0F; + + o.icvFore = d & 0x7F; + o.icvBack = (d >> 7) & 0x7F; + o.fsxButton = (d >> 14) & 0x01; + return o; +} +//function parse_CellXF(blob, length, opts) {return parse_CellStyleXF(blob,length,0, opts);} +//function parse_StyleXF(blob, length, opts) {return parse_CellStyleXF(blob,length,1, opts);} + +/* [MS-XLS] 2.4.353 TODO: actually do this right */ +function parse_XF(blob, length, opts) { + var o = {}; + o.ifnt = blob.read_shift(2); o.numFmtId = blob.read_shift(2); o.flags = blob.read_shift(2); + o.fStyle = (o.flags >> 2) & 0x01; + length -= 6; + o.data = parse_CellStyleXF(blob, length, o.fStyle, opts); + return o; +} +function write_XF(data, ixfeP, opts, o) { + var b5 = (opts && (opts.biff == 5)); + if(!o) o = new_buf(b5 ? 16 : 20); + o.write_shift(2, 0); + if(data.style) { + o.write_shift(2, (data.numFmtId||0)); + o.write_shift(2, 0xFFF4); + } else { + o.write_shift(2, (data.numFmtId||0)); + o.write_shift(2, (ixfeP<<4)); + } + var f = 0; + if(data.numFmtId > 0 && b5) f |= 0x0400; + o.write_shift(4, f); + o.write_shift(4, 0); + if(!b5) o.write_shift(4, 0); + o.write_shift(2, 0); + return o; +} + +/* [MS-XLS] 2.4.134 */ +function parse_Guts(blob) { + blob.l += 4; + var out = [blob.read_shift(2), blob.read_shift(2)]; + if(out[0] !== 0) out[0]--; + if(out[1] !== 0) out[1]--; + if(out[0] > 7 || out[1] > 7) throw new Error("Bad Gutters: " + out.join("|")); + return out; +} +function write_Guts(guts) { + var o = new_buf(8); + o.write_shift(4, 0); + o.write_shift(2, guts[0] ? guts[0] + 1 : 0); + o.write_shift(2, guts[1] ? guts[1] + 1 : 0); + return o; +} + +/* [MS-XLS] 2.4.24 */ +function parse_BoolErr(blob, length, opts) { + var cell = parse_XLSCell(blob, 6); + if(opts.biff == 2 || length == 9) ++blob.l; + var val = parse_Bes(blob, 2); + cell.val = val; + cell.t = (val === true || val === false) ? 'b' : 'e'; + return cell; +} +function write_BoolErr(R, C, v, os, opts, t) { + var o = new_buf(8); + write_XLSCell(R, C, os, o); + write_Bes(v, t, o); + return o; +} + +/* [MS-XLS] 2.4.180 Number */ +function parse_Number(blob, length, opts) { + if(opts.biffguess && opts.biff == 2) opts.biff = 5; + var cell = parse_XLSCell(blob, 6); + var xnum = parse_Xnum(blob, 8); + cell.val = xnum; + return cell; +} +function write_Number(R, C, v, os) { + var o = new_buf(14); + write_XLSCell(R, C, os, o); + write_Xnum(v, o); + return o; +} + +var parse_XLHeaderFooter = parse_OptXLUnicodeString; // TODO: parse 2.4.136 + +/* [MS-XLS] 2.4.271 */ +function parse_SupBook(blob, length, opts) { + var end = blob.l + length; + var ctab = blob.read_shift(2); + var cch = blob.read_shift(2); + opts.sbcch = cch; + if(cch == 0x0401 || cch == 0x3A01) return [cch, ctab]; + if(cch < 0x01 || cch >0xff) throw new Error("Unexpected SupBook type: "+cch); + var virtPath = parse_XLUnicodeStringNoCch(blob, cch); + /* TODO: 2.5.277 Virtual Path */ + var rgst = []; + while(end > blob.l) rgst.push(parse_XLUnicodeString(blob)); + return [cch, ctab, virtPath, rgst]; +} + +/* [MS-XLS] 2.4.105 TODO */ +function parse_ExternName(blob, length, opts) { + var flags = blob.read_shift(2); + var body; + var o = ({ + fBuiltIn: flags & 0x01, + fWantAdvise: (flags >>> 1) & 0x01, + fWantPict: (flags >>> 2) & 0x01, + fOle: (flags >>> 3) & 0x01, + fOleLink: (flags >>> 4) & 0x01, + cf: (flags >>> 5) & 0x3FF, + fIcon: flags >>> 15 & 0x01 + }); + if(opts.sbcch === 0x3A01) body = parse_AddinUdf(blob, length-2, opts); + //else throw new Error("unsupported SupBook cch: " + opts.sbcch); + o.body = body || blob.read_shift(length-2); + if(typeof body === "string") o.Name = body; + return o; +} + +/* [MS-XLS] 2.4.150 TODO */ +var XLSLblBuiltIn = [ + "_xlnm.Consolidate_Area", + "_xlnm.Auto_Open", + "_xlnm.Auto_Close", + "_xlnm.Extract", + "_xlnm.Database", + "_xlnm.Criteria", + "_xlnm.Print_Area", + "_xlnm.Print_Titles", + "_xlnm.Recorder", + "_xlnm.Data_Form", + "_xlnm.Auto_Activate", + "_xlnm.Auto_Deactivate", + "_xlnm.Sheet_Title", + "_xlnm._FilterDatabase" +]; +function parse_Lbl(blob, length, opts) { + var target = blob.l + length; + var flags = blob.read_shift(2); + var chKey = blob.read_shift(1); + var cch = blob.read_shift(1); + var cce = blob.read_shift(opts && opts.biff == 2 ? 1 : 2); + var itab = 0; + if(!opts || opts.biff >= 5) { + if(opts.biff != 5) blob.l += 2; + itab = blob.read_shift(2); + if(opts.biff == 5) blob.l += 2; + blob.l += 4; + } + var name = parse_XLUnicodeStringNoCch(blob, cch, opts); + if(flags & 0x20) name = XLSLblBuiltIn[name.charCodeAt(0)]; + var npflen = target - blob.l; if(opts && opts.biff == 2) --npflen; + /*jshint -W018 */ + var rgce = (target == blob.l || cce === 0 || !(npflen > 0)) ? [] : parse_NameParsedFormula(blob, npflen, opts, cce); + /*jshint +W018 */ + return { + chKey: chKey, + Name: name, + itab: itab, + rgce: rgce + }; +} + +/* [MS-XLS] 2.4.106 TODO: verify filename encoding */ +function parse_ExternSheet(blob, length, opts) { + if(opts.biff < 8) return parse_BIFF5ExternSheet(blob, length, opts); + var o = [], target = blob.l + length, len = blob.read_shift(opts.biff > 8 ? 4 : 2); + while(len-- !== 0) o.push(parse_XTI(blob, opts.biff > 8 ? 12 : 6, opts)); + // [iSupBook, itabFirst, itabLast]; + if(blob.l != target) throw new Error("Bad ExternSheet: " + blob.l + " != " + target); + return o; +} +function parse_BIFF5ExternSheet(blob, length, opts) { + if(blob[blob.l + 1] == 0x03) blob[blob.l]++; + var o = parse_ShortXLUnicodeString(blob, length, opts); + return o.charCodeAt(0) == 0x03 ? o.slice(1) : o; +} + +/* [MS-XLS] 2.4.176 TODO: check older biff */ +function parse_NameCmt(blob, length, opts) { + if(opts.biff < 8) { blob.l += length; return; } + var cchName = blob.read_shift(2); + var cchComment = blob.read_shift(2); + var name = parse_XLUnicodeStringNoCch(blob, cchName, opts); + var comment = parse_XLUnicodeStringNoCch(blob, cchComment, opts); + return [name, comment]; +} + +/* [MS-XLS] 2.4.260 */ +function parse_ShrFmla(blob, length, opts) { + var ref = parse_RefU(blob, 6); + blob.l++; + var cUse = blob.read_shift(1); + length -= 8; + return [parse_SharedParsedFormula(blob, length, opts), cUse, ref]; +} + +/* [MS-XLS] 2.4.4 TODO */ +function parse_Array(blob, length, opts) { + var ref = parse_Ref(blob, 6); + /* TODO: fAlwaysCalc */ + switch(opts.biff) { + case 2: blob.l ++; length -= 7; break; + case 3: case 4: blob.l += 2; length -= 8; break; + default: blob.l += 6; length -= 12; + } + return [ref, parse_ArrayParsedFormula(blob, length, opts, ref)]; +} + +/* [MS-XLS] 2.4.173 */ +function parse_MTRSettings(blob) { + var fMTREnabled = blob.read_shift(4) !== 0x00; + var fUserSetThreadCount = blob.read_shift(4) !== 0x00; + var cUserThreadCount = blob.read_shift(4); + return [fMTREnabled, fUserSetThreadCount, cUserThreadCount]; +} + +/* [MS-XLS] 2.5.186 TODO: BIFF5 */ +function parse_NoteSh(blob, length, opts) { + if(opts.biff < 8) return; + var row = blob.read_shift(2), col = blob.read_shift(2); + var flags = blob.read_shift(2), idObj = blob.read_shift(2); + var stAuthor = parse_XLUnicodeString2(blob, 0, opts); + if(opts.biff < 8) blob.read_shift(1); + return [{r:row,c:col}, stAuthor, idObj, flags]; +} + +/* [MS-XLS] 2.4.179 */ +function parse_Note(blob, length, opts) { + /* TODO: Support revisions */ + return parse_NoteSh(blob, length, opts); +} + +/* [MS-XLS] 2.4.168 */ +function parse_MergeCells(blob, length) { + var merges = []; + var cmcs = blob.read_shift(2); + while (cmcs--) merges.push(parse_Ref8U(blob,length)); + return merges; +} +function write_MergeCells(merges) { + var o = new_buf(2 + merges.length * 8); + o.write_shift(2, merges.length); + for(var i = 0; i < merges.length; ++i) write_Ref8U(merges[i], o); + return o; +} + +/* [MS-XLS] 2.4.181 TODO: parse all the things! */ +function parse_Obj(blob, length, opts) { + if(opts && opts.biff < 8) return parse_BIFF5Obj(blob, length, opts); + var cmo = parse_FtCmo(blob, 22); // id, ot, flags + var fts = parse_FtArray(blob, length-22, cmo[1]); + return { cmo: cmo, ft:fts }; +} +/* from older spec */ +var parse_BIFF5OT = { +0x08: function(blob, length) { + var tgt = blob.l + length; + blob.l += 10; // todo + var cf = blob.read_shift(2); + blob.l += 4; + blob.l += 2; //var cbPictFmla = blob.read_shift(2); + blob.l += 2; + blob.l += 2; //var grbit = blob.read_shift(2); + blob.l += 4; + var cchName = blob.read_shift(1); + blob.l += cchName; // TODO: stName + blob.l = tgt; // TODO: fmla + return { fmt:cf }; +} +}; + +function parse_BIFF5Obj(blob, length, opts) { + blob.l += 4; //var cnt = blob.read_shift(4); + var ot = blob.read_shift(2); + var id = blob.read_shift(2); + var grbit = blob.read_shift(2); + blob.l += 2; //var colL = blob.read_shift(2); + blob.l += 2; //var dxL = blob.read_shift(2); + blob.l += 2; //var rwT = blob.read_shift(2); + blob.l += 2; //var dyT = blob.read_shift(2); + blob.l += 2; //var colR = blob.read_shift(2); + blob.l += 2; //var dxR = blob.read_shift(2); + blob.l += 2; //var rwB = blob.read_shift(2); + blob.l += 2; //var dyB = blob.read_shift(2); + blob.l += 2; //var cbMacro = blob.read_shift(2); + blob.l += 6; + length -= 36; + var fts = []; + fts.push((parse_BIFF5OT[ot]||parsenoop)(blob, length, opts)); + return { cmo: [id, ot, grbit], ft:fts }; +} + +/* [MS-XLS] 2.4.329 TODO: parse properly */ +function parse_TxO(blob, length, opts) { + var s = blob.l; + var texts = ""; +try { + blob.l += 4; + var ot = (opts.lastobj||{cmo:[0,0]}).cmo[1]; + var controlInfo; // eslint-disable-line no-unused-vars + if([0,5,7,11,12,14].indexOf(ot) == -1) blob.l += 6; + else controlInfo = parse_ControlInfo(blob, 6, opts); // eslint-disable-line no-unused-vars + var cchText = blob.read_shift(2); + /*var cbRuns = */blob.read_shift(2); + /*var ifntEmpty = */parseuint16(blob, 2); + var len = blob.read_shift(2); + blob.l += len; + //var fmla = parse_ObjFmla(blob, s + length - blob.l); + + for(var i = 1; i < blob.lens.length-1; ++i) { + if(blob.l-s != blob.lens[i]) throw new Error("TxO: bad continue record"); + var hdr = blob[blob.l]; + var t = parse_XLUnicodeStringNoCch(blob, blob.lens[i+1]-blob.lens[i]-1); + texts += t; + if(texts.length >= (hdr ? cchText : 2*cchText)) break; + } + if(texts.length !== cchText && texts.length !== cchText*2) { + throw new Error("cchText: " + cchText + " != " + texts.length); + } + + blob.l = s + length; + /* [MS-XLS] 2.5.272 TxORuns */ +// var rgTxoRuns = []; +// for(var j = 0; j != cbRuns/8-1; ++j) blob.l += 8; +// var cchText2 = blob.read_shift(2); +// if(cchText2 !== cchText) throw new Error("TxOLastRun mismatch: " + cchText2 + " " + cchText); +// blob.l += 6; +// if(s + length != blob.l) throw new Error("TxO " + (s + length) + ", at " + blob.l); + return { t: texts }; +} catch(e) { blob.l = s + length; return { t: texts }; } +} + +/* [MS-XLS] 2.4.140 */ +function parse_HLink(blob, length) { + var ref = parse_Ref8U(blob, 8); + blob.l += 16; /* CLSID */ + var hlink = parse_Hyperlink(blob, length-24); + return [ref, hlink]; +} +function write_HLink(hl) { + var O = new_buf(24); + var ref = decode_cell(hl[0]); + O.write_shift(2, ref.r); O.write_shift(2, ref.r); + O.write_shift(2, ref.c); O.write_shift(2, ref.c); + var clsid = "d0 c9 ea 79 f9 ba ce 11 8c 82 00 aa 00 4b a9 0b".split(" "); + for(var i = 0; i < 16; ++i) O.write_shift(1, parseInt(clsid[i], 16)); + return bconcat([O, write_Hyperlink(hl[1])]); +} + + +/* [MS-XLS] 2.4.141 */ +function parse_HLinkTooltip(blob, length) { + blob.read_shift(2); + var ref = parse_Ref8U(blob, 8); + var wzTooltip = blob.read_shift((length-10)/2, 'dbcs-cont'); + wzTooltip = wzTooltip.replace(chr0,""); + return [ref, wzTooltip]; +} +function write_HLinkTooltip(hl) { + var TT = hl[1].Tooltip; + var O = new_buf(10 + 2 * (TT.length + 1)); + O.write_shift(2, 0x0800); + var ref = decode_cell(hl[0]); + O.write_shift(2, ref.r); O.write_shift(2, ref.r); + O.write_shift(2, ref.c); O.write_shift(2, ref.c); + for(var i = 0; i < TT.length; ++i) O.write_shift(2, TT.charCodeAt(i)); + O.write_shift(2, 0); + return O; +} + +/* [MS-XLS] 2.4.63 */ +function parse_Country(blob) { + var o = [0,0], d; + d = blob.read_shift(2); o[0] = CountryEnum[d] || d; + d = blob.read_shift(2); o[1] = CountryEnum[d] || d; + return o; +} +function write_Country(o) { + if(!o) o = new_buf(4); + o.write_shift(2, 0x01); + o.write_shift(2, 0x01); + return o; +} + +/* [MS-XLS] 2.4.50 ClrtClient */ +function parse_ClrtClient(blob) { + var ccv = blob.read_shift(2); + var o = []; + while(ccv-->0) o.push(parse_LongRGB(blob, 8)); + return o; +} + +/* [MS-XLS] 2.4.188 */ +function parse_Palette(blob) { + var ccv = blob.read_shift(2); + var o = []; + while(ccv-->0) o.push(parse_LongRGB(blob, 8)); + return o; +} + +/* [MS-XLS] 2.4.354 */ +function parse_XFCRC(blob) { + blob.l += 2; + var o = {cxfs:0, crc:0}; + o.cxfs = blob.read_shift(2); + o.crc = blob.read_shift(4); + return o; +} + +/* [MS-XLS] 2.4.53 TODO: parse flags */ +/* [MS-XLSB] 2.4.323 TODO: parse flags */ +function parse_ColInfo(blob, length, opts) { + if(!opts.cellStyles) return parsenoop(blob, length); + var w = opts && opts.biff >= 12 ? 4 : 2; + var colFirst = blob.read_shift(w); + var colLast = blob.read_shift(w); + var coldx = blob.read_shift(w); + var ixfe = blob.read_shift(w); + var flags = blob.read_shift(2); + if(w == 2) blob.l += 2; + var o = ({s:colFirst, e:colLast, w:coldx, ixfe:ixfe, flags:flags}); + if(opts.biff >= 5 || !opts.biff) o.level = (flags >> 8) & 0x7; + return o; +} +function write_ColInfo(col, idx) { + var o = new_buf(12); + o.write_shift(2, idx); + o.write_shift(2, idx); + o.write_shift(2, col.width * 256); + o.write_shift(2, 0); + var f = 0; + if(col.hidden) f |= 1; + o.write_shift(1, f); + f = col.level || 0; + o.write_shift(1, f); + o.write_shift(2, 0); + return o; +} + +/* [MS-XLS] 2.4.257 */ +function parse_Setup(blob, length) { + var o = {}; + if(length < 32) return o; + blob.l += 16; + o.header = parse_Xnum(blob, 8); + o.footer = parse_Xnum(blob, 8); + blob.l += 2; + return o; +} + +/* [MS-XLS] 2.4.261 */ +function parse_ShtProps(blob, length, opts) { + var def = {area:false}; + if(opts.biff != 5) { blob.l += length; return def; } + var d = blob.read_shift(1); blob.l += 3; + if((d & 0x10)) def.area = true; + return def; +} + +/* [MS-XLS] 2.4.241 */ +function write_RRTabId(n) { + var out = new_buf(2 * n); + for(var i = 0; i < n; ++i) out.write_shift(2, i+1); + return out; +} + +var parse_Blank = parse_XLSCell; /* [MS-XLS] 2.4.20 Just the cell */ +var parse_Scl = parseuint16a; /* [MS-XLS] 2.4.247 num, den */ +var parse_String = parse_XLUnicodeString; /* [MS-XLS] 2.4.268 */ + +/* --- Specific to versions before BIFF8 --- */ +function parse_ImData(blob) { + var cf = blob.read_shift(2); + var env = blob.read_shift(2); + var lcb = blob.read_shift(4); + var o = {fmt:cf, env:env, len:lcb, data:blob.slice(blob.l,blob.l+lcb)}; + blob.l += lcb; + return o; +} + +/* BIFF2_??? where ??? is the name from [XLS] */ +function parse_BIFF2STR(blob, length, opts) { + if(opts.biffguess && opts.biff == 5) opts.biff = 2; + var cell = parse_XLSCell(blob, 6); + ++blob.l; + var str = parse_XLUnicodeString2(blob, length-7, opts); + cell.t = 'str'; + cell.val = str; + return cell; +} + +function parse_BIFF2NUM(blob) { + var cell = parse_XLSCell(blob, 6); + ++blob.l; + var num = parse_Xnum(blob, 8); + cell.t = 'n'; + cell.val = num; + return cell; +} +function write_BIFF2NUM(r, c, val) { + var out = new_buf(15); + write_BIFF2Cell(out, r, c); + out.write_shift(8, val, 'f'); + return out; +} + +function parse_BIFF2INT(blob) { + var cell = parse_XLSCell(blob, 6); + ++blob.l; + var num = blob.read_shift(2); + cell.t = 'n'; + cell.val = num; + return cell; +} +function write_BIFF2INT(r, c, val) { + var out = new_buf(9); + write_BIFF2Cell(out, r, c); + out.write_shift(2, val); + return out; +} + +function parse_BIFF2STRING(blob) { + var cch = blob.read_shift(1); + if(cch === 0) { blob.l++; return ""; } + return blob.read_shift(cch, 'sbcs-cont'); +} + +/* TODO: convert to BIFF8 font struct */ +function parse_BIFF2FONTXTRA(blob, length) { + blob.l += 6; // unknown + blob.l += 2; // font weight "bls" + blob.l += 1; // charset + blob.l += 3; // unknown + blob.l += 1; // font family + blob.l += length - 13; +} + +/* TODO: parse rich text runs */ +function parse_RString(blob, length, opts) { + var end = blob.l + length; + var cell = parse_XLSCell(blob, 6); + var cch = blob.read_shift(2); + var str = parse_XLUnicodeStringNoCch(blob, cch, opts); + blob.l = end; + cell.t = 'str'; + cell.val = str; + return cell; +} +/* from js-harb (C) 2014-present SheetJS */ +var DBF_SUPPORTED_VERSIONS = [0x02, 0x03, 0x30, 0x31, 0x83, 0x8B, 0x8C, 0xF5]; +var DBF = (function() { +var dbf_codepage_map = { + /* Code Pages Supported by Visual FoxPro */ +0x01: 437, 0x02: 850, +0x03: 1252, 0x04: 10000, +0x64: 852, 0x65: 866, +0x66: 865, 0x67: 861, +0x68: 895, 0x69: 620, +0x6A: 737, 0x6B: 857, +0x78: 950, 0x79: 949, +0x7A: 936, 0x7B: 932, +0x7C: 874, 0x7D: 1255, +0x7E: 1256, 0x96: 10007, +0x97: 10029, 0x98: 10006, +0xC8: 1250, 0xC9: 1251, +0xCA: 1254, 0xCB: 1253, + + /* shapefile DBF extension */ +0x00: 20127, 0x08: 865, +0x09: 437, 0x0A: 850, +0x0B: 437, 0x0D: 437, +0x0E: 850, 0x0F: 437, +0x10: 850, 0x11: 437, +0x12: 850, 0x13: 932, +0x14: 850, 0x15: 437, +0x16: 850, 0x17: 865, +0x18: 437, 0x19: 437, +0x1A: 850, 0x1B: 437, +0x1C: 863, 0x1D: 850, +0x1F: 852, 0x22: 852, +0x23: 852, 0x24: 860, +0x25: 850, 0x26: 866, +0x37: 850, 0x40: 852, +0x4D: 936, 0x4E: 949, +0x4F: 950, 0x50: 874, +0x57: 1252, 0x58: 1252, +0x59: 1252, 0x6C: 863, +0x86: 737, 0x87: 852, +0x88: 857, 0xCC: 1257, + +0xFF: 16969 +}; +var dbf_reverse_map = evert({ +0x01: 437, 0x02: 850, +0x03: 1252, 0x04: 10000, +0x64: 852, 0x65: 866, +0x66: 865, 0x67: 861, +0x68: 895, 0x69: 620, +0x6A: 737, 0x6B: 857, +0x78: 950, 0x79: 949, +0x7A: 936, 0x7B: 932, +0x7C: 874, 0x7D: 1255, +0x7E: 1256, 0x96: 10007, +0x97: 10029, 0x98: 10006, +0xC8: 1250, 0xC9: 1251, +0xCA: 1254, 0xCB: 1253, +0x00: 20127 +}); +/* TODO: find an actual specification */ +function dbf_to_aoa(buf, opts) { + var out = []; + var d = (new_raw_buf(1)); + switch(opts.type) { + case 'base64': d = s2a(Base64_decode(buf)); break; + case 'binary': d = s2a(buf); break; + case 'buffer': + case 'array': d = buf; break; + } + prep_blob(d, 0); + + /* header */ + var ft = d.read_shift(1); + var memo = !!(ft & 0x88); + var vfp = false, l7 = false; + switch(ft) { + case 0x02: break; // dBASE II + case 0x03: break; // dBASE III + case 0x30: vfp = true; memo = true; break; // VFP + case 0x31: vfp = true; memo = true; break; // VFP with autoincrement + // 0x43 dBASE IV SQL table files + // 0x63 dBASE IV SQL system files + case 0x83: break; // dBASE III with memo + case 0x8B: break; // dBASE IV with memo + case 0x8C: l7 = true; break; // dBASE Level 7 with memo + // case 0xCB dBASE IV SQL table files with memo + case 0xF5: break; // FoxPro 2.x with memo + // case 0xFB FoxBASE + default: throw new Error("DBF Unsupported Version: " + ft.toString(16)); + } + + var nrow = 0, fpos = 0x0209; + if(ft == 0x02) nrow = d.read_shift(2); + d.l += 3; // dBASE II stores DDMMYY date, others use YYMMDD + if(ft != 0x02) nrow = d.read_shift(4); + if(nrow > 1048576) nrow = 1e6; + + if(ft != 0x02) fpos = d.read_shift(2); // header length + var rlen = d.read_shift(2); // record length + + var /*flags = 0,*/ current_cp = opts.codepage || 1252; + if(ft != 0x02) { // 20 reserved bytes + d.l+=16; + /*flags = */d.read_shift(1); + //if(memo && ((flags & 0x02) === 0)) throw new Error("DBF Flags " + flags.toString(16) + " ft " + ft.toString(16)); + + /* codepage present in FoxPro and dBASE Level 7 */ + if(d[d.l] !== 0) current_cp = dbf_codepage_map[d[d.l]]; + d.l+=1; + + d.l+=2; + } + if(l7) d.l += 36; // Level 7: 32 byte "Language driver name", 4 byte reserved + +var fields = [], field = ({}); + var hend = Math.min(d.length, (ft == 0x02 ? 0x209 : (fpos - 10 - (vfp ? 264 : 0)))); + var ww = l7 ? 32 : 11; + while(d.l < hend && d[d.l] != 0x0d) { + field = ({}); + field.name = $cptable.utils.decode(current_cp, d.slice(d.l, d.l+ww)).replace(/[\u0000\r\n].*$/g,""); + d.l += ww; + field.type = String.fromCharCode(d.read_shift(1)); + if(ft != 0x02 && !l7) field.offset = d.read_shift(4); + field.len = d.read_shift(1); + if(ft == 0x02) field.offset = d.read_shift(2); + field.dec = d.read_shift(1); + if(field.name.length) fields.push(field); + if(ft != 0x02) d.l += l7 ? 13 : 14; + switch(field.type) { + case 'B': // Double (VFP) / Binary (dBASE L7) + if((!vfp || field.len != 8) && opts.WTF) console.log('Skipping ' + field.name + ':' + field.type); + break; + case 'G': // General (FoxPro and dBASE L7) + case 'P': // Picture (FoxPro and dBASE L7) + if(opts.WTF) console.log('Skipping ' + field.name + ':' + field.type); + break; + case '+': // Autoincrement (dBASE L7 only) + case '0': // _NullFlags (VFP only) + case '@': // Timestamp (dBASE L7 only) + case 'C': // Character (dBASE II) + case 'D': // Date (dBASE III) + case 'F': // Float (dBASE IV) + case 'I': // Long (VFP and dBASE L7) + case 'L': // Logical (dBASE II) + case 'M': // Memo (dBASE III) + case 'N': // Number (dBASE II) + case 'O': // Double (dBASE L7 only) + case 'T': // Datetime (VFP only) + case 'Y': // Currency (VFP only) + break; + default: throw new Error('Unknown Field Type: ' + field.type); + } + } + + if(d[d.l] !== 0x0D) d.l = fpos-1; + if(d.read_shift(1) !== 0x0D) throw new Error("DBF Terminator not found " + d.l + " " + d[d.l]); + d.l = fpos; + + /* data */ + var R = 0, C = 0; + out[0] = []; + for(C = 0; C != fields.length; ++C) out[0][C] = fields[C].name; + while(nrow-- > 0) { + if(d[d.l] === 0x2A) { + // TODO: record marked as deleted -- create a hidden row? + d.l+=rlen; + continue; + } + ++d.l; + out[++R] = []; C = 0; + for(C = 0; C != fields.length; ++C) { + var dd = d.slice(d.l, d.l+fields[C].len); d.l+=fields[C].len; + prep_blob(dd, 0); + var s = $cptable.utils.decode(current_cp, dd); + switch(fields[C].type) { + case 'C': + // NOTE: it is conventional to write ' / / ' for empty dates + if(s.trim().length) out[R][C] = s.replace(/\s+$/,""); + break; + case 'D': + if(s.length === 8) out[R][C] = new Date(+s.slice(0,4), +s.slice(4,6)-1, +s.slice(6,8)); + else out[R][C] = s; + break; + case 'F': out[R][C] = parseFloat(s.trim()); break; + case '+': case 'I': out[R][C] = l7 ? dd.read_shift(-4, 'i') ^ 0x80000000 : dd.read_shift(4, 'i'); break; + case 'L': switch(s.trim().toUpperCase()) { + case 'Y': case 'T': out[R][C] = true; break; + case 'N': case 'F': out[R][C] = false; break; + case '': case '?': break; + default: throw new Error("DBF Unrecognized L:|" + s + "|"); + } break; + case 'M': /* TODO: handle memo files */ + if(!memo) throw new Error("DBF Unexpected MEMO for type " + ft.toString(16)); + out[R][C] = "##MEMO##" + (l7 ? parseInt(s.trim(), 10): dd.read_shift(4)); + break; + case 'N': + s = s.replace(/\u0000/g,"").trim(); + // NOTE: dBASE II interprets " . " as 0 + if(s && s != ".") out[R][C] = +s || 0; break; + case '@': + // NOTE: dBASE specs appear to be incorrect + out[R][C] = new Date(dd.read_shift(-8, 'f') - 0x388317533400); + break; + case 'T': out[R][C] = new Date((dd.read_shift(4) - 0x253D8C) * 0x5265C00 + dd.read_shift(4)); break; + case 'Y': out[R][C] = dd.read_shift(4,'i')/1e4 + (dd.read_shift(4, 'i')/1e4)*Math.pow(2,32); break; + case 'O': out[R][C] = -dd.read_shift(-8, 'f'); break; + case 'B': if(vfp && fields[C].len == 8) { out[R][C] = dd.read_shift(8,'f'); break; } + /* falls through */ + case 'G': case 'P': dd.l += fields[C].len; break; + case '0': + if(fields[C].name === '_NullFlags') break; + /* falls through */ + default: throw new Error("DBF Unsupported data type " + fields[C].type); + } + } + } + if(ft != 0x02) if(d.l < d.length && d[d.l++] != 0x1A) throw new Error("DBF EOF Marker missing " + (d.l-1) + " of " + d.length + " " + d[d.l-1].toString(16)); + if(opts && opts.sheetRows) out = out.slice(0, opts.sheetRows); + opts.DBF = fields; + return out; +} + +function dbf_to_sheet(buf, opts) { + var o = opts || {}; + if(!o.dateNF) o.dateNF = "yyyymmdd"; + var ws = aoa_to_sheet(dbf_to_aoa(buf, o), o); + ws["!cols"] = o.DBF.map(function(field) { return { + wch: field.len, + DBF: field + };}); + delete o.DBF; + return ws; +} + +function dbf_to_workbook(buf, opts) { + try { return sheet_to_workbook(dbf_to_sheet(buf, opts), opts); } + catch(e) { if(opts && opts.WTF) throw e; } + return ({SheetNames:[],Sheets:{}}); +} + +var _RLEN = { 'B': 8, 'C': 250, 'L': 1, 'D': 8, '?': 0, '': 0 }; +function sheet_to_dbf(ws, opts) { + var o = opts || {}; + if(+o.codepage >= 0) set_cp(+o.codepage); + if(o.type == "string") throw new Error("Cannot write DBF to JS string"); + var ba = buf_array(); + var aoa = sheet_to_json(ws, {header:1, raw:true, cellDates:true}); + var headers = aoa[0], data = aoa.slice(1), cols = ws["!cols"] || []; + var i = 0, j = 0, hcnt = 0, rlen = 1; + for(i = 0; i < headers.length; ++i) { + if(((cols[i]||{}).DBF||{}).name) { headers[i] = cols[i].DBF.name; ++hcnt; continue; } + if(headers[i] == null) continue; + ++hcnt; + if(typeof headers[i] === 'number') headers[i] = headers[i].toString(10); + if(typeof headers[i] !== 'string') throw new Error("DBF Invalid column name " + headers[i] + " |" + (typeof headers[i]) + "|"); + if(headers.indexOf(headers[i]) !== i) for(j=0; j<1024;++j) + if(headers.indexOf(headers[i] + "_" + j) == -1) { headers[i] += "_" + j; break; } + } + var range = safe_decode_range(ws['!ref']); + var coltypes = []; + var colwidths = []; + var coldecimals = []; + for(i = 0; i <= range.e.c - range.s.c; ++i) { + var guess = '', _guess = '', maxlen = 0; + var col = []; + for(j=0; j < data.length; ++j) { + if(data[j][i] != null) col.push(data[j][i]); + } + if(col.length == 0 || headers[i] == null) { coltypes[i] = '?'; continue; } + for(j = 0; j < col.length; ++j) { + switch(typeof col[j]) { + /* TODO: check if L2 compat is desired */ + case 'number': _guess = 'B'; break; + case 'string': _guess = 'C'; break; + case 'boolean': _guess = 'L'; break; + case 'object': _guess = col[j] instanceof Date ? 'D' : 'C'; break; + default: _guess = 'C'; + } + maxlen = Math.max(maxlen, String(col[j]).length); + guess = guess && guess != _guess ? 'C' : _guess; + //if(guess == 'C') break; + } + if(maxlen > 250) maxlen = 250; + _guess = ((cols[i]||{}).DBF||{}).type; + /* TODO: more fine grained control over DBF type resolution */ + if(_guess == 'C') { + if(cols[i].DBF.len > maxlen) maxlen = cols[i].DBF.len; + } + if(guess == 'B' && _guess == 'N') { + guess = 'N'; + coldecimals[i] = cols[i].DBF.dec; + maxlen = cols[i].DBF.len; + } + colwidths[i] = guess == 'C' || _guess == 'N' ? maxlen : (_RLEN[guess] || 0); + rlen += colwidths[i]; + coltypes[i] = guess; + } + + var h = ba.next(32); + h.write_shift(4, 0x13021130); + h.write_shift(4, data.length); + h.write_shift(2, 296 + 32 * hcnt); + h.write_shift(2, rlen); + for(i=0; i < 4; ++i) h.write_shift(4, 0); + h.write_shift(4, 0x00000000 | ((+dbf_reverse_map[current_ansi] || 0x03)<<8)); + + for(i = 0, j = 0; i < headers.length; ++i) { + if(headers[i] == null) continue; + var hf = ba.next(32); + var _f = (headers[i].slice(-10) + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00").slice(0, 11); + hf.write_shift(1, _f, "sbcs"); + hf.write_shift(1, coltypes[i] == '?' ? 'C' : coltypes[i], "sbcs"); + hf.write_shift(4, j); + hf.write_shift(1, colwidths[i] || _RLEN[coltypes[i]] || 0); + hf.write_shift(1, coldecimals[i] || 0); + hf.write_shift(1, 0x02); + hf.write_shift(4, 0); + hf.write_shift(1, 0); + hf.write_shift(4, 0); + hf.write_shift(4, 0); + j += (colwidths[i] || _RLEN[coltypes[i]] || 0); + } + + var hb = ba.next(264); + hb.write_shift(4, 0x0000000D); + for(i=0; i < 65;++i) hb.write_shift(4, 0x00000000); + for(i=0; i < data.length; ++i) { + var rout = ba.next(rlen); + rout.write_shift(1, 0); + for(j=0; j":190, "?":191, "{":223 + }); + var sylk_char_regex = new RegExp("\u001BN(" + keys(sylk_escapes).join("|").replace(/\|\|\|/, "|\\||").replace(/([?()+])/g,"\\$1") + "|\\|)", "gm"); + var sylk_char_fn = function(_, $1){ var o = sylk_escapes[$1]; return typeof o == "number" ? _getansi(o) : o; }; + var decode_sylk_char = function($$, $1, $2) { var newcc = (($1.charCodeAt(0) - 0x20)<<4) | ($2.charCodeAt(0) - 0x30); return newcc == 59 ? $$ : _getansi(newcc); }; + sylk_escapes["|"] = 254; + /* TODO: find an actual specification */ + function sylk_to_aoa(d, opts) { + switch(opts.type) { + case 'base64': return sylk_to_aoa_str(Base64_decode(d), opts); + case 'binary': return sylk_to_aoa_str(d, opts); + case 'buffer': return sylk_to_aoa_str(has_buf && Buffer.isBuffer(d) ? d.toString('binary') : a2s(d), opts); + case 'array': return sylk_to_aoa_str(cc2str(d), opts); + } + throw new Error("Unrecognized type " + opts.type); + } + function sylk_to_aoa_str(str, opts) { + var records = str.split(/[\n\r]+/), R = -1, C = -1, ri = 0, rj = 0, arr = []; + var formats = []; + var next_cell_format = null; + var sht = {}, rowinfo = [], colinfo = [], cw = []; + var Mval = 0, j; + if(+opts.codepage >= 0) set_cp(+opts.codepage); + for (; ri !== records.length; ++ri) { + Mval = 0; + var rstr=records[ri].trim().replace(/\x1B([\x20-\x2F])([\x30-\x3F])/g, decode_sylk_char).replace(sylk_char_regex, sylk_char_fn); + var record=rstr.replace(/;;/g, "\u0000").split(";").map(function(x) { return x.replace(/\u0000/g, ";"); }); + var RT=record[0], val; + if(rstr.length > 0) switch(RT) { + case 'ID': break; /* header */ + case 'E': break; /* EOF */ + case 'B': break; /* dimensions */ + case 'O': break; /* options? */ + case 'W': break; /* window? */ + case 'P': + if(record[1].charAt(0) == 'P') + formats.push(rstr.slice(3).replace(/;;/g, ";")); + break; + case 'C': + var C_seen_K = false, C_seen_X = false, C_seen_S = false, C_seen_E = false, _R = -1, _C = -1; + for(rj=1; rj -1 && arr[_R][_C]; + if(!shrbase || !shrbase[1]) throw new Error("SYLK shared formula cannot find base"); + arr[R][C][1] = shift_formula_str(shrbase[1], {r: R - _R, c: C - _C}); + } + break; + case 'F': + var F_seen = 0; + for(rj=1; rj 0) { rowinfo[R].hpt = Mval; rowinfo[R].hpx = pt2px(Mval); } + else if(Mval === 0) rowinfo[R].hidden = true; + break; + default: if(opts && opts.WTF) throw new Error("SYLK bad record " + rstr); + } + if(F_seen < 1) next_cell_format = null; break; + default: if(opts && opts.WTF) throw new Error("SYLK bad record " + rstr); + } + } + if(rowinfo.length > 0) sht['!rows'] = rowinfo; + if(colinfo.length > 0) sht['!cols'] = colinfo; + if(opts && opts.sheetRows) arr = arr.slice(0, opts.sheetRows); + return [arr, sht]; + } + + function sylk_to_sheet(d, opts) { + var aoasht = sylk_to_aoa(d, opts); + var aoa = aoasht[0], ws = aoasht[1]; + var o = aoa_to_sheet(aoa, opts); + keys(ws).forEach(function(k) { o[k] = ws[k]; }); + return o; + } + + function sylk_to_workbook(d, opts) { return sheet_to_workbook(sylk_to_sheet(d, opts), opts); } + + function write_ws_cell_sylk(cell, ws, R, C) { + var o = "C;Y" + (R+1) + ";X" + (C+1) + ";K"; + switch(cell.t) { + case 'n': + o += (cell.v||0); + if(cell.f && !cell.F) o += ";E" + a1_to_rc(cell.f, {r:R, c:C}); break; + case 'b': o += cell.v ? "TRUE" : "FALSE"; break; + case 'e': o += cell.w || cell.v; break; + case 'd': o += '"' + (cell.w || cell.v) + '"'; break; + case 's': o += '"' + cell.v.replace(/"/g,"").replace(/;/g, ";;") + '"'; break; + } + return o; + } + + function write_ws_cols_sylk(out, cols) { + cols.forEach(function(col, i) { + var rec = "F;W" + (i+1) + " " + (i+1) + " "; + if(col.hidden) rec += "0"; + else { + if(typeof col.width == 'number' && !col.wpx) col.wpx = width2px(col.width); + if(typeof col.wpx == 'number' && !col.wch) col.wch = px2char(col.wpx); + if(typeof col.wch == 'number') rec += Math.round(col.wch); + } + if(rec.charAt(rec.length - 1) != " ") out.push(rec); + }); + } + + function write_ws_rows_sylk(out, rows) { + rows.forEach(function(row, i) { + var rec = "F;"; + if(row.hidden) rec += "M0;"; + else if(row.hpt) rec += "M" + 20 * row.hpt + ";"; + else if(row.hpx) rec += "M" + 20 * px2pt(row.hpx) + ";"; + if(rec.length > 2) out.push(rec + "R" + (i+1)); + }); + } + + function sheet_to_sylk(ws, opts) { + var preamble = ["ID;PWXL;N;E"], o = []; + var r = safe_decode_range(ws['!ref']), cell; + var dense = Array.isArray(ws); + var RS = "\r\n"; + + preamble.push("P;PGeneral"); + preamble.push("F;P0;DG0G8;M255"); + if(ws['!cols']) write_ws_cols_sylk(preamble, ws['!cols']); + if(ws['!rows']) write_ws_rows_sylk(preamble, ws['!rows']); + + preamble.push("B;Y" + (r.e.r - r.s.r + 1) + ";X" + (r.e.c - r.s.c + 1) + ";D" + [r.s.c,r.s.r,r.e.c,r.e.r].join(" ")); + for(var R = r.s.r; R <= r.e.r; ++R) { + for(var C = r.s.c; C <= r.e.c; ++C) { + var coord = encode_cell({r:R,c:C}); + cell = dense ? (ws[R]||[])[C]: ws[coord]; + if(!cell || (cell.v == null && (!cell.f || cell.F))) continue; + o.push(write_ws_cell_sylk(cell, ws, R, C, opts)); + } + } + return preamble.join(RS) + RS + o.join(RS) + RS + "E" + RS; + } + + return { + to_workbook: sylk_to_workbook, + to_sheet: sylk_to_sheet, + from_sheet: sheet_to_sylk + }; +})(); + +var DIF = (function() { + function dif_to_aoa(d, opts) { + switch(opts.type) { + case 'base64': return dif_to_aoa_str(Base64_decode(d), opts); + case 'binary': return dif_to_aoa_str(d, opts); + case 'buffer': return dif_to_aoa_str(has_buf && Buffer.isBuffer(d) ? d.toString('binary') : a2s(d), opts); + case 'array': return dif_to_aoa_str(cc2str(d), opts); + } + throw new Error("Unrecognized type " + opts.type); + } + function dif_to_aoa_str(str, opts) { + var records = str.split('\n'), R = -1, C = -1, ri = 0, arr = []; + for (; ri !== records.length; ++ri) { + if (records[ri].trim() === 'BOT') { arr[++R] = []; C = 0; continue; } + if (R < 0) continue; + var metadata = records[ri].trim().split(","); + var type = metadata[0], value = metadata[1]; + ++ri; + var data = records[ri] || ""; + while(((data.match(/["]/g)||[]).length & 1) && ri < records.length - 1) data += "\n" + records[++ri]; + data = data.trim(); + switch (+type) { + case -1: + if (data === 'BOT') { arr[++R] = []; C = 0; continue; } + else if (data !== 'EOD') throw new Error("Unrecognized DIF special command " + data); + break; + case 0: + if(data === 'TRUE') arr[R][C] = true; + else if(data === 'FALSE') arr[R][C] = false; + else if(!isNaN(fuzzynum(value))) arr[R][C] = fuzzynum(value); + else if(!isNaN(fuzzydate(value).getDate())) arr[R][C] = parseDate(value); + else arr[R][C] = value; + ++C; break; + case 1: + data = data.slice(1,data.length-1); + data = data.replace(/""/g, '"'); + if(DIF_XL && data && data.match(/^=".*"$/)) data = data.slice(2, -1); + arr[R][C++] = data !== '' ? data : null; + break; + } + if (data === 'EOD') break; + } + if(opts && opts.sheetRows) arr = arr.slice(0, opts.sheetRows); + return arr; + } + + function dif_to_sheet(str, opts) { return aoa_to_sheet(dif_to_aoa(str, opts), opts); } + function dif_to_workbook(str, opts) { return sheet_to_workbook(dif_to_sheet(str, opts), opts); } + + var sheet_to_dif = (function() { + var push_field = function pf(o, topic, v, n, s) { + o.push(topic); + o.push(v + "," + n); + o.push('"' + s.replace(/"/g,'""') + '"'); + }; + var push_value = function po(o, type, v, s) { + o.push(type + "," + v); + o.push(type == 1 ? '"' + s.replace(/"/g,'""') + '"' : s); + }; + return function sheet_to_dif(ws) { + var o = []; + var r = safe_decode_range(ws['!ref']), cell; + var dense = Array.isArray(ws); + push_field(o, "TABLE", 0, 1, "sheetjs"); + push_field(o, "VECTORS", 0, r.e.r - r.s.r + 1,""); + push_field(o, "TUPLES", 0, r.e.c - r.s.c + 1,""); + push_field(o, "DATA", 0, 0,""); + for(var R = r.s.r; R <= r.e.r; ++R) { + push_value(o, -1, 0, "BOT"); + for(var C = r.s.c; C <= r.e.c; ++C) { + var coord = encode_cell({r:R,c:C}); + cell = dense ? (ws[R]||[])[C] : ws[coord]; + if(!cell) { push_value(o, 1, 0, ""); continue;} + switch(cell.t) { + case 'n': + var val = DIF_XL ? cell.w : cell.v; + if(!val && cell.v != null) val = cell.v; + if(val == null) { + if(DIF_XL && cell.f && !cell.F) push_value(o, 1, 0, "=" + cell.f); + else push_value(o, 1, 0, ""); + } + else push_value(o, 0, val, "V"); + break; + case 'b': + push_value(o, 0, cell.v ? 1 : 0, cell.v ? "TRUE" : "FALSE"); + break; + case 's': + push_value(o, 1, 0, (!DIF_XL || isNaN(cell.v)) ? cell.v : '="' + cell.v + '"'); + break; + case 'd': + if(!cell.w) cell.w = SSF_format(cell.z || table_fmt[14], datenum(parseDate(cell.v))); + if(DIF_XL) push_value(o, 0, cell.w, "V"); + else push_value(o, 1, 0, cell.w); + break; + default: push_value(o, 1, 0, ""); + } + } + } + push_value(o, -1, 0, "EOD"); + var RS = "\r\n"; + var oo = o.join(RS); + //while((oo.length & 0x7F) != 0) oo += "\0"; + return oo; + }; + })(); + return { + to_workbook: dif_to_workbook, + to_sheet: dif_to_sheet, + from_sheet: sheet_to_dif + }; +})(); + +var ETH = (function() { + function decode(s) { return s.replace(/\\b/g,"\\").replace(/\\c/g,":").replace(/\\n/g,"\n"); } + function encode(s) { return s.replace(/\\/g, "\\b").replace(/:/g, "\\c").replace(/\n/g,"\\n"); } + + function eth_to_aoa(str, opts) { + var records = str.split('\n'), R = -1, C = -1, ri = 0, arr = []; + for (; ri !== records.length; ++ri) { + var record = records[ri].trim().split(":"); + if(record[0] !== 'cell') continue; + var addr = decode_cell(record[1]); + if(arr.length <= addr.r) for(R = arr.length; R <= addr.r; ++R) if(!arr[R]) arr[R] = []; + R = addr.r; C = addr.c; + switch(record[2]) { + case 't': arr[R][C] = decode(record[3]); break; + case 'v': arr[R][C] = +record[3]; break; + case 'vtf': var _f = record[record.length - 1]; + /* falls through */ + case 'vtc': + switch(record[3]) { + case 'nl': arr[R][C] = +record[4] ? true : false; break; + default: arr[R][C] = +record[4]; break; + } + if(record[2] == 'vtf') arr[R][C] = [arr[R][C], _f]; + } + } + if(opts && opts.sheetRows) arr = arr.slice(0, opts.sheetRows); + return arr; + } + + function eth_to_sheet(d, opts) { return aoa_to_sheet(eth_to_aoa(d, opts), opts); } + function eth_to_workbook(d, opts) { return sheet_to_workbook(eth_to_sheet(d, opts), opts); } + + var header = [ + "socialcalc:version:1.5", + "MIME-Version: 1.0", + "Content-Type: multipart/mixed; boundary=SocialCalcSpreadsheetControlSave" + ].join("\n"); + + var sep = [ + "--SocialCalcSpreadsheetControlSave", + "Content-type: text/plain; charset=UTF-8" + ].join("\n") + "\n"; + + /* TODO: the other parts */ + var meta = [ + "# SocialCalc Spreadsheet Control Save", + "part:sheet" + ].join("\n"); + + var end = "--SocialCalcSpreadsheetControlSave--"; + + function sheet_to_eth_data(ws) { + if(!ws || !ws['!ref']) return ""; + var o = [], oo = [], cell, coord = ""; + var r = decode_range(ws['!ref']); + var dense = Array.isArray(ws); + for(var R = r.s.r; R <= r.e.r; ++R) { + for(var C = r.s.c; C <= r.e.c; ++C) { + coord = encode_cell({r:R,c:C}); + cell = dense ? (ws[R]||[])[C] : ws[coord]; + if(!cell || cell.v == null || cell.t === 'z') continue; + oo = ["cell", coord, 't']; + switch(cell.t) { + case 's': case 'str': oo.push(encode(cell.v)); break; + case 'n': + if(!cell.f) { oo[2]='v'; oo[3]=cell.v; } + else { oo[2]='vtf'; oo[3]='n'; oo[4]=cell.v; oo[5]=encode(cell.f); } + break; + case 'b': + oo[2] = 'vt'+(cell.f?'f':'c'); oo[3]='nl'; oo[4]=cell.v?"1":"0"; + oo[5] = encode(cell.f||(cell.v?'TRUE':'FALSE')); + break; + case 'd': + var t = datenum(parseDate(cell.v)); + oo[2] = 'vtc'; oo[3] = 'nd'; oo[4] = ""+t; + oo[5] = cell.w || SSF_format(cell.z || table_fmt[14], t); + break; + case 'e': continue; + } + o.push(oo.join(":")); + } + } + o.push("sheet:c:" + (r.e.c-r.s.c+1) + ":r:" + (r.e.r-r.s.r+1) + ":tvf:1"); + o.push("valueformat:1:text-wiki"); + //o.push("copiedfrom:" + ws['!ref']); // clipboard only + return o.join("\n"); + } + + function sheet_to_eth(ws) { + return [header, sep, meta, sep, sheet_to_eth_data(ws), end].join("\n"); + // return ["version:1.5", sheet_to_eth_data(ws)].join("\n"); // clipboard form + } + + return { + to_workbook: eth_to_workbook, + to_sheet: eth_to_sheet, + from_sheet: sheet_to_eth + }; +})(); + +var PRN = (function() { + function set_text_arr(data, arr, R, C, o) { + if(o.raw) arr[R][C] = data; + else if(data === ""){/* empty */} + else if(data === 'TRUE') arr[R][C] = true; + else if(data === 'FALSE') arr[R][C] = false; + else if(!isNaN(fuzzynum(data))) arr[R][C] = fuzzynum(data); + else if(!isNaN(fuzzydate(data).getDate())) arr[R][C] = parseDate(data); + else arr[R][C] = data; + } + + function prn_to_aoa_str(f, opts) { + var o = opts || {}; + var arr = ([]); + if(!f || f.length === 0) return arr; + var lines = f.split(/[\r\n]/); + var L = lines.length - 1; + while(L >= 0 && lines[L].length === 0) --L; + var start = 10, idx = 0; + var R = 0; + for(; R <= L; ++R) { + idx = lines[R].indexOf(" "); + if(idx == -1) idx = lines[R].length; else idx++; + start = Math.max(start, idx); + } + for(R = 0; R <= L; ++R) { + arr[R] = []; + /* TODO: confirm that widths are always 10 */ + var C = 0; + set_text_arr(lines[R].slice(0, start).trim(), arr, R, C, o); + for(C = 1; C <= (lines[R].length - start)/10 + 1; ++C) + set_text_arr(lines[R].slice(start+(C-1)*10,start+C*10).trim(),arr,R,C,o); + } + if(o.sheetRows) arr = arr.slice(0, o.sheetRows); + return arr; + } + + // List of accepted CSV separators + var guess_seps = { +0x2C: ',', +0x09: "\t", +0x3B: ';', +0x7C: '|' + }; + + // CSV separator weights to be used in case of equal numbers + var guess_sep_weights = { +0x2C: 3, +0x09: 2, +0x3B: 1, +0x7C: 0 + }; + + function guess_sep(str) { + var cnt = {}, instr = false, end = 0, cc = 0; + for(;end < str.length;++end) { + if((cc=str.charCodeAt(end)) == 0x22) instr = !instr; + else if(!instr && cc in guess_seps) cnt[cc] = (cnt[cc]||0)+1; + } + + cc = []; + for(end in cnt) if ( Object.prototype.hasOwnProperty.call(cnt, end) ) { + cc.push([ cnt[end], end ]); + } + + if ( !cc.length ) { + cnt = guess_sep_weights; + for(end in cnt) if ( Object.prototype.hasOwnProperty.call(cnt, end) ) { + cc.push([ cnt[end], end ]); + } + } + + cc.sort(function(a, b) { return a[0] - b[0] || guess_sep_weights[a[1]] - guess_sep_weights[b[1]]; }); + + return guess_seps[cc.pop()[1]] || 0x2C; + } + + function dsv_to_sheet_str(str, opts) { + var o = opts || {}; + var sep = ""; + if(DENSE != null && o.dense == null) o.dense = DENSE; + var ws = o.dense ? ([]) : ({}); + var range = ({s: {c:0, r:0}, e: {c:0, r:0}}); + + if(str.slice(0,4) == "sep=") { + // If the line ends in \r\n + if(str.charCodeAt(5) == 13 && str.charCodeAt(6) == 10 ) { + sep = str.charAt(4); str = str.slice(7); + } + // If line ends in \r OR \n + else if(str.charCodeAt(5) == 13 || str.charCodeAt(5) == 10 ) { + sep = str.charAt(4); str = str.slice(6); + } + else sep = guess_sep(str.slice(0,1024)); + } + else if(o && o.FS) sep = o.FS; + else sep = guess_sep(str.slice(0,1024)); + var R = 0, C = 0, v = 0; + var start = 0, end = 0, sepcc = sep.charCodeAt(0), instr = false, cc=0, startcc=str.charCodeAt(0); + str = str.replace(/\r\n/mg, "\n"); + var _re = o.dateNF != null ? dateNF_regex(o.dateNF) : null; + function finish_cell() { + var s = str.slice(start, end); + var cell = ({}); + if(s.charAt(0) == '"' && s.charAt(s.length - 1) == '"') s = s.slice(1,-1).replace(/""/g,'"'); + if(s.length === 0) cell.t = 'z'; + else if(o.raw) { cell.t = 's'; cell.v = s; } + else if(s.trim().length === 0) { cell.t = 's'; cell.v = s; } + else if(s.charCodeAt(0) == 0x3D) { + if(s.charCodeAt(1) == 0x22 && s.charCodeAt(s.length - 1) == 0x22) { cell.t = 's'; cell.v = s.slice(2,-1).replace(/""/g,'"'); } + else if(fuzzyfmla(s)) { cell.t = 'n'; cell.f = s.slice(1); } + else { cell.t = 's'; cell.v = s; } } + else if(s == "TRUE") { cell.t = 'b'; cell.v = true; } + else if(s == "FALSE") { cell.t = 'b'; cell.v = false; } + else if(!isNaN(v = fuzzynum(s))) { cell.t = 'n'; if(o.cellText !== false) cell.w = s; cell.v = v; } + else if(!isNaN(fuzzydate(s).getDate()) || _re && s.match(_re)) { + cell.z = o.dateNF || table_fmt[14]; + var k = 0; + if(_re && s.match(_re)){ s=dateNF_fix(s, o.dateNF, (s.match(_re)||[])); k=1; } + if(o.cellDates) { cell.t = 'd'; cell.v = parseDate(s, k); } + else { cell.t = 'n'; cell.v = datenum(parseDate(s, k)); } + if(o.cellText !== false) cell.w = SSF_format(cell.z, cell.v instanceof Date ? datenum(cell.v):cell.v); + if(!o.cellNF) delete cell.z; + } else { + cell.t = 's'; + cell.v = s; + } + if(cell.t == 'z'){} + else if(o.dense) { if(!ws[R]) ws[R] = []; ws[R][C] = cell; } + else ws[encode_cell({c:C,r:R})] = cell; + start = end+1; startcc = str.charCodeAt(start); + if(range.e.c < C) range.e.c = C; + if(range.e.r < R) range.e.r = R; + if(cc == sepcc) ++C; else { C = 0; ++R; if(o.sheetRows && o.sheetRows <= R) return true; } + } + outer: for(;end < str.length;++end) switch((cc=str.charCodeAt(end))) { + case 0x22: if(startcc === 0x22) instr = !instr; break; + case sepcc: case 0x0a: case 0x0d: if(!instr && finish_cell()) break outer; break; + default: break; + } + if(end - start > 0) finish_cell(); + + ws['!ref'] = encode_range(range); + return ws; + } + + function prn_to_sheet_str(str, opts) { + if(!(opts && opts.PRN)) return dsv_to_sheet_str(str, opts); + if(opts.FS) return dsv_to_sheet_str(str, opts); + if(str.slice(0,4) == "sep=") return dsv_to_sheet_str(str, opts); + if(str.indexOf("\t") >= 0 || str.indexOf(",") >= 0 || str.indexOf(";") >= 0) return dsv_to_sheet_str(str, opts); + return aoa_to_sheet(prn_to_aoa_str(str, opts), opts); + } + + function prn_to_sheet(d, opts) { + var str = "", bytes = opts.type == 'string' ? [0,0,0,0] : firstbyte(d, opts); + switch(opts.type) { + case 'base64': str = Base64_decode(d); break; + case 'binary': str = d; break; + case 'buffer': + if(opts.codepage == 65001) str = d.toString('utf8'); // TODO: test if buf + else if(opts.codepage && typeof $cptable !== 'undefined') str = $cptable.utils.decode(opts.codepage, d); + else str = has_buf && Buffer.isBuffer(d) ? d.toString('binary') : a2s(d); + break; + case 'array': str = cc2str(d); break; + case 'string': str = d; break; + default: throw new Error("Unrecognized type " + opts.type); + } + if(bytes[0] == 0xEF && bytes[1] == 0xBB && bytes[2] == 0xBF) str = utf8read(str.slice(3)); + else if(opts.type != 'string' && opts.type != 'buffer' && opts.codepage == 65001) str = utf8read(str); + else if((opts.type == 'binary') && typeof $cptable !== 'undefined' && opts.codepage) str = $cptable.utils.decode(opts.codepage, $cptable.utils.encode(28591,str)); + if(str.slice(0,19) == "socialcalc:version:") return ETH.to_sheet(opts.type == 'string' ? str : utf8read(str), opts); + return prn_to_sheet_str(str, opts); + } + + function prn_to_workbook(d, opts) { return sheet_to_workbook(prn_to_sheet(d, opts), opts); } + + function sheet_to_prn(ws) { + var o = []; + var r = safe_decode_range(ws['!ref']), cell; + var dense = Array.isArray(ws); + for(var R = r.s.r; R <= r.e.r; ++R) { + var oo = []; + for(var C = r.s.c; C <= r.e.c; ++C) { + var coord = encode_cell({r:R,c:C}); + cell = dense ? (ws[R]||[])[C] : ws[coord]; + if(!cell || cell.v == null) { oo.push(" "); continue; } + var w = (cell.w || (format_cell(cell), cell.w) || "").slice(0,10); + while(w.length < 10) w += " "; + oo.push(w + (C === 0 ? " " : "")); + } + o.push(oo.join("")); + } + return o.join("\n"); + } + + return { + to_workbook: prn_to_workbook, + to_sheet: prn_to_sheet, + from_sheet: sheet_to_prn + }; +})(); + +/* Excel defaults to SYLK but warns if data is not valid */ +function read_wb_ID(d, opts) { + var o = opts || {}, OLD_WTF = !!o.WTF; o.WTF = true; + try { + var out = SYLK.to_workbook(d, o); + o.WTF = OLD_WTF; + return out; + } catch(e) { + o.WTF = OLD_WTF; + if(!e.message.match(/SYLK bad record ID/) && OLD_WTF) throw e; + return PRN.to_workbook(d, opts); + } +} + +var WK_ = (function() { + function lotushopper(data, cb, opts) { + if(!data) return; + prep_blob(data, data.l || 0); + var Enum = opts.Enum || WK1Enum; + while(data.l < data.length) { + var RT = data.read_shift(2); + var R = Enum[RT] || Enum[0xFFFF]; + var length = data.read_shift(2); + var tgt = data.l + length; + var d = R.f && R.f(data, length, opts); + data.l = tgt; + if(cb(d, R, RT)) return; + } + } + + function lotus_to_workbook(d, opts) { + switch(opts.type) { + case 'base64': return lotus_to_workbook_buf(s2a(Base64_decode(d)), opts); + case 'binary': return lotus_to_workbook_buf(s2a(d), opts); + case 'buffer': + case 'array': return lotus_to_workbook_buf(d, opts); + } + throw "Unsupported type " + opts.type; + } + + function lotus_to_workbook_buf(d, opts) { + if(!d) return d; + var o = opts || {}; + if(DENSE != null && o.dense == null) o.dense = DENSE; + var s = ((o.dense ? [] : {})), n = "Sheet1", next_n = "", sidx = 0; + var sheets = {}, snames = [], realnames = []; + + var refguess = {s: {r:0, c:0}, e: {r:0, c:0} }; + var sheetRows = o.sheetRows || 0; + + if(d[2] == 0x00) { + if(d[3] == 0x08 || d[3] == 0x09) { + if(d.length >= 16 && d[14] == 0x05 && d[15] === 0x6c) throw new Error("Unsupported Works 3 for Mac file"); + } + } + + if(d[2] == 0x02) { + o.Enum = WK1Enum; + lotushopper(d, function(val, R, RT) { switch(RT) { + case 0x00: /* BOF */ + o.vers = val; + if(val >= 0x1000) o.qpro = true; + break; + case 0x06: refguess = val; break; /* RANGE */ + case 0xCC: if(val) next_n = val; break; /* SHEETNAMECS */ + case 0xDE: next_n = val; break; /* SHEETNAMELP */ + case 0x0F: /* LABEL */ + case 0x33: /* STRING */ + if(!o.qpro) val[1].v = val[1].v.slice(1); + /* falls through */ + case 0x0D: /* INTEGER */ + case 0x0E: /* NUMBER */ + case 0x10: /* FORMULA */ + /* TODO: actual translation of the format code */ + if(RT == 0x0E && (val[2] & 0x70) == 0x70 && (val[2] & 0x0F) > 1 && (val[2] & 0x0F) < 15) { + val[1].z = o.dateNF || table_fmt[14]; + if(o.cellDates) { val[1].t = 'd'; val[1].v = numdate(val[1].v); } + } + + if(o.qpro) { + if(val[3] > sidx) { + s["!ref"] = encode_range(refguess); + sheets[n] = s; + snames.push(n); + s = (o.dense ? [] : {}); + refguess = {s: {r:0, c:0}, e: {r:0, c:0} }; + sidx = val[3]; n = next_n || "Sheet" + (sidx + 1); next_n = ""; + } + } + + var tmpcell = o.dense ? (s[val[0].r]||[])[val[0].c] : s[encode_cell(val[0])]; + if(tmpcell) { + tmpcell.t = val[1].t; tmpcell.v = val[1].v; + if(val[1].z != null) tmpcell.z = val[1].z; + if(val[1].f != null) tmpcell.f = val[1].f; + break; + } + if(o.dense) { + if(!s[val[0].r]) s[val[0].r] = []; + s[val[0].r][val[0].c] = val[1]; + } else s[encode_cell(val[0])] = val[1]; + break; + default: + }}, o); + } else if(d[2] == 0x1A || d[2] == 0x0E) { + o.Enum = WK3Enum; + if(d[2] == 0x0E) { o.qpro = true; d.l = 0; } + lotushopper(d, function(val, R, RT) { switch(RT) { + case 0xCC: n = val; break; /* SHEETNAMECS */ + case 0x16: /* LABEL16 */ + val[1].v = val[1].v.slice(1); + /* falls through */ + case 0x17: /* NUMBER17 */ + case 0x18: /* NUMBER18 */ + case 0x19: /* FORMULA19 */ + case 0x25: /* NUMBER25 */ + case 0x27: /* NUMBER27 */ + case 0x28: /* FORMULA28 */ + if(val[3] > sidx) { + s["!ref"] = encode_range(refguess); + sheets[n] = s; + snames.push(n); + s = (o.dense ? [] : {}); + refguess = {s: {r:0, c:0}, e: {r:0, c:0} }; + sidx = val[3]; n = "Sheet" + (sidx + 1); + } + if(sheetRows > 0 && val[0].r >= sheetRows) break; + if(o.dense) { + if(!s[val[0].r]) s[val[0].r] = []; + s[val[0].r][val[0].c] = val[1]; + } else s[encode_cell(val[0])] = val[1]; + if(refguess.e.c < val[0].c) refguess.e.c = val[0].c; + if(refguess.e.r < val[0].r) refguess.e.r = val[0].r; + break; + case 0x1B: /* XFORMAT */ + if(val[0x36b0]) realnames[val[0x36b0][0]] = val[0x36b0][1]; + break; + case 0x0601: /* SHEETINFOQP */ + realnames[val[0]] = val[1]; if(val[0] == sidx) n = val[1]; break; + default: break; + }}, o); + } else throw new Error("Unrecognized LOTUS BOF " + d[2]); + s["!ref"] = encode_range(refguess); + sheets[next_n || n] = s; + snames.push(next_n || n); + if(!realnames.length) return { SheetNames: snames, Sheets: sheets }; + var osheets = {}, rnames = []; + /* TODO: verify no collisions */ + for(var i = 0; i < realnames.length; ++i) if(sheets[snames[i]]) { + rnames.push(realnames[i] || snames[i]); + osheets[realnames[i]] = sheets[realnames[i]] || sheets[snames[i]]; + } else { + rnames.push(realnames[i]); + osheets[realnames[i]] = ({ "!ref": "A1" }); + } + return { SheetNames: rnames, Sheets: osheets }; + } + + function sheet_to_wk1(ws, opts) { + var o = opts || {}; + if(+o.codepage >= 0) set_cp(+o.codepage); + if(o.type == "string") throw new Error("Cannot write WK1 to JS string"); + var ba = buf_array(); + var range = safe_decode_range(ws["!ref"]); + var dense = Array.isArray(ws); + var cols = []; + + write_biff_rec(ba, 0x00, write_BOF_WK1(0x0406)); + write_biff_rec(ba, 0x06, write_RANGE(range)); + var max_R = Math.min(range.e.r, 8191); + for(var R = range.s.r; R <= max_R; ++R) { + var rr = encode_row(R); + for(var C = range.s.c; C <= range.e.c; ++C) { + if(R === range.s.r) cols[C] = encode_col(C); + var ref = cols[C] + rr; + var cell = dense ? (ws[R]||[])[C] : ws[ref]; + if(!cell || cell.t == "z") continue; + /* TODO: formula records */ + if(cell.t == "n") { + if((cell.v|0)==cell.v && cell.v >= -32768 && cell.v <= 32767) write_biff_rec(ba, 0x0d, write_INTEGER(R, C, cell.v)); + else write_biff_rec(ba, 0x0e, write_NUMBER(R, C, cell.v)); + } else { + var str = format_cell(cell); + write_biff_rec(ba, 0x0F, write_LABEL(R, C, str.slice(0, 239))); + } + } + } + + write_biff_rec(ba, 0x01); + return ba.end(); + } + + function book_to_wk3(wb, opts) { + var o = opts || {}; + if(+o.codepage >= 0) set_cp(+o.codepage); + if(o.type == "string") throw new Error("Cannot write WK3 to JS string"); + var ba = buf_array(); + + write_biff_rec(ba, 0x00, write_BOF_WK3(wb)); + + for(var i = 0, cnt = 0; i < wb.SheetNames.length; ++i) if((wb.Sheets[wb.SheetNames[i]] || {})["!ref"]) write_biff_rec(ba, 0x1b, write_XFORMAT_SHEETNAME(wb.SheetNames[i], cnt++)); + + var wsidx = 0; + for(i = 0; i < wb.SheetNames.length; ++i) { + var ws = wb.Sheets[wb.SheetNames[i]]; + if(!ws || !ws["!ref"]) continue; + var range = safe_decode_range(ws["!ref"]); + var dense = Array.isArray(ws); + var cols = []; + var max_R = Math.min(range.e.r, 8191); + for(var R = range.s.r; R <= max_R; ++R) { + var rr = encode_row(R); + for(var C = range.s.c; C <= range.e.c; ++C) { + if(R === range.s.r) cols[C] = encode_col(C); + var ref = cols[C] + rr; + var cell = dense ? (ws[R]||[])[C] : ws[ref]; + if(!cell || cell.t == "z") continue; + /* TODO: FORMULA19 NUMBER18 records */ + if(cell.t == "n") { + write_biff_rec(ba, 0x17, write_NUMBER_17(R, C, wsidx, cell.v)); + } else { + var str = format_cell(cell); + /* TODO: max len? */ + write_biff_rec(ba, 0x16, write_LABEL_16(R, C, wsidx, str.slice(0, 239))); + } + } + } + ++wsidx; + } + + write_biff_rec(ba, 0x01); + return ba.end(); + } + + + function write_BOF_WK1(v) { + var out = new_buf(2); + out.write_shift(2, v); + return out; + } + + function write_BOF_WK3(wb) { + var out = new_buf(26); + out.write_shift(2, 0x1000); + out.write_shift(2, 0x0004); + out.write_shift(4, 0x0000); + var rows = 0, cols = 0, wscnt = 0; + for(var i = 0; i < wb.SheetNames.length; ++i) { + var name = wb.SheetNames[i]; + var ws = wb.Sheets[name]; + if(!ws || !ws["!ref"]) continue; + ++wscnt; + var range = decode_range(ws["!ref"]); + if(rows < range.e.r) rows = range.e.r; + if(cols < range.e.c) cols = range.e.c; + } + if(rows > 8191) rows = 8191; + out.write_shift(2, rows); + out.write_shift(1, wscnt); + out.write_shift(1, cols); + out.write_shift(2, 0x00); + out.write_shift(2, 0x00); + out.write_shift(1, 0x01); + out.write_shift(1, 0x02); + out.write_shift(4, 0); + out.write_shift(4, 0); + return out; + } + + function parse_RANGE(blob, length, opts) { + var o = {s:{c:0,r:0},e:{c:0,r:0}}; + if(length == 8 && opts.qpro) { + o.s.c = blob.read_shift(1); + blob.l++; + o.s.r = blob.read_shift(2); + o.e.c = blob.read_shift(1); + blob.l++; + o.e.r = blob.read_shift(2); + return o; + } + o.s.c = blob.read_shift(2); + o.s.r = blob.read_shift(2); + if(length == 12 && opts.qpro) blob.l += 2; + o.e.c = blob.read_shift(2); + o.e.r = blob.read_shift(2); + if(length == 12 && opts.qpro) blob.l += 2; + if(o.s.c == 0xFFFF) o.s.c = o.e.c = o.s.r = o.e.r = 0; + return o; + } + function write_RANGE(range) { + var out = new_buf(8); + out.write_shift(2, range.s.c); + out.write_shift(2, range.s.r); + out.write_shift(2, range.e.c); + out.write_shift(2, range.e.r); + return out; + } + + function parse_cell(blob, length, opts) { + var o = [{c:0,r:0}, {t:'n',v:0}, 0, 0]; + if(opts.qpro && opts.vers != 0x5120) { + o[0].c = blob.read_shift(1); + o[3] = blob.read_shift(1); + o[0].r = blob.read_shift(2); + blob.l+=2; + } else { + o[2] = blob.read_shift(1); + o[0].c = blob.read_shift(2); o[0].r = blob.read_shift(2); + } + return o; + } + + function parse_LABEL(blob, length, opts) { + var tgt = blob.l + length; + var o = parse_cell(blob, length, opts); + o[1].t = 's'; + if(opts.vers == 0x5120) { + blob.l++; + var len = blob.read_shift(1); + o[1].v = blob.read_shift(len, 'utf8'); + return o; + } + if(opts.qpro) blob.l++; + o[1].v = blob.read_shift(tgt - blob.l, 'cstr'); + return o; + } + function write_LABEL(R, C, s) { + /* TODO: encoding */ + var o = new_buf(7 + s.length); + o.write_shift(1, 0xFF); + o.write_shift(2, C); + o.write_shift(2, R); + o.write_shift(1, 0x27); // ?? + for(var i = 0; i < o.length; ++i) { + var cc = s.charCodeAt(i); + o.write_shift(1, cc >= 0x80 ? 0x5F : cc); + } + o.write_shift(1, 0); + return o; + } + + function parse_INTEGER(blob, length, opts) { + var o = parse_cell(blob, length, opts); + o[1].v = blob.read_shift(2, 'i'); + return o; + } + function write_INTEGER(R, C, v) { + var o = new_buf(7); + o.write_shift(1, 0xFF); + o.write_shift(2, C); + o.write_shift(2, R); + o.write_shift(2, v, 'i'); + return o; + } + + function parse_NUMBER(blob, length, opts) { + var o = parse_cell(blob, length, opts); + o[1].v = blob.read_shift(8, 'f'); + return o; + } + function write_NUMBER(R, C, v) { + var o = new_buf(13); + o.write_shift(1, 0xFF); + o.write_shift(2, C); + o.write_shift(2, R); + o.write_shift(8, v, 'f'); + return o; + } + + function parse_FORMULA(blob, length, opts) { + var tgt = blob.l + length; + var o = parse_cell(blob, length, opts); + /* TODO: formula */ + o[1].v = blob.read_shift(8, 'f'); + if(opts.qpro) blob.l = tgt; + else { + var flen = blob.read_shift(2); + wk1_fmla_to_csf(blob.slice(blob.l, blob.l + flen), o); + blob.l += flen; + } + return o; + } + + function wk1_parse_rc(B, V, col) { + var rel = V & 0x8000; + V &= ~0x8000; + V = (rel ? B : 0) + ((V >= 0x2000) ? V - 0x4000 : V); + return (rel ? "" : "$") + (col ? encode_col(V) : encode_row(V)); + } + /* var oprec = [ + 8, 8, 8, 8, 8, 8, 8, 8, 6, 4, 4, 5, 5, 7, 3, 3, + 3, 3, 3, 3, 1, 1, 2, 6, 8, 8, 8, 8, 8, 8, 8, 8 + ]; */ + /* TODO: flesh out */ + var FuncTab = { + 0x33: ["FALSE", 0], + 0x34: ["TRUE", 0], + 0x46: ["LEN", 1], + 0x50: ["SUM", 69], + 0x51: ["AVERAGEA", 69], + 0x52: ["COUNTA", 69], + 0x53: ["MINA", 69], + 0x54: ["MAXA", 69], + 0x6F: ["T", 1] + }; + var BinOpTab = [ + "", "", "", "", "", "", "", "", // eslint-disable-line no-mixed-spaces-and-tabs + "", "+", "-", "*", "/", "^", "=", "<>", // eslint-disable-line no-mixed-spaces-and-tabs + "<=", ">=", "<", ">", "", "", "", "", // eslint-disable-line no-mixed-spaces-and-tabs + "&", "", "", "", "", "", "", "" // eslint-disable-line no-mixed-spaces-and-tabs + ]; + + function wk1_fmla_to_csf(blob, o) { + prep_blob(blob, 0); + var out = [], argc = 0, R = "", C = "", argL = "", argR = ""; + while(blob.l < blob.length) { + var cc = blob[blob.l++]; + switch(cc) { + case 0x00: out.push(blob.read_shift(8, 'f')); break; + case 0x01: { + C = wk1_parse_rc(o[0].c, blob.read_shift(2), true); + R = wk1_parse_rc(o[0].r, blob.read_shift(2), false); + out.push(C + R); + } break; + case 0x02: { + var c = wk1_parse_rc(o[0].c, blob.read_shift(2), true); + var r = wk1_parse_rc(o[0].r, blob.read_shift(2), false); + C = wk1_parse_rc(o[0].c, blob.read_shift(2), true); + R = wk1_parse_rc(o[0].r, blob.read_shift(2), false); + out.push(c + r + ":" + C + R); + } break; + case 0x03: + if(blob.l < blob.length) { console.error("WK1 premature formula end"); return; } + break; + case 0x04: out.push("(" + out.pop() + ")"); break; + case 0x05: out.push(blob.read_shift(2)); break; + case 0x06: { + /* TODO: text encoding */ + var Z = ""; while((cc = blob[blob.l++])) Z += String.fromCharCode(cc); + out.push('"' + Z.replace(/"/g, '""') + '"'); + } break; + + case 0x08: out.push("-" + out.pop()); break; + case 0x17: out.push("+" + out.pop()); break; + case 0x16: out.push("NOT(" + out.pop() + ")"); break; + + case 0x14: case 0x15: { + argR = out.pop(); argL = out.pop(); + out.push(["AND", "OR"][cc - 0x14] + "(" + argL + "," + argR + ")"); + } break; + + default: + if(cc < 0x20 && BinOpTab[cc]) { + argR = out.pop(); argL = out.pop(); + out.push(argL + BinOpTab[cc] + argR); + } else if(FuncTab[cc]) { + argc = FuncTab[cc][1]; + if(argc == 69) argc = blob[blob.l++]; + if(argc > out.length) { console.error("WK1 bad formula parse 0x" + cc.toString(16) + ":|" + out.join("|") + "|"); return; } + var args = out.slice(-argc); + out.length -= argc; + out.push(FuncTab[cc][0] + "(" + args.join(",") + ")"); + } + else if(cc <= 0x07) return console.error("WK1 invalid opcode " + cc.toString(16)); + else if(cc <= 0x18) return console.error("WK1 unsupported op " + cc.toString(16)); + else if(cc <= 0x1E) return console.error("WK1 invalid opcode " + cc.toString(16)); + else if(cc <= 0x73) return console.error("WK1 unsupported function opcode " + cc.toString(16)); + // possible future functions ?? + else return console.error("WK1 unrecognized opcode " + cc.toString(16)); + } + } + if(out.length == 1) o[1].f = "" + out[0]; + else console.error("WK1 bad formula parse |" + out.join("|") + "|"); + } + + + function parse_cell_3(blob) { + var o = [{c:0,r:0}, {t:'n',v:0}, 0]; + o[0].r = blob.read_shift(2); o[3] = blob[blob.l++]; o[0].c = blob[blob.l++]; + return o; + } + + function parse_LABEL_16(blob, length) { + var o = parse_cell_3(blob, length); + o[1].t = 's'; + o[1].v = blob.read_shift(length - 4, 'cstr'); + return o; + } + function write_LABEL_16(R, C, wsidx, s) { + /* TODO: encoding */ + var o = new_buf(6 + s.length); + o.write_shift(2, R); + o.write_shift(1, wsidx); + o.write_shift(1, C); + o.write_shift(1, 0x27); + for(var i = 0; i < s.length; ++i) { + var cc = s.charCodeAt(i); + o.write_shift(1, cc >= 0x80 ? 0x5F : cc); + } + o.write_shift(1, 0); + return o; + } + + function parse_NUMBER_18(blob, length) { + var o = parse_cell_3(blob, length); + o[1].v = blob.read_shift(2); + var v = o[1].v >> 1; + if(o[1].v & 0x1) { + switch(v & 0x07) { + case 0: v = (v >> 3) * 5000; break; + case 1: v = (v >> 3) * 500; break; + case 2: v = (v >> 3) / 20; break; + case 3: v = (v >> 3) / 200; break; + case 4: v = (v >> 3) / 2000; break; + case 5: v = (v >> 3) / 20000; break; + case 6: v = (v >> 3) / 16; break; + case 7: v = (v >> 3) / 64; break; + } + } + o[1].v = v; + return o; + } + + function parse_NUMBER_17(blob, length) { + var o = parse_cell_3(blob, length); + var v1 = blob.read_shift(4); + var v2 = blob.read_shift(4); + var e = blob.read_shift(2); + if(e == 0xFFFF) { + if(v1 === 0 && v2 === 0xC0000000) { o[1].t = "e"; o[1].v = 0x0F; } // ERR -> #VALUE! + else if(v1 === 0 && v2 === 0xD0000000) { o[1].t = "e"; o[1].v = 0x2A; } // NA -> #N/A + else o[1].v = 0; + return o; + } + var s = e & 0x8000; e = (e&0x7FFF) - 16446; + o[1].v = (1 - s*2) * (v2 * Math.pow(2, e+32) + v1 * Math.pow(2, e)); + return o; + } + function write_NUMBER_17(R, C, wsidx, v) { + var o = new_buf(14); + o.write_shift(2, R); + o.write_shift(1, wsidx); + o.write_shift(1, C); + if(v == 0) { + o.write_shift(4, 0); + o.write_shift(4, 0); + o.write_shift(2, 0xFFFF); + return o; + } + var s = 0, e = 0, v1 = 0, v2 = 0; + if(v < 0) { s = 1; v = -v; } + e = Math.log2(v) | 0; + v /= Math.pow(2, e-31); + v2 = (v)>>>0; + if((v2&0x80000000) == 0) { v/=2; ++e; v2 = v >>> 0; } + v -= v2; + v2 |= 0x80000000; + v2 >>>= 0; + v *= Math.pow(2, 32); + v1 = v>>>0; + o.write_shift(4, v1); + o.write_shift(4, v2); + e += 0x3FFF + (s ? 0x8000 : 0); + o.write_shift(2, e); + return o; + } + + function parse_FORMULA_19(blob, length) { + var o = parse_NUMBER_17(blob, 14); + blob.l += length - 14; /* TODO: WK3 formula */ + return o; + } + + function parse_NUMBER_25(blob, length) { + var o = parse_cell_3(blob, length); + var v1 = blob.read_shift(4); + o[1].v = v1 >> 6; + return o; + } + + function parse_NUMBER_27(blob, length) { + var o = parse_cell_3(blob, length); + var v1 = blob.read_shift(8,'f'); + o[1].v = v1; + return o; + } + + function parse_FORMULA_28(blob, length) { + var o = parse_NUMBER_27(blob, 14); + blob.l += length - 10; /* TODO: formula */ + return o; + } + + function parse_SHEETNAMECS(blob, length) { + return blob[blob.l + length - 1] == 0 ? blob.read_shift(length, 'cstr') : ""; + } + + function parse_SHEETNAMELP(blob, length) { + var len = blob[blob.l++]; + if(len > length - 1) len = length - 1; + var o = ""; while(o.length < len) o += String.fromCharCode(blob[blob.l++]); + return o; + } + + function parse_SHEETINFOQP(blob, length, opts) { + if(!opts.qpro || length < 21) return; + var id = blob.read_shift(1); + blob.l += 17; + blob.l += 1; //var len = blob.read_shift(1); + blob.l += 2; + var nm = blob.read_shift(length - 21, 'cstr'); + return [id, nm]; + } + + function parse_XFORMAT(blob, length) { + var o = {}, tgt = blob.l + length; + while(blob.l < tgt) { + var dt = blob.read_shift(2); + if(dt == 0x36b0) { + o[dt] = [0, ""]; + o[dt][0] = blob.read_shift(2); + while(blob[blob.l]) { o[dt][1] += String.fromCharCode(blob[blob.l]); blob.l++; } blob.l++; + } + // TODO: 0x3a99 ?? + } + return o; + } + function write_XFORMAT_SHEETNAME(name, wsidx) { + var out = new_buf(5 + name.length); + out.write_shift(2, 0x36b0); + out.write_shift(2, wsidx); + for(var i = 0; i < name.length; ++i) { + var cc = name.charCodeAt(i); + out[out.l++] = cc > 0x7F ? 0x5F : cc; + } + out[out.l++] = 0; + return out; + } + + var WK1Enum = { +0x0000: { n:"BOF", f:parseuint16 }, +0x0001: { n:"EOF" }, +0x0002: { n:"CALCMODE" }, +0x0003: { n:"CALCORDER" }, +0x0004: { n:"SPLIT" }, +0x0005: { n:"SYNC" }, +0x0006: { n:"RANGE", f:parse_RANGE }, +0x0007: { n:"WINDOW1" }, +0x0008: { n:"COLW1" }, +0x0009: { n:"WINTWO" }, +0x000A: { n:"COLW2" }, +0x000B: { n:"NAME" }, +0x000C: { n:"BLANK" }, +0x000D: { n:"INTEGER", f:parse_INTEGER }, +0x000E: { n:"NUMBER", f:parse_NUMBER }, +0x000F: { n:"LABEL", f:parse_LABEL }, +0x0010: { n:"FORMULA", f:parse_FORMULA }, +0x0018: { n:"TABLE" }, +0x0019: { n:"ORANGE" }, +0x001A: { n:"PRANGE" }, +0x001B: { n:"SRANGE" }, +0x001C: { n:"FRANGE" }, +0x001D: { n:"KRANGE1" }, +0x0020: { n:"HRANGE" }, +0x0023: { n:"KRANGE2" }, +0x0024: { n:"PROTEC" }, +0x0025: { n:"FOOTER" }, +0x0026: { n:"HEADER" }, +0x0027: { n:"SETUP" }, +0x0028: { n:"MARGINS" }, +0x0029: { n:"LABELFMT" }, +0x002A: { n:"TITLES" }, +0x002B: { n:"SHEETJS" }, +0x002D: { n:"GRAPH" }, +0x002E: { n:"NGRAPH" }, +0x002F: { n:"CALCCOUNT" }, +0x0030: { n:"UNFORMATTED" }, +0x0031: { n:"CURSORW12" }, +0x0032: { n:"WINDOW" }, +0x0033: { n:"STRING", f:parse_LABEL }, +0x0037: { n:"PASSWORD" }, +0x0038: { n:"LOCKED" }, +0x003C: { n:"QUERY" }, +0x003D: { n:"QUERYNAME" }, +0x003E: { n:"PRINT" }, +0x003F: { n:"PRINTNAME" }, +0x0040: { n:"GRAPH2" }, +0x0041: { n:"GRAPHNAME" }, +0x0042: { n:"ZOOM" }, +0x0043: { n:"SYMSPLIT" }, +0x0044: { n:"NSROWS" }, +0x0045: { n:"NSCOLS" }, +0x0046: { n:"RULER" }, +0x0047: { n:"NNAME" }, +0x0048: { n:"ACOMM" }, +0x0049: { n:"AMACRO" }, +0x004A: { n:"PARSE" }, +0x0066: { n:"PRANGES??" }, +0x0067: { n:"RRANGES??" }, +0x0068: { n:"FNAME??" }, +0x0069: { n:"MRANGES??" }, +0x00CC: { n:"SHEETNAMECS", f:parse_SHEETNAMECS }, +0x00DE: { n:"SHEETNAMELP", f:parse_SHEETNAMELP }, +0xFFFF: { n:"" } + }; + + var WK3Enum = { +0x0000: { n:"BOF" }, +0x0001: { n:"EOF" }, +0x0002: { n:"PASSWORD" }, +0x0003: { n:"CALCSET" }, +0x0004: { n:"WINDOWSET" }, +0x0005: { n:"SHEETCELLPTR" }, +0x0006: { n:"SHEETLAYOUT" }, +0x0007: { n:"COLUMNWIDTH" }, +0x0008: { n:"HIDDENCOLUMN" }, +0x0009: { n:"USERRANGE" }, +0x000A: { n:"SYSTEMRANGE" }, +0x000B: { n:"ZEROFORCE" }, +0x000C: { n:"SORTKEYDIR" }, +0x000D: { n:"FILESEAL" }, +0x000E: { n:"DATAFILLNUMS" }, +0x000F: { n:"PRINTMAIN" }, +0x0010: { n:"PRINTSTRING" }, +0x0011: { n:"GRAPHMAIN" }, +0x0012: { n:"GRAPHSTRING" }, +0x0013: { n:"??" }, +0x0014: { n:"ERRCELL" }, +0x0015: { n:"NACELL" }, +0x0016: { n:"LABEL16", f:parse_LABEL_16}, +0x0017: { n:"NUMBER17", f:parse_NUMBER_17 }, +0x0018: { n:"NUMBER18", f:parse_NUMBER_18 }, +0x0019: { n:"FORMULA19", f:parse_FORMULA_19}, +0x001A: { n:"FORMULA1A" }, +0x001B: { n:"XFORMAT", f:parse_XFORMAT }, +0x001C: { n:"DTLABELMISC" }, +0x001D: { n:"DTLABELCELL" }, +0x001E: { n:"GRAPHWINDOW" }, +0x001F: { n:"CPA" }, +0x0020: { n:"LPLAUTO" }, +0x0021: { n:"QUERY" }, +0x0022: { n:"HIDDENSHEET" }, +0x0023: { n:"??" }, +0x0025: { n:"NUMBER25", f:parse_NUMBER_25 }, +0x0026: { n:"??" }, +0x0027: { n:"NUMBER27", f:parse_NUMBER_27 }, +0x0028: { n:"FORMULA28", f:parse_FORMULA_28 }, +0x008E: { n:"??" }, +0x0093: { n:"??" }, +0x0096: { n:"??" }, +0x0097: { n:"??" }, +0x0098: { n:"??" }, +0x0099: { n:"??" }, +0x009A: { n:"??" }, +0x009B: { n:"??" }, +0x009C: { n:"??" }, +0x00A3: { n:"??" }, +0x00AE: { n:"??" }, +0x00AF: { n:"??" }, +0x00B0: { n:"??" }, +0x00B1: { n:"??" }, +0x00B8: { n:"??" }, +0x00B9: { n:"??" }, +0x00BA: { n:"??" }, +0x00BB: { n:"??" }, +0x00BC: { n:"??" }, +0x00C3: { n:"??" }, +0x00C9: { n:"??" }, +0x00CC: { n:"SHEETNAMECS", f:parse_SHEETNAMECS }, +0x00CD: { n:"??" }, +0x00CE: { n:"??" }, +0x00CF: { n:"??" }, +0x00D0: { n:"??" }, +0x0100: { n:"??" }, +0x0103: { n:"??" }, +0x0104: { n:"??" }, +0x0105: { n:"??" }, +0x0106: { n:"??" }, +0x0107: { n:"??" }, +0x0109: { n:"??" }, +0x010A: { n:"??" }, +0x010B: { n:"??" }, +0x010C: { n:"??" }, +0x010E: { n:"??" }, +0x010F: { n:"??" }, +0x0180: { n:"??" }, +0x0185: { n:"??" }, +0x0186: { n:"??" }, +0x0189: { n:"??" }, +0x018C: { n:"??" }, +0x0200: { n:"??" }, +0x0202: { n:"??" }, +0x0201: { n:"??" }, +0x0204: { n:"??" }, +0x0205: { n:"??" }, +0x0280: { n:"??" }, +0x0281: { n:"??" }, +0x0282: { n:"??" }, +0x0283: { n:"??" }, +0x0284: { n:"??" }, +0x0285: { n:"??" }, +0x0286: { n:"??" }, +0x0287: { n:"??" }, +0x0288: { n:"??" }, +0x0292: { n:"??" }, +0x0293: { n:"??" }, +0x0294: { n:"??" }, +0x0295: { n:"??" }, +0x0296: { n:"??" }, +0x0299: { n:"??" }, +0x029A: { n:"??" }, +0x0300: { n:"??" }, +0x0304: { n:"??" }, +0x0601: { n:"SHEETINFOQP", f:parse_SHEETINFOQP }, +0x0640: { n:"??" }, +0x0642: { n:"??" }, +0x0701: { n:"??" }, +0x0702: { n:"??" }, +0x0703: { n:"??" }, +0x0704: { n:"??" }, +0x0780: { n:"??" }, +0x0800: { n:"??" }, +0x0801: { n:"??" }, +0x0804: { n:"??" }, +0x0A80: { n:"??" }, +0x2AF6: { n:"??" }, +0x3231: { n:"??" }, +0x6E49: { n:"??" }, +0x6F44: { n:"??" }, +0xFFFF: { n:"" } + }; + return { + sheet_to_wk1: sheet_to_wk1, + book_to_wk3: book_to_wk3, + to_workbook: lotus_to_workbook + }; +})(); +/* 18.4.7 rPr CT_RPrElt */ +function parse_rpr(rpr) { + var font = {}, m = rpr.match(tagregex), i = 0; + var pass = false; + if(m) for(;i!=m.length; ++i) { + var y = parsexmltag(m[i]); + switch(y[0].replace(/\w*:/g,"")) { + /* 18.8.12 condense CT_BooleanProperty */ + /* ** not required . */ + case '': + case '': font.shadow = 1; break; + case '': break; + + /* 18.4.1 charset CT_IntProperty TODO */ + case '': + case '': font.outline = 1; break; + case '': break; + + /* 18.4.5 rFont CT_FontName */ + case '': + case '': font.strike = 1; break; + case '': break; + + /* 18.4.13 u CT_UnderlineProperty */ + case '': + case '': font.u = 1; break; + case '': break; + + /* 18.8.2 b */ + case '': + case '': font.b = 1; break; + case '': break; + + /* 18.8.26 i */ + case '': + case '': font.i = 1; break; + case '': break; + + /* 18.3.1.15 color CT_Color TODO: tint, theme, auto, indexed */ + case '': case '': case '': break; + + /* 18.8.18 family ST_FontFamily */ + case '': case '': case '': break; + + /* 18.4.14 vertAlign CT_VerticalAlignFontProperty TODO */ + case '': case '': case '': break; + + /* 18.8.35 scheme CT_FontScheme TODO */ + case '': case '': case '': break; + + /* 18.2.10 extLst CT_ExtensionList ? */ + case '': case '': break; + case '': pass = false; break; + default: + if(y[0].charCodeAt(1) !== 47 && !pass) throw new Error('Unrecognized rich format ' + y[0]); + } + } + return font; +} + +var parse_rs = (function() { + var tregex = matchtag("t"), rpregex = matchtag("rPr"); + /* 18.4.4 r CT_RElt */ + function parse_r(r) { + /* 18.4.12 t ST_Xstring */ + var t = r.match(tregex)/*, cp = 65001*/; + if(!t) return {t:"s", v:""}; + + var o = ({t:'s', v:unescapexml(t[1])}); + var rpr = r.match(rpregex); + if(rpr) o.s = parse_rpr(rpr[1]); + return o; + } + var rregex = /<(?:\w+:)?r>/g, rend = /<\/(?:\w+:)?r>/; + return function parse_rs(rs) { + return rs.replace(rregex,"").split(rend).map(parse_r).filter(function(r) { return r.v; }); + }; +})(); + + +/* Parse a list of tags */ +var rs_to_html = (function parse_rs_factory() { + var nlregex = /(\r\n|\n)/g; + function parse_rpr2(font, intro, outro) { + var style = []; + + if(font.u) style.push("text-decoration: underline;"); + if(font.uval) style.push("text-underline-style:" + font.uval + ";"); + if(font.sz) style.push("font-size:" + font.sz + "pt;"); + if(font.outline) style.push("text-effect: outline;"); + if(font.shadow) style.push("text-shadow: auto;"); + intro.push(''); + + if(font.b) { intro.push(""); outro.push(""); } + if(font.i) { intro.push(""); outro.push(""); } + if(font.strike) { intro.push(""); outro.push(""); } + + var align = font.valign || ""; + if(align == "superscript" || align == "super") align = "sup"; + else if(align == "subscript") align = "sub"; + if(align != "") { intro.push("<" + align + ">"); outro.push(""); } + + outro.push(""); + return font; + } + + /* 18.4.4 r CT_RElt */ + function r_to_html(r) { + var terms = [[],r.v,[]]; + if(!r.v) return ""; + + if(r.s) parse_rpr2(r.s, terms[0], terms[2]); + + return terms[0].join("") + terms[1].replace(nlregex,'
') + terms[2].join(""); + } + + return function parse_rs(rs) { + return rs.map(r_to_html).join(""); + }; +})(); + +/* 18.4.8 si CT_Rst */ +var sitregex = /<(?:\w+:)?t[^>]*>([^<]*)<\/(?:\w+:)?t>/g, sirregex = /<(?:\w+:)?r>/; +var sirphregex = /<(?:\w+:)?rPh.*?>([\s\S]*?)<\/(?:\w+:)?rPh>/g; +function parse_si(x, opts) { + var html = opts ? opts.cellHTML : true; + var z = {}; + if(!x) return { t: "" }; + //var y; + /* 18.4.12 t ST_Xstring (Plaintext String) */ + // TODO: is whitespace actually valid here? + if(x.match(/^\s*<(?:\w+:)?t[^>]*>/)) { + z.t = unescapexml(utf8read(x.slice(x.indexOf(">")+1).split(/<\/(?:\w+:)?t>/)[0]||"")); + z.r = utf8read(x); + if(html) z.h = escapehtml(z.t); + } + /* 18.4.4 r CT_RElt (Rich Text Run) */ + else if((/*y = */x.match(sirregex))) { + z.r = utf8read(x); + z.t = unescapexml(utf8read((x.replace(sirphregex, '').match(sitregex)||[]).join("").replace(tagregex,""))); + if(html) z.h = rs_to_html(parse_rs(z.r)); + } + /* 18.4.3 phoneticPr CT_PhoneticPr (TODO: needed for Asian support) */ + /* 18.4.6 rPh CT_PhoneticRun (TODO: needed for Asian support) */ + return z; +} + +/* 18.4 Shared String Table */ +var sstr0 = /<(?:\w+:)?sst([^>]*)>([\s\S]*)<\/(?:\w+:)?sst>/; +var sstr1 = /<(?:\w+:)?(?:si|sstItem)>/g; +var sstr2 = /<\/(?:\w+:)?(?:si|sstItem)>/; +function parse_sst_xml(data, opts) { + var s = ([]), ss = ""; + if(!data) return s; + /* 18.4.9 sst CT_Sst */ + var sst = data.match(sstr0); + if(sst) { + ss = sst[2].replace(sstr1,"").split(sstr2); + for(var i = 0; i != ss.length; ++i) { + var o = parse_si(ss[i].trim(), opts); + if(o != null) s[s.length] = o; + } + sst = parsexmltag(sst[1]); s.Count = sst.count; s.Unique = sst.uniqueCount; + } + return s; +} + +var straywsregex = /^\s|\s$|[\t\n\r]/; +function write_sst_xml(sst, opts) { + if(!opts.bookSST) return ""; + var o = [XML_HEADER]; + o[o.length] = (writextag('sst', null, { + xmlns: XMLNS_main[0], + count: sst.Count, + uniqueCount: sst.Unique + })); + for(var i = 0; i != sst.length; ++i) { if(sst[i] == null) continue; + var s = sst[i]; + var sitag = ""; + if(s.r) sitag += s.r; + else { + sitag += ""; + } + sitag += ""; + o[o.length] = (sitag); + } + if(o.length>2){ o[o.length] = (''); o[1]=o[1].replace("/>",">"); } + return o.join(""); +} +/* [MS-XLSB] 2.4.221 BrtBeginSst */ +function parse_BrtBeginSst(data) { + return [data.read_shift(4), data.read_shift(4)]; +} + +/* [MS-XLSB] 2.1.7.45 Shared Strings */ +function parse_sst_bin(data, opts) { + var s = ([]); + var pass = false; + recordhopper(data, function hopper_sst(val, R, RT) { + switch(RT) { + case 0x009F: /* BrtBeginSst */ + s.Count = val[0]; s.Unique = val[1]; break; + case 0x0013: /* BrtSSTItem */ + s.push(val); break; + case 0x00A0: /* BrtEndSst */ + return true; + + case 0x0023: /* BrtFRTBegin */ + pass = true; break; + case 0x0024: /* BrtFRTEnd */ + pass = false; break; + + default: + if(R.T){} + if(!pass || opts.WTF) throw new Error("Unexpected record 0x" + RT.toString(16)); + } + }); + return s; +} + +function write_BrtBeginSst(sst, o) { + if(!o) o = new_buf(8); + o.write_shift(4, sst.Count); + o.write_shift(4, sst.Unique); + return o; +} + +var write_BrtSSTItem = write_RichStr; + +function write_sst_bin(sst) { + var ba = buf_array(); + write_record(ba, 0x009F /* BrtBeginSst */, write_BrtBeginSst(sst)); + for(var i = 0; i < sst.length; ++i) write_record(ba, 0x0013 /* BrtSSTItem */, write_BrtSSTItem(sst[i])); + /* FRTSST */ + write_record(ba, 0x00A0 /* BrtEndSst */); + return ba.end(); +} +function _JS2ANSI(str) { + if(typeof $cptable !== 'undefined') return $cptable.utils.encode(current_ansi, str); + var o = [], oo = str.split(""); + for(var i = 0; i < oo.length; ++i) o[i] = oo[i].charCodeAt(0); + return o; +} + +/* [MS-OFFCRYPTO] 2.1.4 Version */ +function parse_CRYPTOVersion(blob, length) { + var o = {}; + o.Major = blob.read_shift(2); + o.Minor = blob.read_shift(2); +if(length >= 4) blob.l += length - 4; + return o; +} + +/* [MS-OFFCRYPTO] 2.1.5 DataSpaceVersionInfo */ +function parse_DataSpaceVersionInfo(blob) { + var o = {}; + o.id = blob.read_shift(0, 'lpp4'); + o.R = parse_CRYPTOVersion(blob, 4); + o.U = parse_CRYPTOVersion(blob, 4); + o.W = parse_CRYPTOVersion(blob, 4); + return o; +} + +/* [MS-OFFCRYPTO] 2.1.6.1 DataSpaceMapEntry Structure */ +function parse_DataSpaceMapEntry(blob) { + var len = blob.read_shift(4); + var end = blob.l + len - 4; + var o = {}; + var cnt = blob.read_shift(4); + var comps = []; + /* [MS-OFFCRYPTO] 2.1.6.2 DataSpaceReferenceComponent Structure */ + while(cnt-- > 0) comps.push({ t: blob.read_shift(4), v: blob.read_shift(0, 'lpp4') }); + o.name = blob.read_shift(0, 'lpp4'); + o.comps = comps; + if(blob.l != end) throw new Error("Bad DataSpaceMapEntry: " + blob.l + " != " + end); + return o; +} + +/* [MS-OFFCRYPTO] 2.1.6 DataSpaceMap */ +function parse_DataSpaceMap(blob) { + var o = []; + blob.l += 4; // must be 0x8 + var cnt = blob.read_shift(4); + while(cnt-- > 0) o.push(parse_DataSpaceMapEntry(blob)); + return o; +} + +/* [MS-OFFCRYPTO] 2.1.7 DataSpaceDefinition */ +function parse_DataSpaceDefinition(blob) { + var o = []; + blob.l += 4; // must be 0x8 + var cnt = blob.read_shift(4); + while(cnt-- > 0) o.push(blob.read_shift(0, 'lpp4')); + return o; +} + +/* [MS-OFFCRYPTO] 2.1.8 DataSpaceDefinition */ +function parse_TransformInfoHeader(blob) { + var o = {}; + /*var len = */blob.read_shift(4); + blob.l += 4; // must be 0x1 + o.id = blob.read_shift(0, 'lpp4'); + o.name = blob.read_shift(0, 'lpp4'); + o.R = parse_CRYPTOVersion(blob, 4); + o.U = parse_CRYPTOVersion(blob, 4); + o.W = parse_CRYPTOVersion(blob, 4); + return o; +} + +function parse_Primary(blob) { + /* [MS-OFFCRYPTO] 2.2.6 IRMDSTransformInfo */ + var hdr = parse_TransformInfoHeader(blob); + /* [MS-OFFCRYPTO] 2.1.9 EncryptionTransformInfo */ + hdr.ename = blob.read_shift(0, '8lpp4'); + hdr.blksz = blob.read_shift(4); + hdr.cmode = blob.read_shift(4); + if(blob.read_shift(4) != 0x04) throw new Error("Bad !Primary record"); + return hdr; +} + +/* [MS-OFFCRYPTO] 2.3.2 Encryption Header */ +function parse_EncryptionHeader(blob, length) { + var tgt = blob.l + length; + var o = {}; + o.Flags = (blob.read_shift(4) & 0x3F); + blob.l += 4; + o.AlgID = blob.read_shift(4); + var valid = false; + switch(o.AlgID) { + case 0x660E: case 0x660F: case 0x6610: valid = (o.Flags == 0x24); break; + case 0x6801: valid = (o.Flags == 0x04); break; + case 0: valid = (o.Flags == 0x10 || o.Flags == 0x04 || o.Flags == 0x24); break; + default: throw 'Unrecognized encryption algorithm: ' + o.AlgID; + } + if(!valid) throw new Error("Encryption Flags/AlgID mismatch"); + o.AlgIDHash = blob.read_shift(4); + o.KeySize = blob.read_shift(4); + o.ProviderType = blob.read_shift(4); + blob.l += 8; + o.CSPName = blob.read_shift((tgt-blob.l)>>1, 'utf16le'); + blob.l = tgt; + return o; +} + +/* [MS-OFFCRYPTO] 2.3.3 Encryption Verifier */ +function parse_EncryptionVerifier(blob, length) { + var o = {}, tgt = blob.l + length; + blob.l += 4; // SaltSize must be 0x10 + o.Salt = blob.slice(blob.l, blob.l+16); blob.l += 16; + o.Verifier = blob.slice(blob.l, blob.l+16); blob.l += 16; + /*var sz = */blob.read_shift(4); + o.VerifierHash = blob.slice(blob.l, tgt); blob.l = tgt; + return o; +} + +/* [MS-OFFCRYPTO] 2.3.4.* EncryptionInfo Stream */ +function parse_EncryptionInfo(blob) { + var vers = parse_CRYPTOVersion(blob); + switch(vers.Minor) { + case 0x02: return [vers.Minor, parse_EncInfoStd(blob, vers)]; + case 0x03: return [vers.Minor, parse_EncInfoExt(blob, vers)]; + case 0x04: return [vers.Minor, parse_EncInfoAgl(blob, vers)]; + } + throw new Error("ECMA-376 Encrypted file unrecognized Version: " + vers.Minor); +} + +/* [MS-OFFCRYPTO] 2.3.4.5 EncryptionInfo Stream (Standard Encryption) */ +function parse_EncInfoStd(blob) { + var flags = blob.read_shift(4); + if((flags & 0x3F) != 0x24) throw new Error("EncryptionInfo mismatch"); + var sz = blob.read_shift(4); + //var tgt = blob.l + sz; + var hdr = parse_EncryptionHeader(blob, sz); + var verifier = parse_EncryptionVerifier(blob, blob.length - blob.l); + return { t:"Std", h:hdr, v:verifier }; +} +/* [MS-OFFCRYPTO] 2.3.4.6 EncryptionInfo Stream (Extensible Encryption) */ +function parse_EncInfoExt() { throw new Error("File is password-protected: ECMA-376 Extensible"); } +/* [MS-OFFCRYPTO] 2.3.4.10 EncryptionInfo Stream (Agile Encryption) */ +function parse_EncInfoAgl(blob) { + var KeyData = ["saltSize","blockSize","keyBits","hashSize","cipherAlgorithm","cipherChaining","hashAlgorithm","saltValue"]; + blob.l+=4; + var xml = blob.read_shift(blob.length - blob.l, 'utf8'); + var o = {}; + xml.replace(tagregex, function xml_agile(x) { + var y = parsexmltag(x); + switch(strip_ns(y[0])) { + case '': break; + case '': case '': break; + + case '': break; + case ' 4 || vers.Major < 2) throw new Error('unrecognized major version code: ' + vers.Major); + o.Flags = blob.read_shift(4); length -= 4; + var sz = blob.read_shift(4); length -= 4; + o.EncryptionHeader = parse_EncryptionHeader(blob, sz); length -= sz; + o.EncryptionVerifier = parse_EncryptionVerifier(blob, length); + return o; +} +/* [MS-OFFCRYPTO] 2.3.6.1 RC4 Encryption Header */ +function parse_RC4Header(blob) { + var o = {}; + var vers = o.EncryptionVersionInfo = parse_CRYPTOVersion(blob, 4); + if(vers.Major != 1 || vers.Minor != 1) throw 'unrecognized version code ' + vers.Major + ' : ' + vers.Minor; + o.Salt = blob.read_shift(16); + o.EncryptedVerifier = blob.read_shift(16); + o.EncryptedVerifierHash = blob.read_shift(16); + return o; +} + +/* [MS-OFFCRYPTO] 2.3.7.1 Binary Document Password Verifier Derivation */ +function crypto_CreatePasswordVerifier_Method1(Password) { + var Verifier = 0x0000, PasswordArray; + var PasswordDecoded = _JS2ANSI(Password); + var len = PasswordDecoded.length + 1, i, PasswordByte; + var Intermediate1, Intermediate2, Intermediate3; + PasswordArray = new_raw_buf(len); + PasswordArray[0] = PasswordDecoded.length; + for(i = 1; i != len; ++i) PasswordArray[i] = PasswordDecoded[i-1]; + for(i = len-1; i >= 0; --i) { + PasswordByte = PasswordArray[i]; + Intermediate1 = ((Verifier & 0x4000) === 0x0000) ? 0 : 1; + Intermediate2 = (Verifier << 1) & 0x7FFF; + Intermediate3 = Intermediate1 | Intermediate2; + Verifier = Intermediate3 ^ PasswordByte; + } + return Verifier ^ 0xCE4B; +} + +/* [MS-OFFCRYPTO] 2.3.7.2 Binary Document XOR Array Initialization */ +var crypto_CreateXorArray_Method1 = (function() { + var PadArray = [0xBB, 0xFF, 0xFF, 0xBA, 0xFF, 0xFF, 0xB9, 0x80, 0x00, 0xBE, 0x0F, 0x00, 0xBF, 0x0F, 0x00]; + var InitialCode = [0xE1F0, 0x1D0F, 0xCC9C, 0x84C0, 0x110C, 0x0E10, 0xF1CE, 0x313E, 0x1872, 0xE139, 0xD40F, 0x84F9, 0x280C, 0xA96A, 0x4EC3]; + var XorMatrix = [0xAEFC, 0x4DD9, 0x9BB2, 0x2745, 0x4E8A, 0x9D14, 0x2A09, 0x7B61, 0xF6C2, 0xFDA5, 0xEB6B, 0xC6F7, 0x9DCF, 0x2BBF, 0x4563, 0x8AC6, 0x05AD, 0x0B5A, 0x16B4, 0x2D68, 0x5AD0, 0x0375, 0x06EA, 0x0DD4, 0x1BA8, 0x3750, 0x6EA0, 0xDD40, 0xD849, 0xA0B3, 0x5147, 0xA28E, 0x553D, 0xAA7A, 0x44D5, 0x6F45, 0xDE8A, 0xAD35, 0x4A4B, 0x9496, 0x390D, 0x721A, 0xEB23, 0xC667, 0x9CEF, 0x29FF, 0x53FE, 0xA7FC, 0x5FD9, 0x47D3, 0x8FA6, 0x0F6D, 0x1EDA, 0x3DB4, 0x7B68, 0xF6D0, 0xB861, 0x60E3, 0xC1C6, 0x93AD, 0x377B, 0x6EF6, 0xDDEC, 0x45A0, 0x8B40, 0x06A1, 0x0D42, 0x1A84, 0x3508, 0x6A10, 0xAA51, 0x4483, 0x8906, 0x022D, 0x045A, 0x08B4, 0x1168, 0x76B4, 0xED68, 0xCAF1, 0x85C3, 0x1BA7, 0x374E, 0x6E9C, 0x3730, 0x6E60, 0xDCC0, 0xA9A1, 0x4363, 0x86C6, 0x1DAD, 0x3331, 0x6662, 0xCCC4, 0x89A9, 0x0373, 0x06E6, 0x0DCC, 0x1021, 0x2042, 0x4084, 0x8108, 0x1231, 0x2462, 0x48C4]; + var Ror = function(Byte) { return ((Byte/2) | (Byte*128)) & 0xFF; }; + var XorRor = function(byte1, byte2) { return Ror(byte1 ^ byte2); }; + var CreateXorKey_Method1 = function(Password) { + var XorKey = InitialCode[Password.length - 1]; + var CurrentElement = 0x68; + for(var i = Password.length-1; i >= 0; --i) { + var Char = Password[i]; + for(var j = 0; j != 7; ++j) { + if(Char & 0x40) XorKey ^= XorMatrix[CurrentElement]; + Char *= 2; --CurrentElement; + } + } + return XorKey; + }; + return function(password) { + var Password = _JS2ANSI(password); + var XorKey = CreateXorKey_Method1(Password); + var Index = Password.length; + var ObfuscationArray = new_raw_buf(16); + for(var i = 0; i != 16; ++i) ObfuscationArray[i] = 0x00; + var Temp, PasswordLastChar, PadIndex; + if((Index & 1) === 1) { + Temp = XorKey >> 8; + ObfuscationArray[Index] = XorRor(PadArray[0], Temp); + --Index; + Temp = XorKey & 0xFF; + PasswordLastChar = Password[Password.length - 1]; + ObfuscationArray[Index] = XorRor(PasswordLastChar, Temp); + } + while(Index > 0) { + --Index; + Temp = XorKey >> 8; + ObfuscationArray[Index] = XorRor(Password[Index], Temp); + --Index; + Temp = XorKey & 0xFF; + ObfuscationArray[Index] = XorRor(Password[Index], Temp); + } + Index = 15; + PadIndex = 15 - Password.length; + while(PadIndex > 0) { + Temp = XorKey >> 8; + ObfuscationArray[Index] = XorRor(PadArray[PadIndex], Temp); + --Index; + --PadIndex; + Temp = XorKey & 0xFF; + ObfuscationArray[Index] = XorRor(Password[Index], Temp); + --Index; + --PadIndex; + } + return ObfuscationArray; + }; +})(); + +/* [MS-OFFCRYPTO] 2.3.7.3 Binary Document XOR Data Transformation Method 1 */ +var crypto_DecryptData_Method1 = function(password, Data, XorArrayIndex, XorArray, O) { + /* If XorArray is set, use it; if O is not set, make changes in-place */ + if(!O) O = Data; + if(!XorArray) XorArray = crypto_CreateXorArray_Method1(password); + var Index, Value; + for(Index = 0; Index != Data.length; ++Index) { + Value = Data[Index]; + Value ^= XorArray[XorArrayIndex]; + Value = ((Value>>5) | (Value<<3)) & 0xFF; + O[Index] = Value; + ++XorArrayIndex; + } + return [O, XorArrayIndex, XorArray]; +}; + +var crypto_MakeXorDecryptor = function(password) { + var XorArrayIndex = 0, XorArray = crypto_CreateXorArray_Method1(password); + return function(Data) { + var O = crypto_DecryptData_Method1("", Data, XorArrayIndex, XorArray); + XorArrayIndex = O[1]; + return O[0]; + }; +}; + +/* 2.5.343 */ +function parse_XORObfuscation(blob, length, opts, out) { + var o = ({ key: parseuint16(blob), verificationBytes: parseuint16(blob) }); + if(opts.password) o.verifier = crypto_CreatePasswordVerifier_Method1(opts.password); + out.valid = o.verificationBytes === o.verifier; + if(out.valid) out.insitu = crypto_MakeXorDecryptor(opts.password); + return o; +} + +/* 2.4.117 */ +function parse_FilePassHeader(blob, length, oo) { + var o = oo || {}; o.Info = blob.read_shift(2); blob.l -= 2; + if(o.Info === 1) o.Data = parse_RC4Header(blob, length); + else o.Data = parse_RC4CryptoHeader(blob, length); + return o; +} +function parse_FilePass(blob, length, opts) { + var o = ({ Type: opts.biff >= 8 ? blob.read_shift(2) : 0 }); /* wEncryptionType */ + if(o.Type) parse_FilePassHeader(blob, length-2, o); + else parse_XORObfuscation(blob, opts.biff >= 8 ? length : length - 2, opts, o); + return o; +} + + +var RTF = (function() { + function rtf_to_sheet(d, opts) { + switch(opts.type) { + case 'base64': return rtf_to_sheet_str(Base64_decode(d), opts); + case 'binary': return rtf_to_sheet_str(d, opts); + case 'buffer': return rtf_to_sheet_str(has_buf && Buffer.isBuffer(d) ? d.toString('binary') : a2s(d), opts); + case 'array': return rtf_to_sheet_str(cc2str(d), opts); + } + throw new Error("Unrecognized type " + opts.type); + } + + /* TODO: this is a stub */ + function rtf_to_sheet_str(str, opts) { + var o = opts || {}; + var ws = o.dense ? ([]) : ({}); + + var rows = str.match(/\\trowd.*?\\row\b/g); + if(!rows.length) throw new Error("RTF missing table"); + var range = ({s: {c:0, r:0}, e: {c:0, r:rows.length - 1}}); + rows.forEach(function(rowtf, R) { + if(Array.isArray(ws)) ws[R] = []; + var rtfre = /\\\w+\b/g; + var last_index = 0; + var res; + var C = -1; + while((res = rtfre.exec(rowtf))) { + switch(res[0]) { + case "\\cell": + var data = rowtf.slice(last_index, rtfre.lastIndex - res[0].length); + if(data[0] == " ") data = data.slice(1); + ++C; + if(data.length) { + // TODO: value parsing, including codepage adjustments + var cell = {v: data, t:"s"}; + if(Array.isArray(ws)) ws[R][C] = cell; + else ws[encode_cell({r:R, c:C})] = cell; + } + break; + } + last_index = rtfre.lastIndex; + } + if(C > range.e.c) range.e.c = C; + }); + ws['!ref'] = encode_range(range); + return ws; + } + + function rtf_to_workbook(d, opts) { return sheet_to_workbook(rtf_to_sheet(d, opts), opts); } + + /* TODO: this is a stub */ + function sheet_to_rtf(ws) { + var o = ["{\\rtf1\\ansi"]; + var r = safe_decode_range(ws['!ref']), cell; + var dense = Array.isArray(ws); + for(var R = r.s.r; R <= r.e.r; ++R) { + o.push("\\trowd\\trautofit1"); + for(var C = r.s.c; C <= r.e.c; ++C) o.push("\\cellx" + (C+1)); + o.push("\\pard\\intbl"); + for(C = r.s.c; C <= r.e.c; ++C) { + var coord = encode_cell({r:R,c:C}); + cell = dense ? (ws[R]||[])[C]: ws[coord]; + if(!cell || cell.v == null && (!cell.f || cell.F)) continue; + o.push(" " + (cell.w || (format_cell(cell), cell.w))); + o.push("\\cell"); + } + o.push("\\pard\\intbl\\row"); + } + return o.join("") + "}"; + } + + return { + to_workbook: rtf_to_workbook, + to_sheet: rtf_to_sheet, + from_sheet: sheet_to_rtf + }; +})(); +function hex2RGB(h) { + var o = h.slice(h[0]==="#"?1:0).slice(0,6); + return [parseInt(o.slice(0,2),16),parseInt(o.slice(2,4),16),parseInt(o.slice(4,6),16)]; +} +function rgb2Hex(rgb) { + for(var i=0,o=1; i!=3; ++i) o = o*256 + (rgb[i]>255?255:rgb[i]<0?0:rgb[i]); + return o.toString(16).toUpperCase().slice(1); +} + +function rgb2HSL(rgb) { + var R = rgb[0]/255, G = rgb[1]/255, B=rgb[2]/255; + var M = Math.max(R, G, B), m = Math.min(R, G, B), C = M - m; + if(C === 0) return [0, 0, R]; + + var H6 = 0, S = 0, L2 = (M + m); + S = C / (L2 > 1 ? 2 - L2 : L2); + switch(M){ + case R: H6 = ((G - B) / C + 6)%6; break; + case G: H6 = ((B - R) / C + 2); break; + case B: H6 = ((R - G) / C + 4); break; + } + return [H6 / 6, S, L2 / 2]; +} + +function hsl2RGB(hsl){ + var H = hsl[0], S = hsl[1], L = hsl[2]; + var C = S * 2 * (L < 0.5 ? L : 1 - L), m = L - C/2; + var rgb = [m,m,m], h6 = 6*H; + + var X; + if(S !== 0) switch(h6|0) { + case 0: case 6: X = C * h6; rgb[0] += C; rgb[1] += X; break; + case 1: X = C * (2 - h6); rgb[0] += X; rgb[1] += C; break; + case 2: X = C * (h6 - 2); rgb[1] += C; rgb[2] += X; break; + case 3: X = C * (4 - h6); rgb[1] += X; rgb[2] += C; break; + case 4: X = C * (h6 - 4); rgb[2] += C; rgb[0] += X; break; + case 5: X = C * (6 - h6); rgb[2] += X; rgb[0] += C; break; + } + for(var i = 0; i != 3; ++i) rgb[i] = Math.round(rgb[i]*255); + return rgb; +} + +/* 18.8.3 bgColor tint algorithm */ +function rgb_tint(hex, tint) { + if(tint === 0) return hex; + var hsl = rgb2HSL(hex2RGB(hex)); + if (tint < 0) hsl[2] = hsl[2] * (1 + tint); + else hsl[2] = 1 - (1 - hsl[2]) * (1 - tint); + return rgb2Hex(hsl2RGB(hsl)); +} + +/* 18.3.1.13 width calculations */ +/* [MS-OI29500] 2.1.595 Column Width & Formatting */ +var DEF_MDW = 6, MAX_MDW = 15, MIN_MDW = 1, MDW = DEF_MDW; +function width2px(width) { return Math.floor(( width + (Math.round(128/MDW))/256 )* MDW ); } +function px2char(px) { return (Math.floor((px - 5)/MDW * 100 + 0.5))/100; } +function char2width(chr) { return (Math.round((chr * MDW + 5)/MDW*256))/256; } +//function px2char_(px) { return (((px - 5)/MDW * 100 + 0.5))/100; } +//function char2width_(chr) { return (((chr * MDW + 5)/MDW*256))/256; } +function cycle_width(collw) { return char2width(px2char(width2px(collw))); } +/* XLSX/XLSB/XLS specify width in units of MDW */ +function find_mdw_colw(collw) { + var delta = Math.abs(collw - cycle_width(collw)), _MDW = MDW; + if(delta > 0.005) for(MDW=MIN_MDW; MDW 0.5) guess--; + if(Math.abs(guess) < delta) { delta = Math.abs(guess); _MDW = MDW; } + } + MDW = _MDW; +}*/ + +function process_col(coll) { + if(coll.width) { + coll.wpx = width2px(coll.width); + coll.wch = px2char(coll.wpx); + coll.MDW = MDW; + } else if(coll.wpx) { + coll.wch = px2char(coll.wpx); + coll.width = char2width(coll.wch); + coll.MDW = MDW; + } else if(typeof coll.wch == 'number') { + coll.width = char2width(coll.wch); + coll.wpx = width2px(coll.width); + coll.MDW = MDW; + } + if(coll.customWidth) delete coll.customWidth; +} + +var DEF_PPI = 96, PPI = DEF_PPI; +function px2pt(px) { return px * 96 / PPI; } +function pt2px(pt) { return pt * PPI / 96; } + +/* [MS-EXSPXML3] 2.4.54 ST_enmPattern */ +var XLMLPatternTypeMap = { + "None": "none", + "Solid": "solid", + "Gray50": "mediumGray", + "Gray75": "darkGray", + "Gray25": "lightGray", + "HorzStripe": "darkHorizontal", + "VertStripe": "darkVertical", + "ReverseDiagStripe": "darkDown", + "DiagStripe": "darkUp", + "DiagCross": "darkGrid", + "ThickDiagCross": "darkTrellis", + "ThinHorzStripe": "lightHorizontal", + "ThinVertStripe": "lightVertical", + "ThinReverseDiagStripe": "lightDown", + "ThinHorzCross": "lightGrid" +}; + +/* 18.8.5 borders CT_Borders */ +function parse_borders(t, styles, themes, opts) { + styles.Borders = []; + var border = {}; + var pass = false; + (t[0].match(tagregex)||[]).forEach(function(x) { + var y = parsexmltag(x); + switch(strip_ns(y[0])) { + case '': case '': break; + + /* 18.8.4 border CT_Border */ + case '': case '': + border = {}; + if(y.diagonalUp) border.diagonalUp = parsexmlbool(y.diagonalUp); + if(y.diagonalDown) border.diagonalDown = parsexmlbool(y.diagonalDown); + styles.Borders.push(border); + break; + case '': break; + + /* note: not in spec, appears to be CT_BorderPr */ + case '': break; + case '': break; + case '': break; + + /* note: not in spec, appears to be CT_BorderPr */ + case '': break; + case '': break; + case '': break; + + /* 18.8.43 top CT_BorderPr */ + case '': break; + case '': break; + case '': break; + + /* 18.8.6 bottom CT_BorderPr */ + case '': break; + case '': break; + case '': break; + + /* 18.8.13 diagonal CT_BorderPr */ + case '': case '': break; + case '': break; + + /* 18.8.25 horizontal CT_BorderPr */ + case '': case '': break; + case '': break; + + /* 18.8.44 vertical CT_BorderPr */ + case '': case '': break; + case '': break; + + /* 18.8.37 start CT_BorderPr */ + case '': case '': break; + case '': break; + + /* 18.8.16 end CT_BorderPr */ + case '': case '': break; + case '': break; + + /* 18.8.? color CT_Color */ + case '': + break; + case '': case '': break; + + /* 18.2.10 extLst CT_ExtensionList ? */ + case '': case '': break; + case '': pass = false; break; + default: if(opts && opts.WTF) { + if(!pass) throw new Error('unrecognized ' + y[0] + ' in borders'); + } + } + }); +} + +/* 18.8.21 fills CT_Fills */ +function parse_fills(t, styles, themes, opts) { + styles.Fills = []; + var fill = {}; + var pass = false; + (t[0].match(tagregex)||[]).forEach(function(x) { + var y = parsexmltag(x); + switch(strip_ns(y[0])) { + case '': case '': break; + + /* 18.8.20 fill CT_Fill */ + case '': case '': + fill = {}; styles.Fills.push(fill); break; + case '': break; + + /* 18.8.24 gradientFill CT_GradientFill */ + case '': break; + case '': styles.Fills.push(fill); fill = {}; break; + + /* 18.8.32 patternFill CT_PatternFill */ + case '': + if(y.patternType) fill.patternType = y.patternType; + break; + case '': case '': break; + + /* 18.8.3 bgColor CT_Color */ + case '': case '': break; + + /* 18.8.19 fgColor CT_Color */ + case '': case '': break; + + /* 18.8.38 stop CT_GradientStop */ + case '': break; + case '': break; + + /* 18.8.? color CT_Color */ + case '': break; + case '': break; + + /* 18.2.10 extLst CT_ExtensionList ? */ + case '': case '': break; + case '': pass = false; break; + default: if(opts && opts.WTF) { + if(!pass) throw new Error('unrecognized ' + y[0] + ' in fills'); + } + } + }); +} + +/* 18.8.23 fonts CT_Fonts */ +function parse_fonts(t, styles, themes, opts) { + styles.Fonts = []; + var font = {}; + var pass = false; + (t[0].match(tagregex)||[]).forEach(function(x) { + var y = parsexmltag(x); + switch(strip_ns(y[0])) { + case '': case '': break; + + /* 18.8.22 font CT_Font */ + case '': break; + case '': case '': + styles.Fonts.push(font); + font = {}; + break; + + /* 18.8.29 name CT_FontName */ + case '': case '': break; + + /* 18.8.2 b CT_BooleanProperty */ + case '': font.bold = 1; break; + + /* 18.8.26 i CT_BooleanProperty */ + case '': font.italic = 1; break; + + /* 18.4.13 u CT_UnderlineProperty */ + case '': font.underline = 1; break; + + /* 18.4.10 strike CT_BooleanProperty */ + case '': font.strike = 1; break; + + /* 18.4.2 outline CT_BooleanProperty */ + case '': font.outline = 1; break; + + /* 18.8.36 shadow CT_BooleanProperty */ + case '': font.shadow = 1; break; + + /* 18.8.12 condense CT_BooleanProperty */ + case '': font.condense = 1; break; + + /* 18.8.17 extend CT_BooleanProperty */ + case '': font.extend = 1; break; + + /* 18.4.11 sz CT_FontSize */ + case '': case '': break; + + /* 18.4.14 vertAlign CT_VerticalAlignFontProperty */ + case '': case '': break; + + /* 18.8.18 family CT_FontFamily */ + case '': case '': break; + + /* 18.8.35 scheme CT_FontScheme */ + case '': case '': break; + + /* 18.4.1 charset CT_IntProperty */ + case '': case '': break; + + /* note: sometimes mc:AlternateContent appears bare */ + case '': pass = false; break; + + /* 18.2.10 extLst CT_ExtensionList ? */ + case '': case '': break; + case '': pass = false; break; + default: if(opts && opts.WTF) { + if(!pass) throw new Error('unrecognized ' + y[0] + ' in fonts'); + } + } + }); +} + +/* 18.8.31 numFmts CT_NumFmts */ +function parse_numFmts(t, styles, opts) { + styles.NumberFmt = []; + var k/*Array*/ = (keys(table_fmt)); + for(var i=0; i < k.length; ++i) styles.NumberFmt[k[i]] = table_fmt[k[i]]; + var m = t[0].match(tagregex); + if(!m) return; + for(i=0; i < m.length; ++i) { + var y = parsexmltag(m[i]); + switch(strip_ns(y[0])) { + case '': case '': case '': break; + case '0) { + if(j > 0x188) { + for(j = 0x188; j > 0x3c; --j) if(styles.NumberFmt[j] == null) break; + styles.NumberFmt[j] = f; + } + SSF_load(f,j); + } + } break; + case '': break; + default: if(opts.WTF) throw new Error('unrecognized ' + y[0] + ' in numFmts'); + } + } +} + +function write_numFmts(NF) { + var o = [""]; + [[5,8],[23,26],[41,44],[/*63*/50,/*66],[164,*/392]].forEach(function(r) { + for(var i = r[0]; i <= r[1]; ++i) if(NF[i] != null) o[o.length] = (writextag('numFmt',null,{numFmtId:i,formatCode:escapexml(NF[i])})); + }); + if(o.length === 1) return ""; + o[o.length] = (""); + o[0] = writextag('numFmts', null, { count:o.length-2 }).replace("/>", ">"); + return o.join(""); +} + +/* 18.8.10 cellXfs CT_CellXfs */ +var cellXF_uint = [ "numFmtId", "fillId", "fontId", "borderId", "xfId" ]; +var cellXF_bool = [ "applyAlignment", "applyBorder", "applyFill", "applyFont", "applyNumberFormat", "applyProtection", "pivotButton", "quotePrefix" ]; +function parse_cellXfs(t, styles, opts) { + styles.CellXf = []; + var xf; + var pass = false; + (t[0].match(tagregex)||[]).forEach(function(x) { + var y = parsexmltag(x), i = 0; + switch(strip_ns(y[0])) { + case '': case '': case '': break; + + /* 18.8.45 xf CT_Xf */ + case '': + xf = y; + delete xf[0]; + for(i = 0; i < cellXF_uint.length; ++i) if(xf[cellXF_uint[i]]) + xf[cellXF_uint[i]] = parseInt(xf[cellXF_uint[i]], 10); + for(i = 0; i < cellXF_bool.length; ++i) if(xf[cellXF_bool[i]]) + xf[cellXF_bool[i]] = parsexmlbool(xf[cellXF_bool[i]]); + if(styles.NumberFmt && xf.numFmtId > 0x188) { + for(i = 0x188; i > 0x3c; --i) if(styles.NumberFmt[xf.numFmtId] == styles.NumberFmt[i]) { xf.numFmtId = i; break; } + } + styles.CellXf.push(xf); break; + case '': break; + + /* 18.8.1 alignment CT_CellAlignment */ + case '': + var alignment = {}; + if(y.vertical) alignment.vertical = y.vertical; + if(y.horizontal) alignment.horizontal = y.horizontal; + if(y.textRotation != null) alignment.textRotation = y.textRotation; + if(y.indent) alignment.indent = y.indent; + if(y.wrapText) alignment.wrapText = parsexmlbool(y.wrapText); + xf.alignment = alignment; + break; + case '': break; + + /* 18.8.33 protection CT_CellProtection */ + case '': case '': break; + + /* note: sometimes mc:AlternateContent appears bare */ + case '': pass = false; break; + + /* 18.2.10 extLst CT_ExtensionList ? */ + case '': case '': break; + case '': pass = false; break; + default: if(opts && opts.WTF) { + if(!pass) throw new Error('unrecognized ' + y[0] + ' in cellXfs'); + } + } + }); +} + +function write_cellXfs(cellXfs) { + var o = []; + o[o.length] = (writextag('cellXfs',null)); + cellXfs.forEach(function(c) { + o[o.length] = (writextag('xf', null, c)); + }); + o[o.length] = (""); + if(o.length === 2) return ""; + o[0] = writextag('cellXfs',null, {count:o.length-2}).replace("/>",">"); + return o.join(""); +} + +/* 18.8 Styles CT_Stylesheet*/ +var parse_sty_xml= (function make_pstyx() { +var numFmtRegex = /<(?:\w+:)?numFmts([^>]*)>[\S\s]*?<\/(?:\w+:)?numFmts>/; +var cellXfRegex = /<(?:\w+:)?cellXfs([^>]*)>[\S\s]*?<\/(?:\w+:)?cellXfs>/; +var fillsRegex = /<(?:\w+:)?fills([^>]*)>[\S\s]*?<\/(?:\w+:)?fills>/; +var fontsRegex = /<(?:\w+:)?fonts([^>]*)>[\S\s]*?<\/(?:\w+:)?fonts>/; +var bordersRegex = /<(?:\w+:)?borders([^>]*)>[\S\s]*?<\/(?:\w+:)?borders>/; + +return function parse_sty_xml(data, themes, opts) { + var styles = {}; + if(!data) return styles; + data = data.replace(//mg,"").replace(//gm,""); + /* 18.8.39 styleSheet CT_Stylesheet */ + var t; + + /* 18.8.31 numFmts CT_NumFmts ? */ + if((t=data.match(numFmtRegex))) parse_numFmts(t, styles, opts); + + /* 18.8.23 fonts CT_Fonts ? */ + if((t=data.match(fontsRegex))) parse_fonts(t, styles, themes, opts); + + /* 18.8.21 fills CT_Fills ? */ + if((t=data.match(fillsRegex))) parse_fills(t, styles, themes, opts); + + /* 18.8.5 borders CT_Borders ? */ + if((t=data.match(bordersRegex))) parse_borders(t, styles, themes, opts); + + /* 18.8.9 cellStyleXfs CT_CellStyleXfs ? */ + /* 18.8.8 cellStyles CT_CellStyles ? */ + + /* 18.8.10 cellXfs CT_CellXfs ? */ + if((t=data.match(cellXfRegex))) parse_cellXfs(t, styles, opts); + + /* 18.8.15 dxfs CT_Dxfs ? */ + /* 18.8.42 tableStyles CT_TableStyles ? */ + /* 18.8.11 colors CT_Colors ? */ + /* 18.2.10 extLst CT_ExtensionList ? */ + + return styles; +}; +})(); + +function write_sty_xml(wb, opts) { + var o = [XML_HEADER, writextag('styleSheet', null, { + 'xmlns': XMLNS_main[0], + 'xmlns:vt': XMLNS.vt + })], w; + if(wb.SSF && (w = write_numFmts(wb.SSF)) != null) o[o.length] = w; + o[o.length] = (''); + o[o.length] = (''); + o[o.length] = (''); + o[o.length] = (''); + if((w = write_cellXfs(opts.cellXfs))) o[o.length] = (w); + o[o.length] = (''); + o[o.length] = (''); + o[o.length] = (''); + + if(o.length>2){ o[o.length] = (''); o[1]=o[1].replace("/>",">"); } + return o.join(""); +} +/* [MS-XLSB] 2.4.657 BrtFmt */ +function parse_BrtFmt(data, length) { + var numFmtId = data.read_shift(2); + var stFmtCode = parse_XLWideString(data,length-2); + return [numFmtId, stFmtCode]; +} +function write_BrtFmt(i, f, o) { + if(!o) o = new_buf(6 + 4 * f.length); + o.write_shift(2, i); + write_XLWideString(f, o); + var out = (o.length > o.l) ? o.slice(0, o.l) : o; + if(o.l == null) o.l = o.length; + return out; +} + +/* [MS-XLSB] 2.4.659 BrtFont TODO */ +function parse_BrtFont(data, length, opts) { + var out = ({}); + + out.sz = data.read_shift(2) / 20; + + var grbit = parse_FontFlags(data, 2, opts); + if(grbit.fItalic) out.italic = 1; + if(grbit.fCondense) out.condense = 1; + if(grbit.fExtend) out.extend = 1; + if(grbit.fShadow) out.shadow = 1; + if(grbit.fOutline) out.outline = 1; + if(grbit.fStrikeout) out.strike = 1; + + var bls = data.read_shift(2); + if(bls === 0x02BC) out.bold = 1; + + switch(data.read_shift(2)) { + /* case 0: out.vertAlign = "baseline"; break; */ + case 1: out.vertAlign = "superscript"; break; + case 2: out.vertAlign = "subscript"; break; + } + + var underline = data.read_shift(1); + if(underline != 0) out.underline = underline; + + var family = data.read_shift(1); + if(family > 0) out.family = family; + + var bCharSet = data.read_shift(1); + if(bCharSet > 0) out.charset = bCharSet; + + data.l++; + out.color = parse_BrtColor(data, 8); + + switch(data.read_shift(1)) { + /* case 0: out.scheme = "none": break; */ + case 1: out.scheme = "major"; break; + case 2: out.scheme = "minor"; break; + } + + out.name = parse_XLWideString(data, length - 21); + + return out; +} +function write_BrtFont(font, o) { + if(!o) o = new_buf(25+4*32); + o.write_shift(2, font.sz * 20); + write_FontFlags(font, o); + o.write_shift(2, font.bold ? 0x02BC : 0x0190); + var sss = 0; + if(font.vertAlign == "superscript") sss = 1; + else if(font.vertAlign == "subscript") sss = 2; + o.write_shift(2, sss); + o.write_shift(1, font.underline || 0); + o.write_shift(1, font.family || 0); + o.write_shift(1, font.charset || 0); + o.write_shift(1, 0); + write_BrtColor(font.color, o); + var scheme = 0; + if(font.scheme == "major") scheme = 1; + if(font.scheme == "minor") scheme = 2; + o.write_shift(1, scheme); + write_XLWideString(font.name, o); + return o.length > o.l ? o.slice(0, o.l) : o; +} + +/* [MS-XLSB] 2.4.650 BrtFill */ +var XLSBFillPTNames = [ + "none", + "solid", + "mediumGray", + "darkGray", + "lightGray", + "darkHorizontal", + "darkVertical", + "darkDown", + "darkUp", + "darkGrid", + "darkTrellis", + "lightHorizontal", + "lightVertical", + "lightDown", + "lightUp", + "lightGrid", + "lightTrellis", + "gray125", + "gray0625" +]; +var rev_XLSBFillPTNames; +/* TODO: gradient fill representation */ +var parse_BrtFill = parsenoop; +function write_BrtFill(fill, o) { + if(!o) o = new_buf(4*3 + 8*7 + 16*1); + if(!rev_XLSBFillPTNames) rev_XLSBFillPTNames = (evert(XLSBFillPTNames)); + var fls = rev_XLSBFillPTNames[fill.patternType]; + if(fls == null) fls = 0x28; + o.write_shift(4, fls); + var j = 0; + if(fls != 0x28) { + /* TODO: custom FG Color */ + write_BrtColor({auto:1}, o); + /* TODO: custom BG Color */ + write_BrtColor({auto:1}, o); + + for(; j < 12; ++j) o.write_shift(4, 0); + } else { + for(; j < 4; ++j) o.write_shift(4, 0); + + for(; j < 12; ++j) o.write_shift(4, 0); /* TODO */ + /* iGradientType */ + /* xnumDegree */ + /* xnumFillToLeft */ + /* xnumFillToRight */ + /* xnumFillToTop */ + /* xnumFillToBottom */ + /* cNumStop */ + /* xfillGradientStop */ + } + return o.length > o.l ? o.slice(0, o.l) : o; +} + +/* [MS-XLSB] 2.4.824 BrtXF */ +function parse_BrtXF(data, length) { + var tgt = data.l + length; + var ixfeParent = data.read_shift(2); + var ifmt = data.read_shift(2); + data.l = tgt; + return {ixfe:ixfeParent, numFmtId:ifmt }; +} +function write_BrtXF(data, ixfeP, o) { + if(!o) o = new_buf(16); + o.write_shift(2, ixfeP||0); + o.write_shift(2, data.numFmtId||0); + o.write_shift(2, 0); /* iFont */ + o.write_shift(2, 0); /* iFill */ + o.write_shift(2, 0); /* ixBorder */ + o.write_shift(1, 0); /* trot */ + o.write_shift(1, 0); /* indent */ + var flow = 0; + o.write_shift(1, flow); /* flags */ + o.write_shift(1, 0); /* flags */ + o.write_shift(1, 0); /* xfGrbitAtr */ + o.write_shift(1, 0); + return o; +} + +/* [MS-XLSB] 2.5.4 Blxf TODO */ +function write_Blxf(data, o) { + if(!o) o = new_buf(10); + o.write_shift(1, 0); /* dg */ + o.write_shift(1, 0); + o.write_shift(4, 0); /* color */ + o.write_shift(4, 0); /* color */ + return o; +} +/* [MS-XLSB] 2.4.302 BrtBorder TODO */ +var parse_BrtBorder = parsenoop; +function write_BrtBorder(border, o) { + if(!o) o = new_buf(51); + o.write_shift(1, 0); /* diagonal */ + write_Blxf(null, o); /* top */ + write_Blxf(null, o); /* bottom */ + write_Blxf(null, o); /* left */ + write_Blxf(null, o); /* right */ + write_Blxf(null, o); /* diag */ + return o.length > o.l ? o.slice(0, o.l) : o; +} + +/* [MS-XLSB] 2.4.763 BrtStyle TODO */ +function write_BrtStyle(style, o) { + if(!o) o = new_buf(12+4*10); + o.write_shift(4, style.xfId); + o.write_shift(2, 1); + o.write_shift(1, +style.builtinId); + o.write_shift(1, 0); /* iLevel */ + write_XLNullableWideString(style.name || "", o); + return o.length > o.l ? o.slice(0, o.l) : o; +} + +/* [MS-XLSB] 2.4.272 BrtBeginTableStyles */ +function write_BrtBeginTableStyles(cnt, defTableStyle, defPivotStyle) { + var o = new_buf(4+256*2*4); + o.write_shift(4, cnt); + write_XLNullableWideString(defTableStyle, o); + write_XLNullableWideString(defPivotStyle, o); + return o.length > o.l ? o.slice(0, o.l) : o; +} + +/* [MS-XLSB] 2.1.7.50 Styles */ +function parse_sty_bin(data, themes, opts) { + var styles = {}; + styles.NumberFmt = ([]); + for(var y in table_fmt) styles.NumberFmt[y] = table_fmt[y]; + + styles.CellXf = []; + styles.Fonts = []; + var state = []; + var pass = false; + recordhopper(data, function hopper_sty(val, R, RT) { + switch(RT) { + case 0x002C: /* BrtFmt */ + styles.NumberFmt[val[0]] = val[1]; SSF_load(val[1], val[0]); + break; + case 0x002B: /* BrtFont */ + styles.Fonts.push(val); + if(val.color.theme != null && themes && themes.themeElements && themes.themeElements.clrScheme) { + val.color.rgb = rgb_tint(themes.themeElements.clrScheme[val.color.theme].rgb, val.color.tint || 0); + } + break; + case 0x0401: /* BrtKnownFonts */ break; + case 0x002D: /* BrtFill */ + break; + case 0x002E: /* BrtBorder */ + break; + case 0x002F: /* BrtXF */ + if(state[state.length - 1] == 0x0269 /* BrtBeginCellXFs */) { + styles.CellXf.push(val); + } + break; + case 0x0030: /* BrtStyle */ + case 0x01FB: /* BrtDXF */ + case 0x023C: /* BrtMRUColor */ + case 0x01DB: /* BrtIndexedColor */ + break; + + case 0x0493: /* BrtDXF14 */ + case 0x0836: /* BrtDXF15 */ + case 0x046A: /* BrtSlicerStyleElement */ + case 0x0200: /* BrtTableStyleElement */ + case 0x082F: /* BrtTimelineStyleElement */ + case 0x0C00: /* BrtUid */ + break; + + case 0x0023: /* BrtFRTBegin */ + pass = true; break; + case 0x0024: /* BrtFRTEnd */ + pass = false; break; + case 0x0025: /* BrtACBegin */ + state.push(RT); pass = true; break; + case 0x0026: /* BrtACEnd */ + state.pop(); pass = false; break; + + default: + if(R.T > 0) state.push(RT); + else if(R.T < 0) state.pop(); + else if(!pass || (opts.WTF && state[state.length-1] != 0x0025 /* BrtACBegin */)) throw new Error("Unexpected record 0x" + RT.toString(16)); + } + }); + return styles; +} + +function write_FMTS_bin(ba, NF) { + if(!NF) return; + var cnt = 0; + [[5,8],[23,26],[41,44],[/*63*/50,/*66],[164,*/392]].forEach(function(r) { +for(var i = r[0]; i <= r[1]; ++i) if(NF[i] != null) ++cnt; + }); + + if(cnt == 0) return; + write_record(ba, 0x0267 /* BrtBeginFmts */, write_UInt32LE(cnt)); + [[5,8],[23,26],[41,44],[/*63*/50,/*66],[164,*/392]].forEach(function(r) { +for(var i = r[0]; i <= r[1]; ++i) if(NF[i] != null) write_record(ba, 0x002C /* BrtFmt */, write_BrtFmt(i, NF[i])); + }); + write_record(ba, 0x0268 /* BrtEndFmts */); +} + +function write_FONTS_bin(ba) { + var cnt = 1; + + if(cnt == 0) return; + write_record(ba, 0x0263 /* BrtBeginFonts */, write_UInt32LE(cnt)); + write_record(ba, 0x002B /* BrtFont */, write_BrtFont({ + sz:12, + color: {theme:1}, + name: "Calibri", + family: 2, + scheme: "minor" + })); + /* 1*65491BrtFont [ACFONTS] */ + write_record(ba, 0x0264 /* BrtEndFonts */); +} + +function write_FILLS_bin(ba) { + var cnt = 2; + + if(cnt == 0) return; + write_record(ba, 0x025B /* BrtBeginFills */, write_UInt32LE(cnt)); + write_record(ba, 0x002D /* BrtFill */, write_BrtFill({patternType:"none"})); + write_record(ba, 0x002D /* BrtFill */, write_BrtFill({patternType:"gray125"})); + /* 1*65431BrtFill */ + write_record(ba, 0x025C /* BrtEndFills */); +} + +function write_BORDERS_bin(ba) { + var cnt = 1; + + if(cnt == 0) return; + write_record(ba, 0x0265 /* BrtBeginBorders */, write_UInt32LE(cnt)); + write_record(ba, 0x002E /* BrtBorder */, write_BrtBorder({})); + /* 1*65430BrtBorder */ + write_record(ba, 0x0266 /* BrtEndBorders */); +} + +function write_CELLSTYLEXFS_bin(ba) { + var cnt = 1; + write_record(ba, 0x0272 /* BrtBeginCellStyleXFs */, write_UInt32LE(cnt)); + write_record(ba, 0x002F /* BrtXF */, write_BrtXF({ + numFmtId: 0, + fontId: 0, + fillId: 0, + borderId: 0 + }, 0xFFFF)); + /* 1*65430(BrtXF *FRT) */ + write_record(ba, 0x0273 /* BrtEndCellStyleXFs */); +} + +function write_CELLXFS_bin(ba, data) { + write_record(ba, 0x0269 /* BrtBeginCellXFs */, write_UInt32LE(data.length)); + data.forEach(function(c) { write_record(ba, 0x002F /* BrtXF */, write_BrtXF(c,0)); }); + /* 1*65430(BrtXF *FRT) */ + write_record(ba, 0x026A /* BrtEndCellXFs */); +} + +function write_STYLES_bin(ba) { + var cnt = 1; + + write_record(ba, 0x026B /* BrtBeginStyles */, write_UInt32LE(cnt)); + write_record(ba, 0x0030 /* BrtStyle */, write_BrtStyle({ + xfId:0, + builtinId:0, + name:"Normal" + })); + /* 1*65430(BrtStyle *FRT) */ + write_record(ba, 0x026C /* BrtEndStyles */); +} + +function write_DXFS_bin(ba) { + var cnt = 0; + + write_record(ba, 0x01F9 /* BrtBeginDXFs */, write_UInt32LE(cnt)); + /* *2147483647(BrtDXF *FRT) */ + write_record(ba, 0x01FA /* BrtEndDXFs */); +} + +function write_TABLESTYLES_bin(ba) { + var cnt = 0; + + write_record(ba, 0x01FC /* BrtBeginTableStyles */, write_BrtBeginTableStyles(cnt, "TableStyleMedium9", "PivotStyleMedium4")); + /* *TABLESTYLE */ + write_record(ba, 0x01FD /* BrtEndTableStyles */); +} + +function write_COLORPALETTE_bin() { + return; + /* BrtBeginColorPalette [INDEXEDCOLORS] [MRUCOLORS] BrtEndColorPalette */ +} + +/* [MS-XLSB] 2.1.7.50 Styles */ +function write_sty_bin(wb, opts) { + var ba = buf_array(); + write_record(ba, 0x0116 /* BrtBeginStyleSheet */); + write_FMTS_bin(ba, wb.SSF); + write_FONTS_bin(ba, wb); + write_FILLS_bin(ba, wb); + write_BORDERS_bin(ba, wb); + write_CELLSTYLEXFS_bin(ba, wb); + write_CELLXFS_bin(ba, opts.cellXfs); + write_STYLES_bin(ba, wb); + write_DXFS_bin(ba, wb); + write_TABLESTYLES_bin(ba, wb); + write_COLORPALETTE_bin(ba, wb); + /* FRTSTYLESHEET*/ + write_record(ba, 0x0117 /* BrtEndStyleSheet */); + return ba.end(); +} +/* Even though theme layout is dk1 lt1 dk2 lt2, true order is lt1 dk1 lt2 dk2 */ +var XLSXThemeClrScheme = [ + '', '', '', '', + '', '', '', + '', '', '', + '', '' +]; +/* 20.1.6.2 clrScheme CT_ColorScheme */ +function parse_clrScheme(t, themes, opts) { + themes.themeElements.clrScheme = []; + var color = {}; + (t[0].match(tagregex)||[]).forEach(function(x) { + var y = parsexmltag(x); + switch(y[0]) { + /* 20.1.6.2 clrScheme (Color Scheme) CT_ColorScheme */ + case '': break; + + /* 20.1.2.3.32 srgbClr CT_SRgbColor */ + case '': case '': + case '': case '': + case '': case '': + case '': case '': + case '': case '': + case '': case '': + case '': case '': + case '': case '': + case '': case '': + case '': case '': + case '': case '': + case '': case '': + if (y[0].charAt(1) === '/') { + themes.themeElements.clrScheme[XLSXThemeClrScheme.indexOf(y[0])] = color; + color = {}; + } else { + color.name = y[0].slice(3, y[0].length - 1); + } + break; + + default: if(opts && opts.WTF) throw new Error('Unrecognized ' + y[0] + ' in clrScheme'); + } + }); +} + +/* 20.1.4.1.18 fontScheme CT_FontScheme */ +function parse_fontScheme() { } + +/* 20.1.4.1.15 fmtScheme CT_StyleMatrix */ +function parse_fmtScheme() { } + +var clrsregex = /]*)>[\s\S]*<\/a:clrScheme>/; +var fntsregex = /]*)>[\s\S]*<\/a:fontScheme>/; +var fmtsregex = /]*)>[\s\S]*<\/a:fmtScheme>/; + +/* 20.1.6.10 themeElements CT_BaseStyles */ +function parse_themeElements(data, themes, opts) { + themes.themeElements = {}; + + var t; + + [ + /* clrScheme CT_ColorScheme */ + ['clrScheme', clrsregex, parse_clrScheme], + /* fontScheme CT_FontScheme */ + ['fontScheme', fntsregex, parse_fontScheme], + /* fmtScheme CT_StyleMatrix */ + ['fmtScheme', fmtsregex, parse_fmtScheme] + ].forEach(function(m) { + if(!(t=data.match(m[1]))) throw new Error(m[0] + ' not found in themeElements'); + m[2](t, themes, opts); + }); +} + +var themeltregex = /]*)>[\s\S]*<\/a:themeElements>/; + +/* 14.2.7 Theme Part */ +function parse_theme_xml(data, opts) { + /* 20.1.6.9 theme CT_OfficeStyleSheet */ + if(!data || data.length === 0) data = write_theme(); + + var t; + var themes = {}; + + /* themeElements CT_BaseStyles */ + if(!(t=data.match(themeltregex))) throw new Error('themeElements not found in theme'); + parse_themeElements(t[0], themes, opts); + themes.raw = data; + return themes; +} + +function write_theme(Themes, opts) { + if(opts && opts.themeXLSX) return opts.themeXLSX; + if(Themes && typeof Themes.raw == "string") return Themes.raw; + var o = [XML_HEADER]; + o[o.length] = ''; + o[o.length] = ''; + + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + return o.join(""); +} +/* [MS-XLS] 2.4.326 TODO: payload is a zip file */ +function parse_Theme(blob, length, opts) { + var end = blob.l + length; + var dwThemeVersion = blob.read_shift(4); + if(dwThemeVersion === 124226) return; + if(!opts.cellStyles) { blob.l = end; return; } + var data = blob.slice(blob.l); + blob.l = end; + var zip; try { zip = zip_read(data, {type: "array"}); } catch(e) { return; } + var themeXML = getzipstr(zip, "theme/theme/theme1.xml", true); + if(!themeXML) return; + return parse_theme_xml(themeXML, opts); +} + +/* 2.5.49 */ +function parse_ColorTheme(blob) { return blob.read_shift(4); } + +/* 2.5.155 */ +function parse_FullColorExt(blob) { + var o = {}; + o.xclrType = blob.read_shift(2); + o.nTintShade = blob.read_shift(2); + switch(o.xclrType) { + case 0: blob.l += 4; break; + case 1: o.xclrValue = parse_IcvXF(blob, 4); break; + case 2: o.xclrValue = parse_LongRGBA(blob, 4); break; + case 3: o.xclrValue = parse_ColorTheme(blob, 4); break; + case 4: blob.l += 4; break; + } + blob.l += 8; + return o; +} + +/* 2.5.164 TODO: read 7 bits*/ +function parse_IcvXF(blob, length) { + return parsenoop(blob, length); +} + +/* 2.5.280 */ +function parse_XFExtGradient(blob, length) { + return parsenoop(blob, length); +} + +/* [MS-XLS] 2.5.108 */ +function parse_ExtProp(blob) { + var extType = blob.read_shift(2); + var cb = blob.read_shift(2) - 4; + var o = [extType]; + switch(extType) { + case 0x04: case 0x05: case 0x07: case 0x08: + case 0x09: case 0x0A: case 0x0B: case 0x0D: + o[1] = parse_FullColorExt(blob, cb); break; + case 0x06: o[1] = parse_XFExtGradient(blob, cb); break; + case 0x0E: case 0x0F: o[1] = blob.read_shift(cb === 1 ? 1 : 2); break; + default: throw new Error("Unrecognized ExtProp type: " + extType + " " + cb); + } + return o; +} + +/* 2.4.355 */ +function parse_XFExt(blob, length) { + var end = blob.l + length; + blob.l += 2; + var ixfe = blob.read_shift(2); + blob.l += 2; + var cexts = blob.read_shift(2); + var ext = []; + while(cexts-- > 0) ext.push(parse_ExtProp(blob, end-blob.l)); + return {ixfe:ixfe, ext:ext}; +} + +/* xf is an XF, see parse_XFExt for xfext */ +function update_xfext(xf, xfext) { + xfext.forEach(function(xfe) { + switch(xfe[0]) { /* 2.5.108 extPropData */ + case 0x04: break; /* foreground color */ + case 0x05: break; /* background color */ + case 0x06: break; /* gradient fill */ + case 0x07: break; /* top cell border color */ + case 0x08: break; /* bottom cell border color */ + case 0x09: break; /* left cell border color */ + case 0x0a: break; /* right cell border color */ + case 0x0b: break; /* diagonal cell border color */ + case 0x0d: /* text color */ + break; + case 0x0e: break; /* font scheme */ + case 0x0f: break; /* indentation level */ + } + }); +} + +function parse_BrtMdtinfo(data, length) { + return { + flags: data.read_shift(4), + version: data.read_shift(4), + name: parse_XLWideString(data, length - 8) + }; +} +function write_BrtMdtinfo(data) { + var o = new_buf(12 + 2 * data.name.length); + o.write_shift(4, data.flags); + o.write_shift(4, data.version); + write_XLWideString(data.name, o); + return o.slice(0, o.l); +} +function parse_BrtMdb(data) { + var out = []; + var cnt = data.read_shift(4); + while (cnt-- > 0) + out.push([data.read_shift(4), data.read_shift(4)]); + return out; +} +function write_BrtMdb(mdb) { + var o = new_buf(4 + 8 * mdb.length); + o.write_shift(4, mdb.length); + for (var i = 0; i < mdb.length; ++i) { + o.write_shift(4, mdb[i][0]); + o.write_shift(4, mdb[i][1]); + } + return o; +} +function write_BrtBeginEsfmd(cnt, name) { + var o = new_buf(8 + 2 * name.length); + o.write_shift(4, cnt); + write_XLWideString(name, o); + return o.slice(0, o.l); +} +function parse_BrtBeginEsmdb(data) { + data.l += 4; + return data.read_shift(4) != 0; +} +function write_BrtBeginEsmdb(cnt, cm) { + var o = new_buf(8); + o.write_shift(4, cnt); + o.write_shift(4, cm ? 1 : 0); + return o; +} +function parse_xlmeta_bin(data, name, _opts) { + var out = { Types: [], Cell: [], Value: [] }; + var opts = _opts || {}; + var state = []; + var pass = false; + var metatype = 2; + recordhopper(data, function(val, R, RT) { + switch (RT) { + case 335: + out.Types.push({ name: val.name }); + break; + case 51: + val.forEach(function(r) { + if (metatype == 1) + out.Cell.push({ type: out.Types[r[0] - 1].name, index: r[1] }); + else if (metatype == 0) + out.Value.push({ type: out.Types[r[0] - 1].name, index: r[1] }); + }); + break; + case 337: + metatype = val ? 1 : 0; + break; + case 338: + metatype = 2; + break; + case 35: + state.push(RT); + pass = true; + break; + case 36: + state.pop(); + pass = false; + break; + default: + if (R.T) { + } else if (!pass || opts.WTF && state[state.length - 1] != 35) + throw new Error("Unexpected record 0x" + RT.toString(16)); + } + }); + return out; +} +function write_xlmeta_bin() { + var ba = buf_array(); + write_record(ba, 332); + write_record(ba, 334, write_UInt32LE(1)); + write_record(ba, 335, write_BrtMdtinfo({ + name: "XLDAPR", + version: 12e4, + flags: 3496657072 + })); + write_record(ba, 336); + write_record(ba, 339, write_BrtBeginEsfmd(1, "XLDAPR")); + write_record(ba, 52); + write_record(ba, 35, write_UInt32LE(514)); + write_record(ba, 4096, write_UInt32LE(0)); + write_record(ba, 4097, writeuint16(1)); + write_record(ba, 36); + write_record(ba, 53); + write_record(ba, 340); + write_record(ba, 337, write_BrtBeginEsmdb(1, true)); + write_record(ba, 51, write_BrtMdb([[1, 0]])); + write_record(ba, 338); + write_record(ba, 333); + return ba.end(); +} +function parse_xlmeta_xml(data, name, opts) { + var out = { Types: [], Cell: [], Value: [] }; + if (!data) + return out; + var pass = false; + var metatype = 2; + var lastmeta; + data.replace(tagregex, function(x) { + var y = parsexmltag(x); + switch (strip_ns(y[0])) { + case "": + break; + case "": + break; + case "": + break; + case "": + break; + case "": + break; + case "": + break; + case "": + break; + case "": + metatype = 2; + break; + case "": + metatype = 2; + break; + case "": + case "": + case "": + break; + case "": + pass = false; + break; + case "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n'); + return o.join(""); +} +/* 18.6 Calculation Chain */ +function parse_cc_xml(data) { + var d = []; + if(!data) return d; + var i = 1; + (data.match(tagregex)||[]).forEach(function(x) { + var y = parsexmltag(x); + switch(y[0]) { + case '': case '': break; + /* 18.6.1 c CT_CalcCell 1 */ + case ']*r:id="([^"]*)"/)||["",""])[1]; + + return rels['!id'][id].Target; +} + +/* L.5.5.2 SpreadsheetML Comments + VML Schema */ +var _shapeid = 1024; +function write_comments_vml(rId, comments) { + var csize = [21600, 21600]; + /* L.5.2.1.2 Path Attribute */ + var bbox = ["m0,0l0",csize[1],csize[0],csize[1],csize[0],"0xe"].join(","); + var o = [ + writextag("xml", null, { 'xmlns:v': XLMLNS.v, 'xmlns:o': XLMLNS.o, 'xmlns:x': XLMLNS.x, 'xmlns:mv': XLMLNS.mv }).replace(/\/>/,">"), + writextag("o:shapelayout", writextag("o:idmap", null, {'v:ext':"edit", 'data':rId}), {'v:ext':"edit"}), + writextag("v:shapetype", [ + writextag("v:stroke", null, {joinstyle:"miter"}), + writextag("v:path", null, {gradientshapeok:"t", 'o:connecttype':"rect"}) + ].join(""), {id:"_x0000_t202", 'o:spt':202, coordsize:csize.join(","),path:bbox}) + ]; + while(_shapeid < rId * 1000) _shapeid += 1000; + + comments.forEach(function(x) { + var c = decode_cell(x[0]); + var fillopts = {'color2':"#BEFF82", 'type':"gradient"}; + if(fillopts.type == "gradient") fillopts.angle = "-180"; + var fillparm = fillopts.type == "gradient" ? writextag("o:fill", null, {type:"gradientUnscaled", 'v:ext':"view"}) : null; + var fillxml = writextag('v:fill', fillparm, fillopts); + + var shadata = ({on:"t", 'obscured':"t"}); + ++_shapeid; + + o = o.concat([ + '', + fillxml, + writextag("v:shadow", null, shadata), + writextag("v:path", null, {'o:connecttype':"none"}), + '
', + '', + '', + '', + /* Part 4 19.4.2.3 Anchor (Anchor) */ + writetag('x:Anchor', [c.c+1, 0, c.r+1, 0, c.c+3, 20, c.r+5, 20].join(",")), + writetag('x:AutoFill', "False"), + writetag('x:Row', String(c.r)), + writetag('x:Column', String(c.c)), + x[1].hidden ? '' : '', + '', + '' + ]); }); + o.push(''); + return o.join(""); +} +function sheet_insert_comments(sheet, comments, threaded, people) { + var dense = Array.isArray(sheet); + var cell; + comments.forEach(function(comment) { + var r = decode_cell(comment.ref); + if(dense) { + if(!sheet[r.r]) sheet[r.r] = []; + cell = sheet[r.r][r.c]; + } else cell = sheet[comment.ref]; + if (!cell) { + cell = ({t:"z"}); + if(dense) sheet[r.r][r.c] = cell; + else sheet[comment.ref] = cell; + var range = safe_decode_range(sheet["!ref"]||"BDWGO1000001:A1"); + if(range.s.r > r.r) range.s.r = r.r; + if(range.e.r < r.r) range.e.r = r.r; + if(range.s.c > r.c) range.s.c = r.c; + if(range.e.c < r.c) range.e.c = r.c; + var encoded = encode_range(range); + if (encoded !== sheet["!ref"]) sheet["!ref"] = encoded; + } + + if (!cell.c) cell.c = []; + var o = ({a: comment.author, t: comment.t, r: comment.r, T: threaded}); + if(comment.h) o.h = comment.h; + + /* threaded comments always override */ + for(var i = cell.c.length - 1; i >= 0; --i) { + if(!threaded && cell.c[i].T) return; + if(threaded && !cell.c[i].T) cell.c.splice(i, 1); + } + if(threaded && people) for(i = 0; i < people.length; ++i) { + if(o.a == people[i].id) { o.a = people[i].name || o.a; break; } + } + cell.c.push(o); + }); +} + +/* 18.7 Comments */ +function parse_comments_xml(data, opts) { + /* 18.7.6 CT_Comments */ + if(data.match(/<(?:\w+:)?comments *\/>/)) return []; + var authors = []; + var commentList = []; + var authtag = data.match(/<(?:\w+:)?authors>([\s\S]*)<\/(?:\w+:)?authors>/); + if(authtag && authtag[1]) authtag[1].split(/<\/\w*:?author>/).forEach(function(x) { + if(x === "" || x.trim() === "") return; + var a = x.match(/<(?:\w+:)?author[^>]*>(.*)/); + if(a) authors.push(a[1]); + }); + var cmnttag = data.match(/<(?:\w+:)?commentList>([\s\S]*)<\/(?:\w+:)?commentList>/); + if(cmnttag && cmnttag[1]) cmnttag[1].split(/<\/\w*:?comment>/).forEach(function(x) { + if(x === "" || x.trim() === "") return; + var cm = x.match(/<(?:\w+:)?comment[^>]*>/); + if(!cm) return; + var y = parsexmltag(cm[0]); + var comment = ({ author: y.authorId && authors[y.authorId] || "sheetjsghost", ref: y.ref, guid: y.guid }); + var cell = decode_cell(y.ref); + if(opts.sheetRows && opts.sheetRows <= cell.r) return; + var textMatch = x.match(/<(?:\w+:)?text>([\s\S]*)<\/(?:\w+:)?text>/); + var rt = !!textMatch && !!textMatch[1] && parse_si(textMatch[1]) || {r:"",t:"",h:""}; + comment.r = rt.r; + if(rt.r == "") rt.t = rt.h = ""; + comment.t = (rt.t||"").replace(/\r\n/g,"\n").replace(/\r/g,"\n"); + if(opts.cellHTML) comment.h = rt.h; + commentList.push(comment); + }); + return commentList; +} + +function write_comments_xml(data) { + var o = [XML_HEADER, writextag('comments', null, { 'xmlns': XMLNS_main[0] })]; + + var iauthor = []; + o.push(""); + data.forEach(function(x) { x[1].forEach(function(w) { var a = escapexml(w.a); + if(iauthor.indexOf(a) == -1) { + iauthor.push(a); + o.push("" + a + ""); + } + if(w.T && w.ID && iauthor.indexOf("tc=" + w.ID) == -1) { + iauthor.push("tc=" + w.ID); + o.push("" + "tc=" + w.ID + ""); + } + }); }); + if(iauthor.length == 0) { iauthor.push("SheetJ5"); o.push("SheetJ5"); } + o.push(""); + o.push(""); + data.forEach(function(d) { + /* 18.7.3 CT_Comment */ + var lastauthor = 0, ts = []; + if(d[1][0] && d[1][0].T && d[1][0].ID) lastauthor = iauthor.indexOf("tc=" + d[1][0].ID); + else d[1].forEach(function(c) { + if(c.a) lastauthor = iauthor.indexOf(escapexml(c.a)); + ts.push(c.t||""); + }); + o.push(''); + if(ts.length <= 1) o.push(writetag("t", escapexml(ts[0]||""))); + else { + /* based on Threaded Comments -> Comments projection */ + var t = "Comment:\n " + (ts[0]) + "\n"; + for(var i = 1; i < ts.length; ++i) t += "Reply:\n " + ts[i] + "\n"; + o.push(writetag("t", escapexml(t))); + } + o.push(''); + }); + o.push(""); + if(o.length>2) { o[o.length] = (''); o[1]=o[1].replace("/>",">"); } + return o.join(""); +} + +/* [MS-XLSX] 2.1.17 */ +function parse_tcmnt_xml(data, opts) { + var out = []; + var pass = false, comment = {}, tidx = 0; + data.replace(tagregex, function xml_tcmnt(x, idx) { + var y = parsexmltag(x); + switch(strip_ns(y[0])) { + case '': break; + + /* 2.6.205 threadedComment CT_ThreadedComment */ + case '': if(comment.t != null) out.push(comment); break; + + case '': case '': comment.t = data.slice(tidx, idx).replace(/\r\n/g, "\n").replace(/\r/g, "\n"); break; + + /* 2.6.206 mentions CT_ThreadedCommentMentions TODO */ + case '': pass = true; break; + case '': pass = false; break; + + /* 2.6.202 mention CT_Mention TODO */ + + /* 18.2.10 extLst CT_ExtensionList ? */ + case '': case '
': case '': break; + /* 18.2.7 ext CT_Extension + */ + case '': pass=false; break; + + default: if(!pass && opts.WTF) throw new Error('unrecognized ' + y[0] + ' in threaded comments'); + } + return x; + }); + return out; +} + +function write_tcmnt_xml(comments, people, opts) { + var o = [XML_HEADER, writextag('ThreadedComments', null, { 'xmlns': XMLNS.TCMNT }).replace(/[\/]>/, ">")]; + comments.forEach(function(carr) { + var rootid = ""; + (carr[1] || []).forEach(function(c, idx) { + if(!c.T) { delete c.ID; return; } + if(c.a && people.indexOf(c.a) == -1) people.push(c.a); + var tcopts = { + ref: carr[0], + id: "{54EE7951-7262-4200-6969-" + ("000000000000" + opts.tcid++).slice(-12) + "}" + }; + if(idx == 0) rootid = tcopts.id; + else tcopts.parentId = rootid; + c.ID = tcopts.id; + if(c.a) tcopts.personId = "{54EE7950-7262-4200-6969-" + ("000000000000" + people.indexOf(c.a)).slice(-12) + "}"; + o.push(writextag('threadedComment', writetag('text', c.t||""), tcopts)); + }); + }); + o.push(''); + return o.join(""); +} + +/* [MS-XLSX] 2.1.18 */ +function parse_people_xml(data, opts) { + var out = []; + var pass = false; + data.replace(tagregex, function xml_tcmnt(x) { + var y = parsexmltag(x); + switch(strip_ns(y[0])) { + case '': break; + + /* 2.6.203 person CT_Person TODO: providers */ + case '': break; + + /* 18.2.10 extLst CT_ExtensionList ? */ + case '': case '': case '': break; + /* 18.2.7 ext CT_Extension + */ + case '': pass=false; break; + + default: if(!pass && opts.WTF) throw new Error('unrecognized ' + y[0] + ' in threaded comments'); + } + return x; + }); + return out; +} +function write_people_xml(people/*, opts*/) { + var o = [XML_HEADER, writextag('personList', null, { + 'xmlns': XMLNS.TCMNT, + 'xmlns:x': XMLNS_main[0] + }).replace(/[\/]>/, ">")]; + people.forEach(function(person, idx) { + o.push(writextag('person', null, { + displayName: person, + id: "{54EE7950-7262-4200-6969-" + ("000000000000" + idx).slice(-12) + "}", + userId: person, + providerId: "None" + })); + }); + o.push(""); + return o.join(""); +} +/* [MS-XLSB] 2.4.28 BrtBeginComment */ +function parse_BrtBeginComment(data) { + var out = {}; + out.iauthor = data.read_shift(4); + var rfx = parse_UncheckedRfX(data, 16); + out.rfx = rfx.s; + out.ref = encode_cell(rfx.s); + data.l += 16; /*var guid = parse_GUID(data); */ + return out; +} +function write_BrtBeginComment(data, o) { + if(o == null) o = new_buf(36); + o.write_shift(4, data[1].iauthor); + write_UncheckedRfX((data[0]), o); + o.write_shift(4, 0); + o.write_shift(4, 0); + o.write_shift(4, 0); + o.write_shift(4, 0); + return o; +} + +/* [MS-XLSB] 2.4.327 BrtCommentAuthor */ +var parse_BrtCommentAuthor = parse_XLWideString; +function write_BrtCommentAuthor(data) { return write_XLWideString(data.slice(0, 54)); } + +/* [MS-XLSB] 2.1.7.8 Comments */ +function parse_comments_bin(data, opts) { + var out = []; + var authors = []; + var c = {}; + var pass = false; + recordhopper(data, function hopper_cmnt(val, R, RT) { + switch(RT) { + case 0x0278: /* 'BrtCommentAuthor' */ + authors.push(val); break; + case 0x027B: /* 'BrtBeginComment' */ + c = val; break; + case 0x027D: /* 'BrtCommentText' */ + c.t = val.t; c.h = val.h; c.r = val.r; break; + case 0x027C: /* 'BrtEndComment' */ + c.author = authors[c.iauthor]; + delete (c).iauthor; + if(opts.sheetRows && c.rfx && opts.sheetRows <= c.rfx.r) break; + if(!c.t) c.t = ""; + delete c.rfx; out.push(c); break; + + case 0x0C00: /* 'BrtUid' */ + break; + + case 0x0023: /* 'BrtFRTBegin' */ + pass = true; break; + case 0x0024: /* 'BrtFRTEnd' */ + pass = false; break; + case 0x0025: /* 'BrtACBegin' */ break; + case 0x0026: /* 'BrtACEnd' */ break; + + + default: + if(R.T){/* empty */} + else if(!pass || opts.WTF) throw new Error("Unexpected record 0x" + RT.toString(16)); + } + }); + return out; +} + +function write_comments_bin(data) { + var ba = buf_array(); + var iauthor = []; + write_record(ba, 0x0274 /* BrtBeginComments */); + + write_record(ba, 0x0276 /* BrtBeginCommentAuthors */); + data.forEach(function(comment) { + comment[1].forEach(function(c) { + if(iauthor.indexOf(c.a) > -1) return; + iauthor.push(c.a.slice(0,54)); + write_record(ba, 0x0278 /* BrtCommentAuthor */, write_BrtCommentAuthor(c.a)); + }); + }); + write_record(ba, 0x0277 /* BrtEndCommentAuthors */); + + write_record(ba, 0x0279 /* BrtBeginCommentList */); + data.forEach(function(comment) { + comment[1].forEach(function(c) { + c.iauthor = iauthor.indexOf(c.a); + var range = {s:decode_cell(comment[0]),e:decode_cell(comment[0])}; + write_record(ba, 0x027B /* BrtBeginComment */, write_BrtBeginComment([range, c])); + if(c.t && c.t.length > 0) write_record(ba, 0x027D /* BrtCommentText */, write_BrtCommentText(c)); + write_record(ba, 0x027C /* BrtEndComment */); + delete c.iauthor; + }); + }); + write_record(ba, 0x027A /* BrtEndCommentList */); + + write_record(ba, 0x0275 /* BrtEndComments */); + return ba.end(); +} +var CT_VBA = "application/vnd.ms-office.vbaProject"; +function make_vba_xls(cfb) { + var newcfb = CFB.utils.cfb_new({ root: "R" }); + cfb.FullPaths.forEach(function(p, i) { + if (p.slice(-1) === "/" || !p.match(/_VBA_PROJECT_CUR/)) + return; + var newpath = p.replace(/^[^\/]*/, "R").replace(/\/_VBA_PROJECT_CUR\u0000*/, ""); + CFB.utils.cfb_add(newcfb, newpath, cfb.FileIndex[i].content); + }); + return CFB.write(newcfb); +} +function fill_vba_xls(cfb, vba) { + vba.FullPaths.forEach(function(p, i) { + if (i == 0) + return; + var newpath = p.replace(/[^\/]*[\/]/, "/_VBA_PROJECT_CUR/"); + if (newpath.slice(-1) !== "/") + CFB.utils.cfb_add(cfb, newpath, vba.FileIndex[i].content); + }); +} +var VBAFMTS = ["xlsb", "xlsm", "xlam", "biff8", "xla"]; +/* macro and dialog sheet stubs */ +function parse_ds_bin() { return {'!type':'dialog'}; } +function parse_ds_xml() { return {'!type':'dialog'}; } +function parse_ms_bin() { return {'!type':'macro'}; } +function parse_ms_xml() { return {'!type':'macro'}; } +/* TODO: it will be useful to parse the function str */ +var rc_to_a1 = (function(){ + var rcregex = /(^|[^A-Za-z_])R(\[?-?\d+\]|[1-9]\d*|)C(\[?-?\d+\]|[1-9]\d*|)(?![A-Za-z0-9_])/g; + var rcbase = ({r:0,c:0}); + function rcfunc($$,$1,$2,$3) { + var cRel = false, rRel = false; + + if($2.length == 0) rRel = true; + else if($2.charAt(0) == "[") { rRel = true; $2 = $2.slice(1, -1); } + + if($3.length == 0) cRel = true; + else if($3.charAt(0) == "[") { cRel = true; $3 = $3.slice(1, -1); } + + var R = $2.length>0?parseInt($2,10)|0:0, C = $3.length>0?parseInt($3,10)|0:0; + + if(cRel) C += rcbase.c; else --C; + if(rRel) R += rcbase.r; else --R; + return $1 + (cRel ? "" : "$") + encode_col(C) + (rRel ? "" : "$") + encode_row(R); + } + return function rc_to_a1(fstr, base) { + rcbase = base; + return fstr.replace(rcregex, rcfunc); + }; +})(); + +var crefregex = /(^|[^._A-Z0-9])([$]?)([A-Z]{1,2}|[A-W][A-Z]{2}|X[A-E][A-Z]|XF[A-D])([$]?)(10[0-3]\d{4}|104[0-7]\d{3}|1048[0-4]\d{2}|10485[0-6]\d|104857[0-6]|[1-9]\d{0,5})(?![_.\(A-Za-z0-9])/g; +var a1_to_rc = (function(){ + return function a1_to_rc(fstr, base) { + return fstr.replace(crefregex, function($0, $1, $2, $3, $4, $5) { + var c = decode_col($3) - ($2 ? 0 : base.c); + var r = decode_row($5) - ($4 ? 0 : base.r); + var R = (r == 0 ? "" : !$4 ? "[" + r + "]" : (r+1)); + var C = (c == 0 ? "" : !$2 ? "[" + c + "]" : (c+1)); + return $1 + "R" + R + "C" + C; + }); + }; +})(); + +/* no defined name can collide with a valid cell address A1:XFD1048576 ... except LOG10! */ +function shift_formula_str(f, delta) { + return f.replace(crefregex, function($0, $1, $2, $3, $4, $5) { + return $1+($2=="$" ? $2+$3 : encode_col(decode_col($3)+delta.c))+($4=="$" ? $4+$5 : encode_row(decode_row($5) + delta.r)); + }); +} + +function shift_formula_xlsx(f, range, cell) { + var r = decode_range(range), s = r.s, c = decode_cell(cell); + var delta = {r:c.r - s.r, c:c.c - s.c}; + return shift_formula_str(f, delta); +} + +/* TODO: parse formula */ +function fuzzyfmla(f) { + if(f.length == 1) return false; + return true; +} + +function _xlfn(f) { + return f.replace(/_xlfn\./g,""); +} +function parseread1(blob) { blob.l+=1; return; } + +/* [MS-XLS] 2.5.51 */ +function parse_ColRelU(blob, length) { + var c = blob.read_shift(length == 1 ? 1 : 2); + return [c & 0x3FFF, (c >> 14) & 1, (c >> 15) & 1]; +} + +/* [MS-XLS] 2.5.198.105 ; [MS-XLSB] 2.5.97.89 */ +function parse_RgceArea(blob, length, opts) { + var w = 2; + if(opts) { + if(opts.biff >= 2 && opts.biff <= 5) return parse_RgceArea_BIFF2(blob, length, opts); + else if(opts.biff == 12) w = 4; + } + var r=blob.read_shift(w), R=blob.read_shift(w); + var c=parse_ColRelU(blob, 2); + var C=parse_ColRelU(blob, 2); + return { s:{r:r, c:c[0], cRel:c[1], rRel:c[2]}, e:{r:R, c:C[0], cRel:C[1], rRel:C[2]} }; +} +/* BIFF 2-5 encodes flags in the row field */ +function parse_RgceArea_BIFF2(blob) { + var r=parse_ColRelU(blob, 2), R=parse_ColRelU(blob, 2); + var c=blob.read_shift(1); + var C=blob.read_shift(1); + return { s:{r:r[0], c:c, cRel:r[1], rRel:r[2]}, e:{r:R[0], c:C, cRel:R[1], rRel:R[2]} }; +} + +/* [MS-XLS] 2.5.198.105 ; [MS-XLSB] 2.5.97.90 */ +function parse_RgceAreaRel(blob, length, opts) { + if(opts.biff < 8) return parse_RgceArea_BIFF2(blob, length, opts); + var r=blob.read_shift(opts.biff == 12 ? 4 : 2), R=blob.read_shift(opts.biff == 12 ? 4 : 2); + var c=parse_ColRelU(blob, 2); + var C=parse_ColRelU(blob, 2); + return { s:{r:r, c:c[0], cRel:c[1], rRel:c[2]}, e:{r:R, c:C[0], cRel:C[1], rRel:C[2]} }; +} + +/* [MS-XLS] 2.5.198.109 ; [MS-XLSB] 2.5.97.91 */ +function parse_RgceLoc(blob, length, opts) { + if(opts && opts.biff >= 2 && opts.biff <= 5) return parse_RgceLoc_BIFF2(blob, length, opts); + var r = blob.read_shift(opts && opts.biff == 12 ? 4 : 2); + var c = parse_ColRelU(blob, 2); + return {r:r, c:c[0], cRel:c[1], rRel:c[2]}; +} +function parse_RgceLoc_BIFF2(blob) { + var r = parse_ColRelU(blob, 2); + var c = blob.read_shift(1); + return {r:r[0], c:c, cRel:r[1], rRel:r[2]}; +} + +/* [MS-XLS] 2.5.198.107, 2.5.47 */ +function parse_RgceElfLoc(blob) { + var r = blob.read_shift(2); + var c = blob.read_shift(2); + return {r:r, c:c & 0xFF, fQuoted:!!(c & 0x4000), cRel:c>>15, rRel:c>>15 }; +} + +/* [MS-XLS] 2.5.198.111 ; [MS-XLSB] 2.5.97.92 TODO */ +function parse_RgceLocRel(blob, length, opts) { + var biff = opts && opts.biff ? opts.biff : 8; + if(biff >= 2 && biff <= 5) return parse_RgceLocRel_BIFF2(blob, length, opts); + var r = blob.read_shift(biff >= 12 ? 4 : 2); + var cl = blob.read_shift(2); + var cRel = (cl & 0x4000) >> 14, rRel = (cl & 0x8000) >> 15; + cl &= 0x3FFF; + if(rRel == 1) while(r > 0x7FFFF) r -= 0x100000; + if(cRel == 1) while(cl > 0x1FFF) cl = cl - 0x4000; + return {r:r,c:cl,cRel:cRel,rRel:rRel}; +} +function parse_RgceLocRel_BIFF2(blob) { + var rl = blob.read_shift(2); + var c = blob.read_shift(1); + var rRel = (rl & 0x8000) >> 15, cRel = (rl & 0x4000) >> 14; + rl &= 0x3FFF; + if(rRel == 1 && rl >= 0x2000) rl = rl - 0x4000; + if(cRel == 1 && c >= 0x80) c = c - 0x100; + return {r:rl,c:c,cRel:cRel,rRel:rRel}; +} + +/* [MS-XLS] 2.5.198.27 ; [MS-XLSB] 2.5.97.18 */ +function parse_PtgArea(blob, length, opts) { + var type = (blob[blob.l++] & 0x60) >> 5; + var area = parse_RgceArea(blob, opts.biff >= 2 && opts.biff <= 5 ? 6 : 8, opts); + return [type, area]; +} + +/* [MS-XLS] 2.5.198.28 ; [MS-XLSB] 2.5.97.19 */ +function parse_PtgArea3d(blob, length, opts) { + var type = (blob[blob.l++] & 0x60) >> 5; + var ixti = blob.read_shift(2, 'i'); + var w = 8; + if(opts) switch(opts.biff) { + case 5: blob.l += 12; w = 6; break; + case 12: w = 12; break; + } + var area = parse_RgceArea(blob, w, opts); + return [type, ixti, area]; +} + +/* [MS-XLS] 2.5.198.29 ; [MS-XLSB] 2.5.97.20 */ +function parse_PtgAreaErr(blob, length, opts) { + var type = (blob[blob.l++] & 0x60) >> 5; + blob.l += opts && (opts.biff > 8) ? 12 : (opts.biff < 8 ? 6 : 8); + return [type]; +} +/* [MS-XLS] 2.5.198.30 ; [MS-XLSB] 2.5.97.21 */ +function parse_PtgAreaErr3d(blob, length, opts) { + var type = (blob[blob.l++] & 0x60) >> 5; + var ixti = blob.read_shift(2); + var w = 8; + if(opts) switch(opts.biff) { + case 5: blob.l += 12; w = 6; break; + case 12: w = 12; break; + } + blob.l += w; + return [type, ixti]; +} + +/* [MS-XLS] 2.5.198.31 ; [MS-XLSB] 2.5.97.22 */ +function parse_PtgAreaN(blob, length, opts) { + var type = (blob[blob.l++] & 0x60) >> 5; + var area = parse_RgceAreaRel(blob, length - 1, opts); + return [type, area]; +} + +/* [MS-XLS] 2.5.198.32 ; [MS-XLSB] 2.5.97.23 */ +function parse_PtgArray(blob, length, opts) { + var type = (blob[blob.l++] & 0x60) >> 5; + blob.l += opts.biff == 2 ? 6 : opts.biff == 12 ? 14 : 7; + return [type]; +} + +/* [MS-XLS] 2.5.198.33 ; [MS-XLSB] 2.5.97.24 */ +function parse_PtgAttrBaxcel(blob) { + var bitSemi = blob[blob.l+1] & 0x01; /* 1 = volatile */ + var bitBaxcel = 1; + blob.l += 4; + return [bitSemi, bitBaxcel]; +} + +/* [MS-XLS] 2.5.198.34 ; [MS-XLSB] 2.5.97.25 */ +function parse_PtgAttrChoose(blob, length, opts) { + blob.l +=2; + var offset = blob.read_shift(opts && opts.biff == 2 ? 1 : 2); + var o = []; + /* offset is 1 less than the number of elements */ + for(var i = 0; i <= offset; ++i) o.push(blob.read_shift(opts && opts.biff == 2 ? 1 : 2)); + return o; +} + +/* [MS-XLS] 2.5.198.35 ; [MS-XLSB] 2.5.97.26 */ +function parse_PtgAttrGoto(blob, length, opts) { + var bitGoto = (blob[blob.l+1] & 0xFF) ? 1 : 0; + blob.l += 2; + return [bitGoto, blob.read_shift(opts && opts.biff == 2 ? 1 : 2)]; +} + +/* [MS-XLS] 2.5.198.36 ; [MS-XLSB] 2.5.97.27 */ +function parse_PtgAttrIf(blob, length, opts) { + var bitIf = (blob[blob.l+1] & 0xFF) ? 1 : 0; + blob.l += 2; + return [bitIf, blob.read_shift(opts && opts.biff == 2 ? 1 : 2)]; +} + +/* [MS-XLSB] 2.5.97.28 */ +function parse_PtgAttrIfError(blob) { + var bitIf = (blob[blob.l+1] & 0xFF) ? 1 : 0; + blob.l += 2; + return [bitIf, blob.read_shift(2)]; +} + +/* [MS-XLS] 2.5.198.37 ; [MS-XLSB] 2.5.97.29 */ +function parse_PtgAttrSemi(blob, length, opts) { + var bitSemi = (blob[blob.l+1] & 0xFF) ? 1 : 0; + blob.l += opts && opts.biff == 2 ? 3 : 4; + return [bitSemi]; +} + +/* [MS-XLS] 2.5.198.40 ; [MS-XLSB] 2.5.97.32 */ +function parse_PtgAttrSpaceType(blob) { + var type = blob.read_shift(1), cch = blob.read_shift(1); + return [type, cch]; +} + +/* [MS-XLS] 2.5.198.38 ; [MS-XLSB] 2.5.97.30 */ +function parse_PtgAttrSpace(blob) { + blob.read_shift(2); + return parse_PtgAttrSpaceType(blob, 2); +} + +/* [MS-XLS] 2.5.198.39 ; [MS-XLSB] 2.5.97.31 */ +function parse_PtgAttrSpaceSemi(blob) { + blob.read_shift(2); + return parse_PtgAttrSpaceType(blob, 2); +} + +/* [MS-XLS] 2.5.198.84 ; [MS-XLSB] 2.5.97.68 TODO */ +function parse_PtgRef(blob, length, opts) { + //var ptg = blob[blob.l] & 0x1F; + var type = (blob[blob.l] & 0x60)>>5; + blob.l += 1; + var loc = parse_RgceLoc(blob, 0, opts); + return [type, loc]; +} + +/* [MS-XLS] 2.5.198.88 ; [MS-XLSB] 2.5.97.72 TODO */ +function parse_PtgRefN(blob, length, opts) { + var type = (blob[blob.l] & 0x60)>>5; + blob.l += 1; + var loc = parse_RgceLocRel(blob, 0, opts); + return [type, loc]; +} + +/* [MS-XLS] 2.5.198.85 ; [MS-XLSB] 2.5.97.69 TODO */ +function parse_PtgRef3d(blob, length, opts) { + var type = (blob[blob.l] & 0x60)>>5; + blob.l += 1; + var ixti = blob.read_shift(2); // XtiIndex + if(opts && opts.biff == 5) blob.l += 12; + var loc = parse_RgceLoc(blob, 0, opts); // TODO: or RgceLocRel + return [type, ixti, loc]; +} + + +/* [MS-XLS] 2.5.198.62 ; [MS-XLSB] 2.5.97.45 TODO */ +function parse_PtgFunc(blob, length, opts) { + //var ptg = blob[blob.l] & 0x1F; + var type = (blob[blob.l] & 0x60)>>5; + blob.l += 1; + var iftab = blob.read_shift(opts && opts.biff <= 3 ? 1 : 2); + return [FtabArgc[iftab], Ftab[iftab], type]; +} +/* [MS-XLS] 2.5.198.63 ; [MS-XLSB] 2.5.97.46 TODO */ +function parse_PtgFuncVar(blob, length, opts) { + var type = blob[blob.l++]; + var cparams = blob.read_shift(1), tab = opts && opts.biff <= 3 ? [(type == 0x58 ? -1 : 0), blob.read_shift(1)]: parsetab(blob); + return [cparams, (tab[0] === 0 ? Ftab : Cetab)[tab[1]]]; +} + +function parsetab(blob) { + return [blob[blob.l+1]>>7, blob.read_shift(2) & 0x7FFF]; +} + +/* [MS-XLS] 2.5.198.41 ; [MS-XLSB] 2.5.97.33 */ +function parse_PtgAttrSum(blob, length, opts) { + blob.l += opts && opts.biff == 2 ? 3 : 4; return; +} + +/* [MS-XLS] 2.5.198.58 ; [MS-XLSB] 2.5.97.40 */ +function parse_PtgExp(blob, length, opts) { + blob.l++; + if(opts && opts.biff == 12) return [blob.read_shift(4, 'i'), 0]; + var row = blob.read_shift(2); + var col = blob.read_shift(opts && opts.biff == 2 ? 1 : 2); + return [row, col]; +} + +/* [MS-XLS] 2.5.198.57 ; [MS-XLSB] 2.5.97.39 */ +function parse_PtgErr(blob) { blob.l++; return BErr[blob.read_shift(1)]; } + +/* [MS-XLS] 2.5.198.66 ; [MS-XLSB] 2.5.97.49 */ +function parse_PtgInt(blob) { blob.l++; return blob.read_shift(2); } + +/* [MS-XLS] 2.5.198.42 ; [MS-XLSB] 2.5.97.34 */ +function parse_PtgBool(blob) { blob.l++; return blob.read_shift(1)!==0;} + +/* [MS-XLS] 2.5.198.79 ; [MS-XLSB] 2.5.97.63 */ +function parse_PtgNum(blob) { blob.l++; return parse_Xnum(blob, 8); } + +/* [MS-XLS] 2.5.198.89 ; [MS-XLSB] 2.5.97.74 */ +function parse_PtgStr(blob, length, opts) { blob.l++; return parse_ShortXLUnicodeString(blob, length-1, opts); } + +/* [MS-XLS] 2.5.192.112 + 2.5.192.11{3,4,5,6,7} */ +/* [MS-XLSB] 2.5.97.93 + 2.5.97.9{4,5,6,7} */ +function parse_SerAr(blob, biff) { + var val = [blob.read_shift(1)]; + if(biff == 12) switch(val[0]) { + case 0x02: val[0] = 0x04; break; /* SerBool */ + case 0x04: val[0] = 0x10; break; /* SerErr */ + case 0x00: val[0] = 0x01; break; /* SerNum */ + case 0x01: val[0] = 0x02; break; /* SerStr */ + } + switch(val[0]) { + case 0x04: /* SerBool -- boolean */ + val[1] = parsebool(blob, 1) ? 'TRUE' : 'FALSE'; + if(biff != 12) blob.l += 7; break; + case 0x25: /* appears to be an alias */ + case 0x10: /* SerErr -- error */ + val[1] = BErr[blob[blob.l]]; + blob.l += ((biff == 12) ? 4 : 8); break; + case 0x00: /* SerNil -- honestly, I'm not sure how to reproduce this */ + blob.l += 8; break; + case 0x01: /* SerNum -- Xnum */ + val[1] = parse_Xnum(blob, 8); break; + case 0x02: /* SerStr -- XLUnicodeString (<256 chars) */ + val[1] = parse_XLUnicodeString2(blob, 0, {biff:biff > 0 && biff < 8 ? 2 : biff}); break; + default: throw new Error("Bad SerAr: " + val[0]); /* Unreachable */ + } + return val; +} + +/* [MS-XLS] 2.5.198.61 ; [MS-XLSB] 2.5.97.44 */ +function parse_PtgExtraMem(blob, cce, opts) { + var count = blob.read_shift((opts.biff == 12) ? 4 : 2); + var out = []; + for(var i = 0; i != count; ++i) out.push(((opts.biff == 12) ? parse_UncheckedRfX : parse_Ref8U)(blob, 8)); + return out; +} + +/* [MS-XLS] 2.5.198.59 ; [MS-XLSB] 2.5.97.41 */ +function parse_PtgExtraArray(blob, length, opts) { + var rows = 0, cols = 0; + if(opts.biff == 12) { + rows = blob.read_shift(4); // DRw + cols = blob.read_shift(4); // DCol + } else { + cols = 1 + blob.read_shift(1); //DColByteU + rows = 1 + blob.read_shift(2); //DRw + } + if(opts.biff >= 2 && opts.biff < 8) { --rows; if(--cols == 0) cols = 0x100; } + // $FlowIgnore + for(var i = 0, o = []; i != rows && (o[i] = []); ++i) + for(var j = 0; j != cols; ++j) o[i][j] = parse_SerAr(blob, opts.biff); + return o; +} + +/* [MS-XLS] 2.5.198.76 ; [MS-XLSB] 2.5.97.60 */ +function parse_PtgName(blob, length, opts) { + var type = (blob.read_shift(1) >>> 5) & 0x03; + var w = (!opts || (opts.biff >= 8)) ? 4 : 2; + var nameindex = blob.read_shift(w); + switch(opts.biff) { + case 2: blob.l += 5; break; + case 3: case 4: blob.l += 8; break; + case 5: blob.l += 12; break; + } + return [type, 0, nameindex]; +} + +/* [MS-XLS] 2.5.198.77 ; [MS-XLSB] 2.5.97.61 */ +function parse_PtgNameX(blob, length, opts) { + if(opts.biff == 5) return parse_PtgNameX_BIFF5(blob, length, opts); + var type = (blob.read_shift(1) >>> 5) & 0x03; + var ixti = blob.read_shift(2); // XtiIndex + var nameindex = blob.read_shift(4); + return [type, ixti, nameindex]; +} +function parse_PtgNameX_BIFF5(blob) { + var type = (blob.read_shift(1) >>> 5) & 0x03; + var ixti = blob.read_shift(2, 'i'); // XtiIndex + blob.l += 8; + var nameindex = blob.read_shift(2); + blob.l += 12; + return [type, ixti, nameindex]; +} + +/* [MS-XLS] 2.5.198.70 ; [MS-XLSB] 2.5.97.54 */ +function parse_PtgMemArea(blob, length, opts) { + var type = (blob.read_shift(1) >>> 5) & 0x03; + blob.l += (opts && opts.biff == 2 ? 3 : 4); + var cce = blob.read_shift(opts && opts.biff == 2 ? 1 : 2); + return [type, cce]; +} + +/* [MS-XLS] 2.5.198.72 ; [MS-XLSB] 2.5.97.56 */ +function parse_PtgMemFunc(blob, length, opts) { + var type = (blob.read_shift(1) >>> 5) & 0x03; + var cce = blob.read_shift(opts && opts.biff == 2 ? 1 : 2); + return [type, cce]; +} + + +/* [MS-XLS] 2.5.198.86 ; [MS-XLSB] 2.5.97.69 */ +function parse_PtgRefErr(blob, length, opts) { + var type = (blob.read_shift(1) >>> 5) & 0x03; + blob.l += 4; + if(opts.biff < 8) blob.l--; + if(opts.biff == 12) blob.l += 2; + return [type]; +} + +/* [MS-XLS] 2.5.198.87 ; [MS-XLSB] 2.5.97.71 */ +function parse_PtgRefErr3d(blob, length, opts) { + var type = (blob[blob.l++] & 0x60) >> 5; + var ixti = blob.read_shift(2); + var w = 4; + if(opts) switch(opts.biff) { + case 5: w = 15; break; + case 12: w = 6; break; + } + blob.l += w; + return [type, ixti]; +} + +/* [MS-XLS] 2.5.198.71 ; [MS-XLSB] 2.5.97.55 */ +var parse_PtgMemErr = parsenoop; +/* [MS-XLS] 2.5.198.73 ; [MS-XLSB] 2.5.97.57 */ +var parse_PtgMemNoMem = parsenoop; +/* [MS-XLS] 2.5.198.92 */ +var parse_PtgTbl = parsenoop; + +function parse_PtgElfLoc(blob, length, opts) { + blob.l += 2; + return [parse_RgceElfLoc(blob, 4, opts)]; +} +function parse_PtgElfNoop(blob) { + blob.l += 6; + return []; +} +/* [MS-XLS] 2.5.198.46 */ +var parse_PtgElfCol = parse_PtgElfLoc; +/* [MS-XLS] 2.5.198.47 */ +var parse_PtgElfColS = parse_PtgElfNoop; +/* [MS-XLS] 2.5.198.48 */ +var parse_PtgElfColSV = parse_PtgElfNoop; +/* [MS-XLS] 2.5.198.49 */ +var parse_PtgElfColV = parse_PtgElfLoc; +/* [MS-XLS] 2.5.198.50 */ +function parse_PtgElfLel(blob) { + blob.l += 2; + return [parseuint16(blob), blob.read_shift(2) & 0x01]; +} +/* [MS-XLS] 2.5.198.51 */ +var parse_PtgElfRadical = parse_PtgElfLoc; +/* [MS-XLS] 2.5.198.52 */ +var parse_PtgElfRadicalLel = parse_PtgElfLel; +/* [MS-XLS] 2.5.198.53 */ +var parse_PtgElfRadicalS = parse_PtgElfNoop; +/* [MS-XLS] 2.5.198.54 */ +var parse_PtgElfRw = parse_PtgElfLoc; +/* [MS-XLS] 2.5.198.55 */ +var parse_PtgElfRwV = parse_PtgElfLoc; + +/* [MS-XLSB] 2.5.97.52 TODO */ +var PtgListRT = [ + "Data", + "All", + "Headers", + "??", + "?Data2", + "??", + "?DataHeaders", + "??", + "Totals", + "??", + "??", + "??", + "?DataTotals", + "??", + "??", + "??", + "?Current" +]; +function parse_PtgList(blob) { + blob.l += 2; + var ixti = blob.read_shift(2); + var flags = blob.read_shift(2); + var idx = blob.read_shift(4); + var c = blob.read_shift(2); + var C = blob.read_shift(2); + var rt = PtgListRT[(flags >> 2) & 0x1F]; + return {ixti: ixti, coltype:(flags&0x3), rt:rt, idx:idx, c:c, C:C}; +} +/* [MS-XLS] 2.5.198.91 ; [MS-XLSB] 2.5.97.76 */ +function parse_PtgSxName(blob) { + blob.l += 2; + return [blob.read_shift(4)]; +} + +/* [XLS] old spec */ +function parse_PtgSheet(blob, length, opts) { + blob.l += 5; + blob.l += 2; + blob.l += (opts.biff == 2 ? 1 : 4); + return ["PTGSHEET"]; +} +function parse_PtgEndSheet(blob, length, opts) { + blob.l += (opts.biff == 2 ? 4 : 5); + return ["PTGENDSHEET"]; +} +function parse_PtgMemAreaN(blob) { + var type = (blob.read_shift(1) >>> 5) & 0x03; + var cce = blob.read_shift(2); + return [type, cce]; +} +function parse_PtgMemNoMemN(blob) { + var type = (blob.read_shift(1) >>> 5) & 0x03; + var cce = blob.read_shift(2); + return [type, cce]; +} +function parse_PtgAttrNoop(blob) { + blob.l += 4; + return [0, 0]; +} + +/* [MS-XLS] 2.5.198.25 ; [MS-XLSB] 2.5.97.16 */ +var PtgTypes = { +0x01: { n:'PtgExp', f:parse_PtgExp }, +0x02: { n:'PtgTbl', f:parse_PtgTbl }, +0x03: { n:'PtgAdd', f:parseread1 }, +0x04: { n:'PtgSub', f:parseread1 }, +0x05: { n:'PtgMul', f:parseread1 }, +0x06: { n:'PtgDiv', f:parseread1 }, +0x07: { n:'PtgPower', f:parseread1 }, +0x08: { n:'PtgConcat', f:parseread1 }, +0x09: { n:'PtgLt', f:parseread1 }, +0x0A: { n:'PtgLe', f:parseread1 }, +0x0B: { n:'PtgEq', f:parseread1 }, +0x0C: { n:'PtgGe', f:parseread1 }, +0x0D: { n:'PtgGt', f:parseread1 }, +0x0E: { n:'PtgNe', f:parseread1 }, +0x0F: { n:'PtgIsect', f:parseread1 }, +0x10: { n:'PtgUnion', f:parseread1 }, +0x11: { n:'PtgRange', f:parseread1 }, +0x12: { n:'PtgUplus', f:parseread1 }, +0x13: { n:'PtgUminus', f:parseread1 }, +0x14: { n:'PtgPercent', f:parseread1 }, +0x15: { n:'PtgParen', f:parseread1 }, +0x16: { n:'PtgMissArg', f:parseread1 }, +0x17: { n:'PtgStr', f:parse_PtgStr }, +0x1A: { n:'PtgSheet', f:parse_PtgSheet }, +0x1B: { n:'PtgEndSheet', f:parse_PtgEndSheet }, +0x1C: { n:'PtgErr', f:parse_PtgErr }, +0x1D: { n:'PtgBool', f:parse_PtgBool }, +0x1E: { n:'PtgInt', f:parse_PtgInt }, +0x1F: { n:'PtgNum', f:parse_PtgNum }, +0x20: { n:'PtgArray', f:parse_PtgArray }, +0x21: { n:'PtgFunc', f:parse_PtgFunc }, +0x22: { n:'PtgFuncVar', f:parse_PtgFuncVar }, +0x23: { n:'PtgName', f:parse_PtgName }, +0x24: { n:'PtgRef', f:parse_PtgRef }, +0x25: { n:'PtgArea', f:parse_PtgArea }, +0x26: { n:'PtgMemArea', f:parse_PtgMemArea }, +0x27: { n:'PtgMemErr', f:parse_PtgMemErr }, +0x28: { n:'PtgMemNoMem', f:parse_PtgMemNoMem }, +0x29: { n:'PtgMemFunc', f:parse_PtgMemFunc }, +0x2A: { n:'PtgRefErr', f:parse_PtgRefErr }, +0x2B: { n:'PtgAreaErr', f:parse_PtgAreaErr }, +0x2C: { n:'PtgRefN', f:parse_PtgRefN }, +0x2D: { n:'PtgAreaN', f:parse_PtgAreaN }, +0x2E: { n:'PtgMemAreaN', f:parse_PtgMemAreaN }, +0x2F: { n:'PtgMemNoMemN', f:parse_PtgMemNoMemN }, +0x39: { n:'PtgNameX', f:parse_PtgNameX }, +0x3A: { n:'PtgRef3d', f:parse_PtgRef3d }, +0x3B: { n:'PtgArea3d', f:parse_PtgArea3d }, +0x3C: { n:'PtgRefErr3d', f:parse_PtgRefErr3d }, +0x3D: { n:'PtgAreaErr3d', f:parse_PtgAreaErr3d }, +0xFF: {} +}; +/* These are duplicated in the PtgTypes table */ +var PtgDupes = { +0x40: 0x20, 0x60: 0x20, +0x41: 0x21, 0x61: 0x21, +0x42: 0x22, 0x62: 0x22, +0x43: 0x23, 0x63: 0x23, +0x44: 0x24, 0x64: 0x24, +0x45: 0x25, 0x65: 0x25, +0x46: 0x26, 0x66: 0x26, +0x47: 0x27, 0x67: 0x27, +0x48: 0x28, 0x68: 0x28, +0x49: 0x29, 0x69: 0x29, +0x4A: 0x2A, 0x6A: 0x2A, +0x4B: 0x2B, 0x6B: 0x2B, +0x4C: 0x2C, 0x6C: 0x2C, +0x4D: 0x2D, 0x6D: 0x2D, +0x4E: 0x2E, 0x6E: 0x2E, +0x4F: 0x2F, 0x6F: 0x2F, +0x58: 0x22, 0x78: 0x22, +0x59: 0x39, 0x79: 0x39, +0x5A: 0x3A, 0x7A: 0x3A, +0x5B: 0x3B, 0x7B: 0x3B, +0x5C: 0x3C, 0x7C: 0x3C, +0x5D: 0x3D, 0x7D: 0x3D +}; + +var Ptg18 = { +0x01: { n:'PtgElfLel', f:parse_PtgElfLel }, +0x02: { n:'PtgElfRw', f:parse_PtgElfRw }, +0x03: { n:'PtgElfCol', f:parse_PtgElfCol }, +0x06: { n:'PtgElfRwV', f:parse_PtgElfRwV }, +0x07: { n:'PtgElfColV', f:parse_PtgElfColV }, +0x0A: { n:'PtgElfRadical', f:parse_PtgElfRadical }, +0x0B: { n:'PtgElfRadicalS', f:parse_PtgElfRadicalS }, +0x0D: { n:'PtgElfColS', f:parse_PtgElfColS }, +0x0F: { n:'PtgElfColSV', f:parse_PtgElfColSV }, +0x10: { n:'PtgElfRadicalLel', f:parse_PtgElfRadicalLel }, +0x19: { n:'PtgList', f:parse_PtgList }, +0x1D: { n:'PtgSxName', f:parse_PtgSxName }, +0xFF: {} +}; +var Ptg19 = { +0x00: { n:'PtgAttrNoop', f:parse_PtgAttrNoop }, +0x01: { n:'PtgAttrSemi', f:parse_PtgAttrSemi }, +0x02: { n:'PtgAttrIf', f:parse_PtgAttrIf }, +0x04: { n:'PtgAttrChoose', f:parse_PtgAttrChoose }, +0x08: { n:'PtgAttrGoto', f:parse_PtgAttrGoto }, +0x10: { n:'PtgAttrSum', f:parse_PtgAttrSum }, +0x20: { n:'PtgAttrBaxcel', f:parse_PtgAttrBaxcel }, +0x21: { n:'PtgAttrBaxcel', f:parse_PtgAttrBaxcel }, +0x40: { n:'PtgAttrSpace', f:parse_PtgAttrSpace }, +0x41: { n:'PtgAttrSpaceSemi', f:parse_PtgAttrSpaceSemi }, +0x80: { n:'PtgAttrIfError', f:parse_PtgAttrIfError }, +0xFF: {} +}; + +/* [MS-XLS] 2.5.198.103 ; [MS-XLSB] 2.5.97.87 */ +function parse_RgbExtra(blob, length, rgce, opts) { + if(opts.biff < 8) return parsenoop(blob, length); + var target = blob.l + length; + var o = []; + for(var i = 0; i !== rgce.length; ++i) { + switch(rgce[i][0]) { + case 'PtgArray': /* PtgArray -> PtgExtraArray */ + rgce[i][1] = parse_PtgExtraArray(blob, 0, opts); + o.push(rgce[i][1]); + break; + case 'PtgMemArea': /* PtgMemArea -> PtgExtraMem */ + rgce[i][2] = parse_PtgExtraMem(blob, rgce[i][1], opts); + o.push(rgce[i][2]); + break; + case 'PtgExp': /* PtgExp -> PtgExtraCol */ + if(opts && opts.biff == 12) { + rgce[i][1][1] = blob.read_shift(4); + o.push(rgce[i][1]); + } break; + case 'PtgList': /* TODO: PtgList -> PtgExtraList */ + case 'PtgElfRadicalS': /* TODO: PtgElfRadicalS -> PtgExtraElf */ + case 'PtgElfColS': /* TODO: PtgElfColS -> PtgExtraElf */ + case 'PtgElfColSV': /* TODO: PtgElfColSV -> PtgExtraElf */ + throw "Unsupported " + rgce[i][0]; + default: break; + } + } + length = target - blob.l; + /* note: this is technically an error but Excel disregards */ + //if(target !== blob.l && blob.l !== target - length) throw new Error(target + " != " + blob.l); + if(length !== 0) o.push(parsenoop(blob, length)); + return o; +} + +/* [MS-XLS] 2.5.198.104 ; [MS-XLSB] 2.5.97.88 */ +function parse_Rgce(blob, length, opts) { + var target = blob.l + length; + var R, id, ptgs = []; + while(target != blob.l) { + length = target - blob.l; + id = blob[blob.l]; + R = PtgTypes[id] || PtgTypes[PtgDupes[id]]; + if(id === 0x18 || id === 0x19) R = (id === 0x18 ? Ptg18 : Ptg19)[blob[blob.l + 1]]; + if(!R || !R.f) { /*ptgs.push*/(parsenoop(blob, length)); } + else { ptgs.push([R.n, R.f(blob, length, opts)]); } + } + return ptgs; +} + +function stringify_array(f) { + var o = []; + for(var i = 0; i < f.length; ++i) { + var x = f[i], r = []; + for(var j = 0; j < x.length; ++j) { + var y = x[j]; + if(y) switch(y[0]) { + // TODO: handle embedded quotes + case 0x02: +r.push('"' + y[1].replace(/"/g,'""') + '"'); break; + default: r.push(y[1]); + } else r.push(""); + } + o.push(r.join(",")); + } + return o.join(";"); +} + +/* [MS-XLS] 2.2.2 ; [MS-XLSB] 2.2.2 TODO */ +var PtgBinOp = { + PtgAdd: "+", + PtgConcat: "&", + PtgDiv: "/", + PtgEq: "=", + PtgGe: ">=", + PtgGt: ">", + PtgLe: "<=", + PtgLt: "<", + PtgMul: "*", + PtgNe: "<>", + PtgPower: "^", + PtgSub: "-" +}; + +// List of invalid characters needs to be tested further +function formula_quote_sheet_name(sname, opts) { + if(!sname && !(opts && opts.biff <= 5 && opts.biff >= 2)) throw new Error("empty sheet name"); + if (/[^\w\u4E00-\u9FFF\u3040-\u30FF]/.test(sname)) return "'" + sname + "'"; + return sname; +} +function get_ixti_raw(supbooks, ixti, opts) { + if(!supbooks) return "SH33TJSERR0"; + if(opts.biff > 8 && (!supbooks.XTI || !supbooks.XTI[ixti])) return supbooks.SheetNames[ixti]; + if(!supbooks.XTI) return "SH33TJSERR6"; + var XTI = supbooks.XTI[ixti]; + if(opts.biff < 8) { + if(ixti > 10000) ixti-= 65536; + if(ixti < 0) ixti = -ixti; + return ixti == 0 ? "" : supbooks.XTI[ixti - 1]; + } + if(!XTI) return "SH33TJSERR1"; + var o = ""; + if(opts.biff > 8) switch(supbooks[XTI[0]][0]) { + case 0x0165: /* 'BrtSupSelf' */ + o = XTI[1] == -1 ? "#REF" : supbooks.SheetNames[XTI[1]]; + return XTI[1] == XTI[2] ? o : o + ":" + supbooks.SheetNames[XTI[2]]; + case 0x0166: /* 'BrtSupSame' */ + if(opts.SID != null) return supbooks.SheetNames[opts.SID]; + return "SH33TJSSAME" + supbooks[XTI[0]][0]; + case 0x0163: /* 'BrtSupBookSrc' */ + /* falls through */ + default: return "SH33TJSSRC" + supbooks[XTI[0]][0]; + } + switch(supbooks[XTI[0]][0][0]) { + case 0x0401: + o = XTI[1] == -1 ? "#REF" : (supbooks.SheetNames[XTI[1]] || "SH33TJSERR3"); + return XTI[1] == XTI[2] ? o : o + ":" + supbooks.SheetNames[XTI[2]]; + case 0x3A01: return supbooks[XTI[0]].slice(1).map(function(name) { return name.Name; }).join(";;"); //return "SH33TJSERR8"; + default: + if(!supbooks[XTI[0]][0][3]) return "SH33TJSERR2"; + o = XTI[1] == -1 ? "#REF" : (supbooks[XTI[0]][0][3][XTI[1]] || "SH33TJSERR4"); + return XTI[1] == XTI[2] ? o : o + ":" + supbooks[XTI[0]][0][3][XTI[2]]; + } +} +function get_ixti(supbooks, ixti, opts) { + var ixtiraw = get_ixti_raw(supbooks, ixti, opts); + return ixtiraw == "#REF" ? ixtiraw : formula_quote_sheet_name(ixtiraw, opts); +} +function stringify_formula(formula/*Array*/, range, cell, supbooks, opts) { + var biff = (opts && opts.biff) || 8; + var _range = /*range != null ? range :*/ {s:{c:0, r:0},e:{c:0, r:0}}; + var stack = [], e1, e2, c, ixti=0, nameidx=0, r, sname=""; + if(!formula[0] || !formula[0][0]) return ""; + var last_sp = -1, sp = ""; + for(var ff = 0, fflen = formula[0].length; ff < fflen; ++ff) { + var f = formula[0][ff]; + switch(f[0]) { + case 'PtgUminus': /* [MS-XLS] 2.5.198.93 */ + stack.push("-" + stack.pop()); break; + case 'PtgUplus': /* [MS-XLS] 2.5.198.95 */ + stack.push("+" + stack.pop()); break; + case 'PtgPercent': /* [MS-XLS] 2.5.198.81 */ + stack.push(stack.pop() + "%"); break; + + case 'PtgAdd': /* [MS-XLS] 2.5.198.26 */ + case 'PtgConcat': /* [MS-XLS] 2.5.198.43 */ + case 'PtgDiv': /* [MS-XLS] 2.5.198.45 */ + case 'PtgEq': /* [MS-XLS] 2.5.198.56 */ + case 'PtgGe': /* [MS-XLS] 2.5.198.64 */ + case 'PtgGt': /* [MS-XLS] 2.5.198.65 */ + case 'PtgLe': /* [MS-XLS] 2.5.198.68 */ + case 'PtgLt': /* [MS-XLS] 2.5.198.69 */ + case 'PtgMul': /* [MS-XLS] 2.5.198.75 */ + case 'PtgNe': /* [MS-XLS] 2.5.198.78 */ + case 'PtgPower': /* [MS-XLS] 2.5.198.82 */ + case 'PtgSub': /* [MS-XLS] 2.5.198.90 */ + e1 = stack.pop(); e2 = stack.pop(); + if(last_sp >= 0) { + switch(formula[0][last_sp][1][0]) { + case 0: + // $FlowIgnore + sp = fill(" ", formula[0][last_sp][1][1]); break; + case 1: + // $FlowIgnore + sp = fill("\r", formula[0][last_sp][1][1]); break; + default: + sp = ""; + // $FlowIgnore + if(opts.WTF) throw new Error("Unexpected PtgAttrSpaceType " + formula[0][last_sp][1][0]); + } + e2 = e2 + sp; + last_sp = -1; + } + stack.push(e2+PtgBinOp[f[0]]+e1); + break; + + case 'PtgIsect': /* [MS-XLS] 2.5.198.67 */ + e1 = stack.pop(); e2 = stack.pop(); + stack.push(e2+" "+e1); + break; + case 'PtgUnion': /* [MS-XLS] 2.5.198.94 */ + e1 = stack.pop(); e2 = stack.pop(); + stack.push(e2+","+e1); + break; + case 'PtgRange': /* [MS-XLS] 2.5.198.83 */ + e1 = stack.pop(); e2 = stack.pop(); + stack.push(e2+":"+e1); + break; + + case 'PtgAttrChoose': /* [MS-XLS] 2.5.198.34 */ + break; + case 'PtgAttrGoto': /* [MS-XLS] 2.5.198.35 */ + break; + case 'PtgAttrIf': /* [MS-XLS] 2.5.198.36 */ + break; + case 'PtgAttrIfError': /* [MS-XLSB] 2.5.97.28 */ + break; + + + case 'PtgRef': /* [MS-XLS] 2.5.198.84 */ +c = shift_cell_xls((f[1][1]), _range, opts); + stack.push(encode_cell_xls(c, biff)); + break; + case 'PtgRefN': /* [MS-XLS] 2.5.198.88 */ +c = cell ? shift_cell_xls((f[1][1]), cell, opts) : (f[1][1]); + stack.push(encode_cell_xls(c, biff)); + break; + case 'PtgRef3d': /* [MS-XLS] 2.5.198.85 */ +ixti = f[1][1]; c = shift_cell_xls((f[1][2]), _range, opts); + sname = get_ixti(supbooks, ixti, opts); + var w = sname; /* IE9 fails on defined names */ // eslint-disable-line no-unused-vars + stack.push(sname + "!" + encode_cell_xls(c, biff)); + break; + + case 'PtgFunc': /* [MS-XLS] 2.5.198.62 */ + case 'PtgFuncVar': /* [MS-XLS] 2.5.198.63 */ + /* f[1] = [argc, func, type] */ + var argc = (f[1][0]), func = (f[1][1]); + if(!argc) argc = 0; + argc &= 0x7F; + var args = argc == 0 ? [] : stack.slice(-argc); + stack.length -= argc; + if(func === 'User') func = args.shift(); + stack.push(func + "(" + args.join(",") + ")"); + break; + + case 'PtgBool': /* [MS-XLS] 2.5.198.42 */ + stack.push(f[1] ? "TRUE" : "FALSE"); break; + case 'PtgInt': /* [MS-XLS] 2.5.198.66 */ + stack.push(f[1]); break; + case 'PtgNum': /* [MS-XLS] 2.5.198.79 TODO: precision? */ + stack.push(String(f[1])); break; + case 'PtgStr': /* [MS-XLS] 2.5.198.89 */ + // $FlowIgnore + stack.push('"' + f[1].replace(/"/g, '""') + '"'); break; + case 'PtgErr': /* [MS-XLS] 2.5.198.57 */ + stack.push(f[1]); break; + case 'PtgAreaN': /* [MS-XLS] 2.5.198.31 TODO */ +r = shift_range_xls(f[1][1], cell ? {s:cell} : _range, opts); + stack.push(encode_range_xls((r), opts)); + break; + case 'PtgArea': /* [MS-XLS] 2.5.198.27 TODO: fixed points */ +r = shift_range_xls(f[1][1], _range, opts); + stack.push(encode_range_xls((r), opts)); + break; + case 'PtgArea3d': /* [MS-XLS] 2.5.198.28 TODO */ +ixti = f[1][1]; r = f[1][2]; + sname = get_ixti(supbooks, ixti, opts); + stack.push(sname + "!" + encode_range_xls((r), opts)); + break; + case 'PtgAttrSum': /* [MS-XLS] 2.5.198.41 */ + stack.push("SUM(" + stack.pop() + ")"); + break; + + case 'PtgAttrBaxcel': /* [MS-XLS] 2.5.198.33 */ + case 'PtgAttrSemi': /* [MS-XLS] 2.5.198.37 */ + break; + + case 'PtgName': /* [MS-XLS] 2.5.198.76 ; [MS-XLSB] 2.5.97.60 TODO: revisions */ + /* f[1] = type, 0, nameindex */ + nameidx = (f[1][2]); + var lbl = (supbooks.names||[])[nameidx-1] || (supbooks[0]||[])[nameidx]; + var name = lbl ? lbl.Name : "SH33TJSNAME" + String(nameidx); + /* [MS-XLSB] 2.5.97.10 Ftab -- last verified 20220204 */ + if(name && name.slice(0,6) == "_xlfn." && !opts.xlfn) name = name.slice(6); + stack.push(name); + break; + + case 'PtgNameX': /* [MS-XLS] 2.5.198.77 ; [MS-XLSB] 2.5.97.61 TODO: revisions */ + /* f[1] = type, ixti, nameindex */ + var bookidx = (f[1][1]); nameidx = (f[1][2]); var externbook; + /* TODO: Properly handle missing values -- this should be using get_ixti_raw primarily */ + if(opts.biff <= 5) { + if(bookidx < 0) bookidx = -bookidx; + if(supbooks[bookidx]) externbook = supbooks[bookidx][nameidx]; + } else { + var o = ""; + if(((supbooks[bookidx]||[])[0]||[])[0] == 0x3A01){/* empty */} + else if(((supbooks[bookidx]||[])[0]||[])[0] == 0x0401){ + if(supbooks[bookidx][nameidx] && supbooks[bookidx][nameidx].itab > 0) { + o = supbooks.SheetNames[supbooks[bookidx][nameidx].itab-1] + "!"; + } + } + else o = supbooks.SheetNames[nameidx-1]+ "!"; + if(supbooks[bookidx] && supbooks[bookidx][nameidx]) o += supbooks[bookidx][nameidx].Name; + else if(supbooks[0] && supbooks[0][nameidx]) o += supbooks[0][nameidx].Name; + else { + var ixtidata = (get_ixti_raw(supbooks, bookidx, opts)||"").split(";;"); + if(ixtidata[nameidx - 1]) o = ixtidata[nameidx - 1]; // TODO: confirm this is correct + else o += "SH33TJSERRX"; + } + stack.push(o); + break; + } + if(!externbook) externbook = {Name: "SH33TJSERRY"}; + stack.push(externbook.Name); + break; + + case 'PtgParen': /* [MS-XLS] 2.5.198.80 */ + var lp = '(', rp = ')'; + if(last_sp >= 0) { + sp = ""; + switch(formula[0][last_sp][1][0]) { + // $FlowIgnore + case 2: lp = fill(" ", formula[0][last_sp][1][1]) + lp; break; + // $FlowIgnore + case 3: lp = fill("\r", formula[0][last_sp][1][1]) + lp; break; + // $FlowIgnore + case 4: rp = fill(" ", formula[0][last_sp][1][1]) + rp; break; + // $FlowIgnore + case 5: rp = fill("\r", formula[0][last_sp][1][1]) + rp; break; + default: + // $FlowIgnore + if(opts.WTF) throw new Error("Unexpected PtgAttrSpaceType " + formula[0][last_sp][1][0]); + } + last_sp = -1; + } + stack.push(lp + stack.pop() + rp); break; + + case 'PtgRefErr': /* [MS-XLS] 2.5.198.86 */ + stack.push('#REF!'); break; + + case 'PtgRefErr3d': /* [MS-XLS] 2.5.198.87 */ + stack.push('#REF!'); break; + + case 'PtgExp': /* [MS-XLS] 2.5.198.58 TODO */ + c = {c:(f[1][1]),r:(f[1][0])}; + var q = ({c: cell.c, r:cell.r}); + if(supbooks.sharedf[encode_cell(c)]) { + var parsedf = (supbooks.sharedf[encode_cell(c)]); + stack.push(stringify_formula(parsedf, _range, q, supbooks, opts)); + } else { + var fnd = false; + for(e1=0;e1!=supbooks.arrayf.length; ++e1) { + /* TODO: should be something like range_has */ + e2 = supbooks.arrayf[e1]; + if(c.c < e2[0].s.c || c.c > e2[0].e.c) continue; + if(c.r < e2[0].s.r || c.r > e2[0].e.r) continue; + stack.push(stringify_formula(e2[1], _range, q, supbooks, opts)); + fnd = true; + break; + } + if(!fnd) stack.push(f[1]); + } + break; + + case 'PtgArray': /* [MS-XLS] 2.5.198.32 TODO */ + stack.push("{" + stringify_array(f[1]) + "}"); + break; + + case 'PtgMemArea': /* [MS-XLS] 2.5.198.70 TODO: confirm this is a non-display */ + //stack.push("(" + f[2].map(encode_range).join(",") + ")"); + break; + + case 'PtgAttrSpace': /* [MS-XLS] 2.5.198.38 */ + case 'PtgAttrSpaceSemi': /* [MS-XLS] 2.5.198.39 */ + last_sp = ff; + break; + + case 'PtgTbl': /* [MS-XLS] 2.5.198.92 TODO */ + break; + + case 'PtgMemErr': /* [MS-XLS] 2.5.198.71 */ + break; + + case 'PtgMissArg': /* [MS-XLS] 2.5.198.74 */ + stack.push(""); + break; + + case 'PtgAreaErr': /* [MS-XLS] 2.5.198.29 */ + stack.push("#REF!"); break; + + case 'PtgAreaErr3d': /* [MS-XLS] 2.5.198.30 */ + stack.push("#REF!"); break; + + case 'PtgList': /* [MS-XLSB] 2.5.97.52 */ + // $FlowIgnore + stack.push("Table" + f[1].idx + "[#" + f[1].rt + "]"); + break; + + case 'PtgMemAreaN': + case 'PtgMemNoMemN': + case 'PtgAttrNoop': + case 'PtgSheet': + case 'PtgEndSheet': + break; + + case 'PtgMemFunc': /* [MS-XLS] 2.5.198.72 TODO */ + break; + case 'PtgMemNoMem': /* [MS-XLS] 2.5.198.73 TODO */ + break; + + case 'PtgElfCol': /* [MS-XLS] 2.5.198.46 */ + case 'PtgElfColS': /* [MS-XLS] 2.5.198.47 */ + case 'PtgElfColSV': /* [MS-XLS] 2.5.198.48 */ + case 'PtgElfColV': /* [MS-XLS] 2.5.198.49 */ + case 'PtgElfLel': /* [MS-XLS] 2.5.198.50 */ + case 'PtgElfRadical': /* [MS-XLS] 2.5.198.51 */ + case 'PtgElfRadicalLel': /* [MS-XLS] 2.5.198.52 */ + case 'PtgElfRadicalS': /* [MS-XLS] 2.5.198.53 */ + case 'PtgElfRw': /* [MS-XLS] 2.5.198.54 */ + case 'PtgElfRwV': /* [MS-XLS] 2.5.198.55 */ + throw new Error("Unsupported ELFs"); + + case 'PtgSxName': /* [MS-XLS] 2.5.198.91 TODO -- find a test case */ + throw new Error('Unrecognized Formula Token: ' + String(f)); + default: throw new Error('Unrecognized Formula Token: ' + String(f)); + } + var PtgNonDisp = ['PtgAttrSpace', 'PtgAttrSpaceSemi', 'PtgAttrGoto']; + if(opts.biff != 3) if(last_sp >= 0 && PtgNonDisp.indexOf(formula[0][ff][0]) == -1) { + f = formula[0][last_sp]; + var _left = true; + switch(f[1][0]) { + /* note: some bad XLSB files omit the PtgParen */ + case 4: _left = false; + /* falls through */ + case 0: + // $FlowIgnore + sp = fill(" ", f[1][1]); break; + case 5: _left = false; + /* falls through */ + case 1: + // $FlowIgnore + sp = fill("\r", f[1][1]); break; + default: + sp = ""; + // $FlowIgnore + if(opts.WTF) throw new Error("Unexpected PtgAttrSpaceType " + f[1][0]); + } + stack.push((_left ? sp : "") + stack.pop() + (_left ? "" : sp)); + last_sp = -1; + } + } + if(stack.length > 1 && opts.WTF) throw new Error("bad formula stack"); + return stack[0]; +} + +/* [MS-XLS] 2.5.198.1 TODO */ +function parse_ArrayParsedFormula(blob, length, opts) { + var target = blob.l + length, len = opts.biff == 2 ? 1 : 2; + var rgcb, cce = blob.read_shift(len); // length of rgce + if(cce == 0xFFFF) return [[],parsenoop(blob, length-2)]; + var rgce = parse_Rgce(blob, cce, opts); + if(length !== cce + len) rgcb = parse_RgbExtra(blob, length - cce - len, rgce, opts); + blob.l = target; + return [rgce, rgcb]; +} + +/* [MS-XLS] 2.5.198.3 TODO */ +function parse_XLSCellParsedFormula(blob, length, opts) { + var target = blob.l + length, len = opts.biff == 2 ? 1 : 2; + var rgcb, cce = blob.read_shift(len); // length of rgce + if(cce == 0xFFFF) return [[],parsenoop(blob, length-2)]; + var rgce = parse_Rgce(blob, cce, opts); + if(length !== cce + len) rgcb = parse_RgbExtra(blob, length - cce - len, rgce, opts); + blob.l = target; + return [rgce, rgcb]; +} + +/* [MS-XLS] 2.5.198.21 */ +function parse_NameParsedFormula(blob, length, opts, cce) { + var target = blob.l + length; + var rgce = parse_Rgce(blob, cce, opts); + var rgcb; + if(target !== blob.l) rgcb = parse_RgbExtra(blob, target - blob.l, rgce, opts); + return [rgce, rgcb]; +} + +/* [MS-XLS] 2.5.198.118 TODO */ +function parse_SharedParsedFormula(blob, length, opts) { + var target = blob.l + length; + var rgcb, cce = blob.read_shift(2); // length of rgce + var rgce = parse_Rgce(blob, cce, opts); + if(cce == 0xFFFF) return [[],parsenoop(blob, length-2)]; + if(length !== cce + 2) rgcb = parse_RgbExtra(blob, target - cce - 2, rgce, opts); + return [rgce, rgcb]; +} + +/* [MS-XLS] 2.5.133 TODO: how to emit empty strings? */ +function parse_FormulaValue(blob) { + var b; + if(__readUInt16LE(blob,blob.l + 6) !== 0xFFFF) return [parse_Xnum(blob),'n']; + switch(blob[blob.l]) { + case 0x00: blob.l += 8; return ["String", 's']; + case 0x01: b = blob[blob.l+2] === 0x1; blob.l += 8; return [b,'b']; + case 0x02: b = blob[blob.l+2]; blob.l += 8; return [b,'e']; + case 0x03: blob.l += 8; return ["",'s']; + } + return []; +} +function write_FormulaValue(value) { + if(value == null) { + // Blank String Value + var o = new_buf(8); + o.write_shift(1, 0x03); + o.write_shift(1, 0); + o.write_shift(2, 0); + o.write_shift(2, 0); + o.write_shift(2, 0xFFFF); + return o; + } else if(typeof value == "number") return write_Xnum(value); + return write_Xnum(0); +} + +/* [MS-XLS] 2.4.127 TODO */ +function parse_Formula(blob, length, opts) { + var end = blob.l + length; + var cell = parse_XLSCell(blob, 6); + if(opts.biff == 2) ++blob.l; + var val = parse_FormulaValue(blob,8); + var flags = blob.read_shift(1); + if(opts.biff != 2) { + blob.read_shift(1); + if(opts.biff >= 5) { + /*var chn = */blob.read_shift(4); + } + } + var cbf = parse_XLSCellParsedFormula(blob, end - blob.l, opts); + return {cell:cell, val:val[0], formula:cbf, shared: (flags >> 3) & 1, tt:val[1]}; +} +function write_Formula(cell, R, C, opts, os) { + // Cell + var o1 = write_XLSCell(R, C, os); + + // FormulaValue + var o2 = write_FormulaValue(cell.v); + + // flags + cache + var o3 = new_buf(6); + var flags = 0x01 | 0x20; + o3.write_shift(2, flags); + o3.write_shift(4, 0); + + // CellParsedFormula + var bf = new_buf(cell.bf.length); + for(var i = 0; i < cell.bf.length; ++i) bf[i] = cell.bf[i]; + + var out = bconcat([o1, o2, o3, bf]); + return out; +} + + +/* XLSB Parsed Formula records have the same shape */ +function parse_XLSBParsedFormula(data, length, opts) { + var cce = data.read_shift(4); + var rgce = parse_Rgce(data, cce, opts); + var cb = data.read_shift(4); + var rgcb = cb > 0 ? parse_RgbExtra(data, cb, rgce, opts) : null; + return [rgce, rgcb]; +} + +/* [MS-XLSB] 2.5.97.1 ArrayParsedFormula */ +var parse_XLSBArrayParsedFormula = parse_XLSBParsedFormula; +/* [MS-XLSB] 2.5.97.4 CellParsedFormula */ +var parse_XLSBCellParsedFormula = parse_XLSBParsedFormula; +/* [MS-XLSB] 2.5.97.8 DVParsedFormula */ +//var parse_XLSBDVParsedFormula = parse_XLSBParsedFormula; +/* [MS-XLSB] 2.5.97.9 FRTParsedFormula */ +//var parse_XLSBFRTParsedFormula = parse_XLSBParsedFormula2; +/* [MS-XLSB] 2.5.97.12 NameParsedFormula */ +var parse_XLSBNameParsedFormula = parse_XLSBParsedFormula; +/* [MS-XLSB] 2.5.97.98 SharedParsedFormula */ +var parse_XLSBSharedParsedFormula = parse_XLSBParsedFormula; +var Cetab = { + 0: "BEEP", + 1: "OPEN", + 2: "OPEN.LINKS", + 3: "CLOSE.ALL", + 4: "SAVE", + 5: "SAVE.AS", + 6: "FILE.DELETE", + 7: "PAGE.SETUP", + 8: "PRINT", + 9: "PRINTER.SETUP", + 10: "QUIT", + 11: "NEW.WINDOW", + 12: "ARRANGE.ALL", + 13: "WINDOW.SIZE", + 14: "WINDOW.MOVE", + 15: "FULL", + 16: "CLOSE", + 17: "RUN", + 22: "SET.PRINT.AREA", + 23: "SET.PRINT.TITLES", + 24: "SET.PAGE.BREAK", + 25: "REMOVE.PAGE.BREAK", + 26: "FONT", + 27: "DISPLAY", + 28: "PROTECT.DOCUMENT", + 29: "PRECISION", + 30: "A1.R1C1", + 31: "CALCULATE.NOW", + 32: "CALCULATION", + 34: "DATA.FIND", + 35: "EXTRACT", + 36: "DATA.DELETE", + 37: "SET.DATABASE", + 38: "SET.CRITERIA", + 39: "SORT", + 40: "DATA.SERIES", + 41: "TABLE", + 42: "FORMAT.NUMBER", + 43: "ALIGNMENT", + 44: "STYLE", + 45: "BORDER", + 46: "CELL.PROTECTION", + 47: "COLUMN.WIDTH", + 48: "UNDO", + 49: "CUT", + 50: "COPY", + 51: "PASTE", + 52: "CLEAR", + 53: "PASTE.SPECIAL", + 54: "EDIT.DELETE", + 55: "INSERT", + 56: "FILL.RIGHT", + 57: "FILL.DOWN", + 61: "DEFINE.NAME", + 62: "CREATE.NAMES", + 63: "FORMULA.GOTO", + 64: "FORMULA.FIND", + 65: "SELECT.LAST.CELL", + 66: "SHOW.ACTIVE.CELL", + 67: "GALLERY.AREA", + 68: "GALLERY.BAR", + 69: "GALLERY.COLUMN", + 70: "GALLERY.LINE", + 71: "GALLERY.PIE", + 72: "GALLERY.SCATTER", + 73: "COMBINATION", + 74: "PREFERRED", + 75: "ADD.OVERLAY", + 76: "GRIDLINES", + 77: "SET.PREFERRED", + 78: "AXES", + 79: "LEGEND", + 80: "ATTACH.TEXT", + 81: "ADD.ARROW", + 82: "SELECT.CHART", + 83: "SELECT.PLOT.AREA", + 84: "PATTERNS", + 85: "MAIN.CHART", + 86: "OVERLAY", + 87: "SCALE", + 88: "FORMAT.LEGEND", + 89: "FORMAT.TEXT", + 90: "EDIT.REPEAT", + 91: "PARSE", + 92: "JUSTIFY", + 93: "HIDE", + 94: "UNHIDE", + 95: "WORKSPACE", + 96: "FORMULA", + 97: "FORMULA.FILL", + 98: "FORMULA.ARRAY", + 99: "DATA.FIND.NEXT", + 100: "DATA.FIND.PREV", + 101: "FORMULA.FIND.NEXT", + 102: "FORMULA.FIND.PREV", + 103: "ACTIVATE", + 104: "ACTIVATE.NEXT", + 105: "ACTIVATE.PREV", + 106: "UNLOCKED.NEXT", + 107: "UNLOCKED.PREV", + 108: "COPY.PICTURE", + 109: "SELECT", + 110: "DELETE.NAME", + 111: "DELETE.FORMAT", + 112: "VLINE", + 113: "HLINE", + 114: "VPAGE", + 115: "HPAGE", + 116: "VSCROLL", + 117: "HSCROLL", + 118: "ALERT", + 119: "NEW", + 120: "CANCEL.COPY", + 121: "SHOW.CLIPBOARD", + 122: "MESSAGE", + 124: "PASTE.LINK", + 125: "APP.ACTIVATE", + 126: "DELETE.ARROW", + 127: "ROW.HEIGHT", + 128: "FORMAT.MOVE", + 129: "FORMAT.SIZE", + 130: "FORMULA.REPLACE", + 131: "SEND.KEYS", + 132: "SELECT.SPECIAL", + 133: "APPLY.NAMES", + 134: "REPLACE.FONT", + 135: "FREEZE.PANES", + 136: "SHOW.INFO", + 137: "SPLIT", + 138: "ON.WINDOW", + 139: "ON.DATA", + 140: "DISABLE.INPUT", + 142: "OUTLINE", + 143: "LIST.NAMES", + 144: "FILE.CLOSE", + 145: "SAVE.WORKBOOK", + 146: "DATA.FORM", + 147: "COPY.CHART", + 148: "ON.TIME", + 149: "WAIT", + 150: "FORMAT.FONT", + 151: "FILL.UP", + 152: "FILL.LEFT", + 153: "DELETE.OVERLAY", + 155: "SHORT.MENUS", + 159: "SET.UPDATE.STATUS", + 161: "COLOR.PALETTE", + 162: "DELETE.STYLE", + 163: "WINDOW.RESTORE", + 164: "WINDOW.MAXIMIZE", + 166: "CHANGE.LINK", + 167: "CALCULATE.DOCUMENT", + 168: "ON.KEY", + 169: "APP.RESTORE", + 170: "APP.MOVE", + 171: "APP.SIZE", + 172: "APP.MINIMIZE", + 173: "APP.MAXIMIZE", + 174: "BRING.TO.FRONT", + 175: "SEND.TO.BACK", + 185: "MAIN.CHART.TYPE", + 186: "OVERLAY.CHART.TYPE", + 187: "SELECT.END", + 188: "OPEN.MAIL", + 189: "SEND.MAIL", + 190: "STANDARD.FONT", + 191: "CONSOLIDATE", + 192: "SORT.SPECIAL", + 193: "GALLERY.3D.AREA", + 194: "GALLERY.3D.COLUMN", + 195: "GALLERY.3D.LINE", + 196: "GALLERY.3D.PIE", + 197: "VIEW.3D", + 198: "GOAL.SEEK", + 199: "WORKGROUP", + 200: "FILL.GROUP", + 201: "UPDATE.LINK", + 202: "PROMOTE", + 203: "DEMOTE", + 204: "SHOW.DETAIL", + 206: "UNGROUP", + 207: "OBJECT.PROPERTIES", + 208: "SAVE.NEW.OBJECT", + 209: "SHARE", + 210: "SHARE.NAME", + 211: "DUPLICATE", + 212: "APPLY.STYLE", + 213: "ASSIGN.TO.OBJECT", + 214: "OBJECT.PROTECTION", + 215: "HIDE.OBJECT", + 216: "SET.EXTRACT", + 217: "CREATE.PUBLISHER", + 218: "SUBSCRIBE.TO", + 219: "ATTRIBUTES", + 220: "SHOW.TOOLBAR", + 222: "PRINT.PREVIEW", + 223: "EDIT.COLOR", + 224: "SHOW.LEVELS", + 225: "FORMAT.MAIN", + 226: "FORMAT.OVERLAY", + 227: "ON.RECALC", + 228: "EDIT.SERIES", + 229: "DEFINE.STYLE", + 240: "LINE.PRINT", + 243: "ENTER.DATA", + 249: "GALLERY.RADAR", + 250: "MERGE.STYLES", + 251: "EDITION.OPTIONS", + 252: "PASTE.PICTURE", + 253: "PASTE.PICTURE.LINK", + 254: "SPELLING", + 256: "ZOOM", + 259: "INSERT.OBJECT", + 260: "WINDOW.MINIMIZE", + 265: "SOUND.NOTE", + 266: "SOUND.PLAY", + 267: "FORMAT.SHAPE", + 268: "EXTEND.POLYGON", + 269: "FORMAT.AUTO", + 272: "GALLERY.3D.BAR", + 273: "GALLERY.3D.SURFACE", + 274: "FILL.AUTO", + 276: "CUSTOMIZE.TOOLBAR", + 277: "ADD.TOOL", + 278: "EDIT.OBJECT", + 279: "ON.DOUBLECLICK", + 280: "ON.ENTRY", + 281: "WORKBOOK.ADD", + 282: "WORKBOOK.MOVE", + 283: "WORKBOOK.COPY", + 284: "WORKBOOK.OPTIONS", + 285: "SAVE.WORKSPACE", + 288: "CHART.WIZARD", + 289: "DELETE.TOOL", + 290: "MOVE.TOOL", + 291: "WORKBOOK.SELECT", + 292: "WORKBOOK.ACTIVATE", + 293: "ASSIGN.TO.TOOL", + 295: "COPY.TOOL", + 296: "RESET.TOOL", + 297: "CONSTRAIN.NUMERIC", + 298: "PASTE.TOOL", + 302: "WORKBOOK.NEW", + 305: "SCENARIO.CELLS", + 306: "SCENARIO.DELETE", + 307: "SCENARIO.ADD", + 308: "SCENARIO.EDIT", + 309: "SCENARIO.SHOW", + 310: "SCENARIO.SHOW.NEXT", + 311: "SCENARIO.SUMMARY", + 312: "PIVOT.TABLE.WIZARD", + 313: "PIVOT.FIELD.PROPERTIES", + 314: "PIVOT.FIELD", + 315: "PIVOT.ITEM", + 316: "PIVOT.ADD.FIELDS", + 318: "OPTIONS.CALCULATION", + 319: "OPTIONS.EDIT", + 320: "OPTIONS.VIEW", + 321: "ADDIN.MANAGER", + 322: "MENU.EDITOR", + 323: "ATTACH.TOOLBARS", + 324: "VBAActivate", + 325: "OPTIONS.CHART", + 328: "VBA.INSERT.FILE", + 330: "VBA.PROCEDURE.DEFINITION", + 336: "ROUTING.SLIP", + 338: "ROUTE.DOCUMENT", + 339: "MAIL.LOGON", + 342: "INSERT.PICTURE", + 343: "EDIT.TOOL", + 344: "GALLERY.DOUGHNUT", + 350: "CHART.TREND", + 352: "PIVOT.ITEM.PROPERTIES", + 354: "WORKBOOK.INSERT", + 355: "OPTIONS.TRANSITION", + 356: "OPTIONS.GENERAL", + 370: "FILTER.ADVANCED", + 373: "MAIL.ADD.MAILER", + 374: "MAIL.DELETE.MAILER", + 375: "MAIL.REPLY", + 376: "MAIL.REPLY.ALL", + 377: "MAIL.FORWARD", + 378: "MAIL.NEXT.LETTER", + 379: "DATA.LABEL", + 380: "INSERT.TITLE", + 381: "FONT.PROPERTIES", + 382: "MACRO.OPTIONS", + 383: "WORKBOOK.HIDE", + 384: "WORKBOOK.UNHIDE", + 385: "WORKBOOK.DELETE", + 386: "WORKBOOK.NAME", + 388: "GALLERY.CUSTOM", + 390: "ADD.CHART.AUTOFORMAT", + 391: "DELETE.CHART.AUTOFORMAT", + 392: "CHART.ADD.DATA", + 393: "AUTO.OUTLINE", + 394: "TAB.ORDER", + 395: "SHOW.DIALOG", + 396: "SELECT.ALL", + 397: "UNGROUP.SHEETS", + 398: "SUBTOTAL.CREATE", + 399: "SUBTOTAL.REMOVE", + 400: "RENAME.OBJECT", + 412: "WORKBOOK.SCROLL", + 413: "WORKBOOK.NEXT", + 414: "WORKBOOK.PREV", + 415: "WORKBOOK.TAB.SPLIT", + 416: "FULL.SCREEN", + 417: "WORKBOOK.PROTECT", + 420: "SCROLLBAR.PROPERTIES", + 421: "PIVOT.SHOW.PAGES", + 422: "TEXT.TO.COLUMNS", + 423: "FORMAT.CHARTTYPE", + 424: "LINK.FORMAT", + 425: "TRACER.DISPLAY", + 430: "TRACER.NAVIGATE", + 431: "TRACER.CLEAR", + 432: "TRACER.ERROR", + 433: "PIVOT.FIELD.GROUP", + 434: "PIVOT.FIELD.UNGROUP", + 435: "CHECKBOX.PROPERTIES", + 436: "LABEL.PROPERTIES", + 437: "LISTBOX.PROPERTIES", + 438: "EDITBOX.PROPERTIES", + 439: "PIVOT.REFRESH", + 440: "LINK.COMBO", + 441: "OPEN.TEXT", + 442: "HIDE.DIALOG", + 443: "SET.DIALOG.FOCUS", + 444: "ENABLE.OBJECT", + 445: "PUSHBUTTON.PROPERTIES", + 446: "SET.DIALOG.DEFAULT", + 447: "FILTER", + 448: "FILTER.SHOW.ALL", + 449: "CLEAR.OUTLINE", + 450: "FUNCTION.WIZARD", + 451: "ADD.LIST.ITEM", + 452: "SET.LIST.ITEM", + 453: "REMOVE.LIST.ITEM", + 454: "SELECT.LIST.ITEM", + 455: "SET.CONTROL.VALUE", + 456: "SAVE.COPY.AS", + 458: "OPTIONS.LISTS.ADD", + 459: "OPTIONS.LISTS.DELETE", + 460: "SERIES.AXES", + 461: "SERIES.X", + 462: "SERIES.Y", + 463: "ERRORBAR.X", + 464: "ERRORBAR.Y", + 465: "FORMAT.CHART", + 466: "SERIES.ORDER", + 467: "MAIL.LOGOFF", + 468: "CLEAR.ROUTING.SLIP", + 469: "APP.ACTIVATE.MICROSOFT", + 470: "MAIL.EDIT.MAILER", + 471: "ON.SHEET", + 472: "STANDARD.WIDTH", + 473: "SCENARIO.MERGE", + 474: "SUMMARY.INFO", + 475: "FIND.FILE", + 476: "ACTIVE.CELL.FONT", + 477: "ENABLE.TIPWIZARD", + 478: "VBA.MAKE.ADDIN", + 480: "INSERTDATATABLE", + 481: "WORKGROUP.OPTIONS", + 482: "MAIL.SEND.MAILER", + 485: "AUTOCORRECT", + 489: "POST.DOCUMENT", + 491: "PICKLIST", + 493: "VIEW.SHOW", + 494: "VIEW.DEFINE", + 495: "VIEW.DELETE", + 509: "SHEET.BACKGROUND", + 510: "INSERT.MAP.OBJECT", + 511: "OPTIONS.MENONO", + 517: "MSOCHECKS", + 518: "NORMAL", + 519: "LAYOUT", + 520: "RM.PRINT.AREA", + 521: "CLEAR.PRINT.AREA", + 522: "ADD.PRINT.AREA", + 523: "MOVE.BRK", + 545: "HIDECURR.NOTE", + 546: "HIDEALL.NOTES", + 547: "DELETE.NOTE", + 548: "TRAVERSE.NOTES", + 549: "ACTIVATE.NOTES", + 620: "PROTECT.REVISIONS", + 621: "UNPROTECT.REVISIONS", + 647: "OPTIONS.ME", + 653: "WEB.PUBLISH", + 667: "NEWWEBQUERY", + 673: "PIVOT.TABLE.CHART", + 753: "OPTIONS.SAVE", + 755: "OPTIONS.SPELL", + 808: "HIDEALL.INKANNOTS" +}; +var Ftab = { + 0: "COUNT", + 1: "IF", + 2: "ISNA", + 3: "ISERROR", + 4: "SUM", + 5: "AVERAGE", + 6: "MIN", + 7: "MAX", + 8: "ROW", + 9: "COLUMN", + 10: "NA", + 11: "NPV", + 12: "STDEV", + 13: "DOLLAR", + 14: "FIXED", + 15: "SIN", + 16: "COS", + 17: "TAN", + 18: "ATAN", + 19: "PI", + 20: "SQRT", + 21: "EXP", + 22: "LN", + 23: "LOG10", + 24: "ABS", + 25: "INT", + 26: "SIGN", + 27: "ROUND", + 28: "LOOKUP", + 29: "INDEX", + 30: "REPT", + 31: "MID", + 32: "LEN", + 33: "VALUE", + 34: "TRUE", + 35: "FALSE", + 36: "AND", + 37: "OR", + 38: "NOT", + 39: "MOD", + 40: "DCOUNT", + 41: "DSUM", + 42: "DAVERAGE", + 43: "DMIN", + 44: "DMAX", + 45: "DSTDEV", + 46: "VAR", + 47: "DVAR", + 48: "TEXT", + 49: "LINEST", + 50: "TREND", + 51: "LOGEST", + 52: "GROWTH", + 53: "GOTO", + 54: "HALT", + 55: "RETURN", + 56: "PV", + 57: "FV", + 58: "NPER", + 59: "PMT", + 60: "RATE", + 61: "MIRR", + 62: "IRR", + 63: "RAND", + 64: "MATCH", + 65: "DATE", + 66: "TIME", + 67: "DAY", + 68: "MONTH", + 69: "YEAR", + 70: "WEEKDAY", + 71: "HOUR", + 72: "MINUTE", + 73: "SECOND", + 74: "NOW", + 75: "AREAS", + 76: "ROWS", + 77: "COLUMNS", + 78: "OFFSET", + 79: "ABSREF", + 80: "RELREF", + 81: "ARGUMENT", + 82: "SEARCH", + 83: "TRANSPOSE", + 84: "ERROR", + 85: "STEP", + 86: "TYPE", + 87: "ECHO", + 88: "SET.NAME", + 89: "CALLER", + 90: "DEREF", + 91: "WINDOWS", + 92: "SERIES", + 93: "DOCUMENTS", + 94: "ACTIVE.CELL", + 95: "SELECTION", + 96: "RESULT", + 97: "ATAN2", + 98: "ASIN", + 99: "ACOS", + 100: "CHOOSE", + 101: "HLOOKUP", + 102: "VLOOKUP", + 103: "LINKS", + 104: "INPUT", + 105: "ISREF", + 106: "GET.FORMULA", + 107: "GET.NAME", + 108: "SET.VALUE", + 109: "LOG", + 110: "EXEC", + 111: "CHAR", + 112: "LOWER", + 113: "UPPER", + 114: "PROPER", + 115: "LEFT", + 116: "RIGHT", + 117: "EXACT", + 118: "TRIM", + 119: "REPLACE", + 120: "SUBSTITUTE", + 121: "CODE", + 122: "NAMES", + 123: "DIRECTORY", + 124: "FIND", + 125: "CELL", + 126: "ISERR", + 127: "ISTEXT", + 128: "ISNUMBER", + 129: "ISBLANK", + 130: "T", + 131: "N", + 132: "FOPEN", + 133: "FCLOSE", + 134: "FSIZE", + 135: "FREADLN", + 136: "FREAD", + 137: "FWRITELN", + 138: "FWRITE", + 139: "FPOS", + 140: "DATEVALUE", + 141: "TIMEVALUE", + 142: "SLN", + 143: "SYD", + 144: "DDB", + 145: "GET.DEF", + 146: "REFTEXT", + 147: "TEXTREF", + 148: "INDIRECT", + 149: "REGISTER", + 150: "CALL", + 151: "ADD.BAR", + 152: "ADD.MENU", + 153: "ADD.COMMAND", + 154: "ENABLE.COMMAND", + 155: "CHECK.COMMAND", + 156: "RENAME.COMMAND", + 157: "SHOW.BAR", + 158: "DELETE.MENU", + 159: "DELETE.COMMAND", + 160: "GET.CHART.ITEM", + 161: "DIALOG.BOX", + 162: "CLEAN", + 163: "MDETERM", + 164: "MINVERSE", + 165: "MMULT", + 166: "FILES", + 167: "IPMT", + 168: "PPMT", + 169: "COUNTA", + 170: "CANCEL.KEY", + 171: "FOR", + 172: "WHILE", + 173: "BREAK", + 174: "NEXT", + 175: "INITIATE", + 176: "REQUEST", + 177: "POKE", + 178: "EXECUTE", + 179: "TERMINATE", + 180: "RESTART", + 181: "HELP", + 182: "GET.BAR", + 183: "PRODUCT", + 184: "FACT", + 185: "GET.CELL", + 186: "GET.WORKSPACE", + 187: "GET.WINDOW", + 188: "GET.DOCUMENT", + 189: "DPRODUCT", + 190: "ISNONTEXT", + 191: "GET.NOTE", + 192: "NOTE", + 193: "STDEVP", + 194: "VARP", + 195: "DSTDEVP", + 196: "DVARP", + 197: "TRUNC", + 198: "ISLOGICAL", + 199: "DCOUNTA", + 200: "DELETE.BAR", + 201: "UNREGISTER", + 204: "USDOLLAR", + 205: "FINDB", + 206: "SEARCHB", + 207: "REPLACEB", + 208: "LEFTB", + 209: "RIGHTB", + 210: "MIDB", + 211: "LENB", + 212: "ROUNDUP", + 213: "ROUNDDOWN", + 214: "ASC", + 215: "DBCS", + 216: "RANK", + 219: "ADDRESS", + 220: "DAYS360", + 221: "TODAY", + 222: "VDB", + 223: "ELSE", + 224: "ELSE.IF", + 225: "END.IF", + 226: "FOR.CELL", + 227: "MEDIAN", + 228: "SUMPRODUCT", + 229: "SINH", + 230: "COSH", + 231: "TANH", + 232: "ASINH", + 233: "ACOSH", + 234: "ATANH", + 235: "DGET", + 236: "CREATE.OBJECT", + 237: "VOLATILE", + 238: "LAST.ERROR", + 239: "CUSTOM.UNDO", + 240: "CUSTOM.REPEAT", + 241: "FORMULA.CONVERT", + 242: "GET.LINK.INFO", + 243: "TEXT.BOX", + 244: "INFO", + 245: "GROUP", + 246: "GET.OBJECT", + 247: "DB", + 248: "PAUSE", + 251: "RESUME", + 252: "FREQUENCY", + 253: "ADD.TOOLBAR", + 254: "DELETE.TOOLBAR", + 255: "User", + 256: "RESET.TOOLBAR", + 257: "EVALUATE", + 258: "GET.TOOLBAR", + 259: "GET.TOOL", + 260: "SPELLING.CHECK", + 261: "ERROR.TYPE", + 262: "APP.TITLE", + 263: "WINDOW.TITLE", + 264: "SAVE.TOOLBAR", + 265: "ENABLE.TOOL", + 266: "PRESS.TOOL", + 267: "REGISTER.ID", + 268: "GET.WORKBOOK", + 269: "AVEDEV", + 270: "BETADIST", + 271: "GAMMALN", + 272: "BETAINV", + 273: "BINOMDIST", + 274: "CHIDIST", + 275: "CHIINV", + 276: "COMBIN", + 277: "CONFIDENCE", + 278: "CRITBINOM", + 279: "EVEN", + 280: "EXPONDIST", + 281: "FDIST", + 282: "FINV", + 283: "FISHER", + 284: "FISHERINV", + 285: "FLOOR", + 286: "GAMMADIST", + 287: "GAMMAINV", + 288: "CEILING", + 289: "HYPGEOMDIST", + 290: "LOGNORMDIST", + 291: "LOGINV", + 292: "NEGBINOMDIST", + 293: "NORMDIST", + 294: "NORMSDIST", + 295: "NORMINV", + 296: "NORMSINV", + 297: "STANDARDIZE", + 298: "ODD", + 299: "PERMUT", + 300: "POISSON", + 301: "TDIST", + 302: "WEIBULL", + 303: "SUMXMY2", + 304: "SUMX2MY2", + 305: "SUMX2PY2", + 306: "CHITEST", + 307: "CORREL", + 308: "COVAR", + 309: "FORECAST", + 310: "FTEST", + 311: "INTERCEPT", + 312: "PEARSON", + 313: "RSQ", + 314: "STEYX", + 315: "SLOPE", + 316: "TTEST", + 317: "PROB", + 318: "DEVSQ", + 319: "GEOMEAN", + 320: "HARMEAN", + 321: "SUMSQ", + 322: "KURT", + 323: "SKEW", + 324: "ZTEST", + 325: "LARGE", + 326: "SMALL", + 327: "QUARTILE", + 328: "PERCENTILE", + 329: "PERCENTRANK", + 330: "MODE", + 331: "TRIMMEAN", + 332: "TINV", + 334: "MOVIE.COMMAND", + 335: "GET.MOVIE", + 336: "CONCATENATE", + 337: "POWER", + 338: "PIVOT.ADD.DATA", + 339: "GET.PIVOT.TABLE", + 340: "GET.PIVOT.FIELD", + 341: "GET.PIVOT.ITEM", + 342: "RADIANS", + 343: "DEGREES", + 344: "SUBTOTAL", + 345: "SUMIF", + 346: "COUNTIF", + 347: "COUNTBLANK", + 348: "SCENARIO.GET", + 349: "OPTIONS.LISTS.GET", + 350: "ISPMT", + 351: "DATEDIF", + 352: "DATESTRING", + 353: "NUMBERSTRING", + 354: "ROMAN", + 355: "OPEN.DIALOG", + 356: "SAVE.DIALOG", + 357: "VIEW.GET", + 358: "GETPIVOTDATA", + 359: "HYPERLINK", + 360: "PHONETIC", + 361: "AVERAGEA", + 362: "MAXA", + 363: "MINA", + 364: "STDEVPA", + 365: "VARPA", + 366: "STDEVA", + 367: "VARA", + 368: "BAHTTEXT", + 369: "THAIDAYOFWEEK", + 370: "THAIDIGIT", + 371: "THAIMONTHOFYEAR", + 372: "THAINUMSOUND", + 373: "THAINUMSTRING", + 374: "THAISTRINGLENGTH", + 375: "ISTHAIDIGIT", + 376: "ROUNDBAHTDOWN", + 377: "ROUNDBAHTUP", + 378: "THAIYEAR", + 379: "RTD", + 380: "CUBEVALUE", + 381: "CUBEMEMBER", + 382: "CUBEMEMBERPROPERTY", + 383: "CUBERANKEDMEMBER", + 384: "HEX2BIN", + 385: "HEX2DEC", + 386: "HEX2OCT", + 387: "DEC2BIN", + 388: "DEC2HEX", + 389: "DEC2OCT", + 390: "OCT2BIN", + 391: "OCT2HEX", + 392: "OCT2DEC", + 393: "BIN2DEC", + 394: "BIN2OCT", + 395: "BIN2HEX", + 396: "IMSUB", + 397: "IMDIV", + 398: "IMPOWER", + 399: "IMABS", + 400: "IMSQRT", + 401: "IMLN", + 402: "IMLOG2", + 403: "IMLOG10", + 404: "IMSIN", + 405: "IMCOS", + 406: "IMEXP", + 407: "IMARGUMENT", + 408: "IMCONJUGATE", + 409: "IMAGINARY", + 410: "IMREAL", + 411: "COMPLEX", + 412: "IMSUM", + 413: "IMPRODUCT", + 414: "SERIESSUM", + 415: "FACTDOUBLE", + 416: "SQRTPI", + 417: "QUOTIENT", + 418: "DELTA", + 419: "GESTEP", + 420: "ISEVEN", + 421: "ISODD", + 422: "MROUND", + 423: "ERF", + 424: "ERFC", + 425: "BESSELJ", + 426: "BESSELK", + 427: "BESSELY", + 428: "BESSELI", + 429: "XIRR", + 430: "XNPV", + 431: "PRICEMAT", + 432: "YIELDMAT", + 433: "INTRATE", + 434: "RECEIVED", + 435: "DISC", + 436: "PRICEDISC", + 437: "YIELDDISC", + 438: "TBILLEQ", + 439: "TBILLPRICE", + 440: "TBILLYIELD", + 441: "PRICE", + 442: "YIELD", + 443: "DOLLARDE", + 444: "DOLLARFR", + 445: "NOMINAL", + 446: "EFFECT", + 447: "CUMPRINC", + 448: "CUMIPMT", + 449: "EDATE", + 450: "EOMONTH", + 451: "YEARFRAC", + 452: "COUPDAYBS", + 453: "COUPDAYS", + 454: "COUPDAYSNC", + 455: "COUPNCD", + 456: "COUPNUM", + 457: "COUPPCD", + 458: "DURATION", + 459: "MDURATION", + 460: "ODDLPRICE", + 461: "ODDLYIELD", + 462: "ODDFPRICE", + 463: "ODDFYIELD", + 464: "RANDBETWEEN", + 465: "WEEKNUM", + 466: "AMORDEGRC", + 467: "AMORLINC", + 468: "CONVERT", + 724: "SHEETJS", + 469: "ACCRINT", + 470: "ACCRINTM", + 471: "WORKDAY", + 472: "NETWORKDAYS", + 473: "GCD", + 474: "MULTINOMIAL", + 475: "LCM", + 476: "FVSCHEDULE", + 477: "CUBEKPIMEMBER", + 478: "CUBESET", + 479: "CUBESETCOUNT", + 480: "IFERROR", + 481: "COUNTIFS", + 482: "SUMIFS", + 483: "AVERAGEIF", + 484: "AVERAGEIFS" +}; +var FtabArgc = { + 2: 1, + 3: 1, + 10: 0, + 15: 1, + 16: 1, + 17: 1, + 18: 1, + 19: 0, + 20: 1, + 21: 1, + 22: 1, + 23: 1, + 24: 1, + 25: 1, + 26: 1, + 27: 2, + 30: 2, + 31: 3, + 32: 1, + 33: 1, + 34: 0, + 35: 0, + 38: 1, + 39: 2, + 40: 3, + 41: 3, + 42: 3, + 43: 3, + 44: 3, + 45: 3, + 47: 3, + 48: 2, + 53: 1, + 61: 3, + 63: 0, + 65: 3, + 66: 3, + 67: 1, + 68: 1, + 69: 1, + 70: 1, + 71: 1, + 72: 1, + 73: 1, + 74: 0, + 75: 1, + 76: 1, + 77: 1, + 79: 2, + 80: 2, + 83: 1, + 85: 0, + 86: 1, + 89: 0, + 90: 1, + 94: 0, + 95: 0, + 97: 2, + 98: 1, + 99: 1, + 101: 3, + 102: 3, + 105: 1, + 106: 1, + 108: 2, + 111: 1, + 112: 1, + 113: 1, + 114: 1, + 117: 2, + 118: 1, + 119: 4, + 121: 1, + 126: 1, + 127: 1, + 128: 1, + 129: 1, + 130: 1, + 131: 1, + 133: 1, + 134: 1, + 135: 1, + 136: 2, + 137: 2, + 138: 2, + 140: 1, + 141: 1, + 142: 3, + 143: 4, + 144: 4, + 161: 1, + 162: 1, + 163: 1, + 164: 1, + 165: 2, + 172: 1, + 175: 2, + 176: 2, + 177: 3, + 178: 2, + 179: 1, + 184: 1, + 186: 1, + 189: 3, + 190: 1, + 195: 3, + 196: 3, + 197: 1, + 198: 1, + 199: 3, + 201: 1, + 207: 4, + 210: 3, + 211: 1, + 212: 2, + 213: 2, + 214: 1, + 215: 1, + 225: 0, + 229: 1, + 230: 1, + 231: 1, + 232: 1, + 233: 1, + 234: 1, + 235: 3, + 244: 1, + 247: 4, + 252: 2, + 257: 1, + 261: 1, + 271: 1, + 273: 4, + 274: 2, + 275: 2, + 276: 2, + 277: 3, + 278: 3, + 279: 1, + 280: 3, + 281: 3, + 282: 3, + 283: 1, + 284: 1, + 285: 2, + 286: 4, + 287: 3, + 288: 2, + 289: 4, + 290: 3, + 291: 3, + 292: 3, + 293: 4, + 294: 1, + 295: 3, + 296: 1, + 297: 3, + 298: 1, + 299: 2, + 300: 3, + 301: 3, + 302: 4, + 303: 2, + 304: 2, + 305: 2, + 306: 2, + 307: 2, + 308: 2, + 309: 3, + 310: 2, + 311: 2, + 312: 2, + 313: 2, + 314: 2, + 315: 2, + 316: 4, + 325: 2, + 326: 2, + 327: 2, + 328: 2, + 331: 2, + 332: 2, + 337: 2, + 342: 1, + 343: 1, + 346: 2, + 347: 1, + 350: 4, + 351: 3, + 352: 1, + 353: 2, + 360: 1, + 368: 1, + 369: 1, + 370: 1, + 371: 1, + 372: 1, + 373: 1, + 374: 1, + 375: 1, + 376: 1, + 377: 1, + 378: 1, + 382: 3, + 385: 1, + 392: 1, + 393: 1, + 396: 2, + 397: 2, + 398: 2, + 399: 1, + 400: 1, + 401: 1, + 402: 1, + 403: 1, + 404: 1, + 405: 1, + 406: 1, + 407: 1, + 408: 1, + 409: 1, + 410: 1, + 414: 4, + 415: 1, + 416: 1, + 417: 2, + 420: 1, + 421: 1, + 422: 2, + 424: 1, + 425: 2, + 426: 2, + 427: 2, + 428: 2, + 430: 3, + 438: 3, + 439: 3, + 440: 3, + 443: 2, + 444: 2, + 445: 2, + 446: 2, + 447: 6, + 448: 6, + 449: 2, + 450: 2, + 464: 2, + 468: 3, + 476: 2, + 479: 1, + 480: 2, + 65535: 0 +}; +/* Part 3 TODO: actually parse formulae */ +function ods_to_csf_formula(f) { + if(f.slice(0,3) == "of:") f = f.slice(3); + /* 5.2 Basic Expressions */ + if(f.charCodeAt(0) == 61) { + f = f.slice(1); + if(f.charCodeAt(0) == 61) f = f.slice(1); + } + f = f.replace(/COM\.MICROSOFT\./g, ""); + /* Part 3 Section 5.8 References */ + f = f.replace(/\[((?:\.[A-Z]+[0-9]+)(?::\.[A-Z]+[0-9]+)?)\]/g, function($$, $1) { return $1.replace(/\./g,""); }); + /* TODO: something other than this */ + f = f.replace(/\[.(#[A-Z]*[?!])\]/g, "$1"); + return f.replace(/[;~]/g,",").replace(/\|/g,";"); +} + +function csf_to_ods_formula(f) { + var o = "of:=" + f.replace(crefregex, "$1[.$2$3$4$5]").replace(/\]:\[/g,":"); + /* TODO: something other than this */ + return o.replace(/;/g, "|").replace(/,/g,";"); +} + +function ods_to_csf_3D(r) { + var a = r.split(":"); + var s = a[0].split(".")[0]; + return [s, a[0].split(".")[1] + (a.length > 1 ? (":" + (a[1].split(".")[1] || a[1].split(".")[0])) : "")]; +} + +function csf_to_ods_3D(r) { + return r.replace(/\./,"!"); +} + +var strs = {}; // shared strings +var _ssfopts = {}; // spreadsheet formatting options + + +/*global Map */ +var browser_has_Map = typeof Map !== 'undefined'; + +function get_sst_id(sst, str, rev) { + var i = 0, len = sst.length; + if(rev) { + if(browser_has_Map ? rev.has(str) : Object.prototype.hasOwnProperty.call(rev, str)) { + var revarr = browser_has_Map ? rev.get(str) : rev[str]; + for(; i < revarr.length; ++i) { + if(sst[revarr[i]].t === str) { sst.Count ++; return revarr[i]; } + } + } + } else for(; i < len; ++i) { + if(sst[i].t === str) { sst.Count ++; return i; } + } + sst[len] = ({t:str}); sst.Count ++; sst.Unique ++; + if(rev) { + if(browser_has_Map) { + if(!rev.has(str)) rev.set(str, []); + rev.get(str).push(len); + } else { + if(!Object.prototype.hasOwnProperty.call(rev, str)) rev[str] = []; + rev[str].push(len); + } + } + return len; +} + +function col_obj_w(C, col) { + var p = ({min:C+1,max:C+1}); + /* wch (chars), wpx (pixels) */ + var wch = -1; + if(col.MDW) MDW = col.MDW; + if(col.width != null) p.customWidth = 1; + else if(col.wpx != null) wch = px2char(col.wpx); + else if(col.wch != null) wch = col.wch; + if(wch > -1) { p.width = char2width(wch); p.customWidth = 1; } + else if(col.width != null) p.width = col.width; + if(col.hidden) p.hidden = true; + if(col.level != null) { p.outlineLevel = p.level = col.level; } + return p; +} + +function default_margins(margins, mode) { + if(!margins) return; + var defs = [0.7, 0.7, 0.75, 0.75, 0.3, 0.3]; + if(mode == 'xlml') defs = [1, 1, 1, 1, 0.5, 0.5]; + if(margins.left == null) margins.left = defs[0]; + if(margins.right == null) margins.right = defs[1]; + if(margins.top == null) margins.top = defs[2]; + if(margins.bottom == null) margins.bottom = defs[3]; + if(margins.header == null) margins.header = defs[4]; + if(margins.footer == null) margins.footer = defs[5]; +} + +function get_cell_style(styles, cell, opts) { + var z = opts.revssf[cell.z != null ? cell.z : "General"]; + var i = 0x3c, len = styles.length; + if(z == null && opts.ssf) { + for(; i < 0x188; ++i) if(opts.ssf[i] == null) { + SSF_load(cell.z, i); + // $FlowIgnore + opts.ssf[i] = cell.z; + opts.revssf[cell.z] = z = i; + break; + } + } + for(i = 0; i != len; ++i) if(styles[i].numFmtId === z) return i; + styles[len] = { + numFmtId:z, + fontId:0, + fillId:0, + borderId:0, + xfId:0, + applyNumberFormat:1 + }; + return len; +} + +function safe_format(p, fmtid, fillid, opts, themes, styles) { + try { + if(opts.cellNF) p.z = table_fmt[fmtid]; + } catch(e) { if(opts.WTF) throw e; } + if(p.t === 'z' && !opts.cellStyles) return; + if(p.t === 'd' && typeof p.v === 'string') p.v = parseDate(p.v); + if((!opts || opts.cellText !== false) && p.t !== 'z') try { + if(table_fmt[fmtid] == null) SSF_load(SSFImplicit[fmtid] || "General", fmtid); + if(p.t === 'e') p.w = p.w || BErr[p.v]; + else if(fmtid === 0) { + if(p.t === 'n') { + if((p.v|0) === p.v) p.w = p.v.toString(10); + else p.w = SSF_general_num(p.v); + } + else if(p.t === 'd') { + var dd = datenum(p.v); + if((dd|0) === dd) p.w = dd.toString(10); + else p.w = SSF_general_num(dd); + } + else if(p.v === undefined) return ""; + else p.w = SSF_general(p.v,_ssfopts); + } + else if(p.t === 'd') p.w = SSF_format(fmtid,datenum(p.v),_ssfopts); + else p.w = SSF_format(fmtid,p.v,_ssfopts); + } catch(e) { if(opts.WTF) throw e; } + if(!opts.cellStyles) return; + if(fillid != null) try { + p.s = styles.Fills[fillid]; + if (p.s.fgColor && p.s.fgColor.theme && !p.s.fgColor.rgb) { + p.s.fgColor.rgb = rgb_tint(themes.themeElements.clrScheme[p.s.fgColor.theme].rgb, p.s.fgColor.tint || 0); + if(opts.WTF) p.s.fgColor.raw_rgb = themes.themeElements.clrScheme[p.s.fgColor.theme].rgb; + } + if (p.s.bgColor && p.s.bgColor.theme) { + p.s.bgColor.rgb = rgb_tint(themes.themeElements.clrScheme[p.s.bgColor.theme].rgb, p.s.bgColor.tint || 0); + if(opts.WTF) p.s.bgColor.raw_rgb = themes.themeElements.clrScheme[p.s.bgColor.theme].rgb; + } + } catch(e) { if(opts.WTF && styles.Fills) throw e; } +} + +function check_ws(ws, sname, i) { + if(ws && ws['!ref']) { + var range = safe_decode_range(ws['!ref']); + if(range.e.c < range.s.c || range.e.r < range.s.r) throw new Error("Bad range (" + i + "): " + ws['!ref']); + } +} +function parse_ws_xml_dim(ws, s) { + var d = safe_decode_range(s); + if(d.s.r<=d.e.r && d.s.c<=d.e.c && d.s.r>=0 && d.s.c>=0) ws["!ref"] = encode_range(d); +} +var mergecregex = /<(?:\w:)?mergeCell ref="[A-Z0-9:]+"\s*[\/]?>/g; +var sheetdataregex = /<(?:\w+:)?sheetData[^>]*>([\s\S]*)<\/(?:\w+:)?sheetData>/; +var hlinkregex = /<(?:\w:)?hyperlink [^>]*>/mg; +var dimregex = /"(\w*:\w*)"/; +var colregex = /<(?:\w:)?col\b[^>]*[\/]?>/g; +var afregex = /<(?:\w:)?autoFilter[^>]*([\/]|>([\s\S]*)<\/(?:\w:)?autoFilter)>/g; +var marginregex= /<(?:\w:)?pageMargins[^>]*\/>/g; +var sheetprregex = /<(?:\w:)?sheetPr\b(?:[^>a-z][^>]*)?\/>/; +var sheetprregex2= /<(?:\w:)?sheetPr[^>]*(?:[\/]|>([\s\S]*)<\/(?:\w:)?sheetPr)>/; +var svsregex = /<(?:\w:)?sheetViews[^>]*(?:[\/]|>([\s\S]*)<\/(?:\w:)?sheetViews)>/; + +/* 18.3 Worksheets */ +function parse_ws_xml(data, opts, idx, rels, wb, themes, styles) { + if(!data) return data; + if(!rels) rels = {'!id':{}}; + if(DENSE != null && opts.dense == null) opts.dense = DENSE; + + /* 18.3.1.99 worksheet CT_Worksheet */ + var s = opts.dense ? ([]) : ({}); + var refguess = ({s: {r:2000000, c:2000000}, e: {r:0, c:0} }); + + var data1 = "", data2 = ""; + var mtch = data.match(sheetdataregex); + if(mtch) { + data1 = data.slice(0, mtch.index); + data2 = data.slice(mtch.index + mtch[0].length); + } else data1 = data2 = data; + + /* 18.3.1.82 sheetPr CT_SheetPr */ + var sheetPr = data1.match(sheetprregex); + if(sheetPr) parse_ws_xml_sheetpr(sheetPr[0], s, wb, idx); + else if((sheetPr = data1.match(sheetprregex2))) parse_ws_xml_sheetpr2(sheetPr[0], sheetPr[1]||"", s, wb, idx, styles, themes); + + /* 18.3.1.35 dimension CT_SheetDimension */ + var ridx = (data1.match(/<(?:\w*:)?dimension/)||{index:-1}).index; + if(ridx > 0) { + var ref = data1.slice(ridx,ridx+50).match(dimregex); + if(ref) parse_ws_xml_dim(s, ref[1]); + } + + /* 18.3.1.88 sheetViews CT_SheetViews */ + var svs = data1.match(svsregex); + if(svs && svs[1]) parse_ws_xml_sheetviews(svs[1], wb); + + /* 18.3.1.17 cols CT_Cols */ + var columns = []; + if(opts.cellStyles) { + /* 18.3.1.13 col CT_Col */ + var cols = data1.match(colregex); + if(cols) parse_ws_xml_cols(columns, cols); + } + + /* 18.3.1.80 sheetData CT_SheetData ? */ + if(mtch) parse_ws_xml_data(mtch[1], s, opts, refguess, themes, styles); + + /* 18.3.1.2 autoFilter CT_AutoFilter */ + var afilter = data2.match(afregex); + if(afilter) s['!autofilter'] = parse_ws_xml_autofilter(afilter[0]); + + /* 18.3.1.55 mergeCells CT_MergeCells */ + var merges = []; + var _merge = data2.match(mergecregex); + if(_merge) for(ridx = 0; ridx != _merge.length; ++ridx) + merges[ridx] = safe_decode_range(_merge[ridx].slice(_merge[ridx].indexOf("\"")+1)); + + /* 18.3.1.48 hyperlinks CT_Hyperlinks */ + var hlink = data2.match(hlinkregex); + if(hlink) parse_ws_xml_hlinks(s, hlink, rels); + + /* 18.3.1.62 pageMargins CT_PageMargins */ + var margins = data2.match(marginregex); + if(margins) s['!margins'] = parse_ws_xml_margins(parsexmltag(margins[0])); + + if(!s["!ref"] && refguess.e.c >= refguess.s.c && refguess.e.r >= refguess.s.r) s["!ref"] = encode_range(refguess); + if(opts.sheetRows > 0 && s["!ref"]) { + var tmpref = safe_decode_range(s["!ref"]); + if(opts.sheetRows <= +tmpref.e.r) { + tmpref.e.r = opts.sheetRows - 1; + if(tmpref.e.r > refguess.e.r) tmpref.e.r = refguess.e.r; + if(tmpref.e.r < tmpref.s.r) tmpref.s.r = tmpref.e.r; + if(tmpref.e.c > refguess.e.c) tmpref.e.c = refguess.e.c; + if(tmpref.e.c < tmpref.s.c) tmpref.s.c = tmpref.e.c; + s["!fullref"] = s["!ref"]; + s["!ref"] = encode_range(tmpref); + } + } + if(columns.length > 0) s["!cols"] = columns; + if(merges.length > 0) s["!merges"] = merges; + return s; +} + +function write_ws_xml_merges(merges) { + if(merges.length === 0) return ""; + var o = ''; + for(var i = 0; i != merges.length; ++i) o += ''; + return o + ''; +} + +/* 18.3.1.82-3 sheetPr CT_ChartsheetPr / CT_SheetPr */ +function parse_ws_xml_sheetpr(sheetPr, s, wb, idx) { + var data = parsexmltag(sheetPr); + if(!wb.Sheets[idx]) wb.Sheets[idx] = {}; + if(data.codeName) wb.Sheets[idx].CodeName = unescapexml(utf8read(data.codeName)); +} +function parse_ws_xml_sheetpr2(sheetPr, body, s, wb, idx) { + parse_ws_xml_sheetpr(sheetPr.slice(0, sheetPr.indexOf(">")), s, wb, idx); +} +function write_ws_xml_sheetpr(ws, wb, idx, opts, o) { + var needed = false; + var props = {}, payload = null; + if(opts.bookType !== 'xlsx' && wb.vbaraw) { + var cname = wb.SheetNames[idx]; + try { if(wb.Workbook) cname = wb.Workbook.Sheets[idx].CodeName || cname; } catch(e) {} + needed = true; + props.codeName = utf8write(escapexml(cname)); + } + + if(ws && ws["!outline"]) { + var outlineprops = {summaryBelow:1, summaryRight:1}; + if(ws["!outline"].above) outlineprops.summaryBelow = 0; + if(ws["!outline"].left) outlineprops.summaryRight = 0; + payload = (payload||"") + writextag('outlinePr', null, outlineprops); + } + + if(!needed && !payload) return; + o[o.length] = (writextag('sheetPr', payload, props)); +} + +/* 18.3.1.85 sheetProtection CT_SheetProtection */ +var sheetprot_deffalse = ["objects", "scenarios", "selectLockedCells", "selectUnlockedCells"]; +var sheetprot_deftrue = [ + "formatColumns", "formatRows", "formatCells", + "insertColumns", "insertRows", "insertHyperlinks", + "deleteColumns", "deleteRows", + "sort", "autoFilter", "pivotTables" +]; +function write_ws_xml_protection(sp) { + // algorithmName, hashValue, saltValue, spinCount + var o = ({sheet:1}); + sheetprot_deffalse.forEach(function(n) { if(sp[n] != null && sp[n]) o[n] = "1"; }); + sheetprot_deftrue.forEach(function(n) { if(sp[n] != null && !sp[n]) o[n] = "0"; }); + /* TODO: algorithm */ + if(sp.password) o.password = crypto_CreatePasswordVerifier_Method1(sp.password).toString(16).toUpperCase(); + return writextag('sheetProtection', null, o); +} + +function parse_ws_xml_hlinks(s, data, rels) { + var dense = Array.isArray(s); + for(var i = 0; i != data.length; ++i) { + var val = parsexmltag(utf8read(data[i]), true); + if(!val.ref) return; + var rel = ((rels || {})['!id']||[])[val.id]; + if(rel) { + val.Target = rel.Target; + if(val.location) val.Target += "#"+unescapexml(val.location); + } else { + val.Target = "#" + unescapexml(val.location); + rel = {Target: val.Target, TargetMode: 'Internal'}; + } + val.Rel = rel; + if(val.tooltip) { val.Tooltip = val.tooltip; delete val.tooltip; } + var rng = safe_decode_range(val.ref); + for(var R=rng.s.r;R<=rng.e.r;++R) for(var C=rng.s.c;C<=rng.e.c;++C) { + var addr = encode_cell({c:C,r:R}); + if(dense) { + if(!s[R]) s[R] = []; + if(!s[R][C]) s[R][C] = {t:"z",v:undefined}; + s[R][C].l = val; + } else { + if(!s[addr]) s[addr] = {t:"z",v:undefined}; + s[addr].l = val; + } + } + } +} + +function parse_ws_xml_margins(margin) { + var o = {}; + ["left", "right", "top", "bottom", "header", "footer"].forEach(function(k) { + if(margin[k]) o[k] = parseFloat(margin[k]); + }); + return o; +} +function write_ws_xml_margins(margin) { + default_margins(margin); + return writextag('pageMargins', null, margin); +} + +function parse_ws_xml_cols(columns, cols) { + var seencol = false; + for(var coli = 0; coli != cols.length; ++coli) { + var coll = parsexmltag(cols[coli], true); + if(coll.hidden) coll.hidden = parsexmlbool(coll.hidden); + var colm=parseInt(coll.min, 10)-1, colM=parseInt(coll.max,10)-1; + if(coll.outlineLevel) coll.level = (+coll.outlineLevel || 0); + delete coll.min; delete coll.max; coll.width = +coll.width; + if(!seencol && coll.width) { seencol = true; find_mdw_colw(coll.width); } + process_col(coll); + while(colm <= colM) columns[colm++] = dup(coll); + } +} +function write_ws_xml_cols(ws, cols) { + var o = [""], col; + for(var i = 0; i != cols.length; ++i) { + if(!(col = cols[i])) continue; + o[o.length] = (writextag('col', null, col_obj_w(i, col))); + } + o[o.length] = ""; + return o.join(""); +} + +function parse_ws_xml_autofilter(data) { + var o = { ref: (data.match(/ref="([^"]*)"/)||[])[1]}; + return o; +} +function write_ws_xml_autofilter(data, ws, wb, idx) { + var ref = typeof data.ref == "string" ? data.ref : encode_range(data.ref); + if(!wb.Workbook) wb.Workbook = ({Sheets:[]}); + if(!wb.Workbook.Names) wb.Workbook.Names = []; + var names = wb.Workbook.Names; + var range = decode_range(ref); + if(range.s.r == range.e.r) { range.e.r = decode_range(ws["!ref"]).e.r; ref = encode_range(range); } + for(var i = 0; i < names.length; ++i) { + var name = names[i]; + if(name.Name != '_xlnm._FilterDatabase') continue; + if(name.Sheet != idx) continue; + name.Ref = "'" + wb.SheetNames[idx] + "'!" + ref; break; + } + if(i == names.length) names.push({ Name: '_xlnm._FilterDatabase', Sheet: idx, Ref: "'" + wb.SheetNames[idx] + "'!" + ref }); + return writextag("autoFilter", null, {ref:ref}); +} + +/* 18.3.1.88 sheetViews CT_SheetViews */ +/* 18.3.1.87 sheetView CT_SheetView */ +var sviewregex = /<(?:\w:)?sheetView(?:[^>a-z][^>]*)?\/?>/; +function parse_ws_xml_sheetviews(data, wb) { + if(!wb.Views) wb.Views = [{}]; + (data.match(sviewregex)||[]).forEach(function(r, i) { + var tag = parsexmltag(r); + // $FlowIgnore + if(!wb.Views[i]) wb.Views[i] = {}; + // $FlowIgnore + if(+tag.zoomScale) wb.Views[i].zoom = +tag.zoomScale; + // $FlowIgnore + if(parsexmlbool(tag.rightToLeft)) wb.Views[i].RTL = true; + }); +} +function write_ws_xml_sheetviews(ws, opts, idx, wb) { + var sview = ({workbookViewId:"0"}); + // $FlowIgnore + if((((wb||{}).Workbook||{}).Views||[])[0]) sview.rightToLeft = wb.Workbook.Views[0].RTL ? "1" : "0"; + return writextag("sheetViews", writextag("sheetView", null, sview), {}); +} + +function write_ws_xml_cell(cell, ref, ws, opts) { + if(cell.c) ws['!comments'].push([ref, cell.c]); + if(cell.v === undefined && typeof cell.f !== "string" || cell.t === 'z' && !cell.f) return ""; + var vv = ""; + var oldt = cell.t, oldv = cell.v; + if(cell.t !== "z") switch(cell.t) { + case 'b': vv = cell.v ? "1" : "0"; break; + case 'n': vv = ''+cell.v; break; + case 'e': vv = BErr[cell.v]; break; + case 'd': + if(opts && opts.cellDates) vv = parseDate(cell.v, -1).toISOString(); + else { + cell = dup(cell); + cell.t = 'n'; + vv = ''+(cell.v = datenum(parseDate(cell.v))); + } + if(typeof cell.z === 'undefined') cell.z = table_fmt[14]; + break; + default: vv = cell.v; break; + } + var v = writetag('v', escapexml(vv)), o = ({r:ref}); + /* TODO: cell style */ + var os = get_cell_style(opts.cellXfs, cell, opts); + if(os !== 0) o.s = os; + switch(cell.t) { + case 'n': break; + case 'd': o.t = "d"; break; + case 'b': o.t = "b"; break; + case 'e': o.t = "e"; break; + case 'z': break; + default: if(cell.v == null) { delete cell.t; break; } + if(cell.v.length > 32767) throw new Error("Text length must not exceed 32767 characters"); + if(opts && opts.bookSST) { + v = writetag('v', ''+get_sst_id(opts.Strings, cell.v, opts.revStrings)); + o.t = "s"; break; + } + o.t = "str"; break; + } + if(cell.t != oldt) { cell.t = oldt; cell.v = oldv; } + if(typeof cell.f == "string" && cell.f) { + var ff = cell.F && cell.F.slice(0, ref.length) == ref ? {t:"array", ref:cell.F} : null; + v = writextag('f', escapexml(cell.f), ff) + (cell.v != null ? v : ""); + } + if(cell.l) ws['!links'].push([ref, cell.l]); + if(cell.D) o.cm = 1; + return writextag('c', v, o); +} + +var parse_ws_xml_data = (function() { + var cellregex = /<(?:\w+:)?c[ \/>]/, rowregex = /<\/(?:\w+:)?row>/; + var rregex = /r=["']([^"']*)["']/, isregex = /<(?:\w+:)?is>([\S\s]*?)<\/(?:\w+:)?is>/; + var refregex = /ref=["']([^"']*)["']/; + var match_v = matchtag("v"), match_f = matchtag("f"); + +return function parse_ws_xml_data(sdata, s, opts, guess, themes, styles) { + var ri = 0, x = "", cells = [], cref = [], idx=0, i=0, cc=0, d="", p; + var tag, tagr = 0, tagc = 0; + var sstr, ftag; + var fmtid = 0, fillid = 0; + var do_format = Array.isArray(styles.CellXf), cf; + var arrayf = []; + var sharedf = []; + var dense = Array.isArray(s); + var rows = [], rowobj = {}, rowrite = false; + var sheetStubs = !!opts.sheetStubs; + for(var marr = sdata.split(rowregex), mt = 0, marrlen = marr.length; mt != marrlen; ++mt) { + x = marr[mt].trim(); + var xlen = x.length; + if(xlen === 0) continue; + + /* 18.3.1.73 row CT_Row */ + var rstarti = 0; + outa: for(ri = 0; ri < xlen; ++ri) switch(/*x.charCodeAt(ri)*/x[ri]) { + case ">" /*62*/: + if(/*x.charCodeAt(ri-1) != 47*/x[ri-1] != "/") { ++ri; break outa; } + if(opts && opts.cellStyles) { + // TODO: avoid duplication + tag = parsexmltag(x.slice(rstarti,ri), true); + tagr = tag.r != null ? parseInt(tag.r, 10) : tagr+1; tagc = -1; + if(opts.sheetRows && opts.sheetRows < tagr) continue; + rowobj = {}; rowrite = false; + if(tag.ht) { rowrite = true; rowobj.hpt = parseFloat(tag.ht); rowobj.hpx = pt2px(rowobj.hpt); } + if(tag.hidden == "1") { rowrite = true; rowobj.hidden = true; } + if(tag.outlineLevel != null) { rowrite = true; rowobj.level = +tag.outlineLevel; } + if(rowrite) rows[tagr-1] = rowobj; + } + break; + case "<" /*60*/: rstarti = ri; break; + } + if(rstarti >= ri) break; + tag = parsexmltag(x.slice(rstarti,ri), true); + tagr = tag.r != null ? parseInt(tag.r, 10) : tagr+1; tagc = -1; + if(opts.sheetRows && opts.sheetRows < tagr) continue; + if(guess.s.r > tagr - 1) guess.s.r = tagr - 1; + if(guess.e.r < tagr - 1) guess.e.r = tagr - 1; + + if(opts && opts.cellStyles) { + rowobj = {}; rowrite = false; + if(tag.ht) { rowrite = true; rowobj.hpt = parseFloat(tag.ht); rowobj.hpx = pt2px(rowobj.hpt); } + if(tag.hidden == "1") { rowrite = true; rowobj.hidden = true; } + if(tag.outlineLevel != null) { rowrite = true; rowobj.level = +tag.outlineLevel; } + if(rowrite) rows[tagr-1] = rowobj; + } + + /* 18.3.1.4 c CT_Cell */ + cells = x.slice(ri).split(cellregex); + for(var rslice = 0; rslice != cells.length; ++rslice) if(cells[rslice].trim().charAt(0) != "<") break; + cells = cells.slice(rslice); + for(ri = 0; ri != cells.length; ++ri) { + x = cells[ri].trim(); + if(x.length === 0) continue; + cref = x.match(rregex); idx = ri; i=0; cc=0; + x = "":"") + x; + if(cref != null && cref.length === 2) { + idx = 0; d=cref[1]; + for(i=0; i != d.length; ++i) { + if((cc=d.charCodeAt(i)-64) < 1 || cc > 26) break; + idx = 26*idx + cc; + } + --idx; + tagc = idx; + } else ++tagc; + for(i = 0; i != x.length; ++i) if(x.charCodeAt(i) === 62) break; ++i; + tag = parsexmltag(x.slice(0,i), true); + if(!tag.r) tag.r = encode_cell({r:tagr-1, c:tagc}); + d = x.slice(i); + p = ({t:""}); + + if((cref=d.match(match_v))!= null && cref[1] !== '') p.v=unescapexml(cref[1]); + if(opts.cellFormula) { + if((cref=d.match(match_f))!= null && cref[1] !== '') { + /* TODO: match against XLSXFutureFunctions */ + p.f=unescapexml(utf8read(cref[1])).replace(/\r\n/g, "\n"); + if(!opts.xlfn) p.f = _xlfn(p.f); + if(cref[0].indexOf('t="array"') > -1) { + p.F = (d.match(refregex)||[])[1]; + if(p.F.indexOf(":") > -1) arrayf.push([safe_decode_range(p.F), p.F]); + } else if(cref[0].indexOf('t="shared"') > -1) { + // TODO: parse formula + ftag = parsexmltag(cref[0]); + var ___f = unescapexml(utf8read(cref[1])); + if(!opts.xlfn) ___f = _xlfn(___f); + sharedf[parseInt(ftag.si, 10)] = [ftag, ___f, tag.r]; + } + } else if((cref=d.match(/]*\/>/))) { + ftag = parsexmltag(cref[0]); + if(sharedf[ftag.si]) p.f = shift_formula_xlsx(sharedf[ftag.si][1], sharedf[ftag.si][2]/*[0].ref*/, tag.r); + } + /* TODO: factor out contains logic */ + var _tag = decode_cell(tag.r); + for(i = 0; i < arrayf.length; ++i) + if(_tag.r >= arrayf[i][0].s.r && _tag.r <= arrayf[i][0].e.r) + if(_tag.c >= arrayf[i][0].s.c && _tag.c <= arrayf[i][0].e.c) + p.F = arrayf[i][1]; + } + + if(tag.t == null && p.v === undefined) { + if(p.f || p.F) { + p.v = 0; p.t = "n"; + } else if(!sheetStubs) continue; + else p.t = "z"; + } + else p.t = tag.t || "n"; + if(guess.s.c > tagc) guess.s.c = tagc; + if(guess.e.c < tagc) guess.e.c = tagc; + /* 18.18.11 t ST_CellType */ + switch(p.t) { + case 'n': + if(p.v == "" || p.v == null) { + if(!sheetStubs) continue; + p.t = 'z'; + } else p.v = parseFloat(p.v); + break; + case 's': + if(typeof p.v == 'undefined') { + if(!sheetStubs) continue; + p.t = 'z'; + } else { + sstr = strs[parseInt(p.v, 10)]; + p.v = sstr.t; + p.r = sstr.r; + if(opts.cellHTML) p.h = sstr.h; + } + break; + case 'str': + p.t = "s"; + p.v = (p.v!=null) ? utf8read(p.v) : ''; + if(opts.cellHTML) p.h = escapehtml(p.v); + break; + case 'inlineStr': + cref = d.match(isregex); + p.t = 's'; + if(cref != null && (sstr = parse_si(cref[1]))) { + p.v = sstr.t; + if(opts.cellHTML) p.h = sstr.h; + } else p.v = ""; + break; + case 'b': p.v = parsexmlbool(p.v); break; + case 'd': + if(opts.cellDates) p.v = parseDate(p.v, 1); + else { p.v = datenum(parseDate(p.v, 1)); p.t = 'n'; } + break; + /* error string in .w, number in .v */ + case 'e': + if(!opts || opts.cellText !== false) p.w = p.v; + p.v = RBErr[p.v]; break; + } + /* formatting */ + fmtid = fillid = 0; + cf = null; + if(do_format && tag.s !== undefined) { + cf = styles.CellXf[tag.s]; + if(cf != null) { + if(cf.numFmtId != null) fmtid = cf.numFmtId; + if(opts.cellStyles) { + if(cf.fillId != null) fillid = cf.fillId; + } + } + } + safe_format(p, fmtid, fillid, opts, themes, styles); + if(opts.cellDates && do_format && p.t == 'n' && fmt_is_date(table_fmt[fmtid])) { p.t = 'd'; p.v = numdate(p.v); } + if(tag.cm && opts.xlmeta) { + var cm = (opts.xlmeta.Cell||[])[+tag.cm-1]; + if(cm && cm.type == 'XLDAPR') p.D = true; + } + if(dense) { + var _r = decode_cell(tag.r); + if(!s[_r.r]) s[_r.r] = []; + s[_r.r][_r.c] = p; + } else s[tag.r] = p; + } + } + if(rows.length > 0) s['!rows'] = rows; +}; })(); + +function write_ws_xml_data(ws, opts, idx, wb) { + var o = [], r = [], range = safe_decode_range(ws['!ref']), cell="", ref, rr = "", cols = [], R=0, C=0, rows = ws['!rows']; + var dense = Array.isArray(ws); + var params = ({r:rr}), row, height = -1; + for(C = range.s.c; C <= range.e.c; ++C) cols[C] = encode_col(C); + for(R = range.s.r; R <= range.e.r; ++R) { + r = []; + rr = encode_row(R); + for(C = range.s.c; C <= range.e.c; ++C) { + ref = cols[C] + rr; + var _cell = dense ? (ws[R]||[])[C]: ws[ref]; + if(_cell === undefined) continue; + if((cell = write_ws_xml_cell(_cell, ref, ws, opts, idx, wb)) != null) r.push(cell); + } + if(r.length > 0 || (rows && rows[R])) { + params = ({r:rr}); + if(rows && rows[R]) { + row = rows[R]; + if(row.hidden) params.hidden = 1; + height = -1; + if(row.hpx) height = px2pt(row.hpx); + else if(row.hpt) height = row.hpt; + if(height > -1) { params.ht = height; params.customHeight = 1; } + if(row.level) { params.outlineLevel = row.level; } + } + o[o.length] = (writextag('row', r.join(""), params)); + } + } + if(rows) for(; R < rows.length; ++R) { + if(rows && rows[R]) { + params = ({r:R+1}); + row = rows[R]; + if(row.hidden) params.hidden = 1; + height = -1; + if (row.hpx) height = px2pt(row.hpx); + else if (row.hpt) height = row.hpt; + if (height > -1) { params.ht = height; params.customHeight = 1; } + if (row.level) { params.outlineLevel = row.level; } + o[o.length] = (writextag('row', "", params)); + } + } + return o.join(""); +} + +function write_ws_xml(idx, opts, wb, rels) { + var o = [XML_HEADER, writextag('worksheet', null, { + 'xmlns': XMLNS_main[0], + 'xmlns:r': XMLNS.r + })]; + var s = wb.SheetNames[idx], sidx = 0, rdata = ""; + var ws = wb.Sheets[s]; + if(ws == null) ws = {}; + var ref = ws['!ref'] || 'A1'; + var range = safe_decode_range(ref); + if(range.e.c > 0x3FFF || range.e.r > 0xFFFFF) { + if(opts.WTF) throw new Error("Range " + ref + " exceeds format limit A1:XFD1048576"); + range.e.c = Math.min(range.e.c, 0x3FFF); + range.e.r = Math.min(range.e.c, 0xFFFFF); + ref = encode_range(range); + } + if(!rels) rels = {}; + ws['!comments'] = []; + var _drawing = []; + + write_ws_xml_sheetpr(ws, wb, idx, opts, o); + + o[o.length] = (writextag('dimension', null, {'ref': ref})); + + o[o.length] = write_ws_xml_sheetviews(ws, opts, idx, wb); + + /* TODO: store in WB, process styles */ + if(opts.sheetFormat) o[o.length] = (writextag('sheetFormatPr', null, { + defaultRowHeight:opts.sheetFormat.defaultRowHeight||'16', + baseColWidth:opts.sheetFormat.baseColWidth||'10', + outlineLevelRow:opts.sheetFormat.outlineLevelRow||'7' + })); + + if(ws['!cols'] != null && ws['!cols'].length > 0) o[o.length] = (write_ws_xml_cols(ws, ws['!cols'])); + + o[sidx = o.length] = ''; + ws['!links'] = []; + if(ws['!ref'] != null) { + rdata = write_ws_xml_data(ws, opts, idx, wb, rels); + if(rdata.length > 0) o[o.length] = (rdata); + } + if(o.length>sidx+1) { o[o.length] = (''); o[sidx]=o[sidx].replace("/>",">"); } + + /* sheetCalcPr */ + + if(ws['!protect']) o[o.length] = write_ws_xml_protection(ws['!protect']); + + /* protectedRanges */ + /* scenarios */ + + if(ws['!autofilter'] != null) o[o.length] = write_ws_xml_autofilter(ws['!autofilter'], ws, wb, idx); + + /* sortState */ + /* dataConsolidate */ + /* customSheetViews */ + + if(ws['!merges'] != null && ws['!merges'].length > 0) o[o.length] = (write_ws_xml_merges(ws['!merges'])); + + /* phoneticPr */ + /* conditionalFormatting */ + /* dataValidations */ + + var relc = -1, rel, rId = -1; + if(ws['!links'].length > 0) { + o[o.length] = ""; +ws['!links'].forEach(function(l) { + if(!l[1].Target) return; + rel = ({"ref":l[0]}); + if(l[1].Target.charAt(0) != "#") { + rId = add_rels(rels, -1, escapexml(l[1].Target).replace(/#.*$/, ""), RELS.HLINK); + rel["r:id"] = "rId"+rId; + } + if((relc = l[1].Target.indexOf("#")) > -1) rel.location = escapexml(l[1].Target.slice(relc+1)); + if(l[1].Tooltip) rel.tooltip = escapexml(l[1].Tooltip); + o[o.length] = writextag("hyperlink",null,rel); + }); + o[o.length] = ""; + } + delete ws['!links']; + + /* printOptions */ + + if(ws['!margins'] != null) o[o.length] = write_ws_xml_margins(ws['!margins']); + + /* pageSetup */ + /* headerFooter */ + /* rowBreaks */ + /* colBreaks */ + /* customProperties */ + /* cellWatches */ + + if(!opts || opts.ignoreEC || (opts.ignoreEC == (void 0))) o[o.length] = writetag("ignoredErrors", writextag("ignoredError", null, {numberStoredAsText:1, sqref:ref})); + + /* smartTags */ + + if(_drawing.length > 0) { + rId = add_rels(rels, -1, "../drawings/drawing" + (idx+1) + ".xml", RELS.DRAW); + o[o.length] = writextag("drawing", null, {"r:id":"rId" + rId}); + ws['!drawing'] = _drawing; + } + + if(ws['!comments'].length > 0) { + rId = add_rels(rels, -1, "../drawings/vmlDrawing" + (idx+1) + ".vml", RELS.VML); + o[o.length] = writextag("legacyDrawing", null, {"r:id":"rId" + rId}); + ws['!legacy'] = rId; + } + + /* legacyDrawingHF */ + /* picture */ + /* oleObjects */ + /* controls */ + /* webPublishItems */ + /* tableParts */ + /* extLst */ + + if(o.length>1) { o[o.length] = (''); o[1]=o[1].replace("/>",">"); } + return o.join(""); +} + +/* [MS-XLSB] 2.4.726 BrtRowHdr */ +function parse_BrtRowHdr(data, length) { + var z = ({}); + var tgt = data.l + length; + z.r = data.read_shift(4); + data.l += 4; // TODO: ixfe + var miyRw = data.read_shift(2); + data.l += 1; // TODO: top/bot padding + var flags = data.read_shift(1); + data.l = tgt; + if(flags & 0x07) z.level = flags & 0x07; + if(flags & 0x10) z.hidden = true; + if(flags & 0x20) z.hpt = miyRw / 20; + return z; +} +function write_BrtRowHdr(R, range, ws) { + var o = new_buf(17+8*16); + var row = (ws['!rows']||[])[R]||{}; + o.write_shift(4, R); + + o.write_shift(4, 0); /* TODO: ixfe */ + + var miyRw = 0x0140; + if(row.hpx) miyRw = px2pt(row.hpx) * 20; + else if(row.hpt) miyRw = row.hpt * 20; + o.write_shift(2, miyRw); + + o.write_shift(1, 0); /* top/bot padding */ + + var flags = 0x0; + if(row.level) flags |= row.level; + if(row.hidden) flags |= 0x10; + if(row.hpx || row.hpt) flags |= 0x20; + o.write_shift(1, flags); + + o.write_shift(1, 0); /* phonetic guide */ + + /* [MS-XLSB] 2.5.8 BrtColSpan explains the mechanism */ + var ncolspan = 0, lcs = o.l; + o.l += 4; + + var caddr = {r:R, c:0}; + for(var i = 0; i < 16; ++i) { + if((range.s.c > ((i+1) << 10)) || (range.e.c < (i << 10))) continue; + var first = -1, last = -1; + for(var j = (i<<10); j < ((i+1)<<10); ++j) { + caddr.c = j; + var cell = Array.isArray(ws) ? (ws[caddr.r]||[])[caddr.c] : ws[encode_cell(caddr)]; + if(cell) { if(first < 0) first = j; last = j; } + } + if(first < 0) continue; + ++ncolspan; + o.write_shift(4, first); + o.write_shift(4, last); + } + + var l = o.l; + o.l = lcs; + o.write_shift(4, ncolspan); + o.l = l; + + return o.length > o.l ? o.slice(0, o.l) : o; +} +function write_row_header(ba, ws, range, R) { + var o = write_BrtRowHdr(R, range, ws); + if((o.length > 17) || (ws['!rows']||[])[R]) write_record(ba, 0x0000 /* BrtRowHdr */, o); +} + +/* [MS-XLSB] 2.4.820 BrtWsDim */ +var parse_BrtWsDim = parse_UncheckedRfX; +var write_BrtWsDim = write_UncheckedRfX; + +/* [MS-XLSB] 2.4.821 BrtWsFmtInfo */ +function parse_BrtWsFmtInfo() { +} +//function write_BrtWsFmtInfo(ws, o) { } + +/* [MS-XLSB] 2.4.823 BrtWsProp */ +function parse_BrtWsProp(data, length) { + var z = {}; + var f = data[data.l]; ++data.l; + z.above = !(f & 0x40); + z.left = !(f & 0x80); + /* TODO: pull flags */ + data.l += 18; + z.name = parse_XLSBCodeName(data, length - 19); + return z; +} +function write_BrtWsProp(str, outl, o) { + if(o == null) o = new_buf(84+4*str.length); + var f = 0xC0; + if(outl) { + if(outl.above) f &= ~0x40; + if(outl.left) f &= ~0x80; + } + o.write_shift(1, f); + for(var i = 1; i < 3; ++i) o.write_shift(1,0); + write_BrtColor({auto:1}, o); + o.write_shift(-4,-1); + o.write_shift(-4,-1); + write_XLSBCodeName(str, o); + return o.slice(0, o.l); +} + +/* [MS-XLSB] 2.4.306 BrtCellBlank */ +function parse_BrtCellBlank(data) { + var cell = parse_XLSBCell(data); + return [cell]; +} +function write_BrtCellBlank(cell, ncell, o) { + if(o == null) o = new_buf(8); + return write_XLSBCell(ncell, o); +} +function parse_BrtShortBlank(data) { + var cell = parse_XLSBShortCell(data); + return [cell]; +} +function write_BrtShortBlank(cell, ncell, o) { + if(o == null) o = new_buf(4); + return write_XLSBShortCell(ncell, o); +} + +/* [MS-XLSB] 2.4.307 BrtCellBool */ +function parse_BrtCellBool(data) { + var cell = parse_XLSBCell(data); + var fBool = data.read_shift(1); + return [cell, fBool, 'b']; +} +function write_BrtCellBool(cell, ncell, o) { + if(o == null) o = new_buf(9); + write_XLSBCell(ncell, o); + o.write_shift(1, cell.v ? 1 : 0); + return o; +} +function parse_BrtShortBool(data) { + var cell = parse_XLSBShortCell(data); + var fBool = data.read_shift(1); + return [cell, fBool, 'b']; +} +function write_BrtShortBool(cell, ncell, o) { + if(o == null) o = new_buf(5); + write_XLSBShortCell(ncell, o); + o.write_shift(1, cell.v ? 1 : 0); + return o; +} + +/* [MS-XLSB] 2.4.308 BrtCellError */ +function parse_BrtCellError(data) { + var cell = parse_XLSBCell(data); + var bError = data.read_shift(1); + return [cell, bError, 'e']; +} +function write_BrtCellError(cell, ncell, o) { + if(o == null) o = new_buf(9); + write_XLSBCell(ncell, o); + o.write_shift(1, cell.v); + return o; +} +function parse_BrtShortError(data) { + var cell = parse_XLSBShortCell(data); + var bError = data.read_shift(1); + return [cell, bError, 'e']; +} +function write_BrtShortError(cell, ncell, o) { + if(o == null) o = new_buf(8); + write_XLSBShortCell(ncell, o); + o.write_shift(1, cell.v); + o.write_shift(2, 0); + o.write_shift(1, 0); + return o; +} + + +/* [MS-XLSB] 2.4.311 BrtCellIsst */ +function parse_BrtCellIsst(data) { + var cell = parse_XLSBCell(data); + var isst = data.read_shift(4); + return [cell, isst, 's']; +} +function write_BrtCellIsst(cell, ncell, o) { + if(o == null) o = new_buf(12); + write_XLSBCell(ncell, o); + o.write_shift(4, ncell.v); + return o; +} +function parse_BrtShortIsst(data) { + var cell = parse_XLSBShortCell(data); + var isst = data.read_shift(4); + return [cell, isst, 's']; +} +function write_BrtShortIsst(cell, ncell, o) { + if(o == null) o = new_buf(8); + write_XLSBShortCell(ncell, o); + o.write_shift(4, ncell.v); + return o; +} + +/* [MS-XLSB] 2.4.313 BrtCellReal */ +function parse_BrtCellReal(data) { + var cell = parse_XLSBCell(data); + var value = parse_Xnum(data); + return [cell, value, 'n']; +} +function write_BrtCellReal(cell, ncell, o) { + if(o == null) o = new_buf(16); + write_XLSBCell(ncell, o); + write_Xnum(cell.v, o); + return o; +} +function parse_BrtShortReal(data) { + var cell = parse_XLSBShortCell(data); + var value = parse_Xnum(data); + return [cell, value, 'n']; +} +function write_BrtShortReal(cell, ncell, o) { + if(o == null) o = new_buf(12); + write_XLSBShortCell(ncell, o); + write_Xnum(cell.v, o); + return o; +} + +/* [MS-XLSB] 2.4.314 BrtCellRk */ +function parse_BrtCellRk(data) { + var cell = parse_XLSBCell(data); + var value = parse_RkNumber(data); + return [cell, value, 'n']; +} +function write_BrtCellRk(cell, ncell, o) { + if(o == null) o = new_buf(12); + write_XLSBCell(ncell, o); + write_RkNumber(cell.v, o); + return o; +} +function parse_BrtShortRk(data) { + var cell = parse_XLSBShortCell(data); + var value = parse_RkNumber(data); + return [cell, value, 'n']; +} +function write_BrtShortRk(cell, ncell, o) { + if(o == null) o = new_buf(8); + write_XLSBShortCell(ncell, o); + write_RkNumber(cell.v, o); + return o; +} + +/* [MS-XLSB] 2.4.323 BrtCellRString */ +function parse_BrtCellRString(data) { + var cell = parse_XLSBCell(data); + var value = parse_RichStr(data); + return [cell, value, 'is']; +} + +/* [MS-XLSB] 2.4.317 BrtCellSt */ +function parse_BrtCellSt(data) { + var cell = parse_XLSBCell(data); + var value = parse_XLWideString(data); + return [cell, value, 'str']; +} +function write_BrtCellSt(cell, ncell, o) { + if(o == null) o = new_buf(12 + 4 * cell.v.length); + write_XLSBCell(ncell, o); + write_XLWideString(cell.v, o); + return o.length > o.l ? o.slice(0, o.l) : o; +} +function parse_BrtShortSt(data) { + var cell = parse_XLSBShortCell(data); + var value = parse_XLWideString(data); + return [cell, value, 'str']; +} +function write_BrtShortSt(cell, ncell, o) { + if(o == null) o = new_buf(8 + 4 * cell.v.length); + write_XLSBShortCell(ncell, o); + write_XLWideString(cell.v, o); + return o.length > o.l ? o.slice(0, o.l) : o; +} + +/* [MS-XLSB] 2.4.653 BrtFmlaBool */ +function parse_BrtFmlaBool(data, length, opts) { + var end = data.l + length; + var cell = parse_XLSBCell(data); + cell.r = opts['!row']; + var value = data.read_shift(1); + var o = [cell, value, 'b']; + if(opts.cellFormula) { + data.l += 2; + var formula = parse_XLSBCellParsedFormula(data, end - data.l, opts); + o[3] = stringify_formula(formula, null/*range*/, cell, opts.supbooks, opts);/* TODO */ + } + else data.l = end; + return o; +} + +/* [MS-XLSB] 2.4.654 BrtFmlaError */ +function parse_BrtFmlaError(data, length, opts) { + var end = data.l + length; + var cell = parse_XLSBCell(data); + cell.r = opts['!row']; + var value = data.read_shift(1); + var o = [cell, value, 'e']; + if(opts.cellFormula) { + data.l += 2; + var formula = parse_XLSBCellParsedFormula(data, end - data.l, opts); + o[3] = stringify_formula(formula, null/*range*/, cell, opts.supbooks, opts);/* TODO */ + } + else data.l = end; + return o; +} + +/* [MS-XLSB] 2.4.655 BrtFmlaNum */ +function parse_BrtFmlaNum(data, length, opts) { + var end = data.l + length; + var cell = parse_XLSBCell(data); + cell.r = opts['!row']; + var value = parse_Xnum(data); + var o = [cell, value, 'n']; + if(opts.cellFormula) { + data.l += 2; + var formula = parse_XLSBCellParsedFormula(data, end - data.l, opts); + o[3] = stringify_formula(formula, null/*range*/, cell, opts.supbooks, opts);/* TODO */ + } + else data.l = end; + return o; +} + +/* [MS-XLSB] 2.4.656 BrtFmlaString */ +function parse_BrtFmlaString(data, length, opts) { + var end = data.l + length; + var cell = parse_XLSBCell(data); + cell.r = opts['!row']; + var value = parse_XLWideString(data); + var o = [cell, value, 'str']; + if(opts.cellFormula) { + data.l += 2; + var formula = parse_XLSBCellParsedFormula(data, end - data.l, opts); + o[3] = stringify_formula(formula, null/*range*/, cell, opts.supbooks, opts);/* TODO */ + } + else data.l = end; + return o; +} + +/* [MS-XLSB] 2.4.682 BrtMergeCell */ +var parse_BrtMergeCell = parse_UncheckedRfX; +var write_BrtMergeCell = write_UncheckedRfX; +/* [MS-XLSB] 2.4.107 BrtBeginMergeCells */ +function write_BrtBeginMergeCells(cnt, o) { + if(o == null) o = new_buf(4); + o.write_shift(4, cnt); + return o; +} + +/* [MS-XLSB] 2.4.662 BrtHLink */ +function parse_BrtHLink(data, length) { + var end = data.l + length; + var rfx = parse_UncheckedRfX(data, 16); + var relId = parse_XLNullableWideString(data); + var loc = parse_XLWideString(data); + var tooltip = parse_XLWideString(data); + var display = parse_XLWideString(data); + data.l = end; + var o = ({rfx:rfx, relId:relId, loc:loc, display:display}); + if(tooltip) o.Tooltip = tooltip; + return o; +} +function write_BrtHLink(l, rId) { + var o = new_buf(50+4*(l[1].Target.length + (l[1].Tooltip || "").length)); + write_UncheckedRfX({s:decode_cell(l[0]), e:decode_cell(l[0])}, o); + write_RelID("rId" + rId, o); + var locidx = l[1].Target.indexOf("#"); + var loc = locidx == -1 ? "" : l[1].Target.slice(locidx+1); + write_XLWideString(loc || "", o); + write_XLWideString(l[1].Tooltip || "", o); + write_XLWideString("", o); + return o.slice(0, o.l); +} + +/* [MS-XLSB] 2.4.692 BrtPane */ +function parse_BrtPane(/*data, length, opts*/) { +} + +/* [MS-XLSB] 2.4.6 BrtArrFmla */ +function parse_BrtArrFmla(data, length, opts) { + var end = data.l + length; + var rfx = parse_RfX(data, 16); + var fAlwaysCalc = data.read_shift(1); + var o = [rfx]; o[2] = fAlwaysCalc; + if(opts.cellFormula) { + var formula = parse_XLSBArrayParsedFormula(data, end - data.l, opts); + o[1] = formula; + } else data.l = end; + return o; +} + +/* [MS-XLSB] 2.4.750 BrtShrFmla */ +function parse_BrtShrFmla(data, length, opts) { + var end = data.l + length; + var rfx = parse_UncheckedRfX(data, 16); + var o = [rfx]; + if(opts.cellFormula) { + var formula = parse_XLSBSharedParsedFormula(data, end - data.l, opts); + o[1] = formula; + data.l = end; + } else data.l = end; + return o; +} + +/* [MS-XLSB] 2.4.323 BrtColInfo */ +/* TODO: once XLS ColInfo is set, combine the functions */ +function write_BrtColInfo(C, col, o) { + if(o == null) o = new_buf(18); + var p = col_obj_w(C, col); + o.write_shift(-4, C); + o.write_shift(-4, C); + o.write_shift(4, (p.width || 10) * 256); + o.write_shift(4, 0/*ixfe*/); // style + var flags = 0; + if(col.hidden) flags |= 0x01; + if(typeof p.width == 'number') flags |= 0x02; + if(col.level) flags |= (col.level << 8); + o.write_shift(2, flags); // bit flag + return o; +} + +/* [MS-XLSB] 2.4.678 BrtMargins */ +var BrtMarginKeys = ["left","right","top","bottom","header","footer"]; +function parse_BrtMargins(data) { + var margins = ({}); + BrtMarginKeys.forEach(function(k) { margins[k] = parse_Xnum(data, 8); }); + return margins; +} +function write_BrtMargins(margins, o) { + if(o == null) o = new_buf(6*8); + default_margins(margins); + BrtMarginKeys.forEach(function(k) { write_Xnum((margins)[k], o); }); + return o; +} + +/* [MS-XLSB] 2.4.299 BrtBeginWsView */ +function parse_BrtBeginWsView(data) { + var f = data.read_shift(2); + data.l += 28; + return { RTL: f & 0x20 }; +} +function write_BrtBeginWsView(ws, Workbook, o) { + if(o == null) o = new_buf(30); + var f = 0x39c; + if((((Workbook||{}).Views||[])[0]||{}).RTL) f |= 0x20; + o.write_shift(2, f); // bit flag + o.write_shift(4, 0); + o.write_shift(4, 0); // view first row + o.write_shift(4, 0); // view first col + o.write_shift(1, 0); // gridline color ICV + o.write_shift(1, 0); + o.write_shift(2, 0); + o.write_shift(2, 100); // zoom scale + o.write_shift(2, 0); + o.write_shift(2, 0); + o.write_shift(2, 0); + o.write_shift(4, 0); // workbook view id + return o; +} + +/* [MS-XLSB] 2.4.309 BrtCellIgnoreEC */ +function write_BrtCellIgnoreEC(ref) { + var o = new_buf(24); + o.write_shift(4, 4); + o.write_shift(4, 1); + write_UncheckedRfX(ref, o); + return o; +} + +/* [MS-XLSB] 2.4.748 BrtSheetProtection */ +function write_BrtSheetProtection(sp, o) { + if(o == null) o = new_buf(16*4+2); + o.write_shift(2, sp.password ? crypto_CreatePasswordVerifier_Method1(sp.password) : 0); + o.write_shift(4, 1); // this record should not be written if no protection + [ + ["objects", false], // fObjects + ["scenarios", false], // fScenarios + ["formatCells", true], // fFormatCells + ["formatColumns", true], // fFormatColumns + ["formatRows", true], // fFormatRows + ["insertColumns", true], // fInsertColumns + ["insertRows", true], // fInsertRows + ["insertHyperlinks", true], // fInsertHyperlinks + ["deleteColumns", true], // fDeleteColumns + ["deleteRows", true], // fDeleteRows + ["selectLockedCells", false], // fSelLockedCells + ["sort", true], // fSort + ["autoFilter", true], // fAutoFilter + ["pivotTables", true], // fPivotTables + ["selectUnlockedCells", false] // fSelUnlockedCells + ].forEach(function(n) { +if(n[1]) o.write_shift(4, sp[n[0]] != null && !sp[n[0]] ? 1 : 0); + else o.write_shift(4, sp[n[0]] != null && sp[n[0]] ? 0 : 1); + }); + return o; +} + +function parse_BrtDVal(/*data, length, opts*/) { +} +function parse_BrtDVal14(/*data, length, opts*/) { +} +/* [MS-XLSB] 2.1.7.61 Worksheet */ +function parse_ws_bin(data, _opts, idx, rels, wb, themes, styles) { + if(!data) return data; + var opts = _opts || {}; + if(!rels) rels = {'!id':{}}; + if(DENSE != null && opts.dense == null) opts.dense = DENSE; + var s = (opts.dense ? [] : {}); + + var ref; + var refguess = {s: {r:2000000, c:2000000}, e: {r:0, c:0} }; + + var state = []; + var pass = false, end = false; + var row, p, cf, R, C, addr, sstr, rr, cell; + var merges = []; + opts.biff = 12; + opts['!row'] = 0; + + var ai = 0, af = false; + + var arrayf = []; + var sharedf = {}; + var supbooks = opts.supbooks || wb.supbooks || ([[]]); + supbooks.sharedf = sharedf; + supbooks.arrayf = arrayf; + supbooks.SheetNames = wb.SheetNames || wb.Sheets.map(function(x) { return x.name; }); + if(!opts.supbooks) { + opts.supbooks = supbooks; + if(wb.Names) for(var i = 0; i < wb.Names.length; ++i) supbooks[0][i+1] = wb.Names[i]; + } + + var colinfo = [], rowinfo = []; + var seencol = false; + + XLSBRecordEnum[0x0010] = { n:"BrtShortReal", f:parse_BrtShortReal }; + + var cm, vm; + + recordhopper(data, function ws_parse(val, RR, RT) { + if(end) return; + switch(RT) { + case 0x0094: /* 'BrtWsDim' */ + ref = val; break; + case 0x0000: /* 'BrtRowHdr' */ + row = val; + if(opts.sheetRows && opts.sheetRows <= row.r) end=true; + rr = encode_row(R = row.r); + opts['!row'] = row.r; + if(val.hidden || val.hpt || val.level != null) { + if(val.hpt) val.hpx = pt2px(val.hpt); + rowinfo[val.r] = val; + } + break; + + case 0x0002: /* 'BrtCellRk' */ + case 0x0003: /* 'BrtCellError' */ + case 0x0004: /* 'BrtCellBool' */ + case 0x0005: /* 'BrtCellReal' */ + case 0x0006: /* 'BrtCellSt' */ + case 0x0007: /* 'BrtCellIsst' */ + case 0x0008: /* 'BrtFmlaString' */ + case 0x0009: /* 'BrtFmlaNum' */ + case 0x000A: /* 'BrtFmlaBool' */ + case 0x000B: /* 'BrtFmlaError' */ + case 0x000D: /* 'BrtShortRk' */ + case 0x000E: /* 'BrtShortError' */ + case 0x000F: /* 'BrtShortBool' */ + case 0x0010: /* 'BrtShortReal' */ + case 0x0011: /* 'BrtShortSt' */ + case 0x0012: /* 'BrtShortIsst' */ + case 0x003E: /* 'BrtCellRString' */ + p = ({t:val[2]}); + switch(val[2]) { + case 'n': p.v = val[1]; break; + case 's': sstr = strs[val[1]]; p.v = sstr.t; p.r = sstr.r; break; + case 'b': p.v = val[1] ? true : false; break; + case 'e': p.v = val[1]; if(opts.cellText !== false) p.w = BErr[p.v]; break; + case 'str': p.t = 's'; p.v = val[1]; break; + case 'is': p.t = 's'; p.v = val[1].t; break; + } + if((cf = styles.CellXf[val[0].iStyleRef])) safe_format(p,cf.numFmtId,null,opts, themes, styles); + C = val[0].c == -1 ? C + 1 : val[0].c; + if(opts.dense) { if(!s[R]) s[R] = []; s[R][C] = p; } + else s[encode_col(C) + rr] = p; + if(opts.cellFormula) { + af = false; + for(ai = 0; ai < arrayf.length; ++ai) { + var aii = arrayf[ai]; + if(row.r >= aii[0].s.r && row.r <= aii[0].e.r) + if(C >= aii[0].s.c && C <= aii[0].e.c) { + p.F = encode_range(aii[0]); af = true; + } + } + if(!af && val.length > 3) p.f = val[3]; + } + + if(refguess.s.r > row.r) refguess.s.r = row.r; + if(refguess.s.c > C) refguess.s.c = C; + if(refguess.e.r < row.r) refguess.e.r = row.r; + if(refguess.e.c < C) refguess.e.c = C; + if(opts.cellDates && cf && p.t == 'n' && fmt_is_date(table_fmt[cf.numFmtId])) { + var _d = SSF_parse_date_code(p.v); if(_d) { p.t = 'd'; p.v = new Date(_d.y, _d.m-1,_d.d,_d.H,_d.M,_d.S,_d.u); } + } + if(cm) { + if(cm.type == 'XLDAPR') p.D = true; + cm = void 0; + } + if(vm) vm = void 0; + break; + + case 0x0001: /* 'BrtCellBlank' */ + case 0x000C: /* 'BrtShortBlank' */ + if(!opts.sheetStubs || pass) break; + p = ({t:'z',v:void 0}); + C = val[0].c == -1 ? C + 1 : val[0].c; + if(opts.dense) { if(!s[R]) s[R] = []; s[R][C] = p; } + else s[encode_col(C) + rr] = p; + if(refguess.s.r > row.r) refguess.s.r = row.r; + if(refguess.s.c > C) refguess.s.c = C; + if(refguess.e.r < row.r) refguess.e.r = row.r; + if(refguess.e.c < C) refguess.e.c = C; + if(cm) { + if(cm.type == 'XLDAPR') p.D = true; + cm = void 0; + } + if(vm) vm = void 0; + break; + + case 0x00B0: /* 'BrtMergeCell' */ + merges.push(val); break; + + case 0x0031: { /* 'BrtCellMeta' */ + cm = ((opts.xlmeta||{}).Cell||[])[val-1]; + } break; + + case 0x01EE: /* 'BrtHLink' */ + var rel = rels['!id'][val.relId]; + if(rel) { + val.Target = rel.Target; + if(val.loc) val.Target += "#"+val.loc; + val.Rel = rel; + } else if(val.relId == '') { + val.Target = "#" + val.loc; + } + for(R=val.rfx.s.r;R<=val.rfx.e.r;++R) for(C=val.rfx.s.c;C<=val.rfx.e.c;++C) { + if(opts.dense) { + if(!s[R]) s[R] = []; + if(!s[R][C]) s[R][C] = {t:'z',v:undefined}; + s[R][C].l = val; + } else { + addr = encode_cell({c:C,r:R}); + if(!s[addr]) s[addr] = {t:'z',v:undefined}; + s[addr].l = val; + } + } + break; + + case 0x01AA: /* 'BrtArrFmla' */ + if(!opts.cellFormula) break; + arrayf.push(val); + cell = ((opts.dense ? s[R][C] : s[encode_col(C) + rr])); + cell.f = stringify_formula(val[1], refguess, {r:row.r, c:C}, supbooks, opts); + cell.F = encode_range(val[0]); + break; + case 0x01AB: /* 'BrtShrFmla' */ + if(!opts.cellFormula) break; + sharedf[encode_cell(val[0].s)] = val[1]; + cell = (opts.dense ? s[R][C] : s[encode_col(C) + rr]); + cell.f = stringify_formula(val[1], refguess, {r:row.r, c:C}, supbooks, opts); + break; + + /* identical to 'ColInfo' in XLS */ + case 0x003C: /* 'BrtColInfo' */ + if(!opts.cellStyles) break; + while(val.e >= val.s) { + colinfo[val.e--] = { width: val.w/256, hidden: !!(val.flags & 0x01), level: val.level }; + if(!seencol) { seencol = true; find_mdw_colw(val.w/256); } + process_col(colinfo[val.e+1]); + } + break; + + case 0x00A1: /* 'BrtBeginAFilter' */ + s['!autofilter'] = { ref:encode_range(val) }; + break; + + case 0x01DC: /* 'BrtMargins' */ + s['!margins'] = val; + break; + + case 0x0093: /* 'BrtWsProp' */ + if(!wb.Sheets[idx]) wb.Sheets[idx] = {}; + if(val.name) wb.Sheets[idx].CodeName = val.name; + if(val.above || val.left) s['!outline'] = { above: val.above, left: val.left }; + break; + + case 0x0089: /* 'BrtBeginWsView' */ + if(!wb.Views) wb.Views = [{}]; + if(!wb.Views[0]) wb.Views[0] = {}; + if(val.RTL) wb.Views[0].RTL = true; + break; + + case 0x01E5: /* 'BrtWsFmtInfo' */ + break; + + case 0x0040: /* 'BrtDVal' */ + case 0x041D: /* 'BrtDVal14' */ + break; + + case 0x0097: /* 'BrtPane' */ + break; + case 0x0098: /* 'BrtSel' */ + case 0x00AF: /* 'BrtAFilterDateGroupItem' */ + case 0x0284: /* 'BrtActiveX' */ + case 0x0271: /* 'BrtBigName' */ + case 0x0232: /* 'BrtBkHim' */ + case 0x018C: /* 'BrtBrk' */ + case 0x0458: /* 'BrtCFIcon' */ + case 0x047A: /* 'BrtCFRuleExt' */ + case 0x01D7: /* 'BrtCFVO' */ + case 0x041A: /* 'BrtCFVO14' */ + case 0x0289: /* 'BrtCellIgnoreEC' */ + case 0x0451: /* 'BrtCellIgnoreEC14' */ + case 0x024D: /* 'BrtCellSmartTagProperty' */ + case 0x025F: /* 'BrtCellWatch' */ + case 0x0234: /* 'BrtColor' */ + case 0x041F: /* 'BrtColor14' */ + case 0x00A8: /* 'BrtColorFilter' */ + case 0x00AE: /* 'BrtCustomFilter' */ + case 0x049C: /* 'BrtCustomFilter14' */ + case 0x01F3: /* 'BrtDRef' */ + case 0x01FB: /* 'BrtDXF' */ + case 0x0226: /* 'BrtDrawing' */ + case 0x00AB: /* 'BrtDynamicFilter' */ + case 0x00A7: /* 'BrtFilter' */ + case 0x0499: /* 'BrtFilter14' */ + case 0x00A9: /* 'BrtIconFilter' */ + case 0x049D: /* 'BrtIconFilter14' */ + case 0x0227: /* 'BrtLegacyDrawing' */ + case 0x0228: /* 'BrtLegacyDrawingHF' */ + case 0x0295: /* 'BrtListPart' */ + case 0x027F: /* 'BrtOleObject' */ + case 0x01DE: /* 'BrtPageSetup' */ + case 0x0219: /* 'BrtPhoneticInfo' */ + case 0x01DD: /* 'BrtPrintOptions' */ + case 0x0218: /* 'BrtRangeProtection' */ + case 0x044F: /* 'BrtRangeProtection14' */ + case 0x02A8: /* 'BrtRangeProtectionIso' */ + case 0x0450: /* 'BrtRangeProtectionIso14' */ + case 0x0400: /* 'BrtRwDescent' */ + case 0x0297: /* 'BrtSheetCalcProp' */ + case 0x0217: /* 'BrtSheetProtection' */ + case 0x02A6: /* 'BrtSheetProtectionIso' */ + case 0x01F8: /* 'BrtSlc' */ + case 0x0413: /* 'BrtSparkline' */ + case 0x01AC: /* 'BrtTable' */ + case 0x00AA: /* 'BrtTop10Filter' */ + case 0x0C00: /* 'BrtUid' */ + case 0x0032: /* 'BrtValueMeta' */ + case 0x0816: /* 'BrtWebExtension' */ + case 0x0415: /* 'BrtWsFmtInfoEx14' */ + break; + + case 0x0023: /* 'BrtFRTBegin' */ + pass = true; break; + case 0x0024: /* 'BrtFRTEnd' */ + pass = false; break; + case 0x0025: /* 'BrtACBegin' */ + state.push(RT); pass = true; break; + case 0x0026: /* 'BrtACEnd' */ + state.pop(); pass = false; break; + + default: + if(RR.T){/* empty */} + else if(!pass || opts.WTF) throw new Error("Unexpected record 0x" + RT.toString(16)); + } + }, opts); + + delete opts.supbooks; + delete opts['!row']; + + if(!s["!ref"] && (refguess.s.r < 2000000 || ref && (ref.e.r > 0 || ref.e.c > 0 || ref.s.r > 0 || ref.s.c > 0))) s["!ref"] = encode_range(ref || refguess); + if(opts.sheetRows && s["!ref"]) { + var tmpref = safe_decode_range(s["!ref"]); + if(opts.sheetRows <= +tmpref.e.r) { + tmpref.e.r = opts.sheetRows - 1; + if(tmpref.e.r > refguess.e.r) tmpref.e.r = refguess.e.r; + if(tmpref.e.r < tmpref.s.r) tmpref.s.r = tmpref.e.r; + if(tmpref.e.c > refguess.e.c) tmpref.e.c = refguess.e.c; + if(tmpref.e.c < tmpref.s.c) tmpref.s.c = tmpref.e.c; + s["!fullref"] = s["!ref"]; + s["!ref"] = encode_range(tmpref); + } + } + if(merges.length > 0) s["!merges"] = merges; + if(colinfo.length > 0) s["!cols"] = colinfo; + if(rowinfo.length > 0) s["!rows"] = rowinfo; + return s; +} + +/* TODO: something useful -- this is a stub */ +function write_ws_bin_cell(ba, cell, R, C, opts, ws, last_seen) { + if(cell.v === undefined) return false; + var vv = ""; + switch(cell.t) { + case 'b': vv = cell.v ? "1" : "0"; break; + case 'd': // no BrtCellDate :( + cell = dup(cell); + cell.z = cell.z || table_fmt[14]; + cell.v = datenum(parseDate(cell.v)); cell.t = 'n'; + break; + /* falls through */ + case 'n': case 'e': vv = ''+cell.v; break; + default: vv = cell.v; break; + } + var o = ({r:R, c:C}); + /* TODO: cell style */ + o.s = get_cell_style(opts.cellXfs, cell, opts); + if(cell.l) ws['!links'].push([encode_cell(o), cell.l]); + if(cell.c) ws['!comments'].push([encode_cell(o), cell.c]); + switch(cell.t) { + case 's': case 'str': + if(opts.bookSST) { + vv = get_sst_id(opts.Strings, (cell.v), opts.revStrings); + o.t = "s"; o.v = vv; + if(last_seen) write_record(ba, 0x0012 /* BrtShortIsst */, write_BrtShortIsst(cell, o)); + else write_record(ba, 0x0007 /* BrtCellIsst */, write_BrtCellIsst(cell, o)); + } else { + o.t = "str"; + if(last_seen) write_record(ba, 0x0011 /* BrtShortSt */, write_BrtShortSt(cell, o)); + else write_record(ba, 0x0006 /* BrtCellSt */, write_BrtCellSt(cell, o)); + } + return true; + case 'n': + /* TODO: determine threshold for Real vs RK */ + if(cell.v == (cell.v | 0) && cell.v > -1000 && cell.v < 1000) { + if(last_seen) write_record(ba, 0x000D /* BrtShortRk */, write_BrtShortRk(cell, o)); + else write_record(ba, 0x0002 /* BrtCellRk */, write_BrtCellRk(cell, o)); + } else { + if(last_seen) write_record(ba, 0x0010 /* BrtShortReal */, write_BrtShortReal(cell, o)); + else write_record(ba, 0x0005 /* BrtCellReal */, write_BrtCellReal(cell, o)); + } return true; + case 'b': + o.t = "b"; + if(last_seen) write_record(ba, 0x000F /* BrtShortBool */, write_BrtShortBool(cell, o)); + else write_record(ba, 0x0004 /* BrtCellBool */, write_BrtCellBool(cell, o)); + return true; + case 'e': + o.t = "e"; + if(last_seen) write_record(ba, 0x000E /* BrtShortError */, write_BrtShortError(cell, o)); + else write_record(ba, 0x0003 /* BrtCellError */, write_BrtCellError(cell, o)); + return true; + } + if(last_seen) write_record(ba, 0x000C /* BrtShortBlank */, write_BrtShortBlank(cell, o)); + else write_record(ba, 0x0001 /* BrtCellBlank */, write_BrtCellBlank(cell, o)); + return true; +} + +function write_CELLTABLE(ba, ws, idx, opts) { + var range = safe_decode_range(ws['!ref'] || "A1"), ref, rr = "", cols = []; + write_record(ba, 0x0091 /* BrtBeginSheetData */); + var dense = Array.isArray(ws); + var cap = range.e.r; + if(ws['!rows']) cap = Math.max(range.e.r, ws['!rows'].length - 1); + for(var R = range.s.r; R <= cap; ++R) { + rr = encode_row(R); + /* [ACCELLTABLE] */ + /* BrtRowHdr */ + write_row_header(ba, ws, range, R); + var last_seen = false; + if(R <= range.e.r) for(var C = range.s.c; C <= range.e.c; ++C) { + /* *16384CELL */ + if(R === range.s.r) cols[C] = encode_col(C); + ref = cols[C] + rr; + var cell = dense ? (ws[R]||[])[C] : ws[ref]; + if(!cell) { last_seen = false; continue; } + /* write cell */ + last_seen = write_ws_bin_cell(ba, cell, R, C, opts, ws, last_seen); + } + } + write_record(ba, 0x0092 /* BrtEndSheetData */); +} + +function write_MERGECELLS(ba, ws) { + if(!ws || !ws['!merges']) return; + write_record(ba, 0x00B1 /* BrtBeginMergeCells */, write_BrtBeginMergeCells(ws['!merges'].length)); + ws['!merges'].forEach(function(m) { write_record(ba, 0x00B0 /* BrtMergeCell */, write_BrtMergeCell(m)); }); + write_record(ba, 0x00B2 /* BrtEndMergeCells */); +} + +function write_COLINFOS(ba, ws) { + if(!ws || !ws['!cols']) return; + write_record(ba, 0x0186 /* BrtBeginColInfos */); + ws['!cols'].forEach(function(m, i) { if(m) write_record(ba, 0x003C /* 'BrtColInfo' */, write_BrtColInfo(i, m)); }); + write_record(ba, 0x0187 /* BrtEndColInfos */); +} + +function write_IGNOREECS(ba, ws) { + if(!ws || !ws['!ref']) return; + write_record(ba, 0x0288 /* BrtBeginCellIgnoreECs */); + write_record(ba, 0x0289 /* BrtCellIgnoreEC */, write_BrtCellIgnoreEC(safe_decode_range(ws['!ref']))); + write_record(ba, 0x028A /* BrtEndCellIgnoreECs */); +} + +function write_HLINKS(ba, ws, rels) { + /* *BrtHLink */ + ws['!links'].forEach(function(l) { + if(!l[1].Target) return; + var rId = add_rels(rels, -1, l[1].Target.replace(/#.*$/, ""), RELS.HLINK); + write_record(ba, 0x01EE /* BrtHLink */, write_BrtHLink(l, rId)); + }); + delete ws['!links']; +} +function write_LEGACYDRAWING(ba, ws, idx, rels) { + /* [BrtLegacyDrawing] */ + if(ws['!comments'].length > 0) { + var rId = add_rels(rels, -1, "../drawings/vmlDrawing" + (idx+1) + ".vml", RELS.VML); + write_record(ba, 0x0227 /* BrtLegacyDrawing */, write_RelID("rId" + rId)); + ws['!legacy'] = rId; + } +} + +function write_AUTOFILTER(ba, ws, wb, idx) { + if(!ws['!autofilter']) return; + var data = ws['!autofilter']; + var ref = typeof data.ref === "string" ? data.ref : encode_range(data.ref); + + /* Update FilterDatabase defined name for the worksheet */ + if(!wb.Workbook) wb.Workbook = ({Sheets:[]}); + if(!wb.Workbook.Names) wb.Workbook.Names = []; + var names = wb.Workbook.Names; + var range = decode_range(ref); + if(range.s.r == range.e.r) { range.e.r = decode_range(ws["!ref"]).e.r; ref = encode_range(range); } + for(var i = 0; i < names.length; ++i) { + var name = names[i]; + if(name.Name != '_xlnm._FilterDatabase') continue; + if(name.Sheet != idx) continue; + name.Ref = "'" + wb.SheetNames[idx] + "'!" + ref; break; + } + if(i == names.length) names.push({ Name: '_xlnm._FilterDatabase', Sheet: idx, Ref: "'" + wb.SheetNames[idx] + "'!" + ref }); + + write_record(ba, 0x00A1 /* BrtBeginAFilter */, write_UncheckedRfX(safe_decode_range(ref))); + /* *FILTERCOLUMN */ + /* [SORTSTATE] */ + /* BrtEndAFilter */ + write_record(ba, 0x00A2 /* BrtEndAFilter */); +} + +function write_WSVIEWS2(ba, ws, Workbook) { + write_record(ba, 0x0085 /* BrtBeginWsViews */); + { /* 1*WSVIEW2 */ + /* [ACUID] */ + write_record(ba, 0x0089 /* BrtBeginWsView */, write_BrtBeginWsView(ws, Workbook)); + /* [BrtPane] */ + /* *4BrtSel */ + /* *4SXSELECT */ + /* *FRT */ + write_record(ba, 0x008A /* BrtEndWsView */); + } + /* *FRT */ + write_record(ba, 0x0086 /* BrtEndWsViews */); +} + +function write_WSFMTINFO() { + /* [ACWSFMTINFO] */ + // write_record(ba, 0x01E5 /* BrtWsFmtInfo */, write_BrtWsFmtInfo(ws)); +} + +function write_SHEETPROTECT(ba, ws) { + if(!ws['!protect']) return; + /* [BrtSheetProtectionIso] */ + write_record(ba, 0x0217 /* BrtSheetProtection */, write_BrtSheetProtection(ws['!protect'])); +} + +function write_ws_bin(idx, opts, wb, rels) { + var ba = buf_array(); + var s = wb.SheetNames[idx], ws = wb.Sheets[s] || {}; + var c = s; try { if(wb && wb.Workbook) c = wb.Workbook.Sheets[idx].CodeName || c; } catch(e) {} + var r = safe_decode_range(ws['!ref'] || "A1"); + if(r.e.c > 0x3FFF || r.e.r > 0xFFFFF) { + if(opts.WTF) throw new Error("Range " + (ws['!ref'] || "A1") + " exceeds format limit A1:XFD1048576"); + r.e.c = Math.min(r.e.c, 0x3FFF); + r.e.r = Math.min(r.e.c, 0xFFFFF); + } + ws['!links'] = []; + /* passed back to write_zip and removed there */ + ws['!comments'] = []; + write_record(ba, 0x0081 /* BrtBeginSheet */); + if(wb.vbaraw || ws['!outline']) write_record(ba, 0x0093 /* BrtWsProp */, write_BrtWsProp(c, ws['!outline'])); + write_record(ba, 0x0094 /* BrtWsDim */, write_BrtWsDim(r)); + write_WSVIEWS2(ba, ws, wb.Workbook); + write_WSFMTINFO(ba, ws); + write_COLINFOS(ba, ws, idx, opts, wb); + write_CELLTABLE(ba, ws, idx, opts, wb); + /* [BrtSheetCalcProp] */ + write_SHEETPROTECT(ba, ws); + /* *([BrtRangeProtectionIso] BrtRangeProtection) */ + /* [SCENMAN] */ + write_AUTOFILTER(ba, ws, wb, idx); + /* [SORTSTATE] */ + /* [DCON] */ + /* [USERSHVIEWS] */ + write_MERGECELLS(ba, ws); + /* [BrtPhoneticInfo] */ + /* *CONDITIONALFORMATTING */ + /* [DVALS] */ + write_HLINKS(ba, ws, rels); + /* [BrtPrintOptions] */ + if(ws['!margins']) write_record(ba, 0x01DC /* BrtMargins */, write_BrtMargins(ws['!margins'])); + /* [BrtPageSetup] */ + /* [HEADERFOOTER] */ + /* [RWBRK] */ + /* [COLBRK] */ + /* *BrtBigName */ + /* [CELLWATCHES] */ + if(!opts || opts.ignoreEC || (opts.ignoreEC == (void 0))) write_IGNOREECS(ba, ws); + /* [SMARTTAGS] */ + /* [BrtDrawing] */ + write_LEGACYDRAWING(ba, ws, idx, rels); + /* [BrtLegacyDrawingHF] */ + /* [BrtBkHim] */ + /* [OLEOBJECTS] */ + /* [ACTIVEXCONTROLS] */ + /* [WEBPUBITEMS] */ + /* [LISTPARTS] */ + /* FRTWORKSHEET */ + write_record(ba, 0x0082 /* BrtEndSheet */); + return ba.end(); +} +function parse_Cache(data) { + var col = []; + var num = data.match(/^/); + var f; + + /* 21.2.2.150 pt CT_NumVal */ + (data.match(/(.*?)<\/c:pt>/mg)||[]).forEach(function(pt) { + var q = pt.match(/(.*)<\/c:v><\/c:pt>/); + if(!q) return; + col[+q[1]] = num ? +q[2] : q[2]; + }); + + /* 21.2.2.71 formatCode CT_Xstring */ + var nf = unescapexml((data.match(/([\s\S]*?)<\/c:formatCode>/) || ["","General"])[1]); + + (data.match(/(.*?)<\/c:f>/mg)||[]).forEach(function(F) { f = F.replace(/<.*?>/g,""); }); + + return [col, nf, f]; +} + +/* 21.2 DrawingML - Charts */ +function parse_chart(data, name, opts, rels, wb, csheet) { + var cs = ((csheet || {"!type":"chart"})); + if(!data) return csheet; + /* 21.2.2.27 chart CT_Chart */ + + var C = 0, R = 0, col = "A"; + var refguess = {s: {r:2000000, c:2000000}, e: {r:0, c:0} }; + + /* 21.2.2.120 numCache CT_NumData */ + (data.match(/[\s\S]*?<\/c:numCache>/gm)||[]).forEach(function(nc) { + var cache = parse_Cache(nc); + refguess.s.r = refguess.s.c = 0; + refguess.e.c = C; + col = encode_col(C); + cache[0].forEach(function(n,i) { + cs[col + encode_row(i)] = {t:'n', v:n, z:cache[1] }; + R = i; + }); + if(refguess.e.r < R) refguess.e.r = R; + ++C; + }); + if(C > 0) cs["!ref"] = encode_range(refguess); + return cs; +} +/* 18.3 Worksheets also covers Chartsheets */ +function parse_cs_xml(data, opts, idx, rels, wb) { + if(!data) return data; + /* 18.3.1.12 chartsheet CT_ChartSheet */ + if(!rels) rels = {'!id':{}}; + var s = ({'!type':"chart", '!drawel':null, '!rel':""}); + var m; + + /* 18.3.1.83 sheetPr CT_ChartsheetPr */ + var sheetPr = data.match(sheetprregex); + if(sheetPr) parse_ws_xml_sheetpr(sheetPr[0], s, wb, idx); + + /* 18.3.1.36 drawing CT_Drawing */ + if((m = data.match(/drawing r:id="(.*?)"/))) s['!rel'] = m[1]; + + if(rels['!id'][s['!rel']]) s['!drawel'] = rels['!id'][s['!rel']]; + return s; +} +function write_cs_xml(idx, opts, wb, rels) { + var o = [XML_HEADER, writextag('chartsheet', null, { + 'xmlns': XMLNS_main[0], + 'xmlns:r': XMLNS.r + })]; + o[o.length] = writextag("drawing", null, {"r:id": "rId1"}); + add_rels(rels, -1, "../drawings/drawing" + (idx+1) + ".xml", RELS.DRAW); + if(o.length>2) { o[o.length] = (''); o[1]=o[1].replace("/>",">"); } + return o.join(""); +} + +/* [MS-XLSB] 2.4.331 BrtCsProp */ +function parse_BrtCsProp(data, length) { + data.l += 10; + var name = parse_XLWideString(data, length - 10); + return { name: name }; +} + +/* [MS-XLSB] 2.1.7.7 Chart Sheet */ +function parse_cs_bin(data, opts, idx, rels, wb) { + if(!data) return data; + if(!rels) rels = {'!id':{}}; + var s = {'!type':"chart", '!drawel':null, '!rel':""}; + var state = []; + var pass = false; + recordhopper(data, function cs_parse(val, R, RT) { + switch(RT) { + + case 0x0226: /* 'BrtDrawing' */ + s['!rel'] = val; break; + + case 0x028B: /* 'BrtCsProp' */ + if(!wb.Sheets[idx]) wb.Sheets[idx] = {}; + if(val.name) wb.Sheets[idx].CodeName = val.name; + break; + + case 0x0232: /* 'BrtBkHim' */ + case 0x028C: /* 'BrtCsPageSetup' */ + case 0x029D: /* 'BrtCsProtection' */ + case 0x02A7: /* 'BrtCsProtectionIso' */ + case 0x0227: /* 'BrtLegacyDrawing' */ + case 0x0228: /* 'BrtLegacyDrawingHF' */ + case 0x01DC: /* 'BrtMargins' */ + case 0x0C00: /* 'BrtUid' */ + break; + + case 0x0023: /* 'BrtFRTBegin' */ + pass = true; break; + case 0x0024: /* 'BrtFRTEnd' */ + pass = false; break; + case 0x0025: /* 'BrtACBegin' */ + state.push(RT); break; + case 0x0026: /* 'BrtACEnd' */ + state.pop(); break; + + default: + if(R.T > 0) state.push(RT); + else if(R.T < 0) state.pop(); + else if(!pass || opts.WTF) throw new Error("Unexpected record 0x" + RT.toString(16)); + } + }, opts); + + if(rels['!id'][s['!rel']]) s['!drawel'] = rels['!id'][s['!rel']]; + return s; +} +function write_cs_bin() { + var ba = buf_array(); + write_record(ba, 0x0081 /* BrtBeginSheet */); + /* [BrtCsProp] */ + /* CSVIEWS */ + /* [[BrtCsProtectionIso] BrtCsProtection] */ + /* [USERCSVIEWS] */ + /* [BrtMargins] */ + /* [BrtCsPageSetup] */ + /* [HEADERFOOTER] */ + /* BrtDrawing */ + /* [BrtLegacyDrawing] */ + /* [BrtLegacyDrawingHF] */ + /* [BrtBkHim] */ + /* [WEBPUBITEMS] */ + /* FRTCHARTSHEET */ + write_record(ba, 0x0082 /* BrtEndSheet */); + return ba.end(); +} +/* 18.2.28 (CT_WorkbookProtection) Defaults */ +var WBPropsDef = [ + ['allowRefreshQuery', false, "bool"], + ['autoCompressPictures', true, "bool"], + ['backupFile', false, "bool"], + ['checkCompatibility', false, "bool"], + ['CodeName', ''], + ['date1904', false, "bool"], + ['defaultThemeVersion', 0, "int"], + ['filterPrivacy', false, "bool"], + ['hidePivotFieldList', false, "bool"], + ['promptedSolutions', false, "bool"], + ['publishItems', false, "bool"], + ['refreshAllConnections', false, "bool"], + ['saveExternalLinkValues', true, "bool"], + ['showBorderUnselectedTables', true, "bool"], + ['showInkAnnotation', true, "bool"], + ['showObjects', 'all'], + ['showPivotChartFilter', false, "bool"], + ['updateLinks', 'userSet'] +]; + +/* 18.2.30 (CT_BookView) Defaults */ +var WBViewDef = [ + ['activeTab', 0, "int"], + ['autoFilterDateGrouping', true, "bool"], + ['firstSheet', 0, "int"], + ['minimized', false, "bool"], + ['showHorizontalScroll', true, "bool"], + ['showSheetTabs', true, "bool"], + ['showVerticalScroll', true, "bool"], + ['tabRatio', 600, "int"], + ['visibility', 'visible'] + //window{Height,Width}, {x,y}Window +]; + +/* 18.2.19 (CT_Sheet) Defaults */ +var SheetDef = [ + //['state', 'visible'] +]; + +/* 18.2.2 (CT_CalcPr) Defaults */ +var CalcPrDef = [ + ['calcCompleted', 'true'], + ['calcMode', 'auto'], + ['calcOnSave', 'true'], + ['concurrentCalc', 'true'], + ['fullCalcOnLoad', 'false'], + ['fullPrecision', 'true'], + ['iterate', 'false'], + ['iterateCount', '100'], + ['iterateDelta', '0.001'], + ['refMode', 'A1'] +]; + +/* 18.2.3 (CT_CustomWorkbookView) Defaults */ +/*var CustomWBViewDef = [ + ['autoUpdate', 'false'], + ['changesSavedWin', 'false'], + ['includeHiddenRowCol', 'true'], + ['includePrintSettings', 'true'], + ['maximized', 'false'], + ['minimized', 'false'], + ['onlySync', 'false'], + ['personalView', 'false'], + ['showComments', 'commIndicator'], + ['showFormulaBar', 'true'], + ['showHorizontalScroll', 'true'], + ['showObjects', 'all'], + ['showSheetTabs', 'true'], + ['showStatusbar', 'true'], + ['showVerticalScroll', 'true'], + ['tabRatio', '600'], + ['xWindow', '0'], + ['yWindow', '0'] +];*/ + +function push_defaults_array(target, defaults) { + for(var j = 0; j != target.length; ++j) { var w = target[j]; + for(var i=0; i != defaults.length; ++i) { var z = defaults[i]; + if(w[z[0]] == null) w[z[0]] = z[1]; + else switch(z[2]) { + case "bool": if(typeof w[z[0]] == "string") w[z[0]] = parsexmlbool(w[z[0]]); break; + case "int": if(typeof w[z[0]] == "string") w[z[0]] = parseInt(w[z[0]], 10); break; + } + } + } +} +function push_defaults(target, defaults) { + for(var i = 0; i != defaults.length; ++i) { var z = defaults[i]; + if(target[z[0]] == null) target[z[0]] = z[1]; + else switch(z[2]) { + case "bool": if(typeof target[z[0]] == "string") target[z[0]] = parsexmlbool(target[z[0]]); break; + case "int": if(typeof target[z[0]] == "string") target[z[0]] = parseInt(target[z[0]], 10); break; + } + } +} + +function parse_wb_defaults(wb) { + push_defaults(wb.WBProps, WBPropsDef); + push_defaults(wb.CalcPr, CalcPrDef); + + push_defaults_array(wb.WBView, WBViewDef); + push_defaults_array(wb.Sheets, SheetDef); + + _ssfopts.date1904 = parsexmlbool(wb.WBProps.date1904); +} + +function safe1904(wb) { + /* TODO: store date1904 somewhere else */ + if(!wb.Workbook) return "false"; + if(!wb.Workbook.WBProps) return "false"; + return parsexmlbool(wb.Workbook.WBProps.date1904) ? "true" : "false"; +} + +var badchars = "][*?\/\\".split(""); +function check_ws_name(n, safe) { + if(n.length > 31) { if(safe) return false; throw new Error("Sheet names cannot exceed 31 chars"); } + var _good = true; + badchars.forEach(function(c) { + if(n.indexOf(c) == -1) return; + if(!safe) throw new Error("Sheet name cannot contain : \\ / ? * [ ]"); + _good = false; + }); + return _good; +} +function check_wb_names(N, S, codes) { + N.forEach(function(n,i) { + check_ws_name(n); + for(var j = 0; j < i; ++j) if(n == N[j]) throw new Error("Duplicate Sheet Name: " + n); + if(codes) { + var cn = (S && S[i] && S[i].CodeName) || n; + if(cn.charCodeAt(0) == 95 && cn.length > 22) throw new Error("Bad Code Name: Worksheet" + cn); + } + }); +} +function check_wb(wb) { + if(!wb || !wb.SheetNames || !wb.Sheets) throw new Error("Invalid Workbook"); + if(!wb.SheetNames.length) throw new Error("Workbook is empty"); + var Sheets = (wb.Workbook && wb.Workbook.Sheets) || []; + check_wb_names(wb.SheetNames, Sheets, !!wb.vbaraw); + for(var i = 0; i < wb.SheetNames.length; ++i) check_ws(wb.Sheets[wb.SheetNames[i]], wb.SheetNames[i], i); + /* TODO: validate workbook */ +} +/* 18.2 Workbook */ +var wbnsregex = /<\w+:workbook/; +function parse_wb_xml(data, opts) { + if(!data) throw new Error("Could not find file"); + var wb = { AppVersion:{}, WBProps:{}, WBView:[], Sheets:[], CalcPr:{}, Names:[], xmlns: "" }; + var pass = false, xmlns = "xmlns"; + var dname = {}, dnstart = 0; + data.replace(tagregex, function xml_wb(x, idx) { + var y = parsexmltag(x); + switch(strip_ns(y[0])) { + case '': break; + + /* 18.2.13 fileVersion CT_FileVersion ? */ + case '': case '': break; + + /* 18.2.12 fileSharing CT_FileSharing ? */ + case '': break; + + /* 18.2.28 workbookPr CT_WorkbookPr ? */ + case '': + WBPropsDef.forEach(function(w) { + if(y[w[0]] == null) return; + switch(w[2]) { + case "bool": wb.WBProps[w[0]] = parsexmlbool(y[w[0]]); break; + case "int": wb.WBProps[w[0]] = parseInt(y[w[0]], 10); break; + default: wb.WBProps[w[0]] = y[w[0]]; + } + }); + if(y.codeName) wb.WBProps.CodeName = utf8read(y.codeName); + break; + case '': break; + + /* 18.2.29 workbookProtection CT_WorkbookProtection ? */ + case '': break; + + /* 18.2.1 bookViews CT_BookViews ? */ + case '': case '': break; + /* 18.2.30 workbookView CT_BookView + */ + case '': delete y[0]; wb.WBView.push(y); break; + case '': break; + + /* 18.2.20 sheets CT_Sheets 1 */ + case '': case '': break; // aggregate sheet + /* 18.2.19 sheet CT_Sheet + */ + case '': break; + + /* 18.2.15 functionGroups CT_FunctionGroups ? */ + case '': break; + /* 18.2.14 functionGroup CT_FunctionGroup + */ + case '': case '': break; + /* 18.2.8 externalReference CT_ExternalReference + */ + case '': break; + case '': case '': pass=false; break; + /* 18.2.5 definedName CT_DefinedName + */ + case '': { + dname.Ref = unescapexml(utf8read(data.slice(dnstart, idx))); + wb.Names.push(dname); + } break; + case '': break; + + /* 18.2.2 calcPr CT_CalcPr ? */ + case '': delete y[0]; wb.CalcPr = y; break; + case '': break; + + /* 18.2.16 oleSize CT_OleSize ? (ref required) */ + case '': case '': case '': break; + + /* 18.2.18 pivotCaches CT_PivotCaches ? */ + case '': case '': case '': break; + + /* 18.2.23 smartTagTypes CT_SmartTagTypes ? */ + case '': case '': break; + /* 18.2.22 smartTagType CT_SmartTagType ? */ + case '': break; + + /* 18.2.11 fileRecoveryPr CT_FileRecoveryPr ? */ + case '': break; + + /* 18.2.26 webPublishObjects CT_WebPublishObjects ? */ + case '': case '': break; + /* 18.2.25 webPublishObject CT_WebPublishObject ? */ + case '': case '': case '': break; + /* 18.2.7 ext CT_Extension + */ + case '': pass=false; break; + + /* Others */ + case '': pass=true; break; + case '': pass=false; break; + + /* TODO */ + case ' 0); + + /* fileVersion */ + /* fileSharing */ + + var workbookPr = ({codeName:"ThisWorkbook"}); + if(wb.Workbook && wb.Workbook.WBProps) { + WBPropsDef.forEach(function(x) { +if((wb.Workbook.WBProps[x[0]]) == null) return; + if((wb.Workbook.WBProps[x[0]]) == x[1]) return; + workbookPr[x[0]] = (wb.Workbook.WBProps[x[0]]); + }); +if(wb.Workbook.WBProps.CodeName) { workbookPr.codeName = wb.Workbook.WBProps.CodeName; delete workbookPr.CodeName; } + } + o[o.length] = (writextag('workbookPr', null, workbookPr)); + + /* workbookProtection */ + + var sheets = wb.Workbook && wb.Workbook.Sheets || []; + var i = 0; + + /* bookViews only written if first worksheet is hidden */ + if(sheets && sheets[0] && !!sheets[0].Hidden) { + o[o.length] = ""; + for(i = 0; i != wb.SheetNames.length; ++i) { + if(!sheets[i]) break; + if(!sheets[i].Hidden) break; + } + if(i == wb.SheetNames.length) i = 0; + o[o.length] = ''; + o[o.length] = ""; + } + + o[o.length] = ""; + for(i = 0; i != wb.SheetNames.length; ++i) { + var sht = ({name:escapexml(wb.SheetNames[i].slice(0,31))}); + sht.sheetId = ""+(i+1); + sht["r:id"] = "rId"+(i+1); + if(sheets[i]) switch(sheets[i].Hidden) { + case 1: sht.state = "hidden"; break; + case 2: sht.state = "veryHidden"; break; + } + o[o.length] = (writextag('sheet',null,sht)); + } + o[o.length] = ""; + + /* functionGroups */ + /* externalReferences */ + + if(write_names) { + o[o.length] = ""; + if(wb.Workbook && wb.Workbook.Names) wb.Workbook.Names.forEach(function(n) { + var d = {name:n.Name}; + if(n.Comment) d.comment = n.Comment; + if(n.Sheet != null) d.localSheetId = ""+n.Sheet; + if(n.Hidden) d.hidden = "1"; + if(!n.Ref) return; + o[o.length] = writextag('definedName', escapexml(n.Ref), d); + }); + o[o.length] = ""; + } + + /* calcPr */ + /* oleSize */ + /* customWorkbookViews */ + /* pivotCaches */ + /* smartTagPr */ + /* smartTagTypes */ + /* webPublishing */ + /* fileRecoveryPr */ + /* webPublishObjects */ + /* extLst */ + + if(o.length>2){ o[o.length] = ''; o[1]=o[1].replace("/>",">"); } + return o.join(""); +} +/* [MS-XLSB] 2.4.304 BrtBundleSh */ +function parse_BrtBundleSh(data, length) { + var z = {}; + z.Hidden = data.read_shift(4); //hsState ST_SheetState + z.iTabID = data.read_shift(4); + z.strRelID = parse_RelID(data,length-8); + z.name = parse_XLWideString(data); + return z; +} +function write_BrtBundleSh(data, o) { + if(!o) o = new_buf(127); + o.write_shift(4, data.Hidden); + o.write_shift(4, data.iTabID); + write_RelID(data.strRelID, o); + write_XLWideString(data.name.slice(0,31), o); + return o.length > o.l ? o.slice(0, o.l) : o; +} + +/* [MS-XLSB] 2.4.815 BrtWbProp */ +function parse_BrtWbProp(data, length) { + var o = ({}); + var flags = data.read_shift(4); + o.defaultThemeVersion = data.read_shift(4); + var strName = (length > 8) ? parse_XLWideString(data) : ""; + if(strName.length > 0) o.CodeName = strName; + o.autoCompressPictures = !!(flags & 0x10000); + o.backupFile = !!(flags & 0x40); + o.checkCompatibility = !!(flags & 0x1000); + o.date1904 = !!(flags & 0x01); + o.filterPrivacy = !!(flags & 0x08); + o.hidePivotFieldList = !!(flags & 0x400); + o.promptedSolutions = !!(flags & 0x10); + o.publishItems = !!(flags & 0x800); + o.refreshAllConnections = !!(flags & 0x40000); + o.saveExternalLinkValues = !!(flags & 0x80); + o.showBorderUnselectedTables = !!(flags & 0x04); + o.showInkAnnotation = !!(flags & 0x20); + o.showObjects = ["all", "placeholders", "none"][(flags >> 13) & 0x03]; + o.showPivotChartFilter = !!(flags & 0x8000); + o.updateLinks = ["userSet", "never", "always"][(flags >> 8) & 0x03]; + return o; +} +function write_BrtWbProp(data, o) { + if(!o) o = new_buf(72); + var flags = 0; + if(data) { + /* TODO: mirror parse_BrtWbProp fields */ + if(data.filterPrivacy) flags |= 0x08; + } + o.write_shift(4, flags); + o.write_shift(4, 0); + write_XLSBCodeName(data && data.CodeName || "ThisWorkbook", o); + return o.slice(0, o.l); +} + +function parse_BrtFRTArchID$(data, length) { + var o = {}; + data.read_shift(4); + o.ArchID = data.read_shift(4); + data.l += length - 8; + return o; +} + +/* [MS-XLSB] 2.4.687 BrtName */ +function parse_BrtName(data, length, opts) { + var end = data.l + length; + data.l += 4; //var flags = data.read_shift(4); + data.l += 1; //var chKey = data.read_shift(1); + var itab = data.read_shift(4); + var name = parse_XLNameWideString(data); + var formula = parse_XLSBNameParsedFormula(data, 0, opts); + var comment = parse_XLNullableWideString(data); + //if(0 /* fProc */) { + // unusedstring1: XLNullableWideString + // description: XLNullableWideString + // helpTopic: XLNullableWideString + // unusedstring2: XLNullableWideString + //} + data.l = end; + var out = ({Name:name, Ptg:formula}); + if(itab < 0xFFFFFFF) out.Sheet = itab; + if(comment) out.Comment = comment; + return out; +} + +/* [MS-XLSB] 2.1.7.61 Workbook */ +function parse_wb_bin(data, opts) { + var wb = { AppVersion:{}, WBProps:{}, WBView:[], Sheets:[], CalcPr:{}, xmlns: "" }; + var state = []; + var pass = false; + + if(!opts) opts = {}; + opts.biff = 12; + + var Names = []; + var supbooks = ([[]]); + supbooks.SheetNames = []; + supbooks.XTI = []; + + XLSBRecordEnum[0x0010] = { n:"BrtFRTArchID$", f:parse_BrtFRTArchID$ }; + + recordhopper(data, function hopper_wb(val, R, RT) { + switch(RT) { + case 0x009C: /* 'BrtBundleSh' */ + supbooks.SheetNames.push(val.name); + wb.Sheets.push(val); break; + + case 0x0099: /* 'BrtWbProp' */ + wb.WBProps = val; break; + + case 0x0027: /* 'BrtName' */ + if(val.Sheet != null) opts.SID = val.Sheet; + val.Ref = stringify_formula(val.Ptg, null, null, supbooks, opts); + delete opts.SID; + delete val.Ptg; + Names.push(val); + break; + case 0x040C: /* 'BrtNameExt' */ break; + + case 0x0165: /* 'BrtSupSelf' */ + case 0x0166: /* 'BrtSupSame' */ + case 0x0163: /* 'BrtSupBookSrc' */ + case 0x029B: /* 'BrtSupAddin' */ + if(!supbooks[0].length) supbooks[0] = [RT, val]; + else supbooks.push([RT, val]); + supbooks[supbooks.length - 1].XTI = []; + break; + case 0x016A: /* 'BrtExternSheet' */ + if(supbooks.length === 0) { supbooks[0] = []; supbooks[0].XTI = []; } + supbooks[supbooks.length - 1].XTI = supbooks[supbooks.length - 1].XTI.concat(val); + supbooks.XTI = supbooks.XTI.concat(val); + break; + case 0x0169: /* 'BrtPlaceholderName' */ + break; + + case 0x0817: /* 'BrtAbsPath15' */ + case 0x009E: /* 'BrtBookView' */ + case 0x008F: /* 'BrtBeginBundleShs' */ + case 0x0298: /* 'BrtBeginFnGroup' */ + case 0x0161: /* 'BrtBeginExternals' */ + break; + + /* case 'BrtModelTimeGroupingCalcCol' */ + case 0x0C00: /* 'BrtUid' */ + case 0x0C01: /* 'BrtRevisionPtr' */ + case 0x0216: /* 'BrtBookProtection' */ + case 0x02A5: /* 'BrtBookProtectionIso' */ + case 0x009D: /* 'BrtCalcProp' */ + case 0x0262: /* 'BrtCrashRecErr' */ + case 0x0802: /* 'BrtDecoupledPivotCacheID' */ + case 0x009B: /* 'BrtFileRecover' */ + case 0x0224: /* 'BrtFileSharing' */ + case 0x02A4: /* 'BrtFileSharingIso' */ + case 0x0080: /* 'BrtFileVersion' */ + case 0x0299: /* 'BrtFnGroup' */ + case 0x0850: /* 'BrtModelRelationship' */ + case 0x084D: /* 'BrtModelTable' */ + case 0x0225: /* 'BrtOleSize' */ + case 0x0805: /* 'BrtPivotTableRef' */ + case 0x0254: /* 'BrtSmartTagType' */ + case 0x081C: /* 'BrtTableSlicerCacheID' */ + case 0x081B: /* 'BrtTableSlicerCacheIDs' */ + case 0x0822: /* 'BrtTimelineCachePivotCacheID' */ + case 0x018D: /* 'BrtUserBookView' */ + case 0x009A: /* 'BrtWbFactoid' */ + case 0x045D: /* 'BrtWbProp14' */ + case 0x0229: /* 'BrtWebOpt' */ + case 0x082B: /* 'BrtWorkBookPr15' */ + break; + + case 0x0023: /* 'BrtFRTBegin' */ + state.push(RT); pass = true; break; + case 0x0024: /* 'BrtFRTEnd' */ + state.pop(); pass = false; break; + case 0x0025: /* 'BrtACBegin' */ + state.push(RT); pass = true; break; + case 0x0026: /* 'BrtACEnd' */ + state.pop(); pass = false; break; + + case 0x0010: /* 'BrtFRTArchID$' */ break; + + default: + if(R.T){/* empty */} + else if(!pass || (opts.WTF && state[state.length-1] != 0x0025 /* BrtACBegin */ && state[state.length-1] != 0x0023 /* BrtFRTBegin */)) throw new Error("Unexpected record 0x" + RT.toString(16)); + } + }, opts); + + parse_wb_defaults(wb); + + // $FlowIgnore + wb.Names = Names; + + (wb).supbooks = supbooks; + return wb; +} + +function write_BUNDLESHS(ba, wb) { + write_record(ba, 0x008F /* BrtBeginBundleShs */); + for(var idx = 0; idx != wb.SheetNames.length; ++idx) { + var viz = wb.Workbook && wb.Workbook.Sheets && wb.Workbook.Sheets[idx] && wb.Workbook.Sheets[idx].Hidden || 0; + var d = { Hidden: viz, iTabID: idx+1, strRelID: 'rId' + (idx+1), name: wb.SheetNames[idx] }; + write_record(ba, 0x009C /* BrtBundleSh */, write_BrtBundleSh(d)); + } + write_record(ba, 0x0090 /* BrtEndBundleShs */); +} + +/* [MS-XLSB] 2.4.649 BrtFileVersion */ +function write_BrtFileVersion(data, o) { + if(!o) o = new_buf(127); + for(var i = 0; i != 4; ++i) o.write_shift(4, 0); + write_XLWideString("SheetJS", o); + write_XLWideString(XLSX.version, o); + write_XLWideString(XLSX.version, o); + write_XLWideString("7262", o); + return o.length > o.l ? o.slice(0, o.l) : o; +} + +/* [MS-XLSB] 2.4.301 BrtBookView */ +function write_BrtBookView(idx, o) { + if(!o) o = new_buf(29); + o.write_shift(-4, 0); + o.write_shift(-4, 460); + o.write_shift(4, 28800); + o.write_shift(4, 17600); + o.write_shift(4, 500); + o.write_shift(4, idx); + o.write_shift(4, idx); + var flags = 0x78; + o.write_shift(1, flags); + return o.length > o.l ? o.slice(0, o.l) : o; +} + +function write_BOOKVIEWS(ba, wb) { + /* required if hidden tab appears before visible tab */ + if(!wb.Workbook || !wb.Workbook.Sheets) return; + var sheets = wb.Workbook.Sheets; + var i = 0, vistab = -1, hidden = -1; + for(; i < sheets.length; ++i) { + if(!sheets[i] || !sheets[i].Hidden && vistab == -1) vistab = i; + else if(sheets[i].Hidden == 1 && hidden == -1) hidden = i; + } + if(hidden > vistab) return; + write_record(ba, 0x0087 /* BrtBeginBookViews */); + write_record(ba, 0x009E /* BrtBookView */, write_BrtBookView(vistab)); + /* 1*(BrtBookView *FRT) */ + write_record(ba, 0x0088 /* BrtEndBookViews */); +} + +/* [MS-XLSB] 2.4.305 BrtCalcProp */ +/*function write_BrtCalcProp(data, o) { + if(!o) o = new_buf(26); + o.write_shift(4,0); // force recalc + o.write_shift(4,1); + o.write_shift(4,0); + write_Xnum(0, o); + o.write_shift(-4, 1023); + o.write_shift(1, 0x33); + o.write_shift(1, 0x00); + return o; +}*/ + +/* [MS-XLSB] 2.4.646 BrtFileRecover */ +/*function write_BrtFileRecover(data, o) { + if(!o) o = new_buf(1); + o.write_shift(1,0); + return o; +}*/ + +/* [MS-XLSB] 2.1.7.61 Workbook */ +function write_wb_bin(wb, opts) { + var ba = buf_array(); + write_record(ba, 0x0083 /* BrtBeginBook */); + write_record(ba, 0x0080 /* BrtFileVersion */, write_BrtFileVersion()); + /* [[BrtFileSharingIso] BrtFileSharing] */ + write_record(ba, 0x0099 /* BrtWbProp */, write_BrtWbProp(wb.Workbook && wb.Workbook.WBProps || null)); + /* [ACABSPATH] */ + /* [[BrtBookProtectionIso] BrtBookProtection] */ + write_BOOKVIEWS(ba, wb, opts); + write_BUNDLESHS(ba, wb, opts); + /* [FNGROUP] */ + /* [EXTERNALS] */ + /* *BrtName */ + /* write_record(ba, 0x009D BrtCalcProp, write_BrtCalcProp()); */ + /* [BrtOleSize] */ + /* *(BrtUserBookView *FRT) */ + /* [PIVOTCACHEIDS] */ + /* [BrtWbFactoid] */ + /* [SMARTTAGTYPES] */ + /* [BrtWebOpt] */ + /* write_record(ba, 0x009B BrtFileRecover, write_BrtFileRecover()); */ + /* [WEBPUBITEMS] */ + /* [CRERRS] */ + /* FRTWORKBOOK */ + write_record(ba, 0x0084 /* BrtEndBook */); + + return ba.end(); +} +function parse_wb(data, name, opts) { + if(name.slice(-4)===".bin") return parse_wb_bin((data), opts); + return parse_wb_xml((data), opts); +} + +function parse_ws(data, name, idx, opts, rels, wb, themes, styles) { + if(name.slice(-4)===".bin") return parse_ws_bin((data), opts, idx, rels, wb, themes, styles); + return parse_ws_xml((data), opts, idx, rels, wb, themes, styles); +} + +function parse_cs(data, name, idx, opts, rels, wb, themes, styles) { + if(name.slice(-4)===".bin") return parse_cs_bin((data), opts, idx, rels, wb, themes, styles); + return parse_cs_xml((data), opts, idx, rels, wb, themes, styles); +} + +function parse_ms(data, name, idx, opts, rels, wb, themes, styles) { + if(name.slice(-4)===".bin") return parse_ms_bin((data), opts, idx, rels, wb, themes, styles); + return parse_ms_xml((data), opts, idx, rels, wb, themes, styles); +} + +function parse_ds(data, name, idx, opts, rels, wb, themes, styles) { + if(name.slice(-4)===".bin") return parse_ds_bin((data), opts, idx, rels, wb, themes, styles); + return parse_ds_xml((data), opts, idx, rels, wb, themes, styles); +} + +function parse_sty(data, name, themes, opts) { + if(name.slice(-4)===".bin") return parse_sty_bin((data), themes, opts); + return parse_sty_xml((data), themes, opts); +} + +function parse_theme(data, name, opts) { + return parse_theme_xml(data, opts); +} + +function parse_sst(data, name, opts) { + if(name.slice(-4)===".bin") return parse_sst_bin((data), opts); + return parse_sst_xml((data), opts); +} + +function parse_cmnt(data, name, opts) { + if(name.slice(-4)===".bin") return parse_comments_bin((data), opts); + return parse_comments_xml((data), opts); +} + +function parse_cc(data, name, opts) { + if(name.slice(-4)===".bin") return parse_cc_bin((data), name, opts); + return parse_cc_xml((data), name, opts); +} + +function parse_xlink(data, rel, name, opts) { + if(name.slice(-4)===".bin") return parse_xlink_bin((data), rel, name, opts); + return parse_xlink_xml((data), rel, name, opts); +} + +function parse_xlmeta(data, name, opts) { + if(name.slice(-4)===".bin") return parse_xlmeta_bin((data), name, opts); + return parse_xlmeta_xml((data), name, opts); +} + +function write_wb(wb, name, opts) { + return (name.slice(-4)===".bin" ? write_wb_bin : write_wb_xml)(wb, opts); +} + +function write_ws(data, name, opts, wb, rels) { + return (name.slice(-4)===".bin" ? write_ws_bin : write_ws_xml)(data, opts, wb, rels); +} + +// eslint-disable-next-line no-unused-vars +function write_cs(data, name, opts, wb, rels) { + return (name.slice(-4)===".bin" ? write_cs_bin : write_cs_xml)(data, opts, wb, rels); +} + +function write_sty(data, name, opts) { + return (name.slice(-4)===".bin" ? write_sty_bin : write_sty_xml)(data, opts); +} + +function write_sst(data, name, opts) { + return (name.slice(-4)===".bin" ? write_sst_bin : write_sst_xml)(data, opts); +} + +function write_cmnt(data, name, opts) { + return (name.slice(-4)===".bin" ? write_comments_bin : write_comments_xml)(data, opts); +} +/* +function write_cc(data, name:string, opts) { + return (name.slice(-4)===".bin" ? write_cc_bin : write_cc_xml)(data, opts); +} +*/ + +function write_xlmeta(name) { + return (name.slice(-4)===".bin" ? write_xlmeta_bin : write_xlmeta_xml)(); +} +var attregexg2=/([\w:]+)=((?:")([^"]*)(?:")|(?:')([^']*)(?:'))/g; +var attregex2=/([\w:]+)=((?:")(?:[^"]*)(?:")|(?:')(?:[^']*)(?:'))/; +function xlml_parsexmltag(tag, skip_root) { + var words = tag.split(/\s+/); + var z = ([]); if(!skip_root) z[0] = words[0]; + if(words.length === 1) return z; + var m = tag.match(attregexg2), y, j, w, i; + if(m) for(i = 0; i != m.length; ++i) { + y = m[i].match(attregex2); +if((j=y[1].indexOf(":")) === -1) z[y[1]] = y[2].slice(1,y[2].length-1); + else { + if(y[1].slice(0,6) === "xmlns:") w = "xmlns"+y[1].slice(6); + else w = y[1].slice(j+1); + z[w] = y[2].slice(1,y[2].length-1); + } + } + return z; +} +function xlml_parsexmltagobj(tag) { + var words = tag.split(/\s+/); + var z = {}; + if(words.length === 1) return z; + var m = tag.match(attregexg2), y, j, w, i; + if(m) for(i = 0; i != m.length; ++i) { + y = m[i].match(attregex2); +if((j=y[1].indexOf(":")) === -1) z[y[1]] = y[2].slice(1,y[2].length-1); + else { + if(y[1].slice(0,6) === "xmlns:") w = "xmlns"+y[1].slice(6); + else w = y[1].slice(j+1); + z[w] = y[2].slice(1,y[2].length-1); + } + } + return z; +} + +// ---- + +/* map from xlml named formats to SSF TODO: localize */ +var XLMLFormatMap; + +function xlml_format(format, value) { + var fmt = XLMLFormatMap[format] || unescapexml(format); + if(fmt === "General") return SSF_general(value); + return SSF_format(fmt, value); +} + +function xlml_set_custprop(Custprops, key, cp, val) { + var oval = val; + switch((cp[0].match(/dt:dt="([\w.]+)"/)||["",""])[1]) { + case "boolean": oval = parsexmlbool(val); break; + case "i2": case "int": oval = parseInt(val, 10); break; + case "r4": case "float": oval = parseFloat(val); break; + case "date": case "dateTime.tz": oval = parseDate(val); break; + case "i8": case "string": case "fixed": case "uuid": case "bin.base64": break; + default: throw new Error("bad custprop:" + cp[0]); + } + Custprops[unescapexml(key)] = oval; +} + +function safe_format_xlml(cell, nf, o) { + if(cell.t === 'z') return; + if(!o || o.cellText !== false) try { + if(cell.t === 'e') { cell.w = cell.w || BErr[cell.v]; } + else if(nf === "General") { + if(cell.t === 'n') { + if((cell.v|0) === cell.v) cell.w = cell.v.toString(10); + else cell.w = SSF_general_num(cell.v); + } + else cell.w = SSF_general(cell.v); + } + else cell.w = xlml_format(nf||"General", cell.v); + } catch(e) { if(o.WTF) throw e; } + try { + var z = XLMLFormatMap[nf]||nf||"General"; + if(o.cellNF) cell.z = z; + if(o.cellDates && cell.t == 'n' && fmt_is_date(z)) { + var _d = SSF_parse_date_code(cell.v); if(_d) { cell.t = 'd'; cell.v = new Date(_d.y, _d.m-1,_d.d,_d.H,_d.M,_d.S,_d.u); } + } + } catch(e) { if(o.WTF) throw e; } +} + +function process_style_xlml(styles, stag, opts) { + if(opts.cellStyles) { + if(stag.Interior) { + var I = stag.Interior; + if(I.Pattern) I.patternType = XLMLPatternTypeMap[I.Pattern] || I.Pattern; + } + } + styles[stag.ID] = stag; +} + +/* TODO: there must exist some form of OSP-blessed spec */ +function parse_xlml_data(xml, ss, data, cell, base, styles, csty, row, arrayf, o) { + var nf = "General", sid = cell.StyleID, S = {}; o = o || {}; + var interiors = []; + var i = 0; + if(sid === undefined && row) sid = row.StyleID; + if(sid === undefined && csty) sid = csty.StyleID; + while(styles[sid] !== undefined) { + if(styles[sid].nf) nf = styles[sid].nf; + if(styles[sid].Interior) interiors.push(styles[sid].Interior); + if(!styles[sid].Parent) break; + sid = styles[sid].Parent; + } + switch(data.Type) { + case 'Boolean': + cell.t = 'b'; + cell.v = parsexmlbool(xml); + break; + case 'String': + cell.t = 's'; cell.r = xlml_fixstr(unescapexml(xml)); + cell.v = (xml.indexOf("<") > -1 ? unescapexml(ss||xml).replace(/<.*?>/g, "") : cell.r); // todo: BR etc + break; + case 'DateTime': + if(xml.slice(-1) != "Z") xml += "Z"; + cell.v = (parseDate(xml) - new Date(Date.UTC(1899, 11, 30))) / (24 * 60 * 60 * 1000); + if(cell.v !== cell.v) cell.v = unescapexml(xml); + else if(cell.v<60) cell.v = cell.v -1; + if(!nf || nf == "General") nf = "yyyy-mm-dd"; + /* falls through */ + case 'Number': + if(cell.v === undefined) cell.v=+xml; + if(!cell.t) cell.t = 'n'; + break; + case 'Error': cell.t = 'e'; cell.v = RBErr[xml]; if(o.cellText !== false) cell.w = xml; break; + default: + if(xml == "" && ss == "") { cell.t = 'z'; } + else { cell.t = 's'; cell.v = xlml_fixstr(ss||xml); } + break; + } + safe_format_xlml(cell, nf, o); + if(o.cellFormula !== false) { + if(cell.Formula) { + var fstr = unescapexml(cell.Formula); + /* strictly speaking, the leading = is required but some writers omit */ + if(fstr.charCodeAt(0) == 61 /* = */) fstr = fstr.slice(1); + cell.f = rc_to_a1(fstr, base); + delete cell.Formula; + if(cell.ArrayRange == "RC") cell.F = rc_to_a1("RC:RC", base); + else if(cell.ArrayRange) { + cell.F = rc_to_a1(cell.ArrayRange, base); + arrayf.push([safe_decode_range(cell.F), cell.F]); + } + } else { + for(i = 0; i < arrayf.length; ++i) + if(base.r >= arrayf[i][0].s.r && base.r <= arrayf[i][0].e.r) + if(base.c >= arrayf[i][0].s.c && base.c <= arrayf[i][0].e.c) + cell.F = arrayf[i][1]; + } + } + if(o.cellStyles) { + interiors.forEach(function(x) { + if(!S.patternType && x.patternType) S.patternType = x.patternType; + }); + cell.s = S; + } + if(cell.StyleID !== undefined) cell.ixfe = cell.StyleID; +} + +function xlml_clean_comment(comment) { + comment.t = comment.v || ""; + comment.t = comment.t.replace(/\r\n/g,"\n").replace(/\r/g,"\n"); + comment.v = comment.w = comment.ixfe = undefined; +} + +/* TODO: Everything */ +function parse_xlml_xml(d, _opts) { + var opts = _opts || {}; + make_ssf(); + var str = debom(xlml_normalize(d)); + if(opts.type == 'binary' || opts.type == 'array' || opts.type == 'base64') { + if(typeof $cptable !== 'undefined') str = $cptable.utils.decode(65001, char_codes(str)); + else str = utf8read(str); + } + var opening = str.slice(0, 1024).toLowerCase(), ishtml = false; + opening = opening.replace(/".*?"/g, ""); + if((opening.indexOf(">") & 1023) > Math.min((opening.indexOf(",") & 1023), (opening.indexOf(";")&1023))) { var _o = dup(opts); _o.type = "string"; return PRN.to_workbook(str, _o); } + if(opening.indexOf("= 0) ishtml = true; }); + if(ishtml) return html_to_workbook(str, opts); + + XLMLFormatMap = ({ + "General Number": "General", + "General Date": table_fmt[22], + "Long Date": "dddd, mmmm dd, yyyy", + "Medium Date": table_fmt[15], + "Short Date": table_fmt[14], + "Long Time": table_fmt[19], + "Medium Time": table_fmt[18], + "Short Time": table_fmt[20], + "Currency": '"$"#,##0.00_);[Red]\\("$"#,##0.00\\)', + "Fixed": table_fmt[2], + "Standard": table_fmt[4], + "Percent": table_fmt[10], + "Scientific": table_fmt[11], + "Yes/No": '"Yes";"Yes";"No";@', + "True/False": '"True";"True";"False";@', + "On/Off": '"Yes";"Yes";"No";@' + }); + + + var Rn; + var state = [], tmp; + if(DENSE != null && opts.dense == null) opts.dense = DENSE; + var sheets = {}, sheetnames = [], cursheet = (opts.dense ? [] : {}), sheetname = ""; + var cell = ({}), row = {};// eslint-disable-line no-unused-vars + var dtag = xlml_parsexmltag(''), didx = 0; + var c = 0, r = 0; + var refguess = {s: {r:2000000, c:2000000}, e: {r:0, c:0} }; + var styles = {}, stag = {}; + var ss = "", fidx = 0; + var merges = []; + var Props = {}, Custprops = {}, pidx = 0, cp = []; + var comments = [], comment = ({}); + var cstys = [], csty, seencol = false; + var arrayf = []; + var rowinfo = [], rowobj = {}, cc = 0, rr = 0; + var Workbook = ({ Sheets:[], WBProps:{date1904:false} }), wsprops = {}; + xlmlregex.lastIndex = 0; + str = str.replace(//mg,""); + var raw_Rn3 = ""; + while((Rn = xlmlregex.exec(str))) switch((Rn[3] = (raw_Rn3 = Rn[3]).toLowerCase())) { + case 'data' /*case 'Data'*/: + if(raw_Rn3 == "data") { + if(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw new Error("Bad state: "+tmp.join("|"));} + else if(Rn[0].charAt(Rn[0].length-2) !== '/') state.push([Rn[3], true]); + break; + } + if(state[state.length-1][1]) break; + if(Rn[1]==='/') parse_xlml_data(str.slice(didx, Rn.index), ss, dtag, state[state.length-1][0]==/*"Comment"*/"comment"?comment:cell, {c:c,r:r}, styles, cstys[c], row, arrayf, opts); + else { ss = ""; dtag = xlml_parsexmltag(Rn[0]); didx = Rn.index + Rn[0].length; } + break; + case 'cell' /*case 'Cell'*/: + if(Rn[1]==='/'){ + if(comments.length > 0) cell.c = comments; + if((!opts.sheetRows || opts.sheetRows > r) && cell.v !== undefined) { + if(opts.dense) { + if(!cursheet[r]) cursheet[r] = []; + cursheet[r][c] = cell; + } else cursheet[encode_col(c) + encode_row(r)] = cell; + } + if(cell.HRef) { + cell.l = ({Target:unescapexml(cell.HRef)}); + if(cell.HRefScreenTip) cell.l.Tooltip = cell.HRefScreenTip; + delete cell.HRef; delete cell.HRefScreenTip; + } + if(cell.MergeAcross || cell.MergeDown) { + cc = c + (parseInt(cell.MergeAcross,10)|0); + rr = r + (parseInt(cell.MergeDown,10)|0); + merges.push({s:{c:c,r:r},e:{c:cc,r:rr}}); + } + if(!opts.sheetStubs) { if(cell.MergeAcross) c = cc + 1; else ++c; } + else if(cell.MergeAcross || cell.MergeDown) { +for(var cma = c; cma <= cc; ++cma) { + for(var cmd = r; cmd <= rr; ++cmd) { + if(cma > c || cmd > r) { + if(opts.dense) { + if(!cursheet[cmd]) cursheet[cmd] = []; + cursheet[cmd][cma] = {t:'z'}; + } else cursheet[encode_col(cma) + encode_row(cmd)] = {t:'z'}; + } + } + } + c = cc + 1; + } + else ++c; + } else { + cell = xlml_parsexmltagobj(Rn[0]); + if(cell.Index) c = +cell.Index - 1; + if(c < refguess.s.c) refguess.s.c = c; + if(c > refguess.e.c) refguess.e.c = c; + if(Rn[0].slice(-2) === "/>") ++c; + comments = []; + } + break; + case 'row' /*case 'Row'*/: + if(Rn[1]==='/' || Rn[0].slice(-2) === "/>") { + if(r < refguess.s.r) refguess.s.r = r; + if(r > refguess.e.r) refguess.e.r = r; + if(Rn[0].slice(-2) === "/>") { + row = xlml_parsexmltag(Rn[0]); + if(row.Index) r = +row.Index - 1; + } + c = 0; ++r; + } else { + row = xlml_parsexmltag(Rn[0]); + if(row.Index) r = +row.Index - 1; + rowobj = {}; + if(row.AutoFitHeight == "0" || row.Height) { + rowobj.hpx = parseInt(row.Height, 10); rowobj.hpt = px2pt(rowobj.hpx); + rowinfo[r] = rowobj; + } + if(row.Hidden == "1") { rowobj.hidden = true; rowinfo[r] = rowobj; } + } + break; + case 'worksheet' /*case 'Worksheet'*/: /* TODO: read range from FullRows/FullColumns */ + if(Rn[1]==='/'){ + if((tmp=state.pop())[0]!==Rn[3]) throw new Error("Bad state: "+tmp.join("|")); + sheetnames.push(sheetname); + if(refguess.s.r <= refguess.e.r && refguess.s.c <= refguess.e.c) { + cursheet["!ref"] = encode_range(refguess); + if(opts.sheetRows && opts.sheetRows <= refguess.e.r) { + cursheet["!fullref"] = cursheet["!ref"]; + refguess.e.r = opts.sheetRows - 1; + cursheet["!ref"] = encode_range(refguess); + } + } + if(merges.length) cursheet["!merges"] = merges; + if(cstys.length > 0) cursheet["!cols"] = cstys; + if(rowinfo.length > 0) cursheet["!rows"] = rowinfo; + sheets[sheetname] = cursheet; + } else { + refguess = {s: {r:2000000, c:2000000}, e: {r:0, c:0} }; + r = c = 0; + state.push([Rn[3], false]); + tmp = xlml_parsexmltag(Rn[0]); + sheetname = unescapexml(tmp.Name); + cursheet = (opts.dense ? [] : {}); + merges = []; + arrayf = []; + rowinfo = []; + wsprops = {name:sheetname, Hidden:0}; + Workbook.Sheets.push(wsprops); + } + break; + case 'table' /*case 'Table'*/: + if(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw new Error("Bad state: "+tmp.join("|"));} + else if(Rn[0].slice(-2) == "/>") break; + else { + state.push([Rn[3], false]); + cstys = []; seencol = false; + } + break; + + case 'style' /*case 'Style'*/: + if(Rn[1]==='/') process_style_xlml(styles, stag, opts); + else stag = xlml_parsexmltag(Rn[0]); + break; + + case 'numberformat' /*case 'NumberFormat'*/: + stag.nf = unescapexml(xlml_parsexmltag(Rn[0]).Format || "General"); + if(XLMLFormatMap[stag.nf]) stag.nf = XLMLFormatMap[stag.nf]; + for(var ssfidx = 0; ssfidx != 0x188; ++ssfidx) if(table_fmt[ssfidx] == stag.nf) break; + if(ssfidx == 0x188) for(ssfidx = 0x39; ssfidx != 0x188; ++ssfidx) if(table_fmt[ssfidx] == null) { SSF_load(stag.nf, ssfidx); break; } + break; + + case 'column' /*case 'Column'*/: + if(state[state.length-1][0] !== /*'Table'*/'table') break; + csty = xlml_parsexmltag(Rn[0]); + if(csty.Hidden) { csty.hidden = true; delete csty.Hidden; } + if(csty.Width) csty.wpx = parseInt(csty.Width, 10); + if(!seencol && csty.wpx > 10) { + seencol = true; MDW = DEF_MDW; //find_mdw_wpx(csty.wpx); + for(var _col = 0; _col < cstys.length; ++_col) if(cstys[_col]) process_col(cstys[_col]); + } + if(seencol) process_col(csty); + cstys[(csty.Index-1||cstys.length)] = csty; + for(var i = 0; i < +csty.Span; ++i) cstys[cstys.length] = dup(csty); + break; + + case 'namedrange' /*case 'NamedRange'*/: + if(Rn[1]==='/') break; + if(!Workbook.Names) Workbook.Names = []; + var _NamedRange = parsexmltag(Rn[0]); + var _DefinedName = ({ + Name: _NamedRange.Name, + Ref: rc_to_a1(_NamedRange.RefersTo.slice(1), {r:0, c:0}) + }); + if(Workbook.Sheets.length>0) _DefinedName.Sheet=Workbook.Sheets.length-1; +Workbook.Names.push(_DefinedName); + break; + + case 'namedcell' /*case 'NamedCell'*/: break; + case 'b' /*case 'B'*/: break; + case 'i' /*case 'I'*/: break; + case 'u' /*case 'U'*/: break; + case 's' /*case 'S'*/: break; + case 'em' /*case 'EM'*/: break; + case 'h2' /*case 'H2'*/: break; + case 'h3' /*case 'H3'*/: break; + case 'sub' /*case 'Sub'*/: break; + case 'sup' /*case 'Sup'*/: break; + case 'span' /*case 'Span'*/: break; + case 'alignment' /*case 'Alignment'*/: + break; + case 'borders' /*case 'Borders'*/: break; + case 'border' /*case 'Border'*/: break; + case 'font' /*case 'Font'*/: + if(Rn[0].slice(-2) === "/>") break; + else if(Rn[1]==="/") ss += str.slice(fidx, Rn.index); + else fidx = Rn.index + Rn[0].length; + break; + case 'interior' /*case 'Interior'*/: + if(!opts.cellStyles) break; + stag.Interior = xlml_parsexmltag(Rn[0]); + break; + case 'protection' /*case 'Protection'*/: break; + + case 'author' /*case 'Author'*/: + case 'title' /*case 'Title'*/: + case 'description' /*case 'Description'*/: + case 'created' /*case 'Created'*/: + case 'keywords' /*case 'Keywords'*/: + case 'subject' /*case 'Subject'*/: + case 'category' /*case 'Category'*/: + case 'company' /*case 'Company'*/: + case 'lastauthor' /*case 'LastAuthor'*/: + case 'lastsaved' /*case 'LastSaved'*/: + case 'lastprinted' /*case 'LastPrinted'*/: + case 'version' /*case 'Version'*/: + case 'revision' /*case 'Revision'*/: + case 'totaltime' /*case 'TotalTime'*/: + case 'hyperlinkbase' /*case 'HyperlinkBase'*/: + case 'manager' /*case 'Manager'*/: + case 'contentstatus' /*case 'ContentStatus'*/: + case 'identifier' /*case 'Identifier'*/: + case 'language' /*case 'Language'*/: + case 'appname' /*case 'AppName'*/: + if(Rn[0].slice(-2) === "/>") break; + else if(Rn[1]==="/") xlml_set_prop(Props, raw_Rn3, str.slice(pidx, Rn.index)); + else pidx = Rn.index + Rn[0].length; + break; + case 'paragraphs' /*case 'Paragraphs'*/: break; + + case 'styles' /*case 'Styles'*/: + case 'workbook' /*case 'Workbook'*/: + if(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw new Error("Bad state: "+tmp.join("|"));} + else state.push([Rn[3], false]); + break; + + case 'comment' /*case 'Comment'*/: + if(Rn[1]==='/'){ + if((tmp=state.pop())[0]!==Rn[3]) throw new Error("Bad state: "+tmp.join("|")); + xlml_clean_comment(comment); + comments.push(comment); + } else { + state.push([Rn[3], false]); + tmp = xlml_parsexmltag(Rn[0]); + comment = ({a:tmp.Author}); + } + break; + + case 'autofilter' /*case 'AutoFilter'*/: + if(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw new Error("Bad state: "+tmp.join("|"));} + else if(Rn[0].charAt(Rn[0].length-2) !== '/') { + var AutoFilter = xlml_parsexmltag(Rn[0]); + cursheet['!autofilter'] = { ref:rc_to_a1(AutoFilter.Range).replace(/\$/g,"") }; + state.push([Rn[3], true]); + } + break; + + case 'name' /*case 'Name'*/: break; + + case 'datavalidation' /*case 'DataValidation'*/: + if(Rn[1]==='/'){ + if((tmp=state.pop())[0]!==Rn[3]) throw new Error("Bad state: "+tmp.join("|")); + } else { + if(Rn[0].charAt(Rn[0].length-2) !== '/') state.push([Rn[3], true]); + } + break; + + case 'pixelsperinch' /*case 'PixelsPerInch'*/: + break; + case 'componentoptions' /*case 'ComponentOptions'*/: + case 'documentproperties' /*case 'DocumentProperties'*/: + case 'customdocumentproperties' /*case 'CustomDocumentProperties'*/: + case 'officedocumentsettings' /*case 'OfficeDocumentSettings'*/: + case 'pivottable' /*case 'PivotTable'*/: + case 'pivotcache' /*case 'PivotCache'*/: + case 'names' /*case 'Names'*/: + case 'mapinfo' /*case 'MapInfo'*/: + case 'pagebreaks' /*case 'PageBreaks'*/: + case 'querytable' /*case 'QueryTable'*/: + case 'sorting' /*case 'Sorting'*/: + case 'schema' /*case 'Schema'*/: //case 'data' /*case 'data'*/: + case 'conditionalformatting' /*case 'ConditionalFormatting'*/: + case 'smarttagtype' /*case 'SmartTagType'*/: + case 'smarttags' /*case 'SmartTags'*/: + case 'excelworkbook' /*case 'ExcelWorkbook'*/: + case 'workbookoptions' /*case 'WorkbookOptions'*/: + case 'worksheetoptions' /*case 'WorksheetOptions'*/: + if(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw new Error("Bad state: "+tmp.join("|"));} + else if(Rn[0].charAt(Rn[0].length-2) !== '/') state.push([Rn[3], true]); + break; + + case 'null' /*case 'Null'*/: break; + + default: + /* FODS file root is */ + if(state.length == 0 && Rn[3] == "document") return parse_fods(str, opts); + /* UOS file root is */ + if(state.length == 0 && Rn[3] == "uof"/*"UOF"*/) return parse_fods(str, opts); + + var seen = true; + switch(state[state.length-1][0]) { + /* OfficeDocumentSettings */ + case 'officedocumentsettings' /*case 'OfficeDocumentSettings'*/: switch(Rn[3]) { + case 'allowpng' /*case 'AllowPNG'*/: break; + case 'removepersonalinformation' /*case 'RemovePersonalInformation'*/: break; + case 'downloadcomponents' /*case 'DownloadComponents'*/: break; + case 'locationofcomponents' /*case 'LocationOfComponents'*/: break; + case 'colors' /*case 'Colors'*/: break; + case 'color' /*case 'Color'*/: break; + case 'index' /*case 'Index'*/: break; + case 'rgb' /*case 'RGB'*/: break; + case 'targetscreensize' /*case 'TargetScreenSize'*/: break; + case 'readonlyrecommended' /*case 'ReadOnlyRecommended'*/: break; + default: seen = false; + } break; + + /* ComponentOptions */ + case 'componentoptions' /*case 'ComponentOptions'*/: switch(Rn[3]) { + case 'toolbar' /*case 'Toolbar'*/: break; + case 'hideofficelogo' /*case 'HideOfficeLogo'*/: break; + case 'spreadsheetautofit' /*case 'SpreadsheetAutoFit'*/: break; + case 'label' /*case 'Label'*/: break; + case 'caption' /*case 'Caption'*/: break; + case 'maxheight' /*case 'MaxHeight'*/: break; + case 'maxwidth' /*case 'MaxWidth'*/: break; + case 'nextsheetnumber' /*case 'NextSheetNumber'*/: break; + default: seen = false; + } break; + + /* ExcelWorkbook */ + case 'excelworkbook' /*case 'ExcelWorkbook'*/: switch(Rn[3]) { + case 'date1904' /*case 'Date1904'*/: +Workbook.WBProps.date1904 = true; + break; + case 'windowheight' /*case 'WindowHeight'*/: break; + case 'windowwidth' /*case 'WindowWidth'*/: break; + case 'windowtopx' /*case 'WindowTopX'*/: break; + case 'windowtopy' /*case 'WindowTopY'*/: break; + case 'tabratio' /*case 'TabRatio'*/: break; + case 'protectstructure' /*case 'ProtectStructure'*/: break; + case 'protectwindow' /*case 'ProtectWindow'*/: break; + case 'protectwindows' /*case 'ProtectWindows'*/: break; + case 'activesheet' /*case 'ActiveSheet'*/: break; + case 'displayinknotes' /*case 'DisplayInkNotes'*/: break; + case 'firstvisiblesheet' /*case 'FirstVisibleSheet'*/: break; + case 'supbook' /*case 'SupBook'*/: break; + case 'sheetname' /*case 'SheetName'*/: break; + case 'sheetindex' /*case 'SheetIndex'*/: break; + case 'sheetindexfirst' /*case 'SheetIndexFirst'*/: break; + case 'sheetindexlast' /*case 'SheetIndexLast'*/: break; + case 'dll' /*case 'Dll'*/: break; + case 'acceptlabelsinformulas' /*case 'AcceptLabelsInFormulas'*/: break; + case 'donotsavelinkvalues' /*case 'DoNotSaveLinkValues'*/: break; + case 'iteration' /*case 'Iteration'*/: break; + case 'maxiterations' /*case 'MaxIterations'*/: break; + case 'maxchange' /*case 'MaxChange'*/: break; + case 'path' /*case 'Path'*/: break; + case 'xct' /*case 'Xct'*/: break; + case 'count' /*case 'Count'*/: break; + case 'selectedsheets' /*case 'SelectedSheets'*/: break; + case 'calculation' /*case 'Calculation'*/: break; + case 'uncalced' /*case 'Uncalced'*/: break; + case 'startupprompt' /*case 'StartupPrompt'*/: break; + case 'crn' /*case 'Crn'*/: break; + case 'externname' /*case 'ExternName'*/: break; + case 'formula' /*case 'Formula'*/: break; + case 'colfirst' /*case 'ColFirst'*/: break; + case 'collast' /*case 'ColLast'*/: break; + case 'wantadvise' /*case 'WantAdvise'*/: break; + case 'boolean' /*case 'Boolean'*/: break; + case 'error' /*case 'Error'*/: break; + case 'text' /*case 'Text'*/: break; + case 'ole' /*case 'OLE'*/: break; + case 'noautorecover' /*case 'NoAutoRecover'*/: break; + case 'publishobjects' /*case 'PublishObjects'*/: break; + case 'donotcalculatebeforesave' /*case 'DoNotCalculateBeforeSave'*/: break; + case 'number' /*case 'Number'*/: break; + case 'refmoder1c1' /*case 'RefModeR1C1'*/: break; + case 'embedsavesmarttags' /*case 'EmbedSaveSmartTags'*/: break; + default: seen = false; + } break; + + /* WorkbookOptions */ + case 'workbookoptions' /*case 'WorkbookOptions'*/: switch(Rn[3]) { + case 'owcversion' /*case 'OWCVersion'*/: break; + case 'height' /*case 'Height'*/: break; + case 'width' /*case 'Width'*/: break; + default: seen = false; + } break; + + /* WorksheetOptions */ + case 'worksheetoptions' /*case 'WorksheetOptions'*/: switch(Rn[3]) { + case 'visible' /*case 'Visible'*/: + if(Rn[0].slice(-2) === "/>"){/* empty */} + else if(Rn[1]==="/") switch(str.slice(pidx, Rn.index)) { + case "SheetHidden": wsprops.Hidden = 1; break; + case "SheetVeryHidden": wsprops.Hidden = 2; break; + } + else pidx = Rn.index + Rn[0].length; + break; + case 'header' /*case 'Header'*/: + if(!cursheet['!margins']) default_margins(cursheet['!margins']={}, 'xlml'); + if(!isNaN(+parsexmltag(Rn[0]).Margin)) cursheet['!margins'].header = +parsexmltag(Rn[0]).Margin; + break; + case 'footer' /*case 'Footer'*/: + if(!cursheet['!margins']) default_margins(cursheet['!margins']={}, 'xlml'); + if(!isNaN(+parsexmltag(Rn[0]).Margin)) cursheet['!margins'].footer = +parsexmltag(Rn[0]).Margin; + break; + case 'pagemargins' /*case 'PageMargins'*/: + var pagemargins = parsexmltag(Rn[0]); + if(!cursheet['!margins']) default_margins(cursheet['!margins']={},'xlml'); + if(!isNaN(+pagemargins.Top)) cursheet['!margins'].top = +pagemargins.Top; + if(!isNaN(+pagemargins.Left)) cursheet['!margins'].left = +pagemargins.Left; + if(!isNaN(+pagemargins.Right)) cursheet['!margins'].right = +pagemargins.Right; + if(!isNaN(+pagemargins.Bottom)) cursheet['!margins'].bottom = +pagemargins.Bottom; + break; + case 'displayrighttoleft' /*case 'DisplayRightToLeft'*/: + if(!Workbook.Views) Workbook.Views = []; + if(!Workbook.Views[0]) Workbook.Views[0] = {}; + Workbook.Views[0].RTL = true; + break; + + case 'freezepanes' /*case 'FreezePanes'*/: break; + case 'frozennosplit' /*case 'FrozenNoSplit'*/: break; + + case 'splithorizontal' /*case 'SplitHorizontal'*/: + case 'splitvertical' /*case 'SplitVertical'*/: + break; + + case 'donotdisplaygridlines' /*case 'DoNotDisplayGridlines'*/: + break; + + case 'activerow' /*case 'ActiveRow'*/: break; + case 'activecol' /*case 'ActiveCol'*/: break; + case 'toprowbottompane' /*case 'TopRowBottomPane'*/: break; + case 'leftcolumnrightpane' /*case 'LeftColumnRightPane'*/: break; + + case 'unsynced' /*case 'Unsynced'*/: break; + case 'print' /*case 'Print'*/: break; + case 'printerrors' /*case 'PrintErrors'*/: break; + case 'panes' /*case 'Panes'*/: break; + case 'scale' /*case 'Scale'*/: break; + case 'pane' /*case 'Pane'*/: break; + case 'number' /*case 'Number'*/: break; + case 'layout' /*case 'Layout'*/: break; + case 'pagesetup' /*case 'PageSetup'*/: break; + case 'selected' /*case 'Selected'*/: break; + case 'protectobjects' /*case 'ProtectObjects'*/: break; + case 'enableselection' /*case 'EnableSelection'*/: break; + case 'protectscenarios' /*case 'ProtectScenarios'*/: break; + case 'validprinterinfo' /*case 'ValidPrinterInfo'*/: break; + case 'horizontalresolution' /*case 'HorizontalResolution'*/: break; + case 'verticalresolution' /*case 'VerticalResolution'*/: break; + case 'numberofcopies' /*case 'NumberofCopies'*/: break; + case 'activepane' /*case 'ActivePane'*/: break; + case 'toprowvisible' /*case 'TopRowVisible'*/: break; + case 'leftcolumnvisible' /*case 'LeftColumnVisible'*/: break; + case 'fittopage' /*case 'FitToPage'*/: break; + case 'rangeselection' /*case 'RangeSelection'*/: break; + case 'papersizeindex' /*case 'PaperSizeIndex'*/: break; + case 'pagelayoutzoom' /*case 'PageLayoutZoom'*/: break; + case 'pagebreakzoom' /*case 'PageBreakZoom'*/: break; + case 'filteron' /*case 'FilterOn'*/: break; + case 'fitwidth' /*case 'FitWidth'*/: break; + case 'fitheight' /*case 'FitHeight'*/: break; + case 'commentslayout' /*case 'CommentsLayout'*/: break; + case 'zoom' /*case 'Zoom'*/: break; + case 'lefttoright' /*case 'LeftToRight'*/: break; + case 'gridlines' /*case 'Gridlines'*/: break; + case 'allowsort' /*case 'AllowSort'*/: break; + case 'allowfilter' /*case 'AllowFilter'*/: break; + case 'allowinsertrows' /*case 'AllowInsertRows'*/: break; + case 'allowdeleterows' /*case 'AllowDeleteRows'*/: break; + case 'allowinsertcols' /*case 'AllowInsertCols'*/: break; + case 'allowdeletecols' /*case 'AllowDeleteCols'*/: break; + case 'allowinserthyperlinks' /*case 'AllowInsertHyperlinks'*/: break; + case 'allowformatcells' /*case 'AllowFormatCells'*/: break; + case 'allowsizecols' /*case 'AllowSizeCols'*/: break; + case 'allowsizerows' /*case 'AllowSizeRows'*/: break; + case 'nosummaryrowsbelowdetail' /*case 'NoSummaryRowsBelowDetail'*/: + if(!cursheet["!outline"]) cursheet["!outline"] = {}; + cursheet["!outline"].above = true; + break; + case 'tabcolorindex' /*case 'TabColorIndex'*/: break; + case 'donotdisplayheadings' /*case 'DoNotDisplayHeadings'*/: break; + case 'showpagelayoutzoom' /*case 'ShowPageLayoutZoom'*/: break; + case 'nosummarycolumnsrightdetail' /*case 'NoSummaryColumnsRightDetail'*/: + if(!cursheet["!outline"]) cursheet["!outline"] = {}; + cursheet["!outline"].left = true; + break; + case 'blackandwhite' /*case 'BlackAndWhite'*/: break; + case 'donotdisplayzeros' /*case 'DoNotDisplayZeros'*/: break; + case 'displaypagebreak' /*case 'DisplayPageBreak'*/: break; + case 'rowcolheadings' /*case 'RowColHeadings'*/: break; + case 'donotdisplayoutline' /*case 'DoNotDisplayOutline'*/: break; + case 'noorientation' /*case 'NoOrientation'*/: break; + case 'allowusepivottables' /*case 'AllowUsePivotTables'*/: break; + case 'zeroheight' /*case 'ZeroHeight'*/: break; + case 'viewablerange' /*case 'ViewableRange'*/: break; + case 'selection' /*case 'Selection'*/: break; + case 'protectcontents' /*case 'ProtectContents'*/: break; + default: seen = false; + } break; + + /* PivotTable */ + case 'pivottable' /*case 'PivotTable'*/: case 'pivotcache' /*case 'PivotCache'*/: switch(Rn[3]) { + case 'immediateitemsondrop' /*case 'ImmediateItemsOnDrop'*/: break; + case 'showpagemultipleitemlabel' /*case 'ShowPageMultipleItemLabel'*/: break; + case 'compactrowindent' /*case 'CompactRowIndent'*/: break; + case 'location' /*case 'Location'*/: break; + case 'pivotfield' /*case 'PivotField'*/: break; + case 'orientation' /*case 'Orientation'*/: break; + case 'layoutform' /*case 'LayoutForm'*/: break; + case 'layoutsubtotallocation' /*case 'LayoutSubtotalLocation'*/: break; + case 'layoutcompactrow' /*case 'LayoutCompactRow'*/: break; + case 'position' /*case 'Position'*/: break; + case 'pivotitem' /*case 'PivotItem'*/: break; + case 'datatype' /*case 'DataType'*/: break; + case 'datafield' /*case 'DataField'*/: break; + case 'sourcename' /*case 'SourceName'*/: break; + case 'parentfield' /*case 'ParentField'*/: break; + case 'ptlineitems' /*case 'PTLineItems'*/: break; + case 'ptlineitem' /*case 'PTLineItem'*/: break; + case 'countofsameitems' /*case 'CountOfSameItems'*/: break; + case 'item' /*case 'Item'*/: break; + case 'itemtype' /*case 'ItemType'*/: break; + case 'ptsource' /*case 'PTSource'*/: break; + case 'cacheindex' /*case 'CacheIndex'*/: break; + case 'consolidationreference' /*case 'ConsolidationReference'*/: break; + case 'filename' /*case 'FileName'*/: break; + case 'reference' /*case 'Reference'*/: break; + case 'nocolumngrand' /*case 'NoColumnGrand'*/: break; + case 'norowgrand' /*case 'NoRowGrand'*/: break; + case 'blanklineafteritems' /*case 'BlankLineAfterItems'*/: break; + case 'hidden' /*case 'Hidden'*/: break; + case 'subtotal' /*case 'Subtotal'*/: break; + case 'basefield' /*case 'BaseField'*/: break; + case 'mapchilditems' /*case 'MapChildItems'*/: break; + case 'function' /*case 'Function'*/: break; + case 'refreshonfileopen' /*case 'RefreshOnFileOpen'*/: break; + case 'printsettitles' /*case 'PrintSetTitles'*/: break; + case 'mergelabels' /*case 'MergeLabels'*/: break; + case 'defaultversion' /*case 'DefaultVersion'*/: break; + case 'refreshname' /*case 'RefreshName'*/: break; + case 'refreshdate' /*case 'RefreshDate'*/: break; + case 'refreshdatecopy' /*case 'RefreshDateCopy'*/: break; + case 'versionlastrefresh' /*case 'VersionLastRefresh'*/: break; + case 'versionlastupdate' /*case 'VersionLastUpdate'*/: break; + case 'versionupdateablemin' /*case 'VersionUpdateableMin'*/: break; + case 'versionrefreshablemin' /*case 'VersionRefreshableMin'*/: break; + case 'calculation' /*case 'Calculation'*/: break; + default: seen = false; + } break; + + /* PageBreaks */ + case 'pagebreaks' /*case 'PageBreaks'*/: switch(Rn[3]) { + case 'colbreaks' /*case 'ColBreaks'*/: break; + case 'colbreak' /*case 'ColBreak'*/: break; + case 'rowbreaks' /*case 'RowBreaks'*/: break; + case 'rowbreak' /*case 'RowBreak'*/: break; + case 'colstart' /*case 'ColStart'*/: break; + case 'colend' /*case 'ColEnd'*/: break; + case 'rowend' /*case 'RowEnd'*/: break; + default: seen = false; + } break; + + /* AutoFilter */ + case 'autofilter' /*case 'AutoFilter'*/: switch(Rn[3]) { + case 'autofiltercolumn' /*case 'AutoFilterColumn'*/: break; + case 'autofiltercondition' /*case 'AutoFilterCondition'*/: break; + case 'autofilterand' /*case 'AutoFilterAnd'*/: break; + case 'autofilteror' /*case 'AutoFilterOr'*/: break; + default: seen = false; + } break; + + /* QueryTable */ + case 'querytable' /*case 'QueryTable'*/: switch(Rn[3]) { + case 'id' /*case 'Id'*/: break; + case 'autoformatfont' /*case 'AutoFormatFont'*/: break; + case 'autoformatpattern' /*case 'AutoFormatPattern'*/: break; + case 'querysource' /*case 'QuerySource'*/: break; + case 'querytype' /*case 'QueryType'*/: break; + case 'enableredirections' /*case 'EnableRedirections'*/: break; + case 'refreshedinxl9' /*case 'RefreshedInXl9'*/: break; + case 'urlstring' /*case 'URLString'*/: break; + case 'htmltables' /*case 'HTMLTables'*/: break; + case 'connection' /*case 'Connection'*/: break; + case 'commandtext' /*case 'CommandText'*/: break; + case 'refreshinfo' /*case 'RefreshInfo'*/: break; + case 'notitles' /*case 'NoTitles'*/: break; + case 'nextid' /*case 'NextId'*/: break; + case 'columninfo' /*case 'ColumnInfo'*/: break; + case 'overwritecells' /*case 'OverwriteCells'*/: break; + case 'donotpromptforfile' /*case 'DoNotPromptForFile'*/: break; + case 'textwizardsettings' /*case 'TextWizardSettings'*/: break; + case 'source' /*case 'Source'*/: break; + case 'number' /*case 'Number'*/: break; + case 'decimal' /*case 'Decimal'*/: break; + case 'thousandseparator' /*case 'ThousandSeparator'*/: break; + case 'trailingminusnumbers' /*case 'TrailingMinusNumbers'*/: break; + case 'formatsettings' /*case 'FormatSettings'*/: break; + case 'fieldtype' /*case 'FieldType'*/: break; + case 'delimiters' /*case 'Delimiters'*/: break; + case 'tab' /*case 'Tab'*/: break; + case 'comma' /*case 'Comma'*/: break; + case 'autoformatname' /*case 'AutoFormatName'*/: break; + case 'versionlastedit' /*case 'VersionLastEdit'*/: break; + case 'versionlastrefresh' /*case 'VersionLastRefresh'*/: break; + default: seen = false; + } break; + + case 'datavalidation' /*case 'DataValidation'*/: + switch(Rn[3]) { + case 'range' /*case 'Range'*/: break; + + case 'type' /*case 'Type'*/: break; + case 'min' /*case 'Min'*/: break; + case 'max' /*case 'Max'*/: break; + case 'sort' /*case 'Sort'*/: break; + case 'descending' /*case 'Descending'*/: break; + case 'order' /*case 'Order'*/: break; + case 'casesensitive' /*case 'CaseSensitive'*/: break; + case 'value' /*case 'Value'*/: break; + case 'errorstyle' /*case 'ErrorStyle'*/: break; + case 'errormessage' /*case 'ErrorMessage'*/: break; + case 'errortitle' /*case 'ErrorTitle'*/: break; + case 'inputmessage' /*case 'InputMessage'*/: break; + case 'inputtitle' /*case 'InputTitle'*/: break; + case 'combohide' /*case 'ComboHide'*/: break; + case 'inputhide' /*case 'InputHide'*/: break; + case 'condition' /*case 'Condition'*/: break; + case 'qualifier' /*case 'Qualifier'*/: break; + case 'useblank' /*case 'UseBlank'*/: break; + case 'value1' /*case 'Value1'*/: break; + case 'value2' /*case 'Value2'*/: break; + case 'format' /*case 'Format'*/: break; + + case 'cellrangelist' /*case 'CellRangeList'*/: break; + default: seen = false; + } break; + + case 'sorting' /*case 'Sorting'*/: + case 'conditionalformatting' /*case 'ConditionalFormatting'*/: + switch(Rn[3]) { + case 'range' /*case 'Range'*/: break; + case 'type' /*case 'Type'*/: break; + case 'min' /*case 'Min'*/: break; + case 'max' /*case 'Max'*/: break; + case 'sort' /*case 'Sort'*/: break; + case 'descending' /*case 'Descending'*/: break; + case 'order' /*case 'Order'*/: break; + case 'casesensitive' /*case 'CaseSensitive'*/: break; + case 'value' /*case 'Value'*/: break; + case 'errorstyle' /*case 'ErrorStyle'*/: break; + case 'errormessage' /*case 'ErrorMessage'*/: break; + case 'errortitle' /*case 'ErrorTitle'*/: break; + case 'cellrangelist' /*case 'CellRangeList'*/: break; + case 'inputmessage' /*case 'InputMessage'*/: break; + case 'inputtitle' /*case 'InputTitle'*/: break; + case 'combohide' /*case 'ComboHide'*/: break; + case 'inputhide' /*case 'InputHide'*/: break; + case 'condition' /*case 'Condition'*/: break; + case 'qualifier' /*case 'Qualifier'*/: break; + case 'useblank' /*case 'UseBlank'*/: break; + case 'value1' /*case 'Value1'*/: break; + case 'value2' /*case 'Value2'*/: break; + case 'format' /*case 'Format'*/: break; + default: seen = false; + } break; + + /* MapInfo (schema) */ + case 'mapinfo' /*case 'MapInfo'*/: case 'schema' /*case 'Schema'*/: case 'data' /*case 'data'*/: switch(Rn[3]) { + case 'map' /*case 'Map'*/: break; + case 'entry' /*case 'Entry'*/: break; + case 'range' /*case 'Range'*/: break; + case 'xpath' /*case 'XPath'*/: break; + case 'field' /*case 'Field'*/: break; + case 'xsdtype' /*case 'XSDType'*/: break; + case 'filteron' /*case 'FilterOn'*/: break; + case 'aggregate' /*case 'Aggregate'*/: break; + case 'elementtype' /*case 'ElementType'*/: break; + case 'attributetype' /*case 'AttributeType'*/: break; + /* These are from xsd (XML Schema Definition) */ + case 'schema' /*case 'schema'*/: + case 'element' /*case 'element'*/: + case 'complextype' /*case 'complexType'*/: + case 'datatype' /*case 'datatype'*/: + case 'all' /*case 'all'*/: + case 'attribute' /*case 'attribute'*/: + case 'extends' /*case 'extends'*/: break; + + case 'row' /*case 'row'*/: break; + default: seen = false; + } break; + + /* SmartTags (can be anything) */ + case 'smarttags' /*case 'SmartTags'*/: break; + + default: seen = false; break; + } + if(seen) break; + /* CustomDocumentProperties */ + if(Rn[3].match(/!\[CDATA/)) break; + if(!state[state.length-1][1]) throw 'Unrecognized tag: ' + Rn[3] + "|" + state.join("|"); + if(state[state.length-1][0]===/*'CustomDocumentProperties'*/'customdocumentproperties') { + if(Rn[0].slice(-2) === "/>") break; + else if(Rn[1]==="/") xlml_set_custprop(Custprops, raw_Rn3, cp, str.slice(pidx, Rn.index)); + else { cp = Rn; pidx = Rn.index + Rn[0].length; } + break; + } + if(opts.WTF) throw 'Unrecognized tag: ' + Rn[3] + "|" + state.join("|"); + } + var out = ({}); + if(!opts.bookSheets && !opts.bookProps) out.Sheets = sheets; + out.SheetNames = sheetnames; + out.Workbook = Workbook; + out.SSF = dup(table_fmt); + out.Props = Props; + out.Custprops = Custprops; + return out; +} + +function parse_xlml(data, opts) { + fix_read_opts(opts=opts||{}); + switch(opts.type||"base64") { + case "base64": return parse_xlml_xml(Base64_decode(data), opts); + case "binary": case "buffer": case "file": return parse_xlml_xml(data, opts); + case "array": return parse_xlml_xml(a2s(data), opts); + } +} + +/* TODO */ +function write_props_xlml(wb, opts) { + var o = []; + /* DocumentProperties */ + if(wb.Props) o.push(xlml_write_docprops(wb.Props, opts)); + /* CustomDocumentProperties */ + if(wb.Custprops) o.push(xlml_write_custprops(wb.Props, wb.Custprops, opts)); + return o.join(""); +} +/* TODO */ +function write_wb_xlml() { + /* OfficeDocumentSettings */ + /* ExcelWorkbook */ + return ""; +} +/* TODO */ +function write_sty_xlml(wb, opts) { + /* Styles */ + var styles = ['']; + opts.cellXfs.forEach(function(xf, id) { + var payload = []; + payload.push(writextag('NumberFormat', null, {"ss:Format": escapexml(table_fmt[xf.numFmtId])})); + + var o = {"ss:ID": "s" + (21+id)}; + styles.push(writextag('Style', payload.join(""), o)); + }); + return writextag("Styles", styles.join("")); +} +function write_name_xlml(n) { return writextag("NamedRange", null, {"ss:Name": n.Name, "ss:RefersTo":"=" + a1_to_rc(n.Ref, {r:0,c:0})}); } +function write_names_xlml(wb) { + if(!((wb||{}).Workbook||{}).Names) return ""; +var names = wb.Workbook.Names; + var out = []; + for(var i = 0; i < names.length; ++i) { + var n = names[i]; + if(n.Sheet != null) continue; + if(n.Name.match(/^_xlfn\./)) continue; + out.push(write_name_xlml(n)); + } + return writextag("Names", out.join("")); +} +function write_ws_xlml_names(ws, opts, idx, wb) { + if(!ws) return ""; + if(!((wb||{}).Workbook||{}).Names) return ""; +var names = wb.Workbook.Names; + var out = []; + for(var i = 0; i < names.length; ++i) { + var n = names[i]; + if(n.Sheet != idx) continue; + /*switch(n.Name) { + case "_": continue; + }*/ + if(n.Name.match(/^_xlfn\./)) continue; + out.push(write_name_xlml(n)); + } + return out.join(""); +} +/* WorksheetOptions */ +function write_ws_xlml_wsopts(ws, opts, idx, wb) { + if(!ws) return ""; + var o = []; + /* NOTE: spec technically allows any order, but stick with implied order */ + + /* FitToPage */ + /* DoNotDisplayColHeaders */ + /* DoNotDisplayRowHeaders */ + /* ViewableRange */ + /* Selection */ + /* GridlineColor */ + /* Name */ + /* ExcelWorksheetType */ + /* IntlMacro */ + /* Unsynced */ + /* Selected */ + /* CodeName */ + + if(ws['!margins']) { + o.push(""); + if(ws['!margins'].header) o.push(writextag("Header", null, {'x:Margin':ws['!margins'].header})); + if(ws['!margins'].footer) o.push(writextag("Footer", null, {'x:Margin':ws['!margins'].footer})); + o.push(writextag("PageMargins", null, { + 'x:Bottom': ws['!margins'].bottom || "0.75", + 'x:Left': ws['!margins'].left || "0.7", + 'x:Right': ws['!margins'].right || "0.7", + 'x:Top': ws['!margins'].top || "0.75" + })); + o.push(""); + } + + /* PageSetup */ + /* DisplayPageBreak */ + /* TransitionExpressionEvaluation */ + /* TransitionFormulaEntry */ + /* Print */ + /* Zoom */ + /* PageLayoutZoom */ + /* PageBreakZoom */ + /* ShowPageBreakZoom */ + /* DefaultRowHeight */ + /* DefaultColumnWidth */ + /* StandardWidth */ + + if(wb && wb.Workbook && wb.Workbook.Sheets && wb.Workbook.Sheets[idx]) { + /* Visible */ + if(wb.Workbook.Sheets[idx].Hidden) o.push(writextag("Visible", (wb.Workbook.Sheets[idx].Hidden == 1 ? "SheetHidden" : "SheetVeryHidden"), {})); + else { + /* Selected */ + for(var i = 0; i < idx; ++i) if(wb.Workbook.Sheets[i] && !wb.Workbook.Sheets[i].Hidden) break; + if(i == idx) o.push(""); + } + } + + /* LeftColumnVisible */ + + if(((((wb||{}).Workbook||{}).Views||[])[0]||{}).RTL) o.push(""); + + /* GridlineColorIndex */ + /* DisplayFormulas */ + /* DoNotDisplayGridlines */ + /* DoNotDisplayHeadings */ + /* DoNotDisplayOutline */ + /* ApplyAutomaticOutlineStyles */ + /* NoSummaryRowsBelowDetail */ + /* NoSummaryColumnsRightDetail */ + /* DoNotDisplayZeros */ + /* ActiveRow */ + /* ActiveColumn */ + /* FilterOn */ + /* RangeSelection */ + /* TopRowVisible */ + /* TopRowBottomPane */ + /* LeftColumnRightPane */ + /* ActivePane */ + /* SplitHorizontal */ + /* SplitVertical */ + /* FreezePanes */ + /* FrozenNoSplit */ + /* TabColorIndex */ + /* Panes */ + + /* NOTE: Password not supported in XLML Format */ + if(ws['!protect']) { + o.push(writetag("ProtectContents", "True")); + if(ws['!protect'].objects) o.push(writetag("ProtectObjects", "True")); + if(ws['!protect'].scenarios) o.push(writetag("ProtectScenarios", "True")); + if(ws['!protect'].selectLockedCells != null && !ws['!protect'].selectLockedCells) o.push(writetag("EnableSelection", "NoSelection")); + else if(ws['!protect'].selectUnlockedCells != null && !ws['!protect'].selectUnlockedCells) o.push(writetag("EnableSelection", "UnlockedCells")); + [ + [ "formatCells", "AllowFormatCells" ], + [ "formatColumns", "AllowSizeCols" ], + [ "formatRows", "AllowSizeRows" ], + [ "insertColumns", "AllowInsertCols" ], + [ "insertRows", "AllowInsertRows" ], + [ "insertHyperlinks", "AllowInsertHyperlinks" ], + [ "deleteColumns", "AllowDeleteCols" ], + [ "deleteRows", "AllowDeleteRows" ], + [ "sort", "AllowSort" ], + [ "autoFilter", "AllowFilter" ], + [ "pivotTables", "AllowUsePivotTables" ] + ].forEach(function(x) { if(ws['!protect'][x[0]]) o.push("<"+x[1]+"/>"); }); + } + + if(o.length == 0) return ""; + return writextag("WorksheetOptions", o.join(""), {xmlns:XLMLNS.x}); +} +function write_ws_xlml_comment(comments) { + return comments.map(function(c) { + // TODO: formatted text + var t = xlml_unfixstr(c.t||""); + var d =writextag("ss:Data", t, {"xmlns":"http://www.w3.org/TR/REC-html40"}); + return writextag("Comment", d, {"ss:Author":c.a}); + }).join(""); +} +function write_ws_xlml_cell(cell, ref, ws, opts, idx, wb, addr){ + if(!cell || (cell.v == undefined && cell.f == undefined)) return ""; + + var attr = {}; + if(cell.f) attr["ss:Formula"] = "=" + escapexml(a1_to_rc(cell.f, addr)); + if(cell.F && cell.F.slice(0, ref.length) == ref) { + var end = decode_cell(cell.F.slice(ref.length + 1)); + attr["ss:ArrayRange"] = "RC:R" + (end.r == addr.r ? "" : "[" + (end.r - addr.r) + "]") + "C" + (end.c == addr.c ? "" : "[" + (end.c - addr.c) + "]"); + } + + if(cell.l && cell.l.Target) { + attr["ss:HRef"] = escapexml(cell.l.Target); + if(cell.l.Tooltip) attr["x:HRefScreenTip"] = escapexml(cell.l.Tooltip); + } + + if(ws['!merges']) { + var marr = ws['!merges']; + for(var mi = 0; mi != marr.length; ++mi) { + if(marr[mi].s.c != addr.c || marr[mi].s.r != addr.r) continue; + if(marr[mi].e.c > marr[mi].s.c) attr['ss:MergeAcross'] = marr[mi].e.c - marr[mi].s.c; + if(marr[mi].e.r > marr[mi].s.r) attr['ss:MergeDown'] = marr[mi].e.r - marr[mi].s.r; + } + } + + var t = "", p = ""; + switch(cell.t) { + case 'z': if(!opts.sheetStubs) return ""; break; + case 'n': t = 'Number'; p = String(cell.v); break; + case 'b': t = 'Boolean'; p = (cell.v ? "1" : "0"); break; + case 'e': t = 'Error'; p = BErr[cell.v]; break; + case 'd': t = 'DateTime'; p = new Date(cell.v).toISOString(); if(cell.z == null) cell.z = cell.z || table_fmt[14]; break; + case 's': t = 'String'; p = escapexlml(cell.v||""); break; + } + /* TODO: cell style */ + var os = get_cell_style(opts.cellXfs, cell, opts); + attr["ss:StyleID"] = "s" + (21+os); + attr["ss:Index"] = addr.c + 1; + var _v = (cell.v != null ? p : ""); + var m = cell.t == 'z' ? "" : ('' + _v + ''); + + if((cell.c||[]).length > 0) m += write_ws_xlml_comment(cell.c); + + return writextag("Cell", m, attr); +} +function write_ws_xlml_row(R, row) { + var o = ''; +} +/* TODO */ +function write_ws_xlml_table(ws, opts, idx, wb) { + if(!ws['!ref']) return ""; + var range = safe_decode_range(ws['!ref']); + var marr = ws['!merges'] || [], mi = 0; + var o = []; + if(ws['!cols']) ws['!cols'].forEach(function(n, i) { + process_col(n); + var w = !!n.width; + var p = col_obj_w(i, n); + var k = {"ss:Index":i+1}; + if(w) k['ss:Width'] = width2px(p.width); + if(n.hidden) k['ss:Hidden']="1"; + o.push(writextag("Column",null,k)); + }); + var dense = Array.isArray(ws); + for(var R = range.s.r; R <= range.e.r; ++R) { + var row = [write_ws_xlml_row(R, (ws['!rows']||[])[R])]; + for(var C = range.s.c; C <= range.e.c; ++C) { + var skip = false; + for(mi = 0; mi != marr.length; ++mi) { + if(marr[mi].s.c > C) continue; + if(marr[mi].s.r > R) continue; + if(marr[mi].e.c < C) continue; + if(marr[mi].e.r < R) continue; + if(marr[mi].s.c != C || marr[mi].s.r != R) skip = true; + break; + } + if(skip) continue; + var addr = {r:R,c:C}; + var ref = encode_cell(addr), cell = dense ? (ws[R]||[])[C] : ws[ref]; + row.push(write_ws_xlml_cell(cell, ref, ws, opts, idx, wb, addr)); + } + row.push(""); + if(row.length > 2) o.push(row.join("")); + } + return o.join(""); +} +function write_ws_xlml(idx, opts, wb) { + var o = []; + var s = wb.SheetNames[idx]; + var ws = wb.Sheets[s]; + + var t = ws ? write_ws_xlml_names(ws, opts, idx, wb) : ""; + if(t.length > 0) o.push("" + t + ""); + + /* Table */ + t = ws ? write_ws_xlml_table(ws, opts, idx, wb) : ""; + if(t.length > 0) o.push("
" + t + "
"); + + /* WorksheetOptions */ + o.push(write_ws_xlml_wsopts(ws, opts, idx, wb)); + + return o.join(""); +} +function write_xlml(wb, opts) { + if(!opts) opts = {}; + if(!wb.SSF) wb.SSF = dup(table_fmt); + if(wb.SSF) { + make_ssf(); SSF_load_table(wb.SSF); + // $FlowIgnore + opts.revssf = evert_num(wb.SSF); opts.revssf[wb.SSF[65535]] = 0; + opts.ssf = wb.SSF; + opts.cellXfs = []; + get_cell_style(opts.cellXfs, {}, {revssf:{"General":0}}); + } + var d = []; + d.push(write_props_xlml(wb, opts)); + d.push(write_wb_xlml(wb, opts)); + d.push(""); + d.push(""); + for(var i = 0; i < wb.SheetNames.length; ++i) + d.push(writextag("Worksheet", write_ws_xlml(i, opts, wb), {"ss:Name":escapexml(wb.SheetNames[i])})); + d[2] = write_sty_xlml(wb, opts); + d[3] = write_names_xlml(wb, opts); + return XML_HEADER + writextag("Workbook", d.join(""), { + 'xmlns': XLMLNS.ss, + 'xmlns:o': XLMLNS.o, + 'xmlns:x': XLMLNS.x, + 'xmlns:ss': XLMLNS.ss, + 'xmlns:dt': XLMLNS.dt, + 'xmlns:html': XLMLNS.html + }); +} +/* [MS-OLEDS] 2.3.8 CompObjStream */ +function parse_compobj(obj) { + var v = {}; + var o = obj.content; +/* [MS-OLEDS] 2.3.7 CompObjHeader -- All fields MUST be ignored */ + o.l = 28; + + v.AnsiUserType = o.read_shift(0, "lpstr-ansi"); + v.AnsiClipboardFormat = parse_ClipboardFormatOrAnsiString(o); + + if(o.length - o.l <= 4) return v; + + var m = o.read_shift(4); + if(m == 0 || m > 40) return v; + o.l-=4; v.Reserved1 = o.read_shift(0, "lpstr-ansi"); + + if(o.length - o.l <= 4) return v; + m = o.read_shift(4); + if(m !== 0x71b239f4) return v; + v.UnicodeClipboardFormat = parse_ClipboardFormatOrUnicodeString(o); + + m = o.read_shift(4); + if(m == 0 || m > 40) return v; + o.l-=4; v.Reserved2 = o.read_shift(0, "lpwstr"); +} + +/* + Continue logic for: + - 2.4.58 Continue 0x003c + - 2.4.59 ContinueBigName 0x043c + - 2.4.60 ContinueFrt 0x0812 + - 2.4.61 ContinueFrt11 0x0875 + - 2.4.62 ContinueFrt12 0x087f +*/ +var CONTINUE_RT = [ 0x003c, 0x043c, 0x0812, 0x0875, 0x087f ]; +function slurp(RecordType, R, blob, length, opts) { + var l = length; + var bufs = []; + var d = blob.slice(blob.l,blob.l+l); + if(opts && opts.enc && opts.enc.insitu && d.length > 0) switch(RecordType) { + case 0x0009: case 0x0209: case 0x0409: case 0x0809/* BOF */: case 0x002f /* FilePass */: case 0x0195 /* FileLock */: case 0x00e1 /* InterfaceHdr */: case 0x0196 /* RRDInfo */: case 0x0138 /* RRDHead */: case 0x0194 /* UsrExcl */: case 0x000a /* EOF */: + break; + case 0x0085 /* BoundSheet8 */: + break; + default: + opts.enc.insitu(d); + } + bufs.push(d); + blob.l += l; + var nextrt = __readUInt16LE(blob,blob.l), next = XLSRecordEnum[nextrt]; + var start = 0; + while(next != null && CONTINUE_RT.indexOf(nextrt) > -1) { + l = __readUInt16LE(blob,blob.l+2); + start = blob.l + 4; + if(nextrt == 0x0812 /* ContinueFrt */) start += 4; + else if(nextrt == 0x0875 || nextrt == 0x087f) { + start += 12; + } + d = blob.slice(start,blob.l+4+l); + bufs.push(d); + blob.l += 4+l; + next = (XLSRecordEnum[nextrt = __readUInt16LE(blob, blob.l)]); + } + var b = (bconcat(bufs)); + prep_blob(b, 0); + var ll = 0; b.lens = []; + for(var j = 0; j < bufs.length; ++j) { b.lens.push(ll); ll += bufs[j].length; } + if(b.length < length) throw "XLS Record 0x" + RecordType.toString(16) + " Truncated: " + b.length + " < " + length; + return R.f(b, b.length, opts); +} + +function safe_format_xf(p, opts, date1904) { + if(p.t === 'z') return; + if(!p.XF) return; + var fmtid = 0; + try { + fmtid = p.z || p.XF.numFmtId || 0; + if(opts.cellNF) p.z = table_fmt[fmtid]; + } catch(e) { if(opts.WTF) throw e; } + if(!opts || opts.cellText !== false) try { + if(p.t === 'e') { p.w = p.w || BErr[p.v]; } + else if(fmtid === 0 || fmtid == "General") { + if(p.t === 'n') { + if((p.v|0) === p.v) p.w = p.v.toString(10); + else p.w = SSF_general_num(p.v); + } + else p.w = SSF_general(p.v); + } + else p.w = SSF_format(fmtid,p.v, {date1904:!!date1904, dateNF: opts && opts.dateNF}); + } catch(e) { if(opts.WTF) throw e; } + if(opts.cellDates && fmtid && p.t == 'n' && fmt_is_date(table_fmt[fmtid] || String(fmtid))) { + var _d = SSF_parse_date_code(p.v); if(_d) { p.t = 'd'; p.v = new Date(_d.y, _d.m-1,_d.d,_d.H,_d.M,_d.S,_d.u); } + } +} + +function make_cell(val, ixfe, t) { + return ({v:val, ixfe:ixfe, t:t}); +} + +// 2.3.2 +function parse_workbook(blob, options) { + var wb = ({opts:{}}); + var Sheets = {}; + if(DENSE != null && options.dense == null) options.dense = DENSE; + var out = ((options.dense ? [] : {})); + var Directory = {}; + var range = ({}); + var last_formula = null; + var sst = ([]); + var cur_sheet = ""; + var Preamble = {}; + var lastcell, last_cell = "", cc, cmnt, rngC, rngR; + var sharedf = {}; + var arrayf = []; + var temp_val; + var country; + var XFs = []; /* XF records */ + var palette = []; + var Workbook = ({ Sheets:[], WBProps:{date1904:false}, Views:[{}] }), wsprops = {}; + var get_rgb = function getrgb(icv) { + if(icv < 8) return XLSIcv[icv]; + if(icv < 64) return palette[icv-8] || XLSIcv[icv]; + return XLSIcv[icv]; + }; + var process_cell_style = function pcs(cell, line, options) { + var xfd = line.XF.data; + if(!xfd || !xfd.patternType || !options || !options.cellStyles) return; + line.s = ({}); + line.s.patternType = xfd.patternType; + var t; + if((t = rgb2Hex(get_rgb(xfd.icvFore)))) { line.s.fgColor = {rgb:t}; } + if((t = rgb2Hex(get_rgb(xfd.icvBack)))) { line.s.bgColor = {rgb:t}; } + }; + var addcell = function addcell(cell, line, options) { + if(file_depth > 1) return; + if(options.sheetRows && cell.r >= options.sheetRows) return; + if(options.cellStyles && line.XF && line.XF.data) process_cell_style(cell, line, options); + delete line.ixfe; delete line.XF; + lastcell = cell; + last_cell = encode_cell(cell); + if(!range || !range.s || !range.e) range = {s:{r:0,c:0},e:{r:0,c:0}}; + if(cell.r < range.s.r) range.s.r = cell.r; + if(cell.c < range.s.c) range.s.c = cell.c; + if(cell.r + 1 > range.e.r) range.e.r = cell.r + 1; + if(cell.c + 1 > range.e.c) range.e.c = cell.c + 1; + if(options.cellFormula && line.f) { + for(var afi = 0; afi < arrayf.length; ++afi) { + if(arrayf[afi][0].s.c > cell.c || arrayf[afi][0].s.r > cell.r) continue; + if(arrayf[afi][0].e.c < cell.c || arrayf[afi][0].e.r < cell.r) continue; + line.F = encode_range(arrayf[afi][0]); + if(arrayf[afi][0].s.c != cell.c || arrayf[afi][0].s.r != cell.r) delete line.f; + if(line.f) line.f = "" + stringify_formula(arrayf[afi][1], range, cell, supbooks, opts); + break; + } + } + { + if(options.dense) { + if(!out[cell.r]) out[cell.r] = []; + out[cell.r][cell.c] = line; + } else out[last_cell] = line; + } + }; + var opts = ({ + enc: false, // encrypted + sbcch: 0, // cch in the preceding SupBook + snames: [], // sheetnames + sharedf: sharedf, // shared formulae by address + arrayf: arrayf, // array formulae array + rrtabid: [], // RRTabId + lastuser: "", // Last User from WriteAccess + biff: 8, // BIFF version + codepage: 0, // CP from CodePage record + winlocked: 0, // fLockWn from WinProtect + cellStyles: !!options && !!options.cellStyles, + WTF: !!options && !!options.wtf + }); + if(options.password) opts.password = options.password; + var themes; + var merges = []; + var objects = []; + var colinfo = [], rowinfo = []; + var seencol = false; + var supbooks = ([]); // 1-indexed, will hold extern names + supbooks.SheetNames = opts.snames; + supbooks.sharedf = opts.sharedf; + supbooks.arrayf = opts.arrayf; + supbooks.names = []; + supbooks.XTI = []; + var last_RT = 0; + var file_depth = 0; /* TODO: make a real stack */ + var BIFF2Fmt = 0, BIFF2FmtTable = []; + var FilterDatabases = []; /* TODO: sort out supbooks and process elsewhere */ + var last_lbl; + + /* explicit override for some broken writers */ + opts.codepage = 1200; + set_cp(1200); + var seen_codepage = false; + while(blob.l < blob.length - 1) { + var s = blob.l; + var RecordType = blob.read_shift(2); + if(RecordType === 0 && last_RT === 0x000a /* EOF */) break; + var length = (blob.l === blob.length ? 0 : blob.read_shift(2)); + var R = XLSRecordEnum[RecordType]; + //console.log(RecordType.toString(16), RecordType, R, blob.l, length, blob.length); + //if(!R) console.log(blob.slice(blob.l, blob.l + length)); + if(R && R.f) { + if(options.bookSheets) { + if(last_RT === 0x0085 /* BoundSheet8 */ && RecordType !== 0x0085 /* R.n !== 'BoundSheet8' */) break; + } + last_RT = RecordType; + if(R.r === 2 || R.r == 12) { + var rt = blob.read_shift(2); length -= 2; + if(!opts.enc && rt !== RecordType && (((rt&0xFF)<<8)|(rt>>8)) !== RecordType) throw new Error("rt mismatch: " + rt + "!=" + RecordType); + if(R.r == 12){ + blob.l += 10; length -= 10; + } // skip FRT + } + //console.error(R,blob.l,length,blob.length); + var val = ({}); + if(RecordType === 0x000a /* EOF */) val = R.f(blob, length, opts); + else val = slurp(RecordType, R, blob, length, opts); +if(file_depth == 0 && [0x0009, 0x0209, 0x0409, 0x0809].indexOf(last_RT) === -1 /* 'BOF' */) continue; + switch(RecordType) { + case 0x0022 /* Date1904 */: +wb.opts.Date1904 = Workbook.WBProps.date1904 = val; break; + case 0x0086 /* WriteProtect */: wb.opts.WriteProtect = true; break; + case 0x002f /* FilePass */: + if(!opts.enc) blob.l = 0; + opts.enc = val; + if(!options.password) throw new Error("File is password-protected"); + if(val.valid == null) throw new Error("Encryption scheme unsupported"); + if(!val.valid) throw new Error("Password is incorrect"); + break; + case 0x005c /* WriteAccess */: opts.lastuser = val; break; + case 0x0042 /* CodePage */: + var cpval = Number(val); + /* overrides based on test cases */ + switch(cpval) { + case 0x5212: cpval = 1200; break; + case 0x8000: cpval = 10000; break; + case 0x8001: cpval = 1252; break; + } + set_cp(opts.codepage = cpval); + seen_codepage = true; + break; + case 0x013d /* RRTabId */: opts.rrtabid = val; break; + case 0x0019 /* WinProtect */: opts.winlocked = val; break; + case 0x01b7 /* RefreshAll */: wb.opts["RefreshAll"] = val; break; + case 0x000c /* CalcCount */: wb.opts["CalcCount"] = val; break; + case 0x0010 /* CalcDelta */: wb.opts["CalcDelta"] = val; break; + case 0x0011 /* CalcIter */: wb.opts["CalcIter"] = val; break; + case 0x000d /* CalcMode */: wb.opts["CalcMode"] = val; break; + case 0x000e /* CalcPrecision */: wb.opts["CalcPrecision"] = val; break; + case 0x005f /* CalcSaveRecalc */: wb.opts["CalcSaveRecalc"] = val; break; + case 0x000f /* CalcRefMode */: opts.CalcRefMode = val; break; // TODO: implement R1C1 + case 0x08a3 /* ForceFullCalculation */: wb.opts.FullCalc = val; break; + case 0x0081 /* WsBool */: + if(val.fDialog) out["!type"] = "dialog"; + if(!val.fBelow) (out["!outline"] || (out["!outline"] = {})).above = true; + if(!val.fRight) (out["!outline"] || (out["!outline"] = {})).left = true; + break; // TODO + case 0x00e0 /* XF */: + XFs.push(val); break; + case 0x01ae /* SupBook */: + supbooks.push([val]); + supbooks[supbooks.length-1].XTI = []; + break; + case 0x0023: case 0x0223 /* ExternName */: + supbooks[supbooks.length-1].push(val); + break; + case 0x0018: case 0x0218 /* Lbl */: + last_lbl = ({ + Name: val.Name, + Ref: stringify_formula(val.rgce,range,null,supbooks,opts) + }); + if(val.itab > 0) last_lbl.Sheet = val.itab - 1; + supbooks.names.push(last_lbl); + if(!supbooks[0]) { supbooks[0] = []; supbooks[0].XTI = []; } + supbooks[supbooks.length-1].push(val); + if(val.Name == "_xlnm._FilterDatabase" && val.itab > 0) + if(val.rgce && val.rgce[0] && val.rgce[0][0] && val.rgce[0][0][0] == 'PtgArea3d') + FilterDatabases[val.itab - 1] = { ref: encode_range(val.rgce[0][0][1][2]) }; + break; + case 0x0016 /* ExternCount */: opts.ExternCount = val; break; + case 0x0017 /* ExternSheet */: + if(supbooks.length == 0) { supbooks[0] = []; supbooks[0].XTI = []; } + supbooks[supbooks.length - 1].XTI = supbooks[supbooks.length - 1].XTI.concat(val); supbooks.XTI = supbooks.XTI.concat(val); break; + case 0x0894 /* NameCmt */: + /* TODO: search for correct name */ + if(opts.biff < 8) break; + if(last_lbl != null) last_lbl.Comment = val[1]; + break; + case 0x0012 /* Protect */: out["!protect"] = val; break; /* for sheet or book */ + case 0x0013 /* Password */: if(val !== 0 && opts.WTF) console.error("Password verifier: " + val); break; + case 0x0085 /* BoundSheet8 */: { + Directory[val.pos] = val; + opts.snames.push(val.name); + } break; + case 0x000a /* EOF */: { + if(--file_depth) break; + if(range.e) { + if(range.e.r > 0 && range.e.c > 0) { + range.e.r--; range.e.c--; + out["!ref"] = encode_range(range); + if(options.sheetRows && options.sheetRows <= range.e.r) { + var tmpri = range.e.r; + range.e.r = options.sheetRows - 1; + out["!fullref"] = out["!ref"]; + out["!ref"] = encode_range(range); + range.e.r = tmpri; + } + range.e.r++; range.e.c++; + } + if(merges.length > 0) out["!merges"] = merges; + if(objects.length > 0) out["!objects"] = objects; + if(colinfo.length > 0) out["!cols"] = colinfo; + if(rowinfo.length > 0) out["!rows"] = rowinfo; + Workbook.Sheets.push(wsprops); + } + if(cur_sheet === "") Preamble = out; else Sheets[cur_sheet] = out; + out = ((options.dense ? [] : {})); + } break; + case 0x0009: case 0x0209: case 0x0409: case 0x0809 /* BOF */: { + if(opts.biff === 8) opts.biff = { +0x0009:2, +0x0209:3, +0x0409:4 + }[RecordType] || { +0x0200:2, +0x0300:3, +0x0400:4, +0x0500:5, +0x0600:8, +0x0002:2, +0x0007:2 + }[val.BIFFVer] || 8; + opts.biffguess = val.BIFFVer == 0; + if(val.BIFFVer == 0 && val.dt == 0x1000) { opts.biff = 5; seen_codepage = true; set_cp(opts.codepage = 28591); } + if(opts.biff == 8 && val.BIFFVer == 0 && val.dt == 16) opts.biff = 2; + if(file_depth++) break; + out = ((options.dense ? [] : {})); + + if(opts.biff < 8 && !seen_codepage) { seen_codepage = true; set_cp(opts.codepage = options.codepage || 1252); } + + if(opts.biff < 5 || val.BIFFVer == 0 && val.dt == 0x1000) { + if(cur_sheet === "") cur_sheet = "Sheet1"; + range = {s:{r:0,c:0},e:{r:0,c:0}}; + /* fake BoundSheet8 */ + var fakebs8 = {pos: blob.l - length, name:cur_sheet}; + Directory[fakebs8.pos] = fakebs8; + opts.snames.push(cur_sheet); + } + else cur_sheet = (Directory[s] || {name:""}).name; + if(val.dt == 0x20) out["!type"] = "chart"; + if(val.dt == 0x40) out["!type"] = "macro"; + merges = []; + objects = []; + opts.arrayf = arrayf = []; + colinfo = []; rowinfo = []; + seencol = false; + wsprops = {Hidden:(Directory[s]||{hs:0}).hs, name:cur_sheet }; + } break; + case 0x0203 /* Number */: case 0x0003 /* BIFF2NUM */: case 0x0002 /* BIFF2INT */: { + if(out["!type"] == "chart") if(options.dense ? (out[val.r]||[])[val.c]: out[encode_cell({c:val.c, r:val.r})]) ++val.c; + temp_val = ({ixfe: val.ixfe, XF: XFs[val.ixfe]||{}, v:val.val, t:'n'}); + if(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F]; + safe_format_xf(temp_val, options, wb.opts.Date1904); + addcell({c:val.c, r:val.r}, temp_val, options); + } break; + case 0x0005: case 0x0205 /* BoolErr */: { + temp_val = ({ixfe: val.ixfe, XF: XFs[val.ixfe], v:val.val, t:val.t}); + if(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F]; + safe_format_xf(temp_val, options, wb.opts.Date1904); + addcell({c:val.c, r:val.r}, temp_val, options); + } break; + case 0x027e /* RK */: { + temp_val = ({ixfe: val.ixfe, XF: XFs[val.ixfe], v:val.rknum, t:'n'}); + if(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F]; + safe_format_xf(temp_val, options, wb.opts.Date1904); + addcell({c:val.c, r:val.r}, temp_val, options); + } break; + case 0x00bd /* MulRk */: { + for(var j = val.c; j <= val.C; ++j) { + var ixfe = val.rkrec[j-val.c][0]; + temp_val= ({ixfe:ixfe, XF:XFs[ixfe], v:val.rkrec[j-val.c][1], t:'n'}); + if(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F]; + safe_format_xf(temp_val, options, wb.opts.Date1904); + addcell({c:j, r:val.r}, temp_val, options); + } + } break; + case 0x0006: case 0x0206: case 0x0406 /* Formula */: { + if(val.val == 'String') { last_formula = val; break; } + temp_val = make_cell(val.val, val.cell.ixfe, val.tt); + temp_val.XF = XFs[temp_val.ixfe]; + if(options.cellFormula) { + var _f = val.formula; + if(_f && _f[0] && _f[0][0] && _f[0][0][0] == 'PtgExp') { + var _fr = _f[0][0][1][0], _fc = _f[0][0][1][1]; + var _fe = encode_cell({r:_fr, c:_fc}); + if(sharedf[_fe]) temp_val.f = ""+stringify_formula(val.formula,range,val.cell,supbooks, opts); + else temp_val.F = ((options.dense ? (out[_fr]||[])[_fc]: out[_fe]) || {}).F; + } else temp_val.f = ""+stringify_formula(val.formula,range,val.cell,supbooks, opts); + } + if(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F]; + safe_format_xf(temp_val, options, wb.opts.Date1904); + addcell(val.cell, temp_val, options); + last_formula = val; + } break; + case 0x0007: case 0x0207 /* String */: { + if(last_formula) { /* technically always true */ + last_formula.val = val; + temp_val = make_cell(val, last_formula.cell.ixfe, 's'); + temp_val.XF = XFs[temp_val.ixfe]; + if(options.cellFormula) { + temp_val.f = ""+stringify_formula(last_formula.formula, range, last_formula.cell, supbooks, opts); + } + if(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F]; + safe_format_xf(temp_val, options, wb.opts.Date1904); + addcell(last_formula.cell, temp_val, options); + last_formula = null; + } else throw new Error("String record expects Formula"); + } break; + case 0x0021: case 0x0221 /* Array */: { + arrayf.push(val); + var _arraystart = encode_cell(val[0].s); + cc = options.dense ? (out[val[0].s.r]||[])[val[0].s.c] : out[_arraystart]; + if(options.cellFormula && cc) { + if(!last_formula) break; /* technically unreachable */ + if(!_arraystart || !cc) break; + cc.f = ""+stringify_formula(val[1], range, val[0], supbooks, opts); + cc.F = encode_range(val[0]); + } + } break; + case 0x04bc /* ShrFmla */: { + if(!options.cellFormula) break; + if(last_cell) { + /* TODO: capture range */ + if(!last_formula) break; /* technically unreachable */ + sharedf[encode_cell(last_formula.cell)]= val[0]; + cc = options.dense ? (out[last_formula.cell.r]||[])[last_formula.cell.c] : out[encode_cell(last_formula.cell)]; + (cc||{}).f = ""+stringify_formula(val[0], range, lastcell, supbooks, opts); + } + } break; + case 0x00fd /* LabelSst */: + temp_val=make_cell(sst[val.isst].t, val.ixfe, 's'); + if(sst[val.isst].h) temp_val.h = sst[val.isst].h; + temp_val.XF = XFs[temp_val.ixfe]; + if(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F]; + safe_format_xf(temp_val, options, wb.opts.Date1904); + addcell({c:val.c, r:val.r}, temp_val, options); + break; + case 0x0201 /* Blank */: if(options.sheetStubs) { + temp_val = ({ixfe: val.ixfe, XF: XFs[val.ixfe], t:'z'}); + if(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F]; + safe_format_xf(temp_val, options, wb.opts.Date1904); + addcell({c:val.c, r:val.r}, temp_val, options); + } break; + case 0x00be /* MulBlank */: if(options.sheetStubs) { + for(var _j = val.c; _j <= val.C; ++_j) { + var _ixfe = val.ixfe[_j-val.c]; + temp_val= ({ixfe:_ixfe, XF:XFs[_ixfe], t:'z'}); + if(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F]; + safe_format_xf(temp_val, options, wb.opts.Date1904); + addcell({c:_j, r:val.r}, temp_val, options); + } + } break; + case 0x00d6 /* RString */: + case 0x0204 /* Label */: case 0x0004 /* BIFF2STR */: + temp_val=make_cell(val.val, val.ixfe, 's'); + temp_val.XF = XFs[temp_val.ixfe]; + if(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F]; + safe_format_xf(temp_val, options, wb.opts.Date1904); + addcell({c:val.c, r:val.r}, temp_val, options); + break; + + case 0x0000: case 0x0200 /* Dimensions */: { + if(file_depth === 1) range = val; /* TODO: stack */ + } break; + case 0x00fc /* SST */: { + sst = val; + } break; + case 0x041e /* Format */: { /* val = [id, fmt] */ + if(opts.biff == 4) { + BIFF2FmtTable[BIFF2Fmt++] = val[1]; + for(var b4idx = 0; b4idx < BIFF2Fmt + 163; ++b4idx) if(table_fmt[b4idx] == val[1]) break; + if(b4idx >= 163) SSF_load(val[1], BIFF2Fmt + 163); + } + else SSF_load(val[1], val[0]); + } break; + case 0x001e /* BIFF2FORMAT */: { + BIFF2FmtTable[BIFF2Fmt++] = val; + for(var b2idx = 0; b2idx < BIFF2Fmt + 163; ++b2idx) if(table_fmt[b2idx] == val) break; + if(b2idx >= 163) SSF_load(val, BIFF2Fmt + 163); + } break; + + case 0x00e5 /* MergeCells */: merges = merges.concat(val); break; + + case 0x005d /* Obj */: objects[val.cmo[0]] = opts.lastobj = val; break; + case 0x01b6 /* TxO */: opts.lastobj.TxO = val; break; + case 0x007f /* ImData */: opts.lastobj.ImData = val; break; + + case 0x01b8 /* HLink */: { + for(rngR = val[0].s.r; rngR <= val[0].e.r; ++rngR) + for(rngC = val[0].s.c; rngC <= val[0].e.c; ++rngC) { + cc = options.dense ? (out[rngR]||[])[rngC] : out[encode_cell({c:rngC,r:rngR})]; + if(cc) cc.l = val[1]; + } + } break; + case 0x0800 /* HLinkTooltip */: { + for(rngR = val[0].s.r; rngR <= val[0].e.r; ++rngR) + for(rngC = val[0].s.c; rngC <= val[0].e.c; ++rngC) { + cc = options.dense ? (out[rngR]||[])[rngC] : out[encode_cell({c:rngC,r:rngR})]; + if(cc && cc.l) cc.l.Tooltip = val[1]; + } + } break; + case 0x001c /* Note */: { + if(opts.biff <= 5 && opts.biff >= 2) break; /* TODO: BIFF5 */ + cc = options.dense ? (out[val[0].r]||[])[val[0].c] : out[encode_cell(val[0])]; + var noteobj = objects[val[2]]; + if(!cc) { + if(options.dense) { + if(!out[val[0].r]) out[val[0].r] = []; + cc = out[val[0].r][val[0].c] = ({t:"z"}); + } else { + cc = out[encode_cell(val[0])] = ({t:"z"}); + } + range.e.r = Math.max(range.e.r, val[0].r); + range.s.r = Math.min(range.s.r, val[0].r); + range.e.c = Math.max(range.e.c, val[0].c); + range.s.c = Math.min(range.s.c, val[0].c); + } + if(!cc.c) cc.c = []; + cmnt = {a:val[1],t:noteobj.TxO.t}; + cc.c.push(cmnt); + } break; + case 0x087d /* XFExt */: update_xfext(XFs[val.ixfe], val.ext); break; + case 0x007d /* ColInfo */: { + if(!opts.cellStyles) break; + while(val.e >= val.s) { + colinfo[val.e--] = { width: val.w/256, level: (val.level || 0), hidden: !!(val.flags & 1) }; + if(!seencol) { seencol = true; find_mdw_colw(val.w/256); } + process_col(colinfo[val.e+1]); + } + } break; + case 0x0208 /* Row */: { + var rowobj = {}; + if(val.level != null) { rowinfo[val.r] = rowobj; rowobj.level = val.level; } + if(val.hidden) { rowinfo[val.r] = rowobj; rowobj.hidden = true; } + if(val.hpt) { + rowinfo[val.r] = rowobj; + rowobj.hpt = val.hpt; rowobj.hpx = pt2px(val.hpt); + } + } break; + case 0x0026 /* LeftMargin */: + case 0x0027 /* RightMargin */: + case 0x0028 /* TopMargin */: + case 0x0029 /* BottomMargin */: + if(!out['!margins']) default_margins(out['!margins'] = {}); + out['!margins'][({0x26: "left", 0x27:"right", 0x28:"top", 0x29:"bottom"})[RecordType]] = val; + break; + case 0x00a1 /* Setup */: // TODO + if(!out['!margins']) default_margins(out['!margins'] = {}); + out['!margins'].header = val.header; + out['!margins'].footer = val.footer; + break; + case 0x023e /* Window2 */: // TODO + // $FlowIgnore + if(val.RTL) Workbook.Views[0].RTL = true; + break; + case 0x0092 /* Palette */: palette = val; break; + case 0x0896 /* Theme */: themes = val; break; + case 0x008c /* Country */: country = val; break; + case 0x01ba /* CodeName */: { +if(!cur_sheet) Workbook.WBProps.CodeName = val || "ThisWorkbook"; + else wsprops.CodeName = val || wsprops.name; + } break; + } + } else { + if(!R) console.error("Missing Info for XLS Record 0x" + RecordType.toString(16)); + blob.l += length; + } + } + wb.SheetNames=keys(Directory).sort(function(a,b) { return Number(a) - Number(b); }).map(function(x){return Directory[x].name;}); + if(!options.bookSheets) wb.Sheets=Sheets; + if(!wb.SheetNames.length && Preamble["!ref"]) { + wb.SheetNames.push("Sheet1"); + /*jshint -W069 */ + if(wb.Sheets) wb.Sheets["Sheet1"] = Preamble; + /*jshint +W069 */ + } else wb.Preamble=Preamble; + if(wb.Sheets) FilterDatabases.forEach(function(r,i) { wb.Sheets[wb.SheetNames[i]]['!autofilter'] = r; }); + wb.Strings = sst; + wb.SSF = dup(table_fmt); + if(opts.enc) wb.Encryption = opts.enc; + if(themes) wb.Themes = themes; + wb.Metadata = {}; + if(country !== undefined) wb.Metadata.Country = country; + if(supbooks.names.length > 0) Workbook.Names = supbooks.names; + wb.Workbook = Workbook; + return wb; +} + +/* TODO: split props*/ +var PSCLSID = { + SI: "e0859ff2f94f6810ab9108002b27b3d9", + DSI: "02d5cdd59c2e1b10939708002b2cf9ae", + UDI: "05d5cdd59c2e1b10939708002b2cf9ae" +}; +function parse_xls_props(cfb, props, o) { + /* [MS-OSHARED] 2.3.3.2.2 Document Summary Information Property Set */ + var DSI = CFB.find(cfb, '/!DocumentSummaryInformation'); + if(DSI && DSI.size > 0) try { + var DocSummary = parse_PropertySetStream(DSI, DocSummaryPIDDSI, PSCLSID.DSI); + for(var d in DocSummary) props[d] = DocSummary[d]; + } catch(e) {if(o.WTF) throw e;/* empty */} + + /* [MS-OSHARED] 2.3.3.2.1 Summary Information Property Set*/ + var SI = CFB.find(cfb, '/!SummaryInformation'); + if(SI && SI.size > 0) try { + var Summary = parse_PropertySetStream(SI, SummaryPIDSI, PSCLSID.SI); + for(var s in Summary) if(props[s] == null) props[s] = Summary[s]; + } catch(e) {if(o.WTF) throw e;/* empty */} + + if(props.HeadingPairs && props.TitlesOfParts) { + load_props_pairs(props.HeadingPairs, props.TitlesOfParts, props, o); + delete props.HeadingPairs; delete props.TitlesOfParts; + } +} +function write_xls_props(wb, cfb) { + var DSEntries = [], SEntries = [], CEntries = []; + var i = 0, Keys; + var DocSummaryRE = evert_key(DocSummaryPIDDSI, "n"); + var SummaryRE = evert_key(SummaryPIDSI, "n"); + if(wb.Props) { + Keys = keys(wb.Props); + // $FlowIgnore + for(i = 0; i < Keys.length; ++i) (Object.prototype.hasOwnProperty.call(DocSummaryRE, Keys[i]) ? DSEntries : Object.prototype.hasOwnProperty.call(SummaryRE, Keys[i]) ? SEntries : CEntries).push([Keys[i], wb.Props[Keys[i]]]); + } + if(wb.Custprops) { + Keys = keys(wb.Custprops); + // $FlowIgnore + for(i = 0; i < Keys.length; ++i) if(!Object.prototype.hasOwnProperty.call((wb.Props||{}), Keys[i])) (Object.prototype.hasOwnProperty.call(DocSummaryRE, Keys[i]) ? DSEntries : Object.prototype.hasOwnProperty.call(SummaryRE, Keys[i]) ? SEntries : CEntries).push([Keys[i], wb.Custprops[Keys[i]]]); + } + var CEntries2 = []; + for(i = 0; i < CEntries.length; ++i) { + if(XLSPSSkip.indexOf(CEntries[i][0]) > -1 || PseudoPropsPairs.indexOf(CEntries[i][0]) > -1) continue; + if(CEntries[i][1] == null) continue; + CEntries2.push(CEntries[i]); + } + if(SEntries.length) CFB.utils.cfb_add(cfb, "/\u0005SummaryInformation", write_PropertySetStream(SEntries, PSCLSID.SI, SummaryRE, SummaryPIDSI)); + if(DSEntries.length || CEntries2.length) CFB.utils.cfb_add(cfb, "/\u0005DocumentSummaryInformation", write_PropertySetStream(DSEntries, PSCLSID.DSI, DocSummaryRE, DocSummaryPIDDSI, CEntries2.length ? CEntries2 : null, PSCLSID.UDI)); +} + +function parse_xlscfb(cfb, options) { +if(!options) options = {}; +fix_read_opts(options); +reset_cp(); +if(options.codepage) set_ansi(options.codepage); +var CompObj, WB; +if(cfb.FullPaths) { + if(CFB.find(cfb, '/encryption')) throw new Error("File is password-protected"); + CompObj = CFB.find(cfb, '!CompObj'); + WB = CFB.find(cfb, '/Workbook') || CFB.find(cfb, '/Book'); +} else { + switch(options.type) { + case 'base64': cfb = s2a(Base64_decode(cfb)); break; + case 'binary': cfb = s2a(cfb); break; + case 'buffer': break; + case 'array': if(!Array.isArray(cfb)) cfb = Array.prototype.slice.call(cfb); break; + } + prep_blob(cfb, 0); + WB = ({content: cfb}); +} +var WorkbookP; + +var _data; +if(CompObj) parse_compobj(CompObj); +if(options.bookProps && !options.bookSheets) WorkbookP = ({}); +else { + var T = has_buf ? 'buffer' : 'array'; + if(WB && WB.content) WorkbookP = parse_workbook(WB.content, options); + /* Quattro Pro 7-8 */ + else if((_data=CFB.find(cfb, 'PerfectOffice_MAIN')) && _data.content) WorkbookP = WK_.to_workbook(_data.content, (options.type = T, options)); + /* Quattro Pro 9 */ + else if((_data=CFB.find(cfb, 'NativeContent_MAIN')) && _data.content) WorkbookP = WK_.to_workbook(_data.content, (options.type = T, options)); + /* Works 4 for Mac */ + else if((_data=CFB.find(cfb, 'MN0')) && _data.content) throw new Error("Unsupported Works 4 for Mac file"); + else throw new Error("Cannot find Workbook stream"); + if(options.bookVBA && cfb.FullPaths && CFB.find(cfb, '/_VBA_PROJECT_CUR/VBA/dir')) WorkbookP.vbaraw = make_vba_xls(cfb); +} + +var props = {}; +if(cfb.FullPaths) parse_xls_props(cfb, props, options); + +WorkbookP.Props = WorkbookP.Custprops = props; /* TODO: split up properties */ +if(options.bookFiles) WorkbookP.cfb = cfb; +/*WorkbookP.CompObjP = CompObjP; // TODO: storage? */ +return WorkbookP; +} + + +function write_xlscfb(wb, opts) { + var o = opts || {}; + var cfb = CFB.utils.cfb_new({root:"R"}); + var wbpath = "/Workbook"; + switch(o.bookType || "xls") { + case "xls": o.bookType = "biff8"; + /* falls through */ + case "xla": if(!o.bookType) o.bookType = "xla"; + /* falls through */ + case "biff8": wbpath = "/Workbook"; o.biff = 8; break; + case "biff5": wbpath = "/Book"; o.biff = 5; break; + default: throw new Error("invalid type " + o.bookType + " for XLS CFB"); + } + CFB.utils.cfb_add(cfb, wbpath, write_biff_buf(wb, o)); + if(o.biff == 8 && (wb.Props || wb.Custprops)) write_xls_props(wb, cfb); + // TODO: SI, DSI, CO + if(o.biff == 8 && wb.vbaraw) fill_vba_xls(cfb, CFB.read(wb.vbaraw, {type: typeof wb.vbaraw == "string" ? "binary" : "buffer"})); + return cfb; +} +/* [MS-XLSB] 2.3 Record Enumeration */ +var XLSBRecordEnum = { +0x0000: { /* n:"BrtRowHdr", */ f:parse_BrtRowHdr }, +0x0001: { /* n:"BrtCellBlank", */ f:parse_BrtCellBlank }, +0x0002: { /* n:"BrtCellRk", */ f:parse_BrtCellRk }, +0x0003: { /* n:"BrtCellError", */ f:parse_BrtCellError }, +0x0004: { /* n:"BrtCellBool", */ f:parse_BrtCellBool }, +0x0005: { /* n:"BrtCellReal", */ f:parse_BrtCellReal }, +0x0006: { /* n:"BrtCellSt", */ f:parse_BrtCellSt }, +0x0007: { /* n:"BrtCellIsst", */ f:parse_BrtCellIsst }, +0x0008: { /* n:"BrtFmlaString", */ f:parse_BrtFmlaString }, +0x0009: { /* n:"BrtFmlaNum", */ f:parse_BrtFmlaNum }, +0x000A: { /* n:"BrtFmlaBool", */ f:parse_BrtFmlaBool }, +0x000B: { /* n:"BrtFmlaError", */ f:parse_BrtFmlaError }, +0x000C: { /* n:"BrtShortBlank", */ f:parse_BrtShortBlank }, +0x000D: { /* n:"BrtShortRk", */ f:parse_BrtShortRk }, +0x000E: { /* n:"BrtShortError", */ f:parse_BrtShortError }, +0x000F: { /* n:"BrtShortBool", */ f:parse_BrtShortBool }, +0x0010: { /* n:"BrtShortReal", */ f:parse_BrtShortReal }, +0x0011: { /* n:"BrtShortSt", */ f:parse_BrtShortSt }, +0x0012: { /* n:"BrtShortIsst", */ f:parse_BrtShortIsst }, +0x0013: { /* n:"BrtSSTItem", */ f:parse_RichStr }, +0x0014: { /* n:"BrtPCDIMissing" */ }, +0x0015: { /* n:"BrtPCDINumber" */ }, +0x0016: { /* n:"BrtPCDIBoolean" */ }, +0x0017: { /* n:"BrtPCDIError" */ }, +0x0018: { /* n:"BrtPCDIString" */ }, +0x0019: { /* n:"BrtPCDIDatetime" */ }, +0x001A: { /* n:"BrtPCDIIndex" */ }, +0x001B: { /* n:"BrtPCDIAMissing" */ }, +0x001C: { /* n:"BrtPCDIANumber" */ }, +0x001D: { /* n:"BrtPCDIABoolean" */ }, +0x001E: { /* n:"BrtPCDIAError" */ }, +0x001F: { /* n:"BrtPCDIAString" */ }, +0x0020: { /* n:"BrtPCDIADatetime" */ }, +0x0021: { /* n:"BrtPCRRecord" */ }, +0x0022: { /* n:"BrtPCRRecordDt" */ }, +0x0023: { /* n:"BrtFRTBegin", */ T:1 }, +0x0024: { /* n:"BrtFRTEnd", */ T:-1 }, +0x0025: { /* n:"BrtACBegin", */ T:1 }, +0x0026: { /* n:"BrtACEnd", */ T:-1 }, +0x0027: { /* n:"BrtName", */ f:parse_BrtName }, +0x0028: { /* n:"BrtIndexRowBlock" */ }, +0x002A: { /* n:"BrtIndexBlock" */ }, +0x002B: { /* n:"BrtFont", */ f:parse_BrtFont }, +0x002C: { /* n:"BrtFmt", */ f:parse_BrtFmt }, +0x002D: { /* n:"BrtFill", */ f:parse_BrtFill }, +0x002E: { /* n:"BrtBorder", */ f:parse_BrtBorder }, +0x002F: { /* n:"BrtXF", */ f:parse_BrtXF }, +0x0030: { /* n:"BrtStyle" */ }, +0x0031: { /* n:"BrtCellMeta", */ f:parse_Int32LE }, +0x0032: { /* n:"BrtValueMeta" */ }, +0x0033: { /* n:"BrtMdb" */ f:parse_BrtMdb }, +0x0034: { /* n:"BrtBeginFmd", */ T:1 }, +0x0035: { /* n:"BrtEndFmd", */ T:-1 }, +0x0036: { /* n:"BrtBeginMdx", */ T:1 }, +0x0037: { /* n:"BrtEndMdx", */ T:-1 }, +0x0038: { /* n:"BrtBeginMdxTuple", */ T:1 }, +0x0039: { /* n:"BrtEndMdxTuple", */ T:-1 }, +0x003A: { /* n:"BrtMdxMbrIstr" */ }, +0x003B: { /* n:"BrtStr" */ }, +0x003C: { /* n:"BrtColInfo", */ f:parse_ColInfo }, +0x003E: { /* n:"BrtCellRString", */ f:parse_BrtCellRString }, +0x003F: { /* n:"BrtCalcChainItem$", */ f:parse_BrtCalcChainItem$ }, +0x0040: { /* n:"BrtDVal", */ f:parse_BrtDVal }, +0x0041: { /* n:"BrtSxvcellNum" */ }, +0x0042: { /* n:"BrtSxvcellStr" */ }, +0x0043: { /* n:"BrtSxvcellBool" */ }, +0x0044: { /* n:"BrtSxvcellErr" */ }, +0x0045: { /* n:"BrtSxvcellDate" */ }, +0x0046: { /* n:"BrtSxvcellNil" */ }, +0x0080: { /* n:"BrtFileVersion" */ }, +0x0081: { /* n:"BrtBeginSheet", */ T:1 }, +0x0082: { /* n:"BrtEndSheet", */ T:-1 }, +0x0083: { /* n:"BrtBeginBook", */ T:1, f:parsenoop, p:0 }, +0x0084: { /* n:"BrtEndBook", */ T:-1 }, +0x0085: { /* n:"BrtBeginWsViews", */ T:1 }, +0x0086: { /* n:"BrtEndWsViews", */ T:-1 }, +0x0087: { /* n:"BrtBeginBookViews", */ T:1 }, +0x0088: { /* n:"BrtEndBookViews", */ T:-1 }, +0x0089: { /* n:"BrtBeginWsView", */ T:1, f:parse_BrtBeginWsView }, +0x008A: { /* n:"BrtEndWsView", */ T:-1 }, +0x008B: { /* n:"BrtBeginCsViews", */ T:1 }, +0x008C: { /* n:"BrtEndCsViews", */ T:-1 }, +0x008D: { /* n:"BrtBeginCsView", */ T:1 }, +0x008E: { /* n:"BrtEndCsView", */ T:-1 }, +0x008F: { /* n:"BrtBeginBundleShs", */ T:1 }, +0x0090: { /* n:"BrtEndBundleShs", */ T:-1 }, +0x0091: { /* n:"BrtBeginSheetData", */ T:1 }, +0x0092: { /* n:"BrtEndSheetData", */ T:-1 }, +0x0093: { /* n:"BrtWsProp", */ f:parse_BrtWsProp }, +0x0094: { /* n:"BrtWsDim", */ f:parse_BrtWsDim, p:16 }, +0x0097: { /* n:"BrtPane", */ f:parse_BrtPane }, +0x0098: { /* n:"BrtSel" */ }, +0x0099: { /* n:"BrtWbProp", */ f:parse_BrtWbProp }, +0x009A: { /* n:"BrtWbFactoid" */ }, +0x009B: { /* n:"BrtFileRecover" */ }, +0x009C: { /* n:"BrtBundleSh", */ f:parse_BrtBundleSh }, +0x009D: { /* n:"BrtCalcProp" */ }, +0x009E: { /* n:"BrtBookView" */ }, +0x009F: { /* n:"BrtBeginSst", */ T:1, f:parse_BrtBeginSst }, +0x00A0: { /* n:"BrtEndSst", */ T:-1 }, +0x00A1: { /* n:"BrtBeginAFilter", */ T:1, f:parse_UncheckedRfX }, +0x00A2: { /* n:"BrtEndAFilter", */ T:-1 }, +0x00A3: { /* n:"BrtBeginFilterColumn", */ T:1 }, +0x00A4: { /* n:"BrtEndFilterColumn", */ T:-1 }, +0x00A5: { /* n:"BrtBeginFilters", */ T:1 }, +0x00A6: { /* n:"BrtEndFilters", */ T:-1 }, +0x00A7: { /* n:"BrtFilter" */ }, +0x00A8: { /* n:"BrtColorFilter" */ }, +0x00A9: { /* n:"BrtIconFilter" */ }, +0x00AA: { /* n:"BrtTop10Filter" */ }, +0x00AB: { /* n:"BrtDynamicFilter" */ }, +0x00AC: { /* n:"BrtBeginCustomFilters", */ T:1 }, +0x00AD: { /* n:"BrtEndCustomFilters", */ T:-1 }, +0x00AE: { /* n:"BrtCustomFilter" */ }, +0x00AF: { /* n:"BrtAFilterDateGroupItem" */ }, +0x00B0: { /* n:"BrtMergeCell", */ f:parse_BrtMergeCell }, +0x00B1: { /* n:"BrtBeginMergeCells", */ T:1 }, +0x00B2: { /* n:"BrtEndMergeCells", */ T:-1 }, +0x00B3: { /* n:"BrtBeginPivotCacheDef", */ T:1 }, +0x00B4: { /* n:"BrtEndPivotCacheDef", */ T:-1 }, +0x00B5: { /* n:"BrtBeginPCDFields", */ T:1 }, +0x00B6: { /* n:"BrtEndPCDFields", */ T:-1 }, +0x00B7: { /* n:"BrtBeginPCDField", */ T:1 }, +0x00B8: { /* n:"BrtEndPCDField", */ T:-1 }, +0x00B9: { /* n:"BrtBeginPCDSource", */ T:1 }, +0x00BA: { /* n:"BrtEndPCDSource", */ T:-1 }, +0x00BB: { /* n:"BrtBeginPCDSRange", */ T:1 }, +0x00BC: { /* n:"BrtEndPCDSRange", */ T:-1 }, +0x00BD: { /* n:"BrtBeginPCDFAtbl", */ T:1 }, +0x00BE: { /* n:"BrtEndPCDFAtbl", */ T:-1 }, +0x00BF: { /* n:"BrtBeginPCDIRun", */ T:1 }, +0x00C0: { /* n:"BrtEndPCDIRun", */ T:-1 }, +0x00C1: { /* n:"BrtBeginPivotCacheRecords", */ T:1 }, +0x00C2: { /* n:"BrtEndPivotCacheRecords", */ T:-1 }, +0x00C3: { /* n:"BrtBeginPCDHierarchies", */ T:1 }, +0x00C4: { /* n:"BrtEndPCDHierarchies", */ T:-1 }, +0x00C5: { /* n:"BrtBeginPCDHierarchy", */ T:1 }, +0x00C6: { /* n:"BrtEndPCDHierarchy", */ T:-1 }, +0x00C7: { /* n:"BrtBeginPCDHFieldsUsage", */ T:1 }, +0x00C8: { /* n:"BrtEndPCDHFieldsUsage", */ T:-1 }, +0x00C9: { /* n:"BrtBeginExtConnection", */ T:1 }, +0x00CA: { /* n:"BrtEndExtConnection", */ T:-1 }, +0x00CB: { /* n:"BrtBeginECDbProps", */ T:1 }, +0x00CC: { /* n:"BrtEndECDbProps", */ T:-1 }, +0x00CD: { /* n:"BrtBeginECOlapProps", */ T:1 }, +0x00CE: { /* n:"BrtEndECOlapProps", */ T:-1 }, +0x00CF: { /* n:"BrtBeginPCDSConsol", */ T:1 }, +0x00D0: { /* n:"BrtEndPCDSConsol", */ T:-1 }, +0x00D1: { /* n:"BrtBeginPCDSCPages", */ T:1 }, +0x00D2: { /* n:"BrtEndPCDSCPages", */ T:-1 }, +0x00D3: { /* n:"BrtBeginPCDSCPage", */ T:1 }, +0x00D4: { /* n:"BrtEndPCDSCPage", */ T:-1 }, +0x00D5: { /* n:"BrtBeginPCDSCPItem", */ T:1 }, +0x00D6: { /* n:"BrtEndPCDSCPItem", */ T:-1 }, +0x00D7: { /* n:"BrtBeginPCDSCSets", */ T:1 }, +0x00D8: { /* n:"BrtEndPCDSCSets", */ T:-1 }, +0x00D9: { /* n:"BrtBeginPCDSCSet", */ T:1 }, +0x00DA: { /* n:"BrtEndPCDSCSet", */ T:-1 }, +0x00DB: { /* n:"BrtBeginPCDFGroup", */ T:1 }, +0x00DC: { /* n:"BrtEndPCDFGroup", */ T:-1 }, +0x00DD: { /* n:"BrtBeginPCDFGItems", */ T:1 }, +0x00DE: { /* n:"BrtEndPCDFGItems", */ T:-1 }, +0x00DF: { /* n:"BrtBeginPCDFGRange", */ T:1 }, +0x00E0: { /* n:"BrtEndPCDFGRange", */ T:-1 }, +0x00E1: { /* n:"BrtBeginPCDFGDiscrete", */ T:1 }, +0x00E2: { /* n:"BrtEndPCDFGDiscrete", */ T:-1 }, +0x00E3: { /* n:"BrtBeginPCDSDTupleCache", */ T:1 }, +0x00E4: { /* n:"BrtEndPCDSDTupleCache", */ T:-1 }, +0x00E5: { /* n:"BrtBeginPCDSDTCEntries", */ T:1 }, +0x00E6: { /* n:"BrtEndPCDSDTCEntries", */ T:-1 }, +0x00E7: { /* n:"BrtBeginPCDSDTCEMembers", */ T:1 }, +0x00E8: { /* n:"BrtEndPCDSDTCEMembers", */ T:-1 }, +0x00E9: { /* n:"BrtBeginPCDSDTCEMember", */ T:1 }, +0x00EA: { /* n:"BrtEndPCDSDTCEMember", */ T:-1 }, +0x00EB: { /* n:"BrtBeginPCDSDTCQueries", */ T:1 }, +0x00EC: { /* n:"BrtEndPCDSDTCQueries", */ T:-1 }, +0x00ED: { /* n:"BrtBeginPCDSDTCQuery", */ T:1 }, +0x00EE: { /* n:"BrtEndPCDSDTCQuery", */ T:-1 }, +0x00EF: { /* n:"BrtBeginPCDSDTCSets", */ T:1 }, +0x00F0: { /* n:"BrtEndPCDSDTCSets", */ T:-1 }, +0x00F1: { /* n:"BrtBeginPCDSDTCSet", */ T:1 }, +0x00F2: { /* n:"BrtEndPCDSDTCSet", */ T:-1 }, +0x00F3: { /* n:"BrtBeginPCDCalcItems", */ T:1 }, +0x00F4: { /* n:"BrtEndPCDCalcItems", */ T:-1 }, +0x00F5: { /* n:"BrtBeginPCDCalcItem", */ T:1 }, +0x00F6: { /* n:"BrtEndPCDCalcItem", */ T:-1 }, +0x00F7: { /* n:"BrtBeginPRule", */ T:1 }, +0x00F8: { /* n:"BrtEndPRule", */ T:-1 }, +0x00F9: { /* n:"BrtBeginPRFilters", */ T:1 }, +0x00FA: { /* n:"BrtEndPRFilters", */ T:-1 }, +0x00FB: { /* n:"BrtBeginPRFilter", */ T:1 }, +0x00FC: { /* n:"BrtEndPRFilter", */ T:-1 }, +0x00FD: { /* n:"BrtBeginPNames", */ T:1 }, +0x00FE: { /* n:"BrtEndPNames", */ T:-1 }, +0x00FF: { /* n:"BrtBeginPName", */ T:1 }, +0x0100: { /* n:"BrtEndPName", */ T:-1 }, +0x0101: { /* n:"BrtBeginPNPairs", */ T:1 }, +0x0102: { /* n:"BrtEndPNPairs", */ T:-1 }, +0x0103: { /* n:"BrtBeginPNPair", */ T:1 }, +0x0104: { /* n:"BrtEndPNPair", */ T:-1 }, +0x0105: { /* n:"BrtBeginECWebProps", */ T:1 }, +0x0106: { /* n:"BrtEndECWebProps", */ T:-1 }, +0x0107: { /* n:"BrtBeginEcWpTables", */ T:1 }, +0x0108: { /* n:"BrtEndECWPTables", */ T:-1 }, +0x0109: { /* n:"BrtBeginECParams", */ T:1 }, +0x010A: { /* n:"BrtEndECParams", */ T:-1 }, +0x010B: { /* n:"BrtBeginECParam", */ T:1 }, +0x010C: { /* n:"BrtEndECParam", */ T:-1 }, +0x010D: { /* n:"BrtBeginPCDKPIs", */ T:1 }, +0x010E: { /* n:"BrtEndPCDKPIs", */ T:-1 }, +0x010F: { /* n:"BrtBeginPCDKPI", */ T:1 }, +0x0110: { /* n:"BrtEndPCDKPI", */ T:-1 }, +0x0111: { /* n:"BrtBeginDims", */ T:1 }, +0x0112: { /* n:"BrtEndDims", */ T:-1 }, +0x0113: { /* n:"BrtBeginDim", */ T:1 }, +0x0114: { /* n:"BrtEndDim", */ T:-1 }, +0x0115: { /* n:"BrtIndexPartEnd" */ }, +0x0116: { /* n:"BrtBeginStyleSheet", */ T:1 }, +0x0117: { /* n:"BrtEndStyleSheet", */ T:-1 }, +0x0118: { /* n:"BrtBeginSXView", */ T:1 }, +0x0119: { /* n:"BrtEndSXVI", */ T:-1 }, +0x011A: { /* n:"BrtBeginSXVI", */ T:1 }, +0x011B: { /* n:"BrtBeginSXVIs", */ T:1 }, +0x011C: { /* n:"BrtEndSXVIs", */ T:-1 }, +0x011D: { /* n:"BrtBeginSXVD", */ T:1 }, +0x011E: { /* n:"BrtEndSXVD", */ T:-1 }, +0x011F: { /* n:"BrtBeginSXVDs", */ T:1 }, +0x0120: { /* n:"BrtEndSXVDs", */ T:-1 }, +0x0121: { /* n:"BrtBeginSXPI", */ T:1 }, +0x0122: { /* n:"BrtEndSXPI", */ T:-1 }, +0x0123: { /* n:"BrtBeginSXPIs", */ T:1 }, +0x0124: { /* n:"BrtEndSXPIs", */ T:-1 }, +0x0125: { /* n:"BrtBeginSXDI", */ T:1 }, +0x0126: { /* n:"BrtEndSXDI", */ T:-1 }, +0x0127: { /* n:"BrtBeginSXDIs", */ T:1 }, +0x0128: { /* n:"BrtEndSXDIs", */ T:-1 }, +0x0129: { /* n:"BrtBeginSXLI", */ T:1 }, +0x012A: { /* n:"BrtEndSXLI", */ T:-1 }, +0x012B: { /* n:"BrtBeginSXLIRws", */ T:1 }, +0x012C: { /* n:"BrtEndSXLIRws", */ T:-1 }, +0x012D: { /* n:"BrtBeginSXLICols", */ T:1 }, +0x012E: { /* n:"BrtEndSXLICols", */ T:-1 }, +0x012F: { /* n:"BrtBeginSXFormat", */ T:1 }, +0x0130: { /* n:"BrtEndSXFormat", */ T:-1 }, +0x0131: { /* n:"BrtBeginSXFormats", */ T:1 }, +0x0132: { /* n:"BrtEndSxFormats", */ T:-1 }, +0x0133: { /* n:"BrtBeginSxSelect", */ T:1 }, +0x0134: { /* n:"BrtEndSxSelect", */ T:-1 }, +0x0135: { /* n:"BrtBeginISXVDRws", */ T:1 }, +0x0136: { /* n:"BrtEndISXVDRws", */ T:-1 }, +0x0137: { /* n:"BrtBeginISXVDCols", */ T:1 }, +0x0138: { /* n:"BrtEndISXVDCols", */ T:-1 }, +0x0139: { /* n:"BrtEndSXLocation", */ T:-1 }, +0x013A: { /* n:"BrtBeginSXLocation", */ T:1 }, +0x013B: { /* n:"BrtEndSXView", */ T:-1 }, +0x013C: { /* n:"BrtBeginSXTHs", */ T:1 }, +0x013D: { /* n:"BrtEndSXTHs", */ T:-1 }, +0x013E: { /* n:"BrtBeginSXTH", */ T:1 }, +0x013F: { /* n:"BrtEndSXTH", */ T:-1 }, +0x0140: { /* n:"BrtBeginISXTHRws", */ T:1 }, +0x0141: { /* n:"BrtEndISXTHRws", */ T:-1 }, +0x0142: { /* n:"BrtBeginISXTHCols", */ T:1 }, +0x0143: { /* n:"BrtEndISXTHCols", */ T:-1 }, +0x0144: { /* n:"BrtBeginSXTDMPS", */ T:1 }, +0x0145: { /* n:"BrtEndSXTDMPs", */ T:-1 }, +0x0146: { /* n:"BrtBeginSXTDMP", */ T:1 }, +0x0147: { /* n:"BrtEndSXTDMP", */ T:-1 }, +0x0148: { /* n:"BrtBeginSXTHItems", */ T:1 }, +0x0149: { /* n:"BrtEndSXTHItems", */ T:-1 }, +0x014A: { /* n:"BrtBeginSXTHItem", */ T:1 }, +0x014B: { /* n:"BrtEndSXTHItem", */ T:-1 }, +0x014C: { /* n:"BrtBeginMetadata", */ T:1 }, +0x014D: { /* n:"BrtEndMetadata", */ T:-1 }, +0x014E: { /* n:"BrtBeginEsmdtinfo", */ T:1 }, +0x014F: { /* n:"BrtMdtinfo", */ f:parse_BrtMdtinfo }, +0x0150: { /* n:"BrtEndEsmdtinfo", */ T:-1 }, +0x0151: { /* n:"BrtBeginEsmdb", */ f:parse_BrtBeginEsmdb, T:1 }, +0x0152: { /* n:"BrtEndEsmdb", */ T:-1 }, +0x0153: { /* n:"BrtBeginEsfmd", */ T:1 }, +0x0154: { /* n:"BrtEndEsfmd", */ T:-1 }, +0x0155: { /* n:"BrtBeginSingleCells", */ T:1 }, +0x0156: { /* n:"BrtEndSingleCells", */ T:-1 }, +0x0157: { /* n:"BrtBeginList", */ T:1 }, +0x0158: { /* n:"BrtEndList", */ T:-1 }, +0x0159: { /* n:"BrtBeginListCols", */ T:1 }, +0x015A: { /* n:"BrtEndListCols", */ T:-1 }, +0x015B: { /* n:"BrtBeginListCol", */ T:1 }, +0x015C: { /* n:"BrtEndListCol", */ T:-1 }, +0x015D: { /* n:"BrtBeginListXmlCPr", */ T:1 }, +0x015E: { /* n:"BrtEndListXmlCPr", */ T:-1 }, +0x015F: { /* n:"BrtListCCFmla" */ }, +0x0160: { /* n:"BrtListTrFmla" */ }, +0x0161: { /* n:"BrtBeginExternals", */ T:1 }, +0x0162: { /* n:"BrtEndExternals", */ T:-1 }, +0x0163: { /* n:"BrtSupBookSrc", */ f:parse_RelID}, +0x0165: { /* n:"BrtSupSelf" */ }, +0x0166: { /* n:"BrtSupSame" */ }, +0x0167: { /* n:"BrtSupTabs" */ }, +0x0168: { /* n:"BrtBeginSupBook", */ T:1 }, +0x0169: { /* n:"BrtPlaceholderName" */ }, +0x016A: { /* n:"BrtExternSheet", */ f:parse_ExternSheet }, +0x016B: { /* n:"BrtExternTableStart" */ }, +0x016C: { /* n:"BrtExternTableEnd" */ }, +0x016E: { /* n:"BrtExternRowHdr" */ }, +0x016F: { /* n:"BrtExternCellBlank" */ }, +0x0170: { /* n:"BrtExternCellReal" */ }, +0x0171: { /* n:"BrtExternCellBool" */ }, +0x0172: { /* n:"BrtExternCellError" */ }, +0x0173: { /* n:"BrtExternCellString" */ }, +0x0174: { /* n:"BrtBeginEsmdx", */ T:1 }, +0x0175: { /* n:"BrtEndEsmdx", */ T:-1 }, +0x0176: { /* n:"BrtBeginMdxSet", */ T:1 }, +0x0177: { /* n:"BrtEndMdxSet", */ T:-1 }, +0x0178: { /* n:"BrtBeginMdxMbrProp", */ T:1 }, +0x0179: { /* n:"BrtEndMdxMbrProp", */ T:-1 }, +0x017A: { /* n:"BrtBeginMdxKPI", */ T:1 }, +0x017B: { /* n:"BrtEndMdxKPI", */ T:-1 }, +0x017C: { /* n:"BrtBeginEsstr", */ T:1 }, +0x017D: { /* n:"BrtEndEsstr", */ T:-1 }, +0x017E: { /* n:"BrtBeginPRFItem", */ T:1 }, +0x017F: { /* n:"BrtEndPRFItem", */ T:-1 }, +0x0180: { /* n:"BrtBeginPivotCacheIDs", */ T:1 }, +0x0181: { /* n:"BrtEndPivotCacheIDs", */ T:-1 }, +0x0182: { /* n:"BrtBeginPivotCacheID", */ T:1 }, +0x0183: { /* n:"BrtEndPivotCacheID", */ T:-1 }, +0x0184: { /* n:"BrtBeginISXVIs", */ T:1 }, +0x0185: { /* n:"BrtEndISXVIs", */ T:-1 }, +0x0186: { /* n:"BrtBeginColInfos", */ T:1 }, +0x0187: { /* n:"BrtEndColInfos", */ T:-1 }, +0x0188: { /* n:"BrtBeginRwBrk", */ T:1 }, +0x0189: { /* n:"BrtEndRwBrk", */ T:-1 }, +0x018A: { /* n:"BrtBeginColBrk", */ T:1 }, +0x018B: { /* n:"BrtEndColBrk", */ T:-1 }, +0x018C: { /* n:"BrtBrk" */ }, +0x018D: { /* n:"BrtUserBookView" */ }, +0x018E: { /* n:"BrtInfo" */ }, +0x018F: { /* n:"BrtCUsr" */ }, +0x0190: { /* n:"BrtUsr" */ }, +0x0191: { /* n:"BrtBeginUsers", */ T:1 }, +0x0193: { /* n:"BrtEOF" */ }, +0x0194: { /* n:"BrtUCR" */ }, +0x0195: { /* n:"BrtRRInsDel" */ }, +0x0196: { /* n:"BrtRREndInsDel" */ }, +0x0197: { /* n:"BrtRRMove" */ }, +0x0198: { /* n:"BrtRREndMove" */ }, +0x0199: { /* n:"BrtRRChgCell" */ }, +0x019A: { /* n:"BrtRREndChgCell" */ }, +0x019B: { /* n:"BrtRRHeader" */ }, +0x019C: { /* n:"BrtRRUserView" */ }, +0x019D: { /* n:"BrtRRRenSheet" */ }, +0x019E: { /* n:"BrtRRInsertSh" */ }, +0x019F: { /* n:"BrtRRDefName" */ }, +0x01A0: { /* n:"BrtRRNote" */ }, +0x01A1: { /* n:"BrtRRConflict" */ }, +0x01A2: { /* n:"BrtRRTQSIF" */ }, +0x01A3: { /* n:"BrtRRFormat" */ }, +0x01A4: { /* n:"BrtRREndFormat" */ }, +0x01A5: { /* n:"BrtRRAutoFmt" */ }, +0x01A6: { /* n:"BrtBeginUserShViews", */ T:1 }, +0x01A7: { /* n:"BrtBeginUserShView", */ T:1 }, +0x01A8: { /* n:"BrtEndUserShView", */ T:-1 }, +0x01A9: { /* n:"BrtEndUserShViews", */ T:-1 }, +0x01AA: { /* n:"BrtArrFmla", */ f:parse_BrtArrFmla }, +0x01AB: { /* n:"BrtShrFmla", */ f:parse_BrtShrFmla }, +0x01AC: { /* n:"BrtTable" */ }, +0x01AD: { /* n:"BrtBeginExtConnections", */ T:1 }, +0x01AE: { /* n:"BrtEndExtConnections", */ T:-1 }, +0x01AF: { /* n:"BrtBeginPCDCalcMems", */ T:1 }, +0x01B0: { /* n:"BrtEndPCDCalcMems", */ T:-1 }, +0x01B1: { /* n:"BrtBeginPCDCalcMem", */ T:1 }, +0x01B2: { /* n:"BrtEndPCDCalcMem", */ T:-1 }, +0x01B3: { /* n:"BrtBeginPCDHGLevels", */ T:1 }, +0x01B4: { /* n:"BrtEndPCDHGLevels", */ T:-1 }, +0x01B5: { /* n:"BrtBeginPCDHGLevel", */ T:1 }, +0x01B6: { /* n:"BrtEndPCDHGLevel", */ T:-1 }, +0x01B7: { /* n:"BrtBeginPCDHGLGroups", */ T:1 }, +0x01B8: { /* n:"BrtEndPCDHGLGroups", */ T:-1 }, +0x01B9: { /* n:"BrtBeginPCDHGLGroup", */ T:1 }, +0x01BA: { /* n:"BrtEndPCDHGLGroup", */ T:-1 }, +0x01BB: { /* n:"BrtBeginPCDHGLGMembers", */ T:1 }, +0x01BC: { /* n:"BrtEndPCDHGLGMembers", */ T:-1 }, +0x01BD: { /* n:"BrtBeginPCDHGLGMember", */ T:1 }, +0x01BE: { /* n:"BrtEndPCDHGLGMember", */ T:-1 }, +0x01BF: { /* n:"BrtBeginQSI", */ T:1 }, +0x01C0: { /* n:"BrtEndQSI", */ T:-1 }, +0x01C1: { /* n:"BrtBeginQSIR", */ T:1 }, +0x01C2: { /* n:"BrtEndQSIR", */ T:-1 }, +0x01C3: { /* n:"BrtBeginDeletedNames", */ T:1 }, +0x01C4: { /* n:"BrtEndDeletedNames", */ T:-1 }, +0x01C5: { /* n:"BrtBeginDeletedName", */ T:1 }, +0x01C6: { /* n:"BrtEndDeletedName", */ T:-1 }, +0x01C7: { /* n:"BrtBeginQSIFs", */ T:1 }, +0x01C8: { /* n:"BrtEndQSIFs", */ T:-1 }, +0x01C9: { /* n:"BrtBeginQSIF", */ T:1 }, +0x01CA: { /* n:"BrtEndQSIF", */ T:-1 }, +0x01CB: { /* n:"BrtBeginAutoSortScope", */ T:1 }, +0x01CC: { /* n:"BrtEndAutoSortScope", */ T:-1 }, +0x01CD: { /* n:"BrtBeginConditionalFormatting", */ T:1 }, +0x01CE: { /* n:"BrtEndConditionalFormatting", */ T:-1 }, +0x01CF: { /* n:"BrtBeginCFRule", */ T:1 }, +0x01D0: { /* n:"BrtEndCFRule", */ T:-1 }, +0x01D1: { /* n:"BrtBeginIconSet", */ T:1 }, +0x01D2: { /* n:"BrtEndIconSet", */ T:-1 }, +0x01D3: { /* n:"BrtBeginDatabar", */ T:1 }, +0x01D4: { /* n:"BrtEndDatabar", */ T:-1 }, +0x01D5: { /* n:"BrtBeginColorScale", */ T:1 }, +0x01D6: { /* n:"BrtEndColorScale", */ T:-1 }, +0x01D7: { /* n:"BrtCFVO" */ }, +0x01D8: { /* n:"BrtExternValueMeta" */ }, +0x01D9: { /* n:"BrtBeginColorPalette", */ T:1 }, +0x01DA: { /* n:"BrtEndColorPalette", */ T:-1 }, +0x01DB: { /* n:"BrtIndexedColor" */ }, +0x01DC: { /* n:"BrtMargins", */ f:parse_BrtMargins }, +0x01DD: { /* n:"BrtPrintOptions" */ }, +0x01DE: { /* n:"BrtPageSetup" */ }, +0x01DF: { /* n:"BrtBeginHeaderFooter", */ T:1 }, +0x01E0: { /* n:"BrtEndHeaderFooter", */ T:-1 }, +0x01E1: { /* n:"BrtBeginSXCrtFormat", */ T:1 }, +0x01E2: { /* n:"BrtEndSXCrtFormat", */ T:-1 }, +0x01E3: { /* n:"BrtBeginSXCrtFormats", */ T:1 }, +0x01E4: { /* n:"BrtEndSXCrtFormats", */ T:-1 }, +0x01E5: { /* n:"BrtWsFmtInfo", */ f:parse_BrtWsFmtInfo }, +0x01E6: { /* n:"BrtBeginMgs", */ T:1 }, +0x01E7: { /* n:"BrtEndMGs", */ T:-1 }, +0x01E8: { /* n:"BrtBeginMGMaps", */ T:1 }, +0x01E9: { /* n:"BrtEndMGMaps", */ T:-1 }, +0x01EA: { /* n:"BrtBeginMG", */ T:1 }, +0x01EB: { /* n:"BrtEndMG", */ T:-1 }, +0x01EC: { /* n:"BrtBeginMap", */ T:1 }, +0x01ED: { /* n:"BrtEndMap", */ T:-1 }, +0x01EE: { /* n:"BrtHLink", */ f:parse_BrtHLink }, +0x01EF: { /* n:"BrtBeginDCon", */ T:1 }, +0x01F0: { /* n:"BrtEndDCon", */ T:-1 }, +0x01F1: { /* n:"BrtBeginDRefs", */ T:1 }, +0x01F2: { /* n:"BrtEndDRefs", */ T:-1 }, +0x01F3: { /* n:"BrtDRef" */ }, +0x01F4: { /* n:"BrtBeginScenMan", */ T:1 }, +0x01F5: { /* n:"BrtEndScenMan", */ T:-1 }, +0x01F6: { /* n:"BrtBeginSct", */ T:1 }, +0x01F7: { /* n:"BrtEndSct", */ T:-1 }, +0x01F8: { /* n:"BrtSlc" */ }, +0x01F9: { /* n:"BrtBeginDXFs", */ T:1 }, +0x01FA: { /* n:"BrtEndDXFs", */ T:-1 }, +0x01FB: { /* n:"BrtDXF" */ }, +0x01FC: { /* n:"BrtBeginTableStyles", */ T:1 }, +0x01FD: { /* n:"BrtEndTableStyles", */ T:-1 }, +0x01FE: { /* n:"BrtBeginTableStyle", */ T:1 }, +0x01FF: { /* n:"BrtEndTableStyle", */ T:-1 }, +0x0200: { /* n:"BrtTableStyleElement" */ }, +0x0201: { /* n:"BrtTableStyleClient" */ }, +0x0202: { /* n:"BrtBeginVolDeps", */ T:1 }, +0x0203: { /* n:"BrtEndVolDeps", */ T:-1 }, +0x0204: { /* n:"BrtBeginVolType", */ T:1 }, +0x0205: { /* n:"BrtEndVolType", */ T:-1 }, +0x0206: { /* n:"BrtBeginVolMain", */ T:1 }, +0x0207: { /* n:"BrtEndVolMain", */ T:-1 }, +0x0208: { /* n:"BrtBeginVolTopic", */ T:1 }, +0x0209: { /* n:"BrtEndVolTopic", */ T:-1 }, +0x020A: { /* n:"BrtVolSubtopic" */ }, +0x020B: { /* n:"BrtVolRef" */ }, +0x020C: { /* n:"BrtVolNum" */ }, +0x020D: { /* n:"BrtVolErr" */ }, +0x020E: { /* n:"BrtVolStr" */ }, +0x020F: { /* n:"BrtVolBool" */ }, +0x0210: { /* n:"BrtBeginCalcChain$", */ T:1 }, +0x0211: { /* n:"BrtEndCalcChain$", */ T:-1 }, +0x0212: { /* n:"BrtBeginSortState", */ T:1 }, +0x0213: { /* n:"BrtEndSortState", */ T:-1 }, +0x0214: { /* n:"BrtBeginSortCond", */ T:1 }, +0x0215: { /* n:"BrtEndSortCond", */ T:-1 }, +0x0216: { /* n:"BrtBookProtection" */ }, +0x0217: { /* n:"BrtSheetProtection" */ }, +0x0218: { /* n:"BrtRangeProtection" */ }, +0x0219: { /* n:"BrtPhoneticInfo" */ }, +0x021A: { /* n:"BrtBeginECTxtWiz", */ T:1 }, +0x021B: { /* n:"BrtEndECTxtWiz", */ T:-1 }, +0x021C: { /* n:"BrtBeginECTWFldInfoLst", */ T:1 }, +0x021D: { /* n:"BrtEndECTWFldInfoLst", */ T:-1 }, +0x021E: { /* n:"BrtBeginECTwFldInfo", */ T:1 }, +0x0224: { /* n:"BrtFileSharing" */ }, +0x0225: { /* n:"BrtOleSize" */ }, +0x0226: { /* n:"BrtDrawing", */ f:parse_RelID }, +0x0227: { /* n:"BrtLegacyDrawing" */ }, +0x0228: { /* n:"BrtLegacyDrawingHF" */ }, +0x0229: { /* n:"BrtWebOpt" */ }, +0x022A: { /* n:"BrtBeginWebPubItems", */ T:1 }, +0x022B: { /* n:"BrtEndWebPubItems", */ T:-1 }, +0x022C: { /* n:"BrtBeginWebPubItem", */ T:1 }, +0x022D: { /* n:"BrtEndWebPubItem", */ T:-1 }, +0x022E: { /* n:"BrtBeginSXCondFmt", */ T:1 }, +0x022F: { /* n:"BrtEndSXCondFmt", */ T:-1 }, +0x0230: { /* n:"BrtBeginSXCondFmts", */ T:1 }, +0x0231: { /* n:"BrtEndSXCondFmts", */ T:-1 }, +0x0232: { /* n:"BrtBkHim" */ }, +0x0234: { /* n:"BrtColor" */ }, +0x0235: { /* n:"BrtBeginIndexedColors", */ T:1 }, +0x0236: { /* n:"BrtEndIndexedColors", */ T:-1 }, +0x0239: { /* n:"BrtBeginMRUColors", */ T:1 }, +0x023A: { /* n:"BrtEndMRUColors", */ T:-1 }, +0x023C: { /* n:"BrtMRUColor" */ }, +0x023D: { /* n:"BrtBeginDVals", */ T:1 }, +0x023E: { /* n:"BrtEndDVals", */ T:-1 }, +0x0241: { /* n:"BrtSupNameStart" */ }, +0x0242: { /* n:"BrtSupNameValueStart" */ }, +0x0243: { /* n:"BrtSupNameValueEnd" */ }, +0x0244: { /* n:"BrtSupNameNum" */ }, +0x0245: { /* n:"BrtSupNameErr" */ }, +0x0246: { /* n:"BrtSupNameSt" */ }, +0x0247: { /* n:"BrtSupNameNil" */ }, +0x0248: { /* n:"BrtSupNameBool" */ }, +0x0249: { /* n:"BrtSupNameFmla" */ }, +0x024A: { /* n:"BrtSupNameBits" */ }, +0x024B: { /* n:"BrtSupNameEnd" */ }, +0x024C: { /* n:"BrtEndSupBook", */ T:-1 }, +0x024D: { /* n:"BrtCellSmartTagProperty" */ }, +0x024E: { /* n:"BrtBeginCellSmartTag", */ T:1 }, +0x024F: { /* n:"BrtEndCellSmartTag", */ T:-1 }, +0x0250: { /* n:"BrtBeginCellSmartTags", */ T:1 }, +0x0251: { /* n:"BrtEndCellSmartTags", */ T:-1 }, +0x0252: { /* n:"BrtBeginSmartTags", */ T:1 }, +0x0253: { /* n:"BrtEndSmartTags", */ T:-1 }, +0x0254: { /* n:"BrtSmartTagType" */ }, +0x0255: { /* n:"BrtBeginSmartTagTypes", */ T:1 }, +0x0256: { /* n:"BrtEndSmartTagTypes", */ T:-1 }, +0x0257: { /* n:"BrtBeginSXFilters", */ T:1 }, +0x0258: { /* n:"BrtEndSXFilters", */ T:-1 }, +0x0259: { /* n:"BrtBeginSXFILTER", */ T:1 }, +0x025A: { /* n:"BrtEndSXFilter", */ T:-1 }, +0x025B: { /* n:"BrtBeginFills", */ T:1 }, +0x025C: { /* n:"BrtEndFills", */ T:-1 }, +0x025D: { /* n:"BrtBeginCellWatches", */ T:1 }, +0x025E: { /* n:"BrtEndCellWatches", */ T:-1 }, +0x025F: { /* n:"BrtCellWatch" */ }, +0x0260: { /* n:"BrtBeginCRErrs", */ T:1 }, +0x0261: { /* n:"BrtEndCRErrs", */ T:-1 }, +0x0262: { /* n:"BrtCrashRecErr" */ }, +0x0263: { /* n:"BrtBeginFonts", */ T:1 }, +0x0264: { /* n:"BrtEndFonts", */ T:-1 }, +0x0265: { /* n:"BrtBeginBorders", */ T:1 }, +0x0266: { /* n:"BrtEndBorders", */ T:-1 }, +0x0267: { /* n:"BrtBeginFmts", */ T:1 }, +0x0268: { /* n:"BrtEndFmts", */ T:-1 }, +0x0269: { /* n:"BrtBeginCellXFs", */ T:1 }, +0x026A: { /* n:"BrtEndCellXFs", */ T:-1 }, +0x026B: { /* n:"BrtBeginStyles", */ T:1 }, +0x026C: { /* n:"BrtEndStyles", */ T:-1 }, +0x0271: { /* n:"BrtBigName" */ }, +0x0272: { /* n:"BrtBeginCellStyleXFs", */ T:1 }, +0x0273: { /* n:"BrtEndCellStyleXFs", */ T:-1 }, +0x0274: { /* n:"BrtBeginComments", */ T:1 }, +0x0275: { /* n:"BrtEndComments", */ T:-1 }, +0x0276: { /* n:"BrtBeginCommentAuthors", */ T:1 }, +0x0277: { /* n:"BrtEndCommentAuthors", */ T:-1 }, +0x0278: { /* n:"BrtCommentAuthor", */ f:parse_BrtCommentAuthor }, +0x0279: { /* n:"BrtBeginCommentList", */ T:1 }, +0x027A: { /* n:"BrtEndCommentList", */ T:-1 }, +0x027B: { /* n:"BrtBeginComment", */ T:1, f:parse_BrtBeginComment}, +0x027C: { /* n:"BrtEndComment", */ T:-1 }, +0x027D: { /* n:"BrtCommentText", */ f:parse_BrtCommentText }, +0x027E: { /* n:"BrtBeginOleObjects", */ T:1 }, +0x027F: { /* n:"BrtOleObject" */ }, +0x0280: { /* n:"BrtEndOleObjects", */ T:-1 }, +0x0281: { /* n:"BrtBeginSxrules", */ T:1 }, +0x0282: { /* n:"BrtEndSxRules", */ T:-1 }, +0x0283: { /* n:"BrtBeginActiveXControls", */ T:1 }, +0x0284: { /* n:"BrtActiveX" */ }, +0x0285: { /* n:"BrtEndActiveXControls", */ T:-1 }, +0x0286: { /* n:"BrtBeginPCDSDTCEMembersSortBy", */ T:1 }, +0x0288: { /* n:"BrtBeginCellIgnoreECs", */ T:1 }, +0x0289: { /* n:"BrtCellIgnoreEC" */ }, +0x028A: { /* n:"BrtEndCellIgnoreECs", */ T:-1 }, +0x028B: { /* n:"BrtCsProp", */ f:parse_BrtCsProp }, +0x028C: { /* n:"BrtCsPageSetup" */ }, +0x028D: { /* n:"BrtBeginUserCsViews", */ T:1 }, +0x028E: { /* n:"BrtEndUserCsViews", */ T:-1 }, +0x028F: { /* n:"BrtBeginUserCsView", */ T:1 }, +0x0290: { /* n:"BrtEndUserCsView", */ T:-1 }, +0x0291: { /* n:"BrtBeginPcdSFCIEntries", */ T:1 }, +0x0292: { /* n:"BrtEndPCDSFCIEntries", */ T:-1 }, +0x0293: { /* n:"BrtPCDSFCIEntry" */ }, +0x0294: { /* n:"BrtBeginListParts", */ T:1 }, +0x0295: { /* n:"BrtListPart" */ }, +0x0296: { /* n:"BrtEndListParts", */ T:-1 }, +0x0297: { /* n:"BrtSheetCalcProp" */ }, +0x0298: { /* n:"BrtBeginFnGroup", */ T:1 }, +0x0299: { /* n:"BrtFnGroup" */ }, +0x029A: { /* n:"BrtEndFnGroup", */ T:-1 }, +0x029B: { /* n:"BrtSupAddin" */ }, +0x029C: { /* n:"BrtSXTDMPOrder" */ }, +0x029D: { /* n:"BrtCsProtection" */ }, +0x029F: { /* n:"BrtBeginWsSortMap", */ T:1 }, +0x02A0: { /* n:"BrtEndWsSortMap", */ T:-1 }, +0x02A1: { /* n:"BrtBeginRRSort", */ T:1 }, +0x02A2: { /* n:"BrtEndRRSort", */ T:-1 }, +0x02A3: { /* n:"BrtRRSortItem" */ }, +0x02A4: { /* n:"BrtFileSharingIso" */ }, +0x02A5: { /* n:"BrtBookProtectionIso" */ }, +0x02A6: { /* n:"BrtSheetProtectionIso" */ }, +0x02A7: { /* n:"BrtCsProtectionIso" */ }, +0x02A8: { /* n:"BrtRangeProtectionIso" */ }, +0x02A9: { /* n:"BrtDValList" */ }, +0x0400: { /* n:"BrtRwDescent" */ }, +0x0401: { /* n:"BrtKnownFonts" */ }, +0x0402: { /* n:"BrtBeginSXTupleSet", */ T:1 }, +0x0403: { /* n:"BrtEndSXTupleSet", */ T:-1 }, +0x0404: { /* n:"BrtBeginSXTupleSetHeader", */ T:1 }, +0x0405: { /* n:"BrtEndSXTupleSetHeader", */ T:-1 }, +0x0406: { /* n:"BrtSXTupleSetHeaderItem" */ }, +0x0407: { /* n:"BrtBeginSXTupleSetData", */ T:1 }, +0x0408: { /* n:"BrtEndSXTupleSetData", */ T:-1 }, +0x0409: { /* n:"BrtBeginSXTupleSetRow", */ T:1 }, +0x040A: { /* n:"BrtEndSXTupleSetRow", */ T:-1 }, +0x040B: { /* n:"BrtSXTupleSetRowItem" */ }, +0x040C: { /* n:"BrtNameExt" */ }, +0x040D: { /* n:"BrtPCDH14" */ }, +0x040E: { /* n:"BrtBeginPCDCalcMem14", */ T:1 }, +0x040F: { /* n:"BrtEndPCDCalcMem14", */ T:-1 }, +0x0410: { /* n:"BrtSXTH14" */ }, +0x0411: { /* n:"BrtBeginSparklineGroup", */ T:1 }, +0x0412: { /* n:"BrtEndSparklineGroup", */ T:-1 }, +0x0413: { /* n:"BrtSparkline" */ }, +0x0414: { /* n:"BrtSXDI14" */ }, +0x0415: { /* n:"BrtWsFmtInfoEx14" */ }, +0x0416: { /* n:"BrtBeginConditionalFormatting14", */ T:1 }, +0x0417: { /* n:"BrtEndConditionalFormatting14", */ T:-1 }, +0x0418: { /* n:"BrtBeginCFRule14", */ T:1 }, +0x0419: { /* n:"BrtEndCFRule14", */ T:-1 }, +0x041A: { /* n:"BrtCFVO14" */ }, +0x041B: { /* n:"BrtBeginDatabar14", */ T:1 }, +0x041C: { /* n:"BrtBeginIconSet14", */ T:1 }, +0x041D: { /* n:"BrtDVal14", */ f: parse_BrtDVal14 }, +0x041E: { /* n:"BrtBeginDVals14", */ T:1 }, +0x041F: { /* n:"BrtColor14" */ }, +0x0420: { /* n:"BrtBeginSparklines", */ T:1 }, +0x0421: { /* n:"BrtEndSparklines", */ T:-1 }, +0x0422: { /* n:"BrtBeginSparklineGroups", */ T:1 }, +0x0423: { /* n:"BrtEndSparklineGroups", */ T:-1 }, +0x0425: { /* n:"BrtSXVD14" */ }, +0x0426: { /* n:"BrtBeginSXView14", */ T:1 }, +0x0427: { /* n:"BrtEndSXView14", */ T:-1 }, +0x0428: { /* n:"BrtBeginSXView16", */ T:1 }, +0x0429: { /* n:"BrtEndSXView16", */ T:-1 }, +0x042A: { /* n:"BrtBeginPCD14", */ T:1 }, +0x042B: { /* n:"BrtEndPCD14", */ T:-1 }, +0x042C: { /* n:"BrtBeginExtConn14", */ T:1 }, +0x042D: { /* n:"BrtEndExtConn14", */ T:-1 }, +0x042E: { /* n:"BrtBeginSlicerCacheIDs", */ T:1 }, +0x042F: { /* n:"BrtEndSlicerCacheIDs", */ T:-1 }, +0x0430: { /* n:"BrtBeginSlicerCacheID", */ T:1 }, +0x0431: { /* n:"BrtEndSlicerCacheID", */ T:-1 }, +0x0433: { /* n:"BrtBeginSlicerCache", */ T:1 }, +0x0434: { /* n:"BrtEndSlicerCache", */ T:-1 }, +0x0435: { /* n:"BrtBeginSlicerCacheDef", */ T:1 }, +0x0436: { /* n:"BrtEndSlicerCacheDef", */ T:-1 }, +0x0437: { /* n:"BrtBeginSlicersEx", */ T:1 }, +0x0438: { /* n:"BrtEndSlicersEx", */ T:-1 }, +0x0439: { /* n:"BrtBeginSlicerEx", */ T:1 }, +0x043A: { /* n:"BrtEndSlicerEx", */ T:-1 }, +0x043B: { /* n:"BrtBeginSlicer", */ T:1 }, +0x043C: { /* n:"BrtEndSlicer", */ T:-1 }, +0x043D: { /* n:"BrtSlicerCachePivotTables" */ }, +0x043E: { /* n:"BrtBeginSlicerCacheOlapImpl", */ T:1 }, +0x043F: { /* n:"BrtEndSlicerCacheOlapImpl", */ T:-1 }, +0x0440: { /* n:"BrtBeginSlicerCacheLevelsData", */ T:1 }, +0x0441: { /* n:"BrtEndSlicerCacheLevelsData", */ T:-1 }, +0x0442: { /* n:"BrtBeginSlicerCacheLevelData", */ T:1 }, +0x0443: { /* n:"BrtEndSlicerCacheLevelData", */ T:-1 }, +0x0444: { /* n:"BrtBeginSlicerCacheSiRanges", */ T:1 }, +0x0445: { /* n:"BrtEndSlicerCacheSiRanges", */ T:-1 }, +0x0446: { /* n:"BrtBeginSlicerCacheSiRange", */ T:1 }, +0x0447: { /* n:"BrtEndSlicerCacheSiRange", */ T:-1 }, +0x0448: { /* n:"BrtSlicerCacheOlapItem" */ }, +0x0449: { /* n:"BrtBeginSlicerCacheSelections", */ T:1 }, +0x044A: { /* n:"BrtSlicerCacheSelection" */ }, +0x044B: { /* n:"BrtEndSlicerCacheSelections", */ T:-1 }, +0x044C: { /* n:"BrtBeginSlicerCacheNative", */ T:1 }, +0x044D: { /* n:"BrtEndSlicerCacheNative", */ T:-1 }, +0x044E: { /* n:"BrtSlicerCacheNativeItem" */ }, +0x044F: { /* n:"BrtRangeProtection14" */ }, +0x0450: { /* n:"BrtRangeProtectionIso14" */ }, +0x0451: { /* n:"BrtCellIgnoreEC14" */ }, +0x0457: { /* n:"BrtList14" */ }, +0x0458: { /* n:"BrtCFIcon" */ }, +0x0459: { /* n:"BrtBeginSlicerCachesPivotCacheIDs", */ T:1 }, +0x045A: { /* n:"BrtEndSlicerCachesPivotCacheIDs", */ T:-1 }, +0x045B: { /* n:"BrtBeginSlicers", */ T:1 }, +0x045C: { /* n:"BrtEndSlicers", */ T:-1 }, +0x045D: { /* n:"BrtWbProp14" */ }, +0x045E: { /* n:"BrtBeginSXEdit", */ T:1 }, +0x045F: { /* n:"BrtEndSXEdit", */ T:-1 }, +0x0460: { /* n:"BrtBeginSXEdits", */ T:1 }, +0x0461: { /* n:"BrtEndSXEdits", */ T:-1 }, +0x0462: { /* n:"BrtBeginSXChange", */ T:1 }, +0x0463: { /* n:"BrtEndSXChange", */ T:-1 }, +0x0464: { /* n:"BrtBeginSXChanges", */ T:1 }, +0x0465: { /* n:"BrtEndSXChanges", */ T:-1 }, +0x0466: { /* n:"BrtSXTupleItems" */ }, +0x0468: { /* n:"BrtBeginSlicerStyle", */ T:1 }, +0x0469: { /* n:"BrtEndSlicerStyle", */ T:-1 }, +0x046A: { /* n:"BrtSlicerStyleElement" */ }, +0x046B: { /* n:"BrtBeginStyleSheetExt14", */ T:1 }, +0x046C: { /* n:"BrtEndStyleSheetExt14", */ T:-1 }, +0x046D: { /* n:"BrtBeginSlicerCachesPivotCacheID", */ T:1 }, +0x046E: { /* n:"BrtEndSlicerCachesPivotCacheID", */ T:-1 }, +0x046F: { /* n:"BrtBeginConditionalFormattings", */ T:1 }, +0x0470: { /* n:"BrtEndConditionalFormattings", */ T:-1 }, +0x0471: { /* n:"BrtBeginPCDCalcMemExt", */ T:1 }, +0x0472: { /* n:"BrtEndPCDCalcMemExt", */ T:-1 }, +0x0473: { /* n:"BrtBeginPCDCalcMemsExt", */ T:1 }, +0x0474: { /* n:"BrtEndPCDCalcMemsExt", */ T:-1 }, +0x0475: { /* n:"BrtPCDField14" */ }, +0x0476: { /* n:"BrtBeginSlicerStyles", */ T:1 }, +0x0477: { /* n:"BrtEndSlicerStyles", */ T:-1 }, +0x0478: { /* n:"BrtBeginSlicerStyleElements", */ T:1 }, +0x0479: { /* n:"BrtEndSlicerStyleElements", */ T:-1 }, +0x047A: { /* n:"BrtCFRuleExt" */ }, +0x047B: { /* n:"BrtBeginSXCondFmt14", */ T:1 }, +0x047C: { /* n:"BrtEndSXCondFmt14", */ T:-1 }, +0x047D: { /* n:"BrtBeginSXCondFmts14", */ T:1 }, +0x047E: { /* n:"BrtEndSXCondFmts14", */ T:-1 }, +0x0480: { /* n:"BrtBeginSortCond14", */ T:1 }, +0x0481: { /* n:"BrtEndSortCond14", */ T:-1 }, +0x0482: { /* n:"BrtEndDVals14", */ T:-1 }, +0x0483: { /* n:"BrtEndIconSet14", */ T:-1 }, +0x0484: { /* n:"BrtEndDatabar14", */ T:-1 }, +0x0485: { /* n:"BrtBeginColorScale14", */ T:1 }, +0x0486: { /* n:"BrtEndColorScale14", */ T:-1 }, +0x0487: { /* n:"BrtBeginSxrules14", */ T:1 }, +0x0488: { /* n:"BrtEndSxrules14", */ T:-1 }, +0x0489: { /* n:"BrtBeginPRule14", */ T:1 }, +0x048A: { /* n:"BrtEndPRule14", */ T:-1 }, +0x048B: { /* n:"BrtBeginPRFilters14", */ T:1 }, +0x048C: { /* n:"BrtEndPRFilters14", */ T:-1 }, +0x048D: { /* n:"BrtBeginPRFilter14", */ T:1 }, +0x048E: { /* n:"BrtEndPRFilter14", */ T:-1 }, +0x048F: { /* n:"BrtBeginPRFItem14", */ T:1 }, +0x0490: { /* n:"BrtEndPRFItem14", */ T:-1 }, +0x0491: { /* n:"BrtBeginCellIgnoreECs14", */ T:1 }, +0x0492: { /* n:"BrtEndCellIgnoreECs14", */ T:-1 }, +0x0493: { /* n:"BrtDxf14" */ }, +0x0494: { /* n:"BrtBeginDxF14s", */ T:1 }, +0x0495: { /* n:"BrtEndDxf14s", */ T:-1 }, +0x0499: { /* n:"BrtFilter14" */ }, +0x049A: { /* n:"BrtBeginCustomFilters14", */ T:1 }, +0x049C: { /* n:"BrtCustomFilter14" */ }, +0x049D: { /* n:"BrtIconFilter14" */ }, +0x049E: { /* n:"BrtPivotCacheConnectionName" */ }, +0x0800: { /* n:"BrtBeginDecoupledPivotCacheIDs", */ T:1 }, +0x0801: { /* n:"BrtEndDecoupledPivotCacheIDs", */ T:-1 }, +0x0802: { /* n:"BrtDecoupledPivotCacheID" */ }, +0x0803: { /* n:"BrtBeginPivotTableRefs", */ T:1 }, +0x0804: { /* n:"BrtEndPivotTableRefs", */ T:-1 }, +0x0805: { /* n:"BrtPivotTableRef" */ }, +0x0806: { /* n:"BrtSlicerCacheBookPivotTables" */ }, +0x0807: { /* n:"BrtBeginSxvcells", */ T:1 }, +0x0808: { /* n:"BrtEndSxvcells", */ T:-1 }, +0x0809: { /* n:"BrtBeginSxRow", */ T:1 }, +0x080A: { /* n:"BrtEndSxRow", */ T:-1 }, +0x080C: { /* n:"BrtPcdCalcMem15" */ }, +0x0813: { /* n:"BrtQsi15" */ }, +0x0814: { /* n:"BrtBeginWebExtensions", */ T:1 }, +0x0815: { /* n:"BrtEndWebExtensions", */ T:-1 }, +0x0816: { /* n:"BrtWebExtension" */ }, +0x0817: { /* n:"BrtAbsPath15" */ }, +0x0818: { /* n:"BrtBeginPivotTableUISettings", */ T:1 }, +0x0819: { /* n:"BrtEndPivotTableUISettings", */ T:-1 }, +0x081B: { /* n:"BrtTableSlicerCacheIDs" */ }, +0x081C: { /* n:"BrtTableSlicerCacheID" */ }, +0x081D: { /* n:"BrtBeginTableSlicerCache", */ T:1 }, +0x081E: { /* n:"BrtEndTableSlicerCache", */ T:-1 }, +0x081F: { /* n:"BrtSxFilter15" */ }, +0x0820: { /* n:"BrtBeginTimelineCachePivotCacheIDs", */ T:1 }, +0x0821: { /* n:"BrtEndTimelineCachePivotCacheIDs", */ T:-1 }, +0x0822: { /* n:"BrtTimelineCachePivotCacheID" */ }, +0x0823: { /* n:"BrtBeginTimelineCacheIDs", */ T:1 }, +0x0824: { /* n:"BrtEndTimelineCacheIDs", */ T:-1 }, +0x0825: { /* n:"BrtBeginTimelineCacheID", */ T:1 }, +0x0826: { /* n:"BrtEndTimelineCacheID", */ T:-1 }, +0x0827: { /* n:"BrtBeginTimelinesEx", */ T:1 }, +0x0828: { /* n:"BrtEndTimelinesEx", */ T:-1 }, +0x0829: { /* n:"BrtBeginTimelineEx", */ T:1 }, +0x082A: { /* n:"BrtEndTimelineEx", */ T:-1 }, +0x082B: { /* n:"BrtWorkBookPr15" */ }, +0x082C: { /* n:"BrtPCDH15" */ }, +0x082D: { /* n:"BrtBeginTimelineStyle", */ T:1 }, +0x082E: { /* n:"BrtEndTimelineStyle", */ T:-1 }, +0x082F: { /* n:"BrtTimelineStyleElement" */ }, +0x0830: { /* n:"BrtBeginTimelineStylesheetExt15", */ T:1 }, +0x0831: { /* n:"BrtEndTimelineStylesheetExt15", */ T:-1 }, +0x0832: { /* n:"BrtBeginTimelineStyles", */ T:1 }, +0x0833: { /* n:"BrtEndTimelineStyles", */ T:-1 }, +0x0834: { /* n:"BrtBeginTimelineStyleElements", */ T:1 }, +0x0835: { /* n:"BrtEndTimelineStyleElements", */ T:-1 }, +0x0836: { /* n:"BrtDxf15" */ }, +0x0837: { /* n:"BrtBeginDxfs15", */ T:1 }, +0x0838: { /* n:"BrtEndDxfs15", */ T:-1 }, +0x0839: { /* n:"BrtSlicerCacheHideItemsWithNoData" */ }, +0x083A: { /* n:"BrtBeginItemUniqueNames", */ T:1 }, +0x083B: { /* n:"BrtEndItemUniqueNames", */ T:-1 }, +0x083C: { /* n:"BrtItemUniqueName" */ }, +0x083D: { /* n:"BrtBeginExtConn15", */ T:1 }, +0x083E: { /* n:"BrtEndExtConn15", */ T:-1 }, +0x083F: { /* n:"BrtBeginOledbPr15", */ T:1 }, +0x0840: { /* n:"BrtEndOledbPr15", */ T:-1 }, +0x0841: { /* n:"BrtBeginDataFeedPr15", */ T:1 }, +0x0842: { /* n:"BrtEndDataFeedPr15", */ T:-1 }, +0x0843: { /* n:"BrtTextPr15" */ }, +0x0844: { /* n:"BrtRangePr15" */ }, +0x0845: { /* n:"BrtDbCommand15" */ }, +0x0846: { /* n:"BrtBeginDbTables15", */ T:1 }, +0x0847: { /* n:"BrtEndDbTables15", */ T:-1 }, +0x0848: { /* n:"BrtDbTable15" */ }, +0x0849: { /* n:"BrtBeginDataModel", */ T:1 }, +0x084A: { /* n:"BrtEndDataModel", */ T:-1 }, +0x084B: { /* n:"BrtBeginModelTables", */ T:1 }, +0x084C: { /* n:"BrtEndModelTables", */ T:-1 }, +0x084D: { /* n:"BrtModelTable" */ }, +0x084E: { /* n:"BrtBeginModelRelationships", */ T:1 }, +0x084F: { /* n:"BrtEndModelRelationships", */ T:-1 }, +0x0850: { /* n:"BrtModelRelationship" */ }, +0x0851: { /* n:"BrtBeginECTxtWiz15", */ T:1 }, +0x0852: { /* n:"BrtEndECTxtWiz15", */ T:-1 }, +0x0853: { /* n:"BrtBeginECTWFldInfoLst15", */ T:1 }, +0x0854: { /* n:"BrtEndECTWFldInfoLst15", */ T:-1 }, +0x0855: { /* n:"BrtBeginECTWFldInfo15", */ T:1 }, +0x0856: { /* n:"BrtFieldListActiveItem" */ }, +0x0857: { /* n:"BrtPivotCacheIdVersion" */ }, +0x0858: { /* n:"BrtSXDI15" */ }, +0x0859: { /* n:"BrtBeginModelTimeGroupings", */ T:1 }, +0x085A: { /* n:"BrtEndModelTimeGroupings", */ T:-1 }, +0x085B: { /* n:"BrtBeginModelTimeGrouping", */ T:1 }, +0x085C: { /* n:"BrtEndModelTimeGrouping", */ T:-1 }, +0x085D: { /* n:"BrtModelTimeGroupingCalcCol" */ }, +0x0C00: { /* n:"BrtUid" */ }, +0x0C01: { /* n:"BrtRevisionPtr" */ }, +0x1000: { /* n:"BrtBeginDynamicArrayPr", */ T:1 }, +0x1001: { /* n:"BrtEndDynamicArrayPr", */ T:-1 }, +0x138A: { /* n:"BrtBeginRichValueBlock", */ T:1 }, +0x138B: { /* n:"BrtEndRichValueBlock", */ T:-1 }, +0x13D9: { /* n:"BrtBeginRichFilters", */ T:1 }, +0x13DA: { /* n:"BrtEndRichFilters", */ T:-1 }, +0x13DB: { /* n:"BrtRichFilter" */ }, +0x13DC: { /* n:"BrtBeginRichFilterColumn", */ T:1 }, +0x13DD: { /* n:"BrtEndRichFilterColumn", */ T:-1 }, +0x13DE: { /* n:"BrtBeginCustomRichFilters", */ T:1 }, +0x13DF: { /* n:"BrtEndCustomRichFilters", */ T:-1 }, +0x13E0: { /* n:"BrtCustomRichFilter" */ }, +0x13E1: { /* n:"BrtTop10RichFilter" */ }, +0x13E2: { /* n:"BrtDynamicRichFilter" */ }, +0x13E4: { /* n:"BrtBeginRichSortCondition", */ T:1 }, +0x13E5: { /* n:"BrtEndRichSortCondition", */ T:-1 }, +0x13E6: { /* n:"BrtRichFilterDateGroupItem" */ }, +0x13E7: { /* n:"BrtBeginCalcFeatures", */ T:1 }, +0x13E8: { /* n:"BrtEndCalcFeatures", */ T:-1 }, +0x13E9: { /* n:"BrtCalcFeature" */ }, +0x13EB: { /* n:"BrtExternalLinksPr" */ }, +0xFFFF: { n:"" } +}; + +/* [MS-XLS] 2.3 Record Enumeration (and other sources) */ +var XLSRecordEnum = { + /* [MS-XLS] 2.3 Record Enumeration 2021-08-17 */ +0x0006: { /* n:"Formula", */ f:parse_Formula }, +0x000a: { /* n:"EOF", */ f:parsenoop2 }, +0x000c: { /* n:"CalcCount", */ f:parseuint16 }, // +0x000d: { /* n:"CalcMode", */ f:parseuint16 }, // +0x000e: { /* n:"CalcPrecision", */ f:parsebool }, // +0x000f: { /* n:"CalcRefMode", */ f:parsebool }, // +0x0010: { /* n:"CalcDelta", */ f:parse_Xnum }, // +0x0011: { /* n:"CalcIter", */ f:parsebool }, // +0x0012: { /* n:"Protect", */ f:parsebool }, +0x0013: { /* n:"Password", */ f:parseuint16 }, +0x0014: { /* n:"Header", */ f:parse_XLHeaderFooter }, +0x0015: { /* n:"Footer", */ f:parse_XLHeaderFooter }, +0x0017: { /* n:"ExternSheet", */ f:parse_ExternSheet }, +0x0018: { /* n:"Lbl", */ f:parse_Lbl }, +0x0019: { /* n:"WinProtect", */ f:parsebool }, +0x001a: { /* n:"VerticalPageBreaks", */ }, +0x001b: { /* n:"HorizontalPageBreaks", */ }, +0x001c: { /* n:"Note", */ f:parse_Note }, +0x001d: { /* n:"Selection", */ }, +0x0022: { /* n:"Date1904", */ f:parsebool }, +0x0023: { /* n:"ExternName", */ f:parse_ExternName }, +0x0026: { /* n:"LeftMargin", */ f:parse_Xnum }, // * +0x0027: { /* n:"RightMargin", */ f:parse_Xnum }, // * +0x0028: { /* n:"TopMargin", */ f:parse_Xnum }, // * +0x0029: { /* n:"BottomMargin", */ f:parse_Xnum }, // * +0x002a: { /* n:"PrintRowCol", */ f:parsebool }, +0x002b: { /* n:"PrintGrid", */ f:parsebool }, +0x002f: { /* n:"FilePass", */ f:parse_FilePass }, +0x0031: { /* n:"Font", */ f:parse_Font }, +0x0033: { /* n:"PrintSize", */ f:parseuint16 }, +0x003c: { /* n:"Continue", */ }, +0x003d: { /* n:"Window1", */ f:parse_Window1 }, +0x0040: { /* n:"Backup", */ f:parsebool }, +0x0041: { /* n:"Pane", */ f:parse_Pane }, +0x0042: { /* n:"CodePage", */ f:parseuint16 }, +0x004d: { /* n:"Pls", */ }, +0x0050: { /* n:"DCon", */ }, +0x0051: { /* n:"DConRef", */ }, +0x0052: { /* n:"DConName", */ }, +0x0055: { /* n:"DefColWidth", */ f:parseuint16 }, +0x0059: { /* n:"XCT", */ }, +0x005a: { /* n:"CRN", */ }, +0x005b: { /* n:"FileSharing", */ }, +0x005c: { /* n:"WriteAccess", */ f:parse_WriteAccess }, +0x005d: { /* n:"Obj", */ f:parse_Obj }, +0x005e: { /* n:"Uncalced", */ }, +0x005f: { /* n:"CalcSaveRecalc", */ f:parsebool }, // +0x0060: { /* n:"Template", */ }, +0x0061: { /* n:"Intl", */ }, +0x0063: { /* n:"ObjProtect", */ f:parsebool }, +0x007d: { /* n:"ColInfo", */ f:parse_ColInfo }, +0x0080: { /* n:"Guts", */ f:parse_Guts }, +0x0081: { /* n:"WsBool", */ f:parse_WsBool }, +0x0082: { /* n:"GridSet", */ f:parseuint16 }, +0x0083: { /* n:"HCenter", */ f:parsebool }, +0x0084: { /* n:"VCenter", */ f:parsebool }, +0x0085: { /* n:"BoundSheet8", */ f:parse_BoundSheet8 }, +0x0086: { /* n:"WriteProtect", */ }, +0x008c: { /* n:"Country", */ f:parse_Country }, +0x008d: { /* n:"HideObj", */ f:parseuint16 }, +0x0090: { /* n:"Sort", */ }, +0x0092: { /* n:"Palette", */ f:parse_Palette }, +0x0097: { /* n:"Sync", */ }, +0x0098: { /* n:"LPr", */ }, +0x0099: { /* n:"DxGCol", */ }, +0x009a: { /* n:"FnGroupName", */ }, +0x009b: { /* n:"FilterMode", */ }, +0x009c: { /* n:"BuiltInFnGroupCount", */ f:parseuint16 }, +0x009d: { /* n:"AutoFilterInfo", */ }, +0x009e: { /* n:"AutoFilter", */ }, +0x00a0: { /* n:"Scl", */ f:parse_Scl }, +0x00a1: { /* n:"Setup", */ f:parse_Setup }, +0x00ae: { /* n:"ScenMan", */ }, +0x00af: { /* n:"SCENARIO", */ }, +0x00b0: { /* n:"SxView", */ }, +0x00b1: { /* n:"Sxvd", */ }, +0x00b2: { /* n:"SXVI", */ }, +0x00b4: { /* n:"SxIvd", */ }, +0x00b5: { /* n:"SXLI", */ }, +0x00b6: { /* n:"SXPI", */ }, +0x00b8: { /* n:"DocRoute", */ }, +0x00b9: { /* n:"RecipName", */ }, +0x00bd: { /* n:"MulRk", */ f:parse_MulRk }, +0x00be: { /* n:"MulBlank", */ f:parse_MulBlank }, +0x00c1: { /* n:"Mms", */ f:parsenoop2 }, +0x00c5: { /* n:"SXDI", */ }, +0x00c6: { /* n:"SXDB", */ }, +0x00c7: { /* n:"SXFDB", */ }, +0x00c8: { /* n:"SXDBB", */ }, +0x00c9: { /* n:"SXNum", */ }, +0x00ca: { /* n:"SxBool", */ f:parsebool }, +0x00cb: { /* n:"SxErr", */ }, +0x00cc: { /* n:"SXInt", */ }, +0x00cd: { /* n:"SXString", */ }, +0x00ce: { /* n:"SXDtr", */ }, +0x00cf: { /* n:"SxNil", */ }, +0x00d0: { /* n:"SXTbl", */ }, +0x00d1: { /* n:"SXTBRGIITM", */ }, +0x00d2: { /* n:"SxTbpg", */ }, +0x00d3: { /* n:"ObProj", */ }, +0x00d5: { /* n:"SXStreamID", */ }, +0x00d7: { /* n:"DBCell", */ }, +0x00d8: { /* n:"SXRng", */ }, +0x00d9: { /* n:"SxIsxoper", */ }, +0x00da: { /* n:"BookBool", */ f:parseuint16 }, +0x00dc: { /* n:"DbOrParamQry", */ }, +0x00dd: { /* n:"ScenarioProtect", */ f:parsebool }, +0x00de: { /* n:"OleObjectSize", */ }, +0x00e0: { /* n:"XF", */ f:parse_XF }, +0x00e1: { /* n:"InterfaceHdr", */ f:parse_InterfaceHdr }, +0x00e2: { /* n:"InterfaceEnd", */ f:parsenoop2 }, +0x00e3: { /* n:"SXVS", */ }, +0x00e5: { /* n:"MergeCells", */ f:parse_MergeCells }, +0x00e9: { /* n:"BkHim", */ }, +0x00eb: { /* n:"MsoDrawingGroup", */ }, +0x00ec: { /* n:"MsoDrawing", */ }, +0x00ed: { /* n:"MsoDrawingSelection", */ }, +0x00ef: { /* n:"PhoneticInfo", */ }, +0x00f0: { /* n:"SxRule", */ }, +0x00f1: { /* n:"SXEx", */ }, +0x00f2: { /* n:"SxFilt", */ }, +0x00f4: { /* n:"SxDXF", */ }, +0x00f5: { /* n:"SxItm", */ }, +0x00f6: { /* n:"SxName", */ }, +0x00f7: { /* n:"SxSelect", */ }, +0x00f8: { /* n:"SXPair", */ }, +0x00f9: { /* n:"SxFmla", */ }, +0x00fb: { /* n:"SxFormat", */ }, +0x00fc: { /* n:"SST", */ f:parse_SST }, +0x00fd: { /* n:"LabelSst", */ f:parse_LabelSst }, +0x00ff: { /* n:"ExtSST", */ f:parse_ExtSST }, +0x0100: { /* n:"SXVDEx", */ }, +0x0103: { /* n:"SXFormula", */ }, +0x0122: { /* n:"SXDBEx", */ }, +0x0137: { /* n:"RRDInsDel", */ }, +0x0138: { /* n:"RRDHead", */ }, +0x013b: { /* n:"RRDChgCell", */ }, +0x013d: { /* n:"RRTabId", */ f:parseuint16a }, +0x013e: { /* n:"RRDRenSheet", */ }, +0x013f: { /* n:"RRSort", */ }, +0x0140: { /* n:"RRDMove", */ }, +0x014a: { /* n:"RRFormat", */ }, +0x014b: { /* n:"RRAutoFmt", */ }, +0x014d: { /* n:"RRInsertSh", */ }, +0x014e: { /* n:"RRDMoveBegin", */ }, +0x014f: { /* n:"RRDMoveEnd", */ }, +0x0150: { /* n:"RRDInsDelBegin", */ }, +0x0151: { /* n:"RRDInsDelEnd", */ }, +0x0152: { /* n:"RRDConflict", */ }, +0x0153: { /* n:"RRDDefName", */ }, +0x0154: { /* n:"RRDRstEtxp", */ }, +0x015f: { /* n:"LRng", */ }, +0x0160: { /* n:"UsesELFs", */ f:parsebool }, +0x0161: { /* n:"DSF", */ f:parsenoop2 }, +0x0191: { /* n:"CUsr", */ }, +0x0192: { /* n:"CbUsr", */ }, +0x0193: { /* n:"UsrInfo", */ }, +0x0194: { /* n:"UsrExcl", */ }, +0x0195: { /* n:"FileLock", */ }, +0x0196: { /* n:"RRDInfo", */ }, +0x0197: { /* n:"BCUsrs", */ }, +0x0198: { /* n:"UsrChk", */ }, +0x01a9: { /* n:"UserBView", */ }, +0x01aa: { /* n:"UserSViewBegin", */ }, +0x01ab: { /* n:"UserSViewEnd", */ }, +0x01ac: { /* n:"RRDUserView", */ }, +0x01ad: { /* n:"Qsi", */ }, +0x01ae: { /* n:"SupBook", */ f:parse_SupBook }, +0x01af: { /* n:"Prot4Rev", */ f:parsebool }, +0x01b0: { /* n:"CondFmt", */ }, +0x01b1: { /* n:"CF", */ }, +0x01b2: { /* n:"DVal", */ }, +0x01b5: { /* n:"DConBin", */ }, +0x01b6: { /* n:"TxO", */ f:parse_TxO }, +0x01b7: { /* n:"RefreshAll", */ f:parsebool }, // +0x01b8: { /* n:"HLink", */ f:parse_HLink }, +0x01b9: { /* n:"Lel", */ }, +0x01ba: { /* n:"CodeName", */ f:parse_XLUnicodeString }, +0x01bb: { /* n:"SXFDBType", */ }, +0x01bc: { /* n:"Prot4RevPass", */ f:parseuint16 }, +0x01bd: { /* n:"ObNoMacros", */ }, +0x01be: { /* n:"Dv", */ }, +0x01c0: { /* n:"Excel9File", */ f:parsenoop2 }, +0x01c1: { /* n:"RecalcId", */ f:parse_RecalcId, r:2}, +0x01c2: { /* n:"EntExU2", */ f:parsenoop2 }, +0x0200: { /* n:"Dimensions", */ f:parse_Dimensions }, +0x0201: { /* n:"Blank", */ f:parse_Blank }, +0x0203: { /* n:"Number", */ f:parse_Number }, +0x0204: { /* n:"Label", */ f:parse_Label }, +0x0205: { /* n:"BoolErr", */ f:parse_BoolErr }, +0x0207: { /* n:"String", */ f:parse_String }, +0x0208: { /* n:"Row", */ f:parse_Row }, +0x020b: { /* n:"Index", */ }, +0x0221: { /* n:"Array", */ f:parse_Array }, +0x0225: { /* n:"DefaultRowHeight", */ f:parse_DefaultRowHeight }, +0x0236: { /* n:"Table", */ }, +0x023e: { /* n:"Window2", */ f:parse_Window2 }, +0x027e: { /* n:"RK", */ f:parse_RK }, +0x0293: { /* n:"Style", */ }, +0x0418: { /* n:"BigName", */ }, +0x041e: { /* n:"Format", */ f:parse_Format }, +0x043c: { /* n:"ContinueBigName", */ }, +0x04bc: { /* n:"ShrFmla", */ f:parse_ShrFmla }, +0x0800: { /* n:"HLinkTooltip", */ f:parse_HLinkTooltip }, +0x0801: { /* n:"WebPub", */ }, +0x0802: { /* n:"QsiSXTag", */ }, +0x0803: { /* n:"DBQueryExt", */ }, +0x0804: { /* n:"ExtString", */ }, +0x0805: { /* n:"TxtQry", */ }, +0x0806: { /* n:"Qsir", */ }, +0x0807: { /* n:"Qsif", */ }, +0x0808: { /* n:"RRDTQSIF", */ }, +0x0809: { /* n:"BOF", */ f:parse_BOF }, +0x080a: { /* n:"OleDbConn", */ }, +0x080b: { /* n:"WOpt", */ }, +0x080c: { /* n:"SXViewEx", */ }, +0x080d: { /* n:"SXTH", */ }, +0x080e: { /* n:"SXPIEx", */ }, +0x080f: { /* n:"SXVDTEx", */ }, +0x0810: { /* n:"SXViewEx9", */ }, +0x0812: { /* n:"ContinueFrt", */ }, +0x0813: { /* n:"RealTimeData", */ }, +0x0850: { /* n:"ChartFrtInfo", */ }, +0x0851: { /* n:"FrtWrapper", */ }, +0x0852: { /* n:"StartBlock", */ }, +0x0853: { /* n:"EndBlock", */ }, +0x0854: { /* n:"StartObject", */ }, +0x0855: { /* n:"EndObject", */ }, +0x0856: { /* n:"CatLab", */ }, +0x0857: { /* n:"YMult", */ }, +0x0858: { /* n:"SXViewLink", */ }, +0x0859: { /* n:"PivotChartBits", */ }, +0x085a: { /* n:"FrtFontList", */ }, +0x0862: { /* n:"SheetExt", */ }, +0x0863: { /* n:"BookExt", */ r:12}, +0x0864: { /* n:"SXAddl", */ }, +0x0865: { /* n:"CrErr", */ }, +0x0866: { /* n:"HFPicture", */ }, +0x0867: { /* n:"FeatHdr", */ f:parsenoop2 }, +0x0868: { /* n:"Feat", */ }, +0x086a: { /* n:"DataLabExt", */ }, +0x086b: { /* n:"DataLabExtContents", */ }, +0x086c: { /* n:"CellWatch", */ }, +0x0871: { /* n:"FeatHdr11", */ }, +0x0872: { /* n:"Feature11", */ }, +0x0874: { /* n:"DropDownObjIds", */ }, +0x0875: { /* n:"ContinueFrt11", */ }, +0x0876: { /* n:"DConn", */ }, +0x0877: { /* n:"List12", */ }, +0x0878: { /* n:"Feature12", */ }, +0x0879: { /* n:"CondFmt12", */ }, +0x087a: { /* n:"CF12", */ }, +0x087b: { /* n:"CFEx", */ }, +0x087c: { /* n:"XFCRC", */ f:parse_XFCRC, r:12 }, +0x087d: { /* n:"XFExt", */ f:parse_XFExt, r:12 }, +0x087e: { /* n:"AutoFilter12", */ }, +0x087f: { /* n:"ContinueFrt12", */ }, +0x0884: { /* n:"MDTInfo", */ }, +0x0885: { /* n:"MDXStr", */ }, +0x0886: { /* n:"MDXTuple", */ }, +0x0887: { /* n:"MDXSet", */ }, +0x0888: { /* n:"MDXProp", */ }, +0x0889: { /* n:"MDXKPI", */ }, +0x088a: { /* n:"MDB", */ }, +0x088b: { /* n:"PLV", */ }, +0x088c: { /* n:"Compat12", */ f:parsebool, r:12 }, +0x088d: { /* n:"DXF", */ }, +0x088e: { /* n:"TableStyles", */ r:12 }, +0x088f: { /* n:"TableStyle", */ }, +0x0890: { /* n:"TableStyleElement", */ }, +0x0892: { /* n:"StyleExt", */ }, +0x0893: { /* n:"NamePublish", */ }, +0x0894: { /* n:"NameCmt", */ f:parse_NameCmt, r:12 }, +0x0895: { /* n:"SortData", */ }, +0x0896: { /* n:"Theme", */ f:parse_Theme, r:12 }, +0x0897: { /* n:"GUIDTypeLib", */ }, +0x0898: { /* n:"FnGrp12", */ }, +0x0899: { /* n:"NameFnGrp12", */ }, +0x089a: { /* n:"MTRSettings", */ f:parse_MTRSettings, r:12 }, +0x089b: { /* n:"CompressPictures", */ f:parsenoop2 }, +0x089c: { /* n:"HeaderFooter", */ }, +0x089d: { /* n:"CrtLayout12", */ }, +0x089e: { /* n:"CrtMlFrt", */ }, +0x089f: { /* n:"CrtMlFrtContinue", */ }, +0x08a3: { /* n:"ForceFullCalculation", */ f:parse_ForceFullCalculation }, +0x08a4: { /* n:"ShapePropsStream", */ }, +0x08a5: { /* n:"TextPropsStream", */ }, +0x08a6: { /* n:"RichTextStream", */ }, +0x08a7: { /* n:"CrtLayout12A", */ }, +0x1001: { /* n:"Units", */ }, +0x1002: { /* n:"Chart", */ }, +0x1003: { /* n:"Series", */ }, +0x1006: { /* n:"DataFormat", */ }, +0x1007: { /* n:"LineFormat", */ }, +0x1009: { /* n:"MarkerFormat", */ }, +0x100a: { /* n:"AreaFormat", */ }, +0x100b: { /* n:"PieFormat", */ }, +0x100c: { /* n:"AttachedLabel", */ }, +0x100d: { /* n:"SeriesText", */ }, +0x1014: { /* n:"ChartFormat", */ }, +0x1015: { /* n:"Legend", */ }, +0x1016: { /* n:"SeriesList", */ }, +0x1017: { /* n:"Bar", */ }, +0x1018: { /* n:"Line", */ }, +0x1019: { /* n:"Pie", */ }, +0x101a: { /* n:"Area", */ }, +0x101b: { /* n:"Scatter", */ }, +0x101c: { /* n:"CrtLine", */ }, +0x101d: { /* n:"Axis", */ }, +0x101e: { /* n:"Tick", */ }, +0x101f: { /* n:"ValueRange", */ }, +0x1020: { /* n:"CatSerRange", */ }, +0x1021: { /* n:"AxisLine", */ }, +0x1022: { /* n:"CrtLink", */ }, +0x1024: { /* n:"DefaultText", */ }, +0x1025: { /* n:"Text", */ }, +0x1026: { /* n:"FontX", */ f:parseuint16 }, +0x1027: { /* n:"ObjectLink", */ }, +0x1032: { /* n:"Frame", */ }, +0x1033: { /* n:"Begin", */ }, +0x1034: { /* n:"End", */ }, +0x1035: { /* n:"PlotArea", */ }, +0x103a: { /* n:"Chart3d", */ }, +0x103c: { /* n:"PicF", */ }, +0x103d: { /* n:"DropBar", */ }, +0x103e: { /* n:"Radar", */ }, +0x103f: { /* n:"Surf", */ }, +0x1040: { /* n:"RadarArea", */ }, +0x1041: { /* n:"AxisParent", */ }, +0x1043: { /* n:"LegendException", */ }, +0x1044: { /* n:"ShtProps", */ f:parse_ShtProps }, +0x1045: { /* n:"SerToCrt", */ }, +0x1046: { /* n:"AxesUsed", */ }, +0x1048: { /* n:"SBaseRef", */ }, +0x104a: { /* n:"SerParent", */ }, +0x104b: { /* n:"SerAuxTrend", */ }, +0x104e: { /* n:"IFmtRecord", */ }, +0x104f: { /* n:"Pos", */ }, +0x1050: { /* n:"AlRuns", */ }, +0x1051: { /* n:"BRAI", */ }, +0x105b: { /* n:"SerAuxErrBar", */ }, +0x105c: { /* n:"ClrtClient", */ f:parse_ClrtClient }, +0x105d: { /* n:"SerFmt", */ }, +0x105f: { /* n:"Chart3DBarShape", */ }, +0x1060: { /* n:"Fbi", */ }, +0x1061: { /* n:"BopPop", */ }, +0x1062: { /* n:"AxcExt", */ }, +0x1063: { /* n:"Dat", */ }, +0x1064: { /* n:"PlotGrowth", */ }, +0x1065: { /* n:"SIIndex", */ }, +0x1066: { /* n:"GelFrame", */ }, +0x1067: { /* n:"BopPopCustom", */ }, +0x1068: { /* n:"Fbi2", */ }, + +0x0000: { /* n:"Dimensions", */ f:parse_Dimensions }, +0x0001: { /* n:"BIFF2BLANK", */ }, +0x0002: { /* n:"BIFF2INT", */ f:parse_BIFF2INT }, +0x0003: { /* n:"BIFF2NUM", */ f:parse_BIFF2NUM }, +0x0004: { /* n:"BIFF2STR", */ f:parse_BIFF2STR }, +0x0005: { /* n:"BoolErr", */ f:parse_BoolErr }, +0x0007: { /* n:"String", */ f:parse_BIFF2STRING }, +0x0008: { /* n:"BIFF2ROW", */ }, +0x0009: { /* n:"BOF", */ f:parse_BOF }, +0x000b: { /* n:"Index", */ }, +0x0016: { /* n:"ExternCount", */ f:parseuint16 }, +0x001e: { /* n:"BIFF2FORMAT", */ f:parse_BIFF2Format }, +0x001f: { /* n:"BIFF2FMTCNT", */ }, /* 16-bit cnt of BIFF2FORMAT records */ +0x0020: { /* n:"BIFF2COLINFO", */ }, +0x0021: { /* n:"Array", */ f:parse_Array }, +0x0024: { /* n:"COLWIDTH", */ }, +0x0025: { /* n:"DefaultRowHeight", */ f:parse_DefaultRowHeight }, + // 0x2c ?? + // 0x2d ?? + // 0x2e ?? + // 0x30 FONTCOUNT: number of fonts +0x0032: { /* n:"BIFF2FONTXTRA", */ f:parse_BIFF2FONTXTRA }, + // 0x35: INFOOPTS + // 0x36: TABLE (BIFF2 only) + // 0x37: TABLE2 (BIFF2 only) + // 0x38: WNDESK + // 0x39 ?? + // 0x3a: BEGINPREF + // 0x3b: ENDPREF +0x003e: { /* n:"BIFF2WINDOW2", */ }, + // 0x3f ?? + // 0x46: SHOWSCROLL + // 0x47: SHOWFORMULA + // 0x48: STATUSBAR + // 0x49: SHORTMENUS + // 0x4A: + // 0x4B: + // 0x4C: + // 0x4E: + // 0x4F: + // 0x58: TOOLBAR (BIFF3) + + /* - - - */ +0x0034: { /* n:"DDEObjName", */ }, +0x0043: { /* n:"BIFF2XF", */ }, +0x0044: { /* n:"BIFF2XFINDEX", */ f:parseuint16 }, +0x0045: { /* n:"BIFF2FONTCLR", */ }, +0x0056: { /* n:"BIFF4FMTCNT", */ }, /* 16-bit cnt, similar to BIFF2 */ +0x007e: { /* n:"RK", */ }, /* Not necessarily same as 0x027e */ +0x007f: { /* n:"ImData", */ f:parse_ImData }, +0x0087: { /* n:"Addin", */ }, +0x0088: { /* n:"Edg", */ }, +0x0089: { /* n:"Pub", */ }, + // 0x8A + // 0x8B LH: alternate menu key flag (BIFF3/4) + // 0x8E + // 0x8F +0x0091: { /* n:"Sub", */ }, + // 0x93 STYLE +0x0094: { /* n:"LHRecord", */ }, +0x0095: { /* n:"LHNGraph", */ }, +0x0096: { /* n:"Sound", */ }, + // 0xA2 FNPROTO: function prototypes (BIFF4) + // 0xA3 + // 0xA8 +0x00a9: { /* n:"CoordList", */ }, +0x00ab: { /* n:"GCW", */ }, +0x00bc: { /* n:"ShrFmla", */ }, /* Not necessarily same as 0x04bc */ +0x00bf: { /* n:"ToolbarHdr", */ }, +0x00c0: { /* n:"ToolbarEnd", */ }, +0x00c2: { /* n:"AddMenu", */ }, +0x00c3: { /* n:"DelMenu", */ }, +0x00d6: { /* n:"RString", */ f:parse_RString }, +0x00df: { /* n:"UDDesc", */ }, +0x00ea: { /* n:"TabIdConf", */ }, +0x0162: { /* n:"XL5Modify", */ }, +0x01a5: { /* n:"FileSharing2", */ }, +0x0206: { /* n:"Formula", */ f:parse_Formula }, +0x0209: { /* n:"BOF", */ f:parse_BOF }, +0x0218: { /* n:"Lbl", */ f:parse_Lbl }, +0x0223: { /* n:"ExternName", */ f:parse_ExternName }, +0x0231: { /* n:"Font", */ }, +0x0243: { /* n:"BIFF3XF", */ }, +0x0406: { /* n:"Formula", */ f:parse_Formula }, +0x0409: { /* n:"BOF", */ f:parse_BOF }, +0x0443: { /* n:"BIFF4XF", */ }, +0x086d: { /* n:"FeatInfo", */ }, +0x0873: { /* n:"FeatInfo11", */ }, +0x0881: { /* n:"SXAddl12", */ }, +0x08c0: { /* n:"AutoWebPub", */ }, +0x08c1: { /* n:"ListObj", */ }, +0x08c2: { /* n:"ListField", */ }, +0x08c3: { /* n:"ListDV", */ }, +0x08c4: { /* n:"ListCondFmt", */ }, +0x08c5: { /* n:"ListCF", */ }, +0x08c6: { /* n:"FMQry", */ }, +0x08c7: { /* n:"FMSQry", */ }, +0x08c8: { /* n:"PLV", */ }, +0x08c9: { /* n:"LnExt", */ }, +0x08ca: { /* n:"MkrExt", */ }, +0x08cb: { /* n:"CrtCoopt", */ }, +0x08d6: { /* n:"FRTArchId$", */ r:12 }, + +0x7262: {} +}; + +function write_biff_rec(ba, type, payload, length) { + var t = type; + if(isNaN(t)) return; + var len = length || (payload||[]).length || 0; + var o = ba.next(4); + o.write_shift(2, t); + o.write_shift(2, len); + if(len > 0 && is_buf(payload)) ba.push(payload); +} + +function write_biff_continue(ba, type, payload, length) { + var len = length || (payload||[]).length || 0; + if(len <= 8224) return write_biff_rec(ba, type, payload, len); + var t = type; + if(isNaN(t)) return; + var parts = payload.parts || [], sidx = 0; + var i = 0, w = 0; + while(w + (parts[sidx] || 8224) <= 8224) { w+= (parts[sidx] || 8224); sidx++; } + var o = ba.next(4); + o.write_shift(2, t); + o.write_shift(2, w); + ba.push(payload.slice(i, i + w)); + i += w; + while(i < len) { + o = ba.next(4); + o.write_shift(2, 0x3c); // TODO: figure out correct continue type + w = 0; + while(w + (parts[sidx] || 8224) <= 8224) { w+= (parts[sidx] || 8224); sidx++; } + o.write_shift(2, w); + ba.push(payload.slice(i, i+w)); i+= w; + } +} + +function write_BIFF2Cell(out, r, c) { + if(!out) out = new_buf(7); + out.write_shift(2, r); + out.write_shift(2, c); + out.write_shift(2, 0); + out.write_shift(1, 0); + return out; +} + +function write_BIFF2BERR(r, c, val, t) { + var out = new_buf(9); + write_BIFF2Cell(out, r, c); + write_Bes(val, t || 'b', out); + return out; +} + +/* TODO: codepage, large strings */ +function write_BIFF2LABEL(r, c, val) { + var out = new_buf(8 + 2*val.length); + write_BIFF2Cell(out, r, c); + out.write_shift(1, val.length); + out.write_shift(val.length, val, 'sbcs'); + return out.l < out.length ? out.slice(0, out.l) : out; +} + +function write_ws_biff2_cell(ba, cell, R, C) { + if(cell.v != null) switch(cell.t) { + case 'd': case 'n': + var v = cell.t == 'd' ? datenum(parseDate(cell.v)) : cell.v; + if((v == (v|0)) && (v >= 0) && (v < 65536)) + write_biff_rec(ba, 0x0002, write_BIFF2INT(R, C, v)); + else + write_biff_rec(ba, 0x0003, write_BIFF2NUM(R,C, v)); + return; + case 'b': case 'e': write_biff_rec(ba, 0x0005, write_BIFF2BERR(R, C, cell.v, cell.t)); return; + /* TODO: codepage, sst */ + case 's': case 'str': + write_biff_rec(ba, 0x0004, write_BIFF2LABEL(R, C, (cell.v||"").slice(0,255))); + return; + } + write_biff_rec(ba, 0x0001, write_BIFF2Cell(null, R, C)); +} + +function write_ws_biff2(ba, ws, idx, opts) { + var dense = Array.isArray(ws); + var range = safe_decode_range(ws['!ref'] || "A1"), ref, rr = "", cols = []; + if(range.e.c > 0xFF || range.e.r > 0x3FFF) { + if(opts.WTF) throw new Error("Range " + (ws['!ref'] || "A1") + " exceeds format limit A1:IV16384"); + range.e.c = Math.min(range.e.c, 0xFF); + range.e.r = Math.min(range.e.c, 0x3FFF); + ref = encode_range(range); + } + for(var R = range.s.r; R <= range.e.r; ++R) { + rr = encode_row(R); + for(var C = range.s.c; C <= range.e.c; ++C) { + if(R === range.s.r) cols[C] = encode_col(C); + ref = cols[C] + rr; + var cell = dense ? (ws[R]||[])[C] : ws[ref]; + if(!cell) continue; + /* write cell */ + write_ws_biff2_cell(ba, cell, R, C, opts); + } + } +} + +/* Based on test files */ +function write_biff2_buf(wb, opts) { + var o = opts || {}; + if(DENSE != null && o.dense == null) o.dense = DENSE; + var ba = buf_array(); + var idx = 0; + for(var i=0;i 0xFF || range.e.r >= MAX_ROWS) { + if(opts.WTF) throw new Error("Range " + (ws['!ref'] || "A1") + " exceeds format limit A1:IV16384"); + range.e.c = Math.min(range.e.c, 0xFF); + range.e.r = Math.min(range.e.c, MAX_ROWS-1); + } + + write_biff_rec(ba, 0x0809, write_BOF(wb, 0x10, opts)); + /* [Uncalced] Index */ + write_biff_rec(ba, 0x000d /* CalcMode */, writeuint16(1)); + write_biff_rec(ba, 0x000c /* CalcCount */, writeuint16(100)); + write_biff_rec(ba, 0x000f /* CalcRefMode */, writebool(true)); + write_biff_rec(ba, 0x0011 /* CalcIter */, writebool(false)); + write_biff_rec(ba, 0x0010 /* CalcDelta */, write_Xnum(0.001)); + write_biff_rec(ba, 0x005f /* CalcSaveRecalc */, writebool(true)); + write_biff_rec(ba, 0x002a /* PrintRowCol */, writebool(false)); + write_biff_rec(ba, 0x002b /* PrintGrid */, writebool(false)); + write_biff_rec(ba, 0x0082 /* GridSet */, writeuint16(1)); + write_biff_rec(ba, 0x0080 /* Guts */, write_Guts([0,0])); + /* DefaultRowHeight WsBool [Sync] [LPr] [HorizontalPageBreaks] [VerticalPageBreaks] */ + /* Header (string) */ + /* Footer (string) */ + write_biff_rec(ba, 0x0083 /* HCenter */, writebool(false)); + write_biff_rec(ba, 0x0084 /* VCenter */, writebool(false)); + /* ... */ + if(b8) write_ws_cols_biff8(ba, ws["!cols"]); + /* ... */ + write_biff_rec(ba, 0x200, write_Dimensions(range, opts)); + /* ... */ + + if(b8) ws['!links'] = []; + for(var R = range.s.r; R <= range.e.r; ++R) { + rr = encode_row(R); + for(var C = range.s.c; C <= range.e.c; ++C) { + if(R === range.s.r) cols[C] = encode_col(C); + ref = cols[C] + rr; + var cell = dense ? (ws[R]||[])[C] : ws[ref]; + if(!cell) continue; + /* write cell */ + write_ws_biff8_cell(ba, cell, R, C, opts); + if(b8 && cell.l) ws['!links'].push([ref, cell.l]); + } + } + var cname = _sheet.CodeName || _sheet.name || s; + /* ... */ + if(b8) write_biff_rec(ba, 0x023e /* Window2 */, write_Window2((_WB.Views||[])[0])); + /* ... */ + if(b8 && (ws['!merges']||[]).length) write_biff_rec(ba, 0x00e5 /* MergeCells */, write_MergeCells(ws['!merges'])); + /* [LRng] *QUERYTABLE [PHONETICINFO] CONDFMTS */ + if(b8) write_ws_biff8_hlinks(ba, ws); + /* [DVAL] */ + write_biff_rec(ba, 0x01ba /* CodeName */, write_XLUnicodeString(cname, opts)); + /* *WebPub *CellWatch [SheetExt] */ + if(b8) write_FEAT(ba, ws); + /* *FEAT11 *RECORD12 */ + write_biff_rec(ba, 0x000a /* EOF */); + return ba.end(); +} + +/* [MS-XLS] 2.1.7.20.3 */ +function write_biff8_global(wb, bufs, opts) { + var A = buf_array(); + var _WB = ((wb||{}).Workbook||{}); + var _sheets = (_WB.Sheets||[]); + var _wb = _WB.WBProps||{}; + var b8 = opts.biff == 8, b5 = opts.biff == 5; + write_biff_rec(A, 0x0809, write_BOF(wb, 0x05, opts)); + if(opts.bookType == "xla") write_biff_rec(A, 0x0087 /* Addin */); + write_biff_rec(A, 0x00e1 /* InterfaceHdr */, b8 ? writeuint16(0x04b0) : null); + write_biff_rec(A, 0x00c1 /* Mms */, writezeroes(2)); + if(b5) write_biff_rec(A, 0x00bf /* ToolbarHdr */); + if(b5) write_biff_rec(A, 0x00c0 /* ToolbarEnd */); + write_biff_rec(A, 0x00e2 /* InterfaceEnd */); + write_biff_rec(A, 0x005c /* WriteAccess */, write_WriteAccess("SheetJS", opts)); + /* [FileSharing] */ + write_biff_rec(A, 0x0042 /* CodePage */, writeuint16(b8 ? 0x04b0 : 0x04E4)); + /* *2047 Lel */ + if(b8) write_biff_rec(A, 0x0161 /* DSF */, writeuint16(0)); + if(b8) write_biff_rec(A, 0x01c0 /* Excel9File */); + write_biff_rec(A, 0x013d /* RRTabId */, write_RRTabId(wb.SheetNames.length)); + if(b8 && wb.vbaraw) write_biff_rec(A, 0x00d3 /* ObProj */); + /* [ObNoMacros] */ + if(b8 && wb.vbaraw) { + var cname = _wb.CodeName || "ThisWorkbook"; + write_biff_rec(A, 0x01ba /* CodeName */, write_XLUnicodeString(cname, opts)); + } + write_biff_rec(A, 0x009c /* BuiltInFnGroupCount */, writeuint16(0x11)); + /* *FnGroupName *FnGrp12 */ + /* *Lbl */ + /* [OleObjectSize] */ + write_biff_rec(A, 0x0019 /* WinProtect */, writebool(false)); + write_biff_rec(A, 0x0012 /* Protect */, writebool(false)); + write_biff_rec(A, 0x0013 /* Password */, writeuint16(0)); + if(b8) write_biff_rec(A, 0x01af /* Prot4Rev */, writebool(false)); + if(b8) write_biff_rec(A, 0x01bc /* Prot4RevPass */, writeuint16(0)); + write_biff_rec(A, 0x003d /* Window1 */, write_Window1(opts)); + write_biff_rec(A, 0x0040 /* Backup */, writebool(false)); + write_biff_rec(A, 0x008d /* HideObj */, writeuint16(0)); + write_biff_rec(A, 0x0022 /* Date1904 */, writebool(safe1904(wb)=="true")); + write_biff_rec(A, 0x000e /* CalcPrecision */, writebool(true)); + if(b8) write_biff_rec(A, 0x01b7 /* RefreshAll */, writebool(false)); + write_biff_rec(A, 0x00DA /* BookBool */, writeuint16(0)); + /* ... */ + write_FONTS_biff8(A, wb, opts); + write_FMTS_biff8(A, wb.SSF, opts); + write_CELLXFS_biff8(A, opts); + /* ... */ + if(b8) write_biff_rec(A, 0x0160 /* UsesELFs */, writebool(false)); + var a = A.end(); + + var C = buf_array(); + /* METADATA [MTRSettings] [ForceFullCalculation] */ + if(b8) write_biff_rec(C, 0x008C, write_Country()); + /* *SUPBOOK *LBL *RTD [RecalcId] *HFPicture *MSODRAWINGGROUP */ + + /* BIFF8: [SST *Continue] ExtSST */ + if(b8 && opts.Strings) write_biff_continue(C, 0x00FC, write_SST(opts.Strings, opts)); + + /* *WebPub [WOpt] [CrErr] [BookExt] *FeatHdr *DConn [THEME] [CompressPictures] [Compat12] [GUIDTypeLib] */ + write_biff_rec(C, 0x000A /* EOF */); + var c = C.end(); + + var B = buf_array(); + var blen = 0, j = 0; + for(j = 0; j < wb.SheetNames.length; ++j) blen += (b8 ? 12 : 11) + (b8 ? 2 : 1) * wb.SheetNames[j].length; + var start = a.length + blen + c.length; + for(j = 0; j < wb.SheetNames.length; ++j) { + var _sheet = _sheets[j] || ({}); + write_biff_rec(B, 0x0085 /* BoundSheet8 */, write_BoundSheet8({pos:start, hs:_sheet.Hidden||0, dt:0, name:wb.SheetNames[j]}, opts)); + start += bufs[j].length; + } + /* 1*BoundSheet8 */ + var b = B.end(); + if(blen != b.length) throw new Error("BS8 " + blen + " != " + b.length); + + var out = []; + if(a.length) out.push(a); + if(b.length) out.push(b); + if(c.length) out.push(c); + return bconcat(out); +} + +/* [MS-XLS] 2.1.7.20 Workbook Stream */ +function write_biff8_buf(wb, opts) { + var o = opts || {}; + var bufs = []; + + if(wb && !wb.SSF) { + wb.SSF = dup(table_fmt); + } + if(wb && wb.SSF) { + make_ssf(); SSF_load_table(wb.SSF); + // $FlowIgnore + o.revssf = evert_num(wb.SSF); o.revssf[wb.SSF[65535]] = 0; + o.ssf = wb.SSF; + } + + o.Strings = []; o.Strings.Count = 0; o.Strings.Unique = 0; + fix_write_opts(o); + + o.cellXfs = []; + get_cell_style(o.cellXfs, {}, {revssf:{"General":0}}); + + if(!wb.Props) wb.Props = {}; + + for(var i = 0; i < wb.SheetNames.length; ++i) bufs[bufs.length] = write_ws_biff8(i, o, wb); + bufs.unshift(write_biff8_global(wb, bufs, o)); + return bconcat(bufs); +} + +function write_biff_buf(wb, opts) { + for(var i = 0; i <= wb.SheetNames.length; ++i) { + var ws = wb.Sheets[wb.SheetNames[i]]; + if(!ws || !ws["!ref"]) continue; + var range = decode_range(ws["!ref"]); + if(range.e.c > 255) { // note: 255 is IV + if(typeof console != "undefined" && console.error) console.error("Worksheet '" + wb.SheetNames[i] + "' extends beyond column IV (255). Data may be lost."); + } + } + + var o = opts || {}; + switch(o.biff || 2) { + case 8: case 5: return write_biff8_buf(wb, opts); + case 4: case 3: case 2: return write_biff2_buf(wb, opts); + } + throw new Error("invalid type " + o.bookType + " for BIFF"); +} +/* note: browser DOM element cannot see mso- style attrs, must parse */ +function html_to_sheet(str, _opts) { + var opts = _opts || {}; + if(DENSE != null && opts.dense == null) opts.dense = DENSE; + var ws = opts.dense ? ([]) : ({}); + str = str.replace(//g, ""); + var mtch = str.match(/"); + var mtch2 = str.match(/<\/table/i); + var i = mtch.index, j = mtch2 && mtch2.index || str.length; + var rows = split_regex(str.slice(i, j), /(:?]*>)/i, ""); + var R = -1, C = 0, RS = 0, CS = 0; + var range = {s:{r:10000000, c:10000000},e:{r:0,c:0}}; + var merges = []; + for(i = 0; i < rows.length; ++i) { + var row = rows[i].trim(); + var hd = row.slice(0,3).toLowerCase(); + if(hd == "/i); + for(j = 0; j < cells.length; ++j) { + var cell = cells[j].trim(); + if(!cell.match(/")) > -1) m = m.slice(cc+1); + for(var midx = 0; midx < merges.length; ++midx) { + var _merge = merges[midx]; + if(_merge.s.c == C && _merge.s.r < R && R <= _merge.e.r) { C = _merge.e.c + 1; midx = -1; } + } + var tag = parsexmltag(cell.slice(0, cell.indexOf(">"))); + CS = tag.colspan ? +tag.colspan : 1; + if((RS = +tag.rowspan)>1 || CS>1) merges.push({s:{r:R,c:C},e:{r:R + (RS||1) - 1, c:C + CS - 1}}); + var _t = tag.t || tag["data-t"] || ""; + /* TODO: generate stub cells */ + if(!m.length) { C += CS; continue; } + m = htmldecode(m); + if(range.s.r > R) range.s.r = R; if(range.e.r < R) range.e.r = R; + if(range.s.c > C) range.s.c = C; if(range.e.c < C) range.e.c = C; + if(!m.length) { C += CS; continue; } + var o = {t:'s', v:m}; + if(opts.raw || !m.trim().length || _t == 's'){} + else if(m === 'TRUE') o = {t:'b', v:true}; + else if(m === 'FALSE') o = {t:'b', v:false}; + else if(!isNaN(fuzzynum(m))) o = {t:'n', v:fuzzynum(m)}; + else if(!isNaN(fuzzydate(m).getDate())) { + o = ({t:'d', v:parseDate(m)}); + if(!opts.cellDates) o = ({t:'n', v:datenum(o.v)}); + o.z = opts.dateNF || table_fmt[14]; + } + if(opts.dense) { if(!ws[R]) ws[R] = []; ws[R][C] = o; } + else ws[encode_cell({r:R, c:C})] = o; + C += CS; + } + } + ws['!ref'] = encode_range(range); + if(merges.length) ws["!merges"] = merges; + return ws; +} +function make_html_row(ws, r, R, o) { + var M = (ws['!merges'] ||[]); + var oo = []; + for(var C = r.s.c; C <= r.e.c; ++C) { + var RS = 0, CS = 0; + for(var j = 0; j < M.length; ++j) { + if(M[j].s.r > R || M[j].s.c > C) continue; + if(M[j].e.r < R || M[j].e.c < C) continue; + if(M[j].s.r < R || M[j].s.c < C) { RS = -1; break; } + RS = M[j].e.r - M[j].s.r + 1; CS = M[j].e.c - M[j].s.c + 1; break; + } + if(RS < 0) continue; + var coord = encode_cell({r:R,c:C}); + var cell = o.dense ? (ws[R]||[])[C] : ws[coord]; + /* TODO: html entities */ + var w = (cell && cell.v != null) && (cell.h || escapehtml(cell.w || (format_cell(cell), cell.w) || "")) || ""; + var sp = ({}); + if(RS > 1) sp.rowspan = RS; + if(CS > 1) sp.colspan = CS; + if(o.editable) w = '' + w + ''; + else if(cell) { + sp["data-t"] = cell && cell.t || 'z'; + if(cell.v != null) sp["data-v"] = cell.v; + if(cell.z != null) sp["data-z"] = cell.z; + if(cell.l && (cell.l.Target || "#").charAt(0) != "#") w = '' + w + ''; + } + sp.id = (o.id || "sjs") + "-" + coord; + oo.push(writextag('td', w, sp)); + } + var preamble = ""; + return preamble + oo.join("") + ""; +} + +var HTML_BEGIN = 'SheetJS Table Export'; +var HTML_END = ''; + +function html_to_workbook(str, opts) { + var mtch = str.match(/[\s\S]*?<\/table>/gi); + if(!mtch || mtch.length == 0) throw new Error("Invalid HTML: could not find
"); + if(mtch.length == 1) return sheet_to_workbook(html_to_sheet(mtch[0], opts), opts); + var wb = book_new(); + mtch.forEach(function(s, idx) { book_append_sheet(wb, html_to_sheet(s, opts), "Sheet" + (idx+1)); }); + return wb; +} + +function make_html_preamble(ws, R, o) { + var out = []; + return out.join("") + ''; +} + +function sheet_to_html(ws, opts/*, wb:?Workbook*/) { + var o = opts || {}; + var header = o.header != null ? o.header : HTML_BEGIN; + var footer = o.footer != null ? o.footer : HTML_END; + var out = [header]; + var r = decode_range(ws['!ref']); + o.dense = Array.isArray(ws); + out.push(make_html_preamble(ws, r, o)); + for(var R = r.s.r; R <= r.e.r; ++R) out.push(make_html_row(ws, r, R, o)); + out.push("
" + footer); + return out.join(""); +} + +function sheet_add_dom(ws, table, _opts) { + var opts = _opts || {}; + if(DENSE != null) opts.dense = DENSE; + var or_R = 0, or_C = 0; + if(opts.origin != null) { + if(typeof opts.origin == 'number') or_R = opts.origin; + else { + var _origin = typeof opts.origin == "string" ? decode_cell(opts.origin) : opts.origin; + or_R = _origin.r; or_C = _origin.c; + } + } + + var rows = table.getElementsByTagName('tr'); + var sheetRows = Math.min(opts.sheetRows||10000000, rows.length); + var range = {s:{r:0,c:0},e:{r:or_R,c:or_C}}; + if(ws["!ref"]) { + var _range = decode_range(ws["!ref"]); + range.s.r = Math.min(range.s.r, _range.s.r); + range.s.c = Math.min(range.s.c, _range.s.c); + range.e.r = Math.max(range.e.r, _range.e.r); + range.e.c = Math.max(range.e.c, _range.e.c); + if(or_R == -1) range.e.r = or_R = _range.e.r + 1; + } + var merges = [], midx = 0; + var rowinfo = ws["!rows"] || (ws["!rows"] = []); + var _R = 0, R = 0, _C = 0, C = 0, RS = 0, CS = 0; + if(!ws["!cols"]) ws['!cols'] = []; + for(; _R < rows.length && R < sheetRows; ++_R) { + var row = rows[_R]; + if (is_dom_element_hidden(row)) { + if (opts.display) continue; + rowinfo[R] = {hidden: true}; + } + var elts = (row.children); + for(_C = C = 0; _C < elts.length; ++_C) { + var elt = elts[_C]; + if (opts.display && is_dom_element_hidden(elt)) continue; + var v = elt.hasAttribute('data-v') ? elt.getAttribute('data-v') : elt.hasAttribute('v') ? elt.getAttribute('v') : htmldecode(elt.innerHTML); + var z = elt.getAttribute('data-z') || elt.getAttribute('z'); + for(midx = 0; midx < merges.length; ++midx) { + var m = merges[midx]; + if(m.s.c == C + or_C && m.s.r < R + or_R && R + or_R <= m.e.r) { C = m.e.c+1 - or_C; midx = -1; } + } + /* TODO: figure out how to extract nonstandard mso- style */ + CS = +elt.getAttribute("colspan") || 1; + if( ((RS = (+elt.getAttribute("rowspan") || 1)))>1 || CS>1) merges.push({s:{r:R + or_R,c:C + or_C},e:{r:R + or_R + (RS||1) - 1, c:C + or_C + (CS||1) - 1}}); + var o = {t:'s', v:v}; + var _t = elt.getAttribute("data-t") || elt.getAttribute("t") || ""; + if(v != null) { + if(v.length == 0) o.t = _t || 'z'; + else if(opts.raw || v.trim().length == 0 || _t == "s"){} + else if(v === 'TRUE') o = {t:'b', v:true}; + else if(v === 'FALSE') o = {t:'b', v:false}; + else if(!isNaN(fuzzynum(v))) o = {t:'n', v:fuzzynum(v)}; + else if(!isNaN(fuzzydate(v).getDate())) { + o = ({t:'d', v:parseDate(v)}); + if(!opts.cellDates) o = ({t:'n', v:datenum(o.v)}); + o.z = opts.dateNF || table_fmt[14]; + } + } + if(o.z === undefined && z != null) o.z = z; + /* The first link is used. Links are assumed to be fully specified. + * TODO: The right way to process relative links is to make a new */ + var l = "", Aelts = elt.getElementsByTagName("A"); + if(Aelts && Aelts.length) for(var Aelti = 0; Aelti < Aelts.length; ++Aelti) if(Aelts[Aelti].hasAttribute("href")) { + l = Aelts[Aelti].getAttribute("href"); if(l.charAt(0) != "#") break; + } + if(l && l.charAt(0) != "#") o.l = ({ Target: l }); + if(opts.dense) { if(!ws[R + or_R]) ws[R + or_R] = []; ws[R + or_R][C + or_C] = o; } + else ws[encode_cell({c:C + or_C, r:R + or_R})] = o; + if(range.e.c < C + or_C) range.e.c = C + or_C; + C += CS; + } + ++R; + } + if(merges.length) ws['!merges'] = (ws["!merges"] || []).concat(merges); + range.e.r = Math.max(range.e.r, R - 1 + or_R); + ws['!ref'] = encode_range(range); + if(R >= sheetRows) ws['!fullref'] = encode_range((range.e.r = rows.length-_R+R-1 + or_R,range)); // We can count the real number of rows to parse but we don't to improve the performance + return ws; +} + +function parse_dom_table(table, _opts) { + var opts = _opts || {}; + var ws = opts.dense ? ([]) : ({}); + return sheet_add_dom(ws, table, _opts); +} + +function table_to_book(table, opts) { + return sheet_to_workbook(parse_dom_table(table, opts), opts); +} + +function is_dom_element_hidden(element) { + var display = ''; + var get_computed_style = get_get_computed_style_function(element); + if(get_computed_style) display = get_computed_style(element).getPropertyValue('display'); + if(!display) display = element.style && element.style.display; + return display === 'none'; +} + +/* global getComputedStyle */ +function get_get_computed_style_function(element) { + // The proper getComputedStyle implementation is the one defined in the element window + if(element.ownerDocument.defaultView && typeof element.ownerDocument.defaultView.getComputedStyle === 'function') return element.ownerDocument.defaultView.getComputedStyle; + // If it is not available, try to get one from the global namespace + if(typeof getComputedStyle === 'function') return getComputedStyle; + return null; +} +/* OpenDocument */ +function parse_text_p(text) { + /* 6.1.2 White Space Characters */ + var fixed = text + .replace(/[\t\r\n]/g, " ").trim().replace(/ +/g, " ") + .replace(//g," ") + .replace(//g, function($$,$1) { return Array(parseInt($1,10)+1).join(" "); }) + .replace(/]*\/>/g,"\t") + .replace(//g,"\n"); + var v = unescapexml(fixed.replace(/<[^>]*>/g,"")); + + return [v]; +} + +var number_formats_ods = { + /* ods name: [short ssf fmt, long ssf fmt] */ + day: ["d", "dd"], + month: ["m", "mm"], + year: ["y", "yy"], + hours: ["h", "hh"], + minutes: ["m", "mm"], + seconds: ["s", "ss"], + "am-pm": ["A/P", "AM/PM"], + "day-of-week": ["ddd", "dddd"], + era: ["e", "ee"], + /* there is no native representation of LO "Q" format */ + quarter: ["\\Qm", "m\\\"th quarter\""] +}; + + +function parse_content_xml(d, _opts) { + var opts = _opts || {}; + if(DENSE != null && opts.dense == null) opts.dense = DENSE; + var str = xlml_normalize(d); + var state = [], tmp; + var tag; + var NFtag = {name:""}, NF = "", pidx = 0; + var sheetag; + var rowtag; + var Sheets = {}, SheetNames = []; + var ws = opts.dense ? ([]) : ({}); + var Rn, q; + var ctag = ({value:""}); + var textp = "", textpidx = 0, textptag; + var textR = []; + var R = -1, C = -1, range = {s: {r:1000000,c:10000000}, e: {r:0, c:0}}; + var row_ol = 0; + var number_format_map = {}; + var merges = [], mrange = {}, mR = 0, mC = 0; + var rowinfo = [], rowpeat = 1, colpeat = 1; + var arrayf = []; + var WB = {Names:[]}; + var atag = ({}); + var _Ref = ["", ""]; + var comments = [], comment = ({}); + var creator = "", creatoridx = 0; + var isstub = false, intable = false; + var i = 0; + xlmlregex.lastIndex = 0; + str = str.replace(//mg,"").replace(//gm,""); + while((Rn = xlmlregex.exec(str))) switch((Rn[3]=Rn[3].replace(/_.*$/,""))) { + + case 'table': case '工作表': // 9.1.2 + if(Rn[1]==='/') { + if(range.e.c >= range.s.c && range.e.r >= range.s.r) ws['!ref'] = encode_range(range); + else ws['!ref'] = "A1:A1"; + if(opts.sheetRows > 0 && opts.sheetRows <= range.e.r) { + ws['!fullref'] = ws['!ref']; + range.e.r = opts.sheetRows - 1; + ws['!ref'] = encode_range(range); + } + if(merges.length) ws['!merges'] = merges; + if(rowinfo.length) ws["!rows"] = rowinfo; + sheetag.name = sheetag['名称'] || sheetag.name; + if(typeof JSON !== 'undefined') JSON.stringify(sheetag); + SheetNames.push(sheetag.name); + Sheets[sheetag.name] = ws; + intable = false; + } + else if(Rn[0].charAt(Rn[0].length-2) !== '/') { + sheetag = parsexmltag(Rn[0], false); + R = C = -1; + range.s.r = range.s.c = 10000000; range.e.r = range.e.c = 0; + ws = opts.dense ? ([]) : ({}); merges = []; + rowinfo = []; + intable = true; + } + break; + + case 'table-row-group': // 9.1.9 + if(Rn[1] === "/") --row_ol; else ++row_ol; + break; + case 'table-row': case '行': // 9.1.3 + if(Rn[1] === '/') { R+=rowpeat; rowpeat = 1; break; } + rowtag = parsexmltag(Rn[0], false); + if(rowtag['行号']) R = rowtag['行号'] - 1; else if(R == -1) R = 0; + rowpeat = +rowtag['number-rows-repeated'] || 1; + /* TODO: remove magic */ + if(rowpeat < 10) for(i = 0; i < rowpeat; ++i) if(row_ol > 0) rowinfo[R + i] = {level: row_ol}; + C = -1; break; + case 'covered-table-cell': // 9.1.5 + if(Rn[1] !== '/') ++C; + if(opts.sheetStubs) { + if(opts.dense) { if(!ws[R]) ws[R] = []; ws[R][C] = {t:'z'}; } + else ws[encode_cell({r:R,c:C})] = {t:'z'}; + } + textp = ""; textR = []; + break; /* stub */ + case 'table-cell': case '数据': + if(Rn[0].charAt(Rn[0].length-2) === '/') { + ++C; + ctag = parsexmltag(Rn[0], false); + colpeat = parseInt(ctag['number-columns-repeated']||"1", 10); + q = ({t:'z', v:null}); + if(ctag.formula && opts.cellFormula != false) q.f = ods_to_csf_formula(unescapexml(ctag.formula)); + if((ctag['数据类型'] || ctag['value-type']) == "string") { + q.t = "s"; q.v = unescapexml(ctag['string-value'] || ""); + if(opts.dense) { + if(!ws[R]) ws[R] = []; + ws[R][C] = q; + } else { + ws[encode_cell({r:R,c:C})] = q; + } + } + C+= colpeat-1; + } else if(Rn[1]!=='/') { + ++C; + textp = ""; textpidx = 0; textR = []; + colpeat = 1; + var rptR = rowpeat ? R + rowpeat - 1 : R; + if(C > range.e.c) range.e.c = C; + if(C < range.s.c) range.s.c = C; + if(R < range.s.r) range.s.r = R; + if(rptR > range.e.r) range.e.r = rptR; + ctag = parsexmltag(Rn[0], false); + comments = []; comment = ({}); + q = ({t:ctag['数据类型'] || ctag['value-type'], v:null}); + if(opts.cellFormula) { + if(ctag.formula) ctag.formula = unescapexml(ctag.formula); + if(ctag['number-matrix-columns-spanned'] && ctag['number-matrix-rows-spanned']) { + mR = parseInt(ctag['number-matrix-rows-spanned'],10) || 0; + mC = parseInt(ctag['number-matrix-columns-spanned'],10) || 0; + mrange = {s: {r:R,c:C}, e:{r:R + mR-1,c:C + mC-1}}; + q.F = encode_range(mrange); + arrayf.push([mrange, q.F]); + } + if(ctag.formula) q.f = ods_to_csf_formula(ctag.formula); + else for(i = 0; i < arrayf.length; ++i) + if(R >= arrayf[i][0].s.r && R <= arrayf[i][0].e.r) + if(C >= arrayf[i][0].s.c && C <= arrayf[i][0].e.c) + q.F = arrayf[i][1]; + } + if(ctag['number-columns-spanned'] || ctag['number-rows-spanned']) { + mR = parseInt(ctag['number-rows-spanned'],10) || 0; + mC = parseInt(ctag['number-columns-spanned'],10) || 0; + mrange = {s: {r:R,c:C}, e:{r:R + mR-1,c:C + mC-1}}; + merges.push(mrange); + } + + /* 19.675.2 table:number-columns-repeated */ + if(ctag['number-columns-repeated']) colpeat = parseInt(ctag['number-columns-repeated'], 10); + + /* 19.385 office:value-type */ + switch(q.t) { + case 'boolean': q.t = 'b'; q.v = parsexmlbool(ctag['boolean-value']); break; + case 'float': q.t = 'n'; q.v = parseFloat(ctag.value); break; + case 'percentage': q.t = 'n'; q.v = parseFloat(ctag.value); break; + case 'currency': q.t = 'n'; q.v = parseFloat(ctag.value); break; + case 'date': q.t = 'd'; q.v = parseDate(ctag['date-value']); + if(!opts.cellDates) { q.t = 'n'; q.v = datenum(q.v); } + q.z = 'm/d/yy'; break; + case 'time': q.t = 'n'; q.v = parse_isodur(ctag['time-value'])/86400; + if(opts.cellDates) { q.t = 'd'; q.v = numdate(q.v); } + q.z = 'HH:MM:SS'; break; + case 'number': q.t = 'n'; q.v = parseFloat(ctag['数据数值']); break; + default: + if(q.t === 'string' || q.t === 'text' || !q.t) { + q.t = 's'; + if(ctag['string-value'] != null) { textp = unescapexml(ctag['string-value']); textR = []; } + } else throw new Error('Unsupported value type ' + q.t); + } + } else { + isstub = false; + if(q.t === 's') { + q.v = textp || ''; + if(textR.length) q.R = textR; + isstub = textpidx == 0; + } + if(atag.Target) q.l = atag; + if(comments.length > 0) { q.c = comments; comments = []; } + if(textp && opts.cellText !== false) q.w = textp; + if(isstub) { q.t = "z"; delete q.v; } + if(!isstub || opts.sheetStubs) { + if(!(opts.sheetRows && opts.sheetRows <= R)) { + for(var rpt = 0; rpt < rowpeat; ++rpt) { + colpeat = parseInt(ctag['number-columns-repeated']||"1", 10); + if(opts.dense) { + if(!ws[R + rpt]) ws[R + rpt] = []; + ws[R + rpt][C] = rpt == 0 ? q : dup(q); + while(--colpeat > 0) ws[R + rpt][C + colpeat] = dup(q); + } else { + ws[encode_cell({r:R + rpt,c:C})] = q; + while(--colpeat > 0) ws[encode_cell({r:R + rpt,c:C + colpeat})] = dup(q); + } + if(range.e.c <= C) range.e.c = C; + } + } + } + colpeat = parseInt(ctag['number-columns-repeated']||"1", 10); + C += colpeat-1; colpeat = 0; + q = {}; + textp = ""; textR = []; + } + atag = ({}); + break; // 9.1.4 + + /* pure state */ + case 'document': // TODO: is the root for FODS + case 'document-content': case '电子表格文档': // 3.1.3.2 + case 'spreadsheet': case '主体': // 3.7 + case 'scripts': // 3.12 + case 'styles': // TODO + case 'font-face-decls': // 3.14 + case 'master-styles': // 3.15.4 -- relevant for FODS + if(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw "Bad state: "+tmp;} + else if(Rn[0].charAt(Rn[0].length-2) !== '/') state.push([Rn[3], true]); + break; + + case 'annotation': // 14.1 + if(Rn[1]==='/'){ + if((tmp=state.pop())[0]!==Rn[3]) throw "Bad state: "+tmp; + comment.t = textp; + if(textR.length) comment.R = textR; + comment.a = creator; + comments.push(comment); + } + else if(Rn[0].charAt(Rn[0].length-2) !== '/') {state.push([Rn[3], false]);} + creator = ""; creatoridx = 0; + textp = ""; textpidx = 0; textR = []; + break; + + case 'creator': // 4.3.2.7 + if(Rn[1]==='/') { creator = str.slice(creatoridx,Rn.index); } + else creatoridx = Rn.index + Rn[0].length; + break; + + /* ignore state */ + case 'meta': case '元数据': // TODO: FODS/UOF + case 'settings': // TODO: + case 'config-item-set': // TODO: + case 'config-item-map-indexed': // TODO: + case 'config-item-map-entry': // TODO: + case 'config-item-map-named': // TODO: + case 'shapes': // 9.2.8 + case 'frame': // 10.4.2 + case 'text-box': // 10.4.3 + case 'image': // 10.4.4 + case 'data-pilot-tables': // 9.6.2 + case 'list-style': // 16.30 + case 'form': // 13.13 + case 'dde-links': // 9.8 + case 'event-listeners': // TODO + case 'chart': // TODO + if(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw "Bad state: "+tmp;} + else if(Rn[0].charAt(Rn[0].length-2) !== '/') state.push([Rn[3], false]); + textp = ""; textpidx = 0; textR = []; + break; + + case 'scientific-number': // TODO: + break; + case 'currency-symbol': // TODO: + break; + case 'currency-style': // TODO: + break; + case 'number-style': // 16.27.2 + case 'percentage-style': // 16.27.9 + case 'date-style': // 16.27.10 + case 'time-style': // 16.27.18 + if(Rn[1]==='/'){ + number_format_map[NFtag.name] = NF; + if((tmp=state.pop())[0]!==Rn[3]) throw "Bad state: "+tmp; + } else if(Rn[0].charAt(Rn[0].length-2) !== '/') { + NF = ""; + NFtag = parsexmltag(Rn[0], false); + state.push([Rn[3], true]); + } break; + + case 'script': break; // 3.13 + case 'libraries': break; // TODO: + case 'automatic-styles': break; // 3.15.3 + + case 'default-style': // TODO: + case 'page-layout': break; // TODO: + case 'style': // 16.2 + break; + case 'map': break; // 16.3 + case 'font-face': break; // 16.21 + + case 'paragraph-properties': break; // 17.6 + case 'table-properties': break; // 17.15 + case 'table-column-properties': break; // 17.16 + case 'table-row-properties': break; // 17.17 + case 'table-cell-properties': break; // 17.18 + + case 'number': // 16.27.3 + switch(state[state.length-1][0]) { + case 'time-style': + case 'date-style': + tag = parsexmltag(Rn[0], false); + NF += number_formats_ods[Rn[3]][tag.style==='long'?1:0]; break; + } break; + + case 'fraction': break; // TODO 16.27.6 + + case 'day': // 16.27.11 + case 'month': // 16.27.12 + case 'year': // 16.27.13 + case 'era': // 16.27.14 + case 'day-of-week': // 16.27.15 + case 'week-of-year': // 16.27.16 + case 'quarter': // 16.27.17 + case 'hours': // 16.27.19 + case 'minutes': // 16.27.20 + case 'seconds': // 16.27.21 + case 'am-pm': // 16.27.22 + switch(state[state.length-1][0]) { + case 'time-style': + case 'date-style': + tag = parsexmltag(Rn[0], false); + NF += number_formats_ods[Rn[3]][tag.style==='long'?1:0]; break; + } break; + + case 'boolean-style': break; // 16.27.23 + case 'boolean': break; // 16.27.24 + case 'text-style': break; // 16.27.25 + case 'text': // 16.27.26 + if(Rn[0].slice(-2) === "/>") break; + else if(Rn[1]==="/") switch(state[state.length-1][0]) { + case 'number-style': + case 'date-style': + case 'time-style': + NF += str.slice(pidx, Rn.index); + break; + } + else pidx = Rn.index + Rn[0].length; + break; + + case 'named-range': // 9.4.12 + tag = parsexmltag(Rn[0], false); + _Ref = ods_to_csf_3D(tag['cell-range-address']); + var nrange = ({Name:tag.name, Ref:_Ref[0] + '!' + _Ref[1]}); + if(intable) nrange.Sheet = SheetNames.length; + WB.Names.push(nrange); + break; + + case 'text-content': break; // 16.27.27 + case 'text-properties': break; // 16.27.27 + case 'embedded-text': break; // 16.27.4 + + case 'body': case '电子表格': break; // 3.3 16.9.6 19.726.3 + + case 'forms': break; // 12.25.2 13.2 + case 'table-column': break; // 9.1.6 + case 'table-header-rows': break; // 9.1.7 + case 'table-rows': break; // 9.1.12 + /* TODO: outline levels */ + case 'table-column-group': break; // 9.1.10 + case 'table-header-columns': break; // 9.1.11 + case 'table-columns': break; // 9.1.12 + + case 'null-date': break; // 9.4.2 TODO: date1904 + + case 'graphic-properties': break; // 17.21 + case 'calculation-settings': break; // 9.4.1 + case 'named-expressions': break; // 9.4.11 + case 'label-range': break; // 9.4.9 + case 'label-ranges': break; // 9.4.10 + case 'named-expression': break; // 9.4.13 + case 'sort': break; // 9.4.19 + case 'sort-by': break; // 9.4.20 + case 'sort-groups': break; // 9.4.22 + + case 'tab': break; // 6.1.4 + case 'line-break': break; // 6.1.5 + case 'span': break; // 6.1.7 + case 'p': case '文本串': // 5.1.3 + if(['master-styles'].indexOf(state[state.length-1][0]) > -1) break; + if(Rn[1]==='/' && (!ctag || !ctag['string-value'])) { + var ptp = parse_text_p(str.slice(textpidx,Rn.index), textptag); + textp = (textp.length > 0 ? textp + "\n" : "") + ptp[0]; + } else { textptag = parsexmltag(Rn[0], false); textpidx = Rn.index + Rn[0].length; } + break; // + case 's': break; // + + case 'database-range': // 9.4.15 + if(Rn[1]==='/') break; + try { + _Ref = ods_to_csf_3D(parsexmltag(Rn[0])['target-range-address']); + Sheets[_Ref[0]]['!autofilter'] = { ref:_Ref[1] }; + } catch(e) {/* empty */} + break; + + case 'date': break; // <*:date> + + case 'object': break; // 10.4.6.2 + case 'title': case '标题': break; // <*:title> OR + case 'desc': break; // <*:desc> + case 'binary-data': break; // 10.4.5 TODO: b64 blob + + /* 9.2 Advanced Tables */ + case 'table-source': break; // 9.2.6 + case 'scenario': break; // 9.2.6 + + case 'iteration': break; // 9.4.3 + case 'content-validations': break; // 9.4.4 + case 'filter': break; // 9.5.2 + case 'filter-and': break; // 9.5.3 + case 'filter-or': break; // 9.5.4 + case 'filter-condition': break; // 9.5.5 + + case 'list-level-style-bullet': break; // 16.31 + case 'page-count': break; // TODO + case 'time': break; // TODO + + /* 9.3 Advanced Table Cells */ + case 'cell-range-source': break; // 9.3.1 + case 'property': break; // 13.8 + + case 'a': // 6.1.8 hyperlink + if(Rn[1]!== '/') { + atag = parsexmltag(Rn[0], false); + if(!atag.href) break; + atag.Target = unescapexml(atag.href); delete atag.href; + if(atag.Target.charAt(0) == "#" && atag.Target.indexOf(".") > -1) { + _Ref = ods_to_csf_3D(atag.Target.slice(1)); + atag.Target = "#" + _Ref[0] + "!" + _Ref[1]; + } else if(atag.Target.match(/^\.\.[\\\/]/)) atag.Target = atag.Target.slice(3); + } + break; + + /* non-standard */ + case 'table-protection': break; + case 'data-pilot-grand-total': break; // ', + '', + '', + '', + '', + '', + '', + '' + ].join(""); + + var payload = '' + master_styles + ''; + + return function wso() { + return XML_HEADER + payload; + }; +})(); +var write_content_ods = /* @__PURE__ */(function() { + /* 6.1.2 White Space Characters */ + var write_text_p = function(text) { + return escapexml(text) + .replace(/ +/g, function($$){return '';}) + .replace(/\t/g, "") + .replace(/\n/g, "") + .replace(/^ /, "").replace(/ $/, ""); + }; + + var null_cell_xml = ' \n'; + var covered_cell_xml = ' \n'; + var write_ws = function(ws, wb, i) { + /* Section 9 Tables */ + var o = []; + o.push(' \n'); + var R=0,C=0, range = decode_range(ws['!ref']||"A1"); + var marr = ws['!merges'] || [], mi = 0; + var dense = Array.isArray(ws); + if(ws["!cols"]) { + for(C = 0; C <= range.e.c; ++C) o.push(' \n'); + } + var H = "", ROWS = ws["!rows"]||[]; + for(R = 0; R < range.s.r; ++R) { + H = ROWS[R] ? ' table:style-name="ro' + ROWS[R].ods + '"' : ""; + o.push(' \n'); + } + for(; R <= range.e.r; ++R) { + H = ROWS[R] ? ' table:style-name="ro' + ROWS[R].ods + '"' : ""; + o.push(' \n'); + for(C=0; C < range.s.c; ++C) o.push(null_cell_xml); + for(; C <= range.e.c; ++C) { + var skip = false, ct = {}, textp = ""; + for(mi = 0; mi != marr.length; ++mi) { + if(marr[mi].s.c > C) continue; + if(marr[mi].s.r > R) continue; + if(marr[mi].e.c < C) continue; + if(marr[mi].e.r < R) continue; + if(marr[mi].s.c != C || marr[mi].s.r != R) skip = true; + ct['table:number-columns-spanned'] = (marr[mi].e.c - marr[mi].s.c + 1); + ct['table:number-rows-spanned'] = (marr[mi].e.r - marr[mi].s.r + 1); + break; + } + if(skip) { o.push(covered_cell_xml); continue; } + var ref = encode_cell({r:R, c:C}), cell = dense ? (ws[R]||[])[C]: ws[ref]; + if(cell && cell.f) { + ct['table:formula'] = escapexml(csf_to_ods_formula(cell.f)); + if(cell.F) { + if(cell.F.slice(0, ref.length) == ref) { + var _Fref = decode_range(cell.F); + ct['table:number-matrix-columns-spanned'] = (_Fref.e.c - _Fref.s.c + 1); + ct['table:number-matrix-rows-spanned'] = (_Fref.e.r - _Fref.s.r + 1); + } + } + } + if(!cell) { o.push(null_cell_xml); continue; } + switch(cell.t) { + case 'b': + textp = (cell.v ? 'TRUE' : 'FALSE'); + ct['office:value-type'] = "boolean"; + ct['office:boolean-value'] = (cell.v ? 'true' : 'false'); + break; + case 'n': + textp = (cell.w||String(cell.v||0)); + ct['office:value-type'] = "float"; + ct['office:value'] = (cell.v||0); + break; + case 's': case 'str': + textp = cell.v == null ? "" : cell.v; + ct['office:value-type'] = "string"; + break; + case 'd': + textp = (cell.w||(parseDate(cell.v).toISOString())); + ct['office:value-type'] = "date"; + ct['office:date-value'] = (parseDate(cell.v).toISOString()); + ct['table:style-name'] = "ce1"; + break; + //case 'e': + default: o.push(null_cell_xml); continue; + } + var text_p = write_text_p(textp); + if(cell.l && cell.l.Target) { + var _tgt = cell.l.Target; + _tgt = _tgt.charAt(0) == "#" ? "#" + csf_to_ods_3D(_tgt.slice(1)) : _tgt; + // TODO: choose correct parent path format based on link delimiters + if(_tgt.charAt(0) != "#" && !_tgt.match(/^\w+:/)) _tgt = '../' + _tgt; + text_p = writextag('text:a', text_p, {'xlink:href': _tgt.replace(/&/g, "&")}); + } + o.push(' ' + writextag('table:table-cell', writextag('text:p', text_p, {}), ct) + '\n'); + } + o.push(' \n'); + } + o.push(' \n'); + return o.join(""); + }; + + var write_automatic_styles_ods = function(o, wb) { + o.push(' \n'); + + o.push(' \n'); + o.push(' \n'); + o.push(' /\n'); + o.push(' \n'); + o.push(' /\n'); + o.push(' \n'); + o.push(' \n'); + + /* column styles */ + var cidx = 0; + wb.SheetNames.map(function(n) { return wb.Sheets[n]; }).forEach(function(ws) { + if(!ws) return; + if(ws["!cols"]) { + for(var C = 0; C < ws["!cols"].length; ++C) if(ws["!cols"][C]) { + var colobj = ws["!cols"][C]; + if(colobj.width == null && colobj.wpx == null && colobj.wch == null) continue; + process_col(colobj); + colobj.ods = cidx; + var w = ws["!cols"][C].wpx + "px"; + o.push(' \n'); + o.push(' \n'); + o.push(' \n'); + ++cidx; + } + } + }); + + /* row styles */ + var ridx = 0; + wb.SheetNames.map(function(n) { return wb.Sheets[n]; }).forEach(function(ws) { + if(!ws) return; + if(ws["!rows"]) { + for(var R = 0; R < ws["!rows"].length; ++R) if(ws["!rows"][R]) { + ws["!rows"][R].ods = ridx; + var h = ws["!rows"][R].hpx + "px"; + o.push(' \n'); + o.push(' \n'); + o.push(' \n'); + ++ridx; + } + } + }); + + /* table */ + o.push(' \n'); + o.push(' \n'); + o.push(' \n'); + + /* table cells, text */ + o.push(' \n'); + + /* page-layout */ + + o.push(' \n'); + }; + + return function wcx(wb, opts) { + var o = [XML_HEADER]; + /* 3.1.3.2 */ + var attr = wxt_helper({ + 'xmlns:office': "urn:oasis:names:tc:opendocument:xmlns:office:1.0", + 'xmlns:table': "urn:oasis:names:tc:opendocument:xmlns:table:1.0", + 'xmlns:style': "urn:oasis:names:tc:opendocument:xmlns:style:1.0", + 'xmlns:text': "urn:oasis:names:tc:opendocument:xmlns:text:1.0", + 'xmlns:draw': "urn:oasis:names:tc:opendocument:xmlns:drawing:1.0", + 'xmlns:fo': "urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0", + 'xmlns:xlink': "http://www.w3.org/1999/xlink", + 'xmlns:dc': "http://purl.org/dc/elements/1.1/", + 'xmlns:meta': "urn:oasis:names:tc:opendocument:xmlns:meta:1.0", + 'xmlns:number': "urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0", + 'xmlns:presentation': "urn:oasis:names:tc:opendocument:xmlns:presentation:1.0", + 'xmlns:svg': "urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0", + 'xmlns:chart': "urn:oasis:names:tc:opendocument:xmlns:chart:1.0", + 'xmlns:dr3d': "urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0", + 'xmlns:math': "http://www.w3.org/1998/Math/MathML", + 'xmlns:form': "urn:oasis:names:tc:opendocument:xmlns:form:1.0", + 'xmlns:script': "urn:oasis:names:tc:opendocument:xmlns:script:1.0", + 'xmlns:ooo': "http://openoffice.org/2004/office", + 'xmlns:ooow': "http://openoffice.org/2004/writer", + 'xmlns:oooc': "http://openoffice.org/2004/calc", + 'xmlns:dom': "http://www.w3.org/2001/xml-events", + 'xmlns:xforms': "http://www.w3.org/2002/xforms", + 'xmlns:xsd': "http://www.w3.org/2001/XMLSchema", + 'xmlns:xsi': "http://www.w3.org/2001/XMLSchema-instance", + 'xmlns:sheet': "urn:oasis:names:tc:opendocument:sh33tjs:1.0", + 'xmlns:rpt': "http://openoffice.org/2005/report", + 'xmlns:of': "urn:oasis:names:tc:opendocument:xmlns:of:1.2", + 'xmlns:xhtml': "http://www.w3.org/1999/xhtml", + 'xmlns:grddl': "http://www.w3.org/2003/g/data-view#", + 'xmlns:tableooo': "http://openoffice.org/2009/table", + 'xmlns:drawooo': "http://openoffice.org/2010/draw", + 'xmlns:calcext': "urn:org:documentfoundation:names:experimental:calc:xmlns:calcext:1.0", + 'xmlns:loext': "urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0", + 'xmlns:field': "urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0", + 'xmlns:formx': "urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0", + 'xmlns:css3t': "http://www.w3.org/TR/css3-text/", + 'office:version': "1.2" + }); + + var fods = wxt_helper({ + 'xmlns:config': "urn:oasis:names:tc:opendocument:xmlns:config:1.0", + 'office:mimetype': "application/vnd.oasis.opendocument.spreadsheet" + }); + + if(opts.bookType == "fods") { + o.push('\n'); + o.push(write_meta_ods().replace(/office:document-meta/g, "office:meta")); + // TODO: settings (equiv of settings.xml for ODS) + } else o.push('\n'); + // o.push(' \n'); + write_automatic_styles_ods(o, wb); + o.push(' \n'); + o.push(' \n'); + for(var i = 0; i != wb.SheetNames.length; ++i) o.push(write_ws(wb.Sheets[wb.SheetNames[i]], wb, i, opts)); + o.push(' \n'); + o.push(' \n'); + if(opts.bookType == "fods") o.push(''); + else o.push(''); + return o.join(""); + }; +})(); + +function write_ods(wb, opts) { + if(opts.bookType == "fods") return write_content_ods(wb, opts); + + var zip = zip_new(); + var f = ""; + + var manifest = []; + var rdf = []; + + /* Part 3 Section 3.3 MIME Media Type */ + f = "mimetype"; + zip_add_file(zip, f, "application/vnd.oasis.opendocument.spreadsheet"); + + /* Part 1 Section 2.2 Documents */ + f = "content.xml"; + zip_add_file(zip, f, write_content_ods(wb, opts)); + manifest.push([f, "text/xml"]); + rdf.push([f, "ContentFile"]); + + /* TODO: these are hard-coded styles to satiate excel */ + f = "styles.xml"; + zip_add_file(zip, f, write_styles_ods(wb, opts)); + manifest.push([f, "text/xml"]); + rdf.push([f, "StylesFile"]); + + /* TODO: this is hard-coded to satiate excel */ + f = "meta.xml"; + zip_add_file(zip, f, XML_HEADER + write_meta_ods()); + manifest.push([f, "text/xml"]); + rdf.push([f, "MetadataFile"]); + + /* Part 3 Section 6 Metadata Manifest File */ + f = "manifest.rdf"; + zip_add_file(zip, f, write_rdf(rdf/*, opts*/)); + manifest.push([f, "application/rdf+xml"]); + + /* Part 3 Section 4 Manifest File */ + f = "META-INF/manifest.xml"; + zip_add_file(zip, f, write_manifest(manifest/*, opts*/)); + + return zip; +} + +/*! sheetjs (C) 2013-present SheetJS -- http://sheetjs.com */ +function u8_to_dataview(array) { + return new DataView(array.buffer, array.byteOffset, array.byteLength); +} +function u8str(u8) { + return typeof TextDecoder != "undefined" ? new TextDecoder().decode(u8) : utf8read(a2s(u8)); +} +function stru8(str) { + return typeof TextEncoder != "undefined" ? new TextEncoder().encode(str) : s2a(utf8write(str)); +} +function u8contains(body, search) { + outer: + for (var L = 0; L <= body.length - search.length; ++L) { + for (var j = 0; j < search.length; ++j) + if (body[L + j] != search[j]) + continue outer; + return true; + } + return false; +} +function u8concat(u8a) { + var len = u8a.reduce(function(acc, x) { + return acc + x.length; + }, 0); + var out = new Uint8Array(len); + var off = 0; + u8a.forEach(function(u8) { + out.set(u8, off); + off += u8.length; + }); + return out; +} +function popcnt(x) { + x -= x >> 1 & 1431655765; + x = (x & 858993459) + (x >> 2 & 858993459); + return (x + (x >> 4) & 252645135) * 16843009 >>> 24; +} +function readDecimal128LE(buf, offset) { + var exp = (buf[offset + 15] & 127) << 7 | buf[offset + 14] >> 1; + var mantissa = buf[offset + 14] & 1; + for (var j = offset + 13; j >= offset; --j) + mantissa = mantissa * 256 + buf[j]; + return (buf[offset + 15] & 128 ? -mantissa : mantissa) * Math.pow(10, exp - 6176); +} +function writeDecimal128LE(buf, offset, value) { + var exp = Math.floor(value == 0 ? 0 : Math.LOG10E * Math.log(Math.abs(value))) + 6176 - 20; + var mantissa = value / Math.pow(10, exp - 6176); + buf[offset + 15] |= exp >> 7; + buf[offset + 14] |= (exp & 127) << 1; + for (var i = 0; mantissa >= 1; ++i, mantissa /= 256) + buf[offset + i] = mantissa & 255; + buf[offset + 15] |= value >= 0 ? 0 : 128; +} +function parse_varint49(buf, ptr) { + var l = ptr ? ptr[0] : 0; + var usz = buf[l] & 127; + varint: + if (buf[l++] >= 128) { + usz |= (buf[l] & 127) << 7; + if (buf[l++] < 128) + break varint; + usz |= (buf[l] & 127) << 14; + if (buf[l++] < 128) + break varint; + usz |= (buf[l] & 127) << 21; + if (buf[l++] < 128) + break varint; + usz += (buf[l] & 127) * Math.pow(2, 28); + ++l; + if (buf[l++] < 128) + break varint; + usz += (buf[l] & 127) * Math.pow(2, 35); + ++l; + if (buf[l++] < 128) + break varint; + usz += (buf[l] & 127) * Math.pow(2, 42); + ++l; + if (buf[l++] < 128) + break varint; + } + if (ptr) + ptr[0] = l; + return usz; +} +function write_varint49(v) { + var usz = new Uint8Array(7); + usz[0] = v & 127; + var L = 1; + sz: + if (v > 127) { + usz[L - 1] |= 128; + usz[L] = v >> 7 & 127; + ++L; + if (v <= 16383) + break sz; + usz[L - 1] |= 128; + usz[L] = v >> 14 & 127; + ++L; + if (v <= 2097151) + break sz; + usz[L - 1] |= 128; + usz[L] = v >> 21 & 127; + ++L; + if (v <= 268435455) + break sz; + usz[L - 1] |= 128; + usz[L] = v / 256 >>> 21 & 127; + ++L; + if (v <= 34359738367) + break sz; + usz[L - 1] |= 128; + usz[L] = v / 65536 >>> 21 & 127; + ++L; + if (v <= 4398046511103) + break sz; + usz[L - 1] |= 128; + usz[L] = v / 16777216 >>> 21 & 127; + ++L; + } + return usz.slice(0, L); +} +function varint_to_i32(buf) { + var l = 0, i32 = buf[l] & 127; + varint: + if (buf[l++] >= 128) { + i32 |= (buf[l] & 127) << 7; + if (buf[l++] < 128) + break varint; + i32 |= (buf[l] & 127) << 14; + if (buf[l++] < 128) + break varint; + i32 |= (buf[l] & 127) << 21; + if (buf[l++] < 128) + break varint; + i32 |= (buf[l] & 127) << 28; + } + return i32; +} +function parse_shallow(buf) { + var out = [], ptr = [0]; + while (ptr[0] < buf.length) { + var off = ptr[0]; + var num = parse_varint49(buf, ptr); + var type = num & 7; + num = Math.floor(num / 8); + var len = 0; + var res; + if (num == 0) + break; + switch (type) { + case 0: + { + var l = ptr[0]; + while (buf[ptr[0]++] >= 128) + ; + res = buf.slice(l, ptr[0]); + } + break; + case 5: + len = 4; + res = buf.slice(ptr[0], ptr[0] + len); + ptr[0] += len; + break; + case 1: + len = 8; + res = buf.slice(ptr[0], ptr[0] + len); + ptr[0] += len; + break; + case 2: + len = parse_varint49(buf, ptr); + res = buf.slice(ptr[0], ptr[0] + len); + ptr[0] += len; + break; + case 3: + case 4: + default: + throw new Error("PB Type ".concat(type, " for Field ").concat(num, " at offset ").concat(off)); + } + var v = { data: res, type: type }; + if (out[num] == null) + out[num] = [v]; + else + out[num].push(v); + } + return out; +} +function write_shallow(proto) { + var out = []; + proto.forEach(function(field, idx) { + field.forEach(function(item) { + if (!item.data) + return; + out.push(write_varint49(idx * 8 + item.type)); + if (item.type == 2) + out.push(write_varint49(item.data.length)); + out.push(item.data); + }); + }); + return u8concat(out); +} +function mappa(data, cb) { + return (data == null ? void 0 : data.map(function(d) { + return cb(d.data); + })) || []; +} +function parse_iwa_file(buf) { + var _a; + var out = [], ptr = [0]; + while (ptr[0] < buf.length) { + var len = parse_varint49(buf, ptr); + var ai = parse_shallow(buf.slice(ptr[0], ptr[0] + len)); + ptr[0] += len; + var res = { + id: varint_to_i32(ai[1][0].data), + messages: [] + }; + ai[2].forEach(function(b) { + var mi = parse_shallow(b.data); + var fl = varint_to_i32(mi[3][0].data); + res.messages.push({ + meta: mi, + data: buf.slice(ptr[0], ptr[0] + fl) + }); + ptr[0] += fl; + }); + if ((_a = ai[3]) == null ? void 0 : _a[0]) + res.merge = varint_to_i32(ai[3][0].data) >>> 0 > 0; + out.push(res); + } + return out; +} +function write_iwa_file(ias) { + var bufs = []; + ias.forEach(function(ia) { + var ai = []; + ai[1] = [{ data: write_varint49(ia.id), type: 0 }]; + ai[2] = []; + if (ia.merge != null) + ai[3] = [{ data: write_varint49(+!!ia.merge), type: 0 }]; + var midata = []; + ia.messages.forEach(function(mi) { + midata.push(mi.data); + mi.meta[3] = [{ type: 0, data: write_varint49(mi.data.length) }]; + ai[2].push({ data: write_shallow(mi.meta), type: 2 }); + }); + var aipayload = write_shallow(ai); + bufs.push(write_varint49(aipayload.length)); + bufs.push(aipayload); + midata.forEach(function(mid) { + return bufs.push(mid); + }); + }); + return u8concat(bufs); +} +function parse_snappy_chunk(type, buf) { + if (type != 0) + throw new Error("Unexpected Snappy chunk type ".concat(type)); + var ptr = [0]; + var usz = parse_varint49(buf, ptr); + var chunks = []; + while (ptr[0] < buf.length) { + var tag = buf[ptr[0]] & 3; + if (tag == 0) { + var len = buf[ptr[0]++] >> 2; + if (len < 60) + ++len; + else { + var c = len - 59; + len = buf[ptr[0]]; + if (c > 1) + len |= buf[ptr[0] + 1] << 8; + if (c > 2) + len |= buf[ptr[0] + 2] << 16; + if (c > 3) + len |= buf[ptr[0] + 3] << 24; + len >>>= 0; + len++; + ptr[0] += c; + } + chunks.push(buf.slice(ptr[0], ptr[0] + len)); + ptr[0] += len; + continue; + } else { + var offset = 0, length = 0; + if (tag == 1) { + length = (buf[ptr[0]] >> 2 & 7) + 4; + offset = (buf[ptr[0]++] & 224) << 3; + offset |= buf[ptr[0]++]; + } else { + length = (buf[ptr[0]++] >> 2) + 1; + if (tag == 2) { + offset = buf[ptr[0]] | buf[ptr[0] + 1] << 8; + ptr[0] += 2; + } else { + offset = (buf[ptr[0]] | buf[ptr[0] + 1] << 8 | buf[ptr[0] + 2] << 16 | buf[ptr[0] + 3] << 24) >>> 0; + ptr[0] += 4; + } + } + chunks = [u8concat(chunks)]; + if (offset == 0) + throw new Error("Invalid offset 0"); + if (offset > chunks[0].length) + throw new Error("Invalid offset beyond length"); + if (length >= offset) { + chunks.push(chunks[0].slice(-offset)); + length -= offset; + while (length >= chunks[chunks.length - 1].length) { + chunks.push(chunks[chunks.length - 1]); + length -= chunks[chunks.length - 1].length; + } + } + chunks.push(chunks[0].slice(-offset, -offset + length)); + } + } + var o = u8concat(chunks); + if (o.length != usz) + throw new Error("Unexpected length: ".concat(o.length, " != ").concat(usz)); + return o; +} +function decompress_iwa_file(buf) { + var out = []; + var l = 0; + while (l < buf.length) { + var t = buf[l++]; + var len = buf[l] | buf[l + 1] << 8 | buf[l + 2] << 16; + l += 3; + out.push(parse_snappy_chunk(t, buf.slice(l, l + len))); + l += len; + } + if (l !== buf.length) + throw new Error("data is not a valid framed stream!"); + return u8concat(out); +} +function compress_iwa_file(buf) { + var out = []; + var l = 0; + while (l < buf.length) { + var c = Math.min(buf.length - l, 268435455); + var frame = new Uint8Array(4); + out.push(frame); + var usz = write_varint49(c); + var L = usz.length; + out.push(usz); + if (c <= 60) { + L++; + out.push(new Uint8Array([c - 1 << 2])); + } else if (c <= 256) { + L += 2; + out.push(new Uint8Array([240, c - 1 & 255])); + } else if (c <= 65536) { + L += 3; + out.push(new Uint8Array([244, c - 1 & 255, c - 1 >> 8 & 255])); + } else if (c <= 16777216) { + L += 4; + out.push(new Uint8Array([248, c - 1 & 255, c - 1 >> 8 & 255, c - 1 >> 16 & 255])); + } else if (c <= 4294967296) { + L += 5; + out.push(new Uint8Array([252, c - 1 & 255, c - 1 >> 8 & 255, c - 1 >> 16 & 255, c - 1 >>> 24 & 255])); + } + out.push(buf.slice(l, l + c)); + L += c; + frame[0] = 0; + frame[1] = L & 255; + frame[2] = L >> 8 & 255; + frame[3] = L >> 16 & 255; + l += c; + } + return u8concat(out); +} +function parse_old_storage(buf, sst, rsst, v) { + var dv = u8_to_dataview(buf); + var flags = dv.getUint32(4, true); + var data_offset = (v > 1 ? 12 : 8) + popcnt(flags & (v > 1 ? 3470 : 398)) * 4; + var ridx = -1, sidx = -1, ieee = NaN, dt = new Date(2001, 0, 1); + if (flags & 512) { + ridx = dv.getUint32(data_offset, true); + data_offset += 4; + } + data_offset += popcnt(flags & (v > 1 ? 12288 : 4096)) * 4; + if (flags & 16) { + sidx = dv.getUint32(data_offset, true); + data_offset += 4; + } + if (flags & 32) { + ieee = dv.getFloat64(data_offset, true); + data_offset += 8; + } + if (flags & 64) { + dt.setTime(dt.getTime() + dv.getFloat64(data_offset, true) * 1e3); + data_offset += 8; + } + var ret; + switch (buf[2]) { + case 0: + break; + case 2: + ret = { t: "n", v: ieee }; + break; + case 3: + ret = { t: "s", v: sst[sidx] }; + break; + case 5: + ret = { t: "d", v: dt }; + break; + case 6: + ret = { t: "b", v: ieee > 0 }; + break; + case 7: + ret = { t: "n", v: ieee / 86400 }; + break; + case 8: + ret = { t: "e", v: 0 }; + break; + case 9: + { + if (ridx > -1) + ret = { t: "s", v: rsst[ridx] }; + else if (sidx > -1) + ret = { t: "s", v: sst[sidx] }; + else if (!isNaN(ieee)) + ret = { t: "n", v: ieee }; + else + throw new Error("Unsupported cell type ".concat(buf.slice(0, 4))); + } + break; + default: + throw new Error("Unsupported cell type ".concat(buf.slice(0, 4))); + } + return ret; +} +function parse_new_storage(buf, sst, rsst) { + var dv = u8_to_dataview(buf); + var flags = dv.getUint32(8, true); + var data_offset = 12; + var ridx = -1, sidx = -1, d128 = NaN, ieee = NaN, dt = new Date(2001, 0, 1); + if (flags & 1) { + d128 = readDecimal128LE(buf, data_offset); + data_offset += 16; + } + if (flags & 2) { + ieee = dv.getFloat64(data_offset, true); + data_offset += 8; + } + if (flags & 4) { + dt.setTime(dt.getTime() + dv.getFloat64(data_offset, true) * 1e3); + data_offset += 8; + } + if (flags & 8) { + sidx = dv.getUint32(data_offset, true); + data_offset += 4; + } + if (flags & 16) { + ridx = dv.getUint32(data_offset, true); + data_offset += 4; + } + var ret; + switch (buf[1]) { + case 0: + break; + case 2: + ret = { t: "n", v: d128 }; + break; + case 3: + ret = { t: "s", v: sst[sidx] }; + break; + case 5: + ret = { t: "d", v: dt }; + break; + case 6: + ret = { t: "b", v: ieee > 0 }; + break; + case 7: + ret = { t: "n", v: ieee / 86400 }; + break; + case 8: + ret = { t: "e", v: 0 }; + break; + case 9: + { + if (ridx > -1) + ret = { t: "s", v: rsst[ridx] }; + else + throw new Error("Unsupported cell type ".concat(buf[1], " : ").concat(flags & 31, " : ").concat(buf.slice(0, 4))); + } + break; + case 10: + ret = { t: "n", v: d128 }; + break; + default: + throw new Error("Unsupported cell type ".concat(buf[1], " : ").concat(flags & 31, " : ").concat(buf.slice(0, 4))); + } + return ret; +} +function write_new_storage(cell, sst) { + var out = new Uint8Array(32), dv = u8_to_dataview(out), l = 12, flags = 0; + out[0] = 5; + switch (cell.t) { + case "n": + out[1] = 2; + writeDecimal128LE(out, l, cell.v); + flags |= 1; + l += 16; + break; + case "b": + out[1] = 6; + dv.setFloat64(l, cell.v ? 1 : 0, true); + flags |= 2; + l += 8; + break; + case "s": + if (sst.indexOf(cell.v) == -1) + throw new Error("Value ".concat(cell.v, " missing from SST!")); + out[1] = 3; + dv.setUint32(l, sst.indexOf(cell.v), true); + flags |= 8; + l += 4; + break; + default: + throw "unsupported cell type " + cell.t; + } + dv.setUint32(8, flags, true); + return out.slice(0, l); +} +function write_old_storage(cell, sst) { + var out = new Uint8Array(32), dv = u8_to_dataview(out), l = 12, flags = 0; + out[0] = 3; + switch (cell.t) { + case "n": + out[2] = 2; + dv.setFloat64(l, cell.v, true); + flags |= 32; + l += 8; + break; + case "b": + out[2] = 6; + dv.setFloat64(l, cell.v ? 1 : 0, true); + flags |= 32; + l += 8; + break; + case "s": + if (sst.indexOf(cell.v) == -1) + throw new Error("Value ".concat(cell.v, " missing from SST!")); + out[2] = 3; + dv.setUint32(l, sst.indexOf(cell.v), true); + flags |= 16; + l += 4; + break; + default: + throw "unsupported cell type " + cell.t; + } + dv.setUint32(4, flags, true); + return out.slice(0, l); +} +function parse_cell_storage(buf, sst, rsst) { + switch (buf[0]) { + case 0: + case 1: + case 2: + case 3: + return parse_old_storage(buf, sst, rsst, buf[0]); + case 5: + return parse_new_storage(buf, sst, rsst); + default: + throw new Error("Unsupported payload version ".concat(buf[0])); + } +} +function parse_TSP_Reference(buf) { + var pb = parse_shallow(buf); + return parse_varint49(pb[1][0].data); +} +function write_TSP_Reference(idx) { + var out = []; + out[1] = [{ type: 0, data: write_varint49(idx) }]; + return write_shallow(out); +} +function parse_TST_TableDataList(M, root) { + var pb = parse_shallow(root.data); + var type = varint_to_i32(pb[1][0].data); + var entries = pb[3]; + var data = []; + (entries || []).forEach(function(entry) { + var le = parse_shallow(entry.data); + var key = varint_to_i32(le[1][0].data) >>> 0; + switch (type) { + case 1: + data[key] = u8str(le[3][0].data); + break; + case 8: + { + var rt = M[parse_TSP_Reference(le[9][0].data)][0]; + var rtp = parse_shallow(rt.data); + var rtpref = M[parse_TSP_Reference(rtp[1][0].data)][0]; + var mtype = varint_to_i32(rtpref.meta[1][0].data); + if (mtype != 2001) + throw new Error("2000 unexpected reference to ".concat(mtype)); + var tswpsa = parse_shallow(rtpref.data); + data[key] = tswpsa[3].map(function(x) { + return u8str(x.data); + }).join(""); + } + break; + } + }); + return data; +} +function parse_TST_TileRowInfo(u8, type) { + var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n; + var pb = parse_shallow(u8); + var R = varint_to_i32(pb[1][0].data) >>> 0; + var cnt = varint_to_i32(pb[2][0].data) >>> 0; + var wide_offsets = ((_b = (_a = pb[8]) == null ? void 0 : _a[0]) == null ? void 0 : _b.data) && varint_to_i32(pb[8][0].data) > 0 || false; + var used_storage_u8, used_storage; + if (((_d = (_c = pb[7]) == null ? void 0 : _c[0]) == null ? void 0 : _d.data) && type != 0) { + used_storage_u8 = (_f = (_e = pb[7]) == null ? void 0 : _e[0]) == null ? void 0 : _f.data; + used_storage = (_h = (_g = pb[6]) == null ? void 0 : _g[0]) == null ? void 0 : _h.data; + } else if (((_j = (_i = pb[4]) == null ? void 0 : _i[0]) == null ? void 0 : _j.data) && type != 1) { + used_storage_u8 = (_l = (_k = pb[4]) == null ? void 0 : _k[0]) == null ? void 0 : _l.data; + used_storage = (_n = (_m = pb[3]) == null ? void 0 : _m[0]) == null ? void 0 : _n.data; + } else + throw "NUMBERS Tile missing ".concat(type, " cell storage"); + var width = wide_offsets ? 4 : 1; + var used_storage_offsets = u8_to_dataview(used_storage_u8); + var offsets = []; + for (var C = 0; C < used_storage_u8.length / 2; ++C) { + var off = used_storage_offsets.getUint16(C * 2, true); + if (off < 65535) + offsets.push([C, off]); + } + if (offsets.length != cnt) + throw "Expected ".concat(cnt, " cells, found ").concat(offsets.length); + var cells = []; + for (C = 0; C < offsets.length - 1; ++C) + cells[offsets[C][0]] = used_storage.subarray(offsets[C][1] * width, offsets[C + 1][1] * width); + if (offsets.length >= 1) + cells[offsets[offsets.length - 1][0]] = used_storage.subarray(offsets[offsets.length - 1][1] * width); + return { R: R, cells: cells }; +} +function parse_TST_Tile(M, root) { + var _a; + var pb = parse_shallow(root.data); + var storage = ((_a = pb == null ? void 0 : pb[7]) == null ? void 0 : _a[0]) ? varint_to_i32(pb[7][0].data) >>> 0 > 0 ? 1 : 0 : -1; + var ri = mappa(pb[5], function(u8) { + return parse_TST_TileRowInfo(u8, storage); + }); + return { + nrows: varint_to_i32(pb[4][0].data) >>> 0, + data: ri.reduce(function(acc, x) { + if (!acc[x.R]) + acc[x.R] = []; + x.cells.forEach(function(cell, C) { + if (acc[x.R][C]) + throw new Error("Duplicate cell r=".concat(x.R, " c=").concat(C)); + acc[x.R][C] = cell; + }); + return acc; + }, []) + }; +} +function parse_TST_TableModelArchive(M, root, ws) { + var _a; + var pb = parse_shallow(root.data); + var range = { s: { r: 0, c: 0 }, e: { r: 0, c: 0 } }; + range.e.r = (varint_to_i32(pb[6][0].data) >>> 0) - 1; + if (range.e.r < 0) + throw new Error("Invalid row varint ".concat(pb[6][0].data)); + range.e.c = (varint_to_i32(pb[7][0].data) >>> 0) - 1; + if (range.e.c < 0) + throw new Error("Invalid col varint ".concat(pb[7][0].data)); + ws["!ref"] = encode_range(range); + var store = parse_shallow(pb[4][0].data); + var sst = parse_TST_TableDataList(M, M[parse_TSP_Reference(store[4][0].data)][0]); + var rsst = ((_a = store[17]) == null ? void 0 : _a[0]) ? parse_TST_TableDataList(M, M[parse_TSP_Reference(store[17][0].data)][0]) : []; + var tile = parse_shallow(store[3][0].data); + var _R = 0; + tile[1].forEach(function(t) { + var tl = parse_shallow(t.data); + var ref = M[parse_TSP_Reference(tl[2][0].data)][0]; + var mtype = varint_to_i32(ref.meta[1][0].data); + if (mtype != 6002) + throw new Error("6001 unexpected reference to ".concat(mtype)); + var _tile = parse_TST_Tile(M, ref); + _tile.data.forEach(function(row, R) { + row.forEach(function(buf, C) { + var addr = encode_cell({ r: _R + R, c: C }); + var res = parse_cell_storage(buf, sst, rsst); + if (res) + ws[addr] = res; + }); + }); + _R += _tile.nrows; + }); +} +function parse_TST_TableInfoArchive(M, root) { + var pb = parse_shallow(root.data); + var out = { "!ref": "A1" }; + var tableref = M[parse_TSP_Reference(pb[2][0].data)]; + var mtype = varint_to_i32(tableref[0].meta[1][0].data); + if (mtype != 6001) + throw new Error("6000 unexpected reference to ".concat(mtype)); + parse_TST_TableModelArchive(M, tableref[0], out); + return out; +} +function parse_TN_SheetArchive(M, root) { + var _a; + var pb = parse_shallow(root.data); + var out = { + name: ((_a = pb[1]) == null ? void 0 : _a[0]) ? u8str(pb[1][0].data) : "", + sheets: [] + }; + var shapeoffs = mappa(pb[2], parse_TSP_Reference); + shapeoffs.forEach(function(off) { + M[off].forEach(function(m) { + var mtype = varint_to_i32(m.meta[1][0].data); + if (mtype == 6e3) + out.sheets.push(parse_TST_TableInfoArchive(M, m)); + }); + }); + return out; +} +function parse_TN_DocumentArchive(M, root) { + var out = book_new(); + var pb = parse_shallow(root.data); + var sheetoffs = mappa(pb[1], parse_TSP_Reference); + sheetoffs.forEach(function(off) { + M[off].forEach(function(m) { + var mtype = varint_to_i32(m.meta[1][0].data); + if (mtype == 2) { + var root2 = parse_TN_SheetArchive(M, m); + root2.sheets.forEach(function(sheet, idx) { + book_append_sheet(out, sheet, idx == 0 ? root2.name : root2.name + "_" + idx, true); + }); + } + }); + }); + if (out.SheetNames.length == 0) + throw new Error("Empty NUMBERS file"); + return out; +} +function parse_numbers_iwa(cfb) { + var _a, _b, _c, _d; + var M = {}, indices = []; + cfb.FullPaths.forEach(function(p) { + if (p.match(/\.iwpv2/)) + throw new Error("Unsupported password protection"); + }); + cfb.FileIndex.forEach(function(s) { + if (!s.name.match(/\.iwa$/)) + return; + var o; + try { + o = decompress_iwa_file(s.content); + } catch (e) { + return console.log("?? " + s.content.length + " " + (e.message || e)); + } + var packets; + try { + packets = parse_iwa_file(o); + } catch (e) { + return console.log("## " + (e.message || e)); + } + packets.forEach(function(packet) { + M[packet.id] = packet.messages; + indices.push(packet.id); + }); + }); + if (!indices.length) + throw new Error("File has no messages"); + var docroot = ((_d = (_c = (_b = (_a = M == null ? void 0 : M[1]) == null ? void 0 : _a[0]) == null ? void 0 : _b.meta) == null ? void 0 : _c[1]) == null ? void 0 : _d[0].data) && varint_to_i32(M[1][0].meta[1][0].data) == 1 && M[1][0]; + if (!docroot) + indices.forEach(function(idx) { + M[idx].forEach(function(iwam) { + var mtype = varint_to_i32(iwam.meta[1][0].data) >>> 0; + if (mtype == 1) { + if (!docroot) + docroot = iwam; + else + throw new Error("Document has multiple roots"); + } + }); + }); + if (!docroot) + throw new Error("Cannot find Document root"); + return parse_TN_DocumentArchive(M, docroot); +} +function write_tile_row(tri, data, SST) { + var _a, _b, _c, _d; + if (!((_a = tri[6]) == null ? void 0 : _a[0]) || !((_b = tri[7]) == null ? void 0 : _b[0])) + throw "Mutation only works on post-BNC storages!"; + var wide_offsets = ((_d = (_c = tri[8]) == null ? void 0 : _c[0]) == null ? void 0 : _d.data) && varint_to_i32(tri[8][0].data) > 0 || false; + if (wide_offsets) + throw "Math only works with normal offsets"; + var cnt = 0; + var dv = u8_to_dataview(tri[7][0].data), last_offset = 0, cell_storage = []; + var _dv = u8_to_dataview(tri[4][0].data), _last_offset = 0, _cell_storage = []; + for (var C = 0; C < data.length; ++C) { + if (data[C] == null) { + dv.setUint16(C * 2, 65535, true); + _dv.setUint16(C * 2, 65535); + continue; + } + dv.setUint16(C * 2, last_offset, true); + _dv.setUint16(C * 2, _last_offset, true); + var celload, _celload; + switch (typeof data[C]) { + case "string": + celload = write_new_storage({ t: "s", v: data[C] }, SST); + _celload = write_old_storage({ t: "s", v: data[C] }, SST); + break; + case "number": + celload = write_new_storage({ t: "n", v: data[C] }, SST); + _celload = write_old_storage({ t: "n", v: data[C] }, SST); + break; + case "boolean": + celload = write_new_storage({ t: "b", v: data[C] }, SST); + _celload = write_old_storage({ t: "b", v: data[C] }, SST); + break; + default: + throw new Error("Unsupported value " + data[C]); + } + cell_storage.push(celload); + last_offset += celload.length; + _cell_storage.push(_celload); + _last_offset += _celload.length; + ++cnt; + } + tri[2][0].data = write_varint49(cnt); + for (; C < tri[7][0].data.length / 2; ++C) { + dv.setUint16(C * 2, 65535, true); + _dv.setUint16(C * 2, 65535, true); + } + tri[6][0].data = u8concat(cell_storage); + tri[3][0].data = u8concat(_cell_storage); + return cnt; +} +function write_numbers_iwa(wb, opts) { + if (!opts || !opts.numbers) + throw new Error("Must pass a `numbers` option -- check the README"); + var ws = wb.Sheets[wb.SheetNames[0]]; + if (wb.SheetNames.length > 1) + console.error("The Numbers writer currently writes only the first table"); + var range = decode_range(ws["!ref"]); + range.s.r = range.s.c = 0; + var trunc = false; + if (range.e.c > 9) { + trunc = true; + range.e.c = 9; + } + if (range.e.r > 49) { + trunc = true; + range.e.r = 49; + } + if (trunc) + console.error("The Numbers writer is currently limited to ".concat(encode_range(range))); + var data = sheet_to_json(ws, { range: range, header: 1 }); + var SST = ["~Sh33tJ5~"]; + data.forEach(function(row) { + return row.forEach(function(cell) { + if (typeof cell == "string") + SST.push(cell); + }); + }); + var dependents = {}; + var indices = []; + var cfb = CFB.read(opts.numbers, { type: "base64" }); + cfb.FileIndex.map(function(fi, idx) { + return [fi, cfb.FullPaths[idx]]; + }).forEach(function(row) { + var fi = row[0], fp = row[1]; + if (fi.type != 2) + return; + if (!fi.name.match(/\.iwa/)) + return; + var old_content = fi.content; + var raw1 = decompress_iwa_file(old_content); + var x2 = parse_iwa_file(raw1); + x2.forEach(function(packet2) { + indices.push(packet2.id); + dependents[packet2.id] = { deps: [], location: fp, type: varint_to_i32(packet2.messages[0].meta[1][0].data) }; + }); + }); + indices.sort(function(x2, y2) { + return x2 - y2; + }); + var indices_varint = indices.filter(function(x2) { + return x2 > 1; + }).map(function(x2) { + return [x2, write_varint49(x2)]; + }); + cfb.FileIndex.map(function(fi, idx) { + return [fi, cfb.FullPaths[idx]]; + }).forEach(function(row) { + var fi = row[0], fp = row[1]; + if (!fi.name.match(/\.iwa/)) + return; + var x2 = parse_iwa_file(decompress_iwa_file(fi.content)); + x2.forEach(function(ia) { + ia.messages.forEach(function(m) { + indices_varint.forEach(function(ivi) { + if (ia.messages.some(function(mess) { + return varint_to_i32(mess.meta[1][0].data) != 11006 && u8contains(mess.data, ivi[1]); + })) { + dependents[ivi[0]].deps.push(ia.id); + } + }); + }); + }); + }); + function get_unique_msgid() { + for (var i = 927262; i < 2e6; ++i) + if (!dependents[i]) + return i; + throw new Error("Too many messages"); + } + var entry = CFB.find(cfb, dependents[1].location); + var x = parse_iwa_file(decompress_iwa_file(entry.content)); + var docroot; + for (var xi = 0; xi < x.length; ++xi) { + var packet = x[xi]; + if (packet.id == 1) + docroot = packet; + } + var sheetrootref = parse_TSP_Reference(parse_shallow(docroot.messages[0].data)[1][0].data); + entry = CFB.find(cfb, dependents[sheetrootref].location); + x = parse_iwa_file(decompress_iwa_file(entry.content)); + for (xi = 0; xi < x.length; ++xi) { + packet = x[xi]; + if (packet.id == sheetrootref) + docroot = packet; + } + sheetrootref = parse_TSP_Reference(parse_shallow(docroot.messages[0].data)[2][0].data); + entry = CFB.find(cfb, dependents[sheetrootref].location); + x = parse_iwa_file(decompress_iwa_file(entry.content)); + for (xi = 0; xi < x.length; ++xi) { + packet = x[xi]; + if (packet.id == sheetrootref) + docroot = packet; + } + sheetrootref = parse_TSP_Reference(parse_shallow(docroot.messages[0].data)[2][0].data); + entry = CFB.find(cfb, dependents[sheetrootref].location); + x = parse_iwa_file(decompress_iwa_file(entry.content)); + for (xi = 0; xi < x.length; ++xi) { + packet = x[xi]; + if (packet.id == sheetrootref) + docroot = packet; + } + var pb = parse_shallow(docroot.messages[0].data); + { + pb[6][0].data = write_varint49(range.e.r + 1); + pb[7][0].data = write_varint49(range.e.c + 1); + var cruidsref = parse_TSP_Reference(pb[46][0].data); + var oldbucket = CFB.find(cfb, dependents[cruidsref].location); + var _x = parse_iwa_file(decompress_iwa_file(oldbucket.content)); + { + for (var j = 0; j < _x.length; ++j) { + if (_x[j].id == cruidsref) + break; + } + if (_x[j].id != cruidsref) + throw "Bad ColumnRowUIDMapArchive"; + var cruids = parse_shallow(_x[j].messages[0].data); + cruids[1] = []; + cruids[2] = [], cruids[3] = []; + for (var C = 0; C <= range.e.c; ++C) { + var uuid = []; + uuid[1] = uuid[2] = [{ type: 0, data: write_varint49(C + 420690) }]; + cruids[1].push({ type: 2, data: write_shallow(uuid) }); + cruids[2].push({ type: 0, data: write_varint49(C) }); + cruids[3].push({ type: 0, data: write_varint49(C) }); + } + cruids[4] = []; + cruids[5] = [], cruids[6] = []; + for (var R = 0; R <= range.e.r; ++R) { + uuid = []; + uuid[1] = uuid[2] = [{ type: 0, data: write_varint49(R + 726270) }]; + cruids[4].push({ type: 2, data: write_shallow(uuid) }); + cruids[5].push({ type: 0, data: write_varint49(R) }); + cruids[6].push({ type: 0, data: write_varint49(R) }); + } + _x[j].messages[0].data = write_shallow(cruids); + } + oldbucket.content = compress_iwa_file(write_iwa_file(_x)); + oldbucket.size = oldbucket.content.length; + delete pb[46]; + var store = parse_shallow(pb[4][0].data); + { + store[7][0].data = write_varint49(range.e.r + 1); + var row_headers = parse_shallow(store[1][0].data); + var row_header_ref = parse_TSP_Reference(row_headers[2][0].data); + oldbucket = CFB.find(cfb, dependents[row_header_ref].location); + _x = parse_iwa_file(decompress_iwa_file(oldbucket.content)); + { + if (_x[0].id != row_header_ref) + throw "Bad HeaderStorageBucket"; + var base_bucket = parse_shallow(_x[0].messages[0].data); + for (R = 0; R < data.length; ++R) { + var _bucket = parse_shallow(base_bucket[2][0].data); + _bucket[1][0].data = write_varint49(R); + _bucket[4][0].data = write_varint49(data[R].length); + base_bucket[2][R] = { type: base_bucket[2][0].type, data: write_shallow(_bucket) }; + } + _x[0].messages[0].data = write_shallow(base_bucket); + } + oldbucket.content = compress_iwa_file(write_iwa_file(_x)); + oldbucket.size = oldbucket.content.length; + var col_header_ref = parse_TSP_Reference(store[2][0].data); + oldbucket = CFB.find(cfb, dependents[col_header_ref].location); + _x = parse_iwa_file(decompress_iwa_file(oldbucket.content)); + { + if (_x[0].id != col_header_ref) + throw "Bad HeaderStorageBucket"; + base_bucket = parse_shallow(_x[0].messages[0].data); + for (C = 0; C <= range.e.c; ++C) { + _bucket = parse_shallow(base_bucket[2][0].data); + _bucket[1][0].data = write_varint49(C); + _bucket[4][0].data = write_varint49(range.e.r + 1); + base_bucket[2][C] = { type: base_bucket[2][0].type, data: write_shallow(_bucket) }; + } + _x[0].messages[0].data = write_shallow(base_bucket); + } + oldbucket.content = compress_iwa_file(write_iwa_file(_x)); + oldbucket.size = oldbucket.content.length; + var sstref = parse_TSP_Reference(store[4][0].data); + (function() { + var sentry = CFB.find(cfb, dependents[sstref].location); + var sx = parse_iwa_file(decompress_iwa_file(sentry.content)); + var sstroot; + for (var sxi = 0; sxi < sx.length; ++sxi) { + var packet2 = sx[sxi]; + if (packet2.id == sstref) + sstroot = packet2; + } + var sstdata = parse_shallow(sstroot.messages[0].data); + { + sstdata[3] = []; + var newsst = []; + SST.forEach(function(str, i) { + newsst[1] = [{ type: 0, data: write_varint49(i) }]; + newsst[2] = [{ type: 0, data: write_varint49(1) }]; + newsst[3] = [{ type: 2, data: stru8(str) }]; + sstdata[3].push({ type: 2, data: write_shallow(newsst) }); + }); + } + sstroot.messages[0].data = write_shallow(sstdata); + var sy = write_iwa_file(sx); + var raw32 = compress_iwa_file(sy); + sentry.content = raw32; + sentry.size = sentry.content.length; + })(); + var tile = parse_shallow(store[3][0].data); + { + var t = tile[1][0]; + delete tile[2]; + var tl = parse_shallow(t.data); + { + var tileref = parse_TSP_Reference(tl[2][0].data); + (function() { + var tentry = CFB.find(cfb, dependents[tileref].location); + var tx = parse_iwa_file(decompress_iwa_file(tentry.content)); + var tileroot; + for (var sxi = 0; sxi < tx.length; ++sxi) { + var packet2 = tx[sxi]; + if (packet2.id == tileref) + tileroot = packet2; + } + var tiledata = parse_shallow(tileroot.messages[0].data); + { + delete tiledata[6]; + delete tile[7]; + var rowload = new Uint8Array(tiledata[5][0].data); + tiledata[5] = []; + var cnt = 0; + for (var R2 = 0; R2 <= range.e.r; ++R2) { + var tilerow = parse_shallow(rowload); + cnt += write_tile_row(tilerow, data[R2], SST); + tilerow[1][0].data = write_varint49(R2); + tiledata[5].push({ data: write_shallow(tilerow), type: 2 }); + } + tiledata[1] = [{ type: 0, data: write_varint49(range.e.c + 1) }]; + tiledata[2] = [{ type: 0, data: write_varint49(range.e.r + 1) }]; + tiledata[3] = [{ type: 0, data: write_varint49(cnt) }]; + tiledata[4] = [{ type: 0, data: write_varint49(range.e.r + 1) }]; + } + tileroot.messages[0].data = write_shallow(tiledata); + var ty = write_iwa_file(tx); + var raw32 = compress_iwa_file(ty); + tentry.content = raw32; + tentry.size = tentry.content.length; + })(); + } + t.data = write_shallow(tl); + } + store[3][0].data = write_shallow(tile); + } + pb[4][0].data = write_shallow(store); + } + docroot.messages[0].data = write_shallow(pb); + var y = write_iwa_file(x); + var raw3 = compress_iwa_file(y); + entry.content = raw3; + entry.size = entry.content.length; + return cfb; +} +function fix_opts_func(defaults) { + return function fix_opts(opts) { + for(var i = 0; i != defaults.length; ++i) { + var d = defaults[i]; + if(opts[d[0]] === undefined) opts[d[0]] = d[1]; + if(d[2] === 'n') opts[d[0]] = Number(opts[d[0]]); + } + }; +} + +function fix_read_opts(opts) { +fix_opts_func([ + ['cellNF', false], /* emit cell number format string as .z */ + ['cellHTML', true], /* emit html string as .h */ + ['cellFormula', true], /* emit formulae as .f */ + ['cellStyles', false], /* emits style/theme as .s */ + ['cellText', true], /* emit formatted text as .w */ + ['cellDates', false], /* emit date cells with type `d` */ + + ['sheetStubs', false], /* emit empty cells */ + ['sheetRows', 0, 'n'], /* read n rows (0 = read all rows) */ + + ['bookDeps', false], /* parse calculation chains */ + ['bookSheets', false], /* only try to get sheet names (no Sheets) */ + ['bookProps', false], /* only try to get properties (no Sheets) */ + ['bookFiles', false], /* include raw file structure (keys, files, cfb) */ + ['bookVBA', false], /* include vba raw data (vbaraw) */ + + ['password',''], /* password */ + ['WTF', false] /* WTF mode (throws errors) */ +])(opts); +} + +function fix_write_opts(opts) { +fix_opts_func([ + ['cellDates', false], /* write date cells with type `d` */ + + ['bookSST', false], /* Generate Shared String Table */ + + ['bookType', 'xlsx'], /* Type of workbook (xlsx/m/b) */ + + ['compression', false], /* Use file compression */ + + ['WTF', false] /* WTF mode (throws errors) */ +])(opts); +} +function get_sheet_type(n) { + if(RELS.WS.indexOf(n) > -1) return "sheet"; + if(RELS.CS && n == RELS.CS) return "chart"; + if(RELS.DS && n == RELS.DS) return "dialog"; + if(RELS.MS && n == RELS.MS) return "macro"; + return (n && n.length) ? n : "sheet"; +} +function safe_parse_wbrels(wbrels, sheets) { + if(!wbrels) return 0; + try { + wbrels = sheets.map(function pwbr(w) { if(!w.id) w.id = w.strRelID; return [w.name, wbrels['!id'][w.id].Target, get_sheet_type(wbrels['!id'][w.id].Type)]; }); + } catch(e) { return null; } + return !wbrels || wbrels.length === 0 ? null : wbrels; +} + +function safe_parse_sheet(zip, path, relsPath, sheet, idx, sheetRels, sheets, stype, opts, wb, themes, styles) { + try { + sheetRels[sheet]=parse_rels(getzipstr(zip, relsPath, true), path); + var data = getzipdata(zip, path); + var _ws; + switch(stype) { + case 'sheet': _ws = parse_ws(data, path, idx, opts, sheetRels[sheet], wb, themes, styles); break; + case 'chart': _ws = parse_cs(data, path, idx, opts, sheetRels[sheet], wb, themes, styles); + if(!_ws || !_ws['!drawel']) break; + var dfile = resolve_path(_ws['!drawel'].Target, path); + var drelsp = get_rels_path(dfile); + var draw = parse_drawing(getzipstr(zip, dfile, true), parse_rels(getzipstr(zip, drelsp, true), dfile)); + var chartp = resolve_path(draw, dfile); + var crelsp = get_rels_path(chartp); + _ws = parse_chart(getzipstr(zip, chartp, true), chartp, opts, parse_rels(getzipstr(zip, crelsp, true), chartp), wb, _ws); + break; + case 'macro': _ws = parse_ms(data, path, idx, opts, sheetRels[sheet], wb, themes, styles); break; + case 'dialog': _ws = parse_ds(data, path, idx, opts, sheetRels[sheet], wb, themes, styles); break; + default: throw new Error("Unrecognized sheet type " + stype); + } + sheets[sheet] = _ws; + + /* scan rels for comments and threaded comments */ + var tcomments = []; + if(sheetRels && sheetRels[sheet]) keys(sheetRels[sheet]).forEach(function(n) { + var dfile = ""; + if(sheetRels[sheet][n].Type == RELS.CMNT) { + dfile = resolve_path(sheetRels[sheet][n].Target, path); + var comments = parse_cmnt(getzipdata(zip, dfile, true), dfile, opts); + if(!comments || !comments.length) return; + sheet_insert_comments(_ws, comments, false); + } + if(sheetRels[sheet][n].Type == RELS.TCMNT) { + dfile = resolve_path(sheetRels[sheet][n].Target, path); + tcomments = tcomments.concat(parse_tcmnt_xml(getzipdata(zip, dfile, true), opts)); + } + }); + if(tcomments && tcomments.length) sheet_insert_comments(_ws, tcomments, true, opts.people || []); + } catch(e) { if(opts.WTF) throw e; } +} + +function strip_front_slash(x) { return x.charAt(0) == '/' ? x.slice(1) : x; } + +function parse_zip(zip, opts) { + make_ssf(); + opts = opts || {}; + fix_read_opts(opts); + + /* OpenDocument Part 3 Section 2.2.1 OpenDocument Package */ + if(safegetzipfile(zip, 'META-INF/manifest.xml')) return parse_ods(zip, opts); + /* UOC */ + if(safegetzipfile(zip, 'objectdata.xml')) return parse_ods(zip, opts); + /* Numbers */ + if(safegetzipfile(zip, 'Index/Document.iwa')) { + if(typeof Uint8Array == "undefined") throw new Error('NUMBERS file parsing requires Uint8Array support'); + if(typeof parse_numbers_iwa != "undefined") { + if(zip.FileIndex) return parse_numbers_iwa(zip); + var _zip = CFB.utils.cfb_new(); + zipentries(zip).forEach(function(e) { zip_add_file(_zip, e, getzipbin(zip, e)); }); + return parse_numbers_iwa(_zip); + } + throw new Error('Unsupported NUMBERS file'); + } + if(!safegetzipfile(zip, '[Content_Types].xml')) { + if(safegetzipfile(zip, 'index.xml.gz')) throw new Error('Unsupported NUMBERS 08 file'); + if(safegetzipfile(zip, 'index.xml')) throw new Error('Unsupported NUMBERS 09 file'); + throw new Error('Unsupported ZIP file'); + } + + var entries = zipentries(zip); + var dir = parse_ct((getzipstr(zip, '[Content_Types].xml'))); + var xlsb = false; + var sheets, binname; + if(dir.workbooks.length === 0) { + binname = "xl/workbook.xml"; + if(getzipdata(zip,binname, true)) dir.workbooks.push(binname); + } + if(dir.workbooks.length === 0) { + binname = "xl/workbook.bin"; + if(!getzipdata(zip,binname,true)) throw new Error("Could not find workbook"); + dir.workbooks.push(binname); + xlsb = true; + } + if(dir.workbooks[0].slice(-3) == "bin") xlsb = true; + + var themes = ({}); + var styles = ({}); + if(!opts.bookSheets && !opts.bookProps) { + strs = []; + if(dir.sst) try { strs=parse_sst(getzipdata(zip, strip_front_slash(dir.sst)), dir.sst, opts); } catch(e) { if(opts.WTF) throw e; } + + if(opts.cellStyles && dir.themes.length) themes = parse_theme(getzipstr(zip, dir.themes[0].replace(/^\//,''), true)||"",dir.themes[0], opts); + + if(dir.style) styles = parse_sty(getzipdata(zip, strip_front_slash(dir.style)), dir.style, themes, opts); + } + + /*var externbooks = */dir.links.map(function(link) { + try { + var rels = parse_rels(getzipstr(zip, get_rels_path(strip_front_slash(link))), link); + return parse_xlink(getzipdata(zip, strip_front_slash(link)), rels, link, opts); + } catch(e) {} + }); + + var wb = parse_wb(getzipdata(zip, strip_front_slash(dir.workbooks[0])), dir.workbooks[0], opts); + + var props = {}, propdata = ""; + + if(dir.coreprops.length) { + propdata = getzipdata(zip, strip_front_slash(dir.coreprops[0]), true); + if(propdata) props = parse_core_props(propdata); + if(dir.extprops.length !== 0) { + propdata = getzipdata(zip, strip_front_slash(dir.extprops[0]), true); + if(propdata) parse_ext_props(propdata, props, opts); + } + } + + var custprops = {}; + if(!opts.bookSheets || opts.bookProps) { + if (dir.custprops.length !== 0) { + propdata = getzipstr(zip, strip_front_slash(dir.custprops[0]), true); + if(propdata) custprops = parse_cust_props(propdata, opts); + } + } + + var out = ({}); + if(opts.bookSheets || opts.bookProps) { + if(wb.Sheets) sheets = wb.Sheets.map(function pluck(x){ return x.name; }); + else if(props.Worksheets && props.SheetNames.length > 0) sheets=props.SheetNames; + if(opts.bookProps) { out.Props = props; out.Custprops = custprops; } + if(opts.bookSheets && typeof sheets !== 'undefined') out.SheetNames = sheets; + if(opts.bookSheets ? out.SheetNames : opts.bookProps) return out; + } + sheets = {}; + + var deps = {}; + if(opts.bookDeps && dir.calcchain) deps=parse_cc(getzipdata(zip, strip_front_slash(dir.calcchain)),dir.calcchain,opts); + + var i=0; + var sheetRels = ({}); + var path, relsPath; + + { + var wbsheets = wb.Sheets; + props.Worksheets = wbsheets.length; + props.SheetNames = []; + for(var j = 0; j != wbsheets.length; ++j) { + props.SheetNames[j] = wbsheets[j].name; + } + } + + var wbext = xlsb ? "bin" : "xml"; + var wbrelsi = dir.workbooks[0].lastIndexOf("/"); + var wbrelsfile = (dir.workbooks[0].slice(0, wbrelsi+1) + "_rels/" + dir.workbooks[0].slice(wbrelsi+1) + ".rels").replace(/^\//,""); + if(!safegetzipfile(zip, wbrelsfile)) wbrelsfile = 'xl/_rels/workbook.' + wbext + '.rels'; + var wbrels = parse_rels(getzipstr(zip, wbrelsfile, true), wbrelsfile.replace(/_rels.*/, "s5s")); + + if((dir.metadata || []).length >= 1) { + /* TODO: MDX and other types of metadata */ + opts.xlmeta = parse_xlmeta(getzipdata(zip, strip_front_slash(dir.metadata[0])),dir.metadata[0],opts); + } + + if((dir.people || []).length >= 1) { + opts.people = parse_people_xml(getzipdata(zip, strip_front_slash(dir.people[0])),opts); + } + + if(wbrels) wbrels = safe_parse_wbrels(wbrels, wb.Sheets); + + /* Numbers iOS hack */ + var nmode = (getzipdata(zip,"xl/worksheets/sheet.xml",true))?1:0; + wsloop: for(i = 0; i != props.Worksheets; ++i) { + var stype = "sheet"; + if(wbrels && wbrels[i]) { + path = 'xl/' + (wbrels[i][1]).replace(/[\/]?xl\//, ""); + if(!safegetzipfile(zip, path)) path = wbrels[i][1]; + if(!safegetzipfile(zip, path)) path = wbrelsfile.replace(/_rels\/.*$/,"") + wbrels[i][1]; + stype = wbrels[i][2]; + } else { + path = 'xl/worksheets/sheet'+(i+1-nmode)+"." + wbext; + path = path.replace(/sheet0\./,"sheet."); + } + relsPath = path.replace(/^(.*)(\/)([^\/]*)$/, "$1/_rels/$3.rels"); + if(opts && opts.sheets != null) switch(typeof opts.sheets) { + case "number": if(i != opts.sheets) continue wsloop; break; + case "string": if(props.SheetNames[i].toLowerCase() != opts.sheets.toLowerCase()) continue wsloop; break; + default: if(Array.isArray && Array.isArray(opts.sheets)) { + var snjseen = false; + for(var snj = 0; snj != opts.sheets.length; ++snj) { + if(typeof opts.sheets[snj] == "number" && opts.sheets[snj] == i) snjseen=1; + if(typeof opts.sheets[snj] == "string" && opts.sheets[snj].toLowerCase() == props.SheetNames[i].toLowerCase()) snjseen = 1; + } + if(!snjseen) continue wsloop; + } + } + safe_parse_sheet(zip, path, relsPath, props.SheetNames[i], i, sheetRels, sheets, stype, opts, wb, themes, styles); + } + + out = ({ + Directory: dir, + Workbook: wb, + Props: props, + Custprops: custprops, + Deps: deps, + Sheets: sheets, + SheetNames: props.SheetNames, + Strings: strs, + Styles: styles, + Themes: themes, + SSF: dup(table_fmt) + }); + if(opts && opts.bookFiles) { + if(zip.files) { + out.keys = entries; + out.files = zip.files; + } else { + out.keys = []; + out.files = {}; + zip.FullPaths.forEach(function(p, idx) { + p = p.replace(/^Root Entry[\/]/, ""); + out.keys.push(p); + out.files[p] = zip.FileIndex[idx]; + }); + } + } + if(opts && opts.bookVBA) { + if(dir.vba.length > 0) out.vbaraw = getzipdata(zip,strip_front_slash(dir.vba[0]),true); + else if(dir.defaults && dir.defaults.bin === CT_VBA) out.vbaraw = getzipdata(zip, 'xl/vbaProject.bin',true); + } + return out; +} + +/* [MS-OFFCRYPTO] 2.1.1 */ +function parse_xlsxcfb(cfb, _opts) { + var opts = _opts || {}; + var f = 'Workbook', data = CFB.find(cfb, f); + try { + f = '/!DataSpaces/Version'; + data = CFB.find(cfb, f); if(!data || !data.content) throw new Error("ECMA-376 Encrypted file missing " + f); + /*var version = */parse_DataSpaceVersionInfo(data.content); + + /* 2.3.4.1 */ + f = '/!DataSpaces/DataSpaceMap'; + data = CFB.find(cfb, f); if(!data || !data.content) throw new Error("ECMA-376 Encrypted file missing " + f); + var dsm = parse_DataSpaceMap(data.content); + if(dsm.length !== 1 || dsm[0].comps.length !== 1 || dsm[0].comps[0].t !== 0 || dsm[0].name !== "StrongEncryptionDataSpace" || dsm[0].comps[0].v !== "EncryptedPackage") + throw new Error("ECMA-376 Encrypted file bad " + f); + + /* 2.3.4.2 */ + f = '/!DataSpaces/DataSpaceInfo/StrongEncryptionDataSpace'; + data = CFB.find(cfb, f); if(!data || !data.content) throw new Error("ECMA-376 Encrypted file missing " + f); + var seds = parse_DataSpaceDefinition(data.content); + if(seds.length != 1 || seds[0] != "StrongEncryptionTransform") + throw new Error("ECMA-376 Encrypted file bad " + f); + + /* 2.3.4.3 */ + f = '/!DataSpaces/TransformInfo/StrongEncryptionTransform/!Primary'; + data = CFB.find(cfb, f); if(!data || !data.content) throw new Error("ECMA-376 Encrypted file missing " + f); + /*var hdr = */parse_Primary(data.content); + } catch(e) {} + + f = '/EncryptionInfo'; + data = CFB.find(cfb, f); if(!data || !data.content) throw new Error("ECMA-376 Encrypted file missing " + f); + var einfo = parse_EncryptionInfo(data.content); + + /* 2.3.4.4 */ + f = '/EncryptedPackage'; + data = CFB.find(cfb, f); if(!data || !data.content) throw new Error("ECMA-376 Encrypted file missing " + f); + +/*global decrypt_agile */ +if(einfo[0] == 0x04 && typeof decrypt_agile !== 'undefined') return decrypt_agile(einfo[1], data.content, opts.password || "", opts); +/*global decrypt_std76 */ +if(einfo[0] == 0x02 && typeof decrypt_std76 !== 'undefined') return decrypt_std76(einfo[1], data.content, opts.password || "", opts); + throw new Error("File is password-protected"); +} + +function write_zip(wb, opts) { + if(opts.bookType == "ods") return write_ods(wb, opts); + if(opts.bookType == "numbers") return write_numbers_iwa(wb, opts); + if(opts.bookType == "xlsb") return write_zip_xlsxb(wb, opts); + return write_zip_xlsx(wb, opts); +} + +/* XLSX and XLSB writing are very similar. Originally they were unified in one + export function. This is horrible for tree shaking in the common case (most + applications need to export files in one format) so this function supports + both formats while write_zip_xlsx only handles XLSX */ +function write_zip_xlsxb(wb, opts) { + _shapeid = 1024; + if(wb && !wb.SSF) { + wb.SSF = dup(table_fmt); + } + if(wb && wb.SSF) { + make_ssf(); SSF_load_table(wb.SSF); + // $FlowIgnore + opts.revssf = evert_num(wb.SSF); opts.revssf[wb.SSF[65535]] = 0; + opts.ssf = wb.SSF; + } + opts.rels = {}; opts.wbrels = {}; + opts.Strings = []; opts.Strings.Count = 0; opts.Strings.Unique = 0; + if(browser_has_Map) opts.revStrings = new Map(); + else { opts.revStrings = {}; opts.revStrings.foo = []; delete opts.revStrings.foo; } + var wbext = opts.bookType == "xlsb" ? "bin" : "xml"; + var vbafmt = VBAFMTS.indexOf(opts.bookType) > -1; + var ct = new_ct(); + fix_write_opts(opts = opts || {}); + var zip = zip_new(); + var f = "", rId = 0; + + opts.cellXfs = []; + get_cell_style(opts.cellXfs, {}, {revssf:{"General":0}}); + + if(!wb.Props) wb.Props = {}; + + f = "docProps/core.xml"; + zip_add_file(zip, f, write_core_props(wb.Props, opts)); + ct.coreprops.push(f); + add_rels(opts.rels, 2, f, RELS.CORE_PROPS); + +f = "docProps/app.xml"; + if(wb.Props && wb.Props.SheetNames){/* empty */} + else if(!wb.Workbook || !wb.Workbook.Sheets) wb.Props.SheetNames = wb.SheetNames; + else { + var _sn = []; + for(var _i = 0; _i < wb.SheetNames.length; ++_i) + if((wb.Workbook.Sheets[_i]||{}).Hidden != 2) _sn.push(wb.SheetNames[_i]); + wb.Props.SheetNames = _sn; + } + wb.Props.Worksheets = wb.Props.SheetNames.length; + zip_add_file(zip, f, write_ext_props(wb.Props, opts)); + ct.extprops.push(f); + add_rels(opts.rels, 3, f, RELS.EXT_PROPS); + + if(wb.Custprops !== wb.Props && keys(wb.Custprops||{}).length > 0) { + f = "docProps/custom.xml"; + zip_add_file(zip, f, write_cust_props(wb.Custprops, opts)); + ct.custprops.push(f); + add_rels(opts.rels, 4, f, RELS.CUST_PROPS); + } + + for(rId=1;rId <= wb.SheetNames.length; ++rId) { + var wsrels = {'!id':{}}; + var ws = wb.Sheets[wb.SheetNames[rId-1]]; + var _type = (ws || {})["!type"] || "sheet"; + switch(_type) { + case "chart": + /* falls through */ + default: + f = "xl/worksheets/sheet" + rId + "." + wbext; + zip_add_file(zip, f, write_ws(rId-1, f, opts, wb, wsrels)); + ct.sheets.push(f); + add_rels(opts.wbrels, -1, "worksheets/sheet" + rId + "." + wbext, RELS.WS[0]); + } + + if(ws) { + var comments = ws['!comments']; + var need_vml = false; + var cf = ""; + if(comments && comments.length > 0) { + cf = "xl/comments" + rId + "." + wbext; + zip_add_file(zip, cf, write_cmnt(comments, cf, opts)); + ct.comments.push(cf); + add_rels(wsrels, -1, "../comments" + rId + "." + wbext, RELS.CMNT); + need_vml = true; + } + if(ws['!legacy']) { + if(need_vml) zip_add_file(zip, "xl/drawings/vmlDrawing" + (rId) + ".vml", write_comments_vml(rId, ws['!comments'])); + } + delete ws['!comments']; + delete ws['!legacy']; + } + + if(wsrels['!id'].rId1) zip_add_file(zip, get_rels_path(f), write_rels(wsrels)); + } + + if(opts.Strings != null && opts.Strings.length > 0) { + f = "xl/sharedStrings." + wbext; + zip_add_file(zip, f, write_sst(opts.Strings, f, opts)); + ct.strs.push(f); + add_rels(opts.wbrels, -1, "sharedStrings." + wbext, RELS.SST); + } + + f = "xl/workbook." + wbext; + zip_add_file(zip, f, write_wb(wb, f, opts)); + ct.workbooks.push(f); + add_rels(opts.rels, 1, f, RELS.WB); + + /* TODO: something more intelligent with themes */ + + f = "xl/theme/theme1.xml"; + zip_add_file(zip, f, write_theme(wb.Themes, opts)); + ct.themes.push(f); + add_rels(opts.wbrels, -1, "theme/theme1.xml", RELS.THEME); + + /* TODO: something more intelligent with styles */ + + f = "xl/styles." + wbext; + zip_add_file(zip, f, write_sty(wb, f, opts)); + ct.styles.push(f); + add_rels(opts.wbrels, -1, "styles." + wbext, RELS.STY); + + if(wb.vbaraw && vbafmt) { + f = "xl/vbaProject.bin"; + zip_add_file(zip, f, wb.vbaraw); + ct.vba.push(f); + add_rels(opts.wbrels, -1, "vbaProject.bin", RELS.VBA); + } + + f = "xl/metadata." + wbext; + zip_add_file(zip, f, write_xlmeta(f)); + ct.metadata.push(f); + add_rels(opts.wbrels, -1, "metadata." + wbext, RELS.XLMETA); + + zip_add_file(zip, "[Content_Types].xml", write_ct(ct, opts)); + zip_add_file(zip, '_rels/.rels', write_rels(opts.rels)); + zip_add_file(zip, 'xl/_rels/workbook.' + wbext + '.rels', write_rels(opts.wbrels)); + + delete opts.revssf; delete opts.ssf; + return zip; +} + +function write_zip_xlsx(wb, opts) { + _shapeid = 1024; + if(wb && !wb.SSF) { + wb.SSF = dup(table_fmt); + } + if(wb && wb.SSF) { + make_ssf(); SSF_load_table(wb.SSF); + // $FlowIgnore + opts.revssf = evert_num(wb.SSF); opts.revssf[wb.SSF[65535]] = 0; + opts.ssf = wb.SSF; + } + opts.rels = {}; opts.wbrels = {}; + opts.Strings = []; opts.Strings.Count = 0; opts.Strings.Unique = 0; + if(browser_has_Map) opts.revStrings = new Map(); + else { opts.revStrings = {}; opts.revStrings.foo = []; delete opts.revStrings.foo; } + var wbext = "xml"; + var vbafmt = VBAFMTS.indexOf(opts.bookType) > -1; + var ct = new_ct(); + fix_write_opts(opts = opts || {}); + var zip = zip_new(); + var f = "", rId = 0; + + opts.cellXfs = []; + get_cell_style(opts.cellXfs, {}, {revssf:{"General":0}}); + + if(!wb.Props) wb.Props = {}; + + f = "docProps/core.xml"; + zip_add_file(zip, f, write_core_props(wb.Props, opts)); + ct.coreprops.push(f); + add_rels(opts.rels, 2, f, RELS.CORE_PROPS); + +f = "docProps/app.xml"; + if(wb.Props && wb.Props.SheetNames){/* empty */} + else if(!wb.Workbook || !wb.Workbook.Sheets) wb.Props.SheetNames = wb.SheetNames; + else { + var _sn = []; + for(var _i = 0; _i < wb.SheetNames.length; ++_i) + if((wb.Workbook.Sheets[_i]||{}).Hidden != 2) _sn.push(wb.SheetNames[_i]); + wb.Props.SheetNames = _sn; + } + wb.Props.Worksheets = wb.Props.SheetNames.length; + zip_add_file(zip, f, write_ext_props(wb.Props, opts)); + ct.extprops.push(f); + add_rels(opts.rels, 3, f, RELS.EXT_PROPS); + + if(wb.Custprops !== wb.Props && keys(wb.Custprops||{}).length > 0) { + f = "docProps/custom.xml"; + zip_add_file(zip, f, write_cust_props(wb.Custprops, opts)); + ct.custprops.push(f); + add_rels(opts.rels, 4, f, RELS.CUST_PROPS); + } + + var people = ["SheetJ5"]; + opts.tcid = 0; + + for(rId=1;rId <= wb.SheetNames.length; ++rId) { + var wsrels = {'!id':{}}; + var ws = wb.Sheets[wb.SheetNames[rId-1]]; + var _type = (ws || {})["!type"] || "sheet"; + switch(_type) { + case "chart": + /* falls through */ + default: + f = "xl/worksheets/sheet" + rId + "." + wbext; + zip_add_file(zip, f, write_ws_xml(rId-1, opts, wb, wsrels)); + ct.sheets.push(f); + add_rels(opts.wbrels, -1, "worksheets/sheet" + rId + "." + wbext, RELS.WS[0]); + } + + if(ws) { + var comments = ws['!comments']; + var need_vml = false; + var cf = ""; + if(comments && comments.length > 0) { + var needtc = false; + comments.forEach(function(carr) { + carr[1].forEach(function(c) { if(c.T == true) needtc = true; }); + }); + if(needtc) { + cf = "xl/threadedComments/threadedComment" + rId + "." + wbext; + zip_add_file(zip, cf, write_tcmnt_xml(comments, people, opts)); + ct.threadedcomments.push(cf); + add_rels(wsrels, -1, "../threadedComments/threadedComment" + rId + "." + wbext, RELS.TCMNT); + } + + cf = "xl/comments" + rId + "." + wbext; + zip_add_file(zip, cf, write_comments_xml(comments, opts)); + ct.comments.push(cf); + add_rels(wsrels, -1, "../comments" + rId + "." + wbext, RELS.CMNT); + need_vml = true; + } + if(ws['!legacy']) { + if(need_vml) zip_add_file(zip, "xl/drawings/vmlDrawing" + (rId) + ".vml", write_comments_vml(rId, ws['!comments'])); + } + delete ws['!comments']; + delete ws['!legacy']; + } + + if(wsrels['!id'].rId1) zip_add_file(zip, get_rels_path(f), write_rels(wsrels)); + } + + if(opts.Strings != null && opts.Strings.length > 0) { + f = "xl/sharedStrings." + wbext; + zip_add_file(zip, f, write_sst_xml(opts.Strings, opts)); + ct.strs.push(f); + add_rels(opts.wbrels, -1, "sharedStrings." + wbext, RELS.SST); + } + + f = "xl/workbook." + wbext; + zip_add_file(zip, f, write_wb_xml(wb, opts)); + ct.workbooks.push(f); + add_rels(opts.rels, 1, f, RELS.WB); + + /* TODO: something more intelligent with themes */ + + f = "xl/theme/theme1.xml"; + zip_add_file(zip, f, write_theme(wb.Themes, opts)); + ct.themes.push(f); + add_rels(opts.wbrels, -1, "theme/theme1.xml", RELS.THEME); + + /* TODO: something more intelligent with styles */ + + f = "xl/styles." + wbext; + zip_add_file(zip, f, write_sty_xml(wb, opts)); + ct.styles.push(f); + add_rels(opts.wbrels, -1, "styles." + wbext, RELS.STY); + + if(wb.vbaraw && vbafmt) { + f = "xl/vbaProject.bin"; + zip_add_file(zip, f, wb.vbaraw); + ct.vba.push(f); + add_rels(opts.wbrels, -1, "vbaProject.bin", RELS.VBA); + } + + f = "xl/metadata." + wbext; + zip_add_file(zip, f, write_xlmeta_xml()); + ct.metadata.push(f); + add_rels(opts.wbrels, -1, "metadata." + wbext, RELS.XLMETA); + + if(people.length > 1) { + f = "xl/persons/person.xml"; + zip_add_file(zip, f, write_people_xml(people, opts)); + ct.people.push(f); + add_rels(opts.wbrels, -1, "persons/person.xml", RELS.PEOPLE); + } + + zip_add_file(zip, "[Content_Types].xml", write_ct(ct, opts)); + zip_add_file(zip, '_rels/.rels', write_rels(opts.rels)); + zip_add_file(zip, 'xl/_rels/workbook.' + wbext + '.rels', write_rels(opts.wbrels)); + + delete opts.revssf; delete opts.ssf; + return zip; +} + +function firstbyte(f,o) { + var x = ""; + switch((o||{}).type || "base64") { + case 'buffer': return [f[0], f[1], f[2], f[3], f[4], f[5], f[6], f[7]]; + case 'base64': x = Base64_decode(f.slice(0,12)); break; + case 'binary': x = f; break; + case 'array': return [f[0], f[1], f[2], f[3], f[4], f[5], f[6], f[7]]; + default: throw new Error("Unrecognized type " + (o && o.type || "undefined")); + } + return [x.charCodeAt(0), x.charCodeAt(1), x.charCodeAt(2), x.charCodeAt(3), x.charCodeAt(4), x.charCodeAt(5), x.charCodeAt(6), x.charCodeAt(7)]; +} + +function read_cfb(cfb, opts) { + if(CFB.find(cfb, "EncryptedPackage")) return parse_xlsxcfb(cfb, opts); + return parse_xlscfb(cfb, opts); +} + +function read_zip(data, opts) { + var zip, d = data; + var o = opts||{}; + if(!o.type) o.type = (has_buf && Buffer.isBuffer(data)) ? "buffer" : "base64"; + zip = zip_read(d, o); + return parse_zip(zip, o); +} + +function read_plaintext(data, o) { + var i = 0; + main: while(i < data.length) switch(data.charCodeAt(i)) { + case 0x0A: case 0x0D: case 0x20: ++i; break; + case 0x3C: return parse_xlml(data.slice(i),o); + default: break main; + } + return PRN.to_workbook(data, o); +} + +function read_plaintext_raw(data, o) { + var str = "", bytes = firstbyte(data, o); + switch(o.type) { + case 'base64': str = Base64_decode(data); break; + case 'binary': str = data; break; + case 'buffer': str = data.toString('binary'); break; + case 'array': str = cc2str(data); break; + default: throw new Error("Unrecognized type " + o.type); + } + if(bytes[0] == 0xEF && bytes[1] == 0xBB && bytes[2] == 0xBF) str = utf8read(str); + o.type = "binary"; + return read_plaintext(str, o); +} + +function read_utf16(data, o) { + var d = data; + if(o.type == 'base64') d = Base64_decode(d); + d = $cptable.utils.decode(1200, d.slice(2), 'str'); + o.type = "binary"; + return read_plaintext(d, o); +} + +function bstrify(data) { + return !data.match(/[^\x00-\x7F]/) ? data : utf8write(data); +} + +function read_prn(data, d, o, str) { + if(str) { o.type = "string"; return PRN.to_workbook(data, o); } + return PRN.to_workbook(d, o); +} + +function readSync(data, opts) { + reset_cp(); + var o = opts||{}; + if(typeof ArrayBuffer !== 'undefined' && data instanceof ArrayBuffer) return readSync(new Uint8Array(data), (o = dup(o), o.type = "array", o)); + if(typeof Uint8Array !== 'undefined' && data instanceof Uint8Array && !o.type) o.type = typeof Deno !== "undefined" ? "buffer" : "array"; + var d = data, n = [0,0,0,0], str = false; + if(o.cellStyles) { o.cellNF = true; o.sheetStubs = true; } + _ssfopts = {}; + if(o.dateNF) _ssfopts.dateNF = o.dateNF; + if(!o.type) o.type = (has_buf && Buffer.isBuffer(data)) ? "buffer" : "base64"; + if(o.type == "file") { o.type = has_buf ? "buffer" : "binary"; d = read_binary(data); if(typeof Uint8Array !== 'undefined' && !has_buf) o.type = "array"; } + if(o.type == "string") { str = true; o.type = "binary"; o.codepage = 65001; d = bstrify(data); } + if(o.type == 'array' && typeof Uint8Array !== 'undefined' && data instanceof Uint8Array && typeof ArrayBuffer !== 'undefined') { + // $FlowIgnore + var ab=new ArrayBuffer(3), vu=new Uint8Array(ab); vu.foo="bar"; + // $FlowIgnore + if(!vu.foo) {o=dup(o); o.type='array'; return readSync(ab2a(d), o);} + } + switch((n = firstbyte(d, o))[0]) { + case 0xD0: if(n[1] === 0xCF && n[2] === 0x11 && n[3] === 0xE0 && n[4] === 0xA1 && n[5] === 0xB1 && n[6] === 0x1A && n[7] === 0xE1) return read_cfb(CFB.read(d, o), o); break; + case 0x09: if(n[1] <= 0x08) return parse_xlscfb(d, o); break; + case 0x3C: return parse_xlml(d, o); + case 0x49: + if(n[1] === 0x49 && n[2] === 0x2a && n[3] === 0x00) throw new Error("TIFF Image File is not a spreadsheet"); + if(n[1] === 0x44) return read_wb_ID(d, o); + break; + case 0x54: if(n[1] === 0x41 && n[2] === 0x42 && n[3] === 0x4C) return DIF.to_workbook(d, o); break; + case 0x50: return (n[1] === 0x4B && n[2] < 0x09 && n[3] < 0x09) ? read_zip(d, o) : read_prn(data, d, o, str); + case 0xEF: return n[3] === 0x3C ? parse_xlml(d, o) : read_prn(data, d, o, str); + case 0xFF: + if(n[1] === 0xFE) { return read_utf16(d, o); } + else if(n[1] === 0x00 && n[2] === 0x02 && n[3] === 0x00) return WK_.to_workbook(d, o); + break; + case 0x00: + if(n[1] === 0x00) { + if(n[2] >= 0x02 && n[3] === 0x00) return WK_.to_workbook(d, o); + if(n[2] === 0x00 && (n[3] === 0x08 || n[3] === 0x09)) return WK_.to_workbook(d, o); + } + break; + case 0x03: case 0x83: case 0x8B: case 0x8C: return DBF.to_workbook(d, o); + case 0x7B: if(n[1] === 0x5C && n[2] === 0x72 && n[3] === 0x74) return RTF.to_workbook(d, o); break; + case 0x0A: case 0x0D: case 0x20: return read_plaintext_raw(d, o); + case 0x89: if(n[1] === 0x50 && n[2] === 0x4E && n[3] === 0x47) throw new Error("PNG Image File is not a spreadsheet"); break; + } + if(DBF_SUPPORTED_VERSIONS.indexOf(n[0]) > -1 && n[2] <= 12 && n[3] <= 31) return DBF.to_workbook(d, o); + return read_prn(data, d, o, str); +} + +function readFileSync(filename, opts) { + var o = opts||{}; o.type = 'file'; + return readSync(filename, o); +} +function write_cfb_ctr(cfb, o) { + switch(o.type) { + case "base64": case "binary": break; + case "buffer": case "array": o.type = ""; break; + case "file": return write_dl(o.file, CFB.write(cfb, {type:has_buf ? 'buffer' : ""})); + case "string": throw new Error("'string' output type invalid for '" + o.bookType + "' files"); + default: throw new Error("Unrecognized type " + o.type); + } + return CFB.write(cfb, o); +} + +function write_zip_type(wb, opts) { + var o = dup(opts||{}); + var z = write_zip(wb, o); + return write_zip_denouement(z, o); +} +function write_zip_typeXLSX(wb, opts) { + var o = dup(opts||{}); + var z = write_zip_xlsx(wb, o); + return write_zip_denouement(z, o); +} +function write_zip_denouement(z, o) { + var oopts = {}; + var ftype = has_buf ? "nodebuffer" : (typeof Uint8Array !== "undefined" ? "array" : "string"); + if(o.compression) oopts.compression = 'DEFLATE'; + if(o.password) oopts.type = ftype; + else switch(o.type) { + case "base64": oopts.type = "base64"; break; + case "binary": oopts.type = "string"; break; + case "string": throw new Error("'string' output type invalid for '" + o.bookType + "' files"); + case "buffer": + case "file": oopts.type = ftype; break; + default: throw new Error("Unrecognized type " + o.type); + } + var out = z.FullPaths ? CFB.write(z, {fileType:"zip", type: {"nodebuffer": "buffer", "string": "binary"}[oopts.type] || oopts.type, compression: !!o.compression}) : z.generate(oopts); + if(typeof Deno !== "undefined") { + if(typeof out == "string") { + if(o.type == "binary" || o.type == "base64") return out; + out = new Uint8Array(s2ab(out)); + } + } +/*jshint -W083 */ + if(o.password && typeof encrypt_agile !== 'undefined') return write_cfb_ctr(encrypt_agile(out, o.password), o); // eslint-disable-line no-undef +/*jshint +W083 */ + if(o.type === "file") return write_dl(o.file, out); + return o.type == "string" ? utf8read(out) : out; +} + +function write_cfb_type(wb, opts) { + var o = opts||{}; + var cfb = write_xlscfb(wb, o); + return write_cfb_ctr(cfb, o); +} + +function write_string_type(out, opts, bom) { + if(!bom) bom = ""; + var o = bom + out; + switch(opts.type) { + case "base64": return Base64_encode(utf8write(o)); + case "binary": return utf8write(o); + case "string": return out; + case "file": return write_dl(opts.file, o, 'utf8'); + case "buffer": { + if(has_buf) return Buffer_from(o, 'utf8'); + else if(typeof TextEncoder !== "undefined") return new TextEncoder().encode(o); + else return write_string_type(o, {type:'binary'}).split("").map(function(c) { return c.charCodeAt(0); }); + } + } + throw new Error("Unrecognized type " + opts.type); +} + +function write_stxt_type(out, opts) { + switch(opts.type) { + case "base64": return Base64_encode(out); + case "binary": return out; + case "string": return out; /* override in sheet_to_txt */ + case "file": return write_dl(opts.file, out, 'binary'); + case "buffer": { + if(has_buf) return Buffer_from(out, 'binary'); + else return out.split("").map(function(c) { return c.charCodeAt(0); }); + } + } + throw new Error("Unrecognized type " + opts.type); +} + +/* TODO: test consistency */ +function write_binary_type(out, opts) { + switch(opts.type) { + case "string": + case "base64": + case "binary": + var bstr = ""; + // $FlowIgnore + for(var i = 0; i < out.length; ++i) bstr += String.fromCharCode(out[i]); + return opts.type == 'base64' ? Base64_encode(bstr) : opts.type == 'string' ? utf8read(bstr) : bstr; + case "file": return write_dl(opts.file, out); + case "buffer": return out; + default: throw new Error("Unrecognized type " + opts.type); + } +} + +function writeSyncXLSX(wb, opts) { + reset_cp(); + check_wb(wb); + var o = dup(opts||{}); + if(o.cellStyles) { o.cellNF = true; o.sheetStubs = true; } + if(o.type == "array") { o.type = "binary"; var out = (writeSyncXLSX(wb, o)); o.type = "array"; return s2ab(out); } + return write_zip_typeXLSX(wb, o); +} + +function writeSync(wb, opts) { + reset_cp(); + check_wb(wb); + var o = dup(opts||{}); + if(o.cellStyles) { o.cellNF = true; o.sheetStubs = true; } + if(o.type == "array") { o.type = "binary"; var out = (writeSync(wb, o)); o.type = "array"; return s2ab(out); } + var idx = 0; + if(o.sheet) { + if(typeof o.sheet == "number") idx = o.sheet; + else idx = wb.SheetNames.indexOf(o.sheet); + if(!wb.SheetNames[idx]) throw new Error("Sheet not found: " + o.sheet + " : " + (typeof o.sheet)); + } + switch(o.bookType || 'xlsb') { + case 'xml': + case 'xlml': return write_string_type(write_xlml(wb, o), o); + case 'slk': + case 'sylk': return write_string_type(SYLK.from_sheet(wb.Sheets[wb.SheetNames[idx]], o), o); + case 'htm': + case 'html': return write_string_type(sheet_to_html(wb.Sheets[wb.SheetNames[idx]], o), o); + case 'txt': return write_stxt_type(sheet_to_txt(wb.Sheets[wb.SheetNames[idx]], o), o); + case 'csv': return write_string_type(sheet_to_csv(wb.Sheets[wb.SheetNames[idx]], o), o, "\ufeff"); + case 'dif': return write_string_type(DIF.from_sheet(wb.Sheets[wb.SheetNames[idx]], o), o); + case 'dbf': return write_binary_type(DBF.from_sheet(wb.Sheets[wb.SheetNames[idx]], o), o); + case 'prn': return write_string_type(PRN.from_sheet(wb.Sheets[wb.SheetNames[idx]], o), o); + case 'rtf': return write_string_type(RTF.from_sheet(wb.Sheets[wb.SheetNames[idx]], o), o); + case 'eth': return write_string_type(ETH.from_sheet(wb.Sheets[wb.SheetNames[idx]], o), o); + case 'fods': return write_string_type(write_ods(wb, o), o); + case 'wk1': return write_binary_type(WK_.sheet_to_wk1(wb.Sheets[wb.SheetNames[idx]], o), o); + case 'wk3': return write_binary_type(WK_.book_to_wk3(wb, o), o); + case 'biff2': if(!o.biff) o.biff = 2; /* falls through */ + case 'biff3': if(!o.biff) o.biff = 3; /* falls through */ + case 'biff4': if(!o.biff) o.biff = 4; return write_binary_type(write_biff_buf(wb, o), o); + case 'biff5': if(!o.biff) o.biff = 5; /* falls through */ + case 'biff8': + case 'xla': + case 'xls': if(!o.biff) o.biff = 8; return write_cfb_type(wb, o); + case 'xlsx': + case 'xlsm': + case 'xlam': + case 'xlsb': + case 'numbers': + case 'ods': return write_zip_type(wb, o); + default: throw new Error ("Unrecognized bookType |" + o.bookType + "|"); + } +} + +function resolve_book_type(o) { + if(o.bookType) return; + var _BT = { + "xls": "biff8", + "htm": "html", + "slk": "sylk", + "socialcalc": "eth", + "Sh33tJS": "WTF" + }; + var ext = o.file.slice(o.file.lastIndexOf(".")).toLowerCase(); + if(ext.match(/^\.[a-z]+$/)) o.bookType = ext.slice(1); + o.bookType = _BT[o.bookType] || o.bookType; +} + +function writeFileSync(wb, filename, opts) { + var o = opts||{}; o.type = 'file'; + o.file = filename; + resolve_book_type(o); + return writeSync(wb, o); +} + +function writeFileSyncXLSX(wb, filename, opts) { + var o = opts||{}; o.type = 'file'; + o.file = filename; + resolve_book_type(o); + return writeSyncXLSX(wb, o); +} + + +function writeFileAsync(filename, wb, opts, cb) { + var o = opts||{}; o.type = 'file'; + o.file = filename; + resolve_book_type(o); + o.type = 'buffer'; + var _cb = cb; if(!(_cb instanceof Function)) _cb = (opts); + return _fs.writeFile(filename, writeSync(wb, o), _cb); +} +function make_json_row(sheet, r, R, cols, header, hdr, dense, o) { + var rr = encode_row(R); + var defval = o.defval, raw = o.raw || !Object.prototype.hasOwnProperty.call(o, "raw"); + var isempty = true; + var row = (header === 1) ? [] : {}; + if(header !== 1) { + if(Object.defineProperty) try { Object.defineProperty(row, '__rowNum__', {value:R, enumerable:false}); } catch(e) { row.__rowNum__ = R; } + else row.__rowNum__ = R; + } + if(!dense || sheet[R]) for (var C = r.s.c; C <= r.e.c; ++C) { + var val = dense ? sheet[R][C] : sheet[cols[C] + rr]; + if(val === undefined || val.t === undefined) { + if(defval === undefined) continue; + if(hdr[C] != null) { row[hdr[C]] = defval; } + continue; + } + var v = val.v; + switch(val.t){ + case 'z': if(v == null) break; continue; + case 'e': v = (v == 0 ? null : void 0); break; + case 's': case 'd': case 'b': case 'n': break; + default: throw new Error('unrecognized type ' + val.t); + } + if(hdr[C] != null) { + if(v == null) { + if(val.t == "e" && v === null) row[hdr[C]] = null; + else if(defval !== undefined) row[hdr[C]] = defval; + else if(raw && v === null) row[hdr[C]] = null; + else continue; + } else { + row[hdr[C]] = raw && (val.t !== "n" || (val.t === "n" && o.rawNumbers !== false)) ? v : format_cell(val,v,o); + } + if(v != null) isempty = false; + } + } + return { row: row, isempty: isempty }; +} + + +function sheet_to_json(sheet, opts) { + if(sheet == null || sheet["!ref"] == null) return []; + var val = {t:'n',v:0}, header = 0, offset = 1, hdr = [], v=0, vv=""; + var r = {s:{r:0,c:0},e:{r:0,c:0}}; + var o = opts || {}; + var range = o.range != null ? o.range : sheet["!ref"]; + if(o.header === 1) header = 1; + else if(o.header === "A") header = 2; + else if(Array.isArray(o.header)) header = 3; + else if(o.header == null) header = 0; + switch(typeof range) { + case 'string': r = safe_decode_range(range); break; + case 'number': r = safe_decode_range(sheet["!ref"]); r.s.r = range; break; + default: r = range; + } + if(header > 0) offset = 0; + var rr = encode_row(r.s.r); + var cols = []; + var out = []; + var outi = 0, counter = 0; + var dense = Array.isArray(sheet); + var R = r.s.r, C = 0; + var header_cnt = {}; + if(dense && !sheet[R]) sheet[R] = []; + var colinfo = o.skipHidden && sheet["!cols"] || []; + var rowinfo = o.skipHidden && sheet["!rows"] || []; + for(C = r.s.c; C <= r.e.c; ++C) { + if(((colinfo[C]||{}).hidden)) continue; + cols[C] = encode_col(C); + val = dense ? sheet[R][C] : sheet[cols[C] + rr]; + switch(header) { + case 1: hdr[C] = C - r.s.c; break; + case 2: hdr[C] = cols[C]; break; + case 3: hdr[C] = o.header[C - r.s.c]; break; + default: + if(val == null) val = {w: "__EMPTY", t: "s"}; + vv = v = format_cell(val, null, o); + counter = header_cnt[v] || 0; + if(!counter) header_cnt[v] = 1; + else { + do { vv = v + "_" + (counter++); } while(header_cnt[vv]); header_cnt[v] = counter; + header_cnt[vv] = 1; + } + hdr[C] = vv; + } + } + for (R = r.s.r + offset; R <= r.e.r; ++R) { + if ((rowinfo[R]||{}).hidden) continue; + var row = make_json_row(sheet, r, R, cols, header, hdr, dense, o); + if((row.isempty === false) || (header === 1 ? o.blankrows !== false : !!o.blankrows)) out[outi++] = row.row; + } + out.length = outi; + return out; +} + +var qreg = /"/g; +function make_csv_row(sheet, r, R, cols, fs, rs, FS, o) { + var isempty = true; + var row = [], txt = "", rr = encode_row(R); + for(var C = r.s.c; C <= r.e.c; ++C) { + if (!cols[C]) continue; + var val = o.dense ? (sheet[R]||[])[C]: sheet[cols[C] + rr]; + if(val == null) txt = ""; + else if(val.v != null) { + isempty = false; + txt = ''+(o.rawNumbers && val.t == "n" ? val.v : format_cell(val, null, o)); + for(var i = 0, cc = 0; i !== txt.length; ++i) if((cc = txt.charCodeAt(i)) === fs || cc === rs || cc === 34 || o.forceQuotes) {txt = "\"" + txt.replace(qreg, '""') + "\""; break; } + if(txt == "ID") txt = '"ID"'; + } else if(val.f != null && !val.F) { + isempty = false; + txt = '=' + val.f; if(txt.indexOf(",") >= 0) txt = '"' + txt.replace(qreg, '""') + '"'; + } else txt = ""; + /* NOTE: Excel CSV does not support array formulae */ + row.push(txt); + } + if(o.blankrows === false && isempty) return null; + return row.join(FS); +} + +function sheet_to_csv(sheet, opts) { + var out = []; + var o = opts == null ? {} : opts; + if(sheet == null || sheet["!ref"] == null) return ""; + var r = safe_decode_range(sheet["!ref"]); + var FS = o.FS !== undefined ? o.FS : ",", fs = FS.charCodeAt(0); + var RS = o.RS !== undefined ? o.RS : "\n", rs = RS.charCodeAt(0); + var endregex = new RegExp((FS=="|" ? "\\|" : FS)+"+$"); + var row = "", cols = []; + o.dense = Array.isArray(sheet); + var colinfo = o.skipHidden && sheet["!cols"] || []; + var rowinfo = o.skipHidden && sheet["!rows"] || []; + for(var C = r.s.c; C <= r.e.c; ++C) if (!((colinfo[C]||{}).hidden)) cols[C] = encode_col(C); + var w = 0; + for(var R = r.s.r; R <= r.e.r; ++R) { + if ((rowinfo[R]||{}).hidden) continue; + row = make_csv_row(sheet, r, R, cols, fs, rs, FS, o); + if(row == null) { continue; } + if(o.strip) row = row.replace(endregex,""); + if(row || (o.blankrows !== false)) out.push((w++ ? RS : "") + row); + } + delete o.dense; + return out.join(""); +} + +function sheet_to_txt(sheet, opts) { + if(!opts) opts = {}; opts.FS = "\t"; opts.RS = "\n"; + var s = sheet_to_csv(sheet, opts); + if(typeof $cptable == 'undefined' || opts.type == 'string') return s; + var o = $cptable.utils.encode(1200, s, 'str'); + return String.fromCharCode(255) + String.fromCharCode(254) + o; +} + +function sheet_to_formulae(sheet) { + var y = "", x, val=""; + if(sheet == null || sheet["!ref"] == null) return []; + var r = safe_decode_range(sheet['!ref']), rr = "", cols = [], C; + var cmds = []; + var dense = Array.isArray(sheet); + for(C = r.s.c; C <= r.e.c; ++C) cols[C] = encode_col(C); + for(var R = r.s.r; R <= r.e.r; ++R) { + rr = encode_row(R); + for(C = r.s.c; C <= r.e.c; ++C) { + y = cols[C] + rr; + x = dense ? (sheet[R]||[])[C] : sheet[y]; + val = ""; + if(x === undefined) continue; + else if(x.F != null) { + y = x.F; + if(!x.f) continue; + val = x.f; + if(y.indexOf(":") == -1) y = y + ":" + y; + } + if(x.f != null) val = x.f; + else if(x.t == 'z') continue; + else if(x.t == 'n' && x.v != null) val = "" + x.v; + else if(x.t == 'b') val = x.v ? "TRUE" : "FALSE"; + else if(x.w !== undefined) val = "'" + x.w; + else if(x.v === undefined) continue; + else if(x.t == 's') val = "'" + x.v; + else val = ""+x.v; + cmds[cmds.length] = y + "=" + val; + } + } + return cmds; +} + +function sheet_add_json(_ws, js, opts) { + var o = opts || {}; + var offset = +!o.skipHeader; + var ws = _ws || ({}); + var _R = 0, _C = 0; + if(ws && o.origin != null) { + if(typeof o.origin == 'number') _R = o.origin; + else { + var _origin = typeof o.origin == "string" ? decode_cell(o.origin) : o.origin; + _R = _origin.r; _C = _origin.c; + } + } + var cell; + var range = ({s: {c:0, r:0}, e: {c:_C, r:_R + js.length - 1 + offset}}); + if(ws['!ref']) { + var _range = safe_decode_range(ws['!ref']); + range.e.c = Math.max(range.e.c, _range.e.c); + range.e.r = Math.max(range.e.r, _range.e.r); + if(_R == -1) { _R = _range.e.r + 1; range.e.r = _R + js.length - 1 + offset; } + } else { + if(_R == -1) { _R = 0; range.e.r = js.length - 1 + offset; } + } + var hdr = o.header || [], C = 0; + + js.forEach(function (JS, R) { + keys(JS).forEach(function(k) { + if((C=hdr.indexOf(k)) == -1) hdr[C=hdr.length] = k; + var v = JS[k]; + var t = 'z'; + var z = ""; + var ref = encode_cell({c:_C + C,r:_R + R + offset}); + cell = ws_get_cell_stub(ws, ref); + if(v && typeof v === 'object' && !(v instanceof Date)){ + ws[ref] = v; + } else { + if(typeof v == 'number') t = 'n'; + else if(typeof v == 'boolean') t = 'b'; + else if(typeof v == 'string') t = 's'; + else if(v instanceof Date) { + t = 'd'; + if(!o.cellDates) { t = 'n'; v = datenum(v); } + z = (o.dateNF || table_fmt[14]); + } + else if(v === null && o.nullError) { t = 'e'; v = 0; } + if(!cell) ws[ref] = cell = ({t:t, v:v}); + else { + cell.t = t; cell.v = v; + delete cell.w; delete cell.R; + if(z) cell.z = z; + } + if(z) cell.z = z; + } + }); + }); + range.e.c = Math.max(range.e.c, _C + hdr.length - 1); + var __R = encode_row(_R); + if(offset) for(C = 0; C < hdr.length; ++C) ws[encode_col(C + _C) + __R] = {t:'s', v:hdr[C]}; + ws['!ref'] = encode_range(range); + return ws; +} +function json_to_sheet(js, opts) { return sheet_add_json(null, js, opts); } + +/* get cell, creating a stub if necessary */ +function ws_get_cell_stub(ws, R, C) { + /* A1 cell address */ + if(typeof R == "string") { + /* dense */ + if(Array.isArray(ws)) { + var RC = decode_cell(R); + if(!ws[RC.r]) ws[RC.r] = []; + return ws[RC.r][RC.c] || (ws[RC.r][RC.c] = {t:'z'}); + } + return ws[R] || (ws[R] = {t:'z'}); + } + /* cell address object */ + if(typeof R != "number") return ws_get_cell_stub(ws, encode_cell(R)); + /* R and C are 0-based indices */ + return ws_get_cell_stub(ws, encode_cell({r:R,c:C||0})); +} + +/* find sheet index for given name / validate index */ +function wb_sheet_idx(wb, sh) { + if(typeof sh == "number") { + if(sh >= 0 && wb.SheetNames.length > sh) return sh; + throw new Error("Cannot find sheet # " + sh); + } else if(typeof sh == "string") { + var idx = wb.SheetNames.indexOf(sh); + if(idx > -1) return idx; + throw new Error("Cannot find sheet name |" + sh + "|"); + } else throw new Error("Cannot find sheet |" + sh + "|"); +} + +/* simple blank workbook object */ +function book_new() { + return { SheetNames: [], Sheets: {} }; +} + +/* add a worksheet to the end of a given workbook */ +function book_append_sheet(wb, ws, name, roll) { + var i = 1; + if(!name) for(; i <= 0xFFFF; ++i, name = undefined) if(wb.SheetNames.indexOf(name = "Sheet" + i) == -1) break; + if(!name || wb.SheetNames.length >= 0xFFFF) throw new Error("Too many worksheets"); + if(roll && wb.SheetNames.indexOf(name) >= 0) { + var m = name.match(/(^.*?)(\d+)$/); + i = m && +m[2] || 0; + var root = m && m[1] || name; + for(++i; i <= 0xFFFF; ++i) if(wb.SheetNames.indexOf(name = root + i) == -1) break; + } + check_ws_name(name); + if(wb.SheetNames.indexOf(name) >= 0) throw new Error("Worksheet with name |" + name + "| already exists!"); + + wb.SheetNames.push(name); + wb.Sheets[name] = ws; + return name; +} + +/* set sheet visibility (visible/hidden/very hidden) */ +function book_set_sheet_visibility(wb, sh, vis) { + if(!wb.Workbook) wb.Workbook = {}; + if(!wb.Workbook.Sheets) wb.Workbook.Sheets = []; + + var idx = wb_sheet_idx(wb, sh); + // $FlowIgnore + if(!wb.Workbook.Sheets[idx]) wb.Workbook.Sheets[idx] = {}; + + switch(vis) { + case 0: case 1: case 2: break; + default: throw new Error("Bad sheet visibility setting " + vis); + } + // $FlowIgnore + wb.Workbook.Sheets[idx].Hidden = vis; +} + +/* set number format */ +function cell_set_number_format(cell, fmt) { + cell.z = fmt; + return cell; +} + +/* set cell hyperlink */ +function cell_set_hyperlink(cell, target, tooltip) { + if(!target) { + delete cell.l; + } else { + cell.l = ({ Target: target }); + if(tooltip) cell.l.Tooltip = tooltip; + } + return cell; +} +function cell_set_internal_link(cell, range, tooltip) { return cell_set_hyperlink(cell, "#" + range, tooltip); } + +/* add to cell comments */ +function cell_add_comment(cell, text, author) { + if(!cell.c) cell.c = []; + cell.c.push({t:text, a:author||"SheetJS"}); +} + +/* set array formula and flush related cells */ +function sheet_set_array_formula(ws, range, formula, dynamic) { + var rng = typeof range != "string" ? range : safe_decode_range(range); + var rngstr = typeof range == "string" ? range : encode_range(range); + for(var R = rng.s.r; R <= rng.e.r; ++R) for(var C = rng.s.c; C <= rng.e.c; ++C) { + var cell = ws_get_cell_stub(ws, R, C); + cell.t = 'n'; + cell.F = rngstr; + delete cell.v; + if(R == rng.s.r && C == rng.s.c) { + cell.f = formula; + if(dynamic) cell.D = true; + } + } + return ws; +} + +var utils = { + encode_col: encode_col, + encode_row: encode_row, + encode_cell: encode_cell, + encode_range: encode_range, + decode_col: decode_col, + decode_row: decode_row, + split_cell: split_cell, + decode_cell: decode_cell, + decode_range: decode_range, + format_cell: format_cell, + sheet_add_aoa: sheet_add_aoa, + sheet_add_json: sheet_add_json, + sheet_add_dom: sheet_add_dom, + aoa_to_sheet: aoa_to_sheet, + json_to_sheet: json_to_sheet, + table_to_sheet: parse_dom_table, + table_to_book: table_to_book, + sheet_to_csv: sheet_to_csv, + sheet_to_txt: sheet_to_txt, + sheet_to_json: sheet_to_json, + sheet_to_html: sheet_to_html, + sheet_to_formulae: sheet_to_formulae, + sheet_to_row_object_array: sheet_to_json, + sheet_get_cell: ws_get_cell_stub, + book_new: book_new, + book_append_sheet: book_append_sheet, + book_set_sheet_visibility: book_set_sheet_visibility, + cell_set_number_format: cell_set_number_format, + cell_set_hyperlink: cell_set_hyperlink, + cell_set_internal_link: cell_set_internal_link, + cell_add_comment: cell_add_comment, + sheet_set_array_formula: sheet_set_array_formula, + consts: { + SHEET_VISIBLE: 0, + SHEET_HIDDEN: 1, + SHEET_VERY_HIDDEN: 2 + } +}; + +var _Readable; +function set_readable(R) { _Readable = R; } + +function write_csv_stream(sheet, opts) { + var stream = _Readable(); + var o = opts == null ? {} : opts; + if(sheet == null || sheet["!ref"] == null) { stream.push(null); return stream; } + var r = safe_decode_range(sheet["!ref"]); + var FS = o.FS !== undefined ? o.FS : ",", fs = FS.charCodeAt(0); + var RS = o.RS !== undefined ? o.RS : "\n", rs = RS.charCodeAt(0); + var endregex = new RegExp((FS=="|" ? "\\|" : FS)+"+$"); + var row = "", cols = []; + o.dense = Array.isArray(sheet); + var colinfo = o.skipHidden && sheet["!cols"] || []; + var rowinfo = o.skipHidden && sheet["!rows"] || []; + for(var C = r.s.c; C <= r.e.c; ++C) if (!((colinfo[C]||{}).hidden)) cols[C] = encode_col(C); + var R = r.s.r; + var BOM = false, w = 0; + stream._read = function() { + if(!BOM) { BOM = true; return stream.push("\uFEFF"); } + while(R <= r.e.r) { + ++R; + if ((rowinfo[R-1]||{}).hidden) continue; + row = make_csv_row(sheet, r, R-1, cols, fs, rs, FS, o); + if(row != null) { + if(o.strip) row = row.replace(endregex,""); + if(row || (o.blankrows !== false)) return stream.push((w++ ? RS : "") + row); + } + } + return stream.push(null); + }; + return stream; +} + +function write_html_stream(ws, opts) { + var stream = _Readable(); + + var o = opts || {}; + var header = o.header != null ? o.header : HTML_BEGIN; + var footer = o.footer != null ? o.footer : HTML_END; + stream.push(header); + var r = decode_range(ws['!ref']); + o.dense = Array.isArray(ws); + stream.push(make_html_preamble(ws, r, o)); + var R = r.s.r; + var end = false; + stream._read = function() { + if(R > r.e.r) { + if(!end) { end = true; stream.push("" + footer); } + return stream.push(null); + } + while(R <= r.e.r) { + stream.push(make_html_row(ws, r, R, o)); + ++R; + break; + } + }; + return stream; +} + +function write_json_stream(sheet, opts) { + var stream = _Readable({objectMode:true}); + + if(sheet == null || sheet["!ref"] == null) { stream.push(null); return stream; } + var val = {t:'n',v:0}, header = 0, offset = 1, hdr = [], v=0, vv=""; + var r = {s:{r:0,c:0},e:{r:0,c:0}}; + var o = opts || {}; + var range = o.range != null ? o.range : sheet["!ref"]; + if(o.header === 1) header = 1; + else if(o.header === "A") header = 2; + else if(Array.isArray(o.header)) header = 3; + switch(typeof range) { + case 'string': r = safe_decode_range(range); break; + case 'number': r = safe_decode_range(sheet["!ref"]); r.s.r = range; break; + default: r = range; + } + if(header > 0) offset = 0; + var rr = encode_row(r.s.r); + var cols = []; + var counter = 0; + var dense = Array.isArray(sheet); + var R = r.s.r, C = 0; + var header_cnt = {}; + if(dense && !sheet[R]) sheet[R] = []; + var colinfo = o.skipHidden && sheet["!cols"] || []; + var rowinfo = o.skipHidden && sheet["!rows"] || []; + for(C = r.s.c; C <= r.e.c; ++C) { + if(((colinfo[C]||{}).hidden)) continue; + cols[C] = encode_col(C); + val = dense ? sheet[R][C] : sheet[cols[C] + rr]; + switch(header) { + case 1: hdr[C] = C - r.s.c; break; + case 2: hdr[C] = cols[C]; break; + case 3: hdr[C] = o.header[C - r.s.c]; break; + default: + if(val == null) val = {w: "__EMPTY", t: "s"}; + vv = v = format_cell(val, null, o); + counter = header_cnt[v] || 0; + if(!counter) header_cnt[v] = 1; + else { + do { vv = v + "_" + (counter++); } while(header_cnt[vv]); header_cnt[v] = counter; + header_cnt[vv] = 1; + } + hdr[C] = vv; + } + } + R = r.s.r + offset; + stream._read = function() { + while(R <= r.e.r) { + if ((rowinfo[R-1]||{}).hidden) continue; + var row = make_json_row(sheet, r, R, cols, header, hdr, dense, o); + ++R; + if((row.isempty === false) || (header === 1 ? o.blankrows !== false : !!o.blankrows)) { + stream.push(row.row); + return; + } + } + return stream.push(null); + }; + return stream; +} + +var __stream = { + to_json: write_json_stream, + to_html: write_html_stream, + to_csv: write_csv_stream, + set_readable: set_readable +}; +if(typeof parse_xlscfb !== "undefined") XLSX.parse_xlscfb = parse_xlscfb; +XLSX.parse_zip = parse_zip; +XLSX.read = readSync; //xlsread +XLSX.readFile = readFileSync; //readFile +XLSX.readFileSync = readFileSync; +XLSX.write = writeSync; +XLSX.writeFile = writeFileSync; +XLSX.writeFileSync = writeFileSync; +XLSX.writeFileAsync = writeFileAsync; +XLSX.utils = utils; +XLSX.writeXLSX = writeSyncXLSX; +XLSX.writeFileXLSX = writeFileSyncXLSX; +XLSX.SSF = SSF; +if(typeof __stream !== "undefined") XLSX.stream = __stream; +if(typeof CFB !== "undefined") XLSX.CFB = CFB; +if(typeof require !== "undefined") { + var strmod = require('stream'); + if((strmod||{}).Readable) set_readable(strmod.Readable); +} +} +/*global define */ +if(typeof exports !== 'undefined') make_xlsx_lib(exports); +else if(typeof module !== 'undefined' && module.exports) make_xlsx_lib(module.exports); +else if(typeof define === 'function' && define.amd) define('xlsx', function() { if(!XLSX.version) make_xlsx_lib(XLSX); return XLSX; }); +else make_xlsx_lib(XLSX); +/* NOTE: the following extra line is needed for "Lightning Locker Service" */ +if(typeof window !== 'undefined' && !window.XLSX) try { window.XLSX = XLSX; } catch(e) {} diff --git a/node_modules/xlsx/xlsx.mjs b/node_modules/xlsx/xlsx.mjs new file mode 100644 index 000000000..ea75371da --- /dev/null +++ b/node_modules/xlsx/xlsx.mjs @@ -0,0 +1,24597 @@ +/*! xlsx.js (C) 2013-present SheetJS -- http://sheetjs.com */ +/* vim: set ts=2: */ +/*exported XLSX */ +/*global process:false, Buffer:false, ArrayBuffer:false, DataView:false, Deno:false */ +var XLSX = {}; +XLSX.version = '0.18.5'; +var current_codepage = 1200, current_ansi = 1252; + +var VALID_ANSI = [ 874, 932, 936, 949, 950, 1250, 1251, 1252, 1253, 1254, 1255, 1256, 1257, 1258, 10000 ]; +/* ECMA-376 Part I 18.4.1 charset to codepage mapping */ +var CS2CP = ({ + /*::[*/0/*::]*/: 1252, /* ANSI */ + /*::[*/1/*::]*/: 65001, /* DEFAULT */ + /*::[*/2/*::]*/: 65001, /* SYMBOL */ + /*::[*/77/*::]*/: 10000, /* MAC */ + /*::[*/128/*::]*/: 932, /* SHIFTJIS */ + /*::[*/129/*::]*/: 949, /* HANGUL */ + /*::[*/130/*::]*/: 1361, /* JOHAB */ + /*::[*/134/*::]*/: 936, /* GB2312 */ + /*::[*/136/*::]*/: 950, /* CHINESEBIG5 */ + /*::[*/161/*::]*/: 1253, /* GREEK */ + /*::[*/162/*::]*/: 1254, /* TURKISH */ + /*::[*/163/*::]*/: 1258, /* VIETNAMESE */ + /*::[*/177/*::]*/: 1255, /* HEBREW */ + /*::[*/178/*::]*/: 1256, /* ARABIC */ + /*::[*/186/*::]*/: 1257, /* BALTIC */ + /*::[*/204/*::]*/: 1251, /* RUSSIAN */ + /*::[*/222/*::]*/: 874, /* THAI */ + /*::[*/238/*::]*/: 1250, /* EASTEUROPE */ + /*::[*/255/*::]*/: 1252, /* OEM */ + /*::[*/69/*::]*/: 6969 /* MISC */ +}/*:any*/); + +var set_ansi = function(cp/*:number*/) { if(VALID_ANSI.indexOf(cp) == -1) return; current_ansi = CS2CP[0] = cp; }; +function reset_ansi() { set_ansi(1252); } + +var set_cp = function(cp/*:number*/) { current_codepage = cp; set_ansi(cp); }; +function reset_cp() { set_cp(1200); reset_ansi(); } + +function char_codes(data/*:string*/)/*:Array*/ { var o/*:Array*/ = []; for(var i = 0, len = data.length; i < len; ++i) o[i] = data.charCodeAt(i); return o; } + +function utf16leread(data/*:string*/)/*:string*/ { + var o/*:Array*/ = []; + for(var i = 0; i < (data.length>>1); ++i) o[i] = String.fromCharCode(data.charCodeAt(2*i) + (data.charCodeAt(2*i+1)<<8)); + return o.join(""); +} +function utf16beread(data/*:string*/)/*:string*/ { + var o/*:Array*/ = []; + for(var i = 0; i < (data.length>>1); ++i) o[i] = String.fromCharCode(data.charCodeAt(2*i+1) + (data.charCodeAt(2*i)<<8)); + return o.join(""); +} + +var debom = function(data/*:string*/)/*:string*/ { + var c1 = data.charCodeAt(0), c2 = data.charCodeAt(1); + if(c1 == 0xFF && c2 == 0xFE) return utf16leread(data.slice(2)); + if(c1 == 0xFE && c2 == 0xFF) return utf16beread(data.slice(2)); + if(c1 == 0xFEFF) return data.slice(1); + return data; +}; + +var _getchar = function _gc1(x/*:number*/)/*:string*/ { return String.fromCharCode(x); }; +var _getansi = function _ga1(x/*:number*/)/*:string*/ { return String.fromCharCode(x); }; + +var $cptable; +function set_cptable(cptable) { + $cptable = cptable; + set_cp = function(cp/*:number*/) { current_codepage = cp; set_ansi(cp); }; + debom = function(data/*:string*/) { + if(data.charCodeAt(0) === 0xFF && data.charCodeAt(1) === 0xFE) { return $cptable.utils.decode(1200, char_codes(data.slice(2))); } + return data; + }; + _getchar = function _gc2(x/*:number*/)/*:string*/ { + if(current_codepage === 1200) return String.fromCharCode(x); + return $cptable.utils.decode(current_codepage, [x&255,x>>8])[0]; + }; + _getansi = function _ga2(x/*:number*/)/*:string*/ { + return $cptable.utils.decode(current_ansi, [x])[0]; + }; + cpdoit(); +} +export { set_cptable }; +var DENSE = null; +var DIF_XL = true; +var Base64_map = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; +function Base64_encode(input) { + var o = ""; + var c1 = 0, c2 = 0, c3 = 0, e1 = 0, e2 = 0, e3 = 0, e4 = 0; + for (var i = 0; i < input.length; ) { + c1 = input.charCodeAt(i++); + e1 = c1 >> 2; + c2 = input.charCodeAt(i++); + e2 = (c1 & 3) << 4 | c2 >> 4; + c3 = input.charCodeAt(i++); + e3 = (c2 & 15) << 2 | c3 >> 6; + e4 = c3 & 63; + if (isNaN(c2)) { + e3 = e4 = 64; + } else if (isNaN(c3)) { + e4 = 64; + } + o += Base64_map.charAt(e1) + Base64_map.charAt(e2) + Base64_map.charAt(e3) + Base64_map.charAt(e4); + } + return o; +} +function Base64_decode(input) { + var o = ""; + var c1 = 0, c2 = 0, c3 = 0, e1 = 0, e2 = 0, e3 = 0, e4 = 0; + input = input.replace(/[^\w\+\/\=]/g, ""); + for (var i = 0; i < input.length; ) { + e1 = Base64_map.indexOf(input.charAt(i++)); + e2 = Base64_map.indexOf(input.charAt(i++)); + c1 = e1 << 2 | e2 >> 4; + o += String.fromCharCode(c1); + e3 = Base64_map.indexOf(input.charAt(i++)); + c2 = (e2 & 15) << 4 | e3 >> 2; + if (e3 !== 64) { + o += String.fromCharCode(c2); + } + e4 = Base64_map.indexOf(input.charAt(i++)); + c3 = (e3 & 3) << 6 | e4; + if (e4 !== 64) { + o += String.fromCharCode(c3); + } + } + return o; +} +var has_buf = /*#__PURE__*/(function() { return typeof Buffer !== 'undefined' && typeof process !== 'undefined' && typeof process.versions !== 'undefined' && !!process.versions.node; })(); + +var Buffer_from = /*#__PURE__*/(function() { + if(typeof Buffer !== 'undefined') { + var nbfs = !Buffer.from; + if(!nbfs) try { Buffer.from("foo", "utf8"); } catch(e) { nbfs = true; } + return nbfs ? function(buf, enc) { return (enc) ? new Buffer(buf, enc) : new Buffer(buf); } : Buffer.from.bind(Buffer); + } + return function() {}; +})(); + + +function new_raw_buf(len/*:number*/) { + /* jshint -W056 */ + if(has_buf) return Buffer.alloc ? Buffer.alloc(len) : new Buffer(len); + return typeof Uint8Array != "undefined" ? new Uint8Array(len) : new Array(len); + /* jshint +W056 */ +} + +function new_unsafe_buf(len/*:number*/) { + /* jshint -W056 */ + if(has_buf) return Buffer.allocUnsafe ? Buffer.allocUnsafe(len) : new Buffer(len); + return typeof Uint8Array != "undefined" ? new Uint8Array(len) : new Array(len); + /* jshint +W056 */ +} + +var s2a = function s2a(s/*:string*/)/*:any*/ { + if(has_buf) return Buffer_from(s, "binary"); + return s.split("").map(function(x/*:string*/)/*:number*/{ return x.charCodeAt(0) & 0xff; }); +}; + +function s2ab(s/*:string*/)/*:any*/ { + if(typeof ArrayBuffer === 'undefined') return s2a(s); + var buf = new ArrayBuffer(s.length), view = new Uint8Array(buf); + for (var i=0; i!=s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF; + return buf; +} + +function a2s(data/*:any*/)/*:string*/ { + if(Array.isArray(data)) return data.map(function(c) { return String.fromCharCode(c); }).join(""); + var o/*:Array*/ = []; for(var i = 0; i < data.length; ++i) o[i] = String.fromCharCode(data[i]); return o.join(""); +} + +function a2u(data/*:Array*/)/*:Uint8Array*/ { + if(typeof Uint8Array === 'undefined') throw new Error("Unsupported"); + return new Uint8Array(data); +} + +function ab2a(data/*:ArrayBuffer|Uint8Array*/)/*:Array*/ { + if(typeof ArrayBuffer == 'undefined') throw new Error("Unsupported"); + if(data instanceof ArrayBuffer) return ab2a(new Uint8Array(data)); + /*:: if(data instanceof ArrayBuffer) throw new Error("unreachable"); */ + var o = new Array(data.length); + for(var i = 0; i < data.length; ++i) o[i] = data[i]; + return o; +} + +var bconcat = has_buf ? function(bufs) { return Buffer.concat(bufs.map(function(buf) { return Buffer.isBuffer(buf) ? buf : Buffer_from(buf); })); } : function(bufs) { + if(typeof Uint8Array !== "undefined") { + var i = 0, maxlen = 0; + for(i = 0; i < bufs.length; ++i) maxlen += bufs[i].length; + var o = new Uint8Array(maxlen); + var len = 0; + for(i = 0, maxlen = 0; i < bufs.length; maxlen += len, ++i) { + len = bufs[i].length; + if(bufs[i] instanceof Uint8Array) o.set(bufs[i], maxlen); + else if(typeof bufs[i] == "string") { throw "wtf"; } + else o.set(new Uint8Array(bufs[i]), maxlen); + } + return o; + } + return [].concat.apply([], bufs.map(function(buf) { return Array.isArray(buf) ? buf : [].slice.call(buf); })); +}; + +function utf8decode(content/*:string*/) { + var out = [], widx = 0, L = content.length + 250; + var o = new_raw_buf(content.length + 255); + for(var ridx = 0; ridx < content.length; ++ridx) { + var c = content.charCodeAt(ridx); + if(c < 0x80) o[widx++] = c; + else if(c < 0x800) { + o[widx++] = (192|((c>>6)&31)); + o[widx++] = (128|(c&63)); + } else if(c >= 0xD800 && c < 0xE000) { + c = (c&1023)+64; + var d = content.charCodeAt(++ridx)&1023; + o[widx++] = (240|((c>>8)&7)); + o[widx++] = (128|((c>>2)&63)); + o[widx++] = (128|((d>>6)&15)|((c&3)<<4)); + o[widx++] = (128|(d&63)); + } else { + o[widx++] = (224|((c>>12)&15)); + o[widx++] = (128|((c>>6)&63)); + o[widx++] = (128|(c&63)); + } + if(widx > L) { + out.push(o.slice(0, widx)); + widx = 0; + o = new_raw_buf(65535); + L = 65530; + } + } + out.push(o.slice(0, widx)); + return bconcat(out); +} + +var chr0 = /\u0000/g, chr1 = /[\u0001-\u0006]/g; +/*:: +declare type Block = any; +declare type BufArray = { + newblk(sz:number):Block; + next(sz:number):Block; + end():any; + push(buf:Block):void; +}; + +type RecordHopperCB = {(d:any, Rn:string, RT:number):?boolean;}; + +type EvertType = {[string]:string}; +type EvertNumType = {[string]:number}; +type EvertArrType = {[string]:Array}; + +type StringConv = {(string):string}; + +*/ +/* ssf.js (C) 2013-present SheetJS -- http://sheetjs.com */ +/*jshint -W041 */ +function _strrev(x/*:string*/)/*:string*/ { var o = "", i = x.length-1; while(i>=0) o += x.charAt(i--); return o; } +function pad0(v/*:any*/,d/*:number*/)/*:string*/{var t=""+v; return t.length>=d?t:fill('0',d-t.length)+t;} +function pad_(v/*:any*/,d/*:number*/)/*:string*/{var t=""+v;return t.length>=d?t:fill(' ',d-t.length)+t;} +function rpad_(v/*:any*/,d/*:number*/)/*:string*/{var t=""+v; return t.length>=d?t:t+fill(' ',d-t.length);} +function pad0r1(v/*:any*/,d/*:number*/)/*:string*/{var t=""+Math.round(v); return t.length>=d?t:fill('0',d-t.length)+t;} +function pad0r2(v/*:any*/,d/*:number*/)/*:string*/{var t=""+v; return t.length>=d?t:fill('0',d-t.length)+t;} +var p2_32 = /*#__PURE__*/Math.pow(2,32); +function pad0r(v/*:any*/,d/*:number*/)/*:string*/{if(v>p2_32||v<-p2_32) return pad0r1(v,d); var i = Math.round(v); return pad0r2(i,d); } +/* yes, in 2022 this is still faster than string compare */ +function SSF_isgeneral(s/*:string*/, i/*:?number*/)/*:boolean*/ { i = i || 0; return s.length >= 7 + i && (s.charCodeAt(i)|32) === 103 && (s.charCodeAt(i+1)|32) === 101 && (s.charCodeAt(i+2)|32) === 110 && (s.charCodeAt(i+3)|32) === 101 && (s.charCodeAt(i+4)|32) === 114 && (s.charCodeAt(i+5)|32) === 97 && (s.charCodeAt(i+6)|32) === 108; } +var days/*:Array >*/ = [ + ['Sun', 'Sunday'], + ['Mon', 'Monday'], + ['Tue', 'Tuesday'], + ['Wed', 'Wednesday'], + ['Thu', 'Thursday'], + ['Fri', 'Friday'], + ['Sat', 'Saturday'] +]; +var months/*:Array >*/ = [ + ['J', 'Jan', 'January'], + ['F', 'Feb', 'February'], + ['M', 'Mar', 'March'], + ['A', 'Apr', 'April'], + ['M', 'May', 'May'], + ['J', 'Jun', 'June'], + ['J', 'Jul', 'July'], + ['A', 'Aug', 'August'], + ['S', 'Sep', 'September'], + ['O', 'Oct', 'October'], + ['N', 'Nov', 'November'], + ['D', 'Dec', 'December'] +]; +function SSF_init_table(t/*:any*/) { + if(!t) t = {}; + t[0]= 'General'; + t[1]= '0'; + t[2]= '0.00'; + t[3]= '#,##0'; + t[4]= '#,##0.00'; + t[9]= '0%'; + t[10]= '0.00%'; + t[11]= '0.00E+00'; + t[12]= '# ?/?'; + t[13]= '# ??/??'; + t[14]= 'm/d/yy'; + t[15]= 'd-mmm-yy'; + t[16]= 'd-mmm'; + t[17]= 'mmm-yy'; + t[18]= 'h:mm AM/PM'; + t[19]= 'h:mm:ss AM/PM'; + t[20]= 'h:mm'; + t[21]= 'h:mm:ss'; + t[22]= 'm/d/yy h:mm'; + t[37]= '#,##0 ;(#,##0)'; + t[38]= '#,##0 ;[Red](#,##0)'; + t[39]= '#,##0.00;(#,##0.00)'; + t[40]= '#,##0.00;[Red](#,##0.00)'; + t[45]= 'mm:ss'; + t[46]= '[h]:mm:ss'; + t[47]= 'mmss.0'; + t[48]= '##0.0E+0'; + t[49]= '@'; + t[56]= '"上午/下午 "hh"時"mm"分"ss"秒 "'; + return t; +} +/* repeated to satiate webpack */ +var table_fmt = { + 0: 'General', + 1: '0', + 2: '0.00', + 3: '#,##0', + 4: '#,##0.00', + 9: '0%', + 10: '0.00%', + 11: '0.00E+00', + 12: '# ?/?', + 13: '# ??/??', + 14: 'm/d/yy', + 15: 'd-mmm-yy', + 16: 'd-mmm', + 17: 'mmm-yy', + 18: 'h:mm AM/PM', + 19: 'h:mm:ss AM/PM', + 20: 'h:mm', + 21: 'h:mm:ss', + 22: 'm/d/yy h:mm', + 37: '#,##0 ;(#,##0)', + 38: '#,##0 ;[Red](#,##0)', + 39: '#,##0.00;(#,##0.00)', + 40: '#,##0.00;[Red](#,##0.00)', + 45: 'mm:ss', + 46: '[h]:mm:ss', + 47: 'mmss.0', + 48: '##0.0E+0', + 49: '@', + 56: '"上午/下午 "hh"時"mm"分"ss"秒 "' +}; + +/* Defaults determined by systematically testing in Excel 2019 */ + +/* These formats appear to default to other formats in the table */ +var SSF_default_map = { + 5: 37, 6: 38, 7: 39, 8: 40, // 5 -> 37 ... 8 -> 40 + + 23: 0, 24: 0, 25: 0, 26: 0, // 23 -> 0 ... 26 -> 0 + + 27: 14, 28: 14, 29: 14, 30: 14, 31: 14, // 27 -> 14 ... 31 -> 14 + + 50: 14, 51: 14, 52: 14, 53: 14, 54: 14, // 50 -> 14 ... 58 -> 14 + 55: 14, 56: 14, 57: 14, 58: 14, + 59: 1, 60: 2, 61: 3, 62: 4, // 59 -> 1 ... 62 -> 4 + + 67: 9, 68: 10, // 67 -> 9 ... 68 -> 10 + 69: 12, 70: 13, 71: 14, // 69 -> 12 ... 71 -> 14 + 72: 14, 73: 15, 74: 16, 75: 17, // 72 -> 14 ... 75 -> 17 + 76: 20, 77: 21, 78: 22, // 76 -> 20 ... 78 -> 22 + 79: 45, 80: 46, 81: 47, // 79 -> 45 ... 81 -> 47 + 82: 0 // 82 -> 0 ... 65536 -> 0 (omitted) +}; + + +/* These formats technically refer to Accounting formats with no equivalent */ +var SSF_default_str = { + // 5 -- Currency, 0 decimal, black negative + 5: '"$"#,##0_);\\("$"#,##0\\)', + 63: '"$"#,##0_);\\("$"#,##0\\)', + + // 6 -- Currency, 0 decimal, red negative + 6: '"$"#,##0_);[Red]\\("$"#,##0\\)', + 64: '"$"#,##0_);[Red]\\("$"#,##0\\)', + + // 7 -- Currency, 2 decimal, black negative + 7: '"$"#,##0.00_);\\("$"#,##0.00\\)', + 65: '"$"#,##0.00_);\\("$"#,##0.00\\)', + + // 8 -- Currency, 2 decimal, red negative + 8: '"$"#,##0.00_);[Red]\\("$"#,##0.00\\)', + 66: '"$"#,##0.00_);[Red]\\("$"#,##0.00\\)', + + // 41 -- Accounting, 0 decimal, No Symbol + 41: '_(* #,##0_);_(* \\(#,##0\\);_(* "-"_);_(@_)', + + // 42 -- Accounting, 0 decimal, $ Symbol + 42: '_("$"* #,##0_);_("$"* \\(#,##0\\);_("$"* "-"_);_(@_)', + + // 43 -- Accounting, 2 decimal, No Symbol + 43: '_(* #,##0.00_);_(* \\(#,##0.00\\);_(* "-"??_);_(@_)', + + // 44 -- Accounting, 2 decimal, $ Symbol + 44: '_("$"* #,##0.00_);_("$"* \\(#,##0.00\\);_("$"* "-"??_);_(@_)' +}; + +function SSF_frac(x/*:number*/, D/*:number*/, mixed/*:?boolean*/)/*:Array*/ { + var sgn = x < 0 ? -1 : 1; + var B = x * sgn; + var P_2 = 0, P_1 = 1, P = 0; + var Q_2 = 1, Q_1 = 0, Q = 0; + var A = Math.floor(B); + while(Q_1 < D) { + A = Math.floor(B); + P = A * P_1 + P_2; + Q = A * Q_1 + Q_2; + if((B - A) < 0.00000005) break; + B = 1 / (B - A); + P_2 = P_1; P_1 = P; + Q_2 = Q_1; Q_1 = Q; + } + if(Q > D) { if(Q_1 > D) { Q = Q_2; P = P_2; } else { Q = Q_1; P = P_1; } } + if(!mixed) return [0, sgn * P, Q]; + var q = Math.floor(sgn * P/Q); + return [q, sgn*P - q*Q, Q]; +} +function SSF_parse_date_code(v/*:number*/,opts/*:?any*/,b2/*:?boolean*/) { + if(v > 2958465 || v < 0) return null; + var date = (v|0), time = Math.floor(86400 * (v - date)), dow=0; + var dout=[]; + var out={D:date, T:time, u:86400*(v-date)-time,y:0,m:0,d:0,H:0,M:0,S:0,q:0}; + if(Math.abs(out.u) < 1e-6) out.u = 0; + if(opts && opts.date1904) date += 1462; + if(out.u > 0.9999) { + out.u = 0; + if(++time == 86400) { out.T = time = 0; ++date; ++out.D; } + } + if(date === 60) {dout = b2 ? [1317,10,29] : [1900,2,29]; dow=3;} + else if(date === 0) {dout = b2 ? [1317,8,29] : [1900,1,0]; dow=6;} + else { + if(date > 60) --date; + /* 1 = Jan 1 1900 in Gregorian */ + var d = new Date(1900, 0, 1); + d.setDate(d.getDate() + date - 1); + dout = [d.getFullYear(), d.getMonth()+1,d.getDate()]; + dow = d.getDay(); + if(date < 60) dow = (dow + 6) % 7; + if(b2) dow = SSF_fix_hijri(d, dout); + } + out.y = dout[0]; out.m = dout[1]; out.d = dout[2]; + out.S = time % 60; time = Math.floor(time / 60); + out.M = time % 60; time = Math.floor(time / 60); + out.H = time; + out.q = dow; + return out; +} +var SSFbasedate = /*#__PURE__*/new Date(1899, 11, 31, 0, 0, 0); +var SSFdnthresh = /*#__PURE__*/SSFbasedate.getTime(); +var SSFbase1904 = /*#__PURE__*/new Date(1900, 2, 1, 0, 0, 0); +function datenum_local(v/*:Date*/, date1904/*:?boolean*/)/*:number*/ { + var epoch = /*#__PURE__*/v.getTime(); + if(date1904) epoch -= 1461*24*60*60*1000; + else if(v >= SSFbase1904) epoch += 24*60*60*1000; + return (epoch - (SSFdnthresh + (/*#__PURE__*/v.getTimezoneOffset() - /*#__PURE__*/SSFbasedate.getTimezoneOffset()) * 60000)) / (24 * 60 * 60 * 1000); +} +/* ECMA-376 18.8.30 numFmt*/ +/* Note: `toPrecision` uses standard form when prec > E and E >= -6 */ +/* exponent >= -9 and <= 9 */ +function SSF_strip_decimal(o/*:string*/)/*:string*/ { + return (o.indexOf(".") == -1) ? o : o.replace(/(?:\.0*|(\.\d*[1-9])0+)$/, "$1"); +} + +/* General Exponential always shows 2 digits exp and trims the mantissa */ +function SSF_normalize_exp(o/*:string*/)/*:string*/ { + if(o.indexOf("E") == -1) return o; + return o.replace(/(?:\.0*|(\.\d*[1-9])0+)[Ee]/,"$1E").replace(/(E[+-])(\d)$/,"$10$2"); +} + +/* exponent >= -9 and <= 9 */ +function SSF_small_exp(v/*:number*/)/*:string*/ { + var w = (v<0?12:11); + var o = SSF_strip_decimal(v.toFixed(12)); if(o.length <= w) return o; + o = v.toPrecision(10); if(o.length <= w) return o; + return v.toExponential(5); +} + +/* exponent >= 11 or <= -10 likely exponential */ +function SSF_large_exp(v/*:number*/)/*:string*/ { + var o = SSF_strip_decimal(v.toFixed(11)); + return (o.length > (v<0?12:11) || o === "0" || o === "-0") ? v.toPrecision(6) : o; +} + +function SSF_general_num(v/*:number*/)/*:string*/ { + var V = Math.floor(Math.log(Math.abs(v))*Math.LOG10E), o; + + if(V >= -4 && V <= -1) o = v.toPrecision(10+V); + else if(Math.abs(V) <= 9) o = SSF_small_exp(v); + else if(V === 10) o = v.toFixed(10).substr(0,12); + else o = SSF_large_exp(v); + + return SSF_strip_decimal(SSF_normalize_exp(o.toUpperCase())); +} + + +/* + "General" rules: + - text is passed through ("@") + - booleans are rendered as TRUE/FALSE + - "up to 11 characters" displayed for numbers + - Default date format (code 14) used for Dates + + The longest 32-bit integer text is "-2147483648", exactly 11 chars + TODO: technically the display depends on the width of the cell +*/ +function SSF_general(v/*:any*/, opts/*:any*/) { + switch(typeof v) { + case 'string': return v; + case 'boolean': return v ? "TRUE" : "FALSE"; + case 'number': return (v|0) === v ? v.toString(10) : SSF_general_num(v); + case 'undefined': return ""; + case 'object': + if(v == null) return ""; + if(v instanceof Date) return SSF_format(14, datenum_local(v, opts && opts.date1904), opts); + } + throw new Error("unsupported value in General format: " + v); +} + +function SSF_fix_hijri(date/*:Date*/, o/*:[number, number, number]*/) { + /* TODO: properly adjust y/m/d and */ + o[0] -= 581; + var dow = date.getDay(); + if(date < 60) dow = (dow + 6) % 7; + return dow; +} +//var THAI_DIGITS = "\u0E50\u0E51\u0E52\u0E53\u0E54\u0E55\u0E56\u0E57\u0E58\u0E59".split(""); +function SSF_write_date(type/*:number*/, fmt/*:string*/, val, ss0/*:?number*/)/*:string*/ { + var o="", ss=0, tt=0, y = val.y, out, outl = 0; + switch(type) { + case 98: /* 'b' buddhist year */ + y = val.y + 543; + /* falls through */ + case 121: /* 'y' year */ + switch(fmt.length) { + case 1: case 2: out = y % 100; outl = 2; break; + default: out = y % 10000; outl = 4; break; + } break; + case 109: /* 'm' month */ + switch(fmt.length) { + case 1: case 2: out = val.m; outl = fmt.length; break; + case 3: return months[val.m-1][1]; + case 5: return months[val.m-1][0]; + default: return months[val.m-1][2]; + } break; + case 100: /* 'd' day */ + switch(fmt.length) { + case 1: case 2: out = val.d; outl = fmt.length; break; + case 3: return days[val.q][0]; + default: return days[val.q][1]; + } break; + case 104: /* 'h' 12-hour */ + switch(fmt.length) { + case 1: case 2: out = 1+(val.H+11)%12; outl = fmt.length; break; + default: throw 'bad hour format: ' + fmt; + } break; + case 72: /* 'H' 24-hour */ + switch(fmt.length) { + case 1: case 2: out = val.H; outl = fmt.length; break; + default: throw 'bad hour format: ' + fmt; + } break; + case 77: /* 'M' minutes */ + switch(fmt.length) { + case 1: case 2: out = val.M; outl = fmt.length; break; + default: throw 'bad minute format: ' + fmt; + } break; + case 115: /* 's' seconds */ + if(fmt != 's' && fmt != 'ss' && fmt != '.0' && fmt != '.00' && fmt != '.000') throw 'bad second format: ' + fmt; + if(val.u === 0 && (fmt == "s" || fmt == "ss")) return pad0(val.S, fmt.length); + /*::if(!ss0) ss0 = 0; */ + if(ss0 >= 2) tt = ss0 === 3 ? 1000 : 100; + else tt = ss0 === 1 ? 10 : 1; + ss = Math.round((tt)*(val.S + val.u)); + if(ss >= 60*tt) ss = 0; + if(fmt === 's') return ss === 0 ? "0" : ""+ss/tt; + o = pad0(ss,2 + ss0); + if(fmt === 'ss') return o.substr(0,2); + return "." + o.substr(2,fmt.length-1); + case 90: /* 'Z' absolute time */ + switch(fmt) { + case '[h]': case '[hh]': out = val.D*24+val.H; break; + case '[m]': case '[mm]': out = (val.D*24+val.H)*60+val.M; break; + case '[s]': case '[ss]': out = ((val.D*24+val.H)*60+val.M)*60+Math.round(val.S+val.u); break; + default: throw 'bad abstime format: ' + fmt; + } outl = fmt.length === 3 ? 1 : 2; break; + case 101: /* 'e' era */ + out = y; outl = 1; break; + } + var outstr = outl > 0 ? pad0(out, outl) : ""; + return outstr; +} + + +/*jshint -W086 */ +/*jshint +W086 */ +function commaify(s/*:string*/)/*:string*/ { + var w = 3; + if(s.length <= w) return s; + var j = (s.length % w), o = s.substr(0,j); + for(; j!=s.length; j+=w) o+=(o.length > 0 ? "," : "") + s.substr(j,w); + return o; +} +var pct1 = /%/g; +function write_num_pct(type/*:string*/, fmt/*:string*/, val/*:number*/)/*:string*/{ + var sfmt = fmt.replace(pct1,""), mul = fmt.length - sfmt.length; + return write_num(type, sfmt, val * Math.pow(10,2*mul)) + fill("%",mul); +} + +function write_num_cm(type/*:string*/, fmt/*:string*/, val/*:number*/)/*:string*/{ + var idx = fmt.length - 1; + while(fmt.charCodeAt(idx-1) === 44) --idx; + return write_num(type, fmt.substr(0,idx), val / Math.pow(10,3*(fmt.length-idx))); +} + +function write_num_exp(fmt/*:string*/, val/*:number*/)/*:string*/{ + var o/*:string*/; + var idx = fmt.indexOf("E") - fmt.indexOf(".") - 1; + if(fmt.match(/^#+0.0E\+0$/)) { + if(val == 0) return "0.0E+0"; + else if(val < 0) return "-" + write_num_exp(fmt, -val); + var period = fmt.indexOf("."); if(period === -1) period=fmt.indexOf('E'); + var ee = Math.floor(Math.log(val)*Math.LOG10E)%period; + if(ee < 0) ee += period; + o = (val/Math.pow(10,ee)).toPrecision(idx+1+(period+ee)%period); + if(o.indexOf("e") === -1) { + var fakee = Math.floor(Math.log(val)*Math.LOG10E); + if(o.indexOf(".") === -1) o = o.charAt(0) + "." + o.substr(1) + "E+" + (fakee - o.length+ee); + else o += "E+" + (fakee - ee); + while(o.substr(0,2) === "0.") { + o = o.charAt(0) + o.substr(2,period) + "." + o.substr(2+period); + o = o.replace(/^0+([1-9])/,"$1").replace(/^0+\./,"0."); + } + o = o.replace(/\+-/,"-"); + } + o = o.replace(/^([+-]?)(\d*)\.(\d*)[Ee]/,function($$,$1,$2,$3) { return $1 + $2 + $3.substr(0,(period+ee)%period) + "." + $3.substr(ee) + "E"; }); + } else o = val.toExponential(idx); + if(fmt.match(/E\+00$/) && o.match(/e[+-]\d$/)) o = o.substr(0,o.length-1) + "0" + o.charAt(o.length-1); + if(fmt.match(/E\-/) && o.match(/e\+/)) o = o.replace(/e\+/,"e"); + return o.replace("e","E"); +} +var frac1 = /# (\?+)( ?)\/( ?)(\d+)/; +function write_num_f1(r/*:Array*/, aval/*:number*/, sign/*:string*/)/*:string*/ { + var den = parseInt(r[4],10), rr = Math.round(aval * den), base = Math.floor(rr/den); + var myn = (rr - base*den), myd = den; + return sign + (base === 0 ? "" : ""+base) + " " + (myn === 0 ? fill(" ", r[1].length + 1 + r[4].length) : pad_(myn,r[1].length) + r[2] + "/" + r[3] + pad0(myd,r[4].length)); +} +function write_num_f2(r/*:Array*/, aval/*:number*/, sign/*:string*/)/*:string*/ { + return sign + (aval === 0 ? "" : ""+aval) + fill(" ", r[1].length + 2 + r[4].length); +} +var dec1 = /^#*0*\.([0#]+)/; +var closeparen = /\).*[0#]/; +var phone = /\(###\) ###\\?-####/; +function hashq(str/*:string*/)/*:string*/ { + var o = "", cc; + for(var i = 0; i != str.length; ++i) switch((cc=str.charCodeAt(i))) { + case 35: break; + case 63: o+= " "; break; + case 48: o+= "0"; break; + default: o+= String.fromCharCode(cc); + } + return o; +} +function rnd(val/*:number*/, d/*:number*/)/*:string*/ { var dd = Math.pow(10,d); return ""+(Math.round(val * dd)/dd); } +function dec(val/*:number*/, d/*:number*/)/*:number*/ { + var _frac = val - Math.floor(val), dd = Math.pow(10,d); + if (d < ('' + Math.round(_frac * dd)).length) return 0; + return Math.round(_frac * dd); +} +function carry(val/*:number*/, d/*:number*/)/*:number*/ { + if (d < ('' + Math.round((val-Math.floor(val))*Math.pow(10,d))).length) { + return 1; + } + return 0; +} +function flr(val/*:number*/)/*:string*/ { + if(val < 2147483647 && val > -2147483648) return ""+(val >= 0 ? (val|0) : (val-1|0)); + return ""+Math.floor(val); +} +function write_num_flt(type/*:string*/, fmt/*:string*/, val/*:number*/)/*:string*/ { + if(type.charCodeAt(0) === 40 && !fmt.match(closeparen)) { + var ffmt = fmt.replace(/\( */,"").replace(/ \)/,"").replace(/\)/,""); + if(val >= 0) return write_num_flt('n', ffmt, val); + return '(' + write_num_flt('n', ffmt, -val) + ')'; + } + if(fmt.charCodeAt(fmt.length - 1) === 44) return write_num_cm(type, fmt, val); + if(fmt.indexOf('%') !== -1) return write_num_pct(type, fmt, val); + if(fmt.indexOf('E') !== -1) return write_num_exp(fmt, val); + if(fmt.charCodeAt(0) === 36) return "$"+write_num_flt(type,fmt.substr(fmt.charAt(1)==' '?2:1),val); + var o; + var r/*:?Array*/, ri, ff, aval = Math.abs(val), sign = val < 0 ? "-" : ""; + if(fmt.match(/^00+$/)) return sign + pad0r(aval,fmt.length); + if(fmt.match(/^[#?]+$/)) { + o = pad0r(val,0); if(o === "0") o = ""; + return o.length > fmt.length ? o : hashq(fmt.substr(0,fmt.length-o.length)) + o; + } + if((r = fmt.match(frac1))) return write_num_f1(r, aval, sign); + if(fmt.match(/^#+0+$/)) return sign + pad0r(aval,fmt.length - fmt.indexOf("0")); + if((r = fmt.match(dec1))) { + o = rnd(val, r[1].length).replace(/^([^\.]+)$/,"$1."+hashq(r[1])).replace(/\.$/,"."+hashq(r[1])).replace(/\.(\d*)$/,function($$, $1) { return "." + $1 + fill("0", hashq(/*::(*/r/*::||[""])*/[1]).length-$1.length); }); + return fmt.indexOf("0.") !== -1 ? o : o.replace(/^0\./,"."); + } + fmt = fmt.replace(/^#+([0.])/, "$1"); + if((r = fmt.match(/^(0*)\.(#*)$/))) { + return sign + rnd(aval, r[2].length).replace(/\.(\d*[1-9])0*$/,".$1").replace(/^(-?\d*)$/,"$1.").replace(/^0\./,r[1].length?"0.":"."); + } + if((r = fmt.match(/^#{1,3},##0(\.?)$/))) return sign + commaify(pad0r(aval,0)); + if((r = fmt.match(/^#,##0\.([#0]*0)$/))) { + return val < 0 ? "-" + write_num_flt(type, fmt, -val) : commaify(""+(Math.floor(val) + carry(val, r[1].length))) + "." + pad0(dec(val, r[1].length),r[1].length); + } + if((r = fmt.match(/^#,#*,#0/))) return write_num_flt(type,fmt.replace(/^#,#*,/,""),val); + if((r = fmt.match(/^([0#]+)(\\?-([0#]+))+$/))) { + o = _strrev(write_num_flt(type, fmt.replace(/[\\-]/g,""), val)); + ri = 0; + return _strrev(_strrev(fmt.replace(/\\/g,"")).replace(/[0#]/g,function(x){return ri= 0) return write_num_int('n', ffmt, val); + return '(' + write_num_int('n', ffmt, -val) + ')'; + } + if(fmt.charCodeAt(fmt.length - 1) === 44) return write_num_cm2(type, fmt, val); + if(fmt.indexOf('%') !== -1) return write_num_pct2(type, fmt, val); + if(fmt.indexOf('E') !== -1) return write_num_exp2(fmt, val); + if(fmt.charCodeAt(0) === 36) return "$"+write_num_int(type,fmt.substr(fmt.charAt(1)==' '?2:1),val); + var o; + var r/*:?Array*/, ri, ff, aval = Math.abs(val), sign = val < 0 ? "-" : ""; + if(fmt.match(/^00+$/)) return sign + pad0(aval,fmt.length); + if(fmt.match(/^[#?]+$/)) { + o = (""+val); if(val === 0) o = ""; + return o.length > fmt.length ? o : hashq(fmt.substr(0,fmt.length-o.length)) + o; + } + if((r = fmt.match(frac1))) return write_num_f2(r, aval, sign); + if(fmt.match(/^#+0+$/)) return sign + pad0(aval,fmt.length - fmt.indexOf("0")); + if((r = fmt.match(dec1))) { + /*:: if(!Array.isArray(r)) throw new Error("unreachable"); */ + o = (""+val).replace(/^([^\.]+)$/,"$1."+hashq(r[1])).replace(/\.$/,"."+hashq(r[1])); + o = o.replace(/\.(\d*)$/,function($$, $1) { + /*:: if(!Array.isArray(r)) throw new Error("unreachable"); */ + return "." + $1 + fill("0", hashq(r[1]).length-$1.length); }); + return fmt.indexOf("0.") !== -1 ? o : o.replace(/^0\./,"."); + } + fmt = fmt.replace(/^#+([0.])/, "$1"); + if((r = fmt.match(/^(0*)\.(#*)$/))) { + return sign + (""+aval).replace(/\.(\d*[1-9])0*$/,".$1").replace(/^(-?\d*)$/,"$1.").replace(/^0\./,r[1].length?"0.":"."); + } + if((r = fmt.match(/^#{1,3},##0(\.?)$/))) return sign + commaify((""+aval)); + if((r = fmt.match(/^#,##0\.([#0]*0)$/))) { + return val < 0 ? "-" + write_num_int(type, fmt, -val) : commaify((""+val)) + "." + fill('0',r[1].length); + } + if((r = fmt.match(/^#,#*,#0/))) return write_num_int(type,fmt.replace(/^#,#*,/,""),val); + if((r = fmt.match(/^([0#]+)(\\?-([0#]+))+$/))) { + o = _strrev(write_num_int(type, fmt.replace(/[\\-]/g,""), val)); + ri = 0; + return _strrev(_strrev(fmt.replace(/\\/g,"")).replace(/[0#]/g,function(x){return ri*/ { + var out/*:Array*/ = []; + var in_str = false/*, cc*/; + for(var i = 0, j = 0; i < fmt.length; ++i) switch((/*cc=*/fmt.charCodeAt(i))) { + case 34: /* '"' */ + in_str = !in_str; break; + case 95: case 42: case 92: /* '_' '*' '\\' */ + ++i; break; + case 59: /* ';' */ + out[out.length] = fmt.substr(j,i-j); + j = i+1; + } + out[out.length] = fmt.substr(j); + if(in_str === true) throw new Error("Format |" + fmt + "| unterminated string "); + return out; +} + +var SSF_abstime = /\[[HhMmSs\u0E0A\u0E19\u0E17]*\]/; +function fmt_is_date(fmt/*:string*/)/*:boolean*/ { + var i = 0, /*cc = 0,*/ c = "", o = ""; + while(i < fmt.length) { + switch((c = fmt.charAt(i))) { + case 'G': if(SSF_isgeneral(fmt, i)) i+= 6; i++; break; + case '"': for(;(/*cc=*/fmt.charCodeAt(++i)) !== 34 && i < fmt.length;){/*empty*/} ++i; break; + case '\\': i+=2; break; + case '_': i+=2; break; + case '@': ++i; break; + case 'B': case 'b': + if(fmt.charAt(i+1) === "1" || fmt.charAt(i+1) === "2") return true; + /* falls through */ + case 'M': case 'D': case 'Y': case 'H': case 'S': case 'E': + /* falls through */ + case 'm': case 'd': case 'y': case 'h': case 's': case 'e': case 'g': return true; + case 'A': case 'a': case '上': + if(fmt.substr(i, 3).toUpperCase() === "A/P") return true; + if(fmt.substr(i, 5).toUpperCase() === "AM/PM") return true; + if(fmt.substr(i, 5).toUpperCase() === "上午/下午") return true; + ++i; break; + case '[': + o = c; + while(fmt.charAt(i++) !== ']' && i < fmt.length) o += fmt.charAt(i); + if(o.match(SSF_abstime)) return true; + break; + case '.': + /* falls through */ + case '0': case '#': + while(i < fmt.length && ("0#?.,E+-%".indexOf(c=fmt.charAt(++i)) > -1 || (c=='\\' && fmt.charAt(i+1) == "-" && "0#".indexOf(fmt.charAt(i+2))>-1))){/* empty */} + break; + case '?': while(fmt.charAt(++i) === c){/* empty */} break; + case '*': ++i; if(fmt.charAt(i) == ' ' || fmt.charAt(i) == '*') ++i; break; + case '(': case ')': ++i; break; + case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': + while(i < fmt.length && "0123456789".indexOf(fmt.charAt(++i)) > -1){/* empty */} break; + case ' ': ++i; break; + default: ++i; break; + } + } + return false; +} + +function eval_fmt(fmt/*:string*/, v/*:any*/, opts/*:any*/, flen/*:number*/) { + var out = [], o = "", i = 0, c = "", lst='t', dt, j, cc; + var hr='H'; + /* Tokenize */ + while(i < fmt.length) { + switch((c = fmt.charAt(i))) { + case 'G': /* General */ + if(!SSF_isgeneral(fmt, i)) throw new Error('unrecognized character ' + c + ' in ' +fmt); + out[out.length] = {t:'G', v:'General'}; i+=7; break; + case '"': /* Literal text */ + for(o="";(cc=fmt.charCodeAt(++i)) !== 34 && i < fmt.length;) o += String.fromCharCode(cc); + out[out.length] = {t:'t', v:o}; ++i; break; + case '\\': var w = fmt.charAt(++i), t = (w === "(" || w === ")") ? w : 't'; + out[out.length] = {t:t, v:w}; ++i; break; + case '_': out[out.length] = {t:'t', v:" "}; i+=2; break; + case '@': /* Text Placeholder */ + out[out.length] = {t:'T', v:v}; ++i; break; + case 'B': case 'b': + if(fmt.charAt(i+1) === "1" || fmt.charAt(i+1) === "2") { + if(dt==null) { dt=SSF_parse_date_code(v, opts, fmt.charAt(i+1) === "2"); if(dt==null) return ""; } + out[out.length] = {t:'X', v:fmt.substr(i,2)}; lst = c; i+=2; break; + } + /* falls through */ + case 'M': case 'D': case 'Y': case 'H': case 'S': case 'E': + c = c.toLowerCase(); + /* falls through */ + case 'm': case 'd': case 'y': case 'h': case 's': case 'e': case 'g': + if(v < 0) return ""; + if(dt==null) { dt=SSF_parse_date_code(v, opts); if(dt==null) return ""; } + o = c; while(++i < fmt.length && fmt.charAt(i).toLowerCase() === c) o+=c; + if(c === 'm' && lst.toLowerCase() === 'h') c = 'M'; + if(c === 'h') c = hr; + out[out.length] = {t:c, v:o}; lst = c; break; + case 'A': case 'a': case '上': + var q={t:c, v:c}; + if(dt==null) dt=SSF_parse_date_code(v, opts); + if(fmt.substr(i, 3).toUpperCase() === "A/P") { if(dt!=null) q.v = dt.H >= 12 ? "P" : "A"; q.t = 'T'; hr='h';i+=3;} + else if(fmt.substr(i,5).toUpperCase() === "AM/PM") { if(dt!=null) q.v = dt.H >= 12 ? "PM" : "AM"; q.t = 'T'; i+=5; hr='h'; } + else if(fmt.substr(i,5).toUpperCase() === "上午/下午") { if(dt!=null) q.v = dt.H >= 12 ? "下午" : "上午"; q.t = 'T'; i+=5; hr='h'; } + else { q.t = "t"; ++i; } + if(dt==null && q.t === 'T') return ""; + out[out.length] = q; lst = c; break; + case '[': + o = c; + while(fmt.charAt(i++) !== ']' && i < fmt.length) o += fmt.charAt(i); + if(o.slice(-1) !== ']') throw 'unterminated "[" block: |' + o + '|'; + if(o.match(SSF_abstime)) { + if(dt==null) { dt=SSF_parse_date_code(v, opts); if(dt==null) return ""; } + out[out.length] = {t:'Z', v:o.toLowerCase()}; + lst = o.charAt(1); + } else if(o.indexOf("$") > -1) { + o = (o.match(/\$([^-\[\]]*)/)||[])[1]||"$"; + if(!fmt_is_date(fmt)) out[out.length] = {t:'t',v:o}; + } + break; + /* Numbers */ + case '.': + if(dt != null) { + o = c; while(++i < fmt.length && (c=fmt.charAt(i)) === "0") o += c; + out[out.length] = {t:'s', v:o}; break; + } + /* falls through */ + case '0': case '#': + o = c; while(++i < fmt.length && "0#?.,E+-%".indexOf(c=fmt.charAt(i)) > -1) o += c; + out[out.length] = {t:'n', v:o}; break; + case '?': + o = c; while(fmt.charAt(++i) === c) o+=c; + out[out.length] = {t:c, v:o}; lst = c; break; + case '*': ++i; if(fmt.charAt(i) == ' ' || fmt.charAt(i) == '*') ++i; break; // ** + case '(': case ')': out[out.length] = {t:(flen===1?'t':c), v:c}; ++i; break; + case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': + o = c; while(i < fmt.length && "0123456789".indexOf(fmt.charAt(++i)) > -1) o+=fmt.charAt(i); + out[out.length] = {t:'D', v:o}; break; + case ' ': out[out.length] = {t:c, v:c}; ++i; break; + case '$': out[out.length] = {t:'t', v:'$'}; ++i; break; + default: + if(",$-+/():!^&'~{}<>=€acfijklopqrtuvwxzP".indexOf(c) === -1) throw new Error('unrecognized character ' + c + ' in ' + fmt); + out[out.length] = {t:'t', v:c}; ++i; break; + } + } + + /* Scan for date/time parts */ + var bt = 0, ss0 = 0, ssm; + for(i=out.length-1, lst='t'; i >= 0; --i) { + switch(out[i].t) { + case 'h': case 'H': out[i].t = hr; lst='h'; if(bt < 1) bt = 1; break; + case 's': + if((ssm=out[i].v.match(/\.0+$/))) ss0=Math.max(ss0,ssm[0].length-1); + if(bt < 3) bt = 3; + /* falls through */ + case 'd': case 'y': case 'M': case 'e': lst=out[i].t; break; + case 'm': if(lst === 's') { out[i].t = 'M'; if(bt < 2) bt = 2; } break; + case 'X': /*if(out[i].v === "B2");*/ + break; + case 'Z': + if(bt < 1 && out[i].v.match(/[Hh]/)) bt = 1; + if(bt < 2 && out[i].v.match(/[Mm]/)) bt = 2; + if(bt < 3 && out[i].v.match(/[Ss]/)) bt = 3; + } + } + /* time rounding depends on presence of minute / second / usec fields */ + switch(bt) { + case 0: break; + case 1: + /*::if(!dt) break;*/ + if(dt.u >= 0.5) { dt.u = 0; ++dt.S; } + if(dt.S >= 60) { dt.S = 0; ++dt.M; } + if(dt.M >= 60) { dt.M = 0; ++dt.H; } + break; + case 2: + /*::if(!dt) break;*/ + if(dt.u >= 0.5) { dt.u = 0; ++dt.S; } + if(dt.S >= 60) { dt.S = 0; ++dt.M; } + break; + } + + /* replace fields */ + var nstr = "", jj; + for(i=0; i < out.length; ++i) { + switch(out[i].t) { + case 't': case 'T': case ' ': case 'D': break; + case 'X': out[i].v = ""; out[i].t = ";"; break; + case 'd': case 'm': case 'y': case 'h': case 'H': case 'M': case 's': case 'e': case 'b': case 'Z': + /*::if(!dt) throw "unreachable"; */ + out[i].v = SSF_write_date(out[i].t.charCodeAt(0), out[i].v, dt, ss0); + out[i].t = 't'; break; + case 'n': case '?': + jj = i+1; + while(out[jj] != null && ( + (c=out[jj].t) === "?" || c === "D" || + ((c === " " || c === "t") && out[jj+1] != null && (out[jj+1].t === '?' || out[jj+1].t === "t" && out[jj+1].v === '/')) || + (out[i].t === '(' && (c === ' ' || c === 'n' || c === ')')) || + (c === 't' && (out[jj].v === '/' || out[jj].v === ' ' && out[jj+1] != null && out[jj+1].t == '?')) + )) { + out[i].v += out[jj].v; + out[jj] = {v:"", t:";"}; ++jj; + } + nstr += out[i].v; + i = jj-1; break; + case 'G': out[i].t = 't'; out[i].v = SSF_general(v,opts); break; + } + } + var vv = "", myv, ostr; + if(nstr.length > 0) { + if(nstr.charCodeAt(0) == 40) /* '(' */ { + myv = (v<0&&nstr.charCodeAt(0) === 45 ? -v : v); + ostr = write_num('n', nstr, myv); + } else { + myv = (v<0 && flen > 1 ? -v : v); + ostr = write_num('n', nstr, myv); + if(myv < 0 && out[0] && out[0].t == 't') { + ostr = ostr.substr(1); + out[0].v = "-" + out[0].v; + } + } + jj=ostr.length-1; + var decpt = out.length; + for(i=0; i < out.length; ++i) if(out[i] != null && out[i].t != 't' && out[i].v.indexOf(".") > -1) { decpt = i; break; } + var lasti=out.length; + if(decpt === out.length && ostr.indexOf("E") === -1) { + for(i=out.length-1; i>= 0;--i) { + if(out[i] == null || 'n?'.indexOf(out[i].t) === -1) continue; + if(jj>=out[i].v.length-1) { jj -= out[i].v.length; out[i].v = ostr.substr(jj+1, out[i].v.length); } + else if(jj < 0) out[i].v = ""; + else { out[i].v = ostr.substr(0, jj+1); jj = -1; } + out[i].t = 't'; + lasti = i; + } + if(jj>=0 && lasti= 0; --i) { + if(out[i] == null || 'n?'.indexOf(out[i].t) === -1) continue; + j=out[i].v.indexOf(".")>-1&&i===decpt?out[i].v.indexOf(".")-1:out[i].v.length-1; + vv = out[i].v.substr(j+1); + for(; j>=0; --j) { + if(jj>=0 && (out[i].v.charAt(j) === "0" || out[i].v.charAt(j) === "#")) vv = ostr.charAt(jj--) + vv; + } + out[i].v = vv; + out[i].t = 't'; + lasti = i; + } + if(jj>=0 && lasti-1&&i===decpt?out[i].v.indexOf(".")+1:0; + vv = out[i].v.substr(0,j); + for(; j-1) { + myv = (flen >1 && v < 0 && i>0 && out[i-1].v === "-" ? -v:v); + out[i].v = write_num(out[i].t, out[i].v, myv); + out[i].t = 't'; + } + var retval = ""; + for(i=0; i !== out.length; ++i) if(out[i] != null) retval += out[i].v; + return retval; +} + +var cfregex2 = /\[(=|>[=]?|<[>=]?)(-?\d+(?:\.\d*)?)\]/; +function chkcond(v, rr) { + if(rr == null) return false; + var thresh = parseFloat(rr[2]); + switch(rr[1]) { + case "=": if(v == thresh) return true; break; + case ">": if(v > thresh) return true; break; + case "<": if(v < thresh) return true; break; + case "<>": if(v != thresh) return true; break; + case ">=": if(v >= thresh) return true; break; + case "<=": if(v <= thresh) return true; break; + } + return false; +} +function choose_fmt(f/*:string*/, v/*:any*/) { + var fmt = SSF_split_fmt(f); + var l = fmt.length, lat = fmt[l-1].indexOf("@"); + if(l<4 && lat>-1) --l; + if(fmt.length > 4) throw new Error("cannot find right format for |" + fmt.join("|") + "|"); + if(typeof v !== "number") return [4, fmt.length === 4 || lat>-1?fmt[fmt.length-1]:"@"]; + switch(fmt.length) { + case 1: fmt = lat>-1 ? ["General", "General", "General", fmt[0]] : [fmt[0], fmt[0], fmt[0], "@"]; break; + case 2: fmt = lat>-1 ? [fmt[0], fmt[0], fmt[0], fmt[1]] : [fmt[0], fmt[1], fmt[0], "@"]; break; + case 3: fmt = lat>-1 ? [fmt[0], fmt[1], fmt[0], fmt[2]] : [fmt[0], fmt[1], fmt[2], "@"]; break; + case 4: break; + } + var ff = v > 0 ? fmt[0] : v < 0 ? fmt[1] : fmt[2]; + if(fmt[0].indexOf("[") === -1 && fmt[1].indexOf("[") === -1) return [l, ff]; + if(fmt[0].match(/\[[=<>]/) != null || fmt[1].match(/\[[=<>]/) != null) { + var m1 = fmt[0].match(cfregex2); + var m2 = fmt[1].match(cfregex2); + return chkcond(v, m1) ? [l, fmt[0]] : chkcond(v, m2) ? [l, fmt[1]] : [l, fmt[m1 != null && m2 != null ? 2 : 1]]; + } + return [l, ff]; +} +function SSF_format(fmt/*:string|number*/,v/*:any*/,o/*:?any*/) { + if(o == null) o = {}; + var sfmt = ""; + switch(typeof fmt) { + case "string": + if(fmt == "m/d/yy" && o.dateNF) sfmt = o.dateNF; + else sfmt = fmt; + break; + case "number": + if(fmt == 14 && o.dateNF) sfmt = o.dateNF; + else sfmt = (o.table != null ? (o.table/*:any*/) : table_fmt)[fmt]; + if(sfmt == null) sfmt = (o.table && o.table[SSF_default_map[fmt]]) || table_fmt[SSF_default_map[fmt]]; + if(sfmt == null) sfmt = SSF_default_str[fmt] || "General"; + break; + } + if(SSF_isgeneral(sfmt,0)) return SSF_general(v, o); + if(v instanceof Date) v = datenum_local(v, o.date1904); + var f = choose_fmt(sfmt, v); + if(SSF_isgeneral(f[1])) return SSF_general(v, o); + if(v === true) v = "TRUE"; else if(v === false) v = "FALSE"; + else if(v === "" || v == null) return ""; + return eval_fmt(f[1], v, o, f[0]); +} +function SSF_load(fmt/*:string*/, idx/*:?number*/)/*:number*/ { + if(typeof idx != 'number') { + idx = +idx || -1; +/*::if(typeof idx != 'number') return 0x188; */ + for(var i = 0; i < 0x0188; ++i) { +/*::if(typeof idx != 'number') return 0x188; */ + if(table_fmt[i] == undefined) { if(idx < 0) idx = i; continue; } + if(table_fmt[i] == fmt) { idx = i; break; } + } +/*::if(typeof idx != 'number') return 0x188; */ + if(idx < 0) idx = 0x187; + } +/*::if(typeof idx != 'number') return 0x188; */ + table_fmt[idx] = fmt; + return idx; +} +function SSF_load_table(tbl/*:SSFTable*/)/*:void*/ { + for(var i=0; i!=0x0188; ++i) + if(tbl[i] !== undefined) SSF_load(tbl[i], i); +} + +function make_ssf() { + table_fmt = SSF_init_table(); +} + +var SSF = { + format: SSF_format, + load: SSF_load, + _table: table_fmt, + load_table: SSF_load_table, + parse_date_code: SSF_parse_date_code, + is_date: fmt_is_date, + get_table: function get_table() { return SSF._table = table_fmt; } +}; + +var SSFImplicit/*{[number]:string}*/ = ({ + "5": '"$"#,##0_);\\("$"#,##0\\)', + "6": '"$"#,##0_);[Red]\\("$"#,##0\\)', + "7": '"$"#,##0.00_);\\("$"#,##0.00\\)', + "8": '"$"#,##0.00_);[Red]\\("$"#,##0.00\\)', + "23": 'General', "24": 'General', "25": 'General', "26": 'General', + "27": 'm/d/yy', "28": 'm/d/yy', "29": 'm/d/yy', "30": 'm/d/yy', "31": 'm/d/yy', + "32": 'h:mm:ss', "33": 'h:mm:ss', "34": 'h:mm:ss', "35": 'h:mm:ss', + "36": 'm/d/yy', + "41": '_(* #,##0_);_(* \(#,##0\);_(* "-"_);_(@_)', + "42": '_("$"* #,##0_);_("$"* \(#,##0\);_("$"* "-"_);_(@_)', + "43": '_(* #,##0.00_);_(* \(#,##0.00\);_(* "-"??_);_(@_)', + "44": '_("$"* #,##0.00_);_("$"* \(#,##0.00\);_("$"* "-"??_);_(@_)', + "50": 'm/d/yy', "51": 'm/d/yy', "52": 'm/d/yy', "53": 'm/d/yy', "54": 'm/d/yy', + "55": 'm/d/yy', "56": 'm/d/yy', "57": 'm/d/yy', "58": 'm/d/yy', + "59": '0', + "60": '0.00', + "61": '#,##0', + "62": '#,##0.00', + "63": '"$"#,##0_);\\("$"#,##0\\)', + "64": '"$"#,##0_);[Red]\\("$"#,##0\\)', + "65": '"$"#,##0.00_);\\("$"#,##0.00\\)', + "66": '"$"#,##0.00_);[Red]\\("$"#,##0.00\\)', + "67": '0%', + "68": '0.00%', + "69": '# ?/?', + "70": '# ??/??', + "71": 'm/d/yy', + "72": 'm/d/yy', + "73": 'd-mmm-yy', + "74": 'd-mmm', + "75": 'mmm-yy', + "76": 'h:mm', + "77": 'h:mm:ss', + "78": 'm/d/yy h:mm', + "79": 'mm:ss', + "80": '[h]:mm:ss', + "81": 'mmss.0' +}/*:any*/); + +/* dateNF parse TODO: move to SSF */ +var dateNFregex = /[dD]+|[mM]+|[yYeE]+|[Hh]+|[Ss]+/g; +function dateNF_regex(dateNF/*:string|number*/)/*:RegExp*/ { + var fmt = typeof dateNF == "number" ? table_fmt[dateNF] : dateNF; + fmt = fmt.replace(dateNFregex, "(\\d+)"); + return new RegExp("^" + fmt + "$"); +} +function dateNF_fix(str/*:string*/, dateNF/*:string*/, match/*:Array*/)/*:string*/ { + var Y = -1, m = -1, d = -1, H = -1, M = -1, S = -1; + (dateNF.match(dateNFregex)||[]).forEach(function(n, i) { + var v = parseInt(match[i+1], 10); + switch(n.toLowerCase().charAt(0)) { + case 'y': Y = v; break; case 'd': d = v; break; + case 'h': H = v; break; case 's': S = v; break; + case 'm': if(H >= 0) M = v; else m = v; break; + } + }); + if(S >= 0 && M == -1 && m >= 0) { M = m; m = -1; } + var datestr = (("" + (Y>=0?Y: new Date().getFullYear())).slice(-4) + "-" + ("00" + (m>=1?m:1)).slice(-2) + "-" + ("00" + (d>=1?d:1)).slice(-2)); + if(datestr.length == 7) datestr = "0" + datestr; + if(datestr.length == 8) datestr = "20" + datestr; + var timestr = (("00" + (H>=0?H:0)).slice(-2) + ":" + ("00" + (M>=0?M:0)).slice(-2) + ":" + ("00" + (S>=0?S:0)).slice(-2)); + if(H == -1 && M == -1 && S == -1) return datestr; + if(Y == -1 && m == -1 && d == -1) return timestr; + return datestr + "T" + timestr; +} + +/*:: +declare var ReadShift:any; +declare var CheckField:any; +declare var prep_blob:any; +declare var __readUInt32LE:any; +declare var __readInt32LE:any; +declare var __toBuffer:any; +declare var __utf16le:any; +declare var bconcat:any; +declare var s2a:any; +declare var chr0:any; +declare var chr1:any; +declare var has_buf:boolean; +declare var new_buf:any; +declare var new_raw_buf:any; +declare var new_unsafe_buf:any; +declare var Buffer_from:any; +*/ +/* cfb.js (C) 2013-present SheetJS -- http://sheetjs.com */ +/* vim: set ts=2: */ +/*jshint eqnull:true */ +/*exported CFB */ +/*global Uint8Array:false, Uint16Array:false */ + +/*:: +type SectorEntry = { + name?:string; + nodes?:Array; + data:RawBytes; +}; +type SectorList = { + [k:string|number]:SectorEntry; + name:?string; + fat_addrs:Array; + ssz:number; +} +type CFBFiles = {[n:string]:CFBEntry}; +*/ +/* crc32.js (C) 2014-present SheetJS -- http://sheetjs.com */ +/* vim: set ts=2: */ +/*exported CRC32 */ +var CRC32 = /*#__PURE__*/(function() { +var CRC32 = {}; +CRC32.version = '1.2.0'; +/* see perf/crc32table.js */ +/*global Int32Array */ +function signed_crc_table()/*:any*/ { + var c = 0, table/*:Array*/ = new Array(256); + + for(var n =0; n != 256; ++n){ + c = n; + c = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1)); + c = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1)); + c = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1)); + c = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1)); + c = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1)); + c = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1)); + c = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1)); + c = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1)); + table[n] = c; + } + + return typeof Int32Array !== 'undefined' ? new Int32Array(table) : table; +} + +var T0 = signed_crc_table(); +function slice_by_16_tables(T) { + var c = 0, v = 0, n = 0, table/*:Array*/ = typeof Int32Array !== 'undefined' ? new Int32Array(4096) : new Array(4096) ; + + for(n = 0; n != 256; ++n) table[n] = T[n]; + for(n = 0; n != 256; ++n) { + v = T[n]; + for(c = 256 + n; c < 4096; c += 256) v = table[c] = (v >>> 8) ^ T[v & 0xFF]; + } + var out = []; + for(n = 1; n != 16; ++n) out[n - 1] = typeof Int32Array !== 'undefined' ? table.subarray(n * 256, n * 256 + 256) : table.slice(n * 256, n * 256 + 256); + return out; +} +var TT = slice_by_16_tables(T0); +var T1 = TT[0], T2 = TT[1], T3 = TT[2], T4 = TT[3], T5 = TT[4]; +var T6 = TT[5], T7 = TT[6], T8 = TT[7], T9 = TT[8], Ta = TT[9]; +var Tb = TT[10], Tc = TT[11], Td = TT[12], Te = TT[13], Tf = TT[14]; +function crc32_bstr(bstr/*:string*/, seed/*:number*/)/*:number*/ { + var C = seed/*:: ? 0 : 0 */ ^ -1; + for(var i = 0, L = bstr.length; i < L;) C = (C>>>8) ^ T0[(C^bstr.charCodeAt(i++))&0xFF]; + return ~C; +} + +function crc32_buf(B/*:Uint8Array|Array*/, seed/*:number*/)/*:number*/ { + var C = seed/*:: ? 0 : 0 */ ^ -1, L = B.length - 15, i = 0; + for(; i < L;) C = + Tf[B[i++] ^ (C & 255)] ^ + Te[B[i++] ^ ((C >> 8) & 255)] ^ + Td[B[i++] ^ ((C >> 16) & 255)] ^ + Tc[B[i++] ^ (C >>> 24)] ^ + Tb[B[i++]] ^ Ta[B[i++]] ^ T9[B[i++]] ^ T8[B[i++]] ^ + T7[B[i++]] ^ T6[B[i++]] ^ T5[B[i++]] ^ T4[B[i++]] ^ + T3[B[i++]] ^ T2[B[i++]] ^ T1[B[i++]] ^ T0[B[i++]]; + L += 15; + while(i < L) C = (C>>>8) ^ T0[(C^B[i++])&0xFF]; + return ~C; +} + +function crc32_str(str/*:string*/, seed/*:number*/)/*:number*/ { + var C = seed ^ -1; + for(var i = 0, L = str.length, c = 0, d = 0; i < L;) { + c = str.charCodeAt(i++); + if(c < 0x80) { + C = (C>>>8) ^ T0[(C^c)&0xFF]; + } else if(c < 0x800) { + C = (C>>>8) ^ T0[(C ^ (192|((c>>6)&31)))&0xFF]; + C = (C>>>8) ^ T0[(C ^ (128|(c&63)))&0xFF]; + } else if(c >= 0xD800 && c < 0xE000) { + c = (c&1023)+64; d = str.charCodeAt(i++)&1023; + C = (C>>>8) ^ T0[(C ^ (240|((c>>8)&7)))&0xFF]; + C = (C>>>8) ^ T0[(C ^ (128|((c>>2)&63)))&0xFF]; + C = (C>>>8) ^ T0[(C ^ (128|((d>>6)&15)|((c&3)<<4)))&0xFF]; + C = (C>>>8) ^ T0[(C ^ (128|(d&63)))&0xFF]; + } else { + C = (C>>>8) ^ T0[(C ^ (224|((c>>12)&15)))&0xFF]; + C = (C>>>8) ^ T0[(C ^ (128|((c>>6)&63)))&0xFF]; + C = (C>>>8) ^ T0[(C ^ (128|(c&63)))&0xFF]; + } + } + return ~C; +} +CRC32.table = T0; +CRC32.bstr = crc32_bstr; +CRC32.buf = crc32_buf; +CRC32.str = crc32_str; +return CRC32; +})(); +/* [MS-CFB] v20171201 */ +var CFB = /*#__PURE__*/(function _CFB(){ +var exports = {}; +exports.version = '1.2.1'; +/* [MS-CFB] 2.6.4 */ +function namecmp(l/*:string*/, r/*:string*/)/*:number*/ { + var L = l.split("/"), R = r.split("/"); + for(var i = 0, c = 0, Z = Math.min(L.length, R.length); i < Z; ++i) { + if((c = L[i].length - R[i].length)) return c; + if(L[i] != R[i]) return L[i] < R[i] ? -1 : 1; + } + return L.length - R.length; +} +function dirname(p/*:string*/)/*:string*/ { + if(p.charAt(p.length - 1) == "/") return (p.slice(0,-1).indexOf("/") === -1) ? p : dirname(p.slice(0, -1)); + var c = p.lastIndexOf("/"); + return (c === -1) ? p : p.slice(0, c+1); +} + +function filename(p/*:string*/)/*:string*/ { + if(p.charAt(p.length - 1) == "/") return filename(p.slice(0, -1)); + var c = p.lastIndexOf("/"); + return (c === -1) ? p : p.slice(c+1); +} +/* -------------------------------------------------------------------------- */ +/* DOS Date format: + high|YYYYYYYm.mmmddddd.HHHHHMMM.MMMSSSSS|low + add 1980 to stored year + stored second should be doubled +*/ + +/* write JS date to buf as a DOS date */ +function write_dos_date(buf/*:CFBlob*/, date/*:Date|string*/) { + if(typeof date === "string") date = new Date(date); + var hms/*:number*/ = date.getHours(); + hms = hms << 6 | date.getMinutes(); + hms = hms << 5 | (date.getSeconds()>>>1); + buf.write_shift(2, hms); + var ymd/*:number*/ = (date.getFullYear() - 1980); + ymd = ymd << 4 | (date.getMonth()+1); + ymd = ymd << 5 | date.getDate(); + buf.write_shift(2, ymd); +} + +/* read four bytes from buf and interpret as a DOS date */ +function parse_dos_date(buf/*:CFBlob*/)/*:Date*/ { + var hms = buf.read_shift(2) & 0xFFFF; + var ymd = buf.read_shift(2) & 0xFFFF; + var val = new Date(); + var d = ymd & 0x1F; ymd >>>= 5; + var m = ymd & 0x0F; ymd >>>= 4; + val.setMilliseconds(0); + val.setFullYear(ymd + 1980); + val.setMonth(m-1); + val.setDate(d); + var S = hms & 0x1F; hms >>>= 5; + var M = hms & 0x3F; hms >>>= 6; + val.setHours(hms); + val.setMinutes(M); + val.setSeconds(S<<1); + return val; +} +function parse_extra_field(blob/*:CFBlob*/)/*:any*/ { + prep_blob(blob, 0); + var o = /*::(*/{}/*:: :any)*/; + var flags = 0; + while(blob.l <= blob.length - 4) { + var type = blob.read_shift(2); + var sz = blob.read_shift(2), tgt = blob.l + sz; + var p = {}; + switch(type) { + /* UNIX-style Timestamps */ + case 0x5455: { + flags = blob.read_shift(1); + if(flags & 1) p.mtime = blob.read_shift(4); + /* for some reason, CD flag corresponds to LFH */ + if(sz > 5) { + if(flags & 2) p.atime = blob.read_shift(4); + if(flags & 4) p.ctime = blob.read_shift(4); + } + if(p.mtime) p.mt = new Date(p.mtime*1000); + } + break; + } + blob.l = tgt; + o[type] = p; + } + return o; +} +var fs/*:: = require('fs'); */; +function get_fs() { return fs || (fs = {}); } +function parse(file/*:RawBytes*/, options/*:CFBReadOpts*/)/*:CFBContainer*/ { +if(file[0] == 0x50 && file[1] == 0x4b) return parse_zip(file, options); +if((file[0] | 0x20) == 0x6d && (file[1]|0x20) == 0x69) return parse_mad(file, options); +if(file.length < 512) throw new Error("CFB file size " + file.length + " < 512"); +var mver = 3; +var ssz = 512; +var nmfs = 0; // number of mini FAT sectors +var difat_sec_cnt = 0; +var dir_start = 0; +var minifat_start = 0; +var difat_start = 0; + +var fat_addrs/*:Array*/ = []; // locations of FAT sectors + +/* [MS-CFB] 2.2 Compound File Header */ +var blob/*:CFBlob*/ = /*::(*/file.slice(0,512)/*:: :any)*/; +prep_blob(blob, 0); + +/* major version */ +var mv = check_get_mver(blob); +mver = mv[0]; +switch(mver) { + case 3: ssz = 512; break; case 4: ssz = 4096; break; + case 0: if(mv[1] == 0) return parse_zip(file, options); + /* falls through */ + default: throw new Error("Major Version: Expected 3 or 4 saw " + mver); +} + +/* reprocess header */ +if(ssz !== 512) { blob = /*::(*/file.slice(0,ssz)/*:: :any)*/; prep_blob(blob, 28 /* blob.l */); } +/* Save header for final object */ +var header/*:RawBytes*/ = file.slice(0,ssz); + +check_shifts(blob, mver); + +// Number of Directory Sectors +var dir_cnt/*:number*/ = blob.read_shift(4, 'i'); +if(mver === 3 && dir_cnt !== 0) throw new Error('# Directory Sectors: Expected 0 saw ' + dir_cnt); + +// Number of FAT Sectors +blob.l += 4; + +// First Directory Sector Location +dir_start = blob.read_shift(4, 'i'); + +// Transaction Signature +blob.l += 4; + +// Mini Stream Cutoff Size +blob.chk('00100000', 'Mini Stream Cutoff Size: '); + +// First Mini FAT Sector Location +minifat_start = blob.read_shift(4, 'i'); + +// Number of Mini FAT Sectors +nmfs = blob.read_shift(4, 'i'); + +// First DIFAT sector location +difat_start = blob.read_shift(4, 'i'); + +// Number of DIFAT Sectors +difat_sec_cnt = blob.read_shift(4, 'i'); + +// Grab FAT Sector Locations +for(var q = -1, j = 0; j < 109; ++j) { /* 109 = (512 - blob.l)>>>2; */ + q = blob.read_shift(4, 'i'); + if(q<0) break; + fat_addrs[j] = q; +} + +/** Break the file up into sectors */ +var sectors/*:Array*/ = sectorify(file, ssz); + +sleuth_fat(difat_start, difat_sec_cnt, sectors, ssz, fat_addrs); + +/** Chains */ +var sector_list/*:SectorList*/ = make_sector_list(sectors, dir_start, fat_addrs, ssz); + +sector_list[dir_start].name = "!Directory"; +if(nmfs > 0 && minifat_start !== ENDOFCHAIN) sector_list[minifat_start].name = "!MiniFAT"; +sector_list[fat_addrs[0]].name = "!FAT"; +sector_list.fat_addrs = fat_addrs; +sector_list.ssz = ssz; + +/* [MS-CFB] 2.6.1 Compound File Directory Entry */ +var files/*:CFBFiles*/ = {}, Paths/*:Array*/ = [], FileIndex/*:CFBFileIndex*/ = [], FullPaths/*:Array*/ = []; +read_directory(dir_start, sector_list, sectors, Paths, nmfs, files, FileIndex, minifat_start); + +build_full_paths(FileIndex, FullPaths, Paths); +Paths.shift(); + +var o = { + FileIndex: FileIndex, + FullPaths: FullPaths +}; + +// $FlowIgnore +if(options && options.raw) o.raw = {header: header, sectors: sectors}; +return o; +} // parse + +/* [MS-CFB] 2.2 Compound File Header -- read up to major version */ +function check_get_mver(blob/*:CFBlob*/)/*:[number, number]*/ { + if(blob[blob.l] == 0x50 && blob[blob.l + 1] == 0x4b) return [0, 0]; + // header signature 8 + blob.chk(HEADER_SIGNATURE, 'Header Signature: '); + + // clsid 16 + //blob.chk(HEADER_CLSID, 'CLSID: '); + blob.l += 16; + + // minor version 2 + var mver/*:number*/ = blob.read_shift(2, 'u'); + + return [blob.read_shift(2,'u'), mver]; +} +function check_shifts(blob/*:CFBlob*/, mver/*:number*/)/*:void*/ { + var shift = 0x09; + + // Byte Order + //blob.chk('feff', 'Byte Order: '); // note: some writers put 0xffff + blob.l += 2; + + // Sector Shift + switch((shift = blob.read_shift(2))) { + case 0x09: if(mver != 3) throw new Error('Sector Shift: Expected 9 saw ' + shift); break; + case 0x0c: if(mver != 4) throw new Error('Sector Shift: Expected 12 saw ' + shift); break; + default: throw new Error('Sector Shift: Expected 9 or 12 saw ' + shift); + } + + // Mini Sector Shift + blob.chk('0600', 'Mini Sector Shift: '); + + // Reserved + blob.chk('000000000000', 'Reserved: '); +} + +/** Break the file up into sectors */ +function sectorify(file/*:RawBytes*/, ssz/*:number*/)/*:Array*/ { + var nsectors = Math.ceil(file.length/ssz)-1; + var sectors/*:Array*/ = []; + for(var i=1; i < nsectors; ++i) sectors[i-1] = file.slice(i*ssz,(i+1)*ssz); + sectors[nsectors-1] = file.slice(nsectors*ssz); + return sectors; +} + +/* [MS-CFB] 2.6.4 Red-Black Tree */ +function build_full_paths(FI/*:CFBFileIndex*/, FP/*:Array*/, Paths/*:Array*/)/*:void*/ { + var i = 0, L = 0, R = 0, C = 0, j = 0, pl = Paths.length; + var dad/*:Array*/ = [], q/*:Array*/ = []; + + for(; i < pl; ++i) { dad[i]=q[i]=i; FP[i]=Paths[i]; } + + for(; j < q.length; ++j) { + i = q[j]; + L = FI[i].L; R = FI[i].R; C = FI[i].C; + if(dad[i] === i) { + if(L !== -1 /*NOSTREAM*/ && dad[L] !== L) dad[i] = dad[L]; + if(R !== -1 && dad[R] !== R) dad[i] = dad[R]; + } + if(C !== -1 /*NOSTREAM*/) dad[C] = i; + if(L !== -1 && i != dad[i]) { dad[L] = dad[i]; if(q.lastIndexOf(L) < j) q.push(L); } + if(R !== -1 && i != dad[i]) { dad[R] = dad[i]; if(q.lastIndexOf(R) < j) q.push(R); } + } + for(i=1; i < pl; ++i) if(dad[i] === i) { + if(R !== -1 /*NOSTREAM*/ && dad[R] !== R) dad[i] = dad[R]; + else if(L !== -1 && dad[L] !== L) dad[i] = dad[L]; + } + + for(i=1; i < pl; ++i) { + if(FI[i].type === 0 /* unknown */) continue; + j = i; + if(j != dad[j]) do { + j = dad[j]; + FP[i] = FP[j] + "/" + FP[i]; + } while (j !== 0 && -1 !== dad[j] && j != dad[j]); + dad[i] = -1; + } + + FP[0] += "/"; + for(i=1; i < pl; ++i) { + if(FI[i].type !== 2 /* stream */) FP[i] += "/"; + } +} + +function get_mfat_entry(entry/*:CFBEntry*/, payload/*:RawBytes*/, mini/*:?RawBytes*/)/*:CFBlob*/ { + var start = entry.start, size = entry.size; + //return (payload.slice(start*MSSZ, start*MSSZ + size)/*:any*/); + var o = []; + var idx = start; + while(mini && size > 0 && idx >= 0) { + o.push(payload.slice(idx * MSSZ, idx * MSSZ + MSSZ)); + size -= MSSZ; + idx = __readInt32LE(mini, idx * 4); + } + if(o.length === 0) return (new_buf(0)/*:any*/); + return (bconcat(o).slice(0, entry.size)/*:any*/); +} + +/** Chase down the rest of the DIFAT chain to build a comprehensive list + DIFAT chains by storing the next sector number as the last 32 bits */ +function sleuth_fat(idx/*:number*/, cnt/*:number*/, sectors/*:Array*/, ssz/*:number*/, fat_addrs)/*:void*/ { + var q/*:number*/ = ENDOFCHAIN; + if(idx === ENDOFCHAIN) { + if(cnt !== 0) throw new Error("DIFAT chain shorter than expected"); + } else if(idx !== -1 /*FREESECT*/) { + var sector = sectors[idx], m = (ssz>>>2)-1; + if(!sector) return; + for(var i = 0; i < m; ++i) { + if((q = __readInt32LE(sector,i*4)) === ENDOFCHAIN) break; + fat_addrs.push(q); + } + sleuth_fat(__readInt32LE(sector,ssz-4),cnt - 1, sectors, ssz, fat_addrs); + } +} + +/** Follow the linked list of sectors for a given starting point */ +function get_sector_list(sectors/*:Array*/, start/*:number*/, fat_addrs/*:Array*/, ssz/*:number*/, chkd/*:?Array*/)/*:SectorEntry*/ { + var buf/*:Array*/ = [], buf_chain/*:Array*/ = []; + if(!chkd) chkd = []; + var modulus = ssz - 1, j = 0, jj = 0; + for(j=start; j>=0;) { + chkd[j] = true; + buf[buf.length] = j; + buf_chain.push(sectors[j]); + var addr = fat_addrs[Math.floor(j*4/ssz)]; + jj = ((j*4) & modulus); + if(ssz < 4 + jj) throw new Error("FAT boundary crossed: " + j + " 4 "+ssz); + if(!sectors[addr]) break; + j = __readInt32LE(sectors[addr], jj); + } + return {nodes: buf, data:__toBuffer([buf_chain])}; +} + +/** Chase down the sector linked lists */ +function make_sector_list(sectors/*:Array*/, dir_start/*:number*/, fat_addrs/*:Array*/, ssz/*:number*/)/*:SectorList*/ { + var sl = sectors.length, sector_list/*:SectorList*/ = ([]/*:any*/); + var chkd/*:Array*/ = [], buf/*:Array*/ = [], buf_chain/*:Array*/ = []; + var modulus = ssz - 1, i=0, j=0, k=0, jj=0; + for(i=0; i < sl; ++i) { + buf = ([]/*:Array*/); + k = (i + dir_start); if(k >= sl) k-=sl; + if(chkd[k]) continue; + buf_chain = []; + var seen = []; + for(j=k; j>=0;) { + seen[j] = true; + chkd[j] = true; + buf[buf.length] = j; + buf_chain.push(sectors[j]); + var addr/*:number*/ = fat_addrs[Math.floor(j*4/ssz)]; + jj = ((j*4) & modulus); + if(ssz < 4 + jj) throw new Error("FAT boundary crossed: " + j + " 4 "+ssz); + if(!sectors[addr]) break; + j = __readInt32LE(sectors[addr], jj); + if(seen[j]) break; + } + sector_list[k] = ({nodes: buf, data:__toBuffer([buf_chain])}/*:SectorEntry*/); + } + return sector_list; +} + +/* [MS-CFB] 2.6.1 Compound File Directory Entry */ +function read_directory(dir_start/*:number*/, sector_list/*:SectorList*/, sectors/*:Array*/, Paths/*:Array*/, nmfs, files, FileIndex, mini) { + var minifat_store = 0, pl = (Paths.length?2:0); + var sector = sector_list[dir_start].data; + var i = 0, namelen = 0, name; + for(; i < sector.length; i+= 128) { + var blob/*:CFBlob*/ = /*::(*/sector.slice(i, i+128)/*:: :any)*/; + prep_blob(blob, 64); + namelen = blob.read_shift(2); + name = __utf16le(blob,0,namelen-pl); + Paths.push(name); + var o/*:CFBEntry*/ = ({ + name: name, + type: blob.read_shift(1), + color: blob.read_shift(1), + L: blob.read_shift(4, 'i'), + R: blob.read_shift(4, 'i'), + C: blob.read_shift(4, 'i'), + clsid: blob.read_shift(16), + state: blob.read_shift(4, 'i'), + start: 0, + size: 0 + }); + var ctime/*:number*/ = blob.read_shift(2) + blob.read_shift(2) + blob.read_shift(2) + blob.read_shift(2); + if(ctime !== 0) o.ct = read_date(blob, blob.l-8); + var mtime/*:number*/ = blob.read_shift(2) + blob.read_shift(2) + blob.read_shift(2) + blob.read_shift(2); + if(mtime !== 0) o.mt = read_date(blob, blob.l-8); + o.start = blob.read_shift(4, 'i'); + o.size = blob.read_shift(4, 'i'); + if(o.size < 0 && o.start < 0) { o.size = o.type = 0; o.start = ENDOFCHAIN; o.name = ""; } + if(o.type === 5) { /* root */ + minifat_store = o.start; + if(nmfs > 0 && minifat_store !== ENDOFCHAIN) sector_list[minifat_store].name = "!StreamData"; + /*minifat_size = o.size;*/ + } else if(o.size >= 4096 /* MSCSZ */) { + o.storage = 'fat'; + if(sector_list[o.start] === undefined) sector_list[o.start] = get_sector_list(sectors, o.start, sector_list.fat_addrs, sector_list.ssz); + sector_list[o.start].name = o.name; + o.content = (sector_list[o.start].data.slice(0,o.size)/*:any*/); + } else { + o.storage = 'minifat'; + if(o.size < 0) o.size = 0; + else if(minifat_store !== ENDOFCHAIN && o.start !== ENDOFCHAIN && sector_list[minifat_store]) { + o.content = get_mfat_entry(o, sector_list[minifat_store].data, (sector_list[mini]||{}).data); + } + } + if(o.content) prep_blob(o.content, 0); + files[name] = o; + FileIndex.push(o); + } +} + +function read_date(blob/*:RawBytes|CFBlob*/, offset/*:number*/)/*:Date*/ { + return new Date(( ( (__readUInt32LE(blob,offset+4)/1e7)*Math.pow(2,32)+__readUInt32LE(blob,offset)/1e7 ) - 11644473600)*1000); +} + +function read_file(filename/*:string*/, options/*:CFBReadOpts*/) { + get_fs(); + return parse(fs.readFileSync(filename), options); +} + +function read(blob/*:RawBytes|string*/, options/*:CFBReadOpts*/) { + var type = options && options.type; + if(!type) { + if(has_buf && Buffer.isBuffer(blob)) type = "buffer"; + } + switch(type || "base64") { + case "file": /*:: if(typeof blob !== 'string') throw "Must pass a filename when type='file'"; */return read_file(blob, options); + case "base64": /*:: if(typeof blob !== 'string') throw "Must pass a base64-encoded binary string when type='file'"; */return parse(s2a(Base64_decode(blob)), options); + case "binary": /*:: if(typeof blob !== 'string') throw "Must pass a binary string when type='file'"; */return parse(s2a(blob), options); + } + return parse(/*::typeof blob == 'string' ? new Buffer(blob, 'utf-8') : */blob, options); +} + +function init_cfb(cfb/*:CFBContainer*/, opts/*:?any*/)/*:void*/ { + var o = opts || {}, root = o.root || "Root Entry"; + if(!cfb.FullPaths) cfb.FullPaths = []; + if(!cfb.FileIndex) cfb.FileIndex = []; + if(cfb.FullPaths.length !== cfb.FileIndex.length) throw new Error("inconsistent CFB structure"); + if(cfb.FullPaths.length === 0) { + cfb.FullPaths[0] = root + "/"; + cfb.FileIndex[0] = ({ name: root, type: 5 }/*:any*/); + } + if(o.CLSID) cfb.FileIndex[0].clsid = o.CLSID; + seed_cfb(cfb); +} +function seed_cfb(cfb/*:CFBContainer*/)/*:void*/ { + var nm = "\u0001Sh33tJ5"; + if(CFB.find(cfb, "/" + nm)) return; + var p = new_buf(4); p[0] = 55; p[1] = p[3] = 50; p[2] = 54; + cfb.FileIndex.push(({ name: nm, type: 2, content:p, size:4, L:69, R:69, C:69 }/*:any*/)); + cfb.FullPaths.push(cfb.FullPaths[0] + nm); + rebuild_cfb(cfb); +} +function rebuild_cfb(cfb/*:CFBContainer*/, f/*:?boolean*/)/*:void*/ { + init_cfb(cfb); + var gc = false, s = false; + for(var i = cfb.FullPaths.length - 1; i >= 0; --i) { + var _file = cfb.FileIndex[i]; + switch(_file.type) { + case 0: + if(s) gc = true; + else { cfb.FileIndex.pop(); cfb.FullPaths.pop(); } + break; + case 1: case 2: case 5: + s = true; + if(isNaN(_file.R * _file.L * _file.C)) gc = true; + if(_file.R > -1 && _file.L > -1 && _file.R == _file.L) gc = true; + break; + default: gc = true; break; + } + } + if(!gc && !f) return; + + var now = new Date(1987, 1, 19), j = 0; + // Track which names exist + var fullPaths = Object.create ? Object.create(null) : {}; + var data/*:Array<[string, CFBEntry]>*/ = []; + for(i = 0; i < cfb.FullPaths.length; ++i) { + fullPaths[cfb.FullPaths[i]] = true; + if(cfb.FileIndex[i].type === 0) continue; + data.push([cfb.FullPaths[i], cfb.FileIndex[i]]); + } + for(i = 0; i < data.length; ++i) { + var dad = dirname(data[i][0]); + s = fullPaths[dad]; + if(!s) { + data.push([dad, ({ + name: filename(dad).replace("/",""), + type: 1, + clsid: HEADER_CLSID, + ct: now, mt: now, + content: null + }/*:any*/)]); + // Add name to set + fullPaths[dad] = true; + } + } + + data.sort(function(x,y) { return namecmp(x[0], y[0]); }); + cfb.FullPaths = []; cfb.FileIndex = []; + for(i = 0; i < data.length; ++i) { cfb.FullPaths[i] = data[i][0]; cfb.FileIndex[i] = data[i][1]; } + for(i = 0; i < data.length; ++i) { + var elt = cfb.FileIndex[i]; + var nm = cfb.FullPaths[i]; + + elt.name = filename(nm).replace("/",""); + elt.L = elt.R = elt.C = -(elt.color = 1); + elt.size = elt.content ? elt.content.length : 0; + elt.start = 0; + elt.clsid = (elt.clsid || HEADER_CLSID); + if(i === 0) { + elt.C = data.length > 1 ? 1 : -1; + elt.size = 0; + elt.type = 5; + } else if(nm.slice(-1) == "/") { + for(j=i+1;j < data.length; ++j) if(dirname(cfb.FullPaths[j])==nm) break; + elt.C = j >= data.length ? -1 : j; + for(j=i+1;j < data.length; ++j) if(dirname(cfb.FullPaths[j])==dirname(nm)) break; + elt.R = j >= data.length ? -1 : j; + elt.type = 1; + } else { + if(dirname(cfb.FullPaths[i+1]||"") == dirname(nm)) elt.R = i + 1; + elt.type = 2; + } + } + +} + +function _write(cfb/*:CFBContainer*/, options/*:CFBWriteOpts*/)/*:RawBytes|string*/ { + var _opts = options || {}; + /* MAD is order-sensitive, skip rebuild and sort */ + if(_opts.fileType == 'mad') return write_mad(cfb, _opts); + rebuild_cfb(cfb); + switch(_opts.fileType) { + case 'zip': return write_zip(cfb, _opts); + //case 'mad': return write_mad(cfb, _opts); + } + var L = (function(cfb/*:CFBContainer*/)/*:Array*/{ + var mini_size = 0, fat_size = 0; + for(var i = 0; i < cfb.FileIndex.length; ++i) { + var file = cfb.FileIndex[i]; + if(!file.content) continue; + /*:: if(file.content == null) throw new Error("unreachable"); */ + var flen = file.content.length; + if(flen > 0){ + if(flen < 0x1000) mini_size += (flen + 0x3F) >> 6; + else fat_size += (flen + 0x01FF) >> 9; + } + } + var dir_cnt = (cfb.FullPaths.length +3) >> 2; + var mini_cnt = (mini_size + 7) >> 3; + var mfat_cnt = (mini_size + 0x7F) >> 7; + var fat_base = mini_cnt + fat_size + dir_cnt + mfat_cnt; + var fat_cnt = (fat_base + 0x7F) >> 7; + var difat_cnt = fat_cnt <= 109 ? 0 : Math.ceil((fat_cnt-109)/0x7F); + while(((fat_base + fat_cnt + difat_cnt + 0x7F) >> 7) > fat_cnt) difat_cnt = ++fat_cnt <= 109 ? 0 : Math.ceil((fat_cnt-109)/0x7F); + var L = [1, difat_cnt, fat_cnt, mfat_cnt, dir_cnt, fat_size, mini_size, 0]; + cfb.FileIndex[0].size = mini_size << 6; + L[7] = (cfb.FileIndex[0].start=L[0]+L[1]+L[2]+L[3]+L[4]+L[5])+((L[6]+7) >> 3); + return L; + })(cfb); + var o = new_buf(L[7] << 9); + var i = 0, T = 0; + { + for(i = 0; i < 8; ++i) o.write_shift(1, HEADER_SIG[i]); + for(i = 0; i < 8; ++i) o.write_shift(2, 0); + o.write_shift(2, 0x003E); + o.write_shift(2, 0x0003); + o.write_shift(2, 0xFFFE); + o.write_shift(2, 0x0009); + o.write_shift(2, 0x0006); + for(i = 0; i < 3; ++i) o.write_shift(2, 0); + o.write_shift(4, 0); + o.write_shift(4, L[2]); + o.write_shift(4, L[0] + L[1] + L[2] + L[3] - 1); + o.write_shift(4, 0); + o.write_shift(4, 1<<12); + o.write_shift(4, L[3] ? L[0] + L[1] + L[2] - 1: ENDOFCHAIN); + o.write_shift(4, L[3]); + o.write_shift(-4, L[1] ? L[0] - 1: ENDOFCHAIN); + o.write_shift(4, L[1]); + for(i = 0; i < 109; ++i) o.write_shift(-4, i < L[2] ? L[1] + i : -1); + } + if(L[1]) { + for(T = 0; T < L[1]; ++T) { + for(; i < 236 + T * 127; ++i) o.write_shift(-4, i < L[2] ? L[1] + i : -1); + o.write_shift(-4, T === L[1] - 1 ? ENDOFCHAIN : T + 1); + } + } + var chainit = function(w/*:number*/)/*:void*/ { + for(T += w; i> 9); + } + chainit((L[6] + 7) >> 3); + while(o.l & 0x1FF) o.write_shift(-4, consts.ENDOFCHAIN); + T = i = 0; + for(j = 0; j < cfb.FileIndex.length; ++j) { + file = cfb.FileIndex[j]; + if(!file.content) continue; + /*:: if(file.content == null) throw new Error("unreachable"); */ + flen = file.content.length; + if(!flen || flen >= 0x1000) continue; + file.start = T; + chainit((flen + 0x3F) >> 6); + } + while(o.l & 0x1FF) o.write_shift(-4, consts.ENDOFCHAIN); + for(i = 0; i < L[4]<<2; ++i) { + var nm = cfb.FullPaths[i]; + if(!nm || nm.length === 0) { + for(j = 0; j < 17; ++j) o.write_shift(4, 0); + for(j = 0; j < 3; ++j) o.write_shift(4, -1); + for(j = 0; j < 12; ++j) o.write_shift(4, 0); + continue; + } + file = cfb.FileIndex[i]; + if(i === 0) file.start = file.size ? file.start - 1 : ENDOFCHAIN; + var _nm/*:string*/ = (i === 0 && _opts.root) || file.name; + flen = 2*(_nm.length+1); + o.write_shift(64, _nm, "utf16le"); + o.write_shift(2, flen); + o.write_shift(1, file.type); + o.write_shift(1, file.color); + o.write_shift(-4, file.L); + o.write_shift(-4, file.R); + o.write_shift(-4, file.C); + if(!file.clsid) for(j = 0; j < 4; ++j) o.write_shift(4, 0); + else o.write_shift(16, file.clsid, "hex"); + o.write_shift(4, file.state || 0); + o.write_shift(4, 0); o.write_shift(4, 0); + o.write_shift(4, 0); o.write_shift(4, 0); + o.write_shift(4, file.start); + o.write_shift(4, file.size); o.write_shift(4, 0); + } + for(i = 1; i < cfb.FileIndex.length; ++i) { + file = cfb.FileIndex[i]; + /*:: if(!file.content) throw new Error("unreachable"); */ + if(file.size >= 0x1000) { + o.l = (file.start+1) << 9; + if (has_buf && Buffer.isBuffer(file.content)) { + file.content.copy(o, o.l, 0, file.size); + // o is a 0-filled Buffer so just set next offset + o.l += (file.size + 511) & -512; + } else { + for(j = 0; j < file.size; ++j) o.write_shift(1, file.content[j]); + for(; j & 0x1FF; ++j) o.write_shift(1, 0); + } + } + } + for(i = 1; i < cfb.FileIndex.length; ++i) { + file = cfb.FileIndex[i]; + /*:: if(!file.content) throw new Error("unreachable"); */ + if(file.size > 0 && file.size < 0x1000) { + if (has_buf && Buffer.isBuffer(file.content)) { + file.content.copy(o, o.l, 0, file.size); + // o is a 0-filled Buffer so just set next offset + o.l += (file.size + 63) & -64; + } else { + for(j = 0; j < file.size; ++j) o.write_shift(1, file.content[j]); + for(; j & 0x3F; ++j) o.write_shift(1, 0); + } + } + } + if (has_buf) { + o.l = o.length; + } else { + // When using Buffer, already 0-filled + while(o.l < o.length) o.write_shift(1, 0); + } + return o; +} +/* [MS-CFB] 2.6.4 (Unicode 3.0.1 case conversion) */ +function find(cfb/*:CFBContainer*/, path/*:string*/)/*:?CFBEntry*/ { + var UCFullPaths/*:Array*/ = cfb.FullPaths.map(function(x) { return x.toUpperCase(); }); + var UCPaths/*:Array*/ = UCFullPaths.map(function(x) { var y = x.split("/"); return y[y.length - (x.slice(-1) == "/" ? 2 : 1)]; }); + var k/*:boolean*/ = false; + if(path.charCodeAt(0) === 47 /* "/" */) { k = true; path = UCFullPaths[0].slice(0, -1) + path; } + else k = path.indexOf("/") !== -1; + var UCPath/*:string*/ = path.toUpperCase(); + var w/*:number*/ = k === true ? UCFullPaths.indexOf(UCPath) : UCPaths.indexOf(UCPath); + if(w !== -1) return cfb.FileIndex[w]; + + var m = !UCPath.match(chr1); + UCPath = UCPath.replace(chr0,''); + if(m) UCPath = UCPath.replace(chr1,'!'); + for(w = 0; w < UCFullPaths.length; ++w) { + if((m ? UCFullPaths[w].replace(chr1,'!') : UCFullPaths[w]).replace(chr0,'') == UCPath) return cfb.FileIndex[w]; + if((m ? UCPaths[w].replace(chr1,'!') : UCPaths[w]).replace(chr0,'') == UCPath) return cfb.FileIndex[w]; + } + return null; +} +/** CFB Constants */ +var MSSZ = 64; /* Mini Sector Size = 1<<6 */ +//var MSCSZ = 4096; /* Mini Stream Cutoff Size */ +/* 2.1 Compound File Sector Numbers and Types */ +var ENDOFCHAIN = -2; +/* 2.2 Compound File Header */ +var HEADER_SIGNATURE = 'd0cf11e0a1b11ae1'; +var HEADER_SIG = [0xD0, 0xCF, 0x11, 0xE0, 0xA1, 0xB1, 0x1A, 0xE1]; +var HEADER_CLSID = '00000000000000000000000000000000'; +var consts = { + /* 2.1 Compund File Sector Numbers and Types */ + MAXREGSECT: -6, + DIFSECT: -4, + FATSECT: -3, + ENDOFCHAIN: ENDOFCHAIN, + FREESECT: -1, + /* 2.2 Compound File Header */ + HEADER_SIGNATURE: HEADER_SIGNATURE, + HEADER_MINOR_VERSION: '3e00', + MAXREGSID: -6, + NOSTREAM: -1, + HEADER_CLSID: HEADER_CLSID, + /* 2.6.1 Compound File Directory Entry */ + EntryTypes: ['unknown','storage','stream','lockbytes','property','root'] +}; + +function write_file(cfb/*:CFBContainer*/, filename/*:string*/, options/*:CFBWriteOpts*/)/*:void*/ { + get_fs(); + var o = _write(cfb, options); + /*:: if(typeof Buffer == 'undefined' || !Buffer.isBuffer(o) || !(o instanceof Buffer)) throw new Error("unreachable"); */ + fs.writeFileSync(filename, o); +} + +function a2s(o/*:RawBytes*/)/*:string*/ { + var out = new Array(o.length); + for(var i = 0; i < o.length; ++i) out[i] = String.fromCharCode(o[i]); + return out.join(""); +} + +function write(cfb/*:CFBContainer*/, options/*:CFBWriteOpts*/)/*:RawBytes|string*/ { + var o = _write(cfb, options); + switch(options && options.type || "buffer") { + case "file": get_fs(); fs.writeFileSync(options.filename, (o/*:any*/)); return o; + case "binary": return typeof o == "string" ? o : a2s(o); + case "base64": return Base64_encode(typeof o == "string" ? o : a2s(o)); + case "buffer": if(has_buf) return Buffer.isBuffer(o) ? o : Buffer_from(o); + /* falls through */ + case "array": return typeof o == "string" ? s2a(o) : o; + } + return o; +} +/* node < 8.1 zlib does not expose bytesRead, so default to pure JS */ +var _zlib; +function use_zlib(zlib) { try { + var InflateRaw = zlib.InflateRaw; + var InflRaw = new InflateRaw(); + InflRaw._processChunk(new Uint8Array([3, 0]), InflRaw._finishFlushFlag); + if(InflRaw.bytesRead) _zlib = zlib; + else throw new Error("zlib does not expose bytesRead"); +} catch(e) {console.error("cannot use native zlib: " + (e.message || e)); } } + +function _inflateRawSync(payload, usz) { + if(!_zlib) return _inflate(payload, usz); + var InflateRaw = _zlib.InflateRaw; + var InflRaw = new InflateRaw(); + var out = InflRaw._processChunk(payload.slice(payload.l), InflRaw._finishFlushFlag); + payload.l += InflRaw.bytesRead; + return out; +} + +function _deflateRawSync(payload) { + return _zlib ? _zlib.deflateRawSync(payload) : _deflate(payload); +} +var CLEN_ORDER = [ 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 ]; + +/* LEN_ID = [ 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285 ]; */ +var LEN_LN = [ 3, 4, 5, 6, 7, 8, 9, 10, 11, 13 , 15, 17, 19, 23, 27, 31, 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258 ]; + +/* DST_ID = [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29 ]; */ +var DST_LN = [ 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, 8193, 12289, 16385, 24577 ]; + +function bit_swap_8(n) { var t = (((((n<<1)|(n<<11)) & 0x22110) | (((n<<5)|(n<<15)) & 0x88440))); return ((t>>16) | (t>>8) |t)&0xFF; } + +var use_typed_arrays = typeof Uint8Array !== 'undefined'; + +var bitswap8 = use_typed_arrays ? new Uint8Array(1<<8) : []; +for(var q = 0; q < (1<<8); ++q) bitswap8[q] = bit_swap_8(q); + +function bit_swap_n(n, b) { + var rev = bitswap8[n & 0xFF]; + if(b <= 8) return rev >>> (8-b); + rev = (rev << 8) | bitswap8[(n>>8)&0xFF]; + if(b <= 16) return rev >>> (16-b); + rev = (rev << 8) | bitswap8[(n>>16)&0xFF]; + return rev >>> (24-b); +} + +/* helpers for unaligned bit reads */ +function read_bits_2(buf, bl) { var w = (bl&7), h = (bl>>>3); return ((buf[h]|(w <= 6 ? 0 : buf[h+1]<<8))>>>w)& 0x03; } +function read_bits_3(buf, bl) { var w = (bl&7), h = (bl>>>3); return ((buf[h]|(w <= 5 ? 0 : buf[h+1]<<8))>>>w)& 0x07; } +function read_bits_4(buf, bl) { var w = (bl&7), h = (bl>>>3); return ((buf[h]|(w <= 4 ? 0 : buf[h+1]<<8))>>>w)& 0x0F; } +function read_bits_5(buf, bl) { var w = (bl&7), h = (bl>>>3); return ((buf[h]|(w <= 3 ? 0 : buf[h+1]<<8))>>>w)& 0x1F; } +function read_bits_7(buf, bl) { var w = (bl&7), h = (bl>>>3); return ((buf[h]|(w <= 1 ? 0 : buf[h+1]<<8))>>>w)& 0x7F; } + +/* works up to n = 3 * 8 + 1 = 25 */ +function read_bits_n(buf, bl, n) { + var w = (bl&7), h = (bl>>>3), f = ((1<>> w; + if(n < 8 - w) return v & f; + v |= buf[h+1]<<(8-w); + if(n < 16 - w) return v & f; + v |= buf[h+2]<<(16-w); + if(n < 24 - w) return v & f; + v |= buf[h+3]<<(24-w); + return v & f; +} + +/* helpers for unaligned bit writes */ +function write_bits_3(buf, bl, v) { var w = bl & 7, h = bl >>> 3; + if(w <= 5) buf[h] |= (v & 7) << w; + else { + buf[h] |= (v << w) & 0xFF; + buf[h+1] = (v&7) >> (8-w); + } + return bl + 3; +} + +function write_bits_1(buf, bl, v) { + var w = bl & 7, h = bl >>> 3; + v = (v&1) << w; + buf[h] |= v; + return bl + 1; +} +function write_bits_8(buf, bl, v) { + var w = bl & 7, h = bl >>> 3; + v <<= w; + buf[h] |= v & 0xFF; v >>>= 8; + buf[h+1] = v; + return bl + 8; +} +function write_bits_16(buf, bl, v) { + var w = bl & 7, h = bl >>> 3; + v <<= w; + buf[h] |= v & 0xFF; v >>>= 8; + buf[h+1] = v & 0xFF; + buf[h+2] = v >>> 8; + return bl + 16; +} + +/* until ArrayBuffer#realloc is a thing, fake a realloc */ +function realloc(b, sz/*:number*/) { + var L = b.length, M = 2*L > sz ? 2*L : sz + 5, i = 0; + if(L >= sz) return b; + if(has_buf) { + var o = new_unsafe_buf(M); + // $FlowIgnore + if(b.copy) b.copy(o); + else for(; i < b.length; ++i) o[i] = b[i]; + return o; + } else if(use_typed_arrays) { + var a = new Uint8Array(M); + if(a.set) a.set(b); + else for(; i < L; ++i) a[i] = b[i]; + return a; + } + b.length = M; + return b; +} + +/* zero-filled arrays for older browsers */ +function zero_fill_array(n) { + var o = new Array(n); + for(var i = 0; i < n; ++i) o[i] = 0; + return o; +} + +/* build tree (used for literals and lengths) */ +function build_tree(clens, cmap, MAX/*:number*/)/*:number*/ { + var maxlen = 1, w = 0, i = 0, j = 0, ccode = 0, L = clens.length; + + var bl_count = use_typed_arrays ? new Uint16Array(32) : zero_fill_array(32); + for(i = 0; i < 32; ++i) bl_count[i] = 0; + + for(i = L; i < MAX; ++i) clens[i] = 0; + L = clens.length; + + var ctree = use_typed_arrays ? new Uint16Array(L) : zero_fill_array(L); // [] + + /* build code tree */ + for(i = 0; i < L; ++i) { + bl_count[(w = clens[i])]++; + if(maxlen < w) maxlen = w; + ctree[i] = 0; + } + bl_count[0] = 0; + for(i = 1; i <= maxlen; ++i) bl_count[i+16] = (ccode = (ccode + bl_count[i-1])<<1); + for(i = 0; i < L; ++i) { + ccode = clens[i]; + if(ccode != 0) ctree[i] = bl_count[ccode+16]++; + } + + /* cmap[maxlen + 4 bits] = (off&15) + (lit<<4) reverse mapping */ + var cleni = 0; + for(i = 0; i < L; ++i) { + cleni = clens[i]; + if(cleni != 0) { + ccode = bit_swap_n(ctree[i], maxlen)>>(maxlen-cleni); + for(j = (1<<(maxlen + 4 - cleni)) - 1; j>=0; --j) + cmap[ccode|(j<*/ = []; + var i = 0; + for(;i<32; i++) dlens.push(5); + build_tree(dlens, fix_dmap, 32); + + var clens/*:Array*/ = []; + i = 0; + for(; i<=143; i++) clens.push(8); + for(; i<=255; i++) clens.push(9); + for(; i<=279; i++) clens.push(7); + for(; i<=287; i++) clens.push(8); + build_tree(clens, fix_lmap, 288); +})();var _deflateRaw = /*#__PURE__*/(function _deflateRawIIFE() { + var DST_LN_RE = use_typed_arrays ? new Uint8Array(0x8000) : []; + var j = 0, k = 0; + for(; j < DST_LN.length - 1; ++j) { + for(; k < DST_LN[j+1]; ++k) DST_LN_RE[k] = j; + } + for(;k < 32768; ++k) DST_LN_RE[k] = 29; + + var LEN_LN_RE = use_typed_arrays ? new Uint8Array(0x103) : []; + for(j = 0, k = 0; j < LEN_LN.length - 1; ++j) { + for(; k < LEN_LN[j+1]; ++k) LEN_LN_RE[k] = j; + } + + function write_stored(data, out) { + var boff = 0; + while(boff < data.length) { + var L = Math.min(0xFFFF, data.length - boff); + var h = boff + L == data.length; + out.write_shift(1, +h); + out.write_shift(2, L); + out.write_shift(2, (~L) & 0xFFFF); + while(L-- > 0) out[out.l++] = data[boff++]; + } + return out.l; + } + + /* Fixed Huffman */ + function write_huff_fixed(data, out) { + var bl = 0; + var boff = 0; + var addrs = use_typed_arrays ? new Uint16Array(0x8000) : []; + while(boff < data.length) { + var L = /* data.length - boff; */ Math.min(0xFFFF, data.length - boff); + + /* write a stored block for short data */ + if(L < 10) { + bl = write_bits_3(out, bl, +!!(boff + L == data.length)); // jshint ignore:line + if(bl & 7) bl += 8 - (bl & 7); + out.l = (bl / 8) | 0; + out.write_shift(2, L); + out.write_shift(2, (~L) & 0xFFFF); + while(L-- > 0) out[out.l++] = data[boff++]; + bl = out.l * 8; + continue; + } + + bl = write_bits_3(out, bl, +!!(boff + L == data.length) + 2); // jshint ignore:line + var hash = 0; + while(L-- > 0) { + var d = data[boff]; + hash = ((hash << 5) ^ d) & 0x7FFF; + + var match = -1, mlen = 0; + + if((match = addrs[hash])) { + match |= boff & ~0x7FFF; + if(match > boff) match -= 0x8000; + if(match < boff) while(data[match + mlen] == data[boff + mlen] && mlen < 250) ++mlen; + } + + if(mlen > 2) { + /* Copy Token */ + d = LEN_LN_RE[mlen]; + if(d <= 22) bl = write_bits_8(out, bl, bitswap8[d+1]>>1) - 1; + else { + write_bits_8(out, bl, 3); + bl += 5; + write_bits_8(out, bl, bitswap8[d-23]>>5); + bl += 3; + } + var len_eb = (d < 8) ? 0 : ((d - 4)>>2); + if(len_eb > 0) { + write_bits_16(out, bl, mlen - LEN_LN[d]); + bl += len_eb; + } + + d = DST_LN_RE[boff - match]; + bl = write_bits_8(out, bl, bitswap8[d]>>3); + bl -= 3; + + var dst_eb = d < 4 ? 0 : (d-2)>>1; + if(dst_eb > 0) { + write_bits_16(out, bl, boff - match - DST_LN[d]); + bl += dst_eb; + } + for(var q = 0; q < mlen; ++q) { + addrs[hash] = boff & 0x7FFF; + hash = ((hash << 5) ^ data[boff]) & 0x7FFF; + ++boff; + } + L-= mlen - 1; + } else { + /* Literal Token */ + if(d <= 143) d = d + 48; + else bl = write_bits_1(out, bl, 1); + bl = write_bits_8(out, bl, bitswap8[d]); + addrs[hash] = boff & 0x7FFF; + ++boff; + } + } + + bl = write_bits_8(out, bl, 0) - 1; + } + out.l = ((bl + 7)/8)|0; + return out.l; + } + return function _deflateRaw(data, out) { + if(data.length < 8) return write_stored(data, out); + return write_huff_fixed(data, out); + }; +})(); + +function _deflate(data) { + var buf = new_buf(50+Math.floor(data.length*1.1)); + var off = _deflateRaw(data, buf); + return buf.slice(0, off); +} +/* modified inflate function also moves original read head */ + +var dyn_lmap = use_typed_arrays ? new Uint16Array(32768) : zero_fill_array(32768); +var dyn_dmap = use_typed_arrays ? new Uint16Array(32768) : zero_fill_array(32768); +var dyn_cmap = use_typed_arrays ? new Uint16Array(128) : zero_fill_array(128); +var dyn_len_1 = 1, dyn_len_2 = 1; + +/* 5.5.3 Expanding Huffman Codes */ +function dyn(data, boff/*:number*/) { + /* nomenclature from RFC1951 refers to bit values; these are offset by the implicit constant */ + var _HLIT = read_bits_5(data, boff) + 257; boff += 5; + var _HDIST = read_bits_5(data, boff) + 1; boff += 5; + var _HCLEN = read_bits_4(data, boff) + 4; boff += 4; + var w = 0; + + /* grab and store code lengths */ + var clens = use_typed_arrays ? new Uint8Array(19) : zero_fill_array(19); + var ctree = [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ]; + var maxlen = 1; + var bl_count = use_typed_arrays ? new Uint8Array(8) : zero_fill_array(8); + var next_code = use_typed_arrays ? new Uint8Array(8) : zero_fill_array(8); + var L = clens.length; /* 19 */ + for(var i = 0; i < _HCLEN; ++i) { + clens[CLEN_ORDER[i]] = w = read_bits_3(data, boff); + if(maxlen < w) maxlen = w; + bl_count[w]++; + boff += 3; + } + + /* build code tree */ + var ccode = 0; + bl_count[0] = 0; + for(i = 1; i <= maxlen; ++i) next_code[i] = ccode = (ccode + bl_count[i-1])<<1; + for(i = 0; i < L; ++i) if((ccode = clens[i]) != 0) ctree[i] = next_code[ccode]++; + /* cmap[7 bits from stream] = (off&7) + (lit<<3) */ + var cleni = 0; + for(i = 0; i < L; ++i) { + cleni = clens[i]; + if(cleni != 0) { + ccode = bitswap8[ctree[i]]>>(8-cleni); + for(var j = (1<<(7-cleni))-1; j>=0; --j) dyn_cmap[ccode|(j<*/ = []; + maxlen = 1; + for(; hcodes.length < _HLIT + _HDIST;) { + ccode = dyn_cmap[read_bits_7(data, boff)]; + boff += ccode & 7; + switch((ccode >>>= 3)) { + case 16: + w = 3 + read_bits_2(data, boff); boff += 2; + ccode = hcodes[hcodes.length - 1]; + while(w-- > 0) hcodes.push(ccode); + break; + case 17: + w = 3 + read_bits_3(data, boff); boff += 3; + while(w-- > 0) hcodes.push(0); + break; + case 18: + w = 11 + read_bits_7(data, boff); boff += 7; + while(w -- > 0) hcodes.push(0); + break; + default: + hcodes.push(ccode); + if(maxlen < ccode) maxlen = ccode; + break; + } + } + + /* build literal / length trees */ + var h1 = hcodes.slice(0, _HLIT), h2 = hcodes.slice(_HLIT); + for(i = _HLIT; i < 286; ++i) h1[i] = 0; + for(i = _HDIST; i < 30; ++i) h2[i] = 0; + dyn_len_1 = build_tree(h1, dyn_lmap, 286); + dyn_len_2 = build_tree(h2, dyn_dmap, 30); + return boff; +} + +/* return [ data, bytesRead ] */ +function inflate(data, usz/*:number*/) { + /* shortcircuit for empty buffer [0x03, 0x00] */ + if(data[0] == 3 && !(data[1] & 0x3)) { return [new_raw_buf(usz), 2]; } + + /* bit offset */ + var boff = 0; + + /* header includes final bit and type bits */ + var header = 0; + + var outbuf = new_unsafe_buf(usz ? usz : (1<<18)); + var woff = 0; + var OL = outbuf.length>>>0; + var max_len_1 = 0, max_len_2 = 0; + + while((header&1) == 0) { + header = read_bits_3(data, boff); boff += 3; + if((header >>> 1) == 0) { + /* Stored block */ + if(boff & 7) boff += 8 - (boff&7); + /* 2 bytes sz, 2 bytes bit inverse */ + var sz = data[boff>>>3] | data[(boff>>>3)+1]<<8; + boff += 32; + /* push sz bytes */ + if(sz > 0) { + if(!usz && OL < woff + sz) { outbuf = realloc(outbuf, woff + sz); OL = outbuf.length; } + while(sz-- > 0) { outbuf[woff++] = data[boff>>>3]; boff += 8; } + } + continue; + } else if((header >> 1) == 1) { + /* Fixed Huffman */ + max_len_1 = 9; max_len_2 = 5; + } else { + /* Dynamic Huffman */ + boff = dyn(data, boff); + max_len_1 = dyn_len_1; max_len_2 = dyn_len_2; + } + for(;;) { // while(true) is apparently out of vogue in modern JS circles + if(!usz && (OL < woff + 32767)) { outbuf = realloc(outbuf, woff + 32767); OL = outbuf.length; } + /* ingest code and move read head */ + var bits = read_bits_n(data, boff, max_len_1); + var code = (header>>>1) == 1 ? fix_lmap[bits] : dyn_lmap[bits]; + boff += code & 15; code >>>= 4; + /* 0-255 are literals, 256 is end of block token, 257+ are copy tokens */ + if(((code>>>8)&0xFF) === 0) outbuf[woff++] = code; + else if(code == 256) break; + else { + code -= 257; + var len_eb = (code < 8) ? 0 : ((code-4)>>2); if(len_eb > 5) len_eb = 0; + var tgt = woff + LEN_LN[code]; + /* length extra bits */ + if(len_eb > 0) { + tgt += read_bits_n(data, boff, len_eb); + boff += len_eb; + } + + /* dist code */ + bits = read_bits_n(data, boff, max_len_2); + code = (header>>>1) == 1 ? fix_dmap[bits] : dyn_dmap[bits]; + boff += code & 15; code >>>= 4; + var dst_eb = (code < 4 ? 0 : (code-2)>>1); + var dst = DST_LN[code]; + /* dist extra bits */ + if(dst_eb > 0) { + dst += read_bits_n(data, boff, dst_eb); + boff += dst_eb; + } + + /* in the common case, manual byte copy is faster than TA set / Buffer copy */ + if(!usz && OL < tgt) { outbuf = realloc(outbuf, tgt + 100); OL = outbuf.length; } + while(woff < tgt) { outbuf[woff] = outbuf[woff - dst]; ++woff; } + } + } + } + if(usz) return [outbuf, (boff+7)>>>3]; + return [outbuf.slice(0, woff), (boff+7)>>>3]; +} + +function _inflate(payload, usz) { + var data = payload.slice(payload.l||0); + var out = inflate(data, usz); + payload.l += out[1]; + return out[0]; +} + +function warn_or_throw(wrn, msg) { + if(wrn) { if(typeof console !== 'undefined') console.error(msg); } + else throw new Error(msg); +} + +function parse_zip(file/*:RawBytes*/, options/*:CFBReadOpts*/)/*:CFBContainer*/ { + var blob/*:CFBlob*/ = /*::(*/file/*:: :any)*/; + prep_blob(blob, 0); + + var FileIndex/*:CFBFileIndex*/ = [], FullPaths/*:Array*/ = []; + var o = { + FileIndex: FileIndex, + FullPaths: FullPaths + }; + init_cfb(o, { root: options.root }); + + /* find end of central directory, start just after signature */ + var i = blob.length - 4; + while((blob[i] != 0x50 || blob[i+1] != 0x4b || blob[i+2] != 0x05 || blob[i+3] != 0x06) && i >= 0) --i; + blob.l = i + 4; + + /* parse end of central directory */ + blob.l += 4; + var fcnt = blob.read_shift(2); + blob.l += 6; + var start_cd = blob.read_shift(4); + + /* parse central directory */ + blob.l = start_cd; + + for(i = 0; i < fcnt; ++i) { + /* trust local file header instead of CD entry */ + blob.l += 20; + var csz = blob.read_shift(4); + var usz = blob.read_shift(4); + var namelen = blob.read_shift(2); + var efsz = blob.read_shift(2); + var fcsz = blob.read_shift(2); + blob.l += 8; + var offset = blob.read_shift(4); + var EF = parse_extra_field(/*::(*/blob.slice(blob.l+namelen, blob.l+namelen+efsz)/*:: :any)*/); + blob.l += namelen + efsz + fcsz; + + var L = blob.l; + blob.l = offset + 4; + parse_local_file(blob, csz, usz, o, EF); + blob.l = L; + } + return o; +} + + +/* head starts just after local file header signature */ +function parse_local_file(blob/*:CFBlob*/, csz/*:number*/, usz/*:number*/, o/*:CFBContainer*/, EF) { + /* [local file header] */ + blob.l += 2; + var flags = blob.read_shift(2); + var meth = blob.read_shift(2); + var date = parse_dos_date(blob); + + if(flags & 0x2041) throw new Error("Unsupported ZIP encryption"); + var crc32 = blob.read_shift(4); + var _csz = blob.read_shift(4); + var _usz = blob.read_shift(4); + + var namelen = blob.read_shift(2); + var efsz = blob.read_shift(2); + + // TODO: flags & (1<<11) // UTF8 + var name = ""; for(var i = 0; i < namelen; ++i) name += String.fromCharCode(blob[blob.l++]); + if(efsz) { + var ef = parse_extra_field(/*::(*/blob.slice(blob.l, blob.l + efsz)/*:: :any)*/); + if((ef[0x5455]||{}).mt) date = ef[0x5455].mt; + if(((EF||{})[0x5455]||{}).mt) date = EF[0x5455].mt; + } + blob.l += efsz; + + /* [encryption header] */ + + /* [file data] */ + var data = blob.slice(blob.l, blob.l + _csz); + switch(meth) { + case 8: data = _inflateRawSync(blob, _usz); break; + case 0: break; // TODO: scan for magic number + default: throw new Error("Unsupported ZIP Compression method " + meth); + } + + /* [data descriptor] */ + var wrn = false; + if(flags & 8) { + crc32 = blob.read_shift(4); + if(crc32 == 0x08074b50) { crc32 = blob.read_shift(4); wrn = true; } + _csz = blob.read_shift(4); + _usz = blob.read_shift(4); + } + + if(_csz != csz) warn_or_throw(wrn, "Bad compressed size: " + csz + " != " + _csz); + if(_usz != usz) warn_or_throw(wrn, "Bad uncompressed size: " + usz + " != " + _usz); + //var _crc32 = CRC32.buf(data, 0); + //if((crc32>>0) != (_crc32>>0)) warn_or_throw(wrn, "Bad CRC32 checksum: " + crc32 + " != " + _crc32); + cfb_add(o, name, data, {unsafe: true, mt: date}); +} +function write_zip(cfb/*:CFBContainer*/, options/*:CFBWriteOpts*/)/*:RawBytes*/ { + var _opts = options || {}; + var out = [], cdirs = []; + var o/*:CFBlob*/ = new_buf(1); + var method = (_opts.compression ? 8 : 0), flags = 0; + var desc = false; + if(desc) flags |= 8; + var i = 0, j = 0; + + var start_cd = 0, fcnt = 0; + var root = cfb.FullPaths[0], fp = root, fi = cfb.FileIndex[0]; + var crcs = []; + var sz_cd = 0; + + for(i = 1; i < cfb.FullPaths.length; ++i) { + fp = cfb.FullPaths[i].slice(root.length); fi = cfb.FileIndex[i]; + if(!fi.size || !fi.content || fp == "\u0001Sh33tJ5") continue; + var start = start_cd; + + /* TODO: CP437 filename */ + var namebuf = new_buf(fp.length); + for(j = 0; j < fp.length; ++j) namebuf.write_shift(1, fp.charCodeAt(j) & 0x7F); + namebuf = namebuf.slice(0, namebuf.l); + crcs[fcnt] = CRC32.buf(/*::((*/fi.content/*::||[]):any)*/, 0); + + var outbuf = fi.content/*::||[]*/; + if(method == 8) outbuf = _deflateRawSync(outbuf); + + /* local file header */ + o = new_buf(30); + o.write_shift(4, 0x04034b50); + o.write_shift(2, 20); + o.write_shift(2, flags); + o.write_shift(2, method); + /* TODO: last mod file time/date */ + if(fi.mt) write_dos_date(o, fi.mt); + else o.write_shift(4, 0); + o.write_shift(-4, (flags & 8) ? 0 : crcs[fcnt]); + o.write_shift(4, (flags & 8) ? 0 : outbuf.length); + o.write_shift(4, (flags & 8) ? 0 : /*::(*/fi.content/*::||[])*/.length); + o.write_shift(2, namebuf.length); + o.write_shift(2, 0); + + start_cd += o.length; + out.push(o); + start_cd += namebuf.length; + out.push(namebuf); + + /* TODO: extra fields? */ + + /* TODO: encryption header ? */ + + start_cd += outbuf.length; + out.push(outbuf); + + /* data descriptor */ + if(flags & 8) { + o = new_buf(12); + o.write_shift(-4, crcs[fcnt]); + o.write_shift(4, outbuf.length); + o.write_shift(4, /*::(*/fi.content/*::||[])*/.length); + start_cd += o.l; + out.push(o); + } + + /* central directory */ + o = new_buf(46); + o.write_shift(4, 0x02014b50); + o.write_shift(2, 0); + o.write_shift(2, 20); + o.write_shift(2, flags); + o.write_shift(2, method); + o.write_shift(4, 0); /* TODO: last mod file time/date */ + o.write_shift(-4, crcs[fcnt]); + + o.write_shift(4, outbuf.length); + o.write_shift(4, /*::(*/fi.content/*::||[])*/.length); + o.write_shift(2, namebuf.length); + o.write_shift(2, 0); + o.write_shift(2, 0); + o.write_shift(2, 0); + o.write_shift(2, 0); + o.write_shift(4, 0); + o.write_shift(4, start); + + sz_cd += o.l; + cdirs.push(o); + sz_cd += namebuf.length; + cdirs.push(namebuf); + ++fcnt; + } + + /* end of central directory */ + o = new_buf(22); + o.write_shift(4, 0x06054b50); + o.write_shift(2, 0); + o.write_shift(2, 0); + o.write_shift(2, fcnt); + o.write_shift(2, fcnt); + o.write_shift(4, sz_cd); + o.write_shift(4, start_cd); + o.write_shift(2, 0); + + return bconcat(([bconcat((out/*:any*/)), bconcat(cdirs), o]/*:any*/)); +} +var ContentTypeMap = ({ + "htm": "text/html", + "xml": "text/xml", + + "gif": "image/gif", + "jpg": "image/jpeg", + "png": "image/png", + + "mso": "application/x-mso", + "thmx": "application/vnd.ms-officetheme", + "sh33tj5": "application/octet-stream" +}/*:any*/); + +function get_content_type(fi/*:CFBEntry*/, fp/*:string*/)/*:string*/ { + if(fi.ctype) return fi.ctype; + + var ext = fi.name || "", m = ext.match(/\.([^\.]+)$/); + if(m && ContentTypeMap[m[1]]) return ContentTypeMap[m[1]]; + + if(fp) { + m = (ext = fp).match(/[\.\\]([^\.\\])+$/); + if(m && ContentTypeMap[m[1]]) return ContentTypeMap[m[1]]; + } + + return "application/octet-stream"; +} + +/* 76 character chunks TODO: intertwine encoding */ +function write_base64_76(bstr/*:string*/)/*:string*/ { + var data = Base64_encode(bstr); + var o = []; + for(var i = 0; i < data.length; i+= 76) o.push(data.slice(i, i+76)); + return o.join("\r\n") + "\r\n"; +} + +/* +Rules for QP: + - escape =## applies for all non-display characters and literal "=" + - space or tab at end of line must be encoded + - \r\n newlines can be preserved, but bare \r and \n must be escaped + - lines must not exceed 76 characters, use soft breaks =\r\n + +TODO: Some files from word appear to write line extensions with bare equals: + +``` +*/ = [], split = encoded.split("\r\n"); + for(var si = 0; si < split.length; ++si) { + var str = split[si]; + if(str.length == 0) { o.push(""); continue; } + for(var i = 0; i < str.length;) { + var end = 76; + var tmp = str.slice(i, i + end); + if(tmp.charAt(end - 1) == "=") end --; + else if(tmp.charAt(end - 2) == "=") end -= 2; + else if(tmp.charAt(end - 3) == "=") end -= 3; + tmp = str.slice(i, i + end); + i += end; + if(i < str.length) tmp += "="; + o.push(tmp); + } + } + + return o.join("\r\n"); +} +function parse_quoted_printable(data/*:Array*/)/*:RawBytes*/ { + var o = []; + + /* unify long lines */ + for(var di = 0; di < data.length; ++di) { + var line = data[di]; + while(di <= data.length && line.charAt(line.length - 1) == "=") line = line.slice(0, line.length - 1) + data[++di]; + o.push(line); + } + + /* decode */ + for(var oi = 0; oi < o.length; ++oi) o[oi] = o[oi].replace(/[=][0-9A-Fa-f]{2}/g, function($$) { return String.fromCharCode(parseInt($$.slice(1), 16)); }); + return s2a(o.join("\r\n")); +} + + +function parse_mime(cfb/*:CFBContainer*/, data/*:Array*/, root/*:string*/)/*:void*/ { + var fname = "", cte = "", ctype = "", fdata; + var di = 0; + for(;di < 10; ++di) { + var line = data[di]; + if(!line || line.match(/^\s*$/)) break; + var m = line.match(/^(.*?):\s*([^\s].*)$/); + if(m) switch(m[1].toLowerCase()) { + case "content-location": fname = m[2].trim(); break; + case "content-type": ctype = m[2].trim(); break; + case "content-transfer-encoding": cte = m[2].trim(); break; + } + } + ++di; + switch(cte.toLowerCase()) { + case 'base64': fdata = s2a(Base64_decode(data.slice(di).join(""))); break; + case 'quoted-printable': fdata = parse_quoted_printable(data.slice(di)); break; + default: throw new Error("Unsupported Content-Transfer-Encoding " + cte); + } + var file = cfb_add(cfb, fname.slice(root.length), fdata, {unsafe: true}); + if(ctype) file.ctype = ctype; +} + +function parse_mad(file/*:RawBytes*/, options/*:CFBReadOpts*/)/*:CFBContainer*/ { + if(a2s(file.slice(0,13)).toLowerCase() != "mime-version:") throw new Error("Unsupported MAD header"); + var root = (options && options.root || ""); + // $FlowIgnore + var data = (has_buf && Buffer.isBuffer(file) ? file.toString("binary") : a2s(file)).split("\r\n"); + var di = 0, row = ""; + + /* if root is not specified, scan for the common prefix */ + for(di = 0; di < data.length; ++di) { + row = data[di]; + if(!/^Content-Location:/i.test(row)) continue; + row = row.slice(row.indexOf("file")); + if(!root) root = row.slice(0, row.lastIndexOf("/") + 1); + if(row.slice(0, root.length) == root) continue; + while(root.length > 0) { + root = root.slice(0, root.length - 1); + root = root.slice(0, root.lastIndexOf("/") + 1); + if(row.slice(0,root.length) == root) break; + } + } + + var mboundary = (data[1] || "").match(/boundary="(.*?)"/); + if(!mboundary) throw new Error("MAD cannot find boundary"); + var boundary = "--" + (mboundary[1] || ""); + + var FileIndex/*:CFBFileIndex*/ = [], FullPaths/*:Array*/ = []; + var o = { + FileIndex: FileIndex, + FullPaths: FullPaths + }; + init_cfb(o); + var start_di, fcnt = 0; + for(di = 0; di < data.length; ++di) { + var line = data[di]; + if(line !== boundary && line !== boundary + "--") continue; + if(fcnt++) parse_mime(o, data.slice(start_di, di), root); + start_di = di; + } + return o; +} + +function write_mad(cfb/*:CFBContainer*/, options/*:CFBWriteOpts*/)/*:string*/ { + var opts = options || {}; + var boundary = opts.boundary || "SheetJS"; + boundary = '------=' + boundary; + + var out = [ + 'MIME-Version: 1.0', + 'Content-Type: multipart/related; boundary="' + boundary.slice(2) + '"', + '', + '', + '' + ]; + + var root = cfb.FullPaths[0], fp = root, fi = cfb.FileIndex[0]; + for(var i = 1; i < cfb.FullPaths.length; ++i) { + fp = cfb.FullPaths[i].slice(root.length); + fi = cfb.FileIndex[i]; + if(!fi.size || !fi.content || fp == "\u0001Sh33tJ5") continue; + + /* Normalize filename */ + fp = fp.replace(/[\x00-\x08\x0B\x0C\x0E-\x1F\x7E-\xFF]/g, function(c) { + return "_x" + c.charCodeAt(0).toString(16) + "_"; + }).replace(/[\u0080-\uFFFF]/g, function(u) { + return "_u" + u.charCodeAt(0).toString(16) + "_"; + }); + + /* Extract content as binary string */ + var ca = fi.content; + // $FlowIgnore + var cstr = has_buf && Buffer.isBuffer(ca) ? ca.toString("binary") : a2s(ca); + + /* 4/5 of first 1024 chars ascii -> quoted printable, else base64 */ + var dispcnt = 0, L = Math.min(1024, cstr.length), cc = 0; + for(var csl = 0; csl <= L; ++csl) if((cc=cstr.charCodeAt(csl)) >= 0x20 && cc < 0x80) ++dispcnt; + var qp = dispcnt >= L * 4 / 5; + + out.push(boundary); + out.push('Content-Location: ' + (opts.root || 'file:///C:/SheetJS/') + fp); + out.push('Content-Transfer-Encoding: ' + (qp ? 'quoted-printable' : 'base64')); + out.push('Content-Type: ' + get_content_type(fi, fp)); + out.push(''); + + out.push(qp ? write_quoted_printable(cstr) : write_base64_76(cstr)); + } + out.push(boundary + '--\r\n'); + return out.join("\r\n"); +} +function cfb_new(opts/*:?any*/)/*:CFBContainer*/ { + var o/*:CFBContainer*/ = ({}/*:any*/); + init_cfb(o, opts); + return o; +} + +function cfb_add(cfb/*:CFBContainer*/, name/*:string*/, content/*:?RawBytes*/, opts/*:?any*/)/*:CFBEntry*/ { + var unsafe = opts && opts.unsafe; + if(!unsafe) init_cfb(cfb); + var file = !unsafe && CFB.find(cfb, name); + if(!file) { + var fpath/*:string*/ = cfb.FullPaths[0]; + if(name.slice(0, fpath.length) == fpath) fpath = name; + else { + if(fpath.slice(-1) != "/") fpath += "/"; + fpath = (fpath + name).replace("//","/"); + } + file = ({name: filename(name), type: 2}/*:any*/); + cfb.FileIndex.push(file); + cfb.FullPaths.push(fpath); + if(!unsafe) CFB.utils.cfb_gc(cfb); + } + /*:: if(!file) throw new Error("unreachable"); */ + file.content = (content/*:any*/); + file.size = content ? content.length : 0; + if(opts) { + if(opts.CLSID) file.clsid = opts.CLSID; + if(opts.mt) file.mt = opts.mt; + if(opts.ct) file.ct = opts.ct; + } + return file; +} + +function cfb_del(cfb/*:CFBContainer*/, name/*:string*/)/*:boolean*/ { + init_cfb(cfb); + var file = CFB.find(cfb, name); + if(file) for(var j = 0; j < cfb.FileIndex.length; ++j) if(cfb.FileIndex[j] == file) { + cfb.FileIndex.splice(j, 1); + cfb.FullPaths.splice(j, 1); + return true; + } + return false; +} + +function cfb_mov(cfb/*:CFBContainer*/, old_name/*:string*/, new_name/*:string*/)/*:boolean*/ { + init_cfb(cfb); + var file = CFB.find(cfb, old_name); + if(file) for(var j = 0; j < cfb.FileIndex.length; ++j) if(cfb.FileIndex[j] == file) { + cfb.FileIndex[j].name = filename(new_name); + cfb.FullPaths[j] = new_name; + return true; + } + return false; +} + +function cfb_gc(cfb/*:CFBContainer*/)/*:void*/ { rebuild_cfb(cfb, true); } + +exports.find = find; +exports.read = read; +exports.parse = parse; +exports.write = write; +exports.writeFile = write_file; +exports.utils = { + cfb_new: cfb_new, + cfb_add: cfb_add, + cfb_del: cfb_del, + cfb_mov: cfb_mov, + cfb_gc: cfb_gc, + ReadShift: ReadShift, + CheckField: CheckField, + prep_blob: prep_blob, + bconcat: bconcat, + use_zlib: use_zlib, + _deflateRaw: _deflate, + _inflateRaw: _inflate, + consts: consts +}; + +return exports; +})(); + +let _fs = void 0; +function set_fs(fs) { _fs = fs; } +export { set_fs }; + +/* normalize data for blob ctor */ +function blobify(data) { + if(typeof data === "string") return s2ab(data); + if(Array.isArray(data)) return a2u(data); + return data; +} +/* write or download file */ +function write_dl(fname/*:string*/, payload/*:any*/, enc/*:?string*/) { + /*global IE_SaveFile, Blob, navigator, saveAs, document, File, chrome */ + if(typeof _fs !== 'undefined' && _fs.writeFileSync) return enc ? _fs.writeFileSync(fname, payload, enc) : _fs.writeFileSync(fname, payload); + if(typeof Deno !== 'undefined') { + /* in this spot, it's safe to assume typed arrays and TextEncoder/TextDecoder exist */ + if(enc && typeof payload == "string") switch(enc) { + case "utf8": payload = new TextEncoder(enc).encode(payload); break; + case "binary": payload = s2ab(payload); break; + /* TODO: binary equivalent */ + default: throw new Error("Unsupported encoding " + enc); + } + return Deno.writeFileSync(fname, payload); + } + var data = (enc == "utf8") ? utf8write(payload) : payload; + /*:: declare var IE_SaveFile: any; */ + if(typeof IE_SaveFile !== 'undefined') return IE_SaveFile(data, fname); + if(typeof Blob !== 'undefined') { + var blob = new Blob([blobify(data)], {type:"application/octet-stream"}); + /*:: declare var navigator: any; */ + if(typeof navigator !== 'undefined' && navigator.msSaveBlob) return navigator.msSaveBlob(blob, fname); + /*:: declare var saveAs: any; */ + if(typeof saveAs !== 'undefined') return saveAs(blob, fname); + if(typeof URL !== 'undefined' && typeof document !== 'undefined' && document.createElement && URL.createObjectURL) { + var url = URL.createObjectURL(blob); + /*:: declare var chrome: any; */ + if(typeof chrome === 'object' && typeof (chrome.downloads||{}).download == "function") { + if(URL.revokeObjectURL && typeof setTimeout !== 'undefined') setTimeout(function() { URL.revokeObjectURL(url); }, 60000); + return chrome.downloads.download({ url: url, filename: fname, saveAs: true}); + } + var a = document.createElement("a"); + if(a.download != null) { + /*:: if(document.body == null) throw new Error("unreachable"); */ + a.download = fname; a.href = url; document.body.appendChild(a); a.click(); + /*:: if(document.body == null) throw new Error("unreachable"); */ document.body.removeChild(a); + if(URL.revokeObjectURL && typeof setTimeout !== 'undefined') setTimeout(function() { URL.revokeObjectURL(url); }, 60000); + return url; + } + } + } + // $FlowIgnore + if(typeof $ !== 'undefined' && typeof File !== 'undefined' && typeof Folder !== 'undefined') try { // extendscript + // $FlowIgnore + var out = File(fname); out.open("w"); out.encoding = "binary"; + if(Array.isArray(payload)) payload = a2s(payload); + out.write(payload); out.close(); return payload; + } catch(e) { if(!e.message || !e.message.match(/onstruct/)) throw e; } + throw new Error("cannot save file " + fname); +} + +/* read binary data from file */ +function read_binary(path/*:string*/) { + if(typeof _fs !== 'undefined') return _fs.readFileSync(path); + if(typeof Deno !== 'undefined') return Deno.readFileSync(path); + // $FlowIgnore + if(typeof $ !== 'undefined' && typeof File !== 'undefined' && typeof Folder !== 'undefined') try { // extendscript + // $FlowIgnore + var infile = File(path); infile.open("r"); infile.encoding = "binary"; + var data = infile.read(); infile.close(); + return data; + } catch(e) { if(!e.message || !e.message.match(/onstruct/)) throw e; } + throw new Error("Cannot access file " + path); +} +function keys(o/*:any*/)/*:Array*/ { + var ks = Object.keys(o), o2 = []; + for(var i = 0; i < ks.length; ++i) if(Object.prototype.hasOwnProperty.call(o, ks[i])) o2.push(ks[i]); + return o2; +} + +function evert_key(obj/*:any*/, key/*:string*/)/*:EvertType*/ { + var o = ([]/*:any*/), K = keys(obj); + for(var i = 0; i !== K.length; ++i) if(o[obj[K[i]][key]] == null) o[obj[K[i]][key]] = K[i]; + return o; +} + +function evert(obj/*:any*/)/*:EvertType*/ { + var o = ([]/*:any*/), K = keys(obj); + for(var i = 0; i !== K.length; ++i) o[obj[K[i]]] = K[i]; + return o; +} + +function evert_num(obj/*:any*/)/*:EvertNumType*/ { + var o = ([]/*:any*/), K = keys(obj); + for(var i = 0; i !== K.length; ++i) o[obj[K[i]]] = parseInt(K[i],10); + return o; +} + +function evert_arr(obj/*:any*/)/*:EvertArrType*/ { + var o/*:EvertArrType*/ = ([]/*:any*/), K = keys(obj); + for(var i = 0; i !== K.length; ++i) { + if(o[obj[K[i]]] == null) o[obj[K[i]]] = []; + o[obj[K[i]]].push(K[i]); + } + return o; +} + +var basedate = /*#__PURE__*/new Date(1899, 11, 30, 0, 0, 0); // 2209161600000 +function datenum(v/*:Date*/, date1904/*:?boolean*/)/*:number*/ { + var epoch = /*#__PURE__*/v.getTime(); + if(date1904) epoch -= 1462*24*60*60*1000; + var dnthresh = /*#__PURE__*/basedate.getTime() + (/*#__PURE__*/v.getTimezoneOffset() - /*#__PURE__*/basedate.getTimezoneOffset()) * 60000; + return (epoch - dnthresh) / (24 * 60 * 60 * 1000); +} +var refdate = /*#__PURE__*/new Date(); +var dnthresh = /*#__PURE__*/basedate.getTime() + (/*#__PURE__*/refdate.getTimezoneOffset() - /*#__PURE__*/basedate.getTimezoneOffset()) * 60000; +var refoffset = /*#__PURE__*/refdate.getTimezoneOffset(); +function numdate(v/*:number*/)/*:Date*/ { + var out = new Date(); + out.setTime(v * 24 * 60 * 60 * 1000 + dnthresh); + if (out.getTimezoneOffset() !== refoffset) { + out.setTime(out.getTime() + (out.getTimezoneOffset() - refoffset) * 60000); + } + return out; +} + +/* ISO 8601 Duration */ +function parse_isodur(s) { + var sec = 0, mt = 0, time = false; + var m = s.match(/P([0-9\.]+Y)?([0-9\.]+M)?([0-9\.]+D)?T([0-9\.]+H)?([0-9\.]+M)?([0-9\.]+S)?/); + if(!m) throw new Error("|" + s + "| is not an ISO8601 Duration"); + for(var i = 1; i != m.length; ++i) { + if(!m[i]) continue; + mt = 1; + if(i > 3) time = true; + switch(m[i].slice(m[i].length-1)) { + case 'Y': + throw new Error("Unsupported ISO Duration Field: " + m[i].slice(m[i].length-1)); + case 'D': mt *= 24; + /* falls through */ + case 'H': mt *= 60; + /* falls through */ + case 'M': + if(!time) throw new Error("Unsupported ISO Duration Field: M"); + else mt *= 60; + /* falls through */ + case 'S': break; + } + sec += mt * parseInt(m[i], 10); + } + return sec; +} + +var good_pd_date_1 = /*#__PURE__*/new Date('2017-02-19T19:06:09.000Z'); +var good_pd_date = /*#__PURE__*/isNaN(/*#__PURE__*/good_pd_date_1.getFullYear()) ? /*#__PURE__*/new Date('2/19/17') : good_pd_date_1; +var good_pd = /*#__PURE__*/good_pd_date.getFullYear() == 2017; +/* parses a date as a local date */ +function parseDate(str/*:string|Date*/, fixdate/*:?number*/)/*:Date*/ { + var d = new Date(str); + if(good_pd) { + /*:: if(fixdate == null) fixdate = 0; */ + if(fixdate > 0) d.setTime(d.getTime() + d.getTimezoneOffset() * 60 * 1000); + else if(fixdate < 0) d.setTime(d.getTime() - d.getTimezoneOffset() * 60 * 1000); + return d; + } + if(str instanceof Date) return str; + if(good_pd_date.getFullYear() == 1917 && !isNaN(d.getFullYear())) { + var s = d.getFullYear(); + if(str.indexOf("" + s) > -1) return d; + d.setFullYear(d.getFullYear() + 100); return d; + } + var n = str.match(/\d+/g)||["2017","2","19","0","0","0"]; + var out = new Date(+n[0], +n[1] - 1, +n[2], (+n[3]||0), (+n[4]||0), (+n[5]||0)); + if(str.indexOf("Z") > -1) out = new Date(out.getTime() - out.getTimezoneOffset() * 60 * 1000); + return out; +} + +function cc2str(arr/*:Array*/, debomit)/*:string*/ { + if(has_buf && Buffer.isBuffer(arr)) { + if(debomit) { + if(arr[0] == 0xFF && arr[1] == 0xFE) return utf8write(arr.slice(2).toString("utf16le")); + if(arr[1] == 0xFE && arr[2] == 0xFF) return utf8write(utf16beread(arr.slice(2).toString("binary"))); + } + return arr.toString("binary"); + } + + if(typeof TextDecoder !== "undefined") try { + if(debomit) { + if(arr[0] == 0xFF && arr[1] == 0xFE) return utf8write(new TextDecoder("utf-16le").decode(arr.slice(2))); + if(arr[0] == 0xFE && arr[1] == 0xFF) return utf8write(new TextDecoder("utf-16be").decode(arr.slice(2))); + } + var rev = { + "\u20ac": "\x80", "\u201a": "\x82", "\u0192": "\x83", "\u201e": "\x84", + "\u2026": "\x85", "\u2020": "\x86", "\u2021": "\x87", "\u02c6": "\x88", + "\u2030": "\x89", "\u0160": "\x8a", "\u2039": "\x8b", "\u0152": "\x8c", + "\u017d": "\x8e", "\u2018": "\x91", "\u2019": "\x92", "\u201c": "\x93", + "\u201d": "\x94", "\u2022": "\x95", "\u2013": "\x96", "\u2014": "\x97", + "\u02dc": "\x98", "\u2122": "\x99", "\u0161": "\x9a", "\u203a": "\x9b", + "\u0153": "\x9c", "\u017e": "\x9e", "\u0178": "\x9f" + }; + if(Array.isArray(arr)) arr = new Uint8Array(arr); + return new TextDecoder("latin1").decode(arr).replace(/[€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ]/g, function(c) { return rev[c] || c; }); + } catch(e) {} + + var o = []; + for(var i = 0; i != arr.length; ++i) o.push(String.fromCharCode(arr[i])); + return o.join(""); +} + +function dup(o/*:any*/)/*:any*/ { + if(typeof JSON != 'undefined' && !Array.isArray(o)) return JSON.parse(JSON.stringify(o)); + if(typeof o != 'object' || o == null) return o; + if(o instanceof Date) return new Date(o.getTime()); + var out = {}; + for(var k in o) if(Object.prototype.hasOwnProperty.call(o, k)) out[k] = dup(o[k]); + return out; +} + +function fill(c/*:string*/,l/*:number*/)/*:string*/ { var o = ""; while(o.length < l) o+=c; return o; } + +/* TODO: stress test */ +function fuzzynum(s/*:string*/)/*:number*/ { + var v/*:number*/ = Number(s); + if(!isNaN(v)) return isFinite(v) ? v : NaN; + if(!/\d/.test(s)) return v; + var wt = 1; + var ss = s.replace(/([\d]),([\d])/g,"$1$2").replace(/[$]/g,"").replace(/[%]/g, function() { wt *= 100; return "";}); + if(!isNaN(v = Number(ss))) return v / wt; + ss = ss.replace(/[(](.*)[)]/,function($$, $1) { wt = -wt; return $1;}); + if(!isNaN(v = Number(ss))) return v / wt; + return v; +} +var lower_months = ['january', 'february', 'march', 'april', 'may', 'june', 'july', 'august', 'september', 'october', 'november', 'december']; +function fuzzydate(s/*:string*/)/*:Date*/ { + var o = new Date(s), n = new Date(NaN); + var y = o.getYear(), m = o.getMonth(), d = o.getDate(); + if(isNaN(d)) return n; + var lower = s.toLowerCase(); + if(lower.match(/jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec/)) { + lower = lower.replace(/[^a-z]/g,"").replace(/([^a-z]|^)[ap]m?([^a-z]|$)/,""); + if(lower.length > 3 && lower_months.indexOf(lower) == -1) return n; + } else if(lower.match(/[a-z]/)) return n; + if(y < 0 || y > 8099) return n; + if((m > 0 || d > 1) && y != 101) return o; + if(s.match(/[^-0-9:,\/\\]/)) return n; + return o; +} + +var split_regex = /*#__PURE__*/(function() { + var safe_split_regex = "abacaba".split(/(:?b)/i).length == 5; + return function split_regex(str/*:string*/, re, def/*:string*/)/*:Array*/ { + if(safe_split_regex || typeof re == "string") return str.split(re); + var p = str.split(re), o = [p[0]]; + for(var i = 1; i < p.length; ++i) { o.push(def); o.push(p[i]); } + return o; + }; +})(); +function getdatastr(data)/*:?string*/ { + if(!data) return null; + if(data.content && data.type) return cc2str(data.content, true); + if(data.data) return debom(data.data); + if(data.asNodeBuffer && has_buf) return debom(data.asNodeBuffer().toString('binary')); + if(data.asBinary) return debom(data.asBinary()); + if(data._data && data._data.getContent) return debom(cc2str(Array.prototype.slice.call(data._data.getContent(),0))); + return null; +} + +function getdatabin(data) { + if(!data) return null; + if(data.data) return char_codes(data.data); + if(data.asNodeBuffer && has_buf) return data.asNodeBuffer(); + if(data._data && data._data.getContent) { + var o = data._data.getContent(); + if(typeof o == "string") return char_codes(o); + return Array.prototype.slice.call(o); + } + if(data.content && data.type) return data.content; + return null; +} + +function getdata(data) { return (data && data.name.slice(-4) === ".bin") ? getdatabin(data) : getdatastr(data); } + +/* Part 2 Section 10.1.2 "Mapping Content Types" Names are case-insensitive */ +/* OASIS does not comment on filename case sensitivity */ +function safegetzipfile(zip, file/*:string*/) { + var k = zip.FullPaths || keys(zip.files); + var f = file.toLowerCase().replace(/[\/]/g, '\\'), g = f.replace(/\\/g,'\/'); + for(var i=0; i\/]+)\s*=\s*((?:")([^"]*)(?:")|(?:')([^']*)(?:')|([^'">\s]+))/g; +var tagregex1=/<[\/\?]?[a-zA-Z0-9:_-]+(?:\s+[^"\s?>\/]+\s*=\s*(?:"[^"]*"|'[^']*'|[^'">\s=]+))*\s*[\/\?]?>/mg, tagregex2 = /<[^>]*>/g; +var tagregex = /*#__PURE__*/XML_HEADER.match(tagregex1) ? tagregex1 : tagregex2; +var nsregex=/<\w*:/, nsregex2 = /<(\/?)\w+:/; +function parsexmltag(tag/*:string*/, skip_root/*:?boolean*/, skip_LC/*:?boolean*/)/*:any*/ { + var z = ({}/*:any*/); + var eq = 0, c = 0; + for(; eq !== tag.length; ++eq) if((c = tag.charCodeAt(eq)) === 32 || c === 10 || c === 13) break; + if(!skip_root) z[0] = tag.slice(0, eq); + if(eq === tag.length) return z; + var m = tag.match(attregexg), j=0, v="", i=0, q="", cc="", quot = 1; + if(m) for(i = 0; i != m.length; ++i) { + cc = m[i]; + for(c=0; c != cc.length; ++c) if(cc.charCodeAt(c) === 61) break; + q = cc.slice(0,c).trim(); + while(cc.charCodeAt(c+1) == 32) ++c; + quot = ((eq=cc.charCodeAt(c+1)) == 34 || eq == 39) ? 1 : 0; + v = cc.slice(c+1+quot, cc.length-quot); + for(j=0;j!=q.length;++j) if(q.charCodeAt(j) === 58) break; + if(j===q.length) { + if(q.indexOf("_") > 0) q = q.slice(0, q.indexOf("_")); // from ods + z[q] = v; + if(!skip_LC) z[q.toLowerCase()] = v; + } + else { + var k = (j===5 && q.slice(0,5)==="xmlns"?"xmlns":"")+q.slice(j+1); + if(z[k] && q.slice(j-3,j) == "ext") continue; // from ods + z[k] = v; + if(!skip_LC) z[k.toLowerCase()] = v; + } + } + return z; +} +function strip_ns(x/*:string*/)/*:string*/ { return x.replace(nsregex2, "<$1"); } + +var encodings = { + '"': '"', + ''': "'", + '>': '>', + '<': '<', + '&': '&' +}; +var rencoding = /*#__PURE__*/evert(encodings); +//var rencstr = "&<>'\"".split(""); + +// TODO: CP remap (need to read file version to determine OS) +var unescapexml/*:StringConv*/ = /*#__PURE__*/(function() { + /* 22.4.2.4 bstr (Basic String) */ + var encregex = /&(?:quot|apos|gt|lt|amp|#x?([\da-fA-F]+));/ig, coderegex = /_x([\da-fA-F]{4})_/ig; + return function unescapexml(text/*:string*/)/*:string*/ { + var s = text + '', i = s.indexOf("-1?16:10))||$$; }).replace(coderegex,function(m,c) {return String.fromCharCode(parseInt(c,16));}); + var j = s.indexOf("]]>"); + return unescapexml(s.slice(0, i)) + s.slice(i+9,j) + unescapexml(s.slice(j+3)); + }; +})(); + +var decregex=/[&<>'"]/g, charegex = /[\u0000-\u0008\u000b-\u001f]/g; +function escapexml(text/*:string*/)/*:string*/{ + var s = text + ''; + return s.replace(decregex, function(y) { return rencoding[y]; }).replace(charegex,function(s) { return "_x" + ("000"+s.charCodeAt(0).toString(16)).slice(-4) + "_";}); +} +function escapexmltag(text/*:string*/)/*:string*/{ return escapexml(text).replace(/ /g,"_x0020_"); } + +var htmlcharegex = /[\u0000-\u001f]/g; +function escapehtml(text/*:string*/)/*:string*/{ + var s = text + ''; + return s.replace(decregex, function(y) { return rencoding[y]; }).replace(/\n/g, "
").replace(htmlcharegex,function(s) { return "&#x" + ("000"+s.charCodeAt(0).toString(16)).slice(-4) + ";"; }); +} + +function escapexlml(text/*:string*/)/*:string*/{ + var s = text + ''; + return s.replace(decregex, function(y) { return rencoding[y]; }).replace(htmlcharegex,function(s) { return "&#x" + (s.charCodeAt(0).toString(16)).toUpperCase() + ";"; }); +} + +/* TODO: handle codepages */ +var xlml_fixstr/*:StringConv*/ = /*#__PURE__*/(function() { + var entregex = /&#(\d+);/g; + function entrepl($$/*:string*/,$1/*:string*/)/*:string*/ { return String.fromCharCode(parseInt($1,10)); } + return function xlml_fixstr(str/*:string*/)/*:string*/ { return str.replace(entregex,entrepl); }; +})(); +function xlml_unfixstr(str/*:string*/)/*:string*/ { return str.replace(/(\r\n|[\r\n])/g,"\ "); } + +function parsexmlbool(value/*:any*/)/*:boolean*/ { + switch(value) { + case 1: case true: case '1': case 'true': case 'TRUE': return true; + /* case '0': case 'false': case 'FALSE':*/ + default: return false; + } +} + +function utf8reada(orig/*:string*/)/*:string*/ { + var out = "", i = 0, c = 0, d = 0, e = 0, f = 0, w = 0; + while (i < orig.length) { + c = orig.charCodeAt(i++); + if (c < 128) { out += String.fromCharCode(c); continue; } + d = orig.charCodeAt(i++); + if (c>191 && c<224) { f = ((c & 31) << 6); f |= (d & 63); out += String.fromCharCode(f); continue; } + e = orig.charCodeAt(i++); + if (c < 240) { out += String.fromCharCode(((c & 15) << 12) | ((d & 63) << 6) | (e & 63)); continue; } + f = orig.charCodeAt(i++); + w = (((c & 7) << 18) | ((d & 63) << 12) | ((e & 63) << 6) | (f & 63))-65536; + out += String.fromCharCode(0xD800 + ((w>>>10)&1023)); + out += String.fromCharCode(0xDC00 + (w&1023)); + } + return out; +} + +function utf8readb(data) { + var out = new_raw_buf(2*data.length), w, i, j = 1, k = 0, ww=0, c; + for(i = 0; i < data.length; i+=j) { + j = 1; + if((c=data.charCodeAt(i)) < 128) w = c; + else if(c < 224) { w = (c&31)*64+(data.charCodeAt(i+1)&63); j=2; } + else if(c < 240) { w=(c&15)*4096+(data.charCodeAt(i+1)&63)*64+(data.charCodeAt(i+2)&63); j=3; } + else { j = 4; + w = (c & 7)*262144+(data.charCodeAt(i+1)&63)*4096+(data.charCodeAt(i+2)&63)*64+(data.charCodeAt(i+3)&63); + w -= 65536; ww = 0xD800 + ((w>>>10)&1023); w = 0xDC00 + (w&1023); + } + if(ww !== 0) { out[k++] = ww&255; out[k++] = ww>>>8; ww = 0; } + out[k++] = w%256; out[k++] = w>>>8; + } + return out.slice(0,k).toString('ucs2'); +} + +function utf8readc(data) { return Buffer_from(data, 'binary').toString('utf8'); } + +var utf8corpus = "foo bar baz\u00e2\u0098\u0083\u00f0\u009f\u008d\u00a3"; +var utf8read = has_buf && (/*#__PURE__*/utf8readc(utf8corpus) == /*#__PURE__*/utf8reada(utf8corpus) && utf8readc || /*#__PURE__*/utf8readb(utf8corpus) == /*#__PURE__*/utf8reada(utf8corpus) && utf8readb) || utf8reada; + +var utf8write/*:StringConv*/ = has_buf ? function(data) { return Buffer_from(data, 'utf8').toString("binary"); } : function(orig/*:string*/)/*:string*/ { + var out/*:Array*/ = [], i = 0, c = 0, d = 0; + while(i < orig.length) { + c = orig.charCodeAt(i++); + switch(true) { + case c < 128: out.push(String.fromCharCode(c)); break; + case c < 2048: + out.push(String.fromCharCode(192 + (c >> 6))); + out.push(String.fromCharCode(128 + (c & 63))); + break; + case c >= 55296 && c < 57344: + c -= 55296; d = orig.charCodeAt(i++) - 56320 + (c<<10); + out.push(String.fromCharCode(240 + ((d >>18) & 7))); + out.push(String.fromCharCode(144 + ((d >>12) & 63))); + out.push(String.fromCharCode(128 + ((d >> 6) & 63))); + out.push(String.fromCharCode(128 + (d & 63))); + break; + default: + out.push(String.fromCharCode(224 + (c >> 12))); + out.push(String.fromCharCode(128 + ((c >> 6) & 63))); + out.push(String.fromCharCode(128 + (c & 63))); + } + } + return out.join(""); +}; + +// matches ... extracts content +var matchtag = /*#__PURE__*/(function() { + var mtcache/*:{[k:string]:RegExp}*/ = ({}/*:any*/); + return function matchtag(f/*:string*/,g/*:?string*/)/*:RegExp*/ { + var t = f+"|"+(g||""); + if(mtcache[t]) return mtcache[t]; + return (mtcache[t] = new RegExp('<(?:\\w+:)?'+f+'(?: xml:space="preserve")?(?:[^>]*)>([\\s\\S]*?)',((g||"")/*:any*/))); + }; +})(); + +var htmldecode/*:{(s:string):string}*/ = /*#__PURE__*/(function() { + var entities/*:Array<[RegExp, string]>*/ = [ + ['nbsp', ' '], ['middot', '·'], + ['quot', '"'], ['apos', "'"], ['gt', '>'], ['lt', '<'], ['amp', '&'] + ].map(function(x/*:[string, string]*/) { return [new RegExp('&' + x[0] + ';', "ig"), x[1]]; }); + return function htmldecode(str/*:string*/)/*:string*/ { + var o = str + // Remove new lines and spaces from start of content + .replace(/^[\t\n\r ]+/, "") + // Remove new lines and spaces from end of content + .replace(/[\t\n\r ]+$/,"") + // Added line which removes any white space characters after and before html tags + .replace(/>\s+/g,">").replace(/\s+ tags with new lines + .replace(/<\s*[bB][rR]\s*\/?>/g,"\n") + // Strip HTML elements + .replace(/<[^>]*>/g,""); + for(var i = 0; i < entities.length; ++i) o = o.replace(entities[i][0], entities[i][1]); + return o; + }; +})(); + +var vtregex = /*#__PURE__*/(function(){ var vt_cache = {}; + return function vt_regex(bt) { + if(vt_cache[bt] !== undefined) return vt_cache[bt]; + return (vt_cache[bt] = new RegExp("<(?:vt:)?" + bt + ">([\\s\\S]*?)", 'g') ); +};})(); +var vtvregex = /<\/?(?:vt:)?variant>/g, vtmregex = /<(?:vt:)([^>]*)>([\s\S]*)*/ { + var h = parsexmltag(data); + + var matches/*:Array*/ = data.match(vtregex(h.baseType))||[]; + var res/*:Array*/ = []; + if(matches.length != h.size) { + if(opts.WTF) throw new Error("unexpected vector length " + matches.length + " != " + h.size); + return res; + } + matches.forEach(function(x/*:string*/) { + var v = x.replace(vtvregex,"").match(vtmregex); + if(v) res.push({v:utf8read(v[2]), t:v[1]}); + }); + return res; +} + +var wtregex = /(^\s|\s$|\n)/; +function writetag(f/*:string*/,g/*:string*/)/*:string*/ { return '<' + f + (g.match(wtregex)?' xml:space="preserve"' : "") + '>' + g + ''; } + +function wxt_helper(h)/*:string*/ { return keys(h).map(function(k) { return " " + k + '="' + h[k] + '"';}).join(""); } +function writextag(f/*:string*/,g/*:?string*/,h) { return '<' + f + ((h != null) ? wxt_helper(h) : "") + ((g != null) ? (g.match(wtregex)?' xml:space="preserve"' : "") + '>' + g + '';} + +function write_w3cdtf(d/*:Date*/, t/*:?boolean*/)/*:string*/ { try { return d.toISOString().replace(/\.\d*/,""); } catch(e) { if(t) throw e; } return ""; } + +function write_vt(s, xlsx/*:?boolean*/)/*:string*/ { + switch(typeof s) { + case 'string': + var o = writextag('vt:lpwstr', escapexml(s)); + if(xlsx) o = o.replace(/"/g, "_x0022_"); + return o; + case 'number': return writextag((s|0)==s?'vt:i4':'vt:r8', escapexml(String(s))); + case 'boolean': return writextag('vt:bool',s?'true':'false'); + } + if(s instanceof Date) return writextag('vt:filetime', write_w3cdtf(s)); + throw new Error("Unable to serialize " + s); +} + +function xlml_normalize(d)/*:string*/ { + if(has_buf &&/*::typeof Buffer !== "undefined" && d != null && d instanceof Buffer &&*/ Buffer.isBuffer(d)) return d.toString('utf8'); + if(typeof d === 'string') return d; + /* duktape */ + if(typeof Uint8Array !== 'undefined' && d instanceof Uint8Array) return utf8read(a2s(ab2a(d))); + throw new Error("Bad input format: expected Buffer or string"); +} +/* UOS uses CJK in tags */ +var xlmlregex = /<(\/?)([^\s?>:\/]+)(?:[\s?:\/][^>]*)?>/mg; +//var xlmlregex = /<(\/?)([a-z0-9]*:|)(\w+)[^>]*>/mg; + +var XMLNS = ({ + CORE_PROPS: 'http://schemas.openxmlformats.org/package/2006/metadata/core-properties', + CUST_PROPS: "http://schemas.openxmlformats.org/officeDocument/2006/custom-properties", + EXT_PROPS: "http://schemas.openxmlformats.org/officeDocument/2006/extended-properties", + CT: 'http://schemas.openxmlformats.org/package/2006/content-types', + RELS: 'http://schemas.openxmlformats.org/package/2006/relationships', + TCMNT: 'http://schemas.microsoft.com/office/spreadsheetml/2018/threadedcomments', + 'dc': 'http://purl.org/dc/elements/1.1/', + 'dcterms': 'http://purl.org/dc/terms/', + 'dcmitype': 'http://purl.org/dc/dcmitype/', + 'mx': 'http://schemas.microsoft.com/office/mac/excel/2008/main', + 'r': 'http://schemas.openxmlformats.org/officeDocument/2006/relationships', + 'sjs': 'http://schemas.openxmlformats.org/package/2006/sheetjs/core-properties', + 'vt': 'http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes', + 'xsi': 'http://www.w3.org/2001/XMLSchema-instance', + 'xsd': 'http://www.w3.org/2001/XMLSchema' +}/*:any*/); + +var XMLNS_main = [ + 'http://schemas.openxmlformats.org/spreadsheetml/2006/main', + 'http://purl.oclc.org/ooxml/spreadsheetml/main', + 'http://schemas.microsoft.com/office/excel/2006/main', + 'http://schemas.microsoft.com/office/excel/2006/2' +]; + +var XLMLNS = ({ + 'o': 'urn:schemas-microsoft-com:office:office', + 'x': 'urn:schemas-microsoft-com:office:excel', + 'ss': 'urn:schemas-microsoft-com:office:spreadsheet', + 'dt': 'uuid:C2F41010-65B3-11d1-A29F-00AA00C14882', + 'mv': 'http://macVmlSchemaUri', + 'v': 'urn:schemas-microsoft-com:vml', + 'html': 'http://www.w3.org/TR/REC-html40' +}/*:any*/); +function read_double_le(b/*:RawBytes|CFBlob*/, idx/*:number*/)/*:number*/ { + var s = 1 - 2 * (b[idx + 7] >>> 7); + var e = ((b[idx + 7] & 0x7f) << 4) + ((b[idx + 6] >>> 4) & 0x0f); + var m = (b[idx+6]&0x0f); + for(var i = 5; i >= 0; --i) m = m * 256 + b[idx + i]; + if(e == 0x7ff) return m == 0 ? (s * Infinity) : NaN; + if(e == 0) e = -1022; + else { e -= 1023; m += Math.pow(2,52); } + return s * Math.pow(2, e - 52) * m; +} + +function write_double_le(b/*:RawBytes|CFBlob*/, v/*:number*/, idx/*:number*/) { + var bs = ((((v < 0) || (1/v == -Infinity)) ? 1 : 0) << 7), e = 0, m = 0; + var av = bs ? (-v) : v; + if(!isFinite(av)) { e = 0x7ff; m = isNaN(v) ? 0x6969 : 0; } + else if(av == 0) e = m = 0; + else { + e = Math.floor(Math.log(av) / Math.LN2); + m = av * Math.pow(2, 52 - e); + if((e <= -1023) && (!isFinite(m) || (m < Math.pow(2,52)))) { e = -1022; } + else { m -= Math.pow(2,52); e+=1023; } + } + for(var i = 0; i <= 5; ++i, m/=256) b[idx + i] = m & 0xff; + b[idx + 6] = ((e & 0x0f) << 4) | (m & 0xf); + b[idx + 7] = (e >> 4) | bs; +} + +var ___toBuffer = function(bufs/*:Array >*/)/*:RawBytes*/ { var x=[],w=10240; for(var i=0;i 0 && Buffer.isBuffer(bufs[0][0])) ? Buffer.concat(bufs[0].map(function(x) { return Buffer.isBuffer(x) ? x : Buffer_from(x); })) : ___toBuffer(bufs);} : ___toBuffer; + +var ___utf16le = function(b/*:RawBytes|CFBlob*/,s/*:number*/,e/*:number*/)/*:string*/ { var ss/*:Array*/=[]; for(var i=s; i*/=[]; for(var i=s; i 0 ? __utf8(b, i+4,i+4+len-1) : "";}; +var __lpstr = ___lpstr; + +var ___cpstr = function(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = __readUInt32LE(b,i); return len > 0 ? __utf8(b, i+4,i+4+len-1) : "";}; +var __cpstr = ___cpstr; + +var ___lpwstr = function(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = 2*__readUInt32LE(b,i); return len > 0 ? __utf8(b, i+4,i+4+len-1) : "";}; +var __lpwstr = ___lpwstr; + +var ___lpp4 = function lpp4_(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = __readUInt32LE(b,i); return len > 0 ? __utf16le(b, i+4,i+4+len) : "";}; +var __lpp4 = ___lpp4; + +var ___8lpp4 = function(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = __readUInt32LE(b,i); return len > 0 ? __utf8(b, i+4,i+4+len) : "";}; +var __8lpp4 = ___8lpp4; + +var ___double = function(b/*:RawBytes|CFBlob*/, idx/*:number*/) { return read_double_le(b, idx);}; +var __double = ___double; + +var is_buf = function is_buf_a(a) { return Array.isArray(a) || (typeof Uint8Array !== "undefined" && a instanceof Uint8Array); }; + +if(has_buf/*:: && typeof Buffer !== 'undefined'*/) { + __lpstr = function lpstr_b(b/*:RawBytes|CFBlob*/, i/*:number*/) { if(!Buffer.isBuffer(b)/*:: || !(b instanceof Buffer)*/) return ___lpstr(b, i); var len = b.readUInt32LE(i); return len > 0 ? b.toString('utf8',i+4,i+4+len-1) : "";}; + __cpstr = function cpstr_b(b/*:RawBytes|CFBlob*/, i/*:number*/) { if(!Buffer.isBuffer(b)/*:: || !(b instanceof Buffer)*/) return ___cpstr(b, i); var len = b.readUInt32LE(i); return len > 0 ? b.toString('utf8',i+4,i+4+len-1) : "";}; + __lpwstr = function lpwstr_b(b/*:RawBytes|CFBlob*/, i/*:number*/) { if(!Buffer.isBuffer(b)/*:: || !(b instanceof Buffer)*/) return ___lpwstr(b, i); var len = 2*b.readUInt32LE(i); return b.toString('utf16le',i+4,i+4+len-1);}; + __lpp4 = function lpp4_b(b/*:RawBytes|CFBlob*/, i/*:number*/) { if(!Buffer.isBuffer(b)/*:: || !(b instanceof Buffer)*/) return ___lpp4(b, i); var len = b.readUInt32LE(i); return b.toString('utf16le',i+4,i+4+len);}; + __8lpp4 = function lpp4_8b(b/*:RawBytes|CFBlob*/, i/*:number*/) { if(!Buffer.isBuffer(b)/*:: || !(b instanceof Buffer)*/) return ___8lpp4(b, i); var len = b.readUInt32LE(i); return b.toString('utf8',i+4,i+4+len);}; + __double = function double_(b/*:RawBytes|CFBlob*/, i/*:number*/) { if(Buffer.isBuffer(b)/*::&& b instanceof Buffer*/) return b.readDoubleLE(i); return ___double(b,i); }; + is_buf = function is_buf_b(a) { return Buffer.isBuffer(a) || Array.isArray(a) || (typeof Uint8Array !== "undefined" && a instanceof Uint8Array); }; +} + +/* from js-xls */ +function cpdoit() { + __utf16le = function(b/*:RawBytes|CFBlob*/,s/*:number*/,e/*:number*/) { return $cptable.utils.decode(1200, b.slice(s,e)).replace(chr0, ''); }; + __utf8 = function(b/*:RawBytes|CFBlob*/,s/*:number*/,e/*:number*/) { return $cptable.utils.decode(65001, b.slice(s,e)); }; + __lpstr = function(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = __readUInt32LE(b,i); return len > 0 ? $cptable.utils.decode(current_ansi, b.slice(i+4, i+4+len-1)) : "";}; + __cpstr = function(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = __readUInt32LE(b,i); return len > 0 ? $cptable.utils.decode(current_codepage, b.slice(i+4, i+4+len-1)) : "";}; + __lpwstr = function(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = 2*__readUInt32LE(b,i); return len > 0 ? $cptable.utils.decode(1200, b.slice(i+4,i+4+len-1)) : "";}; + __lpp4 = function(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = __readUInt32LE(b,i); return len > 0 ? $cptable.utils.decode(1200, b.slice(i+4,i+4+len)) : "";}; + __8lpp4 = function(b/*:RawBytes|CFBlob*/,i/*:number*/) { var len = __readUInt32LE(b,i); return len > 0 ? $cptable.utils.decode(65001, b.slice(i+4,i+4+len)) : "";}; +} +if(typeof $cptable !== 'undefined') cpdoit(); + +var __readUInt8 = function(b/*:RawBytes|CFBlob*/, idx/*:number*/)/*:number*/ { return b[idx]; }; +var __readUInt16LE = function(b/*:RawBytes|CFBlob*/, idx/*:number*/)/*:number*/ { return (b[idx+1]*(1<<8))+b[idx]; }; +var __readInt16LE = function(b/*:RawBytes|CFBlob*/, idx/*:number*/)/*:number*/ { var u = (b[idx+1]*(1<<8))+b[idx]; return (u < 0x8000) ? u : ((0xffff - u + 1) * -1); }; +var __readUInt32LE = function(b/*:RawBytes|CFBlob*/, idx/*:number*/)/*:number*/ { return b[idx+3]*(1<<24)+(b[idx+2]<<16)+(b[idx+1]<<8)+b[idx]; }; +var __readInt32LE = function(b/*:RawBytes|CFBlob*/, idx/*:number*/)/*:number*/ { return (b[idx+3]<<24)|(b[idx+2]<<16)|(b[idx+1]<<8)|b[idx]; }; +var __readInt32BE = function(b/*:RawBytes|CFBlob*/, idx/*:number*/)/*:number*/ { return (b[idx]<<24)|(b[idx+1]<<16)|(b[idx+2]<<8)|b[idx+3]; }; + +function ReadShift(size/*:number*/, t/*:?string*/)/*:number|string*/ { + var o="", oI/*:: :number = 0*/, oR, oo=[], w, vv, i, loc; + switch(t) { + case 'dbcs': + loc = this.l; + if(has_buf && Buffer.isBuffer(this)) o = this.slice(this.l, this.l+2*size).toString("utf16le"); + else for(i = 0; i < size; ++i) { o+=String.fromCharCode(__readUInt16LE(this, loc)); loc+=2; } + size *= 2; + break; + + case 'utf8': o = __utf8(this, this.l, this.l + size); break; + case 'utf16le': size *= 2; o = __utf16le(this, this.l, this.l + size); break; + + case 'wstr': + if(typeof $cptable !== 'undefined') o = $cptable.utils.decode(current_codepage, this.slice(this.l, this.l+2*size)); + else return ReadShift.call(this, size, 'dbcs'); + size = 2 * size; break; + + /* [MS-OLEDS] 2.1.4 LengthPrefixedAnsiString */ + case 'lpstr-ansi': o = __lpstr(this, this.l); size = 4 + __readUInt32LE(this, this.l); break; + case 'lpstr-cp': o = __cpstr(this, this.l); size = 4 + __readUInt32LE(this, this.l); break; + /* [MS-OLEDS] 2.1.5 LengthPrefixedUnicodeString */ + case 'lpwstr': o = __lpwstr(this, this.l); size = 4 + 2 * __readUInt32LE(this, this.l); break; + /* [MS-OFFCRYPTO] 2.1.2 Length-Prefixed Padded Unicode String (UNICODE-LP-P4) */ + case 'lpp4': size = 4 + __readUInt32LE(this, this.l); o = __lpp4(this, this.l); if(size & 0x02) size += 2; break; + /* [MS-OFFCRYPTO] 2.1.3 Length-Prefixed UTF-8 String (UTF-8-LP-P4) */ + case '8lpp4': size = 4 + __readUInt32LE(this, this.l); o = __8lpp4(this, this.l); if(size & 0x03) size += 4 - (size & 0x03); break; + + case 'cstr': size = 0; o = ""; + while((w=__readUInt8(this, this.l + size++))!==0) oo.push(_getchar(w)); + o = oo.join(""); break; + case '_wstr': size = 0; o = ""; + while((w=__readUInt16LE(this,this.l +size))!==0){oo.push(_getchar(w));size+=2;} + size+=2; o = oo.join(""); break; + + /* sbcs and dbcs support continue records in the SST way TODO codepages */ + case 'dbcs-cont': o = ""; loc = this.l; + for(i = 0; i < size; ++i) { + if(this.lens && this.lens.indexOf(loc) !== -1) { + w = __readUInt8(this, loc); + this.l = loc + 1; + vv = ReadShift.call(this, size-i, w ? 'dbcs-cont' : 'sbcs-cont'); + return oo.join("") + vv; + } + oo.push(_getchar(__readUInt16LE(this, loc))); + loc+=2; + } o = oo.join(""); size *= 2; break; + + case 'cpstr': + if(typeof $cptable !== 'undefined') { + o = $cptable.utils.decode(current_codepage, this.slice(this.l, this.l + size)); + break; + } + /* falls through */ + case 'sbcs-cont': o = ""; loc = this.l; + for(i = 0; i != size; ++i) { + if(this.lens && this.lens.indexOf(loc) !== -1) { + w = __readUInt8(this, loc); + this.l = loc + 1; + vv = ReadShift.call(this, size-i, w ? 'dbcs-cont' : 'sbcs-cont'); + return oo.join("") + vv; + } + oo.push(_getchar(__readUInt8(this, loc))); + loc+=1; + } o = oo.join(""); break; + + default: + switch(size) { + case 1: oI = __readUInt8(this, this.l); this.l++; return oI; + case 2: oI = (t === 'i' ? __readInt16LE : __readUInt16LE)(this, this.l); this.l += 2; return oI; + case 4: case -4: + if(t === 'i' || ((this[this.l+3] & 0x80)===0)) { oI = ((size > 0) ? __readInt32LE : __readInt32BE)(this, this.l); this.l += 4; return oI; } + else { oR = __readUInt32LE(this, this.l); this.l += 4; } return oR; + case 8: case -8: + if(t === 'f') { + if(size == 8) oR = __double(this, this.l); + else oR = __double([this[this.l+7],this[this.l+6],this[this.l+5],this[this.l+4],this[this.l+3],this[this.l+2],this[this.l+1],this[this.l+0]], 0); + this.l += 8; return oR; + } else size = 8; + /* falls through */ + case 16: o = __hexlify(this, this.l, size); break; + }} + this.l+=size; return o; +} + +var __writeUInt32LE = function(b/*:RawBytes|CFBlob*/, val/*:number*/, idx/*:number*/)/*:void*/ { b[idx] = (val & 0xFF); b[idx+1] = ((val >>> 8) & 0xFF); b[idx+2] = ((val >>> 16) & 0xFF); b[idx+3] = ((val >>> 24) & 0xFF); }; +var __writeInt32LE = function(b/*:RawBytes|CFBlob*/, val/*:number*/, idx/*:number*/)/*:void*/ { b[idx] = (val & 0xFF); b[idx+1] = ((val >> 8) & 0xFF); b[idx+2] = ((val >> 16) & 0xFF); b[idx+3] = ((val >> 24) & 0xFF); }; +var __writeUInt16LE = function(b/*:RawBytes|CFBlob*/, val/*:number*/, idx/*:number*/)/*:void*/ { b[idx] = (val & 0xFF); b[idx+1] = ((val >>> 8) & 0xFF); }; + +function WriteShift(t/*:number*/, val/*:string|number*/, f/*:?string*/)/*:any*/ { + var size = 0, i = 0; + if(f === 'dbcs') { + /*:: if(typeof val !== 'string') throw new Error("unreachable"); */ + for(i = 0; i != val.length; ++i) __writeUInt16LE(this, val.charCodeAt(i), this.l + 2 * i); + size = 2 * val.length; + } else if(f === 'sbcs') { + if(typeof $cptable !== 'undefined' && current_ansi == 874) { + /* TODO: use tables directly, don't encode */ + /*:: if(typeof val !== "string") throw new Error("unreachable"); */ + for(i = 0; i != val.length; ++i) { + var cppayload = $cptable.utils.encode(current_ansi, val.charAt(i)); + this[this.l + i] = cppayload[0]; + } + } else { + /*:: if(typeof val !== 'string') throw new Error("unreachable"); */ + val = val.replace(/[^\x00-\x7F]/g, "_"); + /*:: if(typeof val !== 'string') throw new Error("unreachable"); */ + for(i = 0; i != val.length; ++i) this[this.l + i] = (val.charCodeAt(i) & 0xFF); + } + size = val.length; + } else if(f === 'hex') { + for(; i < t; ++i) { + /*:: if(typeof val !== "string") throw new Error("unreachable"); */ + this[this.l++] = (parseInt(val.slice(2*i, 2*i+2), 16)||0); + } return this; + } else if(f === 'utf16le') { + /*:: if(typeof val !== "string") throw new Error("unreachable"); */ + var end/*:number*/ = Math.min(this.l + t, this.length); + for(i = 0; i < Math.min(val.length, t); ++i) { + var cc = val.charCodeAt(i); + this[this.l++] = (cc & 0xff); + this[this.l++] = (cc >> 8); + } + while(this.l < end) this[this.l++] = 0; + return this; + } else /*:: if(typeof val === 'number') */ switch(t) { + case 1: size = 1; this[this.l] = val&0xFF; break; + case 2: size = 2; this[this.l] = val&0xFF; val >>>= 8; this[this.l+1] = val&0xFF; break; + case 3: size = 3; this[this.l] = val&0xFF; val >>>= 8; this[this.l+1] = val&0xFF; val >>>= 8; this[this.l+2] = val&0xFF; break; + case 4: size = 4; __writeUInt32LE(this, val, this.l); break; + case 8: size = 8; if(f === 'f') { write_double_le(this, val, this.l); break; } + /* falls through */ + case 16: break; + case -4: size = 4; __writeInt32LE(this, val, this.l); break; + } + this.l += size; return this; +} + +function CheckField(hexstr/*:string*/, fld/*:string*/)/*:void*/ { + var m = __hexlify(this,this.l,hexstr.length>>1); + if(m !== hexstr) throw new Error(fld + 'Expected ' + hexstr + ' saw ' + m); + this.l += hexstr.length>>1; +} + +function prep_blob(blob, pos/*:number*/)/*:void*/ { + blob.l = pos; + blob.read_shift = /*::(*/ReadShift/*:: :any)*/; + blob.chk = CheckField; + blob.write_shift = WriteShift; +} + +function parsenoop(blob, length/*:: :number, opts?:any */) { blob.l += length; } + +function new_buf(sz/*:number*/)/*:Block*/ { + var o = new_raw_buf(sz); + prep_blob(o, 0); + return o; +} + +/* [MS-XLSB] 2.1.4 Record */ +function recordhopper(data, cb/*:RecordHopperCB*/, opts/*:?any*/) { + if(!data) return; + var tmpbyte, cntbyte, length; + prep_blob(data, data.l || 0); + var L = data.length, RT = 0, tgt = 0; + while(data.l < L) { + RT = data.read_shift(1); + if(RT & 0x80) RT = (RT & 0x7F) + ((data.read_shift(1) & 0x7F)<<7); + var R = XLSBRecordEnum[RT] || XLSBRecordEnum[0xFFFF]; + tmpbyte = data.read_shift(1); + length = tmpbyte & 0x7F; + for(cntbyte = 1; cntbyte <4 && (tmpbyte & 0x80); ++cntbyte) length += ((tmpbyte = data.read_shift(1)) & 0x7F)<<(7*cntbyte); + tgt = data.l + length; + var d = R.f && R.f(data, length, opts); + data.l = tgt; + if(cb(d, R, RT)) return; + } +} + +/* control buffer usage for fixed-length buffers */ +function buf_array()/*:BufArray*/ { + var bufs/*:Array*/ = [], blksz = has_buf ? 256 : 2048; + var newblk = function ba_newblk(sz/*:number*/)/*:Block*/ { + var o/*:Block*/ = (new_buf(sz)/*:any*/); + prep_blob(o, 0); + return o; + }; + + var curbuf/*:Block*/ = newblk(blksz); + + var endbuf = function ba_endbuf() { + if(!curbuf) return; + if(curbuf.length > curbuf.l) { curbuf = curbuf.slice(0, curbuf.l); curbuf.l = curbuf.length; } + if(curbuf.length > 0) bufs.push(curbuf); + curbuf = null; + }; + + var next = function ba_next(sz/*:number*/)/*:Block*/ { + if(curbuf && (sz < (curbuf.length - curbuf.l))) return curbuf; + endbuf(); + return (curbuf = newblk(Math.max(sz+1, blksz))); + }; + + var end = function ba_end() { + endbuf(); + return bconcat(bufs); + }; + + var push = function ba_push(buf) { endbuf(); curbuf = buf; if(curbuf.l == null) curbuf.l = curbuf.length; next(blksz); }; + + return ({ next:next, push:push, end:end, _bufs:bufs }/*:any*/); +} + +function write_record(ba/*:BufArray*/, type/*:number*/, payload, length/*:?number*/) { + var t/*:number*/ = +type, l; + if(isNaN(t)) return; // TODO: throw something here? + if(!length) length = XLSBRecordEnum[t].p || (payload||[]).length || 0; + l = 1 + (t >= 0x80 ? 1 : 0) + 1/* + length*/; + if(length >= 0x80) ++l; if(length >= 0x4000) ++l; if(length >= 0x200000) ++l; + var o = ba.next(l); + if(t <= 0x7F) o.write_shift(1, t); + else { + o.write_shift(1, (t & 0x7F) + 0x80); + o.write_shift(1, (t >> 7)); + } + for(var i = 0; i != 4; ++i) { + if(length >= 0x80) { o.write_shift(1, (length & 0x7F)+0x80); length >>= 7; } + else { o.write_shift(1, length); break; } + } + if(/*:: length != null &&*/length > 0 && is_buf(payload)) ba.push(payload); +} +/* XLS ranges enforced */ +function shift_cell_xls(cell/*:CellAddress*/, tgt/*:any*/, opts/*:?any*/)/*:CellAddress*/ { + var out = dup(cell); + if(tgt.s) { + if(out.cRel) out.c += tgt.s.c; + if(out.rRel) out.r += tgt.s.r; + } else { + if(out.cRel) out.c += tgt.c; + if(out.rRel) out.r += tgt.r; + } + if(!opts || opts.biff < 12) { + while(out.c >= 0x100) out.c -= 0x100; + while(out.r >= 0x10000) out.r -= 0x10000; + } + return out; +} + +function shift_range_xls(cell, range, opts) { + var out = dup(cell); + out.s = shift_cell_xls(out.s, range.s, opts); + out.e = shift_cell_xls(out.e, range.s, opts); + return out; +} + +function encode_cell_xls(c/*:CellAddress*/, biff/*:number*/)/*:string*/ { + if(c.cRel && c.c < 0) { c = dup(c); while(c.c < 0) c.c += (biff > 8) ? 0x4000 : 0x100; } + if(c.rRel && c.r < 0) { c = dup(c); while(c.r < 0) c.r += (biff > 8) ? 0x100000 : ((biff > 5) ? 0x10000 : 0x4000); } + var s = encode_cell(c); + if(!c.cRel && c.cRel != null) s = fix_col(s); + if(!c.rRel && c.rRel != null) s = fix_row(s); + return s; +} + +function encode_range_xls(r, opts)/*:string*/ { + if(r.s.r == 0 && !r.s.rRel) { + if(r.e.r == (opts.biff >= 12 ? 0xFFFFF : (opts.biff >= 8 ? 0x10000 : 0x4000)) && !r.e.rRel) { + return (r.s.cRel ? "" : "$") + encode_col(r.s.c) + ":" + (r.e.cRel ? "" : "$") + encode_col(r.e.c); + } + } + if(r.s.c == 0 && !r.s.cRel) { + if(r.e.c == (opts.biff >= 12 ? 0x3FFF : 0xFF) && !r.e.cRel) { + return (r.s.rRel ? "" : "$") + encode_row(r.s.r) + ":" + (r.e.rRel ? "" : "$") + encode_row(r.e.r); + } + } + return encode_cell_xls(r.s, opts.biff) + ":" + encode_cell_xls(r.e, opts.biff); +} +function decode_row(rowstr/*:string*/)/*:number*/ { return parseInt(unfix_row(rowstr),10) - 1; } +function encode_row(row/*:number*/)/*:string*/ { return "" + (row + 1); } +function fix_row(cstr/*:string*/)/*:string*/ { return cstr.replace(/([A-Z]|^)(\d+)$/,"$1$$$2"); } +function unfix_row(cstr/*:string*/)/*:string*/ { return cstr.replace(/\$(\d+)$/,"$1"); } + +function decode_col(colstr/*:string*/)/*:number*/ { var c = unfix_col(colstr), d = 0, i = 0; for(; i !== c.length; ++i) d = 26*d + c.charCodeAt(i) - 64; return d - 1; } +function encode_col(col/*:number*/)/*:string*/ { if(col < 0) throw new Error("invalid column " + col); var s=""; for(++col; col; col=Math.floor((col-1)/26)) s = String.fromCharCode(((col-1)%26) + 65) + s; return s; } +function fix_col(cstr/*:string*/)/*:string*/ { return cstr.replace(/^([A-Z])/,"$$$1"); } +function unfix_col(cstr/*:string*/)/*:string*/ { return cstr.replace(/^\$([A-Z])/,"$1"); } + +function split_cell(cstr/*:string*/)/*:Array*/ { return cstr.replace(/(\$?[A-Z]*)(\$?\d*)/,"$1,$2").split(","); } +//function decode_cell(cstr/*:string*/)/*:CellAddress*/ { var splt = split_cell(cstr); return { c:decode_col(splt[0]), r:decode_row(splt[1]) }; } +function decode_cell(cstr/*:string*/)/*:CellAddress*/ { + var R = 0, C = 0; + for(var i = 0; i < cstr.length; ++i) { + var cc = cstr.charCodeAt(i); + if(cc >= 48 && cc <= 57) R = 10 * R + (cc - 48); + else if(cc >= 65 && cc <= 90) C = 26 * C + (cc - 64); + } + return { c: C - 1, r:R - 1 }; +} +//function encode_cell(cell/*:CellAddress*/)/*:string*/ { return encode_col(cell.c) + encode_row(cell.r); } +function encode_cell(cell/*:CellAddress*/)/*:string*/ { + var col = cell.c + 1; + var s=""; + for(; col; col=((col-1)/26)|0) s = String.fromCharCode(((col-1)%26) + 65) + s; + return s + (cell.r + 1); +} +function decode_range(range/*:string*/)/*:Range*/ { + var idx = range.indexOf(":"); + if(idx == -1) return { s: decode_cell(range), e: decode_cell(range) }; + return { s: decode_cell(range.slice(0, idx)), e: decode_cell(range.slice(idx + 1)) }; +} +/*# if only one arg, it is assumed to be a Range. If 2 args, both are cell addresses */ +function encode_range(cs/*:CellAddrSpec|Range*/,ce/*:?CellAddrSpec*/)/*:string*/ { + if(typeof ce === 'undefined' || typeof ce === 'number') { +/*:: if(!(cs instanceof Range)) throw "unreachable"; */ + return encode_range(cs.s, cs.e); + } +/*:: if((cs instanceof Range)) throw "unreachable"; */ + if(typeof cs !== 'string') cs = encode_cell((cs/*:any*/)); + if(typeof ce !== 'string') ce = encode_cell((ce/*:any*/)); +/*:: if(typeof cs !== 'string') throw "unreachable"; */ +/*:: if(typeof ce !== 'string') throw "unreachable"; */ + return cs == ce ? cs : cs + ":" + ce; +} + +function safe_decode_range(range/*:string*/)/*:Range*/ { + var o = {s:{c:0,r:0},e:{c:0,r:0}}; + var idx = 0, i = 0, cc = 0; + var len = range.length; + for(idx = 0; i < len; ++i) { + if((cc=range.charCodeAt(i)-64) < 1 || cc > 26) break; + idx = 26*idx + cc; + } + o.s.c = --idx; + + for(idx = 0; i < len; ++i) { + if((cc=range.charCodeAt(i)-48) < 0 || cc > 9) break; + idx = 10*idx + cc; + } + o.s.r = --idx; + + if(i === len || cc != 10) { o.e.c=o.s.c; o.e.r=o.s.r; return o; } + ++i; + + for(idx = 0; i != len; ++i) { + if((cc=range.charCodeAt(i)-64) < 1 || cc > 26) break; + idx = 26*idx + cc; + } + o.e.c = --idx; + + for(idx = 0; i != len; ++i) { + if((cc=range.charCodeAt(i)-48) < 0 || cc > 9) break; + idx = 10*idx + cc; + } + o.e.r = --idx; + return o; +} + +function safe_format_cell(cell/*:Cell*/, v/*:any*/) { + var q = (cell.t == 'd' && v instanceof Date); + if(cell.z != null) try { return (cell.w = SSF_format(cell.z, q ? datenum(v) : v)); } catch(e) { } + try { return (cell.w = SSF_format((cell.XF||{}).numFmtId||(q ? 14 : 0), q ? datenum(v) : v)); } catch(e) { return ''+v; } +} + +function format_cell(cell/*:Cell*/, v/*:any*/, o/*:any*/) { + if(cell == null || cell.t == null || cell.t == 'z') return ""; + if(cell.w !== undefined) return cell.w; + if(cell.t == 'd' && !cell.z && o && o.dateNF) cell.z = o.dateNF; + if(cell.t == "e") return BErr[cell.v] || cell.v; + if(v == undefined) return safe_format_cell(cell, cell.v); + return safe_format_cell(cell, v); +} + +function sheet_to_workbook(sheet/*:Worksheet*/, opts)/*:Workbook*/ { + var n = opts && opts.sheet ? opts.sheet : "Sheet1"; + var sheets = {}; sheets[n] = sheet; + return { SheetNames: [n], Sheets: sheets }; +} + +function sheet_add_aoa(_ws/*:?Worksheet*/, data/*:AOA*/, opts/*:?any*/)/*:Worksheet*/ { + var o = opts || {}; + var dense = _ws ? Array.isArray(_ws) : o.dense; + if(DENSE != null && dense == null) dense = DENSE; + var ws/*:Worksheet*/ = _ws || (dense ? ([]/*:any*/) : ({}/*:any*/)); + var _R = 0, _C = 0; + if(ws && o.origin != null) { + if(typeof o.origin == 'number') _R = o.origin; + else { + var _origin/*:CellAddress*/ = typeof o.origin == "string" ? decode_cell(o.origin) : o.origin; + _R = _origin.r; _C = _origin.c; + } + if(!ws["!ref"]) ws["!ref"] = "A1:A1"; + } + var range/*:Range*/ = ({s: {c:10000000, r:10000000}, e: {c:0, r:0}}/*:any*/); + if(ws['!ref']) { + var _range = safe_decode_range(ws['!ref']); + range.s.c = _range.s.c; + range.s.r = _range.s.r; + range.e.c = Math.max(range.e.c, _range.e.c); + range.e.r = Math.max(range.e.r, _range.e.r); + if(_R == -1) range.e.r = _R = _range.e.r + 1; + } + for(var R = 0; R != data.length; ++R) { + if(!data[R]) continue; + if(!Array.isArray(data[R])) throw new Error("aoa_to_sheet expects an array of arrays"); + for(var C = 0; C != data[R].length; ++C) { + if(typeof data[R][C] === 'undefined') continue; + var cell/*:Cell*/ = ({v: data[R][C] }/*:any*/); + var __R = _R + R, __C = _C + C; + if(range.s.r > __R) range.s.r = __R; + if(range.s.c > __C) range.s.c = __C; + if(range.e.r < __R) range.e.r = __R; + if(range.e.c < __C) range.e.c = __C; + if(data[R][C] && typeof data[R][C] === 'object' && !Array.isArray(data[R][C]) && !(data[R][C] instanceof Date)) cell = data[R][C]; + else { + if(Array.isArray(cell.v)) { cell.f = data[R][C][1]; cell.v = cell.v[0]; } + if(cell.v === null) { + if(cell.f) cell.t = 'n'; + else if(o.nullError) { cell.t = 'e'; cell.v = 0; } + else if(!o.sheetStubs) continue; + else cell.t = 'z'; + } + else if(typeof cell.v === 'number') cell.t = 'n'; + else if(typeof cell.v === 'boolean') cell.t = 'b'; + else if(cell.v instanceof Date) { + cell.z = o.dateNF || table_fmt[14]; + if(o.cellDates) { cell.t = 'd'; cell.w = SSF_format(cell.z, datenum(cell.v)); } + else { cell.t = 'n'; cell.v = datenum(cell.v); cell.w = SSF_format(cell.z, cell.v); } + } + else cell.t = 's'; + } + if(dense) { + if(!ws[__R]) ws[__R] = []; + if(ws[__R][__C] && ws[__R][__C].z) cell.z = ws[__R][__C].z; + ws[__R][__C] = cell; + } else { + var cell_ref = encode_cell(({c:__C,r:__R}/*:any*/)); + if(ws[cell_ref] && ws[cell_ref].z) cell.z = ws[cell_ref].z; + ws[cell_ref] = cell; + } + } + } + if(range.s.c < 10000000) ws['!ref'] = encode_range(range); + return ws; +} +function aoa_to_sheet(data/*:AOA*/, opts/*:?any*/)/*:Worksheet*/ { return sheet_add_aoa(null, data, opts); } + +function parse_Int32LE(data) { + return data.read_shift(4, 'i'); +} +function write_UInt32LE(x/*:number*/, o) { + if (!o) o = new_buf(4); + o.write_shift(4, x); + return o; +} + +/* [MS-XLSB] 2.5.168 */ +function parse_XLWideString(data/*::, length*/)/*:string*/ { + var cchCharacters = data.read_shift(4); + return cchCharacters === 0 ? "" : data.read_shift(cchCharacters, 'dbcs'); +} +function write_XLWideString(data/*:string*/, o) { + var _null = false; if (o == null) { _null = true; o = new_buf(4 + 2 * data.length); } + o.write_shift(4, data.length); + if (data.length > 0) o.write_shift(0, data, 'dbcs'); + return _null ? o.slice(0, o.l) : o; +} + +/* [MS-XLSB] 2.5.91 */ +//function parse_LPWideString(data/*::, length*/)/*:string*/ { +// var cchCharacters = data.read_shift(2); +// return cchCharacters === 0 ? "" : data.read_shift(cchCharacters, "utf16le"); +//} + +/* [MS-XLSB] 2.5.143 */ +function parse_StrRun(data) { + return { ich: data.read_shift(2), ifnt: data.read_shift(2) }; +} +function write_StrRun(run, o) { + if (!o) o = new_buf(4); + o.write_shift(2, run.ich || 0); + o.write_shift(2, run.ifnt || 0); + return o; +} + +/* [MS-XLSB] 2.5.121 */ +function parse_RichStr(data, length/*:number*/)/*:XLString*/ { + var start = data.l; + var flags = data.read_shift(1); + var str = parse_XLWideString(data); + var rgsStrRun = []; + var z = ({ t: str, h: str }/*:any*/); + if ((flags & 1) !== 0) { /* fRichStr */ + /* TODO: formatted string */ + var dwSizeStrRun = data.read_shift(4); + for (var i = 0; i != dwSizeStrRun; ++i) rgsStrRun.push(parse_StrRun(data)); + z.r = rgsStrRun; + } + else z.r = [{ ich: 0, ifnt: 0 }]; + //if((flags & 2) !== 0) { /* fExtStr */ + // /* TODO: phonetic string */ + //} + data.l = start + length; + return z; +} +function write_RichStr(str/*:XLString*/, o/*:?Block*/)/*:Block*/ { + /* TODO: formatted string */ + var _null = false; if (o == null) { _null = true; o = new_buf(15 + 4 * str.t.length); } + o.write_shift(1, 0); + write_XLWideString(str.t, o); + return _null ? o.slice(0, o.l) : o; +} +/* [MS-XLSB] 2.4.328 BrtCommentText (RichStr w/1 run) */ +var parse_BrtCommentText = parse_RichStr; +function write_BrtCommentText(str/*:XLString*/, o/*:?Block*/)/*:Block*/ { + /* TODO: formatted string */ + var _null = false; if (o == null) { _null = true; o = new_buf(23 + 4 * str.t.length); } + o.write_shift(1, 1); + write_XLWideString(str.t, o); + o.write_shift(4, 1); + write_StrRun({ ich: 0, ifnt: 0 }, o); + return _null ? o.slice(0, o.l) : o; +} + +/* [MS-XLSB] 2.5.9 */ +function parse_XLSBCell(data)/*:any*/ { + var col = data.read_shift(4); + var iStyleRef = data.read_shift(2); + iStyleRef += data.read_shift(1) << 16; + data.l++; //var fPhShow = data.read_shift(1); + return { c: col, iStyleRef: iStyleRef }; +} +function write_XLSBCell(cell/*:any*/, o/*:?Block*/) { + if (o == null) o = new_buf(8); + o.write_shift(-4, cell.c); + o.write_shift(3, cell.iStyleRef || cell.s); + o.write_shift(1, 0); /* fPhShow */ + return o; +} + +/* Short XLSB Cell does not include column */ +function parse_XLSBShortCell(data)/*:any*/ { + var iStyleRef = data.read_shift(2); + iStyleRef += data.read_shift(1) <<16; + data.l++; //var fPhShow = data.read_shift(1); + return { c:-1, iStyleRef: iStyleRef }; +} +function write_XLSBShortCell(cell/*:any*/, o/*:?Block*/) { + if(o == null) o = new_buf(4); + o.write_shift(3, cell.iStyleRef || cell.s); + o.write_shift(1, 0); /* fPhShow */ + return o; +} + +/* [MS-XLSB] 2.5.21 */ +var parse_XLSBCodeName = parse_XLWideString; +var write_XLSBCodeName = write_XLWideString; + +/* [MS-XLSB] 2.5.166 */ +function parse_XLNullableWideString(data/*::, length*/)/*:string*/ { + var cchCharacters = data.read_shift(4); + return cchCharacters === 0 || cchCharacters === 0xFFFFFFFF ? "" : data.read_shift(cchCharacters, 'dbcs'); +} +function write_XLNullableWideString(data/*:string*/, o) { + var _null = false; if (o == null) { _null = true; o = new_buf(127); } + o.write_shift(4, data.length > 0 ? data.length : 0xFFFFFFFF); + if (data.length > 0) o.write_shift(0, data, 'dbcs'); + return _null ? o.slice(0, o.l) : o; +} + +/* [MS-XLSB] 2.5.165 */ +var parse_XLNameWideString = parse_XLWideString; +//var write_XLNameWideString = write_XLWideString; + +/* [MS-XLSB] 2.5.114 */ +var parse_RelID = parse_XLNullableWideString; +var write_RelID = write_XLNullableWideString; + + +/* [MS-XLS] 2.5.217 ; [MS-XLSB] 2.5.122 */ +function parse_RkNumber(data)/*:number*/ { + var b = data.slice(data.l, data.l + 4); + var fX100 = (b[0] & 1), fInt = (b[0] & 2); + data.l += 4; + var RK = fInt === 0 ? __double([0, 0, 0, 0, (b[0] & 0xFC), b[1], b[2], b[3]], 0) : __readInt32LE(b, 0) >> 2; + return fX100 ? (RK / 100) : RK; +} +function write_RkNumber(data/*:number*/, o) { + if (o == null) o = new_buf(4); + var fX100 = 0, fInt = 0, d100 = data * 100; + if ((data == (data | 0)) && (data >= -(1 << 29)) && (data < (1 << 29))) { fInt = 1; } + else if ((d100 == (d100 | 0)) && (d100 >= -(1 << 29)) && (d100 < (1 << 29))) { fInt = 1; fX100 = 1; } + if (fInt) o.write_shift(-4, ((fX100 ? d100 : data) << 2) + (fX100 + 2)); + else throw new Error("unsupported RkNumber " + data); // TODO +} + + +/* [MS-XLSB] 2.5.117 RfX */ +function parse_RfX(data /*::, length*/)/*:Range*/ { + var cell/*:Range*/ = ({ s: {}, e: {} }/*:any*/); + cell.s.r = data.read_shift(4); + cell.e.r = data.read_shift(4); + cell.s.c = data.read_shift(4); + cell.e.c = data.read_shift(4); + return cell; +} +function write_RfX(r/*:Range*/, o) { + if (!o) o = new_buf(16); + o.write_shift(4, r.s.r); + o.write_shift(4, r.e.r); + o.write_shift(4, r.s.c); + o.write_shift(4, r.e.c); + return o; +} + +/* [MS-XLSB] 2.5.153 UncheckedRfX */ +var parse_UncheckedRfX = parse_RfX; +var write_UncheckedRfX = write_RfX; + +/* [MS-XLSB] 2.5.155 UncheckedSqRfX */ +//function parse_UncheckedSqRfX(data) { +// var cnt = data.read_shift(4); +// var out = []; +// for(var i = 0; i < cnt; ++i) { +// var rng = parse_UncheckedRfX(data); +// out.push(encode_range(rng)); +// } +// return out.join(","); +//} +//function write_UncheckedSqRfX(sqrfx/*:string*/) { +// var parts = sqrfx.split(/\s*,\s*/); +// var o = new_buf(4); o.write_shift(4, parts.length); +// var out = [o]; +// parts.forEach(function(rng) { +// out.push(write_UncheckedRfX(safe_decode_range(rng))); +// }); +// return bconcat(out); +//} + +/* [MS-XLS] 2.5.342 ; [MS-XLSB] 2.5.171 */ +/* TODO: error checking, NaN and Infinity values are not valid Xnum */ +function parse_Xnum(data/*::, length*/) { + if(data.length - data.l < 8) throw "XLS Xnum Buffer underflow"; + return data.read_shift(8, 'f'); +} +function write_Xnum(data, o) { return (o || new_buf(8)).write_shift(8, data, 'f'); } + +/* [MS-XLSB] 2.4.324 BrtColor */ +function parse_BrtColor(data/*::, length*/) { + var out = {}; + var d = data.read_shift(1); + + //var fValidRGB = d & 1; + var xColorType = d >>> 1; + + var index = data.read_shift(1); + var nTS = data.read_shift(2, 'i'); + var bR = data.read_shift(1); + var bG = data.read_shift(1); + var bB = data.read_shift(1); + data.l++; //var bAlpha = data.read_shift(1); + + switch (xColorType) { + case 0: out.auto = 1; break; + case 1: + out.index = index; + var icv = XLSIcv[index]; + /* automatic pseudo index 81 */ + if (icv) out.rgb = rgb2Hex(icv); + break; + case 2: + /* if(!fValidRGB) throw new Error("invalid"); */ + out.rgb = rgb2Hex([bR, bG, bB]); + break; + case 3: out.theme = index; break; + } + if (nTS != 0) out.tint = nTS > 0 ? nTS / 32767 : nTS / 32768; + + return out; +} +function write_BrtColor(color, o) { + if (!o) o = new_buf(8); + if (!color || color.auto) { o.write_shift(4, 0); o.write_shift(4, 0); return o; } + if (color.index != null) { + o.write_shift(1, 0x02); + o.write_shift(1, color.index); + } else if (color.theme != null) { + o.write_shift(1, 0x06); + o.write_shift(1, color.theme); + } else { + o.write_shift(1, 0x05); + o.write_shift(1, 0); + } + var nTS = color.tint || 0; + if (nTS > 0) nTS *= 32767; + else if (nTS < 0) nTS *= 32768; + o.write_shift(2, nTS); + if (!color.rgb || color.theme != null) { + o.write_shift(2, 0); + o.write_shift(1, 0); + o.write_shift(1, 0); + } else { + var rgb = (color.rgb || 'FFFFFF'); + if (typeof rgb == 'number') rgb = ("000000" + rgb.toString(16)).slice(-6); + o.write_shift(1, parseInt(rgb.slice(0, 2), 16)); + o.write_shift(1, parseInt(rgb.slice(2, 4), 16)); + o.write_shift(1, parseInt(rgb.slice(4, 6), 16)); + o.write_shift(1, 0xFF); + } + return o; +} + +/* [MS-XLSB] 2.5.52 */ +function parse_FontFlags(data/*::, length, opts*/) { + var d = data.read_shift(1); + data.l++; + var out = { + fBold: d & 0x01, + fItalic: d & 0x02, + fUnderline: d & 0x04, + fStrikeout: d & 0x08, + fOutline: d & 0x10, + fShadow: d & 0x20, + fCondense: d & 0x40, + fExtend: d & 0x80 + }; + return out; +} +function write_FontFlags(font, o) { + if (!o) o = new_buf(2); + var grbit = + (font.italic ? 0x02 : 0) | + (font.strike ? 0x08 : 0) | + (font.outline ? 0x10 : 0) | + (font.shadow ? 0x20 : 0) | + (font.condense ? 0x40 : 0) | + (font.extend ? 0x80 : 0); + o.write_shift(1, grbit); + o.write_shift(1, 0); + return o; +} + +/* [MS-OLEDS] 2.3.1 and 2.3.2 */ +function parse_ClipboardFormatOrString(o, w/*:number*/)/*:string*/ { + // $FlowIgnore + var ClipFmt = { 2: "BITMAP", 3: "METAFILEPICT", 8: "DIB", 14: "ENHMETAFILE" }; + var m/*:number*/ = o.read_shift(4); + switch (m) { + case 0x00000000: return ""; + case 0xffffffff: case 0xfffffffe: return ClipFmt[o.read_shift(4)] || ""; + } + if (m > 0x190) throw new Error("Unsupported Clipboard: " + m.toString(16)); + o.l -= 4; + return o.read_shift(0, w == 1 ? "lpstr" : "lpwstr"); +} +function parse_ClipboardFormatOrAnsiString(o) { return parse_ClipboardFormatOrString(o, 1); } +function parse_ClipboardFormatOrUnicodeString(o) { return parse_ClipboardFormatOrString(o, 2); } + +/* [MS-OLEPS] 2.2 PropertyType */ +// Note: some tree shakers cannot handle VT_VECTOR | $CONST, hence extra vars +//var VT_EMPTY = 0x0000; +//var VT_NULL = 0x0001; +var VT_I2 = 0x0002; +var VT_I4 = 0x0003; +//var VT_R4 = 0x0004; +//var VT_R8 = 0x0005; +//var VT_CY = 0x0006; +//var VT_DATE = 0x0007; +//var VT_BSTR = 0x0008; +//var VT_ERROR = 0x000A; +var VT_BOOL = 0x000B; +var VT_VARIANT = 0x000C; +//var VT_DECIMAL = 0x000E; +//var VT_I1 = 0x0010; +//var VT_UI1 = 0x0011; +//var VT_UI2 = 0x0012; +var VT_UI4 = 0x0013; +//var VT_I8 = 0x0014; +//var VT_UI8 = 0x0015; +//var VT_INT = 0x0016; +//var VT_UINT = 0x0017; +var VT_LPSTR = 0x001E; +//var VT_LPWSTR = 0x001F; +var VT_FILETIME = 0x0040; +var VT_BLOB = 0x0041; +//var VT_STREAM = 0x0042; +//var VT_STORAGE = 0x0043; +//var VT_STREAMED_Object = 0x0044; +//var VT_STORED_Object = 0x0045; +//var VT_BLOB_Object = 0x0046; +var VT_CF = 0x0047; +//var VT_CLSID = 0x0048; +//var VT_VERSIONED_STREAM = 0x0049; +var VT_VECTOR = 0x1000; +var VT_VECTOR_VARIANT = 0x100C; +var VT_VECTOR_LPSTR = 0x101E; +//var VT_ARRAY = 0x2000; + +var VT_STRING = 0x0050; // 2.3.3.1.11 VtString +var VT_USTR = 0x0051; // 2.3.3.1.12 VtUnalignedString +var VT_CUSTOM = [VT_STRING, VT_USTR]; + +/* [MS-OSHARED] 2.3.3.2.2.1 Document Summary Information PIDDSI */ +var DocSummaryPIDDSI = { + /*::[*/0x01/*::]*/: { n: 'CodePage', t: VT_I2 }, + /*::[*/0x02/*::]*/: { n: 'Category', t: VT_STRING }, + /*::[*/0x03/*::]*/: { n: 'PresentationFormat', t: VT_STRING }, + /*::[*/0x04/*::]*/: { n: 'ByteCount', t: VT_I4 }, + /*::[*/0x05/*::]*/: { n: 'LineCount', t: VT_I4 }, + /*::[*/0x06/*::]*/: { n: 'ParagraphCount', t: VT_I4 }, + /*::[*/0x07/*::]*/: { n: 'SlideCount', t: VT_I4 }, + /*::[*/0x08/*::]*/: { n: 'NoteCount', t: VT_I4 }, + /*::[*/0x09/*::]*/: { n: 'HiddenCount', t: VT_I4 }, + /*::[*/0x0a/*::]*/: { n: 'MultimediaClipCount', t: VT_I4 }, + /*::[*/0x0b/*::]*/: { n: 'ScaleCrop', t: VT_BOOL }, + /*::[*/0x0c/*::]*/: { n: 'HeadingPairs', t: VT_VECTOR_VARIANT /* VT_VECTOR | VT_VARIANT */ }, + /*::[*/0x0d/*::]*/: { n: 'TitlesOfParts', t: VT_VECTOR_LPSTR /* VT_VECTOR | VT_LPSTR */ }, + /*::[*/0x0e/*::]*/: { n: 'Manager', t: VT_STRING }, + /*::[*/0x0f/*::]*/: { n: 'Company', t: VT_STRING }, + /*::[*/0x10/*::]*/: { n: 'LinksUpToDate', t: VT_BOOL }, + /*::[*/0x11/*::]*/: { n: 'CharacterCount', t: VT_I4 }, + /*::[*/0x13/*::]*/: { n: 'SharedDoc', t: VT_BOOL }, + /*::[*/0x16/*::]*/: { n: 'HyperlinksChanged', t: VT_BOOL }, + /*::[*/0x17/*::]*/: { n: 'AppVersion', t: VT_I4, p: 'version' }, + /*::[*/0x18/*::]*/: { n: 'DigSig', t: VT_BLOB }, + /*::[*/0x1A/*::]*/: { n: 'ContentType', t: VT_STRING }, + /*::[*/0x1B/*::]*/: { n: 'ContentStatus', t: VT_STRING }, + /*::[*/0x1C/*::]*/: { n: 'Language', t: VT_STRING }, + /*::[*/0x1D/*::]*/: { n: 'Version', t: VT_STRING }, + /*::[*/0xFF/*::]*/: {}, + /* [MS-OLEPS] 2.18 */ + /*::[*/0x80000000/*::]*/: { n: 'Locale', t: VT_UI4 }, + /*::[*/0x80000003/*::]*/: { n: 'Behavior', t: VT_UI4 }, + /*::[*/0x72627262/*::]*/: {} +}; + +/* [MS-OSHARED] 2.3.3.2.1.1 Summary Information Property Set PIDSI */ +var SummaryPIDSI = { + /*::[*/0x01/*::]*/: { n: 'CodePage', t: VT_I2 }, + /*::[*/0x02/*::]*/: { n: 'Title', t: VT_STRING }, + /*::[*/0x03/*::]*/: { n: 'Subject', t: VT_STRING }, + /*::[*/0x04/*::]*/: { n: 'Author', t: VT_STRING }, + /*::[*/0x05/*::]*/: { n: 'Keywords', t: VT_STRING }, + /*::[*/0x06/*::]*/: { n: 'Comments', t: VT_STRING }, + /*::[*/0x07/*::]*/: { n: 'Template', t: VT_STRING }, + /*::[*/0x08/*::]*/: { n: 'LastAuthor', t: VT_STRING }, + /*::[*/0x09/*::]*/: { n: 'RevNumber', t: VT_STRING }, + /*::[*/0x0A/*::]*/: { n: 'EditTime', t: VT_FILETIME }, + /*::[*/0x0B/*::]*/: { n: 'LastPrinted', t: VT_FILETIME }, + /*::[*/0x0C/*::]*/: { n: 'CreatedDate', t: VT_FILETIME }, + /*::[*/0x0D/*::]*/: { n: 'ModifiedDate', t: VT_FILETIME }, + /*::[*/0x0E/*::]*/: { n: 'PageCount', t: VT_I4 }, + /*::[*/0x0F/*::]*/: { n: 'WordCount', t: VT_I4 }, + /*::[*/0x10/*::]*/: { n: 'CharCount', t: VT_I4 }, + /*::[*/0x11/*::]*/: { n: 'Thumbnail', t: VT_CF }, + /*::[*/0x12/*::]*/: { n: 'Application', t: VT_STRING }, + /*::[*/0x13/*::]*/: { n: 'DocSecurity', t: VT_I4 }, + /*::[*/0xFF/*::]*/: {}, + /* [MS-OLEPS] 2.18 */ + /*::[*/0x80000000/*::]*/: { n: 'Locale', t: VT_UI4 }, + /*::[*/0x80000003/*::]*/: { n: 'Behavior', t: VT_UI4 }, + /*::[*/0x72627262/*::]*/: {} +}; + +/* [MS-XLS] 2.4.63 Country/Region codes */ +var CountryEnum = { + /*::[*/0x0001/*::]*/: "US", // United States + /*::[*/0x0002/*::]*/: "CA", // Canada + /*::[*/0x0003/*::]*/: "", // Latin America (except Brazil) + /*::[*/0x0007/*::]*/: "RU", // Russia + /*::[*/0x0014/*::]*/: "EG", // Egypt + /*::[*/0x001E/*::]*/: "GR", // Greece + /*::[*/0x001F/*::]*/: "NL", // Netherlands + /*::[*/0x0020/*::]*/: "BE", // Belgium + /*::[*/0x0021/*::]*/: "FR", // France + /*::[*/0x0022/*::]*/: "ES", // Spain + /*::[*/0x0024/*::]*/: "HU", // Hungary + /*::[*/0x0027/*::]*/: "IT", // Italy + /*::[*/0x0029/*::]*/: "CH", // Switzerland + /*::[*/0x002B/*::]*/: "AT", // Austria + /*::[*/0x002C/*::]*/: "GB", // United Kingdom + /*::[*/0x002D/*::]*/: "DK", // Denmark + /*::[*/0x002E/*::]*/: "SE", // Sweden + /*::[*/0x002F/*::]*/: "NO", // Norway + /*::[*/0x0030/*::]*/: "PL", // Poland + /*::[*/0x0031/*::]*/: "DE", // Germany + /*::[*/0x0034/*::]*/: "MX", // Mexico + /*::[*/0x0037/*::]*/: "BR", // Brazil + /*::[*/0x003d/*::]*/: "AU", // Australia + /*::[*/0x0040/*::]*/: "NZ", // New Zealand + /*::[*/0x0042/*::]*/: "TH", // Thailand + /*::[*/0x0051/*::]*/: "JP", // Japan + /*::[*/0x0052/*::]*/: "KR", // Korea + /*::[*/0x0054/*::]*/: "VN", // Viet Nam + /*::[*/0x0056/*::]*/: "CN", // China + /*::[*/0x005A/*::]*/: "TR", // Turkey + /*::[*/0x0069/*::]*/: "JS", // Ramastan + /*::[*/0x00D5/*::]*/: "DZ", // Algeria + /*::[*/0x00D8/*::]*/: "MA", // Morocco + /*::[*/0x00DA/*::]*/: "LY", // Libya + /*::[*/0x015F/*::]*/: "PT", // Portugal + /*::[*/0x0162/*::]*/: "IS", // Iceland + /*::[*/0x0166/*::]*/: "FI", // Finland + /*::[*/0x01A4/*::]*/: "CZ", // Czech Republic + /*::[*/0x0376/*::]*/: "TW", // Taiwan + /*::[*/0x03C1/*::]*/: "LB", // Lebanon + /*::[*/0x03C2/*::]*/: "JO", // Jordan + /*::[*/0x03C3/*::]*/: "SY", // Syria + /*::[*/0x03C4/*::]*/: "IQ", // Iraq + /*::[*/0x03C5/*::]*/: "KW", // Kuwait + /*::[*/0x03C6/*::]*/: "SA", // Saudi Arabia + /*::[*/0x03CB/*::]*/: "AE", // United Arab Emirates + /*::[*/0x03CC/*::]*/: "IL", // Israel + /*::[*/0x03CE/*::]*/: "QA", // Qatar + /*::[*/0x03D5/*::]*/: "IR", // Iran + /*::[*/0xFFFF/*::]*/: "US" // United States +}; + +/* [MS-XLS] 2.5.127 */ +var XLSFillPattern = [ + null, + 'solid', + 'mediumGray', + 'darkGray', + 'lightGray', + 'darkHorizontal', + 'darkVertical', + 'darkDown', + 'darkUp', + 'darkGrid', + 'darkTrellis', + 'lightHorizontal', + 'lightVertical', + 'lightDown', + 'lightUp', + 'lightGrid', + 'lightTrellis', + 'gray125', + 'gray0625' +]; + +function rgbify(arr/*:Array*/)/*:Array<[number, number, number]>*/ { return arr.map(function(x) { return [(x>>16)&255,(x>>8)&255,x&255]; }); } + +/* [MS-XLS] 2.5.161 */ +/* [MS-XLSB] 2.5.75 Icv */ +var _XLSIcv = /*#__PURE__*/ rgbify([ + /* Color Constants */ + 0x000000, + 0xFFFFFF, + 0xFF0000, + 0x00FF00, + 0x0000FF, + 0xFFFF00, + 0xFF00FF, + 0x00FFFF, + + /* Overridable Defaults */ + 0x000000, + 0xFFFFFF, + 0xFF0000, + 0x00FF00, + 0x0000FF, + 0xFFFF00, + 0xFF00FF, + 0x00FFFF, + + 0x800000, + 0x008000, + 0x000080, + 0x808000, + 0x800080, + 0x008080, + 0xC0C0C0, + 0x808080, + 0x9999FF, + 0x993366, + 0xFFFFCC, + 0xCCFFFF, + 0x660066, + 0xFF8080, + 0x0066CC, + 0xCCCCFF, + + 0x000080, + 0xFF00FF, + 0xFFFF00, + 0x00FFFF, + 0x800080, + 0x800000, + 0x008080, + 0x0000FF, + 0x00CCFF, + 0xCCFFFF, + 0xCCFFCC, + 0xFFFF99, + 0x99CCFF, + 0xFF99CC, + 0xCC99FF, + 0xFFCC99, + + 0x3366FF, + 0x33CCCC, + 0x99CC00, + 0xFFCC00, + 0xFF9900, + 0xFF6600, + 0x666699, + 0x969696, + 0x003366, + 0x339966, + 0x003300, + 0x333300, + 0x993300, + 0x993366, + 0x333399, + 0x333333, + + /* Other entries to appease BIFF8/12 */ + 0xFFFFFF, /* 0x40 icvForeground ?? */ + 0x000000, /* 0x41 icvBackground ?? */ + 0x000000, /* 0x42 icvFrame ?? */ + 0x000000, /* 0x43 icv3D ?? */ + 0x000000, /* 0x44 icv3DText ?? */ + 0x000000, /* 0x45 icv3DHilite ?? */ + 0x000000, /* 0x46 icv3DShadow ?? */ + 0x000000, /* 0x47 icvHilite ?? */ + 0x000000, /* 0x48 icvCtlText ?? */ + 0x000000, /* 0x49 icvCtlScrl ?? */ + 0x000000, /* 0x4A icvCtlInv ?? */ + 0x000000, /* 0x4B icvCtlBody ?? */ + 0x000000, /* 0x4C icvCtlFrame ?? */ + 0x000000, /* 0x4D icvCtlFore ?? */ + 0x000000, /* 0x4E icvCtlBack ?? */ + 0x000000, /* 0x4F icvCtlNeutral */ + 0x000000, /* 0x50 icvInfoBk ?? */ + 0x000000 /* 0x51 icvInfoText ?? */ +]); +var XLSIcv = /*#__PURE__*/dup(_XLSIcv); + +/* [MS-XLSB] 2.5.97.2 */ +var BErr = { + /*::[*/0x00/*::]*/: "#NULL!", + /*::[*/0x07/*::]*/: "#DIV/0!", + /*::[*/0x0F/*::]*/: "#VALUE!", + /*::[*/0x17/*::]*/: "#REF!", + /*::[*/0x1D/*::]*/: "#NAME?", + /*::[*/0x24/*::]*/: "#NUM!", + /*::[*/0x2A/*::]*/: "#N/A", + /*::[*/0x2B/*::]*/: "#GETTING_DATA", + /*::[*/0xFF/*::]*/: "#WTF?" +}; +//var RBErr = evert_num(BErr); +var RBErr = { + "#NULL!": 0x00, + "#DIV/0!": 0x07, + "#VALUE!": 0x0F, + "#REF!": 0x17, + "#NAME?": 0x1D, + "#NUM!": 0x24, + "#N/A": 0x2A, + "#GETTING_DATA": 0x2B, + "#WTF?": 0xFF +}; + +/* Parts enumerated in OPC spec, MS-XLSB and MS-XLSX */ +/* 12.3 Part Summary */ +/* 14.2 Part Summary */ +/* [MS-XLSX] 2.1 Part Enumerations ; [MS-XLSB] 2.1.7 Part Enumeration */ +var ct2type/*{[string]:string}*/ = ({ + /* Workbook */ + "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml": "workbooks", + "application/vnd.ms-excel.sheet.macroEnabled.main+xml": "workbooks", + "application/vnd.ms-excel.sheet.binary.macroEnabled.main": "workbooks", + "application/vnd.ms-excel.addin.macroEnabled.main+xml": "workbooks", + "application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml": "workbooks", + + /* Worksheet */ + "application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml": "sheets", + "application/vnd.ms-excel.worksheet": "sheets", + "application/vnd.ms-excel.binIndexWs": "TODO", /* Binary Index */ + + /* Chartsheet */ + "application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml": "charts", + "application/vnd.ms-excel.chartsheet": "charts", + + /* Macrosheet */ + "application/vnd.ms-excel.macrosheet+xml": "macros", + "application/vnd.ms-excel.macrosheet": "macros", + "application/vnd.ms-excel.intlmacrosheet": "TODO", + "application/vnd.ms-excel.binIndexMs": "TODO", /* Binary Index */ + + /* Dialogsheet */ + "application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml": "dialogs", + "application/vnd.ms-excel.dialogsheet": "dialogs", + + /* Shared Strings */ + "application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml": "strs", + "application/vnd.ms-excel.sharedStrings": "strs", + + /* Styles */ + "application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml": "styles", + "application/vnd.ms-excel.styles": "styles", + + /* File Properties */ + "application/vnd.openxmlformats-package.core-properties+xml": "coreprops", + "application/vnd.openxmlformats-officedocument.custom-properties+xml": "custprops", + "application/vnd.openxmlformats-officedocument.extended-properties+xml": "extprops", + + /* Custom Data Properties */ + "application/vnd.openxmlformats-officedocument.customXmlProperties+xml": "TODO", + "application/vnd.openxmlformats-officedocument.spreadsheetml.customProperty": "TODO", + + /* Comments */ + "application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml": "comments", + "application/vnd.ms-excel.comments": "comments", + "application/vnd.ms-excel.threadedcomments+xml": "threadedcomments", + "application/vnd.ms-excel.person+xml": "people", + + /* Metadata (Stock/Geography and Dynamic Array) */ + "application/vnd.openxmlformats-officedocument.spreadsheetml.sheetMetadata+xml": "metadata", + "application/vnd.ms-excel.sheetMetadata": "metadata", + + /* PivotTable */ + "application/vnd.ms-excel.pivotTable": "TODO", + "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotTable+xml": "TODO", + + /* Chart Objects */ + "application/vnd.openxmlformats-officedocument.drawingml.chart+xml": "TODO", + + /* Chart Colors */ + "application/vnd.ms-office.chartcolorstyle+xml": "TODO", + + /* Chart Style */ + "application/vnd.ms-office.chartstyle+xml": "TODO", + + /* Chart Advanced */ + "application/vnd.ms-office.chartex+xml": "TODO", + + /* Calculation Chain */ + "application/vnd.ms-excel.calcChain": "calcchains", + "application/vnd.openxmlformats-officedocument.spreadsheetml.calcChain+xml": "calcchains", + + /* Printer Settings */ + "application/vnd.openxmlformats-officedocument.spreadsheetml.printerSettings": "TODO", + + /* ActiveX */ + "application/vnd.ms-office.activeX": "TODO", + "application/vnd.ms-office.activeX+xml": "TODO", + + /* Custom Toolbars */ + "application/vnd.ms-excel.attachedToolbars": "TODO", + + /* External Data Connections */ + "application/vnd.ms-excel.connections": "TODO", + "application/vnd.openxmlformats-officedocument.spreadsheetml.connections+xml": "TODO", + + /* External Links */ + "application/vnd.ms-excel.externalLink": "links", + "application/vnd.openxmlformats-officedocument.spreadsheetml.externalLink+xml": "links", + + /* PivotCache */ + "application/vnd.ms-excel.pivotCacheDefinition": "TODO", + "application/vnd.ms-excel.pivotCacheRecords": "TODO", + "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotCacheDefinition+xml": "TODO", + "application/vnd.openxmlformats-officedocument.spreadsheetml.pivotCacheRecords+xml": "TODO", + + /* Query Table */ + "application/vnd.ms-excel.queryTable": "TODO", + "application/vnd.openxmlformats-officedocument.spreadsheetml.queryTable+xml": "TODO", + + /* Shared Workbook */ + "application/vnd.ms-excel.userNames": "TODO", + "application/vnd.ms-excel.revisionHeaders": "TODO", + "application/vnd.ms-excel.revisionLog": "TODO", + "application/vnd.openxmlformats-officedocument.spreadsheetml.revisionHeaders+xml": "TODO", + "application/vnd.openxmlformats-officedocument.spreadsheetml.revisionLog+xml": "TODO", + "application/vnd.openxmlformats-officedocument.spreadsheetml.userNames+xml": "TODO", + + /* Single Cell Table */ + "application/vnd.ms-excel.tableSingleCells": "TODO", + "application/vnd.openxmlformats-officedocument.spreadsheetml.tableSingleCells+xml": "TODO", + + /* Slicer */ + "application/vnd.ms-excel.slicer": "TODO", + "application/vnd.ms-excel.slicerCache": "TODO", + "application/vnd.ms-excel.slicer+xml": "TODO", + "application/vnd.ms-excel.slicerCache+xml": "TODO", + + /* Sort Map */ + "application/vnd.ms-excel.wsSortMap": "TODO", + + /* Table */ + "application/vnd.ms-excel.table": "TODO", + "application/vnd.openxmlformats-officedocument.spreadsheetml.table+xml": "TODO", + + /* Themes */ + "application/vnd.openxmlformats-officedocument.theme+xml": "themes", + + /* Theme Override */ + "application/vnd.openxmlformats-officedocument.themeOverride+xml": "TODO", + + /* Timeline */ + "application/vnd.ms-excel.Timeline+xml": "TODO", /* verify */ + "application/vnd.ms-excel.TimelineCache+xml": "TODO", /* verify */ + + /* VBA */ + "application/vnd.ms-office.vbaProject": "vba", + "application/vnd.ms-office.vbaProjectSignature": "TODO", + + /* Volatile Dependencies */ + "application/vnd.ms-office.volatileDependencies": "TODO", + "application/vnd.openxmlformats-officedocument.spreadsheetml.volatileDependencies+xml": "TODO", + + /* Control Properties */ + "application/vnd.ms-excel.controlproperties+xml": "TODO", + + /* Data Model */ + "application/vnd.openxmlformats-officedocument.model+data": "TODO", + + /* Survey */ + "application/vnd.ms-excel.Survey+xml": "TODO", + + /* Drawing */ + "application/vnd.openxmlformats-officedocument.drawing+xml": "drawings", + "application/vnd.openxmlformats-officedocument.drawingml.chartshapes+xml": "TODO", + "application/vnd.openxmlformats-officedocument.drawingml.diagramColors+xml": "TODO", + "application/vnd.openxmlformats-officedocument.drawingml.diagramData+xml": "TODO", + "application/vnd.openxmlformats-officedocument.drawingml.diagramLayout+xml": "TODO", + "application/vnd.openxmlformats-officedocument.drawingml.diagramStyle+xml": "TODO", + + /* VML */ + "application/vnd.openxmlformats-officedocument.vmlDrawing": "TODO", + + "application/vnd.openxmlformats-package.relationships+xml": "rels", + "application/vnd.openxmlformats-officedocument.oleObject": "TODO", + + /* Image */ + "image/png": "TODO", + + "sheet": "js" +}/*:any*/); + +var CT_LIST = { + workbooks: { + xlsx: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet.main+xml", + xlsm: "application/vnd.ms-excel.sheet.macroEnabled.main+xml", + xlsb: "application/vnd.ms-excel.sheet.binary.macroEnabled.main", + xlam: "application/vnd.ms-excel.addin.macroEnabled.main+xml", + xltx: "application/vnd.openxmlformats-officedocument.spreadsheetml.template.main+xml" + }, + strs: { /* Shared Strings */ + xlsx: "application/vnd.openxmlformats-officedocument.spreadsheetml.sharedStrings+xml", + xlsb: "application/vnd.ms-excel.sharedStrings" + }, + comments: { /* Comments */ + xlsx: "application/vnd.openxmlformats-officedocument.spreadsheetml.comments+xml", + xlsb: "application/vnd.ms-excel.comments" + }, + sheets: { /* Worksheet */ + xlsx: "application/vnd.openxmlformats-officedocument.spreadsheetml.worksheet+xml", + xlsb: "application/vnd.ms-excel.worksheet" + }, + charts: { /* Chartsheet */ + xlsx: "application/vnd.openxmlformats-officedocument.spreadsheetml.chartsheet+xml", + xlsb: "application/vnd.ms-excel.chartsheet" + }, + dialogs: { /* Dialogsheet */ + xlsx: "application/vnd.openxmlformats-officedocument.spreadsheetml.dialogsheet+xml", + xlsb: "application/vnd.ms-excel.dialogsheet" + }, + macros: { /* Macrosheet (Excel 4.0 Macros) */ + xlsx: "application/vnd.ms-excel.macrosheet+xml", + xlsb: "application/vnd.ms-excel.macrosheet" + }, + metadata: { /* Metadata (Stock/Geography and Dynamic Array) */ + xlsx: "application/vnd.openxmlformats-officedocument.spreadsheetml.sheetMetadata+xml", + xlsb: "application/vnd.ms-excel.sheetMetadata" + }, + styles: { /* Styles */ + xlsx: "application/vnd.openxmlformats-officedocument.spreadsheetml.styles+xml", + xlsb: "application/vnd.ms-excel.styles" + } +}; + +function new_ct()/*:any*/ { + return ({ + workbooks:[], sheets:[], charts:[], dialogs:[], macros:[], + rels:[], strs:[], comments:[], threadedcomments:[], links:[], + coreprops:[], extprops:[], custprops:[], themes:[], styles:[], + calcchains:[], vba: [], drawings: [], metadata: [], people:[], + TODO:[], xmlns: "" }/*:any*/); +} + +function parse_ct(data/*:?string*/) { + var ct = new_ct(); + if(!data || !data.match) return ct; + var ctext = {}; + (data.match(tagregex)||[]).forEach(function(x) { + var y = parsexmltag(x); + switch(y[0].replace(nsregex,"<")) { + case ' 0 ? ct.calcchains[0] : ""; + ct.sst = ct.strs.length > 0 ? ct.strs[0] : ""; + ct.style = ct.styles.length > 0 ? ct.styles[0] : ""; + ct.defaults = ctext; + delete ct.calcchains; + return ct; +} + +function write_ct(ct, opts)/*:string*/ { + var type2ct/*{[string]:Array}*/ = evert_arr(ct2type); + + var o/*:Array*/ = [], v; + o[o.length] = (XML_HEADER); + o[o.length] = writextag('Types', null, { + 'xmlns': XMLNS.CT, + 'xmlns:xsd': XMLNS.xsd, + 'xmlns:xsi': XMLNS.xsi + }); + + o = o.concat([ + ['xml', 'application/xml'], + ['bin', 'application/vnd.ms-excel.sheet.binary.macroEnabled.main'], + ['vml', 'application/vnd.openxmlformats-officedocument.vmlDrawing'], + ['data', 'application/vnd.openxmlformats-officedocument.model+data'], + /* from test files */ + ['bmp', 'image/bmp'], + ['png', 'image/png'], + ['gif', 'image/gif'], + ['emf', 'image/x-emf'], + ['wmf', 'image/x-wmf'], + ['jpg', 'image/jpeg'], ['jpeg', 'image/jpeg'], + ['tif', 'image/tiff'], ['tiff', 'image/tiff'], + ['pdf', 'application/pdf'], + ['rels', 'application/vnd.openxmlformats-package.relationships+xml'] + ].map(function(x) { + return writextag('Default', null, {'Extension':x[0], 'ContentType': x[1]}); + })); + + /* only write first instance */ + var f1 = function(w) { + if(ct[w] && ct[w].length > 0) { + v = ct[w][0]; + o[o.length] = (writextag('Override', null, { + 'PartName': (v[0] == '/' ? "":"/") + v, + 'ContentType': CT_LIST[w][opts.bookType] || CT_LIST[w]['xlsx'] + })); + } + }; + + /* book type-specific */ + var f2 = function(w) { + (ct[w]||[]).forEach(function(v) { + o[o.length] = (writextag('Override', null, { + 'PartName': (v[0] == '/' ? "":"/") + v, + 'ContentType': CT_LIST[w][opts.bookType] || CT_LIST[w]['xlsx'] + })); + }); + }; + + /* standard type */ + var f3 = function(t) { + (ct[t]||[]).forEach(function(v) { + o[o.length] = (writextag('Override', null, { + 'PartName': (v[0] == '/' ? "":"/") + v, + 'ContentType': type2ct[t][0] + })); + }); + }; + + f1('workbooks'); + f2('sheets'); + f2('charts'); + f3('themes'); + ['strs', 'styles'].forEach(f1); + ['coreprops', 'extprops', 'custprops'].forEach(f3); + f3('vba'); + f3('comments'); + f3('threadedcomments'); + f3('drawings'); + f2('metadata'); + f3('people'); + if(o.length>2){ o[o.length] = (''); o[1]=o[1].replace("/>",">"); } + return o.join(""); +} +/* 9.3 Relationships */ +var RELS = ({ + WB: "http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument", + SHEET: "http://sheetjs.openxmlformats.org/officeDocument/2006/relationships/officeDocument", + HLINK: "http://schemas.openxmlformats.org/officeDocument/2006/relationships/hyperlink", + VML: "http://schemas.openxmlformats.org/officeDocument/2006/relationships/vmlDrawing", + XPATH: "http://schemas.openxmlformats.org/officeDocument/2006/relationships/externalLinkPath", + XMISS: "http://schemas.microsoft.com/office/2006/relationships/xlExternalLinkPath/xlPathMissing", + XLINK: "http://schemas.openxmlformats.org/officeDocument/2006/relationships/externalLink", + CXML: "http://schemas.openxmlformats.org/officeDocument/2006/relationships/customXml", + CXMLP: "http://schemas.openxmlformats.org/officeDocument/2006/relationships/customXmlProps", + CMNT: "http://schemas.openxmlformats.org/officeDocument/2006/relationships/comments", + CORE_PROPS: "http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties", + EXT_PROPS: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties', + CUST_PROPS: 'http://schemas.openxmlformats.org/officeDocument/2006/relationships/custom-properties', + SST: "http://schemas.openxmlformats.org/officeDocument/2006/relationships/sharedStrings", + STY: "http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles", + THEME: "http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme", + CHART: "http://schemas.openxmlformats.org/officeDocument/2006/relationships/chart", + CHARTEX: "http://schemas.microsoft.com/office/2014/relationships/chartEx", + CS: "http://schemas.openxmlformats.org/officeDocument/2006/relationships/chartsheet", + WS: [ + "http://schemas.openxmlformats.org/officeDocument/2006/relationships/worksheet", + "http://purl.oclc.org/ooxml/officeDocument/relationships/worksheet" + ], + DS: "http://schemas.openxmlformats.org/officeDocument/2006/relationships/dialogsheet", + MS: "http://schemas.microsoft.com/office/2006/relationships/xlMacrosheet", + IMG: "http://schemas.openxmlformats.org/officeDocument/2006/relationships/image", + DRAW: "http://schemas.openxmlformats.org/officeDocument/2006/relationships/drawing", + XLMETA: "http://schemas.openxmlformats.org/officeDocument/2006/relationships/sheetMetadata", + TCMNT: "http://schemas.microsoft.com/office/2017/10/relationships/threadedComment", + PEOPLE: "http://schemas.microsoft.com/office/2017/10/relationships/person", + VBA: "http://schemas.microsoft.com/office/2006/relationships/vbaProject" +}/*:any*/); + + +/* 9.3.3 Representing Relationships */ +function get_rels_path(file/*:string*/)/*:string*/ { + var n = file.lastIndexOf("/"); + return file.slice(0,n+1) + '_rels/' + file.slice(n+1) + ".rels"; +} + +function parse_rels(data/*:?string*/, currentFilePath/*:string*/) { + var rels = {"!id":{}}; + if (!data) return rels; + if (currentFilePath.charAt(0) !== '/') { + currentFilePath = '/'+currentFilePath; + } + var hash = {}; + + (data.match(tagregex)||[]).forEach(function(x) { + var y = parsexmltag(x); + /* 9.3.2.2 OPC_Relationships */ + if (y[0] === '2){ o[o.length] = (''); o[1]=o[1].replace("/>",">"); } + return o.join(""); +} + +function add_rels(rels, rId/*:number*/, f, type, relobj, targetmode/*:?string*/)/*:number*/ { + if(!relobj) relobj = {}; + if(!rels['!id']) rels['!id'] = {}; + if(!rels['!idx']) rels['!idx'] = 1; + if(rId < 0) for(rId = rels['!idx']; rels['!id']['rId' + rId]; ++rId){/* empty */} + rels['!idx'] = rId + 1; + relobj.Id = 'rId' + rId; + relobj.Type = type; + relobj.Target = f; + if(targetmode) relobj.TargetMode = targetmode; + else if([RELS.HLINK, RELS.XPATH, RELS.XMISS].indexOf(relobj.Type) > -1) relobj.TargetMode = "External"; + if(rels['!id'][relobj.Id]) throw new Error("Cannot rewrite rId " + rId); + rels['!id'][relobj.Id] = relobj; + rels[('/' + relobj.Target).replace("//","/")] = relobj; + return rId; +} +/* Open Document Format for Office Applications (OpenDocument) Version 1.2 */ +/* Part 3 Section 4 Manifest File */ +var CT_ODS = "application/vnd.oasis.opendocument.spreadsheet"; +function parse_manifest(d, opts) { + var str = xlml_normalize(d); + var Rn; + var FEtag; + while((Rn = xlmlregex.exec(str))) switch(Rn[3]) { + case 'manifest': break; // 4.2 + case 'file-entry': // 4.3 + FEtag = parsexmltag(Rn[0], false); + if(FEtag.path == '/' && FEtag.type !== CT_ODS) throw new Error("This OpenDocument is not a spreadsheet"); + break; + case 'encryption-data': // 4.4 + case 'algorithm': // 4.5 + case 'start-key-generation': // 4.6 + case 'key-derivation': // 4.7 + throw new Error("Unsupported ODS Encryption"); + default: if(opts && opts.WTF) throw Rn; + } +} + +function write_manifest(manifest/*:Array >*/)/*:string*/ { + var o = [XML_HEADER]; + o.push('\n'); + o.push(' \n'); + for(var i = 0; i < manifest.length; ++i) o.push(' \n'); + o.push(''); + return o.join(""); +} + +/* Part 3 Section 6 Metadata Manifest File */ +function write_rdf_type(file/*:string*/, res/*:string*/, tag/*:?string*/) { + return [ + ' \n', + ' \n', + ' \n' + ].join(""); +} +function write_rdf_has(base/*:string*/, file/*:string*/) { + return [ + ' \n', + ' \n', + ' \n' + ].join(""); +} +function write_rdf(rdf) { + var o = [XML_HEADER]; + o.push('\n'); + for(var i = 0; i != rdf.length; ++i) { + o.push(write_rdf_type(rdf[i][0], rdf[i][1])); + o.push(write_rdf_has("",rdf[i][0])); + } + o.push(write_rdf_type("","Document", "pkg")); + o.push(''); + return o.join(""); +} +/* TODO: pull properties */ +function write_meta_ods(/*:: wb: Workbook, opts: any*/)/*:string*/ { + return 'Sheet' + 'JS ' + XLSX.version + ''; +} + +/* ECMA-376 Part II 11.1 Core Properties Part */ +/* [MS-OSHARED] 2.3.3.2.[1-2].1 (PIDSI/PIDDSI) */ +var CORE_PROPS/*:Array >*/ = [ + ["cp:category", "Category"], + ["cp:contentStatus", "ContentStatus"], + ["cp:keywords", "Keywords"], + ["cp:lastModifiedBy", "LastAuthor"], + ["cp:lastPrinted", "LastPrinted"], + ["cp:revision", "RevNumber"], + ["cp:version", "Version"], + ["dc:creator", "Author"], + ["dc:description", "Comments"], + ["dc:identifier", "Identifier"], + ["dc:language", "Language"], + ["dc:subject", "Subject"], + ["dc:title", "Title"], + ["dcterms:created", "CreatedDate", 'date'], + ["dcterms:modified", "ModifiedDate", 'date'] +]; + +var CORE_PROPS_REGEX/*:Array*/ = /*#__PURE__*/(function() { + var r = new Array(CORE_PROPS.length); + for(var i = 0; i < CORE_PROPS.length; ++i) { + var f = CORE_PROPS[i]; + var g = "(?:"+ f[0].slice(0,f[0].indexOf(":")) +":)"+ f[0].slice(f[0].indexOf(":")+1); + r[i] = new RegExp("<" + g + "[^>]*>([\\s\\S]*?)<\/" + g + ">"); + } + return r; +})(); + +function parse_core_props(data) { + var p = {}; + data = utf8read(data); + + for(var i = 0; i < CORE_PROPS.length; ++i) { + var f = CORE_PROPS[i], cur = data.match(CORE_PROPS_REGEX[i]); + if(cur != null && cur.length > 0) p[f[1]] = unescapexml(cur[1]); + if(f[2] === 'date' && p[f[1]]) p[f[1]] = parseDate(p[f[1]]); + } + + return p; +} + +function cp_doit(f, g, h, o, p) { + if(p[f] != null || g == null || g === "") return; + p[f] = g; + g = escapexml(g); + o[o.length] = (h ? writextag(f,g,h) : writetag(f,g)); +} + +function write_core_props(cp, _opts) { + var opts = _opts || {}; + var o = [XML_HEADER, writextag('cp:coreProperties', null, { + //'xmlns': XMLNS.CORE_PROPS, + 'xmlns:cp': XMLNS.CORE_PROPS, + 'xmlns:dc': XMLNS.dc, + 'xmlns:dcterms': XMLNS.dcterms, + 'xmlns:dcmitype': XMLNS.dcmitype, + 'xmlns:xsi': XMLNS.xsi + })], p = {}; + if(!cp && !opts.Props) return o.join(""); + + if(cp) { + if(cp.CreatedDate != null) cp_doit("dcterms:created", typeof cp.CreatedDate === "string" ? cp.CreatedDate : write_w3cdtf(cp.CreatedDate, opts.WTF), {"xsi:type":"dcterms:W3CDTF"}, o, p); + if(cp.ModifiedDate != null) cp_doit("dcterms:modified", typeof cp.ModifiedDate === "string" ? cp.ModifiedDate : write_w3cdtf(cp.ModifiedDate, opts.WTF), {"xsi:type":"dcterms:W3CDTF"}, o, p); + } + + for(var i = 0; i != CORE_PROPS.length; ++i) { + var f = CORE_PROPS[i]; + var v = opts.Props && opts.Props[f[1]] != null ? opts.Props[f[1]] : cp ? cp[f[1]] : null; + if(v === true) v = "1"; + else if(v === false) v = "0"; + else if(typeof v == "number") v = String(v); + if(v != null) cp_doit(f[0], v, null, o, p); + } + if(o.length>2){ o[o.length] = (''); o[1]=o[1].replace("/>",">"); } + return o.join(""); +} +/* 15.2.12.3 Extended File Properties Part */ +/* [MS-OSHARED] 2.3.3.2.[1-2].1 (PIDSI/PIDDSI) */ +var EXT_PROPS/*:Array >*/ = [ + ["Application", "Application", "string"], + ["AppVersion", "AppVersion", "string"], + ["Company", "Company", "string"], + ["DocSecurity", "DocSecurity", "string"], + ["Manager", "Manager", "string"], + ["HyperlinksChanged", "HyperlinksChanged", "bool"], + ["SharedDoc", "SharedDoc", "bool"], + ["LinksUpToDate", "LinksUpToDate", "bool"], + ["ScaleCrop", "ScaleCrop", "bool"], + ["HeadingPairs", "HeadingPairs", "raw"], + ["TitlesOfParts", "TitlesOfParts", "raw"] +]; + +var PseudoPropsPairs = [ + "Worksheets", "SheetNames", + "NamedRanges", "DefinedNames", + "Chartsheets", "ChartNames" +]; +function load_props_pairs(HP/*:string|Array>*/, TOP, props, opts) { + var v = []; + if(typeof HP == "string") v = parseVector(HP, opts); + else for(var j = 0; j < HP.length; ++j) v = v.concat(HP[j].map(function(hp) { return {v:hp}; })); + var parts = (typeof TOP == "string") ? parseVector(TOP, opts).map(function (x) { return x.v; }) : TOP; + var idx = 0, len = 0; + if(parts.length > 0) for(var i = 0; i !== v.length; i += 2) { + len = +(v[i+1].v); + switch(v[i].v) { + case "Worksheets": + case "工作表": + case "Листы": + case "أوراق العمل": + case "ワークシート": + case "גליונות עבודה": + case "Arbeitsblätter": + case "Çalışma Sayfaları": + case "Feuilles de calcul": + case "Fogli di lavoro": + case "Folhas de cálculo": + case "Planilhas": + case "Regneark": + case "Hojas de cálculo": + case "Werkbladen": + props.Worksheets = len; + props.SheetNames = parts.slice(idx, idx + len); + break; + + case "Named Ranges": + case "Rangos con nombre": + case "名前付き一覧": + case "Benannte Bereiche": + case "Navngivne områder": + props.NamedRanges = len; + props.DefinedNames = parts.slice(idx, idx + len); + break; + + case "Charts": + case "Diagramme": + props.Chartsheets = len; + props.ChartNames = parts.slice(idx, idx + len); + break; + } + idx += len; + } +} + +function parse_ext_props(data, p, opts) { + var q = {}; if(!p) p = {}; + data = utf8read(data); + + EXT_PROPS.forEach(function(f) { + var xml = (data.match(matchtag(f[0]))||[])[1]; + switch(f[2]) { + case "string": if(xml) p[f[1]] = unescapexml(xml); break; + case "bool": p[f[1]] = xml === "true"; break; + case "raw": + var cur = data.match(new RegExp("<" + f[0] + "[^>]*>([\\s\\S]*?)<\/" + f[0] + ">")); + if(cur && cur.length > 0) q[f[1]] = cur[1]; + break; + } + }); + + if(q.HeadingPairs && q.TitlesOfParts) load_props_pairs(q.HeadingPairs, q.TitlesOfParts, p, opts); + + return p; +} + +function write_ext_props(cp/*::, opts*/)/*:string*/ { + var o/*:Array*/ = [], W = writextag; + if(!cp) cp = {}; + cp.Application = "SheetJS"; + o[o.length] = (XML_HEADER); + o[o.length] = (writextag('Properties', null, { + 'xmlns': XMLNS.EXT_PROPS, + 'xmlns:vt': XMLNS.vt + })); + + EXT_PROPS.forEach(function(f) { + if(cp[f[1]] === undefined) return; + var v; + switch(f[2]) { + case 'string': v = escapexml(String(cp[f[1]])); break; + case 'bool': v = cp[f[1]] ? 'true' : 'false'; break; + } + if(v !== undefined) o[o.length] = (W(f[0], v)); + }); + + /* TODO: HeadingPairs, TitlesOfParts */ + o[o.length] = (W('HeadingPairs', W('vt:vector', W('vt:variant', 'Worksheets')+W('vt:variant', W('vt:i4', String(cp.Worksheets))), {size:2, baseType:"variant"}))); + o[o.length] = (W('TitlesOfParts', W('vt:vector', cp.SheetNames.map(function(s) { return "" + escapexml(s) + ""; }).join(""), {size: cp.Worksheets, baseType:"lpstr"}))); + if(o.length>2){ o[o.length] = (''); o[1]=o[1].replace("/>",">"); } + return o.join(""); +} +/* 15.2.12.2 Custom File Properties Part */ +var custregex = /<[^>]+>[^<]*/g; +function parse_cust_props(data/*:string*/, opts) { + var p = {}, name = ""; + var m = data.match(custregex); + if(m) for(var i = 0; i != m.length; ++i) { + var x = m[i], y = parsexmltag(x); + switch(y[0]) { + case '': name = null; break; + default: if (x.indexOf(''); + var type = toks[0].slice(4), text = toks[1]; + /* 22.4.2.32 (CT_Variant). Omit the binary types from 22.4 (Variant Types) */ + switch(type) { + case 'lpstr': case 'bstr': case 'lpwstr': + p[name] = unescapexml(text); + break; + case 'bool': + p[name] = parsexmlbool(text); + break; + case 'i1': case 'i2': case 'i4': case 'i8': case 'int': case 'uint': + p[name] = parseInt(text, 10); + break; + case 'r4': case 'r8': case 'decimal': + p[name] = parseFloat(text); + break; + case 'filetime': case 'date': + p[name] = parseDate(text); + break; + case 'cy': case 'error': + p[name] = unescapexml(text); + break; + default: + if(type.slice(-1) == '/') break; + if(opts.WTF && typeof console !== 'undefined') console.warn('Unexpected', x, type, toks); + } + } else if(x.slice(0,2) === "2){ o[o.length] = ''; o[1]=o[1].replace("/>",">"); } + return o.join(""); +} +/* Common Name -> XLML Name */ +var XLMLDocPropsMap = { + Title: 'Title', + Subject: 'Subject', + Author: 'Author', + Keywords: 'Keywords', + Comments: 'Description', + LastAuthor: 'LastAuthor', + RevNumber: 'Revision', + Application: 'AppName', + /* TotalTime: 'TotalTime', */ + LastPrinted: 'LastPrinted', + CreatedDate: 'Created', + ModifiedDate: 'LastSaved', + /* Pages */ + /* Words */ + /* Characters */ + Category: 'Category', + /* PresentationFormat */ + Manager: 'Manager', + Company: 'Company', + /* Guid */ + /* HyperlinkBase */ + /* Bytes */ + /* Lines */ + /* Paragraphs */ + /* CharactersWithSpaces */ + AppVersion: 'Version', + + ContentStatus: 'ContentStatus', /* NOTE: missing from schema */ + Identifier: 'Identifier', /* NOTE: missing from schema */ + Language: 'Language' /* NOTE: missing from schema */ +}; +var evert_XLMLDPM; + +function xlml_set_prop(Props, tag/*:string*/, val) { + if(!evert_XLMLDPM) evert_XLMLDPM = evert(XLMLDocPropsMap); + tag = evert_XLMLDPM[tag] || tag; + Props[tag] = val; +} + +function xlml_write_docprops(Props, opts) { + var o/*:Array*/ = []; + keys(XLMLDocPropsMap).map(function(m) { + for(var i = 0; i < CORE_PROPS.length; ++i) if(CORE_PROPS[i][1] == m) return CORE_PROPS[i]; + for(i = 0; i < EXT_PROPS.length; ++i) if(EXT_PROPS[i][1] == m) return EXT_PROPS[i]; + throw m; + }).forEach(function(p) { + if(Props[p[1]] == null) return; + var m = opts && opts.Props && opts.Props[p[1]] != null ? opts.Props[p[1]] : Props[p[1]]; + switch(p[2]) { + case 'date': m = new Date(m).toISOString().replace(/\.\d*Z/,"Z"); break; + } + if(typeof m == 'number') m = String(m); + else if(m === true || m === false) { m = m ? "1" : "0"; } + else if(m instanceof Date) m = new Date(m).toISOString().replace(/\.\d*Z/,""); + o.push(writetag(XLMLDocPropsMap[p[1]] || p[1], m)); + }); + return writextag('DocumentProperties', o.join(""), {xmlns:XLMLNS.o }); +} +function xlml_write_custprops(Props, Custprops/*::, opts*/) { + var BLACKLIST = ["Worksheets","SheetNames"]; + var T = 'CustomDocumentProperties'; + var o/*:Array*/ = []; + if(Props) keys(Props).forEach(function(k) { + /*:: if(!Props) return; */ + if(!Object.prototype.hasOwnProperty.call(Props, k)) return; + for(var i = 0; i < CORE_PROPS.length; ++i) if(k == CORE_PROPS[i][1]) return; + for(i = 0; i < EXT_PROPS.length; ++i) if(k == EXT_PROPS[i][1]) return; + for(i = 0; i < BLACKLIST.length; ++i) if(k == BLACKLIST[i]) return; + + var m = Props[k]; + var t = "string"; + if(typeof m == 'number') { t = "float"; m = String(m); } + else if(m === true || m === false) { t = "boolean"; m = m ? "1" : "0"; } + else m = String(m); + o.push(writextag(escapexmltag(k), m, {"dt:dt":t})); + }); + if(Custprops) keys(Custprops).forEach(function(k) { + /*:: if(!Custprops) return; */ + if(!Object.prototype.hasOwnProperty.call(Custprops, k)) return; + if(Props && Object.prototype.hasOwnProperty.call(Props, k)) return; + var m = Custprops[k]; + var t = "string"; + if(typeof m == 'number') { t = "float"; m = String(m); } + else if(m === true || m === false) { t = "boolean"; m = m ? "1" : "0"; } + else if(m instanceof Date) { t = "dateTime.tz"; m = m.toISOString(); } + else m = String(m); + o.push(writextag(escapexmltag(k), m, {"dt:dt":t})); + }); + return '<' + T + ' xmlns="' + XLMLNS.o + '">' + o.join("") + ''; +} +/* [MS-DTYP] 2.3.3 FILETIME */ +/* [MS-OLEDS] 2.1.3 FILETIME (Packet Version) */ +/* [MS-OLEPS] 2.8 FILETIME (Packet Version) */ +function parse_FILETIME(blob) { + var dwLowDateTime = blob.read_shift(4), dwHighDateTime = blob.read_shift(4); + return new Date(((dwHighDateTime/1e7*Math.pow(2,32) + dwLowDateTime/1e7) - 11644473600)*1000).toISOString().replace(/\.000/,""); +} +function write_FILETIME(time/*:string|Date*/) { + var date = (typeof time == "string") ? new Date(Date.parse(time)) : time; + var t = date.getTime() / 1000 + 11644473600; + var l = t % Math.pow(2,32), h = (t - l) / Math.pow(2,32); + l *= 1e7; h *= 1e7; + var w = (l / Math.pow(2,32)) | 0; + if(w > 0) { l = l % Math.pow(2,32); h += w; } + var o = new_buf(8); o.write_shift(4, l); o.write_shift(4, h); return o; +} + +/* [MS-OSHARED] 2.3.3.1.4 Lpstr */ +function parse_lpstr(blob, type, pad/*:?number*/) { + var start = blob.l; + var str = blob.read_shift(0, 'lpstr-cp'); + if(pad) while((blob.l - start) & 3) ++blob.l; + return str; +} + +/* [MS-OSHARED] 2.3.3.1.6 Lpwstr */ +function parse_lpwstr(blob, type, pad) { + var str = blob.read_shift(0, 'lpwstr'); + if(pad) blob.l += (4 - ((str.length+1) & 3)) & 3; + return str; +} + + +/* [MS-OSHARED] 2.3.3.1.11 VtString */ +/* [MS-OSHARED] 2.3.3.1.12 VtUnalignedString */ +function parse_VtStringBase(blob, stringType, pad) { + if(stringType === 0x1F /*VT_LPWSTR*/) return parse_lpwstr(blob); + return parse_lpstr(blob, stringType, pad); +} + +function parse_VtString(blob, t/*:number*/, pad/*:?boolean*/) { return parse_VtStringBase(blob, t, pad === false ? 0: 4); } +function parse_VtUnalignedString(blob, t/*:number*/) { if(!t) throw new Error("VtUnalignedString must have positive length"); return parse_VtStringBase(blob, t, 0); } + +/* [MS-OSHARED] 2.3.3.1.7 VtVecLpwstrValue */ +function parse_VtVecLpwstrValue(blob)/*:Array*/ { + var length = blob.read_shift(4); + var ret/*:Array*/ = []; + for(var i = 0; i != length; ++i) { + var start = blob.l; + ret[i] = blob.read_shift(0, 'lpwstr').replace(chr0,''); + if((blob.l - start) & 0x02) blob.l += 2; + } + return ret; +} + +/* [MS-OSHARED] 2.3.3.1.9 VtVecUnalignedLpstrValue */ +function parse_VtVecUnalignedLpstrValue(blob)/*:Array*/ { + var length = blob.read_shift(4); + var ret/*:Array*/ = []; + for(var i = 0; i != length; ++i) ret[i] = blob.read_shift(0, 'lpstr-cp').replace(chr0,''); + return ret; +} + + +/* [MS-OSHARED] 2.3.3.1.13 VtHeadingPair */ +function parse_VtHeadingPair(blob) { + var start = blob.l; + var headingString = parse_TypedPropertyValue(blob, VT_USTR); + if(blob[blob.l] == 0x00 && blob[blob.l+1] == 0x00 && ((blob.l - start) & 0x02)) blob.l += 2; + var headerParts = parse_TypedPropertyValue(blob, VT_I4); + return [headingString, headerParts]; +} + +/* [MS-OSHARED] 2.3.3.1.14 VtVecHeadingPairValue */ +function parse_VtVecHeadingPairValue(blob) { + var cElements = blob.read_shift(4); + var out = []; + for(var i = 0; i < cElements / 2; ++i) out.push(parse_VtHeadingPair(blob)); + return out; +} + +/* [MS-OLEPS] 2.18.1 Dictionary (uses 2.17, 2.16) */ +function parse_dictionary(blob,CodePage) { + var cnt = blob.read_shift(4); + var dict/*:{[number]:string}*/ = ({}/*:any*/); + for(var j = 0; j != cnt; ++j) { + var pid = blob.read_shift(4); + var len = blob.read_shift(4); + dict[pid] = blob.read_shift(len, (CodePage === 0x4B0 ?'utf16le':'utf8')).replace(chr0,'').replace(chr1,'!'); + if(CodePage === 0x4B0 && (len % 2)) blob.l += 2; + } + if(blob.l & 3) blob.l = (blob.l>>2+1)<<2; + return dict; +} + +/* [MS-OLEPS] 2.9 BLOB */ +function parse_BLOB(blob) { + var size = blob.read_shift(4); + var bytes = blob.slice(blob.l,blob.l+size); + blob.l += size; + if((size & 3) > 0) blob.l += (4 - (size & 3)) & 3; + return bytes; +} + +/* [MS-OLEPS] 2.11 ClipboardData */ +function parse_ClipboardData(blob) { + // TODO + var o = {}; + o.Size = blob.read_shift(4); + //o.Format = blob.read_shift(4); + blob.l += o.Size + 3 - (o.Size - 1) % 4; + return o; +} + +/* [MS-OLEPS] 2.15 TypedPropertyValue */ +function parse_TypedPropertyValue(blob, type/*:number*/, _opts)/*:any*/ { + var t = blob.read_shift(2), ret, opts = _opts||{}; + blob.l += 2; + if(type !== VT_VARIANT) + if(t !== type && VT_CUSTOM.indexOf(type)===-1 && !((type & 0xFFFE) == 0x101E && (t & 0xFFFE) == 0x101E)) throw new Error('Expected type ' + type + ' saw ' + t); + switch(type === VT_VARIANT ? t : type) { + case 0x02 /*VT_I2*/: ret = blob.read_shift(2, 'i'); if(!opts.raw) blob.l += 2; return ret; + case 0x03 /*VT_I4*/: ret = blob.read_shift(4, 'i'); return ret; + case 0x0B /*VT_BOOL*/: return blob.read_shift(4) !== 0x0; + case 0x13 /*VT_UI4*/: ret = blob.read_shift(4); return ret; + case 0x1E /*VT_LPSTR*/: return parse_lpstr(blob, t, 4).replace(chr0,''); + case 0x1F /*VT_LPWSTR*/: return parse_lpwstr(blob); + case 0x40 /*VT_FILETIME*/: return parse_FILETIME(blob); + case 0x41 /*VT_BLOB*/: return parse_BLOB(blob); + case 0x47 /*VT_CF*/: return parse_ClipboardData(blob); + case 0x50 /*VT_STRING*/: return parse_VtString(blob, t, !opts.raw).replace(chr0,''); + case 0x51 /*VT_USTR*/: return parse_VtUnalignedString(blob, t/*, 4*/).replace(chr0,''); + case 0x100C /*VT_VECTOR|VT_VARIANT*/: return parse_VtVecHeadingPairValue(blob); + case 0x101E /*VT_VECTOR|VT_LPSTR*/: + case 0x101F /*VT_VECTOR|VT_LPWSTR*/: + return t == 0x101F ? parse_VtVecLpwstrValue(blob) : parse_VtVecUnalignedLpstrValue(blob); + default: throw new Error("TypedPropertyValue unrecognized type " + type + " " + t); + } +} +function write_TypedPropertyValue(type/*:number*/, value) { + var o = new_buf(4), p = new_buf(4); + o.write_shift(4, type == 0x50 ? 0x1F : type); + switch(type) { + case 0x03 /*VT_I4*/: p.write_shift(-4, value); break; + case 0x05 /*VT_I4*/: p = new_buf(8); p.write_shift(8, value, 'f'); break; + case 0x0B /*VT_BOOL*/: p.write_shift(4, value ? 0x01 : 0x00); break; + case 0x40 /*VT_FILETIME*/: /*:: if(typeof value !== "string" && !(value instanceof Date)) throw "unreachable"; */ p = write_FILETIME(value); break; + case 0x1F /*VT_LPWSTR*/: + case 0x50 /*VT_STRING*/: + /*:: if(typeof value !== "string") throw "unreachable"; */ + p = new_buf(4 + 2 * (value.length + 1) + (value.length % 2 ? 0 : 2)); + p.write_shift(4, value.length + 1); + p.write_shift(0, value, "dbcs"); + while(p.l != p.length) p.write_shift(1, 0); + break; + default: throw new Error("TypedPropertyValue unrecognized type " + type + " " + value); + } + return bconcat([o, p]); +} + +/* [MS-OLEPS] 2.20 PropertySet */ +function parse_PropertySet(blob, PIDSI) { + var start_addr = blob.l; + var size = blob.read_shift(4); + var NumProps = blob.read_shift(4); + var Props = [], i = 0; + var CodePage = 0; + var Dictionary = -1, DictObj/*:{[number]:string}*/ = ({}/*:any*/); + for(i = 0; i != NumProps; ++i) { + var PropID = blob.read_shift(4); + var Offset = blob.read_shift(4); + Props[i] = [PropID, Offset + start_addr]; + } + Props.sort(function(x,y) { return x[1] - y[1]; }); + var PropH = {}; + for(i = 0; i != NumProps; ++i) { + if(blob.l !== Props[i][1]) { + var fail = true; + if(i>0 && PIDSI) switch(PIDSI[Props[i-1][0]].t) { + case 0x02 /*VT_I2*/: if(blob.l+2 === Props[i][1]) { blob.l+=2; fail = false; } break; + case 0x50 /*VT_STRING*/: if(blob.l <= Props[i][1]) { blob.l=Props[i][1]; fail = false; } break; + case 0x100C /*VT_VECTOR|VT_VARIANT*/: if(blob.l <= Props[i][1]) { blob.l=Props[i][1]; fail = false; } break; + } + if((!PIDSI||i==0) && blob.l <= Props[i][1]) { fail=false; blob.l = Props[i][1]; } + if(fail) throw new Error("Read Error: Expected address " + Props[i][1] + ' at ' + blob.l + ' :' + i); + } + if(PIDSI) { + var piddsi = PIDSI[Props[i][0]]; + PropH[piddsi.n] = parse_TypedPropertyValue(blob, piddsi.t, {raw:true}); + if(piddsi.p === 'version') PropH[piddsi.n] = String(PropH[piddsi.n] >> 16) + "." + ("0000" + String(PropH[piddsi.n] & 0xFFFF)).slice(-4); + if(piddsi.n == "CodePage") switch(PropH[piddsi.n]) { + case 0: PropH[piddsi.n] = 1252; + /* falls through */ + case 874: + case 932: + case 936: + case 949: + case 950: + case 1250: + case 1251: + case 1253: + case 1254: + case 1255: + case 1256: + case 1257: + case 1258: + case 10000: + case 1200: + case 1201: + case 1252: + case 65000: case -536: + case 65001: case -535: + set_cp(CodePage = (PropH[piddsi.n]>>>0) & 0xFFFF); break; + default: throw new Error("Unsupported CodePage: " + PropH[piddsi.n]); + } + } else { + if(Props[i][0] === 0x1) { + CodePage = PropH.CodePage = (parse_TypedPropertyValue(blob, VT_I2)/*:number*/); + set_cp(CodePage); + if(Dictionary !== -1) { + var oldpos = blob.l; + blob.l = Props[Dictionary][1]; + DictObj = parse_dictionary(blob,CodePage); + blob.l = oldpos; + } + } else if(Props[i][0] === 0) { + if(CodePage === 0) { Dictionary = i; blob.l = Props[i+1][1]; continue; } + DictObj = parse_dictionary(blob,CodePage); + } else { + var name = DictObj[Props[i][0]]; + var val; + /* [MS-OSHARED] 2.3.3.2.3.1.2 + PROPVARIANT */ + switch(blob[blob.l]) { + case 0x41 /*VT_BLOB*/: blob.l += 4; val = parse_BLOB(blob); break; + case 0x1E /*VT_LPSTR*/: blob.l += 4; val = parse_VtString(blob, blob[blob.l-4]).replace(/\u0000+$/,""); break; + case 0x1F /*VT_LPWSTR*/: blob.l += 4; val = parse_VtString(blob, blob[blob.l-4]).replace(/\u0000+$/,""); break; + case 0x03 /*VT_I4*/: blob.l += 4; val = blob.read_shift(4, 'i'); break; + case 0x13 /*VT_UI4*/: blob.l += 4; val = blob.read_shift(4); break; + case 0x05 /*VT_R8*/: blob.l += 4; val = blob.read_shift(8, 'f'); break; + case 0x0B /*VT_BOOL*/: blob.l += 4; val = parsebool(blob, 4); break; + case 0x40 /*VT_FILETIME*/: blob.l += 4; val = parseDate(parse_FILETIME(blob)); break; + default: throw new Error("unparsed value: " + blob[blob.l]); + } + PropH[name] = val; + } + } + } + blob.l = start_addr + size; /* step ahead to skip padding */ + return PropH; +} +var XLSPSSkip = [ "CodePage", "Thumbnail", "_PID_LINKBASE", "_PID_HLINKS", "SystemIdentifier", "FMTID" ]; //.concat(PseudoPropsPairs); +function guess_property_type(val/*:any*/)/*:number*/ { + switch(typeof val) { + case "boolean": return 0x0B; + case "number": return ((val|0)==val) ? 0x03 : 0x05; + case "string": return 0x1F; + case "object": if(val instanceof Date) return 0x40; break; + } + return -1; +} +function write_PropertySet(entries, RE, PIDSI) { + var hdr = new_buf(8), piao = [], prop = []; + var sz = 8, i = 0; + + var pr = new_buf(8), pio = new_buf(8); + pr.write_shift(4, 0x0002); + pr.write_shift(4, 0x04B0); + pio.write_shift(4, 0x0001); + prop.push(pr); piao.push(pio); + sz += 8 + pr.length; + + if(!RE) { + pio = new_buf(8); + pio.write_shift(4, 0); + piao.unshift(pio); + + var bufs = [new_buf(4)]; + bufs[0].write_shift(4, entries.length); + for(i = 0; i < entries.length; ++i) { + var value = entries[i][0]; + pr = new_buf(4 + 4 + 2 * (value.length + 1) + (value.length % 2 ? 0 : 2)); + pr.write_shift(4, i+2); + pr.write_shift(4, value.length + 1); + pr.write_shift(0, value, "dbcs"); + while(pr.l != pr.length) pr.write_shift(1, 0); + bufs.push(pr); + } + pr = bconcat(bufs); + prop.unshift(pr); + sz += 8 + pr.length; + } + + for(i = 0; i < entries.length; ++i) { + if(RE && !RE[entries[i][0]]) continue; + if(XLSPSSkip.indexOf(entries[i][0]) > -1 || PseudoPropsPairs.indexOf(entries[i][0]) > -1) continue; + if(entries[i][1] == null) continue; + + var val = entries[i][1], idx = 0; + if(RE) { + idx = +RE[entries[i][0]]; + var pinfo = (PIDSI/*:: || {}*/)[idx]/*:: || {} */; + if(pinfo.p == "version" && typeof val == "string") { + /*:: if(typeof val !== "string") throw "unreachable"; */ + var arr = val.split("."); + val = ((+arr[0])<<16) + ((+arr[1])||0); + } + pr = write_TypedPropertyValue(pinfo.t, val); + } else { + var T = guess_property_type(val); + if(T == -1) { T = 0x1F; val = String(val); } + pr = write_TypedPropertyValue(T, val); + } + prop.push(pr); + + pio = new_buf(8); + pio.write_shift(4, !RE ? 2+i : idx); + piao.push(pio); + + sz += 8 + pr.length; + } + + var w = 8 * (prop.length + 1); + for(i = 0; i < prop.length; ++i) { piao[i].write_shift(4, w); w += prop[i].length; } + hdr.write_shift(4, sz); + hdr.write_shift(4, prop.length); + return bconcat([hdr].concat(piao).concat(prop)); +} + +/* [MS-OLEPS] 2.21 PropertySetStream */ +function parse_PropertySetStream(file, PIDSI, clsid) { + var blob = file.content; + if(!blob) return ({}/*:any*/); + prep_blob(blob, 0); + + var NumSets, FMTID0, FMTID1, Offset0, Offset1 = 0; + blob.chk('feff', 'Byte Order: '); + + /*var vers = */blob.read_shift(2); // TODO: check version + var SystemIdentifier = blob.read_shift(4); + var CLSID = blob.read_shift(16); + if(CLSID !== CFB.utils.consts.HEADER_CLSID && CLSID !== clsid) throw new Error("Bad PropertySet CLSID " + CLSID); + NumSets = blob.read_shift(4); + if(NumSets !== 1 && NumSets !== 2) throw new Error("Unrecognized #Sets: " + NumSets); + FMTID0 = blob.read_shift(16); Offset0 = blob.read_shift(4); + + if(NumSets === 1 && Offset0 !== blob.l) throw new Error("Length mismatch: " + Offset0 + " !== " + blob.l); + else if(NumSets === 2) { FMTID1 = blob.read_shift(16); Offset1 = blob.read_shift(4); } + var PSet0 = parse_PropertySet(blob, PIDSI); + + var rval = ({ SystemIdentifier: SystemIdentifier }/*:any*/); + for(var y in PSet0) rval[y] = PSet0[y]; + //rval.blob = blob; + rval.FMTID = FMTID0; + //rval.PSet0 = PSet0; + if(NumSets === 1) return rval; + if(Offset1 - blob.l == 2) blob.l += 2; + if(blob.l !== Offset1) throw new Error("Length mismatch 2: " + blob.l + " !== " + Offset1); + var PSet1; + try { PSet1 = parse_PropertySet(blob, null); } catch(e) {/* empty */} + for(y in PSet1) rval[y] = PSet1[y]; + rval.FMTID = [FMTID0, FMTID1]; // TODO: verify FMTID0/1 + return rval; +} +function write_PropertySetStream(entries, clsid, RE, PIDSI/*:{[key:string|number]:any}*/, entries2/*:?any*/, clsid2/*:?any*/) { + var hdr = new_buf(entries2 ? 68 : 48); + var bufs = [hdr]; + hdr.write_shift(2, 0xFFFE); + hdr.write_shift(2, 0x0000); /* TODO: type 1 props */ + hdr.write_shift(4, 0x32363237); + hdr.write_shift(16, CFB.utils.consts.HEADER_CLSID, "hex"); + hdr.write_shift(4, (entries2 ? 2 : 1)); + hdr.write_shift(16, clsid, "hex"); + hdr.write_shift(4, (entries2 ? 68 : 48)); + var ps0 = write_PropertySet(entries, RE, PIDSI); + bufs.push(ps0); + + if(entries2) { + var ps1 = write_PropertySet(entries2, null, null); + hdr.write_shift(16, clsid2, "hex"); + hdr.write_shift(4, 68 + ps0.length); + bufs.push(ps1); + } + return bconcat(bufs); +} + +function parsenoop2(blob, length) { blob.read_shift(length); return null; } +function writezeroes(n, o) { if(!o) o=new_buf(n); for(var j=0; j= 12 ? 2 : 1); + var encoding = 'sbcs-cont'; + var cp = current_codepage; + if(opts && opts.biff >= 8) current_codepage = 1200; + if(!opts || opts.biff == 8 ) { + var fHighByte = blob.read_shift(1); + if(fHighByte) { encoding = 'dbcs-cont'; } + } else if(opts.biff == 12) { + encoding = 'wstr'; + } + if(opts.biff >= 2 && opts.biff <= 5) encoding = 'cpstr'; + var o = cch ? blob.read_shift(cch, encoding) : ""; + current_codepage = cp; + return o; +} + +/* 2.5.293 XLUnicodeRichExtendedString */ +function parse_XLUnicodeRichExtendedString(blob) { + var cp = current_codepage; + current_codepage = 1200; + var cch = blob.read_shift(2), flags = blob.read_shift(1); + var /*fHighByte = flags & 0x1,*/ fExtSt = flags & 0x4, fRichSt = flags & 0x8; + var width = 1 + (flags & 0x1); // 0x0 -> utf8, 0x1 -> dbcs + var cRun = 0, cbExtRst; + var z = {}; + if(fRichSt) cRun = blob.read_shift(2); + if(fExtSt) cbExtRst = blob.read_shift(4); + var encoding = width == 2 ? 'dbcs-cont' : 'sbcs-cont'; + var msg = cch === 0 ? "" : blob.read_shift(cch, encoding); + if(fRichSt) blob.l += 4 * cRun; //TODO: parse this + if(fExtSt) blob.l += cbExtRst; //TODO: parse this + z.t = msg; + if(!fRichSt) { z.raw = "" + z.t + ""; z.r = z.t; } + current_codepage = cp; + return z; +} +function write_XLUnicodeRichExtendedString(xlstr/*:: :XLString, opts*/) { + var str = (xlstr.t||""), nfmts = 1; + + var hdr = new_buf(3 + (nfmts > 1 ? 2 : 0)); + hdr.write_shift(2, str.length); + hdr.write_shift(1, (nfmts > 1 ? 0x08 : 0x00) | 0x01); + if(nfmts > 1) hdr.write_shift(2, nfmts); + + var otext = new_buf(2 * str.length); + otext.write_shift(2 * str.length, str, 'utf16le'); + + var out = [hdr, otext]; + + return bconcat(out); +} + +/* 2.5.296 XLUnicodeStringNoCch */ +function parse_XLUnicodeStringNoCch(blob, cch, opts) { + var retval; + if(opts) { + if(opts.biff >= 2 && opts.biff <= 5) return blob.read_shift(cch, 'cpstr'); + if(opts.biff >= 12) return blob.read_shift(cch, 'dbcs-cont'); + } + var fHighByte = blob.read_shift(1); + if(fHighByte===0) { retval = blob.read_shift(cch, 'sbcs-cont'); } + else { retval = blob.read_shift(cch, 'dbcs-cont'); } + return retval; +} + +/* 2.5.294 XLUnicodeString */ +function parse_XLUnicodeString(blob, length, opts) { + var cch = blob.read_shift(opts && opts.biff == 2 ? 1 : 2); + if(cch === 0) { blob.l++; return ""; } + return parse_XLUnicodeStringNoCch(blob, cch, opts); +} +/* BIFF5 override */ +function parse_XLUnicodeString2(blob, length, opts) { + if(opts.biff > 5) return parse_XLUnicodeString(blob, length, opts); + var cch = blob.read_shift(1); + if(cch === 0) { blob.l++; return ""; } + return blob.read_shift(cch, (opts.biff <= 4 || !blob.lens ) ? 'cpstr' : 'sbcs-cont'); +} +/* TODO: BIFF5 and lower, codepage awareness */ +function write_XLUnicodeString(str, opts, o) { + if(!o) o = new_buf(3 + 2 * str.length); + o.write_shift(2, str.length); + o.write_shift(1, 1); + o.write_shift(31, str, 'utf16le'); + return o; +} + +/* [MS-XLS] 2.5.61 ControlInfo */ +function parse_ControlInfo(blob/*::, length, opts*/) { + var flags = blob.read_shift(1); + blob.l++; + var accel = blob.read_shift(2); + blob.l += 2; + return [flags, accel]; +} + +/* [MS-OSHARED] 2.3.7.6 URLMoniker TODO: flags */ +function parse_URLMoniker(blob/*::, length, opts*/) { + var len = blob.read_shift(4), start = blob.l; + var extra = false; + if(len > 24) { + /* look ahead */ + blob.l += len - 24; + if(blob.read_shift(16) === "795881f43b1d7f48af2c825dc4852763") extra = true; + blob.l = start; + } + var url = blob.read_shift((extra?len-24:len)>>1, 'utf16le').replace(chr0,""); + if(extra) blob.l += 24; + return url; +} + +/* [MS-OSHARED] 2.3.7.8 FileMoniker TODO: all fields */ +function parse_FileMoniker(blob/*::, length*/) { + var cAnti = blob.read_shift(2); + var preamble = ""; while(cAnti-- > 0) preamble += "../"; + var ansiPath = blob.read_shift(0, 'lpstr-ansi'); + blob.l += 2; //var endServer = blob.read_shift(2); + if(blob.read_shift(2) != 0xDEAD) throw new Error("Bad FileMoniker"); + var sz = blob.read_shift(4); + if(sz === 0) return preamble + ansiPath.replace(/\\/g,"/"); + var bytes = blob.read_shift(4); + if(blob.read_shift(2) != 3) throw new Error("Bad FileMoniker"); + var unicodePath = blob.read_shift(bytes>>1, 'utf16le').replace(chr0,""); + return preamble + unicodePath; +} + +/* [MS-OSHARED] 2.3.7.2 HyperlinkMoniker TODO: all the monikers */ +function parse_HyperlinkMoniker(blob, length) { + var clsid = blob.read_shift(16); length -= 16; + switch(clsid) { + case "e0c9ea79f9bace118c8200aa004ba90b": return parse_URLMoniker(blob, length); + case "0303000000000000c000000000000046": return parse_FileMoniker(blob, length); + default: throw new Error("Unsupported Moniker " + clsid); + } +} + +/* [MS-OSHARED] 2.3.7.9 HyperlinkString */ +function parse_HyperlinkString(blob/*::, length*/) { + var len = blob.read_shift(4); + var o = len > 0 ? blob.read_shift(len, 'utf16le').replace(chr0, "") : ""; + return o; +} +function write_HyperlinkString(str/*:string*/, o) { + if(!o) o = new_buf(6 + str.length * 2); + o.write_shift(4, 1 + str.length); + for(var i = 0; i < str.length; ++i) o.write_shift(2, str.charCodeAt(i)); + o.write_shift(2, 0); + return o; +} + +/* [MS-OSHARED] 2.3.7.1 Hyperlink Object */ +function parse_Hyperlink(blob, length)/*:Hyperlink*/ { + var end = blob.l + length; + var sVer = blob.read_shift(4); + if(sVer !== 2) throw new Error("Unrecognized streamVersion: " + sVer); + var flags = blob.read_shift(2); + blob.l += 2; + var displayName, targetFrameName, moniker, oleMoniker, Loc="", guid, fileTime; + if(flags & 0x0010) displayName = parse_HyperlinkString(blob, end - blob.l); + if(flags & 0x0080) targetFrameName = parse_HyperlinkString(blob, end - blob.l); + if((flags & 0x0101) === 0x0101) moniker = parse_HyperlinkString(blob, end - blob.l); + if((flags & 0x0101) === 0x0001) oleMoniker = parse_HyperlinkMoniker(blob, end - blob.l); + if(flags & 0x0008) Loc = parse_HyperlinkString(blob, end - blob.l); + if(flags & 0x0020) guid = blob.read_shift(16); + if(flags & 0x0040) fileTime = parse_FILETIME(blob/*, 8*/); + blob.l = end; + var target = targetFrameName||moniker||oleMoniker||""; + if(target && Loc) target+="#"+Loc; + if(!target) target = "#" + Loc; + if((flags & 0x0002) && target.charAt(0) == "/" && target.charAt(1) != "/") target = "file://" + target; + var out = ({Target:target}/*:any*/); + if(guid) out.guid = guid; + if(fileTime) out.time = fileTime; + if(displayName) out.Tooltip = displayName; + return out; +} +function write_Hyperlink(hl) { + var out = new_buf(512), i = 0; + var Target = hl.Target; + if(Target.slice(0,7) == "file://") Target = Target.slice(7); + var hashidx = Target.indexOf("#"); + var F = hashidx > -1 ? 0x1f : 0x17; + switch(Target.charAt(0)) { case "#": F=0x1c; break; case ".": F&=~2; break; } + out.write_shift(4,2); out.write_shift(4, F); + var data = [8,6815827,6619237,4849780,83]; for(i = 0; i < data.length; ++i) out.write_shift(4, data[i]); + if(F == 0x1C) { + Target = Target.slice(1); + write_HyperlinkString(Target, out); + } else if(F & 0x02) { + data = "e0 c9 ea 79 f9 ba ce 11 8c 82 00 aa 00 4b a9 0b".split(" "); + for(i = 0; i < data.length; ++i) out.write_shift(1, parseInt(data[i], 16)); + var Pretarget = hashidx > -1 ? Target.slice(0, hashidx) : Target; + out.write_shift(4, 2*(Pretarget.length + 1)); + for(i = 0; i < Pretarget.length; ++i) out.write_shift(2, Pretarget.charCodeAt(i)); + out.write_shift(2, 0); + if(F & 0x08) write_HyperlinkString(hashidx > -1 ? Target.slice(hashidx+1): "", out); + } else { + data = "03 03 00 00 00 00 00 00 c0 00 00 00 00 00 00 46".split(" "); + for(i = 0; i < data.length; ++i) out.write_shift(1, parseInt(data[i], 16)); + var P = 0; + while(Target.slice(P*3,P*3+3)=="../"||Target.slice(P*3,P*3+3)=="..\\") ++P; + out.write_shift(2, P); + out.write_shift(4, Target.length - 3 * P + 1); + for(i = 0; i < Target.length - 3 * P; ++i) out.write_shift(1, Target.charCodeAt(i + 3 * P) & 0xFF); + out.write_shift(1, 0); + out.write_shift(2, 0xFFFF); + out.write_shift(2, 0xDEAD); + for(i = 0; i < 6; ++i) out.write_shift(4, 0); + } + return out.slice(0, out.l); +} + +/* 2.5.178 LongRGBA */ +function parse_LongRGBA(blob/*::, length*/) { var r = blob.read_shift(1), g = blob.read_shift(1), b = blob.read_shift(1), a = blob.read_shift(1); return [r,g,b,a]; } + +/* 2.5.177 LongRGB */ +function parse_LongRGB(blob, length) { var x = parse_LongRGBA(blob, length); x[3] = 0; return x; } + + +/* [MS-XLS] 2.5.19 */ +function parse_XLSCell(blob/*::, length*/)/*:Cell*/ { + var rw = blob.read_shift(2); // 0-indexed + var col = blob.read_shift(2); + var ixfe = blob.read_shift(2); + return ({r:rw, c:col, ixfe:ixfe}/*:any*/); +} +function write_XLSCell(R/*:number*/, C/*:number*/, ixfe/*:?number*/, o) { + if(!o) o = new_buf(6); + o.write_shift(2, R); + o.write_shift(2, C); + o.write_shift(2, ixfe||0); + return o; +} + +/* [MS-XLS] 2.5.134 */ +function parse_frtHeader(blob) { + var rt = blob.read_shift(2); + var flags = blob.read_shift(2); // TODO: parse these flags + blob.l += 8; + return {type: rt, flags: flags}; +} + + + +function parse_OptXLUnicodeString(blob, length, opts) { return length === 0 ? "" : parse_XLUnicodeString2(blob, length, opts); } + +/* [MS-XLS] 2.5.344 */ +function parse_XTI(blob, length, opts) { + var w = opts.biff > 8 ? 4 : 2; + var iSupBook = blob.read_shift(w), itabFirst = blob.read_shift(w,'i'), itabLast = blob.read_shift(w,'i'); + return [iSupBook, itabFirst, itabLast]; +} + +/* [MS-XLS] 2.5.218 */ +function parse_RkRec(blob) { + var ixfe = blob.read_shift(2); + var RK = parse_RkNumber(blob); + return [ixfe, RK]; +} + +/* [MS-XLS] 2.5.1 */ +function parse_AddinUdf(blob, length, opts) { + blob.l += 4; length -= 4; + var l = blob.l + length; + var udfName = parse_ShortXLUnicodeString(blob, length, opts); + var cb = blob.read_shift(2); + l -= blob.l; + if(cb !== l) throw new Error("Malformed AddinUdf: padding = " + l + " != " + cb); + blob.l += cb; + return udfName; +} + +/* [MS-XLS] 2.5.209 TODO: Check sizes */ +function parse_Ref8U(blob/*::, length*/) { + var rwFirst = blob.read_shift(2); + var rwLast = blob.read_shift(2); + var colFirst = blob.read_shift(2); + var colLast = blob.read_shift(2); + return {s:{c:colFirst, r:rwFirst}, e:{c:colLast,r:rwLast}}; +} +function write_Ref8U(r/*:Range*/, o) { + if(!o) o = new_buf(8); + o.write_shift(2, r.s.r); + o.write_shift(2, r.e.r); + o.write_shift(2, r.s.c); + o.write_shift(2, r.e.c); + return o; +} + +/* [MS-XLS] 2.5.211 */ +function parse_RefU(blob/*::, length*/) { + var rwFirst = blob.read_shift(2); + var rwLast = blob.read_shift(2); + var colFirst = blob.read_shift(1); + var colLast = blob.read_shift(1); + return {s:{c:colFirst, r:rwFirst}, e:{c:colLast,r:rwLast}}; +} + +/* [MS-XLS] 2.5.207 */ +var parse_Ref = parse_RefU; + +/* [MS-XLS] 2.5.143 */ +function parse_FtCmo(blob/*::, length*/) { + blob.l += 4; + var ot = blob.read_shift(2); + var id = blob.read_shift(2); + var flags = blob.read_shift(2); + blob.l+=12; + return [id, ot, flags]; +} + +/* [MS-XLS] 2.5.149 */ +function parse_FtNts(blob) { + var out = {}; + blob.l += 4; + blob.l += 16; // GUID TODO + out.fSharedNote = blob.read_shift(2); + blob.l += 4; + return out; +} + +/* [MS-XLS] 2.5.142 */ +function parse_FtCf(blob) { + var out = {}; + blob.l += 4; + blob.cf = blob.read_shift(2); + return out; +} + +/* [MS-XLS] 2.5.140 - 2.5.154 and friends */ +function parse_FtSkip(blob) { blob.l += 2; blob.l += blob.read_shift(2); } +var FtTab = { + /*::[*/0x00/*::]*/: parse_FtSkip, /* FtEnd */ + /*::[*/0x04/*::]*/: parse_FtSkip, /* FtMacro */ + /*::[*/0x05/*::]*/: parse_FtSkip, /* FtButton */ + /*::[*/0x06/*::]*/: parse_FtSkip, /* FtGmo */ + /*::[*/0x07/*::]*/: parse_FtCf, /* FtCf */ + /*::[*/0x08/*::]*/: parse_FtSkip, /* FtPioGrbit */ + /*::[*/0x09/*::]*/: parse_FtSkip, /* FtPictFmla */ + /*::[*/0x0A/*::]*/: parse_FtSkip, /* FtCbls */ + /*::[*/0x0B/*::]*/: parse_FtSkip, /* FtRbo */ + /*::[*/0x0C/*::]*/: parse_FtSkip, /* FtSbs */ + /*::[*/0x0D/*::]*/: parse_FtNts, /* FtNts */ + /*::[*/0x0E/*::]*/: parse_FtSkip, /* FtSbsFmla */ + /*::[*/0x0F/*::]*/: parse_FtSkip, /* FtGboData */ + /*::[*/0x10/*::]*/: parse_FtSkip, /* FtEdoData */ + /*::[*/0x11/*::]*/: parse_FtSkip, /* FtRboData */ + /*::[*/0x12/*::]*/: parse_FtSkip, /* FtCblsData */ + /*::[*/0x13/*::]*/: parse_FtSkip, /* FtLbsData */ + /*::[*/0x14/*::]*/: parse_FtSkip, /* FtCblsFmla */ + /*::[*/0x15/*::]*/: parse_FtCmo +}; +function parse_FtArray(blob, length/*::, ot*/) { + var tgt = blob.l + length; + var fts = []; + while(blob.l < tgt) { + var ft = blob.read_shift(2); + blob.l-=2; + try { + fts.push(FtTab[ft](blob, tgt - blob.l)); + } catch(e) { blob.l = tgt; return fts; } + } + if(blob.l != tgt) blob.l = tgt; //throw new Error("bad Object Ft-sequence"); + return fts; +} + +/* --- 2.4 Records --- */ + +/* [MS-XLS] 2.4.21 */ +function parse_BOF(blob, length) { + var o = {BIFFVer:0, dt:0}; + o.BIFFVer = blob.read_shift(2); length -= 2; + if(length >= 2) { o.dt = blob.read_shift(2); blob.l -= 2; } + switch(o.BIFFVer) { + case 0x0600: /* BIFF8 */ + case 0x0500: /* BIFF5 */ + case 0x0400: /* BIFF4 */ + case 0x0300: /* BIFF3 */ + case 0x0200: /* BIFF2 */ + case 0x0002: case 0x0007: /* BIFF2 */ + break; + default: if(length > 6) throw new Error("Unexpected BIFF Ver " + o.BIFFVer); + } + + blob.read_shift(length); + return o; +} +function write_BOF(wb/*:Workbook*/, t/*:number*/, o) { + var h = 0x0600, w = 16; + switch(o.bookType) { + case 'biff8': break; + case 'biff5': h = 0x0500; w = 8; break; + case 'biff4': h = 0x0004; w = 6; break; + case 'biff3': h = 0x0003; w = 6; break; + case 'biff2': h = 0x0002; w = 4; break; + case 'xla': break; + default: throw new Error("unsupported BIFF version"); + } + var out = new_buf(w); + out.write_shift(2, h); + out.write_shift(2, t); + if(w > 4) out.write_shift(2, 0x7262); + if(w > 6) out.write_shift(2, 0x07CD); + if(w > 8) { + out.write_shift(2, 0xC009); + out.write_shift(2, 0x0001); + out.write_shift(2, 0x0706); + out.write_shift(2, 0x0000); + } + return out; +} + + +/* [MS-XLS] 2.4.146 */ +function parse_InterfaceHdr(blob, length) { + if(length === 0) return 0x04b0; + if((blob.read_shift(2))!==0x04b0){/* empty */} + return 0x04b0; +} + + +/* [MS-XLS] 2.4.349 */ +function parse_WriteAccess(blob, length, opts) { + if(opts.enc) { blob.l += length; return ""; } + var l = blob.l; + // TODO: make sure XLUnicodeString doesnt overrun + var UserName = parse_XLUnicodeString2(blob, 0, opts); + blob.read_shift(length + l - blob.l); + return UserName; +} +function write_WriteAccess(s/*:string*/, opts) { + var b8 = !opts || opts.biff == 8; + var o = new_buf(b8 ? 112 : 54); + o.write_shift(opts.biff == 8 ? 2 : 1, 7); + if(b8) o.write_shift(1, 0); + o.write_shift(4, 0x33336853); + o.write_shift(4, (0x00534A74 | (b8 ? 0 : 0x20000000))); + while(o.l < o.length) o.write_shift(1, (b8 ? 0 : 32)); + return o; +} + +/* [MS-XLS] 2.4.351 */ +function parse_WsBool(blob, length, opts) { + var flags = opts && opts.biff == 8 || length == 2 ? blob.read_shift(2) : (blob.l += length, 0); + return { fDialog: flags & 0x10, fBelow: flags & 0x40, fRight: flags & 0x80 }; +} + +/* [MS-XLS] 2.4.28 */ +function parse_BoundSheet8(blob, length, opts) { + var pos = blob.read_shift(4); + var hidden = blob.read_shift(1) & 0x03; + var dt = blob.read_shift(1); + switch(dt) { + case 0: dt = 'Worksheet'; break; + case 1: dt = 'Macrosheet'; break; + case 2: dt = 'Chartsheet'; break; + case 6: dt = 'VBAModule'; break; + } + var name = parse_ShortXLUnicodeString(blob, 0, opts); + if(name.length === 0) name = "Sheet1"; + return { pos:pos, hs:hidden, dt:dt, name:name }; +} +function write_BoundSheet8(data, opts) { + var w = (!opts || opts.biff >= 8 ? 2 : 1); + var o = new_buf(8 + w * data.name.length); + o.write_shift(4, data.pos); + o.write_shift(1, data.hs || 0); + o.write_shift(1, data.dt); + o.write_shift(1, data.name.length); + if(opts.biff >= 8) o.write_shift(1, 1); + o.write_shift(w * data.name.length, data.name, opts.biff < 8 ? 'sbcs' : 'utf16le'); + var out = o.slice(0, o.l); + out.l = o.l; return out; +} + +/* [MS-XLS] 2.4.265 TODO */ +function parse_SST(blob, length)/*:SST*/ { + var end = blob.l + length; + var cnt = blob.read_shift(4); + var ucnt = blob.read_shift(4); + var strs/*:SST*/ = ([]/*:any*/); + for(var i = 0; i != ucnt && blob.l < end; ++i) { + strs.push(parse_XLUnicodeRichExtendedString(blob)); + } + strs.Count = cnt; strs.Unique = ucnt; + return strs; +} +function write_SST(sst, opts) { + var header = new_buf(8); + header.write_shift(4, sst.Count); + header.write_shift(4, sst.Unique); + var strs = []; + for(var j = 0; j < sst.length; ++j) strs[j] = write_XLUnicodeRichExtendedString(sst[j], opts); + var o = bconcat([header].concat(strs)); + /*::(*/o/*:: :any)*/.parts = [header.length].concat(strs.map(function(str) { return str.length; })); + return o; +} + +/* [MS-XLS] 2.4.107 */ +function parse_ExtSST(blob, length) { + var extsst = {}; + extsst.dsst = blob.read_shift(2); + blob.l += length-2; + return extsst; +} + + +/* [MS-XLS] 2.4.221 TODO: check BIFF2-4 */ +function parse_Row(blob) { + var z = ({}/*:any*/); + z.r = blob.read_shift(2); + z.c = blob.read_shift(2); + z.cnt = blob.read_shift(2) - z.c; + var miyRw = blob.read_shift(2); + blob.l += 4; // reserved(2), unused(2) + var flags = blob.read_shift(1); // various flags + blob.l += 3; // reserved(8), ixfe(12), flags(4) + if(flags & 0x07) z.level = flags & 0x07; + // collapsed: flags & 0x10 + if(flags & 0x20) z.hidden = true; + if(flags & 0x40) z.hpt = miyRw / 20; + return z; +} + + +/* [MS-XLS] 2.4.125 */ +function parse_ForceFullCalculation(blob) { + var header = parse_frtHeader(blob); + if(header.type != 0x08A3) throw new Error("Invalid Future Record " + header.type); + var fullcalc = blob.read_shift(4); + return fullcalc !== 0x0; +} + + + + + +/* [MS-XLS] 2.4.215 rt */ +function parse_RecalcId(blob) { + blob.read_shift(2); + return blob.read_shift(4); +} + +/* [MS-XLS] 2.4.87 */ +function parse_DefaultRowHeight(blob, length, opts) { + var f = 0; + if(!(opts && opts.biff == 2)) { + f = blob.read_shift(2); + } + var miyRw = blob.read_shift(2); + if((opts && opts.biff == 2)) { + f = 1 - (miyRw >> 15); miyRw &= 0x7fff; + } + var fl = {Unsynced:f&1,DyZero:(f&2)>>1,ExAsc:(f&4)>>2,ExDsc:(f&8)>>3}; + return [fl, miyRw]; +} + +/* [MS-XLS] 2.4.345 TODO */ +function parse_Window1(blob) { + var xWn = blob.read_shift(2), yWn = blob.read_shift(2), dxWn = blob.read_shift(2), dyWn = blob.read_shift(2); + var flags = blob.read_shift(2), iTabCur = blob.read_shift(2), iTabFirst = blob.read_shift(2); + var ctabSel = blob.read_shift(2), wTabRatio = blob.read_shift(2); + return { Pos: [xWn, yWn], Dim: [dxWn, dyWn], Flags: flags, CurTab: iTabCur, + FirstTab: iTabFirst, Selected: ctabSel, TabRatio: wTabRatio }; +} +function write_Window1(/*::opts*/) { + var o = new_buf(18); + o.write_shift(2, 0); + o.write_shift(2, 0); + o.write_shift(2, 0x7260); + o.write_shift(2, 0x44c0); + o.write_shift(2, 0x38); + o.write_shift(2, 0); + o.write_shift(2, 0); + o.write_shift(2, 1); + o.write_shift(2, 0x01f4); + return o; +} +/* [MS-XLS] 2.4.346 TODO */ +function parse_Window2(blob, length, opts) { + if(opts && opts.biff >= 2 && opts.biff < 5) return {}; + var f = blob.read_shift(2); + return { RTL: f & 0x40 }; +} +function write_Window2(view) { + var o = new_buf(18), f = 0x6b6; + if(view && view.RTL) f |= 0x40; + o.write_shift(2, f); + o.write_shift(4, 0); + o.write_shift(4, 64); + o.write_shift(4, 0); + o.write_shift(4, 0); + return o; +} + +/* [MS-XLS] 2.4.189 TODO */ +function parse_Pane(/*blob, length, opts*/) { +} + +/* [MS-XLS] 2.4.122 TODO */ +function parse_Font(blob, length, opts) { + var o/*:any*/ = { + dyHeight: blob.read_shift(2), + fl: blob.read_shift(2) + }; + switch((opts && opts.biff) || 8) { + case 2: break; + case 3: case 4: blob.l += 2; break; + default: blob.l += 10; break; + } + o.name = parse_ShortXLUnicodeString(blob, 0, opts); + return o; +} +function write_Font(data, opts) { + var name = data.name || "Arial"; + var b5 = (opts && (opts.biff == 5)), w = (b5 ? (15 + name.length) : (16 + 2 * name.length)); + var o = new_buf(w); + o.write_shift(2, (data.sz || 12) * 20); + o.write_shift(4, 0); + o.write_shift(2, 400); + o.write_shift(4, 0); + o.write_shift(2, 0); + o.write_shift(1, name.length); + if(!b5) o.write_shift(1, 1); + o.write_shift((b5 ? 1 : 2) * name.length, name, (b5 ? "sbcs" : "utf16le")); + return o; +} + +/* [MS-XLS] 2.4.149 */ +function parse_LabelSst(blob) { + var cell = parse_XLSCell(blob); + cell.isst = blob.read_shift(4); + return cell; +} +function write_LabelSst(R/*:number*/, C/*:number*/, v/*:number*/, os/*:number*/ /*::, opts*/) { + var o = new_buf(10); + write_XLSCell(R, C, os, o); + o.write_shift(4, v); + return o; +} + +/* [MS-XLS] 2.4.148 */ +function parse_Label(blob, length, opts) { + if(opts.biffguess && opts.biff == 2) opts.biff = 5; + var target = blob.l + length; + var cell = parse_XLSCell(blob, 6); + if(opts.biff == 2) blob.l++; + var str = parse_XLUnicodeString(blob, target - blob.l, opts); + cell.val = str; + return cell; +} +function write_Label(R/*:number*/, C/*:number*/, v/*:string*/, os/*:number*/, opts) { + var b8 = !opts || opts.biff == 8; + var o = new_buf(6 + 2 + (+b8) + (1 + b8) * v.length); + write_XLSCell(R, C, os, o); + o.write_shift(2, v.length); + if(b8) o.write_shift(1, 1); + o.write_shift((1 + b8) * v.length, v, b8 ? 'utf16le' : 'sbcs'); + return o; +} + + +/* [MS-XLS] 2.4.126 Number Formats */ +function parse_Format(blob, length, opts) { + var numFmtId = blob.read_shift(2); + var fmtstr = parse_XLUnicodeString2(blob, 0, opts); + return [numFmtId, fmtstr]; +} +function write_Format(i/*:number*/, f/*:string*/, opts, o) { + var b5 = (opts && (opts.biff == 5)); + if(!o) o = new_buf(b5 ? (3 + f.length) : (5 + 2 * f.length)); + o.write_shift(2, i); + o.write_shift((b5 ? 1 : 2), f.length); + if(!b5) o.write_shift(1, 1); + o.write_shift((b5 ? 1 : 2) * f.length, f, (b5 ? 'sbcs' : 'utf16le')); + var out = (o.length > o.l) ? o.slice(0, o.l) : o; + if(out.l == null) out.l = out.length; + return out; +} +var parse_BIFF2Format = parse_XLUnicodeString2; + +/* [MS-XLS] 2.4.90 */ +function parse_Dimensions(blob, length, opts) { + var end = blob.l + length; + var w = opts.biff == 8 || !opts.biff ? 4 : 2; + var r = blob.read_shift(w), R = blob.read_shift(w); + var c = blob.read_shift(2), C = blob.read_shift(2); + blob.l = end; + return {s: {r:r, c:c}, e: {r:R, c:C}}; +} +function write_Dimensions(range, opts) { + var w = opts.biff == 8 || !opts.biff ? 4 : 2; + var o = new_buf(2*w + 6); + o.write_shift(w, range.s.r); + o.write_shift(w, range.e.r + 1); + o.write_shift(2, range.s.c); + o.write_shift(2, range.e.c + 1); + o.write_shift(2, 0); + return o; +} + +/* [MS-XLS] 2.4.220 */ +function parse_RK(blob) { + var rw = blob.read_shift(2), col = blob.read_shift(2); + var rkrec = parse_RkRec(blob); + return {r:rw, c:col, ixfe:rkrec[0], rknum:rkrec[1]}; +} + +/* [MS-XLS] 2.4.175 */ +function parse_MulRk(blob, length) { + var target = blob.l + length - 2; + var rw = blob.read_shift(2), col = blob.read_shift(2); + var rkrecs = []; + while(blob.l < target) rkrecs.push(parse_RkRec(blob)); + if(blob.l !== target) throw new Error("MulRK read error"); + var lastcol = blob.read_shift(2); + if(rkrecs.length != lastcol - col + 1) throw new Error("MulRK length mismatch"); + return {r:rw, c:col, C:lastcol, rkrec:rkrecs}; +} +/* [MS-XLS] 2.4.174 */ +function parse_MulBlank(blob, length) { + var target = blob.l + length - 2; + var rw = blob.read_shift(2), col = blob.read_shift(2); + var ixfes = []; + while(blob.l < target) ixfes.push(blob.read_shift(2)); + if(blob.l !== target) throw new Error("MulBlank read error"); + var lastcol = blob.read_shift(2); + if(ixfes.length != lastcol - col + 1) throw new Error("MulBlank length mismatch"); + return {r:rw, c:col, C:lastcol, ixfe:ixfes}; +} + +/* [MS-XLS] 2.5.20 2.5.249 TODO: interpret values here */ +function parse_CellStyleXF(blob, length, style, opts) { + var o = {}; + var a = blob.read_shift(4), b = blob.read_shift(4); + var c = blob.read_shift(4), d = blob.read_shift(2); + o.patternType = XLSFillPattern[c >> 26]; + + if(!opts.cellStyles) return o; + o.alc = a & 0x07; + o.fWrap = (a >> 3) & 0x01; + o.alcV = (a >> 4) & 0x07; + o.fJustLast = (a >> 7) & 0x01; + o.trot = (a >> 8) & 0xFF; + o.cIndent = (a >> 16) & 0x0F; + o.fShrinkToFit = (a >> 20) & 0x01; + o.iReadOrder = (a >> 22) & 0x02; + o.fAtrNum = (a >> 26) & 0x01; + o.fAtrFnt = (a >> 27) & 0x01; + o.fAtrAlc = (a >> 28) & 0x01; + o.fAtrBdr = (a >> 29) & 0x01; + o.fAtrPat = (a >> 30) & 0x01; + o.fAtrProt = (a >> 31) & 0x01; + + o.dgLeft = b & 0x0F; + o.dgRight = (b >> 4) & 0x0F; + o.dgTop = (b >> 8) & 0x0F; + o.dgBottom = (b >> 12) & 0x0F; + o.icvLeft = (b >> 16) & 0x7F; + o.icvRight = (b >> 23) & 0x7F; + o.grbitDiag = (b >> 30) & 0x03; + + o.icvTop = c & 0x7F; + o.icvBottom = (c >> 7) & 0x7F; + o.icvDiag = (c >> 14) & 0x7F; + o.dgDiag = (c >> 21) & 0x0F; + + o.icvFore = d & 0x7F; + o.icvBack = (d >> 7) & 0x7F; + o.fsxButton = (d >> 14) & 0x01; + return o; +} +//function parse_CellXF(blob, length, opts) {return parse_CellStyleXF(blob,length,0, opts);} +//function parse_StyleXF(blob, length, opts) {return parse_CellStyleXF(blob,length,1, opts);} + +/* [MS-XLS] 2.4.353 TODO: actually do this right */ +function parse_XF(blob, length, opts) { + var o = {}; + o.ifnt = blob.read_shift(2); o.numFmtId = blob.read_shift(2); o.flags = blob.read_shift(2); + o.fStyle = (o.flags >> 2) & 0x01; + length -= 6; + o.data = parse_CellStyleXF(blob, length, o.fStyle, opts); + return o; +} +function write_XF(data, ixfeP, opts, o) { + var b5 = (opts && (opts.biff == 5)); + if(!o) o = new_buf(b5 ? 16 : 20); + o.write_shift(2, 0); + if(data.style) { + o.write_shift(2, (data.numFmtId||0)); + o.write_shift(2, 0xFFF4); + } else { + o.write_shift(2, (data.numFmtId||0)); + o.write_shift(2, (ixfeP<<4)); + } + var f = 0; + if(data.numFmtId > 0 && b5) f |= 0x0400; + o.write_shift(4, f); + o.write_shift(4, 0); + if(!b5) o.write_shift(4, 0); + o.write_shift(2, 0); + return o; +} + +/* [MS-XLS] 2.4.134 */ +function parse_Guts(blob) { + blob.l += 4; + var out = [blob.read_shift(2), blob.read_shift(2)]; + if(out[0] !== 0) out[0]--; + if(out[1] !== 0) out[1]--; + if(out[0] > 7 || out[1] > 7) throw new Error("Bad Gutters: " + out.join("|")); + return out; +} +function write_Guts(guts/*:Array*/) { + var o = new_buf(8); + o.write_shift(4, 0); + o.write_shift(2, guts[0] ? guts[0] + 1 : 0); + o.write_shift(2, guts[1] ? guts[1] + 1 : 0); + return o; +} + +/* [MS-XLS] 2.4.24 */ +function parse_BoolErr(blob, length, opts) { + var cell = parse_XLSCell(blob, 6); + if(opts.biff == 2 || length == 9) ++blob.l; + var val = parse_Bes(blob, 2); + cell.val = val; + cell.t = (val === true || val === false) ? 'b' : 'e'; + return cell; +} +function write_BoolErr(R/*:number*/, C/*:number*/, v, os/*:number*/, opts, t/*:string*/) { + var o = new_buf(8); + write_XLSCell(R, C, os, o); + write_Bes(v, t, o); + return o; +} + +/* [MS-XLS] 2.4.180 Number */ +function parse_Number(blob, length, opts) { + if(opts.biffguess && opts.biff == 2) opts.biff = 5; + var cell = parse_XLSCell(blob, 6); + var xnum = parse_Xnum(blob, 8); + cell.val = xnum; + return cell; +} +function write_Number(R/*:number*/, C/*:number*/, v, os/*:: :number, opts*/) { + var o = new_buf(14); + write_XLSCell(R, C, os, o); + write_Xnum(v, o); + return o; +} + +var parse_XLHeaderFooter = parse_OptXLUnicodeString; // TODO: parse 2.4.136 + +/* [MS-XLS] 2.4.271 */ +function parse_SupBook(blob, length, opts) { + var end = blob.l + length; + var ctab = blob.read_shift(2); + var cch = blob.read_shift(2); + opts.sbcch = cch; + if(cch == 0x0401 || cch == 0x3A01) return [cch, ctab]; + if(cch < 0x01 || cch >0xff) throw new Error("Unexpected SupBook type: "+cch); + var virtPath = parse_XLUnicodeStringNoCch(blob, cch); + /* TODO: 2.5.277 Virtual Path */ + var rgst = []; + while(end > blob.l) rgst.push(parse_XLUnicodeString(blob)); + return [cch, ctab, virtPath, rgst]; +} + +/* [MS-XLS] 2.4.105 TODO */ +function parse_ExternName(blob, length, opts) { + var flags = blob.read_shift(2); + var body; + var o = ({ + fBuiltIn: flags & 0x01, + fWantAdvise: (flags >>> 1) & 0x01, + fWantPict: (flags >>> 2) & 0x01, + fOle: (flags >>> 3) & 0x01, + fOleLink: (flags >>> 4) & 0x01, + cf: (flags >>> 5) & 0x3FF, + fIcon: flags >>> 15 & 0x01 + }/*:any*/); + if(opts.sbcch === 0x3A01) body = parse_AddinUdf(blob, length-2, opts); + //else throw new Error("unsupported SupBook cch: " + opts.sbcch); + o.body = body || blob.read_shift(length-2); + if(typeof body === "string") o.Name = body; + return o; +} + +/* [MS-XLS] 2.4.150 TODO */ +var XLSLblBuiltIn = [ + "_xlnm.Consolidate_Area", + "_xlnm.Auto_Open", + "_xlnm.Auto_Close", + "_xlnm.Extract", + "_xlnm.Database", + "_xlnm.Criteria", + "_xlnm.Print_Area", + "_xlnm.Print_Titles", + "_xlnm.Recorder", + "_xlnm.Data_Form", + "_xlnm.Auto_Activate", + "_xlnm.Auto_Deactivate", + "_xlnm.Sheet_Title", + "_xlnm._FilterDatabase" +]; +function parse_Lbl(blob, length, opts) { + var target = blob.l + length; + var flags = blob.read_shift(2); + var chKey = blob.read_shift(1); + var cch = blob.read_shift(1); + var cce = blob.read_shift(opts && opts.biff == 2 ? 1 : 2); + var itab = 0; + if(!opts || opts.biff >= 5) { + if(opts.biff != 5) blob.l += 2; + itab = blob.read_shift(2); + if(opts.biff == 5) blob.l += 2; + blob.l += 4; + } + var name = parse_XLUnicodeStringNoCch(blob, cch, opts); + if(flags & 0x20) name = XLSLblBuiltIn[name.charCodeAt(0)]; + var npflen = target - blob.l; if(opts && opts.biff == 2) --npflen; + /*jshint -W018 */ + var rgce = (target == blob.l || cce === 0 || !(npflen > 0)) ? [] : parse_NameParsedFormula(blob, npflen, opts, cce); + /*jshint +W018 */ + return { + chKey: chKey, + Name: name, + itab: itab, + rgce: rgce + }; +} + +/* [MS-XLS] 2.4.106 TODO: verify filename encoding */ +function parse_ExternSheet(blob, length, opts) { + if(opts.biff < 8) return parse_BIFF5ExternSheet(blob, length, opts); + var o = [], target = blob.l + length, len = blob.read_shift(opts.biff > 8 ? 4 : 2); + while(len-- !== 0) o.push(parse_XTI(blob, opts.biff > 8 ? 12 : 6, opts)); + // [iSupBook, itabFirst, itabLast]; + if(blob.l != target) throw new Error("Bad ExternSheet: " + blob.l + " != " + target); + return o; +} +function parse_BIFF5ExternSheet(blob, length, opts) { + if(blob[blob.l + 1] == 0x03) blob[blob.l]++; + var o = parse_ShortXLUnicodeString(blob, length, opts); + return o.charCodeAt(0) == 0x03 ? o.slice(1) : o; +} + +/* [MS-XLS] 2.4.176 TODO: check older biff */ +function parse_NameCmt(blob, length, opts) { + if(opts.biff < 8) { blob.l += length; return; } + var cchName = blob.read_shift(2); + var cchComment = blob.read_shift(2); + var name = parse_XLUnicodeStringNoCch(blob, cchName, opts); + var comment = parse_XLUnicodeStringNoCch(blob, cchComment, opts); + return [name, comment]; +} + +/* [MS-XLS] 2.4.260 */ +function parse_ShrFmla(blob, length, opts) { + var ref = parse_RefU(blob, 6); + blob.l++; + var cUse = blob.read_shift(1); + length -= 8; + return [parse_SharedParsedFormula(blob, length, opts), cUse, ref]; +} + +/* [MS-XLS] 2.4.4 TODO */ +function parse_Array(blob, length, opts) { + var ref = parse_Ref(blob, 6); + /* TODO: fAlwaysCalc */ + switch(opts.biff) { + case 2: blob.l ++; length -= 7; break; + case 3: case 4: blob.l += 2; length -= 8; break; + default: blob.l += 6; length -= 12; + } + return [ref, parse_ArrayParsedFormula(blob, length, opts, ref)]; +} + +/* [MS-XLS] 2.4.173 */ +function parse_MTRSettings(blob) { + var fMTREnabled = blob.read_shift(4) !== 0x00; + var fUserSetThreadCount = blob.read_shift(4) !== 0x00; + var cUserThreadCount = blob.read_shift(4); + return [fMTREnabled, fUserSetThreadCount, cUserThreadCount]; +} + +/* [MS-XLS] 2.5.186 TODO: BIFF5 */ +function parse_NoteSh(blob, length, opts) { + if(opts.biff < 8) return; + var row = blob.read_shift(2), col = blob.read_shift(2); + var flags = blob.read_shift(2), idObj = blob.read_shift(2); + var stAuthor = parse_XLUnicodeString2(blob, 0, opts); + if(opts.biff < 8) blob.read_shift(1); + return [{r:row,c:col}, stAuthor, idObj, flags]; +} + +/* [MS-XLS] 2.4.179 */ +function parse_Note(blob, length, opts) { + /* TODO: Support revisions */ + return parse_NoteSh(blob, length, opts); +} + +/* [MS-XLS] 2.4.168 */ +function parse_MergeCells(blob, length)/*:Array*/ { + var merges/*:Array*/ = []; + var cmcs = blob.read_shift(2); + while (cmcs--) merges.push(parse_Ref8U(blob,length)); + return merges; +} +function write_MergeCells(merges/*:Array*/) { + var o = new_buf(2 + merges.length * 8); + o.write_shift(2, merges.length); + for(var i = 0; i < merges.length; ++i) write_Ref8U(merges[i], o); + return o; +} + +/* [MS-XLS] 2.4.181 TODO: parse all the things! */ +function parse_Obj(blob, length, opts) { + if(opts && opts.biff < 8) return parse_BIFF5Obj(blob, length, opts); + var cmo = parse_FtCmo(blob, 22); // id, ot, flags + var fts = parse_FtArray(blob, length-22, cmo[1]); + return { cmo: cmo, ft:fts }; +} +/* from older spec */ +var parse_BIFF5OT = { +0x08: function(blob, length) { + var tgt = blob.l + length; + blob.l += 10; // todo + var cf = blob.read_shift(2); + blob.l += 4; + blob.l += 2; //var cbPictFmla = blob.read_shift(2); + blob.l += 2; + blob.l += 2; //var grbit = blob.read_shift(2); + blob.l += 4; + var cchName = blob.read_shift(1); + blob.l += cchName; // TODO: stName + blob.l = tgt; // TODO: fmla + return { fmt:cf }; +} +}; + +function parse_BIFF5Obj(blob, length, opts) { + blob.l += 4; //var cnt = blob.read_shift(4); + var ot = blob.read_shift(2); + var id = blob.read_shift(2); + var grbit = blob.read_shift(2); + blob.l += 2; //var colL = blob.read_shift(2); + blob.l += 2; //var dxL = blob.read_shift(2); + blob.l += 2; //var rwT = blob.read_shift(2); + blob.l += 2; //var dyT = blob.read_shift(2); + blob.l += 2; //var colR = blob.read_shift(2); + blob.l += 2; //var dxR = blob.read_shift(2); + blob.l += 2; //var rwB = blob.read_shift(2); + blob.l += 2; //var dyB = blob.read_shift(2); + blob.l += 2; //var cbMacro = blob.read_shift(2); + blob.l += 6; + length -= 36; + var fts = []; + fts.push((parse_BIFF5OT[ot]||parsenoop)(blob, length, opts)); + return { cmo: [id, ot, grbit], ft:fts }; +} + +/* [MS-XLS] 2.4.329 TODO: parse properly */ +function parse_TxO(blob, length, opts) { + var s = blob.l; + var texts = ""; +try { + blob.l += 4; + var ot = (opts.lastobj||{cmo:[0,0]}).cmo[1]; + var controlInfo; // eslint-disable-line no-unused-vars + if([0,5,7,11,12,14].indexOf(ot) == -1) blob.l += 6; + else controlInfo = parse_ControlInfo(blob, 6, opts); // eslint-disable-line no-unused-vars + var cchText = blob.read_shift(2); + /*var cbRuns = */blob.read_shift(2); + /*var ifntEmpty = */parseuint16(blob, 2); + var len = blob.read_shift(2); + blob.l += len; + //var fmla = parse_ObjFmla(blob, s + length - blob.l); + + for(var i = 1; i < blob.lens.length-1; ++i) { + if(blob.l-s != blob.lens[i]) throw new Error("TxO: bad continue record"); + var hdr = blob[blob.l]; + var t = parse_XLUnicodeStringNoCch(blob, blob.lens[i+1]-blob.lens[i]-1); + texts += t; + if(texts.length >= (hdr ? cchText : 2*cchText)) break; + } + if(texts.length !== cchText && texts.length !== cchText*2) { + throw new Error("cchText: " + cchText + " != " + texts.length); + } + + blob.l = s + length; + /* [MS-XLS] 2.5.272 TxORuns */ +// var rgTxoRuns = []; +// for(var j = 0; j != cbRuns/8-1; ++j) blob.l += 8; +// var cchText2 = blob.read_shift(2); +// if(cchText2 !== cchText) throw new Error("TxOLastRun mismatch: " + cchText2 + " " + cchText); +// blob.l += 6; +// if(s + length != blob.l) throw new Error("TxO " + (s + length) + ", at " + blob.l); + return { t: texts }; +} catch(e) { blob.l = s + length; return { t: texts }; } +} + +/* [MS-XLS] 2.4.140 */ +function parse_HLink(blob, length) { + var ref = parse_Ref8U(blob, 8); + blob.l += 16; /* CLSID */ + var hlink = parse_Hyperlink(blob, length-24); + return [ref, hlink]; +} +function write_HLink(hl) { + var O = new_buf(24); + var ref = decode_cell(hl[0]); + O.write_shift(2, ref.r); O.write_shift(2, ref.r); + O.write_shift(2, ref.c); O.write_shift(2, ref.c); + var clsid = "d0 c9 ea 79 f9 ba ce 11 8c 82 00 aa 00 4b a9 0b".split(" "); + for(var i = 0; i < 16; ++i) O.write_shift(1, parseInt(clsid[i], 16)); + return bconcat([O, write_Hyperlink(hl[1])]); +} + + +/* [MS-XLS] 2.4.141 */ +function parse_HLinkTooltip(blob, length) { + blob.read_shift(2); + var ref = parse_Ref8U(blob, 8); + var wzTooltip = blob.read_shift((length-10)/2, 'dbcs-cont'); + wzTooltip = wzTooltip.replace(chr0,""); + return [ref, wzTooltip]; +} +function write_HLinkTooltip(hl) { + var TT = hl[1].Tooltip; + var O = new_buf(10 + 2 * (TT.length + 1)); + O.write_shift(2, 0x0800); + var ref = decode_cell(hl[0]); + O.write_shift(2, ref.r); O.write_shift(2, ref.r); + O.write_shift(2, ref.c); O.write_shift(2, ref.c); + for(var i = 0; i < TT.length; ++i) O.write_shift(2, TT.charCodeAt(i)); + O.write_shift(2, 0); + return O; +} + +/* [MS-XLS] 2.4.63 */ +function parse_Country(blob)/*:[string|number, string|number]*/ { + var o = [0,0], d; + d = blob.read_shift(2); o[0] = CountryEnum[d] || d; + d = blob.read_shift(2); o[1] = CountryEnum[d] || d; + return o; +} +function write_Country(o) { + if(!o) o = new_buf(4); + o.write_shift(2, 0x01); + o.write_shift(2, 0x01); + return o; +} + +/* [MS-XLS] 2.4.50 ClrtClient */ +function parse_ClrtClient(blob) { + var ccv = blob.read_shift(2); + var o = []; + while(ccv-->0) o.push(parse_LongRGB(blob, 8)); + return o; +} + +/* [MS-XLS] 2.4.188 */ +function parse_Palette(blob) { + var ccv = blob.read_shift(2); + var o = []; + while(ccv-->0) o.push(parse_LongRGB(blob, 8)); + return o; +} + +/* [MS-XLS] 2.4.354 */ +function parse_XFCRC(blob) { + blob.l += 2; + var o = {cxfs:0, crc:0}; + o.cxfs = blob.read_shift(2); + o.crc = blob.read_shift(4); + return o; +} + +/* [MS-XLS] 2.4.53 TODO: parse flags */ +/* [MS-XLSB] 2.4.323 TODO: parse flags */ +function parse_ColInfo(blob, length, opts) { + if(!opts.cellStyles) return parsenoop(blob, length); + var w = opts && opts.biff >= 12 ? 4 : 2; + var colFirst = blob.read_shift(w); + var colLast = blob.read_shift(w); + var coldx = blob.read_shift(w); + var ixfe = blob.read_shift(w); + var flags = blob.read_shift(2); + if(w == 2) blob.l += 2; + var o = ({s:colFirst, e:colLast, w:coldx, ixfe:ixfe, flags:flags}/*:any*/); + if(opts.biff >= 5 || !opts.biff) o.level = (flags >> 8) & 0x7; + return o; +} +function write_ColInfo(col, idx) { + var o = new_buf(12); + o.write_shift(2, idx); + o.write_shift(2, idx); + o.write_shift(2, col.width * 256); + o.write_shift(2, 0); + var f = 0; + if(col.hidden) f |= 1; + o.write_shift(1, f); + f = col.level || 0; + o.write_shift(1, f); + o.write_shift(2, 0); + return o; +} + +/* [MS-XLS] 2.4.257 */ +function parse_Setup(blob, length) { + var o = {}; + if(length < 32) return o; + blob.l += 16; + o.header = parse_Xnum(blob, 8); + o.footer = parse_Xnum(blob, 8); + blob.l += 2; + return o; +} + +/* [MS-XLS] 2.4.261 */ +function parse_ShtProps(blob, length, opts) { + var def = {area:false}; + if(opts.biff != 5) { blob.l += length; return def; } + var d = blob.read_shift(1); blob.l += 3; + if((d & 0x10)) def.area = true; + return def; +} + +/* [MS-XLS] 2.4.241 */ +function write_RRTabId(n/*:number*/) { + var out = new_buf(2 * n); + for(var i = 0; i < n; ++i) out.write_shift(2, i+1); + return out; +} + +var parse_Blank = parse_XLSCell; /* [MS-XLS] 2.4.20 Just the cell */ +var parse_Scl = parseuint16a; /* [MS-XLS] 2.4.247 num, den */ +var parse_String = parse_XLUnicodeString; /* [MS-XLS] 2.4.268 */ + +/* --- Specific to versions before BIFF8 --- */ +function parse_ImData(blob) { + var cf = blob.read_shift(2); + var env = blob.read_shift(2); + var lcb = blob.read_shift(4); + var o = {fmt:cf, env:env, len:lcb, data:blob.slice(blob.l,blob.l+lcb)}; + blob.l += lcb; + return o; +} + +/* BIFF2_??? where ??? is the name from [XLS] */ +function parse_BIFF2STR(blob, length, opts) { + if(opts.biffguess && opts.biff == 5) opts.biff = 2; + var cell = parse_XLSCell(blob, 6); + ++blob.l; + var str = parse_XLUnicodeString2(blob, length-7, opts); + cell.t = 'str'; + cell.val = str; + return cell; +} + +function parse_BIFF2NUM(blob/*::, length*/) { + var cell = parse_XLSCell(blob, 6); + ++blob.l; + var num = parse_Xnum(blob, 8); + cell.t = 'n'; + cell.val = num; + return cell; +} +function write_BIFF2NUM(r/*:number*/, c/*:number*/, val/*:number*/) { + var out = new_buf(15); + write_BIFF2Cell(out, r, c); + out.write_shift(8, val, 'f'); + return out; +} + +function parse_BIFF2INT(blob) { + var cell = parse_XLSCell(blob, 6); + ++blob.l; + var num = blob.read_shift(2); + cell.t = 'n'; + cell.val = num; + return cell; +} +function write_BIFF2INT(r/*:number*/, c/*:number*/, val/*:number*/) { + var out = new_buf(9); + write_BIFF2Cell(out, r, c); + out.write_shift(2, val); + return out; +} + +function parse_BIFF2STRING(blob) { + var cch = blob.read_shift(1); + if(cch === 0) { blob.l++; return ""; } + return blob.read_shift(cch, 'sbcs-cont'); +} + +/* TODO: convert to BIFF8 font struct */ +function parse_BIFF2FONTXTRA(blob, length) { + blob.l += 6; // unknown + blob.l += 2; // font weight "bls" + blob.l += 1; // charset + blob.l += 3; // unknown + blob.l += 1; // font family + blob.l += length - 13; +} + +/* TODO: parse rich text runs */ +function parse_RString(blob, length, opts) { + var end = blob.l + length; + var cell = parse_XLSCell(blob, 6); + var cch = blob.read_shift(2); + var str = parse_XLUnicodeStringNoCch(blob, cch, opts); + blob.l = end; + cell.t = 'str'; + cell.val = str; + return cell; +} +/* from js-harb (C) 2014-present SheetJS */ +var DBF_SUPPORTED_VERSIONS = [0x02, 0x03, 0x30, 0x31, 0x83, 0x8B, 0x8C, 0xF5]; +var DBF = /*#__PURE__*/(function() { +var dbf_codepage_map = { + /* Code Pages Supported by Visual FoxPro */ + /*::[*/0x01/*::]*/: 437, /*::[*/0x02/*::]*/: 850, + /*::[*/0x03/*::]*/: 1252, /*::[*/0x04/*::]*/: 10000, + /*::[*/0x64/*::]*/: 852, /*::[*/0x65/*::]*/: 866, + /*::[*/0x66/*::]*/: 865, /*::[*/0x67/*::]*/: 861, + /*::[*/0x68/*::]*/: 895, /*::[*/0x69/*::]*/: 620, + /*::[*/0x6A/*::]*/: 737, /*::[*/0x6B/*::]*/: 857, + /*::[*/0x78/*::]*/: 950, /*::[*/0x79/*::]*/: 949, + /*::[*/0x7A/*::]*/: 936, /*::[*/0x7B/*::]*/: 932, + /*::[*/0x7C/*::]*/: 874, /*::[*/0x7D/*::]*/: 1255, + /*::[*/0x7E/*::]*/: 1256, /*::[*/0x96/*::]*/: 10007, + /*::[*/0x97/*::]*/: 10029, /*::[*/0x98/*::]*/: 10006, + /*::[*/0xC8/*::]*/: 1250, /*::[*/0xC9/*::]*/: 1251, + /*::[*/0xCA/*::]*/: 1254, /*::[*/0xCB/*::]*/: 1253, + + /* shapefile DBF extension */ + /*::[*/0x00/*::]*/: 20127, /*::[*/0x08/*::]*/: 865, + /*::[*/0x09/*::]*/: 437, /*::[*/0x0A/*::]*/: 850, + /*::[*/0x0B/*::]*/: 437, /*::[*/0x0D/*::]*/: 437, + /*::[*/0x0E/*::]*/: 850, /*::[*/0x0F/*::]*/: 437, + /*::[*/0x10/*::]*/: 850, /*::[*/0x11/*::]*/: 437, + /*::[*/0x12/*::]*/: 850, /*::[*/0x13/*::]*/: 932, + /*::[*/0x14/*::]*/: 850, /*::[*/0x15/*::]*/: 437, + /*::[*/0x16/*::]*/: 850, /*::[*/0x17/*::]*/: 865, + /*::[*/0x18/*::]*/: 437, /*::[*/0x19/*::]*/: 437, + /*::[*/0x1A/*::]*/: 850, /*::[*/0x1B/*::]*/: 437, + /*::[*/0x1C/*::]*/: 863, /*::[*/0x1D/*::]*/: 850, + /*::[*/0x1F/*::]*/: 852, /*::[*/0x22/*::]*/: 852, + /*::[*/0x23/*::]*/: 852, /*::[*/0x24/*::]*/: 860, + /*::[*/0x25/*::]*/: 850, /*::[*/0x26/*::]*/: 866, + /*::[*/0x37/*::]*/: 850, /*::[*/0x40/*::]*/: 852, + /*::[*/0x4D/*::]*/: 936, /*::[*/0x4E/*::]*/: 949, + /*::[*/0x4F/*::]*/: 950, /*::[*/0x50/*::]*/: 874, + /*::[*/0x57/*::]*/: 1252, /*::[*/0x58/*::]*/: 1252, + /*::[*/0x59/*::]*/: 1252, /*::[*/0x6C/*::]*/: 863, + /*::[*/0x86/*::]*/: 737, /*::[*/0x87/*::]*/: 852, + /*::[*/0x88/*::]*/: 857, /*::[*/0xCC/*::]*/: 1257, + + /*::[*/0xFF/*::]*/: 16969 +}; +var dbf_reverse_map = evert({ + /*::[*/0x01/*::]*/: 437, /*::[*/0x02/*::]*/: 850, + /*::[*/0x03/*::]*/: 1252, /*::[*/0x04/*::]*/: 10000, + /*::[*/0x64/*::]*/: 852, /*::[*/0x65/*::]*/: 866, + /*::[*/0x66/*::]*/: 865, /*::[*/0x67/*::]*/: 861, + /*::[*/0x68/*::]*/: 895, /*::[*/0x69/*::]*/: 620, + /*::[*/0x6A/*::]*/: 737, /*::[*/0x6B/*::]*/: 857, + /*::[*/0x78/*::]*/: 950, /*::[*/0x79/*::]*/: 949, + /*::[*/0x7A/*::]*/: 936, /*::[*/0x7B/*::]*/: 932, + /*::[*/0x7C/*::]*/: 874, /*::[*/0x7D/*::]*/: 1255, + /*::[*/0x7E/*::]*/: 1256, /*::[*/0x96/*::]*/: 10007, + /*::[*/0x97/*::]*/: 10029, /*::[*/0x98/*::]*/: 10006, + /*::[*/0xC8/*::]*/: 1250, /*::[*/0xC9/*::]*/: 1251, + /*::[*/0xCA/*::]*/: 1254, /*::[*/0xCB/*::]*/: 1253, + /*::[*/0x00/*::]*/: 20127 +}); +/* TODO: find an actual specification */ +function dbf_to_aoa(buf, opts)/*:AOA*/ { + var out/*:AOA*/ = []; + var d/*:Block*/ = (new_raw_buf(1)/*:any*/); + switch(opts.type) { + case 'base64': d = s2a(Base64_decode(buf)); break; + case 'binary': d = s2a(buf); break; + case 'buffer': + case 'array': d = buf; break; + } + prep_blob(d, 0); + + /* header */ + var ft = d.read_shift(1); + var memo = !!(ft & 0x88); + var vfp = false, l7 = false; + switch(ft) { + case 0x02: break; // dBASE II + case 0x03: break; // dBASE III + case 0x30: vfp = true; memo = true; break; // VFP + case 0x31: vfp = true; memo = true; break; // VFP with autoincrement + // 0x43 dBASE IV SQL table files + // 0x63 dBASE IV SQL system files + case 0x83: break; // dBASE III with memo + case 0x8B: break; // dBASE IV with memo + case 0x8C: l7 = true; break; // dBASE Level 7 with memo + // case 0xCB dBASE IV SQL table files with memo + case 0xF5: break; // FoxPro 2.x with memo + // case 0xFB FoxBASE + default: throw new Error("DBF Unsupported Version: " + ft.toString(16)); + } + + var nrow = 0, fpos = 0x0209; + if(ft == 0x02) nrow = d.read_shift(2); + d.l += 3; // dBASE II stores DDMMYY date, others use YYMMDD + if(ft != 0x02) nrow = d.read_shift(4); + if(nrow > 1048576) nrow = 1e6; + + if(ft != 0x02) fpos = d.read_shift(2); // header length + var rlen = d.read_shift(2); // record length + + var /*flags = 0,*/ current_cp = opts.codepage || 1252; + if(ft != 0x02) { // 20 reserved bytes + d.l+=16; + /*flags = */d.read_shift(1); + //if(memo && ((flags & 0x02) === 0)) throw new Error("DBF Flags " + flags.toString(16) + " ft " + ft.toString(16)); + + /* codepage present in FoxPro and dBASE Level 7 */ + if(d[d.l] !== 0) current_cp = dbf_codepage_map[d[d.l]]; + d.l+=1; + + d.l+=2; + } + if(l7) d.l += 36; // Level 7: 32 byte "Language driver name", 4 byte reserved + +/*:: type DBFField = { name:string; len:number; type:string; } */ + var fields/*:Array*/ = [], field/*:DBFField*/ = ({}/*:any*/); + var hend = Math.min(d.length, (ft == 0x02 ? 0x209 : (fpos - 10 - (vfp ? 264 : 0)))); + var ww = l7 ? 32 : 11; + while(d.l < hend && d[d.l] != 0x0d) { + field = ({}/*:any*/); + field.name = $cptable.utils.decode(current_cp, d.slice(d.l, d.l+ww)).replace(/[\u0000\r\n].*$/g,""); + d.l += ww; + field.type = String.fromCharCode(d.read_shift(1)); + if(ft != 0x02 && !l7) field.offset = d.read_shift(4); + field.len = d.read_shift(1); + if(ft == 0x02) field.offset = d.read_shift(2); + field.dec = d.read_shift(1); + if(field.name.length) fields.push(field); + if(ft != 0x02) d.l += l7 ? 13 : 14; + switch(field.type) { + case 'B': // Double (VFP) / Binary (dBASE L7) + if((!vfp || field.len != 8) && opts.WTF) console.log('Skipping ' + field.name + ':' + field.type); + break; + case 'G': // General (FoxPro and dBASE L7) + case 'P': // Picture (FoxPro and dBASE L7) + if(opts.WTF) console.log('Skipping ' + field.name + ':' + field.type); + break; + case '+': // Autoincrement (dBASE L7 only) + case '0': // _NullFlags (VFP only) + case '@': // Timestamp (dBASE L7 only) + case 'C': // Character (dBASE II) + case 'D': // Date (dBASE III) + case 'F': // Float (dBASE IV) + case 'I': // Long (VFP and dBASE L7) + case 'L': // Logical (dBASE II) + case 'M': // Memo (dBASE III) + case 'N': // Number (dBASE II) + case 'O': // Double (dBASE L7 only) + case 'T': // Datetime (VFP only) + case 'Y': // Currency (VFP only) + break; + default: throw new Error('Unknown Field Type: ' + field.type); + } + } + + if(d[d.l] !== 0x0D) d.l = fpos-1; + if(d.read_shift(1) !== 0x0D) throw new Error("DBF Terminator not found " + d.l + " " + d[d.l]); + d.l = fpos; + + /* data */ + var R = 0, C = 0; + out[0] = []; + for(C = 0; C != fields.length; ++C) out[0][C] = fields[C].name; + while(nrow-- > 0) { + if(d[d.l] === 0x2A) { + // TODO: record marked as deleted -- create a hidden row? + d.l+=rlen; + continue; + } + ++d.l; + out[++R] = []; C = 0; + for(C = 0; C != fields.length; ++C) { + var dd = d.slice(d.l, d.l+fields[C].len); d.l+=fields[C].len; + prep_blob(dd, 0); + var s = $cptable.utils.decode(current_cp, dd); + switch(fields[C].type) { + case 'C': + // NOTE: it is conventional to write ' / / ' for empty dates + if(s.trim().length) out[R][C] = s.replace(/\s+$/,""); + break; + case 'D': + if(s.length === 8) out[R][C] = new Date(+s.slice(0,4), +s.slice(4,6)-1, +s.slice(6,8)); + else out[R][C] = s; + break; + case 'F': out[R][C] = parseFloat(s.trim()); break; + case '+': case 'I': out[R][C] = l7 ? dd.read_shift(-4, 'i') ^ 0x80000000 : dd.read_shift(4, 'i'); break; + case 'L': switch(s.trim().toUpperCase()) { + case 'Y': case 'T': out[R][C] = true; break; + case 'N': case 'F': out[R][C] = false; break; + case '': case '?': break; + default: throw new Error("DBF Unrecognized L:|" + s + "|"); + } break; + case 'M': /* TODO: handle memo files */ + if(!memo) throw new Error("DBF Unexpected MEMO for type " + ft.toString(16)); + out[R][C] = "##MEMO##" + (l7 ? parseInt(s.trim(), 10): dd.read_shift(4)); + break; + case 'N': + s = s.replace(/\u0000/g,"").trim(); + // NOTE: dBASE II interprets " . " as 0 + if(s && s != ".") out[R][C] = +s || 0; break; + case '@': + // NOTE: dBASE specs appear to be incorrect + out[R][C] = new Date(dd.read_shift(-8, 'f') - 0x388317533400); + break; + case 'T': out[R][C] = new Date((dd.read_shift(4) - 0x253D8C) * 0x5265C00 + dd.read_shift(4)); break; + case 'Y': out[R][C] = dd.read_shift(4,'i')/1e4 + (dd.read_shift(4, 'i')/1e4)*Math.pow(2,32); break; + case 'O': out[R][C] = -dd.read_shift(-8, 'f'); break; + case 'B': if(vfp && fields[C].len == 8) { out[R][C] = dd.read_shift(8,'f'); break; } + /* falls through */ + case 'G': case 'P': dd.l += fields[C].len; break; + case '0': + if(fields[C].name === '_NullFlags') break; + /* falls through */ + default: throw new Error("DBF Unsupported data type " + fields[C].type); + } + } + } + if(ft != 0x02) if(d.l < d.length && d[d.l++] != 0x1A) throw new Error("DBF EOF Marker missing " + (d.l-1) + " of " + d.length + " " + d[d.l-1].toString(16)); + if(opts && opts.sheetRows) out = out.slice(0, opts.sheetRows); + opts.DBF = fields; + return out; +} + +function dbf_to_sheet(buf, opts)/*:Worksheet*/ { + var o = opts || {}; + if(!o.dateNF) o.dateNF = "yyyymmdd"; + var ws = aoa_to_sheet(dbf_to_aoa(buf, o), o); + ws["!cols"] = o.DBF.map(function(field) { return { + wch: field.len, + DBF: field + };}); + delete o.DBF; + return ws; +} + +function dbf_to_workbook(buf, opts)/*:Workbook*/ { + try { return sheet_to_workbook(dbf_to_sheet(buf, opts), opts); } + catch(e) { if(opts && opts.WTF) throw e; } + return ({SheetNames:[],Sheets:{}}); +} + +var _RLEN = { 'B': 8, 'C': 250, 'L': 1, 'D': 8, '?': 0, '': 0 }; +function sheet_to_dbf(ws/*:Worksheet*/, opts/*:WriteOpts*/) { + var o = opts || {}; + if(+o.codepage >= 0) set_cp(+o.codepage); + if(o.type == "string") throw new Error("Cannot write DBF to JS string"); + var ba = buf_array(); + var aoa/*:AOA*/ = sheet_to_json(ws, {header:1, raw:true, cellDates:true}); + var headers = aoa[0], data = aoa.slice(1), cols = ws["!cols"] || []; + var i = 0, j = 0, hcnt = 0, rlen = 1; + for(i = 0; i < headers.length; ++i) { + if(((cols[i]||{}).DBF||{}).name) { headers[i] = cols[i].DBF.name; ++hcnt; continue; } + if(headers[i] == null) continue; + ++hcnt; + if(typeof headers[i] === 'number') headers[i] = headers[i].toString(10); + if(typeof headers[i] !== 'string') throw new Error("DBF Invalid column name " + headers[i] + " |" + (typeof headers[i]) + "|"); + if(headers.indexOf(headers[i]) !== i) for(j=0; j<1024;++j) + if(headers.indexOf(headers[i] + "_" + j) == -1) { headers[i] += "_" + j; break; } + } + var range = safe_decode_range(ws['!ref']); + var coltypes/*:Array*/ = []; + var colwidths/*:Array*/ = []; + var coldecimals/*:Array*/ = []; + for(i = 0; i <= range.e.c - range.s.c; ++i) { + var guess = '', _guess = '', maxlen = 0; + var col/*:Array*/ = []; + for(j=0; j < data.length; ++j) { + if(data[j][i] != null) col.push(data[j][i]); + } + if(col.length == 0 || headers[i] == null) { coltypes[i] = '?'; continue; } + for(j = 0; j < col.length; ++j) { + switch(typeof col[j]) { + /* TODO: check if L2 compat is desired */ + case 'number': _guess = 'B'; break; + case 'string': _guess = 'C'; break; + case 'boolean': _guess = 'L'; break; + case 'object': _guess = col[j] instanceof Date ? 'D' : 'C'; break; + default: _guess = 'C'; + } + maxlen = Math.max(maxlen, String(col[j]).length); + guess = guess && guess != _guess ? 'C' : _guess; + //if(guess == 'C') break; + } + if(maxlen > 250) maxlen = 250; + _guess = ((cols[i]||{}).DBF||{}).type; + /* TODO: more fine grained control over DBF type resolution */ + if(_guess == 'C') { + if(cols[i].DBF.len > maxlen) maxlen = cols[i].DBF.len; + } + if(guess == 'B' && _guess == 'N') { + guess = 'N'; + coldecimals[i] = cols[i].DBF.dec; + maxlen = cols[i].DBF.len; + } + colwidths[i] = guess == 'C' || _guess == 'N' ? maxlen : (_RLEN[guess] || 0); + rlen += colwidths[i]; + coltypes[i] = guess; + } + + var h = ba.next(32); + h.write_shift(4, 0x13021130); + h.write_shift(4, data.length); + h.write_shift(2, 296 + 32 * hcnt); + h.write_shift(2, rlen); + for(i=0; i < 4; ++i) h.write_shift(4, 0); + h.write_shift(4, 0x00000000 | ((+dbf_reverse_map[/*::String(*/current_ansi/*::)*/] || 0x03)<<8)); + + for(i = 0, j = 0; i < headers.length; ++i) { + if(headers[i] == null) continue; + var hf = ba.next(32); + var _f = (headers[i].slice(-10) + "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00").slice(0, 11); + hf.write_shift(1, _f, "sbcs"); + hf.write_shift(1, coltypes[i] == '?' ? 'C' : coltypes[i], "sbcs"); + hf.write_shift(4, j); + hf.write_shift(1, colwidths[i] || _RLEN[coltypes[i]] || 0); + hf.write_shift(1, coldecimals[i] || 0); + hf.write_shift(1, 0x02); + hf.write_shift(4, 0); + hf.write_shift(1, 0); + hf.write_shift(4, 0); + hf.write_shift(4, 0); + j += (colwidths[i] || _RLEN[coltypes[i]] || 0); + } + + var hb = ba.next(264); + hb.write_shift(4, 0x0000000D); + for(i=0; i < 65;++i) hb.write_shift(4, 0x00000000); + for(i=0; i < data.length; ++i) { + var rout = ba.next(rlen); + rout.write_shift(1, 0); + for(j=0; j":190, "?":191, "{":223 + }/*:any*/); + var sylk_char_regex = new RegExp("\u001BN(" + keys(sylk_escapes).join("|").replace(/\|\|\|/, "|\\||").replace(/([?()+])/g,"\\$1") + "|\\|)", "gm"); + var sylk_char_fn = function(_, $1){ var o = sylk_escapes[$1]; return typeof o == "number" ? _getansi(o) : o; }; + var decode_sylk_char = function($$, $1, $2) { var newcc = (($1.charCodeAt(0) - 0x20)<<4) | ($2.charCodeAt(0) - 0x30); return newcc == 59 ? $$ : _getansi(newcc); }; + sylk_escapes["|"] = 254; + /* TODO: find an actual specification */ + function sylk_to_aoa(d/*:RawData*/, opts)/*:[AOA, Worksheet]*/ { + switch(opts.type) { + case 'base64': return sylk_to_aoa_str(Base64_decode(d), opts); + case 'binary': return sylk_to_aoa_str(d, opts); + case 'buffer': return sylk_to_aoa_str(has_buf && Buffer.isBuffer(d) ? d.toString('binary') : a2s(d), opts); + case 'array': return sylk_to_aoa_str(cc2str(d), opts); + } + throw new Error("Unrecognized type " + opts.type); + } + function sylk_to_aoa_str(str/*:string*/, opts)/*:[AOA, Worksheet]*/ { + var records = str.split(/[\n\r]+/), R = -1, C = -1, ri = 0, rj = 0, arr/*:AOA*/ = []; + var formats/*:Array*/ = []; + var next_cell_format/*:string|null*/ = null; + var sht = {}, rowinfo/*:Array*/ = [], colinfo/*:Array*/ = [], cw/*:Array*/ = []; + var Mval = 0, j; + if(+opts.codepage >= 0) set_cp(+opts.codepage); + for (; ri !== records.length; ++ri) { + Mval = 0; + var rstr=records[ri].trim().replace(/\x1B([\x20-\x2F])([\x30-\x3F])/g, decode_sylk_char).replace(sylk_char_regex, sylk_char_fn); + var record=rstr.replace(/;;/g, "\u0000").split(";").map(function(x) { return x.replace(/\u0000/g, ";"); }); + var RT=record[0], val; + if(rstr.length > 0) switch(RT) { + case 'ID': break; /* header */ + case 'E': break; /* EOF */ + case 'B': break; /* dimensions */ + case 'O': break; /* options? */ + case 'W': break; /* window? */ + case 'P': + if(record[1].charAt(0) == 'P') + formats.push(rstr.slice(3).replace(/;;/g, ";")); + break; + case 'C': + var C_seen_K = false, C_seen_X = false, C_seen_S = false, C_seen_E = false, _R = -1, _C = -1; + for(rj=1; rj -1 && arr[_R][_C]; + if(!shrbase || !shrbase[1]) throw new Error("SYLK shared formula cannot find base"); + arr[R][C][1] = shift_formula_str(shrbase[1], {r: R - _R, c: C - _C}); + } + break; + case 'F': + var F_seen = 0; + for(rj=1; rj 0) { rowinfo[R].hpt = Mval; rowinfo[R].hpx = pt2px(Mval); } + else if(Mval === 0) rowinfo[R].hidden = true; + break; + default: if(opts && opts.WTF) throw new Error("SYLK bad record " + rstr); + } + if(F_seen < 1) next_cell_format = null; break; + default: if(opts && opts.WTF) throw new Error("SYLK bad record " + rstr); + } + } + if(rowinfo.length > 0) sht['!rows'] = rowinfo; + if(colinfo.length > 0) sht['!cols'] = colinfo; + if(opts && opts.sheetRows) arr = arr.slice(0, opts.sheetRows); + return [arr, sht]; + } + + function sylk_to_sheet(d/*:RawData*/, opts)/*:Worksheet*/ { + var aoasht = sylk_to_aoa(d, opts); + var aoa = aoasht[0], ws = aoasht[1]; + var o = aoa_to_sheet(aoa, opts); + keys(ws).forEach(function(k) { o[k] = ws[k]; }); + return o; + } + + function sylk_to_workbook(d/*:RawData*/, opts)/*:Workbook*/ { return sheet_to_workbook(sylk_to_sheet(d, opts), opts); } + + function write_ws_cell_sylk(cell/*:Cell*/, ws/*:Worksheet*/, R/*:number*/, C/*:number*//*::, opts*/)/*:string*/ { + var o = "C;Y" + (R+1) + ";X" + (C+1) + ";K"; + switch(cell.t) { + case 'n': + o += (cell.v||0); + if(cell.f && !cell.F) o += ";E" + a1_to_rc(cell.f, {r:R, c:C}); break; + case 'b': o += cell.v ? "TRUE" : "FALSE"; break; + case 'e': o += cell.w || cell.v; break; + case 'd': o += '"' + (cell.w || cell.v) + '"'; break; + case 's': o += '"' + cell.v.replace(/"/g,"").replace(/;/g, ";;") + '"'; break; + } + return o; + } + + function write_ws_cols_sylk(out, cols) { + cols.forEach(function(col, i) { + var rec = "F;W" + (i+1) + " " + (i+1) + " "; + if(col.hidden) rec += "0"; + else { + if(typeof col.width == 'number' && !col.wpx) col.wpx = width2px(col.width); + if(typeof col.wpx == 'number' && !col.wch) col.wch = px2char(col.wpx); + if(typeof col.wch == 'number') rec += Math.round(col.wch); + } + if(rec.charAt(rec.length - 1) != " ") out.push(rec); + }); + } + + function write_ws_rows_sylk(out/*:Array*/, rows/*:Array*/) { + rows.forEach(function(row, i) { + var rec = "F;"; + if(row.hidden) rec += "M0;"; + else if(row.hpt) rec += "M" + 20 * row.hpt + ";"; + else if(row.hpx) rec += "M" + 20 * px2pt(row.hpx) + ";"; + if(rec.length > 2) out.push(rec + "R" + (i+1)); + }); + } + + function sheet_to_sylk(ws/*:Worksheet*/, opts/*:?any*/)/*:string*/ { + var preamble/*:Array*/ = ["ID;PWXL;N;E"], o/*:Array*/ = []; + var r = safe_decode_range(ws['!ref']), cell/*:Cell*/; + var dense = Array.isArray(ws); + var RS = "\r\n"; + + preamble.push("P;PGeneral"); + preamble.push("F;P0;DG0G8;M255"); + if(ws['!cols']) write_ws_cols_sylk(preamble, ws['!cols']); + if(ws['!rows']) write_ws_rows_sylk(preamble, ws['!rows']); + + preamble.push("B;Y" + (r.e.r - r.s.r + 1) + ";X" + (r.e.c - r.s.c + 1) + ";D" + [r.s.c,r.s.r,r.e.c,r.e.r].join(" ")); + for(var R = r.s.r; R <= r.e.r; ++R) { + for(var C = r.s.c; C <= r.e.c; ++C) { + var coord = encode_cell({r:R,c:C}); + cell = dense ? (ws[R]||[])[C]: ws[coord]; + if(!cell || (cell.v == null && (!cell.f || cell.F))) continue; + o.push(write_ws_cell_sylk(cell, ws, R, C, opts)); + } + } + return preamble.join(RS) + RS + o.join(RS) + RS + "E" + RS; + } + + return { + to_workbook: sylk_to_workbook, + to_sheet: sylk_to_sheet, + from_sheet: sheet_to_sylk + }; +})(); + +var DIF = /*#__PURE__*/(function() { + function dif_to_aoa(d/*:RawData*/, opts)/*:AOA*/ { + switch(opts.type) { + case 'base64': return dif_to_aoa_str(Base64_decode(d), opts); + case 'binary': return dif_to_aoa_str(d, opts); + case 'buffer': return dif_to_aoa_str(has_buf && Buffer.isBuffer(d) ? d.toString('binary') : a2s(d), opts); + case 'array': return dif_to_aoa_str(cc2str(d), opts); + } + throw new Error("Unrecognized type " + opts.type); + } + function dif_to_aoa_str(str/*:string*/, opts)/*:AOA*/ { + var records = str.split('\n'), R = -1, C = -1, ri = 0, arr/*:AOA*/ = []; + for (; ri !== records.length; ++ri) { + if (records[ri].trim() === 'BOT') { arr[++R] = []; C = 0; continue; } + if (R < 0) continue; + var metadata = records[ri].trim().split(","); + var type = metadata[0], value = metadata[1]; + ++ri; + var data = records[ri] || ""; + while(((data.match(/["]/g)||[]).length & 1) && ri < records.length - 1) data += "\n" + records[++ri]; + data = data.trim(); + switch (+type) { + case -1: + if (data === 'BOT') { arr[++R] = []; C = 0; continue; } + else if (data !== 'EOD') throw new Error("Unrecognized DIF special command " + data); + break; + case 0: + if(data === 'TRUE') arr[R][C] = true; + else if(data === 'FALSE') arr[R][C] = false; + else if(!isNaN(fuzzynum(value))) arr[R][C] = fuzzynum(value); + else if(!isNaN(fuzzydate(value).getDate())) arr[R][C] = parseDate(value); + else arr[R][C] = value; + ++C; break; + case 1: + data = data.slice(1,data.length-1); + data = data.replace(/""/g, '"'); + if(DIF_XL && data && data.match(/^=".*"$/)) data = data.slice(2, -1); + arr[R][C++] = data !== '' ? data : null; + break; + } + if (data === 'EOD') break; + } + if(opts && opts.sheetRows) arr = arr.slice(0, opts.sheetRows); + return arr; + } + + function dif_to_sheet(str/*:string*/, opts)/*:Worksheet*/ { return aoa_to_sheet(dif_to_aoa(str, opts), opts); } + function dif_to_workbook(str/*:string*/, opts)/*:Workbook*/ { return sheet_to_workbook(dif_to_sheet(str, opts), opts); } + + var sheet_to_dif = /*#__PURE__*/(function() { + var push_field = function pf(o/*:Array*/, topic/*:string*/, v/*:number*/, n/*:number*/, s/*:string*/) { + o.push(topic); + o.push(v + "," + n); + o.push('"' + s.replace(/"/g,'""') + '"'); + }; + var push_value = function po(o/*:Array*/, type/*:number*/, v/*:any*/, s/*:string*/) { + o.push(type + "," + v); + o.push(type == 1 ? '"' + s.replace(/"/g,'""') + '"' : s); + }; + return function sheet_to_dif(ws/*:Worksheet*//*::, opts:?any*/)/*:string*/ { + var o/*:Array*/ = []; + var r = safe_decode_range(ws['!ref']), cell/*:Cell*/; + var dense = Array.isArray(ws); + push_field(o, "TABLE", 0, 1, "sheetjs"); + push_field(o, "VECTORS", 0, r.e.r - r.s.r + 1,""); + push_field(o, "TUPLES", 0, r.e.c - r.s.c + 1,""); + push_field(o, "DATA", 0, 0,""); + for(var R = r.s.r; R <= r.e.r; ++R) { + push_value(o, -1, 0, "BOT"); + for(var C = r.s.c; C <= r.e.c; ++C) { + var coord = encode_cell({r:R,c:C}); + cell = dense ? (ws[R]||[])[C] : ws[coord]; + if(!cell) { push_value(o, 1, 0, ""); continue;} + switch(cell.t) { + case 'n': + var val = DIF_XL ? cell.w : cell.v; + if(!val && cell.v != null) val = cell.v; + if(val == null) { + if(DIF_XL && cell.f && !cell.F) push_value(o, 1, 0, "=" + cell.f); + else push_value(o, 1, 0, ""); + } + else push_value(o, 0, val, "V"); + break; + case 'b': + push_value(o, 0, cell.v ? 1 : 0, cell.v ? "TRUE" : "FALSE"); + break; + case 's': + push_value(o, 1, 0, (!DIF_XL || isNaN(cell.v)) ? cell.v : '="' + cell.v + '"'); + break; + case 'd': + if(!cell.w) cell.w = SSF_format(cell.z || table_fmt[14], datenum(parseDate(cell.v))); + if(DIF_XL) push_value(o, 0, cell.w, "V"); + else push_value(o, 1, 0, cell.w); + break; + default: push_value(o, 1, 0, ""); + } + } + } + push_value(o, -1, 0, "EOD"); + var RS = "\r\n"; + var oo = o.join(RS); + //while((oo.length & 0x7F) != 0) oo += "\0"; + return oo; + }; + })(); + return { + to_workbook: dif_to_workbook, + to_sheet: dif_to_sheet, + from_sheet: sheet_to_dif + }; +})(); + +var ETH = /*#__PURE__*/(function() { + function decode(s/*:string*/)/*:string*/ { return s.replace(/\\b/g,"\\").replace(/\\c/g,":").replace(/\\n/g,"\n"); } + function encode(s/*:string*/)/*:string*/ { return s.replace(/\\/g, "\\b").replace(/:/g, "\\c").replace(/\n/g,"\\n"); } + + function eth_to_aoa(str/*:string*/, opts)/*:AOA*/ { + var records = str.split('\n'), R = -1, C = -1, ri = 0, arr/*:AOA*/ = []; + for (; ri !== records.length; ++ri) { + var record = records[ri].trim().split(":"); + if(record[0] !== 'cell') continue; + var addr = decode_cell(record[1]); + if(arr.length <= addr.r) for(R = arr.length; R <= addr.r; ++R) if(!arr[R]) arr[R] = []; + R = addr.r; C = addr.c; + switch(record[2]) { + case 't': arr[R][C] = decode(record[3]); break; + case 'v': arr[R][C] = +record[3]; break; + case 'vtf': var _f = record[record.length - 1]; + /* falls through */ + case 'vtc': + switch(record[3]) { + case 'nl': arr[R][C] = +record[4] ? true : false; break; + default: arr[R][C] = +record[4]; break; + } + if(record[2] == 'vtf') arr[R][C] = [arr[R][C], _f]; + } + } + if(opts && opts.sheetRows) arr = arr.slice(0, opts.sheetRows); + return arr; + } + + function eth_to_sheet(d/*:string*/, opts)/*:Worksheet*/ { return aoa_to_sheet(eth_to_aoa(d, opts), opts); } + function eth_to_workbook(d/*:string*/, opts)/*:Workbook*/ { return sheet_to_workbook(eth_to_sheet(d, opts), opts); } + + var header = [ + "socialcalc:version:1.5", + "MIME-Version: 1.0", + "Content-Type: multipart/mixed; boundary=SocialCalcSpreadsheetControlSave" + ].join("\n"); + + var sep = [ + "--SocialCalcSpreadsheetControlSave", + "Content-type: text/plain; charset=UTF-8" + ].join("\n") + "\n"; + + /* TODO: the other parts */ + var meta = [ + "# SocialCalc Spreadsheet Control Save", + "part:sheet" + ].join("\n"); + + var end = "--SocialCalcSpreadsheetControlSave--"; + + function sheet_to_eth_data(ws/*:Worksheet*/)/*:string*/ { + if(!ws || !ws['!ref']) return ""; + var o/*:Array*/ = [], oo/*:Array*/ = [], cell, coord = ""; + var r = decode_range(ws['!ref']); + var dense = Array.isArray(ws); + for(var R = r.s.r; R <= r.e.r; ++R) { + for(var C = r.s.c; C <= r.e.c; ++C) { + coord = encode_cell({r:R,c:C}); + cell = dense ? (ws[R]||[])[C] : ws[coord]; + if(!cell || cell.v == null || cell.t === 'z') continue; + oo = ["cell", coord, 't']; + switch(cell.t) { + case 's': case 'str': oo.push(encode(cell.v)); break; + case 'n': + if(!cell.f) { oo[2]='v'; oo[3]=cell.v; } + else { oo[2]='vtf'; oo[3]='n'; oo[4]=cell.v; oo[5]=encode(cell.f); } + break; + case 'b': + oo[2] = 'vt'+(cell.f?'f':'c'); oo[3]='nl'; oo[4]=cell.v?"1":"0"; + oo[5] = encode(cell.f||(cell.v?'TRUE':'FALSE')); + break; + case 'd': + var t = datenum(parseDate(cell.v)); + oo[2] = 'vtc'; oo[3] = 'nd'; oo[4] = ""+t; + oo[5] = cell.w || SSF_format(cell.z || table_fmt[14], t); + break; + case 'e': continue; + } + o.push(oo.join(":")); + } + } + o.push("sheet:c:" + (r.e.c-r.s.c+1) + ":r:" + (r.e.r-r.s.r+1) + ":tvf:1"); + o.push("valueformat:1:text-wiki"); + //o.push("copiedfrom:" + ws['!ref']); // clipboard only + return o.join("\n"); + } + + function sheet_to_eth(ws/*:Worksheet*//*::, opts:?any*/)/*:string*/ { + return [header, sep, meta, sep, sheet_to_eth_data(ws), end].join("\n"); + // return ["version:1.5", sheet_to_eth_data(ws)].join("\n"); // clipboard form + } + + return { + to_workbook: eth_to_workbook, + to_sheet: eth_to_sheet, + from_sheet: sheet_to_eth + }; +})(); + +var PRN = /*#__PURE__*/(function() { + function set_text_arr(data/*:string*/, arr/*:AOA*/, R/*:number*/, C/*:number*/, o/*:any*/) { + if(o.raw) arr[R][C] = data; + else if(data === ""){/* empty */} + else if(data === 'TRUE') arr[R][C] = true; + else if(data === 'FALSE') arr[R][C] = false; + else if(!isNaN(fuzzynum(data))) arr[R][C] = fuzzynum(data); + else if(!isNaN(fuzzydate(data).getDate())) arr[R][C] = parseDate(data); + else arr[R][C] = data; + } + + function prn_to_aoa_str(f/*:string*/, opts)/*:AOA*/ { + var o = opts || {}; + var arr/*:AOA*/ = ([]/*:any*/); + if(!f || f.length === 0) return arr; + var lines = f.split(/[\r\n]/); + var L = lines.length - 1; + while(L >= 0 && lines[L].length === 0) --L; + var start = 10, idx = 0; + var R = 0; + for(; R <= L; ++R) { + idx = lines[R].indexOf(" "); + if(idx == -1) idx = lines[R].length; else idx++; + start = Math.max(start, idx); + } + for(R = 0; R <= L; ++R) { + arr[R] = []; + /* TODO: confirm that widths are always 10 */ + var C = 0; + set_text_arr(lines[R].slice(0, start).trim(), arr, R, C, o); + for(C = 1; C <= (lines[R].length - start)/10 + 1; ++C) + set_text_arr(lines[R].slice(start+(C-1)*10,start+C*10).trim(),arr,R,C,o); + } + if(o.sheetRows) arr = arr.slice(0, o.sheetRows); + return arr; + } + + // List of accepted CSV separators + var guess_seps = { + /*::[*/0x2C/*::]*/: ',', + /*::[*/0x09/*::]*/: "\t", + /*::[*/0x3B/*::]*/: ';', + /*::[*/0x7C/*::]*/: '|' + }; + + // CSV separator weights to be used in case of equal numbers + var guess_sep_weights = { + /*::[*/0x2C/*::]*/: 3, + /*::[*/0x09/*::]*/: 2, + /*::[*/0x3B/*::]*/: 1, + /*::[*/0x7C/*::]*/: 0 + }; + + function guess_sep(str) { + var cnt = {}, instr = false, end = 0, cc = 0; + for(;end < str.length;++end) { + if((cc=str.charCodeAt(end)) == 0x22) instr = !instr; + else if(!instr && cc in guess_seps) cnt[cc] = (cnt[cc]||0)+1; + } + + cc = []; + for(end in cnt) if ( Object.prototype.hasOwnProperty.call(cnt, end) ) { + cc.push([ cnt[end], end ]); + } + + if ( !cc.length ) { + cnt = guess_sep_weights; + for(end in cnt) if ( Object.prototype.hasOwnProperty.call(cnt, end) ) { + cc.push([ cnt[end], end ]); + } + } + + cc.sort(function(a, b) { return a[0] - b[0] || guess_sep_weights[a[1]] - guess_sep_weights[b[1]]; }); + + return guess_seps[cc.pop()[1]] || 0x2C; + } + + function dsv_to_sheet_str(str/*:string*/, opts)/*:Worksheet*/ { + var o = opts || {}; + var sep = ""; + if(DENSE != null && o.dense == null) o.dense = DENSE; + var ws/*:Worksheet*/ = o.dense ? ([]/*:any*/) : ({}/*:any*/); + var range/*:Range*/ = ({s: {c:0, r:0}, e: {c:0, r:0}}/*:any*/); + + if(str.slice(0,4) == "sep=") { + // If the line ends in \r\n + if(str.charCodeAt(5) == 13 && str.charCodeAt(6) == 10 ) { + sep = str.charAt(4); str = str.slice(7); + } + // If line ends in \r OR \n + else if(str.charCodeAt(5) == 13 || str.charCodeAt(5) == 10 ) { + sep = str.charAt(4); str = str.slice(6); + } + else sep = guess_sep(str.slice(0,1024)); + } + else if(o && o.FS) sep = o.FS; + else sep = guess_sep(str.slice(0,1024)); + var R = 0, C = 0, v = 0; + var start = 0, end = 0, sepcc = sep.charCodeAt(0), instr = false, cc=0, startcc=str.charCodeAt(0); + str = str.replace(/\r\n/mg, "\n"); + var _re/*:?RegExp*/ = o.dateNF != null ? dateNF_regex(o.dateNF) : null; + function finish_cell() { + var s = str.slice(start, end); + var cell = ({}/*:any*/); + if(s.charAt(0) == '"' && s.charAt(s.length - 1) == '"') s = s.slice(1,-1).replace(/""/g,'"'); + if(s.length === 0) cell.t = 'z'; + else if(o.raw) { cell.t = 's'; cell.v = s; } + else if(s.trim().length === 0) { cell.t = 's'; cell.v = s; } + else if(s.charCodeAt(0) == 0x3D) { + if(s.charCodeAt(1) == 0x22 && s.charCodeAt(s.length - 1) == 0x22) { cell.t = 's'; cell.v = s.slice(2,-1).replace(/""/g,'"'); } + else if(fuzzyfmla(s)) { cell.t = 'n'; cell.f = s.slice(1); } + else { cell.t = 's'; cell.v = s; } } + else if(s == "TRUE") { cell.t = 'b'; cell.v = true; } + else if(s == "FALSE") { cell.t = 'b'; cell.v = false; } + else if(!isNaN(v = fuzzynum(s))) { cell.t = 'n'; if(o.cellText !== false) cell.w = s; cell.v = v; } + else if(!isNaN(fuzzydate(s).getDate()) || _re && s.match(_re)) { + cell.z = o.dateNF || table_fmt[14]; + var k = 0; + if(_re && s.match(_re)){ s=dateNF_fix(s, o.dateNF, (s.match(_re)||[])); k=1; } + if(o.cellDates) { cell.t = 'd'; cell.v = parseDate(s, k); } + else { cell.t = 'n'; cell.v = datenum(parseDate(s, k)); } + if(o.cellText !== false) cell.w = SSF_format(cell.z, cell.v instanceof Date ? datenum(cell.v):cell.v); + if(!o.cellNF) delete cell.z; + } else { + cell.t = 's'; + cell.v = s; + } + if(cell.t == 'z'){} + else if(o.dense) { if(!ws[R]) ws[R] = []; ws[R][C] = cell; } + else ws[encode_cell({c:C,r:R})] = cell; + start = end+1; startcc = str.charCodeAt(start); + if(range.e.c < C) range.e.c = C; + if(range.e.r < R) range.e.r = R; + if(cc == sepcc) ++C; else { C = 0; ++R; if(o.sheetRows && o.sheetRows <= R) return true; } + } + outer: for(;end < str.length;++end) switch((cc=str.charCodeAt(end))) { + case 0x22: if(startcc === 0x22) instr = !instr; break; + case sepcc: case 0x0a: case 0x0d: if(!instr && finish_cell()) break outer; break; + default: break; + } + if(end - start > 0) finish_cell(); + + ws['!ref'] = encode_range(range); + return ws; + } + + function prn_to_sheet_str(str/*:string*/, opts)/*:Worksheet*/ { + if(!(opts && opts.PRN)) return dsv_to_sheet_str(str, opts); + if(opts.FS) return dsv_to_sheet_str(str, opts); + if(str.slice(0,4) == "sep=") return dsv_to_sheet_str(str, opts); + if(str.indexOf("\t") >= 0 || str.indexOf(",") >= 0 || str.indexOf(";") >= 0) return dsv_to_sheet_str(str, opts); + return aoa_to_sheet(prn_to_aoa_str(str, opts), opts); + } + + function prn_to_sheet(d/*:RawData*/, opts)/*:Worksheet*/ { + var str = "", bytes = opts.type == 'string' ? [0,0,0,0] : firstbyte(d, opts); + switch(opts.type) { + case 'base64': str = Base64_decode(d); break; + case 'binary': str = d; break; + case 'buffer': + if(opts.codepage == 65001) str = d.toString('utf8'); // TODO: test if buf + else if(opts.codepage && typeof $cptable !== 'undefined') str = $cptable.utils.decode(opts.codepage, d); + else str = has_buf && Buffer.isBuffer(d) ? d.toString('binary') : a2s(d); + break; + case 'array': str = cc2str(d); break; + case 'string': str = d; break; + default: throw new Error("Unrecognized type " + opts.type); + } + if(bytes[0] == 0xEF && bytes[1] == 0xBB && bytes[2] == 0xBF) str = utf8read(str.slice(3)); + else if(opts.type != 'string' && opts.type != 'buffer' && opts.codepage == 65001) str = utf8read(str); + else if((opts.type == 'binary') && typeof $cptable !== 'undefined' && opts.codepage) str = $cptable.utils.decode(opts.codepage, $cptable.utils.encode(28591,str)); + if(str.slice(0,19) == "socialcalc:version:") return ETH.to_sheet(opts.type == 'string' ? str : utf8read(str), opts); + return prn_to_sheet_str(str, opts); + } + + function prn_to_workbook(d/*:RawData*/, opts)/*:Workbook*/ { return sheet_to_workbook(prn_to_sheet(d, opts), opts); } + + function sheet_to_prn(ws/*:Worksheet*//*::, opts:?any*/)/*:string*/ { + var o/*:Array*/ = []; + var r = safe_decode_range(ws['!ref']), cell/*:Cell*/; + var dense = Array.isArray(ws); + for(var R = r.s.r; R <= r.e.r; ++R) { + var oo/*:Array*/ = []; + for(var C = r.s.c; C <= r.e.c; ++C) { + var coord = encode_cell({r:R,c:C}); + cell = dense ? (ws[R]||[])[C] : ws[coord]; + if(!cell || cell.v == null) { oo.push(" "); continue; } + var w = (cell.w || (format_cell(cell), cell.w) || "").slice(0,10); + while(w.length < 10) w += " "; + oo.push(w + (C === 0 ? " " : "")); + } + o.push(oo.join("")); + } + return o.join("\n"); + } + + return { + to_workbook: prn_to_workbook, + to_sheet: prn_to_sheet, + from_sheet: sheet_to_prn + }; +})(); + +/* Excel defaults to SYLK but warns if data is not valid */ +function read_wb_ID(d, opts) { + var o = opts || {}, OLD_WTF = !!o.WTF; o.WTF = true; + try { + var out = SYLK.to_workbook(d, o); + o.WTF = OLD_WTF; + return out; + } catch(e) { + o.WTF = OLD_WTF; + if(!e.message.match(/SYLK bad record ID/) && OLD_WTF) throw e; + return PRN.to_workbook(d, opts); + } +} + +var WK_ = /*#__PURE__*/(function() { + function lotushopper(data, cb/*:RecordHopperCB*/, opts/*:any*/) { + if(!data) return; + prep_blob(data, data.l || 0); + var Enum = opts.Enum || WK1Enum; + while(data.l < data.length) { + var RT = data.read_shift(2); + var R = Enum[RT] || Enum[0xFFFF]; + var length = data.read_shift(2); + var tgt = data.l + length; + var d = R.f && R.f(data, length, opts); + data.l = tgt; + if(cb(d, R, RT)) return; + } + } + + function lotus_to_workbook(d/*:RawData*/, opts) { + switch(opts.type) { + case 'base64': return lotus_to_workbook_buf(s2a(Base64_decode(d)), opts); + case 'binary': return lotus_to_workbook_buf(s2a(d), opts); + case 'buffer': + case 'array': return lotus_to_workbook_buf(d, opts); + } + throw "Unsupported type " + opts.type; + } + + function lotus_to_workbook_buf(d, opts)/*:Workbook*/ { + if(!d) return d; + var o = opts || {}; + if(DENSE != null && o.dense == null) o.dense = DENSE; + var s/*:Worksheet*/ = ((o.dense ? [] : {})/*:any*/), n = "Sheet1", next_n = "", sidx = 0; + var sheets = {}, snames = [], realnames = []; + + var refguess = {s: {r:0, c:0}, e: {r:0, c:0} }; + var sheetRows = o.sheetRows || 0; + + if(d[2] == 0x00) { + if(d[3] == 0x08 || d[3] == 0x09) { + if(d.length >= 16 && d[14] == 0x05 && d[15] === 0x6c) throw new Error("Unsupported Works 3 for Mac file"); + } + } + + if(d[2] == 0x02) { + o.Enum = WK1Enum; + lotushopper(d, function(val, R, RT) { switch(RT) { + case 0x00: /* BOF */ + o.vers = val; + if(val >= 0x1000) o.qpro = true; + break; + case 0x06: refguess = val; break; /* RANGE */ + case 0xCC: if(val) next_n = val; break; /* SHEETNAMECS */ + case 0xDE: next_n = val; break; /* SHEETNAMELP */ + case 0x0F: /* LABEL */ + case 0x33: /* STRING */ + if(!o.qpro) val[1].v = val[1].v.slice(1); + /* falls through */ + case 0x0D: /* INTEGER */ + case 0x0E: /* NUMBER */ + case 0x10: /* FORMULA */ + /* TODO: actual translation of the format code */ + if(RT == 0x0E && (val[2] & 0x70) == 0x70 && (val[2] & 0x0F) > 1 && (val[2] & 0x0F) < 15) { + val[1].z = o.dateNF || table_fmt[14]; + if(o.cellDates) { val[1].t = 'd'; val[1].v = numdate(val[1].v); } + } + + if(o.qpro) { + if(val[3] > sidx) { + s["!ref"] = encode_range(refguess); + sheets[n] = s; + snames.push(n); + s = (o.dense ? [] : {}); + refguess = {s: {r:0, c:0}, e: {r:0, c:0} }; + sidx = val[3]; n = next_n || "Sheet" + (sidx + 1); next_n = ""; + } + } + + var tmpcell = o.dense ? (s[val[0].r]||[])[val[0].c] : s[encode_cell(val[0])]; + if(tmpcell) { + tmpcell.t = val[1].t; tmpcell.v = val[1].v; + if(val[1].z != null) tmpcell.z = val[1].z; + if(val[1].f != null) tmpcell.f = val[1].f; + break; + } + if(o.dense) { + if(!s[val[0].r]) s[val[0].r] = []; + s[val[0].r][val[0].c] = val[1]; + } else s[encode_cell(val[0])] = val[1]; + break; + default: + }}, o); + } else if(d[2] == 0x1A || d[2] == 0x0E) { + o.Enum = WK3Enum; + if(d[2] == 0x0E) { o.qpro = true; d.l = 0; } + lotushopper(d, function(val, R, RT) { switch(RT) { + case 0xCC: n = val; break; /* SHEETNAMECS */ + case 0x16: /* LABEL16 */ + val[1].v = val[1].v.slice(1); + /* falls through */ + case 0x17: /* NUMBER17 */ + case 0x18: /* NUMBER18 */ + case 0x19: /* FORMULA19 */ + case 0x25: /* NUMBER25 */ + case 0x27: /* NUMBER27 */ + case 0x28: /* FORMULA28 */ + if(val[3] > sidx) { + s["!ref"] = encode_range(refguess); + sheets[n] = s; + snames.push(n); + s = (o.dense ? [] : {}); + refguess = {s: {r:0, c:0}, e: {r:0, c:0} }; + sidx = val[3]; n = "Sheet" + (sidx + 1); + } + if(sheetRows > 0 && val[0].r >= sheetRows) break; + if(o.dense) { + if(!s[val[0].r]) s[val[0].r] = []; + s[val[0].r][val[0].c] = val[1]; + } else s[encode_cell(val[0])] = val[1]; + if(refguess.e.c < val[0].c) refguess.e.c = val[0].c; + if(refguess.e.r < val[0].r) refguess.e.r = val[0].r; + break; + case 0x1B: /* XFORMAT */ + if(val[0x36b0]) realnames[val[0x36b0][0]] = val[0x36b0][1]; + break; + case 0x0601: /* SHEETINFOQP */ + realnames[val[0]] = val[1]; if(val[0] == sidx) n = val[1]; break; + default: break; + }}, o); + } else throw new Error("Unrecognized LOTUS BOF " + d[2]); + s["!ref"] = encode_range(refguess); + sheets[next_n || n] = s; + snames.push(next_n || n); + if(!realnames.length) return { SheetNames: snames, Sheets: sheets }; + var osheets = {}, rnames = []; + /* TODO: verify no collisions */ + for(var i = 0; i < realnames.length; ++i) if(sheets[snames[i]]) { + rnames.push(realnames[i] || snames[i]); + osheets[realnames[i]] = sheets[realnames[i]] || sheets[snames[i]]; + } else { + rnames.push(realnames[i]); + osheets[realnames[i]] = ({ "!ref": "A1" }); + } + return { SheetNames: rnames, Sheets: osheets }; + } + + function sheet_to_wk1(ws/*:Worksheet*/, opts/*:WriteOpts*/) { + var o = opts || {}; + if(+o.codepage >= 0) set_cp(+o.codepage); + if(o.type == "string") throw new Error("Cannot write WK1 to JS string"); + var ba = buf_array(); + var range = safe_decode_range(ws["!ref"]); + var dense = Array.isArray(ws); + var cols = []; + + write_biff_rec(ba, 0x00, write_BOF_WK1(0x0406)); + write_biff_rec(ba, 0x06, write_RANGE(range)); + var max_R = Math.min(range.e.r, 8191); + for(var R = range.s.r; R <= max_R; ++R) { + var rr = encode_row(R); + for(var C = range.s.c; C <= range.e.c; ++C) { + if(R === range.s.r) cols[C] = encode_col(C); + var ref = cols[C] + rr; + var cell = dense ? (ws[R]||[])[C] : ws[ref]; + if(!cell || cell.t == "z") continue; + /* TODO: formula records */ + if(cell.t == "n") { + if((cell.v|0)==cell.v && cell.v >= -32768 && cell.v <= 32767) write_biff_rec(ba, 0x0d, write_INTEGER(R, C, cell.v)); + else write_biff_rec(ba, 0x0e, write_NUMBER(R, C, cell.v)); + } else { + var str = format_cell(cell); + write_biff_rec(ba, 0x0F, write_LABEL(R, C, str.slice(0, 239))); + } + } + } + + write_biff_rec(ba, 0x01); + return ba.end(); + } + + function book_to_wk3(wb/*:Workbook*/, opts/*:WriteOpts*/) { + var o = opts || {}; + if(+o.codepage >= 0) set_cp(+o.codepage); + if(o.type == "string") throw new Error("Cannot write WK3 to JS string"); + var ba = buf_array(); + + write_biff_rec(ba, 0x00, write_BOF_WK3(wb)); + + for(var i = 0, cnt = 0; i < wb.SheetNames.length; ++i) if((wb.Sheets[wb.SheetNames[i]] || {})["!ref"]) write_biff_rec(ba, 0x1b, write_XFORMAT_SHEETNAME(wb.SheetNames[i], cnt++)); + + var wsidx = 0; + for(i = 0; i < wb.SheetNames.length; ++i) { + var ws = wb.Sheets[wb.SheetNames[i]]; + if(!ws || !ws["!ref"]) continue; + var range = safe_decode_range(ws["!ref"]); + var dense = Array.isArray(ws); + var cols = []; + var max_R = Math.min(range.e.r, 8191); + for(var R = range.s.r; R <= max_R; ++R) { + var rr = encode_row(R); + for(var C = range.s.c; C <= range.e.c; ++C) { + if(R === range.s.r) cols[C] = encode_col(C); + var ref = cols[C] + rr; + var cell = dense ? (ws[R]||[])[C] : ws[ref]; + if(!cell || cell.t == "z") continue; + /* TODO: FORMULA19 NUMBER18 records */ + if(cell.t == "n") { + write_biff_rec(ba, 0x17, write_NUMBER_17(R, C, wsidx, cell.v)); + } else { + var str = format_cell(cell); + /* TODO: max len? */ + write_biff_rec(ba, 0x16, write_LABEL_16(R, C, wsidx, str.slice(0, 239))); + } + } + } + ++wsidx; + } + + write_biff_rec(ba, 0x01); + return ba.end(); + } + + + function write_BOF_WK1(v/*:number*/) { + var out = new_buf(2); + out.write_shift(2, v); + return out; + } + + function write_BOF_WK3(wb/*:Workbook*/) { + var out = new_buf(26); + out.write_shift(2, 0x1000); + out.write_shift(2, 0x0004); + out.write_shift(4, 0x0000); + var rows = 0, cols = 0, wscnt = 0; + for(var i = 0; i < wb.SheetNames.length; ++i) { + var name = wb.SheetNames[i]; + var ws = wb.Sheets[name]; + if(!ws || !ws["!ref"]) continue; + ++wscnt; + var range = decode_range(ws["!ref"]); + if(rows < range.e.r) rows = range.e.r; + if(cols < range.e.c) cols = range.e.c; + } + if(rows > 8191) rows = 8191; + out.write_shift(2, rows); + out.write_shift(1, wscnt); + out.write_shift(1, cols); + out.write_shift(2, 0x00); + out.write_shift(2, 0x00); + out.write_shift(1, 0x01); + out.write_shift(1, 0x02); + out.write_shift(4, 0); + out.write_shift(4, 0); + return out; + } + + function parse_RANGE(blob, length, opts) { + var o = {s:{c:0,r:0},e:{c:0,r:0}}; + if(length == 8 && opts.qpro) { + o.s.c = blob.read_shift(1); + blob.l++; + o.s.r = blob.read_shift(2); + o.e.c = blob.read_shift(1); + blob.l++; + o.e.r = blob.read_shift(2); + return o; + } + o.s.c = blob.read_shift(2); + o.s.r = blob.read_shift(2); + if(length == 12 && opts.qpro) blob.l += 2; + o.e.c = blob.read_shift(2); + o.e.r = blob.read_shift(2); + if(length == 12 && opts.qpro) blob.l += 2; + if(o.s.c == 0xFFFF) o.s.c = o.e.c = o.s.r = o.e.r = 0; + return o; + } + function write_RANGE(range) { + var out = new_buf(8); + out.write_shift(2, range.s.c); + out.write_shift(2, range.s.r); + out.write_shift(2, range.e.c); + out.write_shift(2, range.e.r); + return out; + } + + function parse_cell(blob, length, opts) { + var o = [{c:0,r:0}, {t:'n',v:0}, 0, 0]; + if(opts.qpro && opts.vers != 0x5120) { + o[0].c = blob.read_shift(1); + o[3] = blob.read_shift(1); + o[0].r = blob.read_shift(2); + blob.l+=2; + } else { + o[2] = blob.read_shift(1); + o[0].c = blob.read_shift(2); o[0].r = blob.read_shift(2); + } + return o; + } + + function parse_LABEL(blob, length, opts) { + var tgt = blob.l + length; + var o = parse_cell(blob, length, opts); + o[1].t = 's'; + if(opts.vers == 0x5120) { + blob.l++; + var len = blob.read_shift(1); + o[1].v = blob.read_shift(len, 'utf8'); + return o; + } + if(opts.qpro) blob.l++; + o[1].v = blob.read_shift(tgt - blob.l, 'cstr'); + return o; + } + function write_LABEL(R, C, s) { + /* TODO: encoding */ + var o = new_buf(7 + s.length); + o.write_shift(1, 0xFF); + o.write_shift(2, C); + o.write_shift(2, R); + o.write_shift(1, 0x27); // ?? + for(var i = 0; i < o.length; ++i) { + var cc = s.charCodeAt(i); + o.write_shift(1, cc >= 0x80 ? 0x5F : cc); + } + o.write_shift(1, 0); + return o; + } + + function parse_INTEGER(blob, length, opts) { + var o = parse_cell(blob, length, opts); + o[1].v = blob.read_shift(2, 'i'); + return o; + } + function write_INTEGER(R, C, v) { + var o = new_buf(7); + o.write_shift(1, 0xFF); + o.write_shift(2, C); + o.write_shift(2, R); + o.write_shift(2, v, 'i'); + return o; + } + + function parse_NUMBER(blob, length, opts) { + var o = parse_cell(blob, length, opts); + o[1].v = blob.read_shift(8, 'f'); + return o; + } + function write_NUMBER(R, C, v) { + var o = new_buf(13); + o.write_shift(1, 0xFF); + o.write_shift(2, C); + o.write_shift(2, R); + o.write_shift(8, v, 'f'); + return o; + } + + function parse_FORMULA(blob, length, opts) { + var tgt = blob.l + length; + var o = parse_cell(blob, length, opts); + /* TODO: formula */ + o[1].v = blob.read_shift(8, 'f'); + if(opts.qpro) blob.l = tgt; + else { + var flen = blob.read_shift(2); + wk1_fmla_to_csf(blob.slice(blob.l, blob.l + flen), o); + blob.l += flen; + } + return o; + } + + function wk1_parse_rc(B, V, col) { + var rel = V & 0x8000; + V &= ~0x8000; + V = (rel ? B : 0) + ((V >= 0x2000) ? V - 0x4000 : V); + return (rel ? "" : "$") + (col ? encode_col(V) : encode_row(V)); + } + /* var oprec = [ + 8, 8, 8, 8, 8, 8, 8, 8, 6, 4, 4, 5, 5, 7, 3, 3, + 3, 3, 3, 3, 1, 1, 2, 6, 8, 8, 8, 8, 8, 8, 8, 8 + ]; */ + /* TODO: flesh out */ + var FuncTab = { + 0x33: ["FALSE", 0], + 0x34: ["TRUE", 0], + 0x46: ["LEN", 1], + 0x50: ["SUM", 69], + 0x51: ["AVERAGEA", 69], + 0x52: ["COUNTA", 69], + 0x53: ["MINA", 69], + 0x54: ["MAXA", 69], + 0x6F: ["T", 1] + }; + var BinOpTab = [ + "", "", "", "", "", "", "", "", // eslint-disable-line no-mixed-spaces-and-tabs + "", "+", "-", "*", "/", "^", "=", "<>", // eslint-disable-line no-mixed-spaces-and-tabs + "<=", ">=", "<", ">", "", "", "", "", // eslint-disable-line no-mixed-spaces-and-tabs + "&", "", "", "", "", "", "", "" // eslint-disable-line no-mixed-spaces-and-tabs + ]; + + function wk1_fmla_to_csf(blob, o) { + prep_blob(blob, 0); + var out = [], argc = 0, R = "", C = "", argL = "", argR = ""; + while(blob.l < blob.length) { + var cc = blob[blob.l++]; + switch(cc) { + case 0x00: out.push(blob.read_shift(8, 'f')); break; + case 0x01: { + C = wk1_parse_rc(o[0].c, blob.read_shift(2), true); + R = wk1_parse_rc(o[0].r, blob.read_shift(2), false); + out.push(C + R); + } break; + case 0x02: { + var c = wk1_parse_rc(o[0].c, blob.read_shift(2), true); + var r = wk1_parse_rc(o[0].r, blob.read_shift(2), false); + C = wk1_parse_rc(o[0].c, blob.read_shift(2), true); + R = wk1_parse_rc(o[0].r, blob.read_shift(2), false); + out.push(c + r + ":" + C + R); + } break; + case 0x03: + if(blob.l < blob.length) { console.error("WK1 premature formula end"); return; } + break; + case 0x04: out.push("(" + out.pop() + ")"); break; + case 0x05: out.push(blob.read_shift(2)); break; + case 0x06: { + /* TODO: text encoding */ + var Z = ""; while((cc = blob[blob.l++])) Z += String.fromCharCode(cc); + out.push('"' + Z.replace(/"/g, '""') + '"'); + } break; + + case 0x08: out.push("-" + out.pop()); break; + case 0x17: out.push("+" + out.pop()); break; + case 0x16: out.push("NOT(" + out.pop() + ")"); break; + + case 0x14: case 0x15: { + argR = out.pop(); argL = out.pop(); + out.push(["AND", "OR"][cc - 0x14] + "(" + argL + "," + argR + ")"); + } break; + + default: + if(cc < 0x20 && BinOpTab[cc]) { + argR = out.pop(); argL = out.pop(); + out.push(argL + BinOpTab[cc] + argR); + } else if(FuncTab[cc]) { + argc = FuncTab[cc][1]; + if(argc == 69) argc = blob[blob.l++]; + if(argc > out.length) { console.error("WK1 bad formula parse 0x" + cc.toString(16) + ":|" + out.join("|") + "|"); return; } + var args = out.slice(-argc); + out.length -= argc; + out.push(FuncTab[cc][0] + "(" + args.join(",") + ")"); + } + else if(cc <= 0x07) return console.error("WK1 invalid opcode " + cc.toString(16)); + else if(cc <= 0x18) return console.error("WK1 unsupported op " + cc.toString(16)); + else if(cc <= 0x1E) return console.error("WK1 invalid opcode " + cc.toString(16)); + else if(cc <= 0x73) return console.error("WK1 unsupported function opcode " + cc.toString(16)); + // possible future functions ?? + else return console.error("WK1 unrecognized opcode " + cc.toString(16)); + } + } + if(out.length == 1) o[1].f = "" + out[0]; + else console.error("WK1 bad formula parse |" + out.join("|") + "|"); + } + + + function parse_cell_3(blob/*::, length*/) { + var o = [{c:0,r:0}, {t:'n',v:0}, 0]; + o[0].r = blob.read_shift(2); o[3] = blob[blob.l++]; o[0].c = blob[blob.l++]; + return o; + } + + function parse_LABEL_16(blob, length) { + var o = parse_cell_3(blob, length); + o[1].t = 's'; + o[1].v = blob.read_shift(length - 4, 'cstr'); + return o; + } + function write_LABEL_16(R, C, wsidx, s) { + /* TODO: encoding */ + var o = new_buf(6 + s.length); + o.write_shift(2, R); + o.write_shift(1, wsidx); + o.write_shift(1, C); + o.write_shift(1, 0x27); + for(var i = 0; i < s.length; ++i) { + var cc = s.charCodeAt(i); + o.write_shift(1, cc >= 0x80 ? 0x5F : cc); + } + o.write_shift(1, 0); + return o; + } + + function parse_NUMBER_18(blob, length) { + var o = parse_cell_3(blob, length); + o[1].v = blob.read_shift(2); + var v = o[1].v >> 1; + if(o[1].v & 0x1) { + switch(v & 0x07) { + case 0: v = (v >> 3) * 5000; break; + case 1: v = (v >> 3) * 500; break; + case 2: v = (v >> 3) / 20; break; + case 3: v = (v >> 3) / 200; break; + case 4: v = (v >> 3) / 2000; break; + case 5: v = (v >> 3) / 20000; break; + case 6: v = (v >> 3) / 16; break; + case 7: v = (v >> 3) / 64; break; + } + } + o[1].v = v; + return o; + } + + function parse_NUMBER_17(blob, length) { + var o = parse_cell_3(blob, length); + var v1 = blob.read_shift(4); + var v2 = blob.read_shift(4); + var e = blob.read_shift(2); + if(e == 0xFFFF) { + if(v1 === 0 && v2 === 0xC0000000) { o[1].t = "e"; o[1].v = 0x0F; } // ERR -> #VALUE! + else if(v1 === 0 && v2 === 0xD0000000) { o[1].t = "e"; o[1].v = 0x2A; } // NA -> #N/A + else o[1].v = 0; + return o; + } + var s = e & 0x8000; e = (e&0x7FFF) - 16446; + o[1].v = (1 - s*2) * (v2 * Math.pow(2, e+32) + v1 * Math.pow(2, e)); + return o; + } + function write_NUMBER_17(R, C, wsidx, v) { + var o = new_buf(14); + o.write_shift(2, R); + o.write_shift(1, wsidx); + o.write_shift(1, C); + if(v == 0) { + o.write_shift(4, 0); + o.write_shift(4, 0); + o.write_shift(2, 0xFFFF); + return o; + } + var s = 0, e = 0, v1 = 0, v2 = 0; + if(v < 0) { s = 1; v = -v; } + e = Math.log2(v) | 0; + v /= Math.pow(2, e-31); + v2 = (v)>>>0; + if((v2&0x80000000) == 0) { v/=2; ++e; v2 = v >>> 0; } + v -= v2; + v2 |= 0x80000000; + v2 >>>= 0; + v *= Math.pow(2, 32); + v1 = v>>>0; + o.write_shift(4, v1); + o.write_shift(4, v2); + e += 0x3FFF + (s ? 0x8000 : 0); + o.write_shift(2, e); + return o; + } + + function parse_FORMULA_19(blob, length) { + var o = parse_NUMBER_17(blob, 14); + blob.l += length - 14; /* TODO: WK3 formula */ + return o; + } + + function parse_NUMBER_25(blob, length) { + var o = parse_cell_3(blob, length); + var v1 = blob.read_shift(4); + o[1].v = v1 >> 6; + return o; + } + + function parse_NUMBER_27(blob, length) { + var o = parse_cell_3(blob, length); + var v1 = blob.read_shift(8,'f'); + o[1].v = v1; + return o; + } + + function parse_FORMULA_28(blob, length) { + var o = parse_NUMBER_27(blob, 14); + blob.l += length - 10; /* TODO: formula */ + return o; + } + + function parse_SHEETNAMECS(blob, length) { + return blob[blob.l + length - 1] == 0 ? blob.read_shift(length, 'cstr') : ""; + } + + function parse_SHEETNAMELP(blob, length) { + var len = blob[blob.l++]; + if(len > length - 1) len = length - 1; + var o = ""; while(o.length < len) o += String.fromCharCode(blob[blob.l++]); + return o; + } + + function parse_SHEETINFOQP(blob, length, opts) { + if(!opts.qpro || length < 21) return; + var id = blob.read_shift(1); + blob.l += 17; + blob.l += 1; //var len = blob.read_shift(1); + blob.l += 2; + var nm = blob.read_shift(length - 21, 'cstr'); + return [id, nm]; + } + + function parse_XFORMAT(blob, length) { + var o = {}, tgt = blob.l + length; + while(blob.l < tgt) { + var dt = blob.read_shift(2); + if(dt == 0x36b0) { + o[dt] = [0, ""]; + o[dt][0] = blob.read_shift(2); + while(blob[blob.l]) { o[dt][1] += String.fromCharCode(blob[blob.l]); blob.l++; } blob.l++; + } + // TODO: 0x3a99 ?? + } + return o; + } + function write_XFORMAT_SHEETNAME(name, wsidx) { + var out = new_buf(5 + name.length); + out.write_shift(2, 0x36b0); + out.write_shift(2, wsidx); + for(var i = 0; i < name.length; ++i) { + var cc = name.charCodeAt(i); + out[out.l++] = cc > 0x7F ? 0x5F : cc; + } + out[out.l++] = 0; + return out; + } + + var WK1Enum = { + /*::[*/0x0000/*::]*/: { n:"BOF", f:parseuint16 }, + /*::[*/0x0001/*::]*/: { n:"EOF" }, + /*::[*/0x0002/*::]*/: { n:"CALCMODE" }, + /*::[*/0x0003/*::]*/: { n:"CALCORDER" }, + /*::[*/0x0004/*::]*/: { n:"SPLIT" }, + /*::[*/0x0005/*::]*/: { n:"SYNC" }, + /*::[*/0x0006/*::]*/: { n:"RANGE", f:parse_RANGE }, + /*::[*/0x0007/*::]*/: { n:"WINDOW1" }, + /*::[*/0x0008/*::]*/: { n:"COLW1" }, + /*::[*/0x0009/*::]*/: { n:"WINTWO" }, + /*::[*/0x000A/*::]*/: { n:"COLW2" }, + /*::[*/0x000B/*::]*/: { n:"NAME" }, + /*::[*/0x000C/*::]*/: { n:"BLANK" }, + /*::[*/0x000D/*::]*/: { n:"INTEGER", f:parse_INTEGER }, + /*::[*/0x000E/*::]*/: { n:"NUMBER", f:parse_NUMBER }, + /*::[*/0x000F/*::]*/: { n:"LABEL", f:parse_LABEL }, + /*::[*/0x0010/*::]*/: { n:"FORMULA", f:parse_FORMULA }, + /*::[*/0x0018/*::]*/: { n:"TABLE" }, + /*::[*/0x0019/*::]*/: { n:"ORANGE" }, + /*::[*/0x001A/*::]*/: { n:"PRANGE" }, + /*::[*/0x001B/*::]*/: { n:"SRANGE" }, + /*::[*/0x001C/*::]*/: { n:"FRANGE" }, + /*::[*/0x001D/*::]*/: { n:"KRANGE1" }, + /*::[*/0x0020/*::]*/: { n:"HRANGE" }, + /*::[*/0x0023/*::]*/: { n:"KRANGE2" }, + /*::[*/0x0024/*::]*/: { n:"PROTEC" }, + /*::[*/0x0025/*::]*/: { n:"FOOTER" }, + /*::[*/0x0026/*::]*/: { n:"HEADER" }, + /*::[*/0x0027/*::]*/: { n:"SETUP" }, + /*::[*/0x0028/*::]*/: { n:"MARGINS" }, + /*::[*/0x0029/*::]*/: { n:"LABELFMT" }, + /*::[*/0x002A/*::]*/: { n:"TITLES" }, + /*::[*/0x002B/*::]*/: { n:"SHEETJS" }, + /*::[*/0x002D/*::]*/: { n:"GRAPH" }, + /*::[*/0x002E/*::]*/: { n:"NGRAPH" }, + /*::[*/0x002F/*::]*/: { n:"CALCCOUNT" }, + /*::[*/0x0030/*::]*/: { n:"UNFORMATTED" }, + /*::[*/0x0031/*::]*/: { n:"CURSORW12" }, + /*::[*/0x0032/*::]*/: { n:"WINDOW" }, + /*::[*/0x0033/*::]*/: { n:"STRING", f:parse_LABEL }, + /*::[*/0x0037/*::]*/: { n:"PASSWORD" }, + /*::[*/0x0038/*::]*/: { n:"LOCKED" }, + /*::[*/0x003C/*::]*/: { n:"QUERY" }, + /*::[*/0x003D/*::]*/: { n:"QUERYNAME" }, + /*::[*/0x003E/*::]*/: { n:"PRINT" }, + /*::[*/0x003F/*::]*/: { n:"PRINTNAME" }, + /*::[*/0x0040/*::]*/: { n:"GRAPH2" }, + /*::[*/0x0041/*::]*/: { n:"GRAPHNAME" }, + /*::[*/0x0042/*::]*/: { n:"ZOOM" }, + /*::[*/0x0043/*::]*/: { n:"SYMSPLIT" }, + /*::[*/0x0044/*::]*/: { n:"NSROWS" }, + /*::[*/0x0045/*::]*/: { n:"NSCOLS" }, + /*::[*/0x0046/*::]*/: { n:"RULER" }, + /*::[*/0x0047/*::]*/: { n:"NNAME" }, + /*::[*/0x0048/*::]*/: { n:"ACOMM" }, + /*::[*/0x0049/*::]*/: { n:"AMACRO" }, + /*::[*/0x004A/*::]*/: { n:"PARSE" }, + /*::[*/0x0066/*::]*/: { n:"PRANGES??" }, + /*::[*/0x0067/*::]*/: { n:"RRANGES??" }, + /*::[*/0x0068/*::]*/: { n:"FNAME??" }, + /*::[*/0x0069/*::]*/: { n:"MRANGES??" }, + /*::[*/0x00CC/*::]*/: { n:"SHEETNAMECS", f:parse_SHEETNAMECS }, + /*::[*/0x00DE/*::]*/: { n:"SHEETNAMELP", f:parse_SHEETNAMELP }, + /*::[*/0xFFFF/*::]*/: { n:"" } + }; + + var WK3Enum = { + /*::[*/0x0000/*::]*/: { n:"BOF" }, + /*::[*/0x0001/*::]*/: { n:"EOF" }, + /*::[*/0x0002/*::]*/: { n:"PASSWORD" }, + /*::[*/0x0003/*::]*/: { n:"CALCSET" }, + /*::[*/0x0004/*::]*/: { n:"WINDOWSET" }, + /*::[*/0x0005/*::]*/: { n:"SHEETCELLPTR" }, + /*::[*/0x0006/*::]*/: { n:"SHEETLAYOUT" }, + /*::[*/0x0007/*::]*/: { n:"COLUMNWIDTH" }, + /*::[*/0x0008/*::]*/: { n:"HIDDENCOLUMN" }, + /*::[*/0x0009/*::]*/: { n:"USERRANGE" }, + /*::[*/0x000A/*::]*/: { n:"SYSTEMRANGE" }, + /*::[*/0x000B/*::]*/: { n:"ZEROFORCE" }, + /*::[*/0x000C/*::]*/: { n:"SORTKEYDIR" }, + /*::[*/0x000D/*::]*/: { n:"FILESEAL" }, + /*::[*/0x000E/*::]*/: { n:"DATAFILLNUMS" }, + /*::[*/0x000F/*::]*/: { n:"PRINTMAIN" }, + /*::[*/0x0010/*::]*/: { n:"PRINTSTRING" }, + /*::[*/0x0011/*::]*/: { n:"GRAPHMAIN" }, + /*::[*/0x0012/*::]*/: { n:"GRAPHSTRING" }, + /*::[*/0x0013/*::]*/: { n:"??" }, + /*::[*/0x0014/*::]*/: { n:"ERRCELL" }, + /*::[*/0x0015/*::]*/: { n:"NACELL" }, + /*::[*/0x0016/*::]*/: { n:"LABEL16", f:parse_LABEL_16}, + /*::[*/0x0017/*::]*/: { n:"NUMBER17", f:parse_NUMBER_17 }, + /*::[*/0x0018/*::]*/: { n:"NUMBER18", f:parse_NUMBER_18 }, + /*::[*/0x0019/*::]*/: { n:"FORMULA19", f:parse_FORMULA_19}, + /*::[*/0x001A/*::]*/: { n:"FORMULA1A" }, + /*::[*/0x001B/*::]*/: { n:"XFORMAT", f:parse_XFORMAT }, + /*::[*/0x001C/*::]*/: { n:"DTLABELMISC" }, + /*::[*/0x001D/*::]*/: { n:"DTLABELCELL" }, + /*::[*/0x001E/*::]*/: { n:"GRAPHWINDOW" }, + /*::[*/0x001F/*::]*/: { n:"CPA" }, + /*::[*/0x0020/*::]*/: { n:"LPLAUTO" }, + /*::[*/0x0021/*::]*/: { n:"QUERY" }, + /*::[*/0x0022/*::]*/: { n:"HIDDENSHEET" }, + /*::[*/0x0023/*::]*/: { n:"??" }, + /*::[*/0x0025/*::]*/: { n:"NUMBER25", f:parse_NUMBER_25 }, + /*::[*/0x0026/*::]*/: { n:"??" }, + /*::[*/0x0027/*::]*/: { n:"NUMBER27", f:parse_NUMBER_27 }, + /*::[*/0x0028/*::]*/: { n:"FORMULA28", f:parse_FORMULA_28 }, + /*::[*/0x008E/*::]*/: { n:"??" }, + /*::[*/0x0093/*::]*/: { n:"??" }, + /*::[*/0x0096/*::]*/: { n:"??" }, + /*::[*/0x0097/*::]*/: { n:"??" }, + /*::[*/0x0098/*::]*/: { n:"??" }, + /*::[*/0x0099/*::]*/: { n:"??" }, + /*::[*/0x009A/*::]*/: { n:"??" }, + /*::[*/0x009B/*::]*/: { n:"??" }, + /*::[*/0x009C/*::]*/: { n:"??" }, + /*::[*/0x00A3/*::]*/: { n:"??" }, + /*::[*/0x00AE/*::]*/: { n:"??" }, + /*::[*/0x00AF/*::]*/: { n:"??" }, + /*::[*/0x00B0/*::]*/: { n:"??" }, + /*::[*/0x00B1/*::]*/: { n:"??" }, + /*::[*/0x00B8/*::]*/: { n:"??" }, + /*::[*/0x00B9/*::]*/: { n:"??" }, + /*::[*/0x00BA/*::]*/: { n:"??" }, + /*::[*/0x00BB/*::]*/: { n:"??" }, + /*::[*/0x00BC/*::]*/: { n:"??" }, + /*::[*/0x00C3/*::]*/: { n:"??" }, + /*::[*/0x00C9/*::]*/: { n:"??" }, + /*::[*/0x00CC/*::]*/: { n:"SHEETNAMECS", f:parse_SHEETNAMECS }, + /*::[*/0x00CD/*::]*/: { n:"??" }, + /*::[*/0x00CE/*::]*/: { n:"??" }, + /*::[*/0x00CF/*::]*/: { n:"??" }, + /*::[*/0x00D0/*::]*/: { n:"??" }, + /*::[*/0x0100/*::]*/: { n:"??" }, + /*::[*/0x0103/*::]*/: { n:"??" }, + /*::[*/0x0104/*::]*/: { n:"??" }, + /*::[*/0x0105/*::]*/: { n:"??" }, + /*::[*/0x0106/*::]*/: { n:"??" }, + /*::[*/0x0107/*::]*/: { n:"??" }, + /*::[*/0x0109/*::]*/: { n:"??" }, + /*::[*/0x010A/*::]*/: { n:"??" }, + /*::[*/0x010B/*::]*/: { n:"??" }, + /*::[*/0x010C/*::]*/: { n:"??" }, + /*::[*/0x010E/*::]*/: { n:"??" }, + /*::[*/0x010F/*::]*/: { n:"??" }, + /*::[*/0x0180/*::]*/: { n:"??" }, + /*::[*/0x0185/*::]*/: { n:"??" }, + /*::[*/0x0186/*::]*/: { n:"??" }, + /*::[*/0x0189/*::]*/: { n:"??" }, + /*::[*/0x018C/*::]*/: { n:"??" }, + /*::[*/0x0200/*::]*/: { n:"??" }, + /*::[*/0x0202/*::]*/: { n:"??" }, + /*::[*/0x0201/*::]*/: { n:"??" }, + /*::[*/0x0204/*::]*/: { n:"??" }, + /*::[*/0x0205/*::]*/: { n:"??" }, + /*::[*/0x0280/*::]*/: { n:"??" }, + /*::[*/0x0281/*::]*/: { n:"??" }, + /*::[*/0x0282/*::]*/: { n:"??" }, + /*::[*/0x0283/*::]*/: { n:"??" }, + /*::[*/0x0284/*::]*/: { n:"??" }, + /*::[*/0x0285/*::]*/: { n:"??" }, + /*::[*/0x0286/*::]*/: { n:"??" }, + /*::[*/0x0287/*::]*/: { n:"??" }, + /*::[*/0x0288/*::]*/: { n:"??" }, + /*::[*/0x0292/*::]*/: { n:"??" }, + /*::[*/0x0293/*::]*/: { n:"??" }, + /*::[*/0x0294/*::]*/: { n:"??" }, + /*::[*/0x0295/*::]*/: { n:"??" }, + /*::[*/0x0296/*::]*/: { n:"??" }, + /*::[*/0x0299/*::]*/: { n:"??" }, + /*::[*/0x029A/*::]*/: { n:"??" }, + /*::[*/0x0300/*::]*/: { n:"??" }, + /*::[*/0x0304/*::]*/: { n:"??" }, + /*::[*/0x0601/*::]*/: { n:"SHEETINFOQP", f:parse_SHEETINFOQP }, + /*::[*/0x0640/*::]*/: { n:"??" }, + /*::[*/0x0642/*::]*/: { n:"??" }, + /*::[*/0x0701/*::]*/: { n:"??" }, + /*::[*/0x0702/*::]*/: { n:"??" }, + /*::[*/0x0703/*::]*/: { n:"??" }, + /*::[*/0x0704/*::]*/: { n:"??" }, + /*::[*/0x0780/*::]*/: { n:"??" }, + /*::[*/0x0800/*::]*/: { n:"??" }, + /*::[*/0x0801/*::]*/: { n:"??" }, + /*::[*/0x0804/*::]*/: { n:"??" }, + /*::[*/0x0A80/*::]*/: { n:"??" }, + /*::[*/0x2AF6/*::]*/: { n:"??" }, + /*::[*/0x3231/*::]*/: { n:"??" }, + /*::[*/0x6E49/*::]*/: { n:"??" }, + /*::[*/0x6F44/*::]*/: { n:"??" }, + /*::[*/0xFFFF/*::]*/: { n:"" } + }; + return { + sheet_to_wk1: sheet_to_wk1, + book_to_wk3: book_to_wk3, + to_workbook: lotus_to_workbook + }; +})(); +/* 18.4.7 rPr CT_RPrElt */ +function parse_rpr(rpr) { + var font = {}, m = rpr.match(tagregex), i = 0; + var pass = false; + if(m) for(;i!=m.length; ++i) { + var y = parsexmltag(m[i]); + switch(y[0].replace(/\w*:/g,"")) { + /* 18.8.12 condense CT_BooleanProperty */ + /* ** not required . */ + case '': + case '': font.shadow = 1; break; + case '': break; + + /* 18.4.1 charset CT_IntProperty TODO */ + case '': + case '': font.outline = 1; break; + case '': break; + + /* 18.4.5 rFont CT_FontName */ + case '': + case '': font.strike = 1; break; + case '': break; + + /* 18.4.13 u CT_UnderlineProperty */ + case '': + case '': font.u = 1; break; + case '': break; + + /* 18.8.2 b */ + case '': + case '': font.b = 1; break; + case '': break; + + /* 18.8.26 i */ + case '': + case '': font.i = 1; break; + case '': break; + + /* 18.3.1.15 color CT_Color TODO: tint, theme, auto, indexed */ + case '': case '': case '': break; + + /* 18.8.18 family ST_FontFamily */ + case '': case '': case '': break; + + /* 18.4.14 vertAlign CT_VerticalAlignFontProperty TODO */ + case '': case '': case '': break; + + /* 18.8.35 scheme CT_FontScheme TODO */ + case '': case '': case '': break; + + /* 18.2.10 extLst CT_ExtensionList ? */ + case '': case '': break; + case '': pass = false; break; + default: + if(y[0].charCodeAt(1) !== 47 && !pass) throw new Error('Unrecognized rich format ' + y[0]); + } + } + return font; +} + +var parse_rs = /*#__PURE__*/(function() { + var tregex = matchtag("t"), rpregex = matchtag("rPr"); + /* 18.4.4 r CT_RElt */ + function parse_r(r) { + /* 18.4.12 t ST_Xstring */ + var t = r.match(tregex)/*, cp = 65001*/; + if(!t) return {t:"s", v:""}; + + var o/*:Cell*/ = ({t:'s', v:unescapexml(t[1])}/*:any*/); + var rpr = r.match(rpregex); + if(rpr) o.s = parse_rpr(rpr[1]); + return o; + } + var rregex = /<(?:\w+:)?r>/g, rend = /<\/(?:\w+:)?r>/; + return function parse_rs(rs) { + return rs.replace(rregex,"").split(rend).map(parse_r).filter(function(r) { return r.v; }); + }; +})(); + + +/* Parse a list of tags */ +var rs_to_html = /*#__PURE__*/(function parse_rs_factory() { + var nlregex = /(\r\n|\n)/g; + function parse_rpr2(font, intro, outro) { + var style/*:Array*/ = []; + + if(font.u) style.push("text-decoration: underline;"); + if(font.uval) style.push("text-underline-style:" + font.uval + ";"); + if(font.sz) style.push("font-size:" + font.sz + "pt;"); + if(font.outline) style.push("text-effect: outline;"); + if(font.shadow) style.push("text-shadow: auto;"); + intro.push(''); + + if(font.b) { intro.push(""); outro.push(""); } + if(font.i) { intro.push(""); outro.push(""); } + if(font.strike) { intro.push(""); outro.push(""); } + + var align = font.valign || ""; + if(align == "superscript" || align == "super") align = "sup"; + else if(align == "subscript") align = "sub"; + if(align != "") { intro.push("<" + align + ">"); outro.push(""); } + + outro.push(""); + return font; + } + + /* 18.4.4 r CT_RElt */ + function r_to_html(r) { + var terms/*:[Array, string, Array]*/ = [[],r.v,[]]; + if(!r.v) return ""; + + if(r.s) parse_rpr2(r.s, terms[0], terms[2]); + + return terms[0].join("") + terms[1].replace(nlregex,'
') + terms[2].join(""); + } + + return function parse_rs(rs) { + return rs.map(r_to_html).join(""); + }; +})(); + +/* 18.4.8 si CT_Rst */ +var sitregex = /<(?:\w+:)?t[^>]*>([^<]*)<\/(?:\w+:)?t>/g, sirregex = /<(?:\w+:)?r>/; +var sirphregex = /<(?:\w+:)?rPh.*?>([\s\S]*?)<\/(?:\w+:)?rPh>/g; +function parse_si(x, opts) { + var html = opts ? opts.cellHTML : true; + var z = {}; + if(!x) return { t: "" }; + //var y; + /* 18.4.12 t ST_Xstring (Plaintext String) */ + // TODO: is whitespace actually valid here? + if(x.match(/^\s*<(?:\w+:)?t[^>]*>/)) { + z.t = unescapexml(utf8read(x.slice(x.indexOf(">")+1).split(/<\/(?:\w+:)?t>/)[0]||"")); + z.r = utf8read(x); + if(html) z.h = escapehtml(z.t); + } + /* 18.4.4 r CT_RElt (Rich Text Run) */ + else if((/*y = */x.match(sirregex))) { + z.r = utf8read(x); + z.t = unescapexml(utf8read((x.replace(sirphregex, '').match(sitregex)||[]).join("").replace(tagregex,""))); + if(html) z.h = rs_to_html(parse_rs(z.r)); + } + /* 18.4.3 phoneticPr CT_PhoneticPr (TODO: needed for Asian support) */ + /* 18.4.6 rPh CT_PhoneticRun (TODO: needed for Asian support) */ + return z; +} + +/* 18.4 Shared String Table */ +var sstr0 = /<(?:\w+:)?sst([^>]*)>([\s\S]*)<\/(?:\w+:)?sst>/; +var sstr1 = /<(?:\w+:)?(?:si|sstItem)>/g; +var sstr2 = /<\/(?:\w+:)?(?:si|sstItem)>/; +function parse_sst_xml(data/*:string*/, opts)/*:SST*/ { + var s/*:SST*/ = ([]/*:any*/), ss = ""; + if(!data) return s; + /* 18.4.9 sst CT_Sst */ + var sst = data.match(sstr0); + if(sst) { + ss = sst[2].replace(sstr1,"").split(sstr2); + for(var i = 0; i != ss.length; ++i) { + var o = parse_si(ss[i].trim(), opts); + if(o != null) s[s.length] = o; + } + sst = parsexmltag(sst[1]); s.Count = sst.count; s.Unique = sst.uniqueCount; + } + return s; +} + +var straywsregex = /^\s|\s$|[\t\n\r]/; +function write_sst_xml(sst/*:SST*/, opts)/*:string*/ { + if(!opts.bookSST) return ""; + var o = [XML_HEADER]; + o[o.length] = (writextag('sst', null, { + xmlns: XMLNS_main[0], + count: sst.Count, + uniqueCount: sst.Unique + })); + for(var i = 0; i != sst.length; ++i) { if(sst[i] == null) continue; + var s/*:XLString*/ = sst[i]; + var sitag = ""; + if(s.r) sitag += s.r; + else { + sitag += ""; + } + sitag += ""; + o[o.length] = (sitag); + } + if(o.length>2){ o[o.length] = (''); o[1]=o[1].replace("/>",">"); } + return o.join(""); +} +/* [MS-XLSB] 2.4.221 BrtBeginSst */ +function parse_BrtBeginSst(data) { + return [data.read_shift(4), data.read_shift(4)]; +} + +/* [MS-XLSB] 2.1.7.45 Shared Strings */ +function parse_sst_bin(data, opts)/*:SST*/ { + var s/*:SST*/ = ([]/*:any*/); + var pass = false; + recordhopper(data, function hopper_sst(val, R, RT) { + switch(RT) { + case 0x009F: /* BrtBeginSst */ + s.Count = val[0]; s.Unique = val[1]; break; + case 0x0013: /* BrtSSTItem */ + s.push(val); break; + case 0x00A0: /* BrtEndSst */ + return true; + + case 0x0023: /* BrtFRTBegin */ + pass = true; break; + case 0x0024: /* BrtFRTEnd */ + pass = false; break; + + default: + if(R.T){} + if(!pass || opts.WTF) throw new Error("Unexpected record 0x" + RT.toString(16)); + } + }); + return s; +} + +function write_BrtBeginSst(sst, o) { + if(!o) o = new_buf(8); + o.write_shift(4, sst.Count); + o.write_shift(4, sst.Unique); + return o; +} + +var write_BrtSSTItem = write_RichStr; + +function write_sst_bin(sst/*::, opts*/) { + var ba = buf_array(); + write_record(ba, 0x009F /* BrtBeginSst */, write_BrtBeginSst(sst)); + for(var i = 0; i < sst.length; ++i) write_record(ba, 0x0013 /* BrtSSTItem */, write_BrtSSTItem(sst[i])); + /* FRTSST */ + write_record(ba, 0x00A0 /* BrtEndSst */); + return ba.end(); +} +function _JS2ANSI(str/*:string*/)/*:Array*/ { + if(typeof $cptable !== 'undefined') return $cptable.utils.encode(current_ansi, str); + var o/*:Array*/ = [], oo = str.split(""); + for(var i = 0; i < oo.length; ++i) o[i] = oo[i].charCodeAt(0); + return o; +} + +/* [MS-OFFCRYPTO] 2.1.4 Version */ +function parse_CRYPTOVersion(blob, length/*:?number*/) { + var o/*:any*/ = {}; + o.Major = blob.read_shift(2); + o.Minor = blob.read_shift(2); + /*:: if(length == null) return o; */ + if(length >= 4) blob.l += length - 4; + return o; +} + +/* [MS-OFFCRYPTO] 2.1.5 DataSpaceVersionInfo */ +function parse_DataSpaceVersionInfo(blob) { + var o = {}; + o.id = blob.read_shift(0, 'lpp4'); + o.R = parse_CRYPTOVersion(blob, 4); + o.U = parse_CRYPTOVersion(blob, 4); + o.W = parse_CRYPTOVersion(blob, 4); + return o; +} + +/* [MS-OFFCRYPTO] 2.1.6.1 DataSpaceMapEntry Structure */ +function parse_DataSpaceMapEntry(blob) { + var len = blob.read_shift(4); + var end = blob.l + len - 4; + var o = {}; + var cnt = blob.read_shift(4); + var comps/*:Array<{t:number, v:string}>*/ = []; + /* [MS-OFFCRYPTO] 2.1.6.2 DataSpaceReferenceComponent Structure */ + while(cnt-- > 0) comps.push({ t: blob.read_shift(4), v: blob.read_shift(0, 'lpp4') }); + o.name = blob.read_shift(0, 'lpp4'); + o.comps = comps; + if(blob.l != end) throw new Error("Bad DataSpaceMapEntry: " + blob.l + " != " + end); + return o; +} + +/* [MS-OFFCRYPTO] 2.1.6 DataSpaceMap */ +function parse_DataSpaceMap(blob) { + var o = []; + blob.l += 4; // must be 0x8 + var cnt = blob.read_shift(4); + while(cnt-- > 0) o.push(parse_DataSpaceMapEntry(blob)); + return o; +} + +/* [MS-OFFCRYPTO] 2.1.7 DataSpaceDefinition */ +function parse_DataSpaceDefinition(blob)/*:Array*/ { + var o/*:Array*/ = []; + blob.l += 4; // must be 0x8 + var cnt = blob.read_shift(4); + while(cnt-- > 0) o.push(blob.read_shift(0, 'lpp4')); + return o; +} + +/* [MS-OFFCRYPTO] 2.1.8 DataSpaceDefinition */ +function parse_TransformInfoHeader(blob) { + var o = {}; + /*var len = */blob.read_shift(4); + blob.l += 4; // must be 0x1 + o.id = blob.read_shift(0, 'lpp4'); + o.name = blob.read_shift(0, 'lpp4'); + o.R = parse_CRYPTOVersion(blob, 4); + o.U = parse_CRYPTOVersion(blob, 4); + o.W = parse_CRYPTOVersion(blob, 4); + return o; +} + +function parse_Primary(blob) { + /* [MS-OFFCRYPTO] 2.2.6 IRMDSTransformInfo */ + var hdr = parse_TransformInfoHeader(blob); + /* [MS-OFFCRYPTO] 2.1.9 EncryptionTransformInfo */ + hdr.ename = blob.read_shift(0, '8lpp4'); + hdr.blksz = blob.read_shift(4); + hdr.cmode = blob.read_shift(4); + if(blob.read_shift(4) != 0x04) throw new Error("Bad !Primary record"); + return hdr; +} + +/* [MS-OFFCRYPTO] 2.3.2 Encryption Header */ +function parse_EncryptionHeader(blob, length/*:number*/) { + var tgt = blob.l + length; + var o = {}; + o.Flags = (blob.read_shift(4) & 0x3F); + blob.l += 4; + o.AlgID = blob.read_shift(4); + var valid = false; + switch(o.AlgID) { + case 0x660E: case 0x660F: case 0x6610: valid = (o.Flags == 0x24); break; + case 0x6801: valid = (o.Flags == 0x04); break; + case 0: valid = (o.Flags == 0x10 || o.Flags == 0x04 || o.Flags == 0x24); break; + default: throw 'Unrecognized encryption algorithm: ' + o.AlgID; + } + if(!valid) throw new Error("Encryption Flags/AlgID mismatch"); + o.AlgIDHash = blob.read_shift(4); + o.KeySize = blob.read_shift(4); + o.ProviderType = blob.read_shift(4); + blob.l += 8; + o.CSPName = blob.read_shift((tgt-blob.l)>>1, 'utf16le'); + blob.l = tgt; + return o; +} + +/* [MS-OFFCRYPTO] 2.3.3 Encryption Verifier */ +function parse_EncryptionVerifier(blob, length/*:number*/) { + var o = {}, tgt = blob.l + length; + blob.l += 4; // SaltSize must be 0x10 + o.Salt = blob.slice(blob.l, blob.l+16); blob.l += 16; + o.Verifier = blob.slice(blob.l, blob.l+16); blob.l += 16; + /*var sz = */blob.read_shift(4); + o.VerifierHash = blob.slice(blob.l, tgt); blob.l = tgt; + return o; +} + +/* [MS-OFFCRYPTO] 2.3.4.* EncryptionInfo Stream */ +function parse_EncryptionInfo(blob) { + var vers = parse_CRYPTOVersion(blob); + switch(vers.Minor) { + case 0x02: return [vers.Minor, parse_EncInfoStd(blob, vers)]; + case 0x03: return [vers.Minor, parse_EncInfoExt(blob, vers)]; + case 0x04: return [vers.Minor, parse_EncInfoAgl(blob, vers)]; + } + throw new Error("ECMA-376 Encrypted file unrecognized Version: " + vers.Minor); +} + +/* [MS-OFFCRYPTO] 2.3.4.5 EncryptionInfo Stream (Standard Encryption) */ +function parse_EncInfoStd(blob/*::, vers*/) { + var flags = blob.read_shift(4); + if((flags & 0x3F) != 0x24) throw new Error("EncryptionInfo mismatch"); + var sz = blob.read_shift(4); + //var tgt = blob.l + sz; + var hdr = parse_EncryptionHeader(blob, sz); + var verifier = parse_EncryptionVerifier(blob, blob.length - blob.l); + return { t:"Std", h:hdr, v:verifier }; +} +/* [MS-OFFCRYPTO] 2.3.4.6 EncryptionInfo Stream (Extensible Encryption) */ +function parse_EncInfoExt(/*::blob, vers*/) { throw new Error("File is password-protected: ECMA-376 Extensible"); } +/* [MS-OFFCRYPTO] 2.3.4.10 EncryptionInfo Stream (Agile Encryption) */ +function parse_EncInfoAgl(blob/*::, vers*/) { + var KeyData = ["saltSize","blockSize","keyBits","hashSize","cipherAlgorithm","cipherChaining","hashAlgorithm","saltValue"]; + blob.l+=4; + var xml = blob.read_shift(blob.length - blob.l, 'utf8'); + var o = {}; + xml.replace(tagregex, function xml_agile(x) { + var y/*:any*/ = parsexmltag(x); + switch(strip_ns(y[0])) { + case '': break; + case '': case '': break; + + case '': break; + case ' 4 || vers.Major < 2) throw new Error('unrecognized major version code: ' + vers.Major); + o.Flags = blob.read_shift(4); length -= 4; + var sz = blob.read_shift(4); length -= 4; + o.EncryptionHeader = parse_EncryptionHeader(blob, sz); length -= sz; + o.EncryptionVerifier = parse_EncryptionVerifier(blob, length); + return o; +} +/* [MS-OFFCRYPTO] 2.3.6.1 RC4 Encryption Header */ +function parse_RC4Header(blob/*::, length*/) { + var o = {}; + var vers = o.EncryptionVersionInfo = parse_CRYPTOVersion(blob, 4); + if(vers.Major != 1 || vers.Minor != 1) throw 'unrecognized version code ' + vers.Major + ' : ' + vers.Minor; + o.Salt = blob.read_shift(16); + o.EncryptedVerifier = blob.read_shift(16); + o.EncryptedVerifierHash = blob.read_shift(16); + return o; +} + +/* [MS-OFFCRYPTO] 2.3.7.1 Binary Document Password Verifier Derivation */ +function crypto_CreatePasswordVerifier_Method1(Password/*:string*/) { + var Verifier = 0x0000, PasswordArray; + var PasswordDecoded = _JS2ANSI(Password); + var len = PasswordDecoded.length + 1, i, PasswordByte; + var Intermediate1, Intermediate2, Intermediate3; + PasswordArray = new_raw_buf(len); + PasswordArray[0] = PasswordDecoded.length; + for(i = 1; i != len; ++i) PasswordArray[i] = PasswordDecoded[i-1]; + for(i = len-1; i >= 0; --i) { + PasswordByte = PasswordArray[i]; + Intermediate1 = ((Verifier & 0x4000) === 0x0000) ? 0 : 1; + Intermediate2 = (Verifier << 1) & 0x7FFF; + Intermediate3 = Intermediate1 | Intermediate2; + Verifier = Intermediate3 ^ PasswordByte; + } + return Verifier ^ 0xCE4B; +} + +/* [MS-OFFCRYPTO] 2.3.7.2 Binary Document XOR Array Initialization */ +var crypto_CreateXorArray_Method1 = /*#__PURE__*/(function() { + var PadArray = [0xBB, 0xFF, 0xFF, 0xBA, 0xFF, 0xFF, 0xB9, 0x80, 0x00, 0xBE, 0x0F, 0x00, 0xBF, 0x0F, 0x00]; + var InitialCode = [0xE1F0, 0x1D0F, 0xCC9C, 0x84C0, 0x110C, 0x0E10, 0xF1CE, 0x313E, 0x1872, 0xE139, 0xD40F, 0x84F9, 0x280C, 0xA96A, 0x4EC3]; + var XorMatrix = [0xAEFC, 0x4DD9, 0x9BB2, 0x2745, 0x4E8A, 0x9D14, 0x2A09, 0x7B61, 0xF6C2, 0xFDA5, 0xEB6B, 0xC6F7, 0x9DCF, 0x2BBF, 0x4563, 0x8AC6, 0x05AD, 0x0B5A, 0x16B4, 0x2D68, 0x5AD0, 0x0375, 0x06EA, 0x0DD4, 0x1BA8, 0x3750, 0x6EA0, 0xDD40, 0xD849, 0xA0B3, 0x5147, 0xA28E, 0x553D, 0xAA7A, 0x44D5, 0x6F45, 0xDE8A, 0xAD35, 0x4A4B, 0x9496, 0x390D, 0x721A, 0xEB23, 0xC667, 0x9CEF, 0x29FF, 0x53FE, 0xA7FC, 0x5FD9, 0x47D3, 0x8FA6, 0x0F6D, 0x1EDA, 0x3DB4, 0x7B68, 0xF6D0, 0xB861, 0x60E3, 0xC1C6, 0x93AD, 0x377B, 0x6EF6, 0xDDEC, 0x45A0, 0x8B40, 0x06A1, 0x0D42, 0x1A84, 0x3508, 0x6A10, 0xAA51, 0x4483, 0x8906, 0x022D, 0x045A, 0x08B4, 0x1168, 0x76B4, 0xED68, 0xCAF1, 0x85C3, 0x1BA7, 0x374E, 0x6E9C, 0x3730, 0x6E60, 0xDCC0, 0xA9A1, 0x4363, 0x86C6, 0x1DAD, 0x3331, 0x6662, 0xCCC4, 0x89A9, 0x0373, 0x06E6, 0x0DCC, 0x1021, 0x2042, 0x4084, 0x8108, 0x1231, 0x2462, 0x48C4]; + var Ror = function(Byte) { return ((Byte/2) | (Byte*128)) & 0xFF; }; + var XorRor = function(byte1, byte2) { return Ror(byte1 ^ byte2); }; + var CreateXorKey_Method1 = function(Password) { + var XorKey = InitialCode[Password.length - 1]; + var CurrentElement = 0x68; + for(var i = Password.length-1; i >= 0; --i) { + var Char = Password[i]; + for(var j = 0; j != 7; ++j) { + if(Char & 0x40) XorKey ^= XorMatrix[CurrentElement]; + Char *= 2; --CurrentElement; + } + } + return XorKey; + }; + return function(password/*:string*/) { + var Password = _JS2ANSI(password); + var XorKey = CreateXorKey_Method1(Password); + var Index = Password.length; + var ObfuscationArray = new_raw_buf(16); + for(var i = 0; i != 16; ++i) ObfuscationArray[i] = 0x00; + var Temp, PasswordLastChar, PadIndex; + if((Index & 1) === 1) { + Temp = XorKey >> 8; + ObfuscationArray[Index] = XorRor(PadArray[0], Temp); + --Index; + Temp = XorKey & 0xFF; + PasswordLastChar = Password[Password.length - 1]; + ObfuscationArray[Index] = XorRor(PasswordLastChar, Temp); + } + while(Index > 0) { + --Index; + Temp = XorKey >> 8; + ObfuscationArray[Index] = XorRor(Password[Index], Temp); + --Index; + Temp = XorKey & 0xFF; + ObfuscationArray[Index] = XorRor(Password[Index], Temp); + } + Index = 15; + PadIndex = 15 - Password.length; + while(PadIndex > 0) { + Temp = XorKey >> 8; + ObfuscationArray[Index] = XorRor(PadArray[PadIndex], Temp); + --Index; + --PadIndex; + Temp = XorKey & 0xFF; + ObfuscationArray[Index] = XorRor(Password[Index], Temp); + --Index; + --PadIndex; + } + return ObfuscationArray; + }; +})(); + +/* [MS-OFFCRYPTO] 2.3.7.3 Binary Document XOR Data Transformation Method 1 */ +var crypto_DecryptData_Method1 = function(password/*:string*/, Data, XorArrayIndex, XorArray, O) { + /* If XorArray is set, use it; if O is not set, make changes in-place */ + if(!O) O = Data; + if(!XorArray) XorArray = crypto_CreateXorArray_Method1(password); + var Index, Value; + for(Index = 0; Index != Data.length; ++Index) { + Value = Data[Index]; + Value ^= XorArray[XorArrayIndex]; + Value = ((Value>>5) | (Value<<3)) & 0xFF; + O[Index] = Value; + ++XorArrayIndex; + } + return [O, XorArrayIndex, XorArray]; +}; + +var crypto_MakeXorDecryptor = function(password/*:string*/) { + var XorArrayIndex = 0, XorArray = crypto_CreateXorArray_Method1(password); + return function(Data) { + var O = crypto_DecryptData_Method1("", Data, XorArrayIndex, XorArray); + XorArrayIndex = O[1]; + return O[0]; + }; +}; + +/* 2.5.343 */ +function parse_XORObfuscation(blob, length, opts, out) { + var o = ({ key: parseuint16(blob), verificationBytes: parseuint16(blob) }/*:any*/); + if(opts.password) o.verifier = crypto_CreatePasswordVerifier_Method1(opts.password); + out.valid = o.verificationBytes === o.verifier; + if(out.valid) out.insitu = crypto_MakeXorDecryptor(opts.password); + return o; +} + +/* 2.4.117 */ +function parse_FilePassHeader(blob, length/*:number*/, oo) { + var o = oo || {}; o.Info = blob.read_shift(2); blob.l -= 2; + if(o.Info === 1) o.Data = parse_RC4Header(blob, length); + else o.Data = parse_RC4CryptoHeader(blob, length); + return o; +} +function parse_FilePass(blob, length/*:number*/, opts) { + var o = ({ Type: opts.biff >= 8 ? blob.read_shift(2) : 0 }/*:any*/); /* wEncryptionType */ + if(o.Type) parse_FilePassHeader(blob, length-2, o); + else parse_XORObfuscation(blob, opts.biff >= 8 ? length : length - 2, opts, o); + return o; +} + + +var RTF = /*#__PURE__*/(function() { + function rtf_to_sheet(d/*:RawData*/, opts)/*:Worksheet*/ { + switch(opts.type) { + case 'base64': return rtf_to_sheet_str(Base64_decode(d), opts); + case 'binary': return rtf_to_sheet_str(d, opts); + case 'buffer': return rtf_to_sheet_str(has_buf && Buffer.isBuffer(d) ? d.toString('binary') : a2s(d), opts); + case 'array': return rtf_to_sheet_str(cc2str(d), opts); + } + throw new Error("Unrecognized type " + opts.type); + } + + /* TODO: this is a stub */ + function rtf_to_sheet_str(str/*:string*/, opts)/*:Worksheet*/ { + var o = opts || {}; + var ws/*:Worksheet*/ = o.dense ? ([]/*:any*/) : ({}/*:any*/); + + var rows = str.match(/\\trowd.*?\\row\b/g); + if(!rows.length) throw new Error("RTF missing table"); + var range/*:Range*/ = ({s: {c:0, r:0}, e: {c:0, r:rows.length - 1}}/*:any*/); + rows.forEach(function(rowtf, R) { + if(Array.isArray(ws)) ws[R] = []; + var rtfre = /\\\w+\b/g; + var last_index = 0; + var res; + var C = -1; + while((res = rtfre.exec(rowtf))) { + switch(res[0]) { + case "\\cell": + var data = rowtf.slice(last_index, rtfre.lastIndex - res[0].length); + if(data[0] == " ") data = data.slice(1); + ++C; + if(data.length) { + // TODO: value parsing, including codepage adjustments + var cell = {v: data, t:"s"}; + if(Array.isArray(ws)) ws[R][C] = cell; + else ws[encode_cell({r:R, c:C})] = cell; + } + break; + } + last_index = rtfre.lastIndex; + } + if(C > range.e.c) range.e.c = C; + }); + ws['!ref'] = encode_range(range); + return ws; + } + + function rtf_to_workbook(d/*:RawData*/, opts)/*:Workbook*/ { return sheet_to_workbook(rtf_to_sheet(d, opts), opts); } + + /* TODO: this is a stub */ + function sheet_to_rtf(ws/*:Worksheet*//*::, opts*/)/*:string*/ { + var o = ["{\\rtf1\\ansi"]; + var r = safe_decode_range(ws['!ref']), cell/*:Cell*/; + var dense = Array.isArray(ws); + for(var R = r.s.r; R <= r.e.r; ++R) { + o.push("\\trowd\\trautofit1"); + for(var C = r.s.c; C <= r.e.c; ++C) o.push("\\cellx" + (C+1)); + o.push("\\pard\\intbl"); + for(C = r.s.c; C <= r.e.c; ++C) { + var coord = encode_cell({r:R,c:C}); + cell = dense ? (ws[R]||[])[C]: ws[coord]; + if(!cell || cell.v == null && (!cell.f || cell.F)) continue; + o.push(" " + (cell.w || (format_cell(cell), cell.w))); + o.push("\\cell"); + } + o.push("\\pard\\intbl\\row"); + } + return o.join("") + "}"; + } + + return { + to_workbook: rtf_to_workbook, + to_sheet: rtf_to_sheet, + from_sheet: sheet_to_rtf + }; +})(); +function hex2RGB(h) { + var o = h.slice(h[0]==="#"?1:0).slice(0,6); + return [parseInt(o.slice(0,2),16),parseInt(o.slice(2,4),16),parseInt(o.slice(4,6),16)]; +} +function rgb2Hex(rgb) { + for(var i=0,o=1; i!=3; ++i) o = o*256 + (rgb[i]>255?255:rgb[i]<0?0:rgb[i]); + return o.toString(16).toUpperCase().slice(1); +} + +function rgb2HSL(rgb) { + var R = rgb[0]/255, G = rgb[1]/255, B=rgb[2]/255; + var M = Math.max(R, G, B), m = Math.min(R, G, B), C = M - m; + if(C === 0) return [0, 0, R]; + + var H6 = 0, S = 0, L2 = (M + m); + S = C / (L2 > 1 ? 2 - L2 : L2); + switch(M){ + case R: H6 = ((G - B) / C + 6)%6; break; + case G: H6 = ((B - R) / C + 2); break; + case B: H6 = ((R - G) / C + 4); break; + } + return [H6 / 6, S, L2 / 2]; +} + +function hsl2RGB(hsl){ + var H = hsl[0], S = hsl[1], L = hsl[2]; + var C = S * 2 * (L < 0.5 ? L : 1 - L), m = L - C/2; + var rgb = [m,m,m], h6 = 6*H; + + var X; + if(S !== 0) switch(h6|0) { + case 0: case 6: X = C * h6; rgb[0] += C; rgb[1] += X; break; + case 1: X = C * (2 - h6); rgb[0] += X; rgb[1] += C; break; + case 2: X = C * (h6 - 2); rgb[1] += C; rgb[2] += X; break; + case 3: X = C * (4 - h6); rgb[1] += X; rgb[2] += C; break; + case 4: X = C * (h6 - 4); rgb[2] += C; rgb[0] += X; break; + case 5: X = C * (6 - h6); rgb[2] += X; rgb[0] += C; break; + } + for(var i = 0; i != 3; ++i) rgb[i] = Math.round(rgb[i]*255); + return rgb; +} + +/* 18.8.3 bgColor tint algorithm */ +function rgb_tint(hex, tint) { + if(tint === 0) return hex; + var hsl = rgb2HSL(hex2RGB(hex)); + if (tint < 0) hsl[2] = hsl[2] * (1 + tint); + else hsl[2] = 1 - (1 - hsl[2]) * (1 - tint); + return rgb2Hex(hsl2RGB(hsl)); +} + +/* 18.3.1.13 width calculations */ +/* [MS-OI29500] 2.1.595 Column Width & Formatting */ +var DEF_MDW = 6, MAX_MDW = 15, MIN_MDW = 1, MDW = DEF_MDW; +function width2px(width) { return Math.floor(( width + (Math.round(128/MDW))/256 )* MDW ); } +function px2char(px) { return (Math.floor((px - 5)/MDW * 100 + 0.5))/100; } +function char2width(chr) { return (Math.round((chr * MDW + 5)/MDW*256))/256; } +//function px2char_(px) { return (((px - 5)/MDW * 100 + 0.5))/100; } +//function char2width_(chr) { return (((chr * MDW + 5)/MDW*256))/256; } +function cycle_width(collw) { return char2width(px2char(width2px(collw))); } +/* XLSX/XLSB/XLS specify width in units of MDW */ +function find_mdw_colw(collw) { + var delta = Math.abs(collw - cycle_width(collw)), _MDW = MDW; + if(delta > 0.005) for(MDW=MIN_MDW; MDW 0.5) guess--; + if(Math.abs(guess) < delta) { delta = Math.abs(guess); _MDW = MDW; } + } + MDW = _MDW; +}*/ + +function process_col(coll/*:ColInfo*/) { + if(coll.width) { + coll.wpx = width2px(coll.width); + coll.wch = px2char(coll.wpx); + coll.MDW = MDW; + } else if(coll.wpx) { + coll.wch = px2char(coll.wpx); + coll.width = char2width(coll.wch); + coll.MDW = MDW; + } else if(typeof coll.wch == 'number') { + coll.width = char2width(coll.wch); + coll.wpx = width2px(coll.width); + coll.MDW = MDW; + } + if(coll.customWidth) delete coll.customWidth; +} + +var DEF_PPI = 96, PPI = DEF_PPI; +function px2pt(px) { return px * 96 / PPI; } +function pt2px(pt) { return pt * PPI / 96; } + +/* [MS-EXSPXML3] 2.4.54 ST_enmPattern */ +var XLMLPatternTypeMap = { + "None": "none", + "Solid": "solid", + "Gray50": "mediumGray", + "Gray75": "darkGray", + "Gray25": "lightGray", + "HorzStripe": "darkHorizontal", + "VertStripe": "darkVertical", + "ReverseDiagStripe": "darkDown", + "DiagStripe": "darkUp", + "DiagCross": "darkGrid", + "ThickDiagCross": "darkTrellis", + "ThinHorzStripe": "lightHorizontal", + "ThinVertStripe": "lightVertical", + "ThinReverseDiagStripe": "lightDown", + "ThinHorzCross": "lightGrid" +}; + +/* 18.8.5 borders CT_Borders */ +function parse_borders(t, styles, themes, opts) { + styles.Borders = []; + var border = {}; + var pass = false; + (t[0].match(tagregex)||[]).forEach(function(x) { + var y = parsexmltag(x); + switch(strip_ns(y[0])) { + case '': case '': break; + + /* 18.8.4 border CT_Border */ + case '': case '': + border = /*::(*/{}/*:: :any)*/; + if(y.diagonalUp) border.diagonalUp = parsexmlbool(y.diagonalUp); + if(y.diagonalDown) border.diagonalDown = parsexmlbool(y.diagonalDown); + styles.Borders.push(border); + break; + case '': break; + + /* note: not in spec, appears to be CT_BorderPr */ + case '': break; + case '': break; + case '': break; + + /* note: not in spec, appears to be CT_BorderPr */ + case '': break; + case '': break; + case '': break; + + /* 18.8.43 top CT_BorderPr */ + case '': break; + case '': break; + case '': break; + + /* 18.8.6 bottom CT_BorderPr */ + case '': break; + case '': break; + case '': break; + + /* 18.8.13 diagonal CT_BorderPr */ + case '': case '': break; + case '': break; + + /* 18.8.25 horizontal CT_BorderPr */ + case '': case '': break; + case '': break; + + /* 18.8.44 vertical CT_BorderPr */ + case '': case '': break; + case '': break; + + /* 18.8.37 start CT_BorderPr */ + case '': case '': break; + case '': break; + + /* 18.8.16 end CT_BorderPr */ + case '': case '': break; + case '': break; + + /* 18.8.? color CT_Color */ + case '': + break; + case '': case '': break; + + /* 18.2.10 extLst CT_ExtensionList ? */ + case '': case '': break; + case '': pass = false; break; + default: if(opts && opts.WTF) { + if(!pass) throw new Error('unrecognized ' + y[0] + ' in borders'); + } + } + }); +} + +/* 18.8.21 fills CT_Fills */ +function parse_fills(t, styles, themes, opts) { + styles.Fills = []; + var fill = {}; + var pass = false; + (t[0].match(tagregex)||[]).forEach(function(x) { + var y = parsexmltag(x); + switch(strip_ns(y[0])) { + case '': case '': break; + + /* 18.8.20 fill CT_Fill */ + case '': case '': + fill = {}; styles.Fills.push(fill); break; + case '': break; + + /* 18.8.24 gradientFill CT_GradientFill */ + case '': break; + case '': styles.Fills.push(fill); fill = {}; break; + + /* 18.8.32 patternFill CT_PatternFill */ + case '': + if(y.patternType) fill.patternType = y.patternType; + break; + case '': case '': break; + + /* 18.8.3 bgColor CT_Color */ + case '': case '': break; + + /* 18.8.19 fgColor CT_Color */ + case '': case '': break; + + /* 18.8.38 stop CT_GradientStop */ + case '': break; + case '': break; + + /* 18.8.? color CT_Color */ + case '': break; + case '': break; + + /* 18.2.10 extLst CT_ExtensionList ? */ + case '': case '': break; + case '': pass = false; break; + default: if(opts && opts.WTF) { + if(!pass) throw new Error('unrecognized ' + y[0] + ' in fills'); + } + } + }); +} + +/* 18.8.23 fonts CT_Fonts */ +function parse_fonts(t, styles, themes, opts) { + styles.Fonts = []; + var font = {}; + var pass = false; + (t[0].match(tagregex)||[]).forEach(function(x) { + var y = parsexmltag(x); + switch(strip_ns(y[0])) { + case '': case '': break; + + /* 18.8.22 font CT_Font */ + case '': break; + case '': case '': + styles.Fonts.push(font); + font = {}; + break; + + /* 18.8.29 name CT_FontName */ + case '': case '': break; + + /* 18.8.2 b CT_BooleanProperty */ + case '': font.bold = 1; break; + + /* 18.8.26 i CT_BooleanProperty */ + case '': font.italic = 1; break; + + /* 18.4.13 u CT_UnderlineProperty */ + case '': font.underline = 1; break; + + /* 18.4.10 strike CT_BooleanProperty */ + case '': font.strike = 1; break; + + /* 18.4.2 outline CT_BooleanProperty */ + case '': font.outline = 1; break; + + /* 18.8.36 shadow CT_BooleanProperty */ + case '': font.shadow = 1; break; + + /* 18.8.12 condense CT_BooleanProperty */ + case '': font.condense = 1; break; + + /* 18.8.17 extend CT_BooleanProperty */ + case '': font.extend = 1; break; + + /* 18.4.11 sz CT_FontSize */ + case '': case '': break; + + /* 18.4.14 vertAlign CT_VerticalAlignFontProperty */ + case '': case '': break; + + /* 18.8.18 family CT_FontFamily */ + case '': case '': break; + + /* 18.8.35 scheme CT_FontScheme */ + case '': case '': break; + + /* 18.4.1 charset CT_IntProperty */ + case '': case '': break; + + /* note: sometimes mc:AlternateContent appears bare */ + case '': pass = false; break; + + /* 18.2.10 extLst CT_ExtensionList ? */ + case '': case '': break; + case '': pass = false; break; + default: if(opts && opts.WTF) { + if(!pass) throw new Error('unrecognized ' + y[0] + ' in fonts'); + } + } + }); +} + +/* 18.8.31 numFmts CT_NumFmts */ +function parse_numFmts(t, styles, opts) { + styles.NumberFmt = []; + var k/*Array*/ = (keys(table_fmt)/*:any*/); + for(var i=0; i < k.length; ++i) styles.NumberFmt[k[i]] = table_fmt[k[i]]; + var m = t[0].match(tagregex); + if(!m) return; + for(i=0; i < m.length; ++i) { + var y = parsexmltag(m[i]); + switch(strip_ns(y[0])) { + case '': case '': case '': break; + case '0) { + if(j > 0x188) { + for(j = 0x188; j > 0x3c; --j) if(styles.NumberFmt[j] == null) break; + styles.NumberFmt[j] = f; + } + SSF_load(f,j); + } + } break; + case '': break; + default: if(opts.WTF) throw new Error('unrecognized ' + y[0] + ' in numFmts'); + } + } +} + +function write_numFmts(NF/*:{[n:number|string]:string}*//*::, opts*/) { + var o = [""]; + [[5,8],[23,26],[41,44],[/*63*/50,/*66],[164,*/392]].forEach(function(r) { + for(var i = r[0]; i <= r[1]; ++i) if(NF[i] != null) o[o.length] = (writextag('numFmt',null,{numFmtId:i,formatCode:escapexml(NF[i])})); + }); + if(o.length === 1) return ""; + o[o.length] = (""); + o[0] = writextag('numFmts', null, { count:o.length-2 }).replace("/>", ">"); + return o.join(""); +} + +/* 18.8.10 cellXfs CT_CellXfs */ +var cellXF_uint = [ "numFmtId", "fillId", "fontId", "borderId", "xfId" ]; +var cellXF_bool = [ "applyAlignment", "applyBorder", "applyFill", "applyFont", "applyNumberFormat", "applyProtection", "pivotButton", "quotePrefix" ]; +function parse_cellXfs(t, styles, opts) { + styles.CellXf = []; + var xf; + var pass = false; + (t[0].match(tagregex)||[]).forEach(function(x) { + var y = parsexmltag(x), i = 0; + switch(strip_ns(y[0])) { + case '': case '': case '': break; + + /* 18.8.45 xf CT_Xf */ + case '': + xf = y; + delete xf[0]; + for(i = 0; i < cellXF_uint.length; ++i) if(xf[cellXF_uint[i]]) + xf[cellXF_uint[i]] = parseInt(xf[cellXF_uint[i]], 10); + for(i = 0; i < cellXF_bool.length; ++i) if(xf[cellXF_bool[i]]) + xf[cellXF_bool[i]] = parsexmlbool(xf[cellXF_bool[i]]); + if(styles.NumberFmt && xf.numFmtId > 0x188) { + for(i = 0x188; i > 0x3c; --i) if(styles.NumberFmt[xf.numFmtId] == styles.NumberFmt[i]) { xf.numFmtId = i; break; } + } + styles.CellXf.push(xf); break; + case '': break; + + /* 18.8.1 alignment CT_CellAlignment */ + case '': + var alignment = {}; + if(y.vertical) alignment.vertical = y.vertical; + if(y.horizontal) alignment.horizontal = y.horizontal; + if(y.textRotation != null) alignment.textRotation = y.textRotation; + if(y.indent) alignment.indent = y.indent; + if(y.wrapText) alignment.wrapText = parsexmlbool(y.wrapText); + xf.alignment = alignment; + break; + case '': break; + + /* 18.8.33 protection CT_CellProtection */ + case '': case '': break; + + /* note: sometimes mc:AlternateContent appears bare */ + case '': pass = false; break; + + /* 18.2.10 extLst CT_ExtensionList ? */ + case '': case '': break; + case '': pass = false; break; + default: if(opts && opts.WTF) { + if(!pass) throw new Error('unrecognized ' + y[0] + ' in cellXfs'); + } + } + }); +} + +function write_cellXfs(cellXfs)/*:string*/ { + var o/*:Array*/ = []; + o[o.length] = (writextag('cellXfs',null)); + cellXfs.forEach(function(c) { + o[o.length] = (writextag('xf', null, c)); + }); + o[o.length] = (""); + if(o.length === 2) return ""; + o[0] = writextag('cellXfs',null, {count:o.length-2}).replace("/>",">"); + return o.join(""); +} + +/* 18.8 Styles CT_Stylesheet*/ +var parse_sty_xml= /*#__PURE__*/(function make_pstyx() { +var numFmtRegex = /<(?:\w+:)?numFmts([^>]*)>[\S\s]*?<\/(?:\w+:)?numFmts>/; +var cellXfRegex = /<(?:\w+:)?cellXfs([^>]*)>[\S\s]*?<\/(?:\w+:)?cellXfs>/; +var fillsRegex = /<(?:\w+:)?fills([^>]*)>[\S\s]*?<\/(?:\w+:)?fills>/; +var fontsRegex = /<(?:\w+:)?fonts([^>]*)>[\S\s]*?<\/(?:\w+:)?fonts>/; +var bordersRegex = /<(?:\w+:)?borders([^>]*)>[\S\s]*?<\/(?:\w+:)?borders>/; + +return function parse_sty_xml(data, themes, opts) { + var styles = {}; + if(!data) return styles; + data = data.replace(//mg,"").replace(//gm,""); + /* 18.8.39 styleSheet CT_Stylesheet */ + var t; + + /* 18.8.31 numFmts CT_NumFmts ? */ + if((t=data.match(numFmtRegex))) parse_numFmts(t, styles, opts); + + /* 18.8.23 fonts CT_Fonts ? */ + if((t=data.match(fontsRegex))) parse_fonts(t, styles, themes, opts); + + /* 18.8.21 fills CT_Fills ? */ + if((t=data.match(fillsRegex))) parse_fills(t, styles, themes, opts); + + /* 18.8.5 borders CT_Borders ? */ + if((t=data.match(bordersRegex))) parse_borders(t, styles, themes, opts); + + /* 18.8.9 cellStyleXfs CT_CellStyleXfs ? */ + /* 18.8.8 cellStyles CT_CellStyles ? */ + + /* 18.8.10 cellXfs CT_CellXfs ? */ + if((t=data.match(cellXfRegex))) parse_cellXfs(t, styles, opts); + + /* 18.8.15 dxfs CT_Dxfs ? */ + /* 18.8.42 tableStyles CT_TableStyles ? */ + /* 18.8.11 colors CT_Colors ? */ + /* 18.2.10 extLst CT_ExtensionList ? */ + + return styles; +}; +})(); + +function write_sty_xml(wb/*:Workbook*/, opts)/*:string*/ { + var o = [XML_HEADER, writextag('styleSheet', null, { + 'xmlns': XMLNS_main[0], + 'xmlns:vt': XMLNS.vt + })], w; + if(wb.SSF && (w = write_numFmts(wb.SSF)) != null) o[o.length] = w; + o[o.length] = (''); + o[o.length] = (''); + o[o.length] = (''); + o[o.length] = (''); + if((w = write_cellXfs(opts.cellXfs))) o[o.length] = (w); + o[o.length] = (''); + o[o.length] = (''); + o[o.length] = (''); + + if(o.length>2){ o[o.length] = (''); o[1]=o[1].replace("/>",">"); } + return o.join(""); +} +/* [MS-XLSB] 2.4.657 BrtFmt */ +function parse_BrtFmt(data, length/*:number*/) { + var numFmtId = data.read_shift(2); + var stFmtCode = parse_XLWideString(data,length-2); + return [numFmtId, stFmtCode]; +} +function write_BrtFmt(i/*:number*/, f/*:string*/, o) { + if(!o) o = new_buf(6 + 4 * f.length); + o.write_shift(2, i); + write_XLWideString(f, o); + var out = (o.length > o.l) ? o.slice(0, o.l) : o; + if(o.l == null) o.l = o.length; + return out; +} + +/* [MS-XLSB] 2.4.659 BrtFont TODO */ +function parse_BrtFont(data, length/*:number*/, opts) { + var out = ({}/*:any*/); + + out.sz = data.read_shift(2) / 20; + + var grbit = parse_FontFlags(data, 2, opts); + if(grbit.fItalic) out.italic = 1; + if(grbit.fCondense) out.condense = 1; + if(grbit.fExtend) out.extend = 1; + if(grbit.fShadow) out.shadow = 1; + if(grbit.fOutline) out.outline = 1; + if(grbit.fStrikeout) out.strike = 1; + + var bls = data.read_shift(2); + if(bls === 0x02BC) out.bold = 1; + + switch(data.read_shift(2)) { + /* case 0: out.vertAlign = "baseline"; break; */ + case 1: out.vertAlign = "superscript"; break; + case 2: out.vertAlign = "subscript"; break; + } + + var underline = data.read_shift(1); + if(underline != 0) out.underline = underline; + + var family = data.read_shift(1); + if(family > 0) out.family = family; + + var bCharSet = data.read_shift(1); + if(bCharSet > 0) out.charset = bCharSet; + + data.l++; + out.color = parse_BrtColor(data, 8); + + switch(data.read_shift(1)) { + /* case 0: out.scheme = "none": break; */ + case 1: out.scheme = "major"; break; + case 2: out.scheme = "minor"; break; + } + + out.name = parse_XLWideString(data, length - 21); + + return out; +} +function write_BrtFont(font/*:any*/, o) { + if(!o) o = new_buf(25+4*32); + o.write_shift(2, font.sz * 20); + write_FontFlags(font, o); + o.write_shift(2, font.bold ? 0x02BC : 0x0190); + var sss = 0; + if(font.vertAlign == "superscript") sss = 1; + else if(font.vertAlign == "subscript") sss = 2; + o.write_shift(2, sss); + o.write_shift(1, font.underline || 0); + o.write_shift(1, font.family || 0); + o.write_shift(1, font.charset || 0); + o.write_shift(1, 0); + write_BrtColor(font.color, o); + var scheme = 0; + if(font.scheme == "major") scheme = 1; + if(font.scheme == "minor") scheme = 2; + o.write_shift(1, scheme); + write_XLWideString(font.name, o); + return o.length > o.l ? o.slice(0, o.l) : o; +} + +/* [MS-XLSB] 2.4.650 BrtFill */ +var XLSBFillPTNames = [ + "none", + "solid", + "mediumGray", + "darkGray", + "lightGray", + "darkHorizontal", + "darkVertical", + "darkDown", + "darkUp", + "darkGrid", + "darkTrellis", + "lightHorizontal", + "lightVertical", + "lightDown", + "lightUp", + "lightGrid", + "lightTrellis", + "gray125", + "gray0625" +]; +var rev_XLSBFillPTNames/*:EvertNumType*/; +/* TODO: gradient fill representation */ +var parse_BrtFill = parsenoop; +function write_BrtFill(fill, o) { + if(!o) o = new_buf(4*3 + 8*7 + 16*1); + if(!rev_XLSBFillPTNames) rev_XLSBFillPTNames = (evert(XLSBFillPTNames)/*:any*/); + var fls/*:number*/ = rev_XLSBFillPTNames[fill.patternType]; + if(fls == null) fls = 0x28; + o.write_shift(4, fls); + var j = 0; + if(fls != 0x28) { + /* TODO: custom FG Color */ + write_BrtColor({auto:1}, o); + /* TODO: custom BG Color */ + write_BrtColor({auto:1}, o); + + for(; j < 12; ++j) o.write_shift(4, 0); + } else { + for(; j < 4; ++j) o.write_shift(4, 0); + + for(; j < 12; ++j) o.write_shift(4, 0); /* TODO */ + /* iGradientType */ + /* xnumDegree */ + /* xnumFillToLeft */ + /* xnumFillToRight */ + /* xnumFillToTop */ + /* xnumFillToBottom */ + /* cNumStop */ + /* xfillGradientStop */ + } + return o.length > o.l ? o.slice(0, o.l) : o; +} + +/* [MS-XLSB] 2.4.824 BrtXF */ +function parse_BrtXF(data, length/*:number*/) { + var tgt = data.l + length; + var ixfeParent = data.read_shift(2); + var ifmt = data.read_shift(2); + data.l = tgt; + return {ixfe:ixfeParent, numFmtId:ifmt }; +} +function write_BrtXF(data, ixfeP, o) { + if(!o) o = new_buf(16); + o.write_shift(2, ixfeP||0); + o.write_shift(2, data.numFmtId||0); + o.write_shift(2, 0); /* iFont */ + o.write_shift(2, 0); /* iFill */ + o.write_shift(2, 0); /* ixBorder */ + o.write_shift(1, 0); /* trot */ + o.write_shift(1, 0); /* indent */ + var flow = 0; + o.write_shift(1, flow); /* flags */ + o.write_shift(1, 0); /* flags */ + o.write_shift(1, 0); /* xfGrbitAtr */ + o.write_shift(1, 0); + return o; +} + +/* [MS-XLSB] 2.5.4 Blxf TODO */ +function write_Blxf(data, o) { + if(!o) o = new_buf(10); + o.write_shift(1, 0); /* dg */ + o.write_shift(1, 0); + o.write_shift(4, 0); /* color */ + o.write_shift(4, 0); /* color */ + return o; +} +/* [MS-XLSB] 2.4.302 BrtBorder TODO */ +var parse_BrtBorder = parsenoop; +function write_BrtBorder(border, o) { + if(!o) o = new_buf(51); + o.write_shift(1, 0); /* diagonal */ + write_Blxf(null, o); /* top */ + write_Blxf(null, o); /* bottom */ + write_Blxf(null, o); /* left */ + write_Blxf(null, o); /* right */ + write_Blxf(null, o); /* diag */ + return o.length > o.l ? o.slice(0, o.l) : o; +} + +/* [MS-XLSB] 2.4.763 BrtStyle TODO */ +function write_BrtStyle(style, o) { + if(!o) o = new_buf(12+4*10); + o.write_shift(4, style.xfId); + o.write_shift(2, 1); + o.write_shift(1, +style.builtinId); + o.write_shift(1, 0); /* iLevel */ + write_XLNullableWideString(style.name || "", o); + return o.length > o.l ? o.slice(0, o.l) : o; +} + +/* [MS-XLSB] 2.4.272 BrtBeginTableStyles */ +function write_BrtBeginTableStyles(cnt, defTableStyle, defPivotStyle) { + var o = new_buf(4+256*2*4); + o.write_shift(4, cnt); + write_XLNullableWideString(defTableStyle, o); + write_XLNullableWideString(defPivotStyle, o); + return o.length > o.l ? o.slice(0, o.l) : o; +} + +/* [MS-XLSB] 2.1.7.50 Styles */ +function parse_sty_bin(data, themes, opts) { + var styles = {}; + styles.NumberFmt = ([]/*:any*/); + for(var y in table_fmt) styles.NumberFmt[y] = table_fmt[y]; + + styles.CellXf = []; + styles.Fonts = []; + var state/*:Array*/ = []; + var pass = false; + recordhopper(data, function hopper_sty(val, R, RT) { + switch(RT) { + case 0x002C: /* BrtFmt */ + styles.NumberFmt[val[0]] = val[1]; SSF_load(val[1], val[0]); + break; + case 0x002B: /* BrtFont */ + styles.Fonts.push(val); + if(val.color.theme != null && themes && themes.themeElements && themes.themeElements.clrScheme) { + val.color.rgb = rgb_tint(themes.themeElements.clrScheme[val.color.theme].rgb, val.color.tint || 0); + } + break; + case 0x0401: /* BrtKnownFonts */ break; + case 0x002D: /* BrtFill */ + break; + case 0x002E: /* BrtBorder */ + break; + case 0x002F: /* BrtXF */ + if(state[state.length - 1] == 0x0269 /* BrtBeginCellXFs */) { + styles.CellXf.push(val); + } + break; + case 0x0030: /* BrtStyle */ + case 0x01FB: /* BrtDXF */ + case 0x023C: /* BrtMRUColor */ + case 0x01DB: /* BrtIndexedColor */ + break; + + case 0x0493: /* BrtDXF14 */ + case 0x0836: /* BrtDXF15 */ + case 0x046A: /* BrtSlicerStyleElement */ + case 0x0200: /* BrtTableStyleElement */ + case 0x082F: /* BrtTimelineStyleElement */ + case 0x0C00: /* BrtUid */ + break; + + case 0x0023: /* BrtFRTBegin */ + pass = true; break; + case 0x0024: /* BrtFRTEnd */ + pass = false; break; + case 0x0025: /* BrtACBegin */ + state.push(RT); pass = true; break; + case 0x0026: /* BrtACEnd */ + state.pop(); pass = false; break; + + default: + if(R.T > 0) state.push(RT); + else if(R.T < 0) state.pop(); + else if(!pass || (opts.WTF && state[state.length-1] != 0x0025 /* BrtACBegin */)) throw new Error("Unexpected record 0x" + RT.toString(16)); + } + }); + return styles; +} + +function write_FMTS_bin(ba, NF/*:?SSFTable*/) { + if(!NF) return; + var cnt = 0; + [[5,8],[23,26],[41,44],[/*63*/50,/*66],[164,*/392]].forEach(function(r) { + /*:: if(!NF) return; */ + for(var i = r[0]; i <= r[1]; ++i) if(NF[i] != null) ++cnt; + }); + + if(cnt == 0) return; + write_record(ba, 0x0267 /* BrtBeginFmts */, write_UInt32LE(cnt)); + [[5,8],[23,26],[41,44],[/*63*/50,/*66],[164,*/392]].forEach(function(r) { + /*:: if(!NF) return; */ + for(var i = r[0]; i <= r[1]; ++i) if(NF[i] != null) write_record(ba, 0x002C /* BrtFmt */, write_BrtFmt(i, NF[i])); + }); + write_record(ba, 0x0268 /* BrtEndFmts */); +} + +function write_FONTS_bin(ba/*::, data*/) { + var cnt = 1; + + if(cnt == 0) return; + write_record(ba, 0x0263 /* BrtBeginFonts */, write_UInt32LE(cnt)); + write_record(ba, 0x002B /* BrtFont */, write_BrtFont({ + sz:12, + color: {theme:1}, + name: "Calibri", + family: 2, + scheme: "minor" + })); + /* 1*65491BrtFont [ACFONTS] */ + write_record(ba, 0x0264 /* BrtEndFonts */); +} + +function write_FILLS_bin(ba/*::, data*/) { + var cnt = 2; + + if(cnt == 0) return; + write_record(ba, 0x025B /* BrtBeginFills */, write_UInt32LE(cnt)); + write_record(ba, 0x002D /* BrtFill */, write_BrtFill({patternType:"none"})); + write_record(ba, 0x002D /* BrtFill */, write_BrtFill({patternType:"gray125"})); + /* 1*65431BrtFill */ + write_record(ba, 0x025C /* BrtEndFills */); +} + +function write_BORDERS_bin(ba/*::, data*/) { + var cnt = 1; + + if(cnt == 0) return; + write_record(ba, 0x0265 /* BrtBeginBorders */, write_UInt32LE(cnt)); + write_record(ba, 0x002E /* BrtBorder */, write_BrtBorder({})); + /* 1*65430BrtBorder */ + write_record(ba, 0x0266 /* BrtEndBorders */); +} + +function write_CELLSTYLEXFS_bin(ba/*::, data*/) { + var cnt = 1; + write_record(ba, 0x0272 /* BrtBeginCellStyleXFs */, write_UInt32LE(cnt)); + write_record(ba, 0x002F /* BrtXF */, write_BrtXF({ + numFmtId: 0, + fontId: 0, + fillId: 0, + borderId: 0 + }, 0xFFFF)); + /* 1*65430(BrtXF *FRT) */ + write_record(ba, 0x0273 /* BrtEndCellStyleXFs */); +} + +function write_CELLXFS_bin(ba, data) { + write_record(ba, 0x0269 /* BrtBeginCellXFs */, write_UInt32LE(data.length)); + data.forEach(function(c) { write_record(ba, 0x002F /* BrtXF */, write_BrtXF(c,0)); }); + /* 1*65430(BrtXF *FRT) */ + write_record(ba, 0x026A /* BrtEndCellXFs */); +} + +function write_STYLES_bin(ba/*::, data*/) { + var cnt = 1; + + write_record(ba, 0x026B /* BrtBeginStyles */, write_UInt32LE(cnt)); + write_record(ba, 0x0030 /* BrtStyle */, write_BrtStyle({ + xfId:0, + builtinId:0, + name:"Normal" + })); + /* 1*65430(BrtStyle *FRT) */ + write_record(ba, 0x026C /* BrtEndStyles */); +} + +function write_DXFS_bin(ba/*::, data*/) { + var cnt = 0; + + write_record(ba, 0x01F9 /* BrtBeginDXFs */, write_UInt32LE(cnt)); + /* *2147483647(BrtDXF *FRT) */ + write_record(ba, 0x01FA /* BrtEndDXFs */); +} + +function write_TABLESTYLES_bin(ba/*::, data*/) { + var cnt = 0; + + write_record(ba, 0x01FC /* BrtBeginTableStyles */, write_BrtBeginTableStyles(cnt, "TableStyleMedium9", "PivotStyleMedium4")); + /* *TABLESTYLE */ + write_record(ba, 0x01FD /* BrtEndTableStyles */); +} + +function write_COLORPALETTE_bin(/*::ba, data*/) { + return; + /* BrtBeginColorPalette [INDEXEDCOLORS] [MRUCOLORS] BrtEndColorPalette */ +} + +/* [MS-XLSB] 2.1.7.50 Styles */ +function write_sty_bin(wb, opts) { + var ba = buf_array(); + write_record(ba, 0x0116 /* BrtBeginStyleSheet */); + write_FMTS_bin(ba, wb.SSF); + write_FONTS_bin(ba, wb); + write_FILLS_bin(ba, wb); + write_BORDERS_bin(ba, wb); + write_CELLSTYLEXFS_bin(ba, wb); + write_CELLXFS_bin(ba, opts.cellXfs); + write_STYLES_bin(ba, wb); + write_DXFS_bin(ba, wb); + write_TABLESTYLES_bin(ba, wb); + write_COLORPALETTE_bin(ba, wb); + /* FRTSTYLESHEET*/ + write_record(ba, 0x0117 /* BrtEndStyleSheet */); + return ba.end(); +} +/* Even though theme layout is dk1 lt1 dk2 lt2, true order is lt1 dk1 lt2 dk2 */ +var XLSXThemeClrScheme = [ + '', '', '', '', + '', '', '', + '', '', '', + '', '' +]; +/* 20.1.6.2 clrScheme CT_ColorScheme */ +function parse_clrScheme(t, themes, opts) { + themes.themeElements.clrScheme = []; + var color = {}; + (t[0].match(tagregex)||[]).forEach(function(x) { + var y = parsexmltag(x); + switch(y[0]) { + /* 20.1.6.2 clrScheme (Color Scheme) CT_ColorScheme */ + case '': break; + + /* 20.1.2.3.32 srgbClr CT_SRgbColor */ + case '': case '': + case '': case '': + case '': case '': + case '': case '': + case '': case '': + case '': case '': + case '': case '': + case '': case '': + case '': case '': + case '': case '': + case '': case '': + case '': case '': + if (y[0].charAt(1) === '/') { + themes.themeElements.clrScheme[XLSXThemeClrScheme.indexOf(y[0])] = color; + color = {}; + } else { + color.name = y[0].slice(3, y[0].length - 1); + } + break; + + default: if(opts && opts.WTF) throw new Error('Unrecognized ' + y[0] + ' in clrScheme'); + } + }); +} + +/* 20.1.4.1.18 fontScheme CT_FontScheme */ +function parse_fontScheme(/*::t, themes, opts*/) { } + +/* 20.1.4.1.15 fmtScheme CT_StyleMatrix */ +function parse_fmtScheme(/*::t, themes, opts*/) { } + +var clrsregex = /]*)>[\s\S]*<\/a:clrScheme>/; +var fntsregex = /]*)>[\s\S]*<\/a:fontScheme>/; +var fmtsregex = /]*)>[\s\S]*<\/a:fmtScheme>/; + +/* 20.1.6.10 themeElements CT_BaseStyles */ +function parse_themeElements(data, themes, opts) { + themes.themeElements = {}; + + var t; + + [ + /* clrScheme CT_ColorScheme */ + ['clrScheme', clrsregex, parse_clrScheme], + /* fontScheme CT_FontScheme */ + ['fontScheme', fntsregex, parse_fontScheme], + /* fmtScheme CT_StyleMatrix */ + ['fmtScheme', fmtsregex, parse_fmtScheme] + ].forEach(function(m) { + if(!(t=data.match(m[1]))) throw new Error(m[0] + ' not found in themeElements'); + m[2](t, themes, opts); + }); +} + +var themeltregex = /]*)>[\s\S]*<\/a:themeElements>/; + +/* 14.2.7 Theme Part */ +function parse_theme_xml(data/*:string*/, opts) { + /* 20.1.6.9 theme CT_OfficeStyleSheet */ + if(!data || data.length === 0) data = write_theme(); + + var t; + var themes = {}; + + /* themeElements CT_BaseStyles */ + if(!(t=data.match(themeltregex))) throw new Error('themeElements not found in theme'); + parse_themeElements(t[0], themes, opts); + themes.raw = data; + return themes; +} + +function write_theme(Themes, opts)/*:string*/ { + if(opts && opts.themeXLSX) return opts.themeXLSX; + if(Themes && typeof Themes.raw == "string") return Themes.raw; + var o = [XML_HEADER]; + o[o.length] = ''; + o[o.length] = ''; + + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + o[o.length] = ''; + return o.join(""); +} +/* [MS-XLS] 2.4.326 TODO: payload is a zip file */ +function parse_Theme(blob, length, opts) { + var end = blob.l + length; + var dwThemeVersion = blob.read_shift(4); + if(dwThemeVersion === 124226) return; + if(!opts.cellStyles) { blob.l = end; return; } + var data = blob.slice(blob.l); + blob.l = end; + var zip; try { zip = zip_read(data, {type: "array"}); } catch(e) { return; } + var themeXML = getzipstr(zip, "theme/theme/theme1.xml", true); + if(!themeXML) return; + return parse_theme_xml(themeXML, opts); +} + +/* 2.5.49 */ +function parse_ColorTheme(blob/*::, length*/) { return blob.read_shift(4); } + +/* 2.5.155 */ +function parse_FullColorExt(blob/*::, length*/) { + var o = {}; + o.xclrType = blob.read_shift(2); + o.nTintShade = blob.read_shift(2); + switch(o.xclrType) { + case 0: blob.l += 4; break; + case 1: o.xclrValue = parse_IcvXF(blob, 4); break; + case 2: o.xclrValue = parse_LongRGBA(blob, 4); break; + case 3: o.xclrValue = parse_ColorTheme(blob, 4); break; + case 4: blob.l += 4; break; + } + blob.l += 8; + return o; +} + +/* 2.5.164 TODO: read 7 bits*/ +function parse_IcvXF(blob, length) { + return parsenoop(blob, length); +} + +/* 2.5.280 */ +function parse_XFExtGradient(blob, length) { + return parsenoop(blob, length); +} + +/* [MS-XLS] 2.5.108 */ +function parse_ExtProp(blob/*::, length*/)/*:Array*/ { + var extType = blob.read_shift(2); + var cb = blob.read_shift(2) - 4; + var o = [extType]; + switch(extType) { + case 0x04: case 0x05: case 0x07: case 0x08: + case 0x09: case 0x0A: case 0x0B: case 0x0D: + o[1] = parse_FullColorExt(blob, cb); break; + case 0x06: o[1] = parse_XFExtGradient(blob, cb); break; + case 0x0E: case 0x0F: o[1] = blob.read_shift(cb === 1 ? 1 : 2); break; + default: throw new Error("Unrecognized ExtProp type: " + extType + " " + cb); + } + return o; +} + +/* 2.4.355 */ +function parse_XFExt(blob, length) { + var end = blob.l + length; + blob.l += 2; + var ixfe = blob.read_shift(2); + blob.l += 2; + var cexts = blob.read_shift(2); + var ext/*:AOA*/ = []; + while(cexts-- > 0) ext.push(parse_ExtProp(blob, end-blob.l)); + return {ixfe:ixfe, ext:ext}; +} + +/* xf is an XF, see parse_XFExt for xfext */ +function update_xfext(xf, xfext) { + xfext.forEach(function(xfe) { + switch(xfe[0]) { /* 2.5.108 extPropData */ + case 0x04: break; /* foreground color */ + case 0x05: break; /* background color */ + case 0x06: break; /* gradient fill */ + case 0x07: break; /* top cell border color */ + case 0x08: break; /* bottom cell border color */ + case 0x09: break; /* left cell border color */ + case 0x0a: break; /* right cell border color */ + case 0x0b: break; /* diagonal cell border color */ + case 0x0d: /* text color */ + break; + case 0x0e: break; /* font scheme */ + case 0x0f: break; /* indentation level */ + } + }); +} + +function parse_BrtMdtinfo(data, length) { + return { + flags: data.read_shift(4), + version: data.read_shift(4), + name: parse_XLWideString(data, length - 8) + }; +} +function write_BrtMdtinfo(data) { + var o = new_buf(12 + 2 * data.name.length); + o.write_shift(4, data.flags); + o.write_shift(4, data.version); + write_XLWideString(data.name, o); + return o.slice(0, o.l); +} +function parse_BrtMdb(data) { + var out = []; + var cnt = data.read_shift(4); + while (cnt-- > 0) + out.push([data.read_shift(4), data.read_shift(4)]); + return out; +} +function write_BrtMdb(mdb) { + var o = new_buf(4 + 8 * mdb.length); + o.write_shift(4, mdb.length); + for (var i = 0; i < mdb.length; ++i) { + o.write_shift(4, mdb[i][0]); + o.write_shift(4, mdb[i][1]); + } + return o; +} +function write_BrtBeginEsfmd(cnt, name) { + var o = new_buf(8 + 2 * name.length); + o.write_shift(4, cnt); + write_XLWideString(name, o); + return o.slice(0, o.l); +} +function parse_BrtBeginEsmdb(data) { + data.l += 4; + return data.read_shift(4) != 0; +} +function write_BrtBeginEsmdb(cnt, cm) { + var o = new_buf(8); + o.write_shift(4, cnt); + o.write_shift(4, cm ? 1 : 0); + return o; +} +function parse_xlmeta_bin(data, name, _opts) { + var out = { Types: [], Cell: [], Value: [] }; + var opts = _opts || {}; + var state = []; + var pass = false; + var metatype = 2; + recordhopper(data, function(val, R, RT) { + switch (RT) { + case 335: + out.Types.push({ name: val.name }); + break; + case 51: + val.forEach(function(r) { + if (metatype == 1) + out.Cell.push({ type: out.Types[r[0] - 1].name, index: r[1] }); + else if (metatype == 0) + out.Value.push({ type: out.Types[r[0] - 1].name, index: r[1] }); + }); + break; + case 337: + metatype = val ? 1 : 0; + break; + case 338: + metatype = 2; + break; + case 35: + state.push(RT); + pass = true; + break; + case 36: + state.pop(); + pass = false; + break; + default: + if (R.T) { + } else if (!pass || opts.WTF && state[state.length - 1] != 35) + throw new Error("Unexpected record 0x" + RT.toString(16)); + } + }); + return out; +} +function write_xlmeta_bin() { + var ba = buf_array(); + write_record(ba, 332); + write_record(ba, 334, write_UInt32LE(1)); + write_record(ba, 335, write_BrtMdtinfo({ + name: "XLDAPR", + version: 12e4, + flags: 3496657072 + })); + write_record(ba, 336); + write_record(ba, 339, write_BrtBeginEsfmd(1, "XLDAPR")); + write_record(ba, 52); + write_record(ba, 35, write_UInt32LE(514)); + write_record(ba, 4096, write_UInt32LE(0)); + write_record(ba, 4097, writeuint16(1)); + write_record(ba, 36); + write_record(ba, 53); + write_record(ba, 340); + write_record(ba, 337, write_BrtBeginEsmdb(1, true)); + write_record(ba, 51, write_BrtMdb([[1, 0]])); + write_record(ba, 338); + write_record(ba, 333); + return ba.end(); +} +function parse_xlmeta_xml(data, name, opts) { + var out = { Types: [], Cell: [], Value: [] }; + if (!data) + return out; + var pass = false; + var metatype = 2; + var lastmeta; + data.replace(tagregex, function(x) { + var y = parsexmltag(x); + switch (strip_ns(y[0])) { + case "": + break; + case "": + break; + case "": + break; + case "": + break; + case "": + break; + case "": + break; + case "": + break; + case "": + metatype = 2; + break; + case "": + metatype = 2; + break; + case "": + case "": + case "": + break; + case "": + pass = false; + break; + case "\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n'); + return o.join(""); +} +/* 18.6 Calculation Chain */ +function parse_cc_xml(data/*::, name, opts*/)/*:Array*/ { + var d = []; + if(!data) return d; + var i = 1; + (data.match(tagregex)||[]).forEach(function(x) { + var y = parsexmltag(x); + switch(y[0]) { + case '': case '': break; + /* 18.6.1 c CT_CalcCell 1 */ + case ']*r:id="([^"]*)"/)||["",""])[1]; + + return rels['!id'][id].Target; +} + +/* L.5.5.2 SpreadsheetML Comments + VML Schema */ +var _shapeid = 1024; +function write_comments_vml(rId/*:number*/, comments) { + var csize = [21600, 21600]; + /* L.5.2.1.2 Path Attribute */ + var bbox = ["m0,0l0",csize[1],csize[0],csize[1],csize[0],"0xe"].join(","); + var o = [ + writextag("xml", null, { 'xmlns:v': XLMLNS.v, 'xmlns:o': XLMLNS.o, 'xmlns:x': XLMLNS.x, 'xmlns:mv': XLMLNS.mv }).replace(/\/>/,">"), + writextag("o:shapelayout", writextag("o:idmap", null, {'v:ext':"edit", 'data':rId}), {'v:ext':"edit"}), + writextag("v:shapetype", [ + writextag("v:stroke", null, {joinstyle:"miter"}), + writextag("v:path", null, {gradientshapeok:"t", 'o:connecttype':"rect"}) + ].join(""), {id:"_x0000_t202", 'o:spt':202, coordsize:csize.join(","),path:bbox}) + ]; + while(_shapeid < rId * 1000) _shapeid += 1000; + + comments.forEach(function(x) { + var c = decode_cell(x[0]); + var fillopts = /*::(*/{'color2':"#BEFF82", 'type':"gradient"}/*:: :any)*/; + if(fillopts.type == "gradient") fillopts.angle = "-180"; + var fillparm = fillopts.type == "gradient" ? writextag("o:fill", null, {type:"gradientUnscaled", 'v:ext':"view"}) : null; + var fillxml = writextag('v:fill', fillparm, fillopts); + + var shadata = ({on:"t", 'obscured':"t"}/*:any*/); + ++_shapeid; + + o = o.concat([ + '', + fillxml, + writextag("v:shadow", null, shadata), + writextag("v:path", null, {'o:connecttype':"none"}), + '
', + '', + '', + '', + /* Part 4 19.4.2.3 Anchor (Anchor) */ + writetag('x:Anchor', [c.c+1, 0, c.r+1, 0, c.c+3, 20, c.r+5, 20].join(",")), + writetag('x:AutoFill', "False"), + writetag('x:Row', String(c.r)), + writetag('x:Column', String(c.c)), + x[1].hidden ? '' : '', + '', + '' + ]); }); + o.push(''); + return o.join(""); +} +function sheet_insert_comments(sheet, comments/*:Array*/, threaded/*:boolean*/, people/*:?Array*/) { + var dense = Array.isArray(sheet); + var cell/*:Cell*/; + comments.forEach(function(comment) { + var r = decode_cell(comment.ref); + if(dense) { + if(!sheet[r.r]) sheet[r.r] = []; + cell = sheet[r.r][r.c]; + } else cell = sheet[comment.ref]; + if (!cell) { + cell = ({t:"z"}/*:any*/); + if(dense) sheet[r.r][r.c] = cell; + else sheet[comment.ref] = cell; + var range = safe_decode_range(sheet["!ref"]||"BDWGO1000001:A1"); + if(range.s.r > r.r) range.s.r = r.r; + if(range.e.r < r.r) range.e.r = r.r; + if(range.s.c > r.c) range.s.c = r.c; + if(range.e.c < r.c) range.e.c = r.c; + var encoded = encode_range(range); + if (encoded !== sheet["!ref"]) sheet["!ref"] = encoded; + } + + if (!cell.c) cell.c = []; + var o/*:Comment*/ = ({a: comment.author, t: comment.t, r: comment.r, T: threaded}); + if(comment.h) o.h = comment.h; + + /* threaded comments always override */ + for(var i = cell.c.length - 1; i >= 0; --i) { + if(!threaded && cell.c[i].T) return; + if(threaded && !cell.c[i].T) cell.c.splice(i, 1); + } + if(threaded && people) for(i = 0; i < people.length; ++i) { + if(o.a == people[i].id) { o.a = people[i].name || o.a; break; } + } + cell.c.push(o); + }); +} + +/* 18.7 Comments */ +function parse_comments_xml(data/*:string*/, opts)/*:Array*/ { + /* 18.7.6 CT_Comments */ + if(data.match(/<(?:\w+:)?comments *\/>/)) return []; + var authors/*:Array*/ = []; + var commentList/*:Array*/ = []; + var authtag = data.match(/<(?:\w+:)?authors>([\s\S]*)<\/(?:\w+:)?authors>/); + if(authtag && authtag[1]) authtag[1].split(/<\/\w*:?author>/).forEach(function(x) { + if(x === "" || x.trim() === "") return; + var a = x.match(/<(?:\w+:)?author[^>]*>(.*)/); + if(a) authors.push(a[1]); + }); + var cmnttag = data.match(/<(?:\w+:)?commentList>([\s\S]*)<\/(?:\w+:)?commentList>/); + if(cmnttag && cmnttag[1]) cmnttag[1].split(/<\/\w*:?comment>/).forEach(function(x) { + if(x === "" || x.trim() === "") return; + var cm = x.match(/<(?:\w+:)?comment[^>]*>/); + if(!cm) return; + var y = parsexmltag(cm[0]); + var comment/*:RawComment*/ = ({ author: y.authorId && authors[y.authorId] || "sheetjsghost", ref: y.ref, guid: y.guid }/*:any*/); + var cell = decode_cell(y.ref); + if(opts.sheetRows && opts.sheetRows <= cell.r) return; + var textMatch = x.match(/<(?:\w+:)?text>([\s\S]*)<\/(?:\w+:)?text>/); + var rt = !!textMatch && !!textMatch[1] && parse_si(textMatch[1]) || {r:"",t:"",h:""}; + comment.r = rt.r; + if(rt.r == "") rt.t = rt.h = ""; + comment.t = (rt.t||"").replace(/\r\n/g,"\n").replace(/\r/g,"\n"); + if(opts.cellHTML) comment.h = rt.h; + commentList.push(comment); + }); + return commentList; +} + +function write_comments_xml(data/*::, opts*/) { + var o = [XML_HEADER, writextag('comments', null, { 'xmlns': XMLNS_main[0] })]; + + var iauthor/*:Array*/ = []; + o.push(""); + data.forEach(function(x) { x[1].forEach(function(w) { var a = escapexml(w.a); + if(iauthor.indexOf(a) == -1) { + iauthor.push(a); + o.push("" + a + ""); + } + if(w.T && w.ID && iauthor.indexOf("tc=" + w.ID) == -1) { + iauthor.push("tc=" + w.ID); + o.push("" + "tc=" + w.ID + ""); + } + }); }); + if(iauthor.length == 0) { iauthor.push("SheetJ5"); o.push("SheetJ5"); } + o.push(""); + o.push(""); + data.forEach(function(d) { + /* 18.7.3 CT_Comment */ + var lastauthor = 0, ts = []; + if(d[1][0] && d[1][0].T && d[1][0].ID) lastauthor = iauthor.indexOf("tc=" + d[1][0].ID); + else d[1].forEach(function(c) { + if(c.a) lastauthor = iauthor.indexOf(escapexml(c.a)); + ts.push(c.t||""); + }); + o.push(''); + if(ts.length <= 1) o.push(writetag("t", escapexml(ts[0]||""))); + else { + /* based on Threaded Comments -> Comments projection */ + var t = "Comment:\n " + (ts[0]) + "\n"; + for(var i = 1; i < ts.length; ++i) t += "Reply:\n " + ts[i] + "\n"; + o.push(writetag("t", escapexml(t))); + } + o.push(''); + }); + o.push(""); + if(o.length>2) { o[o.length] = (''); o[1]=o[1].replace("/>",">"); } + return o.join(""); +} + +/* [MS-XLSX] 2.1.17 */ +function parse_tcmnt_xml(data/*:string*/, opts)/*:Array*/ { + var out = []; + var pass = false, comment = {}, tidx = 0; + data.replace(tagregex, function xml_tcmnt(x, idx) { + var y/*:any*/ = parsexmltag(x); + switch(strip_ns(y[0])) { + case '': break; + + /* 2.6.205 threadedComment CT_ThreadedComment */ + case '': if(comment.t != null) out.push(comment); break; + + case '': case '': comment.t = data.slice(tidx, idx).replace(/\r\n/g, "\n").replace(/\r/g, "\n"); break; + + /* 2.6.206 mentions CT_ThreadedCommentMentions TODO */ + case '': pass = true; break; + case '': pass = false; break; + + /* 2.6.202 mention CT_Mention TODO */ + + /* 18.2.10 extLst CT_ExtensionList ? */ + case '': case '
': case '': break; + /* 18.2.7 ext CT_Extension + */ + case '': pass=false; break; + + default: if(!pass && opts.WTF) throw new Error('unrecognized ' + y[0] + ' in threaded comments'); + } + return x; + }); + return out; +} + +function write_tcmnt_xml(comments, people, opts) { + var o = [XML_HEADER, writextag('ThreadedComments', null, { 'xmlns': XMLNS.TCMNT }).replace(/[\/]>/, ">")]; + comments.forEach(function(carr) { + var rootid = ""; + (carr[1] || []).forEach(function(c, idx) { + if(!c.T) { delete c.ID; return; } + if(c.a && people.indexOf(c.a) == -1) people.push(c.a); + var tcopts = { + ref: carr[0], + id: "{54EE7951-7262-4200-6969-" + ("000000000000" + opts.tcid++).slice(-12) + "}" + }; + if(idx == 0) rootid = tcopts.id; + else tcopts.parentId = rootid; + c.ID = tcopts.id; + if(c.a) tcopts.personId = "{54EE7950-7262-4200-6969-" + ("000000000000" + people.indexOf(c.a)).slice(-12) + "}"; + o.push(writextag('threadedComment', writetag('text', c.t||""), tcopts)); + }); + }); + o.push(''); + return o.join(""); +} + +/* [MS-XLSX] 2.1.18 */ +function parse_people_xml(data/*:string*/, opts) { + var out = []; + var pass = false; + data.replace(tagregex, function xml_tcmnt(x) { + var y/*:any*/ = parsexmltag(x); + switch(strip_ns(y[0])) { + case '': break; + + /* 2.6.203 person CT_Person TODO: providers */ + case '': break; + + /* 18.2.10 extLst CT_ExtensionList ? */ + case '': case '': case '': break; + /* 18.2.7 ext CT_Extension + */ + case '': pass=false; break; + + default: if(!pass && opts.WTF) throw new Error('unrecognized ' + y[0] + ' in threaded comments'); + } + return x; + }); + return out; +} +function write_people_xml(people/*, opts*/) { + var o = [XML_HEADER, writextag('personList', null, { + 'xmlns': XMLNS.TCMNT, + 'xmlns:x': XMLNS_main[0] + }).replace(/[\/]>/, ">")]; + people.forEach(function(person, idx) { + o.push(writextag('person', null, { + displayName: person, + id: "{54EE7950-7262-4200-6969-" + ("000000000000" + idx).slice(-12) + "}", + userId: person, + providerId: "None" + })); + }); + o.push(""); + return o.join(""); +} +/* [MS-XLSB] 2.4.28 BrtBeginComment */ +function parse_BrtBeginComment(data) { + var out = {}; + out.iauthor = data.read_shift(4); + var rfx = parse_UncheckedRfX(data, 16); + out.rfx = rfx.s; + out.ref = encode_cell(rfx.s); + data.l += 16; /*var guid = parse_GUID(data); */ + return out; +} +function write_BrtBeginComment(data, o) { + if(o == null) o = new_buf(36); + o.write_shift(4, data[1].iauthor); + write_UncheckedRfX((data[0]/*:any*/), o); + o.write_shift(4, 0); + o.write_shift(4, 0); + o.write_shift(4, 0); + o.write_shift(4, 0); + return o; +} + +/* [MS-XLSB] 2.4.327 BrtCommentAuthor */ +var parse_BrtCommentAuthor = parse_XLWideString; +function write_BrtCommentAuthor(data) { return write_XLWideString(data.slice(0, 54)); } + +/* [MS-XLSB] 2.1.7.8 Comments */ +function parse_comments_bin(data, opts)/*:Array*/ { + var out/*:Array*/ = []; + var authors/*:Array*/ = []; + var c = {}; + var pass = false; + recordhopper(data, function hopper_cmnt(val, R, RT) { + switch(RT) { + case 0x0278: /* 'BrtCommentAuthor' */ + authors.push(val); break; + case 0x027B: /* 'BrtBeginComment' */ + c = val; break; + case 0x027D: /* 'BrtCommentText' */ + c.t = val.t; c.h = val.h; c.r = val.r; break; + case 0x027C: /* 'BrtEndComment' */ + c.author = authors[c.iauthor]; + delete (c/*:any*/).iauthor; + if(opts.sheetRows && c.rfx && opts.sheetRows <= c.rfx.r) break; + if(!c.t) c.t = ""; + delete c.rfx; out.push(c); break; + + case 0x0C00: /* 'BrtUid' */ + break; + + case 0x0023: /* 'BrtFRTBegin' */ + pass = true; break; + case 0x0024: /* 'BrtFRTEnd' */ + pass = false; break; + case 0x0025: /* 'BrtACBegin' */ break; + case 0x0026: /* 'BrtACEnd' */ break; + + + default: + if(R.T){/* empty */} + else if(!pass || opts.WTF) throw new Error("Unexpected record 0x" + RT.toString(16)); + } + }); + return out; +} + +function write_comments_bin(data/*::, opts*/) { + var ba = buf_array(); + var iauthor/*:Array*/ = []; + write_record(ba, 0x0274 /* BrtBeginComments */); + + write_record(ba, 0x0276 /* BrtBeginCommentAuthors */); + data.forEach(function(comment) { + comment[1].forEach(function(c) { + if(iauthor.indexOf(c.a) > -1) return; + iauthor.push(c.a.slice(0,54)); + write_record(ba, 0x0278 /* BrtCommentAuthor */, write_BrtCommentAuthor(c.a)); + }); + }); + write_record(ba, 0x0277 /* BrtEndCommentAuthors */); + + write_record(ba, 0x0279 /* BrtBeginCommentList */); + data.forEach(function(comment) { + comment[1].forEach(function(c) { + c.iauthor = iauthor.indexOf(c.a); + var range = {s:decode_cell(comment[0]),e:decode_cell(comment[0])}; + write_record(ba, 0x027B /* BrtBeginComment */, write_BrtBeginComment([range, c])); + if(c.t && c.t.length > 0) write_record(ba, 0x027D /* BrtCommentText */, write_BrtCommentText(c)); + write_record(ba, 0x027C /* BrtEndComment */); + delete c.iauthor; + }); + }); + write_record(ba, 0x027A /* BrtEndCommentList */); + + write_record(ba, 0x0275 /* BrtEndComments */); + return ba.end(); +} +var CT_VBA = "application/vnd.ms-office.vbaProject"; +function make_vba_xls(cfb) { + var newcfb = CFB.utils.cfb_new({ root: "R" }); + cfb.FullPaths.forEach(function(p, i) { + if (p.slice(-1) === "/" || !p.match(/_VBA_PROJECT_CUR/)) + return; + var newpath = p.replace(/^[^\/]*/, "R").replace(/\/_VBA_PROJECT_CUR\u0000*/, ""); + CFB.utils.cfb_add(newcfb, newpath, cfb.FileIndex[i].content); + }); + return CFB.write(newcfb); +} +function fill_vba_xls(cfb, vba) { + vba.FullPaths.forEach(function(p, i) { + if (i == 0) + return; + var newpath = p.replace(/[^\/]*[\/]/, "/_VBA_PROJECT_CUR/"); + if (newpath.slice(-1) !== "/") + CFB.utils.cfb_add(cfb, newpath, vba.FileIndex[i].content); + }); +} +var VBAFMTS = ["xlsb", "xlsm", "xlam", "biff8", "xla"]; +/* macro and dialog sheet stubs */ +function parse_ds_bin(/*::data:any, opts, idx:number, rels, wb, themes, styles*/)/*:Worksheet*/ { return {'!type':'dialog'}; } +function parse_ds_xml(/*::data:any, opts, idx:number, rels, wb, themes, styles*/)/*:Worksheet*/ { return {'!type':'dialog'}; } +function parse_ms_bin(/*::data:any, opts, idx:number, rels, wb, themes, styles*/)/*:Worksheet*/ { return {'!type':'macro'}; } +function parse_ms_xml(/*::data:any, opts, idx:number, rels, wb, themes, styles*/)/*:Worksheet*/ { return {'!type':'macro'}; } +/* TODO: it will be useful to parse the function str */ +var rc_to_a1 = /*#__PURE__*/(function(){ + var rcregex = /(^|[^A-Za-z_])R(\[?-?\d+\]|[1-9]\d*|)C(\[?-?\d+\]|[1-9]\d*|)(?![A-Za-z0-9_])/g; + var rcbase/*:Cell*/ = ({r:0,c:0}/*:any*/); + function rcfunc($$,$1,$2,$3) { + var cRel = false, rRel = false; + + if($2.length == 0) rRel = true; + else if($2.charAt(0) == "[") { rRel = true; $2 = $2.slice(1, -1); } + + if($3.length == 0) cRel = true; + else if($3.charAt(0) == "[") { cRel = true; $3 = $3.slice(1, -1); } + + var R = $2.length>0?parseInt($2,10)|0:0, C = $3.length>0?parseInt($3,10)|0:0; + + if(cRel) C += rcbase.c; else --C; + if(rRel) R += rcbase.r; else --R; + return $1 + (cRel ? "" : "$") + encode_col(C) + (rRel ? "" : "$") + encode_row(R); + } + return function rc_to_a1(fstr/*:string*/, base/*:Cell*/)/*:string*/ { + rcbase = base; + return fstr.replace(rcregex, rcfunc); + }; +})(); + +var crefregex = /(^|[^._A-Z0-9])([$]?)([A-Z]{1,2}|[A-W][A-Z]{2}|X[A-E][A-Z]|XF[A-D])([$]?)(10[0-3]\d{4}|104[0-7]\d{3}|1048[0-4]\d{2}|10485[0-6]\d|104857[0-6]|[1-9]\d{0,5})(?![_.\(A-Za-z0-9])/g; +var a1_to_rc = /*#__PURE__*/(function(){ + return function a1_to_rc(fstr/*:string*/, base/*:CellAddress*/) { + return fstr.replace(crefregex, function($0, $1, $2, $3, $4, $5) { + var c = decode_col($3) - ($2 ? 0 : base.c); + var r = decode_row($5) - ($4 ? 0 : base.r); + var R = (r == 0 ? "" : !$4 ? "[" + r + "]" : (r+1)); + var C = (c == 0 ? "" : !$2 ? "[" + c + "]" : (c+1)); + return $1 + "R" + R + "C" + C; + }); + }; +})(); + +/* no defined name can collide with a valid cell address A1:XFD1048576 ... except LOG10! */ +function shift_formula_str(f/*:string*/, delta/*:Cell*/)/*:string*/ { + return f.replace(crefregex, function($0, $1, $2, $3, $4, $5) { + return $1+($2=="$" ? $2+$3 : encode_col(decode_col($3)+delta.c))+($4=="$" ? $4+$5 : encode_row(decode_row($5) + delta.r)); + }); +} + +function shift_formula_xlsx(f/*:string*/, range/*:string*/, cell/*:string*/)/*:string*/ { + var r = decode_range(range), s = r.s, c = decode_cell(cell); + var delta = {r:c.r - s.r, c:c.c - s.c}; + return shift_formula_str(f, delta); +} + +/* TODO: parse formula */ +function fuzzyfmla(f/*:string*/)/*:boolean*/ { + if(f.length == 1) return false; + return true; +} + +function _xlfn(f/*:string*/)/*:string*/ { + return f.replace(/_xlfn\./g,""); +} +function parseread1(blob) { blob.l+=1; return; } + +/* [MS-XLS] 2.5.51 */ +function parse_ColRelU(blob, length) { + var c = blob.read_shift(length == 1 ? 1 : 2); + return [c & 0x3FFF, (c >> 14) & 1, (c >> 15) & 1]; +} + +/* [MS-XLS] 2.5.198.105 ; [MS-XLSB] 2.5.97.89 */ +function parse_RgceArea(blob, length, opts) { + var w = 2; + if(opts) { + if(opts.biff >= 2 && opts.biff <= 5) return parse_RgceArea_BIFF2(blob, length, opts); + else if(opts.biff == 12) w = 4; + } + var r=blob.read_shift(w), R=blob.read_shift(w); + var c=parse_ColRelU(blob, 2); + var C=parse_ColRelU(blob, 2); + return { s:{r:r, c:c[0], cRel:c[1], rRel:c[2]}, e:{r:R, c:C[0], cRel:C[1], rRel:C[2]} }; +} +/* BIFF 2-5 encodes flags in the row field */ +function parse_RgceArea_BIFF2(blob/*::, length, opts*/) { + var r=parse_ColRelU(blob, 2), R=parse_ColRelU(blob, 2); + var c=blob.read_shift(1); + var C=blob.read_shift(1); + return { s:{r:r[0], c:c, cRel:r[1], rRel:r[2]}, e:{r:R[0], c:C, cRel:R[1], rRel:R[2]} }; +} + +/* [MS-XLS] 2.5.198.105 ; [MS-XLSB] 2.5.97.90 */ +function parse_RgceAreaRel(blob, length, opts) { + if(opts.biff < 8) return parse_RgceArea_BIFF2(blob, length, opts); + var r=blob.read_shift(opts.biff == 12 ? 4 : 2), R=blob.read_shift(opts.biff == 12 ? 4 : 2); + var c=parse_ColRelU(blob, 2); + var C=parse_ColRelU(blob, 2); + return { s:{r:r, c:c[0], cRel:c[1], rRel:c[2]}, e:{r:R, c:C[0], cRel:C[1], rRel:C[2]} }; +} + +/* [MS-XLS] 2.5.198.109 ; [MS-XLSB] 2.5.97.91 */ +function parse_RgceLoc(blob, length, opts) { + if(opts && opts.biff >= 2 && opts.biff <= 5) return parse_RgceLoc_BIFF2(blob, length, opts); + var r = blob.read_shift(opts && opts.biff == 12 ? 4 : 2); + var c = parse_ColRelU(blob, 2); + return {r:r, c:c[0], cRel:c[1], rRel:c[2]}; +} +function parse_RgceLoc_BIFF2(blob/*::, length, opts*/) { + var r = parse_ColRelU(blob, 2); + var c = blob.read_shift(1); + return {r:r[0], c:c, cRel:r[1], rRel:r[2]}; +} + +/* [MS-XLS] 2.5.198.107, 2.5.47 */ +function parse_RgceElfLoc(blob/*::, length, opts*/) { + var r = blob.read_shift(2); + var c = blob.read_shift(2); + return {r:r, c:c & 0xFF, fQuoted:!!(c & 0x4000), cRel:c>>15, rRel:c>>15 }; +} + +/* [MS-XLS] 2.5.198.111 ; [MS-XLSB] 2.5.97.92 TODO */ +function parse_RgceLocRel(blob, length, opts) { + var biff = opts && opts.biff ? opts.biff : 8; + if(biff >= 2 && biff <= 5) return parse_RgceLocRel_BIFF2(blob, length, opts); + var r = blob.read_shift(biff >= 12 ? 4 : 2); + var cl = blob.read_shift(2); + var cRel = (cl & 0x4000) >> 14, rRel = (cl & 0x8000) >> 15; + cl &= 0x3FFF; + if(rRel == 1) while(r > 0x7FFFF) r -= 0x100000; + if(cRel == 1) while(cl > 0x1FFF) cl = cl - 0x4000; + return {r:r,c:cl,cRel:cRel,rRel:rRel}; +} +function parse_RgceLocRel_BIFF2(blob/*::, length:number, opts*/) { + var rl = blob.read_shift(2); + var c = blob.read_shift(1); + var rRel = (rl & 0x8000) >> 15, cRel = (rl & 0x4000) >> 14; + rl &= 0x3FFF; + if(rRel == 1 && rl >= 0x2000) rl = rl - 0x4000; + if(cRel == 1 && c >= 0x80) c = c - 0x100; + return {r:rl,c:c,cRel:cRel,rRel:rRel}; +} + +/* [MS-XLS] 2.5.198.27 ; [MS-XLSB] 2.5.97.18 */ +function parse_PtgArea(blob, length, opts) { + var type = (blob[blob.l++] & 0x60) >> 5; + var area = parse_RgceArea(blob, opts.biff >= 2 && opts.biff <= 5 ? 6 : 8, opts); + return [type, area]; +} + +/* [MS-XLS] 2.5.198.28 ; [MS-XLSB] 2.5.97.19 */ +function parse_PtgArea3d(blob, length, opts) { + var type = (blob[blob.l++] & 0x60) >> 5; + var ixti = blob.read_shift(2, 'i'); + var w = 8; + if(opts) switch(opts.biff) { + case 5: blob.l += 12; w = 6; break; + case 12: w = 12; break; + } + var area = parse_RgceArea(blob, w, opts); + return [type, ixti, area]; +} + +/* [MS-XLS] 2.5.198.29 ; [MS-XLSB] 2.5.97.20 */ +function parse_PtgAreaErr(blob, length, opts) { + var type = (blob[blob.l++] & 0x60) >> 5; + blob.l += opts && (opts.biff > 8) ? 12 : (opts.biff < 8 ? 6 : 8); + return [type]; +} +/* [MS-XLS] 2.5.198.30 ; [MS-XLSB] 2.5.97.21 */ +function parse_PtgAreaErr3d(blob, length, opts) { + var type = (blob[blob.l++] & 0x60) >> 5; + var ixti = blob.read_shift(2); + var w = 8; + if(opts) switch(opts.biff) { + case 5: blob.l += 12; w = 6; break; + case 12: w = 12; break; + } + blob.l += w; + return [type, ixti]; +} + +/* [MS-XLS] 2.5.198.31 ; [MS-XLSB] 2.5.97.22 */ +function parse_PtgAreaN(blob, length, opts) { + var type = (blob[blob.l++] & 0x60) >> 5; + var area = parse_RgceAreaRel(blob, length - 1, opts); + return [type, area]; +} + +/* [MS-XLS] 2.5.198.32 ; [MS-XLSB] 2.5.97.23 */ +function parse_PtgArray(blob, length, opts) { + var type = (blob[blob.l++] & 0x60) >> 5; + blob.l += opts.biff == 2 ? 6 : opts.biff == 12 ? 14 : 7; + return [type]; +} + +/* [MS-XLS] 2.5.198.33 ; [MS-XLSB] 2.5.97.24 */ +function parse_PtgAttrBaxcel(blob) { + var bitSemi = blob[blob.l+1] & 0x01; /* 1 = volatile */ + var bitBaxcel = 1; + blob.l += 4; + return [bitSemi, bitBaxcel]; +} + +/* [MS-XLS] 2.5.198.34 ; [MS-XLSB] 2.5.97.25 */ +function parse_PtgAttrChoose(blob, length, opts)/*:Array*/ { + blob.l +=2; + var offset = blob.read_shift(opts && opts.biff == 2 ? 1 : 2); + var o/*:Array*/ = []; + /* offset is 1 less than the number of elements */ + for(var i = 0; i <= offset; ++i) o.push(blob.read_shift(opts && opts.biff == 2 ? 1 : 2)); + return o; +} + +/* [MS-XLS] 2.5.198.35 ; [MS-XLSB] 2.5.97.26 */ +function parse_PtgAttrGoto(blob, length, opts) { + var bitGoto = (blob[blob.l+1] & 0xFF) ? 1 : 0; + blob.l += 2; + return [bitGoto, blob.read_shift(opts && opts.biff == 2 ? 1 : 2)]; +} + +/* [MS-XLS] 2.5.198.36 ; [MS-XLSB] 2.5.97.27 */ +function parse_PtgAttrIf(blob, length, opts) { + var bitIf = (blob[blob.l+1] & 0xFF) ? 1 : 0; + blob.l += 2; + return [bitIf, blob.read_shift(opts && opts.biff == 2 ? 1 : 2)]; +} + +/* [MS-XLSB] 2.5.97.28 */ +function parse_PtgAttrIfError(blob) { + var bitIf = (blob[blob.l+1] & 0xFF) ? 1 : 0; + blob.l += 2; + return [bitIf, blob.read_shift(2)]; +} + +/* [MS-XLS] 2.5.198.37 ; [MS-XLSB] 2.5.97.29 */ +function parse_PtgAttrSemi(blob, length, opts) { + var bitSemi = (blob[blob.l+1] & 0xFF) ? 1 : 0; + blob.l += opts && opts.biff == 2 ? 3 : 4; + return [bitSemi]; +} + +/* [MS-XLS] 2.5.198.40 ; [MS-XLSB] 2.5.97.32 */ +function parse_PtgAttrSpaceType(blob/*::, length*/) { + var type = blob.read_shift(1), cch = blob.read_shift(1); + return [type, cch]; +} + +/* [MS-XLS] 2.5.198.38 ; [MS-XLSB] 2.5.97.30 */ +function parse_PtgAttrSpace(blob) { + blob.read_shift(2); + return parse_PtgAttrSpaceType(blob, 2); +} + +/* [MS-XLS] 2.5.198.39 ; [MS-XLSB] 2.5.97.31 */ +function parse_PtgAttrSpaceSemi(blob) { + blob.read_shift(2); + return parse_PtgAttrSpaceType(blob, 2); +} + +/* [MS-XLS] 2.5.198.84 ; [MS-XLSB] 2.5.97.68 TODO */ +function parse_PtgRef(blob, length, opts) { + //var ptg = blob[blob.l] & 0x1F; + var type = (blob[blob.l] & 0x60)>>5; + blob.l += 1; + var loc = parse_RgceLoc(blob, 0, opts); + return [type, loc]; +} + +/* [MS-XLS] 2.5.198.88 ; [MS-XLSB] 2.5.97.72 TODO */ +function parse_PtgRefN(blob, length, opts) { + var type = (blob[blob.l] & 0x60)>>5; + blob.l += 1; + var loc = parse_RgceLocRel(blob, 0, opts); + return [type, loc]; +} + +/* [MS-XLS] 2.5.198.85 ; [MS-XLSB] 2.5.97.69 TODO */ +function parse_PtgRef3d(blob, length, opts) { + var type = (blob[blob.l] & 0x60)>>5; + blob.l += 1; + var ixti = blob.read_shift(2); // XtiIndex + if(opts && opts.biff == 5) blob.l += 12; + var loc = parse_RgceLoc(blob, 0, opts); // TODO: or RgceLocRel + return [type, ixti, loc]; +} + + +/* [MS-XLS] 2.5.198.62 ; [MS-XLSB] 2.5.97.45 TODO */ +function parse_PtgFunc(blob, length, opts) { + //var ptg = blob[blob.l] & 0x1F; + var type = (blob[blob.l] & 0x60)>>5; + blob.l += 1; + var iftab = blob.read_shift(opts && opts.biff <= 3 ? 1 : 2); + return [FtabArgc[iftab], Ftab[iftab], type]; +} +/* [MS-XLS] 2.5.198.63 ; [MS-XLSB] 2.5.97.46 TODO */ +function parse_PtgFuncVar(blob, length, opts) { + var type = blob[blob.l++]; + var cparams = blob.read_shift(1), tab = opts && opts.biff <= 3 ? [(type == 0x58 ? -1 : 0), blob.read_shift(1)]: parsetab(blob); + return [cparams, (tab[0] === 0 ? Ftab : Cetab)[tab[1]]]; +} + +function parsetab(blob) { + return [blob[blob.l+1]>>7, blob.read_shift(2) & 0x7FFF]; +} + +/* [MS-XLS] 2.5.198.41 ; [MS-XLSB] 2.5.97.33 */ +function parse_PtgAttrSum(blob, length, opts) { + blob.l += opts && opts.biff == 2 ? 3 : 4; return; +} + +/* [MS-XLS] 2.5.198.58 ; [MS-XLSB] 2.5.97.40 */ +function parse_PtgExp(blob, length, opts) { + blob.l++; + if(opts && opts.biff == 12) return [blob.read_shift(4, 'i'), 0]; + var row = blob.read_shift(2); + var col = blob.read_shift(opts && opts.biff == 2 ? 1 : 2); + return [row, col]; +} + +/* [MS-XLS] 2.5.198.57 ; [MS-XLSB] 2.5.97.39 */ +function parse_PtgErr(blob) { blob.l++; return BErr[blob.read_shift(1)]; } + +/* [MS-XLS] 2.5.198.66 ; [MS-XLSB] 2.5.97.49 */ +function parse_PtgInt(blob) { blob.l++; return blob.read_shift(2); } + +/* [MS-XLS] 2.5.198.42 ; [MS-XLSB] 2.5.97.34 */ +function parse_PtgBool(blob) { blob.l++; return blob.read_shift(1)!==0;} + +/* [MS-XLS] 2.5.198.79 ; [MS-XLSB] 2.5.97.63 */ +function parse_PtgNum(blob) { blob.l++; return parse_Xnum(blob, 8); } + +/* [MS-XLS] 2.5.198.89 ; [MS-XLSB] 2.5.97.74 */ +function parse_PtgStr(blob, length, opts) { blob.l++; return parse_ShortXLUnicodeString(blob, length-1, opts); } + +/* [MS-XLS] 2.5.192.112 + 2.5.192.11{3,4,5,6,7} */ +/* [MS-XLSB] 2.5.97.93 + 2.5.97.9{4,5,6,7} */ +function parse_SerAr(blob, biff/*:number*/) { + var val = [blob.read_shift(1)]; + if(biff == 12) switch(val[0]) { + case 0x02: val[0] = 0x04; break; /* SerBool */ + case 0x04: val[0] = 0x10; break; /* SerErr */ + case 0x00: val[0] = 0x01; break; /* SerNum */ + case 0x01: val[0] = 0x02; break; /* SerStr */ + } + switch(val[0]) { + case 0x04: /* SerBool -- boolean */ + val[1] = parsebool(blob, 1) ? 'TRUE' : 'FALSE'; + if(biff != 12) blob.l += 7; break; + case 0x25: /* appears to be an alias */ + case 0x10: /* SerErr -- error */ + val[1] = BErr[blob[blob.l]]; + blob.l += ((biff == 12) ? 4 : 8); break; + case 0x00: /* SerNil -- honestly, I'm not sure how to reproduce this */ + blob.l += 8; break; + case 0x01: /* SerNum -- Xnum */ + val[1] = parse_Xnum(blob, 8); break; + case 0x02: /* SerStr -- XLUnicodeString (<256 chars) */ + val[1] = parse_XLUnicodeString2(blob, 0, {biff:biff > 0 && biff < 8 ? 2 : biff}); break; + default: throw new Error("Bad SerAr: " + val[0]); /* Unreachable */ + } + return val; +} + +/* [MS-XLS] 2.5.198.61 ; [MS-XLSB] 2.5.97.44 */ +function parse_PtgExtraMem(blob, cce, opts) { + var count = blob.read_shift((opts.biff == 12) ? 4 : 2); + var out/*:Array*/ = []; + for(var i = 0; i != count; ++i) out.push(((opts.biff == 12) ? parse_UncheckedRfX : parse_Ref8U)(blob, 8)); + return out; +} + +/* [MS-XLS] 2.5.198.59 ; [MS-XLSB] 2.5.97.41 */ +function parse_PtgExtraArray(blob, length, opts) { + var rows = 0, cols = 0; + if(opts.biff == 12) { + rows = blob.read_shift(4); // DRw + cols = blob.read_shift(4); // DCol + } else { + cols = 1 + blob.read_shift(1); //DColByteU + rows = 1 + blob.read_shift(2); //DRw + } + if(opts.biff >= 2 && opts.biff < 8) { --rows; if(--cols == 0) cols = 0x100; } + // $FlowIgnore + for(var i = 0, o/*:Array>*/ = []; i != rows && (o[i] = []); ++i) + for(var j = 0; j != cols; ++j) o[i][j] = parse_SerAr(blob, opts.biff); + return o; +} + +/* [MS-XLS] 2.5.198.76 ; [MS-XLSB] 2.5.97.60 */ +function parse_PtgName(blob, length, opts) { + var type = (blob.read_shift(1) >>> 5) & 0x03; + var w = (!opts || (opts.biff >= 8)) ? 4 : 2; + var nameindex = blob.read_shift(w); + switch(opts.biff) { + case 2: blob.l += 5; break; + case 3: case 4: blob.l += 8; break; + case 5: blob.l += 12; break; + } + return [type, 0, nameindex]; +} + +/* [MS-XLS] 2.5.198.77 ; [MS-XLSB] 2.5.97.61 */ +function parse_PtgNameX(blob, length, opts) { + if(opts.biff == 5) return parse_PtgNameX_BIFF5(blob, length, opts); + var type = (blob.read_shift(1) >>> 5) & 0x03; + var ixti = blob.read_shift(2); // XtiIndex + var nameindex = blob.read_shift(4); + return [type, ixti, nameindex]; +} +function parse_PtgNameX_BIFF5(blob/*::, length, opts*/) { + var type = (blob.read_shift(1) >>> 5) & 0x03; + var ixti = blob.read_shift(2, 'i'); // XtiIndex + blob.l += 8; + var nameindex = blob.read_shift(2); + blob.l += 12; + return [type, ixti, nameindex]; +} + +/* [MS-XLS] 2.5.198.70 ; [MS-XLSB] 2.5.97.54 */ +function parse_PtgMemArea(blob, length, opts) { + var type = (blob.read_shift(1) >>> 5) & 0x03; + blob.l += (opts && opts.biff == 2 ? 3 : 4); + var cce = blob.read_shift(opts && opts.biff == 2 ? 1 : 2); + return [type, cce]; +} + +/* [MS-XLS] 2.5.198.72 ; [MS-XLSB] 2.5.97.56 */ +function parse_PtgMemFunc(blob, length, opts) { + var type = (blob.read_shift(1) >>> 5) & 0x03; + var cce = blob.read_shift(opts && opts.biff == 2 ? 1 : 2); + return [type, cce]; +} + + +/* [MS-XLS] 2.5.198.86 ; [MS-XLSB] 2.5.97.69 */ +function parse_PtgRefErr(blob, length, opts) { + var type = (blob.read_shift(1) >>> 5) & 0x03; + blob.l += 4; + if(opts.biff < 8) blob.l--; + if(opts.biff == 12) blob.l += 2; + return [type]; +} + +/* [MS-XLS] 2.5.198.87 ; [MS-XLSB] 2.5.97.71 */ +function parse_PtgRefErr3d(blob, length, opts) { + var type = (blob[blob.l++] & 0x60) >> 5; + var ixti = blob.read_shift(2); + var w = 4; + if(opts) switch(opts.biff) { + case 5: w = 15; break; + case 12: w = 6; break; + } + blob.l += w; + return [type, ixti]; +} + +/* [MS-XLS] 2.5.198.71 ; [MS-XLSB] 2.5.97.55 */ +var parse_PtgMemErr = parsenoop; +/* [MS-XLS] 2.5.198.73 ; [MS-XLSB] 2.5.97.57 */ +var parse_PtgMemNoMem = parsenoop; +/* [MS-XLS] 2.5.198.92 */ +var parse_PtgTbl = parsenoop; + +function parse_PtgElfLoc(blob, length, opts) { + blob.l += 2; + return [parse_RgceElfLoc(blob, 4, opts)]; +} +function parse_PtgElfNoop(blob/*::, length, opts*/) { + blob.l += 6; + return []; +} +/* [MS-XLS] 2.5.198.46 */ +var parse_PtgElfCol = parse_PtgElfLoc; +/* [MS-XLS] 2.5.198.47 */ +var parse_PtgElfColS = parse_PtgElfNoop; +/* [MS-XLS] 2.5.198.48 */ +var parse_PtgElfColSV = parse_PtgElfNoop; +/* [MS-XLS] 2.5.198.49 */ +var parse_PtgElfColV = parse_PtgElfLoc; +/* [MS-XLS] 2.5.198.50 */ +function parse_PtgElfLel(blob/*::, length, opts*/) { + blob.l += 2; + return [parseuint16(blob), blob.read_shift(2) & 0x01]; +} +/* [MS-XLS] 2.5.198.51 */ +var parse_PtgElfRadical = parse_PtgElfLoc; +/* [MS-XLS] 2.5.198.52 */ +var parse_PtgElfRadicalLel = parse_PtgElfLel; +/* [MS-XLS] 2.5.198.53 */ +var parse_PtgElfRadicalS = parse_PtgElfNoop; +/* [MS-XLS] 2.5.198.54 */ +var parse_PtgElfRw = parse_PtgElfLoc; +/* [MS-XLS] 2.5.198.55 */ +var parse_PtgElfRwV = parse_PtgElfLoc; + +/* [MS-XLSB] 2.5.97.52 TODO */ +var PtgListRT = [ + "Data", + "All", + "Headers", + "??", + "?Data2", + "??", + "?DataHeaders", + "??", + "Totals", + "??", + "??", + "??", + "?DataTotals", + "??", + "??", + "??", + "?Current" +]; +function parse_PtgList(blob/*::, length, opts*/) { + blob.l += 2; + var ixti = blob.read_shift(2); + var flags = blob.read_shift(2); + var idx = blob.read_shift(4); + var c = blob.read_shift(2); + var C = blob.read_shift(2); + var rt = PtgListRT[(flags >> 2) & 0x1F]; + return {ixti: ixti, coltype:(flags&0x3), rt:rt, idx:idx, c:c, C:C}; +} +/* [MS-XLS] 2.5.198.91 ; [MS-XLSB] 2.5.97.76 */ +function parse_PtgSxName(blob/*::, length, opts*/) { + blob.l += 2; + return [blob.read_shift(4)]; +} + +/* [XLS] old spec */ +function parse_PtgSheet(blob, length, opts) { + blob.l += 5; + blob.l += 2; + blob.l += (opts.biff == 2 ? 1 : 4); + return ["PTGSHEET"]; +} +function parse_PtgEndSheet(blob, length, opts) { + blob.l += (opts.biff == 2 ? 4 : 5); + return ["PTGENDSHEET"]; +} +function parse_PtgMemAreaN(blob/*::, length, opts*/) { + var type = (blob.read_shift(1) >>> 5) & 0x03; + var cce = blob.read_shift(2); + return [type, cce]; +} +function parse_PtgMemNoMemN(blob/*::, length, opts*/) { + var type = (blob.read_shift(1) >>> 5) & 0x03; + var cce = blob.read_shift(2); + return [type, cce]; +} +function parse_PtgAttrNoop(blob/*::, length, opts*/) { + blob.l += 4; + return [0, 0]; +} + +/* [MS-XLS] 2.5.198.25 ; [MS-XLSB] 2.5.97.16 */ +var PtgTypes = { + /*::[*/0x01/*::]*/: { n:'PtgExp', f:parse_PtgExp }, + /*::[*/0x02/*::]*/: { n:'PtgTbl', f:parse_PtgTbl }, + /*::[*/0x03/*::]*/: { n:'PtgAdd', f:parseread1 }, + /*::[*/0x04/*::]*/: { n:'PtgSub', f:parseread1 }, + /*::[*/0x05/*::]*/: { n:'PtgMul', f:parseread1 }, + /*::[*/0x06/*::]*/: { n:'PtgDiv', f:parseread1 }, + /*::[*/0x07/*::]*/: { n:'PtgPower', f:parseread1 }, + /*::[*/0x08/*::]*/: { n:'PtgConcat', f:parseread1 }, + /*::[*/0x09/*::]*/: { n:'PtgLt', f:parseread1 }, + /*::[*/0x0A/*::]*/: { n:'PtgLe', f:parseread1 }, + /*::[*/0x0B/*::]*/: { n:'PtgEq', f:parseread1 }, + /*::[*/0x0C/*::]*/: { n:'PtgGe', f:parseread1 }, + /*::[*/0x0D/*::]*/: { n:'PtgGt', f:parseread1 }, + /*::[*/0x0E/*::]*/: { n:'PtgNe', f:parseread1 }, + /*::[*/0x0F/*::]*/: { n:'PtgIsect', f:parseread1 }, + /*::[*/0x10/*::]*/: { n:'PtgUnion', f:parseread1 }, + /*::[*/0x11/*::]*/: { n:'PtgRange', f:parseread1 }, + /*::[*/0x12/*::]*/: { n:'PtgUplus', f:parseread1 }, + /*::[*/0x13/*::]*/: { n:'PtgUminus', f:parseread1 }, + /*::[*/0x14/*::]*/: { n:'PtgPercent', f:parseread1 }, + /*::[*/0x15/*::]*/: { n:'PtgParen', f:parseread1 }, + /*::[*/0x16/*::]*/: { n:'PtgMissArg', f:parseread1 }, + /*::[*/0x17/*::]*/: { n:'PtgStr', f:parse_PtgStr }, + /*::[*/0x1A/*::]*/: { n:'PtgSheet', f:parse_PtgSheet }, + /*::[*/0x1B/*::]*/: { n:'PtgEndSheet', f:parse_PtgEndSheet }, + /*::[*/0x1C/*::]*/: { n:'PtgErr', f:parse_PtgErr }, + /*::[*/0x1D/*::]*/: { n:'PtgBool', f:parse_PtgBool }, + /*::[*/0x1E/*::]*/: { n:'PtgInt', f:parse_PtgInt }, + /*::[*/0x1F/*::]*/: { n:'PtgNum', f:parse_PtgNum }, + /*::[*/0x20/*::]*/: { n:'PtgArray', f:parse_PtgArray }, + /*::[*/0x21/*::]*/: { n:'PtgFunc', f:parse_PtgFunc }, + /*::[*/0x22/*::]*/: { n:'PtgFuncVar', f:parse_PtgFuncVar }, + /*::[*/0x23/*::]*/: { n:'PtgName', f:parse_PtgName }, + /*::[*/0x24/*::]*/: { n:'PtgRef', f:parse_PtgRef }, + /*::[*/0x25/*::]*/: { n:'PtgArea', f:parse_PtgArea }, + /*::[*/0x26/*::]*/: { n:'PtgMemArea', f:parse_PtgMemArea }, + /*::[*/0x27/*::]*/: { n:'PtgMemErr', f:parse_PtgMemErr }, + /*::[*/0x28/*::]*/: { n:'PtgMemNoMem', f:parse_PtgMemNoMem }, + /*::[*/0x29/*::]*/: { n:'PtgMemFunc', f:parse_PtgMemFunc }, + /*::[*/0x2A/*::]*/: { n:'PtgRefErr', f:parse_PtgRefErr }, + /*::[*/0x2B/*::]*/: { n:'PtgAreaErr', f:parse_PtgAreaErr }, + /*::[*/0x2C/*::]*/: { n:'PtgRefN', f:parse_PtgRefN }, + /*::[*/0x2D/*::]*/: { n:'PtgAreaN', f:parse_PtgAreaN }, + /*::[*/0x2E/*::]*/: { n:'PtgMemAreaN', f:parse_PtgMemAreaN }, + /*::[*/0x2F/*::]*/: { n:'PtgMemNoMemN', f:parse_PtgMemNoMemN }, + /*::[*/0x39/*::]*/: { n:'PtgNameX', f:parse_PtgNameX }, + /*::[*/0x3A/*::]*/: { n:'PtgRef3d', f:parse_PtgRef3d }, + /*::[*/0x3B/*::]*/: { n:'PtgArea3d', f:parse_PtgArea3d }, + /*::[*/0x3C/*::]*/: { n:'PtgRefErr3d', f:parse_PtgRefErr3d }, + /*::[*/0x3D/*::]*/: { n:'PtgAreaErr3d', f:parse_PtgAreaErr3d }, + /*::[*/0xFF/*::]*/: {} +}; +/* These are duplicated in the PtgTypes table */ +var PtgDupes = { + /*::[*/0x40/*::]*/: 0x20, /*::[*/0x60/*::]*/: 0x20, + /*::[*/0x41/*::]*/: 0x21, /*::[*/0x61/*::]*/: 0x21, + /*::[*/0x42/*::]*/: 0x22, /*::[*/0x62/*::]*/: 0x22, + /*::[*/0x43/*::]*/: 0x23, /*::[*/0x63/*::]*/: 0x23, + /*::[*/0x44/*::]*/: 0x24, /*::[*/0x64/*::]*/: 0x24, + /*::[*/0x45/*::]*/: 0x25, /*::[*/0x65/*::]*/: 0x25, + /*::[*/0x46/*::]*/: 0x26, /*::[*/0x66/*::]*/: 0x26, + /*::[*/0x47/*::]*/: 0x27, /*::[*/0x67/*::]*/: 0x27, + /*::[*/0x48/*::]*/: 0x28, /*::[*/0x68/*::]*/: 0x28, + /*::[*/0x49/*::]*/: 0x29, /*::[*/0x69/*::]*/: 0x29, + /*::[*/0x4A/*::]*/: 0x2A, /*::[*/0x6A/*::]*/: 0x2A, + /*::[*/0x4B/*::]*/: 0x2B, /*::[*/0x6B/*::]*/: 0x2B, + /*::[*/0x4C/*::]*/: 0x2C, /*::[*/0x6C/*::]*/: 0x2C, + /*::[*/0x4D/*::]*/: 0x2D, /*::[*/0x6D/*::]*/: 0x2D, + /*::[*/0x4E/*::]*/: 0x2E, /*::[*/0x6E/*::]*/: 0x2E, + /*::[*/0x4F/*::]*/: 0x2F, /*::[*/0x6F/*::]*/: 0x2F, + /*::[*/0x58/*::]*/: 0x22, /*::[*/0x78/*::]*/: 0x22, + /*::[*/0x59/*::]*/: 0x39, /*::[*/0x79/*::]*/: 0x39, + /*::[*/0x5A/*::]*/: 0x3A, /*::[*/0x7A/*::]*/: 0x3A, + /*::[*/0x5B/*::]*/: 0x3B, /*::[*/0x7B/*::]*/: 0x3B, + /*::[*/0x5C/*::]*/: 0x3C, /*::[*/0x7C/*::]*/: 0x3C, + /*::[*/0x5D/*::]*/: 0x3D, /*::[*/0x7D/*::]*/: 0x3D +}; + +var Ptg18 = { + /*::[*/0x01/*::]*/: { n:'PtgElfLel', f:parse_PtgElfLel }, + /*::[*/0x02/*::]*/: { n:'PtgElfRw', f:parse_PtgElfRw }, + /*::[*/0x03/*::]*/: { n:'PtgElfCol', f:parse_PtgElfCol }, + /*::[*/0x06/*::]*/: { n:'PtgElfRwV', f:parse_PtgElfRwV }, + /*::[*/0x07/*::]*/: { n:'PtgElfColV', f:parse_PtgElfColV }, + /*::[*/0x0A/*::]*/: { n:'PtgElfRadical', f:parse_PtgElfRadical }, + /*::[*/0x0B/*::]*/: { n:'PtgElfRadicalS', f:parse_PtgElfRadicalS }, + /*::[*/0x0D/*::]*/: { n:'PtgElfColS', f:parse_PtgElfColS }, + /*::[*/0x0F/*::]*/: { n:'PtgElfColSV', f:parse_PtgElfColSV }, + /*::[*/0x10/*::]*/: { n:'PtgElfRadicalLel', f:parse_PtgElfRadicalLel }, + /*::[*/0x19/*::]*/: { n:'PtgList', f:parse_PtgList }, + /*::[*/0x1D/*::]*/: { n:'PtgSxName', f:parse_PtgSxName }, + /*::[*/0xFF/*::]*/: {} +}; +var Ptg19 = { + /*::[*/0x00/*::]*/: { n:'PtgAttrNoop', f:parse_PtgAttrNoop }, + /*::[*/0x01/*::]*/: { n:'PtgAttrSemi', f:parse_PtgAttrSemi }, + /*::[*/0x02/*::]*/: { n:'PtgAttrIf', f:parse_PtgAttrIf }, + /*::[*/0x04/*::]*/: { n:'PtgAttrChoose', f:parse_PtgAttrChoose }, + /*::[*/0x08/*::]*/: { n:'PtgAttrGoto', f:parse_PtgAttrGoto }, + /*::[*/0x10/*::]*/: { n:'PtgAttrSum', f:parse_PtgAttrSum }, + /*::[*/0x20/*::]*/: { n:'PtgAttrBaxcel', f:parse_PtgAttrBaxcel }, + /*::[*/0x21/*::]*/: { n:'PtgAttrBaxcel', f:parse_PtgAttrBaxcel }, + /*::[*/0x40/*::]*/: { n:'PtgAttrSpace', f:parse_PtgAttrSpace }, + /*::[*/0x41/*::]*/: { n:'PtgAttrSpaceSemi', f:parse_PtgAttrSpaceSemi }, + /*::[*/0x80/*::]*/: { n:'PtgAttrIfError', f:parse_PtgAttrIfError }, + /*::[*/0xFF/*::]*/: {} +}; + +/* [MS-XLS] 2.5.198.103 ; [MS-XLSB] 2.5.97.87 */ +function parse_RgbExtra(blob, length, rgce, opts) { + if(opts.biff < 8) return parsenoop(blob, length); + var target = blob.l + length; + var o = []; + for(var i = 0; i !== rgce.length; ++i) { + switch(rgce[i][0]) { + case 'PtgArray': /* PtgArray -> PtgExtraArray */ + rgce[i][1] = parse_PtgExtraArray(blob, 0, opts); + o.push(rgce[i][1]); + break; + case 'PtgMemArea': /* PtgMemArea -> PtgExtraMem */ + rgce[i][2] = parse_PtgExtraMem(blob, rgce[i][1], opts); + o.push(rgce[i][2]); + break; + case 'PtgExp': /* PtgExp -> PtgExtraCol */ + if(opts && opts.biff == 12) { + rgce[i][1][1] = blob.read_shift(4); + o.push(rgce[i][1]); + } break; + case 'PtgList': /* TODO: PtgList -> PtgExtraList */ + case 'PtgElfRadicalS': /* TODO: PtgElfRadicalS -> PtgExtraElf */ + case 'PtgElfColS': /* TODO: PtgElfColS -> PtgExtraElf */ + case 'PtgElfColSV': /* TODO: PtgElfColSV -> PtgExtraElf */ + throw "Unsupported " + rgce[i][0]; + default: break; + } + } + length = target - blob.l; + /* note: this is technically an error but Excel disregards */ + //if(target !== blob.l && blob.l !== target - length) throw new Error(target + " != " + blob.l); + if(length !== 0) o.push(parsenoop(blob, length)); + return o; +} + +/* [MS-XLS] 2.5.198.104 ; [MS-XLSB] 2.5.97.88 */ +function parse_Rgce(blob, length, opts) { + var target = blob.l + length; + var R, id, ptgs = []; + while(target != blob.l) { + length = target - blob.l; + id = blob[blob.l]; + R = PtgTypes[id] || PtgTypes[PtgDupes[id]]; + if(id === 0x18 || id === 0x19) R = (id === 0x18 ? Ptg18 : Ptg19)[blob[blob.l + 1]]; + if(!R || !R.f) { /*ptgs.push*/(parsenoop(blob, length)); } + else { ptgs.push([R.n, R.f(blob, length, opts)]); } + } + return ptgs; +} + +function stringify_array(f/*:Array>*/)/*:string*/ { + var o/*:Array*/ = []; + for(var i = 0; i < f.length; ++i) { + var x = f[i], r/*:Array*/ = []; + for(var j = 0; j < x.length; ++j) { + var y = x[j]; + if(y) switch(y[0]) { + // TODO: handle embedded quotes + case 0x02: + /*:: if(typeof y[1] != 'string') throw "unreachable"; */ + r.push('"' + y[1].replace(/"/g,'""') + '"'); break; + default: r.push(y[1]); + } else r.push(""); + } + o.push(r.join(",")); + } + return o.join(";"); +} + +/* [MS-XLS] 2.2.2 ; [MS-XLSB] 2.2.2 TODO */ +var PtgBinOp = { + PtgAdd: "+", + PtgConcat: "&", + PtgDiv: "/", + PtgEq: "=", + PtgGe: ">=", + PtgGt: ">", + PtgLe: "<=", + PtgLt: "<", + PtgMul: "*", + PtgNe: "<>", + PtgPower: "^", + PtgSub: "-" +}; + +// List of invalid characters needs to be tested further +function formula_quote_sheet_name(sname/*:string*/, opts)/*:string*/ { + if(!sname && !(opts && opts.biff <= 5 && opts.biff >= 2)) throw new Error("empty sheet name"); + if (/[^\w\u4E00-\u9FFF\u3040-\u30FF]/.test(sname)) return "'" + sname + "'"; + return sname; +} +function get_ixti_raw(supbooks, ixti/*:number*/, opts)/*:string*/ { + if(!supbooks) return "SH33TJSERR0"; + if(opts.biff > 8 && (!supbooks.XTI || !supbooks.XTI[ixti])) return supbooks.SheetNames[ixti]; + if(!supbooks.XTI) return "SH33TJSERR6"; + var XTI = supbooks.XTI[ixti]; + if(opts.biff < 8) { + if(ixti > 10000) ixti-= 65536; + if(ixti < 0) ixti = -ixti; + return ixti == 0 ? "" : supbooks.XTI[ixti - 1]; + } + if(!XTI) return "SH33TJSERR1"; + var o = ""; + if(opts.biff > 8) switch(supbooks[XTI[0]][0]) { + case 0x0165: /* 'BrtSupSelf' */ + o = XTI[1] == -1 ? "#REF" : supbooks.SheetNames[XTI[1]]; + return XTI[1] == XTI[2] ? o : o + ":" + supbooks.SheetNames[XTI[2]]; + case 0x0166: /* 'BrtSupSame' */ + if(opts.SID != null) return supbooks.SheetNames[opts.SID]; + return "SH33TJSSAME" + supbooks[XTI[0]][0]; + case 0x0163: /* 'BrtSupBookSrc' */ + /* falls through */ + default: return "SH33TJSSRC" + supbooks[XTI[0]][0]; + } + switch(supbooks[XTI[0]][0][0]) { + case 0x0401: + o = XTI[1] == -1 ? "#REF" : (supbooks.SheetNames[XTI[1]] || "SH33TJSERR3"); + return XTI[1] == XTI[2] ? o : o + ":" + supbooks.SheetNames[XTI[2]]; + case 0x3A01: return supbooks[XTI[0]].slice(1).map(function(name) { return name.Name; }).join(";;"); //return "SH33TJSERR8"; + default: + if(!supbooks[XTI[0]][0][3]) return "SH33TJSERR2"; + o = XTI[1] == -1 ? "#REF" : (supbooks[XTI[0]][0][3][XTI[1]] || "SH33TJSERR4"); + return XTI[1] == XTI[2] ? o : o + ":" + supbooks[XTI[0]][0][3][XTI[2]]; + } +} +function get_ixti(supbooks, ixti/*:number*/, opts)/*:string*/ { + var ixtiraw = get_ixti_raw(supbooks, ixti, opts); + return ixtiraw == "#REF" ? ixtiraw : formula_quote_sheet_name(ixtiraw, opts); +} +function stringify_formula(formula/*Array*/, range, cell/*:any*/, supbooks, opts)/*:string*/ { + var biff = (opts && opts.biff) || 8; + var _range = /*range != null ? range :*/ {s:{c:0, r:0},e:{c:0, r:0}}; + var stack/*:Array*/ = [], e1, e2, /*::type,*/ c/*:CellAddress*/, ixti=0, nameidx=0, r, sname=""; + if(!formula[0] || !formula[0][0]) return ""; + var last_sp = -1, sp = ""; + for(var ff = 0, fflen = formula[0].length; ff < fflen; ++ff) { + var f = formula[0][ff]; + switch(f[0]) { + case 'PtgUminus': /* [MS-XLS] 2.5.198.93 */ + stack.push("-" + stack.pop()); break; + case 'PtgUplus': /* [MS-XLS] 2.5.198.95 */ + stack.push("+" + stack.pop()); break; + case 'PtgPercent': /* [MS-XLS] 2.5.198.81 */ + stack.push(stack.pop() + "%"); break; + + case 'PtgAdd': /* [MS-XLS] 2.5.198.26 */ + case 'PtgConcat': /* [MS-XLS] 2.5.198.43 */ + case 'PtgDiv': /* [MS-XLS] 2.5.198.45 */ + case 'PtgEq': /* [MS-XLS] 2.5.198.56 */ + case 'PtgGe': /* [MS-XLS] 2.5.198.64 */ + case 'PtgGt': /* [MS-XLS] 2.5.198.65 */ + case 'PtgLe': /* [MS-XLS] 2.5.198.68 */ + case 'PtgLt': /* [MS-XLS] 2.5.198.69 */ + case 'PtgMul': /* [MS-XLS] 2.5.198.75 */ + case 'PtgNe': /* [MS-XLS] 2.5.198.78 */ + case 'PtgPower': /* [MS-XLS] 2.5.198.82 */ + case 'PtgSub': /* [MS-XLS] 2.5.198.90 */ + e1 = stack.pop(); e2 = stack.pop(); + if(last_sp >= 0) { + switch(formula[0][last_sp][1][0]) { + case 0: + // $FlowIgnore + sp = fill(" ", formula[0][last_sp][1][1]); break; + case 1: + // $FlowIgnore + sp = fill("\r", formula[0][last_sp][1][1]); break; + default: + sp = ""; + // $FlowIgnore + if(opts.WTF) throw new Error("Unexpected PtgAttrSpaceType " + formula[0][last_sp][1][0]); + } + e2 = e2 + sp; + last_sp = -1; + } + stack.push(e2+PtgBinOp[f[0]]+e1); + break; + + case 'PtgIsect': /* [MS-XLS] 2.5.198.67 */ + e1 = stack.pop(); e2 = stack.pop(); + stack.push(e2+" "+e1); + break; + case 'PtgUnion': /* [MS-XLS] 2.5.198.94 */ + e1 = stack.pop(); e2 = stack.pop(); + stack.push(e2+","+e1); + break; + case 'PtgRange': /* [MS-XLS] 2.5.198.83 */ + e1 = stack.pop(); e2 = stack.pop(); + stack.push(e2+":"+e1); + break; + + case 'PtgAttrChoose': /* [MS-XLS] 2.5.198.34 */ + break; + case 'PtgAttrGoto': /* [MS-XLS] 2.5.198.35 */ + break; + case 'PtgAttrIf': /* [MS-XLS] 2.5.198.36 */ + break; + case 'PtgAttrIfError': /* [MS-XLSB] 2.5.97.28 */ + break; + + + case 'PtgRef': /* [MS-XLS] 2.5.198.84 */ + /*::type = f[1][0]; */c = shift_cell_xls((f[1][1]/*:any*/), _range, opts); + stack.push(encode_cell_xls(c, biff)); + break; + case 'PtgRefN': /* [MS-XLS] 2.5.198.88 */ + /*::type = f[1][0]; */c = cell ? shift_cell_xls((f[1][1]/*:any*/), cell, opts) : (f[1][1]/*:any*/); + stack.push(encode_cell_xls(c, biff)); + break; + case 'PtgRef3d': /* [MS-XLS] 2.5.198.85 */ + /*::type = f[1][0]; */ixti = /*::Number(*/f[1][1]/*::)*/; c = shift_cell_xls((f[1][2]/*:any*/), _range, opts); + sname = get_ixti(supbooks, ixti, opts); + var w = sname; /* IE9 fails on defined names */ // eslint-disable-line no-unused-vars + stack.push(sname + "!" + encode_cell_xls(c, biff)); + break; + + case 'PtgFunc': /* [MS-XLS] 2.5.198.62 */ + case 'PtgFuncVar': /* [MS-XLS] 2.5.198.63 */ + /* f[1] = [argc, func, type] */ + var argc/*:number*/ = (f[1][0]/*:any*/), func/*:string*/ = (f[1][1]/*:any*/); + if(!argc) argc = 0; + argc &= 0x7F; + var args = argc == 0 ? [] : stack.slice(-argc); + stack.length -= argc; + if(func === 'User') func = args.shift(); + stack.push(func + "(" + args.join(",") + ")"); + break; + + case 'PtgBool': /* [MS-XLS] 2.5.198.42 */ + stack.push(f[1] ? "TRUE" : "FALSE"); break; + case 'PtgInt': /* [MS-XLS] 2.5.198.66 */ + stack.push(/*::String(*/f[1]/*::)*/); break; + case 'PtgNum': /* [MS-XLS] 2.5.198.79 TODO: precision? */ + stack.push(String(f[1])); break; + case 'PtgStr': /* [MS-XLS] 2.5.198.89 */ + // $FlowIgnore + stack.push('"' + f[1].replace(/"/g, '""') + '"'); break; + case 'PtgErr': /* [MS-XLS] 2.5.198.57 */ + stack.push(/*::String(*/f[1]/*::)*/); break; + case 'PtgAreaN': /* [MS-XLS] 2.5.198.31 TODO */ + /*::type = f[1][0]; */r = shift_range_xls(f[1][1], cell ? {s:cell} : _range, opts); + stack.push(encode_range_xls((r/*:any*/), opts)); + break; + case 'PtgArea': /* [MS-XLS] 2.5.198.27 TODO: fixed points */ + /*::type = f[1][0]; */r = shift_range_xls(f[1][1], _range, opts); + stack.push(encode_range_xls((r/*:any*/), opts)); + break; + case 'PtgArea3d': /* [MS-XLS] 2.5.198.28 TODO */ + /*::type = f[1][0]; */ixti = /*::Number(*/f[1][1]/*::)*/; r = f[1][2]; + sname = get_ixti(supbooks, ixti, opts); + stack.push(sname + "!" + encode_range_xls((r/*:any*/), opts)); + break; + case 'PtgAttrSum': /* [MS-XLS] 2.5.198.41 */ + stack.push("SUM(" + stack.pop() + ")"); + break; + + case 'PtgAttrBaxcel': /* [MS-XLS] 2.5.198.33 */ + case 'PtgAttrSemi': /* [MS-XLS] 2.5.198.37 */ + break; + + case 'PtgName': /* [MS-XLS] 2.5.198.76 ; [MS-XLSB] 2.5.97.60 TODO: revisions */ + /* f[1] = type, 0, nameindex */ + nameidx = (f[1][2]/*:any*/); + var lbl = (supbooks.names||[])[nameidx-1] || (supbooks[0]||[])[nameidx]; + var name = lbl ? lbl.Name : "SH33TJSNAME" + String(nameidx); + /* [MS-XLSB] 2.5.97.10 Ftab -- last verified 20220204 */ + if(name && name.slice(0,6) == "_xlfn." && !opts.xlfn) name = name.slice(6); + stack.push(name); + break; + + case 'PtgNameX': /* [MS-XLS] 2.5.198.77 ; [MS-XLSB] 2.5.97.61 TODO: revisions */ + /* f[1] = type, ixti, nameindex */ + var bookidx/*:number*/ = (f[1][1]/*:any*/); nameidx = (f[1][2]/*:any*/); var externbook; + /* TODO: Properly handle missing values -- this should be using get_ixti_raw primarily */ + if(opts.biff <= 5) { + if(bookidx < 0) bookidx = -bookidx; + if(supbooks[bookidx]) externbook = supbooks[bookidx][nameidx]; + } else { + var o = ""; + if(((supbooks[bookidx]||[])[0]||[])[0] == 0x3A01){/* empty */} + else if(((supbooks[bookidx]||[])[0]||[])[0] == 0x0401){ + if(supbooks[bookidx][nameidx] && supbooks[bookidx][nameidx].itab > 0) { + o = supbooks.SheetNames[supbooks[bookidx][nameidx].itab-1] + "!"; + } + } + else o = supbooks.SheetNames[nameidx-1]+ "!"; + if(supbooks[bookidx] && supbooks[bookidx][nameidx]) o += supbooks[bookidx][nameidx].Name; + else if(supbooks[0] && supbooks[0][nameidx]) o += supbooks[0][nameidx].Name; + else { + var ixtidata = (get_ixti_raw(supbooks, bookidx, opts)||"").split(";;"); + if(ixtidata[nameidx - 1]) o = ixtidata[nameidx - 1]; // TODO: confirm this is correct + else o += "SH33TJSERRX"; + } + stack.push(o); + break; + } + if(!externbook) externbook = {Name: "SH33TJSERRY"}; + stack.push(externbook.Name); + break; + + case 'PtgParen': /* [MS-XLS] 2.5.198.80 */ + var lp = '(', rp = ')'; + if(last_sp >= 0) { + sp = ""; + switch(formula[0][last_sp][1][0]) { + // $FlowIgnore + case 2: lp = fill(" ", formula[0][last_sp][1][1]) + lp; break; + // $FlowIgnore + case 3: lp = fill("\r", formula[0][last_sp][1][1]) + lp; break; + // $FlowIgnore + case 4: rp = fill(" ", formula[0][last_sp][1][1]) + rp; break; + // $FlowIgnore + case 5: rp = fill("\r", formula[0][last_sp][1][1]) + rp; break; + default: + // $FlowIgnore + if(opts.WTF) throw new Error("Unexpected PtgAttrSpaceType " + formula[0][last_sp][1][0]); + } + last_sp = -1; + } + stack.push(lp + stack.pop() + rp); break; + + case 'PtgRefErr': /* [MS-XLS] 2.5.198.86 */ + stack.push('#REF!'); break; + + case 'PtgRefErr3d': /* [MS-XLS] 2.5.198.87 */ + stack.push('#REF!'); break; + + case 'PtgExp': /* [MS-XLS] 2.5.198.58 TODO */ + c = {c:(f[1][1]/*:any*/),r:(f[1][0]/*:any*/)}; + var q = ({c: cell.c, r:cell.r}/*:any*/); + if(supbooks.sharedf[encode_cell(c)]) { + var parsedf = (supbooks.sharedf[encode_cell(c)]); + stack.push(stringify_formula(parsedf, _range, q, supbooks, opts)); + } else { + var fnd = false; + for(e1=0;e1!=supbooks.arrayf.length; ++e1) { + /* TODO: should be something like range_has */ + e2 = supbooks.arrayf[e1]; + if(c.c < e2[0].s.c || c.c > e2[0].e.c) continue; + if(c.r < e2[0].s.r || c.r > e2[0].e.r) continue; + stack.push(stringify_formula(e2[1], _range, q, supbooks, opts)); + fnd = true; + break; + } + if(!fnd) stack.push(/*::String(*/f[1]/*::)*/); + } + break; + + case 'PtgArray': /* [MS-XLS] 2.5.198.32 TODO */ + stack.push("{" + stringify_array(/*::(*/f[1]/*:: :any)*/) + "}"); + break; + + case 'PtgMemArea': /* [MS-XLS] 2.5.198.70 TODO: confirm this is a non-display */ + //stack.push("(" + f[2].map(encode_range).join(",") + ")"); + break; + + case 'PtgAttrSpace': /* [MS-XLS] 2.5.198.38 */ + case 'PtgAttrSpaceSemi': /* [MS-XLS] 2.5.198.39 */ + last_sp = ff; + break; + + case 'PtgTbl': /* [MS-XLS] 2.5.198.92 TODO */ + break; + + case 'PtgMemErr': /* [MS-XLS] 2.5.198.71 */ + break; + + case 'PtgMissArg': /* [MS-XLS] 2.5.198.74 */ + stack.push(""); + break; + + case 'PtgAreaErr': /* [MS-XLS] 2.5.198.29 */ + stack.push("#REF!"); break; + + case 'PtgAreaErr3d': /* [MS-XLS] 2.5.198.30 */ + stack.push("#REF!"); break; + + case 'PtgList': /* [MS-XLSB] 2.5.97.52 */ + // $FlowIgnore + stack.push("Table" + f[1].idx + "[#" + f[1].rt + "]"); + break; + + case 'PtgMemAreaN': + case 'PtgMemNoMemN': + case 'PtgAttrNoop': + case 'PtgSheet': + case 'PtgEndSheet': + break; + + case 'PtgMemFunc': /* [MS-XLS] 2.5.198.72 TODO */ + break; + case 'PtgMemNoMem': /* [MS-XLS] 2.5.198.73 TODO */ + break; + + case 'PtgElfCol': /* [MS-XLS] 2.5.198.46 */ + case 'PtgElfColS': /* [MS-XLS] 2.5.198.47 */ + case 'PtgElfColSV': /* [MS-XLS] 2.5.198.48 */ + case 'PtgElfColV': /* [MS-XLS] 2.5.198.49 */ + case 'PtgElfLel': /* [MS-XLS] 2.5.198.50 */ + case 'PtgElfRadical': /* [MS-XLS] 2.5.198.51 */ + case 'PtgElfRadicalLel': /* [MS-XLS] 2.5.198.52 */ + case 'PtgElfRadicalS': /* [MS-XLS] 2.5.198.53 */ + case 'PtgElfRw': /* [MS-XLS] 2.5.198.54 */ + case 'PtgElfRwV': /* [MS-XLS] 2.5.198.55 */ + throw new Error("Unsupported ELFs"); + + case 'PtgSxName': /* [MS-XLS] 2.5.198.91 TODO -- find a test case */ + throw new Error('Unrecognized Formula Token: ' + String(f)); + default: throw new Error('Unrecognized Formula Token: ' + String(f)); + } + var PtgNonDisp = ['PtgAttrSpace', 'PtgAttrSpaceSemi', 'PtgAttrGoto']; + if(opts.biff != 3) if(last_sp >= 0 && PtgNonDisp.indexOf(formula[0][ff][0]) == -1) { + f = formula[0][last_sp]; + var _left = true; + switch(f[1][0]) { + /* note: some bad XLSB files omit the PtgParen */ + case 4: _left = false; + /* falls through */ + case 0: + // $FlowIgnore + sp = fill(" ", f[1][1]); break; + case 5: _left = false; + /* falls through */ + case 1: + // $FlowIgnore + sp = fill("\r", f[1][1]); break; + default: + sp = ""; + // $FlowIgnore + if(opts.WTF) throw new Error("Unexpected PtgAttrSpaceType " + f[1][0]); + } + stack.push((_left ? sp : "") + stack.pop() + (_left ? "" : sp)); + last_sp = -1; + } + } + if(stack.length > 1 && opts.WTF) throw new Error("bad formula stack"); + return stack[0]; +} + +/* [MS-XLS] 2.5.198.1 TODO */ +function parse_ArrayParsedFormula(blob, length, opts/*::, ref*/) { + var target = blob.l + length, len = opts.biff == 2 ? 1 : 2; + var rgcb, cce = blob.read_shift(len); // length of rgce + if(cce == 0xFFFF) return [[],parsenoop(blob, length-2)]; + var rgce = parse_Rgce(blob, cce, opts); + if(length !== cce + len) rgcb = parse_RgbExtra(blob, length - cce - len, rgce, opts); + blob.l = target; + return [rgce, rgcb]; +} + +/* [MS-XLS] 2.5.198.3 TODO */ +function parse_XLSCellParsedFormula(blob, length, opts) { + var target = blob.l + length, len = opts.biff == 2 ? 1 : 2; + var rgcb, cce = blob.read_shift(len); // length of rgce + if(cce == 0xFFFF) return [[],parsenoop(blob, length-2)]; + var rgce = parse_Rgce(blob, cce, opts); + if(length !== cce + len) rgcb = parse_RgbExtra(blob, length - cce - len, rgce, opts); + blob.l = target; + return [rgce, rgcb]; +} + +/* [MS-XLS] 2.5.198.21 */ +function parse_NameParsedFormula(blob, length, opts, cce) { + var target = blob.l + length; + var rgce = parse_Rgce(blob, cce, opts); + var rgcb; + if(target !== blob.l) rgcb = parse_RgbExtra(blob, target - blob.l, rgce, opts); + return [rgce, rgcb]; +} + +/* [MS-XLS] 2.5.198.118 TODO */ +function parse_SharedParsedFormula(blob, length, opts) { + var target = blob.l + length; + var rgcb, cce = blob.read_shift(2); // length of rgce + var rgce = parse_Rgce(blob, cce, opts); + if(cce == 0xFFFF) return [[],parsenoop(blob, length-2)]; + if(length !== cce + 2) rgcb = parse_RgbExtra(blob, target - cce - 2, rgce, opts); + return [rgce, rgcb]; +} + +/* [MS-XLS] 2.5.133 TODO: how to emit empty strings? */ +function parse_FormulaValue(blob/*::, length*/) { + var b; + if(__readUInt16LE(blob,blob.l + 6) !== 0xFFFF) return [parse_Xnum(blob),'n']; + switch(blob[blob.l]) { + case 0x00: blob.l += 8; return ["String", 's']; + case 0x01: b = blob[blob.l+2] === 0x1; blob.l += 8; return [b,'b']; + case 0x02: b = blob[blob.l+2]; blob.l += 8; return [b,'e']; + case 0x03: blob.l += 8; return ["",'s']; + } + return []; +} +function write_FormulaValue(value) { + if(value == null) { + // Blank String Value + var o = new_buf(8); + o.write_shift(1, 0x03); + o.write_shift(1, 0); + o.write_shift(2, 0); + o.write_shift(2, 0); + o.write_shift(2, 0xFFFF); + return o; + } else if(typeof value == "number") return write_Xnum(value); + return write_Xnum(0); +} + +/* [MS-XLS] 2.4.127 TODO */ +function parse_Formula(blob, length, opts) { + var end = blob.l + length; + var cell = parse_XLSCell(blob, 6); + if(opts.biff == 2) ++blob.l; + var val = parse_FormulaValue(blob,8); + var flags = blob.read_shift(1); + if(opts.biff != 2) { + blob.read_shift(1); + if(opts.biff >= 5) { + /*var chn = */blob.read_shift(4); + } + } + var cbf = parse_XLSCellParsedFormula(blob, end - blob.l, opts); + return {cell:cell, val:val[0], formula:cbf, shared: (flags >> 3) & 1, tt:val[1]}; +} +function write_Formula(cell/*:Cell*/, R/*:number*/, C/*:number*/, opts, os/*:number*/) { + // Cell + var o1 = write_XLSCell(R, C, os); + + // FormulaValue + var o2 = write_FormulaValue(cell.v); + + // flags + cache + var o3 = new_buf(6); + var flags = 0x01 | 0x20; + o3.write_shift(2, flags); + o3.write_shift(4, 0); + + // CellParsedFormula + var bf = new_buf(cell.bf.length); + for(var i = 0; i < cell.bf.length; ++i) bf[i] = cell.bf[i]; + + var out = bconcat([o1, o2, o3, bf]); + return out; +} + + +/* XLSB Parsed Formula records have the same shape */ +function parse_XLSBParsedFormula(data, length, opts) { + var cce = data.read_shift(4); + var rgce = parse_Rgce(data, cce, opts); + var cb = data.read_shift(4); + var rgcb = cb > 0 ? parse_RgbExtra(data, cb, rgce, opts) : null; + return [rgce, rgcb]; +} + +/* [MS-XLSB] 2.5.97.1 ArrayParsedFormula */ +var parse_XLSBArrayParsedFormula = parse_XLSBParsedFormula; +/* [MS-XLSB] 2.5.97.4 CellParsedFormula */ +var parse_XLSBCellParsedFormula = parse_XLSBParsedFormula; +/* [MS-XLSB] 2.5.97.8 DVParsedFormula */ +//var parse_XLSBDVParsedFormula = parse_XLSBParsedFormula; +/* [MS-XLSB] 2.5.97.9 FRTParsedFormula */ +//var parse_XLSBFRTParsedFormula = parse_XLSBParsedFormula2; +/* [MS-XLSB] 2.5.97.12 NameParsedFormula */ +var parse_XLSBNameParsedFormula = parse_XLSBParsedFormula; +/* [MS-XLSB] 2.5.97.98 SharedParsedFormula */ +var parse_XLSBSharedParsedFormula = parse_XLSBParsedFormula; +var Cetab = { + 0: "BEEP", + 1: "OPEN", + 2: "OPEN.LINKS", + 3: "CLOSE.ALL", + 4: "SAVE", + 5: "SAVE.AS", + 6: "FILE.DELETE", + 7: "PAGE.SETUP", + 8: "PRINT", + 9: "PRINTER.SETUP", + 10: "QUIT", + 11: "NEW.WINDOW", + 12: "ARRANGE.ALL", + 13: "WINDOW.SIZE", + 14: "WINDOW.MOVE", + 15: "FULL", + 16: "CLOSE", + 17: "RUN", + 22: "SET.PRINT.AREA", + 23: "SET.PRINT.TITLES", + 24: "SET.PAGE.BREAK", + 25: "REMOVE.PAGE.BREAK", + 26: "FONT", + 27: "DISPLAY", + 28: "PROTECT.DOCUMENT", + 29: "PRECISION", + 30: "A1.R1C1", + 31: "CALCULATE.NOW", + 32: "CALCULATION", + 34: "DATA.FIND", + 35: "EXTRACT", + 36: "DATA.DELETE", + 37: "SET.DATABASE", + 38: "SET.CRITERIA", + 39: "SORT", + 40: "DATA.SERIES", + 41: "TABLE", + 42: "FORMAT.NUMBER", + 43: "ALIGNMENT", + 44: "STYLE", + 45: "BORDER", + 46: "CELL.PROTECTION", + 47: "COLUMN.WIDTH", + 48: "UNDO", + 49: "CUT", + 50: "COPY", + 51: "PASTE", + 52: "CLEAR", + 53: "PASTE.SPECIAL", + 54: "EDIT.DELETE", + 55: "INSERT", + 56: "FILL.RIGHT", + 57: "FILL.DOWN", + 61: "DEFINE.NAME", + 62: "CREATE.NAMES", + 63: "FORMULA.GOTO", + 64: "FORMULA.FIND", + 65: "SELECT.LAST.CELL", + 66: "SHOW.ACTIVE.CELL", + 67: "GALLERY.AREA", + 68: "GALLERY.BAR", + 69: "GALLERY.COLUMN", + 70: "GALLERY.LINE", + 71: "GALLERY.PIE", + 72: "GALLERY.SCATTER", + 73: "COMBINATION", + 74: "PREFERRED", + 75: "ADD.OVERLAY", + 76: "GRIDLINES", + 77: "SET.PREFERRED", + 78: "AXES", + 79: "LEGEND", + 80: "ATTACH.TEXT", + 81: "ADD.ARROW", + 82: "SELECT.CHART", + 83: "SELECT.PLOT.AREA", + 84: "PATTERNS", + 85: "MAIN.CHART", + 86: "OVERLAY", + 87: "SCALE", + 88: "FORMAT.LEGEND", + 89: "FORMAT.TEXT", + 90: "EDIT.REPEAT", + 91: "PARSE", + 92: "JUSTIFY", + 93: "HIDE", + 94: "UNHIDE", + 95: "WORKSPACE", + 96: "FORMULA", + 97: "FORMULA.FILL", + 98: "FORMULA.ARRAY", + 99: "DATA.FIND.NEXT", + 100: "DATA.FIND.PREV", + 101: "FORMULA.FIND.NEXT", + 102: "FORMULA.FIND.PREV", + 103: "ACTIVATE", + 104: "ACTIVATE.NEXT", + 105: "ACTIVATE.PREV", + 106: "UNLOCKED.NEXT", + 107: "UNLOCKED.PREV", + 108: "COPY.PICTURE", + 109: "SELECT", + 110: "DELETE.NAME", + 111: "DELETE.FORMAT", + 112: "VLINE", + 113: "HLINE", + 114: "VPAGE", + 115: "HPAGE", + 116: "VSCROLL", + 117: "HSCROLL", + 118: "ALERT", + 119: "NEW", + 120: "CANCEL.COPY", + 121: "SHOW.CLIPBOARD", + 122: "MESSAGE", + 124: "PASTE.LINK", + 125: "APP.ACTIVATE", + 126: "DELETE.ARROW", + 127: "ROW.HEIGHT", + 128: "FORMAT.MOVE", + 129: "FORMAT.SIZE", + 130: "FORMULA.REPLACE", + 131: "SEND.KEYS", + 132: "SELECT.SPECIAL", + 133: "APPLY.NAMES", + 134: "REPLACE.FONT", + 135: "FREEZE.PANES", + 136: "SHOW.INFO", + 137: "SPLIT", + 138: "ON.WINDOW", + 139: "ON.DATA", + 140: "DISABLE.INPUT", + 142: "OUTLINE", + 143: "LIST.NAMES", + 144: "FILE.CLOSE", + 145: "SAVE.WORKBOOK", + 146: "DATA.FORM", + 147: "COPY.CHART", + 148: "ON.TIME", + 149: "WAIT", + 150: "FORMAT.FONT", + 151: "FILL.UP", + 152: "FILL.LEFT", + 153: "DELETE.OVERLAY", + 155: "SHORT.MENUS", + 159: "SET.UPDATE.STATUS", + 161: "COLOR.PALETTE", + 162: "DELETE.STYLE", + 163: "WINDOW.RESTORE", + 164: "WINDOW.MAXIMIZE", + 166: "CHANGE.LINK", + 167: "CALCULATE.DOCUMENT", + 168: "ON.KEY", + 169: "APP.RESTORE", + 170: "APP.MOVE", + 171: "APP.SIZE", + 172: "APP.MINIMIZE", + 173: "APP.MAXIMIZE", + 174: "BRING.TO.FRONT", + 175: "SEND.TO.BACK", + 185: "MAIN.CHART.TYPE", + 186: "OVERLAY.CHART.TYPE", + 187: "SELECT.END", + 188: "OPEN.MAIL", + 189: "SEND.MAIL", + 190: "STANDARD.FONT", + 191: "CONSOLIDATE", + 192: "SORT.SPECIAL", + 193: "GALLERY.3D.AREA", + 194: "GALLERY.3D.COLUMN", + 195: "GALLERY.3D.LINE", + 196: "GALLERY.3D.PIE", + 197: "VIEW.3D", + 198: "GOAL.SEEK", + 199: "WORKGROUP", + 200: "FILL.GROUP", + 201: "UPDATE.LINK", + 202: "PROMOTE", + 203: "DEMOTE", + 204: "SHOW.DETAIL", + 206: "UNGROUP", + 207: "OBJECT.PROPERTIES", + 208: "SAVE.NEW.OBJECT", + 209: "SHARE", + 210: "SHARE.NAME", + 211: "DUPLICATE", + 212: "APPLY.STYLE", + 213: "ASSIGN.TO.OBJECT", + 214: "OBJECT.PROTECTION", + 215: "HIDE.OBJECT", + 216: "SET.EXTRACT", + 217: "CREATE.PUBLISHER", + 218: "SUBSCRIBE.TO", + 219: "ATTRIBUTES", + 220: "SHOW.TOOLBAR", + 222: "PRINT.PREVIEW", + 223: "EDIT.COLOR", + 224: "SHOW.LEVELS", + 225: "FORMAT.MAIN", + 226: "FORMAT.OVERLAY", + 227: "ON.RECALC", + 228: "EDIT.SERIES", + 229: "DEFINE.STYLE", + 240: "LINE.PRINT", + 243: "ENTER.DATA", + 249: "GALLERY.RADAR", + 250: "MERGE.STYLES", + 251: "EDITION.OPTIONS", + 252: "PASTE.PICTURE", + 253: "PASTE.PICTURE.LINK", + 254: "SPELLING", + 256: "ZOOM", + 259: "INSERT.OBJECT", + 260: "WINDOW.MINIMIZE", + 265: "SOUND.NOTE", + 266: "SOUND.PLAY", + 267: "FORMAT.SHAPE", + 268: "EXTEND.POLYGON", + 269: "FORMAT.AUTO", + 272: "GALLERY.3D.BAR", + 273: "GALLERY.3D.SURFACE", + 274: "FILL.AUTO", + 276: "CUSTOMIZE.TOOLBAR", + 277: "ADD.TOOL", + 278: "EDIT.OBJECT", + 279: "ON.DOUBLECLICK", + 280: "ON.ENTRY", + 281: "WORKBOOK.ADD", + 282: "WORKBOOK.MOVE", + 283: "WORKBOOK.COPY", + 284: "WORKBOOK.OPTIONS", + 285: "SAVE.WORKSPACE", + 288: "CHART.WIZARD", + 289: "DELETE.TOOL", + 290: "MOVE.TOOL", + 291: "WORKBOOK.SELECT", + 292: "WORKBOOK.ACTIVATE", + 293: "ASSIGN.TO.TOOL", + 295: "COPY.TOOL", + 296: "RESET.TOOL", + 297: "CONSTRAIN.NUMERIC", + 298: "PASTE.TOOL", + 302: "WORKBOOK.NEW", + 305: "SCENARIO.CELLS", + 306: "SCENARIO.DELETE", + 307: "SCENARIO.ADD", + 308: "SCENARIO.EDIT", + 309: "SCENARIO.SHOW", + 310: "SCENARIO.SHOW.NEXT", + 311: "SCENARIO.SUMMARY", + 312: "PIVOT.TABLE.WIZARD", + 313: "PIVOT.FIELD.PROPERTIES", + 314: "PIVOT.FIELD", + 315: "PIVOT.ITEM", + 316: "PIVOT.ADD.FIELDS", + 318: "OPTIONS.CALCULATION", + 319: "OPTIONS.EDIT", + 320: "OPTIONS.VIEW", + 321: "ADDIN.MANAGER", + 322: "MENU.EDITOR", + 323: "ATTACH.TOOLBARS", + 324: "VBAActivate", + 325: "OPTIONS.CHART", + 328: "VBA.INSERT.FILE", + 330: "VBA.PROCEDURE.DEFINITION", + 336: "ROUTING.SLIP", + 338: "ROUTE.DOCUMENT", + 339: "MAIL.LOGON", + 342: "INSERT.PICTURE", + 343: "EDIT.TOOL", + 344: "GALLERY.DOUGHNUT", + 350: "CHART.TREND", + 352: "PIVOT.ITEM.PROPERTIES", + 354: "WORKBOOK.INSERT", + 355: "OPTIONS.TRANSITION", + 356: "OPTIONS.GENERAL", + 370: "FILTER.ADVANCED", + 373: "MAIL.ADD.MAILER", + 374: "MAIL.DELETE.MAILER", + 375: "MAIL.REPLY", + 376: "MAIL.REPLY.ALL", + 377: "MAIL.FORWARD", + 378: "MAIL.NEXT.LETTER", + 379: "DATA.LABEL", + 380: "INSERT.TITLE", + 381: "FONT.PROPERTIES", + 382: "MACRO.OPTIONS", + 383: "WORKBOOK.HIDE", + 384: "WORKBOOK.UNHIDE", + 385: "WORKBOOK.DELETE", + 386: "WORKBOOK.NAME", + 388: "GALLERY.CUSTOM", + 390: "ADD.CHART.AUTOFORMAT", + 391: "DELETE.CHART.AUTOFORMAT", + 392: "CHART.ADD.DATA", + 393: "AUTO.OUTLINE", + 394: "TAB.ORDER", + 395: "SHOW.DIALOG", + 396: "SELECT.ALL", + 397: "UNGROUP.SHEETS", + 398: "SUBTOTAL.CREATE", + 399: "SUBTOTAL.REMOVE", + 400: "RENAME.OBJECT", + 412: "WORKBOOK.SCROLL", + 413: "WORKBOOK.NEXT", + 414: "WORKBOOK.PREV", + 415: "WORKBOOK.TAB.SPLIT", + 416: "FULL.SCREEN", + 417: "WORKBOOK.PROTECT", + 420: "SCROLLBAR.PROPERTIES", + 421: "PIVOT.SHOW.PAGES", + 422: "TEXT.TO.COLUMNS", + 423: "FORMAT.CHARTTYPE", + 424: "LINK.FORMAT", + 425: "TRACER.DISPLAY", + 430: "TRACER.NAVIGATE", + 431: "TRACER.CLEAR", + 432: "TRACER.ERROR", + 433: "PIVOT.FIELD.GROUP", + 434: "PIVOT.FIELD.UNGROUP", + 435: "CHECKBOX.PROPERTIES", + 436: "LABEL.PROPERTIES", + 437: "LISTBOX.PROPERTIES", + 438: "EDITBOX.PROPERTIES", + 439: "PIVOT.REFRESH", + 440: "LINK.COMBO", + 441: "OPEN.TEXT", + 442: "HIDE.DIALOG", + 443: "SET.DIALOG.FOCUS", + 444: "ENABLE.OBJECT", + 445: "PUSHBUTTON.PROPERTIES", + 446: "SET.DIALOG.DEFAULT", + 447: "FILTER", + 448: "FILTER.SHOW.ALL", + 449: "CLEAR.OUTLINE", + 450: "FUNCTION.WIZARD", + 451: "ADD.LIST.ITEM", + 452: "SET.LIST.ITEM", + 453: "REMOVE.LIST.ITEM", + 454: "SELECT.LIST.ITEM", + 455: "SET.CONTROL.VALUE", + 456: "SAVE.COPY.AS", + 458: "OPTIONS.LISTS.ADD", + 459: "OPTIONS.LISTS.DELETE", + 460: "SERIES.AXES", + 461: "SERIES.X", + 462: "SERIES.Y", + 463: "ERRORBAR.X", + 464: "ERRORBAR.Y", + 465: "FORMAT.CHART", + 466: "SERIES.ORDER", + 467: "MAIL.LOGOFF", + 468: "CLEAR.ROUTING.SLIP", + 469: "APP.ACTIVATE.MICROSOFT", + 470: "MAIL.EDIT.MAILER", + 471: "ON.SHEET", + 472: "STANDARD.WIDTH", + 473: "SCENARIO.MERGE", + 474: "SUMMARY.INFO", + 475: "FIND.FILE", + 476: "ACTIVE.CELL.FONT", + 477: "ENABLE.TIPWIZARD", + 478: "VBA.MAKE.ADDIN", + 480: "INSERTDATATABLE", + 481: "WORKGROUP.OPTIONS", + 482: "MAIL.SEND.MAILER", + 485: "AUTOCORRECT", + 489: "POST.DOCUMENT", + 491: "PICKLIST", + 493: "VIEW.SHOW", + 494: "VIEW.DEFINE", + 495: "VIEW.DELETE", + 509: "SHEET.BACKGROUND", + 510: "INSERT.MAP.OBJECT", + 511: "OPTIONS.MENONO", + 517: "MSOCHECKS", + 518: "NORMAL", + 519: "LAYOUT", + 520: "RM.PRINT.AREA", + 521: "CLEAR.PRINT.AREA", + 522: "ADD.PRINT.AREA", + 523: "MOVE.BRK", + 545: "HIDECURR.NOTE", + 546: "HIDEALL.NOTES", + 547: "DELETE.NOTE", + 548: "TRAVERSE.NOTES", + 549: "ACTIVATE.NOTES", + 620: "PROTECT.REVISIONS", + 621: "UNPROTECT.REVISIONS", + 647: "OPTIONS.ME", + 653: "WEB.PUBLISH", + 667: "NEWWEBQUERY", + 673: "PIVOT.TABLE.CHART", + 753: "OPTIONS.SAVE", + 755: "OPTIONS.SPELL", + 808: "HIDEALL.INKANNOTS" +}; +var Ftab = { + 0: "COUNT", + 1: "IF", + 2: "ISNA", + 3: "ISERROR", + 4: "SUM", + 5: "AVERAGE", + 6: "MIN", + 7: "MAX", + 8: "ROW", + 9: "COLUMN", + 10: "NA", + 11: "NPV", + 12: "STDEV", + 13: "DOLLAR", + 14: "FIXED", + 15: "SIN", + 16: "COS", + 17: "TAN", + 18: "ATAN", + 19: "PI", + 20: "SQRT", + 21: "EXP", + 22: "LN", + 23: "LOG10", + 24: "ABS", + 25: "INT", + 26: "SIGN", + 27: "ROUND", + 28: "LOOKUP", + 29: "INDEX", + 30: "REPT", + 31: "MID", + 32: "LEN", + 33: "VALUE", + 34: "TRUE", + 35: "FALSE", + 36: "AND", + 37: "OR", + 38: "NOT", + 39: "MOD", + 40: "DCOUNT", + 41: "DSUM", + 42: "DAVERAGE", + 43: "DMIN", + 44: "DMAX", + 45: "DSTDEV", + 46: "VAR", + 47: "DVAR", + 48: "TEXT", + 49: "LINEST", + 50: "TREND", + 51: "LOGEST", + 52: "GROWTH", + 53: "GOTO", + 54: "HALT", + 55: "RETURN", + 56: "PV", + 57: "FV", + 58: "NPER", + 59: "PMT", + 60: "RATE", + 61: "MIRR", + 62: "IRR", + 63: "RAND", + 64: "MATCH", + 65: "DATE", + 66: "TIME", + 67: "DAY", + 68: "MONTH", + 69: "YEAR", + 70: "WEEKDAY", + 71: "HOUR", + 72: "MINUTE", + 73: "SECOND", + 74: "NOW", + 75: "AREAS", + 76: "ROWS", + 77: "COLUMNS", + 78: "OFFSET", + 79: "ABSREF", + 80: "RELREF", + 81: "ARGUMENT", + 82: "SEARCH", + 83: "TRANSPOSE", + 84: "ERROR", + 85: "STEP", + 86: "TYPE", + 87: "ECHO", + 88: "SET.NAME", + 89: "CALLER", + 90: "DEREF", + 91: "WINDOWS", + 92: "SERIES", + 93: "DOCUMENTS", + 94: "ACTIVE.CELL", + 95: "SELECTION", + 96: "RESULT", + 97: "ATAN2", + 98: "ASIN", + 99: "ACOS", + 100: "CHOOSE", + 101: "HLOOKUP", + 102: "VLOOKUP", + 103: "LINKS", + 104: "INPUT", + 105: "ISREF", + 106: "GET.FORMULA", + 107: "GET.NAME", + 108: "SET.VALUE", + 109: "LOG", + 110: "EXEC", + 111: "CHAR", + 112: "LOWER", + 113: "UPPER", + 114: "PROPER", + 115: "LEFT", + 116: "RIGHT", + 117: "EXACT", + 118: "TRIM", + 119: "REPLACE", + 120: "SUBSTITUTE", + 121: "CODE", + 122: "NAMES", + 123: "DIRECTORY", + 124: "FIND", + 125: "CELL", + 126: "ISERR", + 127: "ISTEXT", + 128: "ISNUMBER", + 129: "ISBLANK", + 130: "T", + 131: "N", + 132: "FOPEN", + 133: "FCLOSE", + 134: "FSIZE", + 135: "FREADLN", + 136: "FREAD", + 137: "FWRITELN", + 138: "FWRITE", + 139: "FPOS", + 140: "DATEVALUE", + 141: "TIMEVALUE", + 142: "SLN", + 143: "SYD", + 144: "DDB", + 145: "GET.DEF", + 146: "REFTEXT", + 147: "TEXTREF", + 148: "INDIRECT", + 149: "REGISTER", + 150: "CALL", + 151: "ADD.BAR", + 152: "ADD.MENU", + 153: "ADD.COMMAND", + 154: "ENABLE.COMMAND", + 155: "CHECK.COMMAND", + 156: "RENAME.COMMAND", + 157: "SHOW.BAR", + 158: "DELETE.MENU", + 159: "DELETE.COMMAND", + 160: "GET.CHART.ITEM", + 161: "DIALOG.BOX", + 162: "CLEAN", + 163: "MDETERM", + 164: "MINVERSE", + 165: "MMULT", + 166: "FILES", + 167: "IPMT", + 168: "PPMT", + 169: "COUNTA", + 170: "CANCEL.KEY", + 171: "FOR", + 172: "WHILE", + 173: "BREAK", + 174: "NEXT", + 175: "INITIATE", + 176: "REQUEST", + 177: "POKE", + 178: "EXECUTE", + 179: "TERMINATE", + 180: "RESTART", + 181: "HELP", + 182: "GET.BAR", + 183: "PRODUCT", + 184: "FACT", + 185: "GET.CELL", + 186: "GET.WORKSPACE", + 187: "GET.WINDOW", + 188: "GET.DOCUMENT", + 189: "DPRODUCT", + 190: "ISNONTEXT", + 191: "GET.NOTE", + 192: "NOTE", + 193: "STDEVP", + 194: "VARP", + 195: "DSTDEVP", + 196: "DVARP", + 197: "TRUNC", + 198: "ISLOGICAL", + 199: "DCOUNTA", + 200: "DELETE.BAR", + 201: "UNREGISTER", + 204: "USDOLLAR", + 205: "FINDB", + 206: "SEARCHB", + 207: "REPLACEB", + 208: "LEFTB", + 209: "RIGHTB", + 210: "MIDB", + 211: "LENB", + 212: "ROUNDUP", + 213: "ROUNDDOWN", + 214: "ASC", + 215: "DBCS", + 216: "RANK", + 219: "ADDRESS", + 220: "DAYS360", + 221: "TODAY", + 222: "VDB", + 223: "ELSE", + 224: "ELSE.IF", + 225: "END.IF", + 226: "FOR.CELL", + 227: "MEDIAN", + 228: "SUMPRODUCT", + 229: "SINH", + 230: "COSH", + 231: "TANH", + 232: "ASINH", + 233: "ACOSH", + 234: "ATANH", + 235: "DGET", + 236: "CREATE.OBJECT", + 237: "VOLATILE", + 238: "LAST.ERROR", + 239: "CUSTOM.UNDO", + 240: "CUSTOM.REPEAT", + 241: "FORMULA.CONVERT", + 242: "GET.LINK.INFO", + 243: "TEXT.BOX", + 244: "INFO", + 245: "GROUP", + 246: "GET.OBJECT", + 247: "DB", + 248: "PAUSE", + 251: "RESUME", + 252: "FREQUENCY", + 253: "ADD.TOOLBAR", + 254: "DELETE.TOOLBAR", + 255: "User", + 256: "RESET.TOOLBAR", + 257: "EVALUATE", + 258: "GET.TOOLBAR", + 259: "GET.TOOL", + 260: "SPELLING.CHECK", + 261: "ERROR.TYPE", + 262: "APP.TITLE", + 263: "WINDOW.TITLE", + 264: "SAVE.TOOLBAR", + 265: "ENABLE.TOOL", + 266: "PRESS.TOOL", + 267: "REGISTER.ID", + 268: "GET.WORKBOOK", + 269: "AVEDEV", + 270: "BETADIST", + 271: "GAMMALN", + 272: "BETAINV", + 273: "BINOMDIST", + 274: "CHIDIST", + 275: "CHIINV", + 276: "COMBIN", + 277: "CONFIDENCE", + 278: "CRITBINOM", + 279: "EVEN", + 280: "EXPONDIST", + 281: "FDIST", + 282: "FINV", + 283: "FISHER", + 284: "FISHERINV", + 285: "FLOOR", + 286: "GAMMADIST", + 287: "GAMMAINV", + 288: "CEILING", + 289: "HYPGEOMDIST", + 290: "LOGNORMDIST", + 291: "LOGINV", + 292: "NEGBINOMDIST", + 293: "NORMDIST", + 294: "NORMSDIST", + 295: "NORMINV", + 296: "NORMSINV", + 297: "STANDARDIZE", + 298: "ODD", + 299: "PERMUT", + 300: "POISSON", + 301: "TDIST", + 302: "WEIBULL", + 303: "SUMXMY2", + 304: "SUMX2MY2", + 305: "SUMX2PY2", + 306: "CHITEST", + 307: "CORREL", + 308: "COVAR", + 309: "FORECAST", + 310: "FTEST", + 311: "INTERCEPT", + 312: "PEARSON", + 313: "RSQ", + 314: "STEYX", + 315: "SLOPE", + 316: "TTEST", + 317: "PROB", + 318: "DEVSQ", + 319: "GEOMEAN", + 320: "HARMEAN", + 321: "SUMSQ", + 322: "KURT", + 323: "SKEW", + 324: "ZTEST", + 325: "LARGE", + 326: "SMALL", + 327: "QUARTILE", + 328: "PERCENTILE", + 329: "PERCENTRANK", + 330: "MODE", + 331: "TRIMMEAN", + 332: "TINV", + 334: "MOVIE.COMMAND", + 335: "GET.MOVIE", + 336: "CONCATENATE", + 337: "POWER", + 338: "PIVOT.ADD.DATA", + 339: "GET.PIVOT.TABLE", + 340: "GET.PIVOT.FIELD", + 341: "GET.PIVOT.ITEM", + 342: "RADIANS", + 343: "DEGREES", + 344: "SUBTOTAL", + 345: "SUMIF", + 346: "COUNTIF", + 347: "COUNTBLANK", + 348: "SCENARIO.GET", + 349: "OPTIONS.LISTS.GET", + 350: "ISPMT", + 351: "DATEDIF", + 352: "DATESTRING", + 353: "NUMBERSTRING", + 354: "ROMAN", + 355: "OPEN.DIALOG", + 356: "SAVE.DIALOG", + 357: "VIEW.GET", + 358: "GETPIVOTDATA", + 359: "HYPERLINK", + 360: "PHONETIC", + 361: "AVERAGEA", + 362: "MAXA", + 363: "MINA", + 364: "STDEVPA", + 365: "VARPA", + 366: "STDEVA", + 367: "VARA", + 368: "BAHTTEXT", + 369: "THAIDAYOFWEEK", + 370: "THAIDIGIT", + 371: "THAIMONTHOFYEAR", + 372: "THAINUMSOUND", + 373: "THAINUMSTRING", + 374: "THAISTRINGLENGTH", + 375: "ISTHAIDIGIT", + 376: "ROUNDBAHTDOWN", + 377: "ROUNDBAHTUP", + 378: "THAIYEAR", + 379: "RTD", + 380: "CUBEVALUE", + 381: "CUBEMEMBER", + 382: "CUBEMEMBERPROPERTY", + 383: "CUBERANKEDMEMBER", + 384: "HEX2BIN", + 385: "HEX2DEC", + 386: "HEX2OCT", + 387: "DEC2BIN", + 388: "DEC2HEX", + 389: "DEC2OCT", + 390: "OCT2BIN", + 391: "OCT2HEX", + 392: "OCT2DEC", + 393: "BIN2DEC", + 394: "BIN2OCT", + 395: "BIN2HEX", + 396: "IMSUB", + 397: "IMDIV", + 398: "IMPOWER", + 399: "IMABS", + 400: "IMSQRT", + 401: "IMLN", + 402: "IMLOG2", + 403: "IMLOG10", + 404: "IMSIN", + 405: "IMCOS", + 406: "IMEXP", + 407: "IMARGUMENT", + 408: "IMCONJUGATE", + 409: "IMAGINARY", + 410: "IMREAL", + 411: "COMPLEX", + 412: "IMSUM", + 413: "IMPRODUCT", + 414: "SERIESSUM", + 415: "FACTDOUBLE", + 416: "SQRTPI", + 417: "QUOTIENT", + 418: "DELTA", + 419: "GESTEP", + 420: "ISEVEN", + 421: "ISODD", + 422: "MROUND", + 423: "ERF", + 424: "ERFC", + 425: "BESSELJ", + 426: "BESSELK", + 427: "BESSELY", + 428: "BESSELI", + 429: "XIRR", + 430: "XNPV", + 431: "PRICEMAT", + 432: "YIELDMAT", + 433: "INTRATE", + 434: "RECEIVED", + 435: "DISC", + 436: "PRICEDISC", + 437: "YIELDDISC", + 438: "TBILLEQ", + 439: "TBILLPRICE", + 440: "TBILLYIELD", + 441: "PRICE", + 442: "YIELD", + 443: "DOLLARDE", + 444: "DOLLARFR", + 445: "NOMINAL", + 446: "EFFECT", + 447: "CUMPRINC", + 448: "CUMIPMT", + 449: "EDATE", + 450: "EOMONTH", + 451: "YEARFRAC", + 452: "COUPDAYBS", + 453: "COUPDAYS", + 454: "COUPDAYSNC", + 455: "COUPNCD", + 456: "COUPNUM", + 457: "COUPPCD", + 458: "DURATION", + 459: "MDURATION", + 460: "ODDLPRICE", + 461: "ODDLYIELD", + 462: "ODDFPRICE", + 463: "ODDFYIELD", + 464: "RANDBETWEEN", + 465: "WEEKNUM", + 466: "AMORDEGRC", + 467: "AMORLINC", + 468: "CONVERT", + 724: "SHEETJS", + 469: "ACCRINT", + 470: "ACCRINTM", + 471: "WORKDAY", + 472: "NETWORKDAYS", + 473: "GCD", + 474: "MULTINOMIAL", + 475: "LCM", + 476: "FVSCHEDULE", + 477: "CUBEKPIMEMBER", + 478: "CUBESET", + 479: "CUBESETCOUNT", + 480: "IFERROR", + 481: "COUNTIFS", + 482: "SUMIFS", + 483: "AVERAGEIF", + 484: "AVERAGEIFS" +}; +var FtabArgc = { + 2: 1, + 3: 1, + 10: 0, + 15: 1, + 16: 1, + 17: 1, + 18: 1, + 19: 0, + 20: 1, + 21: 1, + 22: 1, + 23: 1, + 24: 1, + 25: 1, + 26: 1, + 27: 2, + 30: 2, + 31: 3, + 32: 1, + 33: 1, + 34: 0, + 35: 0, + 38: 1, + 39: 2, + 40: 3, + 41: 3, + 42: 3, + 43: 3, + 44: 3, + 45: 3, + 47: 3, + 48: 2, + 53: 1, + 61: 3, + 63: 0, + 65: 3, + 66: 3, + 67: 1, + 68: 1, + 69: 1, + 70: 1, + 71: 1, + 72: 1, + 73: 1, + 74: 0, + 75: 1, + 76: 1, + 77: 1, + 79: 2, + 80: 2, + 83: 1, + 85: 0, + 86: 1, + 89: 0, + 90: 1, + 94: 0, + 95: 0, + 97: 2, + 98: 1, + 99: 1, + 101: 3, + 102: 3, + 105: 1, + 106: 1, + 108: 2, + 111: 1, + 112: 1, + 113: 1, + 114: 1, + 117: 2, + 118: 1, + 119: 4, + 121: 1, + 126: 1, + 127: 1, + 128: 1, + 129: 1, + 130: 1, + 131: 1, + 133: 1, + 134: 1, + 135: 1, + 136: 2, + 137: 2, + 138: 2, + 140: 1, + 141: 1, + 142: 3, + 143: 4, + 144: 4, + 161: 1, + 162: 1, + 163: 1, + 164: 1, + 165: 2, + 172: 1, + 175: 2, + 176: 2, + 177: 3, + 178: 2, + 179: 1, + 184: 1, + 186: 1, + 189: 3, + 190: 1, + 195: 3, + 196: 3, + 197: 1, + 198: 1, + 199: 3, + 201: 1, + 207: 4, + 210: 3, + 211: 1, + 212: 2, + 213: 2, + 214: 1, + 215: 1, + 225: 0, + 229: 1, + 230: 1, + 231: 1, + 232: 1, + 233: 1, + 234: 1, + 235: 3, + 244: 1, + 247: 4, + 252: 2, + 257: 1, + 261: 1, + 271: 1, + 273: 4, + 274: 2, + 275: 2, + 276: 2, + 277: 3, + 278: 3, + 279: 1, + 280: 3, + 281: 3, + 282: 3, + 283: 1, + 284: 1, + 285: 2, + 286: 4, + 287: 3, + 288: 2, + 289: 4, + 290: 3, + 291: 3, + 292: 3, + 293: 4, + 294: 1, + 295: 3, + 296: 1, + 297: 3, + 298: 1, + 299: 2, + 300: 3, + 301: 3, + 302: 4, + 303: 2, + 304: 2, + 305: 2, + 306: 2, + 307: 2, + 308: 2, + 309: 3, + 310: 2, + 311: 2, + 312: 2, + 313: 2, + 314: 2, + 315: 2, + 316: 4, + 325: 2, + 326: 2, + 327: 2, + 328: 2, + 331: 2, + 332: 2, + 337: 2, + 342: 1, + 343: 1, + 346: 2, + 347: 1, + 350: 4, + 351: 3, + 352: 1, + 353: 2, + 360: 1, + 368: 1, + 369: 1, + 370: 1, + 371: 1, + 372: 1, + 373: 1, + 374: 1, + 375: 1, + 376: 1, + 377: 1, + 378: 1, + 382: 3, + 385: 1, + 392: 1, + 393: 1, + 396: 2, + 397: 2, + 398: 2, + 399: 1, + 400: 1, + 401: 1, + 402: 1, + 403: 1, + 404: 1, + 405: 1, + 406: 1, + 407: 1, + 408: 1, + 409: 1, + 410: 1, + 414: 4, + 415: 1, + 416: 1, + 417: 2, + 420: 1, + 421: 1, + 422: 2, + 424: 1, + 425: 2, + 426: 2, + 427: 2, + 428: 2, + 430: 3, + 438: 3, + 439: 3, + 440: 3, + 443: 2, + 444: 2, + 445: 2, + 446: 2, + 447: 6, + 448: 6, + 449: 2, + 450: 2, + 464: 2, + 468: 3, + 476: 2, + 479: 1, + 480: 2, + 65535: 0 +}; +/* Part 3 TODO: actually parse formulae */ +function ods_to_csf_formula(f/*:string*/)/*:string*/ { + if(f.slice(0,3) == "of:") f = f.slice(3); + /* 5.2 Basic Expressions */ + if(f.charCodeAt(0) == 61) { + f = f.slice(1); + if(f.charCodeAt(0) == 61) f = f.slice(1); + } + f = f.replace(/COM\.MICROSOFT\./g, ""); + /* Part 3 Section 5.8 References */ + f = f.replace(/\[((?:\.[A-Z]+[0-9]+)(?::\.[A-Z]+[0-9]+)?)\]/g, function($$, $1) { return $1.replace(/\./g,""); }); + /* TODO: something other than this */ + f = f.replace(/\[.(#[A-Z]*[?!])\]/g, "$1"); + return f.replace(/[;~]/g,",").replace(/\|/g,";"); +} + +function csf_to_ods_formula(f/*:string*/)/*:string*/ { + var o = "of:=" + f.replace(crefregex, "$1[.$2$3$4$5]").replace(/\]:\[/g,":"); + /* TODO: something other than this */ + return o.replace(/;/g, "|").replace(/,/g,";"); +} + +function ods_to_csf_3D(r/*:string*/)/*:[string, string]*/ { + var a = r.split(":"); + var s = a[0].split(".")[0]; + return [s, a[0].split(".")[1] + (a.length > 1 ? (":" + (a[1].split(".")[1] || a[1].split(".")[0])) : "")]; +} + +function csf_to_ods_3D(r/*:string*/)/*:string*/ { + return r.replace(/\./,"!"); +} + +var strs = {}; // shared strings +var _ssfopts = {}; // spreadsheet formatting options + + +/*global Map */ +var browser_has_Map = typeof Map !== 'undefined'; + +function get_sst_id(sst/*:SST*/, str/*:string*/, rev)/*:number*/ { + var i = 0, len = sst.length; + if(rev) { + if(browser_has_Map ? rev.has(str) : Object.prototype.hasOwnProperty.call(rev, str)) { + var revarr = browser_has_Map ? rev.get(str) : rev[str]; + for(; i < revarr.length; ++i) { + if(sst[revarr[i]].t === str) { sst.Count ++; return revarr[i]; } + } + } + } else for(; i < len; ++i) { + if(sst[i].t === str) { sst.Count ++; return i; } + } + sst[len] = ({t:str}/*:any*/); sst.Count ++; sst.Unique ++; + if(rev) { + if(browser_has_Map) { + if(!rev.has(str)) rev.set(str, []); + rev.get(str).push(len); + } else { + if(!Object.prototype.hasOwnProperty.call(rev, str)) rev[str] = []; + rev[str].push(len); + } + } + return len; +} + +function col_obj_w(C/*:number*/, col) { + var p = ({min:C+1,max:C+1}/*:any*/); + /* wch (chars), wpx (pixels) */ + var wch = -1; + if(col.MDW) MDW = col.MDW; + if(col.width != null) p.customWidth = 1; + else if(col.wpx != null) wch = px2char(col.wpx); + else if(col.wch != null) wch = col.wch; + if(wch > -1) { p.width = char2width(wch); p.customWidth = 1; } + else if(col.width != null) p.width = col.width; + if(col.hidden) p.hidden = true; + if(col.level != null) { p.outlineLevel = p.level = col.level; } + return p; +} + +function default_margins(margins/*:Margins*/, mode/*:?string*/) { + if(!margins) return; + var defs = [0.7, 0.7, 0.75, 0.75, 0.3, 0.3]; + if(mode == 'xlml') defs = [1, 1, 1, 1, 0.5, 0.5]; + if(margins.left == null) margins.left = defs[0]; + if(margins.right == null) margins.right = defs[1]; + if(margins.top == null) margins.top = defs[2]; + if(margins.bottom == null) margins.bottom = defs[3]; + if(margins.header == null) margins.header = defs[4]; + if(margins.footer == null) margins.footer = defs[5]; +} + +function get_cell_style(styles/*:Array*/, cell/*:Cell*/, opts) { + var z = opts.revssf[cell.z != null ? cell.z : "General"]; + var i = 0x3c, len = styles.length; + if(z == null && opts.ssf) { + for(; i < 0x188; ++i) if(opts.ssf[i] == null) { + SSF_load(cell.z, i); + // $FlowIgnore + opts.ssf[i] = cell.z; + opts.revssf[cell.z] = z = i; + break; + } + } + for(i = 0; i != len; ++i) if(styles[i].numFmtId === z) return i; + styles[len] = { + numFmtId:z, + fontId:0, + fillId:0, + borderId:0, + xfId:0, + applyNumberFormat:1 + }; + return len; +} + +function safe_format(p/*:Cell*/, fmtid/*:number*/, fillid/*:?number*/, opts, themes, styles) { + try { + if(opts.cellNF) p.z = table_fmt[fmtid]; + } catch(e) { if(opts.WTF) throw e; } + if(p.t === 'z' && !opts.cellStyles) return; + if(p.t === 'd' && typeof p.v === 'string') p.v = parseDate(p.v); + if((!opts || opts.cellText !== false) && p.t !== 'z') try { + if(table_fmt[fmtid] == null) SSF_load(SSFImplicit[fmtid] || "General", fmtid); + if(p.t === 'e') p.w = p.w || BErr[p.v]; + else if(fmtid === 0) { + if(p.t === 'n') { + if((p.v|0) === p.v) p.w = p.v.toString(10); + else p.w = SSF_general_num(p.v); + } + else if(p.t === 'd') { + var dd = datenum(p.v); + if((dd|0) === dd) p.w = dd.toString(10); + else p.w = SSF_general_num(dd); + } + else if(p.v === undefined) return ""; + else p.w = SSF_general(p.v,_ssfopts); + } + else if(p.t === 'd') p.w = SSF_format(fmtid,datenum(p.v),_ssfopts); + else p.w = SSF_format(fmtid,p.v,_ssfopts); + } catch(e) { if(opts.WTF) throw e; } + if(!opts.cellStyles) return; + if(fillid != null) try { + p.s = styles.Fills[fillid]; + if (p.s.fgColor && p.s.fgColor.theme && !p.s.fgColor.rgb) { + p.s.fgColor.rgb = rgb_tint(themes.themeElements.clrScheme[p.s.fgColor.theme].rgb, p.s.fgColor.tint || 0); + if(opts.WTF) p.s.fgColor.raw_rgb = themes.themeElements.clrScheme[p.s.fgColor.theme].rgb; + } + if (p.s.bgColor && p.s.bgColor.theme) { + p.s.bgColor.rgb = rgb_tint(themes.themeElements.clrScheme[p.s.bgColor.theme].rgb, p.s.bgColor.tint || 0); + if(opts.WTF) p.s.bgColor.raw_rgb = themes.themeElements.clrScheme[p.s.bgColor.theme].rgb; + } + } catch(e) { if(opts.WTF && styles.Fills) throw e; } +} + +function check_ws(ws/*:Worksheet*/, sname/*:string*/, i/*:number*/) { + if(ws && ws['!ref']) { + var range = safe_decode_range(ws['!ref']); + if(range.e.c < range.s.c || range.e.r < range.s.r) throw new Error("Bad range (" + i + "): " + ws['!ref']); + } +} +function parse_ws_xml_dim(ws/*:Worksheet*/, s/*:string*/) { + var d = safe_decode_range(s); + if(d.s.r<=d.e.r && d.s.c<=d.e.c && d.s.r>=0 && d.s.c>=0) ws["!ref"] = encode_range(d); +} +var mergecregex = /<(?:\w:)?mergeCell ref="[A-Z0-9:]+"\s*[\/]?>/g; +var sheetdataregex = /<(?:\w+:)?sheetData[^>]*>([\s\S]*)<\/(?:\w+:)?sheetData>/; +var hlinkregex = /<(?:\w:)?hyperlink [^>]*>/mg; +var dimregex = /"(\w*:\w*)"/; +var colregex = /<(?:\w:)?col\b[^>]*[\/]?>/g; +var afregex = /<(?:\w:)?autoFilter[^>]*([\/]|>([\s\S]*)<\/(?:\w:)?autoFilter)>/g; +var marginregex= /<(?:\w:)?pageMargins[^>]*\/>/g; +var sheetprregex = /<(?:\w:)?sheetPr\b(?:[^>a-z][^>]*)?\/>/; +var sheetprregex2= /<(?:\w:)?sheetPr[^>]*(?:[\/]|>([\s\S]*)<\/(?:\w:)?sheetPr)>/; +var svsregex = /<(?:\w:)?sheetViews[^>]*(?:[\/]|>([\s\S]*)<\/(?:\w:)?sheetViews)>/; + +/* 18.3 Worksheets */ +function parse_ws_xml(data/*:?string*/, opts, idx/*:number*/, rels, wb/*:WBWBProps*/, themes, styles)/*:Worksheet*/ { + if(!data) return data; + if(!rels) rels = {'!id':{}}; + if(DENSE != null && opts.dense == null) opts.dense = DENSE; + + /* 18.3.1.99 worksheet CT_Worksheet */ + var s = opts.dense ? ([]/*:any*/) : ({}/*:any*/); + var refguess/*:Range*/ = ({s: {r:2000000, c:2000000}, e: {r:0, c:0} }/*:any*/); + + var data1 = "", data2 = ""; + var mtch/*:?any*/ = data.match(sheetdataregex); + if(mtch) { + data1 = data.slice(0, mtch.index); + data2 = data.slice(mtch.index + mtch[0].length); + } else data1 = data2 = data; + + /* 18.3.1.82 sheetPr CT_SheetPr */ + var sheetPr = data1.match(sheetprregex); + if(sheetPr) parse_ws_xml_sheetpr(sheetPr[0], s, wb, idx); + else if((sheetPr = data1.match(sheetprregex2))) parse_ws_xml_sheetpr2(sheetPr[0], sheetPr[1]||"", s, wb, idx, styles, themes); + + /* 18.3.1.35 dimension CT_SheetDimension */ + var ridx = (data1.match(/<(?:\w*:)?dimension/)||{index:-1}).index; + if(ridx > 0) { + var ref = data1.slice(ridx,ridx+50).match(dimregex); + if(ref) parse_ws_xml_dim(s, ref[1]); + } + + /* 18.3.1.88 sheetViews CT_SheetViews */ + var svs = data1.match(svsregex); + if(svs && svs[1]) parse_ws_xml_sheetviews(svs[1], wb); + + /* 18.3.1.17 cols CT_Cols */ + var columns/*:Array*/ = []; + if(opts.cellStyles) { + /* 18.3.1.13 col CT_Col */ + var cols = data1.match(colregex); + if(cols) parse_ws_xml_cols(columns, cols); + } + + /* 18.3.1.80 sheetData CT_SheetData ? */ + if(mtch) parse_ws_xml_data(mtch[1], s, opts, refguess, themes, styles); + + /* 18.3.1.2 autoFilter CT_AutoFilter */ + var afilter = data2.match(afregex); + if(afilter) s['!autofilter'] = parse_ws_xml_autofilter(afilter[0]); + + /* 18.3.1.55 mergeCells CT_MergeCells */ + var merges/*:Array*/ = []; + var _merge = data2.match(mergecregex); + if(_merge) for(ridx = 0; ridx != _merge.length; ++ridx) + merges[ridx] = safe_decode_range(_merge[ridx].slice(_merge[ridx].indexOf("\"")+1)); + + /* 18.3.1.48 hyperlinks CT_Hyperlinks */ + var hlink = data2.match(hlinkregex); + if(hlink) parse_ws_xml_hlinks(s, hlink, rels); + + /* 18.3.1.62 pageMargins CT_PageMargins */ + var margins = data2.match(marginregex); + if(margins) s['!margins'] = parse_ws_xml_margins(parsexmltag(margins[0])); + + if(!s["!ref"] && refguess.e.c >= refguess.s.c && refguess.e.r >= refguess.s.r) s["!ref"] = encode_range(refguess); + if(opts.sheetRows > 0 && s["!ref"]) { + var tmpref = safe_decode_range(s["!ref"]); + if(opts.sheetRows <= +tmpref.e.r) { + tmpref.e.r = opts.sheetRows - 1; + if(tmpref.e.r > refguess.e.r) tmpref.e.r = refguess.e.r; + if(tmpref.e.r < tmpref.s.r) tmpref.s.r = tmpref.e.r; + if(tmpref.e.c > refguess.e.c) tmpref.e.c = refguess.e.c; + if(tmpref.e.c < tmpref.s.c) tmpref.s.c = tmpref.e.c; + s["!fullref"] = s["!ref"]; + s["!ref"] = encode_range(tmpref); + } + } + if(columns.length > 0) s["!cols"] = columns; + if(merges.length > 0) s["!merges"] = merges; + return s; +} + +function write_ws_xml_merges(merges/*:Array*/)/*:string*/ { + if(merges.length === 0) return ""; + var o = ''; + for(var i = 0; i != merges.length; ++i) o += ''; + return o + ''; +} + +/* 18.3.1.82-3 sheetPr CT_ChartsheetPr / CT_SheetPr */ +function parse_ws_xml_sheetpr(sheetPr/*:string*/, s, wb/*:WBWBProps*/, idx/*:number*/) { + var data = parsexmltag(sheetPr); + if(!wb.Sheets[idx]) wb.Sheets[idx] = {}; + if(data.codeName) wb.Sheets[idx].CodeName = unescapexml(utf8read(data.codeName)); +} +function parse_ws_xml_sheetpr2(sheetPr/*:string*/, body/*:string*/, s, wb/*:WBWBProps*/, idx/*:number*/) { + parse_ws_xml_sheetpr(sheetPr.slice(0, sheetPr.indexOf(">")), s, wb, idx); +} +function write_ws_xml_sheetpr(ws, wb, idx, opts, o) { + var needed = false; + var props = {}, payload = null; + if(opts.bookType !== 'xlsx' && wb.vbaraw) { + var cname = wb.SheetNames[idx]; + try { if(wb.Workbook) cname = wb.Workbook.Sheets[idx].CodeName || cname; } catch(e) {} + needed = true; + props.codeName = utf8write(escapexml(cname)); + } + + if(ws && ws["!outline"]) { + var outlineprops = {summaryBelow:1, summaryRight:1}; + if(ws["!outline"].above) outlineprops.summaryBelow = 0; + if(ws["!outline"].left) outlineprops.summaryRight = 0; + payload = (payload||"") + writextag('outlinePr', null, outlineprops); + } + + if(!needed && !payload) return; + o[o.length] = (writextag('sheetPr', payload, props)); +} + +/* 18.3.1.85 sheetProtection CT_SheetProtection */ +var sheetprot_deffalse = ["objects", "scenarios", "selectLockedCells", "selectUnlockedCells"]; +var sheetprot_deftrue = [ + "formatColumns", "formatRows", "formatCells", + "insertColumns", "insertRows", "insertHyperlinks", + "deleteColumns", "deleteRows", + "sort", "autoFilter", "pivotTables" +]; +function write_ws_xml_protection(sp)/*:string*/ { + // algorithmName, hashValue, saltValue, spinCount + var o = ({sheet:1}/*:any*/); + sheetprot_deffalse.forEach(function(n) { if(sp[n] != null && sp[n]) o[n] = "1"; }); + sheetprot_deftrue.forEach(function(n) { if(sp[n] != null && !sp[n]) o[n] = "0"; }); + /* TODO: algorithm */ + if(sp.password) o.password = crypto_CreatePasswordVerifier_Method1(sp.password).toString(16).toUpperCase(); + return writextag('sheetProtection', null, o); +} + +function parse_ws_xml_hlinks(s, data/*:Array*/, rels) { + var dense = Array.isArray(s); + for(var i = 0; i != data.length; ++i) { + var val = parsexmltag(utf8read(data[i]), true); + if(!val.ref) return; + var rel = ((rels || {})['!id']||[])[val.id]; + if(rel) { + val.Target = rel.Target; + if(val.location) val.Target += "#"+unescapexml(val.location); + } else { + val.Target = "#" + unescapexml(val.location); + rel = {Target: val.Target, TargetMode: 'Internal'}; + } + val.Rel = rel; + if(val.tooltip) { val.Tooltip = val.tooltip; delete val.tooltip; } + var rng = safe_decode_range(val.ref); + for(var R=rng.s.r;R<=rng.e.r;++R) for(var C=rng.s.c;C<=rng.e.c;++C) { + var addr = encode_cell({c:C,r:R}); + if(dense) { + if(!s[R]) s[R] = []; + if(!s[R][C]) s[R][C] = {t:"z",v:undefined}; + s[R][C].l = val; + } else { + if(!s[addr]) s[addr] = {t:"z",v:undefined}; + s[addr].l = val; + } + } + } +} + +function parse_ws_xml_margins(margin) { + var o = {}; + ["left", "right", "top", "bottom", "header", "footer"].forEach(function(k) { + if(margin[k]) o[k] = parseFloat(margin[k]); + }); + return o; +} +function write_ws_xml_margins(margin)/*:string*/ { + default_margins(margin); + return writextag('pageMargins', null, margin); +} + +function parse_ws_xml_cols(columns, cols) { + var seencol = false; + for(var coli = 0; coli != cols.length; ++coli) { + var coll = parsexmltag(cols[coli], true); + if(coll.hidden) coll.hidden = parsexmlbool(coll.hidden); + var colm=parseInt(coll.min, 10)-1, colM=parseInt(coll.max,10)-1; + if(coll.outlineLevel) coll.level = (+coll.outlineLevel || 0); + delete coll.min; delete coll.max; coll.width = +coll.width; + if(!seencol && coll.width) { seencol = true; find_mdw_colw(coll.width); } + process_col(coll); + while(colm <= colM) columns[colm++] = dup(coll); + } +} +function write_ws_xml_cols(ws, cols)/*:string*/ { + var o = [""], col; + for(var i = 0; i != cols.length; ++i) { + if(!(col = cols[i])) continue; + o[o.length] = (writextag('col', null, col_obj_w(i, col))); + } + o[o.length] = ""; + return o.join(""); +} + +function parse_ws_xml_autofilter(data/*:string*/) { + var o = { ref: (data.match(/ref="([^"]*)"/)||[])[1]}; + return o; +} +function write_ws_xml_autofilter(data, ws, wb, idx)/*:string*/ { + var ref = typeof data.ref == "string" ? data.ref : encode_range(data.ref); + if(!wb.Workbook) wb.Workbook = ({Sheets:[]}/*:any*/); + if(!wb.Workbook.Names) wb.Workbook.Names = []; + var names/*: Array */ = wb.Workbook.Names; + var range = decode_range(ref); + if(range.s.r == range.e.r) { range.e.r = decode_range(ws["!ref"]).e.r; ref = encode_range(range); } + for(var i = 0; i < names.length; ++i) { + var name = names[i]; + if(name.Name != '_xlnm._FilterDatabase') continue; + if(name.Sheet != idx) continue; + name.Ref = "'" + wb.SheetNames[idx] + "'!" + ref; break; + } + if(i == names.length) names.push({ Name: '_xlnm._FilterDatabase', Sheet: idx, Ref: "'" + wb.SheetNames[idx] + "'!" + ref }); + return writextag("autoFilter", null, {ref:ref}); +} + +/* 18.3.1.88 sheetViews CT_SheetViews */ +/* 18.3.1.87 sheetView CT_SheetView */ +var sviewregex = /<(?:\w:)?sheetView(?:[^>a-z][^>]*)?\/?>/; +function parse_ws_xml_sheetviews(data, wb/*:WBWBProps*/) { + if(!wb.Views) wb.Views = [{}]; + (data.match(sviewregex)||[]).forEach(function(r/*:string*/, i/*:number*/) { + var tag = parsexmltag(r); + // $FlowIgnore + if(!wb.Views[i]) wb.Views[i] = {}; + // $FlowIgnore + if(+tag.zoomScale) wb.Views[i].zoom = +tag.zoomScale; + // $FlowIgnore + if(parsexmlbool(tag.rightToLeft)) wb.Views[i].RTL = true; + }); +} +function write_ws_xml_sheetviews(ws, opts, idx, wb)/*:string*/ { + var sview = ({workbookViewId:"0"}/*:any*/); + // $FlowIgnore + if((((wb||{}).Workbook||{}).Views||[])[0]) sview.rightToLeft = wb.Workbook.Views[0].RTL ? "1" : "0"; + return writextag("sheetViews", writextag("sheetView", null, sview), {}); +} + +function write_ws_xml_cell(cell/*:Cell*/, ref, ws, opts/*::, idx, wb*/)/*:string*/ { + if(cell.c) ws['!comments'].push([ref, cell.c]); + if(cell.v === undefined && typeof cell.f !== "string" || cell.t === 'z' && !cell.f) return ""; + var vv = ""; + var oldt = cell.t, oldv = cell.v; + if(cell.t !== "z") switch(cell.t) { + case 'b': vv = cell.v ? "1" : "0"; break; + case 'n': vv = ''+cell.v; break; + case 'e': vv = BErr[cell.v]; break; + case 'd': + if(opts && opts.cellDates) vv = parseDate(cell.v, -1).toISOString(); + else { + cell = dup(cell); + cell.t = 'n'; + vv = ''+(cell.v = datenum(parseDate(cell.v))); + } + if(typeof cell.z === 'undefined') cell.z = table_fmt[14]; + break; + default: vv = cell.v; break; + } + var v = writetag('v', escapexml(vv)), o = ({r:ref}/*:any*/); + /* TODO: cell style */ + var os = get_cell_style(opts.cellXfs, cell, opts); + if(os !== 0) o.s = os; + switch(cell.t) { + case 'n': break; + case 'd': o.t = "d"; break; + case 'b': o.t = "b"; break; + case 'e': o.t = "e"; break; + case 'z': break; + default: if(cell.v == null) { delete cell.t; break; } + if(cell.v.length > 32767) throw new Error("Text length must not exceed 32767 characters"); + if(opts && opts.bookSST) { + v = writetag('v', ''+get_sst_id(opts.Strings, cell.v, opts.revStrings)); + o.t = "s"; break; + } + o.t = "str"; break; + } + if(cell.t != oldt) { cell.t = oldt; cell.v = oldv; } + if(typeof cell.f == "string" && cell.f) { + var ff = cell.F && cell.F.slice(0, ref.length) == ref ? {t:"array", ref:cell.F} : null; + v = writextag('f', escapexml(cell.f), ff) + (cell.v != null ? v : ""); + } + if(cell.l) ws['!links'].push([ref, cell.l]); + if(cell.D) o.cm = 1; + return writextag('c', v, o); +} + +var parse_ws_xml_data = /*#__PURE__*/(function() { + var cellregex = /<(?:\w+:)?c[ \/>]/, rowregex = /<\/(?:\w+:)?row>/; + var rregex = /r=["']([^"']*)["']/, isregex = /<(?:\w+:)?is>([\S\s]*?)<\/(?:\w+:)?is>/; + var refregex = /ref=["']([^"']*)["']/; + var match_v = matchtag("v"), match_f = matchtag("f"); + +return function parse_ws_xml_data(sdata/*:string*/, s, opts, guess/*:Range*/, themes, styles) { + var ri = 0, x = "", cells/*:Array*/ = [], cref/*:?Array*/ = [], idx=0, i=0, cc=0, d="", p/*:any*/; + var tag, tagr = 0, tagc = 0; + var sstr, ftag; + var fmtid = 0, fillid = 0; + var do_format = Array.isArray(styles.CellXf), cf; + var arrayf/*:Array<[Range, string]>*/ = []; + var sharedf = []; + var dense = Array.isArray(s); + var rows/*:Array*/ = [], rowobj = {}, rowrite = false; + var sheetStubs = !!opts.sheetStubs; + for(var marr = sdata.split(rowregex), mt = 0, marrlen = marr.length; mt != marrlen; ++mt) { + x = marr[mt].trim(); + var xlen = x.length; + if(xlen === 0) continue; + + /* 18.3.1.73 row CT_Row */ + var rstarti = 0; + outa: for(ri = 0; ri < xlen; ++ri) switch(/*x.charCodeAt(ri)*/x[ri]) { + case ">" /*62*/: + if(/*x.charCodeAt(ri-1) != 47*/x[ri-1] != "/") { ++ri; break outa; } + if(opts && opts.cellStyles) { + // TODO: avoid duplication + tag = parsexmltag(x.slice(rstarti,ri), true); + tagr = tag.r != null ? parseInt(tag.r, 10) : tagr+1; tagc = -1; + if(opts.sheetRows && opts.sheetRows < tagr) continue; + rowobj = {}; rowrite = false; + if(tag.ht) { rowrite = true; rowobj.hpt = parseFloat(tag.ht); rowobj.hpx = pt2px(rowobj.hpt); } + if(tag.hidden == "1") { rowrite = true; rowobj.hidden = true; } + if(tag.outlineLevel != null) { rowrite = true; rowobj.level = +tag.outlineLevel; } + if(rowrite) rows[tagr-1] = rowobj; + } + break; + case "<" /*60*/: rstarti = ri; break; + } + if(rstarti >= ri) break; + tag = parsexmltag(x.slice(rstarti,ri), true); + tagr = tag.r != null ? parseInt(tag.r, 10) : tagr+1; tagc = -1; + if(opts.sheetRows && opts.sheetRows < tagr) continue; + if(guess.s.r > tagr - 1) guess.s.r = tagr - 1; + if(guess.e.r < tagr - 1) guess.e.r = tagr - 1; + + if(opts && opts.cellStyles) { + rowobj = {}; rowrite = false; + if(tag.ht) { rowrite = true; rowobj.hpt = parseFloat(tag.ht); rowobj.hpx = pt2px(rowobj.hpt); } + if(tag.hidden == "1") { rowrite = true; rowobj.hidden = true; } + if(tag.outlineLevel != null) { rowrite = true; rowobj.level = +tag.outlineLevel; } + if(rowrite) rows[tagr-1] = rowobj; + } + + /* 18.3.1.4 c CT_Cell */ + cells = x.slice(ri).split(cellregex); + for(var rslice = 0; rslice != cells.length; ++rslice) if(cells[rslice].trim().charAt(0) != "<") break; + cells = cells.slice(rslice); + for(ri = 0; ri != cells.length; ++ri) { + x = cells[ri].trim(); + if(x.length === 0) continue; + cref = x.match(rregex); idx = ri; i=0; cc=0; + x = "":"") + x; + if(cref != null && cref.length === 2) { + idx = 0; d=cref[1]; + for(i=0; i != d.length; ++i) { + if((cc=d.charCodeAt(i)-64) < 1 || cc > 26) break; + idx = 26*idx + cc; + } + --idx; + tagc = idx; + } else ++tagc; + for(i = 0; i != x.length; ++i) if(x.charCodeAt(i) === 62) break; ++i; + tag = parsexmltag(x.slice(0,i), true); + if(!tag.r) tag.r = encode_cell({r:tagr-1, c:tagc}); + d = x.slice(i); + p = ({t:""}/*:any*/); + + if((cref=d.match(match_v))!= null && /*::cref != null && */cref[1] !== '') p.v=unescapexml(cref[1]); + if(opts.cellFormula) { + if((cref=d.match(match_f))!= null && /*::cref != null && */cref[1] !== '') { + /* TODO: match against XLSXFutureFunctions */ + p.f=unescapexml(utf8read(cref[1])).replace(/\r\n/g, "\n"); + if(!opts.xlfn) p.f = _xlfn(p.f); + if(/*::cref != null && cref[0] != null && */cref[0].indexOf('t="array"') > -1) { + p.F = (d.match(refregex)||[])[1]; + if(p.F.indexOf(":") > -1) arrayf.push([safe_decode_range(p.F), p.F]); + } else if(/*::cref != null && cref[0] != null && */cref[0].indexOf('t="shared"') > -1) { + // TODO: parse formula + ftag = parsexmltag(cref[0]); + var ___f = unescapexml(utf8read(cref[1])); + if(!opts.xlfn) ___f = _xlfn(___f); + sharedf[parseInt(ftag.si, 10)] = [ftag, ___f, tag.r]; + } + } else if((cref=d.match(/]*\/>/))) { + ftag = parsexmltag(cref[0]); + if(sharedf[ftag.si]) p.f = shift_formula_xlsx(sharedf[ftag.si][1], sharedf[ftag.si][2]/*[0].ref*/, tag.r); + } + /* TODO: factor out contains logic */ + var _tag = decode_cell(tag.r); + for(i = 0; i < arrayf.length; ++i) + if(_tag.r >= arrayf[i][0].s.r && _tag.r <= arrayf[i][0].e.r) + if(_tag.c >= arrayf[i][0].s.c && _tag.c <= arrayf[i][0].e.c) + p.F = arrayf[i][1]; + } + + if(tag.t == null && p.v === undefined) { + if(p.f || p.F) { + p.v = 0; p.t = "n"; + } else if(!sheetStubs) continue; + else p.t = "z"; + } + else p.t = tag.t || "n"; + if(guess.s.c > tagc) guess.s.c = tagc; + if(guess.e.c < tagc) guess.e.c = tagc; + /* 18.18.11 t ST_CellType */ + switch(p.t) { + case 'n': + if(p.v == "" || p.v == null) { + if(!sheetStubs) continue; + p.t = 'z'; + } else p.v = parseFloat(p.v); + break; + case 's': + if(typeof p.v == 'undefined') { + if(!sheetStubs) continue; + p.t = 'z'; + } else { + sstr = strs[parseInt(p.v, 10)]; + p.v = sstr.t; + p.r = sstr.r; + if(opts.cellHTML) p.h = sstr.h; + } + break; + case 'str': + p.t = "s"; + p.v = (p.v!=null) ? utf8read(p.v) : ''; + if(opts.cellHTML) p.h = escapehtml(p.v); + break; + case 'inlineStr': + cref = d.match(isregex); + p.t = 's'; + if(cref != null && (sstr = parse_si(cref[1]))) { + p.v = sstr.t; + if(opts.cellHTML) p.h = sstr.h; + } else p.v = ""; + break; + case 'b': p.v = parsexmlbool(p.v); break; + case 'd': + if(opts.cellDates) p.v = parseDate(p.v, 1); + else { p.v = datenum(parseDate(p.v, 1)); p.t = 'n'; } + break; + /* error string in .w, number in .v */ + case 'e': + if(!opts || opts.cellText !== false) p.w = p.v; + p.v = RBErr[p.v]; break; + } + /* formatting */ + fmtid = fillid = 0; + cf = null; + if(do_format && tag.s !== undefined) { + cf = styles.CellXf[tag.s]; + if(cf != null) { + if(cf.numFmtId != null) fmtid = cf.numFmtId; + if(opts.cellStyles) { + if(cf.fillId != null) fillid = cf.fillId; + } + } + } + safe_format(p, fmtid, fillid, opts, themes, styles); + if(opts.cellDates && do_format && p.t == 'n' && fmt_is_date(table_fmt[fmtid])) { p.t = 'd'; p.v = numdate(p.v); } + if(tag.cm && opts.xlmeta) { + var cm = (opts.xlmeta.Cell||[])[+tag.cm-1]; + if(cm && cm.type == 'XLDAPR') p.D = true; + } + if(dense) { + var _r = decode_cell(tag.r); + if(!s[_r.r]) s[_r.r] = []; + s[_r.r][_r.c] = p; + } else s[tag.r] = p; + } + } + if(rows.length > 0) s['!rows'] = rows; +}; })(); + +function write_ws_xml_data(ws/*:Worksheet*/, opts, idx/*:number*/, wb/*:Workbook*//*::, rels*/)/*:string*/ { + var o/*:Array*/ = [], r/*:Array*/ = [], range = safe_decode_range(ws['!ref']), cell="", ref, rr = "", cols/*:Array*/ = [], R=0, C=0, rows = ws['!rows']; + var dense = Array.isArray(ws); + var params = ({r:rr}/*:any*/), row/*:RowInfo*/, height = -1; + for(C = range.s.c; C <= range.e.c; ++C) cols[C] = encode_col(C); + for(R = range.s.r; R <= range.e.r; ++R) { + r = []; + rr = encode_row(R); + for(C = range.s.c; C <= range.e.c; ++C) { + ref = cols[C] + rr; + var _cell = dense ? (ws[R]||[])[C]: ws[ref]; + if(_cell === undefined) continue; + if((cell = write_ws_xml_cell(_cell, ref, ws, opts, idx, wb)) != null) r.push(cell); + } + if(r.length > 0 || (rows && rows[R])) { + params = ({r:rr}/*:any*/); + if(rows && rows[R]) { + row = rows[R]; + if(row.hidden) params.hidden = 1; + height = -1; + if(row.hpx) height = px2pt(row.hpx); + else if(row.hpt) height = row.hpt; + if(height > -1) { params.ht = height; params.customHeight = 1; } + if(row.level) { params.outlineLevel = row.level; } + } + o[o.length] = (writextag('row', r.join(""), params)); + } + } + if(rows) for(; R < rows.length; ++R) { + if(rows && rows[R]) { + params = ({r:R+1}/*:any*/); + row = rows[R]; + if(row.hidden) params.hidden = 1; + height = -1; + if (row.hpx) height = px2pt(row.hpx); + else if (row.hpt) height = row.hpt; + if (height > -1) { params.ht = height; params.customHeight = 1; } + if (row.level) { params.outlineLevel = row.level; } + o[o.length] = (writextag('row', "", params)); + } + } + return o.join(""); +} + +function write_ws_xml(idx/*:number*/, opts, wb/*:Workbook*/, rels)/*:string*/ { + var o = [XML_HEADER, writextag('worksheet', null, { + 'xmlns': XMLNS_main[0], + 'xmlns:r': XMLNS.r + })]; + var s = wb.SheetNames[idx], sidx = 0, rdata = ""; + var ws = wb.Sheets[s]; + if(ws == null) ws = {}; + var ref = ws['!ref'] || 'A1'; + var range = safe_decode_range(ref); + if(range.e.c > 0x3FFF || range.e.r > 0xFFFFF) { + if(opts.WTF) throw new Error("Range " + ref + " exceeds format limit A1:XFD1048576"); + range.e.c = Math.min(range.e.c, 0x3FFF); + range.e.r = Math.min(range.e.c, 0xFFFFF); + ref = encode_range(range); + } + if(!rels) rels = {}; + ws['!comments'] = []; + var _drawing = []; + + write_ws_xml_sheetpr(ws, wb, idx, opts, o); + + o[o.length] = (writextag('dimension', null, {'ref': ref})); + + o[o.length] = write_ws_xml_sheetviews(ws, opts, idx, wb); + + /* TODO: store in WB, process styles */ + if(opts.sheetFormat) o[o.length] = (writextag('sheetFormatPr', null, { + defaultRowHeight:opts.sheetFormat.defaultRowHeight||'16', + baseColWidth:opts.sheetFormat.baseColWidth||'10', + outlineLevelRow:opts.sheetFormat.outlineLevelRow||'7' + })); + + if(ws['!cols'] != null && ws['!cols'].length > 0) o[o.length] = (write_ws_xml_cols(ws, ws['!cols'])); + + o[sidx = o.length] = ''; + ws['!links'] = []; + if(ws['!ref'] != null) { + rdata = write_ws_xml_data(ws, opts, idx, wb, rels); + if(rdata.length > 0) o[o.length] = (rdata); + } + if(o.length>sidx+1) { o[o.length] = (''); o[sidx]=o[sidx].replace("/>",">"); } + + /* sheetCalcPr */ + + if(ws['!protect']) o[o.length] = write_ws_xml_protection(ws['!protect']); + + /* protectedRanges */ + /* scenarios */ + + if(ws['!autofilter'] != null) o[o.length] = write_ws_xml_autofilter(ws['!autofilter'], ws, wb, idx); + + /* sortState */ + /* dataConsolidate */ + /* customSheetViews */ + + if(ws['!merges'] != null && ws['!merges'].length > 0) o[o.length] = (write_ws_xml_merges(ws['!merges'])); + + /* phoneticPr */ + /* conditionalFormatting */ + /* dataValidations */ + + var relc = -1, rel, rId = -1; + if(/*::(*/ws['!links']/*::||[])*/.length > 0) { + o[o.length] = ""; + /*::(*/ws['!links']/*::||[])*/.forEach(function(l) { + if(!l[1].Target) return; + rel = ({"ref":l[0]}/*:any*/); + if(l[1].Target.charAt(0) != "#") { + rId = add_rels(rels, -1, escapexml(l[1].Target).replace(/#.*$/, ""), RELS.HLINK); + rel["r:id"] = "rId"+rId; + } + if((relc = l[1].Target.indexOf("#")) > -1) rel.location = escapexml(l[1].Target.slice(relc+1)); + if(l[1].Tooltip) rel.tooltip = escapexml(l[1].Tooltip); + o[o.length] = writextag("hyperlink",null,rel); + }); + o[o.length] = ""; + } + delete ws['!links']; + + /* printOptions */ + + if(ws['!margins'] != null) o[o.length] = write_ws_xml_margins(ws['!margins']); + + /* pageSetup */ + /* headerFooter */ + /* rowBreaks */ + /* colBreaks */ + /* customProperties */ + /* cellWatches */ + + if(!opts || opts.ignoreEC || (opts.ignoreEC == (void 0))) o[o.length] = writetag("ignoredErrors", writextag("ignoredError", null, {numberStoredAsText:1, sqref:ref})); + + /* smartTags */ + + if(_drawing.length > 0) { + rId = add_rels(rels, -1, "../drawings/drawing" + (idx+1) + ".xml", RELS.DRAW); + o[o.length] = writextag("drawing", null, {"r:id":"rId" + rId}); + ws['!drawing'] = _drawing; + } + + if(ws['!comments'].length > 0) { + rId = add_rels(rels, -1, "../drawings/vmlDrawing" + (idx+1) + ".vml", RELS.VML); + o[o.length] = writextag("legacyDrawing", null, {"r:id":"rId" + rId}); + ws['!legacy'] = rId; + } + + /* legacyDrawingHF */ + /* picture */ + /* oleObjects */ + /* controls */ + /* webPublishItems */ + /* tableParts */ + /* extLst */ + + if(o.length>1) { o[o.length] = (''); o[1]=o[1].replace("/>",">"); } + return o.join(""); +} + +/* [MS-XLSB] 2.4.726 BrtRowHdr */ +function parse_BrtRowHdr(data, length) { + var z = ({}/*:any*/); + var tgt = data.l + length; + z.r = data.read_shift(4); + data.l += 4; // TODO: ixfe + var miyRw = data.read_shift(2); + data.l += 1; // TODO: top/bot padding + var flags = data.read_shift(1); + data.l = tgt; + if(flags & 0x07) z.level = flags & 0x07; + if(flags & 0x10) z.hidden = true; + if(flags & 0x20) z.hpt = miyRw / 20; + return z; +} +function write_BrtRowHdr(R/*:number*/, range, ws) { + var o = new_buf(17+8*16); + var row = (ws['!rows']||[])[R]||{}; + o.write_shift(4, R); + + o.write_shift(4, 0); /* TODO: ixfe */ + + var miyRw = 0x0140; + if(row.hpx) miyRw = px2pt(row.hpx) * 20; + else if(row.hpt) miyRw = row.hpt * 20; + o.write_shift(2, miyRw); + + o.write_shift(1, 0); /* top/bot padding */ + + var flags = 0x0; + if(row.level) flags |= row.level; + if(row.hidden) flags |= 0x10; + if(row.hpx || row.hpt) flags |= 0x20; + o.write_shift(1, flags); + + o.write_shift(1, 0); /* phonetic guide */ + + /* [MS-XLSB] 2.5.8 BrtColSpan explains the mechanism */ + var ncolspan = 0, lcs = o.l; + o.l += 4; + + var caddr = {r:R, c:0}; + for(var i = 0; i < 16; ++i) { + if((range.s.c > ((i+1) << 10)) || (range.e.c < (i << 10))) continue; + var first = -1, last = -1; + for(var j = (i<<10); j < ((i+1)<<10); ++j) { + caddr.c = j; + var cell = Array.isArray(ws) ? (ws[caddr.r]||[])[caddr.c] : ws[encode_cell(caddr)]; + if(cell) { if(first < 0) first = j; last = j; } + } + if(first < 0) continue; + ++ncolspan; + o.write_shift(4, first); + o.write_shift(4, last); + } + + var l = o.l; + o.l = lcs; + o.write_shift(4, ncolspan); + o.l = l; + + return o.length > o.l ? o.slice(0, o.l) : o; +} +function write_row_header(ba, ws, range, R) { + var o = write_BrtRowHdr(R, range, ws); + if((o.length > 17) || (ws['!rows']||[])[R]) write_record(ba, 0x0000 /* BrtRowHdr */, o); +} + +/* [MS-XLSB] 2.4.820 BrtWsDim */ +var parse_BrtWsDim = parse_UncheckedRfX; +var write_BrtWsDim = write_UncheckedRfX; + +/* [MS-XLSB] 2.4.821 BrtWsFmtInfo */ +function parse_BrtWsFmtInfo(/*::data, length*/) { +} +//function write_BrtWsFmtInfo(ws, o) { } + +/* [MS-XLSB] 2.4.823 BrtWsProp */ +function parse_BrtWsProp(data, length) { + var z = {}; + var f = data[data.l]; ++data.l; + z.above = !(f & 0x40); + z.left = !(f & 0x80); + /* TODO: pull flags */ + data.l += 18; + z.name = parse_XLSBCodeName(data, length - 19); + return z; +} +function write_BrtWsProp(str, outl, o) { + if(o == null) o = new_buf(84+4*str.length); + var f = 0xC0; + if(outl) { + if(outl.above) f &= ~0x40; + if(outl.left) f &= ~0x80; + } + o.write_shift(1, f); + for(var i = 1; i < 3; ++i) o.write_shift(1,0); + write_BrtColor({auto:1}, o); + o.write_shift(-4,-1); + o.write_shift(-4,-1); + write_XLSBCodeName(str, o); + return o.slice(0, o.l); +} + +/* [MS-XLSB] 2.4.306 BrtCellBlank */ +function parse_BrtCellBlank(data) { + var cell = parse_XLSBCell(data); + return [cell]; +} +function write_BrtCellBlank(cell, ncell, o) { + if(o == null) o = new_buf(8); + return write_XLSBCell(ncell, o); +} +function parse_BrtShortBlank(data) { + var cell = parse_XLSBShortCell(data); + return [cell]; +} +function write_BrtShortBlank(cell, ncell, o) { + if(o == null) o = new_buf(4); + return write_XLSBShortCell(ncell, o); +} + +/* [MS-XLSB] 2.4.307 BrtCellBool */ +function parse_BrtCellBool(data) { + var cell = parse_XLSBCell(data); + var fBool = data.read_shift(1); + return [cell, fBool, 'b']; +} +function write_BrtCellBool(cell, ncell, o) { + if(o == null) o = new_buf(9); + write_XLSBCell(ncell, o); + o.write_shift(1, cell.v ? 1 : 0); + return o; +} +function parse_BrtShortBool(data) { + var cell = parse_XLSBShortCell(data); + var fBool = data.read_shift(1); + return [cell, fBool, 'b']; +} +function write_BrtShortBool(cell, ncell, o) { + if(o == null) o = new_buf(5); + write_XLSBShortCell(ncell, o); + o.write_shift(1, cell.v ? 1 : 0); + return o; +} + +/* [MS-XLSB] 2.4.308 BrtCellError */ +function parse_BrtCellError(data) { + var cell = parse_XLSBCell(data); + var bError = data.read_shift(1); + return [cell, bError, 'e']; +} +function write_BrtCellError(cell, ncell, o) { + if(o == null) o = new_buf(9); + write_XLSBCell(ncell, o); + o.write_shift(1, cell.v); + return o; +} +function parse_BrtShortError(data) { + var cell = parse_XLSBShortCell(data); + var bError = data.read_shift(1); + return [cell, bError, 'e']; +} +function write_BrtShortError(cell, ncell, o) { + if(o == null) o = new_buf(8); + write_XLSBShortCell(ncell, o); + o.write_shift(1, cell.v); + o.write_shift(2, 0); + o.write_shift(1, 0); + return o; +} + + +/* [MS-XLSB] 2.4.311 BrtCellIsst */ +function parse_BrtCellIsst(data) { + var cell = parse_XLSBCell(data); + var isst = data.read_shift(4); + return [cell, isst, 's']; +} +function write_BrtCellIsst(cell, ncell, o) { + if(o == null) o = new_buf(12); + write_XLSBCell(ncell, o); + o.write_shift(4, ncell.v); + return o; +} +function parse_BrtShortIsst(data) { + var cell = parse_XLSBShortCell(data); + var isst = data.read_shift(4); + return [cell, isst, 's']; +} +function write_BrtShortIsst(cell, ncell, o) { + if(o == null) o = new_buf(8); + write_XLSBShortCell(ncell, o); + o.write_shift(4, ncell.v); + return o; +} + +/* [MS-XLSB] 2.4.313 BrtCellReal */ +function parse_BrtCellReal(data) { + var cell = parse_XLSBCell(data); + var value = parse_Xnum(data); + return [cell, value, 'n']; +} +function write_BrtCellReal(cell, ncell, o) { + if(o == null) o = new_buf(16); + write_XLSBCell(ncell, o); + write_Xnum(cell.v, o); + return o; +} +function parse_BrtShortReal(data) { + var cell = parse_XLSBShortCell(data); + var value = parse_Xnum(data); + return [cell, value, 'n']; +} +function write_BrtShortReal(cell, ncell, o) { + if(o == null) o = new_buf(12); + write_XLSBShortCell(ncell, o); + write_Xnum(cell.v, o); + return o; +} + +/* [MS-XLSB] 2.4.314 BrtCellRk */ +function parse_BrtCellRk(data) { + var cell = parse_XLSBCell(data); + var value = parse_RkNumber(data); + return [cell, value, 'n']; +} +function write_BrtCellRk(cell, ncell, o) { + if(o == null) o = new_buf(12); + write_XLSBCell(ncell, o); + write_RkNumber(cell.v, o); + return o; +} +function parse_BrtShortRk(data) { + var cell = parse_XLSBShortCell(data); + var value = parse_RkNumber(data); + return [cell, value, 'n']; +} +function write_BrtShortRk(cell, ncell, o) { + if(o == null) o = new_buf(8); + write_XLSBShortCell(ncell, o); + write_RkNumber(cell.v, o); + return o; +} + +/* [MS-XLSB] 2.4.323 BrtCellRString */ +function parse_BrtCellRString(data) { + var cell = parse_XLSBCell(data); + var value = parse_RichStr(data); + return [cell, value, 'is']; +} + +/* [MS-XLSB] 2.4.317 BrtCellSt */ +function parse_BrtCellSt(data) { + var cell = parse_XLSBCell(data); + var value = parse_XLWideString(data); + return [cell, value, 'str']; +} +function write_BrtCellSt(cell, ncell, o) { + if(o == null) o = new_buf(12 + 4 * cell.v.length); + write_XLSBCell(ncell, o); + write_XLWideString(cell.v, o); + return o.length > o.l ? o.slice(0, o.l) : o; +} +function parse_BrtShortSt(data) { + var cell = parse_XLSBShortCell(data); + var value = parse_XLWideString(data); + return [cell, value, 'str']; +} +function write_BrtShortSt(cell, ncell, o) { + if(o == null) o = new_buf(8 + 4 * cell.v.length); + write_XLSBShortCell(ncell, o); + write_XLWideString(cell.v, o); + return o.length > o.l ? o.slice(0, o.l) : o; +} + +/* [MS-XLSB] 2.4.653 BrtFmlaBool */ +function parse_BrtFmlaBool(data, length, opts) { + var end = data.l + length; + var cell = parse_XLSBCell(data); + cell.r = opts['!row']; + var value = data.read_shift(1); + var o = [cell, value, 'b']; + if(opts.cellFormula) { + data.l += 2; + var formula = parse_XLSBCellParsedFormula(data, end - data.l, opts); + o[3] = stringify_formula(formula, null/*range*/, cell, opts.supbooks, opts);/* TODO */ + } + else data.l = end; + return o; +} + +/* [MS-XLSB] 2.4.654 BrtFmlaError */ +function parse_BrtFmlaError(data, length, opts) { + var end = data.l + length; + var cell = parse_XLSBCell(data); + cell.r = opts['!row']; + var value = data.read_shift(1); + var o = [cell, value, 'e']; + if(opts.cellFormula) { + data.l += 2; + var formula = parse_XLSBCellParsedFormula(data, end - data.l, opts); + o[3] = stringify_formula(formula, null/*range*/, cell, opts.supbooks, opts);/* TODO */ + } + else data.l = end; + return o; +} + +/* [MS-XLSB] 2.4.655 BrtFmlaNum */ +function parse_BrtFmlaNum(data, length, opts) { + var end = data.l + length; + var cell = parse_XLSBCell(data); + cell.r = opts['!row']; + var value = parse_Xnum(data); + var o = [cell, value, 'n']; + if(opts.cellFormula) { + data.l += 2; + var formula = parse_XLSBCellParsedFormula(data, end - data.l, opts); + o[3] = stringify_formula(formula, null/*range*/, cell, opts.supbooks, opts);/* TODO */ + } + else data.l = end; + return o; +} + +/* [MS-XLSB] 2.4.656 BrtFmlaString */ +function parse_BrtFmlaString(data, length, opts) { + var end = data.l + length; + var cell = parse_XLSBCell(data); + cell.r = opts['!row']; + var value = parse_XLWideString(data); + var o = [cell, value, 'str']; + if(opts.cellFormula) { + data.l += 2; + var formula = parse_XLSBCellParsedFormula(data, end - data.l, opts); + o[3] = stringify_formula(formula, null/*range*/, cell, opts.supbooks, opts);/* TODO */ + } + else data.l = end; + return o; +} + +/* [MS-XLSB] 2.4.682 BrtMergeCell */ +var parse_BrtMergeCell = parse_UncheckedRfX; +var write_BrtMergeCell = write_UncheckedRfX; +/* [MS-XLSB] 2.4.107 BrtBeginMergeCells */ +function write_BrtBeginMergeCells(cnt, o) { + if(o == null) o = new_buf(4); + o.write_shift(4, cnt); + return o; +} + +/* [MS-XLSB] 2.4.662 BrtHLink */ +function parse_BrtHLink(data, length/*::, opts*/) { + var end = data.l + length; + var rfx = parse_UncheckedRfX(data, 16); + var relId = parse_XLNullableWideString(data); + var loc = parse_XLWideString(data); + var tooltip = parse_XLWideString(data); + var display = parse_XLWideString(data); + data.l = end; + var o = ({rfx:rfx, relId:relId, loc:loc, display:display}/*:any*/); + if(tooltip) o.Tooltip = tooltip; + return o; +} +function write_BrtHLink(l, rId) { + var o = new_buf(50+4*(l[1].Target.length + (l[1].Tooltip || "").length)); + write_UncheckedRfX({s:decode_cell(l[0]), e:decode_cell(l[0])}, o); + write_RelID("rId" + rId, o); + var locidx = l[1].Target.indexOf("#"); + var loc = locidx == -1 ? "" : l[1].Target.slice(locidx+1); + write_XLWideString(loc || "", o); + write_XLWideString(l[1].Tooltip || "", o); + write_XLWideString("", o); + return o.slice(0, o.l); +} + +/* [MS-XLSB] 2.4.692 BrtPane */ +function parse_BrtPane(/*data, length, opts*/) { +} + +/* [MS-XLSB] 2.4.6 BrtArrFmla */ +function parse_BrtArrFmla(data, length, opts) { + var end = data.l + length; + var rfx = parse_RfX(data, 16); + var fAlwaysCalc = data.read_shift(1); + var o = [rfx]; o[2] = fAlwaysCalc; + if(opts.cellFormula) { + var formula = parse_XLSBArrayParsedFormula(data, end - data.l, opts); + o[1] = formula; + } else data.l = end; + return o; +} + +/* [MS-XLSB] 2.4.750 BrtShrFmla */ +function parse_BrtShrFmla(data, length, opts) { + var end = data.l + length; + var rfx = parse_UncheckedRfX(data, 16); + var o = [rfx]; + if(opts.cellFormula) { + var formula = parse_XLSBSharedParsedFormula(data, end - data.l, opts); + o[1] = formula; + data.l = end; + } else data.l = end; + return o; +} + +/* [MS-XLSB] 2.4.323 BrtColInfo */ +/* TODO: once XLS ColInfo is set, combine the functions */ +function write_BrtColInfo(C/*:number*/, col, o) { + if(o == null) o = new_buf(18); + var p = col_obj_w(C, col); + o.write_shift(-4, C); + o.write_shift(-4, C); + o.write_shift(4, (p.width || 10) * 256); + o.write_shift(4, 0/*ixfe*/); // style + var flags = 0; + if(col.hidden) flags |= 0x01; + if(typeof p.width == 'number') flags |= 0x02; + if(col.level) flags |= (col.level << 8); + o.write_shift(2, flags); // bit flag + return o; +} + +/* [MS-XLSB] 2.4.678 BrtMargins */ +var BrtMarginKeys = ["left","right","top","bottom","header","footer"]; +function parse_BrtMargins(data/*::, length, opts*/)/*:Margins*/ { + var margins = ({}/*:any*/); + BrtMarginKeys.forEach(function(k) { margins[k] = parse_Xnum(data, 8); }); + return margins; +} +function write_BrtMargins(margins/*:Margins*/, o) { + if(o == null) o = new_buf(6*8); + default_margins(margins); + BrtMarginKeys.forEach(function(k) { write_Xnum((margins/*:any*/)[k], o); }); + return o; +} + +/* [MS-XLSB] 2.4.299 BrtBeginWsView */ +function parse_BrtBeginWsView(data/*::, length, opts*/) { + var f = data.read_shift(2); + data.l += 28; + return { RTL: f & 0x20 }; +} +function write_BrtBeginWsView(ws, Workbook, o) { + if(o == null) o = new_buf(30); + var f = 0x39c; + if((((Workbook||{}).Views||[])[0]||{}).RTL) f |= 0x20; + o.write_shift(2, f); // bit flag + o.write_shift(4, 0); + o.write_shift(4, 0); // view first row + o.write_shift(4, 0); // view first col + o.write_shift(1, 0); // gridline color ICV + o.write_shift(1, 0); + o.write_shift(2, 0); + o.write_shift(2, 100); // zoom scale + o.write_shift(2, 0); + o.write_shift(2, 0); + o.write_shift(2, 0); + o.write_shift(4, 0); // workbook view id + return o; +} + +/* [MS-XLSB] 2.4.309 BrtCellIgnoreEC */ +function write_BrtCellIgnoreEC(ref) { + var o = new_buf(24); + o.write_shift(4, 4); + o.write_shift(4, 1); + write_UncheckedRfX(ref, o); + return o; +} + +/* [MS-XLSB] 2.4.748 BrtSheetProtection */ +function write_BrtSheetProtection(sp, o) { + if(o == null) o = new_buf(16*4+2); + o.write_shift(2, sp.password ? crypto_CreatePasswordVerifier_Method1(sp.password) : 0); + o.write_shift(4, 1); // this record should not be written if no protection + [ + ["objects", false], // fObjects + ["scenarios", false], // fScenarios + ["formatCells", true], // fFormatCells + ["formatColumns", true], // fFormatColumns + ["formatRows", true], // fFormatRows + ["insertColumns", true], // fInsertColumns + ["insertRows", true], // fInsertRows + ["insertHyperlinks", true], // fInsertHyperlinks + ["deleteColumns", true], // fDeleteColumns + ["deleteRows", true], // fDeleteRows + ["selectLockedCells", false], // fSelLockedCells + ["sort", true], // fSort + ["autoFilter", true], // fAutoFilter + ["pivotTables", true], // fPivotTables + ["selectUnlockedCells", false] // fSelUnlockedCells + ].forEach(function(n) { + /*:: if(o == null) throw "unreachable"; */ + if(n[1]) o.write_shift(4, sp[n[0]] != null && !sp[n[0]] ? 1 : 0); + else o.write_shift(4, sp[n[0]] != null && sp[n[0]] ? 0 : 1); + }); + return o; +} + +function parse_BrtDVal(/*data, length, opts*/) { +} +function parse_BrtDVal14(/*data, length, opts*/) { +} +/* [MS-XLSB] 2.1.7.61 Worksheet */ +function parse_ws_bin(data, _opts, idx, rels, wb/*:WBWBProps*/, themes, styles)/*:Worksheet*/ { + if(!data) return data; + var opts = _opts || {}; + if(!rels) rels = {'!id':{}}; + if(DENSE != null && opts.dense == null) opts.dense = DENSE; + var s/*:Worksheet*/ = (opts.dense ? [] : {}); + + var ref; + var refguess = {s: {r:2000000, c:2000000}, e: {r:0, c:0} }; + + var state/*:Array*/ = []; + var pass = false, end = false; + var row, p, cf, R, C, addr, sstr, rr, cell/*:Cell*/; + var merges/*:Array*/ = []; + opts.biff = 12; + opts['!row'] = 0; + + var ai = 0, af = false; + + var arrayf/*:Array<[Range, string]>*/ = []; + var sharedf = {}; + var supbooks = opts.supbooks || /*::(*/wb/*:: :any)*/.supbooks || ([[]]/*:any*/); + supbooks.sharedf = sharedf; + supbooks.arrayf = arrayf; + supbooks.SheetNames = wb.SheetNames || wb.Sheets.map(function(x) { return x.name; }); + if(!opts.supbooks) { + opts.supbooks = supbooks; + if(wb.Names) for(var i = 0; i < wb.Names.length; ++i) supbooks[0][i+1] = wb.Names[i]; + } + + var colinfo/*:Array*/ = [], rowinfo/*:Array*/ = []; + var seencol = false; + + XLSBRecordEnum[0x0010] = { n:"BrtShortReal", f:parse_BrtShortReal }; + + var cm, vm; + + recordhopper(data, function ws_parse(val, RR, RT) { + if(end) return; + switch(RT) { + case 0x0094: /* 'BrtWsDim' */ + ref = val; break; + case 0x0000: /* 'BrtRowHdr' */ + row = val; + if(opts.sheetRows && opts.sheetRows <= row.r) end=true; + rr = encode_row(R = row.r); + opts['!row'] = row.r; + if(val.hidden || val.hpt || val.level != null) { + if(val.hpt) val.hpx = pt2px(val.hpt); + rowinfo[val.r] = val; + } + break; + + case 0x0002: /* 'BrtCellRk' */ + case 0x0003: /* 'BrtCellError' */ + case 0x0004: /* 'BrtCellBool' */ + case 0x0005: /* 'BrtCellReal' */ + case 0x0006: /* 'BrtCellSt' */ + case 0x0007: /* 'BrtCellIsst' */ + case 0x0008: /* 'BrtFmlaString' */ + case 0x0009: /* 'BrtFmlaNum' */ + case 0x000A: /* 'BrtFmlaBool' */ + case 0x000B: /* 'BrtFmlaError' */ + case 0x000D: /* 'BrtShortRk' */ + case 0x000E: /* 'BrtShortError' */ + case 0x000F: /* 'BrtShortBool' */ + case 0x0010: /* 'BrtShortReal' */ + case 0x0011: /* 'BrtShortSt' */ + case 0x0012: /* 'BrtShortIsst' */ + case 0x003E: /* 'BrtCellRString' */ + p = ({t:val[2]}/*:any*/); + switch(val[2]) { + case 'n': p.v = val[1]; break; + case 's': sstr = strs[val[1]]; p.v = sstr.t; p.r = sstr.r; break; + case 'b': p.v = val[1] ? true : false; break; + case 'e': p.v = val[1]; if(opts.cellText !== false) p.w = BErr[p.v]; break; + case 'str': p.t = 's'; p.v = val[1]; break; + case 'is': p.t = 's'; p.v = val[1].t; break; + } + if((cf = styles.CellXf[val[0].iStyleRef])) safe_format(p,cf.numFmtId,null,opts, themes, styles); + C = val[0].c == -1 ? C + 1 : val[0].c; + if(opts.dense) { if(!s[R]) s[R] = []; s[R][C] = p; } + else s[encode_col(C) + rr] = p; + if(opts.cellFormula) { + af = false; + for(ai = 0; ai < arrayf.length; ++ai) { + var aii = arrayf[ai]; + if(row.r >= aii[0].s.r && row.r <= aii[0].e.r) + if(C >= aii[0].s.c && C <= aii[0].e.c) { + p.F = encode_range(aii[0]); af = true; + } + } + if(!af && val.length > 3) p.f = val[3]; + } + + if(refguess.s.r > row.r) refguess.s.r = row.r; + if(refguess.s.c > C) refguess.s.c = C; + if(refguess.e.r < row.r) refguess.e.r = row.r; + if(refguess.e.c < C) refguess.e.c = C; + if(opts.cellDates && cf && p.t == 'n' && fmt_is_date(table_fmt[cf.numFmtId])) { + var _d = SSF_parse_date_code(p.v); if(_d) { p.t = 'd'; p.v = new Date(_d.y, _d.m-1,_d.d,_d.H,_d.M,_d.S,_d.u); } + } + if(cm) { + if(cm.type == 'XLDAPR') p.D = true; + cm = void 0; + } + if(vm) vm = void 0; + break; + + case 0x0001: /* 'BrtCellBlank' */ + case 0x000C: /* 'BrtShortBlank' */ + if(!opts.sheetStubs || pass) break; + p = ({t:'z',v:void 0}/*:any*/); + C = val[0].c == -1 ? C + 1 : val[0].c; + if(opts.dense) { if(!s[R]) s[R] = []; s[R][C] = p; } + else s[encode_col(C) + rr] = p; + if(refguess.s.r > row.r) refguess.s.r = row.r; + if(refguess.s.c > C) refguess.s.c = C; + if(refguess.e.r < row.r) refguess.e.r = row.r; + if(refguess.e.c < C) refguess.e.c = C; + if(cm) { + if(cm.type == 'XLDAPR') p.D = true; + cm = void 0; + } + if(vm) vm = void 0; + break; + + case 0x00B0: /* 'BrtMergeCell' */ + merges.push(val); break; + + case 0x0031: { /* 'BrtCellMeta' */ + cm = ((opts.xlmeta||{}).Cell||[])[val-1]; + } break; + + case 0x01EE: /* 'BrtHLink' */ + var rel = rels['!id'][val.relId]; + if(rel) { + val.Target = rel.Target; + if(val.loc) val.Target += "#"+val.loc; + val.Rel = rel; + } else if(val.relId == '') { + val.Target = "#" + val.loc; + } + for(R=val.rfx.s.r;R<=val.rfx.e.r;++R) for(C=val.rfx.s.c;C<=val.rfx.e.c;++C) { + if(opts.dense) { + if(!s[R]) s[R] = []; + if(!s[R][C]) s[R][C] = {t:'z',v:undefined}; + s[R][C].l = val; + } else { + addr = encode_cell({c:C,r:R}); + if(!s[addr]) s[addr] = {t:'z',v:undefined}; + s[addr].l = val; + } + } + break; + + case 0x01AA: /* 'BrtArrFmla' */ + if(!opts.cellFormula) break; + arrayf.push(val); + cell = ((opts.dense ? s[R][C] : s[encode_col(C) + rr])/*:any*/); + cell.f = stringify_formula(val[1], refguess, {r:row.r, c:C}, supbooks, opts); + cell.F = encode_range(val[0]); + break; + case 0x01AB: /* 'BrtShrFmla' */ + if(!opts.cellFormula) break; + sharedf[encode_cell(val[0].s)] = val[1]; + cell = (opts.dense ? s[R][C] : s[encode_col(C) + rr]); + cell.f = stringify_formula(val[1], refguess, {r:row.r, c:C}, supbooks, opts); + break; + + /* identical to 'ColInfo' in XLS */ + case 0x003C: /* 'BrtColInfo' */ + if(!opts.cellStyles) break; + while(val.e >= val.s) { + colinfo[val.e--] = { width: val.w/256, hidden: !!(val.flags & 0x01), level: val.level }; + if(!seencol) { seencol = true; find_mdw_colw(val.w/256); } + process_col(colinfo[val.e+1]); + } + break; + + case 0x00A1: /* 'BrtBeginAFilter' */ + s['!autofilter'] = { ref:encode_range(val) }; + break; + + case 0x01DC: /* 'BrtMargins' */ + s['!margins'] = val; + break; + + case 0x0093: /* 'BrtWsProp' */ + if(!wb.Sheets[idx]) wb.Sheets[idx] = {}; + if(val.name) wb.Sheets[idx].CodeName = val.name; + if(val.above || val.left) s['!outline'] = { above: val.above, left: val.left }; + break; + + case 0x0089: /* 'BrtBeginWsView' */ + if(!wb.Views) wb.Views = [{}]; + if(!wb.Views[0]) wb.Views[0] = {}; + if(val.RTL) wb.Views[0].RTL = true; + break; + + case 0x01E5: /* 'BrtWsFmtInfo' */ + break; + + case 0x0040: /* 'BrtDVal' */ + case 0x041D: /* 'BrtDVal14' */ + break; + + case 0x0097: /* 'BrtPane' */ + break; + case 0x0098: /* 'BrtSel' */ + case 0x00AF: /* 'BrtAFilterDateGroupItem' */ + case 0x0284: /* 'BrtActiveX' */ + case 0x0271: /* 'BrtBigName' */ + case 0x0232: /* 'BrtBkHim' */ + case 0x018C: /* 'BrtBrk' */ + case 0x0458: /* 'BrtCFIcon' */ + case 0x047A: /* 'BrtCFRuleExt' */ + case 0x01D7: /* 'BrtCFVO' */ + case 0x041A: /* 'BrtCFVO14' */ + case 0x0289: /* 'BrtCellIgnoreEC' */ + case 0x0451: /* 'BrtCellIgnoreEC14' */ + case 0x024D: /* 'BrtCellSmartTagProperty' */ + case 0x025F: /* 'BrtCellWatch' */ + case 0x0234: /* 'BrtColor' */ + case 0x041F: /* 'BrtColor14' */ + case 0x00A8: /* 'BrtColorFilter' */ + case 0x00AE: /* 'BrtCustomFilter' */ + case 0x049C: /* 'BrtCustomFilter14' */ + case 0x01F3: /* 'BrtDRef' */ + case 0x01FB: /* 'BrtDXF' */ + case 0x0226: /* 'BrtDrawing' */ + case 0x00AB: /* 'BrtDynamicFilter' */ + case 0x00A7: /* 'BrtFilter' */ + case 0x0499: /* 'BrtFilter14' */ + case 0x00A9: /* 'BrtIconFilter' */ + case 0x049D: /* 'BrtIconFilter14' */ + case 0x0227: /* 'BrtLegacyDrawing' */ + case 0x0228: /* 'BrtLegacyDrawingHF' */ + case 0x0295: /* 'BrtListPart' */ + case 0x027F: /* 'BrtOleObject' */ + case 0x01DE: /* 'BrtPageSetup' */ + case 0x0219: /* 'BrtPhoneticInfo' */ + case 0x01DD: /* 'BrtPrintOptions' */ + case 0x0218: /* 'BrtRangeProtection' */ + case 0x044F: /* 'BrtRangeProtection14' */ + case 0x02A8: /* 'BrtRangeProtectionIso' */ + case 0x0450: /* 'BrtRangeProtectionIso14' */ + case 0x0400: /* 'BrtRwDescent' */ + case 0x0297: /* 'BrtSheetCalcProp' */ + case 0x0217: /* 'BrtSheetProtection' */ + case 0x02A6: /* 'BrtSheetProtectionIso' */ + case 0x01F8: /* 'BrtSlc' */ + case 0x0413: /* 'BrtSparkline' */ + case 0x01AC: /* 'BrtTable' */ + case 0x00AA: /* 'BrtTop10Filter' */ + case 0x0C00: /* 'BrtUid' */ + case 0x0032: /* 'BrtValueMeta' */ + case 0x0816: /* 'BrtWebExtension' */ + case 0x0415: /* 'BrtWsFmtInfoEx14' */ + break; + + case 0x0023: /* 'BrtFRTBegin' */ + pass = true; break; + case 0x0024: /* 'BrtFRTEnd' */ + pass = false; break; + case 0x0025: /* 'BrtACBegin' */ + state.push(RT); pass = true; break; + case 0x0026: /* 'BrtACEnd' */ + state.pop(); pass = false; break; + + default: + if(RR.T){/* empty */} + else if(!pass || opts.WTF) throw new Error("Unexpected record 0x" + RT.toString(16)); + } + }, opts); + + delete opts.supbooks; + delete opts['!row']; + + if(!s["!ref"] && (refguess.s.r < 2000000 || ref && (ref.e.r > 0 || ref.e.c > 0 || ref.s.r > 0 || ref.s.c > 0))) s["!ref"] = encode_range(ref || refguess); + if(opts.sheetRows && s["!ref"]) { + var tmpref = safe_decode_range(s["!ref"]); + if(opts.sheetRows <= +tmpref.e.r) { + tmpref.e.r = opts.sheetRows - 1; + if(tmpref.e.r > refguess.e.r) tmpref.e.r = refguess.e.r; + if(tmpref.e.r < tmpref.s.r) tmpref.s.r = tmpref.e.r; + if(tmpref.e.c > refguess.e.c) tmpref.e.c = refguess.e.c; + if(tmpref.e.c < tmpref.s.c) tmpref.s.c = tmpref.e.c; + s["!fullref"] = s["!ref"]; + s["!ref"] = encode_range(tmpref); + } + } + if(merges.length > 0) s["!merges"] = merges; + if(colinfo.length > 0) s["!cols"] = colinfo; + if(rowinfo.length > 0) s["!rows"] = rowinfo; + return s; +} + +/* TODO: something useful -- this is a stub */ +function write_ws_bin_cell(ba/*:BufArray*/, cell/*:Cell*/, R/*:number*/, C/*:number*/, opts, ws/*:Worksheet*/, last_seen/*:boolean*/)/*:boolean*/ { + if(cell.v === undefined) return false; + var vv = ""; + switch(cell.t) { + case 'b': vv = cell.v ? "1" : "0"; break; + case 'd': // no BrtCellDate :( + cell = dup(cell); + cell.z = cell.z || table_fmt[14]; + cell.v = datenum(parseDate(cell.v)); cell.t = 'n'; + break; + /* falls through */ + case 'n': case 'e': vv = ''+cell.v; break; + default: vv = cell.v; break; + } + var o/*:any*/ = ({r:R, c:C}/*:any*/); + /* TODO: cell style */ + o.s = get_cell_style(opts.cellXfs, cell, opts); + if(cell.l) ws['!links'].push([encode_cell(o), cell.l]); + if(cell.c) ws['!comments'].push([encode_cell(o), cell.c]); + switch(cell.t) { + case 's': case 'str': + if(opts.bookSST) { + vv = get_sst_id(opts.Strings, (cell.v/*:any*/), opts.revStrings); + o.t = "s"; o.v = vv; + if(last_seen) write_record(ba, 0x0012 /* BrtShortIsst */, write_BrtShortIsst(cell, o)); + else write_record(ba, 0x0007 /* BrtCellIsst */, write_BrtCellIsst(cell, o)); + } else { + o.t = "str"; + if(last_seen) write_record(ba, 0x0011 /* BrtShortSt */, write_BrtShortSt(cell, o)); + else write_record(ba, 0x0006 /* BrtCellSt */, write_BrtCellSt(cell, o)); + } + return true; + case 'n': + /* TODO: determine threshold for Real vs RK */ + if(cell.v == (cell.v | 0) && cell.v > -1000 && cell.v < 1000) { + if(last_seen) write_record(ba, 0x000D /* BrtShortRk */, write_BrtShortRk(cell, o)); + else write_record(ba, 0x0002 /* BrtCellRk */, write_BrtCellRk(cell, o)); + } else { + if(last_seen) write_record(ba, 0x0010 /* BrtShortReal */, write_BrtShortReal(cell, o)); + else write_record(ba, 0x0005 /* BrtCellReal */, write_BrtCellReal(cell, o)); + } return true; + case 'b': + o.t = "b"; + if(last_seen) write_record(ba, 0x000F /* BrtShortBool */, write_BrtShortBool(cell, o)); + else write_record(ba, 0x0004 /* BrtCellBool */, write_BrtCellBool(cell, o)); + return true; + case 'e': + o.t = "e"; + if(last_seen) write_record(ba, 0x000E /* BrtShortError */, write_BrtShortError(cell, o)); + else write_record(ba, 0x0003 /* BrtCellError */, write_BrtCellError(cell, o)); + return true; + } + if(last_seen) write_record(ba, 0x000C /* BrtShortBlank */, write_BrtShortBlank(cell, o)); + else write_record(ba, 0x0001 /* BrtCellBlank */, write_BrtCellBlank(cell, o)); + return true; +} + +function write_CELLTABLE(ba, ws/*:Worksheet*/, idx/*:number*/, opts/*::, wb:Workbook*/) { + var range = safe_decode_range(ws['!ref'] || "A1"), ref, rr = "", cols/*:Array*/ = []; + write_record(ba, 0x0091 /* BrtBeginSheetData */); + var dense = Array.isArray(ws); + var cap = range.e.r; + if(ws['!rows']) cap = Math.max(range.e.r, ws['!rows'].length - 1); + for(var R = range.s.r; R <= cap; ++R) { + rr = encode_row(R); + /* [ACCELLTABLE] */ + /* BrtRowHdr */ + write_row_header(ba, ws, range, R); + var last_seen = false; + if(R <= range.e.r) for(var C = range.s.c; C <= range.e.c; ++C) { + /* *16384CELL */ + if(R === range.s.r) cols[C] = encode_col(C); + ref = cols[C] + rr; + var cell = dense ? (ws[R]||[])[C] : ws[ref]; + if(!cell) { last_seen = false; continue; } + /* write cell */ + last_seen = write_ws_bin_cell(ba, cell, R, C, opts, ws, last_seen); + } + } + write_record(ba, 0x0092 /* BrtEndSheetData */); +} + +function write_MERGECELLS(ba, ws/*:Worksheet*/) { + if(!ws || !ws['!merges']) return; + write_record(ba, 0x00B1 /* BrtBeginMergeCells */, write_BrtBeginMergeCells(ws['!merges'].length)); + ws['!merges'].forEach(function(m) { write_record(ba, 0x00B0 /* BrtMergeCell */, write_BrtMergeCell(m)); }); + write_record(ba, 0x00B2 /* BrtEndMergeCells */); +} + +function write_COLINFOS(ba, ws/*:Worksheet*//*::, idx:number, opts, wb:Workbook*/) { + if(!ws || !ws['!cols']) return; + write_record(ba, 0x0186 /* BrtBeginColInfos */); + ws['!cols'].forEach(function(m, i) { if(m) write_record(ba, 0x003C /* 'BrtColInfo' */, write_BrtColInfo(i, m)); }); + write_record(ba, 0x0187 /* BrtEndColInfos */); +} + +function write_IGNOREECS(ba, ws/*:Worksheet*/) { + if(!ws || !ws['!ref']) return; + write_record(ba, 0x0288 /* BrtBeginCellIgnoreECs */); + write_record(ba, 0x0289 /* BrtCellIgnoreEC */, write_BrtCellIgnoreEC(safe_decode_range(ws['!ref']))); + write_record(ba, 0x028A /* BrtEndCellIgnoreECs */); +} + +function write_HLINKS(ba, ws/*:Worksheet*/, rels) { + /* *BrtHLink */ + ws['!links'].forEach(function(l) { + if(!l[1].Target) return; + var rId = add_rels(rels, -1, l[1].Target.replace(/#.*$/, ""), RELS.HLINK); + write_record(ba, 0x01EE /* BrtHLink */, write_BrtHLink(l, rId)); + }); + delete ws['!links']; +} +function write_LEGACYDRAWING(ba, ws/*:Worksheet*/, idx/*:number*/, rels) { + /* [BrtLegacyDrawing] */ + if(ws['!comments'].length > 0) { + var rId = add_rels(rels, -1, "../drawings/vmlDrawing" + (idx+1) + ".vml", RELS.VML); + write_record(ba, 0x0227 /* BrtLegacyDrawing */, write_RelID("rId" + rId)); + ws['!legacy'] = rId; + } +} + +function write_AUTOFILTER(ba, ws, wb, idx) { + if(!ws['!autofilter']) return; + var data = ws['!autofilter']; + var ref = typeof data.ref === "string" ? data.ref : encode_range(data.ref); + + /* Update FilterDatabase defined name for the worksheet */ + if(!wb.Workbook) wb.Workbook = ({Sheets:[]}/*:any*/); + if(!wb.Workbook.Names) wb.Workbook.Names = []; + var names/*: Array */ = wb.Workbook.Names; + var range = decode_range(ref); + if(range.s.r == range.e.r) { range.e.r = decode_range(ws["!ref"]).e.r; ref = encode_range(range); } + for(var i = 0; i < names.length; ++i) { + var name = names[i]; + if(name.Name != '_xlnm._FilterDatabase') continue; + if(name.Sheet != idx) continue; + name.Ref = "'" + wb.SheetNames[idx] + "'!" + ref; break; + } + if(i == names.length) names.push({ Name: '_xlnm._FilterDatabase', Sheet: idx, Ref: "'" + wb.SheetNames[idx] + "'!" + ref }); + + write_record(ba, 0x00A1 /* BrtBeginAFilter */, write_UncheckedRfX(safe_decode_range(ref))); + /* *FILTERCOLUMN */ + /* [SORTSTATE] */ + /* BrtEndAFilter */ + write_record(ba, 0x00A2 /* BrtEndAFilter */); +} + +function write_WSVIEWS2(ba, ws, Workbook) { + write_record(ba, 0x0085 /* BrtBeginWsViews */); + { /* 1*WSVIEW2 */ + /* [ACUID] */ + write_record(ba, 0x0089 /* BrtBeginWsView */, write_BrtBeginWsView(ws, Workbook)); + /* [BrtPane] */ + /* *4BrtSel */ + /* *4SXSELECT */ + /* *FRT */ + write_record(ba, 0x008A /* BrtEndWsView */); + } + /* *FRT */ + write_record(ba, 0x0086 /* BrtEndWsViews */); +} + +function write_WSFMTINFO(/*::ba, ws*/) { + /* [ACWSFMTINFO] */ + // write_record(ba, 0x01E5 /* BrtWsFmtInfo */, write_BrtWsFmtInfo(ws)); +} + +function write_SHEETPROTECT(ba, ws) { + if(!ws['!protect']) return; + /* [BrtSheetProtectionIso] */ + write_record(ba, 0x0217 /* BrtSheetProtection */, write_BrtSheetProtection(ws['!protect'])); +} + +function write_ws_bin(idx/*:number*/, opts, wb/*:Workbook*/, rels) { + var ba = buf_array(); + var s = wb.SheetNames[idx], ws = wb.Sheets[s] || {}; + var c/*:string*/ = s; try { if(wb && wb.Workbook) c = wb.Workbook.Sheets[idx].CodeName || c; } catch(e) {} + var r = safe_decode_range(ws['!ref'] || "A1"); + if(r.e.c > 0x3FFF || r.e.r > 0xFFFFF) { + if(opts.WTF) throw new Error("Range " + (ws['!ref'] || "A1") + " exceeds format limit A1:XFD1048576"); + r.e.c = Math.min(r.e.c, 0x3FFF); + r.e.r = Math.min(r.e.c, 0xFFFFF); + } + ws['!links'] = []; + /* passed back to write_zip and removed there */ + ws['!comments'] = []; + write_record(ba, 0x0081 /* BrtBeginSheet */); + if(wb.vbaraw || ws['!outline']) write_record(ba, 0x0093 /* BrtWsProp */, write_BrtWsProp(c, ws['!outline'])); + write_record(ba, 0x0094 /* BrtWsDim */, write_BrtWsDim(r)); + write_WSVIEWS2(ba, ws, wb.Workbook); + write_WSFMTINFO(ba, ws); + write_COLINFOS(ba, ws, idx, opts, wb); + write_CELLTABLE(ba, ws, idx, opts, wb); + /* [BrtSheetCalcProp] */ + write_SHEETPROTECT(ba, ws); + /* *([BrtRangeProtectionIso] BrtRangeProtection) */ + /* [SCENMAN] */ + write_AUTOFILTER(ba, ws, wb, idx); + /* [SORTSTATE] */ + /* [DCON] */ + /* [USERSHVIEWS] */ + write_MERGECELLS(ba, ws); + /* [BrtPhoneticInfo] */ + /* *CONDITIONALFORMATTING */ + /* [DVALS] */ + write_HLINKS(ba, ws, rels); + /* [BrtPrintOptions] */ + if(ws['!margins']) write_record(ba, 0x01DC /* BrtMargins */, write_BrtMargins(ws['!margins'])); + /* [BrtPageSetup] */ + /* [HEADERFOOTER] */ + /* [RWBRK] */ + /* [COLBRK] */ + /* *BrtBigName */ + /* [CELLWATCHES] */ + if(!opts || opts.ignoreEC || (opts.ignoreEC == (void 0))) write_IGNOREECS(ba, ws); + /* [SMARTTAGS] */ + /* [BrtDrawing] */ + write_LEGACYDRAWING(ba, ws, idx, rels); + /* [BrtLegacyDrawingHF] */ + /* [BrtBkHim] */ + /* [OLEOBJECTS] */ + /* [ACTIVEXCONTROLS] */ + /* [WEBPUBITEMS] */ + /* [LISTPARTS] */ + /* FRTWORKSHEET */ + write_record(ba, 0x0082 /* BrtEndSheet */); + return ba.end(); +} +function parse_Cache(data/*:string*/)/*:[Array, string, ?string]*/ { + var col/*:Array*/ = []; + var num = data.match(/^/); + var f; + + /* 21.2.2.150 pt CT_NumVal */ + (data.match(/(.*?)<\/c:pt>/mg)||[]).forEach(function(pt) { + var q = pt.match(/(.*)<\/c:v><\/c:pt>/); + if(!q) return; + col[+q[1]] = num ? +q[2] : q[2]; + }); + + /* 21.2.2.71 formatCode CT_Xstring */ + var nf = unescapexml((data.match(/([\s\S]*?)<\/c:formatCode>/) || ["","General"])[1]); + + (data.match(/(.*?)<\/c:f>/mg)||[]).forEach(function(F) { f = F.replace(/<.*?>/g,""); }); + + return [col, nf, f]; +} + +/* 21.2 DrawingML - Charts */ +function parse_chart(data/*:?string*/, name/*:string*/, opts, rels, wb, csheet) { + var cs/*:Worksheet*/ = ((csheet || {"!type":"chart"})/*:any*/); + if(!data) return csheet; + /* 21.2.2.27 chart CT_Chart */ + + var C = 0, R = 0, col = "A"; + var refguess = {s: {r:2000000, c:2000000}, e: {r:0, c:0} }; + + /* 21.2.2.120 numCache CT_NumData */ + (data.match(/[\s\S]*?<\/c:numCache>/gm)||[]).forEach(function(nc) { + var cache = parse_Cache(nc); + refguess.s.r = refguess.s.c = 0; + refguess.e.c = C; + col = encode_col(C); + cache[0].forEach(function(n,i) { + cs[col + encode_row(i)] = {t:'n', v:n, z:cache[1] }; + R = i; + }); + if(refguess.e.r < R) refguess.e.r = R; + ++C; + }); + if(C > 0) cs["!ref"] = encode_range(refguess); + return cs; +} +/* 18.3 Worksheets also covers Chartsheets */ +function parse_cs_xml(data/*:?string*/, opts, idx/*:number*/, rels, wb/*::, themes, styles*/)/*:Worksheet*/ { + if(!data) return data; + /* 18.3.1.12 chartsheet CT_ChartSheet */ + if(!rels) rels = {'!id':{}}; + var s = ({'!type':"chart", '!drawel':null, '!rel':""}/*:any*/); + var m; + + /* 18.3.1.83 sheetPr CT_ChartsheetPr */ + var sheetPr = data.match(sheetprregex); + if(sheetPr) parse_ws_xml_sheetpr(sheetPr[0], s, wb, idx); + + /* 18.3.1.36 drawing CT_Drawing */ + if((m = data.match(/drawing r:id="(.*?)"/))) s['!rel'] = m[1]; + + if(rels['!id'][s['!rel']]) s['!drawel'] = rels['!id'][s['!rel']]; + return s; +} +function write_cs_xml(idx/*:number*/, opts, wb/*:Workbook*/, rels)/*:string*/ { + var o = [XML_HEADER, writextag('chartsheet', null, { + 'xmlns': XMLNS_main[0], + 'xmlns:r': XMLNS.r + })]; + o[o.length] = writextag("drawing", null, {"r:id": "rId1"}); + add_rels(rels, -1, "../drawings/drawing" + (idx+1) + ".xml", RELS.DRAW); + if(o.length>2) { o[o.length] = (''); o[1]=o[1].replace("/>",">"); } + return o.join(""); +} + +/* [MS-XLSB] 2.4.331 BrtCsProp */ +function parse_BrtCsProp(data, length/*:number*/) { + data.l += 10; + var name = parse_XLWideString(data, length - 10); + return { name: name }; +} + +/* [MS-XLSB] 2.1.7.7 Chart Sheet */ +function parse_cs_bin(data, opts, idx/*:number*/, rels, wb/*::, themes, styles*/)/*:Worksheet*/ { + if(!data) return data; + if(!rels) rels = {'!id':{}}; + var s = {'!type':"chart", '!drawel':null, '!rel':""}; + var state/*:Array*/ = []; + var pass = false; + recordhopper(data, function cs_parse(val, R, RT) { + switch(RT) { + + case 0x0226: /* 'BrtDrawing' */ + s['!rel'] = val; break; + + case 0x028B: /* 'BrtCsProp' */ + if(!wb.Sheets[idx]) wb.Sheets[idx] = {}; + if(val.name) wb.Sheets[idx].CodeName = val.name; + break; + + case 0x0232: /* 'BrtBkHim' */ + case 0x028C: /* 'BrtCsPageSetup' */ + case 0x029D: /* 'BrtCsProtection' */ + case 0x02A7: /* 'BrtCsProtectionIso' */ + case 0x0227: /* 'BrtLegacyDrawing' */ + case 0x0228: /* 'BrtLegacyDrawingHF' */ + case 0x01DC: /* 'BrtMargins' */ + case 0x0C00: /* 'BrtUid' */ + break; + + case 0x0023: /* 'BrtFRTBegin' */ + pass = true; break; + case 0x0024: /* 'BrtFRTEnd' */ + pass = false; break; + case 0x0025: /* 'BrtACBegin' */ + state.push(RT); break; + case 0x0026: /* 'BrtACEnd' */ + state.pop(); break; + + default: + if(R.T > 0) state.push(RT); + else if(R.T < 0) state.pop(); + else if(!pass || opts.WTF) throw new Error("Unexpected record 0x" + RT.toString(16)); + } + }, opts); + + if(rels['!id'][s['!rel']]) s['!drawel'] = rels['!id'][s['!rel']]; + return s; +} +function write_cs_bin(/*::idx:number, opts, wb:Workbook, rels*/) { + var ba = buf_array(); + write_record(ba, 0x0081 /* BrtBeginSheet */); + /* [BrtCsProp] */ + /* CSVIEWS */ + /* [[BrtCsProtectionIso] BrtCsProtection] */ + /* [USERCSVIEWS] */ + /* [BrtMargins] */ + /* [BrtCsPageSetup] */ + /* [HEADERFOOTER] */ + /* BrtDrawing */ + /* [BrtLegacyDrawing] */ + /* [BrtLegacyDrawingHF] */ + /* [BrtBkHim] */ + /* [WEBPUBITEMS] */ + /* FRTCHARTSHEET */ + write_record(ba, 0x0082 /* BrtEndSheet */); + return ba.end(); +} +/* 18.2.28 (CT_WorkbookProtection) Defaults */ +var WBPropsDef = [ + ['allowRefreshQuery', false, "bool"], + ['autoCompressPictures', true, "bool"], + ['backupFile', false, "bool"], + ['checkCompatibility', false, "bool"], + ['CodeName', ''], + ['date1904', false, "bool"], + ['defaultThemeVersion', 0, "int"], + ['filterPrivacy', false, "bool"], + ['hidePivotFieldList', false, "bool"], + ['promptedSolutions', false, "bool"], + ['publishItems', false, "bool"], + ['refreshAllConnections', false, "bool"], + ['saveExternalLinkValues', true, "bool"], + ['showBorderUnselectedTables', true, "bool"], + ['showInkAnnotation', true, "bool"], + ['showObjects', 'all'], + ['showPivotChartFilter', false, "bool"], + ['updateLinks', 'userSet'] +]; + +/* 18.2.30 (CT_BookView) Defaults */ +var WBViewDef = [ + ['activeTab', 0, "int"], + ['autoFilterDateGrouping', true, "bool"], + ['firstSheet', 0, "int"], + ['minimized', false, "bool"], + ['showHorizontalScroll', true, "bool"], + ['showSheetTabs', true, "bool"], + ['showVerticalScroll', true, "bool"], + ['tabRatio', 600, "int"], + ['visibility', 'visible'] + //window{Height,Width}, {x,y}Window +]; + +/* 18.2.19 (CT_Sheet) Defaults */ +var SheetDef = [ + //['state', 'visible'] +]; + +/* 18.2.2 (CT_CalcPr) Defaults */ +var CalcPrDef = [ + ['calcCompleted', 'true'], + ['calcMode', 'auto'], + ['calcOnSave', 'true'], + ['concurrentCalc', 'true'], + ['fullCalcOnLoad', 'false'], + ['fullPrecision', 'true'], + ['iterate', 'false'], + ['iterateCount', '100'], + ['iterateDelta', '0.001'], + ['refMode', 'A1'] +]; + +/* 18.2.3 (CT_CustomWorkbookView) Defaults */ +/*var CustomWBViewDef = [ + ['autoUpdate', 'false'], + ['changesSavedWin', 'false'], + ['includeHiddenRowCol', 'true'], + ['includePrintSettings', 'true'], + ['maximized', 'false'], + ['minimized', 'false'], + ['onlySync', 'false'], + ['personalView', 'false'], + ['showComments', 'commIndicator'], + ['showFormulaBar', 'true'], + ['showHorizontalScroll', 'true'], + ['showObjects', 'all'], + ['showSheetTabs', 'true'], + ['showStatusbar', 'true'], + ['showVerticalScroll', 'true'], + ['tabRatio', '600'], + ['xWindow', '0'], + ['yWindow', '0'] +];*/ + +function push_defaults_array(target, defaults) { + for(var j = 0; j != target.length; ++j) { var w = target[j]; + for(var i=0; i != defaults.length; ++i) { var z = defaults[i]; + if(w[z[0]] == null) w[z[0]] = z[1]; + else switch(z[2]) { + case "bool": if(typeof w[z[0]] == "string") w[z[0]] = parsexmlbool(w[z[0]]); break; + case "int": if(typeof w[z[0]] == "string") w[z[0]] = parseInt(w[z[0]], 10); break; + } + } + } +} +function push_defaults(target, defaults) { + for(var i = 0; i != defaults.length; ++i) { var z = defaults[i]; + if(target[z[0]] == null) target[z[0]] = z[1]; + else switch(z[2]) { + case "bool": if(typeof target[z[0]] == "string") target[z[0]] = parsexmlbool(target[z[0]]); break; + case "int": if(typeof target[z[0]] == "string") target[z[0]] = parseInt(target[z[0]], 10); break; + } + } +} + +function parse_wb_defaults(wb) { + push_defaults(wb.WBProps, WBPropsDef); + push_defaults(wb.CalcPr, CalcPrDef); + + push_defaults_array(wb.WBView, WBViewDef); + push_defaults_array(wb.Sheets, SheetDef); + + _ssfopts.date1904 = parsexmlbool(wb.WBProps.date1904); +} + +function safe1904(wb/*:Workbook*/)/*:string*/ { + /* TODO: store date1904 somewhere else */ + if(!wb.Workbook) return "false"; + if(!wb.Workbook.WBProps) return "false"; + return parsexmlbool(wb.Workbook.WBProps.date1904) ? "true" : "false"; +} + +var badchars = /*#__PURE__*/"][*?\/\\".split(""); +function check_ws_name(n/*:string*/, safe/*:?boolean*/)/*:boolean*/ { + if(n.length > 31) { if(safe) return false; throw new Error("Sheet names cannot exceed 31 chars"); } + var _good = true; + badchars.forEach(function(c) { + if(n.indexOf(c) == -1) return; + if(!safe) throw new Error("Sheet name cannot contain : \\ / ? * [ ]"); + _good = false; + }); + return _good; +} +function check_wb_names(N, S, codes) { + N.forEach(function(n,i) { + check_ws_name(n); + for(var j = 0; j < i; ++j) if(n == N[j]) throw new Error("Duplicate Sheet Name: " + n); + if(codes) { + var cn = (S && S[i] && S[i].CodeName) || n; + if(cn.charCodeAt(0) == 95 && cn.length > 22) throw new Error("Bad Code Name: Worksheet" + cn); + } + }); +} +function check_wb(wb) { + if(!wb || !wb.SheetNames || !wb.Sheets) throw new Error("Invalid Workbook"); + if(!wb.SheetNames.length) throw new Error("Workbook is empty"); + var Sheets = (wb.Workbook && wb.Workbook.Sheets) || []; + check_wb_names(wb.SheetNames, Sheets, !!wb.vbaraw); + for(var i = 0; i < wb.SheetNames.length; ++i) check_ws(wb.Sheets[wb.SheetNames[i]], wb.SheetNames[i], i); + /* TODO: validate workbook */ +} +/* 18.2 Workbook */ +var wbnsregex = /<\w+:workbook/; +function parse_wb_xml(data, opts)/*:WorkbookFile*/ { + if(!data) throw new Error("Could not find file"); + var wb = /*::(*/{ AppVersion:{}, WBProps:{}, WBView:[], Sheets:[], CalcPr:{}, Names:[], xmlns: "" }/*::)*/; + var pass = false, xmlns = "xmlns"; + var dname = {}, dnstart = 0; + data.replace(tagregex, function xml_wb(x, idx) { + var y/*:any*/ = parsexmltag(x); + switch(strip_ns(y[0])) { + case '': break; + + /* 18.2.13 fileVersion CT_FileVersion ? */ + case '': case '': break; + + /* 18.2.12 fileSharing CT_FileSharing ? */ + case '': break; + + /* 18.2.28 workbookPr CT_WorkbookPr ? */ + case '': + WBPropsDef.forEach(function(w) { + if(y[w[0]] == null) return; + switch(w[2]) { + case "bool": wb.WBProps[w[0]] = parsexmlbool(y[w[0]]); break; + case "int": wb.WBProps[w[0]] = parseInt(y[w[0]], 10); break; + default: wb.WBProps[w[0]] = y[w[0]]; + } + }); + if(y.codeName) wb.WBProps.CodeName = utf8read(y.codeName); + break; + case '': break; + + /* 18.2.29 workbookProtection CT_WorkbookProtection ? */ + case '': break; + + /* 18.2.1 bookViews CT_BookViews ? */ + case '': case '': break; + /* 18.2.30 workbookView CT_BookView + */ + case '': delete y[0]; wb.WBView.push(y); break; + case '': break; + + /* 18.2.20 sheets CT_Sheets 1 */ + case '': case '': break; // aggregate sheet + /* 18.2.19 sheet CT_Sheet + */ + case '': break; + + /* 18.2.15 functionGroups CT_FunctionGroups ? */ + case '': break; + /* 18.2.14 functionGroup CT_FunctionGroup + */ + case '': case '': break; + /* 18.2.8 externalReference CT_ExternalReference + */ + case '': break; + case '': case '': pass=false; break; + /* 18.2.5 definedName CT_DefinedName + */ + case '': { + dname.Ref = unescapexml(utf8read(data.slice(dnstart, idx))); + wb.Names.push(dname); + } break; + case '': break; + + /* 18.2.2 calcPr CT_CalcPr ? */ + case '': delete y[0]; wb.CalcPr = y; break; + case '': break; + + /* 18.2.16 oleSize CT_OleSize ? (ref required) */ + case '': case '': case '': break; + + /* 18.2.18 pivotCaches CT_PivotCaches ? */ + case '': case '': case '': break; + + /* 18.2.23 smartTagTypes CT_SmartTagTypes ? */ + case '': case '': break; + /* 18.2.22 smartTagType CT_SmartTagType ? */ + case '': break; + + /* 18.2.11 fileRecoveryPr CT_FileRecoveryPr ? */ + case '': break; + + /* 18.2.26 webPublishObjects CT_WebPublishObjects ? */ + case '': case '': break; + /* 18.2.25 webPublishObject CT_WebPublishObject ? */ + case '': case '': case '': break; + /* 18.2.7 ext CT_Extension + */ + case '': pass=false; break; + + /* Others */ + case '': pass=true; break; + case '': pass=false; break; + + /* TODO */ + case ' 0); + + /* fileVersion */ + /* fileSharing */ + + var workbookPr/*:any*/ = ({codeName:"ThisWorkbook"}/*:any*/); + if(wb.Workbook && wb.Workbook.WBProps) { + WBPropsDef.forEach(function(x) { + /*:: if(!wb.Workbook || !wb.Workbook.WBProps) throw "unreachable"; */ + if((wb.Workbook.WBProps[x[0]]/*:any*/) == null) return; + if((wb.Workbook.WBProps[x[0]]/*:any*/) == x[1]) return; + workbookPr[x[0]] = (wb.Workbook.WBProps[x[0]]/*:any*/); + }); + /*:: if(!wb.Workbook || !wb.Workbook.WBProps) throw "unreachable"; */ + if(wb.Workbook.WBProps.CodeName) { workbookPr.codeName = wb.Workbook.WBProps.CodeName; delete workbookPr.CodeName; } + } + o[o.length] = (writextag('workbookPr', null, workbookPr)); + + /* workbookProtection */ + + var sheets = wb.Workbook && wb.Workbook.Sheets || []; + var i = 0; + + /* bookViews only written if first worksheet is hidden */ + if(sheets && sheets[0] && !!sheets[0].Hidden) { + o[o.length] = ""; + for(i = 0; i != wb.SheetNames.length; ++i) { + if(!sheets[i]) break; + if(!sheets[i].Hidden) break; + } + if(i == wb.SheetNames.length) i = 0; + o[o.length] = ''; + o[o.length] = ""; + } + + o[o.length] = ""; + for(i = 0; i != wb.SheetNames.length; ++i) { + var sht = ({name:escapexml(wb.SheetNames[i].slice(0,31))}/*:any*/); + sht.sheetId = ""+(i+1); + sht["r:id"] = "rId"+(i+1); + if(sheets[i]) switch(sheets[i].Hidden) { + case 1: sht.state = "hidden"; break; + case 2: sht.state = "veryHidden"; break; + } + o[o.length] = (writextag('sheet',null,sht)); + } + o[o.length] = ""; + + /* functionGroups */ + /* externalReferences */ + + if(write_names) { + o[o.length] = ""; + if(wb.Workbook && wb.Workbook.Names) wb.Workbook.Names.forEach(function(n) { + var d/*:any*/ = {name:n.Name}; + if(n.Comment) d.comment = n.Comment; + if(n.Sheet != null) d.localSheetId = ""+n.Sheet; + if(n.Hidden) d.hidden = "1"; + if(!n.Ref) return; + o[o.length] = writextag('definedName', escapexml(n.Ref), d); + }); + o[o.length] = ""; + } + + /* calcPr */ + /* oleSize */ + /* customWorkbookViews */ + /* pivotCaches */ + /* smartTagPr */ + /* smartTagTypes */ + /* webPublishing */ + /* fileRecoveryPr */ + /* webPublishObjects */ + /* extLst */ + + if(o.length>2){ o[o.length] = ''; o[1]=o[1].replace("/>",">"); } + return o.join(""); +} +/* [MS-XLSB] 2.4.304 BrtBundleSh */ +function parse_BrtBundleSh(data, length/*:number*/) { + var z = {}; + z.Hidden = data.read_shift(4); //hsState ST_SheetState + z.iTabID = data.read_shift(4); + z.strRelID = parse_RelID(data,length-8); + z.name = parse_XLWideString(data); + return z; +} +function write_BrtBundleSh(data, o) { + if(!o) o = new_buf(127); + o.write_shift(4, data.Hidden); + o.write_shift(4, data.iTabID); + write_RelID(data.strRelID, o); + write_XLWideString(data.name.slice(0,31), o); + return o.length > o.l ? o.slice(0, o.l) : o; +} + +/* [MS-XLSB] 2.4.815 BrtWbProp */ +function parse_BrtWbProp(data, length)/*:WBProps*/ { + var o/*:WBProps*/ = ({}/*:any*/); + var flags = data.read_shift(4); + o.defaultThemeVersion = data.read_shift(4); + var strName = (length > 8) ? parse_XLWideString(data) : ""; + if(strName.length > 0) o.CodeName = strName; + o.autoCompressPictures = !!(flags & 0x10000); + o.backupFile = !!(flags & 0x40); + o.checkCompatibility = !!(flags & 0x1000); + o.date1904 = !!(flags & 0x01); + o.filterPrivacy = !!(flags & 0x08); + o.hidePivotFieldList = !!(flags & 0x400); + o.promptedSolutions = !!(flags & 0x10); + o.publishItems = !!(flags & 0x800); + o.refreshAllConnections = !!(flags & 0x40000); + o.saveExternalLinkValues = !!(flags & 0x80); + o.showBorderUnselectedTables = !!(flags & 0x04); + o.showInkAnnotation = !!(flags & 0x20); + o.showObjects = ["all", "placeholders", "none"][(flags >> 13) & 0x03]; + o.showPivotChartFilter = !!(flags & 0x8000); + o.updateLinks = ["userSet", "never", "always"][(flags >> 8) & 0x03]; + return o; +} +function write_BrtWbProp(data/*:?WBProps*/, o) { + if(!o) o = new_buf(72); + var flags = 0; + if(data) { + /* TODO: mirror parse_BrtWbProp fields */ + if(data.filterPrivacy) flags |= 0x08; + } + o.write_shift(4, flags); + o.write_shift(4, 0); + write_XLSBCodeName(data && data.CodeName || "ThisWorkbook", o); + return o.slice(0, o.l); +} + +function parse_BrtFRTArchID$(data, length) { + var o = {}; + data.read_shift(4); + o.ArchID = data.read_shift(4); + data.l += length - 8; + return o; +} + +/* [MS-XLSB] 2.4.687 BrtName */ +function parse_BrtName(data, length, opts) { + var end = data.l + length; + data.l += 4; //var flags = data.read_shift(4); + data.l += 1; //var chKey = data.read_shift(1); + var itab = data.read_shift(4); + var name = parse_XLNameWideString(data); + var formula = parse_XLSBNameParsedFormula(data, 0, opts); + var comment = parse_XLNullableWideString(data); + //if(0 /* fProc */) { + // unusedstring1: XLNullableWideString + // description: XLNullableWideString + // helpTopic: XLNullableWideString + // unusedstring2: XLNullableWideString + //} + data.l = end; + var out = ({Name:name, Ptg:formula}/*:any*/); + if(itab < 0xFFFFFFF) out.Sheet = itab; + if(comment) out.Comment = comment; + return out; +} + +/* [MS-XLSB] 2.1.7.61 Workbook */ +function parse_wb_bin(data, opts)/*:WorkbookFile*/ { + var wb = { AppVersion:{}, WBProps:{}, WBView:[], Sheets:[], CalcPr:{}, xmlns: "" }; + var state/*:Array*/ = []; + var pass = false; + + if(!opts) opts = {}; + opts.biff = 12; + + var Names = []; + var supbooks = ([[]]/*:any*/); + supbooks.SheetNames = []; + supbooks.XTI = []; + + XLSBRecordEnum[0x0010] = { n:"BrtFRTArchID$", f:parse_BrtFRTArchID$ }; + + recordhopper(data, function hopper_wb(val, R, RT) { + switch(RT) { + case 0x009C: /* 'BrtBundleSh' */ + supbooks.SheetNames.push(val.name); + wb.Sheets.push(val); break; + + case 0x0099: /* 'BrtWbProp' */ + wb.WBProps = val; break; + + case 0x0027: /* 'BrtName' */ + if(val.Sheet != null) opts.SID = val.Sheet; + val.Ref = stringify_formula(val.Ptg, null, null, supbooks, opts); + delete opts.SID; + delete val.Ptg; + Names.push(val); + break; + case 0x040C: /* 'BrtNameExt' */ break; + + case 0x0165: /* 'BrtSupSelf' */ + case 0x0166: /* 'BrtSupSame' */ + case 0x0163: /* 'BrtSupBookSrc' */ + case 0x029B: /* 'BrtSupAddin' */ + if(!supbooks[0].length) supbooks[0] = [RT, val]; + else supbooks.push([RT, val]); + supbooks[supbooks.length - 1].XTI = []; + break; + case 0x016A: /* 'BrtExternSheet' */ + if(supbooks.length === 0) { supbooks[0] = []; supbooks[0].XTI = []; } + supbooks[supbooks.length - 1].XTI = supbooks[supbooks.length - 1].XTI.concat(val); + supbooks.XTI = supbooks.XTI.concat(val); + break; + case 0x0169: /* 'BrtPlaceholderName' */ + break; + + case 0x0817: /* 'BrtAbsPath15' */ + case 0x009E: /* 'BrtBookView' */ + case 0x008F: /* 'BrtBeginBundleShs' */ + case 0x0298: /* 'BrtBeginFnGroup' */ + case 0x0161: /* 'BrtBeginExternals' */ + break; + + /* case 'BrtModelTimeGroupingCalcCol' */ + case 0x0C00: /* 'BrtUid' */ + case 0x0C01: /* 'BrtRevisionPtr' */ + case 0x0216: /* 'BrtBookProtection' */ + case 0x02A5: /* 'BrtBookProtectionIso' */ + case 0x009D: /* 'BrtCalcProp' */ + case 0x0262: /* 'BrtCrashRecErr' */ + case 0x0802: /* 'BrtDecoupledPivotCacheID' */ + case 0x009B: /* 'BrtFileRecover' */ + case 0x0224: /* 'BrtFileSharing' */ + case 0x02A4: /* 'BrtFileSharingIso' */ + case 0x0080: /* 'BrtFileVersion' */ + case 0x0299: /* 'BrtFnGroup' */ + case 0x0850: /* 'BrtModelRelationship' */ + case 0x084D: /* 'BrtModelTable' */ + case 0x0225: /* 'BrtOleSize' */ + case 0x0805: /* 'BrtPivotTableRef' */ + case 0x0254: /* 'BrtSmartTagType' */ + case 0x081C: /* 'BrtTableSlicerCacheID' */ + case 0x081B: /* 'BrtTableSlicerCacheIDs' */ + case 0x0822: /* 'BrtTimelineCachePivotCacheID' */ + case 0x018D: /* 'BrtUserBookView' */ + case 0x009A: /* 'BrtWbFactoid' */ + case 0x045D: /* 'BrtWbProp14' */ + case 0x0229: /* 'BrtWebOpt' */ + case 0x082B: /* 'BrtWorkBookPr15' */ + break; + + case 0x0023: /* 'BrtFRTBegin' */ + state.push(RT); pass = true; break; + case 0x0024: /* 'BrtFRTEnd' */ + state.pop(); pass = false; break; + case 0x0025: /* 'BrtACBegin' */ + state.push(RT); pass = true; break; + case 0x0026: /* 'BrtACEnd' */ + state.pop(); pass = false; break; + + case 0x0010: /* 'BrtFRTArchID$' */ break; + + default: + if(R.T){/* empty */} + else if(!pass || (opts.WTF && state[state.length-1] != 0x0025 /* BrtACBegin */ && state[state.length-1] != 0x0023 /* BrtFRTBegin */)) throw new Error("Unexpected record 0x" + RT.toString(16)); + } + }, opts); + + parse_wb_defaults(wb); + + // $FlowIgnore + wb.Names = Names; + + (wb/*:any*/).supbooks = supbooks; + return wb; +} + +function write_BUNDLESHS(ba, wb/*::, opts*/) { + write_record(ba, 0x008F /* BrtBeginBundleShs */); + for(var idx = 0; idx != wb.SheetNames.length; ++idx) { + var viz = wb.Workbook && wb.Workbook.Sheets && wb.Workbook.Sheets[idx] && wb.Workbook.Sheets[idx].Hidden || 0; + var d = { Hidden: viz, iTabID: idx+1, strRelID: 'rId' + (idx+1), name: wb.SheetNames[idx] }; + write_record(ba, 0x009C /* BrtBundleSh */, write_BrtBundleSh(d)); + } + write_record(ba, 0x0090 /* BrtEndBundleShs */); +} + +/* [MS-XLSB] 2.4.649 BrtFileVersion */ +function write_BrtFileVersion(data, o) { + if(!o) o = new_buf(127); + for(var i = 0; i != 4; ++i) o.write_shift(4, 0); + write_XLWideString("SheetJS", o); + write_XLWideString(XLSX.version, o); + write_XLWideString(XLSX.version, o); + write_XLWideString("7262", o); + return o.length > o.l ? o.slice(0, o.l) : o; +} + +/* [MS-XLSB] 2.4.301 BrtBookView */ +function write_BrtBookView(idx, o) { + if(!o) o = new_buf(29); + o.write_shift(-4, 0); + o.write_shift(-4, 460); + o.write_shift(4, 28800); + o.write_shift(4, 17600); + o.write_shift(4, 500); + o.write_shift(4, idx); + o.write_shift(4, idx); + var flags = 0x78; + o.write_shift(1, flags); + return o.length > o.l ? o.slice(0, o.l) : o; +} + +function write_BOOKVIEWS(ba, wb/*::, opts*/) { + /* required if hidden tab appears before visible tab */ + if(!wb.Workbook || !wb.Workbook.Sheets) return; + var sheets = wb.Workbook.Sheets; + var i = 0, vistab = -1, hidden = -1; + for(; i < sheets.length; ++i) { + if(!sheets[i] || !sheets[i].Hidden && vistab == -1) vistab = i; + else if(sheets[i].Hidden == 1 && hidden == -1) hidden = i; + } + if(hidden > vistab) return; + write_record(ba, 0x0087 /* BrtBeginBookViews */); + write_record(ba, 0x009E /* BrtBookView */, write_BrtBookView(vistab)); + /* 1*(BrtBookView *FRT) */ + write_record(ba, 0x0088 /* BrtEndBookViews */); +} + +/* [MS-XLSB] 2.4.305 BrtCalcProp */ +/*function write_BrtCalcProp(data, o) { + if(!o) o = new_buf(26); + o.write_shift(4,0); // force recalc + o.write_shift(4,1); + o.write_shift(4,0); + write_Xnum(0, o); + o.write_shift(-4, 1023); + o.write_shift(1, 0x33); + o.write_shift(1, 0x00); + return o; +}*/ + +/* [MS-XLSB] 2.4.646 BrtFileRecover */ +/*function write_BrtFileRecover(data, o) { + if(!o) o = new_buf(1); + o.write_shift(1,0); + return o; +}*/ + +/* [MS-XLSB] 2.1.7.61 Workbook */ +function write_wb_bin(wb, opts) { + var ba = buf_array(); + write_record(ba, 0x0083 /* BrtBeginBook */); + write_record(ba, 0x0080 /* BrtFileVersion */, write_BrtFileVersion()); + /* [[BrtFileSharingIso] BrtFileSharing] */ + write_record(ba, 0x0099 /* BrtWbProp */, write_BrtWbProp(wb.Workbook && wb.Workbook.WBProps || null)); + /* [ACABSPATH] */ + /* [[BrtBookProtectionIso] BrtBookProtection] */ + write_BOOKVIEWS(ba, wb, opts); + write_BUNDLESHS(ba, wb, opts); + /* [FNGROUP] */ + /* [EXTERNALS] */ + /* *BrtName */ + /* write_record(ba, 0x009D BrtCalcProp, write_BrtCalcProp()); */ + /* [BrtOleSize] */ + /* *(BrtUserBookView *FRT) */ + /* [PIVOTCACHEIDS] */ + /* [BrtWbFactoid] */ + /* [SMARTTAGTYPES] */ + /* [BrtWebOpt] */ + /* write_record(ba, 0x009B BrtFileRecover, write_BrtFileRecover()); */ + /* [WEBPUBITEMS] */ + /* [CRERRS] */ + /* FRTWORKBOOK */ + write_record(ba, 0x0084 /* BrtEndBook */); + + return ba.end(); +} +function parse_wb(data, name/*:string*/, opts)/*:WorkbookFile*/ { + if(name.slice(-4)===".bin") return parse_wb_bin((data/*:any*/), opts); + return parse_wb_xml((data/*:any*/), opts); +} + +function parse_ws(data, name/*:string*/, idx/*:number*/, opts, rels, wb, themes, styles)/*:Worksheet*/ { + if(name.slice(-4)===".bin") return parse_ws_bin((data/*:any*/), opts, idx, rels, wb, themes, styles); + return parse_ws_xml((data/*:any*/), opts, idx, rels, wb, themes, styles); +} + +function parse_cs(data, name/*:string*/, idx/*:number*/, opts, rels, wb, themes, styles)/*:Worksheet*/ { + if(name.slice(-4)===".bin") return parse_cs_bin((data/*:any*/), opts, idx, rels, wb, themes, styles); + return parse_cs_xml((data/*:any*/), opts, idx, rels, wb, themes, styles); +} + +function parse_ms(data, name/*:string*/, idx/*:number*/, opts, rels, wb, themes, styles)/*:Worksheet*/ { + if(name.slice(-4)===".bin") return parse_ms_bin((data/*:any*/), opts, idx, rels, wb, themes, styles); + return parse_ms_xml((data/*:any*/), opts, idx, rels, wb, themes, styles); +} + +function parse_ds(data, name/*:string*/, idx/*:number*/, opts, rels, wb, themes, styles)/*:Worksheet*/ { + if(name.slice(-4)===".bin") return parse_ds_bin((data/*:any*/), opts, idx, rels, wb, themes, styles); + return parse_ds_xml((data/*:any*/), opts, idx, rels, wb, themes, styles); +} + +function parse_sty(data, name/*:string*/, themes, opts) { + if(name.slice(-4)===".bin") return parse_sty_bin((data/*:any*/), themes, opts); + return parse_sty_xml((data/*:any*/), themes, opts); +} + +function parse_theme(data/*:string*/, name/*:string*/, opts) { + return parse_theme_xml(data, opts); +} + +function parse_sst(data, name/*:string*/, opts)/*:SST*/ { + if(name.slice(-4)===".bin") return parse_sst_bin((data/*:any*/), opts); + return parse_sst_xml((data/*:any*/), opts); +} + +function parse_cmnt(data, name/*:string*/, opts)/*:Array*/ { + if(name.slice(-4)===".bin") return parse_comments_bin((data/*:any*/), opts); + return parse_comments_xml((data/*:any*/), opts); +} + +function parse_cc(data, name/*:string*/, opts) { + if(name.slice(-4)===".bin") return parse_cc_bin((data/*:any*/), name, opts); + return parse_cc_xml((data/*:any*/), name, opts); +} + +function parse_xlink(data, rel, name/*:string*/, opts) { + if(name.slice(-4)===".bin") return parse_xlink_bin((data/*:any*/), rel, name, opts); + return parse_xlink_xml((data/*:any*/), rel, name, opts); +} + +function parse_xlmeta(data, name/*:string*/, opts) { + if(name.slice(-4)===".bin") return parse_xlmeta_bin((data/*:any*/), name, opts); + return parse_xlmeta_xml((data/*:any*/), name, opts); +} + +function write_wb(wb, name/*:string*/, opts) { + return (name.slice(-4)===".bin" ? write_wb_bin : write_wb_xml)(wb, opts); +} + +function write_ws(data/*:number*/, name/*:string*/, opts, wb/*:Workbook*/, rels) { + return (name.slice(-4)===".bin" ? write_ws_bin : write_ws_xml)(data, opts, wb, rels); +} + +// eslint-disable-next-line no-unused-vars +function write_cs(data/*:number*/, name/*:string*/, opts, wb/*:Workbook*/, rels) { + return (name.slice(-4)===".bin" ? write_cs_bin : write_cs_xml)(data, opts, wb, rels); +} + +function write_sty(data, name/*:string*/, opts) { + return (name.slice(-4)===".bin" ? write_sty_bin : write_sty_xml)(data, opts); +} + +function write_sst(data/*:SST*/, name/*:string*/, opts) { + return (name.slice(-4)===".bin" ? write_sst_bin : write_sst_xml)(data, opts); +} + +function write_cmnt(data/*:Array*/, name/*:string*/, opts) { + return (name.slice(-4)===".bin" ? write_comments_bin : write_comments_xml)(data, opts); +} +/* +function write_cc(data, name:string, opts) { + return (name.slice(-4)===".bin" ? write_cc_bin : write_cc_xml)(data, opts); +} +*/ + +function write_xlmeta(name/*:string*/) { + return (name.slice(-4)===".bin" ? write_xlmeta_bin : write_xlmeta_xml)(); +} +var attregexg2=/([\w:]+)=((?:")([^"]*)(?:")|(?:')([^']*)(?:'))/g; +var attregex2=/([\w:]+)=((?:")(?:[^"]*)(?:")|(?:')(?:[^']*)(?:'))/; +function xlml_parsexmltag(tag/*:string*/, skip_root/*:?boolean*/) { + var words = tag.split(/\s+/); + var z/*:any*/ = ([]/*:any*/); if(!skip_root) z[0] = words[0]; + if(words.length === 1) return z; + var m = tag.match(attregexg2), y, j, w, i; + if(m) for(i = 0; i != m.length; ++i) { + y = m[i].match(attregex2); +/*:: if(!y || !y[2]) continue; */ + if((j=y[1].indexOf(":")) === -1) z[y[1]] = y[2].slice(1,y[2].length-1); + else { + if(y[1].slice(0,6) === "xmlns:") w = "xmlns"+y[1].slice(6); + else w = y[1].slice(j+1); + z[w] = y[2].slice(1,y[2].length-1); + } + } + return z; +} +function xlml_parsexmltagobj(tag/*:string*/) { + var words = tag.split(/\s+/); + var z = {}; + if(words.length === 1) return z; + var m = tag.match(attregexg2), y, j, w, i; + if(m) for(i = 0; i != m.length; ++i) { + y = m[i].match(attregex2); +/*:: if(!y || !y[2]) continue; */ + if((j=y[1].indexOf(":")) === -1) z[y[1]] = y[2].slice(1,y[2].length-1); + else { + if(y[1].slice(0,6) === "xmlns:") w = "xmlns"+y[1].slice(6); + else w = y[1].slice(j+1); + z[w] = y[2].slice(1,y[2].length-1); + } + } + return z; +} + +// ---- + +/* map from xlml named formats to SSF TODO: localize */ +var XLMLFormatMap/*: {[string]:string}*/; + +function xlml_format(format, value)/*:string*/ { + var fmt = XLMLFormatMap[format] || unescapexml(format); + if(fmt === "General") return SSF_general(value); + return SSF_format(fmt, value); +} + +function xlml_set_custprop(Custprops, key, cp, val/*:string*/) { + var oval/*:any*/ = val; + switch((cp[0].match(/dt:dt="([\w.]+)"/)||["",""])[1]) { + case "boolean": oval = parsexmlbool(val); break; + case "i2": case "int": oval = parseInt(val, 10); break; + case "r4": case "float": oval = parseFloat(val); break; + case "date": case "dateTime.tz": oval = parseDate(val); break; + case "i8": case "string": case "fixed": case "uuid": case "bin.base64": break; + default: throw new Error("bad custprop:" + cp[0]); + } + Custprops[unescapexml(key)] = oval; +} + +function safe_format_xlml(cell/*:Cell*/, nf, o) { + if(cell.t === 'z') return; + if(!o || o.cellText !== false) try { + if(cell.t === 'e') { cell.w = cell.w || BErr[cell.v]; } + else if(nf === "General") { + if(cell.t === 'n') { + if((cell.v|0) === cell.v) cell.w = cell.v.toString(10); + else cell.w = SSF_general_num(cell.v); + } + else cell.w = SSF_general(cell.v); + } + else cell.w = xlml_format(nf||"General", cell.v); + } catch(e) { if(o.WTF) throw e; } + try { + var z = XLMLFormatMap[nf]||nf||"General"; + if(o.cellNF) cell.z = z; + if(o.cellDates && cell.t == 'n' && fmt_is_date(z)) { + var _d = SSF_parse_date_code(cell.v); if(_d) { cell.t = 'd'; cell.v = new Date(_d.y, _d.m-1,_d.d,_d.H,_d.M,_d.S,_d.u); } + } + } catch(e) { if(o.WTF) throw e; } +} + +function process_style_xlml(styles, stag, opts) { + if(opts.cellStyles) { + if(stag.Interior) { + var I = stag.Interior; + if(I.Pattern) I.patternType = XLMLPatternTypeMap[I.Pattern] || I.Pattern; + } + } + styles[stag.ID] = stag; +} + +/* TODO: there must exist some form of OSP-blessed spec */ +function parse_xlml_data(xml, ss, data, cell/*:any*/, base, styles, csty, row, arrayf, o) { + var nf = "General", sid = cell.StyleID, S = {}; o = o || {}; + var interiors = []; + var i = 0; + if(sid === undefined && row) sid = row.StyleID; + if(sid === undefined && csty) sid = csty.StyleID; + while(styles[sid] !== undefined) { + if(styles[sid].nf) nf = styles[sid].nf; + if(styles[sid].Interior) interiors.push(styles[sid].Interior); + if(!styles[sid].Parent) break; + sid = styles[sid].Parent; + } + switch(data.Type) { + case 'Boolean': + cell.t = 'b'; + cell.v = parsexmlbool(xml); + break; + case 'String': + cell.t = 's'; cell.r = xlml_fixstr(unescapexml(xml)); + cell.v = (xml.indexOf("<") > -1 ? unescapexml(ss||xml).replace(/<.*?>/g, "") : cell.r); // todo: BR etc + break; + case 'DateTime': + if(xml.slice(-1) != "Z") xml += "Z"; + cell.v = (parseDate(xml) - new Date(Date.UTC(1899, 11, 30))) / (24 * 60 * 60 * 1000); + if(cell.v !== cell.v) cell.v = unescapexml(xml); + else if(cell.v<60) cell.v = cell.v -1; + if(!nf || nf == "General") nf = "yyyy-mm-dd"; + /* falls through */ + case 'Number': + if(cell.v === undefined) cell.v=+xml; + if(!cell.t) cell.t = 'n'; + break; + case 'Error': cell.t = 'e'; cell.v = RBErr[xml]; if(o.cellText !== false) cell.w = xml; break; + default: + if(xml == "" && ss == "") { cell.t = 'z'; } + else { cell.t = 's'; cell.v = xlml_fixstr(ss||xml); } + break; + } + safe_format_xlml(cell, nf, o); + if(o.cellFormula !== false) { + if(cell.Formula) { + var fstr = unescapexml(cell.Formula); + /* strictly speaking, the leading = is required but some writers omit */ + if(fstr.charCodeAt(0) == 61 /* = */) fstr = fstr.slice(1); + cell.f = rc_to_a1(fstr, base); + delete cell.Formula; + if(cell.ArrayRange == "RC") cell.F = rc_to_a1("RC:RC", base); + else if(cell.ArrayRange) { + cell.F = rc_to_a1(cell.ArrayRange, base); + arrayf.push([safe_decode_range(cell.F), cell.F]); + } + } else { + for(i = 0; i < arrayf.length; ++i) + if(base.r >= arrayf[i][0].s.r && base.r <= arrayf[i][0].e.r) + if(base.c >= arrayf[i][0].s.c && base.c <= arrayf[i][0].e.c) + cell.F = arrayf[i][1]; + } + } + if(o.cellStyles) { + interiors.forEach(function(x) { + if(!S.patternType && x.patternType) S.patternType = x.patternType; + }); + cell.s = S; + } + if(cell.StyleID !== undefined) cell.ixfe = cell.StyleID; +} + +function xlml_clean_comment(comment/*:any*/) { + comment.t = comment.v || ""; + comment.t = comment.t.replace(/\r\n/g,"\n").replace(/\r/g,"\n"); + comment.v = comment.w = comment.ixfe = undefined; +} + +/* TODO: Everything */ +function parse_xlml_xml(d, _opts)/*:Workbook*/ { + var opts = _opts || {}; + make_ssf(); + var str = debom(xlml_normalize(d)); + if(opts.type == 'binary' || opts.type == 'array' || opts.type == 'base64') { + if(typeof $cptable !== 'undefined') str = $cptable.utils.decode(65001, char_codes(str)); + else str = utf8read(str); + } + var opening = str.slice(0, 1024).toLowerCase(), ishtml = false; + opening = opening.replace(/".*?"/g, ""); + if((opening.indexOf(">") & 1023) > Math.min((opening.indexOf(",") & 1023), (opening.indexOf(";")&1023))) { var _o = dup(opts); _o.type = "string"; return PRN.to_workbook(str, _o); } + if(opening.indexOf("= 0) ishtml = true; }); + if(ishtml) return html_to_workbook(str, opts); + + XLMLFormatMap = ({ + "General Number": "General", + "General Date": table_fmt[22], + "Long Date": "dddd, mmmm dd, yyyy", + "Medium Date": table_fmt[15], + "Short Date": table_fmt[14], + "Long Time": table_fmt[19], + "Medium Time": table_fmt[18], + "Short Time": table_fmt[20], + "Currency": '"$"#,##0.00_);[Red]\\("$"#,##0.00\\)', + "Fixed": table_fmt[2], + "Standard": table_fmt[4], + "Percent": table_fmt[10], + "Scientific": table_fmt[11], + "Yes/No": '"Yes";"Yes";"No";@', + "True/False": '"True";"True";"False";@', + "On/Off": '"Yes";"Yes";"No";@' + }/*:any*/); + + + var Rn; + var state = [], tmp; + if(DENSE != null && opts.dense == null) opts.dense = DENSE; + var sheets = {}, sheetnames/*:Array*/ = [], cursheet/*:Worksheet*/ = (opts.dense ? [] : {}), sheetname = ""; + var cell = ({}/*:any*/), row = {};// eslint-disable-line no-unused-vars + var dtag = xlml_parsexmltag(''), didx = 0; + var c = 0, r = 0; + var refguess/*:Range*/ = {s: {r:2000000, c:2000000}, e: {r:0, c:0} }; + var styles = {}, stag = {}; + var ss = "", fidx = 0; + var merges/*:Array*/ = []; + var Props = {}, Custprops = {}, pidx = 0, cp = []; + var comments/*:Array*/ = [], comment/*:Comment*/ = ({}/*:any*/); + var cstys = [], csty, seencol = false; + var arrayf/*:Array<[Range, string]>*/ = []; + var rowinfo/*:Array*/ = [], rowobj = {}, cc = 0, rr = 0; + var Workbook/*:WBWBProps*/ = ({ Sheets:[], WBProps:{date1904:false} }/*:any*/), wsprops = {}; + xlmlregex.lastIndex = 0; + str = str.replace(//mg,""); + var raw_Rn3 = ""; + while((Rn = xlmlregex.exec(str))) switch((Rn[3] = (raw_Rn3 = Rn[3]).toLowerCase())) { + case 'data' /*case 'Data'*/: + if(raw_Rn3 == "data") { + if(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw new Error("Bad state: "+tmp.join("|"));} + else if(Rn[0].charAt(Rn[0].length-2) !== '/') state.push([Rn[3], true]); + break; + } + if(state[state.length-1][1]) break; + if(Rn[1]==='/') parse_xlml_data(str.slice(didx, Rn.index), ss, dtag, state[state.length-1][0]==/*"Comment"*/"comment"?comment:cell, {c:c,r:r}, styles, cstys[c], row, arrayf, opts); + else { ss = ""; dtag = xlml_parsexmltag(Rn[0]); didx = Rn.index + Rn[0].length; } + break; + case 'cell' /*case 'Cell'*/: + if(Rn[1]==='/'){ + if(comments.length > 0) cell.c = comments; + if((!opts.sheetRows || opts.sheetRows > r) && cell.v !== undefined) { + if(opts.dense) { + if(!cursheet[r]) cursheet[r] = []; + cursheet[r][c] = cell; + } else cursheet[encode_col(c) + encode_row(r)] = cell; + } + if(cell.HRef) { + cell.l = ({Target:unescapexml(cell.HRef)}/*:any*/); + if(cell.HRefScreenTip) cell.l.Tooltip = cell.HRefScreenTip; + delete cell.HRef; delete cell.HRefScreenTip; + } + if(cell.MergeAcross || cell.MergeDown) { + cc = c + (parseInt(cell.MergeAcross,10)|0); + rr = r + (parseInt(cell.MergeDown,10)|0); + merges.push({s:{c:c,r:r},e:{c:cc,r:rr}}); + } + if(!opts.sheetStubs) { if(cell.MergeAcross) c = cc + 1; else ++c; } + else if(cell.MergeAcross || cell.MergeDown) { + /*:: if(!cc) cc = 0; if(!rr) rr = 0; */ + for(var cma = c; cma <= cc; ++cma) { + for(var cmd = r; cmd <= rr; ++cmd) { + if(cma > c || cmd > r) { + if(opts.dense) { + if(!cursheet[cmd]) cursheet[cmd] = []; + cursheet[cmd][cma] = {t:'z'}; + } else cursheet[encode_col(cma) + encode_row(cmd)] = {t:'z'}; + } + } + } + c = cc + 1; + } + else ++c; + } else { + cell = xlml_parsexmltagobj(Rn[0]); + if(cell.Index) c = +cell.Index - 1; + if(c < refguess.s.c) refguess.s.c = c; + if(c > refguess.e.c) refguess.e.c = c; + if(Rn[0].slice(-2) === "/>") ++c; + comments = []; + } + break; + case 'row' /*case 'Row'*/: + if(Rn[1]==='/' || Rn[0].slice(-2) === "/>") { + if(r < refguess.s.r) refguess.s.r = r; + if(r > refguess.e.r) refguess.e.r = r; + if(Rn[0].slice(-2) === "/>") { + row = xlml_parsexmltag(Rn[0]); + if(row.Index) r = +row.Index - 1; + } + c = 0; ++r; + } else { + row = xlml_parsexmltag(Rn[0]); + if(row.Index) r = +row.Index - 1; + rowobj = {}; + if(row.AutoFitHeight == "0" || row.Height) { + rowobj.hpx = parseInt(row.Height, 10); rowobj.hpt = px2pt(rowobj.hpx); + rowinfo[r] = rowobj; + } + if(row.Hidden == "1") { rowobj.hidden = true; rowinfo[r] = rowobj; } + } + break; + case 'worksheet' /*case 'Worksheet'*/: /* TODO: read range from FullRows/FullColumns */ + if(Rn[1]==='/'){ + if((tmp=state.pop())[0]!==Rn[3]) throw new Error("Bad state: "+tmp.join("|")); + sheetnames.push(sheetname); + if(refguess.s.r <= refguess.e.r && refguess.s.c <= refguess.e.c) { + cursheet["!ref"] = encode_range(refguess); + if(opts.sheetRows && opts.sheetRows <= refguess.e.r) { + cursheet["!fullref"] = cursheet["!ref"]; + refguess.e.r = opts.sheetRows - 1; + cursheet["!ref"] = encode_range(refguess); + } + } + if(merges.length) cursheet["!merges"] = merges; + if(cstys.length > 0) cursheet["!cols"] = cstys; + if(rowinfo.length > 0) cursheet["!rows"] = rowinfo; + sheets[sheetname] = cursheet; + } else { + refguess = {s: {r:2000000, c:2000000}, e: {r:0, c:0} }; + r = c = 0; + state.push([Rn[3], false]); + tmp = xlml_parsexmltag(Rn[0]); + sheetname = unescapexml(tmp.Name); + cursheet = (opts.dense ? [] : {}); + merges = []; + arrayf = []; + rowinfo = []; + wsprops = {name:sheetname, Hidden:0}; + Workbook.Sheets.push(wsprops); + } + break; + case 'table' /*case 'Table'*/: + if(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw new Error("Bad state: "+tmp.join("|"));} + else if(Rn[0].slice(-2) == "/>") break; + else { + state.push([Rn[3], false]); + cstys = []; seencol = false; + } + break; + + case 'style' /*case 'Style'*/: + if(Rn[1]==='/') process_style_xlml(styles, stag, opts); + else stag = xlml_parsexmltag(Rn[0]); + break; + + case 'numberformat' /*case 'NumberFormat'*/: + stag.nf = unescapexml(xlml_parsexmltag(Rn[0]).Format || "General"); + if(XLMLFormatMap[stag.nf]) stag.nf = XLMLFormatMap[stag.nf]; + for(var ssfidx = 0; ssfidx != 0x188; ++ssfidx) if(table_fmt[ssfidx] == stag.nf) break; + if(ssfidx == 0x188) for(ssfidx = 0x39; ssfidx != 0x188; ++ssfidx) if(table_fmt[ssfidx] == null) { SSF_load(stag.nf, ssfidx); break; } + break; + + case 'column' /*case 'Column'*/: + if(state[state.length-1][0] !== /*'Table'*/'table') break; + csty = xlml_parsexmltag(Rn[0]); + if(csty.Hidden) { csty.hidden = true; delete csty.Hidden; } + if(csty.Width) csty.wpx = parseInt(csty.Width, 10); + if(!seencol && csty.wpx > 10) { + seencol = true; MDW = DEF_MDW; //find_mdw_wpx(csty.wpx); + for(var _col = 0; _col < cstys.length; ++_col) if(cstys[_col]) process_col(cstys[_col]); + } + if(seencol) process_col(csty); + cstys[(csty.Index-1||cstys.length)] = csty; + for(var i = 0; i < +csty.Span; ++i) cstys[cstys.length] = dup(csty); + break; + + case 'namedrange' /*case 'NamedRange'*/: + if(Rn[1]==='/') break; + if(!Workbook.Names) Workbook.Names = []; + var _NamedRange = parsexmltag(Rn[0]); + var _DefinedName/*:DefinedName*/ = ({ + Name: _NamedRange.Name, + Ref: rc_to_a1(_NamedRange.RefersTo.slice(1), {r:0, c:0}) + }/*:any*/); + if(Workbook.Sheets.length>0) _DefinedName.Sheet=Workbook.Sheets.length-1; + /*:: if(Workbook.Names) */Workbook.Names.push(_DefinedName); + break; + + case 'namedcell' /*case 'NamedCell'*/: break; + case 'b' /*case 'B'*/: break; + case 'i' /*case 'I'*/: break; + case 'u' /*case 'U'*/: break; + case 's' /*case 'S'*/: break; + case 'em' /*case 'EM'*/: break; + case 'h2' /*case 'H2'*/: break; + case 'h3' /*case 'H3'*/: break; + case 'sub' /*case 'Sub'*/: break; + case 'sup' /*case 'Sup'*/: break; + case 'span' /*case 'Span'*/: break; + case 'alignment' /*case 'Alignment'*/: + break; + case 'borders' /*case 'Borders'*/: break; + case 'border' /*case 'Border'*/: break; + case 'font' /*case 'Font'*/: + if(Rn[0].slice(-2) === "/>") break; + else if(Rn[1]==="/") ss += str.slice(fidx, Rn.index); + else fidx = Rn.index + Rn[0].length; + break; + case 'interior' /*case 'Interior'*/: + if(!opts.cellStyles) break; + stag.Interior = xlml_parsexmltag(Rn[0]); + break; + case 'protection' /*case 'Protection'*/: break; + + case 'author' /*case 'Author'*/: + case 'title' /*case 'Title'*/: + case 'description' /*case 'Description'*/: + case 'created' /*case 'Created'*/: + case 'keywords' /*case 'Keywords'*/: + case 'subject' /*case 'Subject'*/: + case 'category' /*case 'Category'*/: + case 'company' /*case 'Company'*/: + case 'lastauthor' /*case 'LastAuthor'*/: + case 'lastsaved' /*case 'LastSaved'*/: + case 'lastprinted' /*case 'LastPrinted'*/: + case 'version' /*case 'Version'*/: + case 'revision' /*case 'Revision'*/: + case 'totaltime' /*case 'TotalTime'*/: + case 'hyperlinkbase' /*case 'HyperlinkBase'*/: + case 'manager' /*case 'Manager'*/: + case 'contentstatus' /*case 'ContentStatus'*/: + case 'identifier' /*case 'Identifier'*/: + case 'language' /*case 'Language'*/: + case 'appname' /*case 'AppName'*/: + if(Rn[0].slice(-2) === "/>") break; + else if(Rn[1]==="/") xlml_set_prop(Props, raw_Rn3, str.slice(pidx, Rn.index)); + else pidx = Rn.index + Rn[0].length; + break; + case 'paragraphs' /*case 'Paragraphs'*/: break; + + case 'styles' /*case 'Styles'*/: + case 'workbook' /*case 'Workbook'*/: + if(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw new Error("Bad state: "+tmp.join("|"));} + else state.push([Rn[3], false]); + break; + + case 'comment' /*case 'Comment'*/: + if(Rn[1]==='/'){ + if((tmp=state.pop())[0]!==Rn[3]) throw new Error("Bad state: "+tmp.join("|")); + xlml_clean_comment(comment); + comments.push(comment); + } else { + state.push([Rn[3], false]); + tmp = xlml_parsexmltag(Rn[0]); + comment = ({a:tmp.Author}/*:any*/); + } + break; + + case 'autofilter' /*case 'AutoFilter'*/: + if(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw new Error("Bad state: "+tmp.join("|"));} + else if(Rn[0].charAt(Rn[0].length-2) !== '/') { + var AutoFilter = xlml_parsexmltag(Rn[0]); + cursheet['!autofilter'] = { ref:rc_to_a1(AutoFilter.Range).replace(/\$/g,"") }; + state.push([Rn[3], true]); + } + break; + + case 'name' /*case 'Name'*/: break; + + case 'datavalidation' /*case 'DataValidation'*/: + if(Rn[1]==='/'){ + if((tmp=state.pop())[0]!==Rn[3]) throw new Error("Bad state: "+tmp.join("|")); + } else { + if(Rn[0].charAt(Rn[0].length-2) !== '/') state.push([Rn[3], true]); + } + break; + + case 'pixelsperinch' /*case 'PixelsPerInch'*/: + break; + case 'componentoptions' /*case 'ComponentOptions'*/: + case 'documentproperties' /*case 'DocumentProperties'*/: + case 'customdocumentproperties' /*case 'CustomDocumentProperties'*/: + case 'officedocumentsettings' /*case 'OfficeDocumentSettings'*/: + case 'pivottable' /*case 'PivotTable'*/: + case 'pivotcache' /*case 'PivotCache'*/: + case 'names' /*case 'Names'*/: + case 'mapinfo' /*case 'MapInfo'*/: + case 'pagebreaks' /*case 'PageBreaks'*/: + case 'querytable' /*case 'QueryTable'*/: + case 'sorting' /*case 'Sorting'*/: + case 'schema' /*case 'Schema'*/: //case 'data' /*case 'data'*/: + case 'conditionalformatting' /*case 'ConditionalFormatting'*/: + case 'smarttagtype' /*case 'SmartTagType'*/: + case 'smarttags' /*case 'SmartTags'*/: + case 'excelworkbook' /*case 'ExcelWorkbook'*/: + case 'workbookoptions' /*case 'WorkbookOptions'*/: + case 'worksheetoptions' /*case 'WorksheetOptions'*/: + if(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw new Error("Bad state: "+tmp.join("|"));} + else if(Rn[0].charAt(Rn[0].length-2) !== '/') state.push([Rn[3], true]); + break; + + case 'null' /*case 'Null'*/: break; + + default: + /* FODS file root is */ + if(state.length == 0 && Rn[3] == "document") return parse_fods(str, opts); + /* UOS file root is */ + if(state.length == 0 && Rn[3] == "uof"/*"UOF"*/) return parse_fods(str, opts); + + var seen = true; + switch(state[state.length-1][0]) { + /* OfficeDocumentSettings */ + case 'officedocumentsettings' /*case 'OfficeDocumentSettings'*/: switch(Rn[3]) { + case 'allowpng' /*case 'AllowPNG'*/: break; + case 'removepersonalinformation' /*case 'RemovePersonalInformation'*/: break; + case 'downloadcomponents' /*case 'DownloadComponents'*/: break; + case 'locationofcomponents' /*case 'LocationOfComponents'*/: break; + case 'colors' /*case 'Colors'*/: break; + case 'color' /*case 'Color'*/: break; + case 'index' /*case 'Index'*/: break; + case 'rgb' /*case 'RGB'*/: break; + case 'targetscreensize' /*case 'TargetScreenSize'*/: break; + case 'readonlyrecommended' /*case 'ReadOnlyRecommended'*/: break; + default: seen = false; + } break; + + /* ComponentOptions */ + case 'componentoptions' /*case 'ComponentOptions'*/: switch(Rn[3]) { + case 'toolbar' /*case 'Toolbar'*/: break; + case 'hideofficelogo' /*case 'HideOfficeLogo'*/: break; + case 'spreadsheetautofit' /*case 'SpreadsheetAutoFit'*/: break; + case 'label' /*case 'Label'*/: break; + case 'caption' /*case 'Caption'*/: break; + case 'maxheight' /*case 'MaxHeight'*/: break; + case 'maxwidth' /*case 'MaxWidth'*/: break; + case 'nextsheetnumber' /*case 'NextSheetNumber'*/: break; + default: seen = false; + } break; + + /* ExcelWorkbook */ + case 'excelworkbook' /*case 'ExcelWorkbook'*/: switch(Rn[3]) { + case 'date1904' /*case 'Date1904'*/: + /*:: if(!Workbook.WBProps) Workbook.WBProps = {}; */ + Workbook.WBProps.date1904 = true; + break; + case 'windowheight' /*case 'WindowHeight'*/: break; + case 'windowwidth' /*case 'WindowWidth'*/: break; + case 'windowtopx' /*case 'WindowTopX'*/: break; + case 'windowtopy' /*case 'WindowTopY'*/: break; + case 'tabratio' /*case 'TabRatio'*/: break; + case 'protectstructure' /*case 'ProtectStructure'*/: break; + case 'protectwindow' /*case 'ProtectWindow'*/: break; + case 'protectwindows' /*case 'ProtectWindows'*/: break; + case 'activesheet' /*case 'ActiveSheet'*/: break; + case 'displayinknotes' /*case 'DisplayInkNotes'*/: break; + case 'firstvisiblesheet' /*case 'FirstVisibleSheet'*/: break; + case 'supbook' /*case 'SupBook'*/: break; + case 'sheetname' /*case 'SheetName'*/: break; + case 'sheetindex' /*case 'SheetIndex'*/: break; + case 'sheetindexfirst' /*case 'SheetIndexFirst'*/: break; + case 'sheetindexlast' /*case 'SheetIndexLast'*/: break; + case 'dll' /*case 'Dll'*/: break; + case 'acceptlabelsinformulas' /*case 'AcceptLabelsInFormulas'*/: break; + case 'donotsavelinkvalues' /*case 'DoNotSaveLinkValues'*/: break; + case 'iteration' /*case 'Iteration'*/: break; + case 'maxiterations' /*case 'MaxIterations'*/: break; + case 'maxchange' /*case 'MaxChange'*/: break; + case 'path' /*case 'Path'*/: break; + case 'xct' /*case 'Xct'*/: break; + case 'count' /*case 'Count'*/: break; + case 'selectedsheets' /*case 'SelectedSheets'*/: break; + case 'calculation' /*case 'Calculation'*/: break; + case 'uncalced' /*case 'Uncalced'*/: break; + case 'startupprompt' /*case 'StartupPrompt'*/: break; + case 'crn' /*case 'Crn'*/: break; + case 'externname' /*case 'ExternName'*/: break; + case 'formula' /*case 'Formula'*/: break; + case 'colfirst' /*case 'ColFirst'*/: break; + case 'collast' /*case 'ColLast'*/: break; + case 'wantadvise' /*case 'WantAdvise'*/: break; + case 'boolean' /*case 'Boolean'*/: break; + case 'error' /*case 'Error'*/: break; + case 'text' /*case 'Text'*/: break; + case 'ole' /*case 'OLE'*/: break; + case 'noautorecover' /*case 'NoAutoRecover'*/: break; + case 'publishobjects' /*case 'PublishObjects'*/: break; + case 'donotcalculatebeforesave' /*case 'DoNotCalculateBeforeSave'*/: break; + case 'number' /*case 'Number'*/: break; + case 'refmoder1c1' /*case 'RefModeR1C1'*/: break; + case 'embedsavesmarttags' /*case 'EmbedSaveSmartTags'*/: break; + default: seen = false; + } break; + + /* WorkbookOptions */ + case 'workbookoptions' /*case 'WorkbookOptions'*/: switch(Rn[3]) { + case 'owcversion' /*case 'OWCVersion'*/: break; + case 'height' /*case 'Height'*/: break; + case 'width' /*case 'Width'*/: break; + default: seen = false; + } break; + + /* WorksheetOptions */ + case 'worksheetoptions' /*case 'WorksheetOptions'*/: switch(Rn[3]) { + case 'visible' /*case 'Visible'*/: + if(Rn[0].slice(-2) === "/>"){/* empty */} + else if(Rn[1]==="/") switch(str.slice(pidx, Rn.index)) { + case "SheetHidden": wsprops.Hidden = 1; break; + case "SheetVeryHidden": wsprops.Hidden = 2; break; + } + else pidx = Rn.index + Rn[0].length; + break; + case 'header' /*case 'Header'*/: + if(!cursheet['!margins']) default_margins(cursheet['!margins']={}, 'xlml'); + if(!isNaN(+parsexmltag(Rn[0]).Margin)) cursheet['!margins'].header = +parsexmltag(Rn[0]).Margin; + break; + case 'footer' /*case 'Footer'*/: + if(!cursheet['!margins']) default_margins(cursheet['!margins']={}, 'xlml'); + if(!isNaN(+parsexmltag(Rn[0]).Margin)) cursheet['!margins'].footer = +parsexmltag(Rn[0]).Margin; + break; + case 'pagemargins' /*case 'PageMargins'*/: + var pagemargins = parsexmltag(Rn[0]); + if(!cursheet['!margins']) default_margins(cursheet['!margins']={},'xlml'); + if(!isNaN(+pagemargins.Top)) cursheet['!margins'].top = +pagemargins.Top; + if(!isNaN(+pagemargins.Left)) cursheet['!margins'].left = +pagemargins.Left; + if(!isNaN(+pagemargins.Right)) cursheet['!margins'].right = +pagemargins.Right; + if(!isNaN(+pagemargins.Bottom)) cursheet['!margins'].bottom = +pagemargins.Bottom; + break; + case 'displayrighttoleft' /*case 'DisplayRightToLeft'*/: + if(!Workbook.Views) Workbook.Views = []; + if(!Workbook.Views[0]) Workbook.Views[0] = {}; + Workbook.Views[0].RTL = true; + break; + + case 'freezepanes' /*case 'FreezePanes'*/: break; + case 'frozennosplit' /*case 'FrozenNoSplit'*/: break; + + case 'splithorizontal' /*case 'SplitHorizontal'*/: + case 'splitvertical' /*case 'SplitVertical'*/: + break; + + case 'donotdisplaygridlines' /*case 'DoNotDisplayGridlines'*/: + break; + + case 'activerow' /*case 'ActiveRow'*/: break; + case 'activecol' /*case 'ActiveCol'*/: break; + case 'toprowbottompane' /*case 'TopRowBottomPane'*/: break; + case 'leftcolumnrightpane' /*case 'LeftColumnRightPane'*/: break; + + case 'unsynced' /*case 'Unsynced'*/: break; + case 'print' /*case 'Print'*/: break; + case 'printerrors' /*case 'PrintErrors'*/: break; + case 'panes' /*case 'Panes'*/: break; + case 'scale' /*case 'Scale'*/: break; + case 'pane' /*case 'Pane'*/: break; + case 'number' /*case 'Number'*/: break; + case 'layout' /*case 'Layout'*/: break; + case 'pagesetup' /*case 'PageSetup'*/: break; + case 'selected' /*case 'Selected'*/: break; + case 'protectobjects' /*case 'ProtectObjects'*/: break; + case 'enableselection' /*case 'EnableSelection'*/: break; + case 'protectscenarios' /*case 'ProtectScenarios'*/: break; + case 'validprinterinfo' /*case 'ValidPrinterInfo'*/: break; + case 'horizontalresolution' /*case 'HorizontalResolution'*/: break; + case 'verticalresolution' /*case 'VerticalResolution'*/: break; + case 'numberofcopies' /*case 'NumberofCopies'*/: break; + case 'activepane' /*case 'ActivePane'*/: break; + case 'toprowvisible' /*case 'TopRowVisible'*/: break; + case 'leftcolumnvisible' /*case 'LeftColumnVisible'*/: break; + case 'fittopage' /*case 'FitToPage'*/: break; + case 'rangeselection' /*case 'RangeSelection'*/: break; + case 'papersizeindex' /*case 'PaperSizeIndex'*/: break; + case 'pagelayoutzoom' /*case 'PageLayoutZoom'*/: break; + case 'pagebreakzoom' /*case 'PageBreakZoom'*/: break; + case 'filteron' /*case 'FilterOn'*/: break; + case 'fitwidth' /*case 'FitWidth'*/: break; + case 'fitheight' /*case 'FitHeight'*/: break; + case 'commentslayout' /*case 'CommentsLayout'*/: break; + case 'zoom' /*case 'Zoom'*/: break; + case 'lefttoright' /*case 'LeftToRight'*/: break; + case 'gridlines' /*case 'Gridlines'*/: break; + case 'allowsort' /*case 'AllowSort'*/: break; + case 'allowfilter' /*case 'AllowFilter'*/: break; + case 'allowinsertrows' /*case 'AllowInsertRows'*/: break; + case 'allowdeleterows' /*case 'AllowDeleteRows'*/: break; + case 'allowinsertcols' /*case 'AllowInsertCols'*/: break; + case 'allowdeletecols' /*case 'AllowDeleteCols'*/: break; + case 'allowinserthyperlinks' /*case 'AllowInsertHyperlinks'*/: break; + case 'allowformatcells' /*case 'AllowFormatCells'*/: break; + case 'allowsizecols' /*case 'AllowSizeCols'*/: break; + case 'allowsizerows' /*case 'AllowSizeRows'*/: break; + case 'nosummaryrowsbelowdetail' /*case 'NoSummaryRowsBelowDetail'*/: + if(!cursheet["!outline"]) cursheet["!outline"] = {}; + cursheet["!outline"].above = true; + break; + case 'tabcolorindex' /*case 'TabColorIndex'*/: break; + case 'donotdisplayheadings' /*case 'DoNotDisplayHeadings'*/: break; + case 'showpagelayoutzoom' /*case 'ShowPageLayoutZoom'*/: break; + case 'nosummarycolumnsrightdetail' /*case 'NoSummaryColumnsRightDetail'*/: + if(!cursheet["!outline"]) cursheet["!outline"] = {}; + cursheet["!outline"].left = true; + break; + case 'blackandwhite' /*case 'BlackAndWhite'*/: break; + case 'donotdisplayzeros' /*case 'DoNotDisplayZeros'*/: break; + case 'displaypagebreak' /*case 'DisplayPageBreak'*/: break; + case 'rowcolheadings' /*case 'RowColHeadings'*/: break; + case 'donotdisplayoutline' /*case 'DoNotDisplayOutline'*/: break; + case 'noorientation' /*case 'NoOrientation'*/: break; + case 'allowusepivottables' /*case 'AllowUsePivotTables'*/: break; + case 'zeroheight' /*case 'ZeroHeight'*/: break; + case 'viewablerange' /*case 'ViewableRange'*/: break; + case 'selection' /*case 'Selection'*/: break; + case 'protectcontents' /*case 'ProtectContents'*/: break; + default: seen = false; + } break; + + /* PivotTable */ + case 'pivottable' /*case 'PivotTable'*/: case 'pivotcache' /*case 'PivotCache'*/: switch(Rn[3]) { + case 'immediateitemsondrop' /*case 'ImmediateItemsOnDrop'*/: break; + case 'showpagemultipleitemlabel' /*case 'ShowPageMultipleItemLabel'*/: break; + case 'compactrowindent' /*case 'CompactRowIndent'*/: break; + case 'location' /*case 'Location'*/: break; + case 'pivotfield' /*case 'PivotField'*/: break; + case 'orientation' /*case 'Orientation'*/: break; + case 'layoutform' /*case 'LayoutForm'*/: break; + case 'layoutsubtotallocation' /*case 'LayoutSubtotalLocation'*/: break; + case 'layoutcompactrow' /*case 'LayoutCompactRow'*/: break; + case 'position' /*case 'Position'*/: break; + case 'pivotitem' /*case 'PivotItem'*/: break; + case 'datatype' /*case 'DataType'*/: break; + case 'datafield' /*case 'DataField'*/: break; + case 'sourcename' /*case 'SourceName'*/: break; + case 'parentfield' /*case 'ParentField'*/: break; + case 'ptlineitems' /*case 'PTLineItems'*/: break; + case 'ptlineitem' /*case 'PTLineItem'*/: break; + case 'countofsameitems' /*case 'CountOfSameItems'*/: break; + case 'item' /*case 'Item'*/: break; + case 'itemtype' /*case 'ItemType'*/: break; + case 'ptsource' /*case 'PTSource'*/: break; + case 'cacheindex' /*case 'CacheIndex'*/: break; + case 'consolidationreference' /*case 'ConsolidationReference'*/: break; + case 'filename' /*case 'FileName'*/: break; + case 'reference' /*case 'Reference'*/: break; + case 'nocolumngrand' /*case 'NoColumnGrand'*/: break; + case 'norowgrand' /*case 'NoRowGrand'*/: break; + case 'blanklineafteritems' /*case 'BlankLineAfterItems'*/: break; + case 'hidden' /*case 'Hidden'*/: break; + case 'subtotal' /*case 'Subtotal'*/: break; + case 'basefield' /*case 'BaseField'*/: break; + case 'mapchilditems' /*case 'MapChildItems'*/: break; + case 'function' /*case 'Function'*/: break; + case 'refreshonfileopen' /*case 'RefreshOnFileOpen'*/: break; + case 'printsettitles' /*case 'PrintSetTitles'*/: break; + case 'mergelabels' /*case 'MergeLabels'*/: break; + case 'defaultversion' /*case 'DefaultVersion'*/: break; + case 'refreshname' /*case 'RefreshName'*/: break; + case 'refreshdate' /*case 'RefreshDate'*/: break; + case 'refreshdatecopy' /*case 'RefreshDateCopy'*/: break; + case 'versionlastrefresh' /*case 'VersionLastRefresh'*/: break; + case 'versionlastupdate' /*case 'VersionLastUpdate'*/: break; + case 'versionupdateablemin' /*case 'VersionUpdateableMin'*/: break; + case 'versionrefreshablemin' /*case 'VersionRefreshableMin'*/: break; + case 'calculation' /*case 'Calculation'*/: break; + default: seen = false; + } break; + + /* PageBreaks */ + case 'pagebreaks' /*case 'PageBreaks'*/: switch(Rn[3]) { + case 'colbreaks' /*case 'ColBreaks'*/: break; + case 'colbreak' /*case 'ColBreak'*/: break; + case 'rowbreaks' /*case 'RowBreaks'*/: break; + case 'rowbreak' /*case 'RowBreak'*/: break; + case 'colstart' /*case 'ColStart'*/: break; + case 'colend' /*case 'ColEnd'*/: break; + case 'rowend' /*case 'RowEnd'*/: break; + default: seen = false; + } break; + + /* AutoFilter */ + case 'autofilter' /*case 'AutoFilter'*/: switch(Rn[3]) { + case 'autofiltercolumn' /*case 'AutoFilterColumn'*/: break; + case 'autofiltercondition' /*case 'AutoFilterCondition'*/: break; + case 'autofilterand' /*case 'AutoFilterAnd'*/: break; + case 'autofilteror' /*case 'AutoFilterOr'*/: break; + default: seen = false; + } break; + + /* QueryTable */ + case 'querytable' /*case 'QueryTable'*/: switch(Rn[3]) { + case 'id' /*case 'Id'*/: break; + case 'autoformatfont' /*case 'AutoFormatFont'*/: break; + case 'autoformatpattern' /*case 'AutoFormatPattern'*/: break; + case 'querysource' /*case 'QuerySource'*/: break; + case 'querytype' /*case 'QueryType'*/: break; + case 'enableredirections' /*case 'EnableRedirections'*/: break; + case 'refreshedinxl9' /*case 'RefreshedInXl9'*/: break; + case 'urlstring' /*case 'URLString'*/: break; + case 'htmltables' /*case 'HTMLTables'*/: break; + case 'connection' /*case 'Connection'*/: break; + case 'commandtext' /*case 'CommandText'*/: break; + case 'refreshinfo' /*case 'RefreshInfo'*/: break; + case 'notitles' /*case 'NoTitles'*/: break; + case 'nextid' /*case 'NextId'*/: break; + case 'columninfo' /*case 'ColumnInfo'*/: break; + case 'overwritecells' /*case 'OverwriteCells'*/: break; + case 'donotpromptforfile' /*case 'DoNotPromptForFile'*/: break; + case 'textwizardsettings' /*case 'TextWizardSettings'*/: break; + case 'source' /*case 'Source'*/: break; + case 'number' /*case 'Number'*/: break; + case 'decimal' /*case 'Decimal'*/: break; + case 'thousandseparator' /*case 'ThousandSeparator'*/: break; + case 'trailingminusnumbers' /*case 'TrailingMinusNumbers'*/: break; + case 'formatsettings' /*case 'FormatSettings'*/: break; + case 'fieldtype' /*case 'FieldType'*/: break; + case 'delimiters' /*case 'Delimiters'*/: break; + case 'tab' /*case 'Tab'*/: break; + case 'comma' /*case 'Comma'*/: break; + case 'autoformatname' /*case 'AutoFormatName'*/: break; + case 'versionlastedit' /*case 'VersionLastEdit'*/: break; + case 'versionlastrefresh' /*case 'VersionLastRefresh'*/: break; + default: seen = false; + } break; + + case 'datavalidation' /*case 'DataValidation'*/: + switch(Rn[3]) { + case 'range' /*case 'Range'*/: break; + + case 'type' /*case 'Type'*/: break; + case 'min' /*case 'Min'*/: break; + case 'max' /*case 'Max'*/: break; + case 'sort' /*case 'Sort'*/: break; + case 'descending' /*case 'Descending'*/: break; + case 'order' /*case 'Order'*/: break; + case 'casesensitive' /*case 'CaseSensitive'*/: break; + case 'value' /*case 'Value'*/: break; + case 'errorstyle' /*case 'ErrorStyle'*/: break; + case 'errormessage' /*case 'ErrorMessage'*/: break; + case 'errortitle' /*case 'ErrorTitle'*/: break; + case 'inputmessage' /*case 'InputMessage'*/: break; + case 'inputtitle' /*case 'InputTitle'*/: break; + case 'combohide' /*case 'ComboHide'*/: break; + case 'inputhide' /*case 'InputHide'*/: break; + case 'condition' /*case 'Condition'*/: break; + case 'qualifier' /*case 'Qualifier'*/: break; + case 'useblank' /*case 'UseBlank'*/: break; + case 'value1' /*case 'Value1'*/: break; + case 'value2' /*case 'Value2'*/: break; + case 'format' /*case 'Format'*/: break; + + case 'cellrangelist' /*case 'CellRangeList'*/: break; + default: seen = false; + } break; + + case 'sorting' /*case 'Sorting'*/: + case 'conditionalformatting' /*case 'ConditionalFormatting'*/: + switch(Rn[3]) { + case 'range' /*case 'Range'*/: break; + case 'type' /*case 'Type'*/: break; + case 'min' /*case 'Min'*/: break; + case 'max' /*case 'Max'*/: break; + case 'sort' /*case 'Sort'*/: break; + case 'descending' /*case 'Descending'*/: break; + case 'order' /*case 'Order'*/: break; + case 'casesensitive' /*case 'CaseSensitive'*/: break; + case 'value' /*case 'Value'*/: break; + case 'errorstyle' /*case 'ErrorStyle'*/: break; + case 'errormessage' /*case 'ErrorMessage'*/: break; + case 'errortitle' /*case 'ErrorTitle'*/: break; + case 'cellrangelist' /*case 'CellRangeList'*/: break; + case 'inputmessage' /*case 'InputMessage'*/: break; + case 'inputtitle' /*case 'InputTitle'*/: break; + case 'combohide' /*case 'ComboHide'*/: break; + case 'inputhide' /*case 'InputHide'*/: break; + case 'condition' /*case 'Condition'*/: break; + case 'qualifier' /*case 'Qualifier'*/: break; + case 'useblank' /*case 'UseBlank'*/: break; + case 'value1' /*case 'Value1'*/: break; + case 'value2' /*case 'Value2'*/: break; + case 'format' /*case 'Format'*/: break; + default: seen = false; + } break; + + /* MapInfo (schema) */ + case 'mapinfo' /*case 'MapInfo'*/: case 'schema' /*case 'Schema'*/: case 'data' /*case 'data'*/: switch(Rn[3]) { + case 'map' /*case 'Map'*/: break; + case 'entry' /*case 'Entry'*/: break; + case 'range' /*case 'Range'*/: break; + case 'xpath' /*case 'XPath'*/: break; + case 'field' /*case 'Field'*/: break; + case 'xsdtype' /*case 'XSDType'*/: break; + case 'filteron' /*case 'FilterOn'*/: break; + case 'aggregate' /*case 'Aggregate'*/: break; + case 'elementtype' /*case 'ElementType'*/: break; + case 'attributetype' /*case 'AttributeType'*/: break; + /* These are from xsd (XML Schema Definition) */ + case 'schema' /*case 'schema'*/: + case 'element' /*case 'element'*/: + case 'complextype' /*case 'complexType'*/: + case 'datatype' /*case 'datatype'*/: + case 'all' /*case 'all'*/: + case 'attribute' /*case 'attribute'*/: + case 'extends' /*case 'extends'*/: break; + + case 'row' /*case 'row'*/: break; + default: seen = false; + } break; + + /* SmartTags (can be anything) */ + case 'smarttags' /*case 'SmartTags'*/: break; + + default: seen = false; break; + } + if(seen) break; + /* CustomDocumentProperties */ + if(Rn[3].match(/!\[CDATA/)) break; + if(!state[state.length-1][1]) throw 'Unrecognized tag: ' + Rn[3] + "|" + state.join("|"); + if(state[state.length-1][0]===/*'CustomDocumentProperties'*/'customdocumentproperties') { + if(Rn[0].slice(-2) === "/>") break; + else if(Rn[1]==="/") xlml_set_custprop(Custprops, raw_Rn3, cp, str.slice(pidx, Rn.index)); + else { cp = Rn; pidx = Rn.index + Rn[0].length; } + break; + } + if(opts.WTF) throw 'Unrecognized tag: ' + Rn[3] + "|" + state.join("|"); + } + var out = ({}/*:any*/); + if(!opts.bookSheets && !opts.bookProps) out.Sheets = sheets; + out.SheetNames = sheetnames; + out.Workbook = Workbook; + out.SSF = dup(table_fmt); + out.Props = Props; + out.Custprops = Custprops; + return out; +} + +function parse_xlml(data/*:RawBytes|string*/, opts)/*:Workbook*/ { + fix_read_opts(opts=opts||{}); + switch(opts.type||"base64") { + case "base64": return parse_xlml_xml(Base64_decode(data), opts); + case "binary": case "buffer": case "file": return parse_xlml_xml(data, opts); + case "array": return parse_xlml_xml(a2s(data), opts); + } + /*:: throw new Error("unsupported type " + opts.type); */ +} + +/* TODO */ +function write_props_xlml(wb/*:Workbook*/, opts)/*:string*/ { + var o/*:Array*/ = []; + /* DocumentProperties */ + if(wb.Props) o.push(xlml_write_docprops(wb.Props, opts)); + /* CustomDocumentProperties */ + if(wb.Custprops) o.push(xlml_write_custprops(wb.Props, wb.Custprops, opts)); + return o.join(""); +} +/* TODO */ +function write_wb_xlml(/*::wb, opts*/)/*:string*/ { + /* OfficeDocumentSettings */ + /* ExcelWorkbook */ + return ""; +} +/* TODO */ +function write_sty_xlml(wb, opts)/*:string*/ { + /* Styles */ + var styles/*:Array*/ = ['']; + opts.cellXfs.forEach(function(xf, id) { + var payload/*:Array*/ = []; + payload.push(writextag('NumberFormat', null, {"ss:Format": escapexml(table_fmt[xf.numFmtId])})); + + var o = /*::(*/{"ss:ID": "s" + (21+id)}/*:: :any)*/; + styles.push(writextag('Style', payload.join(""), o)); + }); + return writextag("Styles", styles.join("")); +} +function write_name_xlml(n) { return writextag("NamedRange", null, {"ss:Name": n.Name, "ss:RefersTo":"=" + a1_to_rc(n.Ref, {r:0,c:0})}); } +function write_names_xlml(wb/*::, opts*/)/*:string*/ { + if(!((wb||{}).Workbook||{}).Names) return ""; + /*:: if(!wb || !wb.Workbook || !wb.Workbook.Names) throw new Error("unreachable"); */ + var names/*:Array*/ = wb.Workbook.Names; + var out/*:Array*/ = []; + for(var i = 0; i < names.length; ++i) { + var n = names[i]; + if(n.Sheet != null) continue; + if(n.Name.match(/^_xlfn\./)) continue; + out.push(write_name_xlml(n)); + } + return writextag("Names", out.join("")); +} +function write_ws_xlml_names(ws/*:Worksheet*/, opts, idx/*:number*/, wb/*:Workbook*/)/*:string*/ { + if(!ws) return ""; + if(!((wb||{}).Workbook||{}).Names) return ""; + /*:: if(!wb || !wb.Workbook || !wb.Workbook.Names) throw new Error("unreachable"); */ + var names/*:Array*/ = wb.Workbook.Names; + var out/*:Array*/ = []; + for(var i = 0; i < names.length; ++i) { + var n = names[i]; + if(n.Sheet != idx) continue; + /*switch(n.Name) { + case "_": continue; + }*/ + if(n.Name.match(/^_xlfn\./)) continue; + out.push(write_name_xlml(n)); + } + return out.join(""); +} +/* WorksheetOptions */ +function write_ws_xlml_wsopts(ws/*:Worksheet*/, opts, idx/*:number*/, wb/*:Workbook*/)/*:string*/ { + if(!ws) return ""; + var o/*:Array*/ = []; + /* NOTE: spec technically allows any order, but stick with implied order */ + + /* FitToPage */ + /* DoNotDisplayColHeaders */ + /* DoNotDisplayRowHeaders */ + /* ViewableRange */ + /* Selection */ + /* GridlineColor */ + /* Name */ + /* ExcelWorksheetType */ + /* IntlMacro */ + /* Unsynced */ + /* Selected */ + /* CodeName */ + + if(ws['!margins']) { + o.push(""); + if(ws['!margins'].header) o.push(writextag("Header", null, {'x:Margin':ws['!margins'].header})); + if(ws['!margins'].footer) o.push(writextag("Footer", null, {'x:Margin':ws['!margins'].footer})); + o.push(writextag("PageMargins", null, { + 'x:Bottom': ws['!margins'].bottom || "0.75", + 'x:Left': ws['!margins'].left || "0.7", + 'x:Right': ws['!margins'].right || "0.7", + 'x:Top': ws['!margins'].top || "0.75" + })); + o.push(""); + } + + /* PageSetup */ + /* DisplayPageBreak */ + /* TransitionExpressionEvaluation */ + /* TransitionFormulaEntry */ + /* Print */ + /* Zoom */ + /* PageLayoutZoom */ + /* PageBreakZoom */ + /* ShowPageBreakZoom */ + /* DefaultRowHeight */ + /* DefaultColumnWidth */ + /* StandardWidth */ + + if(wb && wb.Workbook && wb.Workbook.Sheets && wb.Workbook.Sheets[idx]) { + /* Visible */ + if(wb.Workbook.Sheets[idx].Hidden) o.push(writextag("Visible", (wb.Workbook.Sheets[idx].Hidden == 1 ? "SheetHidden" : "SheetVeryHidden"), {})); + else { + /* Selected */ + for(var i = 0; i < idx; ++i) if(wb.Workbook.Sheets[i] && !wb.Workbook.Sheets[i].Hidden) break; + if(i == idx) o.push(""); + } + } + + /* LeftColumnVisible */ + + if(((((wb||{}).Workbook||{}).Views||[])[0]||{}).RTL) o.push(""); + + /* GridlineColorIndex */ + /* DisplayFormulas */ + /* DoNotDisplayGridlines */ + /* DoNotDisplayHeadings */ + /* DoNotDisplayOutline */ + /* ApplyAutomaticOutlineStyles */ + /* NoSummaryRowsBelowDetail */ + /* NoSummaryColumnsRightDetail */ + /* DoNotDisplayZeros */ + /* ActiveRow */ + /* ActiveColumn */ + /* FilterOn */ + /* RangeSelection */ + /* TopRowVisible */ + /* TopRowBottomPane */ + /* LeftColumnRightPane */ + /* ActivePane */ + /* SplitHorizontal */ + /* SplitVertical */ + /* FreezePanes */ + /* FrozenNoSplit */ + /* TabColorIndex */ + /* Panes */ + + /* NOTE: Password not supported in XLML Format */ + if(ws['!protect']) { + o.push(writetag("ProtectContents", "True")); + if(ws['!protect'].objects) o.push(writetag("ProtectObjects", "True")); + if(ws['!protect'].scenarios) o.push(writetag("ProtectScenarios", "True")); + if(ws['!protect'].selectLockedCells != null && !ws['!protect'].selectLockedCells) o.push(writetag("EnableSelection", "NoSelection")); + else if(ws['!protect'].selectUnlockedCells != null && !ws['!protect'].selectUnlockedCells) o.push(writetag("EnableSelection", "UnlockedCells")); + [ + [ "formatCells", "AllowFormatCells" ], + [ "formatColumns", "AllowSizeCols" ], + [ "formatRows", "AllowSizeRows" ], + [ "insertColumns", "AllowInsertCols" ], + [ "insertRows", "AllowInsertRows" ], + [ "insertHyperlinks", "AllowInsertHyperlinks" ], + [ "deleteColumns", "AllowDeleteCols" ], + [ "deleteRows", "AllowDeleteRows" ], + [ "sort", "AllowSort" ], + [ "autoFilter", "AllowFilter" ], + [ "pivotTables", "AllowUsePivotTables" ] + ].forEach(function(x) { if(ws['!protect'][x[0]]) o.push("<"+x[1]+"/>"); }); + } + + if(o.length == 0) return ""; + return writextag("WorksheetOptions", o.join(""), {xmlns:XLMLNS.x}); +} +function write_ws_xlml_comment(comments/*:Array*/)/*:string*/ { + return comments.map(function(c) { + // TODO: formatted text + var t = xlml_unfixstr(c.t||""); + var d =writextag("ss:Data", t, {"xmlns":"http://www.w3.org/TR/REC-html40"}); + return writextag("Comment", d, {"ss:Author":c.a}); + }).join(""); +} +function write_ws_xlml_cell(cell, ref/*:string*/, ws, opts, idx/*:number*/, wb, addr)/*:string*/{ + if(!cell || (cell.v == undefined && cell.f == undefined)) return ""; + + var attr = {}; + if(cell.f) attr["ss:Formula"] = "=" + escapexml(a1_to_rc(cell.f, addr)); + if(cell.F && cell.F.slice(0, ref.length) == ref) { + var end = decode_cell(cell.F.slice(ref.length + 1)); + attr["ss:ArrayRange"] = "RC:R" + (end.r == addr.r ? "" : "[" + (end.r - addr.r) + "]") + "C" + (end.c == addr.c ? "" : "[" + (end.c - addr.c) + "]"); + } + + if(cell.l && cell.l.Target) { + attr["ss:HRef"] = escapexml(cell.l.Target); + if(cell.l.Tooltip) attr["x:HRefScreenTip"] = escapexml(cell.l.Tooltip); + } + + if(ws['!merges']) { + var marr = ws['!merges']; + for(var mi = 0; mi != marr.length; ++mi) { + if(marr[mi].s.c != addr.c || marr[mi].s.r != addr.r) continue; + if(marr[mi].e.c > marr[mi].s.c) attr['ss:MergeAcross'] = marr[mi].e.c - marr[mi].s.c; + if(marr[mi].e.r > marr[mi].s.r) attr['ss:MergeDown'] = marr[mi].e.r - marr[mi].s.r; + } + } + + var t = "", p = ""; + switch(cell.t) { + case 'z': if(!opts.sheetStubs) return ""; break; + case 'n': t = 'Number'; p = String(cell.v); break; + case 'b': t = 'Boolean'; p = (cell.v ? "1" : "0"); break; + case 'e': t = 'Error'; p = BErr[cell.v]; break; + case 'd': t = 'DateTime'; p = new Date(cell.v).toISOString(); if(cell.z == null) cell.z = cell.z || table_fmt[14]; break; + case 's': t = 'String'; p = escapexlml(cell.v||""); break; + } + /* TODO: cell style */ + var os = get_cell_style(opts.cellXfs, cell, opts); + attr["ss:StyleID"] = "s" + (21+os); + attr["ss:Index"] = addr.c + 1; + var _v = (cell.v != null ? p : ""); + var m = cell.t == 'z' ? "" : ('' + _v + ''); + + if((cell.c||[]).length > 0) m += write_ws_xlml_comment(cell.c); + + return writextag("Cell", m, attr); +} +function write_ws_xlml_row(R/*:number*/, row)/*:string*/ { + var o = ''; +} +/* TODO */ +function write_ws_xlml_table(ws/*:Worksheet*/, opts, idx/*:number*/, wb/*:Workbook*/)/*:string*/ { + if(!ws['!ref']) return ""; + var range/*:Range*/ = safe_decode_range(ws['!ref']); + var marr/*:Array*/ = ws['!merges'] || [], mi = 0; + var o/*:Array*/ = []; + if(ws['!cols']) ws['!cols'].forEach(function(n, i) { + process_col(n); + var w = !!n.width; + var p = col_obj_w(i, n); + var k/*:any*/ = {"ss:Index":i+1}; + if(w) k['ss:Width'] = width2px(p.width); + if(n.hidden) k['ss:Hidden']="1"; + o.push(writextag("Column",null,k)); + }); + var dense = Array.isArray(ws); + for(var R = range.s.r; R <= range.e.r; ++R) { + var row = [write_ws_xlml_row(R, (ws['!rows']||[])[R])]; + for(var C = range.s.c; C <= range.e.c; ++C) { + var skip = false; + for(mi = 0; mi != marr.length; ++mi) { + if(marr[mi].s.c > C) continue; + if(marr[mi].s.r > R) continue; + if(marr[mi].e.c < C) continue; + if(marr[mi].e.r < R) continue; + if(marr[mi].s.c != C || marr[mi].s.r != R) skip = true; + break; + } + if(skip) continue; + var addr = {r:R,c:C}; + var ref = encode_cell(addr), cell = dense ? (ws[R]||[])[C] : ws[ref]; + row.push(write_ws_xlml_cell(cell, ref, ws, opts, idx, wb, addr)); + } + row.push(""); + if(row.length > 2) o.push(row.join("")); + } + return o.join(""); +} +function write_ws_xlml(idx/*:number*/, opts, wb/*:Workbook*/)/*:string*/ { + var o/*:Array*/ = []; + var s = wb.SheetNames[idx]; + var ws = wb.Sheets[s]; + + var t/*:string*/ = ws ? write_ws_xlml_names(ws, opts, idx, wb) : ""; + if(t.length > 0) o.push("" + t + ""); + + /* Table */ + t = ws ? write_ws_xlml_table(ws, opts, idx, wb) : ""; + if(t.length > 0) o.push("
" + t + "
"); + + /* WorksheetOptions */ + o.push(write_ws_xlml_wsopts(ws, opts, idx, wb)); + + return o.join(""); +} +function write_xlml(wb, opts)/*:string*/ { + if(!opts) opts = {}; + if(!wb.SSF) wb.SSF = dup(table_fmt); + if(wb.SSF) { + make_ssf(); SSF_load_table(wb.SSF); + // $FlowIgnore + opts.revssf = evert_num(wb.SSF); opts.revssf[wb.SSF[65535]] = 0; + opts.ssf = wb.SSF; + opts.cellXfs = []; + get_cell_style(opts.cellXfs, {}, {revssf:{"General":0}}); + } + var d/*:Array*/ = []; + d.push(write_props_xlml(wb, opts)); + d.push(write_wb_xlml(wb, opts)); + d.push(""); + d.push(""); + for(var i = 0; i < wb.SheetNames.length; ++i) + d.push(writextag("Worksheet", write_ws_xlml(i, opts, wb), {"ss:Name":escapexml(wb.SheetNames[i])})); + d[2] = write_sty_xlml(wb, opts); + d[3] = write_names_xlml(wb, opts); + return XML_HEADER + writextag("Workbook", d.join(""), { + 'xmlns': XLMLNS.ss, + 'xmlns:o': XLMLNS.o, + 'xmlns:x': XLMLNS.x, + 'xmlns:ss': XLMLNS.ss, + 'xmlns:dt': XLMLNS.dt, + 'xmlns:html': XLMLNS.html + }); +} +/* [MS-OLEDS] 2.3.8 CompObjStream */ +function parse_compobj(obj/*:CFBEntry*/) { + var v = {}; + var o = obj.content; + /*:: if(o == null) return; */ + + /* [MS-OLEDS] 2.3.7 CompObjHeader -- All fields MUST be ignored */ + o.l = 28; + + v.AnsiUserType = o.read_shift(0, "lpstr-ansi"); + v.AnsiClipboardFormat = parse_ClipboardFormatOrAnsiString(o); + + if(o.length - o.l <= 4) return v; + + var m/*:number*/ = o.read_shift(4); + if(m == 0 || m > 40) return v; + o.l-=4; v.Reserved1 = o.read_shift(0, "lpstr-ansi"); + + if(o.length - o.l <= 4) return v; + m = o.read_shift(4); + if(m !== 0x71b239f4) return v; + v.UnicodeClipboardFormat = parse_ClipboardFormatOrUnicodeString(o); + + m = o.read_shift(4); + if(m == 0 || m > 40) return v; + o.l-=4; v.Reserved2 = o.read_shift(0, "lpwstr"); +} + +/* + Continue logic for: + - 2.4.58 Continue 0x003c + - 2.4.59 ContinueBigName 0x043c + - 2.4.60 ContinueFrt 0x0812 + - 2.4.61 ContinueFrt11 0x0875 + - 2.4.62 ContinueFrt12 0x087f +*/ +var CONTINUE_RT = [ 0x003c, 0x043c, 0x0812, 0x0875, 0x087f ]; +function slurp(RecordType, R, blob, length/*:number*/, opts)/*:any*/ { + var l = length; + var bufs = []; + var d = blob.slice(blob.l,blob.l+l); + if(opts && opts.enc && opts.enc.insitu && d.length > 0) switch(RecordType) { + case 0x0009: case 0x0209: case 0x0409: case 0x0809/* BOF */: case 0x002f /* FilePass */: case 0x0195 /* FileLock */: case 0x00e1 /* InterfaceHdr */: case 0x0196 /* RRDInfo */: case 0x0138 /* RRDHead */: case 0x0194 /* UsrExcl */: case 0x000a /* EOF */: + break; + case 0x0085 /* BoundSheet8 */: + break; + default: + opts.enc.insitu(d); + } + bufs.push(d); + blob.l += l; + var nextrt = __readUInt16LE(blob,blob.l), next = XLSRecordEnum[nextrt]; + var start = 0; + while(next != null && CONTINUE_RT.indexOf(nextrt) > -1) { + l = __readUInt16LE(blob,blob.l+2); + start = blob.l + 4; + if(nextrt == 0x0812 /* ContinueFrt */) start += 4; + else if(nextrt == 0x0875 || nextrt == 0x087f) { + start += 12; + } + d = blob.slice(start,blob.l+4+l); + bufs.push(d); + blob.l += 4+l; + next = (XLSRecordEnum[nextrt = __readUInt16LE(blob, blob.l)]); + } + var b = (bconcat(bufs)/*:any*/); + prep_blob(b, 0); + var ll = 0; b.lens = []; + for(var j = 0; j < bufs.length; ++j) { b.lens.push(ll); ll += bufs[j].length; } + if(b.length < length) throw "XLS Record 0x" + RecordType.toString(16) + " Truncated: " + b.length + " < " + length; + return R.f(b, b.length, opts); +} + +function safe_format_xf(p/*:any*/, opts/*:ParseOpts*/, date1904/*:?boolean*/) { + if(p.t === 'z') return; + if(!p.XF) return; + var fmtid = 0; + try { + fmtid = p.z || p.XF.numFmtId || 0; + if(opts.cellNF) p.z = table_fmt[fmtid]; + } catch(e) { if(opts.WTF) throw e; } + if(!opts || opts.cellText !== false) try { + if(p.t === 'e') { p.w = p.w || BErr[p.v]; } + else if(fmtid === 0 || fmtid == "General") { + if(p.t === 'n') { + if((p.v|0) === p.v) p.w = p.v.toString(10); + else p.w = SSF_general_num(p.v); + } + else p.w = SSF_general(p.v); + } + else p.w = SSF_format(fmtid,p.v, {date1904:!!date1904, dateNF: opts && opts.dateNF}); + } catch(e) { if(opts.WTF) throw e; } + if(opts.cellDates && fmtid && p.t == 'n' && fmt_is_date(table_fmt[fmtid] || String(fmtid))) { + var _d = SSF_parse_date_code(p.v); if(_d) { p.t = 'd'; p.v = new Date(_d.y, _d.m-1,_d.d,_d.H,_d.M,_d.S,_d.u); } + } +} + +function make_cell(val, ixfe, t)/*:Cell*/ { + return ({v:val, ixfe:ixfe, t:t}/*:any*/); +} + +// 2.3.2 +function parse_workbook(blob, options/*:ParseOpts*/)/*:Workbook*/ { + var wb = ({opts:{}}/*:any*/); + var Sheets = {}; + if(DENSE != null && options.dense == null) options.dense = DENSE; + var out/*:Worksheet*/ = ((options.dense ? [] : {})/*:any*/); + var Directory = {}; + var range/*:Range*/ = ({}/*:any*/); + var last_formula = null; + var sst/*:SST*/ = ([]/*:any*/); + var cur_sheet = ""; + var Preamble = {}; + var lastcell, last_cell = "", cc/*:Cell*/, cmnt, rngC, rngR; + var sharedf = {}; + var arrayf/*:Array<[Range, string]>*/ = []; + var temp_val/*:Cell*/; + var country; + var XFs = []; /* XF records */ + var palette/*:Array<[number, number, number]>*/ = []; + var Workbook/*:WBWBProps*/ = ({ Sheets:[], WBProps:{date1904:false}, Views:[{}] }/*:any*/), wsprops = {}; + var get_rgb = function getrgb(icv/*:number*/)/*:[number, number, number]*/ { + if(icv < 8) return XLSIcv[icv]; + if(icv < 64) return palette[icv-8] || XLSIcv[icv]; + return XLSIcv[icv]; + }; + var process_cell_style = function pcs(cell, line/*:any*/, options) { + var xfd = line.XF.data; + if(!xfd || !xfd.patternType || !options || !options.cellStyles) return; + line.s = ({}/*:any*/); + line.s.patternType = xfd.patternType; + var t; + if((t = rgb2Hex(get_rgb(xfd.icvFore)))) { line.s.fgColor = {rgb:t}; } + if((t = rgb2Hex(get_rgb(xfd.icvBack)))) { line.s.bgColor = {rgb:t}; } + }; + var addcell = function addcell(cell/*:any*/, line/*:any*/, options/*:any*/) { + if(file_depth > 1) return; + if(options.sheetRows && cell.r >= options.sheetRows) return; + if(options.cellStyles && line.XF && line.XF.data) process_cell_style(cell, line, options); + delete line.ixfe; delete line.XF; + lastcell = cell; + last_cell = encode_cell(cell); + if(!range || !range.s || !range.e) range = {s:{r:0,c:0},e:{r:0,c:0}}; + if(cell.r < range.s.r) range.s.r = cell.r; + if(cell.c < range.s.c) range.s.c = cell.c; + if(cell.r + 1 > range.e.r) range.e.r = cell.r + 1; + if(cell.c + 1 > range.e.c) range.e.c = cell.c + 1; + if(options.cellFormula && line.f) { + for(var afi = 0; afi < arrayf.length; ++afi) { + if(arrayf[afi][0].s.c > cell.c || arrayf[afi][0].s.r > cell.r) continue; + if(arrayf[afi][0].e.c < cell.c || arrayf[afi][0].e.r < cell.r) continue; + line.F = encode_range(arrayf[afi][0]); + if(arrayf[afi][0].s.c != cell.c || arrayf[afi][0].s.r != cell.r) delete line.f; + if(line.f) line.f = "" + stringify_formula(arrayf[afi][1], range, cell, supbooks, opts); + break; + } + } + { + if(options.dense) { + if(!out[cell.r]) out[cell.r] = []; + out[cell.r][cell.c] = line; + } else out[last_cell] = line; + } + }; + var opts = ({ + enc: false, // encrypted + sbcch: 0, // cch in the preceding SupBook + snames: [], // sheetnames + sharedf: sharedf, // shared formulae by address + arrayf: arrayf, // array formulae array + rrtabid: [], // RRTabId + lastuser: "", // Last User from WriteAccess + biff: 8, // BIFF version + codepage: 0, // CP from CodePage record + winlocked: 0, // fLockWn from WinProtect + cellStyles: !!options && !!options.cellStyles, + WTF: !!options && !!options.wtf + }/*:any*/); + if(options.password) opts.password = options.password; + var themes; + var merges/*:Array*/ = []; + var objects = []; + var colinfo/*:Array*/ = [], rowinfo/*:Array*/ = []; + var seencol = false; + var supbooks = ([]/*:any*/); // 1-indexed, will hold extern names + supbooks.SheetNames = opts.snames; + supbooks.sharedf = opts.sharedf; + supbooks.arrayf = opts.arrayf; + supbooks.names = []; + supbooks.XTI = []; + var last_RT = 0; + var file_depth = 0; /* TODO: make a real stack */ + var BIFF2Fmt = 0, BIFF2FmtTable/*:Array*/ = []; + var FilterDatabases = []; /* TODO: sort out supbooks and process elsewhere */ + var last_lbl/*:?DefinedName*/; + + /* explicit override for some broken writers */ + opts.codepage = 1200; + set_cp(1200); + var seen_codepage = false; + while(blob.l < blob.length - 1) { + var s = blob.l; + var RecordType = blob.read_shift(2); + if(RecordType === 0 && last_RT === 0x000a /* EOF */) break; + var length = (blob.l === blob.length ? 0 : blob.read_shift(2)); + var R = XLSRecordEnum[RecordType]; + //console.log(RecordType.toString(16), RecordType, R, blob.l, length, blob.length); + //if(!R) console.log(blob.slice(blob.l, blob.l + length)); + if(R && R.f) { + if(options.bookSheets) { + if(last_RT === 0x0085 /* BoundSheet8 */ && RecordType !== 0x0085 /* R.n !== 'BoundSheet8' */) break; + } + last_RT = RecordType; + if(R.r === 2 || R.r == 12) { + var rt = blob.read_shift(2); length -= 2; + if(!opts.enc && rt !== RecordType && (((rt&0xFF)<<8)|(rt>>8)) !== RecordType) throw new Error("rt mismatch: " + rt + "!=" + RecordType); + if(R.r == 12){ + blob.l += 10; length -= 10; + } // skip FRT + } + //console.error(R,blob.l,length,blob.length); + var val/*:any*/ = ({}/*:any*/); + if(RecordType === 0x000a /* EOF */) val = /*::(*/R.f(blob, length, opts)/*:: :any)*/; + else val = /*::(*/slurp(RecordType, R, blob, length, opts)/*:: :any)*/; + /*:: val = (val:any); */ + if(file_depth == 0 && [0x0009, 0x0209, 0x0409, 0x0809].indexOf(last_RT) === -1 /* 'BOF' */) continue; + switch(RecordType) { + case 0x0022 /* Date1904 */: + /*:: if(!Workbook.WBProps) Workbook.WBProps = {}; */ + wb.opts.Date1904 = Workbook.WBProps.date1904 = val; break; + case 0x0086 /* WriteProtect */: wb.opts.WriteProtect = true; break; + case 0x002f /* FilePass */: + if(!opts.enc) blob.l = 0; + opts.enc = val; + if(!options.password) throw new Error("File is password-protected"); + if(val.valid == null) throw new Error("Encryption scheme unsupported"); + if(!val.valid) throw new Error("Password is incorrect"); + break; + case 0x005c /* WriteAccess */: opts.lastuser = val; break; + case 0x0042 /* CodePage */: + var cpval = Number(val); + /* overrides based on test cases */ + switch(cpval) { + case 0x5212: cpval = 1200; break; + case 0x8000: cpval = 10000; break; + case 0x8001: cpval = 1252; break; + } + set_cp(opts.codepage = cpval); + seen_codepage = true; + break; + case 0x013d /* RRTabId */: opts.rrtabid = val; break; + case 0x0019 /* WinProtect */: opts.winlocked = val; break; + case 0x01b7 /* RefreshAll */: wb.opts["RefreshAll"] = val; break; + case 0x000c /* CalcCount */: wb.opts["CalcCount"] = val; break; + case 0x0010 /* CalcDelta */: wb.opts["CalcDelta"] = val; break; + case 0x0011 /* CalcIter */: wb.opts["CalcIter"] = val; break; + case 0x000d /* CalcMode */: wb.opts["CalcMode"] = val; break; + case 0x000e /* CalcPrecision */: wb.opts["CalcPrecision"] = val; break; + case 0x005f /* CalcSaveRecalc */: wb.opts["CalcSaveRecalc"] = val; break; + case 0x000f /* CalcRefMode */: opts.CalcRefMode = val; break; // TODO: implement R1C1 + case 0x08a3 /* ForceFullCalculation */: wb.opts.FullCalc = val; break; + case 0x0081 /* WsBool */: + if(val.fDialog) out["!type"] = "dialog"; + if(!val.fBelow) (out["!outline"] || (out["!outline"] = {})).above = true; + if(!val.fRight) (out["!outline"] || (out["!outline"] = {})).left = true; + break; // TODO + case 0x00e0 /* XF */: + XFs.push(val); break; + case 0x01ae /* SupBook */: + supbooks.push([val]); + supbooks[supbooks.length-1].XTI = []; + break; + case 0x0023: case 0x0223 /* ExternName */: + supbooks[supbooks.length-1].push(val); + break; + case 0x0018: case 0x0218 /* Lbl */: + last_lbl = ({ + Name: val.Name, + Ref: stringify_formula(val.rgce,range,null,supbooks,opts) + }/*:DefinedName*/); + if(val.itab > 0) last_lbl.Sheet = val.itab - 1; + supbooks.names.push(last_lbl); + if(!supbooks[0]) { supbooks[0] = []; supbooks[0].XTI = []; } + supbooks[supbooks.length-1].push(val); + if(val.Name == "_xlnm._FilterDatabase" && val.itab > 0) + if(val.rgce && val.rgce[0] && val.rgce[0][0] && val.rgce[0][0][0] == 'PtgArea3d') + FilterDatabases[val.itab - 1] = { ref: encode_range(val.rgce[0][0][1][2]) }; + break; + case 0x0016 /* ExternCount */: opts.ExternCount = val; break; + case 0x0017 /* ExternSheet */: + if(supbooks.length == 0) { supbooks[0] = []; supbooks[0].XTI = []; } + supbooks[supbooks.length - 1].XTI = supbooks[supbooks.length - 1].XTI.concat(val); supbooks.XTI = supbooks.XTI.concat(val); break; + case 0x0894 /* NameCmt */: + /* TODO: search for correct name */ + if(opts.biff < 8) break; + if(last_lbl != null) last_lbl.Comment = val[1]; + break; + case 0x0012 /* Protect */: out["!protect"] = val; break; /* for sheet or book */ + case 0x0013 /* Password */: if(val !== 0 && opts.WTF) console.error("Password verifier: " + val); break; + case 0x0085 /* BoundSheet8 */: { + Directory[val.pos] = val; + opts.snames.push(val.name); + } break; + case 0x000a /* EOF */: { + if(--file_depth) break; + if(range.e) { + if(range.e.r > 0 && range.e.c > 0) { + range.e.r--; range.e.c--; + out["!ref"] = encode_range(range); + if(options.sheetRows && options.sheetRows <= range.e.r) { + var tmpri = range.e.r; + range.e.r = options.sheetRows - 1; + out["!fullref"] = out["!ref"]; + out["!ref"] = encode_range(range); + range.e.r = tmpri; + } + range.e.r++; range.e.c++; + } + if(merges.length > 0) out["!merges"] = merges; + if(objects.length > 0) out["!objects"] = objects; + if(colinfo.length > 0) out["!cols"] = colinfo; + if(rowinfo.length > 0) out["!rows"] = rowinfo; + Workbook.Sheets.push(wsprops); + } + if(cur_sheet === "") Preamble = out; else Sheets[cur_sheet] = out; + out = ((options.dense ? [] : {})/*:any*/); + } break; + case 0x0009: case 0x0209: case 0x0409: case 0x0809 /* BOF */: { + if(opts.biff === 8) opts.biff = { + /*::[*/0x0009/*::]*/:2, + /*::[*/0x0209/*::]*/:3, + /*::[*/0x0409/*::]*/:4 + }[RecordType] || { + /*::[*/0x0200/*::]*/:2, + /*::[*/0x0300/*::]*/:3, + /*::[*/0x0400/*::]*/:4, + /*::[*/0x0500/*::]*/:5, + /*::[*/0x0600/*::]*/:8, + /*::[*/0x0002/*::]*/:2, + /*::[*/0x0007/*::]*/:2 + }[val.BIFFVer] || 8; + opts.biffguess = val.BIFFVer == 0; + if(val.BIFFVer == 0 && val.dt == 0x1000) { opts.biff = 5; seen_codepage = true; set_cp(opts.codepage = 28591); } + if(opts.biff == 8 && val.BIFFVer == 0 && val.dt == 16) opts.biff = 2; + if(file_depth++) break; + out = ((options.dense ? [] : {})/*:any*/); + + if(opts.biff < 8 && !seen_codepage) { seen_codepage = true; set_cp(opts.codepage = options.codepage || 1252); } + + if(opts.biff < 5 || val.BIFFVer == 0 && val.dt == 0x1000) { + if(cur_sheet === "") cur_sheet = "Sheet1"; + range = {s:{r:0,c:0},e:{r:0,c:0}}; + /* fake BoundSheet8 */ + var fakebs8 = {pos: blob.l - length, name:cur_sheet}; + Directory[fakebs8.pos] = fakebs8; + opts.snames.push(cur_sheet); + } + else cur_sheet = (Directory[s] || {name:""}).name; + if(val.dt == 0x20) out["!type"] = "chart"; + if(val.dt == 0x40) out["!type"] = "macro"; + merges = []; + objects = []; + opts.arrayf = arrayf = []; + colinfo = []; rowinfo = []; + seencol = false; + wsprops = {Hidden:(Directory[s]||{hs:0}).hs, name:cur_sheet }; + } break; + case 0x0203 /* Number */: case 0x0003 /* BIFF2NUM */: case 0x0002 /* BIFF2INT */: { + if(out["!type"] == "chart") if(options.dense ? (out[val.r]||[])[val.c]: out[encode_cell({c:val.c, r:val.r})]) ++val.c; + temp_val = ({ixfe: val.ixfe, XF: XFs[val.ixfe]||{}, v:val.val, t:'n'}/*:any*/); + if(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F]; + safe_format_xf(temp_val, options, wb.opts.Date1904); + addcell({c:val.c, r:val.r}, temp_val, options); + } break; + case 0x0005: case 0x0205 /* BoolErr */: { + temp_val = ({ixfe: val.ixfe, XF: XFs[val.ixfe], v:val.val, t:val.t}/*:any*/); + if(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F]; + safe_format_xf(temp_val, options, wb.opts.Date1904); + addcell({c:val.c, r:val.r}, temp_val, options); + } break; + case 0x027e /* RK */: { + temp_val = ({ixfe: val.ixfe, XF: XFs[val.ixfe], v:val.rknum, t:'n'}/*:any*/); + if(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F]; + safe_format_xf(temp_val, options, wb.opts.Date1904); + addcell({c:val.c, r:val.r}, temp_val, options); + } break; + case 0x00bd /* MulRk */: { + for(var j = val.c; j <= val.C; ++j) { + var ixfe = val.rkrec[j-val.c][0]; + temp_val= ({ixfe:ixfe, XF:XFs[ixfe], v:val.rkrec[j-val.c][1], t:'n'}/*:any*/); + if(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F]; + safe_format_xf(temp_val, options, wb.opts.Date1904); + addcell({c:j, r:val.r}, temp_val, options); + } + } break; + case 0x0006: case 0x0206: case 0x0406 /* Formula */: { + if(val.val == 'String') { last_formula = val; break; } + temp_val = make_cell(val.val, val.cell.ixfe, val.tt); + temp_val.XF = XFs[temp_val.ixfe]; + if(options.cellFormula) { + var _f = val.formula; + if(_f && _f[0] && _f[0][0] && _f[0][0][0] == 'PtgExp') { + var _fr = _f[0][0][1][0], _fc = _f[0][0][1][1]; + var _fe = encode_cell({r:_fr, c:_fc}); + if(sharedf[_fe]) temp_val.f = ""+stringify_formula(val.formula,range,val.cell,supbooks, opts); + else temp_val.F = ((options.dense ? (out[_fr]||[])[_fc]: out[_fe]) || {}).F; + } else temp_val.f = ""+stringify_formula(val.formula,range,val.cell,supbooks, opts); + } + if(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F]; + safe_format_xf(temp_val, options, wb.opts.Date1904); + addcell(val.cell, temp_val, options); + last_formula = val; + } break; + case 0x0007: case 0x0207 /* String */: { + if(last_formula) { /* technically always true */ + last_formula.val = val; + temp_val = make_cell(val, last_formula.cell.ixfe, 's'); + temp_val.XF = XFs[temp_val.ixfe]; + if(options.cellFormula) { + temp_val.f = ""+stringify_formula(last_formula.formula, range, last_formula.cell, supbooks, opts); + } + if(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F]; + safe_format_xf(temp_val, options, wb.opts.Date1904); + addcell(last_formula.cell, temp_val, options); + last_formula = null; + } else throw new Error("String record expects Formula"); + } break; + case 0x0021: case 0x0221 /* Array */: { + arrayf.push(val); + var _arraystart = encode_cell(val[0].s); + cc = options.dense ? (out[val[0].s.r]||[])[val[0].s.c] : out[_arraystart]; + if(options.cellFormula && cc) { + if(!last_formula) break; /* technically unreachable */ + if(!_arraystart || !cc) break; + cc.f = ""+stringify_formula(val[1], range, val[0], supbooks, opts); + cc.F = encode_range(val[0]); + } + } break; + case 0x04bc /* ShrFmla */: { + if(!options.cellFormula) break; + if(last_cell) { + /* TODO: capture range */ + if(!last_formula) break; /* technically unreachable */ + sharedf[encode_cell(last_formula.cell)]= val[0]; + cc = options.dense ? (out[last_formula.cell.r]||[])[last_formula.cell.c] : out[encode_cell(last_formula.cell)]; + (cc||{}).f = ""+stringify_formula(val[0], range, lastcell, supbooks, opts); + } + } break; + case 0x00fd /* LabelSst */: + temp_val=make_cell(sst[val.isst].t, val.ixfe, 's'); + if(sst[val.isst].h) temp_val.h = sst[val.isst].h; + temp_val.XF = XFs[temp_val.ixfe]; + if(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F]; + safe_format_xf(temp_val, options, wb.opts.Date1904); + addcell({c:val.c, r:val.r}, temp_val, options); + break; + case 0x0201 /* Blank */: if(options.sheetStubs) { + temp_val = ({ixfe: val.ixfe, XF: XFs[val.ixfe], t:'z'}/*:any*/); + if(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F]; + safe_format_xf(temp_val, options, wb.opts.Date1904); + addcell({c:val.c, r:val.r}, temp_val, options); + } break; + case 0x00be /* MulBlank */: if(options.sheetStubs) { + for(var _j = val.c; _j <= val.C; ++_j) { + var _ixfe = val.ixfe[_j-val.c]; + temp_val= ({ixfe:_ixfe, XF:XFs[_ixfe], t:'z'}/*:any*/); + if(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F]; + safe_format_xf(temp_val, options, wb.opts.Date1904); + addcell({c:_j, r:val.r}, temp_val, options); + } + } break; + case 0x00d6 /* RString */: + case 0x0204 /* Label */: case 0x0004 /* BIFF2STR */: + temp_val=make_cell(val.val, val.ixfe, 's'); + temp_val.XF = XFs[temp_val.ixfe]; + if(BIFF2Fmt > 0) temp_val.z = BIFF2FmtTable[(temp_val.ixfe>>8) & 0x3F]; + safe_format_xf(temp_val, options, wb.opts.Date1904); + addcell({c:val.c, r:val.r}, temp_val, options); + break; + + case 0x0000: case 0x0200 /* Dimensions */: { + if(file_depth === 1) range = val; /* TODO: stack */ + } break; + case 0x00fc /* SST */: { + sst = val; + } break; + case 0x041e /* Format */: { /* val = [id, fmt] */ + if(opts.biff == 4) { + BIFF2FmtTable[BIFF2Fmt++] = val[1]; + for(var b4idx = 0; b4idx < BIFF2Fmt + 163; ++b4idx) if(table_fmt[b4idx] == val[1]) break; + if(b4idx >= 163) SSF_load(val[1], BIFF2Fmt + 163); + } + else SSF_load(val[1], val[0]); + } break; + case 0x001e /* BIFF2FORMAT */: { + BIFF2FmtTable[BIFF2Fmt++] = val; + for(var b2idx = 0; b2idx < BIFF2Fmt + 163; ++b2idx) if(table_fmt[b2idx] == val) break; + if(b2idx >= 163) SSF_load(val, BIFF2Fmt + 163); + } break; + + case 0x00e5 /* MergeCells */: merges = merges.concat(val); break; + + case 0x005d /* Obj */: objects[val.cmo[0]] = opts.lastobj = val; break; + case 0x01b6 /* TxO */: opts.lastobj.TxO = val; break; + case 0x007f /* ImData */: opts.lastobj.ImData = val; break; + + case 0x01b8 /* HLink */: { + for(rngR = val[0].s.r; rngR <= val[0].e.r; ++rngR) + for(rngC = val[0].s.c; rngC <= val[0].e.c; ++rngC) { + cc = options.dense ? (out[rngR]||[])[rngC] : out[encode_cell({c:rngC,r:rngR})]; + if(cc) cc.l = val[1]; + } + } break; + case 0x0800 /* HLinkTooltip */: { + for(rngR = val[0].s.r; rngR <= val[0].e.r; ++rngR) + for(rngC = val[0].s.c; rngC <= val[0].e.c; ++rngC) { + cc = options.dense ? (out[rngR]||[])[rngC] : out[encode_cell({c:rngC,r:rngR})]; + if(cc && cc.l) cc.l.Tooltip = val[1]; + } + } break; + case 0x001c /* Note */: { + if(opts.biff <= 5 && opts.biff >= 2) break; /* TODO: BIFF5 */ + cc = options.dense ? (out[val[0].r]||[])[val[0].c] : out[encode_cell(val[0])]; + var noteobj = objects[val[2]]; + if(!cc) { + if(options.dense) { + if(!out[val[0].r]) out[val[0].r] = []; + cc = out[val[0].r][val[0].c] = ({t:"z"}/*:any*/); + } else { + cc = out[encode_cell(val[0])] = ({t:"z"}/*:any*/); + } + range.e.r = Math.max(range.e.r, val[0].r); + range.s.r = Math.min(range.s.r, val[0].r); + range.e.c = Math.max(range.e.c, val[0].c); + range.s.c = Math.min(range.s.c, val[0].c); + } + if(!cc.c) cc.c = []; + cmnt = {a:val[1],t:noteobj.TxO.t}; + cc.c.push(cmnt); + } break; + case 0x087d /* XFExt */: update_xfext(XFs[val.ixfe], val.ext); break; + case 0x007d /* ColInfo */: { + if(!opts.cellStyles) break; + while(val.e >= val.s) { + colinfo[val.e--] = { width: val.w/256, level: (val.level || 0), hidden: !!(val.flags & 1) }; + if(!seencol) { seencol = true; find_mdw_colw(val.w/256); } + process_col(colinfo[val.e+1]); + } + } break; + case 0x0208 /* Row */: { + var rowobj = {}; + if(val.level != null) { rowinfo[val.r] = rowobj; rowobj.level = val.level; } + if(val.hidden) { rowinfo[val.r] = rowobj; rowobj.hidden = true; } + if(val.hpt) { + rowinfo[val.r] = rowobj; + rowobj.hpt = val.hpt; rowobj.hpx = pt2px(val.hpt); + } + } break; + case 0x0026 /* LeftMargin */: + case 0x0027 /* RightMargin */: + case 0x0028 /* TopMargin */: + case 0x0029 /* BottomMargin */: + if(!out['!margins']) default_margins(out['!margins'] = {}); + out['!margins'][({0x26: "left", 0x27:"right", 0x28:"top", 0x29:"bottom"})[RecordType]] = val; + break; + case 0x00a1 /* Setup */: // TODO + if(!out['!margins']) default_margins(out['!margins'] = {}); + out['!margins'].header = val.header; + out['!margins'].footer = val.footer; + break; + case 0x023e /* Window2 */: // TODO + // $FlowIgnore + if(val.RTL) Workbook.Views[0].RTL = true; + break; + case 0x0092 /* Palette */: palette = val; break; + case 0x0896 /* Theme */: themes = val; break; + case 0x008c /* Country */: country = val; break; + case 0x01ba /* CodeName */: { + /*:: if(!Workbook.WBProps) Workbook.WBProps = {}; */ + if(!cur_sheet) Workbook.WBProps.CodeName = val || "ThisWorkbook"; + else wsprops.CodeName = val || wsprops.name; + } break; + } + } else { + if(!R) console.error("Missing Info for XLS Record 0x" + RecordType.toString(16)); + blob.l += length; + } + } + wb.SheetNames=keys(Directory).sort(function(a,b) { return Number(a) - Number(b); }).map(function(x){return Directory[x].name;}); + if(!options.bookSheets) wb.Sheets=Sheets; + if(!wb.SheetNames.length && Preamble["!ref"]) { + wb.SheetNames.push("Sheet1"); + /*jshint -W069 */ + if(wb.Sheets) wb.Sheets["Sheet1"] = Preamble; + /*jshint +W069 */ + } else wb.Preamble=Preamble; + if(wb.Sheets) FilterDatabases.forEach(function(r,i) { wb.Sheets[wb.SheetNames[i]]['!autofilter'] = r; }); + wb.Strings = sst; + wb.SSF = dup(table_fmt); + if(opts.enc) wb.Encryption = opts.enc; + if(themes) wb.Themes = themes; + wb.Metadata = {}; + if(country !== undefined) wb.Metadata.Country = country; + if(supbooks.names.length > 0) Workbook.Names = supbooks.names; + wb.Workbook = Workbook; + return wb; +} + +/* TODO: split props*/ +var PSCLSID = { + SI: "e0859ff2f94f6810ab9108002b27b3d9", + DSI: "02d5cdd59c2e1b10939708002b2cf9ae", + UDI: "05d5cdd59c2e1b10939708002b2cf9ae" +}; +function parse_xls_props(cfb/*:CFBContainer*/, props, o) { + /* [MS-OSHARED] 2.3.3.2.2 Document Summary Information Property Set */ + var DSI = CFB.find(cfb, '/!DocumentSummaryInformation'); + if(DSI && DSI.size > 0) try { + var DocSummary = parse_PropertySetStream(DSI, DocSummaryPIDDSI, PSCLSID.DSI); + for(var d in DocSummary) props[d] = DocSummary[d]; + } catch(e) {if(o.WTF) throw e;/* empty */} + + /* [MS-OSHARED] 2.3.3.2.1 Summary Information Property Set*/ + var SI = CFB.find(cfb, '/!SummaryInformation'); + if(SI && SI.size > 0) try { + var Summary = parse_PropertySetStream(SI, SummaryPIDSI, PSCLSID.SI); + for(var s in Summary) if(props[s] == null) props[s] = Summary[s]; + } catch(e) {if(o.WTF) throw e;/* empty */} + + if(props.HeadingPairs && props.TitlesOfParts) { + load_props_pairs(props.HeadingPairs, props.TitlesOfParts, props, o); + delete props.HeadingPairs; delete props.TitlesOfParts; + } +} +function write_xls_props(wb/*:Workbook*/, cfb/*:CFBContainer*/) { + var DSEntries = [], SEntries = [], CEntries = []; + var i = 0, Keys; + var DocSummaryRE/*:{[key:string]:string}*/ = evert_key(DocSummaryPIDDSI, "n"); + var SummaryRE/*:{[key:string]:string}*/ = evert_key(SummaryPIDSI, "n"); + if(wb.Props) { + Keys = keys(wb.Props); + // $FlowIgnore + for(i = 0; i < Keys.length; ++i) (Object.prototype.hasOwnProperty.call(DocSummaryRE, Keys[i]) ? DSEntries : Object.prototype.hasOwnProperty.call(SummaryRE, Keys[i]) ? SEntries : CEntries).push([Keys[i], wb.Props[Keys[i]]]); + } + if(wb.Custprops) { + Keys = keys(wb.Custprops); + // $FlowIgnore + for(i = 0; i < Keys.length; ++i) if(!Object.prototype.hasOwnProperty.call((wb.Props||{}), Keys[i])) (Object.prototype.hasOwnProperty.call(DocSummaryRE, Keys[i]) ? DSEntries : Object.prototype.hasOwnProperty.call(SummaryRE, Keys[i]) ? SEntries : CEntries).push([Keys[i], wb.Custprops[Keys[i]]]); + } + var CEntries2 = []; + for(i = 0; i < CEntries.length; ++i) { + if(XLSPSSkip.indexOf(CEntries[i][0]) > -1 || PseudoPropsPairs.indexOf(CEntries[i][0]) > -1) continue; + if(CEntries[i][1] == null) continue; + CEntries2.push(CEntries[i]); + } + if(SEntries.length) CFB.utils.cfb_add(cfb, "/\u0005SummaryInformation", write_PropertySetStream(SEntries, PSCLSID.SI, SummaryRE, SummaryPIDSI)); + if(DSEntries.length || CEntries2.length) CFB.utils.cfb_add(cfb, "/\u0005DocumentSummaryInformation", write_PropertySetStream(DSEntries, PSCLSID.DSI, DocSummaryRE, DocSummaryPIDDSI, CEntries2.length ? CEntries2 : null, PSCLSID.UDI)); +} + +function parse_xlscfb(cfb/*:any*/, options/*:?ParseOpts*/)/*:Workbook*/ { +if(!options) options = {}; +fix_read_opts(options); +reset_cp(); +if(options.codepage) set_ansi(options.codepage); +var CompObj/*:?CFBEntry*/, WB/*:?any*/; +if(cfb.FullPaths) { + if(CFB.find(cfb, '/encryption')) throw new Error("File is password-protected"); + CompObj = CFB.find(cfb, '!CompObj'); + WB = CFB.find(cfb, '/Workbook') || CFB.find(cfb, '/Book'); +} else { + switch(options.type) { + case 'base64': cfb = s2a(Base64_decode(cfb)); break; + case 'binary': cfb = s2a(cfb); break; + case 'buffer': break; + case 'array': if(!Array.isArray(cfb)) cfb = Array.prototype.slice.call(cfb); break; + } + prep_blob(cfb, 0); + WB = ({content: cfb}/*:any*/); +} +var /*::CompObjP, */WorkbookP/*:: :Workbook = XLSX.utils.book_new(); */; + +var _data/*:?any*/; +if(CompObj) /*::CompObjP = */parse_compobj(CompObj); +if(options.bookProps && !options.bookSheets) WorkbookP = ({}/*:any*/); +else/*:: if(cfb instanceof CFBContainer) */ { + var T = has_buf ? 'buffer' : 'array'; + if(WB && WB.content) WorkbookP = parse_workbook(WB.content, options); + /* Quattro Pro 7-8 */ + else if((_data=CFB.find(cfb, 'PerfectOffice_MAIN')) && _data.content) WorkbookP = WK_.to_workbook(_data.content, (options.type = T, options)); + /* Quattro Pro 9 */ + else if((_data=CFB.find(cfb, 'NativeContent_MAIN')) && _data.content) WorkbookP = WK_.to_workbook(_data.content, (options.type = T, options)); + /* Works 4 for Mac */ + else if((_data=CFB.find(cfb, 'MN0')) && _data.content) throw new Error("Unsupported Works 4 for Mac file"); + else throw new Error("Cannot find Workbook stream"); + if(options.bookVBA && cfb.FullPaths && CFB.find(cfb, '/_VBA_PROJECT_CUR/VBA/dir')) WorkbookP.vbaraw = make_vba_xls(cfb); +} + +var props = {}; +if(cfb.FullPaths) parse_xls_props(/*::((*/cfb/*:: :any):CFBContainer)*/, props, options); + +WorkbookP.Props = WorkbookP.Custprops = props; /* TODO: split up properties */ +if(options.bookFiles) WorkbookP.cfb = cfb; +/*WorkbookP.CompObjP = CompObjP; // TODO: storage? */ +return WorkbookP; +} + + +function write_xlscfb(wb/*:Workbook*/, opts/*:WriteOpts*/)/*:CFBContainer*/ { + var o = opts || {}; + var cfb = CFB.utils.cfb_new({root:"R"}); + var wbpath = "/Workbook"; + switch(o.bookType || "xls") { + case "xls": o.bookType = "biff8"; + /* falls through */ + case "xla": if(!o.bookType) o.bookType = "xla"; + /* falls through */ + case "biff8": wbpath = "/Workbook"; o.biff = 8; break; + case "biff5": wbpath = "/Book"; o.biff = 5; break; + default: throw new Error("invalid type " + o.bookType + " for XLS CFB"); + } + CFB.utils.cfb_add(cfb, wbpath, write_biff_buf(wb, o)); + if(o.biff == 8 && (wb.Props || wb.Custprops)) write_xls_props(wb, cfb); + // TODO: SI, DSI, CO + if(o.biff == 8 && wb.vbaraw) fill_vba_xls(cfb, CFB.read(wb.vbaraw, {type: typeof wb.vbaraw == "string" ? "binary" : "buffer"})); + return cfb; +} +/* [MS-XLSB] 2.3 Record Enumeration */ +var XLSBRecordEnum = { + /*::[*/0x0000/*::]*/: { /* n:"BrtRowHdr", */ f:parse_BrtRowHdr }, + /*::[*/0x0001/*::]*/: { /* n:"BrtCellBlank", */ f:parse_BrtCellBlank }, + /*::[*/0x0002/*::]*/: { /* n:"BrtCellRk", */ f:parse_BrtCellRk }, + /*::[*/0x0003/*::]*/: { /* n:"BrtCellError", */ f:parse_BrtCellError }, + /*::[*/0x0004/*::]*/: { /* n:"BrtCellBool", */ f:parse_BrtCellBool }, + /*::[*/0x0005/*::]*/: { /* n:"BrtCellReal", */ f:parse_BrtCellReal }, + /*::[*/0x0006/*::]*/: { /* n:"BrtCellSt", */ f:parse_BrtCellSt }, + /*::[*/0x0007/*::]*/: { /* n:"BrtCellIsst", */ f:parse_BrtCellIsst }, + /*::[*/0x0008/*::]*/: { /* n:"BrtFmlaString", */ f:parse_BrtFmlaString }, + /*::[*/0x0009/*::]*/: { /* n:"BrtFmlaNum", */ f:parse_BrtFmlaNum }, + /*::[*/0x000A/*::]*/: { /* n:"BrtFmlaBool", */ f:parse_BrtFmlaBool }, + /*::[*/0x000B/*::]*/: { /* n:"BrtFmlaError", */ f:parse_BrtFmlaError }, + /*::[*/0x000C/*::]*/: { /* n:"BrtShortBlank", */ f:parse_BrtShortBlank }, + /*::[*/0x000D/*::]*/: { /* n:"BrtShortRk", */ f:parse_BrtShortRk }, + /*::[*/0x000E/*::]*/: { /* n:"BrtShortError", */ f:parse_BrtShortError }, + /*::[*/0x000F/*::]*/: { /* n:"BrtShortBool", */ f:parse_BrtShortBool }, + /*::[*/0x0010/*::]*/: { /* n:"BrtShortReal", */ f:parse_BrtShortReal }, + /*::[*/0x0011/*::]*/: { /* n:"BrtShortSt", */ f:parse_BrtShortSt }, + /*::[*/0x0012/*::]*/: { /* n:"BrtShortIsst", */ f:parse_BrtShortIsst }, + /*::[*/0x0013/*::]*/: { /* n:"BrtSSTItem", */ f:parse_RichStr }, + /*::[*/0x0014/*::]*/: { /* n:"BrtPCDIMissing" */ }, + /*::[*/0x0015/*::]*/: { /* n:"BrtPCDINumber" */ }, + /*::[*/0x0016/*::]*/: { /* n:"BrtPCDIBoolean" */ }, + /*::[*/0x0017/*::]*/: { /* n:"BrtPCDIError" */ }, + /*::[*/0x0018/*::]*/: { /* n:"BrtPCDIString" */ }, + /*::[*/0x0019/*::]*/: { /* n:"BrtPCDIDatetime" */ }, + /*::[*/0x001A/*::]*/: { /* n:"BrtPCDIIndex" */ }, + /*::[*/0x001B/*::]*/: { /* n:"BrtPCDIAMissing" */ }, + /*::[*/0x001C/*::]*/: { /* n:"BrtPCDIANumber" */ }, + /*::[*/0x001D/*::]*/: { /* n:"BrtPCDIABoolean" */ }, + /*::[*/0x001E/*::]*/: { /* n:"BrtPCDIAError" */ }, + /*::[*/0x001F/*::]*/: { /* n:"BrtPCDIAString" */ }, + /*::[*/0x0020/*::]*/: { /* n:"BrtPCDIADatetime" */ }, + /*::[*/0x0021/*::]*/: { /* n:"BrtPCRRecord" */ }, + /*::[*/0x0022/*::]*/: { /* n:"BrtPCRRecordDt" */ }, + /*::[*/0x0023/*::]*/: { /* n:"BrtFRTBegin", */ T:1 }, + /*::[*/0x0024/*::]*/: { /* n:"BrtFRTEnd", */ T:-1 }, + /*::[*/0x0025/*::]*/: { /* n:"BrtACBegin", */ T:1 }, + /*::[*/0x0026/*::]*/: { /* n:"BrtACEnd", */ T:-1 }, + /*::[*/0x0027/*::]*/: { /* n:"BrtName", */ f:parse_BrtName }, + /*::[*/0x0028/*::]*/: { /* n:"BrtIndexRowBlock" */ }, + /*::[*/0x002A/*::]*/: { /* n:"BrtIndexBlock" */ }, + /*::[*/0x002B/*::]*/: { /* n:"BrtFont", */ f:parse_BrtFont }, + /*::[*/0x002C/*::]*/: { /* n:"BrtFmt", */ f:parse_BrtFmt }, + /*::[*/0x002D/*::]*/: { /* n:"BrtFill", */ f:parse_BrtFill }, + /*::[*/0x002E/*::]*/: { /* n:"BrtBorder", */ f:parse_BrtBorder }, + /*::[*/0x002F/*::]*/: { /* n:"BrtXF", */ f:parse_BrtXF }, + /*::[*/0x0030/*::]*/: { /* n:"BrtStyle" */ }, + /*::[*/0x0031/*::]*/: { /* n:"BrtCellMeta", */ f:parse_Int32LE }, + /*::[*/0x0032/*::]*/: { /* n:"BrtValueMeta" */ }, + /*::[*/0x0033/*::]*/: { /* n:"BrtMdb" */ f:parse_BrtMdb }, + /*::[*/0x0034/*::]*/: { /* n:"BrtBeginFmd", */ T:1 }, + /*::[*/0x0035/*::]*/: { /* n:"BrtEndFmd", */ T:-1 }, + /*::[*/0x0036/*::]*/: { /* n:"BrtBeginMdx", */ T:1 }, + /*::[*/0x0037/*::]*/: { /* n:"BrtEndMdx", */ T:-1 }, + /*::[*/0x0038/*::]*/: { /* n:"BrtBeginMdxTuple", */ T:1 }, + /*::[*/0x0039/*::]*/: { /* n:"BrtEndMdxTuple", */ T:-1 }, + /*::[*/0x003A/*::]*/: { /* n:"BrtMdxMbrIstr" */ }, + /*::[*/0x003B/*::]*/: { /* n:"BrtStr" */ }, + /*::[*/0x003C/*::]*/: { /* n:"BrtColInfo", */ f:parse_ColInfo }, + /*::[*/0x003E/*::]*/: { /* n:"BrtCellRString", */ f:parse_BrtCellRString }, + /*::[*/0x003F/*::]*/: { /* n:"BrtCalcChainItem$", */ f:parse_BrtCalcChainItem$ }, + /*::[*/0x0040/*::]*/: { /* n:"BrtDVal", */ f:parse_BrtDVal }, + /*::[*/0x0041/*::]*/: { /* n:"BrtSxvcellNum" */ }, + /*::[*/0x0042/*::]*/: { /* n:"BrtSxvcellStr" */ }, + /*::[*/0x0043/*::]*/: { /* n:"BrtSxvcellBool" */ }, + /*::[*/0x0044/*::]*/: { /* n:"BrtSxvcellErr" */ }, + /*::[*/0x0045/*::]*/: { /* n:"BrtSxvcellDate" */ }, + /*::[*/0x0046/*::]*/: { /* n:"BrtSxvcellNil" */ }, + /*::[*/0x0080/*::]*/: { /* n:"BrtFileVersion" */ }, + /*::[*/0x0081/*::]*/: { /* n:"BrtBeginSheet", */ T:1 }, + /*::[*/0x0082/*::]*/: { /* n:"BrtEndSheet", */ T:-1 }, + /*::[*/0x0083/*::]*/: { /* n:"BrtBeginBook", */ T:1, f:parsenoop, p:0 }, + /*::[*/0x0084/*::]*/: { /* n:"BrtEndBook", */ T:-1 }, + /*::[*/0x0085/*::]*/: { /* n:"BrtBeginWsViews", */ T:1 }, + /*::[*/0x0086/*::]*/: { /* n:"BrtEndWsViews", */ T:-1 }, + /*::[*/0x0087/*::]*/: { /* n:"BrtBeginBookViews", */ T:1 }, + /*::[*/0x0088/*::]*/: { /* n:"BrtEndBookViews", */ T:-1 }, + /*::[*/0x0089/*::]*/: { /* n:"BrtBeginWsView", */ T:1, f:parse_BrtBeginWsView }, + /*::[*/0x008A/*::]*/: { /* n:"BrtEndWsView", */ T:-1 }, + /*::[*/0x008B/*::]*/: { /* n:"BrtBeginCsViews", */ T:1 }, + /*::[*/0x008C/*::]*/: { /* n:"BrtEndCsViews", */ T:-1 }, + /*::[*/0x008D/*::]*/: { /* n:"BrtBeginCsView", */ T:1 }, + /*::[*/0x008E/*::]*/: { /* n:"BrtEndCsView", */ T:-1 }, + /*::[*/0x008F/*::]*/: { /* n:"BrtBeginBundleShs", */ T:1 }, + /*::[*/0x0090/*::]*/: { /* n:"BrtEndBundleShs", */ T:-1 }, + /*::[*/0x0091/*::]*/: { /* n:"BrtBeginSheetData", */ T:1 }, + /*::[*/0x0092/*::]*/: { /* n:"BrtEndSheetData", */ T:-1 }, + /*::[*/0x0093/*::]*/: { /* n:"BrtWsProp", */ f:parse_BrtWsProp }, + /*::[*/0x0094/*::]*/: { /* n:"BrtWsDim", */ f:parse_BrtWsDim, p:16 }, + /*::[*/0x0097/*::]*/: { /* n:"BrtPane", */ f:parse_BrtPane }, + /*::[*/0x0098/*::]*/: { /* n:"BrtSel" */ }, + /*::[*/0x0099/*::]*/: { /* n:"BrtWbProp", */ f:parse_BrtWbProp }, + /*::[*/0x009A/*::]*/: { /* n:"BrtWbFactoid" */ }, + /*::[*/0x009B/*::]*/: { /* n:"BrtFileRecover" */ }, + /*::[*/0x009C/*::]*/: { /* n:"BrtBundleSh", */ f:parse_BrtBundleSh }, + /*::[*/0x009D/*::]*/: { /* n:"BrtCalcProp" */ }, + /*::[*/0x009E/*::]*/: { /* n:"BrtBookView" */ }, + /*::[*/0x009F/*::]*/: { /* n:"BrtBeginSst", */ T:1, f:parse_BrtBeginSst }, + /*::[*/0x00A0/*::]*/: { /* n:"BrtEndSst", */ T:-1 }, + /*::[*/0x00A1/*::]*/: { /* n:"BrtBeginAFilter", */ T:1, f:parse_UncheckedRfX }, + /*::[*/0x00A2/*::]*/: { /* n:"BrtEndAFilter", */ T:-1 }, + /*::[*/0x00A3/*::]*/: { /* n:"BrtBeginFilterColumn", */ T:1 }, + /*::[*/0x00A4/*::]*/: { /* n:"BrtEndFilterColumn", */ T:-1 }, + /*::[*/0x00A5/*::]*/: { /* n:"BrtBeginFilters", */ T:1 }, + /*::[*/0x00A6/*::]*/: { /* n:"BrtEndFilters", */ T:-1 }, + /*::[*/0x00A7/*::]*/: { /* n:"BrtFilter" */ }, + /*::[*/0x00A8/*::]*/: { /* n:"BrtColorFilter" */ }, + /*::[*/0x00A9/*::]*/: { /* n:"BrtIconFilter" */ }, + /*::[*/0x00AA/*::]*/: { /* n:"BrtTop10Filter" */ }, + /*::[*/0x00AB/*::]*/: { /* n:"BrtDynamicFilter" */ }, + /*::[*/0x00AC/*::]*/: { /* n:"BrtBeginCustomFilters", */ T:1 }, + /*::[*/0x00AD/*::]*/: { /* n:"BrtEndCustomFilters", */ T:-1 }, + /*::[*/0x00AE/*::]*/: { /* n:"BrtCustomFilter" */ }, + /*::[*/0x00AF/*::]*/: { /* n:"BrtAFilterDateGroupItem" */ }, + /*::[*/0x00B0/*::]*/: { /* n:"BrtMergeCell", */ f:parse_BrtMergeCell }, + /*::[*/0x00B1/*::]*/: { /* n:"BrtBeginMergeCells", */ T:1 }, + /*::[*/0x00B2/*::]*/: { /* n:"BrtEndMergeCells", */ T:-1 }, + /*::[*/0x00B3/*::]*/: { /* n:"BrtBeginPivotCacheDef", */ T:1 }, + /*::[*/0x00B4/*::]*/: { /* n:"BrtEndPivotCacheDef", */ T:-1 }, + /*::[*/0x00B5/*::]*/: { /* n:"BrtBeginPCDFields", */ T:1 }, + /*::[*/0x00B6/*::]*/: { /* n:"BrtEndPCDFields", */ T:-1 }, + /*::[*/0x00B7/*::]*/: { /* n:"BrtBeginPCDField", */ T:1 }, + /*::[*/0x00B8/*::]*/: { /* n:"BrtEndPCDField", */ T:-1 }, + /*::[*/0x00B9/*::]*/: { /* n:"BrtBeginPCDSource", */ T:1 }, + /*::[*/0x00BA/*::]*/: { /* n:"BrtEndPCDSource", */ T:-1 }, + /*::[*/0x00BB/*::]*/: { /* n:"BrtBeginPCDSRange", */ T:1 }, + /*::[*/0x00BC/*::]*/: { /* n:"BrtEndPCDSRange", */ T:-1 }, + /*::[*/0x00BD/*::]*/: { /* n:"BrtBeginPCDFAtbl", */ T:1 }, + /*::[*/0x00BE/*::]*/: { /* n:"BrtEndPCDFAtbl", */ T:-1 }, + /*::[*/0x00BF/*::]*/: { /* n:"BrtBeginPCDIRun", */ T:1 }, + /*::[*/0x00C0/*::]*/: { /* n:"BrtEndPCDIRun", */ T:-1 }, + /*::[*/0x00C1/*::]*/: { /* n:"BrtBeginPivotCacheRecords", */ T:1 }, + /*::[*/0x00C2/*::]*/: { /* n:"BrtEndPivotCacheRecords", */ T:-1 }, + /*::[*/0x00C3/*::]*/: { /* n:"BrtBeginPCDHierarchies", */ T:1 }, + /*::[*/0x00C4/*::]*/: { /* n:"BrtEndPCDHierarchies", */ T:-1 }, + /*::[*/0x00C5/*::]*/: { /* n:"BrtBeginPCDHierarchy", */ T:1 }, + /*::[*/0x00C6/*::]*/: { /* n:"BrtEndPCDHierarchy", */ T:-1 }, + /*::[*/0x00C7/*::]*/: { /* n:"BrtBeginPCDHFieldsUsage", */ T:1 }, + /*::[*/0x00C8/*::]*/: { /* n:"BrtEndPCDHFieldsUsage", */ T:-1 }, + /*::[*/0x00C9/*::]*/: { /* n:"BrtBeginExtConnection", */ T:1 }, + /*::[*/0x00CA/*::]*/: { /* n:"BrtEndExtConnection", */ T:-1 }, + /*::[*/0x00CB/*::]*/: { /* n:"BrtBeginECDbProps", */ T:1 }, + /*::[*/0x00CC/*::]*/: { /* n:"BrtEndECDbProps", */ T:-1 }, + /*::[*/0x00CD/*::]*/: { /* n:"BrtBeginECOlapProps", */ T:1 }, + /*::[*/0x00CE/*::]*/: { /* n:"BrtEndECOlapProps", */ T:-1 }, + /*::[*/0x00CF/*::]*/: { /* n:"BrtBeginPCDSConsol", */ T:1 }, + /*::[*/0x00D0/*::]*/: { /* n:"BrtEndPCDSConsol", */ T:-1 }, + /*::[*/0x00D1/*::]*/: { /* n:"BrtBeginPCDSCPages", */ T:1 }, + /*::[*/0x00D2/*::]*/: { /* n:"BrtEndPCDSCPages", */ T:-1 }, + /*::[*/0x00D3/*::]*/: { /* n:"BrtBeginPCDSCPage", */ T:1 }, + /*::[*/0x00D4/*::]*/: { /* n:"BrtEndPCDSCPage", */ T:-1 }, + /*::[*/0x00D5/*::]*/: { /* n:"BrtBeginPCDSCPItem", */ T:1 }, + /*::[*/0x00D6/*::]*/: { /* n:"BrtEndPCDSCPItem", */ T:-1 }, + /*::[*/0x00D7/*::]*/: { /* n:"BrtBeginPCDSCSets", */ T:1 }, + /*::[*/0x00D8/*::]*/: { /* n:"BrtEndPCDSCSets", */ T:-1 }, + /*::[*/0x00D9/*::]*/: { /* n:"BrtBeginPCDSCSet", */ T:1 }, + /*::[*/0x00DA/*::]*/: { /* n:"BrtEndPCDSCSet", */ T:-1 }, + /*::[*/0x00DB/*::]*/: { /* n:"BrtBeginPCDFGroup", */ T:1 }, + /*::[*/0x00DC/*::]*/: { /* n:"BrtEndPCDFGroup", */ T:-1 }, + /*::[*/0x00DD/*::]*/: { /* n:"BrtBeginPCDFGItems", */ T:1 }, + /*::[*/0x00DE/*::]*/: { /* n:"BrtEndPCDFGItems", */ T:-1 }, + /*::[*/0x00DF/*::]*/: { /* n:"BrtBeginPCDFGRange", */ T:1 }, + /*::[*/0x00E0/*::]*/: { /* n:"BrtEndPCDFGRange", */ T:-1 }, + /*::[*/0x00E1/*::]*/: { /* n:"BrtBeginPCDFGDiscrete", */ T:1 }, + /*::[*/0x00E2/*::]*/: { /* n:"BrtEndPCDFGDiscrete", */ T:-1 }, + /*::[*/0x00E3/*::]*/: { /* n:"BrtBeginPCDSDTupleCache", */ T:1 }, + /*::[*/0x00E4/*::]*/: { /* n:"BrtEndPCDSDTupleCache", */ T:-1 }, + /*::[*/0x00E5/*::]*/: { /* n:"BrtBeginPCDSDTCEntries", */ T:1 }, + /*::[*/0x00E6/*::]*/: { /* n:"BrtEndPCDSDTCEntries", */ T:-1 }, + /*::[*/0x00E7/*::]*/: { /* n:"BrtBeginPCDSDTCEMembers", */ T:1 }, + /*::[*/0x00E8/*::]*/: { /* n:"BrtEndPCDSDTCEMembers", */ T:-1 }, + /*::[*/0x00E9/*::]*/: { /* n:"BrtBeginPCDSDTCEMember", */ T:1 }, + /*::[*/0x00EA/*::]*/: { /* n:"BrtEndPCDSDTCEMember", */ T:-1 }, + /*::[*/0x00EB/*::]*/: { /* n:"BrtBeginPCDSDTCQueries", */ T:1 }, + /*::[*/0x00EC/*::]*/: { /* n:"BrtEndPCDSDTCQueries", */ T:-1 }, + /*::[*/0x00ED/*::]*/: { /* n:"BrtBeginPCDSDTCQuery", */ T:1 }, + /*::[*/0x00EE/*::]*/: { /* n:"BrtEndPCDSDTCQuery", */ T:-1 }, + /*::[*/0x00EF/*::]*/: { /* n:"BrtBeginPCDSDTCSets", */ T:1 }, + /*::[*/0x00F0/*::]*/: { /* n:"BrtEndPCDSDTCSets", */ T:-1 }, + /*::[*/0x00F1/*::]*/: { /* n:"BrtBeginPCDSDTCSet", */ T:1 }, + /*::[*/0x00F2/*::]*/: { /* n:"BrtEndPCDSDTCSet", */ T:-1 }, + /*::[*/0x00F3/*::]*/: { /* n:"BrtBeginPCDCalcItems", */ T:1 }, + /*::[*/0x00F4/*::]*/: { /* n:"BrtEndPCDCalcItems", */ T:-1 }, + /*::[*/0x00F5/*::]*/: { /* n:"BrtBeginPCDCalcItem", */ T:1 }, + /*::[*/0x00F6/*::]*/: { /* n:"BrtEndPCDCalcItem", */ T:-1 }, + /*::[*/0x00F7/*::]*/: { /* n:"BrtBeginPRule", */ T:1 }, + /*::[*/0x00F8/*::]*/: { /* n:"BrtEndPRule", */ T:-1 }, + /*::[*/0x00F9/*::]*/: { /* n:"BrtBeginPRFilters", */ T:1 }, + /*::[*/0x00FA/*::]*/: { /* n:"BrtEndPRFilters", */ T:-1 }, + /*::[*/0x00FB/*::]*/: { /* n:"BrtBeginPRFilter", */ T:1 }, + /*::[*/0x00FC/*::]*/: { /* n:"BrtEndPRFilter", */ T:-1 }, + /*::[*/0x00FD/*::]*/: { /* n:"BrtBeginPNames", */ T:1 }, + /*::[*/0x00FE/*::]*/: { /* n:"BrtEndPNames", */ T:-1 }, + /*::[*/0x00FF/*::]*/: { /* n:"BrtBeginPName", */ T:1 }, + /*::[*/0x0100/*::]*/: { /* n:"BrtEndPName", */ T:-1 }, + /*::[*/0x0101/*::]*/: { /* n:"BrtBeginPNPairs", */ T:1 }, + /*::[*/0x0102/*::]*/: { /* n:"BrtEndPNPairs", */ T:-1 }, + /*::[*/0x0103/*::]*/: { /* n:"BrtBeginPNPair", */ T:1 }, + /*::[*/0x0104/*::]*/: { /* n:"BrtEndPNPair", */ T:-1 }, + /*::[*/0x0105/*::]*/: { /* n:"BrtBeginECWebProps", */ T:1 }, + /*::[*/0x0106/*::]*/: { /* n:"BrtEndECWebProps", */ T:-1 }, + /*::[*/0x0107/*::]*/: { /* n:"BrtBeginEcWpTables", */ T:1 }, + /*::[*/0x0108/*::]*/: { /* n:"BrtEndECWPTables", */ T:-1 }, + /*::[*/0x0109/*::]*/: { /* n:"BrtBeginECParams", */ T:1 }, + /*::[*/0x010A/*::]*/: { /* n:"BrtEndECParams", */ T:-1 }, + /*::[*/0x010B/*::]*/: { /* n:"BrtBeginECParam", */ T:1 }, + /*::[*/0x010C/*::]*/: { /* n:"BrtEndECParam", */ T:-1 }, + /*::[*/0x010D/*::]*/: { /* n:"BrtBeginPCDKPIs", */ T:1 }, + /*::[*/0x010E/*::]*/: { /* n:"BrtEndPCDKPIs", */ T:-1 }, + /*::[*/0x010F/*::]*/: { /* n:"BrtBeginPCDKPI", */ T:1 }, + /*::[*/0x0110/*::]*/: { /* n:"BrtEndPCDKPI", */ T:-1 }, + /*::[*/0x0111/*::]*/: { /* n:"BrtBeginDims", */ T:1 }, + /*::[*/0x0112/*::]*/: { /* n:"BrtEndDims", */ T:-1 }, + /*::[*/0x0113/*::]*/: { /* n:"BrtBeginDim", */ T:1 }, + /*::[*/0x0114/*::]*/: { /* n:"BrtEndDim", */ T:-1 }, + /*::[*/0x0115/*::]*/: { /* n:"BrtIndexPartEnd" */ }, + /*::[*/0x0116/*::]*/: { /* n:"BrtBeginStyleSheet", */ T:1 }, + /*::[*/0x0117/*::]*/: { /* n:"BrtEndStyleSheet", */ T:-1 }, + /*::[*/0x0118/*::]*/: { /* n:"BrtBeginSXView", */ T:1 }, + /*::[*/0x0119/*::]*/: { /* n:"BrtEndSXVI", */ T:-1 }, + /*::[*/0x011A/*::]*/: { /* n:"BrtBeginSXVI", */ T:1 }, + /*::[*/0x011B/*::]*/: { /* n:"BrtBeginSXVIs", */ T:1 }, + /*::[*/0x011C/*::]*/: { /* n:"BrtEndSXVIs", */ T:-1 }, + /*::[*/0x011D/*::]*/: { /* n:"BrtBeginSXVD", */ T:1 }, + /*::[*/0x011E/*::]*/: { /* n:"BrtEndSXVD", */ T:-1 }, + /*::[*/0x011F/*::]*/: { /* n:"BrtBeginSXVDs", */ T:1 }, + /*::[*/0x0120/*::]*/: { /* n:"BrtEndSXVDs", */ T:-1 }, + /*::[*/0x0121/*::]*/: { /* n:"BrtBeginSXPI", */ T:1 }, + /*::[*/0x0122/*::]*/: { /* n:"BrtEndSXPI", */ T:-1 }, + /*::[*/0x0123/*::]*/: { /* n:"BrtBeginSXPIs", */ T:1 }, + /*::[*/0x0124/*::]*/: { /* n:"BrtEndSXPIs", */ T:-1 }, + /*::[*/0x0125/*::]*/: { /* n:"BrtBeginSXDI", */ T:1 }, + /*::[*/0x0126/*::]*/: { /* n:"BrtEndSXDI", */ T:-1 }, + /*::[*/0x0127/*::]*/: { /* n:"BrtBeginSXDIs", */ T:1 }, + /*::[*/0x0128/*::]*/: { /* n:"BrtEndSXDIs", */ T:-1 }, + /*::[*/0x0129/*::]*/: { /* n:"BrtBeginSXLI", */ T:1 }, + /*::[*/0x012A/*::]*/: { /* n:"BrtEndSXLI", */ T:-1 }, + /*::[*/0x012B/*::]*/: { /* n:"BrtBeginSXLIRws", */ T:1 }, + /*::[*/0x012C/*::]*/: { /* n:"BrtEndSXLIRws", */ T:-1 }, + /*::[*/0x012D/*::]*/: { /* n:"BrtBeginSXLICols", */ T:1 }, + /*::[*/0x012E/*::]*/: { /* n:"BrtEndSXLICols", */ T:-1 }, + /*::[*/0x012F/*::]*/: { /* n:"BrtBeginSXFormat", */ T:1 }, + /*::[*/0x0130/*::]*/: { /* n:"BrtEndSXFormat", */ T:-1 }, + /*::[*/0x0131/*::]*/: { /* n:"BrtBeginSXFormats", */ T:1 }, + /*::[*/0x0132/*::]*/: { /* n:"BrtEndSxFormats", */ T:-1 }, + /*::[*/0x0133/*::]*/: { /* n:"BrtBeginSxSelect", */ T:1 }, + /*::[*/0x0134/*::]*/: { /* n:"BrtEndSxSelect", */ T:-1 }, + /*::[*/0x0135/*::]*/: { /* n:"BrtBeginISXVDRws", */ T:1 }, + /*::[*/0x0136/*::]*/: { /* n:"BrtEndISXVDRws", */ T:-1 }, + /*::[*/0x0137/*::]*/: { /* n:"BrtBeginISXVDCols", */ T:1 }, + /*::[*/0x0138/*::]*/: { /* n:"BrtEndISXVDCols", */ T:-1 }, + /*::[*/0x0139/*::]*/: { /* n:"BrtEndSXLocation", */ T:-1 }, + /*::[*/0x013A/*::]*/: { /* n:"BrtBeginSXLocation", */ T:1 }, + /*::[*/0x013B/*::]*/: { /* n:"BrtEndSXView", */ T:-1 }, + /*::[*/0x013C/*::]*/: { /* n:"BrtBeginSXTHs", */ T:1 }, + /*::[*/0x013D/*::]*/: { /* n:"BrtEndSXTHs", */ T:-1 }, + /*::[*/0x013E/*::]*/: { /* n:"BrtBeginSXTH", */ T:1 }, + /*::[*/0x013F/*::]*/: { /* n:"BrtEndSXTH", */ T:-1 }, + /*::[*/0x0140/*::]*/: { /* n:"BrtBeginISXTHRws", */ T:1 }, + /*::[*/0x0141/*::]*/: { /* n:"BrtEndISXTHRws", */ T:-1 }, + /*::[*/0x0142/*::]*/: { /* n:"BrtBeginISXTHCols", */ T:1 }, + /*::[*/0x0143/*::]*/: { /* n:"BrtEndISXTHCols", */ T:-1 }, + /*::[*/0x0144/*::]*/: { /* n:"BrtBeginSXTDMPS", */ T:1 }, + /*::[*/0x0145/*::]*/: { /* n:"BrtEndSXTDMPs", */ T:-1 }, + /*::[*/0x0146/*::]*/: { /* n:"BrtBeginSXTDMP", */ T:1 }, + /*::[*/0x0147/*::]*/: { /* n:"BrtEndSXTDMP", */ T:-1 }, + /*::[*/0x0148/*::]*/: { /* n:"BrtBeginSXTHItems", */ T:1 }, + /*::[*/0x0149/*::]*/: { /* n:"BrtEndSXTHItems", */ T:-1 }, + /*::[*/0x014A/*::]*/: { /* n:"BrtBeginSXTHItem", */ T:1 }, + /*::[*/0x014B/*::]*/: { /* n:"BrtEndSXTHItem", */ T:-1 }, + /*::[*/0x014C/*::]*/: { /* n:"BrtBeginMetadata", */ T:1 }, + /*::[*/0x014D/*::]*/: { /* n:"BrtEndMetadata", */ T:-1 }, + /*::[*/0x014E/*::]*/: { /* n:"BrtBeginEsmdtinfo", */ T:1 }, + /*::[*/0x014F/*::]*/: { /* n:"BrtMdtinfo", */ f:parse_BrtMdtinfo }, + /*::[*/0x0150/*::]*/: { /* n:"BrtEndEsmdtinfo", */ T:-1 }, + /*::[*/0x0151/*::]*/: { /* n:"BrtBeginEsmdb", */ f:parse_BrtBeginEsmdb, T:1 }, + /*::[*/0x0152/*::]*/: { /* n:"BrtEndEsmdb", */ T:-1 }, + /*::[*/0x0153/*::]*/: { /* n:"BrtBeginEsfmd", */ T:1 }, + /*::[*/0x0154/*::]*/: { /* n:"BrtEndEsfmd", */ T:-1 }, + /*::[*/0x0155/*::]*/: { /* n:"BrtBeginSingleCells", */ T:1 }, + /*::[*/0x0156/*::]*/: { /* n:"BrtEndSingleCells", */ T:-1 }, + /*::[*/0x0157/*::]*/: { /* n:"BrtBeginList", */ T:1 }, + /*::[*/0x0158/*::]*/: { /* n:"BrtEndList", */ T:-1 }, + /*::[*/0x0159/*::]*/: { /* n:"BrtBeginListCols", */ T:1 }, + /*::[*/0x015A/*::]*/: { /* n:"BrtEndListCols", */ T:-1 }, + /*::[*/0x015B/*::]*/: { /* n:"BrtBeginListCol", */ T:1 }, + /*::[*/0x015C/*::]*/: { /* n:"BrtEndListCol", */ T:-1 }, + /*::[*/0x015D/*::]*/: { /* n:"BrtBeginListXmlCPr", */ T:1 }, + /*::[*/0x015E/*::]*/: { /* n:"BrtEndListXmlCPr", */ T:-1 }, + /*::[*/0x015F/*::]*/: { /* n:"BrtListCCFmla" */ }, + /*::[*/0x0160/*::]*/: { /* n:"BrtListTrFmla" */ }, + /*::[*/0x0161/*::]*/: { /* n:"BrtBeginExternals", */ T:1 }, + /*::[*/0x0162/*::]*/: { /* n:"BrtEndExternals", */ T:-1 }, + /*::[*/0x0163/*::]*/: { /* n:"BrtSupBookSrc", */ f:parse_RelID}, + /*::[*/0x0165/*::]*/: { /* n:"BrtSupSelf" */ }, + /*::[*/0x0166/*::]*/: { /* n:"BrtSupSame" */ }, + /*::[*/0x0167/*::]*/: { /* n:"BrtSupTabs" */ }, + /*::[*/0x0168/*::]*/: { /* n:"BrtBeginSupBook", */ T:1 }, + /*::[*/0x0169/*::]*/: { /* n:"BrtPlaceholderName" */ }, + /*::[*/0x016A/*::]*/: { /* n:"BrtExternSheet", */ f:parse_ExternSheet }, + /*::[*/0x016B/*::]*/: { /* n:"BrtExternTableStart" */ }, + /*::[*/0x016C/*::]*/: { /* n:"BrtExternTableEnd" */ }, + /*::[*/0x016E/*::]*/: { /* n:"BrtExternRowHdr" */ }, + /*::[*/0x016F/*::]*/: { /* n:"BrtExternCellBlank" */ }, + /*::[*/0x0170/*::]*/: { /* n:"BrtExternCellReal" */ }, + /*::[*/0x0171/*::]*/: { /* n:"BrtExternCellBool" */ }, + /*::[*/0x0172/*::]*/: { /* n:"BrtExternCellError" */ }, + /*::[*/0x0173/*::]*/: { /* n:"BrtExternCellString" */ }, + /*::[*/0x0174/*::]*/: { /* n:"BrtBeginEsmdx", */ T:1 }, + /*::[*/0x0175/*::]*/: { /* n:"BrtEndEsmdx", */ T:-1 }, + /*::[*/0x0176/*::]*/: { /* n:"BrtBeginMdxSet", */ T:1 }, + /*::[*/0x0177/*::]*/: { /* n:"BrtEndMdxSet", */ T:-1 }, + /*::[*/0x0178/*::]*/: { /* n:"BrtBeginMdxMbrProp", */ T:1 }, + /*::[*/0x0179/*::]*/: { /* n:"BrtEndMdxMbrProp", */ T:-1 }, + /*::[*/0x017A/*::]*/: { /* n:"BrtBeginMdxKPI", */ T:1 }, + /*::[*/0x017B/*::]*/: { /* n:"BrtEndMdxKPI", */ T:-1 }, + /*::[*/0x017C/*::]*/: { /* n:"BrtBeginEsstr", */ T:1 }, + /*::[*/0x017D/*::]*/: { /* n:"BrtEndEsstr", */ T:-1 }, + /*::[*/0x017E/*::]*/: { /* n:"BrtBeginPRFItem", */ T:1 }, + /*::[*/0x017F/*::]*/: { /* n:"BrtEndPRFItem", */ T:-1 }, + /*::[*/0x0180/*::]*/: { /* n:"BrtBeginPivotCacheIDs", */ T:1 }, + /*::[*/0x0181/*::]*/: { /* n:"BrtEndPivotCacheIDs", */ T:-1 }, + /*::[*/0x0182/*::]*/: { /* n:"BrtBeginPivotCacheID", */ T:1 }, + /*::[*/0x0183/*::]*/: { /* n:"BrtEndPivotCacheID", */ T:-1 }, + /*::[*/0x0184/*::]*/: { /* n:"BrtBeginISXVIs", */ T:1 }, + /*::[*/0x0185/*::]*/: { /* n:"BrtEndISXVIs", */ T:-1 }, + /*::[*/0x0186/*::]*/: { /* n:"BrtBeginColInfos", */ T:1 }, + /*::[*/0x0187/*::]*/: { /* n:"BrtEndColInfos", */ T:-1 }, + /*::[*/0x0188/*::]*/: { /* n:"BrtBeginRwBrk", */ T:1 }, + /*::[*/0x0189/*::]*/: { /* n:"BrtEndRwBrk", */ T:-1 }, + /*::[*/0x018A/*::]*/: { /* n:"BrtBeginColBrk", */ T:1 }, + /*::[*/0x018B/*::]*/: { /* n:"BrtEndColBrk", */ T:-1 }, + /*::[*/0x018C/*::]*/: { /* n:"BrtBrk" */ }, + /*::[*/0x018D/*::]*/: { /* n:"BrtUserBookView" */ }, + /*::[*/0x018E/*::]*/: { /* n:"BrtInfo" */ }, + /*::[*/0x018F/*::]*/: { /* n:"BrtCUsr" */ }, + /*::[*/0x0190/*::]*/: { /* n:"BrtUsr" */ }, + /*::[*/0x0191/*::]*/: { /* n:"BrtBeginUsers", */ T:1 }, + /*::[*/0x0193/*::]*/: { /* n:"BrtEOF" */ }, + /*::[*/0x0194/*::]*/: { /* n:"BrtUCR" */ }, + /*::[*/0x0195/*::]*/: { /* n:"BrtRRInsDel" */ }, + /*::[*/0x0196/*::]*/: { /* n:"BrtRREndInsDel" */ }, + /*::[*/0x0197/*::]*/: { /* n:"BrtRRMove" */ }, + /*::[*/0x0198/*::]*/: { /* n:"BrtRREndMove" */ }, + /*::[*/0x0199/*::]*/: { /* n:"BrtRRChgCell" */ }, + /*::[*/0x019A/*::]*/: { /* n:"BrtRREndChgCell" */ }, + /*::[*/0x019B/*::]*/: { /* n:"BrtRRHeader" */ }, + /*::[*/0x019C/*::]*/: { /* n:"BrtRRUserView" */ }, + /*::[*/0x019D/*::]*/: { /* n:"BrtRRRenSheet" */ }, + /*::[*/0x019E/*::]*/: { /* n:"BrtRRInsertSh" */ }, + /*::[*/0x019F/*::]*/: { /* n:"BrtRRDefName" */ }, + /*::[*/0x01A0/*::]*/: { /* n:"BrtRRNote" */ }, + /*::[*/0x01A1/*::]*/: { /* n:"BrtRRConflict" */ }, + /*::[*/0x01A2/*::]*/: { /* n:"BrtRRTQSIF" */ }, + /*::[*/0x01A3/*::]*/: { /* n:"BrtRRFormat" */ }, + /*::[*/0x01A4/*::]*/: { /* n:"BrtRREndFormat" */ }, + /*::[*/0x01A5/*::]*/: { /* n:"BrtRRAutoFmt" */ }, + /*::[*/0x01A6/*::]*/: { /* n:"BrtBeginUserShViews", */ T:1 }, + /*::[*/0x01A7/*::]*/: { /* n:"BrtBeginUserShView", */ T:1 }, + /*::[*/0x01A8/*::]*/: { /* n:"BrtEndUserShView", */ T:-1 }, + /*::[*/0x01A9/*::]*/: { /* n:"BrtEndUserShViews", */ T:-1 }, + /*::[*/0x01AA/*::]*/: { /* n:"BrtArrFmla", */ f:parse_BrtArrFmla }, + /*::[*/0x01AB/*::]*/: { /* n:"BrtShrFmla", */ f:parse_BrtShrFmla }, + /*::[*/0x01AC/*::]*/: { /* n:"BrtTable" */ }, + /*::[*/0x01AD/*::]*/: { /* n:"BrtBeginExtConnections", */ T:1 }, + /*::[*/0x01AE/*::]*/: { /* n:"BrtEndExtConnections", */ T:-1 }, + /*::[*/0x01AF/*::]*/: { /* n:"BrtBeginPCDCalcMems", */ T:1 }, + /*::[*/0x01B0/*::]*/: { /* n:"BrtEndPCDCalcMems", */ T:-1 }, + /*::[*/0x01B1/*::]*/: { /* n:"BrtBeginPCDCalcMem", */ T:1 }, + /*::[*/0x01B2/*::]*/: { /* n:"BrtEndPCDCalcMem", */ T:-1 }, + /*::[*/0x01B3/*::]*/: { /* n:"BrtBeginPCDHGLevels", */ T:1 }, + /*::[*/0x01B4/*::]*/: { /* n:"BrtEndPCDHGLevels", */ T:-1 }, + /*::[*/0x01B5/*::]*/: { /* n:"BrtBeginPCDHGLevel", */ T:1 }, + /*::[*/0x01B6/*::]*/: { /* n:"BrtEndPCDHGLevel", */ T:-1 }, + /*::[*/0x01B7/*::]*/: { /* n:"BrtBeginPCDHGLGroups", */ T:1 }, + /*::[*/0x01B8/*::]*/: { /* n:"BrtEndPCDHGLGroups", */ T:-1 }, + /*::[*/0x01B9/*::]*/: { /* n:"BrtBeginPCDHGLGroup", */ T:1 }, + /*::[*/0x01BA/*::]*/: { /* n:"BrtEndPCDHGLGroup", */ T:-1 }, + /*::[*/0x01BB/*::]*/: { /* n:"BrtBeginPCDHGLGMembers", */ T:1 }, + /*::[*/0x01BC/*::]*/: { /* n:"BrtEndPCDHGLGMembers", */ T:-1 }, + /*::[*/0x01BD/*::]*/: { /* n:"BrtBeginPCDHGLGMember", */ T:1 }, + /*::[*/0x01BE/*::]*/: { /* n:"BrtEndPCDHGLGMember", */ T:-1 }, + /*::[*/0x01BF/*::]*/: { /* n:"BrtBeginQSI", */ T:1 }, + /*::[*/0x01C0/*::]*/: { /* n:"BrtEndQSI", */ T:-1 }, + /*::[*/0x01C1/*::]*/: { /* n:"BrtBeginQSIR", */ T:1 }, + /*::[*/0x01C2/*::]*/: { /* n:"BrtEndQSIR", */ T:-1 }, + /*::[*/0x01C3/*::]*/: { /* n:"BrtBeginDeletedNames", */ T:1 }, + /*::[*/0x01C4/*::]*/: { /* n:"BrtEndDeletedNames", */ T:-1 }, + /*::[*/0x01C5/*::]*/: { /* n:"BrtBeginDeletedName", */ T:1 }, + /*::[*/0x01C6/*::]*/: { /* n:"BrtEndDeletedName", */ T:-1 }, + /*::[*/0x01C7/*::]*/: { /* n:"BrtBeginQSIFs", */ T:1 }, + /*::[*/0x01C8/*::]*/: { /* n:"BrtEndQSIFs", */ T:-1 }, + /*::[*/0x01C9/*::]*/: { /* n:"BrtBeginQSIF", */ T:1 }, + /*::[*/0x01CA/*::]*/: { /* n:"BrtEndQSIF", */ T:-1 }, + /*::[*/0x01CB/*::]*/: { /* n:"BrtBeginAutoSortScope", */ T:1 }, + /*::[*/0x01CC/*::]*/: { /* n:"BrtEndAutoSortScope", */ T:-1 }, + /*::[*/0x01CD/*::]*/: { /* n:"BrtBeginConditionalFormatting", */ T:1 }, + /*::[*/0x01CE/*::]*/: { /* n:"BrtEndConditionalFormatting", */ T:-1 }, + /*::[*/0x01CF/*::]*/: { /* n:"BrtBeginCFRule", */ T:1 }, + /*::[*/0x01D0/*::]*/: { /* n:"BrtEndCFRule", */ T:-1 }, + /*::[*/0x01D1/*::]*/: { /* n:"BrtBeginIconSet", */ T:1 }, + /*::[*/0x01D2/*::]*/: { /* n:"BrtEndIconSet", */ T:-1 }, + /*::[*/0x01D3/*::]*/: { /* n:"BrtBeginDatabar", */ T:1 }, + /*::[*/0x01D4/*::]*/: { /* n:"BrtEndDatabar", */ T:-1 }, + /*::[*/0x01D5/*::]*/: { /* n:"BrtBeginColorScale", */ T:1 }, + /*::[*/0x01D6/*::]*/: { /* n:"BrtEndColorScale", */ T:-1 }, + /*::[*/0x01D7/*::]*/: { /* n:"BrtCFVO" */ }, + /*::[*/0x01D8/*::]*/: { /* n:"BrtExternValueMeta" */ }, + /*::[*/0x01D9/*::]*/: { /* n:"BrtBeginColorPalette", */ T:1 }, + /*::[*/0x01DA/*::]*/: { /* n:"BrtEndColorPalette", */ T:-1 }, + /*::[*/0x01DB/*::]*/: { /* n:"BrtIndexedColor" */ }, + /*::[*/0x01DC/*::]*/: { /* n:"BrtMargins", */ f:parse_BrtMargins }, + /*::[*/0x01DD/*::]*/: { /* n:"BrtPrintOptions" */ }, + /*::[*/0x01DE/*::]*/: { /* n:"BrtPageSetup" */ }, + /*::[*/0x01DF/*::]*/: { /* n:"BrtBeginHeaderFooter", */ T:1 }, + /*::[*/0x01E0/*::]*/: { /* n:"BrtEndHeaderFooter", */ T:-1 }, + /*::[*/0x01E1/*::]*/: { /* n:"BrtBeginSXCrtFormat", */ T:1 }, + /*::[*/0x01E2/*::]*/: { /* n:"BrtEndSXCrtFormat", */ T:-1 }, + /*::[*/0x01E3/*::]*/: { /* n:"BrtBeginSXCrtFormats", */ T:1 }, + /*::[*/0x01E4/*::]*/: { /* n:"BrtEndSXCrtFormats", */ T:-1 }, + /*::[*/0x01E5/*::]*/: { /* n:"BrtWsFmtInfo", */ f:parse_BrtWsFmtInfo }, + /*::[*/0x01E6/*::]*/: { /* n:"BrtBeginMgs", */ T:1 }, + /*::[*/0x01E7/*::]*/: { /* n:"BrtEndMGs", */ T:-1 }, + /*::[*/0x01E8/*::]*/: { /* n:"BrtBeginMGMaps", */ T:1 }, + /*::[*/0x01E9/*::]*/: { /* n:"BrtEndMGMaps", */ T:-1 }, + /*::[*/0x01EA/*::]*/: { /* n:"BrtBeginMG", */ T:1 }, + /*::[*/0x01EB/*::]*/: { /* n:"BrtEndMG", */ T:-1 }, + /*::[*/0x01EC/*::]*/: { /* n:"BrtBeginMap", */ T:1 }, + /*::[*/0x01ED/*::]*/: { /* n:"BrtEndMap", */ T:-1 }, + /*::[*/0x01EE/*::]*/: { /* n:"BrtHLink", */ f:parse_BrtHLink }, + /*::[*/0x01EF/*::]*/: { /* n:"BrtBeginDCon", */ T:1 }, + /*::[*/0x01F0/*::]*/: { /* n:"BrtEndDCon", */ T:-1 }, + /*::[*/0x01F1/*::]*/: { /* n:"BrtBeginDRefs", */ T:1 }, + /*::[*/0x01F2/*::]*/: { /* n:"BrtEndDRefs", */ T:-1 }, + /*::[*/0x01F3/*::]*/: { /* n:"BrtDRef" */ }, + /*::[*/0x01F4/*::]*/: { /* n:"BrtBeginScenMan", */ T:1 }, + /*::[*/0x01F5/*::]*/: { /* n:"BrtEndScenMan", */ T:-1 }, + /*::[*/0x01F6/*::]*/: { /* n:"BrtBeginSct", */ T:1 }, + /*::[*/0x01F7/*::]*/: { /* n:"BrtEndSct", */ T:-1 }, + /*::[*/0x01F8/*::]*/: { /* n:"BrtSlc" */ }, + /*::[*/0x01F9/*::]*/: { /* n:"BrtBeginDXFs", */ T:1 }, + /*::[*/0x01FA/*::]*/: { /* n:"BrtEndDXFs", */ T:-1 }, + /*::[*/0x01FB/*::]*/: { /* n:"BrtDXF" */ }, + /*::[*/0x01FC/*::]*/: { /* n:"BrtBeginTableStyles", */ T:1 }, + /*::[*/0x01FD/*::]*/: { /* n:"BrtEndTableStyles", */ T:-1 }, + /*::[*/0x01FE/*::]*/: { /* n:"BrtBeginTableStyle", */ T:1 }, + /*::[*/0x01FF/*::]*/: { /* n:"BrtEndTableStyle", */ T:-1 }, + /*::[*/0x0200/*::]*/: { /* n:"BrtTableStyleElement" */ }, + /*::[*/0x0201/*::]*/: { /* n:"BrtTableStyleClient" */ }, + /*::[*/0x0202/*::]*/: { /* n:"BrtBeginVolDeps", */ T:1 }, + /*::[*/0x0203/*::]*/: { /* n:"BrtEndVolDeps", */ T:-1 }, + /*::[*/0x0204/*::]*/: { /* n:"BrtBeginVolType", */ T:1 }, + /*::[*/0x0205/*::]*/: { /* n:"BrtEndVolType", */ T:-1 }, + /*::[*/0x0206/*::]*/: { /* n:"BrtBeginVolMain", */ T:1 }, + /*::[*/0x0207/*::]*/: { /* n:"BrtEndVolMain", */ T:-1 }, + /*::[*/0x0208/*::]*/: { /* n:"BrtBeginVolTopic", */ T:1 }, + /*::[*/0x0209/*::]*/: { /* n:"BrtEndVolTopic", */ T:-1 }, + /*::[*/0x020A/*::]*/: { /* n:"BrtVolSubtopic" */ }, + /*::[*/0x020B/*::]*/: { /* n:"BrtVolRef" */ }, + /*::[*/0x020C/*::]*/: { /* n:"BrtVolNum" */ }, + /*::[*/0x020D/*::]*/: { /* n:"BrtVolErr" */ }, + /*::[*/0x020E/*::]*/: { /* n:"BrtVolStr" */ }, + /*::[*/0x020F/*::]*/: { /* n:"BrtVolBool" */ }, + /*::[*/0x0210/*::]*/: { /* n:"BrtBeginCalcChain$", */ T:1 }, + /*::[*/0x0211/*::]*/: { /* n:"BrtEndCalcChain$", */ T:-1 }, + /*::[*/0x0212/*::]*/: { /* n:"BrtBeginSortState", */ T:1 }, + /*::[*/0x0213/*::]*/: { /* n:"BrtEndSortState", */ T:-1 }, + /*::[*/0x0214/*::]*/: { /* n:"BrtBeginSortCond", */ T:1 }, + /*::[*/0x0215/*::]*/: { /* n:"BrtEndSortCond", */ T:-1 }, + /*::[*/0x0216/*::]*/: { /* n:"BrtBookProtection" */ }, + /*::[*/0x0217/*::]*/: { /* n:"BrtSheetProtection" */ }, + /*::[*/0x0218/*::]*/: { /* n:"BrtRangeProtection" */ }, + /*::[*/0x0219/*::]*/: { /* n:"BrtPhoneticInfo" */ }, + /*::[*/0x021A/*::]*/: { /* n:"BrtBeginECTxtWiz", */ T:1 }, + /*::[*/0x021B/*::]*/: { /* n:"BrtEndECTxtWiz", */ T:-1 }, + /*::[*/0x021C/*::]*/: { /* n:"BrtBeginECTWFldInfoLst", */ T:1 }, + /*::[*/0x021D/*::]*/: { /* n:"BrtEndECTWFldInfoLst", */ T:-1 }, + /*::[*/0x021E/*::]*/: { /* n:"BrtBeginECTwFldInfo", */ T:1 }, + /*::[*/0x0224/*::]*/: { /* n:"BrtFileSharing" */ }, + /*::[*/0x0225/*::]*/: { /* n:"BrtOleSize" */ }, + /*::[*/0x0226/*::]*/: { /* n:"BrtDrawing", */ f:parse_RelID }, + /*::[*/0x0227/*::]*/: { /* n:"BrtLegacyDrawing" */ }, + /*::[*/0x0228/*::]*/: { /* n:"BrtLegacyDrawingHF" */ }, + /*::[*/0x0229/*::]*/: { /* n:"BrtWebOpt" */ }, + /*::[*/0x022A/*::]*/: { /* n:"BrtBeginWebPubItems", */ T:1 }, + /*::[*/0x022B/*::]*/: { /* n:"BrtEndWebPubItems", */ T:-1 }, + /*::[*/0x022C/*::]*/: { /* n:"BrtBeginWebPubItem", */ T:1 }, + /*::[*/0x022D/*::]*/: { /* n:"BrtEndWebPubItem", */ T:-1 }, + /*::[*/0x022E/*::]*/: { /* n:"BrtBeginSXCondFmt", */ T:1 }, + /*::[*/0x022F/*::]*/: { /* n:"BrtEndSXCondFmt", */ T:-1 }, + /*::[*/0x0230/*::]*/: { /* n:"BrtBeginSXCondFmts", */ T:1 }, + /*::[*/0x0231/*::]*/: { /* n:"BrtEndSXCondFmts", */ T:-1 }, + /*::[*/0x0232/*::]*/: { /* n:"BrtBkHim" */ }, + /*::[*/0x0234/*::]*/: { /* n:"BrtColor" */ }, + /*::[*/0x0235/*::]*/: { /* n:"BrtBeginIndexedColors", */ T:1 }, + /*::[*/0x0236/*::]*/: { /* n:"BrtEndIndexedColors", */ T:-1 }, + /*::[*/0x0239/*::]*/: { /* n:"BrtBeginMRUColors", */ T:1 }, + /*::[*/0x023A/*::]*/: { /* n:"BrtEndMRUColors", */ T:-1 }, + /*::[*/0x023C/*::]*/: { /* n:"BrtMRUColor" */ }, + /*::[*/0x023D/*::]*/: { /* n:"BrtBeginDVals", */ T:1 }, + /*::[*/0x023E/*::]*/: { /* n:"BrtEndDVals", */ T:-1 }, + /*::[*/0x0241/*::]*/: { /* n:"BrtSupNameStart" */ }, + /*::[*/0x0242/*::]*/: { /* n:"BrtSupNameValueStart" */ }, + /*::[*/0x0243/*::]*/: { /* n:"BrtSupNameValueEnd" */ }, + /*::[*/0x0244/*::]*/: { /* n:"BrtSupNameNum" */ }, + /*::[*/0x0245/*::]*/: { /* n:"BrtSupNameErr" */ }, + /*::[*/0x0246/*::]*/: { /* n:"BrtSupNameSt" */ }, + /*::[*/0x0247/*::]*/: { /* n:"BrtSupNameNil" */ }, + /*::[*/0x0248/*::]*/: { /* n:"BrtSupNameBool" */ }, + /*::[*/0x0249/*::]*/: { /* n:"BrtSupNameFmla" */ }, + /*::[*/0x024A/*::]*/: { /* n:"BrtSupNameBits" */ }, + /*::[*/0x024B/*::]*/: { /* n:"BrtSupNameEnd" */ }, + /*::[*/0x024C/*::]*/: { /* n:"BrtEndSupBook", */ T:-1 }, + /*::[*/0x024D/*::]*/: { /* n:"BrtCellSmartTagProperty" */ }, + /*::[*/0x024E/*::]*/: { /* n:"BrtBeginCellSmartTag", */ T:1 }, + /*::[*/0x024F/*::]*/: { /* n:"BrtEndCellSmartTag", */ T:-1 }, + /*::[*/0x0250/*::]*/: { /* n:"BrtBeginCellSmartTags", */ T:1 }, + /*::[*/0x0251/*::]*/: { /* n:"BrtEndCellSmartTags", */ T:-1 }, + /*::[*/0x0252/*::]*/: { /* n:"BrtBeginSmartTags", */ T:1 }, + /*::[*/0x0253/*::]*/: { /* n:"BrtEndSmartTags", */ T:-1 }, + /*::[*/0x0254/*::]*/: { /* n:"BrtSmartTagType" */ }, + /*::[*/0x0255/*::]*/: { /* n:"BrtBeginSmartTagTypes", */ T:1 }, + /*::[*/0x0256/*::]*/: { /* n:"BrtEndSmartTagTypes", */ T:-1 }, + /*::[*/0x0257/*::]*/: { /* n:"BrtBeginSXFilters", */ T:1 }, + /*::[*/0x0258/*::]*/: { /* n:"BrtEndSXFilters", */ T:-1 }, + /*::[*/0x0259/*::]*/: { /* n:"BrtBeginSXFILTER", */ T:1 }, + /*::[*/0x025A/*::]*/: { /* n:"BrtEndSXFilter", */ T:-1 }, + /*::[*/0x025B/*::]*/: { /* n:"BrtBeginFills", */ T:1 }, + /*::[*/0x025C/*::]*/: { /* n:"BrtEndFills", */ T:-1 }, + /*::[*/0x025D/*::]*/: { /* n:"BrtBeginCellWatches", */ T:1 }, + /*::[*/0x025E/*::]*/: { /* n:"BrtEndCellWatches", */ T:-1 }, + /*::[*/0x025F/*::]*/: { /* n:"BrtCellWatch" */ }, + /*::[*/0x0260/*::]*/: { /* n:"BrtBeginCRErrs", */ T:1 }, + /*::[*/0x0261/*::]*/: { /* n:"BrtEndCRErrs", */ T:-1 }, + /*::[*/0x0262/*::]*/: { /* n:"BrtCrashRecErr" */ }, + /*::[*/0x0263/*::]*/: { /* n:"BrtBeginFonts", */ T:1 }, + /*::[*/0x0264/*::]*/: { /* n:"BrtEndFonts", */ T:-1 }, + /*::[*/0x0265/*::]*/: { /* n:"BrtBeginBorders", */ T:1 }, + /*::[*/0x0266/*::]*/: { /* n:"BrtEndBorders", */ T:-1 }, + /*::[*/0x0267/*::]*/: { /* n:"BrtBeginFmts", */ T:1 }, + /*::[*/0x0268/*::]*/: { /* n:"BrtEndFmts", */ T:-1 }, + /*::[*/0x0269/*::]*/: { /* n:"BrtBeginCellXFs", */ T:1 }, + /*::[*/0x026A/*::]*/: { /* n:"BrtEndCellXFs", */ T:-1 }, + /*::[*/0x026B/*::]*/: { /* n:"BrtBeginStyles", */ T:1 }, + /*::[*/0x026C/*::]*/: { /* n:"BrtEndStyles", */ T:-1 }, + /*::[*/0x0271/*::]*/: { /* n:"BrtBigName" */ }, + /*::[*/0x0272/*::]*/: { /* n:"BrtBeginCellStyleXFs", */ T:1 }, + /*::[*/0x0273/*::]*/: { /* n:"BrtEndCellStyleXFs", */ T:-1 }, + /*::[*/0x0274/*::]*/: { /* n:"BrtBeginComments", */ T:1 }, + /*::[*/0x0275/*::]*/: { /* n:"BrtEndComments", */ T:-1 }, + /*::[*/0x0276/*::]*/: { /* n:"BrtBeginCommentAuthors", */ T:1 }, + /*::[*/0x0277/*::]*/: { /* n:"BrtEndCommentAuthors", */ T:-1 }, + /*::[*/0x0278/*::]*/: { /* n:"BrtCommentAuthor", */ f:parse_BrtCommentAuthor }, + /*::[*/0x0279/*::]*/: { /* n:"BrtBeginCommentList", */ T:1 }, + /*::[*/0x027A/*::]*/: { /* n:"BrtEndCommentList", */ T:-1 }, + /*::[*/0x027B/*::]*/: { /* n:"BrtBeginComment", */ T:1, f:parse_BrtBeginComment}, + /*::[*/0x027C/*::]*/: { /* n:"BrtEndComment", */ T:-1 }, + /*::[*/0x027D/*::]*/: { /* n:"BrtCommentText", */ f:parse_BrtCommentText }, + /*::[*/0x027E/*::]*/: { /* n:"BrtBeginOleObjects", */ T:1 }, + /*::[*/0x027F/*::]*/: { /* n:"BrtOleObject" */ }, + /*::[*/0x0280/*::]*/: { /* n:"BrtEndOleObjects", */ T:-1 }, + /*::[*/0x0281/*::]*/: { /* n:"BrtBeginSxrules", */ T:1 }, + /*::[*/0x0282/*::]*/: { /* n:"BrtEndSxRules", */ T:-1 }, + /*::[*/0x0283/*::]*/: { /* n:"BrtBeginActiveXControls", */ T:1 }, + /*::[*/0x0284/*::]*/: { /* n:"BrtActiveX" */ }, + /*::[*/0x0285/*::]*/: { /* n:"BrtEndActiveXControls", */ T:-1 }, + /*::[*/0x0286/*::]*/: { /* n:"BrtBeginPCDSDTCEMembersSortBy", */ T:1 }, + /*::[*/0x0288/*::]*/: { /* n:"BrtBeginCellIgnoreECs", */ T:1 }, + /*::[*/0x0289/*::]*/: { /* n:"BrtCellIgnoreEC" */ }, + /*::[*/0x028A/*::]*/: { /* n:"BrtEndCellIgnoreECs", */ T:-1 }, + /*::[*/0x028B/*::]*/: { /* n:"BrtCsProp", */ f:parse_BrtCsProp }, + /*::[*/0x028C/*::]*/: { /* n:"BrtCsPageSetup" */ }, + /*::[*/0x028D/*::]*/: { /* n:"BrtBeginUserCsViews", */ T:1 }, + /*::[*/0x028E/*::]*/: { /* n:"BrtEndUserCsViews", */ T:-1 }, + /*::[*/0x028F/*::]*/: { /* n:"BrtBeginUserCsView", */ T:1 }, + /*::[*/0x0290/*::]*/: { /* n:"BrtEndUserCsView", */ T:-1 }, + /*::[*/0x0291/*::]*/: { /* n:"BrtBeginPcdSFCIEntries", */ T:1 }, + /*::[*/0x0292/*::]*/: { /* n:"BrtEndPCDSFCIEntries", */ T:-1 }, + /*::[*/0x0293/*::]*/: { /* n:"BrtPCDSFCIEntry" */ }, + /*::[*/0x0294/*::]*/: { /* n:"BrtBeginListParts", */ T:1 }, + /*::[*/0x0295/*::]*/: { /* n:"BrtListPart" */ }, + /*::[*/0x0296/*::]*/: { /* n:"BrtEndListParts", */ T:-1 }, + /*::[*/0x0297/*::]*/: { /* n:"BrtSheetCalcProp" */ }, + /*::[*/0x0298/*::]*/: { /* n:"BrtBeginFnGroup", */ T:1 }, + /*::[*/0x0299/*::]*/: { /* n:"BrtFnGroup" */ }, + /*::[*/0x029A/*::]*/: { /* n:"BrtEndFnGroup", */ T:-1 }, + /*::[*/0x029B/*::]*/: { /* n:"BrtSupAddin" */ }, + /*::[*/0x029C/*::]*/: { /* n:"BrtSXTDMPOrder" */ }, + /*::[*/0x029D/*::]*/: { /* n:"BrtCsProtection" */ }, + /*::[*/0x029F/*::]*/: { /* n:"BrtBeginWsSortMap", */ T:1 }, + /*::[*/0x02A0/*::]*/: { /* n:"BrtEndWsSortMap", */ T:-1 }, + /*::[*/0x02A1/*::]*/: { /* n:"BrtBeginRRSort", */ T:1 }, + /*::[*/0x02A2/*::]*/: { /* n:"BrtEndRRSort", */ T:-1 }, + /*::[*/0x02A3/*::]*/: { /* n:"BrtRRSortItem" */ }, + /*::[*/0x02A4/*::]*/: { /* n:"BrtFileSharingIso" */ }, + /*::[*/0x02A5/*::]*/: { /* n:"BrtBookProtectionIso" */ }, + /*::[*/0x02A6/*::]*/: { /* n:"BrtSheetProtectionIso" */ }, + /*::[*/0x02A7/*::]*/: { /* n:"BrtCsProtectionIso" */ }, + /*::[*/0x02A8/*::]*/: { /* n:"BrtRangeProtectionIso" */ }, + /*::[*/0x02A9/*::]*/: { /* n:"BrtDValList" */ }, + /*::[*/0x0400/*::]*/: { /* n:"BrtRwDescent" */ }, + /*::[*/0x0401/*::]*/: { /* n:"BrtKnownFonts" */ }, + /*::[*/0x0402/*::]*/: { /* n:"BrtBeginSXTupleSet", */ T:1 }, + /*::[*/0x0403/*::]*/: { /* n:"BrtEndSXTupleSet", */ T:-1 }, + /*::[*/0x0404/*::]*/: { /* n:"BrtBeginSXTupleSetHeader", */ T:1 }, + /*::[*/0x0405/*::]*/: { /* n:"BrtEndSXTupleSetHeader", */ T:-1 }, + /*::[*/0x0406/*::]*/: { /* n:"BrtSXTupleSetHeaderItem" */ }, + /*::[*/0x0407/*::]*/: { /* n:"BrtBeginSXTupleSetData", */ T:1 }, + /*::[*/0x0408/*::]*/: { /* n:"BrtEndSXTupleSetData", */ T:-1 }, + /*::[*/0x0409/*::]*/: { /* n:"BrtBeginSXTupleSetRow", */ T:1 }, + /*::[*/0x040A/*::]*/: { /* n:"BrtEndSXTupleSetRow", */ T:-1 }, + /*::[*/0x040B/*::]*/: { /* n:"BrtSXTupleSetRowItem" */ }, + /*::[*/0x040C/*::]*/: { /* n:"BrtNameExt" */ }, + /*::[*/0x040D/*::]*/: { /* n:"BrtPCDH14" */ }, + /*::[*/0x040E/*::]*/: { /* n:"BrtBeginPCDCalcMem14", */ T:1 }, + /*::[*/0x040F/*::]*/: { /* n:"BrtEndPCDCalcMem14", */ T:-1 }, + /*::[*/0x0410/*::]*/: { /* n:"BrtSXTH14" */ }, + /*::[*/0x0411/*::]*/: { /* n:"BrtBeginSparklineGroup", */ T:1 }, + /*::[*/0x0412/*::]*/: { /* n:"BrtEndSparklineGroup", */ T:-1 }, + /*::[*/0x0413/*::]*/: { /* n:"BrtSparkline" */ }, + /*::[*/0x0414/*::]*/: { /* n:"BrtSXDI14" */ }, + /*::[*/0x0415/*::]*/: { /* n:"BrtWsFmtInfoEx14" */ }, + /*::[*/0x0416/*::]*/: { /* n:"BrtBeginConditionalFormatting14", */ T:1 }, + /*::[*/0x0417/*::]*/: { /* n:"BrtEndConditionalFormatting14", */ T:-1 }, + /*::[*/0x0418/*::]*/: { /* n:"BrtBeginCFRule14", */ T:1 }, + /*::[*/0x0419/*::]*/: { /* n:"BrtEndCFRule14", */ T:-1 }, + /*::[*/0x041A/*::]*/: { /* n:"BrtCFVO14" */ }, + /*::[*/0x041B/*::]*/: { /* n:"BrtBeginDatabar14", */ T:1 }, + /*::[*/0x041C/*::]*/: { /* n:"BrtBeginIconSet14", */ T:1 }, + /*::[*/0x041D/*::]*/: { /* n:"BrtDVal14", */ f: parse_BrtDVal14 }, + /*::[*/0x041E/*::]*/: { /* n:"BrtBeginDVals14", */ T:1 }, + /*::[*/0x041F/*::]*/: { /* n:"BrtColor14" */ }, + /*::[*/0x0420/*::]*/: { /* n:"BrtBeginSparklines", */ T:1 }, + /*::[*/0x0421/*::]*/: { /* n:"BrtEndSparklines", */ T:-1 }, + /*::[*/0x0422/*::]*/: { /* n:"BrtBeginSparklineGroups", */ T:1 }, + /*::[*/0x0423/*::]*/: { /* n:"BrtEndSparklineGroups", */ T:-1 }, + /*::[*/0x0425/*::]*/: { /* n:"BrtSXVD14" */ }, + /*::[*/0x0426/*::]*/: { /* n:"BrtBeginSXView14", */ T:1 }, + /*::[*/0x0427/*::]*/: { /* n:"BrtEndSXView14", */ T:-1 }, + /*::[*/0x0428/*::]*/: { /* n:"BrtBeginSXView16", */ T:1 }, + /*::[*/0x0429/*::]*/: { /* n:"BrtEndSXView16", */ T:-1 }, + /*::[*/0x042A/*::]*/: { /* n:"BrtBeginPCD14", */ T:1 }, + /*::[*/0x042B/*::]*/: { /* n:"BrtEndPCD14", */ T:-1 }, + /*::[*/0x042C/*::]*/: { /* n:"BrtBeginExtConn14", */ T:1 }, + /*::[*/0x042D/*::]*/: { /* n:"BrtEndExtConn14", */ T:-1 }, + /*::[*/0x042E/*::]*/: { /* n:"BrtBeginSlicerCacheIDs", */ T:1 }, + /*::[*/0x042F/*::]*/: { /* n:"BrtEndSlicerCacheIDs", */ T:-1 }, + /*::[*/0x0430/*::]*/: { /* n:"BrtBeginSlicerCacheID", */ T:1 }, + /*::[*/0x0431/*::]*/: { /* n:"BrtEndSlicerCacheID", */ T:-1 }, + /*::[*/0x0433/*::]*/: { /* n:"BrtBeginSlicerCache", */ T:1 }, + /*::[*/0x0434/*::]*/: { /* n:"BrtEndSlicerCache", */ T:-1 }, + /*::[*/0x0435/*::]*/: { /* n:"BrtBeginSlicerCacheDef", */ T:1 }, + /*::[*/0x0436/*::]*/: { /* n:"BrtEndSlicerCacheDef", */ T:-1 }, + /*::[*/0x0437/*::]*/: { /* n:"BrtBeginSlicersEx", */ T:1 }, + /*::[*/0x0438/*::]*/: { /* n:"BrtEndSlicersEx", */ T:-1 }, + /*::[*/0x0439/*::]*/: { /* n:"BrtBeginSlicerEx", */ T:1 }, + /*::[*/0x043A/*::]*/: { /* n:"BrtEndSlicerEx", */ T:-1 }, + /*::[*/0x043B/*::]*/: { /* n:"BrtBeginSlicer", */ T:1 }, + /*::[*/0x043C/*::]*/: { /* n:"BrtEndSlicer", */ T:-1 }, + /*::[*/0x043D/*::]*/: { /* n:"BrtSlicerCachePivotTables" */ }, + /*::[*/0x043E/*::]*/: { /* n:"BrtBeginSlicerCacheOlapImpl", */ T:1 }, + /*::[*/0x043F/*::]*/: { /* n:"BrtEndSlicerCacheOlapImpl", */ T:-1 }, + /*::[*/0x0440/*::]*/: { /* n:"BrtBeginSlicerCacheLevelsData", */ T:1 }, + /*::[*/0x0441/*::]*/: { /* n:"BrtEndSlicerCacheLevelsData", */ T:-1 }, + /*::[*/0x0442/*::]*/: { /* n:"BrtBeginSlicerCacheLevelData", */ T:1 }, + /*::[*/0x0443/*::]*/: { /* n:"BrtEndSlicerCacheLevelData", */ T:-1 }, + /*::[*/0x0444/*::]*/: { /* n:"BrtBeginSlicerCacheSiRanges", */ T:1 }, + /*::[*/0x0445/*::]*/: { /* n:"BrtEndSlicerCacheSiRanges", */ T:-1 }, + /*::[*/0x0446/*::]*/: { /* n:"BrtBeginSlicerCacheSiRange", */ T:1 }, + /*::[*/0x0447/*::]*/: { /* n:"BrtEndSlicerCacheSiRange", */ T:-1 }, + /*::[*/0x0448/*::]*/: { /* n:"BrtSlicerCacheOlapItem" */ }, + /*::[*/0x0449/*::]*/: { /* n:"BrtBeginSlicerCacheSelections", */ T:1 }, + /*::[*/0x044A/*::]*/: { /* n:"BrtSlicerCacheSelection" */ }, + /*::[*/0x044B/*::]*/: { /* n:"BrtEndSlicerCacheSelections", */ T:-1 }, + /*::[*/0x044C/*::]*/: { /* n:"BrtBeginSlicerCacheNative", */ T:1 }, + /*::[*/0x044D/*::]*/: { /* n:"BrtEndSlicerCacheNative", */ T:-1 }, + /*::[*/0x044E/*::]*/: { /* n:"BrtSlicerCacheNativeItem" */ }, + /*::[*/0x044F/*::]*/: { /* n:"BrtRangeProtection14" */ }, + /*::[*/0x0450/*::]*/: { /* n:"BrtRangeProtectionIso14" */ }, + /*::[*/0x0451/*::]*/: { /* n:"BrtCellIgnoreEC14" */ }, + /*::[*/0x0457/*::]*/: { /* n:"BrtList14" */ }, + /*::[*/0x0458/*::]*/: { /* n:"BrtCFIcon" */ }, + /*::[*/0x0459/*::]*/: { /* n:"BrtBeginSlicerCachesPivotCacheIDs", */ T:1 }, + /*::[*/0x045A/*::]*/: { /* n:"BrtEndSlicerCachesPivotCacheIDs", */ T:-1 }, + /*::[*/0x045B/*::]*/: { /* n:"BrtBeginSlicers", */ T:1 }, + /*::[*/0x045C/*::]*/: { /* n:"BrtEndSlicers", */ T:-1 }, + /*::[*/0x045D/*::]*/: { /* n:"BrtWbProp14" */ }, + /*::[*/0x045E/*::]*/: { /* n:"BrtBeginSXEdit", */ T:1 }, + /*::[*/0x045F/*::]*/: { /* n:"BrtEndSXEdit", */ T:-1 }, + /*::[*/0x0460/*::]*/: { /* n:"BrtBeginSXEdits", */ T:1 }, + /*::[*/0x0461/*::]*/: { /* n:"BrtEndSXEdits", */ T:-1 }, + /*::[*/0x0462/*::]*/: { /* n:"BrtBeginSXChange", */ T:1 }, + /*::[*/0x0463/*::]*/: { /* n:"BrtEndSXChange", */ T:-1 }, + /*::[*/0x0464/*::]*/: { /* n:"BrtBeginSXChanges", */ T:1 }, + /*::[*/0x0465/*::]*/: { /* n:"BrtEndSXChanges", */ T:-1 }, + /*::[*/0x0466/*::]*/: { /* n:"BrtSXTupleItems" */ }, + /*::[*/0x0468/*::]*/: { /* n:"BrtBeginSlicerStyle", */ T:1 }, + /*::[*/0x0469/*::]*/: { /* n:"BrtEndSlicerStyle", */ T:-1 }, + /*::[*/0x046A/*::]*/: { /* n:"BrtSlicerStyleElement" */ }, + /*::[*/0x046B/*::]*/: { /* n:"BrtBeginStyleSheetExt14", */ T:1 }, + /*::[*/0x046C/*::]*/: { /* n:"BrtEndStyleSheetExt14", */ T:-1 }, + /*::[*/0x046D/*::]*/: { /* n:"BrtBeginSlicerCachesPivotCacheID", */ T:1 }, + /*::[*/0x046E/*::]*/: { /* n:"BrtEndSlicerCachesPivotCacheID", */ T:-1 }, + /*::[*/0x046F/*::]*/: { /* n:"BrtBeginConditionalFormattings", */ T:1 }, + /*::[*/0x0470/*::]*/: { /* n:"BrtEndConditionalFormattings", */ T:-1 }, + /*::[*/0x0471/*::]*/: { /* n:"BrtBeginPCDCalcMemExt", */ T:1 }, + /*::[*/0x0472/*::]*/: { /* n:"BrtEndPCDCalcMemExt", */ T:-1 }, + /*::[*/0x0473/*::]*/: { /* n:"BrtBeginPCDCalcMemsExt", */ T:1 }, + /*::[*/0x0474/*::]*/: { /* n:"BrtEndPCDCalcMemsExt", */ T:-1 }, + /*::[*/0x0475/*::]*/: { /* n:"BrtPCDField14" */ }, + /*::[*/0x0476/*::]*/: { /* n:"BrtBeginSlicerStyles", */ T:1 }, + /*::[*/0x0477/*::]*/: { /* n:"BrtEndSlicerStyles", */ T:-1 }, + /*::[*/0x0478/*::]*/: { /* n:"BrtBeginSlicerStyleElements", */ T:1 }, + /*::[*/0x0479/*::]*/: { /* n:"BrtEndSlicerStyleElements", */ T:-1 }, + /*::[*/0x047A/*::]*/: { /* n:"BrtCFRuleExt" */ }, + /*::[*/0x047B/*::]*/: { /* n:"BrtBeginSXCondFmt14", */ T:1 }, + /*::[*/0x047C/*::]*/: { /* n:"BrtEndSXCondFmt14", */ T:-1 }, + /*::[*/0x047D/*::]*/: { /* n:"BrtBeginSXCondFmts14", */ T:1 }, + /*::[*/0x047E/*::]*/: { /* n:"BrtEndSXCondFmts14", */ T:-1 }, + /*::[*/0x0480/*::]*/: { /* n:"BrtBeginSortCond14", */ T:1 }, + /*::[*/0x0481/*::]*/: { /* n:"BrtEndSortCond14", */ T:-1 }, + /*::[*/0x0482/*::]*/: { /* n:"BrtEndDVals14", */ T:-1 }, + /*::[*/0x0483/*::]*/: { /* n:"BrtEndIconSet14", */ T:-1 }, + /*::[*/0x0484/*::]*/: { /* n:"BrtEndDatabar14", */ T:-1 }, + /*::[*/0x0485/*::]*/: { /* n:"BrtBeginColorScale14", */ T:1 }, + /*::[*/0x0486/*::]*/: { /* n:"BrtEndColorScale14", */ T:-1 }, + /*::[*/0x0487/*::]*/: { /* n:"BrtBeginSxrules14", */ T:1 }, + /*::[*/0x0488/*::]*/: { /* n:"BrtEndSxrules14", */ T:-1 }, + /*::[*/0x0489/*::]*/: { /* n:"BrtBeginPRule14", */ T:1 }, + /*::[*/0x048A/*::]*/: { /* n:"BrtEndPRule14", */ T:-1 }, + /*::[*/0x048B/*::]*/: { /* n:"BrtBeginPRFilters14", */ T:1 }, + /*::[*/0x048C/*::]*/: { /* n:"BrtEndPRFilters14", */ T:-1 }, + /*::[*/0x048D/*::]*/: { /* n:"BrtBeginPRFilter14", */ T:1 }, + /*::[*/0x048E/*::]*/: { /* n:"BrtEndPRFilter14", */ T:-1 }, + /*::[*/0x048F/*::]*/: { /* n:"BrtBeginPRFItem14", */ T:1 }, + /*::[*/0x0490/*::]*/: { /* n:"BrtEndPRFItem14", */ T:-1 }, + /*::[*/0x0491/*::]*/: { /* n:"BrtBeginCellIgnoreECs14", */ T:1 }, + /*::[*/0x0492/*::]*/: { /* n:"BrtEndCellIgnoreECs14", */ T:-1 }, + /*::[*/0x0493/*::]*/: { /* n:"BrtDxf14" */ }, + /*::[*/0x0494/*::]*/: { /* n:"BrtBeginDxF14s", */ T:1 }, + /*::[*/0x0495/*::]*/: { /* n:"BrtEndDxf14s", */ T:-1 }, + /*::[*/0x0499/*::]*/: { /* n:"BrtFilter14" */ }, + /*::[*/0x049A/*::]*/: { /* n:"BrtBeginCustomFilters14", */ T:1 }, + /*::[*/0x049C/*::]*/: { /* n:"BrtCustomFilter14" */ }, + /*::[*/0x049D/*::]*/: { /* n:"BrtIconFilter14" */ }, + /*::[*/0x049E/*::]*/: { /* n:"BrtPivotCacheConnectionName" */ }, + /*::[*/0x0800/*::]*/: { /* n:"BrtBeginDecoupledPivotCacheIDs", */ T:1 }, + /*::[*/0x0801/*::]*/: { /* n:"BrtEndDecoupledPivotCacheIDs", */ T:-1 }, + /*::[*/0x0802/*::]*/: { /* n:"BrtDecoupledPivotCacheID" */ }, + /*::[*/0x0803/*::]*/: { /* n:"BrtBeginPivotTableRefs", */ T:1 }, + /*::[*/0x0804/*::]*/: { /* n:"BrtEndPivotTableRefs", */ T:-1 }, + /*::[*/0x0805/*::]*/: { /* n:"BrtPivotTableRef" */ }, + /*::[*/0x0806/*::]*/: { /* n:"BrtSlicerCacheBookPivotTables" */ }, + /*::[*/0x0807/*::]*/: { /* n:"BrtBeginSxvcells", */ T:1 }, + /*::[*/0x0808/*::]*/: { /* n:"BrtEndSxvcells", */ T:-1 }, + /*::[*/0x0809/*::]*/: { /* n:"BrtBeginSxRow", */ T:1 }, + /*::[*/0x080A/*::]*/: { /* n:"BrtEndSxRow", */ T:-1 }, + /*::[*/0x080C/*::]*/: { /* n:"BrtPcdCalcMem15" */ }, + /*::[*/0x0813/*::]*/: { /* n:"BrtQsi15" */ }, + /*::[*/0x0814/*::]*/: { /* n:"BrtBeginWebExtensions", */ T:1 }, + /*::[*/0x0815/*::]*/: { /* n:"BrtEndWebExtensions", */ T:-1 }, + /*::[*/0x0816/*::]*/: { /* n:"BrtWebExtension" */ }, + /*::[*/0x0817/*::]*/: { /* n:"BrtAbsPath15" */ }, + /*::[*/0x0818/*::]*/: { /* n:"BrtBeginPivotTableUISettings", */ T:1 }, + /*::[*/0x0819/*::]*/: { /* n:"BrtEndPivotTableUISettings", */ T:-1 }, + /*::[*/0x081B/*::]*/: { /* n:"BrtTableSlicerCacheIDs" */ }, + /*::[*/0x081C/*::]*/: { /* n:"BrtTableSlicerCacheID" */ }, + /*::[*/0x081D/*::]*/: { /* n:"BrtBeginTableSlicerCache", */ T:1 }, + /*::[*/0x081E/*::]*/: { /* n:"BrtEndTableSlicerCache", */ T:-1 }, + /*::[*/0x081F/*::]*/: { /* n:"BrtSxFilter15" */ }, + /*::[*/0x0820/*::]*/: { /* n:"BrtBeginTimelineCachePivotCacheIDs", */ T:1 }, + /*::[*/0x0821/*::]*/: { /* n:"BrtEndTimelineCachePivotCacheIDs", */ T:-1 }, + /*::[*/0x0822/*::]*/: { /* n:"BrtTimelineCachePivotCacheID" */ }, + /*::[*/0x0823/*::]*/: { /* n:"BrtBeginTimelineCacheIDs", */ T:1 }, + /*::[*/0x0824/*::]*/: { /* n:"BrtEndTimelineCacheIDs", */ T:-1 }, + /*::[*/0x0825/*::]*/: { /* n:"BrtBeginTimelineCacheID", */ T:1 }, + /*::[*/0x0826/*::]*/: { /* n:"BrtEndTimelineCacheID", */ T:-1 }, + /*::[*/0x0827/*::]*/: { /* n:"BrtBeginTimelinesEx", */ T:1 }, + /*::[*/0x0828/*::]*/: { /* n:"BrtEndTimelinesEx", */ T:-1 }, + /*::[*/0x0829/*::]*/: { /* n:"BrtBeginTimelineEx", */ T:1 }, + /*::[*/0x082A/*::]*/: { /* n:"BrtEndTimelineEx", */ T:-1 }, + /*::[*/0x082B/*::]*/: { /* n:"BrtWorkBookPr15" */ }, + /*::[*/0x082C/*::]*/: { /* n:"BrtPCDH15" */ }, + /*::[*/0x082D/*::]*/: { /* n:"BrtBeginTimelineStyle", */ T:1 }, + /*::[*/0x082E/*::]*/: { /* n:"BrtEndTimelineStyle", */ T:-1 }, + /*::[*/0x082F/*::]*/: { /* n:"BrtTimelineStyleElement" */ }, + /*::[*/0x0830/*::]*/: { /* n:"BrtBeginTimelineStylesheetExt15", */ T:1 }, + /*::[*/0x0831/*::]*/: { /* n:"BrtEndTimelineStylesheetExt15", */ T:-1 }, + /*::[*/0x0832/*::]*/: { /* n:"BrtBeginTimelineStyles", */ T:1 }, + /*::[*/0x0833/*::]*/: { /* n:"BrtEndTimelineStyles", */ T:-1 }, + /*::[*/0x0834/*::]*/: { /* n:"BrtBeginTimelineStyleElements", */ T:1 }, + /*::[*/0x0835/*::]*/: { /* n:"BrtEndTimelineStyleElements", */ T:-1 }, + /*::[*/0x0836/*::]*/: { /* n:"BrtDxf15" */ }, + /*::[*/0x0837/*::]*/: { /* n:"BrtBeginDxfs15", */ T:1 }, + /*::[*/0x0838/*::]*/: { /* n:"BrtEndDxfs15", */ T:-1 }, + /*::[*/0x0839/*::]*/: { /* n:"BrtSlicerCacheHideItemsWithNoData" */ }, + /*::[*/0x083A/*::]*/: { /* n:"BrtBeginItemUniqueNames", */ T:1 }, + /*::[*/0x083B/*::]*/: { /* n:"BrtEndItemUniqueNames", */ T:-1 }, + /*::[*/0x083C/*::]*/: { /* n:"BrtItemUniqueName" */ }, + /*::[*/0x083D/*::]*/: { /* n:"BrtBeginExtConn15", */ T:1 }, + /*::[*/0x083E/*::]*/: { /* n:"BrtEndExtConn15", */ T:-1 }, + /*::[*/0x083F/*::]*/: { /* n:"BrtBeginOledbPr15", */ T:1 }, + /*::[*/0x0840/*::]*/: { /* n:"BrtEndOledbPr15", */ T:-1 }, + /*::[*/0x0841/*::]*/: { /* n:"BrtBeginDataFeedPr15", */ T:1 }, + /*::[*/0x0842/*::]*/: { /* n:"BrtEndDataFeedPr15", */ T:-1 }, + /*::[*/0x0843/*::]*/: { /* n:"BrtTextPr15" */ }, + /*::[*/0x0844/*::]*/: { /* n:"BrtRangePr15" */ }, + /*::[*/0x0845/*::]*/: { /* n:"BrtDbCommand15" */ }, + /*::[*/0x0846/*::]*/: { /* n:"BrtBeginDbTables15", */ T:1 }, + /*::[*/0x0847/*::]*/: { /* n:"BrtEndDbTables15", */ T:-1 }, + /*::[*/0x0848/*::]*/: { /* n:"BrtDbTable15" */ }, + /*::[*/0x0849/*::]*/: { /* n:"BrtBeginDataModel", */ T:1 }, + /*::[*/0x084A/*::]*/: { /* n:"BrtEndDataModel", */ T:-1 }, + /*::[*/0x084B/*::]*/: { /* n:"BrtBeginModelTables", */ T:1 }, + /*::[*/0x084C/*::]*/: { /* n:"BrtEndModelTables", */ T:-1 }, + /*::[*/0x084D/*::]*/: { /* n:"BrtModelTable" */ }, + /*::[*/0x084E/*::]*/: { /* n:"BrtBeginModelRelationships", */ T:1 }, + /*::[*/0x084F/*::]*/: { /* n:"BrtEndModelRelationships", */ T:-1 }, + /*::[*/0x0850/*::]*/: { /* n:"BrtModelRelationship" */ }, + /*::[*/0x0851/*::]*/: { /* n:"BrtBeginECTxtWiz15", */ T:1 }, + /*::[*/0x0852/*::]*/: { /* n:"BrtEndECTxtWiz15", */ T:-1 }, + /*::[*/0x0853/*::]*/: { /* n:"BrtBeginECTWFldInfoLst15", */ T:1 }, + /*::[*/0x0854/*::]*/: { /* n:"BrtEndECTWFldInfoLst15", */ T:-1 }, + /*::[*/0x0855/*::]*/: { /* n:"BrtBeginECTWFldInfo15", */ T:1 }, + /*::[*/0x0856/*::]*/: { /* n:"BrtFieldListActiveItem" */ }, + /*::[*/0x0857/*::]*/: { /* n:"BrtPivotCacheIdVersion" */ }, + /*::[*/0x0858/*::]*/: { /* n:"BrtSXDI15" */ }, + /*::[*/0x0859/*::]*/: { /* n:"BrtBeginModelTimeGroupings", */ T:1 }, + /*::[*/0x085A/*::]*/: { /* n:"BrtEndModelTimeGroupings", */ T:-1 }, + /*::[*/0x085B/*::]*/: { /* n:"BrtBeginModelTimeGrouping", */ T:1 }, + /*::[*/0x085C/*::]*/: { /* n:"BrtEndModelTimeGrouping", */ T:-1 }, + /*::[*/0x085D/*::]*/: { /* n:"BrtModelTimeGroupingCalcCol" */ }, + /*::[*/0x0C00/*::]*/: { /* n:"BrtUid" */ }, + /*::[*/0x0C01/*::]*/: { /* n:"BrtRevisionPtr" */ }, + /*::[*/0x1000/*::]*/: { /* n:"BrtBeginDynamicArrayPr", */ T:1 }, + /*::[*/0x1001/*::]*/: { /* n:"BrtEndDynamicArrayPr", */ T:-1 }, + /*::[*/0x138A/*::]*/: { /* n:"BrtBeginRichValueBlock", */ T:1 }, + /*::[*/0x138B/*::]*/: { /* n:"BrtEndRichValueBlock", */ T:-1 }, + /*::[*/0x13D9/*::]*/: { /* n:"BrtBeginRichFilters", */ T:1 }, + /*::[*/0x13DA/*::]*/: { /* n:"BrtEndRichFilters", */ T:-1 }, + /*::[*/0x13DB/*::]*/: { /* n:"BrtRichFilter" */ }, + /*::[*/0x13DC/*::]*/: { /* n:"BrtBeginRichFilterColumn", */ T:1 }, + /*::[*/0x13DD/*::]*/: { /* n:"BrtEndRichFilterColumn", */ T:-1 }, + /*::[*/0x13DE/*::]*/: { /* n:"BrtBeginCustomRichFilters", */ T:1 }, + /*::[*/0x13DF/*::]*/: { /* n:"BrtEndCustomRichFilters", */ T:-1 }, + /*::[*/0x13E0/*::]*/: { /* n:"BrtCustomRichFilter" */ }, + /*::[*/0x13E1/*::]*/: { /* n:"BrtTop10RichFilter" */ }, + /*::[*/0x13E2/*::]*/: { /* n:"BrtDynamicRichFilter" */ }, + /*::[*/0x13E4/*::]*/: { /* n:"BrtBeginRichSortCondition", */ T:1 }, + /*::[*/0x13E5/*::]*/: { /* n:"BrtEndRichSortCondition", */ T:-1 }, + /*::[*/0x13E6/*::]*/: { /* n:"BrtRichFilterDateGroupItem" */ }, + /*::[*/0x13E7/*::]*/: { /* n:"BrtBeginCalcFeatures", */ T:1 }, + /*::[*/0x13E8/*::]*/: { /* n:"BrtEndCalcFeatures", */ T:-1 }, + /*::[*/0x13E9/*::]*/: { /* n:"BrtCalcFeature" */ }, + /*::[*/0x13EB/*::]*/: { /* n:"BrtExternalLinksPr" */ }, + /*::[*/0xFFFF/*::]*/: { n:"" } +}; + +/* [MS-XLS] 2.3 Record Enumeration (and other sources) */ +var XLSRecordEnum = { + /* [MS-XLS] 2.3 Record Enumeration 2021-08-17 */ + /*::[*/0x0006/*::]*/: { /* n:"Formula", */ f:parse_Formula }, + /*::[*/0x000a/*::]*/: { /* n:"EOF", */ f:parsenoop2 }, + /*::[*/0x000c/*::]*/: { /* n:"CalcCount", */ f:parseuint16 }, // + /*::[*/0x000d/*::]*/: { /* n:"CalcMode", */ f:parseuint16 }, // + /*::[*/0x000e/*::]*/: { /* n:"CalcPrecision", */ f:parsebool }, // + /*::[*/0x000f/*::]*/: { /* n:"CalcRefMode", */ f:parsebool }, // + /*::[*/0x0010/*::]*/: { /* n:"CalcDelta", */ f:parse_Xnum }, // + /*::[*/0x0011/*::]*/: { /* n:"CalcIter", */ f:parsebool }, // + /*::[*/0x0012/*::]*/: { /* n:"Protect", */ f:parsebool }, + /*::[*/0x0013/*::]*/: { /* n:"Password", */ f:parseuint16 }, + /*::[*/0x0014/*::]*/: { /* n:"Header", */ f:parse_XLHeaderFooter }, + /*::[*/0x0015/*::]*/: { /* n:"Footer", */ f:parse_XLHeaderFooter }, + /*::[*/0x0017/*::]*/: { /* n:"ExternSheet", */ f:parse_ExternSheet }, + /*::[*/0x0018/*::]*/: { /* n:"Lbl", */ f:parse_Lbl }, + /*::[*/0x0019/*::]*/: { /* n:"WinProtect", */ f:parsebool }, + /*::[*/0x001a/*::]*/: { /* n:"VerticalPageBreaks", */ }, + /*::[*/0x001b/*::]*/: { /* n:"HorizontalPageBreaks", */ }, + /*::[*/0x001c/*::]*/: { /* n:"Note", */ f:parse_Note }, + /*::[*/0x001d/*::]*/: { /* n:"Selection", */ }, + /*::[*/0x0022/*::]*/: { /* n:"Date1904", */ f:parsebool }, + /*::[*/0x0023/*::]*/: { /* n:"ExternName", */ f:parse_ExternName }, + /*::[*/0x0026/*::]*/: { /* n:"LeftMargin", */ f:parse_Xnum }, // * + /*::[*/0x0027/*::]*/: { /* n:"RightMargin", */ f:parse_Xnum }, // * + /*::[*/0x0028/*::]*/: { /* n:"TopMargin", */ f:parse_Xnum }, // * + /*::[*/0x0029/*::]*/: { /* n:"BottomMargin", */ f:parse_Xnum }, // * + /*::[*/0x002a/*::]*/: { /* n:"PrintRowCol", */ f:parsebool }, + /*::[*/0x002b/*::]*/: { /* n:"PrintGrid", */ f:parsebool }, + /*::[*/0x002f/*::]*/: { /* n:"FilePass", */ f:parse_FilePass }, + /*::[*/0x0031/*::]*/: { /* n:"Font", */ f:parse_Font }, + /*::[*/0x0033/*::]*/: { /* n:"PrintSize", */ f:parseuint16 }, + /*::[*/0x003c/*::]*/: { /* n:"Continue", */ }, + /*::[*/0x003d/*::]*/: { /* n:"Window1", */ f:parse_Window1 }, + /*::[*/0x0040/*::]*/: { /* n:"Backup", */ f:parsebool }, + /*::[*/0x0041/*::]*/: { /* n:"Pane", */ f:parse_Pane }, + /*::[*/0x0042/*::]*/: { /* n:"CodePage", */ f:parseuint16 }, + /*::[*/0x004d/*::]*/: { /* n:"Pls", */ }, + /*::[*/0x0050/*::]*/: { /* n:"DCon", */ }, + /*::[*/0x0051/*::]*/: { /* n:"DConRef", */ }, + /*::[*/0x0052/*::]*/: { /* n:"DConName", */ }, + /*::[*/0x0055/*::]*/: { /* n:"DefColWidth", */ f:parseuint16 }, + /*::[*/0x0059/*::]*/: { /* n:"XCT", */ }, + /*::[*/0x005a/*::]*/: { /* n:"CRN", */ }, + /*::[*/0x005b/*::]*/: { /* n:"FileSharing", */ }, + /*::[*/0x005c/*::]*/: { /* n:"WriteAccess", */ f:parse_WriteAccess }, + /*::[*/0x005d/*::]*/: { /* n:"Obj", */ f:parse_Obj }, + /*::[*/0x005e/*::]*/: { /* n:"Uncalced", */ }, + /*::[*/0x005f/*::]*/: { /* n:"CalcSaveRecalc", */ f:parsebool }, // + /*::[*/0x0060/*::]*/: { /* n:"Template", */ }, + /*::[*/0x0061/*::]*/: { /* n:"Intl", */ }, + /*::[*/0x0063/*::]*/: { /* n:"ObjProtect", */ f:parsebool }, + /*::[*/0x007d/*::]*/: { /* n:"ColInfo", */ f:parse_ColInfo }, + /*::[*/0x0080/*::]*/: { /* n:"Guts", */ f:parse_Guts }, + /*::[*/0x0081/*::]*/: { /* n:"WsBool", */ f:parse_WsBool }, + /*::[*/0x0082/*::]*/: { /* n:"GridSet", */ f:parseuint16 }, + /*::[*/0x0083/*::]*/: { /* n:"HCenter", */ f:parsebool }, + /*::[*/0x0084/*::]*/: { /* n:"VCenter", */ f:parsebool }, + /*::[*/0x0085/*::]*/: { /* n:"BoundSheet8", */ f:parse_BoundSheet8 }, + /*::[*/0x0086/*::]*/: { /* n:"WriteProtect", */ }, + /*::[*/0x008c/*::]*/: { /* n:"Country", */ f:parse_Country }, + /*::[*/0x008d/*::]*/: { /* n:"HideObj", */ f:parseuint16 }, + /*::[*/0x0090/*::]*/: { /* n:"Sort", */ }, + /*::[*/0x0092/*::]*/: { /* n:"Palette", */ f:parse_Palette }, + /*::[*/0x0097/*::]*/: { /* n:"Sync", */ }, + /*::[*/0x0098/*::]*/: { /* n:"LPr", */ }, + /*::[*/0x0099/*::]*/: { /* n:"DxGCol", */ }, + /*::[*/0x009a/*::]*/: { /* n:"FnGroupName", */ }, + /*::[*/0x009b/*::]*/: { /* n:"FilterMode", */ }, + /*::[*/0x009c/*::]*/: { /* n:"BuiltInFnGroupCount", */ f:parseuint16 }, + /*::[*/0x009d/*::]*/: { /* n:"AutoFilterInfo", */ }, + /*::[*/0x009e/*::]*/: { /* n:"AutoFilter", */ }, + /*::[*/0x00a0/*::]*/: { /* n:"Scl", */ f:parse_Scl }, + /*::[*/0x00a1/*::]*/: { /* n:"Setup", */ f:parse_Setup }, + /*::[*/0x00ae/*::]*/: { /* n:"ScenMan", */ }, + /*::[*/0x00af/*::]*/: { /* n:"SCENARIO", */ }, + /*::[*/0x00b0/*::]*/: { /* n:"SxView", */ }, + /*::[*/0x00b1/*::]*/: { /* n:"Sxvd", */ }, + /*::[*/0x00b2/*::]*/: { /* n:"SXVI", */ }, + /*::[*/0x00b4/*::]*/: { /* n:"SxIvd", */ }, + /*::[*/0x00b5/*::]*/: { /* n:"SXLI", */ }, + /*::[*/0x00b6/*::]*/: { /* n:"SXPI", */ }, + /*::[*/0x00b8/*::]*/: { /* n:"DocRoute", */ }, + /*::[*/0x00b9/*::]*/: { /* n:"RecipName", */ }, + /*::[*/0x00bd/*::]*/: { /* n:"MulRk", */ f:parse_MulRk }, + /*::[*/0x00be/*::]*/: { /* n:"MulBlank", */ f:parse_MulBlank }, + /*::[*/0x00c1/*::]*/: { /* n:"Mms", */ f:parsenoop2 }, + /*::[*/0x00c5/*::]*/: { /* n:"SXDI", */ }, + /*::[*/0x00c6/*::]*/: { /* n:"SXDB", */ }, + /*::[*/0x00c7/*::]*/: { /* n:"SXFDB", */ }, + /*::[*/0x00c8/*::]*/: { /* n:"SXDBB", */ }, + /*::[*/0x00c9/*::]*/: { /* n:"SXNum", */ }, + /*::[*/0x00ca/*::]*/: { /* n:"SxBool", */ f:parsebool }, + /*::[*/0x00cb/*::]*/: { /* n:"SxErr", */ }, + /*::[*/0x00cc/*::]*/: { /* n:"SXInt", */ }, + /*::[*/0x00cd/*::]*/: { /* n:"SXString", */ }, + /*::[*/0x00ce/*::]*/: { /* n:"SXDtr", */ }, + /*::[*/0x00cf/*::]*/: { /* n:"SxNil", */ }, + /*::[*/0x00d0/*::]*/: { /* n:"SXTbl", */ }, + /*::[*/0x00d1/*::]*/: { /* n:"SXTBRGIITM", */ }, + /*::[*/0x00d2/*::]*/: { /* n:"SxTbpg", */ }, + /*::[*/0x00d3/*::]*/: { /* n:"ObProj", */ }, + /*::[*/0x00d5/*::]*/: { /* n:"SXStreamID", */ }, + /*::[*/0x00d7/*::]*/: { /* n:"DBCell", */ }, + /*::[*/0x00d8/*::]*/: { /* n:"SXRng", */ }, + /*::[*/0x00d9/*::]*/: { /* n:"SxIsxoper", */ }, + /*::[*/0x00da/*::]*/: { /* n:"BookBool", */ f:parseuint16 }, + /*::[*/0x00dc/*::]*/: { /* n:"DbOrParamQry", */ }, + /*::[*/0x00dd/*::]*/: { /* n:"ScenarioProtect", */ f:parsebool }, + /*::[*/0x00de/*::]*/: { /* n:"OleObjectSize", */ }, + /*::[*/0x00e0/*::]*/: { /* n:"XF", */ f:parse_XF }, + /*::[*/0x00e1/*::]*/: { /* n:"InterfaceHdr", */ f:parse_InterfaceHdr }, + /*::[*/0x00e2/*::]*/: { /* n:"InterfaceEnd", */ f:parsenoop2 }, + /*::[*/0x00e3/*::]*/: { /* n:"SXVS", */ }, + /*::[*/0x00e5/*::]*/: { /* n:"MergeCells", */ f:parse_MergeCells }, + /*::[*/0x00e9/*::]*/: { /* n:"BkHim", */ }, + /*::[*/0x00eb/*::]*/: { /* n:"MsoDrawingGroup", */ }, + /*::[*/0x00ec/*::]*/: { /* n:"MsoDrawing", */ }, + /*::[*/0x00ed/*::]*/: { /* n:"MsoDrawingSelection", */ }, + /*::[*/0x00ef/*::]*/: { /* n:"PhoneticInfo", */ }, + /*::[*/0x00f0/*::]*/: { /* n:"SxRule", */ }, + /*::[*/0x00f1/*::]*/: { /* n:"SXEx", */ }, + /*::[*/0x00f2/*::]*/: { /* n:"SxFilt", */ }, + /*::[*/0x00f4/*::]*/: { /* n:"SxDXF", */ }, + /*::[*/0x00f5/*::]*/: { /* n:"SxItm", */ }, + /*::[*/0x00f6/*::]*/: { /* n:"SxName", */ }, + /*::[*/0x00f7/*::]*/: { /* n:"SxSelect", */ }, + /*::[*/0x00f8/*::]*/: { /* n:"SXPair", */ }, + /*::[*/0x00f9/*::]*/: { /* n:"SxFmla", */ }, + /*::[*/0x00fb/*::]*/: { /* n:"SxFormat", */ }, + /*::[*/0x00fc/*::]*/: { /* n:"SST", */ f:parse_SST }, + /*::[*/0x00fd/*::]*/: { /* n:"LabelSst", */ f:parse_LabelSst }, + /*::[*/0x00ff/*::]*/: { /* n:"ExtSST", */ f:parse_ExtSST }, + /*::[*/0x0100/*::]*/: { /* n:"SXVDEx", */ }, + /*::[*/0x0103/*::]*/: { /* n:"SXFormula", */ }, + /*::[*/0x0122/*::]*/: { /* n:"SXDBEx", */ }, + /*::[*/0x0137/*::]*/: { /* n:"RRDInsDel", */ }, + /*::[*/0x0138/*::]*/: { /* n:"RRDHead", */ }, + /*::[*/0x013b/*::]*/: { /* n:"RRDChgCell", */ }, + /*::[*/0x013d/*::]*/: { /* n:"RRTabId", */ f:parseuint16a }, + /*::[*/0x013e/*::]*/: { /* n:"RRDRenSheet", */ }, + /*::[*/0x013f/*::]*/: { /* n:"RRSort", */ }, + /*::[*/0x0140/*::]*/: { /* n:"RRDMove", */ }, + /*::[*/0x014a/*::]*/: { /* n:"RRFormat", */ }, + /*::[*/0x014b/*::]*/: { /* n:"RRAutoFmt", */ }, + /*::[*/0x014d/*::]*/: { /* n:"RRInsertSh", */ }, + /*::[*/0x014e/*::]*/: { /* n:"RRDMoveBegin", */ }, + /*::[*/0x014f/*::]*/: { /* n:"RRDMoveEnd", */ }, + /*::[*/0x0150/*::]*/: { /* n:"RRDInsDelBegin", */ }, + /*::[*/0x0151/*::]*/: { /* n:"RRDInsDelEnd", */ }, + /*::[*/0x0152/*::]*/: { /* n:"RRDConflict", */ }, + /*::[*/0x0153/*::]*/: { /* n:"RRDDefName", */ }, + /*::[*/0x0154/*::]*/: { /* n:"RRDRstEtxp", */ }, + /*::[*/0x015f/*::]*/: { /* n:"LRng", */ }, + /*::[*/0x0160/*::]*/: { /* n:"UsesELFs", */ f:parsebool }, + /*::[*/0x0161/*::]*/: { /* n:"DSF", */ f:parsenoop2 }, + /*::[*/0x0191/*::]*/: { /* n:"CUsr", */ }, + /*::[*/0x0192/*::]*/: { /* n:"CbUsr", */ }, + /*::[*/0x0193/*::]*/: { /* n:"UsrInfo", */ }, + /*::[*/0x0194/*::]*/: { /* n:"UsrExcl", */ }, + /*::[*/0x0195/*::]*/: { /* n:"FileLock", */ }, + /*::[*/0x0196/*::]*/: { /* n:"RRDInfo", */ }, + /*::[*/0x0197/*::]*/: { /* n:"BCUsrs", */ }, + /*::[*/0x0198/*::]*/: { /* n:"UsrChk", */ }, + /*::[*/0x01a9/*::]*/: { /* n:"UserBView", */ }, + /*::[*/0x01aa/*::]*/: { /* n:"UserSViewBegin", */ }, + /*::[*/0x01ab/*::]*/: { /* n:"UserSViewEnd", */ }, + /*::[*/0x01ac/*::]*/: { /* n:"RRDUserView", */ }, + /*::[*/0x01ad/*::]*/: { /* n:"Qsi", */ }, + /*::[*/0x01ae/*::]*/: { /* n:"SupBook", */ f:parse_SupBook }, + /*::[*/0x01af/*::]*/: { /* n:"Prot4Rev", */ f:parsebool }, + /*::[*/0x01b0/*::]*/: { /* n:"CondFmt", */ }, + /*::[*/0x01b1/*::]*/: { /* n:"CF", */ }, + /*::[*/0x01b2/*::]*/: { /* n:"DVal", */ }, + /*::[*/0x01b5/*::]*/: { /* n:"DConBin", */ }, + /*::[*/0x01b6/*::]*/: { /* n:"TxO", */ f:parse_TxO }, + /*::[*/0x01b7/*::]*/: { /* n:"RefreshAll", */ f:parsebool }, // + /*::[*/0x01b8/*::]*/: { /* n:"HLink", */ f:parse_HLink }, + /*::[*/0x01b9/*::]*/: { /* n:"Lel", */ }, + /*::[*/0x01ba/*::]*/: { /* n:"CodeName", */ f:parse_XLUnicodeString }, + /*::[*/0x01bb/*::]*/: { /* n:"SXFDBType", */ }, + /*::[*/0x01bc/*::]*/: { /* n:"Prot4RevPass", */ f:parseuint16 }, + /*::[*/0x01bd/*::]*/: { /* n:"ObNoMacros", */ }, + /*::[*/0x01be/*::]*/: { /* n:"Dv", */ }, + /*::[*/0x01c0/*::]*/: { /* n:"Excel9File", */ f:parsenoop2 }, + /*::[*/0x01c1/*::]*/: { /* n:"RecalcId", */ f:parse_RecalcId, r:2}, + /*::[*/0x01c2/*::]*/: { /* n:"EntExU2", */ f:parsenoop2 }, + /*::[*/0x0200/*::]*/: { /* n:"Dimensions", */ f:parse_Dimensions }, + /*::[*/0x0201/*::]*/: { /* n:"Blank", */ f:parse_Blank }, + /*::[*/0x0203/*::]*/: { /* n:"Number", */ f:parse_Number }, + /*::[*/0x0204/*::]*/: { /* n:"Label", */ f:parse_Label }, + /*::[*/0x0205/*::]*/: { /* n:"BoolErr", */ f:parse_BoolErr }, + /*::[*/0x0207/*::]*/: { /* n:"String", */ f:parse_String }, + /*::[*/0x0208/*::]*/: { /* n:"Row", */ f:parse_Row }, + /*::[*/0x020b/*::]*/: { /* n:"Index", */ }, + /*::[*/0x0221/*::]*/: { /* n:"Array", */ f:parse_Array }, + /*::[*/0x0225/*::]*/: { /* n:"DefaultRowHeight", */ f:parse_DefaultRowHeight }, + /*::[*/0x0236/*::]*/: { /* n:"Table", */ }, + /*::[*/0x023e/*::]*/: { /* n:"Window2", */ f:parse_Window2 }, + /*::[*/0x027e/*::]*/: { /* n:"RK", */ f:parse_RK }, + /*::[*/0x0293/*::]*/: { /* n:"Style", */ }, + /*::[*/0x0418/*::]*/: { /* n:"BigName", */ }, + /*::[*/0x041e/*::]*/: { /* n:"Format", */ f:parse_Format }, + /*::[*/0x043c/*::]*/: { /* n:"ContinueBigName", */ }, + /*::[*/0x04bc/*::]*/: { /* n:"ShrFmla", */ f:parse_ShrFmla }, + /*::[*/0x0800/*::]*/: { /* n:"HLinkTooltip", */ f:parse_HLinkTooltip }, + /*::[*/0x0801/*::]*/: { /* n:"WebPub", */ }, + /*::[*/0x0802/*::]*/: { /* n:"QsiSXTag", */ }, + /*::[*/0x0803/*::]*/: { /* n:"DBQueryExt", */ }, + /*::[*/0x0804/*::]*/: { /* n:"ExtString", */ }, + /*::[*/0x0805/*::]*/: { /* n:"TxtQry", */ }, + /*::[*/0x0806/*::]*/: { /* n:"Qsir", */ }, + /*::[*/0x0807/*::]*/: { /* n:"Qsif", */ }, + /*::[*/0x0808/*::]*/: { /* n:"RRDTQSIF", */ }, + /*::[*/0x0809/*::]*/: { /* n:"BOF", */ f:parse_BOF }, + /*::[*/0x080a/*::]*/: { /* n:"OleDbConn", */ }, + /*::[*/0x080b/*::]*/: { /* n:"WOpt", */ }, + /*::[*/0x080c/*::]*/: { /* n:"SXViewEx", */ }, + /*::[*/0x080d/*::]*/: { /* n:"SXTH", */ }, + /*::[*/0x080e/*::]*/: { /* n:"SXPIEx", */ }, + /*::[*/0x080f/*::]*/: { /* n:"SXVDTEx", */ }, + /*::[*/0x0810/*::]*/: { /* n:"SXViewEx9", */ }, + /*::[*/0x0812/*::]*/: { /* n:"ContinueFrt", */ }, + /*::[*/0x0813/*::]*/: { /* n:"RealTimeData", */ }, + /*::[*/0x0850/*::]*/: { /* n:"ChartFrtInfo", */ }, + /*::[*/0x0851/*::]*/: { /* n:"FrtWrapper", */ }, + /*::[*/0x0852/*::]*/: { /* n:"StartBlock", */ }, + /*::[*/0x0853/*::]*/: { /* n:"EndBlock", */ }, + /*::[*/0x0854/*::]*/: { /* n:"StartObject", */ }, + /*::[*/0x0855/*::]*/: { /* n:"EndObject", */ }, + /*::[*/0x0856/*::]*/: { /* n:"CatLab", */ }, + /*::[*/0x0857/*::]*/: { /* n:"YMult", */ }, + /*::[*/0x0858/*::]*/: { /* n:"SXViewLink", */ }, + /*::[*/0x0859/*::]*/: { /* n:"PivotChartBits", */ }, + /*::[*/0x085a/*::]*/: { /* n:"FrtFontList", */ }, + /*::[*/0x0862/*::]*/: { /* n:"SheetExt", */ }, + /*::[*/0x0863/*::]*/: { /* n:"BookExt", */ r:12}, + /*::[*/0x0864/*::]*/: { /* n:"SXAddl", */ }, + /*::[*/0x0865/*::]*/: { /* n:"CrErr", */ }, + /*::[*/0x0866/*::]*/: { /* n:"HFPicture", */ }, + /*::[*/0x0867/*::]*/: { /* n:"FeatHdr", */ f:parsenoop2 }, + /*::[*/0x0868/*::]*/: { /* n:"Feat", */ }, + /*::[*/0x086a/*::]*/: { /* n:"DataLabExt", */ }, + /*::[*/0x086b/*::]*/: { /* n:"DataLabExtContents", */ }, + /*::[*/0x086c/*::]*/: { /* n:"CellWatch", */ }, + /*::[*/0x0871/*::]*/: { /* n:"FeatHdr11", */ }, + /*::[*/0x0872/*::]*/: { /* n:"Feature11", */ }, + /*::[*/0x0874/*::]*/: { /* n:"DropDownObjIds", */ }, + /*::[*/0x0875/*::]*/: { /* n:"ContinueFrt11", */ }, + /*::[*/0x0876/*::]*/: { /* n:"DConn", */ }, + /*::[*/0x0877/*::]*/: { /* n:"List12", */ }, + /*::[*/0x0878/*::]*/: { /* n:"Feature12", */ }, + /*::[*/0x0879/*::]*/: { /* n:"CondFmt12", */ }, + /*::[*/0x087a/*::]*/: { /* n:"CF12", */ }, + /*::[*/0x087b/*::]*/: { /* n:"CFEx", */ }, + /*::[*/0x087c/*::]*/: { /* n:"XFCRC", */ f:parse_XFCRC, r:12 }, + /*::[*/0x087d/*::]*/: { /* n:"XFExt", */ f:parse_XFExt, r:12 }, + /*::[*/0x087e/*::]*/: { /* n:"AutoFilter12", */ }, + /*::[*/0x087f/*::]*/: { /* n:"ContinueFrt12", */ }, + /*::[*/0x0884/*::]*/: { /* n:"MDTInfo", */ }, + /*::[*/0x0885/*::]*/: { /* n:"MDXStr", */ }, + /*::[*/0x0886/*::]*/: { /* n:"MDXTuple", */ }, + /*::[*/0x0887/*::]*/: { /* n:"MDXSet", */ }, + /*::[*/0x0888/*::]*/: { /* n:"MDXProp", */ }, + /*::[*/0x0889/*::]*/: { /* n:"MDXKPI", */ }, + /*::[*/0x088a/*::]*/: { /* n:"MDB", */ }, + /*::[*/0x088b/*::]*/: { /* n:"PLV", */ }, + /*::[*/0x088c/*::]*/: { /* n:"Compat12", */ f:parsebool, r:12 }, + /*::[*/0x088d/*::]*/: { /* n:"DXF", */ }, + /*::[*/0x088e/*::]*/: { /* n:"TableStyles", */ r:12 }, + /*::[*/0x088f/*::]*/: { /* n:"TableStyle", */ }, + /*::[*/0x0890/*::]*/: { /* n:"TableStyleElement", */ }, + /*::[*/0x0892/*::]*/: { /* n:"StyleExt", */ }, + /*::[*/0x0893/*::]*/: { /* n:"NamePublish", */ }, + /*::[*/0x0894/*::]*/: { /* n:"NameCmt", */ f:parse_NameCmt, r:12 }, + /*::[*/0x0895/*::]*/: { /* n:"SortData", */ }, + /*::[*/0x0896/*::]*/: { /* n:"Theme", */ f:parse_Theme, r:12 }, + /*::[*/0x0897/*::]*/: { /* n:"GUIDTypeLib", */ }, + /*::[*/0x0898/*::]*/: { /* n:"FnGrp12", */ }, + /*::[*/0x0899/*::]*/: { /* n:"NameFnGrp12", */ }, + /*::[*/0x089a/*::]*/: { /* n:"MTRSettings", */ f:parse_MTRSettings, r:12 }, + /*::[*/0x089b/*::]*/: { /* n:"CompressPictures", */ f:parsenoop2 }, + /*::[*/0x089c/*::]*/: { /* n:"HeaderFooter", */ }, + /*::[*/0x089d/*::]*/: { /* n:"CrtLayout12", */ }, + /*::[*/0x089e/*::]*/: { /* n:"CrtMlFrt", */ }, + /*::[*/0x089f/*::]*/: { /* n:"CrtMlFrtContinue", */ }, + /*::[*/0x08a3/*::]*/: { /* n:"ForceFullCalculation", */ f:parse_ForceFullCalculation }, + /*::[*/0x08a4/*::]*/: { /* n:"ShapePropsStream", */ }, + /*::[*/0x08a5/*::]*/: { /* n:"TextPropsStream", */ }, + /*::[*/0x08a6/*::]*/: { /* n:"RichTextStream", */ }, + /*::[*/0x08a7/*::]*/: { /* n:"CrtLayout12A", */ }, + /*::[*/0x1001/*::]*/: { /* n:"Units", */ }, + /*::[*/0x1002/*::]*/: { /* n:"Chart", */ }, + /*::[*/0x1003/*::]*/: { /* n:"Series", */ }, + /*::[*/0x1006/*::]*/: { /* n:"DataFormat", */ }, + /*::[*/0x1007/*::]*/: { /* n:"LineFormat", */ }, + /*::[*/0x1009/*::]*/: { /* n:"MarkerFormat", */ }, + /*::[*/0x100a/*::]*/: { /* n:"AreaFormat", */ }, + /*::[*/0x100b/*::]*/: { /* n:"PieFormat", */ }, + /*::[*/0x100c/*::]*/: { /* n:"AttachedLabel", */ }, + /*::[*/0x100d/*::]*/: { /* n:"SeriesText", */ }, + /*::[*/0x1014/*::]*/: { /* n:"ChartFormat", */ }, + /*::[*/0x1015/*::]*/: { /* n:"Legend", */ }, + /*::[*/0x1016/*::]*/: { /* n:"SeriesList", */ }, + /*::[*/0x1017/*::]*/: { /* n:"Bar", */ }, + /*::[*/0x1018/*::]*/: { /* n:"Line", */ }, + /*::[*/0x1019/*::]*/: { /* n:"Pie", */ }, + /*::[*/0x101a/*::]*/: { /* n:"Area", */ }, + /*::[*/0x101b/*::]*/: { /* n:"Scatter", */ }, + /*::[*/0x101c/*::]*/: { /* n:"CrtLine", */ }, + /*::[*/0x101d/*::]*/: { /* n:"Axis", */ }, + /*::[*/0x101e/*::]*/: { /* n:"Tick", */ }, + /*::[*/0x101f/*::]*/: { /* n:"ValueRange", */ }, + /*::[*/0x1020/*::]*/: { /* n:"CatSerRange", */ }, + /*::[*/0x1021/*::]*/: { /* n:"AxisLine", */ }, + /*::[*/0x1022/*::]*/: { /* n:"CrtLink", */ }, + /*::[*/0x1024/*::]*/: { /* n:"DefaultText", */ }, + /*::[*/0x1025/*::]*/: { /* n:"Text", */ }, + /*::[*/0x1026/*::]*/: { /* n:"FontX", */ f:parseuint16 }, + /*::[*/0x1027/*::]*/: { /* n:"ObjectLink", */ }, + /*::[*/0x1032/*::]*/: { /* n:"Frame", */ }, + /*::[*/0x1033/*::]*/: { /* n:"Begin", */ }, + /*::[*/0x1034/*::]*/: { /* n:"End", */ }, + /*::[*/0x1035/*::]*/: { /* n:"PlotArea", */ }, + /*::[*/0x103a/*::]*/: { /* n:"Chart3d", */ }, + /*::[*/0x103c/*::]*/: { /* n:"PicF", */ }, + /*::[*/0x103d/*::]*/: { /* n:"DropBar", */ }, + /*::[*/0x103e/*::]*/: { /* n:"Radar", */ }, + /*::[*/0x103f/*::]*/: { /* n:"Surf", */ }, + /*::[*/0x1040/*::]*/: { /* n:"RadarArea", */ }, + /*::[*/0x1041/*::]*/: { /* n:"AxisParent", */ }, + /*::[*/0x1043/*::]*/: { /* n:"LegendException", */ }, + /*::[*/0x1044/*::]*/: { /* n:"ShtProps", */ f:parse_ShtProps }, + /*::[*/0x1045/*::]*/: { /* n:"SerToCrt", */ }, + /*::[*/0x1046/*::]*/: { /* n:"AxesUsed", */ }, + /*::[*/0x1048/*::]*/: { /* n:"SBaseRef", */ }, + /*::[*/0x104a/*::]*/: { /* n:"SerParent", */ }, + /*::[*/0x104b/*::]*/: { /* n:"SerAuxTrend", */ }, + /*::[*/0x104e/*::]*/: { /* n:"IFmtRecord", */ }, + /*::[*/0x104f/*::]*/: { /* n:"Pos", */ }, + /*::[*/0x1050/*::]*/: { /* n:"AlRuns", */ }, + /*::[*/0x1051/*::]*/: { /* n:"BRAI", */ }, + /*::[*/0x105b/*::]*/: { /* n:"SerAuxErrBar", */ }, + /*::[*/0x105c/*::]*/: { /* n:"ClrtClient", */ f:parse_ClrtClient }, + /*::[*/0x105d/*::]*/: { /* n:"SerFmt", */ }, + /*::[*/0x105f/*::]*/: { /* n:"Chart3DBarShape", */ }, + /*::[*/0x1060/*::]*/: { /* n:"Fbi", */ }, + /*::[*/0x1061/*::]*/: { /* n:"BopPop", */ }, + /*::[*/0x1062/*::]*/: { /* n:"AxcExt", */ }, + /*::[*/0x1063/*::]*/: { /* n:"Dat", */ }, + /*::[*/0x1064/*::]*/: { /* n:"PlotGrowth", */ }, + /*::[*/0x1065/*::]*/: { /* n:"SIIndex", */ }, + /*::[*/0x1066/*::]*/: { /* n:"GelFrame", */ }, + /*::[*/0x1067/*::]*/: { /* n:"BopPopCustom", */ }, + /*::[*/0x1068/*::]*/: { /* n:"Fbi2", */ }, + + /*::[*/0x0000/*::]*/: { /* n:"Dimensions", */ f:parse_Dimensions }, + /*::[*/0x0001/*::]*/: { /* n:"BIFF2BLANK", */ }, + /*::[*/0x0002/*::]*/: { /* n:"BIFF2INT", */ f:parse_BIFF2INT }, + /*::[*/0x0003/*::]*/: { /* n:"BIFF2NUM", */ f:parse_BIFF2NUM }, + /*::[*/0x0004/*::]*/: { /* n:"BIFF2STR", */ f:parse_BIFF2STR }, + /*::[*/0x0005/*::]*/: { /* n:"BoolErr", */ f:parse_BoolErr }, + /*::[*/0x0007/*::]*/: { /* n:"String", */ f:parse_BIFF2STRING }, + /*::[*/0x0008/*::]*/: { /* n:"BIFF2ROW", */ }, + /*::[*/0x0009/*::]*/: { /* n:"BOF", */ f:parse_BOF }, + /*::[*/0x000b/*::]*/: { /* n:"Index", */ }, + /*::[*/0x0016/*::]*/: { /* n:"ExternCount", */ f:parseuint16 }, + /*::[*/0x001e/*::]*/: { /* n:"BIFF2FORMAT", */ f:parse_BIFF2Format }, + /*::[*/0x001f/*::]*/: { /* n:"BIFF2FMTCNT", */ }, /* 16-bit cnt of BIFF2FORMAT records */ + /*::[*/0x0020/*::]*/: { /* n:"BIFF2COLINFO", */ }, + /*::[*/0x0021/*::]*/: { /* n:"Array", */ f:parse_Array }, + /*::[*/0x0024/*::]*/: { /* n:"COLWIDTH", */ }, + /*::[*/0x0025/*::]*/: { /* n:"DefaultRowHeight", */ f:parse_DefaultRowHeight }, + // 0x2c ?? + // 0x2d ?? + // 0x2e ?? + // 0x30 FONTCOUNT: number of fonts + /*::[*/0x0032/*::]*/: { /* n:"BIFF2FONTXTRA", */ f:parse_BIFF2FONTXTRA }, + // 0x35: INFOOPTS + // 0x36: TABLE (BIFF2 only) + // 0x37: TABLE2 (BIFF2 only) + // 0x38: WNDESK + // 0x39 ?? + // 0x3a: BEGINPREF + // 0x3b: ENDPREF + /*::[*/0x003e/*::]*/: { /* n:"BIFF2WINDOW2", */ }, + // 0x3f ?? + // 0x46: SHOWSCROLL + // 0x47: SHOWFORMULA + // 0x48: STATUSBAR + // 0x49: SHORTMENUS + // 0x4A: + // 0x4B: + // 0x4C: + // 0x4E: + // 0x4F: + // 0x58: TOOLBAR (BIFF3) + + /* - - - */ + /*::[*/0x0034/*::]*/: { /* n:"DDEObjName", */ }, + /*::[*/0x0043/*::]*/: { /* n:"BIFF2XF", */ }, + /*::[*/0x0044/*::]*/: { /* n:"BIFF2XFINDEX", */ f:parseuint16 }, + /*::[*/0x0045/*::]*/: { /* n:"BIFF2FONTCLR", */ }, + /*::[*/0x0056/*::]*/: { /* n:"BIFF4FMTCNT", */ }, /* 16-bit cnt, similar to BIFF2 */ + /*::[*/0x007e/*::]*/: { /* n:"RK", */ }, /* Not necessarily same as 0x027e */ + /*::[*/0x007f/*::]*/: { /* n:"ImData", */ f:parse_ImData }, + /*::[*/0x0087/*::]*/: { /* n:"Addin", */ }, + /*::[*/0x0088/*::]*/: { /* n:"Edg", */ }, + /*::[*/0x0089/*::]*/: { /* n:"Pub", */ }, + // 0x8A + // 0x8B LH: alternate menu key flag (BIFF3/4) + // 0x8E + // 0x8F + /*::[*/0x0091/*::]*/: { /* n:"Sub", */ }, + // 0x93 STYLE + /*::[*/0x0094/*::]*/: { /* n:"LHRecord", */ }, + /*::[*/0x0095/*::]*/: { /* n:"LHNGraph", */ }, + /*::[*/0x0096/*::]*/: { /* n:"Sound", */ }, + // 0xA2 FNPROTO: function prototypes (BIFF4) + // 0xA3 + // 0xA8 + /*::[*/0x00a9/*::]*/: { /* n:"CoordList", */ }, + /*::[*/0x00ab/*::]*/: { /* n:"GCW", */ }, + /*::[*/0x00bc/*::]*/: { /* n:"ShrFmla", */ }, /* Not necessarily same as 0x04bc */ + /*::[*/0x00bf/*::]*/: { /* n:"ToolbarHdr", */ }, + /*::[*/0x00c0/*::]*/: { /* n:"ToolbarEnd", */ }, + /*::[*/0x00c2/*::]*/: { /* n:"AddMenu", */ }, + /*::[*/0x00c3/*::]*/: { /* n:"DelMenu", */ }, + /*::[*/0x00d6/*::]*/: { /* n:"RString", */ f:parse_RString }, + /*::[*/0x00df/*::]*/: { /* n:"UDDesc", */ }, + /*::[*/0x00ea/*::]*/: { /* n:"TabIdConf", */ }, + /*::[*/0x0162/*::]*/: { /* n:"XL5Modify", */ }, + /*::[*/0x01a5/*::]*/: { /* n:"FileSharing2", */ }, + /*::[*/0x0206/*::]*/: { /* n:"Formula", */ f:parse_Formula }, + /*::[*/0x0209/*::]*/: { /* n:"BOF", */ f:parse_BOF }, + /*::[*/0x0218/*::]*/: { /* n:"Lbl", */ f:parse_Lbl }, + /*::[*/0x0223/*::]*/: { /* n:"ExternName", */ f:parse_ExternName }, + /*::[*/0x0231/*::]*/: { /* n:"Font", */ }, + /*::[*/0x0243/*::]*/: { /* n:"BIFF3XF", */ }, + /*::[*/0x0406/*::]*/: { /* n:"Formula", */ f:parse_Formula }, + /*::[*/0x0409/*::]*/: { /* n:"BOF", */ f:parse_BOF }, + /*::[*/0x0443/*::]*/: { /* n:"BIFF4XF", */ }, + /*::[*/0x086d/*::]*/: { /* n:"FeatInfo", */ }, + /*::[*/0x0873/*::]*/: { /* n:"FeatInfo11", */ }, + /*::[*/0x0881/*::]*/: { /* n:"SXAddl12", */ }, + /*::[*/0x08c0/*::]*/: { /* n:"AutoWebPub", */ }, + /*::[*/0x08c1/*::]*/: { /* n:"ListObj", */ }, + /*::[*/0x08c2/*::]*/: { /* n:"ListField", */ }, + /*::[*/0x08c3/*::]*/: { /* n:"ListDV", */ }, + /*::[*/0x08c4/*::]*/: { /* n:"ListCondFmt", */ }, + /*::[*/0x08c5/*::]*/: { /* n:"ListCF", */ }, + /*::[*/0x08c6/*::]*/: { /* n:"FMQry", */ }, + /*::[*/0x08c7/*::]*/: { /* n:"FMSQry", */ }, + /*::[*/0x08c8/*::]*/: { /* n:"PLV", */ }, + /*::[*/0x08c9/*::]*/: { /* n:"LnExt", */ }, + /*::[*/0x08ca/*::]*/: { /* n:"MkrExt", */ }, + /*::[*/0x08cb/*::]*/: { /* n:"CrtCoopt", */ }, + /*::[*/0x08d6/*::]*/: { /* n:"FRTArchId$", */ r:12 }, + + /*::[*/0x7262/*::]*/: {} +}; + +function write_biff_rec(ba/*:BufArray*/, type/*:number*/, payload, length/*:?number*/)/*:void*/ { + var t/*:number*/ = type; + if(isNaN(t)) return; + var len = length || (payload||[]).length || 0; + var o = ba.next(4); + o.write_shift(2, t); + o.write_shift(2, len); + if(/*:: len != null &&*/len > 0 && is_buf(payload)) ba.push(payload); +} + +function write_biff_continue(ba/*:BufArray*/, type/*:number*/, payload, length/*:?number*/)/*:void*/ { + var len = length || (payload||[]).length || 0; + if(len <= 8224) return write_biff_rec(ba, type, payload, len); + var t = type; + if(isNaN(t)) return; + var parts = payload.parts || [], sidx = 0; + var i = 0, w = 0; + while(w + (parts[sidx] || 8224) <= 8224) { w+= (parts[sidx] || 8224); sidx++; } + var o = ba.next(4); + o.write_shift(2, t); + o.write_shift(2, w); + ba.push(payload.slice(i, i + w)); + i += w; + while(i < len) { + o = ba.next(4); + o.write_shift(2, 0x3c); // TODO: figure out correct continue type + w = 0; + while(w + (parts[sidx] || 8224) <= 8224) { w+= (parts[sidx] || 8224); sidx++; } + o.write_shift(2, w); + ba.push(payload.slice(i, i+w)); i+= w; + } +} + +function write_BIFF2Cell(out, r/*:number*/, c/*:number*/) { + if(!out) out = new_buf(7); + out.write_shift(2, r); + out.write_shift(2, c); + out.write_shift(2, 0); + out.write_shift(1, 0); + return out; +} + +function write_BIFF2BERR(r/*:number*/, c/*:number*/, val, t/*:?string*/) { + var out = new_buf(9); + write_BIFF2Cell(out, r, c); + write_Bes(val, t || 'b', out); + return out; +} + +/* TODO: codepage, large strings */ +function write_BIFF2LABEL(r/*:number*/, c/*:number*/, val) { + var out = new_buf(8 + 2*val.length); + write_BIFF2Cell(out, r, c); + out.write_shift(1, val.length); + out.write_shift(val.length, val, 'sbcs'); + return out.l < out.length ? out.slice(0, out.l) : out; +} + +function write_ws_biff2_cell(ba/*:BufArray*/, cell/*:Cell*/, R/*:number*/, C/*:number*//*::, opts*/) { + if(cell.v != null) switch(cell.t) { + case 'd': case 'n': + var v = cell.t == 'd' ? datenum(parseDate(cell.v)) : cell.v; + if((v == (v|0)) && (v >= 0) && (v < 65536)) + write_biff_rec(ba, 0x0002, write_BIFF2INT(R, C, v)); + else + write_biff_rec(ba, 0x0003, write_BIFF2NUM(R,C, v)); + return; + case 'b': case 'e': write_biff_rec(ba, 0x0005, write_BIFF2BERR(R, C, cell.v, cell.t)); return; + /* TODO: codepage, sst */ + case 's': case 'str': + write_biff_rec(ba, 0x0004, write_BIFF2LABEL(R, C, (cell.v||"").slice(0,255))); + return; + } + write_biff_rec(ba, 0x0001, write_BIFF2Cell(null, R, C)); +} + +function write_ws_biff2(ba/*:BufArray*/, ws/*:Worksheet*/, idx/*:number*/, opts/*::, wb:Workbook*/) { + var dense = Array.isArray(ws); + var range = safe_decode_range(ws['!ref'] || "A1"), ref/*:string*/, rr = "", cols/*:Array*/ = []; + if(range.e.c > 0xFF || range.e.r > 0x3FFF) { + if(opts.WTF) throw new Error("Range " + (ws['!ref'] || "A1") + " exceeds format limit A1:IV16384"); + range.e.c = Math.min(range.e.c, 0xFF); + range.e.r = Math.min(range.e.c, 0x3FFF); + ref = encode_range(range); + } + for(var R = range.s.r; R <= range.e.r; ++R) { + rr = encode_row(R); + for(var C = range.s.c; C <= range.e.c; ++C) { + if(R === range.s.r) cols[C] = encode_col(C); + ref = cols[C] + rr; + var cell = dense ? (ws[R]||[])[C] : ws[ref]; + if(!cell) continue; + /* write cell */ + write_ws_biff2_cell(ba, cell, R, C, opts); + } + } +} + +/* Based on test files */ +function write_biff2_buf(wb/*:Workbook*/, opts/*:WriteOpts*/) { + var o = opts || {}; + if(DENSE != null && o.dense == null) o.dense = DENSE; + var ba = buf_array(); + var idx = 0; + for(var i=0;i*/ = []; + var range = safe_decode_range(ws['!ref'] || "A1"); + var MAX_ROWS = b8 ? 65536 : 16384; + if(range.e.c > 0xFF || range.e.r >= MAX_ROWS) { + if(opts.WTF) throw new Error("Range " + (ws['!ref'] || "A1") + " exceeds format limit A1:IV16384"); + range.e.c = Math.min(range.e.c, 0xFF); + range.e.r = Math.min(range.e.c, MAX_ROWS-1); + } + + write_biff_rec(ba, 0x0809, write_BOF(wb, 0x10, opts)); + /* [Uncalced] Index */ + write_biff_rec(ba, 0x000d /* CalcMode */, writeuint16(1)); + write_biff_rec(ba, 0x000c /* CalcCount */, writeuint16(100)); + write_biff_rec(ba, 0x000f /* CalcRefMode */, writebool(true)); + write_biff_rec(ba, 0x0011 /* CalcIter */, writebool(false)); + write_biff_rec(ba, 0x0010 /* CalcDelta */, write_Xnum(0.001)); + write_biff_rec(ba, 0x005f /* CalcSaveRecalc */, writebool(true)); + write_biff_rec(ba, 0x002a /* PrintRowCol */, writebool(false)); + write_biff_rec(ba, 0x002b /* PrintGrid */, writebool(false)); + write_biff_rec(ba, 0x0082 /* GridSet */, writeuint16(1)); + write_biff_rec(ba, 0x0080 /* Guts */, write_Guts([0,0])); + /* DefaultRowHeight WsBool [Sync] [LPr] [HorizontalPageBreaks] [VerticalPageBreaks] */ + /* Header (string) */ + /* Footer (string) */ + write_biff_rec(ba, 0x0083 /* HCenter */, writebool(false)); + write_biff_rec(ba, 0x0084 /* VCenter */, writebool(false)); + /* ... */ + if(b8) write_ws_cols_biff8(ba, ws["!cols"]); + /* ... */ + write_biff_rec(ba, 0x200, write_Dimensions(range, opts)); + /* ... */ + + if(b8) ws['!links'] = []; + for(var R = range.s.r; R <= range.e.r; ++R) { + rr = encode_row(R); + for(var C = range.s.c; C <= range.e.c; ++C) { + if(R === range.s.r) cols[C] = encode_col(C); + ref = cols[C] + rr; + var cell = dense ? (ws[R]||[])[C] : ws[ref]; + if(!cell) continue; + /* write cell */ + write_ws_biff8_cell(ba, cell, R, C, opts); + if(b8 && cell.l) ws['!links'].push([ref, cell.l]); + } + } + var cname/*:string*/ = _sheet.CodeName || _sheet.name || s; + /* ... */ + if(b8) write_biff_rec(ba, 0x023e /* Window2 */, write_Window2((_WB.Views||[])[0])); + /* ... */ + if(b8 && (ws['!merges']||[]).length) write_biff_rec(ba, 0x00e5 /* MergeCells */, write_MergeCells(ws['!merges'])); + /* [LRng] *QUERYTABLE [PHONETICINFO] CONDFMTS */ + if(b8) write_ws_biff8_hlinks(ba, ws); + /* [DVAL] */ + write_biff_rec(ba, 0x01ba /* CodeName */, write_XLUnicodeString(cname, opts)); + /* *WebPub *CellWatch [SheetExt] */ + if(b8) write_FEAT(ba, ws); + /* *FEAT11 *RECORD12 */ + write_biff_rec(ba, 0x000a /* EOF */); + return ba.end(); +} + +/* [MS-XLS] 2.1.7.20.3 */ +function write_biff8_global(wb/*:Workbook*/, bufs, opts/*:WriteOpts*/) { + var A = buf_array(); + var _WB/*:WBWBProps*/ = ((wb||{}).Workbook||{}/*:any*/); + var _sheets/*:Array*/ = (_WB.Sheets||[]); + var _wb/*:WBProps*/ = /*::((*/_WB.WBProps||{/*::CodeName:"ThisWorkbook"*/}/*:: ):any)*/; + var b8 = opts.biff == 8, b5 = opts.biff == 5; + write_biff_rec(A, 0x0809, write_BOF(wb, 0x05, opts)); + if(opts.bookType == "xla") write_biff_rec(A, 0x0087 /* Addin */); + write_biff_rec(A, 0x00e1 /* InterfaceHdr */, b8 ? writeuint16(0x04b0) : null); + write_biff_rec(A, 0x00c1 /* Mms */, writezeroes(2)); + if(b5) write_biff_rec(A, 0x00bf /* ToolbarHdr */); + if(b5) write_biff_rec(A, 0x00c0 /* ToolbarEnd */); + write_biff_rec(A, 0x00e2 /* InterfaceEnd */); + write_biff_rec(A, 0x005c /* WriteAccess */, write_WriteAccess("SheetJS", opts)); + /* [FileSharing] */ + write_biff_rec(A, 0x0042 /* CodePage */, writeuint16(b8 ? 0x04b0 : 0x04E4)); + /* *2047 Lel */ + if(b8) write_biff_rec(A, 0x0161 /* DSF */, writeuint16(0)); + if(b8) write_biff_rec(A, 0x01c0 /* Excel9File */); + write_biff_rec(A, 0x013d /* RRTabId */, write_RRTabId(wb.SheetNames.length)); + if(b8 && wb.vbaraw) write_biff_rec(A, 0x00d3 /* ObProj */); + /* [ObNoMacros] */ + if(b8 && wb.vbaraw) { + var cname/*:string*/ = _wb.CodeName || "ThisWorkbook"; + write_biff_rec(A, 0x01ba /* CodeName */, write_XLUnicodeString(cname, opts)); + } + write_biff_rec(A, 0x009c /* BuiltInFnGroupCount */, writeuint16(0x11)); + /* *FnGroupName *FnGrp12 */ + /* *Lbl */ + /* [OleObjectSize] */ + write_biff_rec(A, 0x0019 /* WinProtect */, writebool(false)); + write_biff_rec(A, 0x0012 /* Protect */, writebool(false)); + write_biff_rec(A, 0x0013 /* Password */, writeuint16(0)); + if(b8) write_biff_rec(A, 0x01af /* Prot4Rev */, writebool(false)); + if(b8) write_biff_rec(A, 0x01bc /* Prot4RevPass */, writeuint16(0)); + write_biff_rec(A, 0x003d /* Window1 */, write_Window1(opts)); + write_biff_rec(A, 0x0040 /* Backup */, writebool(false)); + write_biff_rec(A, 0x008d /* HideObj */, writeuint16(0)); + write_biff_rec(A, 0x0022 /* Date1904 */, writebool(safe1904(wb)=="true")); + write_biff_rec(A, 0x000e /* CalcPrecision */, writebool(true)); + if(b8) write_biff_rec(A, 0x01b7 /* RefreshAll */, writebool(false)); + write_biff_rec(A, 0x00DA /* BookBool */, writeuint16(0)); + /* ... */ + write_FONTS_biff8(A, wb, opts); + write_FMTS_biff8(A, wb.SSF, opts); + write_CELLXFS_biff8(A, opts); + /* ... */ + if(b8) write_biff_rec(A, 0x0160 /* UsesELFs */, writebool(false)); + var a = A.end(); + + var C = buf_array(); + /* METADATA [MTRSettings] [ForceFullCalculation] */ + if(b8) write_biff_rec(C, 0x008C, write_Country()); + /* *SUPBOOK *LBL *RTD [RecalcId] *HFPicture *MSODRAWINGGROUP */ + + /* BIFF8: [SST *Continue] ExtSST */ + if(b8 && opts.Strings) write_biff_continue(C, 0x00FC, write_SST(opts.Strings, opts)); + + /* *WebPub [WOpt] [CrErr] [BookExt] *FeatHdr *DConn [THEME] [CompressPictures] [Compat12] [GUIDTypeLib] */ + write_biff_rec(C, 0x000A /* EOF */); + var c = C.end(); + + var B = buf_array(); + var blen = 0, j = 0; + for(j = 0; j < wb.SheetNames.length; ++j) blen += (b8 ? 12 : 11) + (b8 ? 2 : 1) * wb.SheetNames[j].length; + var start = a.length + blen + c.length; + for(j = 0; j < wb.SheetNames.length; ++j) { + var _sheet/*:WBWSProp*/ = _sheets[j] || ({}/*:any*/); + write_biff_rec(B, 0x0085 /* BoundSheet8 */, write_BoundSheet8({pos:start, hs:_sheet.Hidden||0, dt:0, name:wb.SheetNames[j]}, opts)); + start += bufs[j].length; + } + /* 1*BoundSheet8 */ + var b = B.end(); + if(blen != b.length) throw new Error("BS8 " + blen + " != " + b.length); + + var out = []; + if(a.length) out.push(a); + if(b.length) out.push(b); + if(c.length) out.push(c); + return bconcat(out); +} + +/* [MS-XLS] 2.1.7.20 Workbook Stream */ +function write_biff8_buf(wb/*:Workbook*/, opts/*:WriteOpts*/) { + var o = opts || {}; + var bufs = []; + + if(wb && !wb.SSF) { + wb.SSF = dup(table_fmt); + } + if(wb && wb.SSF) { + make_ssf(); SSF_load_table(wb.SSF); + // $FlowIgnore + o.revssf = evert_num(wb.SSF); o.revssf[wb.SSF[65535]] = 0; + o.ssf = wb.SSF; + } + + o.Strings = /*::((*/[]/*:: :any):SST)*/; o.Strings.Count = 0; o.Strings.Unique = 0; + fix_write_opts(o); + + o.cellXfs = []; + get_cell_style(o.cellXfs, {}, {revssf:{"General":0}}); + + if(!wb.Props) wb.Props = {}; + + for(var i = 0; i < wb.SheetNames.length; ++i) bufs[bufs.length] = write_ws_biff8(i, o, wb); + bufs.unshift(write_biff8_global(wb, bufs, o)); + return bconcat(bufs); +} + +function write_biff_buf(wb/*:Workbook*/, opts/*:WriteOpts*/) { + for(var i = 0; i <= wb.SheetNames.length; ++i) { + var ws = wb.Sheets[wb.SheetNames[i]]; + if(!ws || !ws["!ref"]) continue; + var range = decode_range(ws["!ref"]); + if(range.e.c > 255) { // note: 255 is IV + if(typeof console != "undefined" && console.error) console.error("Worksheet '" + wb.SheetNames[i] + "' extends beyond column IV (255). Data may be lost."); + } + } + + var o = opts || {}; + switch(o.biff || 2) { + case 8: case 5: return write_biff8_buf(wb, opts); + case 4: case 3: case 2: return write_biff2_buf(wb, opts); + } + throw new Error("invalid type " + o.bookType + " for BIFF"); +} +/* note: browser DOM element cannot see mso- style attrs, must parse */ +function html_to_sheet(str/*:string*/, _opts)/*:Workbook*/ { + var opts = _opts || {}; + if(DENSE != null && opts.dense == null) opts.dense = DENSE; + var ws/*:Worksheet*/ = opts.dense ? ([]/*:any*/) : ({}/*:any*/); + str = str.replace(//g, ""); + var mtch/*:any*/ = str.match(/"); + var mtch2/*:any*/ = str.match(/<\/table/i); + var i/*:number*/ = mtch.index, j/*:number*/ = mtch2 && mtch2.index || str.length; + var rows = split_regex(str.slice(i, j), /(:?]*>)/i, ""); + var R = -1, C = 0, RS = 0, CS = 0; + var range/*:Range*/ = {s:{r:10000000, c:10000000},e:{r:0,c:0}}; + var merges/*:Array*/ = []; + for(i = 0; i < rows.length; ++i) { + var row = rows[i].trim(); + var hd = row.slice(0,3).toLowerCase(); + if(hd == "/i); + for(j = 0; j < cells.length; ++j) { + var cell = cells[j].trim(); + if(!cell.match(/")) > -1) m = m.slice(cc+1); + for(var midx = 0; midx < merges.length; ++midx) { + var _merge/*:Range*/ = merges[midx]; + if(_merge.s.c == C && _merge.s.r < R && R <= _merge.e.r) { C = _merge.e.c + 1; midx = -1; } + } + var tag = parsexmltag(cell.slice(0, cell.indexOf(">"))); + CS = tag.colspan ? +tag.colspan : 1; + if((RS = +tag.rowspan)>1 || CS>1) merges.push({s:{r:R,c:C},e:{r:R + (RS||1) - 1, c:C + CS - 1}}); + var _t/*:string*/ = tag.t || tag["data-t"] || ""; + /* TODO: generate stub cells */ + if(!m.length) { C += CS; continue; } + m = htmldecode(m); + if(range.s.r > R) range.s.r = R; if(range.e.r < R) range.e.r = R; + if(range.s.c > C) range.s.c = C; if(range.e.c < C) range.e.c = C; + if(!m.length) { C += CS; continue; } + var o/*:Cell*/ = {t:'s', v:m}; + if(opts.raw || !m.trim().length || _t == 's'){} + else if(m === 'TRUE') o = {t:'b', v:true}; + else if(m === 'FALSE') o = {t:'b', v:false}; + else if(!isNaN(fuzzynum(m))) o = {t:'n', v:fuzzynum(m)}; + else if(!isNaN(fuzzydate(m).getDate())) { + o = ({t:'d', v:parseDate(m)}/*:any*/); + if(!opts.cellDates) o = ({t:'n', v:datenum(o.v)}/*:any*/); + o.z = opts.dateNF || table_fmt[14]; + } + if(opts.dense) { if(!ws[R]) ws[R] = []; ws[R][C] = o; } + else ws[encode_cell({r:R, c:C})] = o; + C += CS; + } + } + ws['!ref'] = encode_range(range); + if(merges.length) ws["!merges"] = merges; + return ws; +} +function make_html_row(ws/*:Worksheet*/, r/*:Range*/, R/*:number*/, o/*:Sheet2HTMLOpts*/)/*:string*/ { + var M/*:Array*/ = (ws['!merges'] ||[]); + var oo/*:Array*/ = []; + for(var C = r.s.c; C <= r.e.c; ++C) { + var RS = 0, CS = 0; + for(var j = 0; j < M.length; ++j) { + if(M[j].s.r > R || M[j].s.c > C) continue; + if(M[j].e.r < R || M[j].e.c < C) continue; + if(M[j].s.r < R || M[j].s.c < C) { RS = -1; break; } + RS = M[j].e.r - M[j].s.r + 1; CS = M[j].e.c - M[j].s.c + 1; break; + } + if(RS < 0) continue; + var coord = encode_cell({r:R,c:C}); + var cell = o.dense ? (ws[R]||[])[C] : ws[coord]; + /* TODO: html entities */ + var w = (cell && cell.v != null) && (cell.h || escapehtml(cell.w || (format_cell(cell), cell.w) || "")) || ""; + var sp = ({}/*:any*/); + if(RS > 1) sp.rowspan = RS; + if(CS > 1) sp.colspan = CS; + if(o.editable) w = '' + w + ''; + else if(cell) { + sp["data-t"] = cell && cell.t || 'z'; + if(cell.v != null) sp["data-v"] = cell.v; + if(cell.z != null) sp["data-z"] = cell.z; + if(cell.l && (cell.l.Target || "#").charAt(0) != "#") w = '' + w + ''; + } + sp.id = (o.id || "sjs") + "-" + coord; + oo.push(writextag('td', w, sp)); + } + var preamble = ""; + return preamble + oo.join("") + ""; +} + +var HTML_BEGIN = 'SheetJS Table Export'; +var HTML_END = ''; + +function html_to_workbook(str/*:string*/, opts)/*:Workbook*/ { + var mtch = str.match(/[\s\S]*?<\/table>/gi); + if(!mtch || mtch.length == 0) throw new Error("Invalid HTML: could not find
"); + if(mtch.length == 1) return sheet_to_workbook(html_to_sheet(mtch[0], opts), opts); + var wb = book_new(); + mtch.forEach(function(s, idx) { book_append_sheet(wb, html_to_sheet(s, opts), "Sheet" + (idx+1)); }); + return wb; +} + +function make_html_preamble(ws/*:Worksheet*/, R/*:Range*/, o/*:Sheet2HTMLOpts*/)/*:string*/ { + var out/*:Array*/ = []; + return out.join("") + ''; +} + +function sheet_to_html(ws/*:Worksheet*/, opts/*:?Sheet2HTMLOpts*//*, wb:?Workbook*/)/*:string*/ { + var o = opts || {}; + var header = o.header != null ? o.header : HTML_BEGIN; + var footer = o.footer != null ? o.footer : HTML_END; + var out/*:Array*/ = [header]; + var r = decode_range(ws['!ref']); + o.dense = Array.isArray(ws); + out.push(make_html_preamble(ws, r, o)); + for(var R = r.s.r; R <= r.e.r; ++R) out.push(make_html_row(ws, r, R, o)); + out.push("
" + footer); + return out.join(""); +} + +function sheet_add_dom(ws/*:Worksheet*/, table/*:HTMLElement*/, _opts/*:?any*/)/*:Worksheet*/ { + var opts = _opts || {}; + if(DENSE != null) opts.dense = DENSE; + var or_R = 0, or_C = 0; + if(opts.origin != null) { + if(typeof opts.origin == 'number') or_R = opts.origin; + else { + var _origin/*:CellAddress*/ = typeof opts.origin == "string" ? decode_cell(opts.origin) : opts.origin; + or_R = _origin.r; or_C = _origin.c; + } + } + + var rows/*:HTMLCollection*/ = table.getElementsByTagName('tr'); + var sheetRows = Math.min(opts.sheetRows||10000000, rows.length); + var range/*:Range*/ = {s:{r:0,c:0},e:{r:or_R,c:or_C}}; + if(ws["!ref"]) { + var _range/*:Range*/ = decode_range(ws["!ref"]); + range.s.r = Math.min(range.s.r, _range.s.r); + range.s.c = Math.min(range.s.c, _range.s.c); + range.e.r = Math.max(range.e.r, _range.e.r); + range.e.c = Math.max(range.e.c, _range.e.c); + if(or_R == -1) range.e.r = or_R = _range.e.r + 1; + } + var merges/*:Array*/ = [], midx = 0; + var rowinfo/*:Array*/ = ws["!rows"] || (ws["!rows"] = []); + var _R = 0, R = 0, _C = 0, C = 0, RS = 0, CS = 0; + if(!ws["!cols"]) ws['!cols'] = []; + for(; _R < rows.length && R < sheetRows; ++_R) { + var row/*:HTMLTableRowElement*/ = rows[_R]; + if (is_dom_element_hidden(row)) { + if (opts.display) continue; + rowinfo[R] = {hidden: true}; + } + var elts/*:HTMLCollection*/ = (row.children/*:any*/); + for(_C = C = 0; _C < elts.length; ++_C) { + var elt/*:HTMLTableCellElement*/ = elts[_C]; + if (opts.display && is_dom_element_hidden(elt)) continue; + var v/*:?string*/ = elt.hasAttribute('data-v') ? elt.getAttribute('data-v') : elt.hasAttribute('v') ? elt.getAttribute('v') : htmldecode(elt.innerHTML); + var z/*:?string*/ = elt.getAttribute('data-z') || elt.getAttribute('z'); + for(midx = 0; midx < merges.length; ++midx) { + var m/*:Range*/ = merges[midx]; + if(m.s.c == C + or_C && m.s.r < R + or_R && R + or_R <= m.e.r) { C = m.e.c+1 - or_C; midx = -1; } + } + /* TODO: figure out how to extract nonstandard mso- style */ + CS = +elt.getAttribute("colspan") || 1; + if( ((RS = (+elt.getAttribute("rowspan") || 1)))>1 || CS>1) merges.push({s:{r:R + or_R,c:C + or_C},e:{r:R + or_R + (RS||1) - 1, c:C + or_C + (CS||1) - 1}}); + var o/*:Cell*/ = {t:'s', v:v}; + var _t/*:string*/ = elt.getAttribute("data-t") || elt.getAttribute("t") || ""; + if(v != null) { + if(v.length == 0) o.t = _t || 'z'; + else if(opts.raw || v.trim().length == 0 || _t == "s"){} + else if(v === 'TRUE') o = {t:'b', v:true}; + else if(v === 'FALSE') o = {t:'b', v:false}; + else if(!isNaN(fuzzynum(v))) o = {t:'n', v:fuzzynum(v)}; + else if(!isNaN(fuzzydate(v).getDate())) { + o = ({t:'d', v:parseDate(v)}/*:any*/); + if(!opts.cellDates) o = ({t:'n', v:datenum(o.v)}/*:any*/); + o.z = opts.dateNF || table_fmt[14]; + } + } + if(o.z === undefined && z != null) o.z = z; + /* The first link is used. Links are assumed to be fully specified. + * TODO: The right way to process relative links is to make a new */ + var l = "", Aelts = elt.getElementsByTagName("A"); + if(Aelts && Aelts.length) for(var Aelti = 0; Aelti < Aelts.length; ++Aelti) if(Aelts[Aelti].hasAttribute("href")) { + l = Aelts[Aelti].getAttribute("href"); if(l.charAt(0) != "#") break; + } + if(l && l.charAt(0) != "#") o.l = ({ Target: l }); + if(opts.dense) { if(!ws[R + or_R]) ws[R + or_R] = []; ws[R + or_R][C + or_C] = o; } + else ws[encode_cell({c:C + or_C, r:R + or_R})] = o; + if(range.e.c < C + or_C) range.e.c = C + or_C; + C += CS; + } + ++R; + } + if(merges.length) ws['!merges'] = (ws["!merges"] || []).concat(merges); + range.e.r = Math.max(range.e.r, R - 1 + or_R); + ws['!ref'] = encode_range(range); + if(R >= sheetRows) ws['!fullref'] = encode_range((range.e.r = rows.length-_R+R-1 + or_R,range)); // We can count the real number of rows to parse but we don't to improve the performance + return ws; +} + +function parse_dom_table(table/*:HTMLElement*/, _opts/*:?any*/)/*:Worksheet*/ { + var opts = _opts || {}; + var ws/*:Worksheet*/ = opts.dense ? ([]/*:any*/) : ({}/*:any*/); + return sheet_add_dom(ws, table, _opts); +} + +function table_to_book(table/*:HTMLElement*/, opts/*:?any*/)/*:Workbook*/ { + return sheet_to_workbook(parse_dom_table(table, opts), opts); +} + +function is_dom_element_hidden(element/*:HTMLElement*/)/*:boolean*/ { + var display/*:string*/ = ''; + var get_computed_style/*:?function*/ = get_get_computed_style_function(element); + if(get_computed_style) display = get_computed_style(element).getPropertyValue('display'); + if(!display) display = element.style && element.style.display; + return display === 'none'; +} + +/* global getComputedStyle */ +function get_get_computed_style_function(element/*:HTMLElement*/)/*:?function*/ { + // The proper getComputedStyle implementation is the one defined in the element window + if(element.ownerDocument.defaultView && typeof element.ownerDocument.defaultView.getComputedStyle === 'function') return element.ownerDocument.defaultView.getComputedStyle; + // If it is not available, try to get one from the global namespace + if(typeof getComputedStyle === 'function') return getComputedStyle; + return null; +} +/* OpenDocument */ +function parse_text_p(text/*:string*//*::, tag*/)/*:Array*/ { + /* 6.1.2 White Space Characters */ + var fixed = text + .replace(/[\t\r\n]/g, " ").trim().replace(/ +/g, " ") + .replace(//g," ") + .replace(//g, function($$,$1) { return Array(parseInt($1,10)+1).join(" "); }) + .replace(/]*\/>/g,"\t") + .replace(//g,"\n"); + var v = unescapexml(fixed.replace(/<[^>]*>/g,"")); + + return [v]; +} + +var number_formats_ods = { + /* ods name: [short ssf fmt, long ssf fmt] */ + day: ["d", "dd"], + month: ["m", "mm"], + year: ["y", "yy"], + hours: ["h", "hh"], + minutes: ["m", "mm"], + seconds: ["s", "ss"], + "am-pm": ["A/P", "AM/PM"], + "day-of-week": ["ddd", "dddd"], + era: ["e", "ee"], + /* there is no native representation of LO "Q" format */ + quarter: ["\\Qm", "m\\\"th quarter\""] +}; + + +function parse_content_xml(d/*:string*/, _opts)/*:Workbook*/ { + var opts = _opts || {}; + if(DENSE != null && opts.dense == null) opts.dense = DENSE; + var str = xlml_normalize(d); + var state/*:Array*/ = [], tmp; + var tag/*:: = {}*/; + var NFtag = {name:""}, NF = "", pidx = 0; + var sheetag/*:: = {name:"", '名称':""}*/; + var rowtag/*:: = {'行号':""}*/; + var Sheets = {}, SheetNames/*:Array*/ = []; + var ws = opts.dense ? ([]/*:any*/) : ({}/*:any*/); + var Rn, q/*:: :any = ({t:"", v:null, z:null, w:"",c:[],}:any)*/; + var ctag = ({value:""}/*:any*/); + var textp = "", textpidx = 0, textptag/*:: = {}*/; + var textR = []; + var R = -1, C = -1, range = {s: {r:1000000,c:10000000}, e: {r:0, c:0}}; + var row_ol = 0; + var number_format_map = {}; + var merges/*:Array*/ = [], mrange = {}, mR = 0, mC = 0; + var rowinfo/*:Array*/ = [], rowpeat = 1, colpeat = 1; + var arrayf/*:Array<[Range, string]>*/ = []; + var WB = {Names:[]}; + var atag = ({}/*:any*/); + var _Ref/*:[string, string]*/ = ["", ""]; + var comments/*:Array*/ = [], comment/*:Comment*/ = ({}/*:any*/); + var creator = "", creatoridx = 0; + var isstub = false, intable = false; + var i = 0; + xlmlregex.lastIndex = 0; + str = str.replace(//mg,"").replace(//gm,""); + while((Rn = xlmlregex.exec(str))) switch((Rn[3]=Rn[3].replace(/_.*$/,""))) { + + case 'table': case '工作表': // 9.1.2 + if(Rn[1]==='/') { + if(range.e.c >= range.s.c && range.e.r >= range.s.r) ws['!ref'] = encode_range(range); + else ws['!ref'] = "A1:A1"; + if(opts.sheetRows > 0 && opts.sheetRows <= range.e.r) { + ws['!fullref'] = ws['!ref']; + range.e.r = opts.sheetRows - 1; + ws['!ref'] = encode_range(range); + } + if(merges.length) ws['!merges'] = merges; + if(rowinfo.length) ws["!rows"] = rowinfo; + sheetag.name = sheetag['名称'] || sheetag.name; + if(typeof JSON !== 'undefined') JSON.stringify(sheetag); + SheetNames.push(sheetag.name); + Sheets[sheetag.name] = ws; + intable = false; + } + else if(Rn[0].charAt(Rn[0].length-2) !== '/') { + sheetag = parsexmltag(Rn[0], false); + R = C = -1; + range.s.r = range.s.c = 10000000; range.e.r = range.e.c = 0; + ws = opts.dense ? ([]/*:any*/) : ({}/*:any*/); merges = []; + rowinfo = []; + intable = true; + } + break; + + case 'table-row-group': // 9.1.9 + if(Rn[1] === "/") --row_ol; else ++row_ol; + break; + case 'table-row': case '行': // 9.1.3 + if(Rn[1] === '/') { R+=rowpeat; rowpeat = 1; break; } + rowtag = parsexmltag(Rn[0], false); + if(rowtag['行号']) R = rowtag['行号'] - 1; else if(R == -1) R = 0; + rowpeat = +rowtag['number-rows-repeated'] || 1; + /* TODO: remove magic */ + if(rowpeat < 10) for(i = 0; i < rowpeat; ++i) if(row_ol > 0) rowinfo[R + i] = {level: row_ol}; + C = -1; break; + case 'covered-table-cell': // 9.1.5 + if(Rn[1] !== '/') ++C; + if(opts.sheetStubs) { + if(opts.dense) { if(!ws[R]) ws[R] = []; ws[R][C] = {t:'z'}; } + else ws[encode_cell({r:R,c:C})] = {t:'z'}; + } + textp = ""; textR = []; + break; /* stub */ + case 'table-cell': case '数据': + if(Rn[0].charAt(Rn[0].length-2) === '/') { + ++C; + ctag = parsexmltag(Rn[0], false); + colpeat = parseInt(ctag['number-columns-repeated']||"1", 10); + q = ({t:'z', v:null/*:: , z:null, w:"",c:[]*/}/*:any*/); + if(ctag.formula && opts.cellFormula != false) q.f = ods_to_csf_formula(unescapexml(ctag.formula)); + if((ctag['数据类型'] || ctag['value-type']) == "string") { + q.t = "s"; q.v = unescapexml(ctag['string-value'] || ""); + if(opts.dense) { + if(!ws[R]) ws[R] = []; + ws[R][C] = q; + } else { + ws[encode_cell({r:R,c:C})] = q; + } + } + C+= colpeat-1; + } else if(Rn[1]!=='/') { + ++C; + textp = ""; textpidx = 0; textR = []; + colpeat = 1; + var rptR = rowpeat ? R + rowpeat - 1 : R; + if(C > range.e.c) range.e.c = C; + if(C < range.s.c) range.s.c = C; + if(R < range.s.r) range.s.r = R; + if(rptR > range.e.r) range.e.r = rptR; + ctag = parsexmltag(Rn[0], false); + comments = []; comment = ({}/*:any*/); + q = ({t:ctag['数据类型'] || ctag['value-type'], v:null/*:: , z:null, w:"",c:[]*/}/*:any*/); + if(opts.cellFormula) { + if(ctag.formula) ctag.formula = unescapexml(ctag.formula); + if(ctag['number-matrix-columns-spanned'] && ctag['number-matrix-rows-spanned']) { + mR = parseInt(ctag['number-matrix-rows-spanned'],10) || 0; + mC = parseInt(ctag['number-matrix-columns-spanned'],10) || 0; + mrange = {s: {r:R,c:C}, e:{r:R + mR-1,c:C + mC-1}}; + q.F = encode_range(mrange); + arrayf.push([mrange, q.F]); + } + if(ctag.formula) q.f = ods_to_csf_formula(ctag.formula); + else for(i = 0; i < arrayf.length; ++i) + if(R >= arrayf[i][0].s.r && R <= arrayf[i][0].e.r) + if(C >= arrayf[i][0].s.c && C <= arrayf[i][0].e.c) + q.F = arrayf[i][1]; + } + if(ctag['number-columns-spanned'] || ctag['number-rows-spanned']) { + mR = parseInt(ctag['number-rows-spanned'],10) || 0; + mC = parseInt(ctag['number-columns-spanned'],10) || 0; + mrange = {s: {r:R,c:C}, e:{r:R + mR-1,c:C + mC-1}}; + merges.push(mrange); + } + + /* 19.675.2 table:number-columns-repeated */ + if(ctag['number-columns-repeated']) colpeat = parseInt(ctag['number-columns-repeated'], 10); + + /* 19.385 office:value-type */ + switch(q.t) { + case 'boolean': q.t = 'b'; q.v = parsexmlbool(ctag['boolean-value']); break; + case 'float': q.t = 'n'; q.v = parseFloat(ctag.value); break; + case 'percentage': q.t = 'n'; q.v = parseFloat(ctag.value); break; + case 'currency': q.t = 'n'; q.v = parseFloat(ctag.value); break; + case 'date': q.t = 'd'; q.v = parseDate(ctag['date-value']); + if(!opts.cellDates) { q.t = 'n'; q.v = datenum(q.v); } + q.z = 'm/d/yy'; break; + case 'time': q.t = 'n'; q.v = parse_isodur(ctag['time-value'])/86400; + if(opts.cellDates) { q.t = 'd'; q.v = numdate(q.v); } + q.z = 'HH:MM:SS'; break; + case 'number': q.t = 'n'; q.v = parseFloat(ctag['数据数值']); break; + default: + if(q.t === 'string' || q.t === 'text' || !q.t) { + q.t = 's'; + if(ctag['string-value'] != null) { textp = unescapexml(ctag['string-value']); textR = []; } + } else throw new Error('Unsupported value type ' + q.t); + } + } else { + isstub = false; + if(q.t === 's') { + q.v = textp || ''; + if(textR.length) q.R = textR; + isstub = textpidx == 0; + } + if(atag.Target) q.l = atag; + if(comments.length > 0) { q.c = comments; comments = []; } + if(textp && opts.cellText !== false) q.w = textp; + if(isstub) { q.t = "z"; delete q.v; } + if(!isstub || opts.sheetStubs) { + if(!(opts.sheetRows && opts.sheetRows <= R)) { + for(var rpt = 0; rpt < rowpeat; ++rpt) { + colpeat = parseInt(ctag['number-columns-repeated']||"1", 10); + if(opts.dense) { + if(!ws[R + rpt]) ws[R + rpt] = []; + ws[R + rpt][C] = rpt == 0 ? q : dup(q); + while(--colpeat > 0) ws[R + rpt][C + colpeat] = dup(q); + } else { + ws[encode_cell({r:R + rpt,c:C})] = q; + while(--colpeat > 0) ws[encode_cell({r:R + rpt,c:C + colpeat})] = dup(q); + } + if(range.e.c <= C) range.e.c = C; + } + } + } + colpeat = parseInt(ctag['number-columns-repeated']||"1", 10); + C += colpeat-1; colpeat = 0; + q = {/*:: t:"", v:null, z:null, w:"",c:[]*/}; + textp = ""; textR = []; + } + atag = ({}/*:any*/); + break; // 9.1.4 + + /* pure state */ + case 'document': // TODO: is the root for FODS + case 'document-content': case '电子表格文档': // 3.1.3.2 + case 'spreadsheet': case '主体': // 3.7 + case 'scripts': // 3.12 + case 'styles': // TODO + case 'font-face-decls': // 3.14 + case 'master-styles': // 3.15.4 -- relevant for FODS + if(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw "Bad state: "+tmp;} + else if(Rn[0].charAt(Rn[0].length-2) !== '/') state.push([Rn[3], true]); + break; + + case 'annotation': // 14.1 + if(Rn[1]==='/'){ + if((tmp=state.pop())[0]!==Rn[3]) throw "Bad state: "+tmp; + comment.t = textp; + if(textR.length) /*::(*/comment/*:: :any)*/.R = textR; + comment.a = creator; + comments.push(comment); + } + else if(Rn[0].charAt(Rn[0].length-2) !== '/') {state.push([Rn[3], false]);} + creator = ""; creatoridx = 0; + textp = ""; textpidx = 0; textR = []; + break; + + case 'creator': // 4.3.2.7 + if(Rn[1]==='/') { creator = str.slice(creatoridx,Rn.index); } + else creatoridx = Rn.index + Rn[0].length; + break; + + /* ignore state */ + case 'meta': case '元数据': // TODO: FODS/UOF + case 'settings': // TODO: + case 'config-item-set': // TODO: + case 'config-item-map-indexed': // TODO: + case 'config-item-map-entry': // TODO: + case 'config-item-map-named': // TODO: + case 'shapes': // 9.2.8 + case 'frame': // 10.4.2 + case 'text-box': // 10.4.3 + case 'image': // 10.4.4 + case 'data-pilot-tables': // 9.6.2 + case 'list-style': // 16.30 + case 'form': // 13.13 + case 'dde-links': // 9.8 + case 'event-listeners': // TODO + case 'chart': // TODO + if(Rn[1]==='/'){if((tmp=state.pop())[0]!==Rn[3]) throw "Bad state: "+tmp;} + else if(Rn[0].charAt(Rn[0].length-2) !== '/') state.push([Rn[3], false]); + textp = ""; textpidx = 0; textR = []; + break; + + case 'scientific-number': // TODO: + break; + case 'currency-symbol': // TODO: + break; + case 'currency-style': // TODO: + break; + case 'number-style': // 16.27.2 + case 'percentage-style': // 16.27.9 + case 'date-style': // 16.27.10 + case 'time-style': // 16.27.18 + if(Rn[1]==='/'){ + number_format_map[NFtag.name] = NF; + if((tmp=state.pop())[0]!==Rn[3]) throw "Bad state: "+tmp; + } else if(Rn[0].charAt(Rn[0].length-2) !== '/') { + NF = ""; + NFtag = parsexmltag(Rn[0], false); + state.push([Rn[3], true]); + } break; + + case 'script': break; // 3.13 + case 'libraries': break; // TODO: + case 'automatic-styles': break; // 3.15.3 + + case 'default-style': // TODO: + case 'page-layout': break; // TODO: + case 'style': // 16.2 + break; + case 'map': break; // 16.3 + case 'font-face': break; // 16.21 + + case 'paragraph-properties': break; // 17.6 + case 'table-properties': break; // 17.15 + case 'table-column-properties': break; // 17.16 + case 'table-row-properties': break; // 17.17 + case 'table-cell-properties': break; // 17.18 + + case 'number': // 16.27.3 + switch(state[state.length-1][0]) { + case 'time-style': + case 'date-style': + tag = parsexmltag(Rn[0], false); + NF += number_formats_ods[Rn[3]][tag.style==='long'?1:0]; break; + } break; + + case 'fraction': break; // TODO 16.27.6 + + case 'day': // 16.27.11 + case 'month': // 16.27.12 + case 'year': // 16.27.13 + case 'era': // 16.27.14 + case 'day-of-week': // 16.27.15 + case 'week-of-year': // 16.27.16 + case 'quarter': // 16.27.17 + case 'hours': // 16.27.19 + case 'minutes': // 16.27.20 + case 'seconds': // 16.27.21 + case 'am-pm': // 16.27.22 + switch(state[state.length-1][0]) { + case 'time-style': + case 'date-style': + tag = parsexmltag(Rn[0], false); + NF += number_formats_ods[Rn[3]][tag.style==='long'?1:0]; break; + } break; + + case 'boolean-style': break; // 16.27.23 + case 'boolean': break; // 16.27.24 + case 'text-style': break; // 16.27.25 + case 'text': // 16.27.26 + if(Rn[0].slice(-2) === "/>") break; + else if(Rn[1]==="/") switch(state[state.length-1][0]) { + case 'number-style': + case 'date-style': + case 'time-style': + NF += str.slice(pidx, Rn.index); + break; + } + else pidx = Rn.index + Rn[0].length; + break; + + case 'named-range': // 9.4.12 + tag = parsexmltag(Rn[0], false); + _Ref = ods_to_csf_3D(tag['cell-range-address']); + var nrange = ({Name:tag.name, Ref:_Ref[0] + '!' + _Ref[1]}/*:any*/); + if(intable) nrange.Sheet = SheetNames.length; + WB.Names.push(nrange); + break; + + case 'text-content': break; // 16.27.27 + case 'text-properties': break; // 16.27.27 + case 'embedded-text': break; // 16.27.4 + + case 'body': case '电子表格': break; // 3.3 16.9.6 19.726.3 + + case 'forms': break; // 12.25.2 13.2 + case 'table-column': break; // 9.1.6 + case 'table-header-rows': break; // 9.1.7 + case 'table-rows': break; // 9.1.12 + /* TODO: outline levels */ + case 'table-column-group': break; // 9.1.10 + case 'table-header-columns': break; // 9.1.11 + case 'table-columns': break; // 9.1.12 + + case 'null-date': break; // 9.4.2 TODO: date1904 + + case 'graphic-properties': break; // 17.21 + case 'calculation-settings': break; // 9.4.1 + case 'named-expressions': break; // 9.4.11 + case 'label-range': break; // 9.4.9 + case 'label-ranges': break; // 9.4.10 + case 'named-expression': break; // 9.4.13 + case 'sort': break; // 9.4.19 + case 'sort-by': break; // 9.4.20 + case 'sort-groups': break; // 9.4.22 + + case 'tab': break; // 6.1.4 + case 'line-break': break; // 6.1.5 + case 'span': break; // 6.1.7 + case 'p': case '文本串': // 5.1.3 + if(['master-styles'].indexOf(state[state.length-1][0]) > -1) break; + if(Rn[1]==='/' && (!ctag || !ctag['string-value'])) { + var ptp = parse_text_p(str.slice(textpidx,Rn.index), textptag); + textp = (textp.length > 0 ? textp + "\n" : "") + ptp[0]; + } else { textptag = parsexmltag(Rn[0], false); textpidx = Rn.index + Rn[0].length; } + break; // + case 's': break; // + + case 'database-range': // 9.4.15 + if(Rn[1]==='/') break; + try { + _Ref = ods_to_csf_3D(parsexmltag(Rn[0])['target-range-address']); + Sheets[_Ref[0]]['!autofilter'] = { ref:_Ref[1] }; + } catch(e) {/* empty */} + break; + + case 'date': break; // <*:date> + + case 'object': break; // 10.4.6.2 + case 'title': case '标题': break; // <*:title> OR + case 'desc': break; // <*:desc> + case 'binary-data': break; // 10.4.5 TODO: b64 blob + + /* 9.2 Advanced Tables */ + case 'table-source': break; // 9.2.6 + case 'scenario': break; // 9.2.6 + + case 'iteration': break; // 9.4.3 + case 'content-validations': break; // 9.4.4 + case 'filter': break; // 9.5.2 + case 'filter-and': break; // 9.5.3 + case 'filter-or': break; // 9.5.4 + case 'filter-condition': break; // 9.5.5 + + case 'list-level-style-bullet': break; // 16.31 + case 'page-count': break; // TODO + case 'time': break; // TODO + + /* 9.3 Advanced Table Cells */ + case 'cell-range-source': break; // 9.3.1 + case 'property': break; // 13.8 + + case 'a': // 6.1.8 hyperlink + if(Rn[1]!== '/') { + atag = parsexmltag(Rn[0], false); + if(!atag.href) break; + atag.Target = unescapexml(atag.href); delete atag.href; + if(atag.Target.charAt(0) == "#" && atag.Target.indexOf(".") > -1) { + _Ref = ods_to_csf_3D(atag.Target.slice(1)); + atag.Target = "#" + _Ref[0] + "!" + _Ref[1]; + } else if(atag.Target.match(/^\.\.[\\\/]/)) atag.Target = atag.Target.slice(3); + } + break; + + /* non-standard */ + case 'table-protection': break; + case 'data-pilot-grand-total': break; // ', + '', + '', + '', + '', + '', + '', + '' + ].join(""); + + var payload = '' + master_styles + ''; + + return function wso(/*::wb, opts*/) { + return XML_HEADER + payload; + }; +})(); +var write_content_ods/*:{(wb:any, opts:any):string}*/ = /* @__PURE__ */(function() { + /* 6.1.2 White Space Characters */ + var write_text_p = function(text/*:string*/)/*:string*/ { + return escapexml(text) + .replace(/ +/g, function($$){return '';}) + .replace(/\t/g, "") + .replace(/\n/g, "") + .replace(/^ /, "").replace(/ $/, ""); + }; + + var null_cell_xml = ' \n'; + var covered_cell_xml = ' \n'; + var write_ws = function(ws, wb/*:Workbook*/, i/*:number*//*::, opts*/)/*:string*/ { + /* Section 9 Tables */ + var o/*:Array*/ = []; + o.push(' \n'); + var R=0,C=0, range = decode_range(ws['!ref']||"A1"); + var marr/*:Array*/ = ws['!merges'] || [], mi = 0; + var dense = Array.isArray(ws); + if(ws["!cols"]) { + for(C = 0; C <= range.e.c; ++C) o.push(' \n'); + } + var H = "", ROWS = ws["!rows"]||[]; + for(R = 0; R < range.s.r; ++R) { + H = ROWS[R] ? ' table:style-name="ro' + ROWS[R].ods + '"' : ""; + o.push(' \n'); + } + for(; R <= range.e.r; ++R) { + H = ROWS[R] ? ' table:style-name="ro' + ROWS[R].ods + '"' : ""; + o.push(' \n'); + for(C=0; C < range.s.c; ++C) o.push(null_cell_xml); + for(; C <= range.e.c; ++C) { + var skip = false, ct = {}, textp = ""; + for(mi = 0; mi != marr.length; ++mi) { + if(marr[mi].s.c > C) continue; + if(marr[mi].s.r > R) continue; + if(marr[mi].e.c < C) continue; + if(marr[mi].e.r < R) continue; + if(marr[mi].s.c != C || marr[mi].s.r != R) skip = true; + ct['table:number-columns-spanned'] = (marr[mi].e.c - marr[mi].s.c + 1); + ct['table:number-rows-spanned'] = (marr[mi].e.r - marr[mi].s.r + 1); + break; + } + if(skip) { o.push(covered_cell_xml); continue; } + var ref = encode_cell({r:R, c:C}), cell = dense ? (ws[R]||[])[C]: ws[ref]; + if(cell && cell.f) { + ct['table:formula'] = escapexml(csf_to_ods_formula(cell.f)); + if(cell.F) { + if(cell.F.slice(0, ref.length) == ref) { + var _Fref = decode_range(cell.F); + ct['table:number-matrix-columns-spanned'] = (_Fref.e.c - _Fref.s.c + 1); + ct['table:number-matrix-rows-spanned'] = (_Fref.e.r - _Fref.s.r + 1); + } + } + } + if(!cell) { o.push(null_cell_xml); continue; } + switch(cell.t) { + case 'b': + textp = (cell.v ? 'TRUE' : 'FALSE'); + ct['office:value-type'] = "boolean"; + ct['office:boolean-value'] = (cell.v ? 'true' : 'false'); + break; + case 'n': + textp = (cell.w||String(cell.v||0)); + ct['office:value-type'] = "float"; + ct['office:value'] = (cell.v||0); + break; + case 's': case 'str': + textp = cell.v == null ? "" : cell.v; + ct['office:value-type'] = "string"; + break; + case 'd': + textp = (cell.w||(parseDate(cell.v).toISOString())); + ct['office:value-type'] = "date"; + ct['office:date-value'] = (parseDate(cell.v).toISOString()); + ct['table:style-name'] = "ce1"; + break; + //case 'e': + default: o.push(null_cell_xml); continue; + } + var text_p = write_text_p(textp); + if(cell.l && cell.l.Target) { + var _tgt = cell.l.Target; + _tgt = _tgt.charAt(0) == "#" ? "#" + csf_to_ods_3D(_tgt.slice(1)) : _tgt; + // TODO: choose correct parent path format based on link delimiters + if(_tgt.charAt(0) != "#" && !_tgt.match(/^\w+:/)) _tgt = '../' + _tgt; + text_p = writextag('text:a', text_p, {'xlink:href': _tgt.replace(/&/g, "&")}); + } + o.push(' ' + writextag('table:table-cell', writextag('text:p', text_p, {}), ct) + '\n'); + } + o.push(' \n'); + } + o.push(' \n'); + return o.join(""); + }; + + var write_automatic_styles_ods = function(o/*:Array*/, wb) { + o.push(' \n'); + + o.push(' \n'); + o.push(' \n'); + o.push(' /\n'); + o.push(' \n'); + o.push(' /\n'); + o.push(' \n'); + o.push(' \n'); + + /* column styles */ + var cidx = 0; + wb.SheetNames.map(function(n) { return wb.Sheets[n]; }).forEach(function(ws) { + if(!ws) return; + if(ws["!cols"]) { + for(var C = 0; C < ws["!cols"].length; ++C) if(ws["!cols"][C]) { + var colobj = ws["!cols"][C]; + if(colobj.width == null && colobj.wpx == null && colobj.wch == null) continue; + process_col(colobj); + colobj.ods = cidx; + var w = ws["!cols"][C].wpx + "px"; + o.push(' \n'); + o.push(' \n'); + o.push(' \n'); + ++cidx; + } + } + }); + + /* row styles */ + var ridx = 0; + wb.SheetNames.map(function(n) { return wb.Sheets[n]; }).forEach(function(ws) { + if(!ws) return; + if(ws["!rows"]) { + for(var R = 0; R < ws["!rows"].length; ++R) if(ws["!rows"][R]) { + ws["!rows"][R].ods = ridx; + var h = ws["!rows"][R].hpx + "px"; + o.push(' \n'); + o.push(' \n'); + o.push(' \n'); + ++ridx; + } + } + }); + + /* table */ + o.push(' \n'); + o.push(' \n'); + o.push(' \n'); + + /* table cells, text */ + o.push(' \n'); + + /* page-layout */ + + o.push(' \n'); + }; + + return function wcx(wb, opts) { + var o = [XML_HEADER]; + /* 3.1.3.2 */ + var attr = wxt_helper({ + 'xmlns:office': "urn:oasis:names:tc:opendocument:xmlns:office:1.0", + 'xmlns:table': "urn:oasis:names:tc:opendocument:xmlns:table:1.0", + 'xmlns:style': "urn:oasis:names:tc:opendocument:xmlns:style:1.0", + 'xmlns:text': "urn:oasis:names:tc:opendocument:xmlns:text:1.0", + 'xmlns:draw': "urn:oasis:names:tc:opendocument:xmlns:drawing:1.0", + 'xmlns:fo': "urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0", + 'xmlns:xlink': "http://www.w3.org/1999/xlink", + 'xmlns:dc': "http://purl.org/dc/elements/1.1/", + 'xmlns:meta': "urn:oasis:names:tc:opendocument:xmlns:meta:1.0", + 'xmlns:number': "urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0", + 'xmlns:presentation': "urn:oasis:names:tc:opendocument:xmlns:presentation:1.0", + 'xmlns:svg': "urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0", + 'xmlns:chart': "urn:oasis:names:tc:opendocument:xmlns:chart:1.0", + 'xmlns:dr3d': "urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0", + 'xmlns:math': "http://www.w3.org/1998/Math/MathML", + 'xmlns:form': "urn:oasis:names:tc:opendocument:xmlns:form:1.0", + 'xmlns:script': "urn:oasis:names:tc:opendocument:xmlns:script:1.0", + 'xmlns:ooo': "http://openoffice.org/2004/office", + 'xmlns:ooow': "http://openoffice.org/2004/writer", + 'xmlns:oooc': "http://openoffice.org/2004/calc", + 'xmlns:dom': "http://www.w3.org/2001/xml-events", + 'xmlns:xforms': "http://www.w3.org/2002/xforms", + 'xmlns:xsd': "http://www.w3.org/2001/XMLSchema", + 'xmlns:xsi': "http://www.w3.org/2001/XMLSchema-instance", + 'xmlns:sheet': "urn:oasis:names:tc:opendocument:sh33tjs:1.0", + 'xmlns:rpt': "http://openoffice.org/2005/report", + 'xmlns:of': "urn:oasis:names:tc:opendocument:xmlns:of:1.2", + 'xmlns:xhtml': "http://www.w3.org/1999/xhtml", + 'xmlns:grddl': "http://www.w3.org/2003/g/data-view#", + 'xmlns:tableooo': "http://openoffice.org/2009/table", + 'xmlns:drawooo': "http://openoffice.org/2010/draw", + 'xmlns:calcext': "urn:org:documentfoundation:names:experimental:calc:xmlns:calcext:1.0", + 'xmlns:loext': "urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0", + 'xmlns:field': "urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0", + 'xmlns:formx': "urn:openoffice:names:experimental:ooxml-odf-interop:xmlns:form:1.0", + 'xmlns:css3t': "http://www.w3.org/TR/css3-text/", + 'office:version': "1.2" + }); + + var fods = wxt_helper({ + 'xmlns:config': "urn:oasis:names:tc:opendocument:xmlns:config:1.0", + 'office:mimetype': "application/vnd.oasis.opendocument.spreadsheet" + }); + + if(opts.bookType == "fods") { + o.push('\n'); + o.push(write_meta_ods().replace(/office:document-meta/g, "office:meta")); + // TODO: settings (equiv of settings.xml for ODS) + } else o.push('\n'); + // o.push(' \n'); + write_automatic_styles_ods(o, wb); + o.push(' \n'); + o.push(' \n'); + for(var i = 0; i != wb.SheetNames.length; ++i) o.push(write_ws(wb.Sheets[wb.SheetNames[i]], wb, i, opts)); + o.push(' \n'); + o.push(' \n'); + if(opts.bookType == "fods") o.push(''); + else o.push(''); + return o.join(""); + }; +})(); + +function write_ods(wb/*:any*/, opts/*:any*/) { + if(opts.bookType == "fods") return write_content_ods(wb, opts); + + var zip = zip_new(); + var f = ""; + + var manifest/*:Array >*/ = []; + var rdf/*:Array<[string, string]>*/ = []; + + /* Part 3 Section 3.3 MIME Media Type */ + f = "mimetype"; + zip_add_file(zip, f, "application/vnd.oasis.opendocument.spreadsheet"); + + /* Part 1 Section 2.2 Documents */ + f = "content.xml"; + zip_add_file(zip, f, write_content_ods(wb, opts)); + manifest.push([f, "text/xml"]); + rdf.push([f, "ContentFile"]); + + /* TODO: these are hard-coded styles to satiate excel */ + f = "styles.xml"; + zip_add_file(zip, f, write_styles_ods(wb, opts)); + manifest.push([f, "text/xml"]); + rdf.push([f, "StylesFile"]); + + /* TODO: this is hard-coded to satiate excel */ + f = "meta.xml"; + zip_add_file(zip, f, XML_HEADER + write_meta_ods(/*::wb, opts*/)); + manifest.push([f, "text/xml"]); + rdf.push([f, "MetadataFile"]); + + /* Part 3 Section 6 Metadata Manifest File */ + f = "manifest.rdf"; + zip_add_file(zip, f, write_rdf(rdf/*, opts*/)); + manifest.push([f, "application/rdf+xml"]); + + /* Part 3 Section 4 Manifest File */ + f = "META-INF/manifest.xml"; + zip_add_file(zip, f, write_manifest(manifest/*, opts*/)); + + return zip; +} + +/*! sheetjs (C) 2013-present SheetJS -- http://sheetjs.com */ +function u8_to_dataview(array) { + return new DataView(array.buffer, array.byteOffset, array.byteLength); +} +function u8str(u8) { + return typeof TextDecoder != "undefined" ? new TextDecoder().decode(u8) : utf8read(a2s(u8)); +} +function stru8(str) { + return typeof TextEncoder != "undefined" ? new TextEncoder().encode(str) : s2a(utf8write(str)); +} +function u8contains(body, search) { + outer: + for (var L = 0; L <= body.length - search.length; ++L) { + for (var j = 0; j < search.length; ++j) + if (body[L + j] != search[j]) + continue outer; + return true; + } + return false; +} +function u8concat(u8a) { + var len = u8a.reduce(function(acc, x) { + return acc + x.length; + }, 0); + var out = new Uint8Array(len); + var off = 0; + u8a.forEach(function(u8) { + out.set(u8, off); + off += u8.length; + }); + return out; +} +function popcnt(x) { + x -= x >> 1 & 1431655765; + x = (x & 858993459) + (x >> 2 & 858993459); + return (x + (x >> 4) & 252645135) * 16843009 >>> 24; +} +function readDecimal128LE(buf, offset) { + var exp = (buf[offset + 15] & 127) << 7 | buf[offset + 14] >> 1; + var mantissa = buf[offset + 14] & 1; + for (var j = offset + 13; j >= offset; --j) + mantissa = mantissa * 256 + buf[j]; + return (buf[offset + 15] & 128 ? -mantissa : mantissa) * Math.pow(10, exp - 6176); +} +function writeDecimal128LE(buf, offset, value) { + var exp = Math.floor(value == 0 ? 0 : Math.LOG10E * Math.log(Math.abs(value))) + 6176 - 20; + var mantissa = value / Math.pow(10, exp - 6176); + buf[offset + 15] |= exp >> 7; + buf[offset + 14] |= (exp & 127) << 1; + for (var i = 0; mantissa >= 1; ++i, mantissa /= 256) + buf[offset + i] = mantissa & 255; + buf[offset + 15] |= value >= 0 ? 0 : 128; +} +function parse_varint49(buf, ptr) { + var l = ptr ? ptr[0] : 0; + var usz = buf[l] & 127; + varint: + if (buf[l++] >= 128) { + usz |= (buf[l] & 127) << 7; + if (buf[l++] < 128) + break varint; + usz |= (buf[l] & 127) << 14; + if (buf[l++] < 128) + break varint; + usz |= (buf[l] & 127) << 21; + if (buf[l++] < 128) + break varint; + usz += (buf[l] & 127) * Math.pow(2, 28); + ++l; + if (buf[l++] < 128) + break varint; + usz += (buf[l] & 127) * Math.pow(2, 35); + ++l; + if (buf[l++] < 128) + break varint; + usz += (buf[l] & 127) * Math.pow(2, 42); + ++l; + if (buf[l++] < 128) + break varint; + } + if (ptr) + ptr[0] = l; + return usz; +} +function write_varint49(v) { + var usz = new Uint8Array(7); + usz[0] = v & 127; + var L = 1; + sz: + if (v > 127) { + usz[L - 1] |= 128; + usz[L] = v >> 7 & 127; + ++L; + if (v <= 16383) + break sz; + usz[L - 1] |= 128; + usz[L] = v >> 14 & 127; + ++L; + if (v <= 2097151) + break sz; + usz[L - 1] |= 128; + usz[L] = v >> 21 & 127; + ++L; + if (v <= 268435455) + break sz; + usz[L - 1] |= 128; + usz[L] = v / 256 >>> 21 & 127; + ++L; + if (v <= 34359738367) + break sz; + usz[L - 1] |= 128; + usz[L] = v / 65536 >>> 21 & 127; + ++L; + if (v <= 4398046511103) + break sz; + usz[L - 1] |= 128; + usz[L] = v / 16777216 >>> 21 & 127; + ++L; + } + return usz.slice(0, L); +} +function varint_to_i32(buf) { + var l = 0, i32 = buf[l] & 127; + varint: + if (buf[l++] >= 128) { + i32 |= (buf[l] & 127) << 7; + if (buf[l++] < 128) + break varint; + i32 |= (buf[l] & 127) << 14; + if (buf[l++] < 128) + break varint; + i32 |= (buf[l] & 127) << 21; + if (buf[l++] < 128) + break varint; + i32 |= (buf[l] & 127) << 28; + } + return i32; +} +function parse_shallow(buf) { + var out = [], ptr = [0]; + while (ptr[0] < buf.length) { + var off = ptr[0]; + var num = parse_varint49(buf, ptr); + var type = num & 7; + num = Math.floor(num / 8); + var len = 0; + var res; + if (num == 0) + break; + switch (type) { + case 0: + { + var l = ptr[0]; + while (buf[ptr[0]++] >= 128) + ; + res = buf.slice(l, ptr[0]); + } + break; + case 5: + len = 4; + res = buf.slice(ptr[0], ptr[0] + len); + ptr[0] += len; + break; + case 1: + len = 8; + res = buf.slice(ptr[0], ptr[0] + len); + ptr[0] += len; + break; + case 2: + len = parse_varint49(buf, ptr); + res = buf.slice(ptr[0], ptr[0] + len); + ptr[0] += len; + break; + case 3: + case 4: + default: + throw new Error("PB Type ".concat(type, " for Field ").concat(num, " at offset ").concat(off)); + } + var v = { data: res, type: type }; + if (out[num] == null) + out[num] = [v]; + else + out[num].push(v); + } + return out; +} +function write_shallow(proto) { + var out = []; + proto.forEach(function(field, idx) { + field.forEach(function(item) { + if (!item.data) + return; + out.push(write_varint49(idx * 8 + item.type)); + if (item.type == 2) + out.push(write_varint49(item.data.length)); + out.push(item.data); + }); + }); + return u8concat(out); +} +function mappa(data, cb) { + return (data == null ? void 0 : data.map(function(d) { + return cb(d.data); + })) || []; +} +function parse_iwa_file(buf) { + var _a; + var out = [], ptr = [0]; + while (ptr[0] < buf.length) { + var len = parse_varint49(buf, ptr); + var ai = parse_shallow(buf.slice(ptr[0], ptr[0] + len)); + ptr[0] += len; + var res = { + id: varint_to_i32(ai[1][0].data), + messages: [] + }; + ai[2].forEach(function(b) { + var mi = parse_shallow(b.data); + var fl = varint_to_i32(mi[3][0].data); + res.messages.push({ + meta: mi, + data: buf.slice(ptr[0], ptr[0] + fl) + }); + ptr[0] += fl; + }); + if ((_a = ai[3]) == null ? void 0 : _a[0]) + res.merge = varint_to_i32(ai[3][0].data) >>> 0 > 0; + out.push(res); + } + return out; +} +function write_iwa_file(ias) { + var bufs = []; + ias.forEach(function(ia) { + var ai = []; + ai[1] = [{ data: write_varint49(ia.id), type: 0 }]; + ai[2] = []; + if (ia.merge != null) + ai[3] = [{ data: write_varint49(+!!ia.merge), type: 0 }]; + var midata = []; + ia.messages.forEach(function(mi) { + midata.push(mi.data); + mi.meta[3] = [{ type: 0, data: write_varint49(mi.data.length) }]; + ai[2].push({ data: write_shallow(mi.meta), type: 2 }); + }); + var aipayload = write_shallow(ai); + bufs.push(write_varint49(aipayload.length)); + bufs.push(aipayload); + midata.forEach(function(mid) { + return bufs.push(mid); + }); + }); + return u8concat(bufs); +} +function parse_snappy_chunk(type, buf) { + if (type != 0) + throw new Error("Unexpected Snappy chunk type ".concat(type)); + var ptr = [0]; + var usz = parse_varint49(buf, ptr); + var chunks = []; + while (ptr[0] < buf.length) { + var tag = buf[ptr[0]] & 3; + if (tag == 0) { + var len = buf[ptr[0]++] >> 2; + if (len < 60) + ++len; + else { + var c = len - 59; + len = buf[ptr[0]]; + if (c > 1) + len |= buf[ptr[0] + 1] << 8; + if (c > 2) + len |= buf[ptr[0] + 2] << 16; + if (c > 3) + len |= buf[ptr[0] + 3] << 24; + len >>>= 0; + len++; + ptr[0] += c; + } + chunks.push(buf.slice(ptr[0], ptr[0] + len)); + ptr[0] += len; + continue; + } else { + var offset = 0, length = 0; + if (tag == 1) { + length = (buf[ptr[0]] >> 2 & 7) + 4; + offset = (buf[ptr[0]++] & 224) << 3; + offset |= buf[ptr[0]++]; + } else { + length = (buf[ptr[0]++] >> 2) + 1; + if (tag == 2) { + offset = buf[ptr[0]] | buf[ptr[0] + 1] << 8; + ptr[0] += 2; + } else { + offset = (buf[ptr[0]] | buf[ptr[0] + 1] << 8 | buf[ptr[0] + 2] << 16 | buf[ptr[0] + 3] << 24) >>> 0; + ptr[0] += 4; + } + } + chunks = [u8concat(chunks)]; + if (offset == 0) + throw new Error("Invalid offset 0"); + if (offset > chunks[0].length) + throw new Error("Invalid offset beyond length"); + if (length >= offset) { + chunks.push(chunks[0].slice(-offset)); + length -= offset; + while (length >= chunks[chunks.length - 1].length) { + chunks.push(chunks[chunks.length - 1]); + length -= chunks[chunks.length - 1].length; + } + } + chunks.push(chunks[0].slice(-offset, -offset + length)); + } + } + var o = u8concat(chunks); + if (o.length != usz) + throw new Error("Unexpected length: ".concat(o.length, " != ").concat(usz)); + return o; +} +function decompress_iwa_file(buf) { + var out = []; + var l = 0; + while (l < buf.length) { + var t = buf[l++]; + var len = buf[l] | buf[l + 1] << 8 | buf[l + 2] << 16; + l += 3; + out.push(parse_snappy_chunk(t, buf.slice(l, l + len))); + l += len; + } + if (l !== buf.length) + throw new Error("data is not a valid framed stream!"); + return u8concat(out); +} +function compress_iwa_file(buf) { + var out = []; + var l = 0; + while (l < buf.length) { + var c = Math.min(buf.length - l, 268435455); + var frame = new Uint8Array(4); + out.push(frame); + var usz = write_varint49(c); + var L = usz.length; + out.push(usz); + if (c <= 60) { + L++; + out.push(new Uint8Array([c - 1 << 2])); + } else if (c <= 256) { + L += 2; + out.push(new Uint8Array([240, c - 1 & 255])); + } else if (c <= 65536) { + L += 3; + out.push(new Uint8Array([244, c - 1 & 255, c - 1 >> 8 & 255])); + } else if (c <= 16777216) { + L += 4; + out.push(new Uint8Array([248, c - 1 & 255, c - 1 >> 8 & 255, c - 1 >> 16 & 255])); + } else if (c <= 4294967296) { + L += 5; + out.push(new Uint8Array([252, c - 1 & 255, c - 1 >> 8 & 255, c - 1 >> 16 & 255, c - 1 >>> 24 & 255])); + } + out.push(buf.slice(l, l + c)); + L += c; + frame[0] = 0; + frame[1] = L & 255; + frame[2] = L >> 8 & 255; + frame[3] = L >> 16 & 255; + l += c; + } + return u8concat(out); +} +function parse_old_storage(buf, sst, rsst, v) { + var dv = u8_to_dataview(buf); + var flags = dv.getUint32(4, true); + var data_offset = (v > 1 ? 12 : 8) + popcnt(flags & (v > 1 ? 3470 : 398)) * 4; + var ridx = -1, sidx = -1, ieee = NaN, dt = new Date(2001, 0, 1); + if (flags & 512) { + ridx = dv.getUint32(data_offset, true); + data_offset += 4; + } + data_offset += popcnt(flags & (v > 1 ? 12288 : 4096)) * 4; + if (flags & 16) { + sidx = dv.getUint32(data_offset, true); + data_offset += 4; + } + if (flags & 32) { + ieee = dv.getFloat64(data_offset, true); + data_offset += 8; + } + if (flags & 64) { + dt.setTime(dt.getTime() + dv.getFloat64(data_offset, true) * 1e3); + data_offset += 8; + } + var ret; + switch (buf[2]) { + case 0: + break; + case 2: + ret = { t: "n", v: ieee }; + break; + case 3: + ret = { t: "s", v: sst[sidx] }; + break; + case 5: + ret = { t: "d", v: dt }; + break; + case 6: + ret = { t: "b", v: ieee > 0 }; + break; + case 7: + ret = { t: "n", v: ieee / 86400 }; + break; + case 8: + ret = { t: "e", v: 0 }; + break; + case 9: + { + if (ridx > -1) + ret = { t: "s", v: rsst[ridx] }; + else if (sidx > -1) + ret = { t: "s", v: sst[sidx] }; + else if (!isNaN(ieee)) + ret = { t: "n", v: ieee }; + else + throw new Error("Unsupported cell type ".concat(buf.slice(0, 4))); + } + break; + default: + throw new Error("Unsupported cell type ".concat(buf.slice(0, 4))); + } + return ret; +} +function parse_new_storage(buf, sst, rsst) { + var dv = u8_to_dataview(buf); + var flags = dv.getUint32(8, true); + var data_offset = 12; + var ridx = -1, sidx = -1, d128 = NaN, ieee = NaN, dt = new Date(2001, 0, 1); + if (flags & 1) { + d128 = readDecimal128LE(buf, data_offset); + data_offset += 16; + } + if (flags & 2) { + ieee = dv.getFloat64(data_offset, true); + data_offset += 8; + } + if (flags & 4) { + dt.setTime(dt.getTime() + dv.getFloat64(data_offset, true) * 1e3); + data_offset += 8; + } + if (flags & 8) { + sidx = dv.getUint32(data_offset, true); + data_offset += 4; + } + if (flags & 16) { + ridx = dv.getUint32(data_offset, true); + data_offset += 4; + } + var ret; + switch (buf[1]) { + case 0: + break; + case 2: + ret = { t: "n", v: d128 }; + break; + case 3: + ret = { t: "s", v: sst[sidx] }; + break; + case 5: + ret = { t: "d", v: dt }; + break; + case 6: + ret = { t: "b", v: ieee > 0 }; + break; + case 7: + ret = { t: "n", v: ieee / 86400 }; + break; + case 8: + ret = { t: "e", v: 0 }; + break; + case 9: + { + if (ridx > -1) + ret = { t: "s", v: rsst[ridx] }; + else + throw new Error("Unsupported cell type ".concat(buf[1], " : ").concat(flags & 31, " : ").concat(buf.slice(0, 4))); + } + break; + case 10: + ret = { t: "n", v: d128 }; + break; + default: + throw new Error("Unsupported cell type ".concat(buf[1], " : ").concat(flags & 31, " : ").concat(buf.slice(0, 4))); + } + return ret; +} +function write_new_storage(cell, sst) { + var out = new Uint8Array(32), dv = u8_to_dataview(out), l = 12, flags = 0; + out[0] = 5; + switch (cell.t) { + case "n": + out[1] = 2; + writeDecimal128LE(out, l, cell.v); + flags |= 1; + l += 16; + break; + case "b": + out[1] = 6; + dv.setFloat64(l, cell.v ? 1 : 0, true); + flags |= 2; + l += 8; + break; + case "s": + if (sst.indexOf(cell.v) == -1) + throw new Error("Value ".concat(cell.v, " missing from SST!")); + out[1] = 3; + dv.setUint32(l, sst.indexOf(cell.v), true); + flags |= 8; + l += 4; + break; + default: + throw "unsupported cell type " + cell.t; + } + dv.setUint32(8, flags, true); + return out.slice(0, l); +} +function write_old_storage(cell, sst) { + var out = new Uint8Array(32), dv = u8_to_dataview(out), l = 12, flags = 0; + out[0] = 3; + switch (cell.t) { + case "n": + out[2] = 2; + dv.setFloat64(l, cell.v, true); + flags |= 32; + l += 8; + break; + case "b": + out[2] = 6; + dv.setFloat64(l, cell.v ? 1 : 0, true); + flags |= 32; + l += 8; + break; + case "s": + if (sst.indexOf(cell.v) == -1) + throw new Error("Value ".concat(cell.v, " missing from SST!")); + out[2] = 3; + dv.setUint32(l, sst.indexOf(cell.v), true); + flags |= 16; + l += 4; + break; + default: + throw "unsupported cell type " + cell.t; + } + dv.setUint32(4, flags, true); + return out.slice(0, l); +} +function parse_cell_storage(buf, sst, rsst) { + switch (buf[0]) { + case 0: + case 1: + case 2: + case 3: + return parse_old_storage(buf, sst, rsst, buf[0]); + case 5: + return parse_new_storage(buf, sst, rsst); + default: + throw new Error("Unsupported payload version ".concat(buf[0])); + } +} +function parse_TSP_Reference(buf) { + var pb = parse_shallow(buf); + return parse_varint49(pb[1][0].data); +} +function write_TSP_Reference(idx) { + var out = []; + out[1] = [{ type: 0, data: write_varint49(idx) }]; + return write_shallow(out); +} +function parse_TST_TableDataList(M, root) { + var pb = parse_shallow(root.data); + var type = varint_to_i32(pb[1][0].data); + var entries = pb[3]; + var data = []; + (entries || []).forEach(function(entry) { + var le = parse_shallow(entry.data); + var key = varint_to_i32(le[1][0].data) >>> 0; + switch (type) { + case 1: + data[key] = u8str(le[3][0].data); + break; + case 8: + { + var rt = M[parse_TSP_Reference(le[9][0].data)][0]; + var rtp = parse_shallow(rt.data); + var rtpref = M[parse_TSP_Reference(rtp[1][0].data)][0]; + var mtype = varint_to_i32(rtpref.meta[1][0].data); + if (mtype != 2001) + throw new Error("2000 unexpected reference to ".concat(mtype)); + var tswpsa = parse_shallow(rtpref.data); + data[key] = tswpsa[3].map(function(x) { + return u8str(x.data); + }).join(""); + } + break; + } + }); + return data; +} +function parse_TST_TileRowInfo(u8, type) { + var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n; + var pb = parse_shallow(u8); + var R = varint_to_i32(pb[1][0].data) >>> 0; + var cnt = varint_to_i32(pb[2][0].data) >>> 0; + var wide_offsets = ((_b = (_a = pb[8]) == null ? void 0 : _a[0]) == null ? void 0 : _b.data) && varint_to_i32(pb[8][0].data) > 0 || false; + var used_storage_u8, used_storage; + if (((_d = (_c = pb[7]) == null ? void 0 : _c[0]) == null ? void 0 : _d.data) && type != 0) { + used_storage_u8 = (_f = (_e = pb[7]) == null ? void 0 : _e[0]) == null ? void 0 : _f.data; + used_storage = (_h = (_g = pb[6]) == null ? void 0 : _g[0]) == null ? void 0 : _h.data; + } else if (((_j = (_i = pb[4]) == null ? void 0 : _i[0]) == null ? void 0 : _j.data) && type != 1) { + used_storage_u8 = (_l = (_k = pb[4]) == null ? void 0 : _k[0]) == null ? void 0 : _l.data; + used_storage = (_n = (_m = pb[3]) == null ? void 0 : _m[0]) == null ? void 0 : _n.data; + } else + throw "NUMBERS Tile missing ".concat(type, " cell storage"); + var width = wide_offsets ? 4 : 1; + var used_storage_offsets = u8_to_dataview(used_storage_u8); + var offsets = []; + for (var C = 0; C < used_storage_u8.length / 2; ++C) { + var off = used_storage_offsets.getUint16(C * 2, true); + if (off < 65535) + offsets.push([C, off]); + } + if (offsets.length != cnt) + throw "Expected ".concat(cnt, " cells, found ").concat(offsets.length); + var cells = []; + for (C = 0; C < offsets.length - 1; ++C) + cells[offsets[C][0]] = used_storage.subarray(offsets[C][1] * width, offsets[C + 1][1] * width); + if (offsets.length >= 1) + cells[offsets[offsets.length - 1][0]] = used_storage.subarray(offsets[offsets.length - 1][1] * width); + return { R: R, cells: cells }; +} +function parse_TST_Tile(M, root) { + var _a; + var pb = parse_shallow(root.data); + var storage = ((_a = pb == null ? void 0 : pb[7]) == null ? void 0 : _a[0]) ? varint_to_i32(pb[7][0].data) >>> 0 > 0 ? 1 : 0 : -1; + var ri = mappa(pb[5], function(u8) { + return parse_TST_TileRowInfo(u8, storage); + }); + return { + nrows: varint_to_i32(pb[4][0].data) >>> 0, + data: ri.reduce(function(acc, x) { + if (!acc[x.R]) + acc[x.R] = []; + x.cells.forEach(function(cell, C) { + if (acc[x.R][C]) + throw new Error("Duplicate cell r=".concat(x.R, " c=").concat(C)); + acc[x.R][C] = cell; + }); + return acc; + }, []) + }; +} +function parse_TST_TableModelArchive(M, root, ws) { + var _a; + var pb = parse_shallow(root.data); + var range = { s: { r: 0, c: 0 }, e: { r: 0, c: 0 } }; + range.e.r = (varint_to_i32(pb[6][0].data) >>> 0) - 1; + if (range.e.r < 0) + throw new Error("Invalid row varint ".concat(pb[6][0].data)); + range.e.c = (varint_to_i32(pb[7][0].data) >>> 0) - 1; + if (range.e.c < 0) + throw new Error("Invalid col varint ".concat(pb[7][0].data)); + ws["!ref"] = encode_range(range); + var store = parse_shallow(pb[4][0].data); + var sst = parse_TST_TableDataList(M, M[parse_TSP_Reference(store[4][0].data)][0]); + var rsst = ((_a = store[17]) == null ? void 0 : _a[0]) ? parse_TST_TableDataList(M, M[parse_TSP_Reference(store[17][0].data)][0]) : []; + var tile = parse_shallow(store[3][0].data); + var _R = 0; + tile[1].forEach(function(t) { + var tl = parse_shallow(t.data); + var ref = M[parse_TSP_Reference(tl[2][0].data)][0]; + var mtype = varint_to_i32(ref.meta[1][0].data); + if (mtype != 6002) + throw new Error("6001 unexpected reference to ".concat(mtype)); + var _tile = parse_TST_Tile(M, ref); + _tile.data.forEach(function(row, R) { + row.forEach(function(buf, C) { + var addr = encode_cell({ r: _R + R, c: C }); + var res = parse_cell_storage(buf, sst, rsst); + if (res) + ws[addr] = res; + }); + }); + _R += _tile.nrows; + }); +} +function parse_TST_TableInfoArchive(M, root) { + var pb = parse_shallow(root.data); + var out = { "!ref": "A1" }; + var tableref = M[parse_TSP_Reference(pb[2][0].data)]; + var mtype = varint_to_i32(tableref[0].meta[1][0].data); + if (mtype != 6001) + throw new Error("6000 unexpected reference to ".concat(mtype)); + parse_TST_TableModelArchive(M, tableref[0], out); + return out; +} +function parse_TN_SheetArchive(M, root) { + var _a; + var pb = parse_shallow(root.data); + var out = { + name: ((_a = pb[1]) == null ? void 0 : _a[0]) ? u8str(pb[1][0].data) : "", + sheets: [] + }; + var shapeoffs = mappa(pb[2], parse_TSP_Reference); + shapeoffs.forEach(function(off) { + M[off].forEach(function(m) { + var mtype = varint_to_i32(m.meta[1][0].data); + if (mtype == 6e3) + out.sheets.push(parse_TST_TableInfoArchive(M, m)); + }); + }); + return out; +} +function parse_TN_DocumentArchive(M, root) { + var out = book_new(); + var pb = parse_shallow(root.data); + var sheetoffs = mappa(pb[1], parse_TSP_Reference); + sheetoffs.forEach(function(off) { + M[off].forEach(function(m) { + var mtype = varint_to_i32(m.meta[1][0].data); + if (mtype == 2) { + var root2 = parse_TN_SheetArchive(M, m); + root2.sheets.forEach(function(sheet, idx) { + book_append_sheet(out, sheet, idx == 0 ? root2.name : root2.name + "_" + idx, true); + }); + } + }); + }); + if (out.SheetNames.length == 0) + throw new Error("Empty NUMBERS file"); + return out; +} +function parse_numbers_iwa(cfb) { + var _a, _b, _c, _d; + var M = {}, indices = []; + cfb.FullPaths.forEach(function(p) { + if (p.match(/\.iwpv2/)) + throw new Error("Unsupported password protection"); + }); + cfb.FileIndex.forEach(function(s) { + if (!s.name.match(/\.iwa$/)) + return; + var o; + try { + o = decompress_iwa_file(s.content); + } catch (e) { + return console.log("?? " + s.content.length + " " + (e.message || e)); + } + var packets; + try { + packets = parse_iwa_file(o); + } catch (e) { + return console.log("## " + (e.message || e)); + } + packets.forEach(function(packet) { + M[packet.id] = packet.messages; + indices.push(packet.id); + }); + }); + if (!indices.length) + throw new Error("File has no messages"); + var docroot = ((_d = (_c = (_b = (_a = M == null ? void 0 : M[1]) == null ? void 0 : _a[0]) == null ? void 0 : _b.meta) == null ? void 0 : _c[1]) == null ? void 0 : _d[0].data) && varint_to_i32(M[1][0].meta[1][0].data) == 1 && M[1][0]; + if (!docroot) + indices.forEach(function(idx) { + M[idx].forEach(function(iwam) { + var mtype = varint_to_i32(iwam.meta[1][0].data) >>> 0; + if (mtype == 1) { + if (!docroot) + docroot = iwam; + else + throw new Error("Document has multiple roots"); + } + }); + }); + if (!docroot) + throw new Error("Cannot find Document root"); + return parse_TN_DocumentArchive(M, docroot); +} +function write_tile_row(tri, data, SST) { + var _a, _b, _c, _d; + if (!((_a = tri[6]) == null ? void 0 : _a[0]) || !((_b = tri[7]) == null ? void 0 : _b[0])) + throw "Mutation only works on post-BNC storages!"; + var wide_offsets = ((_d = (_c = tri[8]) == null ? void 0 : _c[0]) == null ? void 0 : _d.data) && varint_to_i32(tri[8][0].data) > 0 || false; + if (wide_offsets) + throw "Math only works with normal offsets"; + var cnt = 0; + var dv = u8_to_dataview(tri[7][0].data), last_offset = 0, cell_storage = []; + var _dv = u8_to_dataview(tri[4][0].data), _last_offset = 0, _cell_storage = []; + for (var C = 0; C < data.length; ++C) { + if (data[C] == null) { + dv.setUint16(C * 2, 65535, true); + _dv.setUint16(C * 2, 65535); + continue; + } + dv.setUint16(C * 2, last_offset, true); + _dv.setUint16(C * 2, _last_offset, true); + var celload, _celload; + switch (typeof data[C]) { + case "string": + celload = write_new_storage({ t: "s", v: data[C] }, SST); + _celload = write_old_storage({ t: "s", v: data[C] }, SST); + break; + case "number": + celload = write_new_storage({ t: "n", v: data[C] }, SST); + _celload = write_old_storage({ t: "n", v: data[C] }, SST); + break; + case "boolean": + celload = write_new_storage({ t: "b", v: data[C] }, SST); + _celload = write_old_storage({ t: "b", v: data[C] }, SST); + break; + default: + throw new Error("Unsupported value " + data[C]); + } + cell_storage.push(celload); + last_offset += celload.length; + _cell_storage.push(_celload); + _last_offset += _celload.length; + ++cnt; + } + tri[2][0].data = write_varint49(cnt); + for (; C < tri[7][0].data.length / 2; ++C) { + dv.setUint16(C * 2, 65535, true); + _dv.setUint16(C * 2, 65535, true); + } + tri[6][0].data = u8concat(cell_storage); + tri[3][0].data = u8concat(_cell_storage); + return cnt; +} +function write_numbers_iwa(wb, opts) { + if (!opts || !opts.numbers) + throw new Error("Must pass a `numbers` option -- check the README"); + var ws = wb.Sheets[wb.SheetNames[0]]; + if (wb.SheetNames.length > 1) + console.error("The Numbers writer currently writes only the first table"); + var range = decode_range(ws["!ref"]); + range.s.r = range.s.c = 0; + var trunc = false; + if (range.e.c > 9) { + trunc = true; + range.e.c = 9; + } + if (range.e.r > 49) { + trunc = true; + range.e.r = 49; + } + if (trunc) + console.error("The Numbers writer is currently limited to ".concat(encode_range(range))); + var data = sheet_to_json(ws, { range: range, header: 1 }); + var SST = ["~Sh33tJ5~"]; + data.forEach(function(row) { + return row.forEach(function(cell) { + if (typeof cell == "string") + SST.push(cell); + }); + }); + var dependents = {}; + var indices = []; + var cfb = CFB.read(opts.numbers, { type: "base64" }); + cfb.FileIndex.map(function(fi, idx) { + return [fi, cfb.FullPaths[idx]]; + }).forEach(function(row) { + var fi = row[0], fp = row[1]; + if (fi.type != 2) + return; + if (!fi.name.match(/\.iwa/)) + return; + var old_content = fi.content; + var raw1 = decompress_iwa_file(old_content); + var x2 = parse_iwa_file(raw1); + x2.forEach(function(packet2) { + indices.push(packet2.id); + dependents[packet2.id] = { deps: [], location: fp, type: varint_to_i32(packet2.messages[0].meta[1][0].data) }; + }); + }); + indices.sort(function(x2, y2) { + return x2 - y2; + }); + var indices_varint = indices.filter(function(x2) { + return x2 > 1; + }).map(function(x2) { + return [x2, write_varint49(x2)]; + }); + cfb.FileIndex.map(function(fi, idx) { + return [fi, cfb.FullPaths[idx]]; + }).forEach(function(row) { + var fi = row[0], fp = row[1]; + if (!fi.name.match(/\.iwa/)) + return; + var x2 = parse_iwa_file(decompress_iwa_file(fi.content)); + x2.forEach(function(ia) { + ia.messages.forEach(function(m) { + indices_varint.forEach(function(ivi) { + if (ia.messages.some(function(mess) { + return varint_to_i32(mess.meta[1][0].data) != 11006 && u8contains(mess.data, ivi[1]); + })) { + dependents[ivi[0]].deps.push(ia.id); + } + }); + }); + }); + }); + function get_unique_msgid() { + for (var i = 927262; i < 2e6; ++i) + if (!dependents[i]) + return i; + throw new Error("Too many messages"); + } + var entry = CFB.find(cfb, dependents[1].location); + var x = parse_iwa_file(decompress_iwa_file(entry.content)); + var docroot; + for (var xi = 0; xi < x.length; ++xi) { + var packet = x[xi]; + if (packet.id == 1) + docroot = packet; + } + var sheetrootref = parse_TSP_Reference(parse_shallow(docroot.messages[0].data)[1][0].data); + entry = CFB.find(cfb, dependents[sheetrootref].location); + x = parse_iwa_file(decompress_iwa_file(entry.content)); + for (xi = 0; xi < x.length; ++xi) { + packet = x[xi]; + if (packet.id == sheetrootref) + docroot = packet; + } + sheetrootref = parse_TSP_Reference(parse_shallow(docroot.messages[0].data)[2][0].data); + entry = CFB.find(cfb, dependents[sheetrootref].location); + x = parse_iwa_file(decompress_iwa_file(entry.content)); + for (xi = 0; xi < x.length; ++xi) { + packet = x[xi]; + if (packet.id == sheetrootref) + docroot = packet; + } + sheetrootref = parse_TSP_Reference(parse_shallow(docroot.messages[0].data)[2][0].data); + entry = CFB.find(cfb, dependents[sheetrootref].location); + x = parse_iwa_file(decompress_iwa_file(entry.content)); + for (xi = 0; xi < x.length; ++xi) { + packet = x[xi]; + if (packet.id == sheetrootref) + docroot = packet; + } + var pb = parse_shallow(docroot.messages[0].data); + { + pb[6][0].data = write_varint49(range.e.r + 1); + pb[7][0].data = write_varint49(range.e.c + 1); + var cruidsref = parse_TSP_Reference(pb[46][0].data); + var oldbucket = CFB.find(cfb, dependents[cruidsref].location); + var _x = parse_iwa_file(decompress_iwa_file(oldbucket.content)); + { + for (var j = 0; j < _x.length; ++j) { + if (_x[j].id == cruidsref) + break; + } + if (_x[j].id != cruidsref) + throw "Bad ColumnRowUIDMapArchive"; + var cruids = parse_shallow(_x[j].messages[0].data); + cruids[1] = []; + cruids[2] = [], cruids[3] = []; + for (var C = 0; C <= range.e.c; ++C) { + var uuid = []; + uuid[1] = uuid[2] = [{ type: 0, data: write_varint49(C + 420690) }]; + cruids[1].push({ type: 2, data: write_shallow(uuid) }); + cruids[2].push({ type: 0, data: write_varint49(C) }); + cruids[3].push({ type: 0, data: write_varint49(C) }); + } + cruids[4] = []; + cruids[5] = [], cruids[6] = []; + for (var R = 0; R <= range.e.r; ++R) { + uuid = []; + uuid[1] = uuid[2] = [{ type: 0, data: write_varint49(R + 726270) }]; + cruids[4].push({ type: 2, data: write_shallow(uuid) }); + cruids[5].push({ type: 0, data: write_varint49(R) }); + cruids[6].push({ type: 0, data: write_varint49(R) }); + } + _x[j].messages[0].data = write_shallow(cruids); + } + oldbucket.content = compress_iwa_file(write_iwa_file(_x)); + oldbucket.size = oldbucket.content.length; + delete pb[46]; + var store = parse_shallow(pb[4][0].data); + { + store[7][0].data = write_varint49(range.e.r + 1); + var row_headers = parse_shallow(store[1][0].data); + var row_header_ref = parse_TSP_Reference(row_headers[2][0].data); + oldbucket = CFB.find(cfb, dependents[row_header_ref].location); + _x = parse_iwa_file(decompress_iwa_file(oldbucket.content)); + { + if (_x[0].id != row_header_ref) + throw "Bad HeaderStorageBucket"; + var base_bucket = parse_shallow(_x[0].messages[0].data); + for (R = 0; R < data.length; ++R) { + var _bucket = parse_shallow(base_bucket[2][0].data); + _bucket[1][0].data = write_varint49(R); + _bucket[4][0].data = write_varint49(data[R].length); + base_bucket[2][R] = { type: base_bucket[2][0].type, data: write_shallow(_bucket) }; + } + _x[0].messages[0].data = write_shallow(base_bucket); + } + oldbucket.content = compress_iwa_file(write_iwa_file(_x)); + oldbucket.size = oldbucket.content.length; + var col_header_ref = parse_TSP_Reference(store[2][0].data); + oldbucket = CFB.find(cfb, dependents[col_header_ref].location); + _x = parse_iwa_file(decompress_iwa_file(oldbucket.content)); + { + if (_x[0].id != col_header_ref) + throw "Bad HeaderStorageBucket"; + base_bucket = parse_shallow(_x[0].messages[0].data); + for (C = 0; C <= range.e.c; ++C) { + _bucket = parse_shallow(base_bucket[2][0].data); + _bucket[1][0].data = write_varint49(C); + _bucket[4][0].data = write_varint49(range.e.r + 1); + base_bucket[2][C] = { type: base_bucket[2][0].type, data: write_shallow(_bucket) }; + } + _x[0].messages[0].data = write_shallow(base_bucket); + } + oldbucket.content = compress_iwa_file(write_iwa_file(_x)); + oldbucket.size = oldbucket.content.length; + var sstref = parse_TSP_Reference(store[4][0].data); + (function() { + var sentry = CFB.find(cfb, dependents[sstref].location); + var sx = parse_iwa_file(decompress_iwa_file(sentry.content)); + var sstroot; + for (var sxi = 0; sxi < sx.length; ++sxi) { + var packet2 = sx[sxi]; + if (packet2.id == sstref) + sstroot = packet2; + } + var sstdata = parse_shallow(sstroot.messages[0].data); + { + sstdata[3] = []; + var newsst = []; + SST.forEach(function(str, i) { + newsst[1] = [{ type: 0, data: write_varint49(i) }]; + newsst[2] = [{ type: 0, data: write_varint49(1) }]; + newsst[3] = [{ type: 2, data: stru8(str) }]; + sstdata[3].push({ type: 2, data: write_shallow(newsst) }); + }); + } + sstroot.messages[0].data = write_shallow(sstdata); + var sy = write_iwa_file(sx); + var raw32 = compress_iwa_file(sy); + sentry.content = raw32; + sentry.size = sentry.content.length; + })(); + var tile = parse_shallow(store[3][0].data); + { + var t = tile[1][0]; + delete tile[2]; + var tl = parse_shallow(t.data); + { + var tileref = parse_TSP_Reference(tl[2][0].data); + (function() { + var tentry = CFB.find(cfb, dependents[tileref].location); + var tx = parse_iwa_file(decompress_iwa_file(tentry.content)); + var tileroot; + for (var sxi = 0; sxi < tx.length; ++sxi) { + var packet2 = tx[sxi]; + if (packet2.id == tileref) + tileroot = packet2; + } + var tiledata = parse_shallow(tileroot.messages[0].data); + { + delete tiledata[6]; + delete tile[7]; + var rowload = new Uint8Array(tiledata[5][0].data); + tiledata[5] = []; + var cnt = 0; + for (var R2 = 0; R2 <= range.e.r; ++R2) { + var tilerow = parse_shallow(rowload); + cnt += write_tile_row(tilerow, data[R2], SST); + tilerow[1][0].data = write_varint49(R2); + tiledata[5].push({ data: write_shallow(tilerow), type: 2 }); + } + tiledata[1] = [{ type: 0, data: write_varint49(range.e.c + 1) }]; + tiledata[2] = [{ type: 0, data: write_varint49(range.e.r + 1) }]; + tiledata[3] = [{ type: 0, data: write_varint49(cnt) }]; + tiledata[4] = [{ type: 0, data: write_varint49(range.e.r + 1) }]; + } + tileroot.messages[0].data = write_shallow(tiledata); + var ty = write_iwa_file(tx); + var raw32 = compress_iwa_file(ty); + tentry.content = raw32; + tentry.size = tentry.content.length; + })(); + } + t.data = write_shallow(tl); + } + store[3][0].data = write_shallow(tile); + } + pb[4][0].data = write_shallow(store); + } + docroot.messages[0].data = write_shallow(pb); + var y = write_iwa_file(x); + var raw3 = compress_iwa_file(y); + entry.content = raw3; + entry.size = entry.content.length; + return cfb; +} +function fix_opts_func(defaults/*:Array >*/)/*:{(o:any):void}*/ { + return function fix_opts(opts) { + for(var i = 0; i != defaults.length; ++i) { + var d = defaults[i]; + if(opts[d[0]] === undefined) opts[d[0]] = d[1]; + if(d[2] === 'n') opts[d[0]] = Number(opts[d[0]]); + } + }; +} + +function fix_read_opts(opts) { +fix_opts_func([ + ['cellNF', false], /* emit cell number format string as .z */ + ['cellHTML', true], /* emit html string as .h */ + ['cellFormula', true], /* emit formulae as .f */ + ['cellStyles', false], /* emits style/theme as .s */ + ['cellText', true], /* emit formatted text as .w */ + ['cellDates', false], /* emit date cells with type `d` */ + + ['sheetStubs', false], /* emit empty cells */ + ['sheetRows', 0, 'n'], /* read n rows (0 = read all rows) */ + + ['bookDeps', false], /* parse calculation chains */ + ['bookSheets', false], /* only try to get sheet names (no Sheets) */ + ['bookProps', false], /* only try to get properties (no Sheets) */ + ['bookFiles', false], /* include raw file structure (keys, files, cfb) */ + ['bookVBA', false], /* include vba raw data (vbaraw) */ + + ['password',''], /* password */ + ['WTF', false] /* WTF mode (throws errors) */ +])(opts); +} + +function fix_write_opts(opts) { +fix_opts_func([ + ['cellDates', false], /* write date cells with type `d` */ + + ['bookSST', false], /* Generate Shared String Table */ + + ['bookType', 'xlsx'], /* Type of workbook (xlsx/m/b) */ + + ['compression', false], /* Use file compression */ + + ['WTF', false] /* WTF mode (throws errors) */ +])(opts); +} +function get_sheet_type(n/*:string*/)/*:string*/ { + if(RELS.WS.indexOf(n) > -1) return "sheet"; + if(RELS.CS && n == RELS.CS) return "chart"; + if(RELS.DS && n == RELS.DS) return "dialog"; + if(RELS.MS && n == RELS.MS) return "macro"; + return (n && n.length) ? n : "sheet"; +} +function safe_parse_wbrels(wbrels, sheets) { + if(!wbrels) return 0; + try { + wbrels = sheets.map(function pwbr(w) { if(!w.id) w.id = w.strRelID; return [w.name, wbrels['!id'][w.id].Target, get_sheet_type(wbrels['!id'][w.id].Type)]; }); + } catch(e) { return null; } + return !wbrels || wbrels.length === 0 ? null : wbrels; +} + +function safe_parse_sheet(zip, path/*:string*/, relsPath/*:string*/, sheet, idx/*:number*/, sheetRels, sheets, stype/*:string*/, opts, wb, themes, styles) { + try { + sheetRels[sheet]=parse_rels(getzipstr(zip, relsPath, true), path); + var data = getzipdata(zip, path); + var _ws; + switch(stype) { + case 'sheet': _ws = parse_ws(data, path, idx, opts, sheetRels[sheet], wb, themes, styles); break; + case 'chart': _ws = parse_cs(data, path, idx, opts, sheetRels[sheet], wb, themes, styles); + if(!_ws || !_ws['!drawel']) break; + var dfile = resolve_path(_ws['!drawel'].Target, path); + var drelsp = get_rels_path(dfile); + var draw = parse_drawing(getzipstr(zip, dfile, true), parse_rels(getzipstr(zip, drelsp, true), dfile)); + var chartp = resolve_path(draw, dfile); + var crelsp = get_rels_path(chartp); + _ws = parse_chart(getzipstr(zip, chartp, true), chartp, opts, parse_rels(getzipstr(zip, crelsp, true), chartp), wb, _ws); + break; + case 'macro': _ws = parse_ms(data, path, idx, opts, sheetRels[sheet], wb, themes, styles); break; + case 'dialog': _ws = parse_ds(data, path, idx, opts, sheetRels[sheet], wb, themes, styles); break; + default: throw new Error("Unrecognized sheet type " + stype); + } + sheets[sheet] = _ws; + + /* scan rels for comments and threaded comments */ + var tcomments = []; + if(sheetRels && sheetRels[sheet]) keys(sheetRels[sheet]).forEach(function(n) { + var dfile = ""; + if(sheetRels[sheet][n].Type == RELS.CMNT) { + dfile = resolve_path(sheetRels[sheet][n].Target, path); + var comments = parse_cmnt(getzipdata(zip, dfile, true), dfile, opts); + if(!comments || !comments.length) return; + sheet_insert_comments(_ws, comments, false); + } + if(sheetRels[sheet][n].Type == RELS.TCMNT) { + dfile = resolve_path(sheetRels[sheet][n].Target, path); + tcomments = tcomments.concat(parse_tcmnt_xml(getzipdata(zip, dfile, true), opts)); + } + }); + if(tcomments && tcomments.length) sheet_insert_comments(_ws, tcomments, true, opts.people || []); + } catch(e) { if(opts.WTF) throw e; } +} + +function strip_front_slash(x/*:string*/)/*:string*/ { return x.charAt(0) == '/' ? x.slice(1) : x; } + +function parse_zip(zip/*:ZIP*/, opts/*:?ParseOpts*/)/*:Workbook*/ { + make_ssf(); + opts = opts || {}; + fix_read_opts(opts); + + /* OpenDocument Part 3 Section 2.2.1 OpenDocument Package */ + if(safegetzipfile(zip, 'META-INF/manifest.xml')) return parse_ods(zip, opts); + /* UOC */ + if(safegetzipfile(zip, 'objectdata.xml')) return parse_ods(zip, opts); + /* Numbers */ + if(safegetzipfile(zip, 'Index/Document.iwa')) { + if(typeof Uint8Array == "undefined") throw new Error('NUMBERS file parsing requires Uint8Array support'); + if(typeof parse_numbers_iwa != "undefined") { + if(zip.FileIndex) return parse_numbers_iwa(zip); + var _zip = CFB.utils.cfb_new(); + zipentries(zip).forEach(function(e) { zip_add_file(_zip, e, getzipbin(zip, e)); }); + return parse_numbers_iwa(_zip); + } + throw new Error('Unsupported NUMBERS file'); + } + if(!safegetzipfile(zip, '[Content_Types].xml')) { + if(safegetzipfile(zip, 'index.xml.gz')) throw new Error('Unsupported NUMBERS 08 file'); + if(safegetzipfile(zip, 'index.xml')) throw new Error('Unsupported NUMBERS 09 file'); + throw new Error('Unsupported ZIP file'); + } + + var entries = zipentries(zip); + var dir = parse_ct((getzipstr(zip, '[Content_Types].xml')/*:?any*/)); + var xlsb = false; + var sheets, binname; + if(dir.workbooks.length === 0) { + binname = "xl/workbook.xml"; + if(getzipdata(zip,binname, true)) dir.workbooks.push(binname); + } + if(dir.workbooks.length === 0) { + binname = "xl/workbook.bin"; + if(!getzipdata(zip,binname,true)) throw new Error("Could not find workbook"); + dir.workbooks.push(binname); + xlsb = true; + } + if(dir.workbooks[0].slice(-3) == "bin") xlsb = true; + + var themes = ({}/*:any*/); + var styles = ({}/*:any*/); + if(!opts.bookSheets && !opts.bookProps) { + strs = []; + if(dir.sst) try { strs=parse_sst(getzipdata(zip, strip_front_slash(dir.sst)), dir.sst, opts); } catch(e) { if(opts.WTF) throw e; } + + if(opts.cellStyles && dir.themes.length) themes = parse_theme(getzipstr(zip, dir.themes[0].replace(/^\//,''), true)||"",dir.themes[0], opts); + + if(dir.style) styles = parse_sty(getzipdata(zip, strip_front_slash(dir.style)), dir.style, themes, opts); + } + + /*var externbooks = */dir.links.map(function(link) { + try { + var rels = parse_rels(getzipstr(zip, get_rels_path(strip_front_slash(link))), link); + return parse_xlink(getzipdata(zip, strip_front_slash(link)), rels, link, opts); + } catch(e) {} + }); + + var wb = parse_wb(getzipdata(zip, strip_front_slash(dir.workbooks[0])), dir.workbooks[0], opts); + + var props = {}, propdata = ""; + + if(dir.coreprops.length) { + propdata = getzipdata(zip, strip_front_slash(dir.coreprops[0]), true); + if(propdata) props = parse_core_props(propdata); + if(dir.extprops.length !== 0) { + propdata = getzipdata(zip, strip_front_slash(dir.extprops[0]), true); + if(propdata) parse_ext_props(propdata, props, opts); + } + } + + var custprops = {}; + if(!opts.bookSheets || opts.bookProps) { + if (dir.custprops.length !== 0) { + propdata = getzipstr(zip, strip_front_slash(dir.custprops[0]), true); + if(propdata) custprops = parse_cust_props(propdata, opts); + } + } + + var out = ({}/*:any*/); + if(opts.bookSheets || opts.bookProps) { + if(wb.Sheets) sheets = wb.Sheets.map(function pluck(x){ return x.name; }); + else if(props.Worksheets && props.SheetNames.length > 0) sheets=props.SheetNames; + if(opts.bookProps) { out.Props = props; out.Custprops = custprops; } + if(opts.bookSheets && typeof sheets !== 'undefined') out.SheetNames = sheets; + if(opts.bookSheets ? out.SheetNames : opts.bookProps) return out; + } + sheets = {}; + + var deps = {}; + if(opts.bookDeps && dir.calcchain) deps=parse_cc(getzipdata(zip, strip_front_slash(dir.calcchain)),dir.calcchain,opts); + + var i=0; + var sheetRels = ({}/*:any*/); + var path, relsPath; + + { + var wbsheets = wb.Sheets; + props.Worksheets = wbsheets.length; + props.SheetNames = []; + for(var j = 0; j != wbsheets.length; ++j) { + props.SheetNames[j] = wbsheets[j].name; + } + } + + var wbext = xlsb ? "bin" : "xml"; + var wbrelsi = dir.workbooks[0].lastIndexOf("/"); + var wbrelsfile = (dir.workbooks[0].slice(0, wbrelsi+1) + "_rels/" + dir.workbooks[0].slice(wbrelsi+1) + ".rels").replace(/^\//,""); + if(!safegetzipfile(zip, wbrelsfile)) wbrelsfile = 'xl/_rels/workbook.' + wbext + '.rels'; + var wbrels = parse_rels(getzipstr(zip, wbrelsfile, true), wbrelsfile.replace(/_rels.*/, "s5s")); + + if((dir.metadata || []).length >= 1) { + /* TODO: MDX and other types of metadata */ + opts.xlmeta = parse_xlmeta(getzipdata(zip, strip_front_slash(dir.metadata[0])),dir.metadata[0],opts); + } + + if((dir.people || []).length >= 1) { + opts.people = parse_people_xml(getzipdata(zip, strip_front_slash(dir.people[0])),opts); + } + + if(wbrels) wbrels = safe_parse_wbrels(wbrels, wb.Sheets); + + /* Numbers iOS hack */ + var nmode = (getzipdata(zip,"xl/worksheets/sheet.xml",true))?1:0; + wsloop: for(i = 0; i != props.Worksheets; ++i) { + var stype = "sheet"; + if(wbrels && wbrels[i]) { + path = 'xl/' + (wbrels[i][1]).replace(/[\/]?xl\//, ""); + if(!safegetzipfile(zip, path)) path = wbrels[i][1]; + if(!safegetzipfile(zip, path)) path = wbrelsfile.replace(/_rels\/.*$/,"") + wbrels[i][1]; + stype = wbrels[i][2]; + } else { + path = 'xl/worksheets/sheet'+(i+1-nmode)+"." + wbext; + path = path.replace(/sheet0\./,"sheet."); + } + relsPath = path.replace(/^(.*)(\/)([^\/]*)$/, "$1/_rels/$3.rels"); + if(opts && opts.sheets != null) switch(typeof opts.sheets) { + case "number": if(i != opts.sheets) continue wsloop; break; + case "string": if(props.SheetNames[i].toLowerCase() != opts.sheets.toLowerCase()) continue wsloop; break; + default: if(Array.isArray && Array.isArray(opts.sheets)) { + var snjseen = false; + for(var snj = 0; snj != opts.sheets.length; ++snj) { + if(typeof opts.sheets[snj] == "number" && opts.sheets[snj] == i) snjseen=1; + if(typeof opts.sheets[snj] == "string" && opts.sheets[snj].toLowerCase() == props.SheetNames[i].toLowerCase()) snjseen = 1; + } + if(!snjseen) continue wsloop; + } + } + safe_parse_sheet(zip, path, relsPath, props.SheetNames[i], i, sheetRels, sheets, stype, opts, wb, themes, styles); + } + + out = ({ + Directory: dir, + Workbook: wb, + Props: props, + Custprops: custprops, + Deps: deps, + Sheets: sheets, + SheetNames: props.SheetNames, + Strings: strs, + Styles: styles, + Themes: themes, + SSF: dup(table_fmt) + }/*:any*/); + if(opts && opts.bookFiles) { + if(zip.files) { + out.keys = entries; + out.files = zip.files; + } else { + out.keys = []; + out.files = {}; + zip.FullPaths.forEach(function(p, idx) { + p = p.replace(/^Root Entry[\/]/, ""); + out.keys.push(p); + out.files[p] = zip.FileIndex[idx]; + }); + } + } + if(opts && opts.bookVBA) { + if(dir.vba.length > 0) out.vbaraw = getzipdata(zip,strip_front_slash(dir.vba[0]),true); + else if(dir.defaults && dir.defaults.bin === CT_VBA) out.vbaraw = getzipdata(zip, 'xl/vbaProject.bin',true); + } + return out; +} + +/* [MS-OFFCRYPTO] 2.1.1 */ +function parse_xlsxcfb(cfb, _opts/*:?ParseOpts*/)/*:Workbook*/ { + var opts = _opts || {}; + var f = 'Workbook', data = CFB.find(cfb, f); + try { + f = '/!DataSpaces/Version'; + data = CFB.find(cfb, f); if(!data || !data.content) throw new Error("ECMA-376 Encrypted file missing " + f); + /*var version = */parse_DataSpaceVersionInfo(data.content); + + /* 2.3.4.1 */ + f = '/!DataSpaces/DataSpaceMap'; + data = CFB.find(cfb, f); if(!data || !data.content) throw new Error("ECMA-376 Encrypted file missing " + f); + var dsm = parse_DataSpaceMap(data.content); + if(dsm.length !== 1 || dsm[0].comps.length !== 1 || dsm[0].comps[0].t !== 0 || dsm[0].name !== "StrongEncryptionDataSpace" || dsm[0].comps[0].v !== "EncryptedPackage") + throw new Error("ECMA-376 Encrypted file bad " + f); + + /* 2.3.4.2 */ + f = '/!DataSpaces/DataSpaceInfo/StrongEncryptionDataSpace'; + data = CFB.find(cfb, f); if(!data || !data.content) throw new Error("ECMA-376 Encrypted file missing " + f); + var seds = parse_DataSpaceDefinition(data.content); + if(seds.length != 1 || seds[0] != "StrongEncryptionTransform") + throw new Error("ECMA-376 Encrypted file bad " + f); + + /* 2.3.4.3 */ + f = '/!DataSpaces/TransformInfo/StrongEncryptionTransform/!Primary'; + data = CFB.find(cfb, f); if(!data || !data.content) throw new Error("ECMA-376 Encrypted file missing " + f); + /*var hdr = */parse_Primary(data.content); + } catch(e) {} + + f = '/EncryptionInfo'; + data = CFB.find(cfb, f); if(!data || !data.content) throw new Error("ECMA-376 Encrypted file missing " + f); + var einfo = parse_EncryptionInfo(data.content); + + /* 2.3.4.4 */ + f = '/EncryptedPackage'; + data = CFB.find(cfb, f); if(!data || !data.content) throw new Error("ECMA-376 Encrypted file missing " + f); + +/*global decrypt_agile */ +/*:: declare var decrypt_agile:any; */ + if(einfo[0] == 0x04 && typeof decrypt_agile !== 'undefined') return decrypt_agile(einfo[1], data.content, opts.password || "", opts); +/*global decrypt_std76 */ +/*:: declare var decrypt_std76:any; */ + if(einfo[0] == 0x02 && typeof decrypt_std76 !== 'undefined') return decrypt_std76(einfo[1], data.content, opts.password || "", opts); + throw new Error("File is password-protected"); +} + +function write_zip(wb/*:Workbook*/, opts/*:WriteOpts*/)/*:ZIP*/ { + if(opts.bookType == "ods") return write_ods(wb, opts); + if(opts.bookType == "numbers") return write_numbers_iwa(wb, opts); + if(opts.bookType == "xlsb") return write_zip_xlsxb(wb, opts); + return write_zip_xlsx(wb, opts); +} + +/* XLSX and XLSB writing are very similar. Originally they were unified in one + export function. This is horrible for tree shaking in the common case (most + applications need to export files in one format) so this function supports + both formats while write_zip_xlsx only handles XLSX */ +function write_zip_xlsxb(wb/*:Workbook*/, opts/*:WriteOpts*/)/*:ZIP*/ { + _shapeid = 1024; + if(wb && !wb.SSF) { + wb.SSF = dup(table_fmt); + } + if(wb && wb.SSF) { + make_ssf(); SSF_load_table(wb.SSF); + // $FlowIgnore + opts.revssf = evert_num(wb.SSF); opts.revssf[wb.SSF[65535]] = 0; + opts.ssf = wb.SSF; + } + opts.rels = {}; opts.wbrels = {}; + opts.Strings = /*::((*/[]/*:: :any):SST)*/; opts.Strings.Count = 0; opts.Strings.Unique = 0; + if(browser_has_Map) opts.revStrings = new Map(); + else { opts.revStrings = {}; opts.revStrings.foo = []; delete opts.revStrings.foo; } + var wbext = opts.bookType == "xlsb" ? "bin" : "xml"; + var vbafmt = VBAFMTS.indexOf(opts.bookType) > -1; + var ct = new_ct(); + fix_write_opts(opts = opts || {}); + var zip = zip_new(); + var f = "", rId = 0; + + opts.cellXfs = []; + get_cell_style(opts.cellXfs, {}, {revssf:{"General":0}}); + + if(!wb.Props) wb.Props = {}; + + f = "docProps/core.xml"; + zip_add_file(zip, f, write_core_props(wb.Props, opts)); + ct.coreprops.push(f); + add_rels(opts.rels, 2, f, RELS.CORE_PROPS); + + /*::if(!wb.Props) throw "unreachable"; */ + f = "docProps/app.xml"; + if(wb.Props && wb.Props.SheetNames){/* empty */} + else if(!wb.Workbook || !wb.Workbook.Sheets) wb.Props.SheetNames = wb.SheetNames; + else { + var _sn = []; + for(var _i = 0; _i < wb.SheetNames.length; ++_i) + if((wb.Workbook.Sheets[_i]||{}).Hidden != 2) _sn.push(wb.SheetNames[_i]); + wb.Props.SheetNames = _sn; + } + wb.Props.Worksheets = wb.Props.SheetNames.length; + zip_add_file(zip, f, write_ext_props(wb.Props, opts)); + ct.extprops.push(f); + add_rels(opts.rels, 3, f, RELS.EXT_PROPS); + + if(wb.Custprops !== wb.Props && keys(wb.Custprops||{}).length > 0) { + f = "docProps/custom.xml"; + zip_add_file(zip, f, write_cust_props(wb.Custprops, opts)); + ct.custprops.push(f); + add_rels(opts.rels, 4, f, RELS.CUST_PROPS); + } + + for(rId=1;rId <= wb.SheetNames.length; ++rId) { + var wsrels = {'!id':{}}; + var ws = wb.Sheets[wb.SheetNames[rId-1]]; + var _type = (ws || {})["!type"] || "sheet"; + switch(_type) { + case "chart": + /* falls through */ + default: + f = "xl/worksheets/sheet" + rId + "." + wbext; + zip_add_file(zip, f, write_ws(rId-1, f, opts, wb, wsrels)); + ct.sheets.push(f); + add_rels(opts.wbrels, -1, "worksheets/sheet" + rId + "." + wbext, RELS.WS[0]); + } + + if(ws) { + var comments = ws['!comments']; + var need_vml = false; + var cf = ""; + if(comments && comments.length > 0) { + cf = "xl/comments" + rId + "." + wbext; + zip_add_file(zip, cf, write_cmnt(comments, cf, opts)); + ct.comments.push(cf); + add_rels(wsrels, -1, "../comments" + rId + "." + wbext, RELS.CMNT); + need_vml = true; + } + if(ws['!legacy']) { + if(need_vml) zip_add_file(zip, "xl/drawings/vmlDrawing" + (rId) + ".vml", write_comments_vml(rId, ws['!comments'])); + } + delete ws['!comments']; + delete ws['!legacy']; + } + + if(wsrels['!id'].rId1) zip_add_file(zip, get_rels_path(f), write_rels(wsrels)); + } + + if(opts.Strings != null && opts.Strings.length > 0) { + f = "xl/sharedStrings." + wbext; + zip_add_file(zip, f, write_sst(opts.Strings, f, opts)); + ct.strs.push(f); + add_rels(opts.wbrels, -1, "sharedStrings." + wbext, RELS.SST); + } + + f = "xl/workbook." + wbext; + zip_add_file(zip, f, write_wb(wb, f, opts)); + ct.workbooks.push(f); + add_rels(opts.rels, 1, f, RELS.WB); + + /* TODO: something more intelligent with themes */ + + f = "xl/theme/theme1.xml"; + zip_add_file(zip, f, write_theme(wb.Themes, opts)); + ct.themes.push(f); + add_rels(opts.wbrels, -1, "theme/theme1.xml", RELS.THEME); + + /* TODO: something more intelligent with styles */ + + f = "xl/styles." + wbext; + zip_add_file(zip, f, write_sty(wb, f, opts)); + ct.styles.push(f); + add_rels(opts.wbrels, -1, "styles." + wbext, RELS.STY); + + if(wb.vbaraw && vbafmt) { + f = "xl/vbaProject.bin"; + zip_add_file(zip, f, wb.vbaraw); + ct.vba.push(f); + add_rels(opts.wbrels, -1, "vbaProject.bin", RELS.VBA); + } + + f = "xl/metadata." + wbext; + zip_add_file(zip, f, write_xlmeta(f)); + ct.metadata.push(f); + add_rels(opts.wbrels, -1, "metadata." + wbext, RELS.XLMETA); + + zip_add_file(zip, "[Content_Types].xml", write_ct(ct, opts)); + zip_add_file(zip, '_rels/.rels', write_rels(opts.rels)); + zip_add_file(zip, 'xl/_rels/workbook.' + wbext + '.rels', write_rels(opts.wbrels)); + + delete opts.revssf; delete opts.ssf; + return zip; +} + +function write_zip_xlsx(wb/*:Workbook*/, opts/*:WriteOpts*/)/*:ZIP*/ { + _shapeid = 1024; + if(wb && !wb.SSF) { + wb.SSF = dup(table_fmt); + } + if(wb && wb.SSF) { + make_ssf(); SSF_load_table(wb.SSF); + // $FlowIgnore + opts.revssf = evert_num(wb.SSF); opts.revssf[wb.SSF[65535]] = 0; + opts.ssf = wb.SSF; + } + opts.rels = {}; opts.wbrels = {}; + opts.Strings = /*::((*/[]/*:: :any):SST)*/; opts.Strings.Count = 0; opts.Strings.Unique = 0; + if(browser_has_Map) opts.revStrings = new Map(); + else { opts.revStrings = {}; opts.revStrings.foo = []; delete opts.revStrings.foo; } + var wbext = "xml"; + var vbafmt = VBAFMTS.indexOf(opts.bookType) > -1; + var ct = new_ct(); + fix_write_opts(opts = opts || {}); + var zip = zip_new(); + var f = "", rId = 0; + + opts.cellXfs = []; + get_cell_style(opts.cellXfs, {}, {revssf:{"General":0}}); + + if(!wb.Props) wb.Props = {}; + + f = "docProps/core.xml"; + zip_add_file(zip, f, write_core_props(wb.Props, opts)); + ct.coreprops.push(f); + add_rels(opts.rels, 2, f, RELS.CORE_PROPS); + + /*::if(!wb.Props) throw "unreachable"; */ + f = "docProps/app.xml"; + if(wb.Props && wb.Props.SheetNames){/* empty */} + else if(!wb.Workbook || !wb.Workbook.Sheets) wb.Props.SheetNames = wb.SheetNames; + else { + var _sn = []; + for(var _i = 0; _i < wb.SheetNames.length; ++_i) + if((wb.Workbook.Sheets[_i]||{}).Hidden != 2) _sn.push(wb.SheetNames[_i]); + wb.Props.SheetNames = _sn; + } + wb.Props.Worksheets = wb.Props.SheetNames.length; + zip_add_file(zip, f, write_ext_props(wb.Props, opts)); + ct.extprops.push(f); + add_rels(opts.rels, 3, f, RELS.EXT_PROPS); + + if(wb.Custprops !== wb.Props && keys(wb.Custprops||{}).length > 0) { + f = "docProps/custom.xml"; + zip_add_file(zip, f, write_cust_props(wb.Custprops, opts)); + ct.custprops.push(f); + add_rels(opts.rels, 4, f, RELS.CUST_PROPS); + } + + var people = ["SheetJ5"]; + opts.tcid = 0; + + for(rId=1;rId <= wb.SheetNames.length; ++rId) { + var wsrels = {'!id':{}}; + var ws = wb.Sheets[wb.SheetNames[rId-1]]; + var _type = (ws || {})["!type"] || "sheet"; + switch(_type) { + case "chart": + /* falls through */ + default: + f = "xl/worksheets/sheet" + rId + "." + wbext; + zip_add_file(zip, f, write_ws_xml(rId-1, opts, wb, wsrels)); + ct.sheets.push(f); + add_rels(opts.wbrels, -1, "worksheets/sheet" + rId + "." + wbext, RELS.WS[0]); + } + + if(ws) { + var comments = ws['!comments']; + var need_vml = false; + var cf = ""; + if(comments && comments.length > 0) { + var needtc = false; + comments.forEach(function(carr) { + carr[1].forEach(function(c) { if(c.T == true) needtc = true; }); + }); + if(needtc) { + cf = "xl/threadedComments/threadedComment" + rId + "." + wbext; + zip_add_file(zip, cf, write_tcmnt_xml(comments, people, opts)); + ct.threadedcomments.push(cf); + add_rels(wsrels, -1, "../threadedComments/threadedComment" + rId + "." + wbext, RELS.TCMNT); + } + + cf = "xl/comments" + rId + "." + wbext; + zip_add_file(zip, cf, write_comments_xml(comments, opts)); + ct.comments.push(cf); + add_rels(wsrels, -1, "../comments" + rId + "." + wbext, RELS.CMNT); + need_vml = true; + } + if(ws['!legacy']) { + if(need_vml) zip_add_file(zip, "xl/drawings/vmlDrawing" + (rId) + ".vml", write_comments_vml(rId, ws['!comments'])); + } + delete ws['!comments']; + delete ws['!legacy']; + } + + if(wsrels['!id'].rId1) zip_add_file(zip, get_rels_path(f), write_rels(wsrels)); + } + + if(opts.Strings != null && opts.Strings.length > 0) { + f = "xl/sharedStrings." + wbext; + zip_add_file(zip, f, write_sst_xml(opts.Strings, opts)); + ct.strs.push(f); + add_rels(opts.wbrels, -1, "sharedStrings." + wbext, RELS.SST); + } + + f = "xl/workbook." + wbext; + zip_add_file(zip, f, write_wb_xml(wb, opts)); + ct.workbooks.push(f); + add_rels(opts.rels, 1, f, RELS.WB); + + /* TODO: something more intelligent with themes */ + + f = "xl/theme/theme1.xml"; + zip_add_file(zip, f, write_theme(wb.Themes, opts)); + ct.themes.push(f); + add_rels(opts.wbrels, -1, "theme/theme1.xml", RELS.THEME); + + /* TODO: something more intelligent with styles */ + + f = "xl/styles." + wbext; + zip_add_file(zip, f, write_sty_xml(wb, opts)); + ct.styles.push(f); + add_rels(opts.wbrels, -1, "styles." + wbext, RELS.STY); + + if(wb.vbaraw && vbafmt) { + f = "xl/vbaProject.bin"; + zip_add_file(zip, f, wb.vbaraw); + ct.vba.push(f); + add_rels(opts.wbrels, -1, "vbaProject.bin", RELS.VBA); + } + + f = "xl/metadata." + wbext; + zip_add_file(zip, f, write_xlmeta_xml()); + ct.metadata.push(f); + add_rels(opts.wbrels, -1, "metadata." + wbext, RELS.XLMETA); + + if(people.length > 1) { + f = "xl/persons/person.xml"; + zip_add_file(zip, f, write_people_xml(people, opts)); + ct.people.push(f); + add_rels(opts.wbrels, -1, "persons/person.xml", RELS.PEOPLE); + } + + zip_add_file(zip, "[Content_Types].xml", write_ct(ct, opts)); + zip_add_file(zip, '_rels/.rels', write_rels(opts.rels)); + zip_add_file(zip, 'xl/_rels/workbook.' + wbext + '.rels', write_rels(opts.wbrels)); + + delete opts.revssf; delete opts.ssf; + return zip; +} + +function firstbyte(f/*:RawData*/,o/*:?TypeOpts*/)/*:Array*/ { + var x = ""; + switch((o||{}).type || "base64") { + case 'buffer': return [f[0], f[1], f[2], f[3], f[4], f[5], f[6], f[7]]; + case 'base64': x = Base64_decode(f.slice(0,12)); break; + case 'binary': x = f; break; + case 'array': return [f[0], f[1], f[2], f[3], f[4], f[5], f[6], f[7]]; + default: throw new Error("Unrecognized type " + (o && o.type || "undefined")); + } + return [x.charCodeAt(0), x.charCodeAt(1), x.charCodeAt(2), x.charCodeAt(3), x.charCodeAt(4), x.charCodeAt(5), x.charCodeAt(6), x.charCodeAt(7)]; +} + +function read_cfb(cfb/*:CFBContainer*/, opts/*:?ParseOpts*/)/*:Workbook*/ { + if(CFB.find(cfb, "EncryptedPackage")) return parse_xlsxcfb(cfb, opts); + return parse_xlscfb(cfb, opts); +} + +function read_zip(data/*:RawData*/, opts/*:?ParseOpts*/)/*:Workbook*/ { + var zip, d = data; + var o = opts||{}; + if(!o.type) o.type = (has_buf && Buffer.isBuffer(data)) ? "buffer" : "base64"; + zip = zip_read(d, o); + return parse_zip(zip, o); +} + +function read_plaintext(data/*:string*/, o/*:ParseOpts*/)/*:Workbook*/ { + var i = 0; + main: while(i < data.length) switch(data.charCodeAt(i)) { + case 0x0A: case 0x0D: case 0x20: ++i; break; + case 0x3C: return parse_xlml(data.slice(i),o); + default: break main; + } + return PRN.to_workbook(data, o); +} + +function read_plaintext_raw(data/*:RawData*/, o/*:ParseOpts*/)/*:Workbook*/ { + var str = "", bytes = firstbyte(data, o); + switch(o.type) { + case 'base64': str = Base64_decode(data); break; + case 'binary': str = data; break; + case 'buffer': str = data.toString('binary'); break; + case 'array': str = cc2str(data); break; + default: throw new Error("Unrecognized type " + o.type); + } + if(bytes[0] == 0xEF && bytes[1] == 0xBB && bytes[2] == 0xBF) str = utf8read(str); + o.type = "binary"; + return read_plaintext(str, o); +} + +function read_utf16(data/*:RawData*/, o/*:ParseOpts*/)/*:Workbook*/ { + var d = data; + if(o.type == 'base64') d = Base64_decode(d); + d = $cptable.utils.decode(1200, d.slice(2), 'str'); + o.type = "binary"; + return read_plaintext(d, o); +} + +function bstrify(data/*:string*/)/*:string*/ { + return !data.match(/[^\x00-\x7F]/) ? data : utf8write(data); +} + +function read_prn(data, d, o, str) { + if(str) { o.type = "string"; return PRN.to_workbook(data, o); } + return PRN.to_workbook(d, o); +} + +function readSync(data/*:RawData*/, opts/*:?ParseOpts*/)/*:Workbook*/ { + reset_cp(); + var o = opts||{}; + if(typeof ArrayBuffer !== 'undefined' && data instanceof ArrayBuffer) return readSync(new Uint8Array(data), (o = dup(o), o.type = "array", o)); + if(typeof Uint8Array !== 'undefined' && data instanceof Uint8Array && !o.type) o.type = typeof Deno !== "undefined" ? "buffer" : "array"; + var d = data, n = [0,0,0,0], str = false; + if(o.cellStyles) { o.cellNF = true; o.sheetStubs = true; } + _ssfopts = {}; + if(o.dateNF) _ssfopts.dateNF = o.dateNF; + if(!o.type) o.type = (has_buf && Buffer.isBuffer(data)) ? "buffer" : "base64"; + if(o.type == "file") { o.type = has_buf ? "buffer" : "binary"; d = read_binary(data); if(typeof Uint8Array !== 'undefined' && !has_buf) o.type = "array"; } + if(o.type == "string") { str = true; o.type = "binary"; o.codepage = 65001; d = bstrify(data); } + if(o.type == 'array' && typeof Uint8Array !== 'undefined' && data instanceof Uint8Array && typeof ArrayBuffer !== 'undefined') { + // $FlowIgnore + var ab=new ArrayBuffer(3), vu=new Uint8Array(ab); vu.foo="bar"; + // $FlowIgnore + if(!vu.foo) {o=dup(o); o.type='array'; return readSync(ab2a(d), o);} + } + switch((n = firstbyte(d, o))[0]) { + case 0xD0: if(n[1] === 0xCF && n[2] === 0x11 && n[3] === 0xE0 && n[4] === 0xA1 && n[5] === 0xB1 && n[6] === 0x1A && n[7] === 0xE1) return read_cfb(CFB.read(d, o), o); break; + case 0x09: if(n[1] <= 0x08) return parse_xlscfb(d, o); break; + case 0x3C: return parse_xlml(d, o); + case 0x49: + if(n[1] === 0x49 && n[2] === 0x2a && n[3] === 0x00) throw new Error("TIFF Image File is not a spreadsheet"); + if(n[1] === 0x44) return read_wb_ID(d, o); + break; + case 0x54: if(n[1] === 0x41 && n[2] === 0x42 && n[3] === 0x4C) return DIF.to_workbook(d, o); break; + case 0x50: return (n[1] === 0x4B && n[2] < 0x09 && n[3] < 0x09) ? read_zip(d, o) : read_prn(data, d, o, str); + case 0xEF: return n[3] === 0x3C ? parse_xlml(d, o) : read_prn(data, d, o, str); + case 0xFF: + if(n[1] === 0xFE) { return read_utf16(d, o); } + else if(n[1] === 0x00 && n[2] === 0x02 && n[3] === 0x00) return WK_.to_workbook(d, o); + break; + case 0x00: + if(n[1] === 0x00) { + if(n[2] >= 0x02 && n[3] === 0x00) return WK_.to_workbook(d, o); + if(n[2] === 0x00 && (n[3] === 0x08 || n[3] === 0x09)) return WK_.to_workbook(d, o); + } + break; + case 0x03: case 0x83: case 0x8B: case 0x8C: return DBF.to_workbook(d, o); + case 0x7B: if(n[1] === 0x5C && n[2] === 0x72 && n[3] === 0x74) return RTF.to_workbook(d, o); break; + case 0x0A: case 0x0D: case 0x20: return read_plaintext_raw(d, o); + case 0x89: if(n[1] === 0x50 && n[2] === 0x4E && n[3] === 0x47) throw new Error("PNG Image File is not a spreadsheet"); break; + } + if(DBF_SUPPORTED_VERSIONS.indexOf(n[0]) > -1 && n[2] <= 12 && n[3] <= 31) return DBF.to_workbook(d, o); + return read_prn(data, d, o, str); +} + +function readFileSync(filename/*:string*/, opts/*:?ParseOpts*/)/*:Workbook*/ { + var o = opts||{}; o.type = 'file'; + return readSync(filename, o); +} +function write_cfb_ctr(cfb/*:CFBContainer*/, o/*:WriteOpts*/)/*:any*/ { + switch(o.type) { + case "base64": case "binary": break; + case "buffer": case "array": o.type = ""; break; + case "file": return write_dl(o.file, CFB.write(cfb, {type:has_buf ? 'buffer' : ""})); + case "string": throw new Error("'string' output type invalid for '" + o.bookType + "' files"); + default: throw new Error("Unrecognized type " + o.type); + } + return CFB.write(cfb, o); +} + +/*:: declare var encrypt_agile:any; */ +function write_zip_type(wb/*:Workbook*/, opts/*:?WriteOpts*/)/*:any*/ { + var o = dup(opts||{}); + var z = write_zip(wb, o); + return write_zip_denouement(z, o); +} +function write_zip_typeXLSX(wb/*:Workbook*/, opts/*:?WriteOpts*/)/*:any*/ { + var o = dup(opts||{}); + var z = write_zip_xlsx(wb, o); + return write_zip_denouement(z, o); +} +function write_zip_denouement(z/*:any*/, o/*:?WriteOpts*/)/*:any*/ { + var oopts = {}; + var ftype = has_buf ? "nodebuffer" : (typeof Uint8Array !== "undefined" ? "array" : "string"); + if(o.compression) oopts.compression = 'DEFLATE'; + if(o.password) oopts.type = ftype; + else switch(o.type) { + case "base64": oopts.type = "base64"; break; + case "binary": oopts.type = "string"; break; + case "string": throw new Error("'string' output type invalid for '" + o.bookType + "' files"); + case "buffer": + case "file": oopts.type = ftype; break; + default: throw new Error("Unrecognized type " + o.type); + } + var out = z.FullPaths ? CFB.write(z, {fileType:"zip", type: /*::(*/{"nodebuffer": "buffer", "string": "binary"}/*:: :any)*/[oopts.type] || oopts.type, compression: !!o.compression}) : z.generate(oopts); + if(typeof Deno !== "undefined") { + if(typeof out == "string") { + if(o.type == "binary" || o.type == "base64") return out; + out = new Uint8Array(s2ab(out)); + } + } +/*jshint -W083 */ + if(o.password && typeof encrypt_agile !== 'undefined') return write_cfb_ctr(encrypt_agile(out, o.password), o); // eslint-disable-line no-undef +/*jshint +W083 */ + if(o.type === "file") return write_dl(o.file, out); + return o.type == "string" ? utf8read(/*::(*/out/*:: :any)*/) : out; +} + +function write_cfb_type(wb/*:Workbook*/, opts/*:?WriteOpts*/)/*:any*/ { + var o = opts||{}; + var cfb/*:CFBContainer*/ = write_xlscfb(wb, o); + return write_cfb_ctr(cfb, o); +} + +function write_string_type(out/*:string*/, opts/*:WriteOpts*/, bom/*:?string*/)/*:any*/ { + if(!bom) bom = ""; + var o = bom + out; + switch(opts.type) { + case "base64": return Base64_encode(utf8write(o)); + case "binary": return utf8write(o); + case "string": return out; + case "file": return write_dl(opts.file, o, 'utf8'); + case "buffer": { + if(has_buf) return Buffer_from(o, 'utf8'); + else if(typeof TextEncoder !== "undefined") return new TextEncoder().encode(o); + else return write_string_type(o, {type:'binary'}).split("").map(function(c) { return c.charCodeAt(0); }); + } + } + throw new Error("Unrecognized type " + opts.type); +} + +function write_stxt_type(out/*:string*/, opts/*:WriteOpts*/)/*:any*/ { + switch(opts.type) { + case "base64": return Base64_encode(out); + case "binary": return out; + case "string": return out; /* override in sheet_to_txt */ + case "file": return write_dl(opts.file, out, 'binary'); + case "buffer": { + if(has_buf) return Buffer_from(out, 'binary'); + else return out.split("").map(function(c) { return c.charCodeAt(0); }); + } + } + throw new Error("Unrecognized type " + opts.type); +} + +/* TODO: test consistency */ +function write_binary_type(out, opts/*:WriteOpts*/)/*:any*/ { + switch(opts.type) { + case "string": + case "base64": + case "binary": + var bstr = ""; + // $FlowIgnore + for(var i = 0; i < out.length; ++i) bstr += String.fromCharCode(out[i]); + return opts.type == 'base64' ? Base64_encode(bstr) : opts.type == 'string' ? utf8read(bstr) : bstr; + case "file": return write_dl(opts.file, out); + case "buffer": return out; + default: throw new Error("Unrecognized type " + opts.type); + } +} + +function writeSyncXLSX(wb/*:Workbook*/, opts/*:?WriteOpts*/) { + reset_cp(); + check_wb(wb); + var o = dup(opts||{}); + if(o.cellStyles) { o.cellNF = true; o.sheetStubs = true; } + if(o.type == "array") { o.type = "binary"; var out/*:string*/ = (writeSyncXLSX(wb, o)/*:any*/); o.type = "array"; return s2ab(out); } + return write_zip_typeXLSX(wb, o); +} + +function writeSync(wb/*:Workbook*/, opts/*:?WriteOpts*/) { + reset_cp(); + check_wb(wb); + var o = dup(opts||{}); + if(o.cellStyles) { o.cellNF = true; o.sheetStubs = true; } + if(o.type == "array") { o.type = "binary"; var out/*:string*/ = (writeSync(wb, o)/*:any*/); o.type = "array"; return s2ab(out); } + var idx = 0; + if(o.sheet) { + if(typeof o.sheet == "number") idx = o.sheet; + else idx = wb.SheetNames.indexOf(o.sheet); + if(!wb.SheetNames[idx]) throw new Error("Sheet not found: " + o.sheet + " : " + (typeof o.sheet)); + } + switch(o.bookType || 'xlsb') { + case 'xml': + case 'xlml': return write_string_type(write_xlml(wb, o), o); + case 'slk': + case 'sylk': return write_string_type(SYLK.from_sheet(wb.Sheets[wb.SheetNames[idx]], o), o); + case 'htm': + case 'html': return write_string_type(sheet_to_html(wb.Sheets[wb.SheetNames[idx]], o), o); + case 'txt': return write_stxt_type(sheet_to_txt(wb.Sheets[wb.SheetNames[idx]], o), o); + case 'csv': return write_string_type(sheet_to_csv(wb.Sheets[wb.SheetNames[idx]], o), o, "\ufeff"); + case 'dif': return write_string_type(DIF.from_sheet(wb.Sheets[wb.SheetNames[idx]], o), o); + case 'dbf': return write_binary_type(DBF.from_sheet(wb.Sheets[wb.SheetNames[idx]], o), o); + case 'prn': return write_string_type(PRN.from_sheet(wb.Sheets[wb.SheetNames[idx]], o), o); + case 'rtf': return write_string_type(RTF.from_sheet(wb.Sheets[wb.SheetNames[idx]], o), o); + case 'eth': return write_string_type(ETH.from_sheet(wb.Sheets[wb.SheetNames[idx]], o), o); + case 'fods': return write_string_type(write_ods(wb, o), o); + case 'wk1': return write_binary_type(WK_.sheet_to_wk1(wb.Sheets[wb.SheetNames[idx]], o), o); + case 'wk3': return write_binary_type(WK_.book_to_wk3(wb, o), o); + case 'biff2': if(!o.biff) o.biff = 2; /* falls through */ + case 'biff3': if(!o.biff) o.biff = 3; /* falls through */ + case 'biff4': if(!o.biff) o.biff = 4; return write_binary_type(write_biff_buf(wb, o), o); + case 'biff5': if(!o.biff) o.biff = 5; /* falls through */ + case 'biff8': + case 'xla': + case 'xls': if(!o.biff) o.biff = 8; return write_cfb_type(wb, o); + case 'xlsx': + case 'xlsm': + case 'xlam': + case 'xlsb': + case 'numbers': + case 'ods': return write_zip_type(wb, o); + default: throw new Error ("Unrecognized bookType |" + o.bookType + "|"); + } +} + +function resolve_book_type(o/*:WriteFileOpts*/) { + if(o.bookType) return; + var _BT = { + "xls": "biff8", + "htm": "html", + "slk": "sylk", + "socialcalc": "eth", + "Sh33tJS": "WTF" + }; + var ext = o.file.slice(o.file.lastIndexOf(".")).toLowerCase(); + if(ext.match(/^\.[a-z]+$/)) o.bookType = ext.slice(1); + o.bookType = _BT[o.bookType] || o.bookType; +} + +function writeFileSync(wb/*:Workbook*/, filename/*:string*/, opts/*:?WriteFileOpts*/) { + var o = opts||{}; o.type = 'file'; + o.file = filename; + resolve_book_type(o); + return writeSync(wb, o); +} + +function writeFileSyncXLSX(wb/*:Workbook*/, filename/*:string*/, opts/*:?WriteFileOpts*/) { + var o = opts||{}; o.type = 'file'; + o.file = filename; + resolve_book_type(o); + return writeSyncXLSX(wb, o); +} + + +function writeFileAsync(filename/*:string*/, wb/*:Workbook*/, opts/*:?WriteFileOpts*/, cb/*:?(e?:ErrnoError)=>void*/) { + var o = opts||{}; o.type = 'file'; + o.file = filename; + resolve_book_type(o); + o.type = 'buffer'; + var _cb = cb; if(!(_cb instanceof Function)) _cb = (opts/*:any*/); + return _fs.writeFile(filename, writeSync(wb, o), _cb); +} +/*:: +type MJRObject = { + row: any; + isempty: boolean; +}; +*/ +function make_json_row(sheet/*:Worksheet*/, r/*:Range*/, R/*:number*/, cols/*:Array*/, header/*:number*/, hdr/*:Array*/, dense/*:boolean*/, o/*:Sheet2JSONOpts*/)/*:MJRObject*/ { + var rr = encode_row(R); + var defval = o.defval, raw = o.raw || !Object.prototype.hasOwnProperty.call(o, "raw"); + var isempty = true; + var row/*:any*/ = (header === 1) ? [] : {}; + if(header !== 1) { + if(Object.defineProperty) try { Object.defineProperty(row, '__rowNum__', {value:R, enumerable:false}); } catch(e) { row.__rowNum__ = R; } + else row.__rowNum__ = R; + } + if(!dense || sheet[R]) for (var C = r.s.c; C <= r.e.c; ++C) { + var val = dense ? sheet[R][C] : sheet[cols[C] + rr]; + if(val === undefined || val.t === undefined) { + if(defval === undefined) continue; + if(hdr[C] != null) { row[hdr[C]] = defval; } + continue; + } + var v = val.v; + switch(val.t){ + case 'z': if(v == null) break; continue; + case 'e': v = (v == 0 ? null : void 0); break; + case 's': case 'd': case 'b': case 'n': break; + default: throw new Error('unrecognized type ' + val.t); + } + if(hdr[C] != null) { + if(v == null) { + if(val.t == "e" && v === null) row[hdr[C]] = null; + else if(defval !== undefined) row[hdr[C]] = defval; + else if(raw && v === null) row[hdr[C]] = null; + else continue; + } else { + row[hdr[C]] = raw && (val.t !== "n" || (val.t === "n" && o.rawNumbers !== false)) ? v : format_cell(val,v,o); + } + if(v != null) isempty = false; + } + } + return { row: row, isempty: isempty }; +} + + +function sheet_to_json(sheet/*:Worksheet*/, opts/*:?Sheet2JSONOpts*/) { + if(sheet == null || sheet["!ref"] == null) return []; + var val = {t:'n',v:0}, header = 0, offset = 1, hdr/*:Array*/ = [], v=0, vv=""; + var r = {s:{r:0,c:0},e:{r:0,c:0}}; + var o = opts || {}; + var range = o.range != null ? o.range : sheet["!ref"]; + if(o.header === 1) header = 1; + else if(o.header === "A") header = 2; + else if(Array.isArray(o.header)) header = 3; + else if(o.header == null) header = 0; + switch(typeof range) { + case 'string': r = safe_decode_range(range); break; + case 'number': r = safe_decode_range(sheet["!ref"]); r.s.r = range; break; + default: r = range; + } + if(header > 0) offset = 0; + var rr = encode_row(r.s.r); + var cols/*:Array*/ = []; + var out/*:Array*/ = []; + var outi = 0, counter = 0; + var dense = Array.isArray(sheet); + var R = r.s.r, C = 0; + var header_cnt = {}; + if(dense && !sheet[R]) sheet[R] = []; + var colinfo/*:Array*/ = o.skipHidden && sheet["!cols"] || []; + var rowinfo/*:Array*/ = o.skipHidden && sheet["!rows"] || []; + for(C = r.s.c; C <= r.e.c; ++C) { + if(((colinfo[C]||{}).hidden)) continue; + cols[C] = encode_col(C); + val = dense ? sheet[R][C] : sheet[cols[C] + rr]; + switch(header) { + case 1: hdr[C] = C - r.s.c; break; + case 2: hdr[C] = cols[C]; break; + case 3: hdr[C] = o.header[C - r.s.c]; break; + default: + if(val == null) val = {w: "__EMPTY", t: "s"}; + vv = v = format_cell(val, null, o); + counter = header_cnt[v] || 0; + if(!counter) header_cnt[v] = 1; + else { + do { vv = v + "_" + (counter++); } while(header_cnt[vv]); header_cnt[v] = counter; + header_cnt[vv] = 1; + } + hdr[C] = vv; + } + } + for (R = r.s.r + offset; R <= r.e.r; ++R) { + if ((rowinfo[R]||{}).hidden) continue; + var row = make_json_row(sheet, r, R, cols, header, hdr, dense, o); + if((row.isempty === false) || (header === 1 ? o.blankrows !== false : !!o.blankrows)) out[outi++] = row.row; + } + out.length = outi; + return out; +} + +var qreg = /"/g; +function make_csv_row(sheet/*:Worksheet*/, r/*:Range*/, R/*:number*/, cols/*:Array*/, fs/*:number*/, rs/*:number*/, FS/*:string*/, o/*:Sheet2CSVOpts*/)/*:?string*/ { + var isempty = true; + var row/*:Array*/ = [], txt = "", rr = encode_row(R); + for(var C = r.s.c; C <= r.e.c; ++C) { + if (!cols[C]) continue; + var val = o.dense ? (sheet[R]||[])[C]: sheet[cols[C] + rr]; + if(val == null) txt = ""; + else if(val.v != null) { + isempty = false; + txt = ''+(o.rawNumbers && val.t == "n" ? val.v : format_cell(val, null, o)); + for(var i = 0, cc = 0; i !== txt.length; ++i) if((cc = txt.charCodeAt(i)) === fs || cc === rs || cc === 34 || o.forceQuotes) {txt = "\"" + txt.replace(qreg, '""') + "\""; break; } + if(txt == "ID") txt = '"ID"'; + } else if(val.f != null && !val.F) { + isempty = false; + txt = '=' + val.f; if(txt.indexOf(",") >= 0) txt = '"' + txt.replace(qreg, '""') + '"'; + } else txt = ""; + /* NOTE: Excel CSV does not support array formulae */ + row.push(txt); + } + if(o.blankrows === false && isempty) return null; + return row.join(FS); +} + +function sheet_to_csv(sheet/*:Worksheet*/, opts/*:?Sheet2CSVOpts*/)/*:string*/ { + var out/*:Array*/ = []; + var o = opts == null ? {} : opts; + if(sheet == null || sheet["!ref"] == null) return ""; + var r = safe_decode_range(sheet["!ref"]); + var FS = o.FS !== undefined ? o.FS : ",", fs = FS.charCodeAt(0); + var RS = o.RS !== undefined ? o.RS : "\n", rs = RS.charCodeAt(0); + var endregex = new RegExp((FS=="|" ? "\\|" : FS)+"+$"); + var row = "", cols/*:Array*/ = []; + o.dense = Array.isArray(sheet); + var colinfo/*:Array*/ = o.skipHidden && sheet["!cols"] || []; + var rowinfo/*:Array*/ = o.skipHidden && sheet["!rows"] || []; + for(var C = r.s.c; C <= r.e.c; ++C) if (!((colinfo[C]||{}).hidden)) cols[C] = encode_col(C); + var w = 0; + for(var R = r.s.r; R <= r.e.r; ++R) { + if ((rowinfo[R]||{}).hidden) continue; + row = make_csv_row(sheet, r, R, cols, fs, rs, FS, o); + if(row == null) { continue; } + if(o.strip) row = row.replace(endregex,""); + if(row || (o.blankrows !== false)) out.push((w++ ? RS : "") + row); + } + delete o.dense; + return out.join(""); +} + +function sheet_to_txt(sheet/*:Worksheet*/, opts/*:?Sheet2CSVOpts*/) { + if(!opts) opts = {}; opts.FS = "\t"; opts.RS = "\n"; + var s = sheet_to_csv(sheet, opts); + if(typeof $cptable == 'undefined' || opts.type == 'string') return s; + var o = $cptable.utils.encode(1200, s, 'str'); + return String.fromCharCode(255) + String.fromCharCode(254) + o; +} + +function sheet_to_formulae(sheet/*:Worksheet*/)/*:Array*/ { + var y = "", x, val=""; + if(sheet == null || sheet["!ref"] == null) return []; + var r = safe_decode_range(sheet['!ref']), rr = "", cols/*:Array*/ = [], C; + var cmds/*:Array*/ = []; + var dense = Array.isArray(sheet); + for(C = r.s.c; C <= r.e.c; ++C) cols[C] = encode_col(C); + for(var R = r.s.r; R <= r.e.r; ++R) { + rr = encode_row(R); + for(C = r.s.c; C <= r.e.c; ++C) { + y = cols[C] + rr; + x = dense ? (sheet[R]||[])[C] : sheet[y]; + val = ""; + if(x === undefined) continue; + else if(x.F != null) { + y = x.F; + if(!x.f) continue; + val = x.f; + if(y.indexOf(":") == -1) y = y + ":" + y; + } + if(x.f != null) val = x.f; + else if(x.t == 'z') continue; + else if(x.t == 'n' && x.v != null) val = "" + x.v; + else if(x.t == 'b') val = x.v ? "TRUE" : "FALSE"; + else if(x.w !== undefined) val = "'" + x.w; + else if(x.v === undefined) continue; + else if(x.t == 's') val = "'" + x.v; + else val = ""+x.v; + cmds[cmds.length] = y + "=" + val; + } + } + return cmds; +} + +function sheet_add_json(_ws/*:?Worksheet*/, js/*:Array*/, opts)/*:Worksheet*/ { + var o = opts || {}; + var offset = +!o.skipHeader; + var ws/*:Worksheet*/ = _ws || ({}/*:any*/); + var _R = 0, _C = 0; + if(ws && o.origin != null) { + if(typeof o.origin == 'number') _R = o.origin; + else { + var _origin/*:CellAddress*/ = typeof o.origin == "string" ? decode_cell(o.origin) : o.origin; + _R = _origin.r; _C = _origin.c; + } + } + var cell/*:Cell*/; + var range/*:Range*/ = ({s: {c:0, r:0}, e: {c:_C, r:_R + js.length - 1 + offset}}/*:any*/); + if(ws['!ref']) { + var _range = safe_decode_range(ws['!ref']); + range.e.c = Math.max(range.e.c, _range.e.c); + range.e.r = Math.max(range.e.r, _range.e.r); + if(_R == -1) { _R = _range.e.r + 1; range.e.r = _R + js.length - 1 + offset; } + } else { + if(_R == -1) { _R = 0; range.e.r = js.length - 1 + offset; } + } + var hdr/*:Array*/ = o.header || [], C = 0; + + js.forEach(function (JS, R/*:number*/) { + keys(JS).forEach(function(k) { + if((C=hdr.indexOf(k)) == -1) hdr[C=hdr.length] = k; + var v = JS[k]; + var t = 'z'; + var z = ""; + var ref = encode_cell({c:_C + C,r:_R + R + offset}); + cell = ws_get_cell_stub(ws, ref); + if(v && typeof v === 'object' && !(v instanceof Date)){ + ws[ref] = v; + } else { + if(typeof v == 'number') t = 'n'; + else if(typeof v == 'boolean') t = 'b'; + else if(typeof v == 'string') t = 's'; + else if(v instanceof Date) { + t = 'd'; + if(!o.cellDates) { t = 'n'; v = datenum(v); } + z = (o.dateNF || table_fmt[14]); + } + else if(v === null && o.nullError) { t = 'e'; v = 0; } + if(!cell) ws[ref] = cell = ({t:t, v:v}/*:any*/); + else { + cell.t = t; cell.v = v; + delete cell.w; delete cell.R; + if(z) cell.z = z; + } + if(z) cell.z = z; + } + }); + }); + range.e.c = Math.max(range.e.c, _C + hdr.length - 1); + var __R = encode_row(_R); + if(offset) for(C = 0; C < hdr.length; ++C) ws[encode_col(C + _C) + __R] = {t:'s', v:hdr[C]}; + ws['!ref'] = encode_range(range); + return ws; +} +function json_to_sheet(js/*:Array*/, opts)/*:Worksheet*/ { return sheet_add_json(null, js, opts); } + +/* get cell, creating a stub if necessary */ +function ws_get_cell_stub(ws/*:Worksheet*/, R, C/*:?number*/)/*:Cell*/ { + /* A1 cell address */ + if(typeof R == "string") { + /* dense */ + if(Array.isArray(ws)) { + var RC = decode_cell(R); + if(!ws[RC.r]) ws[RC.r] = []; + return ws[RC.r][RC.c] || (ws[RC.r][RC.c] = {t:'z'}); + } + return ws[R] || (ws[R] = {t:'z'}); + } + /* cell address object */ + if(typeof R != "number") return ws_get_cell_stub(ws, encode_cell(R)); + /* R and C are 0-based indices */ + return ws_get_cell_stub(ws, encode_cell({r:R,c:C||0})); +} + +/* find sheet index for given name / validate index */ +function wb_sheet_idx(wb/*:Workbook*/, sh/*:number|string*/) { + if(typeof sh == "number") { + if(sh >= 0 && wb.SheetNames.length > sh) return sh; + throw new Error("Cannot find sheet # " + sh); + } else if(typeof sh == "string") { + var idx = wb.SheetNames.indexOf(sh); + if(idx > -1) return idx; + throw new Error("Cannot find sheet name |" + sh + "|"); + } else throw new Error("Cannot find sheet |" + sh + "|"); +} + +/* simple blank workbook object */ +function book_new()/*:Workbook*/ { + return { SheetNames: [], Sheets: {} }; +} + +/* add a worksheet to the end of a given workbook */ +function book_append_sheet(wb/*:Workbook*/, ws/*:Worksheet*/, name/*:?string*/, roll/*:?boolean*/)/*:string*/ { + var i = 1; + if(!name) for(; i <= 0xFFFF; ++i, name = undefined) if(wb.SheetNames.indexOf(name = "Sheet" + i) == -1) break; + if(!name || wb.SheetNames.length >= 0xFFFF) throw new Error("Too many worksheets"); + if(roll && wb.SheetNames.indexOf(name) >= 0) { + var m = name.match(/(^.*?)(\d+)$/); + i = m && +m[2] || 0; + var root = m && m[1] || name; + for(++i; i <= 0xFFFF; ++i) if(wb.SheetNames.indexOf(name = root + i) == -1) break; + } + check_ws_name(name); + if(wb.SheetNames.indexOf(name) >= 0) throw new Error("Worksheet with name |" + name + "| already exists!"); + + wb.SheetNames.push(name); + wb.Sheets[name] = ws; + return name; +} + +/* set sheet visibility (visible/hidden/very hidden) */ +function book_set_sheet_visibility(wb/*:Workbook*/, sh/*:number|string*/, vis/*:number*/) { + if(!wb.Workbook) wb.Workbook = {}; + if(!wb.Workbook.Sheets) wb.Workbook.Sheets = []; + + var idx = wb_sheet_idx(wb, sh); + // $FlowIgnore + if(!wb.Workbook.Sheets[idx]) wb.Workbook.Sheets[idx] = {}; + + switch(vis) { + case 0: case 1: case 2: break; + default: throw new Error("Bad sheet visibility setting " + vis); + } + // $FlowIgnore + wb.Workbook.Sheets[idx].Hidden = vis; +} + +/* set number format */ +function cell_set_number_format(cell/*:Cell*/, fmt/*:string|number*/) { + cell.z = fmt; + return cell; +} + +/* set cell hyperlink */ +function cell_set_hyperlink(cell/*:Cell*/, target/*:string*/, tooltip/*:?string*/) { + if(!target) { + delete cell.l; + } else { + cell.l = ({ Target: target }/*:Hyperlink*/); + if(tooltip) cell.l.Tooltip = tooltip; + } + return cell; +} +function cell_set_internal_link(cell/*:Cell*/, range/*:string*/, tooltip/*:?string*/) { return cell_set_hyperlink(cell, "#" + range, tooltip); } + +/* add to cell comments */ +function cell_add_comment(cell/*:Cell*/, text/*:string*/, author/*:?string*/) { + if(!cell.c) cell.c = []; + cell.c.push({t:text, a:author||"SheetJS"}); +} + +/* set array formula and flush related cells */ +function sheet_set_array_formula(ws/*:Worksheet*/, range, formula/*:string*/, dynamic/*:boolean*/) { + var rng = typeof range != "string" ? range : safe_decode_range(range); + var rngstr = typeof range == "string" ? range : encode_range(range); + for(var R = rng.s.r; R <= rng.e.r; ++R) for(var C = rng.s.c; C <= rng.e.c; ++C) { + var cell = ws_get_cell_stub(ws, R, C); + cell.t = 'n'; + cell.F = rngstr; + delete cell.v; + if(R == rng.s.r && C == rng.s.c) { + cell.f = formula; + if(dynamic) cell.D = true; + } + } + return ws; +} + +var utils/*:any*/ = { + encode_col: encode_col, + encode_row: encode_row, + encode_cell: encode_cell, + encode_range: encode_range, + decode_col: decode_col, + decode_row: decode_row, + split_cell: split_cell, + decode_cell: decode_cell, + decode_range: decode_range, + format_cell: format_cell, + sheet_add_aoa: sheet_add_aoa, + sheet_add_json: sheet_add_json, + sheet_add_dom: sheet_add_dom, + aoa_to_sheet: aoa_to_sheet, + json_to_sheet: json_to_sheet, + table_to_sheet: parse_dom_table, + table_to_book: table_to_book, + sheet_to_csv: sheet_to_csv, + sheet_to_txt: sheet_to_txt, + sheet_to_json: sheet_to_json, + sheet_to_html: sheet_to_html, + sheet_to_formulae: sheet_to_formulae, + sheet_to_row_object_array: sheet_to_json, + sheet_get_cell: ws_get_cell_stub, + book_new: book_new, + book_append_sheet: book_append_sheet, + book_set_sheet_visibility: book_set_sheet_visibility, + cell_set_number_format: cell_set_number_format, + cell_set_hyperlink: cell_set_hyperlink, + cell_set_internal_link: cell_set_internal_link, + cell_add_comment: cell_add_comment, + sheet_set_array_formula: sheet_set_array_formula, + consts: { + SHEET_VISIBLE: 0, + SHEET_HIDDEN: 1, + SHEET_VERY_HIDDEN: 2 + } +}; + +var _Readable; +function set_readable(R) { _Readable = R; } + +function write_csv_stream(sheet/*:Worksheet*/, opts/*:?Sheet2CSVOpts*/) { + var stream = _Readable(); + var o = opts == null ? {} : opts; + if(sheet == null || sheet["!ref"] == null) { stream.push(null); return stream; } + var r = safe_decode_range(sheet["!ref"]); + var FS = o.FS !== undefined ? o.FS : ",", fs = FS.charCodeAt(0); + var RS = o.RS !== undefined ? o.RS : "\n", rs = RS.charCodeAt(0); + var endregex = new RegExp((FS=="|" ? "\\|" : FS)+"+$"); + var row/*:?string*/ = "", cols/*:Array*/ = []; + o.dense = Array.isArray(sheet); + var colinfo/*:Array*/ = o.skipHidden && sheet["!cols"] || []; + var rowinfo/*:Array*/ = o.skipHidden && sheet["!rows"] || []; + for(var C = r.s.c; C <= r.e.c; ++C) if (!((colinfo[C]||{}).hidden)) cols[C] = encode_col(C); + var R = r.s.r; + var BOM = false, w = 0; + stream._read = function() { + if(!BOM) { BOM = true; return stream.push("\uFEFF"); } + while(R <= r.e.r) { + ++R; + if ((rowinfo[R-1]||{}).hidden) continue; + row = make_csv_row(sheet, r, R-1, cols, fs, rs, FS, o); + if(row != null) { + if(o.strip) row = row.replace(endregex,""); + if(row || (o.blankrows !== false)) return stream.push((w++ ? RS : "") + row); + } + } + return stream.push(null); + }; + return stream; +} + +function write_html_stream(ws/*:Worksheet*/, opts/*:?Sheet2HTMLOpts*/) { + var stream = _Readable(); + + var o = opts || {}; + var header = o.header != null ? o.header : HTML_BEGIN; + var footer = o.footer != null ? o.footer : HTML_END; + stream.push(header); + var r = decode_range(ws['!ref']); + o.dense = Array.isArray(ws); + stream.push(make_html_preamble(ws, r, o)); + var R = r.s.r; + var end = false; + stream._read = function() { + if(R > r.e.r) { + if(!end) { end = true; stream.push("" + footer); } + return stream.push(null); + } + while(R <= r.e.r) { + stream.push(make_html_row(ws, r, R, o)); + ++R; + break; + } + }; + return stream; +} + +function write_json_stream(sheet/*:Worksheet*/, opts/*:?Sheet2CSVOpts*/) { + var stream = _Readable({objectMode:true}); + + if(sheet == null || sheet["!ref"] == null) { stream.push(null); return stream; } + var val = {t:'n',v:0}, header = 0, offset = 1, hdr/*:Array*/ = [], v=0, vv=""; + var r = {s:{r:0,c:0},e:{r:0,c:0}}; + var o = opts || {}; + var range = o.range != null ? o.range : sheet["!ref"]; + if(o.header === 1) header = 1; + else if(o.header === "A") header = 2; + else if(Array.isArray(o.header)) header = 3; + switch(typeof range) { + case 'string': r = safe_decode_range(range); break; + case 'number': r = safe_decode_range(sheet["!ref"]); r.s.r = range; break; + default: r = range; + } + if(header > 0) offset = 0; + var rr = encode_row(r.s.r); + var cols/*:Array*/ = []; + var counter = 0; + var dense = Array.isArray(sheet); + var R = r.s.r, C = 0; + var header_cnt = {}; + if(dense && !sheet[R]) sheet[R] = []; + var colinfo/*:Array*/ = o.skipHidden && sheet["!cols"] || []; + var rowinfo/*:Array*/ = o.skipHidden && sheet["!rows"] || []; + for(C = r.s.c; C <= r.e.c; ++C) { + if(((colinfo[C]||{}).hidden)) continue; + cols[C] = encode_col(C); + val = dense ? sheet[R][C] : sheet[cols[C] + rr]; + switch(header) { + case 1: hdr[C] = C - r.s.c; break; + case 2: hdr[C] = cols[C]; break; + case 3: hdr[C] = o.header[C - r.s.c]; break; + default: + if(val == null) val = {w: "__EMPTY", t: "s"}; + vv = v = format_cell(val, null, o); + counter = header_cnt[v] || 0; + if(!counter) header_cnt[v] = 1; + else { + do { vv = v + "_" + (counter++); } while(header_cnt[vv]); header_cnt[v] = counter; + header_cnt[vv] = 1; + } + hdr[C] = vv; + } + } + R = r.s.r + offset; + stream._read = function() { + while(R <= r.e.r) { + if ((rowinfo[R-1]||{}).hidden) continue; + var row = make_json_row(sheet, r, R, cols, header, hdr, dense, o); + ++R; + if((row.isempty === false) || (header === 1 ? o.blankrows !== false : !!o.blankrows)) { + stream.push(row.row); + return; + } + } + return stream.push(null); + }; + return stream; +} + +var __stream = { + to_json: write_json_stream, + to_html: write_html_stream, + to_csv: write_csv_stream, + set_readable: set_readable +}; +export const version = XLSX.version; +export { + parse_xlscfb, + parse_zip, + readSync as read, + readFileSync as readFile, + readFileSync, + writeSync as write, + writeFileSync as writeFile, + writeFileSync, + writeFileAsync, + writeSyncXLSX as writeXLSX, + writeFileSyncXLSX as writeFileXLSX, + utils, + __stream as stream, + SSF, + CFB +}; diff --git a/node_modules/xlsx/xlsxworker.js b/node_modules/xlsx/xlsxworker.js new file mode 100644 index 000000000..8a13f0b13 --- /dev/null +++ b/node_modules/xlsx/xlsxworker.js @@ -0,0 +1,14 @@ +/* xlsx.js (C) 2013-present SheetJS -- http://sheetjs.com */ +importScripts('dist/shim.min.js'); +/* uncomment the next line for encoding support */ +importScripts('dist/cpexcel.js'); +importScripts('xlsx.js'); +postMessage({t:"ready"}); + +onmessage = function (evt) { + var v; + try { + v = XLSX.read(evt.data.d, {type: evt.data.b}); +postMessage({t:"xlsx", d:JSON.stringify(v)}); + } catch(e) { postMessage({t:"e",d:e.stack||e}); } +}; diff --git a/package.json b/package.json new file mode 100644 index 000000000..b2e4f32f8 --- /dev/null +++ b/package.json @@ -0,0 +1,5 @@ +{ + "dependencies": { + "xlsx": "^0.18.5" + } +} diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 000000000..7392f3192 --- /dev/null +++ b/yarn.lock @@ -0,0 +1,61 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +adler-32@~1.3.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/adler-32/-/adler-32-1.3.1.tgz#1dbf0b36dda0012189a32b3679061932df1821e2" + integrity sha512-ynZ4w/nUUv5rrsR8UUGoe1VC9hZj6V5hU9Qw1HlMDJGEJw5S7TfTErWTjMys6M7vr0YWcPqs3qAr4ss0nDfP+A== + +cfb@~1.2.1: + version "1.2.2" + resolved "https://registry.yarnpkg.com/cfb/-/cfb-1.2.2.tgz#94e687628c700e5155436dac05f74e08df23bc44" + integrity sha512-KfdUZsSOw19/ObEWasvBP/Ac4reZvAGauZhs6S/gqNhXhI7cKwvlH7ulj+dOEYnca4bm4SGo8C1bTAQvnTjgQA== + dependencies: + adler-32 "~1.3.0" + crc-32 "~1.2.0" + +codepage@~1.15.0: + version "1.15.0" + resolved "https://registry.yarnpkg.com/codepage/-/codepage-1.15.0.tgz#2e00519024b39424ec66eeb3ec07227e692618ab" + integrity sha512-3g6NUTPd/YtuuGrhMnOMRjFc+LJw/bnMp3+0r/Wcz3IXUuCosKRJvMphm5+Q+bvTVGcJJuRvVLuYba+WojaFaA== + +crc-32@~1.2.0, crc-32@~1.2.1: + version "1.2.2" + resolved "https://registry.yarnpkg.com/crc-32/-/crc-32-1.2.2.tgz#3cad35a934b8bf71f25ca524b6da51fb7eace2ff" + integrity sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ== + +frac@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/frac/-/frac-1.1.2.tgz#3d74f7f6478c88a1b5020306d747dc6313c74d0b" + integrity sha512-w/XBfkibaTl3YDqASwfDUqkna4Z2p9cFSr1aHDt0WoMTECnRfBOv2WArlZILlqgWlmdIlALXGpM2AOhEk5W3IA== + +ssf@~0.11.2: + version "0.11.2" + resolved "https://registry.yarnpkg.com/ssf/-/ssf-0.11.2.tgz#0b99698b237548d088fc43cdf2b70c1a7512c06c" + integrity sha512-+idbmIXoYET47hH+d7dfm2epdOMUDjqcB4648sTZ+t2JwoyBFL/insLfB/racrDmsKB3diwsDA696pZMieAC5g== + dependencies: + frac "~1.1.2" + +wmf@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wmf/-/wmf-1.0.2.tgz#7d19d621071a08c2bdc6b7e688a9c435298cc2da" + integrity sha512-/p9K7bEh0Dj6WbXg4JG0xvLQmIadrner1bi45VMJTfnbVHsc7yIajZyoSoK60/dtVBs12Fm6WkUI5/3WAVsNMw== + +word@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/word/-/word-0.3.0.tgz#8542157e4f8e849f4a363a288992d47612db9961" + integrity sha512-OELeY0Q61OXpdUfTp+oweA/vtLVg5VDOXh+3he3PNzLGG/y0oylSOC1xRVj0+l4vQ3tj/bB1HVHv1ocXkQceFA== + +xlsx@^0.18.5: + version "0.18.5" + resolved "https://registry.yarnpkg.com/xlsx/-/xlsx-0.18.5.tgz#16711b9113c848076b8a177022799ad356eba7d0" + integrity sha512-dmg3LCjBPHZnQp5/F/+nnTa+miPJxUXB6vtk42YjBBKayDNagxGEeIdWApkYPOf3Z3pm3k62Knjzp7lMeTEtFQ== + dependencies: + adler-32 "~1.3.0" + cfb "~1.2.1" + codepage "~1.15.0" + crc-32 "~1.2.1" + ssf "~0.11.2" + wmf "~1.0.1" + word "~0.3.0" From 47d9a6b627d33fd397396480b33449ccce71441e Mon Sep 17 00:00:00 2001 From: mukund-egov Date: Thu, 29 Aug 2024 15:33:42 +0530 Subject: [PATCH 07/33] dropdown menu enhancement and showed all data --- .../hrms/src/components/SearchUserForm.js | 43 +------------------ 1 file changed, 1 insertion(+), 42 deletions(-) diff --git a/frontend/micro-ui/web/micro-ui-internals/packages/modules/hrms/src/components/SearchUserForm.js b/frontend/micro-ui/web/micro-ui-internals/packages/modules/hrms/src/components/SearchUserForm.js index 70d98f7a9..8f9c41ed0 100644 --- a/frontend/micro-ui/web/micro-ui-internals/packages/modules/hrms/src/components/SearchUserForm.js +++ b/frontend/micro-ui/web/micro-ui-internals/packages/modules/hrms/src/components/SearchUserForm.js @@ -18,40 +18,7 @@ function filterKeys(data, keys) { return filteredItem; }); } -const jsonData = { - ResponseInfo: { - apiId: "Rainmaker", - ver: null, - ts: null, - resMsgId: "uief87324", - msgId: "1724761385030|en_IN", - status: "successful", - }, - Employees: [ - { - id: 879116, - uuid: "05838362-6f06-42dc-b5f5-19b5bb624eb0", - code: "EMP-1013-0944", - employeeStatus: "EMPLOYED", - employeeType: "PERMANENT", - dateOfAppointment: null, - jurisdictions: [ - { - id: "b4fffa01-14a2-4c07-b7a1-56c953db386a", - hierarchy: "REVENUE", - boundary: "pb.balharbinjuhjgfac", - boundaryType: "City", - tenantId: "pb", - auditDetails: { - createdBy: "d158721b-5c25-421b-8c26-c63cf5d38825", - createdDate: 1708332735415, - lastModifiedBy: "4000000001", - }, - }, - ], - }, - ], -}; + function getUniqueLeafCodes(tree) { const codes = new Set(); @@ -296,7 +263,6 @@ const SearchUserForm = ({ uniqueTenants, setUniqueTenants, roles, setUniqueRoles }, [employeeData]); function jsonToExcel(employeeData, fileName) { - // Extract attributes from JSON data console.log(employeeData); const employees = employeeData.map((employee) => ({ "User Id": employee.code, @@ -309,18 +275,11 @@ const SearchUserForm = ({ uniqueTenants, setUniqueTenants, roles, setUniqueRoles })); try { - console.log("employeeData", employeeData); - // Create a new workbook and worksheet - - console.log("JSON to EXcel"); - const wb = XLSX.utils.book_new(); const ws = XLSX.utils.json_to_sheet(employees); - // Append the worksheet to the workbook XLSX.utils.book_append_sheet(wb, ws, "Employees"); - // Write the file XLSX.writeFile(wb, fileName); console.log("Excel file created successfully"); } catch (error) { From fa78ad5e6b3603e6cfc7e1951f4f28ef2c534a98 Mon Sep 17 00:00:00 2001 From: mukund-egov Date: Thu, 29 Aug 2024 16:33:07 +0530 Subject: [PATCH 08/33] Solved build issues --- .../packages/modules/hrms/src/components/SearchUserForm.js | 1 - 1 file changed, 1 deletion(-) diff --git a/frontend/micro-ui/web/micro-ui-internals/packages/modules/hrms/src/components/SearchUserForm.js b/frontend/micro-ui/web/micro-ui-internals/packages/modules/hrms/src/components/SearchUserForm.js index 8f9c41ed0..3253eaced 100644 --- a/frontend/micro-ui/web/micro-ui-internals/packages/modules/hrms/src/components/SearchUserForm.js +++ b/frontend/micro-ui/web/micro-ui-internals/packages/modules/hrms/src/components/SearchUserForm.js @@ -5,7 +5,6 @@ import { Controller, useForm, useWatch } from "react-hook-form"; import MultiSelectDropdown from "../components/pageComponents/Multiselect"; const XLSX = require("xlsx"); -const fs = require("fs"); function filterKeys(data, keys) { return data.map((item) => { From 90ae2767ce8642881c6deee3195138382344830e Mon Sep 17 00:00:00 2001 From: mukund-egov Date: Mon, 2 Sep 2024 11:37:10 +0530 Subject: [PATCH 09/33] Dashboard is accessible via iFrame --- .../modules/hrms/src/components/hrmscard.js | 71 +++-- .../modules/hrms/src/pages/RateDashboard.js | 25 ++ .../packages/modules/hrms/src/pages/index.js | 24 +- .../packages/modules/utilities/README.md | 152 ++++++++++ .../packages/modules/utilities/package.json | 39 +++ .../packages/modules/utilities/src/Module.js | 33 ++ .../employee/DynamicCreateComponent/index.js | 51 ++++ .../employee/DynamicSearchComponent/index.js | 62 ++++ .../pages/employee/IFrameInterface/index.js | 281 ++++++++++++++++++ .../employee/WorkflowComponentTest/index.js | 28 ++ .../utilities/src/pages/employee/index.js | 46 +++ 11 files changed, 767 insertions(+), 45 deletions(-) create mode 100644 frontend/micro-ui/web/micro-ui-internals/packages/modules/hrms/src/pages/RateDashboard.js create mode 100644 frontend/micro-ui/web/micro-ui-internals/packages/modules/utilities/README.md create mode 100644 frontend/micro-ui/web/micro-ui-internals/packages/modules/utilities/package.json create mode 100644 frontend/micro-ui/web/micro-ui-internals/packages/modules/utilities/src/Module.js create mode 100644 frontend/micro-ui/web/micro-ui-internals/packages/modules/utilities/src/pages/employee/DynamicCreateComponent/index.js create mode 100644 frontend/micro-ui/web/micro-ui-internals/packages/modules/utilities/src/pages/employee/DynamicSearchComponent/index.js create mode 100644 frontend/micro-ui/web/micro-ui-internals/packages/modules/utilities/src/pages/employee/IFrameInterface/index.js create mode 100644 frontend/micro-ui/web/micro-ui-internals/packages/modules/utilities/src/pages/employee/WorkflowComponentTest/index.js create mode 100644 frontend/micro-ui/web/micro-ui-internals/packages/modules/utilities/src/pages/employee/index.js diff --git a/frontend/micro-ui/web/micro-ui-internals/packages/modules/hrms/src/components/hrmscard.js b/frontend/micro-ui/web/micro-ui-internals/packages/modules/hrms/src/components/hrmscard.js index 7561dd21f..723e7f4ee 100644 --- a/frontend/micro-ui/web/micro-ui-internals/packages/modules/hrms/src/components/hrmscard.js +++ b/frontend/micro-ui/web/micro-ui-internals/packages/modules/hrms/src/components/hrmscard.js @@ -4,7 +4,6 @@ import { useTranslation } from "react-i18next"; import EmployeeModuleCard from "./EmployeeModuleCard"; const HRMSCard = () => { - const ADMIN = Digit.Utils.hrmsAccess(); const STATE_ADMIN = Digit.UserService.hasAccess(["STATE_ADMIN"]); const DIV_ADMIN = Digit.UserService.hasAccess(["DIV_ADMIN"]); @@ -18,46 +17,44 @@ const HRMSCard = () => { let roles = STATE_ADMIN ? { roles: "DIV_ADMIN", isStateLevelSearch: true } : { - roles: "SYSTEM, GP_ADMIN, COLLECTION_OPERATOR, PROFILE_UPDATE, DASHBOAD_VIEWER, SARPANCH, REVENUE_COLLECTOR, SECRETARY", - isStateLevelSearch: false, - }; + roles: "SYSTEM, GP_ADMIN, COLLECTION_OPERATOR, PROFILE_UPDATE, DASHBOAD_VIEWER, SARPANCH, REVENUE_COLLECTOR, SECRETARY", + isStateLevelSearch: false, + }; const { isLoading, isError, error, data, ...rest } = Digit.Hooks.hrms.useHRMSCount(tenantId, roles); const moduleForSomeDIVAdmin = - DIV_ADMIN && MDMS_ADMIN ? [ - { - label: t("WORK_BENCH_URL_MASTER_DATA"), - link: `${window?.location?.origin}/workbench-ui/employee/workbench/mdms-search-v2?moduleName=ws-services-calculation&masterName=WCBillingSlab`, - }, - // { - // label: t("WORK_BENCH_URL_LOCALIZATION"), - // link: `${window?.location?.origin}/workbench-ui/employee/workbench/localisation-search`, - // }, - ] + { + label: t("WORK_BENCH_URL_MASTER_DATA"), + link: `${window?.location?.origin}/workbench-ui/employee/workbench/mdms-search-v2?moduleName=ws-services-calculation&masterName=WCBillingSlab`, + }, + // { + // label: t("WORK_BENCH_URL_LOCALIZATION"), + // link: `${window?.location?.origin}/workbench-ui/employee/workbench/localisation-search`, + // }, + ] : []; const moduleForSomeSTATEUser = STATE_ADMIN && MDMS_ADMIN ? [ - { - label: t("WORK_BENCH_URL_VILLAGE_MASTER_DATA"), - link: `${window?.location?.origin}/workbench-ui/employee/workbench/mdms-search-v2?moduleName=tenant&masterName=tenants`, - }, - ] + { + label: t("WORK_BENCH_URL_VILLAGE_MASTER_DATA"), + link: `${window?.location?.origin}/workbench-ui/employee/workbench/mdms-search-v2?moduleName=tenant&masterName=tenants`, + }, + ] : []; const moduleForDivisionUser = - DIV_ADMIN && MDMS_ADMIN ? - [ - { - label: t("WORK_BENCH_URL_PENALTY_MASTER_DATA"), - link: `${window?.location?.origin}/workbench-ui/employee/workbench/mdms-search-v2?moduleName=ws-services-calculation&masterName=Penalty`, - - }, - ] : []; - + DIV_ADMIN && MDMS_ADMIN + ? [ + { + label: t("WORK_BENCH_URL_PENALTY_MASTER_DATA"), + link: `${window?.location?.origin}/workbench-ui/employee/workbench/mdms-search-v2?moduleName=ws-services-calculation&masterName=Penalty`, + }, + ] + : []; const propsForModuleCard = { Icon: , @@ -78,7 +75,7 @@ const HRMSCard = () => { { label: t("HR_SEARCH_USER"), link: `/${window?.contextPath}/employee/hrms/search-user`, - roles: ["DIV_ADMIN", "STATE_ADMIN"] + roles: ["DIV_ADMIN", "STATE_ADMIN"], }, { label: t("HR_HOME_SEARCH_RESULTS_HEADING"), @@ -88,14 +85,15 @@ const HRMSCard = () => { label: STATE_ADMIN ? t("HR_COMMON_CREATE_DIVISION_EMPLOYEE_HEADER") : t("HR_COMMON_CREATE_EMPLOYEE_HEADER"), link: `/${window?.contextPath}/employee/hrms/create`, }, - DIV_ADMIN ? {} : - { - label: t("HR_STATE_ REPORTS"), - link: "https://mgramseva-dwss.punjab.gov.in/kibana/app/r/s/JNF2x?auth_provider_hint=anonymous1", - }, - { + DIV_ADMIN + ? {} + : { + label: t("HR_STATE_ REPORTS"), + link: "https://mgramseva-dwss.punjab.gov.in/kibana/app/r/s/JNF2x?auth_provider_hint=anonymous1", + }, + { label: t("HR_RATE_DASHBOARD"), - link: "https://mgramseva-dwss.punjab.gov.in/kibana/app/dashboards#/view/22ed8660-39cf-11ef-841e-251f7e3bc6c7?[…]!t,value:60000),time:(from:now-15m,to:now))", + link: `/${window?.contextPath}/employee/hrms/rate-dashboard?moduleName=rate-master&pageName=dashboard`, }, ...moduleForSomeDIVAdmin, ...moduleForSomeSTATEUser, @@ -106,5 +104,4 @@ const HRMSCard = () => { return ; }; - export default HRMSCard; diff --git a/frontend/micro-ui/web/micro-ui-internals/packages/modules/hrms/src/pages/RateDashboard.js b/frontend/micro-ui/web/micro-ui-internals/packages/modules/hrms/src/pages/RateDashboard.js new file mode 100644 index 000000000..bcab36c58 --- /dev/null +++ b/frontend/micro-ui/web/micro-ui-internals/packages/modules/hrms/src/pages/RateDashboard.js @@ -0,0 +1,25 @@ +import React, { useState, useEffect } from "react"; +import IFrameInterface from "../../../utilities/src/pages/employee/IFrameInterface/index"; + +const RateDashboard = () => { + const queryString = window.location.search; + const params = new URLSearchParams(queryString); + const moduleName = params.get("moduleName"); + const pageName = params.get("pageName"); + const stateCode = window?.globalConfigs?.getConfig("STATE_LEVEL_TENANT_ID") || "pb"; + + return ( +

+ ); +}; + +export default RateDashboard; diff --git a/frontend/micro-ui/web/micro-ui-internals/packages/modules/hrms/src/pages/index.js b/frontend/micro-ui/web/micro-ui-internals/packages/modules/hrms/src/pages/index.js index 56279ed7e..542e2b795 100644 --- a/frontend/micro-ui/web/micro-ui-internals/packages/modules/hrms/src/pages/index.js +++ b/frontend/micro-ui/web/micro-ui-internals/packages/modules/hrms/src/pages/index.js @@ -1,8 +1,9 @@ import { PrivateRoute } from "@egovernments/digit-ui-react-components"; -import React,{ useEffect } from "react"; +import React, { useEffect } from "react"; import { useTranslation } from "react-i18next"; import { Link, Switch, useLocation, useHistory } from "react-router-dom"; import SearchUser from "./SearchUser"; +import RateDashboard from "./RateDashboard"; // const {SixFtApart,Rotate360}=SVG; const EmployeeApp = ({ path, url, userType }) => { const { t } = useTranslation(); @@ -23,26 +24,32 @@ const EmployeeApp = ({ path, url, userType }) => { const EditEmpolyee = Digit?.ComponentRegistryService?.getComponent("HREditEmpolyee"); const employeeCreateSession = Digit.Hooks.useSessionStorage("NEW_EMPLOYEE_CREATE", {}); - const [sessionFormData,setSessionFormData, clearSessionFormData] = employeeCreateSession; + const [sessionFormData, setSessionFormData, clearSessionFormData] = employeeCreateSession; // remove session form data if user navigates away from the estimate create screen - useEffect(()=>{ + useEffect(() => { if (!window.location.href.includes("/hrms/create") && sessionFormData && Object.keys(sessionFormData) != 0) { - clearSessionFormData(); + clearSessionFormData(); } -},[location]); + }, [location]); return (

- + {t("HR_COMMON_BUTTON_HOME")} {" "} - / {location.pathname === `/${window?.contextPath}/employee/hrms/inbox` ? t("HR_COMMON_HEADER") : t("HR_COMMON_HEADER")} + / {location.pathname === `/${window?.contextPath}/employee/hrms/inbox` ? t("HR_COMMON_HEADER") : t("HR_COMMON_HEADER")}

-
history.goBack()}>

Back

+
history.goBack()}> + + + + +

Back

+
( @@ -54,6 +61,7 @@ const EmployeeApp = ({ path, url, userType }) => { } /> } /> } /> + } />
diff --git a/frontend/micro-ui/web/micro-ui-internals/packages/modules/utilities/README.md b/frontend/micro-ui/web/micro-ui-internals/packages/modules/utilities/README.md new file mode 100644 index 000000000..5ec6f55ab --- /dev/null +++ b/frontend/micro-ui/web/micro-ui-internals/packages/modules/utilities/README.md @@ -0,0 +1,152 @@ + + +# digit-ui-module-utilities + +## Install + +```bash +npm install --save digit-ui-module-utilities +``` + +## Limitation + +```bash +This Package is more specific to DIGIT-UI's can be used across mission's +``` + +## Usage + +After adding the dependency make sure you have this dependency in + +```bash +frontend/micro-ui/web/package.json +``` + +```json +"@egovernments/digit-ui-module-utilities":"0.0.1", +``` + +then navigate to App.js + +```bash + frontend/micro-ui/web/src/App.js +``` + +```jsx +/** add this import **/ + +import { initUtilitiesComponents } from "@egovernments/digit-ui-module-utilities"; + +/** inside enabledModules add this new module key **/ + +const enabledModules = ["Utilities"]; + +/** inside init Function call this function **/ + +const initDigitUI = () => { + initUtilitiesComponents(); +}; + +``` + +Add the Inbox /search config and use as mentioned below + +```jsx + import { InboxSearchComposer } from "@egovernments/digit-ui-module-utilities"; + + +
{t(updatedConfig?.label)}
+
+ +
+
+``` + + +In MDMS + +_Add this configuration to enable this module [MDMS Enabling Utilities Module](https://github.com/egovernments/works-mdms-data/blob/48461ecaf944ea243e24e1c1f9a5e2179d8091ac/data/pg/tenant/citymodule.json#L193)_ + +## List of Screens available in this versions were as follows + +1. Search or Inbox + Example Routes as follows + + ```bash + works-ui/employee/utilities/search/commonMuktaUiConfig/SearchIndividualConfig + + works-ui/employee/utilities/search/commonMuktaUiConfig/InboxMusterConfig + ``` + +2. Iframe + + ```bash + works-ui/employee/utilities/iframe/shg/home + ``` + +3. Workflow Test for any module + +Sample URL + +_Contract Module + +```bash + works-ui/employee/utilities/workflow?tenantId=pg.citya&applicationNo=WO/2023-24/000721&businessService=CONTRACT&moduleCode=contract +``` + +_Estimate Module + +```bash + works-ui/employee/utilities/workflow?tenantId=pg.citya&applicationNo=ES/2023-24/001606&businessService=ESTIMATE&moduleCode=estimate +``` + +_Attendance Module + +```bash + works-ui/employee/utilities/workflow?tenantId=pg.citya&applicationNo=MR/2023-24/05/31/000778&businessService=MR&moduleCode=muster%20roll +``` + +_Bill Module + +```bash + works-ui/employee/utilities/workflow?tenantId=pg.citya&applicationNo=PB/2023-24/000379&businessService=EXPENSE.PURCHASE&moduleCode=wages.purchase +``` + + + + +## Coming Soon + +1. Create Screen +2. View Screen + + +### Changelog + +```bash +1.0.0 Workbench v1.0 release +1.0.0-beta workbench base version beta release +0.0.8 fix response data for custom compnent in inbox composer +0.0.7 updated the readme content +0.0.6 fixed the module overriding issue +0.0.5 fixed the instablility issue with previous version +0.0.4 Updated the react-component library version +0.0.3 corrected the directory and added the preprocess function at inbox +0.0.2 added into the digit-core and integrated with core react components +0.0.1 base version +``` + +### Contributors + +[jagankumar-egov] + + +## Maintainer + +- [jagankumar-egov](https://www.github.com/jagankumar-egov) + +### Published from DIGIT Frontend +DIGIT Frontend Repo (https://github.com/egovernments/Digit-Frontend/tree/master) + + +![Logo](https://s3.ap-south-1.amazonaws.com/works-dev-asset/mseva-white-logo.png) \ No newline at end of file diff --git a/frontend/micro-ui/web/micro-ui-internals/packages/modules/utilities/package.json b/frontend/micro-ui/web/micro-ui-internals/packages/modules/utilities/package.json new file mode 100644 index 000000000..89633d425 --- /dev/null +++ b/frontend/micro-ui/web/micro-ui-internals/packages/modules/utilities/package.json @@ -0,0 +1,39 @@ +{ + "name": "@egovernments/digit-ui-module-utilities", + "version": "1.0.0", + "description": "Utilities Module UI", + "main": "dist/index.js", + "module": "dist/index.modern.js", + "source": "src/Module.js", + "files": [ + "dist" + ], + "scripts": { + "start": "microbundle-crl watch --no-compress --format modern,cjs", + "build": "microbundle-crl --compress --no-sourcemap --format cjs", + "prepublish": "yarn build" + }, + "peerDependencies": { + "react": "17.0.2", + "react-router-dom": "5.3.0" + }, + "dependencies": { + "@egovernments/digit-ui-react-components": "1.8.2", + "react": "17.0.2", + "react-date-range": "^1.4.0", + "react-dom": "17.0.2", + "react-hook-form": "6.15.8", + "react-i18next": "11.16.2", + "react-query": "3.6.1", + "react-router-dom": "5.3.0" + }, + "author": "Jagankumar ", + "license": "MIT", + "keywords": [ + "digit", + "egov", + "dpg", + "digit-ui", + "utilities" + ] +} \ No newline at end of file diff --git a/frontend/micro-ui/web/micro-ui-internals/packages/modules/utilities/src/Module.js b/frontend/micro-ui/web/micro-ui-internals/packages/modules/utilities/src/Module.js new file mode 100644 index 000000000..b9cb3f314 --- /dev/null +++ b/frontend/micro-ui/web/micro-ui-internals/packages/modules/utilities/src/Module.js @@ -0,0 +1,33 @@ +import { Loader, InboxSearchComposer, FormComposerV2 } from "@egovernments/digit-ui-react-components"; +import React from "react"; +import { useRouteMatch } from "react-router-dom"; +import { default as EmployeeApp } from "./pages/employee"; + +export const UtilitiesModule = ({ stateCode, userType, tenants }) => { + const { path, url } = useRouteMatch(); + const tenantId = Digit.ULBService.getCurrentTenantId(); + const moduleCode = ["utilities", "common-masters", tenantId]; + const language = Digit.StoreData.getCurrentLanguage(); + const { isLoading, data: store } = Digit.Services.useStore({ + stateCode, + moduleCode, + language, + }); + + if (isLoading) { + return ; + } + return ; +}; + +const componentsToRegister = { + UtilitiesModule +}; + +export const initUtilitiesComponents = () => { + Object.entries(componentsToRegister).forEach(([key, value]) => { + Digit.ComponentRegistryService.setComponent(key, value); + }); +}; + +export { InboxSearchComposer, FormComposerV2 }; diff --git a/frontend/micro-ui/web/micro-ui-internals/packages/modules/utilities/src/pages/employee/DynamicCreateComponent/index.js b/frontend/micro-ui/web/micro-ui-internals/packages/modules/utilities/src/pages/employee/DynamicCreateComponent/index.js new file mode 100644 index 000000000..2370108cd --- /dev/null +++ b/frontend/micro-ui/web/micro-ui-internals/packages/modules/utilities/src/pages/employee/DynamicCreateComponent/index.js @@ -0,0 +1,51 @@ +import { Loader,FormComposerV2 as FormComposer } from "@egovernments/digit-ui-react-components"; +import React from "react"; +import { useTranslation } from "react-i18next"; + +const CreateProject = () => { + const { t } = useTranslation(); + const stateTenant = Digit.ULBService.getStateId(); + const { moduleName, masterName } = useParams(); + + const { isLoading, data: configs } = Digit.Hooks.useCustomMDMS( + //change to data + stateTenant, + moduleName, + [ + { + name: masterName, + }, + ], + { + select: (data) => { + return data?.[moduleName]?.[masterName]?.[0]; + }, + } + ); + + if (isLoading) return ; + return ( + +
{t("CREATE")}
+ + { + return { + ...config, + body: config?.body.filter((a) => !a.hideInEmployee), + }; + })} + onSubmit={() => {}} + submitInForm={false} + fieldStyle={{ marginRight: 0 }} + inline={false} + className="form-no-margin" + defaultValues={{}} + cardClassName="mukta-header-card" + /> +
+ ); +}; + +export default CreateProject; diff --git a/frontend/micro-ui/web/micro-ui-internals/packages/modules/utilities/src/pages/employee/DynamicSearchComponent/index.js b/frontend/micro-ui/web/micro-ui-internals/packages/modules/utilities/src/pages/employee/DynamicSearchComponent/index.js new file mode 100644 index 000000000..daa764edf --- /dev/null +++ b/frontend/micro-ui/web/micro-ui-internals/packages/modules/utilities/src/pages/employee/DynamicSearchComponent/index.js @@ -0,0 +1,62 @@ +import { AddFilled, Button, Header, InboxSearchComposer, Loader } from "@egovernments/digit-ui-react-components"; +import React, { useState, useEffect, useMemo } from "react"; +import { useTranslation } from "react-i18next"; +import { useHistory, useParams } from "react-router-dom"; + +// works-ui/employee/dss/search/commonMuktaUiConfig/SearchEstimateConfig +const DynamicSearchComponent = () => { + const { t } = useTranslation(); + const history = useHistory(); + const { moduleName, masterName } = useParams(); + const [pageConfig, setPageConfig] = useState(null); + const tenant = Digit.ULBService.getStateId(); + const { isLoading, data } = Digit.Hooks.useCustomMDMS( + tenant, + moduleName, + [ + { + name: masterName, + }, + ], + { + select: (data) => { + return data?.[moduleName]?.[masterName]?.[0]; + }, + } + ); + let configs = data || {}; + + const updatedConfig = useMemo(() => Digit.Utils.preProcessMDMSConfigInboxSearch(t, pageConfig, "sections.search.uiConfig.fields", {}), [ + data, + pageConfig, + ]); + + useEffect(() => { + setPageConfig(_.cloneDeep(configs)); + }, [data]); + + if (isLoading || !pageConfig) return ; + return ( + +
+
{t(updatedConfig?.label)}
+ {Digit.Utils.didEmployeeHasRole(updatedConfig?.actionRole) && ( +
+
+ +
+
+ ); +}; + +export default DynamicSearchComponent; diff --git a/frontend/micro-ui/web/micro-ui-internals/packages/modules/utilities/src/pages/employee/IFrameInterface/index.js b/frontend/micro-ui/web/micro-ui-internals/packages/modules/utilities/src/pages/employee/IFrameInterface/index.js new file mode 100644 index 000000000..2b78cfa18 --- /dev/null +++ b/frontend/micro-ui/web/micro-ui-internals/packages/modules/utilities/src/pages/employee/IFrameInterface/index.js @@ -0,0 +1,281 @@ +import { Header, Loader } from "@egovernments/digit-ui-react-components"; +import React, { useEffect, useRef, useState } from "react"; +import { useTranslation } from "react-i18next"; +import { useLocation } from "react-router-dom"; +import { Toast } from "@egovernments/digit-ui-components"; +import axios from "axios"; + +// moduleName, pageName will be passed as props as defined in the uiCommonConstants to fetch URL. +const IFrameInterface = (props) => { + const { stateCode, moduleName, pageName, filters } = props; + const location = useLocation(); + const iframeRef = useRef(null); + const localStorageKey = "Employee.token"; + const [isAxiosLoading, setIsAxiosLoading] = useState(true); + const { t } = useTranslation(); + const [url, setUrl] = useState(""); + const [title, setTitle] = useState(""); + const [sendAuth, setSendAuth] = useState(true); + const [iframeLoaded, setIframeLoaded] = useState(false); + + const { data, isLoading } = Digit.Hooks.dss.useMDMS(stateCode, "common-masters", ["uiCommonConstants"], { + select: (data) => { + // debugger; + console.log(data, "data"); + let formattedResponse = data?.["common-masters"]?.["uiCommonConstants"]?.[0] || {}; + return formattedResponse; + }, + enabled: true, + }); + + console.log(data); + + const injectCustomHttpInterceptors = (iframeWindow) => { + // console.log("iframeInInterceptor",iframeWindow) + const injectCustomHttpInterceptor = () => { + try { + if (!iframeWindow) { + console.error("Failed to access iframe content window."); + return; + } + + const xhrOpen = iframeWindow.XMLHttpRequest.prototype.open; + iframeWindow.XMLHttpRequest.prototype.open = function (method, url, async, user, password) { + // Intercepting here + this.addEventListener("readystatechange", function () { + if (this.readyState === XMLHttpRequest.OPENED) { + const oidcToken = window.localStorage.getItem(localStorageKey); + if (oidcToken) { + const accessToken = oidcToken; + + if (sendAuth === "invalid") { + this.setRequestHeader("Authorization", "Bearer " + "authToken"); + } else { + this.setRequestHeader("Authorization", accessToken); + } + } + this.setRequestHeader("type-req", "xhr"); + } + }); + xhrOpen.apply(this, arguments); + }; + } catch (error) { + console.error("Error injecting custom HTTP interceptor:", error); + } + }; + + const injectCustomHttpInterceptorFetch = () => { + try { + if (!iframeWindow) { + console.error("Failed to access iframe content window."); + return; + } + + const originalFetch = iframeWindow.fetch; + iframeWindow.fetch = function (url, options = {}) { + options.headers = options.headers || {}; + const oidcToken = window.localStorage.getItem(localStorageKey); + if (oidcToken) { + const accessToken = oidcToken; + + if (sendAuth === "invalid") { + options.headers["Authorization"] = `Bearer authToken`; + } else { + options.headers["Authorization"] = `${accessToken}`; + } + } + options.headers["type-req"] = "fetch"; + return originalFetch(url, options) + .then((response) => { + return response; + }) + .catch((error) => { + console.error("Fetch error:", error); + throw error; + }); + }; + } catch (error) { + console.error("Error injecting custom HTTP interceptor:", error); + } + }; + + const injectCustomHttpInterceptorDocumentApi = () => { + try { + if (!iframeWindow) { + console.error("Failed to access iframe content window."); + return; + } + + if (typeof iframeWindow.document.api !== "function") { + console.error("document.api is not a function."); + return; + } + + const originalDocumentApi = iframeWindow.document.api; + iframeWindow.document.api = function (url, options = {}) { + options.headers = options.headers || {}; + const oidcToken = window.localStorage.getItem(localStorageKey); + if (oidcToken) { + const accessToken = oidcToken; + + if (sendAuth === "invalid") { + options.headers["Authorization"] = `Bearer authToken`; + } else { + options.headers["Authorization"] = `${accessToken}`; + } + } + options.headers["type-req"] = "document"; + return originalDocumentApi(url, options) + .then((response) => { + return response; + }) + .catch((error) => { + console.error("Document API error:", error); + throw error; + }); + }; + } catch (error) { + console.error("Error injecting custom HTTP interceptor for document.api:", error); + } + }; + + if (sendAuth) { + injectCustomHttpInterceptor(); + injectCustomHttpInterceptorFetch(); + injectCustomHttpInterceptorDocumentApi(); + } + }; + + useEffect(() => { + const iframeWindow = iframeRef?.current?.contentWindow || iframeRef?.current?.contentDocument; + if (iframeRef.current) { + injectCustomHttpInterceptors(iframeWindow); + } + }, [localStorageKey, sendAuth, location]); + + useEffect(() => { + const pageObject = data?.[moduleName]?.["iframe-routes"]?.[pageName] || {}; + console.log("pageObject", pageObject); + if (pageObject?.Authorization) { + if (pageObject?.SendInvalidAuthorization) { + setSendAuth("invalid"); + } else { + setSendAuth(true); + } + } else { + setSendAuth(false); + } + + const isOrign = pageObject?.["isOrigin"] || false; + const domain = isOrign + ? process.env.NODE_ENV === "development" + ? "https://unified-dev.digit.org" + : document.location.origin + : pageObject?.["domain"]; + //checking if overwrite time is true then update the url as per filter time else return the url + const contextPath = pageObject?.["routePath"] + ? pageObject?.["overwriteTimeFilter"] && filters?.range?.startDate && filters?.range?.endDate + ? pageObject["routePath"] + .replace("from:now-15m", `from:'${new Date(filters?.range?.startDate).toISOString()}'`) + .replace("to:now", `to:'${new Date(filters?.range?.endDate).toISOString()}'`) + : pageObject["routePath"] + : ""; + const title = pageObject?.["title"] || ""; + let url = `${domain}${contextPath}`; + if (pageObject?.authToken && pageObject?.authToken?.enable) { + const authKey = pageObject?.authToken?.key || "auth-token"; + if (pageObject?.authToken?.customFun && Digit.Utils.createFunction(pageObject?.authToken?.customFun)) { + const customFun = Digit.Utils.createFunction(pageObject?.authToken?.customFun); + url = customFun(url, Digit.UserService.getUser()?.access_token, pageObject?.authToken); + } else { + url = `${url}&${authKey}=${Digit.UserService.getUser()?.access_token || ""}`; + } + } + console.log("url", url); + console.log(url); + setUrl(url); + setTitle(title); + }, [data, moduleName, pageName, location, filters]); + + useEffect(() => { + const fetchData = async () => { + try { + const basePath = data?.[moduleName]?.["iframe-routes"]?.[pageName]?.["base-kibana-path"] || "/kibana/"; + const response = await axios.post( + `${window.location.origin}${basePath}internal/security/login`, + { + providerType: "anonymous", + providerName: "anonymous1", + currentURL: `${window.location.origin}${basePath}login`, + }, + { + headers: { + Accept: "*/*", + "Accept-Language": "en-US,en;q=0.9", + "Cache-Control": "no-cache", + Connection: "keep-alive", + "Content-Type": "application/json", + DNT: "1", + Origin: window.location.origin, + Pragma: "no-cache", + Referer: `${window.location.origin}${basePath}login?next=%2Fkibana%2F`, + "Sec-Fetch-Dest": "empty", + "Sec-Fetch-Mode": "cors", + "Sec-Fetch-Site": "same-origin", + "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36", + "kbn-build-number": "68312", + "kbn-version": "8.11.3", + "sec-ch-ua": '"Not/A)Brand";v="8", "Chromium";v="126", "Google Chrome";v="126"', + "sec-ch-ua-mobile": "?0", + "sec-ch-ua-platform": '"Windows"', + "x-elastic-internal-origin": "Kibana", + "x-kbn-context": `{"type":"application","name":"security_login","url":"${basePath}login"}`, + }, + } + ); + console.log("response from axios", response); + console.log("Response headers axios:", response.headers); + const setCookie = response.headers["set-cookie"]; + if (setCookie) { + console.log("axios cookie set", setCookie); + document.cookie = setCookie; + } + } catch (error) { + console.log("axios resp err", error.message); + console.error("Error fetching data:", error); + } finally { + setIsAxiosLoading(false); + } + }; + + fetchData(); + }, []); + + if (isLoading || isAxiosLoading) { + return ; + } + + if (!url) { + return
No Iframe To Load
; + } + + return ( + +
{t(title)}
+
+