UNPKG

@ng-dynamic-forms/core

Version:

A rapid form development library for Angular

110 lines 21.8 kB
export const AUTOCOMPLETE_OFF = "off"; export const AUTOCOMPLETE_ON = "on"; export const AUTOFILL_TOKEN_BILLING = "billing"; export const AUTOFILL_TOKEN_SHIPPING = "shipping"; export const AUTOFILL_TOKENS_ADDRESS = [AUTOFILL_TOKEN_BILLING, AUTOFILL_TOKEN_SHIPPING]; export const AUTOFILL_TOKEN_HOME = "home"; export const AUTOFILL_TOKEN_WORK = "work"; export const AUTOFILL_TOKEN_MOBILE = "mobile"; export const AUTOFILL_TOKEN_FAX = "fax"; export const AUTOFILL_TOKEN_PAGER = "pager"; export const AUTOFILL_TOKENS_CONTACT = [ AUTOFILL_TOKEN_FAX, AUTOFILL_TOKEN_HOME, AUTOFILL_TOKEN_MOBILE, AUTOFILL_TOKEN_PAGER, AUTOFILL_TOKEN_WORK ]; export const AUTOFILL_FIELD_STREET_ADDRESS = "street-address"; export const AUTOFILL_FIELD_ADDRESS_LINE_1 = "address-line1"; export const AUTOFILL_FIELD_ADDRESS_LINE_2 = "address-line2"; export const AUTOFILL_FIELD_ADDRESS_LINE_3 = "address-line3"; export const AUTOFILL_FIELD_ADDRESS_LEVEL_4 = "address-level4"; export const AUTOFILL_FIELD_ADDRESS_LEVEL_3 = "address-level3"; export const AUTOFILL_FIELD_ADDRESS_LEVEL_2 = "address-level2"; export const AUTOFILL_FIELD_ADDRESS_LEVEL_1 = "address-level1"; export const AUTOFILL_FIELD_NAME = "name"; export const AUTOFILL_FIELD_HONORIFIC_PREFIX = "honorific-prefix"; export const AUTOFILL_FIELD_GIVEN_NAME = "given-name"; export const AUTOFILL_FIELD_ADDITIONAL_NAME = "additional-name"; export const AUTOFILL_FIELD_FAMILY_NAME = "family-name"; export const AUTOFILL_FIELD_HONORIFIC_SUFFIX = "honorific-suffix"; export const AUTOFILL_FIELD_NICKNAME = "nickname"; export const AUTOFILL_FIELD_USERNAME = "username"; export const AUTOFILL_FIELD_NEW_PASSWORD = "new-password"; export const AUTOFILL_FIELD_CURRENT_PASSWORD = "current-password"; export const AUTOFILL_FIELD_ORGANIZATION_TITLE = "organization-title"; export const AUTOFILL_FIELD_ORGANIZATION = "organization"; export const AUTOFILL_FIELD_COUNTRY = "country"; export const AUTOFILL_FIELD_COUNTRY_NAME = "country-name"; export const AUTOFILL_FIELD_POSTAL_CODE = "postal-code"; export const AUTOFILL_FIELD_CC_NAME = "cc-name"; export const AUTOFILL_FIELD_CC_GIVEN_NAME = "cc-given-name"; export const AUTOFILL_FIELD_CC_ADDITIONAL_NAME = "cc-additional-name"; export const AUTOFILL_FIELD_CC_FAMILY_NAME = "cc-family-name"; export const AUTOFILL_FIELD_CC_NUMBER = "cc-number"; export const AUTOFILL_FIELD_CC_EXP = "cc-exp"; export const AUTOFILL_FIELD_CC_EXP_MONTH = "cc-exp-month"; export const AUTOFILL_FIELD_CC_EXP_YEAR = "cc-exp-year"; export const AUTOFILL_FIELD_CC_CSC = "cc-csc"; export const AUTOFILL_FIELD_CC_TYPE = "cc-type"; export const AUTOFILL_FIELD_TRANSACTION_CURRENCY = "transaction-currency"; export const AUTOFILL_FIELD_TRANSACTION_AMOUNT = "transaction-amount"; export const AUTOFILL_FIELD_LANGUAGE = "language"; export const AUTOFILL_FIELD_BDAY = "bday"; export const AUTOFILL_FIELD_BDAY_DAY = "bday-day"; export const AUTOFILL_FIELD_BDAY_MONTH = "bday-month"; export const AUTOFILL_FIELD_BDAY_YEAR = "bday-year"; export const AUTOFILL_FIELD_SEX = "sex"; export const AUTOFILL_FIELD_URL = "url"; export const AUTOFILL_FIELD_PHOTO = "photo"; export const AUTOFILL_FIELDS = [ AUTOFILL_FIELD_STREET_ADDRESS, AUTOFILL_FIELD_ADDRESS_LINE_1, AUTOFILL_FIELD_ADDRESS_LINE_2, AUTOFILL_FIELD_ADDRESS_LINE_3, AUTOFILL_FIELD_ADDRESS_LEVEL_4, AUTOFILL_FIELD_ADDRESS_LEVEL_3, AUTOFILL_FIELD_ADDRESS_LEVEL_2, AUTOFILL_FIELD_ADDRESS_LEVEL_1, AUTOFILL_FIELD_NAME, AUTOFILL_FIELD_HONORIFIC_PREFIX, AUTOFILL_FIELD_GIVEN_NAME, AUTOFILL_FIELD_ADDITIONAL_NAME, AUTOFILL_FIELD_FAMILY_NAME, AUTOFILL_FIELD_HONORIFIC_SUFFIX, AUTOFILL_FIELD_NICKNAME, AUTOFILL_FIELD_USERNAME, AUTOFILL_FIELD_NEW_PASSWORD, AUTOFILL_FIELD_CURRENT_PASSWORD, AUTOFILL_FIELD_ORGANIZATION_TITLE, AUTOFILL_FIELD_ORGANIZATION, AUTOFILL_FIELD_COUNTRY, AUTOFILL_FIELD_COUNTRY_NAME, AUTOFILL_FIELD_POSTAL_CODE, AUTOFILL_FIELD_CC_NAME, AUTOFILL_FIELD_CC_GIVEN_NAME, AUTOFILL_FIELD_CC_ADDITIONAL_NAME, AUTOFILL_FIELD_CC_FAMILY_NAME, AUTOFILL_FIELD_CC_NUMBER, AUTOFILL_FIELD_CC_EXP, AUTOFILL_FIELD_CC_EXP_MONTH, AUTOFILL_FIELD_CC_EXP_YEAR, AUTOFILL_FIELD_CC_CSC, AUTOFILL_FIELD_CC_TYPE, AUTOFILL_FIELD_TRANSACTION_CURRENCY, AUTOFILL_FIELD_TRANSACTION_AMOUNT, AUTOFILL_FIELD_LANGUAGE, AUTOFILL_FIELD_BDAY, AUTOFILL_FIELD_BDAY_DAY, AUTOFILL_FIELD_BDAY_MONTH, AUTOFILL_FIELD_BDAY_YEAR, AUTOFILL_FIELD_SEX, AUTOFILL_FIELD_URL, AUTOFILL_FIELD_PHOTO ]; export const AUTOFILL_FIELD_TEL = "tel"; export const AUTOFILL_FIELD_TEL_COUNTRY_CODE = "tel-country-code"; export const AUTOFILL_FIELD_TEL_NATIONAL = "tel-national"; export const AUTOFILL_FIELD_TEL_AREA_CODE = "tel-area-code"; export const AUTOFILL_FIELD_TEL_LOCAL = "tel-local"; export const AUTOFILL_FIELD_TEL_LOCAL_PREFIX = "tel-local-prefix"; export const AUTOFILL_FIELD_TEL_LOCAL_SUFFIX = "tel-local-suffix"; export const AUTOFILL_FIELD_TEL_LOCAL_EXTENSION = "tel-extension"; export const AUTOFILL_FIELD_EMAIL = "email"; export const AUTOFILL_FIELD_IMPP = "impp"; export const AUTOFILL_FIELDS_CONTACT = [ AUTOFILL_FIELD_TEL, AUTOFILL_FIELD_TEL_COUNTRY_CODE, AUTOFILL_FIELD_TEL_NATIONAL, AUTOFILL_FIELD_TEL_AREA_CODE, AUTOFILL_FIELD_TEL_LOCAL, AUTOFILL_FIELD_TEL_LOCAL_PREFIX, AUTOFILL_FIELD_TEL_LOCAL_SUFFIX, AUTOFILL_FIELD_TEL_LOCAL_EXTENSION, AUTOFILL_FIELD_EMAIL, AUTOFILL_FIELD_IMPP ]; export function isAddressToken(token) { return AUTOFILL_TOKENS_ADDRESS.indexOf(token) > -1; } export function isContactField(token) { return AUTOFILL_FIELDS_CONTACT.indexOf(token) > -1; } export function isContactToken(token) { return AUTOFILL_TOKENS_CONTACT.indexOf(token) > -1; } export function isField(token) { return AUTOFILL_FIELDS.indexOf(token) > -1; } export function isSectionToken(token) { return token.startsWith("section-"); } export function validate(tokens) { const toExpression = (total, currentValue) => `${total}|${currentValue}`; const tokensAddress = AUTOFILL_TOKENS_ADDRESS.reduce(toExpression); const tokensContact = AUTOFILL_TOKENS_CONTACT.reduce(toExpression); const fields = AUTOFILL_FIELDS.reduce(toExpression); const fieldsContact = AUTOFILL_FIELDS_CONTACT.reduce(toExpression); const regex = new RegExp(`^(section-\\w+\\s{1})?((${tokensAddress}){1}\\s)?((${fields}){1}|((${tokensContact}){1}\\s{1}(${fieldsContact})))$`); return regex.test(tokens); } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2ZpbGwudXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9uZy1keW5hbWljLWZvcm1zL2NvcmUvc3JjL2xpYi91dGlscy9hdXRvZmlsbC51dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxLQUFLLENBQUM7QUFDdEMsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLElBQUksQ0FBQztBQUVwQyxNQUFNLENBQUMsTUFBTSxzQkFBc0IsR0FBRyxTQUFTLENBQUM7QUFDaEQsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsVUFBVSxDQUFDO0FBRWxELE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLENBQUMsc0JBQXNCLEVBQUUsdUJBQXVCLENBQUMsQ0FBQztBQUV6RixNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxNQUFNLENBQUM7QUFDMUMsTUFBTSxDQUFDLE1BQU0sbUJBQW1CLEdBQUcsTUFBTSxDQUFDO0FBQzFDLE1BQU0sQ0FBQyxNQUFNLHFCQUFxQixHQUFHLFFBQVEsQ0FBQztBQUM5QyxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxLQUFLLENBQUM7QUFDeEMsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQUcsT0FBTyxDQUFDO0FBRTVDLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHO0lBQ25DLGtCQUFrQixFQUFFLG1CQUFtQixFQUFFLHFCQUFxQixFQUFFLG9CQUFvQixFQUFFLG1CQUFtQjtDQUM1RyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sNkJBQTZCLEdBQUcsZ0JBQWdCLENBQUM7QUFDOUQsTUFBTSxDQUFDLE1BQU0sNkJBQTZCLEdBQUcsZUFBZSxDQUFDO0FBQzdELE1BQU0sQ0FBQyxNQUFNLDZCQUE2QixHQUFHLGVBQWUsQ0FBQztBQUM3RCxNQUFNLENBQUMsTUFBTSw2QkFBNkIsR0FBRyxlQUFlLENB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WSxDQUFDLENBQUM7SUFDbkUsTUFBTSxNQUFNLEdBQUcsZUFBZSxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUNwRCxNQUFNLGFBQWEsR0FBRyx1QkFBdUIsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7SUFDbkUsTUFBTSxLQUFLLEdBQUcsSUFBSSxNQUFNLENBQUMsMkJBQTJCLGFBQWEsY0FBYyxNQUFNLFVBQVUsYUFBYSxjQUFjLGFBQWEsTUFBTSxDQUFDLENBQUM7SUFFL0ksT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzlCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgQVVUT0NPTVBMRVRFX09GRiA9IFwib2ZmXCI7XG5leHBvcnQgY29uc3QgQVVUT0NPTVBMRVRFX09OID0gXCJvblwiO1xuXG5leHBvcnQgY29uc3QgQVVUT0ZJTExfVE9LRU5fQklMTElORyA9IFwiYmlsbGluZ1wiO1xuZXhwb3J0IGNvbnN0IEFVVE9GSUxMX1RPS0VOX1NISVBQSU5HID0gXCJzaGlwcGluZ1wiO1xuXG5leHBvcnQgY29uc3QgQVVUT0ZJTExfVE9LRU5TX0FERFJFU1MgPSBbQVVUT0ZJTExfVE9LRU5fQklMTElORywgQVVUT0ZJTExfVE9LRU5fU0hJUFBJTkddO1xuXG5leHBvcnQgY29uc3QgQVVUT0ZJTExfVE9LRU5fSE9NRSA9IFwiaG9tZVwiO1xuZXhwb3J0IGNvbnN0IEFVVE9GSUxMX1RPS0VOX1dPUksgPSBcIndvcmtcIjtcbmV4cG9ydCBjb25zdCBBVVRPRklMTF9UT0tFTl9NT0JJTEUgPSBcIm1vYmlsZVwiO1xuZXhwb3J0IGNvbnN0IEFVVE9GSUxMX1RPS0VOX0ZBWCA9IFwiZmF4XCI7XG5leHBvcnQgY29uc3QgQVVUT0ZJTExfVE9LRU5fUEFHRVIgPSBcInBhZ2VyXCI7XG5cbmV4cG9ydCBjb25zdCBBVVRPRklMTF9UT0tFTlNfQ09OVEFDVCA9IFtcbiAgICBBVVRPRklMTF9UT0tFTl9GQVgsIEFVVE9GSUxMX1RPS0VOX0hPTUUsIEFVVE9GSUxMX1RPS0VOX01PQklMRSwgQVVUT0ZJTExfVE9LRU5fUEFHRVIsIEFVVE9GSUxMX1RPS0VOX1dPUktcbl07XG5cbmV4cG9ydCBjb25zdCBBVVRPRklMTF9GSUVMRF9TVFJFRVRfQUREUkVTUyA9IFwic3RyZWV0LWFkZHJlc3NcIjtcbmV4cG9ydCBjb25zdCBBVVRPRklMTF9GSUVMRF9BRERSRVNTX0xJTkVfMSA9IFwiYWRkcmVzcy1saW5lMVwiO1xuZXhwb3J0IGNvbnN0IEFVVE9GSUxMX0ZJRUxEX0FERFJFU1NfTElORV8yID0gXCJhZGRyZXNzLWxpbmUyXCI7XG5leHBvcnQgY29uc3QgQVVUT0ZJTExfRklFTERfQUREUkVTU19MSU5FXzMgPSBcImFkZHJlc3MtbGluZTNcIjtcbmV4cG9ydCBjb25zdCBBVVRPRklMTF9GSUVMRF9BRERSRVNTX0xFVkVMXzQgPSBcImFkZHJlc3MtbGV2ZWw0XCI7XG5leHBvcnQgY29uc3QgQVVUT0ZJTExfRklFTERfQUREUkVTU19MRVZFTF8zID0gXCJhZGRyZXNzLWxldmVsM1wiO1xuZXhwb3J0IGNvbnN0IEFVVE9GSUxMX0ZJRUxEX0FERFJFU1NfTEVWRUxfMiA9IFwiYWRkcmVzcy1sZXZlbDJcIjtcbmV4cG9ydCBjb25zdCBBVVRPRklMTF9GSUVMRF9BRERSRVNTX0xFVkVMXzEgPSBcImFkZHJlc3MtbGV2ZWwxXCI7XG5cbmV4cG9ydCBjb25zdCBBVVRPRklMTF9GSUVMRF9OQU1FID0gXCJuYW1lXCI7XG5leHBvcnQgY29uc3QgQVVUT0ZJTExfRklFTERfSE9OT1JJRklDX1BSRUZJWCA9IFwiaG9ub3JpZmljLXByZWZpeFwiO1xuZXhwb3J0IGNvbnN0IEFVVE9GSUxMX0ZJRUxEX0dJVkVOX05BTUUgPSBcImdpdmVuLW5hbWVcIjtcbmV4cG9ydCBjb25zdCBBVVRPRklMTF9GSUVMRF9BRERJVElPTkFMX05BTUUgPSBcImFkZGl0aW9uYWwtbmFtZVwiO1xuZXhwb3J0IGNvbnN0IEFVVE9GSUxMX0ZJRUxEX0ZBTUlMWV9OQU1FID0gXCJmYW1pbHktbmFtZVwiO1xuZXhwb3J0IGNvbnN0IEFVVE9GSUxMX0ZJRUxEX0hPTk9SSUZJQ19TVUZGSVggPSBcImhvbm9yaWZpYy1zdWZmaXhcIjtcbmV4cG9ydCBjb25zdCBBVVRPRklMTF9GSUVMRF9OSUNLTkFNRSA9IFwibmlja25hbWVcIjtcbmV4cG9ydCBjb25zdCBBVVRPRklMTF9GSUVMRF9VU0VSTkFNRSA9IFwidXNlcm5hbWVcIjtcblxuZXhwb3J0IGNvbnN0IEFVVE9GSUxMX0ZJRUxEX05FV19QQVNTV09SRCA9IFwibmV3LXBhc3N3b3JkXCI7XG5leHBvcnQgY29uc3QgQVVUT0ZJTExfRklFTERfQ1VSUkVOVF9QQVNTV09SRCA9IFwiY3VycmVudC1wYXNzd29yZFwiO1xuXG5leHBvcnQgY29uc3QgQVVUT0ZJTExfRklFTERfT1JHQU5JWkFUSU9OX1RJVExFID0gXCJvcmdhbml6YXRpb24tdGl0bGVcIjtcbmV4cG9ydCBjb25zdCBBVVRPRklMTF9GSUVMRF9PUkdBTklaQVRJT04gPSBcIm9yZ2FuaXphdGlvblwiO1xuXG5leHBvcnQgY29uc3QgQVVUT0ZJTExfRklFTERfQ09VTlRSWSA9IFwiY291bnRyeVwiO1xuZXhwb3J0IGNvbnN0IEFVVE9GSUxMX0ZJRUxEX0NPVU5UUllfTkFNRSA9IFwiY291bnRyeS1uYW1lXCI7XG5leHBvcnQgY29uc3QgQVVUT0ZJTExfRklFTERfUE9TVEFMX0NPREUgPSBcInBvc3RhbC1jb2RlXCI7XG5cbmV4cG9ydCBjb25zdCBBVVRPRklMTF9GSUVMRF9DQ19OQU1FID0gXCJjYy1uYW1lXCI7XG5leHBvcnQgY29uc3QgQVVUT0ZJTExfRklFTERfQ0NfR0lWRU5fTkFNRSA9IFwiY2MtZ2l2ZW4tbmFtZVwiO1xuZXhwb3J0IGNvbnN0IEFVVE9GSUxMX0ZJRUxEX0NDX0FERElUSU9OQUxfTkFNRSA9IFwiY2MtYWRkaXRpb25hbC1uYW1lXCI7XG5leHBvcnQgY29uc3QgQVVUT0ZJTExfRklFTERfQ0NfRkFNSUxZX05BTUUgPSBcImNjLWZhbWlseS1uYW1lXCI7XG5leHBvcnQgY29uc3QgQVVUT0ZJTExfRklFTERfQ0NfTlVNQkVSID0gXCJjYy1udW1iZXJcIjtcbmV4cG9ydCBjb25zdCBBVVRPRklMTF9GSUVMRF9DQ19FWFAgPSBcImNjLWV4cFwiO1xuZXhwb3J0IGNvbnN0IEFVVE9GSUxMX0ZJRUxEX0NDX0VYUF9NT05USCA9IFwiY2MtZXhwLW1vbnRoXCI7XG5leHBvcnQgY29uc3QgQVVUT0ZJTExfRklFTERfQ0NfRVhQX1lFQVIgPSBcImNjLWV4cC15ZWFyXCI7XG5leHBvcnQgY29uc3QgQVVUT0ZJTExfRklFTERfQ0NfQ1NDID0gXCJjYy1jc2NcIjtcbmV4cG9ydCBjb25zdCBBVVRPRklMTF9GSUVMRF9DQ19UWVBFID0gXCJjYy10eXBlXCI7XG5cbmV4cG9ydCBjb25zdCBBVVRPRklMTF9GSUVMRF9UUkFOU0FDVElPTl9DVVJSRU5DWSA9IFwidHJhbnNhY3Rpb24tY3VycmVuY3lcIjtcbmV4cG9ydCBjb25zdCBBVVRPRklMTF9GSUVMRF9UUkFOU0FDVElPTl9BTU9VTlQgPSBcInRyYW5zYWN0aW9uLWFtb3VudFwiO1xuXG5leHBvcnQgY29uc3QgQVVUT0ZJTExfRklFTERfTEFOR1VBR0UgPSBcImxhbmd1YWdlXCI7XG5cbmV4cG9ydCBjb25zdCBBVVRPRklMTF9GSUVMRF9CREFZID0gXCJiZGF5XCI7XG5leHBvcnQgY29uc3QgQVVUT0ZJTExfRklFTERfQkRBWV9EQVkgPSBcImJkYXktZGF5XCI7XG5leHBvcnQgY29uc3QgQVVUT0ZJTExfRklFTERfQkRBWV9NT05USCA9IFwiYmRheS1tb250aFwiO1xuZXhwb3J0IGNvbnN0IEFVVE9GSUxMX0ZJRUxEX0JEQVlfWUVBUiA9IFwiYmRheS15ZWFyXCI7XG5cbmV4cG9ydCBjb25zdCBBVVRPRklMTF9GSUVMRF9TRVggPSBcInNleFwiO1xuXG5leHBvcnQgY29uc3QgQVVUT0ZJTExfRklFTERfVVJMID0gXCJ1cmxcIjtcblxuZXhwb3J0IGNvbnN0IEFVVE9GSUxMX0ZJRUxEX1BIT1RPID0gXCJwaG90b1wiO1xuXG5leHBvcnQgY29uc3QgQVVUT0ZJTExfRklFTERTID0gW1xuICAgIEFVVE9GSUxMX0ZJRUxEX1NUUkVFVF9BRERSRVNTLCBBVVRPRklMTF9GSUVMRF9BRERSRVNTX0xJTkVfMSwgQVVUT0ZJTExfRklFTERfQUREUkVTU19MSU5FXzIsXG4gICAgQVVUT0ZJTExfRklFTERfQUREUkVTU19MSU5FXzMsIEFVVE9GSUxMX0ZJRUxEX0FERFJFU1NfTEVWRUxfNCwgQVVUT0ZJTExfRklFTERfQUREUkVTU19MRVZFTF8zLFxuICAgIEFVVE9GSUxMX0ZJRUxEX0FERFJFU1NfTEVWRUxfMiwgQVVUT0ZJTExfRklFTERfQUREUkVTU19MRVZFTF8xLCBBVVRPRklMTF9GSUVMRF9OQU1FLFxuICAgIEFVVE9GSUxMX0ZJRUxEX0hPTk9SSUZJQ19QUkVGSVgsIEFVVE9GSUxMX0ZJRUxEX0dJVkVOX05BTUUsIEFVVE9GSUxMX0ZJRUxEX0FERElUSU9OQUxfTkFNRSxcbiAgICBBVVRPRklMTF9GSUVMRF9GQU1JTFlfTkFNRSwgQVVUT0ZJTExfRklFTERfSE9OT1JJRklDX1NVRkZJWCwgQVVUT0ZJTExfRklFTERfTklDS05BTUUsIEFVVE9GSUxMX0ZJRUxEX1VTRVJOQU1FLFxuICAgIEFVVE9GSUxMX0ZJRUxEX05FV19QQVNTV09SRCwgQVVUT0ZJTExfRklFTERfQ1VSUkVOVF9QQVNTV09SRCwgQVVUT0ZJTExfRklFTERfT1JHQU5JWkFUSU9OX1RJVExFLFxuICAgIEFVVE9GSUxMX0ZJRUxEX09SR0FOSVpBVElPTiwgQVVUT0ZJTExfRklFTERfQ09VTlRSWSwgQVVUT0ZJTExfRklFTERfQ09VTlRSWV9OQU1FLCBBVVRPRklMTF9GSUVMRF9QT1NUQUxfQ09ERSxcbiAgICBBVVRPRklMTF9GSUVMRF9DQ19OQU1FLCBBVVRPRklMTF9GSUVMRF9DQ19HSVZFTl9OQU1FLCBBVVRPRklMTF9GSUVMRF9DQ19BRERJVElPTkFMX05BTUUsXG4gICAgQVVUT0ZJTExfRklFTERfQ0NfRkFNSUxZX05BTUUsIEFVVE9GSUxMX0ZJRUxEX0NDX05VTUJFUiwgQVVUT0ZJTExfRklFTERfQ0NfRVhQLCBBVVRPRklMTF9GSUVMRF9DQ19FWFBfTU9OVEgsXG4gICAgQVVUT0ZJTExfRklFTERfQ0NfRVhQX1lFQVIsIEFVVE9GSUxMX0ZJRUxEX0NDX0NTQywgQVVUT0ZJTExfRklFTERfQ0NfVFlQRSwgQVVUT0ZJTExfRklFTERfVFJBTlNBQ1RJT05fQ1VSUkVOQ1ksXG4gICAgQVVUT0ZJTExfRklFTERfVFJBTlNBQ1RJT05fQU1PVU5ULCBBVVRPRklMTF9GSUVMRF9MQU5HVUFHRSwgQVVUT0ZJTExfRklFTERfQkRBWSwgQVVUT0ZJTExfRklFTERfQkRBWV9EQVksXG4gICAgQVVUT0ZJTExfRklFTERfQkRBWV9NT05USCwgQVVUT0ZJTExfRklFTERfQkRBWV9ZRUFSLCBBVVRPRklMTF9GSUVMRF9TRVgsIEFVVE9GSUxMX0ZJRUxEX1VSTCwgQVVUT0ZJTExfRklFTERfUEhPVE9cbl07XG5cbmV4cG9ydCBjb25zdCBBVVRPRklMTF9GSUVMRF9URUwgPSBcInRlbFwiO1xuZXhwb3J0IGNvbnN0IEFVVE9GSUxMX0ZJRUxEX1RFTF9DT1VOVFJZX0NPREUgPSBcInRlbC1jb3VudHJ5LWNvZGVcIjtcbmV4cG9ydCBjb25zdCBBVVRPRklMTF9GSUVMRF9URUxfTkFUSU9OQUwgPSBcInRlbC1uYXRpb25hbFwiO1xuZXhwb3J0IGNvbnN0IEFVVE9GSUxMX0ZJRUxEX1RFTF9BUkVBX0NPREUgPSBcInRlbC1hcmVhLWNvZGVcIjtcbmV4cG9ydCBjb25zdCBBVVRPRklMTF9GSUVMRF9URUxfTE9DQUwgPSBcInRlbC1sb2NhbFwiO1xuZXhwb3J0IGNvbnN0IEFVVE9GSUxMX0ZJRUxEX1RFTF9MT0NBTF9QUkVGSVggPSBcInRlbC1sb2NhbC1wcmVmaXhcIjtcbmV4cG9ydCBjb25zdCBBVVRPRklMTF9GSUVMRF9URUxfTE9DQUxfU1VGRklYID0gXCJ0ZWwtbG9jYWwtc3VmZml4XCI7XG5leHBvcnQgY29uc3QgQVVUT0ZJTExfRklFTERfVEVMX0xPQ0FMX0VYVEVOU0lPTiA9IFwidGVsLWV4dGVuc2lvblwiO1xuZXhwb3J0IGNvbnN0IEFVVE9GSUxMX0ZJRUxEX0VNQUlMID0gXCJlbWFpbFwiO1xuZXhwb3J0IGNvbnN0IEFVVE9GSUxMX0ZJRUxEX0lNUFAgPSBcImltcHBcIjtcblxuZXhwb3J0IGNvbnN0IEFVVE9GSUxMX0ZJRUxEU19DT05UQUNUID0gW1xuICAgIEFVVE9GSUxMX0ZJRUxEX1RFTCwgQVVUT0ZJTExfRklFTERfVEVMX0NPVU5UUllfQ09ERSwgQVVUT0ZJTExfRklFTERfVEVMX05BVElPTkFMLCBBVVRPRklMTF9GSUVMRF9URUxfQVJFQV9DT0RFLFxuICAgIEFVVE9GSUxMX0ZJRUxEX1RFTF9MT0NBTCwgQVVUT0ZJTExfRklFTERfVEVMX0xPQ0FMX1BSRUZJWCwgQVVUT0ZJTExfRklFTERfVEVMX0xPQ0FMX1NVRkZJWCxcbiAgICBBVVRPRklMTF9GSUVMRF9URUxfTE9DQUxfRVhURU5TSU9OLCBBVVRPRklMTF9GSUVMRF9FTUFJTCwgQVVUT0ZJTExfRklFTERfSU1QUFxuXTtcblxuZXhwb3J0IGZ1bmN0aW9uIGlzQWRkcmVzc1Rva2VuKHRva2VuOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQVVUT0ZJTExfVE9LRU5TX0FERFJFU1MuaW5kZXhPZih0b2tlbikgPiAtMTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzQ29udGFjdEZpZWxkKHRva2VuOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQVVUT0ZJTExfRklFTERTX0NPTlRBQ1QuaW5kZXhPZih0b2tlbikgPiAtMTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzQ29udGFjdFRva2VuKHRva2VuOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gQVVUT0ZJTExfVE9LRU5TX0NPTlRBQ1QuaW5kZXhPZih0b2tlbikgPiAtMTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzRmllbGQodG9rZW46IHN0cmluZyk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBBVVRPRklMTF9GSUVMRFMuaW5kZXhPZih0b2tlbikgPiAtMTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzU2VjdGlvblRva2VuKHRva2VuOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdG9rZW4uc3RhcnRzV2l0aChcInNlY3Rpb24tXCIpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdmFsaWRhdGUodG9rZW5zOiBzdHJpbmcpOiBib29sZWFuIHtcblxuICAgIGNvbnN0IHRvRXhwcmVzc2lvbiA9ICh0b3RhbDogc3RyaW5nLCBjdXJyZW50VmFsdWU6IHN0cmluZykgPT4gYCR7dG90YWx9fCR7Y3VycmVudFZhbHVlfWA7XG4gICAgY29uc3QgdG9rZW5zQWRkcmVzcyA9IEFVVE9GSUxMX1RPS0VOU19BRERSRVNTLnJlZHVjZSh0b0V4cHJlc3Npb24pO1xuICAgIGNvbnN0IHRva2Vuc0NvbnRhY3QgPSBBVVRPRklMTF9UT0tFTlNfQ09OVEFDVC5yZWR1Y2UodG9FeHByZXNzaW9uKTtcbiAgICBjb25zdCBmaWVsZHMgPSBBVVRPRklMTF9GSUVMRFMucmVkdWNlKHRvRXhwcmVzc2lvbik7XG4gICAgY29uc3QgZmllbGRzQ29udGFjdCA9IEFVVE9GSUxMX0ZJRUxEU19DT05UQUNULnJlZHVjZSh0b0V4cHJlc3Npb24pO1xuICAgIGNvbnN0IHJlZ2V4ID0gbmV3IFJlZ0V4cChgXihzZWN0aW9uLVxcXFx3K1xcXFxzezF9KT8oKCR7dG9rZW5zQWRkcmVzc30pezF9XFxcXHMpPygoJHtmaWVsZHN9KXsxfXwoKCR7dG9rZW5zQ29udGFjdH0pezF9XFxcXHN7MX0oJHtmaWVsZHNDb250YWN0fSkpKSRgKTtcblxuICAgIHJldHVybiByZWdleC50ZXN0KHRva2Vucyk7XG59XG4iXX0=