@agilemotion/oui-react-js 2.0.26 → 2.0.28
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/AuthImage.js +68 -0
- package/dist/RestService.js +7 -2
- package/dist/components/AlertBar.js +2 -2
- package/dist/components/Button.js +59 -7
- package/dist/components/DataGrid.js +42 -16
- package/dist/components/DocumentTemplateDesignerComponent.js +2 -2
- package/dist/components/FileThumb.js +48 -15
- package/dist/components/TabPanel.js +14 -3
- package/dist/components/WordDocumentViewer.js +2 -2
- package/dist/components/dashboard/components/blackDashboard/sidebar/FoldingTabSidebar.js +6 -2
- package/dist/components/form/BaseField.js +4 -2
- package/dist/components/form/Checkbox.js +3 -2
- package/dist/components/form/FieldSet.js +2 -2
- package/dist/components/form/Form.css +1 -1
- package/dist/components/form/Form.js +40 -38
- package/dist/components/form/GridField.js +6 -5
- package/dist/components/form/RadioGroup.js +5 -5
- package/dist/components/form/UploadField.js +40 -7
- package/dist/components/layout/Layout.js +9 -1
- package/dist/components/layout/View.css +2 -0
- package/dist/components/media/ChatViewer.js +103 -0
- package/dist/components/media/TrainingRoom.js +5 -5
- package/dist/components/media/VCRoomParticipant.js +11 -11
- package/dist/components/media/VCRoomWorkspace.js +19 -4
- package/dist/components/media/VideoPlayer.js +61 -7
- package/dist/components/media/chat/ChatRoom.js +37 -28
- package/dist/components/media/chat/PollContainer.js +85 -18
- package/dist/documentDownload.js +79 -0
- package/dist/js/ProcurementMeetings.js +11 -4
- package/dist/view/PortalDashboard.js +6 -5
- package/package.json +1 -1
|
@@ -244,6 +244,9 @@ function FoldingTabSidebar(props) {
|
|
|
244
244
|
justifyContent: open ? 'flex-start' : 'center'
|
|
245
245
|
}
|
|
246
246
|
}, iconNode), open ? /*#__PURE__*/_react.default.createElement(_material.ListItemText, {
|
|
247
|
+
style: {
|
|
248
|
+
marginTop: '6px'
|
|
249
|
+
},
|
|
247
250
|
primary: /*#__PURE__*/_react.default.createElement("span", null, prop.name, ' ', prop.collapse && /*#__PURE__*/_react.default.createElement("span", {
|
|
248
251
|
className: "caret ".concat(isOpen ? 'caret-open' : 'caret-closed'),
|
|
249
252
|
style: {
|
|
@@ -495,7 +498,8 @@ function FoldingTabSidebar(props) {
|
|
|
495
498
|
}, iconNode), open && hb.text ? /*#__PURE__*/_react.default.createElement("div", {
|
|
496
499
|
style: {
|
|
497
500
|
fontWeight: 300,
|
|
498
|
-
fontSize: '.85rem'
|
|
501
|
+
fontSize: '.85rem',
|
|
502
|
+
marginTop: '2px'
|
|
499
503
|
}
|
|
500
504
|
}, hb.text) : null);
|
|
501
505
|
return /*#__PURE__*/_react.default.createElement("div", {
|
|
@@ -574,4 +578,4 @@ FoldingTabSidebar.propTypes = {
|
|
|
574
578
|
})
|
|
575
579
|
};
|
|
576
580
|
var _default = exports.default = FoldingTabSidebar;
|
|
577
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9wcm9wVHlwZXMiLCJfVXRpbHMiLCJfQXBwbGljYXRpb25NYW5hZ2VyIiwiX01lbnVMaW5rIiwiX0ljb24iLCJfbWF0ZXJpYWwiLCJfc3R5bGVzIiwiX1Jlc3RVdGlscyIsIl9DYXJkQXZhdGFyIiwiX01vcmVIb3JpeiIsIl9Ib21lIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0Iiwib3duS2V5cyIsInIiLCJ0IiwiT2JqZWN0Iiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsIm8iLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImRlZmluZVByb3BlcnR5IiwiX3RvUHJvcGVydHlLZXkiLCJ2YWx1ZSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiaSIsIl90b1ByaW1pdGl2ZSIsIlN5bWJvbCIsInRvUHJpbWl0aXZlIiwiY2FsbCIsIlR5cGVFcnJvciIsIlN0cmluZyIsIk51bWJlciIsIlRBQiIsIklDT05fQ09MIiwiRm9sZGluZ1RhYlNpZGViYXIiLCJwcm9wcyIsImFjdGl2ZUNvbG9yIiwib3BlbiIsImFwcExvZ29QYXRoIiwib25PcGVuRHJhd2VyIiwidGhlbWUiLCJ1c2VUaGVtZSIsImNvbGxhcHNlU3RhdGVzIiwic2V0Q29sbGFwc2VTdGF0ZXMiLCJSZWFjdCIsInVzZVN0YXRlIiwiZ2V0Q29sbGFwc2VTdGF0ZXMiLCJyb3V0ZXMiLCJpc0xvYWRpbmciLCJzZXRJc0xvYWRpbmciLCJlcnJvciIsInNldEVycm9yIiwicm91dGVzRGF0YSIsInNldFJvdXRlc0RhdGEiLCJ1bmRlZmluZWQiLCJhY3RpdmVSb3V0ZU1lbnUiLCJzZXRBY3RpdmVSb3V0ZU1lbnUiLCJpZCIsIm5hbWUiLCJob21lU2VsZWN0ZWQiLCJzZXRIb21lU2VsZWN0ZWQiLCJnZXRWaWV3cyIsIm1lbnVzIiwibGV2ZWwiLCJuZXdWaWV3cyIsImNyZWF0ZVZpZXciLCJhdHRyaWJ1dGVzIiwibGFiZWwiLCJpY29uIiwibWluaSIsImxheW91dCIsInN1Yk1lbnUiLCJjb2xsYXBzZSIsInN0YXRlIiwidmlld3MiLCJnZXRJdGVtcyIsIml0ZW1zIiwiaXRlbSIsIm5ld0l0ZW1zIiwiY3JlYXRlSXRlbSIsIlV0aWxzIiwiaXNOdWxsIiwiaW5pdGlhbFN0YXRlIiwicHJvcCIsImdldENvbGxhcHNlSW5pdGlhbFN0YXRlIiwid2luZG93IiwibG9jYXRpb24iLCJocmVmIiwiaW5kZXhPZiIsInBhdGgiLCJnZXRNZW51Iiwicm91dGUiLCJQcm9taXNlIiwicmVzb2x2ZSIsInNlcnZpY2UiLCJ1cmwiLCJwYXJhbWV0ZXJzIiwibWVudSIsImh0dHBQYXJhbWV0ZXJUeXBlIiwiY29udGVudFR5cGUiLCJpbnZva2VSZXN0IiwiYXBpIiwicmVzdWx0IiwiY29uc29sZSIsImFjdGl2ZVJvdXRlIiwicm91dGVOYW1lIiwiZ2V0TGlDbGFzc05hbWUiLCJmYWxsYmFja0ljb24iLCJpY29uTm9kZSIsIl9wcm9wJG5hbWUiLCJfcHJvcCRuYW1lJGNoYXJBdCIsIl9wcm9wJG5hbWUyIiwiX3Byb3AkbmFtZSRjaGFyQXQyIiwiX3Byb3AkbmFtZTMiLCJjcmVhdGVFbGVtZW50IiwiZm9udFNpemUiLCJjbGFzc05hbWUiLCJzdHlsZSIsImNoYXJBdCIsImNyZWF0ZUxpbmtzIiwic2Vjb25kYXJ5VGhlbWVDb2xvciIsIm1hcCIsImtleSIsIl9wcm9wJGl0ZW0iLCJyZWRpcmVjdCIsInJhd0ljb24iLCJpc1ZhbGlkRWxlbWVudCIsInRyaW0iLCJpc0FjdGl2ZSIsImlzQ29sbGFwc2libGUiLCJpc1BhcmVudCIsImlzT3BlbiIsImNvbGxhcHNpYmxlQ2xhc3NOYW1lIiwibGVhZkNsYXNzTmFtZSIsImluZGVudCIsImlzVG9wTGV2ZWwiLCJzaG91bGRTaG93VG9vbHRpcCIsImhhbmRsZUNsaWNrIiwicHJldmVudERlZmF1bHQiLCJ0b2dnbGUiLCJwcmV2IiwidGhlbiIsImJ1dHRvbiIsIkxpc3RJdGVtQnV0dG9uIiwib25DbGljayIsInN4IiwicGwiLCJiYWNrZ3JvdW5kQ29sb3IiLCJsaWdodGVuIiwiYm9yZGVyUmFkaXVzIiwiY29sb3IiLCJmb250V2VpZ2h0IiwiTGlzdEl0ZW1JY29uIiwibWluV2lkdGgiLCJtciIsImp1c3RpZnlDb250ZW50IiwiTGlzdEl0ZW1UZXh0IiwicHJpbWFyeSIsImNvbmNhdCIsIm1hcmdpblRvcCIsIkZyYWdtZW50IiwiVG9vbHRpcCIsInRpdGxlIiwicGxhY2VtZW50IiwiYXJyb3ciLCJDb2xsYXBzZSIsImluIiwidGltZW91dCIsInVubW91bnRPbkV4aXQiLCJtdCIsIkxpc3QiLCJkaXNhYmxlUGFkZGluZyIsIm1lbnVMaW5rIiwiY29uZmlnIiwiY2xpY2tDYWxsYmFjayIsImRhc2hib2FyZExhdW5jaGVyIiwiYXBwbGljYXRpb25NYW5hZ2VyIiwiaXNXaW5kb3dPcGVuIiwidXBkYXRlQ29udGV4dCIsIndpbmRvd0Rpc3BsYXlTdGF0ZSIsImF1dG9DbGljayIsImRlZmF1bHRJdGVtIiwidmlld0lkIiwiY29udGVudCIsImljb25Db2xvciIsInRhYiIsInB4Iiwib3BhY2l0eSIsInRyYW5zaXRpb24iLCJ1c2VFZmZlY3QiLCJjYW5jZWxsZWQiLCJtZXRob2QiLCJsb2dvIiwibG9nb0ltZyIsIm91dHRlckxpbmsiLCJjbG9zZVNpZGViYXIiLCJsb2dvU3R5bGUiLCJ3aWR0aCIsIm1heFdpZHRoIiwiZGlzcGxheSIsImFsaWduSXRlbXMiLCJzcmMiLCJpbWdTcmMiLCJhbHQiLCJyZXNvbHZlSGlnaGxpZ2h0Q29sb3IiLCJjIiwicGFsZXR0ZSIsIm1haW4iLCJzZWNvbmRhcnkiLCJyZW5kZXJIb21lQnV0dG9uIiwiaGIiLCJob21lQnV0dG9uU2V0dGluZ3MiLCJoaWdobGlnaHQiLCJpY29uU2l6ZSIsImNhbGxiYWNrIiwicHIiLCJtYXJnaW4iLCJ0ZXh0IiwicGFkZGluZyIsImJvcmRlciIsImRhdGEiLCJoZWFkaW5nIiwicGFkZGluZ1RvcCIsInBsYWluIiwiRGF0ZSIsImdldEZ1bGxZZWFyIiwicHJvcFR5cGVzIiwiUHJvcFR5cGVzIiwib25lT2YiLCJzdHJpbmciLCJpc1JlcXVpcmVkIiwicnRsQWN0aXZlIiwiYm9vbCIsImFycmF5Iiwib25lT2ZUeXBlIiwic2hhcGUiLCJpbm5lckxpbmsiLCJmdW5jIiwib2JqZWN0IiwiZWxlbWVudCIsIm51bWJlciIsIl9kZWZhdWx0IiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9kYXNoYm9hcmQvY29tcG9uZW50cy9ibGFja0Rhc2hib2FyZC9zaWRlYmFyL0ZvbGRpbmdUYWJTaWRlYmFyLmpzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSAqL1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgVXRpbHMgZnJvbSAnLi4vLi4vLi4vLi4vLi4vVXRpbHMnO1xuaW1wb3J0IGFwcGxpY2F0aW9uTWFuYWdlciBmcm9tICcuLi8uLi8uLi8uLi8uLi9BcHBsaWNhdGlvbk1hbmFnZXInO1xuaW1wb3J0IE1lbnVMaW5rIGZyb20gJy4uLy4uLy4uLy4uL21lbnUvTWVudUxpbmsnO1xuaW1wb3J0IEljb24gZnJvbSAnLi4vLi4vLi4vLi4vSWNvbic7XG5pbXBvcnQge0NvbGxhcHNlLCBsaWdodGVuLCBMaXN0LCBMaXN0SXRlbUJ1dHRvbiwgTGlzdEl0ZW1JY29uLCBMaXN0SXRlbVRleHQsIFRvb2x0aXB9IGZyb20gJ0BtdWkvbWF0ZXJpYWwnO1xuaW1wb3J0IHt1c2VUaGVtZX0gZnJvbSAnQG11aS9tYXRlcmlhbC9zdHlsZXMnO1xuaW1wb3J0IHtpbnZva2VSZXN0fSBmcm9tICcuLi8uLi8uLi8uLi8uLi9SZXN0VXRpbHMnO1xuaW1wb3J0ICcuL0ZvbGRpbmdUYWJTaWRlYmFyLmNzcyc7XG5pbXBvcnQgQ2FyZEF2YXRhciBmcm9tIFwiLi4vLi4vLi4vLi4vY2FyZC9DYXJkQXZhdGFyXCI7XG5pbXBvcnQgTW9yZUhvcml6SWNvbiBmcm9tICdAbXVpL2ljb25zLW1hdGVyaWFsL01vcmVIb3Jpeic7XG5pbXBvcnQgSG9tZUljb24gZnJvbSAnQG11aS9pY29ucy1tYXRlcmlhbC9Ib21lJztcblxuY29uc3QgVEFCID0gMTY7XG4vLyBTaGFyZWQgaWNvbi1jb2x1bW4gd2lkdGggKHB4KSBzbyBpY29ucyBsZWZ0LWFsaWduIGFuZCB0ZXh0IHN0YXJ0cyBhdCB0aGUgc2FtZVxuLy8geCBmb3IgZXZlcnkgaXRlbSAoaG9tZSBidXR0b24gKyByb3V0ZXMpLCByZWdhcmRsZXNzIG9mIGljb24gc2l6ZSBvciBhYnNlbmNlLlxuY29uc3QgSUNPTl9DT0wgPSAyNDtcblxuZnVuY3Rpb24gRm9sZGluZ1RhYlNpZGViYXIocHJvcHMpIHtcbiAgICBjb25zdCB7YWN0aXZlQ29sb3IsIG9wZW4sIGFwcExvZ29QYXRoLCBvbk9wZW5EcmF3ZXJ9ID0gcHJvcHM7XG4gICAgY29uc3QgdGhlbWUgPSB1c2VUaGVtZSgpO1xuICAgIGNvbnN0IFtjb2xsYXBzZVN0YXRlcywgc2V0Q29sbGFwc2VTdGF0ZXNdID0gUmVhY3QudXNlU3RhdGUoXG4gICAgICAgIGdldENvbGxhcHNlU3RhdGVzKHByb3BzLnJvdXRlcylcbiAgICApO1xuICAgIGNvbnN0IFtpc0xvYWRpbmcsIHNldElzTG9hZGluZ10gPSBSZWFjdC51c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgW2Vycm9yLCBzZXRFcnJvcl0gPSBSZWFjdC51c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgW3JvdXRlc0RhdGEsIHNldFJvdXRlc0RhdGFdID0gUmVhY3QudXNlU3RhdGUodW5kZWZpbmVkKTtcbiAgICBjb25zdCBbYWN0aXZlUm91dGVNZW51LCBzZXRBY3RpdmVSb3V0ZU1lbnVdID0gUmVhY3QudXNlU3RhdGUoe1xuICAgICAgICBpZDogJ2Rhc2hib2FyZCcsXG4gICAgICAgIG5hbWU6ICdEYXNoYm9hcmQnXG4gICAgfSk7XG4gICAgLy8gSG9tZSBidXR0b24gaXMgaGlnaGxpZ2h0ZWQgYnkgZGVmYXVsdDsgc2VsZWN0aW5nIGFueSByb3V0ZSBjbGVhcnMgaXQsXG4gICAgLy8gY2xpY2tpbmcgdGhlIGhvbWUgYnV0dG9uIHJlc3RvcmVzIGl0LlxuICAgIGNvbnN0IFtob21lU2VsZWN0ZWQsIHNldEhvbWVTZWxlY3RlZF0gPSBSZWFjdC51c2VTdGF0ZSh0cnVlKTtcblxuICAgIC8qIC0tLS0tLS0tLS0tLS0tLS0tIGhlbHBlcnMgKHBvcnRlZCBmcm9tIGNsYXNzKSAtLS0tLS0tLS0tLS0tLS0tLSAqL1xuICAgIGZ1bmN0aW9uIGdldFZpZXdzKG1lbnVzLCBsZXZlbCkge1xuICAgICAgICBjb25zdCBuZXdWaWV3cyA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1lbnVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBjcmVhdGVWaWV3ID0ge1xuICAgICAgICAgICAgICAgIG5hbWU6IG1lbnVzW2ldLmF0dHJpYnV0ZXMubGFiZWwsXG4gICAgICAgICAgICAgICAgaWQ6IG1lbnVzW2ldLmlkLFxuICAgICAgICAgICAgICAgIGljb246IG1lbnVzW2ldLmljb24sXG4gICAgICAgICAgICAgICAgbWluaTogJ1NTJyxcbiAgICAgICAgICAgICAgICBsYXlvdXQ6ICcvYWRtaW4nLFxuICAgICAgICAgICAgICAgIGxldmVsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgaWYgKG1lbnVzW2ldLnN1Yk1lbnUpIHtcbiAgICAgICAgICAgICAgICBjcmVhdGVWaWV3LmNvbGxhcHNlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBjcmVhdGVWaWV3LnN0YXRlID0gbWVudXNbaV0uaWQgKyAnQ29sbGFwc2UnO1xuICAgICAgICAgICAgICAgIGNyZWF0ZVZpZXcudmlld3MgPSBnZXRJdGVtcyhtZW51c1tpXS5zdWJNZW51Lml0ZW1zLCBsZXZlbCArIDEpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjcmVhdGVWaWV3Lml0ZW0gPSBtZW51c1tpXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG5ld1ZpZXdzLnB1c2goY3JlYXRlVmlldyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ld1ZpZXdzO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldEl0ZW1zKGl0ZW1zLCBsZXZlbCkge1xuICAgICAgICBjb25zdCBuZXdJdGVtcyA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGl0ZW1zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBjcmVhdGVJdGVtID0ge1xuICAgICAgICAgICAgICAgIG5hbWU6IGl0ZW1zW2ldLmF0dHJpYnV0ZXMubGFiZWwsXG4gICAgICAgICAgICAgICAgaWQ6IGl0ZW1zW2ldLmlkLFxuICAgICAgICAgICAgICAgIGljb246IGl0ZW1zW2ldLmljb24sXG4gICAgICAgICAgICAgICAgbWluaTogJ1NTJyxcbiAgICAgICAgICAgICAgICBsYXlvdXQ6ICcvYWRtaW4nLFxuICAgICAgICAgICAgICAgIGl0ZW06IGl0ZW1zW2ldLFxuICAgICAgICAgICAgICAgIGxldmVsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwoaXRlbXNbaV0uc3ViTWVudSkpIHtcbiAgICAgICAgICAgICAgICBjcmVhdGVJdGVtLmNvbGxhcHNlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBjcmVhdGVJdGVtLnN0YXRlID0gaXRlbXNbaV0uaWQgKyAnU3ViTWVudUNvbGxhcHNlJztcbiAgICAgICAgICAgICAgICBjcmVhdGVJdGVtLnZpZXdzID0gZ2V0SXRlbXMoaXRlbXNbaV0uc3ViTWVudS5pdGVtcywgbGV2ZWwgKyAxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG5ld0l0ZW1zLnB1c2goY3JlYXRlSXRlbSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ld0l0ZW1zO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldENvbGxhcHNlU3RhdGVzKHJvdXRlcykge1xuICAgICAgICBsZXQgaW5pdGlhbFN0YXRlID0ge307XG4gICAgICAgIGlmIChyb3V0ZXMpIHtcbiAgICAgICAgICAgIHJvdXRlcy5mb3JFYWNoKChwcm9wKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHByb3AuY29sbGFwc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgaW5pdGlhbFN0YXRlID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgW3Byb3Auc3RhdGVdOiBnZXRDb2xsYXBzZUluaXRpYWxTdGF0ZShwcm9wLnZpZXdzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmdldENvbGxhcHNlU3RhdGVzKHByb3Audmlld3MpLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uaW5pdGlhbFN0YXRlXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGluaXRpYWxTdGF0ZTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRDb2xsYXBzZUluaXRpYWxTdGF0ZShyb3V0ZXMpIHtcbiAgICAgICAgaWYgKCFyb3V0ZXMpIHJldHVybiBmYWxzZTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCByb3V0ZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmICghcm91dGVzW2ldLnZpZXdzKSByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIGlmIChyb3V0ZXNbaV0uY29sbGFwc2UgJiYgZ2V0Q29sbGFwc2VJbml0aWFsU3RhdGUocm91dGVzW2ldLnZpZXdzKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh3aW5kb3cubG9jYXRpb24uaHJlZi5pbmRleE9mKHJvdXRlc1tpXS5wYXRoKSAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgY29uc3QgZ2V0TWVudSA9IChyb3V0ZSkgPT5cbiAgICAgICAgbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHNlcnZpY2UgPSB7XG4gICAgICAgICAgICAgICAgdXJsOiAnL3VpL2FwaS92MS9tZW51L2dldCcsXG4gICAgICAgICAgICAgICAgcGFyYW1ldGVyczogW1xuICAgICAgICAgICAgICAgICAgICB7bmFtZTogJ2lkJywgdmFsdWU6IHJvdXRlLm1lbnUsIGh0dHBQYXJhbWV0ZXJUeXBlOiAnUVVFUllfUEFSQU1FVEVSJ30sXG4gICAgICAgICAgICAgICAgICAgIHtuYW1lOiAndmVyc2lvbicsIHZhbHVlOiAxLjAsIGh0dHBQYXJhbWV0ZXJUeXBlOiAnUVVFUllfUEFSQU1FVEVSJ31cbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIGNvbnRlbnRUeXBlOiAnYXBwbGljYXRpb24vanNvbidcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGludm9rZVJlc3QoXG4gICAgICAgICAgICAgICAgc2VydmljZSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGFwaToge1xuICAgICAgICAgICAgICAgICAgICAgICAgZ2V0IGlkKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnZGFzaGJvYXJkLXNpZGViYXInO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAnZGFzaGJvYXJkLXNpZGViYXInLFxuICAgICAgICAgICAgICAgIChyZXN1bHQpID0+IHJlc29sdmUoZ2V0Vmlld3MocmVzdWx0Lm1lbnVzLCByb3V0ZS5sZXZlbCArIDEpKSxcbiAgICAgICAgICAgICAgICAoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKG51bGwpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgbnVsbFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSk7XG5cbiAgICBjb25zdCBhY3RpdmVSb3V0ZSA9IChyb3V0ZU5hbWUpID0+IGFjdGl2ZVJvdXRlTWVudS5pZCA9PT0gcm91dGVOYW1lO1xuICAgIGNvbnN0IGdldExpQ2xhc3NOYW1lID0gKHByb3ApID0+ICdsaS0nICsgcHJvcC5sZXZlbDtcblxuICAgIGNvbnN0IGZhbGxiYWNrSWNvbiA9IChwcm9wLCBpY29uTm9kZSkgPT4ge1xuICAgICAgICBpZiAocHJvcC5pY29uKSByZXR1cm4gaWNvbk5vZGU7XG5cbiAgICAgICAgaWYgKHByb3AubGV2ZWwgPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiA8TW9yZUhvcml6SWNvbiBmb250U2l6ZT1cInNtYWxsXCIvPjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1pbmktYXZhdGFyXCIgc3R5bGU9e3tmb250U2l6ZTogJzEwcHgnfX0+XG4gICAgICAgICAgICAgICAge3Byb3AubmFtZT8uY2hhckF0KDApICsgKHByb3AubmFtZT8uY2hhckF0KDEpID8/ICcnKSArIChwcm9wLm5hbWU/LmNoYXJBdCgyKSA/PyAnJykgKyAnLi4uJ31cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICApO1xuICAgIH07XG5cbiAgICAvKiAtLS0tLS0tLS0tLS0tLS0tLSBjcmVhdGVMaW5rcyB3aXRoIGR5bmFtaWMgY2xhc3NlcyArIHRoZW1lIGNvbG9ycyAtLS0tLS0tLS0tLS0tLS0tLSAqL1xuICAgIGNvbnN0IGNyZWF0ZUxpbmtzID0gKHJvdXRlcykgPT4ge1xuICAgICAgICBjb25zdCB7c2Vjb25kYXJ5VGhlbWVDb2xvciwgb3Blbn0gPSBwcm9wcztcblxuICAgICAgICByZXR1cm4gcm91dGVzLm1hcCgocHJvcCwga2V5KSA9PiB7XG4gICAgICAgICAgICBpZiAocHJvcC5yZWRpcmVjdCkgcmV0dXJuIG51bGw7XG5cbiAgICAgICAgICAgIC8vIFJlc29sdmUgdGhlIGljb24gZnJvbSB0aGUgcm91dGUsIGZhbGxpbmcgYmFjayB0byBpdHMgcmF3IG1lbnUgaXRlbVxuICAgICAgICAgICAgLy8gKHRoZSBzZXJ2ZXItZmlsdGVyZWQgcm91dGUgbWF5IG5vdCBzdXJmYWNlIGBpY29uYCwgYnV0IHRoZSByYXdcbiAgICAgICAgICAgIC8vIGl0ZW0gY2FycmllcyBpdCkuIEZvbnRBd2Vzb21lIGNsYXNzIHN0cmluZ3MgKFwiZmFzIGZhLS4uLlwiKSByZW5kZXJcbiAgICAgICAgICAgIC8vIGFzIDxpIGNsYXNzTmFtZT47IG5hbWVkIGlkcyAoXCJQRVJTT05cIiwgXCJIT01FXCIpIGdvIHRocm91Z2ggdGhlXG4gICAgICAgICAgICAvLyBmcmFtZXdvcmsgSWNvbiBjb21wb25lbnQgKHdoaWNoIG1hcHMgaWRzIC0+IE1VSSBpY29ucykuXG4gICAgICAgICAgICBjb25zdCByYXdJY29uID0gIVV0aWxzLmlzTnVsbChwcm9wLmljb24pID8gcHJvcC5pY29uIDogcHJvcC5pdGVtPy5pY29uO1xuICAgICAgICAgICAgbGV0IGljb25Ob2RlID0gbnVsbDtcbiAgICAgICAgICAgIGlmIChSZWFjdC5pc1ZhbGlkRWxlbWVudChyYXdJY29uKSkge1xuICAgICAgICAgICAgICAgIGljb25Ob2RlID0gcmF3SWNvbjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHJhd0ljb24gPT09ICdzdHJpbmcnICYmIHJhd0ljb24udHJpbSgpLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGljb25Ob2RlID0gKHJhd0ljb24uaW5kZXhPZignZmEtJykgIT09IC0xIHx8IHJhd0ljb24uaW5kZXhPZignICcpICE9PSAtMSlcbiAgICAgICAgICAgICAgICAgICAgPyA8aSBjbGFzc05hbWU9e3Jhd0ljb259Lz5cbiAgICAgICAgICAgICAgICAgICAgOiA8SWNvbiBpZD17cmF3SWNvbn0vPjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWNvbk5vZGUgPSBwcm9wLmxldmVsID09PSAwID8gPGkgY2xhc3NOYW1lPXsnZmFzIGZhLXNxdWFyZSd9Lz4gOiBudWxsO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBpc0FjdGl2ZSA9IGFjdGl2ZVJvdXRlKHByb3AuaWQpO1xuICAgICAgICAgICAgY29uc3QgaXNDb2xsYXBzaWJsZSA9XG4gICAgICAgICAgICAgICAgKHByb3AuY29sbGFwc2UgfHwgcHJvcC5pc1BhcmVudCkgJiZcbiAgICAgICAgICAgICAgICBwcm9wLm5hbWUgIT09ICdEYXNoYm9hcmQnICYmXG4gICAgICAgICAgICAgICAgcHJvcC5uYW1lICE9PSAnTXkgV29yayBJdGVtcyc7XG4gICAgICAgICAgICBjb25zdCBpc09wZW4gPSBwcm9wLnN0YXRlID8gISFjb2xsYXBzZVN0YXRlc1twcm9wLnN0YXRlXSA6IGZhbHNlO1xuXG4gICAgICAgICAgICAvLyByZXBsaWNhdGUgZHluYW1pYyBjbGFzc05hbWUgbG9naWMgZm9yIGNvbGxhcHNpYmxlIGVudHJpZXNcbiAgICAgICAgICAgIGNvbnN0IGNvbGxhcHNpYmxlQ2xhc3NOYW1lID0gcHJvcC5jb2xsYXBzZVxuICAgICAgICAgICAgICAgID8gKGdldENvbGxhcHNlSW5pdGlhbFN0YXRlKHByb3Audmlld3MpXG4gICAgICAgICAgICAgICAgICAgID8gJ2FjdGl2ZSAnICsgZ2V0TGlDbGFzc05hbWUocHJvcClcbiAgICAgICAgICAgICAgICAgICAgOiBnZXRMaUNsYXNzTmFtZShwcm9wKSlcbiAgICAgICAgICAgICAgICA6IGdldExpQ2xhc3NOYW1lKHByb3ApO1xuXG4gICAgICAgICAgICAvLyBsZWFmIGNsYXNzZXMgKGluY2x1ZGUgbGktbGV2ZWwpXG4gICAgICAgICAgICBjb25zdCBsZWFmQ2xhc3NOYW1lID1cbiAgICAgICAgICAgICAgICBnZXRMaUNsYXNzTmFtZShwcm9wKSArXG4gICAgICAgICAgICAgICAgJyAnICtcbiAgICAgICAgICAgICAgICAoJ21lbnUtbGluay1saScgK1xuICAgICAgICAgICAgICAgICAgICAoaXNBY3RpdmUgPyAnLWFjdGl2ZScgOiAnJykgK1xuICAgICAgICAgICAgICAgICAgICAocHJvcC5uYW1lID09PSAnRGFzaGJvYXJkJyA/ICcgZGFzaGJvYXJkLWxpbmsnIDogJycpKTtcblxuICAgICAgICAgICAgLy8gaW5kZW50IGJhc2VkIG9uIGxldmVsIChUQUIgcHggLT4gc3BhY2luZyB1bml0cylcbiAgICAgICAgICAgIGNvbnN0IGluZGVudCA9IChwcm9wLmxldmVsICsgMSkgKiAoVEFCIC8gOCk7XG5cbiAgICAgICAgICAgIGlmIChpc0NvbGxhcHNpYmxlKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaXNUb3BMZXZlbCA9IHByb3AubGV2ZWwgPT09IDA7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2hvdWxkU2hvd1Rvb2x0aXAgPSAhb3BlbiAmJiBpc1RvcExldmVsO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgaGFuZGxlQ2xpY2sgPSAoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gSWYgZHJhd2VyIGlzIGNsb3NlZCBhbmQgdGhpcyBpcyBhIHRvcC1sZXZlbCBpdGVtLCBhc2sgcGFyZW50IHRvIG9wZW4gaXRcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFvcGVuICYmIGlzVG9wTGV2ZWwgJiYgdHlwZW9mIG9uT3BlbkRyYXdlciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgb25PcGVuRHJhd2VyKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBjb25zdCB0b2dnbGUgPSAoKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgc2V0Q29sbGFwc2VTdGF0ZXMoKHByZXYpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4ucHJldixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcHJvcC5zdGF0ZV06ICFwcmV2W3Byb3Auc3RhdGVdXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKCFwcm9wLnZpZXdzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBsYXp5LWxvYWQgbWVudSBvbmNlXG4gICAgICAgICAgICAgICAgICAgICAgICBnZXRNZW51KHByb3ApLnRoZW4oKHZpZXdzKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZpZXdzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3Audmlld3MgPSB2aWV3cztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9nZ2xlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0b2dnbGUoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBjb25zdCBidXR0b24gPSAoXG4gICAgICAgICAgICAgICAgICAgIDxMaXN0SXRlbUJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjb2xsYXBzaWJsZUNsYXNzTmFtZX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2hhbmRsZUNsaWNrfVxuICAgICAgICAgICAgICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbDogaW5kZW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLihpc0FjdGl2ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogbGlnaHRlbihzZWNvbmRhcnlUaGVtZUNvbG9yLCAwLjkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyUmFkaXVzOiAnMTZweCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogc2Vjb25kYXJ5VGhlbWVDb2xvcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRXZWlnaHQ6IDUwMFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoge30pXG4gICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICB7aWNvbk5vZGUgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxMaXN0SXRlbUljb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbldpZHRoOiBvcGVuID8gSUNPTl9DT0wgOiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXI6IG9wZW4gPyAwIDogJ2F1dG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6IG9wZW4gPyAnZmxleC1zdGFydCcgOiAnY2VudGVyJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ljb25Ob2RlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvTGlzdEl0ZW1JY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIHtvcGVuID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8TGlzdEl0ZW1UZXh0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmltYXJ5PXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3Byb3AubmFtZX17JyAnfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7cHJvcC5jb2xsYXBzZSAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17YGNhcmV0ICR7aXNPcGVuID8gJ2NhcmV0LW9wZW4nIDogJ2NhcmV0LWNsb3NlZCd9YH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17e21hcmdpblRvcDogMH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAhaWNvbk5vZGUgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxsYmFja0ljb24ocHJvcCwgaWNvbk5vZGUpIDogbnVsbH1cbiAgICAgICAgICAgICAgICAgICAgPC9MaXN0SXRlbUJ1dHRvbj5cbiAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgPFJlYWN0LkZyYWdtZW50IGtleT17a2V5fT5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtzaG91bGRTaG93VG9vbHRpcCA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPFRvb2x0aXAgdGl0bGU9e3Byb3AubmFtZX0gcGxhY2VtZW50PVwicmlnaHRcIiBhcnJvdz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2J1dHRvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtidXR0b259XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB7cHJvcC5jb2xsYXBzZSAmJiBwcm9wLnZpZXdzICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Q29sbGFwc2UgaW49e2lzT3Blbn0gdGltZW91dD1cImF1dG9cIiB1bm1vdW50T25FeGl0IHN4PXt7IHBsOiAwLCBtdDogMCB9fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPExpc3QgZGlzYWJsZVBhZGRpbmcgY2xhc3NOYW1lPVwibmF2XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y3JlYXRlTGlua3MocHJvcC52aWV3cyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvTGlzdD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0NvbGxhcHNlPlxuICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgPC9SZWFjdC5GcmFnbWVudD5cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsZXQgbWVudUxpbmsgPSA8TWVudUxpbmtcbiAgICAgICAgICAgICAgICAvLyBUaGUgc2lkZWJhcidzIExpc3RJdGVtSWNvbiBhbHJlYWR5IHJlbmRlcnMgdGhlIGljb24gKGFuZCBvd25zXG4gICAgICAgICAgICAgICAgLy8gdGhlIGNvbHVtbiBhbGlnbm1lbnQgLyBjb2xsYXBzZWQgY2VudHJpbmcpLCBzbyBzdHJpcCBpdCBoZXJlXG4gICAgICAgICAgICAgICAgLy8gdG8gYXZvaWQgTWVudUxpbmsgcmVuZGVyaW5nIGEgc2Vjb25kLCBkb3VibGVkIGljb24uXG4gICAgICAgICAgICAgICAgY29uZmlnPXtVdGlscy5pc051bGwocHJvcC5pdGVtKSA/IHByb3AuaXRlbSA6IHsuLi5wcm9wLml0ZW0sIGljb246IHVuZGVmaW5lZH19XG4gICAgICAgICAgICAgICAgY2xpY2tDYWxsYmFjaz17XG4gICAgICAgICAgICAgICAgICAgIHByb3AubmFtZSA9PT0gJ0Rhc2hib2FyZCdcbiAgICAgICAgICAgICAgICAgICAgICAgID8gKGl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wcy5kYXNoYm9hcmRMYXVuY2hlciAmJiBwcm9wcy5kYXNoYm9hcmRMYXVuY2hlcigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEFjdGl2ZVJvdXRlTWVudShpdGVtKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRIb21lU2VsZWN0ZWQoZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE11bHRpLXZpZXdwb3J0OiBkb2NrIChwaW4pIGFueSBvcGVuIHdpbmRvdyBvdmVybGF5IHNvIGl0IHN0YXlzIHZpc2libGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbG9uZ3NpZGUgdGhlIG5ld2x5LW5hdmlnYXRlZCBtYWluIHZpZXcgaW5zdGVhZCBvZiBvdmVybGF5aW5nIGl0LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhcHBsaWNhdGlvbk1hbmFnZXIuaXNXaW5kb3dPcGVuKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25NYW5hZ2VyLnVwZGF0ZUNvbnRleHQoe3dpbmRvd0Rpc3BsYXlTdGF0ZTogJ1BJTk5FRCd9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICA6IChpdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0QWN0aXZlUm91dGVNZW51KGl0ZW0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEhvbWVTZWxlY3RlZChmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTXVsdGktdmlld3BvcnQ6IGRvY2sgKHBpbikgYW55IG9wZW4gd2luZG93IG92ZXJsYXkgKHNlZSBhYm92ZSkuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFwcGxpY2F0aW9uTWFuYWdlci5pc1dpbmRvd09wZW4oKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbk1hbmFnZXIudXBkYXRlQ29udGV4dCh7d2luZG93RGlzcGxheVN0YXRlOiAnUElOTkVEJ30pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYXV0b0NsaWNrPXtcbiAgICAgICAgICAgICAgICAgICAgcHJvcC5uYW1lID09PSAnTXkgV29yayBJdGVtcycgfHxcbiAgICAgICAgICAgICAgICAgICAgKHByb3AuaXRlbSAmJiBwcm9wLml0ZW0uZGVmYXVsdEl0ZW0pXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHZpZXdJZD1cIm1lbnVCYXJcIlxuICAgICAgICAgICAgICAgIGljb249e3Byb3AuaWNvbn1cbiAgICAgICAgICAgICAgICBjb250ZW50PXtvcGVuID8gbnVsbCA6IGZhbGxiYWNrSWNvbihwcm9wLCBpY29uTm9kZSl9XG4gICAgICAgICAgICAgICAgaWNvbkNvbG9yPXtcbiAgICAgICAgICAgICAgICAgICAgKHByb3AubmFtZSA9PT0gJ0Rhc2hib2FyZCcgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3AubmFtZSA9PT0gJ015IFdvcmsgSXRlbXMnKSAmJlxuICAgICAgICAgICAgICAgICAgICBpc0FjdGl2ZVxuICAgICAgICAgICAgICAgICAgICAgICAgPyBwcm9wcy5zZWNvbmRhcnlUaGVtZUNvbG9yXG4gICAgICAgICAgICAgICAgICAgICAgICA6IG51bGxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbmFtZT17cHJvcC5uYW1lfVxuICAgICAgICAgICAgICAgIGlkPXtwcm9wLmlkfVxuICAgICAgICAgICAgICAgIGxldmVsPXtwcm9wLmxldmVsfVxuICAgICAgICAgICAgICAgIHRhYj17VEFCfVxuICAgICAgICAgICAgLz47XG5cbiAgICAgICAgICAgIGNvbnN0IGNvbnRlbnQgPSAoXG4gICAgICAgICAgICAgICAgPExpc3RJdGVtQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIGtleT17a2V5fVxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9eyhwcm9wLm5hbWUgPT09ICdEYXNoYm9hcmQnIHx8IHByb3AubmFtZSA9PT0gJ015IFdvcmsgSXRlbXMnKSA/IChpc0FjdGl2ZSA/ICdkYXNoYm9hcmQtbGluay1hY3RpdmUnIDogJ2Rhc2hib2FyZC1saW5rJykgOiBsZWFmQ2xhc3NOYW1lfVxuICAgICAgICAgICAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6IG9wZW4gPyAnaW5pdGlhbCcgOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHB4OiAyLjUsXG4gICAgICAgICAgICAgICAgICAgICAgICBwbDogaW5kZW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gTGVhZiBpY29ucyBzaXQgZGltbWVkLCB0aGVuIGJyaWdodGVuICsgZ2xvdyBvbiBob3Zlci5cbiAgICAgICAgICAgICAgICAgICAgICAgICcmIC5NdWlMaXN0SXRlbUljb24tcm9vdCc6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGFjaXR5OiBpc0FjdGl2ZSA/IDEgOiAwLjU1LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zaXRpb246ICdvcGFjaXR5IDAuMnMgZWFzZSwgZmlsdGVyIDAuMnMgZWFzZSdcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAnJjpob3ZlciAuTXVpTGlzdEl0ZW1JY29uLXJvb3QnOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BhY2l0eTogMSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXI6ICdkcm9wLXNoYWRvdygwIDAgNHB4IGN1cnJlbnRDb2xvciknXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uKGlzQWN0aXZlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogbGlnaHRlbihzZWNvbmRhcnlUaGVtZUNvbG9yLCAwLjkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXJSYWRpdXM6ICcxNnB4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IHNlY29uZGFyeVRoZW1lQ29sb3IsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRXZWlnaHQ6IDUwMFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHt9KVxuICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge2ljb25Ob2RlICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxMaXN0SXRlbUljb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5XaWR0aDogb3BlbiA/IChwcm9wLm5hbWUgPT09ICdEYXNoYm9hcmQnID8gSUNPTl9DT0wgOiBUQUIpIDogMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXI6IG9wZW4gPyAwIDogJ2F1dG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogb3BlbiA/ICdmbGV4LXN0YXJ0JyA6ICdjZW50ZXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcm9wLm5hbWUgPT09ICdEYXNoYm9hcmQnIHx8IHByb3AubmFtZSA9PT0gJ015IFdvcmsgSXRlbXMnKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNBY3RpdmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHNlY29uZGFyeVRoZW1lQ29sb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICdpbmhlcml0J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ljb25Ob2RlfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9MaXN0SXRlbUljb24+XG4gICAgICAgICAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgb3BlbiA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxMaXN0SXRlbVRleHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmltYXJ5PXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7bWVudUxpbmt9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgKSA6ICFpY29uTm9kZSA/IDw+e21lbnVMaW5rfTwvPiA6IG51bGxcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvTGlzdEl0ZW1CdXR0b24+XG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAvLyBsZWFmXG4gICAgICAgICAgICByZXR1cm4gIW9wZW4gPyAoXG4gICAgICAgICAgICAgICAgPFRvb2x0aXAgdGl0bGU9e3Byb3AubmFtZX0gcGxhY2VtZW50PVwicmlnaHRcIiBhcnJvdz5cbiAgICAgICAgICAgICAgICAgICAge2NvbnRlbnR9XG4gICAgICAgICAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgICAgICAgKSA6IGNvbnRlbnQ7XG4gICAgICAgIH0pO1xuICAgIH07XG5cbiAgICAvKiAtLS0tLS0tLS0tLS0tLS0tLSBsb2FkIGZpbHRlcmVkIG1lbnUgLS0tLS0tLS0tLS0tLS0tLS0gKi9cbiAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBsZXQgY2FuY2VsbGVkID0gZmFsc2U7XG5cbiAgICAgICAgY29uc3Qgc2VydmljZSA9IHtcbiAgICAgICAgICAgIHVybDogJy91aS9hcGkvdjEvbWVudS9maWx0ZXInLFxuICAgICAgICAgICAgcGFyYW1ldGVyczogW3t2YWx1ZTogcHJvcHMucm91dGVzLCBodHRwUGFyYW1ldGVyVHlwZTogJ1JFUVVFU1RfQk9EWSd9XSxcbiAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICAgICAgY29udGVudFR5cGU6ICdhcHBsaWNhdGlvbi9qc29uJ1xuICAgICAgICB9O1xuXG4gICAgICAgIHNldElzTG9hZGluZyh0cnVlKTtcbiAgICAgICAgc2V0RXJyb3IoZmFsc2UpO1xuXG4gICAgICAgIGludm9rZVJlc3QoXG4gICAgICAgICAgICBzZXJ2aWNlLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGFwaToge1xuICAgICAgICAgICAgICAgICAgICBnZXQgaWQoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2Rhc2hib2FyZC1zaWRlYmFyJztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAnZGFzaGJvYXJkLXNpZGViYXInLFxuICAgICAgICAgICAgKHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghY2FuY2VsbGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHNldFJvdXRlc0RhdGEocmVzdWx0KTtcbiAgICAgICAgICAgICAgICAgICAgc2V0SXNMb2FkaW5nKGZhbHNlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgKGUpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIWNhbmNlbGxlZCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgICAgICAgICAgICAgICAgICBzZXRFcnJvcih0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgc2V0SXNMb2FkaW5nKGZhbHNlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbnVsbFxuICAgICAgICApO1xuXG4gICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgICBjYW5jZWxsZWQgPSB0cnVlO1xuICAgICAgICB9O1xuICAgIH0sIFtwcm9wcy5yb3V0ZXNdKTtcblxuICAgIC8qIC0tLS0tLS0tLS0tLS0tLS0tIHJlbmRlciAtLS0tLS0tLS0tLS0tLS0tLSAqL1xuICAgIGNvbnN0IHtsb2dvfSA9IHByb3BzO1xuXG4gICAgbGV0IGxvZ29JbWcgPSBudWxsO1xuICAgIGlmICghVXRpbHMuaXNOdWxsKGxvZ28pKSB7XG4gICAgICAgIGxvZ29JbWcgPSAoXG4gICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgIGhyZWY9e2xvZ28ub3V0dGVyTGlua31cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJzaWRlYmFyX19icmFuZFwiXG4gICAgICAgICAgICAgICAgb25DbGljaz17cHJvcHMuY2xvc2VTaWRlYmFyfVxuICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJIb21lXCJcbiAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAuLi4ocHJvcHMubG9nb1N0eWxlIHx8IHt9KSxcbiAgICAgICAgICAgICAgICAgICAgLy8gUmVzcG9uc2l2ZSB3aWR0aCBzbyB0aGUgbG9nbyBmaXRzIHRoZSByYWlsIChpdCBnZXRzIGN1dCBhdFxuICAgICAgICAgICAgICAgICAgICAvLyBhIGZpeGVkIHdpZHRoIGluIHRoZSBtaW5pIGRyYXdlcikuIEhlaWdodCArIGZpdHRpbmcgYXJlIGxlZnRcbiAgICAgICAgICAgICAgICAgICAgLy8gdG8gdGhlIENTUyAoLnNpZGViYXJfX2JyYW5kIG1heC1oZWlnaHQgKyAuc2lkZWJhcl9fYnJhbmQtaW1nXG4gICAgICAgICAgICAgICAgICAgIC8vIGJsb2NrLXNpemU6MTAwJSAvIG9iamVjdC1maXQ6Y29udGFpbiksIHNvIGEgdGFsbGVyIGxvZ29cbiAgICAgICAgICAgICAgICAgICAgLy8gc2NhbGVzIGRvd24gaW5zdGVhZCBvZiBvdmVyZmxvd2luZyBhbmQgYmVpbmcgY2xpcHBlZC5cbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgICAgICAgICAgICAgICAgbWF4V2lkdGg6IChwcm9wcy5sb2dvU3R5bGUgJiYgcHJvcHMubG9nb1N0eWxlLndpZHRoKSB8fCAnMTIwcHgnLFxuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgICAgICAgICAgICAgICAgIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgICAgICAgYWxpZ25JdGVtczogJ2NlbnRlcidcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICAgICAgc3JjPXtsb2dvLmltZ1NyY31cbiAgICAgICAgICAgICAgICAgICAgYWx0PVwibG9nb1wiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInNpZGViYXJfX2JyYW5kLWltZ1wiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvYT5cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoaXNMb2FkaW5nKSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInAtM1wiPlxuICAgICAgICAgICAgICAgIDxlbT5Mb2FkaW5nIG1lbnXigKY8L2VtPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKGVycm9yKSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInAtMyB0ZXh0LWRhbmdlclwiPlxuICAgICAgICAgICAgICAgIDxlbT5GYWlsZWQgdG8gbG9hZCBtZW51LjwvZW0+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoIXJvdXRlc0RhdGEpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgLy8gY29sb3I6ICdwcmltYXJ5JyB8ICdzZWNvbmRhcnknIHwgYW55IENTUyBjb2xvciAoZS5nLiAnIzAwMDAwMCcpXG4gICAgY29uc3QgcmVzb2x2ZUhpZ2hsaWdodENvbG9yID0gKGMpID0+IHtcbiAgICAgICAgaWYgKFV0aWxzLmlzTnVsbChjKSB8fCBjID09PSAncHJpbWFyeScpIHJldHVybiB0aGVtZS5wYWxldHRlLnByaW1hcnkubWFpbjtcbiAgICAgICAgaWYgKGMgPT09ICdzZWNvbmRhcnknKSByZXR1cm4gdGhlbWUucGFsZXR0ZS5zZWNvbmRhcnkubWFpbjtcbiAgICAgICAgcmV0dXJuIGM7XG4gICAgfTtcblxuICAgIC8vIE9wdGlvbmFsIGhvbWUgYnV0dG9uLCByZW5kZXJlZCBhdCB0aGUgdmVyeSB0b3Agb2YgdGhlIHNpZGViYXIuIEZpcmVzXG4gICAgLy8gaG9tZUJ1dHRvblNldHRpbmdzLmNhbGxiYWNrKCkgb24gY2xpY2sgKGUuZy4gbG9hZCB0aGUgcG9ydGFsIGRhc2hib2FyZCkuXG4gICAgY29uc3QgcmVuZGVySG9tZUJ1dHRvbiA9ICgpID0+IHtcbiAgICAgICAgY29uc3QgaGIgPSBwcm9wcy5ob21lQnV0dG9uU2V0dGluZ3M7XG4gICAgICAgIGlmIChVdGlscy5pc051bGwoaGIpKSByZXR1cm4gbnVsbDtcblxuICAgICAgICBjb25zdCBoaWdobGlnaHQgPSByZXNvbHZlSGlnaGxpZ2h0Q29sb3IoaGIuY29sb3IpO1xuXG4gICAgICAgIC8vIGljb24gc2l6ZSBmcm9tIHNldHRpbmdzIChudW1iZXIgcHggb3IgYW55IENTUyBzaXplLCBlLmcuIDI0LCAnMjRweCcsICcxLjVyZW0nKVxuICAgICAgICBjb25zdCBpY29uU2l6ZSA9IGhiLmljb25TaXplO1xuXG4gICAgICAgIGxldCBpY29uTm9kZTtcbiAgICAgICAgaWYgKFJlYWN0LmlzVmFsaWRFbGVtZW50KGhiLmljb24pKSB7XG4gICAgICAgICAgICBpY29uTm9kZSA9IGhiLmljb247XG4gICAgICAgIH0gZWxzZSBpZiAoaGIuaWNvbiA9PT0gJ0hPTUUnIHx8IFV0aWxzLmlzTnVsbChoYi5pY29uKSkge1xuICAgICAgICAgICAgaWNvbk5vZGUgPSA8SG9tZUljb24gZm9udFNpemU9e2ljb25TaXplID8gaWNvblNpemUgOiAnc21hbGwnfS8+O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWNvbk5vZGUgPSA8aSBjbGFzc05hbWU9e2hiLmljb259IHN0eWxlPXtpY29uU2l6ZSA/IHtmb250U2l6ZTogaWNvblNpemV9IDogdW5kZWZpbmVkfS8+O1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYnV0dG9uID0gKFxuICAgICAgICAgICAgPExpc3RJdGVtQnV0dG9uXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXsnc2lkZWJhcl9faG9tZS1idXR0b24nICsgKGhvbWVTZWxlY3RlZCA/ICcgc2lkZWJhcl9faG9tZS1idXR0b24tLXNlbGVjdGVkJyA6ICcnKX1cbiAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHNldEhvbWVTZWxlY3RlZCh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgLy8gQ2xlYXIgYW55IGFjdGl2ZSByb3V0ZSBzbyBubyByb3V0ZSBsaW5rIHN0YXlzIGhpZ2hsaWdodGVkXG4gICAgICAgICAgICAgICAgICAgIC8vIChhY3RpdmVSb3V0ZSgpIG1hdGNoZXMgb24gaWQ7ICdfX2hvbWVfXycgbWF0Y2hlcyBub25lKS5cbiAgICAgICAgICAgICAgICAgICAgc2V0QWN0aXZlUm91dGVNZW51KHtpZDogJ19faG9tZV9fJywgbmFtZTogJ0hvbWUnfSk7XG4gICAgICAgICAgICAgICAgICAgIGhiLmNhbGxiYWNrICYmIGhiLmNhbGxiYWNrKCk7XG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogb3BlbiA/ICdmbGV4LXN0YXJ0JyA6ICdjZW50ZXInLFxuICAgICAgICAgICAgICAgICAgICAvLyBwYW5lbCBvZmZzZXQgPSBtYXJnaW4gOCArIGJvcmRlciAxICsgcGFkZGluZyA2ID0gMTVweDsgKzFweCBsYW5kc1xuICAgICAgICAgICAgICAgICAgICAvLyB0aGUgaWNvbiBhdCAxNnB4LCBleGFjdGx5IHdoZXJlIHRoZSBsZXZlbC0wIHJvdXRlIGljb25zIHNpdC5cbiAgICAgICAgICAgICAgICAgICAgLy8gV2hlbiBjb2xsYXBzZWQsIGtlZXAgcGFkZGluZyBzeW1tZXRyaWMgc28gdGhlIGljb24gY2VudHJlc1xuICAgICAgICAgICAgICAgICAgICAvLyBpbiB0aGUgbWluaSByYWlsIChtYXRjaGluZyB0aGUgcm91dGVzKS5cbiAgICAgICAgICAgICAgICAgICAgcGw6IG9wZW4gPyAnMXB4JyA6IDAsXG4gICAgICAgICAgICAgICAgICAgIHByOiBvcGVuID8gMi41IDogMCxcbiAgICAgICAgICAgICAgICAgICAgYm9yZGVyUmFkaXVzOiAnNHB4JyxcbiAgICAgICAgICAgICAgICAgICAgLi4uKGhiLnN0eWxlIHx8IHt9KVxuICAgICAgICAgICAgICAgICAgICAvLyBTZWxlY3RlZC9ob3ZlciBoaWdobGlnaHQgbGl2ZXMgaW4gdGhlIHNraW5cbiAgICAgICAgICAgICAgICAgICAgLy8gKC5zaWRlYmFyX19ob21lLWJ1dHRvbi0tc2VsZWN0ZWQgaW4gc2tpbnMuY3NzKS5cbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxMaXN0SXRlbUljb25cbiAgICAgICAgICAgICAgICAgICAgc3g9e3ttYXJnaW46IG9wZW4gPyBudWxsIDogJ2F1dG8nLCBtaW5XaWR0aDogb3BlbiA/IElDT05fQ09MIDogMCwgbXI6IG9wZW4gPyAwIDogJ2F1dG8nLCBqdXN0aWZ5Q29udGVudDogb3BlbiA/ICdmbGV4LXN0YXJ0JyA6ICdjZW50ZXInLCBjb2xvcjogaGlnaGxpZ2h0fX0+XG4gICAgICAgICAgICAgICAgICAgIHtpY29uTm9kZX1cbiAgICAgICAgICAgICAgICA8L0xpc3RJdGVtSWNvbj5cbiAgICAgICAgICAgICAgICB7b3BlbiAmJiBoYi50ZXh0ID8gPGRpdiBzdHlsZT17e2ZvbnRXZWlnaHQ6IDMwMCwgZm9udFNpemU6ICcuODVyZW0nfX0+e2hiLnRleHR9PC9kaXY+IDogbnVsbH1cbiAgICAgICAgICAgIDwvTGlzdEl0ZW1CdXR0b24+XG4gICAgICAgICk7XG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9eydzaWRlYmFyX19ob21lLWJ1dHRvbicgKyAoaG9tZVNlbGVjdGVkID8gJyBzaWRlYmFyX19ob21lLWJ1dHRvbi0tc2VsZWN0ZWQnIDogJycpfVxuICAgICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6ICc2cHgnLFxuICAgICAgICAgICAgICAgICAgICBtYXJnaW46IG9wZW4gPyAnMCcgOiAwLFxuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICdyZ2JhKDIwLCA2MCwgOTQsIDAuMDUpJyxcbiAgICAgICAgICAgICAgICAgICAgYm9yZGVyOiAnMXB4IHNvbGlkIHJnYmEoMjAsIDYwLCA5NCwgMC4wOCknLFxuICAgICAgICAgICAgICAgICAgICBib3JkZXJSYWRpdXM6ICc0cHgnXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7IW9wZW4gPyAoXG4gICAgICAgICAgICAgICAgICAgIDxUb29sdGlwIHRpdGxlPXtoYi50ZXh0IHx8ICdIb21lJ30gcGxhY2VtZW50PVwicmlnaHRcIiBhcnJvdz57YnV0dG9ufTwvVG9vbHRpcD5cbiAgICAgICAgICAgICAgICApIDogYnV0dG9ufVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICk7XG4gICAgfTtcblxuICAgIHJldHVybiAoXG4gICAgICAgIDxhc2lkZVxuICAgICAgICAgICAgY2xhc3NOYW1lPXtgc2lkZWJhciAkeyFvcGVuID8gJ3NpZGViYXItLW1pbmknIDogJyd9YH1cbiAgICAgICAgICAgIGRhdGE9e2FjdGl2ZUNvbG9yfVxuICAgICAgICA+XG4gICAgICAgICAgICB7LyogVE9QOiBicmFuZCAvIGxvZ28gKi99XG4gICAgICAgICAgICB7bG9nb0ltZyAmJiAoXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJzaWRlYmFyX190b3BcIj5cbiAgICAgICAgICAgICAgICAgICAge2xvZ29JbWd9XG4gICAgICAgICAgICAgICAgICAgIHtwcm9wcy5oZWFkaW5nICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwic2lkZWJhcl9faGVhZGluZ1wiPntwcm9wcy5oZWFkaW5nfTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAgey8qIEhvbWUgYnV0dG9uIOKAlCB1bmRlciB0aGUgbG9nbywgYWJvdmUgdGhlIHJvdXRlcyAqL31cbiAgICAgICAgICAgIHtyZW5kZXJIb21lQnV0dG9uKCl9XG5cbiAgICAgICAgICAgIHsvKiBNSURETEU6IHNjcm9sbGFibGUgbmF2ICovfVxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInNpZGViYXJfX3Njcm9sbFwiXG4gICAgICAgICAgICAgICAgc3R5bGU9e1V0aWxzLmlzTnVsbChwcm9wcy5ob21lQnV0dG9uU2V0dGluZ3MpID8gdW5kZWZpbmVkIDoge3BhZGRpbmdUb3A6IDB9fVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxMaXN0IHN4PXt7bXQ6IFV0aWxzLmlzTnVsbChwcm9wcy5ob21lQnV0dG9uU2V0dGluZ3MpID8gMSA6IDB9fSBjbGFzc05hbWU9XCJuYXZcIj5cbiAgICAgICAgICAgICAgICAgICAge2NyZWF0ZUxpbmtzKHJvdXRlc0RhdGEpfVxuICAgICAgICAgICAgICAgIDwvTGlzdD5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICB7LyogQk9UVE9NOiBhcHAgbG9nbyArIGNvcHlyaWdodCAqL31cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwic2lkZWJhcl9fYm90dG9tXCI+XG4gICAgICAgICAgICAgICAgeyFVdGlscy5pc051bGwoYXBwTG9nb1BhdGgpID8gKFxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInNpZGViYXJfX2FwcC1sb2dvXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8Q2FyZEF2YXRhciBwbGFpbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz17YXBwTG9nb1BhdGh9IGFsdD1cIlwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L0NhcmRBdmF0YXI+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwic2lkZWJhcl9fY29weXJpZ2h0XCI+XG4gICAgICAgICAgICAgICAgICAgIMKpIHtuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCl9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9hc2lkZT5cbiAgICApO1xufVxuXG5Gb2xkaW5nVGFiU2lkZWJhci5wcm9wVHlwZXMgPSB7XG4gICAgYWN0aXZlQ29sb3I6IFByb3BUeXBlcy5vbmVPZihbJ3ByaW1hcnknLCAnYmx1ZScsICdncmVlbicsICdvcmFuZ2UnLCAncmVkJywgJ2FnaWxpdHknXSksXG4gICAgc2Vjb25kYXJ5VGhlbWVDb2xvcjogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAgIHJ0bEFjdGl2ZTogUHJvcFR5cGVzLmJvb2wsXG4gICAgcm91dGVzOiBQcm9wVHlwZXMuYXJyYXkuaXNSZXF1aXJlZCxcbiAgICBsb2dvOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtcbiAgICAgICAgUHJvcFR5cGVzLnNoYXBlKHtcbiAgICAgICAgICAgIGlubmVyTGluazogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAgICAgICAgICAgaW1nU3JjOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gICAgICAgICAgICB0ZXh0OiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWRcbiAgICAgICAgfSksXG4gICAgICAgIFByb3BUeXBlcy5zaGFwZSh7XG4gICAgICAgICAgICBvdXR0ZXJMaW5rOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gICAgICAgICAgICBpbWdTcmM6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgICAgICAgICAgIHRleHQ6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZFxuICAgICAgICB9KVxuICAgIF0pLFxuICAgIGhlYWRpbmc6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgYXBwTG9nb1BhdGg6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgY2xvc2VTaWRlYmFyOiBQcm9wVHlwZXMuZnVuYyxcbiAgICBkYXNoYm9hcmRMYXVuY2hlcjogUHJvcFR5cGVzLmZ1bmMsXG4gICAgbG9nb1N0eWxlOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgIG9wZW46IFByb3BUeXBlcy5ib29sLFxuICAgIG9uT3BlbkRyYXdlcjogUHJvcFR5cGVzLmZ1bmMsXG4gICAgaG9tZUJ1dHRvblNldHRpbmdzOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgICAgICBpY29uOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuc3RyaW5nLCBQcm9wVHlwZXMuZWxlbWVudF0pLFxuICAgICAgICBpY29uU2l6ZTogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLm51bWJlciwgUHJvcFR5cGVzLnN0cmluZ10pLFxuICAgICAgICB0ZXh0OiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgICAgICBzdHlsZTogUHJvcFR5cGVzLm9iamVjdCxcbiAgICAgICAgY29sb3I6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgICAgIGNhbGxiYWNrOiBQcm9wVHlwZXMuZnVuY1xuICAgIH0pXG59O1xuXG5leHBvcnQgZGVmYXVsdCBGb2xkaW5nVGFiU2lkZWJhcjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQ0EsSUFBQUEsTUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsVUFBQSxHQUFBRixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUUsTUFBQSxHQUFBSCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUcsbUJBQUEsR0FBQUosc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFJLFNBQUEsR0FBQUwsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFLLEtBQUEsR0FBQU4sc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFNLFNBQUEsR0FBQU4sT0FBQTtBQUNBLElBQUFPLE9BQUEsR0FBQVAsT0FBQTtBQUNBLElBQUFRLFVBQUEsR0FBQVIsT0FBQTtBQUNBQSxPQUFBO0FBQ0EsSUFBQVMsV0FBQSxHQUFBVixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQVUsVUFBQSxHQUFBWCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQVcsS0FBQSxHQUFBWixzQkFBQSxD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
|
|
581
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9wcm9wVHlwZXMiLCJfVXRpbHMiLCJfQXBwbGljYXRpb25NYW5hZ2VyIiwiX01lbnVMaW5rIiwiX0ljb24iLCJfbWF0ZXJpYWwiLCJfc3R5bGVzIiwiX1Jlc3RVdGlscyIsIl9DYXJkQXZhdGFyIiwiX01vcmVIb3JpeiIsIl9Ib21lIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0Iiwib3duS2V5cyIsInIiLCJ0IiwiT2JqZWN0Iiwia2V5cyIsImdldE93blByb3BlcnR5U3ltYm9scyIsIm8iLCJmaWx0ZXIiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJlbnVtZXJhYmxlIiwicHVzaCIsImFwcGx5IiwiX29iamVjdFNwcmVhZCIsImFyZ3VtZW50cyIsImxlbmd0aCIsImZvckVhY2giLCJfZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3JzIiwiZGVmaW5lUHJvcGVydGllcyIsImRlZmluZVByb3BlcnR5IiwiX3RvUHJvcGVydHlLZXkiLCJ2YWx1ZSIsImNvbmZpZ3VyYWJsZSIsIndyaXRhYmxlIiwiaSIsIl90b1ByaW1pdGl2ZSIsIlN5bWJvbCIsInRvUHJpbWl0aXZlIiwiY2FsbCIsIlR5cGVFcnJvciIsIlN0cmluZyIsIk51bWJlciIsIlRBQiIsIklDT05fQ09MIiwiRm9sZGluZ1RhYlNpZGViYXIiLCJwcm9wcyIsImFjdGl2ZUNvbG9yIiwib3BlbiIsImFwcExvZ29QYXRoIiwib25PcGVuRHJhd2VyIiwidGhlbWUiLCJ1c2VUaGVtZSIsImNvbGxhcHNlU3RhdGVzIiwic2V0Q29sbGFwc2VTdGF0ZXMiLCJSZWFjdCIsInVzZVN0YXRlIiwiZ2V0Q29sbGFwc2VTdGF0ZXMiLCJyb3V0ZXMiLCJpc0xvYWRpbmciLCJzZXRJc0xvYWRpbmciLCJlcnJvciIsInNldEVycm9yIiwicm91dGVzRGF0YSIsInNldFJvdXRlc0RhdGEiLCJ1bmRlZmluZWQiLCJhY3RpdmVSb3V0ZU1lbnUiLCJzZXRBY3RpdmVSb3V0ZU1lbnUiLCJpZCIsIm5hbWUiLCJob21lU2VsZWN0ZWQiLCJzZXRIb21lU2VsZWN0ZWQiLCJnZXRWaWV3cyIsIm1lbnVzIiwibGV2ZWwiLCJuZXdWaWV3cyIsImNyZWF0ZVZpZXciLCJhdHRyaWJ1dGVzIiwibGFiZWwiLCJpY29uIiwibWluaSIsImxheW91dCIsInN1Yk1lbnUiLCJjb2xsYXBzZSIsInN0YXRlIiwidmlld3MiLCJnZXRJdGVtcyIsIml0ZW1zIiwiaXRlbSIsIm5ld0l0ZW1zIiwiY3JlYXRlSXRlbSIsIlV0aWxzIiwiaXNOdWxsIiwiaW5pdGlhbFN0YXRlIiwicHJvcCIsImdldENvbGxhcHNlSW5pdGlhbFN0YXRlIiwid2luZG93IiwibG9jYXRpb24iLCJocmVmIiwiaW5kZXhPZiIsInBhdGgiLCJnZXRNZW51Iiwicm91dGUiLCJQcm9taXNlIiwicmVzb2x2ZSIsInNlcnZpY2UiLCJ1cmwiLCJwYXJhbWV0ZXJzIiwibWVudSIsImh0dHBQYXJhbWV0ZXJUeXBlIiwiY29udGVudFR5cGUiLCJpbnZva2VSZXN0IiwiYXBpIiwicmVzdWx0IiwiY29uc29sZSIsImFjdGl2ZVJvdXRlIiwicm91dGVOYW1lIiwiZ2V0TGlDbGFzc05hbWUiLCJmYWxsYmFja0ljb24iLCJpY29uTm9kZSIsIl9wcm9wJG5hbWUiLCJfcHJvcCRuYW1lJGNoYXJBdCIsIl9wcm9wJG5hbWUyIiwiX3Byb3AkbmFtZSRjaGFyQXQyIiwiX3Byb3AkbmFtZTMiLCJjcmVhdGVFbGVtZW50IiwiZm9udFNpemUiLCJjbGFzc05hbWUiLCJzdHlsZSIsImNoYXJBdCIsImNyZWF0ZUxpbmtzIiwic2Vjb25kYXJ5VGhlbWVDb2xvciIsIm1hcCIsImtleSIsIl9wcm9wJGl0ZW0iLCJyZWRpcmVjdCIsInJhd0ljb24iLCJpc1ZhbGlkRWxlbWVudCIsInRyaW0iLCJpc0FjdGl2ZSIsImlzQ29sbGFwc2libGUiLCJpc1BhcmVudCIsImlzT3BlbiIsImNvbGxhcHNpYmxlQ2xhc3NOYW1lIiwibGVhZkNsYXNzTmFtZSIsImluZGVudCIsImlzVG9wTGV2ZWwiLCJzaG91bGRTaG93VG9vbHRpcCIsImhhbmRsZUNsaWNrIiwicHJldmVudERlZmF1bHQiLCJ0b2dnbGUiLCJwcmV2IiwidGhlbiIsImJ1dHRvbiIsIkxpc3RJdGVtQnV0dG9uIiwib25DbGljayIsInN4IiwicGwiLCJiYWNrZ3JvdW5kQ29sb3IiLCJsaWdodGVuIiwiYm9yZGVyUmFkaXVzIiwiY29sb3IiLCJmb250V2VpZ2h0IiwiTGlzdEl0ZW1JY29uIiwibWluV2lkdGgiLCJtciIsImp1c3RpZnlDb250ZW50IiwiTGlzdEl0ZW1UZXh0IiwibWFyZ2luVG9wIiwicHJpbWFyeSIsImNvbmNhdCIsIkZyYWdtZW50IiwiVG9vbHRpcCIsInRpdGxlIiwicGxhY2VtZW50IiwiYXJyb3ciLCJDb2xsYXBzZSIsImluIiwidGltZW91dCIsInVubW91bnRPbkV4aXQiLCJtdCIsIkxpc3QiLCJkaXNhYmxlUGFkZGluZyIsIm1lbnVMaW5rIiwiY29uZmlnIiwiY2xpY2tDYWxsYmFjayIsImRhc2hib2FyZExhdW5jaGVyIiwiYXBwbGljYXRpb25NYW5hZ2VyIiwiaXNXaW5kb3dPcGVuIiwidXBkYXRlQ29udGV4dCIsIndpbmRvd0Rpc3BsYXlTdGF0ZSIsImF1dG9DbGljayIsImRlZmF1bHRJdGVtIiwidmlld0lkIiwiY29udGVudCIsImljb25Db2xvciIsInRhYiIsInB4Iiwib3BhY2l0eSIsInRyYW5zaXRpb24iLCJ1c2VFZmZlY3QiLCJjYW5jZWxsZWQiLCJtZXRob2QiLCJsb2dvIiwibG9nb0ltZyIsIm91dHRlckxpbmsiLCJjbG9zZVNpZGViYXIiLCJsb2dvU3R5bGUiLCJ3aWR0aCIsIm1heFdpZHRoIiwiZGlzcGxheSIsImFsaWduSXRlbXMiLCJzcmMiLCJpbWdTcmMiLCJhbHQiLCJyZXNvbHZlSGlnaGxpZ2h0Q29sb3IiLCJjIiwicGFsZXR0ZSIsIm1haW4iLCJzZWNvbmRhcnkiLCJyZW5kZXJIb21lQnV0dG9uIiwiaGIiLCJob21lQnV0dG9uU2V0dGluZ3MiLCJoaWdobGlnaHQiLCJpY29uU2l6ZSIsImNhbGxiYWNrIiwicHIiLCJtYXJnaW4iLCJ0ZXh0IiwicGFkZGluZyIsImJvcmRlciIsImRhdGEiLCJoZWFkaW5nIiwicGFkZGluZ1RvcCIsInBsYWluIiwiRGF0ZSIsImdldEZ1bGxZZWFyIiwicHJvcFR5cGVzIiwiUHJvcFR5cGVzIiwib25lT2YiLCJzdHJpbmciLCJpc1JlcXVpcmVkIiwicnRsQWN0aXZlIiwiYm9vbCIsImFycmF5Iiwib25lT2ZUeXBlIiwic2hhcGUiLCJpbm5lckxpbmsiLCJmdW5jIiwib2JqZWN0IiwiZWxlbWVudCIsIm51bWJlciIsIl9kZWZhdWx0IiwiZXhwb3J0cyJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9saWIvY29tcG9uZW50cy9kYXNoYm9hcmQvY29tcG9uZW50cy9ibGFja0Rhc2hib2FyZC9zaWRlYmFyL0ZvbGRpbmdUYWJTaWRlYmFyLmpzeCJdLCJzb3VyY2VzQ29udGVudCI6WyIvKiBlc2xpbnQtZGlzYWJsZSAqL1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCBQcm9wVHlwZXMgZnJvbSAncHJvcC10eXBlcyc7XG5pbXBvcnQgVXRpbHMgZnJvbSAnLi4vLi4vLi4vLi4vLi4vVXRpbHMnO1xuaW1wb3J0IGFwcGxpY2F0aW9uTWFuYWdlciBmcm9tICcuLi8uLi8uLi8uLi8uLi9BcHBsaWNhdGlvbk1hbmFnZXInO1xuaW1wb3J0IE1lbnVMaW5rIGZyb20gJy4uLy4uLy4uLy4uL21lbnUvTWVudUxpbmsnO1xuaW1wb3J0IEljb24gZnJvbSAnLi4vLi4vLi4vLi4vSWNvbic7XG5pbXBvcnQge0NvbGxhcHNlLCBsaWdodGVuLCBMaXN0LCBMaXN0SXRlbUJ1dHRvbiwgTGlzdEl0ZW1JY29uLCBMaXN0SXRlbVRleHQsIFRvb2x0aXB9IGZyb20gJ0BtdWkvbWF0ZXJpYWwnO1xuaW1wb3J0IHt1c2VUaGVtZX0gZnJvbSAnQG11aS9tYXRlcmlhbC9zdHlsZXMnO1xuaW1wb3J0IHtpbnZva2VSZXN0fSBmcm9tICcuLi8uLi8uLi8uLi8uLi9SZXN0VXRpbHMnO1xuaW1wb3J0ICcuL0ZvbGRpbmdUYWJTaWRlYmFyLmNzcyc7XG5pbXBvcnQgQ2FyZEF2YXRhciBmcm9tIFwiLi4vLi4vLi4vLi4vY2FyZC9DYXJkQXZhdGFyXCI7XG5pbXBvcnQgTW9yZUhvcml6SWNvbiBmcm9tICdAbXVpL2ljb25zLW1hdGVyaWFsL01vcmVIb3Jpeic7XG5pbXBvcnQgSG9tZUljb24gZnJvbSAnQG11aS9pY29ucy1tYXRlcmlhbC9Ib21lJztcblxuY29uc3QgVEFCID0gMTY7XG4vLyBTaGFyZWQgaWNvbi1jb2x1bW4gd2lkdGggKHB4KSBzbyBpY29ucyBsZWZ0LWFsaWduIGFuZCB0ZXh0IHN0YXJ0cyBhdCB0aGUgc2FtZVxuLy8geCBmb3IgZXZlcnkgaXRlbSAoaG9tZSBidXR0b24gKyByb3V0ZXMpLCByZWdhcmRsZXNzIG9mIGljb24gc2l6ZSBvciBhYnNlbmNlLlxuY29uc3QgSUNPTl9DT0wgPSAyNDtcblxuZnVuY3Rpb24gRm9sZGluZ1RhYlNpZGViYXIocHJvcHMpIHtcbiAgICBjb25zdCB7YWN0aXZlQ29sb3IsIG9wZW4sIGFwcExvZ29QYXRoLCBvbk9wZW5EcmF3ZXJ9ID0gcHJvcHM7XG4gICAgY29uc3QgdGhlbWUgPSB1c2VUaGVtZSgpO1xuICAgIGNvbnN0IFtjb2xsYXBzZVN0YXRlcywgc2V0Q29sbGFwc2VTdGF0ZXNdID0gUmVhY3QudXNlU3RhdGUoXG4gICAgICAgIGdldENvbGxhcHNlU3RhdGVzKHByb3BzLnJvdXRlcylcbiAgICApO1xuICAgIGNvbnN0IFtpc0xvYWRpbmcsIHNldElzTG9hZGluZ10gPSBSZWFjdC51c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgW2Vycm9yLCBzZXRFcnJvcl0gPSBSZWFjdC51c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgW3JvdXRlc0RhdGEsIHNldFJvdXRlc0RhdGFdID0gUmVhY3QudXNlU3RhdGUodW5kZWZpbmVkKTtcbiAgICBjb25zdCBbYWN0aXZlUm91dGVNZW51LCBzZXRBY3RpdmVSb3V0ZU1lbnVdID0gUmVhY3QudXNlU3RhdGUoe1xuICAgICAgICBpZDogJ2Rhc2hib2FyZCcsXG4gICAgICAgIG5hbWU6ICdEYXNoYm9hcmQnXG4gICAgfSk7XG4gICAgLy8gSG9tZSBidXR0b24gaXMgaGlnaGxpZ2h0ZWQgYnkgZGVmYXVsdDsgc2VsZWN0aW5nIGFueSByb3V0ZSBjbGVhcnMgaXQsXG4gICAgLy8gY2xpY2tpbmcgdGhlIGhvbWUgYnV0dG9uIHJlc3RvcmVzIGl0LlxuICAgIGNvbnN0IFtob21lU2VsZWN0ZWQsIHNldEhvbWVTZWxlY3RlZF0gPSBSZWFjdC51c2VTdGF0ZSh0cnVlKTtcblxuICAgIC8qIC0tLS0tLS0tLS0tLS0tLS0tIGhlbHBlcnMgKHBvcnRlZCBmcm9tIGNsYXNzKSAtLS0tLS0tLS0tLS0tLS0tLSAqL1xuICAgIGZ1bmN0aW9uIGdldFZpZXdzKG1lbnVzLCBsZXZlbCkge1xuICAgICAgICBjb25zdCBuZXdWaWV3cyA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IG1lbnVzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBjcmVhdGVWaWV3ID0ge1xuICAgICAgICAgICAgICAgIG5hbWU6IG1lbnVzW2ldLmF0dHJpYnV0ZXMubGFiZWwsXG4gICAgICAgICAgICAgICAgaWQ6IG1lbnVzW2ldLmlkLFxuICAgICAgICAgICAgICAgIGljb246IG1lbnVzW2ldLmljb24sXG4gICAgICAgICAgICAgICAgbWluaTogJ1NTJyxcbiAgICAgICAgICAgICAgICBsYXlvdXQ6ICcvYWRtaW4nLFxuICAgICAgICAgICAgICAgIGxldmVsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgaWYgKG1lbnVzW2ldLnN1Yk1lbnUpIHtcbiAgICAgICAgICAgICAgICBjcmVhdGVWaWV3LmNvbGxhcHNlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBjcmVhdGVWaWV3LnN0YXRlID0gbWVudXNbaV0uaWQgKyAnQ29sbGFwc2UnO1xuICAgICAgICAgICAgICAgIGNyZWF0ZVZpZXcudmlld3MgPSBnZXRJdGVtcyhtZW51c1tpXS5zdWJNZW51Lml0ZW1zLCBsZXZlbCArIDEpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjcmVhdGVWaWV3Lml0ZW0gPSBtZW51c1tpXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG5ld1ZpZXdzLnB1c2goY3JlYXRlVmlldyk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ld1ZpZXdzO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldEl0ZW1zKGl0ZW1zLCBsZXZlbCkge1xuICAgICAgICBjb25zdCBuZXdJdGVtcyA9IFtdO1xuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGl0ZW1zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBjb25zdCBjcmVhdGVJdGVtID0ge1xuICAgICAgICAgICAgICAgIG5hbWU6IGl0ZW1zW2ldLmF0dHJpYnV0ZXMubGFiZWwsXG4gICAgICAgICAgICAgICAgaWQ6IGl0ZW1zW2ldLmlkLFxuICAgICAgICAgICAgICAgIGljb246IGl0ZW1zW2ldLmljb24sXG4gICAgICAgICAgICAgICAgbWluaTogJ1NTJyxcbiAgICAgICAgICAgICAgICBsYXlvdXQ6ICcvYWRtaW4nLFxuICAgICAgICAgICAgICAgIGl0ZW06IGl0ZW1zW2ldLFxuICAgICAgICAgICAgICAgIGxldmVsXG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwoaXRlbXNbaV0uc3ViTWVudSkpIHtcbiAgICAgICAgICAgICAgICBjcmVhdGVJdGVtLmNvbGxhcHNlID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICBjcmVhdGVJdGVtLnN0YXRlID0gaXRlbXNbaV0uaWQgKyAnU3ViTWVudUNvbGxhcHNlJztcbiAgICAgICAgICAgICAgICBjcmVhdGVJdGVtLnZpZXdzID0gZ2V0SXRlbXMoaXRlbXNbaV0uc3ViTWVudS5pdGVtcywgbGV2ZWwgKyAxKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG5ld0l0ZW1zLnB1c2goY3JlYXRlSXRlbSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5ld0l0ZW1zO1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGdldENvbGxhcHNlU3RhdGVzKHJvdXRlcykge1xuICAgICAgICBsZXQgaW5pdGlhbFN0YXRlID0ge307XG4gICAgICAgIGlmIChyb3V0ZXMpIHtcbiAgICAgICAgICAgIHJvdXRlcy5mb3JFYWNoKChwcm9wKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKHByb3AuY29sbGFwc2UpIHtcbiAgICAgICAgICAgICAgICAgICAgaW5pdGlhbFN0YXRlID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgW3Byb3Auc3RhdGVdOiBnZXRDb2xsYXBzZUluaXRpYWxTdGF0ZShwcm9wLnZpZXdzKSxcbiAgICAgICAgICAgICAgICAgICAgICAgIC4uLmdldENvbGxhcHNlU3RhdGVzKHByb3Audmlld3MpLFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uaW5pdGlhbFN0YXRlXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIGluaXRpYWxTdGF0ZTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBnZXRDb2xsYXBzZUluaXRpYWxTdGF0ZShyb3V0ZXMpIHtcbiAgICAgICAgaWYgKCFyb3V0ZXMpIHJldHVybiBmYWxzZTtcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCByb3V0ZXMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmICghcm91dGVzW2ldLnZpZXdzKSByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIGlmIChyb3V0ZXNbaV0uY29sbGFwc2UgJiYgZ2V0Q29sbGFwc2VJbml0aWFsU3RhdGUocm91dGVzW2ldLnZpZXdzKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh3aW5kb3cubG9jYXRpb24uaHJlZi5pbmRleE9mKHJvdXRlc1tpXS5wYXRoKSAhPT0gLTEpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuXG4gICAgY29uc3QgZ2V0TWVudSA9IChyb3V0ZSkgPT5cbiAgICAgICAgbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IHNlcnZpY2UgPSB7XG4gICAgICAgICAgICAgICAgdXJsOiAnL3VpL2FwaS92MS9tZW51L2dldCcsXG4gICAgICAgICAgICAgICAgcGFyYW1ldGVyczogW1xuICAgICAgICAgICAgICAgICAgICB7bmFtZTogJ2lkJywgdmFsdWU6IHJvdXRlLm1lbnUsIGh0dHBQYXJhbWV0ZXJUeXBlOiAnUVVFUllfUEFSQU1FVEVSJ30sXG4gICAgICAgICAgICAgICAgICAgIHtuYW1lOiAndmVyc2lvbicsIHZhbHVlOiAxLjAsIGh0dHBQYXJhbWV0ZXJUeXBlOiAnUVVFUllfUEFSQU1FVEVSJ31cbiAgICAgICAgICAgICAgICBdLFxuICAgICAgICAgICAgICAgIGNvbnRlbnRUeXBlOiAnYXBwbGljYXRpb24vanNvbidcbiAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgIGludm9rZVJlc3QoXG4gICAgICAgICAgICAgICAgc2VydmljZSxcbiAgICAgICAgICAgICAgICB7XG4gICAgICAgICAgICAgICAgICAgIGFwaToge1xuICAgICAgICAgICAgICAgICAgICAgICAgZ2V0IGlkKCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnZGFzaGJvYXJkLXNpZGViYXInO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAnZGFzaGJvYXJkLXNpZGViYXInLFxuICAgICAgICAgICAgICAgIChyZXN1bHQpID0+IHJlc29sdmUoZ2V0Vmlld3MocmVzdWx0Lm1lbnVzLCByb3V0ZS5sZXZlbCArIDEpKSxcbiAgICAgICAgICAgICAgICAoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgICAgICAgICAgICAgICAgICByZXNvbHZlKG51bGwpO1xuICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgbnVsbFxuICAgICAgICAgICAgKTtcbiAgICAgICAgfSk7XG5cbiAgICBjb25zdCBhY3RpdmVSb3V0ZSA9IChyb3V0ZU5hbWUpID0+IGFjdGl2ZVJvdXRlTWVudS5pZCA9PT0gcm91dGVOYW1lO1xuICAgIGNvbnN0IGdldExpQ2xhc3NOYW1lID0gKHByb3ApID0+ICdsaS0nICsgcHJvcC5sZXZlbDtcblxuICAgIGNvbnN0IGZhbGxiYWNrSWNvbiA9IChwcm9wLCBpY29uTm9kZSkgPT4ge1xuICAgICAgICBpZiAocHJvcC5pY29uKSByZXR1cm4gaWNvbk5vZGU7XG5cbiAgICAgICAgaWYgKHByb3AubGV2ZWwgPT09IDApIHtcbiAgICAgICAgICAgIHJldHVybiA8TW9yZUhvcml6SWNvbiBmb250U2l6ZT1cInNtYWxsXCIvPjtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1pbmktYXZhdGFyXCIgc3R5bGU9e3tmb250U2l6ZTogJzEwcHgnfX0+XG4gICAgICAgICAgICAgICAge3Byb3AubmFtZT8uY2hhckF0KDApICsgKHByb3AubmFtZT8uY2hhckF0KDEpID8/ICcnKSArIChwcm9wLm5hbWU/LmNoYXJBdCgyKSA/PyAnJykgKyAnLi4uJ31cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICApO1xuICAgIH07XG5cbiAgICAvKiAtLS0tLS0tLS0tLS0tLS0tLSBjcmVhdGVMaW5rcyB3aXRoIGR5bmFtaWMgY2xhc3NlcyArIHRoZW1lIGNvbG9ycyAtLS0tLS0tLS0tLS0tLS0tLSAqL1xuICAgIGNvbnN0IGNyZWF0ZUxpbmtzID0gKHJvdXRlcykgPT4ge1xuICAgICAgICBjb25zdCB7c2Vjb25kYXJ5VGhlbWVDb2xvciwgb3Blbn0gPSBwcm9wcztcblxuICAgICAgICByZXR1cm4gcm91dGVzLm1hcCgocHJvcCwga2V5KSA9PiB7XG4gICAgICAgICAgICBpZiAocHJvcC5yZWRpcmVjdCkgcmV0dXJuIG51bGw7XG5cbiAgICAgICAgICAgIC8vIFJlc29sdmUgdGhlIGljb24gZnJvbSB0aGUgcm91dGUsIGZhbGxpbmcgYmFjayB0byBpdHMgcmF3IG1lbnUgaXRlbVxuICAgICAgICAgICAgLy8gKHRoZSBzZXJ2ZXItZmlsdGVyZWQgcm91dGUgbWF5IG5vdCBzdXJmYWNlIGBpY29uYCwgYnV0IHRoZSByYXdcbiAgICAgICAgICAgIC8vIGl0ZW0gY2FycmllcyBpdCkuIEZvbnRBd2Vzb21lIGNsYXNzIHN0cmluZ3MgKFwiZmFzIGZhLS4uLlwiKSByZW5kZXJcbiAgICAgICAgICAgIC8vIGFzIDxpIGNsYXNzTmFtZT47IG5hbWVkIGlkcyAoXCJQRVJTT05cIiwgXCJIT01FXCIpIGdvIHRocm91Z2ggdGhlXG4gICAgICAgICAgICAvLyBmcmFtZXdvcmsgSWNvbiBjb21wb25lbnQgKHdoaWNoIG1hcHMgaWRzIC0+IE1VSSBpY29ucykuXG4gICAgICAgICAgICBjb25zdCByYXdJY29uID0gIVV0aWxzLmlzTnVsbChwcm9wLmljb24pID8gcHJvcC5pY29uIDogcHJvcC5pdGVtPy5pY29uO1xuICAgICAgICAgICAgbGV0IGljb25Ob2RlID0gbnVsbDtcbiAgICAgICAgICAgIGlmIChSZWFjdC5pc1ZhbGlkRWxlbWVudChyYXdJY29uKSkge1xuICAgICAgICAgICAgICAgIGljb25Ob2RlID0gcmF3SWNvbjtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZW9mIHJhd0ljb24gPT09ICdzdHJpbmcnICYmIHJhd0ljb24udHJpbSgpLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGljb25Ob2RlID0gKHJhd0ljb24uaW5kZXhPZignZmEtJykgIT09IC0xIHx8IHJhd0ljb24uaW5kZXhPZignICcpICE9PSAtMSlcbiAgICAgICAgICAgICAgICAgICAgPyA8aSBjbGFzc05hbWU9e3Jhd0ljb259Lz5cbiAgICAgICAgICAgICAgICAgICAgOiA8SWNvbiBpZD17cmF3SWNvbn0vPjtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWNvbk5vZGUgPSBwcm9wLmxldmVsID09PSAwID8gPGkgY2xhc3NOYW1lPXsnZmFzIGZhLXNxdWFyZSd9Lz4gOiBudWxsO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBjb25zdCBpc0FjdGl2ZSA9IGFjdGl2ZVJvdXRlKHByb3AuaWQpO1xuICAgICAgICAgICAgY29uc3QgaXNDb2xsYXBzaWJsZSA9XG4gICAgICAgICAgICAgICAgKHByb3AuY29sbGFwc2UgfHwgcHJvcC5pc1BhcmVudCkgJiZcbiAgICAgICAgICAgICAgICBwcm9wLm5hbWUgIT09ICdEYXNoYm9hcmQnICYmXG4gICAgICAgICAgICAgICAgcHJvcC5uYW1lICE9PSAnTXkgV29yayBJdGVtcyc7XG4gICAgICAgICAgICBjb25zdCBpc09wZW4gPSBwcm9wLnN0YXRlID8gISFjb2xsYXBzZVN0YXRlc1twcm9wLnN0YXRlXSA6IGZhbHNlO1xuXG4gICAgICAgICAgICAvLyByZXBsaWNhdGUgZHluYW1pYyBjbGFzc05hbWUgbG9naWMgZm9yIGNvbGxhcHNpYmxlIGVudHJpZXNcbiAgICAgICAgICAgIGNvbnN0IGNvbGxhcHNpYmxlQ2xhc3NOYW1lID0gcHJvcC5jb2xsYXBzZVxuICAgICAgICAgICAgICAgID8gKGdldENvbGxhcHNlSW5pdGlhbFN0YXRlKHByb3Audmlld3MpXG4gICAgICAgICAgICAgICAgICAgID8gJ2FjdGl2ZSAnICsgZ2V0TGlDbGFzc05hbWUocHJvcClcbiAgICAgICAgICAgICAgICAgICAgOiBnZXRMaUNsYXNzTmFtZShwcm9wKSlcbiAgICAgICAgICAgICAgICA6IGdldExpQ2xhc3NOYW1lKHByb3ApO1xuXG4gICAgICAgICAgICAvLyBsZWFmIGNsYXNzZXMgKGluY2x1ZGUgbGktbGV2ZWwpXG4gICAgICAgICAgICBjb25zdCBsZWFmQ2xhc3NOYW1lID1cbiAgICAgICAgICAgICAgICBnZXRMaUNsYXNzTmFtZShwcm9wKSArXG4gICAgICAgICAgICAgICAgJyAnICtcbiAgICAgICAgICAgICAgICAoJ21lbnUtbGluay1saScgK1xuICAgICAgICAgICAgICAgICAgICAoaXNBY3RpdmUgPyAnLWFjdGl2ZScgOiAnJykgK1xuICAgICAgICAgICAgICAgICAgICAocHJvcC5uYW1lID09PSAnRGFzaGJvYXJkJyA/ICcgZGFzaGJvYXJkLWxpbmsnIDogJycpKTtcblxuICAgICAgICAgICAgLy8gaW5kZW50IGJhc2VkIG9uIGxldmVsIChUQUIgcHggLT4gc3BhY2luZyB1bml0cylcbiAgICAgICAgICAgIGNvbnN0IGluZGVudCA9IChwcm9wLmxldmVsICsgMSkgKiAoVEFCIC8gOCk7XG5cbiAgICAgICAgICAgIGlmIChpc0NvbGxhcHNpYmxlKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgaXNUb3BMZXZlbCA9IHByb3AubGV2ZWwgPT09IDA7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2hvdWxkU2hvd1Rvb2x0aXAgPSAhb3BlbiAmJiBpc1RvcExldmVsO1xuXG4gICAgICAgICAgICAgICAgY29uc3QgaGFuZGxlQ2xpY2sgPSAoZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG5cbiAgICAgICAgICAgICAgICAgICAgLy8gSWYgZHJhd2VyIGlzIGNsb3NlZCBhbmQgdGhpcyBpcyBhIHRvcC1sZXZlbCBpdGVtLCBhc2sgcGFyZW50IHRvIG9wZW4gaXRcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFvcGVuICYmIGlzVG9wTGV2ZWwgJiYgdHlwZW9mIG9uT3BlbkRyYXdlciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgICAgICAgICAgb25PcGVuRHJhd2VyKCk7XG4gICAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgICAgICBjb25zdCB0b2dnbGUgPSAoKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgc2V0Q29sbGFwc2VTdGF0ZXMoKHByZXYpID0+ICh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4ucHJldixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcHJvcC5zdGF0ZV06ICFwcmV2W3Byb3Auc3RhdGVdXG4gICAgICAgICAgICAgICAgICAgICAgICB9KSk7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKCFwcm9wLnZpZXdzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBsYXp5LWxvYWQgbWVudSBvbmNlXG4gICAgICAgICAgICAgICAgICAgICAgICBnZXRNZW51KHByb3ApLnRoZW4oKHZpZXdzKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZpZXdzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3Audmlld3MgPSB2aWV3cztcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9nZ2xlKCk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0b2dnbGUoKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgICBjb25zdCBidXR0b24gPSAoXG4gICAgICAgICAgICAgICAgICAgIDxMaXN0SXRlbUJ1dHRvblxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjb2xsYXBzaWJsZUNsYXNzTmFtZX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2hhbmRsZUNsaWNrfVxuICAgICAgICAgICAgICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwbDogaW5kZW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uLihpc0FjdGl2ZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogbGlnaHRlbihzZWNvbmRhcnlUaGVtZUNvbG9yLCAwLjkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyUmFkaXVzOiAnMTZweCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjogc2Vjb25kYXJ5VGhlbWVDb2xvcixcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRXZWlnaHQ6IDUwMFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDoge30pXG4gICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICB7aWNvbk5vZGUgJiYgKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxMaXN0SXRlbUljb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbldpZHRoOiBvcGVuID8gSUNPTl9DT0wgOiAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXI6IG9wZW4gPyAwIDogJ2F1dG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6IG9wZW4gPyAnZmxleC1zdGFydCcgOiAnY2VudGVyJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2ljb25Ob2RlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvTGlzdEl0ZW1JY29uPlxuICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIHtvcGVuID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8TGlzdEl0ZW1UZXh0IHN0eWxlPXt7bWFyZ2luVG9wOiAnNnB4J319XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmltYXJ5PXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3Byb3AubmFtZX17JyAnfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7cHJvcC5jb2xsYXBzZSAmJiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT17YGNhcmV0ICR7aXNPcGVuID8gJ2NhcmV0LW9wZW4nIDogJ2NhcmV0LWNsb3NlZCd9YH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17e21hcmdpblRvcDogMH19XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIDpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAhaWNvbk5vZGUgP1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxsYmFja0ljb24ocHJvcCwgaWNvbk5vZGUpIDogbnVsbH1cbiAgICAgICAgICAgICAgICAgICAgPC9MaXN0SXRlbUJ1dHRvbj5cbiAgICAgICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgICAgICAgPFJlYWN0LkZyYWdtZW50IGtleT17a2V5fT5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtzaG91bGRTaG93VG9vbHRpcCA/XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPFRvb2x0aXAgdGl0bGU9e3Byb3AubmFtZX0gcGxhY2VtZW50PVwicmlnaHRcIiBhcnJvdz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2J1dHRvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1Rvb2x0aXA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtidXR0b259XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB7cHJvcC5jb2xsYXBzZSAmJiBwcm9wLnZpZXdzICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Q29sbGFwc2UgaW49e2lzT3Blbn0gdGltZW91dD1cImF1dG9cIiB1bm1vdW50T25FeGl0IHN4PXt7IHBsOiAwLCBtdDogMCB9fT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPExpc3QgZGlzYWJsZVBhZGRpbmcgY2xhc3NOYW1lPVwibmF2XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Y3JlYXRlTGlua3MocHJvcC52aWV3cyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvTGlzdD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L0NvbGxhcHNlPlxuICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgPC9SZWFjdC5GcmFnbWVudD5cbiAgICAgICAgICAgICAgICApO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsZXQgbWVudUxpbmsgPSA8TWVudUxpbmtcbiAgICAgICAgICAgICAgICAvLyBUaGUgc2lkZWJhcidzIExpc3RJdGVtSWNvbiBhbHJlYWR5IHJlbmRlcnMgdGhlIGljb24gKGFuZCBvd25zXG4gICAgICAgICAgICAgICAgLy8gdGhlIGNvbHVtbiBhbGlnbm1lbnQgLyBjb2xsYXBzZWQgY2VudHJpbmcpLCBzbyBzdHJpcCBpdCBoZXJlXG4gICAgICAgICAgICAgICAgLy8gdG8gYXZvaWQgTWVudUxpbmsgcmVuZGVyaW5nIGEgc2Vjb25kLCBkb3VibGVkIGljb24uXG4gICAgICAgICAgICAgICAgY29uZmlnPXtVdGlscy5pc051bGwocHJvcC5pdGVtKSA/IHByb3AuaXRlbSA6IHsuLi5wcm9wLml0ZW0sIGljb246IHVuZGVmaW5lZH19XG4gICAgICAgICAgICAgICAgY2xpY2tDYWxsYmFjaz17XG4gICAgICAgICAgICAgICAgICAgIHByb3AubmFtZSA9PT0gJ0Rhc2hib2FyZCdcbiAgICAgICAgICAgICAgICAgICAgICAgID8gKGl0ZW0pID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9wcy5kYXNoYm9hcmRMYXVuY2hlciAmJiBwcm9wcy5kYXNoYm9hcmRMYXVuY2hlcigpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEFjdGl2ZVJvdXRlTWVudShpdGVtKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXRIb21lU2VsZWN0ZWQoZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE11bHRpLXZpZXdwb3J0OiBkb2NrIChwaW4pIGFueSBvcGVuIHdpbmRvdyBvdmVybGF5IHNvIGl0IHN0YXlzIHZpc2libGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbG9uZ3NpZGUgdGhlIG5ld2x5LW5hdmlnYXRlZCBtYWluIHZpZXcgaW5zdGVhZCBvZiBvdmVybGF5aW5nIGl0LlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhcHBsaWNhdGlvbk1hbmFnZXIuaXNXaW5kb3dPcGVuKCkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb25NYW5hZ2VyLnVwZGF0ZUNvbnRleHQoe3dpbmRvd0Rpc3BsYXlTdGF0ZTogJ1BJTk5FRCd9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICA6IChpdGVtKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0QWN0aXZlUm91dGVNZW51KGl0ZW0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldEhvbWVTZWxlY3RlZChmYWxzZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTXVsdGktdmlld3BvcnQ6IGRvY2sgKHBpbikgYW55IG9wZW4gd2luZG93IG92ZXJsYXkgKHNlZSBhYm92ZSkuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFwcGxpY2F0aW9uTWFuYWdlci5pc1dpbmRvd09wZW4oKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbk1hbmFnZXIudXBkYXRlQ29udGV4dCh7d2luZG93RGlzcGxheVN0YXRlOiAnUElOTkVEJ30pO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYXV0b0NsaWNrPXtcbiAgICAgICAgICAgICAgICAgICAgcHJvcC5uYW1lID09PSAnTXkgV29yayBJdGVtcycgfHxcbiAgICAgICAgICAgICAgICAgICAgKHByb3AuaXRlbSAmJiBwcm9wLml0ZW0uZGVmYXVsdEl0ZW0pXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHZpZXdJZD1cIm1lbnVCYXJcIlxuICAgICAgICAgICAgICAgIGljb249e3Byb3AuaWNvbn1cbiAgICAgICAgICAgICAgICBjb250ZW50PXtvcGVuID8gbnVsbCA6IGZhbGxiYWNrSWNvbihwcm9wLCBpY29uTm9kZSl9XG4gICAgICAgICAgICAgICAgaWNvbkNvbG9yPXtcbiAgICAgICAgICAgICAgICAgICAgKHByb3AubmFtZSA9PT0gJ0Rhc2hib2FyZCcgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3AubmFtZSA9PT0gJ015IFdvcmsgSXRlbXMnKSAmJlxuICAgICAgICAgICAgICAgICAgICBpc0FjdGl2ZVxuICAgICAgICAgICAgICAgICAgICAgICAgPyBwcm9wcy5zZWNvbmRhcnlUaGVtZUNvbG9yXG4gICAgICAgICAgICAgICAgICAgICAgICA6IG51bGxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgbmFtZT17cHJvcC5uYW1lfVxuICAgICAgICAgICAgICAgIGlkPXtwcm9wLmlkfVxuICAgICAgICAgICAgICAgIGxldmVsPXtwcm9wLmxldmVsfVxuICAgICAgICAgICAgICAgIHRhYj17VEFCfVxuICAgICAgICAgICAgLz47XG5cbiAgICAgICAgICAgIGNvbnN0IGNvbnRlbnQgPSAoXG4gICAgICAgICAgICAgICAgPExpc3RJdGVtQnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIGtleT17a2V5fVxuICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9eyhwcm9wLm5hbWUgPT09ICdEYXNoYm9hcmQnIHx8IHByb3AubmFtZSA9PT0gJ015IFdvcmsgSXRlbXMnKSA/IChpc0FjdGl2ZSA/ICdkYXNoYm9hcmQtbGluay1hY3RpdmUnIDogJ2Rhc2hib2FyZC1saW5rJykgOiBsZWFmQ2xhc3NOYW1lfVxuICAgICAgICAgICAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgICAgICAgICAgICAganVzdGlmeUNvbnRlbnQ6IG9wZW4gPyAnaW5pdGlhbCcgOiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHB4OiAyLjUsXG4gICAgICAgICAgICAgICAgICAgICAgICBwbDogaW5kZW50LFxuICAgICAgICAgICAgICAgICAgICAgICAgLy8gTGVhZiBpY29ucyBzaXQgZGltbWVkLCB0aGVuIGJyaWdodGVuICsgZ2xvdyBvbiBob3Zlci5cbiAgICAgICAgICAgICAgICAgICAgICAgICcmIC5NdWlMaXN0SXRlbUljb24tcm9vdCc6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGFjaXR5OiBpc0FjdGl2ZSA/IDEgOiAwLjU1LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zaXRpb246ICdvcGFjaXR5IDAuMnMgZWFzZSwgZmlsdGVyIDAuMnMgZWFzZSdcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAnJjpob3ZlciAuTXVpTGlzdEl0ZW1JY29uLXJvb3QnOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3BhY2l0eTogMSxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXI6ICdkcm9wLXNoYWRvdygwIDAgNHB4IGN1cnJlbnRDb2xvciknXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgLi4uKGlzQWN0aXZlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPyB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRDb2xvcjogbGlnaHRlbihzZWNvbmRhcnlUaGVtZUNvbG9yLCAwLjkpLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXJSYWRpdXM6ICcxNnB4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sb3I6IHNlY29uZGFyeVRoZW1lQ29sb3IsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvbnRXZWlnaHQ6IDUwMFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHt9KVxuICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge2ljb25Ob2RlICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxMaXN0SXRlbUljb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5XaWR0aDogb3BlbiA/IChwcm9wLm5hbWUgPT09ICdEYXNoYm9hcmQnID8gSUNPTl9DT0wgOiBUQUIpIDogMCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXI6IG9wZW4gPyAwIDogJ2F1dG8nLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogb3BlbiA/ICdmbGV4LXN0YXJ0JyA6ICdjZW50ZXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcjpcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwcm9wLm5hbWUgPT09ICdEYXNoYm9hcmQnIHx8IHByb3AubmFtZSA9PT0gJ015IFdvcmsgSXRlbXMnKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNBY3RpdmVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHNlY29uZGFyeVRoZW1lQ29sb3JcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6ICdpbmhlcml0J1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2ljb25Ob2RlfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9MaXN0SXRlbUljb24+XG4gICAgICAgICAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgICAgICAgICAgb3BlbiA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxMaXN0SXRlbVRleHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmltYXJ5PXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7bWVudUxpbmt9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgKSA6ICFpY29uTm9kZSA/IDw+e21lbnVMaW5rfTwvPiA6IG51bGxcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIDwvTGlzdEl0ZW1CdXR0b24+XG4gICAgICAgICAgICApO1xuXG4gICAgICAgICAgICAvLyBsZWFmXG4gICAgICAgICAgICByZXR1cm4gIW9wZW4gPyAoXG4gICAgICAgICAgICAgICAgPFRvb2x0aXAgdGl0bGU9e3Byb3AubmFtZX0gcGxhY2VtZW50PVwicmlnaHRcIiBhcnJvdz5cbiAgICAgICAgICAgICAgICAgICAge2NvbnRlbnR9XG4gICAgICAgICAgICAgICAgPC9Ub29sdGlwPlxuICAgICAgICAgICAgKSA6IGNvbnRlbnQ7XG4gICAgICAgIH0pO1xuICAgIH07XG5cbiAgICAvKiAtLS0tLS0tLS0tLS0tLS0tLSBsb2FkIGZpbHRlcmVkIG1lbnUgLS0tLS0tLS0tLS0tLS0tLS0gKi9cbiAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBsZXQgY2FuY2VsbGVkID0gZmFsc2U7XG5cbiAgICAgICAgY29uc3Qgc2VydmljZSA9IHtcbiAgICAgICAgICAgIHVybDogJy91aS9hcGkvdjEvbWVudS9maWx0ZXInLFxuICAgICAgICAgICAgcGFyYW1ldGVyczogW3t2YWx1ZTogcHJvcHMucm91dGVzLCBodHRwUGFyYW1ldGVyVHlwZTogJ1JFUVVFU1RfQk9EWSd9XSxcbiAgICAgICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICAgICAgY29udGVudFR5cGU6ICdhcHBsaWNhdGlvbi9qc29uJ1xuICAgICAgICB9O1xuXG4gICAgICAgIHNldElzTG9hZGluZyh0cnVlKTtcbiAgICAgICAgc2V0RXJyb3IoZmFsc2UpO1xuXG4gICAgICAgIGludm9rZVJlc3QoXG4gICAgICAgICAgICBzZXJ2aWNlLFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICAgIGFwaToge1xuICAgICAgICAgICAgICAgICAgICBnZXQgaWQoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gJ2Rhc2hib2FyZC1zaWRlYmFyJztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAnZGFzaGJvYXJkLXNpZGViYXInLFxuICAgICAgICAgICAgKHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghY2FuY2VsbGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHNldFJvdXRlc0RhdGEocmVzdWx0KTtcbiAgICAgICAgICAgICAgICAgICAgc2V0SXNMb2FkaW5nKGZhbHNlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgKGUpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIWNhbmNlbGxlZCkge1xuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgICAgICAgICAgICAgICAgICBzZXRFcnJvcih0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgc2V0SXNMb2FkaW5nKGZhbHNlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbnVsbFxuICAgICAgICApO1xuXG4gICAgICAgIHJldHVybiAoKSA9PiB7XG4gICAgICAgICAgICBjYW5jZWxsZWQgPSB0cnVlO1xuICAgICAgICB9O1xuICAgIH0sIFtwcm9wcy5yb3V0ZXNdKTtcblxuICAgIC8qIC0tLS0tLS0tLS0tLS0tLS0tIHJlbmRlciAtLS0tLS0tLS0tLS0tLS0tLSAqL1xuICAgIGNvbnN0IHtsb2dvfSA9IHByb3BzO1xuXG4gICAgbGV0IGxvZ29JbWcgPSBudWxsO1xuICAgIGlmICghVXRpbHMuaXNOdWxsKGxvZ28pKSB7XG4gICAgICAgIGxvZ29JbWcgPSAoXG4gICAgICAgICAgICA8YVxuICAgICAgICAgICAgICAgIGhyZWY9e2xvZ28ub3V0dGVyTGlua31cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJzaWRlYmFyX19icmFuZFwiXG4gICAgICAgICAgICAgICAgb25DbGljaz17cHJvcHMuY2xvc2VTaWRlYmFyfVxuICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJIb21lXCJcbiAgICAgICAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgICAgICAgICAuLi4ocHJvcHMubG9nb1N0eWxlIHx8IHt9KSxcbiAgICAgICAgICAgICAgICAgICAgLy8gUmVzcG9uc2l2ZSB3aWR0aCBzbyB0aGUgbG9nbyBmaXRzIHRoZSByYWlsIChpdCBnZXRzIGN1dCBhdFxuICAgICAgICAgICAgICAgICAgICAvLyBhIGZpeGVkIHdpZHRoIGluIHRoZSBtaW5pIGRyYXdlcikuIEhlaWdodCArIGZpdHRpbmcgYXJlIGxlZnRcbiAgICAgICAgICAgICAgICAgICAgLy8gdG8gdGhlIENTUyAoLnNpZGViYXJfX2JyYW5kIG1heC1oZWlnaHQgKyAuc2lkZWJhcl9fYnJhbmQtaW1nXG4gICAgICAgICAgICAgICAgICAgIC8vIGJsb2NrLXNpemU6MTAwJSAvIG9iamVjdC1maXQ6Y29udGFpbiksIHNvIGEgdGFsbGVyIGxvZ29cbiAgICAgICAgICAgICAgICAgICAgLy8gc2NhbGVzIGRvd24gaW5zdGVhZCBvZiBvdmVyZmxvd2luZyBhbmQgYmVpbmcgY2xpcHBlZC5cbiAgICAgICAgICAgICAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgICAgICAgICAgICAgICAgbWF4V2lkdGg6IChwcm9wcy5sb2dvU3R5bGUgJiYgcHJvcHMubG9nb1N0eWxlLndpZHRoKSB8fCAnMTIwcHgnLFxuICAgICAgICAgICAgICAgICAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgICAgICAgICAgICAgICAgIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcbiAgICAgICAgICAgICAgICAgICAgYWxpZ25JdGVtczogJ2NlbnRlcidcbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxpbWdcbiAgICAgICAgICAgICAgICAgICAgc3JjPXtsb2dvLmltZ1NyY31cbiAgICAgICAgICAgICAgICAgICAgYWx0PVwibG9nb1wiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInNpZGViYXJfX2JyYW5kLWltZ1wiXG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgIDwvYT5cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoaXNMb2FkaW5nKSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInAtM1wiPlxuICAgICAgICAgICAgICAgIDxlbT5Mb2FkaW5nIG1lbnXigKY8L2VtPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICk7XG4gICAgfVxuXG4gICAgaWYgKGVycm9yKSB7XG4gICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInAtMyB0ZXh0LWRhbmdlclwiPlxuICAgICAgICAgICAgICAgIDxlbT5GYWlsZWQgdG8gbG9hZCBtZW51LjwvZW0+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICBpZiAoIXJvdXRlc0RhdGEpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuXG4gICAgLy8gY29sb3I6ICdwcmltYXJ5JyB8ICdzZWNvbmRhcnknIHwgYW55IENTUyBjb2xvciAoZS5nLiAnIzAwMDAwMCcpXG4gICAgY29uc3QgcmVzb2x2ZUhpZ2hsaWdodENvbG9yID0gKGMpID0+IHtcbiAgICAgICAgaWYgKFV0aWxzLmlzTnVsbChjKSB8fCBjID09PSAncHJpbWFyeScpIHJldHVybiB0aGVtZS5wYWxldHRlLnByaW1hcnkubWFpbjtcbiAgICAgICAgaWYgKGMgPT09ICdzZWNvbmRhcnknKSByZXR1cm4gdGhlbWUucGFsZXR0ZS5zZWNvbmRhcnkubWFpbjtcbiAgICAgICAgcmV0dXJuIGM7XG4gICAgfTtcblxuICAgIC8vIE9wdGlvbmFsIGhvbWUgYnV0dG9uLCByZW5kZXJlZCBhdCB0aGUgdmVyeSB0b3Agb2YgdGhlIHNpZGViYXIuIEZpcmVzXG4gICAgLy8gaG9tZUJ1dHRvblNldHRpbmdzLmNhbGxiYWNrKCkgb24gY2xpY2sgKGUuZy4gbG9hZCB0aGUgcG9ydGFsIGRhc2hib2FyZCkuXG4gICAgY29uc3QgcmVuZGVySG9tZUJ1dHRvbiA9ICgpID0+IHtcbiAgICAgICAgY29uc3QgaGIgPSBwcm9wcy5ob21lQnV0dG9uU2V0dGluZ3M7XG4gICAgICAgIGlmIChVdGlscy5pc051bGwoaGIpKSByZXR1cm4gbnVsbDtcblxuICAgICAgICBjb25zdCBoaWdobGlnaHQgPSByZXNvbHZlSGlnaGxpZ2h0Q29sb3IoaGIuY29sb3IpO1xuXG4gICAgICAgIC8vIGljb24gc2l6ZSBmcm9tIHNldHRpbmdzIChudW1iZXIgcHggb3IgYW55IENTUyBzaXplLCBlLmcuIDI0LCAnMjRweCcsICcxLjVyZW0nKVxuICAgICAgICBjb25zdCBpY29uU2l6ZSA9IGhiLmljb25TaXplO1xuXG4gICAgICAgIGxldCBpY29uTm9kZTtcbiAgICAgICAgaWYgKFJlYWN0LmlzVmFsaWRFbGVtZW50KGhiLmljb24pKSB7XG4gICAgICAgICAgICBpY29uTm9kZSA9IGhiLmljb247XG4gICAgICAgIH0gZWxzZSBpZiAoaGIuaWNvbiA9PT0gJ0hPTUUnIHx8IFV0aWxzLmlzTnVsbChoYi5pY29uKSkge1xuICAgICAgICAgICAgaWNvbk5vZGUgPSA8SG9tZUljb24gZm9udFNpemU9e2ljb25TaXplID8gaWNvblNpemUgOiAnc21hbGwnfS8+O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWNvbk5vZGUgPSA8aSBjbGFzc05hbWU9e2hiLmljb259IHN0eWxlPXtpY29uU2l6ZSA/IHtmb250U2l6ZTogaWNvblNpemV9IDogdW5kZWZpbmVkfS8+O1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYnV0dG9uID0gKFxuICAgICAgICAgICAgPExpc3RJdGVtQnV0dG9uXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPXsnc2lkZWJhcl9faG9tZS1idXR0b24nICsgKGhvbWVTZWxlY3RlZCA/ICcgc2lkZWJhcl9faG9tZS1idXR0b24tLXNlbGVjdGVkJyA6ICcnKX1cbiAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHNldEhvbWVTZWxlY3RlZCh0cnVlKTtcbiAgICAgICAgICAgICAgICAgICAgLy8gQ2xlYXIgYW55IGFjdGl2ZSByb3V0ZSBzbyBubyByb3V0ZSBsaW5rIHN0YXlzIGhpZ2hsaWdodGVkXG4gICAgICAgICAgICAgICAgICAgIC8vIChhY3RpdmVSb3V0ZSgpIG1hdGNoZXMgb24gaWQ7ICdfX2hvbWVfXycgbWF0Y2hlcyBub25lKS5cbiAgICAgICAgICAgICAgICAgICAgc2V0QWN0aXZlUm91dGVNZW51KHtpZDogJ19faG9tZV9fJywgbmFtZTogJ0hvbWUnfSk7XG4gICAgICAgICAgICAgICAgICAgIGhiLmNhbGxiYWNrICYmIGhiLmNhbGxiYWNrKCk7XG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogb3BlbiA/ICdmbGV4LXN0YXJ0JyA6ICdjZW50ZXInLFxuICAgICAgICAgICAgICAgICAgICAvLyBwYW5lbCBvZmZzZXQgPSBtYXJnaW4gOCArIGJvcmRlciAxICsgcGFkZGluZyA2ID0gMTVweDsgKzFweCBsYW5kc1xuICAgICAgICAgICAgICAgICAgICAvLyB0aGUgaWNvbiBhdCAxNnB4LCBleGFjdGx5IHdoZXJlIHRoZSBsZXZlbC0wIHJvdXRlIGljb25zIHNpdC5cbiAgICAgICAgICAgICAgICAgICAgLy8gV2hlbiBjb2xsYXBzZWQsIGtlZXAgcGFkZGluZyBzeW1tZXRyaWMgc28gdGhlIGljb24gY2VudHJlc1xuICAgICAgICAgICAgICAgICAgICAvLyBpbiB0aGUgbWluaSByYWlsIChtYXRjaGluZyB0aGUgcm91dGVzKS5cbiAgICAgICAgICAgICAgICAgICAgcGw6IG9wZW4gPyAnMXB4JyA6IDAsXG4gICAgICAgICAgICAgICAgICAgIHByOiBvcGVuID8gMi41IDogMCxcbiAgICAgICAgICAgICAgICAgICAgYm9yZGVyUmFkaXVzOiAnNHB4JyxcbiAgICAgICAgICAgICAgICAgICAgLi4uKGhiLnN0eWxlIHx8IHt9KVxuICAgICAgICAgICAgICAgICAgICAvLyBTZWxlY3RlZC9ob3ZlciBoaWdobGlnaHQgbGl2ZXMgaW4gdGhlIHNraW5cbiAgICAgICAgICAgICAgICAgICAgLy8gKC5zaWRlYmFyX19ob21lLWJ1dHRvbi0tc2VsZWN0ZWQgaW4gc2tpbnMuY3NzKS5cbiAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxMaXN0SXRlbUljb25cbiAgICAgICAgICAgICAgICAgICAgc3g9e3ttYXJnaW46IG9wZW4gPyBudWxsIDogJ2F1dG8nLCBtaW5XaWR0aDogb3BlbiA/IElDT05fQ09MIDogMCwgbXI6IG9wZW4gPyAwIDogJ2F1dG8nLCBqdXN0aWZ5Q29udGVudDogb3BlbiA/ICdmbGV4LXN0YXJ0JyA6ICdjZW50ZXInLCBjb2xvcjogaGlnaGxpZ2h0fX0+XG4gICAgICAgICAgICAgICAgICAgIHtpY29uTm9kZX1cbiAgICAgICAgICAgICAgICA8L0xpc3RJdGVtSWNvbj5cbiAgICAgICAgICAgICAgICB7b3BlbiAmJiBoYi50ZXh0ID8gPGRpdiBzdHlsZT17e2ZvbnRXZWlnaHQ6IDMwMCwgZm9udFNpemU6ICcuODVyZW0nLCBtYXJnaW5Ub3A6ICcycHgnfX0+e2hiLnRleHR9PC9kaXY+IDogbnVsbH1cbiAgICAgICAgICAgIDwvTGlzdEl0ZW1CdXR0b24+XG4gICAgICAgICk7XG5cbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9eydzaWRlYmFyX19ob21lLWJ1dHRvbicgKyAoaG9tZVNlbGVjdGVkID8gJyBzaWRlYmFyX19ob21lLWJ1dHRvbi0tc2VsZWN0ZWQnIDogJycpfVxuICAgICAgICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICAgICAgICAgIHBhZGRpbmc6ICc2cHgnLFxuICAgICAgICAgICAgICAgICAgICBtYXJnaW46IG9wZW4gPyAnMCcgOiAwLFxuICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6ICdyZ2JhKDIwLCA2MCwgOTQsIDAuMDUpJyxcbiAgICAgICAgICAgICAgICAgICAgYm9yZGVyOiAnMXB4IHNvbGlkIHJnYmEoMjAsIDYwLCA5NCwgMC4wOCknLFxuICAgICAgICAgICAgICAgICAgICBib3JkZXJSYWRpdXM6ICc0cHgnXG4gICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICB7IW9wZW4gPyAoXG4gICAgICAgICAgICAgICAgICAgIDxUb29sdGlwIHRpdGxlPXtoYi50ZXh0IHx8ICdIb21lJ30gcGxhY2VtZW50PVwicmlnaHRcIiBhcnJvdz57YnV0dG9ufTwvVG9vbHRpcD5cbiAgICAgICAgICAgICAgICApIDogYnV0dG9ufVxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICk7XG4gICAgfTtcblxuICAgIHJldHVybiAoXG4gICAgICAgIDxhc2lkZVxuICAgICAgICAgICAgY2xhc3NOYW1lPXtgc2lkZWJhciAkeyFvcGVuID8gJ3NpZGViYXItLW1pbmknIDogJyd9YH1cbiAgICAgICAgICAgIGRhdGE9e2FjdGl2ZUNvbG9yfVxuICAgICAgICA+XG4gICAgICAgICAgICB7LyogVE9QOiBicmFuZCAvIGxvZ28gKi99XG4gICAgICAgICAgICB7bG9nb0ltZyAmJiAoXG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJzaWRlYmFyX190b3BcIj5cbiAgICAgICAgICAgICAgICAgICAge2xvZ29JbWd9XG4gICAgICAgICAgICAgICAgICAgIHtwcm9wcy5oZWFkaW5nICYmIChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwic2lkZWJhcl9faGVhZGluZ1wiPntwcm9wcy5oZWFkaW5nfTwvZGl2PlxuICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKX1cblxuICAgICAgICAgICAgey8qIEhvbWUgYnV0dG9uIOKAlCB1bmRlciB0aGUgbG9nbywgYWJvdmUgdGhlIHJvdXRlcyAqL31cbiAgICAgICAgICAgIHtyZW5kZXJIb21lQnV0dG9uKCl9XG5cbiAgICAgICAgICAgIHsvKiBNSURETEU6IHNjcm9sbGFibGUgbmF2ICovfVxuICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInNpZGViYXJfX3Njcm9sbFwiXG4gICAgICAgICAgICAgICAgc3R5bGU9e1V0aWxzLmlzTnVsbChwcm9wcy5ob21lQnV0dG9uU2V0dGluZ3MpID8gdW5kZWZpbmVkIDoge3BhZGRpbmdUb3A6IDB9fVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxMaXN0IHN4PXt7bXQ6IFV0aWxzLmlzTnVsbChwcm9wcy5ob21lQnV0dG9uU2V0dGluZ3MpID8gMSA6IDB9fSBjbGFzc05hbWU9XCJuYXZcIj5cbiAgICAgICAgICAgICAgICAgICAge2NyZWF0ZUxpbmtzKHJvdXRlc0RhdGEpfVxuICAgICAgICAgICAgICAgIDwvTGlzdD5cbiAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICB7LyogQk9UVE9NOiBhcHAgbG9nbyArIGNvcHlyaWdodCAqL31cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwic2lkZWJhcl9fYm90dG9tXCI+XG4gICAgICAgICAgICAgICAgeyFVdGlscy5pc051bGwoYXBwTG9nb1BhdGgpID8gKFxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInNpZGViYXJfX2FwcC1sb2dvXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8Q2FyZEF2YXRhciBwbGFpbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz17YXBwTG9nb1BhdGh9IGFsdD1cIlwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L0NhcmRBdmF0YXI+XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwic2lkZWJhcl9fY29weXJpZ2h0XCI+XG4gICAgICAgICAgICAgICAgICAgIMKpIHtuZXcgRGF0ZSgpLmdldEZ1bGxZZWFyKCl9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9hc2lkZT5cbiAgICApO1xufVxuXG5Gb2xkaW5nVGFiU2lkZWJhci5wcm9wVHlwZXMgPSB7XG4gICAgYWN0aXZlQ29sb3I6IFByb3BUeXBlcy5vbmVPZihbJ3ByaW1hcnknLCAnYmx1ZScsICdncmVlbicsICdvcmFuZ2UnLCAncmVkJywgJ2FnaWxpdHknXSksXG4gICAgc2Vjb25kYXJ5VGhlbWVDb2xvcjogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAgIHJ0bEFjdGl2ZTogUHJvcFR5cGVzLmJvb2wsXG4gICAgcm91dGVzOiBQcm9wVHlwZXMuYXJyYXkuaXNSZXF1aXJlZCxcbiAgICBsb2dvOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtcbiAgICAgICAgUHJvcFR5cGVzLnNoYXBlKHtcbiAgICAgICAgICAgIGlubmVyTGluazogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAgICAgICAgICAgaW1nU3JjOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gICAgICAgICAgICB0ZXh0OiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWRcbiAgICAgICAgfSksXG4gICAgICAgIFByb3BUeXBlcy5zaGFwZSh7XG4gICAgICAgICAgICBvdXR0ZXJMaW5rOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gICAgICAgICAgICBpbWdTcmM6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgICAgICAgICAgIHRleHQ6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZFxuICAgICAgICB9KVxuICAgIF0pLFxuICAgIGhlYWRpbmc6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgYXBwTG9nb1BhdGg6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgY2xvc2VTaWRlYmFyOiBQcm9wVHlwZXMuZnVuYyxcbiAgICBkYXNoYm9hcmRMYXVuY2hlcjogUHJvcFR5cGVzLmZ1bmMsXG4gICAgbG9nb1N0eWxlOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgIG9wZW46IFByb3BUeXBlcy5ib29sLFxuICAgIG9uT3BlbkRyYXdlcjogUHJvcFR5cGVzLmZ1bmMsXG4gICAgaG9tZUJ1dHRvblNldHRpbmdzOiBQcm9wVHlwZXMuc2hhcGUoe1xuICAgICAgICBpY29uOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuc3RyaW5nLCBQcm9wVHlwZXMuZWxlbWVudF0pLFxuICAgICAgICBpY29uU2l6ZTogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLm51bWJlciwgUHJvcFR5cGVzLnN0cmluZ10pLFxuICAgICAgICB0ZXh0OiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgICAgICBzdHlsZTogUHJvcFR5cGVzLm9iamVjdCxcbiAgICAgICAgY29sb3I6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgICAgIGNhbGxiYWNrOiBQcm9wVHlwZXMuZnVuY1xuICAgIH0pXG59O1xuXG5leHBvcnQgZGVmYXVsdCBGb2xkaW5nVGFiU2lkZWJhcjtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQ0EsSUFBQUEsTUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsVUFBQSxHQUFBRixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUUsTUFBQSxHQUFBSCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUcsbUJBQUEsR0FBQUosc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFJLFNBQUEsR0FBQUwsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFLLEtBQUEsR0FBQU4sc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFNLFNBQUEsR0FBQU4sT0FBQTtBQUNBLElBQUFPLE9BQUEsR0FBQVAsT0FBQTtBQUNBLElBQUFRLFVBQUEsR0FBQVIsT0FBQTtBQUNBQSxPQUFBO0FBQ0EsSUFBQVMsV0FBQSxHQUFBVixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQVUsVUFBQSxHQUFBWCxz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
|
|
@@ -46,7 +46,9 @@ const BaseField = props => {
|
|
|
46
46
|
}, [valueObject]);
|
|
47
47
|
function bind() {
|
|
48
48
|
let boundValue = valueObject[valueProperty];
|
|
49
|
-
|
|
49
|
+
// Use isNull, not truthiness, so falsy-but-present values (false, 0, "")
|
|
50
|
+
// bind on initial load instead of being silently dropped.
|
|
51
|
+
if (!_Utils.default.isNull(boundValue) && !initialValueBound.current) {
|
|
50
52
|
initialValueBound.current = true;
|
|
51
53
|
if (props.config.fieldType === 'SELECT' || props.config.fieldType === 'LOOKUP') {
|
|
52
54
|
if (!boundValue || _Utils.default.isNull(boundValue.id)) {
|
|
@@ -409,4 +411,4 @@ const BaseField = props => {
|
|
|
409
411
|
}))) : null;
|
|
410
412
|
};
|
|
411
413
|
exports.BaseField = BaseField;
|
|
412
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9VdGlscyIsIl9PYnNlcnZhYmxlIiwiX0FwcGxpY2F0aW9uTWFuYWdlciIsIl9FdmVudCIsIl9FdmVudFR5cGUiLCJfRHluYW1pY0pTIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiQmFzZUZpZWxkIiwicHJvcHMiLCJoYXNFcnJvciIsInNldEhhc0Vycm9yIiwiUmVhY3QiLCJ1c2VTdGF0ZSIsImVycm9yTWVzc2FnZSIsInNldEVycm9yTWVzc2FnZSIsInZhbHVlT2JqZWN0Iiwic2V0VmFsdWVPYmplY3QiLCJ2YWx1ZVByb3BlcnR5Iiwic2V0VmFsdWVQcm9wZXJ0eSIsImxvYWRpbmdSZWYiLCJ1c2VSZWYiLCJjb25maWciLCJzZXRDb25maWciLCJ2YWx1ZSIsInNldFZhbHVlIiwiVXRpbHMiLCJpc051bGwiLCJ2YWx1ZVJlZiIsInNlbGVjdE9wdGlvbnMiLCJzZXRTZWxlY3RPcHRpb25zIiwiZGlzYWJsZWQiLCJzZXREaXNhYmxlZCIsInZpc2libGUiLCJzZXRWaXNpYmxlIiwicmVxdWlyZWQiLCJzZXRSZXF1aXJlZCIsIm1pbkRhdGUiLCJzZXRNaW5EYXRlIiwibWF4RGF0ZSIsInNldE1heERhdGUiLCJyZXNldFN3aXRjaCIsInNldFJlc2V0U3dpdGNoIiwidmFsaWRhdGVPbkNoYW5nZSIsImluaXRpYWxWYWx1ZUJvdW5kIiwicmVmIiwidmFsaWQiLCJsYXN0VmFsaWRhdGlvbiIsInVzZUVmZmVjdCIsImN1cnJlbnQiLCJiaW5kIiwiYm91bmRWYWx1ZSIsImZpZWxkVHlwZSIsImlkIiwidmFsdWVQYXJzZXIiLCJmb3JtIiwidmFsaWRhdGVQYXJlbnQiLCJkYXRhQmluZGluZyIsImRvVmFsaWRhdGlvbiIsInZhbHVlcyIsImN1cnJlbnRWYWx1ZSIsIm1hcmtlcnMiLCJhcHBsaWNhdGlvbk1hbmFnZXIiLCJpc0Zvcm1NYXJrZXJzRW5hYmxlZCIsImxhc3QiLCJwYXRoIiwiZ2V0VmFsdWVQYXRoIiwicmVzdWx0IiwidmFsaWRhdG9yIiwic2NyaXB0IiwiZHluYW1pY0pTIiwiZXhlY3V0ZVNjcmlwdE9iamVjdCIsImNvbmNhdCIsIm1lc3NhZ2UiLCJ2YWxpZGF0ZUZpZWxkIiwiZm9yY2VNYXJrZXIiLCJzZXRGaWVsZEVycm9yIiwic2V0RmllbGRWYWxpZGl0eSIsIm9uVmFsaWRpdHlDaGFuZ2UiLCJoYW5kbGUiLCJhcGkiLCJwYXJzZWRDb25maWciLCJwYXJzZUNvbmZpZyIsInZpZXdJZCIsImV2ZW50TWFuYWdlciIsImFkZFN1YnNjcmlwdGlvbnMiLCJldmVudEhhbmRsaW5nQ29uZmlnIiwiYWRkU3lzdGVtU3Vic2NyaXB0aW9ucyIsImV2YWx1YXRlQm9vbGVhbkV4cHJlc3Npb24iLCJldmVudCIsIkV2ZW50IiwiZmlyZUV2ZW50IiwiRXZlbnRUeXBlIiwiQ09NUE9ORU5UX0xPQUQiLCJzY3JpcHRWYWx1ZSIsImlzRXhwcmVzc2lvbiIsImV4ZWN1dGVTY3JpcHQiLCJyZXBsYWNlIiwidmFsIiwiaW5zdGFuY2VUeXBlIiwiaGFuZGxlQ2hhbmdlIiwicHJldmlvdXNseUVuYWJsZWQiLCJlbmFibGVGb3JtTWFya2VycyIsImN2IiwiY3ZGb3JWYWxpZGF0aW9uIiwiZmllbGQiLCJhZGRGaWVsZCIsInBhcmVudElkIiwiYmluZFZhbHVlVG9Gb3JtIiwiZXJyb3IiLCJsZW5ndGgiLCJjbGVhckNvbXBvbmVudEV2ZW50TGlzdGVuZXJzIiwicmVtb3ZlRmllbGQiLCJoYW5kbGVWYWx1ZUNoYW5nZSIsIm5ld1ZhbHVlIiwidmFsdWVDaGFuZ2VkIiwiSlNPTiIsInN0cmluZ2lmeSIsInNwbGljZSIsIm5ld1ZhbHVlRWxlbWVudCIsInB1c2giLCJzZWxlY3RJdGVtQ2hhbmdlIiwiaGFuZGxlU2VsZWN0SXRlbUNoYW5nZSIsInNlbGVjdE9wdGlvbiIsInZhbHVlQ2hhbmdlSGFuZGxlciIsIlZBTFVFX0NIQU5HRSIsInZhbGlkYXRlIiwicGFyc2VWYWx1ZSIsImluYm91bmQiLCJyb3dzIiwicm93c0hhbmRsZXIiLCJnZXRWYWxpZGF0aW9uR3JvdXAiLCJncm91cCIsImNsZWFyIiwiY2xlYXJIYW5kbGVyIiwic2Nyb2xsVG8iLCJzY3JvbGxJbnRvVmlldyIsImJlaGF2aW9yIiwiYmxvY2siLCJ2YWx1ZUNoYW5nZUNhbGxiYWNrIiwiaGFuZGxlTG9hZENvbXBsZXRlIiwicmVmcmVzaCIsInJlcXVpcmVkTmV3VmFsIiwibnVsbGFibGUiLCJpc1JlcXVpcmVkIiwicmVzZXQiLCJzZXRGaWVsZFJlcXVpcmVkIiwibmV3VmFsIiwiYXJndW1lbnRzIiwidW5kZWZpbmVkIiwiZ2V0Q2hpbGRyZW4iLCJsb2FkRGF0YSIsImxvYWREYXRhSGFuZGxlciIsImNyZWF0ZUVsZW1lbnQiLCJjbGFzc05hbWUiLCJrZXkiLCJzdHlsZSIsInRleHRBbGlnbiIsImRpc3BsYXkiLCJnZXRDb21wb25lbnRBdHRyaWJ1dGUiLCJjaGlsZHJlbiIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvZm9ybS9CYXNlRmllbGQuanN4Il0sInNvdXJjZXNDb250ZW50IjpbIu+7v2ltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgVXRpbHMgZnJvbSAnLi4vLi4vVXRpbHMnO1xuaW1wb3J0IGV2ZW50TWFuYWdlciBmcm9tICcuLi8uLi9ldmVudC9PYnNlcnZhYmxlJztcbmltcG9ydCBhcHBsaWNhdGlvbk1hbmFnZXIgZnJvbSAnLi4vLi4vQXBwbGljYXRpb25NYW5hZ2VyJztcbmltcG9ydCBFdmVudCBmcm9tICcuLi8uLi9ldmVudC9FdmVudCc7XG5pbXBvcnQgRXZlbnRUeXBlIGZyb20gJy4uLy4uL2V2ZW50L0V2ZW50VHlwZSc7XG5pbXBvcnQgZHluYW1pY0pTIGZyb20gJy4uLy4uL0R5bmFtaWNKUyc7XG5cbmV4cG9ydCBjb25zdCBCYXNlRmllbGQgPSAocHJvcHMpID0+IHtcbiAgICBjb25zdCBbaGFzRXJyb3IsIHNldEhhc0Vycm9yXSA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBbZXJyb3JNZXNzYWdlLCBzZXRFcnJvck1lc3NhZ2VdID0gUmVhY3QudXNlU3RhdGUoJycpO1xuICAgIGNvbnN0IFt2YWx1ZU9iamVjdCwgc2V0VmFsdWVPYmplY3RdID0gUmVhY3QudXNlU3RhdGUoe30pO1xuICAgIGNvbnN0IFt2YWx1ZVByb3BlcnR5LCBzZXRWYWx1ZVByb3BlcnR5XSA9IFJlYWN0LnVzZVN0YXRlKG51bGwpO1xuICAgIGNvbnN0IGxvYWRpbmdSZWYgPSBSZWFjdC51c2VSZWYodHJ1ZSk7XG4gICAgY29uc3QgW2NvbmZpZywgc2V0Q29uZmlnXSA9IFJlYWN0LnVzZVN0YXRlKG51bGwpO1xuICAgIC8vIFRPRE8gOiBSZXBsYWNlIHRoZSBzdGF0ZSB2YWx1ZSB3aXRoIHRoZSB2YWx1ZVJlZiBiZWxvdy4gVGhlIHN0YXRlIHZhbHVlIGlzIG9jY2F0aW9uYWx5IG5vdCBhdmFpbGFibGUgaW4gdGltZSBmb3IgZXZlbnQgc2NyaXB0c1xuICAgIGNvbnN0IFt2YWx1ZSwgc2V0VmFsdWVdID0gUmVhY3QudXNlU3RhdGUoIVV0aWxzLmlzTnVsbChwcm9wcy52YWx1ZSkgPyBwcm9wcy52YWx1ZSA6IG51bGwpO1xuICAgIC8vIFRPRE8gOiBSZXBsYWNlIHRoZSBzdGF0ZSB2YWx1ZSB3aXRoIHRoaXMgcmVmIGZvciB0aGUgcmVhc29uIG1lbnNpb25lZCBhYm92ZVxuICAgIGNvbnN0IHZhbHVlUmVmID0gUmVhY3QudXNlUmVmKCFVdGlscy5pc051bGwocHJvcHMudmFsdWUpID8gcHJvcHMudmFsdWUgOiBudWxsKTtcbiAgICBjb25zdCBbc2VsZWN0T3B0aW9ucywgc2V0U2VsZWN0T3B0aW9uc10gPSBSZWFjdC51c2VTdGF0ZShbXSk7XG4gICAgY29uc3QgW2Rpc2FibGVkLCBzZXREaXNhYmxlZF0gPSBSZWFjdC51c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgW3Zpc2libGUsIHNldFZpc2libGVdID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IFtyZXF1aXJlZCwgc2V0UmVxdWlyZWRdID0gUmVhY3QudXNlU3RhdGUobnVsbCk7XG4gICAgY29uc3QgW21pbkRhdGUsIHNldE1pbkRhdGVdID0gUmVhY3QudXNlU3RhdGUobnVsbCk7XG4gICAgY29uc3QgW21heERhdGUsIHNldE1heERhdGVdID0gUmVhY3QudXNlU3RhdGUobnVsbCk7XG4gICAgY29uc3QgW3Jlc2V0U3dpdGNoLCBzZXRSZXNldFN3aXRjaF0gPSBSZWFjdC51c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgdmFsaWRhdGVPbkNoYW5nZSA9IFJlYWN0LnVzZVJlZigpO1xuICAgIGNvbnN0IGluaXRpYWxWYWx1ZUJvdW5kID0gUmVhY3QudXNlUmVmKGZhbHNlKTtcbiAgICBjb25zdCByZWYgPSBSZWFjdC51c2VSZWYobnVsbCk7XG4gICAgY29uc3QgdmFsaWQgPSBSZWFjdC51c2VSZWYoZmFsc2UpO1xuICAgIC8vIE1lbW8gb2YgdGhlIGxhc3QgKGN1cnJlbnRWYWx1ZSwgcmVxdWlyZWQsIG1hcmtlcnMpIHR1cGxlICsgaXRzIHJlc3VsdC52YWxpZC5cbiAgICAvLyBkb1ZhbGlkYXRpb24gc2hvcnQtY2lyY3VpdHMgd2hlbiB0aGUgaW5wdXRzIGFyZSB1bmNoYW5nZWQgc28gcmVwZWF0ZWQgcmVhZHNcbiAgICAvLyBvZiBAI3tmb3JtfS52YWx1ZSAod2hpY2ggaXRlcmF0ZXMgZmllbGRzIGFuZCBjYWxscyB2YWxpZGF0ZSBvbiBlYWNoIGluXG4gICAgLy8gRm9ybS5qc3ggZ2V0IHZhbHVlKCkpIGRvbid0IGtlZXAgZmlyaW5nIHNldEVycm9yTWVzc2FnZS9zZXRIYXNFcnJvciBhbmRcbiAgICAvLyByZS1yZW5kZXItbG9vcCB0aGUgd2hvbGUgZm9ybS5cbiAgICBjb25zdCBsYXN0VmFsaWRhdGlvbiA9IFJlYWN0LnVzZVJlZihudWxsKTtcblxuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGluaXRpYWxWYWx1ZUJvdW5kLmN1cnJlbnQgPSBmYWxzZTtcbiAgICAgICAgYmluZCgpO1xuICAgIH0sIFt2YWx1ZU9iamVjdF0pO1xuXG4gICAgZnVuY3Rpb24gYmluZCgpIHtcbiAgICAgICAgbGV0IGJvdW5kVmFsdWUgPSB2YWx1ZU9iamVjdFt2YWx1ZVByb3BlcnR5XTtcbiAgICAgICAgaWYgKGJvdW5kVmFsdWUgJiYgIWluaXRpYWxWYWx1ZUJvdW5kLmN1cnJlbnQpIHtcbiAgICAgICAgICAgIGluaXRpYWxWYWx1ZUJvdW5kLmN1cnJlbnQgPSB0cnVlO1xuICAgICAgICAgICAgaWYgKHByb3BzLmNvbmZpZy5maWVsZFR5cGUgPT09ICdTRUxFQ1QnIHx8IHByb3BzLmNvbmZpZy5maWVsZFR5cGUgPT09ICdMT09LVVAnKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFib3VuZFZhbHVlIHx8IFV0aWxzLmlzTnVsbChib3VuZFZhbHVlLmlkKSkge1xuICAgICAgICAgICAgICAgICAgICBzZXRWYWx1ZShudWxsKTtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWVSZWYuY3VycmVudCA9IG51bGw7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaWYocHJvcHMudmFsdWVQYXJzZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldFZhbHVlKHByb3BzLnZhbHVlUGFyc2VyKGJvdW5kVmFsdWUsIHRydWUpKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldFZhbHVlKGJvdW5kVmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgdmFsdWVSZWYuY3VycmVudCA9IGJvdW5kVmFsdWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZihwcm9wcy52YWx1ZVBhcnNlcikge1xuICAgICAgICAgICAgICAgICAgICBzZXRWYWx1ZShwcm9wcy52YWx1ZVBhcnNlcihib3VuZFZhbHVlLCB0cnVlKSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgc2V0VmFsdWUoYm91bmRWYWx1ZSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdmFsdWVSZWYuY3VycmVudCA9IGJvdW5kVmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBiaW5kKCk7XG4gICAgfSwgW3ZhbHVlT2JqZWN0W3ZhbHVlUHJvcGVydHldXSk7XG5cbiAgICAvLyBDaGFuZ2UgdGhlIHJlcXVpcmVkIHZhbHVlIGFuZCByZS12YWxpZGF0ZSBmaWVsZCBpZiBuZWNlc3NhcnlcbiAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChjb25maWcpICYmIHZhbGlkYXRlT25DaGFuZ2UuY3VycmVudCA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgcHJvcHMuZm9ybSgpXG4gICAgICAgICAgICAgICAgLnZhbGlkYXRlUGFyZW50KGNvbmZpZy5kYXRhQmluZGluZyB8fCBjb25maWcuaWQsIGRvVmFsaWRhdGlvbihwcm9wcy52YWx1ZXMsIHZhbHVlKSk7XG4gICAgICAgIH1cblxuICAgICAgICB2YWxpZGF0ZU9uQ2hhbmdlLmN1cnJlbnQgPSBudWxsO1xuICAgIH0sIFtyZXF1aXJlZF0pO1xuXG4gICAgY29uc3QgZG9WYWxpZGF0aW9uID0gKHZhbHVlcywgY3VycmVudFZhbHVlKSA9PiB7XG4gICAgICAgIGlmKGNvbmZpZykge1xuICAgICAgICAgICAgY29uc3QgbWFya2VycyA9IGFwcGxpY2F0aW9uTWFuYWdlci5pc0Zvcm1NYXJrZXJzRW5hYmxlZCgpO1xuICAgICAgICAgICAgY29uc3QgbGFzdCA9IGxhc3RWYWxpZGF0aW9uLmN1cnJlbnQ7XG4gICAgICAgICAgICBpZiAobGFzdCAhPT0gbnVsbFxuICAgICAgICAgICAgICAgICYmIGxhc3QuY3VycmVudFZhbHVlID09PSBjdXJyZW50VmFsdWVcbiAgICAgICAgICAgICAgICAmJiBsYXN0LnJlcXVpcmVkID09PSByZXF1aXJlZFxuICAgICAgICAgICAgICAgICYmIGxhc3QubWFya2VycyA9PT0gbWFya2Vycykge1xuICAgICAgICAgICAgICAgIHJldHVybiBsYXN0LnZhbGlkO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsZXQgcGF0aCA9IHByb3BzLmZvcm0oKVxuICAgICAgICAgICAgICAgIC5nZXRWYWx1ZVBhdGgoY29uZmlnLmRhdGFCaW5kaW5nIHx8IGNvbmZpZy5pZCk7XG4gICAgICAgICAgICBsZXQgcmVzdWx0ID0ge3ZhbGlkOiB0cnVlfTtcbiAgICAgICAgICAgIGlmICghVXRpbHMuaXNOdWxsKGNvbmZpZy52YWxpZGF0b3IpICYmICFVdGlscy5pc051bGwoY29uZmlnLnZhbGlkYXRvci5zY3JpcHQpKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gZHluYW1pY0pTLmV4ZWN1dGVTY3JpcHRPYmplY3QoYCR7Y29uZmlnLmlkfVZhbGlkYXRvcmAsIGNvbmZpZy52YWxpZGF0b3Iuc2NyaXB0KTtcbiAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdC52YWxpZCkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQubWVzc2FnZSA9IHJlc3VsdC5tZXNzYWdlID8gcmVzdWx0Lm1lc3NhZ2UgOiBjb25maWcudmFsaWRhdG9yLm1lc3NhZ2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAocmVzdWx0LnZhbGlkKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gVXRpbHMudmFsaWRhdGVGaWVsZChwYXRoLnZhbHVlUHJvcGVydHksIHJlcXVpcmVkLFxuICAgICAgICAgICAgICAgICAgICBwYXRoLnZhbHVlT2JqZWN0LCBjdXJyZW50VmFsdWUsIGNvbmZpZy52YWxpZGF0b3IpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBzZXRFcnJvck1lc3NhZ2UobWFya2VycyB8fCByZXN1bHQuZm9yY2VNYXJrZXIgPyByZXN1bHQubWVzc2FnZSA6ICcnKTtcbiAgICAgICAgICAgIHNldEhhc0Vycm9yKCFyZXN1bHQudmFsaWQgJiYgKG1hcmtlcnMgfHwgcmVzdWx0LmZvcmNlTWFya2VyKSk7XG4gICAgICAgICAgICB2YWxpZC5jdXJyZW50ID0gcmVzdWx0LnZhbGlkICYmIChtYXJrZXJzIHx8IHJlc3VsdC5mb3JjZU1hcmtlcik7XG5cbiAgICAgICAgICAgIGlmIChtYXJrZXJzKSB7XG4gICAgICAgICAgICAgICAgcHJvcHMuZm9ybSgpXG4gICAgICAgICAgICAgICAgICAgIC5zZXRGaWVsZEVycm9yKGNvbmZpZy5pZCwgdHlwZW9mIHJlc3VsdC5tZXNzYWdlID09PSAndW5kZWZpbmVkJyA/IG51bGwgOiByZXN1bHQubWVzc2FnZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxhc3RWYWxpZGF0aW9uLmN1cnJlbnQgPSB7IGN1cnJlbnRWYWx1ZSwgcmVxdWlyZWQsIG1hcmtlcnMsIHZhbGlkOiByZXN1bHQudmFsaWQgfTtcblxuICAgICAgICAgICAgLy8gUHVibGlzaCB0byB0aGUgZm9ybSdzIHZhbGlkaXR5IHJlZ2lzdGVyLiBTaW5nbGUgc291cmNlIG9mIHRydXRoXG4gICAgICAgICAgICAvLyBmb3IgXCJpcyB0aGlzIGZpZWxkIHZhbGlkP1wiIOKAlCBmb3JtLnZhbHVlIHJlYWRzIGZyb20gaGVyZSB3aXRob3V0XG4gICAgICAgICAgICAvLyBjYWxsaW5nIGJhY2sgaW50byB0aGUgZmllbGQgKGtpbGxzIHRoZSBiaS1kaXJlY3Rpb25hbCBjaGFpbikuXG4gICAgICAgICAgICBpZiAodHlwZW9mIHByb3BzLmZvcm0gPT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIHByb3BzLmZvcm0oKS5zZXRGaWVsZFZhbGlkaXR5ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgcHJvcHMuZm9ybSgpLnNldEZpZWxkVmFsaWRpdHkoY29uZmlnLmlkIHx8IGNvbmZpZy5kYXRhQmluZGluZywge1xuICAgICAgICAgICAgICAgICAgICB2YWxpZDogcmVzdWx0LnZhbGlkLFxuICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiByZXN1bHQubWVzc2FnZSxcbiAgICAgICAgICAgICAgICAgICAgZm9yY2VNYXJrZXI6IHJlc3VsdC5mb3JjZU1hcmtlcixcbiAgICAgICAgICAgICAgICAgICAgb25WYWxpZGl0eUNoYW5nZTogKHZhbGlkLCBlcnJvck1lc3NhZ2UpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmKGFwcGxpY2F0aW9uTWFuYWdlci5pc0Zvcm1NYXJrZXJzRW5hYmxlZCgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0RXJyb3JNZXNzYWdlKGVycm9yTWVzc2FnZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SGFzRXJyb3IoIXZhbGlkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0LnZhbGlkO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH07XG5cbiAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBwcm9wcy5oYW5kbGUuYXBpID0gYXBpKCk7XG4gICAgfSk7XG5cbiAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBpZiAoVXRpbHMuaXNOdWxsKGNvbmZpZykpIHtcbiAgICAgICAgICAgIGxldCBwYXJzZWRDb25maWcgPSBVdGlscy5wYXJzZUNvbmZpZyhwcm9wcy5jb25maWcsIHByb3BzLnZpZXdJZCk7XG4gICAgICAgICAgICBldmVudE1hbmFnZXIuYWRkU3Vic2NyaXB0aW9ucyhwYXJzZWRDb25maWcuZXZlbnRIYW5kbGluZ0NvbmZpZywgcHJvcHMuaGFuZGxlLCBwcm9wcy52aWV3SWQpO1xuICAgICAgICAgICAgZXZlbnRNYW5hZ2VyLmFkZFN5c3RlbVN1YnNjcmlwdGlvbnMocHJvcHMudmlld0lkLCBwYXJzZWRDb25maWcpO1xuICAgICAgICAgICAgc2V0Q29uZmlnKHBhcnNlZENvbmZpZyk7XG4gICAgICAgICAgICBzZXRWaXNpYmxlKFV0aWxzLmV2YWx1YXRlQm9vbGVhbkV4cHJlc3Npb24ocGFyc2VkQ29uZmlnLnZpc2libGUsIHBhcnNlZENvbmZpZy5pZCwgdHJ1ZSkpO1xuICAgICAgICAgICAgc2V0RGlzYWJsZWQoVXRpbHMuZXZhbHVhdGVCb29sZWFuRXhwcmVzc2lvbihwYXJzZWRDb25maWcuZGlzYWJsZWQsIHBhcnNlZENvbmZpZy5pZCwgZmFsc2UpKTtcblxuICAgICAgICAgICAgbGV0IGV2ZW50ID0gbmV3IEV2ZW50KHByb3BzLmhhbmRsZSwgcHJvcHMudmlld0lkLCBudWxsKTtcbiAgICAgICAgICAgIGV2ZW50TWFuYWdlci5maXJlRXZlbnQoRXZlbnRUeXBlLkNPTVBPTkVOVF9MT0FELCBldmVudCk7XG4gICAgICAgIH1cbiAgICB9LCBbXSk7XG5cbiAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChwcm9wcy52YWx1ZXMpICYmICFVdGlscy5pc051bGwoY29uZmlnKSkge1xuICAgICAgICAgICAgbGV0IHBhdGggPSBwcm9wcy5mb3JtKClcbiAgICAgICAgICAgICAgICAuZ2V0VmFsdWVQYXRoKGNvbmZpZy5kYXRhQmluZGluZyB8fCBjb25maWcuaWQsIHByb3BzLnZhbHVlcyk7XG4gICAgICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChwYXRoLnZhbHVlT2JqZWN0KSkge1xuICAgICAgICAgICAgICAgIHNldFZhbHVlT2JqZWN0KHBhdGgudmFsdWVPYmplY3QpO1xuICAgICAgICAgICAgICAgIHNldFZhbHVlUHJvcGVydHkocGF0aC52YWx1ZVByb3BlcnR5KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwocHJvcHMuY29uZmlnLnZhbHVlKSkge1xuICAgICAgICAgICAgICAgIGxldCBzY3JpcHRWYWx1ZSA9IGFwcGxpY2F0aW9uTWFuYWdlci5pc0V4cHJlc3Npb24ocHJvcHMuY29uZmlnLnZhbHVlKSA/XG4gICAgICAgICAgICAgICAgICAgIGR5bmFtaWNKUy5leGVjdXRlU2NyaXB0KHByb3BzLmNvbmZpZy5pZC5yZXBsYWNlKCcuJywgJ18nKSArICdWYWx1ZScsIHByb3BzLmNvbmZpZy52YWx1ZSkgOlxuICAgICAgICAgICAgICAgICAgICBwcm9wcy5jb25maWcudmFsdWU7XG5cbiAgICAgICAgICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChzY3JpcHRWYWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHZhbCA9IHNjcmlwdFZhbHVlLmluc3RhbmNlVHlwZSA9PT0gJ1R5cGVkVmFsdWUnID8gc2NyaXB0VmFsdWUudmFsdWUgOiBzY3JpcHRWYWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWVPYmplY3RbdmFsdWVQcm9wZXJ0eV0gPSB2YWw7XG4gICAgICAgICAgICAgICAgICAgIHNldFZhbHVlKHZhbCk7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlUmVmLmN1cnJlbnQgPSB2YWw7XG4gICAgICAgICAgICAgICAgICAgIHByb3BzLmZvcm0oKVxuICAgICAgICAgICAgICAgICAgICAgICAgLmhhbmRsZUNoYW5nZShjb25maWcuZGF0YUJpbmRpbmcgfHwgY29uZmlnLmlkLCB2YWwpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gU2VsZi1hbm5vdW5jZTogdmFsaWRhdGUgdGhpcyBmaWVsZCBhZ2FpbnN0IGN1cnJlbnQgZGF0YSBhbmQgcHVzaFxuICAgICAgICAgICAgLy8gdmVyZGljdCB0byB0aGUgZm9ybSdzIHZhbGlkaXR5IHJlZ2lzdGVyIHZpYSBzZXRGaWVsZFZhbGlkaXR5IChpblxuICAgICAgICAgICAgLy8gZG9WYWxpZGF0aW9uKS4gTWFya2VycyBhcmUgc3VwcHJlc3NlZCBsb2NhbGx5IHNvIGluaXRpYWwtbG9hZFxuICAgICAgICAgICAgLy8gdmFsaWRhdGlvbiBuZXZlciBmbGFzaGVzIGVycm9yIFVJIOKAlCBldmVuIGlmIGdsb2JhbCBtYXJrZXJzIGFyZVxuICAgICAgICAgICAgLy8gYWxyZWFkeSBvbiAoZS5nLiBhc3luYyBkYXRhIGFycml2aW5nIGFmdGVyIEZvcm0ncyBDT01QT05FTlRfTE9BRFxuICAgICAgICAgICAgLy8gYWxyZWFkeSByZS1lbmFibGVkIG1hcmtlcnMpLiBDYWNoZSBtYWtlcyByZXBlYXQgc2VsZi1cbiAgICAgICAgICAgIC8vIGFubm91bmNlbWVudHMgY2hlYXAgd2hlbiAoY3VycmVudFZhbHVlLCByZXF1aXJlZCwgbWFya2VycylcbiAgICAgICAgICAgIC8vIHR1cGxlIGlzIHVuY2hhbmdlZC5cbiAgICAgICAgICAgIGNvbnN0IHByZXZpb3VzbHlFbmFibGVkID0gYXBwbGljYXRpb25NYW5hZ2VyLmlzRm9ybU1hcmtlcnNFbmFibGVkKCk7XG4gICAgICAgICAgICBpZiAocHJldmlvdXNseUVuYWJsZWQpIHtcbiAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbk1hbmFnZXIuZW5hYmxlRm9ybU1hcmtlcnMoZmFsc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBjb25zdCBjdiA9ICFVdGlscy5pc051bGwocGF0aCkgJiYgIVV0aWxzLmlzTnVsbChwYXRoLnZhbHVlT2JqZWN0KVxuICAgICAgICAgICAgICAgICAgICA/IHBhdGgudmFsdWVPYmplY3RbcGF0aC52YWx1ZVByb3BlcnR5XVxuICAgICAgICAgICAgICAgICAgICA6IG51bGw7XG4gICAgICAgICAgICAgICAgLy8gUnVuIGluYm91bmQgdmFsdWVQYXJzZXIgc28gZmllbGRzIHdob3NlIHBhcnNlciBzeW50aGVzaXNlc1xuICAgICAgICAgICAgICAgIC8vIGEgZGVmYXVsdCBmb3IgbnVsbCBpbnB1dCAoZS5nLiBSYWRpb0dyb3VwIOKGkiBkZWZhdWx0VmFsdWUpXG4gICAgICAgICAgICAgICAgLy8gYXJlIHZhbGlkYXRlZCBhZ2FpbnN0IHRoZWlyIHNlbWFudGljIHZhbHVlLCBub3QgdGhlIHJhd1xuICAgICAgICAgICAgICAgIC8vIG1vZGVsLiBiaW5kKCkgZG9lcyB0aGUgc2FtZSBmb3Igbm9uLW51bGwgbW9kZWwgdmFsdWVzLlxuICAgICAgICAgICAgICAgIGNvbnN0IGN2Rm9yVmFsaWRhdGlvbiA9ICFVdGlscy5pc051bGwocHJvcHMudmFsdWVQYXJzZXIpXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHMudmFsdWVQYXJzZXIoY3YsIHRydWUpXG4gICAgICAgICAgICAgICAgICAgIDogY3Y7XG4gICAgICAgICAgICAgICAgZG9WYWxpZGF0aW9uKHByb3BzLnZhbHVlcywgY3ZGb3JWYWxpZGF0aW9uKTtcbiAgICAgICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICAgICAgaWYgKHByZXZpb3VzbHlFbmFibGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uTWFuYWdlci5lbmFibGVGb3JtTWFya2Vycyh0cnVlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LCBbcHJvcHMudmFsdWVzLCBjb25maWddKTtcblxuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmIChsb2FkaW5nUmVmLmN1cnJlbnQgPT09IHRydWUgJiYgIVV0aWxzLmlzTnVsbChjb25maWcpKSB7XG4gICAgICAgICAgICBsZXQgZmllbGQgPSBwcm9wcy5mb3JtKClcbiAgICAgICAgICAgICAgICAuYWRkRmllbGQoY29uZmlnLmlkIHx8IGNvbmZpZy5kYXRhQmluZGluZywgcHJvcHMuaGFuZGxlLCBwcm9wcy5wYXJlbnRJZCwgcHJvcHMuYmluZFZhbHVlVG9Gb3JtKTtcbiAgICAgICAgICAgIGlmICghVXRpbHMuaXNOdWxsKGZpZWxkKSAmJiAhVXRpbHMuaXNOdWxsKGZpZWxkLmVycm9yKSkge1xuICAgICAgICAgICAgICAgIGlmIChmaWVsZC5lcnJvci5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHNldEhhc0Vycm9yKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICBzZXRFcnJvck1lc3NhZ2UoZmllbGQuZXJyb3IpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIEludGVudGlvbmFsbHkgZG8gTk9UIHZhbGlkYXRlIG9uIG1vdW50OiB2YWx1ZVJlZi5jdXJyZW50IGlzIG5vdFxuICAgICAgICAgICAgLy8geWV0IGJvdW5kIGZyb20gdGhlIGZvcm0ncyBtYXN0ZXIgZGF0YSBhdCB0aGlzIHBvaW50IOKAlCBiaW5kKClcbiAgICAgICAgICAgIC8vIHJ1bnMgaW4gYSBsYXRlciByZW5kZXIgY3ljbGUgdmlhIHRoZSBbdmFsdWVPYmplY3RdIHVzZUVmZmVjdC5cbiAgICAgICAgICAgIC8vIFZhbGlkYXRpbmcgaGVyZSB3b3VsZCBtYXJrIGV2ZXJ5IGZpZWxkLXdpdGgtbWFzdGVyLXZhbHVlIGFzXG4gICAgICAgICAgICAvLyBpbnZhbGlkIChjdXJyZW50VmFsdWU9bnVsbCksIHBlcm1hbmVudGx5IGZsaXBwaW5nIGZvcm0udmFsdWUgdG9cbiAgICAgICAgICAgIC8vIG51bGwuIFJlZ2lzdGVyIHN0YXlzIGVtcHR5IGZvciB0aGlzIGZpZWxkIHVudGlsIGVpdGhlciB1c2VyXG4gICAgICAgICAgICAvLyBpbnRlcmFjdGlvbiAoaGFuZGxlQ2hhbmdlIOKGkiB2YWxpZGF0ZUZpZWxkIOKGkiBkb1ZhbGlkYXRpb24g4oaSXG4gICAgICAgICAgICAvLyBzZXRGaWVsZFZhbGlkaXR5KSBvciBhbiBleHBsaWNpdCBmb3JtLmFwaS52YWxpZGF0ZUFsbCgpIHJ1bnMuXG4gICAgICAgICAgICAvLyBmb3JtLnZhbHVlIHRyZWF0cyBlbXB0eS1yZWdpc3RlciBhcyBcIm9wdGltaXN0aWNhbGx5IHZhbGlkXCIg4oCUIHNvXG4gICAgICAgICAgICAvLyBhbnkgc2F2ZSBmbG93IE1VU1QgY2FsbCBmb3JtLmFwaS52YWxpZGF0ZUFsbCgpIGJlZm9yZSByZWFkaW5nXG4gICAgICAgICAgICAvLyBmb3JtLnZhbHVlLCBvciBpbnZhbGlkIGRhdGEgd2lsbCBwYXNzIHRocm91Z2ggc2lsZW50bHkuXG4gICAgICAgICAgICBsb2FkaW5nUmVmLmN1cnJlbnQgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgIGlmICghVXRpbHMuaXNOdWxsKHByb3BzLmZvcm0oKSkpIHtcbiAgICAgICAgICAgICAgICBldmVudE1hbmFnZXIuY2xlYXJDb21wb25lbnRFdmVudExpc3RlbmVycyhwcm9wcy5oYW5kbGUpO1xuICAgICAgICAgICAgICAgIHByb3BzLmZvcm0oKVxuICAgICAgICAgICAgICAgICAgICAucmVtb3ZlRmllbGQocHJvcHMuY29uZmlnLmRhdGFCaW5kaW5nIHx8IHByb3BzLmNvbmZpZy5pZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfSwgW10pO1xuXG4gICAgY29uc3QgaGFuZGxlVmFsdWVDaGFuZ2UgPSAobmV3VmFsdWUpID0+IHtcbiAgICAgICAgaW5pdGlhbFZhbHVlQm91bmQuY3VycmVudCA9IHRydWU7XG4gICAgICAgIGxldCB2YWx1ZUNoYW5nZWQgPSBuZXdWYWx1ZSAhPT0gdmFsdWVSZWYuY3VycmVudDtcblxuICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChuZXdWYWx1ZSkgJiYgIVV0aWxzLmlzTnVsbCh2YWx1ZVJlZi5jdXJyZW50KSkge1xuICAgICAgICAgICAgaWYgKHByb3BzLmNvbmZpZy5maWVsZFR5cGUgPT09ICdTRUxFQ1QnIHx8IHByb3BzLmNvbmZpZy5maWVsZFR5cGUgPT09ICdMT09LVVAnKSB7XG4gICAgICAgICAgICAgICAgdmFsdWVDaGFuZ2VkID0gbmV3VmFsdWUuaWQgIT09IHZhbHVlUmVmLmN1cnJlbnQuaWQ7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHByb3BzLmNvbmZpZy5maWVsZFR5cGUgPT09ICdEQVRFJyB8fCBwcm9wcy5jb25maWcuZmllbGRUeXBlID09PSAnVElNRScpIHtcbiAgICAgICAgICAgICAgICB2YWx1ZUNoYW5nZWQgPSBuZXdWYWx1ZSAhPT0gdmFsdWVSZWYuY3VycmVudDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdmFsdWVDaGFuZ2VkID0gSlNPTi5zdHJpbmdpZnkodmFsdWVSZWYuY3VycmVudCkgIT09IEpTT04uc3RyaW5naWZ5KG5ld1ZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwcm9wcy5jb25maWcuZmllbGRUeXBlID09PSAnR1JJRCcgJiYgdmFsdWVPYmplY3RbdmFsdWVQcm9wZXJ0eV0pIHtcbiAgICAgICAgICAgIHZhbHVlT2JqZWN0W3ZhbHVlUHJvcGVydHldLnNwbGljZSgwLCB2YWx1ZU9iamVjdFt2YWx1ZVByb3BlcnR5XS5sZW5ndGgpO1xuXG4gICAgICAgICAgICBpZiAobmV3VmFsdWUpIHtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IG5ld1ZhbHVlRWxlbWVudCBvZiBuZXdWYWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZU9iamVjdFt2YWx1ZVByb3BlcnR5XS5wdXNoKG5ld1ZhbHVlRWxlbWVudCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsZXQgaWQgPSBwcm9wcy5jb25maWcuZGF0YUJpbmRpbmcgPyBwcm9wcy5jb25maWcuZGF0YUJpbmRpbmcgOiBwcm9wcy5jb25maWcuaWQ7XG4gICAgICAgICAgICBwcm9wcy5mb3JtKClcbiAgICAgICAgICAgICAgICAuaGFuZGxlQ2hhbmdlKCFVdGlscy5pc051bGwocHJvcHMuY29uZmlnLmRhdGFCaW5kaW5nKSA/IHByb3BzLmNvbmZpZy5kYXRhQmluZGluZyA6IGlkLCBuZXdWYWx1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodmFsdWVDaGFuZ2VkKSB7XG4gICAgICAgICAgICBsZXQgaWQgPSBwcm9wcy5jb25maWcuZGF0YUJpbmRpbmcgPyBwcm9wcy5jb25maWcuZGF0YUJpbmRpbmcgOiBwcm9wcy5jb25maWcuaWQ7XG4gICAgICAgICAgICAvL2FwcGxpY2F0aW9uTWFuYWdlci5lbmFibGVGb3JtTWFya2Vycyh0cnVlKTtcbiAgICAgICAgICAgIGlmIChwcm9wcy5jb25maWcuZmllbGRUeXBlID09PSAnU0VMRUNUJykge1xuICAgICAgICAgICAgICAgIGxldCBzZWxlY3RJdGVtQ2hhbmdlID0gcHJvcHMuZm9ybSgpXG4gICAgICAgICAgICAgICAgICAgIC5oYW5kbGVTZWxlY3RJdGVtQ2hhbmdlKGlkLCBzZWxlY3RPcHRpb25zLCBuZXdWYWx1ZSk7XG4gICAgICAgICAgICAgICAgc2V0VmFsdWUoc2VsZWN0SXRlbUNoYW5nZSk7XG4gICAgICAgICAgICAgICAgdmFsdWVSZWYuY3VycmVudCA9IHNlbGVjdEl0ZW1DaGFuZ2U7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBzZWxlY3RPcHRpb24gb2Ygc2VsZWN0T3B0aW9ucykge1xuICAgICAgICAgICAgICAgICAgICBpZiAoc2VsZWN0T3B0aW9uLmlkID09PSBuZXdWYWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmV3VmFsdWUgPSBzZWxlY3RPcHRpb247XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc2V0VmFsdWUobmV3VmFsdWUpO1xuICAgICAgICAgICAgICAgIHZhbHVlUmVmLmN1cnJlbnQgPSBuZXdWYWx1ZTtcbiAgICAgICAgICAgICAgICBwcm9wcy5mb3JtKClcbiAgICAgICAgICAgICAgICAgICAgLmhhbmRsZUNoYW5nZSghVXRpbHMuaXNOdWxsKHByb3BzLmNvbmZpZy5kYXRhQmluZGluZykgPyBwcm9wcy5jb25maWcuZGF0YUJpbmRpbmcgOiBpZCwgbmV3VmFsdWUpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChwcm9wcy52YWx1ZUNoYW5nZUhhbmRsZXIpKSB7XG4gICAgICAgICAgICAgICAgcHJvcHMudmFsdWVDaGFuZ2VIYW5kbGVyKG5ld1ZhbHVlKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGV0IGV2ZW50ID0gbmV3IEV2ZW50KHByb3BzLmhhbmRsZSwgcHJvcHMudmlld0lkLCBuZXdWYWx1ZSk7XG4gICAgICAgICAgICBldmVudE1hbmFnZXIuZmlyZUV2ZW50KEV2ZW50VHlwZS5WQUxVRV9DSEFOR0UsIGV2ZW50KTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBjb25zdCBhcGkgPSAoKSA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB2YWxpZGF0ZTogKHZhbHVlcywgY3VycmVudFZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRvVmFsaWRhdGlvbih2YWx1ZXMsIGN1cnJlbnRWYWx1ZSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcGFyc2VWYWx1ZTogKHZhbHVlLCBpbmJvdW5kKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwocHJvcHMudmFsdWVQYXJzZXIpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBwcm9wcy52YWx1ZVBhcnNlcih2YWx1ZSwgaW5ib3VuZCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGdldCB2YWxpZCgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsaWQuY3VycmVudDtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXQgaWQoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHByb3BzLmNvbmZpZy5pZDtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXQgcm93cygpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcHJvcHMucm93c0hhbmRsZXIgPyBwcm9wcy5yb3dzSGFuZGxlcigpIDogbnVsbDtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXRWYWxpZGF0aW9uR3JvdXA6ICgpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gIVV0aWxzLmlzTnVsbChjb25maWcudmFsaWRhdG9yKSA/IGNvbmZpZy52YWxpZGF0b3IuZ3JvdXAgOiBudWxsO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNsZWFyOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgaGFuZGxlVmFsdWVDaGFuZ2UobnVsbCk7XG4gICAgICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwocHJvcHMuY2xlYXJIYW5kbGVyKSkge1xuICAgICAgICAgICAgICAgICAgICBwcm9wcy5jbGVhckhhbmRsZXIoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2Nyb2xsVG86ICgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAocmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVmLmN1cnJlbnQuc2Nyb2xsSW50b1ZpZXcoe1xuICAgICAgICAgICAgICAgICAgICAgICAgYmVoYXZpb3I6IFwic21vb3RoXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBibG9jazogXCJjZW50ZXJcIlxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZ2V0IHZhbHVlKCkge1xuICAgICAgICAgICAgICAgIGlmICghVXRpbHMuaXNOdWxsKHZhbHVlT2JqZWN0KSAmJiAhVXRpbHMuaXNOdWxsKHZhbHVlUHJvcGVydHkpICYmICFVdGlscy5pc051bGwodmFsdWVPYmplY3RbdmFsdWVQcm9wZXJ0eV0pKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAhVXRpbHMuaXNOdWxsKHByb3BzLnZhbHVlUGFyc2VyKSA/XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wcy52YWx1ZVBhcnNlcih2YWx1ZU9iamVjdFt2YWx1ZVByb3BlcnR5XSwgZmFsc2UpIDogdmFsdWVPYmplY3RbdmFsdWVQcm9wZXJ0eV07XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZU9iamVjdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVPYmplY3RbdmFsdWVQcm9wZXJ0eV0gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBwcm9wcy52YWx1ZVBhcnNlciA/IHByb3BzLnZhbHVlUGFyc2VyKHZhbHVlLCBmYWxzZSkgOiB2YWx1ZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzZXQgdmFsdWUodmFsKSB7XG4gICAgICAgICAgICAgICAgaGFuZGxlVmFsdWVDaGFuZ2UodmFsKTtcblxuICAgICAgICAgICAgICAgIGlmICghVXRpbHMuaXNOdWxsKHByb3BzLnZhbHVlQ2hhbmdlQ2FsbGJhY2spKSB7XG4gICAgICAgICAgICAgICAgICAgIHByb3BzLnZhbHVlQ2hhbmdlQ2FsbGJhY2sodmFsKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2V0IGRpc2FibGVkKGRpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgc2V0RGlzYWJsZWQoZGlzYWJsZWQpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNldCB2aXNpYmxlKHZpc2libGUpIHtcbiAgICAgICAgICAgICAgICBzZXRWaXNpYmxlKHZpc2libGUpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGhhbmRsZUxvYWRDb21wbGV0ZSgpIHtcbiAgICAgICAgICAgICAgICBsb2FkaW5nUmVmLmN1cnJlbnQgPSBmYWxzZTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICByZWZyZXNoKCkge1xuICAgICAgICAgICAgICAgIGxldCBwYXJzZWRDb25maWcgPSBVdGlscy5wYXJzZUNvbmZpZyhwcm9wcy5jb25maWcsIHByb3BzLnZpZXdJZCk7XG4gICAgICAgICAgICAgICAgc2V0VmlzaWJsZShVdGlscy5ldmFsdWF0ZUJvb2xlYW5FeHByZXNzaW9uKHBhcnNlZENvbmZpZy52aXNpYmxlLCBwYXJzZWRDb25maWcuaWQsIHRydWUpKTtcbiAgICAgICAgICAgICAgICBzZXREaXNhYmxlZChVdGlscy5ldmFsdWF0ZUJvb2xlYW5FeHByZXNzaW9uKHBhcnNlZENvbmZpZy5kaXNhYmxlZCwgcGFyc2VkQ29uZmlnLmlkKSk7XG4gICAgICAgICAgICAgICAgbGV0IHJlcXVpcmVkTmV3VmFsID0gIVV0aWxzLmlzTnVsbChwYXJzZWRDb25maWcudmFsaWRhdG9yKSA/XG4gICAgICAgICAgICAgICAgICAgICFVdGlscy5ldmFsdWF0ZUJvb2xlYW5FeHByZXNzaW9uKHBhcnNlZENvbmZpZy52YWxpZGF0b3IubnVsbGFibGUsIHBhcnNlZENvbmZpZy5pZCwgdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgfHwgVXRpbHMuZXZhbHVhdGVCb29sZWFuRXhwcmVzc2lvbihwYXJzZWRDb25maWcudmFsaWRhdG9yLnJlcXVpcmVkLCBwYXJzZWRDb25maWcuaWQsIGZhbHNlKSA6IGZhbHNlO1xuICAgICAgICAgICAgICAgIHZhbGlkYXRlT25DaGFuZ2UuY3VycmVudCA9IHJlcXVpcmVkICE9PSBudWxsICYmIHJlcXVpcmVkICE9PSByZXF1aXJlZE5ld1ZhbCAmJiBsb2FkaW5nUmVmLmN1cnJlbnQgPT09IGZhbHNlO1xuICAgICAgICAgICAgICAgIHNldFJlcXVpcmVkKHJlcXVpcmVkTmV3VmFsKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXQgcmVxdWlyZWQoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlcXVpcmVkO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNldCByZXF1aXJlZChpc1JlcXVpcmVkKSB7XG4gICAgICAgICAgICAgICAgc2V0UmVxdWlyZWQoaXNSZXF1aXJlZCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2V0IG1pbkRhdGUobWluRGF0ZSkge1xuICAgICAgICAgICAgICAgIHNldE1pbkRhdGUobWluRGF0ZSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2V0IG1heERhdGUobWF4RGF0ZSkge1xuICAgICAgICAgICAgICAgIHNldE1heERhdGUobWF4RGF0ZSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2V0IHNlbGVjdE9wdGlvbnMoc2VsZWN0T3B0aW9ucykge1xuICAgICAgICAgICAgICAgIHNldFNlbGVjdE9wdGlvbnMoc2VsZWN0T3B0aW9ucyk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcmVzZXQoKSB7XG4gICAgICAgICAgICAgICAgc2V0UmVzZXRTd2l0Y2goIXJlc2V0U3dpdGNoKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzZXRGaWVsZFJlcXVpcmVkKG5ld1ZhbCwgdmFsaWRhdGUgPSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgdmFsaWRhdGVPbkNoYW5nZS5jdXJyZW50ID0gdmFsaWRhdGU7XG4gICAgICAgICAgICAgICAgc2V0UmVxdWlyZWQobmV3VmFsKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXRDaGlsZHJlbjogKCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghVXRpbHMuaXNOdWxsKHByb3BzLmdldENoaWxkcmVuKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcHJvcHMuZ2V0Q2hpbGRyZW4oKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbG9hZERhdGEoKSB7XG4gICAgICAgICAgICAgICAgaWYgKHByb3BzLmxvYWREYXRhSGFuZGxlcikge1xuICAgICAgICAgICAgICAgICAgICBwcm9wcy5sb2FkRGF0YUhhbmRsZXIoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfTtcblxuICAgIHJldHVybiBjb25maWcgP1xuICAgICAgICA8ZGl2IHJlZj17cmVmfSBjbGFzc05hbWU9XCJjb2wtKi0qXCIga2V5PXtjb25maWcuaWR9IHN0eWxlPXt7XG4gICAgICAgICAgICB0ZXh0QWxpZ246ICdsZWZ0JyxcbiAgICAgICAgICAgIGRpc3BsYXk6ICF2aXNpYmxlIHx8IFV0aWxzLmdldENvbXBvbmVudEF0dHJpYnV0ZShjb25maWcsICdoaWRkZW4nLCBmYWxzZSkgPT09IHRydWUgPyAnbm9uZScgOiAnYmxvY2snXG4gICAgICAgIH19PlxuICAgICAgICA8c3Bhbj5cbiAgICAgICAge3Byb3BzLmNoaWxkcmVuKHtcbiAgICAgICAgICAgIG1pbkRhdGU6IG1pbkRhdGUsXG4gICAgICAgICAgICBtYXhEYXRlOiBtYXhEYXRlLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHJlcXVpcmVkLFxuICAgICAgICAgICAgZGlzYWJsZWQ6IGRpc2FibGVkLFxuICAgICAgICAgICAgdmFsdWVPYmplY3Q6IHZhbHVlT2JqZWN0LFxuICAgICAgICAgICAgdmFsdWVQcm9wZXJ0eTogdmFsdWVQcm9wZXJ0eSxcbiAgICAgICAgICAgIGhhbmRsZVZhbHVlQ2hhbmdlOiBoYW5kbGVWYWx1ZUNoYW5nZSxcbiAgICAgICAgICAgIHNldFZhbHVlOiBzZXRWYWx1ZSxcbiAgICAgICAgICAgIHNldFNlbGVjdE9wdGlvbnM6IHNldFNlbGVjdE9wdGlvbnMsXG4gICAgICAgICAgICBzZWxlY3RPcHRpb25zOiBzZWxlY3RPcHRpb25zLFxuICAgICAgICAgICAgc2V0UmVzZXRTd2l0Y2g6IHNldFJlc2V0U3dpdGNoLFxuICAgICAgICAgICAgcmVzZXRTd2l0Y2g6IHJlc2V0U3dpdGNoLFxuICAgICAgICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgICAgICAgaGFzRXJyb3I6IGhhc0Vycm9yLFxuICAgICAgICAgICAgZG9WYWxpZGF0aW9uOiBkb1ZhbGlkYXRpb24sXG4gICAgICAgICAgICBlcnJvck1lc3NhZ2U6IGVycm9yTWVzc2FnZSxcbiAgICAgICAgICAgIGxvYWRpbmdSZWY6IGxvYWRpbmdSZWZcbiAgICAgICAgfSl9XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDogbnVsbDtcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFDLElBQUFBLE1BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNELElBQUFDLE1BQUEsR0FBQUYsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFFLFdBQUEsR0FBQUgsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFHLG1CQUFBLEdBQUFKLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBSSxNQUFBLEdBQUFMLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBSyxVQUFBLEdBQUFOLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBTSxVQUFBLEdBQUFQLHNCQUFBLENBQUFDLE9BQUE7QUFBd0MsU0FBQUQsdUJBQUFRLENBQUEsV0FBQUEsQ0FBQSxJQUFBQSxDQUFBLENBQUFDLFVBQUEsR0FBQUQsQ0FBQSxLQUFBRSxPQUFBLEVBQUFGLENBQUE7QUFFakMsTUFBTUcsU0FBUyxHQUFJQyxLQUFLLElBQUs7RUFD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
|
|
414
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9VdGlscyIsIl9PYnNlcnZhYmxlIiwiX0FwcGxpY2F0aW9uTWFuYWdlciIsIl9FdmVudCIsIl9FdmVudFR5cGUiLCJfRHluYW1pY0pTIiwiZSIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiQmFzZUZpZWxkIiwicHJvcHMiLCJoYXNFcnJvciIsInNldEhhc0Vycm9yIiwiUmVhY3QiLCJ1c2VTdGF0ZSIsImVycm9yTWVzc2FnZSIsInNldEVycm9yTWVzc2FnZSIsInZhbHVlT2JqZWN0Iiwic2V0VmFsdWVPYmplY3QiLCJ2YWx1ZVByb3BlcnR5Iiwic2V0VmFsdWVQcm9wZXJ0eSIsImxvYWRpbmdSZWYiLCJ1c2VSZWYiLCJjb25maWciLCJzZXRDb25maWciLCJ2YWx1ZSIsInNldFZhbHVlIiwiVXRpbHMiLCJpc051bGwiLCJ2YWx1ZVJlZiIsInNlbGVjdE9wdGlvbnMiLCJzZXRTZWxlY3RPcHRpb25zIiwiZGlzYWJsZWQiLCJzZXREaXNhYmxlZCIsInZpc2libGUiLCJzZXRWaXNpYmxlIiwicmVxdWlyZWQiLCJzZXRSZXF1aXJlZCIsIm1pbkRhdGUiLCJzZXRNaW5EYXRlIiwibWF4RGF0ZSIsInNldE1heERhdGUiLCJyZXNldFN3aXRjaCIsInNldFJlc2V0U3dpdGNoIiwidmFsaWRhdGVPbkNoYW5nZSIsImluaXRpYWxWYWx1ZUJvdW5kIiwicmVmIiwidmFsaWQiLCJsYXN0VmFsaWRhdGlvbiIsInVzZUVmZmVjdCIsImN1cnJlbnQiLCJiaW5kIiwiYm91bmRWYWx1ZSIsImZpZWxkVHlwZSIsImlkIiwidmFsdWVQYXJzZXIiLCJmb3JtIiwidmFsaWRhdGVQYXJlbnQiLCJkYXRhQmluZGluZyIsImRvVmFsaWRhdGlvbiIsInZhbHVlcyIsImN1cnJlbnRWYWx1ZSIsIm1hcmtlcnMiLCJhcHBsaWNhdGlvbk1hbmFnZXIiLCJpc0Zvcm1NYXJrZXJzRW5hYmxlZCIsImxhc3QiLCJwYXRoIiwiZ2V0VmFsdWVQYXRoIiwicmVzdWx0IiwidmFsaWRhdG9yIiwic2NyaXB0IiwiZHluYW1pY0pTIiwiZXhlY3V0ZVNjcmlwdE9iamVjdCIsImNvbmNhdCIsIm1lc3NhZ2UiLCJ2YWxpZGF0ZUZpZWxkIiwiZm9yY2VNYXJrZXIiLCJzZXRGaWVsZEVycm9yIiwic2V0RmllbGRWYWxpZGl0eSIsIm9uVmFsaWRpdHlDaGFuZ2UiLCJoYW5kbGUiLCJhcGkiLCJwYXJzZWRDb25maWciLCJwYXJzZUNvbmZpZyIsInZpZXdJZCIsImV2ZW50TWFuYWdlciIsImFkZFN1YnNjcmlwdGlvbnMiLCJldmVudEhhbmRsaW5nQ29uZmlnIiwiYWRkU3lzdGVtU3Vic2NyaXB0aW9ucyIsImV2YWx1YXRlQm9vbGVhbkV4cHJlc3Npb24iLCJldmVudCIsIkV2ZW50IiwiZmlyZUV2ZW50IiwiRXZlbnRUeXBlIiwiQ09NUE9ORU5UX0xPQUQiLCJzY3JpcHRWYWx1ZSIsImlzRXhwcmVzc2lvbiIsImV4ZWN1dGVTY3JpcHQiLCJyZXBsYWNlIiwidmFsIiwiaW5zdGFuY2VUeXBlIiwiaGFuZGxlQ2hhbmdlIiwicHJldmlvdXNseUVuYWJsZWQiLCJlbmFibGVGb3JtTWFya2VycyIsImN2IiwiY3ZGb3JWYWxpZGF0aW9uIiwiZmllbGQiLCJhZGRGaWVsZCIsInBhcmVudElkIiwiYmluZFZhbHVlVG9Gb3JtIiwiZXJyb3IiLCJsZW5ndGgiLCJjbGVhckNvbXBvbmVudEV2ZW50TGlzdGVuZXJzIiwicmVtb3ZlRmllbGQiLCJoYW5kbGVWYWx1ZUNoYW5nZSIsIm5ld1ZhbHVlIiwidmFsdWVDaGFuZ2VkIiwiSlNPTiIsInN0cmluZ2lmeSIsInNwbGljZSIsIm5ld1ZhbHVlRWxlbWVudCIsInB1c2giLCJzZWxlY3RJdGVtQ2hhbmdlIiwiaGFuZGxlU2VsZWN0SXRlbUNoYW5nZSIsInNlbGVjdE9wdGlvbiIsInZhbHVlQ2hhbmdlSGFuZGxlciIsIlZBTFVFX0NIQU5HRSIsInZhbGlkYXRlIiwicGFyc2VWYWx1ZSIsImluYm91bmQiLCJyb3dzIiwicm93c0hhbmRsZXIiLCJnZXRWYWxpZGF0aW9uR3JvdXAiLCJncm91cCIsImNsZWFyIiwiY2xlYXJIYW5kbGVyIiwic2Nyb2xsVG8iLCJzY3JvbGxJbnRvVmlldyIsImJlaGF2aW9yIiwiYmxvY2siLCJ2YWx1ZUNoYW5nZUNhbGxiYWNrIiwiaGFuZGxlTG9hZENvbXBsZXRlIiwicmVmcmVzaCIsInJlcXVpcmVkTmV3VmFsIiwibnVsbGFibGUiLCJpc1JlcXVpcmVkIiwicmVzZXQiLCJzZXRGaWVsZFJlcXVpcmVkIiwibmV3VmFsIiwiYXJndW1lbnRzIiwidW5kZWZpbmVkIiwiZ2V0Q2hpbGRyZW4iLCJsb2FkRGF0YSIsImxvYWREYXRhSGFuZGxlciIsImNyZWF0ZUVsZW1lbnQiLCJjbGFzc05hbWUiLCJrZXkiLCJzdHlsZSIsInRleHRBbGlnbiIsImRpc3BsYXkiLCJnZXRDb21wb25lbnRBdHRyaWJ1dGUiLCJjaGlsZHJlbiIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL2NvbXBvbmVudHMvZm9ybS9CYXNlRmllbGQuanN4Il0sInNvdXJjZXNDb250ZW50IjpbIu+7v2ltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgVXRpbHMgZnJvbSAnLi4vLi4vVXRpbHMnO1xuaW1wb3J0IGV2ZW50TWFuYWdlciBmcm9tICcuLi8uLi9ldmVudC9PYnNlcnZhYmxlJztcbmltcG9ydCBhcHBsaWNhdGlvbk1hbmFnZXIgZnJvbSAnLi4vLi4vQXBwbGljYXRpb25NYW5hZ2VyJztcbmltcG9ydCBFdmVudCBmcm9tICcuLi8uLi9ldmVudC9FdmVudCc7XG5pbXBvcnQgRXZlbnRUeXBlIGZyb20gJy4uLy4uL2V2ZW50L0V2ZW50VHlwZSc7XG5pbXBvcnQgZHluYW1pY0pTIGZyb20gJy4uLy4uL0R5bmFtaWNKUyc7XG5cbmV4cG9ydCBjb25zdCBCYXNlRmllbGQgPSAocHJvcHMpID0+IHtcbiAgICBjb25zdCBbaGFzRXJyb3IsIHNldEhhc0Vycm9yXSA9IFJlYWN0LnVzZVN0YXRlKGZhbHNlKTtcbiAgICBjb25zdCBbZXJyb3JNZXNzYWdlLCBzZXRFcnJvck1lc3NhZ2VdID0gUmVhY3QudXNlU3RhdGUoJycpO1xuICAgIGNvbnN0IFt2YWx1ZU9iamVjdCwgc2V0VmFsdWVPYmplY3RdID0gUmVhY3QudXNlU3RhdGUoe30pO1xuICAgIGNvbnN0IFt2YWx1ZVByb3BlcnR5LCBzZXRWYWx1ZVByb3BlcnR5XSA9IFJlYWN0LnVzZVN0YXRlKG51bGwpO1xuICAgIGNvbnN0IGxvYWRpbmdSZWYgPSBSZWFjdC51c2VSZWYodHJ1ZSk7XG4gICAgY29uc3QgW2NvbmZpZywgc2V0Q29uZmlnXSA9IFJlYWN0LnVzZVN0YXRlKG51bGwpO1xuICAgIC8vIFRPRE8gOiBSZXBsYWNlIHRoZSBzdGF0ZSB2YWx1ZSB3aXRoIHRoZSB2YWx1ZVJlZiBiZWxvdy4gVGhlIHN0YXRlIHZhbHVlIGlzIG9jY2F0aW9uYWx5IG5vdCBhdmFpbGFibGUgaW4gdGltZSBmb3IgZXZlbnQgc2NyaXB0c1xuICAgIGNvbnN0IFt2YWx1ZSwgc2V0VmFsdWVdID0gUmVhY3QudXNlU3RhdGUoIVV0aWxzLmlzTnVsbChwcm9wcy52YWx1ZSkgPyBwcm9wcy52YWx1ZSA6IG51bGwpO1xuICAgIC8vIFRPRE8gOiBSZXBsYWNlIHRoZSBzdGF0ZSB2YWx1ZSB3aXRoIHRoaXMgcmVmIGZvciB0aGUgcmVhc29uIG1lbnNpb25lZCBhYm92ZVxuICAgIGNvbnN0IHZhbHVlUmVmID0gUmVhY3QudXNlUmVmKCFVdGlscy5pc051bGwocHJvcHMudmFsdWUpID8gcHJvcHMudmFsdWUgOiBudWxsKTtcbiAgICBjb25zdCBbc2VsZWN0T3B0aW9ucywgc2V0U2VsZWN0T3B0aW9uc10gPSBSZWFjdC51c2VTdGF0ZShbXSk7XG4gICAgY29uc3QgW2Rpc2FibGVkLCBzZXREaXNhYmxlZF0gPSBSZWFjdC51c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgW3Zpc2libGUsIHNldFZpc2libGVdID0gUmVhY3QudXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IFtyZXF1aXJlZCwgc2V0UmVxdWlyZWRdID0gUmVhY3QudXNlU3RhdGUobnVsbCk7XG4gICAgY29uc3QgW21pbkRhdGUsIHNldE1pbkRhdGVdID0gUmVhY3QudXNlU3RhdGUobnVsbCk7XG4gICAgY29uc3QgW21heERhdGUsIHNldE1heERhdGVdID0gUmVhY3QudXNlU3RhdGUobnVsbCk7XG4gICAgY29uc3QgW3Jlc2V0U3dpdGNoLCBzZXRSZXNldFN3aXRjaF0gPSBSZWFjdC51c2VTdGF0ZShmYWxzZSk7XG4gICAgY29uc3QgdmFsaWRhdGVPbkNoYW5nZSA9IFJlYWN0LnVzZVJlZigpO1xuICAgIGNvbnN0IGluaXRpYWxWYWx1ZUJvdW5kID0gUmVhY3QudXNlUmVmKGZhbHNlKTtcbiAgICBjb25zdCByZWYgPSBSZWFjdC51c2VSZWYobnVsbCk7XG4gICAgY29uc3QgdmFsaWQgPSBSZWFjdC51c2VSZWYoZmFsc2UpO1xuICAgIC8vIE1lbW8gb2YgdGhlIGxhc3QgKGN1cnJlbnRWYWx1ZSwgcmVxdWlyZWQsIG1hcmtlcnMpIHR1cGxlICsgaXRzIHJlc3VsdC52YWxpZC5cbiAgICAvLyBkb1ZhbGlkYXRpb24gc2hvcnQtY2lyY3VpdHMgd2hlbiB0aGUgaW5wdXRzIGFyZSB1bmNoYW5nZWQgc28gcmVwZWF0ZWQgcmVhZHNcbiAgICAvLyBvZiBAI3tmb3JtfS52YWx1ZSAod2hpY2ggaXRlcmF0ZXMgZmllbGRzIGFuZCBjYWxscyB2YWxpZGF0ZSBvbiBlYWNoIGluXG4gICAgLy8gRm9ybS5qc3ggZ2V0IHZhbHVlKCkpIGRvbid0IGtlZXAgZmlyaW5nIHNldEVycm9yTWVzc2FnZS9zZXRIYXNFcnJvciBhbmRcbiAgICAvLyByZS1yZW5kZXItbG9vcCB0aGUgd2hvbGUgZm9ybS5cbiAgICBjb25zdCBsYXN0VmFsaWRhdGlvbiA9IFJlYWN0LnVzZVJlZihudWxsKTtcblxuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGluaXRpYWxWYWx1ZUJvdW5kLmN1cnJlbnQgPSBmYWxzZTtcbiAgICAgICAgYmluZCgpO1xuICAgIH0sIFt2YWx1ZU9iamVjdF0pO1xuXG4gICAgZnVuY3Rpb24gYmluZCgpIHtcbiAgICAgICAgbGV0IGJvdW5kVmFsdWUgPSB2YWx1ZU9iamVjdFt2YWx1ZVByb3BlcnR5XTtcbiAgICAgICAgLy8gVXNlIGlzTnVsbCwgbm90IHRydXRoaW5lc3MsIHNvIGZhbHN5LWJ1dC1wcmVzZW50IHZhbHVlcyAoZmFsc2UsIDAsIFwiXCIpXG4gICAgICAgIC8vIGJpbmQgb24gaW5pdGlhbCBsb2FkIGluc3RlYWQgb2YgYmVpbmcgc2lsZW50bHkgZHJvcHBlZC5cbiAgICAgICAgaWYgKCFVdGlscy5pc051bGwoYm91bmRWYWx1ZSkgJiYgIWluaXRpYWxWYWx1ZUJvdW5kLmN1cnJlbnQpIHtcbiAgICAgICAgICAgIGluaXRpYWxWYWx1ZUJvdW5kLmN1cnJlbnQgPSB0cnVlO1xuICAgICAgICAgICAgaWYgKHByb3BzLmNvbmZpZy5maWVsZFR5cGUgPT09ICdTRUxFQ1QnIHx8IHByb3BzLmNvbmZpZy5maWVsZFR5cGUgPT09ICdMT09LVVAnKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFib3VuZFZhbHVlIHx8IFV0aWxzLmlzTnVsbChib3VuZFZhbHVlLmlkKSkge1xuICAgICAgICAgICAgICAgICAgICBzZXRWYWx1ZShudWxsKTtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWVSZWYuY3VycmVudCA9IG51bGw7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgaWYocHJvcHMudmFsdWVQYXJzZXIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldFZhbHVlKHByb3BzLnZhbHVlUGFyc2VyKGJvdW5kVmFsdWUsIHRydWUpKTtcbiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHNldFZhbHVlKGJvdW5kVmFsdWUpO1xuICAgICAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICAgICAgdmFsdWVSZWYuY3VycmVudCA9IGJvdW5kVmFsdWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZihwcm9wcy52YWx1ZVBhcnNlcikge1xuICAgICAgICAgICAgICAgICAgICBzZXRWYWx1ZShwcm9wcy52YWx1ZVBhcnNlcihib3VuZFZhbHVlLCB0cnVlKSk7XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgc2V0VmFsdWUoYm91bmRWYWx1ZSk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgdmFsdWVSZWYuY3VycmVudCA9IGJvdW5kVmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBiaW5kKCk7XG4gICAgfSwgW3ZhbHVlT2JqZWN0W3ZhbHVlUHJvcGVydHldXSk7XG5cbiAgICAvLyBDaGFuZ2UgdGhlIHJlcXVpcmVkIHZhbHVlIGFuZCByZS12YWxpZGF0ZSBmaWVsZCBpZiBuZWNlc3NhcnlcbiAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChjb25maWcpICYmIHZhbGlkYXRlT25DaGFuZ2UuY3VycmVudCA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgcHJvcHMuZm9ybSgpXG4gICAgICAgICAgICAgICAgLnZhbGlkYXRlUGFyZW50KGNvbmZpZy5kYXRhQmluZGluZyB8fCBjb25maWcuaWQsIGRvVmFsaWRhdGlvbihwcm9wcy52YWx1ZXMsIHZhbHVlKSk7XG4gICAgICAgIH1cblxuICAgICAgICB2YWxpZGF0ZU9uQ2hhbmdlLmN1cnJlbnQgPSBudWxsO1xuICAgIH0sIFtyZXF1aXJlZF0pO1xuXG4gICAgY29uc3QgZG9WYWxpZGF0aW9uID0gKHZhbHVlcywgY3VycmVudFZhbHVlKSA9PiB7XG4gICAgICAgIGlmKGNvbmZpZykge1xuICAgICAgICAgICAgY29uc3QgbWFya2VycyA9IGFwcGxpY2F0aW9uTWFuYWdlci5pc0Zvcm1NYXJrZXJzRW5hYmxlZCgpO1xuICAgICAgICAgICAgY29uc3QgbGFzdCA9IGxhc3RWYWxpZGF0aW9uLmN1cnJlbnQ7XG4gICAgICAgICAgICBpZiAobGFzdCAhPT0gbnVsbFxuICAgICAgICAgICAgICAgICYmIGxhc3QuY3VycmVudFZhbHVlID09PSBjdXJyZW50VmFsdWVcbiAgICAgICAgICAgICAgICAmJiBsYXN0LnJlcXVpcmVkID09PSByZXF1aXJlZFxuICAgICAgICAgICAgICAgICYmIGxhc3QubWFya2VycyA9PT0gbWFya2Vycykge1xuICAgICAgICAgICAgICAgIHJldHVybiBsYXN0LnZhbGlkO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsZXQgcGF0aCA9IHByb3BzLmZvcm0oKVxuICAgICAgICAgICAgICAgIC5nZXRWYWx1ZVBhdGgoY29uZmlnLmRhdGFCaW5kaW5nIHx8IGNvbmZpZy5pZCk7XG4gICAgICAgICAgICBsZXQgcmVzdWx0ID0ge3ZhbGlkOiB0cnVlfTtcbiAgICAgICAgICAgIGlmICghVXRpbHMuaXNOdWxsKGNvbmZpZy52YWxpZGF0b3IpICYmICFVdGlscy5pc051bGwoY29uZmlnLnZhbGlkYXRvci5zY3JpcHQpKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gZHluYW1pY0pTLmV4ZWN1dGVTY3JpcHRPYmplY3QoYCR7Y29uZmlnLmlkfVZhbGlkYXRvcmAsIGNvbmZpZy52YWxpZGF0b3Iuc2NyaXB0KTtcbiAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdC52YWxpZCkge1xuICAgICAgICAgICAgICAgICAgICByZXN1bHQubWVzc2FnZSA9IHJlc3VsdC5tZXNzYWdlID8gcmVzdWx0Lm1lc3NhZ2UgOiBjb25maWcudmFsaWRhdG9yLm1lc3NhZ2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAocmVzdWx0LnZhbGlkKSB7XG4gICAgICAgICAgICAgICAgcmVzdWx0ID0gVXRpbHMudmFsaWRhdGVGaWVsZChwYXRoLnZhbHVlUHJvcGVydHksIHJlcXVpcmVkLFxuICAgICAgICAgICAgICAgICAgICBwYXRoLnZhbHVlT2JqZWN0LCBjdXJyZW50VmFsdWUsIGNvbmZpZy52YWxpZGF0b3IpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBzZXRFcnJvck1lc3NhZ2UobWFya2VycyB8fCByZXN1bHQuZm9yY2VNYXJrZXIgPyByZXN1bHQubWVzc2FnZSA6ICcnKTtcbiAgICAgICAgICAgIHNldEhhc0Vycm9yKCFyZXN1bHQudmFsaWQgJiYgKG1hcmtlcnMgfHwgcmVzdWx0LmZvcmNlTWFya2VyKSk7XG4gICAgICAgICAgICB2YWxpZC5jdXJyZW50ID0gcmVzdWx0LnZhbGlkICYmIChtYXJrZXJzIHx8IHJlc3VsdC5mb3JjZU1hcmtlcik7XG5cbiAgICAgICAgICAgIGlmIChtYXJrZXJzKSB7XG4gICAgICAgICAgICAgICAgcHJvcHMuZm9ybSgpXG4gICAgICAgICAgICAgICAgICAgIC5zZXRGaWVsZEVycm9yKGNvbmZpZy5pZCwgdHlwZW9mIHJlc3VsdC5tZXNzYWdlID09PSAndW5kZWZpbmVkJyA/IG51bGwgOiByZXN1bHQubWVzc2FnZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGxhc3RWYWxpZGF0aW9uLmN1cnJlbnQgPSB7IGN1cnJlbnRWYWx1ZSwgcmVxdWlyZWQsIG1hcmtlcnMsIHZhbGlkOiByZXN1bHQudmFsaWQgfTtcblxuICAgICAgICAgICAgLy8gUHVibGlzaCB0byB0aGUgZm9ybSdzIHZhbGlkaXR5IHJlZ2lzdGVyLiBTaW5nbGUgc291cmNlIG9mIHRydXRoXG4gICAgICAgICAgICAvLyBmb3IgXCJpcyB0aGlzIGZpZWxkIHZhbGlkP1wiIOKAlCBmb3JtLnZhbHVlIHJlYWRzIGZyb20gaGVyZSB3aXRob3V0XG4gICAgICAgICAgICAvLyBjYWxsaW5nIGJhY2sgaW50byB0aGUgZmllbGQgKGtpbGxzIHRoZSBiaS1kaXJlY3Rpb25hbCBjaGFpbikuXG4gICAgICAgICAgICBpZiAodHlwZW9mIHByb3BzLmZvcm0gPT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIHByb3BzLmZvcm0oKS5zZXRGaWVsZFZhbGlkaXR5ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgcHJvcHMuZm9ybSgpLnNldEZpZWxkVmFsaWRpdHkoY29uZmlnLmlkIHx8IGNvbmZpZy5kYXRhQmluZGluZywge1xuICAgICAgICAgICAgICAgICAgICB2YWxpZDogcmVzdWx0LnZhbGlkLFxuICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiByZXN1bHQubWVzc2FnZSxcbiAgICAgICAgICAgICAgICAgICAgZm9yY2VNYXJrZXI6IHJlc3VsdC5mb3JjZU1hcmtlcixcbiAgICAgICAgICAgICAgICAgICAgb25WYWxpZGl0eUNoYW5nZTogKHZhbGlkLCBlcnJvck1lc3NhZ2UpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmKGFwcGxpY2F0aW9uTWFuYWdlci5pc0Zvcm1NYXJrZXJzRW5hYmxlZCgpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0RXJyb3JNZXNzYWdlKGVycm9yTWVzc2FnZSk7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0SGFzRXJyb3IoIXZhbGlkKTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICByZXR1cm4gcmVzdWx0LnZhbGlkO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH07XG5cbiAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBwcm9wcy5oYW5kbGUuYXBpID0gYXBpKCk7XG4gICAgfSk7XG5cbiAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBpZiAoVXRpbHMuaXNOdWxsKGNvbmZpZykpIHtcbiAgICAgICAgICAgIGxldCBwYXJzZWRDb25maWcgPSBVdGlscy5wYXJzZUNvbmZpZyhwcm9wcy5jb25maWcsIHByb3BzLnZpZXdJZCk7XG4gICAgICAgICAgICBldmVudE1hbmFnZXIuYWRkU3Vic2NyaXB0aW9ucyhwYXJzZWRDb25maWcuZXZlbnRIYW5kbGluZ0NvbmZpZywgcHJvcHMuaGFuZGxlLCBwcm9wcy52aWV3SWQpO1xuICAgICAgICAgICAgZXZlbnRNYW5hZ2VyLmFkZFN5c3RlbVN1YnNjcmlwdGlvbnMocHJvcHMudmlld0lkLCBwYXJzZWRDb25maWcpO1xuICAgICAgICAgICAgc2V0Q29uZmlnKHBhcnNlZENvbmZpZyk7XG4gICAgICAgICAgICBzZXRWaXNpYmxlKFV0aWxzLmV2YWx1YXRlQm9vbGVhbkV4cHJlc3Npb24ocGFyc2VkQ29uZmlnLnZpc2libGUsIHBhcnNlZENvbmZpZy5pZCwgdHJ1ZSkpO1xuICAgICAgICAgICAgc2V0RGlzYWJsZWQoVXRpbHMuZXZhbHVhdGVCb29sZWFuRXhwcmVzc2lvbihwYXJzZWRDb25maWcuZGlzYWJsZWQsIHBhcnNlZENvbmZpZy5pZCwgZmFsc2UpKTtcblxuICAgICAgICAgICAgbGV0IGV2ZW50ID0gbmV3IEV2ZW50KHByb3BzLmhhbmRsZSwgcHJvcHMudmlld0lkLCBudWxsKTtcbiAgICAgICAgICAgIGV2ZW50TWFuYWdlci5maXJlRXZlbnQoRXZlbnRUeXBlLkNPTVBPTkVOVF9MT0FELCBldmVudCk7XG4gICAgICAgIH1cbiAgICB9LCBbXSk7XG5cbiAgICBSZWFjdC51c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChwcm9wcy52YWx1ZXMpICYmICFVdGlscy5pc051bGwoY29uZmlnKSkge1xuICAgICAgICAgICAgbGV0IHBhdGggPSBwcm9wcy5mb3JtKClcbiAgICAgICAgICAgICAgICAuZ2V0VmFsdWVQYXRoKGNvbmZpZy5kYXRhQmluZGluZyB8fCBjb25maWcuaWQsIHByb3BzLnZhbHVlcyk7XG4gICAgICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChwYXRoLnZhbHVlT2JqZWN0KSkge1xuICAgICAgICAgICAgICAgIHNldFZhbHVlT2JqZWN0KHBhdGgudmFsdWVPYmplY3QpO1xuICAgICAgICAgICAgICAgIHNldFZhbHVlUHJvcGVydHkocGF0aC52YWx1ZVByb3BlcnR5KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwocHJvcHMuY29uZmlnLnZhbHVlKSkge1xuICAgICAgICAgICAgICAgIGxldCBzY3JpcHRWYWx1ZSA9IGFwcGxpY2F0aW9uTWFuYWdlci5pc0V4cHJlc3Npb24ocHJvcHMuY29uZmlnLnZhbHVlKSA/XG4gICAgICAgICAgICAgICAgICAgIGR5bmFtaWNKUy5leGVjdXRlU2NyaXB0KHByb3BzLmNvbmZpZy5pZC5yZXBsYWNlKCcuJywgJ18nKSArICdWYWx1ZScsIHByb3BzLmNvbmZpZy52YWx1ZSkgOlxuICAgICAgICAgICAgICAgICAgICBwcm9wcy5jb25maWcudmFsdWU7XG5cbiAgICAgICAgICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChzY3JpcHRWYWx1ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgbGV0IHZhbCA9IHNjcmlwdFZhbHVlLmluc3RhbmNlVHlwZSA9PT0gJ1R5cGVkVmFsdWUnID8gc2NyaXB0VmFsdWUudmFsdWUgOiBzY3JpcHRWYWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgdmFsdWVPYmplY3RbdmFsdWVQcm9wZXJ0eV0gPSB2YWw7XG4gICAgICAgICAgICAgICAgICAgIHNldFZhbHVlKHZhbCk7XG4gICAgICAgICAgICAgICAgICAgIHZhbHVlUmVmLmN1cnJlbnQgPSB2YWw7XG4gICAgICAgICAgICAgICAgICAgIHByb3BzLmZvcm0oKVxuICAgICAgICAgICAgICAgICAgICAgICAgLmhhbmRsZUNoYW5nZShjb25maWcuZGF0YUJpbmRpbmcgfHwgY29uZmlnLmlkLCB2YWwpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgLy8gU2VsZi1hbm5vdW5jZTogdmFsaWRhdGUgdGhpcyBmaWVsZCBhZ2FpbnN0IGN1cnJlbnQgZGF0YSBhbmQgcHVzaFxuICAgICAgICAgICAgLy8gdmVyZGljdCB0byB0aGUgZm9ybSdzIHZhbGlkaXR5IHJlZ2lzdGVyIHZpYSBzZXRGaWVsZFZhbGlkaXR5IChpblxuICAgICAgICAgICAgLy8gZG9WYWxpZGF0aW9uKS4gTWFya2VycyBhcmUgc3VwcHJlc3NlZCBsb2NhbGx5IHNvIGluaXRpYWwtbG9hZFxuICAgICAgICAgICAgLy8gdmFsaWRhdGlvbiBuZXZlciBmbGFzaGVzIGVycm9yIFVJIOKAlCBldmVuIGlmIGdsb2JhbCBtYXJrZXJzIGFyZVxuICAgICAgICAgICAgLy8gYWxyZWFkeSBvbiAoZS5nLiBhc3luYyBkYXRhIGFycml2aW5nIGFmdGVyIEZvcm0ncyBDT01QT05FTlRfTE9BRFxuICAgICAgICAgICAgLy8gYWxyZWFkeSByZS1lbmFibGVkIG1hcmtlcnMpLiBDYWNoZSBtYWtlcyByZXBlYXQgc2VsZi1cbiAgICAgICAgICAgIC8vIGFubm91bmNlbWVudHMgY2hlYXAgd2hlbiAoY3VycmVudFZhbHVlLCByZXF1aXJlZCwgbWFya2VycylcbiAgICAgICAgICAgIC8vIHR1cGxlIGlzIHVuY2hhbmdlZC5cbiAgICAgICAgICAgIGNvbnN0IHByZXZpb3VzbHlFbmFibGVkID0gYXBwbGljYXRpb25NYW5hZ2VyLmlzRm9ybU1hcmtlcnNFbmFibGVkKCk7XG4gICAgICAgICAgICBpZiAocHJldmlvdXNseUVuYWJsZWQpIHtcbiAgICAgICAgICAgICAgICBhcHBsaWNhdGlvbk1hbmFnZXIuZW5hYmxlRm9ybU1hcmtlcnMoZmFsc2UpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBjb25zdCBjdiA9ICFVdGlscy5pc051bGwocGF0aCkgJiYgIVV0aWxzLmlzTnVsbChwYXRoLnZhbHVlT2JqZWN0KVxuICAgICAgICAgICAgICAgICAgICA/IHBhdGgudmFsdWVPYmplY3RbcGF0aC52YWx1ZVByb3BlcnR5XVxuICAgICAgICAgICAgICAgICAgICA6IG51bGw7XG4gICAgICAgICAgICAgICAgLy8gUnVuIGluYm91bmQgdmFsdWVQYXJzZXIgc28gZmllbGRzIHdob3NlIHBhcnNlciBzeW50aGVzaXNlc1xuICAgICAgICAgICAgICAgIC8vIGEgZGVmYXVsdCBmb3IgbnVsbCBpbnB1dCAoZS5nLiBSYWRpb0dyb3VwIOKGkiBkZWZhdWx0VmFsdWUpXG4gICAgICAgICAgICAgICAgLy8gYXJlIHZhbGlkYXRlZCBhZ2FpbnN0IHRoZWlyIHNlbWFudGljIHZhbHVlLCBub3QgdGhlIHJhd1xuICAgICAgICAgICAgICAgIC8vIG1vZGVsLiBiaW5kKCkgZG9lcyB0aGUgc2FtZSBmb3Igbm9uLW51bGwgbW9kZWwgdmFsdWVzLlxuICAgICAgICAgICAgICAgIGNvbnN0IGN2Rm9yVmFsaWRhdGlvbiA9ICFVdGlscy5pc051bGwocHJvcHMudmFsdWVQYXJzZXIpXG4gICAgICAgICAgICAgICAgICAgID8gcHJvcHMudmFsdWVQYXJzZXIoY3YsIHRydWUpXG4gICAgICAgICAgICAgICAgICAgIDogY3Y7XG4gICAgICAgICAgICAgICAgZG9WYWxpZGF0aW9uKHByb3BzLnZhbHVlcywgY3ZGb3JWYWxpZGF0aW9uKTtcbiAgICAgICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICAgICAgaWYgKHByZXZpb3VzbHlFbmFibGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uTWFuYWdlci5lbmFibGVGb3JtTWFya2Vycyh0cnVlKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9LCBbcHJvcHMudmFsdWVzLCBjb25maWddKTtcblxuICAgIFJlYWN0LnVzZUVmZmVjdCgoKSA9PiB7XG4gICAgICAgIGlmIChsb2FkaW5nUmVmLmN1cnJlbnQgPT09IHRydWUgJiYgIVV0aWxzLmlzTnVsbChjb25maWcpKSB7XG4gICAgICAgICAgICBsZXQgZmllbGQgPSBwcm9wcy5mb3JtKClcbiAgICAgICAgICAgICAgICAuYWRkRmllbGQoY29uZmlnLmlkIHx8IGNvbmZpZy5kYXRhQmluZGluZywgcHJvcHMuaGFuZGxlLCBwcm9wcy5wYXJlbnRJZCwgcHJvcHMuYmluZFZhbHVlVG9Gb3JtKTtcbiAgICAgICAgICAgIGlmICghVXRpbHMuaXNOdWxsKGZpZWxkKSAmJiAhVXRpbHMuaXNOdWxsKGZpZWxkLmVycm9yKSkge1xuICAgICAgICAgICAgICAgIGlmIChmaWVsZC5lcnJvci5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHNldEhhc0Vycm9yKHRydWUpO1xuICAgICAgICAgICAgICAgICAgICBzZXRFcnJvck1lc3NhZ2UoZmllbGQuZXJyb3IpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIEludGVudGlvbmFsbHkgZG8gTk9UIHZhbGlkYXRlIG9uIG1vdW50OiB2YWx1ZVJlZi5jdXJyZW50IGlzIG5vdFxuICAgICAgICAgICAgLy8geWV0IGJvdW5kIGZyb20gdGhlIGZvcm0ncyBtYXN0ZXIgZGF0YSBhdCB0aGlzIHBvaW50IOKAlCBiaW5kKClcbiAgICAgICAgICAgIC8vIHJ1bnMgaW4gYSBsYXRlciByZW5kZXIgY3ljbGUgdmlhIHRoZSBbdmFsdWVPYmplY3RdIHVzZUVmZmVjdC5cbiAgICAgICAgICAgIC8vIFZhbGlkYXRpbmcgaGVyZSB3b3VsZCBtYXJrIGV2ZXJ5IGZpZWxkLXdpdGgtbWFzdGVyLXZhbHVlIGFzXG4gICAgICAgICAgICAvLyBpbnZhbGlkIChjdXJyZW50VmFsdWU9bnVsbCksIHBlcm1hbmVudGx5IGZsaXBwaW5nIGZvcm0udmFsdWUgdG9cbiAgICAgICAgICAgIC8vIG51bGwuIFJlZ2lzdGVyIHN0YXlzIGVtcHR5IGZvciB0aGlzIGZpZWxkIHVudGlsIGVpdGhlciB1c2VyXG4gICAgICAgICAgICAvLyBpbnRlcmFjdGlvbiAoaGFuZGxlQ2hhbmdlIOKGkiB2YWxpZGF0ZUZpZWxkIOKGkiBkb1ZhbGlkYXRpb24g4oaSXG4gICAgICAgICAgICAvLyBzZXRGaWVsZFZhbGlkaXR5KSBvciBhbiBleHBsaWNpdCBmb3JtLmFwaS52YWxpZGF0ZUFsbCgpIHJ1bnMuXG4gICAgICAgICAgICAvLyBmb3JtLnZhbHVlIHRyZWF0cyBlbXB0eS1yZWdpc3RlciBhcyBcIm9wdGltaXN0aWNhbGx5IHZhbGlkXCIg4oCUIHNvXG4gICAgICAgICAgICAvLyBhbnkgc2F2ZSBmbG93IE1VU1QgY2FsbCBmb3JtLmFwaS52YWxpZGF0ZUFsbCgpIGJlZm9yZSByZWFkaW5nXG4gICAgICAgICAgICAvLyBmb3JtLnZhbHVlLCBvciBpbnZhbGlkIGRhdGEgd2lsbCBwYXNzIHRocm91Z2ggc2lsZW50bHkuXG4gICAgICAgICAgICBsb2FkaW5nUmVmLmN1cnJlbnQgPSBmYWxzZTtcbiAgICAgICAgfVxuICAgIH0pO1xuXG4gICAgUmVhY3QudXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgIGlmICghVXRpbHMuaXNOdWxsKHByb3BzLmZvcm0oKSkpIHtcbiAgICAgICAgICAgICAgICBldmVudE1hbmFnZXIuY2xlYXJDb21wb25lbnRFdmVudExpc3RlbmVycyhwcm9wcy5oYW5kbGUpO1xuICAgICAgICAgICAgICAgIHByb3BzLmZvcm0oKVxuICAgICAgICAgICAgICAgICAgICAucmVtb3ZlRmllbGQocHJvcHMuY29uZmlnLmRhdGFCaW5kaW5nIHx8IHByb3BzLmNvbmZpZy5pZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfSwgW10pO1xuXG4gICAgY29uc3QgaGFuZGxlVmFsdWVDaGFuZ2UgPSAobmV3VmFsdWUpID0+IHtcbiAgICAgICAgaW5pdGlhbFZhbHVlQm91bmQuY3VycmVudCA9IHRydWU7XG4gICAgICAgIGxldCB2YWx1ZUNoYW5nZWQgPSBuZXdWYWx1ZSAhPT0gdmFsdWVSZWYuY3VycmVudDtcblxuICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChuZXdWYWx1ZSkgJiYgIVV0aWxzLmlzTnVsbCh2YWx1ZVJlZi5jdXJyZW50KSkge1xuICAgICAgICAgICAgaWYgKHByb3BzLmNvbmZpZy5maWVsZFR5cGUgPT09ICdTRUxFQ1QnIHx8IHByb3BzLmNvbmZpZy5maWVsZFR5cGUgPT09ICdMT09LVVAnKSB7XG4gICAgICAgICAgICAgICAgdmFsdWVDaGFuZ2VkID0gbmV3VmFsdWUuaWQgIT09IHZhbHVlUmVmLmN1cnJlbnQuaWQ7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHByb3BzLmNvbmZpZy5maWVsZFR5cGUgPT09ICdEQVRFJyB8fCBwcm9wcy5jb25maWcuZmllbGRUeXBlID09PSAnVElNRScpIHtcbiAgICAgICAgICAgICAgICB2YWx1ZUNoYW5nZWQgPSBuZXdWYWx1ZSAhPT0gdmFsdWVSZWYuY3VycmVudDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdmFsdWVDaGFuZ2VkID0gSlNPTi5zdHJpbmdpZnkodmFsdWVSZWYuY3VycmVudCkgIT09IEpTT04uc3RyaW5naWZ5KG5ld1ZhbHVlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwcm9wcy5jb25maWcuZmllbGRUeXBlID09PSAnR1JJRCcgJiYgdmFsdWVPYmplY3RbdmFsdWVQcm9wZXJ0eV0pIHtcbiAgICAgICAgICAgIHZhbHVlT2JqZWN0W3ZhbHVlUHJvcGVydHldLnNwbGljZSgwLCB2YWx1ZU9iamVjdFt2YWx1ZVByb3BlcnR5XS5sZW5ndGgpO1xuXG4gICAgICAgICAgICBpZiAobmV3VmFsdWUpIHtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IG5ld1ZhbHVlRWxlbWVudCBvZiBuZXdWYWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICB2YWx1ZU9iamVjdFt2YWx1ZVByb3BlcnR5XS5wdXNoKG5ld1ZhbHVlRWxlbWVudCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBsZXQgaWQgPSBwcm9wcy5jb25maWcuZGF0YUJpbmRpbmcgPyBwcm9wcy5jb25maWcuZGF0YUJpbmRpbmcgOiBwcm9wcy5jb25maWcuaWQ7XG4gICAgICAgICAgICBwcm9wcy5mb3JtKClcbiAgICAgICAgICAgICAgICAuaGFuZGxlQ2hhbmdlKCFVdGlscy5pc051bGwocHJvcHMuY29uZmlnLmRhdGFCaW5kaW5nKSA/IHByb3BzLmNvbmZpZy5kYXRhQmluZGluZyA6IGlkLCBuZXdWYWx1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodmFsdWVDaGFuZ2VkKSB7XG4gICAgICAgICAgICBsZXQgaWQgPSBwcm9wcy5jb25maWcuZGF0YUJpbmRpbmcgPyBwcm9wcy5jb25maWcuZGF0YUJpbmRpbmcgOiBwcm9wcy5jb25maWcuaWQ7XG4gICAgICAgICAgICAvL2FwcGxpY2F0aW9uTWFuYWdlci5lbmFibGVGb3JtTWFya2Vycyh0cnVlKTtcbiAgICAgICAgICAgIGlmIChwcm9wcy5jb25maWcuZmllbGRUeXBlID09PSAnU0VMRUNUJykge1xuICAgICAgICAgICAgICAgIGxldCBzZWxlY3RJdGVtQ2hhbmdlID0gcHJvcHMuZm9ybSgpXG4gICAgICAgICAgICAgICAgICAgIC5oYW5kbGVTZWxlY3RJdGVtQ2hhbmdlKGlkLCBzZWxlY3RPcHRpb25zLCBuZXdWYWx1ZSk7XG4gICAgICAgICAgICAgICAgc2V0VmFsdWUoc2VsZWN0SXRlbUNoYW5nZSk7XG4gICAgICAgICAgICAgICAgdmFsdWVSZWYuY3VycmVudCA9IHNlbGVjdEl0ZW1DaGFuZ2U7XG4gICAgICAgICAgICAgICAgZm9yIChjb25zdCBzZWxlY3RPcHRpb24gb2Ygc2VsZWN0T3B0aW9ucykge1xuICAgICAgICAgICAgICAgICAgICBpZiAoc2VsZWN0T3B0aW9uLmlkID09PSBuZXdWYWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgbmV3VmFsdWUgPSBzZWxlY3RPcHRpb247XG4gICAgICAgICAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgc2V0VmFsdWUobmV3VmFsdWUpO1xuICAgICAgICAgICAgICAgIHZhbHVlUmVmLmN1cnJlbnQgPSBuZXdWYWx1ZTtcbiAgICAgICAgICAgICAgICBwcm9wcy5mb3JtKClcbiAgICAgICAgICAgICAgICAgICAgLmhhbmRsZUNoYW5nZSghVXRpbHMuaXNOdWxsKHByb3BzLmNvbmZpZy5kYXRhQmluZGluZykgPyBwcm9wcy5jb25maWcuZGF0YUJpbmRpbmcgOiBpZCwgbmV3VmFsdWUpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoIVV0aWxzLmlzTnVsbChwcm9wcy52YWx1ZUNoYW5nZUhhbmRsZXIpKSB7XG4gICAgICAgICAgICAgICAgcHJvcHMudmFsdWVDaGFuZ2VIYW5kbGVyKG5ld1ZhbHVlKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgbGV0IGV2ZW50ID0gbmV3IEV2ZW50KHByb3BzLmhhbmRsZSwgcHJvcHMudmlld0lkLCBuZXdWYWx1ZSk7XG4gICAgICAgICAgICBldmVudE1hbmFnZXIuZmlyZUV2ZW50KEV2ZW50VHlwZS5WQUxVRV9DSEFOR0UsIGV2ZW50KTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICBjb25zdCBhcGkgPSAoKSA9PiB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB2YWxpZGF0ZTogKHZhbHVlcywgY3VycmVudFZhbHVlKSA9PiB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGRvVmFsaWRhdGlvbih2YWx1ZXMsIGN1cnJlbnRWYWx1ZSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcGFyc2VWYWx1ZTogKHZhbHVlLCBpbmJvdW5kKSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwocHJvcHMudmFsdWVQYXJzZXIpKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBwcm9wcy52YWx1ZVBhcnNlcih2YWx1ZSwgaW5ib3VuZCk7XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGdldCB2YWxpZCgpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gdmFsaWQuY3VycmVudDtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXQgaWQoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHByb3BzLmNvbmZpZy5pZDtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXQgcm93cygpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gcHJvcHMucm93c0hhbmRsZXIgPyBwcm9wcy5yb3dzSGFuZGxlcigpIDogbnVsbDtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXRWYWxpZGF0aW9uR3JvdXA6ICgpID0+IHtcbiAgICAgICAgICAgICAgICByZXR1cm4gIVV0aWxzLmlzTnVsbChjb25maWcudmFsaWRhdG9yKSA/IGNvbmZpZy52YWxpZGF0b3IuZ3JvdXAgOiBudWxsO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGNsZWFyOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgaGFuZGxlVmFsdWVDaGFuZ2UobnVsbCk7XG4gICAgICAgICAgICAgICAgaWYgKCFVdGlscy5pc051bGwocHJvcHMuY2xlYXJIYW5kbGVyKSkge1xuICAgICAgICAgICAgICAgICAgICBwcm9wcy5jbGVhckhhbmRsZXIoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2Nyb2xsVG86ICgpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAocmVmLmN1cnJlbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgcmVmLmN1cnJlbnQuc2Nyb2xsSW50b1ZpZXcoe1xuICAgICAgICAgICAgICAgICAgICAgICAgYmVoYXZpb3I6IFwic21vb3RoXCIsXG4gICAgICAgICAgICAgICAgICAgICAgICBibG9jazogXCJjZW50ZXJcIlxuICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZ2V0IHZhbHVlKCkge1xuICAgICAgICAgICAgICAgIGlmICghVXRpbHMuaXNOdWxsKHZhbHVlT2JqZWN0KSAmJiAhVXRpbHMuaXNOdWxsKHZhbHVlUHJvcGVydHkpICYmICFVdGlscy5pc051bGwodmFsdWVPYmplY3RbdmFsdWVQcm9wZXJ0eV0pKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiAhVXRpbHMuaXNOdWxsKHByb3BzLnZhbHVlUGFyc2VyKSA/XG4gICAgICAgICAgICAgICAgICAgICAgICBwcm9wcy52YWx1ZVBhcnNlcih2YWx1ZU9iamVjdFt2YWx1ZVByb3BlcnR5XSwgZmFsc2UpIDogdmFsdWVPYmplY3RbdmFsdWVQcm9wZXJ0eV07XG4gICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZU9iamVjdCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVPYmplY3RbdmFsdWVQcm9wZXJ0eV0gPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBwcm9wcy52YWx1ZVBhcnNlciA/IHByb3BzLnZhbHVlUGFyc2VyKHZhbHVlLCBmYWxzZSkgOiB2YWx1ZTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzZXQgdmFsdWUodmFsKSB7XG4gICAgICAgICAgICAgICAgaGFuZGxlVmFsdWVDaGFuZ2UodmFsKTtcblxuICAgICAgICAgICAgICAgIGlmICghVXRpbHMuaXNOdWxsKHByb3BzLnZhbHVlQ2hhbmdlQ2FsbGJhY2spKSB7XG4gICAgICAgICAgICAgICAgICAgIHByb3BzLnZhbHVlQ2hhbmdlQ2FsbGJhY2sodmFsKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2V0IGRpc2FibGVkKGRpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgc2V0RGlzYWJsZWQoZGlzYWJsZWQpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNldCB2aXNpYmxlKHZpc2libGUpIHtcbiAgICAgICAgICAgICAgICBzZXRWaXNpYmxlKHZpc2libGUpO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGhhbmRsZUxvYWRDb21wbGV0ZSgpIHtcbiAgICAgICAgICAgICAgICBsb2FkaW5nUmVmLmN1cnJlbnQgPSBmYWxzZTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICByZWZyZXNoKCkge1xuICAgICAgICAgICAgICAgIGxldCBwYXJzZWRDb25maWcgPSBVdGlscy5wYXJzZUNvbmZpZyhwcm9wcy5jb25maWcsIHByb3BzLnZpZXdJZCk7XG4gICAgICAgICAgICAgICAgc2V0VmlzaWJsZShVdGlscy5ldmFsdWF0ZUJvb2xlYW5FeHByZXNzaW9uKHBhcnNlZENvbmZpZy52aXNpYmxlLCBwYXJzZWRDb25maWcuaWQsIHRydWUpKTtcbiAgICAgICAgICAgICAgICBzZXREaXNhYmxlZChVdGlscy5ldmFsdWF0ZUJvb2xlYW5FeHByZXNzaW9uKHBhcnNlZENvbmZpZy5kaXNhYmxlZCwgcGFyc2VkQ29uZmlnLmlkKSk7XG4gICAgICAgICAgICAgICAgbGV0IHJlcXVpcmVkTmV3VmFsID0gIVV0aWxzLmlzTnVsbChwYXJzZWRDb25maWcudmFsaWRhdG9yKSA/XG4gICAgICAgICAgICAgICAgICAgICFVdGlscy5ldmFsdWF0ZUJvb2xlYW5FeHByZXNzaW9uKHBhcnNlZENvbmZpZy52YWxpZGF0b3IubnVsbGFibGUsIHBhcnNlZENvbmZpZy5pZCwgdHJ1ZSlcbiAgICAgICAgICAgICAgICAgICAgfHwgVXRpbHMuZXZhbHVhdGVCb29sZWFuRXhwcmVzc2lvbihwYXJzZWRDb25maWcudmFsaWRhdG9yLnJlcXVpcmVkLCBwYXJzZWRDb25maWcuaWQsIGZhbHNlKSA6IGZhbHNlO1xuICAgICAgICAgICAgICAgIHZhbGlkYXRlT25DaGFuZ2UuY3VycmVudCA9IHJlcXVpcmVkICE9PSBudWxsICYmIHJlcXVpcmVkICE9PSByZXF1aXJlZE5ld1ZhbCAmJiBsb2FkaW5nUmVmLmN1cnJlbnQgPT09IGZhbHNlO1xuICAgICAgICAgICAgICAgIHNldFJlcXVpcmVkKHJlcXVpcmVkTmV3VmFsKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXQgcmVxdWlyZWQoKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIHJlcXVpcmVkO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIHNldCByZXF1aXJlZChpc1JlcXVpcmVkKSB7XG4gICAgICAgICAgICAgICAgc2V0UmVxdWlyZWQoaXNSZXF1aXJlZCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2V0IG1pbkRhdGUobWluRGF0ZSkge1xuICAgICAgICAgICAgICAgIHNldE1pbkRhdGUobWluRGF0ZSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2V0IG1heERhdGUobWF4RGF0ZSkge1xuICAgICAgICAgICAgICAgIHNldE1heERhdGUobWF4RGF0ZSk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2V0IHNlbGVjdE9wdGlvbnMoc2VsZWN0T3B0aW9ucykge1xuICAgICAgICAgICAgICAgIHNldFNlbGVjdE9wdGlvbnMoc2VsZWN0T3B0aW9ucyk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgcmVzZXQoKSB7XG4gICAgICAgICAgICAgICAgc2V0UmVzZXRTd2l0Y2goIXJlc2V0U3dpdGNoKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBzZXRGaWVsZFJlcXVpcmVkKG5ld1ZhbCwgdmFsaWRhdGUgPSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgdmFsaWRhdGVPbkNoYW5nZS5jdXJyZW50ID0gdmFsaWRhdGU7XG4gICAgICAgICAgICAgICAgc2V0UmVxdWlyZWQobmV3VmFsKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBnZXRDaGlsZHJlbjogKCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghVXRpbHMuaXNOdWxsKHByb3BzLmdldENoaWxkcmVuKSkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gcHJvcHMuZ2V0Q2hpbGRyZW4oKTtcbiAgICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgbG9hZERhdGEoKSB7XG4gICAgICAgICAgICAgICAgaWYgKHByb3BzLmxvYWREYXRhSGFuZGxlcikge1xuICAgICAgICAgICAgICAgICAgICBwcm9wcy5sb2FkRGF0YUhhbmRsZXIoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfTtcblxuICAgIHJldHVybiBjb25maWcgP1xuICAgICAgICA8ZGl2IHJlZj17cmVmfSBjbGFzc05hbWU9XCJjb2wtKi0qXCIga2V5PXtjb25maWcuaWR9IHN0eWxlPXt7XG4gICAgICAgICAgICB0ZXh0QWxpZ246ICdsZWZ0JyxcbiAgICAgICAgICAgIGRpc3BsYXk6ICF2aXNpYmxlIHx8IFV0aWxzLmdldENvbXBvbmVudEF0dHJpYnV0ZShjb25maWcsICdoaWRkZW4nLCBmYWxzZSkgPT09IHRydWUgPyAnbm9uZScgOiAnYmxvY2snXG4gICAgICAgIH19PlxuICAgICAgICA8c3Bhbj5cbiAgICAgICAge3Byb3BzLmNoaWxkcmVuKHtcbiAgICAgICAgICAgIG1pbkRhdGU6IG1pbkRhdGUsXG4gICAgICAgICAgICBtYXhEYXRlOiBtYXhEYXRlLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IHJlcXVpcmVkLFxuICAgICAgICAgICAgZGlzYWJsZWQ6IGRpc2FibGVkLFxuICAgICAgICAgICAgdmFsdWVPYmplY3Q6IHZhbHVlT2JqZWN0LFxuICAgICAgICAgICAgdmFsdWVQcm9wZXJ0eTogdmFsdWVQcm9wZXJ0eSxcbiAgICAgICAgICAgIGhhbmRsZVZhbHVlQ2hhbmdlOiBoYW5kbGVWYWx1ZUNoYW5nZSxcbiAgICAgICAgICAgIHNldFZhbHVlOiBzZXRWYWx1ZSxcbiAgICAgICAgICAgIHNldFNlbGVjdE9wdGlvbnM6IHNldFNlbGVjdE9wdGlvbnMsXG4gICAgICAgICAgICBzZWxlY3RPcHRpb25zOiBzZWxlY3RPcHRpb25zLFxuICAgICAgICAgICAgc2V0UmVzZXRTd2l0Y2g6IHNldFJlc2V0U3dpdGNoLFxuICAgICAgICAgICAgcmVzZXRTd2l0Y2g6IHJlc2V0U3dpdGNoLFxuICAgICAgICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgICAgICAgaGFzRXJyb3I6IGhhc0Vycm9yLFxuICAgICAgICAgICAgZG9WYWxpZGF0aW9uOiBkb1ZhbGlkYXRpb24sXG4gICAgICAgICAgICBlcnJvck1lc3NhZ2U6IGVycm9yTWVzc2FnZSxcbiAgICAgICAgICAgIGxvYWRpbmdSZWY6IGxvYWRpbmdSZWZcbiAgICAgICAgfSl9XG4gICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDogbnVsbDtcbn07XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFDLElBQUFBLE1BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNELElBQUFDLE1BQUEsR0FBQUYsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFFLFdBQUEsR0FBQUgsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFHLG1CQUFBLEdBQUFKLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBSSxNQUFBLEdBQUFMLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBSyxVQUFBLEdBQUFOLHNCQUFBLENBQUFDLE9B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
|