@ks89/angular-modal-gallery 8.0.1 → 9.1.0-beta.1
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/CHANGELOG.md +58 -0
- package/CONTRIBUTING.md +3 -3
- package/README.md +22 -26
- package/{esm2015/ks89-angular-modal-gallery.js → esm2020/ks89-angular-modal-gallery.mjs} +0 -0
- package/{esm2015/lib/components/accessibility-default.js → esm2020/lib/components/accessibility-default.mjs} +0 -0
- package/{esm2015/lib/components/accessible.component.js → esm2020/lib/components/accessible.component.mjs} +6 -6
- package/esm2020/lib/components/carousel/carousel-previews/carousel-previews.component.mjs +462 -0
- package/esm2020/lib/components/carousel/carousel.component.mjs +747 -0
- package/{esm2015/lib/components/components.js → esm2020/lib/components/components.mjs} +0 -0
- package/esm2020/lib/components/current-image/current-image.component.mjs +616 -0
- package/esm2020/lib/components/current-image/loading-spinner/loading-spinner.component.mjs +80 -0
- package/esm2020/lib/components/dots/dots.component.mjs +127 -0
- package/{esm2015/lib/components/modal-gallery/modal-gallery-ref.js → esm2020/lib/components/modal-gallery/modal-gallery-ref.mjs} +0 -0
- package/esm2020/lib/components/modal-gallery/modal-gallery.component.mjs +524 -0
- package/esm2020/lib/components/modal-gallery/modal-gallery.service.mjs +187 -0
- package/{esm2015/lib/components/modal-gallery/modal-gallery.tokens.js → esm2020/lib/components/modal-gallery/modal-gallery.tokens.mjs} +0 -0
- package/esm2020/lib/components/plain-gallery/plain-gallery.component.mjs +249 -0
- package/esm2020/lib/components/previews/previews.component.mjs +337 -0
- package/{esm2015/lib/components/upper-buttons/upper-buttons-default.js → esm2020/lib/components/upper-buttons/upper-buttons-default.mjs} +0 -0
- package/esm2020/lib/components/upper-buttons/upper-buttons.component.mjs +249 -0
- package/{esm2015/lib/directives/a-tag-bg-image.directive.js → esm2020/lib/directives/a-tag-bg-image.directive.mjs} +3 -3
- package/{esm2015/lib/directives/click-outside.directive.js → esm2020/lib/directives/click-outside.directive.mjs} +3 -3
- package/{esm2015/lib/directives/description.directive.js → esm2020/lib/directives/description.directive.mjs} +3 -3
- package/{esm2015/lib/directives/direction.directive.js → esm2020/lib/directives/direction.directive.mjs} +3 -3
- package/{esm2015/lib/directives/directives.js → esm2020/lib/directives/directives.mjs} +0 -0
- package/{esm2015/lib/directives/fallback-image.directive.js → esm2020/lib/directives/fallback-image.directive.mjs} +3 -3
- package/{esm2015/lib/directives/keyboard-navigation.directive.js → esm2020/lib/directives/keyboard-navigation.directive.mjs} +5 -5
- package/{esm2015/lib/directives/margin.directive.js → esm2020/lib/directives/margin.directive.mjs} +3 -3
- package/{esm2015/lib/directives/max-size.directive.js → esm2020/lib/directives/max-size.directive.mjs} +3 -3
- package/{esm2015/lib/directives/size.directive.js → esm2020/lib/directives/size.directive.mjs} +3 -3
- package/{esm2015/lib/directives/wrap.directive.js → esm2020/lib/directives/wrap.directive.mjs} +3 -3
- package/{esm2015/lib/modal-gallery.module.js → esm2020/lib/modal-gallery.module.mjs} +7 -7
- package/{esm2015/lib/model/accessibility.interface.js → esm2020/lib/model/accessibility.interface.mjs} +0 -0
- package/{esm2015/lib/model/action.enum.js → esm2020/lib/model/action.enum.mjs} +0 -0
- package/{esm2015/lib/model/buttons-config.interface.js → esm2020/lib/model/buttons-config.interface.mjs} +0 -0
- package/{esm2015/lib/model/carousel-config.interface.js → esm2020/lib/model/carousel-config.interface.mjs} +1 -1
- package/{esm2015/lib/model/carousel-image-config.interface.js → esm2020/lib/model/carousel-image-config.interface.mjs} +0 -0
- package/{esm2015/lib/model/carousel-preview-config.interface.js → esm2020/lib/model/carousel-preview-config.interface.mjs} +0 -0
- package/{esm2015/lib/model/current-image-config.interface.js → esm2020/lib/model/current-image-config.interface.mjs} +0 -0
- package/{esm2015/lib/model/description.interface.js → esm2020/lib/model/description.interface.mjs} +0 -0
- package/{esm2015/lib/model/dots-config.interface.js → esm2020/lib/model/dots-config.interface.mjs} +0 -0
- package/{esm2015/lib/model/image-internal.class.js → esm2020/lib/model/image-internal.class.mjs} +0 -0
- package/{esm2015/lib/model/image.class.js → esm2020/lib/model/image.class.mjs} +0 -0
- package/{esm2015/lib/model/interaction-event.interface.js → esm2020/lib/model/interaction-event.interface.mjs} +0 -0
- package/{esm2015/lib/model/keyboard-config.interface.js → esm2020/lib/model/keyboard-config.interface.mjs} +1 -1
- package/{esm2015/lib/model/keyboard-service-config.interface.js → esm2020/lib/model/keyboard-service-config.interface.mjs} +0 -0
- package/esm2020/lib/model/keyboard.enum.mjs +35 -0
- package/{esm2015/lib/model/lib-config.interface.js → esm2020/lib/model/lib-config.interface.mjs} +1 -1
- package/{esm2015/lib/model/loading-config.interface.js → esm2020/lib/model/loading-config.interface.mjs} +0 -0
- package/{esm2015/lib/model/max-size.interface.js → esm2020/lib/model/max-size.interface.mjs} +0 -0
- package/{esm2015/lib/model/modal-gallery-config.interface.js → esm2020/lib/model/modal-gallery-config.interface.mjs} +1 -1
- package/esm2020/lib/model/plain-gallery-config.interface.mjs +55 -0
- package/{esm2015/lib/model/play-config.interface.js → esm2020/lib/model/play-config.interface.mjs} +0 -0
- package/{esm2015/lib/model/preview-config.interface.js → esm2020/lib/model/preview-config.interface.mjs} +0 -0
- package/{esm2015/lib/model/size.interface.js → esm2020/lib/model/size.interface.mjs} +0 -0
- package/{esm2015/lib/model/slide-config.interface.js → esm2020/lib/model/slide-config.interface.mjs} +0 -0
- package/esm2020/lib/services/config.service.mjs +396 -0
- package/{esm2015/lib/services/id-validator.service.js → esm2020/lib/services/id-validator.service.mjs} +3 -3
- package/{esm2015/lib/services/keyboard.service.js → esm2020/lib/services/keyboard.service.mjs} +3 -3
- package/{esm2015/lib/utils/image.util.js → esm2020/lib/utils/image.util.mjs} +0 -0
- package/esm2020/lib/utils/user-input.util.mjs +104 -0
- package/esm2020/public-api.mjs +42 -0
- package/fesm2015/ks89-angular-modal-gallery.mjs +5788 -0
- package/fesm2015/ks89-angular-modal-gallery.mjs.map +1 -0
- package/{fesm2015/ks89-angular-modal-gallery.js → fesm2020/ks89-angular-modal-gallery.mjs} +270 -432
- package/fesm2020/ks89-angular-modal-gallery.mjs.map +1 -0
- package/lib/components/accessible.component.d.ts +2 -2
- package/lib/components/carousel/carousel-previews/carousel-previews.component.d.ts +0 -7
- package/lib/components/carousel/carousel.component.d.ts +25 -67
- package/lib/components/current-image/current-image.component.d.ts +3 -3
- package/lib/components/modal-gallery/modal-gallery.component.d.ts +8 -21
- package/lib/components/modal-gallery/modal-gallery.service.d.ts +1 -0
- package/lib/components/plain-gallery/plain-gallery.component.d.ts +6 -10
- package/lib/components/previews/previews.component.d.ts +9 -2
- package/lib/directives/keyboard-navigation.directive.d.ts +1 -1
- package/lib/model/carousel-config.interface.d.ts +0 -1
- package/lib/model/keyboard-config.interface.d.ts +4 -4
- package/lib/model/keyboard.enum.d.ts +11 -8
- package/lib/model/lib-config.interface.d.ts +20 -7
- package/lib/model/modal-gallery-config.interface.d.ts +10 -2
- package/lib/model/plain-gallery-config.interface.d.ts +1 -9
- package/lib/utils/user-input.util.d.ts +35 -26
- package/package.json +27 -14
- package/public-api.d.ts +2 -2
- package/bundles/ks89-angular-modal-gallery.umd.js +0 -6221
- package/bundles/ks89-angular-modal-gallery.umd.js.map +0 -1
- package/esm2015/lib/components/carousel/carousel-previews/carousel-previews.component.js +0 -480
- package/esm2015/lib/components/carousel/carousel.component.js +0 -800
- package/esm2015/lib/components/current-image/current-image.component.js +0 -621
- package/esm2015/lib/components/current-image/loading-spinner/loading-spinner.component.js +0 -93
- package/esm2015/lib/components/dots/dots.component.js +0 -132
- package/esm2015/lib/components/modal-gallery/modal-gallery.component.js +0 -576
- package/esm2015/lib/components/modal-gallery/modal-gallery.service.js +0 -186
- package/esm2015/lib/components/plain-gallery/plain-gallery.component.js +0 -259
- package/esm2015/lib/components/previews/previews.component.js +0 -337
- package/esm2015/lib/components/upper-buttons/upper-buttons.component.js +0 -254
- package/esm2015/lib/model/keyboard.enum.js +0 -35
- package/esm2015/lib/model/plain-gallery-config.interface.js +0 -64
- package/esm2015/lib/services/config.service.js +0 -395
- package/esm2015/lib/utils/user-input.util.js +0 -95
- package/esm2015/public-api.js +0 -42
- package/fesm2015/ks89-angular-modal-gallery.js.map +0 -1
|
@@ -1,395 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
The MIT License (MIT)
|
|
3
|
-
|
|
4
|
-
Copyright (C) 2017-2021 Stefano Cappa (Ks89)
|
|
5
|
-
|
|
6
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
7
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
8
|
-
in the Software without restriction, including without limitation the rights
|
|
9
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
10
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
11
|
-
furnished to do so, subject to the following conditions:
|
|
12
|
-
|
|
13
|
-
The above copyright notice and this permission notice shall be included in all
|
|
14
|
-
copies or substantial portions of the Software.
|
|
15
|
-
|
|
16
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
17
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
18
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL THE
|
|
19
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
20
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
21
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
22
|
-
SOFTWARE.
|
|
23
|
-
*/
|
|
24
|
-
import { Injectable } from '@angular/core';
|
|
25
|
-
import { KS_DEFAULT_ACCESSIBILITY_CONFIG } from '../components/accessibility-default';
|
|
26
|
-
import { ButtonsStrategy } from '../model/buttons-config.interface';
|
|
27
|
-
import { AdvancedLayout, GridLayout, LineLayout, PlainGalleryStrategy } from '../model/plain-gallery-config.interface';
|
|
28
|
-
import { LoadingType } from '../model/loading-config.interface';
|
|
29
|
-
import { DescriptionStrategy } from '../model/description.interface';
|
|
30
|
-
import * as i0 from "@angular/core";
|
|
31
|
-
export const DEFAULT_PREVIEW_SIZE = { height: '50px', width: 'auto' };
|
|
32
|
-
export const DEFAULT_LAYOUT = new LineLayout(DEFAULT_PREVIEW_SIZE, { length: -1, wrap: false }, 'flex-start');
|
|
33
|
-
export const DEFAULT_PLAIN_CONFIG = {
|
|
34
|
-
strategy: PlainGalleryStrategy.ROW,
|
|
35
|
-
layout: DEFAULT_LAYOUT,
|
|
36
|
-
advanced: { aTags: false, additionalBackground: '50% 50%/cover' }
|
|
37
|
-
};
|
|
38
|
-
export const DEFAULT_LOADING = { enable: true, type: LoadingType.STANDARD };
|
|
39
|
-
export const DEFAULT_DESCRIPTION_STYLE = {
|
|
40
|
-
bgColor: 'rgba(0, 0, 0, .5)',
|
|
41
|
-
textColor: 'white',
|
|
42
|
-
marginTop: '0px',
|
|
43
|
-
marginBottom: '0px',
|
|
44
|
-
marginLeft: '0px',
|
|
45
|
-
marginRight: '0px'
|
|
46
|
-
};
|
|
47
|
-
export const DEFAULT_DESCRIPTION = {
|
|
48
|
-
strategy: DescriptionStrategy.ALWAYS_VISIBLE,
|
|
49
|
-
imageText: 'Image ',
|
|
50
|
-
numberSeparator: '/',
|
|
51
|
-
beforeTextDescription: ' - ',
|
|
52
|
-
style: DEFAULT_DESCRIPTION_STYLE
|
|
53
|
-
};
|
|
54
|
-
export const DEFAULT_CAROUSEL_DESCRIPTION = {
|
|
55
|
-
strategy: DescriptionStrategy.ALWAYS_HIDDEN,
|
|
56
|
-
imageText: 'Image ',
|
|
57
|
-
numberSeparator: '/',
|
|
58
|
-
beforeTextDescription: ' - ',
|
|
59
|
-
style: DEFAULT_DESCRIPTION_STYLE
|
|
60
|
-
};
|
|
61
|
-
export const DEFAULT_CURRENT_IMAGE_CONFIG = {
|
|
62
|
-
navigateOnClick: true,
|
|
63
|
-
loadingConfig: DEFAULT_LOADING,
|
|
64
|
-
description: DEFAULT_DESCRIPTION,
|
|
65
|
-
downloadable: false,
|
|
66
|
-
invertSwipe: false
|
|
67
|
-
};
|
|
68
|
-
export const DEFAULT_CAROUSEL_IMAGE_CONFIG = {
|
|
69
|
-
description: DEFAULT_CAROUSEL_DESCRIPTION,
|
|
70
|
-
invertSwipe: false
|
|
71
|
-
};
|
|
72
|
-
export const DEFAULT_CURRENT_CAROUSEL_CONFIG = {
|
|
73
|
-
maxWidth: '100%',
|
|
74
|
-
maxHeight: '400px',
|
|
75
|
-
showArrows: true,
|
|
76
|
-
objectFit: 'cover',
|
|
77
|
-
keyboardEnable: true,
|
|
78
|
-
modalGalleryEnable: false,
|
|
79
|
-
legacyIE11Mode: false
|
|
80
|
-
};
|
|
81
|
-
export const DEFAULT_CURRENT_CAROUSEL_PLAY = {
|
|
82
|
-
autoPlay: true,
|
|
83
|
-
interval: 5000,
|
|
84
|
-
pauseOnHover: true
|
|
85
|
-
};
|
|
86
|
-
export const DEFAULT_CAROUSEL_BREAKPOINTS = { xSmall: 100, small: 100, medium: 150, large: 200, xLarge: 200 };
|
|
87
|
-
export const DEFAULT_CAROUSEL_PREVIEWS_CONFIG = {
|
|
88
|
-
visible: true,
|
|
89
|
-
number: 4,
|
|
90
|
-
arrows: true,
|
|
91
|
-
clickable: true,
|
|
92
|
-
width: 100 / 4 + '%',
|
|
93
|
-
maxHeight: '200px',
|
|
94
|
-
breakpoints: DEFAULT_CAROUSEL_BREAKPOINTS
|
|
95
|
-
};
|
|
96
|
-
export const DEFAULT_KEYBOARD_SERVICE_CONFIG = {
|
|
97
|
-
shortcuts: ['ctrl+s', 'meta+s'],
|
|
98
|
-
disableSsrWorkaround: false
|
|
99
|
-
};
|
|
100
|
-
export const DEFAULT_SLIDE_CONFIG = {
|
|
101
|
-
infinite: false,
|
|
102
|
-
playConfig: { autoPlay: false, interval: 5000, pauseOnHover: true },
|
|
103
|
-
sidePreviews: { show: true, size: { width: '100px', height: 'auto' } }
|
|
104
|
-
};
|
|
105
|
-
export const DEFAULT_PREVIEW_CONFIG = {
|
|
106
|
-
visible: true,
|
|
107
|
-
number: 3,
|
|
108
|
-
arrows: true,
|
|
109
|
-
clickable: true,
|
|
110
|
-
size: DEFAULT_PREVIEW_SIZE
|
|
111
|
-
};
|
|
112
|
-
const DEFAULT_CONFIG = Object.freeze({
|
|
113
|
-
slideConfig: DEFAULT_SLIDE_CONFIG,
|
|
114
|
-
accessibilityConfig: KS_DEFAULT_ACCESSIBILITY_CONFIG,
|
|
115
|
-
previewConfig: DEFAULT_PREVIEW_CONFIG,
|
|
116
|
-
buttonsConfig: { visible: true, strategy: ButtonsStrategy.DEFAULT },
|
|
117
|
-
dotsConfig: { visible: true },
|
|
118
|
-
plainGalleryConfig: DEFAULT_PLAIN_CONFIG,
|
|
119
|
-
currentImageConfig: DEFAULT_CURRENT_IMAGE_CONFIG,
|
|
120
|
-
keyboardConfig: undefined,
|
|
121
|
-
carouselConfig: DEFAULT_CURRENT_CAROUSEL_CONFIG,
|
|
122
|
-
carouselImageConfig: DEFAULT_CAROUSEL_IMAGE_CONFIG,
|
|
123
|
-
carouselPreviewsConfig: DEFAULT_CAROUSEL_PREVIEWS_CONFIG,
|
|
124
|
-
carouselPlayConfig: DEFAULT_CURRENT_CAROUSEL_PLAY,
|
|
125
|
-
carouselDotsConfig: { visible: true },
|
|
126
|
-
enableCloseOutside: true,
|
|
127
|
-
keyboardServiceConfig: DEFAULT_KEYBOARD_SERVICE_CONFIG
|
|
128
|
-
});
|
|
129
|
-
/**
|
|
130
|
-
* Service to handle library configuration in a unique place
|
|
131
|
-
*/
|
|
132
|
-
export class ConfigService {
|
|
133
|
-
constructor() {
|
|
134
|
-
this.configMap = new Map();
|
|
135
|
-
}
|
|
136
|
-
getConfig(id) {
|
|
137
|
-
this.initIfNotExists(id);
|
|
138
|
-
return this.configMap.get(id);
|
|
139
|
-
}
|
|
140
|
-
setConfig(id, obj) {
|
|
141
|
-
this.initIfNotExists(id);
|
|
142
|
-
if (!obj) {
|
|
143
|
-
return;
|
|
144
|
-
}
|
|
145
|
-
if (!DEFAULT_CONFIG ||
|
|
146
|
-
!DEFAULT_CONFIG.slideConfig ||
|
|
147
|
-
!DEFAULT_CONFIG.slideConfig.sidePreviews ||
|
|
148
|
-
!DEFAULT_CONFIG.previewConfig ||
|
|
149
|
-
!DEFAULT_CONFIG.previewConfig.size ||
|
|
150
|
-
!DEFAULT_CONFIG.previewConfig.number ||
|
|
151
|
-
!DEFAULT_CONFIG.plainGalleryConfig ||
|
|
152
|
-
!DEFAULT_CONFIG.currentImageConfig ||
|
|
153
|
-
!DEFAULT_CONFIG.currentImageConfig ||
|
|
154
|
-
!DEFAULT_CONFIG.currentImageConfig.description ||
|
|
155
|
-
!DEFAULT_CONFIG.carouselImageConfig ||
|
|
156
|
-
!DEFAULT_CONFIG.carouselImageConfig.description ||
|
|
157
|
-
!DEFAULT_CONFIG.carouselPreviewsConfig ||
|
|
158
|
-
!DEFAULT_CONFIG.carouselPreviewsConfig.breakpoints ||
|
|
159
|
-
!DEFAULT_CAROUSEL_PREVIEWS_CONFIG.number) {
|
|
160
|
-
throw new Error('Internal library error - DEFAULT_CONFIG must be fully initialized!!!');
|
|
161
|
-
}
|
|
162
|
-
const newConfig = Object.assign({}, this.configMap.get(id));
|
|
163
|
-
if (obj.slideConfig) {
|
|
164
|
-
let playConfig;
|
|
165
|
-
let sidePreviews;
|
|
166
|
-
let size;
|
|
167
|
-
if (obj.slideConfig.playConfig) {
|
|
168
|
-
playConfig = Object.assign({}, DEFAULT_CONFIG.slideConfig.playConfig, obj.slideConfig.playConfig);
|
|
169
|
-
}
|
|
170
|
-
else {
|
|
171
|
-
playConfig = DEFAULT_CONFIG.slideConfig.playConfig;
|
|
172
|
-
}
|
|
173
|
-
if (obj.slideConfig.sidePreviews) {
|
|
174
|
-
if (obj.slideConfig.sidePreviews.size) {
|
|
175
|
-
size = Object.assign({}, DEFAULT_CONFIG.slideConfig.sidePreviews.size, obj.slideConfig.sidePreviews.size);
|
|
176
|
-
}
|
|
177
|
-
else {
|
|
178
|
-
size = DEFAULT_CONFIG.slideConfig.sidePreviews.size;
|
|
179
|
-
}
|
|
180
|
-
sidePreviews = Object.assign({}, DEFAULT_CONFIG.slideConfig.sidePreviews, obj.slideConfig.sidePreviews);
|
|
181
|
-
}
|
|
182
|
-
else {
|
|
183
|
-
sidePreviews = DEFAULT_CONFIG.slideConfig.sidePreviews;
|
|
184
|
-
size = DEFAULT_CONFIG.slideConfig.sidePreviews.size;
|
|
185
|
-
}
|
|
186
|
-
const newSlideConfig = Object.assign({}, DEFAULT_CONFIG.slideConfig, obj.slideConfig);
|
|
187
|
-
newSlideConfig.playConfig = playConfig;
|
|
188
|
-
newSlideConfig.sidePreviews = sidePreviews;
|
|
189
|
-
newSlideConfig.sidePreviews.size = size;
|
|
190
|
-
newConfig.slideConfig = newSlideConfig;
|
|
191
|
-
}
|
|
192
|
-
if (obj.accessibilityConfig) {
|
|
193
|
-
newConfig.accessibilityConfig = Object.assign({}, DEFAULT_CONFIG.accessibilityConfig, obj.accessibilityConfig);
|
|
194
|
-
}
|
|
195
|
-
if (obj.previewConfig) {
|
|
196
|
-
let size;
|
|
197
|
-
let num;
|
|
198
|
-
if (obj.previewConfig.size) {
|
|
199
|
-
size = Object.assign({}, DEFAULT_CONFIG.previewConfig.size, obj.previewConfig.size);
|
|
200
|
-
}
|
|
201
|
-
else {
|
|
202
|
-
size = DEFAULT_CONFIG.previewConfig.size;
|
|
203
|
-
}
|
|
204
|
-
if (obj.previewConfig.number) {
|
|
205
|
-
if (obj.previewConfig.number <= 0) {
|
|
206
|
-
// if number is <= 0 reset to default
|
|
207
|
-
num = DEFAULT_CONFIG.previewConfig.number;
|
|
208
|
-
}
|
|
209
|
-
else {
|
|
210
|
-
num = obj.previewConfig.number;
|
|
211
|
-
}
|
|
212
|
-
}
|
|
213
|
-
else {
|
|
214
|
-
num = DEFAULT_CONFIG.previewConfig.number;
|
|
215
|
-
}
|
|
216
|
-
const newPreviewConfig = Object.assign({}, DEFAULT_CONFIG.previewConfig, obj.previewConfig);
|
|
217
|
-
newPreviewConfig.size = size;
|
|
218
|
-
newPreviewConfig.number = num;
|
|
219
|
-
newConfig.previewConfig = newPreviewConfig;
|
|
220
|
-
}
|
|
221
|
-
if (obj.buttonsConfig) {
|
|
222
|
-
newConfig.buttonsConfig = Object.assign({}, DEFAULT_CONFIG.buttonsConfig, obj.buttonsConfig);
|
|
223
|
-
}
|
|
224
|
-
if (obj.dotsConfig) {
|
|
225
|
-
newConfig.dotsConfig = Object.assign({}, DEFAULT_CONFIG.dotsConfig, obj.dotsConfig);
|
|
226
|
-
}
|
|
227
|
-
if (obj.plainGalleryConfig) {
|
|
228
|
-
let advanced;
|
|
229
|
-
let layout;
|
|
230
|
-
if (obj.plainGalleryConfig.advanced) {
|
|
231
|
-
advanced = Object.assign({}, DEFAULT_CONFIG.plainGalleryConfig.advanced, obj.plainGalleryConfig.advanced);
|
|
232
|
-
}
|
|
233
|
-
else {
|
|
234
|
-
advanced = DEFAULT_CONFIG.plainGalleryConfig.advanced;
|
|
235
|
-
}
|
|
236
|
-
if (obj.plainGalleryConfig.layout) {
|
|
237
|
-
// it isn't mandatory to use assign, because obj.plainGalleryConfig.layout is an instance of class (LineaLayout, GridLayout, AdvancedLayout)
|
|
238
|
-
layout = obj.plainGalleryConfig.layout;
|
|
239
|
-
}
|
|
240
|
-
else {
|
|
241
|
-
layout = DEFAULT_CONFIG.plainGalleryConfig.layout;
|
|
242
|
-
}
|
|
243
|
-
const newPlainGalleryConfig = Object.assign({}, DEFAULT_CONFIG.plainGalleryConfig, obj.plainGalleryConfig);
|
|
244
|
-
newPlainGalleryConfig.layout = layout;
|
|
245
|
-
newPlainGalleryConfig.advanced = advanced;
|
|
246
|
-
newConfig.plainGalleryConfig = initPlainGalleryConfig(newPlainGalleryConfig);
|
|
247
|
-
}
|
|
248
|
-
if (obj.currentImageConfig) {
|
|
249
|
-
let loading;
|
|
250
|
-
let description;
|
|
251
|
-
let descriptionStyle;
|
|
252
|
-
if (obj.currentImageConfig.loadingConfig) {
|
|
253
|
-
loading = Object.assign({}, DEFAULT_CONFIG.currentImageConfig.loadingConfig, obj.currentImageConfig.loadingConfig);
|
|
254
|
-
}
|
|
255
|
-
else {
|
|
256
|
-
loading = DEFAULT_CONFIG.currentImageConfig.loadingConfig;
|
|
257
|
-
}
|
|
258
|
-
if (obj.currentImageConfig.description) {
|
|
259
|
-
description = Object.assign({}, DEFAULT_CONFIG.currentImageConfig.description, obj.currentImageConfig.description);
|
|
260
|
-
if (obj.currentImageConfig.description.style) {
|
|
261
|
-
descriptionStyle = Object.assign({}, DEFAULT_CONFIG.currentImageConfig.description.style, obj.currentImageConfig.description.style);
|
|
262
|
-
}
|
|
263
|
-
else {
|
|
264
|
-
descriptionStyle = DEFAULT_CONFIG.currentImageConfig.description.style;
|
|
265
|
-
}
|
|
266
|
-
}
|
|
267
|
-
else {
|
|
268
|
-
description = DEFAULT_CONFIG.currentImageConfig.description;
|
|
269
|
-
descriptionStyle = DEFAULT_CONFIG.currentImageConfig.description.style;
|
|
270
|
-
}
|
|
271
|
-
const newCurrentImageConfig = Object.assign({}, DEFAULT_CONFIG.currentImageConfig, obj.currentImageConfig);
|
|
272
|
-
newCurrentImageConfig.loadingConfig = loading;
|
|
273
|
-
newCurrentImageConfig.description = description;
|
|
274
|
-
newCurrentImageConfig.description.style = descriptionStyle;
|
|
275
|
-
newConfig.currentImageConfig = newCurrentImageConfig;
|
|
276
|
-
}
|
|
277
|
-
if (obj.keyboardConfig) {
|
|
278
|
-
newConfig.keyboardConfig = Object.assign({}, DEFAULT_CONFIG.keyboardConfig, obj.keyboardConfig);
|
|
279
|
-
}
|
|
280
|
-
// carousel
|
|
281
|
-
if (obj.carouselConfig) {
|
|
282
|
-
newConfig.carouselConfig = Object.assign({}, DEFAULT_CONFIG.carouselConfig, obj.carouselConfig);
|
|
283
|
-
}
|
|
284
|
-
if (obj.carouselImageConfig) {
|
|
285
|
-
let description;
|
|
286
|
-
let descriptionStyle;
|
|
287
|
-
if (obj.carouselImageConfig.description) {
|
|
288
|
-
description = Object.assign({}, DEFAULT_CONFIG.carouselImageConfig.description, obj.carouselImageConfig.description);
|
|
289
|
-
if (obj.carouselImageConfig.description.style) {
|
|
290
|
-
descriptionStyle = Object.assign({}, DEFAULT_CONFIG.carouselImageConfig.description.style, obj.carouselImageConfig.description.style);
|
|
291
|
-
}
|
|
292
|
-
else {
|
|
293
|
-
descriptionStyle = DEFAULT_CONFIG.carouselImageConfig.description.style;
|
|
294
|
-
}
|
|
295
|
-
}
|
|
296
|
-
else {
|
|
297
|
-
description = DEFAULT_CONFIG.carouselImageConfig.description;
|
|
298
|
-
descriptionStyle = DEFAULT_CONFIG.carouselImageConfig.description.style;
|
|
299
|
-
}
|
|
300
|
-
const newCarouselImageConfig = Object.assign({}, DEFAULT_CONFIG.carouselImageConfig, obj.carouselImageConfig);
|
|
301
|
-
newCarouselImageConfig.description = description;
|
|
302
|
-
newCarouselImageConfig.description.style = descriptionStyle;
|
|
303
|
-
newConfig.carouselImageConfig = newCarouselImageConfig;
|
|
304
|
-
}
|
|
305
|
-
if (obj.carouselPlayConfig) {
|
|
306
|
-
// check values
|
|
307
|
-
if (obj.carouselPlayConfig.interval <= 0) {
|
|
308
|
-
throw new Error(`Carousel's interval must be a number >= 0`);
|
|
309
|
-
}
|
|
310
|
-
newConfig.carouselPlayConfig = Object.assign({}, DEFAULT_CONFIG.carouselPlayConfig, obj.carouselPlayConfig);
|
|
311
|
-
}
|
|
312
|
-
if (obj.carouselPreviewsConfig) {
|
|
313
|
-
// check values
|
|
314
|
-
let num;
|
|
315
|
-
let breakpoints;
|
|
316
|
-
if (!obj.carouselPreviewsConfig.number || obj.carouselPreviewsConfig.number <= 0) {
|
|
317
|
-
num = DEFAULT_CAROUSEL_PREVIEWS_CONFIG.number;
|
|
318
|
-
}
|
|
319
|
-
else {
|
|
320
|
-
num = obj.carouselPreviewsConfig.number;
|
|
321
|
-
}
|
|
322
|
-
if (obj.carouselPreviewsConfig.breakpoints) {
|
|
323
|
-
breakpoints = Object.assign({}, DEFAULT_CONFIG.carouselPreviewsConfig.breakpoints, obj.carouselPreviewsConfig.breakpoints);
|
|
324
|
-
}
|
|
325
|
-
else {
|
|
326
|
-
breakpoints = DEFAULT_CONFIG.carouselPreviewsConfig.breakpoints;
|
|
327
|
-
}
|
|
328
|
-
newConfig.carouselPreviewsConfig = Object.assign({}, DEFAULT_CONFIG.carouselPreviewsConfig, obj.carouselPreviewsConfig);
|
|
329
|
-
newConfig.carouselPreviewsConfig.number = num;
|
|
330
|
-
newConfig.carouselPreviewsConfig.breakpoints = breakpoints;
|
|
331
|
-
// Init preview image width based on the number of previews in PreviewConfig
|
|
332
|
-
// Don't move this line above, because I need to be sure that both configPreview.number
|
|
333
|
-
// and configPreview.size are initialized
|
|
334
|
-
newConfig.carouselPreviewsConfig.width = 100 / newConfig.carouselPreviewsConfig.number + '%';
|
|
335
|
-
}
|
|
336
|
-
if (obj.carouselDotsConfig) {
|
|
337
|
-
newConfig.carouselDotsConfig = Object.assign({}, DEFAULT_CONFIG.carouselDotsConfig, obj.carouselDotsConfig);
|
|
338
|
-
}
|
|
339
|
-
if (obj.enableCloseOutside === undefined) {
|
|
340
|
-
newConfig.enableCloseOutside = DEFAULT_CONFIG.enableCloseOutside;
|
|
341
|
-
}
|
|
342
|
-
else {
|
|
343
|
-
newConfig.enableCloseOutside = obj.enableCloseOutside;
|
|
344
|
-
}
|
|
345
|
-
if (obj.keyboardServiceConfig) {
|
|
346
|
-
newConfig.keyboardServiceConfig = Object.assign({}, DEFAULT_KEYBOARD_SERVICE_CONFIG, obj.keyboardServiceConfig);
|
|
347
|
-
}
|
|
348
|
-
this.configMap.set(id, newConfig);
|
|
349
|
-
}
|
|
350
|
-
initIfNotExists(id) {
|
|
351
|
-
if (!this.configMap.has(id)) {
|
|
352
|
-
this.configMap.set(id, DEFAULT_CONFIG);
|
|
353
|
-
}
|
|
354
|
-
}
|
|
355
|
-
}
|
|
356
|
-
ConfigService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "12.1.1", ngImport: i0, type: ConfigService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
357
|
-
ConfigService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "12.1.1", ngImport: i0, type: ConfigService, providedIn: 'root' });
|
|
358
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "12.1.1", ngImport: i0, type: ConfigService, decorators: [{
|
|
359
|
-
type: Injectable,
|
|
360
|
-
args: [{ providedIn: 'root' }]
|
|
361
|
-
}] });
|
|
362
|
-
/**
|
|
363
|
-
* Function to build and return a `PlainGalleryConfig` object, proving also default values and validating the input object.
|
|
364
|
-
* @param plainGalleryConfig object with the config requested by user
|
|
365
|
-
* @returns PlainGalleryConfig the plain gallery configuration
|
|
366
|
-
* @throws an Error if layout and strategy aren't compatible
|
|
367
|
-
*/
|
|
368
|
-
function initPlainGalleryConfig(plainGalleryConfig) {
|
|
369
|
-
const newPlayGalleryConfig = Object.assign({}, DEFAULT_CONFIG.plainGalleryConfig, plainGalleryConfig);
|
|
370
|
-
if (newPlayGalleryConfig.layout instanceof LineLayout) {
|
|
371
|
-
if (newPlayGalleryConfig.strategy !== PlainGalleryStrategy.ROW && newPlayGalleryConfig.strategy !== PlainGalleryStrategy.COLUMN) {
|
|
372
|
-
throw new Error('LineLayout requires either ROW or COLUMN strategy');
|
|
373
|
-
}
|
|
374
|
-
if (!newPlayGalleryConfig.layout || !newPlayGalleryConfig.layout.breakConfig) {
|
|
375
|
-
throw new Error('Both layout and breakConfig must be valid');
|
|
376
|
-
}
|
|
377
|
-
}
|
|
378
|
-
if (newPlayGalleryConfig.layout instanceof GridLayout) {
|
|
379
|
-
if (newPlayGalleryConfig.strategy !== PlainGalleryStrategy.GRID) {
|
|
380
|
-
throw new Error('GridLayout requires GRID strategy');
|
|
381
|
-
}
|
|
382
|
-
if (!newPlayGalleryConfig.layout || !newPlayGalleryConfig.layout.breakConfig) {
|
|
383
|
-
throw new Error('Both layout and breakConfig must be valid');
|
|
384
|
-
}
|
|
385
|
-
// force wrap for grid layout
|
|
386
|
-
newPlayGalleryConfig.layout.breakConfig.wrap = true;
|
|
387
|
-
}
|
|
388
|
-
if (newPlayGalleryConfig.layout instanceof AdvancedLayout) {
|
|
389
|
-
if (newPlayGalleryConfig.strategy !== PlainGalleryStrategy.CUSTOM) {
|
|
390
|
-
throw new Error('AdvancedLayout requires CUSTOM strategy');
|
|
391
|
-
}
|
|
392
|
-
}
|
|
393
|
-
return newPlayGalleryConfig;
|
|
394
|
-
}
|
|
395
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLnNlcnZpY2UuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rczg5L2FuZ3VsYXItbW9kYWwtZ2FsbGVyeS9zcmMvbGliL3NlcnZpY2VzL2NvbmZpZy5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0JHO0FBRUgsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUczQyxPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSxxQ0FBcUMsQ0FBQztBQUd0RixPQUFPLEVBQWlCLGVBQWUsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBRW5GLE9BQU8sRUFBRSxjQUFjLEVBQUUsVUFBVSxFQUFFLFVBQVUsRUFBc0Isb0JBQW9CLEVBQUUsTUFBTSx5Q0FBeUMsQ0FBQztBQUUzSSxPQUFPLEVBQWlCLFdBQVcsRUFBRSxNQUFNLG1DQUFtQyxDQUFDO0FBQy9FLE9BQU8sRUFBZSxtQkFBbUIsRUFBb0IsTUFBTSxnQ0FBZ0MsQ0FBQzs7QUFPcEcsTUFBTSxDQUFDLE1BQU0sb0JBQW9CLEdBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsQ0FBQztBQUM1RSxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQWUsSUFBSSxVQUFVLENBQUMsb0JBQW9CLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFLFlBQVksQ0FBQyxDQUFDO0FBQzFILE1BQU0sQ0FBQyxNQUFNLG9CQUFvQixHQUF1QjtJQUN0RCxRQUFRLEVBQUUsb0JBQW9CLENBQUMsR0FBRztJQUNsQyxNQUFNLEVBQUUsY0FBYztJQUN0QixRQUFRLEVBQUUsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLG9CQUFvQixFQUFFLGVBQWUsRUFBRTtDQUNsRSxDQUFDO0FBQ0YsTUFBTSxDQUFDLE1B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QixDQUFDLEdBQUcsSUFBSSxvQkFBb0IsQ0FBQyxRQUFRLEtBQUssb0JBQW9CLENBQUMsTUFBTSxFQUFFO1lBQy9ILE1BQU0sSUFBSSxLQUFLLENBQUMsbURBQW1ELENBQUMsQ0FBQztTQUN0RTtRQUNELElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFO1lBQzVFLE1BQU0sSUFBSSxLQUFLLENBQUMsMkNBQTJDLENBQUMsQ0FBQztTQUM5RDtLQUNGO0lBRUQsSUFBSSxvQkFBb0IsQ0FBQyxNQUFNLFlBQVksVUFBVSxFQUFFO1FBQ3JELElBQUksb0JBQW9CLENBQUMsUUFBUSxLQUFLLG9CQUFvQixDQUFDLElBQUksRUFBRTtZQUMvRCxNQUFNLElBQUksS0FBSyxDQUFDLG1DQUFtQyxDQUFDLENBQUM7U0FDdEQ7UUFDRCxJQUFJLENBQUMsb0JBQW9CLENBQUMsTUFBTSxJQUFJLENBQUMsb0JBQW9CLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRTtZQUM1RSxNQUFNLElBQUksS0FBSyxDQUFDLDJDQUEyQyxDQUFDLENBQUM7U0FDOUQ7UUFDRCw2QkFBNkI7UUFDN0Isb0JBQW9CLENBQUMsTUFBTSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDO0tBQ3JEO0lBRUQsSUFBSSxvQkFBb0IsQ0FBQyxNQUFNLFlBQVksY0FBYyxFQUFFO1FBQ3pELElBQUksb0JBQW9CLENBQUMsUUFBUSxLQUFLLG9CQUFvQixDQUFDLE1BQU0sRUFBRTtZQUNqRSxNQUFNLElBQUksS0FBSyxDQUFDLHlDQUF5QyxDQUFDLENBQUM7U0FDNUQ7S0FDRjtJQUNELE9BQU8sb0JBQW9CLENBQUM7QUFDOUIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gVGhlIE1JVCBMaWNlbnNlIChNSVQpXG5cbiBDb3B5cmlnaHQgKEMpIDIwMTctMjAyMSBTdGVmYW5vIENhcHBhIChLczg5KVxuXG4gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbiBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG5cbiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGxcbiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuXG4gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT04gSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRVxuIFNPRlRXQVJFLlxuICovXG5cbmltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFNpZGVQcmV2aWV3c0NvbmZpZywgU2xpZGVDb25maWcgfSBmcm9tICcuLi9tb2RlbC9zbGlkZS1jb25maWcuaW50ZXJmYWNlJztcbmltcG9ydCB7IFBsYXlDb25maWcgfSBmcm9tICcuLi9tb2RlbC9wbGF5LWNvbmZpZy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgS1NfREVGQVVMVF9BQ0NFU1NJQklMSVRZX0NPTkZJRyB9IGZyb20gJy4uL2NvbXBvbmVudHMvYWNjZXNzaWJpbGl0eS1kZWZhdWx0JztcbmltcG9ydCB7IFByZXZpZXdDb25maWcgfSBmcm9tICcuLi9tb2RlbC9wcmV2aWV3LWNvbmZpZy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgU2l6ZSB9IGZyb20gJy4uL21vZGVsL3NpemUuaW50ZXJmYWNlJztcbmltcG9ydCB7IEJ1dHRvbnNDb25maWcsIEJ1dHRvbnNTdHJhdGVneSB9IGZyb20gJy4uL21vZGVsL2J1dHRvbnMtY29uZmlnLmludGVyZmFjZSc7XG5pbXBvcnQgeyBEb3RzQ29uZmlnIH0gZnJvbSAnLi4vbW9kZWwvZG90cy1jb25maWcuaW50ZXJmYWNlJztcbmltcG9ydCB7IEFkdmFuY2VkTGF5b3V0LCBHcmlkTGF5b3V0LCBMaW5lTGF5b3V0LCBQbGFpbkdhbGxlcnlDb25maWcsIFBsYWluR2FsbGVyeVN0cmF0ZWd5IH0gZnJvbSAnLi4vbW9kZWwvcGxhaW4tZ2FsbGVyeS1jb25maWcuaW50ZXJmYWNlJztcbmltcG9ydCB7IEN1cnJlbnRJbWFnZUNvbmZpZyB9IGZyb20gJy4uL21vZGVsL2N1cnJlbnQtaW1hZ2UtY29uZmlnLmludGVyZmFjZSc7XG5pbXBvcnQgeyBMb2FkaW5nQ29uZmlnLCBMb2FkaW5nVHlwZSB9IGZyb20gJy4uL21vZGVsL2xvYWRpbmctY29uZmlnLmludGVyZmFjZSc7XG5pbXBvcnQgeyBEZXNjcmlwdGlvbiwgRGVzY3JpcHRpb25TdHJhdGVneSwgRGVzY3JpcHRpb25TdHlsZSB9IGZyb20gJy4uL21vZGVsL2Rlc2NyaXB0aW9uLmludGVyZmFjZSc7XG5pbXBvcnQgeyBDYXJvdXNlbENvbmZpZyB9IGZyb20gJy4uL21vZGVsL2Nhcm91c2VsLWNvbmZpZy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQ2Fyb3VzZWxJbWFnZUNvbmZpZyB9IGZyb20gJy4uL21vZGVsL2Nhcm91c2VsLWltYWdlLWNvbmZpZy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgQnJlYWtwb2ludHNDb25maWcsIENhcm91c2VsUHJldmlld0NvbmZpZyB9IGZyb20gJy4uL21vZGVsL2Nhcm91c2VsLXByZXZpZXctY29uZmlnLmludGVyZmFjZSc7XG5pbXBvcnQgeyBLZXlib2FyZFNlcnZpY2VDb25maWcgfSBmcm9tICcuLi9tb2RlbC9rZXlib2FyZC1zZXJ2aWNlLWNvbmZpZy5pbnRlcmZhY2UnO1xuaW1wb3J0IHsgTGliQ29uZmlnIH0gZnJvbSAnLi4vbW9kZWwvbGliLWNvbmZpZy5pbnRlcmZhY2UnO1xuXG5leHBvcnQgY29uc3QgREVGQVVMVF9QUkVWSUVXX1NJWkU6IFNpemUgPSB7IGhlaWdodDogJzUwcHgnLCB3aWR0aDogJ2F1dG8nIH07XG5leHBvcnQgY29uc3QgREVGQVVMVF9MQVlPVVQ6IExpbmVMYXlvdXQgPSBuZXcgTGluZUxheW91dChERUZBVUxUX1BSRVZJRVdfU0laRSwgeyBsZW5ndGg6IC0xLCB3cmFwOiBmYWxzZSB9LCAnZmxleC1zdGFydCcpO1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfUExBSU5fQ09ORklHOiBQbGFpbkdhbGxlcnlDb25maWcgPSB7XG4gIHN0cmF0ZWd5OiBQbGFpbkdhbGxlcnlTdHJhdGVneS5ST1csXG4gIGxheW91dDogREVGQVVMVF9MQVlPVVQsXG4gIGFkdmFuY2VkOiB7IGFUYWdzOiBmYWxzZSwgYWRkaXRpb25hbEJhY2tncm91bmQ6ICc1MCUgNTAlL2NvdmVyJyB9XG59O1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfTE9BRElORzogTG9hZGluZ0NvbmZpZyA9IHsgZW5hYmxlOiB0cnVlLCB0eXBlOiBMb2FkaW5nVHlwZS5TVEFOREFSRCB9O1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfREVTQ1JJUFRJT05fU1RZTEU6IERlc2NyaXB0aW9uU3R5bGUgPSB7XG4gIGJnQ29sb3I6ICdyZ2JhKDAsIDAsIDAsIC41KScsXG4gIHRleHRDb2xvcjogJ3doaXRlJyxcbiAgbWFyZ2luVG9wOiAnMHB4JyxcbiAgbWFyZ2luQm90dG9tOiAnMHB4JyxcbiAgbWFyZ2luTGVmdDogJzBweCcsXG4gIG1hcmdpblJpZ2h0OiAnMHB4J1xufTtcbmV4cG9ydCBjb25zdCBERUZBVUxUX0RFU0NSSVBUSU9OOiBEZXNjcmlwdGlvbiA9IHtcbiAgc3RyYXRlZ3k6IERlc2NyaXB0aW9uU3RyYXRlZ3kuQUxXQVlTX1ZJU0lCTEUsXG4gIGltYWdlVGV4dDogJ0ltYWdlICcsXG4gIG51bWJlclNlcGFyYXRvcjogJy8nLFxuICBiZWZvcmVUZXh0RGVzY3JpcHRpb246ICcgLSAnLFxuICBzdHlsZTogREVGQVVMVF9ERVNDUklQVElPTl9TVFlMRVxufTtcbmV4cG9ydCBjb25zdCBERUZBVUxUX0NBUk9VU0VMX0RFU0NSSVBUSU9OOiBEZXNjcmlwdGlvbiA9IHtcbiAgc3RyYXRlZ3k6IERlc2NyaXB0aW9uU3RyYXRlZ3kuQUxXQVlTX0hJRERFTixcbiAgaW1hZ2VUZXh0OiAnSW1hZ2UgJyxcbiAgbnVtYmVyU2VwYXJhdG9yOiAnLycsXG4gIGJlZm9yZVRleHREZXNjcmlwdGlvbjogJyAtICcsXG4gIHN0eWxlOiBERUZBVUxUX0RFU0NSSVBUSU9OX1NUWUxFXG59O1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfQ1VSUkVOVF9JTUFHRV9DT05GSUc6IEN1cnJlbnRJbWFnZUNvbmZpZyA9IHtcbiAgbmF2aWdhdGVPbkNsaWNrOiB0cnVlLFxuICBsb2FkaW5nQ29uZmlnOiBERUZBVUxUX0xPQURJTkcsXG4gIGRlc2NyaXB0aW9uOiBERUZBVUxUX0RFU0NSSVBUSU9OLFxuICBkb3dubG9hZGFibGU6IGZhbHNlLFxuICBpbnZlcnRTd2lwZTogZmFsc2Vcbn07XG5leHBvcnQgY29uc3QgREVGQVVMVF9DQVJPVVNFTF9JTUFHRV9DT05GSUc6IENhcm91c2VsSW1hZ2VDb25maWcgPSB7XG4gIGRlc2NyaXB0aW9uOiBERUZBVUxUX0NBUk9VU0VMX0RFU0NSSVBUSU9OLFxuICBpbnZlcnRTd2lwZTogZmFsc2Vcbn07XG5leHBvcnQgY29uc3QgREVGQVVMVF9DVVJSRU5UX0NBUk9VU0VMX0NPTkZJRzogQ2Fyb3VzZWxDb25maWcgPSB7XG4gIG1heFdpZHRoOiAnMTAwJScsXG4gIG1heEhlaWdodDogJzQwMHB4JyxcbiAgc2hvd0Fycm93czogdHJ1ZSxcbiAgb2JqZWN0Rml0OiAnY292ZXInLFxuICBrZXlib2FyZEVuYWJsZTogdHJ1ZSxcbiAgbW9kYWxHYWxsZXJ5RW5hYmxlOiBmYWxzZSxcbiAgbGVnYWN5SUUxMU1vZGU6IGZhbHNlXG59O1xuZXhwb3J0IGNvbnN0IERFRkFVTFRfQ1VSUkVOVF9DQVJPVVNFTF9QTEFZOiBQbGF5Q29uZmlnID0ge1xuICBhdXRvUGxheTogdHJ1ZSxcbiAgaW50ZXJ2YWw6IDUwMDAsXG4gIHBhdXNlT25Ib3ZlcjogdHJ1ZVxufTtcblxuZXhwb3J0IGNvbnN0IERFRkFVTFRfQ0FST1VTRUxfQlJFQUtQT0lOVFM6IEJyZWFrcG9pbnRzQ29uZmlnID0geyB4U21hbGw6IDEwMCwgc21hbGw6IDEwMCwgbWVkaXVtOiAxNTAsIGxhcmdlOiAyMDAsIHhMYXJnZTogMjAwIH07XG5leHBvcnQgY29uc3QgREVGQVVMVF9DQVJPVVNFTF9QUkVWSUVXU19DT05GSUc6IENhcm91c2VsUHJldmlld0NvbmZpZyA9IHtcbiAgdmlzaWJsZTogdHJ1ZSxcbiAgbnVtYmVyOiA0LFxuICBhcnJvd3M6IHRydWUsXG4gIGNsaWNrYWJsZTogdHJ1ZSxcbiAgd2lkdGg6IDEwMCAvIDQgKyAnJScsXG4gIG1heEhlaWdodDogJzIwMHB4JyxcbiAgYnJlYWtwb2ludHM6IERFRkFVTFRfQ0FST1VTRUxfQlJFQUtQT0lOVFNcbn07XG5leHBvcnQgY29uc3QgREVGQVVMVF9LRVlCT0FSRF9TRVJWSUNFX0NPTkZJRzogS2V5Ym9hcmRTZXJ2aWNlQ29uZmlnID0ge1xuICBzaG9ydGN1dHM6IFsnY3RybCtzJywgJ21ldGErcyddLFxuICBkaXNhYmxlU3NyV29ya2Fyb3VuZDogZmFsc2Vcbn07XG5leHBvcnQgY29uc3QgREVGQVVMVF9TTElERV9DT05GSUc6IFNsaWRlQ29uZmlnID0ge1xuICBpbmZpbml0ZTogZmFsc2UsXG4gIHBsYXlDb25maWc6IHsgYXV0b1BsYXk6IGZhbHNlLCBpbnRlcnZhbDogNTAwMCwgcGF1c2VPbkhvdmVyOiB0cnVlIH0gYXMgUGxheUNvbmZpZyxcbiAgc2lkZVByZXZpZXdzOiB7IHNob3c6IHRydWUsIHNpemU6IHsgd2lkdGg6ICcxMDBweCcsIGhlaWdodDogJ2F1dG8nIH0gfSBhcyBTaWRlUHJldmlld3NDb25maWdcbn07XG5leHBvcnQgY29uc3QgREVGQVVMVF9QUkVWSUVXX0NPTkZJRzogUHJldmlld0NvbmZpZyA9IHtcbiAgdmlzaWJsZTogdHJ1ZSxcbiAgbnVtYmVyOiAzLFxuICBhcnJvd3M6IHRydWUsXG4gIGNsaWNrYWJsZTogdHJ1ZSxcbiAgc2l6ZTogREVGQVVMVF9QUkVWSUVXX1NJWkVcbn07XG5cbmNvbnN0IERFRkFVTFRfQ09ORklHOiBMaWJDb25maWcgPSBPYmplY3QuZnJlZXplKHtcbiAgc2xpZGVDb25maWc6IERFRkFVTFRfU0xJREVfQ09ORklHLFxuICBhY2Nlc3NpYmlsaXR5Q29uZmlnOiBLU19ERUZBVUxUX0FDQ0VTU0lCSUxJVFlfQ09ORklHLFxuICBwcmV2aWV3Q29uZmlnOiBERUZBVUxUX1BSRVZJRVdfQ09ORklHLFxuICBidXR0b25zQ29uZmlnOiB7IHZpc2libGU6IHRydWUsIHN0cmF0ZWd5OiBCdXR0b25zU3RyYXRlZ3kuREVGQVVMVCB9IGFzIEJ1dHRvbnNDb25maWcsXG4gIGRvdHNDb25maWc6IHsgdmlzaWJsZTogdHJ1ZSB9IGFzIERvdHNDb25maWcsXG4gIHBsYWluR2FsbGVyeUNvbmZpZzogREVGQVVMVF9QTEFJTl9DT05GSUcsXG4gIGN1cnJlbnRJbWFnZUNvbmZpZzogREVGQVVMVF9DVVJSRU5UX0lNQUdFX0NPTkZJRyxcbiAga2V5Ym9hcmRDb25maWc6IHVuZGVmaW5lZCwgLy8gYnkgZGVmYXVsdCBub3RoaW5nLCBiZWNhdXNlIHRoZSBsaWJyYXJ5IHVzZXMgZGVmYXVsdCBidXR0b25zIGF1dG9tYXRpY2FsbHlcbiAgY2Fyb3VzZWxDb25maWc6IERFRkFVTFRfQ1VSUkVOVF9DQVJPVVNFTF9DT05GSUcsXG4gIGNhcm91c2VsSW1hZ2VDb25maWc6IERFRkFVTFRfQ0FST1VTRUxfSU1BR0VfQ09ORklHLFxuICBjYXJvdXNlbFByZXZpZXdzQ29uZmlnOiBERUZBVUxUX0NBUk9VU0VMX1BSRVZJRVdTX0NPTkZJRyxcbiAgY2Fyb3VzZWxQbGF5Q29uZmlnOiBERUZBVUxUX0NVUlJFTlRfQ0FST1VTRUxfUExBWSxcbiAgY2Fyb3VzZWxEb3RzQ29uZmlnOiB7IHZpc2libGU6IHRydWUgfSBhcyBEb3RzQ29uZmlnLFxuICBlbmFibGVDbG9zZU91dHNpZGU6IHRydWUsXG4gIGtleWJvYXJkU2VydmljZUNvbmZpZzogREVGQVVMVF9LRVlCT0FSRF9TRVJWSUNFX0NPTkZJR1xufSk7XG5cbi8qKlxuICogU2VydmljZSB0byBoYW5kbGUgbGlicmFyeSBjb25maWd1cmF0aW9uIGluIGEgdW5pcXVlIHBsYWNlXG4gKi9cbkBJbmplY3RhYmxlKHsgcHJvdmlkZWRJbjogJ3Jvb3QnIH0pXG5leHBvcnQgY2xhc3MgQ29uZmlnU2VydmljZSB7XG4gIGNvbmZpZ01hcDogTWFwPG51bWJlciwgTGliQ29uZmlnPiA9IG5ldyBNYXA8bnVtYmVyLCBMaWJDb25maWc+KCk7XG5cbiAgZ2V0Q29uZmlnKGlkOiBudW1iZXIpOiBMaWJDb25maWcgfCB1bmRlZmluZWQge1xuICAgIHRoaXMuaW5pdElmTm90RXhpc3RzKGlkKTtcbiAgICByZXR1cm4gdGhpcy5jb25maWdNYXAuZ2V0KGlkKTtcbiAgfVxuXG4gIHNldENvbmZpZyhpZDogbnVtYmVyLCBvYmo6IExpYkNvbmZpZyB8IHVuZGVmaW5lZCk6IHZvaWQge1xuICAgIHRoaXMuaW5pdElmTm90RXhpc3RzKGlkKTtcbiAgICBpZiAoIW9iaikge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmIChcbiAgICAgICFERUZBVUxUX0NPTkZJRyB8fFxuICAgICAgIURFRkFVTFRfQ09ORklHLnNsaWRlQ29uZmlnIHx8XG4gICAgICAhREVGQVVMVF9DT05GSUcuc2xpZGVDb25maWcuc2lkZVByZXZpZXdzIHx8XG4gICAgICAhREVGQVVMVF9DT05GSUcucHJldmlld0NvbmZpZyB8fFxuICAgICAgIURFRkFVTFRfQ09ORklHLnByZXZpZXdDb25maWcuc2l6ZSB8fFxuICAgICAgIURFRkFVTFRfQ09ORklHLnByZXZpZXdDb25maWcubnVtYmVyIHx8XG4gICAgICAhREVGQVVMVF9DT05GSUcucGxhaW5HYWxsZXJ5Q29uZmlnIHx8XG4gICAgICAhREVGQVVMVF9DT05GSUcuY3VycmVudEltYWdlQ29uZmlnIHx8XG4gICAgICAhREVGQVVMVF9DT05GSUcuY3VycmVudEltYWdlQ29uZmlnIHx8XG4gICAgICAhREVGQVVMVF9DT05GSUcuY3VycmVudEltYWdlQ29uZmlnLmRlc2NyaXB0aW9uIHx8XG4gICAgICAhREVGQVVMVF9DT05GSUcuY2Fyb3VzZWxJbWFnZUNvbmZpZyB8fFxuICAgICAgIURFRkFVTFRfQ09ORklHLmNhcm91c2VsSW1hZ2VDb25maWcuZGVzY3JpcHRpb24gfHxcbiAgICAgICFERUZBVUxUX0NPTkZJRy5jYXJvdXNlbFByZXZpZXdzQ29uZmlnIHx8XG4gICAgICAhREVGQVVMVF9DT05GSUcuY2Fyb3VzZWxQcmV2aWV3c0NvbmZpZy5icmVha3BvaW50cyB8fFxuICAgICAgIURFRkFVTFRfQ0FST1VTRUxfUFJFVklFV1NfQ09ORklHLm51bWJlclxuICAgICkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnRlcm5hbCBsaWJyYXJ5IGVycm9yIC0gREVGQVVMVF9DT05GSUcgbXVzdCBiZSBmdWxseSBpbml0aWFsaXplZCEhIScpO1xuICAgIH1cblxuICAgIGNvbnN0IG5ld0NvbmZpZzogTGliQ29uZmlnID0gT2JqZWN0LmFzc2lnbih7fSwgdGhpcy5jb25maWdNYXAuZ2V0KGlkKSk7XG4gICAgaWYgKG9iai5zbGlkZUNvbmZpZykge1xuICAgICAgbGV0IHBsYXlDb25maWc7XG4gICAgICBsZXQgc2lkZVByZXZpZXdzO1xuICAgICAgbGV0IHNpemU7XG4gICAgICBpZiAob2JqLnNsaWRlQ29uZmlnLnBsYXlDb25maWcpIHtcbiAgICAgICAgcGxheUNvbmZpZyA9IE9iamVjdC5hc3NpZ24oe30sIERFRkFVTFRfQ09ORklHLnNsaWRlQ29uZmlnLnBsYXlDb25maWcsIG9iai5zbGlkZUNvbmZpZy5wbGF5Q29uZmlnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHBsYXlDb25maWcgPSBERUZBVUxUX0NPTkZJRy5zbGlkZUNvbmZpZy5wbGF5Q29uZmlnO1xuICAgICAgfVxuICAgICAgaWYgKG9iai5zbGlkZUNvbmZpZy5zaWRlUHJldmlld3MpIHtcbiAgICAgICAgaWYgKG9iai5zbGlkZUNvbmZpZy5zaWRlUHJldmlld3Muc2l6ZSkge1xuICAgICAgICAgIHNpemUgPSBPYmplY3QuYXNzaWduKHt9LCBERUZBVUxUX0NPTkZJRy5zbGlkZUNvbmZpZy5zaWRlUHJldmlld3Muc2l6ZSwgb2JqLnNsaWRlQ29uZmlnLnNpZGVQcmV2aWV3cy5zaXplKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzaXplID0gREVGQVVMVF9DT05GSUcuc2xpZGVDb25maWcuc2lkZVByZXZpZXdzLnNpemU7XG4gICAgICAgIH1cbiAgICAgICAgc2lkZVByZXZpZXdzID0gT2JqZWN0LmFzc2lnbih7fSwgREVGQVVMVF9DT05GSUcuc2xpZGVDb25maWcuc2lkZVByZXZpZXdzLCBvYmouc2xpZGVDb25maWcuc2lkZVByZXZpZXdzKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNpZGVQcmV2aWV3cyA9IERFRkFVTFRfQ09ORklHLnNsaWRlQ29uZmlnLnNpZGVQcmV2aWV3cztcbiAgICAgICAgc2l6ZSA9IERFRkFVTFRfQ09ORklHLnNsaWRlQ29uZmlnLnNpZGVQcmV2aWV3cy5zaXplO1xuICAgICAgfVxuICAgICAgY29uc3QgbmV3U2xpZGVDb25maWc6IFNsaWRlQ29uZmlnID0gT2JqZWN0LmFzc2lnbih7fSwgREVGQVVMVF9DT05GSUcuc2xpZGVDb25maWcsIG9iai5zbGlkZUNvbmZpZyk7XG4gICAgICBuZXdTbGlkZUNvbmZpZy5wbGF5Q29uZmlnID0gcGxheUNvbmZpZztcbiAgICAgIG5ld1NsaWRlQ29uZmlnLnNpZGVQcmV2aWV3cyA9IHNpZGVQcmV2aWV3cztcbiAgICAgIG5ld1NsaWRlQ29uZmlnLnNpZGVQcmV2aWV3cy5zaXplID0gc2l6ZTtcbiAgICAgIG5ld0NvbmZpZy5zbGlkZUNvbmZpZyA9IG5ld1NsaWRlQ29uZmlnO1xuICAgIH1cbiAgICBpZiAob2JqLmFjY2Vzc2liaWxpdHlDb25maWcpIHtcbiAgICAgIG5ld0NvbmZpZy5hY2Nlc3NpYmlsaXR5Q29uZmlnID0gT2JqZWN0LmFzc2lnbih7fSwgREVGQVVMVF9DT05GSUcuYWNjZXNzaWJpbGl0eUNvbmZpZywgb2JqLmFjY2Vzc2liaWxpdHlDb25maWcpO1xuICAgIH1cbiAgICBpZiAob2JqLnByZXZpZXdDb25maWcpIHtcbiAgICAgIGxldCBzaXplOiBTaXplO1xuICAgICAgbGV0IG51bTogbnVtYmVyO1xuICAgICAgaWYgKG9iai5wcmV2aWV3Q29uZmlnLnNpemUpIHtcbiAgICAgICAgc2l6ZSA9IE9iamVjdC5hc3NpZ24oe30sIERFRkFVTFRfQ09ORklHLnByZXZpZXdDb25maWcuc2l6ZSwgb2JqLnByZXZpZXdDb25maWcuc2l6ZSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzaXplID0gREVGQVVMVF9DT05GSUcucHJldmlld0NvbmZpZy5zaXplO1xuICAgICAgfVxuICAgICAgaWYgKG9iai5wcmV2aWV3Q29uZmlnLm51bWJlcikge1xuICAgICAgICBpZiAob2JqLnByZXZpZXdDb25maWcubnVtYmVyIDw9IDApIHtcbiAgICAgICAgICAvLyBpZiBudW1iZXIgaXMgPD0gMCByZXNldCB0byBkZWZhdWx0XG4gICAgICAgICAgbnVtID0gREVGQVVMVF9DT05GSUcucHJldmlld0NvbmZpZy5udW1iZXI7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbnVtID0gb2JqLnByZXZpZXdDb25maWcubnVtYmVyO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBudW0gPSBERUZBVUxUX0NPTkZJRy5wcmV2aWV3Q29uZmlnLm51bWJlcjtcbiAgICAgIH1cbiAgICAgIGNvbnN0IG5ld1ByZXZpZXdDb25maWc6IFByZXZpZXdDb25maWcgPSBPYmplY3QuYXNzaWduKHt9LCBERUZBVUxUX0NPTkZJRy5wcmV2aWV3Q29uZmlnLCBvYmoucHJldmlld0NvbmZpZyk7XG4gICAgICBuZXdQcmV2aWV3Q29uZmlnLnNpemUgPSBzaXplO1xuICAgICAgbmV3UHJldmlld0NvbmZpZy5udW1iZXIgPSBudW07XG4gICAgICBuZXdDb25maWcucHJldmlld0NvbmZpZyA9IG5ld1ByZXZpZXdDb25maWc7XG4gICAgfVxuICAgIGlmIChvYmouYnV0dG9uc0NvbmZpZykge1xuICAgICAgbmV3Q29uZmlnLmJ1dHRvbnNDb25maWcgPSBPYmplY3QuYXNzaWduKHt9LCBERUZBVUxUX0NPTkZJRy5idXR0b25zQ29uZmlnLCBvYmouYnV0dG9uc0NvbmZpZyk7XG4gICAgfVxuICAgIGlmIChvYmouZG90c0NvbmZpZykge1xuICAgICAgbmV3Q29uZmlnLmRvdHNDb25maWcgPSBPYmplY3QuYXNzaWduKHt9LCBERUZBVUxUX0NPTkZJRy5kb3RzQ29uZmlnLCBvYmouZG90c0NvbmZpZyk7XG4gICAgfVxuICAgIGlmIChvYmoucGxhaW5HYWxsZXJ5Q29uZmlnKSB7XG4gICAgICBsZXQgYWR2YW5jZWQ7XG4gICAgICBsZXQgbGF5b3V0O1xuICAgICAgaWYgKG9iai5wbGFpbkdhbGxlcnlDb25maWcuYWR2YW5jZWQpIHtcbiAgICAgICAgYWR2YW5jZWQgPSBPYmplY3QuYXNzaWduKHt9LCBERUZBVUxUX0NPTkZJRy5wbGFpbkdhbGxlcnlDb25maWcuYWR2YW5jZWQsIG9iai5wbGFpbkdhbGxlcnlDb25maWcuYWR2YW5jZWQpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYWR2YW5jZWQgPSBERUZBVUxUX0NPTkZJRy5wbGFpbkdhbGxlcnlDb25maWcuYWR2YW5jZWQ7XG4gICAgICB9XG4gICAgICBpZiAob2JqLnBsYWluR2FsbGVyeUNvbmZpZy5sYXlvdXQpIHtcbiAgICAgICAgLy8gaXQgaXNuJ3QgbWFuZGF0b3J5IHRvIHVzZSBhc3NpZ24sIGJlY2F1c2Ugb2JqLnBsYWluR2FsbGVyeUNvbmZpZy5sYXlvdXQgaXMgYW4gaW5zdGFuY2Ugb2YgY2xhc3MgKExpbmVhTGF5b3V0LCBHcmlkTGF5b3V0LCBBZHZhbmNlZExheW91dClcbiAgICAgICAgbGF5b3V0ID0gb2JqLnBsYWluR2FsbGVyeUNvbmZpZy5sYXlvdXQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsYXlvdXQgPSBERUZBVUxUX0NPTkZJRy5wbGFpbkdhbGxlcnlDb25maWcubGF5b3V0O1xuICAgICAgfVxuICAgICAgY29uc3QgbmV3UGxhaW5HYWxsZXJ5Q29uZmlnOiBQbGFpbkdhbGxlcnlDb25maWcgPSBPYmplY3QuYXNzaWduKHt9LCBERUZBVUxUX0NPTkZJRy5wbGFpbkdhbGxlcnlDb25maWcsIG9iai5wbGFpbkdhbGxlcnlDb25maWcpO1xuICAgICAgbmV3UGxhaW5HYWxsZXJ5Q29uZmlnLmxheW91dCA9IGxheW91dDtcbiAgICAgIG5ld1BsYWluR2FsbGVyeUNvbmZpZy5hZHZhbmNlZCA9IGFkdmFuY2VkO1xuICAgICAgbmV3Q29uZmlnLnBsYWluR2FsbGVyeUNvbmZpZyA9IGluaXRQbGFpbkdhbGxlcnlDb25maWcobmV3UGxhaW5HYWxsZXJ5Q29uZmlnKTtcbiAgICB9XG4gICAgaWYgKG9iai5jdXJyZW50SW1hZ2VDb25maWcpIHtcbiAgICAgIGxldCBsb2FkaW5nO1xuICAgICAgbGV0IGRlc2NyaXB0aW9uO1xuICAgICAgbGV0IGRlc2NyaXB0aW9uU3R5bGU7XG4gICAgICBpZiAob2JqLmN1cnJlbnRJbWFnZUNvbmZpZy5sb2FkaW5nQ29uZmlnKSB7XG4gICAgICAgIGxvYWRpbmcgPSBPYmplY3QuYXNzaWduKHt9LCBERUZBVUxUX0NPTkZJRy5jdXJyZW50SW1hZ2VDb25maWcubG9hZGluZ0NvbmZpZywgb2JqLmN1cnJlbnRJbWFnZUNvbmZpZy5sb2FkaW5nQ29uZmlnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxvYWRpbmcgPSBERUZBVUxUX0NPTkZJRy5jdXJyZW50SW1hZ2VDb25maWcubG9hZGluZ0NvbmZpZztcbiAgICAgIH1cbiAgICAgIGlmIChvYmouY3VycmVudEltYWdlQ29uZmlnLmRlc2NyaXB0aW9uKSB7XG4gICAgICAgIGRlc2NyaXB0aW9uID0gT2JqZWN0LmFzc2lnbih7fSwgREVGQVVMVF9DT05GSUcuY3VycmVudEltYWdlQ29uZmlnLmRlc2NyaXB0aW9uLCBvYmouY3VycmVudEltYWdlQ29uZmlnLmRlc2NyaXB0aW9uKTtcbiAgICAgICAgaWYgKG9iai5jdXJyZW50SW1hZ2VDb25maWcuZGVzY3JpcHRpb24uc3R5bGUpIHtcbiAgICAgICAgICBkZXNjcmlwdGlvblN0eWxlID0gT2JqZWN0LmFzc2lnbih7fSwgREVGQVVMVF9DT05GSUcuY3VycmVudEltYWdlQ29uZmlnLmRlc2NyaXB0aW9uLnN0eWxlLCBvYmouY3VycmVudEltYWdlQ29uZmlnLmRlc2NyaXB0aW9uLnN0eWxlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBkZXNjcmlwdGlvblN0eWxlID0gREVGQVVMVF9DT05GSUcuY3VycmVudEltYWdlQ29uZmlnLmRlc2NyaXB0aW9uLnN0eWxlO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBkZXNjcmlwdGlvbiA9IERFRkFVTFRfQ09ORklHLmN1cnJlbnRJbWFnZUNvbmZpZy5kZXNjcmlwdGlvbjtcbiAgICAgICAgZGVzY3JpcHRpb25TdHlsZSA9IERFRkFVTFRfQ09ORklHLmN1cnJlbnRJbWFnZUNvbmZpZy5kZXNjcmlwdGlvbi5zdHlsZTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IG5ld0N1cnJlbnRJbWFnZUNvbmZpZzogQ3VycmVudEltYWdlQ29uZmlnID0gT2JqZWN0LmFzc2lnbih7fSwgREVGQVVMVF9DT05GSUcuY3VycmVudEltYWdlQ29uZmlnLCBvYmouY3VycmVudEltYWdlQ29uZmlnKTtcbiAgICAgIG5ld0N1cnJlbnRJbWFnZUNvbmZpZy5sb2FkaW5nQ29uZmlnID0gbG9hZGluZztcbiAgICAgIG5ld0N1cnJlbnRJbWFnZUNvbmZpZy5kZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uO1xuICAgICAgbmV3Q3VycmVudEltYWdlQ29uZmlnLmRlc2NyaXB0aW9uLnN0eWxlID0gZGVzY3JpcHRpb25TdHlsZTtcbiAgICAgIG5ld0NvbmZpZy5jdXJyZW50SW1hZ2VDb25maWcgPSBuZXdDdXJyZW50SW1hZ2VDb25maWc7XG4gICAgfVxuICAgIGlmIChvYmoua2V5Ym9hcmRDb25maWcpIHtcbiAgICAgIG5ld0NvbmZpZy5rZXlib2FyZENvbmZpZyA9IE9iamVjdC5hc3NpZ24oe30sIERFRkFVTFRfQ09ORklHLmtleWJvYXJkQ29uZmlnLCBvYmoua2V5Ym9hcmRDb25maWcpO1xuICAgIH1cblxuICAgIC8vIGNhcm91c2VsXG4gICAgaWYgKG9iai5jYXJvdXNlbENvbmZpZykge1xuICAgICAgbmV3Q29uZmlnLmNhcm91c2VsQ29uZmlnID0gT2JqZWN0LmFzc2lnbih7fSwgREVGQVVMVF9DT05GSUcuY2Fyb3VzZWxDb25maWcsIG9iai5jYXJvdXNlbENvbmZpZyk7XG4gICAgfVxuICAgIGlmIChvYmouY2Fyb3VzZWxJbWFnZUNvbmZpZykge1xuICAgICAgbGV0IGRlc2NyaXB0aW9uO1xuICAgICAgbGV0IGRlc2NyaXB0aW9uU3R5bGU7XG4gICAgICBpZiAob2JqLmNhcm91c2VsSW1hZ2VDb25maWcuZGVzY3JpcHRpb24pIHtcbiAgICAgICAgZGVzY3JpcHRpb24gPSBPYmplY3QuYXNzaWduKHt9LCBERUZBVUxUX0NPTkZJRy5jYXJvdXNlbEltYWdlQ29uZmlnLmRlc2NyaXB0aW9uLCBvYmouY2Fyb3VzZWxJbWFnZUNvbmZpZy5kZXNjcmlwdGlvbik7XG4gICAgICAgIGlmIChvYmouY2Fyb3VzZWxJbWFnZUNvbmZpZy5kZXNjcmlwdGlvbi5zdHlsZSkge1xuICAgICAgICAgIGRlc2NyaXB0aW9uU3R5bGUgPSBPYmplY3QuYXNzaWduKHt9LCBERUZBVUxUX0NPTkZJRy5jYXJvdXNlbEltYWdlQ29uZmlnLmRlc2NyaXB0aW9uLnN0eWxlLCBvYmouY2Fyb3VzZWxJbWFnZUNvbmZpZy5kZXNjcmlwdGlvbi5zdHlsZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgZGVzY3JpcHRpb25TdHlsZSA9IERFRkFVTFRfQ09ORklHLmNhcm91c2VsSW1hZ2VDb25maWcuZGVzY3JpcHRpb24uc3R5bGU7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGRlc2NyaXB0aW9uID0gREVGQVVMVF9DT05GSUcuY2Fyb3VzZWxJbWFnZUNvbmZpZy5kZXNjcmlwdGlvbjtcbiAgICAgICAgZGVzY3JpcHRpb25TdHlsZSA9IERFRkFVTFRfQ09ORklHLmNhcm91c2VsSW1hZ2VDb25maWcuZGVzY3JpcHRpb24uc3R5bGU7XG4gICAgICB9XG4gICAgICBjb25zdCBuZXdDYXJvdXNlbEltYWdlQ29uZmlnOiBDYXJvdXNlbEltYWdlQ29uZmlnID0gT2JqZWN0LmFzc2lnbih7fSwgREVGQVVMVF9DT05GSUcuY2Fyb3VzZWxJbWFnZUNvbmZpZywgb2JqLmNhcm91c2VsSW1hZ2VDb25maWcpO1xuICAgICAgbmV3Q2Fyb3VzZWxJbWFnZUNvbmZpZy5kZXNjcmlwdGlvbiA9IGRlc2NyaXB0aW9uO1xuICAgICAgbmV3Q2Fyb3VzZWxJbWFnZUNvbmZpZy5kZXNjcmlwdGlvbi5zdHlsZSA9IGRlc2NyaXB0aW9uU3R5bGU7XG4gICAgICBuZXdDb25maWcuY2Fyb3VzZWxJbWFnZUNvbmZpZyA9IG5ld0Nhcm91c2VsSW1hZ2VDb25maWc7XG4gICAgfVxuICAgIGlmIChvYmouY2Fyb3VzZWxQbGF5Q29uZmlnKSB7XG4gICAgICAvLyBjaGVjayB2YWx1ZXNcbiAgICAgIGlmIChvYmouY2Fyb3VzZWxQbGF5Q29uZmlnLmludGVydmFsIDw9IDApIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDYXJvdXNlbCdzIGludGVydmFsIG11c3QgYmUgYSBudW1iZXIgPj0gMGApO1xuICAgICAgfVxuICAgICAgbmV3Q29uZmlnLmNhcm91c2VsUGxheUNvbmZpZyA9IE9iamVjdC5hc3NpZ24oe30sIERFRkFVTFRfQ09ORklHLmNhcm91c2VsUGxheUNvbmZpZywgb2JqLmNhcm91c2VsUGxheUNvbmZpZyk7XG4gICAgfVxuICAgIGlmIChvYmouY2Fyb3VzZWxQcmV2aWV3c0NvbmZpZykge1xuICAgICAgLy8gY2hlY2sgdmFsdWVzXG4gICAgICBsZXQgbnVtOiBudW1iZXI7XG4gICAgICBsZXQgYnJlYWtwb2ludHM6IEJyZWFrcG9pbnRzQ29uZmlnO1xuICAgICAgaWYgKCFvYmouY2Fyb3VzZWxQcmV2aWV3c0NvbmZpZy5udW1iZXIgfHwgb2JqLmNhcm91c2VsUHJldmlld3NDb25maWcubnVtYmVyIDw9IDApIHtcbiAgICAgICAgbnVtID0gREVGQVVMVF9DQVJPVVNFTF9QUkVWSUVXU19DT05GSUcubnVtYmVyO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbnVtID0gb2JqLmNhcm91c2VsUHJldmlld3NDb25maWcubnVtYmVyO1xuICAgICAgfVxuICAgICAgaWYgKG9iai5jYXJvdXNlbFByZXZpZXdzQ29uZmlnLmJyZWFrcG9pbnRzKSB7XG4gICAgICAgIGJyZWFrcG9pbnRzID0gT2JqZWN0LmFzc2lnbih7fSwgREVGQVVMVF9DT05GSUcuY2Fyb3VzZWxQcmV2aWV3c0NvbmZpZy5icmVha3BvaW50cywgb2JqLmNhcm91c2VsUHJldmlld3NDb25maWcuYnJlYWtwb2ludHMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYnJlYWtwb2ludHMgPSBERUZBVUxUX0NPTkZJRy5jYXJvdXNlbFByZXZpZXdzQ29uZmlnLmJyZWFrcG9pbnRzO1xuICAgICAgfVxuICAgICAgbmV3Q29uZmlnLmNhcm91c2VsUHJldmlld3NDb25maWcgPSBPYmplY3QuYXNzaWduKHt9LCBERUZBVUxUX0NPTkZJRy5jYXJvdXNlbFByZXZpZXdzQ29uZmlnLCBvYmouY2Fyb3VzZWxQcmV2aWV3c0NvbmZpZyk7XG4gICAgICBuZXdDb25maWcuY2Fyb3VzZWxQcmV2aWV3c0NvbmZpZy5udW1iZXIgPSBudW07XG4gICAgICBuZXdDb25maWcuY2Fyb3VzZWxQcmV2aWV3c0NvbmZpZy5icmVha3BvaW50cyA9IGJyZWFrcG9pbnRzO1xuICAgICAgLy8gSW5pdCBwcmV2aWV3IGltYWdlIHdpZHRoIGJhc2VkIG9uIHRoZSBudW1iZXIgb2YgcHJldmlld3MgaW4gUHJldmlld0NvbmZpZ1xuICAgICAgLy8gRG9uJ3QgbW92ZSB0aGlzIGxpbmUgYWJvdmUsIGJlY2F1c2UgSSBuZWVkIHRvIGJlIHN1cmUgdGhhdCBib3RoIGNvbmZpZ1ByZXZpZXcubnVtYmVyXG4gICAgICAvLyBhbmQgY29uZmlnUHJldmlldy5zaXplIGFyZSBpbml0aWFsaXplZFxuICAgICAgbmV3Q29uZmlnLmNhcm91c2VsUHJldmlld3NDb25maWcud2lkdGggPSAxMDAgLyBuZXdDb25maWcuY2Fyb3VzZWxQcmV2aWV3c0NvbmZpZy5udW1iZXIgKyAnJSc7XG4gICAgfVxuICAgIGlmIChvYmouY2Fyb3VzZWxEb3RzQ29uZmlnKSB7XG4gICAgICBuZXdDb25maWcuY2Fyb3VzZWxEb3RzQ29uZmlnID0gT2JqZWN0LmFzc2lnbih7fSwgREVGQVVMVF9DT05GSUcuY2Fyb3VzZWxEb3RzQ29uZmlnLCBvYmouY2Fyb3VzZWxEb3RzQ29uZmlnKTtcbiAgICB9XG4gICAgaWYgKG9iai5lbmFibGVDbG9zZU91dHNpZGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgbmV3Q29uZmlnLmVuYWJsZUNsb3NlT3V0c2lkZSA9IERFRkFVTFRfQ09ORklHLmVuYWJsZUNsb3NlT3V0c2lkZTtcbiAgICB9IGVsc2Uge1xuICAgICAgbmV3Q29uZmlnLmVuYWJsZUNsb3NlT3V0c2lkZSA9IG9iai5lbmFibGVDbG9zZU91dHNpZGU7XG4gICAgfVxuICAgIGlmIChvYmoua2V5Ym9hcmRTZXJ2aWNlQ29uZmlnKSB7XG4gICAgICBuZXdDb25maWcua2V5Ym9hcmRTZXJ2aWNlQ29uZmlnID0gT2JqZWN0LmFzc2lnbih7fSwgREVGQVVMVF9LRVlCT0FSRF9TRVJWSUNFX0NPTkZJRywgb2JqLmtleWJvYXJkU2VydmljZUNvbmZpZyk7XG4gICAgfVxuICAgIHRoaXMuY29uZmlnTWFwLnNldChpZCwgbmV3Q29uZmlnKTtcbiAgfVxuXG4gIHByaXZhdGUgaW5pdElmTm90RXhpc3RzKGlkOiBudW1iZXIpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuY29uZmlnTWFwLmhhcyhpZCkpIHtcbiAgICAgIHRoaXMuY29uZmlnTWFwLnNldChpZCwgREVGQVVMVF9DT05GSUcpO1xuICAgIH1cbiAgfVxufVxuXG4vKipcbiAqIEZ1bmN0aW9uIHRvIGJ1aWxkIGFuZCByZXR1cm4gYSBgUGxhaW5HYWxsZXJ5Q29uZmlnYCBvYmplY3QsIHByb3ZpbmcgYWxzbyBkZWZhdWx0IHZhbHVlcyBhbmQgdmFsaWRhdGluZyB0aGUgaW5wdXQgb2JqZWN0LlxuICogQHBhcmFtIHBsYWluR2FsbGVyeUNvbmZpZyBvYmplY3Qgd2l0aCB0aGUgY29uZmlnIHJlcXVlc3RlZCBieSB1c2VyXG4gKiBAcmV0dXJucyBQbGFpbkdhbGxlcnlDb25maWcgdGhlIHBsYWluIGdhbGxlcnkgY29uZmlndXJhdGlvblxuICogQHRocm93cyBhbiBFcnJvciBpZiBsYXlvdXQgYW5kIHN0cmF0ZWd5IGFyZW4ndCBjb21wYXRpYmxlXG4gKi9cbmZ1bmN0aW9uIGluaXRQbGFpbkdhbGxlcnlDb25maWcocGxhaW5HYWxsZXJ5Q29uZmlnOiBQbGFpbkdhbGxlcnlDb25maWcpOiBQbGFpbkdhbGxlcnlDb25maWcge1xuICBjb25zdCBuZXdQbGF5R2FsbGVyeUNvbmZpZzogUGxhaW5HYWxsZXJ5Q29uZmlnID0gT2JqZWN0LmFzc2lnbih7fSwgREVGQVVMVF9DT05GSUcucGxhaW5HYWxsZXJ5Q29uZmlnLCBwbGFpbkdhbGxlcnlDb25maWcpO1xuXG4gIGlmIChuZXdQbGF5R2FsbGVyeUNvbmZpZy5sYXlvdXQgaW5zdGFuY2VvZiBMaW5lTGF5b3V0KSB7XG4gICAgaWYgKG5ld1BsYXlHYWxsZXJ5Q29uZmlnLnN0cmF0ZWd5ICE9PSBQbGFpbkdhbGxlcnlTdHJhdGVneS5ST1cgJiYgbmV3UGxheUdhbGxlcnlDb25maWcuc3RyYXRlZ3kgIT09IFBsYWluR2FsbGVyeVN0cmF0ZWd5LkNPTFVNTikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdMaW5lTGF5b3V0IHJlcXVpcmVzIGVpdGhlciBST1cgb3IgQ09MVU1OIHN0cmF0ZWd5Jyk7XG4gICAgfVxuICAgIGlmICghbmV3UGxheUdhbGxlcnlDb25maWcubGF5b3V0IHx8ICFuZXdQbGF5R2FsbGVyeUNvbmZpZy5sYXlvdXQuYnJlYWtDb25maWcpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignQm90aCBsYXlvdXQgYW5kIGJyZWFrQ29uZmlnIG11c3QgYmUgdmFsaWQnKTtcbiAgICB9XG4gIH1cblxuICBpZiAobmV3UGxheUdhbGxlcnlDb25maWcubGF5b3V0IGluc3RhbmNlb2YgR3JpZExheW91dCkge1xuICAgIGlmIChuZXdQbGF5R2FsbGVyeUNvbmZpZy5zdHJhdGVneSAhPT0gUGxhaW5HYWxsZXJ5U3RyYXRlZ3kuR1JJRCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdHcmlkTGF5b3V0IHJlcXVpcmVzIEdSSUQgc3RyYXRlZ3knKTtcbiAgICB9XG4gICAgaWYgKCFuZXdQbGF5R2FsbGVyeUNvbmZpZy5sYXlvdXQgfHwgIW5ld1BsYXlHYWxsZXJ5Q29uZmlnLmxheW91dC5icmVha0NvbmZpZykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdCb3RoIGxheW91dCBhbmQgYnJlYWtDb25maWcgbXVzdCBiZSB2YWxpZCcpO1xuICAgIH1cbiAgICAvLyBmb3JjZSB3cmFwIGZvciBncmlkIGxheW91dFxuICAgIG5ld1BsYXlHYWxsZXJ5Q29uZmlnLmxheW91dC5icmVha0NvbmZpZy53cmFwID0gdHJ1ZTtcbiAgfVxuXG4gIGlmIChuZXdQbGF5R2FsbGVyeUNvbmZpZy5sYXlvdXQgaW5zdGFuY2VvZiBBZHZhbmNlZExheW91dCkge1xuICAgIGlmIChuZXdQbGF5R2FsbGVyeUNvbmZpZy5zdHJhdGVneSAhPT0gUGxhaW5HYWxsZXJ5U3RyYXRlZ3kuQ1VTVE9NKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ0FkdmFuY2VkTGF5b3V0IHJlcXVpcmVzIENVU1RPTSBzdHJhdGVneScpO1xuICAgIH1cbiAgfVxuICByZXR1cm4gbmV3UGxheUdhbGxlcnlDb25maWc7XG59XG4iXX0=
|
|
@@ -1,95 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
The MIT License (MIT)
|
|
3
|
-
|
|
4
|
-
Copyright (C) 2017-2021 Stefano Cappa (Ks89)
|
|
5
|
-
|
|
6
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
7
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
8
|
-
in the Software without restriction, including without limitation the rights
|
|
9
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
10
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
11
|
-
furnished to do so, subject to the following conditions:
|
|
12
|
-
|
|
13
|
-
The above copyright notice and this permission notice shall be included in all
|
|
14
|
-
copies or substantial portions of the Software.
|
|
15
|
-
|
|
16
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
17
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
18
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL THE
|
|
19
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
20
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
21
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
22
|
-
SOFTWARE.
|
|
23
|
-
*/
|
|
24
|
-
/**
|
|
25
|
-
* Key of the keyboard's key `enter`
|
|
26
|
-
*/
|
|
27
|
-
export const ENTER_KEY = 'Enter';
|
|
28
|
-
/**
|
|
29
|
-
* Code of the keyboard's key `enter`
|
|
30
|
-
*/
|
|
31
|
-
export const ENTER_CODE = 'Enter';
|
|
32
|
-
/**
|
|
33
|
-
* Key of the keyboard's key 'right arrow'
|
|
34
|
-
*/
|
|
35
|
-
export const RIGHT_ARROW_KEY = 'ArrowRight';
|
|
36
|
-
/**
|
|
37
|
-
* Code of the keyboard's key 'right arrow'
|
|
38
|
-
*/
|
|
39
|
-
export const RIGHT_ARROW_CODE = 'ArrowRight';
|
|
40
|
-
/**
|
|
41
|
-
* KeyCode of the keyboard's key 'right arrow'
|
|
42
|
-
* Used in unit tests only
|
|
43
|
-
*/
|
|
44
|
-
export const RIGHT_ARROW_KEYCODE = 39;
|
|
45
|
-
/**
|
|
46
|
-
* Key of the keyboard's key 'left arrow'
|
|
47
|
-
*/
|
|
48
|
-
export const LEFT_ARROW_KEY = 'ArrowLeft';
|
|
49
|
-
/**
|
|
50
|
-
* Code of the keyboard's key 'left arrow'
|
|
51
|
-
*/
|
|
52
|
-
export const LEFT_ARROW_CODE = 'ArrowLeft';
|
|
53
|
-
/**
|
|
54
|
-
* KeyCode of the keyboard's key 'left arrow'
|
|
55
|
-
* Used in unit tests only
|
|
56
|
-
*/
|
|
57
|
-
export const LEFT_ARROW_KEYCODE = 37;
|
|
58
|
-
/**
|
|
59
|
-
* Key of the keyboard's key `space`
|
|
60
|
-
*/
|
|
61
|
-
export const SPACE_KEY = '';
|
|
62
|
-
/**
|
|
63
|
-
* Code of the keyboard's key `space`
|
|
64
|
-
*/
|
|
65
|
-
export const SPACE_CODE = 'Space';
|
|
66
|
-
/**
|
|
67
|
-
* KeyCode of the keyboard's key 'space'
|
|
68
|
-
* Used in unit tests only
|
|
69
|
-
*/
|
|
70
|
-
export const SPACE_KEYCODE = 32;
|
|
71
|
-
/**
|
|
72
|
-
* KeyCode of the main mouse button
|
|
73
|
-
*/
|
|
74
|
-
export const MOUSE_MAIN_BUTTON_CLICK = 0;
|
|
75
|
-
/**
|
|
76
|
-
* Const NEXT
|
|
77
|
-
*/
|
|
78
|
-
export const NEXT = 1;
|
|
79
|
-
/**
|
|
80
|
-
* Const PREV
|
|
81
|
-
*/
|
|
82
|
-
export const PREV = -1;
|
|
83
|
-
/**
|
|
84
|
-
* Const NOTHING to represents a situation when it isn't both NEXT and PREV
|
|
85
|
-
*/
|
|
86
|
-
export const NOTHING = 0;
|
|
87
|
-
/**
|
|
88
|
-
* Const to represent the right direction
|
|
89
|
-
*/
|
|
90
|
-
export const DIRECTION_RIGHT = 'right';
|
|
91
|
-
/**
|
|
92
|
-
* Const to represent the left direction
|
|
93
|
-
*/
|
|
94
|
-
export const DIRECTION_LEFT = 'left';
|
|
95
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlci1pbnB1dC51dGlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva3M4OS9hbmd1bGFyLW1vZGFsLWdhbGxlcnkvc3JjL2xpYi91dGlscy91c2VyLWlucHV0LnV0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0FzQkc7QUFFSDs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLFNBQVMsR0FBRyxPQUFPLENBQUM7QUFDakM7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDO0FBRWxDOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLFlBQVksQ0FBQztBQUM1Qzs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLFlBQVksQ0FBQztBQUM3Qzs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxtQkFBbUIsR0FBRyxFQUFFLENBQUM7QUFFdEM7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsV0FBVyxDQUFDO0FBQzFDOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLFdBQVcsQ0FBQztBQUMzQzs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxFQUFFLENBQUM7QUFFckM7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxTQUFTLEdBQUcsRUFBRSxDQUFDO0FBQzVCOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLE9BQU8sQ0FBQztBQUNsQzs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQUcsRUFBRSxDQUFDO0FBRWhDOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sdUJBQXVCLEdBQUcsQ0FBQyxDQUFDO0FBRXpDOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQztBQUN0Qjs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQztBQUN2Qjs7R0FFRztBQUNILE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRyxDQUFDLENBQUM7QUFFekI7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsT0FBTyxDQUFDO0FBQ3ZDOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLE1BQU0sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gVGhlIE1JVCBMaWNlbnNlIChNSVQpXG5cbiBDb3B5cmlnaHQgKEMpIDIwMTctMjAyMSBTdGVmYW5vIENhcHBhIChLczg5KVxuXG4gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbiBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG5cbiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGxcbiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuXG4gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT04gSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRVxuIFNPRlRXQVJFLlxuICovXG5cbi8qKlxuICogS2V5IG9mIHRoZSBrZXlib2FyZCdzIGtleSBgZW50ZXJgXG4gKi9cbmV4cG9ydCBjb25zdCBFTlRFUl9LRVkgPSAnRW50ZXInO1xuLyoqXG4gKiBDb2RlIG9mIHRoZSBrZXlib2FyZCdzIGtleSBgZW50ZXJgXG4gKi9cbmV4cG9ydCBjb25zdCBFTlRFUl9DT0RFID0gJ0VudGVyJztcblxuLyoqXG4gKiBLZXkgb2YgdGhlIGtleWJvYXJkJ3Mga2V5ICdyaWdodCBhcnJvdydcbiAqL1xuZXhwb3J0IGNvbnN0IFJJR0hUX0FSUk9XX0tFWSA9ICdBcnJvd1JpZ2h0Jztcbi8qKlxuICogQ29kZSBvZiB0aGUga2V5Ym9hcmQncyBrZXkgJ3JpZ2h0IGFycm93J1xuICovXG5leHBvcnQgY29uc3QgUklHSFRfQVJST1dfQ09ERSA9ICdBcnJvd1JpZ2h0Jztcbi8qKlxuICogS2V5Q29kZSBvZiB0aGUga2V5Ym9hcmQncyBrZXkgJ3JpZ2h0IGFycm93J1xuICogVXNlZCBpbiB1bml0IHRlc3RzIG9ubHlcbiAqL1xuZXhwb3J0IGNvbnN0IFJJR0hUX0FSUk9XX0tFWUNPREUgPSAzOTtcblxuLyoqXG4gKiBLZXkgb2YgdGhlIGtleWJvYXJkJ3Mga2V5ICdsZWZ0IGFycm93J1xuICovXG5leHBvcnQgY29uc3QgTEVGVF9BUlJPV19LRVkgPSAnQXJyb3dMZWZ0Jztcbi8qKlxuICogQ29kZSBvZiB0aGUga2V5Ym9hcmQncyBrZXkgJ2xlZnQgYXJyb3cnXG4gKi9cbmV4cG9ydCBjb25zdCBMRUZUX0FSUk9XX0NPREUgPSAnQXJyb3dMZWZ0Jztcbi8qKlxuICogS2V5Q29kZSBvZiB0aGUga2V5Ym9hcmQncyBrZXkgJ2xlZnQgYXJyb3cnXG4gKiBVc2VkIGluIHVuaXQgdGVzdHMgb25seVxuICovXG5leHBvcnQgY29uc3QgTEVGVF9BUlJPV19LRVlDT0RFID0gMzc7XG5cbi8qKlxuICogS2V5IG9mIHRoZSBrZXlib2FyZCdzIGtleSBgc3BhY2VgXG4gKi9cbmV4cG9ydCBjb25zdCBTUEFDRV9LRVkgPSAnJztcbi8qKlxuICogQ29kZSBvZiB0aGUga2V5Ym9hcmQncyBrZXkgYHNwYWNlYFxuICovXG5leHBvcnQgY29uc3QgU1BBQ0VfQ09ERSA9ICdTcGFjZSc7XG4vKipcbiAqIEtleUNvZGUgb2YgdGhlIGtleWJvYXJkJ3Mga2V5ICdzcGFjZSdcbiAqIFVzZWQgaW4gdW5pdCB0ZXN0cyBvbmx5XG4gKi9cbmV4cG9ydCBjb25zdCBTUEFDRV9LRVlDT0RFID0gMzI7XG5cbi8qKlxuICogS2V5Q29kZSBvZiB0aGUgbWFpbiBtb3VzZSBidXR0b25cbiAqL1xuZXhwb3J0IGNvbnN0IE1PVVNFX01BSU5fQlVUVE9OX0NMSUNLID0gMDtcblxuLyoqXG4gKiBDb25zdCBORVhUXG4gKi9cbmV4cG9ydCBjb25zdCBORVhUID0gMTtcbi8qKlxuICogQ29uc3QgUFJFVlxuICovXG5leHBvcnQgY29uc3QgUFJFViA9IC0xO1xuLyoqXG4gKiBDb25zdCBOT1RISU5HIHRvIHJlcHJlc2VudHMgYSBzaXR1YXRpb24gd2hlbiBpdCBpc24ndCBib3RoIE5FWFQgYW5kIFBSRVZcbiAqL1xuZXhwb3J0IGNvbnN0IE5PVEhJTkcgPSAwO1xuXG4vKipcbiAqIENvbnN0IHRvIHJlcHJlc2VudCB0aGUgcmlnaHQgZGlyZWN0aW9uXG4gKi9cbmV4cG9ydCBjb25zdCBESVJFQ1RJT05fUklHSFQgPSAncmlnaHQnO1xuLyoqXG4gKiBDb25zdCB0byByZXByZXNlbnQgdGhlIGxlZnQgZGlyZWN0aW9uXG4gKi9cbmV4cG9ydCBjb25zdCBESVJFQ1RJT05fTEVGVCA9ICdsZWZ0JztcbiJdfQ==
|
package/esm2015/public-api.js
DELETED
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
The MIT License (MIT)
|
|
3
|
-
|
|
4
|
-
Copyright (C) 2017-2021 Stefano Cappa (Ks89)
|
|
5
|
-
|
|
6
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
7
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
8
|
-
in the Software without restriction, including without limitation the rights
|
|
9
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
10
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
11
|
-
furnished to do so, subject to the following conditions:
|
|
12
|
-
|
|
13
|
-
The above copyright notice and this permission notice shall be included in all
|
|
14
|
-
copies or substantial portions of the Software.
|
|
15
|
-
|
|
16
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
17
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
18
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NON INFRINGEMENT. IN NO EVENT SHALL THE
|
|
19
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
20
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
21
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
22
|
-
SOFTWARE.
|
|
23
|
-
*/
|
|
24
|
-
/**
|
|
25
|
-
* Index file to export all interfaces, enums, classes and so on.
|
|
26
|
-
* This file represents the public apis.
|
|
27
|
-
*/
|
|
28
|
-
export { GalleryModule } from './lib/modal-gallery.module';
|
|
29
|
-
export { Action } from './lib/model/action.enum';
|
|
30
|
-
export { Image, ImageEvent, ImageModalEvent } from './lib/model/image.class';
|
|
31
|
-
export { DescriptionStrategy } from './lib/model/description.interface';
|
|
32
|
-
export { ButtonsStrategy, ButtonType } from './lib/model/buttons-config.interface';
|
|
33
|
-
export { LoadingType } from './lib/model/loading-config.interface';
|
|
34
|
-
export { KS_DEFAULT_ACCESSIBILITY_CONFIG } from './lib/components/accessibility-default';
|
|
35
|
-
export { KS_DEFAULT_BTN_FULL_SCREEN, KS_DEFAULT_BTN_CLOSE, KS_DEFAULT_BTN_DELETE, KS_DEFAULT_BTN_DOWNLOAD, KS_DEFAULT_BTN_EXTURL, KS_DEFAULT_SIZE } from './lib/components/upper-buttons/upper-buttons-default';
|
|
36
|
-
export { LineLayout, GridLayout, AdvancedLayout, PlainGalleryStrategy } from './lib/model/plain-gallery-config.interface';
|
|
37
|
-
export { ModalGalleryComponent } from './lib/components/modal-gallery/modal-gallery.component';
|
|
38
|
-
export { PlainGalleryComponent } from './lib/components/plain-gallery/plain-gallery.component';
|
|
39
|
-
export { CarouselComponent } from './lib/components/carousel/carousel.component';
|
|
40
|
-
export { ModalGalleryService } from './lib/components/modal-gallery/modal-gallery.service';
|
|
41
|
-
export { ModalGalleryRef } from './lib/components/modal-gallery/modal-gallery-ref';
|
|
42
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL2tzODkvYW5ndWxhci1tb2RhbC1nYWxsZXJ5L3NyYy9wdWJsaWMtYXBpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBc0JHO0FBRUg7OztHQUdHO0FBRUgsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRTNELE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsS0FBSyxFQUEwQixVQUFVLEVBQUUsZUFBZSxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDckcsT0FBTyxFQUFlLG1CQUFtQixFQUFFLE1BQU0sbUNBQW1DLENBQUM7QUFhckYsT0FBTyxFQUFpQixlQUFlLEVBQUUsVUFBVSxFQUFlLE1BQU0sc0NBQXNDLENBQUM7QUFRL0csT0FBTyxFQUFpQixXQUFXLEVBQUUsTUFBTSxzQ0FBc0MsQ0FBQztBQUlsRixPQUFPLEVBQUUsK0JBQStCLEVBQUUsTUFBTSx3Q0FBd0MsQ0FBQztBQUN6RixPQUFPLEVBQ0wsMEJBQTBCLEVBQzFCLG9CQUFvQixFQUNwQixxQkFBcUIsRUFDckIsdUJBQXVCLEVBQ3ZCLHFCQUFxQixFQUNyQixlQUFlLEVBQ2hCLE1BQU0sc0RBQXNELENBQUM7QUFFOUQsT0FBTyxFQUdMLFVBQVUsRUFDVixVQUFVLEVBQ1YsY0FBYyxFQUNkLG9CQUFvQixFQUVyQixNQUFNLDRDQUE0QyxDQUFDO0FBRXBELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBQy9GLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBQy9GLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLDhDQUE4QyxDQUFDO0FBRWpGLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLHNEQUFzRCxDQUFDO0FBQzNGLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxrREFBa0QsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qXG4gVGhlIE1JVCBMaWNlbnNlIChNSVQpXG5cbiBDb3B5cmlnaHQgKEMpIDIwMTctMjAyMSBTdGVmYW5vIENhcHBhIChLczg5KVxuXG4gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weVxuIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbiBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4gdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbFxuIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG5cbiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGxcbiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuXG4gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT04gSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4gTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSxcbiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRVxuIFNPRlRXQVJFLlxuICovXG5cbi8qKlxuICogSW5kZXggZmlsZSB0byBleHBvcnQgYWxsIGludGVyZmFjZXMsIGVudW1zLCBjbGFzc2VzIGFuZCBzbyBvbi5cbiAqIFRoaXMgZmlsZSByZXByZXNlbnRzIHRoZSBwdWJsaWMgYXBpcy5cbiAqL1xuXG5leHBvcnQgeyBHYWxsZXJ5TW9kdWxlIH0gZnJvbSAnLi9saWIvbW9kYWwtZ2FsbGVyeS5tb2R1bGUnO1xuXG5leHBvcnQgeyBBY3Rpb24gfSBmcm9tICcuL2xpYi9tb2RlbC9hY3Rpb24uZW51bSc7XG5leHBvcnQgeyBJbWFnZSwgUGxhaW5JbWFnZSwgTW9kYWxJbWFnZSwgSW1hZ2VFdmVudCwgSW1hZ2VNb2RhbEV2ZW50IH0gZnJvbSAnLi9saWIvbW9kZWwvaW1hZ2UuY2xhc3MnO1xuZXhwb3J0IHsgRGVzY3JpcHRpb24sIERlc2NyaXB0aW9uU3RyYXRlZ3kgfSBmcm9tICcuL2xpYi9tb2RlbC9kZXNjcmlwdGlvbi5pbnRlcmZhY2UnO1xuZXhwb3J0IHsgS2V5Ym9hcmRDb25maWcgfSBmcm9tICcuL2xpYi9tb2RlbC9rZXlib2FyZC1jb25maWcuaW50ZXJmYWNlJztcbmV4cG9ydCB7IERvdHNDb25maWcgfSBmcm9tICcuL2xpYi9tb2RlbC9kb3RzLWNvbmZpZy5pbnRlcmZhY2UnO1xuZXhwb3J0IHsgUHJldmlld0NvbmZpZyB9IGZyb20gJy4vbGliL21vZGVsL3ByZXZpZXctY29uZmlnLmludGVyZmFjZSc7XG5leHBvcnQgeyBBY2Nlc3NpYmlsaXR5Q29uZmlnIH0gZnJvbSAnLi9saWIvbW9kZWwvYWNjZXNzaWJpbGl0eS5pbnRlcmZhY2UnO1xuXG5leHBvcnQgeyBCcmVha3BvaW50c0NvbmZpZywgQ2Fyb3VzZWxQcmV2aWV3Q29uZmlnIH0gZnJvbSAnLi9saWIvbW9kZWwvY2Fyb3VzZWwtcHJldmlldy1jb25maWcuaW50ZXJmYWNlJztcbmV4cG9ydCB7IENhcm91c2VsQ29uZmlnIH0gZnJvbSAnLi9saWIvbW9kZWwvY2Fyb3VzZWwtY29uZmlnLmludGVyZmFjZSc7XG5leHBvcnQgeyBQbGF5Q29uZmlnIH0gZnJvbSAnLi9saWIvbW9kZWwvcGxheS1jb25maWcuaW50ZXJmYWNlJztcbmV4cG9ydCB7IENhcm91c2VsSW1hZ2VDb25maWcgfSBmcm9tICcuL2xpYi9tb2RlbC9jYXJvdXNlbC1pbWFnZS1jb25maWcuaW50ZXJmYWNlJztcblxuZXhwb3J0IHsgU2l6ZSB9IGZyb20gJy4vbGliL21vZGVsL3NpemUuaW50ZXJmYWNlJztcblxuZXhwb3J0IHsgQnV0dG9uc0NvbmZpZywgQnV0dG9uc1N0cmF0ZWd5LCBCdXR0b25UeXBlLCBCdXR0b25FdmVudCB9IGZyb20gJy4vbGliL21vZGVsL2J1dHRvbnMtY29uZmlnLmludGVyZmFjZSc7XG5cbmV4cG9ydCB7IExpYkNvbmZpZyB9IGZyb20gJy4vbGliL21vZGVsL2xpYi1jb25maWcuaW50ZXJmYWNlJztcblxuZXhwb3J0IHsgTW9kYWxHYWxsZXJ5Q29uZmlnIH0gZnJvbSAnLi9saWIvbW9kZWwvbW9kYWwtZ2FsbGVyeS1jb25maWcuaW50ZXJmYWNlJztcblxuZXhwb3J0IHsgQ3VycmVudEltYWdlQ29uZmlnIH0gZnJvbSAnLi9saWIvbW9kZWwvY3VycmVudC1pbWFnZS1jb25maWcuaW50ZXJmYWNlJztcblxuZXhwb3J0IHsgTG9hZGluZ0NvbmZpZywgTG9hZGluZ1R5cGUgfSBmcm9tICcuL2xpYi9tb2RlbC9sb2FkaW5nLWNvbmZpZy5pbnRlcmZhY2UnO1xuXG5leHBvcnQgeyBJbnRlcmFjdGlvbkV2ZW50IH0gZnJvbSAnLi9saWIvbW9kZWwvaW50ZXJhY3Rpb24tZXZlbnQuaW50ZXJmYWNlJztcblxuZXhwb3J0IHsgS1NfREVGQVVMVF9BQ0NFU1NJQklMSVRZX0NPTkZJRyB9IGZyb20gJy4vbGliL2NvbXBvbmVudHMvYWNjZXNzaWJpbGl0eS1kZWZhdWx0JztcbmV4cG9ydCB7XG4gIEtTX0RFRkFVTFRfQlROX0ZVTExfU0NSRUVOLFxuICBLU19ERUZBVUxUX0JUTl9DTE9TRSxcbiAgS1NfREVGQVVMVF9CVE5fREVMRVRFLFxuICBLU19ERUZBVUxUX0JUTl9ET1dOTE9BRCxcbiAgS1NfREVGQVVMVF9CVE5fRVhUVVJMLFxuICBLU19ERUZBVUxUX1NJWkVcbn0gZnJvbSAnLi9saWIvY29tcG9uZW50cy91cHBlci1idXR0b25zL3VwcGVyLWJ1dHRvbnMtZGVmYXVsdCc7XG5cbmV4cG9ydCB7XG4gIFBsYWluR2FsbGVyeUNvbmZpZyxcbiAgUGxhaW5HYWxsZXJ5TGF5b3V0LFxuICBMaW5lTGF5b3V0LFxuICBHcmlkTGF5b3V0LFxuICBBZHZhbmNlZExheW91dCxcbiAgUGxhaW5HYWxsZXJ5U3RyYXRlZ3ksXG4gIEJyZWFrQ29uZmlnXG59IGZyb20gJy4vbGliL21vZGVsL3BsYWluLWdhbGxlcnktY29uZmlnLmludGVyZmFjZSc7XG5cbmV4cG9ydCB7IE1vZGFsR2FsbGVyeUNvbXBvbmVudCB9IGZyb20gJy4vbGliL2NvbXBvbmVudHMvbW9kYWwtZ2FsbGVyeS9tb2RhbC1nYWxsZXJ5LmNvbXBvbmVudCc7XG5leHBvcnQgeyBQbGFpbkdhbGxlcnlDb21wb25lbnQgfSBmcm9tICcuL2xpYi9jb21wb25lbnRzL3BsYWluLWdhbGxlcnkvcGxhaW4tZ2FsbGVyeS5jb21wb25lbnQnO1xuZXhwb3J0IHsgQ2Fyb3VzZWxDb21wb25lbnQgfSBmcm9tICcuL2xpYi9jb21wb25lbnRzL2Nhcm91c2VsL2Nhcm91c2VsLmNvbXBvbmVudCc7XG5cbmV4cG9ydCB7IE1vZGFsR2FsbGVyeVNlcnZpY2UgfSBmcm9tICcuL2xpYi9jb21wb25lbnRzL21vZGFsLWdhbGxlcnkvbW9kYWwtZ2FsbGVyeS5zZXJ2aWNlJztcbmV4cG9ydCB7IE1vZGFsR2FsbGVyeVJlZiB9IGZyb20gJy4vbGliL2NvbXBvbmVudHMvbW9kYWwtZ2FsbGVyeS9tb2RhbC1nYWxsZXJ5LXJlZic7XG4iXX0=
|