@vendasta/iam 2.2.2 → 2.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2020/lib/_generated/host.service.mjs +25 -0
- package/esm2020/lib/_generated/index.mjs +2 -0
- package/esm2020/lib/_internal/enums/api.enum.mjs +22 -0
- package/esm2020/lib/_internal/enums/index.mjs +12 -0
- package/esm2020/lib/_internal/enums/policies.enum.mjs +18 -0
- package/esm2020/lib/_internal/enums/resources.enum.mjs +14 -0
- package/esm2020/lib/_internal/enums/subjects.enum.mjs +17 -0
- package/esm2020/lib/_internal/enums/users.enum.mjs +13 -0
- package/esm2020/lib/_internal/iam.api.service.mjs +189 -0
- package/esm2020/lib/_internal/index.mjs +12 -0
- package/esm2020/lib/_internal/interfaces/annotations.interface.mjs +8 -0
- package/esm2020/lib/_internal/interfaces/api.interface.mjs +2 -0
- package/esm2020/lib/_internal/interfaces/attributes.interface.mjs +8 -0
- package/esm2020/lib/_internal/interfaces/field-mask.interface.mjs +8 -0
- package/esm2020/lib/_internal/interfaces/index.mjs +2 -0
- package/esm2020/lib/_internal/interfaces/policies.interface.mjs +3 -0
- package/esm2020/lib/_internal/interfaces/resources.interface.mjs +2 -0
- package/esm2020/lib/_internal/interfaces/security-logs.interface.mjs +8 -0
- package/esm2020/lib/_internal/interfaces/subjects.interface.mjs +2 -0
- package/esm2020/lib/_internal/interfaces/users.interface.mjs +2 -0
- package/esm2020/lib/_internal/objects/annotations.mjs +30 -0
- package/esm2020/lib/_internal/objects/api.mjs +1846 -0
- package/esm2020/lib/_internal/objects/attributes.mjs +158 -0
- package/esm2020/lib/_internal/objects/field-mask.mjs +27 -0
- package/esm2020/lib/_internal/objects/index.mjs +16 -0
- package/esm2020/lib/_internal/objects/policies.mjs +264 -0
- package/esm2020/lib/_internal/objects/resources.mjs +168 -0
- package/esm2020/lib/_internal/objects/security-logs.mjs +42 -0
- package/esm2020/lib/_internal/objects/subjects.mjs +352 -0
- package/esm2020/lib/_internal/objects/users.mjs +168 -0
- package/esm2020/lib/_internal/user-iam.api.service.mjs +65 -0
- package/esm2020/lib/http/http.interface.mjs +2 -0
- package/esm2020/lib/http/http.mjs +104 -0
- package/esm2020/lib/http/iam.http.api.service.mjs +67 -0
- package/esm2020/lib/iam.service.mjs +155 -0
- package/esm2020/lib/index.mjs +7 -0
- package/esm2020/lib/personas/account-group.mjs +9 -0
- package/esm2020/lib/personas/base-personas.mjs +93 -0
- package/esm2020/lib/personas/crm-role.mjs +9 -0
- package/esm2020/lib/personas/developer.mjs +9 -0
- package/esm2020/lib/personas/digital-agent.mjs +9 -0
- package/esm2020/lib/personas/index.mjs +13 -0
- package/esm2020/lib/personas/partner-app.mjs +9 -0
- package/esm2020/lib/personas/partner.mjs +25 -0
- package/esm2020/lib/personas/persona-type.enum.mjs +14 -0
- package/esm2020/lib/personas/personas.mjs +61 -0
- package/esm2020/lib/personas/salesperson.mjs +15 -0
- package/esm2020/lib/personas/smb.mjs +10 -0
- package/esm2020/lib/personas/success.mjs +9 -0
- package/esm2020/lib/personas/vendor.mjs +9 -0
- package/esm2020/public_api.mjs +2 -0
- package/esm2020/vendasta-iam.mjs +5 -0
- package/fesm2015/{vendasta-iam.js → vendasta-iam.mjs} +375 -388
- package/fesm2015/vendasta-iam.mjs.map +1 -0
- package/fesm2020/vendasta-iam.mjs +3948 -0
- package/fesm2020/vendasta-iam.mjs.map +1 -0
- package/lib/_generated/host.service.d.ts +4 -11
- package/lib/_internal/iam.api.service.d.ts +3 -2
- package/lib/_internal/user-iam.api.service.d.ts +3 -2
- package/lib/http/iam.http.api.service.d.ts +3 -2
- package/lib/iam.service.d.ts +2 -2
- package/lib/index.d.ts +1 -1
- package/lib/personas/crm-role.d.ts +5 -0
- package/lib/personas/index.d.ts +1 -0
- package/lib/personas/persona-type.enum.d.ts +2 -1
- package/package.json +27 -16
- package/{README.md → src/README.md} +0 -0
- package/CHANGELOG.md +0 -101
- package/bundles/vendasta-iam.umd.js +0 -4531
- package/bundles/vendasta-iam.umd.js.map +0 -1
- package/bundles/vendasta-iam.umd.min.js +0 -16
- package/bundles/vendasta-iam.umd.min.js.map +0 -1
- package/esm2015/lib/_generated/host.service.js +0 -64
- package/esm2015/lib/_generated/index.js +0 -2
- package/esm2015/lib/_internal/enums/api.enum.js +0 -22
- package/esm2015/lib/_internal/enums/index.js +0 -12
- package/esm2015/lib/_internal/enums/policies.enum.js +0 -18
- package/esm2015/lib/_internal/enums/resources.enum.js +0 -14
- package/esm2015/lib/_internal/enums/subjects.enum.js +0 -17
- package/esm2015/lib/_internal/enums/users.enum.js +0 -13
- package/esm2015/lib/_internal/iam.api.service.js +0 -188
- package/esm2015/lib/_internal/index.js +0 -12
- package/esm2015/lib/_internal/interfaces/annotations.interface.js +0 -8
- package/esm2015/lib/_internal/interfaces/api.interface.js +0 -2
- package/esm2015/lib/_internal/interfaces/attributes.interface.js +0 -8
- package/esm2015/lib/_internal/interfaces/field-mask.interface.js +0 -8
- package/esm2015/lib/_internal/interfaces/index.js +0 -2
- package/esm2015/lib/_internal/interfaces/policies.interface.js +0 -3
- package/esm2015/lib/_internal/interfaces/resources.interface.js +0 -2
- package/esm2015/lib/_internal/interfaces/security-logs.interface.js +0 -8
- package/esm2015/lib/_internal/interfaces/subjects.interface.js +0 -2
- package/esm2015/lib/_internal/interfaces/users.interface.js +0 -2
- package/esm2015/lib/_internal/objects/annotations.js +0 -30
- package/esm2015/lib/_internal/objects/api.js +0 -1846
- package/esm2015/lib/_internal/objects/attributes.js +0 -158
- package/esm2015/lib/_internal/objects/field-mask.js +0 -27
- package/esm2015/lib/_internal/objects/index.js +0 -16
- package/esm2015/lib/_internal/objects/policies.js +0 -264
- package/esm2015/lib/_internal/objects/resources.js +0 -168
- package/esm2015/lib/_internal/objects/security-logs.js +0 -42
- package/esm2015/lib/_internal/objects/subjects.js +0 -352
- package/esm2015/lib/_internal/objects/users.js +0 -168
- package/esm2015/lib/_internal/user-iam.api.service.js +0 -64
- package/esm2015/lib/http/http.interface.js +0 -2
- package/esm2015/lib/http/http.js +0 -102
- package/esm2015/lib/http/iam.http.api.service.js +0 -65
- package/esm2015/lib/iam.service.js +0 -152
- package/esm2015/lib/index.js +0 -7
- package/esm2015/lib/personas/account-group.js +0 -9
- package/esm2015/lib/personas/base-personas.js +0 -89
- package/esm2015/lib/personas/developer.js +0 -9
- package/esm2015/lib/personas/digital-agent.js +0 -9
- package/esm2015/lib/personas/index.js +0 -12
- package/esm2015/lib/personas/partner-app.js +0 -9
- package/esm2015/lib/personas/partner.js +0 -25
- package/esm2015/lib/personas/persona-type.enum.js +0 -13
- package/esm2015/lib/personas/personas.js +0 -57
- package/esm2015/lib/personas/salesperson.js +0 -15
- package/esm2015/lib/personas/smb.js +0 -10
- package/esm2015/lib/personas/success.js +0 -9
- package/esm2015/lib/personas/vendor.js +0 -9
- package/esm2015/public_api.js +0 -2
- package/esm2015/vendasta-iam.js +0 -5
- package/fesm2015/vendasta-iam.js.map +0 -1
|
@@ -1,168 +0,0 @@
|
|
|
1
|
-
import { PolicyNode } from './policies';
|
|
2
|
-
import * as e from '../enums';
|
|
3
|
-
export function enumStringToValue(enumRef, value) {
|
|
4
|
-
if (typeof value === 'number') {
|
|
5
|
-
return value;
|
|
6
|
-
}
|
|
7
|
-
return enumRef[value];
|
|
8
|
-
}
|
|
9
|
-
export class AccessCheckFailures {
|
|
10
|
-
constructor(kwargs) {
|
|
11
|
-
if (!kwargs) {
|
|
12
|
-
return;
|
|
13
|
-
}
|
|
14
|
-
Object.assign(this, kwargs);
|
|
15
|
-
}
|
|
16
|
-
static fromProto(proto) {
|
|
17
|
-
let m = new AccessCheckFailures();
|
|
18
|
-
m = Object.assign(m, proto);
|
|
19
|
-
if (proto.failures) {
|
|
20
|
-
m.failures = proto.failures.map(ResourceIdentifier.fromProto);
|
|
21
|
-
}
|
|
22
|
-
return m;
|
|
23
|
-
}
|
|
24
|
-
toApiJson() {
|
|
25
|
-
const toReturn = {};
|
|
26
|
-
if (typeof this.failures !== 'undefined' && this.failures !== null) {
|
|
27
|
-
toReturn['failures'] = 'toApiJson' in this.failures ? this.failures.toApiJson() : this.failures;
|
|
28
|
-
}
|
|
29
|
-
return toReturn;
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
export class ResourceIdentifierIdentifiersEntry {
|
|
33
|
-
constructor(kwargs) {
|
|
34
|
-
if (!kwargs) {
|
|
35
|
-
return;
|
|
36
|
-
}
|
|
37
|
-
Object.assign(this, kwargs);
|
|
38
|
-
}
|
|
39
|
-
static fromProto(proto) {
|
|
40
|
-
let m = new ResourceIdentifierIdentifiersEntry();
|
|
41
|
-
m = Object.assign(m, proto);
|
|
42
|
-
if (proto.value) {
|
|
43
|
-
m.value = ValueList.fromProto(proto.value);
|
|
44
|
-
}
|
|
45
|
-
return m;
|
|
46
|
-
}
|
|
47
|
-
toApiJson() {
|
|
48
|
-
const toReturn = {};
|
|
49
|
-
if (typeof this.key !== 'undefined') {
|
|
50
|
-
toReturn['key'] = this.key;
|
|
51
|
-
}
|
|
52
|
-
if (typeof this.value !== 'undefined' && this.value !== null) {
|
|
53
|
-
toReturn['value'] = 'toApiJson' in this.value ? this.value.toApiJson() : this.value;
|
|
54
|
-
}
|
|
55
|
-
return toReturn;
|
|
56
|
-
}
|
|
57
|
-
}
|
|
58
|
-
export class Policy {
|
|
59
|
-
constructor(kwargs) {
|
|
60
|
-
if (!kwargs) {
|
|
61
|
-
return;
|
|
62
|
-
}
|
|
63
|
-
Object.assign(this, kwargs);
|
|
64
|
-
}
|
|
65
|
-
static fromProto(proto) {
|
|
66
|
-
let m = new Policy();
|
|
67
|
-
m = Object.assign(m, proto);
|
|
68
|
-
if (proto.operations) {
|
|
69
|
-
m.operations = proto.operations.map((v) => enumStringToValue(e.AccessScope, v));
|
|
70
|
-
}
|
|
71
|
-
if (proto.policy) {
|
|
72
|
-
m.policy = PolicyNode.fromProto(proto.policy);
|
|
73
|
-
}
|
|
74
|
-
return m;
|
|
75
|
-
}
|
|
76
|
-
toApiJson() {
|
|
77
|
-
const toReturn = {};
|
|
78
|
-
if (typeof this.appId !== 'undefined') {
|
|
79
|
-
toReturn['appId'] = this.appId;
|
|
80
|
-
}
|
|
81
|
-
if (typeof this.resourceId !== 'undefined') {
|
|
82
|
-
toReturn['resourceId'] = this.resourceId;
|
|
83
|
-
}
|
|
84
|
-
if (typeof this.policyId !== 'undefined') {
|
|
85
|
-
toReturn['policyId'] = this.policyId;
|
|
86
|
-
}
|
|
87
|
-
if (typeof this.policyName !== 'undefined') {
|
|
88
|
-
toReturn['policyName'] = this.policyName;
|
|
89
|
-
}
|
|
90
|
-
if (typeof this.operations !== 'undefined') {
|
|
91
|
-
toReturn['operations'] = this.operations;
|
|
92
|
-
}
|
|
93
|
-
if (typeof this.actions !== 'undefined') {
|
|
94
|
-
toReturn['actions'] = this.actions;
|
|
95
|
-
}
|
|
96
|
-
if (typeof this.policy !== 'undefined' && this.policy !== null) {
|
|
97
|
-
toReturn['policy'] = 'toApiJson' in this.policy ? this.policy.toApiJson() : this.policy;
|
|
98
|
-
}
|
|
99
|
-
return toReturn;
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
export class ResourceIdentifier {
|
|
103
|
-
constructor(kwargs) {
|
|
104
|
-
if (!kwargs) {
|
|
105
|
-
return;
|
|
106
|
-
}
|
|
107
|
-
Object.assign(this, kwargs);
|
|
108
|
-
}
|
|
109
|
-
static fromProto(proto) {
|
|
110
|
-
let m = new ResourceIdentifier();
|
|
111
|
-
m = Object.assign(m, proto);
|
|
112
|
-
if (proto.identifiers) {
|
|
113
|
-
m.identifiers = Object.keys(proto.identifiers).reduce((obj, k) => { obj[k] = ValueList.fromProto(proto.identifiers[k]); return obj; }, {});
|
|
114
|
-
}
|
|
115
|
-
return m;
|
|
116
|
-
}
|
|
117
|
-
toApiJson() {
|
|
118
|
-
const toReturn = {};
|
|
119
|
-
if (typeof this.identifiers !== 'undefined' && this.identifiers !== null) {
|
|
120
|
-
toReturn['identifiers'] = 'toApiJson' in this.identifiers ? this.identifiers.toApiJson() : this.identifiers;
|
|
121
|
-
}
|
|
122
|
-
return toReturn;
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
export class ResourceOwner {
|
|
126
|
-
constructor(kwargs) {
|
|
127
|
-
if (!kwargs) {
|
|
128
|
-
return;
|
|
129
|
-
}
|
|
130
|
-
Object.assign(this, kwargs);
|
|
131
|
-
}
|
|
132
|
-
static fromProto(proto) {
|
|
133
|
-
let m = new ResourceOwner();
|
|
134
|
-
m = Object.assign(m, proto);
|
|
135
|
-
return m;
|
|
136
|
-
}
|
|
137
|
-
toApiJson() {
|
|
138
|
-
const toReturn = {};
|
|
139
|
-
if (typeof this.appId !== 'undefined') {
|
|
140
|
-
toReturn['appId'] = this.appId;
|
|
141
|
-
}
|
|
142
|
-
if (typeof this.appName !== 'undefined') {
|
|
143
|
-
toReturn['appName'] = this.appName;
|
|
144
|
-
}
|
|
145
|
-
return toReturn;
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
export class ValueList {
|
|
149
|
-
constructor(kwargs) {
|
|
150
|
-
if (!kwargs) {
|
|
151
|
-
return;
|
|
152
|
-
}
|
|
153
|
-
Object.assign(this, kwargs);
|
|
154
|
-
}
|
|
155
|
-
static fromProto(proto) {
|
|
156
|
-
let m = new ValueList();
|
|
157
|
-
m = Object.assign(m, proto);
|
|
158
|
-
return m;
|
|
159
|
-
}
|
|
160
|
-
toApiJson() {
|
|
161
|
-
const toReturn = {};
|
|
162
|
-
if (typeof this.values !== 'undefined') {
|
|
163
|
-
toReturn['values'] = this.values;
|
|
164
|
-
}
|
|
165
|
-
return toReturn;
|
|
166
|
-
}
|
|
167
|
-
}
|
|
168
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzb3VyY2VzLmpzIiwic291cmNlUm9vdCI6Ii93b3Jrc3BhY2Uvc2Rrcy90eXBlc2NyaXB0L3NyYy9pYW1fc2RrL3NyYy8iLCJzb3VyY2VzIjpbImxpYi9faW50ZXJuYWwvb2JqZWN0cy9yZXNvdXJjZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBT0EsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFlBQVksQ0FBQztBQUN4QyxPQUFPLEtBQUssQ0FBQyxNQUFNLFVBQVUsQ0FBQztBQUU5QixNQUFNLFVBQVUsaUJBQWlCLENBQUksT0FBWSxFQUFFLEtBQWE7SUFDOUQsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUU7UUFDN0IsT0FBTyxLQUFLLENBQUM7S0FDZDtJQUNELE9BQU8sT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3hCLENBQUM7QUFFRCxNQUFNLE9BQU8sbUJBQW1CO0lBVTVCLFlBQVksTUFBdUM7UUFDL0MsSUFBSSxDQUFDLE1BQU0sRUFBRTtZQUNULE9BQU87U0FDVjtRQUNELE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLE1BQU0sQ0FBQyxDQUFDO0lBQ2hDLENBQUM7SUFaRCxNQUFNLENBQUMsU0FBUyxDQUFDLEtBQVU7UUFDdkIsSUFBSSxDQUFDLEdBQUcsSUFBSSxtQkFBbUIsRUFBRSxDQUFDO1FBQ2xDLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUM1QixJQUFJLEtBQUssQ0FBQyxRQUFRLEVBQUU7WUFBQyxDQUFDLENBQUMsUUFBUSxHQUFHLEtBQUssQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLGtCQUFrQixDQUFDLFNBQVMsQ0FBQyxDQUFDO1NBQUM7UUFDcEYsT0FBTyxDQUFDLENBQUM7SUFDYixDQUFDO0lBU0QsU0FBUztRQUNMLE1BQU0sUUFBUSxHQUVWLEVBQUUsQ0FBQztRQUVQLElBQUksT0FBTyxJQUFJLENBQUMsUUFBUSxLQUFLLFdBQVcsSUFB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Z2VuZXJhdGVkIGJ5IHNka2dlblxuLy8gRE8gTk9UIEVESVQhLlxuLy9cbi8vIE9iamVjdHMuXG4vLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbmltcG9ydCAqIGFzIGkgZnJvbSAnLi4vaW50ZXJmYWNlcyc7XG5pbXBvcnQgeyBQb2xpY3lOb2RlIH0gZnJvbSAnLi9wb2xpY2llcyc7XG5pbXBvcnQgKiBhcyBlIGZyb20gJy4uL2VudW1zJztcblxuZXhwb3J0IGZ1bmN0aW9uIGVudW1TdHJpbmdUb1ZhbHVlPEU+KGVudW1SZWY6IGFueSwgdmFsdWU6IHN0cmluZyk6IEUge1xuICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICByZXR1cm4gZW51bVJlZlt2YWx1ZV07XG59XG5cbmV4cG9ydCBjbGFzcyBBY2Nlc3NDaGVja0ZhaWx1cmVzIGltcGxlbWVudHMgaS5BY2Nlc3NDaGVja0ZhaWx1cmVzSW50ZXJmYWNlIHtcbiAgICBmYWlsdXJlczogUmVzb3VyY2VJZGVudGlmaWVyW107XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBBY2Nlc3NDaGVja0ZhaWx1cmVzIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgQWNjZXNzQ2hlY2tGYWlsdXJlcygpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIGlmIChwcm90by5mYWlsdXJlcykge20uZmFpbHVyZXMgPSBwcm90by5mYWlsdXJlcy5tYXAoUmVzb3VyY2VJZGVudGlmaWVyLmZyb21Qcm90byk7fVxuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLkFjY2Vzc0NoZWNrRmFpbHVyZXNJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5mYWlsdXJlcyAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5mYWlsdXJlcyAhPT0gbnVsbCkge3RvUmV0dXJuWydmYWlsdXJlcyddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5mYWlsdXJlcyA/ICh0aGlzLmZhaWx1cmVzIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLmZhaWx1cmVzO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFJlc291cmNlSWRlbnRpZmllcklkZW50aWZpZXJzRW50cnkgaW1wbGVtZW50cyBpLlJlc291cmNlSWRlbnRpZmllcklkZW50aWZpZXJzRW50cnlJbnRlcmZhY2Uge1xuICAgIGtleTogc3RyaW5nO1xuICAgIHZhbHVlOiBWYWx1ZUxpc3Q7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBSZXNvdXJjZUlkZW50aWZpZXJJZGVudGlmaWVyc0VudHJ5IHtcbiAgICAgICAgbGV0IG0gPSBuZXcgUmVzb3VyY2VJZGVudGlmaWVySWRlbnRpZmllcnNFbnRyeSgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIGlmIChwcm90by52YWx1ZSkge20udmFsdWUgPSBWYWx1ZUxpc3QuZnJvbVByb3RvKHByb3RvLnZhbHVlKTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuUmVzb3VyY2VJZGVudGlmaWVySWRlbnRpZmllcnNFbnRyeUludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmtleSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsna2V5J10gPSB0aGlzLmtleTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy52YWx1ZSAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy52YWx1ZSAhPT0gbnVsbCkge3RvUmV0dXJuWyd2YWx1ZSddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy52YWx1ZSA/ICh0aGlzLnZhbHVlIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLnZhbHVlO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFBvbGljeSBpbXBsZW1lbnRzIGkuUG9saWN5SW50ZXJmYWNlIHtcbiAgICBhcHBJZDogc3RyaW5nO1xuICAgIHJlc291cmNlSWQ6IHN0cmluZztcbiAgICBwb2xpY3lJZDogc3RyaW5nO1xuICAgIHBvbGljeU5hbWU6IHN0cmluZztcbiAgICBvcGVyYXRpb25zOiBlLkFjY2Vzc1Njb3BlW107XG4gICAgYWN0aW9uczogc3RyaW5nW107XG4gICAgcG9saWN5OiBQb2xpY3lOb2RlO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogUG9saWN5IHtcbiAgICAgICAgbGV0IG0gPSBuZXcgUG9saWN5KCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgaWYgKHByb3RvLm9wZXJhdGlvbnMpIHttLm9wZXJhdGlvbnMgPSBwcm90by5vcGVyYXRpb25zLm1hcCgodjogc3RyaW5nKSA9PiBlbnVtU3RyaW5nVG9WYWx1ZTxlLkFjY2Vzc1Njb3BlPihlLkFjY2Vzc1Njb3BlLCB2KSk7fVxuICAgICAgICBpZiAocHJvdG8ucG9saWN5KSB7bS5wb2xpY3kgPSBQb2xpY3lOb2RlLmZyb21Qcm90byhwcm90by5wb2xpY3kpO31cbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5Qb2xpY3lJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5hcHBJZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnYXBwSWQnXSA9IHRoaXMuYXBwSWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMucmVzb3VyY2VJZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsncmVzb3VyY2VJZCddID0gdGhpcy5yZXNvdXJjZUlkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnBvbGljeUlkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydwb2xpY3lJZCddID0gdGhpcy5wb2xpY3lJZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5wb2xpY3lOYW1lICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydwb2xpY3lOYW1lJ10gPSB0aGlzLnBvbGljeU5hbWU7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMub3BlcmF0aW9ucyAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnb3BlcmF0aW9ucyddID0gdGhpcy5vcGVyYXRpb25zO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmFjdGlvbnMgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2FjdGlvbnMnXSA9IHRoaXMuYWN0aW9uczt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5wb2xpY3kgIT09ICd1bmRlZmluZWQnICYmIHRoaXMucG9saWN5ICE9PSBudWxsKSB7dG9SZXR1cm5bJ3BvbGljeSddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5wb2xpY3kgPyAodGhpcy5wb2xpY3kgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMucG9saWN5O31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFJlc291cmNlSWRlbnRpZmllciBpbXBsZW1lbnRzIGkuUmVzb3VyY2VJZGVudGlmaWVySW50ZXJmYWNlIHtcbiAgICBpZGVudGlmaWVyczoge1trZXk6IHN0cmluZ106IFZhbHVlTGlzdH07XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBSZXNvdXJjZUlkZW50aWZpZXIge1xuICAgICAgICBsZXQgbSA9IG5ldyBSZXNvdXJjZUlkZW50aWZpZXIoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8uaWRlbnRpZmllcnMpIHttLmlkZW50aWZpZXJzID0gT2JqZWN0LmtleXMocHJvdG8uaWRlbnRpZmllcnMpLnJlZHVjZTxhbnk+KChvYmosIGspID0+IHsgb2JqW2tdID0gVmFsdWVMaXN0LmZyb21Qcm90byhwcm90by5pZGVudGlmaWVyc1trXSk7IHJldHVybiBvYmo7IH0sIHt9KTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuUmVzb3VyY2VJZGVudGlmaWVySW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuaWRlbnRpZmllcnMgIT09ICd1bmRlZmluZWQnICYmIHRoaXMuaWRlbnRpZmllcnMgIT09IG51bGwpIHt0b1JldHVyblsnaWRlbnRpZmllcnMnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMuaWRlbnRpZmllcnMgPyAodGhpcy5pZGVudGlmaWVycyBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5pZGVudGlmaWVyczt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBSZXNvdXJjZU93bmVyIGltcGxlbWVudHMgaS5SZXNvdXJjZU93bmVySW50ZXJmYWNlIHtcbiAgICBhcHBJZDogc3RyaW5nO1xuICAgIGFwcE5hbWU6IHN0cmluZztcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IFJlc291cmNlT3duZXIge1xuICAgICAgICBsZXQgbSA9IG5ldyBSZXNvdXJjZU93bmVyKCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5SZXNvdXJjZU93bmVySW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuYXBwSWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2FwcElkJ10gPSB0aGlzLmFwcElkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmFwcE5hbWUgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2FwcE5hbWUnXSA9IHRoaXMuYXBwTmFtZTt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBWYWx1ZUxpc3QgaW1wbGVtZW50cyBpLlZhbHVlTGlzdEludGVyZmFjZSB7XG4gICAgdmFsdWVzOiBzdHJpbmdbXTtcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IFZhbHVlTGlzdCB7XG4gICAgICAgIGxldCBtID0gbmV3IFZhbHVlTGlzdCgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuVmFsdWVMaXN0SW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMudmFsdWVzICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWyd2YWx1ZXMnXSA9IHRoaXMudmFsdWVzO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuIl19
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
export function enumStringToValue(enumRef, value) {
|
|
2
|
-
if (typeof value === 'number') {
|
|
3
|
-
return value;
|
|
4
|
-
}
|
|
5
|
-
return enumRef[value];
|
|
6
|
-
}
|
|
7
|
-
export class SecurityLog {
|
|
8
|
-
constructor(kwargs) {
|
|
9
|
-
if (!kwargs) {
|
|
10
|
-
return;
|
|
11
|
-
}
|
|
12
|
-
Object.assign(this, kwargs);
|
|
13
|
-
}
|
|
14
|
-
static fromProto(proto) {
|
|
15
|
-
let m = new SecurityLog();
|
|
16
|
-
m = Object.assign(m, proto);
|
|
17
|
-
if (proto.created) {
|
|
18
|
-
m.created = new Date(proto.created);
|
|
19
|
-
}
|
|
20
|
-
return m;
|
|
21
|
-
}
|
|
22
|
-
toApiJson() {
|
|
23
|
-
const toReturn = {};
|
|
24
|
-
if (typeof this.userId !== 'undefined') {
|
|
25
|
-
toReturn['userId'] = this.userId;
|
|
26
|
-
}
|
|
27
|
-
if (typeof this.actionId !== 'undefined') {
|
|
28
|
-
toReturn['actionId'] = this.actionId;
|
|
29
|
-
}
|
|
30
|
-
if (typeof this.logId !== 'undefined') {
|
|
31
|
-
toReturn['logId'] = this.logId;
|
|
32
|
-
}
|
|
33
|
-
if (typeof this.description !== 'undefined') {
|
|
34
|
-
toReturn['description'] = this.description;
|
|
35
|
-
}
|
|
36
|
-
if (typeof this.created !== 'undefined' && this.created !== null) {
|
|
37
|
-
toReturn['created'] = 'toApiJson' in this.created ? this.created.toApiJson() : this.created;
|
|
38
|
-
}
|
|
39
|
-
return toReturn;
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjdXJpdHktbG9ncy5qcyIsInNvdXJjZVJvb3QiOiIvd29ya3NwYWNlL3Nka3MvdHlwZXNjcmlwdC9zcmMvaWFtX3Nkay9zcmMvIiwic291cmNlcyI6WyJsaWIvX2ludGVybmFsL29iamVjdHMvc2VjdXJpdHktbG9ncy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFVQSxNQUFNLFVBQVUsaUJBQWlCLENBQUksT0FBWSxFQUFFLEtBQWE7SUFDOUQsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUU7UUFDN0IsT0FBTyxLQUFLLENBQUM7S0FDZDtJQUNELE9BQU8sT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3hCLENBQUM7QUFFRCxNQUFNLE9BQU8sV0FBVztJQWNwQixZQUFZLE1BQStCO1FBQ3ZDLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDVCxPQUFPO1NBQ1Y7UUFDRCxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQztJQUNoQyxDQUFDO0lBWkQsTUFBTSxDQUFDLFNBQVMsQ0FBQyxLQUFVO1FBQ3ZCLElBQUksQ0FBQyxHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7UUFDMUIsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzVCLElBQUksS0FBSyxDQUFDLE9BQU8sRUFBRTtZQUFDLENBQUMsQ0FBQyxPQUFPLEdBQUcsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1NBQUM7UUFDekQsT0FBTyxDQUFDLENBQUM7SUFDYixDQUFDO0lBU0QsU0FBUztRQUNMLE1BQU0sUUFBUSxHQUVWLEVBQUUsQ0FBQztRQUVQLElBQUksT0FBTyxJQUFJLENBQUMsTUFBTSxLQUFLLFdBQVcsRUFBRTtZQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDO1NBQUM7UUFDM0UsSUFBSSxPQUFPLElBQUksQ0FBQyxRQUFRLEtBQUssV0FBVyxFQUFFO1lBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUM7U0FBQztRQUNqRixJQUFJLE9BQU8sSUFBSSxDQUFDLEtBQUssS0FBSyxXQUFXLEVBQUU7WUFBQyxRQUFRLENBQUMsT0FBTyxDQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztTQUFDO1FBQ3hFLElBQUksT0FBTyxJQUFJLENBQUMsV0FBVyxLQUFLLFdBQVcsRUFBRTtZQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUMsR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDO1NBQUM7UUFDMUYsSUFBSSxPQUFPLElBQUksQ0FBQyxPQUFPLEtBQUssV0FBVyxJQUFJLElBQUksQ0FBQyxPQUFPLEtBQUssSUFBSSxFQUFFO1lBQUMsUUFBUSxDQUFDLFNBQVMsQ0FBQyxHQUFHLFdBQVcsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBRSxJQUFJLENBQUMsT0FBZSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDO1NBQUM7UUFDekssT0FBTyxRQUFRLENBQUM7SUFDcEIsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4vLyBDb2RlIGdlbmVyYXRlZCBieSBzZGtnZW5cbi8vIERPIE5PVCBFRElUIS5cbi8vXG4vLyBPYmplY3RzLlxuLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5pbXBvcnQgKiBhcyBpIGZyb20gJy4uL2ludGVyZmFjZXMnO1xuXG5pbXBvcnQgKiBhcyBlIGZyb20gJy4uL2VudW1zJztcblxuZXhwb3J0IGZ1bmN0aW9uIGVudW1TdHJpbmdUb1ZhbHVlPEU+KGVudW1SZWY6IGFueSwgdmFsdWU6IHN0cmluZyk6IEUge1xuICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICByZXR1cm4gZW51bVJlZlt2YWx1ZV07XG59XG5cbmV4cG9ydCBjbGFzcyBTZWN1cml0eUxvZyBpbXBsZW1lbnRzIGkuU2VjdXJpdHlMb2dJbnRlcmZhY2Uge1xuICAgIHVzZXJJZDogc3RyaW5nO1xuICAgIGFjdGlvbklkOiBzdHJpbmc7XG4gICAgbG9nSWQ6IHN0cmluZztcbiAgICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICAgIGNyZWF0ZWQ6IERhdGU7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBTZWN1cml0eUxvZyB7XG4gICAgICAgIGxldCBtID0gbmV3IFNlY3VyaXR5TG9nKCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgaWYgKHByb3RvLmNyZWF0ZWQpIHttLmNyZWF0ZWQgPSBuZXcgRGF0ZShwcm90by5jcmVhdGVkKTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuU2VjdXJpdHlMb2dJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy51c2VySWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3VzZXJJZCddID0gdGhpcy51c2VySWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuYWN0aW9uSWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2FjdGlvbklkJ10gPSB0aGlzLmFjdGlvbklkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmxvZ0lkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydsb2dJZCddID0gdGhpcy5sb2dJZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5kZXNjcmlwdGlvbiAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnZGVzY3JpcHRpb24nXSA9IHRoaXMuZGVzY3JpcHRpb247fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuY3JlYXRlZCAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5jcmVhdGVkICE9PSBudWxsKSB7dG9SZXR1cm5bJ2NyZWF0ZWQnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMuY3JlYXRlZCA/ICh0aGlzLmNyZWF0ZWQgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMuY3JlYXRlZDt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbiJdfQ==
|
|
@@ -1,352 +0,0 @@
|
|
|
1
|
-
import { StructAttribute } from './attributes';
|
|
2
|
-
import * as e from '../enums';
|
|
3
|
-
export function enumStringToValue(enumRef, value) {
|
|
4
|
-
if (typeof value === 'number') {
|
|
5
|
-
return value;
|
|
6
|
-
}
|
|
7
|
-
return enumRef[value];
|
|
8
|
-
}
|
|
9
|
-
export class Context {
|
|
10
|
-
constructor(kwargs) {
|
|
11
|
-
if (!kwargs) {
|
|
12
|
-
return;
|
|
13
|
-
}
|
|
14
|
-
Object.assign(this, kwargs);
|
|
15
|
-
}
|
|
16
|
-
static fromProto(proto) {
|
|
17
|
-
let m = new Context();
|
|
18
|
-
m = Object.assign(m, proto);
|
|
19
|
-
if (proto.namespaced) {
|
|
20
|
-
m.namespaced = NamespacedContext.fromProto(proto.namespaced);
|
|
21
|
-
}
|
|
22
|
-
if (proto.typed) {
|
|
23
|
-
m.typed = TypedContext.fromProto(proto.typed);
|
|
24
|
-
}
|
|
25
|
-
return m;
|
|
26
|
-
}
|
|
27
|
-
toApiJson() {
|
|
28
|
-
const toReturn = {};
|
|
29
|
-
if (typeof this.namespaced !== 'undefined' && this.namespaced !== null) {
|
|
30
|
-
toReturn['namespaced'] = 'toApiJson' in this.namespaced ? this.namespaced.toApiJson() : this.namespaced;
|
|
31
|
-
}
|
|
32
|
-
if (typeof this.typed !== 'undefined' && this.typed !== null) {
|
|
33
|
-
toReturn['typed'] = 'toApiJson' in this.typed ? this.typed.toApiJson() : this.typed;
|
|
34
|
-
}
|
|
35
|
-
return toReturn;
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
export class MultiValueAttribute {
|
|
39
|
-
constructor(kwargs) {
|
|
40
|
-
if (!kwargs) {
|
|
41
|
-
return;
|
|
42
|
-
}
|
|
43
|
-
Object.assign(this, kwargs);
|
|
44
|
-
}
|
|
45
|
-
static fromProto(proto) {
|
|
46
|
-
let m = new MultiValueAttribute();
|
|
47
|
-
m = Object.assign(m, proto);
|
|
48
|
-
return m;
|
|
49
|
-
}
|
|
50
|
-
toApiJson() {
|
|
51
|
-
const toReturn = {};
|
|
52
|
-
if (typeof this.key !== 'undefined') {
|
|
53
|
-
toReturn['key'] = this.key;
|
|
54
|
-
}
|
|
55
|
-
if (typeof this.values !== 'undefined') {
|
|
56
|
-
toReturn['values'] = this.values;
|
|
57
|
-
}
|
|
58
|
-
return toReturn;
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
export class Mutation {
|
|
62
|
-
constructor(kwargs) {
|
|
63
|
-
if (!kwargs) {
|
|
64
|
-
return;
|
|
65
|
-
}
|
|
66
|
-
Object.assign(this, kwargs);
|
|
67
|
-
}
|
|
68
|
-
static fromProto(proto) {
|
|
69
|
-
let m = new Mutation();
|
|
70
|
-
m = Object.assign(m, proto);
|
|
71
|
-
if (proto.add) {
|
|
72
|
-
m.add = SingleValueAttribute.fromProto(proto.add);
|
|
73
|
-
}
|
|
74
|
-
if (proto.replace) {
|
|
75
|
-
m.replace = MultiValueAttribute.fromProto(proto.replace);
|
|
76
|
-
}
|
|
77
|
-
if (proto.remove) {
|
|
78
|
-
m.remove = SingleValueAttribute.fromProto(proto.remove);
|
|
79
|
-
}
|
|
80
|
-
if (proto.replaceAttributes) {
|
|
81
|
-
m.replaceAttributes = StructAttribute.fromProto(proto.replaceAttributes);
|
|
82
|
-
}
|
|
83
|
-
if (proto.addAttributes) {
|
|
84
|
-
m.addAttributes = StructAttribute.fromProto(proto.addAttributes);
|
|
85
|
-
}
|
|
86
|
-
if (proto.removeAttributes) {
|
|
87
|
-
m.removeAttributes = StructAttribute.fromProto(proto.removeAttributes);
|
|
88
|
-
}
|
|
89
|
-
return m;
|
|
90
|
-
}
|
|
91
|
-
toApiJson() {
|
|
92
|
-
const toReturn = {};
|
|
93
|
-
if (typeof this.add !== 'undefined' && this.add !== null) {
|
|
94
|
-
toReturn['add'] = 'toApiJson' in this.add ? this.add.toApiJson() : this.add;
|
|
95
|
-
}
|
|
96
|
-
if (typeof this.replace !== 'undefined' && this.replace !== null) {
|
|
97
|
-
toReturn['replace'] = 'toApiJson' in this.replace ? this.replace.toApiJson() : this.replace;
|
|
98
|
-
}
|
|
99
|
-
if (typeof this.remove !== 'undefined' && this.remove !== null) {
|
|
100
|
-
toReturn['remove'] = 'toApiJson' in this.remove ? this.remove.toApiJson() : this.remove;
|
|
101
|
-
}
|
|
102
|
-
if (typeof this.dropKey !== 'undefined') {
|
|
103
|
-
toReturn['dropKey'] = this.dropKey;
|
|
104
|
-
}
|
|
105
|
-
if (typeof this.replaceAttributes !== 'undefined' && this.replaceAttributes !== null) {
|
|
106
|
-
toReturn['replaceAttributes'] = 'toApiJson' in this.replaceAttributes ? this.replaceAttributes.toApiJson() : this.replaceAttributes;
|
|
107
|
-
}
|
|
108
|
-
if (typeof this.addAttributes !== 'undefined' && this.addAttributes !== null) {
|
|
109
|
-
toReturn['addAttributes'] = 'toApiJson' in this.addAttributes ? this.addAttributes.toApiJson() : this.addAttributes;
|
|
110
|
-
}
|
|
111
|
-
if (typeof this.removeAttributes !== 'undefined' && this.removeAttributes !== null) {
|
|
112
|
-
toReturn['removeAttributes'] = 'toApiJson' in this.removeAttributes ? this.removeAttributes.toApiJson() : this.removeAttributes;
|
|
113
|
-
}
|
|
114
|
-
return toReturn;
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
export class NamespacedContext {
|
|
118
|
-
constructor(kwargs) {
|
|
119
|
-
if (!kwargs) {
|
|
120
|
-
return;
|
|
121
|
-
}
|
|
122
|
-
Object.assign(this, kwargs);
|
|
123
|
-
}
|
|
124
|
-
static fromProto(proto) {
|
|
125
|
-
let m = new NamespacedContext();
|
|
126
|
-
m = Object.assign(m, proto);
|
|
127
|
-
return m;
|
|
128
|
-
}
|
|
129
|
-
toApiJson() {
|
|
130
|
-
const toReturn = {};
|
|
131
|
-
if (typeof this.namespace !== 'undefined') {
|
|
132
|
-
toReturn['namespace'] = this.namespace;
|
|
133
|
-
}
|
|
134
|
-
if (typeof this.type !== 'undefined') {
|
|
135
|
-
toReturn['type'] = this.type;
|
|
136
|
-
}
|
|
137
|
-
return toReturn;
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
export class Persona {
|
|
141
|
-
constructor(kwargs) {
|
|
142
|
-
if (!kwargs) {
|
|
143
|
-
return;
|
|
144
|
-
}
|
|
145
|
-
Object.assign(this, kwargs);
|
|
146
|
-
}
|
|
147
|
-
static fromProto(proto) {
|
|
148
|
-
let m = new Persona();
|
|
149
|
-
m = Object.assign(m, proto);
|
|
150
|
-
if (proto.subject) {
|
|
151
|
-
m.subject = Subject.fromProto(proto.subject);
|
|
152
|
-
}
|
|
153
|
-
if (proto.context) {
|
|
154
|
-
m.context = Context.fromProto(proto.context);
|
|
155
|
-
}
|
|
156
|
-
return m;
|
|
157
|
-
}
|
|
158
|
-
toApiJson() {
|
|
159
|
-
const toReturn = {};
|
|
160
|
-
if (typeof this.subject !== 'undefined' && this.subject !== null) {
|
|
161
|
-
toReturn['subject'] = 'toApiJson' in this.subject ? this.subject.toApiJson() : this.subject;
|
|
162
|
-
}
|
|
163
|
-
if (typeof this.context !== 'undefined' && this.context !== null) {
|
|
164
|
-
toReturn['context'] = 'toApiJson' in this.context ? this.context.toApiJson() : this.context;
|
|
165
|
-
}
|
|
166
|
-
return toReturn;
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
export class PublicKey {
|
|
170
|
-
constructor(kwargs) {
|
|
171
|
-
if (!kwargs) {
|
|
172
|
-
return;
|
|
173
|
-
}
|
|
174
|
-
Object.assign(this, kwargs);
|
|
175
|
-
}
|
|
176
|
-
static fromProto(proto) {
|
|
177
|
-
let m = new PublicKey();
|
|
178
|
-
m = Object.assign(m, proto);
|
|
179
|
-
if (proto.algorithmType) {
|
|
180
|
-
m.algorithmType = enumStringToValue(e.AlgorithmType, proto.algorithmType);
|
|
181
|
-
}
|
|
182
|
-
return m;
|
|
183
|
-
}
|
|
184
|
-
toApiJson() {
|
|
185
|
-
const toReturn = {};
|
|
186
|
-
if (typeof this.key !== 'undefined') {
|
|
187
|
-
toReturn['key'] = this.key;
|
|
188
|
-
}
|
|
189
|
-
if (typeof this.id !== 'undefined') {
|
|
190
|
-
toReturn['id'] = this.id;
|
|
191
|
-
}
|
|
192
|
-
if (typeof this.algorithmType !== 'undefined') {
|
|
193
|
-
toReturn['algorithmType'] = this.algorithmType;
|
|
194
|
-
}
|
|
195
|
-
return toReturn;
|
|
196
|
-
}
|
|
197
|
-
}
|
|
198
|
-
export class Query {
|
|
199
|
-
constructor(kwargs) {
|
|
200
|
-
if (!kwargs) {
|
|
201
|
-
return;
|
|
202
|
-
}
|
|
203
|
-
Object.assign(this, kwargs);
|
|
204
|
-
}
|
|
205
|
-
static fromProto(proto) {
|
|
206
|
-
let m = new Query();
|
|
207
|
-
m = Object.assign(m, proto);
|
|
208
|
-
return m;
|
|
209
|
-
}
|
|
210
|
-
toApiJson() {
|
|
211
|
-
const toReturn = {};
|
|
212
|
-
if (typeof this.searchTerm !== 'undefined') {
|
|
213
|
-
toReturn['searchTerm'] = this.searchTerm;
|
|
214
|
-
}
|
|
215
|
-
if (typeof this.attributeKeys !== 'undefined') {
|
|
216
|
-
toReturn['attributeKeys'] = this.attributeKeys;
|
|
217
|
-
}
|
|
218
|
-
return toReturn;
|
|
219
|
-
}
|
|
220
|
-
}
|
|
221
|
-
export class SingleValueAttribute {
|
|
222
|
-
constructor(kwargs) {
|
|
223
|
-
if (!kwargs) {
|
|
224
|
-
return;
|
|
225
|
-
}
|
|
226
|
-
Object.assign(this, kwargs);
|
|
227
|
-
}
|
|
228
|
-
static fromProto(proto) {
|
|
229
|
-
let m = new SingleValueAttribute();
|
|
230
|
-
m = Object.assign(m, proto);
|
|
231
|
-
return m;
|
|
232
|
-
}
|
|
233
|
-
toApiJson() {
|
|
234
|
-
const toReturn = {};
|
|
235
|
-
if (typeof this.key !== 'undefined') {
|
|
236
|
-
toReturn['key'] = this.key;
|
|
237
|
-
}
|
|
238
|
-
if (typeof this.value !== 'undefined') {
|
|
239
|
-
toReturn['value'] = this.value;
|
|
240
|
-
}
|
|
241
|
-
return toReturn;
|
|
242
|
-
}
|
|
243
|
-
}
|
|
244
|
-
export class Subject {
|
|
245
|
-
constructor(kwargs) {
|
|
246
|
-
if (!kwargs) {
|
|
247
|
-
return;
|
|
248
|
-
}
|
|
249
|
-
Object.assign(this, kwargs);
|
|
250
|
-
}
|
|
251
|
-
static fromProto(proto) {
|
|
252
|
-
let m = new Subject();
|
|
253
|
-
m = Object.assign(m, proto);
|
|
254
|
-
if (proto.attributes) {
|
|
255
|
-
m.attributes = proto.attributes.map(MultiValueAttribute.fromProto);
|
|
256
|
-
}
|
|
257
|
-
if (proto.created) {
|
|
258
|
-
m.created = new Date(proto.created);
|
|
259
|
-
}
|
|
260
|
-
if (proto.updated) {
|
|
261
|
-
m.updated = new Date(proto.updated);
|
|
262
|
-
}
|
|
263
|
-
if (proto.lastLogin) {
|
|
264
|
-
m.lastLogin = new Date(proto.lastLogin);
|
|
265
|
-
}
|
|
266
|
-
if (proto.publicKeys) {
|
|
267
|
-
m.publicKeys = proto.publicKeys.map(PublicKey.fromProto);
|
|
268
|
-
}
|
|
269
|
-
if (proto.structAttributes) {
|
|
270
|
-
m.structAttributes = StructAttribute.fromProto(proto.structAttributes);
|
|
271
|
-
}
|
|
272
|
-
return m;
|
|
273
|
-
}
|
|
274
|
-
toApiJson() {
|
|
275
|
-
const toReturn = {};
|
|
276
|
-
if (typeof this.subjectId !== 'undefined') {
|
|
277
|
-
toReturn['subjectId'] = this.subjectId;
|
|
278
|
-
}
|
|
279
|
-
if (typeof this.email !== 'undefined') {
|
|
280
|
-
toReturn['email'] = this.email;
|
|
281
|
-
}
|
|
282
|
-
if (typeof this.userId !== 'undefined') {
|
|
283
|
-
toReturn['userId'] = this.userId;
|
|
284
|
-
}
|
|
285
|
-
if (typeof this.partnerId !== 'undefined') {
|
|
286
|
-
toReturn['partnerId'] = this.partnerId;
|
|
287
|
-
}
|
|
288
|
-
if (typeof this.attributes !== 'undefined' && this.attributes !== null) {
|
|
289
|
-
toReturn['attributes'] = 'toApiJson' in this.attributes ? this.attributes.toApiJson() : this.attributes;
|
|
290
|
-
}
|
|
291
|
-
if (typeof this.created !== 'undefined' && this.created !== null) {
|
|
292
|
-
toReturn['created'] = 'toApiJson' in this.created ? this.created.toApiJson() : this.created;
|
|
293
|
-
}
|
|
294
|
-
if (typeof this.updated !== 'undefined' && this.updated !== null) {
|
|
295
|
-
toReturn['updated'] = 'toApiJson' in this.updated ? this.updated.toApiJson() : this.updated;
|
|
296
|
-
}
|
|
297
|
-
if (typeof this.lastLogin !== 'undefined' && this.lastLogin !== null) {
|
|
298
|
-
toReturn['lastLogin'] = 'toApiJson' in this.lastLogin ? this.lastLogin.toApiJson() : this.lastLogin;
|
|
299
|
-
}
|
|
300
|
-
if (typeof this.publicKeys !== 'undefined' && this.publicKeys !== null) {
|
|
301
|
-
toReturn['publicKeys'] = 'toApiJson' in this.publicKeys ? this.publicKeys.toApiJson() : this.publicKeys;
|
|
302
|
-
}
|
|
303
|
-
if (typeof this.structAttributes !== 'undefined' && this.structAttributes !== null) {
|
|
304
|
-
toReturn['structAttributes'] = 'toApiJson' in this.structAttributes ? this.structAttributes.toApiJson() : this.structAttributes;
|
|
305
|
-
}
|
|
306
|
-
return toReturn;
|
|
307
|
-
}
|
|
308
|
-
}
|
|
309
|
-
export class SubjectResult {
|
|
310
|
-
constructor(kwargs) {
|
|
311
|
-
if (!kwargs) {
|
|
312
|
-
return;
|
|
313
|
-
}
|
|
314
|
-
Object.assign(this, kwargs);
|
|
315
|
-
}
|
|
316
|
-
static fromProto(proto) {
|
|
317
|
-
let m = new SubjectResult();
|
|
318
|
-
m = Object.assign(m, proto);
|
|
319
|
-
if (proto.subject) {
|
|
320
|
-
m.subject = Subject.fromProto(proto.subject);
|
|
321
|
-
}
|
|
322
|
-
return m;
|
|
323
|
-
}
|
|
324
|
-
toApiJson() {
|
|
325
|
-
const toReturn = {};
|
|
326
|
-
if (typeof this.subject !== 'undefined' && this.subject !== null) {
|
|
327
|
-
toReturn['subject'] = 'toApiJson' in this.subject ? this.subject.toApiJson() : this.subject;
|
|
328
|
-
}
|
|
329
|
-
return toReturn;
|
|
330
|
-
}
|
|
331
|
-
}
|
|
332
|
-
export class TypedContext {
|
|
333
|
-
constructor(kwargs) {
|
|
334
|
-
if (!kwargs) {
|
|
335
|
-
return;
|
|
336
|
-
}
|
|
337
|
-
Object.assign(this, kwargs);
|
|
338
|
-
}
|
|
339
|
-
static fromProto(proto) {
|
|
340
|
-
let m = new TypedContext();
|
|
341
|
-
m = Object.assign(m, proto);
|
|
342
|
-
return m;
|
|
343
|
-
}
|
|
344
|
-
toApiJson() {
|
|
345
|
-
const toReturn = {};
|
|
346
|
-
if (typeof this.type !== 'undefined') {
|
|
347
|
-
toReturn['type'] = this.type;
|
|
348
|
-
}
|
|
349
|
-
return toReturn;
|
|
350
|
-
}
|
|
351
|
-
}
|
|
352
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ViamVjdHMuanMiLCJzb3VyY2VSb290IjoiL3dvcmtzcGFjZS9zZGtzL3R5cGVzY3JpcHQvc3JjL2lhbV9zZGsvc3JjLyIsInNvdXJjZXMiOlsibGliL19pbnRlcm5hbC9vYmplY3RzL3N1YmplY3RzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU9BLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDL0MsT0FBTyxLQUFLLENBQUMsTUFBTSxVQUFVLENBQUM7QUFFOUIsTUFBTSxVQUFVLGlCQUFpQixDQUFJLE9BQVksRUFBRSxLQUFhO0lBQzlELElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFO1FBQzdCLE9BQU8sS0FBSyxDQUFDO0tBQ2Q7SUFDRCxPQUFPLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztBQUN4QixDQUFDO0FBRUQsTUFBTSxPQUFPLE9BQU87SUFZaEIsWUFBWSxNQUEyQjtRQUNuQyxJQUFJLENBQUMsTUFBTSxFQUFFO1lBQ1QsT0FBTztTQUNWO1FBQ0QsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQWJELE1BQU0sQ0FBQyxTQUFTLENBQUMsS0FBVTtRQUN2QixJQUFJLENBQUMsR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQ3RCLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUM1QixJQUFJLEtBQUssQ0FBQyxVQUFVLEVBQUU7WUFBQyxDQUFDLENBQUMsVUFBVSxHQUFHLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUM7U0FBQztRQUNyRixJQUFJLEtBQUssQ0FBQyxLQUFLLEVBQUU7WUFBQyxDQUFDLENBQUMsS0FBSyxHQUFHLFlBQVksQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1NBQUM7UUFDakUsT0FBTyxDQUFDLENBQUM7SUFD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Q0FBQyxNQUFNLENBQUMsQ0FBQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzVCLE9BQU8sQ0FBQyxDQUFDO0lBQ2IsQ0FBQztJQVNELFNBQVM7UUFDTCxNQUFNLFFBQVEsR0FFVixFQUFFLENBQUM7UUFFUCxJQUFJLE9BQU8sSUFBSSxDQUFDLElBQUksS0FBSyxXQUFXLEVBQUU7WUFBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQztTQUFDO1FBQ3JFLE9BQU8sUUFBUSxDQUFDO0lBQ3BCLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbIi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuLy8gQ29kZSBnZW5lcmF0ZWQgYnkgc2RrZ2VuXG4vLyBETyBOT1QgRURJVCEuXG4vL1xuLy8gT2JqZWN0cy5cbi8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuaW1wb3J0ICogYXMgaSBmcm9tICcuLi9pbnRlcmZhY2VzJztcbmltcG9ydCB7IFN0cnVjdEF0dHJpYnV0ZSB9IGZyb20gJy4vYXR0cmlidXRlcyc7XG5pbXBvcnQgKiBhcyBlIGZyb20gJy4uL2VudW1zJztcblxuZXhwb3J0IGZ1bmN0aW9uIGVudW1TdHJpbmdUb1ZhbHVlPEU+KGVudW1SZWY6IGFueSwgdmFsdWU6IHN0cmluZyk6IEUge1xuICBpZiAodHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJykge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuICByZXR1cm4gZW51bVJlZlt2YWx1ZV07XG59XG5cbmV4cG9ydCBjbGFzcyBDb250ZXh0IGltcGxlbWVudHMgaS5Db250ZXh0SW50ZXJmYWNlIHtcbiAgICBuYW1lc3BhY2VkOiBOYW1lc3BhY2VkQ29udGV4dDtcbiAgICB0eXBlZDogVHlwZWRDb250ZXh0O1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogQ29udGV4dCB7XG4gICAgICAgIGxldCBtID0gbmV3IENvbnRleHQoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8ubmFtZXNwYWNlZCkge20ubmFtZXNwYWNlZCA9IE5hbWVzcGFjZWRDb250ZXh0LmZyb21Qcm90byhwcm90by5uYW1lc3BhY2VkKTt9XG4gICAgICAgIGlmIChwcm90by50eXBlZCkge20udHlwZWQgPSBUeXBlZENvbnRleHQuZnJvbVByb3RvKHByb3RvLnR5cGVkKTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuQ29udGV4dEludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLm5hbWVzcGFjZWQgIT09ICd1bmRlZmluZWQnICYmIHRoaXMubmFtZXNwYWNlZCAhPT0gbnVsbCkge3RvUmV0dXJuWyduYW1lc3BhY2VkJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLm5hbWVzcGFjZWQgPyAodGhpcy5uYW1lc3BhY2VkIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLm5hbWVzcGFjZWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMudHlwZWQgIT09ICd1bmRlZmluZWQnICYmIHRoaXMudHlwZWQgIT09IG51bGwpIHt0b1JldHVyblsndHlwZWQnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMudHlwZWQgPyAodGhpcy50eXBlZCBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy50eXBlZDt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBNdWx0aVZhbHVlQXR0cmlidXRlIGltcGxlbWVudHMgaS5NdWx0aVZhbHVlQXR0cmlidXRlSW50ZXJmYWNlIHtcbiAgICBrZXk6IHN0cmluZztcbiAgICB2YWx1ZXM6IHN0cmluZ1tdO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogTXVsdGlWYWx1ZUF0dHJpYnV0ZSB7XG4gICAgICAgIGxldCBtID0gbmV3IE11bHRpVmFsdWVBdHRyaWJ1dGUoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLk11bHRpVmFsdWVBdHRyaWJ1dGVJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5rZXkgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2tleSddID0gdGhpcy5rZXk7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMudmFsdWVzICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWyd2YWx1ZXMnXSA9IHRoaXMudmFsdWVzO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIE11dGF0aW9uIGltcGxlbWVudHMgaS5NdXRhdGlvbkludGVyZmFjZSB7XG4gICAgYWRkOiBTaW5nbGVWYWx1ZUF0dHJpYnV0ZTtcbiAgICByZXBsYWNlOiBNdWx0aVZhbHVlQXR0cmlidXRlO1xuICAgIHJlbW92ZTogU2luZ2xlVmFsdWVBdHRyaWJ1dGU7XG4gICAgZHJvcEtleTogc3RyaW5nO1xuICAgIHJlcGxhY2VBdHRyaWJ1dGVzOiBTdHJ1Y3RBdHRyaWJ1dGU7XG4gICAgYWRkQXR0cmlidXRlczogU3RydWN0QXR0cmlidXRlO1xuICAgIHJlbW92ZUF0dHJpYnV0ZXM6IFN0cnVjdEF0dHJpYnV0ZTtcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IE11dGF0aW9uIHtcbiAgICAgICAgbGV0IG0gPSBuZXcgTXV0YXRpb24oKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8uYWRkKSB7bS5hZGQgPSBTaW5nbGVWYWx1ZUF0dHJpYnV0ZS5mcm9tUHJvdG8ocHJvdG8uYWRkKTt9XG4gICAgICAgIGlmIChwcm90by5yZXBsYWNlKSB7bS5yZXBsYWNlID0gTXVsdGlWYWx1ZUF0dHJpYnV0ZS5mcm9tUHJvdG8ocHJvdG8ucmVwbGFjZSk7fVxuICAgICAgICBpZiAocHJvdG8ucmVtb3ZlKSB7bS5yZW1vdmUgPSBTaW5nbGVWYWx1ZUF0dHJpYnV0ZS5mcm9tUHJvdG8ocHJvdG8ucmVtb3ZlKTt9XG4gICAgICAgIGlmIChwcm90by5yZXBsYWNlQXR0cmlidXRlcykge20ucmVwbGFjZUF0dHJpYnV0ZXMgPSBTdHJ1Y3RBdHRyaWJ1dGUuZnJvbVByb3RvKHByb3RvLnJlcGxhY2VBdHRyaWJ1dGVzKTt9XG4gICAgICAgIGlmIChwcm90by5hZGRBdHRyaWJ1dGVzKSB7bS5hZGRBdHRyaWJ1dGVzID0gU3RydWN0QXR0cmlidXRlLmZyb21Qcm90byhwcm90by5hZGRBdHRyaWJ1dGVzKTt9XG4gICAgICAgIGlmIChwcm90by5yZW1vdmVBdHRyaWJ1dGVzKSB7bS5yZW1vdmVBdHRyaWJ1dGVzID0gU3RydWN0QXR0cmlidXRlLmZyb21Qcm90byhwcm90by5yZW1vdmVBdHRyaWJ1dGVzKTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuTXV0YXRpb25JbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5hZGQgIT09ICd1bmRlZmluZWQnICYmIHRoaXMuYWRkICE9PSBudWxsKSB7dG9SZXR1cm5bJ2FkZCddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5hZGQgPyAodGhpcy5hZGQgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMuYWRkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnJlcGxhY2UgIT09ICd1bmRlZmluZWQnICYmIHRoaXMucmVwbGFjZSAhPT0gbnVsbCkge3RvUmV0dXJuWydyZXBsYWNlJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLnJlcGxhY2UgPyAodGhpcy5yZXBsYWNlIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLnJlcGxhY2U7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMucmVtb3ZlICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLnJlbW92ZSAhPT0gbnVsbCkge3RvUmV0dXJuWydyZW1vdmUnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMucmVtb3ZlID8gKHRoaXMucmVtb3ZlIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLnJlbW92ZTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5kcm9wS2V5ICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydkcm9wS2V5J10gPSB0aGlzLmRyb3BLZXk7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMucmVwbGFjZUF0dHJpYnV0ZXMgIT09ICd1bmRlZmluZWQnICYmIHRoaXMucmVwbGFjZUF0dHJpYnV0ZXMgIT09IG51bGwpIHt0b1JldHVyblsncmVwbGFjZUF0dHJpYnV0ZXMnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMucmVwbGFjZUF0dHJpYnV0ZXMgPyAodGhpcy5yZXBsYWNlQXR0cmlidXRlcyBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5yZXBsYWNlQXR0cmlidXRlczt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5hZGRBdHRyaWJ1dGVzICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLmFkZEF0dHJpYnV0ZXMgIT09IG51bGwpIHt0b1JldHVyblsnYWRkQXR0cmlidXRlcyddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5hZGRBdHRyaWJ1dGVzID8gKHRoaXMuYWRkQXR0cmlidXRlcyBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5hZGRBdHRyaWJ1dGVzO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnJlbW92ZUF0dHJpYnV0ZXMgIT09ICd1bmRlZmluZWQnICYmIHRoaXMucmVtb3ZlQXR0cmlidXRlcyAhPT0gbnVsbCkge3RvUmV0dXJuWydyZW1vdmVBdHRyaWJ1dGVzJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLnJlbW92ZUF0dHJpYnV0ZXMgPyAodGhpcy5yZW1vdmVBdHRyaWJ1dGVzIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLnJlbW92ZUF0dHJpYnV0ZXM7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgTmFtZXNwYWNlZENvbnRleHQgaW1wbGVtZW50cyBpLk5hbWVzcGFjZWRDb250ZXh0SW50ZXJmYWNlIHtcbiAgICBuYW1lc3BhY2U6IHN0cmluZztcbiAgICB0eXBlOiBzdHJpbmc7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBOYW1lc3BhY2VkQ29udGV4dCB7XG4gICAgICAgIGxldCBtID0gbmV3IE5hbWVzcGFjZWRDb250ZXh0KCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5OYW1lc3BhY2VkQ29udGV4dEludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLm5hbWVzcGFjZSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsnbmFtZXNwYWNlJ10gPSB0aGlzLm5hbWVzcGFjZTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy50eXBlICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWyd0eXBlJ10gPSB0aGlzLnR5cGU7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgUGVyc29uYSBpbXBsZW1lbnRzIGkuUGVyc29uYUludGVyZmFjZSB7XG4gICAgc3ViamVjdDogU3ViamVjdDtcbiAgICBjb250ZXh0OiBDb250ZXh0O1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogUGVyc29uYSB7XG4gICAgICAgIGxldCBtID0gbmV3IFBlcnNvbmEoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8uc3ViamVjdCkge20uc3ViamVjdCA9IFN1YmplY3QuZnJvbVByb3RvKHByb3RvLnN1YmplY3QpO31cbiAgICAgICAgaWYgKHByb3RvLmNvbnRleHQpIHttLmNvbnRleHQgPSBDb250ZXh0LmZyb21Qcm90byhwcm90by5jb250ZXh0KTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuUGVyc29uYUludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnN1YmplY3QgIT09ICd1bmRlZmluZWQnICYmIHRoaXMuc3ViamVjdCAhPT0gbnVsbCkge3RvUmV0dXJuWydzdWJqZWN0J10gPSAndG9BcGlKc29uJyBpbiB0aGlzLnN1YmplY3QgPyAodGhpcy5zdWJqZWN0IGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLnN1YmplY3Q7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuY29udGV4dCAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5jb250ZXh0ICE9PSBudWxsKSB7dG9SZXR1cm5bJ2NvbnRleHQnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMuY29udGV4dCA/ICh0aGlzLmNvbnRleHQgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMuY29udGV4dDt9XG4gICAgICAgIHJldHVybiB0b1JldHVybjtcbiAgICB9XG59XG5cbmV4cG9ydCBjbGFzcyBQdWJsaWNLZXkgaW1wbGVtZW50cyBpLlB1YmxpY0tleUludGVyZmFjZSB7XG4gICAga2V5OiBzdHJpbmc7XG4gICAgaWQ6IHN0cmluZztcbiAgICBhbGdvcml0aG1UeXBlOiBlLkFsZ29yaXRobVR5cGU7XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBQdWJsaWNLZXkge1xuICAgICAgICBsZXQgbSA9IG5ldyBQdWJsaWNLZXkoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8uYWxnb3JpdGhtVHlwZSkge20uYWxnb3JpdGhtVHlwZSA9IGVudW1TdHJpbmdUb1ZhbHVlPGUuQWxnb3JpdGhtVHlwZT4oZS5BbGdvcml0aG1UeXBlLCBwcm90by5hbGdvcml0aG1UeXBlKTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuUHVibGljS2V5SW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMua2V5ICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydrZXknXSA9IHRoaXMua2V5O31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLmlkICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydpZCddID0gdGhpcy5pZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5hbGdvcml0aG1UeXBlICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydhbGdvcml0aG1UeXBlJ10gPSB0aGlzLmFsZ29yaXRobVR5cGU7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgUXVlcnkgaW1wbGVtZW50cyBpLlF1ZXJ5SW50ZXJmYWNlIHtcbiAgICBzZWFyY2hUZXJtOiBzdHJpbmc7XG4gICAgYXR0cmlidXRlS2V5czogc3RyaW5nW107XG5cbiAgICBzdGF0aWMgZnJvbVByb3RvKHByb3RvOiBhbnkpOiBRdWVyeSB7XG4gICAgICAgIGxldCBtID0gbmV3IFF1ZXJ5KCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgcmV0dXJuIG07XG4gICAgfVxuXG4gICAgY29uc3RydWN0b3Ioa3dhcmdzPzogaS5RdWVyeUludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnNlYXJjaFRlcm0gIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3NlYXJjaFRlcm0nXSA9IHRoaXMuc2VhcmNoVGVybTt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5hdHRyaWJ1dGVLZXlzICE9PSAndW5kZWZpbmVkJykge3RvUmV0dXJuWydhdHRyaWJ1dGVLZXlzJ10gPSB0aGlzLmF0dHJpYnV0ZUtleXM7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgU2luZ2xlVmFsdWVBdHRyaWJ1dGUgaW1wbGVtZW50cyBpLlNpbmdsZVZhbHVlQXR0cmlidXRlSW50ZXJmYWNlIHtcbiAgICBrZXk6IHN0cmluZztcbiAgICB2YWx1ZTogc3RyaW5nO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogU2luZ2xlVmFsdWVBdHRyaWJ1dGUge1xuICAgICAgICBsZXQgbSA9IG5ldyBTaW5nbGVWYWx1ZUF0dHJpYnV0ZSgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuU2luZ2xlVmFsdWVBdHRyaWJ1dGVJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5rZXkgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2tleSddID0gdGhpcy5rZXk7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMudmFsdWUgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3ZhbHVlJ10gPSB0aGlzLnZhbHVlO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuZXhwb3J0IGNsYXNzIFN1YmplY3QgaW1wbGVtZW50cyBpLlN1YmplY3RJbnRlcmZhY2Uge1xuICAgIHN1YmplY3RJZDogc3RyaW5nO1xuICAgIGVtYWlsOiBzdHJpbmc7XG4gICAgdXNlcklkOiBzdHJpbmc7XG4gICAgcGFydG5lcklkOiBzdHJpbmc7XG4gICAgYXR0cmlidXRlczogTXVsdGlWYWx1ZUF0dHJpYnV0ZVtdO1xuICAgIGNyZWF0ZWQ6IERhdGU7XG4gICAgdXBkYXRlZDogRGF0ZTtcbiAgICBsYXN0TG9naW46IERhdGU7XG4gICAgcHVibGljS2V5czogUHVibGljS2V5W107XG4gICAgc3RydWN0QXR0cmlidXRlczogU3RydWN0QXR0cmlidXRlO1xuXG4gICAgc3RhdGljIGZyb21Qcm90byhwcm90bzogYW55KTogU3ViamVjdCB7XG4gICAgICAgIGxldCBtID0gbmV3IFN1YmplY3QoKTtcbiAgICAgICAgbSA9IE9iamVjdC5hc3NpZ24obSwgcHJvdG8pO1xuICAgICAgICBpZiAocHJvdG8uYXR0cmlidXRlcykge20uYXR0cmlidXRlcyA9IHByb3RvLmF0dHJpYnV0ZXMubWFwKE11bHRpVmFsdWVBdHRyaWJ1dGUuZnJvbVByb3RvKTt9XG4gICAgICAgIGlmIChwcm90by5jcmVhdGVkKSB7bS5jcmVhdGVkID0gbmV3IERhdGUocHJvdG8uY3JlYXRlZCk7fVxuICAgICAgICBpZiAocHJvdG8udXBkYXRlZCkge20udXBkYXRlZCA9IG5ldyBEYXRlKHByb3RvLnVwZGF0ZWQpO31cbiAgICAgICAgaWYgKHByb3RvLmxhc3RMb2dpbikge20ubGFzdExvZ2luID0gbmV3IERhdGUocHJvdG8ubGFzdExvZ2luKTt9XG4gICAgICAgIGlmIChwcm90by5wdWJsaWNLZXlzKSB7bS5wdWJsaWNLZXlzID0gcHJvdG8ucHVibGljS2V5cy5tYXAoUHVibGljS2V5LmZyb21Qcm90byk7fVxuICAgICAgICBpZiAocHJvdG8uc3RydWN0QXR0cmlidXRlcykge20uc3RydWN0QXR0cmlidXRlcyA9IFN0cnVjdEF0dHJpYnV0ZS5mcm9tUHJvdG8ocHJvdG8uc3RydWN0QXR0cmlidXRlcyk7fVxuICAgICAgICByZXR1cm4gbTtcbiAgICB9XG5cbiAgICBjb25zdHJ1Y3Rvcihrd2FyZ3M/OiBpLlN1YmplY3RJbnRlcmZhY2UpIHtcbiAgICAgICAgaWYgKCFrd2FyZ3MpIHtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICBPYmplY3QuYXNzaWduKHRoaXMsIGt3YXJncyk7XG4gICAgfVxuXG4gICAgdG9BcGlKc29uKCk6IG9iamVjdCB7XG4gICAgICAgIGNvbnN0IHRvUmV0dXJuOiB7XG4gICAgICAgICAgICBba2V5OiBzdHJpbmddOiBhbnk7XG4gICAgICAgIH0gPSB7fTtcbiAgICAgICAgXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5zdWJqZWN0SWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3N1YmplY3RJZCddID0gdGhpcy5zdWJqZWN0SWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuZW1haWwgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ2VtYWlsJ10gPSB0aGlzLmVtYWlsO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnVzZXJJZCAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsndXNlcklkJ10gPSB0aGlzLnVzZXJJZDt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5wYXJ0bmVySWQgIT09ICd1bmRlZmluZWQnKSB7dG9SZXR1cm5bJ3BhcnRuZXJJZCddID0gdGhpcy5wYXJ0bmVySWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMuYXR0cmlidXRlcyAhPT0gJ3VuZGVmaW5lZCcgJiYgdGhpcy5hdHRyaWJ1dGVzICE9PSBudWxsKSB7dG9SZXR1cm5bJ2F0dHJpYnV0ZXMnXSA9ICd0b0FwaUpzb24nIGluIHRoaXMuYXR0cmlidXRlcyA/ICh0aGlzLmF0dHJpYnV0ZXMgYXMgYW55KS50b0FwaUpzb24oKSA6IHRoaXMuYXR0cmlidXRlczt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5jcmVhdGVkICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLmNyZWF0ZWQgIT09IG51bGwpIHt0b1JldHVyblsnY3JlYXRlZCddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5jcmVhdGVkID8gKHRoaXMuY3JlYXRlZCBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5jcmVhdGVkO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnVwZGF0ZWQgIT09ICd1bmRlZmluZWQnICYmIHRoaXMudXBkYXRlZCAhPT0gbnVsbCkge3RvUmV0dXJuWyd1cGRhdGVkJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLnVwZGF0ZWQgPyAodGhpcy51cGRhdGVkIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLnVwZGF0ZWQ7fVxuICAgICAgICBpZiAodHlwZW9mIHRoaXMubGFzdExvZ2luICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLmxhc3RMb2dpbiAhPT0gbnVsbCkge3RvUmV0dXJuWydsYXN0TG9naW4nXSA9ICd0b0FwaUpzb24nIGluIHRoaXMubGFzdExvZ2luID8gKHRoaXMubGFzdExvZ2luIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLmxhc3RMb2dpbjt9XG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5wdWJsaWNLZXlzICE9PSAndW5kZWZpbmVkJyAmJiB0aGlzLnB1YmxpY0tleXMgIT09IG51bGwpIHt0b1JldHVyblsncHVibGljS2V5cyddID0gJ3RvQXBpSnNvbicgaW4gdGhpcy5wdWJsaWNLZXlzID8gKHRoaXMucHVibGljS2V5cyBhcyBhbnkpLnRvQXBpSnNvbigpIDogdGhpcy5wdWJsaWNLZXlzO31cbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnN0cnVjdEF0dHJpYnV0ZXMgIT09ICd1bmRlZmluZWQnICYmIHRoaXMuc3RydWN0QXR0cmlidXRlcyAhPT0gbnVsbCkge3RvUmV0dXJuWydzdHJ1Y3RBdHRyaWJ1dGVzJ10gPSAndG9BcGlKc29uJyBpbiB0aGlzLnN0cnVjdEF0dHJpYnV0ZXMgPyAodGhpcy5zdHJ1Y3RBdHRyaWJ1dGVzIGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLnN0cnVjdEF0dHJpYnV0ZXM7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgU3ViamVjdFJlc3VsdCBpbXBsZW1lbnRzIGkuU3ViamVjdFJlc3VsdEludGVyZmFjZSB7XG4gICAgc3ViamVjdDogU3ViamVjdDtcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IFN1YmplY3RSZXN1bHQge1xuICAgICAgICBsZXQgbSA9IG5ldyBTdWJqZWN0UmVzdWx0KCk7XG4gICAgICAgIG0gPSBPYmplY3QuYXNzaWduKG0sIHByb3RvKTtcbiAgICAgICAgaWYgKHByb3RvLnN1YmplY3QpIHttLnN1YmplY3QgPSBTdWJqZWN0LmZyb21Qcm90byhwcm90by5zdWJqZWN0KTt9XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuU3ViamVjdFJlc3VsdEludGVyZmFjZSkge1xuICAgICAgICBpZiAoIWt3YXJncykge1xuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG4gICAgICAgIE9iamVjdC5hc3NpZ24odGhpcywga3dhcmdzKTtcbiAgICB9XG5cbiAgICB0b0FwaUpzb24oKTogb2JqZWN0IHtcbiAgICAgICAgY29uc3QgdG9SZXR1cm46IHtcbiAgICAgICAgICAgIFtrZXk6IHN0cmluZ106IGFueTtcbiAgICAgICAgfSA9IHt9O1xuICAgICAgICBcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnN1YmplY3QgIT09ICd1bmRlZmluZWQnICYmIHRoaXMuc3ViamVjdCAhPT0gbnVsbCkge3RvUmV0dXJuWydzdWJqZWN0J10gPSAndG9BcGlKc29uJyBpbiB0aGlzLnN1YmplY3QgPyAodGhpcy5zdWJqZWN0IGFzIGFueSkudG9BcGlKc29uKCkgOiB0aGlzLnN1YmplY3Q7fVxuICAgICAgICByZXR1cm4gdG9SZXR1cm47XG4gICAgfVxufVxuXG5leHBvcnQgY2xhc3MgVHlwZWRDb250ZXh0IGltcGxlbWVudHMgaS5UeXBlZENvbnRleHRJbnRlcmZhY2Uge1xuICAgIHR5cGU6IHN0cmluZztcblxuICAgIHN0YXRpYyBmcm9tUHJvdG8ocHJvdG86IGFueSk6IFR5cGVkQ29udGV4dCB7XG4gICAgICAgIGxldCBtID0gbmV3IFR5cGVkQ29udGV4dCgpO1xuICAgICAgICBtID0gT2JqZWN0LmFzc2lnbihtLCBwcm90byk7XG4gICAgICAgIHJldHVybiBtO1xuICAgIH1cblxuICAgIGNvbnN0cnVjdG9yKGt3YXJncz86IGkuVHlwZWRDb250ZXh0SW50ZXJmYWNlKSB7XG4gICAgICAgIGlmICgha3dhcmdzKSB7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgT2JqZWN0LmFzc2lnbih0aGlzLCBrd2FyZ3MpO1xuICAgIH1cblxuICAgIHRvQXBpSnNvbigpOiBvYmplY3Qge1xuICAgICAgICBjb25zdCB0b1JldHVybjoge1xuICAgICAgICAgICAgW2tleTogc3RyaW5nXTogYW55O1xuICAgICAgICB9ID0ge307XG4gICAgICAgIFxuICAgICAgICBpZiAodHlwZW9mIHRoaXMudHlwZSAhPT0gJ3VuZGVmaW5lZCcpIHt0b1JldHVyblsndHlwZSddID0gdGhpcy50eXBlO31cbiAgICAgICAgcmV0dXJuIHRvUmV0dXJuO1xuICAgIH1cbn1cblxuIl19
|