@infrab4a/connect 3.5.0-beta.1 → 3.5.0-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.
Files changed (27) hide show
  1. package/bundles/infrab4a-connect.umd.js +161 -78
  2. package/bundles/infrab4a-connect.umd.js.map +1 -1
  3. package/domain/generic/repository/find.repository.d.ts +3 -0
  4. package/domain/shopping/models/enums/order-status.enum.d.ts +2 -2
  5. package/esm2015/domain/generic/repository/find.repository.js +1 -1
  6. package/esm2015/domain/shopping/models/campaign-hashtag.js +1 -1
  7. package/esm2015/domain/shopping/models/enums/order-status.enum.js +3 -3
  8. package/esm2015/infra/firebase/firestore/enums/firestore-field-type.enum.js +10 -0
  9. package/esm2015/infra/firebase/firestore/enums/index.js +2 -0
  10. package/esm2015/infra/firebase/firestore/mixins/with-find-firestore.mixin.js +11 -5
  11. package/esm2015/infra/firebase/firestore/mixins/with-firestore.mixin.js +34 -7
  12. package/esm2015/infra/firebase/firestore/repositories/shopping/campaign-dashboard-firestore.repository.js +2 -2
  13. package/esm2015/infra/firebase/firestore/repositories/shopping/order-firestore.repository.js +7 -2
  14. package/esm2015/infra/firebase/firestore/types/firestore.repository.type.js +1 -1
  15. package/esm2015/infra/hasura-graphql/mixins/with-find-hasura-graphql.mixin.js +17 -12
  16. package/esm2015/infra/hasura-graphql/repositories/catalog/category-hasura-graphql.repository.js +28 -17
  17. package/esm2015/infra/hasura-graphql/repositories/catalog/product-hasura-graphql.repository.js +7 -4
  18. package/esm2015/infra/hasura-graphql/repositories/catalog/variant-hasura-graphql.repository.js +2 -2
  19. package/fesm2015/infrab4a-connect.js +108 -43
  20. package/fesm2015/infrab4a-connect.js.map +1 -1
  21. package/infra/firebase/firestore/enums/firestore-field-type.enum.d.ts +8 -0
  22. package/infra/firebase/firestore/enums/index.d.ts +1 -0
  23. package/infra/firebase/firestore/mixins/with-find-firestore.mixin.d.ts +2 -2
  24. package/infra/firebase/firestore/repositories/shopping/campaign-dashboard-firestore.repository.d.ts +2 -2
  25. package/infra/firebase/firestore/types/firestore.repository.type.d.ts +3 -1
  26. package/infra/hasura-graphql/mixins/with-find-hasura-graphql.mixin.d.ts +4 -9
  27. package/package.json +2 -2
@@ -1,6 +1,6 @@
1
1
  import { __awaiter, __rest } from "tslib";
2
2
  import { Category, Where, } from '../../../../domain';
3
- import { DuplicatedResultsError, NotFoundError, RequiredArgumentError } from '../../../../errors';
3
+ import { DuplicatedResultsError, NotFoundError } from '../../../../errors';
4
4
  import { Base, omit } from '../../../../utils';
5
5
  import { HasuraGraphQLColumnType } from '../../enums';
6
6
  import { withCrudHasuraGraphQL, withHasuraGraphQL } from '../../mixins';
@@ -83,7 +83,7 @@ export class CategoryHasuraGraphQLRepository extends withCrudHasuraGraphQL(withH
83
83
  var _a;
84
84
  return __awaiter(this, void 0, void 0, function* () {
85
85
  return Number.isNaN(+identifiers.id)
86
- ? (_a = (yield this.find({ filters: { firestoreId: identifiers.id } })).data) === null || _a === void 0 ? void 0 : _a[0]
86
+ ? (_a = (yield this.find({ filters: { firestoreId: identifiers.id }, options: { enableCount: false } })).data) === null || _a === void 0 ? void 0 : _a[0]
87
87
  : _super.get.call(this, identifiers);
88
88
  });
89
89
  }
@@ -105,21 +105,31 @@ export class CategoryHasuraGraphQLRepository extends withCrudHasuraGraphQL(withH
105
105
  return __awaiter(this, void 0, void 0, function* () {
106
106
  if (!slug)
107
107
  return;
108
- const { data, count } = yield this.find({ filters: { slug, shop, published: true } });
109
- if (count > 1)
110
- throw new DuplicatedResultsError('Query returned duplicated values');
111
- if (!count)
108
+ const { data } = yield this.find({ filters: { slug, shop, published: true }, options: { enableCount: false } });
109
+ if (!data.length)
112
110
  throw new NotFoundError(`Category with slug ${slug} not found`);
111
+ if (data.length > 1)
112
+ throw new DuplicatedResultsError('Query returned duplicated values');
113
113
  return data.shift();
114
114
  });
115
115
  }
116
116
  getCategoriesForHome(categoryIds, limit = 4) {
117
117
  return __awaiter(this, void 0, void 0, function* () {
118
- const { data: categories, count } = yield this.find({
119
- filters: { firestoreId: { operator: Where.IN, value: categoryIds.filter(Boolean) }, published: true },
120
- });
121
- if (!count)
122
- throw new NotFoundError('Categories not found');
118
+ if (!(categoryIds === null || categoryIds === void 0 ? void 0 : categoryIds.length))
119
+ return [];
120
+ const categoriesFirestore = categoryIds.filter((categoryId) => Number.isNaN(+categoryId));
121
+ const categoriesHasura = categoryIds.filter((categoryId) => +categoryId > 0);
122
+ const categories = [];
123
+ if (categoriesFirestore.length)
124
+ categories.push(...(yield this.find({
125
+ filters: { firestoreId: { operator: Where.IN, value: categoriesFirestore.filter(Boolean) }, published: true },
126
+ }).then(({ data }) => data)));
127
+ if (categoriesHasura.length)
128
+ categories.push(...(yield this.find({
129
+ filters: { id: { operator: Where.IN, value: categoriesHasura.filter(Boolean) }, published: true },
130
+ }).then(({ data }) => data)));
131
+ if (!categories.length)
132
+ return [];
123
133
  const homeSections = yield Promise.all(categories.map((category) => __awaiter(this, void 0, void 0, function* () {
124
134
  return ({
125
135
  category,
@@ -130,11 +140,12 @@ export class CategoryHasuraGraphQLRepository extends withCrudHasuraGraphQL(withH
130
140
  });
131
141
  }
132
142
  mountCategory(category, options) {
143
+ var _a;
133
144
  return __awaiter(this, void 0, void 0, function* () {
134
- if (!category.products)
135
- throw new RequiredArgumentError(['Category products is empty']);
145
+ if (!((_a = category === null || category === void 0 ? void 0 : category.products) === null || _a === void 0 ? void 0 : _a.length))
146
+ return [];
136
147
  const products = [];
137
- const { data: productsData } = yield this.productRepository.find(Object.assign({ filters: Object.assign({ id: { operator: Where.IN, value: category.products }, published: true }, ((options === null || options === void 0 ? void 0 : options.hasStock) ? { stock: { quantity: { operator: Where.GT, value: 0 } } } : {})), fields: [
148
+ const { data: productsData } = yield this.productRepository.find(Object.assign(Object.assign({ filters: Object.assign({ id: { operator: Where.IN, value: category.products }, published: true }, ((options === null || options === void 0 ? void 0 : options.hasStock) ? { stock: { quantity: { operator: Where.GT, value: 0 } } } : {})), fields: [
138
149
  'id',
139
150
  'name',
140
151
  'slug',
@@ -158,7 +169,7 @@ export class CategoryHasuraGraphQLRepository extends withCrudHasuraGraphQL(withH
158
169
  'tags',
159
170
  'type',
160
171
  'shoppingCount',
161
- ] }, ((options === null || options === void 0 ? void 0 : options.limit) ? { limits: { limit: options === null || options === void 0 ? void 0 : options.limit } } : {})));
172
+ ] }, ((options === null || options === void 0 ? void 0 : options.limit) ? { limits: { limit: options === null || options === void 0 ? void 0 : options.limit } } : {})), { options: { enableCount: false } }));
162
173
  products.push(...productsData);
163
174
  return products;
164
175
  });
@@ -168,7 +179,7 @@ export class CategoryHasuraGraphQLRepository extends withCrudHasuraGraphQL(withH
168
179
  return __awaiter(this, void 0, void 0, function* () {
169
180
  if (!Number.isNaN(+id))
170
181
  return id;
171
- const { data } = yield this.find({ filters: { firestoreId: id } });
182
+ const { data } = yield this.find({ filters: { firestoreId: id }, options: { enableCount: false } });
172
183
  if ((_a = data === null || data === void 0 ? void 0 : data[0]) === null || _a === void 0 ? void 0 : _a.id)
173
184
  return (_b = data === null || data === void 0 ? void 0 : data[0]) === null || _b === void 0 ? void 0 : _b.id;
174
185
  throw new NotFoundError(`Category with id ${id} not found`);
@@ -227,4 +238,4 @@ export class CategoryHasuraGraphQLRepository extends withCrudHasuraGraphQL(withH
227
238
  });
228
239
  }
229
240
  }
230
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F0ZWdvcnktaGFzdXJhLWdyYXBocWwucmVwb3NpdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nvbm5lY3Qvc3JjL2luZnJhL2hhc3VyYS1ncmFwaHFsL3JlcG9zaXRvcmllcy9jYXRhbG9nL2NhdGVnb3J5LWhhc3VyYS1ncmFwaHFsLnJlcG9zaXRvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFDTCxRQUFRLEVBUVIsS0FBSyxHQUNOLE1BQU0sb0JBQW9CLENBQUE7QUFDM0IsT0FBTyxFQUFFLHNCQUFzQixFQUFFLGFBQWEsRUFBRSxxQkFBcUIsRUFBRSxNQUFNLG9CQUFvQixDQUFBO0FBQ2pHLE9BQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFDOUMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sYUFBYSxDQUFBO0FBQ3JELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQU12RSxNQUFNLE9BQU8sK0JBQ1gsU0FBUSxxQkFBcUIsQ0FBQyxpQkFBaUIsQ0FBd0IsSUFBSSxDQUFDLENBQUM7SUFHN0UsWUFDRSxRQUFnQixFQUNoQixXQUFxQyxFQUNwQixpQkFBaUQ7UUFFbEUsS0FBSyxDQUFDO1lBQ0osU0FBUyxFQUFFLFVBQVU7WUFDckIsS0FBSyxFQUFFLFFBQVE7WUFDZixRQUFRO1lBQ1IsV0FBVztZQUNYLE1BQU0sRUFBRTtnQkFDTixFQUFFLEVBQUUsRUFBRSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsRUFBRSxFQUFFO2dCQUN0RixFQUFFLFdBQVcsRUFBRSxFQUFFLFVBQVUs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QVUsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLENBQUMsQ0FBQztpQkFDbkc7YUFDRixDQUFDLENBQUE7WUFFRixPQUFPLFNBQVMsQ0FBQyxRQUFRLENBQUE7UUFDM0IsQ0FBQztLQUFBO0lBRWEsY0FBYyxDQUMxQixVQUFrQixFQUNsQixFQUFFLFFBQVEsRUFBbUU7O1lBRTdFLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFBO1lBRWxELElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUTtnQkFBRSxPQUFNO1lBRS9CLE1BQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQyxnQ0FBZ0MsRUFBRSxDQUFDLGFBQWEsQ0FBQyxFQUFFO2dCQUNyRSxVQUFVLEVBQUU7b0JBQ1YsS0FBSyxFQUFFLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRTtvQkFDbEMsSUFBSSxFQUFFLG9DQUFvQztvQkFDMUMsUUFBUSxFQUFFLElBQUk7aUJBQ2Y7Z0JBQ0QsSUFBSSxFQUFFO29CQUNKLEtBQUssRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsYUFBYSxDQUFDLENBQUM7b0JBQ3RDLElBQUksRUFBRSw2QkFBNkI7b0JBQ25DLFFBQVEsRUFBRSxJQUFJO2lCQUNmO2FBQ0YsQ0FBQyxDQUFBO1lBRUYsT0FBTyxTQUFTLENBQUMsUUFBUSxDQUFBO1FBQzNCLENBQUM7S0FBQTtDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDYXRlZ29yeSxcclxuICBDYXRlZ29yeU1ldGFkYXRhLFxyXG4gIENhdGVnb3J5UmVwb3NpdG9yeSxcclxuICBDcmVhdGVSZXBvc2l0b3J5UGFyYW1zLFxyXG4gIEdldFJlcG9zaXRvcnlQYXJhbXMsXHJcbiAgUHJvZHVjdCxcclxuICBTaG9wcyxcclxuICBVcGRhdGVSZXBvc2l0b3J5UGFyYW1zLFxyXG4gIFdoZXJlLFxyXG59IGZyb20gJy4uLy4uLy4uLy4uL2RvbWFpbidcclxuaW1wb3J0IHsgRHVwbGljYXRlZFJlc3VsdHNFcnJvciwgTm90Rm91bmRFcnJvciwgUmVxdWlyZWRBcmd1bWVudEVycm9yIH0gZnJvbSAnLi4vLi4vLi4vLi4vZXJyb3JzJ1xyXG5pbXBvcnQgeyBCYXNlLCBvbWl0IH0gZnJvbSAnLi4vLi4vLi4vLi4vdXRpbHMnXHJcbmltcG9ydCB7IEhhc3VyYUdyYXBoUUxDb2x1bW5UeXBlIH0gZnJvbSAnLi4vLi4vZW51bXMnXHJcbmltcG9ydCB7IHdpdGhDcnVkSGFzdXJhR3JhcGhRTCwgd2l0aEhhc3VyYUdyYXBoUUwgfSBmcm9tICcuLi8uLi9taXhpbnMnXHJcbmltcG9ydCB7IENhdGVnb3J5SGFzdXJhR3JhcGhRTCB9IGZyb20gJy4uLy4uL21vZGVscydcclxuaW1wb3J0IHsgSGFzdXJhR3JhcGhRTEF1dGhPcHRpb25zIH0gZnJvbSAnLi4vLi4vdHlwZXMnXHJcblxyXG5pbXBvcnQgeyBQcm9kdWN0SGFzdXJhR3JhcGhRTFJlcG9zaXRvcnkgfSBmcm9tICcuL3Byb2R1Y3QtaGFzdXJhLWdyYXBocWwucmVwb3NpdG9yeSdcclxuXHJcbmV4cG9ydCBjbGFzcyBDYXRlZ29yeUhhc3VyYUdyYXBoUUxSZXBvc2l0b3J5XHJcbiAgZXh0ZW5kcyB3aXRoQ3J1ZEhhc3VyYUdyYXBoUUwod2l0aEhhc3VyYUdyYXBoUUw8Q2F0ZWdvcnlIYXN1cmFHcmFwaFFMPihCYXNlKSlcclxuICBpbXBsZW1lbnRzIENhdGVnb3J5UmVwb3NpdG9yeVxyXG57XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBlbmRwb2ludDogc3RyaW5nLFxyXG4gICAgYXV0aE9wdGlvbnM6IEhhc3VyYUdyYXBoUUxBdXRoT3B0aW9ucyxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgcHJvZHVjdFJlcG9zaXRvcnk6IFByb2R1Y3RIYXN1cmFHcmFwaFFMUmVwb3NpdG9yeSxcclxuICApIHtcclxuICAgIHN1cGVyKHtcclxuICAgICAgdGFibGVOYW1lOiAnY2F0ZWdvcnknLFxyXG4gICAgICBtb2RlbDogQ2F0ZWdvcnksXHJcbiAgICAgIGVuZHBvaW50LFxyXG4gICAgICBhdXRoT3B0aW9ucyxcclxuICAgICAgZmllbGRzOiBbXHJcbiAgICAgICAgeyBpZDogeyBjb2x1bW5OYW1lOiAnaWQnLCB0bzogKHZhbHVlKSA9PiArdmFsdWUsIGZyb206ICh2YWx1ZSkgPT4gdmFsdWUudG9TdHJpbmcoKSB9IH0sXHJcbiAgICAgICAgeyBmaXJlc3RvcmVJZDogeyBjb2x1bW5OYW1lOiAnZmlyZXN0b3JlX2lkJyB9IH0sXHJcbiAgICAgICAgJ25hbWUnLFxyXG4gICAgICAgICdkZXNjcmlwdGlvbicsXHJcbiAgICAgICAgJ2ltYWdlJyxcclxuICAgICAgICAncHVibGlzaGVkJyxcclxuICAgICAgICAnc2hvcCcsXHJcbiAgICAgICAgJ3NsdWcnLFxyXG4gICAgICAgIHsgYnJhbmRDYXRlZ29yeTogeyBjb2x1bW5OYW1lOiAnYnJhbmRfY2F0ZWdvcnknIH0gfSxcclxuICAgICAgICB7IGJyYW5kQ2F0ZWdvcnlCYW5uZXI6IHsgY29sdW1uTmFtZTogJ2JyYW5kX2Jhbm5lcicgfSB9LFxyXG4gICAgICAgIHsgYnJhbmRDYXRlZ29yeUJhbm5lck1vYmlsZTogeyBjb2x1bW5OYW1lOiAnYnJhbmRfYmFubmVyX21vYmlsZScgfSB9LFxyXG4gICAgICAgIHsgYnJhbmRMb2dvOiB7IGNvbHVtbk5hbWU6ICdicmFuZF9sb2dvJyB9IH0sXHJcbiAgICAgICAgeyBicmFuZENvbmRpdGlvbjogeyBjb2x1bW5OYW1lOiAnYnJhbmRfY29uZGl0aW9uJyB9IH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgY29uZGl0aW9uczoge1xyXG4gICAgICAgICAgICBjb2x1bW5OYW1lOiAndGFnX2NvbmRpdGlvbicsXHJcbiAgICAgICAgICAgIHR5cGU6IEhhc3VyYUdyYXBoUUxDb2x1bW5UeXBlLkpzb25iLFxyXG4gICAgICAgICAgICBmcm9tOiAodGFnczogdW5rbm93biwgcm93KSA9PiAoeyBicmFuZDogcm93LmJyYW5kX2NvbmRpdGlvbiwgdGFnczogQXJyYXkuaXNBcnJheSh0YWdzKSA/IHRhZ3MgOiBbXSB9KSxcclxuICAgICAgICAgICAgYmluZFBlcnNpc3REYXRhOiAodmFsdWUpID0+IHtcclxuICAgICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgYnJhbmRfY29uZGl0aW9uOiB2YWx1ZS5icmFuZCxcclxuICAgICAgICAgICAgICAgIHRhZ19jb25kaXRpb246IHZhbHVlPy50YWdzIHx8IFtdLFxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgYmluZEZpbmRGaWx0ZXI6IChzZW50ZW5jZTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIC4uLihzZW50ZW5jZS5icmFuZCA/IHsgYnJhbmRfY29uZGl0aW9uOiBzZW50ZW5jZS5icmFuZCB9IDoge30pLFxyXG4gICAgICAgICAgICAgICAgLi4uKHNlbnRlbmNlLnRhZ3MgPyB7IHRhZ19jb25kaXRpb246IHNlbnRlbmNlLnRhZ3MgfSA6IHt9KSxcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgJ2ZpbHRlcnMnLFxyXG4gICAgICAgIHsgY3JlYXRlZEF0OiB7IGNvbHVtbk5hbWU6ICdjcmVhdGVkX2F0JyB9IH0sXHJcbiAgICAgICAgeyB1cGRhdGVkQXQ6IHsgY29sdW1uTmFtZTogJ3VwZGF0ZWRfYXQnIH0gfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBwcm9kdWN0czoge1xyXG4gICAgICAgICAgICBjb2x1bW5OYW1lOiAncHJvZHVjdHMnLFxyXG4gICAgICAgICAgICBmaWVsZHM6IFsncHJvZHVjdF9pZCddLFxyXG4gICAgICAgICAgICBmcm9tOiAodmFsdWU6IHsgcHJvZHVjdF9pZDogbnVtYmVyIH1bXSkgPT4gdmFsdWUubWFwKChwcm9kdWN0KSA9PiBwcm9kdWN0LnByb2R1Y3RfaWQudG9TdHJpbmcoKSksXHJcbiAgICAgICAgICAgIHRvOiAocHJvZHVjdElkcykgPT5cclxuICAgICAgICAgICAgICBwcm9kdWN0SWRzLm1hcCgocHJvZHVjdElkKSA9PiAoe1xyXG4gICAgICAgICAgICAgICAgcHJvZHVjdF9pZDogK3Byb2R1Y3RJZCxcclxuICAgICAgICAgICAgICB9KSksXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgbWV0YWRhdGE6IHtcclxuICAgICAgICAgICAgY29sdW1uTmFtZTogJ21ldGFkYXRhJyxcclxuICAgICAgICAgICAgZmllbGRzOiBbJ3RpdGxlJywgJ2Rlc2NyaXB0aW9uJ10sXHJcbiAgICAgICAgICAgIGJpbmRQZXJzaXN0RGF0YTogKHZhbHVlKSA9PiAoe1xyXG4gICAgICAgICAgICAgIG1ldGFkYXRhOiB7IGRhdGE6IHZhbHVlIH0sXHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9LFxyXG4gICAgICBdLFxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGFzeW5jIGNyZWF0ZShwYXJhbXM6IENyZWF0ZVJlcG9zaXRvcnlQYXJhbXM8Q2F0ZWdvcnlIYXN1cmFHcmFwaFFMPik6IFByb21pc2U8Q2F0ZWdvcnlIYXN1cmFHcmFwaFFMPiB7XHJcbiAgICBjb25zdCB7IG1ldGFkYXRhLCAuLi5kYXRhIH0gPSBwYXJhbXNcclxuXHJcbiAgICByZXR1cm4gc3VwZXIuY3JlYXRlKHsgLi4uZGF0YSwgbWV0YWRhdGE6IG1ldGFkYXRhIHx8IHsgZGVzY3JpcHRpb246IG51bGwsIHRpdGxlOiBudWxsIH0gfSlcclxuICB9XHJcblxyXG4gIGFzeW5jIGdldChpZGVudGlmaWVyczogR2V0UmVwb3NpdG9yeVBhcmFtczxDYXRlZ29yeUhhc3VyYUdyYXBoUUw+KTogUHJvbWlzZTxDYXRlZ29yeUhhc3VyYUdyYXBoUUw+IHtcclxuICAgIHJldHVybiBOdW1iZXIuaXNOYU4oK2lkZW50aWZpZXJzLmlkKVxyXG4gICAgICA/IChhd2FpdCB0aGlzLmZpbmQoeyBmaWx0ZXJzOiB7IGZpcmVzdG9yZUlkOiBpZGVudGlmaWVycy5pZCB9IH0pKS5kYXRhPy5bMF1cclxuICAgICAgOiBzdXBlci5nZXQoaWRlbnRpZmllcnMpXHJcbiAgfVxyXG5cclxuICBhc3luYyB1cGRhdGUocGFyYW1zOiBVcGRhdGVSZXBvc2l0b3J5UGFyYW1zPENhdGVnb3J5SGFzdXJhR3JhcGhRTD4pOiBQcm9taXNlPENhdGVnb3J5SGFzdXJhR3JhcGhRTD4ge1xyXG4gICAgY29uc3QgeyBwcm9kdWN0cywgaWQ6IGNoZWNrSWQsIG1ldGFkYXRhLCAuLi5kYXRhIH0gPSBwYXJhbXNcclxuICAgIGNvbnN0IHBsYWluRGF0YSA9IHRoaXMucGFyYW1zVG9QbGFpbih7IGlkOiBjaGVja0lkIH0pXHJcbiAgICBjb25zdCBpZCA9IGF3YWl0IHRoaXMuZ2V0SWQocGxhaW5EYXRhLmlkKVxyXG4gICAgY29uc3QgY2F0ZWdvcnkgPSBhd2FpdCBzdXBlci51cGRhdGUoeyBpZCwgLi4uZGF0YSB9KVxyXG5cclxuICAgIGNhdGVnb3J5LnByb2R1Y3RzID0gcHJvZHVjdHMgJiYgKGF3YWl0IHRoaXMudXBkYXRlUHJvZHVjdHMoK2lkLCB7IHByb2R1Y3RzIH0pKVxyXG4gICAgY2F0ZWdvcnkubWV0YWRhdGEgPSBtZXRhZGF0YSAmJiAoYXdhaXQgdGhpcy51cGRhdGVNZXRhZGF0YSgraWQsIHsgbWV0YWRhdGEgfSkpXHJcblxyXG4gICAgcmV0dXJuIGNhdGVnb3J5XHJcbiAgfVxyXG5cclxuICBhc3luYyBnZXRDYXRlZ29yeUJ5U2x1ZyhzbHVnOiBzdHJpbmcsIHNob3A6IFNob3BzKTogUHJvbWlzZTxDYXRlZ29yeT4ge1xyXG4gICAgaWYgKCFzbHVnKSByZXR1cm5cclxuXHJcbiAgICBjb25zdCB7IGRhdGEsIGNvdW50IH0gPSBhd2FpdCB0aGlzLmZpbmQoeyBmaWx0ZXJzOiB7IHNsdWcsIHNob3AsIHB1Ymxpc2hlZDogdHJ1ZSB9IH0pXHJcblxyXG4gICAgaWYgKGNvdW50ID4gMSkgdGhyb3cgbmV3IER1cGxpY2F0ZWRSZXN1bHRzRXJyb3IoJ1F1ZXJ5IHJldHVybmVkIGR1cGxpY2F0ZWQgdmFsdWVzJylcclxuICAgIGlmICghY291bnQpIHRocm93IG5ldyBOb3RGb3VuZEVycm9yKGBDYXRlZ29yeSB3aXRoIHNsdWcgJHtzbHVnfSBub3QgZm91bmRgKVxyXG5cclxuICAgIHJldHVybiBkYXRhLnNoaWZ0KClcclxuICB9XHJcblxyXG4gIGFzeW5jIGdldENhdGVnb3JpZXNGb3JIb21lKGNhdGVnb3J5SWRzOiBzdHJpbmdbXSwgbGltaXQgPSA0KTogUHJvbWlzZTx7IGNhdGVnb3J5OiBDYXRlZ29yeTsgcHJvZHVjdHM6IFByb2R1Y3RbXSB9W10+IHtcclxuICAgIGNvbnN0IHsgZGF0YTogY2F0ZWdvcmllcywgY291bnQgfSA9IGF3YWl0IHRoaXMuZmluZCh7XHJcbiAgICAgIGZpbHRlcnM6IHsgZmlyZXN0b3JlSWQ6IHsgb3BlcmF0b3I6IFdoZXJlLklOLCB2YWx1ZTogY2F0ZWdvcnlJZHMuZmlsdGVyKEJvb2xlYW4pIH0sIHB1Ymxpc2hlZDogdHJ1ZSB9LFxyXG4gICAgfSlcclxuXHJcbiAgICBpZiAoIWNvdW50KSB0aHJvdyBuZXcgTm90Rm91bmRFcnJvcignQ2F0ZWdvcmllcyBub3QgZm91bmQnKVxyXG5cclxuICAgIGNvbnN0IGhvbWVTZWN0aW9ucyA9IGF3YWl0IFByb21pc2UuYWxsKFxyXG4gICAgICBjYXRlZ29yaWVzLm1hcChhc3luYyAoY2F0ZWdvcnkpID0+ICh7XHJcbiAgICAgICAgY2F0ZWdvcnksXHJcbiAgICAgICAgcHJvZHVjdHM6IGF3YWl0IHRoaXMubW91bnRDYXRlZ29yeShjYXRlZ29yeSwgeyBsaW1pdCwgaGFzU3RvY2s6IHRydWUgfSksXHJcbiAgICAgIH0pKSxcclxuICAgIClcclxuXHJcbiAgICByZXR1cm4gaG9tZVNlY3Rpb25zXHJcbiAgfVxyXG5cclxuICBhc3luYyBtb3VudENhdGVnb3J5KGNhdGVnb3J5OiBDYXRlZ29yeSwgb3B0aW9ucz86IHsgbGltaXQ/OiBudW1iZXI7IGhhc1N0b2NrPzogYm9vbGVhbiB9KTogUHJvbWlzZTxQcm9kdWN0W10+IHtcclxuICAgIGlmICghY2F0ZWdvcnkucHJvZHVjdHMpIHRocm93IG5ldyBSZXF1aXJlZEFyZ3VtZW50RXJyb3IoWydDYXRlZ29yeSBwcm9kdWN0cyBpcyBlbXB0eSddKVxyXG5cclxuICAgIGNvbnN0IHByb2R1Y3RzID0gW11cclxuICAgIGNvbnN0IHsgZGF0YTogcHJvZHVjdHNEYXRhIH0gPSBhd2FpdCB0aGlzLnByb2R1Y3RSZXBvc2l0b3J5LmZpbmQoe1xyXG4gICAgICBmaWx0ZXJzOiB7XHJcbiAgICAgICAgaWQ6IHsgb3BlcmF0b3I6IFdoZXJlLklOLCB2YWx1ZTogY2F0ZWdvcnkucHJvZHVjdHMgfSxcclxuICAgICAgICBwdWJsaXNoZWQ6IHRydWUsXHJcbiAgICAgICAgLi4uKG9wdGlvbnM/Lmhhc1N0b2NrID8geyBzdG9jazogeyBxdWFudGl0eTogeyBvcGVyYXRvcjogV2hlcmUuR1QsIHZhbHVlOiAwIH0gfSB9IDoge30pLFxyXG4gICAgICB9LFxyXG4gICAgICBmaWVsZHM6IFtcclxuICAgICAgICAnaWQnLFxyXG4gICAgICAgICduYW1lJyxcclxuICAgICAgICAnc2x1ZycsXHJcbiAgICAgICAgJ2ltYWdlcycsXHJcbiAgICAgICAgJ21pbmlhdHVyZXMnLFxyXG4gICAgICAgICdwcmljZScsXHJcbiAgICAgICAgJ2Z1bGxQcmljZScsXHJcbiAgICAgICAgJ3N1YnNjcmliZXJEaXNjb3VudFBlcmNlbnRhZ2UnLFxyXG4gICAgICAgICdzdWJzY3JpYmVyUHJpY2UnLFxyXG4gICAgICAgICdzdG9jaycsXHJcbiAgICAgICAgJ3B1Ymxpc2hlZCcsXHJcbiAgICAgICAgJ0NFU1QnLFxyXG4gICAgICAgICdFQU4nLFxyXG4gICAgICAgICdOQ00nLFxyXG4gICAgICAgICdicmFuZCcsXHJcbiAgICAgICAgJ2Nvc3RQcmljZScsXHJcbiAgICAgICAgJ2hhc1ZhcmlhbnRzJyxcclxuICAgICAgICAnaXNLaXQnLFxyXG4gICAgICAgICdza3UnLFxyXG4gICAgICAgICdyYXRlJyxcclxuICAgICAgICAndGFncycsXHJcbiAgICAgICAgJ3R5cGUnLFxyXG4gICAgICAgICdzaG9wcGluZ0NvdW50JyxcclxuICAgICAgXSxcclxuICAgICAgLi4uKG9wdGlvbnM/LmxpbWl0ID8geyBsaW1pdHM6IHsgbGltaXQ6IG9wdGlvbnM/LmxpbWl0IH0gfSA6IHt9KSxcclxuICAgIH0pXHJcblxyXG4gICAgcHJvZHVjdHMucHVzaCguLi5wcm9kdWN0c0RhdGEpXHJcblxyXG4gICAgcmV0dXJuIHByb2R1Y3RzXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIGdldElkKGlkOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xyXG4gICAgaWYgKCFOdW1iZXIuaXNOYU4oK2lkKSkgcmV0dXJuIGlkXHJcblxyXG4gICAgY29uc3QgeyBkYXRhIH0gPSBhd2FpdCB0aGlzLmZpbmQoeyBmaWx0ZXJzOiB7IGZpcmVzdG9yZUlkOiBpZCB9IH0pXHJcblxyXG4gICAgaWYgKGRhdGE/LlswXT8uaWQpIHJldHVybiBkYXRhPy5bMF0/LmlkXHJcblxyXG4gICAgdGhyb3cgbmV3IE5vdEZvdW5kRXJyb3IoYENhdGVnb3J5IHdpdGggaWQgJHtpZH0gbm90IGZvdW5kYClcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgdXBkYXRlUHJvZHVjdHMoXHJcbiAgICBjYXRlZ29yeUlkOiBudW1iZXIsXHJcbiAgICB7IHByb2R1Y3RzIH06IFBpY2s8VXBkYXRlUmVwb3NpdG9yeVBhcmFtczxDYXRlZ29yeUhhc3VyYUdyYXBoUUw+LCAncHJvZHVjdHMnPixcclxuICApOiBQcm9taXNlPENhdGVnb3J5SGFzdXJhR3JhcGhRTFsncHJvZHVjdHMnXT4ge1xyXG4gICAgaWYgKCdhY3Rpb24nIGluIHByb2R1Y3RzICYmIHByb2R1Y3RzLmFjdGlvbiA9PT0gJ3JlbW92ZScpIHtcclxuICAgICAgYXdhaXQgdGhpcy5tdXRhdGlvbignZGVsZXRlX2NhdGVnb3J5X3Byb2R1Y3QnLCBbJ2FmZmVjdGVkX3Jvd3MnXSwge1xyXG4gICAgICAgIHdoZXJlOiB7XHJcbiAgICAgICAgICB0eXBlOiAnY2F0ZWdvcnlfcHJvZHVjdF9ib29sX2V4cCcsXHJcbiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcclxuICAgICAgICAgIHZhbHVlOiB7IGNhdGVnb3J5X2lkOiB7IF9lcTogY2F0ZWdvcnlJZCB9IH0sXHJcbiAgICAgICAgfSxcclxuICAgICAgfSlcclxuXHJcbiAgICAgIHJldHVybiBbXVxyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHBsYWluRGF0YSA9IHRoaXMucGFyYW1zVG9QbGFpbih7IHByb2R1Y3RzIH0pXHJcblxyXG4gICAgaWYgKCFwbGFpbkRhdGEucHJvZHVjdHMgfHwgcGxhaW5EYXRhLnByb2R1Y3RzLmxlbmd0aCA8PSAwKSByZXR1cm4gW11cclxuXHJcbiAgICBhd2FpdCB0aGlzLm11dGF0aW9uKCdkZWxldGVfY2F0ZWdvcnlfcHJvZHVjdCcsIFsnYWZmZWN0ZWRfcm93cyddLCB7XHJcbiAgICAgIHdoZXJlOiB7XHJcbiAgICAgICAgdHlwZTogJ2NhdGVnb3J5X3Byb2R1Y3RfYm9vbF9leHAnLFxyXG4gICAgICAgIHJlcXVpcmVkOiB0cnVlLFxyXG4gICAgICAgIHZhbHVlOiB7IGNhdGVnb3J5X2lkOiB7IF9lcTogY2F0ZWdvcnlJZCB9IH0sXHJcbiAgICAgIH0sXHJcbiAgICB9KVxyXG5cclxuICAgIGF3YWl0IHRoaXMubXV0YXRpb24oJ2luc2VydF9jYXRlZ29yeV9wcm9kdWN0JywgWydhZmZlY3RlZF9yb3dzJ10sIHtcclxuICAgICAgb2JqZWN0czoge1xyXG4gICAgICAgIHR5cGU6ICdbY2F0ZWdvcnlfcHJvZHVjdF9pbnNlcnRfaW5wdXQhXScsXHJcbiAgICAgICAgcmVxdWlyZWQ6IHRydWUsXHJcbiAgICAgICAgdmFsdWU6IHBsYWluRGF0YS5wcm9kdWN0cy5tYXAoKHByb2R1Y3RJZCkgPT4gKHsgY2F0ZWdvcnlfaWQ6IGNhdGVnb3J5SWQsIHByb2R1Y3RfaWQ6IHByb2R1Y3RJZCB9KSksXHJcbiAgICAgIH0sXHJcbiAgICB9KVxyXG5cclxuICAgIHJldHVybiBwbGFpbkRhdGEucHJvZHVjdHNcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgdXBkYXRlTWV0YWRhdGEoXHJcbiAgICBjYXRlZ29yeUlkOiBudW1iZXIsXHJcbiAgICB7IG1ldGFkYXRhIH06IFBpY2s8VXBkYXRlUmVwb3NpdG9yeVBhcmFtczxDYXRlZ29yeUhhc3VyYUdyYXBoUUw+LCAnbWV0YWRhdGEnPixcclxuICApOiBQcm9taXNlPENhdGVnb3J5TWV0YWRhdGE+IHtcclxuICAgIGNvbnN0IHBsYWluRGF0YSA9IHRoaXMucGFyYW1zVG9QbGFpbih7IG1ldGFkYXRhIH0pXHJcblxyXG4gICAgaWYgKCFwbGFpbkRhdGEubWV0YWRhdGEpIHJldHVyblxyXG5cclxuICAgIGF3YWl0IHRoaXMubXV0YXRpb24oJ3VwZGF0ZV9jYXRlZ29yeV9tZXRhZGF0YV9ieV9waycsIFsnY2F0ZWdvcnlfaWQnXSwge1xyXG4gICAgICBwa19jb2x1bW5zOiB7XHJcbiAgICAgICAgdmFsdWU6IHsgY2F0ZWdvcnlfaWQ6IGNhdGVnb3J5SWQgfSxcclxuICAgICAgICB0eXBlOiAnY2F0ZWdvcnlfbWV0YWRhdGFfcGtfY29sdW1uc19pbnB1dCcsXHJcbiAgICAgICAgcmVxdWlyZWQ6IHRydWUsXHJcbiAgICAgIH0sXHJcbiAgICAgIF9zZXQ6IHtcclxuICAgICAgICB2YWx1ZTogb21pdChtZXRhZGF0YSwgWydjYXRlZ29yeV9pZCddKSxcclxuICAgICAgICB0eXBlOiAnY2F0ZWdvcnlfbWV0YWRhdGFfc2V0X2lucHV0JyxcclxuICAgICAgICByZXF1aXJlZDogdHJ1ZSxcclxuICAgICAgfSxcclxuICAgIH0pXHJcblxyXG4gICAgcmV0dXJuIHBsYWluRGF0YS5tZXRhZGF0YVxyXG4gIH1cclxufVxyXG4iXX0=
241
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2F0ZWdvcnktaGFzdXJhLWdyYXBocWwucmVwb3NpdG9yeS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL2Nvbm5lY3Qvc3JjL2luZnJhL2hhc3VyYS1ncmFwaHFsL3JlcG9zaXRvcmllcy9jYXRhbG9nL2NhdGVnb3J5LWhhc3VyYS1ncmFwaHFsLnJlcG9zaXRvcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBLE9BQU8sRUFDTCxRQUFRLEVBUVIsS0FBSyxHQUNOLE1BQU0sb0JBQW9CLENBQUE7QUFDM0IsT0FBTyxFQUFFLHNCQUFzQixFQUFFLGFBQWEsRUFBRSxNQUFNLG9CQUFvQixDQUFBO0FBQzFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFDOUMsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sYUFBYSxDQUFBO0FBQ3JELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQU12RSxNQUFNLE9BQU8sK0JBQ1gsU0FBUSxxQkFBcUIsQ0FBQyxpQkFBaUIsQ0FBd0IsSUFBSSxDQUFDLENBQUM7SUFHN0UsWUFDRSxRQUFnQixFQUNoQixXQUFxQyxFQUNwQixpQkFBaUQ7UUFFbEUsS0FBSyxDQUFDO1lBQ0osU0FBUyxFQUFFLFVBQVU7WUFDckIsS0FBSyxFQUFFLFFBQVE7WUFDZixRQUFRO1lBQ1IsV0FBVztZQUNYLE1BQU0sRUFBRTtnQkFDTixFQUFFLEVBQUUsRUFBRSxFQUFFLFVBQVUsRUFBRSxJQUFJLEVBQUUsRUFBRSxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsRUFBRSxFQUFFO2dCQUN0RixFQUFFLFdBQVcsRUFBRSxFQUFFLFVBQVUsRUFBRSxjQUFjLEVB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QUFTLEVBQUUsQ0FBQyxDQUFDO2lCQUNuRzthQUNGLENBQUMsQ0FBQTtZQUVGLE9BQU8sU0FBUyxDQUFDLFFBQVEsQ0FBQTtRQUMzQixDQUFDO0tBQUE7SUFFYSxjQUFjLENBQzFCLFVBQWtCLEVBQ2xCLEVBQUUsUUFBUSxFQUFtRTs7WUFFN0UsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUE7WUFFbEQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxRQUFRO2dCQUFFLE9BQU07WUFFL0IsTUFBTSxJQUFJLENBQUMsUUFBUSxDQUFDLGdDQUFnQyxFQUFFLENBQUMsYUFBYSxDQUFDLEVBQUU7Z0JBQ3JFLFVBQVUsRUFBRTtvQkFDVixLQUFLLEVBQUUsRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFO29CQUNsQyxJQUFJLEVBQUUsb0NBQW9DO29CQUMxQyxRQUFRLEVBQUUsSUFBSTtpQkFDZjtnQkFDRCxJQUFJLEVBQUU7b0JBQ0osS0FBSyxFQUFFLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxhQUFhLENBQUMsQ0FBQztvQkFDdEMsSUFBSSxFQUFFLDZCQUE2QjtvQkFDbkMsUUFBUSxFQUFFLElBQUk7aUJBQ2Y7YUFDRixDQUFDLENBQUE7WUFFRixPQUFPLFNBQVMsQ0FBQyxRQUFRLENBQUE7UUFDM0IsQ0FBQztLQUFBO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENhdGVnb3J5LFxyXG4gIENhdGVnb3J5TWV0YWRhdGEsXHJcbiAgQ2F0ZWdvcnlSZXBvc2l0b3J5LFxyXG4gIENyZWF0ZVJlcG9zaXRvcnlQYXJhbXMsXHJcbiAgR2V0UmVwb3NpdG9yeVBhcmFtcyxcclxuICBQcm9kdWN0LFxyXG4gIFNob3BzLFxyXG4gIFVwZGF0ZVJlcG9zaXRvcnlQYXJhbXMsXHJcbiAgV2hlcmUsXHJcbn0gZnJvbSAnLi4vLi4vLi4vLi4vZG9tYWluJ1xyXG5pbXBvcnQgeyBEdXBsaWNhdGVkUmVzdWx0c0Vycm9yLCBOb3RGb3VuZEVycm9yIH0gZnJvbSAnLi4vLi4vLi4vLi4vZXJyb3JzJ1xyXG5pbXBvcnQgeyBCYXNlLCBvbWl0IH0gZnJvbSAnLi4vLi4vLi4vLi4vdXRpbHMnXHJcbmltcG9ydCB7IEhhc3VyYUdyYXBoUUxDb2x1bW5UeXBlIH0gZnJvbSAnLi4vLi4vZW51bXMnXHJcbmltcG9ydCB7IHdpdGhDcnVkSGFzdXJhR3JhcGhRTCwgd2l0aEhhc3VyYUdyYXBoUUwgfSBmcm9tICcuLi8uLi9taXhpbnMnXHJcbmltcG9ydCB7IENhdGVnb3J5SGFzdXJhR3JhcGhRTCB9IGZyb20gJy4uLy4uL21vZGVscydcclxuaW1wb3J0IHsgSGFzdXJhR3JhcGhRTEF1dGhPcHRpb25zIH0gZnJvbSAnLi4vLi4vdHlwZXMnXHJcblxyXG5pbXBvcnQgeyBQcm9kdWN0SGFzdXJhR3JhcGhRTFJlcG9zaXRvcnkgfSBmcm9tICcuL3Byb2R1Y3QtaGFzdXJhLWdyYXBocWwucmVwb3NpdG9yeSdcclxuXHJcbmV4cG9ydCBjbGFzcyBDYXRlZ29yeUhhc3VyYUdyYXBoUUxSZXBvc2l0b3J5XHJcbiAgZXh0ZW5kcyB3aXRoQ3J1ZEhhc3VyYUdyYXBoUUwod2l0aEhhc3VyYUdyYXBoUUw8Q2F0ZWdvcnlIYXN1cmFHcmFwaFFMPihCYXNlKSlcclxuICBpbXBsZW1lbnRzIENhdGVnb3J5UmVwb3NpdG9yeVxyXG57XHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBlbmRwb2ludDogc3RyaW5nLFxyXG4gICAgYXV0aE9wdGlvbnM6IEhhc3VyYUdyYXBoUUxBdXRoT3B0aW9ucyxcclxuICAgIHByaXZhdGUgcmVhZG9ubHkgcHJvZHVjdFJlcG9zaXRvcnk6IFByb2R1Y3RIYXN1cmFHcmFwaFFMUmVwb3NpdG9yeSxcclxuICApIHtcclxuICAgIHN1cGVyKHtcclxuICAgICAgdGFibGVOYW1lOiAnY2F0ZWdvcnknLFxyXG4gICAgICBtb2RlbDogQ2F0ZWdvcnksXHJcbiAgICAgIGVuZHBvaW50LFxyXG4gICAgICBhdXRoT3B0aW9ucyxcclxuICAgICAgZmllbGRzOiBbXHJcbiAgICAgICAgeyBpZDogeyBjb2x1bW5OYW1lOiAnaWQnLCB0bzogKHZhbHVlKSA9PiArdmFsdWUsIGZyb206ICh2YWx1ZSkgPT4gdmFsdWUudG9TdHJpbmcoKSB9IH0sXHJcbiAgICAgICAgeyBmaXJlc3RvcmVJZDogeyBjb2x1bW5OYW1lOiAnZmlyZXN0b3JlX2lkJyB9IH0sXHJcbiAgICAgICAgJ25hbWUnLFxyXG4gICAgICAgICdkZXNjcmlwdGlvbicsXHJcbiAgICAgICAgJ2ltYWdlJyxcclxuICAgICAgICAncHVibGlzaGVkJyxcclxuICAgICAgICAnc2hvcCcsXHJcbiAgICAgICAgJ3NsdWcnLFxyXG4gICAgICAgIHsgYnJhbmRDYXRlZ29yeTogeyBjb2x1bW5OYW1lOiAnYnJhbmRfY2F0ZWdvcnknIH0gfSxcclxuICAgICAgICB7IGJyYW5kQ2F0ZWdvcnlCYW5uZXI6IHsgY29sdW1uTmFtZTogJ2JyYW5kX2Jhbm5lcicgfSB9LFxyXG4gICAgICAgIHsgYnJhbmRDYXRlZ29yeUJhbm5lck1vYmlsZTogeyBjb2x1bW5OYW1lOiAnYnJhbmRfYmFubmVyX21vYmlsZScgfSB9LFxyXG4gICAgICAgIHsgYnJhbmRMb2dvOiB7IGNvbHVtbk5hbWU6ICdicmFuZF9sb2dvJyB9IH0sXHJcbiAgICAgICAgeyBicmFuZENvbmRpdGlvbjogeyBjb2x1bW5OYW1lOiAnYnJhbmRfY29uZGl0aW9uJyB9IH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgY29uZGl0aW9uczoge1xyXG4gICAgICAgICAgICBjb2x1bW5OYW1lOiAndGFnX2NvbmRpdGlvbicsXHJcbiAgICAgICAgICAgIHR5cGU6IEhhc3VyYUdyYXBoUUxDb2x1bW5UeXBlLkpzb25iLFxyXG4gICAgICAgICAgICBmcm9tOiAodGFnczogdW5rbm93biwgcm93KSA9PiAoeyBicmFuZDogcm93LmJyYW5kX2NvbmRpdGlvbiwgdGFnczogQXJyYXkuaXNBcnJheSh0YWdzKSA/IHRhZ3MgOiBbXSB9KSxcclxuICAgICAgICAgICAgYmluZFBlcnNpc3REYXRhOiAodmFsdWUpID0+IHtcclxuICAgICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgYnJhbmRfY29uZGl0aW9uOiB2YWx1ZS5icmFuZCxcclxuICAgICAgICAgICAgICAgIHRhZ19jb25kaXRpb246IHZhbHVlPy50YWdzIHx8IFtdLFxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgYmluZEZpbmRGaWx0ZXI6IChzZW50ZW5jZTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIC4uLihzZW50ZW5jZS5icmFuZCA/IHsgYnJhbmRfY29uZGl0aW9uOiBzZW50ZW5jZS5icmFuZCB9IDoge30pLFxyXG4gICAgICAgICAgICAgICAgLi4uKHNlbnRlbmNlLnRhZ3MgPyB7IHRhZ19jb25kaXRpb246IHNlbnRlbmNlLnRhZ3MgfSA6IHt9KSxcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgJ2ZpbHRlcnMnLFxyXG4gICAgICAgIHsgY3JlYXRlZEF0OiB7IGNvbHVtbk5hbWU6ICdjcmVhdGVkX2F0JyB9IH0sXHJcbiAgICAgICAgeyB1cGRhdGVkQXQ6IHsgY29sdW1uTmFtZTogJ3VwZGF0ZWRfYXQnIH0gfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBwcm9kdWN0czoge1xyXG4gICAgICAgICAgICBjb2x1bW5OYW1lOiAncHJvZHVjdHMnLFxyXG4gICAgICAgICAgICBmaWVsZHM6IFsncHJvZHVjdF9pZCddLFxyXG4gICAgICAgICAgICBmcm9tOiAodmFsdWU6IHsgcHJvZHVjdF9pZDogbnVtYmVyIH1bXSkgPT4gdmFsdWUubWFwKChwcm9kdWN0KSA9PiBwcm9kdWN0LnByb2R1Y3RfaWQudG9TdHJpbmcoKSksXHJcbiAgICAgICAgICAgIHRvOiAocHJvZHVjdElkcykgPT5cclxuICAgICAgICAgICAgICBwcm9kdWN0SWRzLm1hcCgocHJvZHVjdElkKSA9PiAoe1xyXG4gICAgICAgICAgICAgICAgcHJvZHVjdF9pZDogK3Byb2R1Y3RJZCxcclxuICAgICAgICAgICAgICB9KSksXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgbWV0YWRhdGE6IHtcclxuICAgICAgICAgICAgY29sdW1uTmFtZTogJ21ldGFkYXRhJyxcclxuICAgICAgICAgICAgZmllbGRzOiBbJ3RpdGxlJywgJ2Rlc2NyaXB0aW9uJ10sXHJcbiAgICAgICAgICAgIGJpbmRQZXJzaXN0RGF0YTogKHZhbHVlKSA9PiAoe1xyXG4gICAgICAgICAgICAgIG1ldGFkYXRhOiB7IGRhdGE6IHZhbHVlIH0sXHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9LFxyXG4gICAgICBdLFxyXG4gICAgfSlcclxuICB9XHJcblxyXG4gIGFzeW5jIGNyZWF0ZShwYXJhbXM6IENyZWF0ZVJlcG9zaXRvcnlQYXJhbXM8Q2F0ZWdvcnlIYXN1cmFHcmFwaFFMPik6IFByb21pc2U8Q2F0ZWdvcnlIYXN1cmFHcmFwaFFMPiB7XHJcbiAgICBjb25zdCB7IG1ldGFkYXRhLCAuLi5kYXRhIH0gPSBwYXJhbXNcclxuXHJcbiAgICByZXR1cm4gc3VwZXIuY3JlYXRlKHsgLi4uZGF0YSwgbWV0YWRhdGE6IG1ldGFkYXRhIHx8IHsgZGVzY3JpcHRpb246IG51bGwsIHRpdGxlOiBudWxsIH0gfSlcclxuICB9XHJcblxyXG4gIGFzeW5jIGdldChpZGVudGlmaWVyczogR2V0UmVwb3NpdG9yeVBhcmFtczxDYXRlZ29yeUhhc3VyYUdyYXBoUUw+KTogUHJvbWlzZTxDYXRlZ29yeUhhc3VyYUdyYXBoUUw+IHtcclxuICAgIHJldHVybiBOdW1iZXIuaXNOYU4oK2lkZW50aWZpZXJzLmlkKVxyXG4gICAgICA/IChhd2FpdCB0aGlzLmZpbmQoeyBmaWx0ZXJzOiB7IGZpcmVzdG9yZUlkOiBpZGVudGlmaWVycy5pZCB9LCBvcHRpb25zOiB7IGVuYWJsZUNvdW50OiBmYWxzZSB9IH0pKS5kYXRhPy5bMF1cclxuICAgICAgOiBzdXBlci5nZXQoaWRlbnRpZmllcnMpXHJcbiAgfVxyXG5cclxuICBhc3luYyB1cGRhdGUocGFyYW1zOiBVcGRhdGVSZXBvc2l0b3J5UGFyYW1zPENhdGVnb3J5SGFzdXJhR3JhcGhRTD4pOiBQcm9taXNlPENhdGVnb3J5SGFzdXJhR3JhcGhRTD4ge1xyXG4gICAgY29uc3QgeyBwcm9kdWN0cywgaWQ6IGNoZWNrSWQsIG1ldGFkYXRhLCAuLi5kYXRhIH0gPSBwYXJhbXNcclxuICAgIGNvbnN0IHBsYWluRGF0YSA9IHRoaXMucGFyYW1zVG9QbGFpbih7IGlkOiBjaGVja0lkIH0pXHJcbiAgICBjb25zdCBpZCA9IGF3YWl0IHRoaXMuZ2V0SWQocGxhaW5EYXRhLmlkKVxyXG4gICAgY29uc3QgY2F0ZWdvcnkgPSBhd2FpdCBzdXBlci51cGRhdGUoeyBpZCwgLi4uZGF0YSB9KVxyXG5cclxuICAgIGNhdGVnb3J5LnByb2R1Y3RzID0gcHJvZHVjdHMgJiYgKGF3YWl0IHRoaXMudXBkYXRlUHJvZHVjdHMoK2lkLCB7IHByb2R1Y3RzIH0pKVxyXG4gICAgY2F0ZWdvcnkubWV0YWRhdGEgPSBtZXRhZGF0YSAmJiAoYXdhaXQgdGhpcy51cGRhdGVNZXRhZGF0YSgraWQsIHsgbWV0YWRhdGEgfSkpXHJcblxyXG4gICAgcmV0dXJuIGNhdGVnb3J5XHJcbiAgfVxyXG5cclxuICBhc3luYyBnZXRDYXRlZ29yeUJ5U2x1ZyhzbHVnOiBzdHJpbmcsIHNob3A6IFNob3BzKTogUHJvbWlzZTxDYXRlZ29yeT4ge1xyXG4gICAgaWYgKCFzbHVnKSByZXR1cm5cclxuXHJcbiAgICBjb25zdCB7IGRhdGEgfSA9IGF3YWl0IHRoaXMuZmluZCh7IGZpbHRlcnM6IHsgc2x1Zywgc2hvcCwgcHVibGlzaGVkOiB0cnVlIH0sIG9wdGlvbnM6IHsgZW5hYmxlQ291bnQ6IGZhbHNlIH0gfSlcclxuXHJcbiAgICBpZiAoIWRhdGEubGVuZ3RoKSB0aHJvdyBuZXcgTm90Rm91bmRFcnJvcihgQ2F0ZWdvcnkgd2l0aCBzbHVnICR7c2x1Z30gbm90IGZvdW5kYClcclxuICAgIGlmIChkYXRhLmxlbmd0aCA+IDEpIHRocm93IG5ldyBEdXBsaWNhdGVkUmVzdWx0c0Vycm9yKCdRdWVyeSByZXR1cm5lZCBkdXBsaWNhdGVkIHZhbHVlcycpXHJcblxyXG4gICAgcmV0dXJuIGRhdGEuc2hpZnQoKVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgZ2V0Q2F0ZWdvcmllc0ZvckhvbWUoY2F0ZWdvcnlJZHM6IHN0cmluZ1tdLCBsaW1pdCA9IDQpOiBQcm9taXNlPHsgY2F0ZWdvcnk6IENhdGVnb3J5OyBwcm9kdWN0czogUHJvZHVjdFtdIH1bXT4ge1xyXG4gICAgaWYgKCFjYXRlZ29yeUlkcz8ubGVuZ3RoKSByZXR1cm4gW11cclxuXHJcbiAgICBjb25zdCBjYXRlZ29yaWVzRmlyZXN0b3JlID0gY2F0ZWdvcnlJZHMuZmlsdGVyKChjYXRlZ29yeUlkKSA9PiBOdW1iZXIuaXNOYU4oK2NhdGVnb3J5SWQpKVxyXG4gICAgY29uc3QgY2F0ZWdvcmllc0hhc3VyYSA9IGNhdGVnb3J5SWRzLmZpbHRlcigoY2F0ZWdvcnlJZCkgPT4gK2NhdGVnb3J5SWQgPiAwKVxyXG4gICAgY29uc3QgY2F0ZWdvcmllcyA9IFtdXHJcblxyXG4gICAgaWYgKGNhdGVnb3JpZXNGaXJlc3RvcmUubGVuZ3RoKVxyXG4gICAgICBjYXRlZ29yaWVzLnB1c2goXHJcbiAgICAgICAgLi4uKGF3YWl0IHRoaXMuZmluZCh7XHJcbiAgICAgICAgICBmaWx0ZXJzOiB7IGZpcmVzdG9yZUlkOiB7IG9wZXJhdG9yOiBXaGVyZS5JTiwgdmFsdWU6IGNhdGVnb3JpZXNGaXJlc3RvcmUuZmlsdGVyKEJvb2xlYW4pIH0sIHB1Ymxpc2hlZDogdHJ1ZSB9LFxyXG4gICAgICAgIH0pLnRoZW4oKHsgZGF0YSB9KSA9PiBkYXRhKSksXHJcbiAgICAgIClcclxuICAgIGlmIChjYXRlZ29yaWVzSGFzdXJhLmxlbmd0aClcclxuICAgICAgY2F0ZWdvcmllcy5wdXNoKFxyXG4gICAgICAgIC4uLihhd2FpdCB0aGlzLmZpbmQoe1xyXG4gICAgICAgICAgZmlsdGVyczogeyBpZDogeyBvcGVyYXRvcjogV2hlcmUuSU4sIHZhbHVlOiBjYXRlZ29yaWVzSGFzdXJhLmZpbHRlcihCb29sZWFuKSB9LCBwdWJsaXNoZWQ6IHRydWUgfSxcclxuICAgICAgICB9KS50aGVuKCh7IGRhdGEgfSkgPT4gZGF0YSkpLFxyXG4gICAgICApXHJcblxyXG4gICAgaWYgKCFjYXRlZ29yaWVzLmxlbmd0aCkgcmV0dXJuIFtdXHJcblxyXG4gICAgY29uc3QgaG9tZVNlY3Rpb25zID0gYXdhaXQgUHJvbWlzZS5hbGwoXHJcbiAgICAgIGNhdGVnb3JpZXMubWFwKGFzeW5jIChjYXRlZ29yeSkgPT4gKHtcclxuICAgICAgICBjYXRlZ29yeSxcclxuICAgICAgICBwcm9kdWN0czogYXdhaXQgdGhpcy5tb3VudENhdGVnb3J5KGNhdGVnb3J5LCB7IGxpbWl0LCBoYXNTdG9jazogdHJ1ZSB9KSxcclxuICAgICAgfSkpLFxyXG4gICAgKVxyXG5cclxuICAgIHJldHVybiBob21lU2VjdGlvbnNcclxuICB9XHJcblxyXG4gIGFzeW5jIG1vdW50Q2F0ZWdvcnkoY2F0ZWdvcnk6IENhdGVnb3J5LCBvcHRpb25zPzogeyBsaW1pdD86IG51bWJlcjsgaGFzU3RvY2s/OiBib29sZWFuIH0pOiBQcm9taXNlPFByb2R1Y3RbXT4ge1xyXG4gICAgaWYgKCFjYXRlZ29yeT8ucHJvZHVjdHM/Lmxlbmd0aCkgcmV0dXJuIFtdXHJcblxyXG4gICAgY29uc3QgcHJvZHVjdHMgPSBbXVxyXG4gICAgY29uc3QgeyBkYXRhOiBwcm9kdWN0c0RhdGEgfSA9IGF3YWl0IHRoaXMucHJvZHVjdFJlcG9zaXRvcnkuZmluZCh7XHJcbiAgICAgIGZpbHRlcnM6IHtcclxuICAgICAgICBpZDogeyBvcGVyYXRvcjogV2hlcmUuSU4sIHZhbHVlOiBjYXRlZ29yeS5wcm9kdWN0cyB9LFxyXG4gICAgICAgIHB1Ymxpc2hlZDogdHJ1ZSxcclxuICAgICAgICAuLi4ob3B0aW9ucz8uaGFzU3RvY2sgPyB7IHN0b2NrOiB7IHF1YW50aXR5OiB7IG9wZXJhdG9yOiBXaGVyZS5HVCwgdmFsdWU6IDAgfSB9IH0gOiB7fSksXHJcbiAgICAgIH0sXHJcbiAgICAgIGZpZWxkczogW1xyXG4gICAgICAgICdpZCcsXHJcbiAgICAgICAgJ25hbWUnLFxyXG4gICAgICAgICdzbHVnJyxcclxuICAgICAgICAnaW1hZ2VzJyxcclxuICAgICAgICAnbWluaWF0dXJlcycsXHJcbiAgICAgICAgJ3ByaWNlJyxcclxuICAgICAgICAnZnVsbFByaWNlJyxcclxuICAgICAgICAnc3Vic2NyaWJlckRpc2NvdW50UGVyY2VudGFnZScsXHJcbiAgICAgICAgJ3N1YnNjcmliZXJQcmljZScsXHJcbiAgICAgICAgJ3N0b2NrJyxcclxuICAgICAgICAncHVibGlzaGVkJyxcclxuICAgICAgICAnQ0VTVCcsXHJcbiAgICAgICAgJ0VBTicsXHJcbiAgICAgICAgJ05DTScsXHJcbiAgICAgICAgJ2JyYW5kJyxcclxuICAgICAgICAnY29zdFByaWNlJyxcclxuICAgICAgICAnaGFzVmFyaWFudHMnLFxyXG4gICAgICAgICdpc0tpdCcsXHJcbiAgICAgICAgJ3NrdScsXHJcbiAgICAgICAgJ3JhdGUnLFxyXG4gICAgICAgICd0YWdzJyxcclxuICAgICAgICAndHlwZScsXHJcbiAgICAgICAgJ3Nob3BwaW5nQ291bnQnLFxyXG4gICAgICBdLFxyXG4gICAgICAuLi4ob3B0aW9ucz8ubGltaXQgPyB7IGxpbWl0czogeyBsaW1pdDogb3B0aW9ucz8ubGltaXQgfSB9IDoge30pLFxyXG4gICAgICBvcHRpb25zOiB7IGVuYWJsZUNvdW50OiBmYWxzZSB9LFxyXG4gICAgfSlcclxuXHJcbiAgICBwcm9kdWN0cy5wdXNoKC4uLnByb2R1Y3RzRGF0YSlcclxuXHJcbiAgICByZXR1cm4gcHJvZHVjdHNcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgZ2V0SWQoaWQ6IHN0cmluZyk6IFByb21pc2U8c3RyaW5nPiB7XHJcbiAgICBpZiAoIU51bWJlci5pc05hTigraWQpKSByZXR1cm4gaWRcclxuXHJcbiAgICBjb25zdCB7IGRhdGEgfSA9IGF3YWl0IHRoaXMuZmluZCh7IGZpbHRlcnM6IHsgZmlyZXN0b3JlSWQ6IGlkIH0sIG9wdGlvbnM6IHsgZW5hYmxlQ291bnQ6IGZhbHNlIH0gfSlcclxuXHJcbiAgICBpZiAoZGF0YT8uWzBdPy5pZCkgcmV0dXJuIGRhdGE/LlswXT8uaWRcclxuXHJcbiAgICB0aHJvdyBuZXcgTm90Rm91bmRFcnJvcihgQ2F0ZWdvcnkgd2l0aCBpZCAke2lkfSBub3QgZm91bmRgKVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyB1cGRhdGVQcm9kdWN0cyhcclxuICAgIGNhdGVnb3J5SWQ6IG51bWJlcixcclxuICAgIHsgcHJvZHVjdHMgfTogUGljazxVcGRhdGVSZXBvc2l0b3J5UGFyYW1zPENhdGVnb3J5SGFzdXJhR3JhcGhRTD4sICdwcm9kdWN0cyc+LFxyXG4gICk6IFByb21pc2U8Q2F0ZWdvcnlIYXN1cmFHcmFwaFFMWydwcm9kdWN0cyddPiB7XHJcbiAgICBpZiAoJ2FjdGlvbicgaW4gcHJvZHVjdHMgJiYgcHJvZHVjdHMuYWN0aW9uID09PSAncmVtb3ZlJykge1xyXG4gICAgICBhd2FpdCB0aGlzLm11dGF0aW9uKCdkZWxldGVfY2F0ZWdvcnlfcHJvZHVjdCcsIFsnYWZmZWN0ZWRfcm93cyddLCB7XHJcbiAgICAgICAgd2hlcmU6IHtcclxuICAgICAgICAgIHR5cGU6ICdjYXRlZ29yeV9wcm9kdWN0X2Jvb2xfZXhwJyxcclxuICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxyXG4gICAgICAgICAgdmFsdWU6IHsgY2F0ZWdvcnlfaWQ6IHsgX2VxOiBjYXRlZ29yeUlkIH0gfSxcclxuICAgICAgICB9LFxyXG4gICAgICB9KVxyXG5cclxuICAgICAgcmV0dXJuIFtdXHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgcGxhaW5EYXRhID0gdGhpcy5wYXJhbXNUb1BsYWluKHsgcHJvZHVjdHMgfSlcclxuXHJcbiAgICBpZiAoIXBsYWluRGF0YS5wcm9kdWN0cyB8fCBwbGFpbkRhdGEucHJvZHVjdHMubGVuZ3RoIDw9IDApIHJldHVybiBbXVxyXG5cclxuICAgIGF3YWl0IHRoaXMubXV0YXRpb24oJ2RlbGV0ZV9jYXRlZ29yeV9wcm9kdWN0JywgWydhZmZlY3RlZF9yb3dzJ10sIHtcclxuICAgICAgd2hlcmU6IHtcclxuICAgICAgICB0eXBlOiAnY2F0ZWdvcnlfcHJvZHVjdF9ib29sX2V4cCcsXHJcbiAgICAgICAgcmVxdWlyZWQ6IHRydWUsXHJcbiAgICAgICAgdmFsdWU6IHsgY2F0ZWdvcnlfaWQ6IHsgX2VxOiBjYXRlZ29yeUlkIH0gfSxcclxuICAgICAgfSxcclxuICAgIH0pXHJcblxyXG4gICAgYXdhaXQgdGhpcy5tdXRhdGlvbignaW5zZXJ0X2NhdGVnb3J5X3Byb2R1Y3QnLCBbJ2FmZmVjdGVkX3Jvd3MnXSwge1xyXG4gICAgICBvYmplY3RzOiB7XHJcbiAgICAgICAgdHlwZTogJ1tjYXRlZ29yeV9wcm9kdWN0X2luc2VydF9pbnB1dCFdJyxcclxuICAgICAgICByZXF1aXJlZDogdHJ1ZSxcclxuICAgICAgICB2YWx1ZTogcGxhaW5EYXRhLnByb2R1Y3RzLm1hcCgocHJvZHVjdElkKSA9PiAoeyBjYXRlZ29yeV9pZDogY2F0ZWdvcnlJZCwgcHJvZHVjdF9pZDogcHJvZHVjdElkIH0pKSxcclxuICAgICAgfSxcclxuICAgIH0pXHJcblxyXG4gICAgcmV0dXJuIHBsYWluRGF0YS5wcm9kdWN0c1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyB1cGRhdGVNZXRhZGF0YShcclxuICAgIGNhdGVnb3J5SWQ6IG51bWJlcixcclxuICAgIHsgbWV0YWRhdGEgfTogUGljazxVcGRhdGVSZXBvc2l0b3J5UGFyYW1zPENhdGVnb3J5SGFzdXJhR3JhcGhRTD4sICdtZXRhZGF0YSc+LFxyXG4gICk6IFByb21pc2U8Q2F0ZWdvcnlNZXRhZGF0YT4ge1xyXG4gICAgY29uc3QgcGxhaW5EYXRhID0gdGhpcy5wYXJhbXNUb1BsYWluKHsgbWV0YWRhdGEgfSlcclxuXHJcbiAgICBpZiAoIXBsYWluRGF0YS5tZXRhZGF0YSkgcmV0dXJuXHJcblxyXG4gICAgYXdhaXQgdGhpcy5tdXRhdGlvbigndXBkYXRlX2NhdGVnb3J5X21ldGFkYXRhX2J5X3BrJywgWydjYXRlZ29yeV9pZCddLCB7XHJcbiAgICAgIHBrX2NvbHVtbnM6IHtcclxuICAgICAgICB2YWx1ZTogeyBjYXRlZ29yeV9pZDogY2F0ZWdvcnlJZCB9LFxyXG4gICAgICAgIHR5cGU6ICdjYXRlZ29yeV9tZXRhZGF0YV9wa19jb2x1bW5zX2lucHV0JyxcclxuICAgICAgICByZXF1aXJlZDogdHJ1ZSxcclxuICAgICAgfSxcclxuICAgICAgX3NldDoge1xyXG4gICAgICAgIHZhbHVlOiBvbWl0KG1ldGFkYXRhLCBbJ2NhdGVnb3J5X2lkJ10pLFxyXG4gICAgICAgIHR5cGU6ICdjYXRlZ29yeV9tZXRhZGF0YV9zZXRfaW5wdXQnLFxyXG4gICAgICAgIHJlcXVpcmVkOiB0cnVlLFxyXG4gICAgICB9LFxyXG4gICAgfSlcclxuXHJcbiAgICByZXR1cm4gcGxhaW5EYXRhLm1ldGFkYXRhXHJcbiAgfVxyXG59XHJcbiJdfQ==
@@ -209,7 +209,7 @@ export class ProductHasuraGraphQLRepository extends withCrudHasuraGraphQL(withHa
209
209
  var _a;
210
210
  return __awaiter(this, void 0, void 0, function* () {
211
211
  const product = Number.isNaN(+identifiers.id)
212
- ? (_a = (yield this.find({ filters: { firestoreId: identifiers.id } })).data) === null || _a === void 0 ? void 0 : _a[0]
212
+ ? (_a = (yield this.find({ filters: { firestoreId: identifiers.id }, options: { enableCount: false } })).data) === null || _a === void 0 ? void 0 : _a[0]
213
213
  : yield _super.get.call(this, identifiers);
214
214
  if (product.productId)
215
215
  throw new NotFoundError('Product not found, it is a variant');
@@ -237,9 +237,12 @@ export class ProductHasuraGraphQLRepository extends withCrudHasuraGraphQL(withHa
237
237
  filters: {
238
238
  slug,
239
239
  },
240
+ fields: this.fields.map((field) => typeof field === 'string' ? field : Object.keys(field).shift()),
241
+ options: {
242
+ enableCount: false,
243
+ },
240
244
  });
241
245
  const product = (_a = result === null || result === void 0 ? void 0 : result.data) === null || _a === void 0 ? void 0 : _a.shift();
242
- product.reviews = yield this.findReviewsByProduct(+product.id);
243
246
  return product;
244
247
  });
245
248
  }
@@ -402,7 +405,7 @@ export class ProductHasuraGraphQLRepository extends withCrudHasuraGraphQL(withHa
402
405
  return __awaiter(this, void 0, void 0, function* () {
403
406
  if (!Number.isNaN(+id))
404
407
  return id;
405
- const { data } = yield this.find({ filters: { firestoreId: id } });
408
+ const { data } = yield this.find({ filters: { firestoreId: id }, options: { enableCount: false } });
406
409
  if ((_a = data === null || data === void 0 ? void 0 : data[0]) === null || _a === void 0 ? void 0 : _a.id)
407
410
  return (_b = data === null || data === void 0 ? void 0 : data[0]) === null || _b === void 0 ? void 0 : _b.id;
408
411
  throw new NotFoundError(`Product with id ${id} not found`);
@@ -459,4 +462,4 @@ export class ProductHasuraGraphQLRepository extends withCrudHasuraGraphQL(withHa
459
462
  });
460
463
  }
461
464
  }
462
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC1oYXN1cmEtZ3JhcGhxbC5yZXBvc2l0b3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29ubmVjdC9zcmMvaW5mcmEvaGFzdXJhLWdyYXBocWwvcmVwb3NpdG9yaWVzL2NhdGFsb2cvcHJvZHVjdC1oYXN1cmEtZ3JhcGhxbC5yZXBvc2l0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBY0wsS0FBSyxHQUNOLE1BQU0sb0JBQW9CLENBQUE7QUFDM0IsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG9CQUFvQixDQUFBO0FBQ2xELE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBQ3JELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUN6RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFDdkUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sY0FBYyxDQUFBO0FBb0JuRCxNQUFNLE9BQU8sOEJBQ1gsU0FBUSxxQkFBcUIsQ0FBQyxpQkFBaUIsQ0FBdUIsSUFBSSxDQUFDLENBQUM7SUFzQjVFLFlBQVksUUFBZ0IsRUFBRSxXQUFxQztRQUNqRSxLQUFLLENBQUM7WUFDSixTQUFTLEVBQUUsU0FBUztZQUNwQixLQUFLLEVBQUUsb0JBQW9CO1lBQzNCLFFBQVE7WUFDUixXQUFXO1lBQ1gsTUFBTSxFQUFFLEVBQUU7U0FDWCxDQUFDLENBQUE7UUF1Z0JJLHNCQUFpQixHQUFHLENBQUMsS0FBMEIsRUFBaUIsRUFBRSxDQUFDLGlDQUN0RSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsWUFBWSxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLFVBQVUsQ0FBQyxDQUFDLEtBQ25GLFNBQVMsRUFBRSxPQUFP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LE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsYUFBYSxFQUFFO2dCQUN0RixLQUFLLEVBQUU7b0JBQ0wsS0FBSyxrQkFDSCxVQUFVLEVBQUUsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLEVBQzlCLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRSxNQUFNLEVBQUUsRUFDdkIsS0FBSyxFQUFFLEVBQUUsR0FBRyxFQUFFLEtBQUssRUFBRSxJQUNsQixDQUFDLE9BQU8sSUFBSSxFQUFFLFFBQVEsRUFBRSxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQy9DO29CQUNELElBQUksRUFBRSx5QkFBeUI7b0JBQy9CLFFBQVEsRUFBRSxJQUFJO2lCQUNmO2FBQ0YsQ0FBQyxDQUFBO1lBRUYsT0FBTyxJQUFJLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUMzRCxDQUFDO0tBQUE7Q0FlRiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ3JlYXRlUmVwb3NpdG9yeVBhcmFtcyxcclxuICBGaW5kUmVwb3NpdG9yeVBhcmFtcyxcclxuICBHZXRSZXBvc2l0b3J5UGFyYW1zLFxyXG4gIE5vbkZ1bmN0aW9uUHJvcGVydHlOYW1lcyxcclxuICBQcm9kdWN0TWV0YWRhdGEsXHJcbiAgUHJvZHVjdFJlcG9zaXRvcnksXHJcbiAgUHJvZHVjdFJldmlldyxcclxuICBSZXBvc2l0b3J5RmluZFJlc3VsdCxcclxuICBSZXZpZXdTdGF0dXNQYXJhbXMsXHJcbiAgUmV2aWV3V2l0aFByb2R1Y3REYXRhLFxyXG4gIFNob3BQcmljZSxcclxuICBTaG9wcyxcclxuICBVcGRhdGVSZXBvc2l0b3J5UGFyYW1zLFxyXG4gIFdoZXJlLFxyXG59IGZyb20gJy4uLy4uLy4uLy4uL2RvbWFpbidcclxuaW1wb3J0IHsgTm90Rm91bmRFcnJvciB9IGZyb20gJy4uLy4uLy4uLy4uL2Vycm9ycydcclxuaW1wb3J0IHsgQmFzZSwgaXNOaWwsIG9taXQgfSBmcm9tICcuLi8uLi8uLi8uLi91dGlscydcclxuaW1wb3J0IHsgSGFzdXJhR3JhcGhRTENvbHVtblR5cGUsIEhhc3VyYUdyYXBoUUxXaGVyZSB9IGZyb20gJy4uLy4uL2VudW1zJ1xyXG5pbXBvcnQgeyB3aXRoQ3J1ZEhhc3VyYUdyYXBoUUwsIHdpdGhIYXN1cmFHcmFwaFFMIH0gZnJvbSAnLi4vLi4vbWl4aW5zJ1xyXG5pbXBvcnQgeyBQcm9kdWN0SGFzdXJhR3JhcGhRTCB9IGZyb20gJy4uLy4uL21vZGVscydcclxuaW1wb3J0IHsgSGFzdXJhR3JhcGhRTEF1dGhPcHRpb25zLCBIYXN1cmFHcmFwaFFMRmllbGRzIH0gZnJvbSAnLi4vLi4vdHlwZXMnXHJcblxyXG50eXBlIFByb2R1Y3RSZXZpZXdGaWVsZHMgPSB7XHJcbiAgaWQ/OiBzdHJpbmdcclxuICBzaG9wOiBTaG9wc1xyXG4gIHJhdGU6IG51bWJlclxyXG4gIGF1dGhvcj86IHN0cmluZ1xyXG4gIGVtYWlsPzogc3RyaW5nXHJcbiAgbG9jYXRpb24/OiBzdHJpbmdcclxuICByZXZpZXc/OiBzdHJpbmdcclxuICBzdGF0dXM/OiBib29sZWFuXHJcbiAgdGl0bGU/OiBzdHJpbmdcclxuICBwZXJzb25JZD86IG51bWJlclxyXG4gIHBvaW50cz86IG51bWJlclxyXG4gIG9yZGVySWQ/OiBzdHJpbmdcclxuICBjcmVhdGVkQXQ/OiBEYXRlXHJcbiAgdXBkYXRlZEF0PzogRGF0ZVxyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgUHJvZHVjdEhhc3VyYUdyYXBoUUxSZXBvc2l0b3J5XHJcbiAgZXh0ZW5kcyB3aXRoQ3J1ZEhhc3VyYUdyYXBoUUwod2l0aEhhc3VyYUdyYXBoUUw8UHJvZHVjdEhhc3VyYUdyYXBoUUw+KEJhc2UpKVxyXG4gIGltcGxlbWVudHMgUHJvZHVjdFJlcG9zaXRvcnlcclxue1xyXG4gIHByaXZhdGUgZ2V0IHJldmlld3NGaWVsZHMoKTogYW55IHtcclxuICAgIHJldHVybiBbXHJcbiAgICAgICdpZCcsXHJcbiAgICAgICdzaG9wJyxcclxuICAgICAgJ3JhdGUnLFxyXG4gICAgICAnYXV0aG9yJyxcclxuICAgICAgJ2VtYWlsJyxcclxuICAgICAgJ2xvY2F0aW9uJyxcclxuICAgICAgJ3JldmlldycsXHJcbiAgICAgICdzdGF0dXMnLFxyXG4gICAgICAndGl0bGUnLFxyXG4gICAgICB7IHBlcnNvbklkOiB7IGNvbHVtbk5hbWU6ICdwZXJzb25faWQnIH0gfSxcclxuICAgICAgJ3BvaW50cycsXHJcbiAgICAgIHsgb3JkZXJJZDogeyBjb2x1bW5OYW1lOiAnb3JkZXJfaWQnIH0gfSxcclxuICAgICAgeyBjcmVhdGVkQXQ6IHsgY29sdW1uTmFtZTogJ2NyZWF0ZWRfYXQnIH0gfSxcclxuICAgICAgeyB1cGRhdGVkQXQ6IHsgY29sdW1uTmFtZTogJ3VwZGF0ZWRfYXQnIH0gfSxcclxuICAgIF1cclxuICB9XHJcblxyXG4gIGNvbnN0cnVjdG9yKGVuZHBvaW50OiBzdHJpbmcsIGF1dGhPcHRpb25zOiBIYXN1cmFHcmFwaFFMQXV0aE9wdGlvbnMpIHtcclxuICAgIHN1cGVyKHtcclxuICAgICAgdGFibGVOYW1lOiAncHJvZHVjdCcsXHJcbiAgICAgIG1vZGVsOiBQcm9kdWN0SGFzdXJhR3JhcGhRTCxcclxuICAgICAgZW5kcG9pbnQsXHJcbiAgICAgIGF1dGhPcHRpb25zLFxyXG4gICAgICBmaWVsZHM6IFtdLFxyXG4gICAgfSlcclxuXHJcbiAgICBjb25zdCBjb21tb25GaWVsZHM6IEhhc3VyYUdyYXBoUUxGaWVsZHM8UHJvZHVjdEhhc3VyYUdyYXBoUUw+ID0gW1xyXG4gICAgICB7IGlkOiB7IGNvbHVtbk5hbWU6ICdpZCcsIHRvOiAodmFsdWUpID0+ICt2YWx1ZSwgZnJvbTogKHZhbHVlKSA9PiB2YWx1ZS50b1N0cmluZygpIH0gfSxcclxuICAgICAgeyBmaXJlc3RvcmVJZDogeyBjb2x1bW5OYW1lOiAnZmlyZXN0b3JlX2lkJyB9IH0sXHJcbiAgICAgIHsgcHJvZHVjdElkOiB7IGNvbHVtbk5hbWU6ICdtYWluX3Byb2R1Y3RfaWQnIH0gfSxcclxuICAgICAgeyBDRVNUOiB7IGNvbHVtbk5hbWU6ICdjZXN0JyB9IH0sXHJcbiAgICAgIHsgRUFOOiB7IGNvbHVtbk5hbWU6ICdlYW4nIH0gfSxcclxuICAgICAgeyBOQ006IHsgY29sdW1uTmFtZTogJ25jbScgfSB9LFxyXG4gICAgICAnYnJhbmQnLFxyXG4gICAgICB7IGNvc3RQcmljZTogeyBjb2x1bW5OYW1lOiAnY29zdF9wcmljZScgfSB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgZGVzY3JpcHRpb246IHtcclxuICAgICAgICAgIGNvbHVtbk5hbWU6ICdkZXNjcmlwdGlvbicsXHJcbiAgICAgICAgICBmcm9tOiAoZGVzY3JpcHRpb24sIGRhdGEpID0+ICh7XHJcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uLFxyXG4gICAgICAgICAgICBkaWZmZXJlbnRpYWxzOiBkYXRhLmRpZmZlcmVudGlhbHMsXHJcbiAgICAgICAgICAgIHdob011c3RVc2U6IGRhdGEud2hvX211c3RfdXNlLFxyXG4gICAgICAgICAgICBob3dUb1VzZTogZGF0YS5ob3dfdG9fdXNlLFxyXG4gICAgICAgICAgICBicmFuZDogZGF0YS5icmFuZF9kZXNjcmlwdGlvbixcclxuICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgYmluZEZpbmRGaWx0ZXI6IChzZW50ZW5jZSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBmaWx0ZXJzID0gT2JqZWN0LnZhbHVlcyhzZW50ZW5jZSkuc2hpZnQoKVxyXG5cclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAuLi4oZmlsdGVycz8uZGVzY3JpcHRpb24gJiYgeyBkZXNjcmlwdGlvbjogZmlsdGVycy5kZXNjcmlwdGlvbiB9KSxcclxuICAgICAgICAgICAgICAuLi4oZmlsdGVycy5kaWZmZXJlbnRpYWxzICYmIHsgZGlmZmVyZW50aWFsczogZmlsdGVycy5kaWZmZXJlbnRpYWxzIH0pLFxyXG4gICAgICAgICAgICAgIC4uLihmaWx0ZXJzLndob011c3RVc2UgJiYge1xyXG4gICAgICAgICAgICAgICAgd2hvX211c3RfdXNlOiBmaWx0ZXJzLndob011c3RVc2UsXHJcbiAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICAgLi4uKGZpbHRlcnMuaG93VG9Vc2UgJiYge1xyXG4gICAgICAgICAgICAgICAgaG93X3RvX3VzZTogZmlsdGVycy5ob3dUb1VzZSxcclxuICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICAuLi4oZmlsdGVycy5icmFuZCAmJiB7XHJcbiAgICAgICAgICAgICAgICBicmFuZF9kZXNjcmlwdGlvbjogZmlsdGVycy5icmFuZCxcclxuICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGJpbmRQZXJzaXN0RGF0YTogKGRlc2NyaXB0aW9uRGF0YSkgPT4gKHtcclxuICAgICAgICAgICAgLi4uKGRlc2NyaXB0aW9uRGF0YT8uZGVzY3JpcHRpb24gJiYgeyBkZXNjcmlwdGlvbjogZGVzY3JpcHRpb25EYXRhLmRlc2NyaXB0aW9uIH0pLFxyXG4gICAgICAgICAgICAuLi4oZGVzY3JpcHRpb25EYXRhLmRpZmZlcmVudGlhbHMgJiYgeyBkaWZmZXJlbnRpYWxzOiBkZXNjcmlwdGlvbkRhdGEuZGlmZmVyZW50aWFscyB9KSxcclxuICAgICAgICAgICAgLi4uKGRlc2NyaXB0aW9uRGF0YS53aG9NdXN0VXNlICYmIHtcclxuICAgICAgICAgICAgICB3aG9fbXVzdF91c2U6IGRlc2NyaXB0aW9uRGF0YS53aG9NdXN0VXNlLFxyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgLi4uKGRlc2NyaXB0aW9uRGF0YS5ob3dUb1VzZSAmJiB7IGhvd190b191c2U6IGRlc2NyaXB0aW9uRGF0YS5ob3dUb1VzZSB9KSxcclxuICAgICAgICAgICAgLi4uKGRlc2NyaXB0aW9uRGF0YS5icmFuZCAmJiB7IGJyYW5kX2Rlc2NyaXB0aW9uOiBkZXNjcmlwdGlvbkRhdGEuYnJhbmQgfSksXHJcbiAgICAgICAgICB9KSxcclxuICAgICAgICB9LFxyXG4gICAgICB9LFxyXG4gICAgICB7IGRpZmZlcmVudGlhbHM6IHsgY29sdW1uTmFtZTogJ2RpZmZlcmVudGlhbHMnIH0gfSxcclxuICAgICAgeyB3aG9NdXN0VXNlOiB7IGNvbHVtbk5hbWU6ICd3aG9fbXVzdF91c2UnIH0gfSxcclxuICAgICAgeyBob3dUb1VzZTogeyBjb2x1bW5OYW1lOiAnaG93X3RvX3VzZScgfSB9LFxyXG4gICAgICB7IGJyYW5kRGVzY3JpcHRpb246IHsgY29sdW1uTmFtZTogJ2JyYW5kX2Rlc2NyaXB0aW9uJyB9IH0sXHJcbiAgICAgIHsgaGFzVmFyaWFudHM6IHsgY29sdW1uTmFtZTogJ2hhc192YXJpYW50cycgfSB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgaW1hZ2VzOiB7XHJcbiAgICAgICAgICBjb2x1bW5OYW1lOiAnaW1hZ2VzJyxcclxuICAgICAgICAgIHRvOiAodmFsdWUpID0+ICh2YWx1ZT8ubGVuZ3RoID4gMCA/IGB7XCIke3ZhbHVlPy5qb2luPy4oYFwiLFwiYCkgfHwgJyd9XCJ9YCA6IGB7fWApLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBtaW5pYXR1cmVzOiB7XHJcbiAgICAgICAgICBjb2x1bW5OYW1lOiAnbWluaWF0dXJlcycsXHJcbiAgICAgICAgICB0bzogKHZhbHVlKSA9PiAodmFsdWU/Lmxlbmd0aCA+IDAgPyBge1wiJHt2YWx1ZT8uam9pbj8uKGBcIixcImApIHx8ICcnfVwifWAgOiBge31gKSxcclxuICAgICAgICB9LFxyXG4gICAgICB9LFxyXG4gICAgICAnbmFtZScsXHJcbiAgICAgIHtcclxuICAgICAgICBwcmljZToge1xyXG4gICAgICAgICAgY29sdW1uTmFtZTogJ3ByaWNlJyxcclxuICAgICAgICAgIGZyb206IChwcmljZSwgZGF0YSk6IFNob3BQcmljZSA9PiAoe1xyXG4gICAgICAgICAgICBwcmljZSxcclxuICAgICAgICAgICAgZnVsbFByaWNlOiBkYXRhLmZ1bGxfcHJpY2UsXHJcbiAgICAgICAgICAgIHN1YnNjcmliZXJEaXNjb3VudFBlcmNlbnRhZ2U6IGRhdGEuc3Vic2NyaWJlcl9kaXNjb3VudF9wZXJjZW50YWdlLFxyXG4gICAgICAgICAgICBzdWJzY3JpYmVyUHJpY2U6IGRhdGEuc3Vic2NyaWJlcl9wcmljZSxcclxuICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgYmluZEZpbmRGaWx0ZXI6IChzZW50ZW5jZSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBmaWx0ZXJzID0gT2JqZWN0LnZhbHVlcyhzZW50ZW5jZSkuc2hpZnQoKVxyXG5cclxuICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAuLi4oKGZpbHRlcnM/LnByaWNlIHx8IGZpbHRlcnM/LnByaWNlID09PSAwKSAmJiB7IHByaWNlOiBmaWx0ZXJzLnByaWNlIH0pLFxyXG4gICAgICAgICAgICAgIC4uLigoZmlsdGVycy5mdWxsUHJpY2UgfHwgZmlsdGVycy5mdWxsUHJpY2UgPT09IDApICYmIHsgZnVsbF9wcmljZTogZmlsdGVycy5mdWxsUHJpY2UgfSksXHJcbiAgICAgICAgICAgICAgLi4uKChmaWx0ZXJzLnN1YnNjcmliZXJEaXNjb3VudFBlcmNlbnRhZ2UgfHwgZmlsdGVycy5zdWJzY3JpYmVyRGlzY291bnRQZXJjZW50YWdlID09PSAwKSAmJiB7XHJcbiAgICAgICAgICAgICAgICBzdWJzY3JpYmVyX2Rpc2NvdW50X3BlcmNlbnRhZ2U6IGZpbHRlcnMuc3Vic2NyaWJlckRpc2NvdW50UGVyY2VudGFnZSxcclxuICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICAuLi4oKGZpbHRlcnMuc3Vic2NyaWJlclByaWNlIHx8IGZpbHRlcnMuc3Vic2NyaWJlclByaWNlID09PSAwKSAmJiB7XHJcbiAgICAgICAgICAgICAgICBzdWJzY3JpYmVyX3ByaWNlOiBmaWx0ZXJzLnN1YnNjcmliZXJQcmljZSxcclxuICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIGJpbmRQZXJzaXN0RGF0YTogKHByaWNlRGF0YSkgPT4gKHtcclxuICAgICAgICAgICAgLi4uKHByaWNlRGF0YT8ucHJpY2UgPj0gMCAmJiB7IHByaWNlOiBwcmljZURhdGEucHJpY2UgfSksXHJcbiAgICAgICAgICAgIC4uLihwcmljZURhdGEuZnVsbFByaWNlID49IDAgJiYgeyBmdWxsX3ByaWNlOiBwcmljZURhdGEuZnVsbFByaWNlIH0pLFxyXG4gICAgICAgICAgICAuLi4ocHJpY2VEYXRhLnN1YnNjcmliZXJEaXNjb3VudFBlcmNlbnRhZ2UgPj0gMCAmJiB7XHJcbiAgICAgICAgICAgICAgc3Vic2NyaWJlcl9kaXNjb3VudF9wZXJjZW50YWdlOiBwcmljZURhdGEuc3Vic2NyaWJlckRpc2NvdW50UGVyY2VudGFnZSxcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIC4uLihwcmljZURhdGEuc3Vic2NyaWJlclByaWNlID49IDAgJiYgeyBzdWJzY3JpYmVyX3ByaWNlOiBwcmljZURhdGEuc3Vic2NyaWJlclByaWNlIH0pLFxyXG4gICAgICAgICAgfSksXHJcbiAgICAgICAgfSxcclxuICAgICAgfSxcclxuICAgICAgeyBmdWxsUHJpY2U6IHsgY29sdW1uTmFtZTogJ2Z1bGxfcHJpY2UnIH0gfSxcclxuICAgICAgeyBzdWJzY3JpYmVyRGlzY291bnRQZXJjZW50YWdlOiB7IGNvbHVtbk5hbWU6ICdzdWJzY3JpYmVyX2Rpc2NvdW50X3BlcmNlbnRhZ2UnIH0gfSxcclxuICAgICAgeyBzdWJzY3JpYmVyUHJpY2U6IHsgY29sdW1uTmFtZTogJ3N1YnNjcmliZXJfcHJpY2UnIH0gfSxcclxuICAgICAgJ3B1Ymxpc2hlZCcsXHJcbiAgICAgICdza3UnLFxyXG4gICAgICB7XHJcbiAgICAgICAgc3RvY2s6IHtcclxuICAgICAgICAgIGNvbHVtbk5hbWU6ICdzdG9jaycsXHJcbiAgICAgICAgICBmcm9tOiAocXVhbnRpdHk6IG51bWJlcikgPT4gKHsgcXVhbnRpdHkgfSksXHJcbiAgICAgICAgICB0bzogKHZhbHVlKSA9PiAoaXNOaWwodmFsdWU/LnF1YW50aXR5KSA/IHZhbHVlIDogdmFsdWU/LnF1YW50aXR5KSxcclxuICAgICAgICB9LFxyXG4gICAgICB9LFxyXG4gICAgICAnc2x1ZycsXHJcbiAgICAgICd0eXBlJyxcclxuICAgICAgJ3ZpZGVvJyxcclxuICAgICAgJ3dlaWdodCcsXHJcbiAgICAgICdnZW5kZXInLFxyXG4gICAgICB7IHRhZ3M6IHsgY29sdW1uTmFtZTogJ3RhZ3MnLCB0eXBlOiBIYXN1cmFHcmFwaFFMQ29sdW1uVHlwZS5Kc29uYiB9IH0sXHJcbiAgICAgIHsgaXNLaXQ6IHsgY29sdW1uTmFtZTogJ2lzX2tpdCcgfSB9LFxyXG4gICAgICB7IGNyZWF0ZWRBdDogeyBjb2x1bW5OYW1lOiAnY3JlYXRlZF9hdCcgfSB9LFxyXG4gICAgICB7IHVwZGF0ZWRBdDogeyBjb2x1bW5OYW1lOiAndXBkYXRlZF9hdCcgfSB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgcmF0ZToge1xyXG4gICAgICAgICAgY29sdW1uTmFtZTogJ3Jldmlld3NfYWdncmVnYXRlJyxcclxuICAgICAgICAgIGZpbHRlcnM6IHtcclxuICAgICAgICAgICAgZmlsdGVyczogeyBzdGF0dXM6IHRydWUgfSxcclxuICAgICAgICAgICAgZmlsdGVyVHlwZTogJ3Byb2R1Y3RfcmV2aWV3X2Jvb2xfZXhwJyxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBmaWVsZHM6IFt7IGFnZ3JlZ2F0ZTogW3sgYXZnOiBbJ3JhdGUnXSB9XSB9XSxcclxuICAgICAgICAgIGZyb206ICh2YWx1ZSkgPT4gdmFsdWUuYWdncmVnYXRlLmF2Zy5yYXRlLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH0sXHJcbiAgICAgIHsgc2hvcHBpbmdDb3VudDogeyBjb2x1bW5OYW1lOiAnc2hvcHBpbmdfY291bnQnIH0gfSxcclxuICAgIF1cclxuXHJcbiAgICB0aGlzLmZpZWxkcyA9IFtcclxuICAgICAgLi4uY29tbW9uRmllbGRzLFxyXG4gICAgICB7XHJcbiAgICAgICAgY2F0ZWdvcmllczoge1xyXG4gICAgICAgICAgY29sdW1uTmFtZTogJ2NhdGVnb3JpZXMnLFxyXG4gICAgICAgICAgZmllbGRzOiBbJ2NhdGVnb3J5X2lkJ10sXHJcbiAgICAgICAgICBiaW5kUGVyc2lzdERhdGE6ICh2YWx1ZSkgPT4gKHtcclxuICAgICAgICAgICAgY2F0ZWdvcmllczogeyBkYXRhOiB2YWx1ZS5tYXAoKGNhdGVnb3J5KSA9PiAoeyBjYXRlZ29yeV9pZDogK2NhdGVnb3J5IH0pKSB9LFxyXG4gICAgICAgICAgfSksXHJcbiAgICAgICAgICB0bzogKGNhdGVnb3JpZXMpID0+IGNhdGVnb3JpZXMubWFwKChjYXRlZ29yeUlkKSA9PiArY2F0ZWdvcnlJZCksXHJcbiAgICAgICAgICBmcm9tOiAoY2F0ZWdvcmllczogeyBjYXRlZ29yeV9pZDogbnVtYmVyIH1bXSkgPT5cclxuICAgICAgICAgICAgY2F0ZWdvcmllcz8ubWFwKChjYXRlZ29yeSkgPT4gY2F0ZWdvcnk/LmNhdGVnb3J5X2lkPy50b1N0cmluZygpKSB8fCBbXSxcclxuICAgICAgICB9LFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAga2l0UHJvZHVjdHM6IHtcclxuICAgICAgICAgIGNvbHVtbk5hbWU6ICdraXRfcHJvZHVjdHMnLFxyXG4gICAgICAgICAgZm9yZWlnbktleUNvbHVtbjogeyBwcm9kdWN0SWQ6ICdpZCcgfSxcclxuICAgICAgICAgIGZpZWxkczogW1xyXG4gICAgICAgICAgICB7IHByb2R1Y3RJZDogeyBjb2x1bW5OYW1lOiAncHJvZHVjdF9pZCcgfSB9LFxyXG4gICAgICAgICAgICB7IGtpdFByb2R1Y3RJZDogeyBjb2x1bW5OYW1lOiAna2l0X3Byb2R1Y3RfaWQnIH0gfSxcclxuICAgICAgICAgICAgJ3F1YW50aXR5JyxcclxuICAgICAgICAgICAgeyBwcm9kdWN0OiB7IGNvbHVtbk5hbWU6ICdwcm9kdWN0JywgZm9yZWlnbktleUNvbHVtbjogeyBpZDogJ3Byb2R1Y3RfaWQnIH0sIGZpZWxkczogY29tbW9uRmllbGRzIH0gfSxcclxuICAgICAgICAgIF0sXHJcbiAgICAgICAgfSxcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIHJldmlld3M6IHtcclxuICAgICAgICAgIGNvbHVtbk5hbWU6ICdyZXZpZXdzJyxcclxuICAgICAgICAgIGZvcmVpZ25LZXlDb2x1bW46IHsgcHJvZHVjdF9pZDogJ2lkJyB9LFxyXG4gICAgICAgICAgZmllbGRzOiB0aGlzLnJldmlld3NGaWVsZHMsXHJcbiAgICAgICAgfSxcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIG1ldGFkYXRhOiB7XHJcbiAgICAgICAgICBjb2x1bW5OYW1lOiAnbWV0YWRhdGEnLFxyXG4gICAgICAgICAgZmllbGRzOiBbJ3RpdGxlJywgJ2Rlc2NyaXB0aW9uJ10sXHJcbiAgICAgICAgICBiaW5kUGVyc2lzdERhdGE6ICh2YWx1ZSkgPT4gKHtcclxuICAgICAgICAgICAgbWV0YWRhdGE6IHsgZGF0YTogdmFsdWUgfSxcclxuICAgICAgICAgIH0pLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH0sXHJcbiAgICBdXHJcbiAgfVxyXG5cclxuICBhc3luYyBjcmVhdGUocGFyYW1zOiBDcmVhdGVSZXBvc2l0b3J5UGFyYW1zPFByb2R1Y3RIYXN1cmFHcmFwaFFMPik6IFByb21pc2U8UHJvZHVjdEhhc3VyYUdyYXBoUUw+IHtcclxuICAgIGNvbnN0IHsgbWV0YWRhdGEsIC4uLmRhdGEgfSA9IHBhcmFtc1xyXG4gICAgY29uc3QgcHJvZHVjdCA9IGF3YWl0IHN1cGVyLmNyZWF0ZShcclxuICAgICAgb21pdCh7IC4uLmRhdGEsIG1ldGFkYXRhOiBtZXRhZGF0YSB8fCB7IGRlc2NyaXB0aW9uOiBudWxsLCB0aXRsZTogbnVsbCB9IH0sIFsncmV2aWV3cyddKSxcclxuICAgIClcclxuXHJcbiAgICB0cnkge1xyXG4gICAgICBwcm9kdWN0LnJldmlld3MgPSBkYXRhLnJldmlld3MgJiYgKGF3YWl0IHRoaXMudXBkYXRlUmV2aWV3cygrcHJvZHVjdC5pZCwgZGF0YSkpXHJcbiAgICB9IGNhdGNoIChlcnJvcikge1xyXG4gICAgICBhd2FpdCB0aGlzLmRlbGV0ZSh7IGlkOiBwcm9kdWN0LmlkIH0pXHJcblxyXG4gICAgICB0aHJvdyBlcnJvclxyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBwcm9kdWN0XHJcbiAgfVxyXG5cclxuICBhc3luYyBnZXQoaWRlbnRpZmllcnM6IEdldFJlcG9zaXRvcnlQYXJhbXM8UHJvZHVjdEhhc3VyYUdyYXBoUUw+KTogUHJvbWlzZTxQcm9kdWN0SGFzdXJhR3JhcGhRTD4ge1xyXG4gICAgY29uc3QgcHJvZHVjdCA9IE51bWJlci5pc05hTigraWRlbnRpZmllcnMuaWQpXHJcbiAgICAgID8gKGF3YWl0IHRoaXMuZmluZCh7IGZpbHRlcnM6IHsgZmlyZXN0b3JlSWQ6IGlkZW50aWZpZXJzLmlkIH0gfSkpLmRhdGE/LlswXVxyXG4gICAgICA6IGF3YWl0IHN1cGVyLmdldChpZGVudGlmaWVycylcclxuXHJcbiAgICBpZiAocHJvZHVjdC5wcm9kdWN0SWQpIHRocm93IG5ldyBOb3RGb3VuZEVycm9yKCdQcm9kdWN0IG5vdCBmb3VuZCwgaXQgaXMgYSB2YXJpYW50JylcclxuXHJcbiAgICBwcm9kdWN0LnJldmlld3MgPSBwcm9kdWN0LnJldmlld3MgfHwgKGF3YWl0IHRoaXMuZmluZFJldmlld3NCeVByb2R1Y3QoK3Byb2R1Y3QuaWQpKVxyXG5cclxuICAgIHJldHVybiBwcm9kdWN0XHJcbiAgfVxyXG5cclxuICBhc3luYyBmaW5kKHBhcmFtcz86IEZpbmRSZXBvc2l0b3J5UGFyYW1zPFByb2R1Y3RIYXN1cmFHcmFwaFFMPik6IFByb21pc2U8UmVwb3NpdG9yeUZpbmRSZXN1bHQ8UHJvZHVjdEhhc3VyYUdyYXBoUUw+PiB7XHJcbiAgICBjb25zdCB7IGZpbHRlcnMsIGZpZWxkcywgLi4ub3B0aW9ucyB9ID0gcGFyYW1zIHx8IHt9XHJcbiAgICBjb25zdCBiaW5kRmllbGRzID1cclxuICAgICAgZmllbGRzIHx8XHJcbiAgICAgICh0aGlzLmZpZWxkc1xyXG4gICAgICAgIC5tYXAoKGZpZWxkKSA9PiAodHlwZW9mIGZpZWxkID09PSAnc3RyaW5nJyA/IGZpZWxkIDogT2JqZWN0LmtleXMoZmllbGQpLnNoaWZ0KCkpKVxyXG4gICAgICAgIC5maWx0ZXIoKGZpZWxkKSA9PiBmaWVsZCAhPT0gJ3Jldmlld3MnKSBhcyBOb25GdW5jdGlvblByb3BlcnR5TmFtZXM8XHJcbiAgICAgICAgUHJvZHVjdEhhc3VyYUdyYXBoUUwsXHJcbiAgICAgICAga2V5b2YgUHJvZHVjdEhhc3VyYUdyYXBoUUxcclxuICAgICAgPltdKVxyXG5cclxuICAgIHJldHVybiBzdXBlci5maW5kKHtcclxuICAgICAgLi4ub3B0aW9ucyxcclxuICAgICAgZmlsdGVyczogeyAuLi5maWx0ZXJzLCBwcm9kdWN0SWQ6IHsgb3BlcmF0b3I6IFdoZXJlLklTTlVMTCB9IH0sXHJcbiAgICAgIGZpZWxkczogYmluZEZpZWxkcyxcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBhc3luYyBnZXRCeVNsdWcoc2x1Zzogc3RyaW5nKTogUHJvbWlzZTxQcm9kdWN0SGFzdXJhR3JhcGhRTD4ge1xyXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5maW5kKHtcclxuICAgICAgZmlsdGVyczoge1xyXG4gICAgICAgIHNsdWcsXHJcbiAgICAgIH0sXHJcbiAgICB9KVxyXG5cclxuICAgIGNvbnN0IHByb2R1Y3QgPSByZXN1bHQ/LmRhdGE/LnNoaWZ0KClcclxuXHJcbiAgICBwcm9kdWN0LnJldmlld3MgPSBhd2FpdCB0aGlzLmZpbmRSZXZpZXdzQnlQcm9kdWN0KCtwcm9kdWN0LmlkKVxyXG5cclxuICAgIHJldHVybiBwcm9kdWN0XHJcbiAgfVxyXG5cclxuICBhc3luYyB1cGRhdGUocGFyYW1zOiBVcGRhdGVSZXBvc2l0b3J5UGFyYW1zPFByb2R1Y3RIYXN1cmFHcmFwaFFMPik6IFByb21pc2U8UHJvZHVjdEhhc3VyYUdyYXBoUUw+IHtcclxuICAgIGNvbnN0IHsgY2F0ZWdvcmllcywga2l0UHJvZHVjdHMsIHJldmlld3MsIGlkOiBjaGVja0lkLCByYXRlLCBtZXRhZGF0YSwgLi4uZGF0YSB9ID0gcGFyYW1zXHJcbiAgICBjb25zdCBwbGFpbkRhdGEgPSB0aGlzLnBhcmFtc1RvUGxhaW4oeyBpZDogY2hlY2tJZCB9KVxyXG4gICAgY29uc3QgaWQgPSBhd2FpdCB0aGlzLmdldElkKHBsYWluRGF0YS5pZClcclxuICAgIGNvbnN0IHByb2R1Y3QgPSBhd2FpdCBzdXBlci51cGRhdGUoeyBpZCwgLi4uZGF0YSB9KVxyXG5cclxuICAgIHByb2R1Y3QuY2F0ZWdvcmllcyA9IGNhdGVnb3JpZXMgJiYgKGF3YWl0IHRoaXMudXBkYXRlQ2F0ZWdvcmllcygraWQsIHsgY2F0ZWdvcmllcyB9KSlcclxuICAgIHByb2R1Y3Qua2l0UHJvZHVjdHMgPSBraXRQcm9kdWN0cyAmJiAoYXdhaXQgdGhpcy51cGRhdGVLaXRQcm9kdWN0cygraWQsIHsga2l0UHJvZHVjdHMgfSkpXHJcbiAgICBwcm9kdWN0LnJldmlld3MgPSByZXZpZXdzICYmIChhd2FpdCB0aGlzLnVwZGF0ZVJldmlld3MoK2lkLCB7IHJldmlld3MgfSkpXHJcbiAgICBwcm9kdWN0Lm1ldGFkYXRhID0gbWV0YWRhdGEgJiYgKGF3YWl0IHRoaXMudXBkYXRlTWV0YWRhdGEoK2lkLCB7IG1ldGFkYXRhIH0pKVxyXG5cclxuICAgIHJldHVybiBwcm9kdWN0XHJcbiAgfVxyXG5cclxuICBhc3luYyBmZXRjaFJldmlld3Moc3RhdHVzOiBSZXZpZXdTdGF0dXNQYXJhbXMpOiBQcm9taXNlPFJldmlld1dpdGhQcm9kdWN0RGF0YVtdPiB7XHJcbiAgICBjb25zdCByZXZpZXdzRXhwcmVzc2lvbiA9IHtcclxuICAgICAgc3RhdHVzOlxyXG4gICAgICAgIHN0YXR1cyA9PT0gJ3BlbmRpbmcnXHJcbiAgICAgICAgICA/IHsgW0hhc3VyYUdyYXBoUUxXaGVyZS5JU05VTExdOiB0cnVlIH1cclxuICAgICAgICAgIDogeyBbSGFzdXJhR3JhcGhRTFdoZXJlLkVRVUFMU106IHN0YXR1cyA9PT0gJ2FwcHJvdmVkJyB9LFxyXG4gICAgfVxyXG4gICAgY29uc3QgeyBwcm9kdWN0OiBkYXRhIH0gPSBhd2FpdCB0aGlzLnF1ZXJ5KFxyXG4gICAgICAncHJvZHVjdCcsXHJcbiAgICAgIFsnaWQnLCAnbmFtZScsICdza3UnLCB7IHJldmlld3M6IHsgY29sdW1uTmFtZTogJ3Jldmlld3MnLCBmaWVsZHM6IHRoaXMucmV2aWV3c0ZpZWxkcyB9IH1dLFxyXG4gICAgICB7XHJcbiAgICAgICAgd2hlcmU6IHsgdmFsdWU6IHsgcmV2aWV3czogcmV2aWV3c0V4cHJlc3Npb24gfSwgdHlwZTogJ3Byb2R1Y3RfYm9vbF9leHAnLCByZXF1aXJlZDogdHJ1ZSB9LFxyXG4gICAgICB9LFxyXG4gICAgKVxyXG5cclxuICAgIHJldHVybiBkYXRhLnJlZHVjZShcclxuICAgICAgKHJldmlld3MsIHByb2R1Y3QpID0+IFtcclxuICAgICAgICAuLi5yZXZpZXdzLFxyXG4gICAgICAgIC4uLnByb2R1Y3QucmV2aWV3c1xyXG4gICAgICAgICAgLmZpbHRlcihcclxuICAgICAgICAgICAgKHJldmlldykgPT5cclxuICAgICAgICAgICAgICAoc3RhdHVzID09PSAncGVuZGluZycgJiYgW3VuZGVmaW5lZCwgbnVsbF0uaW5jbHVkZXMocmV2aWV3LnN0YXR1cykpIHx8XHJcbiAgICAgICAgICAgICAgKHN0YXR1cyA9PT0gJ2FwcHJvdmVkJyAmJiByZXZpZXcuc3RhdHVzID09PSB0cnVlKSB8fFxyXG4gICAgICAgICAgICAgIChzdGF0dXMgPT09ICdyZWplY3RlZCcgJiYgcmV2aWV3LnN0YXR1cyA9PT0gZmFsc2UpLFxyXG4gICAgICAgICAgKVxyXG4gICAgICAgICAgLm1hcCgocmV2aWV3KSA9PiAoe1xyXG4gICAgICAgICAgICAuLi50aGlzLmJpbmRSZXZpZXdUb01vZGVsKHJldmlldyksXHJcbiAgICAgICAgICAgIHByb2R1Y3RJZDogcHJvZHVjdC5pZCxcclxuICAgICAgICAgICAgcHJvZHVjdE5hbWU6IHByb2R1Y3QubmFtZSxcclxuICAgICAgICAgICAgcHJvZHVjdFNrdTogcHJvZHVjdC5za3UsXHJcbiAgICAgICAgICB9KSksXHJcbiAgICAgIF0sXHJcbiAgICAgIFtdIGFzIFJldmlld1dpdGhQcm9kdWN0RGF0YVtdLFxyXG4gICAgKVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyB1cGRhdGVDYXRlZ29yaWVzKFxyXG4gICAgcHJvZHVjdElkOiBudW1iZXIsXHJcbiAgICB7IGNhdGVnb3JpZXMgfTogUGljazxVcGRhdGVSZXBvc2l0b3J5UGFyYW1zPFByb2R1Y3RIYXN1cmFHcmFwaFFMPiwgJ2NhdGVnb3JpZXMnPixcclxuICApOiBQcm9taXNlPFByb2R1Y3RIYXN1cmFHcmFwaFFMWydjYXRlZ29yaWVzJ10+IHtcclxuICAgIGlmICgnYWN0aW9uJyBpbiBjYXRlZ29yaWVzICYmIGNhdGVnb3JpZXMuYWN0aW9uID09PSAncmVtb3ZlJykge1xyXG4gICAgICBhd2FpdCB0aGlzLm11dGF0aW9uKCdkZWxldGVfY2F0ZWdvcnlfcHJvZHVjdCcsIFsnYWZmZWN0ZWRfcm93cyddLCB7XHJcbiAgICAgICAgd2hlcmU6IHtcclxuICAgICAgICAgIHR5cGU6ICdjYXRlZ29yeV9wcm9kdWN0X2Jvb2xfZXhwJyxcclxuICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxyXG4gICAgICAgICAgdmFsdWU6IHsgcHJvZHVjdF9pZDogeyBfZXE6IHByb2R1Y3RJZCB9IH0sXHJcbiAgICAgICAgfSxcclxuICAgICAgfSlcclxuXHJcbiAgICAgIHJldHVybiBbXVxyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHBsYWluRGF0YSA9IHRoaXMucGFyYW1zVG9QbGFpbih7IGNhdGVnb3JpZXMgfSlcclxuXHJcbiAgICBpZiAoIXBsYWluRGF0YS5jYXRlZ29yaWVzIHx8IHBsYWluRGF0YS5jYXRlZ29yaWVzLmxlbmd0aCA8PSAwKSByZXR1cm4gW11cclxuXHJcbiAgICBhd2FpdCB0aGlzLm11dGF0aW9uKCdkZWxldGVfY2F0ZWdvcnlfcHJvZHVjdCcsIFsnYWZmZWN0ZWRfcm93cyddLCB7XHJcbiAgICAgIHdoZXJlOiB7XHJcbiAgICAgICAgdHlwZTogJ2NhdGVnb3J5X3Byb2R1Y3RfYm9vbF9leHAnLFxyXG4gICAgICAgIHJlcXVpcmVkOiB0cnVlLFxyXG4gICAgICAgIHZhbHVlOiB7IHByb2R1Y3RfaWQ6IHsgX2VxOiBwcm9kdWN0SWQgfSB9LFxyXG4gICAgICB9LFxyXG4gICAgfSlcclxuXHJcbiAgICBhd2FpdCB0aGlzLm11dGF0aW9uKCdpbnNlcnRfY2F0ZWdvcnlfcHJvZHVjdCcsIFsnYWZmZWN0ZWRfcm93cyddLCB7XHJcbiAgICAgIG9iamVjdHM6IHtcclxuICAgICAgICB0eXBlOiAnW2NhdGVnb3J5X3Byb2R1Y3RfaW5zZXJ0X2lucHV0IV0nLFxyXG4gICAgICAgIHJlcXVpcmVkOiB0cnVlLFxyXG4gICAgICAgIHZhbHVlOiBwbGFpbkRhdGEuY2F0ZWdvcmllcy5tYXAoKGNhdGVnb3J5SWQpID0+ICh7IGNhdGVnb3J5X2lkOiBjYXRlZ29yeUlkLCBwcm9kdWN0X2lkOiBwcm9kdWN0SWQgfSkpLFxyXG4gICAgICB9LFxyXG4gICAgfSlcclxuXHJcbiAgICByZXR1cm4gcGxhaW5EYXRhLmNhdGVnb3JpZXNcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgdXBkYXRlS2l0UHJvZHVjdHMoXHJcbiAgICBwcm9kdWN0SWQ6IG51bWJlcixcclxuICAgIHsga2l0UHJvZHVjdHMgfTogUGljazxVcGRhdGVSZXBvc2l0b3J5UGFyYW1zPFByb2R1Y3RIYXN1cmFHcmFwaFFMPiwgJ2tpdFByb2R1Y3RzJz4sXHJcbiAgKTogUHJvbWlzZTxQcm9kdWN0SGFzdXJhR3JhcGhRTFsna2l0UHJvZHVjdHMnXT4ge1xyXG4gICAgY29uc3QgcGxhaW5EYXRhID0gdGhpcy5wYXJhbXNUb1BsYWluKHsga2l0UHJvZHVjdHMgfSlcclxuXHJcbiAgICBhd2FpdCB0aGlzLm11dGF0aW9uKCdkZWxldGVfcHJvZHVjdF9raXQnLCBbJ2FmZmVjdGVkX3Jvd3MnXSwge1xyXG4gICAgICB3aGVyZToge1xyXG4gICAgICAgIHR5cGU6ICdwcm9kdWN0X2tpdF9ib29sX2V4cCcsXHJcbiAgICAgICAgcmVxdWlyZWQ6IHRydWUsXHJcbiAgICAgICAgdmFsdWU6IHsga2l0X3Byb2R1Y3RfaWQ6IHsgX2VxOiBwcm9kdWN0SWQgfSB9LFxyXG4gICAgICB9LFxyXG4gICAgfSlcclxuXHJcbiAgICBhd2FpdCB0aGlzLm11dGF0aW9uKCdpbnNlcnRfcHJvZHVjdF9raXQnLCBbJ2FmZmVjdGVkX3Jvd3MnXSwge1xyXG4gICAgICBvYmplY3RzOiB7XHJcbiAgICAgICAgdHlwZTogJ1twcm9kdWN0X2tpdF9pbnNlcnRfaW5wdXQhXScsXHJcbiAgICAgICAgcmVxdWlyZWQ6IHRydWUsXHJcbiAgICAgICAgdmFsdWU6IHBsYWluRGF0YS5raXRQcm9kdWN0cy5tYXAoKGtpdFByb2R1Y3QpID0+ICh7XHJcbiAgICAgICAgICBraXRfcHJvZHVjdF9pZDogcHJvZHVjdElkLFxyXG4gICAgICAgICAgcHJvZHVjdF9pZDoga2l0UHJvZHVjdC5wcm9kdWN0SWQgfHwga2l0UHJvZHVjdC5wcm9kdWN0LmlkLFxyXG4gICAgICAgICAgcXVhbnRpdHk6IGtpdFByb2R1Y3QucXVhbnRpdHksXHJcbiAgICAgICAgfSkpLFxyXG4gICAgICB9LFxyXG4gICAgfSlcclxuXHJcbiAgICByZXR1cm4gcGxhaW5EYXRhLmtpdFByb2R1Y3RzXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIHVwZGF0ZVJldmlld3MoXHJcbiAgICBwcm9kdWN0SWQ6IG51bWJlcixcclxuICAgIHsgcmV2aWV3cyB9OiBQaWNrPFVwZGF0ZVJlcG9zaXRvcnlQYXJhbXM8UHJvZHVjdEhhc3VyYUdyYXBoUUw+LCAncmV2aWV3cyc+LFxyXG4gICk6IFByb21pc2U8UHJvZHVjdFJldmlld1tdPiB7XHJcbiAgICBpZiAoIXJldmlld3MpIHJldHVybiBbXVxyXG4gICAgaWYgKCdhY3Rpb24nIGluIHJldmlld3MgJiYgcmV2aWV3cy5hY3Rpb24gPT09ICdyZW1vdmUnKSB7XHJcbiAgICAgIGNvbnN0IHJldmlld0lkcyA9IGF3YWl0IFByb21pc2UuYWxsKFxyXG4gICAgICAgIHJldmlld3MudmFsdWUubWFwKGFzeW5jIChyZXZpZXdEYXRhKSA9PiB7XHJcbiAgICAgICAgICBjb25zdCByZXZpZXcgPSBhd2FpdCB0aGlzLmZpbmRSZXZpZXcocmV2aWV3RGF0YSwgcHJvZHVjdElkKVxyXG5cclxuICAgICAgICAgIHJldHVybiByZXZpZXc/LmlkXHJcbiAgICAgICAgfSksXHJcbiAgICAgIClcclxuXHJcbiAgICAgIGF3YWl0IHRoaXMubXV0YXRpb24oJ2RlbGV0ZV9wcm9kdWN0X3JldmlldycsIFsnYWZmZWN0ZWRfcm93cyddLCB7XHJcbiAgICAgICAgd2hlcmU6IHsgdmFsdWU6IHsgaWQ6IHsgX2luOiByZXZpZXdJZHMuZmlsdGVyKEJvb2xlYW4pIH0gfSwgdHlwZTogJ3Byb2R1Y3RfcmV2aWV3X2Jvb2xfZXhwJywgcmVxdWlyZWQ6IHRydWUgfSxcclxuICAgICAgfSlcclxuXHJcbiAgICAgIHJldHVybiByZXZpZXdzLnZhbHVlLm1hcCgocmV2aWV3LCBpbmRleCkgPT4gIXJldmlld0lkc1tpbmRleF0gJiYgcmV2aWV3KS5maWx0ZXIoQm9vbGVhbilcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBwbGFpbkRhdGEgPSB0aGlzLnBhcmFtc1RvUGxhaW4oeyByZXZpZXdzIH0pXHJcblxyXG4gICAgaWYgKCFwbGFpbkRhdGEucmV2aWV3cyB8fCBwbGFpbkRhdGEucmV2aWV3cy5sZW5ndGggPD0gMCkgcmV0dXJuIFtdXHJcblxyXG4gICAgcmV0dXJuIFByb21pc2UuYWxsKFxyXG4gICAgICBwbGFpbkRhdGEucmV2aWV3cy5tYXAoYXN5bmMgKHJldmlld0RhdGEpID0+IHtcclxuICAgICAgICBjb25zdCByZXZpZXcgPSBhd2FpdCB0aGlzLmZpbmRSZXZpZXcocmV2aWV3RGF0YSwgcHJvZHVjdElkKVxyXG5cclxuICAgICAgICBpZiAocmV2aWV3LmlkKVxyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuYmluZFJldmlld1RvTW9kZWwoXHJcbiAgICAgICAgICAgIChcclxuICAgICAgICAgICAgICBhd2FpdCB0aGlzLm11dGF0aW9uKCd1cGRhdGVfcHJvZHVjdF9yZXZpZXdfYnlfcGsnLCB0aGlzLnJldmlld3NGaWVsZHMsIHtcclxuICAgICAgICAgICAgICAgIHBrX2NvbHVtbnM6IHtcclxuICAgICAgICAgICAgICAgICAgdmFsdWU6IHsgaWQ6IHJldmlldy5pZCB9LFxyXG4gICAgICAgICAgICAgICAgICB0eXBlOiAncHJvZHVjdF9yZXZpZXdfcGtfY29sdW1uc19pbnB1dCcsXHJcbiAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIF9zZXQ6IHtcclxuICAgICAgICAgICAgICAgICAgdmFsdWU6IG9taXQodGhpcy5iaW5kUmV2aWV3VG9IYXN1cmEocmV2aWV3RGF0YSksIFsnaWQnLCAncHJvZHVjdF9pZCddKSxcclxuICAgICAgICAgICAgICAgICAgdHlwZTogJ3Byb2R1Y3RfcmV2aWV3X3NldF9pbnB1dCcsXHJcbiAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICApLnVwZGF0ZV9wcm9kdWN0X3Jldmlld19ieV9wayxcclxuICAgICAgICAgIClcclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYmluZFJldmlld1RvTW9kZWwoXHJcbiAgICAgICAgICAoXHJcbiAgICAgICAgICAgIGF3YWl0IHRoaXMubXV0YXRpb24oJ2luc2VydF9wcm9kdWN0X3Jldmlld19vbmUnLCB0aGlzLnJldmlld3NGaWVsZHMsIHtcclxuICAgICAgICAgICAgICBvYmplY3Q6IHtcclxuICAgICAgICAgICAgICAgIHZhbHVlOiBvbWl0KHsgLi4udGhpcy5iaW5kUmV2aWV3VG9IYXN1cmEocmV2aWV3RGF0YSksIHByb2R1Y3RfaWQ6IHByb2R1Y3RJZCB9LCBbJ2lkJ10pLFxyXG4gICAgICAgICAgICAgICAgdHlwZTogJ3Byb2R1Y3RfcmV2aWV3X2luc2VydF9pbnB1dCcsXHJcbiAgICAgICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgKS5pbnNlcnRfcHJvZHVjdF9yZXZpZXdfb25lLFxyXG4gICAgICAgIClcclxuICAgICAgfSksXHJcbiAgICApXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIHVwZGF0ZU1ldGFkYXRhKFxyXG4gICAgcHJvZHVjdElkOiBudW1iZXIsXHJcbiAgICB7IG1ldGFkYXRhIH06IFBpY2s8VXBkYXRlUmVwb3NpdG9yeVBhcmFtczxQcm9kdWN0SGFzdXJhR3JhcGhRTD4sICdtZXRhZGF0YSc+LFxyXG4gICk6IFByb21pc2U8UHJvZHVjdE1ldGFkYXRhPiB7XHJcbiAgICBjb25zdCBwbGFpbkRhdGEgPSB0aGlzLnBhcmFtc1RvUGxhaW4oeyBtZXRhZGF0YSB9KVxyXG5cclxuICAgIGlmICghcGxhaW5EYXRhLm1ldGFkYXRhKSByZXR1cm5cclxuXHJcbiAgICBhd2FpdCB0aGlzLm11dGF0aW9uKCd1cGRhdGVfcHJvZHVjdF9tZXRhZGF0YV9ieV9waycsIFsncHJvZHVjdF9pZCddLCB7XHJcbiAgICAgIHBrX2NvbHVtbnM6IHtcclxuICAgICAgICB2YWx1ZTogeyBwcm9kdWN0X2lkOiBwcm9kdWN0SWQgfSxcclxuICAgICAgICB0eXBlOiAncHJvZHVjdF9tZXRhZGF0YV9wa19jb2x1bW5zX2lucHV0JyxcclxuICAgICAgICByZXF1aXJlZDogdHJ1ZSxcclxuICAgICAgfSxcclxuICAgICAgX3NldDoge1xyXG4gICAgICAgIHZhbHVlOiBvbWl0KG1ldGFkYXRhLCBbJ3Byb2R1Y3RfaWQnXSksXHJcbiAgICAgICAgdHlwZTogJ3Byb2R1Y3RfbWV0YWRhdGFfc2V0X2lucHV0JyxcclxuICAgICAgICByZXF1aXJlZDogdHJ1ZSxcclxuICAgICAgfSxcclxuICAgIH0pXHJcblxyXG4gICAgcmV0dXJuIHBsYWluRGF0YS5tZXRhZGF0YVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBnZXRJZChpZDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcclxuICAgIGlmICghTnVtYmVyLmlzTmFOKCtpZCkpIHJldHVybiBpZFxyXG5cclxuICAgIGNvbnN0IHsgZGF0YSB9ID0gYXdhaXQgdGhpcy5maW5kKHsgZmlsdGVyczogeyBmaXJlc3RvcmVJZDogaWQgfSB9KVxyXG5cclxuICAgIGlmIChkYXRhPy5bMF0/LmlkKSByZXR1cm4gZGF0YT8uWzBdPy5pZFxyXG5cclxuICAgIHRocm93IG5ldyBOb3RGb3VuZEVycm9yKGBQcm9kdWN0IHdpdGggaWQgJHtpZH0gbm90IGZvdW5kYClcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgZmluZFJldmlld3NCeVByb2R1Y3QocHJvZHVjdElkOiBudW1iZXIpOiBQcm9taXNlPFByb2R1Y3RSZXZpZXdbXT4ge1xyXG4gICAgY29uc3QgeyBwcm9kdWN0X3JldmlldzogZGF0YSB9ID0gYXdhaXQgdGhpcy5xdWVyeSgncHJvZHVjdF9yZXZpZXcnLCB0aGlzLnJldmlld3NGaWVsZHMsIHtcclxuICAgICAgd2hlcmU6IHtcclxuICAgICAgICB2YWx1ZToge1xyXG4gICAgICAgICAgcHJvZHVjdF9pZDogeyBfZXE6IHByb2R1Y3RJZCB9LFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgdHlwZTogJ3Byb2R1Y3RfcmV2aWV3X2Jvb2xfZXhwJyxcclxuICAgICAgICByZXF1aXJlZDogdHJ1ZSxcclxuICAgICAgfSxcclxuICAgIH0pXHJcblxyXG4gICAgcmV0dXJuIGRhdGEgJiYgZGF0YS5tYXAoKHJldmlldykgPT4gdGhpcy5iaW5kUmV2aWV3VG9Nb2RlbChyZXZpZXcpKVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBmaW5kUmV2aWV3KHJldmlldzogUHJvZHVjdFJldmlldywgcHJvZHVjdElkOiBudW1iZXIpOiBQcm9taXNlPFByb2R1Y3RSZXZpZXc+IHtcclxuICAgIGlmIChyZXZpZXcuaWQpIHJldHVybiByZXZpZXdcclxuXHJcbiAgICBsZXQgbG9hZGVkUmV2aWV3OiBQcm9kdWN0UmV2aWV3XHJcblxyXG4gICAgaWYgKHJldmlldy5wZXJzb25JZCkgbG9hZGVkUmV2aWV3ID0gYXdhaXQgdGhpcy5nZXRSZXZpZXdCeVBlcnNvbklkKHJldmlldy5wZXJzb25JZCwgcHJvZHVjdElkLCByZXZpZXcub3JkZXJJZClcclxuICAgIGlmICghbG9hZGVkUmV2aWV3ICYmIHJldmlldy5hdXRob3IgJiYgcmV2aWV3LmVtYWlsKVxyXG4gICAgICBsb2FkZWRSZXZpZXcgPSBhd2FpdCB0aGlzLmdldFJldmlld0J5QXV0aG9yQW5kRW1haWwocmV2aWV3LmF1dGhvciwgcmV2aWV3LmVtYWlsLCBwcm9kdWN0SWQsIHJldmlldy5vcmRlcklkKVxyXG5cclxuICAgIHJldHVybiBsb2FkZWRSZXZpZXcgfHwgcmV2aWV3XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIGdldFJldmlld0J5UGVyc29uSWQocGVyc29uSWQ6IG51bWJlciwgcHJvZHVjdElkOiBudW1iZXIsIG9yZGVySWQ/OiBzdHJpbmcpOiBQcm9taXNlPFByb2R1Y3RSZXZpZXc+IHtcclxuICAgIGNvbnN0IHsgcHJvZHVjdF9yZXZpZXc6IGRhdGEgfSA9IGF3YWl0IHRoaXMucXVlcnkoJ3Byb2R1Y3RfcmV2aWV3JywgdGhpcy5yZXZpZXdzRmllbGRzLCB7XHJcbiAgICAgIHdoZXJlOiB7XHJcbiAgICAgICAgdmFsdWU6IHtcclxuICAgICAgICAgIHByb2R1Y3RfaWQ6IHsgX2VxOiBwcm9kdWN0SWQgfSxcclxuICAgICAgICAgIHBlcnNvbl9pZDogeyBfZXE6IHBlcnNvbklkIH0sXHJcbiAgICAgICAgICAuLi4ob3JkZXJJZCAmJiB7IG9yZGVyX2lkOiB7IF9lcTogb3JkZXJJZCB9IH0pLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgdHlwZTogYHByb2R1Y3RfcmV2aWV3X2Jvb2xfZXhwYCxcclxuICAgICAgICByZXF1aXJlZDogdHJ1ZSxcclxuICAgICAgfSxcclxuICAgIH0pXHJcblxyXG4gICAgcmV0dXJuIGRhdGEgJiYgZGF0YVswXSAmJiB0aGlzLmJpbmRSZXZpZXdUb01vZGVsKGRhdGFbMF0pXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIGdldFJldmlld0J5QXV0aG9yQW5kRW1haWwoXHJcbiAgICBhdXRob3I6IHN0cmluZyxcclxuICAgIGVtYWlsOiBzdHJpbmcsXHJcbiAgICBwcm9kdWN0SWQ6IG51bWJlcixcclxuICAgIG9yZGVySWQ/OiBzdHJpbmcsXHJcbiAgKTogUHJvbWlzZTxQcm9kdWN0UmV2aWV3PiB7XHJcbiAgICBjb25zdCB7IHByb2R1Y3RfcmV2aWV3OiBkYXRhIH0gPSBhd2FpdCB0aGlzLnF1ZXJ5KCdwcm9kdWN0X3JldmlldycsIHRoaXMucmV2aWV3c0ZpZWxkcywge1xyXG4gICAgICB3aGVyZToge1xyXG4gICAgICAgIHZhbHVlOiB7XHJcbiAgICAgICAgICBwcm9kdWN0X2lkOiB7IF9lcTogcHJvZHVjdElkIH0sXHJcbiAgICAgICAgICBhdXRob3I6IHsgX2VxOiBhdXRob3IgfSxcclxuICAgICAgICAgIGVtYWlsOiB7IF9lcTogZW1haWwgfSxcclxuICAgICAgICAgIC4uLihvcmRlcklkICYmIHsgb3JkZXJfaWQ6IHsgX2VxOiBvcmRlcklkIH0gfSksXHJcbiAgICAgICAgfSxcclxuICAgICAgICB0eXBlOiBgcHJvZHVjdF9yZXZpZXdfYm9vbF9leHBgLFxyXG4gICAgICAgIHJlcXVpcmVkOiB0cnVlLFxyXG4gICAgICB9LFxyXG4gICAgfSlcclxuXHJcbiAgICByZXR1cm4gZGF0YSAmJiBkYXRhWzBdICYmIHRoaXMuYmluZFJldmlld1RvTW9kZWwoZGF0YVswXSlcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYmluZFJldmlld1RvTW9kZWwgPSAocGxhaW46IFJlY29yZDxzdHJpbmcsIGFueT4pOiBQcm9kdWN0UmV2aWV3ID0+ICh7XHJcbiAgICAuLi5vbWl0KHBsYWluLCBbJ3Byb2R1Y3RfaWQnLCAnY3JlYXRlZF9hdCcsICd1cGRhdGVkX2F0JywgJ3BlcnNvbl9pZCcsICdvcmRlcl9pZCddKSxcclxuICAgIGNyZWF0ZWRBdDogdHlwZW9mIHBsYWluLmNyZWF0ZWRfYXQgPT09ICdzdHJpbmcnID8gbmV3IERhdGUocGxhaW4uY3JlYXRlZF9hdCkgOiBwbGFpbi5jcmVhdGVkX2F0LFxyXG4gICAgdXBkYXRlZEF0OiB0eXBlb2YgcGxhaW4udXBkYXRlZF9hdCA9PT0gJ3N0cmluZycgPyBuZXcgRGF0ZShwbGFpbi51cGRhdGVkX2F0KSA6IHBsYWluLnVwZGF0ZWRfYXQsXHJcbiAgICBwZXJzb25JZDogcGxhaW4ucGVyc29uX2lkLFxyXG4gICAgb3JkZXJJZDogcGxhaW4ub3JkZXJfaWQsXHJcbiAgfSlcclxuXHJcbiAgcHJpdmF0ZSBiaW5kUmV2aWV3VG9IYXN1cmEgPSAocmV2aWV3OiBQcm9kdWN0UmV2aWV3KTogUHJvZHVjdFJldmlld0ZpZWxkcyA9PiAoe1xyXG4gICAgLi4ub21pdChyZXZpZXcsIFsncHJvZHVjdElkJywgJ2NyZWF0ZWRBdCcsICd1cGRhdGVkQXQnLCAncGVyc29uSWQnLCAnb3JkZXJJZCddKSxcclxuICAgIHBlcnNvbl9pZDogcmV2aWV3LnBlcnNvbklkLFxyXG4gICAgb3JkZXJfaWQ6IHJldmlldy5vcmRlcklkLFxyXG4gIH0pXHJcbn1cclxuIl19
465
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZHVjdC1oYXN1cmEtZ3JhcGhxbC5yZXBvc2l0b3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29ubmVjdC9zcmMvaW5mcmEvaGFzdXJhLWdyYXBocWwvcmVwb3NpdG9yaWVzL2NhdGFsb2cvcHJvZHVjdC1oYXN1cmEtZ3JhcGhxbC5yZXBvc2l0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBY0wsS0FBSyxHQUNOLE1BQU0sb0JBQW9CLENBQUE7QUFDM0IsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG9CQUFvQixDQUFBO0FBQ2xELE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBQ3JELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUN6RSxPQUFPLEVBQUUscUJBQXFCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFDdkUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sY0FBYyxDQUFBO0FBb0JuRCxNQUFNLE9BQU8sOEJBQ1gsU0FBUSxxQkFBcUIsQ0FBQyxpQkFBaUIsQ0FBdUIsSUFBSSxDQUFDLENBQUM7SUFzQjVFLFlBQVksUUFBZ0IsRUFBRSxXQUFxQztRQUNqRSxLQUFLLENBQUM7WUFDSixTQUFTLEVBQUUsU0FBUztZQUNwQixLQUFLLEVBQUUsb0JBQW9CO1lBQzNCLFFBQVE7WUFDUixXQUFXO1lBQ1gsTUFBTSxFQUFFLEVBQUU7U0FDWCxDQUFDLENBQUE7UUEyZ0JJLHNCQUFpQixHQUFHLENBQUMsS0FBMEIsRUFBaUIsRUFBRSxDQUFDLGlDQUN0RSxJQUFJLENBQUMsS0FBSyxFQUFFLENBQUMsWUFBWSxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsV0FBVyxFQUFFLFVBQVUsQ0FBQyxDQUFDLEtBQ25GLFNBQVMsRUFBRSxPQUFPLEtBQUssQ0FBQyxVQUFVLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQy9GLFNBQVMsRUFBRSxPQUFPLEtBQUssQ0FBQyxVQUFVLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxVQUFVLEVBQy9GLFFBQVEsRUFBRSxLQUFLLENBQUMsU0FBUyxFQUN6QixPQUFPLEVBQUUsS0FBSyxDQUFDLFFBQVEsSUFDdkIsQ0FBQTtRQUVNLHVCQUFrQixHQUFHLENBQUMsTUFBcUIsRUFBdUIsRUFBRSxDQUFDLGlDQUN4RSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUMsV0FBVyxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUFFLFNBQVMsQ0FBQyxDQUFDLEtBQy9FLFNBQVMsRUFBRSxNQUFNLENBQUMsUUFBUSxFQUMxQixRQUFRLEVBQUUsTUFBTSxDQUFDLE9BQU8sSUFDeEIsQ0FBQTtRQXJoQkEsTUFBTSxZQUFZLEdBQThDO1lBQzlELEVBQUUsRUFBRSxFQUFFLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxFQUFFLEVBQUU7WUFDdEYsRUFBRSxXQUFXLEVBQUUsRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLEVBQUU7WUFDL0MsRUFBRSxTQUFTLEVBQUUsRUFBRSxVQUFVLEVBQUUsaUJBQWlCLEVBQUUsRUFBRTtZQUNoRCxFQUFFLElBQUksRUFBRSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUNoQyxFQUFFLEdBQUcsRUFBRSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsRUFBRTtZQUM5QixFQUFFLEdBQUcsRUFBRSxFQUFFLFVBQVUsRUFBRSxLQUFLLEVBQUUsRUFBRTtZQUM5QixPQUFPO1lBQ1AsRUFBRSxTQUFTLEVBQUUsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLEVBQUU7WUFDM0M7Z0JBQ0UsV0FBVyxFQUFFO29CQUNYLFVBQVUsRUFBRSxhQUFhO29CQUN6QixJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUUsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO3dCQUM1QixXQUFXO3dCQUNYLGFBQWEsRUFBRSxJQUFJLENBQUMsYUFBYTt3QkFDakMsVUFBVSxFQUFFLElBQUksQ0FBQyxZQUFZO3dCQUM3QixRQUFRLEVBQUUsSUFBSSxDQUFDLFVBQVU7d0JBQ3pCLEtBQUssRUFBRSxJQUFJLENBQUMsaUJBQWlCO3FCQUM5QixDQUFDO29CQUNGLGNBQWMsRUFBRSxDQUFDLFFBQVEsRUFBRSxFQUFFO3dCQUMzQixNQUFNLE9BQU8sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUFBO3dCQUUvQyxpRkFDSyxDQUFDLENBQUEsT0FBTyxhQUFQLE9BQU8sdUJBQVAsT0FBTyxDQUFFLFdBQVcsS0FBSSxFQUFFLFdBQVcsRUFBRSxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUMsR0FDOUQsQ0FBQyxPQUFPLENBQUMsYUFBYSxJQUFJLEVBQUUsYUFBYSxFQUFFLE9BQU8sQ0FBQyxhQUFhLEVBQUUsQ0FBQyxHQUNuRSxDQUFDLE9BQU8sQ0FBQyxVQUFVLElBQUk7NEJBQ3hCLFlBQVksRUFBRSxPQUFPLENBQUMsVUFBVTt5QkFDakMsQ0FBQyxHQUNDLENBQUMsT0FBTyxDQUFDLFFBQVEsSUFBSTs0QkFDdEIsVUFBVSxFQUFFLE9BQU8sQ0FBQyxRQUFRO3lCQUM3QixDQUFDLEdBQ0MsQ0FBQyxPQUFPLENBQUMsS0FBSyxJQUFJOzRCQUNuQixpQkFBaUIsRUFBRSxPQUFPLENBQUMsS0FBSzt5QkFDakMsQ0FBQyxFQUNIO29CQUNILENBQUM7b0JBQ0QsZUFBZSxFQUFFLENBQUMsZUFBZSxFQUFFLEVBQUUsQ0FBQywyRUFDakMsQ0FBQyxDQUFBLGVBQWUsYUFBZixlQUFlLHVCQUFmLGVBQWUsQ0FBRSxXQUFXLEtBQUksRUFBRSxXQUFXLEVBQUUsZUFBZSxDQUFDLFdBQVcsRUFBRSxDQUFDLEdBQzlFLENBQUMsZUFBZSxDQUFDLGFBQWEsSUFBSSxFQUFFLGFBQWEsRUFBRSxlQUFlLENBQUMsYUFBYSxFQUFFLENBQUMsR0FDbkYsQ0FBQyxlQUFlLENBQUMsVUFBVSxJQUFJO3dCQUNoQyxZQUFZLEVBQUUsZUFBZSxDQUFDLFVBQVU7cUJBQ3pDLENBQUMsR0FDQyxDQUFDLGVBQWUsQ0FBQyxRQUFRLElBQUksRUFBRSxVQUFVLEVBQUUsZUFBZSxDQUFDLFFBQVEsRUFBRSxDQUFDLEdBQ3RFLENBQUMsZUFBZSxDQUFDLEtBQUssSUFBSSxFQUFFLGlCQUFpQixFQUFFLGVBQWUsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxFQUMxRTtpQkFDSDthQUNGO1lBQ0QsRUFBRSxhQUFhLEVBQUUsRUFBRSxVQUFVLEVBQUUsZUFBZSxFQUFFLEVBQUU7WUFDbEQsRUFBRSxVQUFVLEVBQUUsRUFBRSxVQUFVLEVBQUUsY0FBYyxFQUFFLEVBQUU7WUFDOUMsRUFBRSxRQUFRLEVBQUUsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLEVBQUU7WUFDMUMsRUFBRSxnQkFBZ0IsRUFBRSxFQUFFLFVBQVUsRUFBRSxtQkFBbUIsRUFBRSxFQUFFO1lBQ3pELEVBQUUsV0FBVyxFQUFFLEVBQUUsVUFBVSxFQUFFLGNBQWMsRUFBRSxFQUFFO1lBQy9DO2dCQUNFLE1BQU0sRUFBRTtvQkFDTixVQUFVLEVBQUUsUUFBUTtvQkFDcEIsRUFBRSxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUUsV0FBQyxPQUFBLENBQUMsQ0FBQSxLQUFLLGFBQUwsS0FBSyx1QkFBTCxLQUFLLENBQUUsTUFBTSxJQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFBLE1BQUEsS0FBSyxhQUFMLEtBQUssdUJBQUwsS0FBSyxDQUFFLElBQUksK0NBQVgsS0FBSyxFQUFTLEtBQUssQ0FBQyxLQUFJLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQSxFQUFBO2lCQUNoRjthQUNGO1lBQ0Q7Z0JBQ0UsVUFBVSxFQUFFO29CQUNWLFVBQVUsRUFBRSxZQUFZO29CQUN4QixFQUFFLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxXQUFDLE9BQUEsQ0FBQyxDQUFBLEtBQUssYUFBTCxLQUFLLHVCQUFMLEtBQUssQ0FBRSxNQUFNLElBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUEsTUFBQSxLQUFLLGFBQUwsS0FBSyx1QkFBTCxLQUFLLENBQUUsSUFBSSwrQ0FBWCxLQUFLLEVBQVMsS0FBSyxDQUFDLEtBQUksRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFBLEVBQUE7aUJBQ2hGO2FBQ0Y7WUFDRCxNQUFNO1lBQ047Z0JBQ0UsS0FBSyxFQUFFO29CQUNMLFVBQVUsRUFBRSxPQUFPO29CQUNuQixJQUFJLEVBQUUsQ0FBQyxLQUFLLEVBQUUsSUFBSSxFQUFhLEVBQUUsQ0FBQyxDQUFDO3dCQUNqQyxLQUFLO3dCQUNMLFNBQVMsRUFBRSxJQUFJLENBQUMsVUFBVTt3QkFDMUIsNEJBQTRCLEVBQUUsSUFBSSxDQUFDLDhCQUE4Qjt3QkFDakUsZUFBZSxFQUFFLElBQUksQ0FBQyxnQkFBZ0I7cUJBQ3ZDLENBQUM7b0JBQ0YsY0FBYyxFQUFFLENBQUMsUUFBUSxFQUFFLEVBQUU7d0JBQzNCLE1BQU0sT0FBTyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUE7d0JBRS9DLG1FQUNLLENBQUMsQ0FBQyxDQUFBLE9BQU8sYUFBUCxPQUFPLHVCQUFQLE9BQU8sQ0FBRSxLQUFLLEtBQUksQ0FBQSxPQUFPLGFBQVAsT0FBTyx1QkFBUCxPQUFPLENBQUUsS0FBSyxNQUFLLENBQUMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxHQUN0RSxDQUFDLENBQUMsT0FBTyxDQUFDLFNBQVMsSUFBSSxPQUFPLENBQUMsU0FBUyxLQUFLLENBQUMsQ0FBQyxJQUFJLEVBQUUsVUFBVSxFQUFFLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQyxHQUNyRixDQUFDLENBQUMsT0FBTyxDQUFDLDRCQUE0QixJQUFJLE9BQU8sQ0FBQyw0QkFBNEIsS0FBSyxDQUFDLENBQUMsSUFBSTs0QkFDMUYsOEJBQThCLEVBQUUsT0FBTyxDQUFDLDRCQUE0Qjt5QkFDckUsQ0FBQyxHQUNDLENBQUMsQ0FBQyxPQUFPLENBQUMsZUFBZSxJQUFJLE9BQU8sQ0FBQyxlQUFlLEtBQUssQ0FBQyxDQUFDLElBQUk7NEJBQ2hFLGdCQUFnQixFQUFFLE9BQU8sQ0FBQyxlQUFlO3lCQUMxQyxDQUFDLEVBQ0g7b0JBQ0gsQ0FBQztvQkFDRCxlQUFlLEVBQUUsQ0FBQyxTQUFTLEVBQUUsRUFBRSxDQUFDLDZEQUMzQixDQUFDLENBQUEsU0FBUyxhQUFULFNBQVMsdUJBQVQsU0FBUyxDQUFFLEtBQUssS0FBSSxDQUFDLElBQUksRUFBRSxLQUFLLEVBQUUsU0FBUyxDQUFDLEtBQUssRUFBRSxDQUFDLEdBQ3JELENBQUMsU0FBUyxDQUFDLFNBQVMsSUFBSSxDQUFDLElBQUksRUFBRSxVQUFVLEVBQUUsU0FBUyxDQUFDLFNBQVMsRUFBRSxDQUFDLEdBQ2pFLENBQUMsU0FBUyxDQUFDLDRCQUE0QixJQUFJLENBQUMsSUFBSTt3QkFDakQsOEJBQThCLEVBQUUsU0FBUyxDQUFDLDRCQUE0QjtxQkFDdkUsQ0FBQyxHQUNDLENBQUMsU0FBUyxDQUFDLGVBQWUsSUFBSSxDQUFDLElBQUksRUFBRSxnQkFBZ0IsRUFBRSxTQUFTLENBQUMsZUFBZSxFQUFFLENBQUMsRUFDdEY7aUJBQ0g7YUFDRjtZQUNELEVBQUUsU0FBUyxFQUFFLEVBQUUsVUFBVSxFQUFFLFlBQVksRUFBRSxFQUFFO1lBQzNDLEVBQUUsNEJBQTRCLEVBQUUsRUFBRSxVQUFVLEVBQUUsZ0NBQWdDLEVBQUUsRUFBRTtZQUNsRixFQUFFLGVBQWUsRUFBRSxFQUFFLFVBQVUsRUFBRSxrQkFBa0IsRUFBRSxFQUFFO1lBQ3ZELFdBQVc7WUFDWCxLQUFLO1lBQ0w7Z0JBQ0UsS0FBSyxFQUFFO29CQUNMLFVBQVUsRUFBRSxPQUFPO29CQUNuQixJQUFJLEVBQUUsQ0FBQyxRQUFnQixFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsUUFBUSxFQUFFLENBQUM7b0JBQzFDLEVBQUUsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxhQUFMLEtBQUssdUJBQUwsS0FBSyxDQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssYUFBTCxLQUFLLHVCQUFMLEtBQUssQ0FBRSxRQUFRLENBQUM7aUJBQ2xFO2FBQ0Y7WUFDRCxNQUFNO1lBQ04sTUFBTTtZQUNOLE9BQU87WUFDUCxRQUFRO1lBQ1IsUUFBUTtZQUNSLEVBQUUsSUFBSSxFQUFFLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsdUJBQXVCLENBQUMsS0FBSyxFQUFFLEVBQUU7WUFDckUsRUFBRSxLQUFLLEVBQUUsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLEVBQUU7WUFDbkMsRUFBRSxTQUFTLEVBQUUsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLEVBQUU7WUFDM0MsRUFBRSxTQUFTLEVBQUUsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLEVBQUU7WUFDM0M7Z0JBQ0UsSUFBSSxFQUFFO29CQUNKLFVBQVUsRUFBRSxtQkFBbUI7b0JBQy9CLE9BQU8sRUFBRTt3QkFDUCxPQUFPLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFO3dCQUN6QixVQUFVLEVBQUUseUJBQXlCO3FCQUN0QztvQkFDRCxNQUFNLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxDQUFDLEVBQUUsR0FBRyxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUM7b0JBQzVDLElBQUksRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsSUFBSTtpQkFDMUM7YUFDRjtZQUNELEVBQUUsYUFBYSxFQUFFLEVBQUUsVUFBVSxFQUFFLGdCQUFnQixFQUFFLEVBQUU7U0FDcEQsQ0FBQTtRQUVELElBQUksQ0FBQyxNQUFNLEdBQUc7WUFDWixHQUFHLFlBQVk7WUFDZjtnQkFDRSxVQUFVLEVBQUU7b0JBQ1YsVUFBVSxFQUFFLFlBQVk7b0JBQ3hCLE1BQU0sRUFBRSxDQUFDLGFBQWEsQ0FBQztvQkFDdkIsZUFBZSxFQUFFLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDO3dCQUMzQixVQUFVLEVBQUUsRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLFdBQVcsRUFBRSxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUMsRUFBRTtxQkFDNUUsQ0FBQztvQkFDRixFQUFFLEVBQUUsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLENBQUMsVUFBVSxDQUFDO29CQUMvRCxJQUFJLEVBQUUsQ0FBQyxVQUFxQyxFQUFFLEVBQUUsQ0FDOUMsQ0FBQSxVQUFVLGFBQVYsVUFBVSx1QkFBVixVQUFVLENBQUUsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsV0FBQyxPQUFBLE1BQUEsUUFBUSxhQUFSLFFBQVEsdUJBQVIsUUFBUSxDQUFFLFdBQVcsMENBQUUsUUFBUSxFQUFFLENBQUEsRUFBQSxDQUFDLEtBQUksRUFBRTtpQkFDekU7YUFDRjtZQUNEO2dCQUNFLFdBQVcsRUFBRTtvQkFDWCxVQUFVLEVBQUUsY0FBYztvQkFDMUIsZ0JBQWdCLEVBQUUsRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFO29CQUNyQyxNQUFNLEVBQUU7d0JBQ04sRUFBRSxTQUFTLEVBQUUsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLEVBQUU7d0JBQzNDLEVBQUUsWUFBWSxFQUFFLEVBQUUsVUFBVSxFQUFFLGdCQUFnQixFQUFFLEVBQUU7d0JBQ2xELFVBQVU7d0JBQ1YsRUFBRSxPQUFPLEVBQUUsRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLGdCQUFnQixFQUFFLEVBQUUsRUFBRSxFQUFFLFlBQVksRUFBRSxFQUFFLE1BQU0sRUFBRSxZQUFZLEVBQUUsRUFBRTtxQkFDckc7aUJBQ0Y7YUFDRjtZQUNEO2dCQUNFLE9BQU8sRUFBRTtvQkFDUCxVQUFVLEVBQUUsU0FBUztvQkFDckIsZ0JBQWdCLEVBQUUsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFO29CQUN0QyxNQUFNLEVBQUUsSUFBSSxDQUFDLGFBQWE7aUJBQzNCO2FBQ0Y7WUFDRDtnQkFDRSxRQUFRLEVBQUU7b0JBQ1IsVUFBVSxFQUFFLFVBQVU7b0JBQ3RCLE1BQU0sRUFBRSxDQUFDLE9BQU8sRUFBRSxhQUFhLENBQUM7b0JBQ2hDLGVBQWUsRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQzt3QkFDM0IsUUFBUSxFQUFFLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRTtxQkFDMUIsQ0FBQztpQkFDSDthQUNGO1NBQ0YsQ0FBQTtJQUNILENBQUM7SUE1TUQsSUFBWSxhQUFhO1FBQ3ZCLE9BQU87WUFDTCxJQUFJO1lBQ0osTUFBTTtZQUNOLE1BQU07WUFDTixRQUFRO1lBQ1IsT0FBTztZQUNQLFVBQVU7WUFDVixRQUFRO1lBQ1IsUUFBUTtZQUNSLE9BQU87WUFDUCxFQUFFLFFBQVEsRUFBRSxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsRUFBRTtZQUN6QyxRQUFRO1lBQ1IsRUFBRSxPQUFPLEVBQUUsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLEVBQUU7WUFDdkMsRUFBRSxTQUFTLEVBQUUsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLEVBQUU7WUFDM0MsRUFBRSxTQUFTLEVBQUUsRUFBRSxVQUFVLEVBQUUsWUFBWSxFQUFFLEVBQUU7U0FDNUMsQ0FBQTtJQUNILENBQUM7SUE2TEssTUFBTSxDQUFDLE1BQW9EOzs7OztZQUMvRCxNQUFNLEVBQUUsUUFBUSxLQUFjLE1BQU0sRUFBZixJQUFJLFVBQUssTUFBTSxFQUE5QixZQUFxQixDQUFTLENBQUE7WUFDcEMsTUFBTSxPQUFPLEdBQUcsTUFBTSxPQUFNLE1BQU0sWUFDaEMsSUFBSSxpQ0FBTSxJQUFJLEtBQUUsUUFBUSxFQUFFLFFBQVEsSUFBSSxFQUFFLFdBQVcsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FDekYsQ0FBQTtZQUVELElBQUk7Z0JBQ0YsT0FBTyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsYUFBYSxDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFBO2FBQ2hGO1lBQUMsT0FBTyxLQUFLLEVBQUU7Z0JBQ2QsTUFBTSxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxFQUFFLE9BQU8sQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFBO2dCQUVyQyxNQUFNLEtBQUssQ0FBQTthQUNaO1lBRUQsT0FBTyxPQUFPLENBQUE7UUFDaEIsQ0FBQztLQUFBO0lBRUssR0FBRyxDQUFDLFdBQXNEOzs7Ozs7WUFDOUQsTUFBTSxPQUFPLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLFdBQVcsQ0FBQyxFQUFFLENBQUM7Z0JBQzNDLENBQUMsQ0FBQyxNQUFBLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsT0FBTyxFQUFFLEVBQUUsV0FBVyxFQUFFLFdBQVcsQ0FBQyxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSwwQ0FBRyxDQUFDLENBQUM7Z0JBQzVHLENBQUMsQ0FBQyxNQUFNLE9BQU0sR0FBRyxZQUFDLFdBQVcsQ0FBQyxDQUFBO1lBRWhDLElBQUksT0FBTyxDQUFDLFNBQVM7Z0JBQUUsTUFBTSxJQUFJLGFBQWEsQ0FBQyxvQ0FBb0MsQ0FBQyxDQUFBO1lBRXBGLE9BQU8sQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLG9CQUFvQixDQUFDLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUE7WUFFbkYsT0FBTyxPQUFPLENBQUE7O0tBQ2Y7SUFFSyxJQUFJLENBQUMsTUFBbUQ7Ozs7O1lBQzVELE1BQU0sS0FBa0MsTUFBTSxJQUFJLEVBQUUsRUFBOUMsRUFBRSxPQUFPLEVBQUUsTUFBTSxPQUE2QixFQUF4QixPQUFPLGNBQTdCLHFCQUErQixDQUFlLENBQUE7WUFDcEQsTUFBTSxVQUFVLEdBQ2QsTUFBTTtnQkFDTCxJQUFJLENBQUMsTUFBTTtxQkFDVCxHQUFHLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsT0FBTyxLQUFLLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQztxQkFDaEYsTUFBTSxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxLQUFLLEtBQUssU0FBUyxDQUdwQyxDQUFBO1lBRU4sT0FBTyxPQUFNLElBQUksNENBQ1osT0FBTyxLQUNWLE9BQU8sa0NBQU8sT0FBTyxLQUFFLFNBQVMsRUFBRSxFQUFFLFFBQVEsRUFBRSxLQUFLLENBQUMsTUFBTSxFQUFFLEtBQzVELE1BQU0sRUFBRSxVQUFVLEtBQ2xCO1FBQ0osQ0FBQztLQUFBO0lBRUssU0FBUyxDQUFDLElBQVk7OztZQUMxQixNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUM7Z0JBQzdCLE9BQU8sRUFBRTtvQkFDUCxJQUFJO2lCQUNMO2dCQUNELE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQ2hDLE9BQU8sS0FBSyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssRUFBRSxDQUNpQjtnQkFDakYsT0FBTyxFQUFFO29CQUNQLFdBQVcsRUFBRSxLQUFLO2lCQUNuQjthQUNGLENBQUMsQ0FBQTtZQUVGLE1BQU0sT0FBTyxHQUFHLE1BQUEsTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLElBQUksMENBQUUsS0FBSyxFQUFFLENBQUE7WUFFckMsT0FBTyxPQUFPLENBQUE7O0tBQ2Y7SUFFSyxNQUFNLENBQUMsTUFBb0Q7Ozs7O1lBQy9ELE1BQU0sRUFBRSxVQUFVLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxRQUFRLEtBQWMsTUFBTSxFQUFmLElBQUksVUFBSyxNQUFNLEVBQW5GLGtFQUEwRSxDQUFTLENBQUE7WUFDekYsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFBO1lBQ3JELE1BQU0sRUFBRSxHQUFHLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLENBQUE7WUFDekMsTUFBTSxPQUFPLEdBQUcsTUFBTSxPQUFNLE1BQU0sNEJBQUcsRUFBRSxJQUFLLElBQUksRUFBRyxDQUFBO1lBRW5ELE9BQU8sQ0FBQyxVQUFVLEdBQUcsVUFBVSxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQUE7WUFDckYsT0FBTyxDQUFDLFdBQVcsR0FBRyxXQUFXLElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUMsQ0FBQTtZQUN6RixPQUFPLENBQUMsT0FBTyxHQUFHLE9BQU8sSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUMsQ0FBQTtZQUN6RSxPQUFPLENBQUMsUUFBUSxHQUFHLFFBQVEsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFLFFBQVEsRUFBRSxDQUFDLENBQUMsQ0FBQTtZQUU3RSxPQUFPLE9BQU8sQ0FBQTtRQUNoQixDQUFDO0tBQUE7SUFFSyxZQUFZLENBQUMsTUFBMEI7O1lBQzNDLE1BQU0saUJBQWlCLEdBQUc7Z0JBQ3hCLE1BQU0sRUFDSixNQUFNLEtBQUssU0FBUztvQkFDbEIsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsRUFBRSxJQUFJLEVBQUU7b0JBQ3ZDLENBQUMsQ0FBQyxFQUFFLENBQUMsa0JBQWtCLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxLQUFLLFVBQVUsRUFBRTthQUM3RCxDQUFBO1lBQ0QsTUFBTSxFQUFFLE9BQU8sRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLElBQUksQ0FBQyxLQUFLLENBQ3hDLFNBQVMsRUFDVCxDQUFDLElBQUksRUFBRSxNQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUUsT0FBTyxFQUFFLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsSUFBSSxDQUFDLGFBQWEsRUFBRSxFQUFFLENBQUMsRUFDekY7Z0JBQ0UsS0FBSyxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsT0FBTyxFQUFFLGlCQUFpQixFQUFFLEVBQUUsSUFBSSxFQUFFLGtCQUFrQixFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7YUFDM0YsQ0FDRixDQUFBO1lBRUQsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUNoQixDQUFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDO2dCQUNwQixHQUFHLE9BQU87Z0JBQ1YsR0FBRyxPQUFPLENBQUMsT0FBTztxQkFDZixNQUFNLENBQ0wsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUNULENBQUMsTUFBTSxLQUFLLFNBQVMsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDO29CQUNuRSxDQUFDLE1BQU0sS0FBSyxVQUFVLElBQUksTUFBTSxDQUFDLE1BQU0sS0FBSyxJQUFJLENBQUM7b0JBQ2pELENBQUMsTUFBTSxLQUFLLFVBQVUsSUFBSSxNQUFNLENBQUMsTUFBTSxLQUFLLEtBQUssQ0FBQyxDQUNyRDtxQkFDQSxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRSxDQUFDLGlDQUNaLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxNQUFNLENBQUMsS0FDakMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxFQUFFLEVBQ3JCLFdBQVcsRUFBRSxPQUFPLENBQUMsSUFBSSxFQUN6QixVQUFVLEVBQUUsT0FBTyxDQUFDLEdBQUcsSUFDdkIsQ0FBQzthQUNOLEVBQ0QsRUFBNkIsQ0FDOUIsQ0FBQTtRQUNILENBQUM7S0FBQTtJQUVhLGdCQUFnQixDQUM1QixTQUFpQixFQUNqQixFQUFFLFVBQVUsRUFBb0U7O1lBRWhGLElBQUksUUFBUSxJQUFJLFVBQVUsSUFBSSxVQUFVLENBQUMsTUFBTSxLQUFLLFFBQVEsRUFBRTtnQkFDNUQsTUFBTSxJQUFJLENBQUMsUUFBUSxDQUFDLHlCQUF5QixFQUFFLENBQUMsZUFBZSxDQUFDLEVBQUU7b0JBQ2hFLEtBQUssRUFBRTt3QkFDTCxJQUFJLEVBQUUsMkJBQTJCO3dCQUNqQyxRQUFRLEVBQUUsSUFBSTt3QkFDZCxLQUFLLEVBQUUsRUFBRSxVQUFVLEVBQUUsRUFBRSxHQUFHLEVBQUUsU0FBUyxFQUFFLEVBQUU7cUJBQzFDO2lCQUNGLENBQUMsQ0FBQTtnQkFFRixPQUFPLEVBQUUsQ0FBQTthQUNWO1lBRUQsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUE7WUFFcEQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLElBQUksU0FBUyxDQUFDLFVBQVUsQ0FBQyxNQUFNLElBQUksQ0FBQztnQkFBRSxPQUFPLEVBQUUsQ0FBQTtZQUV4RSxNQUFNLElBQUksQ0FBQyxRQUFRLENBQUMseUJBQXlCLEVBQUUsQ0FBQyxlQUFlLENBQUMsRUFBRTtnQkFDaEUsS0FBSyxFQUFFO29CQUNMLElBQUksRUFBRSwyQkFBMkI7b0JBQ2pDLFFBQVEsRUFBRSxJQUFJO29CQUNkLEtBQUssRUFBRSxFQUFFLFVBQVUsRUFBRSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsRUFBRTtpQkFDMUM7YUFDRixDQUFDLENBQUE7WUFFRixNQUFNLElBQUksQ0FBQyxRQUFRLENBQUMseUJBQXlCLEVBQUUsQ0FBQyxlQUFlLENBQUMsRUFBRTtnQkFDaEUsT0FBTyxFQUFFO29CQUNQLElBQUksRUFBRSxrQ0FBa0M7b0JBQ3hDLFFBQVEsRUFBRSxJQUFJO29CQUNkLEtBQUssRUFBRSxTQUFTLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFVBQVUsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLFdBQVcsRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUM7aUJBQ3RHO2FBQ0YsQ0FBQyxDQUFBO1lBRUYsT0FBTyxTQUFTLENBQUMsVUFBVSxDQUFBO1FBQzdCLENBQUM7S0FBQTtJQUVhLGlCQUFpQixDQUM3QixTQUFpQixFQUNqQixFQUFFLFdBQVcsRUFBcUU7O1lBRWxGLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsRUFBRSxXQUFXLEVBQUUsQ0FBQyxDQUFBO1lBRXJELE1BQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQyxvQkFBb0IsRUFBRSxDQUFDLGVBQWUsQ0FBQyxFQUFFO2dCQUMzRCxLQUFLLEVBQUU7b0JBQ0wsSUFBSSxFQUFFLHNCQUFzQjtvQkFDNUIsUUFBUSxFQUFFLElBQUk7b0JBQ2QsS0FBSyxFQUFFLEVBQUUsY0FBYyxFQUFFLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxFQUFFO2lCQUM5QzthQUNGLENBQUMsQ0FBQTtZQUVGLE1BQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQyxvQkFBb0IsRUFBRSxDQUFDLGVBQWUsQ0FBQyxFQUFFO2dCQUMzRCxPQUFPLEVBQUU7b0JBQ1AsSUFBSSxFQUFFLDZCQUE2QjtvQkFDbkMsUUFBUSxFQUFFLElBQUk7b0JBQ2QsS0FBSyxFQUFFLFNBQVMsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDLENBQUMsVUFBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDO3dCQUNoRCxjQUFjLEVBQUUsU0FBUzt3QkFDekIsVUFBVSxFQUFFLFVBQVUsQ0FBQyxTQUFTLElBQUksVUFBVSxDQUFDLE9BQU8sQ0FBQyxFQUFFO3dCQUN6RCxRQUFRLEVBQUUsVUFBVSxDQUFDLFFBQVE7cUJBQzlCLENBQUMsQ0FBQztpQkFDSjthQUNGLENBQUMsQ0FBQTtZQUVGLE9BQU8sU0FBUyxDQUFDLFdBQVcsQ0FBQTtRQUM5QixDQUFDO0tBQUE7SUFFYSxhQUFhLENBQ3pCLFNBQWlCLEVBQ2pCLEVBQUUsT0FBTyxFQUFpRTs7WUFFMUUsSUFBSSxDQUFDLE9BQU87Z0JBQUUsT0FBTyxFQUFFLENBQUE7WUFDdkIsSUFBSSxRQUFRLElBQUksT0FBTyxJQUFJLE9BQU8sQ0FBQyxNQUFNLEtBQUssUUFBUSxFQUFFO2dCQUN0RCxNQUFNLFNBQVMsR0FBRyxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQ2pDLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQU8sVUFBVSxFQUFFLEVBQUU7b0JBQ3JDLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLEVBQUUsU0FBUyxDQUFDLENBQUE7b0JBRTNELE9BQU8sTUFBTSxhQUFOLE1BQU0sdUJBQU4sTUFBTSxDQUFFLEVBQUUsQ0FBQTtnQkFDbkIsQ0FBQyxDQUFBLENBQUMsQ0FDSCxDQUFBO2dCQUVELE1BQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQyx1QkFBdUIsRUFBRSxDQUFDLGVBQWUsQ0FBQyxFQUFFO29CQUM5RCxLQUFLLEVBQUUsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsU0FBUyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFLEVBQUUsSUFBSSxFQUFFLHlCQUF5QixFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUU7aUJBQzlHLENBQUMsQ0FBQTtnQkFFRixPQUFPLE9BQU8sQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLElBQUksTUFBTSxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFBO2FBQ3pGO1lBRUQsTUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUE7WUFFakQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLElBQUksU0FBUyxDQUFDLE9BQU8sQ0FBQyxNQUFNLElBQUksQ0FBQztnQkFBRSxPQUFPLEVBQUUsQ0FBQTtZQUVsRSxPQUFPLE9BQU8sQ0FBQyxHQUFHLENBQ2hCLFNBQVMsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQU8sVUFBVSxFQUFFLEVBQUU7Z0JBQ3pDLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLEVBQUUsU0FBUyxDQUFDLENBQUE7Z0JBRTNELElBQUksTUFBTSxDQUFDLEVBQUU7b0JBQ1gsT0FBTyxJQUFJLENBQUMsaUJBQWlCLENBQzNCLENBQ0UsTUFBTSxJQUFJLENBQUMsUUFBUSxDQUFDLDZCQUE2QixFQUFFLElBQUksQ0FBQyxhQUFhLEVBQUU7d0JBQ3JFLFVBQVUsRUFBRTs0QkFDVixLQUFLLEVBQUUsRUFBRSxFQUFFLEVBQUUsTUFBTSxDQUFDLEVBQUUsRUFBRTs0QkFDeEIsSUFBSSxFQUFFLGlDQUFpQzs0QkFDdkMsUUFBUSxFQUFFLElBQUk7eUJBQ2Y7d0JBQ0QsSUFBSSxFQUFFOzRCQUNKLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUMsSUFBSSxFQUFFLFlBQVksQ0FBQyxDQUFDOzRCQUN0RSxJQUFJLEVBQUUsMEJBQTBCOzRCQUNoQyxRQUFRLEVBQUUsSUFBSTt5QkFDZjtxQkFDRixDQUFDLENBQ0gsQ0FBQywyQkFBMkIsQ0FDOUIsQ0FBQTtnQkFFSCxPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FDM0IsQ0FDRSxNQUFNLElBQUksQ0FBQyxRQUFRLENBQUMsMkJBQTJCLEVBQUUsSUFBSSxDQUFDLGFBQWEsRUFBRTtvQkFDbkUsTUFBTSxFQUFFO3dCQUNOLEtBQUssRUFBRSxJQUFJLGlDQUFNLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxVQUFVLENBQUMsS0FBRSxVQUFVLEVBQUUsU0FBUyxLQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7d0JBQ3RGLElBQUksRUFBRSw2QkFBNkI7d0JBQ25DLFFBQVEsRUFBRSxJQUFJO3FCQUNmO2lCQUNGLENBQUMsQ0FDSCxDQUFDLHlCQUF5QixDQUM1QixDQUFBO1lBQ0gsQ0FBQyxDQUFBLENBQUMsQ0FDSCxDQUFBO1FBQ0gsQ0FBQztLQUFBO0lBRWEsY0FBYyxDQUMxQixTQUFpQixFQUNqQixFQUFFLFFBQVEsRUFBa0U7O1lBRTVFLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFBO1lBRWxELElBQUksQ0FBQyxTQUFTLENBQUMsUUFBUTtnQkFBRSxPQUFNO1lBRS9CLE1BQU0sSUFBSSxDQUFDLFFBQVEsQ0FBQywrQkFBK0IsRUFBRSxDQUFDLFlBQVksQ0FBQyxFQUFFO2dCQUNuRSxVQUFVLEVBQUU7b0JBQ1YsS0FBSyxFQUFFLEVBQUUsVUFBVSxFQUFFLFNBQVMsRUFBRTtvQkFDaEMsSUFBSSxFQUFFLG1DQUFtQztvQkFDekMsUUFBUSxFQUFFLElBQUk7aUJBQ2Y7Z0JBQ0QsSUFBSSxFQUFFO29CQUNKLEtBQUssRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUMsWUFBWSxDQUFDLENBQUM7b0JBQ3JDLElBQUksRUFBRSw0QkFBNEI7b0JBQ2xDLFFBQVEsRUFBRSxJQUFJO2lCQUNmO2FBQ0YsQ0FBQyxDQUFBO1lBRUYsT0FBTyxTQUFTLENBQUMsUUFBUSxDQUFBO1FBQzNCLENBQUM7S0FBQTtJQUVhLEtBQUssQ0FBQyxFQUFVOzs7WUFDNUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQUUsT0FBTyxFQUFFLENBQUE7WUFFakMsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLE9BQU8sRUFBRSxFQUFFLFdBQVcsRUFBRSxFQUFFLEVBQUUsRUFBRSxPQUFPLEVBQUUsRUFBRSxXQUFXLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFBO1lBRW5HLElBQUksTUFBQSxJQUFJLGFBQUosSUFBSSx1QkFBSixJQUFJLENBQUcsQ0FBQyxDQUFDLDBDQUFFLEVBQUU7Z0JBQUUsT0FBTyxNQUFBLElBQUksYUFBSixJQUFJLHVCQUFKLElBQUksQ0FBRyxDQUFDLENBQUMsMENBQUUsRUFBRSxDQUFBO1lBRXZDLE1BQU0sSUFBSSxhQUFhLENBQUMsbUJBQW1CLEVBQUUsWUFBWSxDQUFDLENBQUE7O0tBQzNEO0lBRWEsb0JBQW9CLENBQUMsU0FBaUI7O1lBQ2xELE1BQU0sRUFBRSxjQUFjLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxhQUFhLEVBQUU7Z0JBQ3RGLEtBQUssRUFBRTtvQkFDTCxLQUFLLEVBQUU7d0JBQ0wsVUFBVSxFQUFFLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRTtxQkFDL0I7b0JBQ0QsSUFBSSxFQUFFLHlCQUF5QjtvQkFDL0IsUUFBUSxFQUFFLElBQUk7aUJBQ2Y7YUFDRixDQUFDLENBQUE7WUFFRixPQUFPLElBQUksSUFBSSxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQTtRQUNyRSxDQUFDO0tBQUE7SUFFYSxVQUFVLENBQUMsTUFBcUIsRUFBRSxTQUFpQjs7WUFDL0QsSUFBSSxNQUFNLENBQUMsRUFBRTtnQkFBRSxPQUFPLE1BQU0sQ0FBQTtZQUU1QixJQUFJLFlBQTJCLENBQUE7WUFFL0IsSUFBSSxNQUFNLENBQUMsUUFBUTtnQkFBRSxZQUFZLEdBQUcsTUFBTSxJQUFJLENBQUMsbUJBQW1CLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxTQUFTLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFBO1lBQzlHLElBQUksQ0FBQyxZQUFZLElBQUksTUFBTSxDQUFDLE1BQU0sSUFBSSxNQUFNLENBQUMsS0FBSztnQkFDaEQsWUFBWSxHQUFHLE1BQU0sSUFBSSxDQUFDLHlCQUF5QixDQUFDLE1BQU0sQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLEtBQUssRUFBRSxTQUFTLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFBO1lBRTdHLE9BQU8sWUFBWSxJQUFJLE1BQU0sQ0FBQTtRQUMvQixDQUFDO0tBQUE7SUFFYSxtQkFBbUIsQ0FBQyxRQUFnQixFQUFFLFNBQWlCLEVBQUUsT0FBZ0I7O1lBQ3JGLE1BQU0sRUFBRSxjQUFjLEVBQUUsSUFBSSxFQUFFLEdBQUcsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLGdCQUFnQixFQUFFLElBQUksQ0FBQyxhQUFhLEVBQUU7Z0JBQ3RGLEtBQUssRUFBRTtvQkFDTCxLQUFLLGtCQUNILFVBQVUsRUFBRSxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsRUFDOUIsU0FBUyxFQUFFLEVBQUUsR0FBRyxFQUFFLFFBQVEsRUFBRSxJQUN6QixDQUFDLE9BQU8sSUFBSSxFQUFFLFFBQVEsRUFBRSxFQUFFLEdBQUcsRUFBRSxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQy9DO29CQUNELElBQUksRUFBRSx5QkFBeUI7b0JBQy9CLFFBQVEsRUFBRSxJQUFJO2lCQUNmO2FBQ0YsQ0FBQyxDQUFBO1lBRUYsT0FBTyxJQUFJLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUMzRCxDQUFDO0tBQUE7SUFFYSx5QkFBeUIsQ0FDckMsTUFBYyxFQUNkLEtBQWEsRUFDYixTQUFpQixFQUNqQixPQUFnQjs7WUFFaEIsTUFBTSxFQUFFLGNBQWMsRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLEVBQUUsSUFBSSxDQUFDLGFBQWEsRUFBRTtnQkFDdEYsS0FBSyxFQUFFO29CQUNMLEtBQUssa0JBQ0gsVUFBVSxFQUFFLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxFQUM5QixNQUFNLEVBQUUsRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLEVBQ3ZCLEtBQUssRUFBRSxFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsSUFDbEIsQ0FBQyxPQUFPLElBQUksRUFBRSxRQUFRLEVBQUUsRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUMvQztvQkFDRCxJQUFJLEVBQUUseUJBQXlCO29CQUMvQixRQUFRLEVBQUUsSUFBSTtpQkFDZjthQUNGLENBQUMsQ0FBQTtZQUVGLE9BQU8sSUFBSSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsSUFBSSxJQUFJLENBQUMsaUJBQWlCLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDM0QsQ0FBQztLQUFBO0NBZUYiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENyZWF0ZVJlcG9zaXRvcnlQYXJhbXMsXHJcbiAgRmluZFJlcG9zaXRvcnlQYXJhbXMsXHJcbiAgR2V0UmVwb3NpdG9yeVBhcmFtcyxcclxuICBOb25GdW5jdGlvblByb3BlcnR5TmFtZXMsXHJcbiAgUHJvZHVjdE1ldGFkYXRhLFxyXG4gIFByb2R1Y3RSZXBvc2l0b3J5LFxyXG4gIFByb2R1Y3RSZXZpZXcsXHJcbiAgUmVwb3NpdG9yeUZpbmRSZXN1bHQsXHJcbiAgUmV2aWV3U3RhdHVzUGFyYW1zLFxyXG4gIFJldmlld1dpdGhQcm9kdWN0RGF0YSxcclxuICBTaG9wUHJpY2UsXHJcbiAgU2hvcHMsXHJcbiAgVXBkYXRlUmVwb3NpdG9yeVBhcmFtcyxcclxuICBXaGVyZSxcclxufSBmcm9tICcuLi8uLi8uLi8uLi9kb21haW4nXHJcbmltcG9ydCB7IE5vdEZvdW5kRXJyb3IgfSBmcm9tICcuLi8uLi8uLi8uLi9lcnJvcnMnXHJcbmltcG9ydCB7IEJhc2UsIGlzTmlsLCBvbWl0IH0gZnJvbSAnLi4vLi4vLi4vLi4vdXRpbHMnXHJcbmltcG9ydCB7IEhhc3VyYUdyYXBoUUxDb2x1bW5UeXBlLCBIYXN1cmFHcmFwaFFMV2hlcmUgfSBmcm9tICcuLi8uLi9lbnVtcydcclxuaW1wb3J0IHsgd2l0aENydWRIYXN1cmFHcmFwaFFMLCB3aXRoSGFzdXJhR3JhcGhRTCB9IGZyb20gJy4uLy4uL21peGlucydcclxuaW1wb3J0IHsgUHJvZHVjdEhhc3VyYUdyYXBoUUwgfSBmcm9tICcuLi8uLi9tb2RlbHMnXHJcbmltcG9ydCB7IEhhc3VyYUdyYXBoUUxBdXRoT3B0aW9ucywgSGFzdXJhR3JhcGhRTEZpZWxkcyB9IGZyb20gJy4uLy4uL3R5cGVzJ1xyXG5cclxudHlwZSBQcm9kdWN0UmV2aWV3RmllbGRzID0ge1xyXG4gIGlkPzogc3RyaW5nXHJcbiAgc2hvcDogU2hvcHNcclxuICByYXRlOiBudW1iZXJcclxuICBhdXRob3I/OiBzdHJpbmdcclxuICBlbWFpbD86IHN0cmluZ1xyXG4gIGxvY2F0aW9uPzogc3RyaW5nXHJcbiAgcmV2aWV3Pzogc3RyaW5nXHJcbiAgc3RhdHVzPzogYm9vbGVhblxyXG4gIHRpdGxlPzogc3RyaW5nXHJcbiAgcGVyc29uSWQ/OiBudW1iZXJcclxuICBwb2ludHM/OiBudW1iZXJcclxuICBvcmRlcklkPzogc3RyaW5nXHJcbiAgY3JlYXRlZEF0PzogRGF0ZVxyXG4gIHVwZGF0ZWRBdD86IERhdGVcclxufVxyXG5cclxuZXhwb3J0IGNsYXNzIFByb2R1Y3RIYXN1cmFHcmFwaFFMUmVwb3NpdG9yeVxyXG4gIGV4dGVuZHMgd2l0aENydWRIYXN1cmFHcmFwaFFMKHdpdGhIYXN1cmFHcmFwaFFMPFByb2R1Y3RIYXN1cmFHcmFwaFFMPihCYXNlKSlcclxuICBpbXBsZW1lbnRzIFByb2R1Y3RSZXBvc2l0b3J5XHJcbntcclxuICBwcml2YXRlIGdldCByZXZpZXdzRmllbGRzKCk6IGFueSB7XHJcbiAgICByZXR1cm4gW1xyXG4gICAgICAnaWQnLFxyXG4gICAgICAnc2hvcCcsXHJcbiAgICAgICdyYXRlJyxcclxuICAgICAgJ2F1dGhvcicsXHJcbiAgICAgICdlbWFpbCcsXHJcbiAgICAgICdsb2NhdGlvbicsXHJcbiAgICAgICdyZXZpZXcnLFxyXG4gICAgICAnc3RhdHVzJyxcclxuICAgICAgJ3RpdGxlJyxcclxuICAgICAgeyBwZXJzb25JZDogeyBjb2x1bW5OYW1lOiAncGVyc29uX2lkJyB9IH0sXHJcbiAgICAgICdwb2ludHMnLFxyXG4gICAgICB7IG9yZGVySWQ6IHsgY29sdW1uTmFtZTogJ29yZGVyX2lkJyB9IH0sXHJcbiAgICAgIHsgY3JlYXRlZEF0OiB7IGNvbHVtbk5hbWU6ICdjcmVhdGVkX2F0JyB9IH0sXHJcbiAgICAgIHsgdXBkYXRlZEF0OiB7IGNvbHVtbk5hbWU6ICd1cGRhdGVkX2F0JyB9IH0sXHJcbiAgICBdXHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3RvcihlbmRwb2ludDogc3RyaW5nLCBhdXRoT3B0aW9uczogSGFzdXJhR3JhcGhRTEF1dGhPcHRpb25zKSB7XHJcbiAgICBzdXBlcih7XHJcbiAgICAgIHRhYmxlTmFtZTogJ3Byb2R1Y3QnLFxyXG4gICAgICBtb2RlbDogUHJvZHVjdEhhc3VyYUdyYXBoUUwsXHJcbiAgICAgIGVuZHBvaW50LFxyXG4gICAgICBhdXRoT3B0aW9ucyxcclxuICAgICAgZmllbGRzOiBbXSxcclxuICAgIH0pXHJcblxyXG4gICAgY29uc3QgY29tbW9uRmllbGRzOiBIYXN1cmFHcmFwaFFMRmllbGRzPFByb2R1Y3RIYXN1cmFHcmFwaFFMPiA9IFtcclxuICAgICAgeyBpZDogeyBjb2x1bW5OYW1lOiAnaWQnLCB0bzogKHZhbHVlKSA9PiArdmFsdWUsIGZyb206ICh2YWx1ZSkgPT4gdmFsdWUudG9TdHJpbmcoKSB9IH0sXHJcbiAgICAgIHsgZmlyZXN0b3JlSWQ6IHsgY29sdW1uTmFtZTogJ2ZpcmVzdG9yZV9pZCcgfSB9LFxyXG4gICAgICB7IHByb2R1Y3RJZDogeyBjb2x1bW5OYW1lOiAnbWFpbl9wcm9kdWN0X2lkJyB9IH0sXHJcbiAgICAgIHsgQ0VTVDogeyBjb2x1bW5OYW1lOiAnY2VzdCcgfSB9LFxyXG4gICAgICB7IEVBTjogeyBjb2x1bW5OYW1lOiAnZWFuJyB9IH0sXHJcbiAgICAgIHsgTkNNOiB7IGNvbHVtbk5hbWU6ICduY20nIH0gfSxcclxuICAgICAgJ2JyYW5kJyxcclxuICAgICAgeyBjb3N0UHJpY2U6IHsgY29sdW1uTmFtZTogJ2Nvc3RfcHJpY2UnIH0gfSxcclxuICAgICAge1xyXG4gICAgICAgIGRlc2NyaXB0aW9uOiB7XHJcbiAgICAgICAgICBjb2x1bW5OYW1lOiAnZGVzY3JpcHRpb24nLFxyXG4gICAgICAgICAgZnJvbTogKGRlc2NyaXB0aW9uLCBkYXRhKSA9PiAoe1xyXG4gICAgICAgICAgICBkZXNjcmlwdGlvbixcclxuICAgICAgICAgICAgZGlmZmVyZW50aWFsczogZGF0YS5kaWZmZXJlbnRpYWxzLFxyXG4gICAgICAgICAgICB3aG9NdXN0VXNlOiBkYXRhLndob19tdXN0X3VzZSxcclxuICAgICAgICAgICAgaG93VG9Vc2U6IGRhdGEuaG93X3RvX3VzZSxcclxuICAgICAgICAgICAgYnJhbmQ6IGRhdGEuYnJhbmRfZGVzY3JpcHRpb24sXHJcbiAgICAgICAgICB9KSxcclxuICAgICAgICAgIGJpbmRGaW5kRmlsdGVyOiAoc2VudGVuY2UpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgZmlsdGVycyA9IE9iamVjdC52YWx1ZXMoc2VudGVuY2UpLnNoaWZ0KClcclxuXHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgLi4uKGZpbHRlcnM/LmRlc2NyaXB0aW9uICYmIHsgZGVzY3JpcHRpb246IGZpbHRlcnMuZGVzY3JpcHRpb24gfSksXHJcbiAgICAgICAgICAgICAgLi4uKGZpbHRlcnMuZGlmZmVyZW50aWFscyAmJiB7IGRpZmZlcmVudGlhbHM6IGZpbHRlcnMuZGlmZmVyZW50aWFscyB9KSxcclxuICAgICAgICAgICAgICAuLi4oZmlsdGVycy53aG9NdXN0VXNlICYmIHtcclxuICAgICAgICAgICAgICAgIHdob19tdXN0X3VzZTogZmlsdGVycy53aG9NdXN0VXNlLFxyXG4gICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICAgIC4uLihmaWx0ZXJzLmhvd1RvVXNlICYmIHtcclxuICAgICAgICAgICAgICAgIGhvd190b191c2U6IGZpbHRlcnMuaG93VG9Vc2UsXHJcbiAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICAgLi4uKGZpbHRlcnMuYnJhbmQgJiYge1xyXG4gICAgICAgICAgICAgICAgYnJhbmRfZGVzY3JpcHRpb246IGZpbHRlcnMuYnJhbmQsXHJcbiAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBiaW5kUGVyc2lzdERhdGE6IChkZXNjcmlwdGlvbkRhdGEpID0+ICh7XHJcbiAgICAgICAgICAgIC4uLihkZXNjcmlwdGlvbkRhdGE/LmRlc2NyaXB0aW9uICYmIHsgZGVzY3JpcHRpb246IGRlc2NyaXB0aW9uRGF0YS5kZXNjcmlwdGlvbiB9KSxcclxuICAgICAgICAgICAgLi4uKGRlc2NyaXB0aW9uRGF0YS5kaWZmZXJlbnRpYWxzICYmIHsgZGlmZmVyZW50aWFsczogZGVzY3JpcHRpb25EYXRhLmRpZmZlcmVudGlhbHMgfSksXHJcbiAgICAgICAgICAgIC4uLihkZXNjcmlwdGlvbkRhdGEud2hvTXVzdFVzZSAmJiB7XHJcbiAgICAgICAgICAgICAgd2hvX211c3RfdXNlOiBkZXNjcmlwdGlvbkRhdGEud2hvTXVzdFVzZSxcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIC4uLihkZXNjcmlwdGlvbkRhdGEuaG93VG9Vc2UgJiYgeyBob3dfdG9fdXNlOiBkZXNjcmlwdGlvbkRhdGEuaG93VG9Vc2UgfSksXHJcbiAgICAgICAgICAgIC4uLihkZXNjcmlwdGlvbkRhdGEuYnJhbmQgJiYgeyBicmFuZF9kZXNjcmlwdGlvbjogZGVzY3JpcHRpb25EYXRhLmJyYW5kIH0pLFxyXG4gICAgICAgICAgfSksXHJcbiAgICAgICAgfSxcclxuICAgICAgfSxcclxuICAgICAgeyBkaWZmZXJlbnRpYWxzOiB7IGNvbHVtbk5hbWU6ICdkaWZmZXJlbnRpYWxzJyB9IH0sXHJcbiAgICAgIHsgd2hvTXVzdFVzZTogeyBjb2x1bW5OYW1lOiAnd2hvX211c3RfdXNlJyB9IH0sXHJcbiAgICAgIHsgaG93VG9Vc2U6IHsgY29sdW1uTmFtZTogJ2hvd190b191c2UnIH0gfSxcclxuICAgICAgeyBicmFuZERlc2NyaXB0aW9uOiB7IGNvbHVtbk5hbWU6ICdicmFuZF9kZXNjcmlwdGlvbicgfSB9LFxyXG4gICAgICB7IGhhc1ZhcmlhbnRzOiB7IGNvbHVtbk5hbWU6ICdoYXNfdmFyaWFudHMnIH0gfSxcclxuICAgICAge1xyXG4gICAgICAgIGltYWdlczoge1xyXG4gICAgICAgICAgY29sdW1uTmFtZTogJ2ltYWdlcycsXHJcbiAgICAgICAgICB0bzogKHZhbHVlKSA9PiAodmFsdWU/Lmxlbmd0aCA+IDAgPyBge1wiJHt2YWx1ZT8uam9pbj8uKGBcIixcImApIHx8ICcnfVwifWAgOiBge31gKSxcclxuICAgICAgICB9LFxyXG4gICAgICB9LFxyXG4gICAgICB7XHJcbiAgICAgICAgbWluaWF0dXJlczoge1xyXG4gICAgICAgICAgY29sdW1uTmFtZTogJ21pbmlhdHVyZXMnLFxyXG4gICAgICAgICAgdG86ICh2YWx1ZSkgPT4gKHZhbHVlPy5sZW5ndGggPiAwID8gYHtcIiR7dmFsdWU/LmpvaW4/LihgXCIsXCJgKSB8fCAnJ31cIn1gIDogYHt9YCksXHJcbiAgICAgICAgfSxcclxuICAgICAgfSxcclxuICAgICAgJ25hbWUnLFxyXG4gICAgICB7XHJcbiAgICAgICAgcHJpY2U6IHtcclxuICAgICAgICAgIGNvbHVtbk5hbWU6ICdwcmljZScsXHJcbiAgICAgICAgICBmcm9tOiAocHJpY2UsIGRhdGEpOiBTaG9wUHJpY2UgPT4gKHtcclxuICAgICAgICAgICAgcHJpY2UsXHJcbiAgICAgICAgICAgIGZ1bGxQcmljZTogZGF0YS5mdWxsX3ByaWNlLFxyXG4gICAgICAgICAgICBzdWJzY3JpYmVyRGlzY291bnRQZXJjZW50YWdlOiBkYXRhLnN1YnNjcmliZXJfZGlzY291bnRfcGVyY2VudGFnZSxcclxuICAgICAgICAgICAgc3Vic2NyaWJlclByaWNlOiBkYXRhLnN1YnNjcmliZXJfcHJpY2UsXHJcbiAgICAgICAgICB9KSxcclxuICAgICAgICAgIGJpbmRGaW5kRmlsdGVyOiAoc2VudGVuY2UpID0+IHtcclxuICAgICAgICAgICAgY29uc3QgZmlsdGVycyA9IE9iamVjdC52YWx1ZXMoc2VudGVuY2UpLnNoaWZ0KClcclxuXHJcbiAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgLi4uKChmaWx0ZXJzPy5wcmljZSB8fCBmaWx0ZXJzPy5wcmljZSA9PT0gMCkgJiYgeyBwcmljZTogZmlsdGVycy5wcmljZSB9KSxcclxuICAgICAgICAgICAgICAuLi4oKGZpbHRlcnMuZnVsbFByaWNlIHx8IGZpbHRlcnMuZnVsbFByaWNlID09PSAwKSAmJiB7IGZ1bGxfcHJpY2U6IGZpbHRlcnMuZnVsbFByaWNlIH0pLFxyXG4gICAgICAgICAgICAgIC4uLigoZmlsdGVycy5zdWJzY3JpYmVyRGlzY291bnRQZXJjZW50YWdlIHx8IGZpbHRlcnMuc3Vic2NyaWJlckRpc2NvdW50UGVyY2VudGFnZSA9PT0gMCkgJiYge1xyXG4gICAgICAgICAgICAgICAgc3Vic2NyaWJlcl9kaXNjb3VudF9wZXJjZW50YWdlOiBmaWx0ZXJzLnN1YnNjcmliZXJEaXNjb3VudFBlcmNlbnRhZ2UsXHJcbiAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICAgLi4uKChmaWx0ZXJzLnN1YnNjcmliZXJQcmljZSB8fCBmaWx0ZXJzLnN1YnNjcmliZXJQcmljZSA9PT0gMCkgJiYge1xyXG4gICAgICAgICAgICAgICAgc3Vic2NyaWJlcl9wcmljZTogZmlsdGVycy5zdWJzY3JpYmVyUHJpY2UsXHJcbiAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICBiaW5kUGVyc2lzdERhdGE6IChwcmljZURhdGEpID0+ICh7XHJcbiAgICAgICAgICAgIC4uLihwcmljZURhdGE/LnByaWNlID49IDAgJiYgeyBwcmljZTogcHJpY2VEYXRhLnByaWNlIH0pLFxyXG4gICAgICAgICAgICAuLi4ocHJpY2VEYXRhLmZ1bGxQcmljZSA+PSAwICYmIHsgZnVsbF9wcmljZTogcHJpY2VEYXRhLmZ1bGxQcmljZSB9KSxcclxuICAgICAgICAgICAgLi4uKHByaWNlRGF0YS5zdWJzY3JpYmVyRGlzY291bnRQZXJjZW50YWdlID49IDAgJiYge1xyXG4gICAgICAgICAgICAgIHN1YnNjcmliZXJfZGlzY291bnRfcGVyY2VudGFnZTogcHJpY2VEYXRhLnN1YnNjcmliZXJEaXNjb3VudFBlcmNlbnRhZ2UsXHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICAuLi4ocHJpY2VEYXRhLnN1YnNjcmliZXJQcmljZSA+PSAwICYmIHsgc3Vic2NyaWJlcl9wcmljZTogcHJpY2VEYXRhLnN1YnNjcmliZXJQcmljZSB9KSxcclxuICAgICAgICAgIH0pLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH0sXHJcbiAgICAgIHsgZnVsbFByaWNlOiB7IGNvbHVtbk5hbWU6ICdmdWxsX3ByaWNlJyB9IH0sXHJcbiAgICAgIHsgc3Vic2NyaWJlckRpc2NvdW50UGVyY2VudGFnZTogeyBjb2x1bW5OYW1lOiAnc3Vic2NyaWJlcl9kaXNjb3VudF9wZXJjZW50YWdlJyB9IH0sXHJcbiAgICAgIHsgc3Vic2NyaWJlclByaWNlOiB7IGNvbHVtbk5hbWU6ICdzdWJzY3JpYmVyX3ByaWNlJyB9IH0sXHJcbiAgICAgICdwdWJsaXNoZWQnLFxyXG4gICAgICAnc2t1JyxcclxuICAgICAge1xyXG4gICAgICAgIHN0b2NrOiB7XHJcbiAgICAgICAgICBjb2x1bW5OYW1lOiAnc3RvY2snLFxyXG4gICAgICAgICAgZnJvbTogKHF1YW50aXR5OiBudW1iZXIpID0+ICh7IHF1YW50aXR5IH0pLFxyXG4gICAgICAgICAgdG86ICh2YWx1ZSkgPT4gKGlzTmlsKHZhbHVlPy5xdWFudGl0eSkgPyB2YWx1ZSA6IHZhbHVlPy5xdWFudGl0eSksXHJcbiAgICAgICAgfSxcclxuICAgICAgfSxcclxuICAgICAgJ3NsdWcnLFxyXG4gICAgICAndHlwZScsXHJcbiAgICAgICd2aWRlbycsXHJcbiAgICAgICd3ZWlnaHQnLFxyXG4gICAgICAnZ2VuZGVyJyxcclxuICAgICAgeyB0YWdzOiB7IGNvbHVtbk5hbWU6ICd0YWdzJywgdHlwZTogSGFzdXJhR3JhcGhRTENvbHVtblR5cGUuSnNvbmIgfSB9LFxyXG4gICAgICB7IGlzS2l0OiB7IGNvbHVtbk5hbWU6ICdpc19raXQnIH0gfSxcclxuICAgICAgeyBjcmVhdGVkQXQ6IHsgY29sdW1uTmFtZTogJ2NyZWF0ZWRfYXQnIH0gfSxcclxuICAgICAgeyB1cGRhdGVkQXQ6IHsgY29sdW1uTmFtZTogJ3VwZGF0ZWRfYXQnIH0gfSxcclxuICAgICAge1xyXG4gICAgICAgIHJhdGU6IHtcclxuICAgICAgICAgIGNvbHVtbk5hbWU6ICdyZXZpZXdzX2FnZ3JlZ2F0ZScsXHJcbiAgICAgICAgICBmaWx0ZXJzOiB7XHJcbiAgICAgICAgICAgIGZpbHRlcnM6IHsgc3RhdHVzOiB0cnVlIH0sXHJcbiAgICAgICAgICAgIGZpbHRlclR5cGU6ICdwcm9kdWN0X3Jldmlld19ib29sX2V4cCcsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAgZmllbGRzOiBbeyBhZ2dyZWdhdGU6IFt7IGF2ZzogWydyYXRlJ10gfV0gfV0sXHJcbiAgICAgICAgICBmcm9tOiAodmFsdWUpID0+IHZhbHVlLmFnZ3JlZ2F0ZS5hdmcucmF0ZSxcclxuICAgICAgICB9LFxyXG4gICAgICB9LFxyXG4gICAgICB7IHNob3BwaW5nQ291bnQ6IHsgY29sdW1uTmFtZTogJ3Nob3BwaW5nX2NvdW50JyB9IH0sXHJcbiAgICBdXHJcblxyXG4gICAgdGhpcy5maWVsZHMgPSBbXHJcbiAgICAgIC4uLmNvbW1vbkZpZWxkcyxcclxuICAgICAge1xyXG4gICAgICAgIGNhdGVnb3JpZXM6IHtcclxuICAgICAgICAgIGNvbHVtbk5hbWU6ICdjYXRlZ29yaWVzJyxcclxuICAgICAgICAgIGZpZWxkczogWydjYXRlZ29yeV9pZCddLFxyXG4gICAgICAgICAgYmluZFBlcnNpc3REYXRhOiAodmFsdWUpID0+ICh7XHJcbiAgICAgICAgICAgIGNhdGVnb3JpZXM6IHsgZGF0YTogdmFsdWUubWFwKChjYXRlZ29yeSkgPT4gKHsgY2F0ZWdvcnlfaWQ6ICtjYXRlZ29yeSB9KSkgfSxcclxuICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgdG86IChjYXRlZ29yaWVzKSA9PiBjYXRlZ29yaWVzLm1hcCgoY2F0ZWdvcnlJZCkgPT4gK2NhdGVnb3J5SWQpLFxyXG4gICAgICAgICAgZnJvbTogKGNhdGVnb3JpZXM6IHsgY2F0ZWdvcnlfaWQ6IG51bWJlciB9W10pID0+XHJcbiAgICAgICAgICAgIGNhdGVnb3JpZXM/Lm1hcCgoY2F0ZWdvcnkpID0+IGNhdGVnb3J5Py5jYXRlZ29yeV9pZD8udG9TdHJpbmcoKSkgfHwgW10sXHJcbiAgICAgICAgfSxcclxuICAgICAgfSxcclxuICAgICAge1xyXG4gICAgICAgIGtpdFByb2R1Y3RzOiB7XHJcbiAgICAgICAgICBjb2x1bW5OYW1lOiAna2l0X3Byb2R1Y3RzJyxcclxuICAgICAgICAgIGZvcmVpZ25LZXlDb2x1bW46IHsgcHJvZHVjdElkOiAnaWQnIH0sXHJcbiAgICAgICAgICBmaWVsZHM6IFtcclxuICAgICAgICAgICAgeyBwcm9kdWN0SWQ6IHsgY29sdW1uTmFtZTogJ3Byb2R1Y3RfaWQnIH0gfSxcclxuICAgICAgICAgICAgeyBraXRQcm9kdWN0SWQ6IHsgY29sdW1uTmFtZTogJ2tpdF9wcm9kdWN0X2lkJyB9IH0sXHJcbiAgICAgICAgICAgICdxdWFudGl0eScsXHJcbiAgICAgICAgICAgIHsgcHJvZHVjdDogeyBjb2x1bW5OYW1lOiAncHJvZHVjdCcsIGZvcmVpZ25LZXlDb2x1bW46IHsgaWQ6ICdwcm9kdWN0X2lkJyB9LCBmaWVsZHM6IGNvbW1vbkZpZWxkcyB9IH0sXHJcbiAgICAgICAgICBdLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICByZXZpZXdzOiB7XHJcbiAgICAgICAgICBjb2x1bW5OYW1lOiAncmV2aWV3cycsXHJcbiAgICAgICAgICBmb3JlaWduS2V5Q29sdW1uOiB7IHByb2R1Y3RfaWQ6ICdpZCcgfSxcclxuICAgICAgICAgIGZpZWxkczogdGhpcy5yZXZpZXdzRmllbGRzLFxyXG4gICAgICAgIH0sXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICBtZXRhZGF0YToge1xyXG4gICAgICAgICAgY29sdW1uTmFtZTogJ21ldGFkYXRhJyxcclxuICAgICAgICAgIGZpZWxkczogWyd0aXRsZScsICdkZXNjcmlwdGlvbiddLFxyXG4gICAgICAgICAgYmluZFBlcnNpc3REYXRhOiAodmFsdWUpID0+ICh7XHJcbiAgICAgICAgICAgIG1ldGFkYXRhOiB7IGRhdGE6IHZhbHVlIH0sXHJcbiAgICAgICAgICB9KSxcclxuICAgICAgICB9LFxyXG4gICAgICB9LFxyXG4gICAgXVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgY3JlYXRlKHBhcmFtczogQ3JlYXRlUmVwb3NpdG9yeVBhcmFtczxQcm9kdWN0SGFzdXJhR3JhcGhRTD4pOiBQcm9taXNlPFByb2R1Y3RIYXN1cmFHcmFwaFFMPiB7XHJcbiAgICBjb25zdCB7IG1ldGFkYXRhLCAuLi5kYXRhIH0gPSBwYXJhbXNcclxuICAgIGNvbnN0IHByb2R1Y3QgPSBhd2FpdCBzdXBlci5jcmVhdGUoXHJcbiAgICAgIG9taXQoeyAuLi5kYXRhLCBtZXRhZGF0YTogbWV0YWRhdGEgfHwgeyBkZXNjcmlwdGlvbjogbnVsbCwgdGl0bGU6IG51bGwgfSB9LCBbJ3Jldmlld3MnXSksXHJcbiAgICApXHJcblxyXG4gICAgdHJ5IHtcclxuICAgICAgcHJvZHVjdC5yZXZpZXdzID0gZGF0YS5yZXZpZXdzICYmIChhd2FpdCB0aGlzLnVwZGF0ZVJldmlld3MoK3Byb2R1Y3QuaWQsIGRhdGEpKVxyXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgICAgYXdhaXQgdGhpcy5kZWxldGUoeyBpZDogcHJvZHVjdC5pZCB9KVxyXG5cclxuICAgICAgdGhyb3cgZXJyb3JcclxuICAgIH1cclxuXHJcbiAgICByZXR1cm4gcHJvZHVjdFxyXG4gIH1cclxuXHJcbiAgYXN5bmMgZ2V0KGlkZW50aWZpZXJzOiBHZXRSZXBvc2l0b3J5UGFyYW1zPFByb2R1Y3RIYXN1cmFHcmFwaFFMPik6IFByb21pc2U8UHJvZHVjdEhhc3VyYUdyYXBoUUw+IHtcclxuICAgIGNvbnN0IHByb2R1Y3QgPSBOdW1iZXIuaXNOYU4oK2lkZW50aWZpZXJzLmlkKVxyXG4gICAgICA/IChhd2FpdCB0aGlzLmZpbmQoeyBmaWx0ZXJzOiB7IGZpcmVzdG9yZUlkOiBpZGVudGlmaWVycy5pZCB9LCBvcHRpb25zOiB7IGVuYWJsZUNvdW50OiBmYWxzZSB9IH0pKS5kYXRhPy5bMF1cclxuICAgICAgOiBhd2FpdCBzdXBlci5nZXQoaWRlbnRpZmllcnMpXHJcblxyXG4gICAgaWYgKHByb2R1Y3QucHJvZHVjdElkKSB0aHJvdyBuZXcgTm90Rm91bmRFcnJvcignUHJvZHVjdCBub3QgZm91bmQsIGl0IGlzIGEgdmFyaWFudCcpXHJcblxyXG4gICAgcHJvZHVjdC5yZXZpZXdzID0gcHJvZHVjdC5yZXZpZXdzIHx8IChhd2FpdCB0aGlzLmZpbmRSZXZpZXdzQnlQcm9kdWN0KCtwcm9kdWN0LmlkKSlcclxuXHJcbiAgICByZXR1cm4gcHJvZHVjdFxyXG4gIH1cclxuXHJcbiAgYXN5bmMgZmluZChwYXJhbXM/OiBGaW5kUmVwb3NpdG9yeVBhcmFtczxQcm9kdWN0SGFzdXJhR3JhcGhRTD4pOiBQcm9taXNlPFJlcG9zaXRvcnlGaW5kUmVzdWx0PFByb2R1Y3RIYXN1cmFHcmFwaFFMPj4ge1xyXG4gICAgY29uc3QgeyBmaWx0ZXJzLCBmaWVsZHMsIC4uLm9wdGlvbnMgfSA9IHBhcmFtcyB8fCB7fVxyXG4gICAgY29uc3QgYmluZEZpZWxkcyA9XHJcbiAgICAgIGZpZWxkcyB8fFxyXG4gICAgICAodGhpcy5maWVsZHNcclxuICAgICAgICAubWFwKChmaWVsZCkgPT4gKHR5cGVvZiBmaWVsZCA9PT0gJ3N0cmluZycgPyBmaWVsZCA6IE9iamVjdC5rZXlzKGZpZWxkKS5zaGlmdCgpKSlcclxuICAgICAgICAuZmlsdGVyKChmaWVsZCkgPT4gZmllbGQgIT09ICdyZXZpZXdzJykgYXMgTm9uRnVuY3Rpb25Qcm9wZXJ0eU5hbWVzPFxyXG4gICAgICAgIFByb2R1Y3RIYXN1cmFHcmFwaFFMLFxyXG4gICAgICAgIGtleW9mIFByb2R1Y3RIYXN1cmFHcmFwaFFMXHJcbiAgICAgID5bXSlcclxuXHJcbiAgICByZXR1cm4gc3VwZXIuZmluZCh7XHJcbiAgICAgIC4uLm9wdGlvbnMsXHJcbiAgICAgIGZpbHRlcnM6IHsgLi4uZmlsdGVycywgcHJvZHVjdElkOiB7IG9wZXJhdG9yOiBXaGVyZS5JU05VTEwgfSB9LFxyXG4gICAgICBmaWVsZHM6IGJpbmRGaWVsZHMsXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgZ2V0QnlTbHVnKHNsdWc6IHN0cmluZyk6IFByb21pc2U8UHJvZHVjdEhhc3VyYUdyYXBoUUw+IHtcclxuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IHRoaXMuZmluZCh7XHJcbiAgICAgIGZpbHRlcnM6IHtcclxuICAgICAgICBzbHVnLFxyXG4gICAgICB9LFxyXG4gICAgICBmaWVsZHM6IHRoaXMuZmllbGRzLm1hcCgoZmllbGQpID0+XHJcbiAgICAgICAgdHlwZW9mIGZpZWxkID09PSAnc3RyaW5nJyA/IGZpZWxkIDogT2JqZWN0LmtleXMoZmllbGQpLnNoaWZ0KCksXHJcbiAgICAgICkgYXMgTm9uRnVuY3Rpb25Qcm9wZXJ0eU5hbWVzPFByb2R1Y3RIYXN1cmFHcmFwaFFMLCBrZXlvZiBQcm9kdWN0SGFzdXJhR3JhcGhRTD5bXSxcclxuICAgICAgb3B0aW9uczoge1xyXG4gICAgICAgIGVuYWJsZUNvdW50OiBmYWxzZSxcclxuICAgICAgfSxcclxuICAgIH0pXHJcblxyXG4gICAgY29uc3QgcHJvZHVjdCA9IHJlc3VsdD8uZGF0YT8uc2hpZnQoKVxyXG5cclxuICAgIHJldHVybiBwcm9kdWN0XHJcbiAgfVxyXG5cclxuICBhc3luYyB1cGRhdGUocGFyYW1zOiBVcGRhdGVSZXBvc2l0b3J5UGFyYW1zPFByb2R1Y3RIYXN1cmFHcmFwaFFMPik6IFByb21pc2U8UHJvZHVjdEhhc3VyYUdyYXBoUUw+IHtcclxuICAgIGNvbnN0IHsgY2F0ZWdvcmllcywga2l0UHJvZHVjdHMsIHJldmlld3MsIGlkOiBjaGVja0lkLCByYXRlLCBtZXRhZGF0YSwgLi4uZGF0YSB9ID0gcGFyYW1zXHJcbiAgICBjb25zdCBwbGFpbkRhdGEgPSB0aGlzLnBhcmFtc1RvUGxhaW4oeyBpZDogY2hlY2tJZCB9KVxyXG4gICAgY29uc3QgaWQgPSBhd2FpdCB0aGlzLmdldElkKHBsYWluRGF0YS5pZClcclxuICAgIGNvbnN0IHByb2R1Y3QgPSBhd2FpdCBzdXBlci51cGRhdGUoeyBpZCwgLi4uZGF0YSB9KVxyXG5cclxuICAgIHByb2R1Y3QuY2F0ZWdvcmllcyA9IGNhdGVnb3JpZXMgJiYgKGF3YWl0IHRoaXMudXBkYXRlQ2F0ZWdvcmllcygraWQsIHsgY2F0ZWdvcmllcyB9KSlcclxuICAgIHByb2R1Y3Qua2l0UHJvZHVjdHMgPSBraXRQcm9kdWN0cyAmJiAoYXdhaXQgdGhpcy51cGRhdGVLaXRQcm9kdWN0cygraWQsIHsga2l0UHJvZHVjdHMgfSkpXHJcbiAgICBwcm9kdWN0LnJldmlld3MgPSByZXZpZXdzICYmIChhd2FpdCB0aGlzLnVwZGF0ZVJldmlld3MoK2lkLCB7IHJldmlld3MgfSkpXHJcbiAgICBwcm9kdWN0Lm1ldGFkYXRhID0gbWV0YWRhdGEgJiYgKGF3YWl0IHRoaXMudXBkYXRlTWV0YWRhdGEoK2lkLCB7IG1ldGFkYXRhIH0pKVxyXG5cclxuICAgIHJldHVybiBwcm9kdWN0XHJcbiAgfVxyXG5cclxuICBhc3luYyBmZXRjaFJldmlld3Moc3RhdHVzOiBSZXZpZXdTdGF0dXNQYXJhbXMpOiBQcm9taXNlPFJldmlld1dpdGhQcm9kdWN0RGF0YVtdPiB7XHJcbiAgICBjb25zdCByZXZpZXdzRXhwcmVzc2lvbiA9IHtcclxuICAgICAgc3RhdHVzOlxyXG4gICAgICAgIHN0YXR1cyA9PT0gJ3BlbmRpbmcnXHJcbiAgICAgICAgICA/IHsgW0hhc3VyYUdyYXBoUUxXaGVyZS5JU05VTExdOiB0cnVlIH1cclxuICAgICAgICAgIDogeyBbSGFzdXJhR3JhcGhRTFdoZXJlLkVRVUFMU106IHN0YXR1cyA9PT0gJ2FwcHJvdmVkJyB9LFxyXG4gICAgfVxyXG4gICAgY29uc3QgeyBwcm9kdWN0OiBkYXRhIH0gPSBhd2FpdCB0aGlzLnF1ZXJ5KFxyXG4gICAgICAncHJvZHVjdCcsXHJcbiAgICAgIFsnaWQnLCAnbmFtZScsICdza3UnLCB7IHJldmlld3M6IHsgY29sdW1uTmFtZTogJ3Jldmlld3MnLCBmaWVsZHM6IHRoaXMucmV2aWV3c0ZpZWxkcyB9IH1dLFxyXG4gICAgICB7XHJcbiAgICAgICAgd2hlcmU6IHsgdmFsdWU6IHsgcmV2aWV3czogcmV2aWV3c0V4cHJlc3Npb24gfSwgdHlwZTogJ3Byb2R1Y3RfYm9vbF9leHAnLCByZXF1aXJlZDogdHJ1ZSB9LFxyXG4gICAgICB9LFxyXG4gICAgKVxyXG5cclxuICAgIHJldHVybiBkYXRhLnJlZHVjZShcclxuICAgICAgKHJldmlld3MsIHByb2R1Y3QpID0+IFtcclxuICAgICAgICAuLi5yZXZpZXdzLFxyXG4gICAgICAgIC4uLnByb2R1Y3QucmV2aWV3c1xyXG4gICAgICAgICAgLmZpbHRlcihcclxuICAgICAgICAgICAgKHJldmlldykgPT5cclxuICAgICAgICAgICAgICAoc3RhdHVzID09PSAncGVuZGluZycgJiYgW3VuZGVmaW5lZCwgbnVsbF0uaW5jbHVkZXMocmV2aWV3LnN0YXR1cykpIHx8XHJcbiAgICAgICAgICAgICAgKHN0YXR1cyA9PT0gJ2FwcHJvdmVkJyAmJiByZXZpZXcuc3RhdHVzID09PSB0cnVlKSB8fFxyXG4gICAgICAgICAgICAgIChzdGF0dXMgPT09ICdyZWplY3RlZCcgJiYgcmV2aWV3LnN0YXR1cyA9PT0gZmFsc2UpLFxyXG4gICAgICAgICAgKVxyXG4gICAgICAgICAgLm1hcCgocmV2aWV3KSA9PiAoe1xyXG4gICAgICAgICAgICAuLi50aGlzLmJpbmRSZXZpZXdUb01vZGVsKHJldmlldyksXHJcbiAgICAgICAgICAgIHByb2R1Y3RJZDogcHJvZHVjdC5pZCxcclxuICAgICAgICAgICAgcHJvZHVjdE5hbWU6IHByb2R1Y3QubmFtZSxcclxuICAgICAgICAgICAgcHJvZHVjdFNrdTogcHJvZHVjdC5za3UsXHJcbiAgICAgICAgICB9KSksXHJcbiAgICAgIF0sXHJcbiAgICAgIFtdIGFzIFJldmlld1dpdGhQcm9kdWN0RGF0YVtdLFxyXG4gICAgKVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyB1cGRhdGVDYXRlZ29yaWVzKFxyXG4gICAgcHJvZHVjdElkOiBudW1iZXIsXHJcbiAgICB7IGNhdGVnb3JpZXMgfTogUGljazxVcGRhdGVSZXBvc2l0b3J5UGFyYW1zPFByb2R1Y3RIYXN1cmFHcmFwaFFMPiwgJ2NhdGVnb3JpZXMnPixcclxuICApOiBQcm9taXNlPFByb2R1Y3RIYXN1cmFHcmFwaFFMWydjYXRlZ29yaWVzJ10+IHtcclxuICAgIGlmICgnYWN0aW9uJyBpbiBjYXRlZ29yaWVzICYmIGNhdGVnb3JpZXMuYWN0aW9uID09PSAncmVtb3ZlJykge1xyXG4gICAgICBhd2FpdCB0aGlzLm11dGF0aW9uKCdkZWxldGVfY2F0ZWdvcnlfcHJvZHVjdCcsIFsnYWZmZWN0ZWRfcm93cyddLCB7XHJcbiAgICAgICAgd2hlcmU6IHtcclxuICAgICAgICAgIHR5cGU6ICdjYXRlZ29yeV9wcm9kdWN0X2Jvb2xfZXhwJyxcclxuICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxyXG4gICAgICAgICAgdmFsdWU6IHsgcHJvZHVjdF9pZDogeyBfZXE6IHByb2R1Y3RJZCB9IH0sXHJcbiAgICAgICAgfSxcclxuICAgICAgfSlcclxuXHJcbiAgICAgIHJldHVybiBbXVxyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHBsYWluRGF0YSA9IHRoaXMucGFyYW1zVG9QbGFpbih7IGNhdGVnb3JpZXMgfSlcclxuXHJcbiAgICBpZiAoIXBsYWluRGF0YS5jYXRlZ29yaWVzIHx8IHBsYWluRGF0YS5jYXRlZ29yaWVzLmxlbmd0aCA8PSAwKSByZXR1cm4gW11cclxuXHJcbiAgICBhd2FpdCB0aGlzLm11dGF0aW9uKCdkZWxldGVfY2F0ZWdvcnlfcHJvZHVjdCcsIFsnYWZmZWN0ZWRfcm93cyddLCB7XHJcbiAgICAgIHdoZXJlOiB7XHJcbiAgICAgICAgdHlwZTogJ2NhdGVnb3J5X3Byb2R1Y3RfYm9vbF9leHAnLFxyXG4gICAgICAgIHJlcXVpcmVkOiB0cnVlLFxyXG4gICAgICAgIHZhbHVlOiB7IHByb2R1Y3RfaWQ6IHsgX2VxOiBwcm9kdWN0SWQgfSB9LFxyXG4gICAgICB9LFxyXG4gICAgfSlcclxuXHJcbiAgICBhd2FpdCB0aGlzLm11dGF0aW9uKCdpbnNlcnRfY2F0ZWdvcnlfcHJvZHVjdCcsIFsnYWZmZWN0ZWRfcm93cyddLCB7XHJcbiAgICAgIG9iamVjdHM6IHtcclxuICAgICAgICB0eXBlOiAnW2NhdGVnb3J5X3Byb2R1Y3RfaW5zZXJ0X2lucHV0IV0nLFxyXG4gICAgICAgIHJlcXVpcmVkOiB0cnVlLFxyXG4gICAgICAgIHZhbHVlOiBwbGFpbkRhdGEuY2F0ZWdvcmllcy5tYXAoKGNhdGVnb3J5SWQpID0+ICh7IGNhdGVnb3J5X2lkOiBjYXRlZ29yeUlkLCBwcm9kdWN0X2lkOiBwcm9kdWN0SWQgfSkpLFxyXG4gICAgICB9LFxyXG4gICAgfSlcclxuXHJcbiAgICByZXR1cm4gcGxhaW5EYXRhLmNhdGVnb3JpZXNcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgdXBkYXRlS2l0UHJvZHVjdHMoXHJcbiAgICBwcm9kdWN0SWQ6IG51bWJlcixcclxuICAgIHsga2l0UHJvZHVjdHMgfTogUGljazxVcGRhdGVSZXBvc2l0b3J5UGFyYW1zPFByb2R1Y3RIYXN1cmFHcmFwaFFMPiwgJ2tpdFByb2R1Y3RzJz4sXHJcbiAgKTogUHJvbWlzZTxQcm9kdWN0SGFzdXJhR3JhcGhRTFsna2l0UHJvZHVjdHMnXT4ge1xyXG4gICAgY29uc3QgcGxhaW5EYXRhID0gdGhpcy5wYXJhbXNUb1BsYWluKHsga2l0UHJvZHVjdHMgfSlcclxuXHJcbiAgICBhd2FpdCB0aGlzLm11dGF0aW9uKCdkZWxldGVfcHJvZHVjdF9raXQnLCBbJ2FmZmVjdGVkX3Jvd3MnXSwge1xyXG4gICAgICB3aGVyZToge1xyXG4gICAgICAgIHR5cGU6ICdwcm9kdWN0X2tpdF9ib29sX2V4cCcsXHJcbiAgICAgICAgcmVxdWlyZWQ6IHRydWUsXHJcbiAgICAgICAgdmFsdWU6IHsga2l0X3Byb2R1Y3RfaWQ6IHsgX2VxOiBwcm9kdWN0SWQgfSB9LFxyXG4gICAgICB9LFxyXG4gICAgfSlcclxuXHJcbiAgICBhd2FpdCB0aGlzLm11dGF0aW9uKCdpbnNlcnRfcHJvZHVjdF9raXQnLCBbJ2FmZmVjdGVkX3Jvd3MnXSwge1xyXG4gICAgICBvYmplY3RzOiB7XHJcbiAgICAgICAgdHlwZTogJ1twcm9kdWN0X2tpdF9pbnNlcnRfaW5wdXQhXScsXHJcbiAgICAgICAgcmVxdWlyZWQ6IHRydWUsXHJcbiAgICAgICAgdmFsdWU6IHBsYWluRGF0YS5raXRQcm9kdWN0cy5tYXAoKGtpdFByb2R1Y3QpID0+ICh7XHJcbiAgICAgICAgICBraXRfcHJvZHVjdF9pZDogcHJvZHVjdElkLFxyXG4gICAgICAgICAgcHJvZHVjdF9pZDoga2l0UHJvZHVjdC5wcm9kdWN0SWQgfHwga2l0UHJvZHVjdC5wcm9kdWN0LmlkLFxyXG4gICAgICAgICAgcXVhbnRpdHk6IGtpdFByb2R1Y3QucXVhbnRpdHksXHJcbiAgICAgICAgfSkpLFxyXG4gICAgICB9LFxyXG4gICAgfSlcclxuXHJcbiAgICByZXR1cm4gcGxhaW5EYXRhLmtpdFByb2R1Y3RzXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIHVwZGF0ZVJldmlld3MoXHJcbiAgICBwcm9kdWN0SWQ6IG51bWJlcixcclxuICAgIHsgcmV2aWV3cyB9OiBQaWNrPFVwZGF0ZVJlcG9zaXRvcnlQYXJhbXM8UHJvZHVjdEhhc3VyYUdyYXBoUUw+LCAncmV2aWV3cyc+LFxyXG4gICk6IFByb21pc2U8UHJvZHVjdFJldmlld1tdPiB7XHJcbiAgICBpZiAoIXJldmlld3MpIHJldHVybiBbXVxyXG4gICAgaWYgKCdhY3Rpb24nIGluIHJldmlld3MgJiYgcmV2aWV3cy5hY3Rpb24gPT09ICdyZW1vdmUnKSB7XHJcbiAgICAgIGNvbnN0IHJldmlld0lkcyA9IGF3YWl0IFByb21pc2UuYWxsKFxyXG4gICAgICAgIHJldmlld3MudmFsdWUubWFwKGFzeW5jIChyZXZpZXdEYXRhKSA9PiB7XHJcbiAgICAgICAgICBjb25zdCByZXZpZXcgPSBhd2FpdCB0aGlzLmZpbmRSZXZpZXcocmV2aWV3RGF0YSwgcHJvZHVjdElkKVxyXG5cclxuICAgICAgICAgIHJldHVybiByZXZpZXc/LmlkXHJcbiAgICAgICAgfSksXHJcbiAgICAgIClcclxuXHJcbiAgICAgIGF3YWl0IHRoaXMubXV0YXRpb24oJ2RlbGV0ZV9wcm9kdWN0X3JldmlldycsIFsnYWZmZWN0ZWRfcm93cyddLCB7XHJcbiAgICAgICAgd2hlcmU6IHsgdmFsdWU6IHsgaWQ6IHsgX2luOiByZXZpZXdJZHMuZmlsdGVyKEJvb2xlYW4pIH0gfSwgdHlwZTogJ3Byb2R1Y3RfcmV2aWV3X2Jvb2xfZXhwJywgcmVxdWlyZWQ6IHRydWUgfSxcclxuICAgICAgfSlcclxuXHJcbiAgICAgIHJldHVybiByZXZpZXdzLnZhbHVlLm1hcCgocmV2aWV3LCBpbmRleCkgPT4gIXJldmlld0lkc1tpbmRleF0gJiYgcmV2aWV3KS5maWx0ZXIoQm9vbGVhbilcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBwbGFpbkRhdGEgPSB0aGlzLnBhcmFtc1RvUGxhaW4oeyByZXZpZXdzIH0pXHJcblxyXG4gICAgaWYgKCFwbGFpbkRhdGEucmV2aWV3cyB8fCBwbGFpbkRhdGEucmV2aWV3cy5sZW5ndGggPD0gMCkgcmV0dXJuIFtdXHJcblxyXG4gICAgcmV0dXJuIFByb21pc2UuYWxsKFxyXG4gICAgICBwbGFpbkRhdGEucmV2aWV3cy5tYXAoYXN5bmMgKHJldmlld0RhdGEpID0+IHtcclxuICAgICAgICBjb25zdCByZXZpZXcgPSBhd2FpdCB0aGlzLmZpbmRSZXZpZXcocmV2aWV3RGF0YSwgcHJvZHVjdElkKVxyXG5cclxuICAgICAgICBpZiAocmV2aWV3LmlkKVxyXG4gICAgICAgICAgcmV0dXJuIHRoaXMuYmluZFJldmlld1RvTW9kZWwoXHJcbiAgICAgICAgICAgIChcclxuICAgICAgICAgICAgICBhd2FpdCB0aGlzLm11dGF0aW9uKCd1cGRhdGVfcHJvZHVjdF9yZXZpZXdfYnlfcGsnLCB0aGlzLnJldmlld3NGaWVsZHMsIHtcclxuICAgICAgICAgICAgICAgIHBrX2NvbHVtbnM6IHtcclxuICAgICAgICAgICAgICAgICAgdmFsdWU6IHsgaWQ6IHJldmlldy5pZCB9LFxyXG4gICAgICAgICAgICAgICAgICB0eXBlOiAncHJvZHVjdF9yZXZpZXdfcGtfY29sdW1uc19pbnB1dCcsXHJcbiAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIF9zZXQ6IHtcclxuICAgICAgICAgICAgICAgICAgdmFsdWU6IG9taXQodGhpcy5iaW5kUmV2aWV3VG9IYXN1cmEocmV2aWV3RGF0YSksIFsnaWQnLCAncHJvZHVjdF9pZCddKSxcclxuICAgICAgICAgICAgICAgICAgdHlwZTogJ3Byb2R1Y3RfcmV2aWV3X3NldF9pbnB1dCcsXHJcbiAgICAgICAgICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxyXG4gICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICApLnVwZGF0ZV9wcm9kdWN0X3Jldmlld19ieV9wayxcclxuICAgICAgICAgIClcclxuXHJcbiAgICAgICAgcmV0dXJuIHRoaXMuYmluZFJldmlld1RvTW9kZWwoXHJcbiAgICAgICAgICAoXHJcbiAgICAgICAgICAgIGF3YWl0IHRoaXMubXV0YXRpb24oJ2luc2VydF9wcm9kdWN0X3Jldmlld19vbmUnLCB0aGlzLnJldmlld3NGaWVsZHMsIHtcclxuICAgICAgICAgICAgICBvYmplY3Q6IHtcclxuICAgICAgICAgICAgICAgIHZhbHVlOiBvbWl0KHsgLi4udGhpcy5iaW5kUmV2aWV3VG9IYXN1cmEocmV2aWV3RGF0YSksIHByb2R1Y3RfaWQ6IHByb2R1Y3RJZCB9LCBbJ2lkJ10pLFxyXG4gICAgICAgICAgICAgICAgdHlwZTogJ3Byb2R1Y3RfcmV2aWV3X2luc2VydF9pbnB1dCcsXHJcbiAgICAgICAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgKS5pbnNlcnRfcHJvZHVjdF9yZXZpZXdfb25lLFxyXG4gICAgICAgIClcclxuICAgICAgfSksXHJcbiAgICApXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIHVwZGF0ZU1ldGFkYXRhKFxyXG4gICAgcHJvZHVjdElkOiBudW1iZXIsXHJcbiAgICB7IG1ldGFkYXRhIH06IFBpY2s8VXBkYXRlUmVwb3NpdG9yeVBhcmFtczxQcm9kdWN0SGFzdXJhR3JhcGhRTD4sICdtZXRhZGF0YSc+LFxyXG4gICk6IFByb21pc2U8UHJvZHVjdE1ldGFkYXRhPiB7XHJcbiAgICBjb25zdCBwbGFpbkRhdGEgPSB0aGlzLnBhcmFtc1RvUGxhaW4oeyBtZXRhZGF0YSB9KVxyXG5cclxuICAgIGlmICghcGxhaW5EYXRhLm1ldGFkYXRhKSByZXR1cm5cclxuXHJcbiAgICBhd2FpdCB0aGlzLm11dGF0aW9uKCd1cGRhdGVfcHJvZHVjdF9tZXRhZGF0YV9ieV9waycsIFsncHJvZHVjdF9pZCddLCB7XHJcbiAgICAgIHBrX2NvbHVtbnM6IHtcclxuICAgICAgICB2YWx1ZTogeyBwcm9kdWN0X2lkOiBwcm9kdWN0SWQgfSxcclxuICAgICAgICB0eXBlOiAncHJvZHVjdF9tZXRhZGF0YV9wa19jb2x1bW5zX2lucHV0JyxcclxuICAgICAgICByZXF1aXJlZDogdHJ1ZSxcclxuICAgICAgfSxcclxuICAgICAgX3NldDoge1xyXG4gICAgICAgIHZhbHVlOiBvbWl0KG1ldGFkYXRhLCBbJ3Byb2R1Y3RfaWQnXSksXHJcbiAgICAgICAgdHlwZTogJ3Byb2R1Y3RfbWV0YWRhdGFfc2V0X2lucHV0JyxcclxuICAgICAgICByZXF1aXJlZDogdHJ1ZSxcclxuICAgICAgfSxcclxuICAgIH0pXHJcblxyXG4gICAgcmV0dXJuIHBsYWluRGF0YS5tZXRhZGF0YVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBnZXRJZChpZDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcclxuICAgIGlmICghTnVtYmVyLmlzTmFOKCtpZCkpIHJldHVybiBpZFxyXG5cclxuICAgIGNvbnN0IHsgZGF0YSB9ID0gYXdhaXQgdGhpcy5maW5kKHsgZmlsdGVyczogeyBmaXJlc3RvcmVJZDogaWQgfSwgb3B0aW9uczogeyBlbmFibGVDb3VudDogZmFsc2UgfSB9KVxyXG5cclxuICAgIGlmIChkYXRhPy5bMF0/LmlkKSByZXR1cm4gZGF0YT8uWzBdPy5pZFxyXG5cclxuICAgIHRocm93IG5ldyBOb3RGb3VuZEVycm9yKGBQcm9kdWN0IHdpdGggaWQgJHtpZH0gbm90IGZvdW5kYClcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYXN5bmMgZmluZFJldmlld3NCeVByb2R1Y3QocHJvZHVjdElkOiBudW1iZXIpOiBQcm9taXNlPFByb2R1Y3RSZXZpZXdbXT4ge1xyXG4gICAgY29uc3QgeyBwcm9kdWN0X3JldmlldzogZGF0YSB9ID0gYXdhaXQgdGhpcy5xdWVyeSgncHJvZHVjdF9yZXZpZXcnLCB0aGlzLnJldmlld3NGaWVsZHMsIHtcclxuICAgICAgd2hlcmU6IHtcclxuICAgICAgICB2YWx1ZToge1xyXG4gICAgICAgICAgcHJvZHVjdF9pZDogeyBfZXE6IHByb2R1Y3RJZCB9LFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgdHlwZTogJ3Byb2R1Y3RfcmV2aWV3X2Jvb2xfZXhwJyxcclxuICAgICAgICByZXF1aXJlZDogdHJ1ZSxcclxuICAgICAgfSxcclxuICAgIH0pXHJcblxyXG4gICAgcmV0dXJuIGRhdGEgJiYgZGF0YS5tYXAoKHJldmlldykgPT4gdGhpcy5iaW5kUmV2aWV3VG9Nb2RlbChyZXZpZXcpKVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBmaW5kUmV2aWV3KHJldmlldzogUHJvZHVjdFJldmlldywgcHJvZHVjdElkOiBudW1iZXIpOiBQcm9taXNlPFByb2R1Y3RSZXZpZXc+IHtcclxuICAgIGlmIChyZXZpZXcuaWQpIHJldHVybiByZXZpZXdcclxuXHJcbiAgICBsZXQgbG9hZGVkUmV2aWV3OiBQcm9kdWN0UmV2aWV3XHJcblxyXG4gICAgaWYgKHJldmlldy5wZXJzb25JZCkgbG9hZGVkUmV2aWV3ID0gYXdhaXQgdGhpcy5nZXRSZXZpZXdCeVBlcnNvbklkKHJldmlldy5wZXJzb25JZCwgcHJvZHVjdElkLCByZXZpZXcub3JkZXJJZClcclxuICAgIGlmICghbG9hZGVkUmV2aWV3ICYmIHJldmlldy5hdXRob3IgJiYgcmV2aWV3LmVtYWlsKVxyXG4gICAgICBsb2FkZWRSZXZpZXcgPSBhd2FpdCB0aGlzLmdldFJldmlld0J5QXV0aG9yQW5kRW1haWwocmV2aWV3LmF1dGhvciwgcmV2aWV3LmVtYWlsLCBwcm9kdWN0SWQsIHJldmlldy5vcmRlcklkKVxyXG5cclxuICAgIHJldHVybiBsb2FkZWRSZXZpZXcgfHwgcmV2aWV3XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIGdldFJldmlld0J5UGVyc29uSWQocGVyc29uSWQ6IG51bWJlciwgcHJvZHVjdElkOiBudW1iZXIsIG9yZGVySWQ/OiBzdHJpbmcpOiBQcm9taXNlPFByb2R1Y3RSZXZpZXc+IHtcclxuICAgIGNvbnN0IHsgcHJvZHVjdF9yZXZpZXc6IGRhdGEgfSA9IGF3YWl0IHRoaXMucXVlcnkoJ3Byb2R1Y3RfcmV2aWV3JywgdGhpcy5yZXZpZXdzRmllbGRzLCB7XHJcbiAgICAgIHdoZXJlOiB7XHJcbiAgICAgICAgdmFsdWU6IHtcclxuICAgICAgICAgIHByb2R1Y3RfaWQ6IHsgX2VxOiBwcm9kdWN0SWQgfSxcclxuICAgICAgICAgIHBlcnNvbl9pZDogeyBfZXE6IHBlcnNvbklkIH0sXHJcbiAgICAgICAgICAuLi4ob3JkZXJJZCAmJiB7IG9yZGVyX2lkOiB7IF9lcTogb3JkZXJJZCB9IH0pLFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgdHlwZTogYHByb2R1Y3RfcmV2aWV3X2Jvb2xfZXhwYCxcclxuICAgICAgICByZXF1aXJlZDogdHJ1ZSxcclxuICAgICAgfSxcclxuICAgIH0pXHJcblxyXG4gICAgcmV0dXJuIGRhdGEgJiYgZGF0YVswXSAmJiB0aGlzLmJpbmRSZXZpZXdUb01vZGVsKGRhdGFbMF0pXHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIGdldFJldmlld0J5QXV0aG9yQW5kRW1haWwoXHJcbiAgICBhdXRob3I6IHN0cmluZyxcclxuICAgIGVtYWlsOiBzdHJpbmcsXHJcbiAgICBwcm9kdWN0SWQ6IG51bWJlcixcclxuICAgIG9yZGVySWQ/OiBzdHJpbmcsXHJcbiAgKTogUHJvbWlzZTxQcm9kdWN0UmV2aWV3PiB7XHJcbiAgICBjb25zdCB7IHByb2R1Y3RfcmV2aWV3OiBkYXRhIH0gPSBhd2FpdCB0aGlzLnF1ZXJ5KCdwcm9kdWN0X3JldmlldycsIHRoaXMucmV2aWV3c0ZpZWxkcywge1xyXG4gICAgICB3aGVyZToge1xyXG4gICAgICAgIHZhbHVlOiB7XHJcbiAgICAgICAgICBwcm9kdWN0X2lkOiB7IF9lcTogcHJvZHVjdElkIH0sXHJcbiAgICAgICAgICBhdXRob3I6IHsgX2VxOiBhdXRob3IgfSxcclxuICAgICAgICAgIGVtYWlsOiB7IF9lcTogZW1haWwgfSxcclxuICAgICAgICAgIC4uLihvcmRlcklkICYmIHsgb3JkZXJfaWQ6IHsgX2VxOiBvcmRlcklkIH0gfSksXHJcbiAgICAgICAgfSxcclxuICAgICAgICB0eXBlOiBgcHJvZHVjdF9yZXZpZXdfYm9vbF9leHBgLFxyXG4gICAgICAgIHJlcXVpcmVkOiB0cnVlLFxyXG4gICAgICB9LFxyXG4gICAgfSlcclxuXHJcbiAgICByZXR1cm4gZGF0YSAmJiBkYXRhWzBdICYmIHRoaXMuYmluZFJldmlld1RvTW9kZWwoZGF0YVswXSlcclxuICB9XHJcblxyXG4gIHByaXZhdGUgYmluZFJldmlld1RvTW9kZWwgPSAocGxhaW46IFJlY29yZDxzdHJpbmcsIGFueT4pOiBQcm9kdWN0UmV2aWV3ID0+ICh7XHJcbiAgICAuLi5vbWl0KHBsYWluLCBbJ3Byb2R1Y3RfaWQnLCAnY3JlYXRlZF9hdCcsICd1cGRhdGVkX2F0JywgJ3BlcnNvbl9pZCcsICdvcmRlcl9pZCddKSxcclxuICAgIGNyZWF0ZWRBdDogdHlwZW9mIHBsYWluLmNyZWF0ZWRfYXQgPT09ICdzdHJpbmcnID8gbmV3IERhdGUocGxhaW4uY3JlYXRlZF9hdCkgOiBwbGFpbi5jcmVhdGVkX2F0LFxyXG4gICAgdXBkYXRlZEF0OiB0eXBlb2YgcGxhaW4udXBkYXRlZF9hdCA9PT0gJ3N0cmluZycgPyBuZXcgRGF0ZShwbGFpbi51cGRhdGVkX2F0KSA6IHBsYWluLnVwZGF0ZWRfYXQsXHJcbiAgICBwZXJzb25JZDogcGxhaW4ucGVyc29uX2lkLFxyXG4gICAgb3JkZXJJZDogcGxhaW4ub3JkZXJfaWQsXHJcbiAgfSlcclxuXHJcbiAgcHJpdmF0ZSBiaW5kUmV2aWV3VG9IYXN1cmEgPSAocmV2aWV3OiBQcm9kdWN0UmV2aWV3KTogUHJvZHVjdFJldmlld0ZpZWxkcyA9PiAoe1xyXG4gICAgLi4ub21pdChyZXZpZXcsIFsncHJvZHVjdElkJywgJ2NyZWF0ZWRBdCcsICd1cGRhdGVkQXQnLCAncGVyc29uSWQnLCAnb3JkZXJJZCddKSxcclxuICAgIHBlcnNvbl9pZDogcmV2aWV3LnBlcnNvbklkLFxyXG4gICAgb3JkZXJfaWQ6IHJldmlldy5vcmRlcklkLFxyXG4gIH0pXHJcbn1cclxuIl19
@@ -106,11 +106,11 @@ export class VariantHasuraGraphQLRepository extends withCrudHasuraGraphQL(withHa
106
106
  return __awaiter(this, void 0, void 0, function* () {
107
107
  if (!Number.isNaN(+id))
108
108
  return id;
109
- const { data } = yield this.find({ filters: { firestoreId: id } });
109
+ const { data } = yield this.find({ filters: { firestoreId: id }, options: { enableCount: false } });
110
110
  if ((_a = data === null || data === void 0 ? void 0 : data[0]) === null || _a === void 0 ? void 0 : _a.id)
111
111
  return (_b = data === null || data === void 0 ? void 0 : data[0]) === null || _b === void 0 ? void 0 : _b.id;
112
112
  throw new NotFoundError(`Product with id ${id} not found`);
113
113
  });
114
114
  }
115
115
  }
116
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFyaWFudC1oYXN1cmEtZ3JhcGhxbC5yZXBvc2l0b3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29ubmVjdC9zcmMvaW5mcmEvaGFzdXJhLWdyYXBocWwvcmVwb3NpdG9yaWVzL2NhdGFsb2cvdmFyaWFudC1oYXN1cmEtZ3JhcGhxbC5yZXBvc2l0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBT0wsS0FBSyxHQUNOLE1BQU0sb0JBQW9CLENBQUE7QUFDM0IsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG9CQUFvQixDQUFBO0FBQ2xELE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFDL0MsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sYUFBYSxDQUFBO0FBQ3JELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQUN2RSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFHbkQsTUFBTSxPQUFPLDhCQUNYLFNBQVEscUJBQXFCLENBQUMsaUJBQWlCLENBQXVCLElBQUksQ0FBQyxDQUFDO0lBRzVFLFlBQVksUUFBZ0IsRUFBRSxXQUFxQztRQUNqRSxLQUFLLENBQUM7WUFDSixTQUFTLEVBQUUsU0FBUztZQUNwQixLQUFLLEVBQUUsb0JBQW9CO1lBQzNCLFFBQVE7WUFDUixXQUFXO1lBQ1gsTUFBTSxFQUFFO2dCQUNOLEVBQUUsRUFBRSxFQUFFLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxFQUFFLEVBQUU7Z0JBQ3RGLEVBQUUsV0FBVyxFQUFFLEVBQUUsVUFBVSxFQUFF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VTs7O1lBQzVCLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUFFLE9BQU8sRUFBRSxDQUFBO1lBRWpDLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxPQUFPLEVBQUUsRUFBRSxXQUFXLEVBQUUsRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFBO1lBRWxFLElBQUksTUFBQSxJQUFJLGFBQUosSUFBSSx1QkFBSixJQUFJLENBQUcsQ0FBQyxDQUFDLDBDQUFFLEVBQUU7Z0JBQUUsT0FBTyxNQUFBLElBQUksYUFBSixJQUFJLHVCQUFKLElBQUksQ0FBRyxDQUFDLENBQUMsMENBQUUsRUFBRSxDQUFBO1lBRXZDLE1BQU0sSUFBSSxhQUFhLENBQUMsbUJBQW1CLEVBQUUsWUFBWSxDQUFDLENBQUE7O0tBQzNEO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIEZpbmRSZXBvc2l0b3J5UGFyYW1zLFxyXG4gIEdldFJlcG9zaXRvcnlQYXJhbXMsXHJcbiAgUmVwb3NpdG9yeUZpbmRSZXN1bHQsXHJcbiAgU2hvcFByaWNlLFxyXG4gIFVwZGF0ZVJlcG9zaXRvcnlQYXJhbXMsXHJcbiAgVmFyaWFudFJlcG9zaXRvcnksXHJcbiAgV2hlcmUsXHJcbn0gZnJvbSAnLi4vLi4vLi4vLi4vZG9tYWluJ1xyXG5pbXBvcnQgeyBOb3RGb3VuZEVycm9yIH0gZnJvbSAnLi4vLi4vLi4vLi4vZXJyb3JzJ1xyXG5pbXBvcnQgeyBCYXNlLCBpc05pbCB9IGZyb20gJy4uLy4uLy4uLy4uL3V0aWxzJ1xyXG5pbXBvcnQgeyBIYXN1cmFHcmFwaFFMQ29sdW1uVHlwZSB9IGZyb20gJy4uLy4uL2VudW1zJ1xyXG5pbXBvcnQgeyB3aXRoQ3J1ZEhhc3VyYUdyYXBoUUwsIHdpdGhIYXN1cmFHcmFwaFFMIH0gZnJvbSAnLi4vLi4vbWl4aW5zJ1xyXG5pbXBvcnQgeyBWYXJpYW50SGFzdXJhR3JhcGhRTCB9IGZyb20gJy4uLy4uL21vZGVscydcclxuaW1wb3J0IHsgSGFzdXJhR3JhcGhRTEF1dGhPcHRpb25zIH0gZnJvbSAnLi4vLi4vdHlwZXMnXHJcblxyXG5leHBvcnQgY2xhc3MgVmFyaWFudEhhc3VyYUdyYXBoUUxSZXBvc2l0b3J5XHJcbiAgZXh0ZW5kcyB3aXRoQ3J1ZEhhc3VyYUdyYXBoUUwod2l0aEhhc3VyYUdyYXBoUUw8VmFyaWFudEhhc3VyYUdyYXBoUUw+KEJhc2UpKVxyXG4gIGltcGxlbWVudHMgVmFyaWFudFJlcG9zaXRvcnlcclxue1xyXG4gIGNvbnN0cnVjdG9yKGVuZHBvaW50OiBzdHJpbmcsIGF1dGhPcHRpb25zOiBIYXN1cmFHcmFwaFFMQXV0aE9wdGlvbnMpIHtcclxuICAgIHN1cGVyKHtcclxuICAgICAgdGFibGVOYW1lOiAncHJvZHVjdCcsXHJcbiAgICAgIG1vZGVsOiBWYXJpYW50SGFzdXJhR3JhcGhRTCxcclxuICAgICAgZW5kcG9pbnQsXHJcbiAgICAgIGF1dGhPcHRpb25zLFxyXG4gICAgICBmaWVsZHM6IFtcclxuICAgICAgICB7IGlkOiB7IGNvbHVtbk5hbWU6ICdpZCcsIHRvOiAodmFsdWUpID0+ICt2YWx1ZSwgZnJvbTogKHZhbHVlKSA9PiB2YWx1ZS50b1N0cmluZygpIH0gfSxcclxuICAgICAgICB7IGZpcmVzdG9yZUlkOiB7IGNvbHVtbk5hbWU6ICdmaXJlc3RvcmVfaWQnIH0gfSxcclxuICAgICAgICB7IHByb2R1Y3RJZDogeyBjb2x1bW5OYW1lOiAnbWFpbl9wcm9kdWN0X2lkJywgdG86ICh2YWx1ZSkgPT4gK3ZhbHVlLCBmcm9tOiAodmFsdWUpID0+IHZhbHVlPy50b1N0cmluZygpIH0gfSxcclxuICAgICAgICB7IEVBTjogeyBjb2x1bW5OYW1lOiAnZWFuJyB9IH0sXHJcbiAgICAgICAgeyBjb3N0UHJpY2U6IHsgY29sdW1uTmFtZTogJ2Nvc3RfcHJpY2UnIH0gfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBwcmljZToge1xyXG4gICAgICAgICAgICBjb2x1bW5OYW1lOiAncHJpY2UnLFxyXG4gICAgICAgICAgICBmcm9tOiAocHJpY2UsIGRhdGEpOiBTaG9wUHJpY2UgPT4gKHtcclxuICAgICAgICAgICAgICBwcmljZSxcclxuICAgICAgICAgICAgICBmdWxsUHJpY2U6IGRhdGEuZnVsbF9wcmljZSxcclxuICAgICAgICAgICAgICBzdWJzY3JpYmVyRGlzY291bnRQZXJjZW50YWdlOiBkYXRhLnN1YnNjcmliZXJfZGlzY291bnRfcGVyY2VudGFnZSxcclxuICAgICAgICAgICAgICBzdWJzY3JpYmVyUHJpY2U6IGRhdGEuc3Vic2NyaWJlcl9wcmljZSxcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgIGJpbmRGaW5kRmlsdGVyOiAoc2VudGVuY2UpID0+IHtcclxuICAgICAgICAgICAgICBjb25zdCBmaWx0ZXJzID0gT2JqZWN0LnZhbHVlcyhzZW50ZW5jZSkuc2hpZnQoKVxyXG5cclxuICAgICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgLi4uKChmaWx0ZXJzPy5wcmljZSB8fCBmaWx0ZXJzPy5wcmljZSA9PT0gMCkgJiYgeyBwcmljZTogZmlsdGVycy5wcmljZSB9KSxcclxuICAgICAgICAgICAgICAgIC4uLigoZmlsdGVycy5mdWxsUHJpY2UgfHwgZmlsdGVycy5mdWxsUHJpY2UgPT09IDApICYmIHsgZnVsbF9wcmljZTogZmlsdGVycy5mdWxsUHJpY2UgfSksXHJcbiAgICAgICAgICAgICAgICAuLi4oKGZpbHRlcnMuc3Vic2NyaWJlckRpc2NvdW50UGVyY2VudGFnZSB8fCBmaWx0ZXJzLnN1YnNjcmliZXJEaXNjb3VudFBlcmNlbnRhZ2UgPT09IDApICYmIHtcclxuICAgICAgICAgICAgICAgICAgc3Vic2NyaWJlcl9kaXNjb3VudF9wZXJjZW50YWdlOiBmaWx0ZXJzLnN1YnNjcmliZXJEaXNjb3VudFBlcmNlbnRhZ2UsXHJcbiAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICAgIC4uLigoZmlsdGVycy5zdWJzY3JpYmVyUHJpY2UgfHwgZmlsdGVycy5zdWJzY3JpYmVyUHJpY2UgPT09IDApICYmIHtcclxuICAgICAgICAgICAgICAgICAgc3Vic2NyaWJlcl9wcmljZTogZmlsdGVycy5zdWJzY3JpYmVyUHJpY2UsXHJcbiAgICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGJpbmRQZXJzaXN0RGF0YTogKHByaWNlRGF0YSkgPT4gKHtcclxuICAgICAgICAgICAgICAuLi4ocHJpY2VEYXRhPy5wcmljZSA+PSAwICYmIHsgcHJpY2U6IHByaWNlRGF0YS5wcmljZSB9KSxcclxuICAgICAgICAgICAgICAuLi4ocHJpY2VEYXRhLmZ1bGxQcmljZSA+PSAwICYmIHsgZnVsbF9wcmljZTogcHJpY2VEYXRhLmZ1bGxQcmljZSB9KSxcclxuICAgICAgICAgICAgICAuLi4ocHJpY2VEYXRhLnN1YnNjcmliZXJEaXNjb3VudFBlcmNlbnRhZ2UgPj0gMCAmJiB7XHJcbiAgICAgICAgICAgICAgICBzdWJzY3JpYmVyX2Rpc2NvdW50X3BlcmNlbnRhZ2U6IHByaWNlRGF0YS5zdWJzY3JpYmVyRGlzY291bnRQZXJjZW50YWdlLFxyXG4gICAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICAgIC4uLihwcmljZURhdGEuc3Vic2NyaWJlclByaWNlID49IDAgJiYgeyBzdWJzY3JpYmVyX3ByaWNlOiBwcmljZURhdGEuc3Vic2NyaWJlclByaWNlIH0pLFxyXG4gICAgICAgICAgICB9KSxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfSxcclxuICAgICAgICB7IGZ1bGxQcmljZTogeyBjb2x1bW5OYW1lOiAnZnVsbF9wcmljZScgfSB9LFxyXG4gICAgICAgIHsgc3Vic2NyaWJlckRpc2NvdW50UGVyY2VudGFnZTogeyBjb2x1bW5OYW1lOiAnc3Vic2NyaWJlcl9kaXNjb3VudF9wZXJjZW50YWdlJyB9IH0sXHJcbiAgICAgICAgeyBzdWJzY3JpYmVyUHJpY2U6IHsgY29sdW1uTmFtZTogJ3N1YnNjcmliZXJfcHJpY2UnIH0gfSxcclxuICAgICAgICAnc2t1JyxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBzdG9jazoge1xyXG4gICAgICAgICAgICBjb2x1bW5OYW1lOiAnc3RvY2snLFxyXG4gICAgICAgICAgICBmcm9tOiAocXVhbnRpdHk6IG51bWJlcikgPT4gKHsgcXVhbnRpdHkgfSksXHJcbiAgICAgICAgICAgIHRvOiAodmFsdWUpID0+IChpc05pbCh2YWx1ZT8ucXVhbnRpdHkpID8gdmFsdWUgOiB2YWx1ZT8ucXVhbnRpdHkpLFxyXG4gICAgICAgICAgfSxcclxuICAgICAgICB9LFxyXG4gICAgICAgICd3ZWlnaHQnLFxyXG4gICAgICAgIHsgbmFtZTogeyB0bzogKCkgPT4gJycsIGZyb206ICgpID0+IHVuZGVmaW5lZCB9IH0sXHJcbiAgICAgICAgeyBoYXNWYXJpYW50czogeyBjb2x1bW5OYW1lOiAnaGFzX3ZhcmlhbnRzJywgdG86ICgpID0+IGZhbHNlLCBmcm9tOiAoKSA9PiB1bmRlZmluZWQgfSB9LFxyXG4gICAgICAgIHsgY3JlYXRlZEF0OiB7IGNvbHVtbk5hbWU6ICdjcmVhdGVkX2F0JyB9IH0sXHJcbiAgICAgICAgeyB1cGRhdGVkQXQ6IHsgY29sdW1uTmFtZTogJ3VwZGF0ZWRfYXQnIH0gfSxcclxuICAgICAgICB7XHJcbiAgICAgICAgICBncmFkZToge1xyXG4gICAgICAgICAgICBjb2x1bW5OYW1lOiAnZ3JhZGUnLFxyXG4gICAgICAgICAgICB0eXBlOiBIYXN1cmFHcmFwaFFMQ29sdW1uVHlwZS5Kc29uYixcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfSxcclxuICAgICAgXSxcclxuICAgIH0pXHJcbiAgfVxyXG5cclxuICBhc3luYyBnZXQoaWRlbnRpZmllcnM6IEdldFJlcG9zaXRvcnlQYXJhbXM8VmFyaWFudEhhc3VyYUdyYXBoUUw+KTogUHJvbWlzZTxWYXJpYW50SGFzdXJhR3JhcGhRTD4ge1xyXG4gICAgY29uc3QgdmFyaWFudCA9IE51bWJlci5pc05hTigraWRlbnRpZmllcnMuaWQpXHJcbiAgICAgID8gKGF3YWl0IHRoaXMuZmluZCh7IGZpbHRlcnM6IHsgZmlyZXN0b3JlSWQ6IGlkZW50aWZpZXJzLmlkIH0gfSkpLmRhdGE/LlswXVxyXG4gICAgICA6IGF3YWl0IHN1cGVyLmdldChpZGVudGlmaWVycylcclxuXHJcbiAgICBpZiAoIXZhcmlhbnQucHJvZHVjdElkKSB0aHJvdyBuZXcgTm90Rm91bmRFcnJvcihgVmFyaWFudCBub3QgZm91bmQsIGl0IGlzIGEgcHJvZHVjdGApXHJcblxyXG4gICAgcmV0dXJuIHZhcmlhbnRcclxuICB9XHJcblxyXG4gIGFzeW5jIGZpbmQocGFyYW1zPzogRmluZFJlcG9zaXRvcnlQYXJhbXM8VmFyaWFudEhhc3VyYUdyYXBoUUw+KTogUHJvbWlzZTxSZXBvc2l0b3J5RmluZFJlc3VsdDxWYXJpYW50SGFzdXJhR3JhcGhRTD4+IHtcclxuICAgIGNvbnN0IHsgZmlsdGVycywgLi4ub3B0aW9ucyB9ID0gcGFyYW1zIHx8IHt9XHJcblxyXG4gICAgcmV0dXJuIHN1cGVyLmZpbmQoeyAuLi5vcHRpb25zLCBmaWx0ZXJzOiB7IHByb2R1Y3RJZDogeyBvcGVyYXRvcjogV2hlcmUuSVNOT1ROVUxMIH0sIC4uLmZpbHRlcnMgfSB9KVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgdXBkYXRlKHBhcmFtczogVXBkYXRlUmVwb3NpdG9yeVBhcmFtczxWYXJpYW50SGFzdXJhR3JhcGhRTD4pOiBQcm9taXNlPFZhcmlhbnRIYXN1cmFHcmFwaFFMPiB7XHJcbiAgICBjb25zdCB7IHByb2R1Y3RJZCwgaWQ6IGNoZWNrSWQsIC4uLmRhdGEgfSA9IHBhcmFtc1xyXG4gICAgY29uc3QgZGF0YVdpdGhQcm9kdWN0SWQgPSB0aGlzLnBhcmFtc1RvUGxhaW4oeyBpZDogY2hlY2tJZCwgcHJvZHVjdElkIH0pXHJcbiAgICBjb25zdCBpZCA9IGF3YWl0IHRoaXMuZ2V0SWQoZGF0YVdpdGhQcm9kdWN0SWQuaWQpXHJcbiAgICBjb25zdCBwcm9kdWN0ID0gYXdhaXQgc3VwZXIudXBkYXRlKHsgaWQsIC4uLmRhdGEgfSlcclxuXHJcbiAgICBwcm9kdWN0LnByb2R1Y3RJZCA9IGRhdGFXaXRoUHJvZHVjdElkLnByb2R1Y3RJZFxyXG5cclxuICAgIHJldHVybiBwcm9kdWN0XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGFzeW5jIGdldElkKGlkOiBzdHJpbmcpOiBQcm9taXNlPHN0cmluZz4ge1xyXG4gICAgaWYgKCFOdW1iZXIuaXNOYU4oK2lkKSkgcmV0dXJuIGlkXHJcblxyXG4gICAgY29uc3QgeyBkYXRhIH0gPSBhd2FpdCB0aGlzLmZpbmQoeyBmaWx0ZXJzOiB7IGZpcmVzdG9yZUlkOiBpZCB9IH0pXHJcblxyXG4gICAgaWYgKGRhdGE/LlswXT8uaWQpIHJldHVybiBkYXRhPy5bMF0/LmlkXHJcblxyXG4gICAgdGhyb3cgbmV3IE5vdEZvdW5kRXJyb3IoYFByb2R1Y3Qgd2l0aCBpZCAke2lkfSBub3QgZm91bmRgKVxyXG4gIH1cclxufVxyXG4iXX0=
116
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmFyaWFudC1oYXN1cmEtZ3JhcGhxbC5yZXBvc2l0b3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvY29ubmVjdC9zcmMvaW5mcmEvaGFzdXJhLWdyYXBocWwvcmVwb3NpdG9yaWVzL2NhdGFsb2cvdmFyaWFudC1oYXN1cmEtZ3JhcGhxbC5yZXBvc2l0b3J5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBT0wsS0FBSyxHQUNOLE1BQU0sb0JBQW9CLENBQUE7QUFDM0IsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLG9CQUFvQixDQUFBO0FBQ2xELE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFDL0MsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sYUFBYSxDQUFBO0FBQ3JELE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQUN2RSxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSxjQUFjLENBQUE7QUFHbkQsTUFBTSxPQUFPLDhCQUNYLFNBQVEscUJBQXFCLENBQUMsaUJBQWlCLENBQXVCLElBQUksQ0FBQyxDQUFDO0lBRzVFLFlBQVksUUFBZ0IsRUFBRSxXQUFxQztRQUNqRSxLQUFLLENBQUM7WUFDSixTQUFTLEVBQUUsU0FBUztZQUNwQixLQUFLLEVBQUUsb0JBQW9CO1lBQzNCLFFBQVE7WUFDUixXQUFXO1lBQ1gsTUFBTSxFQUFFO2dCQUNOLEVBQUUsRUFBRSxFQUFFLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxFQUFFLEVBQUUsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLENBQUMsS0FBSyxFQUFFLElBQUksRUFBRSxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxFQUFFLEVBQUU7Z0JBQ3RGLEVBQUUsV0FBVyxFQUFFLEVBQUUsVUFBVSxFQUFF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VTs7O1lBQzVCLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO2dCQUFFLE9BQU8sRUFBRSxDQUFBO1lBRWpDLE1BQU0sRUFBRSxJQUFJLEVBQUUsR0FBRyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxPQUFPLEVBQUUsRUFBRSxXQUFXLEVBQUUsRUFBRSxFQUFFLEVBQUUsT0FBTyxFQUFFLEVBQUUsV0FBVyxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQTtZQUVuRyxJQUFJLE1BQUEsSUFBSSxhQUFKLElBQUksdUJBQUosSUFBSSxDQUFHLENBQUMsQ0FBQywwQ0FBRSxFQUFFO2dCQUFFLE9BQU8sTUFBQSxJQUFJLGFBQUosSUFBSSx1QkFBSixJQUFJLENBQUcsQ0FBQyxDQUFDLDBDQUFFLEVBQUUsQ0FBQTtZQUV2QyxNQUFNLElBQUksYUFBYSxDQUFDLG1CQUFtQixFQUFFLFlBQVksQ0FBQyxDQUFBOztLQUMzRDtDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBGaW5kUmVwb3NpdG9yeVBhcmFtcyxcclxuICBHZXRSZXBvc2l0b3J5UGFyYW1zLFxyXG4gIFJlcG9zaXRvcnlGaW5kUmVzdWx0LFxyXG4gIFNob3BQcmljZSxcclxuICBVcGRhdGVSZXBvc2l0b3J5UGFyYW1zLFxyXG4gIFZhcmlhbnRSZXBvc2l0b3J5LFxyXG4gIFdoZXJlLFxyXG59IGZyb20gJy4uLy4uLy4uLy4uL2RvbWFpbidcclxuaW1wb3J0IHsgTm90Rm91bmRFcnJvciB9IGZyb20gJy4uLy4uLy4uLy4uL2Vycm9ycydcclxuaW1wb3J0IHsgQmFzZSwgaXNOaWwgfSBmcm9tICcuLi8uLi8uLi8uLi91dGlscydcclxuaW1wb3J0IHsgSGFzdXJhR3JhcGhRTENvbHVtblR5cGUgfSBmcm9tICcuLi8uLi9lbnVtcydcclxuaW1wb3J0IHsgd2l0aENydWRIYXN1cmFHcmFwaFFMLCB3aXRoSGFzdXJhR3JhcGhRTCB9IGZyb20gJy4uLy4uL21peGlucydcclxuaW1wb3J0IHsgVmFyaWFudEhhc3VyYUdyYXBoUUwgfSBmcm9tICcuLi8uLi9tb2RlbHMnXHJcbmltcG9ydCB7IEhhc3VyYUdyYXBoUUxBdXRoT3B0aW9ucyB9IGZyb20gJy4uLy4uL3R5cGVzJ1xyXG5cclxuZXhwb3J0IGNsYXNzIFZhcmlhbnRIYXN1cmFHcmFwaFFMUmVwb3NpdG9yeVxyXG4gIGV4dGVuZHMgd2l0aENydWRIYXN1cmFHcmFwaFFMKHdpdGhIYXN1cmFHcmFwaFFMPFZhcmlhbnRIYXN1cmFHcmFwaFFMPihCYXNlKSlcclxuICBpbXBsZW1lbnRzIFZhcmlhbnRSZXBvc2l0b3J5XHJcbntcclxuICBjb25zdHJ1Y3RvcihlbmRwb2ludDogc3RyaW5nLCBhdXRoT3B0aW9uczogSGFzdXJhR3JhcGhRTEF1dGhPcHRpb25zKSB7XHJcbiAgICBzdXBlcih7XHJcbiAgICAgIHRhYmxlTmFtZTogJ3Byb2R1Y3QnLFxyXG4gICAgICBtb2RlbDogVmFyaWFudEhhc3VyYUdyYXBoUUwsXHJcbiAgICAgIGVuZHBvaW50LFxyXG4gICAgICBhdXRoT3B0aW9ucyxcclxuICAgICAgZmllbGRzOiBbXHJcbiAgICAgICAgeyBpZDogeyBjb2x1bW5OYW1lOiAnaWQnLCB0bzogKHZhbHVlKSA9PiArdmFsdWUsIGZyb206ICh2YWx1ZSkgPT4gdmFsdWUudG9TdHJpbmcoKSB9IH0sXHJcbiAgICAgICAgeyBmaXJlc3RvcmVJZDogeyBjb2x1bW5OYW1lOiAnZmlyZXN0b3JlX2lkJyB9IH0sXHJcbiAgICAgICAgeyBwcm9kdWN0SWQ6IHsgY29sdW1uTmFtZTogJ21haW5fcHJvZHVjdF9pZCcsIHRvOiAodmFsdWUpID0+ICt2YWx1ZSwgZnJvbTogKHZhbHVlKSA9PiB2YWx1ZT8udG9TdHJpbmcoKSB9IH0sXHJcbiAgICAgICAgeyBFQU46IHsgY29sdW1uTmFtZTogJ2VhbicgfSB9LFxyXG4gICAgICAgIHsgY29zdFByaWNlOiB7IGNvbHVtbk5hbWU6ICdjb3N0X3ByaWNlJyB9IH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgcHJpY2U6IHtcclxuICAgICAgICAgICAgY29sdW1uTmFtZTogJ3ByaWNlJyxcclxuICAgICAgICAgICAgZnJvbTogKHByaWNlLCBkYXRhKTogU2hvcFByaWNlID0+ICh7XHJcbiAgICAgICAgICAgICAgcHJpY2UsXHJcbiAgICAgICAgICAgICAgZnVsbFByaWNlOiBkYXRhLmZ1bGxfcHJpY2UsXHJcbiAgICAgICAgICAgICAgc3Vic2NyaWJlckRpc2NvdW50UGVyY2VudGFnZTogZGF0YS5zdWJzY3JpYmVyX2Rpc2NvdW50X3BlcmNlbnRhZ2UsXHJcbiAgICAgICAgICAgICAgc3Vic2NyaWJlclByaWNlOiBkYXRhLnN1YnNjcmliZXJfcHJpY2UsXHJcbiAgICAgICAgICAgIH0pLFxyXG4gICAgICAgICAgICBiaW5kRmluZEZpbHRlcjogKHNlbnRlbmNlKSA9PiB7XHJcbiAgICAgICAgICAgICAgY29uc3QgZmlsdGVycyA9IE9iamVjdC52YWx1ZXMoc2VudGVuY2UpLnNoaWZ0KClcclxuXHJcbiAgICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgIC4uLigoZmlsdGVycz8ucHJpY2UgfHwgZmlsdGVycz8ucHJpY2UgPT09IDApICYmIHsgcHJpY2U6IGZpbHRlcnMucHJpY2UgfSksXHJcbiAgICAgICAgICAgICAgICAuLi4oKGZpbHRlcnMuZnVsbFByaWNlIHx8IGZpbHRlcnMuZnVsbFByaWNlID09PSAwKSAmJiB7IGZ1bGxfcHJpY2U6IGZpbHRlcnMuZnVsbFByaWNlIH0pLFxyXG4gICAgICAgICAgICAgICAgLi4uKChmaWx0ZXJzLnN1YnNjcmliZXJEaXNjb3VudFBlcmNlbnRhZ2UgfHwgZmlsdGVycy5zdWJzY3JpYmVyRGlzY291bnRQZXJjZW50YWdlID09PSAwKSAmJiB7XHJcbiAgICAgICAgICAgICAgICAgIHN1YnNjcmliZXJfZGlzY291bnRfcGVyY2VudGFnZTogZmlsdGVycy5zdWJzY3JpYmVyRGlzY291bnRQZXJjZW50YWdlLFxyXG4gICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICAgICAuLi4oKGZpbHRlcnMuc3Vic2NyaWJlclByaWNlIHx8IGZpbHRlcnMuc3Vic2NyaWJlclByaWNlID09PSAwKSAmJiB7XHJcbiAgICAgICAgICAgICAgICAgIHN1YnNjcmliZXJfcHJpY2U6IGZpbHRlcnMuc3Vic2NyaWJlclByaWNlLFxyXG4gICAgICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBiaW5kUGVyc2lzdERhdGE6IChwcmljZURhdGEpID0+ICh7XHJcbiAgICAgICAgICAgICAgLi4uKHByaWNlRGF0YT8ucHJpY2UgPj0gMCAmJiB7IHByaWNlOiBwcmljZURhdGEucHJpY2UgfSksXHJcbiAgICAgICAgICAgICAgLi4uKHByaWNlRGF0YS5mdWxsUHJpY2UgPj0gMCAmJiB7IGZ1bGxfcHJpY2U6IHByaWNlRGF0YS5mdWxsUHJpY2UgfSksXHJcbiAgICAgICAgICAgICAgLi4uKHByaWNlRGF0YS5zdWJzY3JpYmVyRGlzY291bnRQZXJjZW50YWdlID49IDAgJiYge1xyXG4gICAgICAgICAgICAgICAgc3Vic2NyaWJlcl9kaXNjb3VudF9wZXJjZW50YWdlOiBwcmljZURhdGEuc3Vic2NyaWJlckRpc2NvdW50UGVyY2VudGFnZSxcclxuICAgICAgICAgICAgICB9KSxcclxuICAgICAgICAgICAgICAuLi4ocHJpY2VEYXRhLnN1YnNjcmliZXJQcmljZSA+PSAwICYmIHsgc3Vic2NyaWJlcl9wcmljZTogcHJpY2VEYXRhLnN1YnNjcmliZXJQcmljZSB9KSxcclxuICAgICAgICAgICAgfSksXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgeyBmdWxsUHJpY2U6IHsgY29sdW1uTmFtZTogJ2Z1bGxfcHJpY2UnIH0gfSxcclxuICAgICAgICB7IHN1YnNjcmliZXJEaXNjb3VudFBlcmNlbnRhZ2U6IHsgY29sdW1uTmFtZTogJ3N1YnNjcmliZXJfZGlzY291bnRfcGVyY2VudGFnZScgfSB9LFxyXG4gICAgICAgIHsgc3Vic2NyaWJlclByaWNlOiB7IGNvbHVtbk5hbWU6ICdzdWJzY3JpYmVyX3ByaWNlJyB9IH0sXHJcbiAgICAgICAgJ3NrdScsXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgc3RvY2s6IHtcclxuICAgICAgICAgICAgY29sdW1uTmFtZTogJ3N0b2NrJyxcclxuICAgICAgICAgICAgZnJvbTogKHF1YW50aXR5OiBudW1iZXIpID0+ICh7IHF1YW50aXR5IH0pLFxyXG4gICAgICAgICAgICB0bzogKHZhbHVlKSA9PiAoaXNOaWwodmFsdWU/LnF1YW50aXR5KSA/IHZhbHVlIDogdmFsdWU/LnF1YW50aXR5KSxcclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgfSxcclxuICAgICAgICAnd2VpZ2h0JyxcclxuICAgICAgICB7IG5hbWU6IHsgdG86ICgpID0+ICcnLCBmcm9tOiAoKSA9PiB1bmRlZmluZWQgfSB9LFxyXG4gICAgICAgIHsgaGFzVmFyaWFudHM6IHsgY29sdW1uTmFtZTogJ2hhc192YXJpYW50cycsIHRvOiAoKSA9PiBmYWxzZSwgZnJvbTogKCkgPT4gdW5kZWZpbmVkIH0gfSxcclxuICAgICAgICB7IGNyZWF0ZWRBdDogeyBjb2x1bW5OYW1lOiAnY3JlYXRlZF9hdCcgfSB9LFxyXG4gICAgICAgIHsgdXBkYXRlZEF0OiB7IGNvbHVtbk5hbWU6ICd1cGRhdGVkX2F0JyB9IH0sXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgZ3JhZGU6IHtcclxuICAgICAgICAgICAgY29sdW1uTmFtZTogJ2dyYWRlJyxcclxuICAgICAgICAgICAgdHlwZTogSGFzdXJhR3JhcGhRTENvbHVtblR5cGUuSnNvbmIsXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgIH0sXHJcbiAgICAgIF0sXHJcbiAgICB9KVxyXG4gIH1cclxuXHJcbiAgYXN5bmMgZ2V0KGlkZW50aWZpZXJzOiBHZXRSZXBvc2l0b3J5UGFyYW1zPFZhcmlhbnRIYXN1cmFHcmFwaFFMPik6IFByb21pc2U8VmFyaWFudEhhc3VyYUdyYXBoUUw+IHtcclxuICAgIGNvbnN0IHZhcmlhbnQgPSBOdW1iZXIuaXNOYU4oK2lkZW50aWZpZXJzLmlkKVxyXG4gICAgICA/IChhd2FpdCB0aGlzLmZpbmQoeyBmaWx0ZXJzOiB7IGZpcmVzdG9yZUlkOiBpZGVudGlmaWVycy5pZCB9IH0pKS5kYXRhPy5bMF1cclxuICAgICAgOiBhd2FpdCBzdXBlci5nZXQoaWRlbnRpZmllcnMpXHJcblxyXG4gICAgaWYgKCF2YXJpYW50LnByb2R1Y3RJZCkgdGhyb3cgbmV3IE5vdEZvdW5kRXJyb3IoYFZhcmlhbnQgbm90IGZvdW5kLCBpdCBpcyBhIHByb2R1Y3RgKVxyXG5cclxuICAgIHJldHVybiB2YXJpYW50XHJcbiAgfVxyXG5cclxuICBhc3luYyBmaW5kKHBhcmFtcz86IEZpbmRSZXBvc2l0b3J5UGFyYW1zPFZhcmlhbnRIYXN1cmFHcmFwaFFMPik6IFByb21pc2U8UmVwb3NpdG9yeUZpbmRSZXN1bHQ8VmFyaWFudEhhc3VyYUdyYXBoUUw+PiB7XHJcbiAgICBjb25zdCB7IGZpbHRlcnMsIC4uLm9wdGlvbnMgfSA9IHBhcmFtcyB8fCB7fVxyXG5cclxuICAgIHJldHVybiBzdXBlci5maW5kKHsgLi4ub3B0aW9ucywgZmlsdGVyczogeyBwcm9kdWN0SWQ6IHsgb3BlcmF0b3I6IFdoZXJlLklTTk9UTlVMTCB9LCAuLi5maWx0ZXJzIH0gfSlcclxuICB9XHJcblxyXG4gIGFzeW5jIHVwZGF0ZShwYXJhbXM6IFVwZGF0ZVJlcG9zaXRvcnlQYXJhbXM8VmFyaWFudEhhc3VyYUdyYXBoUUw+KTogUHJvbWlzZTxWYXJpYW50SGFzdXJhR3JhcGhRTD4ge1xyXG4gICAgY29uc3QgeyBwcm9kdWN0SWQsIGlkOiBjaGVja0lkLCAuLi5kYXRhIH0gPSBwYXJhbXNcclxuICAgIGNvbnN0IGRhdGFXaXRoUHJvZHVjdElkID0gdGhpcy5wYXJhbXNUb1BsYWluKHsgaWQ6IGNoZWNrSWQsIHByb2R1Y3RJZCB9KVxyXG4gICAgY29uc3QgaWQgPSBhd2FpdCB0aGlzLmdldElkKGRhdGFXaXRoUHJvZHVjdElkLmlkKVxyXG4gICAgY29uc3QgcHJvZHVjdCA9IGF3YWl0IHN1cGVyLnVwZGF0ZSh7IGlkLCAuLi5kYXRhIH0pXHJcblxyXG4gICAgcHJvZHVjdC5wcm9kdWN0SWQgPSBkYXRhV2l0aFByb2R1Y3RJZC5wcm9kdWN0SWRcclxuXHJcbiAgICByZXR1cm4gcHJvZHVjdFxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBhc3luYyBnZXRJZChpZDogc3RyaW5nKTogUHJvbWlzZTxzdHJpbmc+IHtcclxuICAgIGlmICghTnVtYmVyLmlzTmFOKCtpZCkpIHJldHVybiBpZFxyXG5cclxuICAgIGNvbnN0IHsgZGF0YSB9ID0gYXdhaXQgdGhpcy5maW5kKHsgZmlsdGVyczogeyBmaXJlc3RvcmVJZDogaWQgfSwgb3B0aW9uczogeyBlbmFibGVDb3VudDogZmFsc2UgfSB9KVxyXG5cclxuICAgIGlmIChkYXRhPy5bMF0/LmlkKSByZXR1cm4gZGF0YT8uWzBdPy5pZFxyXG5cclxuICAgIHRocm93IG5ldyBOb3RGb3VuZEVycm9yKGBQcm9kdWN0IHdpdGggaWQgJHtpZH0gbm90IGZvdW5kYClcclxuICB9XHJcbn1cclxuIl19