payload 2.16.1 → 2.18.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.
- package/components/index.js +4 -4
- package/components/styles.css +1 -1
- package/dist/admin/Root.d.ts.map +1 -1
- package/dist/admin/Root.js +3 -2
- package/dist/admin/components/elements/DocumentControls/index.d.ts.map +1 -1
- package/dist/admin/components/elements/DocumentControls/index.js +8 -2
- package/dist/admin/components/elements/EditUpload/index.d.ts.map +1 -1
- package/dist/admin/components/elements/EditUpload/index.js +16 -18
- package/dist/admin/components/elements/Loading/index.d.ts.map +1 -1
- package/dist/admin/components/elements/Loading/index.js +7 -7
- package/dist/admin/components/elements/ReactSelect/index.d.ts.map +1 -1
- package/dist/admin/components/elements/ReactSelect/index.js +5 -2
- package/dist/admin/components/elements/StepNav/index.scss +1 -2
- package/dist/admin/components/forms/field-types/Checkbox/index.d.ts.map +1 -1
- package/dist/admin/components/forms/field-types/Checkbox/index.js +4 -2
- package/dist/admin/components/forms/field-types/RadioGroup/RadioInput/index.d.ts.map +1 -1
- package/dist/admin/components/forms/field-types/RadioGroup/RadioInput/index.js +4 -2
- package/dist/admin/components/utilities/LanguageWrap/index.d.ts +6 -0
- package/dist/admin/components/utilities/LanguageWrap/index.d.ts.map +1 -0
- package/dist/admin/components/utilities/LanguageWrap/index.js +32 -0
- package/dist/admin/components/views/API/index.js +11 -8
- package/dist/admin/components/views/collections/List/Cell/field-types/Checkbox/index.d.ts.map +1 -1
- package/dist/admin/components/views/collections/List/Cell/field-types/Checkbox/index.js +8 -3
- package/dist/admin/scss/app.scss +7 -0
- package/dist/collections/operations/create.d.ts.map +1 -1
- package/dist/collections/operations/create.js +2 -1
- package/dist/collections/operations/update.d.ts.map +1 -1
- package/dist/collections/operations/update.js +2 -1
- package/dist/collections/operations/updateByID.d.ts.map +1 -1
- package/dist/collections/operations/updateByID.js +3 -1
- package/dist/exports/types.d.ts +1 -1
- package/dist/exports/types.d.ts.map +1 -1
- package/dist/exports/types.js +1 -1
- package/dist/fields/config/types.d.ts +0 -4
- package/dist/fields/config/types.d.ts.map +1 -1
- package/dist/fields/config/types.js +1 -1
- package/dist/fields/validations.d.ts.map +1 -1
- package/dist/fields/validations.js +12 -4
- package/dist/translations/ar.json +5 -1
- package/dist/translations/az.json +5 -1
- package/dist/translations/bg.json +5 -1
- package/dist/translations/cs.json +5 -1
- package/dist/translations/de.json +5 -1
- package/dist/translations/en.json +4 -0
- package/dist/translations/es.json +5 -1
- package/dist/translations/fa.json +5 -1
- package/dist/translations/fr.json +5 -1
- package/dist/translations/hr.json +5 -1
- package/dist/translations/hu.json +5 -1
- package/dist/translations/index.d.ts +125 -4
- package/dist/translations/index.d.ts.map +1 -1
- package/dist/translations/it.json +5 -1
- package/dist/translations/ja.json +5 -1
- package/dist/translations/ko.json +10 -5
- package/dist/translations/my.json +5 -1
- package/dist/translations/nb.json +5 -1
- package/dist/translations/nl.json +5 -1
- package/dist/translations/pl.json +5 -1
- package/dist/translations/pt.json +5 -1
- package/dist/translations/ro.json +5 -1
- package/dist/translations/rs-latin.json +5 -1
- package/dist/translations/rs.json +5 -1
- package/dist/translations/ru.json +5 -1
- package/dist/translations/sv.json +5 -1
- package/dist/translations/th.json +5 -1
- package/dist/translations/tr.json +5 -1
- package/dist/translations/ua.json +5 -1
- package/dist/translations/vi.json +5 -1
- package/dist/translations/zh-tw.json +4 -0
- package/dist/translations/zh.json +5 -1
- package/dist/uploads/cropImage.d.ts +1 -1
- package/dist/uploads/cropImage.d.ts.map +1 -1
- package/dist/uploads/cropImage.js +2 -1
- package/dist/uploads/generateFileData.d.ts +3 -1
- package/dist/uploads/generateFileData.d.ts.map +1 -1
- package/dist/uploads/generateFileData.js +47 -6
- package/dist/uploads/getBaseFields.d.ts.map +1 -1
- package/dist/uploads/getBaseFields.js +31 -16
- package/dist/uploads/getExternalFile.js +2 -2
- package/dist/uploads/imageResizer.d.ts +5 -8
- package/dist/uploads/imageResizer.d.ts.map +1 -1
- package/dist/uploads/imageResizer.js +35 -20
- package/dist/uploads/types.d.ts +14 -0
- package/dist/uploads/types.d.ts.map +1 -1
- package/dist/uploads/types.js +2 -2
- package/package.json +1 -1
- package/types.d.ts +1 -1
- package/types.js +1 -1
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
"alreadyActivated": "Hesap zaten etkinleştirildi",
|
|
7
7
|
"alreadyLoggedIn": "Hesaba zaten giriş yapıldı",
|
|
8
8
|
"apiKey": "API Anahtarı",
|
|
9
|
+
"authenticated": "Doğrulandı",
|
|
9
10
|
"backToLogin": "Giriş ekranına geri dön",
|
|
10
11
|
"beginCreateFirstUser": "Başlamak için ilk kullanıcı hesabını oluşturun.",
|
|
11
12
|
"changePassword": "Parolayı Değiştir",
|
|
@@ -177,6 +178,7 @@
|
|
|
177
178
|
"deletedCountSuccessfully": "{{count}} {{label}} başarıyla silindi.",
|
|
178
179
|
"deletedSuccessfully": "Başarıyla silindi.",
|
|
179
180
|
"deleting": "Siliniyor...",
|
|
181
|
+
"depth": "Derinlik",
|
|
180
182
|
"descending": "Azalan",
|
|
181
183
|
"deselectAllRows": "Tüm satırların seçimini kaldır",
|
|
182
184
|
"document": "Belge",
|
|
@@ -195,6 +197,7 @@
|
|
|
195
197
|
"error": "Hata",
|
|
196
198
|
"errors": "Hatalar",
|
|
197
199
|
"fallbackToDefaultLocale": "Varsayılan yerel ayara geri dönme",
|
|
200
|
+
"false": "Yanlış",
|
|
198
201
|
"filter": "Filtrele",
|
|
199
202
|
"filterWhere": "{{label}} filtrele:",
|
|
200
203
|
"filters": "Filtreler",
|
|
@@ -250,6 +253,7 @@
|
|
|
250
253
|
"successfullyDuplicated": "{{label}} başarıyla kopyalandı.",
|
|
251
254
|
"thisLanguage": "Türkçe",
|
|
252
255
|
"titleDeleted": "{{label}} {{title}} başarıyla silindi.",
|
|
256
|
+
"true": "Doğru",
|
|
253
257
|
"unauthorized": "Yetkisiz",
|
|
254
258
|
"unsavedChangesDuplicate": "Kaydedilmemiş değişiklikler var. Çoğaltma işlemine devam etmek istiyor musunuz?",
|
|
255
259
|
"untitled": "Başlıksız",
|
|
@@ -373,4 +377,4 @@
|
|
|
373
377
|
"viewingVersions": "{{entityLabel}} {{documentTitle}} için sürümler gösteriliyor",
|
|
374
378
|
"viewingVersionsGlobal": "`Global {{entityLabel}} için sürümler gösteriliyor"
|
|
375
379
|
}
|
|
376
|
-
}
|
|
380
|
+
}
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
"alreadyActivated": "Вже активований",
|
|
7
7
|
"alreadyLoggedIn": "Вже увійшли в систему",
|
|
8
8
|
"apiKey": "API ключ",
|
|
9
|
+
"authenticated": "Автентифікований",
|
|
9
10
|
"backToLogin": "Повернутися до входу",
|
|
10
11
|
"beginCreateFirstUser": "Щоб розпочати - створість першого користувача",
|
|
11
12
|
"changePassword": "Змінити пароль",
|
|
@@ -177,6 +178,7 @@
|
|
|
177
178
|
"deletedCountSuccessfully": "Успішно видалено {{count}} {{label}}.",
|
|
178
179
|
"deletedSuccessfully": "Успішно видалено.",
|
|
179
180
|
"deleting": "Видалення...",
|
|
181
|
+
"depth": "Глибина",
|
|
180
182
|
"descending": "В порядку спадання",
|
|
181
183
|
"deselectAllRows": "Скасувати вибір всіх рядків",
|
|
182
184
|
"document": "Документ",
|
|
@@ -195,6 +197,7 @@
|
|
|
195
197
|
"error": "Помилка",
|
|
196
198
|
"errors": "Помилки",
|
|
197
199
|
"fallbackToDefaultLocale": "Відновлення локалі за замовчуванням",
|
|
200
|
+
"false": "Неправда",
|
|
198
201
|
"filter": "Фільтрувати",
|
|
199
202
|
"filterWhere": "Де фільтрувати {{label}}",
|
|
200
203
|
"filters": "Фільтри",
|
|
@@ -250,6 +253,7 @@
|
|
|
250
253
|
"successfullyDuplicated": "{{label}} успішно продубльовано.",
|
|
251
254
|
"thisLanguage": "Українська",
|
|
252
255
|
"titleDeleted": "{{label}} \"{{title}}\" успішно видалено.",
|
|
256
|
+
"true": "Правда",
|
|
253
257
|
"unauthorized": "Немає доступу",
|
|
254
258
|
"unsavedChangesDuplicate": "Ви маєте не збережені зміни. Чи бажаєте ви продовжити дублювання?",
|
|
255
259
|
"untitled": "Без назви",
|
|
@@ -373,4 +377,4 @@
|
|
|
373
377
|
"viewingVersions": "Огляд версій для {{entityLabel}} {{documentTitle}}",
|
|
374
378
|
"viewingVersionsGlobal": "Огляд версій для глобальної колекції {{entityLabel}}"
|
|
375
379
|
}
|
|
376
|
-
}
|
|
380
|
+
}
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
"alreadyActivated": "Đã được kích hoạt",
|
|
7
7
|
"alreadyLoggedIn": "Đã đăng nhập",
|
|
8
8
|
"apiKey": "API Key",
|
|
9
|
+
"authenticated": "Đã xác thực",
|
|
9
10
|
"backToLogin": "Quay lại đăng nhập.",
|
|
10
11
|
"beginCreateFirstUser": "Để bắt đầu, hãy tạo người dùng đầu tiên.",
|
|
11
12
|
"changePassword": "Đổi mật khẩu",
|
|
@@ -177,6 +178,7 @@
|
|
|
177
178
|
"deletedCountSuccessfully": "Đã xóa thành công {{count}} {{label}}.",
|
|
178
179
|
"deletedSuccessfully": "Đã xoá thành công.",
|
|
179
180
|
"deleting": "Đang xóa...",
|
|
181
|
+
"depth": "Độ sâu",
|
|
180
182
|
"descending": "Xếp theo thứ tự giảm dần",
|
|
181
183
|
"deselectAllRows": "Bỏ chọn tất cả các hàng",
|
|
182
184
|
"document": "Tài liệu",
|
|
@@ -195,6 +197,7 @@
|
|
|
195
197
|
"error": "Lỗi",
|
|
196
198
|
"errors": "Lỗi",
|
|
197
199
|
"fallbackToDefaultLocale": "Ngôn ngữ mặc định",
|
|
200
|
+
"false": "Sai",
|
|
198
201
|
"filter": "Lọc",
|
|
199
202
|
"filterWhere": "Lọc {{label}} với điều kiện:",
|
|
200
203
|
"filters": "Bộ lọc",
|
|
@@ -250,6 +253,7 @@
|
|
|
250
253
|
"successfullyDuplicated": "{{label}} đã được sao chép thành công.",
|
|
251
254
|
"thisLanguage": "Vietnamese (Tiếng Việt)",
|
|
252
255
|
"titleDeleted": "{{label}} {{title}} đã được xóa thành công.",
|
|
256
|
+
"true": "Thật",
|
|
253
257
|
"unauthorized": "Không có quyền truy cập.",
|
|
254
258
|
"unsavedChangesDuplicate": "Bạn chưa lưu các thay đổi. Bạn có muốn tiếp tục tạo bản sao?",
|
|
255
259
|
"untitled": "Chưa có tiêu đề",
|
|
@@ -373,4 +377,4 @@
|
|
|
373
377
|
"viewingVersions": "Xem những phiên bản của {{entityLabel}} {{documentTitle}}",
|
|
374
378
|
"viewingVersionsGlobal": "`Xem những phiên bản toàn thể (global) của {{entityLabel}}"
|
|
375
379
|
}
|
|
376
|
-
}
|
|
380
|
+
}
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
"alreadyActivated": "已經啟用了",
|
|
7
7
|
"alreadyLoggedIn": "已經登入了",
|
|
8
8
|
"apiKey": "API金鑰",
|
|
9
|
+
"authenticated": "經過身份驗證的",
|
|
9
10
|
"backToLogin": "返回登入頁面",
|
|
10
11
|
"beginCreateFirstUser": "首先,請建立您的第一個使用者。",
|
|
11
12
|
"changePassword": "更改密碼",
|
|
@@ -177,6 +178,7 @@
|
|
|
177
178
|
"deletedCountSuccessfully": "已成功刪除 {{count}} 個 {{label}}。",
|
|
178
179
|
"deletedSuccessfully": "已成功刪除。",
|
|
179
180
|
"deleting": "刪除中...",
|
|
181
|
+
"depth": "深度",
|
|
180
182
|
"descending": "降冪",
|
|
181
183
|
"deselectAllRows": "取消選擇全部",
|
|
182
184
|
"document": "文件",
|
|
@@ -195,6 +197,7 @@
|
|
|
195
197
|
"error": "錯誤",
|
|
196
198
|
"errors": "錯誤",
|
|
197
199
|
"fallbackToDefaultLocale": "回到預設的語言",
|
|
200
|
+
"false": "假的",
|
|
198
201
|
"filter": "過濾器",
|
|
199
202
|
"filterWhere": "過濾{{label}}",
|
|
200
203
|
"filters": "過濾器",
|
|
@@ -250,6 +253,7 @@
|
|
|
250
253
|
"successfullyDuplicated": "成功複製{{label}}",
|
|
251
254
|
"thisLanguage": "中文 (繁體)",
|
|
252
255
|
"titleDeleted": "{{label}} \"{{title}}\"已被成功刪除。",
|
|
256
|
+
"true": "真實",
|
|
253
257
|
"unauthorized": "未經授權",
|
|
254
258
|
"unsavedChangesDuplicate": "您有還沒儲存的修改,確定要繼續複製嗎?",
|
|
255
259
|
"untitled": "無標題",
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
"alreadyActivated": "已经激活了",
|
|
7
7
|
"alreadyLoggedIn": "已经登入了",
|
|
8
8
|
"apiKey": "API密钥",
|
|
9
|
+
"authenticated": "已验证",
|
|
9
10
|
"backToLogin": "回到登录页面",
|
|
10
11
|
"beginCreateFirstUser": "首先,请创建您的第一个用户。",
|
|
11
12
|
"changePassword": "更改密码",
|
|
@@ -177,6 +178,7 @@
|
|
|
177
178
|
"deletedCountSuccessfully": "已成功删除 {{count}} {{label}}。",
|
|
178
179
|
"deletedSuccessfully": "已成功删除。",
|
|
179
180
|
"deleting": "删除中...",
|
|
181
|
+
"depth": "深度",
|
|
180
182
|
"descending": "降序",
|
|
181
183
|
"deselectAllRows": "取消选择所有行",
|
|
182
184
|
"document": "文件",
|
|
@@ -195,6 +197,7 @@
|
|
|
195
197
|
"error": "错误",
|
|
196
198
|
"errors": "错误",
|
|
197
199
|
"fallbackToDefaultLocale": "回退到默认语言环境",
|
|
200
|
+
"false": "假的",
|
|
198
201
|
"filter": "过滤器",
|
|
199
202
|
"filterWhere": "过滤{{label}}",
|
|
200
203
|
"filters": "过滤器",
|
|
@@ -250,6 +253,7 @@
|
|
|
250
253
|
"successfullyDuplicated": "成功复制{{label}}",
|
|
251
254
|
"thisLanguage": "中文 (简体)",
|
|
252
255
|
"titleDeleted": "{{label}} \"{{title}}\"已被成功删除。",
|
|
256
|
+
"true": "真实",
|
|
253
257
|
"unauthorized": "未经授权",
|
|
254
258
|
"unsavedChangesDuplicate": "您有未保存的修改。您确定要继续重复吗?",
|
|
255
259
|
"untitled": "无标题",
|
|
@@ -373,4 +377,4 @@
|
|
|
373
377
|
"viewingVersions": "正在查看{{entityLabel}} {{documentTitle}}的版本",
|
|
374
378
|
"viewingVersionsGlobal": "正在查看全局{{entityLabel}}的版本"
|
|
375
379
|
}
|
|
376
|
-
}
|
|
380
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
2
|
import sharp from 'sharp';
|
|
3
|
-
export declare const percentToPixel: (value:
|
|
3
|
+
export declare const percentToPixel: (value: string, dimension: number) => number;
|
|
4
4
|
export default function cropImage({ cropData, dimensions, file }: {
|
|
5
5
|
cropData: any;
|
|
6
6
|
dimensions: any;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cropImage.d.ts","sourceRoot":"","sources":["../../src/uploads/cropImage.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,eAAO,MAAM,cAAc,
|
|
1
|
+
{"version":3,"file":"cropImage.d.ts","sourceRoot":"","sources":["../../src/uploads/cropImage.ts"],"names":[],"mappings":";AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAEzB,eAAO,MAAM,cAAc,UAAW,MAAM,aAAa,MAAM,KAAG,MAGjE,CAAA;AAED,wBAA8B,SAAS,CAAC,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAE;;;;CAAA;;;GAoBrE"}
|
|
@@ -23,6 +23,7 @@ function _interop_require_default(obj) {
|
|
|
23
23
|
};
|
|
24
24
|
}
|
|
25
25
|
const percentToPixel = (value, dimension)=>{
|
|
26
|
+
if (!value) return 0;
|
|
26
27
|
return Math.floor(parseFloat(value) / 100 * dimension);
|
|
27
28
|
};
|
|
28
29
|
async function cropImage({ cropData, dimensions, file }) {
|
|
@@ -44,4 +45,4 @@ async function cropImage({ cropData, dimensions, file }) {
|
|
|
44
45
|
}
|
|
45
46
|
}
|
|
46
47
|
|
|
47
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
48
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91cGxvYWRzL2Nyb3BJbWFnZS50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgc2hhcnAgZnJvbSAnc2hhcnAnXG5cbmV4cG9ydCBjb25zdCBwZXJjZW50VG9QaXhlbCA9ICh2YWx1ZTogc3RyaW5nLCBkaW1lbnNpb246IG51bWJlcik6IG51bWJlciA9PiB7XG4gIGlmICghdmFsdWUpIHJldHVybiAwXG4gIHJldHVybiBNYXRoLmZsb29yKChwYXJzZUZsb2F0KHZhbHVlKSAvIDEwMCkgKiBkaW1lbnNpb24pXG59XG5cbmV4cG9ydCBkZWZhdWx0IGFzeW5jIGZ1bmN0aW9uIGNyb3BJbWFnZSh7IGNyb3BEYXRhLCBkaW1lbnNpb25zLCBmaWxlIH0pIHtcbiAgdHJ5IHtcbiAgICBjb25zdCB7IGhlaWdodCwgd2lkdGgsIHgsIHkgfSA9IGNyb3BEYXRhXG5cbiAgICBjb25zdCBmb3JtYXR0ZWRDcm9wRGF0YTogc2hhcnAuUmVnaW9uID0ge1xuICAgICAgaGVpZ2h0OiBwZXJjZW50VG9QaXhlbChoZWlnaHQsIGRpbWVuc2lvbnMuaGVpZ2h0KSxcbiAgICAgIGxlZnQ6IHBlcmNlbnRUb1BpeGVsKHgsIGRpbWVuc2lvbnMud2lkdGgpLFxuICAgICAgdG9wOiBwZXJjZW50VG9QaXhlbCh5LCBkaW1lbnNpb25zLmhlaWdodCksXG4gICAgICB3aWR0aDogcGVyY2VudFRvUGl4ZWwod2lkdGgsIGRpbWVuc2lvbnMud2lkdGgpLFxuICAgIH1cblxuICAgIGNvbnN0IGNyb3BwZWQgPSBzaGFycChmaWxlLnRlbXBGaWxlUGF0aCB8fCBmaWxlLmRhdGEpLmV4dHJhY3QoZm9ybWF0dGVkQ3JvcERhdGEpXG5cbiAgICByZXR1cm4gYXdhaXQgY3JvcHBlZC50b0J1ZmZlcih7XG4gICAgICByZXNvbHZlV2l0aE9iamVjdDogdHJ1ZSxcbiAgICB9KVxuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGNvbnNvbGUuZXJyb3IoYEVycm9yIGNyb3BwaW5nIGltYWdlOmAsIGVycm9yKVxuICAgIHRocm93IGVycm9yXG4gIH1cbn1cbiJdLCJuYW1lcyI6WyJjcm9wSW1hZ2UiLCJwZXJjZW50VG9QaXhlbCIsInZhbHVlIiwiZGltZW5zaW9uIiwiTWF0aCIsImZsb29yIiwicGFyc2VGbG9hdCIsImNyb3BEYXRhIiwiZGltZW5zaW9ucyIsImZpbGUiLCJoZWlnaHQiLCJ3aWR0aCIsIngiLCJ5IiwiZm9ybWF0dGVkQ3JvcERhdGEiLCJsZWZ0IiwidG9wIiwiY3JvcHBlZCIsInNoYXJwIiwidGVtcEZpbGVQYXRoIiwiZGF0YSIsImV4dHJhY3QiLCJ0b0J1ZmZlciIsInJlc29sdmVXaXRoT2JqZWN0IiwiZXJyb3IiLCJjb25zb2xlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztJQU9BLE9Bb0JDO2VBcEI2QkE7O0lBTGpCQyxjQUFjO2VBQWRBOzs7OERBRks7Ozs7OztBQUVYLE1BQU1BLGlCQUFpQixDQUFDQyxPQUFlQztJQUM1QyxJQUFJLENBQUNELE9BQU8sT0FBTztJQUNuQixPQUFPRSxLQUFLQyxLQUFLLENBQUMsQUFBQ0MsV0FBV0osU0FBUyxNQUFPQztBQUNoRDtBQUVlLGVBQWVILFVBQVUsRUFBRU8sUUFBUSxFQUFFQyxVQUFVLEVBQUVDLElBQUksRUFBRTtJQUNwRSxJQUFJO1FBQ0YsTUFBTSxFQUFFQyxNQUFNLEVBQUVDLEtBQUssRUFBRUMsQ0FBQyxFQUFFQyxDQUFDLEVBQUUsR0FBR047UUFFaEMsTUFBTU8sb0JBQWtDO1lBQ3RDSixRQUFRVCxlQUFlUyxRQUFRRixXQUFXRSxNQUFNO1lBQ2hESyxNQUFNZCxlQUFlVyxHQUFHSixXQUFXRyxLQUFLO1lBQ3hDSyxLQUFLZixlQUFlWSxHQUFHTCxXQUFXRSxNQUFNO1lBQ3hDQyxPQUFPVixlQUFlVSxPQUFPSCxXQUFXRyxLQUFLO1FBQy9DO1FBRUEsTUFBTU0sVUFBVUMsSUFBQUEsY0FBSyxFQUFDVCxLQUFLVSxZQUFZLElBQUlWLEtBQUtXLElBQUksRUFBRUMsT0FBTyxDQUFDUDtRQUU5RCxPQUFPLE1BQU1HLFFBQVFLLFFBQVEsQ0FBQztZQUM1QkMsbUJBQW1CO1FBQ3JCO0lBQ0YsRUFBRSxPQUFPQyxPQUFPO1FBQ2RDLFFBQVFELEtBQUssQ0FBQyxDQUFDLHFCQUFxQixDQUFDLEVBQUVBO1FBQ3ZDLE1BQU1BO0lBQ1I7QUFDRiJ9
|
|
@@ -6,6 +6,8 @@ type Args<T> = {
|
|
|
6
6
|
collection: Collection;
|
|
7
7
|
config: SanitizedConfig;
|
|
8
8
|
data: T;
|
|
9
|
+
operation: 'create' | 'update';
|
|
10
|
+
originalDoc?: T;
|
|
9
11
|
overwriteExistingFiles?: boolean;
|
|
10
12
|
req: PayloadRequest;
|
|
11
13
|
throwOnMissingFile?: boolean;
|
|
@@ -14,6 +16,6 @@ type Result<T> = Promise<{
|
|
|
14
16
|
data: T;
|
|
15
17
|
files: FileToSave[];
|
|
16
18
|
}>;
|
|
17
|
-
export declare const generateFileData: <T>({ collection: { config: collectionConfig }, config, data, overwriteExistingFiles, req, throwOnMissingFile, }: Args<T>) => Result<T>;
|
|
19
|
+
export declare const generateFileData: <T>({ collection: { config: collectionConfig }, config, data, operation, originalDoc, overwriteExistingFiles, req, throwOnMissingFile, }: Args<T>) => Result<T>;
|
|
18
20
|
export {};
|
|
19
21
|
//# sourceMappingURL=generateFileData.d.ts.map
|
|
@@ -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,
|
|
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,EAAgC,MAAM,SAAS,CAAA;AAajF,KAAK,IAAI,CAAC,CAAC,IAAI;IACb,UAAU,EAAE,UAAU,CAAA;IACtB,MAAM,EAAE,eAAe,CAAA;IACvB,IAAI,EAAE,CAAC,CAAA;IACP,SAAS,EAAE,QAAQ,GAAG,QAAQ,CAAA;IAC9B,WAAW,CAAC,EAAE,CAAC,CAAA;IACf,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,iKAkP5B,CAAA"}
|
|
@@ -29,7 +29,7 @@ function _interop_require_default(obj) {
|
|
|
29
29
|
default: obj
|
|
30
30
|
};
|
|
31
31
|
}
|
|
32
|
-
const generateFileData = async ({ collection: { config: collectionConfig }, config, data, overwriteExistingFiles, req, throwOnMissingFile })=>{
|
|
32
|
+
const generateFileData = async ({ collection: { config: collectionConfig }, config, data, operation, originalDoc, overwriteExistingFiles, req, throwOnMissingFile })=>{
|
|
33
33
|
if (!collectionConfig.upload) {
|
|
34
34
|
return {
|
|
35
35
|
data,
|
|
@@ -37,7 +37,12 @@ const generateFileData = async ({ collection: { config: collectionConfig }, conf
|
|
|
37
37
|
};
|
|
38
38
|
}
|
|
39
39
|
let file = req.files?.file || undefined;
|
|
40
|
-
const
|
|
40
|
+
const uploadEdits = parseUploadEditsFromReqOrIncomingData({
|
|
41
|
+
data,
|
|
42
|
+
operation,
|
|
43
|
+
originalDoc,
|
|
44
|
+
req
|
|
45
|
+
});
|
|
41
46
|
const { disableLocalStorage, formatOptions, imageSizes, resizeOptions, staticDir, trimOptions } = collectionConfig.upload;
|
|
42
47
|
let staticPath = staticDir;
|
|
43
48
|
if (staticDir.indexOf('/') !== 0) {
|
|
@@ -199,7 +204,7 @@ const generateFileData = async ({ collection: { config: collectionConfig }, conf
|
|
|
199
204
|
}
|
|
200
205
|
if (Array.isArray(imageSizes) && fileSupportsResize) {
|
|
201
206
|
req.payloadUploadSizes = {};
|
|
202
|
-
const { sizeData, sizesToSave } = await (0, _imageResizer.default)({
|
|
207
|
+
const { focalPoint, sizeData, sizesToSave } = await (0, _imageResizer.default)({
|
|
203
208
|
config: collectionConfig,
|
|
204
209
|
dimensions: !cropData ? dimensions : {
|
|
205
210
|
...dimensions,
|
|
@@ -210,13 +215,19 @@ const generateFileData = async ({ collection: { config: collectionConfig }, conf
|
|
|
210
215
|
mimeType: fileData.mimeType,
|
|
211
216
|
req,
|
|
212
217
|
savedFilename: fsSafeName || file.name,
|
|
213
|
-
staticPath
|
|
218
|
+
staticPath,
|
|
219
|
+
uploadEdits
|
|
214
220
|
});
|
|
215
221
|
fileData.sizes = sizeData;
|
|
222
|
+
fileData.focalX = focalPoint?.x;
|
|
223
|
+
fileData.focalY = focalPoint?.y;
|
|
216
224
|
filesToSave.push(...sizesToSave);
|
|
217
225
|
}
|
|
218
226
|
} catch (err) {
|
|
219
|
-
|
|
227
|
+
req.payload.logger.error({
|
|
228
|
+
err,
|
|
229
|
+
msg: 'Error uploading file'
|
|
230
|
+
});
|
|
220
231
|
throw new _errors.FileUploadError(req.t);
|
|
221
232
|
}
|
|
222
233
|
newData = {
|
|
@@ -228,5 +239,35 @@ const generateFileData = async ({ collection: { config: collectionConfig }, conf
|
|
|
228
239
|
files: filesToSave
|
|
229
240
|
};
|
|
230
241
|
};
|
|
242
|
+
/**
|
|
243
|
+
* Parse upload edits from req or incoming data
|
|
244
|
+
*/ function parseUploadEditsFromReqOrIncomingData(args) {
|
|
245
|
+
const { data, operation, originalDoc, req } = args;
|
|
246
|
+
// Get intended focal point change from query string or incoming data
|
|
247
|
+
const { uploadEdits = {} } = req.query || {};
|
|
248
|
+
if (uploadEdits.focalPoint) return uploadEdits;
|
|
249
|
+
const incomingData = data;
|
|
250
|
+
const origDoc = originalDoc;
|
|
251
|
+
// If no change in focal point, return undefined.
|
|
252
|
+
// This prevents a refocal operation triggered from admin, because it always sends the focal point.
|
|
253
|
+
if (origDoc && incomingData.focalX === origDoc.focalX && incomingData.focalY === origDoc.focalY) {
|
|
254
|
+
return undefined;
|
|
255
|
+
}
|
|
256
|
+
if (incomingData.focalX && incomingData.focalY) {
|
|
257
|
+
uploadEdits.focalPoint = {
|
|
258
|
+
x: incomingData.focalX,
|
|
259
|
+
y: incomingData.focalY
|
|
260
|
+
};
|
|
261
|
+
return uploadEdits;
|
|
262
|
+
}
|
|
263
|
+
// If no focal point is set, default to center
|
|
264
|
+
if (operation === 'create') {
|
|
265
|
+
uploadEdits.focalPoint = {
|
|
266
|
+
x: 50,
|
|
267
|
+
y: 50
|
|
268
|
+
};
|
|
269
|
+
}
|
|
270
|
+
return uploadEdits;
|
|
271
|
+
}
|
|
231
272
|
|
|
232
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91cGxvYWRzL2dlbmVyYXRlRmlsZURhdGEudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBVcGxvYWRlZEZpbGUgfSBmcm9tICdleHByZXNzLWZpbGV1cGxvYWQnXG5pbXBvcnQgdHlwZSB7IE91dHB1dEluZm8sIFNoYXJwLCBTaGFycE9wdGlvbnMgfSBmcm9tICdzaGFycCdcblxuaW1wb3J0IHsgZnJvbUJ1ZmZlciB9IGZyb20gJ2ZpbGUtdHlwZSdcbmltcG9ydCBmcyBmcm9tICdmcydcbmltcG9ydCBta2RpcnAgZnJvbSAnbWtkaXJwJ1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCdcbmltcG9ydCBzYW5pdGl6ZSBmcm9tICdzYW5pdGl6ZS1maWxlbmFtZSdcbmltcG9ydCBzaGFycCBmcm9tICdzaGFycCdcblxuaW1wb3J0IHR5cGUgeyBDb2xsZWN0aW9uIH0gZnJvbSAnLi4vY29sbGVjdGlvbnMvY29uZmlnL3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBTYW5pdGl6ZWRDb25maWcgfSBmcm9tICcuLi9jb25maWcvdHlwZXMnXG5pbXBvcnQgdHlwZSB7IFBheWxvYWRSZXF1ZXN0IH0gZnJvbSAnLi4vZXhwcmVzcy90eXBlcydcbmltcG9ydCB0eXBlIHsgRmlsZURhdGEsIEZpbGVUb1NhdmUsIFByb2JlZEltYWdlU2l6ZSB9IGZyb20gJy4vdHlwZXMnXG5cbmltcG9ydCB7IEZpbGVVcGxvYWRFcnJvciwgTWlzc2luZ0ZpbGUgfSBmcm9tICcuLi9lcnJvcnMnXG5pbXBvcnQgRmlsZVJldHJpZXZhbEVycm9yIGZyb20gJy4uL2Vycm9ycy9GaWxlUmV0cmlldmFsRXJyb3InXG5pbXBvcnQgY2FuUmVzaXplSW1hZ2UgZnJvbSAnLi9jYW5SZXNpemVJbWFnZSdcbmltcG9ydCBjcm9wSW1hZ2UgZnJvbSAnLi9jcm9wSW1hZ2UnXG5pbXBvcnQgeyBnZXRFeHRlcm5hbEZpbGUgfSBmcm9tICcuL2dldEV4dGVybmFsRmlsZSdcbmltcG9ydCBnZXRGaWxlQnlQYXRoIGZyb20gJy4vZ2V0RmlsZUJ5UGF0aCdcbmltcG9ydCBnZXRJbWFnZVNpemUgZnJvbSAnLi9nZXRJbWFnZVNpemUnXG5pbXBvcnQgZ2V0U2FmZUZpbGVOYW1lIGZyb20gJy4vZ2V0U2FmZUZpbGVuYW1lJ1xuaW1wb3J0IHJlc2l6ZUFuZFRyYW5zZm9ybUltYWdlU2l6ZXMgZnJvbSAnLi9pbWFnZVJlc2l6ZXInXG5pbXBvcnQgaXNJbWFnZSBmcm9tICcuL2lzSW1hZ2UnXG5cbnR5cGUgQXJnczxUPiA9IHtcbiAgY29sbGVjdGlvbjogQ29sbGVjdGlvblxuICBjb25maWc6IFNhbml0aXplZENvbmZpZ1xuICBkYXRhOiBUXG4gIG92ZXJ3cml0ZUV4aXN0aW5nRmlsZXM/OiBib29sZWFuXG4gIHJlcTogUGF5bG9hZFJlcXVlc3RcbiAgdGhyb3dPbk1pc3NpbmdGaWxlPzogYm9vbGVhblxufVxuXG50eXBlIFJlc3VsdDxUPiA9IFByb21pc2U8e1xuICBkYXRhOiBUXG4gIGZpbGVzOiBGaWxlVG9TYXZlW11cbn0+XG5cbmV4cG9ydCBjb25zdCBnZW5lcmF0ZUZpbGVEYXRhID0gYXN5bmMgPFQ+KHtcbiAgY29sbGVjdGlvbjogeyBjb25maWc6IGNvbGxlY3Rpb25Db25maWcgfSxcbiAgY29uZmlnLFxuICBkYXRhLFxuICBvdmVyd3JpdGVFeGlzdGluZ0ZpbGVzLFxuICByZXEsXG4gIHRocm93T25NaXNzaW5nRmlsZSxcbn06IEFyZ3M8VD4pOiBSZXN1bHQ8VD4gPT4ge1xuICBpZiAoIWNvbGxlY3Rpb25Db25maWcudXBsb2FkKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGRhdGEsXG4gICAgICBmaWxlczogW10sXG4gICAgfVxuICB9XG5cbiAgbGV0IGZpbGUgPSByZXEuZmlsZXM/LmZpbGUgfHwgdW5kZWZpbmVkXG4gIGNvbnN0IHsgdXBsb2FkRWRpdHMgfSA9IHJlcS5xdWVyeSB8fCB7fVxuXG4gIGNvbnN0IHsgZGlzYWJsZUxvY2FsU3RvcmFnZSwgZm9ybWF0T3B0aW9ucywgaW1hZ2VTaXplcywgcmVzaXplT3B0aW9ucywgc3RhdGljRGlyLCB0cmltT3B0aW9ucyB9ID1cbiAgICBjb2xsZWN0aW9uQ29uZmlnLnVwbG9hZFxuXG4gIGxldCBzdGF0aWNQYXRoID0gc3RhdGljRGlyXG4gIGlmIChzdGF0aWNEaXIuaW5kZXhPZignLycpICE9PSAwKSB7XG4gICAgc3RhdGljUGF0aCA9IHBhdGgucmVzb2x2ZShjb25maWcucGF0aHMuY29uZmlnRGlyLCBzdGF0aWNEaXIpXG4gIH1cblxuICBpZiAoIWZpbGUgJiYgdXBsb2FkRWRpdHMgJiYgZGF0YSkge1xuICAgIGNvbnN0IHsgZmlsZW5hbWUsIHVybCB9ID0gZGF0YSBhcyBGaWxlRGF0YVxuXG4gICAgdHJ5IHtcbiAgICAgIGlmICh1cmwgJiYgdXJsLnN0YXJ0c1dpdGgoJy8nKSAmJiAhZGlzYWJsZUxvY2FsU3RvcmFnZSkge1xuICAgICAgICBjb25zdCBmaWxlUGF0aCA9IGAke3N0YXRpY1BhdGh9LyR7ZmlsZW5hbWV9YFxuICAgICAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGdldEZpbGVCeVBhdGgoZmlsZVBhdGgpXG4gICAgICAgIGZpbGUgPSByZXNwb25zZSBhcyBVcGxvYWRlZEZpbGVcbiAgICAgICAgb3ZlcndyaXRlRXhpc3RpbmdGaWxlcyA9IHRydWVcbiAgICAgIH0gZWxzZSBpZiAoZmlsZW5hbWUgJiYgdXJsKSB7XG4gICAgICAgIGZpbGUgPSAoYXdhaXQgZ2V0RXh0ZXJuYWxGaWxlKHtcbiAgICAgICAgICBkYXRhOiBkYXRhIGFzIEZpbGVEYXRhLFxuICAgICAgICAgIHJlcSxcbiAgICAgICAgICB1cGxvYWRDb25maWc6IGNvbGxlY3Rpb25Db25maWcudXBsb2FkLFxuICAgICAgICB9KSkgYXMgVXBsb2FkZWRGaWxlXG4gICAgICAgIG92ZXJ3cml0ZUV4aXN0aW5nRmlsZXMgPSB0cnVlXG4gICAgICB9XG4gICAgfSBjYXRjaCAoZXJyOiB1bmtub3duKSB7XG4gICAgICBpZiAoZXJyIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgICAgdGhyb3cgbmV3IEZpbGVSZXRyaWV2YWxFcnJvcihyZXEudCwgZXJyLm1lc3NhZ2UpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgaWYgKCFmaWxlKSB7XG4gICAgaWYgKHRocm93T25NaXNzaW5nRmlsZSkgdGhyb3cgbmV3IE1pc3NpbmdGaWxlKHJlcS50KVxuXG4gICAgcmV0dXJuIHtcbiAgICAgIGRhdGEsXG4gICAgICBmaWxlczogW10sXG4gICAgfVxuICB9XG5cbiAgaWYgKCFkaXNhYmxlTG9jYWxTdG9yYWdlKSB7XG4gICAgbWtkaXJwLnN5bmMoc3RhdGljUGF0aClcbiAgfVxuXG4gIGxldCBuZXdEYXRhID0gZGF0YVxuICBjb25zdCBmaWxlc1RvU2F2ZTogRmlsZVRvU2F2ZVtdID0gW11cbiAgY29uc3QgZmlsZURhdGE6IFBhcnRpYWw8RmlsZURhdGE+ID0ge31cbiAgY29uc3QgZmlsZUlzQW5pbWF0ZWQgPSBmaWxlLm1pbWV0eXBlID09PSAnaW1hZ2UvZ2lmJyB8fCBmaWxlLm1pbWV0eXBlID09PSAnaW1hZ2Uvd2VicCdcbiAgY29uc3QgY3JvcERhdGEgPVxuICAgIHR5cGVvZiB1cGxvYWRFZGl0cyA9PT0gJ29iamVjdCcgJiYgJ2Nyb3AnIGluIHVwbG9hZEVkaXRzID8gdXBsb2FkRWRpdHMuY3JvcCA6IHVuZGVmaW5lZFxuXG4gIHRyeSB7XG4gICAgY29uc3QgZmlsZVN1cHBvcnRzUmVzaXplID0gY2FuUmVzaXplSW1hZ2UoZmlsZS5taW1ldHlwZSlcbiAgICBsZXQgZnNTYWZlTmFtZTogc3RyaW5nXG4gICAgbGV0IHNoYXJwRmlsZTogU2hhcnAgfCB1bmRlZmluZWRcbiAgICBsZXQgZGltZW5zaW9uczogUHJvYmVkSW1hZ2VTaXplIHwgdW5kZWZpbmVkXG4gICAgbGV0IGZpbGVCdWZmZXI6IHsgZGF0YTogQnVmZmVyOyBpbmZvOiBPdXRwdXRJbmZvIH1cbiAgICBsZXQgZXh0XG4gICAgbGV0IG1pbWU6IHN0cmluZ1xuICAgIGNvbnN0IGZpbGVIYXNBZGp1c3RtZW50cyA9XG4gICAgICBmaWxlU3VwcG9ydHNSZXNpemUgJiZcbiAgICAgIEJvb2xlYW4ocmVzaXplT3B0aW9ucyB8fCBmb3JtYXRPcHRpb25zIHx8IHRyaW1PcHRpb25zIHx8IGZpbGUudGVtcEZpbGVQYXRoKVxuXG4gICAgY29uc3Qgc2hhcnBPcHRpb25zOiBTaGFycE9wdGlvbnMgPSB7fVxuXG4gICAgaWYgKGZpbGVJc0FuaW1hdGVkKSBzaGFycE9wdGlvbnMuYW5pbWF0ZWQgPSB0cnVlXG5cbiAgICBpZiAoZmlsZUhhc0FkanVzdG1lbnRzKSB7XG4gICAgICBpZiAoZmlsZS50ZW1wRmlsZVBhdGgpIHtcbiAgICAgICAgc2hhcnBGaWxlID0gc2hhcnAoZmlsZS50ZW1wRmlsZVBhdGgsIHNoYXJwT3B0aW9ucykucm90YXRlKCkgLy8gcGFzcyByb3RhdGUoKSB0byBhdXRvLXJvdGF0ZSBiYXNlZCBvbiBFWElGIGRhdGEuIGh0dHBzOi8vZ2l0aHViLmNvbS9wYXlsb2FkY21zL3BheWxvYWQvcHVsbC8zMDgxXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzaGFycEZpbGUgPSBzaGFycChmaWxlLmRhdGEsIHNoYXJwT3B0aW9ucykucm90YXRlKCkgLy8gcGFzcyByb3RhdGUoKSB0byBhdXRvLXJvdGF0ZSBiYXNlZCBvbiBFWElGIGRhdGEuIGh0dHBzOi8vZ2l0aHViLmNvbS9wYXlsb2FkY21zL3BheWxvYWQvcHVsbC8zMDgxXG4gICAgICB9XG5cbiAgICAgIGlmIChyZXNpemVPcHRpb25zKSB7XG4gICAgICAgIHNoYXJwRmlsZSA9IHNoYXJwRmlsZS5yZXNpemUocmVzaXplT3B0aW9ucylcbiAgICAgIH1cbiAgICAgIGlmIChmb3JtYXRPcHRpb25zKSB7XG4gICAgICAgIHNoYXJwRmlsZSA9IHNoYXJwRmlsZS50b0Zvcm1hdChmb3JtYXRPcHRpb25zLmZvcm1hdCwgZm9ybWF0T3B0aW9ucy5vcHRpb25zKVxuICAgICAgfVxuICAgICAgaWYgKHRyaW1PcHRpb25zKSB7XG4gICAgICAgIHNoYXJwRmlsZSA9IHNoYXJwRmlsZS50cmltKHRyaW1PcHRpb25zKVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChmaWxlU3VwcG9ydHNSZXNpemUgfHwgaXNJbWFnZShmaWxlLm1pbWV0eXBlKSkge1xuICAgICAgZGltZW5zaW9ucyA9IGF3YWl0IGdldEltYWdlU2l6ZShmaWxlKVxuICAgICAgZmlsZURhdGEud2lkdGggPSBkaW1lbnNpb25zLndpZHRoXG4gICAgICBmaWxlRGF0YS5oZWlnaHQgPSBkaW1lbnNpb25zLmhlaWdodFxuICAgIH1cblxuICAgIGlmIChzaGFycEZpbGUpIHtcbiAgICAgIGNvbnN0IG1ldGFkYXRhID0gYXdhaXQgc2hhcnBGaWxlLm1ldGFkYXRhKClcbiAgICAgIGZpbGVCdWZmZXIgPSBhd2FpdCBzaGFycEZpbGUudG9CdWZmZXIoeyByZXNvbHZlV2l0aE9iamVjdDogdHJ1ZSB9KVxuICAgICAgOyh7IGV4dCwgbWltZSB9ID0gYXdhaXQgZnJvbUJ1ZmZlcihmaWxlQnVmZmVyLmRhdGEpKSAvLyBUaGlzIGlzIGdldHRpbmcgYW4gaW5jb3JyZWN0IGdpZiBoZWlnaHQgYmFjay5cbiAgICAgIGZpbGVEYXRhLndpZHRoID0gZmlsZUJ1ZmZlci5pbmZvLndpZHRoXG4gICAgICBmaWxlRGF0YS5oZWlnaHQgPSBmaWxlQnVmZmVyLmluZm8uaGVpZ2h0XG4gICAgICBmaWxlRGF0YS5maWxlc2l6ZSA9IGZpbGVCdWZmZXIuaW5mby5zaXplXG5cbiAgICAgIC8vIEFuaW1hdGVkIEdJRnMgKyBXZWJQIGFnZ3JlZ2F0ZSB0aGUgaGVpZ2h0IGZyb20gZXZlcnkgZnJhbWUsIHNvIHdlIG5lZWQgdG8gdXNlIGRpdmlkZSBieSBudW1iZXIgb2YgcGFnZXNcbiAgICAgIGlmIChtZXRhZGF0YS5wYWdlcykge1xuICAgICAgICBmaWxlRGF0YS5oZWlnaHQgPSBmaWxlQnVmZmVyLmluZm8uaGVpZ2h0IC8gbWV0YWRhdGEucGFnZXNcbiAgICAgICAgZmlsZURhdGEuZmlsZXNpemUgPSBmaWxlQnVmZmVyLmRhdGEubGVuZ3RoXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIG1pbWUgPSBmaWxlLm1pbWV0eXBlXG4gICAgICBmaWxlRGF0YS5maWxlc2l6ZSA9IGZpbGUuc2l6ZVxuXG4gICAgICBpZiAoZmlsZS5uYW1lLmluY2x1ZGVzKCcuJykpIHtcbiAgICAgICAgZXh0ID0gZmlsZS5uYW1lLnNwbGl0KCcuJykucG9wKClcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGV4dCA9ICcnXG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gQWR1c3QgU1ZHIG1pbWUgdHlwZS4gZnJvbUJ1ZmZlciBtb2RpZmllcyBpdC5cbiAgICBpZiAobWltZSA9PT0gJ2FwcGxpY2F0aW9uL3htbCcgJiYgZXh0ID09PSAnc3ZnJykgbWltZSA9ICdpbWFnZS9zdmcreG1sJ1xuICAgIGZpbGVEYXRhLm1pbWVUeXBlID0gbWltZVxuXG4gICAgY29uc3QgYmFzZUZpbGVuYW1lID0gc2FuaXRpemUoZmlsZS5uYW1lLnN1YnN0cmluZygwLCBmaWxlLm5hbWUubGFzdEluZGV4T2YoJy4nKSkgfHwgZmlsZS5uYW1lKVxuICAgIGZzU2FmZU5hbWUgPSBgJHtiYXNlRmlsZW5hbWV9JHtleHQgPyBgLiR7ZXh0fWAgOiAnJ31gXG5cbiAgICBpZiAoIW92ZXJ3cml0ZUV4aXN0aW5nRmlsZXMpIHtcbiAgICAgIGZzU2FmZU5hbWUgPSBhd2FpdCBnZXRTYWZlRmlsZU5hbWUoe1xuICAgICAgICBjb2xsZWN0aW9uU2x1ZzogY29sbGVjdGlvbkNvbmZpZy5zbHVnLFxuICAgICAgICBkZXNpcmVkRmlsZW5hbWU6IGZzU2FmZU5hbWUsXG4gICAgICAgIHJlcSxcbiAgICAgICAgc3RhdGljUGF0aCxcbiAgICAgIH0pXG4gICAgfVxuXG4gICAgZmlsZURhdGEuZmlsZW5hbWUgPSBmc1NhZmVOYW1lXG4gICAgbGV0IGZpbGVGb3JSZXNpemUgPSBmaWxlXG5cbiAgICBpZiAoY3JvcERhdGEpIHtcbiAgICAgIGNvbnN0IHsgZGF0YTogY3JvcHBlZEltYWdlLCBpbmZvIH0gPSBhd2FpdCBjcm9wSW1hZ2UoeyBjcm9wRGF0YSwgZGltZW5zaW9ucywgZmlsZSB9KVxuXG4gICAgICBmaWxlc1RvU2F2ZS5wdXNoKHtcbiAgICAgICAgYnVmZmVyOiBjcm9wcGVkSW1hZ2UsXG4gICAgICAgIHBhdGg6IGAke3N0YXRpY1BhdGh9LyR7ZnNTYWZlTmFtZX1gLFxuICAgICAgfSlcblxuICAgICAgZmlsZUZvclJlc2l6ZSA9IHtcbiAgICAgICAgLi4uZmlsZSxcbiAgICAgICAgZGF0YTogY3JvcHBlZEltYWdlLFxuICAgICAgICBzaXplOiBpbmZvLnNpemUsXG4gICAgICB9XG4gICAgICBmaWxlRGF0YS53aWR0aCA9IGluZm8ud2lkdGhcbiAgICAgIGZpbGVEYXRhLmhlaWdodCA9IGluZm8uaGVpZ2h0XG4gICAgICBmaWxlRGF0YS5maWxlc2l6ZSA9IGluZm8uc2l6ZVxuXG4gICAgICBpZiAoZmlsZS50ZW1wRmlsZVBhdGgpIHtcbiAgICAgICAgYXdhaXQgZnMucHJvbWlzZXMud3JpdGVGaWxlKGZpbGUudGVtcEZpbGVQYXRoLCBjcm9wcGVkSW1hZ2UpIC8vIHdyaXRlIGZpbGVCdWZmZXIgdG8gdGhlIHRlbXAgcGF0aFxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcmVxLmZpbGVzLmZpbGUgPSBmaWxlRm9yUmVzaXplXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGZpbGVzVG9TYXZlLnB1c2goe1xuICAgICAgICBidWZmZXI6IGZpbGVCdWZmZXI/LmRhdGEgfHwgZmlsZS5kYXRhLFxuICAgICAgICBwYXRoOiBgJHtzdGF0aWNQYXRofS8ke2ZzU2FmZU5hbWV9YCxcbiAgICAgIH0pXG5cbiAgICAgIC8vIElmIHVzaW5nIHRlbXAgZmlsZXMgYW5kIHRoZSBpbWFnZSBpcyBiZWluZyByZXNpemVkLCB3cml0ZSB0aGUgZmlsZSB0byB0aGUgdGVtcCBwYXRoXG4gICAgICBpZiAoZmlsZUJ1ZmZlcj8uZGF0YSB8fCBmaWxlLmRhdGEubGVuZ3RoID4gMCkge1xuICAgICAgICBpZiAoZmlsZS50ZW1wRmlsZVBhdGgpIHtcbiAgICAgICAgICBhd2FpdCBmcy5wcm9taXNlcy53cml0ZUZpbGUoZmlsZS50ZW1wRmlsZVBhdGgsIGZpbGVCdWZmZXI/LmRhdGEgfHwgZmlsZS5kYXRhKSAvLyB3cml0ZSBmaWxlQnVmZmVyIHRvIHRoZSB0ZW1wIHBhdGhcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAvLyBBc3NpZ24gdGhlIF9wb3NzaWJseSBtb2RpZmllZF8gZmlsZSB0byB0aGUgcmVxdWVzdCBvYmplY3RcbiAgICAgICAgICByZXEuZmlsZXMuZmlsZSA9IHtcbiAgICAgICAgICAgIC4uLmZpbGUsXG4gICAgICAgICAgICBkYXRhOiBmaWxlQnVmZmVyPy5kYXRhIHx8IGZpbGUuZGF0YSxcbiAgICAgICAgICAgIHNpemU6IGZpbGVCdWZmZXI/LmluZm8uc2l6ZSxcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoQXJyYXkuaXNBcnJheShpbWFnZVNpemVzKSAmJiBmaWxlU3VwcG9ydHNSZXNpemUpIHtcbiAgICAgIHJlcS5wYXlsb2FkVXBsb2FkU2l6ZXMgPSB7fVxuICAgICAgY29uc3QgeyBzaXplRGF0YSwgc2l6ZXNUb1NhdmUgfSA9IGF3YWl0IHJlc2l6ZUFuZFRyYW5zZm9ybUltYWdlU2l6ZXMoe1xuICAgICAgICBjb25maWc6IGNvbGxlY3Rpb25Db25maWcsXG4gICAgICAgIGRpbWVuc2lvbnM6ICFjcm9wRGF0YVxuICAgICAgICAgID8gZGltZW5zaW9uc1xuICAgICAgICAgIDoge1xuICAgICAgICAgICAgICAuLi5kaW1lbnNpb25zLFxuICAgICAgICAgICAgICBoZWlnaHQ6IGZpbGVEYXRhLmhlaWdodCxcbiAgICAgICAgICAgICAgd2lkdGg6IGZpbGVEYXRhLndpZHRoLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgZmlsZTogZmlsZUZvclJlc2l6ZSxcbiAgICAgICAgbWltZVR5cGU6IGZpbGVEYXRhLm1pbWVUeXBlLFxuICAgICAgICByZXEsXG4gICAgICAgIHNhdmVkRmlsZW5hbWU6IGZzU2FmZU5hbWUgfHwgZmlsZS5uYW1lLFxuICAgICAgICBzdGF0aWNQYXRoLFxuICAgICAgfSlcblxuICAgICAgZmlsZURhdGEuc2l6ZXMgPSBzaXplRGF0YVxuICAgICAgZmlsZXNUb1NhdmUucHVzaCguLi5zaXplc1RvU2F2ZSlcbiAgICB9XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGNvbnNvbGUuZXJyb3IoZXJyKVxuICAgIHRocm93IG5ldyBGaWxlVXBsb2FkRXJyb3IocmVxLnQpXG4gIH1cblxuICBuZXdEYXRhID0ge1xuICAgIC4uLm5ld0RhdGEsXG4gICAgLi4uZmlsZURhdGEsXG4gIH1cblxuICByZXR1cm4ge1xuICAgIGRhdGE6IG5ld0RhdGEsXG4gICAgZmlsZXM6IGZpbGVzVG9TYXZlLFxuICB9XG59XG4iXSwibmFtZXMiOlsiZ2VuZXJhdGVGaWxlRGF0YSIsImNvbGxlY3Rpb24iLCJjb25maWciLCJjb2xsZWN0aW9uQ29uZmlnIiwiZGF0YSIsIm92ZXJ3cml0ZUV4aXN0aW5nRmlsZXMiLCJyZXEiLCJ0aHJvd09uTWlzc2luZ0ZpbGUiLCJ1cGxvYWQiLCJmaWxlcyIsImZpbGUiLCJ1bmRlZmluZWQiLCJ1cGxvYWRFZGl0cyIsInF1ZXJ5IiwiZGlzYWJsZUxvY2FsU3RvcmFnZSIsImZvcm1hdE9wdGlvbnMiLCJpbWFnZVNpemVzIiwicmVzaXplT3B0aW9ucyIsInN0YXRpY0RpciIsInRyaW1PcHRpb25zIiwic3RhdGljUGF0aCIsImluZGV4T2YiLCJwYXRoIiwicmVzb2x2ZSIsInBhdGhzIiwiY29uZmlnRGlyIiwiZmlsZW5hbWUiLCJ1cmwiLCJzdGFydHNXaXRoIiwiZmlsZVBhdGgiLCJyZXNwb25zZSIsImdldEZpbGVCeVBhdGgiLCJnZXRFeHRlcm5hbEZpbGUiLCJ1cGxvYWRDb25maWciLCJlcnIiLCJFcnJvciIsIkZpbGVSZXRyaWV2YWxFcnJvciIsInQiLCJtZXNzYWdlIiwiTWlzc2luZ0ZpbGUiLCJta2RpcnAiLCJzeW5jIiwibmV3RGF0YSIsImZpbGVzVG9TYXZlIiwiZmlsZURhdGEiLCJmaWxlSXNBbmltYXRlZCIsIm1pbWV0eXBlIiwiY3JvcERhdGEiLCJjcm9wIiwiZmlsZVN1cHBvcnRzUmVzaXplIiwiY2FuUmVzaXplSW1hZ2UiLCJmc1NhZmVOYW1lIiwic2hhcnBGaWxlIiwiZGltZW5zaW9ucyIsImZpbGVCdWZmZXIiLCJleHQiLCJtaW1lIiwiZmlsZUhhc0FkanVzdG1lbnRzIiwiQm9vbGVhbiIsInRlbXBGaWxlUGF0aCIsInNoYXJwT3B0aW9ucyIsImFuaW1hdGVkIiwic2hhcnAiLCJyb3RhdGUiLCJyZXNpemUiLCJ0b0Zvcm1hdCIsImZvcm1hdCIsIm9wdGlvbnMiLCJ0cmltIiwiaXNJbWFnZSIsImdldEltYWdlU2l6ZSIsIndpZHRoIiwiaGVpZ2h0IiwibWV0YWRhdGEiLCJ0b0J1ZmZlciIsInJlc29sdmVXaXRoT2JqZWN0IiwiZnJvbUJ1ZmZlciIsImluZm8iLCJmaWxlc2l6ZSIsInNpemUiLCJwYWdlcyIsImxlbmd0aCIsIm5hbWUiLCJpbmNsdWRlcyIsInNwbGl0IiwicG9wIiwibWltZVR5cGUiLCJiYXNlRmlsZW5hbWUiLCJzYW5pdGl6ZSIsInN1YnN0cmluZyIsImxhc3RJbmRleE9mIiwiZ2V0U2FmZUZpbGVOYW1lIiwiY29sbGVjdGlvblNsdWciLCJzbHVnIiwiZGVzaXJlZEZpbGVuYW1lIiwiZmlsZUZvclJlc2l6ZSIsImNyb3BwZWRJbWFnZSIsImNyb3BJbWFnZSIsInB1c2giLCJidWZmZXIiLCJmcyIsInByb21pc2VzIiwid3JpdGVGaWxlIiwiQXJyYXkiLCJpc0FycmF5IiwicGF5bG9hZFVwbG9hZFNpemVzIiwic2l6ZURhdGEiLCJzaXplc1RvU2F2ZSIsInJlc2l6ZUFuZFRyYW5zZm9ybUltYWdlU2l6ZXMiLCJzYXZlZEZpbGVuYW1lIiwic2l6ZXMiLCJjb25zb2xlIiwiZXJyb3IiLCJGaWxlVXBsb2FkRXJyb3IiXSwibWFwcGluZ3MiOiI7Ozs7K0JBd0NhQTs7O2VBQUFBOzs7MEJBckNjOzJEQUNaOytEQUNJ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
|
|
273
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91cGxvYWRzL2dlbmVyYXRlRmlsZURhdGEudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBVcGxvYWRlZEZpbGUgfSBmcm9tICdleHByZXNzLWZpbGV1cGxvYWQnXG5pbXBvcnQgdHlwZSB7IE91dHB1dEluZm8sIFNoYXJwLCBTaGFycE9wdGlvbnMgfSBmcm9tICdzaGFycCdcblxuaW1wb3J0IHsgZnJvbUJ1ZmZlciB9IGZyb20gJ2ZpbGUtdHlwZSdcbmltcG9ydCBmcyBmcm9tICdmcydcbmltcG9ydCBta2RpcnAgZnJvbSAnbWtkaXJwJ1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCdcbmltcG9ydCBzYW5pdGl6ZSBmcm9tICdzYW5pdGl6ZS1maWxlbmFtZSdcbmltcG9ydCBzaGFycCBmcm9tICdzaGFycCdcblxuaW1wb3J0IHR5cGUgeyBDb2xsZWN0aW9uIH0gZnJvbSAnLi4vY29sbGVjdGlvbnMvY29uZmlnL3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBTYW5pdGl6ZWRDb25maWcgfSBmcm9tICcuLi9jb25maWcvdHlwZXMnXG5pbXBvcnQgdHlwZSB7IFBheWxvYWRSZXF1ZXN0IH0gZnJvbSAnLi4vZXhwcmVzcy90eXBlcydcbmltcG9ydCB0eXBlIHsgRmlsZURhdGEsIEZpbGVUb1NhdmUsIFByb2JlZEltYWdlU2l6ZSwgVXBsb2FkRWRpdHMgfSBmcm9tICcuL3R5cGVzJ1xuXG5pbXBvcnQgeyBGaWxlVXBsb2FkRXJyb3IsIE1pc3NpbmdGaWxlIH0gZnJvbSAnLi4vZXJyb3JzJ1xuaW1wb3J0IEZpbGVSZXRyaWV2YWxFcnJvciBmcm9tICcuLi9lcnJvcnMvRmlsZVJldHJpZXZhbEVycm9yJ1xuaW1wb3J0IGNhblJlc2l6ZUltYWdlIGZyb20gJy4vY2FuUmVzaXplSW1hZ2UnXG5pbXBvcnQgY3JvcEltYWdlIGZyb20gJy4vY3JvcEltYWdlJ1xuaW1wb3J0IHsgZ2V0RXh0ZXJuYWxGaWxlIH0gZnJvbSAnLi9nZXRFeHRlcm5hbEZpbGUnXG5pbXBvcnQgZ2V0RmlsZUJ5UGF0aCBmcm9tICcuL2dldEZpbGVCeVBhdGgnXG5pbXBvcnQgZ2V0SW1hZ2VTaXplIGZyb20gJy4vZ2V0SW1hZ2VTaXplJ1xuaW1wb3J0IGdldFNhZmVGaWxlTmFtZSBmcm9tICcuL2dldFNhZmVGaWxlbmFtZSdcbmltcG9ydCByZXNpemVBbmRUcmFuc2Zvcm1JbWFnZVNpemVzIGZyb20gJy4vaW1hZ2VSZXNpemVyJ1xuaW1wb3J0IGlzSW1hZ2UgZnJvbSAnLi9pc0ltYWdlJ1xuXG50eXBlIEFyZ3M8VD4gPSB7XG4gIGNvbGxlY3Rpb246IENvbGxlY3Rpb25cbiAgY29uZmlnOiBTYW5pdGl6ZWRDb25maWdcbiAgZGF0YTogVFxuICBvcGVyYXRpb246ICdjcmVhdGUnIHwgJ3VwZGF0ZSdcbiAgb3JpZ2luYWxEb2M/OiBUXG4gIG92ZXJ3cml0ZUV4aXN0aW5nRmlsZXM/OiBib29sZWFuXG4gIHJlcTogUGF5bG9hZFJlcXVlc3RcbiAgdGhyb3dPbk1pc3NpbmdGaWxlPzogYm9vbGVhblxufVxuXG50eXBlIFJlc3VsdDxUPiA9IFByb21pc2U8e1xuICBkYXRhOiBUXG4gIGZpbGVzOiBGaWxlVG9TYXZlW11cbn0+XG5cbmV4cG9ydCBjb25zdCBnZW5lcmF0ZUZpbGVEYXRhID0gYXN5bmMgPFQ+KHtcbiAgY29sbGVjdGlvbjogeyBjb25maWc6IGNvbGxlY3Rpb25Db25maWcgfSxcbiAgY29uZmlnLFxuICBkYXRhLFxuICBvcGVyYXRpb24sXG4gIG9yaWdpbmFsRG9jLFxuICBvdmVyd3JpdGVFeGlzdGluZ0ZpbGVzLFxuICByZXEsXG4gIHRocm93T25NaXNzaW5nRmlsZSxcbn06IEFyZ3M8VD4pOiBSZXN1bHQ8VD4gPT4ge1xuICBpZiAoIWNvbGxlY3Rpb25Db25maWcudXBsb2FkKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGRhdGEsXG4gICAgICBmaWxlczogW10sXG4gICAgfVxuICB9XG5cbiAgbGV0IGZpbGUgPSByZXEuZmlsZXM/LmZpbGUgfHwgdW5kZWZpbmVkXG5cbiAgY29uc3QgdXBsb2FkRWRpdHMgPSBwYXJzZVVwbG9hZEVkaXRzRnJvbVJlcU9ySW5jb21pbmdEYXRhKHtcbiAgICBkYXRhLFxuICAgIG9wZXJhdGlvbixcbiAgICBvcmlnaW5hbERvYyxcbiAgICByZXEsXG4gIH0pXG5cbiAgY29uc3QgeyBkaXNhYmxlTG9jYWxTdG9yYWdlLCBmb3JtYXRPcHRpb25zLCBpbWFnZVNpemVzLCByZXNpemVPcHRpb25zLCBzdGF0aWNEaXIsIHRyaW1PcHRpb25zIH0gPVxuICAgIGNvbGxlY3Rpb25Db25maWcudXBsb2FkXG5cbiAgbGV0IHN0YXRpY1BhdGggPSBzdGF0aWNEaXJcbiAgaWYgKHN0YXRpY0Rpci5pbmRleE9mKCcvJykgIT09IDApIHtcbiAgICBzdGF0aWNQYXRoID0gcGF0aC5yZXNvbHZlKGNvbmZpZy5wYXRocy5jb25maWdEaXIsIHN0YXRpY0RpcilcbiAgfVxuXG4gIGlmICghZmlsZSAmJiB1cGxvYWRFZGl0cyAmJiBkYXRhKSB7XG4gICAgY29uc3QgeyBmaWxlbmFtZSwgdXJsIH0gPSBkYXRhIGFzIEZpbGVEYXRhXG5cbiAgICB0cnkge1xuICAgICAgaWYgKHVybCAmJiB1cmwuc3RhcnRzV2l0aCgnLycpICYmICFkaXNhYmxlTG9jYWxTdG9yYWdlKSB7XG4gICAgICAgIGNvbnN0IGZpbGVQYXRoID0gYCR7c3RhdGljUGF0aH0vJHtmaWxlbmFtZX1gXG4gICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgZ2V0RmlsZUJ5UGF0aChmaWxlUGF0aClcbiAgICAgICAgZmlsZSA9IHJlc3BvbnNlIGFzIFVwbG9hZGVkRmlsZVxuICAgICAgICBvdmVyd3JpdGVFeGlzdGluZ0ZpbGVzID0gdHJ1ZVxuICAgICAgfSBlbHNlIGlmIChmaWxlbmFtZSAmJiB1cmwpIHtcbiAgICAgICAgZmlsZSA9IChhd2FpdCBnZXRFeHRlcm5hbEZpbGUoe1xuICAgICAgICAgIGRhdGE6IGRhdGEgYXMgRmlsZURhdGEsXG4gICAgICAgICAgcmVxLFxuICAgICAgICAgIHVwbG9hZENvbmZpZzogY29sbGVjdGlvbkNvbmZpZy51cGxvYWQsXG4gICAgICAgIH0pKSBhcyBVcGxvYWRlZEZpbGVcbiAgICAgICAgb3ZlcndyaXRlRXhpc3RpbmdGaWxlcyA9IHRydWVcbiAgICAgIH1cbiAgICB9IGNhdGNoIChlcnI6IHVua25vd24pIHtcbiAgICAgIGlmIChlcnIgaW5zdGFuY2VvZiBFcnJvcikge1xuICAgICAgICB0aHJvdyBuZXcgRmlsZVJldHJpZXZhbEVycm9yKHJlcS50LCBlcnIubWVzc2FnZSlcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZiAoIWZpbGUpIHtcbiAgICBpZiAodGhyb3dPbk1pc3NpbmdGaWxlKSB0aHJvdyBuZXcgTWlzc2luZ0ZpbGUocmVxLnQpXG5cbiAgICByZXR1cm4ge1xuICAgICAgZGF0YSxcbiAgICAgIGZpbGVzOiBbXSxcbiAgICB9XG4gIH1cblxuICBpZiAoIWRpc2FibGVMb2NhbFN0b3JhZ2UpIHtcbiAgICBta2RpcnAuc3luYyhzdGF0aWNQYXRoKVxuICB9XG5cbiAgbGV0IG5ld0RhdGEgPSBkYXRhXG4gIGNvbnN0IGZpbGVzVG9TYXZlOiBGaWxlVG9TYXZlW10gPSBbXVxuICBjb25zdCBmaWxlRGF0YTogUGFydGlhbDxGaWxlRGF0YT4gPSB7fVxuICBjb25zdCBmaWxlSXNBbmltYXRlZCA9IGZpbGUubWltZXR5cGUgPT09ICdpbWFnZS9naWYnIHx8IGZpbGUubWltZXR5cGUgPT09ICdpbWFnZS93ZWJwJ1xuICBjb25zdCBjcm9wRGF0YSA9XG4gICAgdHlwZW9mIHVwbG9hZEVkaXRzID09PSAnb2JqZWN0JyAmJiAnY3JvcCcgaW4gdXBsb2FkRWRpdHMgPyB1cGxvYWRFZGl0cy5jcm9wIDogdW5kZWZpbmVkXG5cbiAgdHJ5IHtcbiAgICBjb25zdCBmaWxlU3VwcG9ydHNSZXNpemUgPSBjYW5SZXNpemVJbWFnZShmaWxlLm1pbWV0eXBlKVxuICAgIGxldCBmc1NhZmVOYW1lOiBzdHJpbmdcbiAgICBsZXQgc2hhcnBGaWxlOiBTaGFycCB8IHVuZGVmaW5lZFxuICAgIGxldCBkaW1lbnNpb25zOiBQcm9iZWRJbWFnZVNpemUgfCB1bmRlZmluZWRcbiAgICBsZXQgZmlsZUJ1ZmZlcjogeyBkYXRhOiBCdWZmZXI7IGluZm86IE91dHB1dEluZm8gfVxuICAgIGxldCBleHRcbiAgICBsZXQgbWltZTogc3RyaW5nXG4gICAgY29uc3QgZmlsZUhhc0FkanVzdG1lbnRzID1cbiAgICAgIGZpbGVTdXBwb3J0c1Jlc2l6ZSAmJlxuICAgICAgQm9vbGVhbihyZXNpemVPcHRpb25zIHx8IGZvcm1hdE9wdGlvbnMgfHwgdHJpbU9wdGlvbnMgfHwgZmlsZS50ZW1wRmlsZVBhdGgpXG5cbiAgICBjb25zdCBzaGFycE9wdGlvbnM6IFNoYXJwT3B0aW9ucyA9IHt9XG5cbiAgICBpZiAoZmlsZUlzQW5pbWF0ZWQpIHNoYXJwT3B0aW9ucy5hbmltYXRlZCA9IHRydWVcblxuICAgIGlmIChmaWxlSGFzQWRqdXN0bWVudHMpIHtcbiAgICAgIGlmIChmaWxlLnRlbXBGaWxlUGF0aCkge1xuICAgICAgICBzaGFycEZpbGUgPSBzaGFycChmaWxlLnRlbXBGaWxlUGF0aCwgc2hhcnBPcHRpb25zKS5yb3RhdGUoKSAvLyBwYXNzIHJvdGF0ZSgpIHRvIGF1dG8tcm90YXRlIGJhc2VkIG9uIEVYSUYgZGF0YS4gaHR0cHM6Ly9naXRodWIuY29tL3BheWxvYWRjbXMvcGF5bG9hZC9wdWxsLzMwODFcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNoYXJwRmlsZSA9IHNoYXJwKGZpbGUuZGF0YSwgc2hhcnBPcHRpb25zKS5yb3RhdGUoKSAvLyBwYXNzIHJvdGF0ZSgpIHRvIGF1dG8tcm90YXRlIGJhc2VkIG9uIEVYSUYgZGF0YS4gaHR0cHM6Ly9naXRodWIuY29tL3BheWxvYWRjbXMvcGF5bG9hZC9wdWxsLzMwODFcbiAgICAgIH1cblxuICAgICAgaWYgKHJlc2l6ZU9wdGlvbnMpIHtcbiAgICAgICAgc2hhcnBGaWxlID0gc2hhcnBGaWxlLnJlc2l6ZShyZXNpemVPcHRpb25zKVxuICAgICAgfVxuICAgICAgaWYgKGZvcm1hdE9wdGlvbnMpIHtcbiAgICAgICAgc2hhcnBGaWxlID0gc2hhcnBGaWxlLnRvRm9ybWF0KGZvcm1hdE9wdGlvbnMuZm9ybWF0LCBmb3JtYXRPcHRpb25zLm9wdGlvbnMpXG4gICAgICB9XG4gICAgICBpZiAodHJpbU9wdGlvbnMpIHtcbiAgICAgICAgc2hhcnBGaWxlID0gc2hhcnBGaWxlLnRyaW0odHJpbU9wdGlvbnMpXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGZpbGVTdXBwb3J0c1Jlc2l6ZSB8fCBpc0ltYWdlKGZpbGUubWltZXR5cGUpKSB7XG4gICAgICBkaW1lbnNpb25zID0gYXdhaXQgZ2V0SW1hZ2VTaXplKGZpbGUpXG4gICAgICBmaWxlRGF0YS53aWR0aCA9IGRpbWVuc2lvbnMud2lkdGhcbiAgICAgIGZpbGVEYXRhLmhlaWdodCA9IGRpbWVuc2lvbnMuaGVpZ2h0XG4gICAgfVxuXG4gICAgaWYgKHNoYXJwRmlsZSkge1xuICAgICAgY29uc3QgbWV0YWRhdGEgPSBhd2FpdCBzaGFycEZpbGUubWV0YWRhdGEoKVxuICAgICAgZmlsZUJ1ZmZlciA9IGF3YWl0IHNoYXJwRmlsZS50b0J1ZmZlcih7IHJlc29sdmVXaXRoT2JqZWN0OiB0cnVlIH0pXG4gICAgICA7KHsgZXh0LCBtaW1lIH0gPSBhd2FpdCBmcm9tQnVmZmVyKGZpbGVCdWZmZXIuZGF0YSkpIC8vIFRoaXMgaXMgZ2V0dGluZyBhbiBpbmNvcnJlY3QgZ2lmIGhlaWdodCBiYWNrLlxuICAgICAgZmlsZURhdGEud2lkdGggPSBmaWxlQnVmZmVyLmluZm8ud2lkdGhcbiAgICAgIGZpbGVEYXRhLmhlaWdodCA9IGZpbGVCdWZmZXIuaW5mby5oZWlnaHRcbiAgICAgIGZpbGVEYXRhLmZpbGVzaXplID0gZmlsZUJ1ZmZlci5pbmZvLnNpemVcblxuICAgICAgLy8gQW5pbWF0ZWQgR0lGcyArIFdlYlAgYWdncmVnYXRlIHRoZSBoZWlnaHQgZnJvbSBldmVyeSBmcmFtZSwgc28gd2UgbmVlZCB0byB1c2UgZGl2aWRlIGJ5IG51bWJlciBvZiBwYWdlc1xuICAgICAgaWYgKG1ldGFkYXRhLnBhZ2VzKSB7XG4gICAgICAgIGZpbGVEYXRhLmhlaWdodCA9IGZpbGVCdWZmZXIuaW5mby5oZWlnaHQgLyBtZXRhZGF0YS5wYWdlc1xuICAgICAgICBmaWxlRGF0YS5maWxlc2l6ZSA9IGZpbGVCdWZmZXIuZGF0YS5sZW5ndGhcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgbWltZSA9IGZpbGUubWltZXR5cGVcbiAgICAgIGZpbGVEYXRhLmZpbGVzaXplID0gZmlsZS5zaXplXG5cbiAgICAgIGlmIChmaWxlLm5hbWUuaW5jbHVkZXMoJy4nKSkge1xuICAgICAgICBleHQgPSBmaWxlLm5hbWUuc3BsaXQoJy4nKS5wb3AoKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZXh0ID0gJydcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBBZHVzdCBTVkcgbWltZSB0eXBlLiBmcm9tQnVmZmVyIG1vZGlmaWVzIGl0LlxuICAgIGlmIChtaW1lID09PSAnYXBwbGljYXRpb24veG1sJyAmJiBleHQgPT09ICdzdmcnKSBtaW1lID0gJ2ltYWdlL3N2Zyt4bWwnXG4gICAgZmlsZURhdGEubWltZVR5cGUgPSBtaW1lXG5cbiAgICBjb25zdCBiYXNlRmlsZW5hbWUgPSBzYW5pdGl6ZShmaWxlLm5hbWUuc3Vic3RyaW5nKDAsIGZpbGUubmFtZS5sYXN0SW5kZXhPZignLicpKSB8fCBmaWxlLm5hbWUpXG4gICAgZnNTYWZlTmFtZSA9IGAke2Jhc2VGaWxlbmFtZX0ke2V4dCA/IGAuJHtleHR9YCA6ICcnfWBcblxuICAgIGlmICghb3ZlcndyaXRlRXhpc3RpbmdGaWxlcykge1xuICAgICAgZnNTYWZlTmFtZSA9IGF3YWl0IGdldFNhZmVGaWxlTmFtZSh7XG4gICAgICAgIGNvbGxlY3Rpb25TbHVnOiBjb2xsZWN0aW9uQ29uZmlnLnNsdWcsXG4gICAgICAgIGRlc2lyZWRGaWxlbmFtZTogZnNTYWZlTmFtZSxcbiAgICAgICAgcmVxLFxuICAgICAgICBzdGF0aWNQYXRoLFxuICAgICAgfSlcbiAgICB9XG5cbiAgICBmaWxlRGF0YS5maWxlbmFtZSA9IGZzU2FmZU5hbWVcbiAgICBsZXQgZmlsZUZvclJlc2l6ZSA9IGZpbGVcblxuICAgIGlmIChjcm9wRGF0YSkge1xuICAgICAgY29uc3QgeyBkYXRhOiBjcm9wcGVkSW1hZ2UsIGluZm8gfSA9IGF3YWl0IGNyb3BJbWFnZSh7IGNyb3BEYXRhLCBkaW1lbnNpb25zLCBmaWxlIH0pXG5cbiAgICAgIGZpbGVzVG9TYXZlLnB1c2goe1xuICAgICAgICBidWZmZXI6IGNyb3BwZWRJbWFnZSxcbiAgICAgICAgcGF0aDogYCR7c3RhdGljUGF0aH0vJHtmc1NhZmVOYW1lfWAsXG4gICAgICB9KVxuXG4gICAgICBmaWxlRm9yUmVzaXplID0ge1xuICAgICAgICAuLi5maWxlLFxuICAgICAgICBkYXRhOiBjcm9wcGVkSW1hZ2UsXG4gICAgICAgIHNpemU6IGluZm8uc2l6ZSxcbiAgICAgIH1cbiAgICAgIGZpbGVEYXRhLndpZHRoID0gaW5mby53aWR0aFxuICAgICAgZmlsZURhdGEuaGVpZ2h0ID0gaW5mby5oZWlnaHRcbiAgICAgIGZpbGVEYXRhLmZpbGVzaXplID0gaW5mby5zaXplXG5cbiAgICAgIGlmIChmaWxlLnRlbXBGaWxlUGF0aCkge1xuICAgICAgICBhd2FpdCBmcy5wcm9taXNlcy53cml0ZUZpbGUoZmlsZS50ZW1wRmlsZVBhdGgsIGNyb3BwZWRJbWFnZSkgLy8gd3JpdGUgZmlsZUJ1ZmZlciB0byB0aGUgdGVtcCBwYXRoXG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXEuZmlsZXMuZmlsZSA9IGZpbGVGb3JSZXNpemVcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgZmlsZXNUb1NhdmUucHVzaCh7XG4gICAgICAgIGJ1ZmZlcjogZmlsZUJ1ZmZlcj8uZGF0YSB8fCBmaWxlLmRhdGEsXG4gICAgICAgIHBhdGg6IGAke3N0YXRpY1BhdGh9LyR7ZnNTYWZlTmFtZX1gLFxuICAgICAgfSlcblxuICAgICAgLy8gSWYgdXNpbmcgdGVtcCBmaWxlcyBhbmQgdGhlIGltYWdlIGlzIGJlaW5nIHJlc2l6ZWQsIHdyaXRlIHRoZSBmaWxlIHRvIHRoZSB0ZW1wIHBhdGhcbiAgICAgIGlmIChmaWxlQnVmZmVyPy5kYXRhIHx8IGZpbGUuZGF0YS5sZW5ndGggPiAwKSB7XG4gICAgICAgIGlmIChmaWxlLnRlbXBGaWxlUGF0aCkge1xuICAgICAgICAgIGF3YWl0IGZzLnByb21pc2VzLndyaXRlRmlsZShmaWxlLnRlbXBGaWxlUGF0aCwgZmlsZUJ1ZmZlcj8uZGF0YSB8fCBmaWxlLmRhdGEpIC8vIHdyaXRlIGZpbGVCdWZmZXIgdG8gdGhlIHRlbXAgcGF0aFxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIEFzc2lnbiB0aGUgX3Bvc3NpYmx5IG1vZGlmaWVkXyBmaWxlIHRvIHRoZSByZXF1ZXN0IG9iamVjdFxuICAgICAgICAgIHJlcS5maWxlcy5maWxlID0ge1xuICAgICAgICAgICAgLi4uZmlsZSxcbiAgICAgICAgICAgIGRhdGE6IGZpbGVCdWZmZXI/LmRhdGEgfHwgZmlsZS5kYXRhLFxuICAgICAgICAgICAgc2l6ZTogZmlsZUJ1ZmZlcj8uaW5mby5zaXplLFxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChBcnJheS5pc0FycmF5KGltYWdlU2l6ZXMpICYmIGZpbGVTdXBwb3J0c1Jlc2l6ZSkge1xuICAgICAgcmVxLnBheWxvYWRVcGxvYWRTaXplcyA9IHt9XG4gICAgICBjb25zdCB7IGZvY2FsUG9pbnQsIHNpemVEYXRhLCBzaXplc1RvU2F2ZSB9ID0gYXdhaXQgcmVzaXplQW5kVHJhbnNmb3JtSW1hZ2VTaXplcyh7XG4gICAgICAgIGNvbmZpZzogY29sbGVjdGlvbkNvbmZpZyxcbiAgICAgICAgZGltZW5zaW9uczogIWNyb3BEYXRhXG4gICAgICAgICAgPyBkaW1lbnNpb25zXG4gICAgICAgICAgOiB7XG4gICAgICAgICAgICAgIC4uLmRpbWVuc2lvbnMsXG4gICAgICAgICAgICAgIGhlaWdodDogZmlsZURhdGEuaGVpZ2h0LFxuICAgICAgICAgICAgICB3aWR0aDogZmlsZURhdGEud2lkdGgsXG4gICAgICAgICAgICB9LFxuICAgICAgICBmaWxlOiBmaWxlRm9yUmVzaXplLFxuICAgICAgICBtaW1lVHlwZTogZmlsZURhdGEubWltZVR5cGUsXG4gICAgICAgIHJlcSxcbiAgICAgICAgc2F2ZWRGaWxlbmFtZTogZnNTYWZlTmFtZSB8fCBmaWxlLm5hbWUsXG4gICAgICAgIHN0YXRpY1BhdGgsXG4gICAgICAgIHVwbG9hZEVkaXRzLFxuICAgICAgfSlcblxuICAgICAgZmlsZURhdGEuc2l6ZXMgPSBzaXplRGF0YVxuICAgICAgZmlsZURhdGEuZm9jYWxYID0gZm9jYWxQb2ludD8ueFxuICAgICAgZmlsZURhdGEuZm9jYWxZID0gZm9jYWxQb2ludD8ueVxuICAgICAgZmlsZXNUb1NhdmUucHVzaCguLi5zaXplc1RvU2F2ZSlcbiAgICB9XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIHJlcS5wYXlsb2FkLmxvZ2dlci5lcnJvcih7IGVyciwgbXNnOiAnRXJyb3IgdXBsb2FkaW5nIGZpbGUnIH0pXG4gICAgdGhyb3cgbmV3IEZpbGVVcGxvYWRFcnJvcihyZXEudClcbiAgfVxuXG4gIG5ld0RhdGEgPSB7XG4gICAgLi4ubmV3RGF0YSxcbiAgICAuLi5maWxlRGF0YSxcbiAgfVxuXG4gIHJldHVybiB7XG4gICAgZGF0YTogbmV3RGF0YSxcbiAgICBmaWxlczogZmlsZXNUb1NhdmUsXG4gIH1cbn1cblxuLyoqXG4gKiBQYXJzZSB1cGxvYWQgZWRpdHMgZnJvbSByZXEgb3IgaW5jb21pbmcgZGF0YVxuICovXG5mdW5jdGlvbiBwYXJzZVVwbG9hZEVkaXRzRnJvbVJlcU9ySW5jb21pbmdEYXRhKGFyZ3M6IHtcbiAgZGF0YTogdW5rbm93blxuICBvcGVyYXRpb246ICdjcmVhdGUnIHwgJ3VwZGF0ZSdcbiAgb3JpZ2luYWxEb2M6IHVua25vd25cbiAgcmVxOiBQYXlsb2FkUmVxdWVzdFxufSk6IFVwbG9hZEVkaXRzIHtcbiAgY29uc3QgeyBkYXRhLCBvcGVyYXRpb24sIG9yaWdpbmFsRG9jLCByZXEgfSA9IGFyZ3NcblxuICAvLyBHZXQgaW50ZW5kZWQgZm9jYWwgcG9pbnQgY2hhbmdlIGZyb20gcXVlcnkgc3RyaW5nIG9yIGluY29taW5nIGRhdGFcbiAgY29uc3Qge1xuICAgIHVwbG9hZEVkaXRzID0ge30sXG4gIH06IHtcbiAgICB1cGxvYWRFZGl0cz86IFVwbG9hZEVkaXRzXG4gIH0gPSByZXEucXVlcnkgfHwge31cblxuICBpZiAodXBsb2FkRWRpdHMuZm9jYWxQb2ludCkgcmV0dXJuIHVwbG9hZEVkaXRzXG5cbiAgY29uc3QgaW5jb21pbmdEYXRhID0gZGF0YSBhcyBGaWxlRGF0YVxuICBjb25zdCBvcmlnRG9jID0gb3JpZ2luYWxEb2MgYXMgRmlsZURhdGFcblxuICAvLyBJZiBubyBjaGFuZ2UgaW4gZm9jYWwgcG9pbnQsIHJldHVybiB1bmRlZmluZWQuXG4gIC8vIFRoaXMgcHJldmVudHMgYSByZWZvY2FsIG9wZXJhdGlvbiB0cmlnZ2VyZWQgZnJvbSBhZG1pbiwgYmVjYXVzZSBpdCBhbHdheXMgc2VuZHMgdGhlIGZvY2FsIHBvaW50LlxuICBpZiAob3JpZ0RvYyAmJiBpbmNvbWluZ0RhdGEuZm9jYWxYID09PSBvcmlnRG9jLmZvY2FsWCAmJiBpbmNvbWluZ0RhdGEuZm9jYWxZID09PSBvcmlnRG9jLmZvY2FsWSkge1xuICAgIHJldHVybiB1bmRlZmluZWRcbiAgfVxuXG4gIGlmIChpbmNvbWluZ0RhdGEuZm9jYWxYICYmIGluY29taW5nRGF0YS5mb2NhbFkpIHtcbiAgICB1cGxvYWRFZGl0cy5mb2NhbFBvaW50ID0ge1xuICAgICAgeDogaW5jb21pbmdEYXRhLmZvY2FsWCxcbiAgICAgIHk6IGluY29taW5nRGF0YS5mb2NhbFksXG4gICAgfVxuICAgIHJldHVybiB1cGxvYWRFZGl0c1xuICB9XG5cbiAgLy8gSWYgbm8gZm9jYWwgcG9pbnQgaXMgc2V0LCBkZWZhdWx0IHRvIGNlbnRlclxuICBpZiAob3BlcmF0aW9uID09PSAnY3JlYXRlJykge1xuICAgIHVwbG9hZEVkaXRzLmZvY2FsUG9pbnQgPSB7XG4gICAgICB4OiA1MCxcbiAgICAgIHk6IDUwLFxuICAgIH1cbiAgfVxuICByZXR1cm4gdXBsb2FkRWRpdHNcbn1cbiJdLCJuYW1lcyI6WyJnZW5lcmF0ZUZpbGVEYXRhIiwiY29sbGVjdGlvbiIsImNvbmZpZyIsImNvbGxlY3Rpb25Db25maWciLCJkYXRhIiwib3BlcmF0aW9uIiwib3JpZ2luYWxEb2MiLCJvdmVyd3JpdGVFeGlzdGluZ0ZpbGVzIiwicmVxIiwidGhyb3dPbk1pc3NpbmdGaWxlIiwidXBsb2FkIiwiZmlsZXMiLCJmaWxlIiwidW5kZWZpbmVkIiwidXBsb2FkRWRpdHMiLCJwYXJzZVVwbG9hZEVkaXRzRnJvbVJlcU9ySW5jb21pbmdEYXRhIiwiZGlzYWJsZUxvY2FsU3RvcmFnZSIsImZvcm1hdE9wdGlvbnMiLCJpbWFnZVNpemVzIiwicmVzaXplT3B0aW9ucyIsInN0YXRpY0RpciIsInRyaW1PcHRpb25zIiwic3RhdGljUGF0aCIsImluZGV4T2YiLCJwYXRoIiwicmVzb2x2ZSIsInBhdGhzIiwiY29uZmlnRGlyIiwiZmlsZW5hbWUiLCJ1cmwiLCJzdGFydHNXaXRoIiwiZmlsZVBhdGgiLCJyZXNwb25zZSIsImdldEZpbGVCeVBhdGgiLCJnZXRFeHRlcm5hbEZpbGUiLCJ1cGxvYWRDb25maWciLCJlcnIiLCJFcnJvciIsIkZpbGVSZXRyaWV2YWxFcnJvciIsInQiLCJtZXNzYWdlIiwiTWlzc2luZ0ZpbGUiLCJta2RpcnAiLCJzeW5jIiwibmV3RGF0YSIsImZpbGVzVG9TYXZlIiwiZmlsZURhdGEiLCJmaWxlSXNBbmltYXRlZCIsIm1pbWV0eXBlIiwiY3JvcERhdGEiLCJjcm9wIiwiZmlsZVN1cHBvcnRzUmVzaXplIiwiY2FuUmVzaXplSW1hZ2UiLCJmc1NhZmVOYW1lIiwic2hhcnBGaWxlIiwiZGltZW5zaW9ucyIsImZpbGVCdWZmZXIiLCJleHQiLCJtaW1lIiwiZmlsZUhhc0FkanVzdG1lbnRzIiwiQm9vbGVhbiIsInRlbXBGaWxlUGF0aCIsInNoYXJwT3B0aW9ucyIsImFuaW1hdGVkIiwic2hhcnAiLCJyb3RhdGUiLCJyZXNpemUiLCJ0b0Zvcm1hdCIsImZvcm1hdCIsIm9wdGlvbnMiLCJ0cmltIiwiaXNJbWFnZSIsImdldEltYWdlU2l6ZSIsIndpZHRoIiwiaGVpZ2h0IiwibWV0YWRhdGEiLCJ0b0J1ZmZlciIsInJlc29sdmVXaXRoT2JqZWN0IiwiZnJvbUJ1ZmZlciIsImluZm8iLCJmaWxlc2l6ZSIsInNpemUiLCJwYWdlcyIsImxlbmd0aCIsIm5hbWUiLCJpbmNsdWRlcyIsInNwbGl0IiwicG9wIiwibWltZVR5cGUiLCJiYXNlRmlsZW5hbWUiLCJzYW5pdGl6ZSIsInN1YnN0cmluZyIsImxhc3RJbmRleE9mIiwiZ2V0U2FmZUZpbGVOYW1lIiwiY29sbGVjdGlvblNsdWciLCJzbHVnIiwiZGVzaXJlZEZpbGVuYW1lIiwiZmlsZUZvclJlc2l6ZSIsImNyb3BwZWRJbWFnZSIsImNyb3BJbWFnZSIsInB1c2giLCJidWZmZXIiLCJmcyIsInByb21pc2VzIiwid3JpdGVGaWxlIiwiQXJyYXkiLCJpc0FycmF5IiwicGF5bG9hZFVwbG9hZFNpemVzIiwiZm9jYWxQb2ludCIsInNpemVEYXRhIiwic2l6ZXNUb1NhdmUiLCJyZXNpemVBbmRUcmFuc2Zvcm1JbWFnZVNpemVzIiwic2F2ZWRGaWxlbmFtZSIsInNpemVzIiwiZm9jYWxYIiwieCIsImZvY2FsWSIsInkiLCJwYXlsb2FkIiwibG9nZ2VyIiwiZXJyb3IiLCJtc2ciLCJGaWxlVXBsb2FkRXJyb3IiLCJhcmdzIiwicXVlcnkiLCJpbmNvbWluZ0RhdGEiLCJvcmlnRG9jIl0sIm1hcHBpbmdzIjoiOzs7OytCQTBDYUE7OztlQUFBQTs7OzBCQXZDYzsyREFDWjsrREFDSTs2REFDRjt5RUFDSTs4REFDSDt3QkFPMkI7MkVBQ2Q7dUVBQ0o7a0VBQ0w7aUNBQ1U7c0VBQ047cUVBQ0Q7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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getBaseFields.d.ts","sourceRoot":"","sources":["../../src/uploads/getBaseFields.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAA;AACnE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AAC7C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAA;AAcnD,KAAK,OAAO,GAAG;IACb,UAAU,EAAE,gBAAgB,CAAA;IAC5B,MAAM,EAAE,MAAM,CAAA;CACf,CAAA;AAED,QAAA,MAAM,mBAAmB,2BAA4B,OAAO,KAAG,KAAK,
|
|
1
|
+
{"version":3,"file":"getBaseFields.d.ts","sourceRoot":"","sources":["../../src/uploads/getBaseFields.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAA;AACnE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAA;AAC7C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,wBAAwB,CAAA;AAcnD,KAAK,OAAO,GAAG;IACb,UAAU,EAAE,gBAAgB,CAAA;IAC5B,MAAM,EAAE,MAAM,CAAA;CACf,CAAA;AAED,QAAA,MAAM,mBAAmB,2BAA4B,OAAO,KAAG,KAAK,EAqKnE,CAAA;AAED,eAAe,mBAAmB,CAAA"}
|
|
@@ -21,51 +21,52 @@ const getBaseUploadFields = ({ collection, config })=>{
|
|
|
21
21
|
const uploadOptions = typeof collection.upload === 'object' ? collection.upload : {};
|
|
22
22
|
const mimeType = {
|
|
23
23
|
name: 'mimeType',
|
|
24
|
+
type: 'text',
|
|
24
25
|
admin: {
|
|
25
26
|
hidden: true,
|
|
26
27
|
readOnly: true
|
|
27
28
|
},
|
|
28
|
-
label: 'MIME Type'
|
|
29
|
-
type: 'text'
|
|
29
|
+
label: 'MIME Type'
|
|
30
30
|
};
|
|
31
31
|
const url = {
|
|
32
32
|
name: 'url',
|
|
33
|
+
type: 'text',
|
|
33
34
|
admin: {
|
|
34
35
|
hidden: true,
|
|
35
36
|
readOnly: true
|
|
36
37
|
},
|
|
37
|
-
label: 'URL'
|
|
38
|
-
type: 'text'
|
|
38
|
+
label: 'URL'
|
|
39
39
|
};
|
|
40
40
|
const width = {
|
|
41
41
|
name: 'width',
|
|
42
|
+
type: 'number',
|
|
42
43
|
admin: {
|
|
43
44
|
hidden: true,
|
|
44
45
|
readOnly: true
|
|
45
46
|
},
|
|
46
|
-
label: labels['upload:width']
|
|
47
|
-
type: 'number'
|
|
47
|
+
label: labels['upload:width']
|
|
48
48
|
};
|
|
49
49
|
const height = {
|
|
50
50
|
name: 'height',
|
|
51
|
+
type: 'number',
|
|
51
52
|
admin: {
|
|
52
53
|
hidden: true,
|
|
53
54
|
readOnly: true
|
|
54
55
|
},
|
|
55
|
-
label: labels['upload:height']
|
|
56
|
-
type: 'number'
|
|
56
|
+
label: labels['upload:height']
|
|
57
57
|
};
|
|
58
58
|
const filesize = {
|
|
59
59
|
name: 'filesize',
|
|
60
|
+
type: 'number',
|
|
60
61
|
admin: {
|
|
61
62
|
hidden: true,
|
|
62
63
|
readOnly: true
|
|
63
64
|
},
|
|
64
|
-
label: labels['upload:fileSize']
|
|
65
|
-
type: 'number'
|
|
65
|
+
label: labels['upload:fileSize']
|
|
66
66
|
};
|
|
67
67
|
const filename = {
|
|
68
68
|
name: 'filename',
|
|
69
|
+
type: 'text',
|
|
69
70
|
admin: {
|
|
70
71
|
disableBulkEdit: true,
|
|
71
72
|
hidden: true,
|
|
@@ -73,7 +74,6 @@ const getBaseUploadFields = ({ collection, config })=>{
|
|
|
73
74
|
},
|
|
74
75
|
index: true,
|
|
75
76
|
label: labels['upload:fileName'],
|
|
76
|
-
type: 'text',
|
|
77
77
|
unique: true
|
|
78
78
|
};
|
|
79
79
|
let uploadFields = [
|
|
@@ -102,15 +102,32 @@ const getBaseUploadFields = ({ collection, config })=>{
|
|
|
102
102
|
if (uploadOptions.mimeTypes) {
|
|
103
103
|
mimeType.validate = (0, _mimeTypeValidator.mimeTypeValidator)(uploadOptions.mimeTypes);
|
|
104
104
|
}
|
|
105
|
+
// Add focal point fields if not disabled
|
|
106
|
+
if (uploadOptions.focalPoint !== false && (uploadOptions.imageSizes || uploadOptions.resizeOptions)) {
|
|
107
|
+
uploadFields = uploadFields.concat([
|
|
108
|
+
'focalX',
|
|
109
|
+
'focalY'
|
|
110
|
+
].map((name)=>{
|
|
111
|
+
return {
|
|
112
|
+
name,
|
|
113
|
+
type: 'number',
|
|
114
|
+
admin: {
|
|
115
|
+
hidden: true
|
|
116
|
+
}
|
|
117
|
+
};
|
|
118
|
+
}));
|
|
119
|
+
}
|
|
105
120
|
if (uploadOptions.imageSizes) {
|
|
106
121
|
uploadFields = uploadFields.concat([
|
|
107
122
|
{
|
|
108
123
|
name: 'sizes',
|
|
124
|
+
type: 'group',
|
|
109
125
|
admin: {
|
|
110
126
|
hidden: true
|
|
111
127
|
},
|
|
112
128
|
fields: uploadOptions.imageSizes.map((size)=>({
|
|
113
129
|
name: size.name,
|
|
130
|
+
type: 'group',
|
|
114
131
|
admin: {
|
|
115
132
|
hidden: true
|
|
116
133
|
},
|
|
@@ -141,11 +158,9 @@ const getBaseUploadFields = ({ collection, config })=>{
|
|
|
141
158
|
unique: false
|
|
142
159
|
}
|
|
143
160
|
],
|
|
144
|
-
label: size.name
|
|
145
|
-
type: 'group'
|
|
161
|
+
label: size.name
|
|
146
162
|
})),
|
|
147
|
-
label: labels['upload:
|
|
148
|
-
type: 'group'
|
|
163
|
+
label: labels['upload:sizes']
|
|
149
164
|
}
|
|
150
165
|
]);
|
|
151
166
|
}
|
|
@@ -153,4 +168,4 @@ const getBaseUploadFields = ({ collection, config })=>{
|
|
|
153
168
|
};
|
|
154
169
|
const _default = getBaseUploadFields;
|
|
155
170
|
|
|
156
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91cGxvYWRzL2dldEJhc2VGaWVsZHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBDb2xsZWN0aW9uQ29uZmlnIH0gZnJvbSAnLi4vY29sbGVjdGlvbnMvY29uZmlnL3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBDb25maWcgfSBmcm9tICcuLi9jb25maWcvdHlwZXMnXG5pbXBvcnQgdHlwZSB7IEZpZWxkIH0gZnJvbSAnLi4vZmllbGRzL2NvbmZpZy90eXBlcydcbmltcG9ydCB0eXBlIHsgSW5jb21pbmdVcGxvYWRUeXBlIH0gZnJvbSAnLi90eXBlcydcblxuaW1wb3J0IHsgZXh0cmFjdFRyYW5zbGF0aW9ucyB9IGZyb20gJy4uL3RyYW5zbGF0aW9ucy9leHRyYWN0VHJhbnNsYXRpb25zJ1xuaW1wb3J0IHsgbWltZVR5cGVWYWxpZGF0b3IgfSBmcm9tICcuL21pbWVUeXBlVmFsaWRhdG9yJ1xuXG5jb25zdCBsYWJlbHMgPSBleHRyYWN0VHJhbnNsYXRpb25zKFtcbiAgJ3VwbG9hZDp3aWR0aCcsXG4gICd1cGxvYWQ6aGVpZ2h0JyxcbiAgJ3VwbG9hZDpmaWxlU2l6ZScsXG4gICd1cGxvYWQ6ZmlsZU5hbWUnLFxuICAndXBsb2FkOnNpemVzJyxcbl0pXG5cbnR5cGUgT3B0aW9ucyA9IHtcbiAgY29sbGVjdGlvbjogQ29sbGVjdGlvbkNvbmZpZ1xuICBjb25maWc6IENvbmZpZ1xufVxuXG5jb25zdCBnZXRCYXNlVXBsb2FkRmllbGRzID0gKHsgY29sbGVjdGlvbiwgY29uZmlnIH06IE9wdGlvbnMpOiBGaWVsZFtdID0+
|
|
171
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91cGxvYWRzL2dldEJhc2VGaWVsZHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBDb2xsZWN0aW9uQ29uZmlnIH0gZnJvbSAnLi4vY29sbGVjdGlvbnMvY29uZmlnL3R5cGVzJ1xuaW1wb3J0IHR5cGUgeyBDb25maWcgfSBmcm9tICcuLi9jb25maWcvdHlwZXMnXG5pbXBvcnQgdHlwZSB7IEZpZWxkIH0gZnJvbSAnLi4vZmllbGRzL2NvbmZpZy90eXBlcydcbmltcG9ydCB0eXBlIHsgSW5jb21pbmdVcGxvYWRUeXBlIH0gZnJvbSAnLi90eXBlcydcblxuaW1wb3J0IHsgZXh0cmFjdFRyYW5zbGF0aW9ucyB9IGZyb20gJy4uL3RyYW5zbGF0aW9ucy9leHRyYWN0VHJhbnNsYXRpb25zJ1xuaW1wb3J0IHsgbWltZVR5cGVWYWxpZGF0b3IgfSBmcm9tICcuL21pbWVUeXBlVmFsaWRhdG9yJ1xuXG5jb25zdCBsYWJlbHMgPSBleHRyYWN0VHJhbnNsYXRpb25zKFtcbiAgJ3VwbG9hZDp3aWR0aCcsXG4gICd1cGxvYWQ6aGVpZ2h0JyxcbiAgJ3VwbG9hZDpmaWxlU2l6ZScsXG4gICd1cGxvYWQ6ZmlsZU5hbWUnLFxuICAndXBsb2FkOnNpemVzJyxcbl0pXG5cbnR5cGUgT3B0aW9ucyA9IHtcbiAgY29sbGVjdGlvbjogQ29sbGVjdGlvbkNvbmZpZ1xuICBjb25maWc6IENvbmZpZ1xufVxuXG5jb25zdCBnZXRCYXNlVXBsb2FkRmllbGRzID0gKHsgY29sbGVjdGlvbiwgY29uZmlnIH06IE9wdGlvbnMpOiBGaWVsZFtdID0+IHtcbiAgY29uc3QgdXBsb2FkT3B0aW9uczogSW5jb21pbmdVcGxvYWRUeXBlID1cbiAgICB0eXBlb2YgY29sbGVjdGlvbi51cGxvYWQgPT09ICdvYmplY3QnID8gY29sbGVjdGlvbi51cGxvYWQgOiB7fVxuXG4gIGNvbnN0IG1pbWVUeXBlOiBGaWVsZCA9IHtcbiAgICBuYW1lOiAnbWltZVR5cGUnLFxuICAgIHR5cGU6ICd0ZXh0JyxcbiAgICBhZG1pbjoge1xuICAgICAgaGlkZGVuOiB0cnVlLFxuICAgICAgcmVhZE9ubHk6IHRydWUsXG4gICAgfSxcbiAgICBsYWJlbDogJ01JTUUgVHlwZScsXG4gIH1cblxuICBjb25zdCB1cmw6IEZpZWxkID0ge1xuICAgIG5hbWU6ICd1cmwnLFxuICAgIHR5cGU6ICd0ZXh0JyxcbiAgICBhZG1pbjoge1xuICAgICAgaGlkZGVuOiB0cnVlLFxuICAgICAgcmVhZE9ubHk6IHRydWUsXG4gICAgfSxcbiAgICBsYWJlbDogJ1VSTCcsXG4gIH1cblxuICBjb25zdCB3aWR0aDogRmllbGQgPSB7XG4gICAgbmFtZTogJ3dpZHRoJyxcbiAgICB0eXBlOiAnbnVtYmVyJyxcbiAgICBhZG1pbjoge1xuICAgICAgaGlkZGVuOiB0cnVlLFxuICAgICAgcmVhZE9ubHk6IHRydWUsXG4gICAgfSxcbiAgICBsYWJlbDogbGFiZWxzWyd1cGxvYWQ6d2lkdGgnXSxcbiAgfVxuXG4gIGNvbnN0IGhlaWdodDogRmllbGQgPSB7XG4gICAgbmFtZTogJ2hlaWdodCcsXG4gICAgdHlwZTogJ251bWJlcicsXG4gICAgYWRtaW46IHtcbiAgICAgIGhpZGRlbjogdHJ1ZSxcbiAgICAgIHJlYWRPbmx5OiB0cnVlLFxuICAgIH0sXG4gICAgbGFiZWw6IGxhYmVsc1sndXBsb2FkOmhlaWdodCddLFxuICB9XG5cbiAgY29uc3QgZmlsZXNpemU6IEZpZWxkID0ge1xuICAgIG5hbWU6ICdmaWxlc2l6ZScsXG4gICAgdHlwZTogJ251bWJlcicsXG4gICAgYWRtaW46IHtcbiAgICAgIGhpZGRlbjogdHJ1ZSxcbiAgICAgIHJlYWRPbmx5OiB0cnVlLFxuICAgIH0sXG4gICAgbGFiZWw6IGxhYmVsc1sndXBsb2FkOmZpbGVTaXplJ10sXG4gIH1cblxuICBjb25zdCBmaWxlbmFtZTogRmllbGQgPSB7XG4gICAgbmFtZTogJ2ZpbGVuYW1lJyxcbiAgICB0eXBlOiAndGV4dCcsXG4gICAgYWRtaW46IHtcbiAgICAgIGRpc2FibGVCdWxrRWRpdDogdHJ1ZSxcbiAgICAgIGhpZGRlbjogdHJ1ZSxcbiAgICAgIHJlYWRPbmx5OiB0cnVlLFxuICAgIH0sXG4gICAgaW5kZXg6IHRydWUsXG4gICAgbGFiZWw6IGxhYmVsc1sndXBsb2FkOmZpbGVOYW1lJ10sXG4gICAgdW5pcXVlOiB0cnVlLFxuICB9XG5cbiAgbGV0IHVwbG9hZEZpZWxkczogRmllbGRbXSA9IFtcbiAgICB7XG4gICAgICAuLi51cmwsXG4gICAgICBob29rczoge1xuICAgICAgICBhZnRlclJlYWQ6IFtcbiAgICAgICAgICAoeyBkYXRhIH0pID0+IHtcbiAgICAgICAgICAgIGlmIChkYXRhPy5maWxlbmFtZSkge1xuICAgICAgICAgICAgICBpZiAodXBsb2FkT3B0aW9ucy5zdGF0aWNVUkwuc3RhcnRzV2l0aCgnLycpKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGAke2NvbmZpZy5zZXJ2ZXJVUkx9JHt1cGxvYWRPcHRpb25zLnN0YXRpY1VSTH0vJHtkYXRhLmZpbGVuYW1lfWBcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICByZXR1cm4gYCR7dXBsb2FkT3B0aW9ucy5zdGF0aWNVUkx9LyR7ZGF0YS5maWxlbmFtZX1gXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWRcbiAgICAgICAgICB9LFxuICAgICAgICBdLFxuICAgICAgfSxcbiAgICB9LFxuICAgIGZpbGVuYW1lLFxuICAgIG1pbWVUeXBlLFxuICAgIGZpbGVzaXplLFxuICAgIHdpZHRoLFxuICAgIGhlaWdodCxcbiAgXVxuXG4gIGlmICh1cGxvYWRPcHRpb25zLm1pbWVUeXBlcykge1xuICAgIG1pbWVUeXBlLnZhbGlkYXRlID0gbWltZVR5cGVWYWxpZGF0b3IodXBsb2FkT3B0aW9ucy5taW1lVHlwZXMpXG4gIH1cblxuICAvLyBBZGQgZm9jYWwgcG9pbnQgZmllbGRzIGlmIG5vdCBkaXNhYmxlZFxuICBpZiAoXG4gICAgdXBsb2FkT3B0aW9ucy5mb2NhbFBvaW50ICE9PSBmYWxzZSAmJlxuICAgICh1cGxvYWRPcHRpb25zLmltYWdlU2l6ZXMgfHwgdXBsb2FkT3B0aW9ucy5yZXNpemVPcHRpb25zKVxuICApIHtcbiAgICB1cGxvYWRGaWVsZHMgPSB1cGxvYWRGaWVsZHMuY29uY2F0KFxuICAgICAgWydmb2NhbFgnLCAnZm9jYWxZJ10ubWFwKChuYW1lKSA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgbmFtZSxcbiAgICAgICAgICB0eXBlOiAnbnVtYmVyJyxcbiAgICAgICAgICBhZG1pbjoge1xuICAgICAgICAgICAgaGlkZGVuOiB0cnVlLFxuICAgICAgICAgIH0sXG4gICAgICAgIH1cbiAgICAgIH0pLFxuICAgIClcbiAgfVxuXG4gIGlmICh1cGxvYWRPcHRpb25zLmltYWdlU2l6ZXMpIHtcbiAgICB1cGxvYWRGaWVsZHMgPSB1cGxvYWRGaWVsZHMuY29uY2F0KFtcbiAgICAgIHtcbiAgICAgICAgbmFtZTogJ3NpemVzJyxcbiAgICAgICAgdHlwZTogJ2dyb3VwJyxcbiAgICAgICAgYWRtaW46IHtcbiAgICAgICAgICBoaWRkZW46IHRydWUsXG4gICAgICAgIH0sXG4gICAgICAgIGZpZWxkczogdXBsb2FkT3B0aW9ucy5pbWFnZVNpemVzLm1hcCgoc2l6ZSkgPT4gKHtcbiAgICAgICAgICBuYW1lOiBzaXplLm5hbWUsXG4gICAgICAgICAgdHlwZTogJ2dyb3VwJyxcbiAgICAgICAgICBhZG1pbjoge1xuICAgICAgICAgICAgaGlkZGVuOiB0cnVlLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgZmllbGRzOiBbXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIC4uLnVybCxcbiAgICAgICAgICAgICAgaG9va3M6IHtcbiAgICAgICAgICAgICAgICBhZnRlclJlYWQ6IFtcbiAgICAgICAgICAgICAgICAgICh7IGRhdGEgfSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBzaXplRmlsZW5hbWUgPSBkYXRhPy5zaXplcz8uW3NpemUubmFtZV0/LmZpbGVuYW1lXG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHNpemVGaWxlbmFtZSkge1xuICAgICAgICAgICAgICAgICAgICAgIGlmICh1cGxvYWRPcHRpb25zLnN0YXRpY1VSTC5zdGFydHNXaXRoKCcvJykpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBgJHtjb25maWcuc2VydmVyVVJMfSR7dXBsb2FkT3B0aW9ucy5zdGF0aWNVUkx9LyR7c2l6ZUZpbGVuYW1lfWBcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGAke3VwbG9hZE9wdGlvbnMuc3RhdGljVVJMfS8ke3NpemVGaWxlbmFtZX1gXG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbFxuICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHdpZHRoLFxuICAgICAgICAgICAgaGVpZ2h0LFxuICAgICAgICAgICAgbWltZVR5cGUsXG4gICAgICAgICAgICBmaWxlc2l6ZSxcbiAgICAgICAgICAgIHtcbiAgICAgICAgICAgICAgLi4uZmlsZW5hbWUsXG4gICAgICAgICAgICAgIHVuaXF1ZTogZmFsc2UsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIF0sXG4gICAgICAgICAgbGFiZWw6IHNpemUubmFtZSxcbiAgICAgICAgfSkpLFxuICAgICAgICBsYWJlbDogbGFiZWxzWyd1cGxvYWQ6c2l6ZXMnXSxcbiAgICAgIH0sXG4gICAgXSlcbiAgfVxuXG4gIHJldHVybiB1cGxvYWRGaWVsZHNcbn1cblxuZXhwb3J0IGRlZmF1bHQgZ2V0QmFzZVVwbG9hZEZpZWxkc1xuIl0sIm5hbWVzIjpbImxhYmVscyIsImV4dHJhY3RUcmFuc2xhdGlvbnMiLCJnZXRCYXNlVXBsb2FkRmllbGRzIiwiY29sbGVjdGlvbiIsImNvbmZpZyIsInVwbG9hZE9wdGlvbnMiLCJ1cGxvYWQiLCJtaW1lVHlwZSIsIm5hbWUiLCJ0eXBlIiwiYWRtaW4iLCJoaWRkZW4iLCJyZWFkT25seSIsImxhYmVsIiwidXJsIiwid2lkdGgiLCJoZWlnaHQiLCJmaWxlc2l6ZSIsImZpbGVuYW1lIiwiZGlzYWJsZUJ1bGtFZGl0IiwiaW5kZXgiLCJ1bmlxdWUiLCJ1cGxvYWRGaWVsZHMiLCJob29rcyIsImFmdGVyUmVhZCIsImRhdGEiLCJzdGF0aWNVUkwiLCJzdGFydHNXaXRoIiwic2VydmVyVVJMIiwidW5kZWZpbmVkIiwibWltZVR5cGVzIiwidmFsaWRhdGUiLCJtaW1lVHlwZVZhbGlkYXRvciIsImZvY2FsUG9pbnQiLCJpbWFnZVNpemVzIiwicmVzaXplT3B0aW9ucyIsImNvbmNhdCIsIm1hcCIsImZpZWxkcyIsInNpemUiLCJzaXplRmlsZW5hbWUiLCJzaXplcyJdLCJtYXBwaW5ncyI6Ijs7OzsrQkE0TEE7OztlQUFBOzs7cUNBdkxvQzttQ0FDRjtBQUVsQyxNQUFNQSxTQUFTQyxJQUFBQSx3Q0FBbUIsRUFBQztJQUNqQztJQUNBO0lBQ0E7SUFDQTtJQUNBO0NBQ0Q7QUFPRCxNQUFNQyxzQkFBc0IsQ0FBQyxFQUFFQyxVQUFVLEVBQUVDLE1BQU0sRUFBVztJQUMxRCxNQUFNQyxnQkFDSixPQUFPRixXQUFXRyxNQUFNLEtBQUssV0FBV0gsV0FBV0csTUFBTSxHQUFHLENBQUM7SUFFL0QsTUFBTUMsV0FBa0I7UUFDdEJDLE1BQU07UUFDTkMsTUFBTTtRQUNOQyxPQUFPO1lBQ0xDLFFBQVE7WUFDUkMsVUFBVTtRQUNaO1FBQ0FDLE9BQU87SUFDVDtJQUVBLE1BQU1DLE1BQWE7UUFDakJOLE1BQU07UUFDTkMsTUFBTTtRQUNOQyxPQUFPO1lBQ0xDLFFBQVE7WUFDUkMsVUFBVTtRQUNaO1FBQ0FDLE9BQU87SUFDVDtJQUVBLE1BQU1FLFFBQWU7UUFDbkJQLE1BQU07UUFDTkMsTUFBTTtRQUNOQyxPQUFPO1lBQ0xDLFFBQVE7WUFDUkMs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
|