ngrx-entity-crud 12.0.6-beta.2
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/README.md +259 -0
- package/bundles/ngrx-entity-crud.umd.js +1829 -0
- package/bundles/ngrx-entity-crud.umd.js.map +1 -0
- package/esm2015/lib/actions.js +88 -0
- package/esm2015/lib/base-crud-gql.service.js +71 -0
- package/esm2015/lib/base-crud.service.js +136 -0
- package/esm2015/lib/create_adapter.js +14 -0
- package/esm2015/lib/effect.js +467 -0
- package/esm2015/lib/entity_state.js +23 -0
- package/esm2015/lib/ibase-crud-service.js +2 -0
- package/esm2015/lib/j-ngrx-filter.js +133 -0
- package/esm2015/lib/models.js +17 -0
- package/esm2015/lib/reducer.js +353 -0
- package/esm2015/lib/state_selectors.js +56 -0
- package/esm2015/lib/utils.js +19 -0
- package/esm2015/ngrx-entity-crud.js +5 -0
- package/esm2015/public-api.js +7 -0
- package/fesm2015/ngrx-entity-crud.js +1367 -0
- package/fesm2015/ngrx-entity-crud.js.map +1 -0
- package/lib/actions.d.ts +5 -0
- package/lib/actions.d.ts.map +1 -0
- package/lib/base-crud-gql.service.d.ts +19 -0
- package/lib/base-crud-gql.service.d.ts.map +1 -0
- package/lib/base-crud.service.d.ts +34 -0
- package/lib/base-crud.service.d.ts.map +1 -0
- package/lib/create_adapter.d.ts +6 -0
- package/lib/create_adapter.d.ts.map +1 -0
- package/lib/effect.d.ts +132 -0
- package/lib/effect.d.ts.map +1 -0
- package/lib/entity_state.d.ts +9 -0
- package/lib/entity_state.d.ts.map +1 -0
- package/lib/ibase-crud-service.d.ts +13 -0
- package/lib/ibase-crud-service.d.ts.map +1 -0
- package/lib/j-ngrx-filter.d.ts +14 -0
- package/lib/j-ngrx-filter.d.ts.map +1 -0
- package/lib/models.d.ts +494 -0
- package/lib/models.d.ts.map +1 -0
- package/lib/reducer.d.ts +11 -0
- package/lib/reducer.d.ts.map +1 -0
- package/lib/state_selectors.d.ts +5 -0
- package/lib/state_selectors.d.ts.map +1 -0
- package/lib/utils.d.ts +8 -0
- package/lib/utils.d.ts.map +1 -0
- package/ngrx-entity-crud.d.ts +5 -0
- package/ngrx-entity-crud.d.ts.map +1 -0
- package/ngrx-entity-crud.metadata.json +1 -0
- package/package.json +41 -0
- package/public-api.d.ts +7 -0
- package/public-api.d.ts.map +1 -0
- package/schematics/auth/files/model/auth.ts +17 -0
- package/schematics/auth/files/store/auth-store/actions.ts +30 -0
- package/schematics/auth/files/store/auth-store/auth-mock.service.ts +95 -0
- package/schematics/auth/files/store/auth-store/auth-store.module.ts +34 -0
- package/schematics/auth/files/store/auth-store/auth.guard.ts +44 -0
- package/schematics/auth/files/store/auth-store/auth.service.ts +28 -0
- package/schematics/auth/files/store/auth-store/conf.ts +2 -0
- package/schematics/auth/files/store/auth-store/effects.ts +53 -0
- package/schematics/auth/files/store/auth-store/index.d.ts +13 -0
- package/schematics/auth/files/store/auth-store/index.ts +13 -0
- package/schematics/auth/files/store/auth-store/names.ts +3 -0
- package/schematics/auth/files/store/auth-store/reducer.ts +16 -0
- package/schematics/auth/files/store/auth-store/selectors.ts +51 -0
- package/schematics/auth/files/store/auth-store/state.ts +16 -0
- package/schematics/auth/files/views/login/components/logout-button/logout-button.component.ts +49 -0
- package/schematics/auth/files/views/login/login-main/login-main.component.html +25 -0
- package/schematics/auth/files/views/login/login-main/login-main.component.ts +57 -0
- package/schematics/auth/files/views/login/login-routing.module.ts +30 -0
- package/schematics/auth/files/views/login/login.module.ts +30 -0
- package/schematics/auth/index.d.ts +2 -0
- package/schematics/auth/index.js +77 -0
- package/schematics/auth/index.js.map +1 -0
- package/schematics/auth/schema.json +21 -0
- package/schematics/auth0/files/store/auth-store/actions.ts +21 -0
- package/schematics/auth0/files/store/auth-store/auth-store.module.ts +32 -0
- package/schematics/auth0/files/store/auth-store/auth.guard.ts +44 -0
- package/schematics/auth0/files/store/auth-store/authentication.service.ts +32 -0
- package/schematics/auth0/files/store/auth-store/conf.ts +2 -0
- package/schematics/auth0/files/store/auth-store/effects.ts +59 -0
- package/schematics/auth0/files/store/auth-store/index.d.ts +13 -0
- package/schematics/auth0/files/store/auth-store/index.ts +13 -0
- package/schematics/auth0/files/store/auth-store/login.component.ts +75 -0
- package/schematics/auth0/files/store/auth-store/names.ts +3 -0
- package/schematics/auth0/files/store/auth-store/profile.ts +12 -0
- package/schematics/auth0/files/store/auth-store/reducer.ts +23 -0
- package/schematics/auth0/files/store/auth-store/selectors.ts +24 -0
- package/schematics/auth0/files/store/auth-store/state.ts +11 -0
- package/schematics/auth0/index.d.ts +2 -0
- package/schematics/auth0/index.js +67 -0
- package/schematics/auth0/index.js.map +1 -0
- package/schematics/auth0/schema.json +21 -0
- package/schematics/collection.json +30 -0
- package/schematics/my-utility.d.ts +58 -0
- package/schematics/my-utility.js +257 -0
- package/schematics/my-utility.js.map +1 -0
- package/schematics/ng-add/files/root-store/index.d.ts +8 -0
- package/schematics/ng-add/files/root-store/index.ts +8 -0
- package/schematics/ng-add/files/root-store/root-reducer.ts +11 -0
- package/schematics/ng-add/files/root-store/root-store.module.ts +29 -0
- package/schematics/ng-add/files/root-store/router-store/actions.ts +27 -0
- package/schematics/ng-add/files/root-store/router-store/effects.ts +65 -0
- package/schematics/ng-add/files/root-store/router-store/index.d.ts +11 -0
- package/schematics/ng-add/files/root-store/router-store/index.ts +11 -0
- package/schematics/ng-add/files/root-store/router-store/pop-up-base.component.ts +83 -0
- package/schematics/ng-add/files/root-store/router-store/pop-up-base.module.ts +24 -0
- package/schematics/ng-add/files/root-store/router-store/reducer.ts +31 -0
- package/schematics/ng-add/files/root-store/router-store/router-store.module.ts +30 -0
- package/schematics/ng-add/files/root-store/router-store/selectors.ts +63 -0
- package/schematics/ng-add/files/root-store/router-store/state.ts +18 -0
- package/schematics/ng-add/files/root-store/selectors.ts +20 -0
- package/schematics/ng-add/files/root-store/slide-menu-store/actions.ts +11 -0
- package/schematics/ng-add/files/root-store/slide-menu-store/effects.ts +10 -0
- package/schematics/ng-add/files/root-store/slide-menu-store/index.d.ts +13 -0
- package/schematics/ng-add/files/root-store/slide-menu-store/index.ts +13 -0
- package/schematics/ng-add/files/root-store/slide-menu-store/names.ts +3 -0
- package/schematics/ng-add/files/root-store/slide-menu-store/operators.ts +24 -0
- package/schematics/ng-add/files/root-store/slide-menu-store/reducer.ts +8 -0
- package/schematics/ng-add/files/root-store/slide-menu-store/selectors.ts +41 -0
- package/schematics/ng-add/files/root-store/slide-menu-store/slide-menu-store.module.ts +27 -0
- package/schematics/ng-add/files/root-store/slide-menu-store/state.ts +14 -0
- package/schematics/ng-add/files/root-store/state.ts +5 -0
- package/schematics/ng-add/index.d.ts +2 -0
- package/schematics/ng-add/index.js +78 -0
- package/schematics/ng-add/index.js.map +1 -0
- package/schematics/ng-add/schema.json +22 -0
- package/schematics/section/files/ionic/__clazz@dasherize__/__clazz@dasherize__-edit/__clazz@dasherize__-edit.component.html +52 -0
- package/schematics/section/files/ionic/__clazz@dasherize__/__clazz@dasherize__-edit/__clazz@dasherize__-edit.component.ts +57 -0
- package/schematics/section/files/ionic/__clazz@dasherize__/__clazz@dasherize__-list/__clazz@dasherize__-list.component.html +7 -0
- package/schematics/section/files/ionic/__clazz@dasherize__/__clazz@dasherize__-list/__clazz@dasherize__-list.component.ts +50 -0
- package/schematics/section/files/ionic/__clazz@dasherize__/__clazz@dasherize__-main/__clazz@dasherize__-main.component.html +15 -0
- package/schematics/section/files/ionic/__clazz@dasherize__/__clazz@dasherize__-main/__clazz@dasherize__-main.component.ts +23 -0
- package/schematics/section/files/ionic/__clazz@dasherize__/__clazz@dasherize__-routing.module.ts +36 -0
- package/schematics/section/files/ionic/__clazz@dasherize__/__clazz@dasherize__.module.ts +33 -0
- package/schematics/section/files/no-libs/__clazz@dasherize__/__clazz@dasherize__-edit/__clazz@dasherize__-edit.component.html +1 -0
- package/schematics/section/files/no-libs/__clazz@dasherize__/__clazz@dasherize__-edit/__clazz@dasherize__-edit.component.ts +16 -0
- package/schematics/section/files/no-libs/__clazz@dasherize__/__clazz@dasherize__-list/__clazz@dasherize__-list.component.html +1 -0
- package/schematics/section/files/no-libs/__clazz@dasherize__/__clazz@dasherize__-list/__clazz@dasherize__-list.component.ts +27 -0
- package/schematics/section/files/no-libs/__clazz@dasherize__/__clazz@dasherize__-main/__clazz@dasherize__-main.component.html +1 -0
- package/schematics/section/files/no-libs/__clazz@dasherize__/__clazz@dasherize__-main/__clazz@dasherize__-main.component.ts +18 -0
- package/schematics/section/files/no-libs/__clazz@dasherize__/__clazz@dasherize__-routing.module.ts +36 -0
- package/schematics/section/files/no-libs/__clazz@dasherize__/__clazz@dasherize__.module.ts +26 -0
- package/schematics/section/files/primeng/__clazz@dasherize__/__clazz@dasherize__-edit/__clazz@dasherize__-edit.component.html +38 -0
- package/schematics/section/files/primeng/__clazz@dasherize__/__clazz@dasherize__-edit/__clazz@dasherize__-edit.component.ts +50 -0
- package/schematics/section/files/primeng/__clazz@dasherize__/__clazz@dasherize__-list/__clazz@dasherize__-list.component.html +30 -0
- package/schematics/section/files/primeng/__clazz@dasherize__/__clazz@dasherize__-list/__clazz@dasherize__-list.component.ts +101 -0
- package/schematics/section/files/primeng/__clazz@dasherize__/__clazz@dasherize__-main/__clazz@dasherize__-main.component.html +12 -0
- package/schematics/section/files/primeng/__clazz@dasherize__/__clazz@dasherize__-main/__clazz@dasherize__-main.component.ts +21 -0
- package/schematics/section/files/primeng/__clazz@dasherize__/__clazz@dasherize__-routing.module.ts +37 -0
- package/schematics/section/files/primeng/__clazz@dasherize__/__clazz@dasherize__.module.ts +49 -0
- package/schematics/section/files/primeng/__clazz@dasherize__/components/button-create-many-test-__clazz@dasherize__.component.ts +46 -0
- package/schematics/section/files/primeng/__clazz@dasherize__/components/button-delete-__clazz@dasherize__.component.ts +35 -0
- package/schematics/section/files/primeng/__clazz@dasherize__/components/button-edit-many-test-__clazz@dasherize__.component.ts +45 -0
- package/schematics/section/files/primeng/__clazz@dasherize__/components/button-new-__clazz@dasherize__.component.ts +45 -0
- package/schematics/section/index.d.ts +2 -0
- package/schematics/section/index.js +56 -0
- package/schematics/section/index.js.map +1 -0
- package/schematics/section/schema.json +39 -0
- package/schematics/store/files/base-model/__clazz@dasherize__.ts +8 -0
- package/schematics/store/files/base-store/__clazz@dasherize__-store/__clazz@dasherize__-store.module.ts +26 -0
- package/schematics/store/files/base-store/__clazz@dasherize__-store/__clazz@dasherize__.actions.ts +9 -0
- package/schematics/store/files/base-store/__clazz@dasherize__-store/__clazz@dasherize__.effects.ts +11 -0
- package/schematics/store/files/base-store/__clazz@dasherize__-store/__clazz@dasherize__.names.ts +3 -0
- package/schematics/store/files/base-store/__clazz@dasherize__-store/__clazz@dasherize__.reducer.ts +8 -0
- package/schematics/store/files/base-store/__clazz@dasherize__-store/__clazz@dasherize__.selectors.ts +18 -0
- package/schematics/store/files/base-store/__clazz@dasherize__-store/__clazz@dasherize__.state.ts +6 -0
- package/schematics/store/files/base-store/__clazz@dasherize__-store/index.d.ts +13 -0
- package/schematics/store/files/base-store/__clazz@dasherize__-store/index.ts +13 -0
- package/schematics/store/files/crud-graphql/__clazz@dasherize__-store/__clazz@dasherize__.criteria.ts +39 -0
- package/schematics/store/files/crud-graphql/__clazz@dasherize__-store/__clazz@dasherize__.graphql +34 -0
- package/schematics/store/files/crud-model/__clazz@dasherize__.ts +8 -0
- package/schematics/store/files/crud-service/__clazz@dasherize__.service.ts +11 -0
- package/schematics/store/files/crud-service-graphql/__clazz@dasherize__.service.ts +16 -0
- package/schematics/store/files/crud-store/__clazz@dasherize__-store/__clazz@dasherize__-store.module.ts +26 -0
- package/schematics/store/files/crud-store/__clazz@dasherize__-store/__clazz@dasherize__.actions.ts +55 -0
- package/schematics/store/files/crud-store/__clazz@dasherize__-store/__clazz@dasherize__.effects.ts +90 -0
- package/schematics/store/files/crud-store/__clazz@dasherize__-store/__clazz@dasherize__.names.ts +3 -0
- package/schematics/store/files/crud-store/__clazz@dasherize__-store/__clazz@dasherize__.reducer.ts +103 -0
- package/schematics/store/files/crud-store/__clazz@dasherize__-store/__clazz@dasherize__.selectors.ts +26 -0
- package/schematics/store/files/crud-store/__clazz@dasherize__-store/__clazz@dasherize__.state.ts +11 -0
- package/schematics/store/files/crud-store/__clazz@dasherize__-store/index.d.ts +15 -0
- package/schematics/store/files/crud-store/__clazz@dasherize__-store/index.ts +15 -0
- package/schematics/store/index.d.ts +2 -0
- package/schematics/store/index.js +100 -0
- package/schematics/store/index.js.map +1 -0
- package/schematics/store/schema.json +45 -0
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
export const isEmpty = (obj) => {
|
|
2
|
+
return obj === null || undefined
|
|
3
|
+
? true
|
|
4
|
+
: (() => {
|
|
5
|
+
for (const prop in obj) {
|
|
6
|
+
if (Object.prototype.hasOwnProperty.call(obj, prop)) {
|
|
7
|
+
return false;
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
return true;
|
|
11
|
+
})();
|
|
12
|
+
};
|
|
13
|
+
export function jNgrxFilter(items, filters) {
|
|
14
|
+
return new JNgrxFilter().jNgrxFilter(items, filters);
|
|
15
|
+
}
|
|
16
|
+
export class JNgrxFilter {
|
|
17
|
+
constructor() {
|
|
18
|
+
this.filterConstraints = {
|
|
19
|
+
startsWith(value, filter) {
|
|
20
|
+
if (filter === undefined || filter === null || filter.trim() === '') {
|
|
21
|
+
return true;
|
|
22
|
+
}
|
|
23
|
+
if (value === undefined || value === null) {
|
|
24
|
+
return false;
|
|
25
|
+
}
|
|
26
|
+
const filterValue = filter.toLowerCase();
|
|
27
|
+
return value.toString().toLowerCase().slice(0, filterValue.length) === filterValue;
|
|
28
|
+
},
|
|
29
|
+
contains(value, filter) {
|
|
30
|
+
if (filter === undefined || filter === null || (typeof filter === 'string' && filter.trim() === '')) {
|
|
31
|
+
return true;
|
|
32
|
+
}
|
|
33
|
+
if (value === undefined || value === null) {
|
|
34
|
+
return false;
|
|
35
|
+
}
|
|
36
|
+
return value.toString().toLowerCase().indexOf(filter.toLowerCase()) !== -1;
|
|
37
|
+
},
|
|
38
|
+
endsWith(value, filter) {
|
|
39
|
+
if (filter === undefined || filter === null || filter.trim() === '') {
|
|
40
|
+
return true;
|
|
41
|
+
}
|
|
42
|
+
if (value === undefined || value === null) {
|
|
43
|
+
return false;
|
|
44
|
+
}
|
|
45
|
+
const filterValue = filter.toString().toLowerCase();
|
|
46
|
+
return value.toString().toLowerCase().indexOf(filterValue, value.toString().length - filterValue.length) !== -1;
|
|
47
|
+
},
|
|
48
|
+
equals(value, filter) {
|
|
49
|
+
if (filter === undefined || filter === null || (typeof filter === 'string' && filter.trim() === '')) {
|
|
50
|
+
return true;
|
|
51
|
+
}
|
|
52
|
+
if (value === undefined || value === null) {
|
|
53
|
+
return false;
|
|
54
|
+
}
|
|
55
|
+
return value.toString().toLowerCase() === filter.toString().toLowerCase();
|
|
56
|
+
},
|
|
57
|
+
notEquals(value, filter) {
|
|
58
|
+
if (filter === undefined || filter === null || (typeof filter === 'string' && filter.trim() === '')) {
|
|
59
|
+
return false;
|
|
60
|
+
}
|
|
61
|
+
if (value === undefined || value === null) {
|
|
62
|
+
return true;
|
|
63
|
+
}
|
|
64
|
+
return value.toString().toLowerCase() !== filter.toString().toLowerCase();
|
|
65
|
+
},
|
|
66
|
+
in(value, filters) {
|
|
67
|
+
if (filters === undefined || filters === null || filters.length === 0) {
|
|
68
|
+
return true;
|
|
69
|
+
}
|
|
70
|
+
if (value === undefined || value === null) {
|
|
71
|
+
return false;
|
|
72
|
+
}
|
|
73
|
+
filters.forEach(filter => {
|
|
74
|
+
if (filter === value) {
|
|
75
|
+
return true;
|
|
76
|
+
}
|
|
77
|
+
});
|
|
78
|
+
return false;
|
|
79
|
+
}
|
|
80
|
+
};
|
|
81
|
+
this.isFunction = (obj) => !!(obj && obj.constructor && obj.call && obj.apply);
|
|
82
|
+
}
|
|
83
|
+
jNgrxFilter(items, filters) {
|
|
84
|
+
if (isEmpty(filters)) {
|
|
85
|
+
return items;
|
|
86
|
+
}
|
|
87
|
+
const filteredValue = [];
|
|
88
|
+
items.forEach((item) => {
|
|
89
|
+
let localMatch = false;
|
|
90
|
+
// tslint:disable-next-line:forin
|
|
91
|
+
for (const filterField in filters) {
|
|
92
|
+
const filterValue = filters[filterField].value;
|
|
93
|
+
const filterMatchMode = filters[filterField].matchMode || 'startsWith';
|
|
94
|
+
const filterConstraint = this.filterConstraints[filterMatchMode];
|
|
95
|
+
const renderFunction = filters[filterField].renderFunction;
|
|
96
|
+
const dataFieldValue = this.isFunction(renderFunction) ? renderFunction(this.resolveFieldData(item, filterField)) : this.resolveFieldData(item, filterField);
|
|
97
|
+
if (filterConstraint(dataFieldValue, filterValue)) {
|
|
98
|
+
localMatch = true;
|
|
99
|
+
break;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
if (localMatch) {
|
|
103
|
+
filteredValue.push(item);
|
|
104
|
+
}
|
|
105
|
+
});
|
|
106
|
+
return filteredValue;
|
|
107
|
+
}
|
|
108
|
+
resolveFieldData(data, field) {
|
|
109
|
+
if (data && field) {
|
|
110
|
+
if (this.isFunction(field)) {
|
|
111
|
+
return field(data);
|
|
112
|
+
}
|
|
113
|
+
else if (field.indexOf('.') === -1) {
|
|
114
|
+
return data[field];
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
const fields = field.split('.');
|
|
118
|
+
let value = data;
|
|
119
|
+
for (let i = 0, len = fields.length; i < len; ++i) {
|
|
120
|
+
if (value == null) {
|
|
121
|
+
return null;
|
|
122
|
+
}
|
|
123
|
+
value = value[fields[i]];
|
|
124
|
+
}
|
|
125
|
+
return value;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
else {
|
|
129
|
+
return null;
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiai1uZ3J4LWZpbHRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL25ncngtZW50aXR5LWNydWQvc3JjL2xpYi9qLW5ncngtZmlsdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRyxDQUFDLEdBQUcsRUFBRSxFQUFFO0lBQzdCLE9BQU8sR0FBRyxLQUFLLElBQUksSUFBSSxTQUFTO1FBQzlCLENBQUMsQ0FBQyxJQUFJO1FBQ04sQ0FBQyxDQUFDLENBQUMsR0FBRyxFQUFFO1lBQ04sS0FBSyxNQUFNLElBQUksSUFBSSxHQUFHLEVBQUU7Z0JBQ3RCLElBQUksTUFBTSxDQUFDLFNBQVMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxJQUFJLENBQUMsRUFBRTtvQkFDbkQsT0FBTyxLQUFLLENBQUM7aUJBQ2Q7YUFDRjtZQUNELE9BQU8sSUFBSSxDQUFDO1FBQ2QsQ0FBQyxDQUFDLEVBQUUsQ0FBQztBQUNULENBQUMsQ0FBQztBQUVGLE1BQU0sVUFBVSxXQUFXLENBQUksS0FBVSxFQUFFLE9BQXlDO0lBQ2xGLE9BQU8sSUFBSSxXQUFXLEVBQUssQ0FBQyxXQUFXLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0FBQzFELENBQUM7QUFFRCxNQUFNLE9BQU8sV0FBVztJQUF4QjtRQUVtQixzQkFBaUIsR0FBRztZQUVuQyxVQUFVLENBQUMsS0FBSyxFQUFFLE1BQU07Z0JBQ3RCLElBQUksTUFBTSxLQUFLLFNBQVMsSUFBSSxNQUFNLEtBQUssSUFBSSxJQUFJLE1BQU0sQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUU7b0JBQ25FLE9BQU8sSUFBSSxDQUFDO2lCQUNiO2dCQUVELElBQUksS0FBSyxLQUFLLFNBQVMsSUFBSSxLQUFLLEtBQUssSUFBSSxFQUFFO29CQUN6QyxPQUFPLEtBQUssQ0FBQztpQkFDZDtnQkFFRCxNQUFNLFdBQVcs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QUFPLElBQUksQ0FBQztxQkFDYjtvQkFDRCxLQUFLLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2lCQUMxQjtnQkFDRCxPQUFPLEtBQUssQ0FBQzthQUNkO1NBQ0Y7YUFBTTtZQUNMLE9BQU8sSUFBSSxDQUFDO1NBQ2I7SUFDSCxDQUFDO0NBR0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0ZpbHRlck1ldGFkYXRhfSBmcm9tICcuL21vZGVscyc7XG5cbmV4cG9ydCBjb25zdCBpc0VtcHR5ID0gKG9iaikgPT4ge1xuICByZXR1cm4gb2JqID09PSBudWxsIHx8IHVuZGVmaW5lZFxuICAgID8gdHJ1ZVxuICAgIDogKCgpID0+IHtcbiAgICAgIGZvciAoY29uc3QgcHJvcCBpbiBvYmopIHtcbiAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIHByb3ApKSB7XG4gICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9KSgpO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGpOZ3J4RmlsdGVyPFQ+KGl0ZW1zOiBUW10sIGZpbHRlcnM6IHsgW3M6IHN0cmluZ106IEZpbHRlck1ldGFkYXRhOyB9KTogVFtdIHtcbiAgcmV0dXJuIG5ldyBKTmdyeEZpbHRlcjxUPigpLmpOZ3J4RmlsdGVyKGl0ZW1zLCBmaWx0ZXJzKTtcbn1cblxuZXhwb3J0IGNsYXNzIEpOZ3J4RmlsdGVyPFQ+IHtcblxuICBwcml2YXRlIHJlYWRvbmx5IGZpbHRlckNvbnN0cmFpbnRzID0ge1xuXG4gICAgc3RhcnRzV2l0aCh2YWx1ZSwgZmlsdGVyKTogYm9vbGVhbiB7XG4gICAgICBpZiAoZmlsdGVyID09PSB1bmRlZmluZWQgfHwgZmlsdGVyID09PSBudWxsIHx8IGZpbHRlci50cmltKCkgPT09ICcnKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIGNvbnN0IGZpbHRlclZhbHVlID0gZmlsdGVyLnRvTG93ZXJDYXNlKCk7XG4gICAgICByZXR1cm4gdmFsdWUudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpLnNsaWNlKDAsIGZpbHRlclZhbHVlLmxlbmd0aCkgPT09IGZpbHRlclZhbHVlO1xuICAgIH0sXG5cbiAgICBjb250YWlucyh2YWx1ZSwgZmlsdGVyKTogYm9vbGVhbiB7XG4gICAgICBpZiAoZmlsdGVyID09PSB1bmRlZmluZWQgfHwgZmlsdGVyID09PSBudWxsIHx8ICh0eXBlb2YgZmlsdGVyID09PSAnc3RyaW5nJyAmJiBmaWx0ZXIudHJpbSgpID09PSAnJykpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG5cbiAgICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHZhbHVlLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKS5pbmRleE9mKGZpbHRlci50b0xvd2VyQ2FzZSgpKSAhPT0gLTE7XG4gICAgfSxcblxuICAgIGVuZHNXaXRoKHZhbHVlLCBmaWx0ZXIpOiBib29sZWFuIHtcbiAgICAgIGlmIChmaWx0ZXIgPT09IHVuZGVmaW5lZCB8fCBmaWx0ZXIgPT09IG51bGwgfHwgZmlsdGVyLnRyaW0oKSA9PT0gJycpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG5cbiAgICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgZmlsdGVyVmFsdWUgPSBmaWx0ZXIudG9TdHJpbmcoKS50b0xvd2VyQ2FzZSgpO1xuICAgICAgcmV0dXJuIHZhbHVlLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKS5pbmRleE9mKGZpbHRlclZhbHVlLCB2YWx1ZS50b1N0cmluZygpLmxlbmd0aCAtIGZpbHRlclZhbHVlLmxlbmd0aCkgIT09IC0xO1xuICAgIH0sXG5cbiAgICBlcXVhbHModmFsdWUsIGZpbHRlcik6IGJvb2xlYW4ge1xuICAgICAgaWYgKGZpbHRlciA9PT0gdW5kZWZpbmVkIHx8IGZpbHRlciA9PT0gbnVsbCB8fCAodHlwZW9mIGZpbHRlciA9PT0gJ3N0cmluZycgJiYgZmlsdGVyLnRyaW0oKSA9PT0gJycpKSB7XG4gICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB2YWx1ZS50b1N0cmluZygpLnRvTG93ZXJDYXNlKCkgPT09IGZpbHRlci50b1N0cmluZygpLnRvTG93ZXJDYXNlKCk7XG4gICAgfSxcblxuICAgIG5vdEVxdWFscyh2YWx1ZSwgZmlsdGVyKTogYm9vbGVhbiB7XG4gICAgICBpZiAoZmlsdGVyID09PSB1bmRlZmluZWQgfHwgZmlsdGVyID09PSBudWxsIHx8ICh0eXBlb2YgZmlsdGVyID09PSAnc3RyaW5nJyAmJiBmaWx0ZXIudHJpbSgpID09PSAnJykpIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgfVxuXG4gICAgICBpZiAodmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZSA9PT0gbnVsbCkge1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHZhbHVlLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKSAhPT0gZmlsdGVyLnRvU3RyaW5nKCkudG9Mb3dlckNhc2UoKTtcbiAgICB9LFxuXG4gICAgaW4odmFsdWUsIGZpbHRlcnM6IGFueVtdKTogYm9vbGVhbiB7XG4gICAgICBpZiAoZmlsdGVycyA9PT0gdW5kZWZpbmVkIHx8IGZpbHRlcnMgPT09IG51bGwgfHwgZmlsdGVycy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9XG5cbiAgICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSBudWxsKSB7XG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgZmlsdGVycy5mb3JFYWNoKGZpbHRlciA9PiB7XG4gICAgICAgIGlmIChmaWx0ZXIgPT09IHZhbHVlKSB7XG4gICAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9O1xuXG4gIHB1YmxpYyBqTmdyeEZpbHRlcihpdGVtczogVFtdLCBmaWx0ZXJzOiB7IFtzOiBzdHJpbmddOiBGaWx0ZXJNZXRhZGF0YTsgfSk6IFRbXSB7XG5cbiAgICBpZiAoaXNFbXB0eShmaWx0ZXJzKSkge1xuICAgICAgcmV0dXJuIGl0ZW1zO1xuICAgIH1cblxuICAgIGNvbnN0IGZpbHRlcmVkVmFsdWUgPSBbXTtcbiAgICBpdGVtcy5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgICBsZXQgbG9jYWxNYXRjaCA9IGZhbHNlO1xuXG4gICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6Zm9yaW5cbiAgICAgIGZvciAoY29uc3QgZmlsdGVyRmllbGQgaW4gZmlsdGVycykge1xuXG4gICAgICAgIGNvbnN0IGZpbHRlclZhbHVlID0gZmlsdGVyc1tmaWx0ZXJGaWVsZF0udmFsdWU7XG4gICAgICAgIGNvbnN0IGZpbHRlck1hdGNoTW9kZSA9IGZpbHRlcnNbZmlsdGVyRmllbGRdLm1hdGNoTW9kZSB8fCAnc3RhcnRzV2l0aCc7XG4gICAgICAgIGNvbnN0IGZpbHRlckNvbnN0cmFpbnQgPSB0aGlzLmZpbHRlckNvbnN0cmFpbnRzW2ZpbHRlck1hdGNoTW9kZV07XG5cbiAgICAgICAgY29uc3QgcmVuZGVyRnVuY3Rpb24gPSBmaWx0ZXJzW2ZpbHRlckZpZWxkXS5yZW5kZXJGdW5jdGlvbjtcbiAgICAgICAgY29uc3QgZGF0YUZpZWxkVmFsdWUgPSB0aGlzLmlzRnVuY3Rpb24ocmVuZGVyRnVuY3Rpb24pID8gcmVuZGVyRnVuY3Rpb24odGhpcy5yZXNvbHZlRmllbGREYXRhKGl0ZW0sIGZpbHRlckZpZWxkKSkgOiB0aGlzLnJlc29sdmVGaWVsZERhdGEoaXRlbSwgZmlsdGVyRmllbGQpO1xuXG4gICAgICAgIGlmIChmaWx0ZXJDb25zdHJhaW50KGRhdGFGaWVsZFZhbHVlLCBmaWx0ZXJWYWx1ZSkpIHtcbiAgICAgICAgICBsb2NhbE1hdGNoID0gdHJ1ZTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGxvY2FsTWF0Y2gpIHtcbiAgICAgICAgZmlsdGVyZWRWYWx1ZS5wdXNoKGl0ZW0pO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIGZpbHRlcmVkVmFsdWU7XG4gIH1cblxuICBwcml2YXRlIHJlc29sdmVGaWVsZERhdGEoZGF0YTogYW55LCBmaWVsZDogYW55KTogYW55IHtcbiAgICBpZiAoZGF0YSAmJiBmaWVsZCkge1xuICAgICAgaWYgKHRoaXMuaXNGdW5jdGlvbihmaWVsZCkpIHtcbiAgICAgICAgcmV0dXJuIGZpZWxkKGRhdGEpO1xuICAgICAgfSBlbHNlIGlmIChmaWVsZC5pbmRleE9mKCcuJykgPT09IC0xKSB7XG4gICAgICAgIHJldHVybiBkYXRhW2ZpZWxkXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGZpZWxkczogc3RyaW5nW10gPSBmaWVsZC5zcGxpdCgnLicpO1xuICAgICAgICBsZXQgdmFsdWUgPSBkYXRhO1xuICAgICAgICBmb3IgKGxldCBpID0gMCwgbGVuID0gZmllbGRzLmxlbmd0aDsgaSA8IGxlbjsgKytpKSB7XG4gICAgICAgICAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgIH1cbiAgICAgICAgICB2YWx1ZSA9IHZhbHVlW2ZpZWxkc1tpXV07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHJlYWRvbmx5IGlzRnVuY3Rpb24gPSAob2JqOiBhbnkpID0+ICEhKG9iaiAmJiBvYmouY29uc3RydWN0b3IgJiYgb2JqLmNhbGwgJiYgb2JqLmFwcGx5KTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export var CrudEnum;
|
|
2
|
+
(function (CrudEnum) {
|
|
3
|
+
CrudEnum["SEARCH"] = "Search";
|
|
4
|
+
CrudEnum["DELETE"] = "Delete";
|
|
5
|
+
CrudEnum["CREATE"] = "Create";
|
|
6
|
+
CrudEnum["EDIT"] = "Edit";
|
|
7
|
+
CrudEnum["SELECT"] = "Select";
|
|
8
|
+
CrudEnum["RESET"] = "Reset";
|
|
9
|
+
})(CrudEnum || (CrudEnum = {}));
|
|
10
|
+
export var ActionEnum;
|
|
11
|
+
(function (ActionEnum) {
|
|
12
|
+
ActionEnum["RESPONSE"] = "Response";
|
|
13
|
+
ActionEnum["REQUEST"] = "Request";
|
|
14
|
+
ActionEnum["FAILURE"] = "Failure";
|
|
15
|
+
ActionEnum["SUCCESS"] = "Success";
|
|
16
|
+
})(ActionEnum || (ActionEnum = {}));
|
|
17
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9kZWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vcHJvamVjdHMvbmdyeC1lbnRpdHktY3J1ZC9zcmMvbGliL21vZGVscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUF3REEsTUFBTSxDQUFOLElBQVksUUFPWDtBQVBELFdBQVksUUFBUTtJQUNsQiw2QkFBaUIsQ0FBQTtJQUNqQiw2QkFBaUIsQ0FBQTtJQUNqQiw2QkFBaUIsQ0FBQTtJQUNqQix5QkFBYSxDQUFBO0lBQ2IsNkJBQWlCLENBQUE7SUFDakIsMkJBQWUsQ0FBQTtBQUNqQixDQUFDLEVBUFcsUUFBUSxLQUFSLFFBQVEsUUFPbkI7QUFFRCxNQUFNLENBQU4sSUFBWSxVQUtYO0FBTEQsV0FBWSxVQUFVO0lBQ3BCLG1DQUFxQixDQUFBO0lBQ3JCLGlDQUFtQixDQUFBO0lBQ25CLGlDQUFtQixDQUFBO0lBQ25CLGlDQUFtQixDQUFBO0FBQ3JCLENBQUMsRUFMVyxVQUFVLEtBQVYsVUFBVSxRQUtyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7RW50aXR5QWRhcHRlciwgRW50aXR5U3RhdGV9IGZyb20gJ0BuZ3J4L2VudGl0eSc7XG5pbXBvcnQge0FjdGlvbiwgQWN0aW9uQ3JlYXRvciwgTWVtb2l6ZWRTZWxlY3Rvcn0gZnJvbSAnQG5ncngvc3RvcmUnO1xuXG4vLyBDT1BJQVRPIERBIEBuZ3J4L3N0b3JlL3NyYy9tb2RlbHNcbi8vIHNlIHZpZW5lIGltcG9ydGF0byBkYSBAbmdyeC9zdG9yZS9zcmMvbW9kZWxzLCBkYSBlcnJvcmkgbmVpIHByb2dldHRpIGRvdmUgdmllbmUgdXRpbGl6emF0by5cbmV4cG9ydCBkZWNsYXJlIGludGVyZmFjZSBUeXBlZEFjdGlvbjxUIGV4dGVuZHMgc3RyaW5nPiBleHRlbmRzIEFjdGlvbiB7XG4gIHJlYWRvbmx5IHR5cGU6IFQ7XG59XG5cbi8vIENPUElBVE8gREEgQG5ncngvc3RvcmUvc3JjL21vZGVsc1xuLy8gc2UgdmllbmUgaW1wb3J0YXRvIGRhIEBuZ3J4L2VudGl0eS9zcmMvbW9kZWxzLCBkYSBlcnJvcmkgbmVpIHByb2dldHRpIGRvdmUgdmllbmUgdXRpbGl6emF0by5cbmV4cG9ydCBpbnRlcmZhY2UgRGljdGlvbmFyeU51bTxUPiB7XG4gIFtpZDogbnVtYmVyXTogVCB8IHVuZGVmaW5lZDtcbn1cblxuZXhwb3J0IGRlY2xhcmUgYWJzdHJhY3QgY2xhc3MgRGljdGlvbmFyeTxUPiBpbXBsZW1lbnRzIERpY3Rpb25hcnlOdW08VD4ge1xuICBbaWQ6IHN0cmluZ106IFQgfCB1bmRlZmluZWQ7XG59XG5cbi8vIENPUElBVE8gREEgQG5ncngvc3RvcmUvc3JjL21vZGVsc1xuLy8gc2UgdmllbmUgaW1wb3J0YXRvIGRhIEBuZ3J4L2VudGl0eS9zcmMvbW9kZWxzLCBkYSBlcnJvcmkgbmVpIHByb2dldHRpIGRvdmUgdmllbmUgdXRpbGl6emF0by5cbmV4cG9ydCB0eXBlIElkU2VsZWN0b3JTdHI8VD4gPSAobW9kZWw6IFQpID0+IHN0cmluZztcbmV4cG9ydCB0eXBlIElkU2VsZWN0b3JOdW08VD4gPSAobW9kZWw6IFQpID0+IG51bWJlcjtcbi8vIENPUElBVE8gREEgQG5ncngvc3RvcmUvc3JjL21vZGVsc1xuLy8gc2UgdmllbmUgaW1wb3J0YXRvIGRhIEBuZ3J4L2VudGl0eS9zcmMvbW9kZWxzLCBkYSBlcnJvcmkgbmVpIHByb2dldHRpIGRvdmUgdmllbmUgdXRpbGl6emF0by5cbmV4cG9ydCB0eXBlIElkU2VsZWN0b3I8VD4gPSBJZFNlbGVjdG9yU3RyPFQ+IHwgSWRTZWxlY3Rvck51bTxUPjtcblxuLy8gcGVyIGV2aXRhcmUgbCdpbXBvcnRhemlvbmVcbi8vIGltcG9ydCB7Q29tcGFyZXIsIEVudGl0eUFkYXB0ZXIsIElkU2VsZWN0b3J9IGZyb20gJ0BuZ3J4L2VudGl0eS9zcmMvbW9kZWxzJztcbi8vIGhvIGNvcGlhdG8gaSBzZWd1ZW50aSB0eXBlXG5leHBvcnQgZGVjbGFyZSB0eXBlIENvbXBhcmVyU3RyPFQ+ID0gKGE6IFQsIGI6IFQpID0+IHN0cmluZztcbmV4cG9ydCBkZWNsYXJlIHR5cGUgQ29tcGFyZXI8VD4gPSAoYTogVCwgYjogVCkgPT4gbnVtYmVyO1xuXG5leHBvcnQgaW50ZXJmYWNlIEVudGl0eVNlbGVjdG9yczxULCBWPiB7XG4gIC8qKlxuICAgKiAtIHVzZWQgdG8gc2VsZWN0IGEgZ3JvdXAgb2YgaWRzXG4gICAqIEBwYXJhbSAoc3RhdGU6IFYpID0+IHN0cmluZ1tdIHwgbnVtYmVyW11cbiAgICovXG4gIHNlbGVjdElkczogKHN0YXRlOiBWKSA9PiBzdHJpbmdbXSB8IG51bWJlcltdO1xuICAvKipcbiAgICogLSB1c2VkIHRvIHNlbGVjdCBhIGdyb3VwIG9mIGVudGl0aWVzXG4gICAqIEBwYXJhbSAoc3RhdGU6IFYpID0+IERpY3Rpb25hcnk8VD5cbiAgICovXG4gIHNlbGVjdEVudGl0aWVzOiAoc3RhdGU6IFYpID0+IERpY3Rpb25hcnk8VD47XG4gIC8qKlxuICAgKiAtIHVzZWQgdG8gc2VsZWN0IGFsbCBpdGVtc1xuICAgKiBAcGFyYW0gKHN0YXRlOiBWKSA9PiBUW11cbiAgICovXG4gIHNlbGVjdEFsbDogKHN0YXRlOiBWKSA9PiBUW107XG4gIC8qKlxuICAgKiAtIHVzZWQgdG8gc2VsZWN0IHRoZSBzdW0gb2YgaXRlbXNcbiAgICogQHBhcmFtIChzdGF0ZTogVikgPT4gbnVtYmVyXG4gICAqL1xuICBzZWxlY3RUb3RhbDogKHN0YXRlOiBWKSA9PiBudW1iZXI7XG59XG5cbmV4cG9ydCBlbnVtIENydWRFbnVtIHtcbiAgU0VBUkNIID0gJ1NlYXJjaCcsXG4gIERFTEVURSA9ICdEZWxldGUnLFxuICBDUkVBVEUgPSAnQ3JlYXRlJyxcbiAgRURJVCA9ICdFZGl0JyxcbiAgU0VMRUNUID0gJ1NlbGVjdCcsXG4gIFJFU0VUID0gJ1Jlc2V0Jyxcbn1cblxuZXhwb3J0IGVudW0gQWN0aW9uRW51bSB7XG4gIFJFU1BPTlNFID0gJ1Jlc3BvbnNlJyxcbiAgUkVRVUVTVCA9ICdSZXF1ZXN0JyxcbiAgRkFJTFVSRSA9ICdGYWlsdXJlJyxcbiAgU1VDQ0VTUyA9ICdTdWNjZXNzJyxcbn1cblxuZXhwb3J0IGludGVyZmFjZSBPcHRSZXF1ZXN0QmFzZSB7XG4gIC8qKlxuICAgKiBpcyBhZGRlZCB0byB0aGUgc2VydmljZSByb3V0ZSxcbiAgICogaW4gc29tZSBjYXNlcyBpdCBpcyBuZWNlc3NhcnkgdG8gaW52b2tlIGEgc3ViLXJvdXRlLlxuICAgKiBpZiB0aGUgc2VydmljZSB3YXMgXCJ1c2VyXCIgYW5kIHRoZSBzdWItcm91dGUgXCJ1c2VyL2FjY2VwdFwiOlxuICAgKiBwYXRoOltcImFjY2VwdFwiXVxuICAgKi9cbiAgcGF0aD86IGFueVtdO1xuICAvKipcbiAgICogRGlzcGF0Y2hlZCBhY3Rpb25zIGluIGNhc2Ugb2YgZXJyb3IuXG4gICAqL1xuICBvbkZhdWx0PzogQWN0aW9uW107XG4gIC8qKlxuICAgKiBEaXNwYXRjaGVkIGFjdGlvbnMgaW4gdGhlIGV2ZW50IG9mIGEgcG9zaXRpdmUgcmVzcG9uc2VcbiAgICovXG4gIG9uUmVzdWx0PzogQWN0aW9uW107XG5cbiAgLyoqXG4gICAqIHBlciBvZ25pIHN0cmluZ2EgcHJlc2VudGUgbmVsbCdhdHRyaWJ1dG8sIHZlcnLDoCBzcGVkaXRhIHVuYSBub3RpZmljYSBSZXNwb25zZS5cbiAgICogaW4gcXVlc3RvIG1vZG8sIGNoaSBpbnZpYSBsYSBub3RpZmljYSBwb3Ryw6AgcG9pIGZpbHRyYXJlIGkgZmF0aSBpbiBiYXNlIGFsbGEgY2hpYXZlIGludmlhdGEuXG4gICAqL1xuICBkaXNwYXRjaFJlc3BvbnNlPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiAtIGNyaXRlcmlhOiBJQ3JpdGVyaWE6IGNyaXRlcmlhIGRpIHJpY2VyY2FcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBJQ3JpdGVyaWE8UVAgPSBhbnk+IGV4dGVuZHMgT3B0UmVxdWVzdEJhc2Uge1xuICAvKipcbiAgICpcbiAgICogXCJSRUZSRVNIXCIgdGhlIHN0b3JlIHdpbGwgYmUgZGVsZXRlZCBiZWZvcmUgbWFraW5nIHRoZSByZW1vdGUgY2FsbCwgYWxsIHRoZSBlbGVtZW50cyB3aWxsIGJlIGFkZGVkIHRvIHRoZSBjYWxsIHJlc3VsdC5cbiAgICpcbiAgICovXG4gIG1vZGU/OiAnUkVGUkVTSCcgfCAndXBzZXJ0TWFueScgfCAnYWRkQWxsJztcblxuICBxdWVyeVBhcmFtcz86IFFQO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE9wdFJlcXVlc3Q8VCA9IGFueT4gZXh0ZW5kcyBPcHRSZXF1ZXN0QmFzZSB7XG4gIG11dGF0aW9uUGFyYW1zOiBUO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIE9wdFJlc3BvbnNlPFQ+IHtcbiAgYWN0aW9uVHlwZTogc3RyaW5nO1xuICByZXNwb25zZTogUmVzcG9uc2U8VD47XG4gIHJlcXVlc3Q6IElDcml0ZXJpYSB8IE9wdFJlcXVlc3Q7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgT3B0RWZmZWN0IHtcbiAgLyoqXG4gICAqIHBlciBvZ25pIHN0cmluZ2EgcHJlc2VudGUgbmVsbCdhdHRyaWJ1dG8sIHZlcnLDoCBzcGVkaXRhIHVuYSBub3RpZmljYSBSZXNwb25zZS5cbiAgICogaW4gcXVlc3RvIG1vZG8sIGNoaSBpbnZpYSBsYSBub3RpZmljYSBwb3Ryw6AgcG9pIGZpbHRyYXJlIGkgZmF0aSBpbiBiYXNlIGFsbGEgY2hpYXZlIGludmlhdGEuXG4gICAqL1xuICBkaXNwYXRjaFJlc3BvbnNlPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZXNwb25zZTxUPiB7XG4gIGRhdGE6IFQgfCBhbnk7XG4gIGhhc0Vycm9yOiBib29sZWFuO1xuICBtZXNzYWdlOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgRmlsdGVyTWV0YWRhdGEge1xuICB2YWx1ZT86IGFueTtcbiAgbWF0Y2hNb2RlPzogc3RyaW5nO1xuICByZW5kZXJGdW5jdGlvbj86ICh2YWx1ZTogYW55KSA9PiBzdHJpbmc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3J1ZFN0YXRlPFQ+IGV4dGVuZHMgRW50aXR5U3RhdGU8VD4ge1xuICBlcnJvcjogc3RyaW5nO1xuICBpc0xvYWRpbmc6IGJvb2xlYW47XG4gIGlzTG9hZGVkOiBib29sZWFuO1xuICBmaWx0ZXJzOiB7IFtzOiBzdHJpbmddOiBGaWx0ZXJNZXRhZGF0YTsgfTtcbiAgbGFzdENyaXRlcmlhOiBJQ3JpdGVyaWE7XG4gIGlkc1NlbGVjdGVkOiBzdHJpbmdbXSB8IG51bWJlcltdO1xuICBpdGVtU2VsZWN0ZWQ6IFQ7XG4gIGlkU2VsZWN0ZWQ6IHN0cmluZyB8IG51bWJlcjtcbiAgLy8gaXRlbXNTZWxlY3RlZDogVFtdO1xuICBlbnRpdGllc1NlbGVjdGVkOiBEaWN0aW9uYXJ5PFQ+O1xuICAvLyBvZ25pIGVudGl0w6AgcmVnaXN0cmEgbCdhemlvbmUgc2NhdGVuYXRhIGUgbGEgcmlzcG9zdGEgZGFsIHNlcnZlci5cbiAgcmVzcG9uc2VzOiBPcHRSZXNwb25zZTxUPltdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEVudGl0eUNydWRTZWxlY3RvcnM8VCwgVj4gZXh0ZW5kcyBFbnRpdHlTZWxlY3RvcnM8VCwgVj4ge1xuICAvKipcbiAgICpcbiAgICpcbiAgICogLSB1c2VkIHRvIHNlbGVjdCBzZWxlY3RlZCBpZFxuICAgKiAtIHBvcHVsYXRlZCB3aXRoIGFjdGlvbiBcIi4uLlNlbGVjdGVkSXRlbSh7aXRlbX0pXCIsXG4gICAqIEBwYXJhbSAoc3RhdGU6IFYpID0+IHN0cmluZyB8IG51bWJlclxuICAgKi9cbiAgc2VsZWN0SWRTZWxlY3RlZDogKHN0YXRlOiBWKSA9PiBzdHJpbmcgfCBudW1iZXI7XG4gIC8qKlxuICAgKiAtIHVzZWQgdG8gc2VsZWN0IHNlbGVjdGVkIGlkc1xuICAgKiAtIHBvcHVsYXRlZCB3aXRoIGFjdGlvbiBcIi4uLlNlbGVjdGVkSXRlbXMoe2l0ZW19KVwiLFxuICAgKiBAcGFyYW0gKHN0YXRlOiBWKSA9PiBzdHJpbmdbXSB8IG51bWJlcltdXG4gICAqL1xuICBzZWxlY3RJZHNTZWxlY3RlZDogKHN0YXRlOiBWKSA9PiBzdHJpbmdbXSB8IG51bWJlcltdO1xuICAvKipcbiAgICogLSB1c2VkIHRvIHNlbGVjdCBzZWxlY3RlZEl0ZW1cbiAgICogLSBwb3B1bGF0ZWQgd2l0aCBhY3Rpb24gXCIuLi5TZWxlY3RlZEl0ZW1zKHtpdGVtfSlcIixcbiAgICogLSBsb2NhbCBjbG9uZSwgZG9lcyBub3QgbWF0Y2ggdGhlIGluc3RhbmNlIGluIHRoZSBzdG9yZVxuICAgKiBAcGFyYW0gKHN0YXRlOiBWKSA9PiBUXG4gICAqL1xuICBzZWxlY3RJdGVtU2VsZWN0ZWQ6IChzdGF0ZTogVikgPT4gVDtcbiAgLyoqXG4gICAqIC0gdXNlZCB0byBzZWxlY3Qgc2VsZWN0ZWQgaXRlbVxuICAgKiAtIHBvcHVsYXRlZCB3aXRoIGFjdGlvbiBcIi4uLlNlbGVjdGVkSXRlbXMoe2l0ZW06e2lkOnN0cmluZyAuLi59fSlcIixcbiAgICogLSBzYW1lIGluc3RhbmNlIG9mIHRoZSBzdG9yZSAoc3RhdGUuZW50aXRpZXMpXG4gICAqIC0gdGhlIHNlbGVjdG9yIGlzIGNyZWF0ZWQgd2l0aDpcbiAgICogICAgLSBzZWxlY3RJZFNlbGVjdGVkICsgc2VsZWN0RW50aXRpZXMsXG4gICAqIEBwYXJhbSAoc3RhdGU6IFYpID0+IFRcbiAgICovXG4gIHNlbGVjdEl0ZW1TZWxlY3RlZE9yaWdpbjogKHN0YXRlOiBWKSA9PiBUO1xuICAvKipcbiAgICogLSB1c2VkIHRvIHNlbGVjdCBhIGdyb3VwIG9mIHNlbGVjdGVkIGl0ZW1zXG4gICAqIC0gcG9wdWxhdGVkIHdpdGggYWN0aW9uIFwiLi4uU2VsZWN0ZWRJdGVtcyh7aXRlbX0pXCIsXG4gICAqIC0gbG9jYWwgY2xvbmUsIGRvZXMgbm90IG1hdGNoIHRoZSBpbnN0YW5jZSBpbiB0aGUgc3RvcmVcbiAgICogQHBhcmFtIChzdGF0ZTogVikgPT4gVFtdXG4gICAqL1xuICBzZWxlY3RJdGVtc1NlbGVjdGVkOiAoc3RhdGU6IFYpID0+IFRbXTtcblxuICAvKipcbiAgICogLSB1c2VkIHRvIHNlbGVjdCBhIGdyb3VwIG9mIHNlbGVjdGVkIGVudGl0aWVzXG4gICAqIC0gcG9wdWxhdGVkIHdpdGggYWN0aW9uIFwiLi4uU2VsZWN0ZWRJdGVtcyh7aXRlbX0pXCIsXG4gICAqIC0gbG9jYWwgY2xvbmUsIGRvZXMgbm90IG1hdGNoIHRoZSBpbnN0YW5jZSBpbiB0aGUgc3RvcmVcbiAgICogQHBhcmFtIChzdGF0ZTogVikgPT4gRGljdGlvbmFyeTxUPlxuICAgKi9cbiAgc2VsZWN0RW50aXRpZXNTZWxlY3RlZDogKHN0YXRlOiBWKSA9PiBEaWN0aW9uYXJ5PFQ+O1xuICAvKipcbiAgICogLSB1c2VkIHRvIHNlbGVjdCBhIGdyb3VwIG9mIHNlbGVjdGVkIGl0ZW1zXG4gICAqIC0gcG9wdWxhdGVkIHdpdGggYWN0aW9uIFwiLi4uU2VsZWN0ZWRJdGVtcyh7aXRlbX0pXCIsXG4gICAqIC0gc2FtZSBpbnN0YW5jZSBvZiB0aGUgc3RvcmUgKHN0YXRlLmVudGl0aWVzKVxuICAgKiAgICAtIHNlbGVjdElkc1NlbGVjdGVkICsgc2VsZWN0RW50aXRpZXMsXG4gICAqIEBwYXJhbSAoc3RhdGU6IFYpID0+IFRbXVxuICAgKi9cbiAgc2VsZWN0SXRlbXNTZWxlY3RlZE9yaWdpbjogKHN0YXRlOiBWKSA9PiBUW107XG4gIC8qKlxuICAgKiAtIHVzZWQgdG8gc2VsZWN0IGxhc3QgY3JpdGVyaWFcbiAgICogQHBhcmFtIChzdGF0ZTogVikgPT4gSUNyaXRlcmlhXG4gICAqL1xuICBzZWxlY3RMYXN0Q3JpdGVyaWE6IChzdGF0ZTogVikgPT4gSUNyaXRlcmlhO1xuICAvKipcbiAgICogLSB1c2VkIHRvIHNlbGVjdCBhbiBlcnJvclxuICAgKiBAcGFyYW0gKHN0YXRlOiBWKSA9PiBzdHJpbmdcbiAgICovXG4gIHNlbGVjdEVycm9yOiAoc3RhdGU6IFYpID0+IHN0cmluZztcbiAgLyoqXG4gICAqIC0gcmV0dXJucyB0cnVlIGlmIHRoZXJlIGFyZSBjYWxscyBpbiBwcm9ncmVzc1xuICAgKiBAQHBhcmFtIChzdGF0ZTogVikgPT4gYm9vbGVhblxuICAgKi9cbiAgc2VsZWN0SXNMb2FkaW5nOiAoc3RhdGU6IFYpID0+IGJvb2xlYW47XG4gIC8qKlxuICAgKiAtIHJldHVybnMgdHJ1ZSBpZiBhbGwgY2FsbHMgYXJlIGNvbXBsZXRlZFxuICAgKiBAQHBhcmFtIChzdGF0ZTogVikgPT4gYm9vbGVhblxuICAgKi9cbiAgc2VsZWN0SXNMb2FkZWQ6IChzdGF0ZTogVikgPT4gYm9vbGVhbjtcbiAgLyoqXG4gICAqIC0gdXNlZCB0byBzZWxlY3QgZmlsdGVyc1xuICAgKiBAcGFyYW0gKHN0YXRlOiBWKSA9PiB7W3M6IHN0cmluZ106IEZpbHRlck1ldGFkYXRhO31cbiAgICovXG4gIHNlbGVjdEZpbHRlcnM6IChzdGF0ZTogVikgPT4geyBbczogc3RyaW5nXTogRmlsdGVyTWV0YWRhdGE7IH07XG4gIC8qKlxuICAgKiAtIHVzZWQgdG8gc2VsZWN0IGZpbHRlcmVkIGl0ZW1zXG4gICAqIEBwYXJhbSBNZW1vaXplZFNlbGVjdG9yPFYsIFRbXT5cbiAgICovXG4gIHNlbGVjdEZpbHRlcmVkSXRlbXM6IE1lbW9pemVkU2VsZWN0b3I8ViwgVFtdPjtcbiAgLyoqXG4gICAqIC0gdXNlZCB0byBzZWxlY3QgcmVzcG9uc2UgdmFyaWFibGUgY29udGFpbmVkIGluIHRoZSBmb3JtdWxhXG4gICAqIEBwYXJhbSAoc3RhdGU6IFYpID0+IE9wdFJlc3BvbnNlPFQ+W11cbiAgICovXG4gIHNlbGVjdFJlc3BvbnNlczogKHN0YXRlOiBWKSA9PiBPcHRSZXNwb25zZTxUPltdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEVudGl0eUNydWRTdGF0ZTxUPiBleHRlbmRzIEVudGl0eVN0YXRlPFQ+IHtcbiAgZXJyb3I6IHN0cmluZztcbiAgaXNMb2FkaW5nOiBib29sZWFuO1xuICBpc0xvYWRlZDogYm9vbGVhbjtcbiAgZmlsdGVyczogeyBbczogc3RyaW5nXTogRmlsdGVyTWV0YWRhdGE7IH07XG4gIGxhc3RDcml0ZXJpYTogSUNyaXRlcmlhO1xuICBpdGVtU2VsZWN0ZWQ6IFQ7XG4gIGlkU2VsZWN0ZWQ6IHN0cmluZyB8IG51bWJlcjtcbiAgLy8gLyoqXG4gIC8vICAqIFRPRE86IHF1ZXN0byBhdHRyaWJ1dG8gYW5kcmEgc29zdGl0dWlybyBkYSB1bmEgbGlzdGEgZGkgaWQsIGRcbiAgLy8gICogIGEgdXRpbGl6emFyZSBjb21lIHJpZmVyaW1lbnRpIGFnbGkgZWxlbWVudGkgc2VsZXppb25hdGkuXG4gIC8vICAqIEBkZXByZWNhdGVkIHV0aWxpenphcmUgZW50aXR5U2VsZWN0ZWQvaWRTZWxlY3RlZFxuICAvLyAgKi9cbiAgLy8gaXRlbXNTZWxlY3RlZDogVFtdO1xuICBlbnRpdGllc1NlbGVjdGVkOiBEaWN0aW9uYXJ5PFQ+O1xuXG4gIGlkc1NlbGVjdGVkOiBzdHJpbmdbXSB8IG51bWJlcltdO1xuICAvLyBvZ25pIGVudGl0w6AgcmVnaXN0cmEgbCdhemlvbmUgc2NhdGVuYXRhIGUgbGEgcmlzcG9zdGEgZGFsIHNlcnZlci5cbiAgcmVzcG9uc2VzOiBPcHRSZXNwb25zZTxUPltdO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEVudGl0eUNydWRBZGFwdGVyPFQ+IGV4dGVuZHMgRW50aXR5QWRhcHRlcjxUPiB7XG4gIGdldEluaXRpYWxDcnVkU3RhdGUoKTogRW50aXR5Q3J1ZFN0YXRlPFQ+O1xuXG4gIGdldEluaXRpYWxDcnVkU3RhdGU8UyBleHRlbmRzIG9iamVjdD4oc3RhdGU6IFMpOiBFbnRpdHlDcnVkU3RhdGU8VD4gJiBTO1xuXG4gIGdldENydWRTZWxlY3RvcnM8Vj4oc2VsZWN0U3RhdGU6IChzdGF0ZTogVikgPT4gRW50aXR5Q3J1ZFN0YXRlPFQ+KTogRW50aXR5Q3J1ZFNlbGVjdG9yczxULCBWPjtcblxuICBjcmVhdGVDcnVkQWN0aW9ucyhuYW1lOiBzdHJpbmcpOiBBY3Rpb25zPFQ+O1xuXG4gIC8vIHRvZG8gbW9kaWZpY2FyZSBsYSBmaXJtYSBkZWwgbWV0b2RvLCB0aXBpenphcmUgQWN0aW9uczxhbnk+XG4gIGNyZWF0ZUNydWRSZWR1Y2VyPFM+KGluaXRpYWxTdGF0ZTogUywgYWN0aW9uczogQWN0aW9uczxhbnk+KTtcbn1cblxuaW50ZXJmYWNlIFByb3BzU2VhcmNoU3VjY2VzczxUPiB7XG4gIGl0ZW1zOiBUO1xuICByZXF1ZXN0OiBJQ3JpdGVyaWE7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQWN0aW9uczxUPiB7XG5cbiAgLy8gYXppb25lIGRpc3BhY2NpYXRhIGRhbGwnZWZmZWN0IHNlOlxuICAvLyBPcHRSZXF1ZXN0QmFzZS5kaXNwYXRjaFJlc3BvbnNlID09PSB0cnVlXG4gIC8vIE9wdEVmZmVjdC5kaXNwYXRjaFJlc3BvbnNlID09PSB0cnVlXG4gIFJlc3BvbnNlPzogQWN0aW9uQ3JlYXRvcjxzdHJpbmcsIChwcm9wczogT3B0UmVzcG9uc2U8VCB8IFRbXT4pID0+IE9wdFJlc3BvbnNlPFQgfCBUW10+ICYgVHlwZWRBY3Rpb248c3RyaW5nPj47XG4gIFJlc2V0UmVzcG9uc2VzPzogQWN0aW9uQ3JlYXRvcjxzdHJpbmcsICgpID0+IHsgdHlwZTogc3RyaW5nOyB9PjtcblxuICAvKipcbiAgICogLSBhY3Rpb24gdXNlZCB0byBleGVjdXRlIGFzeW5jaHJvbm91cyByZXNlYXJjaGVzXG4gICAqIEBleGFtcGxlIFN0b3JlQWN0aW9ucy5TZWFyY2hSZXF1ZXN0KHtxdWVyeVBhcmFtczoge319KVxuICAgKiAtIG1vZGU/OiAnUkVGUkVTSCc6IHNlIHZpZW5lIHBhc3NhdG8gaWwgdmFsb3JlIFJFRlJFU0gsIGlsIGRhdG8gcHJlc2VudGUgbmVsbG8gc3RvcmUgdmllbmUgY2FuY2VsbGF0byBwcmltYSBkaSBlc2VndWlyZSBsYSBjaGlhbWF0YSxcbiAgICogICAgICAgIGFsdHJpbWVudGkgaWwgZGF0byB2ZXJyw6Agc29zdGl0dWl0byBhbCByZXN1bHQgZGVsbGEgY2hpYW1hdGFcbiAgICogQHBhcmFtIG1vZGU/OiAnUkVGUkVTSCcgfCAndXBzZXJ0TWFueScgfCAnYWRkQWxsJ1xuICAgKiBAcGFyYW0gcXVlcnlQYXJhbXM/OiBhbnlcbiAgICogQHBhcmFtIHBhdGg/OiBhbnlbXVxuICAgKiBAcGFyYW0gb25GYXVsdD86IEFjdGlvbltdXG4gICAqIEBwYXJhbSBvblJlc3VsdD86IEFjdGlvbltdXG4gICAqIEBwYXJhbSBkaXNwYXRjaFJlc3BvbnNlPzogYm9vbGVhblxuICAgKiBAcGFyYW0gdHlwZTogc3RyaW5nXG4gICAqXG4gICAqL1xuICBTZWFyY2hSZXF1ZXN0PzogQWN0aW9uQ3JlYXRvcjxzdHJpbmcsIChwcm9wczogSUNyaXRlcmlhKSA9PiBJQ3JpdGVyaWEgJiBUeXBlZEFjdGlvbjxzdHJpbmc+PjtcbiAgU2VhcmNoRmFpbHVyZT86IEFjdGlvbkNyZWF0b3I8c3RyaW5nLCAocHJvcHM6IHsgZXJyb3I6IHN0cmluZzsgfSkgPT4geyBlcnJvcjogc3RyaW5nOyB9ICYgVHlwZWRBY3Rpb248c3RyaW5nPj47XG4gIFNlYXJjaFN1Y2Nlc3M/OiBBY3Rpb25DcmVhdG9yPHN0cmluZywgKHByb3BzOiB7IGl0ZW1zOiBUW10sIHJlcXVlc3Q6IElDcml0ZXJpYSB9KSA9PiB7IGl0ZW1zOiBUW10sIHJlcXVlc3Q6IElDcml0ZXJpYSB9ICYgVHlwZWRBY3Rpb248c3RyaW5nPj47XG5cbiAgLyoqXG4gICAqIC0gYWN0aW9uIHVzZWQgdG8gZXhlY3V0ZSBhIHJlcXVlc3QgdG8gcmVtb3ZlIGFuIGl0ZW1cbiAgICogQGV4YW1wbGUgY29uc3QgdG9TdGF0ZTogU3RhdGUgPSBmZWF0dXJlUmVkdWNlcihzdGF0ZSwgYWN0aW9ucy5EZWxldGVSZXF1ZXN0KHBheWxvYWQpKTtcbiAgICogQHBhcmFtIGl0ZW06IFRcbiAgICogQHBhcmFtIHBhdGg/OiBhbnlbXVxuICAgKiBAcGFyYW0gb25GYXVsdD86IEFjdGlvbltdXG4gICAqIEBwYXJhbSBvblJlc3VsdD86IEFjdGlvbltdXG4gICAqIEBwYXJhbSBkaXNwYXRjaFJlc3BvbnNlPzogYm9vbGVhblxuICAgKi9cbiAgRGVsZXRlUmVxdWVzdD86IEFjdGlvbkNyZWF0b3I8c3RyaW5nLCAocHJvcHM6IE9wdFJlcXVlc3QpID0+IE9wdFJlcXVlc3QgJiBUeXBlZEFjdGlvbjxzdHJpbmc+PjtcbiAgRGVsZXRlRmFpbHVyZT86IEFjdGlvbkNyZWF0b3I8c3RyaW5nLCAocHJvcHM6IHsgZXJyb3I6IHN0cmluZzsgfSkgPT4geyBlcnJvcjogc3RyaW5nOyB9ICYgVHlwZWRBY3Rpb248c3RyaW5nPj47XG4gIERlbGV0ZVN1Y2Nlc3M/OiBBY3Rpb25DcmVhdG9yPHN0cmluZywgKHByb3BzOiB7IGlkOiBzdHJpbmc7IH0pID0+IHsgaWQ6IHN0cmluZzsgfSAmIFR5cGVkQWN0aW9uPHN0cmluZz4+O1xuXG4gIC8qKlxuICAgKiAtIGFjdGlvbiB1c2VkIHRvIGV4ZWN1dGUgYSByZXF1ZXN0IHRvIHJlbW92ZSBtb3JlIGl0ZW1zXG4gICAqIEBleGFtcGxlIHRoaXMuc3RvcmUkLmRpc3BhdGNoKDwlPSBjbGF6eiAlPlN0b3JlQWN0aW9ucy5EZWxldGVNYW55UmVxdWVzdCh7aXRlbXN9KSk7XG4gICAqIEBwYXJhbSBpdGVtczogVFtdXG4gICAqIEBwYXJhbSBwYXRoPzogYW55W11cbiAgICogQHBhcmFtIG9uRmF1bHQ/OiBBY3Rpb25bXVxuICAgKiBAcGFyYW0gb25SZXN1bHQ/OiBBY3Rpb25bXVxuICAgKiBAcGFyYW0gZGlzcGF0Y2hSZXNwb25zZT86IGJvb2xlYW5cbiAgICovXG4gIERlbGV0ZU1hbnlSZXF1ZXN0PzogQWN0aW9uQ3JlYXRvcjxzdHJpbmcsIChwcm9wczogT3B0UmVxdWVzdCkgPT4gT3B0UmVxdWVzdCAmIFR5cGVkQWN0aW9uPHN0cmluZz4+O1xuICBEZWxldGVNYW55RmFpbHVyZT86IEFjdGlvbkNyZWF0b3I8c3RyaW5nLCAocHJvcHM6IHsgZXJyb3I6IHN0cmluZzsgfSkgPT4geyBlcnJvcjogc3RyaW5nOyB9ICYgVHlwZWRBY3Rpb248c3RyaW5nPj47XG4gIERlbGV0ZU1hbnlTdWNjZXNzPzogQWN0aW9uQ3JlYXRvcjxzdHJpbmcsIChwcm9wczogeyBpZHM6IHN0cmluZ1tdOyB9KSA9PiB7IGlkczogc3RyaW5nW107IH0gJiBUeXBlZEFjdGlvbjxzdHJpbmc+PjtcblxuICAvKipcbiAgICogLSBhY3Rpb24gdXNlZCB0byBleGVjdXRlIGEgcmVxdWVzdCB0byBjcmVhdGUgYSBuZXcgaXRlbVxuICAgKiBAZXhhbXBsZSAgc3RvcmUuZGlzcGF0Y2goYWN0aW9ucy5DcmVhdGVSZXF1ZXN0KHBheWxvYWQpKTtcbiAgICogQHBhcmFtIGl0ZW06IFRcbiAgICogQHBhcmFtIHBhdGg/OiBhbnlbXVxuICAgKiBAcGFyYW0gb25GYXVsdD86IEFjdGlvbltdXG4gICAqIEBwYXJhbSBvblJlc3VsdD86IEFjdGlvbltdXG4gICAqIEBwYXJhbSBkaXNwYXRjaFJlc3BvbnNlPzogYm9vbGVhblxuICAgKi9cbiAgQ3JlYXRlUmVxdWVzdD86IEFjdGlvbkNyZWF0b3I8c3RyaW5nLCAocHJvcHM6IE9wdFJlcXVlc3QpID0+IE9wdFJlcXVlc3QgJiBUeXBlZEFjdGlvbjxzdHJpbmc+PjtcbiAgQ3JlYXRlRmFpbHVyZT86IEFjdGlvbkNyZWF0b3I8c3RyaW5nLCAocHJvcHM6IHsgZXJyb3I6IHN0cmluZzsgfSkgPT4geyBlcnJvcjogc3RyaW5nOyB9ICYgVHlwZWRBY3Rpb248c3RyaW5nPj47XG4gIENyZWF0ZVN1Y2Nlc3M/OiBBY3Rpb25DcmVhdG9yPHN0cmluZywgKHByb3BzOiB7IGl0ZW06IFQ7IH0pID0+IHsgaXRlbTogVDsgfSAmIFR5cGVkQWN0aW9uPHN0cmluZz4+O1xuXG4gIC8qKlxuICAgKiAtIGFjdGlvbiB1c2VkIHRvIGV4ZWN1dGUgYSByZXF1ZXN0IHRvIGNyZWF0ZSBtb3JlIG5ldyBpdGVtc1xuICAgKiBAZXhhbXBsZSBzdG9yZS5kaXNwYXRjaChhY3Rpb25zLkNyZWF0ZU1hbnlSZXF1ZXN0KHBheWxvYWQpKTtcbiAgICogQHBhcmFtIGl0ZW1zOiBUW11cbiAgICogQHBhcmFtIHBhdGg/OiBhbnlbXVxuICAgKiBAcGFyYW0gb25GYXVsdD86IEFjdGlvbltdXG4gICAqIEBwYXJhbSBvblJlc3VsdD86IEFjdGlvbltdXG4gICAqIEBwYXJhbSBkaXNwYXRjaFJlc3BvbnNlPzogYm9vbGVhblxuICAgKi9cbiAgQ3JlYXRlTWFueVJlcXVlc3Q/OiBBY3Rpb25DcmVhdG9yPHN0cmluZywgKHByb3BzOiBPcHRSZXF1ZXN0PFRbXSB8IFQ+KSA9PiBPcHRSZXF1ZXN0PFRbXSB8IFQ+ICYgVHlwZWRBY3Rpb248c3RyaW5nPj47XG4gIENyZWF0ZU1hbnlGYWlsdXJlPzogQWN0aW9uQ3JlYXRvcjxzdHJpbmcsIChwcm9wczogeyBlcnJvcjogc3RyaW5nOyB9KSA9PiB7IGVycm9yOiBzdHJpbmc7IH0gJiBUeXBlZEFjdGlvbjxzdHJpbmc+PjtcbiAgQ3JlYXRlTWFueVN1Y2Nlc3M/OiBBY3Rpb25DcmVhdG9yPHN0cmluZywgKHByb3BzOiB7IGl0ZW1zOiBUW107IH0pID0+IHsgaXRlbXM6IFRbXTsgfSAmIFR5cGVkQWN0aW9uPHN0cmluZz4+O1xuXG4gIC8qKlxuICAgKiAgLSBhY3Rpb24gdXNlZCB0byBleGVjdXRlIGEgcmVxdWVzdCB0byBzZWxlY3QgYW4gaXRlbVxuICAgKiBAZXhhbXBsZSBzdG9yZS5kaXNwYXRjaChhY3Rpb25zLlNlbGVjdFJlcXVlc3QocGF5bG9hZCkpO1xuICAgKiBAcGFyYW0gaXRlbTogVFxuICAgKiBAcGFyYW0gcGF0aD86IGFueVtdXG4gICAqIEBwYXJhbSBvbkZhdWx0PzogQWN0aW9uW11cbiAgICogQHBhcmFtIG9uUmVzdWx0PzogQWN0aW9uW11cbiAgICogQHBhcmFtIGRpc3BhdGNoUmVzcG9uc2U/OiBib29sZWFuXG4gICAqL1xuICBTZWxlY3RSZXF1ZXN0PzogQWN0aW9uQ3JlYXRvcjxzdHJpbmcsIChwcm9wczogSUNyaXRlcmlhKSA9PiBJQ3JpdGVyaWEgJiBUeXBlZEFjdGlvbjxzdHJpbmc+PjtcbiAgU2VsZWN0RmFpbHVyZT86IEFjdGlvbkNyZWF0b3I8c3RyaW5nLCAocHJvcHM6IHsgZXJyb3I6IHN0cmluZzsgfSkgPT4geyBlcnJvcjogc3RyaW5nOyB9ICYgVHlwZWRBY3Rpb248c3RyaW5nPj47XG4gIFNlbGVjdFN1Y2Nlc3M/OiBBY3Rpb25DcmVhdG9yPHN0cmluZywgKHByb3BzOiB7IGl0ZW06IFQ7IH0pID0+IHsgaXRlbTogVDsgfSAmIFR5cGVkQWN0aW9uPHN0cmluZz4+O1xuXG4gIC8qKlxuICAgKiAgLSBhY3Rpb24gdXNlZCB0byBleGVjdXRlIGEgcmVxdWVzdCB0byBtb2RpZnkgYW4gaXRlbVxuICAgKiBAZXhhbXBsZSBzdG9yZS5kaXNwYXRjaChhY3Rpb25zLkVkaXRSZXF1ZXN0KHBheWxvYWQpKTtcbiAgICogQHBhcmFtIGl0ZW06IFRcbiAgICogQHBhcmFtIHBhdGg/OiBhbnlbXVxuICAgKiBAcGFyYW0gb25GYXVsdD86IEFjdGlvbltdXG4gICAqIEBwYXJhbSBvblJlc3VsdD86IEFjdGlvbltdXG4gICAqIEBwYXJhbSBkaXNwYXRjaFJlc3BvbnNlPzogYm9vbGVhblxuICAgKi9cbiAgRWRpdFJlcXVlc3Q/OiBBY3Rpb25DcmVhdG9yPHN0cmluZywgKHByb3BzOiBPcHRSZXF1ZXN0KSA9PiBPcHRSZXF1ZXN0ICYgVHlwZWRBY3Rpb248c3RyaW5nPj47XG4gIEVkaXRGYWlsdXJlPzogQWN0aW9uQ3JlYXRvcjxzdHJpbmcsIChwcm9wczogeyBlcnJvcjogc3RyaW5nOyB9KSA9PiB7IGVycm9yOiBzdHJpbmc7IH0gJiBUeXBlZEFjdGlvbjxzdHJpbmc+PjtcbiAgRWRpdFN1Y2Nlc3M/OiBBY3Rpb25DcmVhdG9yPHN0cmluZywgKHByb3BzOiB7IGl0ZW06IFQ7IH0pID0+IHsgaXRlbTogVDsgfSAmIFR5cGVkQWN0aW9uPHN0cmluZz4+O1xuXG4gIC8qKlxuICAgKiAgLSBhY3Rpb24gdXNlZCB0byBleGVjdXRlIGEgcmVxdWVzdCB0byBtb2RpZnkgbW9yZSBpdGVtc1xuICAgKiBAZXhhbXBsZSBzdG9yZS5kaXNwYXRjaChhY3Rpb25zLkVkaXRNYW55UmVxdWVzdChwYXlsb2FkKSk7XG4gICAqIEBwYXJhbSBpdGVtczogVFtdXG4gICAqIEBwYXJhbSBwYXRoPzogYW55W11cbiAgICogQHBhcmFtIG9uRmF1bHQ/OiBBY3Rpb25bXVxuICAgKiBAcGFyYW0gb25SZXN1bHQ/OiBBY3Rpb25bXVxuICAgKiBAcGFyYW0gZGlzcGF0Y2hSZXNwb25zZT86IGJvb2xlYW5cbiAgICovXG4gIEVkaXRNYW55UmVxdWVzdD86IEFjdGlvbkNyZWF0b3I8c3RyaW5nLCAocHJvcHM6IE9wdFJlcXVlc3QpID0+IE9wdFJlcXVlc3QgJiBUeXBlZEFjdGlvbjxzdHJpbmc+PjtcbiAgRWRpdE1hbnlGYWlsdXJlPzogQWN0aW9uQ3JlYXRvcjxzdHJpbmcsIChwcm9wczogeyBlcnJvcjogc3RyaW5nOyB9KSA9PiB7IGVycm9yOiBzdHJpbmc7IH0gJiBUeXBlZEFjdGlvbjxzdHJpbmc+PjtcbiAgRWRpdE1hbnlTdWNjZXNzPzogQWN0aW9uQ3JlYXRvcjxzdHJpbmcsIChwcm9wczogeyBpdGVtczogVFtdOyB9KSA9PiB7IGl0ZW1zOiBUW107IH0gJiBUeXBlZEFjdGlvbjxzdHJpbmc+PjtcblxuICAvKipcbiAgICogLSBhY3Rpb24gdXNlZCB0byBleGVjdXRlIGEgc3RvcmUgcmVzZXRcbiAgICogQGV4YW1wbGUgc3RvcmUuZGlzcGF0Y2goYWN0aW9ucy5SZXNldCgpKTtcbiAgICogQHBhcmFtIHR5cGU6IHN0cmluZ1xuICAgKi9cbiAgUmVzZXQ/OiBBY3Rpb25DcmVhdG9yPHN0cmluZywgKCkgPT4geyB0eXBlOiBzdHJpbmc7IH0+O1xuXG4gIC8qKlxuICAgKiAtIGFjdGlvbiB1c2VkIHRvIGFwcGx5IHNvbWUgZmlsdGVycyBvbiBkYXRhXG4gICAqIEBleGFtcGxlIHN0b3JlLmRpc3BhdGNoKGFjdGlvbnMuRmlsdGVycyhwYXlsb2FkKSk7XG4gICAqIEBwYXJhbSBmaWx0ZXJzOiB7IFtzOiBzdHJpbmddOiBGaWx0ZXJNZXRhZGF0YTt9XG4gICAqL1xuICBGaWx0ZXJzPzogQWN0aW9uQ3JlYXRvcjxzdHJpbmcsIChwcm9wczogeyBmaWx0ZXJzOiB7IFtzOiBzdHJpbmddOiBGaWx0ZXJNZXRhZGF0YTsgfTsgfSkgPT4geyBmaWx0ZXJzOiB7IFtzOiBzdHJpbmddOiBGaWx0ZXJNZXRhZGF0YTsgfTsgfSAmIFR5cGVkQWN0aW9uPHN0cmluZz4+O1xuXG4gIC8vIHNlbGV6aW9uZSBsb2NhbGUgZGkgKyBlbGVtZW50aVxuICAvKipcbiAgICogLSBhY3Rpb24gdXNlZCB0byBpZGVudGlmeSBhIGdyb3VwIG9mIGl0ZW1zIHRvIHNlbGVjdFxuICAgKiBAZXhhbXBsZSBzdG9yZS5kaXNwYXRjaChhY3Rpb25zLlNlbGVjdEl0ZW1zKHBheWxvYWQpKTtcbiAgICogQHBhcmFtIGl0ZW1zOiBUW11cbiAgICovXG4gIFNlbGVjdEl0ZW1zPzogQWN0aW9uQ3JlYXRvcjxzdHJpbmcsIChwcm9wczogeyBpdGVtczogVFtdOyB9KSA9PiB7IGl0ZW1zOiBUW107IH0gJiBUeXBlZEFjdGlvbjxzdHJpbmc+PjtcbiAgLy8gVE9ETzogZG9jXG4gIEFkZE1hbnlTZWxlY3RlZD86IEFjdGlvbkNyZWF0b3I8c3RyaW5nLCAocHJvcHM6IHsgaXRlbXM6IFRbXTsgfSkgPT4geyBpdGVtczogVFtdOyB9ICYgVHlwZWRBY3Rpb248c3RyaW5nPj47XG4gIC8vIFRPRE86IGRvY1xuICBSZW1vdmVNYW55U2VsZWN0ZWQ/OiBBY3Rpb25DcmVhdG9yPHN0cmluZywgKHByb3BzOiB7IGlkczogc3RyaW5nW107IH0pID0+IHsgaWRzOiBzdHJpbmdbXTsgfSAmIFR5cGVkQWN0aW9uPHN0cmluZz4+O1xuICAvLyBUT0RPOiBkb2NcbiAgUmVtb3ZlQWxsU2VsZWN0ZWQ/OiBBY3Rpb25DcmVhdG9yPHN0cmluZz47XG4gIC8qKlxuICAgKiAtIGFjdGlvbiB1c2VkIHRvIGlkZW50aWZ5IGEgc2luZ2xlIGl0ZW0gdG8gc2VsZWN0XG4gICAqIEBleGFtcGxlIHN0b3JlLmRpc3BhdGNoKGFjdGlvbnMuU2VsZWN0SXRlbShwYXlsb2FkKSk7XG4gICAqIEBwYXJhbSBpdGVtOiBUXG4gICAqL1xuICBTZWxlY3RJdGVtPzogQWN0aW9uQ3JlYXRvcjxzdHJpbmcsIChwcm9wczogeyBpdGVtOiBUOyB9KSA9PiB7IGl0ZW06IFQ7IH0gJiBUeXBlZEFjdGlvbjxzdHJpbmc+PjtcblxuICAvKipcbiAgICogLSBhY3Rpb24gdXNlZCB0byBtb2RpZnkgYW4gaXRlbSBvbiB0aGUgc3RvcmVcbiAgICogQGV4YW1wbGUgc3RvcmUuZGlzcGF0Y2goYWN0aW9ucy5FZGl0KHBheWxvYWQpKTtcbiAgICogQHBhcmFtIGl0ZW06IFRcbiAgICovXG4gIEVkaXQ/OiBBY3Rpb25DcmVhdG9yPHN0cmluZywgKHByb3BzOiB7IGl0ZW06IFQ7IH0pID0+IHsgaXRlbTogVDsgfSAmIFR5cGVkQWN0aW9uPHN0cmluZz4+O1xuXG4gIC8qKlxuICAgKiAtIGFjdGlvbiB1c2VkIHRvIGNyZWF0ZSBhbiBpdGVtIG9uIHRoZSBzdG9yZVxuICAgKiBAZXhhbXBsZSBzdG9yZS5kaXNwYXRjaChhY3Rpb25zLkNyZWF0ZShwYXlsb2FkKSk7XG4gICAqIEBwYXJhbSBpdGVtOiBUXG4gICAqL1xuICBDcmVhdGU/OiBBY3Rpb25DcmVhdG9yPHN0cmluZywgKHByb3BzOiB7IGl0ZW06IFQ7IH0pID0+IHsgaXRlbTogVDsgfSAmIFR5cGVkQWN0aW9uPHN0cmluZz4+O1xuXG4gIC8qKlxuICAgKiAtIGFjdGlvbiB1c2VkIHRvIHJlbW92ZSBhbiBpdGVtIG9uIHRoZSBzdG9yZVxuICAgKiBAZXhhbXBsZSBjb25zdCB0b1N0YXRlOiBTdGF0ZSA9IGZlYXR1cmVSZWR1Y2VyKGV4cGVjdFN0YXRlLCBhY3Rpb25zLkRlbGV0ZShwYXlsb2FkKSk7XG4gICAqIEBwYXJhbSBpZDogc3RyaW5nXG4gICAqL1xuICBEZWxldGU/OiBBY3Rpb25DcmVhdG9yPHN0cmluZywgKHByb3BzOiB7IGlkOiBzdHJpbmc7IH0pID0+IHsgaWQ6IHN0cmluZzsgfSAmIFR5cGVkQWN0aW9uPHN0cmluZz4+O1xuXG59XG4iXX0=
|