@decaf-ts/core 0.4.1 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/core.cjs +179 -168
- package/dist/core.esm.cjs +134 -134
- package/lib/esm/identity/decorators.d.ts +3 -2
- package/lib/esm/identity/decorators.js +7 -5
- package/lib/esm/index.d.ts +1 -1
- package/lib/esm/index.js +1 -1
- package/lib/esm/interfaces/ErrorParser.d.ts +4 -0
- package/lib/esm/interfaces/ErrorParser.js +2 -0
- package/lib/esm/interfaces/index.d.ts +1 -0
- package/lib/esm/interfaces/index.js +2 -1
- package/lib/esm/model/construction.d.ts +13 -10
- package/lib/esm/model/construction.js +8 -3
- package/lib/esm/model/decorators.d.ts +9 -8
- package/lib/esm/model/decorators.js +34 -14
- package/lib/esm/model/index.d.ts +1 -1
- package/lib/esm/model/index.js +3 -2
- package/lib/esm/persistence/Adapter.d.ts +14 -13
- package/lib/esm/persistence/Adapter.js +37 -26
- package/lib/esm/query/Clause.d.ts +2 -2
- package/lib/esm/query/ClauseFactory.d.ts +3 -3
- package/lib/esm/query/ClauseFactory.js +1 -1
- package/lib/esm/query/Paginator.d.ts +2 -2
- package/lib/esm/query/Paginator.js +4 -3
- package/lib/esm/query/Query.d.ts +1 -1
- package/lib/esm/query/Query.js +1 -1
- package/lib/esm/query/Statement.d.ts +3 -3
- package/lib/esm/query/Statement.js +1 -1
- package/lib/esm/query/errors.js +3 -3
- package/lib/esm/ram/RamAdapter.d.ts +41 -0
- package/lib/esm/ram/RamAdapter.js +230 -0
- package/lib/esm/ram/RamClauseFactory.d.ts +17 -0
- package/lib/esm/ram/RamClauseFactory.js +92 -0
- package/lib/esm/ram/RamContext.d.ts +5 -0
- package/lib/esm/ram/RamContext.js +7 -0
- package/lib/esm/ram/RamPaginator.d.ts +7 -0
- package/lib/esm/ram/RamPaginator.js +20 -0
- package/lib/esm/ram/RamSequence.d.ts +50 -0
- package/lib/esm/ram/RamSequence.js +130 -0
- package/lib/esm/ram/RamStatement.d.ts +8 -0
- package/lib/esm/ram/RamStatement.js +18 -0
- package/lib/esm/ram/clauses/FromClause.d.ts +7 -0
- package/lib/esm/ram/clauses/FromClause.js +11 -0
- package/lib/esm/ram/clauses/InsertClause.d.ts +7 -0
- package/lib/esm/ram/clauses/InsertClause.js +13 -0
- package/lib/esm/ram/clauses/OrderByClause.d.ts +7 -0
- package/lib/esm/ram/clauses/OrderByClause.js +39 -0
- package/lib/esm/ram/clauses/SelectClause.d.ts +7 -0
- package/lib/esm/ram/clauses/SelectClause.js +16 -0
- package/lib/esm/ram/clauses/ValuesClause.d.ts +7 -0
- package/lib/esm/ram/clauses/ValuesClause.js +12 -0
- package/lib/esm/ram/clauses/WhereClause.d.ts +7 -0
- package/lib/esm/ram/clauses/WhereClause.js +11 -0
- package/lib/esm/ram/clauses/index.d.ts +6 -0
- package/lib/esm/ram/clauses/index.js +7 -0
- package/lib/esm/ram/index.d.ts +9 -0
- package/lib/esm/ram/index.js +10 -0
- package/lib/esm/ram/model/RamSequence.d.ts +20 -0
- package/lib/esm/ram/model/RamSequence.js +33 -0
- package/lib/esm/ram/model/index.d.ts +1 -0
- package/lib/esm/ram/model/index.js +2 -0
- package/lib/esm/ram/types.d.ts +17 -0
- package/lib/esm/ram/types.js +2 -0
- package/lib/esm/repository/Repository.d.ts +6 -3
- package/lib/esm/repository/Repository.js +27 -15
- package/lib/esm/repository/errors.d.ts +6 -0
- package/lib/esm/repository/errors.js +12 -2
- package/lib/esm/repository/index.d.ts +0 -1
- package/lib/esm/repository/index.js +1 -2
- package/lib/identity/decorators.cjs +10 -8
- package/lib/identity/decorators.d.ts +3 -2
- package/lib/identity/index.cjs +1 -1
- package/lib/identity/utils.cjs +3 -3
- package/lib/index.cjs +2 -2
- package/lib/index.d.ts +1 -1
- package/lib/interfaces/ErrorParser.cjs +3 -0
- package/lib/interfaces/ErrorParser.d.ts +4 -0
- package/lib/interfaces/index.cjs +2 -1
- package/lib/interfaces/index.d.ts +1 -0
- package/lib/model/IdentifiedBaseModel.cjs +1 -1
- package/lib/model/construction.cjs +11 -6
- package/lib/model/construction.d.ts +13 -10
- package/lib/model/decorators.cjs +39 -19
- package/lib/model/decorators.d.ts +9 -8
- package/lib/model/index.cjs +3 -2
- package/lib/model/index.d.ts +1 -1
- package/lib/persistence/Adapter.cjs +37 -26
- package/lib/persistence/Adapter.d.ts +14 -13
- package/lib/persistence/Sequence.cjs +2 -2
- package/lib/persistence/decorators.cjs +1 -1
- package/lib/persistence/index.cjs +1 -1
- package/lib/query/Clause.cjs +1 -1
- package/lib/query/Clause.d.ts +2 -2
- package/lib/query/ClauseFactory.cjs +1 -1
- package/lib/query/ClauseFactory.d.ts +3 -3
- package/lib/query/Condition.cjs +1 -1
- package/lib/query/Paginator.cjs +4 -3
- package/lib/query/Paginator.d.ts +2 -2
- package/lib/query/Query.cjs +1 -1
- package/lib/query/Query.d.ts +1 -1
- package/lib/query/Statement.cjs +3 -3
- package/lib/query/Statement.d.ts +3 -3
- package/lib/query/clauses/FromClause.cjs +3 -3
- package/lib/query/clauses/GroupByClause.cjs +2 -2
- package/lib/query/clauses/InsertClause.cjs +3 -3
- package/lib/query/clauses/LimitClause.cjs +2 -2
- package/lib/query/clauses/OffsetClause.cjs +2 -2
- package/lib/query/clauses/OrderByClause.cjs +2 -2
- package/lib/query/clauses/SelectClause.cjs +2 -2
- package/lib/query/clauses/SelectorBasedClause.cjs +2 -2
- package/lib/query/clauses/ValuesClause.cjs +3 -3
- package/lib/query/clauses/WhereClause.cjs +4 -4
- package/lib/query/clauses/index.cjs +1 -1
- package/lib/query/errors.cjs +3 -3
- package/lib/query/index.cjs +1 -1
- package/lib/ram/RamAdapter.cjs +268 -0
- package/lib/ram/RamAdapter.d.ts +41 -0
- package/lib/ram/RamClauseFactory.cjs +96 -0
- package/lib/ram/RamClauseFactory.d.ts +17 -0
- package/lib/ram/RamContext.cjs +11 -0
- package/lib/ram/RamContext.d.ts +5 -0
- package/lib/ram/RamPaginator.cjs +24 -0
- package/lib/ram/RamPaginator.d.ts +7 -0
- package/lib/ram/RamSequence.cjs +135 -0
- package/lib/ram/RamSequence.d.ts +50 -0
- package/lib/ram/RamStatement.cjs +22 -0
- package/lib/ram/RamStatement.d.ts +8 -0
- package/lib/ram/clauses/FromClause.cjs +15 -0
- package/lib/ram/clauses/FromClause.d.ts +7 -0
- package/lib/ram/clauses/InsertClause.cjs +17 -0
- package/lib/ram/clauses/InsertClause.d.ts +7 -0
- package/lib/ram/clauses/OrderByClause.cjs +43 -0
- package/lib/ram/clauses/OrderByClause.d.ts +7 -0
- package/lib/ram/clauses/SelectClause.cjs +20 -0
- package/lib/ram/clauses/SelectClause.d.ts +7 -0
- package/lib/ram/clauses/ValuesClause.cjs +16 -0
- package/lib/ram/clauses/ValuesClause.d.ts +7 -0
- package/lib/ram/clauses/WhereClause.cjs +15 -0
- package/lib/ram/clauses/WhereClause.d.ts +7 -0
- package/lib/ram/clauses/index.cjs +23 -0
- package/lib/ram/clauses/index.d.ts +6 -0
- package/lib/ram/index.cjs +26 -0
- package/lib/ram/index.d.ts +9 -0
- package/lib/ram/model/RamSequence.cjs +36 -0
- package/lib/ram/model/RamSequence.d.ts +20 -0
- package/lib/ram/model/index.cjs +18 -0
- package/lib/ram/model/index.d.ts +1 -0
- package/lib/ram/types.cjs +3 -0
- package/lib/ram/types.d.ts +17 -0
- package/lib/repository/Repository.cjs +32 -20
- package/lib/repository/Repository.d.ts +6 -3
- package/lib/repository/decorators.cjs +1 -1
- package/lib/repository/errors.cjs +15 -3
- package/lib/repository/errors.d.ts +6 -0
- package/lib/repository/index.cjs +1 -2
- package/lib/repository/index.d.ts +0 -1
- package/lib/repository/injectables.cjs +3 -3
- package/lib/repository/utils.cjs +3 -3
- package/lib/validators/ClauseSequenceValidator.cjs +5 -5
- package/lib/validators/decorators.cjs +2 -2
- package/lib/validators/index.cjs +1 -1
- package/package.json +10 -3
- package/lib/esm/model/User.d.ts +0 -9
- package/lib/esm/model/User.js +0 -34
- package/lib/esm/repository/Context.d.ts +0 -10
- package/lib/esm/repository/Context.js +0 -12
- package/lib/model/User.cjs +0 -37
- package/lib/model/User.d.ts +0 -9
- package/lib/repository/Context.cjs +0 -16
- package/lib/repository/Context.d.ts +0 -10
@@ -1,4 +1,4 @@
|
|
1
|
-
import { BaseError, Context, OperationKeys } from "@decaf-ts/db-decorators";
|
1
|
+
import { BaseError, Context, OperationKeys, RepositoryFlags, Contextual } from "@decaf-ts/db-decorators";
|
2
2
|
import { Observer } from "../interfaces/Observer";
|
3
3
|
import { Constructor, Model, ModelConstructor } from "@decaf-ts/decorator-validation";
|
4
4
|
import { SequenceOptions } from "../interfaces/SequenceOptions";
|
@@ -10,13 +10,13 @@ import { ClauseFactory } from "../query/ClauseFactory";
|
|
10
10
|
import { Condition } from "../query/Condition";
|
11
11
|
import { Repository } from "../repository/Repository";
|
12
12
|
import { Sequence } from "./Sequence";
|
13
|
-
import {
|
13
|
+
import { ErrorParser } from "../interfaces";
|
14
14
|
/**
|
15
15
|
* @summary Abstract Decaf-ts Persistence Adapter Class
|
16
16
|
* @description Offers the base implementation for all Adapter Classes
|
17
17
|
* and manages them various registered {@link Adapter}s
|
18
18
|
*
|
19
|
-
* @typedef Y the underlying persistence object type
|
19
|
+
* @typedef Y the underlying persistence object type or the required config to set it up
|
20
20
|
* @typedef Q The query object the adapter uses
|
21
21
|
*
|
22
22
|
* @param {Y} native the underlying persistence object
|
@@ -26,30 +26,29 @@ import { User } from "../model/User";
|
|
26
26
|
* @implements RawExecutor
|
27
27
|
* @implements Observable
|
28
28
|
*/
|
29
|
-
export declare abstract class Adapter<Y, Q
|
29
|
+
export declare abstract class Adapter<Y, Q, F extends RepositoryFlags, C extends Context<F>> implements RawExecutor<Q>, Observable, Contextual<F>, ErrorParser {
|
30
30
|
readonly flavour: string;
|
31
31
|
private static _current;
|
32
32
|
private static _cache;
|
33
33
|
protected readonly _observers: Observer[];
|
34
34
|
private readonly _native;
|
35
35
|
get native(): Y;
|
36
|
-
repository<M extends Model>(): Constructor<Repository<M, Q, Adapter<Y, Q
|
36
|
+
repository<M extends Model>(): Constructor<Repository<M, Q, Adapter<Y, Q, F, C>, F, C>>;
|
37
37
|
protected constructor(native: Y, flavour: string);
|
38
38
|
Query<M extends Model>(): Query<Q, M>;
|
39
39
|
abstract parseCondition(condition: Condition): Q;
|
40
40
|
abstract get Statement(): Statement<Q>;
|
41
|
-
abstract get Clauses(): ClauseFactory<Y, Q>;
|
41
|
+
abstract get Clauses(): ClauseFactory<Y, Q, typeof this>;
|
42
42
|
protected isReserved(attr: string): boolean;
|
43
|
-
|
43
|
+
abstract parseError(err: Error): BaseError;
|
44
44
|
abstract initialize(...args: any[]): Promise<void>;
|
45
45
|
abstract Sequence(options: SequenceOptions): Promise<Sequence>;
|
46
|
-
|
47
|
-
|
48
|
-
prepare<M extends Model>(model: M, pk: string | number): {
|
46
|
+
context<M extends Model, C extends Context<F>, F extends RepositoryFlags>(operation: OperationKeys.CREATE | OperationKeys.READ | OperationKeys.UPDATE | OperationKeys.DELETE, overrides: Partial<F>, model: Constructor<M>): Promise<C>;
|
47
|
+
prepare<M extends Model>(model: M, pk: keyof M): {
|
49
48
|
record: Record<string, any>;
|
50
49
|
id: string;
|
51
50
|
};
|
52
|
-
revert<M extends Model>(obj: Record<string, any>, clazz: string | Constructor<M>, pk:
|
51
|
+
revert<M extends Model>(obj: Record<string, any>, clazz: string | Constructor<M>, pk: keyof M, id: string | number | bigint): M;
|
53
52
|
abstract create(tableName: string, id: string | number, model: Record<string, any>, ...args: any[]): Promise<Record<string, any>>;
|
54
53
|
createAll(tableName: string, id: (string | number)[], model: Record<string, any>[], ...args: any[]): Promise<Record<string, any>[]>;
|
55
54
|
abstract read(tableName: string, id: string | number | bigint, ...args: any[]): Promise<Record<string, any>>;
|
@@ -78,8 +77,10 @@ export declare abstract class Adapter<Y, Q> implements RawExecutor<Q>, Observabl
|
|
78
77
|
* @param {any[]} [args] optional arguments to be passed to the {@link Observer#refresh} method
|
79
78
|
*/
|
80
79
|
updateObservers(...args: any[]): Promise<void>;
|
81
|
-
|
82
|
-
static
|
80
|
+
toString(): string;
|
81
|
+
static flavourOf<M extends Model>(model: Constructor<M>): string;
|
82
|
+
static get current(): Adapter<any, any, any, any>;
|
83
|
+
static get<Y, Q, C extends Context<F>, F extends RepositoryFlags>(flavour: any): Adapter<Y, Q, F, C> | undefined;
|
83
84
|
static setCurrent(flavour: string): void;
|
84
85
|
static key(key: string): string;
|
85
86
|
static models<M extends Model>(flavour: string): ModelConstructor<any>[];
|
@@ -1,16 +1,24 @@
|
|
1
|
-
import { DBKeys, InternalError, NotFoundError, } from "@decaf-ts/db-decorators";
|
2
|
-
import { Model, } from "@decaf-ts/decorator-validation";
|
1
|
+
import { DBKeys, InternalError, NotFoundError, Context, OperationKeys, DefaultRepositoryFlags, } from "@decaf-ts/db-decorators";
|
2
|
+
import { Decoration, DefaultFlavour, Model, } from "@decaf-ts/decorator-validation";
|
3
3
|
import { PersistenceKeys } from "./constants";
|
4
4
|
import { Query } from "../query/Query";
|
5
5
|
import { Repository } from "../repository/Repository";
|
6
|
-
|
7
|
-
|
6
|
+
Decoration.setFlavourResolver((obj) => {
|
7
|
+
try {
|
8
|
+
return (Adapter.flavourOf(Model.isModel(obj) ? obj.constructor : obj) ||
|
9
|
+
DefaultFlavour);
|
10
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
11
|
+
}
|
12
|
+
catch (e) {
|
13
|
+
return DefaultFlavour;
|
14
|
+
}
|
15
|
+
});
|
8
16
|
/**
|
9
17
|
* @summary Abstract Decaf-ts Persistence Adapter Class
|
10
18
|
* @description Offers the base implementation for all Adapter Classes
|
11
19
|
* and manages them various registered {@link Adapter}s
|
12
20
|
*
|
13
|
-
* @typedef Y the underlying persistence object type
|
21
|
+
* @typedef Y the underlying persistence object type or the required config to set it up
|
14
22
|
* @typedef Q The query object the adapter uses
|
15
23
|
*
|
16
24
|
* @param {Y} native the underlying persistence object
|
@@ -35,6 +43,8 @@ export class Adapter {
|
|
35
43
|
throw new InternalError(`Persistence adapter flavour ${this.flavour} already registered`);
|
36
44
|
this._native = native;
|
37
45
|
Adapter._cache[this.flavour] = this;
|
46
|
+
if (!Adapter._current)
|
47
|
+
Adapter._current = this;
|
38
48
|
}
|
39
49
|
Query() {
|
40
50
|
return new Query(this);
|
@@ -42,26 +52,18 @@ export class Adapter {
|
|
42
52
|
isReserved(attr) {
|
43
53
|
return !attr;
|
44
54
|
}
|
45
|
-
async context(operation, model) {
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
}
|
50
|
-
catch (e) {
|
51
|
-
if (!(e instanceof UnsupportedError))
|
52
|
-
throw e;
|
53
|
-
}
|
54
|
-
const c = new (class extends Ctx {
|
55
|
-
constructor(operation, model, parent) {
|
56
|
-
super(operation, model, parent);
|
57
|
-
}
|
58
|
-
get user() {
|
59
|
-
if (!user)
|
60
|
-
throw new UnsupportedError("Adapter does not support user identification");
|
61
|
-
return user;
|
55
|
+
async context(operation, overrides, model) {
|
56
|
+
const AdapterContext = class extends Context {
|
57
|
+
constructor(obj) {
|
58
|
+
super(obj);
|
62
59
|
}
|
63
|
-
}
|
64
|
-
return
|
60
|
+
};
|
61
|
+
return new AdapterContext(Object.assign({}, DefaultRepositoryFlags, overrides, {
|
62
|
+
affectedTables: Repository.table(model),
|
63
|
+
writeOperation: operation !== OperationKeys.READ,
|
64
|
+
timestamp: new Date(),
|
65
|
+
operation: operation,
|
66
|
+
}));
|
65
67
|
}
|
66
68
|
prepare(model, pk) {
|
67
69
|
const result = Object.entries(model).reduce((accum, [key, val]) => {
|
@@ -155,8 +157,17 @@ export class Adapter {
|
|
155
157
|
console.warn(`Failed to update observable ${this._observers[i]}: ${result.reason}`);
|
156
158
|
});
|
157
159
|
}
|
160
|
+
toString() {
|
161
|
+
return `${this.flavour} persistence Adapter`;
|
162
|
+
}
|
163
|
+
static flavourOf(model) {
|
164
|
+
return (Reflect.getMetadata(this.key(PersistenceKeys.ADAPTER), model) ||
|
165
|
+
this.current.flavour);
|
166
|
+
}
|
158
167
|
static get current() {
|
159
|
-
|
168
|
+
if (!Adapter._current)
|
169
|
+
throw new InternalError(`No persistence flavour set. Please initialize your adapter`);
|
170
|
+
return Adapter._current;
|
160
171
|
}
|
161
172
|
static get(flavour) {
|
162
173
|
if (flavour in this._cache)
|
@@ -198,4 +209,4 @@ export class Adapter {
|
|
198
209
|
}
|
199
210
|
}
|
200
211
|
}
|
201
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWRhcHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wZXJzaXN0ZW5jZS9BZGFwdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxNQUFNLEVBQ04sYUFBYSxFQUNiLGFBQWEsR0FHZCxNQUFNLHlCQUF5QixDQUFDO0FBRWpDLE9BQU8sRUFFTCxLQUFLLEdBR04sTUFBTSxnQ0FBZ0MsQ0FBQztBQUl4QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzlDLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUl2QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFHdEQsT0FBTyxFQUFFLE9BQU8sSUFBSSxHQUFHLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxVQUFVLENBQUM7QUFFNUM7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSCxNQUFNLE9BQWdCLE9BQU87YUFFWixXQUFNLEdBQXNDLEVBQUUsQUFBeEMsQ0FBeUM7SUFLOUQsSUFBSSxNQUFNO1FBQ1IsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3RCLENBQUM7SUFFRCxVQUFVO1FBQ1IsT0FBTyxVQUFVLENBQUM7SUFDcEIsQ0FBQztJQUVELFlBQ0UsTUFBUyxFQUNBLE9BQWU7UUFBZixZQUFPLEdBQVAsT0FBTyxDQUFRO1FBYlAsZUFBVSxHQUFlLEVBQUUsQ0FBQztRQWU3QyxJQUFJLElBQUksQ0FBQyxPQUFPLElBQUksT0FBTyxDQUFDLE1BQU07WUFDaEMsTUFBTSxJQUFJLGFBQWEsQ0FDckIsK0JBQStCLElBQUksQ0FBQyxPQUFPLHFCQUFxQixDQUNqRSxDQUFDO1FBQ0osSUFBSSxDQUFDLE9BQU8sR0FBRyxNQUFNLENBQUM7UUFDdEIsT0FBTyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDO0lBQ3RDLENBQUM7SUFFRCxLQUFLO1FBQ0gsT0FBTyxJQUFJLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN6QixDQUFDO0lBUVMsVUFBVSxDQUFDLElBQVk7UUFDL0IsT0FBTyxDQUFDLElBQUksQ0FBQztJQUNmLENBQUM7SUFVRCxLQUFLLENBQUMsT0FBTyxDQUNYLFNBSXdCLEVBQ3hCLEtBQXFCO1FBRXJCLElBQUksSUFBc0IsQ0FBQztRQUMzQixJQUFJLENBQUM7WUFDSCxJQUFJLEdBQUcsTUFBTSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDM0IsQ0FBQztRQUFDLE9BQU8sQ0FBTSxFQUFFLENBQUM7WUFDaEIsSUFBSSxDQUFDLENBQUMsQ0FBQyxZQUFZLGdCQUFnQixDQUFDO2dCQUFFLE1BQU0sQ0FBQyxDQUFDO1FBQ2hELENBQUM7UUFFRCxNQUFNLENBQUMsR0FBTSxJQUFJLENBQUMsS0FBTSxTQUFRLEdBQU07WUFDcEMsWUFDRSxTQUF3QixFQUN4QixLQUFzQixFQUN0QixNQUFzQjtnQkFFdEIsS0FBSyxDQUFDLFNBQVMsRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFDbEMsQ0FBQztZQUVELElBQUksSUFBSTtnQkFDTixJQUFJLENBQUMsSUFBSTtvQkFDUCxNQUFNLElBQUksZ0JBQWdCLENBQ3hCLDhDQUE4QyxDQUMvQyxDQUFDO2dCQUNKLE9BQU8sSUFBSSxDQUFDO1lBQ2QsQ0FBQztTQUNGLENBQUMsQ0FBQyxTQUFTLEVBQUUsS0FBSyxDQUFpQixDQUFDO1FBRXJDLE9BQU8sQ0FBQyxDQUFDO0lBQ1gsQ0FBQztJQUVELE9BQU8sQ0FDTCxLQUFRLEVBQ1IsRUFBbUI7UUFLbkIsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQ3pDLENBQUMsS0FBMEIsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsRUFBRSxFQUFFO1lBQ3pDLGdDQUFnQztZQUNoQyxNQUFNLFVBQVUsR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQztZQUNqRCxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDO2dCQUM3QixNQUFNLElBQUksYUFBYSxDQUFDLGlCQUFpQixVQUFVLGNBQWMsQ0FBQyxDQUFDO1lBQ3JFLEtBQUssQ0FBQyxVQUFVLENBQUMsR0FBRyxHQUFHLENBQUM7WUFDeEIsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDLEVBQ0QsRUFBRSxDQUNILENBQUM7UUFDRixJQUFLLEtBQWEsQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDO1lBQzFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLGVBQWUsQ0FBQyxRQUFRLEVBQUU7Z0JBQ3RELFVBQVUsRUFBRSxLQUFLO2dCQUNqQixRQUFRLEVBQUUsS0FBSztnQkFDZixZQUFZLEVBQUUsSUFBSTtnQkFDbEIsS0FBSyxFQUFHLEtBQWEsQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDO2FBQ2hELENBQUMsQ0FBQztRQUNMLE9BQU87WUFDTCxNQUFNLEVBQUUsTUFBTTtZQUNkLEVBQUUsRUFBRyxLQUE2QixDQUFDLEVBQUUsQ0FBQztTQUN2QyxDQUFDO0lBQ0osQ0FBQztJQUVELE1BQU0sQ0FDSixHQUF3QixFQUN4QixLQUE4QixFQUM5QixFQUFVLEVBQ1YsRUFBNEI7UUFFNUIsTUFBTSxFQUFFLEdBQXdCLEVBQUUsQ0FBQztRQUNuQyxFQUFFLENBQUMsRUFBRSxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ1osTUFBTSxDQUFDLEdBQUcsQ0FDUixPQUFPLEtBQUssS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsRUFBRSxFQUFFLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FDOUQsQ0FBQztRQUNQLE1BQU0sUUFBUSxHQUFHLEdBQUcsQ0FBQyxlQUFlLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDL0MsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFRLEVBQUUsR0FBRyxFQUFFLEVBQUU7WUFDckQsSUFBSSxHQUFHLEtBQUssRUFBRTtnQkFBRSxPQUFPLEtBQUssQ0FBQztZQUM1QixLQUE2QixDQUFDLEdBQUcsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDO1lBQ3pFLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBQ04sSUFBSSxRQUFRO1lBQ1YsTUFBTSxDQUFDLGNBQWMsQ0FBQyxNQUFNLEVBQUUsZUFBZSxDQUFDLFFBQVEsRUFBRTtnQkFDdEQsVUFBVSxFQUFFLEtBQUs7Z0JBQ2pCLFlBQVksRUFBRSxLQUFLO2dCQUNuQixRQUFRLEVBQUUsS0FBSztnQkFDZixLQUFLLEVBQUUsUUFBUTthQUNoQixDQUFDLENBQUM7UUFDTCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBU0QsS0FBSyxDQUFDLFNBQVMsQ0FDYixTQUFpQixFQUNqQixFQUF1QixFQUN2QixLQUE0QixFQUM1QixHQUFHLElBQVc7UUFFZCxJQUFJLEVBQUUsQ0FBQyxNQUFNLEtBQUssS0FBSyxDQUFDLE1BQU07WUFDNUIsTUFBTSxJQUFJLGFBQWEsQ0FBQywwQ0FBMEMsQ0FBQyxDQUFDO1FBQ3RFLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FDaEIsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUN2RSxDQUFDO0lBQ0osQ0FBQztJQVFELEtBQUssQ0FBQyxPQUFPLENBQ1gsU0FBaUIsRUFDakIsRUFBZ0MsRUFDaEMsR0FBRyxJQUFXO1FBRWQsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0RSxDQUFDO0lBU0QsS0FBSyxDQUFDLFNBQVMsQ0FDYixTQUFpQixFQUNqQixFQUF1QixFQUN2QixLQUE0QixFQUM1QixHQUFHLElBQVc7UUFFZCxJQUFJLEVBQUUsQ0FBQyxNQUFNLEtBQUssS0FBSyxDQUFDLE1BQU07WUFDNUIsTUFBTSxJQUFJLGFBQWEsQ0FBQywwQ0FBMEMsQ0FBQyxDQUFDO1FBQ3RFLE9BQU8sT0FBTyxDQUFDLEdBQUcsQ0FDaEIsRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUMsRUFBRSxLQUFLLENBQUMsS0FBSyxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUN2RSxDQUFDO0lBQ0osQ0FBQztJQVFELEtBQUssQ0FBQyxTQUFTLENBQ2IsU0FBaUIsRUFDakIsRUFBZ0MsRUFDaEMsR0FBRyxJQUFXO1FBRWQsT0FBTyxPQUFPLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsU0FBUyxFQUFFLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN4RSxDQUFDO0lBSUQ7Ozs7O09BS0c7SUFDSCxPQUFPLENBQUMsUUFBa0I7UUFDeEIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDaEQsSUFBSSxLQUFLLEtBQUssQ0FBQyxDQUFDO1lBQUUsTUFBTSxJQUFJLGFBQWEsQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO1FBQ3pFLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILFNBQVMsQ0FBQyxRQUFrQjtRQUMxQixNQUFNLEtBQUssR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNoRCxJQUFJLEtBQUssS0FBSyxDQUFDLENBQUM7WUFBRSxNQUFNLElBQUksYUFBYSxDQUFDLHlCQUF5QixDQUFDLENBQUM7UUFDckUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFRDs7O09BR0c7SUFDSCxLQUFLLENBQUMsZUFBZSxDQUFDLEdBQUcsSUFBVztRQUNsQyxNQUFNLE9BQU8sR0FBRyxNQUFNLE9BQU8sQ0FBQyxVQUFVLENBQ3RDLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FDL0MsQ0FBQztRQUNGLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDNUIsSUFBSSxNQUFNLENBQUMsTUFBTSxLQUFLLFVBQVU7Z0JBQzlCLE9BQU8sQ0FBQyxJQUFJLENBQ1YsK0JBQStCLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEtBQUssTUFBTSxDQUFDLE1BQU0sRUFBRSxDQUN0RSxDQUFDO1FBQ04sQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQsTUFBTSxLQUFLLE9BQU87UUFDaEIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDO0lBQ3ZCLENBQUM7SUFFRCxNQUFNLENBQUMsR0FBRyxDQUFPLE9BQVk7UUFDM0IsSUFBSSxPQUFPLElBQUksSUFBSSxDQUFDLE1BQU07WUFBRSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDeEQsTUFBTSxJQUFJLGFBQWEsQ0FBQywrQkFBK0IsT0FBTyxHQUFHLENBQUMsQ0FBQztJQUNyRSxDQUFDO0lBRUQsTUFBTSxDQUFDLFVBQVUsQ0FBQyxPQUFlO1FBQy9CLE1BQU0sT0FBTyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDckMsSUFBSSxDQUFDLE9BQU87WUFDVixNQUFNLElBQUksYUFBYSxDQUFDLDBCQUEwQixPQUFPLGFBQWEsQ0FBQyxDQUFDO1FBQzFFLElBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDO0lBQzFCLENBQUM7SUFFRCxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQVc7UUFDcEIsT0FBTyxVQUFVLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFRCxNQUFNLENBQUMsTUFBTSxDQUFrQixPQUFlO1FBQzVDLElBQUksQ0FBQztZQUNILE1BQU0sUUFBUSxHQUFJLEtBQWEsQ0FBQyxXQUFXLEVBQXdCLENBQUM7WUFDcEUsTUFBTSxLQUFLLEdBQ1QsUUFDRCxDQUFDLEtBQUssQ0FBQztZQUNSLE1BQU0sYUFBYSxHQUE0QixNQUFNLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQztpQkFDaEUsR0FBRyxDQUFDLENBQUMsQ0FBc0IsRUFBRSxFQUFFO2dCQUM5QixJQUFJLENBQUMsR0FBRyxPQUFPLENBQUMsV0FBVyxDQUN6QixPQUFPLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsRUFDcEMsQ0FBMEIsQ0FDM0IsQ0FBQztnQkFDRixJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssT0FBTztvQkFBRSxPQUFPLENBQUMsQ0FBQztnQkFDakMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDO29CQUNQLE1BQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxXQUFXLENBQzlCLFVBQVUsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxFQUNqQyxDQUEwQixDQUMzQixDQUFDO29CQUNGLElBQUksQ0FBQyxJQUFJO3dCQUFFLE9BQU87b0JBQ2xCLE1BQU0sVUFBVSxHQUFHLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBRTFDLENBQUMsR0FBRyxPQUFPLENBQUMsV0FBVyxDQUNyQixPQUFPLENBQUMsR0FBRyxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsRUFDcEMsVUFBVSxDQUNYLENBQUM7b0JBQ0YsT0FBTyxDQUFDLENBQUM7Z0JBQ1gsQ0FBQztZQUNILENBQUMsQ0FBQztpQkFDRCxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUN0QixPQUFPLGFBQWEsQ0FBQztRQUN2QixDQUFDO1FBQUMsT0FBTyxDQUFNLEVBQUUsQ0FBQztZQUNoQixNQUFNLElBQUksYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQzdCLENBQUM7SUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQmFzZUVycm9yLFxuICBEQktleXMsXG4gIEludGVybmFsRXJyb3IsXG4gIE5vdEZvdW5kRXJyb3IsXG4gIENvbnRleHQsXG4gIE9wZXJhdGlvbktleXMsXG59IGZyb20gXCJAZGVjYWYtdHMvZGItZGVjb3JhdG9yc1wiO1xuaW1wb3J0IHsgT2JzZXJ2ZXIgfSBmcm9tIFwiLi4vaW50ZXJmYWNlcy9PYnNlcnZlclwiO1xuaW1wb3J0IHtcbiAgQ29uc3RydWN0b3IsXG4gIE1vZGVsLFxuICBNb2RlbENvbnN0cnVjdG9yLFxuICBNb2RlbFJlZ2lzdHJ5LFxufSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uXCI7XG5pbXBvcnQgeyBTZXF1ZW5jZU9wdGlvbnMgfSBmcm9tIFwiLi4vaW50ZXJmYWNlcy9TZXF1ZW5jZU9wdGlvbnNcIjtcbmltcG9ydCB7IFJhd0V4ZWN1dG9yIH0gZnJvbSBcIi4uL2ludGVyZmFjZXMvUmF3RXhlY3V0b3JcIjtcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tIFwiLi4vaW50ZXJmYWNlcy9PYnNlcnZhYmxlXCI7XG5pbXBvcnQgeyBQZXJzaXN0ZW5jZUtleXMgfSBmcm9tIFwiLi9jb25zdGFudHNcIjtcbmltcG9ydCB7IFF1ZXJ5IH0gZnJvbSBcIi4uL3F1ZXJ5L1F1ZXJ5XCI7XG5pbXBvcnQgeyBTdGF0ZW1lbnQgfSBmcm9tIFwiLi4vcXVlcnkvU3RhdGVtZW50XCI7XG5pbXBvcnQgeyBDbGF1c2VGYWN0b3J5IH0gZnJvbSBcIi4uL3F1ZXJ5L0NsYXVzZUZhY3RvcnlcIjtcbmltcG9ydCB7IENvbmRpdGlvbiB9IGZyb20gXCIuLi9xdWVyeS9Db25kaXRpb25cIjtcbmltcG9ydCB7IFJlcG9zaXRvcnkgfSBmcm9tIFwiLi4vcmVwb3NpdG9yeS9SZXBvc2l0b3J5XCI7XG5pbXBvcnQgeyBTZXF1ZW5jZSB9IGZyb20gXCIuL1NlcXVlbmNlXCI7XG5pbXBvcnQgeyBVc2VyIH0gZnJvbSBcIi4uL21vZGVsL1VzZXJcIjtcbmltcG9ydCB7IENvbnRleHQgYXMgQ3R4IH0gZnJvbSBcIi4uL3JlcG9zaXRvcnkvQ29udGV4dFwiO1xuaW1wb3J0IHsgVW5zdXBwb3J0ZWRFcnJvciB9IGZyb20gXCIuL2Vycm9yc1wiO1xuXG4vKipcbiAqIEBzdW1tYXJ5IEFic3RyYWN0IERlY2FmLXRzIFBlcnNpc3RlbmNlIEFkYXB0ZXIgQ2xhc3NcbiAqIEBkZXNjcmlwdGlvbiBPZmZlcnMgdGhlIGJhc2UgaW1wbGVtZW50YXRpb24gZm9yIGFsbCBBZGFwdGVyIENsYXNzZXNcbiAqIGFuZCBtYW5hZ2VzIHRoZW0gdmFyaW91cyByZWdpc3RlcmVkIHtAbGluayBBZGFwdGVyfXNcbiAqXG4gKiBAdHlwZWRlZiBZIHRoZSB1bmRlcmx5aW5nIHBlcnNpc3RlbmNlIG9iamVjdCB0eXBlXG4gKiBAdHlwZWRlZiBRIFRoZSBxdWVyeSBvYmplY3QgdGhlIGFkYXB0ZXIgdXNlc1xuICpcbiAqIEBwYXJhbSB7WX0gbmF0aXZlIHRoZSB1bmRlcmx5aW5nIHBlcnNpc3RlbmNlIG9iamVjdFxuICogQHBhcmFtIHtzdHJpbmd9IGZsYXZvdXIgdGhlIHVuZGVyIHdpdGNoIHRoZSBwZXJzaXN0ZW5jZSBhZGFwdGVyIHNob3VsZCBiZSBzdG9yZWRcbiAqXG4gKiBAY2xhc3MgQWRhcHRlclxuICogQGltcGxlbWVudHMgUmF3RXhlY3V0b3JcbiAqIEBpbXBsZW1lbnRzIE9ic2VydmFibGVcbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFkYXB0ZXI8WSwgUT4gaW1wbGVtZW50cyBSYXdFeGVjdXRvcjxRPiwgT2JzZXJ2YWJsZSB7XG4gIHByaXZhdGUgc3RhdGljIF9jdXJyZW50OiBBZGFwdGVyPGFueSwgYW55PjtcbiAgcHJpdmF0ZSBzdGF0aWMgX2NhY2hlOiBSZWNvcmQ8c3RyaW5nLCBBZGFwdGVyPGFueSwgYW55Pj4gPSB7fTtcblxuICBwcm90ZWN0ZWQgcmVhZG9ubHkgX29ic2VydmVyczogT2JzZXJ2ZXJbXSA9IFtdO1xuICBwcml2YXRlIHJlYWRvbmx5IF9uYXRpdmU6IFk7XG5cbiAgZ2V0IG5hdGl2ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fbmF0aXZlO1xuICB9XG5cbiAgcmVwb3NpdG9yeTxNIGV4dGVuZHMgTW9kZWw+KCk6IENvbnN0cnVjdG9yPFJlcG9zaXRvcnk8TSwgUSwgQWRhcHRlcjxZLCBRPj4+IHtcbiAgICByZXR1cm4gUmVwb3NpdG9yeTtcbiAgfVxuXG4gIHByb3RlY3RlZCBjb25zdHJ1Y3RvcihcbiAgICBuYXRpdmU6IFksXG4gICAgcmVhZG9ubHkgZmxhdm91cjogc3RyaW5nXG4gICkge1xuICAgIGlmICh0aGlzLmZsYXZvdXIgaW4gQWRhcHRlci5fY2FjaGUpXG4gICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihcbiAgICAgICAgYFBlcnNpc3RlbmNlIGFkYXB0ZXIgZmxhdm91ciAke3RoaXMuZmxhdm91cn0gYWxyZWFkeSByZWdpc3RlcmVkYFxuICAgICAgKTtcbiAgICB0aGlzLl9uYXRpdmUgPSBuYXRpdmU7XG4gICAgQWRhcHRlci5fY2FjaGVbdGhpcy5mbGF2b3VyXSA9IHRoaXM7XG4gIH1cblxuICBRdWVyeTxNIGV4dGVuZHMgTW9kZWw+KCk6IFF1ZXJ5PFEsIE0+IHtcbiAgICByZXR1cm4gbmV3IFF1ZXJ5KHRoaXMpO1xuICB9XG5cbiAgYWJzdHJhY3QgcGFyc2VDb25kaXRpb24oY29uZGl0aW9uOiBDb25kaXRpb24pOiBRO1xuXG4gIGFic3RyYWN0IGdldCBTdGF0ZW1lbnQoKTogU3RhdGVtZW50PFE+O1xuXG4gIGFic3RyYWN0IGdldCBDbGF1c2VzKCk6IENsYXVzZUZhY3Rvcnk8WSwgUT47XG5cbiAgcHJvdGVjdGVkIGlzUmVzZXJ2ZWQoYXR0cjogc3RyaW5nKSB7XG4gICAgcmV0dXJuICFhdHRyO1xuICB9XG5cbiAgcHJvdGVjdGVkIGFic3RyYWN0IHBhcnNlRXJyb3IoZXJyOiBFcnJvcik6IEJhc2VFcnJvcjtcblxuICBhYnN0cmFjdCBpbml0aWFsaXplKC4uLmFyZ3M6IGFueVtdKTogUHJvbWlzZTx2b2lkPjtcblxuICBhYnN0cmFjdCBTZXF1ZW5jZShvcHRpb25zOiBTZXF1ZW5jZU9wdGlvbnMpOiBQcm9taXNlPFNlcXVlbmNlPjtcblxuICBwcm90ZWN0ZWQgYWJzdHJhY3QgdXNlcigpOiBQcm9taXNlPFVzZXIgfCB1bmRlZmluZWQ+O1xuXG4gIGFzeW5jIGNvbnRleHQ8TSBleHRlbmRzIE1vZGVsLCBDIGV4dGVuZHMgQ29udGV4dDxNPj4oXG4gICAgb3BlcmF0aW9uOlxuICAgICAgfCBPcGVyYXRpb25LZXlzLkNSRUFURVxuICAgICAgfCBPcGVyYXRpb25LZXlzLlJFQURcbiAgICAgIHwgT3BlcmF0aW9uS2V5cy5VUERBVEVcbiAgICAgIHwgT3BlcmF0aW9uS2V5cy5ERUxFVEUsXG4gICAgbW9kZWw6IENvbnN0cnVjdG9yPE0+XG4gICk6IFByb21pc2U8Qz4ge1xuICAgIGxldCB1c2VyOiBVc2VyIHwgdW5kZWZpbmVkO1xuICAgIHRyeSB7XG4gICAgICB1c2VyID0gYXdhaXQgdGhpcy51c2VyKCk7XG4gICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICBpZiAoIShlIGluc3RhbmNlb2YgVW5zdXBwb3J0ZWRFcnJvcikpIHRocm93IGU7XG4gICAgfVxuXG4gICAgY29uc3QgYzogQyA9IG5ldyAoY2xhc3MgZXh0ZW5kcyBDdHg8TT4ge1xuICAgICAgY29uc3RydWN0b3IoXG4gICAgICAgIG9wZXJhdGlvbjogT3BlcmF0aW9uS2V5cyxcbiAgICAgICAgbW9kZWw/OiBDb25zdHJ1Y3RvcjxNPixcbiAgICAgICAgcGFyZW50PzogQ3R4PGFueSwgYW55PlxuICAgICAgKSB7XG4gICAgICAgIHN1cGVyKG9wZXJhdGlvbiwgbW9kZWwsIHBhcmVudCk7XG4gICAgICB9XG5cbiAgICAgIGdldCB1c2VyKCk6IFVzZXIgfCB1bmRlZmluZWQge1xuICAgICAgICBpZiAoIXVzZXIpXG4gICAgICAgICAgdGhyb3cgbmV3IFVuc3VwcG9ydGVkRXJyb3IoXG4gICAgICAgICAgICBcIkFkYXB0ZXIgZG9lcyBub3Qgc3VwcG9ydCB1c2VyIGlkZW50aWZpY2F0aW9uXCJcbiAgICAgICAgICApO1xuICAgICAgICByZXR1cm4gdXNlcjtcbiAgICAgIH1cbiAgICB9KShvcGVyYXRpb24sIG1vZGVsKSBhcyB1bmtub3duIGFzIEM7XG5cbiAgICByZXR1cm4gYztcbiAgfVxuXG4gIHByZXBhcmU8TSBleHRlbmRzIE1vZGVsPihcbiAgICBtb2RlbDogTSxcbiAgICBwazogc3RyaW5nIHwgbnVtYmVyXG4gICk6IHtcbiAgICByZWNvcmQ6IFJlY29yZDxzdHJpbmcsIGFueT47XG4gICAgaWQ6IHN0cmluZztcbiAgfSB7XG4gICAgY29uc3QgcmVzdWx0ID0gT2JqZWN0LmVudHJpZXMobW9kZWwpLnJlZHVjZShcbiAgICAgIChhY2N1bTogUmVjb3JkPHN0cmluZywgYW55PiwgW2tleSwgdmFsXSkgPT4ge1xuICAgICAgICAvLyBpZiAoa2V5ID09PSBwaykgcmV0dXJuIGFjY3VtO1xuICAgICAgICBjb25zdCBtYXBwZWRQcm9wID0gUmVwb3NpdG9yeS5jb2x1bW4obW9kZWwsIGtleSk7XG4gICAgICAgIGlmICh0aGlzLmlzUmVzZXJ2ZWQobWFwcGVkUHJvcCkpXG4gICAgICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoYFByb3BlcnR5IG5hbWUgJHttYXBwZWRQcm9wfSBpcyByZXNlcnZlZGApO1xuICAgICAgICBhY2N1bVttYXBwZWRQcm9wXSA9IHZhbDtcbiAgICAgICAgcmV0dXJuIGFjY3VtO1xuICAgICAgfSxcbiAgICAgIHt9XG4gICAgKTtcbiAgICBpZiAoKG1vZGVsIGFzIGFueSlbUGVyc2lzdGVuY2VLZXlzLk1FVEFEQVRBXSlcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyZXN1bHQsIFBlcnNpc3RlbmNlS2V5cy5NRVRBREFUQSwge1xuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgd3JpdGFibGU6IGZhbHNlLFxuICAgICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICAgIHZhbHVlOiAobW9kZWwgYXMgYW55KVtQZXJzaXN0ZW5jZUtleXMuTUVUQURBVEFdLFxuICAgICAgfSk7XG4gICAgcmV0dXJuIHtcbiAgICAgIHJlY29yZDogcmVzdWx0LFxuICAgICAgaWQ6IChtb2RlbCBhcyBSZWNvcmQ8c3RyaW5nLCBhbnk+KVtwa10sXG4gICAgfTtcbiAgfVxuXG4gIHJldmVydDxNIGV4dGVuZHMgTW9kZWw+KFxuICAgIG9iajogUmVjb3JkPHN0cmluZywgYW55PixcbiAgICBjbGF6ejogc3RyaW5nIHwgQ29uc3RydWN0b3I8TT4sXG4gICAgcGs6IHN0cmluZyxcbiAgICBpZDogc3RyaW5nIHwgbnVtYmVyIHwgYmlnaW50XG4gICk6IE0ge1xuICAgIGNvbnN0IG9iOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG4gICAgb2JbcGtdID0gaWQ7XG4gICAgY29uc3QgbSA9IChcbiAgICAgIHR5cGVvZiBjbGF6eiA9PT0gXCJzdHJpbmdcIiA/IE1vZGVsLmJ1aWxkKG9iLCBjbGF6eikgOiBuZXcgY2xhenoob2IpXG4gICAgKSBhcyBNO1xuICAgIGNvbnN0IG1ldGFkYXRhID0gb2JqW1BlcnNpc3RlbmNlS2V5cy5NRVRBREFUQV07XG4gICAgY29uc3QgcmVzdWx0ID0gT2JqZWN0LmtleXMobSkucmVkdWNlKChhY2N1bTogTSwga2V5KSA9PiB7XG4gICAgICBpZiAoa2V5ID09PSBwaykgcmV0dXJuIGFjY3VtO1xuICAgICAgKGFjY3VtIGFzIFJlY29yZDxzdHJpbmcsIGFueT4pW2tleV0gPSBvYmpbUmVwb3NpdG9yeS5jb2x1bW4oYWNjdW0sIGtleSldO1xuICAgICAgcmV0dXJuIGFjY3VtO1xuICAgIH0sIG0pO1xuICAgIGlmIChtZXRhZGF0YSlcbiAgICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyZXN1bHQsIFBlcnNpc3RlbmNlS2V5cy5NRVRBREFUQSwge1xuICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICAgICAgd3JpdGFibGU6IGZhbHNlLFxuICAgICAgICB2YWx1ZTogbWV0YWRhdGEsXG4gICAgICB9KTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9XG5cbiAgYWJzdHJhY3QgY3JlYXRlKFxuICAgIHRhYmxlTmFtZTogc3RyaW5nLFxuICAgIGlkOiBzdHJpbmcgfCBudW1iZXIsXG4gICAgbW9kZWw6IFJlY29yZDxzdHJpbmcsIGFueT4sXG4gICAgLi4uYXJnczogYW55W11cbiAgKTogUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCBhbnk+PjtcblxuICBhc3luYyBjcmVhdGVBbGwoXG4gICAgdGFibGVOYW1lOiBzdHJpbmcsXG4gICAgaWQ6IChzdHJpbmcgfCBudW1iZXIpW10sXG4gICAgbW9kZWw6IFJlY29yZDxzdHJpbmcsIGFueT5bXSxcbiAgICAuLi5hcmdzOiBhbnlbXVxuICApOiBQcm9taXNlPFJlY29yZDxzdHJpbmcsIGFueT5bXT4ge1xuICAgIGlmIChpZC5sZW5ndGggIT09IG1vZGVsLmxlbmd0aClcbiAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKFwiSWRzIGFuZCBtb2RlbHMgbXVzdCBoYXZlIHRoZSBzYW1lIGxlbmd0aFwiKTtcbiAgICByZXR1cm4gUHJvbWlzZS5hbGwoXG4gICAgICBpZC5tYXAoKGksIGNvdW50KSA9PiB0aGlzLmNyZWF0ZSh0YWJsZU5hbWUsIGksIG1vZGVsW2NvdW50XSwgLi4uYXJncykpXG4gICAgKTtcbiAgfVxuXG4gIGFic3RyYWN0IHJlYWQoXG4gICAgdGFibGVOYW1lOiBzdHJpbmcsXG4gICAgaWQ6IHN0cmluZyB8IG51bWJlciB8IGJpZ2ludCxcbiAgICAuLi5hcmdzOiBhbnlbXVxuICApOiBQcm9taXNlPFJlY29yZDxzdHJpbmcsIGFueT4+O1xuXG4gIGFzeW5jIHJlYWRBbGwoXG4gICAgdGFibGVOYW1lOiBzdHJpbmcsXG4gICAgaWQ6IChzdHJpbmcgfCBudW1iZXIgfCBiaWdpbnQpW10sXG4gICAgLi4uYXJnczogYW55W11cbiAgKTogUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCBhbnk+W10+IHtcbiAgICByZXR1cm4gUHJvbWlzZS5hbGwoaWQubWFwKChpKSA9PiB0aGlzLnJlYWQodGFibGVOYW1lLCBpLCAuLi5hcmdzKSkpO1xuICB9XG5cbiAgYWJzdHJhY3QgdXBkYXRlKFxuICAgIHRhYmxlTmFtZTogc3RyaW5nLFxuICAgIGlkOiBzdHJpbmcgfCBudW1iZXIsXG4gICAgbW9kZWw6IFJlY29yZDxzdHJpbmcsIGFueT4sXG4gICAgLi4uYXJnczogYW55W11cbiAgKTogUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCBhbnk+PjtcblxuICBhc3luYyB1cGRhdGVBbGwoXG4gICAgdGFibGVOYW1lOiBzdHJpbmcsXG4gICAgaWQ6IHN0cmluZ1tdIHwgbnVtYmVyW10sXG4gICAgbW9kZWw6IFJlY29yZDxzdHJpbmcsIGFueT5bXSxcbiAgICAuLi5hcmdzOiBhbnlbXVxuICApOiBQcm9taXNlPFJlY29yZDxzdHJpbmcsIGFueT5bXT4ge1xuICAgIGlmIChpZC5sZW5ndGggIT09IG1vZGVsLmxlbmd0aClcbiAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKFwiSWRzIGFuZCBtb2RlbHMgbXVzdCBoYXZlIHRoZSBzYW1lIGxlbmd0aFwiKTtcbiAgICByZXR1cm4gUHJvbWlzZS5hbGwoXG4gICAgICBpZC5tYXAoKGksIGNvdW50KSA9PiB0aGlzLnVwZGF0ZSh0YWJsZU5hbWUsIGksIG1vZGVsW2NvdW50XSwgLi4uYXJncykpXG4gICAgKTtcbiAgfVxuXG4gIGFic3RyYWN0IGRlbGV0ZShcbiAgICB0YWJsZU5hbWU6IHN0cmluZyxcbiAgICBpZDogc3RyaW5nIHwgbnVtYmVyIHwgYmlnaW50LFxuICAgIC4uLmFyZ3M6IGFueVtdXG4gICk6IFByb21pc2U8UmVjb3JkPHN0cmluZywgYW55Pj47XG5cbiAgYXN5bmMgZGVsZXRlQWxsKFxuICAgIHRhYmxlTmFtZTogc3RyaW5nLFxuICAgIGlkOiAoc3RyaW5nIHwgbnVtYmVyIHwgYmlnaW50KVtdLFxuICAgIC4uLmFyZ3M6IGFueVtdXG4gICk6IFByb21pc2U8UmVjb3JkPHN0cmluZywgYW55PltdPiB7XG4gICAgcmV0dXJuIFByb21pc2UuYWxsKGlkLm1hcCgoaSkgPT4gdGhpcy5kZWxldGUodGFibGVOYW1lLCBpLCAuLi5hcmdzKSkpO1xuICB9XG5cbiAgYWJzdHJhY3QgcmF3PFI+KHJhd0lucHV0OiBRLCBwcm9jZXNzOiBib29sZWFuLCAuLi5hcmdzOiBhbnlbXSk6IFByb21pc2U8Uj47XG5cbiAgLyoqXG4gICAqIEBzdW1tYXJ5IFJlZ2lzdGVycyBhbiB7QGxpbmsgT2JzZXJ2ZXJ9XG4gICAqIEBwYXJhbSB7T2JzZXJ2ZXJ9IG9ic2VydmVyXG4gICAqXG4gICAqIEBzZWUge09ic2VydmFibGUjb2JzZXJ2ZX1cbiAgICovXG4gIG9ic2VydmUob2JzZXJ2ZXI6IE9ic2VydmVyKTogdm9pZCB7XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLl9vYnNlcnZlcnMuaW5kZXhPZihvYnNlcnZlcik7XG4gICAgaWYgKGluZGV4ICE9PSAtMSkgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoXCJPYnNlcnZlciBhbHJlYWR5IHJlZ2lzdGVyZWRcIik7XG4gICAgdGhpcy5fb2JzZXJ2ZXJzLnB1c2gob2JzZXJ2ZXIpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBzdW1tYXJ5IFVucmVnaXN0ZXJzIGFuIHtAbGluayBPYnNlcnZlcn1cbiAgICogQHBhcmFtIHtPYnNlcnZlcn0gb2JzZXJ2ZXJcbiAgICpcbiAgICogQHNlZSB7T2JzZXJ2YWJsZSN1bk9ic2VydmV9XG4gICAqL1xuICB1bk9ic2VydmUob2JzZXJ2ZXI6IE9ic2VydmVyKTogdm9pZCB7XG4gICAgY29uc3QgaW5kZXggPSB0aGlzLl9vYnNlcnZlcnMuaW5kZXhPZihvYnNlcnZlcik7XG4gICAgaWYgKGluZGV4ID09PSAtMSkgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoXCJGYWlsZWQgdG8gZmluZCBPYnNlcnZlclwiKTtcbiAgICB0aGlzLl9vYnNlcnZlcnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAc3VtbWFyeSBjYWxscyBhbGwgcmVnaXN0ZXJlZCB7QGxpbmsgT2JzZXJ2ZXJ9cyB0byB1cGRhdGUgdGhlbXNlbHZlc1xuICAgKiBAcGFyYW0ge2FueVtdfSBbYXJnc10gb3B0aW9uYWwgYXJndW1lbnRzIHRvIGJlIHBhc3NlZCB0byB0aGUge0BsaW5rIE9ic2VydmVyI3JlZnJlc2h9IG1ldGhvZFxuICAgKi9cbiAgYXN5bmMgdXBkYXRlT2JzZXJ2ZXJzKC4uLmFyZ3M6IGFueVtdKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgY29uc3QgcmVzdWx0cyA9IGF3YWl0IFByb21pc2UuYWxsU2V0dGxlZChcbiAgICAgIHRoaXMuX29ic2VydmVycy5tYXAoKG8pID0+IG8ucmVmcmVzaCguLi5hcmdzKSlcbiAgICApO1xuICAgIHJlc3VsdHMuZm9yRWFjaCgocmVzdWx0LCBpKSA9PiB7XG4gICAgICBpZiAocmVzdWx0LnN0YXR1cyA9PT0gXCJyZWplY3RlZFwiKVxuICAgICAgICBjb25zb2xlLndhcm4oXG4gICAgICAgICAgYEZhaWxlZCB0byB1cGRhdGUgb2JzZXJ2YWJsZSAke3RoaXMuX29ic2VydmVyc1tpXX06ICR7cmVzdWx0LnJlYXNvbn1gXG4gICAgICAgICk7XG4gICAgfSk7XG4gIH1cblxuICBzdGF0aWMgZ2V0IGN1cnJlbnQoKSB7XG4gICAgcmV0dXJuIHRoaXMuX2N1cnJlbnQ7XG4gIH1cblxuICBzdGF0aWMgZ2V0PFksIFE+KGZsYXZvdXI6IGFueSk6IEFkYXB0ZXI8WSwgUT4gfCB1bmRlZmluZWQge1xuICAgIGlmIChmbGF2b3VyIGluIHRoaXMuX2NhY2hlKSByZXR1cm4gdGhpcy5fY2FjaGVbZmxhdm91cl07XG4gICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoYE5vIEFkYXB0ZXIgcmVnaXN0ZXJlZCB1bmRlciAke2ZsYXZvdXJ9LmApO1xuICB9XG5cbiAgc3RhdGljIHNldEN1cnJlbnQoZmxhdm91cjogc3RyaW5nKSB7XG4gICAgY29uc3QgYWRhcHRlciA9IEFkYXB0ZXIuZ2V0KGZsYXZvdXIpO1xuICAgIGlmICghYWRhcHRlcilcbiAgICAgIHRocm93IG5ldyBOb3RGb3VuZEVycm9yKGBObyBwZXJzaXN0ZW5jZSBmbGF2b3VyICR7Zmxhdm91cn0gcmVnaXN0ZXJlZGApO1xuICAgIHRoaXMuX2N1cnJlbnQgPSBhZGFwdGVyO1xuICB9XG5cbiAgc3RhdGljIGtleShrZXk6IHN0cmluZykge1xuICAgIHJldHVybiBSZXBvc2l0b3J5LmtleShrZXkpO1xuICB9XG5cbiAgc3RhdGljIG1vZGVsczxNIGV4dGVuZHMgTW9kZWw+KGZsYXZvdXI6IHN0cmluZykge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZWdpc3RyeSA9IChNb2RlbCBhcyBhbnkpLmdldFJlZ2lzdHJ5KCkgYXMgTW9kZWxSZWdpc3RyeTxhbnk+O1xuICAgICAgY29uc3QgY2FjaGUgPSAoXG4gICAgICAgIHJlZ2lzdHJ5IGFzIHVua25vd24gYXMgeyBjYWNoZTogUmVjb3JkPHN0cmluZywgTW9kZWxDb25zdHJ1Y3Rvcjxhbnk+PiB9XG4gICAgICApLmNhY2hlO1xuICAgICAgY29uc3QgbWFuYWdlZE1vZGVsczogTW9kZWxDb25zdHJ1Y3Rvcjxhbnk+W10gPSBPYmplY3QudmFsdWVzKGNhY2hlKVxuICAgICAgICAubWFwKChtOiBNb2RlbENvbnN0cnVjdG9yPE0+KSA9PiB7XG4gICAgICAgICAgbGV0IGYgPSBSZWZsZWN0LmdldE1ldGFkYXRhKFxuICAgICAgICAgICAgQWRhcHRlci5rZXkoUGVyc2lzdGVuY2VLZXlzLkFEQVBURVIpLFxuICAgICAgICAgICAgbSBhcyBNb2RlbENvbnN0cnVjdG9yPGFueT5cbiAgICAgICAgICApO1xuICAgICAgICAgIGlmIChmICYmIGYgPT09IGZsYXZvdXIpIHJldHVybiBtO1xuICAgICAgICAgIGlmICghZikge1xuICAgICAgICAgICAgY29uc3QgcmVwbyA9IFJlZmxlY3QuZ2V0TWV0YWRhdGEoXG4gICAgICAgICAgICAgIFJlcG9zaXRvcnkua2V5KERCS2V5cy5SRVBPU0lUT1JZKSxcbiAgICAgICAgICAgICAgbSBhcyBNb2RlbENvbnN0cnVjdG9yPGFueT5cbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICBpZiAoIXJlcG8pIHJldHVybjtcbiAgICAgICAgICAgIGNvbnN0IHJlcG9zaXRvcnkgPSBSZXBvc2l0b3J5LmZvck1vZGVsKG0pO1xuXG4gICAgICAgICAgICBmID0gUmVmbGVjdC5nZXRNZXRhZGF0YShcbiAgICAgICAgICAgICAgQWRhcHRlci5rZXkoUGVyc2lzdGVuY2VLZXlzLkFEQVBURVIpLFxuICAgICAgICAgICAgICByZXBvc2l0b3J5XG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgcmV0dXJuIGY7XG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgICAuZmlsdGVyKChtKSA9PiAhIW0pO1xuICAgICAgcmV0dXJuIG1hbmFnZWRNb2RlbHM7XG4gICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihlKTtcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
212
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWRhcHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wZXJzaXN0ZW5jZS9BZGFwdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFFTCxNQUFNLEVBQ04sYUFBYSxFQUNiLGFBQWEsRUFDYixPQUFPLEVBQ1AsYUFBYSxFQUdiLHNCQUFzQixHQUN2QixNQUFNLHlCQUF5QixDQUFDO0FBRWpDLE9BQU8sRUFFTCxVQUFVLEVBQ1YsY0FBYyxFQUNkLEtBQUssR0FHTixNQUFNLGdDQUFnQyxDQUFDO0FBSXhDLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDOUMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBSXZDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUl0RCxVQUFVLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxHQUFXLEVBQUUsRUFBRTtJQUM1QyxJQUFJLENBQUM7UUFDSCxPQUFPLENBQ0wsT0FBTyxDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBRSxHQUFXLENBQUM7WUFDdEUsY0FBYyxDQUNmLENBQUM7UUFDRiw2REFBNkQ7SUFDL0QsQ0FBQztJQUFDLE9BQU8sQ0FBVSxFQUFFLENBQUM7UUFDcEIsT0FBTyxjQUFjLENBQUM7SUFDeEIsQ0FBQztBQUNILENBQUMsQ0FBQyxDQUFDO0FBRUg7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSCxNQUFNLE9BQWdCLE9BQU87YUFTWixXQUFNLEdBQWdELEVBQUUsQUFBbEQsQ0FBbUQ7SUFLeEUsSUFBSSxNQUFNO1FBQ1IsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDO0lBQ3RCLENBQUM7SUFFRCxVQUFVO1FBR1IsT0FBTyxVQUFVLENBQUM7SUFDcEIsQ0FBQztJQUVELFlBQ0UsTUFB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SW50ZXJuYWxFcnJvcixcbiAgTm90Rm91bmRFcnJvcixcbiAgQ29udGV4dCxcbiAgT3BlcmF0aW9uS2V5cyxcbiAgUmVwb3NpdG9yeUZsYWdzLFxuICBDb250ZXh0dWFsLFxuICBEZWZhdWx0UmVwb3NpdG9yeUZsYWdzLFxufSBmcm9tIFwiQGRlY2FmLXRzL2RiLWRlY29yYXRvcnNcIjtcbmltcG9ydCB7IE9ic2VydmVyIH0gZnJvbSBcIi4uL2ludGVyZmFjZXMvT2JzZXJ2ZXJcIjtcbmltcG9ydCB7XG4gIENvbnN0cnVjdG9yLFxuICBEZWNvcmF0aW9uLFxuICBEZWZhdWx0Rmxhdm91cixcbiAgTW9kZWwsXG4gIE1vZGVsQ29uc3RydWN0b3IsXG4gIE1vZGVsUmVnaXN0cnksXG59IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdG9yLXZhbGlkYXRpb25cIjtcbmltcG9ydCB7IFNlcXVlbmNlT3B0aW9ucyB9IGZyb20gXCIuLi9pbnRlcmZhY2VzL1NlcXVlbmNlT3B0aW9uc1wiO1xuaW1wb3J0IHsgUmF3RXhlY3V0b3IgfSBmcm9tIFwiLi4vaW50ZXJmYWNlcy9SYXdFeGVjdXRvclwiO1xuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gXCIuLi9pbnRlcmZhY2VzL09ic2VydmFibGVcIjtcbmltcG9ydCB7IFBlcnNpc3RlbmNlS2V5cyB9IGZyb20gXCIuL2NvbnN0YW50c1wiO1xuaW1wb3J0IHsgUXVlcnkgfSBmcm9tIFwiLi4vcXVlcnkvUXVlcnlcIjtcbmltcG9ydCB7IFN0YXRlbWVudCB9IGZyb20gXCIuLi9xdWVyeS9TdGF0ZW1lbnRcIjtcbmltcG9ydCB7IENsYXVzZUZhY3RvcnkgfSBmcm9tIFwiLi4vcXVlcnkvQ2xhdXNlRmFjdG9yeVwiO1xuaW1wb3J0IHsgQ29uZGl0aW9uIH0gZnJvbSBcIi4uL3F1ZXJ5L0NvbmRpdGlvblwiO1xuaW1wb3J0IHsgUmVwb3NpdG9yeSB9IGZyb20gXCIuLi9yZXBvc2l0b3J5L1JlcG9zaXRvcnlcIjtcbmltcG9ydCB7IFNlcXVlbmNlIH0gZnJvbSBcIi4vU2VxdWVuY2VcIjtcbmltcG9ydCB7IEVycm9yUGFyc2VyIH0gZnJvbSBcIi4uL2ludGVyZmFjZXNcIjtcblxuRGVjb3JhdGlvbi5zZXRGbGF2b3VyUmVzb2x2ZXIoKG9iajogb2JqZWN0KSA9PiB7XG4gIHRyeSB7XG4gICAgcmV0dXJuIChcbiAgICAgIEFkYXB0ZXIuZmxhdm91ck9mKE1vZGVsLmlzTW9kZWwob2JqKSA/IG9iai5jb25zdHJ1Y3RvciA6IChvYmogYXMgYW55KSkgfHxcbiAgICAgIERlZmF1bHRGbGF2b3VyXG4gICAgKTtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG4gIH0gY2F0Y2ggKGU6IHVua25vd24pIHtcbiAgICByZXR1cm4gRGVmYXVsdEZsYXZvdXI7XG4gIH1cbn0pO1xuXG4vKipcbiAqIEBzdW1tYXJ5IEFic3RyYWN0IERlY2FmLXRzIFBlcnNpc3RlbmNlIEFkYXB0ZXIgQ2xhc3NcbiAqIEBkZXNjcmlwdGlvbiBPZmZlcnMgdGhlIGJhc2UgaW1wbGVtZW50YXRpb24gZm9yIGFsbCBBZGFwdGVyIENsYXNzZXNcbiAqIGFuZCBtYW5hZ2VzIHRoZW0gdmFyaW91cyByZWdpc3RlcmVkIHtAbGluayBBZGFwdGVyfXNcbiAqXG4gKiBAdHlwZWRlZiBZIHRoZSB1bmRlcmx5aW5nIHBlcnNpc3RlbmNlIG9iamVjdCB0eXBlIG9yIHRoZSByZXF1aXJlZCBjb25maWcgdG8gc2V0IGl0IHVwXG4gKiBAdHlwZWRlZiBRIFRoZSBxdWVyeSBvYmplY3QgdGhlIGFkYXB0ZXIgdXNlc1xuICpcbiAqIEBwYXJhbSB7WX0gbmF0aXZlIHRoZSB1bmRlcmx5aW5nIHBlcnNpc3RlbmNlIG9iamVjdFxuICogQHBhcmFtIHtzdHJpbmd9IGZsYXZvdXIgdGhlIHVuZGVyIHdpdGNoIHRoZSBwZXJzaXN0ZW5jZSBhZGFwdGVyIHNob3VsZCBiZSBzdG9yZWRcbiAqXG4gKiBAY2xhc3MgQWRhcHRlclxuICogQGltcGxlbWVudHMgUmF3RXhlY3V0b3JcbiAqIEBpbXBsZW1lbnRzIE9ic2VydmFibGVcbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFkYXB0ZXI8XG4gICAgWSxcbiAgICBRLFxuICAgIEYgZXh0ZW5kcyBSZXBvc2l0b3J5RmxhZ3MsXG4gICAgQyBleHRlbmRzIENvbnRleHQ8Rj4sXG4gID5cbiAgaW1wbGVtZW50cyBSYXdFeGVjdXRvcjxRPiwgT2JzZXJ2YWJsZSwgQ29udGV4dHVhbDxGPiwgRXJyb3JQYXJzZXJcbntcbiAgcHJpdmF0ZSBzdGF0aWMgX2N1cnJlbnQ6IEFkYXB0ZXI8YW55LCBhbnksIGFueSwgYW55PjtcbiAgcHJpdmF0ZSBzdGF0aWMgX2NhY2hlOiBSZWNvcmQ8c3RyaW5nLCBBZGFwdGVyPGFueSwgYW55LCBhbnksIGFueT4+ID0ge307XG5cbiAgcHJvdGVjdGVkIHJlYWRvbmx5IF9vYnNlcnZlcnM6IE9ic2VydmVyW10gPSBbXTtcbiAgcHJpdmF0ZSByZWFkb25seSBfbmF0aXZlOiBZO1xuXG4gIGdldCBuYXRpdmUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX25hdGl2ZTtcbiAgfVxuXG4gIHJlcG9zaXRvcnk8TSBleHRlbmRzIE1vZGVsPigpOiBDb25zdHJ1Y3RvcjxcbiAgICBSZXBvc2l0b3J5PE0sIFEsIEFkYXB0ZXI8WSwgUSwgRiwgQz4sIEYsIEM+XG4gID4ge1xuICAgIHJldHVybiBSZXBvc2l0b3J5O1xuICB9XG5cbiAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKFxuICAgIG5hdGl2ZTogWSxcbiAgICByZWFkb25seSBmbGF2b3VyOiBzdHJpbmdcbiAgKSB7XG4gICAgaWYgKHRoaXMuZmxhdm91ciBpbiBBZGFwdGVyLl9jYWNoZSlcbiAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKFxuICAgICAgICBgUGVyc2lzdGVuY2UgYWRhcHRlciBmbGF2b3VyICR7dGhpcy5mbGF2b3VyfSBhbHJlYWR5IHJlZ2lzdGVyZWRgXG4gICAgICApO1xuICAgIHRoaXMuX25hdGl2ZSA9IG5hdGl2ZTtcbiAgICBBZGFwdGVyLl9jYWNoZVt0aGlzLmZsYXZvdXJdID0gdGhpcztcbiAgICBpZiAoIUFkYXB0ZXIuX2N1cnJlbnQpIEFkYXB0ZXIuX2N1cnJlbnQgPSB0aGlzO1xuICB9XG5cbiAgUXVlcnk8TSBleHRlbmRzIE1vZGVsPigpOiBRdWVyeTxRLCBNPiB7XG4gICAgcmV0dXJuIG5ldyBRdWVyeSh0aGlzKTtcbiAgfVxuXG4gIGFic3RyYWN0IHBhcnNlQ29uZGl0aW9uKGNvbmRpdGlvbjogQ29uZGl0aW9uKTogUTtcblxuICBhYnN0cmFjdCBnZXQgU3RhdGVtZW50KCk6IFN0YXRlbWVudDxRPjtcblxuICBhYnN0cmFjdCBnZXQgQ2xhdXNlcygpOiBDbGF1c2VGYWN0b3J5PFksIFEsIHR5cGVvZiB0aGlzPjtcblxuICBwcm90ZWN0ZWQgaXNSZXNlcnZlZChhdHRyOiBzdHJpbmcpIHtcbiAgICByZXR1cm4gIWF0dHI7XG4gIH1cblxuICBhYnN0cmFjdCBwYXJzZUVycm9yKGVycjogRXJyb3IpOiBCYXNlRXJyb3I7XG5cbiAgYWJzdHJhY3QgaW5pdGlhbGl6ZSguLi5hcmdzOiBhbnlbXSk6IFByb21pc2U8dm9pZD47XG5cbiAgYWJzdHJhY3QgU2VxdWVuY2Uob3B0aW9uczogU2VxdWVuY2VPcHRpb25zKTogUHJvbWlzZTxTZXF1ZW5jZT47XG5cbiAgYXN5bmMgY29udGV4dDxcbiAgICBNIGV4dGVuZHMgTW9kZWwsXG4gICAgQyBleHRlbmRzIENvbnRleHQ8Rj4sXG4gICAgRiBleHRlbmRzIFJlcG9zaXRvcnlGbGFncyxcbiAgPihcbiAgICBvcGVyYXRpb246XG4gICAgICB8IE9wZXJhdGlvbktleXMuQ1JFQVRFXG4gICAgICB8IE9wZXJhdGlvbktleXMuUkVBRFxuICAgICAgfCBPcGVyYXRpb25LZXlzLlVQREFURVxuICAgICAgfCBPcGVyYXRpb25LZXlzLkRFTEVURSxcbiAgICBvdmVycmlkZXM6IFBhcnRpYWw8Rj4sXG4gICAgbW9kZWw6IENvbnN0cnVjdG9yPE0+XG4gICk6IFByb21pc2U8Qz4ge1xuICAgIGNvbnN0IEFkYXB0ZXJDb250ZXh0ID0gY2xhc3MgZXh0ZW5kcyBDb250ZXh0PEY+IHtcbiAgICAgIGNvbnN0cnVjdG9yKG9iajogRikge1xuICAgICAgICBzdXBlcihvYmopO1xuICAgICAgfVxuICAgIH07XG4gICAgcmV0dXJuIG5ldyBBZGFwdGVyQ29udGV4dChcbiAgICAgIE9iamVjdC5hc3NpZ24oe30sIERlZmF1bHRSZXBvc2l0b3J5RmxhZ3MsIG92ZXJyaWRlcywge1xuICAgICAgICBhZmZlY3RlZFRhYmxlczogUmVwb3NpdG9yeS50YWJsZShtb2RlbCksXG4gICAgICAgIHdyaXRlT3BlcmF0aW9uOiBvcGVyYXRpb24gIT09IE9wZXJhdGlvbktleXMuUkVBRCxcbiAgICAgICAgdGltZXN0YW1wOiBuZXcgRGF0ZSgpLFxuICAgICAgICBvcGVyYXRpb246IG9wZXJhdGlvbixcbiAgICAgIH0pIGFzIEZcbiAgICApIGFzIEM7XG4gIH1cblxuICBwcmVwYXJlPE0gZXh0ZW5kcyBNb2RlbD4oXG4gICAgbW9kZWw6IE0sXG4gICAgcGs6IGtleW9mIE1cbiAgKToge1xuICAgIHJlY29yZDogUmVjb3JkPHN0cmluZywgYW55PjtcbiAgICBpZDogc3RyaW5nO1xuICB9IHtcbiAgICBjb25zdCByZXN1bHQgPSBPYmplY3QuZW50cmllcyhtb2RlbCkucmVkdWNlKFxuICAgICAgKGFjY3VtOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LCBba2V5LCB2YWxdKSA9PiB7XG4gICAgICAgIC8vIGlmIChrZXkgPT09IHBrKSByZXR1cm4gYWNjdW07XG4gICAgICAgIGNvbnN0IG1hcHBlZFByb3AgPSBSZXBvc2l0b3J5LmNvbHVtbihtb2RlbCwga2V5KTtcbiAgICAgICAgaWYgKHRoaXMuaXNSZXNlcnZlZChtYXBwZWRQcm9wKSlcbiAgICAgICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihgUHJvcGVydHkgbmFtZSAke21hcHBlZFByb3B9IGlzIHJlc2VydmVkYCk7XG4gICAgICAgIGFjY3VtW21hcHBlZFByb3BdID0gdmFsO1xuICAgICAgICByZXR1cm4gYWNjdW07XG4gICAgICB9LFxuICAgICAge31cbiAgICApO1xuICAgIGlmICgobW9kZWwgYXMgYW55KVtQZXJzaXN0ZW5jZUtleXMuTUVUQURBVEFdKVxuICAgICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KHJlc3VsdCwgUGVyc2lzdGVuY2VLZXlzLk1FVEFEQVRBLCB7XG4gICAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgICB3cml0YWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZSxcbiAgICAgICAgdmFsdWU6IChtb2RlbCBhcyBhbnkpW1BlcnNpc3RlbmNlS2V5cy5NRVRBREFUQV0sXG4gICAgICB9KTtcbiAgICByZXR1cm4ge1xuICAgICAgcmVjb3JkOiByZXN1bHQsXG4gICAgICBpZDogbW9kZWxbcGtdIGFzIHN0cmluZyxcbiAgICB9O1xuICB9XG5cbiAgcmV2ZXJ0PE0gZXh0ZW5kcyBNb2RlbD4oXG4gICAgb2JqOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxuICAgIGNsYXp6OiBzdHJpbmcgfCBDb25zdHJ1Y3RvcjxNPixcbiAgICBwazoga2V5b2YgTSxcbiAgICBpZDogc3RyaW5nIHwgbnVtYmVyIHwgYmlnaW50XG4gICk6IE0ge1xuICAgIGNvbnN0IG9iOiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG4gICAgb2JbcGsgYXMgc3RyaW5nXSA9IGlkO1xuICAgIGNvbnN0IG0gPSAoXG4gICAgICB0eXBlb2YgY2xhenogPT09IFwic3RyaW5nXCIgPyBNb2RlbC5idWlsZChvYiwgY2xhenopIDogbmV3IGNsYXp6KG9iKVxuICAgICkgYXMgTTtcbiAgICBjb25zdCBtZXRhZGF0YSA9IG9ialtQZXJzaXN0ZW5jZUtleXMuTUVUQURBVEFdO1xuICAgIGNvbnN0IHJlc3VsdCA9IE9iamVjdC5rZXlzKG0pLnJlZHVjZSgoYWNjdW06IE0sIGtleSkgPT4ge1xuICAgICAgaWYgKGtleSA9PT0gcGspIHJldHVybiBhY2N1bTtcbiAgICAgIChhY2N1bSBhcyBSZWNvcmQ8c3RyaW5nLCBhbnk+KVtrZXldID0gb2JqW1JlcG9zaXRvcnkuY29sdW1uKGFjY3VtLCBrZXkpXTtcbiAgICAgIHJldHVybiBhY2N1bTtcbiAgICB9LCBtKTtcbiAgICBpZiAobWV0YWRhdGEpXG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkocmVzdWx0LCBQZXJzaXN0ZW5jZUtleXMuTUVUQURBVEEsIHtcbiAgICAgICAgZW51bWVyYWJsZTogZmFsc2UsXG4gICAgICAgIGNvbmZpZ3VyYWJsZTogZmFsc2UsXG4gICAgICAgIHdyaXRhYmxlOiBmYWxzZSxcbiAgICAgICAgdmFsdWU6IG1ldGFkYXRhLFxuICAgICAgfSk7XG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIGFic3RyYWN0IGNyZWF0ZShcbiAgICB0YWJsZU5hbWU6IHN0cmluZyxcbiAgICBpZDogc3RyaW5nIHwgbnVtYmVyLFxuICAgIG1vZGVsOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxuICAgIC4uLmFyZ3M6IGFueVtdXG4gICk6IFByb21pc2U8UmVjb3JkPHN0cmluZywgYW55Pj47XG5cbiAgYXN5bmMgY3JlYXRlQWxsKFxuICAgIHRhYmxlTmFtZTogc3RyaW5nLFxuICAgIGlkOiAoc3RyaW5nIHwgbnVtYmVyKVtdLFxuICAgIG1vZGVsOiBSZWNvcmQ8c3RyaW5nLCBhbnk+W10sXG4gICAgLi4uYXJnczogYW55W11cbiAgKTogUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCBhbnk+W10+IHtcbiAgICBpZiAoaWQubGVuZ3RoICE9PSBtb2RlbC5sZW5ndGgpXG4gICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihcIklkcyBhbmQgbW9kZWxzIG11c3QgaGF2ZSB0aGUgc2FtZSBsZW5ndGhcIik7XG4gICAgcmV0dXJuIFByb21pc2UuYWxsKFxuICAgICAgaWQubWFwKChpLCBjb3VudCkgPT4gdGhpcy5jcmVhdGUodGFibGVOYW1lLCBpLCBtb2RlbFtjb3VudF0sIC4uLmFyZ3MpKVxuICAgICk7XG4gIH1cblxuICBhYnN0cmFjdCByZWFkKFxuICAgIHRhYmxlTmFtZTogc3RyaW5nLFxuICAgIGlkOiBzdHJpbmcgfCBudW1iZXIgfCBiaWdpbnQsXG4gICAgLi4uYXJnczogYW55W11cbiAgKTogUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCBhbnk+PjtcblxuICBhc3luYyByZWFkQWxsKFxuICAgIHRhYmxlTmFtZTogc3RyaW5nLFxuICAgIGlkOiAoc3RyaW5nIHwgbnVtYmVyIHwgYmlnaW50KVtdLFxuICAgIC4uLmFyZ3M6IGFueVtdXG4gICk6IFByb21pc2U8UmVjb3JkPHN0cmluZywgYW55PltdPiB7XG4gICAgcmV0dXJuIFByb21pc2UuYWxsKGlkLm1hcCgoaSkgPT4gdGhpcy5yZWFkKHRhYmxlTmFtZSwgaSwgLi4uYXJncykpKTtcbiAgfVxuXG4gIGFic3RyYWN0IHVwZGF0ZShcbiAgICB0YWJsZU5hbWU6IHN0cmluZyxcbiAgICBpZDogc3RyaW5nIHwgbnVtYmVyLFxuICAgIG1vZGVsOiBSZWNvcmQ8c3RyaW5nLCBhbnk+LFxuICAgIC4uLmFyZ3M6IGFueVtdXG4gICk6IFByb21pc2U8UmVjb3JkPHN0cmluZywgYW55Pj47XG5cbiAgYXN5bmMgdXBkYXRlQWxsKFxuICAgIHRhYmxlTmFtZTogc3RyaW5nLFxuICAgIGlkOiBzdHJpbmdbXSB8IG51bWJlcltdLFxuICAgIG1vZGVsOiBSZWNvcmQ8c3RyaW5nLCBhbnk+W10sXG4gICAgLi4uYXJnczogYW55W11cbiAgKTogUHJvbWlzZTxSZWNvcmQ8c3RyaW5nLCBhbnk+W10+IHtcbiAgICBpZiAoaWQubGVuZ3RoICE9PSBtb2RlbC5sZW5ndGgpXG4gICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihcIklkcyBhbmQgbW9kZWxzIG11c3QgaGF2ZSB0aGUgc2FtZSBsZW5ndGhcIik7XG4gICAgcmV0dXJuIFByb21pc2UuYWxsKFxuICAgICAgaWQubWFwKChpLCBjb3VudCkgPT4gdGhpcy51cGRhdGUodGFibGVOYW1lLCBpLCBtb2RlbFtjb3VudF0sIC4uLmFyZ3MpKVxuICAgICk7XG4gIH1cblxuICBhYnN0cmFjdCBkZWxldGUoXG4gICAgdGFibGVOYW1lOiBzdHJpbmcsXG4gICAgaWQ6IHN0cmluZyB8IG51bWJlciB8IGJpZ2ludCxcbiAgICAuLi5hcmdzOiBhbnlbXVxuICApOiBQcm9taXNlPFJlY29yZDxzdHJpbmcsIGFueT4+O1xuXG4gIGFzeW5jIGRlbGV0ZUFsbChcbiAgICB0YWJsZU5hbWU6IHN0cmluZyxcbiAgICBpZDogKHN0cmluZyB8IG51bWJlciB8IGJpZ2ludClbXSxcbiAgICAuLi5hcmdzOiBhbnlbXVxuICApOiBQcm9taXNlPFJlY29yZDxzdHJpbmcsIGFueT5bXT4ge1xuICAgIHJldHVybiBQcm9taXNlLmFsbChpZC5tYXAoKGkpID0+IHRoaXMuZGVsZXRlKHRhYmxlTmFtZSwgaSwgLi4uYXJncykpKTtcbiAgfVxuXG4gIGFic3RyYWN0IHJhdzxSPihyYXdJbnB1dDogUSwgcHJvY2VzczogYm9vbGVhbiwgLi4uYXJnczogYW55W10pOiBQcm9taXNlPFI+O1xuXG4gIC8qKlxuICAgKiBAc3VtbWFyeSBSZWdpc3RlcnMgYW4ge0BsaW5rIE9ic2VydmVyfVxuICAgKiBAcGFyYW0ge09ic2VydmVyfSBvYnNlcnZlclxuICAgKlxuICAgKiBAc2VlIHtPYnNlcnZhYmxlI29ic2VydmV9XG4gICAqL1xuICBvYnNlcnZlKG9ic2VydmVyOiBPYnNlcnZlcik6IHZvaWQge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5fb2JzZXJ2ZXJzLmluZGV4T2Yob2JzZXJ2ZXIpO1xuICAgIGlmIChpbmRleCAhPT0gLTEpIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKFwiT2JzZXJ2ZXIgYWxyZWFkeSByZWdpc3RlcmVkXCIpO1xuICAgIHRoaXMuX29ic2VydmVycy5wdXNoKG9ic2VydmVyKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAc3VtbWFyeSBVbnJlZ2lzdGVycyBhbiB7QGxpbmsgT2JzZXJ2ZXJ9XG4gICAqIEBwYXJhbSB7T2JzZXJ2ZXJ9IG9ic2VydmVyXG4gICAqXG4gICAqIEBzZWUge09ic2VydmFibGUjdW5PYnNlcnZlfVxuICAgKi9cbiAgdW5PYnNlcnZlKG9ic2VydmVyOiBPYnNlcnZlcik6IHZvaWQge1xuICAgIGNvbnN0IGluZGV4ID0gdGhpcy5fb2JzZXJ2ZXJzLmluZGV4T2Yob2JzZXJ2ZXIpO1xuICAgIGlmIChpbmRleCA9PT0gLTEpIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKFwiRmFpbGVkIHRvIGZpbmQgT2JzZXJ2ZXJcIik7XG4gICAgdGhpcy5fb2JzZXJ2ZXJzLnNwbGljZShpbmRleCwgMSk7XG4gIH1cblxuICAvKipcbiAgICogQHN1bW1hcnkgY2FsbHMgYWxsIHJlZ2lzdGVyZWQge0BsaW5rIE9ic2VydmVyfXMgdG8gdXBkYXRlIHRoZW1zZWx2ZXNcbiAgICogQHBhcmFtIHthbnlbXX0gW2FyZ3NdIG9wdGlvbmFsIGFyZ3VtZW50cyB0byBiZSBwYXNzZWQgdG8gdGhlIHtAbGluayBPYnNlcnZlciNyZWZyZXNofSBtZXRob2RcbiAgICovXG4gIGFzeW5jIHVwZGF0ZU9ic2VydmVycyguLi5hcmdzOiBhbnlbXSk6IFByb21pc2U8dm9pZD4ge1xuICAgIGNvbnN0IHJlc3VsdHMgPSBhd2FpdCBQcm9taXNlLmFsbFNldHRsZWQoXG4gICAgICB0aGlzLl9vYnNlcnZlcnMubWFwKChvKSA9PiBvLnJlZnJlc2goLi4uYXJncykpXG4gICAgKTtcbiAgICByZXN1bHRzLmZvckVhY2goKHJlc3VsdCwgaSkgPT4ge1xuICAgICAgaWYgKHJlc3VsdC5zdGF0dXMgPT09IFwicmVqZWN0ZWRcIilcbiAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgIGBGYWlsZWQgdG8gdXBkYXRlIG9ic2VydmFibGUgJHt0aGlzLl9vYnNlcnZlcnNbaV19OiAke3Jlc3VsdC5yZWFzb259YFxuICAgICAgICApO1xuICAgIH0pO1xuICB9XG5cbiAgdG9TdHJpbmcoKSB7XG4gICAgcmV0dXJuIGAke3RoaXMuZmxhdm91cn0gcGVyc2lzdGVuY2UgQWRhcHRlcmA7XG4gIH1cblxuICBzdGF0aWMgZmxhdm91ck9mPE0gZXh0ZW5kcyBNb2RlbD4obW9kZWw6IENvbnN0cnVjdG9yPE0+KTogc3RyaW5nIHtcbiAgICByZXR1cm4gKFxuICAgICAgUmVmbGVjdC5nZXRNZXRhZGF0YSh0aGlzLmtleShQZXJzaXN0ZW5jZUtleXMuQURBUFRFUiksIG1vZGVsKSB8fFxuICAgICAgdGhpcy5jdXJyZW50LmZsYXZvdXJcbiAgICApO1xuICB9XG5cbiAgc3RhdGljIGdldCBjdXJyZW50KCkge1xuICAgIGlmICghQWRhcHRlci5fY3VycmVudClcbiAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKFxuICAgICAgICBgTm8gcGVyc2lzdGVuY2UgZmxhdm91ciBzZXQuIFBsZWFzZSBpbml0aWFsaXplIHlvdXIgYWRhcHRlcmBcbiAgICAgICk7XG4gICAgcmV0dXJuIEFkYXB0ZXIuX2N1cnJlbnQ7XG4gIH1cblxuICBzdGF0aWMgZ2V0PFksIFEsIEMgZXh0ZW5kcyBDb250ZXh0PEY+LCBGIGV4dGVuZHMgUmVwb3NpdG9yeUZsYWdzPihcbiAgICBmbGF2b3VyOiBhbnlcbiAgKTogQWRhcHRlcjxZLCBRLCBGLCBDPiB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKGZsYXZvdXIgaW4gdGhpcy5fY2FjaGUpIHJldHVybiB0aGlzLl9jYWNoZVtmbGF2b3VyXTtcbiAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihgTm8gQWRhcHRlciByZWdpc3RlcmVkIHVuZGVyICR7Zmxhdm91cn0uYCk7XG4gIH1cblxuICBzdGF0aWMgc2V0Q3VycmVudChmbGF2b3VyOiBzdHJpbmcpIHtcbiAgICBjb25zdCBhZGFwdGVyID0gQWRhcHRlci5nZXQoZmxhdm91cik7XG4gICAgaWYgKCFhZGFwdGVyKVxuICAgICAgdGhyb3cgbmV3IE5vdEZvdW5kRXJyb3IoYE5vIHBlcnNpc3RlbmNlIGZsYXZvdXIgJHtmbGF2b3VyfSByZWdpc3RlcmVkYCk7XG4gICAgdGhpcy5fY3VycmVudCA9IGFkYXB0ZXI7XG4gIH1cblxuICBzdGF0aWMga2V5KGtleTogc3RyaW5nKSB7XG4gICAgcmV0dXJuIFJlcG9zaXRvcnkua2V5KGtleSk7XG4gIH1cblxuICBzdGF0aWMgbW9kZWxzPE0gZXh0ZW5kcyBNb2RlbD4oZmxhdm91cjogc3RyaW5nKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHJlZ2lzdHJ5ID0gKE1vZGVsIGFzIGFueSkuZ2V0UmVnaXN0cnkoKSBhcyBNb2RlbFJlZ2lzdHJ5PGFueT47XG4gICAgICBjb25zdCBjYWNoZSA9IChcbiAgICAgICAgcmVnaXN0cnkgYXMgdW5rbm93biBhcyB7IGNhY2hlOiBSZWNvcmQ8c3RyaW5nLCBNb2RlbENvbnN0cnVjdG9yPGFueT4+IH1cbiAgICAgICkuY2FjaGU7XG4gICAgICBjb25zdCBtYW5hZ2VkTW9kZWxzOiBNb2RlbENvbnN0cnVjdG9yPGFueT5bXSA9IE9iamVjdC52YWx1ZXMoY2FjaGUpXG4gICAgICAgIC5tYXAoKG06IE1vZGVsQ29uc3RydWN0b3I8TT4pID0+IHtcbiAgICAgICAgICBsZXQgZiA9IFJlZmxlY3QuZ2V0TWV0YWRhdGEoXG4gICAgICAgICAgICBBZGFwdGVyLmtleShQZXJzaXN0ZW5jZUtleXMuQURBUFRFUiksXG4gICAgICAgICAgICBtIGFzIE1vZGVsQ29uc3RydWN0b3I8YW55PlxuICAgICAgICAgICk7XG4gICAgICAgICAgaWYgKGYgJiYgZiA9PT0gZmxhdm91cikgcmV0dXJuIG07XG4gICAgICAgICAgaWYgKCFmKSB7XG4gICAgICAgICAgICBjb25zdCByZXBvID0gUmVmbGVjdC5nZXRNZXRhZGF0YShcbiAgICAgICAgICAgICAgUmVwb3NpdG9yeS5rZXkoREJLZXlzLlJFUE9TSVRPUlkpLFxuICAgICAgICAgICAgICBtIGFzIE1vZGVsQ29uc3RydWN0b3I8YW55PlxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIGlmICghcmVwbykgcmV0dXJuO1xuICAgICAgICAgICAgY29uc3QgcmVwb3NpdG9yeSA9IFJlcG9zaXRvcnkuZm9yTW9kZWwobSk7XG5cbiAgICAgICAgICAgIGYgPSBSZWZsZWN0LmdldE1ldGFkYXRhKFxuICAgICAgICAgICAgICBBZGFwdGVyLmtleShQZXJzaXN0ZW5jZUtleXMuQURBUFRFUiksXG4gICAgICAgICAgICAgIHJlcG9zaXRvcnlcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgICByZXR1cm4gZjtcbiAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICAgIC5maWx0ZXIoKG0pID0+ICEhbSk7XG4gICAgICByZXR1cm4gbWFuYWdlZE1vZGVscztcbiAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKGUpO1xuICAgIH1cbiAgfVxufVxuIl19
|
@@ -28,8 +28,8 @@ export declare abstract class Clause<Q> extends Model implements Executor, Pagin
|
|
28
28
|
readonly priority: Priority;
|
29
29
|
readonly statement: Statement<Q>;
|
30
30
|
protected constructor(clause?: ModelArg<Clause<Q>>);
|
31
|
-
protected get adapter(): import("..").Adapter<any, Q>;
|
32
|
-
protected get Clauses(): import("./ClauseFactory").ClauseFactory<any, Q
|
31
|
+
protected get adapter(): import("..").Adapter<any, Q, any, any>;
|
32
|
+
protected get Clauses(): import("./ClauseFactory").ClauseFactory<any, Q, import("..").Adapter<any, Q, any, any>>;
|
33
33
|
/**
|
34
34
|
* @summary return the priority of the clause
|
35
35
|
* @see Priority
|
@@ -12,8 +12,8 @@ import { Condition } from "./Condition";
|
|
12
12
|
import { FromSelector, GroupBySelector, LimitSelector, OffsetSelector, OrderBySelector, SelectSelector } from "./selectors";
|
13
13
|
import { Statement } from "./Statement";
|
14
14
|
import { Model } from "@decaf-ts/decorator-validation";
|
15
|
-
export declare abstract class ClauseFactory<Y, Q
|
16
|
-
protected adapter:
|
15
|
+
export declare abstract class ClauseFactory<Y, Q, A extends Adapter<Y, Q, any, any>> {
|
16
|
+
protected adapter: A;
|
17
17
|
/**
|
18
18
|
* @summary Factory method for {@link FromClause}
|
19
19
|
* @param {Statement} statement
|
@@ -67,5 +67,5 @@ export declare abstract class ClauseFactory<Y, Q> {
|
|
67
67
|
* @param {Condition} condition
|
68
68
|
*/
|
69
69
|
abstract where(statement: Statement<Q>, condition: Condition): WhereClause<Q>;
|
70
|
-
protected constructor(adapter:
|
70
|
+
protected constructor(adapter: A);
|
71
71
|
}
|
@@ -3,4 +3,4 @@ export class ClauseFactory {
|
|
3
3
|
this.adapter = adapter;
|
4
4
|
}
|
5
5
|
}
|
6
|
-
//# sourceMappingURL=data:application/json;base64,
|
6
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2xhdXNlRmFjdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9xdWVyeS9DbGF1c2VGYWN0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXNCQSxNQUFNLE9BQWdCLGFBQWE7SUEyRWpDLFlBQWdDLE9BQVU7UUFBVixZQUFPLEdBQVAsT0FBTyxDQUFHO0lBQUcsQ0FBQztDQUMvQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEZyb21DbGF1c2UgfSBmcm9tIFwiLi9jbGF1c2VzXCI7XG5pbXBvcnQgeyBHcm91cEJ5Q2xhdXNlIH0gZnJvbSBcIi4vY2xhdXNlcy9Hcm91cEJ5Q2xhdXNlXCI7XG5pbXBvcnQgeyBJbnNlcnRDbGF1c2UgfSBmcm9tIFwiLi9jbGF1c2VzL0luc2VydENsYXVzZVwiO1xuaW1wb3J0IHsgTGltaXRDbGF1c2UgfSBmcm9tIFwiLi9jbGF1c2VzL0xpbWl0Q2xhdXNlXCI7XG5pbXBvcnQgeyBPZmZzZXRDbGF1c2UgfSBmcm9tIFwiLi9jbGF1c2VzL09mZnNldENsYXVzZVwiO1xuaW1wb3J0IHsgT3JkZXJCeUNsYXVzZSB9IGZyb20gXCIuL2NsYXVzZXMvT3JkZXJCeUNsYXVzZVwiO1xuaW1wb3J0IHsgU2VsZWN0Q2xhdXNlIH0gZnJvbSBcIi4vY2xhdXNlcy9TZWxlY3RDbGF1c2VcIjtcbmltcG9ydCB7IFZhbHVlc0NsYXVzZSB9IGZyb20gXCIuL2NsYXVzZXMvVmFsdWVzQ2xhdXNlXCI7XG5pbXBvcnQgeyBXaGVyZUNsYXVzZSB9IGZyb20gXCIuL2NsYXVzZXMvV2hlcmVDbGF1c2VcIjtcbmltcG9ydCB7IEFkYXB0ZXIgfSBmcm9tIFwiLi4vcGVyc2lzdGVuY2VcIjtcbmltcG9ydCB7IENvbmRpdGlvbiB9IGZyb20gXCIuL0NvbmRpdGlvblwiO1xuaW1wb3J0IHtcbiAgRnJvbVNlbGVjdG9yLFxuICBHcm91cEJ5U2VsZWN0b3IsXG4gIExpbWl0U2VsZWN0b3IsXG4gIE9mZnNldFNlbGVjdG9yLFxuICBPcmRlckJ5U2VsZWN0b3IsXG4gIFNlbGVjdFNlbGVjdG9yLFxufSBmcm9tIFwiLi9zZWxlY3RvcnNcIjtcbmltcG9ydCB7IFN0YXRlbWVudCB9IGZyb20gXCIuL1N0YXRlbWVudFwiO1xuaW1wb3J0IHsgTW9kZWwgfSBmcm9tIFwiQGRlY2FmLXRzL2RlY29yYXRvci12YWxpZGF0aW9uXCI7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBDbGF1c2VGYWN0b3J5PFksIFEsIEEgZXh0ZW5kcyBBZGFwdGVyPFksIFEsIGFueSwgYW55Pj4ge1xuICAvKipcbiAgICogQHN1bW1hcnkgRmFjdG9yeSBtZXRob2QgZm9yIHtAbGluayBGcm9tQ2xhdXNlfVxuICAgKiBAcGFyYW0ge1N0YXRlbWVudH0gc3RhdGVtZW50XG4gICAqIEBwYXJhbSB7RnJvbVNlbGVjdG9yfSBzZWxlY3RvclxuICAgKi9cbiAgYWJzdHJhY3QgZnJvbTxNIGV4dGVuZHMgTW9kZWw+KFxuICAgIHN0YXRlbWVudDogU3RhdGVtZW50PFE+LFxuICAgIHNlbGVjdG9yOiBGcm9tU2VsZWN0b3I8TT5cbiAgKTogRnJvbUNsYXVzZTxRLCBNPjtcbiAgLyoqXG4gICAqIEBzdW1tYXJ5IEZhY3RvcnkgbWV0aG9kIGZvciB7QGxpbmsgR3JvdXBCeUNsYXVzZX1cbiAgICogQHBhcmFtIHtTdGF0ZW1lbnR9IHN0YXRlbWVudFxuICAgKiBAcGFyYW0ge0dyb3VwQnlTZWxlY3Rvcn0gc2VsZWN0b3JcbiAgICovXG4gIGFic3RyYWN0IGdyb3VwQnkoXG4gICAgc3RhdGVtZW50OiBTdGF0ZW1lbnQ8UT4sXG4gICAgc2VsZWN0b3I6IEdyb3VwQnlTZWxlY3RvclxuICApOiBHcm91cEJ5Q2xhdXNlPFE+O1xuICAvKipcbiAgICogQHN1bW1hcnkgRmFjdG9yeSBtZXRob2QgZm9yIHtAbGluayBJbnNlcnRDbGF1c2V9XG4gICAqIEBwYXJhbSB7U3RhdGVtZW50fSBzdGF0ZW1lbnRcbiAgICovXG4gIGFic3RyYWN0IGluc2VydDxNIGV4dGVuZHMgTW9kZWw+KCk6IEluc2VydENsYXVzZTxRLCBNPjtcbiAgLyoqXG4gICAqIEBzdW1tYXJ5IEZhY3RvcnkgbWV0aG9kIGZvciB7QGxpbmsgTGltaXRDbGF1c2V9XG4gICAqIEBwYXJhbSB7U3RhdGVtZW50fSBzdGF0ZW1lbnRcbiAgICogQHBhcmFtIHtMaW1pdFNlbGVjdG9yfSBzZWxlY3RvclxuICAgKi9cbiAgYWJzdHJhY3QgbGltaXQoXG4gICAgc3RhdGVtZW50OiBTdGF0ZW1lbnQ8UT4sXG4gICAgc2VsZWN0b3I6IExpbWl0U2VsZWN0b3JcbiAgKTogTGltaXRDbGF1c2U8UT47XG4gIC8qKlxuICAgKiBAc3VtbWFyeSBGYWN0b3J5IG1ldGhvZCBmb3Ige0BsaW5rIE9mZnNldENsYXVzZX1cbiAgICogQHBhcmFtIHtTdGF0ZW1lbnR9IHN0YXRlbWVudFxuICAgKiBAcGFyYW0ge09mZnNldFNlbGVjdG9yfSBzZWxlY3RvclxuICAgKi9cbiAgYWJzdHJhY3Qgb2Zmc2V0KFxuICAgIHN0YXRlbWVudDogU3RhdGVtZW50PFE+LFxuICAgIHNlbGVjdG9yOiBPZmZzZXRTZWxlY3RvclxuICApOiBPZmZzZXRDbGF1c2U8UT47XG4gIC8qKlxuICAgKiBAc3VtbWFyeSBGYWN0b3J5IG1ldGhvZCBmb3Ige0BsaW5rIE9yZGVyQnlDbGF1c2V9XG4gICAqIEBwYXJhbSB7U3RhdGVtZW50fSBzdGF0ZW1lbnRcbiAgICogQHBhcmFtIHtPcmRlckJ5U2VsZWN0b3J9IHNlbGVjdG9yXG4gICAqL1xuICBhYnN0cmFjdCBvcmRlckJ5KFxuICAgIHN0YXRlbWVudDogU3RhdGVtZW50PFE+LFxuICAgIHNlbGVjdG9yOiBPcmRlckJ5U2VsZWN0b3JbXVxuICApOiBPcmRlckJ5Q2xhdXNlPFE+O1xuICAvKipcbiAgICogQHN1bW1hcnkgRmFjdG9yeSBtZXRob2QgZm9yIHtAbGluayBTZWxlY3RDbGF1c2V9XG4gICAqIEBwYXJhbSB7U3RhdGVtZW50fSBzdGF0ZW1lbnRcbiAgICogQHBhcmFtIHtTZWxlY3RTZWxlY3Rvcn0gW3NlbGVjdG9yXVxuICAgKi9cbiAgYWJzdHJhY3Qgc2VsZWN0PE0gZXh0ZW5kcyBNb2RlbD4oXG4gICAgc2VsZWN0b3I/OiBTZWxlY3RTZWxlY3RvclxuICApOiBTZWxlY3RDbGF1c2U8USwgTT47XG4gIC8qKlxuICAgKiBAc3VtbWFyeSBGYWN0b3J5IG1ldGhvZCBmb3Ige0BsaW5rIFZhbHVlc0NsYXVzZX1cbiAgICogQHBhcmFtIHtTdGF0ZW1lbnR9IHN0YXRlbWVudFxuICAgKiBAcGFyYW0ge01bXX0gdmFsdWVzXG4gICAqL1xuICBhYnN0cmFjdCB2YWx1ZXM8TSBleHRlbmRzIE1vZGVsPihcbiAgICBzdGF0ZW1lbnQ6IFN0YXRlbWVudDxRPixcbiAgICB2YWx1ZXM6IE1bXVxuICApOiBWYWx1ZXNDbGF1c2U8USwgTT47XG4gIC8qKlxuICAgKiBAc3VtbWFyeSBGYWN0b3J5IG1ldGhvZCBmb3Ige0BsaW5rIFdoZXJlQ2xhdXNlfVxuICAgKiBAcGFyYW0ge1N0YXRlbWVudH0gc3RhdGVtZW50XG4gICAqIEBwYXJhbSB7Q29uZGl0aW9ufSBjb25kaXRpb25cbiAgICovXG4gIGFic3RyYWN0IHdoZXJlKHN0YXRlbWVudDogU3RhdGVtZW50PFE+LCBjb25kaXRpb246IENvbmRpdGlvbik6IFdoZXJlQ2xhdXNlPFE+O1xuXG4gIHByb3RlY3RlZCBjb25zdHJ1Y3Rvcihwcm90ZWN0ZWQgYWRhcHRlcjogQSkge31cbn1cbiJdfQ==
|
@@ -12,11 +12,11 @@ export declare abstract class Paginator<V, Q> {
|
|
12
12
|
get total(): number;
|
13
13
|
get count(): number;
|
14
14
|
get statement(): Q;
|
15
|
-
protected get adapter(): import("..").Adapter<any, Q>;
|
15
|
+
protected get adapter(): import("..").Adapter<any, Q, any, any>;
|
16
16
|
protected constructor(stat: Statement<Q>, size: number, _rawStatement: Q);
|
17
17
|
protected abstract prepare(rawStatement: Q): Q;
|
18
18
|
next(): Promise<V[]>;
|
19
19
|
previous(): Promise<V[]>;
|
20
|
-
protected validatePage(page: number):
|
20
|
+
protected validatePage(page: number): number;
|
21
21
|
abstract page(page?: number, ...args: any[]): Promise<V[]>;
|
22
22
|
}
|
@@ -31,8 +31,9 @@ export class Paginator {
|
|
31
31
|
validatePage(page) {
|
32
32
|
if (page < 1 || !Number.isInteger(page))
|
33
33
|
throw new PagingError("page number cannot be under 1 and must be an integer");
|
34
|
-
if (page > this._totalPages)
|
35
|
-
throw new PagingError(
|
34
|
+
if (typeof this._totalPages !== "undefined" && page > this._totalPages)
|
35
|
+
throw new PagingError(`Requested more pages than available. Total pages: ${this._totalPages}`);
|
36
|
+
return page;
|
36
37
|
}
|
37
38
|
}
|
38
|
-
//# sourceMappingURL=data:application/json;base64,
|
39
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGFnaW5hdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3F1ZXJ5L1BhZ2luYXRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sVUFBVSxDQUFDO0FBR3ZDLE1BQU0sT0FBZ0IsU0FBUztJQVE3QixJQUFJLE9BQU87UUFDVCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDM0IsQ0FBQztJQUVELElBQUksS0FBSztRQUNQLE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQztJQUMxQixDQUFDO0lBRUQsSUFBSSxLQUFLO1FBQ1AsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDO0lBQzNCLENBQUM7SUFFRCxJQUFJLFNBQVM7UUFDWCxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVU7WUFBRSxJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBQ3pFLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN6QixDQUFDO0lBRUQsSUFBYyxPQUFPO1FBQ25CLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztJQUNoQyxDQUFDO0lBRUQsWUFDWSxJQUFrQixFQUNuQixJQUFZLEVBQ0YsYUFBZ0I7UUFGekIsU0FBSSxHQUFKLElBQUksQ0FBYztRQUNuQixTQUFJLEdBQUosSUFBSSxDQUFRO1FBQ0Ysa0JBQWEsR0FBYixhQUFhLENBQUc7SUFDbEMsQ0FBQztJQUlKLEtBQUssQ0FBQyxJQUFJO1FBQ1IsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVELEtBQUssQ0FBQyxRQUFRO1FBQ1osT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVTLFlBQVksQ0FBQyxJQUFZO1FBQ2pDLElBQUksSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDO1lBQ3JDLE1BQU0sSUFBSSxXQUFXLENBQ25CLHNEQUFzRCxDQUN2RCxDQUFDO1FBQ0osSUFBSSxPQUFPLElBQUksQ0FBQyxXQUFXLEtBQUssV0FBVyxJQUFJLElBQUksR0FBRyxJQUFJLENBQUMsV0FBVztZQUNwRSxNQUFNLElBQUksV0FBVyxDQUNuQixxREFBcUQsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUN4RSxDQUFDO1FBQ0osT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0NBR0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBQYWdpbmdFcnJvciB9IGZyb20gXCIuL2Vycm9yc1wiO1xuaW1wb3J0IHsgU3RhdGVtZW50IH0gZnJvbSBcIi4vU3RhdGVtZW50XCI7XG5cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBQYWdpbmF0b3I8ViwgUT4ge1xuICBwcm90ZWN0ZWQgX2N1cnJlbnRQYWdlITogbnVtYmVyO1xuICBwcm90ZWN0ZWQgX3RvdGFsUGFnZXMhOiBudW1iZXI7XG4gIHByb3RlY3RlZCBfcmVjb3JkQ291bnQhOiBudW1iZXI7XG4gIHByb3RlY3RlZCBsaW1pdCE6IG51bWJlcjtcblxuICBwcml2YXRlIF9zdGF0ZW1lbnQ/OiBRO1xuXG4gIGdldCBjdXJyZW50KCkge1xuICAgIHJldHVybiB0aGlzLl9jdXJyZW50UGFnZTtcbiAgfVxuXG4gIGdldCB0b3RhbCgpIHtcbiAgICByZXR1cm4gdGhpcy5fdG90YWxQYWdlcztcbiAgfVxuXG4gIGdldCBjb3VudCgpOiBudW1iZXIge1xuICAgIHJldHVybiB0aGlzLl9yZWNvcmRDb3VudDtcbiAgfVxuXG4gIGdldCBzdGF0ZW1lbnQoKSB7XG4gICAgaWYgKCF0aGlzLl9zdGF0ZW1lbnQpIHRoaXMuX3N0YXRlbWVudCA9IHRoaXMucHJlcGFyZSh0aGlzLl9yYXdTdGF0ZW1lbnQpO1xuICAgIHJldHVybiB0aGlzLl9zdGF0ZW1lbnQ7XG4gIH1cblxuICBwcm90ZWN0ZWQgZ2V0IGFkYXB0ZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuc3RhdC5nZXRBZGFwdGVyKCk7XG4gIH1cblxuICBwcm90ZWN0ZWQgY29uc3RydWN0b3IoXG4gICAgcHJvdGVjdGVkIHN0YXQ6IFN0YXRlbWVudDxRPixcbiAgICByZWFkb25seSBzaXplOiBudW1iZXIsXG4gICAgcHJvdGVjdGVkIHJlYWRvbmx5IF9yYXdTdGF0ZW1lbnQ6IFFcbiAgKSB7fVxuXG4gIHByb3RlY3RlZCBhYnN0cmFjdCBwcmVwYXJlKHJhd1N0YXRlbWVudDogUSk6IFE7XG5cbiAgYXN5bmMgbmV4dCgpIHtcbiAgICByZXR1cm4gdGhpcy5wYWdlKHRoaXMuY3VycmVudCArIDEpO1xuICB9XG5cbiAgYXN5bmMgcHJldmlvdXMoKSB7XG4gICAgcmV0dXJuIHRoaXMucGFnZSh0aGlzLmN1cnJlbnQgLSAxKTtcbiAgfVxuXG4gIHByb3RlY3RlZCB2YWxpZGF0ZVBhZ2UocGFnZTogbnVtYmVyKSB7XG4gICAgaWYgKHBhZ2UgPCAxIHx8ICFOdW1iZXIuaXNJbnRlZ2VyKHBhZ2UpKVxuICAgICAgdGhyb3cgbmV3IFBhZ2luZ0Vycm9yKFxuICAgICAgICBcInBhZ2UgbnVtYmVyIGNhbm5vdCBiZSB1bmRlciAxIGFuZCBtdXN0IGJlIGFuIGludGVnZXJcIlxuICAgICAgKTtcbiAgICBpZiAodHlwZW9mIHRoaXMuX3RvdGFsUGFnZXMgIT09IFwidW5kZWZpbmVkXCIgJiYgcGFnZSA+IHRoaXMuX3RvdGFsUGFnZXMpXG4gICAgICB0aHJvdyBuZXcgUGFnaW5nRXJyb3IoXG4gICAgICAgIGBSZXF1ZXN0ZWQgbW9yZSBwYWdlcyB0aGFuIGF2YWlsYWJsZS4gVG90YWwgcGFnZXM6ICR7dGhpcy5fdG90YWxQYWdlc31gXG4gICAgICApO1xuICAgIHJldHVybiBwYWdlO1xuICB9XG5cbiAgYWJzdHJhY3QgcGFnZShwYWdlPzogbnVtYmVyLCAuLi5hcmdzOiBhbnlbXSk6IFByb21pc2U8VltdPjtcbn1cbiJdfQ==
|
package/lib/esm/query/Query.d.ts
CHANGED
@@ -13,7 +13,7 @@ import { Model } from "@decaf-ts/decorator-validation";
|
|
13
13
|
*/
|
14
14
|
export declare class Query<Q, M extends Model> {
|
15
15
|
private adapter;
|
16
|
-
constructor(adapter: Adapter<any, Q>);
|
16
|
+
constructor(adapter: Adapter<any, Q, any, any>);
|
17
17
|
/**
|
18
18
|
* @summary Creates a Select Clause
|
19
19
|
* @param {SelectSelector} [selector]
|
package/lib/esm/query/Query.js
CHANGED
@@ -51,4 +51,4 @@ export class Query {
|
|
51
51
|
return this.adapter.Clauses.insert();
|
52
52
|
}
|
53
53
|
}
|
54
|
-
//# sourceMappingURL=data:application/json;base64,
|
54
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUXVlcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcXVlcnkvUXVlcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBVUEsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUdwQzs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sT0FBTyxLQUFLO0lBQ2hCLFlBQW9CLE9BQWtDO1FBQWxDLFlBQU8sR0FBUCxPQUFPLENBQTJCO0lBQUcsQ0FBQztJQUUxRDs7O09BR0c7SUFDSCxNQUFNLENBQUMsV0FBMkIsS0FBSyxDQUFDLFdBQVc7UUFDakQsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUksUUFBUSxDQUFDLENBQUM7SUFDbEQsQ0FBQztJQUNEOzs7T0FHRztJQUNILEdBQUcsQ0FBQyxRQUF3QjtRQUMxQixPQUFPLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUNEOzs7T0FHRztJQUNILEdBQUcsQ0FBQyxRQUF3QjtRQUMxQixPQUFPLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUNEOzs7T0FHRztJQUNILFFBQVEsQ0FBQyxRQUF3QjtRQUMvQixPQUFPLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUNEOzs7T0FHRztJQUNILEtBQUssQ0FBQyxRQUF5QjtRQUM3QixPQUFPLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxLQUFLLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDdkMsQ0FBQztJQUVELE1BQU07UUFDSixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBSyxDQUFDO0lBQzFDLENBQUM7Q0FDRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIENvdW50T3B0aW9uLFxuICBEaXN0aW5jdE9wdGlvbixcbiAgSW5zZXJ0T3B0aW9uLFxuICBNYXhPcHRpb24sXG4gIE1pbk9wdGlvbixcbiAgU2VsZWN0T3B0aW9uLFxufSBmcm9tIFwiLi9vcHRpb25zXCI7XG5pbXBvcnQgeyBTZWxlY3RTZWxlY3RvciB9IGZyb20gXCIuL3NlbGVjdG9yc1wiO1xuaW1wb3J0IHsgQWRhcHRlciB9IGZyb20gXCIuLi9wZXJzaXN0ZW5jZVwiO1xuaW1wb3J0IHsgQ29uc3QgfSBmcm9tIFwiLi9jb25zdGFudHNcIjtcbmltcG9ydCB7IE1vZGVsIH0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0b3ItdmFsaWRhdGlvblwiO1xuXG4vKipcbiAqIEBzdW1tYXJ5IEhlbHBlciBDbGFzcyB0byBidWlsZCBxdWVyaWVzXG4gKlxuICogQHBhcmFtIHtEYXRhYmFzZX0gZGJcbiAqXG4gKiBAY2xhc3MgUXVlcnlcbiAqXG4gKiBAY2F0ZWdvcnkgUXVlcnlcbiAqL1xuZXhwb3J0IGNsYXNzIFF1ZXJ5PFEsIE0gZXh0ZW5kcyBNb2RlbD4ge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGFkYXB0ZXI6IEFkYXB0ZXI8YW55LCBRLCBhbnksIGFueT4pIHt9XG5cbiAgLyoqXG4gICAqIEBzdW1tYXJ5IENyZWF0ZXMgYSBTZWxlY3QgQ2xhdXNlXG4gICAqIEBwYXJhbSB7U2VsZWN0U2VsZWN0b3J9IFtzZWxlY3Rvcl1cbiAgICovXG4gIHNlbGVjdChzZWxlY3RvcjogU2VsZWN0U2VsZWN0b3IgPSBDb25zdC5GVUxMX1JFQ09SRCk6IFNlbGVjdE9wdGlvbjxNPiB7XG4gICAgcmV0dXJuIHRoaXMuYWRhcHRlci5DbGF1c2VzLnNlbGVjdDxNPihzZWxlY3Rvcik7XG4gIH1cbiAgLyoqXG4gICAqIEBzdW1tYXJ5IENyZWF0ZXMgYSBNaW4gQ2xhdXNlXG4gICAqIEBwYXJhbSB7U2VsZWN0U2VsZWN0b3J9IHNlbGVjdG9yXG4gICAqL1xuICBtaW4oc2VsZWN0b3I6IFNlbGVjdFNlbGVjdG9yKTogTWluT3B0aW9uPE0+IHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3QoKS5taW4oc2VsZWN0b3IpO1xuICB9XG4gIC8qKlxuICAgKiBAc3VtbWFyeSBDcmVhdGVzIGEgTWF4IENsYXVzZVxuICAgKiBAcGFyYW0ge1NlbGVjdFNlbGVjdG9yfSBzZWxlY3RvclxuICAgKi9cbiAgbWF4KHNlbGVjdG9yOiBTZWxlY3RTZWxlY3Rvcik6IE1heE9wdGlvbjxNPiB7XG4gICAgcmV0dXJuIHRoaXMuc2VsZWN0KCkubWF4KHNlbGVjdG9yKTtcbiAgfVxuICAvKipcbiAgICogQHN1bW1hcnkgQ3JlYXRlcyBhIERpc3RpbmN0IENsYXVzZVxuICAgKiBAcGFyYW0ge1NlbGVjdFNlbGVjdG9yfSBzZWxlY3RvclxuICAgKi9cbiAgZGlzdGluY3Qoc2VsZWN0b3I6IFNlbGVjdFNlbGVjdG9yKTogRGlzdGluY3RPcHRpb248TT4ge1xuICAgIHJldHVybiB0aGlzLnNlbGVjdCgpLmRpc3RpbmN0KHNlbGVjdG9yKTtcbiAgfVxuICAvKipcbiAgICogQHN1bW1hcnkgQ3JlYXRlcyBhIENvdW50IENsYXVzZVxuICAgKiBAcGFyYW0ge1NlbGVjdFNlbGVjdG9yfSBzZWxlY3RvclxuICAgKi9cbiAgY291bnQoc2VsZWN0b3I/OiBTZWxlY3RTZWxlY3Rvcik6IENvdW50T3B0aW9uPE0+IHtcbiAgICByZXR1cm4gdGhpcy5zZWxlY3QoKS5jb3VudChzZWxlY3Rvcik7XG4gIH1cblxuICBpbnNlcnQoKTogSW5zZXJ0T3B0aW9uPE0+IHtcbiAgICByZXR1cm4gdGhpcy5hZGFwdGVyLkNsYXVzZXMuaW5zZXJ0PE0+KCk7XG4gIH1cbn1cbiJdfQ==
|
@@ -20,11 +20,11 @@ import { Paginator } from "./Paginator";
|
|
20
20
|
*/
|
21
21
|
export declare abstract class Statement<Q> extends Model implements Executor, RawExecutor<Q> {
|
22
22
|
protected clauses?: Clause<any>[];
|
23
|
-
protected adapter: Adapter<any, Q>;
|
23
|
+
protected adapter: Adapter<any, Q, any, any>;
|
24
24
|
protected target?: Constructor<any>;
|
25
25
|
protected fullRecord: boolean;
|
26
26
|
protected type?: string;
|
27
|
-
protected constructor(db: Adapter<any, Q>);
|
27
|
+
protected constructor(db: Adapter<any, Q, any, any>);
|
28
28
|
protected build(): Q;
|
29
29
|
/**
|
30
30
|
* @inheritDoc
|
@@ -44,7 +44,7 @@ export declare abstract class Statement<Q> extends Model implements Executor, Ra
|
|
44
44
|
* @param {Clause} clause
|
45
45
|
*/
|
46
46
|
addClause(clause: Clause<Q>): void;
|
47
|
-
getAdapter(): Adapter<any, Q>;
|
47
|
+
getAdapter(): Adapter<any, Q, any, any>;
|
48
48
|
/**
|
49
49
|
* @summary Defines the output class (when existing)
|
50
50
|
* @param {Constructor} clazz
|
@@ -159,4 +159,4 @@ __decorate([
|
|
159
159
|
required(),
|
160
160
|
__metadata("design:type", String)
|
161
161
|
], Statement.prototype, "type", void 0);
|
162
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3RhdGVtZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3F1ZXJ5L1N0YXRlbWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFDQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFFTCxRQUFRLEVBQ1IsSUFBSSxFQUNKLEVBQUUsR0FDSCxNQUFNLGdDQUFnQyxDQUFDO0FBRXhDLE9BQU8sRUFBRSxtQkFBbUIsRUFBaUIsTUFBTSxhQUFhLENBQUM7QUFDakUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUV0QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9DLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6QyxPQUFPLEVBQUUsY0FBYyxFQUFFLGFBQWEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBR3hFOzs7Ozs7Ozs7Ozs7R0FZRztBQUNILE1BQU0sT0FBZ0IsU0FDcEIsU0FBUSxLQUFLO0lBa0JiLFlBQXNCLEVBQW1CO1FBQ3ZDLEtBQUssRUFBRSxDQUFDO1FBYkEsWUFBTyxHQUFtQixTQUFTLENBQUM7UUFLcEMsV0FBTSxHQUFzQixTQUFTLENBQUM7UUFFdEMsZUFBVSxHQUFZLEtBQUssQ0FBQztRQUc1QixTQUFJLEdBQVksU0FBUyxDQUFDO1FBSWxDLElBQUksQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO0lBQ3BCLENBQUM7SUFFUyxLQUFLO1FBQ2IsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPO1lBQ2YsTUFBTSxJQUFJLFVBQVUsQ0FBQyxFQUFFLENBQUMsaUNBQWlDLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQztRQUM1RSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRTtZQUMzQixPQUFPLEVBQUUsQ0FBQyxXQUFXLEVBQUUsR0FBRyxFQUFFLENBQUMsV0FB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QztJQUVELFNBQVM7UUFDUCxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU07WUFDZCxNQUFNLElBQUksYUFBYSxDQUFDLGlDQUFpQyxDQUFDLENBQUM7UUFDN0QsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxhQUFhO1FBQ1gsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7SUFDekIsQ0FBQztJQUVELE9BQU8sQ0FBQyxJQUFtQjtRQUN6QixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztJQUNuQixDQUFDO0NBQ0Y7QUF0Slc7SUFIVCxRQUFRLEVBQUU7SUFDVixTQUFTLENBQUMsbUJBQW1CLENBQUMsTUFBTSxDQUFDO0lBQ3JDLGNBQWMsRUFBRTs7MENBQzZCO0FBR3BDO0lBRlQsUUFBUSxFQUFFO0lBQ1YsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUM7OEJBQ0UsT0FBTzswQ0FBUztBQUV6QjtJQURULFFBQVEsRUFBRTs7eUNBQ3FDO0FBS3RDO0lBRFQsUUFBUSxFQUFFOzt1Q0FDeUIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IENvbnN0cnVjdG9yIH0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0b3ItdmFsaWRhdGlvblwiO1xuaW1wb3J0IHtcbiAgbWlubGVuZ3RoLFxuICBNb2RlbCxcbiAgTW9kZWxFcnJvckRlZmluaXRpb24sXG4gIHJlcXVpcmVkLFxuICB0eXBlLFxuICBzZixcbn0gZnJvbSBcIkBkZWNhZi10cy9kZWNvcmF0b3ItdmFsaWRhdGlvblwiO1xuaW1wb3J0IHsgRXhlY3V0b3IsIFJhd0V4ZWN1dG9yIH0gZnJvbSBcIi4uL2ludGVyZmFjZXNcIjtcbmltcG9ydCB7IE1hbmRhdG9yeVByaW9yaXRpZXMsIFN0YXRlbWVudFR5cGUgfSBmcm9tIFwiLi9jb25zdGFudHNcIjtcbmltcG9ydCB7IFF1ZXJ5RXJyb3IgfSBmcm9tIFwiLi9lcnJvcnNcIjtcbmltcG9ydCB7IENsYXVzZSB9IGZyb20gXCIuL0NsYXVzZVwiO1xuaW1wb3J0IHsgY2xhdXNlU2VxdWVuY2UgfSBmcm9tIFwiLi4vdmFsaWRhdG9yc1wiO1xuaW1wb3J0IHsgQWRhcHRlciB9IGZyb20gXCIuLi9wZXJzaXN0ZW5jZVwiO1xuaW1wb3J0IHsgZmluZFByaW1hcnlLZXksIEludGVybmFsRXJyb3IgfSBmcm9tIFwiQGRlY2FmLXRzL2RiLWRlY29yYXRvcnNcIjtcbmltcG9ydCB7IFBhZ2luYXRvciB9IGZyb20gXCIuL1BhZ2luYXRvclwiO1xuXG4vKipcbiAqIEBzdW1tYXJ5IFN0YXRlbWVudCBDbGFzc1xuICogQGRlc2NyaXB0aW9uIGhvbGRzIGFsbCB0aGUgY2xhdXNlcyB1bnRpbCB0aGV5IGNhbiBiZSBwcm9jZXNzZWRcbiAqXG4gKiBAcGFyYW0ge01vZGVsQXJnfSBbc3RhdGVtZW50XVxuICpcbiAqIEBjbGFzcyBTdGF0ZW1lbnRcbiAqIEBleHRlbmRzIE1vZGVsXG4gKiBAaW1wbGVtZW50cyBFeGVjdXRvclxuICogQGltcGxlbWVudHMgUmF3RXhlY3V0b3JcbiAqXG4gKiBAY2F0ZWdvcnkgUXVlcnlcbiAqL1xuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFN0YXRlbWVudDxRPlxuICBleHRlbmRzIE1vZGVsXG4gIGltcGxlbWVudHMgRXhlY3V0b3IsIFJhd0V4ZWN1dG9yPFE+XG57XG4gIEByZXF1aXJlZCgpXG4gIEBtaW5sZW5ndGgoTWFuZGF0b3J5UHJpb3JpdGllcy5sZW5ndGgpXG4gIEBjbGF1c2VTZXF1ZW5jZSgpXG4gIHByb3RlY3RlZCBjbGF1c2VzPzogQ2xhdXNlPGFueT5bXSA9IHVuZGVmaW5lZDtcbiAgQHJlcXVpcmVkKClcbiAgQHR5cGUoW1wib2JqZWN0XCJdKVxuICBwcm90ZWN0ZWQgYWRhcHRlcjogQWRhcHRlcjxhbnksIFE+O1xuICBAcmVxdWlyZWQoKVxuICBwcm90ZWN0ZWQgdGFyZ2V0PzogQ29uc3RydWN0b3I8YW55PiA9IHVuZGVmaW5lZDtcblxuICBwcm90ZWN0ZWQgZnVsbFJlY29yZDogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIEByZXF1aXJlZCgpXG4gIHByb3RlY3RlZCB0eXBlPzogc3RyaW5nID0gdW5kZWZpbmVkO1xuXG4gIHByb3RlY3RlZCBjb25zdHJ1Y3RvcihkYjogQWRhcHRlcjxhbnksIFE+KSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmFkYXB0ZXIgPSBkYjtcbiAgfVxuXG4gIHByb3RlY3RlZCBidWlsZCgpOiBRIHtcbiAgICBpZiAoIXRoaXMuY2xhdXNlcylcbiAgICAgIHRocm93IG5ldyBRdWVyeUVycm9yKHNmKFwiRmFpbGVkIHRvIGJ1aWxkIFN0YXRlbWVudDpcXG57MH1cIiwgXCJObyBDbGF1c2VzXCIpKTtcbiAgICB0aGlzLmNsYXVzZXMuc29ydCgoYzEsIGMyKSA9PiB7XG4gICAgICByZXR1cm4gYzEuZ2V0UHJpb3JpdHkoKSAtIGMyLmdldFByaW9yaXR5KCk7XG4gICAgfSk7XG5cbiAgICBjb25zdCBlcnJvcnMgPSB0aGlzLmhhc0Vycm9ycygpO1xuICAgIGlmIChlcnJvcnMpXG4gICAgICB0aHJvdyBuZXcgUXVlcnlFcnJvcihcbiAgICAgICAgc2YoXCJQb29ybHkgYnVpbHQgc3RhdGVtZW50OiB7MH1cIiwgZXJyb3JzLnRvU3RyaW5nKCkpXG4gICAgICApO1xuXG4gICAgbGV0IHF1ZXJ5OiBRO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBpdGVyYXRvciA9IGZ1bmN0aW9uIChcbiAgICAgICAgY2xhdXNlczogQ2xhdXNlPGFueT5bXSxcbiAgICAgICAgcHJldmlvdXM6IGFueSA9IHt9XG4gICAgICApOiBRIHtcbiAgICAgICAgY29uc3QgYyA9IGNsYXVzZXMuc2hpZnQoKTtcbiAgICAgICAgaWYgKCFjKSByZXR1cm4gcHJldmlvdXMgYXMgUTtcbiAgICAgICAgY29uc3QgcmVzdWx0cyA9IGMuYnVpbGQocHJldmlvdXMpO1xuICAgICAgICByZXR1cm4gaXRlcmF0b3IoY2xhdXNlcywgcmVzdWx0cyBhcyBhbnkpO1xuICAgICAgfTtcblxuICAgICAgcXVlcnkgPSBpdGVyYXRvcihuZXcgQXJyYXkoLi4uKHRoaXMuY2xhdXNlcyBhcyBDbGF1c2U8UT5bXSkpKSBhcyBRO1xuICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgdGhyb3cgbmV3IFF1ZXJ5RXJyb3IoZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHF1ZXJ5O1xuICB9XG5cbiAgLyoqXG4gICAqIEBpbmhlcml0RG9jXG4gICAqL1xuICBhc3luYyBleGVjdXRlPFk+KCk6IFByb21pc2U8WT4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBxdWVyeTogUSA9IHRoaXMuYnVpbGQoKTtcbiAgICAgIHJldHVybiB0aGlzLnJhdyhxdWVyeSk7XG4gICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQGluaGVyaXREb2NcbiAgICovXG4gIGFic3RyYWN0IHBhZ2luYXRlPFk+KHNpemU6IG51bWJlcik6IFByb21pc2U8UGFnaW5hdG9yPFksIFE+PjtcblxuICBhc3luYyByYXc8Uj4ocmF3SW5wdXQ6IFEsIC4uLmFyZ3M6IGFueVtdKTogUHJvbWlzZTxSPiB7XG4gICAgY29uc3QgcmVzdWx0cyA9IGF3YWl0IHRoaXMuYWRhcHRlci5yYXc8Uj4ocmF3SW5wdXQsIHRydWUsIC4uLmFyZ3MpO1xuICAgIGlmICghdGhpcy5mdWxsUmVjb3JkKSByZXR1cm4gcmVzdWx0cztcbiAgICBpZiAoIXRoaXMudGFyZ2V0KVxuICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoXG4gICAgICAgIFwiTm8gdGFyZ2V0IGRlZmluZWQgaW4gc3RhdGVtZW50LiBzaG91bGQgbmV2ZXIgaGFwcGVuXCJcbiAgICAgICk7XG5cbiAgICBjb25zdCBwa0F0dHIgPSBmaW5kUHJpbWFyeUtleShuZXcgdGhpcy50YXJnZXQoKSBhcyBhbnkpLmlkO1xuXG4gICAgY29uc3QgcHJvY2Vzc29yID0gZnVuY3Rpb24gcmVjb3JkUHJvY2Vzc29yKHRoaXM6IFN0YXRlbWVudDxRPiwgcjogYW55KSB7XG4gICAgICBjb25zdCBpZCA9IHJbcGtBdHRyXTtcbiAgICAgIHJldHVybiB0aGlzLmFkYXB0ZXIucmV2ZXJ0KFxuICAgICAgICByLFxuICAgICAgICB0aGlzLnRhcmdldCBhcyBDb25zdHJ1Y3Rvcjxhbnk+LFxuICAgICAgICBwa0F0dHIsXG4gICAgICAgIGlkXG4gICAgICApIGFzIGFueTtcbiAgICB9LmJpbmQodGhpcyk7XG5cbiAgICBpZiAoQXJyYXkuaXNBcnJheShyZXN1bHRzKSkgcmV0dXJuIHJlc3VsdHMubWFwKHByb2Nlc3NvcikgYXMgUjtcbiAgICByZXR1cm4gcHJvY2Vzc29yKHJlc3VsdHMpIGFzIFI7XG4gIH1cblxuICAvKipcbiAgICogQGluaGVyaXREb2NcbiAgICovXG4gIGhhc0Vycm9ycyguLi5leGNlcHRpb25zOiBzdHJpbmdbXSk6IE1vZGVsRXJyb3JEZWZpbml0aW9uIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBlcnJvcnMgPSBzdXBlci5oYXNFcnJvcnMoLi4uZXhjZXB0aW9ucyk7XG4gICAgaWYgKGVycm9ycykgcmV0dXJuIGVycm9ycztcblxuICAgIGZvciAoY29uc3QgaSBpbiB0aGlzLmNsYXVzZXMpIHtcbiAgICAgIGNvbnN0IGVyciA9IHRoaXMuY2xhdXNlc1tpIGFzIGFueV0uaGFzRXJyb3JzKCk7XG4gICAgICBpZiAoZXJyKSByZXR1cm4gZXJyO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAc3VtbWFyeSBBZGRzIGEgY2xhdXNlIHRvIHRoZSBTdGF0ZW1lbnRcbiAgICogQHBhcmFtIHtDbGF1c2V9IGNsYXVzZVxuICAgKi9cbiAgYWRkQ2xhdXNlKGNsYXVzZTogQ2xhdXNlPFE+KSB7XG4gICAgaWYgKCF0aGlzLmNsYXVzZXMpIHRoaXMuY2xhdXNlcyA9IFtdO1xuXG4gICAgY29uc3QgcHJpb3JpdHkgPSBjbGF1c2UuZ2V0UHJpb3JpdHkoKTtcbiAgICBjb25zdCBjdXJyZW50UHJpb3JpdHkgPSB0aGlzLmNsYXVzZXNcbiAgICAgIC5tYXAoKGMsIGkpID0+ICh7IGluZGV4OiBpLCBjbGF1c2U6IGMgfSkpXG4gICAgICAuZmluZCgoYykgPT4gYy5jbGF1c2UuZ2V0UHJpb3JpdHkoKSA9PT0gcHJpb3JpdHkpO1xuICAgIGlmIChjdXJyZW50UHJpb3JpdHkpIHtcbiAgICAgIHRoaXMuY2xhdXNlc1tjdXJyZW50UHJpb3JpdHkuaW5kZXhdID0gY2xhdXNlO1xuICAgIH1cbiAgICB0aGlzLmNsYXVzZXMucHVzaChjbGF1c2UpO1xuICB9XG5cbiAgZ2V0QWRhcHRlcigpOiBBZGFwdGVyPGFueSwgUT4ge1xuICAgIHJldHVybiB0aGlzLmFkYXB0ZXI7XG4gIH1cblxuICAvKipcbiAgICogQHN1bW1hcnkgRGVmaW5lcyB0aGUgb3V0cHV0IGNsYXNzICh3aGVuIGV4aXN0aW5nKVxuICAgKiBAcGFyYW0ge0NvbnN0cnVjdG9yfSBjbGF6elxuICAgKi9cbiAgc2V0VGFyZ2V0KGNsYXp6OiBDb25zdHJ1Y3Rvcjxhbnk+KSB7XG4gICAgaWYgKHRoaXMudGFyZ2V0KVxuICAgICAgdGhyb3cgbmV3IFF1ZXJ5RXJyb3IoXG4gICAgICAgIHNmKFwiT3V0cHV0IGNsYXNzIGFscmVhZHkgZGVmaW5lZCB0byB7MH1cIiwgdGhpcy50YXJnZXQhLm5hbWUpXG4gICAgICApO1xuICAgIHRoaXMudGFyZ2V0ID0gY2xheno7XG4gIH1cblxuICBnZXRUYXJnZXQoKSB7XG4gICAgaWYgKCF0aGlzLnRhcmdldClcbiAgICAgIHRocm93IG5ldyBJbnRlcm5hbEVycm9yKFwiTm8gdGFyZ2V0IGRlZmluZWQgZm9yIHN0YXRlbWVudFwiKTtcbiAgICByZXR1cm4gdGhpcy50YXJnZXQ7XG4gIH1cblxuICBzZXRGdWxsUmVjb3JkKCkge1xuICAgIHRoaXMuZnVsbFJlY29yZCA9IHRydWU7XG4gIH1cblxuICBzZXRNb2RlKHR5cGU6IFN0YXRlbWVudFR5cGUpIHtcbiAgICB0aGlzLnR5cGUgPSB0eXBlO1xuICB9XG59XG4iXX0=
|
162
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU3RhdGVtZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3F1ZXJ5L1N0YXRlbWVudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFDQSxPQUFPLEVBQ0wsU0FBUyxFQUNULEtBQUssRUFFTCxRQUFRLEVBQ1IsSUFBSSxFQUNKLEVBQUUsR0FDSCxNQUFNLGdDQUFnQyxDQUFDO0FBRXhDLE9BQU8sRUFBRSxtQkFBbUIsRUFBaUIsTUFBTSxhQUFhLENBQUM7QUFDakUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFVBQVUsQ0FBQztBQUV0QyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQy9DLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUN6QyxPQUFPLEVBQUUsY0FBYyxFQUFFLGFBQWEsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBR3hFOzs7Ozs7Ozs7Ozs7R0FZRztBQUNILE1BQU0sT0FBZ0IsU0FDcEIsU0FBUSxLQUFLO0lBa0JiLFlBQXNCLEVBQTZCO1FBQ2pELEtBQUssRUFBRSxDQUFDO1FBYkEsWUFBTyxHQUFtQixTQUFTLENBQUM7UUFLcEMsV0FBTSxHQUFzQixTQUFTLENBQUM7UUFFdEMsZUFBVSxHQUFZLEtBQUssQ0FBQztRQUc1QixTQUFJLEdBQVksU0FBUyxDQUFDO1FBSWxDLElBQUksQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO0lBQ3BCLENBQUM7SUFFUyxLQUFLO1FBQ2IsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPO1lBQ2YsTUFBTSxJQUFJLFVBQVUsQ0FBQyxFQUFFLENBQUMsaUNBQWlDLEVBQUUsWUFBWSxDQUFDLENBQUMsQ0FBQztRQUM1RSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRTtZQUMzQixPQUFPLEVBQUUsQ0FBQyxXQUFXLEVBQUUsR0FBRyxFQUFFLENBQUMsV0FB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QztJQUVELFNBQVM7UUFDUCxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU07WUFDZCxNQUFNLElBQUksYUFBYSxDQUFDLGlDQUFpQyxDQUFDLENBQUM7UUFDN0QsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxhQUFhO1FBQ1gsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLENBQUM7SUFDekIsQ0FBQztJQUVELE9BQU8sQ0FBQyxJQUFtQjtRQUN6QixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztJQUNuQixDQUFDO0NBQ0Y7QUF0Slc7SUFIVCxRQUFRLEVBQUU7SUFDVixTQUFTLENBQUMsbUJBQW1CLENBQUMsTUFBTSxDQUFDO0lBQ3JDLGNBQWMsRUFBRTs7MENBQzZCO0FBR3BDO0lBRlQsUUFBUSxFQUFFO0lBQ1YsSUFBSSxDQUFDLENBQUMsUUFBUSxDQUFDLENBQUM7OEJBQ0UsT0FBTzswQ0FBbUI7QUFFbkM7SUFEVCxRQUFRLEVBQUU7O3lDQUNxQztBQUt0QztJQURULFFBQVEsRUFBRTs7dUNBQ3lCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBDb25zdHJ1Y3RvciB9IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdG9yLXZhbGlkYXRpb25cIjtcbmltcG9ydCB7XG4gIG1pbmxlbmd0aCxcbiAgTW9kZWwsXG4gIE1vZGVsRXJyb3JEZWZpbml0aW9uLFxuICByZXF1aXJlZCxcbiAgdHlwZSxcbiAgc2YsXG59IGZyb20gXCJAZGVjYWYtdHMvZGVjb3JhdG9yLXZhbGlkYXRpb25cIjtcbmltcG9ydCB7IEV4ZWN1dG9yLCBSYXdFeGVjdXRvciB9IGZyb20gXCIuLi9pbnRlcmZhY2VzXCI7XG5pbXBvcnQgeyBNYW5kYXRvcnlQcmlvcml0aWVzLCBTdGF0ZW1lbnRUeXBlIH0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5pbXBvcnQgeyBRdWVyeUVycm9yIH0gZnJvbSBcIi4vZXJyb3JzXCI7XG5pbXBvcnQgeyBDbGF1c2UgfSBmcm9tIFwiLi9DbGF1c2VcIjtcbmltcG9ydCB7IGNsYXVzZVNlcXVlbmNlIH0gZnJvbSBcIi4uL3ZhbGlkYXRvcnNcIjtcbmltcG9ydCB7IEFkYXB0ZXIgfSBmcm9tIFwiLi4vcGVyc2lzdGVuY2VcIjtcbmltcG9ydCB7IGZpbmRQcmltYXJ5S2V5LCBJbnRlcm5hbEVycm9yIH0gZnJvbSBcIkBkZWNhZi10cy9kYi1kZWNvcmF0b3JzXCI7XG5pbXBvcnQgeyBQYWdpbmF0b3IgfSBmcm9tIFwiLi9QYWdpbmF0b3JcIjtcblxuLyoqXG4gKiBAc3VtbWFyeSBTdGF0ZW1lbnQgQ2xhc3NcbiAqIEBkZXNjcmlwdGlvbiBob2xkcyBhbGwgdGhlIGNsYXVzZXMgdW50aWwgdGhleSBjYW4gYmUgcHJvY2Vzc2VkXG4gKlxuICogQHBhcmFtIHtNb2RlbEFyZ30gW3N0YXRlbWVudF1cbiAqXG4gKiBAY2xhc3MgU3RhdGVtZW50XG4gKiBAZXh0ZW5kcyBNb2RlbFxuICogQGltcGxlbWVudHMgRXhlY3V0b3JcbiAqIEBpbXBsZW1lbnRzIFJhd0V4ZWN1dG9yXG4gKlxuICogQGNhdGVnb3J5IFF1ZXJ5XG4gKi9cbmV4cG9ydCBhYnN0cmFjdCBjbGFzcyBTdGF0ZW1lbnQ8UT5cbiAgZXh0ZW5kcyBNb2RlbFxuICBpbXBsZW1lbnRzIEV4ZWN1dG9yLCBSYXdFeGVjdXRvcjxRPlxue1xuICBAcmVxdWlyZWQoKVxuICBAbWlubGVuZ3RoKE1hbmRhdG9yeVByaW9yaXRpZXMubGVuZ3RoKVxuICBAY2xhdXNlU2VxdWVuY2UoKVxuICBwcm90ZWN0ZWQgY2xhdXNlcz86IENsYXVzZTxhbnk+W10gPSB1bmRlZmluZWQ7XG4gIEByZXF1aXJlZCgpXG4gIEB0eXBlKFtcIm9iamVjdFwiXSlcbiAgcHJvdGVjdGVkIGFkYXB0ZXI6IEFkYXB0ZXI8YW55LCBRLCBhbnksIGFueT47XG4gIEByZXF1aXJlZCgpXG4gIHByb3RlY3RlZCB0YXJnZXQ/OiBDb25zdHJ1Y3Rvcjxhbnk+ID0gdW5kZWZpbmVkO1xuXG4gIHByb3RlY3RlZCBmdWxsUmVjb3JkOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQHJlcXVpcmVkKClcbiAgcHJvdGVjdGVkIHR5cGU/OiBzdHJpbmcgPSB1bmRlZmluZWQ7XG5cbiAgcHJvdGVjdGVkIGNvbnN0cnVjdG9yKGRiOiBBZGFwdGVyPGFueSwgUSwgYW55LCBhbnk+KSB7XG4gICAgc3VwZXIoKTtcbiAgICB0aGlzLmFkYXB0ZXIgPSBkYjtcbiAgfVxuXG4gIHByb3RlY3RlZCBidWlsZCgpOiBRIHtcbiAgICBpZiAoIXRoaXMuY2xhdXNlcylcbiAgICAgIHRocm93IG5ldyBRdWVyeUVycm9yKHNmKFwiRmFpbGVkIHRvIGJ1aWxkIFN0YXRlbWVudDpcXG57MH1cIiwgXCJObyBDbGF1c2VzXCIpKTtcbiAgICB0aGlzLmNsYXVzZXMuc29ydCgoYzEsIGMyKSA9PiB7XG4gICAgICByZXR1cm4gYzEuZ2V0UHJpb3JpdHkoKSAtIGMyLmdldFByaW9yaXR5KCk7XG4gICAgfSk7XG5cbiAgICBjb25zdCBlcnJvcnMgPSB0aGlzLmhhc0Vycm9ycygpO1xuICAgIGlmIChlcnJvcnMpXG4gICAgICB0aHJvdyBuZXcgUXVlcnlFcnJvcihcbiAgICAgICAgc2YoXCJQb29ybHkgYnVpbHQgc3RhdGVtZW50OiB7MH1cIiwgZXJyb3JzLnRvU3RyaW5nKCkpXG4gICAgICApO1xuXG4gICAgbGV0IHF1ZXJ5OiBRO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBpdGVyYXRvciA9IGZ1bmN0aW9uIChcbiAgICAgICAgY2xhdXNlczogQ2xhdXNlPGFueT5bXSxcbiAgICAgICAgcHJldmlvdXM6IGFueSA9IHt9XG4gICAgICApOiBRIHtcbiAgICAgICAgY29uc3QgYyA9IGNsYXVzZXMuc2hpZnQoKTtcbiAgICAgICAgaWYgKCFjKSByZXR1cm4gcHJldmlvdXMgYXMgUTtcbiAgICAgICAgY29uc3QgcmVzdWx0cyA9IGMuYnVpbGQocHJldmlvdXMpO1xuICAgICAgICByZXR1cm4gaXRlcmF0b3IoY2xhdXNlcywgcmVzdWx0cyBhcyBhbnkpO1xuICAgICAgfTtcblxuICAgICAgcXVlcnkgPSBpdGVyYXRvcihuZXcgQXJyYXkoLi4uKHRoaXMuY2xhdXNlcyBhcyBDbGF1c2U8UT5bXSkpKSBhcyBRO1xuICAgIH0gY2F0Y2ggKGU6IGFueSkge1xuICAgICAgdGhyb3cgbmV3IFF1ZXJ5RXJyb3IoZSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHF1ZXJ5O1xuICB9XG5cbiAgLyoqXG4gICAqIEBpbmhlcml0RG9jXG4gICAqL1xuICBhc3luYyBleGVjdXRlPFk+KCk6IFByb21pc2U8WT4ge1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBxdWVyeTogUSA9IHRoaXMuYnVpbGQoKTtcbiAgICAgIHJldHVybiB0aGlzLnJhdyhxdWVyeSk7XG4gICAgfSBjYXRjaCAoZTogYW55KSB7XG4gICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihlKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQGluaGVyaXREb2NcbiAgICovXG4gIGFic3RyYWN0IHBhZ2luYXRlPFk+KHNpemU6IG51bWJlcik6IFByb21pc2U8UGFnaW5hdG9yPFksIFE+PjtcblxuICBhc3luYyByYXc8Uj4ocmF3SW5wdXQ6IFEsIC4uLmFyZ3M6IGFueVtdKTogUHJvbWlzZTxSPiB7XG4gICAgY29uc3QgcmVzdWx0cyA9IGF3YWl0IHRoaXMuYWRhcHRlci5yYXc8Uj4ocmF3SW5wdXQsIHRydWUsIC4uLmFyZ3MpO1xuICAgIGlmICghdGhpcy5mdWxsUmVjb3JkKSByZXR1cm4gcmVzdWx0cztcbiAgICBpZiAoIXRoaXMudGFyZ2V0KVxuICAgICAgdGhyb3cgbmV3IEludGVybmFsRXJyb3IoXG4gICAgICAgIFwiTm8gdGFyZ2V0IGRlZmluZWQgaW4gc3RhdGVtZW50LiBzaG91bGQgbmV2ZXIgaGFwcGVuXCJcbiAgICAgICk7XG5cbiAgICBjb25zdCBwa0F0dHIgPSBmaW5kUHJpbWFyeUtleShuZXcgdGhpcy50YXJnZXQoKSBhcyBhbnkpLmlkO1xuXG4gICAgY29uc3QgcHJvY2Vzc29yID0gZnVuY3Rpb24gcmVjb3JkUHJvY2Vzc29yKHRoaXM6IFN0YXRlbWVudDxRPiwgcjogYW55KSB7XG4gICAgICBjb25zdCBpZCA9IHJbcGtBdHRyXTtcbiAgICAgIHJldHVybiB0aGlzLmFkYXB0ZXIucmV2ZXJ0KFxuICAgICAgICByLFxuICAgICAgICB0aGlzLnRhcmdldCBhcyBDb25zdHJ1Y3Rvcjxhbnk+LFxuICAgICAgICBwa0F0dHIsXG4gICAgICAgIGlkXG4gICAgICApIGFzIGFueTtcbiAgICB9LmJpbmQodGhpcyk7XG5cbiAgICBpZiAoQXJyYXkuaXNBcnJheShyZXN1bHRzKSkgcmV0dXJuIHJlc3VsdHMubWFwKHByb2Nlc3NvcikgYXMgUjtcbiAgICByZXR1cm4gcHJvY2Vzc29yKHJlc3VsdHMpIGFzIFI7XG4gIH1cblxuICAvKipcbiAgICogQGluaGVyaXREb2NcbiAgICovXG4gIGhhc0Vycm9ycyguLi5leGNlcHRpb25zOiBzdHJpbmdbXSk6IE1vZGVsRXJyb3JEZWZpbml0aW9uIHwgdW5kZWZpbmVkIHtcbiAgICBjb25zdCBlcnJvcnMgPSBzdXBlci5oYXNFcnJvcnMoLi4uZXhjZXB0aW9ucyk7XG4gICAgaWYgKGVycm9ycykgcmV0dXJuIGVycm9ycztcblxuICAgIGZvciAoY29uc3QgaSBpbiB0aGlzLmNsYXVzZXMpIHtcbiAgICAgIGNvbnN0IGVyciA9IHRoaXMuY2xhdXNlc1tpIGFzIGFueV0uaGFzRXJyb3JzKCk7XG4gICAgICBpZiAoZXJyKSByZXR1cm4gZXJyO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAc3VtbWFyeSBBZGRzIGEgY2xhdXNlIHRvIHRoZSBTdGF0ZW1lbnRcbiAgICogQHBhcmFtIHtDbGF1c2V9IGNsYXVzZVxuICAgKi9cbiAgYWRkQ2xhdXNlKGNsYXVzZTogQ2xhdXNlPFE+KSB7XG4gICAgaWYgKCF0aGlzLmNsYXVzZXMpIHRoaXMuY2xhdXNlcyA9IFtdO1xuXG4gICAgY29uc3QgcHJpb3JpdHkgPSBjbGF1c2UuZ2V0UHJpb3JpdHkoKTtcbiAgICBjb25zdCBjdXJyZW50UHJpb3JpdHkgPSB0aGlzLmNsYXVzZXNcbiAgICAgIC5tYXAoKGMsIGkpID0+ICh7IGluZGV4OiBpLCBjbGF1c2U6IGMgfSkpXG4gICAgICAuZmluZCgoYykgPT4gYy5jbGF1c2UuZ2V0UHJpb3JpdHkoKSA9PT0gcHJpb3JpdHkpO1xuICAgIGlmIChjdXJyZW50UHJpb3JpdHkpIHtcbiAgICAgIHRoaXMuY2xhdXNlc1tjdXJyZW50UHJpb3JpdHkuaW5kZXhdID0gY2xhdXNlO1xuICAgIH1cbiAgICB0aGlzLmNsYXVzZXMucHVzaChjbGF1c2UpO1xuICB9XG5cbiAgZ2V0QWRhcHRlcigpOiBBZGFwdGVyPGFueSwgUSwgYW55LCBhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5hZGFwdGVyO1xuICB9XG5cbiAgLyoqXG4gICAqIEBzdW1tYXJ5IERlZmluZXMgdGhlIG91dHB1dCBjbGFzcyAod2hlbiBleGlzdGluZylcbiAgICogQHBhcmFtIHtDb25zdHJ1Y3Rvcn0gY2xhenpcbiAgICovXG4gIHNldFRhcmdldChjbGF6ejogQ29uc3RydWN0b3I8YW55Pikge1xuICAgIGlmICh0aGlzLnRhcmdldClcbiAgICAgIHRocm93IG5ldyBRdWVyeUVycm9yKFxuICAgICAgICBzZihcIk91dHB1dCBjbGFzcyBhbHJlYWR5IGRlZmluZWQgdG8gezB9XCIsIHRoaXMudGFyZ2V0IS5uYW1lKVxuICAgICAgKTtcbiAgICB0aGlzLnRhcmdldCA9IGNsYXp6O1xuICB9XG5cbiAgZ2V0VGFyZ2V0KCkge1xuICAgIGlmICghdGhpcy50YXJnZXQpXG4gICAgICB0aHJvdyBuZXcgSW50ZXJuYWxFcnJvcihcIk5vIHRhcmdldCBkZWZpbmVkIGZvciBzdGF0ZW1lbnRcIik7XG4gICAgcmV0dXJuIHRoaXMudGFyZ2V0O1xuICB9XG5cbiAgc2V0RnVsbFJlY29yZCgpIHtcbiAgICB0aGlzLmZ1bGxSZWNvcmQgPSB0cnVlO1xuICB9XG5cbiAgc2V0TW9kZSh0eXBlOiBTdGF0ZW1lbnRUeXBlKSB7XG4gICAgdGhpcy50eXBlID0gdHlwZTtcbiAgfVxufVxuIl19
|
package/lib/esm/query/errors.js
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
import { BaseError } from "@decaf-ts/db-decorators";
|
2
2
|
export class QueryError extends BaseError {
|
3
3
|
constructor(msg) {
|
4
|
-
super(QueryError.name, msg);
|
4
|
+
super(QueryError.name, msg, 500);
|
5
5
|
}
|
6
6
|
}
|
7
7
|
export class PagingError extends BaseError {
|
8
8
|
constructor(msg) {
|
9
|
-
super(PagingError.name, msg);
|
9
|
+
super(PagingError.name, msg, 500);
|
10
10
|
}
|
11
11
|
}
|
12
|
-
//# sourceMappingURL=data:application/json;base64,
|
12
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXJyb3JzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3F1ZXJ5L2Vycm9ycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFFcEQsTUFBTSxPQUFPLFVBQVcsU0FBUSxTQUFTO0lBQ3ZDLFlBQVksR0FBbUI7UUFDN0IsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0lBQ25DLENBQUM7Q0FDRjtBQUVELE1BQU0sT0FBTyxXQUFZLFNBQVEsU0FBUztJQUN4QyxZQUFZLEdBQW1CO1FBQzdCLEtBQUssQ0FBQyxXQUFXLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUNwQyxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBCYXNlRXJyb3IgfSBmcm9tIFwiQGRlY2FmLXRzL2RiLWRlY29yYXRvcnNcIjtcblxuZXhwb3J0IGNsYXNzIFF1ZXJ5RXJyb3IgZXh0ZW5kcyBCYXNlRXJyb3Ige1xuICBjb25zdHJ1Y3Rvcihtc2c6IHN0cmluZyB8IEVycm9yKSB7XG4gICAgc3VwZXIoUXVlcnlFcnJvci5uYW1lLCBtc2csIDUwMCk7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIFBhZ2luZ0Vycm9yIGV4dGVuZHMgQmFzZUVycm9yIHtcbiAgY29uc3RydWN0b3IobXNnOiBzdHJpbmcgfCBFcnJvcikge1xuICAgIHN1cGVyKFBhZ2luZ0Vycm9yLm5hbWUsIG1zZywgNTAwKTtcbiAgfVxufVxuIl19
|
@@ -0,0 +1,41 @@
|
|
1
|
+
import { Context } from "@decaf-ts/db-decorators";
|
2
|
+
import { RamFlags, RamQuery, RamStorage } from "./types";
|
3
|
+
import { RamStatement } from "./RamStatement";
|
4
|
+
import { RamClauseFactory } from "./RamClauseFactory";
|
5
|
+
import { RamContext } from "./RamContext";
|
6
|
+
import { Repo } from "../repository/Repository";
|
7
|
+
import { RelationsMetadata } from "../model/types";
|
8
|
+
import { Adapter, Sequence } from "../persistence";
|
9
|
+
import { Paginator } from "../query/Paginator";
|
10
|
+
import { ClauseFactory, Condition } from "../query";
|
11
|
+
import { SequenceOptions } from "../interfaces";
|
12
|
+
import { Constructor, Model } from "@decaf-ts/decorator-validation";
|
13
|
+
import { BaseError } from "@decaf-ts/db-decorators";
|
14
|
+
export declare function createdByOnRamCreateUpdate<M extends Model, R extends Repo<M, C, F>, V extends RelationsMetadata, F extends RamFlags, C extends Context<F>>(this: R, context: Context<F>, data: V, key: keyof M, model: M): Promise<void>;
|
15
|
+
export declare class RamAdapter extends Adapter<RamStorage, RamQuery<any>, RamFlags, Context<RamFlags>> {
|
16
|
+
protected factory?: RamClauseFactory;
|
17
|
+
constructor(flavour?: string);
|
18
|
+
context<M extends Model, C extends RamContext, F extends RamFlags>(operation: any, overrides: Partial<RamFlags>, model: Constructor<M>, ...args: any[]): Promise<C>;
|
19
|
+
private indexes;
|
20
|
+
private lock;
|
21
|
+
private sequences;
|
22
|
+
initialize(...args: any[]): Promise<void>;
|
23
|
+
index(...models: Record<string, any>[]): Promise<any>;
|
24
|
+
prepare<M extends Model>(model: M, pk: keyof M): {
|
25
|
+
record: Record<string, any>;
|
26
|
+
id: string;
|
27
|
+
};
|
28
|
+
revert<M extends Model>(obj: Record<string, any>, clazz: string | Constructor<M>, pk: keyof M, id: string | number): M;
|
29
|
+
create(tableName: string, id: string | number, model: Record<string, any>): Promise<Record<string, any>>;
|
30
|
+
read(tableName: string, id: string | number): Promise<Record<string, any>>;
|
31
|
+
update(tableName: string, id: string | number, model: Record<string, any>): Promise<Record<string, any>>;
|
32
|
+
delete(tableName: string, id: string | number): Promise<Record<string, any>>;
|
33
|
+
protected tableFor<M extends Model>(from: string | Constructor<M>): Record<string, any>;
|
34
|
+
raw<Z>(rawInput: RamQuery<any>, process: boolean): Promise<Z>;
|
35
|
+
paginate<Z>(rawInput: string): Promise<Paginator<Z, string>>;
|
36
|
+
parseError<V extends BaseError>(err: Error): V;
|
37
|
+
get Clauses(): ClauseFactory<RamStorage, RamQuery<any>, typeof this>;
|
38
|
+
get Statement(): RamStatement<any>;
|
39
|
+
Sequence(options: SequenceOptions): Promise<Sequence>;
|
40
|
+
parseCondition(condition: Condition): RamQuery<any>;
|
41
|
+
}
|