payload 2.4.0 → 2.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (141) hide show
  1. package/components/elements.d.ts +2 -0
  2. package/components/elements.js +9 -1
  3. package/components/forms.d.ts +4 -0
  4. package/components/forms.js +17 -1
  5. package/dist/admin/components/elements/DatePicker/index.scss +4 -0
  6. package/dist/admin/components/elements/Header/index.d.ts.map +1 -1
  7. package/dist/admin/components/elements/Header/index.js +72 -5
  8. package/dist/admin/components/elements/Header/index.scss +57 -2
  9. package/dist/admin/components/elements/ListDrawer/DrawerContent.d.ts.map +1 -1
  10. package/dist/admin/components/elements/ListDrawer/DrawerContent.js +12 -4
  11. package/dist/admin/components/elements/Nav/index.scss +3 -7
  12. package/dist/admin/components/forms/Form/getDataByPath.d.ts.map +1 -1
  13. package/dist/admin/components/forms/Form/getDataByPath.js +4 -1
  14. package/dist/admin/components/forms/field-types/JSON/index.d.ts.map +1 -1
  15. package/dist/admin/components/forms/field-types/JSON/index.js +6 -2
  16. package/dist/admin/components/forms/field-types/Relationship/index.d.ts.map +1 -1
  17. package/dist/admin/components/forms/field-types/Relationship/index.js +8 -3
  18. package/dist/admin/components/forms/field-types/Relationship/types.d.ts +1 -1
  19. package/dist/admin/components/forms/field-types/Relationship/types.d.ts.map +1 -1
  20. package/dist/admin/components/forms/field-types/getFilterOptionsQuery.d.ts.map +1 -1
  21. package/dist/admin/components/forms/field-types/getFilterOptionsQuery.js +12 -1
  22. package/dist/admin/components/templates/Default/index.d.ts +5 -1
  23. package/dist/admin/components/templates/Default/index.d.ts.map +1 -1
  24. package/dist/admin/components/templates/Default/index.js +1 -1
  25. package/dist/admin/components/templates/Default/index.scss +27 -9
  26. package/dist/admin/components/utilities/ActionsProvider/index.d.ts +11 -0
  27. package/dist/admin/components/utilities/ActionsProvider/index.d.ts.map +1 -0
  28. package/dist/admin/components/utilities/ActionsProvider/index.js +86 -0
  29. package/dist/admin/components/views/API/index.d.ts.map +1 -1
  30. package/dist/admin/components/views/API/index.js +12 -1
  31. package/dist/admin/components/views/Dashboard/index.d.ts.map +1 -1
  32. package/dist/admin/components/views/Dashboard/index.js +8 -1
  33. package/dist/admin/components/views/Global/Default.d.ts.map +1 -1
  34. package/dist/admin/components/views/Global/Default.js +57 -2
  35. package/dist/admin/components/views/LivePreview/index.d.ts.map +1 -1
  36. package/dist/admin/components/views/LivePreview/index.js +14 -1
  37. package/dist/admin/components/views/Routes/index.d.ts.map +1 -1
  38. package/dist/admin/components/views/Routes/index.js +4 -3
  39. package/dist/admin/components/views/Version/RenderFieldsToDiff/index.js +6 -3
  40. package/dist/admin/components/views/Version/SelectLocales/index.d.ts.map +1 -1
  41. package/dist/admin/components/views/Version/SelectLocales/index.js +16 -3
  42. package/dist/admin/components/views/Version/Version.d.ts.map +1 -1
  43. package/dist/admin/components/views/Version/Version.js +12 -1
  44. package/dist/admin/components/views/Versions/index.d.ts.map +1 -1
  45. package/dist/admin/components/views/Versions/index.js +28 -5
  46. package/dist/admin/components/views/collections/Edit/Default.d.ts.map +1 -1
  47. package/dist/admin/components/views/collections/Edit/Default.js +19 -1
  48. package/dist/admin/components/views/collections/List/formatFields.d.ts.map +1 -1
  49. package/dist/admin/components/views/collections/List/formatFields.js +20 -17
  50. package/dist/admin/components/views/collections/List/index.d.ts.map +1 -1
  51. package/dist/admin/components/views/collections/List/index.js +19 -3
  52. package/dist/admin/hooks/useThumbnail.d.ts.map +1 -1
  53. package/dist/admin/hooks/useThumbnail.js +4 -1
  54. package/dist/auth/baseFields/verification.d.ts.map +1 -1
  55. package/dist/auth/baseFields/verification.js +6 -1
  56. package/dist/auth/operations/local/forgotPassword.d.ts +2 -1
  57. package/dist/auth/operations/local/forgotPassword.d.ts.map +1 -1
  58. package/dist/auth/operations/local/forgotPassword.js +3 -3
  59. package/dist/auth/operations/local/login.d.ts +2 -1
  60. package/dist/auth/operations/local/login.d.ts.map +1 -1
  61. package/dist/auth/operations/local/login.js +3 -3
  62. package/dist/auth/operations/local/resetPassword.d.ts +2 -1
  63. package/dist/auth/operations/local/resetPassword.d.ts.map +1 -1
  64. package/dist/auth/operations/local/resetPassword.js +3 -3
  65. package/dist/auth/operations/local/unlock.d.ts +2 -1
  66. package/dist/auth/operations/local/unlock.d.ts.map +1 -1
  67. package/dist/auth/operations/local/unlock.js +3 -3
  68. package/dist/auth/operations/local/verifyEmail.d.ts +2 -1
  69. package/dist/auth/operations/local/verifyEmail.d.ts.map +1 -1
  70. package/dist/auth/operations/local/verifyEmail.js +3 -3
  71. package/dist/collections/config/schema.d.ts.map +1 -1
  72. package/dist/collections/config/schema.js +5 -2
  73. package/dist/collections/config/types.d.ts +4 -1
  74. package/dist/collections/config/types.d.ts.map +1 -1
  75. package/dist/collections/config/types.js +1 -1
  76. package/dist/collections/graphql/init.d.ts.map +1 -1
  77. package/dist/collections/graphql/init.js +19 -9
  78. package/dist/config/schema.d.ts.map +1 -1
  79. package/dist/config/schema.js +2 -1
  80. package/dist/config/shared/componentSchema.d.ts.map +1 -1
  81. package/dist/config/shared/componentSchema.js +2 -1
  82. package/dist/config/types.d.ts +6 -0
  83. package/dist/config/types.d.ts.map +1 -1
  84. package/dist/config/types.js +1 -1
  85. package/dist/errors/DuplicateFieldName.d.ts +6 -0
  86. package/dist/errors/DuplicateFieldName.d.ts.map +1 -0
  87. package/dist/errors/DuplicateFieldName.js +24 -0
  88. package/dist/errors/index.d.ts +1 -0
  89. package/dist/errors/index.d.ts.map +1 -1
  90. package/dist/errors/index.js +5 -1
  91. package/dist/exports/components/elements.d.ts +2 -0
  92. package/dist/exports/components/elements.d.ts.map +1 -1
  93. package/dist/exports/components/elements.js +9 -1
  94. package/dist/exports/components/forms.d.ts +4 -0
  95. package/dist/exports/components/forms.d.ts.map +1 -1
  96. package/dist/exports/components/forms.js +17 -1
  97. package/dist/fields/config/sanitize.d.ts +2 -1
  98. package/dist/fields/config/sanitize.d.ts.map +1 -1
  99. package/dist/fields/config/sanitize.js +14 -3
  100. package/dist/fields/config/types.d.ts +1 -1
  101. package/dist/fields/config/types.d.ts.map +1 -1
  102. package/dist/fields/config/types.js +1 -1
  103. package/dist/fields/hooks/afterRead/promise.d.ts.map +1 -1
  104. package/dist/fields/hooks/afterRead/promise.js +4 -2
  105. package/dist/fields/validations.d.ts.map +1 -1
  106. package/dist/fields/validations.js +12 -2
  107. package/dist/globals/graphql/init.d.ts.map +1 -1
  108. package/dist/globals/graphql/init.js +8 -5
  109. package/dist/globals/operations/local/findOne.d.ts +2 -1
  110. package/dist/globals/operations/local/findOne.d.ts.map +1 -1
  111. package/dist/globals/operations/local/findOne.js +3 -3
  112. package/dist/globals/operations/local/findVersionByID.d.ts +2 -1
  113. package/dist/globals/operations/local/findVersionByID.d.ts.map +1 -1
  114. package/dist/globals/operations/local/findVersionByID.js +3 -3
  115. package/dist/globals/operations/local/findVersions.d.ts +2 -1
  116. package/dist/globals/operations/local/findVersions.d.ts.map +1 -1
  117. package/dist/globals/operations/local/findVersions.js +3 -3
  118. package/dist/globals/operations/local/restoreVersion.d.ts +2 -1
  119. package/dist/globals/operations/local/restoreVersion.d.ts.map +1 -1
  120. package/dist/globals/operations/local/restoreVersion.js +3 -3
  121. package/dist/globals/operations/local/update.d.ts +2 -1
  122. package/dist/globals/operations/local/update.d.ts.map +1 -1
  123. package/dist/globals/operations/local/update.js +3 -3
  124. package/dist/graphql/schema/buildMutationInputType.d.ts +1 -1
  125. package/dist/graphql/schema/buildMutationInputType.d.ts.map +1 -1
  126. package/dist/graphql/schema/buildMutationInputType.js +22 -11
  127. package/dist/graphql/schema/buildObjectType.d.ts.map +1 -1
  128. package/dist/graphql/schema/buildObjectType.js +38 -17
  129. package/dist/graphql/schema/buildPoliciesType.d.ts.map +1 -1
  130. package/dist/graphql/schema/buildPoliciesType.js +3 -2
  131. package/dist/uploads/generateFileData.d.ts.map +1 -1
  132. package/dist/uploads/generateFileData.js +8 -6
  133. package/dist/uploads/getExternalFile.d.ts +9 -0
  134. package/dist/uploads/getExternalFile.d.ts.map +1 -0
  135. package/dist/uploads/getExternalFile.js +76 -0
  136. package/dist/uploads/imageResizer.d.ts.map +1 -1
  137. package/dist/uploads/imageResizer.js +4 -2
  138. package/package.json +1 -1
  139. package/dist/uploads/getFileByURL.d.ts +0 -4
  140. package/dist/uploads/getFileByURL.d.ts.map +0 -1
  141. package/dist/uploads/getFileByURL.js +0 -38
@@ -29,7 +29,8 @@ function _interop_require_default(obj) {
29
29
  };
30
30
  }
31
31
  const buildFields = (label, fieldsToBuild)=>fieldsToBuild.reduce((builtFields, field)=>{
32
- if (!field.hidden) {
32
+ const includeField = !field.hidden && field.type !== 'ui';
33
+ if (includeField) {
33
34
  if (field.name) {
34
35
  const fieldName = (0, _formatName.default)(field.name);
35
36
  const objectTypeFields = [
@@ -206,4 +207,4 @@ function buildPoliciesType(payload) {
206
207
  });
207
208
  }
208
209
 
209
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ncmFwaHFsL3NjaGVtYS9idWlsZFBvbGljaWVzVHlwZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBHcmFwaFFMQm9vbGVhbiwgR3JhcGhRTE5vbk51bGwsIEdyYXBoUUxPYmplY3RUeXBlIH0gZnJvbSAnZ3JhcGhxbCdcbmltcG9ydCB7IEdyYXBoUUxKU09OT2JqZWN0IH0gZnJvbSAnZ3JhcGhxbC10eXBlLWpzb24nXG5cbmltcG9ydCB0eXBlIHsgQ29sbGVjdGlvbkNvbmZpZywgU2FuaXRpemVkQ29sbGVjdGlvbkNvbmZpZyB9IGZyb20gJy4uLy4uL2NvbGxlY3Rpb25zL2NvbmZpZy90eXBlcydcbmltcG9ydCB0eXBlIHsgRmllbGQgfSBmcm9tICcuLi8uLi9maWVsZHMvY29uZmlnL3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBHbG9iYWxDb25maWcsIFNhbml0aXplZEdsb2JhbENvbmZpZyB9IGZyb20gJy4uLy4uL2dsb2JhbHMvY29uZmlnL3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBQYXlsb2FkIH0gZnJvbSAnLi4vLi4vcGF5bG9hZCdcblxuaW1wb3J0IHsgdG9Xb3JkcyB9IGZyb20gJy4uLy4uL3V0aWxpdGllcy9mb3JtYXRMYWJlbHMnXG5pbXBvcnQgZm9ybWF0TmFtZSBmcm9tICcuLi91dGlsaXRpZXMvZm9ybWF0TmFtZSdcblxudHlwZSBPcGVyYXRpb25UeXBlID0gJ2NyZWF0ZScgfCAnZGVsZXRlJyB8ICdyZWFkJyB8ICdyZWFkVmVyc2lvbnMnIHwgJ3VubG9jaycgfCAndXBkYXRlJ1xuXG50eXBlIEFjY2Vzc1Njb3BlcyA9ICdkb2NBY2Nlc3MnIHwgdW5kZWZpbmVkXG5cbnR5cGUgT2JqZWN0VHlwZUZpZWxkcyA9IHtcbiAgW2tleSBpbiAnZmllbGRzJyB8IE9wZXJhdGlvblR5cGVdPzogeyB0eXBlOiBHcmFwaFFMT2JqZWN0VHlwZSB9XG59XG5cbmNvbnN0IGJ1aWxkRmllbGRzID0gKGxhYmVsLCBmaWVsZHNUb0J1aWxkKSA9PlxuICBmaWVsZHNUb0J1aWxkLnJlZHVjZSgoYnVpbHRGaWVsZHMsIGZpZWxkKSA9PiB7XG4gICAgaWYgKCFmaWVsZC5oaWRkZW4pIHtcbiAgICAgIGlmIChmaWVsZC5uYW1lKSB7XG4gICAgICAgIGNvbnN0IGZpZWxkTmFtZSA9IGZvcm1hdE5hbWUoZmllbGQubmFtZSlcblxuICAgICAgICBjb25zdCBvYmplY3RUeXBlRmllbGRzOiBPYmplY3RUeXBlRmllbGRzID0gWydjcmVhdGUnLCAncmVhZCcsICd1cGRhdGUnLCAnZGVsZXRlJ10ucmVkdWNlKFxuICAgICAgICAgIChvcGVyYXRpb25zLCBvcGVyYXRpb24pID0+IHtcbiAgICAgICAgICAgIGNvbnN0IGNhcGl0YWxpemVkT3BlcmF0aW9uID0gb3BlcmF0aW9uLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgb3BlcmF0aW9uLnNsaWNlKDEpXG5cbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIC4uLm9wZXJhdGlvbnMsXG4gICAgICAgICAgICAgIFtvcGVyYXRpb25dOiB7XG4gICAgICAgICAgICAgICAgdHlwZTogbmV3IEdyYXBoUUxPYmplY3RUeXBlKHtcbiAgICAgICAgICAgICAgICAgIG5hbWU6IGAke2xhYmVsfV8ke2ZpZWxkTmFtZX1fJHtjYXBpdGFsaXplZE9wZXJhdGlvbn1gLFxuICAgICAgICAgICAgICAgICAgZmllbGRzOiB7XG4gICAgICAgICAgICAgICAgICAgIHBlcm1pc3Npb246IHtcbiAgICAgICAgICAgICAgICAgICAgICB0eXBlOiBuZXcgR3JhcGhRTE5vbk51bGwoR3JhcGhRTEJvb2xlYW4pLFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIHt9LFxuICAgICAgICApXG5cbiAgICAgICAgaWYgKGZpZWxkLmZpZWxkcykge1xuICAgICAgICAgIG9iamVjdFR5cGVGaWVsZHMuZmllbGRzID0ge1xuICAgICAgICAgICAgdHlwZTogbmV3IEdyYXBoUUxPYmplY3RUeXBlKHtcbiAgICAgICAgICAgICAgbmFtZTogYCR7bGFiZWx9XyR7ZmllbGROYW1lfV9GaWVsZHNgLFxuICAgICAgICAgICAgICBmaWVsZHM6IGJ1aWxkRmllbGRzKGAke2xhYmVsfV8ke2ZpZWxkTmFtZX1gLCBmaWVsZC5maWVsZHMpLFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAuLi5idWlsdEZpZWxkcyxcbiAgICAgICAgICBbZmllbGQubmFtZV06IHtcbiAgICAgICAgICAgIHR5cGU6IG5ldyBHcmFwaFFMT2JqZWN0VHlwZSh7XG4gICAgICAgICAgICAgIG5hbWU6IGAke2xhYmVsfV8ke2ZpZWxkTmFtZX1gLFxuICAgICAgICAgICAgICBmaWVsZHM6IG9iamVjdFR5cGVGaWVsZHMsXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICB9LFxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmICghZmllbGQubmFtZSAmJiBmaWVsZC5maWVsZHMpIHtcbiAgICAgICAgY29uc3Qgc3ViRmllbGRzID0gYnVpbGRGaWVsZHMobGFiZWwsIGZpZWxkLmZpZWxkcylcblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLmJ1aWx0RmllbGRzLFxuICAgICAgICAgIC4uLnN1YkZpZWxkcyxcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoZmllbGQudHlwZSA9PT0gJ3RhYnMnKSB7XG4gICAgICAgIHJldHVybiBmaWVsZC50YWJzLnJlZHVjZShcbiAgICAgICAgICAoZmllbGRzV2l0aFRhYkZpZWxkcywgdGFiKSA9PiB7XG4gICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAuLi5maWVsZHNXaXRoVGFiRmllbGRzLFxuICAgICAgICAgICAgICAuLi5idWlsZEZpZWxkcyhsYWJlbCwgdGFiLmZpZWxkcyksXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSxcbiAgICAgICAgICB7IC4uLmJ1aWx0RmllbGRzIH0sXG4gICAgICAgIClcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGJ1aWx0RmllbGRzXG4gIH0sIHt9KVxuXG50eXBlIEJ1aWxkRW50aXR5UG9saWN5ID0ge1xuICBlbnRpdHlGaWVsZHM6IEZpZWxkW11cbiAgbmFtZTogc3RyaW5nXG4gIG9wZXJhdGlvbnM6IE9wZXJhdGlvblR5cGVbXVxuICBzY29wZTogQWNjZXNzU2NvcGVzXG59XG5leHBvcnQgY29uc3QgYnVpbGRFbnRpdHlQb2xpY3kgPSAoYXJnczogQnVpbGRFbnRpdHlQb2xpY3kpID0+IHtcbiAgY29uc3QgeyBuYW1lLCBlbnRpdHlGaWVsZHMsIG9wZXJhdGlvbnMsIHNjb3BlIH0gPSBhcmdzXG5cbiAgY29uc3QgZmllbGRzVHlwZU5hbWUgPSB0b1dvcmRzKGAke25hbWV9LSR7c2NvcGUgfHwgJyd9LUZpZWxkc2AsIHRydWUpXG4gIGNvbnN0IGZpZWxkcyA9IHtcbiAgICBmaWVsZHM6IHtcbiAgICAgIHR5cGU6IG5ldyBHcmFwaFFMT2JqZWN0VHlwZSh7XG4gICAgICAgIG5hbWU6IGZpZWxkc1R5cGVOYW1lLFxuICAgICAgICBmaWVsZHM6IGJ1aWxkRmllbGRzKGZpZWxkc1R5cGVOYW1lLCBlbnRpdHlGaWVsZHMpLFxuICAgICAgfSksXG4gICAgfSxcbiAgfVxuXG4gIG9wZXJhdGlvbnMuZm9yRWFjaCgob3BlcmF0aW9uKSA9PiB7XG4gICAgY29uc3Qgb3BlcmF0aW9uVHlwZU5hbWUgPSB0b1dvcmRzKGAke25hbWV9LSR7b3BlcmF0aW9ufS0ke3Njb3BlIHx8ICdBY2Nlc3MnfWAsIHRydWUpXG5cbiAgICBmaWVsZHNbb3BlcmF0aW9uXSA9IHtcbiAgICAgIHR5cGU6IG5ldyBHcmFwaFFMT2JqZWN0VHlwZSh7XG4gICAgICAgIG5hbWU6IG9wZXJhdGlvblR5cGVOYW1lLFxuICAgICAgICBmaWVsZHM6IHtcbiAgICAgICAgICBwZXJtaXNzaW9uOiB7IHR5cGU6IG5ldyBHcmFwaFFMTm9uTnVsbChHcmFwaFFMQm9vbGVhbikgfSxcbiAgICAgICAgICB3aGVyZTogeyB0eXBlOiBHcmFwaFFMSlNPTk9iamVjdCB9LFxuICAgICAgICB9LFxuICAgICAgfSksXG4gICAgfVxuICB9KVxuXG4gIHJldHVybiBmaWVsZHNcbn1cblxudHlwZSBCdWlsZFBvbGljeVR5cGUgPSB7XG4gIHNjb3BlPzogQWNjZXNzU2NvcGVzXG4gIHR5cGVTdWZmaXg/OiBzdHJpbmdcbn0gJiAoXG4gIHwge1xuICAgICAgZW50aXR5OiBDb2xsZWN0aW9uQ29uZmlnXG4gICAgICB0eXBlOiAnY29sbGVjdGlvbidcbiAgICB9XG4gIHwge1xuICAgICAgZW50aXR5OiBHbG9iYWxDb25maWdcbiAgICAgIHR5cGU6ICdnbG9iYWwnXG4gICAgfVxuKVxuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkUG9saWN5VHlwZShhcmdzOiBCdWlsZFBvbGljeVR5cGUpOiBHcmFwaFFMT2JqZWN0VHlwZSB7XG4gIGNvbnN0IHsgZW50aXR5LCBzY29wZSwgdHlwZSwgdHlwZVN1ZmZpeCB9ID0gYXJnc1xuICBjb25zdCB7IGZpZWxkcywgZ3JhcGhRTCwgc2x1ZywgdmVyc2lvbnMgfSA9IGVudGl0eVxuXG4gIGxldCBvcGVyYXRpb25zID0gW11cblxuICBpZiAoZ3JhcGhRTCA9PT0gZmFsc2UpIHJldHVybiBudWxsXG5cbiAgaWYgKHR5cGUgPT09ICdjb2xsZWN0aW9uJykge1xuICAgIG9wZXJhdGlvbnMgPSBbJ2NyZWF0ZScsICdyZWFkJywgJ3VwZGF0ZScsICdkZWxldGUnXVxuXG4gICAgaWYgKFxuICAgICAgZW50aXR5LmF1dGggJiZcbiAgICAgIHR5cGVvZiBlbnRpdHkuYXV0aCA9PT0gJ29iamVjdCcgJiZcbiAgICAgIHR5cGVvZiBlbnRpdHkuYXV0aC5tYXhMb2dpbkF0dGVtcHRzICE9PSAndW5kZWZpbmVkJyAmJlxuICAgICAgZW50aXR5LmF1dGgubWF4TG9naW5BdHRlbXB0cyAhPT0gMFxuICAgICkge1xuICAgICAgb3BlcmF0aW9ucy5wdXNoKCd1bmxvY2snKVxuICAgIH1cblxuICAgIGlmICh2ZXJzaW9ucykge1xuICAgICAgb3BlcmF0aW9ucy5wdXNoKCdyZWFkVmVyc2lvbnMnKVxuICAgIH1cblxuICAgIGNvbnN0IGNvbGxlY3Rpb25UeXBlTmFtZSA9IGZvcm1hdE5hbWUoYCR7c2x1Z30ke3R5cGVTdWZmaXggfHwgJyd9YClcblxuICAgIHJldHVybiBuZXcgR3JhcGhRTE9iamVjdFR5cGUoe1xuICAgICAgbmFtZTogY29sbGVjdGlvblR5cGVOYW1lLFxuICAgICAgZmllbGRzOiBidWlsZEVudGl0eVBvbGljeSh7XG4gICAgICAgIG5hbWU6IHNsdWcsXG4gICAgICAgIGVudGl0eUZpZWxkczogZmllbGRzLFxuICAgICAgICBvcGVyYXRpb25zLFxuICAgICAgICBzY29wZSxcbiAgICAgIH0pLFxuICAgIH0pXG4gIH1cblxuICAvLyBlbHNlIGNyZWF0ZSBnbG9iYWwgdHlwZVxuICBvcGVyYXRpb25zID0gWydyZWFkJywgJ3VwZGF0ZSddXG5cbiAgaWYgKGVudGl0eS52ZXJzaW9ucykge1xuICAgIG9wZXJhdGlvbnMucHVzaCgncmVhZFZlcnNpb25zJylcbiAgfVxuXG4gIGNvbnN0IGdsb2JhbFR5cGVOYW1lID0gZm9ybWF0TmFtZShgJHtnbG9iYWw/LmdyYXBoUUw/Lm5hbWUgfHwgc2x1Z30ke3R5cGVTdWZmaXggfHwgJyd9YClcblxuICByZXR1cm4gbmV3IEdyYXBoUUxPYmplY3RUeXBlKHtcbiAgICBuYW1lOiBnbG9iYWxUeXBlTmFtZSxcbiAgICBmaWVsZHM6IGJ1aWxkRW50aXR5UG9saWN5KHtcbiAgICAgIG5hbWU6IGVudGl0eS5ncmFwaFFMID8gZW50aXR5Py5ncmFwaFFMPy5uYW1lIHx8IHNsdWcgOiBzbHVnLFxuICAgICAgZW50aXR5RmllbGRzOiBlbnRpdHkuZmllbGRzLFxuICAgICAgb3BlcmF0aW9ucyxcbiAgICAgIHNjb3BlLFxuICAgIH0pLFxuICB9KVxufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBidWlsZFBvbGljaWVzVHlwZShwYXlsb2FkOiBQYXlsb2FkKTogR3JhcGhRTE9iamVjdFR5cGUge1xuICBjb25zdCBmaWVsZHMgPSB7XG4gICAgY2FuQWNjZXNzQWRtaW46IHtcbiAgICAgIHR5cGU6IG5ldyBHcmFwaFFMTm9uTnVsbChHcmFwaFFMQm9vbGVhbiksXG4gICAgfSxcbiAgfVxuXG4gIE9iamVjdC52YWx1ZXMocGF5bG9hZC5jb25maWcuY29sbGVjdGlvbnMpLmZvckVhY2goKGNvbGxlY3Rpb246IFNhbml0aXplZENvbGxlY3Rpb25Db25maWcpID0+IHtcbiAgICBpZiAoY29sbGVjdGlvbi5ncmFwaFFMID09PSBmYWxzZSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGNvbnN0IGNvbGxlY3Rpb25Qb2xpY3lUeXBlID0gYnVpbGRQb2xpY3lUeXBlKHtcbiAgICAgIGVudGl0eTogY29sbGVjdGlvbixcbiAgICAgIHR5cGU6ICdjb2xsZWN0aW9uJyxcbiAgICAgIHR5cGVTdWZmaXg6ICdBY2Nlc3MnLFxuICAgIH0pXG5cbiAgICBmaWVsZHNbZm9ybWF0TmFtZShjb2xsZWN0aW9uLnNsdWcpXSA9IHtcbiAgICAgIHR5cGU6IGNvbGxlY3Rpb25Qb2xpY3lUeXBlLFxuICAgIH1cbiAgfSlcblxuICBPYmplY3QudmFsdWVzKHBheWxvYWQuY29uZmlnLmdsb2JhbHMpLmZvckVhY2goKGdsb2JhbDogU2FuaXRpemVkR2xvYmFsQ29uZmlnKSA9PiB7XG4gICAgaWYgKGdsb2JhbC5ncmFwaFFMID09PSBmYWxzZSkge1xuICAgICAgcmV0dXJuXG4gICAgfVxuICAgIGNvbnN0IGdsb2JhbFBvbGljeVR5cGUgPSBidWlsZFBvbGljeVR5cGUoe1xuICAgICAgZW50aXR5OiBnbG9iYWwsXG4gICAgICB0eXBlOiAnZ2xvYmFsJyxcbiAgICAgIHR5cGVTdWZmaXg6ICdBY2Nlc3MnLFxuICAgIH0pXG5cbiAgICBmaWVsZHNbZm9ybWF0TmFtZShnbG9iYWwuc2x1ZyldID0ge1xuICAgICAgdHlwZTogZ2xvYmFsUG9saWN5VHlwZSxcbiAgICB9XG4gIH0pXG5cbiAgcmV0dXJuIG5ldyBHcmFwaFFMT2JqZWN0VHlwZSh7XG4gICAgbmFtZTogJ0FjY2VzcycsXG4gICAgZmllbGRzLFxuICB9KVxufVxuIl0sIm5hbWVzIjpbImJ1aWxkRW50aXR5UG9saWN5IiwiYnVpbGRQb2xpY3lUeXBlIiwiYnVpbGRQb2xpY2llc1R5cGUiLCJidWlsZEZpZWxkcyIsImxhYmVsIiwiZmllbGRzVG9CdWlsZCIsInJlZHVjZSIsImJ1aWx0RmllbGRzIiwiZmllbGQiLCJoaWRkZW4iLCJuYW1lIiwiZmllbGROYW1lIiwiZm9ybWF0TmFtZSIsIm9iamVjdFR5cGVGaWVsZHMiLCJvcGVyYXRpb25zIiwib3BlcmF0aW9uIiwiY2FwaXRhbGl6ZWRPcGVyYXRpb24iLCJjaGFyQXQiLCJ0b1VwcGVyQ2FzZSIsInNsaWNlIiwidHlwZSIsIkdyYXBoUUxPYmplY3RUeXBlIiwiZmllbGRzIiwicGVybWlzc2lvbiIsIkdyYXBoUUxOb25OdWxsIiwiR3JhcGhRTEJvb2xlYW4iLCJzdWJGaWVsZHMiLCJ0YWJzIiwiZmllbGRzV2l0aFRhYkZpZWxkcyIsInRhYiIsImFyZ3MiLCJlbnRpdHlGaWVsZHMiLCJzY29wZSIsImZpZWxkc1R5cGVOYW1lIiwidG9Xb3JkcyIsImZvckVhY2giLCJvcGVyYXRpb25UeXBlTmFtZSIsIndoZXJlIiwiR3JhcGhRTEpTT05PYmplY3QiLCJlbnRpdHkiLCJ0eXBlU3VmZml4IiwiZ3JhcGhRTCIsInNsdWciLCJ2ZXJzaW9ucyIsImF1dGgiLCJtYXhMb2dpbkF0dGVtcHRzIiwicHVzaCIsImNvbGxlY3Rpb25UeXBlTmFtZSIsImdsb2JhbFR5cGVOYW1lIiwiZ2xvYmFsIiwicGF5bG9hZCIsImNhbkFjY2Vzc0FkbWluIiwiT2JqZWN0IiwidmFsdWVzIiwiY29uZmlnIiwiY29sbGVjdGlvbnMiLCJjb2xsZWN0aW9uIiwiY29sbGVj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
210
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9ncmFwaHFsL3NjaGVtYS9idWlsZFBvbGljaWVzVHlwZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBHcmFwaFFMQm9vbGVhbiwgR3JhcGhRTE5vbk51bGwsIEdyYXBoUUxPYmplY3RUeXBlIH0gZnJvbSAnZ3JhcGhxbCdcbmltcG9ydCB7IEdyYXBoUUxKU09OT2JqZWN0IH0gZnJvbSAnZ3JhcGhxbC10eXBlLWpzb24nXG5cbmltcG9ydCB0eXBlIHsgQ29sbGVjdGlvbkNvbmZpZywgU2FuaXRpemVkQ29sbGVjdGlvbkNvbmZpZyB9IGZyb20gJy4uLy4uL2NvbGxlY3Rpb25zL2NvbmZpZy90eXBlcydcbmltcG9ydCB0eXBlIHsgRmllbGQgfSBmcm9tICcuLi8uLi9maWVsZHMvY29uZmlnL3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBHbG9iYWxDb25maWcsIFNhbml0aXplZEdsb2JhbENvbmZpZyB9IGZyb20gJy4uLy4uL2dsb2JhbHMvY29uZmlnL3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBQYXlsb2FkIH0gZnJvbSAnLi4vLi4vcGF5bG9hZCdcblxuaW1wb3J0IHsgdG9Xb3JkcyB9IGZyb20gJy4uLy4uL3V0aWxpdGllcy9mb3JtYXRMYWJlbHMnXG5pbXBvcnQgZm9ybWF0TmFtZSBmcm9tICcuLi91dGlsaXRpZXMvZm9ybWF0TmFtZSdcblxudHlwZSBPcGVyYXRpb25UeXBlID0gJ2NyZWF0ZScgfCAnZGVsZXRlJyB8ICdyZWFkJyB8ICdyZWFkVmVyc2lvbnMnIHwgJ3VubG9jaycgfCAndXBkYXRlJ1xuXG50eXBlIEFjY2Vzc1Njb3BlcyA9ICdkb2NBY2Nlc3MnIHwgdW5kZWZpbmVkXG5cbnR5cGUgT2JqZWN0VHlwZUZpZWxkcyA9IHtcbiAgW2tleSBpbiAnZmllbGRzJyB8IE9wZXJhdGlvblR5cGVdPzogeyB0eXBlOiBHcmFwaFFMT2JqZWN0VHlwZSB9XG59XG5cbmNvbnN0IGJ1aWxkRmllbGRzID0gKGxhYmVsLCBmaWVsZHNUb0J1aWxkKSA9PlxuICBmaWVsZHNUb0J1aWxkLnJlZHVjZSgoYnVpbHRGaWVsZHMsIGZpZWxkKSA9PiB7XG4gICAgY29uc3QgaW5jbHVkZUZpZWxkID0gIWZpZWxkLmhpZGRlbiAmJiBmaWVsZC50eXBlICE9PSAndWknXG4gICAgaWYgKGluY2x1ZGVGaWVsZCkge1xuICAgICAgaWYgKGZpZWxkLm5hbWUpIHtcbiAgICAgICAgY29uc3QgZmllbGROYW1lID0gZm9ybWF0TmFtZShmaWVsZC5uYW1lKVxuXG4gICAgICAgIGNvbnN0IG9iamVjdFR5cGVGaWVsZHM6IE9iamVjdFR5cGVGaWVsZHMgPSBbJ2NyZWF0ZScsICdyZWFkJywgJ3VwZGF0ZScsICdkZWxldGUnXS5yZWR1Y2UoXG4gICAgICAgICAgKG9wZXJhdGlvbnMsIG9wZXJhdGlvbikgPT4ge1xuICAgICAgICAgICAgY29uc3QgY2FwaXRhbGl6ZWRPcGVyYXRpb24gPSBvcGVyYXRpb24uY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBvcGVyYXRpb24uc2xpY2UoMSlcblxuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgLi4ub3BlcmF0aW9ucyxcbiAgICAgICAgICAgICAgW29wZXJhdGlvbl06IHtcbiAgICAgICAgICAgICAgICB0eXBlOiBuZXcgR3JhcGhRTE9iamVjdFR5cGUoe1xuICAgICAgICAgICAgICAgICAgbmFtZTogYCR7bGFiZWx9XyR7ZmllbGROYW1lfV8ke2NhcGl0YWxpemVkT3BlcmF0aW9ufWAsXG4gICAgICAgICAgICAgICAgICBmaWVsZHM6IHtcbiAgICAgICAgICAgICAgICAgICAgcGVybWlzc2lvbjoge1xuICAgICAgICAgICAgICAgICAgICAgIHR5cGU6IG5ldyBHcmFwaFFMTm9uTnVsbChHcmFwaFFMQm9vbGVhbiksXG4gICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgIH0pLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH0sXG4gICAgICAgICAge30sXG4gICAgICAgIClcblxuICAgICAgICBpZiAoZmllbGQuZmllbGRzKSB7XG4gICAgICAgICAgb2JqZWN0VHlwZUZpZWxkcy5maWVsZHMgPSB7XG4gICAgICAgICAgICB0eXBlOiBuZXcgR3JhcGhRTE9iamVjdFR5cGUoe1xuICAgICAgICAgICAgICBuYW1lOiBgJHtsYWJlbH1fJHtmaWVsZE5hbWV9X0ZpZWxkc2AsXG4gICAgICAgICAgICAgIGZpZWxkczogYnVpbGRGaWVsZHMoYCR7bGFiZWx9XyR7ZmllbGROYW1lfWAsIGZpZWxkLmZpZWxkcyksXG4gICAgICAgICAgICB9KSxcbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIC4uLmJ1aWx0RmllbGRzLFxuICAgICAgICAgIFtmaWVsZC5uYW1lXToge1xuICAgICAgICAgICAgdHlwZTogbmV3IEdyYXBoUUxPYmplY3RUeXBlKHtcbiAgICAgICAgICAgICAgbmFtZTogYCR7bGFiZWx9XyR7ZmllbGROYW1lfWAsXG4gICAgICAgICAgICAgIGZpZWxkczogb2JqZWN0VHlwZUZpZWxkcyxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIH0sXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKCFmaWVsZC5uYW1lICYmIGZpZWxkLmZpZWxkcykge1xuICAgICAgICBjb25zdCBzdWJGaWVsZHMgPSBidWlsZEZpZWxkcyhsYWJlbCwgZmllbGQuZmllbGRzKVxuXG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgLi4uYnVpbHRGaWVsZHMsXG4gICAgICAgICAgLi4uc3ViRmllbGRzLFxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChmaWVsZC50eXBlID09PSAndGFicycpIHtcbiAgICAgICAgcmV0dXJuIGZpZWxkLnRhYnMucmVkdWNlKFxuICAgICAgICAgIChmaWVsZHNXaXRoVGFiRmllbGRzLCB0YWIpID0+IHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIC4uLmZpZWxkc1dpdGhUYWJGaWVsZHMsXG4gICAgICAgICAgICAgIC4uLmJ1aWxkRmllbGRzKGxhYmVsLCB0YWIuZmllbGRzKSxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LFxuICAgICAgICAgIHsgLi4uYnVpbHRGaWVsZHMgfSxcbiAgICAgICAgKVxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gYnVpbHRGaWVsZHNcbiAgfSwge30pXG5cbnR5cGUgQnVpbGRFbnRpdHlQb2xpY3kgPSB7XG4gIGVudGl0eUZpZWxkczogRmllbGRbXVxuICBuYW1lOiBzdHJpbmdcbiAgb3BlcmF0aW9uczogT3BlcmF0aW9uVHlwZVtdXG4gIHNjb3BlOiBBY2Nlc3NTY29wZXNcbn1cbmV4cG9ydCBjb25zdCBidWlsZEVudGl0eVBvbGljeSA9IChhcmdzOiBCdWlsZEVudGl0eVBvbGljeSkgPT4ge1xuICBjb25zdCB7IG5hbWUsIGVudGl0eUZpZWxkcywgb3BlcmF0aW9ucywgc2NvcGUgfSA9IGFyZ3NcblxuICBjb25zdCBmaWVsZHNUeXBlTmFtZSA9IHRvV29yZHMoYCR7bmFtZX0tJHtzY29wZSB8fCAnJ30tRmllbGRzYCwgdHJ1ZSlcbiAgY29uc3QgZmllbGRzID0ge1xuICAgIGZpZWxkczoge1xuICAgICAgdHlwZTogbmV3IEdyYXBoUUxPYmplY3RUeXBlKHtcbiAgICAgICAgbmFtZTogZmllbGRzVHlwZU5hbWUsXG4gICAgICAgIGZpZWxkczogYnVpbGRGaWVsZHMoZmllbGRzVHlwZU5hbWUsIGVudGl0eUZpZWxkcyksXG4gICAgICB9KSxcbiAgICB9LFxuICB9XG5cbiAgb3BlcmF0aW9ucy5mb3JFYWNoKChvcGVyYXRpb24pID0+IHtcbiAgICBjb25zdCBvcGVyYXRpb25UeXBlTmFtZSA9IHRvV29yZHMoYCR7bmFtZX0tJHtvcGVyYXRpb259LSR7c2NvcGUgfHwgJ0FjY2Vzcyd9YCwgdHJ1ZSlcblxuICAgIGZpZWxkc1tvcGVyYXRpb25dID0ge1xuICAgICAgdHlwZTogbmV3IEdyYXBoUUxPYmplY3RUeXBlKHtcbiAgICAgICAgbmFtZTogb3BlcmF0aW9uVHlwZU5hbWUsXG4gICAgICAgIGZpZWxkczoge1xuICAgICAgICAgIHBlcm1pc3Npb246IHsgdHlwZTogbmV3IEdyYXBoUUxOb25OdWxsKEdyYXBoUUxCb29sZWFuKSB9LFxuICAgICAgICAgIHdoZXJlOiB7IHR5cGU6IEdyYXBoUUxKU09OT2JqZWN0IH0sXG4gICAgICAgIH0sXG4gICAgICB9KSxcbiAgICB9XG4gIH0pXG5cbiAgcmV0dXJuIGZpZWxkc1xufVxuXG50eXBlIEJ1aWxkUG9saWN5VHlwZSA9IHtcbiAgc2NvcGU/OiBBY2Nlc3NTY29wZXNcbiAgdHlwZVN1ZmZpeD86IHN0cmluZ1xufSAmIChcbiAgfCB7XG4gICAgICBlbnRpdHk6IENvbGxlY3Rpb25Db25maWdcbiAgICAgIHR5cGU6ICdjb2xsZWN0aW9uJ1xuICAgIH1cbiAgfCB7XG4gICAgICBlbnRpdHk6IEdsb2JhbENvbmZpZ1xuICAgICAgdHlwZTogJ2dsb2JhbCdcbiAgICB9XG4pXG5leHBvcnQgZnVuY3Rpb24gYnVpbGRQb2xpY3lUeXBlKGFyZ3M6IEJ1aWxkUG9saWN5VHlwZSk6IEdyYXBoUUxPYmplY3RUeXBlIHtcbiAgY29uc3QgeyBlbnRpdHksIHNjb3BlLCB0eXBlLCB0eXBlU3VmZml4IH0gPSBhcmdzXG4gIGNvbnN0IHsgZmllbGRzLCBncmFwaFFMLCBzbHVnLCB2ZXJzaW9ucyB9ID0gZW50aXR5XG5cbiAgbGV0IG9wZXJhdGlvbnMgPSBbXVxuXG4gIGlmIChncmFwaFFMID09PSBmYWxzZSkgcmV0dXJuIG51bGxcblxuICBpZiAodHlwZSA9PT0gJ2NvbGxlY3Rpb24nKSB7XG4gICAgb3BlcmF0aW9ucyA9IFsnY3JlYXRlJywgJ3JlYWQnLCAndXBkYXRlJywgJ2RlbGV0ZSddXG5cbiAgICBpZiAoXG4gICAgICBlbnRpdHkuYXV0aCAmJlxuICAgICAgdHlwZW9mIGVudGl0eS5hdXRoID09PSAnb2JqZWN0JyAmJlxuICAgICAgdHlwZW9mIGVudGl0eS5hdXRoLm1heExvZ2luQXR0ZW1wdHMgIT09ICd1bmRlZmluZWQnICYmXG4gICAgICBlbnRpdHkuYXV0aC5tYXhMb2dpbkF0dGVtcHRzICE9PSAwXG4gICAgKSB7XG4gICAgICBvcGVyYXRpb25zLnB1c2goJ3VubG9jaycpXG4gICAgfVxuXG4gICAgaWYgKHZlcnNpb25zKSB7XG4gICAgICBvcGVyYXRpb25zLnB1c2goJ3JlYWRWZXJzaW9ucycpXG4gICAgfVxuXG4gICAgY29uc3QgY29sbGVjdGlvblR5cGVOYW1lID0gZm9ybWF0TmFtZShgJHtzbHVnfSR7dHlwZVN1ZmZpeCB8fCAnJ31gKVxuXG4gICAgcmV0dXJuIG5ldyBHcmFwaFFMT2JqZWN0VHlwZSh7XG4gICAgICBuYW1lOiBjb2xsZWN0aW9uVHlwZU5hbWUsXG4gICAgICBmaWVsZHM6IGJ1aWxkRW50aXR5UG9saWN5KHtcbiAgICAgICAgbmFtZTogc2x1ZyxcbiAgICAgICAgZW50aXR5RmllbGRzOiBmaWVsZHMsXG4gICAgICAgIG9wZXJhdGlvbnMsXG4gICAgICAgIHNjb3BlLFxuICAgICAgfSksXG4gICAgfSlcbiAgfVxuXG4gIC8vIGVsc2UgY3JlYXRlIGdsb2JhbCB0eXBlXG4gIG9wZXJhdGlvbnMgPSBbJ3JlYWQnLCAndXBkYXRlJ11cblxuICBpZiAoZW50aXR5LnZlcnNpb25zKSB7XG4gICAgb3BlcmF0aW9ucy5wdXNoKCdyZWFkVmVyc2lvbnMnKVxuICB9XG5cbiAgY29uc3QgZ2xvYmFsVHlwZU5hbWUgPSBmb3JtYXROYW1lKGAke2dsb2JhbD8uZ3JhcGhRTD8ubmFtZSB8fCBzbHVnfSR7dHlwZVN1ZmZpeCB8fCAnJ31gKVxuXG4gIHJldHVybiBuZXcgR3JhcGhRTE9iamVjdFR5cGUoe1xuICAgIG5hbWU6IGdsb2JhbFR5cGVOYW1lLFxuICAgIGZpZWxkczogYnVpbGRFbnRpdHlQb2xpY3koe1xuICAgICAgbmFtZTogZW50aXR5LmdyYXBoUUwgPyBlbnRpdHk/LmdyYXBoUUw/Lm5hbWUgfHwgc2x1ZyA6IHNsdWcsXG4gICAgICBlbnRpdHlGaWVsZHM6IGVudGl0eS5maWVsZHMsXG4gICAgICBvcGVyYXRpb25zLFxuICAgICAgc2NvcGUsXG4gICAgfSksXG4gIH0pXG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGJ1aWxkUG9saWNpZXNUeXBlKHBheWxvYWQ6IFBheWxvYWQpOiBHcmFwaFFMT2JqZWN0VHlwZSB7XG4gIGNvbnN0IGZpZWxkcyA9IHtcbiAgICBjYW5BY2Nlc3NBZG1pbjoge1xuICAgICAgdHlwZTogbmV3IEdyYXBoUUxOb25OdWxsKEdyYXBoUUxCb29sZWFuKSxcbiAgICB9LFxuICB9XG5cbiAgT2JqZWN0LnZhbHVlcyhwYXlsb2FkLmNvbmZpZy5jb2xsZWN0aW9ucykuZm9yRWFjaCgoY29sbGVjdGlvbjogU2FuaXRpemVkQ29sbGVjdGlvbkNvbmZpZykgPT4ge1xuICAgIGlmIChjb2xsZWN0aW9uLmdyYXBoUUwgPT09IGZhbHNlKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgY29uc3QgY29sbGVjdGlvblBvbGljeVR5cGUgPSBidWlsZFBvbGljeVR5cGUoe1xuICAgICAgZW50aXR5OiBjb2xsZWN0aW9uLFxuICAgICAgdHlwZTogJ2NvbGxlY3Rpb24nLFxuICAgICAgdHlwZVN1ZmZpeDogJ0FjY2VzcycsXG4gICAgfSlcblxuICAgIGZpZWxkc1tmb3JtYXROYW1lKGNvbGxlY3Rpb24uc2x1ZyldID0ge1xuICAgICAgdHlwZTogY29sbGVjdGlvblBvbGljeVR5cGUsXG4gICAgfVxuICB9KVxuXG4gIE9iamVjdC52YWx1ZXMocGF5bG9hZC5jb25maWcuZ2xvYmFscykuZm9yRWFjaCgoZ2xvYmFsOiBTYW5pdGl6ZWRHbG9iYWxDb25maWcpID0+IHtcbiAgICBpZiAoZ2xvYmFsLmdyYXBoUUwgPT09IGZhbHNlKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG4gICAgY29uc3QgZ2xvYmFsUG9saWN5VHlwZSA9IGJ1aWxkUG9saWN5VHlwZSh7XG4gICAgICBlbnRpdHk6IGdsb2JhbCxcbiAgICAgIHR5cGU6ICdnbG9iYWwnLFxuICAgICAgdHlwZVN1ZmZpeDogJ0FjY2VzcycsXG4gICAgfSlcblxuICAgIGZpZWxkc1tmb3JtYXROYW1lKGdsb2JhbC5zbHVnKV0gPSB7XG4gICAgICB0eXBlOiBnbG9iYWxQb2xpY3lUeXBlLFxuICAgIH1cbiAgfSlcblxuICByZXR1cm4gbmV3IEdyYXBoUUxPYmplY3RUeXBlKHtcbiAgICBuYW1lOiAnQWNjZXNzJyxcbiAgICBmaWVsZHMsXG4gIH0pXG59XG4iXSwibmFtZXMiOlsiYnVpbGRFbnRpdHlQb2xpY3kiLCJidWlsZFBvbGljeVR5cGUiLCJidWlsZFBvbGljaWVzVHlwZSIsImJ1aWxkRmllbGRzIiwibGFiZWwiLCJmaWVsZHNUb0J1aWxkIiwicmVkdWNlIiwiYnVpbHRGaWVsZHMiLCJmaWVsZCIsImluY2x1ZGVGaWVsZCIsImhpZGRlbiIsInR5cGUiLCJuYW1lIiwiZmllbGROYW1lIiwiZm9ybWF0TmFtZSIsIm9iamVjdFR5cGVGaWVsZHMiLCJvcGVyYXRpb25zIiwib3BlcmF0aW9uIiwiY2FwaXRhbGl6ZWRPcGVyYXRpb24iLCJjaGFyQXQiLCJ0b1VwcGVyQ2FzZSIsInNsaWNlIiwiR3JhcGhRTE9iamVjdFR5cGUiLCJmaWVsZHMiLCJwZXJtaXNzaW9uIiwiR3JhcGhRTE5vbk51bGwiLCJHcmFwaFFMQm9vbGVhbiIsInN1YkZpZWxkcyIsInRhYnMiLCJmaWVsZHNXaXRoVGFiRmllbGRzIiwidGFiIiwiYXJncyIsImVudGl0eUZpZWxkcyIsInNjb3BlIiwiZmllbGRzVHlwZU5hbWUiLCJ0b1dvcmRzIiwiZm9yRWFjaCIsIm9wZXJhdGlvblR5cGVOYW1lIiwid2hlcmUiLCJHcmFwaFFMSlNPTk9iamVjdCIsImVudGl0eSIsInR5cGVTdWZmaXgiLCJncmFwaFFMIiwic2x1ZyIsInZlcnNpb25zIiwiYXV0aCIsIm1heExvZ2luQXR0ZW1wdHMiLCJwdXNoIiwiY29sbGVjdGlvblR5cGVOYW1lIiwiZ2xvYmFsVHlwZU5hbWUiLCJnbG9iYWwiLCJwYXlsb2FkIiwiY2FuQWNjZXNzQWRtaW4iLCJPYmplY3QiLCJ2YWx1ZXMiLCJjb25maWciLCJjb2xsZWN0aW9ucyIsImNvbGxlY3Rpb24iLCJjb2xsZWN0aW9uUG9saWN5VHlwZSIsImdsb2JhbHMiLCJnbG9iYWxQb2xpY3lUeXBlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztJQWlHYUEsaUJBQWlCO2VBQWpCQTs7SUEyQ0dDLGVBQWU7ZUFBZkE7O0lBeURoQixPQXlDQztlQXpDdUJDOzs7eUJBck0wQztpQ0FDaEM7OEJBT1Y7bUVBQ0Q7Ozs7OztBQVV2QixNQUFNQyxjQUFjLENBQUNDLE9BQU9DLGdCQUMxQkEsY0FBY0MsTUFBTSxDQUFDLENBQUNDLGFBQWFDO1FBQ2pDLE1BQU1DLGVBQWUsQ0FBQ0QsTUFBTUUsTUFBTSxJQUFJRixNQUFNRyxJQUFJLEtBQUs7UUFDckQsSUFBSUYsY0FBYztZQUNoQixJQUFJRCxNQUFNSSxJQUFJLEVBQUU7Z0JBQ2QsTUFBTUMsWUFBWUMsSUFBQUEsbUJBQVUsRUFBQ04sTUFBTUksSUFBSTtnQkFFdkMsTUFBTUcsbUJBQXFDO29CQUFDO29CQUFVO29CQUFRO29CQUFVO2lCQUFTLENBQUNULE1BQU0sQ0FDdEYsQ0FBQ1UsWUFBWUM7b0JBQ1gsTUFBTUMsdUJBQXVCRCxVQUFVRSxNQUFNLENBQUMsR0FBR0MsV0FBVyxLQUFLSCxVQUFVSSxLQUFLLENBQUM7b0JBRWpGLE9BQU87d0JBQ0wsR0FBR0wsVUFBVTt3QkFDYixDQUFDQyxVQUFVLEVBQUU7NEJBQ1hOLE1BQU0sSUFBSVcsMEJBQWlCLENBQUM7Z0NBQzFCVixNQUFNLENBQUMsRUFBRVIsTUFBTSxDQUFDLEVBQUVTLFVBQVUsQ0FBQyxFQUFFSyxxQkFBcUIsQ0FBQztnQ0FDckRLLFFBQVE7b0NBQ05DLFlBQVk7d0NBQ1ZiLE1BQU0sSUFBSWMsdUJBQWMsQ0FBQ0MsdUJBQWM7b0NBQ3pDO2dDQUNGOzRCQUNGO3dCQUNGO29CQUNGO2dCQUNGLEdBQ0EsQ0FBQztnQkFHSCxJQUFJbEIsTUFBTWUsTUFBTSxFQUFFO29CQUNoQlIsaUJB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
@@ -1 +1 @@
1
- {"version":3,"file":"generateFileData.d.ts","sourceRoot":"","sources":["../../src/uploads/generateFileData.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAA;AAC7D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AACtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACtD,OAAO,KAAK,EAAY,UAAU,EAAmB,MAAM,SAAS,CAAA;AAYpE,KAAK,IAAI,CAAC,CAAC,IAAI;IACb,UAAU,EAAE,UAAU,CAAA;IACtB,MAAM,EAAE,eAAe,CAAA;IACvB,IAAI,EAAE,CAAC,CAAA;IACP,sBAAsB,CAAC,EAAE,OAAO,CAAA;IAChC,GAAG,EAAE,cAAc,CAAA;IACnB,kBAAkB,CAAC,EAAE,OAAO,CAAA;CAC7B,CAAA;AAED,KAAK,MAAM,CAAC,CAAC,IAAI,OAAO,CAAC;IACvB,IAAI,EAAE,CAAC,CAAA;IACP,KAAK,EAAE,UAAU,EAAE,CAAA;CACpB,CAAC,CAAA;AAEF,eAAO,MAAM,gBAAgB,yIAkO5B,CAAA"}
1
+ {"version":3,"file":"generateFileData.d.ts","sourceRoot":"","sources":["../../src/uploads/generateFileData.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAA;AAC7D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AACtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACtD,OAAO,KAAK,EAAY,UAAU,EAAmB,MAAM,SAAS,CAAA;AAYpE,KAAK,IAAI,CAAC,CAAC,IAAI;IACb,UAAU,EAAE,UAAU,CAAA;IACtB,MAAM,EAAE,eAAe,CAAA;IACvB,IAAI,EAAE,CAAC,CAAA;IACP,sBAAsB,CAAC,EAAE,OAAO,CAAA;IAChC,GAAG,EAAE,cAAc,CAAA;IACnB,kBAAkB,CAAC,EAAE,OAAO,CAAA;CAC7B,CAAA;AAED,KAAK,MAAM,CAAC,CAAC,IAAI,OAAO,CAAC;IACvB,IAAI,EAAE,CAAC,CAAA;IACP,KAAK,EAAE,UAAU,EAAE,CAAA;CACpB,CAAC,CAAA;AAEF,eAAO,MAAM,gBAAgB,yIAiO5B,CAAA"}
@@ -18,7 +18,7 @@ const _errors = require("../errors");
18
18
  const _canResizeImage = /*#__PURE__*/ _interop_require_default(require("./canResizeImage"));
19
19
  const _cropImage = /*#__PURE__*/ _interop_require_default(require("./cropImage"));
20
20
  const _getFileByPath = /*#__PURE__*/ _interop_require_default(require("./getFileByPath"));
21
- const _getFileByURL = /*#__PURE__*/ _interop_require_default(require("./getFileByURL"));
21
+ const _getExternalFile = require("./getExternalFile");
22
22
  const _getImageSize = /*#__PURE__*/ _interop_require_default(require("./getImageSize"));
23
23
  const _getSafeFilename = /*#__PURE__*/ _interop_require_default(require("./getSafeFilename"));
24
24
  const _imageResizer = /*#__PURE__*/ _interop_require_default(require("./imageResizer"));
@@ -45,14 +45,16 @@ const generateFileData = async ({ collection: { config: collectionConfig }, conf
45
45
  if (!file && uploadEdits && data) {
46
46
  const { filename, url } = data;
47
47
  try {
48
- if (url && url.startsWith('/')) {
48
+ if (url && url.startsWith('/') && !disableLocalStorage) {
49
49
  const filePath = `${staticPath}/${filename}`;
50
50
  const response = await (0, _getFileByPath.default)(filePath);
51
51
  file = response;
52
52
  overwriteExistingFiles = true;
53
- } else {
54
- const response = await (0, _getFileByURL.default)(url);
55
- file = response;
53
+ } else if (filename && url) {
54
+ file = await (0, _getExternalFile.getExternalFile)({
55
+ req,
56
+ data: data
57
+ });
56
58
  overwriteExistingFiles = true;
57
59
  }
58
60
  } catch (err) {
@@ -223,4 +225,4 @@ const generateFileData = async ({ collection: { config: collectionConfig }, conf
223
225
  };
224
226
  };
225
227
 
226
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91cGxvYWRzL2dlbmVyYXRlRmlsZURhdGEudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBVcGxvYWRlZEZpbGUgfSBmcm9tICdleHByZXNzLWZpbGV1cGxvYWQnXG5pbXBvcnQgdHlwZSB7IE91dHB1dEluZm8sIFNoYXJwLCBTaGFycE9wdGlvbnMgfSBmcm9tICdzaGFycCdcblxuaW1wb3J0IHsgZnJvbUJ1ZmZlciB9IGZyb20gJ2ZpbGUtdHlwZSdcbmltcG9ydCBmcyBmcm9tICdmcydcbmltcG9ydCBta2RpcnAgZnJvbSAnbWtkaXJwJ1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCdcbmltcG9ydCBzYW5pdGl6ZSBmcm9tICdzYW5pdGl6ZS1maWxlbmFtZSdcbmltcG9ydCBzaGFycCBmcm9tICdzaGFycCdcblxuaW1wb3J0IHR5cGUgeyBDb2xsZWN0aW9uIH0gZnJvbSAnLi4vY29sbGVjdGlvbnMvY29uZmlnL3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBTYW5pdGl6ZWRDb25maWcgfSBmcm9tICcuLi9jb25maWcvdHlwZXMnXG5pbXBvcnQgdHlwZSB7IFBheWxvYWRSZXF1ZXN0IH0gZnJvbSAnLi4vZXhwcmVzcy90eXBlcydcbmltcG9ydCB0eXBlIHsgRmlsZURhdGEsIEZpbGVUb1NhdmUsIFByb2JlZEltYWdlU2l6ZSB9IGZyb20gJy4vdHlwZXMnXG5cbmltcG9ydCB7IEZpbGVVcGxvYWRFcnJvciwgTWlzc2luZ0ZpbGUgfSBmcm9tICcuLi9lcnJvcnMnXG5pbXBvcnQgY2FuUmVzaXplSW1hZ2UgZnJvbSAnLi9jYW5SZXNpemVJbWFnZSdcbmltcG9ydCBjcm9wSW1hZ2UgZnJvbSAnLi9jcm9wSW1hZ2UnXG5pbXBvcnQgZ2V0RmlsZUJ5UGF0aCBmcm9tICcuL2dldEZpbGVCeVBhdGgnXG5pbXBvcnQgZ2V0RmlsZUJ5VVJMIGZyb20gJy4vZ2V0RmlsZUJ5VVJMJ1xuaW1wb3J0IGdldEltYWdlU2l6ZSBmcm9tICcuL2dldEltYWdlU2l6ZSdcbmltcG9ydCBnZXRTYWZlRmlsZU5hbWUgZnJvbSAnLi9nZXRTYWZlRmlsZW5hbWUnXG5pbXBvcnQgcmVzaXplQW5kVHJhbnNmb3JtSW1hZ2VTaXplcyBmcm9tICcuL2ltYWdlUmVzaXplcidcbmltcG9ydCBpc0ltYWdlIGZyb20gJy4vaXNJbWFnZSdcblxudHlwZSBBcmdzPFQ+ID0ge1xuICBjb2xsZWN0aW9uOiBDb2xsZWN0aW9uXG4gIGNvbmZpZzogU2FuaXRpemVkQ29uZmlnXG4gIGRhdGE6IFRcbiAgb3ZlcndyaXRlRXhpc3RpbmdGaWxlcz86IGJvb2xlYW5cbiAgcmVxOiBQYXlsb2FkUmVxdWVzdFxuICB0aHJvd09uTWlzc2luZ0ZpbGU/OiBib29sZWFuXG59XG5cbnR5cGUgUmVzdWx0PFQ+ID0gUHJvbWlzZTx7XG4gIGRhdGE6IFRcbiAgZmlsZXM6IEZpbGVUb1NhdmVbXVxufT5cblxuZXhwb3J0IGNvbnN0IGdlbmVyYXRlRmlsZURhdGEgPSBhc3luYyA8VD4oe1xuICBjb2xsZWN0aW9uOiB7IGNvbmZpZzogY29sbGVjdGlvbkNvbmZpZyB9LFxuICBjb25maWcsXG4gIGRhdGEsXG4gIG92ZXJ3cml0ZUV4aXN0aW5nRmlsZXMsXG4gIHJlcSxcbiAgdGhyb3dPbk1pc3NpbmdGaWxlLFxufTogQXJnczxUPik6IFJlc3VsdDxUPiA9PiB7XG4gIGlmICghY29sbGVjdGlvbkNvbmZpZy51cGxvYWQpIHtcbiAgICByZXR1cm4ge1xuICAgICAgZGF0YSxcbiAgICAgIGZpbGVzOiBbXSxcbiAgICB9XG4gIH1cblxuICBsZXQgZmlsZSA9IHJlcS5maWxlcz8uZmlsZSB8fCB1bmRlZmluZWRcbiAgY29uc3QgeyB1cGxvYWRFZGl0cyB9ID0gcmVxLnF1ZXJ5IHx8IHt9XG5cbiAgY29uc3QgeyBkaXNhYmxlTG9jYWxTdG9yYWdlLCBmb3JtYXRPcHRpb25zLCBpbWFnZVNpemVzLCByZXNpemVPcHRpb25zLCBzdGF0aWNEaXIsIHRyaW1PcHRpb25zIH0gPVxuICAgIGNvbGxlY3Rpb25Db25maWcudXBsb2FkXG5cbiAgbGV0IHN0YXRpY1BhdGggPSBzdGF0aWNEaXJcbiAgaWYgKHN0YXRpY0Rpci5pbmRleE9mKCcvJykgIT09IDApIHtcbiAgICBzdGF0aWNQYXRoID0gcGF0aC5yZXNvbHZlKGNvbmZpZy5wYXRocy5jb25maWdEaXIsIHN0YXRpY0RpcilcbiAgfVxuXG4gIGlmICghZmlsZSAmJiB1cGxvYWRFZGl0cyAmJiBkYXRhKSB7XG4gICAgY29uc3QgeyBmaWxlbmFtZSwgdXJsIH0gPSBkYXRhIGFzIEZpbGVEYXRhXG5cbiAgICB0cnkge1xuICAgICAgaWYgKHVybCAmJiB1cmwuc3RhcnRzV2l0aCgnLycpKSB7XG4gICAgICAgIGNvbnN0IGZpbGVQYXRoID0gYCR7c3RhdGljUGF0aH0vJHtmaWxlbmFtZX1gXG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZ2V0RmlsZUJ5UGF0aChmaWxlUGF0aClcbiAgICAgICAgZmlsZSA9IHJlc3BvbnNlIGFzIFVwbG9hZGVkRmlsZVxuICAgICAgICBvdmVyd3JpdGVFeGlzdGluZ0ZpbGVzID0gdHJ1ZVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBnZXRGaWxlQnlVUkwodXJsKVxuICAgICAgICBmaWxlID0gcmVzcG9uc2UgYXMgVXBsb2FkZWRGaWxlXG4gICAgICAgIG92ZXJ3cml0ZUV4aXN0aW5nRmlsZXMgPSB0cnVlXG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICB0aHJvdyBuZXcgRmlsZVVwbG9hZEVycm9yKHJlcS50KVxuICAgIH1cbiAgfVxuXG4gIGlmICghZmlsZSkge1xuICAgIGlmICh0aHJvd09uTWlzc2luZ0ZpbGUpIHRocm93IG5ldyBNaXNzaW5nRmlsZShyZXEudClcblxuICAgIHJldHVybiB7XG4gICAgICBkYXRhLFxuICAgICAgZmlsZXM6IFtdLFxuICAgIH1cbiAgfVxuXG4gIGlmICghZGlzYWJsZUxvY2FsU3RvcmFnZSkge1xuICAgIG1rZGlycC5zeW5jKHN0YXRpY1BhdGgpXG4gIH1cblxuICBsZXQgbmV3RGF0YSA9IGRhdGFcbiAgY29uc3QgZmlsZXNUb1NhdmU6IEZpbGVUb1NhdmVbXSA9IFtdXG4gIGNvbnN0IGZpbGVEYXRhOiBQYXJ0aWFsPEZpbGVEYXRhPiA9IHt9XG4gIGNvbnN0IGZpbGVJc0FuaW1hdGVkID0gZmlsZS5taW1ldHlwZSA9PT0gJ2ltYWdlL2dpZicgfHwgZmlsZS5taW1ldHlwZSA9PT0gJ2ltYWdlL3dlYnAnXG4gIGNvbnN0IGNyb3BEYXRhID1cbiAgICB0eXBlb2YgdXBsb2FkRWRpdHMgPT09ICdvYmplY3QnICYmICdjcm9wJyBpbiB1cGxvYWRFZGl0cyA/IHVwbG9hZEVkaXRzLmNyb3AgOiB1bmRlZmluZWRcblxuICB0cnkge1xuICAgIGNvbnN0IGZpbGVTdXBwb3J0c1Jlc2l6ZSA9IGNhblJlc2l6ZUltYWdlKGZpbGUubWltZXR5cGUpXG4gICAgbGV0IGZzU2FmZU5hbWU6IHN0cmluZ1xuICAgIGxldCBzaGFycEZpbGU6IFNoYXJwIHwgdW5kZWZpbmVkXG4gICAgbGV0IGRpbWVuc2lvbnM6IFByb2JlZEltYWdlU2l6ZSB8IHVuZGVmaW5lZFxuICAgIGxldCBmaWxlQnVmZmVyOiB7IGRhdGE6IEJ1ZmZlcjsgaW5mbzogT3V0cHV0SW5mbyB9XG4gICAgbGV0IGV4dFxuICAgIGxldCBtaW1lOiBzdHJpbmdcbiAgICBjb25zdCBmaWxlSGFzQWRqdXN0bWVudHMgPVxuICAgICAgZmlsZVN1cHBvcnRzUmVzaXplICYmXG4gICAgICBCb29sZWFuKHJlc2l6ZU9wdGlvbnMgfHwgZm9ybWF0T3B0aW9ucyB8fCB0cmltT3B0aW9ucyB8fCBmaWxlLnRlbXBGaWxlUGF0aClcblxuICAgIGNvbnN0IHNoYXJwT3B0aW9uczogU2hhcnBPcHRpb25zID0ge31cblxuICAgIGlmIChmaWxlSXNBbmltYXRlZCkgc2hhcnBPcHRpb25zLmFuaW1hdGVkID0gdHJ1ZVxuXG4gICAgaWYgKGZpbGVIYXNBZGp1c3RtZW50cykge1xuICAgICAgaWYgKGZpbGUudGVtcEZpbGVQYXRoKSB7XG4gICAgICAgIHNoYXJwRmlsZSA9IHNoYXJwKGZpbGUudGVtcEZpbGVQYXRoLCBzaGFycE9wdGlvbnMpLnJvdGF0ZSgpIC8vIHBhc3Mgcm90YXRlKCkgdG8gYXV0by1yb3RhdGUgYmFzZWQgb24gRVhJRiBkYXRhLiBodHRwczovL2dpdGh1Yi5jb20vcGF5bG9hZGNtcy9wYXlsb2FkL3B1bGwvMzA4MVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2hhcnBGaWxlID0gc2hhcnAoZmlsZS5kYXRhLCBzaGFycE9wdGlvbnMpLnJvdGF0ZSgpIC8vIHBhc3Mgcm90YXRlKCkgdG8gYXV0by1yb3RhdGUgYmFzZWQgb24gRVhJRiBkYXRhLiBodHRwczovL2dpdGh1Yi5jb20vcGF5bG9hZGNtcy9wYXlsb2FkL3B1bGwvMzA4MVxuICAgICAgfVxuXG4gICAgICBpZiAocmVzaXplT3B0aW9ucykge1xuICAgICAgICBzaGFycEZpbGUgPSBzaGFycEZpbGUucmVzaXplKHJlc2l6ZU9wdGlvbnMpXG4gICAgICB9XG4gICAgICBpZiAoZm9ybWF0T3B0aW9ucykge1xuICAgICAgICBzaGFycEZpbGUgPSBzaGFycEZpbGUudG9Gb3JtYXQoZm9ybWF0T3B0aW9ucy5mb3JtYXQsIGZvcm1hdE9wdGlvbnMub3B0aW9ucylcbiAgICAgIH1cbiAgICAgIGlmICh0cmltT3B0aW9ucykge1xuICAgICAgICBzaGFycEZpbGUgPSBzaGFycEZpbGUudHJpbSh0cmltT3B0aW9ucylcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoaXNJbWFnZShmaWxlLm1pbWV0eXBlKSkge1xuICAgICAgZGltZW5zaW9ucyA9IGF3YWl0IGdldEltYWdlU2l6ZShmaWxlKVxuICAgICAgZmlsZURhdGEud2lkdGggPSBkaW1lbnNpb25zLndpZHRoXG4gICAgICBmaWxlRGF0YS5oZWlnaHQgPSBkaW1lbnNpb25zLmhlaWdodFxuICAgIH1cblxuICAgIGlmIChzaGFycEZpbGUpIHtcbiAgICAgIGNvbnN0IG1ldGFkYXRhID0gYXdhaXQgc2hhcnBGaWxlLm1ldGFkYXRhKClcbiAgICAgIGZpbGVCdWZmZXIgPSBhd2FpdCBzaGFycEZpbGUudG9CdWZmZXIoeyByZXNvbHZlV2l0aE9iamVjdDogdHJ1ZSB9KVxuICAgICAgOyh7IGV4dCwgbWltZSB9ID0gYXdhaXQgZnJvbUJ1ZmZlcihmaWxlQnVmZmVyLmRhdGEpKSAvLyBUaGlzIGlzIGdldHRpbmcgYW4gaW5jb3JyZWN0IGdpZiBoZWlnaHQgYmFjay5cbiAgICAgIGZpbGVEYXRhLndpZHRoID0gZmlsZUJ1ZmZlci5pbmZvLndpZHRoXG4gICAgICBmaWxlRGF0YS5oZWlnaHQgPSBmaWxlQnVmZmVyLmluZm8uaGVpZ2h0XG4gICAgICBmaWxlRGF0YS5maWxlc2l6ZSA9IGZpbGVCdWZmZXIuaW5mby5zaXplXG5cbiAgICAgIC8vIEFuaW1hdGVkIEdJRnMgKyBXZWJQIGFnZ3JlZ2F0ZSB0aGUgaGVpZ2h0IGZyb20gZXZlcnkgZnJhbWUsIHNvIHdlIG5lZWQgdG8gdXNlIGRpdmlkZSBieSBudW1iZXIgb2YgcGFnZXNcbiAgICAgIGlmIChtZXRhZGF0YS5wYWdlcykge1xuICAgICAgICBmaWxlRGF0YS5oZWlnaHQgPSBmaWxlQnVmZmVyLmluZm8uaGVpZ2h0IC8gbWV0YWRhdGEucGFnZXNcbiAgICAgICAgZmlsZURhdGEuZmlsZXNpemUgPSBmaWxlQnVmZmVyLmRhdGEubGVuZ3RoXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIG1pbWUgPSBmaWxlLm1pbWV0eXBlXG4gICAgICBmaWxlRGF0YS5maWxlc2l6ZSA9IGZpbGUuc2l6ZVxuXG4gICAgICBpZiAoZmlsZS5uYW1lLmluY2x1ZGVzKCcuJykpIHtcbiAgICAgICAgZXh0ID0gZmlsZS5uYW1lLnNwbGl0KCcuJykucG9wKClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGV4dCA9ICcnXG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gQWR1c3QgU1ZHIG1pbWUgdHlwZS4gZnJvbUJ1ZmZlciBtb2RpZmllcyBpdC5cbiAgICBpZiAobWltZSA9PT0gJ2FwcGxpY2F0aW9uL3htbCcgJiYgZXh0ID09PSAnc3ZnJykgbWltZSA9ICdpbWFnZS9zdmcreG1sJ1xuICAgIGZpbGVEYXRhLm1pbWVUeXBlID0gbWltZVxuXG4gICAgY29uc3QgYmFzZUZpbGVuYW1lID0gc2FuaXRpemUoZmlsZS5uYW1lLnN1YnN0cmluZygwLCBmaWxlLm5hbWUubGFzdEluZGV4T2YoJy4nKSkgfHwgZmlsZS5uYW1lKVxuICAgIGZzU2FmZU5hbWUgPSBgJHtiYXNlRmlsZW5hbWV9JHtleHQgPyBgLiR7ZXh0fWAgOiAnJ31gXG5cbiAgICBpZiAoIW92ZXJ3cml0ZUV4aXN0aW5nRmlsZXMpIHtcbiAgICAgIGZzU2FmZU5hbWUgPSBhd2FpdCBnZXRTYWZlRmlsZU5hbWUoe1xuICAgICAgICBjb2xsZWN0aW9uU2x1ZzogY29sbGVjdGlvbkNvbmZpZy5zbHVnLFxuICAgICAgICBkZXNpcmVkRmlsZW5hbWU6IGZzU2FmZU5hbWUsXG4gICAgICAgIHJlcSxcbiAgICAgICAgc3RhdGljUGF0aCxcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgZmlsZURhdGEuZmlsZW5hbWUgPSBmc1NhZmVOYW1lXG4gICAgbGV0IGZpbGVGb3JSZXNpemUgPSBmaWxlXG5cbiAgICBpZiAoY3JvcERhdGEpIHtcbiAgICAgIGNvbnN0IHsgZGF0YTogY3JvcHBlZEltYWdlLCBpbmZvIH0gPSBhd2FpdCBjcm9wSW1hZ2UoeyBjcm9wRGF0YSwgZGltZW5zaW9ucywgZmlsZSB9KVxuXG4gICAgICBmaWxlc1RvU2F2ZS5wdXNoKHtcbiAgICAgICAgYnVmZmVyOiBjcm9wcGVkSW1hZ2UsXG4gICAgICAgIHBhdGg6IGAke3N0YXRpY1BhdGh9LyR7ZnNTYWZlTmFtZX1gLFxuICAgICAgfSlcblxuICAgICAgZmlsZUZvclJlc2l6ZSA9IHtcbiAgICAgICAgLi4uZmlsZSxcbiAgICAgICAgZGF0YTogY3JvcHBlZEltYWdlLFxuICAgICAgICBzaXplOiBpbmZvLnNpemUsXG4gICAgICB9XG4gICAgICBmaWxlRGF0YS53aWR0aCA9IGluZm8ud2lkdGhcbiAgICAgIGZpbGVEYXRhLmhlaWdodCA9IGluZm8uaGVpZ2h0XG4gICAgICBmaWxlRGF0YS5maWxlc2l6ZSA9IGluZm8uc2l6ZVxuXG4gICAgICBpZiAoZmlsZS50ZW1wRmlsZVBhdGgpIHtcbiAgICAgICAgYXdhaXQgZnMucHJvbWlzZXMud3JpdGVGaWxlKGZpbGUudGVtcEZpbGVQYXRoLCBjcm9wcGVkSW1hZ2UpIC8vIHdyaXRlIGZpbGVCdWZmZXIgdG8gdGhlIHRlbXAgcGF0aFxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVxLmZpbGVzLmZpbGUgPSBmaWxlRm9yUmVzaXplXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGZpbGVzVG9TYXZlLnB1c2goe1xuICAgICAgICBidWZmZXI6IGZpbGVCdWZmZXI/LmRhdGEgfHwgZmlsZS5kYXRhLFxuICAgICAgICBwYXRoOiBgJHtzdGF0aWNQYXRofS8ke2ZzU2FmZU5hbWV9YCxcbiAgICAgIH0pXG5cbiAgICAgIC8vIElmIHVzaW5nIHRlbXAgZmlsZXMgYW5kIHRoZSBpbWFnZSBpcyBiZWluZyByZXNpemVkLCB3cml0ZSB0aGUgZmlsZSB0byB0aGUgdGVtcCBwYXRoXG4gICAgICBpZiAoZmlsZUJ1ZmZlcj8uZGF0YSB8fCBmaWxlLmRhdGEubGVuZ3RoID4gMCkge1xuICAgICAgICBpZiAoZmlsZS50ZW1wRmlsZVBhdGgpIHtcbiAgICAgICAgICBhd2FpdCBmcy5wcm9taXNlcy53cml0ZUZpbGUoZmlsZS50ZW1wRmlsZVBhdGgsIGZpbGVCdWZmZXI/LmRhdGEgfHwgZmlsZS5kYXRhKSAvLyB3cml0ZSBmaWxlQnVmZmVyIHRvIHRoZSB0ZW1wIHBhdGhcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBBc3NpZ24gdGhlIF9wb3NzaWJseSBtb2RpZmllZF8gZmlsZSB0byB0aGUgcmVxdWVzdCBvYmplY3RcbiAgICAgICAgICByZXEuZmlsZXMuZmlsZSA9IHtcbiAgICAgICAgICAgIC4uLmZpbGUsXG4gICAgICAgICAgICBkYXRhOiBmaWxlQnVmZmVyPy5kYXRhIHx8IGZpbGUuZGF0YSxcbiAgICAgICAgICAgIHNpemU6IGZpbGVCdWZmZXI/LmluZm8uc2l6ZSxcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoQXJyYXkuaXNBcnJheShpbWFnZVNpemVzKSAmJiBmaWxlU3VwcG9ydHNSZXNpemUpIHtcbiAgICAgIHJlcS5wYXlsb2FkVXBsb2FkU2l6ZXMgPSB7fVxuICAgICAgY29uc3QgeyBzaXplRGF0YSwgc2l6ZXNUb1NhdmUgfSA9IGF3YWl0IHJlc2l6ZUFuZFRyYW5zZm9ybUltYWdlU2l6ZXMoe1xuICAgICAgICBjb25maWc6IGNvbGxlY3Rpb25Db25maWcsXG4gICAgICAgIGRpbWVuc2lvbnM6ICFjcm9wRGF0YVxuICAgICAgICAgID8gZGltZW5zaW9uc1xuICAgICAgICAgIDoge1xuICAgICAgICAgICAgICAuLi5kaW1lbnNpb25zLFxuICAgICAgICAgICAgICBoZWlnaHQ6IGZpbGVEYXRhLmhlaWdodCxcbiAgICAgICAgICAgICAgd2lkdGg6IGZpbGVEYXRhLndpZHRoLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgZmlsZTogZmlsZUZvclJlc2l6ZSxcbiAgICAgICAgbWltZVR5cGU6IGZpbGVEYXRhLm1pbWVUeXBlLFxuICAgICAgICByZXEsXG4gICAgICAgIHNhdmVkRmlsZW5hbWU6IGZzU2FmZU5hbWUgfHwgZmlsZS5uYW1lLFxuICAgICAgICBzdGF0aWNQYXRoLFxuICAgICAgfSlcblxuICAgICAgZmlsZURhdGEuc2l6ZXMgPSBzaXplRGF0YVxuICAgICAgZmlsZXNUb1NhdmUucHVzaCguLi5zaXplc1RvU2F2ZSlcbiAgICB9XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGNvbnNvbGUuZXJyb3IoZXJyKVxuICAgIHRocm93IG5ldyBGaWxlVXBsb2FkRXJyb3IocmVxLnQpXG4gIH1cblxuICBuZXdEYXRhID0ge1xuICAgIC4uLm5ld0RhdGEsXG4gICAgLi4uZmlsZURhdGEsXG4gIH1cblxuICByZXR1cm4ge1xuICAgIGRhdGE6IG5ld0RhdGEsXG4gICAgZmlsZXM6IGZpbGVzVG9TYXZlLFxuICB9XG59XG4iXSwibmFtZXMiOlsiZ2VuZXJhdGVGaWxlRGF0YSIsImNvbGxlY3Rpb24iLCJjb25maWciLCJjb2xsZWN0aW9uQ29uZmlnIiwiZGF0YSIsIm92ZXJ3cml0ZUV4aXN0aW5nRmlsZXMiLCJyZXEiLCJ0aHJvd09uTWlzc2luZ0ZpbGUiLCJ1cGxvYWQiLCJmaWxlcyIsImZpbGUiLCJ1bmRlZmluZWQiLCJ1cGxvYWRFZGl0cyIsInF1ZXJ5IiwiZGlzYWJsZUxvY2FsU3RvcmFnZSIsImZvcm1hdE9wdGlvbnMiLCJpbWFnZVNpemVzIiwicmVzaXplT3B0aW9ucyIsInN0YXRpY0RpciIsInRyaW1PcHRpb25zIiwic3RhdGljUGF0aCIsImluZGV4T2YiLCJwYXRoIiwicmVzb2x2ZSIsInBhdGhzIiwiY29uZmlnRGlyIiwiZmlsZW5hbWUiLCJ1cmwiLCJzdGFydHNXaXRoIiwiZmlsZVBhdGgiLCJyZXNwb25zZSIsImdldEZpbGVCeVBhdGgiLCJnZXRGaWxlQnlVUkwiLCJlcnIiLCJGaWxlVXBsb2FkRXJyb3IiLCJ0IiwiTWlzc2luZ0ZpbGUiLCJta2RpcnAiLCJzeW5jIiwibmV3RGF0YSIsImZpbGVzVG9TYXZlIiwiZmlsZURhdGEiLCJmaWxlSXNBbmltYXRlZCIsIm1pbWV0eXBlIiwiY3JvcERhdGEiLCJjcm9wIiwiZmlsZVN1cHBvcnRzUmVzaXplIiwiY2FuUmVzaXplSW1hZ2UiLCJmc1NhZmVOYW1lIiwic2hhcnBGaWxlIiwiZGltZW5zaW9ucyIsImZpbGVCdWZmZXIiLCJleHQiLCJtaW1lIiwiZmlsZUhhc0FkanVzdG1lbnRzIiwiQm9vbGVhbiIsInRlbXBGaWxlUGF0aCIsInNoYXJwT3B0aW9ucyIsImFuaW1hdGVkIiwic2hhcnAiLCJyb3RhdGUiLCJyZXNpemUiLCJ0b0Zvcm1hdCIsImZvcm1hdCIsIm9wdGlvbnMiLCJ0cmltIiwiaXNJbWFnZSIsImdldEltYWdlU2l6ZSIsIndpZHRoIiwiaGVpZ2h0IiwibWV0YWRhdGEiLCJ0b0J1ZmZlciIsInJlc29sdmVXaXRoT2JqZWN0IiwiZnJvbUJ1ZmZlciIsImluZm8iLCJmaWxlc2l6ZSIsInNpemUiLCJwYWdlcyIsImxlbmd0aCIsIm5hbWUiLCJpbmNsdWRlcyIsInNwbGl0IiwicG9wIiwibWltZVR5cGUiLCJiYXNlRmlsZW5hbWUiLCJzYW5pdGl6ZSIsInN1YnN0cmluZyIsImxhc3RJbmRleE9mIiwiZ2V0U2FmZUZpbGVOYW1lIiwiY29sbGVjdGlvblNsdWciLCJzbHVnIiwiZGVzaXJlZEZpbGVuYW1lIiwiZmlsZUZvclJlc2l6ZSIsImNyb3BwZWRJbWFnZSIsImNyb3BJbWFnZSIsInB1c2giLCJidWZmZXIiLCJmcyIsInByb21pc2VzIiwid3JpdGVGaWxlIiwiQXJyYXkiLCJpc0FycmF5IiwicGF5bG9hZFVwbG9hZFNpemVzIiwic2l6ZURhdGEiLCJzaXplc1RvU2F2ZSIsInJlc2l6ZUFuZFRyYW5zZm9ybUltYWdlU2l6ZXMiLCJzYXZlZEZpbGVuYW1lIiwic2l6ZXMiLCJjb25zb2xlIiwiZXJyb3IiXSwibWFwcGluZ3MiOiI7Ozs7K0JBdUNhQTs7O2VBQUFBOzs7MEJBcENjOzJEQUNaOytEQUNJOzZEQUNGO3lFQUNJOzhEQUNIO3dCQU8yQjt1RUFDbEI7a0VBQ0w7c0VBQ0k7cUVBQ0Q7cUVBQ0E7d0VBQ0c7cUVBQ2E7Z0VBQ3JCOzs7Ozs7QUFnQmIsTUFBTUEsbUJBQW1CLE9BQVUsRUFDeENDLFlBQVksRUFBRUMsUUFBUUMsZ0JBQWdCLEVBQUUsRUFDeENELE1BQU0sRUFDTkUsSUFBSSxFQUNKQyxzQkFBc0IsRUFDdEJDLEdBQUcsRUFDSEMsa0JBQWtCLEVBQ1Y7SUFDUixJQUFJLENBQUNKLGlCQUFpQkssTUFBTSxFQUFFO1FBQzVCLE9BQU87WUFDTEo7WUFDQUssT0FBTyxFQUFFO1FBQ1g7SUFDRjtJQUVBLElBQUlDLE9BQU9KLElBQUlHLEtBQUssRUFBRUMsUUFBUUM7SUFDOUIsTUFBTSxFQUFFQyxXQUFXLEVB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
228
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91cGxvYWRzL2dlbmVyYXRlRmlsZURhdGEudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBVcGxvYWRlZEZpbGUgfSBmcm9tICdleHByZXNzLWZpbGV1cGxvYWQnXG5pbXBvcnQgdHlwZSB7IE91dHB1dEluZm8sIFNoYXJwLCBTaGFycE9wdGlvbnMgfSBmcm9tICdzaGFycCdcblxuaW1wb3J0IHsgZnJvbUJ1ZmZlciB9IGZyb20gJ2ZpbGUtdHlwZSdcbmltcG9ydCBmcyBmcm9tICdmcydcbmltcG9ydCBta2RpcnAgZnJvbSAnbWtkaXJwJ1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCdcbmltcG9ydCBzYW5pdGl6ZSBmcm9tICdzYW5pdGl6ZS1maWxlbmFtZSdcbmltcG9ydCBzaGFycCBmcm9tICdzaGFycCdcblxuaW1wb3J0IHR5cGUgeyBDb2xsZWN0aW9uIH0gZnJvbSAnLi4vY29sbGVjdGlvbnMvY29uZmlnL3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBTYW5pdGl6ZWRDb25maWcgfSBmcm9tICcuLi9jb25maWcvdHlwZXMnXG5pbXBvcnQgdHlwZSB7IFBheWxvYWRSZXF1ZXN0IH0gZnJvbSAnLi4vZXhwcmVzcy90eXBlcydcbmltcG9ydCB0eXBlIHsgRmlsZURhdGEsIEZpbGVUb1NhdmUsIFByb2JlZEltYWdlU2l6ZSB9IGZyb20gJy4vdHlwZXMnXG5cbmltcG9ydCB7IEZpbGVVcGxvYWRFcnJvciwgTWlzc2luZ0ZpbGUgfSBmcm9tICcuLi9lcnJvcnMnXG5pbXBvcnQgY2FuUmVzaXplSW1hZ2UgZnJvbSAnLi9jYW5SZXNpemVJbWFnZSdcbmltcG9ydCBjcm9wSW1hZ2UgZnJvbSAnLi9jcm9wSW1hZ2UnXG5pbXBvcnQgZ2V0RmlsZUJ5UGF0aCBmcm9tICcuL2dldEZpbGVCeVBhdGgnXG5pbXBvcnQgeyBnZXRFeHRlcm5hbEZpbGUgfSBmcm9tICcuL2dldEV4dGVybmFsRmlsZSdcbmltcG9ydCBnZXRJbWFnZVNpemUgZnJvbSAnLi9nZXRJbWFnZVNpemUnXG5pbXBvcnQgZ2V0U2FmZUZpbGVOYW1lIGZyb20gJy4vZ2V0U2FmZUZpbGVuYW1lJ1xuaW1wb3J0IHJlc2l6ZUFuZFRyYW5zZm9ybUltYWdlU2l6ZXMgZnJvbSAnLi9pbWFnZVJlc2l6ZXInXG5pbXBvcnQgaXNJbWFnZSBmcm9tICcuL2lzSW1hZ2UnXG5cbnR5cGUgQXJnczxUPiA9IHtcbiAgY29sbGVjdGlvbjogQ29sbGVjdGlvblxuICBjb25maWc6IFNhbml0aXplZENvbmZpZ1xuICBkYXRhOiBUXG4gIG92ZXJ3cml0ZUV4aXN0aW5nRmlsZXM/OiBib29sZWFuXG4gIHJlcTogUGF5bG9hZFJlcXVlc3RcbiAgdGhyb3dPbk1pc3NpbmdGaWxlPzogYm9vbGVhblxufVxuXG50eXBlIFJlc3VsdDxUPiA9IFByb21pc2U8e1xuICBkYXRhOiBUXG4gIGZpbGVzOiBGaWxlVG9TYXZlW11cbn0+XG5cbmV4cG9ydCBjb25zdCBnZW5lcmF0ZUZpbGVEYXRhID0gYXN5bmMgPFQ+KHtcbiAgY29sbGVjdGlvbjogeyBjb25maWc6IGNvbGxlY3Rpb25Db25maWcgfSxcbiAgY29uZmlnLFxuICBkYXRhLFxuICBvdmVyd3JpdGVFeGlzdGluZ0ZpbGVzLFxuICByZXEsXG4gIHRocm93T25NaXNzaW5nRmlsZSxcbn06IEFyZ3M8VD4pOiBSZXN1bHQ8VD4gPT4ge1xuICBpZiAoIWNvbGxlY3Rpb25Db25maWcudXBsb2FkKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGRhdGEsXG4gICAgICBmaWxlczogW10sXG4gICAgfVxuICB9XG5cbiAgbGV0IGZpbGUgPSByZXEuZmlsZXM/LmZpbGUgfHwgdW5kZWZpbmVkXG4gIGNvbnN0IHsgdXBsb2FkRWRpdHMgfSA9IHJlcS5xdWVyeSB8fCB7fVxuXG4gIGNvbnN0IHsgZGlzYWJsZUxvY2FsU3RvcmFnZSwgZm9ybWF0T3B0aW9ucywgaW1hZ2VTaXplcywgcmVzaXplT3B0aW9ucywgc3RhdGljRGlyLCB0cmltT3B0aW9ucyB9ID1cbiAgICBjb2xsZWN0aW9uQ29uZmlnLnVwbG9hZFxuXG4gIGxldCBzdGF0aWNQYXRoID0gc3RhdGljRGlyXG4gIGlmIChzdGF0aWNEaXIuaW5kZXhPZignLycpICE9PSAwKSB7XG4gICAgc3RhdGljUGF0aCA9IHBhdGgucmVzb2x2ZShjb25maWcucGF0aHMuY29uZmlnRGlyLCBzdGF0aWNEaXIpXG4gIH1cblxuICBpZiAoIWZpbGUgJiYgdXBsb2FkRWRpdHMgJiYgZGF0YSkge1xuICAgIGNvbnN0IHsgZmlsZW5hbWUsIHVybCB9ID0gZGF0YSBhcyBGaWxlRGF0YVxuXG4gICAgdHJ5IHtcbiAgICAgIGlmICh1cmwgJiYgdXJsLnN0YXJ0c1dpdGgoJy8nKSAmJiAhZGlzYWJsZUxvY2FsU3RvcmFnZSkge1xuICAgICAgICBjb25zdCBmaWxlUGF0aCA9IGAke3N0YXRpY1BhdGh9LyR7ZmlsZW5hbWV9YFxuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGdldEZpbGVCeVBhdGgoZmlsZVBhdGgpXG4gICAgICAgIGZpbGUgPSByZXNwb25zZSBhcyBVcGxvYWRlZEZpbGVcbiAgICAgICAgb3ZlcndyaXRlRXhpc3RpbmdGaWxlcyA9IHRydWVcbiAgICAgIH0gZWxzZSBpZiAoZmlsZW5hbWUgJiYgdXJsKSB7XG4gICAgICAgIGZpbGUgPSAoYXdhaXQgZ2V0RXh0ZXJuYWxGaWxlKHsgcmVxLCBkYXRhOiBkYXRhIGFzIEZpbGVEYXRhIH0pKSBhcyBVcGxvYWRlZEZpbGVcbiAgICAgICAgb3ZlcndyaXRlRXhpc3RpbmdGaWxlcyA9IHRydWVcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnIpIHtcbiAgICAgIHRocm93IG5ldyBGaWxlVXBsb2FkRXJyb3IocmVxLnQpXG4gICAgfVxuICB9XG5cbiAgaWYgKCFmaWxlKSB7XG4gICAgaWYgKHRocm93T25NaXNzaW5nRmlsZSkgdGhyb3cgbmV3IE1pc3NpbmdGaWxlKHJlcS50KVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGRhdGEsXG4gICAgICBmaWxlczogW10sXG4gICAgfVxuICB9XG5cbiAgaWYgKCFkaXNhYmxlTG9jYWxTdG9yYWdlKSB7XG4gICAgbWtkaXJwLnN5bmMoc3RhdGljUGF0aClcbiAgfVxuXG4gIGxldCBuZXdEYXRhID0gZGF0YVxuICBjb25zdCBmaWxlc1RvU2F2ZTogRmlsZVRvU2F2ZVtdID0gW11cbiAgY29uc3QgZmlsZURhdGE6IFBhcnRpYWw8RmlsZURhdGE+ID0ge31cbiAgY29uc3QgZmlsZUlzQW5pbWF0ZWQgPSBmaWxlLm1pbWV0eXBlID09PSAnaW1hZ2UvZ2lmJyB8fCBmaWxlLm1pbWV0eXBlID09PSAnaW1hZ2Uvd2VicCdcbiAgY29uc3QgY3JvcERhdGEgPVxuICAgIHR5cGVvZiB1cGxvYWRFZGl0cyA9PT0gJ29iamVjdCcgJiYgJ2Nyb3AnIGluIHVwbG9hZEVkaXRzID8gdXBsb2FkRWRpdHMuY3JvcCA6IHVuZGVmaW5lZFxuXG4gIHRyeSB7XG4gICAgY29uc3QgZmlsZVN1cHBvcnRzUmVzaXplID0gY2FuUmVzaXplSW1hZ2UoZmlsZS5taW1ldHlwZSlcbiAgICBsZXQgZnNTYWZlTmFtZTogc3RyaW5nXG4gICAgbGV0IHNoYXJwRmlsZTogU2hhcnAgfCB1bmRlZmluZWRcbiAgICBsZXQgZGltZW5zaW9uczogUHJvYmVkSW1hZ2VTaXplIHwgdW5kZWZpbmVkXG4gICAgbGV0IGZpbGVCdWZmZXI6IHsgZGF0YTogQnVmZmVyOyBpbmZvOiBPdXRwdXRJbmZvIH1cbiAgICBsZXQgZXh0XG4gICAgbGV0IG1pbWU6IHN0cmluZ1xuICAgIGNvbnN0IGZpbGVIYXNBZGp1c3RtZW50cyA9XG4gICAgICBmaWxlU3VwcG9ydHNSZXNpemUgJiZcbiAgICAgIEJvb2xlYW4ocmVzaXplT3B0aW9ucyB8fCBmb3JtYXRPcHRpb25zIHx8IHRyaW1PcHRpb25zIHx8IGZpbGUudGVtcEZpbGVQYXRoKVxuXG4gICAgY29uc3Qgc2hhcnBPcHRpb25zOiBTaGFycE9wdGlvbnMgPSB7fVxuXG4gICAgaWYgKGZpbGVJc0FuaW1hdGVkKSBzaGFycE9wdGlvbnMuYW5pbWF0ZWQgPSB0cnVlXG5cbiAgICBpZiAoZmlsZUhhc0FkanVzdG1lbnRzKSB7XG4gICAgICBpZiAoZmlsZS50ZW1wRmlsZVBhdGgpIHtcbiAgICAgICAgc2hhcnBGaWxlID0gc2hhcnAoZmlsZS50ZW1wRmlsZVBhdGgsIHNoYXJwT3B0aW9ucykucm90YXRlKCkgLy8gcGFzcyByb3RhdGUoKSB0byBhdXRvLXJvdGF0ZSBiYXNlZCBvbiBFWElGIGRhdGEuIGh0dHBzOi8vZ2l0aHViLmNvbS9wYXlsb2FkY21zL3BheWxvYWQvcHVsbC8zMDgxXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzaGFycEZpbGUgPSBzaGFycChmaWxlLmRhdGEsIHNoYXJwT3B0aW9ucykucm90YXRlKCkgLy8gcGFzcyByb3RhdGUoKSB0byBhdXRvLXJvdGF0ZSBiYXNlZCBvbiBFWElGIGRhdGEuIGh0dHBzOi8vZ2l0aHViLmNvbS9wYXlsb2FkY21zL3BheWxvYWQvcHVsbC8zMDgxXG4gICAgICB9XG5cbiAgICAgIGlmIChyZXNpemVPcHRpb25zKSB7XG4gICAgICAgIHNoYXJwRmlsZSA9IHNoYXJwRmlsZS5yZXNpemUocmVzaXplT3B0aW9ucylcbiAgICAgIH1cbiAgICAgIGlmIChmb3JtYXRPcHRpb25zKSB7XG4gICAgICAgIHNoYXJwRmlsZSA9IHNoYXJwRmlsZS50b0Zvcm1hdChmb3JtYXRPcHRpb25zLmZvcm1hdCwgZm9ybWF0T3B0aW9ucy5vcHRpb25zKVxuICAgICAgfVxuICAgICAgaWYgKHRyaW1PcHRpb25zKSB7XG4gICAgICAgIHNoYXJwRmlsZSA9IHNoYXJwRmlsZS50cmltKHRyaW1PcHRpb25zKVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChpc0ltYWdlKGZpbGUubWltZXR5cGUpKSB7XG4gICAgICBkaW1lbnNpb25zID0gYXdhaXQgZ2V0SW1hZ2VTaXplKGZpbGUpXG4gICAgICBmaWxlRGF0YS53aWR0aCA9IGRpbWVuc2lvbnMud2lkdGhcbiAgICAgIGZpbGVEYXRhLmhlaWdodCA9IGRpbWVuc2lvbnMuaGVpZ2h0XG4gICAgfVxuXG4gICAgaWYgKHNoYXJwRmlsZSkge1xuICAgICAgY29uc3QgbWV0YWRhdGEgPSBhd2FpdCBzaGFycEZpbGUubWV0YWRhdGEoKVxuICAgICAgZmlsZUJ1ZmZlciA9IGF3YWl0IHNoYXJwRmlsZS50b0J1ZmZlcih7IHJlc29sdmVXaXRoT2JqZWN0OiB0cnVlIH0pXG4gICAgICA7KHsgZXh0LCBtaW1lIH0gPSBhd2FpdCBmcm9tQnVmZmVyKGZpbGVCdWZmZXIuZGF0YSkpIC8vIFRoaXMgaXMgZ2V0dGluZyBhbiBpbmNvcnJlY3QgZ2lmIGhlaWdodCBiYWNrLlxuICAgICAgZmlsZURhdGEud2lkdGggPSBmaWxlQnVmZmVyLmluZm8ud2lkdGhcbiAgICAgIGZpbGVEYXRhLmhlaWdodCA9IGZpbGVCdWZmZXIuaW5mby5oZWlnaHRcbiAgICAgIGZpbGVEYXRhLmZpbGVzaXplID0gZmlsZUJ1ZmZlci5pbmZvLnNpemVcblxuICAgICAgLy8gQW5pbWF0ZWQgR0lGcyArIFdlYlAgYWdncmVnYXRlIHRoZSBoZWlnaHQgZnJvbSBldmVyeSBmcmFtZSwgc28gd2UgbmVlZCB0byB1c2UgZGl2aWRlIGJ5IG51bWJlciBvZiBwYWdlc1xuICAgICAgaWYgKG1ldGFkYXRhLnBhZ2VzKSB7XG4gICAgICAgIGZpbGVEYXRhLmhlaWdodCA9IGZpbGVCdWZmZXIuaW5mby5oZWlnaHQgLyBtZXRhZGF0YS5wYWdlc1xuICAgICAgICBmaWxlRGF0YS5maWxlc2l6ZSA9IGZpbGVCdWZmZXIuZGF0YS5sZW5ndGhcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgbWltZSA9IGZpbGUubWltZXR5cGVcbiAgICAgIGZpbGVEYXRhLmZpbGVzaXplID0gZmlsZS5zaXplXG5cbiAgICAgIGlmIChmaWxlLm5hbWUuaW5jbHVkZXMoJy4nKSkge1xuICAgICAgICBleHQgPSBmaWxlLm5hbWUuc3BsaXQoJy4nKS5wb3AoKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZXh0ID0gJydcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBBZHVzdCBTVkcgbWltZSB0eXBlLiBmcm9tQnVmZmVyIG1vZGlmaWVzIGl0LlxuICAgIGlmIChtaW1lID09PSAnYXBwbGljYXRpb24veG1sJyAmJiBleHQgPT09ICdzdmcnKSBtaW1lID0gJ2ltYWdlL3N2Zyt4bWwnXG4gICAgZmlsZURhdGEubWltZVR5cGUgPSBtaW1lXG5cbiAgICBjb25zdCBiYXNlRmlsZW5hbWUgPSBzYW5pdGl6ZShmaWxlLm5hbWUuc3Vic3RyaW5nKDAsIGZpbGUubmFtZS5sYXN0SW5kZXhPZignLicpKSB8fCBmaWxlLm5hbWUpXG4gICAgZnNTYWZlTmFtZSA9IGAke2Jhc2VGaWxlbmFtZX0ke2V4dCA/IGAuJHtleHR9YCA6ICcnfWBcblxuICAgIGlmICghb3ZlcndyaXRlRXhpc3RpbmdGaWxlcykge1xuICAgICAgZnNTYWZlTmFtZSA9IGF3YWl0IGdldFNhZmVGaWxlTmFtZSh7XG4gICAgICAgIGNvbGxlY3Rpb25TbHVnOiBjb2xsZWN0aW9uQ29uZmlnLnNsdWcsXG4gICAgICAgIGRlc2lyZWRGaWxlbmFtZTogZnNTYWZlTmFtZSxcbiAgICAgICAgcmVxLFxuICAgICAgICBzdGF0aWNQYXRoLFxuICAgICAgfSlcbiAgICB9XG5cbiAgICBmaWxlRGF0YS5maWxlbmFtZSA9IGZzU2FmZU5hbWVcbiAgICBsZXQgZmlsZUZvclJlc2l6ZSA9IGZpbGVcblxuICAgIGlmIChjcm9wRGF0YSkge1xuICAgICAgY29uc3QgeyBkYXRhOiBjcm9wcGVkSW1hZ2UsIGluZm8gfSA9IGF3YWl0IGNyb3BJbWFnZSh7IGNyb3BEYXRhLCBkaW1lbnNpb25zLCBmaWxlIH0pXG5cbiAgICAgIGZpbGVzVG9TYXZlLnB1c2goe1xuICAgICAgICBidWZmZXI6IGNyb3BwZWRJbWFnZSxcbiAgICAgICAgcGF0aDogYCR7c3RhdGljUGF0aH0vJHtmc1NhZmVOYW1lfWAsXG4gICAgICB9KVxuXG4gICAgICBmaWxlRm9yUmVzaXplID0ge1xuICAgICAgICAuLi5maWxlLFxuICAgICAgICBkYXRhOiBjcm9wcGVkSW1hZ2UsXG4gICAgICAgIHNpemU6IGluZm8uc2l6ZSxcbiAgICAgIH1cbiAgICAgIGZpbGVEYXRhLndpZHRoID0gaW5mby53aWR0aFxuICAgICAgZmlsZURhdGEuaGVpZ2h0ID0gaW5mby5oZWlnaHRcbiAgICAgIGZpbGVEYXRhLmZpbGVzaXplID0gaW5mby5zaXplXG5cbiAgICAgIGlmIChmaWxlLnRlbXBGaWxlUGF0aCkge1xuICAgICAgICBhd2FpdCBmcy5wcm9taXNlcy53cml0ZUZpbGUoZmlsZS50ZW1wRmlsZVBhdGgsIGNyb3BwZWRJbWFnZSkgLy8gd3JpdGUgZmlsZUJ1ZmZlciB0byB0aGUgdGVtcCBwYXRoXG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXEuZmlsZXMuZmlsZSA9IGZpbGVGb3JSZXNpemVcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgZmlsZXNUb1NhdmUucHVzaCh7XG4gICAgICAgIGJ1ZmZlcjogZmlsZUJ1ZmZlcj8uZGF0YSB8fCBmaWxlLmRhdGEsXG4gICAgICAgIHBhdGg6IGAke3N0YXRpY1BhdGh9LyR7ZnNTYWZlTmFtZX1gLFxuICAgICAgfSlcblxuICAgICAgLy8gSWYgdXNpbmcgdGVtcCBmaWxlcyBhbmQgdGhlIGltYWdlIGlzIGJlaW5nIHJlc2l6ZWQsIHdyaXRlIHRoZSBmaWxlIHRvIHRoZSB0ZW1wIHBhdGhcbiAgICAgIGlmIChmaWxlQnVmZmVyPy5kYXRhIHx8IGZpbGUuZGF0YS5sZW5ndGggPiAwKSB7XG4gICAgICAgIGlmIChmaWxlLnRlbXBGaWxlUGF0aCkge1xuICAgICAgICAgIGF3YWl0IGZzLnByb21pc2VzLndyaXRlRmlsZShmaWxlLnRlbXBGaWxlUGF0aCwgZmlsZUJ1ZmZlcj8uZGF0YSB8fCBmaWxlLmRhdGEpIC8vIHdyaXRlIGZpbGVCdWZmZXIgdG8gdGhlIHRlbXAgcGF0aFxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIEFzc2lnbiB0aGUgX3Bvc3NpYmx5IG1vZGlmaWVkXyBmaWxlIHRvIHRoZSByZXF1ZXN0IG9iamVjdFxuICAgICAgICAgIHJlcS5maWxlcy5maWxlID0ge1xuICAgICAgICAgICAgLi4uZmlsZSxcbiAgICAgICAgICAgIGRhdGE6IGZpbGVCdWZmZXI/LmRhdGEgfHwgZmlsZS5kYXRhLFxuICAgICAgICAgICAgc2l6ZTogZmlsZUJ1ZmZlcj8uaW5mby5zaXplLFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChBcnJheS5pc0FycmF5KGltYWdlU2l6ZXMpICYmIGZpbGVTdXBwb3J0c1Jlc2l6ZSkge1xuICAgICAgcmVxLnBheWxvYWRVcGxvYWRTaXplcyA9IHt9XG4gICAgICBjb25zdCB7IHNpemVEYXRhLCBzaXplc1RvU2F2ZSB9ID0gYXdhaXQgcmVzaXplQW5kVHJhbnNmb3JtSW1hZ2VTaXplcyh7XG4gICAgICAgIGNvbmZpZzogY29sbGVjdGlvbkNvbmZpZyxcbiAgICAgICAgZGltZW5zaW9uczogIWNyb3BEYXRhXG4gICAgICAgICAgPyBkaW1lbnNpb25zXG4gICAgICAgICAgOiB7XG4gICAgICAgICAgICAgIC4uLmRpbWVuc2lvbnMsXG4gICAgICAgICAgICAgIGhlaWdodDogZmlsZURhdGEuaGVpZ2h0LFxuICAgICAgICAgICAgICB3aWR0aDogZmlsZURhdGEud2lkdGgsXG4gICAgICAgICAgICB9LFxuICAgICAgICBmaWxlOiBmaWxlRm9yUmVzaXplLFxuICAgICAgICBtaW1lVHlwZTogZmlsZURhdGEubWltZVR5cGUsXG4gICAgICAgIHJlcSxcbiAgICAgICAgc2F2ZWRGaWxlbmFtZTogZnNTYWZlTmFtZSB8fCBmaWxlLm5hbWUsXG4gICAgICAgIHN0YXRpY1BhdGgsXG4gICAgICB9KVxuXG4gICAgICBmaWxlRGF0YS5zaXplcyA9IHNpemVEYXRhXG4gICAgICBmaWxlc1RvU2F2ZS5wdXNoKC4uLnNpemVzVG9TYXZlKVxuICAgIH1cbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgY29uc29sZS5lcnJvcihlcnIpXG4gICAgdGhyb3cgbmV3IEZpbGVVcGxvYWRFcnJvcihyZXEudClcbiAgfVxuXG4gIG5ld0RhdGEgPSB7XG4gICAgLi4ubmV3RGF0YSxcbiAgICAuLi5maWxlRGF0YSxcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgZGF0YTogbmV3RGF0YSxcbiAgICBmaWxlczogZmlsZXNUb1NhdmUsXG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJnZW5lcmF0ZUZpbGVEYXRhIiwiY29sbGVjdGlvbiIsImNvbmZpZyIsImNvbGxlY3Rpb25Db25maWciLCJkYXRhIiwib3ZlcndyaXRlRXhpc3RpbmdGaWxlcyIsInJlcSIsInRocm93T25NaXNzaW5nRmlsZSIsInVwbG9hZCIsImZpbGVzIiwiZmlsZSIsInVuZGVmaW5lZCIsInVwbG9hZEVkaXRzIiwicXVlcnkiLCJkaXNhYmxlTG9jYWxTdG9yYWdlIiwiZm9ybWF0T3B0aW9ucyIsImltYWdlU2l6ZXMiLCJyZXNpemVPcHRpb25zIiwic3RhdGljRGlyIiwidHJpbU9wdGlvbnMiLCJzdGF0aWNQYXRoIiwiaW5kZXhPZiIsInBhdGgiLCJyZXNvbHZlIiwicGF0aHMiLCJjb25maWdEaXIiLCJmaWxlbmFtZSIsInVybCIsInN0YXJ0c1dpdGgiLCJmaWxlUGF0aCIsInJlc3BvbnNlIiwiZ2V0RmlsZUJ5UGF0aCIsImdldEV4dGVybmFsRmlsZSIsImVyciIsIkZpbGVVcGxvYWRFcnJvciIsInQiLCJNaXNzaW5nRmlsZSIsIm1rZGlycCIsInN5bmMiLCJuZXdEYXRhIiwiZmlsZXNUb1NhdmUiLCJmaWxlRGF0YSIsImZpbGVJc0FuaW1hdGVkIiwibWltZXR5cGUiLCJjcm9wRGF0YSIsImNyb3AiLCJmaWxlU3VwcG9ydHNSZXNpemUiLCJjYW5SZXNpemVJbWFnZSIsImZzU2FmZU5hbWUiLCJzaGFycEZpbGUiLCJkaW1lbnNpb25zIiwiZmlsZUJ1ZmZlciIsImV4dCIsIm1pbWUiLCJmaWxlSGFzQWRqdXN0bWVudHMiLCJCb29sZWFuIiwidGVtcEZpbGVQYXRoIiwic2hhcnBPcHRpb25zIiwiYW5pbWF0ZWQiLCJzaGFycCIsInJvdGF0ZSIsInJlc2l6ZSIsInRvRm9ybWF0IiwiZm9ybWF0Iiwib3B0aW9ucyIsInRyaW0iLCJpc0ltYWdlIiwiZ2V0SW1hZ2VTaXplIiwid2lkdGgiLCJoZWlnaHQiLCJtZXRhZGF0YSIsInRvQnVmZmVyIiwicmVzb2x2ZVdpdGhPYmplY3QiLCJmcm9tQnVmZmVyIiwiaW5mbyIsImZpbGVzaXplIiwic2l6ZSIsInBhZ2VzIiwibGVuZ3RoIiwibmFtZSIsImluY2x1ZGVzIiwic3BsaXQiLCJwb3AiLCJtaW1lVHlwZSIsImJhc2VGaWxlbmFtZSIsInNhbml0aXplIiwic3Vic3RyaW5nIiwibGFzdEluZGV4T2YiLCJnZXRTYWZlRmlsZU5hbWUiLCJjb2xsZWN0aW9uU2x1ZyIsInNsdWciLCJkZXNpcmVkRmlsZW5hbWUiLCJmaWxlRm9yUmVzaXplIiwiY3JvcHBlZEltYWdlIiwiY3JvcEltYWdlIiwicHVzaCIsImJ1ZmZlciIsImZzIiwicHJvbWlzZXMiLCJ3cml0ZUZpbGUiLCJBcnJheSIsImlzQXJyYXkiLCJwYXlsb2FkVXBsb2FkU2l6ZXMiLCJzaXplRGF0YSIsInNpemVzVG9TYXZlIiwicmVzaXplQW5kVHJhbnNmb3JtSW1hZ2VTaXplcyIsInNhdmVkRmlsZW5hbWUiLCJzaXplcyIsImNvbnNvbGUiLCJlcnJvciJdLCJtYXBwaW5ncyI6Ijs7OzsrQkF1Q2FBOzs7ZUFBQUE7OzswQkFwQ2M7MkRBQ1o7K0RBQ0k7NkRBQ0Y7eUVBQ0k7OERBQ0g7d0JBTzJCO3VFQUNsQjtrRUFDTDtzRUFDSTtpQ0FDTTtxRUFDUDt3RUFDRztxRUFDYTtnRUFDckI7Ozs7OztBQWdCYixNQUFNQSxtQkFBbUIsT0FBVSxFQUN4Q0MsWUFBWSxFQUFFQyxRQUFRQyxnQkFBZ0IsRUFBRSxFQUN4Q0QsTUFBTSxFQUNORSxJQUFJLEVBQ0pDLHNCQUFzQixFQUN0QkMsR0FBRyxFQUNIQyxrQkFBa0IsRUFDVjtJQUNSLElBQUksQ0FBQ0osaUJBQWlCSyxNQUFNLEVBQUU7UUFDNUIsT0FBTztZQUNMSjtZQUNBSyxPQUFPLEVBQUU7UUFDWDtJQUNGO0lBRUEsSUFB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
@@ -0,0 +1,9 @@
1
+ import type { File, FileData } from './types';
2
+ import { Request } from 'express';
3
+ type Args = {
4
+ req: Request;
5
+ data: FileData;
6
+ };
7
+ export declare const getExternalFile: ({ req, data }: Args) => Promise<File>;
8
+ export {};
9
+ //# sourceMappingURL=getExternalFile.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"getExternalFile.d.ts","sourceRoot":"","sources":["../../src/uploads/getExternalFile.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAGjC,KAAK,IAAI,GAAG;IACV,GAAG,EAAE,OAAO,CAAA;IACZ,IAAI,EAAE,QAAQ,CAAA;CACf,CAAA;AACD,eAAO,MAAM,eAAe,kBAAyB,IAAI,KAAG,QAAQ,IAAI,CA6BvE,CAAA"}
@@ -0,0 +1,76 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", {
3
+ value: true
4
+ });
5
+ Object.defineProperty(exports, "getExternalFile", {
6
+ enumerable: true,
7
+ get: function() {
8
+ return getExternalFile;
9
+ }
10
+ });
11
+ const _errors = require("../errors");
12
+ function _getRequireWildcardCache(nodeInterop) {
13
+ if (typeof WeakMap !== "function") return null;
14
+ var cacheBabelInterop = new WeakMap();
15
+ var cacheNodeInterop = new WeakMap();
16
+ return (_getRequireWildcardCache = function(nodeInterop) {
17
+ return nodeInterop ? cacheNodeInterop : cacheBabelInterop;
18
+ })(nodeInterop);
19
+ }
20
+ function _interop_require_wildcard(obj, nodeInterop) {
21
+ if (!nodeInterop && obj && obj.__esModule) {
22
+ return obj;
23
+ }
24
+ if (obj === null || typeof obj !== "object" && typeof obj !== "function") {
25
+ return {
26
+ default: obj
27
+ };
28
+ }
29
+ var cache = _getRequireWildcardCache(nodeInterop);
30
+ if (cache && cache.has(obj)) {
31
+ return cache.get(obj);
32
+ }
33
+ var newObj = {};
34
+ var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;
35
+ for(var key in obj){
36
+ if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) {
37
+ var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;
38
+ if (desc && (desc.get || desc.set)) {
39
+ Object.defineProperty(newObj, key, desc);
40
+ } else {
41
+ newObj[key] = obj[key];
42
+ }
43
+ }
44
+ }
45
+ newObj.default = obj;
46
+ if (cache) {
47
+ cache.set(obj, newObj);
48
+ }
49
+ return newObj;
50
+ }
51
+ const getExternalFile = async ({ req, data })=>{
52
+ const baseUrl = req.get('origin') || `${req.protocol}://${req.get('host')}`;
53
+ const { url, filename } = data;
54
+ if (typeof url === 'string') {
55
+ const fileURL = `${baseUrl}${url}`;
56
+ const { default: fetch } = await Promise.resolve().then(()=>/*#__PURE__*/ _interop_require_wildcard(require("node-fetch")));
57
+ const res = await fetch(fileURL, {
58
+ credentials: 'include',
59
+ method: 'GET',
60
+ headers: {
61
+ ...req.headers
62
+ }
63
+ });
64
+ if (!res.ok) throw new _errors.APIError(`Failed to fetch file from ${fileURL}`, res.status);
65
+ const data = await res.buffer();
66
+ return {
67
+ name: filename,
68
+ data,
69
+ mimetype: res.headers.get('content-type') || undefined,
70
+ size: Number(res.headers.get('content-length')) || 0
71
+ };
72
+ }
73
+ throw new _errors.APIError('Invalid file url', 400);
74
+ };
75
+
76
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91cGxvYWRzL2dldEV4dGVybmFsRmlsZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IEZpbGUsIEZpbGVEYXRhIH0gZnJvbSAnLi90eXBlcydcbmltcG9ydCB7IFJlcXVlc3QgfSBmcm9tICdleHByZXNzJ1xuaW1wb3J0IHsgQVBJRXJyb3IgfSBmcm9tICcuLi9lcnJvcnMnXG5cbnR5cGUgQXJncyA9IHtcbiAgcmVxOiBSZXF1ZXN0XG4gIGRhdGE6IEZpbGVEYXRhXG59XG5leHBvcnQgY29uc3QgZ2V0RXh0ZXJuYWxGaWxlID0gYXN5bmMgKHsgcmVxLCBkYXRhIH06IEFyZ3MpOiBQcm9taXNlPEZpbGU+ID0+IHtcbiAgY29uc3QgYmFzZVVybCA9IHJlcS5nZXQoJ29yaWdpbicpIHx8IGAke3JlcS5wcm90b2NvbH06Ly8ke3JlcS5nZXQoJ2hvc3QnKX1gXG4gIGNvbnN0IHsgdXJsLCBmaWxlbmFtZSB9ID0gZGF0YVxuXG4gIGlmICh0eXBlb2YgdXJsID09PSAnc3RyaW5nJykge1xuICAgIGNvbnN0IGZpbGVVUkwgPSBgJHtiYXNlVXJsfSR7dXJsfWBcbiAgICBjb25zdCB7IGRlZmF1bHQ6IGZldGNoIH0gPSAoYXdhaXQgaW1wb3J0KCdub2RlLWZldGNoJykpIGFzIGFueVxuXG4gICAgY29uc3QgcmVzID0gYXdhaXQgZmV0Y2goZmlsZVVSTCwge1xuICAgICAgY3JlZGVudGlhbHM6ICdpbmNsdWRlJyxcbiAgICAgIG1ldGhvZDogJ0dFVCcsXG4gICAgICBoZWFkZXJzOiB7XG4gICAgICAgIC4uLnJlcS5oZWFkZXJzLFxuICAgICAgfSxcbiAgICB9KVxuXG4gICAgaWYgKCFyZXMub2spIHRocm93IG5ldyBBUElFcnJvcihgRmFpbGVkIHRvIGZldGNoIGZpbGUgZnJvbSAke2ZpbGVVUkx9YCwgcmVzLnN0YXR1cylcblxuICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZXMuYnVmZmVyKClcblxuICAgIHJldHVybiB7XG4gICAgICBuYW1lOiBmaWxlbmFtZSxcbiAgICAgIGRhdGEsXG4gICAgICBtaW1ldHlwZTogcmVzLmhlYWRlcnMuZ2V0KCdjb250ZW50LXR5cGUnKSB8fCB1bmRlZmluZWQsXG4gICAgICBzaXplOiBOdW1iZXIocmVzLmhlYWRlcnMuZ2V0KCdjb250ZW50LWxlbmd0aCcpKSB8fCAwLFxuICAgIH1cbiAgfVxuXG4gIHRocm93IG5ldyBBUElFcnJvcignSW52YWxpZCBmaWxlIHVybCcsIDQwMClcbn1cbiJdLCJuYW1lcyI6WyJnZXRFeHRlcm5hbEZpbGUiLCJyZXEiLCJkYXRhIiwiYmFzZVVybCIsImdldCIsInByb3RvY29sIiwidXJsIiwiZmlsZW5hbWUiLCJmaWxlVVJMIiwiZGVmYXVsdCIsImZldGNoIiwicmVzIiwiY3JlZGVudGlhbHMiLCJtZXRob2QiLCJoZWFkZXJzIiwib2siLCJBUElFcnJvciIsInN0YXR1cyIsImJ1ZmZlciIsIm5hbWUiLCJtaW1ldHlwZSIsInVuZGVmaW5lZCIsInNpemUiLCJOdW1iZXIiXSwibWFwcGluZ3MiOiI7Ozs7K0JBUWFBOzs7ZUFBQUE7Ozt3QkFOWTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQU1sQixNQUFNQSxrQkFBa0IsT0FBTyxFQUFFQyxHQUFHLEVBQUVDLElBQUksRUFBUTtJQUN2RCxNQUFNQyxVQUFVRixJQUFJRyxHQUFHLENBQUMsYUFBYSxDQUFDLEVBQUVILElBQUlJLFFBQVEsQ0FBQyxHQUFHLEVBQUVKLElBQUlHLEdBQUcsQ0FBQyxRQUFRLENBQUM7SUFDM0UsTUFBTSxFQUFFRSxHQUFHLEVBQUVDLFFBQVEsRUFBRSxHQUFHTDtJQUUxQixJQUFJLE9BQU9JLFFBQVEsVUFBVTtRQUMzQixNQUFNRSxVQUFVLENBQUMsRUFBRUwsUUFBUSxFQUFFRyxJQUFJLENBQUM7UUFDbEMsTUFBTSxFQUFFRyxTQUFTQyxLQUFLLEVBQUUsR0FBSSxNQUFNLG1FQUFBLFFBQU87UUFFekMsTUFBTUMsTUFBTSxNQUFNRCxNQUFNRixTQUFTO1lBQy9CSSxhQUFhO1lBQ2JDLFFBQVE7WUFDUkMsU0FBUztnQkFDUCxHQUFHYixJQUFJYSxPQUFPO1lBQ2hCO1FBQ0Y7UUFFQSxJQUFJLENBQUNILElBQUlJLEVBQUUsRUFBRSxNQUFNLElBQUlDLGdCQUFRLENBQUMsQ0FBQywwQkFBMEIsRUFBRVIsUUFBUSxDQUFDLEVBQUVHLElBQUlNLE1BQU07UUFFbEYsTUFBTWYsT0FBTyxNQUFNUyxJQUFJTyxNQUFNO1FBRTdCLE9BQU87WUFDTEMsTUFBTVo7WUFDTkw7WUFDQWtCLFVBQVVULElBQUlHLE9BQU8sQ0FBQ1YsR0FBRyxDQUFDLG1CQUFtQmlCO1lBQzdDQyxNQUFNQyxPQUFPWixJQUFJRyxPQUFPLENBQUNWLEdBQUcsQ0FBQyxzQkFBc0I7UUFDckQ7SUFDRjtJQUVBLE1BQU0sSUFBSVksZ0JBQVEsQ0FBQyxvQkFBb0I7QUFDekMifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"imageResizer.d.ts","sourceRoot":"","sources":["../../src/uploads/imageResizer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAQtD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kDAAkD,CAAA;AACnF,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAA;AAC5E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACtD,OAAO,KAAK,EAAY,SAAS,EAAE,UAAU,EAAa,eAAe,EAAE,MAAM,SAAS,CAAA;AAK1F,KAAK,UAAU,GAAG;IAChB,MAAM,EAAE,yBAAyB,CAAA;IACjC,UAAU,EAAE,eAAe,CAAA;IAC3B,IAAI,EAAE,YAAY,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,GAAG,EAAE,cAAc,GAAG;QACpB,KAAK,CAAC,EAAE;YACN,WAAW,CAAC,EAAE,WAAW,CAAA;SAC1B,CAAA;KACF,CAAA;IACD,aAAa,EAAE,MAAM,CAAA;IACrB,UAAU,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,sEAAsE;AACtE,KAAK,gBAAgB,GAAG;IACtB,QAAQ,EAAE,SAAS,CAAA;IACnB,WAAW,EAAE,UAAU,EAAE,CAAA;CAC1B,CAAA;AAiKD;;;;;;;;;;;;;GAaG;AACH,wBAA8B,4BAA4B,CAAC,EACzD,MAAM,EACN,UAAU,EACV,IAAI,EACJ,QAAQ,EACR,GAAG,EACH,aAAa,EACb,UAAU,GACX,EAAE,UAAU,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAkIxC"}
1
+ {"version":3,"file":"imageResizer.d.ts","sourceRoot":"","sources":["../../src/uploads/imageResizer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AAQtD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kDAAkD,CAAA;AACnF,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAA;AAC5E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACtD,OAAO,KAAK,EAAY,SAAS,EAAE,UAAU,EAAa,eAAe,EAAE,MAAM,SAAS,CAAA;AAK1F,KAAK,UAAU,GAAG;IAChB,MAAM,EAAE,yBAAyB,CAAA;IACjC,UAAU,EAAE,eAAe,CAAA;IAC3B,IAAI,EAAE,YAAY,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,GAAG,EAAE,cAAc,GAAG;QACpB,KAAK,CAAC,EAAE;YACN,WAAW,CAAC,EAAE,WAAW,CAAA;SAC1B,CAAA;KACF,CAAA;IACD,aAAa,EAAE,MAAM,CAAA;IACrB,UAAU,EAAE,MAAM,CAAA;CACnB,CAAA;AAED,sEAAsE;AACtE,KAAK,gBAAgB,GAAG;IACtB,QAAQ,EAAE,SAAS,CAAA;IACnB,WAAW,EAAE,UAAU,EAAE,CAAA;CAC1B,CAAA;AAiKD;;;;;;;;;;;;;GAaG;AACH,wBAA8B,4BAA4B,CAAC,EACzD,MAAM,EACN,UAAU,EACV,IAAI,EACJ,QAAQ,EACR,GAAG,EACH,aAAa,EACb,UAAU,GACX,EAAE,UAAU,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAoIxC"}
@@ -175,7 +175,7 @@ async function resizeAndTransformImageSizes({ config, dimensions, file, mimeType
175
175
  return createResult(imageResizeConfig.name);
176
176
  }
177
177
  const imageToResize = sharpBase.clone();
178
- let resized = imageToResize.resize(imageResizeConfig);
178
+ let resized = imageToResize;
179
179
  if (req.query?.uploadEdits?.focalPoint && applyPayloadAdjustments(imageResizeConfig, dimensions)) {
180
180
  const { height: resizeHeight, width: resizeWidth } = imageResizeConfig;
181
181
  const resizeAspectRatio = resizeWidth / resizeHeight;
@@ -209,6 +209,8 @@ async function resizeAndTransformImageSizes({ config, dimensions, file, mimeType
209
209
  top: safeOffsetY,
210
210
  width: safeResizeWidth
211
211
  });
212
+ } else {
213
+ resized = imageToResize.resize(imageResizeConfig);
212
214
  }
213
215
  if (imageResizeConfig.formatOptions) {
214
216
  resized = resized.toFormat(imageResizeConfig.formatOptions.format, imageResizeConfig.formatOptions.options);
@@ -251,4 +253,4 @@ async function resizeAndTransformImageSizes({ config, dimensions, file, mimeType
251
253
  });
252
254
  }
253
255
 
254
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91cGxvYWRzL2ltYWdlUmVzaXplci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFVwbG9hZGVkRmlsZSB9IGZyb20gJ2V4cHJlc3MtZmlsZXVwbG9hZCdcbmltcG9ydCB0eXBlIHsgT3V0cHV0SW5mbyB9IGZyb20gJ3NoYXJwJ1xuXG5pbXBvcnQgeyBmcm9tQnVmZmVyIH0gZnJvbSAnZmlsZS10eXBlJ1xuaW1wb3J0IGZzIGZyb20gJ2ZzJ1xuaW1wb3J0IHNhbml0aXplIGZyb20gJ3Nhbml0aXplLWZpbGVuYW1lJ1xuaW1wb3J0IHNoYXJwIGZyb20gJ3NoYXJwJ1xuXG5pbXBvcnQgdHlwZSB7IFVwbG9hZEVkaXRzIH0gZnJvbSAnLi4vYWRtaW4vY29tcG9uZW50cy92aWV3cy9jb2xsZWN0aW9ucy9FZGl0L3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBTYW5pdGl6ZWRDb2xsZWN0aW9uQ29uZmlnIH0gZnJvbSAnLi4vY29sbGVjdGlvbnMvY29uZmlnL3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBQYXlsb2FkUmVxdWVzdCB9IGZyb20gJy4uL2V4cHJlc3MvdHlwZXMnXG5pbXBvcnQgdHlwZSB7IEZpbGVTaXplLCBGaWxlU2l6ZXMsIEZpbGVUb1NhdmUsIEltYWdlU2l6ZSwgUHJvYmVkSW1hZ2VTaXplIH0gZnJvbSAnLi90eXBlcydcblxuaW1wb3J0IHsgaXNOdW1iZXIgfSBmcm9tICcuLi91dGlsaXRpZXMvaXNOdW1iZXInXG5pbXBvcnQgZmlsZUV4aXN0cyBmcm9tICcuL2ZpbGVFeGlzdHMnXG5cbnR5cGUgUmVzaXplQXJncyA9IHtcbiAgY29uZmlnOiBTYW5pdGl6ZWRDb2xsZWN0aW9uQ29uZmlnXG4gIGRpbWVuc2lvbnM6IFByb2JlZEltYWdlU2l6ZVxuICBmaWxlOiBVcGxvYWRlZEZpbGVcbiAgbWltZVR5cGU6IHN0cmluZ1xuICByZXE6IFBheWxvYWRSZXF1ZXN0ICYge1xuICAgIHF1ZXJ5Pzoge1xuICAgICAgdXBsb2FkRWRpdHM/OiBVcGxvYWRFZGl0c1xuICAgIH1cbiAgfVxuICBzYXZlZEZpbGVuYW1lOiBzdHJpbmdcbiAgc3RhdGljUGF0aDogc3RyaW5nXG59XG5cbi8qKiBSZXN1bHQgZnJvbSByZXNpemluZyBhbmQgdHJhbnNmb3JtaW5nIHRoZSByZXF1ZXN0ZWQgaW1hZ2Ugc2l6ZXMgKi9cbnR5cGUgSW1hZ2VTaXplc1Jlc3VsdCA9IHtcbiAgc2l6ZURhdGE6IEZpbGVTaXplc1xuICBzaXplc1RvU2F2ZTogRmlsZVRvU2F2ZVtdXG59XG5cbnR5cGUgU2FuaXRpemVkSW1hZ2VEYXRhID0ge1xuICBleHQ6IHN0cmluZ1xuICBuYW1lOiBzdHJpbmdcbn1cblxuLyoqXG4gKiBTYW5pdGl6ZSB0aGUgaW1hZ2UgbmFtZSBhbmQgZXh0cmFjdCB0aGUgZXh0ZW5zaW9uIGZyb20gdGhlIHNvdXJjZSBpbWFnZVxuICpcbiAqIEBwYXJhbSBzb3VyY2VJbWFnZSAtIHRoZSBzb3VyY2UgaW1hZ2VcbiAqIEByZXR1cm5zIHRoZSBzYW5pdGl6ZWQgbmFtZSBhbmQgZXh0ZW5zaW9uXG4gKi9cbmNvbnN0IGdldFNhbml0aXplZEltYWdlRGF0YSA9IChzb3VyY2VJbWFnZTogc3RyaW5nKTogU2FuaXRpemVkSW1hZ2VEYXRhID0+IHtcbiAgY29uc3QgZXh0ZW5zaW9uID0gc291cmNlSW1hZ2Uuc3BsaXQoJy4nKS5wb3AoKVxuICBjb25zdCBuYW1lID0gc2FuaXRpemUoc291cmNlSW1hZ2Uuc3Vic3RyaW5nKDAsIHNvdXJjZUltYWdlLmxhc3RJbmRleE9mKCcuJykpIHx8IHNvdXJjZUltYWdlKVxuICByZXR1cm4geyBuYW1lLCBleHQ6IGV4dGVuc2lvbiB9XG59XG5cbi8qKlxuICogQ3JlYXRlIGEgbmV3IGltYWdlIG5hbWUgYmFzZWQgb24gdGhlIG91dHB1dCBpbWFnZSBuYW1lLCB0aGUgZGltZW5zaW9ucyBhbmRcbiAqIHRoZSBleHRlbnNpb24uXG4gKlxuICogSWdub3JlIHRoZSBmYWN0IHRoYXQgZHVwbGljYXRlIG5hbWVzIGNvdWxkIGhhcHBlbiBpZiB0aGUgdGhlcmUgaXMgb25lXG4gKiBzaXplIHdpdGggYHdpZHRoIEFORCBoZWlnaHRgIGFuZCBvbmUgd2l0aCBvbmx5IGBoZWlnaHQgT1Igd2lkdGhgLiBCZWNhdXNlXG4gKiBzcGFjZSBpcyBleHBlbnNpdmUsIHdlIHdpbGwgcmV1c2UgdGhlIHNhbWUgaW1hZ2UgZm9yIGJvdGggc2l6ZXMuXG4gKlxuICogQHBhcmFtIG91dHB1dEltYWdlTmFtZSAtIHRoZSBzYW5pdGl6ZWQgaW1hZ2UgbmFtZVxuICogQHBhcmFtIGJ1ZmZlckluZm8gLSB0aGUgYnVmZmVyIGluZm9cbiAqIEBwYXJhbSBleHRlbnNpb24gLSB0aGUgZXh0ZW5zaW9uIHRvIHVzZVxuICogQHJldHVybnMgdGhlIG5ldyBpbWFnZSBuYW1lIHRoYXQgaXMgbm90IHRha2VuXG4gKi9cbmNvbnN0IGNyZWF0ZUltYWdlTmFtZSA9IChcbiAgb3V0cHV0SW1hZ2VOYW1lOiBzdHJpbmcsXG4gIHsgaGVpZ2h0LCB3aWR0aCB9OiBPdXRwdXRJbmZvLFxuICBleHRlbnNpb246IHN0cmluZyxcbikgPT4gYCR7b3V0cHV0SW1hZ2VOYW1lfS0ke3dpZHRofXgke2hlaWdodH0uJHtleHRlbnNpb259YFxuXG4vKipcbiAqIENyZWF0ZSB0aGUgcmVzdWx0IG9iamVjdCBmb3IgdGhlIGltYWdlIHJlc2l6ZSBvcGVyYXRpb24gYmFzZWQgb24gdGhlXG4gKiBwcm92aWRlZCBwYXJhbWV0ZXJzLiBJZiB0aGUgbmFtZSBpcyBub3QgcHJvdmlkZWQsIGFuIGVtcHR5IHJlc3VsdCBvYmplY3RcbiAqIGlzIHJldHVybmVkLlxuICpcbiAqIEBwYXJhbSBuYW1lIC0gdGhlIG5hbWUgb2YgdGhlIGltYWdlXG4gKiBAcGFyYW0gZmlsZW5hbWUgLSB0aGUgZmlsZW5hbWUgb2YgdGhlIGltYWdlXG4gKiBAcGFyYW0gd2lkdGggLSB0aGUgd2lkdGggb2YgdGhlIGltYWdlXG4gKiBAcGFyYW0gaGVpZ2h0IC0gdGhlIGhlaWdodCBvZiB0aGUgaW1hZ2VcbiAqIEBwYXJhbSBmaWxlc2l6ZSAtIHRoZSBmaWxlc2l6ZSBvZiB0aGUgaW1hZ2VcbiAqIEBwYXJhbSBtaW1lVHlwZSAtIHRoZSBtaW1lIHR5cGUgb2YgdGhlIGltYWdlXG4gKiBAcGFyYW0gc2l6ZXNUb1NhdmUgLSB0aGUgc2l6ZXMgdG8gc2F2ZVxuICogQHJldHVybnMgdGhlIHJlc3VsdCBvYmplY3RcbiAqL1xuY29uc3QgY3JlYXRlUmVzdWx0ID0gKFxuICBuYW1lOiBzdHJpbmcsXG4gIGZpbGVuYW1lOiBGaWxlU2l6ZVsnZmlsZW5hbWUnXSA9IG51bGwsXG4gIHdpZHRoOiBGaWxlU2l6ZVsnd2lkdGgnXSA9IG51bGwsXG4gIGhlaWdodDogRmlsZVNpemVbJ2hlaWdodCddID0gbnVsbCxcbiAgZmlsZXNpemU6IEZpbGVTaXplWydmaWxlc2l6ZSddID0gbnVsbCxcbiAgbWltZVR5cGU6IEZpbGVTaXplWydtaW1lVHlwZSddID0gbnVsbCxcbiAgc2l6ZXNUb1NhdmU6IEZpbGVUb1NhdmVbXSA9IFtdLFxuKTogSW1hZ2VTaXplc1Jlc3VsdCA9PiAoe1xuICBzaXplRGF0YToge1xuICAgIFtuYW1lXToge1xuICAgICAgZmlsZW5hbWUsXG4gICAgICBmaWxlc2l6ZSxcbiAgICAgIGhlaWdodCxcbiAgICAgIG1pbWVUeXBlLFxuICAgICAgd2lkdGgsXG4gICAgfSxcbiAgfSxcbiAgc2l6ZXNUb1NhdmUsXG59KVxuXG4vKipcbiAqIENoZWNrIGlmIHRoZSBpbWFnZSBuZWVkcyB0byBiZSByZXNpemVkIGFjY29yZGluZyB0byB0aGUgcmVxdWVzdGVkIGRpbWVuc2lvbnNcbiAqIGFuZCB0aGUgb3JpZ2luYWwgaW1hZ2Ugc2l6ZS4gSWYgdGhlIHJlc2l6ZSBvcHRpb25zIHdpdGhvdXRFbmxhcmdlbWVudCBvciB3aXRob3V0UmVkdWN0aW9uIGFyZSBwcm92aWRlZCxcbiAqIHRoZSBpbWFnZSB3aWxsIGJlIHJlc2l6ZWQgcmVnYXJkbGVzcyBvZiB0aGUgcmVxdWVzdGVkIGRpbWVuc2lvbnMsIGdpdmVuIHRoYXQgdGhlXG4gKiB3aWR0aCBvciBoZWlnaHQgdG8gYmUgcmVzaXplZCBpcyBwcm92aWRlZC5cbiAqXG4gKiBAcGFyYW0gcmVzaXplQ29uZmlnIC0gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIHJlcXVlc3RlZCBkaW1lbnNpb25zIGFuZCByZXNpemUgb3B0aW9uc1xuICogQHBhcmFtIG9yaWdpbmFsIC0gdGhlIG9yaWdpbmFsIGltYWdlIHNpemVcbiAqIEByZXR1cm5zIHRydWUgaWYgcmVzaXppbmcgaXMgbm90IG5lZWRlZCwgZmFsc2Ugb3RoZXJ3aXNlXG4gKi9cbmNvbnN0IHByZXZlbnRSZXNpemUgPSAoXG4gIHsgaGVpZ2h0OiBkZXNpcmVkSGVpZ2h0LCB3aWR0aDogZGVzaXJlZFdpZHRoLCB3aXRob3V0RW5sYXJnZW1lbnQsIHdpdGhvdXRSZWR1Y3Rpb24gfTogSW1hZ2VTaXplLFxuICBvcmlnaW5hbDogUHJvYmVkSW1hZ2VTaXplLFxuKTogYm9vbGVhbiA9PiB7XG4gIC8vIGRlZmF1bHQgaXMgdG8gYWxsb3cgcmVkdWN0aW9uXG4gIGlmICh3aXRob3V0UmVkdWN0aW9uICE9PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gZmFsc2UgLy8gbmVlZHMgcmVzaXplXG4gIH1cblxuICAvLyBkZWZhdWx0IGlzIHRvIHByZXZlbnQgZW5sYXJnZW1lbnRcbiAgaWYgKHdpdGhvdXRFbmxhcmdlbWVudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIGZhbHNlIC8vIG5lZWRzIHJlc2l6ZVxuICB9XG5cbiAgY29uc3QgaXNXaWR0aE9ySGVpZ2h0Tm90RGVmaW5lZCA9ICFkZXNpcmVkSGVpZ2h0IHx8ICFkZXNpcmVkV2lkdGhcbiAgaWYgKGlzV2lkdGhPckhlaWdodE5vdERlZmluZWQpIHtcbiAgICAvLyBJZiB3aWR0aCBhbmQgaGVpZ2h0IGFyZSBub3QgZGVmaW5lZCwgaXQgbWVhbnMgdGhlcmUgaXMgYSBmb3JtYXQgY29udmVyc2lvblxuICAgIC8vIGFuZCB0aGUgaW1hZ2UgbmVlZHMgdG8gYmUgXCJyZXNpemVkXCIgKHRyYW5zZm9ybWVkKS5cbiAgICByZXR1cm4gZmFsc2UgLy8gbmVlZHMgcmVzaXplXG4gIH1cblxuICBjb25zdCBoYXNJbnN1ZmZpY2llbnRXaWR0aCA9IGRlc2lyZWRXaWR0aCA+IG9yaWdpbmFsLndpZHRoXG4gIGNvbnN0IGhhc0luc3VmZmljaWVudEhlaWdodCA9IGRlc2lyZWRIZWlnaHQgPiBvcmlnaW5hbC5oZWlnaHRcbiAgaWYgKGhhc0luc3VmZmljaWVudFdpZHRoICYmIGhhc0luc3VmZmljaWVudEhlaWdodCkge1xuICAgIC8vIGRvZXNuJ3QgbmVlZCByZXNpemUgLSBwcmV2ZW50IGVubGFyZ2VtZW50LiBUaGlzIHNob3VsZCBvbmx5IGhhcHBlbiBpZiBib3RoIHdpZHRoIGFuZCBoZWlnaHQgYXJlIGluc3VmZmljaWVudC5cbiAgICAvLyBpZiBvbmx5IG9uZSBkaW1lbnNpb24gaXMgaW5zdWZmaWNpZW50IGFuZCB0aGUgb3RoZXIgaXMgc3VmZmljaWVudCwgcmVzaXppbmcgbmVlZHMgdG8gaGFwcGVuLCBhcyB0aGUgaW1hZ2VcbiAgICAvLyBzaG91bGQgYmUgcmVzaXplZCB0byB0aGUgc3VmZmljaWVudCBkaW1lbnNpb24uXG4gICAgcmV0dXJuIHRydWUgLy8gZG8gbm90IGNyZWF0ZSBhIG5ldyBzaXplXG4gIH1cblxuICByZXR1cm4gZmFsc2UgLy8gbmVlZHMgcmVzaXplXG59XG5cbi8qKlxuICogQ2hlY2sgaWYgdGhlIGltYWdlIHNob3VsZCBiZSBwYXNzZWQgZGlyZWN0bHkgdG8gc2hhcnAgd2l0aG91dCBwYXlsb2FkIGFkanVzdGluZyBwcm9wZXJ0aWVzLlxuICpcbiAqIEBwYXJhbSByZXNpemVDb25maWcgLSBvYmplY3QgY29udGFpbmluZyB0aGUgcmVxdWVzdGVkIGRpbWVuc2lvbnMgYW5kIHJlc2l6ZSBvcHRpb25zXG4gKiBAcGFyYW0gb3JpZ2luYWwgLSB0aGUgb3JpZ2luYWwgaW1hZ2Ugc2l6ZVxuICogQHJldHVybnMgdHJ1ZSBpZiB0aGUgaW1hZ2Ugc2hvdWxkIHBhc3NlZCBkaXJlY3RseSB0byBzaGFycFxuICovXG5jb25zdCBhcHBseVBheWxvYWRBZGp1c3RtZW50cyA9IChcbiAgeyBmaXQsIGhlaWdodCwgd2lkdGgsIHdpdGhvdXRFbmxhcmdlbWVudCwgd2l0aG91dFJlZHVjdGlvbiB9OiBJbWFnZVNpemUsXG4gIG9yaWdpbmFsOiBQcm9iZWRJbWFnZVNpemUsXG4pID0+IHtcbiAgaWYgKGZpdCA9PT0gJ2NvbnRhaW4nIHx8IGZpdCA9PT0gJ2luc2lkZScpIHJldHVybiBmYWxzZVxuICBpZiAoIWlzTnVtYmVyKGhlaWdodCkgJiYgIWlzTnVtYmVyKHdpZHRoKSkgcmV0dXJuIGZhbHNlXG5cbiAgY29uc3QgdGFyZ2V0QXNwZWN0UmF0aW8gPSB3aWR0aCAvIGhlaWdodFxuICBjb25zdCBvcmlnaW5hbEFzcGVjdFJhdGlvID0gb3JpZ2luYWwud2lkdGggLyBvcmlnaW5hbC5oZWlnaHRcbiAgaWYgKG9yaWdpbmFsQXNwZWN0UmF0aW8gPT09IHRhcmdldEFzcGVjdFJhdGlvKSByZXR1cm4gZmFsc2VcblxuICBjb25zdCBza2lwRW5sYXJnZW1lbnQgPSB3aXRob3V0RW5sYXJnZW1lbnQgJiYgKG9yaWdpbmFsLmhlaWdodCA8IGhlaWdodCB8fCBvcmlnaW5hbC53aWR0aCA8IHdpZHRoKVxuICBjb25zdCBza2lwUmVkdWN0aW9uID0gd2l0aG91dFJlZHVjdGlvbiAmJiAob3JpZ2luYWwuaGVpZ2h0ID4gaGVpZ2h0IHx8IG9yaWdpbmFsLndpZHRoID4gd2lkdGgpXG4gIGlmIChza2lwRW5sYXJnZW1lbnQgfHwgc2tpcFJlZHVjdGlvbikgcmV0dXJuIGZhbHNlXG5cbiAgcmV0dXJuIHRydWVcbn1cblxuLyoqXG4gKiBTYW5pdGl6ZSB0aGUgcmVzaXplIGNvbmZpZy4gSWYgdGhlIHJlc2l6ZSBjb25maWcgaGFzIHRoZSBgd2l0aG91dFJlZHVjdGlvbmBcbiAqIHByb3BlcnR5IHNldCB0byB0cnVlLCB0aGUgYGZpdGAgYW5kIGBwb3NpdGlvbmAgcHJvcGVydGllcyB3aWxsIGJlIHNldCB0byBgY29udGFpbmBcbiAqIGFuZCBgdG9wIGxlZnRgIHJlc3BlY3RpdmVseS5cbiAqXG4gKiBAcGFyYW0gcmVzaXplQ29uZmlnIC0gdGhlIHJlc2l6ZSBjb25maWdcbiAqIEByZXR1cm5zIGEgc2FuaXRpemVkIHJlc2l6ZSBjb25maWdcbiAqL1xuY29uc3Qgc2FuaXRpemVSZXNpemVDb25maWcgPSAocmVzaXplQ29uZmlnOiBJbWFnZVNpemUpOiBJbWFnZVNpemUgPT4ge1xuICBpZiAocmVzaXplQ29uZmlnLndpdGhvdXRSZWR1Y3Rpb24pIHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4ucmVzaXplQ29uZmlnLFxuICAgICAgLy8gV2h5IGZpdCBgY29udGFpbmAgc2hvdWxkIGFsc28gYmUgc2V0IHRvIGh0dHBzOi8vZ2l0aHViLmNvbS9sb3ZlbGwvc2hhcnAvaXNzdWVzLzM1OTVcbiAgICAgIGZpdDogcmVzaXplQ29uZmlnPy5maXQgfHwgJ2NvbnRhaW4nLFxuICAgICAgcG9zaXRpb246IHJlc2l6ZUNvbmZpZz8ucG9zaXRpb24gfHwgJ2xlZnQgdG9wJyxcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc2l6ZUNvbmZpZ1xufVxuXG4vKipcbiAqIEZvciB0aGUgcHJvdmlkZWQgaW1hZ2Ugc2l6ZXMsIGhhbmRsZSB0aGUgcmVzaXppbmcgYW5kIHRoZSB0cmFuc2Zvcm1zXG4gKiAoZm9ybWF0LCB0cmltLCBldGMuKSBvZiBlYWNoIHJlcXVlc3RlZCBpbWFnZSBzaXplIGFuZCByZXR1cm4gdGhlIHJlc3VsdCBvYmplY3QuXG4gKiBUaGlzIG9ubHkgaGFuZGxlcyB0aGUgaW1hZ2Ugc2l6ZXMuIFRoZSB0cmFuc2Zvcm1zIG9mIHRoZSBvcmlnaW5hbCBpbWFnZVxuICogYXJlIGhhbmRsZWQgaW4ge0BsaW5rIC4vZ2VuZXJhdGVGaWxlRGF0YS50c30uXG4gKlxuICogVGhlIGltYWdlIHdpbGwgYmUgcmVzaXplZCBhY2NvcmRpbmcgdG8gdGhlIHByb3ZpZGVkXG4gKiByZXNpemUgY29uZmlnLiBJZiBubyBpbWFnZSBzaXplcyBhcmUgcmVxdWVzdGVkLCB0aGUgcmVzb2x2ZWQgZGF0YSB3aWxsIGJlIGVtcHR5LlxuICogRm9yIGV2ZXJ5IGltYWdlIHRoYXQgZG9zIG5vdCBuZWVkIHRvIGJlIHJlc2l6ZWQsIGFuIHJlc3VsdCBvYmplY3Qgd2l0aCBgbnVsbGBcbiAqIHBhcmFtZXRlcnMgd2lsbCBiZSByZXR1cm5lZC5cbiAqXG4gKiBAcGFyYW0gcmVzaXplQ29uZmlnIC0gdGhlIHJlc2l6ZSBjb25maWdcbiAqIEByZXR1cm5zIHRoZSByZXN1bHQgb2YgdGhlIHJlc2l6ZSBvcGVyYXRpb24ocylcbiAqL1xuZXhwb3J0IGRlZmF1bHQgYXN5bmMgZnVuY3Rpb24gcmVzaXplQW5kVHJhbnNmb3JtSW1hZ2VTaXplcyh7XG4gIGNvbmZpZyxcbiAgZGltZW5zaW9ucyxcbiAgZmlsZSxcbiAgbWltZVR5cGUsXG4gIHJlcSxcbiAgc2F2ZWRGaWxlbmFtZSxcbiAgc3RhdGljUGF0aCxcbn06IFJlc2l6ZUFyZ3MpOiBQcm9taXNlPEltYWdlU2l6ZXNSZXN1bHQ+IHtcbiAgY29uc3QgeyBpbWFnZVNpemVzIH0gPSBjb25maWcudXBsb2FkXG4gIC8vIE5vdGluZyB0byByZXNpemUgaGVyZSBzbyByZXR1cm4gYXMgZWFybHkgYXMgcG9zc2libGVcbiAgaWYgKCFpbWFnZVNpemVzKSByZXR1cm4geyBzaXplRGF0YToge30sIHNpemVzVG9TYXZlOiBbXSB9XG5cbiAgY29uc3Qgc2hhcnBCYXNlID0gc2hhcnAoZmlsZS50ZW1wRmlsZVBhdGggfHwgZmlsZS5kYXRhKS5yb3RhdGUoKSAvLyBwYXNzIHJvdGF0ZSgpIHRvIGF1dG8tcm90YXRlIGJhc2VkIG9uIEVYSUYgZGF0YS4gaHR0cHM6Ly9naXRodWIuY29tL3BheWxvYWRjbXMvcGF5bG9hZC9wdWxsLzMwODFcblxuICBjb25zdCByZXN1bHRzOiBJbWFnZVNpemVzUmVzdWx0W10gPSBhd2FpdCBQcm9taXNlLmFsbChcbiAgICBpbWFnZVNpemVzLm1hcChhc3luYyAoaW1hZ2VSZXNpemVDb25maWcpOiBQcm9taXNlPEltYWdlU2l6ZXNSZXN1bHQ+ID0+IHtcbiAgICAgIGltYWdlUmVzaXplQ29uZmlnID0gc2FuaXRpemVSZXNpemVDb25maWcoaW1hZ2VSZXNpemVDb25maWcpXG5cbiAgICAgIC8vIFRoaXMgY2hlY2tzIGlmIGEgcmVzaXplIHNob3VsZCBoYXBwZW4uIElmIG5vdCwgdGhlIHJlc2l6ZWQgaW1hZ2Ugd2lsbCBiZVxuICAgICAgLy8gc2tpcHBlZCBDT01QTEVURUxZIGFuZCB0aHVzIHdpbGwgbm90IGJlIGluY2x1ZGVkIGluIHRoZSByZXN1bHRpbmcgaW1hZ2VzLlxuICAgICAgLy8gQWxsIGZ1cnRoZXIgZm9ybWF0L3RyaW0gb3B0aW9ucyB3aWxsIHRodXMgYmUgc2tpcHBlZCBhcyB3ZWxsLlxuICAgICAgaWYgKHByZXZlbnRSZXNpemUoaW1hZ2VSZXNpemVDb25maWcsIGRpbWVuc2lvbnMpKSB7XG4gICAgICAgIHJldHVybiBjcmVhdGVSZXN1bHQoaW1hZ2VSZXNpemVDb25maWcubmFtZSlcbiAgICAgIH1cblxuICAgICAgY29uc3QgaW1hZ2VUb1Jlc2l6ZSA9IHNoYXJwQmFzZS5jbG9uZSgpXG4gICAgICBsZXQgcmVzaXplZCA9IGltYWdlVG9SZXNpemUucmVzaXplKGltYWdlUmVzaXplQ29uZmlnKVxuXG4gICAgICBpZiAoXG4gICAgICAgIHJlcS5xdWVyeT8udXBsb2FkRWRpdHM/LmZvY2FsUG9pbnQgJiZcbiAgICAgICAgYXBwbHlQYXlsb2FkQWRqdXN0bWVudHMoaW1hZ2VSZXNpemVDb25maWcsIGRpbWVuc2lvbnMpXG4gICAgICApIHtcbiAgICAgICAgY29uc3QgeyBoZWlnaHQ6IHJlc2l6ZUhlaWdodCwgd2lkdGg6IHJlc2l6ZVdpZHRoIH0gPSBpbWFnZVJlc2l6ZUNvbmZpZ1xuICAgICAgICBjb25zdCByZXNpemVBc3BlY3RSYXRpbyA9IHJlc2l6ZVdpZHRoIC8gcmVzaXplSGVpZ2h0XG4gICAgICAgIGNvbnN0IG9yaWdpbmFsQXNwZWN0UmF0aW8gPSBkaW1lbnNpb25zLndpZHRoIC8gZGltZW5zaW9ucy5oZWlnaHRcbiAgICAgICAgY29uc3QgcHJpb3JpdGl6ZUhlaWdodCA9IHJlc2l6ZUFzcGVjdFJhdGlvIDwgb3JpZ2luYWxBc3BlY3RSYXRpb1xuXG4gICAgICAgIC8vIFNjYWxlIHRoZSBpbWFnZSB1cCBvciBkb3duIHRvIGZpdCB0aGUgcmVzaXplIGRpbWVuc2lvbnNcbiAgICAgICAgY29uc3Qgc2NhbGVkSW1hZ2UgPSBpbWFnZVRvUmVzaXplLnJlc2l6ZSh7XG4gICAgICAgICAgaGVpZ2h0OiBwcmlvcml0aXplSGVpZ2h0ID8gcmVzaXplSGVpZ2h0IDogbnVsbCxcbiAgICAgICAgICB3aWR0aDogcHJpb3JpdGl6ZUhlaWdodCA/IG51bGwgOiByZXNpemVXaWR0aCxcbiAgICAgICAgfSlcbiAgICAgICAgY29uc3QgeyBpbmZvOiBzY2FsZWRJbWFnZUluZm8gfSA9IGF3YWl0IHNjYWxlZEltYWdlLnRvQnVmZmVyKHsgcmVzb2x2ZVdpdGhPYmplY3Q6IHRydWUgfSlcblxuICAgICAgICAvLyBGb2NhbCBwb2ludCBhZGp1c3RtZW50c1xuICAgICAgICBjb25zdCBmb2NhbFBvaW50ID0ge1xuICAgICAgICAgIHg6IGlzTnVtYmVyKHJlcS5xdWVyeS51cGxvYWRFZGl0cy5mb2NhbFBvaW50Py54KVxuICAgICAgICAgICAgPyByZXEucXVlcnkudXBsb2FkRWRpdHMuZm9jYWxQb2ludC54XG4gICAgICAgICAgICA6IDUwLFxuICAgICAgICAgIHk6IGlzTnVtYmVyKHJlcS5xdWVyeS51cGxvYWRFZGl0cy5mb2NhbFBvaW50Py55KVxuICAgICAgICAgICAgPyByZXEucXVlcnkudXBsb2FkRWRpdHMuZm9jYWxQb2ludC55XG4gICAgICAgICAgICA6IDUwLFxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3Qgc2FmZVJlc2l6ZVdpZHRoID0gcmVzaXplV2lkdGggPz8gc2NhbGVkSW1hZ2VJbmZvLndpZHRoXG4gICAgICAgIGNvbnN0IG1heE9mZnNldFggPSBzY2FsZWRJbWFnZUluZm8ud2lkdGggLSBzYWZlUmVzaXplV2lkdGhcbiAgICAgICAgY29uc3QgbGVmdEZvY2FsRWRnZSA9IE1hdGgucm91bmQoXG4gICAgICAgICAgc2NhbGVkSW1hZ2VJbmZvLndpZHRoICogKGZvY2FsUG9pbnQueCAvIDEwMCkgLSBzYWZlUmVzaXplV2lkdGggLyAyLFxuICAgICAgICApXG4gICAgICAgIGNvbnN0IHNhZmVPZmZzZXRYID0gTWF0aC5taW4oTWF0aC5tYXgoMCwgbGVmdEZvY2FsRWRnZSksIG1heE9mZnNldFgpXG5cbiAgICAgICAgY29uc3Qgc2FmZVJlc2l6ZUhlaWdodCA9IHJlc2l6ZUhlaWdodCA/PyBzY2FsZWRJbWFnZUluZm8uaGVpZ2h0XG4gICAgICAgIGNvbnN0IG1heE9mZnNldFkgPSBzY2FsZWRJbWFnZUluZm8uaGVpZ2h0IC0gc2FmZVJlc2l6ZUhlaWdodFxuICAgICAgICBjb25zdCB0b3BGb2NhbEVkZ2UgPSBNYXRoLnJvdW5kKFxuICAgICAgICAgIHNjYWxlZEltYWdlSW5mby5oZWlnaHQgKiAoZm9jYWxQb2ludC55IC8gMTAwKSAtIHNhZmVSZXNpemVIZWlnaHQgLyAyLFxuICAgICAgICApXG4gICAgICAgIGNvbnN0IHNhZmVPZmZzZXRZID0gTWF0aC5taW4oTWF0aC5tYXgoMCwgdG9wRm9jYWxFZGdlKSwgbWF4T2Zmc2V0WSlcblxuICAgICAgICAvLyBleHRyYWN0IHRoZSBmb2NhbCBhcmVhIGZyb20gdGhlIHNjYWxlZCBpbWFnZVxuICAgICAgICByZXNpemVkID0gc2NhbGVkSW1hZ2UuZXh0cmFjdCh7XG4gICAgICAgICAgaGVpZ2h0OiBzYWZlUmVzaXplSGVpZ2h0LFxuICAgICAgICAgIGxlZnQ6IHNhZmVPZmZzZXRYLFxuICAgICAgICAgIHRvcDogc2FmZU9mZnNldFksXG4gICAgICAgICAgd2lkdGg6IHNhZmVSZXNpemVXaWR0aCxcbiAgICAgICAgfSlcbiAgICAgIH1cblxuICAgICAgaWYgKGltYWdlUmVzaXplQ29uZmlnLmZvcm1hdE9wdGlvbnMpIHtcbiAgICAgICAgcmVzaXplZCA9IHJlc2l6ZWQudG9Gb3JtYXQoXG4gICAgICAgICAgaW1hZ2VSZXNpemVDb25maWcuZm9ybWF0T3B0aW9ucy5mb3JtYXQsXG4gICAgICAgICAgaW1hZ2VSZXNpemVDb25maWcuZm9ybWF0T3B0aW9ucy5vcHRpb25zLFxuICAgICAgICApXG4gICAgICB9XG5cbiAgICAgIGlmIChpbWFnZVJlc2l6ZUNvbmZpZy50cmltT3B0aW9ucykge1xuICAgICAgICByZXNpemVkID0gcmVzaXplZC50cmltKGltYWdlUmVzaXplQ29uZmlnLnRyaW1PcHRpb25zKVxuICAgICAgfVxuXG4gICAgICBjb25zdCB7IGRhdGE6IGJ1ZmZlckRhdGEsIGluZm86IGJ1ZmZlckluZm8gfSA9IGF3YWl0IHJlc2l6ZWQudG9CdWZmZXIoe1xuICAgICAgICByZXNvbHZlV2l0aE9iamVjdDogdHJ1ZSxcbiAgICAgIH0pXG5cbiAgICAgIGNvbnN0IHNhbml0aXplZEltYWdlID0gZ2V0U2FuaXRpemVkSW1hZ2VEYXRhKHNhdmVkRmlsZW5hbWUpXG5cbiAgICAgIGlmIChyZXEucGF5bG9hZFVwbG9hZFNpemVzKSB7XG4gICAgICAgIHJlcS5wYXlsb2FkVXBsb2FkU2l6ZXNbaW1hZ2VSZXNpemVDb25maWcubmFtZV0gPSBidWZmZXJEYXRhXG4gICAgICB9XG5cbiAgICAgIGNvbnN0IG1pbWVJbmZvID0gYXdhaXQgZnJvbUJ1ZmZlcihidWZmZXJEYXRhKVxuXG4gICAgICBjb25zdCBpbWFnZU5hbWVXaXRoRGltZW5zaW9ucyA9IGNyZWF0ZUltYWdlTmFtZShcbiAgICAgICAgc2FuaXRpemVkSW1hZ2UubmFtZSxcbiAgICAgICAgYnVmZmVySW5mbyxcbiAgICAgICAgbWltZUluZm8/LmV4dCB8fCBzYW5pdGl6ZWRJbWFnZS5leHQsXG4gICAgICApXG5cbiAgICAgIGNvbnN0IGltYWdlUGF0aCA9IGAke3N0YXRpY1BhdGh9LyR7aW1hZ2VOYW1lV2l0aERpbWVuc2lvbnN9YFxuXG4gICAgICBpZiAoYXdhaXQgZmlsZUV4aXN0cyhpbWFnZVBhdGgpKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgZnMudW5saW5rU3luYyhpbWFnZVBhdGgpXG4gICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgIC8vIElnbm9yZSB1bmxpbmsgZXJyb3JzXG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgY29uc3QgeyBoZWlnaHQsIHNpemUsIHdpZHRoIH0gPSBidWZmZXJJbmZvXG4gICAgICByZXR1cm4gY3JlYXRlUmVzdWx0KFxuICAgICAgICBpbWFnZVJlc2l6ZUNvbmZpZy5uYW1lLFxuICAgICAgICBpbWFnZU5hbWVXaXRoRGltZW5zaW9ucyxcbiAgICAgICAgd2lkdGgsXG4gICAgICAgIGhlaWdodCxcbiAgICAgICAgc2l6ZSxcbiAgICAgICAgbWltZUluZm8/Lm1pbWUgfHwgbWltZVR5cGUsXG4gICAgICAgIFt7IGJ1ZmZlcjogYnVmZmVyRGF0YSwgcGF0aDogaW1hZ2VQYXRoIH1dLFxuICAgICAgKVxuICAgIH0pLFxuICApXG5cbiAgcmV0dXJuIHJlc3VsdHMucmVkdWNlKFxuICAgIChhY2MsIHJlc3VsdCkgPT4ge1xuICAgICAgT2JqZWN0LmFzc2lnbihhY2Muc2l6ZURhdGEsIHJlc3VsdC5zaXplRGF0YSlcbiAgICAgIGFjYy5zaXplc1RvU2F2ZS5wdXNoKC4uLnJlc3VsdC5zaXplc1RvU2F2ZSlcbiAgICAgIHJldHVybiBhY2NcbiAgICB9LFxuICAgIHsgc2l6ZURhdGE6IHt9LCBzaXplc1RvU2F2ZTogW10gfSxcbiAgKVxufVxuIl0sIm5hbWVzIjpbInJlc2l6ZUFuZFRyYW5zZm9ybUltYWdlU2l6ZXMiLCJnZXRTYW5pdGl6ZWRJbWFnZURhdGEiLCJzb3VyY2VJbWFnZSIsImV4dGVuc2lvbiIsInNwbGl0IiwicG9wIiwibmFtZSIsInNhbml0aXplIiwic3Vic3RyaW5nIiwibGFzdEluZGV4T2YiLCJleHQiLCJjcmVhdGVJbWFnZU5hbWUiLCJvdXRwdXRJbWFnZU5hbWUiLCJoZWlnaHQiLCJ3aWR0aCIsImNyZWF0ZVJlc3VsdCIsImZpbGVuYW1lIiwiZmlsZXNpemUiLCJtaW1lVHlwZSIsInNpemVzVG9TYXZlIiwic2l6ZURhdGEiLCJwcmV2ZW50UmVzaXplIiwiZGVzaXJlZEhlaWdodCIsImRlc2lyZWRXaWR0aCIsIndpdGhvdXRFbmxhcmdlbWVudCIsIndpdGhvdXRSZWR1Y3Rpb24iLCJvcmlnaW5hbCIsInVuZGVmaW5lZCIsImlzV2lkdGhPckhlaWdodE5vdERlZmluZWQiLCJoYXNJbnN1ZmZpY2llbnRXaWR0aCIsImhhc0luc3VmZmljaWVudEhlaWdodCIsImFwcGx5UGF5bG9hZEFkanVzdG1lbnRzIiwiZml0IiwiaXNOdW1iZXIiLCJ0YXJnZXRBc3BlY3RSYXRpbyIsIm9yaWdpbmFsQXNwZWN0UmF0aW8iLCJza2lwRW5sYXJnZW1lbnQiLCJza2lwUmVkdWN0aW9uIiwic2FuaXRpemVSZXNpemVDb25maWciLCJyZXNpemVDb25maWciLCJwb3NpdGlvbiIsImNvbmZpZyIsImRpbWVuc2lvbnMiLCJmaWxlIiwicmVxIiwic2F2ZWRGaWxlbmFtZSIsInN0YXRpY1BhdGgiLCJpbWFnZVNpemVzIiwidXBsb2FkIiwic2hhcnBCYXNlIiwic2hhcnAiLCJ0ZW1wRmlsZVBhdGgiLCJkYXRhIiwicm90YXRlIiwicmVzdWx0cyIsIlByb21pc2UiLCJhbGwiLCJtYXAiLCJpbWFnZVJlc2l6ZUNvbmZpZyIsImltYWdlVG9SZXNpemUiLCJjbG9uZSIsInJlc2l6ZWQiLCJyZXNpemUiLCJxdWVyeSIsInVwbG9hZEVkaXRzIiwiZm9jYWxQb2ludCIsInJlc2l6ZUhlaWdodCIsInJlc2l6ZVdpZHRoIiwicmVzaXplQXNwZWN0UmF0aW8iLCJwcmlvcml0aXplSGVpZ2h0Iiwic2NhbGVkSW1hZ2UiLCJpbmZvIiwic2NhbGVkSW1hZ2VJbmZvIiwidG9CdWZmZXIiLCJyZXNvbHZlV2l0aE9iamVjdCIsIngiLCJ5Iiwic2FmZVJlc2l6ZVdpZHRoIiwibWF4T2Zmc2V0WCIsImxlZnRGb2NhbEVkZ2UiLCJNYXRoIiwicm91bmQiLCJzYWZlT2Zmc2V0WCIsIm1pbiIsIm1heCIsInNhZmVSZXNpemVIZWlnaHQiLCJtYXhPZmZzZXRZIiwidG9wRm9jYWxFZGdlIiwic2FmZU9mZnNldFkiLCJleHRyYWN0IiwibGVmdCIsInRvcCIsImZvcm1hdE9wdGlvbnMiLCJ0b0Zvcm1hdCIsImZvcm1hdCIsIm9wdGlvbnMiLCJ0cmltT3B0aW9ucyIsInRyaW0iLCJidWZmZXJEYXRhIiwiYnVmZmVySW5mbyIsInNhbml0aXplZEltYWdlIiwicGF5bG9hZFVwbG9hZFNpemVzIiwibWltZUluZm8iLCJmcm9tQnVmZmVyIiwiaW1hZ2VOYW1lV2l0aERpbWVuc2lvbnMiLCJpbWFnZVBhdGgiLCJmaWxlRXhpc3RzIiwiZnMiLCJ1bmxpbmtTeW5jIiwic2l6ZSIsIm1pbWUiLCJidWZmZXIiLCJwYXRoIiwicmVkdWNlIiwiYWNjIiwicmVzdWx0IiwiT2JqZWN0IiwiYXNzaWduIiwicHVzaCJdLCJtYXBwaW5ncyI6Ijs7OzsrQkFtTUE7Ozs7Ozs7Ozs7Ozs7Q0FhQyxHQUNEOzs7ZUFBOEJBOzs7MEJBOU1IOzJEQUNaO3lFQUNNOzhEQUNIOzBCQU9PO21FQUNGOzs7Ozs7QUEyQnZCOzs7OztDQUtDLEdBQ0QsTUFBTUMsd0JBQXdCLENBQUNDO0lBQzdCLE1BQU1DLFlBQVlELFlBQVlFLEtBQUssQ0FBQyxLQUFLQyxHQUFHO0lBQzVDLE1BQU1DLE9BQU9DLElBQUFBLHlCQUFRLEVBQUNMLFlBQVlNLFNBQVMsQ0FBQyxHQUFHTixZQUFZTyxXQUFXLENBQUMsU0FBU1A7SUFDaEYsT0FBTztRQUFFSTtRQUFNSSxLQUFLUDtJQUFVO0FBQ2hDO0FBRUE7Ozs7Ozs7Ozs7OztDQVlDLEdBQ0QsTUFBTVEsa0JBQWtCLENBQ3RCQyxpQkFDQSxFQUFFQyxNQUFNLEVBQUVDLEtBQUssRUFBYyxFQUM3QlgsWUFDRyxDQUFDLEVBQUVTLGdCQUFnQixDQUFDLEVBQUVFLE1BQU0sQ0FBQyxFQUFFRCxPQUFPLENBQUMsRUFBRVYsVUFBVSxDQUFDO0FBRXpEOzs7Ozs7Ozs7Ozs7O0NBYUMsR0FDRCxNQUFNWSxl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
256
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91cGxvYWRzL2ltYWdlUmVzaXplci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFVwbG9hZGVkRmlsZSB9IGZyb20gJ2V4cHJlc3MtZmlsZXVwbG9hZCdcbmltcG9ydCB0eXBlIHsgT3V0cHV0SW5mbyB9IGZyb20gJ3NoYXJwJ1xuXG5pbXBvcnQgeyBmcm9tQnVmZmVyIH0gZnJvbSAnZmlsZS10eXBlJ1xuaW1wb3J0IGZzIGZyb20gJ2ZzJ1xuaW1wb3J0IHNhbml0aXplIGZyb20gJ3Nhbml0aXplLWZpbGVuYW1lJ1xuaW1wb3J0IHNoYXJwIGZyb20gJ3NoYXJwJ1xuXG5pbXBvcnQgdHlwZSB7IFVwbG9hZEVkaXRzIH0gZnJvbSAnLi4vYWRtaW4vY29tcG9uZW50cy92aWV3cy9jb2xsZWN0aW9ucy9FZGl0L3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBTYW5pdGl6ZWRDb2xsZWN0aW9uQ29uZmlnIH0gZnJvbSAnLi4vY29sbGVjdGlvbnMvY29uZmlnL3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBQYXlsb2FkUmVxdWVzdCB9IGZyb20gJy4uL2V4cHJlc3MvdHlwZXMnXG5pbXBvcnQgdHlwZSB7IEZpbGVTaXplLCBGaWxlU2l6ZXMsIEZpbGVUb1NhdmUsIEltYWdlU2l6ZSwgUHJvYmVkSW1hZ2VTaXplIH0gZnJvbSAnLi90eXBlcydcblxuaW1wb3J0IHsgaXNOdW1iZXIgfSBmcm9tICcuLi91dGlsaXRpZXMvaXNOdW1iZXInXG5pbXBvcnQgZmlsZUV4aXN0cyBmcm9tICcuL2ZpbGVFeGlzdHMnXG5cbnR5cGUgUmVzaXplQXJncyA9IHtcbiAgY29uZmlnOiBTYW5pdGl6ZWRDb2xsZWN0aW9uQ29uZmlnXG4gIGRpbWVuc2lvbnM6IFByb2JlZEltYWdlU2l6ZVxuICBmaWxlOiBVcGxvYWRlZEZpbGVcbiAgbWltZVR5cGU6IHN0cmluZ1xuICByZXE6IFBheWxvYWRSZXF1ZXN0ICYge1xuICAgIHF1ZXJ5Pzoge1xuICAgICAgdXBsb2FkRWRpdHM/OiBVcGxvYWRFZGl0c1xuICAgIH1cbiAgfVxuICBzYXZlZEZpbGVuYW1lOiBzdHJpbmdcbiAgc3RhdGljUGF0aDogc3RyaW5nXG59XG5cbi8qKiBSZXN1bHQgZnJvbSByZXNpemluZyBhbmQgdHJhbnNmb3JtaW5nIHRoZSByZXF1ZXN0ZWQgaW1hZ2Ugc2l6ZXMgKi9cbnR5cGUgSW1hZ2VTaXplc1Jlc3VsdCA9IHtcbiAgc2l6ZURhdGE6IEZpbGVTaXplc1xuICBzaXplc1RvU2F2ZTogRmlsZVRvU2F2ZVtdXG59XG5cbnR5cGUgU2FuaXRpemVkSW1hZ2VEYXRhID0ge1xuICBleHQ6IHN0cmluZ1xuICBuYW1lOiBzdHJpbmdcbn1cblxuLyoqXG4gKiBTYW5pdGl6ZSB0aGUgaW1hZ2UgbmFtZSBhbmQgZXh0cmFjdCB0aGUgZXh0ZW5zaW9uIGZyb20gdGhlIHNvdXJjZSBpbWFnZVxuICpcbiAqIEBwYXJhbSBzb3VyY2VJbWFnZSAtIHRoZSBzb3VyY2UgaW1hZ2VcbiAqIEByZXR1cm5zIHRoZSBzYW5pdGl6ZWQgbmFtZSBhbmQgZXh0ZW5zaW9uXG4gKi9cbmNvbnN0IGdldFNhbml0aXplZEltYWdlRGF0YSA9IChzb3VyY2VJbWFnZTogc3RyaW5nKTogU2FuaXRpemVkSW1hZ2VEYXRhID0+IHtcbiAgY29uc3QgZXh0ZW5zaW9uID0gc291cmNlSW1hZ2Uuc3BsaXQoJy4nKS5wb3AoKVxuICBjb25zdCBuYW1lID0gc2FuaXRpemUoc291cmNlSW1hZ2Uuc3Vic3RyaW5nKDAsIHNvdXJjZUltYWdlLmxhc3RJbmRleE9mKCcuJykpIHx8IHNvdXJjZUltYWdlKVxuICByZXR1cm4geyBuYW1lLCBleHQ6IGV4dGVuc2lvbiB9XG59XG5cbi8qKlxuICogQ3JlYXRlIGEgbmV3IGltYWdlIG5hbWUgYmFzZWQgb24gdGhlIG91dHB1dCBpbWFnZSBuYW1lLCB0aGUgZGltZW5zaW9ucyBhbmRcbiAqIHRoZSBleHRlbnNpb24uXG4gKlxuICogSWdub3JlIHRoZSBmYWN0IHRoYXQgZHVwbGljYXRlIG5hbWVzIGNvdWxkIGhhcHBlbiBpZiB0aGUgdGhlcmUgaXMgb25lXG4gKiBzaXplIHdpdGggYHdpZHRoIEFORCBoZWlnaHRgIGFuZCBvbmUgd2l0aCBvbmx5IGBoZWlnaHQgT1Igd2lkdGhgLiBCZWNhdXNlXG4gKiBzcGFjZSBpcyBleHBlbnNpdmUsIHdlIHdpbGwgcmV1c2UgdGhlIHNhbWUgaW1hZ2UgZm9yIGJvdGggc2l6ZXMuXG4gKlxuICogQHBhcmFtIG91dHB1dEltYWdlTmFtZSAtIHRoZSBzYW5pdGl6ZWQgaW1hZ2UgbmFtZVxuICogQHBhcmFtIGJ1ZmZlckluZm8gLSB0aGUgYnVmZmVyIGluZm9cbiAqIEBwYXJhbSBleHRlbnNpb24gLSB0aGUgZXh0ZW5zaW9uIHRvIHVzZVxuICogQHJldHVybnMgdGhlIG5ldyBpbWFnZSBuYW1lIHRoYXQgaXMgbm90IHRha2VuXG4gKi9cbmNvbnN0IGNyZWF0ZUltYWdlTmFtZSA9IChcbiAgb3V0cHV0SW1hZ2VOYW1lOiBzdHJpbmcsXG4gIHsgaGVpZ2h0LCB3aWR0aCB9OiBPdXRwdXRJbmZvLFxuICBleHRlbnNpb246IHN0cmluZyxcbikgPT4gYCR7b3V0cHV0SW1hZ2VOYW1lfS0ke3dpZHRofXgke2hlaWdodH0uJHtleHRlbnNpb259YFxuXG4vKipcbiAqIENyZWF0ZSB0aGUgcmVzdWx0IG9iamVjdCBmb3IgdGhlIGltYWdlIHJlc2l6ZSBvcGVyYXRpb24gYmFzZWQgb24gdGhlXG4gKiBwcm92aWRlZCBwYXJhbWV0ZXJzLiBJZiB0aGUgbmFtZSBpcyBub3QgcHJvdmlkZWQsIGFuIGVtcHR5IHJlc3VsdCBvYmplY3RcbiAqIGlzIHJldHVybmVkLlxuICpcbiAqIEBwYXJhbSBuYW1lIC0gdGhlIG5hbWUgb2YgdGhlIGltYWdlXG4gKiBAcGFyYW0gZmlsZW5hbWUgLSB0aGUgZmlsZW5hbWUgb2YgdGhlIGltYWdlXG4gKiBAcGFyYW0gd2lkdGggLSB0aGUgd2lkdGggb2YgdGhlIGltYWdlXG4gKiBAcGFyYW0gaGVpZ2h0IC0gdGhlIGhlaWdodCBvZiB0aGUgaW1hZ2VcbiAqIEBwYXJhbSBmaWxlc2l6ZSAtIHRoZSBmaWxlc2l6ZSBvZiB0aGUgaW1hZ2VcbiAqIEBwYXJhbSBtaW1lVHlwZSAtIHRoZSBtaW1lIHR5cGUgb2YgdGhlIGltYWdlXG4gKiBAcGFyYW0gc2l6ZXNUb1NhdmUgLSB0aGUgc2l6ZXMgdG8gc2F2ZVxuICogQHJldHVybnMgdGhlIHJlc3VsdCBvYmplY3RcbiAqL1xuY29uc3QgY3JlYXRlUmVzdWx0ID0gKFxuICBuYW1lOiBzdHJpbmcsXG4gIGZpbGVuYW1lOiBGaWxlU2l6ZVsnZmlsZW5hbWUnXSA9IG51bGwsXG4gIHdpZHRoOiBGaWxlU2l6ZVsnd2lkdGgnXSA9IG51bGwsXG4gIGhlaWdodDogRmlsZVNpemVbJ2hlaWdodCddID0gbnVsbCxcbiAgZmlsZXNpemU6IEZpbGVTaXplWydmaWxlc2l6ZSddID0gbnVsbCxcbiAgbWltZVR5cGU6IEZpbGVTaXplWydtaW1lVHlwZSddID0gbnVsbCxcbiAgc2l6ZXNUb1NhdmU6IEZpbGVUb1NhdmVbXSA9IFtdLFxuKTogSW1hZ2VTaXplc1Jlc3VsdCA9PiAoe1xuICBzaXplRGF0YToge1xuICAgIFtuYW1lXToge1xuICAgICAgZmlsZW5hbWUsXG4gICAgICBmaWxlc2l6ZSxcbiAgICAgIGhlaWdodCxcbiAgICAgIG1pbWVUeXBlLFxuICAgICAgd2lkdGgsXG4gICAgfSxcbiAgfSxcbiAgc2l6ZXNUb1NhdmUsXG59KVxuXG4vKipcbiAqIENoZWNrIGlmIHRoZSBpbWFnZSBuZWVkcyB0byBiZSByZXNpemVkIGFjY29yZGluZyB0byB0aGUgcmVxdWVzdGVkIGRpbWVuc2lvbnNcbiAqIGFuZCB0aGUgb3JpZ2luYWwgaW1hZ2Ugc2l6ZS4gSWYgdGhlIHJlc2l6ZSBvcHRpb25zIHdpdGhvdXRFbmxhcmdlbWVudCBvciB3aXRob3V0UmVkdWN0aW9uIGFyZSBwcm92aWRlZCxcbiAqIHRoZSBpbWFnZSB3aWxsIGJlIHJlc2l6ZWQgcmVnYXJkbGVzcyBvZiB0aGUgcmVxdWVzdGVkIGRpbWVuc2lvbnMsIGdpdmVuIHRoYXQgdGhlXG4gKiB3aWR0aCBvciBoZWlnaHQgdG8gYmUgcmVzaXplZCBpcyBwcm92aWRlZC5cbiAqXG4gKiBAcGFyYW0gcmVzaXplQ29uZmlnIC0gb2JqZWN0IGNvbnRhaW5pbmcgdGhlIHJlcXVlc3RlZCBkaW1lbnNpb25zIGFuZCByZXNpemUgb3B0aW9uc1xuICogQHBhcmFtIG9yaWdpbmFsIC0gdGhlIG9yaWdpbmFsIGltYWdlIHNpemVcbiAqIEByZXR1cm5zIHRydWUgaWYgcmVzaXppbmcgaXMgbm90IG5lZWRlZCwgZmFsc2Ugb3RoZXJ3aXNlXG4gKi9cbmNvbnN0IHByZXZlbnRSZXNpemUgPSAoXG4gIHsgaGVpZ2h0OiBkZXNpcmVkSGVpZ2h0LCB3aWR0aDogZGVzaXJlZFdpZHRoLCB3aXRob3V0RW5sYXJnZW1lbnQsIHdpdGhvdXRSZWR1Y3Rpb24gfTogSW1hZ2VTaXplLFxuICBvcmlnaW5hbDogUHJvYmVkSW1hZ2VTaXplLFxuKTogYm9vbGVhbiA9PiB7XG4gIC8vIGRlZmF1bHQgaXMgdG8gYWxsb3cgcmVkdWN0aW9uXG4gIGlmICh3aXRob3V0UmVkdWN0aW9uICE9PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gZmFsc2UgLy8gbmVlZHMgcmVzaXplXG4gIH1cblxuICAvLyBkZWZhdWx0IGlzIHRvIHByZXZlbnQgZW5sYXJnZW1lbnRcbiAgaWYgKHdpdGhvdXRFbmxhcmdlbWVudCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgcmV0dXJuIGZhbHNlIC8vIG5lZWRzIHJlc2l6ZVxuICB9XG5cbiAgY29uc3QgaXNXaWR0aE9ySGVpZ2h0Tm90RGVmaW5lZCA9ICFkZXNpcmVkSGVpZ2h0IHx8ICFkZXNpcmVkV2lkdGhcbiAgaWYgKGlzV2lkdGhPckhlaWdodE5vdERlZmluZWQpIHtcbiAgICAvLyBJZiB3aWR0aCBhbmQgaGVpZ2h0IGFyZSBub3QgZGVmaW5lZCwgaXQgbWVhbnMgdGhlcmUgaXMgYSBmb3JtYXQgY29udmVyc2lvblxuICAgIC8vIGFuZCB0aGUgaW1hZ2UgbmVlZHMgdG8gYmUgXCJyZXNpemVkXCIgKHRyYW5zZm9ybWVkKS5cbiAgICByZXR1cm4gZmFsc2UgLy8gbmVlZHMgcmVzaXplXG4gIH1cblxuICBjb25zdCBoYXNJbnN1ZmZpY2llbnRXaWR0aCA9IGRlc2lyZWRXaWR0aCA+IG9yaWdpbmFsLndpZHRoXG4gIGNvbnN0IGhhc0luc3VmZmljaWVudEhlaWdodCA9IGRlc2lyZWRIZWlnaHQgPiBvcmlnaW5hbC5oZWlnaHRcbiAgaWYgKGhhc0luc3VmZmljaWVudFdpZHRoICYmIGhhc0luc3VmZmljaWVudEhlaWdodCkge1xuICAgIC8vIGRvZXNuJ3QgbmVlZCByZXNpemUgLSBwcmV2ZW50IGVubGFyZ2VtZW50LiBUaGlzIHNob3VsZCBvbmx5IGhhcHBlbiBpZiBib3RoIHdpZHRoIGFuZCBoZWlnaHQgYXJlIGluc3VmZmljaWVudC5cbiAgICAvLyBpZiBvbmx5IG9uZSBkaW1lbnNpb24gaXMgaW5zdWZmaWNpZW50IGFuZCB0aGUgb3RoZXIgaXMgc3VmZmljaWVudCwgcmVzaXppbmcgbmVlZHMgdG8gaGFwcGVuLCBhcyB0aGUgaW1hZ2VcbiAgICAvLyBzaG91bGQgYmUgcmVzaXplZCB0byB0aGUgc3VmZmljaWVudCBkaW1lbnNpb24uXG4gICAgcmV0dXJuIHRydWUgLy8gZG8gbm90IGNyZWF0ZSBhIG5ldyBzaXplXG4gIH1cblxuICByZXR1cm4gZmFsc2UgLy8gbmVlZHMgcmVzaXplXG59XG5cbi8qKlxuICogQ2hlY2sgaWYgdGhlIGltYWdlIHNob3VsZCBiZSBwYXNzZWQgZGlyZWN0bHkgdG8gc2hhcnAgd2l0aG91dCBwYXlsb2FkIGFkanVzdGluZyBwcm9wZXJ0aWVzLlxuICpcbiAqIEBwYXJhbSByZXNpemVDb25maWcgLSBvYmplY3QgY29udGFpbmluZyB0aGUgcmVxdWVzdGVkIGRpbWVuc2lvbnMgYW5kIHJlc2l6ZSBvcHRpb25zXG4gKiBAcGFyYW0gb3JpZ2luYWwgLSB0aGUgb3JpZ2luYWwgaW1hZ2Ugc2l6ZVxuICogQHJldHVybnMgdHJ1ZSBpZiB0aGUgaW1hZ2Ugc2hvdWxkIHBhc3NlZCBkaXJlY3RseSB0byBzaGFycFxuICovXG5jb25zdCBhcHBseVBheWxvYWRBZGp1c3RtZW50cyA9IChcbiAgeyBmaXQsIGhlaWdodCwgd2lkdGgsIHdpdGhvdXRFbmxhcmdlbWVudCwgd2l0aG91dFJlZHVjdGlvbiB9OiBJbWFnZVNpemUsXG4gIG9yaWdpbmFsOiBQcm9iZWRJbWFnZVNpemUsXG4pID0+IHtcbiAgaWYgKGZpdCA9PT0gJ2NvbnRhaW4nIHx8IGZpdCA9PT0gJ2luc2lkZScpIHJldHVybiBmYWxzZVxuICBpZiAoIWlzTnVtYmVyKGhlaWdodCkgJiYgIWlzTnVtYmVyKHdpZHRoKSkgcmV0dXJuIGZhbHNlXG5cbiAgY29uc3QgdGFyZ2V0QXNwZWN0UmF0aW8gPSB3aWR0aCAvIGhlaWdodFxuICBjb25zdCBvcmlnaW5hbEFzcGVjdFJhdGlvID0gb3JpZ2luYWwud2lkdGggLyBvcmlnaW5hbC5oZWlnaHRcbiAgaWYgKG9yaWdpbmFsQXNwZWN0UmF0aW8gPT09IHRhcmdldEFzcGVjdFJhdGlvKSByZXR1cm4gZmFsc2VcblxuICBjb25zdCBza2lwRW5sYXJnZW1lbnQgPSB3aXRob3V0RW5sYXJnZW1lbnQgJiYgKG9yaWdpbmFsLmhlaWdodCA8IGhlaWdodCB8fCBvcmlnaW5hbC53aWR0aCA8IHdpZHRoKVxuICBjb25zdCBza2lwUmVkdWN0aW9uID0gd2l0aG91dFJlZHVjdGlvbiAmJiAob3JpZ2luYWwuaGVpZ2h0ID4gaGVpZ2h0IHx8IG9yaWdpbmFsLndpZHRoID4gd2lkdGgpXG4gIGlmIChza2lwRW5sYXJnZW1lbnQgfHwgc2tpcFJlZHVjdGlvbikgcmV0dXJuIGZhbHNlXG5cbiAgcmV0dXJuIHRydWVcbn1cblxuLyoqXG4gKiBTYW5pdGl6ZSB0aGUgcmVzaXplIGNvbmZpZy4gSWYgdGhlIHJlc2l6ZSBjb25maWcgaGFzIHRoZSBgd2l0aG91dFJlZHVjdGlvbmBcbiAqIHByb3BlcnR5IHNldCB0byB0cnVlLCB0aGUgYGZpdGAgYW5kIGBwb3NpdGlvbmAgcHJvcGVydGllcyB3aWxsIGJlIHNldCB0byBgY29udGFpbmBcbiAqIGFuZCBgdG9wIGxlZnRgIHJlc3BlY3RpdmVseS5cbiAqXG4gKiBAcGFyYW0gcmVzaXplQ29uZmlnIC0gdGhlIHJlc2l6ZSBjb25maWdcbiAqIEByZXR1cm5zIGEgc2FuaXRpemVkIHJlc2l6ZSBjb25maWdcbiAqL1xuY29uc3Qgc2FuaXRpemVSZXNpemVDb25maWcgPSAocmVzaXplQ29uZmlnOiBJbWFnZVNpemUpOiBJbWFnZVNpemUgPT4ge1xuICBpZiAocmVzaXplQ29uZmlnLndpdGhvdXRSZWR1Y3Rpb24pIHtcbiAgICByZXR1cm4ge1xuICAgICAgLi4ucmVzaXplQ29uZmlnLFxuICAgICAgLy8gV2h5IGZpdCBgY29udGFpbmAgc2hvdWxkIGFsc28gYmUgc2V0IHRvIGh0dHBzOi8vZ2l0aHViLmNvbS9sb3ZlbGwvc2hhcnAvaXNzdWVzLzM1OTVcbiAgICAgIGZpdDogcmVzaXplQ29uZmlnPy5maXQgfHwgJ2NvbnRhaW4nLFxuICAgICAgcG9zaXRpb246IHJlc2l6ZUNvbmZpZz8ucG9zaXRpb24gfHwgJ2xlZnQgdG9wJyxcbiAgICB9XG4gIH1cbiAgcmV0dXJuIHJlc2l6ZUNvbmZpZ1xufVxuXG4vKipcbiAqIEZvciB0aGUgcHJvdmlkZWQgaW1hZ2Ugc2l6ZXMsIGhhbmRsZSB0aGUgcmVzaXppbmcgYW5kIHRoZSB0cmFuc2Zvcm1zXG4gKiAoZm9ybWF0LCB0cmltLCBldGMuKSBvZiBlYWNoIHJlcXVlc3RlZCBpbWFnZSBzaXplIGFuZCByZXR1cm4gdGhlIHJlc3VsdCBvYmplY3QuXG4gKiBUaGlzIG9ubHkgaGFuZGxlcyB0aGUgaW1hZ2Ugc2l6ZXMuIFRoZSB0cmFuc2Zvcm1zIG9mIHRoZSBvcmlnaW5hbCBpbWFnZVxuICogYXJlIGhhbmRsZWQgaW4ge0BsaW5rIC4vZ2VuZXJhdGVGaWxlRGF0YS50c30uXG4gKlxuICogVGhlIGltYWdlIHdpbGwgYmUgcmVzaXplZCBhY2NvcmRpbmcgdG8gdGhlIHByb3ZpZGVkXG4gKiByZXNpemUgY29uZmlnLiBJZiBubyBpbWFnZSBzaXplcyBhcmUgcmVxdWVzdGVkLCB0aGUgcmVzb2x2ZWQgZGF0YSB3aWxsIGJlIGVtcHR5LlxuICogRm9yIGV2ZXJ5IGltYWdlIHRoYXQgZG9zIG5vdCBuZWVkIHRvIGJlIHJlc2l6ZWQsIGFuIHJlc3VsdCBvYmplY3Qgd2l0aCBgbnVsbGBcbiAqIHBhcmFtZXRlcnMgd2lsbCBiZSByZXR1cm5lZC5cbiAqXG4gKiBAcGFyYW0gcmVzaXplQ29uZmlnIC0gdGhlIHJlc2l6ZSBjb25maWdcbiAqIEByZXR1cm5zIHRoZSByZXN1bHQgb2YgdGhlIHJlc2l6ZSBvcGVyYXRpb24ocylcbiAqL1xuZXhwb3J0IGRlZmF1bHQgYXN5bmMgZnVuY3Rpb24gcmVzaXplQW5kVHJhbnNmb3JtSW1hZ2VTaXplcyh7XG4gIGNvbmZpZyxcbiAgZGltZW5zaW9ucyxcbiAgZmlsZSxcbiAgbWltZVR5cGUsXG4gIHJlcSxcbiAgc2F2ZWRGaWxlbmFtZSxcbiAgc3RhdGljUGF0aCxcbn06IFJlc2l6ZUFyZ3MpOiBQcm9taXNlPEltYWdlU2l6ZXNSZXN1bHQ+IHtcbiAgY29uc3QgeyBpbWFnZVNpemVzIH0gPSBjb25maWcudXBsb2FkXG4gIC8vIE5vdGluZyB0byByZXNpemUgaGVyZSBzbyByZXR1cm4gYXMgZWFybHkgYXMgcG9zc2libGVcbiAgaWYgKCFpbWFnZVNpemVzKSByZXR1cm4geyBzaXplRGF0YToge30sIHNpemVzVG9TYXZlOiBbXSB9XG5cbiAgY29uc3Qgc2hhcnBCYXNlID0gc2hhcnAoZmlsZS50ZW1wRmlsZVBhdGggfHwgZmlsZS5kYXRhKS5yb3RhdGUoKSAvLyBwYXNzIHJvdGF0ZSgpIHRvIGF1dG8tcm90YXRlIGJhc2VkIG9uIEVYSUYgZGF0YS4gaHR0cHM6Ly9naXRodWIuY29tL3BheWxvYWRjbXMvcGF5bG9hZC9wdWxsLzMwODFcblxuICBjb25zdCByZXN1bHRzOiBJbWFnZVNpemVzUmVzdWx0W10gPSBhd2FpdCBQcm9taXNlLmFsbChcbiAgICBpbWFnZVNpemVzLm1hcChhc3luYyAoaW1hZ2VSZXNpemVDb25maWcpOiBQcm9taXNlPEltYWdlU2l6ZXNSZXN1bHQ+ID0+IHtcbiAgICAgIGltYWdlUmVzaXplQ29uZmlnID0gc2FuaXRpemVSZXNpemVDb25maWcoaW1hZ2VSZXNpemVDb25maWcpXG5cbiAgICAgIC8vIFRoaXMgY2hlY2tzIGlmIGEgcmVzaXplIHNob3VsZCBoYXBwZW4uIElmIG5vdCwgdGhlIHJlc2l6ZWQgaW1hZ2Ugd2lsbCBiZVxuICAgICAgLy8gc2tpcHBlZCBDT01QTEVURUxZIGFuZCB0aHVzIHdpbGwgbm90IGJlIGluY2x1ZGVkIGluIHRoZSByZXN1bHRpbmcgaW1hZ2VzLlxuICAgICAgLy8gQWxsIGZ1cnRoZXIgZm9ybWF0L3RyaW0gb3B0aW9ucyB3aWxsIHRodXMgYmUgc2tpcHBlZCBhcyB3ZWxsLlxuICAgICAgaWYgKHByZXZlbnRSZXNpemUoaW1hZ2VSZXNpemVDb25maWcsIGRpbWVuc2lvbnMpKSB7XG4gICAgICAgIHJldHVybiBjcmVhdGVSZXN1bHQoaW1hZ2VSZXNpemVDb25maWcubmFtZSlcbiAgICAgIH1cblxuICAgICAgY29uc3QgaW1hZ2VUb1Jlc2l6ZSA9IHNoYXJwQmFzZS5jbG9uZSgpXG4gICAgICBsZXQgcmVzaXplZCA9IGltYWdlVG9SZXNpemVcblxuICAgICAgaWYgKFxuICAgICAgICByZXEucXVlcnk/LnVwbG9hZEVkaXRzPy5mb2NhbFBvaW50ICYmXG4gICAgICAgIGFwcGx5UGF5bG9hZEFkanVzdG1lbnRzKGltYWdlUmVzaXplQ29uZmlnLCBkaW1lbnNpb25zKVxuICAgICAgKSB7XG4gICAgICAgIGNvbnN0IHsgaGVpZ2h0OiByZXNpemVIZWlnaHQsIHdpZHRoOiByZXNpemVXaWR0aCB9ID0gaW1hZ2VSZXNpemVDb25maWdcbiAgICAgICAgY29uc3QgcmVzaXplQXNwZWN0UmF0aW8gPSByZXNpemVXaWR0aCAvIHJlc2l6ZUhlaWdodFxuICAgICAgICBjb25zdCBvcmlnaW5hbEFzcGVjdFJhdGlvID0gZGltZW5zaW9ucy53aWR0aCAvIGRpbWVuc2lvbnMuaGVpZ2h0XG4gICAgICAgIGNvbnN0IHByaW9yaXRpemVIZWlnaHQgPSByZXNpemVBc3BlY3RSYXRpbyA8IG9yaWdpbmFsQXNwZWN0UmF0aW9cblxuICAgICAgICAvLyBTY2FsZSB0aGUgaW1hZ2UgdXAgb3IgZG93biB0byBmaXQgdGhlIHJlc2l6ZSBkaW1lbnNpb25zXG4gICAgICAgIGNvbnN0IHNjYWxlZEltYWdlID0gaW1hZ2VUb1Jlc2l6ZS5yZXNpemUoe1xuICAgICAgICAgIGhlaWdodDogcHJpb3JpdGl6ZUhlaWdodCA/IHJlc2l6ZUhlaWdodCA6IG51bGwsXG4gICAgICAgICAgd2lkdGg6IHByaW9yaXRpemVIZWlnaHQgPyBudWxsIDogcmVzaXplV2lkdGgsXG4gICAgICAgIH0pXG4gICAgICAgIGNvbnN0IHsgaW5mbzogc2NhbGVkSW1hZ2VJbmZvIH0gPSBhd2FpdCBzY2FsZWRJbWFnZS50b0J1ZmZlcih7IHJlc29sdmVXaXRoT2JqZWN0OiB0cnVlIH0pXG5cbiAgICAgICAgLy8gRm9jYWwgcG9pbnQgYWRqdXN0bWVudHNcbiAgICAgICAgY29uc3QgZm9jYWxQb2ludCA9IHtcbiAgICAgICAgICB4OiBpc051bWJlcihyZXEucXVlcnkudXBsb2FkRWRpdHMuZm9jYWxQb2ludD8ueClcbiAgICAgICAgICAgID8gcmVxLnF1ZXJ5LnVwbG9hZEVkaXRzLmZvY2FsUG9pbnQueFxuICAgICAgICAgICAgOiA1MCxcbiAgICAgICAgICB5OiBpc051bWJlcihyZXEucXVlcnkudXBsb2FkRWRpdHMuZm9jYWxQb2ludD8ueSlcbiAgICAgICAgICAgID8gcmVxLnF1ZXJ5LnVwbG9hZEVkaXRzLmZvY2FsUG9pbnQueVxuICAgICAgICAgICAgOiA1MCxcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IHNhZmVSZXNpemVXaWR0aCA9IHJlc2l6ZVdpZHRoID8/IHNjYWxlZEltYWdlSW5mby53aWR0aFxuICAgICAgICBjb25zdCBtYXhPZmZzZXRYID0gc2NhbGVkSW1hZ2VJbmZvLndpZHRoIC0gc2FmZVJlc2l6ZVdpZHRoXG4gICAgICAgIGNvbnN0IGxlZnRGb2NhbEVkZ2UgPSBNYXRoLnJvdW5kKFxuICAgICAgICAgIHNjYWxlZEltYWdlSW5mby53aWR0aCAqIChmb2NhbFBvaW50LnggLyAxMDApIC0gc2FmZVJlc2l6ZVdpZHRoIC8gMixcbiAgICAgICAgKVxuICAgICAgICBjb25zdCBzYWZlT2Zmc2V0WCA9IE1hdGgubWluKE1hdGgubWF4KDAsIGxlZnRGb2NhbEVkZ2UpLCBtYXhPZmZzZXRYKVxuXG4gICAgICAgIGNvbnN0IHNhZmVSZXNpemVIZWlnaHQgPSByZXNpemVIZWlnaHQgPz8gc2NhbGVkSW1hZ2VJbmZvLmhlaWdodFxuICAgICAgICBjb25zdCBtYXhPZmZzZXRZID0gc2NhbGVkSW1hZ2VJbmZvLmhlaWdodCAtIHNhZmVSZXNpemVIZWlnaHRcbiAgICAgICAgY29uc3QgdG9wRm9jYWxFZGdlID0gTWF0aC5yb3VuZChcbiAgICAgICAgICBzY2FsZWRJbWFnZUluZm8uaGVpZ2h0ICogKGZvY2FsUG9pbnQueSAvIDEwMCkgLSBzYWZlUmVzaXplSGVpZ2h0IC8gMixcbiAgICAgICAgKVxuICAgICAgICBjb25zdCBzYWZlT2Zmc2V0WSA9IE1hdGgubWluKE1hdGgubWF4KDAsIHRvcEZvY2FsRWRnZSksIG1heE9mZnNldFkpXG5cbiAgICAgICAgLy8gZXh0cmFjdCB0aGUgZm9jYWwgYXJlYSBmcm9tIHRoZSBzY2FsZWQgaW1hZ2VcbiAgICAgICAgcmVzaXplZCA9IHNjYWxlZEltYWdlLmV4dHJhY3Qoe1xuICAgICAgICAgIGhlaWdodDogc2FmZVJlc2l6ZUhlaWdodCxcbiAgICAgICAgICBsZWZ0OiBzYWZlT2Zmc2V0WCxcbiAgICAgICAgICB0b3A6IHNhZmVPZmZzZXRZLFxuICAgICAgICAgIHdpZHRoOiBzYWZlUmVzaXplV2lkdGgsXG4gICAgICAgIH0pXG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXNpemVkID0gaW1hZ2VUb1Jlc2l6ZS5yZXNpemUoaW1hZ2VSZXNpemVDb25maWcpXG4gICAgICB9XG5cbiAgICAgIGlmIChpbWFnZVJlc2l6ZUNvbmZpZy5mb3JtYXRPcHRpb25zKSB7XG4gICAgICAgIHJlc2l6ZWQgPSByZXNpemVkLnRvRm9ybWF0KFxuICAgICAgICAgIGltYWdlUmVzaXplQ29uZmlnLmZvcm1hdE9wdGlvbnMuZm9ybWF0LFxuICAgICAgICAgIGltYWdlUmVzaXplQ29uZmlnLmZvcm1hdE9wdGlvbnMub3B0aW9ucyxcbiAgICAgICAgKVxuICAgICAgfVxuXG4gICAgICBpZiAoaW1hZ2VSZXNpemVDb25maWcudHJpbU9wdGlvbnMpIHtcbiAgICAgICAgcmVzaXplZCA9IHJlc2l6ZWQudHJpbShpbWFnZVJlc2l6ZUNvbmZpZy50cmltT3B0aW9ucylcbiAgICAgIH1cblxuICAgICAgY29uc3QgeyBkYXRhOiBidWZmZXJEYXRhLCBpbmZvOiBidWZmZXJJbmZvIH0gPSBhd2FpdCByZXNpemVkLnRvQnVmZmVyKHtcbiAgICAgICAgcmVzb2x2ZVdpdGhPYmplY3Q6IHRydWUsXG4gICAgICB9KVxuXG4gICAgICBjb25zdCBzYW5pdGl6ZWRJbWFnZSA9IGdldFNhbml0aXplZEltYWdlRGF0YShzYXZlZEZpbGVuYW1lKVxuXG4gICAgICBpZiAocmVxLnBheWxvYWRVcGxvYWRTaXplcykge1xuICAgICAgICByZXEucGF5bG9hZFVwbG9hZFNpemVzW2ltYWdlUmVzaXplQ29uZmlnLm5hbWVdID0gYnVmZmVyRGF0YVxuICAgICAgfVxuXG4gICAgICBjb25zdCBtaW1lSW5mbyA9IGF3YWl0IGZyb21CdWZmZXIoYnVmZmVyRGF0YSlcblxuICAgICAgY29uc3QgaW1hZ2VOYW1lV2l0aERpbWVuc2lvbnMgPSBjcmVhdGVJbWFnZU5hbWUoXG4gICAgICAgIHNhbml0aXplZEltYWdlLm5hbWUsXG4gICAgICAgIGJ1ZmZlckluZm8sXG4gICAgICAgIG1pbWVJbmZvPy5leHQgfHwgc2FuaXRpemVkSW1hZ2UuZXh0LFxuICAgICAgKVxuXG4gICAgICBjb25zdCBpbWFnZVBhdGggPSBgJHtzdGF0aWNQYXRofS8ke2ltYWdlTmFtZVdpdGhEaW1lbnNpb25zfWBcblxuICAgICAgaWYgKGF3YWl0IGZpbGVFeGlzdHMoaW1hZ2VQYXRoKSkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGZzLnVubGlua1N5bmMoaW1hZ2VQYXRoKVxuICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAvLyBJZ25vcmUgdW5saW5rIGVycm9yc1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IHsgaGVpZ2h0LCBzaXplLCB3aWR0aCB9ID0gYnVmZmVySW5mb1xuICAgICAgcmV0dXJuIGNyZWF0ZVJlc3VsdChcbiAgICAgICAgaW1hZ2VSZXNpemVDb25maWcubmFtZSxcbiAgICAgICAgaW1hZ2VOYW1lV2l0aERpbWVuc2lvbnMsXG4gICAgICAgIHdpZHRoLFxuICAgICAgICBoZWlnaHQsXG4gICAgICAgIHNpemUsXG4gICAgICAgIG1pbWVJbmZvPy5taW1lIHx8IG1pbWVUeXBlLFxuICAgICAgICBbeyBidWZmZXI6IGJ1ZmZlckRhdGEsIHBhdGg6IGltYWdlUGF0aCB9XSxcbiAgICAgIClcbiAgICB9KSxcbiAgKVxuXG4gIHJldHVybiByZXN1bHRzLnJlZHVjZShcbiAgICAoYWNjLCByZXN1bHQpID0+IHtcbiAgICAgIE9iamVjdC5hc3NpZ24oYWNjLnNpemVEYXRhLCByZXN1bHQuc2l6ZURhdGEpXG4gICAgICBhY2Muc2l6ZXNUb1NhdmUucHVzaCguLi5yZXN1bHQuc2l6ZXNUb1NhdmUpXG4gICAgICByZXR1cm4gYWNjXG4gICAgfSxcbiAgICB7IHNpemVEYXRhOiB7fSwgc2l6ZXNUb1NhdmU6IFtdIH0sXG4gIClcbn1cbiJdLCJuYW1lcyI6WyJyZXNpemVBbmRUcmFuc2Zvcm1JbWFnZVNpemVzIiwiZ2V0U2FuaXRpemVkSW1hZ2VEYXRhIiwic291cmNlSW1hZ2UiLCJleHRlbnNpb24iLCJzcGxpdCIsInBvcCIsIm5hbWUiLCJzYW5pdGl6ZSIsInN1YnN0cmluZyIsImxhc3RJbmRleE9mIiwiZXh0IiwiY3JlYXRlSW1hZ2VOYW1lIiwib3V0cHV0SW1hZ2VOYW1lIiwiaGVpZ2h0Iiwid2lkdGgiLCJjcmVhdGVSZXN1bHQiLCJmaWxlbmFtZSIsImZpbGVzaXplIiwibWltZVR5cGUiLCJzaXplc1RvU2F2ZSIsInNpemVEYXRhIiwicHJldmVudFJlc2l6ZSIsImRlc2lyZWRIZWlnaHQiLCJkZXNpcmVkV2lkdGgiLCJ3aXRob3V0RW5sYXJnZW1lbnQiLCJ3aXRob3V0UmVkdWN0aW9uIiwib3JpZ2luYWwiLCJ1bmRlZmluZWQiLCJpc1dpZHRoT3JIZWlnaHROb3REZWZpbmVkIiwiaGFzSW5zdWZmaWNpZW50V2lkdGgiLCJoYXNJbnN1ZmZpY2llbnRIZWlnaHQiLCJhcHBseVBheWxvYWRBZGp1c3RtZW50cyIsImZpdCIsImlzTnVtYmVyIiwidGFyZ2V0QXNwZWN0UmF0aW8iLCJvcmlnaW5hbEFzcGVjdFJhdGlvIiwic2tpcEVubGFyZ2VtZW50Iiwic2tpcFJlZHVjdGlvbiIsInNhbml0aXplUmVzaXplQ29uZmlnIiwicmVzaXplQ29uZmlnIiwicG9zaXRpb24iLCJjb25maWciLCJkaW1lbnNpb25zIiwiZmlsZSIsInJlcSIsInNhdmVkRmlsZW5hbWUiLCJzdGF0aWNQYXRoIiwiaW1hZ2VTaXplcyIsInVwbG9hZCIsInNoYXJwQmFzZSIsInNoYXJwIiwidGVtcEZpbGVQYXRoIiwiZGF0YSIsInJvdGF0ZSIsInJlc3VsdHMiLCJQcm9taXNlIiwiYWxsIiwibWFwIiwiaW1hZ2VSZXNpemVDb25maWciLCJpbWFnZVRvUmVzaXplIiwiY2xvbmUiLCJyZXNpemVkIiwicXVlcnkiLCJ1cGxvYWRFZGl0cyIsImZvY2FsUG9pbnQiLCJyZXNpemVIZWlnaHQiLCJyZXNpemVXaWR0aCIsInJlc2l6ZUFzcGVjdFJhdGlvIiwicHJpb3JpdGl6ZUhlaWdodCIsInNjYWxlZEltYWdlIiwicmVzaXplIiwiaW5mbyIsInNjYWxlZEltYWdlSW5mbyIsInRvQnVmZmVyIiwicmVzb2x2ZVdpdGhPYmplY3QiLCJ4IiwieSIsInNhZmVSZXNpemVXaWR0aCIsIm1heE9mZnNldFgiLCJsZWZ0Rm9jYWxFZGdlIiwiTWF0aCIsInJvdW5kIiwic2FmZU9mZnNldFgiLCJtaW4iLCJtYXgiLCJzYWZlUmVzaXplSGVpZ2h0IiwibWF4T2Zmc2V0WSIsInRvcEZvY2FsRWRnZSIsInNhZmVPZmZzZXRZIiwiZXh0cmFjdCIsImxlZnQiLCJ0b3AiLCJmb3JtYXRPcHRpb25zIiwidG9Gb3JtYXQiLCJmb3JtYXQiLCJvcHRpb25zIiwidHJpbU9wdGlvbnMiLCJ0cmltIiwiYnVmZmVyRGF0YSIsImJ1ZmZlckluZm8iLCJzYW5pdGl6ZWRJbWFnZSIsInBheWxvYWRVcGxvYWRTaXplcyIsIm1pbWVJbmZvIiwiZnJvbUJ1ZmZlciIsImltYWdlTmFtZVdpdGhEaW1lbnNpb25zIiwiaW1hZ2VQYXRoIiwiZmlsZUV4aXN0cyIsImZzIiwidW5saW5rU3luYyIsInNpemUiLCJtaW1lIiwiYnVmZmVyIiwicGF0aCIsInJlZHVjZSIsImFjYyIsInJlc3VsdCIsIk9iamVjdCIsImFzc2lnbiIsInB1c2giXSwibWFwcGluZ3MiOiI7Ozs7K0JBbU1BOzs7Ozs7Ozs7Ozs7O0NBYUMsR0FDRDs7O2VBQThCQTs7OzBCQTlNSDsyREFDWjt5RUFDTTs4REFDSDswQkFPTzttRUFDRjs7Ozs7O0FBMkJ2Qjs7Ozs7Q0FLQyxHQUNELE1BQU1DLHdCQUF3QixDQUFDQztJQUM3QixNQUFNQyxZQUFZRCxZQUFZRSxLQUFLLENBQUMsS0FBS0MsR0FBRztJQUM1QyxNQUFNQyxPQUFPQyxJQUFBQSx5QkFBUSxFQUFDTCxZQUFZTSxTQUFTLENBQUMsR0FBR04sWUFBWU8sV0FBVyxDQUFDLFNBQVNQO0lBQ2hGLE9BQU87UUFBRUk7UUFBTUksS0FBS1A7SUFBVTtBQUNoQztBQUVBOzs7Ozs7Ozs7Ozs7Q0FZQyxHQUNELE1BQU1RLGtCQUFrQixDQUN0QkMsaUJBQ0EsRUFBRUMsTUFBTSxFQUFFQyxLQUFLLEVBQWMsRUFDN0JYLFlBQ0csQ0FBQyxFQUFFUyxnQkFBZ0IsQ0FBQyxFQUFFRSxNQUFNLENBQUMsRUFBRUQsT0FBTyxDQUFDLEVB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
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "payload",
3
- "version": "2.4.0",
3
+ "version": "2.5.0",
4
4
  "description": "Node, React and MongoDB Headless CMS and Application Framework",
5
5
  "license": "MIT",
6
6
  "main": "./dist/index.js",
@@ -1,4 +0,0 @@
1
- import type { File } from './types';
2
- declare const getFileByURL: (url: string) => Promise<File>;
3
- export default getFileByURL;
4
- //# sourceMappingURL=getFileByURL.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"getFileByURL.d.ts","sourceRoot":"","sources":["../../src/uploads/getFileByURL.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,SAAS,CAAA;AAEnC,QAAA,MAAM,YAAY,QAAe,MAAM,KAAG,QAAQ,IAAI,CAkBrD,CAAA;AAED,eAAe,YAAY,CAAA"}
@@ -1,38 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", {
3
- value: true
4
- });
5
- Object.defineProperty(exports, "default", {
6
- enumerable: true,
7
- get: function() {
8
- return _default;
9
- }
10
- });
11
- const _nodefetch = /*#__PURE__*/ _interop_require_default(require("node-fetch"));
12
- const _path = /*#__PURE__*/ _interop_require_default(require("path"));
13
- function _interop_require_default(obj) {
14
- return obj && obj.__esModule ? obj : {
15
- default: obj
16
- };
17
- }
18
- const getFileByURL = async (url)=>{
19
- if (typeof url === 'string') {
20
- const res = await (0, _nodefetch.default)(url, {
21
- headers: {
22
- 'Content-Type': 'application/json'
23
- },
24
- method: 'GET'
25
- });
26
- const data = await res.buffer();
27
- const name = _path.default.basename(url);
28
- return {
29
- name,
30
- data,
31
- mimetype: res.headers.get('content-type') || undefined,
32
- size: Number(res.headers.get('content-length')) || 0
33
- };
34
- }
35
- };
36
- const _default = getFileByURL;
37
-
38
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91cGxvYWRzL2dldEZpbGVCeVVSTC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgZmV0Y2ggZnJvbSAnbm9kZS1mZXRjaCdcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnXG5cbmltcG9ydCB0eXBlIHsgRmlsZSB9IGZyb20gJy4vdHlwZXMnXG5cbmNvbnN0IGdldEZpbGVCeVVSTCA9IGFzeW5jICh1cmw6IHN0cmluZyk6IFByb21pc2U8RmlsZT4gPT4ge1xuICBpZiAodHlwZW9mIHVybCA9PT0gJ3N0cmluZycpIHtcbiAgICBjb25zdCByZXMgPSBhd2FpdCBmZXRjaCh1cmwsIHtcbiAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAgIH0sXG4gICAgICBtZXRob2Q6ICdHRVQnLFxuICAgIH0pXG4gICAgY29uc3QgZGF0YSA9IGF3YWl0IHJlcy5idWZmZXIoKVxuICAgIGNvbnN0IG5hbWUgPSBwYXRoLmJhc2VuYW1lKHVybClcblxuICAgIHJldHVybiB7XG4gICAgICBuYW1lLFxuICAgICAgZGF0YSxcbiAgICAgIG1pbWV0eXBlOiByZXMuaGVhZGVycy5nZXQoJ2NvbnRlbnQtdHlwZScpIHx8IHVuZGVmaW5lZCxcbiAgICAgIHNpemU6IE51bWJlcihyZXMuaGVhZGVycy5nZXQoJ2NvbnRlbnQtbGVuZ3RoJykpIHx8IDAsXG4gICAgfVxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IGdldEZpbGVCeVVSTFxuIl0sIm5hbWVzIjpbImdldEZpbGVCeVVSTCIsInVybCIsInJlcyIsImZldGNoIiwiaGVhZGVycyIsIm1ldGhvZCIsImRhdGEiLCJidWZmZXIiLCJuYW1lIiwicGF0aCIsImJhc2VuYW1lIiwibWltZXR5cGUiLCJnZXQiLCJ1bmRlZmluZWQiLCJzaXplIiwiTnVtYmVyIl0sIm1hcHBpbmdzIjoiOzs7OytCQXlCQTs7O2VBQUE7OztrRUF6QmtCOzZEQUNEOzs7Ozs7QUFJakIsTUFBTUEsZUFBZSxPQUFPQztJQUMxQixJQUFJLE9BQU9BLFFBQVEsVUFBVTtRQUMzQixNQUFNQyxNQUFNLE1BQU1DLElBQUFBLGtCQUFLLEVBQUNGLEtBQUs7WUFDM0JHLFNBQVM7Z0JBQ1AsZ0JBQWdCO1lBQ2xCO1lBQ0FDLFFBQVE7UUFDVjtRQUNBLE1BQU1DLE9BQU8sTUFBTUosSUFBSUssTUFBTTtRQUM3QixNQUFNQyxPQUFPQyxhQUFJLENBQUNDLFFBQVEsQ0FBQ1Q7UUFFM0IsT0FBTztZQUNMTztZQUNBRjtZQUNBSyxVQUFVVCxJQUFJRSxPQUFPLENBQUNRLEdBQUcsQ0FBQyxtQkFBbUJDO1lBQzdDQyxNQUFNQyxPQUFPYixJQUFJRSxPQUFPLENBQUNRLEdBQUcsQ0FBQyxzQkFBc0I7UUFDckQ7SUFDRjtBQUNGO01BRUEsV0FBZVoifQ==