UNPKG

merchi_checkout

Version:
466 lines 50.6 kB
import { ProductType, Role } from './types'; export var isoCountries = { AF: "Afghanistan", AX: "Aland Islands", AL: "Albania", DZ: "Algeria", AS: "American Samoa", AD: "Andorra", AO: "Angola", AI: "Anguilla", AQ: "Antarctica", AG: "Antigua And Barbuda", AR: "Argentina", AM: "Armenia", AW: "Aruba", AU: "Australia", AT: "Austria", AZ: "Azerbaijan", BS: "Bahamas", BH: "Bahrain", BD: "Bangladesh", BB: "Barbados", BY: "Belarus", BE: "Belgium", BZ: "Belize", BJ: "Benin", BM: "Bermuda", BT: "Bhutan", BO: "Bolivia", BA: "Bosnia And Herzegovina", BW: "Botswana", BV: "Bouvet Island", BR: "Brazil", IO: "British Indian Ocean Territory", BN: "Brunei Darussalam", BG: "Bulgaria", BF: "Burkina Faso", BI: "Burundi", KH: "Cambodia", CM: "Cameroon", CA: "Canada", CV: "Cape Verde", KY: "Cayman Islands", CF: "Central African Republic", TD: "Chad", CL: "Chile", CN: "China", CX: "Christmas Island", CC: "Cocos (Keeling) Islands", CO: "Colombia", KM: "Comoros", CG: "Congo", CD: "Congo, Democratic Republic", CK: "Cook Islands", CR: "Costa Rica", CI: "Cote D'Ivoire", HR: "Croatia", CU: "Cuba", CY: "Cyprus", CZ: "Czech Republic", DK: "Denmark", DJ: "Djibouti", DM: "Dominica", DO: "Dominican Republic", EC: "Ecuador", EG: "Egypt", SV: "El Salvador", GQ: "Equatorial Guinea", ER: "Eritrea", EE: "Estonia", ET: "Ethiopia", FK: "Falkland Islands (Malvinas)", FO: "Faroe Islands", FJ: "Fiji", FI: "Finland", FR: "France", GF: "French Guiana", PF: "French Polynesia", TF: "French Southern Territories", GA: "Gabon", GM: "Gambia", GE: "Georgia", DE: "Germany", GH: "Ghana", GI: "Gibraltar", GR: "Greece", GL: "Greenland", GD: "Grenada", GP: "Guadeloupe", GU: "Guam", GT: "Guatemala", GG: "Guernsey", GN: "Guinea", GW: "Guinea-Bissau", GY: "Guyana", HT: "Haiti", HM: "Heard Island & Mcdonald Islands", VA: "Holy See (Vatican City State)", HN: "Honduras", HK: "Hong Kong", HU: "Hungary", IS: "Iceland", IN: "India", ID: "Indonesia", IR: "Iran, Islamic Republic Of", IQ: "Iraq", IE: "Ireland", IM: "Isle Of Man", IL: "Israel", IT: "Italy", JM: "Jamaica", JP: "Japan", JE: "Jersey", JO: "Jordan", KZ: "Kazakhstan", KE: "Kenya", KI: "Kiribati", KR: "Korea", KW: "Kuwait", KG: "Kyrgyzstan", LA: "Lao People's Democratic Republic", LV: "Latvia", LB: "Lebanon", LS: "Lesotho", LR: "Liberia", LY: "Libyan Arab Jamahiriya", LI: "Liechtenstein", LT: "Lithuania", LU: "Luxembourg", MO: "Macao", MK: "Macedonia", MG: "Madagascar", MW: "Malawi", MY: "Malaysia", MV: "Maldives", ML: "Mali", MT: "Malta", MH: "Marshall Islands", MQ: "Martinique", MR: "Mauritania", MU: "Mauritius", YT: "Mayotte", MX: "Mexico", FM: "Micronesia, Federated States Of", MD: "Moldova", MC: "Monaco", MN: "Mongolia", ME: "Montenegro", MS: "Montserrat", MA: "Morocco", MZ: "Mozambique", MM: "Myanmar", NA: "Namibia", NR: "Nauru", NP: "Nepal", NL: "Netherlands", AN: "Netherlands Antilles", NC: "New Caledonia", NZ: "New Zealand", NI: "Nicaragua", NE: "Niger", NG: "Nigeria", NU: "Niue", NF: "Norfolk Island", MP: "Northern Mariana Islands", NO: "Norway", OM: "Oman", PK: "Pakistan", PW: "Palau", PS: "Palestinian Territory, Occupied", PA: "Panama", PG: "Papua New Guinea", PY: "Paraguay", PE: "Peru", PH: "Philippines", PN: "Pitcairn", PL: "Poland", PT: "Portugal", PR: "Puerto Rico", QA: "Qatar", RE: "Reunion", RO: "Romania", RU: "Russian Federation", RW: "Rwanda", BL: "Saint Barthelemy", SH: "Saint Helena", KN: "Saint Kitts And Nevis", LC: "Saint Lucia", MF: "Saint Martin", PM: "Saint Pierre And Miquelon", VC: "Saint Vincent And Grenadines", WS: "Samoa", SM: "San Marino", ST: "Sao Tome And Principe", SA: "Saudi Arabia", SN: "Senegal", RS: "Serbia", SC: "Seychelles", SL: "Sierra Leone", SG: "Singapore", SK: "Slovakia", SI: "Slovenia", SB: "Solomon Islands", SO: "Somalia", ZA: "South Africa", GS: "South Georgia And Sandwich Isl.", ES: "Spain", LK: "Sri Lanka", SD: "Sudan", SR: "Suriname", SJ: "Svalbard And Jan Mayen", SZ: "Swaziland", SE: "Sweden", CH: "Switzerland", SY: "Syrian Arab Republic", TW: "Taiwan", TJ: "Tajikistan", TZ: "Tanzania", TH: "Thailand", TL: "Timor-Leste", TG: "Togo", TK: "Tokelau", TO: "Tonga", TT: "Trinidad And Tobago", TN: "Tunisia", TR: "Turkey", TM: "Turkmenistan", TC: "Turks And Caicos Islands", TV: "Tuvalu", UG: "Uganda", UA: "Ukraine", AE: "United Arab Emirates", GB: "United Kingdom", US: "United States", UM: "United States Outlying Islands", UY: "Uruguay", UZ: "Uzbekistan", VU: "Vanuatu", VE: "Venezuela", VN: "Viet Nam", VG: "Virgin Islands, British", VI: "Virgin Islands, U.S.", WF: "Wallis And Futuna", EH: "Western Sahara", YE: "Yemen", ZM: "Zambia", ZW: "Zimbabwe" }; export function userDomainsByRoles(user, roles) { var eD = user && user.enrolledDomains ? user.enrolledDomains : []; var domains = []; var i = 0; for (i; i < eD.length; i++) { var e = eD[i]; if (roles.includes(e.role)) { domains.push(e.domain); } } return domains; } export function userAdminDomains(user) { return userDomainsByRoles(user, [Role.ADMIN, Role.MANAGER]); } export function isProductSupplierMOD(product) { var productType = product && product.productType; return product && [String(ProductType.SUPPLIER_MOD), String(ProductType.SUPPLIER_RESELL_MOD)].includes(String(productType)); } export function isUserRegistered(user) { var id = user ? user.id : null; return id !== undefined && id !== null && id > 0; } export function isRegisteredAndHasStore(user) { var id = user ? user.id : null; return id !== undefined && id !== null && id > 0 && user.hasStore; } var supportedNumbers = { AU: 'Australia (+61)', AE: 'United Arab Emirates (+971)', BH: 'Bahrain (+973)', CN: 'China (+86)', DK: 'Denmark (+45)', ES: 'Spain (+34)', FR: 'France (+33)', GB: 'United Kingdom (+44)', HK: 'Hong Kong (+852)', ID: 'Indonesia (+62)', IN: 'India (+91)', IT: 'Italy (+39)', KR: 'South Korea (+82)', NC: 'New Caledonia (+687)', NZ: 'New Zealand (+64)', OM: 'Oman (+968)', PH: 'Philippines (+63)', PT: 'Portugal (+351)', QA: 'Qatar (+974)', SE: 'Sweden (+46)', SG: 'Singapore (+65)', TH: 'Thailand (+66)', US: 'United States (+1)', ZA: 'South Africa (+27)' }; export var phoneOptions = Object.keys(supportedNumbers).map(function (key) { return { value: key, label: supportedNumbers[key] }; }); export var addressComponentsSettings = { administrative_area_level_1: 'short_name', administrative_area_level_2: 'short_name', country: 'short_name', establishment: 'long_name', floor: 'short_name', locality: 'long_name', postal_code: 'short_name', premise: 'short_name', room: 'long_name', route: 'short_name', street_number: 'short_name', sublocality: 'long_name', subpremise: 'short_name' }; export function geoSuggestResultAsNewAddress(resp) { var addressComponents = resp && resp.gmaps ? resp.gmaps.address_components : null; var name = resp && resp.gmaps && resp.gmaps.name; var address = { city: '', country: '', lineOne: name ? name : '', lineTwo: '', postcode: '', state: '' }; var i; if (addressComponents) { for (i = 0; i < addressComponents.length; i++) { var addrComponent = addressComponents[i]; var addrTypes = addrComponent.types; var addrType = addrTypes.length > 0 ? addrTypes[0] : null; var componentSetting = addrType ? addressComponentsSettings[addrType] : null; if (componentSetting) { var addressVal = addrComponent[componentSetting]; switch (addrType) { case 'establishment': case 'room': case 'floor': case 'street_number': case 'premise': case 'subpremise': case 'route': var oldLineOne = address.lineOne; address.lineOne = oldLineOne.includes(addressVal) ? oldLineOne : "".concat(oldLineOne, " ").concat(addressVal); break; case 'locality': case 'sublocality': var oldCity = address.city ? "".concat(address.city, " ") : ''; address.city = oldCity + addressVal; break; case 'administrative_area_level_1': address.state = addressVal; break; case 'administrative_area_level_2': break; case 'country': address.country = addressVal; break; case 'postal_code': address.postcode = addressVal; break; default: break; } } } return address; } return null; } export function addressInOneLine(address) { var a = address ? address : {}; var city = a.city, country = a.country, lineOne = a.lineOne, lineTwo = a.lineTwo, postcode = a.postcode, state = a.state; var l1 = lineOne ? "".concat(lineOne, " ") : ''; var l2 = lineTwo ? "".concat(lineTwo, " ") : ''; var c = city ? "".concat(city, " ") : ''; var s = state ? "".concat(state, " ") : ''; var p = postcode ? "".concat(postcode, " ") : ''; var countryFull = country ? isoCountries[country] : ''; return l1 + l2 + c + s + p + countryFull; } export var FieldType = /*#__PURE__*/function (FieldType) { FieldType[FieldType["TEXT_INPUT"] = 1] = "TEXT_INPUT"; FieldType[FieldType["SELECT"] = 2] = "SELECT"; FieldType[FieldType["FILE_UPLOAD"] = 3] = "FILE_UPLOAD"; FieldType[FieldType["TEXT_AREA"] = 4] = "TEXT_AREA"; FieldType[FieldType["NUMBER_INPUT"] = 5] = "NUMBER_INPUT"; FieldType[FieldType["CHECKBOX"] = 6] = "CHECKBOX"; FieldType[FieldType["RADIO"] = 7] = "RADIO"; FieldType[FieldType["FIELD_INSTRUCTIONS"] = 8] = "FIELD_INSTRUCTIONS"; FieldType[FieldType["IMAGE_SELECT"] = 9] = "IMAGE_SELECT"; FieldType[FieldType["COLOUR_PICKER"] = 10] = "COLOUR_PICKER"; FieldType[FieldType["COLOUR_SELECT"] = 11] = "COLOUR_SELECT"; return FieldType; }({}); export function isSelectable(fieldType) { return [FieldType.SELECT, FieldType.CHECKBOX, FieldType.RADIO, FieldType.IMAGE_SELECT, FieldType.COLOUR_SELECT].includes(fieldType); } export function isInstructionsType(fieldType) { return String(FieldType.FIELD_INSTRUCTIONS) === String(fieldType); } export var countryDefaultDict = function countryDefaultDict(currency) { return { currency: currency }; }; export var supportedCountryDefaults = { AE: countryDefaultDict('USD'), AU: countryDefaultDict('AUD'), BH: countryDefaultDict('USD'), CH: countryDefaultDict('CNY'), DK: countryDefaultDict('EUR'), ES: countryDefaultDict('EUR'), FR: countryDefaultDict('EUR'), GB: countryDefaultDict('GBP'), HK: countryDefaultDict('HKD'), ID: countryDefaultDict('USD'), IN: countryDefaultDict('INR'), IT: countryDefaultDict('EUR'), KR: countryDefaultDict('USD'), NC: countryDefaultDict('USD'), NZ: countryDefaultDict('NZD'), OM: countryDefaultDict('USD'), PH: countryDefaultDict('USD'), PT: countryDefaultDict('EUR'), QA: countryDefaultDict('USD'), SE: countryDefaultDict('USD'), SG: countryDefaultDict('SGD'), TH: countryDefaultDict('USD'), US: countryDefaultDict('USD'), ZA: countryDefaultDict('USD') }; export var supportedCountryDefaultsWithDefault = function supportedCountryDefaultsWithDefault(countryCode) { var defaultCountryValues = supportedCountryDefaults[countryCode]; return defaultCountryValues ? defaultCountryValues : supportedCountryDefaults.AU; }; export function cleanClientFiles(clientFiles) { return clientFiles.map(function (clientFile) { return clientFile.file; }); } export function appendClientToOwnDraft(job) { var ownDrafts = job.ownDrafts; if (job.ownDrafts && job.ownDrafts.length) { job.ownDrafts[0].designer = job.client; } return job; } export function redirectOnSuccess(url, redirectWithValue, value) { var cleanUrl = url.replace('%27', '').replace('%91', '').replace('%92', '').replace('%93', '').replace('%94', ''); window.location.href = decodeURI(redirectWithValue ? "".concat(cleanUrl, "merchiValue=").concat(value) : cleanUrl); } //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJQcm9kdWN0VHlwZSIsIlJvbGUiLCJpc29Db3VudHJpZXMiLCJBRiIsIkFYIiwiQUwiLCJEWiIsIkFTIiwiQUQiLCJBTyIsIkFJIiwiQVEiLCJBRyIsIkFSIiwiQU0iLCJBVyIsIkFVIiwiQVQiLCJBWiIsIkJTIiwiQkgiLCJCRCIsIkJCIiwiQlkiLCJCRSIsIkJaIiwiQkoiLCJCTSIsIkJUIiwiQk8iLCJCQSIsIkJXIiwiQlYiLCJCUiIsIklPIiwiQk4iLCJCRyIsIkJGIiwiQkkiLCJLSCIsIkNNIiwiQ0EiLCJDViIsIktZIiwiQ0YiLCJURCIsIkNMIiwiQ04iLCJDWCIsIkNDIiwiQ08iLCJLTSIsIkNHIiwiQ0QiLCJDSyIsIkNSIiwiQ0kiLCJIUiIsIkNVIiwiQ1kiLCJDWiIsIkRLIiwiREoiLCJETSIsIkRPIiwiRUMiLCJFRyIsIlNWIiwiR1EiLCJFUiIsIkVFIiwiRVQiLCJGSyIsIkZPIiwiRkoiLCJGSSIsIkZSIiwiR0YiLCJQRiIsIlRGIiwiR0EiLCJHTSIsIkdFIiwiREUiLCJHSCIsIkdJIiwiR1IiLCJHTCIsIkdEIiwiR1AiLCJHVSIsIkdUIiwiR0ciLCJHTiIsIkdXIiwiR1kiLCJIVCIsIkhNIiwiVkEiLCJITiIsIkhLIiwiSFUiLCJJUyIsIklOIiwiSUQiLCJJUiIsIklRIiwiSUUiLCJJTSIsIklMIiwiSVQiLCJKTSIsIkpQIiwiSkUiLCJKTyIsIktaIiwiS0UiLCJLSSIsIktSIiwiS1ciLCJLRyIsIkxBIiwiTFYiLCJMQiIsIkxTIiwiTFIiLCJMWSIsIkxJIiwiTFQiLCJMVSIsIk1PIiwiTUsiLCJNRyIsIk1XIiwiTVkiLCJNViIsIk1MIiwiTVQiLCJNSCIsIk1RIiwiTVIiLCJNVSIsIllUIiwiTVgiLCJGTSIsIk1EIiwiTUMiLCJNTiIsIk1FIiwiTVMiLCJNQSIsIk1aIiwiTU0iLCJOQSIsIk5SIiwiTlAiLCJOTCIsIkFOIiwiTkMiLCJOWiIsIk5JIiwiTkUiLCJORyIsIk5VIiwiTkYiLCJNUCIsIk5PIiwiT00iLCJQSyIsIlBXIiwiUFMiLCJQQSIsIlBHIiwiUFkiLCJQRSIsIlBIIiwiUE4iLCJQTCIsIlBUIiwiUFIiLCJRQSIsIlJFIiwiUk8iLCJSVSIsIlJXIiwiQkwiLCJTSCIsIktOIiwiTEMiLCJNRiIsIlBNIiwiVkMiLCJXUyIsIlNNIiwiU1QiLCJTQSIsIlNOIiwiUlMiLCJTQyIsIlNMIiwiU0ciLCJTSyIsIlNJIiwiU0IiLCJTTyIsIlpBIiwiR1MiLCJFUyIsIkxLIiwiU0QiLCJTUiIsIlNKIiwiU1oiLCJTRSIsIkNIIiwiU1kiLCJUVyIsIlRKIiwiVFoiLCJUSCIsIlRMIiwiVEciLCJUSyIsIlRPIiwiVFQiLCJUTiIsIlRSIiwiVE0iLCJUQyIsIlRWIiwiVUciLCJVQSIsIkFFIiwiR0IiLCJVUyIsIlVNIiwiVVkiLCJVWiIsIlZVIiwiVkUiLCJWTiIsIlZHIiwiVkkiLCJXRiIsIkVIIiwiWUUiLCJaTSIsIlpXIiwidXNlckRvbWFpbnNCeVJvbGVzIiwidXNlciIsInJvbGVzIiwiZUQiLCJlbnJvbGxlZERvbWFpbnMiLCJkb21haW5zIiwiaSIsImxlbmd0aCIsImUiLCJpbmNsdWRlcyIsInJvbGUiLCJwdXNoIiwiZG9tYWluIiwidXNlckFkbWluRG9tYWlucyIsIkFETUlOIiwiTUFOQUdFUiIsImlzUHJvZHVjdFN1cHBsaWVyTU9EIiwicHJvZHVjdCIsInByb2R1Y3RUeXBlIiwiU3RyaW5nIiwiU1VQUExJRVJfTU9EIiwiU1VQUExJRVJfUkVTRUxMX01PRCIsImlzVXNlclJlZ2lzdGVyZWQiLCJpZCIsInVuZGVmaW5lZCIsImlzUmVnaXN0ZXJlZEFuZEhhc1N0b3JlIiwiaGFzU3RvcmUiLCJzdXBwb3J0ZWROdW1iZXJzIiwicGhvbmVPcHRpb25zIiwiT2JqZWN0Iiwia2V5cyIsIm1hcCIsImtleSIsInZhbHVlIiwibGFiZWwiLCJhZGRyZXNzQ29tcG9uZW50c1NldHRpbmdzIiwiYWRtaW5pc3RyYXRpdmVfYXJlYV9sZXZlbF8xIiwiYWRtaW5pc3RyYXRpdmVfYXJlYV9sZXZlbF8yIiwiY291bnRyeSIsImVzdGFibGlzaG1lbnQiLCJmbG9vciIsImxvY2FsaXR5IiwicG9zdGFsX2NvZGUiLCJwcmVtaXNlIiwicm9vbSIsInJvdXRlIiwic3RyZWV0X251bWJlciIsInN1YmxvY2FsaXR5Iiwic3VicHJlbWlzZSIsImdlb1N1Z2dlc3RSZXN1bHRBc05ld0FkZHJlc3MiLCJyZXNwIiwiYWRkcmVzc0NvbXBvbmVudHMiLCJnbWFwcyIsImFkZHJlc3NfY29tcG9uZW50cyIsIm5hbWUiLCJhZGRyZXNzIiwiY2l0eSIsImxpbmVPbmUiLCJsaW5lVHdvIiwicG9zdGNvZGUiLCJzdGF0ZSIsImFkZHJDb21wb25lbnQiLCJhZGRyVHlwZXMiLCJ0eXBlcyIsImFkZHJUeXBlIiwiY29tcG9uZW50U2V0dGluZyIsImFkZHJlc3NWYWwiLCJvbGRMaW5lT25lIiwiY29uY2F0Iiwib2xkQ2l0eSIsImFkZHJlc3NJbk9uZUxpbmUiLCJhIiwibDEiLCJsMiIsImMiLCJzIiwicCIsImNvdW50cnlGdWxsIiwiRmllbGRUeXBlIiwiaXNTZWxlY3RhYmxlIiwiZmllbGRUeXBlIiwiU0VMRUNUIiwiQ0hFQ0tCT1giLCJSQURJTyIsIklNQUdFX1NFTEVDVCIsIkNPTE9VUl9TRUxFQ1QiLCJpc0luc3RydWN0aW9uc1R5cGUiLCJGSUVMRF9JTlNUUlVDVElPTlMiLCJjb3VudHJ5RGVmYXVsdERpY3QiLCJjdXJyZW5jeSIsInN1cHBvcnRlZENvdW50cnlEZWZhdWx0cyIsInN1cHBvcnRlZENvdW50cnlEZWZhdWx0c1dpdGhEZWZhdWx0IiwiY291bnRyeUNvZGUiLCJkZWZhdWx0Q291bnRyeVZhbHVlcyIsImNsZWFuQ2xpZW50RmlsZXMiLCJjbGllbnRGaWxlcyIsImNsaWVudEZpbGUiLCJmaWxlIiwiYXBwZW5kQ2xpZW50VG9Pd25EcmFmdCIsImpvYiIsIm93bkRyYWZ0cyIsImRlc2lnbmVyIiwiY2xpZW50IiwicmVkaXJlY3RPblN1Y2Nlc3MiLCJ1cmwiLCJyZWRpcmVjdFdpdGhWYWx1ZSIsImNsZWFuVXJsIiwicmVwbGFjZSIsIndpbmRvdyIsImxvY2F0aW9uIiwiaHJlZiIsImRlY29kZVVSSSJdLCJzb3VyY2VzIjpbIi4uL3NyYy91dGlscy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQcm9kdWN0VHlwZSwgUm9sZSB9IGZyb20gJy4vdHlwZXMnO1xuXG5leHBvcnQgY29uc3QgaXNvQ291bnRyaWVzOiBhbnkgPSB7XG4gIEFGOiBcIkFmZ2hhbmlzdGFuXCIsXG4gIEFYOiBcIkFsYW5kIElzbGFuZHNcIixcbiAgQUw6IFwiQWxiYW5pYVwiLFxuICBEWjogXCJBbGdlcmlhXCIsXG4gIEFTOiBcIkFtZXJpY2FuIFNhbW9hXCIsXG4gIEFEOiBcIkFuZG9ycmFcIixcbiAgQU86IFwiQW5nb2xhXCIsXG4gIEFJOiBcIkFuZ3VpbGxhXCIsXG4gIEFROiBcIkFudGFyY3RpY2FcIixcbiAgQUc6IFwiQW50aWd1YSBBbmQgQmFyYnVkYVwiLFxuICBBUjogXCJBcmdlbnRpbmFcIixcbiAgQU06IFwiQXJtZW5pYVwiLFxuICBBVzogXCJBcnViYVwiLFxuICBBVTogXCJBdXN0cmFsaWFcIixcbiAgQVQ6IFwiQXVzdHJpYVwiLFxuICBBWjogXCJBemVyYmFpamFuXCIsXG4gIEJTOiBcIkJhaGFtYXNcIixcbiAgQkg6IFwiQmFocmFpblwiLFxuICBCRDogXCJCYW5nbGFkZXNoXCIsXG4gIEJCOiBcIkJhcmJhZG9zXCIsXG4gIEJZOiBcIkJlbGFydXNcIixcbiAgQkU6IFwiQmVsZ2l1bVwiLFxuICBCWjogXCJCZWxpemVcIixcbiAgQko6IFwiQmVuaW5cIixcbiAgQk06IFwiQmVybXVkYVwiLFxuICBCVDogXCJCaHV0YW5cIixcbiAgQk86IFwiQm9saXZpYVwiLFxuICBCQTogXCJCb3NuaWEgQW5kIEhlcnplZ292aW5hXCIsXG4gIEJXOiBcIkJvdHN3YW5hXCIsXG4gIEJWOiBcIkJvdXZldCBJc2xhbmRcIixcbiAgQlI6IFwiQnJhemlsXCIsXG4gIElPOiBcIkJyaXRpc2ggSW5kaWFuIE9jZWFuIFRlcnJpdG9yeVwiLFxuICBCTjogXCJCcnVuZWkgRGFydXNzYWxhbVwiLFxuICBCRzogXCJCdWxnYXJpYVwiLFxuICBCRjogXCJCdXJraW5hIEZhc29cIixcbiAgQkk6IFwiQnVydW5kaVwiLFxuICBLSDogXCJDYW1ib2RpYVwiLFxuICBDTTogXCJDYW1lcm9vblwiLFxuICBDQTogXCJDYW5hZGFcIixcbiAgQ1Y6IFwiQ2FwZSBWZXJkZVwiLFxuICBLWTogXCJDYXltYW4gSXNsYW5kc1wiLFxuICBDRjogXCJDZW50cmFsIEFmcmljYW4gUmVwdWJsaWNcIixcbiAgVEQ6IFwiQ2hhZFwiLFxuICBDTDogXCJDaGlsZVwiLFxuICBDTjogXCJDaGluYVwiLFxuICBDWDogXCJDaHJpc3RtYXMgSXNsYW5kXCIsXG4gIENDOiBcIkNvY29zIChLZWVsaW5nKSBJc2xhbmRzXCIsXG4gIENPOiBcIkNvbG9tYmlhXCIsXG4gIEtNOiBcIkNvbW9yb3NcIixcbiAgQ0c6IFwiQ29uZ29cIixcbiAgQ0Q6IFwiQ29uZ28sIERlbW9jcmF0aWMgUmVwdWJsaWNcIixcbiAgQ0s6IFwiQ29vayBJc2xhbmRzXCIsXG4gIENSOiBcIkNvc3RhIFJpY2FcIixcbiAgQ0k6IFwiQ290ZSBEJ0l2b2lyZVwiLFxuICBIUjogXCJDcm9hdGlhXCIsXG4gIENVOiBcIkN1YmFcIixcbiAgQ1k6IFwiQ3lwcnVzXCIsXG4gIENaOiBcIkN6ZWNoIFJlcHVibGljXCIsXG4gIERLOiBcIkRlbm1hcmtcIixcbiAgREo6IFwiRGppYm91dGlcIixcbiAgRE06IFwiRG9taW5pY2FcIixcbiAgRE86IFwiRG9taW5pY2FuIFJlcHVibGljXCIsXG4gIEVDOiBcIkVjdWFkb3JcIixcbiAgRUc6IFwiRWd5cHRcIixcbiAgU1Y6IFwiRWwgU2FsdmFkb3JcIixcbiAgR1E6IFwiRXF1YXRvcmlhbCBHdWluZWFcIixcbiAgRVI6IFwiRXJpdHJlYVwiLFxuICBFRTogXCJFc3RvbmlhXCIsXG4gIEVUOiBcIkV0aGlvcGlhXCIsXG4gIEZLOiBcIkZhbGtsYW5kIElzbGFuZHMgKE1hbHZpbmFzKVwiLFxuICBGTzogXCJGYXJvZSBJc2xhbmRzXCIsXG4gIEZKOiBcIkZpamlcIixcbiAgRkk6IFwiRmlubGFuZFwiLFxuICBGUjogXCJGcmFuY2VcIixcbiAgR0Y6IFwiRnJlbmNoIEd1aWFuYVwiLFxuICBQRjogXCJGcmVuY2ggUG9seW5lc2lhXCIsXG4gIFRGOiBcIkZyZW5jaCBTb3V0aGVybiBUZXJyaXRvcmllc1wiLFxuICBHQTogXCJHYWJvblwiLFxuICBHTTogXCJHYW1iaWFcIixcbiAgR0U6IFwiR2VvcmdpYVwiLFxuICBERTogXCJHZXJtYW55XCIsXG4gIEdIOiBcIkdoYW5hXCIsXG4gIEdJOiBcIkdpYnJhbHRhclwiLFxuICBHUjogXCJHcmVlY2VcIixcbiAgR0w6IFwiR3JlZW5sYW5kXCIsXG4gIEdEOiBcIkdyZW5hZGFcIixcbiAgR1A6IFwiR3VhZGVsb3VwZVwiLFxuICBHVTogXCJHdWFtXCIsXG4gIEdUOiBcIkd1YXRlbWFsYVwiLFxuICBHRzogXCJHdWVybnNleVwiLFxuICBHTjogXCJHdWluZWFcIixcbiAgR1c6IFwiR3VpbmVhLUJpc3NhdVwiLFxuICBHWTogXCJHdXlhbmFcIixcbiAgSFQ6IFwiSGFpdGlcIixcbiAgSE06IFwiSGVhcmQgSXNsYW5kICYgTWNkb25hbGQgSXNsYW5kc1wiLFxuICBWQTogXCJIb2x5IFNlZSAoVmF0aWNhbiBDaXR5IFN0YXRlKVwiLFxuICBITjogXCJIb25kdXJhc1wiLFxuICBISzogXCJIb25nIEtvbmdcIixcbiAgSFU6IFwiSHVuZ2FyeVwiLFxuICBJUzogXCJJY2VsYW5kXCIsXG4gIElOOiBcIkluZGlhXCIsXG4gIElEOiBcIkluZG9uZXNpYVwiLFxuICBJUjogXCJJcmFuLCBJc2xhbWljIFJlcHVibGljIE9mXCIsXG4gIElROiBcIklyYXFcIixcbiAgSUU6IFwiSXJlbGFuZFwiLFxuICBJTTogXCJJc2xlIE9mIE1hblwiLFxuICBJTDogXCJJc3JhZWxcIixcbiAgSVQ6IFwiSXRhbHlcIixcbiAgSk06IFwiSmFtYWljYVwiLFxuICBKUDogXCJKYXBhblwiLFxuICBKRTogXCJKZXJzZXlcIixcbiAgSk86IFwiSm9yZGFuXCIsXG4gIEtaOiBcIkthemFraHN0YW5cIixcbiAgS0U6IFwiS2VueWFcIixcbiAgS0k6IFwiS2lyaWJhdGlcIixcbiAgS1I6IFwiS29yZWFcIixcbiAgS1c6IFwiS3V3YWl0XCIsXG4gIEtHOiBcIkt5cmd5enN0YW5cIixcbiAgTEE6IFwiTGFvIFBlb3BsZSdzIERlbW9jcmF0aWMgUmVwdWJsaWNcIixcbiAgTFY6IFwiTGF0dmlhXCIsXG4gIExCOiBcIkxlYmFub25cIixcbiAgTFM6IFwiTGVzb3Rob1wiLFxuICBMUjogXCJMaWJlcmlhXCIsXG4gIExZOiBcIkxpYnlhbiBBcmFiIEphbWFoaXJpeWFcIixcbiAgTEk6IFwiTGllY2h0ZW5zdGVpblwiLFxuICBMVDogXCJMaXRodWFuaWFcIixcbiAgTFU6IFwiTHV4ZW1ib3VyZ1wiLFxuICBNTzogXCJNYWNhb1wiLFxuICBNSzogXCJNYWNlZG9uaWFcIixcbiAgTUc6IFwiTWFkYWdhc2NhclwiLFxuICBNVzogXCJNYWxhd2lcIixcbiAgTVk6IFwiTWFsYXlzaWFcIixcbiAgTVY6IFwiTWFsZGl2ZXNcIixcbiAgTUw6IFwiTWFsaVwiLFxuICBNVDogXCJNYWx0YVwiLFxuICBNSDogXCJNYXJzaGFsbCBJc2xhbmRzXCIsXG4gIE1ROiBcIk1hcnRpbmlxdWVcIixcbiAgTVI6IFwiTWF1cml0YW5pYVwiLFxuICBNVTogXCJNYXVyaXRpdXNcIixcbiAgWVQ6IFwiTWF5b3R0ZVwiLFxuICBNWDogXCJNZXhpY29cIixcbiAgRk06IFwiTWljcm9uZXNpYSwgRmVkZXJhdGVkIFN0YXRlcyBPZlwiLFxuICBNRDogXCJNb2xkb3ZhXCIsXG4gIE1DOiBcIk1vbmFjb1wiLFxuICBNTjogXCJNb25nb2xpYVwiLFxuICBNRTogXCJNb250ZW5lZ3JvXCIsXG4gIE1TOiBcIk1vbnRzZXJyYXRcIixcbiAgTUE6IFwiTW9yb2Njb1wiLFxuICBNWjogXCJNb3phbWJpcXVlXCIsXG4gIE1NOiBcIk15YW5tYXJcIixcbiAgTkE6IFwiTmFtaWJpYVwiLFxuICBOUjogXCJOYXVydVwiLFxuICBOUDogXCJOZXBhbFwiLFxuICBOTDogXCJOZXRoZXJsYW5kc1wiLFxuICBBTjogXCJOZXRoZXJsYW5kcyBBbnRpbGxlc1wiLFxuICBOQzogXCJOZXcgQ2FsZWRvbmlhXCIsXG4gIE5aOiBcIk5ldyBaZWFsYW5kXCIsXG4gIE5JOiBcIk5pY2FyYWd1YVwiLFxuICBORTogXCJOaWdlclwiLFxuICBORzogXCJOaWdlcmlhXCIsXG4gIE5VOiBcIk5pdWVcIixcbiAgTkY6IFwiTm9yZm9sayBJc2xhbmRcIixcbiAgTVA6IFwiTm9ydGhlcm4gTWFyaWFuYSBJc2xhbmRzXCIsXG4gIE5POiBcIk5vcndheVwiLFxuICBPTTogXCJPbWFuXCIsXG4gIFBLOiBcIlBha2lzdGFuXCIsXG4gIFBXOiBcIlBhbGF1XCIsXG4gIFBTOiBcIlBhbGVzdGluaWFuIFRlcnJpdG9yeSwgT2NjdXBpZWRcIixcbiAgUEE6IFwiUGFuYW1hXCIsXG4gIFBHOiBcIlBhcHVhIE5ldyBHdWluZWFcIixcbiAgUFk6IFwiUGFyYWd1YXlcIixcbiAgUEU6IFwiUGVydVwiLFxuICBQSDogXCJQaGlsaXBwaW5lc1wiLFxuICBQTjogXCJQaXRjYWlyblwiLFxuICBQTDogXCJQb2xhbmRcIixcbiAgUFQ6IFwiUG9ydHVnYWxcIixcbiAgUFI6IFwiUHVlcnRvIFJpY29cIixcbiAgUUE6IFwiUWF0YXJcIixcbiAgUkU6IFwiUmV1bmlvblwiLFxuICBSTzogXCJSb21hbmlhXCIsXG4gIFJVOiBcIlJ1c3NpYW4gRmVkZXJhdGlvblwiLFxuICBSVzogXCJSd2FuZGFcIixcbiAgQkw6IFwiU2FpbnQgQmFydGhlbGVteVwiLFxuICBTSDogXCJTYWludCBIZWxlbmFcIixcbiAgS046IFwiU2FpbnQgS2l0dHMgQW5kIE5ldmlzXCIsXG4gIExDOiBcIlNhaW50IEx1Y2lhXCIsXG4gIE1GOiBcIlNhaW50IE1hcnRpblwiLFxuICBQTTogXCJTYWludCBQaWVycmUgQW5kIE1pcXVlbG9uXCIsXG4gIFZDOiBcIlNhaW50IFZpbmNlbnQgQW5kIEdyZW5hZGluZXNcIixcbiAgV1M6IFwiU2Ftb2FcIixcbiAgU006IFwiU2FuIE1hcmlub1wiLFxuICBTVDogXCJTYW8gVG9tZSBBbmQgUHJpbmNpcGVcIixcbiAgU0E6IFwiU2F1ZGkgQXJhYmlhXCIsXG4gIFNOOiBcIlNlbmVnYWxcIixcbiAgUlM6IFwiU2VyYmlhXCIsXG4gIFNDOiBcIlNleWNoZWxsZXNcIixcbiAgU0w6IFwiU2llcnJhIExlb25lXCIsXG4gIFNHOiBcIlNpbmdhcG9yZVwiLFxuICBTSzogXCJTbG92YWtpYVwiLFxuICBTSTogXCJTbG92ZW5pYVwiLFxuICBTQjogXCJTb2xvbW9uIElzbGFuZHNcIixcbiAgU086IFwiU29tYWxpYVwiLFxuICBaQTogXCJTb3V0aCBBZnJpY2FcIixcbiAgR1M6IFwiU291dGggR2VvcmdpYSBBbmQgU2FuZHdpY2ggSXNsLlwiLFxuICBFUzogXCJTcGFpblwiLFxuICBMSzogXCJTcmkgTGFua2FcIixcbiAgU0Q6IFwiU3VkYW5cIixcbiAgU1I6IFwiU3VyaW5hbWVcIixcbiAgU0o6IFwiU3ZhbGJhcmQgQW5kIEphbiBNYXllblwiLFxuICBTWjogXCJTd2F6aWxhbmRcIixcbiAgU0U6IFwiU3dlZGVuXCIsXG4gIENIOiBcIlN3aXR6ZXJsYW5kXCIsXG4gIFNZOiBcIlN5cmlhbiBBcmFiIFJlcHVibGljXCIsXG4gIFRXOiBcIlRhaXdhblwiLFxuICBUSjogXCJUYWppa2lzdGFuXCIsXG4gIFRaOiBcIlRhbnphbmlhXCIsXG4gIFRIOiBcIlRoYWlsYW5kXCIsXG4gIFRMOiBcIlRpbW9yLUxlc3RlXCIsXG4gIFRHOiBcIlRvZ29cIixcbiAgVEs6IFwiVG9rZWxhdVwiLFxuICBUTzogXCJUb25nYVwiLFxuICBUVDogXCJUcmluaWRhZCBBbmQgVG9iYWdvXCIsXG4gIFROOiBcIlR1bmlzaWFcIixcbiAgVFI6IFwiVHVya2V5XCIsXG4gIFRNOiBcIlR1cmttZW5pc3RhblwiLFxuICBUQzogXCJUdXJrcyBBbmQgQ2FpY29zIElzbGFuZHNcIixcbiAgVFY6IFwiVHV2YWx1XCIsXG4gIFVHOiBcIlVnYW5kYVwiLFxuICBVQTogXCJVa3JhaW5lXCIsXG4gIEFFOiBcIlVuaXRlZCBBcmFiIEVtaXJhdGVzXCIsXG4gIEdCOiBcIlVuaXRlZCBLaW5nZG9tXCIsXG4gIFVTOiBcIlVuaXRlZCBTdGF0ZXNcIixcbiAgVU06IFwiVW5pdGVkIFN0YXRlcyBPdXRseWluZyBJc2xhbmRzXCIsXG4gIFVZOiBcIlVydWd1YXlcIixcbiAgVVo6IFwiVXpiZWtpc3RhblwiLFxuICBWVTogXCJWYW51YXR1XCIsXG4gIFZFOiBcIlZlbmV6dWVsYVwiLFxuICBWTjogXCJWaWV0IE5hbVwiLFxuICBWRzogXCJWaXJnaW4gSXNsYW5kcywgQnJpdGlzaFwiLFxuICBWSTogXCJWaXJnaW4gSXNsYW5kcywgVS5TLlwiLFxuICBXRjogXCJXYWxsaXMgQW5kIEZ1dHVuYVwiLFxuICBFSDogXCJXZXN0ZXJuIFNhaGFyYVwiLFxuICBZRTogXCJZZW1lblwiLFxuICBaTTogXCJaYW1iaWFcIixcbiAgWlc6IFwiWmltYmFid2VcIlxufTtcblxuZXhwb3J0IGZ1bmN0aW9uIHVzZXJEb21haW5zQnlSb2xlcyh1c2VyOiBhbnksIHJvbGVzOiBBcnJheTxudW1iZXI+KSB7XG4gIGNvbnN0IGVEID0gdXNlciAmJiB1c2VyLmVucm9sbGVkRG9tYWlucyA/IHVzZXIuZW5yb2xsZWREb21haW5zIDogW107XG4gIGNvbnN0IGRvbWFpbnMgPSBbXTtcbiAgbGV0IGkgPSAwO1xuICBmb3IgKGk7IGkgPCBlRC5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IGUgPSBlRFtpXTtcbiAgICBpZiAocm9sZXMuaW5jbHVkZXMoZS5yb2xlKSkge1xuICAgICAgZG9tYWlucy5wdXNoKGUuZG9tYWluKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIGRvbWFpbnM7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VyQWRtaW5Eb21haW5zKHVzZXI6IGFueSkge1xuICByZXR1cm4gdXNlckRvbWFpbnNCeVJvbGVzKHVzZXIsIFtSb2xlLkFETUlOLCBSb2xlLk1BTkFHRVJdKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGlzUHJvZHVjdFN1cHBsaWVyTU9EKHByb2R1Y3Q6IGFueSkge1xuICBjb25zdCBwcm9kdWN0VHlwZSA9IHByb2R1Y3QgJiYgcHJvZHVjdC5wcm9kdWN0VHlwZVxuICByZXR1cm4gcHJvZHVjdCAmJiBbXG4gICAgU3RyaW5nKFByb2R1Y3RUeXBlLlNVUFBMSUVSX01PRCksXG4gICAgU3RyaW5nKFByb2R1Y3RUeXBlLlNVUFBMSUVSX1JFU0VMTF9NT0QpXG4gIF0uaW5jbHVkZXMoU3RyaW5nKHByb2R1Y3RUeXBlKSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc1VzZXJSZWdpc3RlcmVkKHVzZXI6IGFueSkge1xuICBjb25zdCBpZCA9IHVzZXIgPyB1c2VyLmlkIDogbnVsbDtcbiAgcmV0dXJuIGlkICE9PSB1bmRlZmluZWQgJiYgaWQgIT09IG51bGwgJiYgaWQgPiAwO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNSZWdpc3RlcmVkQW5kSGFzU3RvcmUodXNlcjogYW55KSB7XG4gIGNvbnN0IGlkID0gdXNlciA/IHVzZXIuaWQgOiBudWxsO1xuICByZXR1cm4gaWQgIT09IHVuZGVmaW5lZCAmJiBpZCAhPT0gbnVsbCAmJiBpZCA+IDAgJiYgdXNlci5oYXNTdG9yZTtcbn1cblxuY29uc3Qgc3VwcG9ydGVkTnVtYmVyczogYW55ID0ge1xuICBBVTogJ0F1c3RyYWxpYSAoKzYxKScsXG4gIEFFOiAnVW5pdGVkIEFyYWIgRW1pcmF0ZXMgKCs5NzEpJyxcbiAgQkg6ICdCYWhyYWluICgrOTczKScsXG4gIENOOiAnQ2hpbmEgKCs4NiknLFxuICBESzogJ0Rlbm1hcmsgKCs0NSknLFxuICBFUzogJ1NwYWluICgrMzQpJyxcbiAgRlI6ICdGcmFuY2UgKCszMyknLFxuICBHQjogJ1VuaXRlZCBLaW5nZG9tICgrNDQpJyxcbiAgSEs6ICdIb25nIEtvbmcgKCs4NTIpJyxcbiAgSUQ6ICdJbmRvbmVzaWEgKCs2MiknLFxuICBJTjogJ0luZGlhICgrOTEpJyxcbiAgSVQ6ICdJdGFseSAoKzM5KScsXG4gIEtSOiAnU291dGggS29yZWEgKCs4MiknLFxuICBOQzogJ05ldyBDYWxlZG9uaWEgKCs2ODcpJyxcbiAgTlo6ICdOZXcgWmVhbGFuZCAoKzY0KScsXG4gIE9NOiAnT21hbiAoKzk2OCknLFxuICBQSDogJ1BoaWxpcHBpbmVzICgrNjMpJyxcbiAgUFQ6ICdQb3J0dWdhbCAoKzM1MSknLFxuICBRQTogJ1FhdGFyICgrOTc0KScsXG4gIFNFOiAnU3dlZGVuICgrNDYpJyxcbiAgU0c6ICdTaW5nYXBvcmUgKCs2NSknLFxuICBUSDogJ1RoYWlsYW5kICgrNjYpJyxcbiAgVVM6ICdVbml0ZWQgU3RhdGVzICgrMSknLFxuICBaQTogJ1NvdXRoIEFmcmljYSAoKzI3KScsXG59O1xuXG5leHBvcnQgY29uc3QgcGhvbmVPcHRpb25zID0gT2JqZWN0LmtleXMoc3VwcG9ydGVkTnVtYmVycykubWFwKChrZXkpID0+ICh7XG4gIHZhbHVlOiBrZXksXG4gIGxhYmVsOiBzdXBwb3J0ZWROdW1iZXJzW2tleV0sXG59KSk7XG5cbmV4cG9ydCBjb25zdCBhZGRyZXNzQ29tcG9uZW50c1NldHRpbmdzOiBhbnkgPSB7XG4gIGFkbWluaXN0cmF0aXZlX2FyZWFfbGV2ZWxfMTogJ3Nob3J0X25hbWUnLFxuICBhZG1pbmlzdHJhdGl2ZV9hcmVhX2xldmVsXzI6ICdzaG9ydF9uYW1lJyxcbiAgY291bnRyeTogJ3Nob3J0X25hbWUnLFxuICBlc3RhYmxpc2htZW50OiAnbG9uZ19uYW1lJyxcbiAgZmxvb3I6ICdzaG9ydF9uYW1lJyxcbiAgbG9jYWxpdHk6ICdsb25nX25hbWUnLFxuICBwb3N0YWxfY29kZTogJ3Nob3J0X25hbWUnLFxuICBwcmVtaXNlOiAnc2hvcnRfbmFtZScsXG4gIHJvb206ICdsb25nX25hbWUnLFxuICByb3V0ZTogJ3Nob3J0X25hbWUnLFxuICBzdHJlZXRfbnVtYmVyOiAnc2hvcnRfbmFtZScsXG4gIHN1YmxvY2FsaXR5OiAnbG9uZ19uYW1lJyxcbiAgc3VicHJlbWlzZTogJ3Nob3J0X25hbWUnLFxufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGdlb1N1Z2dlc3RSZXN1bHRBc05ld0FkZHJlc3MocmVzcDogYW55KSB7XG4gIGNvbnN0IGFkZHJlc3NDb21wb25lbnRzID0gcmVzcCAmJiByZXNwLmdtYXBzID9cbiAgICByZXNwLmdtYXBzLmFkZHJlc3NfY29tcG9uZW50cyA6IG51bGw7XG4gIGNvbnN0IG5hbWUgPSByZXNwICYmIHJlc3AuZ21hcHMgJiYgcmVzcC5nbWFwcy5uYW1lO1xuICBjb25zdCBhZGRyZXNzID0ge1xuICAgIGNpdHk6ICcnLFxuICAgIGNvdW50cnk6ICcnLFxuICAgIGxpbmVPbmU6IG5hbWUgPyBuYW1lIDogJycsXG4gICAgbGluZVR3bzogJycsXG4gICAgcG9zdGNvZGU6ICcnLFxuICAgIHN0YXRlOiAnJyxcbiAgfTtcbiAgbGV0IGk7XG4gIGlmIChhZGRyZXNzQ29tcG9uZW50cykge1xuICAgIGZvciAoaSA9IDA7IGkgPCBhZGRyZXNzQ29tcG9uZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgYWRkckNvbXBvbmVudCA9IGFkZHJlc3NDb21wb25lbnRzW2ldO1xuICAgICAgY29uc3QgYWRkclR5cGVzID0gYWRkckNvbXBvbmVudC50eXBlcztcbiAgICAgIGNvbnN0IGFkZHJUeXBlID0gYWRkclR5cGVzLmxlbmd0aCA+IDAgPyBhZGRyVHlwZXNbMF0gOiBudWxsO1xuICAgICAgY29uc3QgY29tcG9uZW50U2V0dGluZyA9IGFkZHJUeXBlID9cbiAgICAgICAgYWRkcmVzc0NvbXBvbmVudHNTZXR0aW5nc1thZGRyVHlwZV0gOiBudWxsO1xuICAgICAgaWYgKGNvbXBvbmVudFNldHRpbmcpIHtcbiAgICAgICAgY29uc3QgYWRkcmVzc1ZhbCA9IGFkZHJDb21wb25lbnRbY29tcG9uZW50U2V0dGluZ107XG4gICAgICAgIHN3aXRjaCAoYWRkclR5cGUpIHtcbiAgICAgICAgICBjYXNlICdlc3RhYmxpc2htZW50JzpcbiAgICAgICAgICBjYXNlICdyb29tJzpcbiAgICAgICAgICBjYXNlICdmbG9vcic6XG4gICAgICAgICAgY2FzZSAnc3RyZWV0X251bWJlcic6XG4gICAgICAgICAgY2FzZSAncHJlbWlzZSc6XG4gICAgICAgICAgY2FzZSAnc3VicHJlbWlzZSc6XG4gICAgICAgICAgY2FzZSAncm91dGUnOlxuICAgICAgICAgICAgY29uc3Qgb2xkTGluZU9uZSA9IGFkZHJlc3MubGluZU9uZTtcbiAgICAgICAgICAgIGFkZHJlc3MubGluZU9uZSA9IG9sZExpbmVPbmUuaW5jbHVkZXMoYWRkcmVzc1ZhbCkgP1xuICAgICAgICAgICAgICBvbGRMaW5lT25lIDogYCR7b2xkTGluZU9uZX0gJHthZGRyZXNzVmFsfWA7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlICdsb2NhbGl0eSc6XG4gICAgICAgICAgY2FzZSAnc3VibG9jYWxpdHknOlxuICAgICAgICAgICAgY29uc3Qgb2xkQ2l0eSA9IGFkZHJlc3MuY2l0eSA/IGAke2FkZHJlc3MuY2l0eX0gYCA6ICcnXG4gICAgICAgICAgICBhZGRyZXNzLmNpdHkgPSBvbGRDaXR5ICsgYWRkcmVzc1ZhbDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ2FkbWluaXN0cmF0aXZlX2FyZWFfbGV2ZWxfMSc6XG4gICAgICAgICAgICBhZGRyZXNzLnN0YXRlID0gYWRkcmVzc1ZhbDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGNhc2UgJ2FkbWluaXN0cmF0aXZlX2FyZWFfbGV2ZWxfMic6XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlICdjb3VudHJ5JzpcbiAgICAgICAgICAgIGFkZHJlc3MuY291bnRyeSA9IGFkZHJlc3NWYWw7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICBjYXNlICdwb3N0YWxfY29kZSc6XG4gICAgICAgICAgICBhZGRyZXNzLnBvc3Rjb2RlID0gYWRkcmVzc1ZhbDtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gYWRkcmVzcztcbiAgfVxuICByZXR1cm4gbnVsbDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFkZHJlc3NJbk9uZUxpbmUoYWRkcmVzczogYW55KSB7XG4gIGNvbnN0IGEgPSBhZGRyZXNzID8gYWRkcmVzcyA6IHt9O1xuICBjb25zdCB7XG4gICAgY2l0eSxcbiAgICBjb3VudHJ5LFxuICAgIGxpbmVPbmUsXG4gICAgbGluZVR3byxcbiAgICBwb3N0Y29kZSxcbiAgICBzdGF0ZVxuICB9ID0gYTtcbiAgY29uc3QgbDEgPSBsaW5lT25lID8gYCR7bGluZU9uZX0gYCA6ICcnO1xuICBjb25zdCBsMiA9IGxpbmVUd28gPyBgJHtsaW5lVHdvfSBgIDogJyc7XG4gIGNvbnN0IGMgPSBjaXR5ID8gYCR7Y2l0eX0gYCA6ICcnO1xuICBjb25zdCBzID0gc3RhdGUgPyBgJHtzdGF0ZX0gYCA6ICcnO1xuICBjb25zdCBwID0gcG9zdGNvZGUgPyBgJHtwb3N0Y29kZX0gYCA6ICcnO1xuICBjb25zdCBjb3VudHJ5RnVsbCA9IGNvdW50cnkgPyBpc29Db3VudHJpZXNbY291bnRyeV0gOiAnJztcbiAgcmV0dXJuIGwxICsgbDIgKyBjICsgcyArIHAgKyBjb3VudHJ5RnVsbDtcbn1cblxuZXhwb3J0IGVudW0gRmllbGRUeXBlIHtcbiAgVEVYVF9JTlBVVCA9IDEsXG4gIFNFTEVDVCA9IDIsXG4gIEZJTEVfVVBMT0FEID0gMyxcbiAgVEVYVF9BUkVBID0gNCxcbiAgTlVNQkVSX0lOUFVUID0gNSxcbiAgQ0hFQ0tCT1ggPSA2LFxuICBSQURJTyA9IDcsXG4gIEZJRUxEX0lOU1RSVUNUSU9OUyA9IDgsXG4gIElNQUdFX1NFTEVDVCA9IDksXG4gIENPTE9VUl9QSUNLRVIgPSAxMCxcbiAgQ09MT1VSX1NFTEVDVCA9IDExLFxufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNTZWxlY3RhYmxlKGZpZWxkVHlwZTogbnVtYmVyKSB7XG4gIHJldHVybiBbXG4gICAgRmllbGRUeXBlLlNFTEVDVCxcbiAgICBGaWVsZFR5cGUuQ0hFQ0tCT1gsXG4gICAgRmllbGRUeXBlLlJBRElPLFxuICAgIEZpZWxkVHlwZS5JTUFHRV9TRUxFQ1QsXG4gICAgRmllbGRUeXBlLkNPTE9VUl9TRUxFQ1RcbiAgXS5pbmNsdWRlcyhmaWVsZFR5cGUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNJbnN0cnVjdGlvbnNUeXBlKGZpZWxkVHlwZTogbnVtYmVyKSB7XG4gIHJldHVybiBTdHJpbmcoRmllbGRUeXBlLkZJRUxEX0lOU1RSVUNUSU9OUykgPT09IFN0cmluZyhmaWVsZFR5cGUpO1xufVxuXG5leHBvcnQgY29uc3QgY291bnRyeURlZmF1bHREaWN0ID0gKGN1cnJlbmN5OiBzdHJpbmcpID0+IHtcbiAgcmV0dXJuIHtjdXJyZW5jeTogY3VycmVuY3l9O1xufTtcbiAgXG5leHBvcnQgY29uc3Qgc3VwcG9ydGVkQ291bnRyeURlZmF1bHRzOiBhbnkgPSB7XG4gIEFFOiBjb3VudHJ5RGVmYXVsdERpY3QoJ1VTRCcpLFxuICBBVTogY291bnRyeURlZmF1bHREaWN0KCdBVUQnKSxcbiAgQkg6IGNvdW50cnlEZWZhdWx0RGljdCgnVVNEJyksXG4gIENIOiBjb3VudHJ5RGVmYXVsdERpY3QoJ0NOWScpLFxuICBESzogY291bnRyeURlZmF1bHREaWN0KCdFVVInKSxcbiAgRVM6IGNvdW50cnlEZWZhdWx0RGljdCgnRVVSJyksXG4gIEZSOiBjb3VudHJ5RGVmYXVsdERpY3QoJ0VVUicpLFxuICBHQjogY291bnRyeURlZmF1bHREaWN0KCdHQlAnKSxcbiAgSEs6IGNvdW50cnlEZWZhdWx0RGljdCgnSEtEJyksXG4gIElEOiBjb3VudHJ5RGVmYXVsdERpY3QoJ1VTRCcpLFxuICBJTjogY291bnRyeURlZmF1bHREaWN0KCdJTlInKSxcbiAgSVQ6IGNvdW50cnlEZWZhdWx0RGljdCgnRVVSJyksXG4gIEtSOiBjb3VudHJ5RGVmYXVsdERpY3QoJ1VTRCcpLFxuICBOQzogY291bnRyeURlZmF1bHREaWN0KCdVU0QnKSxcbiAgTlo6IGNvdW50cnlEZWZhdWx0RGljdCgnTlpEJyksXG4gIE9NOiBjb3VudHJ5RGVmYXVsdERpY3QoJ1VTRCcpLFxuICBQSDogY291bnRyeURlZmF1bHREaWN0KCdVU0QnKSxcbiAgUFQ6IGNvdW50cnlEZWZhdWx0RGljdCgnRVVSJyksXG4gIFFBOiBjb3VudHJ5RGVmYXVsdERpY3QoJ1VTRCcpLFxuICBTRTogY291bnRyeURlZmF1bHREaWN0KCdVU0QnKSxcbiAgU0c6IGNvdW50cnlEZWZhdWx0RGljdCgnU0dEJyksXG4gIFRIOiBjb3VudHJ5RGVmYXVsdERpY3QoJ1VTRCcpLFxuICBVUzogY291bnRyeURlZmF1bHREaWN0KCdVU0QnKSxcbiAgWkE6IGNvdW50cnlEZWZhdWx0RGljdCgnVVNEJyksXG59O1xuICBcbmV4cG9ydCBjb25zdCBzdXBwb3J0ZWRDb3VudHJ5RGVmYXVsdHNXaXRoRGVmYXVsdCA9IChjb3VudHJ5Q29kZTogYW55KSA9PiB7XG4gIGNvbnN0IGRlZmF1bHRDb3VudHJ5VmFsdWVzID0gc3VwcG9ydGVkQ291bnRyeURlZmF1bHRzW2NvdW50cnlDb2RlXTtcbiAgcmV0dXJuIGRlZmF1bHRDb3VudHJ5VmFsdWVzID8gZGVmYXVsdENvdW50cnlWYWx1ZXMgOiBzdXBwb3J0ZWRDb3VudHJ5RGVmYXVsdHMuQVU7XG59O1xuXG5pbnRlcmZhY2UgQ2xpZW50RmlsZUFuZE9iamVjdElkIHtcbiAgZmlsZTogYW55O1xuICBvYmplY3RJZDogc3RyaW5nO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY2xlYW5DbGllbnRGaWxlcyhjbGllbnRGaWxlczogQ2xpZW50RmlsZUFuZE9iamVjdElkW10pIHtcbiAgcmV0dXJuIGNsaWVudEZpbGVzLm1hcCgoY2xpZW50RmlsZTogQ2xpZW50RmlsZUFuZE9iamVjdElkKSA9PiBjbGllbnRGaWxlLmZpbGUpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gYXBwZW5kQ2xpZW50VG9Pd25EcmFmdChqb2I6IGFueSkge1xuICBjb25zdCB7IG93bkRyYWZ0cyB9ID0gam9iO1xuICBpZiAoam9iLm93bkRyYWZ0cyAmJiBqb2Iub3duRHJhZnRzLmxlbmd0aCkge1xuICAgIGpvYi5vd25EcmFmdHNbMF0uZGVzaWduZXIgPSBqb2IuY2xpZW50O1xuICB9XG4gIHJldHVybiBqb2I7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZWRpcmVjdE9uU3VjY2VzcyhcbiAgdXJsOiBzdHJpbmcsIHJlZGlyZWN0V2l0aFZhbHVlPzogYm9vbGVhbiwgdmFsdWU/OiBhbnkpIHtcbiAgbGV0IGNsZWFuVXJsID0gdXJsLlxuICAgIHJlcGxhY2UoJyUyNycsICcnKS5cbiAgICByZXBsYWNlKCclOTEnLCAnJykuXG4gICAgcmVwbGFjZSgnJTkyJywgJycpLlxuICAgIHJlcGxhY2UoJyU5MycsICcnKS5cbiAgICByZXBsYWNlKCclOTQnLCAnJyk7XG4gIHdpbmRvdy5sb2NhdGlvbi5ocmVmID0gZGVjb2RlVVJJKFxuICAgIHJlZGlyZWN0V2l0aFZhbHVlID8gYCR7Y2xlYW5Vcmx9bWVyY2hpVmFsdWU9JHt2YWx1ZX1gIDogY2xlYW5VcmxcbiAgKTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUEsU0FBU0EsV0FBVyxFQUFFQyxJQUFJLFFBQVEsU0FBUztBQUUzQyxPQUFPLElBQU1DLFlBQWlCLEdBQUc7RUFDL0JDLEVBQUUsRUFBRSxhQUFhO0VBQ2pCQyxFQUFFLEVBQUUsZUFBZTtFQUNuQkMsRUFBRSxFQUFFLFNBQVM7RUFDYkMsRUFBRSxFQUFFLFNBQVM7RUFDYkMsRUFBRSxFQUFFLGdCQUFnQjtFQUNwQkMsRUFBRSxFQUFFLFNBQVM7RUFDYkMsRUFBRSxFQUFFLFFBQVE7RUFDWkMsRUFBRSxFQUFFLFVBQVU7RUFDZEMsRUFBRSxFQUFFLFlBQVk7RUFDaEJDLEVBQUUsRUFBRSxxQkFBcUI7RUFDekJDLEVBQUUsRUFBRSxXQUFXO0VBQ2ZDLEVBQUUsRUFBRSxTQUFTO0VBQ2JDLEVBQUUsRUFBRSxPQUFPO0VB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