@1money/component-ui 0.0.48 → 0.0.50

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (127) hide show
  1. package/es/components/Accordion/style/Accordion.css +94 -1
  2. package/es/components/Alert/style/Alert.css +101 -1
  3. package/es/components/Button/style/Button.css +178 -1
  4. package/es/components/Calendar/style/Calendar.css +400 -1
  5. package/es/components/Carousel/style/Carousel.css +57 -1
  6. package/es/components/Cell/style/Cell.css +80 -1
  7. package/es/components/Checkbox/style/Checkbox.css +191 -1
  8. package/es/components/CoachMark/style/CoachMark.css +156 -1
  9. package/es/components/Copy/style/Clipboard.css +45 -1
  10. package/es/components/Copy/style/Copy.css +48 -1
  11. package/es/components/Dialog/style/Dialog.css +204 -1
  12. package/es/components/Divider/style/Divider.css +128 -1
  13. package/es/components/Drawer/style/Drawer.css +145 -1
  14. package/es/components/Dropdown/style/Dropdown.css +48 -1
  15. package/es/components/Empty/style/Empty.css +58 -1
  16. package/es/components/Flex/style/Flex.css +71 -1
  17. package/es/components/Grid/style/Grid.css +952 -1
  18. package/es/components/Icons/style/Icons.css +81 -1
  19. package/es/components/Input/Amount/style/Amount.css +103 -1
  20. package/es/components/Input/FieldShell/FieldShell.css +76 -1
  21. package/es/components/Input/Input/Input.css +124 -1
  22. package/es/components/Input/OTP/OTP.css +79 -1
  23. package/es/components/Input/TextArea/TextArea.css +93 -1
  24. package/es/components/Input/Trade/Trade.css +192 -1
  25. package/es/components/Link/style/Link.css +70 -1
  26. package/es/components/Navigation/style/Nav.css +158 -1
  27. package/es/components/Navigation/style/Navigation.css +373 -1
  28. package/es/components/Navigation/style/NavigationStepper.css +97 -1
  29. package/es/components/Notification/NotificationStatic.js +22 -22
  30. package/es/components/Notification/style/Notification.css +170 -1
  31. package/es/components/Pagination/style/Pagination.css +89 -1
  32. package/es/components/Popconfirm/style/Popconfirm.css +137 -1
  33. package/es/components/ProForm/ProForm.js +38 -38
  34. package/es/components/ProForm/ProFormDependency.js +5 -5
  35. package/es/components/ProForm/Submitter.js +4 -4
  36. package/es/components/ProForm/core/hooks/useForm.js +101 -101
  37. package/es/components/ProForm/core/useFormItem.js +5 -5
  38. package/es/components/ProForm/hooks/useFieldRequest.js +12 -12
  39. package/es/components/ProForm/layouts/useOverlayForm.js +5 -5
  40. package/es/components/ProForm/style/ProForm.css +168 -1
  41. package/es/components/Progress/style/Progress.css +103 -1
  42. package/es/components/Radio/style/Radio.css +362 -1
  43. package/es/components/Segment/style/Segment.css +79 -1
  44. package/es/components/Select/style/Select.css +468 -1
  45. package/es/components/Skeleton/style/Skeleton.css +54 -1
  46. package/es/components/Slider/style/Slider.css +161 -1
  47. package/es/components/Space/style/Space.css +47 -1
  48. package/es/components/Spinner/Spinner.js +7 -7
  49. package/es/components/Spinner/style/Spinner.css +99 -1
  50. package/es/components/Step/style/Step.css +107 -1
  51. package/es/components/Switch/style/Switch.css +102 -1
  52. package/es/components/Table/style/Table.css +370 -1
  53. package/es/components/Tabs/style/Tabs.css +118 -1
  54. package/es/components/Tag/style/Tag.css +87 -1
  55. package/es/components/Tooltip/style/Tooltip.css +98 -1
  56. package/es/components/Trigger/style/Trigger.css +35 -1
  57. package/es/components/Typography/style/Typography.css +444 -1
  58. package/es/components/Upload/style/Upload.css +55 -1
  59. package/es/components/Upload/style/UploadFileBar.css +88 -1
  60. package/es/components/VirtualList/style/VirtualList.css +25 -1
  61. package/es/index.css +1 -1
  62. package/es/stories/docs/storybook-docs.css +323 -1
  63. package/es/styles/index.css +5328 -1
  64. package/lib/components/Accordion/style/Accordion.css +94 -1
  65. package/lib/components/Alert/style/Alert.css +101 -1
  66. package/lib/components/Button/style/Button.css +178 -1
  67. package/lib/components/Calendar/style/Calendar.css +400 -1
  68. package/lib/components/Carousel/style/Carousel.css +57 -1
  69. package/lib/components/Cell/style/Cell.css +80 -1
  70. package/lib/components/Checkbox/style/Checkbox.css +191 -1
  71. package/lib/components/CoachMark/style/CoachMark.css +156 -1
  72. package/lib/components/Copy/style/Clipboard.css +45 -1
  73. package/lib/components/Copy/style/Copy.css +48 -1
  74. package/lib/components/Dialog/style/Dialog.css +204 -1
  75. package/lib/components/Divider/style/Divider.css +128 -1
  76. package/lib/components/Drawer/style/Drawer.css +145 -1
  77. package/lib/components/Dropdown/style/Dropdown.css +48 -1
  78. package/lib/components/Empty/style/Empty.css +58 -1
  79. package/lib/components/Flex/style/Flex.css +71 -1
  80. package/lib/components/Grid/style/Grid.css +952 -1
  81. package/lib/components/Icons/style/Icons.css +81 -1
  82. package/lib/components/Input/Amount/style/Amount.css +103 -1
  83. package/lib/components/Input/FieldShell/FieldShell.css +76 -1
  84. package/lib/components/Input/Input/Input.css +124 -1
  85. package/lib/components/Input/OTP/OTP.css +79 -1
  86. package/lib/components/Input/TextArea/TextArea.css +93 -1
  87. package/lib/components/Input/Trade/Trade.css +192 -1
  88. package/lib/components/Link/style/Link.css +70 -1
  89. package/lib/components/Navigation/style/Nav.css +158 -1
  90. package/lib/components/Navigation/style/Navigation.css +373 -1
  91. package/lib/components/Navigation/style/NavigationStepper.css +97 -1
  92. package/lib/components/Notification/NotificationStatic.js +22 -22
  93. package/lib/components/Notification/style/Notification.css +170 -1
  94. package/lib/components/Pagination/style/Pagination.css +89 -1
  95. package/lib/components/Popconfirm/style/Popconfirm.css +137 -1
  96. package/lib/components/ProForm/ProForm.js +38 -38
  97. package/lib/components/ProForm/ProFormDependency.js +5 -5
  98. package/lib/components/ProForm/Submitter.js +4 -4
  99. package/lib/components/ProForm/core/hooks/useForm.js +101 -101
  100. package/lib/components/ProForm/core/useFormItem.js +5 -5
  101. package/lib/components/ProForm/hooks/useFieldRequest.js +12 -12
  102. package/lib/components/ProForm/layouts/useOverlayForm.js +5 -5
  103. package/lib/components/ProForm/style/ProForm.css +168 -1
  104. package/lib/components/Progress/style/Progress.css +103 -1
  105. package/lib/components/Radio/style/Radio.css +362 -1
  106. package/lib/components/Segment/style/Segment.css +79 -1
  107. package/lib/components/Select/style/Select.css +468 -1
  108. package/lib/components/Skeleton/style/Skeleton.css +54 -1
  109. package/lib/components/Slider/style/Slider.css +161 -1
  110. package/lib/components/Space/style/Space.css +47 -1
  111. package/lib/components/Spinner/Spinner.js +7 -7
  112. package/lib/components/Spinner/style/Spinner.css +99 -1
  113. package/lib/components/Step/style/Step.css +107 -1
  114. package/lib/components/Switch/style/Switch.css +102 -1
  115. package/lib/components/Table/style/Table.css +370 -1
  116. package/lib/components/Tabs/style/Tabs.css +118 -1
  117. package/lib/components/Tag/style/Tag.css +87 -1
  118. package/lib/components/Tooltip/style/Tooltip.css +98 -1
  119. package/lib/components/Trigger/style/Trigger.css +35 -1
  120. package/lib/components/Typography/style/Typography.css +444 -1
  121. package/lib/components/Upload/style/Upload.css +55 -1
  122. package/lib/components/Upload/style/UploadFileBar.css +88 -1
  123. package/lib/components/VirtualList/style/VirtualList.css +25 -1
  124. package/lib/index.css +1 -1
  125. package/lib/stories/docs/storybook-docs.css +323 -1
  126. package/lib/styles/index.css +5328 -1
  127. package/package.json +65 -34
@@ -99,16 +99,16 @@ var getNotificationRoot = function getNotificationRoot() {
99
99
  };
100
100
  var createNotificationRenderer = function createNotificationRenderer(container) {
101
101
  return __awaiter(void 0, void 0, void 0, /*#__PURE__*/_regenerator["default"].mark(function _callee() {
102
- var reactDomClient, root, reactDom;
103
- return _regenerator["default"].wrap(function _callee$(_context) {
102
+ var reactDomClient, root, reactDom, _t;
103
+ return _regenerator["default"].wrap(function (_context) {
104
104
  while (1) switch (_context.prev = _context.next) {
105
105
  case 0:
106
106
  _context.prev = 0;
107
- _context.next = 3;
107
+ _context.next = 1;
108
108
  return Promise.resolve().then(function () {
109
109
  return _interopRequireWildcard(require('react-dom/client'));
110
110
  });
111
- case 3:
111
+ case 1:
112
112
  reactDomClient = _context.sent;
113
113
  root = reactDomClient.createRoot(container);
114
114
  return _context.abrupt("return", {
@@ -119,21 +119,21 @@ var createNotificationRenderer = function createNotificationRenderer(container)
119
119
  root.unmount();
120
120
  }
121
121
  });
122
- case 8:
123
- _context.prev = 8;
124
- _context.t0 = _context["catch"](0);
125
- _context.next = 12;
122
+ case 2:
123
+ _context.prev = 2;
124
+ _t = _context["catch"](0);
125
+ _context.next = 3;
126
126
  return Promise.resolve().then(function () {
127
127
  return _interopRequireWildcard(require('react-dom'));
128
128
  });
129
- case 12:
129
+ case 3:
130
130
  reactDom = _context.sent;
131
131
  if (!(typeof reactDom.render !== 'function' || typeof reactDom.unmountComponentAtNode !== 'function')) {
132
- _context.next = 15;
132
+ _context.next = 4;
133
133
  break;
134
134
  }
135
135
  return _context.abrupt("return", null);
136
- case 15:
136
+ case 4:
137
137
  return _context.abrupt("return", {
138
138
  render: function render(element) {
139
139
  var _a;
@@ -144,11 +144,11 @@ var createNotificationRenderer = function createNotificationRenderer(container)
144
144
  (_a = reactDom.unmountComponentAtNode) === null || _a === void 0 ? void 0 : _a.call(reactDom, container);
145
145
  }
146
146
  });
147
- case 16:
147
+ case 5:
148
148
  case "end":
149
149
  return _context.stop();
150
150
  }
151
- }, _callee, null, [[0, 8]]);
151
+ }, _callee, null, [[0, 2]]);
152
152
  }));
153
153
  };
154
154
  var NotificationMotionItem = function NotificationMotionItem(_ref) {
@@ -391,27 +391,27 @@ var NotificationManager = /*#__PURE__*/function () {
391
391
  value: function ensureRenderer() {
392
392
  return __awaiter(this, void 0, void 0, /*#__PURE__*/_regenerator["default"].mark(function _callee2() {
393
393
  var _this5 = this;
394
- return _regenerator["default"].wrap(function _callee2$(_context2) {
394
+ return _regenerator["default"].wrap(function (_context2) {
395
395
  while (1) switch (_context2.prev = _context2.next) {
396
396
  case 0:
397
397
  if (canUseDOM()) {
398
- _context2.next = 2;
398
+ _context2.next = 1;
399
399
  break;
400
400
  }
401
401
  return _context2.abrupt("return", null);
402
- case 2:
402
+ case 1:
403
403
  if (!this.renderer) {
404
- _context2.next = 4;
404
+ _context2.next = 2;
405
405
  break;
406
406
  }
407
407
  return _context2.abrupt("return", this.renderer);
408
- case 4:
408
+ case 2:
409
409
  if (!this.rendererPromise) {
410
- _context2.next = 6;
410
+ _context2.next = 3;
411
411
  break;
412
412
  }
413
413
  return _context2.abrupt("return", this.rendererPromise);
414
- case 6:
414
+ case 3:
415
415
  this.container = getNotificationRoot();
416
416
  this.rendererPromise = createNotificationRenderer(this.container).then(function (renderer) {
417
417
  _this5.renderer = renderer;
@@ -426,7 +426,7 @@ var NotificationManager = /*#__PURE__*/function () {
426
426
  return null;
427
427
  });
428
428
  return _context2.abrupt("return", this.rendererPromise);
429
- case 9:
429
+ case 4:
430
430
  case "end":
431
431
  return _context2.stop();
432
432
  }
@@ -512,4 +512,4 @@ var notification = exports.notification = {
512
512
  }
513
513
  };
514
514
  var _default = exports["default"] = notification;
515
- //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvTm90aWZpY2F0aW9uL05vdGlmaWNhdGlvblN0YXRpYy5qcyIsImNvbXBvbmVudHMvc3JjL2NvbXBvbmVudHMvTm90aWZpY2F0aW9uL05vdGlmaWNhdGlvblN0YXRpYy50c3giXSwibmFtZXMiOlsiX2pzeFJ1bnRpbWUiLCJyZXF1aXJlIiwiX3JlYWN0IiwiX05vdGlmaWNhdGlvbiIsIl9jbGFzc25hbWVzIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJfaW50ZXJmYWNlIiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwiZSIsIldlYWtNYXAiLCJyIiwidCIsIl9fZXNNb2R1bGUiLCJfdHlwZW9mMiIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIl9fYXdhaXRlciIsInRoaXNBcmciLCJfYXJndW1lbnRzIiwiUCIsImdlbmVyYXRvciIsImFkb3B0IiwidmFsdWUiLCJyZXNvbHZlIiwiUHJvbWlzZSIsInJlamVjdCIsImZ1bGZpbGxlZCIsInN0ZXAiLCJuZXh0IiwicmVqZWN0ZWQiLCJyZXN1bHQiLCJkb25lIiwidGhlbiIsImFwcGx5IiwiX19yZXN0IiwicyIsInAiLCJwcm90b3R5cGUiLCJpbmRleE9mIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwibGVuZ3RoIiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJOT1RJRklDQVRJT05fUk9PVF9JRCIsIkRFRkFVTFRfTk9USUZJQ0FUSU9OX1BMQUNFTUVOVCIsIkRFRkFVTFRfTk9USUZJQ0FUSU9OX0RVUkFUSU9OIiwiREVGQVVMVF9OT1RJRklDQVRJT05fTUFYX0NPVU5UIiwiTnVtYmVyIiwiUE9TSVRJVkVfSU5GSU5JVFkiLCJOT1RJRklDQVRJT05fTU9USU9OX0RVUkFUSU9OIiwiREVGQVVMVF9OT1RJRklDQVRJT05fQ09ORklHIiwicGxhY2VtZW50IiwiZHVyYXRpb24iLCJtYXhDb3VudCIsImNhblVzZURPTSIsIndpbmRvdyIsImRvY3VtZW50Iiwibm9ybWFsaXplRHVyYXRpb24iLCJmYWxsYmFjayIsImlzRmluaXRlIiwibm9ybWFsaXplTWF4Q291bnQiLCJNYXRoIiwiZmxvb3IiLCJncm91cE5vdGlmaWNhdGlvbnNCeVBsYWNlbWVudCIsIml0ZW1zIiwiZ3JvdXBlZEl0ZW1zIiwiTk9USUZJQ0FUSU9OX1BMQUNFTUVOVFMiLCJmb3JFYWNoIiwiaXRlbSIsInB1c2giLCJnZXROb3RpZmljYXRpb25Sb290IiwiZXhpc3RpbmdSb290IiwiZ2V0RWxlbWVudEJ5SWQiLCJIVE1MRGl2RWxlbWVudCIsInJvb3QiLCJjcmVhdGVFbGVtZW50IiwiaWQiLCJib2R5IiwiYXBwZW5kQ2hpbGQiLCJjcmVhdGVOb3RpZmljYXRpb25SZW5kZXJlciIsImNvbnRhaW5lciIsIl9yZWdlbmVyYXRvciIsIm1hcmsiLCJfY2FsbGVlIiwicmVhY3REb21DbGllbnQiLCJyZWFjdERvbSIsIndyYXAiLCJfY2FsbGVlJCIsIl9jb250ZXh0IiwicHJldiIsInNlbnQiLCJjcmVhdGVSb290IiwiYWJydXB0IiwicmVuZGVyIiwiZWxlbWVudCIsInVubW91bnQiLCJ0MCIsInVubW91bnRDb21wb25lbnRBdE5vZGUiLCJfYSIsInN0b3AiLCJOb3RpZmljYXRpb25Nb3Rpb25JdGVtIiwiX3JlZiIsImNvbGxhcHNlT25FeGl0Iiwib25DbG9zZSIsImNsYXNzZXMiLCJjbGFzc25hbWVzIiwiX3VzZVN0YXRlIiwidXNlU3RhdGUiLCJfdXNlU3RhdGUyIiwiX3NsaWNlZFRvQXJyYXkyIiwiZW50ZXJlZCIsInNldEVudGVyZWQiLCJ1c2VFZmZlY3QiLCJjbG9zaW5nIiwidW5kZWZpbmVkIiwiZnJhbWUiLCJyZXF1ZXN0QW5pbWF0aW9uRnJhbWUiLCJjYW5jZWxBbmltYXRpb25GcmFtZSIsImtleSIsIm5vdGlmaWNhdGlvblByb3BzIiwibW90aW9uQ2xhc3NOYW1lIiwiam9pbkNscyIsIl9qc3giLCJjbGFzc05hbWUiLCJjaGlsZHJlbiIsIk1lbW9pemVkTm90aWZpY2F0aW9uIiwiYXNzaWduIiwiTm90aWZpY2F0aW9uVmlld3BvcnQiLCJfcmVmMiIsIml0ZW1zQnlQbGFjZW1lbnQiLCJtYXAiLCJwbGFjZW1lbnRJdGVtcyIsImFjdGl2ZUNvdW50IiwiZmlsdGVyIiwiY29uY2F0IiwiU3RyaW5nIiwiTm90aWZpY2F0aW9uTWFuYWdlciIsIl90aGlzIiwiX2NsYXNzQ2FsbENoZWNrMiIsInJlbmRlcmVyIiwicmVuZGVyZXJQcm9taXNlIiwidGltZXJzIiwiTWFwIiwicmVtb3ZhbFRpbWVycyIsImtleVNlZWQiLCJjb25maWdTdGF0ZSIsIm9wZW4iLCJjb25maWciLCJjcmVhdGVLZXkiLCJjdXJyZW50SXRlbSIsImZpbmQiLCJuZXh0SXRlbSIsImNyZWF0ZVJlY29yZCIsIl90b0NvbnN1bWFibGVBcnJheTIiLCJjbGVhclJlbW92YWxUaW1lciIsInN0YXJ0VGltZXIiLCJ0cmltT3ZlcmZsb3ciLCJkZXN0cm95IiwiYmVnaW5DbG9zZSIsIl9iIiwiX2MiLCJoYW5kbGVDbG9zZSIsIl9jcmVhdGVDbGFzczIiLCJfZCIsIm1lcmdlZENvbmZpZyIsIl90aGlzMiIsImNsZWFyVGltZXIiLCJ0aW1lb3V0SWQiLCJzZXRUaW1lb3V0IiwiY2xlYXJUaW1lb3V0IiwiX3RoaXMzIiwib3ZlcmZsb3dLZXlzIiwiZmxhdE1hcCIsIm92ZXJmbG93Q291bnQiLCJzbGljZSIsImtleXMiLCJfdGhpczQiLCJrZXlTZXQiLCJTZXQiLCJjbG9zaW5nS2V5cyIsImZpbmFsaXplUmVtb3ZlIiwicmVtb3ZlZEl0ZW1zIiwiZW5zdXJlUmVuZGVyZXIiLCJfY2FsbGVlMiIsIl90aGlzNSIsIl9jYWxsZWUyJCIsIl9jb250ZXh0MiIsInJlbW92ZUNvbnRhaW5lciIsInJlbW92ZSIsInRlYXJkb3duIiwiY2xlYXIiLCJyZW5kZXJOb2RlIiwiX3RoaXM2Iiwibm90aWZpY2F0aW9uTWFuYWdlciIsIm9wZW5Ob3RpZmljYXRpb25XaXRoU3RhdHVzIiwic3RhdHVzIiwibm90aWZpY2F0aW9uIiwiZXhwb3J0cyIsImluZm8iLCJzdWNjZXNzIiwid2FybmluZyIsImVycm9yIiwiX2RlZmF1bHQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFvQkEsSUFBQUEsV0FBQSxHQUFBQyxPQUFBO0FDcEJBLElBQUFDLE1BQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLGFBQUEsR0FBQUYsT0FBQTtBQUNBLElBQUFHLFdBQUEsR0FBQUMsdUJBQUEsQ0FBQUosT0FBQTtBQUNBQSxPQUFBO0FBU0EsSUFBQUssVUFBQSxHQUFBTCxPQUFBO0FBQXNELFNBQUFNLHlCQUFBQyxDQUFBLDZCQUFBQyxPQUFBLG1CQUFBQyxDQUFBLE9BQUFELE9BQUEsSUFBQUUsQ0FBQSxPQUFBRixPQUFBLFlBQUFGLHdCQUFBLFlBQUFBLHlCQUFBQyxDQUFBLFdBQUFBLENBQUEsR0FBQUcsQ0FBQSxHQUFBRCxDQUFBLEtBQUFGLENBQUE7QUFBQSxTQUFBSCx3QkFBQUcsQ0FBQSxFQUFBRSxDQUFBLFNBQUFBLENBQUEsSUFBQUYsQ0FBQSxJQUFBQSxDQUFBLENBQUFJLFVBQUEsU0FBQUosQ0FBQSxlQUFBQSxDQUFBLG9CQUFBSyxRQUFBLGFBQUFMLENBQUEsMEJBQUFBLENBQUEsc0JBQUFBLENBQUEsUUFBQUcsQ0FBQSxHQUFBSix3QkFBQSxDQUFBRyxDQUFBLE9BQUFDLENBQUEsSUFBQUEsQ0FBQSxDQUFBRyxHQUFBLENBQUFOLENBQUEsVUFBQUcsQ0FBQSxDQUFBSSxHQUFBLENBQUFQLENBQUEsT0FBQVEsQ0FBQSxLQUFBQyxTQUFBLFVBQUFDLENBQUEsR0FBQUMsTUFBQSxDQUFBQyxjQUFBLElBQUFELE1BQUEsQ0FBQUUsd0JBQUEsV0FBQUMsQ0FBQSxJQUFBZCxDQUFBLG9CQUFBYyxDQUFBLE9BQUFDLGNBQUEsQ0FBQUMsSUFBQSxDQUFBaEIsQ0FBQSxFQUFBYyxDQUFBLFNBQUFHLENBQUEsR0FBQVAsQ0FBQSxHQUFBQyxN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LENBQUEsQ0FBQSxFQUFNcUIsTUFBTSxDQUFBLEVBQUE7TUFBRWdELE1BQU0sRUFBTkE7SUFBTSxDQUFBLENBQUEsQ0FBRztFQUFBO0FBQUE7QUFFOUMsSUFBTUMsWUFBWSxHQUFBQyxPQUFBLENBQUFELFlBQUEsR0FBMEI7RUFDakRsRCxJQUFJLEVBQUUsU0FBTkEsSUFBSUEsQ0FBRUMsTUFBTTtJQUFBLE9BQUk4QyxtQkFBbUIsQ0FBQy9DLElBQUksQ0FBQ0MsTUFBTSxDQUFDO0VBQUE7RUFDaERtRCxJQUFJLEVBQUVKLDBCQUEwQixDQUFDLE1BQU0sQ0FBQztFQUN4Q0ssT0FBTyxFQUFFTCwwQkFBMEIsQ0FBQyxTQUFTLENBQUM7RUFDOUNNLE9BQU8sRUFBRU4sMEJBQTBCLENBQUMsU0FBUyxDQUFDO0VBQzlDTyxLQUFLLEVBQUVQLDBCQUEwQixDQUFDLE9BQU8sQ0FBQztFQUMxQ3JDLE9BQU8sRUFBRSxTQUFUQSxPQUFPQSxDQUFFdkMsR0FBRztJQUFBLE9BQUkyRSxtQkFBbUIsQ0FBQ3BDLE9BQU8sQ0FBQ3ZDLEdBQUcsQ0FBQztFQUFBO0VBQ2hENkIsTUFBTSxFQUFFLFNBQVJBLE1BQU1BLENBQUVBLE9BQU07SUFBQSxPQUFJOEMsbUJBQW1CLENBQUM5QyxNQUFNLENBQUNBLE9BQU0sQ0FBQztFQUFBO0FEM0l0RCxDQzRJQztBQUFDLElBQUF1RCxRQUFBLEdBQUFMLE9BQUEsY0FFYUQsWUFBWSIsImZpbGUiOiJjb21wb25lbnRzL05vdGlmaWNhdGlvbi9Ob3RpZmljYXRpb25TdGF0aWMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX19hd2FpdGVyID0gKHRoaXMgJiYgdGhpcy5fX2F3YWl0ZXIpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcbiAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xuICAgIH0pO1xufTtcbnZhciBfX3Jlc3QgPSAodGhpcyAmJiB0aGlzLl9fcmVzdCkgfHwgZnVuY3Rpb24gKHMsIGUpIHtcbiAgICB2YXIgdCA9IHt9O1xuICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSAmJiBlLmluZGV4T2YocCkgPCAwKVxuICAgICAgICB0W3BdID0gc1twXTtcbiAgICBpZiAocyAhPSBudWxsICYmIHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzID09PSBcImZ1bmN0aW9uXCIpXG4gICAgICAgIGZvciAodmFyIGkgPSAwLCBwID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzKTsgaSA8IHAubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChlLmluZGV4T2YocFtpXSkgPCAwICYmIE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzLCBwW2ldKSlcbiAgICAgICAgICAgICAgICB0W3BbaV1dID0gc1twW2ldXTtcbiAgICAgICAgfVxuICAgIHJldHVybiB0O1xufTtcbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgTWVtb2l6ZWROb3RpZmljYXRpb24gfSBmcm9tICcuL05vdGlmaWNhdGlvbic7XG5pbXBvcnQgeyBkZWZhdWx0IGFzIGNsYXNzbmFtZXMsIGpvaW5DbHMgfSBmcm9tICcuLi8uLi91dGlscy9jbGFzc25hbWVzJztcbmltcG9ydCAnLi9zdHlsZSc7XG5pbXBvcnQgeyBOT1RJRklDQVRJT05fUExBQ0VNRU5UUyB9IGZyb20gJy4vaW50ZXJmYWNlJztcbmNvbnN0IE5PVElGSUNBVElPTl9ST09UX0lEID0gJ29tLWNvbXBvbmVudC11aS1ub3RpZmljYXRpb24tcm9vdCc7XG5jb25zdCBERUZBVUxUX05PVElGSUNBVElPTl9QTEFDRU1FTlQgPSAndG9wUmlnaHQnO1xuY29uc3QgREVGQVVMVF9OT1RJRklDQVRJT05fRFVSQVRJT04gPSA0LjU7XG5jb25zdCBERUZBVUxUX05PVElGSUNBVElPTl9NQVhfQ09VTlQgPSBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFk7XG5jb25zdCBOT1RJRklDQVRJT05fTU9USU9OX0RVUkFUSU9OID0gMjQwO1xuY29uc3QgREVGQVVMVF9OT1RJRklDQVRJT05fQ09ORklHID0ge1xuICAgIHBsYWNlbWVudDogREVGQVVMVF9OT1RJRklDQVRJT05fUExBQ0VNRU5ULFxuICAgIGR1cmF0aW9uOiBERUZBVUxUX05PVElGSUNBVElPTl9EVVJBVElPTixcbiAgICBtYXhDb3VudDogREVGQVVMVF9OT1RJRklDQVRJT05fTUFYX0NPVU5ULFxufTtcbmNvbnN0IGNhblVzZURPTSA9ICgpID0+IHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiBkb2N1bWVudCAhPT0gJ3VuZGVmaW5lZCc7XG5jb25zdCBub3JtYWxpemVEdXJhdGlvbiA9ICh2YWx1ZSwgZmFsbGJhY2spID0+IHtcbiAgICBpZiAodmFsdWUgPD0gMClcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgcmV0dXJuIE51bWJlci5pc0Zpbml0ZSh2YWx1ZSkgPyB2YWx1ZSA6IGZhbGxiYWNrO1xufTtcbmNvbnN0IG5vcm1hbGl6ZU1heENvdW50ID0gKHZhbHVlKSA9PiB7XG4gICAgaWYgKCFOdW1iZXIuaXNGaW5pdGUodmFsdWUpIHx8IHZhbHVlIDw9IDApIHtcbiAgICAgICAgcmV0dXJuIERFRkFVTFRfTk9USUZJQ0FUSU9OX01BWF9DT1VOVDtcbiAgICB9XG4gICAgcmV0dXJuIE1hdGguZmxvb3IodmFsdWUpO1xufTtcbmNvbnN0IGdyb3VwTm90aWZpY2F0aW9uc0J5UGxhY2VtZW50ID0gKGl0ZW1zKSA9PiB7XG4gICAgY29uc3QgZ3JvdXBlZEl0ZW1zID0ge307XG4gICAgTk9USUZJQ0FUSU9OX1BMQUNFTUVOVFMuZm9yRWFjaChwbGFjZW1lbnQgPT4ge1xuICAgICAgICBncm91cGVkSXRlbXNbcGxhY2VtZW50XSA9IFtdO1xuICAgIH0pO1xuICAgIGl0ZW1zLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgIGdyb3VwZWRJdGVtc1tpdGVtLnBsYWNlbWVudF0ucHVzaChpdGVtKTtcbiAgICB9KTtcbiAgICByZXR1cm4gZ3JvdXBlZEl0ZW1zO1xufTtcbmNvbnN0IGdldE5vdGlmaWNhdGlvblJvb3QgPSAoKSA9PiB7XG4gICAgY29uc3QgZXhpc3RpbmdSb290ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoTk9USUZJQ0FUSU9OX1JPT1RfSUQpO1xuICAgIGlmIChleGlzdGluZ1Jvb3QgaW5zdGFuY2VvZiBIVE1MRGl2RWxlbWVudCkge1xuICAgICAgICByZXR1cm4gZXhpc3RpbmdSb290O1xuICAgIH1cbiAgICBjb25zdCByb290ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgcm9vdC5pZCA9IE5PVElGSUNBVElPTl9ST09UX0lEO1xuICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQocm9vdCk7XG4gICAgcmV0dXJuIHJvb3Q7XG59O1xuY29uc3QgY3JlYXRlTm90aWZpY2F0aW9uUmVuZGVyZXIgPSAoY29udGFpbmVyKSA9PiBfX2F3YWl0ZXIodm9pZCAwLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCByZWFjdERvbUNsaWVudCA9IHlpZWxkIGltcG9ydCgncmVhY3QtZG9tL2NsaWVudCcpO1xuICAgICAgICBjb25zdCByb290ID0gcmVhY3REb21DbGllbnQuY3JlYXRlUm9vdChjb250YWluZXIpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcmVuZGVyOiBlbGVtZW50ID0+IHtcbiAgICAgICAgICAgICAgICByb290LnJlbmRlcihlbGVtZW50KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB1bm1vdW50OiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgcm9vdC51bm1vdW50KCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgIH1cbiAgICBjYXRjaCAoX2EpIHtcbiAgICAgICAgLy8gRmFsbGJhY2sgZm9yIFJlYWN0IDwgMTggd2hlcmUgcmVhY3QtZG9tL2NsaWVudCBpcyB1bmF2YWlsYWJsZVxuICAgICAgICBjb25zdCByZWFjdERvbSA9IHlpZWxkIGltcG9ydCgncmVhY3QtZG9tJyk7XG4gICAgICAgIGlmICh0eXBlb2YgcmVhY3REb20ucmVuZGVyICE9PSAnZnVuY3Rpb24nIHx8XG4gICAgICAgICAgICB0eXBlb2YgcmVhY3REb20udW5tb3VudENvbXBvbmVudEF0Tm9kZSAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHJlbmRlcjogZWxlbWVudCA9PiB7XG4gICAgICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgICAgIChfYSA9IHJlYWN0RG9tLnJlbmRlcikgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmNhbGwocmVhY3REb20sIGVsZW1lbnQsIGNvbnRhaW5lcik7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdW5tb3VudDogKCkgPT4ge1xuICAgICAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgICAgICAoX2EgPSByZWFjdERvbS51bm1vdW50Q29tcG9uZW50QXROb2RlKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuY2FsbChyZWFjdERvbSwgY29udGFpbmVyKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgfVxufSk7XG5jb25zdCBOb3RpZmljYXRpb25Nb3Rpb25JdGVtID0gKHsgaXRlbSwgY29sbGFwc2VPbkV4aXQsIG9uQ2xvc2UgfSkgPT4ge1xuICAgIGNvbnN0IGNsYXNzZXMgPSBjbGFzc25hbWVzKCdub3RpZmljYXRpb24nKTtcbiAgICBjb25zdCBbZW50ZXJlZCwgc2V0RW50ZXJlZF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKGl0ZW0uY2xvc2luZyB8fCB0eXBlb2Ygd2luZG93ID09PSAndW5kZWZpbmVkJylcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIGNvbnN0IGZyYW1lID0gd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgICAgICBzZXRFbnRlcmVkKHRydWUpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgIHdpbmRvdy5jYW5jZWxBbmltYXRpb25GcmFtZShmcmFtZSk7XG4gICAgICAgIH07XG4gICAgfSwgW2l0ZW0uY2xvc2luZywgaXRlbS5rZXldKTtcbiAgICBjb25zdCB7IGtleSwgZHVyYXRpb24sIHBsYWNlbWVudCwgY2xvc2luZyB9ID0gaXRlbSwgbm90aWZpY2F0aW9uUHJvcHMgPSBfX3Jlc3QoaXRlbSwgW1wia2V5XCIsIFwiZHVyYXRpb25cIiwgXCJwbGFjZW1lbnRcIiwgXCJjbG9zaW5nXCJdKTtcbiAgICBjb25zdCBtb3Rpb25DbGFzc05hbWUgPSBjbG9zaW5nXG4gICAgICAgID8gam9pbkNscyhjbGFzc2VzKCdpdGVtLWV4aXQnKSwgY29sbGFwc2VPbkV4aXQgPyBjbGFzc2VzKCdpdGVtLWV4aXQtY29sbGFwc2UnKSA6ICcnKVxuICAgICAgICA6IGVudGVyZWRcbiAgICAgICAgICAgID8gY2xhc3NlcygnaXRlbS1hY3RpdmUnKVxuICAgICAgICAgICAgOiBjbGFzc2VzKCdpdGVtLWVudGVyJyk7XG4gICAgcmV0dXJuIChfanN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBqb2luQ2xzKGNsYXNzZXMoJ2l0ZW0nKSwgbW90aW9uQ2xhc3NOYW1lKSwgY2hpbGRyZW46IF9qc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ2l0ZW0taW5uZXInKSwgY2hpbGRyZW46IF9qc3goTWVtb2l6ZWROb3RpZmljYXRpb24sIE9iamVjdC5hc3NpZ24oe30sIG5vdGlmaWNhdGlvblByb3BzLCB7IG9uQ2xvc2U6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgb25DbG9zZShrZXkpO1xuICAgICAgICAgICAgICAgIH0gfSkpIH0pIH0pKTtcbn07XG5jb25zdCBOb3RpZmljYXRpb25WaWV3cG9ydCA9ICh7IGl0ZW1zLCBvbkNsb3NlIH0pID0+IHtcbiAgICBjb25zdCBjbGFzc2VzID0gY2xhc3NuYW1lcygnbm90aWZpY2F0aW9uJyk7XG4gICAgY29uc3QgaXRlbXNCeVBsYWNlbWVudCA9IGdyb3VwTm90aWZpY2F0aW9uc0J5UGxhY2VtZW50KGl0ZW1zKTtcbiAgICByZXR1cm4gKF9qc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ3ZpZXdwb3J0JyksIFwiYXJpYS1saXZlXCI6IFwicG9saXRlXCIsIFwiYXJpYS1hdG9taWNcIjogXCJmYWxzZVwiLCBjaGlsZHJlbjogTk9USUZJQ0FUSU9OX1BMQUNFTUVOVFMubWFwKHBsYWNlbWVudCA9PiB7XG4gICAgICAgICAgICBjb25zdCBwbGFjZW1lbnRJdGVtcyA9IGl0ZW1zQnlQbGFjZW1lbnRbcGxhY2VtZW50XTtcbiAgICAgICAgICAgIGlmICghcGxhY2VtZW50SXRlbXMubGVuZ3RoKVxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgY29uc3QgYWN0aXZlQ291bnQgPSBwbGFjZW1lbnRJdGVtcy5maWx0ZXIoaSA9PiAhaS5jbG9zaW5nKS5sZW5ndGg7XG4gICAgICAgICAgICByZXR1cm4gKF9qc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IGpvaW5DbHMoY2xhc3Nlcygnc3RhY2snKSwgY2xhc3Nlcyhgc3RhY2stJHtwbGFjZW1lbnR9YCkpLCBjaGlsZHJlbjogcGxhY2VtZW50SXRlbXMubWFwKGl0ZW0gPT4gKF9qc3goTm90aWZpY2F0aW9uTW90aW9uSXRlbSwgeyBpdGVtOiBpdGVtLCBjb2xsYXBzZU9uRXhpdDogaXRlbS5jbG9zaW5nICYmIGFjdGl2ZUNvdW50ID4gMCwgb25DbG9zZTogb25DbG9zZSB9LCBTdHJpbmcoaXRlbS5rZXkpKSkpIH0sIHBsYWNlbWVudCkpO1xuICAgICAgICB9KSB9KSk7XG59O1xuY2xhc3MgTm90aWZpY2F0aW9uTWFuYWdlciB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMuY29udGFpbmVyID0gbnVsbDtcbiAgICAgICAgdGhpcy5yZW5kZXJlciA9IG51bGw7XG4gICAgICAgIHRoaXMucmVuZGVyZXJQcm9taXNlID0gbnVsbDtcbiAgICAgICAgdGhpcy5pdGVtcyA9IFtdO1xuICAgICAgICB0aGlzLnRpbWVycyA9IG5ldyBNYXAoKTtcbiAgICAgICAgdGhpcy5yZW1vdmFsVGltZXJzID0gbmV3IE1hcCgpO1xuICAgICAgICB0aGlzLmtleVNlZWQgPSAwO1xuICAgICAgICB0aGlzLmNvbmZpZ1N0YXRlID0gREVGQVVMVF9OT1RJRklDQVRJT05fQ09ORklHO1xuICAgICAgICB0aGlzLm9wZW4gPSAoY29uZmlnKSA9PiB7XG4gICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICBjb25zdCBrZXkgPSAoX2EgPSBjb25maWcua2V5KSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiB0aGlzLmNyZWF0ZUtleSgpO1xuICAgICAgICAgICAgaWYgKCFjYW5Vc2VET00oKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBrZXk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50SXRlbSA9IHRoaXMuaXRlbXMuZmluZChpdGVtID0+IGl0ZW0ua2V5ID09PSBrZXkpO1xuICAgICAgICAgICAgY29uc3QgbmV4dEl0ZW0gPSB0aGlzLmNyZWF0ZVJlY29yZChrZXksIGNvbmZpZywgY3VycmVudEl0ZW0pO1xuICAgICAgICAgICAgaWYgKCFjdXJyZW50SXRlbSkge1xuICAgICAgICAgICAgICAgIHRoaXMuaXRlbXMgPSBbLi4udGhpcy5pdGVtcywgbmV4dEl0ZW1dO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoY3VycmVudEl0ZW0ucGxhY2VtZW50ID09PSBuZXh0SXRlbS5wbGFjZW1lbnQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLml0ZW1zID0gdGhpcy5pdGVtcy5tYXAoaXRlbSA9PiAoaXRlbS5rZXkgPT09IGtleSA/IG5leHRJdGVtIDogaXRlbSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pdGVtcyA9IFsuLi50aGlzLml0ZW1zLmZpbHRlcihpdGVtID0+IGl0ZW0ua2V5ICE9PSBrZXkpLCBuZXh0SXRlbV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmNsZWFyUmVtb3ZhbFRpbWVyKGtleSk7XG4gICAgICAgICAgICB0aGlzLnN0YXJ0VGltZXIobmV4dEl0ZW0pO1xuICAgICAgICAgICAgdGhpcy50cmltT3ZlcmZsb3coKTtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyKCk7XG4gICAgICAgICAgICByZXR1cm4ga2V5O1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLmRlc3Ryb3kgPSBrZXkgPT4ge1xuICAgICAgICAgICAgaWYgKGtleSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5iZWdpbkNsb3NlKHRoaXMuaXRlbXMubWFwKGl0ZW0gPT4gaXRlbS5rZXkpKTtcbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcigpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuYmVnaW5DbG9zZShba2V5XSk7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcigpO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLmNvbmZpZyA9IGNvbmZpZyA9PiB7XG4gICAgICAgICAgICB2YXIgX2EsIF9iLCBfYztcbiAgICAgICAgICAgIHRoaXMuY29uZmlnU3RhdGUgPSB7XG4gICAgICAgICAgICAgICAgcGxhY2VtZW50OiAoX2EgPSBjb25maWcucGxhY2VtZW50KSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiB0aGlzLmNvbmZpZ1N0YXRlLnBsYWNlbWVudCxcbiAgICAgICAgICAgICAgICBkdXJhdGlvbjogbm9ybWFsaXplRHVyYXRpb24oKF9iID0gY29uZmlnLmR1cmF0aW9uKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiB0aGlzLmNvbmZpZ1N0YXRlLmR1cmF0aW9uLCB0aGlzLmNvbmZpZ1N0YXRlLmR1cmF0aW9uKSxcbiAgICAgICAgICAgICAgICBtYXhDb3VudDogbm9ybWFsaXplTWF4Q291bnQoKF9jID0gY29uZmlnLm1heENvdW50KSAhPT0gbnVsbCAmJiBfYyAhPT0gdm9pZCAwID8gX2MgOiB0aGlzLmNvbmZpZ1N0YXRlLm1heENvdW50KSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICB0aGlzLnRyaW1PdmVyZmxvdygpO1xuICAgICAgICAgICAgdGhpcy5yZW5kZXIoKTtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5oYW5kbGVDbG9zZSA9IChrZXkpID0+IHtcbiAgICAgICAgICAgIHRoaXMuYmVnaW5DbG9zZShba2V5XSk7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcigpO1xuICAgICAgICB9O1xuICAgIH1cbiAgICBjcmVhdGVLZXkoKSB7XG4gICAgICAgIHRoaXMua2V5U2VlZCArPSAxO1xuICAgICAgICByZXR1cm4gYG5vdGlmaWNhdGlvbi0ke3RoaXMua2V5U2VlZH1gO1xuICAgIH1cbiAgICBjcmVhdGVSZWNvcmQoa2V5LCBjb25maWcsIGN1cnJlbnRJdGVtKSB7XG4gICAgICAgIHZhciBfYSwgX2IsIF9jLCBfZDtcbiAgICAgICAgY29uc3QgbWVyZ2VkQ29uZmlnID0gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBjdXJyZW50SXRlbSksIGNvbmZpZyk7XG4gICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIG1lcmdlZENvbmZpZyksIHsga2V5LCBwbGFjZW1lbnQ6IChfYiA9IChfYSA9IGNvbmZpZy5wbGFjZW1lbnQpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IGN1cnJlbnRJdGVtID09PSBudWxsIHx8IGN1cnJlbnRJdGVtID09PSB2b2lkIDAgPyB2b2lkIDAgOiBjdXJyZW50SXRlbS5wbGFjZW1lbnQpICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6IHRoaXMuY29uZmlnU3RhdGUucGxhY2VtZW50LCBkdXJhdGlvbjogbm9ybWFsaXplRHVyYXRpb24oKF9kID0gKF9jID0gY29uZmlnLmR1cmF0aW9uKSAhPT0gbnVsbCAmJiBfYyAhPT0gdm9pZCAwID8gX2MgOiBjdXJyZW50SXRlbSA9PT0gbnVsbCB8fCBjdXJyZW50SXRlbSA9PT0gdm9pZCAwID8gdm9pZCAwIDogY3VycmVudEl0ZW0uZHVyYXRpb24pICE9PSBudWxsICYmIF9kICE9PSB2b2lkIDAgPyBfZCA6IHRoaXMuY29uZmlnU3RhdGUuZHVyYXRpb24sIHRoaXMuY29uZmlnU3RhdGUuZHVyYXRpb24pLCBjbG9zaW5nOiBmYWxzZSB9KTtcbiAgICB9XG4gICAgc3RhcnRUaW1lcihpdGVtKSB7XG4gICAgICAgIHRoaXMuY2xlYXJUaW1lcihpdGVtLmtleSk7XG4gICAgICAgIGlmIChpdGVtLmR1cmF0aW9uIDw9IDApXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNvbnN0IHRpbWVvdXRJZCA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuYmVnaW5DbG9zZShbaXRlbS5rZXldKTtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyKCk7XG4gICAgICAgIH0sIGl0ZW0uZHVyYXRpb24gKiAxMDAwKTtcbiAgICAgICAgdGhpcy50aW1lcnMuc2V0KGl0ZW0ua2V5LCB0aW1lb3V0SWQpO1xuICAgIH1cbiAgICBjbGVhclRpbWVyKGtleSkge1xuICAgICAgICBjb25zdCB0aW1lb3V0SWQgPSB0aGlzLnRpbWVycy5nZXQoa2V5KTtcbiAgICAgICAgaWYgKHRpbWVvdXRJZCA9PT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KHRpbWVvdXRJZCk7XG4gICAgICAgIHRoaXMudGltZXJzLmRlbGV0ZShrZXkpO1xuICAgIH1cbiAgICB0cmltT3ZlcmZsb3coKSB7XG4gICAgICAgIGlmICghTnVtYmVyLmlzRmluaXRlKHRoaXMuY29uZmlnU3RhdGUubWF4Q291bnQpKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBjb25zdCBvdmVyZmxvd0tleXMgPSBOT1RJRklDQVRJT05fUExBQ0VNRU5UUy5mbGF0TWFwKHBsYWNlbWVudCA9PiB7XG4gICAgICAgICAgICBjb25zdCBwbGFjZW1lbnRJdGVtcyA9IHRoaXMuaXRlbXMuZmlsdGVyKGl0ZW0gPT4gaXRlbS5wbGFjZW1lbnQgPT09IHBsYWNlbWVudCAmJiAhaXRlbS5jbG9zaW5nKTtcbiAgICAgICAgICAgIGNvbnN0IG92ZXJmbG93Q291bnQgPSBwbGFjZW1lbnRJdGVtcy5sZW5ndGggLSB0aGlzLmNvbmZpZ1N0YXRlLm1heENvdW50O1xuICAgICAgICAgICAgaWYgKG92ZXJmbG93Q291bnQgPD0gMClcbiAgICAgICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgICAgICByZXR1cm4gcGxhY2VtZW50SXRlbXMuc2xpY2UoMCwgb3ZlcmZsb3dDb3VudCkubWFwKGl0ZW0gPT4gaXRlbS5rZXkpO1xuICAgICAgICB9KTtcbiAgICAgICAgaWYgKCFvdmVyZmxvd0tleXMubGVuZ3RoKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB0aGlzLmJlZ2luQ2xvc2Uob3ZlcmZsb3dLZXlzKTtcbiAgICB9XG4gICAgY2xlYXJSZW1vdmFsVGltZXIoa2V5KSB7XG4gICAgICAgIGNvbnN0IHRpbWVvdXRJZCA9IHRoaXMucmVtb3ZhbFRpbWVycy5nZXQoa2V5KTtcbiAgICAgICAgaWYgKHRpbWVvdXRJZCA9PT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KHRpbWVvdXRJZCk7XG4gICAgICAgIHRoaXMucmVtb3ZhbFRpbWVycy5kZWxldGUoa2V5KTtcbiAgICB9XG4gICAgYmVnaW5DbG9zZShrZXlzKSB7XG4gICAgICAgIGlmICgha2V5cy5sZW5ndGgpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNvbnN0IGtleVNldCA9IG5ldyBTZXQoa2V5cyk7XG4gICAgICAgIGNvbnN0IGNsb3NpbmdLZXlzID0gW107XG4gICAgICAgIHRoaXMuaXRlbXMgPSB0aGlzLml0ZW1zLm1hcChpdGVtID0+IHtcbiAgICAgICAgICAgIGlmICgha2V5U2V0LmhhcyhpdGVtLmtleSkgfHwgaXRlbS5jbG9zaW5nKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmNsZWFyVGltZXIoaXRlbS5rZXkpO1xuICAgICAgICAgICAgY2xvc2luZ0tleXMucHVzaChpdGVtLmtleSk7XG4gICAgICAgICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBpdGVtKSwgeyBjbG9zaW5nOiB0cnVlIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgY2xvc2luZ0tleXMuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgICAgICAgdGhpcy5jbGVhclJlbW92YWxUaW1lcihrZXkpO1xuICAgICAgICAgICAgY29uc3QgdGltZW91dElkID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZmluYWxpemVSZW1vdmUoa2V5KTtcbiAgICAgICAgICAgIH0sIE5PVElGSUNBVElPTl9NT1RJT05fRFVSQVRJT04pO1xuICAgICAgICAgICAgdGhpcy5yZW1vdmFsVGltZXJzLnNldChrZXksIHRpbWVvdXRJZCk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBmaW5hbGl6ZVJlbW92ZShrZXkpIHtcbiAgICAgICAgdGhpcy5jbGVhclJlbW92YWxUaW1lcihrZXkpO1xuICAgICAgICBjb25zdCByZW1vdmVkSXRlbXMgPSB0aGlzLml0ZW1zLmZpbHRlcihpdGVtID0+IGl0ZW0ua2V5ID09PSBrZXkpO1xuICAgICAgICBpZiAoIXJlbW92ZWRJdGVtcy5sZW5ndGgpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIHRoaXMuaXRlbXMgPSB0aGlzLml0ZW1zLmZpbHRlcihpdGVtID0+IGl0ZW0ua2V5ICE9PSBrZXkpO1xuICAgICAgICByZW1vdmVkSXRlbXMuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgIChfYSA9IGl0ZW0ub25DbG9zZSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmNhbGwoaXRlbSk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnJlbmRlcigpO1xuICAgIH1cbiAgICBlbnN1cmVSZW5kZXJlcigpIHtcbiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgIGlmICghY2FuVXNlRE9NKCkpXG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICBpZiAodGhpcy5yZW5kZXJlcilcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZW5kZXJlcjtcbiAgICAgICAgICAgIGlmICh0aGlzLnJlbmRlcmVyUHJvbWlzZSlcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZW5kZXJlclByb21pc2U7XG4gICAgICAgICAgICB0aGlzLmNvbnRhaW5lciA9IGdldE5vdGlmaWNhdGlvblJvb3QoKTtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXJQcm9taXNlID0gY3JlYXRlTm90aWZpY2F0aW9uUmVuZGVyZXIodGhpcy5jb250YWluZXIpXG4gICAgICAgICAgICAgICAgLnRoZW4ocmVuZGVyZXIgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIgPSByZW5kZXJlcjtcbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyUHJvbWlzZSA9IG51bGw7XG4gICAgICAgICAgICAgICAgaWYgKCFyZW5kZXJlcikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbW92ZUNvbnRhaW5lcigpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gcmVuZGVyZXI7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5jYXRjaCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlclByb21pc2UgPSBudWxsO1xuICAgICAgICAgICAgICAgIHRoaXMucmVtb3ZlQ29udGFpbmVyKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnJlbmRlcmVyUHJvbWlzZTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHJlbW92ZUNvbnRhaW5lcigpIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICAoX2EgPSB0aGlzLmNvbnRhaW5lcikgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnJlbW92ZSgpO1xuICAgICAgICB0aGlzLmNvbnRhaW5lciA9IG51bGw7XG4gICAgfVxuICAgIHRlYXJkb3duKCkge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIHRoaXMudGltZXJzLmZvckVhY2goaWQgPT4gd2luZG93LmNsZWFyVGltZW91dChpZCkpO1xuICAgICAgICB0aGlzLnRpbWVycy5jbGVhcigpO1xuICAgICAgICB0aGlzLnJlbW92YWxUaW1lcnMuZm9yRWFjaChpZCA9PiB3aW5kb3cuY2xlYXJUaW1lb3V0KGlkKSk7XG4gICAgICAgIHRoaXMucmVtb3ZhbFRpbWVycy5jbGVhcigpO1xuICAgICAgICAoX2EgPSB0aGlzLnJlbmRlcmVyKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EudW5tb3VudCgpO1xuICAgICAgICB0aGlzLnJlbmRlcmVyID0gbnVsbDtcbiAgICAgICAgdGhpcy5yZW1vdmVDb250YWluZXIoKTtcbiAgICB9XG4gICAgcmVuZGVyTm9kZSgpIHtcbiAgICAgICAgcmV0dXJuIChfanN4KE5vdGlmaWNhdGlvblZpZXdwb3J0LCB7IGl0ZW1zOiB0aGlzLml0ZW1zLCBvbkNsb3NlOiB0aGlzLmhhbmRsZUNsb3NlIH0pKTtcbiAgICB9XG4gICAgcmVuZGVyKCkge1xuICAgICAgICBpZiAoIWNhblVzZURPTSgpKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBpZiAoIXRoaXMuaXRlbXMubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLnRlYXJkb3duKCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMucmVuZGVyZXIpIHtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIucmVuZGVyKHRoaXMucmVuZGVyTm9kZSgpKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB2b2lkIHRoaXMuZW5zdXJlUmVuZGVyZXIoKS50aGVuKHJlbmRlcmVyID0+IHtcbiAgICAgICAgICAgIGlmICghcmVuZGVyZXIpXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgaWYgKCF0aGlzLml0ZW1zLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHRoaXMudGVhcmRvd24oKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZW5kZXJlci5yZW5kZXIodGhpcy5yZW5kZXJOb2RlKCkpO1xuICAgICAgICB9KTtcbiAgICB9XG59XG5jb25zdCBub3RpZmljYXRpb25NYW5hZ2VyID0gbmV3IE5vdGlmaWNhdGlvbk1hbmFnZXIoKTtcbmNvbnN0IG9wZW5Ob3RpZmljYXRpb25XaXRoU3RhdHVzID0gKHN0YXR1cykgPT4gKGNvbmZpZykgPT4gbm90aWZpY2F0aW9uTWFuYWdlci5vcGVuKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgY29uZmlnKSwgeyBzdGF0dXMgfSkpO1xuZXhwb3J0IGNvbnN0IG5vdGlmaWNhdGlvbiA9IHtcbiAgICBvcGVuOiBjb25maWcgPT4gbm90aWZpY2F0aW9uTWFuYWdlci5vcGVuKGNvbmZpZyksXG4gICAgaW5mbzogb3Blbk5vdGlmaWNhdGlvbldpdGhTdGF0dXMoJ2luZm8nKSxcbiAgICBzdWNjZXNzOiBvcGVuTm90aWZpY2F0aW9uV2l0aFN0YXR1cygnc3VjY2VzcycpLFxuICAgIHdhcm5pbmc6IG9wZW5Ob3RpZmljYXRpb25XaXRoU3RhdHVzKCd3YXJuaW5nJyksXG4gICAgZXJyb3I6IG9wZW5Ob3RpZmljYXRpb25XaXRoU3RhdHVzKCdlcnJvcicpLFxuICAgIGRlc3Ryb3k6IGtleSA9PiBub3RpZmljYXRpb25NYW5hZ2VyLmRlc3Ryb3koa2V5KSxcbiAgICBjb25maWc6IGNvbmZpZyA9PiBub3RpZmljYXRpb25NYW5hZ2VyLmNvbmZpZyhjb25maWcpLFxufTtcbmV4cG9ydCBkZWZhdWx0IG5vdGlmaWNhdGlvbjsiLG51bGxdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=
515
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImNvbXBvbmVudHMvTm90aWZpY2F0aW9uL05vdGlmaWNhdGlvblN0YXRpYy5qcyIsImNvbXBvbmVudHMvc3JjL2NvbXBvbmVudHMvTm90aWZpY2F0aW9uL05vdGlmaWNhdGlvblN0YXRpYy50c3giXSwibmFtZXMiOlsiX2pzeFJ1bnRpbWUiLCJyZXF1aXJlIiwiX3JlYWN0IiwiX05vdGlmaWNhdGlvbiIsIl9jbGFzc25hbWVzIiwiX2ludGVyb3BSZXF1aXJlV2lsZGNhcmQiLCJfaW50ZXJmYWNlIiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwiZSIsIldlYWtNYXAiLCJyIiwidCIsIl9fZXNNb2R1bGUiLCJfdHlwZW9mMiIsImhhcyIsImdldCIsIm4iLCJfX3Byb3RvX18iLCJhIiwiT2JqZWN0IiwiZGVmaW5lUHJvcGVydHkiLCJnZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IiLCJ1IiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiaSIsInNldCIsIl9fYXdhaXRlciIsInRoaXNBcmciLCJfYXJndW1lbnRzIiwiUCIsImdlbmVyYXRvciIsImFkb3B0IiwidmFsdWUiLCJyZXNvbHZlIiwiUHJvbWlzZSIsInJlamVjdCIsImZ1bGZpbGxlZCIsInN0ZXAiLCJuZXh0IiwicmVqZWN0ZWQiLCJyZXN1bHQiLCJkb25lIiwidGhlbiIsImFwcGx5IiwiX19yZXN0IiwicyIsInAiLCJwcm90b3R5cGUiLCJpbmRleE9mIiwiZ2V0T3duUHJvcGVydHlTeW1ib2xzIiwibGVuZ3RoIiwicHJvcGVydHlJc0VudW1lcmFibGUiLCJOT1RJRklDQVRJT05fUk9PVF9JRCIsIkRFRkFVTFRfTk9USUZJQ0FUSU9OX1BMQUNFTUVOVCIsIkRFRkFVTFRfTk9USUZJQ0FUSU9OX0RVUkFUSU9OIiwiREVGQVVMVF9OT1RJRklDQVRJT05fTUFYX0NPVU5UIiwiTnVtYmVyIiwiUE9TSVRJVkVfSU5GSU5JVFkiLCJOT1RJRklDQVRJT05fTU9USU9OX0RVUkFUSU9OIiwiREVGQVVMVF9OT1RJRklDQVRJT05fQ09ORklHIiwicGxhY2VtZW50IiwiZHVyYXRpb24iLCJtYXhDb3VudCIsImNhblVzZURPTSIsIndpbmRvdyIsImRvY3VtZW50Iiwibm9ybWFsaXplRHVyYXRpb24iLCJmYWxsYmFjayIsImlzRmluaXRlIiwibm9ybWFsaXplTWF4Q291bnQiLCJNYXRoIiwiZmxvb3IiLCJncm91cE5vdGlmaWNhdGlvbnNCeVBsYWNlbWVudCIsIml0ZW1zIiwiZ3JvdXBlZEl0ZW1zIiwiTk9USUZJQ0FUSU9OX1BMQUNFTUVOVFMiLCJmb3JFYWNoIiwiaXRlbSIsInB1c2giLCJnZXROb3RpZmljYXRpb25Sb290IiwiZXhpc3RpbmdSb290IiwiZ2V0RWxlbWVudEJ5SWQiLCJIVE1MRGl2RWxlbWVudCIsInJvb3QiLCJjcmVhdGVFbGVtZW50IiwiaWQiLCJib2R5IiwiYXBwZW5kQ2hpbGQiLCJjcmVhdGVOb3RpZmljYXRpb25SZW5kZXJlciIsImNvbnRhaW5lciIsIl9yZWdlbmVyYXRvciIsIm1hcmsiLCJfY2FsbGVlIiwicmVhY3REb21DbGllbnQiLCJyZWFjdERvbSIsIl90Iiwid3JhcCIsIl9jb250ZXh0IiwicHJldiIsInNlbnQiLCJjcmVhdGVSb290IiwiYWJydXB0IiwicmVuZGVyIiwiZWxlbWVudCIsInVubW91bnQiLCJ1bm1vdW50Q29tcG9uZW50QXROb2RlIiwiX2EiLCJzdG9wIiwiTm90aWZpY2F0aW9uTW90aW9uSXRlbSIsIl9yZWYiLCJjb2xsYXBzZU9uRXhpdCIsIm9uQ2xvc2UiLCJjbGFzc2VzIiwiY2xhc3NuYW1lcyIsIl91c2VTdGF0ZSIsInVzZVN0YXRlIiwiX3VzZVN0YXRlMiIsIl9zbGljZWRUb0FycmF5MiIsImVudGVyZWQiLCJzZXRFbnRlcmVkIiwidXNlRWZmZWN0IiwiY2xvc2luZyIsInVuZGVmaW5lZCIsImZyYW1lIiwicmVxdWVzdEFuaW1hdGlvbkZyYW1lIiwiY2FuY2VsQW5pbWF0aW9uRnJhbWUiLCJrZXkiLCJub3RpZmljYXRpb25Qcm9wcyIsIm1vdGlvbkNsYXNzTmFtZSIsImpvaW5DbHMiLCJfanN4IiwiY2xhc3NOYW1lIiwiY2hpbGRyZW4iLCJNZW1vaXplZE5vdGlmaWNhdGlvbiIsImFzc2lnbiIsIk5vdGlmaWNhdGlvblZpZXdwb3J0IiwiX3JlZjIiLCJpdGVtc0J5UGxhY2VtZW50IiwibWFwIiwicGxhY2VtZW50SXRlbXMiLCJhY3RpdmVDb3VudCIsImZpbHRlciIsImNvbmNhdCIsIlN0cmluZyIsIk5vdGlmaWNhdGlvbk1hbmFnZXIiLCJfdGhpcyIsIl9jbGFzc0NhbGxDaGVjazIiLCJyZW5kZXJlciIsInJlbmRlcmVyUHJvbWlzZSIsInRpbWVycyIsIk1hcCIsInJlbW92YWxUaW1lcnMiLCJrZXlTZWVkIiwiY29uZmlnU3RhdGUiLCJvcGVuIiwiY29uZmlnIiwiY3JlYXRlS2V5IiwiY3VycmVudEl0ZW0iLCJmaW5kIiwibmV4dEl0ZW0iLCJjcmVhdGVSZWNvcmQiLCJfdG9Db25zdW1hYmxlQXJyYXkyIiwiY2xlYXJSZW1vdmFsVGltZXIiLCJzdGFydFRpbWVyIiwidHJpbU92ZXJmbG93IiwiZGVzdHJveSIsImJlZ2luQ2xvc2UiLCJfYiIsIl9jIiwiaGFuZGxlQ2xvc2UiLCJfY3JlYXRlQ2xhc3MyIiwiX2QiLCJtZXJnZWRDb25maWciLCJfdGhpczIiLCJjbGVhclRpbWVyIiwidGltZW91dElkIiwic2V0VGltZW91dCIsImNsZWFyVGltZW91dCIsIl90aGlzMyIsIm92ZXJmbG93S2V5cyIsImZsYXRNYXAiLCJvdmVyZmxvd0NvdW50Iiwic2xpY2UiLCJrZXlzIiwiX3RoaXM0Iiwia2V5U2V0IiwiU2V0IiwiY2xvc2luZ0tleXMiLCJmaW5hbGl6ZVJlbW92ZSIsInJlbW92ZWRJdGVtcyIsImVuc3VyZVJlbmRlcmVyIiwiX2NhbGxlZTIiLCJfdGhpczUiLCJfY29udGV4dDIiLCJyZW1vdmVDb250YWluZXIiLCJyZW1vdmUiLCJ0ZWFyZG93biIsImNsZWFyIiwicmVuZGVyTm9kZSIsIl90aGlzNiIsIm5vdGlmaWNhdGlvbk1hbmFnZXIiLCJvcGVuTm90aWZpY2F0aW9uV2l0aFN0YXR1cyIsInN0YXR1cyIsIm5vdGlmaWNhdGlvbiIsImV4cG9ydHMiLCJpbmZvIiwic3VjY2VzcyIsIndhcm5pbmciLCJlcnJvciIsIl9kZWZhdWx0Il0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBb0JBLElBQUFBLFdBQUEsR0FBQUMsT0FBQTtBQ3BCQSxJQUFBQyxNQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxhQUFBLEdBQUFGLE9BQUE7QUFDQSxJQUFBRyxXQUFBLEdBQUFDLHVCQUFBLENBQUFKLE9BQUE7QUFDQUEsT0FBQTtBQVNBLElBQUFLLFVBQUEsR0FBQUwsT0FBQTtBQUFzRCxTQUFBTSx5QkFBQUMsQ0FBQSw2QkFBQUMsT0FBQSxtQkFBQUMsQ0FBQSxPQUFBRCxPQUFBLElBQUFFLENBQUEsT0FBQUYsT0FBQSxZQUFBRix3QkFBQSxZQUFBQSx5QkFBQUMsQ0FBQSxXQUFBQSxDQUFBLEdBQUFHLENBQUEsR0FBQUQsQ0FBQSxLQUFBRixDQUFBO0FBQUEsU0FBQUgsd0JBQUFHLENBQUEsRUFBQUUsQ0FBQSxTQUFBQSxDQUFBLElBQUFGLENBQUEsSUFBQUEsQ0FBQSxDQUFBSSxVQUFBLFNBQUFKLENBQUEsZUFBQUEsQ0FBQSxvQkFBQUssUUFBQSxhQUFBTCxDQUFBLDBCQUFBQSxDQUFBLHNCQUFBQSxDQUFBLFFBQUFHLENBQUEsR0FBQUosd0JBQUEsQ0FBQUcsQ0FBQSxPQUFBQyxDQUFBLElBQUFBLENBQUEsQ0FBQUcsR0FBQSxDQUFBTixDQUFBLFVBQUFHLENBQUEsQ0FBQUksR0FBQSxDQUFBUCxDQUFBLE9BQUFRLENBQUEsS0FBQUMsU0FBQSxVQUFBQyxDQUFBLEdBQUFDLE1BQUEsQ0FBQUMsY0FBQSxJQUFBRCxNQUFBLENBQUFFLHdCQUFBLFdBQUFDLENBQUEsSUFBQWQsQ0FBQSxvQkFBQWMsQ0FBQSxPQUFBQyxjQUFBLENBQUFDLElBQUEsQ0FBQWhCLENBQUEsRUFBQWMsQ0FBQSxTQUFBRyxDQUFBLEdBQUFQLENBQUEsR0FBQUMsTUFBQSxDQUFBRSx3QkFBQSxDQUFBYixD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RStDLE1BQU0sRUFBTkE7SUFBTSxDQUFBLENBQUEsQ0FBRztFQUFBO0FBQUE7QUFFOUMsSUFBTUMsWUFBWSxHQUFBQyxPQUFBLENBQUFELFlBQUEsR0FBMEI7RUFDakRqRCxJQUFJLEVBQUUsU0FBTkEsSUFBSUEsQ0FBRUMsTUFBTTtJQUFBLE9BQUk2QyxtQkFBbUIsQ0FBQzlDLElBQUksQ0FBQ0MsTUFBTSxDQUFDO0VBQUE7RUFDaERrRCxJQUFJLEVBQUVKLDBCQUEwQixDQUFDLE1BQU0sQ0FBQztFQUN4Q0ssT0FBTyxFQUFFTCwwQkFBMEIsQ0FBQyxTQUFTLENBQUM7RUFDOUNNLE9BQU8sRUFBRU4sMEJBQTBCLENBQUMsU0FBUyxDQUFDO0VBQzlDTyxLQUFLLEVBQUVQLDBCQUEwQixDQUFDLE9BQU8sQ0FBQztFQUMxQ3BDLE9BQU8sRUFBRSxTQUFUQSxPQUFPQSxDQUFFdkMsR0FBRztJQUFBLE9BQUkwRSxtQkFBbUIsQ0FBQ25DLE9BQU8sQ0FBQ3ZDLEdBQUcsQ0FBQztFQUFBO0VBQ2hENkIsTUFBTSxFQUFFLFNBQVJBLE1BQU1BLENBQUVBLE9BQU07SUFBQSxPQUFJNkMsbUJBQW1CLENBQUM3QyxNQUFNLENBQUNBLE9BQU0sQ0FBQztFQUFBO0FEM0l0RCxDQzRJQztBQUFDLElBQUFzRCxRQUFBLEdBQUFMLE9BQUEsY0FFYUQsWUFBWSIsImZpbGUiOiJjb21wb25lbnRzL05vdGlmaWNhdGlvbi9Ob3RpZmljYXRpb25TdGF0aWMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJ2YXIgX19hd2FpdGVyID0gKHRoaXMgJiYgdGhpcy5fX2F3YWl0ZXIpIHx8IGZ1bmN0aW9uICh0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcbiAgICBmdW5jdGlvbiBhZG9wdCh2YWx1ZSkgeyByZXR1cm4gdmFsdWUgaW5zdGFuY2VvZiBQID8gdmFsdWUgOiBuZXcgUChmdW5jdGlvbiAocmVzb2x2ZSkgeyByZXNvbHZlKHZhbHVlKTsgfSk7IH1cbiAgICByZXR1cm4gbmV3IChQIHx8IChQID0gUHJvbWlzZSkpKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgZnVuY3Rpb24gZnVsZmlsbGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yLm5leHQodmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cbiAgICAgICAgZnVuY3Rpb24gc3RlcChyZXN1bHQpIHsgcmVzdWx0LmRvbmUgPyByZXNvbHZlKHJlc3VsdC52YWx1ZSkgOiBhZG9wdChyZXN1bHQudmFsdWUpLnRoZW4oZnVsZmlsbGVkLCByZWplY3RlZCk7IH1cbiAgICAgICAgc3RlcCgoZ2VuZXJhdG9yID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pKS5uZXh0KCkpO1xuICAgIH0pO1xufTtcbnZhciBfX3Jlc3QgPSAodGhpcyAmJiB0aGlzLl9fcmVzdCkgfHwgZnVuY3Rpb24gKHMsIGUpIHtcbiAgICB2YXIgdCA9IHt9O1xuICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSAmJiBlLmluZGV4T2YocCkgPCAwKVxuICAgICAgICB0W3BdID0gc1twXTtcbiAgICBpZiAocyAhPSBudWxsICYmIHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzID09PSBcImZ1bmN0aW9uXCIpXG4gICAgICAgIGZvciAodmFyIGkgPSAwLCBwID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzKTsgaSA8IHAubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChlLmluZGV4T2YocFtpXSkgPCAwICYmIE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzLCBwW2ldKSlcbiAgICAgICAgICAgICAgICB0W3BbaV1dID0gc1twW2ldXTtcbiAgICAgICAgfVxuICAgIHJldHVybiB0O1xufTtcbmltcG9ydCB7IGpzeCBhcyBfanN4IH0gZnJvbSBcInJlYWN0L2pzeC1ydW50aW1lXCI7XG5pbXBvcnQgeyB1c2VFZmZlY3QsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgTWVtb2l6ZWROb3RpZmljYXRpb24gfSBmcm9tICcuL05vdGlmaWNhdGlvbic7XG5pbXBvcnQgeyBkZWZhdWx0IGFzIGNsYXNzbmFtZXMsIGpvaW5DbHMgfSBmcm9tICcuLi8uLi91dGlscy9jbGFzc25hbWVzJztcbmltcG9ydCAnLi9zdHlsZSc7XG5pbXBvcnQgeyBOT1RJRklDQVRJT05fUExBQ0VNRU5UUyB9IGZyb20gJy4vaW50ZXJmYWNlJztcbmNvbnN0IE5PVElGSUNBVElPTl9ST09UX0lEID0gJ29tLWNvbXBvbmVudC11aS1ub3RpZmljYXRpb24tcm9vdCc7XG5jb25zdCBERUZBVUxUX05PVElGSUNBVElPTl9QTEFDRU1FTlQgPSAndG9wUmlnaHQnO1xuY29uc3QgREVGQVVMVF9OT1RJRklDQVRJT05fRFVSQVRJT04gPSA0LjU7XG5jb25zdCBERUZBVUxUX05PVElGSUNBVElPTl9NQVhfQ09VTlQgPSBOdW1iZXIuUE9TSVRJVkVfSU5GSU5JVFk7XG5jb25zdCBOT1RJRklDQVRJT05fTU9USU9OX0RVUkFUSU9OID0gMjQwO1xuY29uc3QgREVGQVVMVF9OT1RJRklDQVRJT05fQ09ORklHID0ge1xuICAgIHBsYWNlbWVudDogREVGQVVMVF9OT1RJRklDQVRJT05fUExBQ0VNRU5ULFxuICAgIGR1cmF0aW9uOiBERUZBVUxUX05PVElGSUNBVElPTl9EVVJBVElPTixcbiAgICBtYXhDb3VudDogREVGQVVMVF9OT1RJRklDQVRJT05fTUFYX0NPVU5ULFxufTtcbmNvbnN0IGNhblVzZURPTSA9ICgpID0+IHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiBkb2N1bWVudCAhPT0gJ3VuZGVmaW5lZCc7XG5jb25zdCBub3JtYWxpemVEdXJhdGlvbiA9ICh2YWx1ZSwgZmFsbGJhY2spID0+IHtcbiAgICBpZiAodmFsdWUgPD0gMClcbiAgICAgICAgcmV0dXJuIDA7XG4gICAgcmV0dXJuIE51bWJlci5pc0Zpbml0ZSh2YWx1ZSkgPyB2YWx1ZSA6IGZhbGxiYWNrO1xufTtcbmNvbnN0IG5vcm1hbGl6ZU1heENvdW50ID0gKHZhbHVlKSA9PiB7XG4gICAgaWYgKCFOdW1iZXIuaXNGaW5pdGUodmFsdWUpIHx8IHZhbHVlIDw9IDApIHtcbiAgICAgICAgcmV0dXJuIERFRkFVTFRfTk9USUZJQ0FUSU9OX01BWF9DT1VOVDtcbiAgICB9XG4gICAgcmV0dXJuIE1hdGguZmxvb3IodmFsdWUpO1xufTtcbmNvbnN0IGdyb3VwTm90aWZpY2F0aW9uc0J5UGxhY2VtZW50ID0gKGl0ZW1zKSA9PiB7XG4gICAgY29uc3QgZ3JvdXBlZEl0ZW1zID0ge307XG4gICAgTk9USUZJQ0FUSU9OX1BMQUNFTUVOVFMuZm9yRWFjaChwbGFjZW1lbnQgPT4ge1xuICAgICAgICBncm91cGVkSXRlbXNbcGxhY2VtZW50XSA9IFtdO1xuICAgIH0pO1xuICAgIGl0ZW1zLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgIGdyb3VwZWRJdGVtc1tpdGVtLnBsYWNlbWVudF0ucHVzaChpdGVtKTtcbiAgICB9KTtcbiAgICByZXR1cm4gZ3JvdXBlZEl0ZW1zO1xufTtcbmNvbnN0IGdldE5vdGlmaWNhdGlvblJvb3QgPSAoKSA9PiB7XG4gICAgY29uc3QgZXhpc3RpbmdSb290ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoTk9USUZJQ0FUSU9OX1JPT1RfSUQpO1xuICAgIGlmIChleGlzdGluZ1Jvb3QgaW5zdGFuY2VvZiBIVE1MRGl2RWxlbWVudCkge1xuICAgICAgICByZXR1cm4gZXhpc3RpbmdSb290O1xuICAgIH1cbiAgICBjb25zdCByb290ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgcm9vdC5pZCA9IE5PVElGSUNBVElPTl9ST09UX0lEO1xuICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQocm9vdCk7XG4gICAgcmV0dXJuIHJvb3Q7XG59O1xuY29uc3QgY3JlYXRlTm90aWZpY2F0aW9uUmVuZGVyZXIgPSAoY29udGFpbmVyKSA9PiBfX2F3YWl0ZXIodm9pZCAwLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICB0cnkge1xuICAgICAgICBjb25zdCByZWFjdERvbUNsaWVudCA9IHlpZWxkIGltcG9ydCgncmVhY3QtZG9tL2NsaWVudCcpO1xuICAgICAgICBjb25zdCByb290ID0gcmVhY3REb21DbGllbnQuY3JlYXRlUm9vdChjb250YWluZXIpO1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcmVuZGVyOiBlbGVtZW50ID0+IHtcbiAgICAgICAgICAgICAgICByb290LnJlbmRlcihlbGVtZW50KTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB1bm1vdW50OiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgcm9vdC51bm1vdW50KCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICB9O1xuICAgIH1cbiAgICBjYXRjaCAoX2EpIHtcbiAgICAgICAgLy8gRmFsbGJhY2sgZm9yIFJlYWN0IDwgMTggd2hlcmUgcmVhY3QtZG9tL2NsaWVudCBpcyB1bmF2YWlsYWJsZVxuICAgICAgICBjb25zdCByZWFjdERvbSA9IHlpZWxkIGltcG9ydCgncmVhY3QtZG9tJyk7XG4gICAgICAgIGlmICh0eXBlb2YgcmVhY3REb20ucmVuZGVyICE9PSAnZnVuY3Rpb24nIHx8XG4gICAgICAgICAgICB0eXBlb2YgcmVhY3REb20udW5tb3VudENvbXBvbmVudEF0Tm9kZSAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHJlbmRlcjogZWxlbWVudCA9PiB7XG4gICAgICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgICAgIChfYSA9IHJlYWN0RG9tLnJlbmRlcikgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmNhbGwocmVhY3REb20sIGVsZW1lbnQsIGNvbnRhaW5lcik7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgdW5tb3VudDogKCkgPT4ge1xuICAgICAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgICAgICAoX2EgPSByZWFjdERvbS51bm1vdW50Q29tcG9uZW50QXROb2RlKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EuY2FsbChyZWFjdERvbSwgY29udGFpbmVyKTtcbiAgICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgfVxufSk7XG5jb25zdCBOb3RpZmljYXRpb25Nb3Rpb25JdGVtID0gKHsgaXRlbSwgY29sbGFwc2VPbkV4aXQsIG9uQ2xvc2UgfSkgPT4ge1xuICAgIGNvbnN0IGNsYXNzZXMgPSBjbGFzc25hbWVzKCdub3RpZmljYXRpb24nKTtcbiAgICBjb25zdCBbZW50ZXJlZCwgc2V0RW50ZXJlZF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgaWYgKGl0ZW0uY2xvc2luZyB8fCB0eXBlb2Ygd2luZG93ID09PSAndW5kZWZpbmVkJylcbiAgICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICAgIGNvbnN0IGZyYW1lID0gd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7XG4gICAgICAgICAgICBzZXRFbnRlcmVkKHRydWUpO1xuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuICgpID0+IHtcbiAgICAgICAgICAgIHdpbmRvdy5jYW5jZWxBbmltYXRpb25GcmFtZShmcmFtZSk7XG4gICAgICAgIH07XG4gICAgfSwgW2l0ZW0uY2xvc2luZywgaXRlbS5rZXldKTtcbiAgICBjb25zdCB7IGtleSwgZHVyYXRpb24sIHBsYWNlbWVudCwgY2xvc2luZyB9ID0gaXRlbSwgbm90aWZpY2F0aW9uUHJvcHMgPSBfX3Jlc3QoaXRlbSwgW1wia2V5XCIsIFwiZHVyYXRpb25cIiwgXCJwbGFjZW1lbnRcIiwgXCJjbG9zaW5nXCJdKTtcbiAgICBjb25zdCBtb3Rpb25DbGFzc05hbWUgPSBjbG9zaW5nXG4gICAgICAgID8gam9pbkNscyhjbGFzc2VzKCdpdGVtLWV4aXQnKSwgY29sbGFwc2VPbkV4aXQgPyBjbGFzc2VzKCdpdGVtLWV4aXQtY29sbGFwc2UnKSA6ICcnKVxuICAgICAgICA6IGVudGVyZWRcbiAgICAgICAgICAgID8gY2xhc3NlcygnaXRlbS1hY3RpdmUnKVxuICAgICAgICAgICAgOiBjbGFzc2VzKCdpdGVtLWVudGVyJyk7XG4gICAgcmV0dXJuIChfanN4KFwiZGl2XCIsIHsgY2xhc3NOYW1lOiBqb2luQ2xzKGNsYXNzZXMoJ2l0ZW0nKSwgbW90aW9uQ2xhc3NOYW1lKSwgY2hpbGRyZW46IF9qc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ2l0ZW0taW5uZXInKSwgY2hpbGRyZW46IF9qc3goTWVtb2l6ZWROb3RpZmljYXRpb24sIE9iamVjdC5hc3NpZ24oe30sIG5vdGlmaWNhdGlvblByb3BzLCB7IG9uQ2xvc2U6ICgpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgb25DbG9zZShrZXkpO1xuICAgICAgICAgICAgICAgIH0gfSkpIH0pIH0pKTtcbn07XG5jb25zdCBOb3RpZmljYXRpb25WaWV3cG9ydCA9ICh7IGl0ZW1zLCBvbkNsb3NlIH0pID0+IHtcbiAgICBjb25zdCBjbGFzc2VzID0gY2xhc3NuYW1lcygnbm90aWZpY2F0aW9uJyk7XG4gICAgY29uc3QgaXRlbXNCeVBsYWNlbWVudCA9IGdyb3VwTm90aWZpY2F0aW9uc0J5UGxhY2VtZW50KGl0ZW1zKTtcbiAgICByZXR1cm4gKF9qc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IGNsYXNzZXMoJ3ZpZXdwb3J0JyksIFwiYXJpYS1saXZlXCI6IFwicG9saXRlXCIsIFwiYXJpYS1hdG9taWNcIjogXCJmYWxzZVwiLCBjaGlsZHJlbjogTk9USUZJQ0FUSU9OX1BMQUNFTUVOVFMubWFwKHBsYWNlbWVudCA9PiB7XG4gICAgICAgICAgICBjb25zdCBwbGFjZW1lbnRJdGVtcyA9IGl0ZW1zQnlQbGFjZW1lbnRbcGxhY2VtZW50XTtcbiAgICAgICAgICAgIGlmICghcGxhY2VtZW50SXRlbXMubGVuZ3RoKVxuICAgICAgICAgICAgICAgIHJldHVybiBudWxsO1xuICAgICAgICAgICAgY29uc3QgYWN0aXZlQ291bnQgPSBwbGFjZW1lbnRJdGVtcy5maWx0ZXIoaSA9PiAhaS5jbG9zaW5nKS5sZW5ndGg7XG4gICAgICAgICAgICByZXR1cm4gKF9qc3goXCJkaXZcIiwgeyBjbGFzc05hbWU6IGpvaW5DbHMoY2xhc3Nlcygnc3RhY2snKSwgY2xhc3Nlcyhgc3RhY2stJHtwbGFjZW1lbnR9YCkpLCBjaGlsZHJlbjogcGxhY2VtZW50SXRlbXMubWFwKGl0ZW0gPT4gKF9qc3goTm90aWZpY2F0aW9uTW90aW9uSXRlbSwgeyBpdGVtOiBpdGVtLCBjb2xsYXBzZU9uRXhpdDogaXRlbS5jbG9zaW5nICYmIGFjdGl2ZUNvdW50ID4gMCwgb25DbG9zZTogb25DbG9zZSB9LCBTdHJpbmcoaXRlbS5rZXkpKSkpIH0sIHBsYWNlbWVudCkpO1xuICAgICAgICB9KSB9KSk7XG59O1xuY2xhc3MgTm90aWZpY2F0aW9uTWFuYWdlciB7XG4gICAgY29uc3RydWN0b3IoKSB7XG4gICAgICAgIHRoaXMuY29udGFpbmVyID0gbnVsbDtcbiAgICAgICAgdGhpcy5yZW5kZXJlciA9IG51bGw7XG4gICAgICAgIHRoaXMucmVuZGVyZXJQcm9taXNlID0gbnVsbDtcbiAgICAgICAgdGhpcy5pdGVtcyA9IFtdO1xuICAgICAgICB0aGlzLnRpbWVycyA9IG5ldyBNYXAoKTtcbiAgICAgICAgdGhpcy5yZW1vdmFsVGltZXJzID0gbmV3IE1hcCgpO1xuICAgICAgICB0aGlzLmtleVNlZWQgPSAwO1xuICAgICAgICB0aGlzLmNvbmZpZ1N0YXRlID0gREVGQVVMVF9OT1RJRklDQVRJT05fQ09ORklHO1xuICAgICAgICB0aGlzLm9wZW4gPSAoY29uZmlnKSA9PiB7XG4gICAgICAgICAgICB2YXIgX2E7XG4gICAgICAgICAgICBjb25zdCBrZXkgPSAoX2EgPSBjb25maWcua2V5KSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiB0aGlzLmNyZWF0ZUtleSgpO1xuICAgICAgICAgICAgaWYgKCFjYW5Vc2VET00oKSkge1xuICAgICAgICAgICAgICAgIHJldHVybiBrZXk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBjb25zdCBjdXJyZW50SXRlbSA9IHRoaXMuaXRlbXMuZmluZChpdGVtID0+IGl0ZW0ua2V5ID09PSBrZXkpO1xuICAgICAgICAgICAgY29uc3QgbmV4dEl0ZW0gPSB0aGlzLmNyZWF0ZVJlY29yZChrZXksIGNvbmZpZywgY3VycmVudEl0ZW0pO1xuICAgICAgICAgICAgaWYgKCFjdXJyZW50SXRlbSkge1xuICAgICAgICAgICAgICAgIHRoaXMuaXRlbXMgPSBbLi4udGhpcy5pdGVtcywgbmV4dEl0ZW1dO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoY3VycmVudEl0ZW0ucGxhY2VtZW50ID09PSBuZXh0SXRlbS5wbGFjZW1lbnQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLml0ZW1zID0gdGhpcy5pdGVtcy5tYXAoaXRlbSA9PiAoaXRlbS5rZXkgPT09IGtleSA/IG5leHRJdGVtIDogaXRlbSkpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5pdGVtcyA9IFsuLi50aGlzLml0ZW1zLmZpbHRlcihpdGVtID0+IGl0ZW0ua2V5ICE9PSBrZXkpLCBuZXh0SXRlbV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmNsZWFyUmVtb3ZhbFRpbWVyKGtleSk7XG4gICAgICAgICAgICB0aGlzLnN0YXJ0VGltZXIobmV4dEl0ZW0pO1xuICAgICAgICAgICAgdGhpcy50cmltT3ZlcmZsb3coKTtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyKCk7XG4gICAgICAgICAgICByZXR1cm4ga2V5O1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLmRlc3Ryb3kgPSBrZXkgPT4ge1xuICAgICAgICAgICAgaWYgKGtleSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5iZWdpbkNsb3NlKHRoaXMuaXRlbXMubWFwKGl0ZW0gPT4gaXRlbS5rZXkpKTtcbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcigpO1xuICAgICAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuYmVnaW5DbG9zZShba2V5XSk7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcigpO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLmNvbmZpZyA9IGNvbmZpZyA9PiB7XG4gICAgICAgICAgICB2YXIgX2EsIF9iLCBfYztcbiAgICAgICAgICAgIHRoaXMuY29uZmlnU3RhdGUgPSB7XG4gICAgICAgICAgICAgICAgcGxhY2VtZW50OiAoX2EgPSBjb25maWcucGxhY2VtZW50KSAhPT0gbnVsbCAmJiBfYSAhPT0gdm9pZCAwID8gX2EgOiB0aGlzLmNvbmZpZ1N0YXRlLnBsYWNlbWVudCxcbiAgICAgICAgICAgICAgICBkdXJhdGlvbjogbm9ybWFsaXplRHVyYXRpb24oKF9iID0gY29uZmlnLmR1cmF0aW9uKSAhPT0gbnVsbCAmJiBfYiAhPT0gdm9pZCAwID8gX2IgOiB0aGlzLmNvbmZpZ1N0YXRlLmR1cmF0aW9uLCB0aGlzLmNvbmZpZ1N0YXRlLmR1cmF0aW9uKSxcbiAgICAgICAgICAgICAgICBtYXhDb3VudDogbm9ybWFsaXplTWF4Q291bnQoKF9jID0gY29uZmlnLm1heENvdW50KSAhPT0gbnVsbCAmJiBfYyAhPT0gdm9pZCAwID8gX2MgOiB0aGlzLmNvbmZpZ1N0YXRlLm1heENvdW50KSxcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICB0aGlzLnRyaW1PdmVyZmxvdygpO1xuICAgICAgICAgICAgdGhpcy5yZW5kZXIoKTtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5oYW5kbGVDbG9zZSA9IChrZXkpID0+IHtcbiAgICAgICAgICAgIHRoaXMuYmVnaW5DbG9zZShba2V5XSk7XG4gICAgICAgICAgICB0aGlzLnJlbmRlcigpO1xuICAgICAgICB9O1xuICAgIH1cbiAgICBjcmVhdGVLZXkoKSB7XG4gICAgICAgIHRoaXMua2V5U2VlZCArPSAxO1xuICAgICAgICByZXR1cm4gYG5vdGlmaWNhdGlvbi0ke3RoaXMua2V5U2VlZH1gO1xuICAgIH1cbiAgICBjcmVhdGVSZWNvcmQoa2V5LCBjb25maWcsIGN1cnJlbnRJdGVtKSB7XG4gICAgICAgIHZhciBfYSwgX2IsIF9jLCBfZDtcbiAgICAgICAgY29uc3QgbWVyZ2VkQ29uZmlnID0gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBjdXJyZW50SXRlbSksIGNvbmZpZyk7XG4gICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKE9iamVjdC5hc3NpZ24oe30sIG1lcmdlZENvbmZpZyksIHsga2V5LCBwbGFjZW1lbnQ6IChfYiA9IChfYSA9IGNvbmZpZy5wbGFjZW1lbnQpICE9PSBudWxsICYmIF9hICE9PSB2b2lkIDAgPyBfYSA6IGN1cnJlbnRJdGVtID09PSBudWxsIHx8IGN1cnJlbnRJdGVtID09PSB2b2lkIDAgPyB2b2lkIDAgOiBjdXJyZW50SXRlbS5wbGFjZW1lbnQpICE9PSBudWxsICYmIF9iICE9PSB2b2lkIDAgPyBfYiA6IHRoaXMuY29uZmlnU3RhdGUucGxhY2VtZW50LCBkdXJhdGlvbjogbm9ybWFsaXplRHVyYXRpb24oKF9kID0gKF9jID0gY29uZmlnLmR1cmF0aW9uKSAhPT0gbnVsbCAmJiBfYyAhPT0gdm9pZCAwID8gX2MgOiBjdXJyZW50SXRlbSA9PT0gbnVsbCB8fCBjdXJyZW50SXRlbSA9PT0gdm9pZCAwID8gdm9pZCAwIDogY3VycmVudEl0ZW0uZHVyYXRpb24pICE9PSBudWxsICYmIF9kICE9PSB2b2lkIDAgPyBfZCA6IHRoaXMuY29uZmlnU3RhdGUuZHVyYXRpb24sIHRoaXMuY29uZmlnU3RhdGUuZHVyYXRpb24pLCBjbG9zaW5nOiBmYWxzZSB9KTtcbiAgICB9XG4gICAgc3RhcnRUaW1lcihpdGVtKSB7XG4gICAgICAgIHRoaXMuY2xlYXJUaW1lcihpdGVtLmtleSk7XG4gICAgICAgIGlmIChpdGVtLmR1cmF0aW9uIDw9IDApXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNvbnN0IHRpbWVvdXRJZCA9IHdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuYmVnaW5DbG9zZShbaXRlbS5rZXldKTtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyKCk7XG4gICAgICAgIH0sIGl0ZW0uZHVyYXRpb24gKiAxMDAwKTtcbiAgICAgICAgdGhpcy50aW1lcnMuc2V0KGl0ZW0ua2V5LCB0aW1lb3V0SWQpO1xuICAgIH1cbiAgICBjbGVhclRpbWVyKGtleSkge1xuICAgICAgICBjb25zdCB0aW1lb3V0SWQgPSB0aGlzLnRpbWVycy5nZXQoa2V5KTtcbiAgICAgICAgaWYgKHRpbWVvdXRJZCA9PT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KHRpbWVvdXRJZCk7XG4gICAgICAgIHRoaXMudGltZXJzLmRlbGV0ZShrZXkpO1xuICAgIH1cbiAgICB0cmltT3ZlcmZsb3coKSB7XG4gICAgICAgIGlmICghTnVtYmVyLmlzRmluaXRlKHRoaXMuY29uZmlnU3RhdGUubWF4Q291bnQpKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBjb25zdCBvdmVyZmxvd0tleXMgPSBOT1RJRklDQVRJT05fUExBQ0VNRU5UUy5mbGF0TWFwKHBsYWNlbWVudCA9PiB7XG4gICAgICAgICAgICBjb25zdCBwbGFjZW1lbnRJdGVtcyA9IHRoaXMuaXRlbXMuZmlsdGVyKGl0ZW0gPT4gaXRlbS5wbGFjZW1lbnQgPT09IHBsYWNlbWVudCAmJiAhaXRlbS5jbG9zaW5nKTtcbiAgICAgICAgICAgIGNvbnN0IG92ZXJmbG93Q291bnQgPSBwbGFjZW1lbnRJdGVtcy5sZW5ndGggLSB0aGlzLmNvbmZpZ1N0YXRlLm1heENvdW50O1xuICAgICAgICAgICAgaWYgKG92ZXJmbG93Q291bnQgPD0gMClcbiAgICAgICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgICAgICByZXR1cm4gcGxhY2VtZW50SXRlbXMuc2xpY2UoMCwgb3ZlcmZsb3dDb3VudCkubWFwKGl0ZW0gPT4gaXRlbS5rZXkpO1xuICAgICAgICB9KTtcbiAgICAgICAgaWYgKCFvdmVyZmxvd0tleXMubGVuZ3RoKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB0aGlzLmJlZ2luQ2xvc2Uob3ZlcmZsb3dLZXlzKTtcbiAgICB9XG4gICAgY2xlYXJSZW1vdmFsVGltZXIoa2V5KSB7XG4gICAgICAgIGNvbnN0IHRpbWVvdXRJZCA9IHRoaXMucmVtb3ZhbFRpbWVycy5nZXQoa2V5KTtcbiAgICAgICAgaWYgKHRpbWVvdXRJZCA9PT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICB3aW5kb3cuY2xlYXJUaW1lb3V0KHRpbWVvdXRJZCk7XG4gICAgICAgIHRoaXMucmVtb3ZhbFRpbWVycy5kZWxldGUoa2V5KTtcbiAgICB9XG4gICAgYmVnaW5DbG9zZShrZXlzKSB7XG4gICAgICAgIGlmICgha2V5cy5sZW5ndGgpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIGNvbnN0IGtleVNldCA9IG5ldyBTZXQoa2V5cyk7XG4gICAgICAgIGNvbnN0IGNsb3NpbmdLZXlzID0gW107XG4gICAgICAgIHRoaXMuaXRlbXMgPSB0aGlzLml0ZW1zLm1hcChpdGVtID0+IHtcbiAgICAgICAgICAgIGlmICgha2V5U2V0LmhhcyhpdGVtLmtleSkgfHwgaXRlbS5jbG9zaW5nKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmNsZWFyVGltZXIoaXRlbS5rZXkpO1xuICAgICAgICAgICAgY2xvc2luZ0tleXMucHVzaChpdGVtLmtleSk7XG4gICAgICAgICAgICByZXR1cm4gT2JqZWN0LmFzc2lnbihPYmplY3QuYXNzaWduKHt9LCBpdGVtKSwgeyBjbG9zaW5nOiB0cnVlIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgY2xvc2luZ0tleXMuZm9yRWFjaChrZXkgPT4ge1xuICAgICAgICAgICAgdGhpcy5jbGVhclJlbW92YWxUaW1lcihrZXkpO1xuICAgICAgICAgICAgY29uc3QgdGltZW91dElkID0gd2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuZmluYWxpemVSZW1vdmUoa2V5KTtcbiAgICAgICAgICAgIH0sIE5PVElGSUNBVElPTl9NT1RJT05fRFVSQVRJT04pO1xuICAgICAgICAgICAgdGhpcy5yZW1vdmFsVGltZXJzLnNldChrZXksIHRpbWVvdXRJZCk7XG4gICAgICAgIH0pO1xuICAgIH1cbiAgICBmaW5hbGl6ZVJlbW92ZShrZXkpIHtcbiAgICAgICAgdGhpcy5jbGVhclJlbW92YWxUaW1lcihrZXkpO1xuICAgICAgICBjb25zdCByZW1vdmVkSXRlbXMgPSB0aGlzLml0ZW1zLmZpbHRlcihpdGVtID0+IGl0ZW0ua2V5ID09PSBrZXkpO1xuICAgICAgICBpZiAoIXJlbW92ZWRJdGVtcy5sZW5ndGgpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIHRoaXMuaXRlbXMgPSB0aGlzLml0ZW1zLmZpbHRlcihpdGVtID0+IGl0ZW0ua2V5ICE9PSBrZXkpO1xuICAgICAgICByZW1vdmVkSXRlbXMuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgICAgIHZhciBfYTtcbiAgICAgICAgICAgIChfYSA9IGl0ZW0ub25DbG9zZSkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmNhbGwoaXRlbSk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLnJlbmRlcigpO1xuICAgIH1cbiAgICBlbnN1cmVSZW5kZXJlcigpIHtcbiAgICAgICAgcmV0dXJuIF9fYXdhaXRlcih0aGlzLCB2b2lkIDAsIHZvaWQgMCwgZnVuY3Rpb24qICgpIHtcbiAgICAgICAgICAgIGlmICghY2FuVXNlRE9NKCkpXG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICBpZiAodGhpcy5yZW5kZXJlcilcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZW5kZXJlcjtcbiAgICAgICAgICAgIGlmICh0aGlzLnJlbmRlcmVyUHJvbWlzZSlcbiAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5yZW5kZXJlclByb21pc2U7XG4gICAgICAgICAgICB0aGlzLmNvbnRhaW5lciA9IGdldE5vdGlmaWNhdGlvblJvb3QoKTtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXJQcm9taXNlID0gY3JlYXRlTm90aWZpY2F0aW9uUmVuZGVyZXIodGhpcy5jb250YWluZXIpXG4gICAgICAgICAgICAgICAgLnRoZW4ocmVuZGVyZXIgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyZXIgPSByZW5kZXJlcjtcbiAgICAgICAgICAgICAgICB0aGlzLnJlbmRlcmVyUHJvbWlzZSA9IG51bGw7XG4gICAgICAgICAgICAgICAgaWYgKCFyZW5kZXJlcikge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbW92ZUNvbnRhaW5lcigpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gcmVuZGVyZXI7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIC5jYXRjaCgoKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJlclByb21pc2UgPSBudWxsO1xuICAgICAgICAgICAgICAgIHRoaXMucmVtb3ZlQ29udGFpbmVyKCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnJlbmRlcmVyUHJvbWlzZTtcbiAgICAgICAgfSk7XG4gICAgfVxuICAgIHJlbW92ZUNvbnRhaW5lcigpIHtcbiAgICAgICAgdmFyIF9hO1xuICAgICAgICAoX2EgPSB0aGlzLmNvbnRhaW5lcikgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLnJlbW92ZSgpO1xuICAgICAgICB0aGlzLmNvbnRhaW5lciA9IG51bGw7XG4gICAgfVxuICAgIHRlYXJkb3duKCkge1xuICAgICAgICB2YXIgX2E7XG4gICAgICAgIHRoaXMudGltZXJzLmZvckVhY2goaWQgPT4gd2luZG93LmNsZWFyVGltZW91dChpZCkpO1xuICAgICAgICB0aGlzLnRpbWVycy5jbGVhcigpO1xuICAgICAgICB0aGlzLnJlbW92YWxUaW1lcnMuZm9yRWFjaChpZCA9PiB3aW5kb3cuY2xlYXJUaW1lb3V0KGlkKSk7XG4gICAgICAgIHRoaXMucmVtb3ZhbFRpbWVycy5jbGVhcigpO1xuICAgICAgICAoX2EgPSB0aGlzLnJlbmRlcmVyKSA9PT0gbnVsbCB8fCBfYSA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2EudW5tb3VudCgpO1xuICAgICAgICB0aGlzLnJlbmRlcmVyID0gbnVsbDtcbiAgICAgICAgdGhpcy5yZW1vdmVDb250YWluZXIoKTtcbiAgICB9XG4gICAgcmVuZGVyTm9kZSgpIHtcbiAgICAgICAgcmV0dXJuIChfanN4KE5vdGlmaWNhdGlvblZpZXdwb3J0LCB7IGl0ZW1zOiB0aGlzLml0ZW1zLCBvbkNsb3NlOiB0aGlzLmhhbmRsZUNsb3NlIH0pKTtcbiAgICB9XG4gICAgcmVuZGVyKCkge1xuICAgICAgICBpZiAoIWNhblVzZURPTSgpKVxuICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICBpZiAoIXRoaXMuaXRlbXMubGVuZ3RoKSB7XG4gICAgICAgICAgICB0aGlzLnRlYXJkb3duKCk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cbiAgICAgICAgaWYgKHRoaXMucmVuZGVyZXIpIHtcbiAgICAgICAgICAgIHRoaXMucmVuZGVyZXIucmVuZGVyKHRoaXMucmVuZGVyTm9kZSgpKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuICAgICAgICB2b2lkIHRoaXMuZW5zdXJlUmVuZGVyZXIoKS50aGVuKHJlbmRlcmVyID0+IHtcbiAgICAgICAgICAgIGlmICghcmVuZGVyZXIpXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgaWYgKCF0aGlzLml0ZW1zLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIHRoaXMudGVhcmRvd24oKTtcbiAgICAgICAgICAgICAgICByZXR1cm47XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZW5kZXJlci5yZW5kZXIodGhpcy5yZW5kZXJOb2RlKCkpO1xuICAgICAgICB9KTtcbiAgICB9XG59XG5jb25zdCBub3RpZmljYXRpb25NYW5hZ2VyID0gbmV3IE5vdGlmaWNhdGlvbk1hbmFnZXIoKTtcbmNvbnN0IG9wZW5Ob3RpZmljYXRpb25XaXRoU3RhdHVzID0gKHN0YXR1cykgPT4gKGNvbmZpZykgPT4gbm90aWZpY2F0aW9uTWFuYWdlci5vcGVuKE9iamVjdC5hc3NpZ24oT2JqZWN0LmFzc2lnbih7fSwgY29uZmlnKSwgeyBzdGF0dXMgfSkpO1xuZXhwb3J0IGNvbnN0IG5vdGlmaWNhdGlvbiA9IHtcbiAgICBvcGVuOiBjb25maWcgPT4gbm90aWZpY2F0aW9uTWFuYWdlci5vcGVuKGNvbmZpZyksXG4gICAgaW5mbzogb3Blbk5vdGlmaWNhdGlvbldpdGhTdGF0dXMoJ2luZm8nKSxcbiAgICBzdWNjZXNzOiBvcGVuTm90aWZpY2F0aW9uV2l0aFN0YXR1cygnc3VjY2VzcycpLFxuICAgIHdhcm5pbmc6IG9wZW5Ob3RpZmljYXRpb25XaXRoU3RhdHVzKCd3YXJuaW5nJyksXG4gICAgZXJyb3I6IG9wZW5Ob3RpZmljYXRpb25XaXRoU3RhdHVzKCdlcnJvcicpLFxuICAgIGRlc3Ryb3k6IGtleSA9PiBub3RpZmljYXRpb25NYW5hZ2VyLmRlc3Ryb3koa2V5KSxcbiAgICBjb25maWc6IGNvbmZpZyA9PiBub3RpZmljYXRpb25NYW5hZ2VyLmNvbmZpZyhjb25maWcpLFxufTtcbmV4cG9ydCBkZWZhdWx0IG5vdGlmaWNhdGlvbjsiLG51bGxdLCJzb3VyY2VSb290IjoiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vc3JjIn0=
@@ -1 +1,170 @@
1
- .om-component-ui-notification{display:flex;gap:var(--om-spacing-200,8px);align-items:flex-start;padding:var(--om-spacing-300,12px);background-color:var(--om-bg-default-secondary,#f8f8f8);border-radius:var(--om-radius-300,12px);box-shadow:var(--om-shadow-200,0 10px 22px rgba(0,0,0,.1))}.om-component-ui-notification-content-wrapper{display:flex;flex:1 0 0;gap:var(--om-spacing-300,12px);align-items:flex-start;min-width:0}.om-component-ui-notification-icon-wrapper{display:flex;flex-shrink:0;align-items:center}.om-component-ui-notification-icon{display:inline-flex;flex-shrink:0;align-items:center;justify-content:center}.om-component-ui-notification-content{display:flex;flex:1 0 0;flex-direction:column;gap:var(--om-spacing-100,4px);align-items:flex-start;min-width:0;padding-top:var(--om-spacing-200,8px)}.om-component-ui-notification-body,.om-component-ui-notification-title{display:block}.om-component-ui-notification-link{font-size:var(--om-body-md-font-size);font-family:var(--om-body-md-font-family);line-height:var(--om-body-md-line-height);letter-spacing:var(--om-body-md-letter-spacing);font-weight:var(--om-body-md-strong-font-weight);padding:0;color:var(--om-text-brand,#073387);text-decoration:underline;background:none;border:none;cursor:pointer}.om-component-ui-notification-close{display:inline-flex;flex-shrink:0;align-items:center;justify-content:center;padding:0;color:var(--om-icon-neutral-secondary,#9fa3a3);background:none;border:none;cursor:pointer}.om-component-ui-notification-close .om-component-ui-icons-wrapper{--icon-color:currentcolor}.om-component-ui-notification-close:hover{color:var(--om-icon-neutral,#404042)}.om-component-ui-notification-viewport{position:fixed;inset:0;z-index:1100;pointer-events:none}.om-component-ui-notification-stack{position:fixed;display:flex;flex-direction:column;--notification-motion-offset:calc(100% + var(--om-spacing-300, 12px));width:375px;max-width:calc(100vw - var(--om-spacing-400, 16px) * 2);pointer-events:none}.om-component-ui-notification-stack-topLeft{top:var(--om-spacing-400,16px);left:var(--om-spacing-400,16px);--notification-motion-offset:calc(-100% - var(--om-spacing-300, 12px))}.om-component-ui-notification-stack-topRight{top:var(--om-spacing-400,16px);right:var(--om-spacing-400,16px)}.om-component-ui-notification-stack-bottomLeft{bottom:var(--om-spacing-400,16px);left:var(--om-spacing-400,16px);--notification-motion-offset:calc(-100% - var(--om-spacing-300, 12px))}.om-component-ui-notification-stack-bottomRight{right:var(--om-spacing-400,16px);bottom:var(--om-spacing-400,16px)}.om-component-ui-notification-item{display:grid;grid-template-rows:1fr;transition:grid-template-rows .24s ease,margin-top .24s ease;will-change:grid-template-rows,margin-top}.om-component-ui-notification-item+.om-component-ui-notification-item{margin-top:var(--om-spacing-300,12px)}.om-component-ui-notification-item-inner{min-height:0;overflow:visible;transform:translateZ(0);opacity:1;transition:transform .24s ease,opacity .24s ease;pointer-events:auto;will-change:transform,opacity}.om-component-ui-notification-item-enter,.om-component-ui-notification-item-exit+.om-component-ui-notification-item{margin-top:0}.om-component-ui-notification-item-active{grid-template-rows:1fr}.om-component-ui-notification-item-exit .om-component-ui-notification-item-inner{pointer-events:none}.om-component-ui-notification-item-exit-collapse{grid-template-rows:0fr}.om-component-ui-notification-item-exit-collapse .om-component-ui-notification-item-inner{overflow:hidden}.om-component-ui-notification-item-enter .om-component-ui-notification-item-inner,.om-component-ui-notification-item-exit .om-component-ui-notification-item-inner{transform:translate3d(var(--notification-motion-offset),0,0);opacity:0}.om-component-ui-notification-item-active .om-component-ui-notification-item-inner{transform:translateZ(0)}
1
+ /**
2
+ * Retrieves the spacing value for a given token key.
3
+ *
4
+ * @param {string} $key - The spacing token key (e.g., '100', '200').
5
+ * @return {length|null} The computed spacing value or null if the key is invalid.
6
+ * @example
7
+ * .element {
8
+ * padding: om-spacing-token('200'); // Returns 8px if $om-sys-spacing-unit is 4px
9
+ * }
10
+ */
11
+ /**
12
+ * Computes the spacing value based on a token key or a direct length value.
13
+ *
14
+ * @param {string|length} $value - The spacing token key (e.g., '100') or a direct length value (e.g., '16px').
15
+ * @return {length} The computed spacing value.
16
+ * @example
17
+ * .element {
18
+ * margin: om-spacing-value('300'); // Returns 12px if $om-sys-spacing-unit is 4px
19
+ * padding: om-spacing-value(16px); // Returns 16px
20
+ * gap: om-spacing-value(2); // Returns 8px if $om-sys-spacing-unit is 4px
21
+ * }
22
+ */
23
+ .om-component-ui-notification {
24
+ display: flex;
25
+ gap: var(--om-spacing-200, 8px);
26
+ align-items: flex-start;
27
+ padding: var(--om-spacing-300, 12px);
28
+ background-color: var(--om-bg-default-secondary, #f8f8f8);
29
+ border-radius: var(--om-radius-300, 12px);
30
+ box-shadow: var(--om-shadow-200, 0 10px 22px rgba(0, 0, 0, 0.1));
31
+ }
32
+ .om-component-ui-notification-content-wrapper {
33
+ display: flex;
34
+ flex: 1 0 0;
35
+ gap: var(--om-spacing-300, 12px);
36
+ align-items: flex-start;
37
+ min-width: 0;
38
+ }
39
+ .om-component-ui-notification-icon-wrapper {
40
+ display: flex;
41
+ flex-shrink: 0;
42
+ align-items: center;
43
+ }
44
+ .om-component-ui-notification-icon {
45
+ display: inline-flex;
46
+ flex-shrink: 0;
47
+ align-items: center;
48
+ justify-content: center;
49
+ }
50
+ .om-component-ui-notification-content {
51
+ display: flex;
52
+ flex: 1 0 0;
53
+ flex-direction: column;
54
+ gap: var(--om-spacing-100, 4px);
55
+ align-items: flex-start;
56
+ min-width: 0;
57
+ padding-top: var(--om-spacing-200, 8px);
58
+ }
59
+ .om-component-ui-notification-title {
60
+ display: block;
61
+ }
62
+ .om-component-ui-notification-body {
63
+ display: block;
64
+ }
65
+ .om-component-ui-notification-link {
66
+ font-size: var(--om-body-md-font-size);
67
+ font-family: var(--om-body-md-font-family);
68
+ line-height: var(--om-body-md-line-height);
69
+ letter-spacing: var(--om-body-md-letter-spacing);
70
+ font-weight: var(--om-body-md-strong-font-weight);
71
+ padding: 0;
72
+ color: var(--om-text-brand, #073387);
73
+ text-decoration: underline;
74
+ background: none;
75
+ border: none;
76
+ cursor: pointer;
77
+ }
78
+ .om-component-ui-notification-close {
79
+ display: inline-flex;
80
+ flex-shrink: 0;
81
+ align-items: center;
82
+ justify-content: center;
83
+ padding: 0;
84
+ color: var(--om-icon-neutral-secondary, #9fa3a3);
85
+ background: none;
86
+ border: none;
87
+ cursor: pointer;
88
+ }
89
+ .om-component-ui-notification-close .om-component-ui-icons-wrapper {
90
+ --icon-color: currentcolor;
91
+ }
92
+ .om-component-ui-notification-close:hover {
93
+ color: var(--om-icon-neutral, #404042);
94
+ }
95
+
96
+ .om-component-ui-notification-viewport {
97
+ position: fixed;
98
+ inset: 0;
99
+ z-index: 1100;
100
+ pointer-events: none;
101
+ }
102
+
103
+ .om-component-ui-notification-stack {
104
+ position: fixed;
105
+ display: flex;
106
+ flex-direction: column;
107
+ --notification-motion-offset: calc(100% + var(--om-spacing-300, 12px));
108
+ width: 375px;
109
+ max-width: calc(100vw - var(--om-spacing-400, 16px) * 2);
110
+ pointer-events: none;
111
+ }
112
+ .om-component-ui-notification-stack-topLeft {
113
+ top: var(--om-spacing-400, 16px);
114
+ left: var(--om-spacing-400, 16px);
115
+ --notification-motion-offset: calc(-100% - var(--om-spacing-300, 12px));
116
+ }
117
+ .om-component-ui-notification-stack-topRight {
118
+ top: var(--om-spacing-400, 16px);
119
+ right: var(--om-spacing-400, 16px);
120
+ }
121
+ .om-component-ui-notification-stack-bottomLeft {
122
+ bottom: var(--om-spacing-400, 16px);
123
+ left: var(--om-spacing-400, 16px);
124
+ --notification-motion-offset: calc(-100% - var(--om-spacing-300, 12px));
125
+ }
126
+ .om-component-ui-notification-stack-bottomRight {
127
+ right: var(--om-spacing-400, 16px);
128
+ bottom: var(--om-spacing-400, 16px);
129
+ }
130
+
131
+ .om-component-ui-notification-item {
132
+ display: grid;
133
+ grid-template-rows: 1fr;
134
+ transition: grid-template-rows 240ms ease, margin-top 240ms ease;
135
+ will-change: grid-template-rows, margin-top;
136
+ }
137
+ .om-component-ui-notification-item + .om-component-ui-notification-item {
138
+ margin-top: var(--om-spacing-300, 12px);
139
+ }
140
+ .om-component-ui-notification-item-inner {
141
+ min-height: 0;
142
+ overflow: visible;
143
+ transform: translate3d(0, 0, 0);
144
+ opacity: 1;
145
+ transition: transform 240ms ease, opacity 240ms ease;
146
+ pointer-events: auto;
147
+ will-change: transform, opacity;
148
+ }
149
+ .om-component-ui-notification-item-enter, .om-component-ui-notification-item-exit + .om-component-ui-notification-item {
150
+ margin-top: 0;
151
+ }
152
+ .om-component-ui-notification-item-active {
153
+ grid-template-rows: 1fr;
154
+ }
155
+ .om-component-ui-notification-item-exit .om-component-ui-notification-item-inner {
156
+ pointer-events: none;
157
+ }
158
+ .om-component-ui-notification-item-exit-collapse {
159
+ grid-template-rows: 0fr;
160
+ }
161
+ .om-component-ui-notification-item-exit-collapse .om-component-ui-notification-item-inner {
162
+ overflow: hidden;
163
+ }
164
+ .om-component-ui-notification-item-enter .om-component-ui-notification-item-inner, .om-component-ui-notification-item-exit .om-component-ui-notification-item-inner {
165
+ transform: translate3d(var(--notification-motion-offset), 0, 0);
166
+ opacity: 0;
167
+ }
168
+ .om-component-ui-notification-item-active .om-component-ui-notification-item-inner {
169
+ transform: translate3d(0, 0, 0);
170
+ }
@@ -1 +1,89 @@
1
- .om-component-ui-pagination,.om-component-ui-pagination-list{display:inline-flex;align-items:center}.om-component-ui-pagination-list{gap:var(--om-spacing-200,8px);margin:0;padding:0;list-style:none}.om-component-ui-pagination-item{display:inline-flex;flex-shrink:0;align-items:center}.om-component-ui-pagination-button,.om-component-ui-pagination-ellipsis{display:inline-flex;align-items:center;justify-content:center;min-height:calc(var(--om-spacing-400, 16px) + var(--om-spacing-500, 20px));padding:var(--om-spacing-200,8px) var(--om-spacing-300,12px);color:var(--om-text-default,#131313);white-space:nowrap;background-color:transparent;border:none;border-radius:var(--om-radius-200,8px);font-variant-numeric:tabular-nums}.om-component-ui-pagination-button{gap:var(--om-spacing-200,8px);cursor:pointer}.om-component-ui-pagination-button:hover:not(:disabled){background-color:var(--om-bg-default-hover,#f0f0f0)}.om-component-ui-pagination-button:focus-visible{outline:none;box-shadow:0 0 0 2px var(--om-border-brand,#073387)}.om-component-ui-pagination-button-disabled,.om-component-ui-pagination-button:disabled{color:var(--om-text-disabled,#bbbdc1);cursor:default;pointer-events:none}.om-component-ui-pagination-button-page{min-width:max(calc(var(--om-spacing-400, 16px) + var(--om-spacing-500, 20px)),2ch + var(--om-spacing-300,12px) + var(--om-spacing-300,12px))}.om-component-ui-pagination-button-current{color:var(--om-text-on-neutral,#fff);background-color:var(--om-bg-brand,#073387)}.om-component-ui-pagination-button-current:hover:not(:disabled){background-color:var(--om-bg-brand-hover,#052561)}.om-component-ui-pagination-icon{display:inline-flex;flex-shrink:0;align-items:center;justify-content:center}.om-component-ui-pagination-ellipsis{padding-right:var(--om-spacing-400,16px);padding-left:var(--om-spacing-400,16px);cursor:default}
1
+ /**
2
+ * Retrieves the spacing value for a given token key.
3
+ *
4
+ * @param {string} $key - The spacing token key (e.g., '100', '200').
5
+ * @return {length|null} The computed spacing value or null if the key is invalid.
6
+ * @example
7
+ * .element {
8
+ * padding: om-spacing-token('200'); // Returns 8px if $om-sys-spacing-unit is 4px
9
+ * }
10
+ */
11
+ /**
12
+ * Computes the spacing value based on a token key or a direct length value.
13
+ *
14
+ * @param {string|length} $value - The spacing token key (e.g., '100') or a direct length value (e.g., '16px').
15
+ * @return {length} The computed spacing value.
16
+ * @example
17
+ * .element {
18
+ * margin: om-spacing-value('300'); // Returns 12px if $om-sys-spacing-unit is 4px
19
+ * padding: om-spacing-value(16px); // Returns 16px
20
+ * gap: om-spacing-value(2); // Returns 8px if $om-sys-spacing-unit is 4px
21
+ * }
22
+ */
23
+ .om-component-ui-pagination {
24
+ display: inline-flex;
25
+ align-items: center;
26
+ }
27
+ .om-component-ui-pagination-list {
28
+ display: inline-flex;
29
+ gap: var(--om-spacing-200, 8px);
30
+ align-items: center;
31
+ margin: 0;
32
+ padding: 0;
33
+ list-style: none;
34
+ }
35
+ .om-component-ui-pagination-item {
36
+ display: inline-flex;
37
+ flex-shrink: 0;
38
+ align-items: center;
39
+ }
40
+ .om-component-ui-pagination-button, .om-component-ui-pagination-ellipsis {
41
+ display: inline-flex;
42
+ align-items: center;
43
+ justify-content: center;
44
+ min-height: calc(var(--om-spacing-400, 16px) + var(--om-spacing-500, 20px));
45
+ padding: var(--om-spacing-200, 8px) var(--om-spacing-300, 12px);
46
+ color: var(--om-text-default, #131313);
47
+ white-space: nowrap;
48
+ background-color: transparent;
49
+ border: none;
50
+ border-radius: var(--om-radius-200, 8px);
51
+ font-variant-numeric: tabular-nums;
52
+ }
53
+ .om-component-ui-pagination-button {
54
+ gap: var(--om-spacing-200, 8px);
55
+ cursor: pointer;
56
+ }
57
+ .om-component-ui-pagination-button:hover:not(:disabled) {
58
+ background-color: var(--om-bg-default-hover, #f0f0f0);
59
+ }
60
+ .om-component-ui-pagination-button:focus-visible {
61
+ outline: none;
62
+ box-shadow: 0 0 0 2px var(--om-border-brand, #073387);
63
+ }
64
+ .om-component-ui-pagination-button:disabled, .om-component-ui-pagination-button-disabled {
65
+ color: var(--om-text-disabled, #bbbdc1);
66
+ cursor: default;
67
+ pointer-events: none;
68
+ }
69
+ .om-component-ui-pagination-button-page {
70
+ min-width: max(calc(var(--om-spacing-400, 16px) + var(--om-spacing-500, 20px)), 2ch + var(--om-spacing-300, 12px) + var(--om-spacing-300, 12px));
71
+ }
72
+ .om-component-ui-pagination-button-current {
73
+ color: var(--om-text-on-neutral, #fff);
74
+ background-color: var(--om-bg-brand, #073387);
75
+ }
76
+ .om-component-ui-pagination-button-current:hover:not(:disabled) {
77
+ background-color: var(--om-bg-brand-hover, #052561);
78
+ }
79
+ .om-component-ui-pagination-icon {
80
+ display: inline-flex;
81
+ flex-shrink: 0;
82
+ align-items: center;
83
+ justify-content: center;
84
+ }
85
+ .om-component-ui-pagination-ellipsis {
86
+ padding-right: var(--om-spacing-400, 16px);
87
+ padding-left: var(--om-spacing-400, 16px);
88
+ cursor: default;
89
+ }