@trudb/tru-common-lib 0.1.638 → 0.1.639

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.
@@ -114,10 +114,7 @@ export class TruCloneView extends TruViewBase {
114
114
  let childProperties = [];
115
115
  childNavigationPropertyNames.filter(function (n) {
116
116
  if (currentEntity[n] && currentEntity[n].length)
117
- childProperties.push({
118
- parentToChildRefName: n,
119
- entities: currentEntity[n]
120
- });
117
+ childProperties.push(currentEntity[n]);
121
118
  });
122
119
  return childProperties;
123
120
  };
@@ -128,21 +125,19 @@ export class TruCloneView extends TruViewBase {
128
125
  };
129
126
  buildCloneTree = (currentEntity, node) => {
130
127
  var childProperties = this.getChildPropertiesForCurrentEntity(currentEntity);
131
- childProperties.forEach((childProperty) => {
132
- childProperty.entities.forEach((entity) => {
133
- let type = this.getTypeFromEntityTypeName(entity.$type);
134
- let childLookup = this.modelTableLookup.lookup.get(type);
135
- let groupNode = new Node(null, entity.constructor.name, childLookup?.pluralLabel, false, true, [], '', childProperty.parentToChildRefName, false, node, null);
136
- this.flatList.push(groupNode);
137
- childProperties.forEach((childProperty) => {
138
- let type = this.getTypeFromEntityTypeName(entity.$type);
139
- let childNode = new Node(entity[type + 'Ref'], type, type, true, true, [], '', childProperty.parentToChildRefName, false, groupNode, entity);
140
- this.childFlatList.push(childNode);
141
- groupNode.nodes.push(childNode);
142
- this.buildCloneTree(entity, childNode);
143
- });
144
- node.nodes.push(groupNode);
128
+ childProperties.forEach((childEntities) => {
129
+ let type = this.getTypeFromEntityTypeName(childEntities[0].$type);
130
+ let childLookup = this.modelTableLookup.lookup.get(type);
131
+ let groupNode = new Node(null, childEntities[0].constructor.name, childLookup?.pluralLabel, false, true, [], '', null, false, node, null);
132
+ this.flatList.push(groupNode);
133
+ childEntities.forEach((childEntity) => {
134
+ let type = this.getTypeFromEntityTypeName(childEntity.$type);
135
+ let childNode = new Node(childEntity[type + 'Ref'], type, type, true, true, [], '', null, false, groupNode, childEntity);
136
+ this.childFlatList.push(childNode);
137
+ groupNode.nodes.push(childNode);
138
+ this.buildCloneTree(childEntity, childNode);
145
139
  });
140
+ node.nodes.push(groupNode);
146
141
  });
147
142
  };
148
143
  asyncForEachRecordId = (arr, cb) => {
@@ -338,4 +333,4 @@ class Node {
338
333
  }
339
334
  };
340
335
  }
341
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LWNsb25lLXZpZXcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90cnUtY29tbW9uLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvY2xvbmUtdmlldy90cnUtY2xvbmUtdmlldy50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RydS1jb21tb24tbGliL3NyYy9saWIvY29tcG9uZW50cy9jbG9uZS12aWV3L3RydS1jbG9uZS12aWV3Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBUyxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWtCN0QsTUFBTSxPQUFPLFlBQWEsU0FBUSxXQUFXO0lBa0MvQjtJQUNBO0lBQ0Y7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBeENWLE9BQU8sR0FBWSxJQUFJLENBQUM7SUFDeEIsY0FBYyxHQUFXLGtDQUFrQyxDQUFDO0lBQzVELGNBQWMsQ0FBa0M7SUFDaEQsc0JBQXNCLENBQTRCO0lBQ2xELGNBQWMsR0FBRyxJQUFJLENBQUM7SUFDdEIsUUFBUSxHQUFnQixJQUFJLENBQUM7SUFDN0Isa0JBQWtCLEdBQUc7UUFDbkIsWUFBWTtRQUNaLFNBQVM7UUFDVCxZQUFZO1FBQ1osU0FBUztRQUNULFFBQVE7UUFDUix5QkFBeUI7UUFDekIsY0FBYztRQUNkLHVCQUF1QjtRQUN2QixlQUFlO1FBQ2YsY0FBYztRQUNkLFlBQVk7UUFDWixZQUFZO1FBQ1osZUFBZTtRQUNmLGFBQWE7UUFDYixhQUFhO1FBQ2IsdUJBQXVCO1FBQ3ZCLEtBQUs7S0FDTixDQUFDO0lBQ0YsUUFBUSxHQUFHLEVBQUUsQ0FBQztJQUNkLFFBQVEsR0FBZ0IsRUFBRSxDQUFDO0lBQzNCLGFBQWEsR0FBZ0IsRUFBRSxDQUFDO0lBQ2hDLGNBQWMsR0FBVyxDQUFD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QUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7WUFDaEMsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLElBQUksaUJBQWlCLEdBQUcsQ0FBQyxJQUFTLEVBQUUsRUFBRTtvQkFDcEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFNLEVBQUUsRUFBRTt3QkFDekIsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUM7d0JBQ3JCLENBQUMsQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO29CQUNwQixDQUFDLENBQUMsQ0FBQztnQkFDTCxDQUFDLENBQUM7Z0JBQ0YsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFNLEVBQUUsRUFBRTtvQkFDekIsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQ3JCLENBQUMsQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO2dCQUNwQixDQUFDLENBQUMsQ0FBQztZQUNMLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQyxDQUFBO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFRydVZpZXdCYXNlIH0gZnJvbSAnLi4vLi4vYmFzZS12aWV3cy90cnUtdmlldy1iYXNlJztcclxuaW1wb3J0IHsgVHJ1RGF0YUNvbnRleHQgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90cnUtZGF0YS1jb250ZXh0JztcclxuaW1wb3J0IHsgSVRydVRvb2xiYXJEcm9wZG93bk9wdGlvbiB9IGZyb20gJy4uL3Rvb2xiYXIvY2xhc3Nlcy90cnUtdG9vbGJhci1kcm9wZG93bi1vcHRpb24nO1xyXG5pbXBvcnQgeyBUcnVUZXh0TWFuYWdlciB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RydS10ZXh0LW1hbmFnZXInO1xyXG5pbXBvcnQgeyBUcnVXaW5kb3dFdmVudEhhbmRsZXIgfSBmcm9tICcuLi9kZXNrdG9wL3NlcnZpY2VzL3RydS13aW5kb3ctZXZlbnQtaGFuZGxlcic7XHJcbmltcG9ydCB7IFRydU1vZGVsVGFibGVMb29rdXAgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90cnUtbW9kZWwtdGFibGUtbG9va3VwJztcclxuaW1wb3J0IHsgVHJ1VWlOb3RpZmljYXRpb24gfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90cnUtdWktbm90aWZpY2F0aW9uJztcclxuaW1wb3J0IHsgVHJ1TW9kZWxQcm9wZXJ0eUxvb2t1cCB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RydS1tb2RlbC1wcm9wZXJ0eS1sb29rdXAnO1xyXG5pbXBvcnQgeyBUcnVNb2RlbFR5cGVMb29rdXAgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90cnUtbW9kZWwtdHlwZS1sb29rdXAnO1xyXG5pbXBvcnQgeyBUcnVNb2RlbE5hdmlnYXRpb25Qcm9wZXJ0aWVzTG9va3VwIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdHJ1LW1vZGVsLW5hdmlnYXRpb24tcHJvcGVydGllcy1sb29rdXAnO1xyXG5pbXBvcnQgeyBUcnVOYXZpZ2F0aW9uUHJvcGVydHlDb25maWcgfSBmcm9tICcuLi8uLi9jbGFzc2VzL3RydS1uYXZpZ2F0aW9uLXByb3BlcnR5LWNvbmZpZyc7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICd0cnUtY2xvbmUtdmlldycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RydS1jbG9uZS12aWV3Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3RydS1jbG9uZS12aWV3LmNzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUcnVDbG9uZVZpZXcgZXh0ZW5kcyBUcnVWaWV3QmFzZSB7XHJcbiAgbG9hZGluZzogYm9vbGVhbiA9IHRydWU7XHJcbiAgbG9hZGluZ01lc3NhZ2U6IHN0cmluZyA9ICdTZWFyY2hpbmcgZm9yIHJlbGF0ZWQgcmVjb3Jkcy4uLic7XHJcbiAgbnVtYmVyT2ZDb3BpZXM6IEFycmF5PElUcnVUb29sYmFyRHJvcGRvd25PcHRpb24+XHJcbiAgc2VsZWN0ZWROdW1iZXJPZkNvcGllczogSVRydVRvb2xiYXJEcm9wZG93bk9wdGlvbjtcclxuICBjb250ZXh0RmlsdGVycyA9IG51bGw7XHJcbiAgcm9vdE5vZGU6IE5vZGUgfCBudWxsID0gbnVsbDsgXHJcbiAgaWdub3JlUHJvcGVydHlMaXN0ID0gW1xyXG4gICAgJ0NyZWF0ZWRSZWYnLFxyXG4gICAgJ0NyZWF0ZWQnLFxyXG4gICAgJ1VwZGF0ZWRSZWYnLFxyXG4gICAgJ1VwZGF0ZWQnLFxyXG4gICAgJ3Jvd3ZlcicsXHJcbiAgICAnX2N1c3RvbVZhbGlkYXRpb25FcnJvcnMnLFxyXG4gICAgJ2VudGl0eUFzcGVjdCcsXHJcbiAgICAnX2Fzc29jaWF0ZWREYXRhQ2FjaGVkJyxcclxuICAgICdfYmFja2luZ1N0b3JlJyxcclxuICAgICdfc2V0RGVmYXVsdHMnLFxyXG4gICAgJ18kdHlwZU5hbWUnLFxyXG4gICAgJ2VudGl0eVR5cGUnLFxyXG4gICAgJ18kaW50ZXJjZXB0b3InLFxyXG4gICAgJ2dldFByb3BlcnR5JyxcclxuICAgICdzZXRQcm9wZXJ0eScsXHJcbiAgICAnX3BlbmRpbmdCYWNraW5nU3RvcmVzJyxcclxuICAgICdSZWYnXHJcbiAgXTtcclxuICBkYXRhVHJlZSA9IFtdO1xyXG4gIGZsYXRMaXN0OiBBcnJheTxOb2RlPiA9IFtdO1xyXG4gIGNoaWxkRmxhdExpc3Q6IEFycmF5PE5vZGU+ID0gW107XHJcbiAgcHJvY2Vzc2VkQ291bnQ6IG51bWJlciA9IDA7XHJcbiAgZG9uZVByb2Nlc3Npbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBkaXNwbGF5VHJlZSA9IFt0aGlzLnJvb3ROb2RlXTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcm90ZWN0ZWQgdGV4dE1hbmFnZXI6IFRydVRleHRNYW5hZ2VyLFxyXG4gICAgcHJvdGVjdGVkIHdpbmRvd0V2ZW50SGFuZGxlcjogVHJ1V2luZG93RXZlbnRIYW5kbGVyLFxyXG4gICAgcHJpdmF0ZSBkYXRhQ29udGV4dDogVHJ1RGF0YUNvbnRleHQsXHJcbiAgICBwcml2YXRlIG1vZGVsVGFibGVMb29rdXA6IFRydU1vZGVsVGFibGVMb29rdXAsXHJcbiAgICBwcml2YXRlIG1vZGVsUHJvcGVydHlMb29rdXA6IFRydU1vZGVsUHJvcGVydHlMb29rdXAsXHJcbiAgICBwcml2YXRlIG1vZGVsVHlwZUxvb2t1cDogVHJ1TW9kZWxUeXBlTG9va3VwLFxyXG4gICAgcHJpdmF0ZSBtb2RlbE5hdmlnYXRpb25Qcm9wZXJ0aWVzTG9va3VwOiBUcnVNb2RlbE5hdmlnYXRpb25Qcm9wZXJ0aWVzTG9va3VwLFxyXG4gICAgcHJpdmF0ZSB1aU5vdGlmaWNhdGlvbjogVHJ1VWlOb3RpZmljYXRpb24pIHtcclxuICAgIHN1cGVyKHRleHRNYW5hZ2VyLCB3aW5kb3dFdmVudEhhbmRsZXIpO1xyXG4gICAgdGhpcy5udW1iZXJPZkNvcGllcyA9IHRoaXMuZ2V0TnVtYmVyT2ZDb3BpZXMoKTtcclxuICAgIHRoaXMuc2VsZWN0ZWROdW1iZXJPZkNvcGllcyA9IHRoaXMubnVtYmVyT2ZDb3BpZXNbMF07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldE51bWJlck9mQ29waWVzID0gKCk6IEFycmF5PElUcnVUb29sYmFyRHJvcGRvd25PcHRpb24+ID0+IHtcclxuICAgIGxldCBjb3BpZXM6IEFycmF5PElUcnVUb29sYmFyRHJvcGRvd25PcHRpb24+ID0gW107XHJcbiAgICBmb3IgKHZhciBpID0gMTsgaSA8PSAyNTsgaSsrKSB7XHJcbiAgICAgIGNvcGllcy5wdXNoKHtcclxuICAgICAgICB2YWx1ZTogaSxcclxuICAgICAgICBsYWJlbDogaS50b1N0cmluZygpXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGNvcGllcztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcHJvcGVydHlJc0FsbG93ZWQgPSAocHJvcGVydHlOYW1lOiBzdHJpbmcsIHRhYmxlTmFtZTogc3RyaW5nKSA9PiB7XHJcbiAgICBpZiAocHJvcGVydHlOYW1lID09PSB0YWJsZU5hbWUgKyAnUmVmJykgcmV0dXJuIGZhbHNlO1xyXG4gICAgaWYgKHByb3BlcnR5TmFtZS5zdGFydHNXaXRoKCdvJykpIHJldHVybiBmYWxzZTtcclxuICAgIGxldCBwcm9wZXJ0eSA9IHRoaXMubW9kZWxQcm9wZXJ0eUxvb2t1cC5sb29rdXAuZ2V0KHByb3BlcnR5TmFtZSk7XHJcbiAgICBpZiAocHJvcGVydHkgJiYgcHJvcGVydHkuZXhjbHVkZUZyb21DbG9uaW5nKSByZXR1cm4gZmFsc2U7XHJcbiAgICBpZiAodGhpcy5pZ25vcmVQcm9wZXJ0eUxpc3Quc29tZShmdW5jdGlvbiAocHJvcGVydHlUb0lnbm9yZSkgeyByZXR1cm4gcHJvcGVydHlUb0lnbm9yZSA9PT0gcHJvcGVydHlOYW1lOyB9KSkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgIGdldFByb3RvdHlwZVByb3BlcnRpZXMgPSAob2JqOiBhbnkpID0+IHtcclxuICAgIHZhciByZXN1bHQgPSBbXTtcclxuICAgIGZvciAodmFyIHByb3AgaW4gb2JqKSB7XHJcbiAgICAgIGlmICghb2JqLmhhc093blByb3BlcnR5KHByb3ApKSB7XHJcbiAgICAgICAgcmVzdWx0LnB1c2gocHJvcCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiByZXN1bHQ7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldENoaWxkUHJvcGVydGllc0ZvckN1cnJlbnRFbnRpdHkgPSAoY3VycmVudEVudGl0eTogYW55KSA9PiB7XHJcbiAgICAvL3ZhciBwcm9wZXJ0eU5hbWVzID0gT2JqZWN0LmtleXMoT2JqZWN0LmdldFByb3RvdHlwZU9mKGN1cnJlbnRFbnRpdHkpKTtcclxuICAgIGxldCBlbnRpdHlOYW1lID0gdGhpcy5nZXRUeXBlRnJvbUVudGl0eVR5cGVOYW1lKGN1cnJlbnRFbnRpdHkuJHR5cGUpO1xyXG4gICAgbGV0IGNoaWxkTG9va3VwID0gdGhpcy5tb2RlbE5hdmlnYXRpb25Qcm9wZXJ0aWVzTG9va3VwLmxvb2t1cC5nZXQoZW50aXR5TmFtZSkgYXMgVHJ1TmF2aWdhdGlvblByb3BlcnR5Q29uZmlnW107XHJcbiAgICBsZXQgcHJvcGVydHlOYW1lcyA9IE9iamVjdC5rZXlzKGN1cnJlbnRFbnRpdHkpO1xyXG4gICAgbGV0IG5hdmlnYXRpb25Qcm9wZXJ0eU5hbWVzID0gcHJvcGVydHlOYW1lcy5maWx0ZXIoKG4pID0+IHsgcmV0dXJuIG4uc3RhcnRzV2l0aCgnbycpOyB9KTtcclxuICAgIGxldCBjaGlsZE5hdmlnYXRpb25Qcm9wZXJ0eU5hbWVzID0gbmF2aWdhdGlvblByb3BlcnR5TmFtZXMuZmlsdGVyKChuKSA9PiB7XHJcbiAgICAgIHJldHVybiBjaGlsZExvb2t1cC5zb21lKChsb29rdXA6IGFueSkgPT4geyByZXR1cm4gbG9va3VwLm5hbWUgPT09IG47IH0pO1xyXG4gICAgfSk7XHJcblxyXG4gICAgbGV0IGNoaWxkUHJvcGVydGllczogQXJyYXk8YW55PiA9IFtdO1xyXG4gICAgY2hpbGROYXZpZ2F0aW9uUHJvcGVydHlOYW1lcy5maWx0ZXIoZnVuY3Rpb24gKG4pIHtcclxuICAgICAgaWYgKGN1cnJlbnRFbnRpdHlbbl0gJiYgY3VycmVudEVudGl0eVtuXS5sZW5ndGgpXHJcbiAgICAgICAgY2hpbGRQcm9wZXJ0aWVzLnB1c2goe1xyXG4gICAgICAgICAgcGFyZW50VG9DaGlsZFJlZk5hbWU6IG4sXHJcbiAgICAgICAgICBlbnRpdGllczogY3VycmVudEVudGl0eVtuXVxyXG4gICAgICAgIH0pO1xyXG4gICAgfSk7XHJcblxyXG4gICAgcmV0dXJuIGNoaWxkUHJvcGVydGllcztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgZ2V0VHlwZUZyb21FbnRpdHlUeXBlTmFtZSA9ICh0eXBlTmFtZTogc3RyaW5nKSA9PiB7XHJcbiAgICB2YXIgcDFzID0gdHlwZU5hbWUuc3BsaXQoJywnKVswXTtcclxuICAgIHZhciBwMnMgPSBwMXMuc3BsaXQoJy4nKTtcclxuICAgIHJldHVybiBwMnNbcDJzLmxlbmd0aCAtIDFdO1xyXG4gIH1cclxuXHJcbnByaXZhdGUgYnVpbGRDbG9uZVRyZWUgPSAoY3VycmVudEVudGl0eTogYW55LCBub2RlOiBhbnkpID0+IHtcclxuICB2YXIgY2hpbGRQcm9wZXJ0aWVzID0gdGhpcy5nZXRDaGlsZFByb3BlcnRpZXNGb3JDdXJyZW50RW50aXR5KGN1cnJlbnRFbnRpdHkpO1xyXG4gIGNoaWxkUHJvcGVydGllcy5mb3JFYWNoKChjaGlsZFByb3BlcnR5OiBhbnkpID0+IHtcclxuICAgIGNoaWxkUHJvcGVydHkuZW50aXRpZXMuZm9yRWFjaCgoZW50aXR5OiBhbnkpID0+IHtcclxuICAgICAgbGV0IHR5cGUgPSB0aGlzLmdldFR5cGVGcm9tRW50aXR5VHlwZU5hbWUoZW50aXR5LiR0eXBlKTtcclxuICAgICAgbGV0IGNoaWxkTG9va3VwID0gdGhpcy5tb2RlbFRhYmxlTG9va3VwLmxvb2t1cC5nZXQodHlwZSk7XHJcbiAgICAgIGxldCBncm91cE5vZGUgPSBuZXcgTm9kZShcclxuICAgICAgICBudWxsLFxyXG4gICAgICAgIGVudGl0eS5jb25zdHJ1Y3Rvci5uYW1lLFxyXG4gICAgICAgIGNoaWxkTG9va3VwPy5wbHVyYWxMYWJlbCBhcyBzdHJpbmcsXHJcbiAgICAgICAgZmFsc2UsXHJcbiAgICAgICAgdHJ1ZSxcclxuICAgICAgICBbXSxcclxuICAgICAgICAnJyxcclxuICAgICAgICBjaGlsZFByb3BlcnR5LnBhcmVudFRvQ2hpbGRSZWZOYW1lLFxyXG4gICAgICAgIGZhbHNlLFxyXG4gICAgICAgIG5vZGUsXHJcbiAgICAgICAgbnVsbFxyXG4gICAgICApO1xyXG5cclxuICAgICAgdGhpcy5mbGF0TGlzdC5wdXNoKGdyb3VwTm9kZSk7XHJcblxyXG4gICAgICBjaGlsZFByb3BlcnRpZXMuZm9yRWFjaCgoY2hpbGRQcm9wZXJ0eTogYW55KSA9PiB7XHJcbiAgICAgICAgbGV0IHR5cGUgPSB0aGlzLmdldFR5cGVGcm9tRW50aXR5VHlwZU5hbWUoZW50aXR5LiR0eXBlKTtcclxuICAgICAgICBsZXQgY2hpbGROb2RlID0gbmV3IE5vZGUoXHJcbiAgICAgICAgICBlbnRpdHlbdHlwZSArICdSZWYnXSxcclxuICAgICAgICAgIHR5cGUsXHJcbiAgICAgICAgICB0eXBlLFxyXG4gICAgICAgICAgdHJ1ZSxcclxuICAgICAgICAgIHRydWUsXHJcbiAgICAgICAgICBbXSxcclxuICAgICAgICAgICcnLFxyXG4gICAgICAgICAgY2hpbGRQcm9wZXJ0eS5wYXJlbnRUb0NoaWxkUmVmTmFtZSxcclxuICAgICAgICAgIGZhbHNlLFxyXG4gICAgICAgICAgZ3JvdXBOb2RlLFxyXG4gICAgICAgICAgZW50aXR5XHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgdGhpcy5jaGlsZEZsYXRMaXN0LnB1c2goY2hpbGROb2RlKTtcclxuICAgICAgICBncm91cE5vZGUubm9kZXMucHVzaChjaGlsZE5vZGUpO1xyXG4gICAgICAgIHRoaXMuYnVpbGRDbG9uZVRyZWUoZW50aXR5LCBjaGlsZE5vZGUpO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIG5vZGUubm9kZXMucHVzaChncm91cE5vZGUpO1xyXG4gICAgfSlcclxuICB9KTtcclxufVxyXG5cclxuICBwcml2YXRlIGFzeW5jRm9yRWFjaFJlY29yZElkID0gKGFycjogYW55LCBjYjogYW55KSA9PiB7XHJcbiAgICByZXR1cm4gYXJyLnJlZHVjZSgocDogYW55LCBjOiBhbnkpID0+IHtcclxuICAgICAgcmV0dXJuIHAudGhlbigoKSA9PiBjYihjKSk7XHJcbiAgICB9LCBQcm9taXNlLnJlc29sdmUoKSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGZldGNoUmVjb3JkSWQgPSAoY2hpbGQ6IGFueSkgPT4ge1xyXG4gICAgdmFyIGMgPSBjaGlsZDtcclxuICAgIHZhciBkYXRhID0ge1xyXG4gICAgICByZWY6IGMucmVmLFxyXG4gICAgICB0YWJsZU5hbWU6IGMudGFibGVOYW1lXHJcbiAgICB9O1xyXG4gICAgZGF0YSA9IHRoaXMudGV4dE1hbmFnZXIuZm9ybWF0QXNVcmxQYXJhbWV0ZXJzKGRhdGEpO1xyXG5cclxuICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZTogYW55KSA9PiB7XHJcbiAgICAgIGMuZGlzcGxheU5hbWUgPSBjaGlsZC5lbnRpdHkuSElEO1xyXG4gICAgICB0aGlzLnByb2Nlc3NlZENvdW50Kys7XHJcbiAgICAgIHRoaXMubG9hZGluZ01lc3NhZ2UgPSAnRm9ybWF0dGluZyBkYXRhLi4ucHJvY2Vzc2VkICgnICsgdGhpcy5wcm9jZXNzZWRDb3VudCArICcvJyArIHRoaXMuY2hpbGRGbGF0TGlzdC5sZW5ndGggKyAnKSByZWNvcmRzJztcclxuICAgICAgaWYgKHRoaXMucHJvY2Vzc2VkQ291bnQgPj0gdGhpcy5jaGlsZEZsYXRMaXN0Lmxlbmd0aClcclxuICAgICAgICB0aGlzLmxvYWRpbmdNZXNzYWdlID0gJ1JlbmRlcmluZyB0cmVlLi4uJztcclxuICAgICAgcmVzb2x2ZSgpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHRyYXZlcnNlID0gKG5vZGU6IGFueSwgY3VycmVudEVudGl0eTogYW55KSA9PiB7XHJcbiAgICB2YXIgZ3JvdXAgPSAhbm9kZS5jaGlsZDtcclxuICAgIGlmIChncm91cCkge1xyXG4gICAgICB2YXIgZ3JvdXBOb2RlcyA9IG5vZGUubm9kZXM7XHJcbiAgICAgIGdyb3VwTm9kZXMuZm9yRWFjaCgoZ3JvdXBOb2RlOiBhbnkpID0+IHtcclxuICAgICAgICBpZiAoZ3JvdXBOb2RlLmNoZWNrZWQpXHJcbiAgICAgICAgICBncm91cE5vZGUubm9kZXMuZm9yRWFjaCgoY2hpbGROb2RlOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgdGhpcy50cmF2ZXJzZShjaGlsZE5vZGUsIGN1cnJlbnRFbnRpdHkpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKG5vZGUuY2hlY2tlZCkge1xyXG4gICAgICAgIGxldCB0YWJsZVR5cGUgPSB0aGlzLm1vZGVsVHlwZUxvb2t1cC5nZXRUeXBlKHRoaXMudGFibGVOYW1lKTtcclxuICAgICAgICBsZXQgbmV3RW50aXR5ID0gdGhpcy5kYXRhQ29udGV4dC5lbnRpdHlBY2Nlc3MoKS5hZGQodGFibGVUeXBlLCB0aGlzLmNvbnRleHRGaWx0ZXJzKTtcclxuICAgICAgICB0eXBlIE9iamVjdEtleSA9IGtleW9mIHR5cGVvZiBuZXdFbnRpdHk7XHJcbiAgICAgICAgdGhpcy5nZXRQcm90b3R5cGVQcm9wZXJ0aWVzKG5ld0VudGl0eSkuZm9yRWFjaCgocHJvcGVydHlOYW1lKSA9PiB7XHJcbiAgICAgICAgICBpZiAodGhpcy5wcm9wZXJ0eUlzQWxsb3dlZChwcm9wZXJ0eU5hbWUsIG5vZGUudGFibGVOYW1lKSkge1xyXG4gICAgICAgICAgICBuZXdFbnRpdHlbcHJvcGVydHlOYW1lIGFzIE9iamVjdEtleV0gPSBub2RlLmVudGl0eVtwcm9wZXJ0eU5hbWVdO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICBuZXdFbnRpdHkuc2V0UHJvcGVydHkhKCdfYXNzb2NpYXRlZERhdGFDYWNoZWQnLCB0cnVlKTtcclxuXHJcbiAgICAgICAgbGV0IGNoaWxkTG9va3VwID0gdGhpcy5tb2RlbFRhYmxlTG9va3VwLmxvb2t1cC5nZXQobm9kZS50YWJsZU5hbWUpO1xyXG4gICAgICAgIGN1cnJlbnRFbnRpdHlbJ28nICsgY2hpbGRMb29rdXAhLnBsdXJhbE5hbWVdLnB1c2gobmV3RW50aXR5KTtcclxuICAgICAgICBsZXQgY2hpbGROb2RlcyA9IG5vZGUubm9kZXM7XHJcbiAgICAgICAgY2hpbGROb2Rlcy5mb3JFYWNoKChjaGlsZE5vZGU6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKGNoaWxkTm9kZS5jaGVja2VkKVxyXG4gICAgICAgICAgICBjaGlsZE5vZGUubm9kZXMuZm9yRWFjaCgoZ3JvdXBOb2RlOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICB0aGlzLnRyYXZlcnNlKGdyb3VwTm9kZSwgbmV3RW50aXR5KTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9O1xyXG5cclxuICBwcml2YXRlIGdldERhdGFGb3JDbG9uaW5nID0gKCkgPT4ge1xyXG4gICAgdGhpcy5kYXRhQ29udGV4dC5lbnRpdHlBY2Nlc3MoKS5jbG9uZSh7XHJcbiAgICAgIHJlZjogdGhpcy5lbnRpdHkuUmVmLFxyXG4gICAgICB0YWJsZU5hbWU6IHRoaXMudGFibGVOYW1lXHJcbiAgICB9KS5zdWJzY3JpYmUoe1xyXG4gICAgICBuZXh0OiAocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICAgIHRoaXMuZGF0YVRyZWUgPSByZXNwb25zZS5Db250ZW50WzBdO1xyXG4gICAgICAgIHRoaXMuYnVpbGRDbG9uZVRyZWUodGhpcy5kYXRhVHJlZSwgdGhpcy5yb290Tm9kZSk7XHJcblxyXG4gICAgICAgIHRoaXMubG9hZGluZ01lc3NhZ2UgPSAnRm9ybWF0dGluZyBkYXRhLi4uKDAvJyArIHRoaXMuY2hpbGRGbGF0TGlzdC5sZW5ndGggKyAnKSByZWNvcmRzJztcclxuICAgICAgICB0aGlzLmFzeW5jRm9yRWFjaFJlY29yZElkKHRoaXMuY2hpbGRGbGF0TGlzdCwgdGhpcy5mZXRjaFJlY29yZElkKS50aGVuKHRoaXMub25Eb25lKTtcclxuXHJcbiAgICAgICAgdGhpcy5kaXNwbGF5VHJlZSA9IFt0aGlzLnJvb3ROb2RlXTtcclxuICAgICAgfSxcclxuICAgICAgZXJyb3I6IChleDogYW55KSA9PiB7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ2Vycm9yJywgdGhpcy51aU5vdGlmaWNhdGlvbi5lcnJvcignU2VydmVyIEVycm9yOiAnICsgZXguc3RhdHVzLCBbZXguZXJyb3IuTWVzc2FnZV0pKVxyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIG9uQ2xvbmUgPSAoKSA9PiB7XHJcbiAgICBsZXQgY29waWVzID0gdGhpcy5zZWxlY3RlZE51bWJlck9mQ29waWVzLnZhbHVlO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjb3BpZXM7IGkrKykge1xyXG4gICAgICBsZXQgdGFibGVUeXBlID0gdGhpcy5tb2RlbFR5cGVMb29rdXAuZ2V0VHlwZSh0aGlzLnRhYmxlTmFtZSk7XHJcbiAgICAgIGxldCBuZXdFbnRpdHkgPSB0aGlzLmRhdGFDb250ZXh0LmVudGl0eUFjY2VzcygpLmFkZCh0YWJsZVR5cGUsIHRoaXMuY29udGV4dEZpbHRlcnMpO1xyXG4gICAgICB0eXBlIE9iamVjdEtleSA9IGtleW9mIHR5cGVvZiBuZXdFbnRpdHk7XHJcbiAgICAgIHRoaXMuZ2V0UHJvdG90eXBlUHJvcGVydGllcyh0aGlzLmVudGl0eSkuZm9yRWFjaCgocHJvcGVydHlOYW1lOiBzdHJpbmcpID0+IHtcclxuICAgICAgICBpZiAodGhpcy5wcm9wZXJ0eUlzQWxsb3dlZChwcm9wZXJ0eU5hbWUsIHRoaXMudGFibGVOYW1lKSkge1xyXG4gICAgICAgICAgbmV3RW50aXR5W3Byb3BlcnR5TmFtZSBhcyBPYmplY3RLZXldID0gdGhpcy5lbnRpdHlbcHJvcGVydHlOYW1lXTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgbmV3RW50aXR5LnNldFByb3BlcnR5ISgnX2Fzc29jaWF0ZWREYXRhQ2FjaGVkJywgdHJ1ZSk7XHJcblxyXG4gICAgICB0aGlzLnRyYXZlcnNlKHRoaXMuZGlzcGxheVRyZWVbMF0sIG5ld0VudGl0eSk7XHJcbiAgICAgIHRoaXMudmlldy5lbnRpdGllcz8ucHVzaChuZXdFbnRpdHkpO1xyXG4gICAgfVxyXG4gICAgdGhpcy53aW5kb3dFdmVudEhhbmRsZXIuY2xvc2UoKTtcclxuICB9O1xyXG5cclxuICBvbkRvbmUgPSAoKSA9PiB7XHJcbiAgICB0aGlzLmRvbmVQcm9jZXNzaW5nID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIG9uUmVuZGVyZWQgPSAoKSA9PiB7XHJcbiAgICB0aGlzLmxvYWRpbmdNZXNzYWdlID0gJyc7XHJcbiAgfTtcclxuXHJcbiAgb25DYW5jZWwgPSAoKSA9PiB7XHJcbiAgICB0aGlzLndpbmRvd0V2ZW50SGFuZGxlci5jbG9zZSgpO1xyXG4gIH07XHJcblxyXG4gIG9uRXhwYW5kQ2xpY2tlZCA9ICgpID0+IHtcclxuICAgIHRoaXMuY2hpbGRGbGF0TGlzdC5maW5kKChub2RlOiBOb2RlKSA9PiB7IG5vZGUuc2hvd0VudGl0aWVzID0gdHJ1ZTsgfSk7XHJcbiAgfVxyXG4gICAgIFxyXG4gIG9uQ29sbGFwc2VDbGlja2VkID0gKCkgPT4ge1xyXG4gICAgdGhpcy5jaGlsZEZsYXRMaXN0LmZpbmQoKG5vZGU6IE5vZGUpID0+IHsgbm9kZS5zaG93RW50aXRpZXMgPSBmYWxzZTsgfSk7XHJcbiAgfVxyXG5cclxuICBvbk51bWJlck9mQ29waWVzQ2hhbmdlZCA9IChldmVudDogYW55KSA9PiB7XHJcblxyXG4gIH1cclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLnRhYmxlTmFtZSA9IHRoaXMudmlldy53aW5kb3cudGFibGVOYW1lO1xyXG4gICAgdGhpcy5lbnRpdGllcyA9IHRoaXMudmlldy5lbnRpdGllcyBhcyBhbnk7XHJcbiAgICB0aGlzLmVudGl0eSA9IHRoaXMuZW50aXRpZXNbdGhpcy52aWV3LmVudGl0eUluZGV4XTtcclxuICAgIHRoaXMucm9vdE5vZGUgPSBuZXcgTm9kZShudWxsLCB0aGlzLnRhYmxlTmFtZSwgdGhpcy50YWJsZU5hbWUsIGZhbHNlLCB0cnVlLCBudWxsLCBudWxsLCBudWxsLCB0cnVlLCBudWxsLCBudWxsKTtcclxuICAgIHRoaXMuc2V0RW50aXR5RGlzcGxheVZhbHVlcyh0aGlzLnZpZXcud2luZG93LnRhYmxlTmFtZSk7XHJcbiAgICB0aGlzLmdldERhdGFGb3JDbG9uaW5nKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIHRoaXMuZGF0YVRyZWUubGVuZ3RoID0gMDtcclxuICAgIHRoaXMuZmxhdExpc3QubGVuZ3RoID0gMDtcclxuICAgIHRoaXMuY2hpbGRGbGF0TGlzdC5sZW5ndGggPSAwO1xyXG4gIH1cclxufVxyXG5cclxuY2xhc3MgTm9kZSB7XHJcbiAgcmVmOiBudW1iZXIgfCBudWxsO1xyXG4gIHRhYmxlTmFtZTogc3RyaW5nO1xyXG4gIGRpc3BsYXlOYW1lOiBzdHJpbmc7XHJcbiAgY2hlY2tlZDogYm9vbGVhbjtcclxuICBjaGlsZDogYW55O1xyXG4gIGNoaWxkTm9kZXM6IGFueTtcclxuICBzaG93RW50aXRpZXM6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBwYXRoRnJvbVJvb3Q6IHN0cmluZyB8IG51bGw7XHJcbiAgcGFyZW50VG9DaGlsZFJlZk5hbWU6IHN0cmluZyB8IG51bGw7XHJcbiAgbm9kZXM6IE5vZGVbXSA9IFtdO1xyXG4gIHJvb3Q6IGFueTtcclxuICBwYXJlbnQ6IGFueTtcclxuICBlbnRpdHk6IGFueTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICByZWY6IG51bWJlciB8IG51bGwsXHJcbiAgICB0YWJsZU5hbWU6IHN0cmluZyxcclxuICAgIGRpc3BsYXlOYW1lOiBzdHJpbmcsXHJcbiAgICBjaGlsZDogYW55LFxyXG4gICAgY2hlY2tlZDogYm9vbGVhbixcclxuICAgIGNoaWxkRW50aXRpZXM6IGFueSxcclxuICAgIHBhdGhGcm9tUm9vdDogc3RyaW5nIHwgbnVsbCxcclxuICAgIHBhcmVudFRvQ2hpbGRSZWZOYW1lOiBzdHJpbmcgfCBudWxsLFxyXG4gICAgcm9vdDogYm9vbGVhbixcclxuICAgIHBhcmVudDogYW55LFxyXG4gICAgZW50aXR5OiBhbnkpIHtcclxuICAgIHRoaXMucmVmID0gcmVmO1xyXG4gICAgdGhpcy50YWJsZU5hbWUgPSB0YWJsZU5hbWU7XHJcbiAgICB0aGlzLmRpc3BsYXlOYW1lID0gZGlzcGxheU5hbWU7XHJcbiAgICB0aGlzLmNoZWNrZWQgPSBjaGVja2VkO1xyXG4gICAgdGhpcy5jaGlsZCA9IGNoaWxkO1xyXG4gICAgdGhpcy5jaGlsZE5vZGVzID0gY2hpbGRFbnRpdGllcztcclxuICAgIHRoaXMucGF0aEZyb21Sb290ID0gcGF0aEZyb21Sb290O1xyXG4gICAgdGhpcy5wYXJlbnRUb0NoaWxkUmVmTmFtZSA9IHBhcmVudFRvQ2hpbGRSZWZOYW1lO1xyXG4gICAgdGhpcy5yb290ID0gcm9vdDtcclxuICAgIHRoaXMucGFyZW50ID0gcGFyZW50O1xyXG4gICAgdGhpcy5lbnRpdHkgPSBlbnRpdHk7XHJcbiAgfVxyXG5cclxuICBvbkdyb3VwRGlzcGxheSA9ICgpID0+IHtcclxuICAgIHZhciBjdXJyZW50VmFsdWUgPSB0aGlzLnNob3dFbnRpdGllcyA9ICF0aGlzLnNob3dFbnRpdGllcztcclxuICAgIHRoaXMubm9kZXMuZmluZCgobjogYW55KSA9PiB7XHJcbiAgICAgIG4uc2hvd0VudGl0aWVzID0gY3VycmVudFZhbHVlO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBvbkNoZWNrZWRDaGFuZ2VkID0gKCkgPT4ge1xyXG4gICAgaWYgKHRoaXMuY2hlY2tlZCkge1xyXG4gICAgICBpZiAodGhpcy5jaGlsZCkge1xyXG4gICAgICAgIHZhciBwID0gdGhpcy5wYXJlbnQ7XHJcbiAgICAgICAgd2hpbGUgKHApIHtcclxuICAgICAgICAgIHAuY2hlY2tlZCA9IHRydWU7XHJcbiAgICAgICAgICBwID0gcC5wYXJlbnQ7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMubm9kZXMuZmluZCgobjogYW55KSA9PiB7IG4uY2hlY2tlZCA9IHRydWU7IH0pO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpZiAodGhpcy5jaGlsZCkge1xyXG4gICAgICAgIHZhciBhbGxVbmNoZWNrZWQgPSB0aGlzLnBhcmVudC5ub2Rlcy5ldmVyeSgobjogYW55KSA9PiB7XHJcbiAgICAgICAgICByZXR1cm4gbi5jaGVja2VkID09PSBmYWxzZTtcclxuICAgICAgICB9KTtcclxuICAgICAgICBpZiAoYWxsVW5jaGVja2VkKVxyXG4gICAgICAgICAgdGhpcy5wYXJlbnQuY2hlY2tlZCA9IGZhbHNlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHZhciB1bmNoZWNrQ2hpbGROb2RlcyA9IChub2RlOiBhbnkpID0+IHtcclxuICAgICAgICAgIG5vZGUubm9kZXMuZmluZCgobjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIHVuY2hlY2tDaGlsZE5vZGVzKG4pO1xyXG4gICAgICAgICAgICBuLmNoZWNrZWQgPSBmYWxzZTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICAgIH07XHJcbiAgICAgICAgdGhpcy5ub2Rlcy5maW5kKChuOiBhbnkpID0+IHtcclxuICAgICAgICAgIHVuY2hlY2tDaGlsZE5vZGVzKG4pO1xyXG4gICAgICAgICAgbi5jaGVja2VkID0gZmFsc2U7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbiIsIjxkaXY+XHJcbiAgPHRydS10b29sYmFyPlxyXG4gICAgPHRydS10b29sYmFyLWJ1dHRvbiBbaWNvbl09XCInZXhwYW5kLWljb24nXCIgW3Rvb2x0aXBdPVwiJ0V4cGFuZCdcIiBbZGlzYWJsZWRdPVwiIWRvbmVQcm9jZXNzaW5nXCIgKG9uQ2xpY2spPVwib25FeHBhbmRDbGlja2VkKClcIj48L3RydS10b29sYmFyLWJ1dHRvbj5cclxuICAgIDx0cnUtdG9vbGJhci1idXR0b24gW2ljb25dPVwiJ2NvbGxhcHNlLWljb24nXCIgW3Rvb2x0aXBdPVwiJ0NvbGxhcHNlJ1wiIFtkaXNhYmxlZF09XCIhZG9uZVByb2Nlc3NpbmdcIiAob25DbGljayk9XCJvbkNvbGxhcHNlQ2xpY2tlZCgpXCI+PC90cnUtdG9vbGJhci1idXR0b24+XHJcbiAgICA8dHJ1LXRvb2xiYXItdGV4dCBbdGV4dF09XCInQ29waWVzOidcIj48L3RydS10b29sYmFyLXRleHQ+XHJcbiAgICA8dHJ1LXRvb2xiYXItZHJvcGRvd24gW29wdGlvbnNdPVwibnVtYmVyT2ZDb3BpZXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFsoc2VsZWN0ZWRPcHRpb24pXT1cInNlbGVjdGVkTnVtYmVyT2ZDb3BpZXNcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCIhZG9uZVByb2Nlc3NpbmdcIlxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIChzZWxlY3Rpb25DaGFuZ2UpPVwib25OdW1iZXJPZkNvcGllc0NoYW5nZWQoJGV2ZW50KVwiPlxyXG4gICAgPC90cnUtdG9vbGJhci1kcm9wZG93bj5cclxuICA8L3RydS10b29sYmFyPlxyXG4gIDxkaXYgY2xhc3M9XCJ0cnUtZGlhbG9nLWNvbnRlbnQgY2xvbmVcIj5cclxuICAgIDxuZy10ZW1wbGF0ZSAjZ3JvdXBOb2RlUmVuZGVyZXIgbGV0LWRhdGE+XHJcbiAgICAgIDxkaXYgKm5nSWY9XCIhZGF0YS5jaGlsZCB8fCBkYXRhLnNob3dFbnRpdGllc1wiXHJcbiAgICAgICAgICAgY2xhc3M9XCJjbG9uZS1tb2RhbC10cmVlLWdyb3VwXCI+XHJcbiAgICAgICAgPGlucHV0IFsobmdNb2RlbCldPVwiZGF0YS5jaGVja2VkXCJcclxuICAgICAgICAgICAgICAgKGNsaWNrKT1cImRhdGEub25DaGVja2VkQ2hhbmdlZCgpXCJcclxuICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImRhdGEucm9vdFwiXHJcbiAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiIC8+XHJcbiAgICAgICAgPGEgKGNsaWNrKT1cImRhdGEub25Hcm91cERpc3BsYXlOYW1lQ2xpY2tlZCgpXCJcclxuICAgICAgICAgICBbbmdDbGFzc109XCJ7J2Nsb25lLW1vZGFsLXRyZWUtZ3JvdXAtcm9vdC1uYW1lJzogZGF0YS5yb290IHx8IGRhdGEuY2hpbGR9XCJcclxuICAgICAgICAgICBbbmdTdHlsZV09XCJ7J21heC13aWR0aCc6IGRhdGEuY2hpbGROb2RlID8gJzMwMHB4JyA6ICdhdXRvJ31cIj57e2RhdGEuZGlzcGxheU5hbWV9fTwvYT5cclxuICAgICAgICA8c3BhbiAqbmdJZj1cIiFkYXRhLnJvb3QgJiYgIWRhdGEuY2hpbGRcIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiY2xvbmUtbW9kYWwtdHJlZS1ncm91cC1jb3VudFwiPih7e2RhdGEubm9kZXMubGVuZ3RofX0pPC9zcGFuPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPHVsPlxyXG4gICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgZGF0YSBvZiBkYXRhLm5vZGVzOyBsZXQgbGFzdCA9IGxhc3RcIiB0cnVSZW5kZXJlZCAocmVuZGVyZWQpPVwib25SZW5kZXJlZCgpXCI+XHJcbiAgICAgICAgICA8ZGl2ICpuZ1RlbXBsYXRlT3V0bGV0PVwiZ3JvdXBOb2RlUmVuZGVyZXI7IGNvbnRleHQ6IHskaW1wbGljaXQ6IGRhdGF9XCI+PC9kaXY+XHJcbiAgICAgICAgPC9saT5cclxuICAgICAgPC91bD5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICA8ZGl2ICpuZ0lmPVwibG9hZGluZ01lc3NhZ2VcIlxyXG4gICAgICAgICBjbGFzcz1cImNsb25lLW1vZGFsLWxvYWRpbmdcIj5cclxuICAgICAgPHNwYW4gY2xhc3M9XCJjbG9uZS1tb2RhbC1sb2FkaW5nLW1lc3NhZ2VcIj57e2xvYWRpbmdNZXNzYWdlfX08L3NwYW4+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgKm5nSWY9XCJkb25lUHJvY2Vzc2luZ1wiXHJcbiAgICAgICAgIGNsYXNzPVwiY2xvbmUtbW9kYWwtdHJlZVwiPlxyXG4gICAgICA8dWw+XHJcbiAgICAgICAgPGxpICpuZ0Zvcj1cImxldCBkYXRhIG9mIGRpc3BsYXlUcmVlOyBsZXQgbGFzdCA9IGxhc3RcIiB0cnVSZW5kZXJlZCAocmVuZGVyZWQpPVwib25SZW5kZXJlZCgpXCI+XHJcbiAgICAgICAgICA8ZGl2ICpuZ1RlbXBsYXRlT3V0bGV0PVwiZ3JvdXBOb2RlUmVuZGVyZXI7IGNvbnRleHQ6IHskaW1wbGljaXQ6IGRhdGF9XCI+PC9kaXY+XHJcbiAgICAgICAgPC9saT5cclxuICAgICAgPC91bD5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJ0cnUtZGlhbG9nLWZvb3RlclwiPlxyXG4gICAgPGJ1dHRvbiBtYXQtYnV0dG9uIChjbGljayk9XCJvbkNhbmNlbCgpXCI+Q2FuY2VsPC9idXR0b24+XHJcbiAgICA8YnV0dG9uIG1hdC1yYWlzZWQtYnV0dG9uIGNvbG9yPVwicHJpbWFyeVwiIChjbGljayk9XCJvbkNsb25lKClcIiAoa2V5dXAuZW50ZXIpPVwib25DbG9uZSgpXCIgW2Rpc2FibGVkXT1cIiFkb25lUHJvY2Vzc2luZ1wiPkNsb25lPC9idXR0b24+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
336
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJ1LWNsb25lLXZpZXcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90cnUtY29tbW9uLWxpYi9zcmMvbGliL2NvbXBvbmVudHMvY2xvbmUtdmlldy90cnUtY2xvbmUtdmlldy50cyIsIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL3RydS1jb21tb24tbGliL3NyYy9saWIvY29tcG9uZW50cy9jbG9uZS12aWV3L3RydS1jbG9uZS12aWV3Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBUyxNQUFNLGVBQWUsQ0FBQztBQUNqRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWtCN0QsTUFBTSxPQUFPLFlBQWEsU0FBUSxXQUFXO0lBa0MvQjtJQUNBO0lBQ0Y7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBeENWLE9BQU8sR0FBWSxJQUFJLENBQUM7SUFDeEIsY0FBYyxHQUFXLGtDQUFrQyxDQUFDO0lBQzVELGNBQWMsQ0FBa0M7SUFDaEQsc0JBQXNCLENBQTRCO0lBQ2xELGNBQWMsR0FBRyxJQUFJLENBQUM7SUFDdEIsUUFBUSxHQUFnQixJQUFJLENBQUM7SUFDN0Isa0JBQWtCLEdBQUc7UUFDbkIsWUFBWTtRQUNaLFNBQVM7UUFDVCxZQUFZO1FBQ1osU0FBUztRQUNULFFBQVE7UUFDUix5QkFBeUI7UUFDekIsY0FBYztRQUNkLHVCQUF1QjtRQUN2QixlQUFlO1FBQ2YsY0FBYztRQUNkLFlBQVk7UUFDWixZQUFZO1FBQ1osZUFBZTtRQUNmLGFBQWE7UUFDYixhQUFhO1FBQ2IsdUJBQXVCO1FBQ3ZCLEtBQUs7S0FDTixDQUFDO0lBQ0YsUUFBUSxHQUFHLEVBQUUsQ0FBQztJQUNkLFFBQVEsR0FBZ0IsRUFBRSxDQUFDO0lBQzNCLGFBQWEsR0FBZ0IsRUFBRSxDQUFDO0lBQ2hDLGNBQWMsR0FBVyxDQUFD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Q0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFNLEVBQUUsRUFBRTt3QkFDekIsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUM7d0JBQ3JCLENBQUMsQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO29CQUNwQixDQUFDLENBQUMsQ0FBQztnQkFDTCxDQUFDLENBQUM7Z0JBQ0YsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFNLEVBQUUsRUFBRTtvQkFDekIsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLENBQUM7b0JBQ3JCLENBQUMsQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDO2dCQUNwQixDQUFDLENBQUMsQ0FBQztZQUNMLENBQUM7UUFDSCxDQUFDO0lBQ0gsQ0FBQyxDQUFBO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIElucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFRydVZpZXdCYXNlIH0gZnJvbSAnLi4vLi4vYmFzZS12aWV3cy90cnUtdmlldy1iYXNlJztcclxuaW1wb3J0IHsgVHJ1RGF0YUNvbnRleHQgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90cnUtZGF0YS1jb250ZXh0JztcclxuaW1wb3J0IHsgSVRydVRvb2xiYXJEcm9wZG93bk9wdGlvbiB9IGZyb20gJy4uL3Rvb2xiYXIvY2xhc3Nlcy90cnUtdG9vbGJhci1kcm9wZG93bi1vcHRpb24nO1xyXG5pbXBvcnQgeyBUcnVUZXh0TWFuYWdlciB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RydS10ZXh0LW1hbmFnZXInO1xyXG5pbXBvcnQgeyBUcnVXaW5kb3dFdmVudEhhbmRsZXIgfSBmcm9tICcuLi9kZXNrdG9wL3NlcnZpY2VzL3RydS13aW5kb3ctZXZlbnQtaGFuZGxlcic7XHJcbmltcG9ydCB7IFRydU1vZGVsVGFibGVMb29rdXAgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90cnUtbW9kZWwtdGFibGUtbG9va3VwJztcclxuaW1wb3J0IHsgVHJ1VWlOb3RpZmljYXRpb24gfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90cnUtdWktbm90aWZpY2F0aW9uJztcclxuaW1wb3J0IHsgVHJ1TW9kZWxQcm9wZXJ0eUxvb2t1cCB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3RydS1tb2RlbC1wcm9wZXJ0eS1sb29rdXAnO1xyXG5pbXBvcnQgeyBUcnVNb2RlbFR5cGVMb29rdXAgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy90cnUtbW9kZWwtdHlwZS1sb29rdXAnO1xyXG5pbXBvcnQgeyBUcnVNb2RlbE5hdmlnYXRpb25Qcm9wZXJ0aWVzTG9va3VwIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvdHJ1LW1vZGVsLW5hdmlnYXRpb24tcHJvcGVydGllcy1sb29rdXAnO1xyXG5pbXBvcnQgeyBUcnVOYXZpZ2F0aW9uUHJvcGVydHlDb25maWcgfSBmcm9tICcuLi8uLi9jbGFzc2VzL3RydS1uYXZpZ2F0aW9uLXByb3BlcnR5LWNvbmZpZyc7XHJcblxyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICd0cnUtY2xvbmUtdmlldycsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL3RydS1jbG9uZS12aWV3Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3RydS1jbG9uZS12aWV3LmNzcyddXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBUcnVDbG9uZVZpZXcgZXh0ZW5kcyBUcnVWaWV3QmFzZSB7XHJcbiAgbG9hZGluZzogYm9vbGVhbiA9IHRydWU7XHJcbiAgbG9hZGluZ01lc3NhZ2U6IHN0cmluZyA9ICdTZWFyY2hpbmcgZm9yIHJlbGF0ZWQgcmVjb3Jkcy4uLic7XHJcbiAgbnVtYmVyT2ZDb3BpZXM6IEFycmF5PElUcnVUb29sYmFyRHJvcGRvd25PcHRpb24+XHJcbiAgc2VsZWN0ZWROdW1iZXJPZkNvcGllczogSVRydVRvb2xiYXJEcm9wZG93bk9wdGlvbjtcclxuICBjb250ZXh0RmlsdGVycyA9IG51bGw7XHJcbiAgcm9vdE5vZGU6IE5vZGUgfCBudWxsID0gbnVsbDsgXHJcbiAgaWdub3JlUHJvcGVydHlMaXN0ID0gW1xyXG4gICAgJ0NyZWF0ZWRSZWYnLFxyXG4gICAgJ0NyZWF0ZWQnLFxyXG4gICAgJ1VwZGF0ZWRSZWYnLFxyXG4gICAgJ1VwZGF0ZWQnLFxyXG4gICAgJ3Jvd3ZlcicsXHJcbiAgICAnX2N1c3RvbVZhbGlkYXRpb25FcnJvcnMnLFxyXG4gICAgJ2VudGl0eUFzcGVjdCcsXHJcbiAgICAnX2Fzc29jaWF0ZWREYXRhQ2FjaGVkJyxcclxuICAgICdfYmFja2luZ1N0b3JlJyxcclxuICAgICdfc2V0RGVmYXVsdHMnLFxyXG4gICAgJ18kdHlwZU5hbWUnLFxyXG4gICAgJ2VudGl0eVR5cGUnLFxyXG4gICAgJ18kaW50ZXJjZXB0b3InLFxyXG4gICAgJ2dldFByb3BlcnR5JyxcclxuICAgICdzZXRQcm9wZXJ0eScsXHJcbiAgICAnX3BlbmRpbmdCYWNraW5nU3RvcmVzJyxcclxuICAgICdSZWYnXHJcbiAgXTtcclxuICBkYXRhVHJlZSA9IFtdO1xyXG4gIGZsYXRMaXN0OiBBcnJheTxOb2RlPiA9IFtdO1xyXG4gIGNoaWxkRmxhdExpc3Q6IEFycmF5PE5vZGU+ID0gW107XHJcbiAgcHJvY2Vzc2VkQ291bnQ6IG51bWJlciA9IDA7XHJcbiAgZG9uZVByb2Nlc3Npbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBkaXNwbGF5VHJlZSA9IFt0aGlzLnJvb3ROb2RlXTtcclxuXHJcbiAgY29uc3RydWN0b3IoXHJcbiAgICBwcm90ZWN0ZWQgdGV4dE1hbmFnZXI6IFRydVRleHRNYW5hZ2VyLFxyXG4gICAgcHJvdGVjdGVkIHdpbmRvd0V2ZW50SGFuZGxlcjogVHJ1V2luZG93RXZlbnRIYW5kbGVyLFxyXG4gICAgcHJpdmF0ZSBkYXRhQ29udGV4dDogVHJ1RGF0YUNvbnRleHQsXHJcbiAgICBwcml2YXRlIG1vZGVsVGFibGVMb29rdXA6IFRydU1vZGVsVGFibGVMb29rdXAsXHJcbiAgICBwcml2YXRlIG1vZGVsUHJvcGVydHlMb29rdXA6IFRydU1vZGVsUHJvcGVydHlMb29rdXAsXHJcbiAgICBwcml2YXRlIG1vZGVsVHlwZUxvb2t1cDogVHJ1TW9kZWxUeXBlTG9va3VwLFxyXG4gICAgcHJpdmF0ZSBtb2RlbE5hdmlnYXRpb25Qcm9wZXJ0aWVzTG9va3VwOiBUcnVNb2RlbE5hdmlnYXRpb25Qcm9wZXJ0aWVzTG9va3VwLFxyXG4gICAgcHJpdmF0ZSB1aU5vdGlmaWNhdGlvbjogVHJ1VWlOb3RpZmljYXRpb24pIHtcclxuICAgIHN1cGVyKHRleHRNYW5hZ2VyLCB3aW5kb3dFdmVudEhhbmRsZXIpO1xyXG4gICAgdGhpcy5udW1iZXJPZkNvcGllcyA9IHRoaXMuZ2V0TnVtYmVyT2ZDb3BpZXMoKTtcclxuICAgIHRoaXMuc2VsZWN0ZWROdW1iZXJPZkNvcGllcyA9IHRoaXMubnVtYmVyT2ZDb3BpZXNbMF07XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldE51bWJlck9mQ29waWVzID0gKCk6IEFycmF5PElUcnVUb29sYmFyRHJvcGRvd25PcHRpb24+ID0+IHtcclxuICAgIGxldCBjb3BpZXM6IEFycmF5PElUcnVUb29sYmFyRHJvcGRvd25PcHRpb24+ID0gW107XHJcbiAgICBmb3IgKHZhciBpID0gMTsgaSA8PSAyNTsgaSsrKSB7XHJcbiAgICAgIGNvcGllcy5wdXNoKHtcclxuICAgICAgICB2YWx1ZTogaSxcclxuICAgICAgICBsYWJlbDogaS50b1N0cmluZygpXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGNvcGllcztcclxuICB9XHJcblxyXG4gIHByaXZhdGUgcHJvcGVydHlJc0FsbG93ZWQgPSAocHJvcGVydHlOYW1lOiBzdHJpbmcsIHRhYmxlTmFtZTogc3RyaW5nKSA9PiB7XHJcbiAgICBpZiAocHJvcGVydHlOYW1lID09PSB0YWJsZU5hbWUgKyAnUmVmJykgcmV0dXJuIGZhbHNlO1xyXG4gICAgaWYgKHByb3BlcnR5TmFtZS5zdGFydHNXaXRoKCdvJykpIHJldHVybiBmYWxzZTtcclxuICAgIGxldCBwcm9wZXJ0eSA9IHRoaXMubW9kZWxQcm9wZXJ0eUxvb2t1cC5sb29rdXAuZ2V0KHByb3BlcnR5TmFtZSk7XHJcbiAgICBpZiAocHJvcGVydHkgJiYgcHJvcGVydHkuZXhjbHVkZUZyb21DbG9uaW5nKSByZXR1cm4gZmFsc2U7XHJcbiAgICBpZiAodGhpcy5pZ25vcmVQcm9wZXJ0eUxpc3Quc29tZShmdW5jdGlvbiAocHJvcGVydHlUb0lnbm9yZSkgeyByZXR1cm4gcHJvcGVydHlUb0lnbm9yZSA9PT0gcHJvcGVydHlOYW1lOyB9KSkge1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgIGdldFByb3RvdHlwZVByb3BlcnRpZXMgPSAob2JqOiBhbnkpID0+IHtcclxuICAgIHZhciByZXN1bHQgPSBbXTtcclxuICAgIGZvciAodmFyIHByb3AgaW4gb2JqKSB7XHJcbiAgICAgIGlmICghb2JqLmhhc093blByb3BlcnR5KHByb3ApKSB7XHJcbiAgICAgICAgcmVzdWx0LnB1c2gocHJvcCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiByZXN1bHQ7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGdldENoaWxkUHJvcGVydGllc0ZvckN1cnJlbnRFbnRpdHkgPSAoY3VycmVudEVudGl0eTogYW55KSA9PiB7XHJcbiAgICAvL3ZhciBwcm9wZXJ0eU5hbWVzID0gT2JqZWN0LmtleXMoT2JqZWN0LmdldFByb3RvdHlwZU9mKGN1cnJlbnRFbnRpdHkpKTtcclxuICAgIGxldCBlbnRpdHlOYW1lID0gdGhpcy5nZXRUeXBlRnJvbUVudGl0eVR5cGVOYW1lKGN1cnJlbnRFbnRpdHkuJHR5cGUpO1xyXG4gICAgbGV0IGNoaWxkTG9va3VwID0gdGhpcy5tb2RlbE5hdmlnYXRpb25Qcm9wZXJ0aWVzTG9va3VwLmxvb2t1cC5nZXQoZW50aXR5TmFtZSkgYXMgVHJ1TmF2aWdhdGlvblByb3BlcnR5Q29uZmlnW107XHJcbiAgICBsZXQgcHJvcGVydHlOYW1lcyA9IE9iamVjdC5rZXlzKGN1cnJlbnRFbnRpdHkpO1xyXG4gICAgbGV0IG5hdmlnYXRpb25Qcm9wZXJ0eU5hbWVzID0gcHJvcGVydHlOYW1lcy5maWx0ZXIoKG4pID0+IHsgcmV0dXJuIG4uc3RhcnRzV2l0aCgnbycpOyB9KTtcclxuICAgIGxldCBjaGlsZE5hdmlnYXRpb25Qcm9wZXJ0eU5hbWVzID0gbmF2aWdhdGlvblByb3BlcnR5TmFtZXMuZmlsdGVyKChuKSA9PiB7XHJcbiAgICAgIHJldHVybiBjaGlsZExvb2t1cC5zb21lKChsb29rdXA6IGFueSkgPT4geyByZXR1cm4gbG9va3VwLm5hbWUgPT09IG47IH0pO1xyXG4gICAgfSk7XHJcblxyXG4gICAgbGV0IGNoaWxkUHJvcGVydGllczogQXJyYXk8YW55PiA9IFtdO1xyXG4gICAgY2hpbGROYXZpZ2F0aW9uUHJvcGVydHlOYW1lcy5maWx0ZXIoZnVuY3Rpb24gKG4pIHtcclxuICAgICAgaWYgKGN1cnJlbnRFbnRpdHlbbl0gJiYgY3VycmVudEVudGl0eVtuXS5sZW5ndGgpXHJcbiAgICAgICAgY2hpbGRQcm9wZXJ0aWVzLnB1c2goY3VycmVudEVudGl0eVtuXSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICByZXR1cm4gY2hpbGRQcm9wZXJ0aWVzO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBnZXRUeXBlRnJvbUVudGl0eVR5cGVOYW1lID0gKHR5cGVOYW1lOiBzdHJpbmcpID0+IHtcclxuICAgIHZhciBwMXMgPSB0eXBlTmFtZS5zcGxpdCgnLCcpWzBdO1xyXG4gICAgdmFyIHAycyA9IHAxcy5zcGxpdCgnLicpO1xyXG4gICAgcmV0dXJuIHAyc1twMnMubGVuZ3RoIC0gMV07XHJcbiAgfVxyXG5cclxucHJpdmF0ZSBidWlsZENsb25lVHJlZSA9IChjdXJyZW50RW50aXR5OiBhbnksIG5vZGU6IGFueSkgPT4ge1xyXG4gIHZhciBjaGlsZFByb3BlcnRpZXMgPSB0aGlzLmdldENoaWxkUHJvcGVydGllc0ZvckN1cnJlbnRFbnRpdHkoY3VycmVudEVudGl0eSk7XHJcbiAgY2hpbGRQcm9wZXJ0aWVzLmZvckVhY2goKGNoaWxkRW50aXRpZXM6IGFueSkgPT4ge1xyXG4gICAgbGV0IHR5cGUgPSB0aGlzLmdldFR5cGVGcm9tRW50aXR5VHlwZU5hbWUoY2hpbGRFbnRpdGllc1swXS4kdHlwZSk7XHJcbiAgICBsZXQgY2hpbGRMb29rdXAgPSB0aGlzLm1vZGVsVGFibGVMb29rdXAubG9va3VwLmdldCh0eXBlKTtcclxuICAgIGxldCBncm91cE5vZGUgPSBuZXcgTm9kZShcclxuICAgICAgbnVsbCxcclxuICAgICAgY2hpbGRFbnRpdGllc1swXS5jb25zdHJ1Y3Rvci5uYW1lLFxyXG4gICAgICBjaGlsZExvb2t1cD8ucGx1cmFsTGFiZWwgYXMgc3RyaW5nLFxyXG4gICAgICBmYWxzZSxcclxuICAgICAgdHJ1ZSxcclxuICAgICAgW10sXHJcbiAgICAgICcnLFxyXG4gICAgICBudWxsLFxyXG4gICAgICBmYWxzZSxcclxuICAgICAgbm9kZSxcclxuICAgICAgbnVsbFxyXG4gICAgKTtcclxuXHJcbiAgICB0aGlzLmZsYXRMaXN0LnB1c2goZ3JvdXBOb2RlKTtcclxuXHJcbiAgICBjaGlsZEVudGl0aWVzLmZvckVhY2goKGNoaWxkRW50aXR5OiBhbnkpID0+IHtcclxuICAgICAgbGV0IHR5cGUgPSB0aGlzLmdldFR5cGVGcm9tRW50aXR5VHlwZU5hbWUoY2hpbGRFbnRpdHkuJHR5cGUpO1xyXG4gICAgICBsZXQgY2hpbGROb2RlID0gbmV3IE5vZGUoXHJcbiAgICAgICAgY2hpbGRFbnRpdHlbdHlwZSArICdSZWYnXSxcclxuICAgICAgICB0eXBlLFxyXG4gICAgICAgIHR5cGUsXHJcbiAgICAgICAgdHJ1ZSxcclxuICAgICAgICB0cnVlLFxyXG4gICAgICAgIFtdLFxyXG4gICAgICAgICcnLFxyXG4gICAgICAgIG51bGwsXHJcbiAgICAgICAgZmFsc2UsXHJcbiAgICAgICAgZ3JvdXBOb2RlLFxyXG4gICAgICAgIGNoaWxkRW50aXR5XHJcbiAgICAgICk7XHJcblxyXG4gICAgICB0aGlzLmNoaWxkRmxhdExpc3QucHVzaChjaGlsZE5vZGUpO1xyXG4gICAgICBncm91cE5vZGUubm9kZXMucHVzaChjaGlsZE5vZGUpO1xyXG4gICAgICB0aGlzLmJ1aWxkQ2xvbmVUcmVlKGNoaWxkRW50aXR5LCBjaGlsZE5vZGUpO1xyXG4gICAgfSk7XHJcblxyXG4gICAgbm9kZS5ub2Rlcy5wdXNoKGdyb3VwTm9kZSk7XHJcbiAgfSk7XHJcbn1cclxuXHJcbiAgcHJpdmF0ZSBhc3luY0ZvckVhY2hSZWNvcmRJZCA9IChhcnI6IGFueSwgY2I6IGFueSkgPT4ge1xyXG4gICAgcmV0dXJuIGFyci5yZWR1Y2UoKHA6IGFueSwgYzogYW55KSA9PiB7XHJcbiAgICAgIHJldHVybiBwLnRoZW4oKCkgPT4gY2IoYykpO1xyXG4gICAgfSwgUHJvbWlzZS5yZXNvbHZlKCkpO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBmZXRjaFJlY29yZElkID0gKGNoaWxkOiBhbnkpID0+IHtcclxuICAgIHZhciBjID0gY2hpbGQ7XHJcbiAgICB2YXIgZGF0YSA9IHtcclxuICAgICAgcmVmOiBjLnJlZixcclxuICAgICAgdGFibGVOYW1lOiBjLnRhYmxlTmFtZVxyXG4gICAgfTtcclxuICAgIGRhdGEgPSB0aGlzLnRleHRNYW5hZ2VyLmZvcm1hdEFzVXJsUGFyYW1ldGVycyhkYXRhKTtcclxuXHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmU6IGFueSkgPT4ge1xyXG4gICAgICBjLmRpc3BsYXlOYW1lID0gY2hpbGQuZW50aXR5LkhJRDtcclxuICAgICAgdGhpcy5wcm9jZXNzZWRDb3VudCsrO1xyXG4gICAgICB0aGlzLmxvYWRpbmdNZXNzYWdlID0gJ0Zvcm1hdHRpbmcgZGF0YS4uLnByb2Nlc3NlZCAoJyArIHRoaXMucHJvY2Vzc2VkQ291bnQgKyAnLycgKyB0aGlzLmNoaWxkRmxhdExpc3QubGVuZ3RoICsgJykgcmVjb3Jkcyc7XHJcbiAgICAgIGlmICh0aGlzLnByb2Nlc3NlZENvdW50ID49IHRoaXMuY2hpbGRGbGF0TGlzdC5sZW5ndGgpXHJcbiAgICAgICAgdGhpcy5sb2FkaW5nTWVzc2FnZSA9ICdSZW5kZXJpbmcgdHJlZS4uLic7XHJcbiAgICAgIHJlc29sdmUoKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSB0cmF2ZXJzZSA9IChub2RlOiBhbnksIGN1cnJlbnRFbnRpdHk6IGFueSkgPT4ge1xyXG4gICAgdmFyIGdyb3VwID0gIW5vZGUuY2hpbGQ7XHJcbiAgICBpZiAoZ3JvdXApIHtcclxuICAgICAgdmFyIGdyb3VwTm9kZXMgPSBub2RlLm5vZGVzO1xyXG4gICAgICBncm91cE5vZGVzLmZvckVhY2goKGdyb3VwTm9kZTogYW55KSA9PiB7XHJcbiAgICAgICAgaWYgKGdyb3VwTm9kZS5jaGVja2VkKVxyXG4gICAgICAgICAgZ3JvdXBOb2RlLm5vZGVzLmZvckVhY2goKGNoaWxkTm9kZTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMudHJhdmVyc2UoY2hpbGROb2RlLCBjdXJyZW50RW50aXR5KTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmIChub2RlLmNoZWNrZWQpIHtcclxuICAgICAgICBsZXQgdGFibGVUeXBlID0gdGhpcy5tb2RlbFR5cGVMb29rdXAuZ2V0VHlwZSh0aGlzLnRhYmxlTmFtZSk7XHJcbiAgICAgICAgbGV0IG5ld0VudGl0eSA9IHRoaXMuZGF0YUNvbnRleHQuZW50aXR5QWNjZXNzKCkuYWRkKHRhYmxlVHlwZSwgdGhpcy5jb250ZXh0RmlsdGVycyk7XHJcbiAgICAgICAgdHlwZSBPYmplY3RLZXkgPSBrZXlvZiB0eXBlb2YgbmV3RW50aXR5O1xyXG4gICAgICAgIHRoaXMuZ2V0UHJvdG90eXBlUHJvcGVydGllcyhuZXdFbnRpdHkpLmZvckVhY2goKHByb3BlcnR5TmFtZSkgPT4ge1xyXG4gICAgICAgICAgaWYgKHRoaXMucHJvcGVydHlJc0FsbG93ZWQocHJvcGVydHlOYW1lLCBub2RlLnRhYmxlTmFtZSkpIHtcclxuICAgICAgICAgICAgbmV3RW50aXR5W3Byb3BlcnR5TmFtZSBhcyBPYmplY3RLZXldID0gbm9kZS5lbnRpdHlbcHJvcGVydHlOYW1lXTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgbmV3RW50aXR5LnNldFByb3BlcnR5ISgnX2Fzc29jaWF0ZWREYXRhQ2FjaGVkJywgdHJ1ZSk7XHJcblxyXG4gICAgICAgIGxldCBjaGlsZExvb2t1cCA9IHRoaXMubW9kZWxUYWJsZUxvb2t1cC5sb29rdXAuZ2V0KG5vZGUudGFibGVOYW1lKTtcclxuICAgICAgICBjdXJyZW50RW50aXR5WydvJyArIGNoaWxkTG9va3VwIS5wbHVyYWxOYW1lXS5wdXNoKG5ld0VudGl0eSk7XHJcbiAgICAgICAgbGV0IGNoaWxkTm9kZXMgPSBub2RlLm5vZGVzO1xyXG4gICAgICAgIGNoaWxkTm9kZXMuZm9yRWFjaCgoY2hpbGROb2RlOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChjaGlsZE5vZGUuY2hlY2tlZClcclxuICAgICAgICAgICAgY2hpbGROb2RlLm5vZGVzLmZvckVhY2goKGdyb3VwTm9kZTogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgdGhpcy50cmF2ZXJzZShncm91cE5vZGUsIG5ld0VudGl0eSk7XHJcbiAgICAgICAgICAgIH0pO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfTtcclxuXHJcbiAgcHJpdmF0ZSBnZXREYXRhRm9yQ2xvbmluZyA9ICgpID0+IHtcclxuICAgIHRoaXMuZGF0YUNvbnRleHQuZW50aXR5QWNjZXNzKCkuY2xvbmUoe1xyXG4gICAgICByZWY6IHRoaXMuZW50aXR5LlJlZixcclxuICAgICAgdGFibGVOYW1lOiB0aGlzLnRhYmxlTmFtZVxyXG4gICAgfSkuc3Vic2NyaWJlKHtcclxuICAgICAgbmV4dDogKHJlc3BvbnNlOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLmRhdGFUcmVlID0gcmVzcG9uc2UuQ29udGVudFswXTtcclxuICAgICAgICB0aGlzLmJ1aWxkQ2xvbmVUcmVlKHRoaXMuZGF0YVRyZWUsIHRoaXMucm9vdE5vZGUpO1xyXG5cclxuICAgICAgICB0aGlzLmxvYWRpbmdNZXNzYWdlID0gJ0Zvcm1hdHRpbmcgZGF0YS4uLigwLycgKyB0aGlzLmNoaWxkRmxhdExpc3QubGVuZ3RoICsgJykgcmVjb3Jkcyc7XHJcbiAgICAgICAgdGhpcy5hc3luY0ZvckVhY2hSZWNvcmRJZCh0aGlzLmNoaWxkRmxhdExpc3QsIHRoaXMuZmV0Y2hSZWNvcmRJZCkudGhlbih0aGlzLm9uRG9uZSk7XHJcblxyXG4gICAgICAgIHRoaXMuZGlzcGxheVRyZWUgPSBbdGhpcy5yb290Tm9kZV07XHJcbiAgICAgIH0sXHJcbiAgICAgIGVycm9yOiAoZXg6IGFueSkgPT4ge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCdlcnJvcicsIHRoaXMudWlOb3RpZmljYXRpb24uZXJyb3IoJ1NlcnZlciBFcnJvcjogJyArIGV4LnN0YXR1cywgW2V4LmVycm9yLk1lc3NhZ2VdKSlcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBvbkNsb25lID0gKCkgPT4ge1xyXG4gICAgbGV0IGNvcGllcyA9IHRoaXMuc2VsZWN0ZWROdW1iZXJPZkNvcGllcy52YWx1ZTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY29waWVzOyBpKyspIHtcclxuICAgICAgbGV0IHRhYmxlVHlwZSA9IHRoaXMubW9kZWxUeXBlTG9va3VwLmdldFR5cGUodGhpcy50YWJsZU5hbWUpO1xyXG4gICAgICBsZXQgbmV3RW50aXR5ID0gdGhpcy5kYXRhQ29udGV4dC5lbnRpdHlBY2Nlc3MoKS5hZGQodGFibGVUeXBlLCB0aGlzLmNvbnRleHRGaWx0ZXJzKTtcclxuICAgICAgdHlwZSBPYmplY3RLZXkgPSBrZXlvZiB0eXBlb2YgbmV3RW50aXR5O1xyXG4gICAgICB0aGlzLmdldFByb3RvdHlwZVByb3BlcnRpZXModGhpcy5lbnRpdHkpLmZvckVhY2goKHByb3BlcnR5TmFtZTogc3RyaW5nKSA9PiB7XHJcbiAgICAgICAgaWYgKHRoaXMucHJvcGVydHlJc0FsbG93ZWQocHJvcGVydHlOYW1lLCB0aGlzLnRhYmxlTmFtZSkpIHtcclxuICAgICAgICAgIG5ld0VudGl0eVtwcm9wZXJ0eU5hbWUgYXMgT2JqZWN0S2V5XSA9IHRoaXMuZW50aXR5W3Byb3BlcnR5TmFtZV07XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIG5ld0VudGl0eS5zZXRQcm9wZXJ0eSEoJ19hc3NvY2lhdGVkRGF0YUNhY2hlZCcsIHRydWUpO1xyXG5cclxuICAgICAgdGhpcy50cmF2ZXJzZSh0aGlzLmRpc3BsYXlUcmVlWzBdLCBuZXdFbnRpdHkpO1xyXG4gICAgICB0aGlzLnZpZXcuZW50aXRpZXM/LnB1c2gobmV3RW50aXR5KTtcclxuICAgIH1cclxuICAgIHRoaXMud2luZG93RXZlbnRIYW5kbGVyLmNsb3NlKCk7XHJcbiAgfTtcclxuXHJcbiAgb25Eb25lID0gKCkgPT4ge1xyXG4gICAgdGhpcy5kb25lUHJvY2Vzc2luZyA9IHRydWU7XHJcbiAgfVxyXG5cclxuICBvblJlbmRlcmVkID0gKCkgPT4ge1xyXG4gICAgdGhpcy5sb2FkaW5nTWVzc2FnZSA9ICcnO1xyXG4gIH07XHJcblxyXG4gIG9uQ2FuY2VsID0gKCkgPT4ge1xyXG4gICAgdGhpcy53aW5kb3dFdmVudEhhbmRsZXIuY2xvc2UoKTtcclxuICB9O1xyXG5cclxuICBvbkV4cGFuZENsaWNrZWQgPSAoKSA9PiB7XHJcbiAgICB0aGlzLmNoaWxkRmxhdExpc3QuZmluZCgobm9kZTogTm9kZSkgPT4geyBub2RlLnNob3dFbnRpdGllcyA9IHRydWU7IH0pO1xyXG4gIH1cclxuICAgICBcclxuICBvbkNvbGxhcHNlQ2xpY2tlZCA9ICgpID0+IHtcclxuICAgIHRoaXMuY2hpbGRGbGF0TGlzdC5maW5kKChub2RlOiBOb2RlKSA9PiB7IG5vZGUuc2hvd0VudGl0aWVzID0gZmFsc2U7IH0pO1xyXG4gIH1cclxuXHJcbiAgb25OdW1iZXJPZkNvcGllc0NoYW5nZWQgPSAoZXZlbnQ6IGFueSkgPT4ge1xyXG5cclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy50YWJsZU5hbWUgPSB0aGlzLnZpZXcud2luZG93LnRhYmxlTmFtZTtcclxuICAgIHRoaXMuZW50aXRpZXMgPSB0aGlzLnZpZXcuZW50aXRpZXMgYXMgYW55O1xyXG4gICAgdGhpcy5lbnRpdHkgPSB0aGlzLmVudGl0aWVzW3RoaXMudmlldy5lbnRpdHlJbmRleF07XHJcbiAgICB0aGlzLnJvb3ROb2RlID0gbmV3IE5vZGUobnVsbCwgdGhpcy50YWJsZU5hbWUsIHRoaXMudGFibGVOYW1lLCBmYWxzZSwgdHJ1ZSwgbnVsbCwgbnVsbCwgbnVsbCwgdHJ1ZSwgbnVsbCwgbnVsbCk7XHJcbiAgICB0aGlzLnNldEVudGl0eURpc3BsYXlWYWx1ZXModGhpcy52aWV3LndpbmRvdy50YWJsZU5hbWUpO1xyXG4gICAgdGhpcy5nZXREYXRhRm9yQ2xvbmluZygpO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLmRhdGFUcmVlLmxlbmd0aCA9IDA7XHJcbiAgICB0aGlzLmZsYXRMaXN0Lmxlbmd0aCA9IDA7XHJcbiAgICB0aGlzLmNoaWxkRmxhdExpc3QubGVuZ3RoID0gMDtcclxuICB9XHJcbn1cclxuXHJcbmNsYXNzIE5vZGUge1xyXG4gIHJlZjogbnVtYmVyIHwgbnVsbDtcclxuICB0YWJsZU5hbWU6IHN0cmluZztcclxuICBkaXNwbGF5TmFtZTogc3RyaW5nO1xyXG4gIGNoZWNrZWQ6IGJvb2xlYW47XHJcbiAgY2hpbGQ6IGFueTtcclxuICBjaGlsZE5vZGVzOiBhbnk7XHJcbiAgc2hvd0VudGl0aWVzOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcGF0aEZyb21Sb290OiBzdHJpbmcgfCBudWxsO1xyXG4gIHBhcmVudFRvQ2hpbGRSZWZOYW1lOiBzdHJpbmcgfCBudWxsO1xyXG4gIG5vZGVzOiBOb2RlW10gPSBbXTtcclxuICByb290OiBhbnk7XHJcbiAgcGFyZW50OiBhbnk7XHJcbiAgZW50aXR5OiBhbnk7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcmVmOiBudW1iZXIgfCBudWxsLFxyXG4gICAgdGFibGVOYW1lOiBzdHJpbmcsXHJcbiAgICBkaXNwbGF5TmFtZTogc3RyaW5nLFxyXG4gICAgY2hpbGQ6IGFueSxcclxuICAgIGNoZWNrZWQ6IGJvb2xlYW4sXHJcbiAgICBjaGlsZEVudGl0aWVzOiBhbnksXHJcbiAgICBwYXRoRnJvbVJvb3Q6IHN0cmluZyB8IG51bGwsXHJcbiAgICBwYXJlbnRUb0NoaWxkUmVmTmFtZTogc3RyaW5nIHwgbnVsbCxcclxuICAgIHJvb3Q6IGJvb2xlYW4sXHJcbiAgICBwYXJlbnQ6IGFueSxcclxuICAgIGVudGl0eTogYW55KSB7XHJcbiAgICB0aGlzLnJlZiA9IHJlZjtcclxuICAgIHRoaXMudGFibGVOYW1lID0gdGFibGVOYW1lO1xyXG4gICAgdGhpcy5kaXNwbGF5TmFtZSA9IGRpc3BsYXlOYW1lO1xyXG4gICAgdGhpcy5jaGVja2VkID0gY2hlY2tlZDtcclxuICAgIHRoaXMuY2hpbGQgPSBjaGlsZDtcclxuICAgIHRoaXMuY2hpbGROb2RlcyA9IGNoaWxkRW50aXRpZXM7XHJcbiAgICB0aGlzLnBhdGhGcm9tUm9vdCA9IHBhdGhGcm9tUm9vdDtcclxuICAgIHRoaXMucGFyZW50VG9DaGlsZFJlZk5hbWUgPSBwYXJlbnRUb0NoaWxkUmVmTmFtZTtcclxuICAgIHRoaXMucm9vdCA9IHJvb3Q7XHJcbiAgICB0aGlzLnBhcmVudCA9IHBhcmVudDtcclxuICAgIHRoaXMuZW50aXR5ID0gZW50aXR5O1xyXG4gIH1cclxuXHJcbiAgb25Hcm91cERpc3BsYXkgPSAoKSA9PiB7XHJcbiAgICB2YXIgY3VycmVudFZhbHVlID0gdGhpcy5zaG93RW50aXRpZXMgPSAhdGhpcy5zaG93RW50aXRpZXM7XHJcbiAgICB0aGlzLm5vZGVzLmZpbmQoKG46IGFueSkgPT4ge1xyXG4gICAgICBuLnNob3dFbnRpdGllcyA9IGN1cnJlbnRWYWx1ZTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgb25DaGVja2VkQ2hhbmdlZCA9ICgpID0+IHtcclxuICAgIGlmICh0aGlzLmNoZWNrZWQpIHtcclxuICAgICAgaWYgKHRoaXMuY2hpbGQpIHtcclxuICAgICAgICB2YXIgcCA9IHRoaXMucGFyZW50O1xyXG4gICAgICAgIHdoaWxlIChwKSB7XHJcbiAgICAgICAgICBwLmNoZWNrZWQgPSB0cnVlO1xyXG4gICAgICAgICAgcCA9IHAucGFyZW50O1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB0aGlzLm5vZGVzLmZpbmQoKG46IGFueSkgPT4geyBuLmNoZWNrZWQgPSB0cnVlOyB9KTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHRoaXMuY2hpbGQpIHtcclxuICAgICAgICB2YXIgYWxsVW5jaGVja2VkID0gdGhpcy5wYXJlbnQubm9kZXMuZXZlcnkoKG46IGFueSkgPT4ge1xyXG4gICAgICAgICAgcmV0dXJuIG4uY2hlY2tlZCA9PT0gZmFsc2U7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgaWYgKGFsbFVuY2hlY2tlZClcclxuICAgICAgICAgIHRoaXMucGFyZW50LmNoZWNrZWQgPSBmYWxzZTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB2YXIgdW5jaGVja0NoaWxkTm9kZXMgPSAobm9kZTogYW55KSA9PiB7XHJcbiAgICAgICAgICBub2RlLm5vZGVzLmZpbmQoKG46IGFueSkgPT4ge1xyXG4gICAgICAgICAgICB1bmNoZWNrQ2hpbGROb2RlcyhuKTtcclxuICAgICAgICAgICAgbi5jaGVja2VkID0gZmFsc2U7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9O1xyXG4gICAgICAgIHRoaXMubm9kZXMuZmluZCgobjogYW55KSA9PiB7XHJcbiAgICAgICAgICB1bmNoZWNrQ2hpbGROb2RlcyhuKTtcclxuICAgICAgICAgIG4uY2hlY2tlZCA9IGZhbHNlO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG4iLCI8ZGl2PlxyXG4gIDx0cnUtdG9vbGJhcj5cclxuICAgIDx0cnUtdG9vbGJhci1idXR0b24gW2ljb25dPVwiJ2V4cGFuZC1pY29uJ1wiIFt0b29sdGlwXT1cIidFeHBhbmQnXCIgW2Rpc2FibGVkXT1cIiFkb25lUHJvY2Vzc2luZ1wiIChvbkNsaWNrKT1cIm9uRXhwYW5kQ2xpY2tlZCgpXCI+PC90cnUtdG9vbGJhci1idXR0b24+XHJcbiAgICA8dHJ1LXRvb2xiYXItYnV0dG9uIFtpY29uXT1cIidjb2xsYXBzZS1pY29uJ1wiIFt0b29sdGlwXT1cIidDb2xsYXBzZSdcIiBbZGlzYWJsZWRdPVwiIWRvbmVQcm9jZXNzaW5nXCIgKG9uQ2xpY2spPVwib25Db2xsYXBzZUNsaWNrZWQoKVwiPjwvdHJ1LXRvb2xiYXItYnV0dG9uPlxyXG4gICAgPHRydS10b29sYmFyLXRleHQgW3RleHRdPVwiJ0NvcGllczonXCI+PC90cnUtdG9vbGJhci10ZXh0PlxyXG4gICAgPHRydS10b29sYmFyLWRyb3Bkb3duIFtvcHRpb25zXT1cIm51bWJlck9mQ29waWVzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbKHNlbGVjdGVkT3B0aW9uKV09XCJzZWxlY3RlZE51bWJlck9mQ29waWVzXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiIWRvbmVQcm9jZXNzaW5nXCJcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZWN0aW9uQ2hhbmdlKT1cIm9uTnVtYmVyT2ZDb3BpZXNDaGFuZ2VkKCRldmVudClcIj5cclxuICAgIDwvdHJ1LXRvb2xiYXItZHJvcGRvd24+XHJcbiAgPC90cnUtdG9vbGJhcj5cclxuICA8ZGl2IGNsYXNzPVwidHJ1LWRpYWxvZy1jb250ZW50IGNsb25lXCI+XHJcbiAgICA8bmctdGVtcGxhdGUgI2dyb3VwTm9kZVJlbmRlcmVyIGxldC1kYXRhPlxyXG4gICAgICA8ZGl2ICpuZ0lmPVwiIWRhdGEuY2hpbGQgfHwgZGF0YS5zaG93RW50aXRpZXNcIlxyXG4gICAgICAgICAgIGNsYXNzPVwiY2xvbmUtbW9kYWwtdHJlZS1ncm91cFwiPlxyXG4gICAgICAgIDxpbnB1dCBbKG5nTW9kZWwpXT1cImRhdGEuY2hlY2tlZFwiXHJcbiAgICAgICAgICAgICAgIChjbGljayk9XCJkYXRhLm9uQ2hlY2tlZENoYW5nZWQoKVwiXHJcbiAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJkYXRhLnJvb3RcIlxyXG4gICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIiAvPlxyXG4gICAgICAgIDxhIChjbGljayk9XCJkYXRhLm9uR3JvdXBEaXNwbGF5TmFtZUNsaWNrZWQoKVwiXHJcbiAgICAgICAgICAgW25nQ2xhc3NdPVwieydjbG9uZS1tb2RhbC10cmVlLWdyb3VwLXJvb3QtbmFtZSc6IGRhdGEucm9vdCB8fCBkYXRhLmNoaWxkfVwiXHJcbiAgICAgICAgICAgW25nU3R5bGVdPVwieydtYXgtd2lkdGgnOiBkYXRhLmNoaWxkTm9kZSA/ICczMDBweCcgOiAnYXV0byd9XCI+e3tkYXRhLmRpc3BsYXlOYW1lfX08L2E+XHJcbiAgICAgICAgPHNwYW4gKm5nSWY9XCIhZGF0YS5yb290ICYmICFkYXRhLmNoaWxkXCJcclxuICAgICAgICAgICAgICBjbGFzcz1cImNsb25lLW1vZGFsLXRyZWUtZ3JvdXAtY291bnRcIj4oe3tkYXRhLm5vZGVzLmxlbmd0aH19KTwvc3Bhbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIDx1bD5cclxuICAgICAgICA8bGkgKm5nRm9yPVwibGV0IGRhdGEgb2YgZGF0YS5ub2RlczsgbGV0IGxhc3QgPSBsYXN0XCIgdHJ1UmVuZGVyZWQgKHJlbmRlcmVkKT1cIm9uUmVuZGVyZWQoKVwiPlxyXG4gICAgICAgICAgPGRpdiAqbmdUZW1wbGF0ZU91dGxldD1cImdyb3VwTm9kZVJlbmRlcmVyOyBjb250ZXh0OiB7JGltcGxpY2l0OiBkYXRhfVwiPjwvZGl2PlxyXG4gICAgICAgIDwvbGk+XHJcbiAgICAgIDwvdWw+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPGRpdiAqbmdJZj1cImxvYWRpbmdNZXNzYWdlXCJcclxuICAgICAgICAgY2xhc3M9XCJjbG9uZS1tb2RhbC1sb2FkaW5nXCI+XHJcbiAgICAgIDxzcGFuIGNsYXNzPVwiY2xvbmUtbW9kYWwtbG9hZGluZy1tZXNzYWdlXCI+e3tsb2FkaW5nTWVzc2FnZX19PC9zcGFuPlxyXG4gICAgPC9kaXY+XHJcbiAgICA8ZGl2ICpuZ0lmPVwiZG9uZVByb2Nlc3NpbmdcIlxyXG4gICAgICAgICBjbGFzcz1cImNsb25lLW1vZGFsLXRyZWVcIj5cclxuICAgICAgPHVsPlxyXG4gICAgICAgIDxsaSAqbmdGb3I9XCJsZXQgZGF0YSBvZiBkaXNwbGF5VHJlZTsgbGV0IGxhc3QgPSBsYXN0XCIgdHJ1UmVuZGVyZWQgKHJlbmRlcmVkKT1cIm9uUmVuZGVyZWQoKVwiPlxyXG4gICAgICAgICAgPGRpdiAqbmdUZW1wbGF0ZU91dGxldD1cImdyb3VwTm9kZVJlbmRlcmVyOyBjb250ZXh0OiB7JGltcGxpY2l0OiBkYXRhfVwiPjwvZGl2PlxyXG4gICAgICAgIDwvbGk+XHJcbiAgICAgIDwvdWw+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuICA8ZGl2IGNsYXNzPVwidHJ1LWRpYWxvZy1mb290ZXJcIj5cclxuICAgIDxidXR0b24gbWF0LWJ1dHRvbiAoY2xpY2spPVwib25DYW5jZWwoKVwiPkNhbmNlbDwvYnV0dG9uPlxyXG4gICAgPGJ1dHRvbiBtYXQtcmFpc2VkLWJ1dHRvbiBjb2xvcj1cInByaW1hcnlcIiAoY2xpY2spPVwib25DbG9uZSgpXCIgKGtleXVwLmVudGVyKT1cIm9uQ2xvbmUoKVwiIFtkaXNhYmxlZF09XCIhZG9uZVByb2Nlc3NpbmdcIj5DbG9uZTwvYnV0dG9uPlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
@@ -5737,10 +5737,7 @@ class TruCloneView extends TruViewBase {
5737
5737
  let childProperties = [];
5738
5738
  childNavigationPropertyNames.filter(function (n) {
5739
5739
  if (currentEntity[n] && currentEntity[n].length)
5740
- childProperties.push({
5741
- parentToChildRefName: n,
5742
- entities: currentEntity[n]
5743
- });
5740
+ childProperties.push(currentEntity[n]);
5744
5741
  });
5745
5742
  return childProperties;
5746
5743
  };
@@ -5751,21 +5748,19 @@ class TruCloneView extends TruViewBase {
5751
5748
  };
5752
5749
  buildCloneTree = (currentEntity, node) => {
5753
5750
  var childProperties = this.getChildPropertiesForCurrentEntity(currentEntity);
5754
- childProperties.forEach((childProperty) => {
5755
- childProperty.entities.forEach((entity) => {
5756
- let type = this.getTypeFromEntityTypeName(entity.$type);
5757
- let childLookup = this.modelTableLookup.lookup.get(type);
5758
- let groupNode = new Node(null, entity.constructor.name, childLookup?.pluralLabel, false, true, [], '', childProperty.parentToChildRefName, false, node, null);
5759
- this.flatList.push(groupNode);
5760
- childProperties.forEach((childProperty) => {
5761
- let type = this.getTypeFromEntityTypeName(entity.$type);
5762
- let childNode = new Node(entity[type + 'Ref'], type, type, true, true, [], '', childProperty.parentToChildRefName, false, groupNode, entity);
5763
- this.childFlatList.push(childNode);
5764
- groupNode.nodes.push(childNode);
5765
- this.buildCloneTree(entity, childNode);
5766
- });
5767
- node.nodes.push(groupNode);
5751
+ childProperties.forEach((childEntities) => {
5752
+ let type = this.getTypeFromEntityTypeName(childEntities[0].$type);
5753
+ let childLookup = this.modelTableLookup.lookup.get(type);
5754
+ let groupNode = new Node(null, childEntities[0].constructor.name, childLookup?.pluralLabel, false, true, [], '', null, false, node, null);
5755
+ this.flatList.push(groupNode);
5756
+ childEntities.forEach((childEntity) => {
5757
+ let type = this.getTypeFromEntityTypeName(childEntity.$type);
5758
+ let childNode = new Node(childEntity[type + 'Ref'], type, type, true, true, [], '', null, false, groupNode, childEntity);
5759
+ this.childFlatList.push(childNode);
5760
+ groupNode.nodes.push(childNode);
5761
+ this.buildCloneTree(childEntity, childNode);
5768
5762
  });
5763
+ node.nodes.push(groupNode);
5769
5764
  });
5770
5765
  };
5771
5766
  asyncForEachRecordId = (arr, cb) => {