@sidekick-coder/zenith-kit 0.0.12 → 0.0.13
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/bin/zenith.js +28 -0
- package/bin/zkit.js +26 -0
- package/cli/commands/build.js +49 -0
- package/cli/commands/dev.js +37 -0
- package/cli/commands/start.js +38 -0
- package/cli/config.js +23 -0
- package/cli/utils/createWrapper.js +20 -0
- package/dist/client/index.d.mts +448 -0
- package/dist/client/index.mjs +2 -0
- package/dist/components/index-Dk5fhUBV.mjs +4399 -0
- package/dist/components/index.es.js +65708 -0
- package/dist/components/styles.css +4756 -0
- package/dist/server/index.d.mts +441 -1013
- package/dist/server/index.mjs +5 -7754
- package/dist/shared/chunk-0Lt9GpW0.mjs +1 -0
- package/dist/shared/index.d.mts +257 -18
- package/dist/shared/index.mjs +2 -841
- package/package.json +55 -13
- package/tsconfig.client.json +3 -3
- package/tsconfig.server.json +1 -1
- package/tsdown/createTsdownConfig.js +29 -0
- package/tsdown.config.ts +52 -2
- package/vite/createViteConfig.js +55 -0
- package/vite/plugins/zenith.js +143 -0
- package/vite.config.ts +71 -0
- package/dist/shared/chunk-CfYAbeIz.mjs +0 -13
|
@@ -0,0 +1,448 @@
|
|
|
1
|
+
import * as _$_casl_ability0 from "@casl/ability";
|
|
2
|
+
import { defineAbility } from "@casl/ability";
|
|
3
|
+
import { NavigationGuard, RouteLocationNormalizedGeneric, RouteRecordRaw, Router as Router$1 } from "vue-router";
|
|
4
|
+
import { DefineComponent } from "vue";
|
|
5
|
+
|
|
6
|
+
//#region src/shared/utils/compose.d.ts
|
|
7
|
+
type Constructor$1<T = {}> = new (...args: any[]) => T;
|
|
8
|
+
//#endregion
|
|
9
|
+
//#region src/shared/entities/PermissionEntity.d.ts
|
|
10
|
+
declare const PermissionEntity_base: {
|
|
11
|
+
new (...args: any[]): {
|
|
12
|
+
merge(data: Partial< /*elided*/any>): /*elided*/any;
|
|
13
|
+
};
|
|
14
|
+
from<T>(this: new () => T, data: Partial<T>): T;
|
|
15
|
+
} & Constructor$1;
|
|
16
|
+
declare class PermissionEntity extends PermissionEntity_base {
|
|
17
|
+
id: number;
|
|
18
|
+
name: string;
|
|
19
|
+
description: string | null;
|
|
20
|
+
origin: string;
|
|
21
|
+
subject: string;
|
|
22
|
+
action: string;
|
|
23
|
+
conditions: string | null | Record<string, any>;
|
|
24
|
+
get editable(): boolean;
|
|
25
|
+
get parsedConditions(): any;
|
|
26
|
+
}
|
|
27
|
+
//#endregion
|
|
28
|
+
//#region src/shared/entities/RoleEntity.d.ts
|
|
29
|
+
declare const Role_base: {
|
|
30
|
+
new (...args: any[]): {
|
|
31
|
+
merge(data: Partial< /*elided*/any>): /*elided*/any;
|
|
32
|
+
};
|
|
33
|
+
from<T>(this: new () => T, data: Partial<T>): T;
|
|
34
|
+
} & Constructor$1 & {
|
|
35
|
+
new (...args: any[]): {
|
|
36
|
+
created_at: Date | string;
|
|
37
|
+
updated_at: Date | string;
|
|
38
|
+
};
|
|
39
|
+
} & {
|
|
40
|
+
new (...args: any[]): {
|
|
41
|
+
deleted_at: Date | string | null;
|
|
42
|
+
};
|
|
43
|
+
};
|
|
44
|
+
declare class Role extends Role_base {
|
|
45
|
+
id: number;
|
|
46
|
+
name: string;
|
|
47
|
+
description?: string;
|
|
48
|
+
}
|
|
49
|
+
//#endregion
|
|
50
|
+
//#region src/shared/entities/UserEntity.d.ts
|
|
51
|
+
declare const UserEntity_base: {
|
|
52
|
+
new (...args: any[]): {
|
|
53
|
+
merge(data: Partial< /*elided*/any>): /*elided*/any;
|
|
54
|
+
};
|
|
55
|
+
from<T>(this: new () => T, data: Partial<T>): T;
|
|
56
|
+
} & Constructor$1 & {
|
|
57
|
+
new (...args: any[]): {
|
|
58
|
+
created_at: Date | string;
|
|
59
|
+
updated_at: Date | string;
|
|
60
|
+
};
|
|
61
|
+
} & {
|
|
62
|
+
new (...args: any[]): {
|
|
63
|
+
deleted_at: Date | string | null;
|
|
64
|
+
};
|
|
65
|
+
};
|
|
66
|
+
declare class UserEntity extends UserEntity_base {
|
|
67
|
+
id: number;
|
|
68
|
+
email: string;
|
|
69
|
+
name: string;
|
|
70
|
+
username: string;
|
|
71
|
+
password?: string;
|
|
72
|
+
verified_at?: Date | string | null;
|
|
73
|
+
permissions?: PermissionEntity[];
|
|
74
|
+
roles?: Role[];
|
|
75
|
+
get initials(): string;
|
|
76
|
+
}
|
|
77
|
+
//#endregion
|
|
78
|
+
//#region src/client/services/AuthService.d.ts
|
|
79
|
+
interface LogoutOptions {
|
|
80
|
+
redirect?: string;
|
|
81
|
+
}
|
|
82
|
+
declare class AuthService {
|
|
83
|
+
static __container_entry_key: string;
|
|
84
|
+
user: UserEntity | null;
|
|
85
|
+
constructor(data?: Partial<AuthService>);
|
|
86
|
+
logout(options?: LogoutOptions): Promise<void>;
|
|
87
|
+
}
|
|
88
|
+
//#endregion
|
|
89
|
+
//#region src/client/services/FetchService.d.ts
|
|
90
|
+
interface FetchOptions extends RequestInit {
|
|
91
|
+
query?: Record<string, any>;
|
|
92
|
+
data?: Record<string, any>;
|
|
93
|
+
}
|
|
94
|
+
declare class FetchService {
|
|
95
|
+
static __container_entry_key: string;
|
|
96
|
+
protected handleError(response: Response): Promise<void>;
|
|
97
|
+
protected buildUrl(url: string, query?: Record<string, any>): string;
|
|
98
|
+
protected buildRequestInit(options: FetchOptions): RequestInit;
|
|
99
|
+
protected parseResponse<T>(response: Response): Promise<T>;
|
|
100
|
+
fetch<T>(_url: string, _options?: FetchOptions): Promise<T>;
|
|
101
|
+
try<T = any>(url: string, options?: FetchOptions): Promise<[Error, null] | [null, Awaited<T>]>;
|
|
102
|
+
get<T = any>(url: string, options?: FetchOptions): Promise<T>;
|
|
103
|
+
post<T = any>(url: string, options?: FetchOptions): Promise<T>;
|
|
104
|
+
put<T = any>(url: string, options?: FetchOptions): Promise<T>;
|
|
105
|
+
delete<T = any>(url: string, options?: FetchOptions): Promise<T>;
|
|
106
|
+
}
|
|
107
|
+
//#endregion
|
|
108
|
+
//#region src/client/services/FetchBrowserService.d.ts
|
|
109
|
+
declare class FetchBrowserService extends FetchService {
|
|
110
|
+
fetch<T>(url: string, options?: FetchOptions): Promise<T>;
|
|
111
|
+
}
|
|
112
|
+
//#endregion
|
|
113
|
+
//#region src/client/services/FetchNodeService.d.ts
|
|
114
|
+
declare class FetchNodeService extends FetchService {
|
|
115
|
+
fetch<T>(url: string, options?: FetchOptions): Promise<T>;
|
|
116
|
+
protected fetchExternal<T>(url: string, options?: FetchOptions): Promise<T>;
|
|
117
|
+
protected fetchInternal<T>(url: string, options?: FetchOptions): Promise<T>;
|
|
118
|
+
}
|
|
119
|
+
//#endregion
|
|
120
|
+
//#region src/shared/services/LoggerService.d.ts
|
|
121
|
+
declare class LoggerService {
|
|
122
|
+
static __container_entry_key: string;
|
|
123
|
+
info(message: string, meta?: any): void;
|
|
124
|
+
debug(message: string, meta?: any): void;
|
|
125
|
+
warn(message: string, meta?: any): void;
|
|
126
|
+
error(message: string, meta?: any): void;
|
|
127
|
+
child(options: any): LoggerService;
|
|
128
|
+
}
|
|
129
|
+
//#endregion
|
|
130
|
+
//#region src/shared/entities/LifecycleHook.d.ts
|
|
131
|
+
declare class LifecycleHook {
|
|
132
|
+
hook_id: string;
|
|
133
|
+
hook_aliases?: string[];
|
|
134
|
+
order?: number;
|
|
135
|
+
subhooks?: LifecycleHook[];
|
|
136
|
+
register(): Promise<void>;
|
|
137
|
+
load(): Promise<void>;
|
|
138
|
+
boot(): Promise<void>;
|
|
139
|
+
shutdown(): Promise<void>;
|
|
140
|
+
/** @deprecated Use register */
|
|
141
|
+
onRegister(): Promise<void>;
|
|
142
|
+
/** @deprecated Use load */
|
|
143
|
+
onLoad(): Promise<void>;
|
|
144
|
+
/** @deprecated Use boot */
|
|
145
|
+
onBoot(): Promise<void>;
|
|
146
|
+
/** @deprecated Use shutdown */
|
|
147
|
+
onShutdown(): Promise<void>;
|
|
148
|
+
}
|
|
149
|
+
//#endregion
|
|
150
|
+
//#region src/shared/services/LifecycleService.d.ts
|
|
151
|
+
type LifecycleMethod = 'register' | 'load' | 'boot' | 'shutdown';
|
|
152
|
+
interface ListOptions {
|
|
153
|
+
include?: string | string[];
|
|
154
|
+
exclude?: string | string[];
|
|
155
|
+
}
|
|
156
|
+
interface LifecycleServiceOptions {
|
|
157
|
+
debug?: boolean;
|
|
158
|
+
hooks?: Map<string, LifecycleHook>;
|
|
159
|
+
logger?: LoggerService;
|
|
160
|
+
onError?: (error: Error, context: {
|
|
161
|
+
hookId: string;
|
|
162
|
+
method: LifecycleMethod;
|
|
163
|
+
}) => void;
|
|
164
|
+
}
|
|
165
|
+
declare class LifecycleService$1 {
|
|
166
|
+
static __container_entry_key: string;
|
|
167
|
+
hooks: Map<string, LifecycleHook>;
|
|
168
|
+
logger: LoggerService;
|
|
169
|
+
debug: boolean;
|
|
170
|
+
constructor(data?: LifecycleServiceOptions);
|
|
171
|
+
onError(error: Error, context: {
|
|
172
|
+
hookId: string;
|
|
173
|
+
method: LifecycleMethod;
|
|
174
|
+
}): void;
|
|
175
|
+
mapAliases(args: string[]): string[];
|
|
176
|
+
list(options?: ListOptions): LifecycleHook[];
|
|
177
|
+
add(...payload: (LifecycleHook | Constructor$1<LifecycleHook>)[]): void;
|
|
178
|
+
emitMethod(method: LifecycleMethod, options?: ListOptions): Promise<void>;
|
|
179
|
+
emit(payload: LifecycleMethod | LifecycleMethod[], options?: ListOptions): Promise<void>;
|
|
180
|
+
register(options?: ListOptions): Promise<void>;
|
|
181
|
+
load(options?: ListOptions): Promise<void>;
|
|
182
|
+
boot(options?: ListOptions): Promise<void>;
|
|
183
|
+
shutdown(options?: ListOptions): Promise<void>;
|
|
184
|
+
clear(): void;
|
|
185
|
+
}
|
|
186
|
+
//#endregion
|
|
187
|
+
//#region src/client/services/LifecycleService.d.ts
|
|
188
|
+
declare class LifecycleService extends LifecycleService$1 {
|
|
189
|
+
addImports(imports: Record<string, any>): void;
|
|
190
|
+
}
|
|
191
|
+
//#endregion
|
|
192
|
+
//#region src/client/entities/MenuItemEntity.d.ts
|
|
193
|
+
declare const MenuItem_base: {
|
|
194
|
+
new (...args: any[]): {
|
|
195
|
+
merge(data: Partial< /*elided*/any>): /*elided*/any;
|
|
196
|
+
};
|
|
197
|
+
from<T>(this: new () => T, data: Partial<T>): T;
|
|
198
|
+
} & Constructor$1;
|
|
199
|
+
declare class MenuItem extends MenuItem_base {
|
|
200
|
+
id: string;
|
|
201
|
+
label: string;
|
|
202
|
+
layout: string;
|
|
203
|
+
to?: string;
|
|
204
|
+
target?: '_blank' | '_self' | '_parent' | '_top';
|
|
205
|
+
group?: string;
|
|
206
|
+
order?: number;
|
|
207
|
+
icon?: string;
|
|
208
|
+
parent?: string;
|
|
209
|
+
}
|
|
210
|
+
//#endregion
|
|
211
|
+
//#region src/client/services/MenuService.d.ts
|
|
212
|
+
interface ListFilter {
|
|
213
|
+
layout?: string;
|
|
214
|
+
group?: string;
|
|
215
|
+
parent?: string;
|
|
216
|
+
allowed?: boolean;
|
|
217
|
+
}
|
|
218
|
+
declare class MenuService {
|
|
219
|
+
static __container_entry_key: string;
|
|
220
|
+
items: Map<string, MenuItem>;
|
|
221
|
+
add(...item: Omit<Partial<MenuItem>, 'merge' | 'from'>[]): void;
|
|
222
|
+
remove(id: MenuItem['id']): void;
|
|
223
|
+
list(filter?: ListFilter): MenuItem[];
|
|
224
|
+
clear(): void;
|
|
225
|
+
}
|
|
226
|
+
//#endregion
|
|
227
|
+
//#region src/client/services/RouterService.d.ts
|
|
228
|
+
interface Router extends Router$1 {
|
|
229
|
+
auto: typeof auto;
|
|
230
|
+
}
|
|
231
|
+
interface AutoOptions {
|
|
232
|
+
guards?: NavigationGuard[] | ((record: RouteRecordRaw) => NavigationGuard[]);
|
|
233
|
+
strip?: (string | RegExp)[];
|
|
234
|
+
exclude?: (string | RegExp)[];
|
|
235
|
+
prefix?: string;
|
|
236
|
+
refine?: (records: RouteRecordRaw[]) => RouteRecordRaw[];
|
|
237
|
+
}
|
|
238
|
+
declare function auto(imports: Record<string, DefineComponent | (() => Promise<DefineComponent>)>, options?: AutoOptions): RouteRecordRaw[];
|
|
239
|
+
declare function createRouter(): Router;
|
|
240
|
+
//#endregion
|
|
241
|
+
//#region src/client/services/ToastService.d.ts
|
|
242
|
+
declare class ToastService {
|
|
243
|
+
static __container_entry_key: string;
|
|
244
|
+
success(message: string, options?: Record<string, any>): void;
|
|
245
|
+
error(message: string, options?: Record<string, any>): void;
|
|
246
|
+
}
|
|
247
|
+
//#endregion
|
|
248
|
+
//#region src/shared/entities/AclEntity.d.ts
|
|
249
|
+
declare class AclEntity {
|
|
250
|
+
static __container_entry_key: string;
|
|
251
|
+
ability: ReturnType<typeof defineAbility>;
|
|
252
|
+
permissions: PermissionEntity[];
|
|
253
|
+
debug: boolean;
|
|
254
|
+
logger: LoggerService;
|
|
255
|
+
constructor(data?: Partial<AclEntity>);
|
|
256
|
+
can(action: string, subject: any, object?: Record<string, any>): boolean;
|
|
257
|
+
cannot(action: string, subject: any, object?: Record<string, any>): boolean;
|
|
258
|
+
subject(subject: string, object: Record<string, any>): Record<string, any> & _$_casl_ability0.ForcedSubject<string>;
|
|
259
|
+
}
|
|
260
|
+
//#endregion
|
|
261
|
+
//#region src/client/facades/acl.d.ts
|
|
262
|
+
declare const acl: AclEntity;
|
|
263
|
+
//#endregion
|
|
264
|
+
//#region src/client/facades/auth.d.ts
|
|
265
|
+
declare const auth: AuthService;
|
|
266
|
+
//#endregion
|
|
267
|
+
//#region src/shared/services/ConfigService.d.ts
|
|
268
|
+
interface Entry {
|
|
269
|
+
key: string;
|
|
270
|
+
value: any;
|
|
271
|
+
source: string;
|
|
272
|
+
}
|
|
273
|
+
declare class ConfigService {
|
|
274
|
+
static __container_entry_key: string;
|
|
275
|
+
entries: Map<string, Entry>;
|
|
276
|
+
constructor();
|
|
277
|
+
list(): Entry[];
|
|
278
|
+
parseValue(value: any): any;
|
|
279
|
+
loadFromRecord(record: Record<string, any>, source?: string): void;
|
|
280
|
+
loadFromEntries(entries: [string, any][], source?: string): void;
|
|
281
|
+
toRecord(): Record<string, any>;
|
|
282
|
+
has(key: string): boolean;
|
|
283
|
+
get<T = any | undefined>(key: string, defaultValue?: any): T;
|
|
284
|
+
getOne<T = any | undefined>(keys: string[], defaultValue?: any): T;
|
|
285
|
+
set(key: string, value: any, source?: string): void;
|
|
286
|
+
unset(key: string): void;
|
|
287
|
+
clear(): void;
|
|
288
|
+
}
|
|
289
|
+
//#endregion
|
|
290
|
+
//#region src/client/facades/config.d.ts
|
|
291
|
+
declare const config: ConfigService;
|
|
292
|
+
//#endregion
|
|
293
|
+
//#region src/shared/services/ContainerService.d.ts
|
|
294
|
+
type Constructor<T = object> = new (...args: any[]) => T;
|
|
295
|
+
type EntryKey = string | symbol | Constructor;
|
|
296
|
+
declare class ContainerService {
|
|
297
|
+
private entries;
|
|
298
|
+
loadFromRecord(record: Record<string, any>): void;
|
|
299
|
+
toRecord(): Record<string, any>;
|
|
300
|
+
private getKey;
|
|
301
|
+
set(payload: EntryKey, value: any): this;
|
|
302
|
+
has(payload: EntryKey): boolean;
|
|
303
|
+
get<T>(payload: EntryKey): T;
|
|
304
|
+
singleton<T>(classConstructor: Constructor<T>): T;
|
|
305
|
+
load(entries: Record<any, any>): void;
|
|
306
|
+
proxy<T = unknown>(key: EntryKey): T;
|
|
307
|
+
keys(): EntryKey[];
|
|
308
|
+
}
|
|
309
|
+
//#endregion
|
|
310
|
+
//#region src/client/facades/container.d.ts
|
|
311
|
+
declare const _default: ContainerService;
|
|
312
|
+
//#endregion
|
|
313
|
+
//#region src/client/facades/fetch.d.ts
|
|
314
|
+
declare const $fetch$1: FetchService;
|
|
315
|
+
//#endregion
|
|
316
|
+
//#region src/client/facades/logger.d.ts
|
|
317
|
+
declare const logger: LoggerService;
|
|
318
|
+
//#endregion
|
|
319
|
+
//#region src/client/facades/menu.d.ts
|
|
320
|
+
declare const menu: MenuService;
|
|
321
|
+
//#endregion
|
|
322
|
+
//#region src/client/facades/route.d.ts
|
|
323
|
+
declare const route: RouteLocationNormalizedGeneric;
|
|
324
|
+
//#endregion
|
|
325
|
+
//#region src/client/facades/router.d.ts
|
|
326
|
+
declare const router: Router;
|
|
327
|
+
//#endregion
|
|
328
|
+
//#region src/client/facades/toast.d.ts
|
|
329
|
+
declare const toast: ToastService;
|
|
330
|
+
//#endregion
|
|
331
|
+
//#region src/shared/entities/ModuleManifestEntity.d.ts
|
|
332
|
+
interface ModuleManifestBuildImport {
|
|
333
|
+
from: string;
|
|
334
|
+
to?: string;
|
|
335
|
+
type: 'global_import';
|
|
336
|
+
}
|
|
337
|
+
interface ModuleManifestBuild {
|
|
338
|
+
imports?: ModuleManifestBuildImport[];
|
|
339
|
+
}
|
|
340
|
+
declare const ModuleManifest_base: {
|
|
341
|
+
new (...args: any[]): {
|
|
342
|
+
merge(data: Partial< /*elided*/any>): /*elided*/any;
|
|
343
|
+
};
|
|
344
|
+
from<T>(this: new () => T, data: Partial<T>): T;
|
|
345
|
+
} & Constructor$1;
|
|
346
|
+
declare class ModuleManifest extends ModuleManifest_base {
|
|
347
|
+
id: string;
|
|
348
|
+
name: string;
|
|
349
|
+
version: string;
|
|
350
|
+
description?: string;
|
|
351
|
+
enabled: boolean;
|
|
352
|
+
author?: string;
|
|
353
|
+
dependencies?: Record<string, string>;
|
|
354
|
+
build?: ModuleManifestBuild;
|
|
355
|
+
[key: string]: any;
|
|
356
|
+
}
|
|
357
|
+
//#endregion
|
|
358
|
+
//#region src/shared/entities/ModuleEntity.d.ts
|
|
359
|
+
interface ModuleUpgradeInfo {
|
|
360
|
+
source: 'git' | 'zip';
|
|
361
|
+
[key: string]: any;
|
|
362
|
+
}
|
|
363
|
+
declare const Module_base$1: {
|
|
364
|
+
new (...args: any[]): {
|
|
365
|
+
merge(data: Partial< /*elided*/any>): /*elided*/any;
|
|
366
|
+
};
|
|
367
|
+
from<T>(this: new () => T, data: Partial<T>): T;
|
|
368
|
+
} & Constructor$1 & Constructor$1<{}> & typeof LifecycleHook;
|
|
369
|
+
declare class Module$1 extends Module_base$1 {
|
|
370
|
+
id: string;
|
|
371
|
+
name: string;
|
|
372
|
+
enabled: boolean;
|
|
373
|
+
dependencies: Record<string, any>;
|
|
374
|
+
build: ModuleManifest['build'];
|
|
375
|
+
directory: string;
|
|
376
|
+
upgrade_info?: ModuleUpgradeInfo;
|
|
377
|
+
setData(data: Partial<Module$1 | ModuleManifest>): void;
|
|
378
|
+
}
|
|
379
|
+
//#endregion
|
|
380
|
+
//#region src/client/entities/ModuleEntity.d.ts
|
|
381
|
+
declare const Module_base: typeof Module$1;
|
|
382
|
+
declare class Module extends Module_base {}
|
|
383
|
+
//#endregion
|
|
384
|
+
//#region src/shared/entities/PluginEntity.d.ts
|
|
385
|
+
declare const PluginEntity_base$1: {
|
|
386
|
+
new (...args: any[]): {
|
|
387
|
+
merge(data: Partial< /*elided*/any>): /*elided*/any;
|
|
388
|
+
};
|
|
389
|
+
from<T>(this: new () => T, data: Partial<T>): T;
|
|
390
|
+
} & Constructor$1;
|
|
391
|
+
declare class PluginEntity$1 extends PluginEntity_base$1 {
|
|
392
|
+
id: string;
|
|
393
|
+
name: string;
|
|
394
|
+
version: string;
|
|
395
|
+
enabled: boolean;
|
|
396
|
+
}
|
|
397
|
+
//#endregion
|
|
398
|
+
//#region src/client/entities/PluginEntity.d.ts
|
|
399
|
+
declare const PluginEntity_base: typeof PluginEntity$1;
|
|
400
|
+
declare class PluginEntity extends PluginEntity_base {
|
|
401
|
+
addPagesFolder(imports: any, options?: AutoOptions): void;
|
|
402
|
+
load(): Promise<void>;
|
|
403
|
+
}
|
|
404
|
+
//#endregion
|
|
405
|
+
//#region src/client/utils/fetcher.d.ts
|
|
406
|
+
/** @deprecated Use $fetch facade */
|
|
407
|
+
declare const $fetch: FetchService;
|
|
408
|
+
//#endregion
|
|
409
|
+
//#region src/client/utils/file.d.ts
|
|
410
|
+
interface PickOptions {
|
|
411
|
+
accept?: string;
|
|
412
|
+
multiple?: boolean;
|
|
413
|
+
}
|
|
414
|
+
type PickResult<T extends PickOptions> = T['multiple'] extends true ? File[] : File | null;
|
|
415
|
+
declare function pick<T extends PickOptions>(options: T): Promise<PickResult<T>>;
|
|
416
|
+
declare function toUint8Array(file: File): Promise<Uint8Array>;
|
|
417
|
+
interface UploadOptions {
|
|
418
|
+
driveId: string;
|
|
419
|
+
file: File;
|
|
420
|
+
directory?: string;
|
|
421
|
+
}
|
|
422
|
+
declare function upload(options: UploadOptions): Promise<any>;
|
|
423
|
+
declare const $file: {
|
|
424
|
+
pick: typeof pick;
|
|
425
|
+
upload: typeof upload;
|
|
426
|
+
toUint8Array: typeof toUint8Array;
|
|
427
|
+
};
|
|
428
|
+
//#endregion
|
|
429
|
+
//#region src/client/guards/authGuard.d.ts
|
|
430
|
+
interface AuthGuardOptions {
|
|
431
|
+
redirect: string;
|
|
432
|
+
exclude?: string[];
|
|
433
|
+
}
|
|
434
|
+
declare function createAuthGuard(options: AuthGuardOptions): NavigationGuard;
|
|
435
|
+
declare const authGuard: NavigationGuard;
|
|
436
|
+
//#endregion
|
|
437
|
+
//#region src/client/guards/guestGuard.d.ts
|
|
438
|
+
interface GuestGuardOptions {
|
|
439
|
+
redirect: string;
|
|
440
|
+
}
|
|
441
|
+
declare function createGuestGuard(options: GuestGuardOptions): () => string | undefined;
|
|
442
|
+
declare const guestGuard: () => string | undefined;
|
|
443
|
+
//#endregion
|
|
444
|
+
//#region src/client/guards/setupGuard.d.ts
|
|
445
|
+
declare const setupGuard: NavigationGuard;
|
|
446
|
+
//#endregion
|
|
447
|
+
export { $fetch, $file, AuthGuardOptions, AuthService, AutoOptions, FetchBrowserService, FetchNodeService, FetchOptions, FetchService, GuestGuardOptions, LifecycleService, ListFilter, MenuItem as MenuItemEntity, MenuService, Module as ModuleEntity, PluginEntity, Router, ToastService, acl, auth, authGuard, auto, config, _default as container, createAuthGuard, createGuestGuard, createRouter, $fetch$1 as fetch, guestGuard, logger, menu, route, router, setupGuard, toast };
|
|
448
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguZC5tdHMiLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NoYXJlZC91dGlscy9jb21wb3NlLmQudHMiLCIuLi8uLi9zcmMvc2hhcmVkL2VudGl0aWVzL1Blcm1pc3Npb25FbnRpdHkuZC50cyIsIi4uLy4uL3NyYy9zaGFyZWQvZW50aXRpZXMvUm9sZUVudGl0eS5kLnRzIiwiLi4vLi4vc3JjL3NoYXJlZC9lbnRpdGllcy9Vc2VyRW50aXR5LmQudHMiLCIuLi8uLi9zcmMvY2xpZW50L3NlcnZpY2VzL0F1dGhTZXJ2aWNlLmQudHMiLCIuLi8uLi9zcmMvY2xpZW50L3NlcnZpY2VzL0ZldGNoU2VydmljZS5kLnRzIiwiLi4vLi4vc3JjL2NsaWVudC9zZXJ2aWNlcy9GZXRjaEJyb3dzZXJTZXJ2aWNlLmQudHMiLCIuLi8uLi9zcmMvY2xpZW50L3NlcnZpY2VzL0ZldGNoTm9kZVNlcnZpY2UuZC50cyIsIi4uLy4uL3NyYy9zaGFyZWQvc2VydmljZXMvTG9nZ2VyU2VydmljZS5kLnRzIiwiLi4vLi4vc3JjL3NoYXJlZC9lbnRpdGllcy9MaWZlY3ljbGVIb29rLmQudHMiLCIuLi8uLi9zcmMvc2hhcmVkL3NlcnZpY2VzL0xpZmVjeWNsZVNlcnZpY2UuZC50cyIsIi4uLy4uL3NyYy9jbGllbnQvc2VydmljZXMvTGlmZWN5Y2xlU2VydmljZS5kLnRzIiwiLi4vLi4vc3JjL2NsaWVudC9lbnRpdGllcy9NZW51SXRlbUVudGl0eS5kLnRzIiwiLi4vLi4vc3JjL2NsaWVudC9zZXJ2aWNlcy9NZW51U2VydmljZS5kLnRzIiwiLi4vLi4vc3JjL2NsaWVudC9zZXJ2aWNlcy9Sb3V0ZXJTZXJ2aWNlLmQudHMiLCIuLi8uLi9zcmMvY2xpZW50L3NlcnZpY2VzL1RvYXN0U2VydmljZS5kLnRzIiwiLi4vLi4vc3JjL3NoYXJlZC9lbnRpdGllcy9BY2xFbnRpdHkuZC50cyIsIi4uLy4uL3NyYy9jbGllbnQvZmFjYWRlcy9hY2wuZC50cyIsIi4uLy4uL3NyYy9jbGllbnQvZmFjYWRlcy9hdXRoLmQudHMiLCIuLi8uLi9zcmMvc2hhcmVkL3NlcnZpY2VzL0NvbmZpZ1NlcnZpY2UuZC50cyIsIi4uLy4uL3NyYy9jbGllbnQvZmFjYWRlcy9jb25maWcuZC50cyIsIi4uLy4uL3NyYy9zaGFyZWQvc2VydmljZXMvQ29udGFpbmVyU2VydmljZS5kLnRzIiwiLi4vLi4vc3JjL2NsaWVudC9mYWNhZGVzL2NvbnRhaW5lci5kLnRzIiwiLi4vLi4vc3JjL2NsaWVudC9mYWNhZGVzL2ZldGNoLmQudHMiLCIuLi8uLi9zcmMvY2xpZW50L2ZhY2FkZXMvbG9nZ2VyLmQudHMiLCIuLi8uLi9zcmMvY2xpZW50L2ZhY2FkZXMvbWVudS5kLnRzIiwiLi4vLi4vc3JjL2NsaWVudC9mYWNhZGVzL3JvdXRlLmQudHMiLCIuLi8uLi9zcmMvY2xpZW50L2ZhY2FkZXMvcm91dGVyLmQudHMiLCIuLi8uLi9zcmMvY2xpZW50L2ZhY2FkZXMvdG9hc3QuZC50cyIsIi4uLy4uL3NyYy9zaGFyZWQvZW50aXRpZXMvTW9kdWxlTWFuaWZlc3RFbnRpdHkuZC50cyIsIi4uLy4uL3NyYy9zaGFyZWQvZW50aXRpZXMvTW9kdWxlRW50aXR5LmQudHMiLCIuLi8uLi9zcmMvY2xpZW50L2VudGl0aWVzL01vZHVsZUVudGl0eS5kLnRzIiwiLi4vLi4vc3JjL3NoYXJlZC9lbnRpdGllcy9QbHVnaW5FbnRpdHkuZC50cyIsIi4uLy4uL3NyYy9jbGllbnQvZW50aXRpZXMvUGx1Z2luRW50aXR5LmQudHMiLCIuLi8uLi9zcmMvY2xpZW50L3V0aWxzL2ZldGNoZXIuZC50cyIsIi4uLy4uL3NyYy9jbGllbnQvdXRpbHMvZmlsZS5kLnRzIiwiLi4vLi4vc3JjL2NsaWVudC9ndWFyZHMvYXV0aEd1YXJkLmQudHMiLCIuLi8uLi9zcmMvY2xpZW50L2d1YXJkcy9ndWVzdEd1YXJkLmQudHMiLCIuLi8uLi9zcmMvY2xpZW50L2d1YXJkcy9zZXR1cEd1YXJkLmQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBVbmlvblRvSW50ZXJzZWN0aW9uIH0gZnJvbSAnLi90eXBpbmcudHMnO1xuZXhwb3J0IHR5cGUgQW55Q2xhc3MgPSBuZXcgKC4uLmFyZ3M6IGFueVtdKSA9PiBhbnk7XG5leHBvcnQgdHlwZSBDb25zdHJ1Y3RvcjxUID0ge30+ID0gbmV3ICguLi5hcmdzOiBhbnlbXSkgPT4gVDtcbmV4cG9ydCB0eXBlIE1peGluPFQ+ID0gKGJhc2U6IENvbnN0cnVjdG9yKSA9PiBDb25zdHJ1Y3RvcjxUPjtcbi8qKlxuICogQ29tcG9zZXMgbXVsdGlwbGUgbWl4aW5zIGludG8gYSBzaW5nbGUgY2xhc3MgdGhhdCBjYW4gYmUgZXh0ZW5kZWQuXG4gKiBBbGxvd3MgZm9yIG11bHRpcGxlIGluaGVyaXRhbmNlLWxpa2UgYmVoYXZpb3IgYnkgYXBwbHlpbmcgbWl4aW5zIHNlcXVlbnRpYWxseS5cbiAqXG4gKiBAcGFyYW0gbWl4aW5zIC0gQXJyYXkgb2YgbWl4aW4gZnVuY3Rpb25zIHRvIGNvbXBvc2VcbiAqIEByZXR1cm5zIEEgY2xhc3MgY29uc3RydWN0b3IgdGhhdCBpbmNsdWRlcyBhbGwgbWl4aW4gZnVuY3Rpb25hbGl0eVxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjbGFzcyBVc2VyIGV4dGVuZHMgY29tcG9zZShUaW1lc3RhbXAsIFNvZnREZWxldGUpIHtcbiAqICAgY29uc3RydWN0b3IocHVibGljIG5hbWU6IHN0cmluZykge1xuICogICAgIHN1cGVyKClcbiAqICAgfVxuICogfVxuICogYGBgXG4gKi9cbmV4cG9ydCBkZWNsYXJlIGZ1bmN0aW9uIGNvbXBvc2U8TSBleHRlbmRzIEFycmF5PChiYXNlOiBDb25zdHJ1Y3Rvcjxhbnk+KSA9PiBDb25zdHJ1Y3Rvcjxhbnk+Pj4oLi4ubWl4aW5zOiBNKTogVW5pb25Ub0ludGVyc2VjdGlvbjxSZXR1cm5UeXBlPE1bbnVtYmVyXT4+O1xuLyoqXG4gKiBBbHRlcm5hdGl2ZSBjb21wb3NlIGZ1bmN0aW9uIHRoYXQgc3RhcnRzIHdpdGggYSBiYXNlIGNsYXNzXG4gKlxuICogQHBhcmFtIGJhc2VDbGFzcyAtIFRoZSBiYXNlIGNsYXNzIHRvIHN0YXJ0IHdpdGhcbiAqIEBwYXJhbSBtaXhpbnMgLSBBcnJheSBvZiBtaXhpbiBmdW5jdGlvbnMgdG8gYXBwbHlcbiAqIEByZXR1cm5zIEEgY2xhc3MgY29uc3RydWN0b3IgdGhhdCBleHRlbmRzIHRoZSBiYXNlIGNsYXNzIHdpdGggYWxsIG1peGluIGZ1bmN0aW9uYWxpdHlcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY2xhc3MgVXNlciBleHRlbmRzIGNvbXBvc2VXaXRoKEJhc2VFbnRpdHksIFRpbWVzdGFtcCwgU29mdERlbGV0ZSkge1xuICogICBjb25zdHJ1Y3RvcihwdWJsaWMgbmFtZTogc3RyaW5nKSB7XG4gKiAgICAgc3VwZXIoKVxuICogICB9XG4gKiB9XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGRlY2xhcmUgZnVuY3Rpb24gY29tcG9zZVdpdGg8VEJhc2UgZXh0ZW5kcyBDb25zdHJ1Y3RvciwgTSBleHRlbmRzIEFycmF5PChiYXNlOiBDb25zdHJ1Y3RvcikgPT4gQ29uc3RydWN0b3I8YW55Pj4+KGJhc2VDbGFzczogVEJhc2UsIC4uLm1peGluczogTSk6IFRCYXNlICYgVW5pb25Ub0ludGVyc2VjdGlvbjxSZXR1cm5UeXBlPE1bbnVtYmVyXT4+O1xuZXhwb3J0IGRlY2xhcmUgZnVuY3Rpb24gbWl4aW48VEJhc2UgZXh0ZW5kcyBDb25zdHJ1Y3Rvcj4oU291cmNlOiBUQmFzZSk6IDxUVGFyZ2V0IGV4dGVuZHMgQ29uc3RydWN0b3I+KFRhcmdldDogVFRhcmdldCkgPT4gVFRhcmdldCAmIFRCYXNlO1xuIiwiZGVjbGFyZSBjb25zdCBQZXJtaXNzaW9uRW50aXR5X2Jhc2U6IHtcbiAgICBuZXcgKC4uLmFyZ3M6IGFueVtdKToge1xuICAgICAgICBtZXJnZShkYXRhOiBQYXJ0aWFsPC8qZWxpZGVkKi8gYW55Pik6IC8qZWxpZGVkKi8gYW55O1xuICAgIH07XG4gICAgZnJvbTxUPih0aGlzOiBuZXcgKCkgPT4gVCwgZGF0YTogUGFydGlhbDxUPik6IFQ7XG59ICYgaW1wb3J0KFwiI3NoYXJlZC91dGlscy9jb21wb3NlLnRzXCIpLkNvbnN0cnVjdG9yO1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUGVybWlzc2lvbkVudGl0eSBleHRlbmRzIFBlcm1pc3Npb25FbnRpdHlfYmFzZSB7XG4gICAgaWQ6IG51bWJlcjtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgZGVzY3JpcHRpb246IHN0cmluZyB8IG51bGw7XG4gICAgb3JpZ2luOiBzdHJpbmc7XG4gICAgc3ViamVjdDogc3RyaW5nO1xuICAgIGFjdGlvbjogc3RyaW5nO1xuICAgIGNvbmRpdGlvbnM6IHN0cmluZyB8IG51bGwgfCBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICAgIGdldCBlZGl0YWJsZSgpOiBib29sZWFuO1xuICAgIGdldCBwYXJzZWRDb25kaXRpb25zKCk6IGFueTtcbn1cbmV4cG9ydCB7fTtcbiIsImRlY2xhcmUgY29uc3QgUm9sZV9iYXNlOiB7XG4gICAgbmV3ICguLi5hcmdzOiBhbnlbXSk6IHtcbiAgICAgICAgbWVyZ2UoZGF0YTogUGFydGlhbDwvKmVsaWRlZCovIGFueT4pOiAvKmVsaWRlZCovIGFueTtcbiAgICB9O1xuICAgIGZyb208VD4odGhpczogbmV3ICgpID0+IFQsIGRhdGE6IFBhcnRpYWw8VD4pOiBUO1xufSAmIGltcG9ydChcIiNzaGFyZWQvdXRpbHMvY29tcG9zZS50c1wiKS5Db25zdHJ1Y3RvciAmIHtcbiAgICBuZXcgKC4uLmFyZ3M6IGFueVtdKToge1xuICAgICAgICBjcmVhdGVkX2F0OiBEYXRlIHwgc3RyaW5nO1xuICAgICAgICB1cGRhdGVkX2F0OiBEYXRlIHwgc3RyaW5nO1xuICAgIH07XG59ICYge1xuICAgIG5ldyAoLi4uYXJnczogYW55W10pOiB7XG4gICAgICAgIGRlbGV0ZWRfYXQ6IERhdGUgfCBzdHJpbmcgfCBudWxsO1xuICAgIH07XG59O1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUm9sZSBleHRlbmRzIFJvbGVfYmFzZSB7XG4gICAgaWQ6IG51bWJlcjtcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgZGVzY3JpcHRpb24/OiBzdHJpbmc7XG59XG5leHBvcnQge307XG4iLCJpbXBvcnQgdHlwZSBQZXJtaXNzaW9uIGZyb20gJy4vUGVybWlzc2lvbkVudGl0eS50cyc7XG5pbXBvcnQgdHlwZSBSb2xlIGZyb20gJy4vUm9sZUVudGl0eS50cyc7XG5kZWNsYXJlIGNvbnN0IFVzZXJFbnRpdHlfYmFzZToge1xuICAgIG5ldyAoLi4uYXJnczogYW55W10pOiB7XG4gICAgICAgIG1lcmdlKGRhdGE6IFBhcnRpYWw8LyplbGlkZWQqLyBhbnk+KTogLyplbGlkZWQqLyBhbnk7XG4gICAgfTtcbiAgICBmcm9tPFQ+KHRoaXM6IG5ldyAoKSA9PiBULCBkYXRhOiBQYXJ0aWFsPFQ+KTogVDtcbn0gJiBpbXBvcnQoXCIjc2hhcmVkL3V0aWxzL2NvbXBvc2UudHNcIikuQ29uc3RydWN0b3IgJiB7XG4gICAgbmV3ICguLi5hcmdzOiBhbnlbXSk6IHtcbiAgICAgICAgY3JlYXRlZF9hdDogRGF0ZSB8IHN0cmluZztcbiAgICAgICAgdXBkYXRlZF9hdDogRGF0ZSB8IHN0cmluZztcbiAgICB9O1xufSAmIHtcbiAgICBuZXcgKC4uLmFyZ3M6IGFueVtdKToge1xuICAgICAgICBkZWxldGVkX2F0OiBEYXRlIHwgc3RyaW5nIHwgbnVsbDtcbiAgICB9O1xufTtcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIFVzZXJFbnRpdHkgZXh0ZW5kcyBVc2VyRW50aXR5X2Jhc2Uge1xuICAgIGlkOiBudW1iZXI7XG4gICAgZW1haWw6IHN0cmluZztcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgdXNlcm5hbWU6IHN0cmluZztcbiAgICBwYXNzd29yZD86IHN0cmluZztcbiAgICB2ZXJpZmllZF9hdD86IERhdGUgfCBzdHJpbmcgfCBudWxsO1xuICAgIHBlcm1pc3Npb25zPzogUGVybWlzc2lvbltdO1xuICAgIHJvbGVzPzogUm9sZVtdO1xuICAgIGdldCBpbml0aWFscygpOiBzdHJpbmc7XG59XG5leHBvcnQge307XG4iLCJpbXBvcnQgVXNlciBmcm9tICcjc2hhcmVkL2VudGl0aWVzL1VzZXJFbnRpdHkudHMnO1xuaW50ZXJmYWNlIExvZ291dE9wdGlvbnMge1xuICAgIHJlZGlyZWN0Pzogc3RyaW5nO1xufVxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQXV0aFNlcnZpY2Uge1xuICAgIHN0YXRpYyBfX2NvbnRhaW5lcl9lbnRyeV9rZXk6IHN0cmluZztcbiAgICB1c2VyOiBVc2VyIHwgbnVsbDtcbiAgICBjb25zdHJ1Y3RvcihkYXRhPzogUGFydGlhbDxBdXRoU2VydmljZT4pO1xuICAgIGxvZ291dChvcHRpb25zPzogTG9nb3V0T3B0aW9ucyk6IFByb21pc2U8dm9pZD47XG59XG5leHBvcnQge307XG4iLCJleHBvcnQgaW50ZXJmYWNlIEZldGNoT3B0aW9ucyBleHRlbmRzIFJlcXVlc3RJbml0IHtcbiAgICBxdWVyeT86IFJlY29yZDxzdHJpbmcsIGFueT47XG4gICAgZGF0YT86IFJlY29yZDxzdHJpbmcsIGFueT47XG59XG5leHBvcnQgZGVmYXVsdCBjbGFzcyBGZXRjaFNlcnZpY2Uge1xuICAgIHN0YXRpYyBfX2NvbnRhaW5lcl9lbnRyeV9rZXk6IHN0cmluZztcbiAgICBwcm90ZWN0ZWQgaGFuZGxlRXJyb3IocmVzcG9uc2U6IFJlc3BvbnNlKTogUHJvbWlzZTx2b2lkPjtcbiAgICBwcm90ZWN0ZWQgYnVpbGRVcmwodXJsOiBzdHJpbmcsIHF1ZXJ5PzogUmVjb3JkPHN0cmluZywgYW55Pik6IHN0cmluZztcbiAgICBwcm90ZWN0ZWQgYnVpbGRSZXF1ZXN0SW5pdChvcHRpb25zOiBGZXRjaE9wdGlvbnMpOiBSZXF1ZXN0SW5pdDtcbiAgICBwcm90ZWN0ZWQgcGFyc2VSZXNwb25zZTxUPihyZXNwb25zZTogUmVzcG9uc2UpOiBQcm9taXNlPFQ+O1xuICAgIGZldGNoPFQ+KF91cmw6IHN0cmluZywgX29wdGlvbnM/OiBGZXRjaE9wdGlvbnMpOiBQcm9taXNlPFQ+O1xuICAgIHRyeTxUID0gYW55Pih1cmw6IHN0cmluZywgb3B0aW9ucz86IEZldGNoT3B0aW9ucyk6IFByb21pc2U8W0Vycm9yLCBudWxsXSB8IFtudWxsLCBBd2FpdGVkPFQ+XT47XG4gICAgZ2V0PFQgPSBhbnk+KHVybDogc3RyaW5nLCBvcHRpb25zPzogRmV0Y2hPcHRpb25zKTogUHJvbWlzZTxUPjtcbiAgICBwb3N0PFQgPSBhbnk+KHVybDogc3RyaW5nLCBvcHRpb25zPzogRmV0Y2hPcHRpb25zKTogUHJvbWlzZTxUPjtcbiAgICBwdXQ8VCA9IGFueT4odXJsOiBzdHJpbmcsIG9wdGlvbnM/OiBGZXRjaE9wdGlvbnMpOiBQcm9taXNlPFQ+O1xuICAgIGRlbGV0ZTxUID0gYW55Pih1cmw6IHN0cmluZywgb3B0aW9ucz86IEZldGNoT3B0aW9ucyk6IFByb21pc2U8VD47XG59XG4iLCJpbXBvcnQgdHlwZSB7IEZldGNoT3B0aW9ucyB9IGZyb20gJy4vRmV0Y2hTZXJ2aWNlLnRzJztcbmltcG9ydCBGZXRjaFNlcnZpY2UgZnJvbSAnLi9GZXRjaFNlcnZpY2UudHMnO1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgRmV0Y2hCcm93c2VyU2VydmljZSBleHRlbmRzIEZldGNoU2VydmljZSB7XG4gICAgZmV0Y2g8VD4odXJsOiBzdHJpbmcsIG9wdGlvbnM/OiBGZXRjaE9wdGlvbnMpOiBQcm9taXNlPFQ+O1xufVxuIiwiaW1wb3J0IHR5cGUgeyBGZXRjaE9wdGlvbnMgfSBmcm9tICcuL0ZldGNoU2VydmljZS50cyc7XG5pbXBvcnQgRmV0Y2hTZXJ2aWNlIGZyb20gJy4vRmV0Y2hTZXJ2aWNlLnRzJztcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEZldGNoTm9kZVNlcnZpY2UgZXh0ZW5kcyBGZXRjaFNlcnZpY2Uge1xuICAgIGZldGNoPFQ+KHVybDogc3RyaW5nLCBvcHRpb25zPzogRmV0Y2hPcHRpb25zKTogUHJvbWlzZTxUPjtcbiAgICBwcm90ZWN0ZWQgZmV0Y2hFeHRlcm5hbDxUPih1cmw6IHN0cmluZywgb3B0aW9ucz86IEZldGNoT3B0aW9ucyk6IFByb21pc2U8VD47XG4gICAgcHJvdGVjdGVkIGZldGNoSW50ZXJuYWw8VD4odXJsOiBzdHJpbmcsIG9wdGlvbnM/OiBGZXRjaE9wdGlvbnMpOiBQcm9taXNlPFQ+O1xufVxuIiwiZXhwb3J0IGRlZmF1bHQgY2xhc3MgTG9nZ2VyU2VydmljZSB7XG4gICAgc3RhdGljIF9fY29udGFpbmVyX2VudHJ5X2tleTogc3RyaW5nO1xuICAgIGluZm8obWVzc2FnZTogc3RyaW5nLCBtZXRhPzogYW55KTogdm9pZDtcbiAgICBkZWJ1ZyhtZXNzYWdlOiBzdHJpbmcsIG1ldGE/OiBhbnkpOiB2b2lkO1xuICAgIHdhcm4obWVzc2FnZTogc3RyaW5nLCBtZXRhPzogYW55KTogdm9pZDtcbiAgICBlcnJvcihtZXNzYWdlOiBzdHJpbmcsIG1ldGE/OiBhbnkpOiB2b2lkO1xuICAgIGNoaWxkKG9wdGlvbnM6IGFueSk6IExvZ2dlclNlcnZpY2U7XG59XG4iLCJleHBvcnQgZGVmYXVsdCBjbGFzcyBMaWZlY3ljbGVIb29rIHtcbiAgICBob29rX2lkOiBzdHJpbmc7XG4gICAgaG9va19hbGlhc2VzPzogc3RyaW5nW107XG4gICAgb3JkZXI/OiBudW1iZXI7XG4gICAgc3ViaG9va3M/OiBMaWZlY3ljbGVIb29rW107XG4gICAgcmVnaXN0ZXIoKTogUHJvbWlzZTx2b2lkPjtcbiAgICBsb2FkKCk6IFByb21pc2U8dm9pZD47XG4gICAgYm9vdCgpOiBQcm9taXNlPHZvaWQ+O1xuICAgIHNodXRkb3duKCk6IFByb21pc2U8dm9pZD47XG4gICAgLyoqIEBkZXByZWNhdGVkIFVzZSByZWdpc3RlciAqL1xuICAgIG9uUmVnaXN0ZXIoKTogUHJvbWlzZTx2b2lkPjtcbiAgICAvKiogQGRlcHJlY2F0ZWQgVXNlIGxvYWQgKi9cbiAgICBvbkxvYWQoKTogUHJvbWlzZTx2b2lkPjtcbiAgICAvKiogQGRlcHJlY2F0ZWQgVXNlIGJvb3QgKi9cbiAgICBvbkJvb3QoKTogUHJvbWlzZTx2b2lkPjtcbiAgICAvKiogQGRlcHJlY2F0ZWQgVXNlIHNodXRkb3duICovXG4gICAgb25TaHV0ZG93bigpOiBQcm9taXNlPHZvaWQ+O1xufVxuIiwiaW1wb3J0IExvZ2dlclNlcnZpY2UgZnJvbSAnLi9Mb2dnZXJTZXJ2aWNlLnRzJztcbmltcG9ydCB0eXBlIExpZmVjeWNsZUhvb2sgZnJvbSAnI3NoYXJlZC9lbnRpdGllcy9MaWZlY3ljbGVIb29rLnRzJztcbmltcG9ydCB0eXBlIHsgQ29uc3RydWN0b3IgfSBmcm9tICcjc2hhcmVkL3V0aWxzL2NvbXBvc2UudHMnO1xudHlwZSBMaWZlY3ljbGVNZXRob2QgPSAncmVnaXN0ZXInIHwgJ2xvYWQnIHwgJ2Jvb3QnIHwgJ3NodXRkb3duJztcbmludGVyZmFjZSBMaXN0T3B0aW9ucyB7XG4gICAgaW5jbHVkZT86IHN0cmluZyB8IHN0cmluZ1tdO1xuICAgIGV4Y2x1ZGU/OiBzdHJpbmcgfCBzdHJpbmdbXTtcbn1cbmV4cG9ydCBpbnRlcmZhY2UgTGlmZWN5Y2xlU2VydmljZU9wdGlvbnMge1xuICAgIGRlYnVnPzogYm9vbGVhbjtcbiAgICBob29rcz86IE1hcDxzdHJpbmcsIExpZmVjeWNsZUhvb2s+O1xuICAgIGxvZ2dlcj86IExvZ2dlclNlcnZpY2U7XG4gICAgb25FcnJvcj86IChlcnJvcjogRXJyb3IsIGNvbnRleHQ6IHtcbiAgICAgICAgaG9va0lkOiBzdHJpbmc7XG4gICAgICAgIG1ldGhvZDogTGlmZWN5Y2xlTWV0aG9kO1xuICAgIH0pID0+IHZvaWQ7XG59XG5leHBvcnQgZGVmYXVsdCBjbGFzcyBMaWZlY3ljbGVTZXJ2aWNlIHtcbiAgICBzdGF0aWMgX19jb250YWluZXJfZW50cnlfa2V5OiBzdHJpbmc7XG4gICAgaG9va3M6IE1hcDxzdHJpbmcsIExpZmVjeWNsZUhvb2s+O1xuICAgIGxvZ2dlcjogTG9nZ2VyU2VydmljZTtcbiAgICBkZWJ1ZzogYm9vbGVhbjtcbiAgICBjb25zdHJ1Y3RvcihkYXRhPzogTGlmZWN5Y2xlU2VydmljZU9wdGlvbnMpO1xuICAgIG9uRXJyb3IoZXJyb3I6IEVycm9yLCBjb250ZXh0OiB7XG4gICAgICAgIGhvb2tJZDogc3RyaW5nO1xuICAgICAgICBtZXRob2Q6IExpZmVjeWNsZU1ldGhvZDtcbiAgICB9KTogdm9pZDtcbiAgICBtYXBBbGlhc2VzKGFyZ3M6IHN0cmluZ1tdKTogc3RyaW5nW107XG4gICAgbGlzdChvcHRpb25zPzogTGlzdE9wdGlvbnMpOiBMaWZlY3ljbGVIb29rW107XG4gICAgYWRkKC4uLnBheWxvYWQ6IChMaWZlY3ljbGVIb29rIHwgQ29uc3RydWN0b3I8TGlmZWN5Y2xlSG9vaz4pW10pOiB2b2lkO1xuICAgIGVtaXRNZXRob2QobWV0aG9kOiBMaWZlY3ljbGVNZXRob2QsIG9wdGlvbnM/OiBMaXN0T3B0aW9ucyk6IFByb21pc2U8dm9pZD47XG4gICAgZW1pdChwYXlsb2FkOiBMaWZlY3ljbGVNZXRob2QgfCBMaWZlY3ljbGVNZXRob2RbXSwgb3B0aW9ucz86IExpc3RPcHRpb25zKTogUHJvbWlzZTx2b2lkPjtcbiAgICByZWdpc3RlcihvcHRpb25zPzogTGlzdE9wdGlvbnMpOiBQcm9taXNlPHZvaWQ+O1xuICAgIGxvYWQob3B0aW9ucz86IExpc3RPcHRpb25zKTogUHJvbWlzZTx2b2lkPjtcbiAgICBib290KG9wdGlvbnM/OiBMaXN0T3B0aW9ucyk6IFByb21pc2U8dm9pZD47XG4gICAgc2h1dGRvd24ob3B0aW9ucz86IExpc3RPcHRpb25zKTogUHJvbWlzZTx2b2lkPjtcbiAgICBjbGVhcigpOiB2b2lkO1xufVxuZXhwb3J0IHt9O1xuIiwiaW1wb3J0IEJhc2VMaWZlY3ljbGVTZXJ2aWNlIGZyb20gJyNzaGFyZWQvc2VydmljZXMvTGlmZWN5Y2xlU2VydmljZS50cyc7XG5leHBvcnQgZGVmYXVsdCBjbGFzcyBMaWZlY3ljbGVTZXJ2aWNlIGV4dGVuZHMgQmFzZUxpZmVjeWNsZVNlcnZpY2Uge1xuICAgIGFkZEltcG9ydHMoaW1wb3J0czogUmVjb3JkPHN0cmluZywgYW55Pik6IHZvaWQ7XG59XG4iLCJkZWNsYXJlIGNvbnN0IE1lbnVJdGVtX2Jhc2U6IHtcbiAgICBuZXcgKC4uLmFyZ3M6IGFueVtdKToge1xuICAgICAgICBtZXJnZShkYXRhOiBQYXJ0aWFsPC8qZWxpZGVkKi8gYW55Pik6IC8qZWxpZGVkKi8gYW55O1xuICAgIH07XG4gICAgZnJvbTxUPih0aGlzOiBuZXcgKCkgPT4gVCwgZGF0YTogUGFydGlhbDxUPik6IFQ7XG59ICYgaW1wb3J0KFwiI3NoYXJlZC91dGlscy9jb21wb3NlLnRzXCIpLkNvbnN0cnVjdG9yO1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTWVudUl0ZW0gZXh0ZW5kcyBNZW51SXRlbV9iYXNlIHtcbiAgICBpZDogc3RyaW5nO1xuICAgIGxhYmVsOiBzdHJpbmc7XG4gICAgbGF5b3V0OiBzdHJpbmc7XG4gICAgdG8/OiBzdHJpbmc7XG4gICAgdGFyZ2V0PzogJ19ibGFuaycgfCAnX3NlbGYnIHwgJ19wYXJlbnQnIHwgJ190b3AnO1xuICAgIGdyb3VwPzogc3RyaW5nO1xuICAgIG9yZGVyPzogbnVtYmVyO1xuICAgIGljb24/OiBzdHJpbmc7XG4gICAgcGFyZW50Pzogc3RyaW5nO1xufVxuZXhwb3J0IHt9O1xuIiwiaW1wb3J0IE1lbnVJdGVtIGZyb20gJyNjbGllbnQvZW50aXRpZXMvTWVudUl0ZW1FbnRpdHkudHMnO1xuZXhwb3J0IGludGVyZmFjZSBMaXN0RmlsdGVyIHtcbiAgICBsYXlvdXQ/OiBzdHJpbmc7XG4gICAgZ3JvdXA/OiBzdHJpbmc7XG4gICAgcGFyZW50Pzogc3RyaW5nO1xuICAgIGFsbG93ZWQ/OiBib29sZWFuO1xufVxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTWVudVNlcnZpY2Uge1xuICAgIHN0YXRpYyBfX2NvbnRhaW5lcl9lbnRyeV9rZXk6IHN0cmluZztcbiAgICBpdGVtczogTWFwPHN0cmluZywgTWVudUl0ZW0+O1xuICAgIGFkZCguLi5pdGVtOiBPbWl0PFBhcnRpYWw8TWVudUl0ZW0+LCAnbWVyZ2UnIHwgJ2Zyb20nPltdKTogdm9pZDtcbiAgICByZW1vdmUoaWQ6IE1lbnVJdGVtWydpZCddKTogdm9pZDtcbiAgICBsaXN0KGZpbHRlcj86IExpc3RGaWx0ZXIpOiBNZW51SXRlbVtdO1xuICAgIGNsZWFyKCk6IHZvaWQ7XG59XG4iLCJpbXBvcnQgdHlwZSB7IE5hdmlnYXRpb25HdWFyZCwgUm91dGVyIGFzIFZ1ZVJvdXRlciB9IGZyb20gJ3Z1ZS1yb3V0ZXInO1xuaW1wb3J0IHR5cGUgeyBSb3V0ZVJlY29yZFJhdyB9IGZyb20gJ3Z1ZS1yb3V0ZXInO1xuaW1wb3J0IHR5cGUgeyBEZWZpbmVDb21wb25lbnQgfSBmcm9tICd2dWUnO1xuZXhwb3J0IGludGVyZmFjZSBSb3V0ZXIgZXh0ZW5kcyBWdWVSb3V0ZXIge1xuICAgIGF1dG86IHR5cGVvZiBhdXRvO1xufVxuZXhwb3J0IGludGVyZmFjZSBBdXRvT3B0aW9ucyB7XG4gICAgZ3VhcmRzPzogTmF2aWdhdGlvbkd1YXJkW10gfCAoKHJlY29yZDogUm91dGVSZWNvcmRSYXcpID0+IE5hdmlnYXRpb25HdWFyZFtdKTtcbiAgICBzdHJpcD86IChzdHJpbmcgfCBSZWdFeHApW107XG4gICAgZXhjbHVkZT86IChzdHJpbmcgfCBSZWdFeHApW107XG4gICAgcHJlZml4Pzogc3RyaW5nO1xuICAgIHJlZmluZT86IChyZWNvcmRzOiBSb3V0ZVJlY29yZFJhd1tdKSA9PiBSb3V0ZVJlY29yZFJhd1tdO1xufVxuZXhwb3J0IGRlY2xhcmUgZnVuY3Rpb24gYXV0byhpbXBvcnRzOiBSZWNvcmQ8c3RyaW5nLCBEZWZpbmVDb21wb25lbnQgfCAoKCkgPT4gUHJvbWlzZTxEZWZpbmVDb21wb25lbnQ+KT4sIG9wdGlvbnM/OiBBdXRvT3B0aW9ucyk6IFJvdXRlUmVjb3JkUmF3W107XG5leHBvcnQgZGVjbGFyZSBmdW5jdGlvbiBjcmVhdGVSb3V0ZXIoKTogUm91dGVyO1xuIiwiZXhwb3J0IGRlZmF1bHQgY2xhc3MgVG9hc3RTZXJ2aWNlIHtcbiAgICBzdGF0aWMgX19jb250YWluZXJfZW50cnlfa2V5OiBzdHJpbmc7XG4gICAgc3VjY2VzcyhtZXNzYWdlOiBzdHJpbmcsIG9wdGlvbnM/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+KTogdm9pZDtcbiAgICBlcnJvcihtZXNzYWdlOiBzdHJpbmcsIG9wdGlvbnM/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+KTogdm9pZDtcbn1cbiIsImltcG9ydCB7IGRlZmluZUFiaWxpdHkgfSBmcm9tICdAY2FzbC9hYmlsaXR5JztcbmltcG9ydCBQZXJtaXNzaW9uIGZyb20gJy4vUGVybWlzc2lvbkVudGl0eS50cyc7XG5pbXBvcnQgTG9nZ2VyU2VydmljZSBmcm9tICcjc2hhcmVkL3NlcnZpY2VzL0xvZ2dlclNlcnZpY2UudHMnO1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQWNsRW50aXR5IHtcbiAgICBzdGF0aWMgX19jb250YWluZXJfZW50cnlfa2V5OiBzdHJpbmc7XG4gICAgYWJpbGl0eTogUmV0dXJuVHlwZTx0eXBlb2YgZGVmaW5lQWJpbGl0eT47XG4gICAgcGVybWlzc2lvbnM6IFBlcm1pc3Npb25bXTtcbiAgICBkZWJ1ZzogYm9vbGVhbjtcbiAgICBsb2dnZXI6IExvZ2dlclNlcnZpY2U7XG4gICAgY29uc3RydWN0b3IoZGF0YT86IFBhcnRpYWw8QWNsRW50aXR5Pik7XG4gICAgY2FuKGFjdGlvbjogc3RyaW5nLCBzdWJqZWN0OiBhbnksIG9iamVjdD86IFJlY29yZDxzdHJpbmcsIGFueT4pOiBib29sZWFuO1xuICAgIGNhbm5vdChhY3Rpb246IHN0cmluZywgc3ViamVjdDogYW55LCBvYmplY3Q/OiBSZWNvcmQ8c3RyaW5nLCBhbnk+KTogYm9vbGVhbjtcbiAgICBzdWJqZWN0KHN1YmplY3Q6IHN0cmluZywgb2JqZWN0OiBSZWNvcmQ8c3RyaW5nLCBhbnk+KTogUmVjb3JkPHN0cmluZywgYW55PiAmIGltcG9ydChcIkBjYXNsL2FiaWxpdHlcIikuRm9yY2VkU3ViamVjdDxzdHJpbmc+O1xufVxuIiwiaW1wb3J0IEFjbEVudGl0eSBmcm9tICcjc2hhcmVkL2VudGl0aWVzL0FjbEVudGl0eS50cyc7XG5kZWNsYXJlIGNvbnN0IGFjbDogQWNsRW50aXR5O1xuZXhwb3J0IGRlZmF1bHQgYWNsO1xuIiwiaW1wb3J0IEF1dGhTZXJ2aWNlIGZyb20gJyNjbGllbnQvc2VydmljZXMvQXV0aFNlcnZpY2UudHMnO1xuZGVjbGFyZSBjb25zdCBhdXRoOiBBdXRoU2VydmljZTtcbmV4cG9ydCBkZWZhdWx0IGF1dGg7XG4iLCJpbnRlcmZhY2UgRW50cnkge1xuICAgIGtleTogc3RyaW5nO1xuICAgIHZhbHVlOiBhbnk7XG4gICAgc291cmNlOiBzdHJpbmc7XG59XG5leHBvcnQgZGVmYXVsdCBjbGFzcyBDb25maWdTZXJ2aWNlIHtcbiAgICBzdGF0aWMgX19jb250YWluZXJfZW50cnlfa2V5OiBzdHJpbmc7XG4gICAgZW50cmllczogTWFwPHN0cmluZywgRW50cnk+O1xuICAgIGNvbnN0cnVjdG9yKCk7XG4gICAgbGlzdCgpOiBFbnRyeVtdO1xuICAgIHBhcnNlVmFsdWUodmFsdWU6IGFueSk6IGFueTtcbiAgICBsb2FkRnJvbVJlY29yZChyZWNvcmQ6IFJlY29yZDxzdHJpbmcsIGFueT4sIHNvdXJjZT86IHN0cmluZyk6IHZvaWQ7XG4gICAgbG9hZEZyb21FbnRyaWVzKGVudHJpZXM6IFtzdHJpbmcsIGFueV1bXSwgc291cmNlPzogc3RyaW5nKTogdm9pZDtcbiAgICB0b1JlY29yZCgpOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICAgIGhhcyhrZXk6IHN0cmluZyk6IGJvb2xlYW47XG4gICAgZ2V0PFQgPSBhbnkgfCB1bmRlZmluZWQ+KGtleTogc3RyaW5nLCBkZWZhdWx0VmFsdWU/OiBhbnkpOiBUO1xuICAgIGdldE9uZTxUID0gYW55IHwgdW5kZWZpbmVkPihrZXlzOiBzdHJpbmdbXSwgZGVmYXVsdFZhbHVlPzogYW55KTogVDtcbiAgICBzZXQoa2V5OiBzdHJpbmcsIHZhbHVlOiBhbnksIHNvdXJjZT86IHN0cmluZyk6IHZvaWQ7XG4gICAgdW5zZXQoa2V5OiBzdHJpbmcpOiB2b2lkO1xuICAgIGNsZWFyKCk6IHZvaWQ7XG59XG5leHBvcnQge307XG4iLCJpbXBvcnQgQ29uZmlnU2VydmljZSBmcm9tICcjc2hhcmVkL3NlcnZpY2VzL0NvbmZpZ1NlcnZpY2UudHMnO1xuZGVjbGFyZSBjb25zdCBjb25maWc6IENvbmZpZ1NlcnZpY2U7XG5leHBvcnQgZGVmYXVsdCBjb25maWc7XG4iLCJ0eXBlIENvbnN0cnVjdG9yPFQgPSBvYmplY3Q+ID0gbmV3ICguLi5hcmdzOiBhbnlbXSkgPT4gVDtcbnR5cGUgRW50cnlLZXkgPSBzdHJpbmcgfCBzeW1ib2wgfCBDb25zdHJ1Y3RvcjtcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIENvbnRhaW5lclNlcnZpY2Uge1xuICAgIHByaXZhdGUgZW50cmllcztcbiAgICBsb2FkRnJvbVJlY29yZChyZWNvcmQ6IFJlY29yZDxzdHJpbmcsIGFueT4pOiB2b2lkO1xuICAgIHRvUmVjb3JkKCk6IFJlY29yZDxzdHJpbmcsIGFueT47XG4gICAgcHJpdmF0ZSBnZXRLZXk7XG4gICAgc2V0KHBheWxvYWQ6IEVudHJ5S2V5LCB2YWx1ZTogYW55KTogdGhpcztcbiAgICBoYXMocGF5bG9hZDogRW50cnlLZXkpOiBib29sZWFuO1xuICAgIGdldDxUPihwYXlsb2FkOiBFbnRyeUtleSk6IFQ7XG4gICAgc2luZ2xldG9uPFQ+KGNsYXNzQ29uc3RydWN0b3I6IENvbnN0cnVjdG9yPFQ+KTogVDtcbiAgICBsb2FkKGVudHJpZXM6IFJlY29yZDxhbnksIGFueT4pOiB2b2lkO1xuICAgIHByb3h5PFQgPSB1bmtub3duPihrZXk6IEVudHJ5S2V5KTogVDtcbiAgICBrZXlzKCk6IEVudHJ5S2V5W107XG59XG5leHBvcnQge307XG4iLCJpbXBvcnQgQ29udGFpbmVyU2VydmljZSBmcm9tIFwiI3NoYXJlZC9zZXJ2aWNlcy9Db250YWluZXJTZXJ2aWNlLnRzXCI7XG5kZWNsYXJlIGNvbnN0IF9kZWZhdWx0OiBDb250YWluZXJTZXJ2aWNlO1xuZXhwb3J0IGRlZmF1bHQgX2RlZmF1bHQ7XG4iLCJpbXBvcnQgRmV0Y2hTZXJ2aWNlIGZyb20gJyNjbGllbnQvc2VydmljZXMvRmV0Y2hTZXJ2aWNlLnRzJztcbmRlY2xhcmUgY29uc3QgJGZldGNoOiBGZXRjaFNlcnZpY2U7XG5leHBvcnQgZGVmYXVsdCAkZmV0Y2g7XG4iLCJpbXBvcnQgTG9nZ2VyU2VydmljZSBmcm9tICcjc2hhcmVkL3NlcnZpY2VzL0xvZ2dlclNlcnZpY2UudHMnO1xuZGVjbGFyZSBjb25zdCBsb2dnZXI6IExvZ2dlclNlcnZpY2U7XG5leHBvcnQgZGVmYXVsdCBsb2dnZXI7XG4iLCJpbXBvcnQgTWVudVNlcnZpY2UgZnJvbSAnI2NsaWVudC9zZXJ2aWNlcy9NZW51U2VydmljZS50cyc7XG5kZWNsYXJlIGNvbnN0IG1lbnU6IE1lbnVTZXJ2aWNlO1xuZXhwb3J0IGRlZmF1bHQgbWVudTtcbiIsImltcG9ydCB0eXBlIHsgUm91dGVMb2NhdGlvbk5vcm1hbGl6ZWRHZW5lcmljIH0gZnJvbSAndnVlLXJvdXRlcic7XG5kZWNsYXJlIGNvbnN0IHJvdXRlOiBSb3V0ZUxvY2F0aW9uTm9ybWFsaXplZEdlbmVyaWM7XG5leHBvcnQgZGVmYXVsdCByb3V0ZTtcbiIsImltcG9ydCB0eXBlIHsgUm91dGVyIH0gZnJvbSAnI2NsaWVudC9zZXJ2aWNlcy9Sb3V0ZXJTZXJ2aWNlLnRzJztcbmRlY2xhcmUgY29uc3Qgcm91dGVyOiBSb3V0ZXI7XG5leHBvcnQgZGVmYXVsdCByb3V0ZXI7XG4iLCJpbXBvcnQgVG9hc3RTZXJ2aWNlIGZyb20gJyNjbGllbnQvc2VydmljZXMvVG9hc3RTZXJ2aWNlLnRzJztcbmRlY2xhcmUgY29uc3QgdG9hc3Q6IFRvYXN0U2VydmljZTtcbmV4cG9ydCBkZWZhdWx0IHRvYXN0O1xuIiwiZXhwb3J0IGludGVyZmFjZSBNb2R1bGVNYW5pZmVzdEJ1aWxkSW1wb3J0IHtcbiAgICBmcm9tOiBzdHJpbmc7XG4gICAgdG8/OiBzdHJpbmc7XG4gICAgdHlwZTogJ2dsb2JhbF9pbXBvcnQnO1xufVxuZXhwb3J0IGludGVyZmFjZSBNb2R1bGVNYW5pZmVzdEJ1aWxkIHtcbiAgICBpbXBvcnRzPzogTW9kdWxlTWFuaWZlc3RCdWlsZEltcG9ydFtdO1xufVxuZGVjbGFyZSBjb25zdCBNb2R1bGVNYW5pZmVzdF9iYXNlOiB7XG4gICAgbmV3ICguLi5hcmdzOiBhbnlbXSk6IHtcbiAgICAgICAgbWVyZ2UoZGF0YTogUGFydGlhbDwvKmVsaWRlZCovIGFueT4pOiAvKmVsaWRlZCovIGFueTtcbiAgICB9O1xuICAgIGZyb208VD4odGhpczogbmV3ICgpID0+IFQsIGRhdGE6IFBhcnRpYWw8VD4pOiBUO1xufSAmIGltcG9ydChcIiNzaGFyZWQvdXRpbHMvY29tcG9zZS50c1wiKS5Db25zdHJ1Y3RvcjtcbmV4cG9ydCBkZWZhdWx0IGNsYXNzIE1vZHVsZU1hbmlmZXN0IGV4dGVuZHMgTW9kdWxlTWFuaWZlc3RfYmFzZSB7XG4gICAgaWQ6IHN0cmluZztcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgdmVyc2lvbjogc3RyaW5nO1xuICAgIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICAgIGVuYWJsZWQ6IGJvb2xlYW47XG4gICAgYXV0aG9yPzogc3RyaW5nO1xuICAgIGRlcGVuZGVuY2llcz86IFJlY29yZDxzdHJpbmcsIHN0cmluZz47XG4gICAgYnVpbGQ/OiBNb2R1bGVNYW5pZmVzdEJ1aWxkO1xuICAgIFtrZXk6IHN0cmluZ106IGFueTtcbn1cbmV4cG9ydCB7fTtcbiIsImltcG9ydCB0eXBlIE1vZHVsZU1hbmlmZXN0IGZyb20gJy4vTW9kdWxlTWFuaWZlc3RFbnRpdHkudHMnO1xuaW1wb3J0IExpZmVjeWNsZUhvb2sgZnJvbSAnI3NoYXJlZC9lbnRpdGllcy9MaWZlY3ljbGVIb29rLnRzJztcbmludGVyZmFjZSBNb2R1bGVVcGdyYWRlSW5mbyB7XG4gICAgc291cmNlOiAnZ2l0JyB8ICd6aXAnO1xuICAgIFtrZXk6IHN0cmluZ106IGFueTtcbn1cbmRlY2xhcmUgY29uc3QgTW9kdWxlX2Jhc2U6IHtcbiAgICBuZXcgKC4uLmFyZ3M6IGFueVtdKToge1xuICAgICAgICBtZXJnZShkYXRhOiBQYXJ0aWFsPC8qZWxpZGVkKi8gYW55Pik6IC8qZWxpZGVkKi8gYW55O1xuICAgIH07XG4gICAgZnJvbTxUPih0aGlzOiBuZXcgKCkgPT4gVCwgZGF0YTogUGFydGlhbDxUPik6IFQ7XG59ICYgaW1wb3J0KFwiI3NoYXJlZC91dGlscy9jb21wb3NlLnRzXCIpLkNvbnN0cnVjdG9yICYgaW1wb3J0KFwiI3NoYXJlZC91dGlscy9jb21wb3NlLnRzXCIpLkNvbnN0cnVjdG9yPHt9PiAmIHR5cGVvZiBMaWZlY3ljbGVIb29rO1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTW9kdWxlIGV4dGVuZHMgTW9kdWxlX2Jhc2Uge1xuICAgIGlkOiBzdHJpbmc7XG4gICAgbmFtZTogc3RyaW5nO1xuICAgIGVuYWJsZWQ6IGJvb2xlYW47XG4gICAgZGVwZW5kZW5jaWVzOiBSZWNvcmQ8c3RyaW5nLCBhbnk+O1xuICAgIGJ1aWxkOiBNb2R1bGVNYW5pZmVzdFsnYnVpbGQnXTtcbiAgICBkaXJlY3Rvcnk6IHN0cmluZztcbiAgICB1cGdyYWRlX2luZm8/OiBNb2R1bGVVcGdyYWRlSW5mbztcbiAgICBzZXREYXRhKGRhdGE6IFBhcnRpYWw8TW9kdWxlIHwgTW9kdWxlTWFuaWZlc3Q+KTogdm9pZDtcbn1cbmV4cG9ydCB7fTtcbiIsImltcG9ydCBCYXNlIGZyb20gJyNzaGFyZWQvZW50aXRpZXMvTW9kdWxlRW50aXR5LnRzJztcbmRlY2xhcmUgY29uc3QgTW9kdWxlX2Jhc2U6IHR5cGVvZiBCYXNlO1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTW9kdWxlIGV4dGVuZHMgTW9kdWxlX2Jhc2Uge1xufVxuZXhwb3J0IHt9O1xuIiwiZGVjbGFyZSBjb25zdCBQbHVnaW5FbnRpdHlfYmFzZToge1xuICAgIG5ldyAoLi4uYXJnczogYW55W10pOiB7XG4gICAgICAgIG1lcmdlKGRhdGE6IFBhcnRpYWw8LyplbGlkZWQqLyBhbnk+KTogLyplbGlkZWQqLyBhbnk7XG4gICAgfTtcbiAgICBmcm9tPFQ+KHRoaXM6IG5ldyAoKSA9PiBULCBkYXRhOiBQYXJ0aWFsPFQ+KTogVDtcbn0gJiBpbXBvcnQoXCIjc2hhcmVkL3V0aWxzL2NvbXBvc2UudHNcIikuQ29uc3RydWN0b3I7XG5leHBvcnQgZGVmYXVsdCBjbGFzcyBQbHVnaW5FbnRpdHkgZXh0ZW5kcyBQbHVnaW5FbnRpdHlfYmFzZSB7XG4gICAgaWQ6IHN0cmluZztcbiAgICBuYW1lOiBzdHJpbmc7XG4gICAgdmVyc2lvbjogc3RyaW5nO1xuICAgIGVuYWJsZWQ6IGJvb2xlYW47XG59XG5leHBvcnQge307XG4iLCJpbXBvcnQgQmFzZSBmcm9tICcjc2hhcmVkL2VudGl0aWVzL1BsdWdpbkVudGl0eS50cyc7XG5pbXBvcnQgdHlwZSB7IEF1dG9PcHRpb25zIH0gZnJvbSAnI2NsaWVudC9zZXJ2aWNlcy9Sb3V0ZXJTZXJ2aWNlLnRzJztcbmRlY2xhcmUgY29uc3QgUGx1Z2luRW50aXR5X2Jhc2U6IHR5cGVvZiBCYXNlO1xuZXhwb3J0IGRlZmF1bHQgY2xhc3MgUGx1Z2luRW50aXR5IGV4dGVuZHMgUGx1Z2luRW50aXR5X2Jhc2Uge1xuICAgIGFkZFBhZ2VzRm9sZGVyKGltcG9ydHM6IGFueSwgb3B0aW9ucz86IEF1dG9PcHRpb25zKTogdm9pZDtcbiAgICBsb2FkKCk6IFByb21pc2U8dm9pZD47XG59XG5leHBvcnQge307XG4iLCIvKiogQGRlcHJlY2F0ZWQgVXNlICRmZXRjaCBmYWNhZGUgKi9cbmV4cG9ydCBkZWNsYXJlIGNvbnN0ICRmZXRjaDogaW1wb3J0KFwiLi5cIikuRmV0Y2hTZXJ2aWNlO1xuIiwiaW50ZXJmYWNlIFBpY2tPcHRpb25zIHtcbiAgICBhY2NlcHQ/OiBzdHJpbmc7XG4gICAgbXVsdGlwbGU/OiBib29sZWFuO1xufVxudHlwZSBQaWNrUmVzdWx0PFQgZXh0ZW5kcyBQaWNrT3B0aW9ucz4gPSBUWydtdWx0aXBsZSddIGV4dGVuZHMgdHJ1ZSA/IEZpbGVbXSA6IEZpbGUgfCBudWxsO1xuZGVjbGFyZSBmdW5jdGlvbiBwaWNrPFQgZXh0ZW5kcyBQaWNrT3B0aW9ucz4ob3B0aW9uczogVCk6IFByb21pc2U8UGlja1Jlc3VsdDxUPj47XG5kZWNsYXJlIGZ1bmN0aW9uIHRvVWludDhBcnJheShmaWxlOiBGaWxlKTogUHJvbWlzZTxVaW50OEFycmF5PjtcbmludGVyZmFjZSBVcGxvYWRPcHRpb25zIHtcbiAgICBkcml2ZUlkOiBzdHJpbmc7XG4gICAgZmlsZTogRmlsZTtcbiAgICBkaXJlY3Rvcnk/OiBzdHJpbmc7XG59XG5kZWNsYXJlIGZ1bmN0aW9uIHVwbG9hZChvcHRpb25zOiBVcGxvYWRPcHRpb25zKTogUHJvbWlzZTxhbnk+O1xuZXhwb3J0IGRlY2xhcmUgY29uc3QgJGZpbGU6IHtcbiAgICBwaWNrOiB0eXBlb2YgcGljaztcbiAgICB1cGxvYWQ6IHR5cGVvZiB1cGxvYWQ7XG4gICAgdG9VaW50OEFycmF5OiB0eXBlb2YgdG9VaW50OEFycmF5O1xufTtcbmV4cG9ydCB7fTtcbiIsImltcG9ydCB0eXBlIHsgTmF2aWdhdGlvbkd1YXJkIH0gZnJvbSAndnVlLXJvdXRlcic7XG5leHBvcnQgaW50ZXJmYWNlIEF1dGhHdWFyZE9wdGlvbnMge1xuICAgIHJlZGlyZWN0OiBzdHJpbmc7XG4gICAgZXhjbHVkZT86IHN0cmluZ1tdO1xufVxuZXhwb3J0IGRlY2xhcmUgZnVuY3Rpb24gY3JlYXRlQXV0aEd1YXJkKG9wdGlvbnM6IEF1dGhHdWFyZE9wdGlvbnMpOiBOYXZpZ2F0aW9uR3VhcmQ7XG5kZWNsYXJlIGNvbnN0IGF1dGhHdWFyZDogTmF2aWdhdGlvbkd1YXJkO1xuZXhwb3J0IGRlZmF1bHQgYXV0aEd1YXJkO1xuIiwiZXhwb3J0IGludGVyZmFjZSBHdWVzdEd1YXJkT3B0aW9ucyB7XG4gICAgcmVkaXJlY3Q6IHN0cmluZztcbn1cbmV4cG9ydCBkZWNsYXJlIGZ1bmN0aW9uIGNyZWF0ZUd1ZXN0R3VhcmQob3B0aW9uczogR3Vlc3RHdWFyZE9wdGlvbnMpOiAoKSA9PiBzdHJpbmcgfCB1bmRlZmluZWQ7XG5kZWNsYXJlIGNvbnN0IGd1ZXN0R3VhcmQ6ICgpID0+IHN0cmluZyB8IHVuZGVmaW5lZDtcbmV4cG9ydCBkZWZhdWx0IGd1ZXN0R3VhcmQ7XG4iLCJpbXBvcnQgdHlwZSB7IE5hdmlnYXRpb25HdWFyZCB9IGZyb20gJ3Z1ZS1yb3V0ZXInO1xuZGVjbGFyZSBjb25zdCBzZXR1cEd1YXJkOiBOYXZpZ2F0aW9uR3VhcmQ7XG5leHBvcnQgZGVmYXVsdCBzZXR1cEd1YXJkO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFFQSxJQUFXLGdCQUFjO0NBQUM7RUFBSSxNQUFJLENBQUEsRUFBSTtDQUFFO0VBQUM7RUFBQztFQUFNO0VBQUk7Q0FBQzs7OztBQ0RyRCxJQUFJLHdCQUFzQjtDQUFBO0VBQUEsTUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7QUFDMUIsSUFBSSxtQkFBZ0I7Q0FBQTtPQUFVLENBQUEsUUFBYSxzQkFBaUI7Q0FBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBOzs7O0FDRDVELElBQUksWUFBWTtDQUFDO0VBQUksTUFBSztFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0NBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtDQUFBO0FBQzFCLElBQUksT0FBSTtDQUFBO09BQVksQ0FBQSxVQUFVO0NBQUE7RUFBTTtFQUFHO0VBQUs7RUFBSTtFQUFBO0NBQUE7Ozs7QUNDaEQsSUFBSSxrQkFBa0I7Q0FBQztFQUFHLE1BQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VB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QUFBO0NBQUEsQ0FBQSxJQUFBLEdBQUE7Q0FBQTtBQUN0QixJQUFXLDBCQUFvQjtDQUFBO09BQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTtBQUMvQixJQUFJLHFCQUFtQjtDQUFBO09BQVE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTs7OztBQ0wvQixJQUFBLG1CQUFxQjtDQUFBO09BQUEsQ0FBQSxRQUFpQixtQkFBUTtDQUFBO0VBQW9CO0VBQUM7RUFBQTtFQUFBO0VBQUE7Q0FBQTs7OztBQ0FuRSxJQUFJLGdCQUFjO0NBQUc7RUFBSSxNQUFDO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7RUFBQTtFQUFBO0VBQUE7Q0FBQTtBQUMxQixJQUFJLFdBQVU7Q0FBQTtPQUFNLENBQU8s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
|