@pie-lib/editable-html-tip-tap 1.0.0 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/index.js CHANGED
@@ -64,6 +64,8 @@ var _constants = require("./constants");
64
64
 
65
65
  var _doneButton = require("./plugins/toolbar/done-button");
66
66
 
67
+ var _index = require("./plugins/index");
68
+
67
69
  var _FormatBold = _interopRequireDefault(require("@material-ui/icons/FormatBold"));
68
70
 
69
71
  var _FormatItalic = _interopRequireDefault(require("@material-ui/icons/FormatItalic"));
@@ -114,6 +116,10 @@ var _media = require("./extensions/media");
114
116
 
115
117
  var _css = require("./extensions/css");
116
118
 
119
+ var _icons4 = require("./plugins/table/icons");
120
+
121
+ var _BorderAll = _interopRequireDefault(require("@material-ui/icons/BorderAll"));
122
+
117
123
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
118
124
 
119
125
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
@@ -338,10 +344,19 @@ var HeadingIcon = function HeadingIcon() {
338
344
  };
339
345
 
340
346
  var ExtendedTable = _extensionTable.Table.extend({
347
+ addAttributes: function addAttributes() {
348
+ return {
349
+ border: {
350
+ "default": '1'
351
+ }
352
+ };
353
+ },
341
354
  renderHTML: function renderHTML(props) {
342
355
  var originalTable = this.parent(props);
343
- originalTable[1].style = "".concat(originalTable[1].style, " width: 100%;\n color: var(--pie-text, black);\n table-layout: fixed;\n border-collapse: collapse;\n background-color: var(--pie-background, rgba(255, 255, 255))");
344
- originalTable[1].border = '1';
356
+ var border = props.HTMLAttributes.border;
357
+ var previousStyle = "".concat(originalTable[1].style).concat(originalTable[1].style.match(/.*; */) ? '' : ';');
358
+ originalTable[1].style = "".concat(previousStyle, "\n width: 100%;\n color: var(--pie-text, black);\n table-layout: fixed;\n border-collapse: collapse;\n background-color: var(--pie-background, rgba(255, 255, 255))");
359
+ originalTable[1].border = border ? border : '1';
345
360
  return originalTable;
346
361
  }
347
362
  });
@@ -423,6 +438,23 @@ var styles = function styles(theme) {
423
438
  border: 'none',
424
439
  borderTop: '1px solid var(--gray-2)',
425
440
  margin: '2rem 0'
441
+ },
442
+ '& table': {
443
+ tableLayout: 'fixed',
444
+ width: '100%',
445
+ borderCollapse: 'collapse',
446
+ color: _renderUi.color.text(),
447
+ backgroundColor: _renderUi.color.background()
448
+ },
449
+ '& table:not([border="1"]) tr': {
450
+ borderTop: '1px solid #dfe2e5'
451
+ },
452
+ '& td, th': {
453
+ padding: '.6em 1em',
454
+ textAlign: 'center'
455
+ },
456
+ '& table:not([border="1"]) td, th': {
457
+ border: '1px solid #dfe2e5'
426
458
  }
427
459
  },
428
460
  children: {
@@ -579,6 +611,7 @@ function TiptapContainer(props) {
579
611
  children = props.children,
580
612
  disableUnderline = props.disableUnderline,
581
613
  disableScrollbar = props.disableScrollbar,
614
+ activePlugins = props.activePlugins,
582
615
  toolbarOpts = props.toolbarOpts,
583
616
  responseAreaProps = props.responseAreaProps,
584
617
  autoFocus = props.autoFocus,
@@ -621,6 +654,7 @@ function TiptapContainer(props) {
621
654
  editor: editor,
622
655
  responseAreaProps: responseAreaProps,
623
656
  toolbarOpts: toolbarOpts,
657
+ activePlugins: activePlugins,
624
658
  onChange: props.onChange
625
659
  }));
626
660
  }
@@ -632,6 +666,7 @@ function MenuBar(_ref3) {
632
666
 
633
667
  var editor = _ref3.editor,
634
668
  classes = _ref3.classes,
669
+ activePlugins = _ref3.activePlugins,
635
670
  toolOpts = _ref3.toolbarOpts,
636
671
  responseAreaProps = _ref3.responseAreaProps,
637
672
  onChange = _ref3.onChange;
@@ -646,7 +681,7 @@ function MenuBar(_ref3) {
646
681
  var editorState = (0, _react2.useEditorState)({
647
682
  editor: editor,
648
683
  selector: function selector(ctx) {
649
- var _ctx$editor, _ctx$editor2, _ctx$editor3, _ctx$editor4, _ctx$editor5, _ctx$editor$isActive, _ctx$editor$can$chain, _ctx$editor$isActive2, _ctx$editor$can$chain2, _ctx$editor$isActive3, _ctx$editor$can$chain3, _ctx$editor$isActive4, _ctx$editor$can$chain4, _ctx$editor$isActive5, _ctx$editor$can$chain5, _ctx$editor$can$chain6, _ctx$editor$isActive6, _ctx$editor$isActive7, _ctx$editor$isActive8, _ctx$editor$isActive9, _ctx$editor$isActive10, _ctx$editor$isActive11, _ctx$editor$isActive12, _ctx$editor$isActive13, _ctx$editor$isActive14, _ctx$editor$isActive15, _ctx$editor$isActive16, _ctx$editor$isActive17, _ctx$editor$isActive18, _ctx$editor$isActive19, _ctx$editor$can$chain7, _ctx$editor$can$chain8;
684
+ var _ctx$editor, _ctx$editor2, _ctx$editor3, _ctx$editor4, _ctx$editor5, _ctx$editor$isActive, _ctx$editor$can$chain, _ctx$editor$isActive2, _ref5, _ctx$editor$getAttrib, _ctx$editor$can$chain2, _ctx$editor$isActive3, _ctx$editor$can$chain3, _ctx$editor$isActive4, _ctx$editor$can$chain4, _ctx$editor$isActive5, _ctx$editor$can$chain5, _ctx$editor$can$chain6, _ctx$editor$isActive6, _ctx$editor$isActive7, _ctx$editor$isActive8, _ctx$editor$isActive9, _ctx$editor$isActive10, _ctx$editor$isActive11, _ctx$editor$isActive12, _ctx$editor$isActive13, _ctx$editor$isActive14, _ctx$editor$isActive15, _ctx$editor$isActive16, _ctx$editor$isActive17, _ctx$editor$isActive18, _ctx$editor$isActive19, _ctx$editor$can$chain7, _ctx$editor$can$chain8;
650
685
 
651
686
  var _ref4 = ((_ctx$editor = ctx.editor) === null || _ctx$editor === void 0 ? void 0 : _ctx$editor.state) || {},
652
687
  selection = _ref4.selection;
@@ -657,14 +692,15 @@ function MenuBar(_ref3) {
657
692
  currentNode = selection.node; // the selected node
658
693
  }
659
694
 
660
- var customToolbarActive = ((_ctx$editor2 = ctx.editor) === null || _ctx$editor2 === void 0 ? void 0 : _ctx$editor2.isActive('math')) || ((_ctx$editor3 = ctx.editor) === null || _ctx$editor3 === void 0 ? void 0 : _ctx$editor3.isActive('explicit_constructed_response')) || ((_ctx$editor4 = ctx.editor) === null || _ctx$editor4 === void 0 ? void 0 : _ctx$editor4.isActive('imageUploadNode'));
695
+ var hideDefaultToolbar = ((_ctx$editor2 = ctx.editor) === null || _ctx$editor2 === void 0 ? void 0 : _ctx$editor2.isActive('math')) || ((_ctx$editor3 = ctx.editor) === null || _ctx$editor3 === void 0 ? void 0 : _ctx$editor3.isActive('explicit_constructed_response')) || ((_ctx$editor4 = ctx.editor) === null || _ctx$editor4 === void 0 ? void 0 : _ctx$editor4.isActive('imageUploadNode'));
661
696
  return {
662
697
  currentNode: currentNode,
663
- customToolbarActive: customToolbarActive,
698
+ hideDefaultToolbar: hideDefaultToolbar,
664
699
  isFocused: (_ctx$editor5 = ctx.editor) === null || _ctx$editor5 === void 0 ? void 0 : _ctx$editor5.isFocused,
665
700
  isBold: (_ctx$editor$isActive = ctx.editor.isActive('bold')) !== null && _ctx$editor$isActive !== void 0 ? _ctx$editor$isActive : false,
666
701
  canBold: (_ctx$editor$can$chain = ctx.editor.can().chain().toggleBold().run()) !== null && _ctx$editor$can$chain !== void 0 ? _ctx$editor$can$chain : false,
667
702
  isTable: (_ctx$editor$isActive2 = ctx.editor.isActive('table')) !== null && _ctx$editor$isActive2 !== void 0 ? _ctx$editor$isActive2 : false,
703
+ tableHasBorder: (_ref5 = ((_ctx$editor$getAttrib = ctx.editor.getAttributes('table')) === null || _ctx$editor$getAttrib === void 0 ? void 0 : _ctx$editor$getAttrib.border) === '1') !== null && _ref5 !== void 0 ? _ref5 : false,
668
704
  canTable: (_ctx$editor$can$chain2 = ctx.editor.can().chain().insertTable().run()) !== null && _ctx$editor$can$chain2 !== void 0 ? _ctx$editor$can$chain2 : false,
669
705
  isItalic: (_ctx$editor$isActive3 = ctx.editor.isActive('italic')) !== null && _ctx$editor$isActive3 !== void 0 ? _ctx$editor$isActive3 : false,
670
706
  canItalic: (_ctx$editor$can$chain3 = ctx.editor.can().chain().toggleItalic().run()) !== null && _ctx$editor$can$chain3 !== void 0 ? _ctx$editor$can$chain3 : false,
@@ -715,143 +751,365 @@ function MenuBar(_ref3) {
715
751
  e.preventDefault();
716
752
  };
717
753
 
754
+ var toolbarButtons = (0, _react.useMemo)(function () {
755
+ return [{
756
+ icon: /*#__PURE__*/_react["default"].createElement(_GridOn["default"], null),
757
+ onClick: function onClick(editor) {
758
+ return editor.chain().focus().insertTable({
759
+ rows: 2,
760
+ cols: 2,
761
+ withHeaderRow: false
762
+ }).run();
763
+ },
764
+ hidden: function hidden(state) {
765
+ return !(activePlugins !== null && activePlugins !== void 0 && activePlugins.includes('table')) || state.isTable;
766
+ },
767
+ isActive: function isActive(state) {
768
+ return state.isTable;
769
+ },
770
+ isDisabled: function isDisabled(state) {
771
+ return !state.canTable;
772
+ }
773
+ }, {
774
+ icon: /*#__PURE__*/_react["default"].createElement(_icons4.AddRow, null),
775
+ onClick: function onClick(editor) {
776
+ return editor.chain().focus().addRowAfter().run();
777
+ },
778
+ hidden: function hidden(state) {
779
+ return !state.isTable;
780
+ },
781
+ isActive: function isActive(state) {
782
+ return state.isTable;
783
+ },
784
+ isDisabled: function isDisabled(state) {
785
+ return !state.canTable;
786
+ }
787
+ }, {
788
+ icon: /*#__PURE__*/_react["default"].createElement(_icons4.RemoveRow, null),
789
+ onClick: function onClick(editor) {
790
+ return editor.chain().focus().deleteRow().run();
791
+ },
792
+ hidden: function hidden(state) {
793
+ return !state.isTable;
794
+ },
795
+ isActive: function isActive(state) {
796
+ return state.isTable;
797
+ },
798
+ isDisabled: function isDisabled(state) {
799
+ return !state.canTable;
800
+ }
801
+ }, {
802
+ icon: /*#__PURE__*/_react["default"].createElement(_icons4.AddColumn, null),
803
+ onClick: function onClick(editor) {
804
+ return editor.chain().focus().addColumnAfter().run();
805
+ },
806
+ hidden: function hidden(state) {
807
+ return !state.isTable;
808
+ },
809
+ isActive: function isActive(state) {
810
+ return state.isTable;
811
+ },
812
+ isDisabled: function isDisabled(state) {
813
+ return !state.canTable;
814
+ }
815
+ }, {
816
+ icon: /*#__PURE__*/_react["default"].createElement(_icons4.RemoveColumn, null),
817
+ onClick: function onClick(editor) {
818
+ return editor.chain().focus().deleteColumn().run();
819
+ },
820
+ hidden: function hidden(state) {
821
+ return !state.isTable;
822
+ },
823
+ isActive: function isActive(state) {
824
+ return state.isTable;
825
+ },
826
+ isDisabled: function isDisabled(state) {
827
+ return !state.canTable;
828
+ }
829
+ }, {
830
+ icon: /*#__PURE__*/_react["default"].createElement(_icons4.RemoveTable, null),
831
+ onClick: function onClick(editor) {
832
+ return editor.chain().focus().deleteTable().run();
833
+ },
834
+ hidden: function hidden(state) {
835
+ return !state.isTable;
836
+ },
837
+ isActive: function isActive(state) {
838
+ return state.isTable;
839
+ },
840
+ isDisabled: function isDisabled(state) {
841
+ return !state.canTable;
842
+ }
843
+ }, {
844
+ icon: /*#__PURE__*/_react["default"].createElement(_BorderAll["default"], null),
845
+ onClick: function onClick(editor) {
846
+ var tableAttrs = editor.getAttributes('table');
847
+
848
+ var update = _objectSpread(_objectSpread({}, tableAttrs), {}, {
849
+ border: tableAttrs.border !== '0' ? '0' : '1'
850
+ });
851
+
852
+ editor.commands.updateAttributes('table', update);
853
+ },
854
+ hidden: function hidden(state) {
855
+ return !state.isTable;
856
+ },
857
+ isActive: function isActive(state) {
858
+ return state.tableHasBorder;
859
+ },
860
+ isDisabled: function isDisabled(state) {
861
+ return !state.canTable;
862
+ }
863
+ }, {
864
+ icon: /*#__PURE__*/_react["default"].createElement(_FormatBold["default"], null),
865
+ onClick: function onClick(editor) {
866
+ return editor.chain().focus().toggleBold().run();
867
+ },
868
+ hidden: function hidden(state) {
869
+ return !(activePlugins !== null && activePlugins !== void 0 && activePlugins.includes('bold')) || state.isTable;
870
+ },
871
+ isActive: function isActive(state) {
872
+ return state.isBold;
873
+ },
874
+ isDisabled: function isDisabled(state) {
875
+ return !state.canBold;
876
+ }
877
+ }, {
878
+ icon: /*#__PURE__*/_react["default"].createElement(_FormatItalic["default"], null),
879
+ onClick: function onClick(editor) {
880
+ return editor.chain().focus().toggleItalic().run();
881
+ },
882
+ hidden: function hidden(state) {
883
+ return !(activePlugins !== null && activePlugins !== void 0 && activePlugins.includes('italic')) || state.isTable;
884
+ },
885
+ isActive: function isActive(state) {
886
+ return state.isItalic;
887
+ },
888
+ isDisabled: function isDisabled(state) {
889
+ return !state.canItalic;
890
+ }
891
+ }, {
892
+ icon: /*#__PURE__*/_react["default"].createElement(_FormatStrikethrough["default"], null),
893
+ onClick: function onClick(editor) {
894
+ return editor.chain().focus().toggleStrike().run();
895
+ },
896
+ hidden: function hidden(state) {
897
+ return !(activePlugins !== null && activePlugins !== void 0 && activePlugins.includes('strikethrough')) || state.isTable;
898
+ },
899
+ isActive: function isActive(state) {
900
+ return state.isStrike;
901
+ },
902
+ isDisabled: function isDisabled(state) {
903
+ return !state.canStrike;
904
+ }
905
+ }, {
906
+ icon: /*#__PURE__*/_react["default"].createElement(_Code["default"], null),
907
+ onClick: function onClick(editor) {
908
+ return editor.chain().focus().toggleCode().run();
909
+ },
910
+ hidden: function hidden(state) {
911
+ return !(activePlugins !== null && activePlugins !== void 0 && activePlugins.includes('code')) || state.isTable;
912
+ },
913
+ isActive: function isActive(state) {
914
+ return state.isCode;
915
+ },
916
+ isDisabled: function isDisabled(state) {
917
+ return !state.canCode;
918
+ }
919
+ }, {
920
+ icon: /*#__PURE__*/_react["default"].createElement(_FormatUnderlined["default"], null),
921
+ onClick: function onClick(editor) {
922
+ return editor.chain().focus().toggleUnderline().run();
923
+ },
924
+ hidden: function hidden(state) {
925
+ return !(activePlugins !== null && activePlugins !== void 0 && activePlugins.includes('underline')) || state.isTable;
926
+ },
927
+ isActive: function isActive(state) {
928
+ return state.isUnderline;
929
+ }
930
+ }, {
931
+ icon: /*#__PURE__*/_react["default"].createElement(SubscriptIcon, null),
932
+ onClick: function onClick(editor) {
933
+ return editor.chain().focus().toggleSubscript().run();
934
+ },
935
+ hidden: function hidden(state) {
936
+ return !(activePlugins !== null && activePlugins !== void 0 && activePlugins.includes('subscript')) || state.isTable;
937
+ },
938
+ isActive: function isActive(state) {
939
+ return state.isSubScript;
940
+ }
941
+ }, {
942
+ icon: /*#__PURE__*/_react["default"].createElement(SuperscriptIcon, null),
943
+ onClick: function onClick(editor) {
944
+ return editor.chain().focus().toggleSuperscript().run();
945
+ },
946
+ hidden: function hidden(state) {
947
+ return !(activePlugins !== null && activePlugins !== void 0 && activePlugins.includes('superscript')) || state.isTable;
948
+ },
949
+ isActive: function isActive(state) {
950
+ return state.isSuperScript;
951
+ }
952
+ }, {
953
+ icon: /*#__PURE__*/_react["default"].createElement(_Image["default"], null),
954
+ hidden: function hidden(state) {
955
+ return !(activePlugins !== null && activePlugins !== void 0 && activePlugins.includes('image')) || state.isTable;
956
+ },
957
+ onClick: function onClick(editor) {
958
+ return editor.chain().focus().setImageUploadNode().run();
959
+ }
960
+ }, {
961
+ icon: /*#__PURE__*/_react["default"].createElement(_Theaters["default"], null),
962
+ hidden: function hidden(state) {
963
+ return !(activePlugins !== null && activePlugins !== void 0 && activePlugins.includes('video')) || state.isTable;
964
+ },
965
+ onClick: function onClick(editor) {
966
+ return editor.chain().focus().insertMedia({
967
+ tag: 'video'
968
+ }).run();
969
+ }
970
+ }, {
971
+ icon: /*#__PURE__*/_react["default"].createElement(_VolumeUp["default"], null),
972
+ hidden: function hidden(state) {
973
+ return !(activePlugins !== null && activePlugins !== void 0 && activePlugins.includes('audio')) || state.isTable;
974
+ },
975
+ onClick: function onClick(editor) {
976
+ return editor.chain().focus().insertMedia({
977
+ tag: 'audio'
978
+ }).run();
979
+ }
980
+ }, {
981
+ icon: /*#__PURE__*/_react["default"].createElement(_icons3["default"], null),
982
+ hidden: function hidden(state) {
983
+ return !(activePlugins !== null && activePlugins !== void 0 && activePlugins.includes('css')) || state.isTable;
984
+ },
985
+ onClick: function onClick(editor) {
986
+ return editor.commands.openCSSClassDialog();
987
+ }
988
+ }, {
989
+ icon: /*#__PURE__*/_react["default"].createElement(HeadingIcon, null),
990
+ hidden: function hidden(state) {
991
+ return !(activePlugins !== null && activePlugins !== void 0 && activePlugins.includes('h3')) || state.isTable;
992
+ },
993
+ onClick: function onClick(editor) {
994
+ return editor.chain().focus().toggleHeading({
995
+ level: 3
996
+ }).run();
997
+ },
998
+ isActive: function isActive(state) {
999
+ return state.isHeading3;
1000
+ }
1001
+ }, {
1002
+ icon: /*#__PURE__*/_react["default"].createElement(_Functions["default"], null),
1003
+ hidden: function hidden() {
1004
+ return !(activePlugins !== null && activePlugins !== void 0 && activePlugins.includes('math'));
1005
+ },
1006
+ onClick: function onClick(editor) {
1007
+ return editor.chain().focus().insertMath('').run();
1008
+ }
1009
+ }, {
1010
+ icon: /*#__PURE__*/_react["default"].createElement(CharacterIcon, {
1011
+ letter: "\xF1"
1012
+ }),
1013
+ hidden: function hidden(state) {
1014
+ return !(activePlugins !== null && activePlugins !== void 0 && activePlugins.includes('languageCharacters')) || state.isTable;
1015
+ },
1016
+ onClick: function onClick() {
1017
+ return setShowPicker(_utils.spanishConfig);
1018
+ }
1019
+ }, {
1020
+ icon: /*#__PURE__*/_react["default"].createElement(CharacterIcon, {
1021
+ letter: "\u20AC"
1022
+ }),
1023
+ hidden: function hidden(state) {
1024
+ return (activePlugins === null || activePlugins === void 0 ? void 0 : activePlugins.filter(function (p) {
1025
+ return p === 'languageCharacters';
1026
+ }).length) !== 2 || state.isTable;
1027
+ },
1028
+ onClick: function onClick() {
1029
+ return setShowPicker(_utils.specialConfig);
1030
+ }
1031
+ }, {
1032
+ icon: /*#__PURE__*/_react["default"].createElement(_icons2["default"], {
1033
+ editor: editor
1034
+ }),
1035
+ hidden: function hidden(state) {
1036
+ return !(activePlugins !== null && activePlugins !== void 0 && activePlugins.includes('text-align')) || state.isTable;
1037
+ },
1038
+ onClick: function onClick() {}
1039
+ }, {
1040
+ icon: /*#__PURE__*/_react["default"].createElement(_FormatListBulleted["default"], null),
1041
+ hidden: function hidden(state) {
1042
+ return !(activePlugins !== null && activePlugins !== void 0 && activePlugins.includes('bulleted-list')) || state.isTable;
1043
+ },
1044
+ onClick: function onClick(editor) {
1045
+ return editor.chain().focus().toggleBulletList().run();
1046
+ },
1047
+ isActive: function isActive(state) {
1048
+ return state.isBulletList;
1049
+ }
1050
+ }, {
1051
+ icon: /*#__PURE__*/_react["default"].createElement(_FormatListNumbered["default"], null),
1052
+ hidden: function hidden(state) {
1053
+ return !(activePlugins !== null && activePlugins !== void 0 && activePlugins.includes('numbered-list')) || state.isTable;
1054
+ },
1055
+ onClick: function onClick(editor) {
1056
+ return editor.chain().focus().toggleOrderedList().run();
1057
+ },
1058
+ isActive: function isActive(state) {
1059
+ return state.isOrderedList;
1060
+ }
1061
+ }, {
1062
+ icon: /*#__PURE__*/_react["default"].createElement(_Undo["default"], null),
1063
+ hidden: function hidden(state) {
1064
+ return !(activePlugins !== null && activePlugins !== void 0 && activePlugins.includes('undo')) || state.isTable;
1065
+ },
1066
+ onClick: function onClick(editor) {
1067
+ return editor.chain().focus().undo().run();
1068
+ },
1069
+ isDisabled: function isDisabled(state) {
1070
+ return !state.canUndo;
1071
+ }
1072
+ }, {
1073
+ icon: /*#__PURE__*/_react["default"].createElement(_Redo["default"], null),
1074
+ hidden: function hidden(state) {
1075
+ return !(activePlugins !== null && activePlugins !== void 0 && activePlugins.includes('redo')) || state.isTable;
1076
+ },
1077
+ onClick: function onClick(editor) {
1078
+ return editor.chain().focus().redo().run();
1079
+ },
1080
+ isDisabled: function isDisabled(state) {
1081
+ return !state.canRedo;
1082
+ }
1083
+ }];
1084
+ }, [activePlugins, editor, _utils.spanishConfig, _utils.specialConfig, setShowPicker]);
718
1085
  return /*#__PURE__*/_react["default"].createElement("div", {
719
1086
  className: names,
720
1087
  style: _objectSpread({}, customStyles),
721
1088
  onMouseDown: handleMouseDown
722
- }, !editorState.customToolbarActive && /*#__PURE__*/_react["default"].createElement("div", {
1089
+ }, !editorState.hideDefaultToolbar && /*#__PURE__*/_react["default"].createElement("div", {
723
1090
  className: classes.defaultToolbar,
724
1091
  tabIndex: "1"
725
1092
  }, /*#__PURE__*/_react["default"].createElement("div", {
726
1093
  className: classes.buttonsContainer
727
- }, /*#__PURE__*/_react["default"].createElement("button", {
728
- onClick: function onClick(e) {
729
- e.preventDefault();
730
- editor.chain().focus().insertTable().run();
731
- },
732
- disabled: !editorState.canTable,
733
- className: (0, _classnames["default"])(classes.button, (0, _defineProperty2["default"])({}, classes.active, editorState.isTable))
734
- }, /*#__PURE__*/_react["default"].createElement(_GridOn["default"], null)), /*#__PURE__*/_react["default"].createElement("button", {
735
- onClick: function onClick(e) {
736
- e.preventDefault();
737
- editor.chain().focus().toggleBold().run();
738
- },
739
- disabled: !editorState.canBold,
740
- className: (0, _classnames["default"])(classes.button, (0, _defineProperty2["default"])({}, classes.active, editorState.isBold))
741
- }, /*#__PURE__*/_react["default"].createElement(_FormatBold["default"], null)), /*#__PURE__*/_react["default"].createElement("button", {
742
- onClick: function onClick() {
743
- return editor.chain().focus().toggleItalic().run();
744
- },
745
- disabled: !editorState.canItalic,
746
- active: editorState.isItalic,
747
- className: (0, _classnames["default"])(classes.button, (0, _defineProperty2["default"])({}, classes.active, editorState.isItalic))
748
- }, /*#__PURE__*/_react["default"].createElement(_FormatItalic["default"], null)), /*#__PURE__*/_react["default"].createElement("button", {
749
- onClick: function onClick() {
750
- return editor.chain().focus().toggleStrike().run();
751
- },
752
- disabled: !editorState.canStrike,
753
- active: editorState.isStrike,
754
- className: (0, _classnames["default"])(classes.button, (0, _defineProperty2["default"])({}, classes.active, editorState.isStrike))
755
- }, /*#__PURE__*/_react["default"].createElement(_FormatStrikethrough["default"], null)), /*#__PURE__*/_react["default"].createElement("button", {
756
- onClick: function onClick() {
757
- return editor.chain().focus().toggleCode().run();
758
- },
759
- disabled: !editorState.canCode,
760
- active: editorState.isCode,
761
- className: (0, _classnames["default"])(classes.button, (0, _defineProperty2["default"])({}, classes.active, editorState.isCode))
762
- }, /*#__PURE__*/_react["default"].createElement(_Code["default"], null)), /*#__PURE__*/_react["default"].createElement("button", {
763
- onClick: function onClick() {
764
- return editor.chain().focus().toggleUnderline().run();
765
- },
766
- className: (0, _classnames["default"])(classes.button, (0, _defineProperty2["default"])({}, classes.active, editorState.isUnderline))
767
- }, /*#__PURE__*/_react["default"].createElement(_FormatUnderlined["default"], null)), /*#__PURE__*/_react["default"].createElement("button", {
768
- onClick: function onClick() {
769
- return editor.chain().focus().toggleSubscript().run();
770
- },
771
- className: (0, _classnames["default"])(classes.button, (0, _defineProperty2["default"])({}, classes.active, editorState.isSubScript))
772
- }, /*#__PURE__*/_react["default"].createElement(SubscriptIcon, null)), /*#__PURE__*/_react["default"].createElement("button", {
773
- onClick: function onClick() {
774
- return editor.chain().focus().toggleSuperscript().run();
775
- },
776
- className: (0, _classnames["default"])(classes.button, (0, _defineProperty2["default"])({}, classes.active, editorState.isSuperScript))
777
- }, /*#__PURE__*/_react["default"].createElement(SuperscriptIcon, null)), /*#__PURE__*/_react["default"].createElement("button", {
778
- onClick: function onClick() {
779
- return editor.chain().focus().setImageUploadNode().run();
780
- },
781
- className: (0, _classnames["default"])(classes.button, (0, _defineProperty2["default"])({}, classes.active, editorState.isSuperScript))
782
- }, /*#__PURE__*/_react["default"].createElement(_Image["default"], null)), /*#__PURE__*/_react["default"].createElement("button", {
783
- onClick: function onClick() {
784
- return editor.chain().focus().insertMedia({
785
- tag: 'video'
786
- }).run();
787
- },
788
- className: (0, _classnames["default"])(classes.button)
789
- }, /*#__PURE__*/_react["default"].createElement(_Theaters["default"], null)), /*#__PURE__*/_react["default"].createElement("button", {
790
- onClick: function onClick() {
791
- return editor.chain().focus().insertMedia({
792
- tag: 'audio'
793
- }).run();
794
- },
795
- className: (0, _classnames["default"])(classes.button)
796
- }, /*#__PURE__*/_react["default"].createElement(_VolumeUp["default"], null)), /*#__PURE__*/_react["default"].createElement("button", {
797
- onClick: function onClick() {
798
- return editor.commands.openCSSClassDialog();
799
- },
800
- className: (0, _classnames["default"])(classes.button)
801
- }, /*#__PURE__*/_react["default"].createElement(_icons3["default"], null)), /*#__PURE__*/_react["default"].createElement("button", {
802
- onClick: function onClick() {
803
- return editor.chain().focus().toggleHeading({
804
- level: 3
805
- }).run();
806
- },
807
- className: (0, _classnames["default"])(classes.button, (0, _defineProperty2["default"])({}, classes.active, editorState.isHeading3))
808
- }, /*#__PURE__*/_react["default"].createElement(HeadingIcon, null)), /*#__PURE__*/_react["default"].createElement("button", {
809
- onClick: function onClick() {
810
- return editor.chain().focus().insertMath('').run();
811
- },
812
- className: classes.button
813
- }, /*#__PURE__*/_react["default"].createElement(_Functions["default"], null)), /*#__PURE__*/_react["default"].createElement("button", {
814
- onClick: function onClick() {
815
- return setShowPicker(_utils.spanishConfig);
816
- },
817
- className: classes.button
818
- }, /*#__PURE__*/_react["default"].createElement(CharacterIcon, {
819
- letter: "\xF1"
820
- })), /*#__PURE__*/_react["default"].createElement("button", {
821
- onClick: function onClick() {
822
- return setShowPicker(_utils.specialConfig);
823
- },
824
- className: classes.button
825
- }, /*#__PURE__*/_react["default"].createElement(CharacterIcon, {
826
- letter: "\u20AC"
827
- })), /*#__PURE__*/_react["default"].createElement("button", {
828
- onClick: function onClick() {},
829
- className: classes.button
830
- }, /*#__PURE__*/_react["default"].createElement(_icons2["default"], {
831
- editor: editor
832
- })), /*#__PURE__*/_react["default"].createElement("button", {
833
- onClick: function onClick() {
834
- return editor.chain().focus().toggleBulletList().run();
835
- },
836
- className: (0, _classnames["default"])(classes.button, (0, _defineProperty2["default"])({}, classes.active, editorState.isBulletList))
837
- }, /*#__PURE__*/_react["default"].createElement(_FormatListBulleted["default"], null)), /*#__PURE__*/_react["default"].createElement("button", {
838
- onClick: function onClick() {
839
- return editor.chain().focus().toggleOrderedList().run();
840
- },
841
- className: (0, _classnames["default"])(classes.button, (0, _defineProperty2["default"])({}, classes.active, editorState.isOrderedList))
842
- }, /*#__PURE__*/_react["default"].createElement(_FormatListNumbered["default"], null)), /*#__PURE__*/_react["default"].createElement("button", {
843
- onClick: function onClick() {
844
- return editor.chain().focus().undo().run();
845
- },
846
- disabled: !editorState.canUndo,
847
- className: classes.button
848
- }, /*#__PURE__*/_react["default"].createElement(_Undo["default"], null)), /*#__PURE__*/_react["default"].createElement("button", {
849
- onClick: function onClick() {
850
- return editor.chain().focus().redo().run();
851
- },
852
- disabled: !editorState.canRedo,
853
- className: classes.button
854
- }, /*#__PURE__*/_react["default"].createElement(_Redo["default"], null))), /*#__PURE__*/_react["default"].createElement("button", {
1094
+ }, toolbarButtons.filter(function (btn) {
1095
+ var _btn$hidden;
1096
+
1097
+ return !((_btn$hidden = btn.hidden) !== null && _btn$hidden !== void 0 && _btn$hidden.call(btn, editorState));
1098
+ }).map(function (btn, index) {
1099
+ var _btn$isDisabled, _btn$isActive;
1100
+
1101
+ var disabled = (_btn$isDisabled = btn.isDisabled) === null || _btn$isDisabled === void 0 ? void 0 : _btn$isDisabled.call(btn, editorState);
1102
+ var active = (_btn$isActive = btn.isActive) === null || _btn$isActive === void 0 ? void 0 : _btn$isActive.call(btn, editorState);
1103
+ return /*#__PURE__*/_react["default"].createElement("button", {
1104
+ key: index,
1105
+ disabled: disabled,
1106
+ onClick: function onClick(e) {
1107
+ e.preventDefault();
1108
+ btn.onClick(editor);
1109
+ },
1110
+ className: (0, _classnames["default"])(classes.button, (0, _defineProperty2["default"])({}, classes.active, active))
1111
+ }, btn.icon);
1112
+ })), (activePlugins === null || activePlugins === void 0 ? void 0 : activePlugins.includes('responseArea')) && /*#__PURE__*/_react["default"].createElement("button", {
855
1113
  onClick: function onClick() {
856
1114
  editor.chain().focus().insertResponseArea(responseAreaProps.type).run();
857
1115
  },
@@ -996,6 +1254,26 @@ var EditableHtml = function EditableHtml(props) {
996
1254
 
997
1255
  var toolbarOptsToUse = _objectSpread(_objectSpread({}, defaultToolbarOpts), toolbarOpts);
998
1256
 
1257
+ var activePluginsToUse = (0, _react.useMemo)(function () {
1258
+ var _ref6 = props.pluginProps || {},
1259
+ customPlugins = _ref6.customPlugins;
1260
+
1261
+ customPlugins = customPlugins || [];
1262
+ return (0, _index.buildPlugins)(props.activePlugins, customPlugins, {
1263
+ math: {},
1264
+ textAlign: {},
1265
+ html: {},
1266
+ extraCSSRules: props.extraCSSRules || {},
1267
+ image: {},
1268
+ toolbar: {},
1269
+ table: {},
1270
+ responseArea: {},
1271
+ languageCharacters: props.languageCharactersProps,
1272
+ keyPadCharacterRef: {},
1273
+ setKeypadInteraction: {},
1274
+ media: {}
1275
+ });
1276
+ }, [props]);
999
1277
  var extensions = [_extensionTextStyle.TextStyleKit, _starterKit["default"], ExtendedTable, _extensionTableRow.TableRow, _extensionTableHeader.TableHeader, _extensionTableCell.TableCell, _responseArea.ResponseAreaExtension, _responseArea.ExplicitConstructedResponseNode.configure(props.responseAreaProps), _responseArea.DragInTheBlankNode.configure(props.responseAreaProps), _responseArea.InlineDropdownNode.configure(props.responseAreaProps), _math.MathNode.configure({
1000
1278
  toolbarOpts: toolbarOptsToUse
1001
1279
  }), _extensionSubscript["default"], _extensionSuperscript["default"], _extensionTextAlign["default"].configure({
@@ -1005,6 +1283,11 @@ var EditableHtml = function EditableHtml(props) {
1005
1283
  toolbarOpts: toolbarOptsToUse,
1006
1284
  imageHandling: {
1007
1285
  disableImageAlignmentButtons: props.disableImageAlignmentButtons,
1286
+ onDone: function onDone() {
1287
+ var _props$onDone;
1288
+
1289
+ return (_props$onDone = props.onDone) === null || _props$onDone === void 0 ? void 0 : _props$onDone.call(props, editor.getHTML());
1290
+ },
1008
1291
  onDelete: props.imageSupport && props.imageSupport["delete"] && function (node, done) {
1009
1292
  var src = node.attrs.src;
1010
1293
  props.imageSupport["delete"](src, function (e) {
@@ -1072,24 +1355,24 @@ var EditableHtml = function EditableHtml(props) {
1072
1355
  extensions: extensions,
1073
1356
  immediatelyRender: false,
1074
1357
  content: props.markup,
1075
- onUpdate: function onUpdate(_ref5) {
1358
+ onUpdate: function onUpdate(_ref7) {
1076
1359
  var _props$onChange;
1077
1360
 
1078
- var editor = _ref5.editor,
1079
- transaction = _ref5.transaction;
1361
+ var editor = _ref7.editor,
1362
+ transaction = _ref7.transaction;
1080
1363
  return transaction.isDone && ((_props$onChange = props.onChange) === null || _props$onChange === void 0 ? void 0 : _props$onChange.call(props, editor.getHTML()));
1081
1364
  },
1082
- onBlur: function onBlur(_ref6) {
1083
- var editor = _ref6.editor;
1365
+ onBlur: function onBlur(_ref8) {
1366
+ var editor = _ref8.editor;
1084
1367
 
1085
1368
  if (toolbarOptsToUse.doneOn === 'blur') {
1086
1369
  var _props$onChange2;
1087
1370
 
1088
1371
  (_props$onChange2 = props.onChange) === null || _props$onChange2 === void 0 ? void 0 : _props$onChange2.call(props, editor.getHTML());
1089
1372
  } else {
1090
- var _props$onDone;
1373
+ var _props$onDone2;
1091
1374
 
1092
- (_props$onDone = props.onDone) === null || _props$onDone === void 0 ? void 0 : _props$onDone.call(props, editor.getHTML());
1375
+ (_props$onDone2 = props.onDone) === null || _props$onDone2 === void 0 ? void 0 : _props$onDone2.call(props, editor.getHTML());
1093
1376
  }
1094
1377
  }
1095
1378
  });
@@ -1124,10 +1407,10 @@ var EditableHtml = function EditableHtml(props) {
1124
1407
  '--red-light': '#ffebe5',
1125
1408
  '--shadow': "0px 12px 33px 0px rgba(0, 0, 0, .06),\n 0px 3.618px 9.949px 0px rgba(0, 0, 0, .04)"
1126
1409
  };
1127
- Object.entries(cssVariables).forEach(function (_ref7) {
1128
- var _ref8 = (0, _slicedToArray2["default"])(_ref7, 2),
1129
- key = _ref8[0],
1130
- value = _ref8[1];
1410
+ Object.entries(cssVariables).forEach(function (_ref9) {
1411
+ var _ref10 = (0, _slicedToArray2["default"])(_ref9, 2),
1412
+ key = _ref10[0],
1413
+ value = _ref10[1];
1131
1414
 
1132
1415
  document.documentElement.style.setProperty(key, value);
1133
1416
  });
@@ -1183,6 +1466,7 @@ var EditableHtml = function EditableHtml(props) {
1183
1466
  };
1184
1467
  }, [props]);
1185
1468
  return /*#__PURE__*/_react["default"].createElement(EditorContainer, (0, _extends2["default"])({}, _objectSpread(_objectSpread({}, props), {}, {
1469
+ activePlugins: activePluginsToUse,
1186
1470
  toolbarOpts: toolbarOptsToUse
1187
1471
  }), {
1188
1472
  editorState: editorState,
@@ -1210,4 +1494,4 @@ var StyledEditor = (0, _styles.withStyles)({
1210
1494
  })(EditableHtml);
1211
1495
  var _default = StyledEditor;
1212
1496
  exports["default"] = _default;
1213
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qc3giXSwibmFtZXMiOlsiQ2hhcmFjdGVySWNvbiIsImxldHRlciIsImZvbnRTaXplIiwibGluZUhlaWdodCIsInByb3BUeXBlcyIsIlByb3BUeXBlcyIsInN0cmluZyIsIkNoYXJhY3RlclBpY2tlciIsImVkaXRvciIsIm9wdHMiLCJvbkNsb3NlIiwiY2hhcmFjdGVycyIsImxlbmd0aCIsImNvbnRhaW5lclJlZiIsInRvcCIsImxlZnQiLCJwb3NpdGlvbiIsInNldFBvc2l0aW9uIiwicG9wb3ZlciIsInNldFBvcG92ZXIiLCJjb25maWdUb1VzZSIsImxhbmd1YWdlIiwic3BhbmlzaENvbmZpZyIsInNwZWNpYWxDb25maWciLCJsYXlvdXRGb3JDaGFyYWN0ZXJzIiwicmVkdWNlIiwib2JqIiwiYXJyIiwiY29sdW1ucyIsInJvd3MiLCJjbG9zZVBvcE92ZXIiLCJib2R5UmVjdCIsImRvY3VtZW50IiwiYm9keSIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsImZyb20iLCJzdGF0ZSIsInNlbGVjdGlvbiIsInN0YXJ0IiwidmlldyIsImNvb3Jkc0F0UG9zIiwiTWF0aCIsImFicyIsImhhbmRsZUNsaWNrT3V0c2lkZSIsImUiLCJjdXJyZW50IiwiY29udGFpbnMiLCJ0YXJnZXQiLCJkb20iLCJhZGRFdmVudExpc3RlbmVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsInJlbmRlclBvcE92ZXIiLCJldmVudCIsImVsIiwiYW5jaG9yRWwiLCJjdXJyZW50VGFyZ2V0IiwiaGFuZGxlQ2hhbmdlIiwidmFsIiwiY2hhaW4iLCJmb2N1cyIsImluc2VydENvbnRlbnQiLCJydW4iLCJSZWFjdERPTSIsImNyZWF0ZVBvcnRhbCIsIm1heFdpZHRoIiwia2V5UGFkQ2hhcmFjdGVyUmVmIiwic2V0S2V5cGFkSW50ZXJhY3Rpb24iLCJuIiwibWFwIiwiayIsIm5hbWUiLCJ3cml0ZSIsImxhYmVsIiwiY2F0ZWdvcnkiLCJleHRyYUNsYXNzIiwiZXh0cmFQcm9wcyIsInN0eWxlIiwiYm9yZGVyIiwiaGFzUHJldmlldyIsImFjdGlvbnMiLCJvbk1vdXNlRW50ZXIiLCJldiIsIm9uTW91c2VMZWF2ZSIsImRlc2NyaXB0aW9uIiwidW5pY29kZSIsIlN1cGVyc2NyaXB0SWNvbiIsIlN1YnNjcmlwdEljb24iLCJIZWFkaW5nSWNvbiIsIndpZHRoIiwiaGVpZ2h0IiwiRXh0ZW5kZWRUYWJsZSIsIlRhYmxlIiwiZXh0ZW5kIiwicmVuZGVySFRNTCIsInByb3BzIiwib3JpZ2luYWxUYWJsZSIsInBhcmVudCIsInN0eWxlcyIsInRoZW1lIiwicm9vdCIsInBhZGRpbmciLCJib3JkZXJSYWRpdXMiLCJjdXJzb3IiLCJ3b3JkQnJlYWsiLCJvdmVyZmxvdyIsIm1heEhlaWdodCIsIm1hcmdpblRvcCIsIm1hcmdpbiIsIm1hcmdpbkJvdHRvbSIsInRleHRXcmFwIiwiYmFja2dyb3VuZENvbG9yIiwiY29sb3IiLCJiYWNrZ3JvdW5kIiwiZm9udEZhbWlseSIsImJvcmRlckxlZnQiLCJwYWRkaW5nTGVmdCIsImJvcmRlclRvcCIsImNoaWxkcmVuIiwiZWRpdG9ySG9sZGVyIiwidGV4dCIsInJpZ2h0IiwiYm90dG9tIiwiY29udGVudCIsInRyYW5zaXRpb24iLCJwb2ludGVyRXZlbnRzIiwidHJhbnNmb3JtIiwicHJpbWFyeSIsInBhbGV0dGUiLCJjb21tb24iLCJibGFjayIsImRpc2FibGVkVW5kZXJsaW5lIiwiZGlzcGxheSIsImRpc2FibGVkU2Nyb2xsYmFyIiwic2Nyb2xsYmFyV2lkdGgiLCJyZWFkT25seSIsImJhY2tncm91bmRTaXplIiwiYmFja2dyb3VuZEltYWdlIiwiYmFja2dyb3VuZFJlcGVhdCIsImJhY2tncm91bmRQb3NpdGlvbiIsImVkaXRvckluRm9jdXMiLCJlcnJvciIsIm1haW4iLCJub0JvcmRlciIsIm5vUGFkZGluZyIsInRvb2xiYXJPblRvcCIsImRlZmF1bHRSZXNwb25zZUFyZWFQcm9wcyIsIm9wdGlvbnMiLCJyZXNwQXJlYVRvb2xiYXIiLCJvbkhhbmRsZUFyZWFDaGFuZ2UiLCJ2YWx1ZVRvU2l6ZSIsInYiLCJjYWxjUmVnZXgiLCJlbmRzV2l0aCIsInVuZGVmaW5lZCIsIm1hdGNoIiwidmFsdWUiLCJwYXJzZUludCIsImlzTmFOIiwiVGlwdGFwQ29udGFpbmVyIiwiZWRpdG9yU3RhdGUiLCJjbGFzc2VzIiwiZGlzYWJsZVVuZGVybGluZSIsImRpc2FibGVTY3JvbGxiYXIiLCJ0b29sYmFyT3B0cyIsInJlc3BvbnNlQXJlYVByb3BzIiwiYXV0b0ZvY3VzIiwibWluV2lkdGgiLCJtaW5IZWlnaHQiLCJob2xkZXJOYW1lcyIsImlzRm9jdXNlZCIsIlByb21pc2UiLCJyZXNvbHZlIiwidGhlbiIsImNvbW1hbmRzIiwic2l6ZVN0eWxlIiwiY2xhc3NOYW1lIiwib25DaGFuZ2UiLCJFZGl0b3JDb250YWluZXIiLCJNZW51QmFyIiwidG9vbE9wdHMiLCJzaG93UGlja2VyIiwic2V0U2hvd1BpY2tlciIsInNlbGVjdG9yIiwiY3R4IiwiY3VycmVudE5vZGUiLCJOb2RlU2VsZWN0aW9uIiwibm9kZSIsImN1c3RvbVRvb2xiYXJBY3RpdmUiLCJpc0FjdGl2ZSIsImlzQm9sZCIsImNhbkJvbGQiLCJjYW4iLCJ0b2dnbGVCb2xkIiwiaXNUYWJsZSIsImNhblRhYmxlIiwiaW5zZXJ0VGFibGUiLCJpc0l0YWxpYyIsImNhbkl0YWxpYyIsInRvZ2dsZUl0YWxpYyIsImlzU3RyaWtlIiwiY2FuU3RyaWtlIiwidG9nZ2xlU3RyaWtlIiwiaXNDb2RlIiwiY2FuQ29kZSIsInRvZ2dsZUNvZGUiLCJjYW5DbGVhck1hcmtzIiwidW5zZXRBbGxNYXJrcyIsImlzVW5kZXJsaW5lIiwiaXNTdWJTY3JpcHQiLCJpc1N1cGVyU2NyaXB0IiwiaXNQYXJhZ3JhcGgiLCJpc0hlYWRpbmcxIiwibGV2ZWwiLCJpc0hlYWRpbmcyIiwiaXNIZWFkaW5nMyIsImlzSGVhZGluZzQiLCJpc0hlYWRpbmc1IiwiaXNIZWFkaW5nNiIsImlzQnVsbGV0TGlzdCIsImlzT3JkZXJlZExpc3QiLCJpc0NvZGVCbG9jayIsImlzQmxvY2txdW90ZSIsImNhblVuZG8iLCJ1bmRvIiwiY2FuUmVkbyIsInJlZG8iLCJoYXNEb25lQnV0dG9uIiwiYXV0b1dpZHRoIiwibmFtZXMiLCJ0b29sYmFyIiwiUElFX1RPT0xCQVJfX0NMQVNTIiwidG9vbGJhcldpdGhOb0RvbmUiLCJ0b29sYmFyVG9wIiwidG9vbGJhclJpZ2h0IiwiYWxpZ25tZW50IiwiZm9jdXNlZCIsImFsd2F5c1Zpc2libGUiLCJfdG9vbGJhck9wZW5lZCIsImZ1bGxXaWR0aCIsImhpZGRlbiIsImlzSGlkZGVuIiwiY3VzdG9tU3R5bGVzIiwiaGFuZGxlTW91c2VEb3duIiwicHJldmVudERlZmF1bHQiLCJkZWZhdWx0VG9vbGJhciIsImJ1dHRvbnNDb250YWluZXIiLCJidXR0b24iLCJhY3RpdmUiLCJ0b2dnbGVVbmRlcmxpbmUiLCJ0b2dnbGVTdWJzY3JpcHQiLCJ0b2dnbGVTdXBlcnNjcmlwdCIsInNldEltYWdlVXBsb2FkTm9kZSIsImluc2VydE1lZGlhIiwidGFnIiwib3BlbkNTU0NsYXNzRGlhbG9nIiwidG9nZ2xlSGVhZGluZyIsImluc2VydE1hdGgiLCJ0b2dnbGVCdWxsZXRMaXN0IiwidG9nZ2xlT3JkZXJlZExpc3QiLCJpbnNlcnRSZXNwb25zZUFyZWEiLCJ0eXBlIiwiZ2V0SFRNTCIsImJsdXIiLCJjaCIsImNvbnNvbGUiLCJsb2ciLCJqdXN0aWZ5Q29udGVudCIsImFsaWduSXRlbXMiLCJvdXRsaW5lIiwiZ3JleSIsImRpc2FibGVkIiwib3BhY2l0eSIsInpJbmRleCIsImJveFNoYWRvdyIsImJveFNpemluZyIsInZpc2liaWxpdHkiLCJpY29uUm9vdCIsInZlcnRpY2FsQWxpZ24iLCJzaGFyZWQiLCJTdHlsZWRNZW51QmFyIiwiaW5kZXgiLCJkZWZhdWx0VG9vbGJhck9wdHMiLCJzaG93RG9uZSIsImRvbmVPbiIsIkVkaXRhYmxlSHRtbCIsInBlbmRpbmdJbWFnZXMiLCJzZXRQZW5kaW5nSW1hZ2VzIiwic2NoZWR1bGVkIiwic2V0U2NoZWR1bGVkIiwidG9vbGJhck9wdHNUb1VzZSIsImV4dGVuc2lvbnMiLCJUZXh0U3R5bGVLaXQiLCJTdGFydGVyS2l0IiwiVGFibGVSb3ciLCJUYWJsZUhlYWRlciIsIlRhYmxlQ2VsbCIsIlJlc3BvbnNlQXJlYUV4dGVuc2lvbiIsIkV4cGxpY2l0Q29uc3RydWN0ZWRSZXNwb25zZU5vZGUiLCJjb25maWd1cmUiLCJEcmFnSW5UaGVCbGFua05vZGUiLCJJbmxpbmVEcm9wZG93bk5vZGUiLCJNYXRoTm9kZSIsIlN1YlNjcmlwdCIsIlN1cGVyU2NyaXB0IiwiVGV4dEFsaWduIiwidHlwZXMiLCJhbGlnbm1lbnRzIiwiSW1hZ2UiLCJJbWFnZVVwbG9hZE5vZGUiLCJpbWFnZUhhbmRsaW5nIiwiZGlzYWJsZUltYWdlQWxpZ25tZW50QnV0dG9ucyIsIm9uRGVsZXRlIiwiaW1hZ2VTdXBwb3J0IiwiZG9uZSIsInNyYyIsImF0dHJzIiwibmV3UGVuZGluZ0ltYWdlcyIsImZpbHRlciIsImltZyIsImtleSIsIm5ld1N0YXRlIiwiaW5zZXJ0SW1hZ2VSZXF1ZXN0ZWQiLCJhZGRlZEltYWdlIiwiZ2V0SGFuZGxlciIsIm9uRmluaXNoIiwicmVzdWx0IiwiY2IiLCJjYWxsYmFjayIsImhhbmRsZXIiLCJhZGQiLCJtYXhJbWFnZVdpZHRoIiwibWF4SW1hZ2VIZWlnaHQiLCJsaW1pdCIsIk1lZGlhIiwidXBsb2FkU291bmRTdXBwb3J0IiwiQ1NTTWFyayIsImV4dHJhQ1NTUnVsZXMiLCJpbW1lZGlhdGVseVJlbmRlciIsIm1hcmt1cCIsIm9uVXBkYXRlIiwidHJhbnNhY3Rpb24iLCJpc0RvbmUiLCJvbkJsdXIiLCJvbkRvbmUiLCJzZXRDb250ZW50IiwiY3NzVmFyaWFibGVzIiwiT2JqZWN0IiwiZW50cmllcyIsImZvckVhY2giLCJkb2N1bWVudEVsZW1lbnQiLCJzZXRQcm9wZXJ0eSIsIlN0eWxlZEVkaXRvciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQTs7QUFDQTs7QUFNQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQTs7QUFDQTs7QUFDQTs7Ozs7Ozs7OztBQUVBLElBQU1BLGFBQWEsR0FBRyxTQUFoQkEsYUFBZ0I7QUFBQSxNQUFHQyxNQUFILFFBQUdBLE1BQUg7QUFBQSxzQkFDcEI7QUFDRSxJQUFBLEtBQUssRUFBRTtBQUNMQyxNQUFBQSxRQUFRLEVBQUUsTUFETDtBQUVMQyxNQUFBQSxVQUFVLEVBQUU7QUFGUDtBQURULEtBTUdGLE1BTkgsQ0FEb0I7QUFBQSxDQUF0Qjs7QUFXQUQsYUFBYSxDQUFDSSxTQUFkLEdBQTBCO0FBQ3hCSCxFQUFBQSxNQUFNLEVBQUVJLHNCQUFVQztBQURNLENBQTFCOztBQUlPLFNBQVNDLGVBQVQsUUFBb0Q7QUFBQTs7QUFBQSxNQUF6QkMsTUFBeUIsU0FBekJBLE1BQXlCO0FBQUEsTUFBakJDLElBQWlCLFNBQWpCQSxJQUFpQjtBQUFBLE1BQVhDLE9BQVcsU0FBWEEsT0FBVzs7QUFDekQsTUFBSSxFQUFDRCxJQUFELGFBQUNBLElBQUQsbUNBQUNBLElBQUksQ0FBRUUsVUFBUCw2Q0FBQyxpQkFBa0JDLE1BQW5CLENBQUosRUFBK0I7QUFDN0IsV0FBTyxJQUFQO0FBQ0Q7O0FBRUQsTUFBTUMsWUFBWSxHQUFHLG1CQUFPLElBQVAsQ0FBckI7O0FBQ0Esa0JBQWdDLHFCQUFTO0FBQUVDLElBQUFBLEdBQUcsRUFBRSxDQUFQO0FBQVVDLElBQUFBLElBQUksRUFBRTtBQUFoQixHQUFULENBQWhDO0FBQUE7QUFBQSxNQUFPQyxRQUFQO0FBQUEsTUFBaUJDLFdBQWpCOztBQUNBLG1CQUE4QixxQkFBUyxJQUFULENBQTlCO0FBQUE7QUFBQSxNQUFPQyxPQUFQO0FBQUEsTUFBZ0JDLFVBQWhCOztBQUVBLE1BQUlDLFdBQUo7O0FBRUEsVUFBUSxJQUFSO0FBQ0UsU0FBS1gsSUFBSSxDQUFDWSxRQUFMLEtBQWtCLFNBQXZCO0FBQ0VELE1BQUFBLFdBQVcsR0FBR0Usb0JBQWQ7QUFDQTs7QUFDRixTQUFLYixJQUFJLENBQUNZLFFBQUwsS0FBa0IsU0FBdkI7QUFDRUQsTUFBQUEsV0FBVyxHQUFHRyxvQkFBZDtBQUNBOztBQUNGO0FBQ0VILE1BQUFBLFdBQVcsR0FBR1gsSUFBZDtBQVJKOztBQVdBLE1BQU1lLG1CQUFtQixHQUFHSixXQUFXLENBQUNULFVBQVosQ0FBdUJjLE1BQXZCLENBQzFCLFVBQUNDLEdBQUQsRUFBTUMsR0FBTixFQUFjO0FBQ1osUUFBSUEsR0FBRyxDQUFDZixNQUFKLElBQWNjLEdBQUcsQ0FBQ0UsT0FBdEIsRUFBK0I7QUFDN0JGLE1BQUFBLEdBQUcsQ0FBQ0UsT0FBSixHQUFjRCxHQUFHLENBQUNmLE1BQWxCO0FBQ0Q7O0FBRUQsV0FBT2MsR0FBUDtBQUNELEdBUHlCLEVBUTFCO0FBQUVHLElBQUFBLElBQUksRUFBRVQsV0FBVyxDQUFDVCxVQUFaLENBQXVCQyxNQUEvQjtBQUF1Q2dCLElBQUFBLE9BQU8sRUFBRTtBQUFoRCxHQVIwQixDQUE1QjtBQVdBLHdCQUFVLFlBQU07QUFDZCxXQUFPLFlBQU07QUFDWEUsTUFBQUEsWUFBWTtBQUNiLEtBRkQ7QUFHRCxHQUpELEVBSUcsRUFKSDtBQU1BLHdCQUFVLFlBQU07QUFDZCxRQUFJLENBQUN0QixNQUFMLEVBQWEsT0FEQyxDQUdkOztBQUNBLFFBQU11QixRQUFRLEdBQUdDLFFBQVEsQ0FBQ0MsSUFBVCxDQUFjQyxxQkFBZCxFQUFqQjtBQUNBLFFBQVFDLElBQVIsR0FBaUIzQixNQUFNLENBQUM0QixLQUFQLENBQWFDLFNBQTlCLENBQVFGLElBQVI7QUFDQSxRQUFNRyxLQUFLLEdBQUc5QixNQUFNLENBQUMrQixJQUFQLENBQVlDLFdBQVosQ0FBd0JMLElBQXhCLENBQWQ7QUFDQWxCLElBQUFBLFdBQVcsQ0FBQztBQUNWSCxNQUFBQSxHQUFHLEVBQUV3QixLQUFLLENBQUN4QixHQUFOLEdBQVkyQixJQUFJLENBQUNDLEdBQUwsQ0FBU1gsUUFBUSxDQUFDakIsR0FBbEIsQ0FBWixHQUFxQyxFQURoQztBQUNvQztBQUM5Q0MsTUFBQUEsSUFBSSxFQUFFdUIsS0FBSyxDQUFDdkI7QUFGRixLQUFELENBQVg7O0FBS0EsUUFBTTRCLGtCQUFrQixHQUFHLFNBQXJCQSxrQkFBcUIsQ0FBQ0MsQ0FBRCxFQUFPO0FBQ2hDLFVBQUkvQixZQUFZLENBQUNnQyxPQUFiLElBQXdCLENBQUNoQyxZQUFZLENBQUNnQyxPQUFiLENBQXFCQyxRQUFyQixDQUE4QkYsQ0FBQyxDQUFDRyxNQUFoQyxDQUF6QixJQUFvRSxDQUFDdkMsTUFBTSxDQUFDK0IsSUFBUCxDQUFZUyxHQUFaLENBQWdCRixRQUFoQixDQUF5QkYsQ0FBQyxDQUFDRyxNQUEzQixDQUF6RSxFQUE2RztBQUMzR3JDLFFBQUFBLE9BQU87QUFDUjtBQUNGLEtBSkQ7O0FBTUFzQixJQUFBQSxRQUFRLENBQUNpQixnQkFBVCxDQUEwQixXQUExQixFQUF1Q04sa0JBQXZDO0FBQ0EsV0FBTztBQUFBLGFBQU1YLFFBQVEsQ0FBQ2tCLG1CQUFULENBQTZCLFdBQTdCLEVBQTBDUCxrQkFBMUMsQ0FBTjtBQUFBLEtBQVA7QUFDRCxHQXBCRCxFQW9CRyxDQUFDbkMsTUFBRCxDQXBCSDs7QUFzQkEsTUFBTTJDLGFBQWEsR0FBRyxTQUFoQkEsYUFBZ0IsQ0FBQ0MsS0FBRCxFQUFRQyxFQUFSO0FBQUEsV0FBZWxDLFVBQVUsQ0FBQztBQUFFbUMsTUFBQUEsUUFBUSxFQUFFRixLQUFLLENBQUNHLGFBQWxCO0FBQWlDRixNQUFBQSxFQUFFLEVBQUZBO0FBQWpDLEtBQUQsQ0FBekI7QUFBQSxHQUF0Qjs7QUFDQSxNQUFNdkIsWUFBWSxHQUFHLFNBQWZBLFlBQWU7QUFBQSxXQUFNWCxVQUFVLENBQUMsSUFBRCxDQUFoQjtBQUFBLEdBQXJCOztBQUVBLE1BQU1xQyxZQUFZLEdBQUcsU0FBZkEsWUFBZSxDQUFDQyxHQUFELEVBQVM7QUFDNUIsUUFBSSxPQUFPQSxHQUFQLEtBQWUsUUFBbkIsRUFBNkI7QUFDM0JqRCxNQUFBQSxNQUFNLENBQ0hrRCxLQURILEdBRUdDLEtBRkgsR0FHR0MsYUFISCxDQUdpQkgsR0FIakIsRUFJR0ksR0FKSDtBQUtEO0FBQ0YsR0FSRDs7QUFVQSxzQkFDRSxnQ0FBQyxpQkFBRCxDQUFPLFFBQVAscUJBQ0dDLHFCQUFTQyxZQUFULGVBQ0M7QUFDRSxJQUFBLEdBQUcsRUFBRWxELFlBRFA7QUFFRSxJQUFBLFNBQVMsRUFBQyx5QkFGWjtBQUdFLElBQUEsS0FBSyxFQUFFO0FBQ0xHLE1BQUFBLFFBQVEsRUFBRSxVQURMO0FBRUxGLE1BQUFBLEdBQUcsWUFBS0UsUUFBUSxDQUFDRixHQUFkLE9BRkU7QUFHTEMsTUFBQUEsSUFBSSxZQUFLQyxRQUFRLENBQUNELElBQWQsT0FIQztBQUlMaUQsTUFBQUEsUUFBUSxFQUFFO0FBSkw7QUFIVCxrQkFVRSwwREFDRSxnQ0FBQyx3QkFBRDtBQUNFLElBQUEsa0JBQWtCLEVBQUV2RCxJQUFJLENBQUN3RCxrQkFEM0I7QUFFRSxJQUFBLG9CQUFvQixFQUFFeEQsSUFBSSxDQUFDeUQsb0JBRjdCO0FBR0UsSUFBQSxTQUFTLE1BSFg7QUFJRSxJQUFBLFNBQVMsTUFKWDtBQUtFLElBQUEsU0FBUyxNQUxYO0FBTUUsSUFBQSxlQUFlLE1BTmpCO0FBT0UsSUFBQSx3QkFBd0IsTUFQMUI7QUFRRSxJQUFBLGVBQWUsRUFBRTFDLG1CQVJuQjtBQVNFLElBQUEsY0FBYyxFQUFFSixXQUFXLENBQUNULFVBQVosQ0FBdUJjLE1BQXZCLENBQThCLFVBQUNFLEdBQUQsRUFBTXdDLENBQU4sRUFBWTtBQUN4RHhDLE1BQUFBLEdBQUcsaURBQ0VBLEdBREYsdUNBRUV3QyxDQUFDLENBQUNDLEdBQUYsQ0FBTSxVQUFDQyxDQUFEO0FBQUE7QUFDUEMsVUFBQUEsSUFBSSxFQUFFLHFCQUFJRCxDQUFKLEVBQU8sTUFBUCxLQUFrQkEsQ0FEakI7QUFFUEUsVUFBQUEsS0FBSyxFQUFFLHFCQUFJRixDQUFKLEVBQU8sT0FBUCxLQUFtQkEsQ0FGbkI7QUFHUEcsVUFBQUEsS0FBSyxFQUFFLHFCQUFJSCxDQUFKLEVBQU8sT0FBUCxLQUFtQkEsQ0FIbkI7QUFJUEksVUFBQUEsUUFBUSxFQUFFLFdBSkg7QUFLUEMsVUFBQUEsVUFBVSxFQUFFLFdBTEw7QUFNUEMsVUFBQUEsVUFBVSxrQ0FDSk4sQ0FBQyxDQUFDTSxVQUFGLElBQWdCLEVBRFo7QUFFUkMsWUFBQUEsS0FBSyxrQ0FDQSxDQUFDUCxDQUFDLENBQUNNLFVBQUYsSUFBZ0IsRUFBakIsRUFBcUJDLEtBRHJCO0FBRUhDLGNBQUFBLE1BQU0sRUFBRTtBQUZMO0FBRkc7QUFOSCxXQWFIekQsV0FBVyxDQUFDMEQsVUFBWixHQUNBO0FBQ0VDLFVBQUFBLE9BQU8sRUFBRTtBQUFFQyxZQUFBQSxZQUFZLEVBQUUsc0JBQUNDLEVBQUQ7QUFBQSxxQkFBUTlCLGFBQWEsQ0FBQzhCLEVBQUQsRUFBS1osQ0FBTCxDQUFyQjtBQUFBLGFBQWhCO0FBQThDYSxZQUFBQSxZQUFZLEVBQUVwRDtBQUE1RDtBQURYLFNBREEsR0FJQSxFQWpCRztBQUFBLE9BQU4sQ0FGRixFQUFIO0FBdUJBLGFBQU9ILEdBQVA7QUFDRCxLQXpCZSxFQXlCYixFQXpCYSxDQVRsQjtBQW1DRSxJQUFBLFVBQVUsRUFBQyxVQW5DYjtBQW9DRSxJQUFBLFFBQVEsRUFBRTZCLFlBcENaO0FBcUNFLElBQUEsTUFBTSxFQUFFOUM7QUFyQ1YsSUFERixDQVZGLENBREQsRUFxRENzQixRQUFRLENBQUNDLElBckRWLENBREgsRUF3REdmLE9BQU8saUJBQ040QyxxQkFBU0MsWUFBVCxlQUNFLGdDQUFDLHdCQUFEO0FBQWMsSUFBQSxPQUFPLEVBQUVqQyxZQUF2QjtBQUFxQyxJQUFBLFFBQVEsRUFBRVosT0FBTyxDQUFDb0M7QUFBdkQsa0JBQ0UsNkNBQU1wQyxPQUFPLENBQUNtQyxFQUFSLENBQVdtQixLQUFqQixDQURGLGVBRUU7QUFBSyxJQUFBLEtBQUssRUFBRTtBQUFFdEUsTUFBQUEsUUFBUSxFQUFFLEVBQVo7QUFBZ0JDLE1BQUFBLFVBQVUsRUFBRTtBQUE1QjtBQUFaLEtBQW1EZSxPQUFPLENBQUNtQyxFQUFSLENBQVc4QixXQUE5RCxDQUZGLGVBR0U7QUFBSyxJQUFBLEtBQUssRUFBRTtBQUFFakYsTUFBQUEsUUFBUSxFQUFFLEVBQVo7QUFBZ0JDLE1BQUFBLFVBQVUsRUFBRTtBQUE1QjtBQUFaLEtBQW1EZSxPQUFPLENBQUNtQyxFQUFSLENBQVcrQixPQUE5RCxDQUhGLENBREYsRUFNRXBELFFBQVEsQ0FBQ0MsSUFOWCxDQXpESixDQURGO0FBb0VEOztBQUVELElBQU1vRCxlQUFlLEdBQUcsU0FBbEJBLGVBQWtCO0FBQUEsc0JBQ3RCO0FBQUssSUFBQSxLQUFLLEVBQUMsNEJBQVg7QUFBd0MsSUFBQSxNQUFNLEVBQUMsTUFBL0M7QUFBc0QsSUFBQSxPQUFPLEVBQUMsV0FBOUQ7QUFBMEUsSUFBQSxLQUFLLEVBQUMsTUFBaEY7QUFBdUYsSUFBQSxJQUFJLEVBQUM7QUFBNUYsa0JBQ0U7QUFDRSxJQUFBLENBQUMsRUFBQyxnTkFESjtBQUVFLElBQUEsSUFBSSxFQUFDO0FBRlAsSUFERixDQURzQjtBQUFBLENBQXhCOztBQVNBLElBQU1DLGFBQWEsR0FBRyxTQUFoQkEsYUFBZ0I7QUFBQSxzQkFDcEI7QUFBSyxJQUFBLEtBQUssRUFBQyw0QkFBWDtBQUF3QyxJQUFBLE1BQU0sRUFBQyxNQUEvQztBQUFzRCxJQUFBLE9BQU8sRUFBQyxXQUE5RDtBQUEwRSxJQUFBLEtBQUssRUFBQyxNQUFoRjtBQUF1RixJQUFBLElBQUksRUFBQztBQUE1RixrQkFDRTtBQUNFLElBQUEsQ0FBQyxFQUFDLHVOQURKO0FBRUUsSUFBQSxJQUFJLEVBQUM7QUFGUCxJQURGLENBRG9CO0FBQUEsQ0FBdEI7O0FBU0EsSUFBTUMsV0FBVyxHQUFHLFNBQWRBLFdBQWM7QUFBQSxzQkFDbEI7QUFDRSxJQUFBLEtBQUssRUFBQyxJQURSO0FBRUUsSUFBQSxNQUFNLEVBQUMsSUFGVDtBQUdFLElBQUEsT0FBTyxFQUFDLFdBSFY7QUFJRSxJQUFBLElBQUksRUFBQyxNQUpQO0FBS0UsSUFBQSxLQUFLLEVBQUMsNEJBTFI7QUFNRSxJQUFBLEtBQUssRUFBRTtBQUFFQyxNQUFBQSxLQUFLLEVBQUUsTUFBVDtBQUFpQkMsTUFBQUEsTUFBTSxFQUFFO0FBQXpCO0FBTlQsa0JBUUU7QUFDRSxJQUFBLENBQUMsRUFBQyw2YkFESjtBQUVFLElBQUEsSUFBSSxFQUFDO0FBRlAsSUFSRixDQURrQjtBQUFBLENBQXBCOztBQWdCQSxJQUFNQyxhQUFhLEdBQUdDLHNCQUFNQyxNQUFOLENBQWE7QUFDakNDLEVBQUFBLFVBRGlDLHNCQUN0QkMsS0FEc0IsRUFDZjtBQUNoQixRQUFNQyxhQUFhLEdBQUcsS0FBS0MsTUFBTCxDQUFZRixLQUFaLENBQXRCO0FBRUFDLElBQUFBLGFBQWEsQ0FBQyxDQUFELENBQWIsQ0FBaUJuQixLQUFqQixhQUE0Qm1CLGFBQWEsQ0FBQyxDQUFELENBQWIsQ0FBaUJuQixLQUE3QztBQUtBbUIsSUFBQUEsYUFBYSxDQUFDLENBQUQsQ0FBYixDQUFpQmxCLE1BQWpCLEdBQTBCLEdBQTFCO0FBRUEsV0FBT2tCLGFBQVA7QUFDRDtBQVpnQyxDQUFiLENBQXRCOztBQWVBLElBQU1FLE1BQU0sR0FBRyxTQUFUQSxNQUFTLENBQUNDLEtBQUQ7QUFBQSxTQUFZO0FBQ3pCQyxJQUFBQSxJQUFJLEVBQUU7QUFDSm5GLE1BQUFBLFFBQVEsRUFBRSxVQUROO0FBRUpvRixNQUFBQSxPQUFPLEVBQUUsS0FGTDtBQUdKdkIsTUFBQUEsTUFBTSxFQUFFLGdCQUhKO0FBSUp3QixNQUFBQSxZQUFZLEVBQUUsS0FKVjtBQUtKQyxNQUFBQSxNQUFNLEVBQUUsTUFMSjtBQU1KLHNDQUFnQztBQUM5QkMsUUFBQUEsU0FBUyxFQUFFLFlBRG1CO0FBRTlCQyxRQUFBQSxRQUFRLEVBQUUsU0FGb0I7QUFHOUJDLFFBQUFBLFNBQVMsRUFBRSxPQUhtQjtBQUk5QjtBQUNBTCxRQUFBQSxPQUFPLEVBQUU7QUFMcUIsT0FONUI7QUFjSix1QkFBaUI7QUFDZk0sUUFBQUEsU0FBUyxFQUFFO0FBREksT0FkYjtBQWtCSixvQkFBYztBQUNaTixRQUFBQSxPQUFPLEVBQUUsUUFERztBQUVaTyxRQUFBQSxNQUFNLEVBQUU7QUFGSSxPQWxCVjtBQXVCSiw4QkFBd0I7QUFDdEJELFFBQUFBLFNBQVMsRUFBRSxRQURXO0FBRXRCRSxRQUFBQSxZQUFZLEVBQUU7QUFGUSxPQXZCcEI7QUE0QkosNENBQXNDO0FBQ3BDekcsUUFBQUEsVUFBVSxFQUFFLEdBRHdCO0FBRXBDdUcsUUFBQUEsU0FBUyxFQUFFLFFBRnlCO0FBR3BDRyxRQUFBQSxRQUFRLEVBQUU7QUFIMEIsT0E1QmxDO0FBa0NKLG9CQUFjO0FBQ1pILFFBQUFBLFNBQVMsRUFBRSxRQURDO0FBRVpFLFFBQUFBLFlBQVksRUFBRTtBQUZGLE9BbENWO0FBdUNKLGNBQVE7QUFDTjFHLFFBQUFBLFFBQVEsRUFBRTtBQURKLE9BdkNKO0FBMkNKLGNBQVE7QUFDTkEsUUFBQUEsUUFBUSxFQUFFO0FBREosT0EzQ0o7QUErQ0osY0FBUTtBQUNOQSxRQUFBQSxRQUFRLEVBQUU7QUFESixPQS9DSjtBQW1ESiwwQkFBb0I7QUFDbEJBLFFBQUFBLFFBQVEsRUFBRTtBQURRLE9BbkRoQjtBQXVESixnQkFBVTtBQUNSNEcsUUFBQUEsZUFBZSxFQUFFLHFCQURUO0FBRVJULFFBQUFBLFlBQVksRUFBRSxRQUZOO0FBR1JVLFFBQUFBLEtBQUssRUFBRSxjQUhDO0FBSVI3RyxRQUFBQSxRQUFRLEVBQUUsU0FKRjtBQUtSa0csUUFBQUEsT0FBTyxFQUFFO0FBTEQsT0F2RE47QUErREosZUFBUztBQUNQWSxRQUFBQSxVQUFVLEVBQUUsY0FETDtBQUVQWCxRQUFBQSxZQUFZLEVBQUUsUUFGUDtBQUdQVSxRQUFBQSxLQUFLLEVBQUUsY0FIQTtBQUlQRSxRQUFBQSxVQUFVLEVBQUUsNEJBSkw7QUFLUE4sUUFBQUEsTUFBTSxFQUFFLFVBTEQ7QUFNUFAsUUFBQUEsT0FBTyxFQUFFLGNBTkY7QUFRUCxrQkFBVTtBQUNSWSxVQUFBQSxVQUFVLEVBQUUsTUFESjtBQUVSRCxVQUFBQSxLQUFLLEVBQUUsU0FGQztBQUdSN0csVUFBQUEsUUFBUSxFQUFFLFFBSEY7QUFJUmtHLFVBQUFBLE9BQU8sRUFBRTtBQUpEO0FBUkgsT0EvREw7QUErRUosc0JBQWdCO0FBQ2RjLFFBQUFBLFVBQVUsRUFBRSx5QkFERTtBQUVkUCxRQUFBQSxNQUFNLEVBQUUsVUFGTTtBQUdkUSxRQUFBQSxXQUFXLEVBQUU7QUFIQyxPQS9FWjtBQXFGSixjQUFRO0FBQ050QyxRQUFBQSxNQUFNLEVBQUUsTUFERjtBQUVOdUMsUUFBQUEsU0FBUyxFQUFFLHlCQUZMO0FBR05ULFFBQUFBLE1BQU0sRUFBRTtBQUhGO0FBckZKLEtBRG1CO0FBNEZ6QlUsSUFBQUEsUUFBUSxFQUFFO0FBQ1JqQixNQUFBQSxPQUFPLEVBQUU7QUFERCxLQTVGZTtBQStGekJrQixJQUFBQSxZQUFZLEVBQUU7QUFDWnRHLE1BQUFBLFFBQVEsRUFBRSxVQURFO0FBRVpvRixNQUFBQSxPQUFPLEVBQUUsS0FGRztBQUdaO0FBQ0FJLE1BQUFBLFFBQVEsRUFBRSxTQUpFO0FBS1pPLE1BQUFBLEtBQUssRUFBRUEsZ0JBQU1RLElBQU4sRUFMSztBQU1aVCxNQUFBQSxlQUFlLEVBQUVDLGdCQUFNQyxVQUFOLEVBTkw7QUFPWixtQkFBYTtBQUNYakcsUUFBQUEsSUFBSSxFQUFFLEdBREs7QUFFWHlHLFFBQUFBLEtBQUssRUFBRSxHQUZJO0FBR1hDLFFBQUFBLE1BQU0sRUFBRSxHQUhHO0FBSVhoQyxRQUFBQSxNQUFNLEVBQUUsS0FKRztBQUtYaUMsUUFBQUEsT0FBTyxFQUFFLElBTEU7QUFNWDFHLFFBQUFBLFFBQVEsRUFBRSxVQU5DO0FBT1gyRyxRQUFBQSxVQUFVLEVBQUUseURBUEQ7QUFRWEMsUUFBQUEsYUFBYSxFQUFFLE1BUko7QUFTWGQsUUFBQUEsZUFBZSxFQUFFO0FBVE4sT0FQRDtBQWtCWixrQkFBWTtBQUNWL0YsUUFBQUEsSUFBSSxFQUFFLEdBREk7QUFFVnlHLFFBQUFBLEtBQUssRUFBRSxHQUZHO0FBR1ZDLFFBQUFBLE1BQU0sRUFBRSxHQUhFO0FBSVZoQyxRQUFBQSxNQUFNLEVBQUUsS0FKRTtBQUtWaUMsUUFBQUEsT0FBTyxFQUFFLElBTEM7QUFNVjFHLFFBQUFBLFFBQVEsRUFBRSxVQU5BO0FBT1Y2RyxRQUFBQSxTQUFTLEVBQUUsV0FQRDtBQVFWRixRQUFBQSxVQUFVLEVBQUUsbUZBUkY7QUFTVmIsUUFBQUEsZUFBZSxFQUFFO0FBVFAsT0FsQkE7QUE2QlosaUJBQVc7QUFDVCxvQkFBWTtBQUNWZSxVQUFBQSxTQUFTLEVBQUUsV0FERDtBQUVWZixVQUFBQSxlQUFlLEVBQUVnQixjQUZQO0FBR1ZyQyxVQUFBQSxNQUFNLEVBQUU7QUFIRTtBQURILE9BN0JDO0FBb0NaLGlCQUFXO0FBQ1Qsb0JBQVk7QUFDVm9DLFVBQUFBLFNBQVMsRUFBRSxXQUREO0FBRVZmLFVBQUFBLGVBQWUsRUFBRVosS0FBSyxDQUFDNkIsT0FBTixDQUFjQyxNQUFkLENBQXFCQyxLQUY1QjtBQUdWeEMsVUFBQUEsTUFBTSxFQUFFO0FBSEU7QUFESDtBQXBDQyxLQS9GVztBQTJJekJ5QyxJQUFBQSxpQkFBaUIsRUFBRTtBQUNqQixtQkFBYTtBQUNYQyxRQUFBQSxPQUFPLEVBQUU7QUFERSxPQURJO0FBSWpCLGtCQUFZO0FBQ1ZBLFFBQUFBLE9BQU8sRUFBRTtBQURDO0FBSkssS0EzSU07QUFtSnpCQyxJQUFBQSxpQkFBaUIsRUFBRTtBQUNqQiw4QkFBd0I7QUFDdEJELFFBQUFBLE9BQU8sRUFBRTtBQURhLE9BRFA7QUFJakJFLE1BQUFBLGNBQWMsRUFBRSxNQUpDO0FBS2pCLDRCQUFzQjtBQUxMLEtBbkpNO0FBMEp6QkMsSUFBQUEsUUFBUSxFQUFFO0FBQ1IsbUJBQWE7QUFDWHRCLFFBQUFBLFVBQVUsRUFBRSxhQUREO0FBRVh1QixRQUFBQSxjQUFjLEVBQUUsU0FGTDtBQUdYQyxRQUFBQSxlQUFlLEVBQUUsb0VBSE47QUFJWEMsUUFBQUEsZ0JBQWdCLEVBQUUsVUFKUDtBQUtYQyxRQUFBQSxrQkFBa0IsRUFBRTtBQUxULE9BREw7QUFRUixrQkFBWTtBQUNWM0gsUUFBQUEsSUFBSSxFQUFFLEdBREk7QUFFVnlHLFFBQUFBLEtBQUssRUFBRSxHQUZHO0FBR1ZDLFFBQUFBLE1BQU0sRUFBRSxHQUhFO0FBSVZoQyxRQUFBQSxNQUFNLEVBQUUsS0FKRTtBQUtWaUMsUUFBQUEsT0FBTyxFQUFFLElBTEM7QUFNVjFHLFFBQUFBLFFBQVEsRUFBRSxVQU5BO0FBT1Y2RyxRQUFBQSxTQUFTLEVBQUUsV0FQRDtBQVFWRixRQUFBQSxVQUFVLEVBQUUsaUZBUkY7QUFTVmIsUUFBQUEsZUFBZSxFQUFFO0FBVFAsT0FSSjtBQW1CUixpQkFBVztBQUNULG9CQUFZO0FBQ1ZlLFVBQUFBLFNBQVMsRUFBRSxXQUREO0FBRVZmLFVBQUFBLGVBQWUsRUFBRVosS0FBSyxDQUFDNkIsT0FBTixDQUFjQyxNQUFkLENBQXFCQyxLQUY1QjtBQUdWeEMsVUFBQUEsTUFBTSxFQUFFO0FBSEU7QUFESDtBQW5CSCxLQTFKZTtBQXFMekJrRCxJQUFBQSxhQUFhLEVBQUU7QUFDYixrQkFBWTtBQUNWZCxRQUFBQSxTQUFTLEVBQUUsV0FERDtBQUVWZixRQUFBQSxlQUFlLEVBQUVnQixjQUZQO0FBR1ZyQyxRQUFBQSxNQUFNLEVBQUU7QUFIRSxPQURDO0FBTWIsaUJBQVc7QUFDVCxvQkFBWTtBQUNWcUIsVUFBQUEsZUFBZSxFQUFFZ0I7QUFEUDtBQURIO0FBTkUsS0FyTFU7QUFpTXpCYyxJQUFBQSxLQUFLLEVBQUU7QUFDTC9ELE1BQUFBLE1BQU0sc0JBQWVxQixLQUFLLENBQUM2QixPQUFOLENBQWNhLEtBQWQsQ0FBb0JDLElBQW5DO0FBREQsS0FqTWtCO0FBb016QkMsSUFBQUEsUUFBUSxFQUFFO0FBQ1JqRSxNQUFBQSxNQUFNLEVBQUU7QUFEQSxLQXBNZTtBQXVNekJrRSxJQUFBQSxTQUFTLEVBQUU7QUFDVDNDLE1BQUFBLE9BQU8sRUFBRTtBQURBLEtBdk1jO0FBME16QjRDLElBQUFBLFlBQVksRUFBRTtBQUNadEMsTUFBQUEsU0FBUyxFQUFFO0FBREM7QUExTVcsR0FBWjtBQUFBLENBQWY7O0FBK01BLElBQU11Qyx3QkFBd0IsR0FBRztBQUMvQkMsRUFBQUEsT0FBTyxFQUFFLEVBRHNCO0FBRS9CQyxFQUFBQSxlQUFlLEVBQUUsMkJBQU0sQ0FBRSxDQUZNO0FBRy9CQyxFQUFBQSxrQkFBa0IsRUFBRSw4QkFBTSxDQUFFO0FBSEcsQ0FBakM7O0FBTUEsSUFBTUMsV0FBVyxHQUFHLFNBQWRBLFdBQWMsQ0FBQ0MsQ0FBRCxFQUFPO0FBQ3pCLE1BQUksQ0FBQ0EsQ0FBTCxFQUFRO0FBQ047QUFDRDs7QUFDRCxNQUFNQyxTQUFTLEdBQUcsZ0JBQWxCOztBQUVBLE1BQUksT0FBT0QsQ0FBUCxLQUFhLFFBQWpCLEVBQTJCO0FBQ3pCLFFBQUlBLENBQUMsQ0FBQ0UsUUFBRixDQUFXLEdBQVgsQ0FBSixFQUFxQjtBQUNuQixhQUFPQyxTQUFQO0FBQ0QsS0FGRCxNQUVPLElBQ0xILENBQUMsQ0FBQ0UsUUFBRixDQUFXLElBQVgsS0FDQUYsQ0FBQyxDQUFDRSxRQUFGLENBQVcsSUFBWCxDQURBLElBRUFGLENBQUMsQ0FBQ0UsUUFBRixDQUFXLElBQVgsQ0FGQSxJQUdBRixDQUFDLENBQUNFLFFBQUYsQ0FBVyxJQUFYLENBSEEsSUFJQUYsQ0FBQyxDQUFDRSxRQUFGLENBQVcsSUFBWCxDQUpBLElBS0FGLENBQUMsQ0FBQ0ksS0FBRixDQUFRSCxTQUFSLENBTkssRUFPTDtBQUNBLGFBQU9ELENBQVA7QUFDRCxLQVRNLE1BU0E7QUFDTCxVQUFNSyxLQUFLLEdBQUdDLFFBQVEsQ0FBQ04sQ0FBRCxFQUFJLEVBQUosQ0FBdEI7QUFDQSxhQUFPTyxLQUFLLENBQUNGLEtBQUQsQ0FBTCxHQUFlQSxLQUFmLGFBQTBCQSxLQUExQixPQUFQO0FBQ0Q7QUFDRjs7QUFDRCxNQUFJLE9BQU9MLENBQVAsS0FBYSxRQUFqQixFQUEyQjtBQUN6QixxQkFBVUEsQ0FBVjtBQUNEO0FBQ0YsQ0ExQkQ7O0FBNEJBLFNBQVNRLGVBQVQsQ0FBeUJoRSxLQUF6QixFQUFnQztBQUFBOztBQUM5QixNQUNFdEYsTUFERixHQWdCSXNGLEtBaEJKLENBQ0V0RixNQURGO0FBQUEsTUFFRXVKLFdBRkYsR0FnQklqRSxLQWhCSixDQUVFaUUsV0FGRjtBQUFBLE1BR0VDLE9BSEYsR0FnQklsRSxLQWhCSixDQUdFa0UsT0FIRjtBQUFBLE1BSUUzQyxRQUpGLEdBZ0JJdkIsS0FoQkosQ0FJRXVCLFFBSkY7QUFBQSxNQUtFNEMsZ0JBTEYsR0FnQkluRSxLQWhCSixDQUtFbUUsZ0JBTEY7QUFBQSxNQU1FQyxnQkFORixHQWdCSXBFLEtBaEJKLENBTUVvRSxnQkFORjtBQUFBLE1BT0VDLFdBUEYsR0FnQklyRSxLQWhCSixDQU9FcUUsV0FQRjtBQUFBLE1BUUVDLGlCQVJGLEdBZ0JJdEUsS0FoQkosQ0FRRXNFLGlCQVJGO0FBQUEsTUFTRUMsU0FURixHQWdCSXZFLEtBaEJKLENBU0V1RSxTQVRGO0FBQUEsTUFVRUMsUUFWRixHQWdCSXhFLEtBaEJKLENBVUV3RSxRQVZGO0FBQUEsTUFXRTlFLEtBWEYsR0FnQklNLEtBaEJKLENBV0VOLEtBWEY7QUFBQSxNQVlFeEIsUUFaRixHQWdCSThCLEtBaEJKLENBWUU5QixRQVpGO0FBQUEsTUFhRXVHLFNBYkYsR0FnQkl6RSxLQWhCSixDQWFFeUUsU0FiRjtBQUFBLE1BY0U5RSxNQWRGLEdBZ0JJSyxLQWhCSixDQWNFTCxNQWRGO0FBQUEsTUFlRWdCLFNBZkYsR0FnQklYLEtBaEJKLENBZUVXLFNBZkY7QUFpQkEsTUFBTStELFdBQVcsR0FBRyw0QkFBV1IsT0FBTyxDQUFDMUMsWUFBbkIsbUVBQ2pCMEMsT0FBTyxDQUFDckIsYUFEUyxFQUNPb0IsV0FBVyxDQUFDVSxTQURuQixpREFFakJULE9BQU8sQ0FBQzFCLFFBRlMsRUFFRXlCLFdBQVcsQ0FBQ3pCLFFBRmQsaURBR2pCMEIsT0FBTyxDQUFDOUIsaUJBSFMsRUFHVytCLGdCQUhYLGlEQUlqQkQsT0FBTyxDQUFDNUIsaUJBSlMsRUFJVzhCLGdCQUpYLGdCQUFwQjtBQU9BLHdCQUFVLFlBQU07QUFDZCxRQUFJMUosTUFBTSxJQUFJNkosU0FBZCxFQUF5QjtBQUN2QkssTUFBQUEsT0FBTyxDQUFDQyxPQUFSLEdBQWtCQyxJQUFsQixDQUF1QixZQUFNO0FBQzNCcEssUUFBQUEsTUFBTSxDQUFDcUssUUFBUCxDQUFnQmxILEtBQWhCLENBQXNCLEtBQXRCO0FBQ0QsT0FGRDtBQUdEO0FBQ0YsR0FORCxFQU1HLENBQUNuRCxNQUFELEVBQVM2SixTQUFULENBTkg7QUFRQSxNQUFNUyxTQUFTLEdBQUcsb0JBQVEsWUFBTTtBQUM5QixXQUFPO0FBQ0x0RixNQUFBQSxLQUFLLEVBQUU2RCxXQUFXLENBQUM3RCxLQUFELENBRGI7QUFFTDhFLE1BQUFBLFFBQVEsRUFBRWpCLFdBQVcsQ0FBQ2lCLFFBQUQsQ0FGaEI7QUFHTHRHLE1BQUFBLFFBQVEsRUFBRXFGLFdBQVcsQ0FBQ3JGLFFBQUQsQ0FIaEI7QUFJTHlCLE1BQUFBLE1BQU0sRUFBRTRELFdBQVcsQ0FBQzVELE1BQUQsQ0FKZDtBQUtMOEUsTUFBQUEsU0FBUyxFQUFFbEIsV0FBVyxDQUFDa0IsU0FBRCxDQUxqQjtBQU1MOUQsTUFBQUEsU0FBUyxFQUFFNEMsV0FBVyxDQUFDNUMsU0FBRDtBQU5qQixLQUFQO0FBUUQsR0FUaUIsRUFTZixDQUFDNkQsUUFBRCxFQUFXOUUsS0FBWCxFQUFrQnhCLFFBQWxCLEVBQTRCdUcsU0FBNUIsRUFBdUM5RSxNQUF2QyxFQUErQ2dCLFNBQS9DLENBVGUsQ0FBbEI7QUFXQSxzQkFDRTtBQUNFLElBQUEsU0FBUyxFQUFFLCtGQUVOdUQsT0FBTyxDQUFDbEIsUUFGRixFQUVhcUIsV0FBVyxJQUFJQSxXQUFXLENBQUNyQixRQUZ4QyxrREFHTmtCLE9BQU8sQ0FBQ3BCLEtBSEYsRUFHVXVCLFdBQVcsSUFBSUEsV0FBVyxDQUFDdkIsS0FIckMsa0JBS1RvQixPQUFPLENBQUM3RCxJQUxDLEVBTVRMLEtBQUssQ0FBQ2lGLFNBTkcsQ0FEYjtBQVNFLElBQUEsS0FBSyxFQUFFO0FBQUV2RixNQUFBQSxLQUFLLEVBQUVzRixTQUFTLENBQUN0RixLQUFuQjtBQUEwQjhFLE1BQUFBLFFBQVEsRUFBRVEsU0FBUyxDQUFDUixRQUE5QztBQUF3RHRHLE1BQUFBLFFBQVEsRUFBRThHLFNBQVMsQ0FBQzlHO0FBQTVFO0FBVFQsa0JBV0U7QUFBSyxJQUFBLFNBQVMsRUFBRXdHO0FBQWhCLGtCQUNFO0FBQ0UsSUFBQSxTQUFTLEVBQUUsaUVBRU5SLE9BQU8sQ0FBQ2pCLFNBRkYsRUFFY29CLFdBQVcsSUFBSUEsV0FBVyxDQUFDcEIsU0FGekMsR0FJVGlCLE9BQU8sQ0FBQzNDLFFBSkM7QUFEYixLQVFHQSxRQVJILENBREYsQ0FYRixFQTBCRzdHLE1BQU0saUJBQ0wsZ0NBQUMsYUFBRDtBQUNFLElBQUEsTUFBTSxFQUFFQSxNQURWO0FBRUUsSUFBQSxpQkFBaUIsRUFBRTRKLGlCQUZyQjtBQUdFLElBQUEsV0FBVyxFQUFFRCxXQUhmO0FBSUUsSUFBQSxRQUFRLEVBQUVyRSxLQUFLLENBQUNrRjtBQUpsQixJQTNCSixDQURGO0FBcUNEOztBQUVELElBQU1DLGVBQWUsR0FBRyx3QkFBV2hGLE1BQVgsRUFBbUI2RCxlQUFuQixDQUF4Qjs7QUFFQSxTQUFTb0IsT0FBVCxRQUEwRjtBQUFBOztBQUFBLE1BQXZFMUssTUFBdUUsU0FBdkVBLE1BQXVFO0FBQUEsTUFBL0R3SixPQUErRCxTQUEvREEsT0FBK0Q7QUFBQSxNQUF6Q21CLFFBQXlDLFNBQXREaEIsV0FBc0Q7QUFBQSxNQUEvQkMsaUJBQStCLFNBQS9CQSxpQkFBK0I7QUFBQSxNQUFaWSxRQUFZLFNBQVpBLFFBQVk7O0FBQ3hGLG1CQUFvQyxxQkFBUyxLQUFULENBQXBDO0FBQUE7QUFBQSxNQUFPSSxVQUFQO0FBQUEsTUFBbUJDLGFBQW5COztBQUNBLE1BQU1sQixXQUFXLEdBQUdnQixRQUFILGFBQUdBLFFBQUgsY0FBR0EsUUFBSCxHQUFlLEVBQWhDLENBRndGLENBR3hGOztBQUNBLE1BQU1wQixXQUFXLEdBQUcsNEJBQWU7QUFDakN2SixJQUFBQSxNQUFNLEVBQU5BLE1BRGlDO0FBRWpDOEssSUFBQUEsUUFBUSxFQUFFLGtCQUFDQyxHQUFELEVBQVM7QUFBQTs7QUFDakIsa0JBQXNCLGdCQUFBQSxHQUFHLENBQUMvSyxNQUFKLDREQUFZNEIsS0FBWixLQUFxQixFQUEzQztBQUFBLFVBQVFDLFNBQVIsU0FBUUEsU0FBUjs7QUFFQSxVQUFJbUosV0FBSjs7QUFFQSxVQUFJbkosU0FBUyxZQUFZb0osK0JBQXpCLEVBQXdDO0FBQ3RDRCxRQUFBQSxXQUFXLEdBQUduSixTQUFTLENBQUNxSixJQUF4QixDQURzQyxDQUNSO0FBQy9COztBQUVELFVBQU1DLG1CQUFtQixHQUN2QixpQkFBQUosR0FBRyxDQUFDL0ssTUFBSiw4REFBWW9MLFFBQVosQ0FBcUIsTUFBckIsdUJBQ0FMLEdBQUcsQ0FBQy9LLE1BREosaURBQ0EsYUFBWW9MLFFBQVosQ0FBcUIsK0JBQXJCLENBREEsc0JBRUFMLEdBQUcsQ0FBQy9LLE1BRkosaURBRUEsYUFBWW9MLFFBQVosQ0FBcUIsaUJBQXJCLENBRkEsQ0FERjtBQUtBLGFBQU87QUFDTEosUUFBQUEsV0FBVyxFQUFYQSxXQURLO0FBRUxHLFFBQUFBLG1CQUFtQixFQUFuQkEsbUJBRks7QUFHTGxCLFFBQUFBLFNBQVMsa0JBQUVjLEdBQUcsQ0FBQy9LLE1BQU4saURBQUUsYUFBWWlLLFNBSGxCO0FBSUxvQixRQUFBQSxNQUFNLDBCQUFFTixHQUFHLENBQUMvSyxNQUFKLENBQVdvTCxRQUFYLENBQW9CLE1BQXBCLENBQUYsdUVBQWlDLEtBSmxDO0FBS0xFLFFBQUFBLE9BQU8sMkJBQ0xQLEdBQUcsQ0FBQy9LLE1BQUosQ0FDR3VMLEdBREgsR0FFR3JJLEtBRkgsR0FHR3NJLFVBSEgsR0FJR25JLEdBSkgsRUFESyx5RUFLTyxLQVZUO0FBV0xvSSxRQUFBQSxPQUFPLDJCQUFFVixHQUFHLENBQUMvSyxNQUFKLENBQVdvTCxRQUFYLENBQW9CLE9BQXBCLENBQUYseUVBQWtDLEtBWHBDO0FBWUxNLFFBQUFBLFFBQVEsNEJBQ05YLEdBQUcsQ0FBQy9LLE1BQUosQ0FDR3VMLEdBREgsR0FFR3JJLEtBRkgsR0FHR3lJLFdBSEgsR0FJR3RJLEdBSkgsRUFETSwyRUFLTSxLQWpCVDtBQWtCTHVJLFFBQUFBLFFBQVEsMkJBQUViLEdBQUcsQ0FBQy9LLE1BQUosQ0FBV29MLFFBQVgsQ0FBb0IsUUFBcEIsQ0FBRix5RUFBbUMsS0FsQnRDO0FBbUJMUyxRQUFBQSxTQUFTLDRCQUNQZCxHQUFHLENBQUMvSyxNQUFKLENBQ0d1TCxHQURILEdBRUdySSxLQUZILEdBR0c0SSxZQUhILEdBSUd6SSxHQUpILEVBRE8sMkVBS0ssS0F4QlQ7QUF5QkwwSSxRQUFBQSxRQUFRLDJCQUFFaEIsR0FBRyxDQUFDL0ssTUFBSixDQUFXb0wsUUFBWCxDQUFvQixRQUFwQixDQUFGLHlFQUFtQyxLQXpCdEM7QUEwQkxZLFFBQUFBLFNBQVMsNEJBQ1BqQixHQUFHLENBQUMvSyxNQUFKLENBQ0d1TCxHQURILEdBRUdySSxLQUZILEdBR0crSSxZQUhILEdBSUc1SSxHQUpILEVBRE8sMkVBS0ssS0EvQlQ7QUFnQ0w2SSxRQUFBQSxNQUFNLDJCQUFFbkIsR0FBRyxDQUFDL0ssTUFBSixDQUFXb0wsUUFBWCxDQUFvQixNQUFwQixDQUFGLHlFQUFpQyxLQWhDbEM7QUFpQ0xlLFFBQUFBLE9BQU8sNEJBQ0xwQixHQUFHLENBQUMvSyxNQUFKLENBQ0d1TCxHQURILEdBRUdySSxLQUZILEdBR0drSixVQUhILEdBSUcvSSxHQUpILEVBREssMkVBS08sS0F0Q1Q7QUF1Q0xnSixRQUFBQSxhQUFhLDRCQUNYdEIsR0FBRyxDQUFDL0ssTUFBSixDQUNHdUwsR0FESCxHQUVHckksS0FGSCxHQUdHb0osYUFISCxHQUlHakosR0FKSCxFQURXLDJFQUtDLEtBNUNUO0FBNkNMa0osUUFBQUEsV0FBVywyQkFBRXhCLEdBQUcsQ0FBQy9LLE1BQUosQ0FBV29MLFFBQVgsQ0FBb0IsV0FBcEIsQ0FBRix5RUFBc0MsS0E3QzVDO0FBOENMb0IsUUFBQUEsV0FBVywyQkFBRXpCLEdBQUcsQ0FBQy9LLE1BQUosQ0FBV29MLFFBQVgsQ0FBb0IsV0FBcEIsQ0FBRix5RUFBc0MsS0E5QzVDO0FBK0NMcUIsUUFBQUEsYUFBYSwyQkFBRTFCLEdBQUcsQ0FBQy9LLE1BQUosQ0FBV29MLFFBQVgsQ0FBb0IsYUFBcEIsQ0FBRix5RUFBd0MsS0EvQ2hEO0FBZ0RMc0IsUUFBQUEsV0FBVywyQkFBRTNCLEdBQUcsQ0FBQy9LLE1BQUosQ0FBV29MLFFBQVgsQ0FBb0IsV0FBcEIsQ0FBRix5RUFBc0MsS0FoRDVDO0FBaURMdUIsUUFBQUEsVUFBVSw0QkFBRTVCLEdBQUcsQ0FBQy9LLE1BQUosQ0FBV29MLFFBQVgsQ0FBb0IsU0FBcEIsRUFBK0I7QUFBRXdCLFVBQUFBLEtBQUssRUFBRTtBQUFULFNBQS9CLENBQUYsMkVBQWtELEtBakR2RDtBQWtETEMsUUFBQUEsVUFBVSw0QkFBRTlCLEdBQUcsQ0FBQy9LLE1BQUosQ0FBV29MLFFBQVgsQ0FBb0IsU0FBcEIsRUFBK0I7QUFBRXdCLFVBQUFBLEtBQUssRUFBRTtBQUFULFNBQS9CLENBQUYsMkVBQWtELEtBbER2RDtBQW1ETEUsUUFBQUEsVUFBVSw0QkFBRS9CLEdBQUcsQ0FBQy9LLE1BQUosQ0FBV29MLFFBQVgsQ0FBb0IsU0FBcEIsRUFBK0I7QUFBRXdCLFVBQUFBLEtBQUssRUFBRTtBQUFULFNBQS9CLENBQUYsMkVBQWtELEtBbkR2RDtBQW9ETEcsUUFBQUEsVUFBVSw0QkFBRWhDLEdBQUcsQ0FBQy9LLE1BQUosQ0FBV29MLFFBQVgsQ0FBb0IsU0FBcEIsRUFBK0I7QUFBRXdCLFVBQUFBLEtBQUssRUFBRTtBQUFULFNBQS9CLENBQUYsMkVBQWtELEtBcER2RDtBQXFETEksUUFBQUEsVUFBVSw0QkFBRWpDLEdBQUcsQ0FBQy9LLE1BQUosQ0FBV29MLFFBQVgsQ0FBb0IsU0FBcEIsRUFBK0I7QUFBRXdCLFVBQUFBLEtBQUssRUFBRTtBQUFULFNBQS9CLENBQUYsMkVBQWtELEtBckR2RDtBQXNETEssUUFBQUEsVUFBVSw0QkFBRWxDLEdBQUcsQ0FBQy9LLE1BQUosQ0FBV29MLFFBQVgsQ0FBb0IsU0FBcEIsRUFBK0I7QUFBRXdCLFVBQUFBLEtBQUssRUFBRTtBQUFULFNBQS9CLENBQUYsMkVBQWtELEtBdER2RDtBQXVETE0sUUFBQUEsWUFBWSw0QkFBRW5DLEdBQUcsQ0FBQy9LLE1BQUosQ0FBV29MLFFBQVgsQ0FBb0IsWUFBcEIsQ0FBRiwyRUFBdUMsS0F2RDlDO0FBd0RMK0IsUUFBQUEsYUFBYSw0QkFBRXBDLEdBQUcsQ0FBQy9LLE1BQUosQ0FBV29MLFFBQVgsQ0FBb0IsYUFBcEIsQ0FBRiwyRUFBd0MsS0F4RGhEO0FBeURMZ0MsUUFBQUEsV0FBVyw0QkFBRXJDLEdBQUcsQ0FBQy9LLE1BQUosQ0FBV29MLFFBQVgsQ0FBb0IsV0FBcEIsQ0FBRiwyRUFBc0MsS0F6RDVDO0FBMERMaUMsUUFBQUEsWUFBWSw0QkFBRXRDLEdBQUcsQ0FBQy9LLE1BQUosQ0FBV29MLFFBQVgsQ0FBb0IsWUFBcEIsQ0FBRiwyRUFBdUMsS0ExRDlDO0FBMkRMa0MsUUFBQUEsT0FBTyw0QkFDTHZDLEdBQUcsQ0FBQy9LLE1BQUosQ0FDR3VMLEdBREgsR0FFR3JJLEtBRkgsR0FHR3FLLElBSEgsR0FJR2xLLEdBSkgsRUFESywyRUFLTyxLQWhFVDtBQWlFTG1LLFFBQUFBLE9BQU8sNEJBQ0x6QyxHQUFHLENBQUMvSyxNQUFKLENBQ0d1TCxHQURILEdBRUdySSxLQUZILEdBR0d1SyxJQUhILEdBSUdwSyxHQUpILEVBREssMkVBS087QUF0RVQsT0FBUDtBQXdFRDtBQXhGZ0MsR0FBZixDQUFwQjtBQTBGQSxNQUFNcUssYUFBYSxHQUFHLEtBQXRCO0FBQ0EsTUFBTUMsU0FBUyxHQUFHLEtBQWxCO0FBRUEsTUFBTUMsS0FBSyxHQUFHLDRCQUFXcEUsT0FBTyxDQUFDcUUsT0FBbkIsRUFBNEJDLDZCQUE1QixxRUFDWHRFLE9BQU8sQ0FBQ3VFLGlCQURHLEVBQ2lCLENBQUNMLGFBRGxCLGtEQUVYbEUsT0FBTyxDQUFDd0UsVUFGRyxFQUVVckUsV0FBVyxDQUFDbkosUUFBWixLQUF5QixLQUZuQyxrREFHWGdKLE9BQU8sQ0FBQ3lFLFlBSEcsRUFHWXRFLFdBQVcsQ0FBQ3VFLFNBQVosS0FBMEIsT0FIdEMsa0RBSVgxRSxPQUFPLENBQUMyRSxPQUpHLEVBSU94RSxXQUFXLENBQUN5RSxhQUFaLElBQThCN0UsV0FBVyxDQUFDVSxTQUFaLElBQXlCLENBQUNqSyxNQUFNLENBQUNxTyxjQUp0RSxrREFLWDdFLE9BQU8sQ0FBQ21FLFNBTEcsRUFLU0EsU0FMVCxrREFNWG5FLE9BQU8sQ0FBQzhFLFNBTkcsRUFNUyxDQUFDWCxTQU5WLGtEQU9YbkUsT0FBTyxDQUFDK0UsTUFQRyxFQU9NNUUsV0FBVyxDQUFDNkUsUUFBWixLQUF5QixJQVAvQixpQkFBZDtBQVNBLE1BQU1DLFlBQVksR0FBRzlFLFdBQVcsQ0FBQ0csUUFBWixLQUF5QmIsU0FBekIsR0FBcUM7QUFBRWEsSUFBQUEsUUFBUSxFQUFFSCxXQUFXLENBQUNHO0FBQXhCLEdBQXJDLEdBQTBFLEVBQS9GOztBQUNBLE1BQU00RSxlQUFlLEdBQUcsU0FBbEJBLGVBQWtCLENBQUN0TSxDQUFELEVBQU87QUFDN0JBLElBQUFBLENBQUMsQ0FBQ3VNLGNBQUY7QUFDRCxHQUZEOztBQUlBLHNCQUNFO0FBQUssSUFBQSxTQUFTLEVBQUVmLEtBQWhCO0FBQXVCLElBQUEsS0FBSyxvQkFBT2EsWUFBUCxDQUE1QjtBQUFtRCxJQUFBLFdBQVcsRUFBRUM7QUFBaEUsS0FDRyxDQUFDbkYsV0FBVyxDQUFDNEIsbUJBQWIsaUJBQ0M7QUFBSyxJQUFBLFNBQVMsRUFBRTNCLE9BQU8sQ0FBQ29GLGNBQXhCO0FBQXdDLElBQUEsUUFBUSxFQUFDO0FBQWpELGtCQUNFO0FBQUssSUFBQSxTQUFTLEVBQUVwRixPQUFPLENBQUNxRjtBQUF4QixrQkFDRTtBQUNFLElBQUEsT0FBTyxFQUFFLGlCQUFDek0sQ0FBRCxFQUFPO0FBQ2RBLE1BQUFBLENBQUMsQ0FBQ3VNLGNBQUY7QUFDQTNPLE1BQUFBLE1BQU0sQ0FDSGtELEtBREgsR0FFR0MsS0FGSCxHQUdHd0ksV0FISCxHQUlHdEksR0FKSDtBQUtELEtBUkg7QUFTRSxJQUFBLFFBQVEsRUFBRSxDQUFDa0csV0FBVyxDQUFDbUMsUUFUekI7QUFVRSxJQUFBLFNBQVMsRUFBRSw0QkFBV2xDLE9BQU8sQ0FBQ3NGLE1BQW5CLHVDQUE4QnRGLE9BQU8sQ0FBQ3VGLE1BQXRDLEVBQStDeEYsV0FBVyxDQUFDa0MsT0FBM0Q7QUFWYixrQkFZRSxnQ0FBQyxrQkFBRCxPQVpGLENBREYsZUFlRTtBQUNFLElBQUEsT0FBTyxFQUFFLGlCQUFDckosQ0FBRCxFQUFPO0FBQ2RBLE1BQUFBLENBQUMsQ0FBQ3VNLGNBQUY7QUFDQTNPLE1BQUFBLE1BQU0sQ0FDSGtELEtBREgsR0FFR0MsS0FGSCxHQUdHcUksVUFISCxHQUlHbkksR0FKSDtBQUtELEtBUkg7QUFTRSxJQUFBLFFBQVEsRUFBRSxDQUFDa0csV0FBVyxDQUFDK0IsT0FUekI7QUFVRSxJQUFBLFNBQVMsRUFBRSw0QkFBVzlCLE9BQU8sQ0FBQ3NGLE1BQW5CLHVDQUE4QnRGLE9BQU8sQ0FBQ3VGLE1BQXRDLEVBQStDeEYsV0FBVyxDQUFDOEIsTUFBM0Q7QUFWYixrQkFZRSxnQ0FBQyxzQkFBRCxPQVpGLENBZkYsZUE2QkU7QUFDRSxJQUFBLE9BQU8sRUFBRTtBQUFBLGFBQ1ByTCxNQUFNLENBQ0hrRCxLQURILEdBRUdDLEtBRkgsR0FHRzJJLFlBSEgsR0FJR3pJLEdBSkgsRUFETztBQUFBLEtBRFg7QUFRRSxJQUFBLFFBQVEsRUFBRSxDQUFDa0csV0FBVyxDQUFDc0MsU0FSekI7QUFTRSxJQUFBLE1BQU0sRUFBRXRDLFdBQVcsQ0FBQ3FDLFFBVHRCO0FBVUUsSUFBQSxTQUFTLEVBQUUsNEJBQVdwQyxPQUFPLENBQUNzRixNQUFuQix1Q0FBOEJ0RixPQUFPLENBQUN1RixNQUF0QyxFQUErQ3hGLFdBQVcsQ0FBQ3FDLFFBQTNEO0FBVmIsa0JBWUUsZ0NBQUMsd0JBQUQsT0FaRixDQTdCRixlQTJDRTtBQUNFLElBQUEsT0FBTyxFQUFFO0FBQUEsYUFDUDVMLE1BQU0sQ0FDSGtELEtBREgsR0FFR0MsS0FGSCxHQUdHOEksWUFISCxHQUlHNUksR0FKSCxFQURPO0FBQUEsS0FEWDtBQVFFLElBQUEsUUFBUSxFQUFFLENBQUNrRyxXQUFXLENBQUN5QyxTQVJ6QjtBQVNFLElBQUEsTUFBTSxFQUFFekMsV0FBVyxDQUFDd0MsUUFUdEI7QUFVRSxJQUFBLFNBQVMsRUFBRSw0QkFBV3ZDLE9BQU8sQ0FBQ3NGLE1BQW5CLHVDQUE4QnRGLE9BQU8sQ0FBQ3VGLE1BQXRDLEVBQStDeEYsV0FBVyxDQUFDd0MsUUFBM0Q7QUFWYixrQkFZRSxnQ0FBQywrQkFBRCxPQVpGLENBM0NGLGVBeURFO0FBQ0UsSUFBQSxPQUFPLEVBQUU7QUFBQSxhQUNQL0wsTUFBTSxDQUNIa0QsS0FESCxHQUVHQyxLQUZILEdBR0dpSixVQUhILEdBSUcvSSxHQUpILEVBRE87QUFBQSxLQURYO0FBUUUsSUFBQSxRQUFRLEVBQUUsQ0FBQ2tHLFdBQVcsQ0FBQzRDLE9BUnpCO0FBU0UsSUFBQSxNQUFNLEVBQUU1QyxXQUFXLENBQUMyQyxNQVR0QjtBQVVFLElBQUEsU0FBUyxFQUFFLDRCQUFXMUMsT0FBTyxDQUFDc0YsTUFBbkIsdUNBQThCdEYsT0FBTyxDQUFDdUYsTUFBdEMsRUFBK0N4RixXQUFXLENBQUMyQyxNQUEzRDtBQVZiLGtCQVlFLGdDQUFDLGdCQUFELE9BWkYsQ0F6REYsZUFpSUU7QUFDRSxJQUFBLE9BQU8sRUFBRTtBQUFBLGFBQ1BsTSxNQUFNLENBQ0hrRCxLQURILEdBRUdDLEtBRkgsR0FHRzZMLGVBSEgsR0FJRzNMLEdBSkgsRUFETztBQUFBLEtBRFg7QUFRRSxJQUFBLFNBQVMsRUFBRSw0QkFBV21HLE9BQU8sQ0FBQ3NGLE1BQW5CLHVDQUE4QnRGLE9BQU8sQ0FBQ3VGLE1BQXRDLEVBQStDeEYsV0FBVyxDQUFDZ0QsV0FBM0Q7QUFSYixrQkFVRSxnQ0FBQyw0QkFBRCxPQVZGLENBaklGLGVBNklFO0FBQ0UsSUFBQSxPQUFPLEVBQUU7QUFBQSxhQUNQdk0sTUFBTSxDQUNIa0QsS0FESCxHQUVHQyxLQUZILEdBR0c4TCxlQUhILEdBSUc1TCxHQUpILEVBRE87QUFBQSxLQURYO0FBUUUsSUFBQSxTQUFTLEVBQUUsNEJBQVdtRyxPQUFPLENBQUNzRixNQUFuQix1Q0FBOEJ0RixPQUFPLENBQUN1RixNQUF0QyxFQUErQ3hGLFdBQVcsQ0FBQ2lELFdBQTNEO0FBUmIsa0JBVUUsZ0NBQUMsYUFBRCxPQVZGLENBN0lGLGVBeUpFO0FBQ0UsSUFBQSxPQUFPLEVBQUU7QUFBQSxhQUNQeE0sTUFBTSxDQUNIa0QsS0FESCxHQUVHQyxLQUZILEdBR0crTCxpQkFISCxHQUlHN0wsR0FKSCxFQURPO0FBQUEsS0FEWDtBQVFFLElBQUEsU0FBUyxFQUFFLDRCQUFXbUcsT0FBTyxDQUFDc0YsTUFBbkIsdUNBQThCdEYsT0FBTyxDQUFDdUYsTUFBdEMsRUFBK0N4RixXQUFXLENBQUNrRCxhQUEzRDtBQVJiLGtCQVVFLGdDQUFDLGVBQUQsT0FWRixDQXpKRixlQXFLRTtBQUNFLElBQUEsT0FBTyxFQUFFO0FBQUEsYUFDUHpNLE1BQU0sQ0FDSGtELEtBREgsR0FFR0MsS0FGSCxHQUdHZ00sa0JBSEgsR0FJRzlMLEdBSkgsRUFETztBQUFBLEtBRFg7QUFRRSxJQUFBLFNBQVMsRUFBRSw0QkFBV21HLE9BQU8sQ0FBQ3NGLE1BQW5CLHVDQUE4QnRGLE9BQU8sQ0FBQ3VGLE1BQXRDLEVBQStDeEYsV0FBVyxDQUFDa0QsYUFBM0Q7QUFSYixrQkFVRSxnQ0FBQyxpQkFBRCxPQVZGLENBcktGLGVBaUxFO0FBQ0UsSUFBQSxPQUFPLEVBQUU7QUFBQSxhQUNQek0sTUFBTSxDQUNIa0QsS0FESCxHQUVHQyxLQUZILEdBR0dpTSxXQUhILENBR2U7QUFDWEMsUUFBQUEsR0FBRyxFQUFFO0FBRE0sT0FIZixFQU1HaE0sR0FOSCxFQURPO0FBQUEsS0FEWDtBQVVFLElBQUEsU0FBUyxFQUFFLDRCQUFXbUcsT0FBTyxDQUFDc0YsTUFBbkI7QUFWYixrQkFZRSxnQ0FBQyxvQkFBRCxPQVpGLENBakxGLGVBK0xFO0FBQ0UsSUFBQSxPQUFPLEVBQUU7QUFBQSxhQUNQOU8sTUFBTSxDQUNIa0QsS0FESCxHQUVHQyxLQUZILEdBR0dpTSxXQUhILENBR2U7QUFDWEMsUUFBQUEsR0FBRyxFQUFFO0FBRE0sT0FIZixFQU1HaE0sR0FOSCxFQURPO0FBQUEsS0FEWDtBQVVFLElBQUEsU0FBUyxFQUFFLDRCQUFXbUcsT0FBTyxDQUFDc0YsTUFBbkI7QUFWYixrQkFZRSxnQ0FBQyxvQkFBRCxPQVpGLENBL0xGLGVBNk1FO0FBQ0UsSUFBQSxPQUFPLEVBQUU7QUFBQSxhQUNQOU8sTUFBTSxDQUFDcUssUUFBUCxDQUFnQmlGLGtCQUFoQixFQURPO0FBQUEsS0FEWDtBQUlFLElBQUEsU0FBUyxFQUFFLDRCQUFXOUYsT0FBTyxDQUFDc0YsTUFBbkI7QUFKYixrQkFNRSxnQ0FBQyxrQkFBRCxPQU5GLENBN01GLGVBcU5FO0FBQ0UsSUFBQSxPQUFPLEVBQUU7QUFBQSxhQUNQOU8sTUFBTSxDQUNIa0QsS0FESCxHQUVHQyxLQUZILEdBR0dvTSxhQUhILENBR2lCO0FBQUUzQyxRQUFBQSxLQUFLLEVBQUU7QUFBVCxPQUhqQixFQUlHdkosR0FKSCxFQURPO0FBQUEsS0FEWDtBQVFFLElBQUEsU0FBUyxFQUFFLDRCQUFXbUcsT0FBTyxDQUFDc0YsTUFBbkIsdUNBQThCdEYsT0FBTyxDQUFDdUYsTUFBdEMsRUFBK0N4RixXQUFXLENBQUN1RCxVQUEzRDtBQVJiLGtCQVVFLGdDQUFDLFdBQUQsT0FWRixDQXJORixlQWlSRTtBQUNFLElBQUEsT0FBTyxFQUFFO0FBQUEsYUFDUDlNLE1BQU0sQ0FDSGtELEtBREgsR0FFR0MsS0FGSCxHQUdHcU0sVUFISCxDQUdjLEVBSGQsRUFJR25NLEdBSkgsRUFETztBQUFBLEtBRFg7QUFRRSxJQUFBLFNBQVMsRUFBRW1HLE9BQU8sQ0FBQ3NGO0FBUnJCLGtCQVVFLGdDQUFDLHFCQUFELE9BVkYsQ0FqUkYsZUE2UkU7QUFBUSxJQUFBLE9BQU8sRUFBRTtBQUFBLGFBQU1qRSxhQUFhLENBQUMvSixvQkFBRCxDQUFuQjtBQUFBLEtBQWpCO0FBQXFELElBQUEsU0FBUyxFQUFFMEksT0FBTyxDQUFDc0Y7QUFBeEUsa0JBQ0UsZ0NBQUMsYUFBRDtBQUFlLElBQUEsTUFBTSxFQUFDO0FBQXRCLElBREYsQ0E3UkYsZUFnU0U7QUFBUSxJQUFBLE9BQU8sRUFBRTtBQUFBLGFBQU1qRSxhQUFhLENBQUM5SixvQkFBRCxDQUFuQjtBQUFBLEtBQWpCO0FBQXFELElBQUEsU0FBUyxFQUFFeUksT0FBTyxDQUFDc0Y7QUFBeEUsa0JBQ0UsZ0NBQUMsYUFBRDtBQUFlLElBQUEsTUFBTSxFQUFDO0FBQXRCLElBREYsQ0FoU0YsZUFtU0U7QUFBUSxJQUFBLE9BQU8sRUFBRSxtQkFBTSxDQUFFLENBQXpCO0FBQTJCLElBQUEsU0FBUyxFQUFFdEYsT0FBTyxDQUFDc0Y7QUFBOUMsa0JBQ0UsZ0NBQUMsa0JBQUQ7QUFBZSxJQUFBLE1BQU0sRUFBRTlPO0FBQXZCLElBREYsQ0FuU0YsZUFzU0U7QUFDRSxJQUFBLE9BQU8sRUFBRTtBQUFBLGFBQ1BBLE1BQU0sQ0FDSGtELEtBREgsR0FFR0MsS0FGSCxHQUdHc00sZ0JBSEgsR0FJR3BNLEdBSkgsRUFETztBQUFBLEtBRFg7QUFRRSxJQUFBLFNBQVMsRUFBRSw0QkFBV21HLE9BQU8sQ0FBQ3NGLE1BQW5CLHVDQUE4QnRGLE9BQU8sQ0FBQ3VGLE1BQXRDLEVBQStDeEYsV0FBVyxDQUFDMkQsWUFBM0Q7QUFSYixrQkFVRSxnQ0FBQyw4QkFBRCxPQVZGLENBdFNGLGVBa1RFO0FBQ0UsSUFBQSxPQUFPLEVBQUU7QUFBQSxhQUNQbE4sTUFBTSxDQUNIa0QsS0FESCxHQUVHQyxLQUZILEdBR0d1TSxpQkFISCxHQUlHck0sR0FKSCxFQURPO0FBQUEsS0FEWDtBQVFFLElBQUEsU0FBUyxFQUFFLDRCQUFXbUcsT0FBTyxDQUFDc0YsTUFBbkIsdUNBQThCdEYsT0FBTyxDQUFDdUYsTUFBdEMsRUFBK0N4RixXQUFXLENBQUM0RCxhQUEzRDtBQVJiLGtCQVVFLGdDQUFDLDhCQUFELE9BVkYsQ0FsVEYsZUE0V0U7QUFDRSxJQUFBLE9BQU8sRUFBRTtBQUFBLGFBQ1BuTixNQUFNLENBQ0hrRCxLQURILEdBRUdDLEtBRkgsR0FHR29LLElBSEgsR0FJR2xLLEdBSkgsRUFETztBQUFBLEtBRFg7QUFRRSxJQUFBLFFBQVEsRUFBRSxDQUFDa0csV0FBVyxDQUFDK0QsT0FSekI7QUFTRSxJQUFBLFNBQVMsRUFBRTlELE9BQU8sQ0FBQ3NGO0FBVHJCLGtCQVdFLGdDQUFDLGdCQUFELE9BWEYsQ0E1V0YsZUF5WEU7QUFDRSxJQUFBLE9BQU8sRUFBRTtBQUFBLGFBQ1A5TyxNQUFNLENBQ0hrRCxLQURILEdBRUdDLEtBRkgsR0FHR3NLLElBSEgsR0FJR3BLLEdBSkgsRUFETztBQUFBLEtBRFg7QUFRRSxJQUFBLFFBQVEsRUFBRSxDQUFDa0csV0FBVyxDQUFDaUUsT0FSekI7QUFTRSxJQUFBLFNBQVMsRUFBRWhFLE9BQU8sQ0FBQ3NGO0FBVHJCLGtCQVdFLGdDQUFDLGdCQUFELE9BWEYsQ0F6WEYsQ0FERixlQXdZRTtBQUNFLElBQUEsT0FBTyxFQUFFLG1CQUFNO0FBQ2I5TyxNQUFBQSxNQUFNLENBQ0hrRCxLQURILEdBRUdDLEtBRkgsR0FHR3dNLGtCQUhILENBR3NCL0YsaUJBQWlCLENBQUNnRyxJQUh4QyxFQUlHdk0sR0FKSDtBQUtELEtBUEg7QUFRRSxJQUFBLFNBQVMsRUFBRW1HLE9BQU8sQ0FBQ3NGO0FBUnJCLGtCQVVFLGdDQUFDLGtCQUFELE9BVkYsQ0F4WUYsZUFxWkUsZ0NBQUMsc0JBQUQ7QUFDRSxJQUFBLE9BQU8sRUFBRSxtQkFBTTtBQUNidEUsTUFBQUEsUUFBUSxTQUFSLElBQUFBLFFBQVEsV0FBUixZQUFBQSxRQUFRLENBQUd4SyxNQUFNLENBQUM2UCxPQUFQLEVBQUgsQ0FBUjtBQUNBN1AsTUFBQUEsTUFBTSxDQUFDcUssUUFBUCxDQUFnQnlGLElBQWhCO0FBQ0Q7QUFKSCxJQXJaRixDQUZKLEVBK1pHbEYsVUFBVSxpQkFDVCxnQ0FBQyxlQUFEO0FBQ0UsSUFBQSxNQUFNLEVBQUU1SyxNQURWO0FBRUUsSUFBQSxJQUFJLGtDQUNDNEssVUFERDtBQUVGakksTUFBQUEsYUFBYSxFQUFFLHVCQUFDOEIsRUFBRCxFQUFLc0wsRUFBTDtBQUFBLGVBQVlDLE9BQU8sQ0FBQ0MsR0FBUixDQUFZLGNBQVosRUFBNEJGLEVBQTVCLENBQVo7QUFBQSxPQUZiO0FBR0Z6TyxNQUFBQSxZQUFZLEVBQUU7QUFBQSxlQUFNME8sT0FBTyxDQUFDQyxHQUFSLENBQVksZUFBWixDQUFOO0FBQUE7QUFIWixNQUZOO0FBT0UsSUFBQSxPQUFPLEVBQUU7QUFBQSxhQUFNcEYsYUFBYSxDQUFDLEtBQUQsQ0FBbkI7QUFBQTtBQVBYLElBaGFKLENBREY7QUE2YUQ7O0FBRUQsSUFBTXpHLEtBQUssR0FBRyxTQUFSQSxLQUFRLENBQUNzQixLQUFEO0FBQUEsU0FBWTtBQUN4QmtKLElBQUFBLGNBQWMsRUFBRTtBQUNkakgsTUFBQUEsT0FBTyxFQUFFLE1BREs7QUFFZDNDLE1BQUFBLEtBQUssRUFBRSxNQUZPO0FBR2RrTCxNQUFBQSxjQUFjLEVBQUU7QUFIRixLQURRO0FBTXhCckIsSUFBQUEsZ0JBQWdCLEVBQUU7QUFDaEJzQixNQUFBQSxVQUFVLEVBQUUsUUFESTtBQUVoQnhJLE1BQUFBLE9BQU8sRUFBRSxNQUZPO0FBR2hCM0MsTUFBQUEsS0FBSyxFQUFFO0FBSFMsS0FOTTtBQVd4QjhKLElBQUFBLE1BQU0sRUFBRTtBQUNOdkksTUFBQUEsS0FBSyxFQUFFLE1BREQ7QUFFTm9CLE1BQUFBLE9BQU8sRUFBRSxhQUZIO0FBR04vQixNQUFBQSxPQUFPLEVBQUUsS0FISDtBQUlOWSxNQUFBQSxVQUFVLEVBQUUsTUFKTjtBQUtObkMsTUFBQUEsTUFBTSxFQUFFLE1BTEY7QUFNTnlCLE1BQUFBLE1BQU0sRUFBRSxTQU5GO0FBT04saUJBQVc7QUFDVFMsUUFBQUEsS0FBSyxFQUFFO0FBREUsT0FQTDtBQVVOLGlCQUFXO0FBQ1Q2SixRQUFBQSxPQUFPLHNCQUFlMUssS0FBSyxDQUFDNkIsT0FBTixDQUFjOEksSUFBZCxDQUFtQixHQUFuQixDQUFmO0FBREU7QUFWTCxLQVhnQjtBQXlCeEJ0QixJQUFBQSxNQUFNLEVBQUU7QUFDTnhJLE1BQUFBLEtBQUssRUFBRTtBQURELEtBekJnQjtBQTRCeEIrSixJQUFBQSxRQUFRLEVBQUU7QUFDUkMsTUFBQUEsT0FBTyxFQUFFLEdBREQ7QUFFUnpLLE1BQUFBLE1BQU0sRUFBRSxhQUZBO0FBR1Isa0JBQVk7QUFDVlMsUUFBQUEsS0FBSyxFQUFFO0FBREc7QUFISixLQTVCYztBQW1DeEI2RSxJQUFBQSxRQUFRLEVBQUU7QUFDUjVFLE1BQUFBLFVBQVUsRUFBRSxlQURKO0FBRVJELE1BQUFBLEtBQUssRUFBRTtBQUZDLEtBbkNjO0FBdUN4QnNILElBQUFBLE9BQU8sRUFBRTtBQUNQck4sTUFBQUEsUUFBUSxFQUFFLFVBREg7QUFFUGdRLE1BQUFBLE1BQU0sRUFBRSxFQUZEO0FBR1AxSyxNQUFBQSxNQUFNLEVBQUUsU0FIRDtBQUlQb0ssTUFBQUEsY0FBYyxFQUFFLGVBSlQ7QUFLUDFKLE1BQUFBLFVBQVUsRUFBRSwwQ0FMTDtBQU1Qc0QsTUFBQUEsUUFBUSxFQUFFLE9BTkg7QUFPUDNELE1BQUFBLE1BQU0sRUFBRSxXQVBEO0FBUVBQLE1BQUFBLE9BQU8sRUFBRSxLQVJGO0FBU1A2SyxNQUFBQSxTQUFTLEVBQ1AsK0dBVks7QUFXUEMsTUFBQUEsU0FBUyxFQUFFLFlBWEo7QUFZUC9JLE1BQUFBLE9BQU8sRUFBRSxNQVpGO0FBYVA0SSxNQUFBQSxPQUFPLEVBQUUsQ0FiRjtBQWNQbkosTUFBQUEsYUFBYSxFQUFFO0FBZFIsS0F2Q2U7QUF1RHhCMkcsSUFBQUEsaUJBQWlCLEVBQUU7QUFDakJqRSxNQUFBQSxRQUFRLEVBQUU7QUFETyxLQXZESztBQTBEeEJrRSxJQUFBQSxVQUFVLEVBQUU7QUFDVjFOLE1BQUFBLEdBQUcsRUFBRTtBQURLLEtBMURZO0FBNkR4QjJOLElBQUFBLFlBQVksRUFBRTtBQUNaakgsTUFBQUEsS0FBSyxFQUFFO0FBREssS0E3RFU7QUFnRXhCc0gsSUFBQUEsU0FBUyxFQUFFO0FBQ1R0SixNQUFBQSxLQUFLLEVBQUU7QUFERSxLQWhFYTtBQW1FeEJ1SixJQUFBQSxNQUFNLEVBQUU7QUFDTm9DLE1BQUFBLFVBQVUsRUFBRTtBQUROLEtBbkVnQjtBQXNFeEJoRCxJQUFBQSxTQUFTLEVBQUU7QUFDVDNJLE1BQUFBLEtBQUssRUFBRTtBQURFLEtBdEVhO0FBeUV4Qm1KLElBQUFBLE9BQU8sRUFBRTtBQUNQb0MsTUFBQUEsT0FBTyxFQUFFLENBREY7QUFFUG5KLE1BQUFBLGFBQWEsRUFBRTtBQUZSLEtBekVlO0FBNkV4QndKLElBQUFBLFFBQVEsRUFBRTtBQUNSNUwsTUFBQUEsS0FBSyxFQUFFLE1BREM7QUFFUkMsTUFBQUEsTUFBTSxFQUFFLE1BRkE7QUFHUlcsTUFBQUEsT0FBTyxFQUFFLEtBSEQ7QUFJUmlMLE1BQUFBLGFBQWEsRUFBRTtBQUpQLEtBN0VjO0FBbUZ4QjdNLElBQUFBLEtBQUssRUFBRTtBQUNMdUMsTUFBQUEsS0FBSyxFQUFFO0FBREYsS0FuRmlCO0FBc0Z4QnVLLElBQUFBLE1BQU0sRUFBRTtBQUNObkosTUFBQUEsT0FBTyxFQUFFO0FBREg7QUF0RmdCLEdBQVo7QUFBQSxDQUFkOztBQTBGQSxJQUFNb0osYUFBYSxHQUFHLHdCQUFXM00sS0FBWCxFQUFrQjtBQUFFNE0sRUFBQUEsS0FBSyxFQUFFO0FBQVQsQ0FBbEIsRUFBbUN0RyxPQUFuQyxDQUF0QjtBQUVBLElBQU11RyxrQkFBa0IsR0FBRztBQUN6QnpRLEVBQUFBLFFBQVEsRUFBRSxRQURlO0FBRXpCME4sRUFBQUEsU0FBUyxFQUFFLE1BRmM7QUFHekJFLEVBQUFBLGFBQWEsRUFBRSxLQUhVO0FBSXpCOEMsRUFBQUEsUUFBUSxFQUFFLElBSmU7QUFLekJDLEVBQUFBLE1BQU0sRUFBRTtBQUxpQixDQUEzQjs7QUFRTyxJQUFNQyxZQUFZLEdBQUcsU0FBZkEsWUFBZSxDQUFDOUwsS0FBRCxFQUFXO0FBQ3JDLG1CQUEwQyxxQkFBUyxFQUFULENBQTFDO0FBQUE7QUFBQSxNQUFPK0wsYUFBUDtBQUFBLE1BQXNCQyxnQkFBdEI7O0FBQ0EsbUJBQWtDLHFCQUFTLEtBQVQsQ0FBbEM7QUFBQTtBQUFBLE1BQU9DLFNBQVA7QUFBQSxNQUFrQkMsWUFBbEI7O0FBQ0EsTUFBUWhJLE9BQVIsR0FBaUNsRSxLQUFqQyxDQUFRa0UsT0FBUjtBQUFBLE1BQWlCRyxXQUFqQixHQUFpQ3JFLEtBQWpDLENBQWlCcUUsV0FBakI7O0FBQ0EsTUFBTThILGdCQUFnQixtQ0FDakJSLGtCQURpQixHQUVqQnRILFdBRmlCLENBQXRCOztBQUlBLE1BQU0rSCxVQUFVLEdBQUcsQ0FDakJDLGdDQURpQixFQUVqQkMsc0JBRmlCLEVBR2pCMU0sYUFIaUIsRUFJakIyTSwyQkFKaUIsRUFLakJDLGlDQUxpQixFQU1qQkMsNkJBTmlCLEVBT2pCQyxtQ0FQaUIsRUFRakJDLDhDQUFnQ0MsU0FBaEMsQ0FBMEM1TSxLQUFLLENBQUNzRSxpQkFBaEQsQ0FSaUIsRUFTakJ1SSxpQ0FBbUJELFNBQW5CLENBQTZCNU0sS0FBSyxDQUFDc0UsaUJBQW5DLENBVGlCLEVBVWpCd0ksaUNBQW1CRixTQUFuQixDQUE2QjVNLEtBQUssQ0FBQ3NFLGlCQUFuQyxDQVZpQixFQVdqQnlJLGVBQVNILFNBQVQsQ0FBbUI7QUFDakJ2SSxJQUFBQSxXQUFXLEVBQUU4SDtBQURJLEdBQW5CLENBWGlCLEVBY2pCYSw4QkFkaUIsRUFlakJDLGdDQWZpQixFQWdCakJDLCtCQUFVTixTQUFWLENBQW9CO0FBQ2xCTyxJQUFBQSxLQUFLLEVBQUUsQ0FBQyxTQUFELEVBQVksV0FBWixDQURXO0FBRWxCQyxJQUFBQSxVQUFVLEVBQUUsQ0FBQyxNQUFELEVBQVMsT0FBVCxFQUFrQixRQUFsQjtBQUZNLEdBQXBCLENBaEJpQixFQW9CakJDLDBCQXBCaUIsRUFxQmpCQyx1QkFBZ0JWLFNBQWhCLENBQTBCO0FBQ3hCdkksSUFBQUEsV0FBVyxFQUFFOEgsZ0JBRFc7QUFFeEJvQixJQUFBQSxhQUFhLEVBQUU7QUFDYkMsTUFBQUEsNEJBQTRCLEVBQUV4TixLQUFLLENBQUN3Tiw0QkFEdkI7QUFFYkMsTUFBQUEsUUFBUSxFQUNOek4sS0FBSyxDQUFDME4sWUFBTixJQUNBMU4sS0FBSyxDQUFDME4sWUFBTixVQURBLElBRUMsVUFBQzlILElBQUQsRUFBTytILElBQVAsRUFBZ0I7QUFDZixZQUFRQyxHQUFSLEdBQWdCaEksSUFBSSxDQUFDaUksS0FBckIsQ0FBUUQsR0FBUjtBQUVBNU4sUUFBQUEsS0FBSyxDQUFDME4sWUFBTixXQUEwQkUsR0FBMUIsRUFBK0IsVUFBQzlRLENBQUQsRUFBTztBQUNwQyxjQUFNZ1IsZ0JBQWdCLEdBQUcvQixhQUFhLENBQUNnQyxNQUFkLENBQXFCLFVBQUNDLEdBQUQ7QUFBQSxtQkFBU0EsR0FBRyxDQUFDQyxHQUFKLEtBQVlySSxJQUFJLENBQUNxSSxHQUExQjtBQUFBLFdBQXJCLENBQXpCO0FBQ0EsY0FBTUMsUUFBUSxHQUFHO0FBQ2ZuQyxZQUFBQSxhQUFhLEVBQUUrQixnQkFEQTtBQUVmN0IsWUFBQUEsU0FBUyxFQUFFQSxTQUFTLElBQUk2QixnQkFBZ0IsQ0FBQ2hULE1BQWpCLEtBQTRCLENBQXpDLEdBQTZDLEtBQTdDLEdBQXFEbVI7QUFGakQsV0FBakI7QUFLQUQsVUFBQUEsZ0JBQWdCLENBQUNrQyxRQUFRLENBQUNuQyxhQUFWLENBQWhCO0FBQ0FHLFVBQUFBLFlBQVksQ0FBQ2dDLFFBQVEsQ0FBQ2pDLFNBQVYsQ0FBWjtBQUNBMEIsVUFBQUEsSUFBSTtBQUNMLFNBVkQ7QUFXRCxPQW5CVTtBQW9CYlEsTUFBQUEsb0JBQW9CLEVBQ2xCbk8sS0FBSyxDQUFDME4sWUFBTixJQUNDLFVBQUNVLFVBQUQsRUFBYUMsVUFBYixFQUE0QjtBQUMzQixZQUFNQyxRQUFRLEdBQUcsU0FBWEEsUUFBVyxDQUFDQyxNQUFELEVBQVk7QUFBQTs7QUFDM0IsY0FBSUMsRUFBSjs7QUFFQSxjQUFJdkMsU0FBUyxJQUFJc0MsTUFBakIsRUFBeUI7QUFDdkI7QUFDQUMsWUFBQUEsRUFBRSxHQUFHeE8sS0FBSyxDQUFDa0YsUUFBWDtBQUNEOztBQUVELGNBQU00SSxnQkFBZ0IsR0FBRy9CLGFBQWEsQ0FBQ2dDLE1BQWQsQ0FBcUIsVUFBQ0MsR0FBRDtBQUFBLG1CQUFTQSxHQUFHLENBQUNDLEdBQUosS0FBWUcsVUFBVSxDQUFDSCxHQUFoQztBQUFBLFdBQXJCLENBQXpCO0FBQ0EsY0FBTUMsUUFBUSxHQUFHO0FBQ2ZuQyxZQUFBQSxhQUFhLEVBQUUrQjtBQURBLFdBQWpCOztBQUlBLGNBQUlBLGdCQUFnQixDQUFDaFQsTUFBakIsS0FBNEIsQ0FBaEMsRUFBbUM7QUFDakNvVCxZQUFBQSxRQUFRLENBQUNqQyxTQUFULEdBQXFCLEtBQXJCO0FBQ0Q7O0FBRURELFVBQUFBLGdCQUFnQixDQUFDa0MsUUFBUSxDQUFDbkMsYUFBVixDQUFoQjtBQUNBRyxVQUFBQSxZQUFZLENBQUNnQyxRQUFRLENBQUNqQyxTQUFWLENBQVo7QUFDQSxpQkFBQXVDLEVBQUUsVUFBRixrQ0FBSzlULE1BQU0sQ0FBQzZQLE9BQVAsRUFBTDtBQUNELFNBcEJEOztBQXFCQSxZQUFNa0UsUUFBUSxHQUFHLFNBQVhBLFFBQVcsR0FBTTtBQUNyQjtBQUNkO0FBQ0E7QUFDQTtBQUNjLGNBQU1DLE9BQU8sR0FBR0wsVUFBVSxDQUFDQyxRQUFELENBQTFCO0FBQ0F0TyxVQUFBQSxLQUFLLENBQUMwTixZQUFOLENBQW1CaUIsR0FBbkIsQ0FBdUJELE9BQXZCO0FBQ0QsU0FQRDs7QUFTQTFDLFFBQUFBLGdCQUFnQiwrQ0FBS0QsYUFBTCxJQUFvQnFDLFVBQXBCLEdBQWhCO0FBQ0FLLFFBQUFBLFFBQVE7QUFDVCxPQXZEVTtBQXdEYkcsTUFBQUEsYUFBYSxFQUFFNU8sS0FBSyxDQUFDNE8sYUF4RFI7QUF5RGJDLE1BQUFBLGNBQWMsRUFBRTdPLEtBQUssQ0FBQzZPO0FBekRULEtBRlM7QUE2RHhCQyxJQUFBQSxLQUFLLEVBQUU7QUE3RGlCLEdBQTFCLENBckJpQixFQW9GakJDLGFBQU1uQyxTQUFOLENBQWdCO0FBQ2RvQyxJQUFBQSxrQkFBa0IsRUFBRWhQLEtBQUssQ0FBQ2dQO0FBRFosR0FBaEIsQ0FwRmlCLEVBdUZqQkMsYUFBUXJDLFNBQVIsQ0FBa0I7QUFDaEJzQyxJQUFBQSxhQUFhLEVBQUVsUCxLQUFLLENBQUNrUDtBQURMLEdBQWxCLENBdkZpQixDQUFuQjtBQTJGQSxNQUFNeFUsTUFBTSxHQUFHLHVCQUFVO0FBQ3ZCMFIsSUFBQUEsVUFBVSxFQUFWQSxVQUR1QjtBQUV2QitDLElBQUFBLGlCQUFpQixFQUFFLEtBRkk7QUFHdkJ2TixJQUFBQSxPQUFPLEVBQUU1QixLQUFLLENBQUNvUCxNQUhRO0FBSXZCQyxJQUFBQSxRQUFRLEVBQUU7QUFBQTs7QUFBQSxVQUFHM1UsTUFBSCxTQUFHQSxNQUFIO0FBQUEsVUFBVzRVLFdBQVgsU0FBV0EsV0FBWDtBQUFBLGFBQTZCQSxXQUFXLENBQUNDLE1BQVosd0JBQXNCdlAsS0FBSyxDQUFDa0YsUUFBNUIsb0RBQXNCLHFCQUFBbEYsS0FBSyxFQUFZdEYsTUFBTSxDQUFDNlAsT0FBUCxFQUFaLENBQTNCLENBQTdCO0FBQUEsS0FKYTtBQUt2QmlGLElBQUFBLE1BQU0sRUFBRSx1QkFBZ0I7QUFBQSxVQUFiOVUsTUFBYSxTQUFiQSxNQUFhOztBQUN0QixVQUFJeVIsZ0JBQWdCLENBQUNOLE1BQWpCLEtBQTRCLE1BQWhDLEVBQXdDO0FBQUE7O0FBQ3RDLDRCQUFBN0wsS0FBSyxDQUFDa0YsUUFBTiwyRUFBQWxGLEtBQUssRUFBWXRGLE1BQU0sQ0FBQzZQLE9BQVAsRUFBWixDQUFMO0FBQ0QsT0FGRCxNQUVPO0FBQUE7O0FBQ0wseUJBQUF2SyxLQUFLLENBQUN5UCxNQUFOLHFFQUFBelAsS0FBSyxFQUFVdEYsTUFBTSxDQUFDNlAsT0FBUCxFQUFWLENBQUw7QUFDRDtBQUNGO0FBWHNCLEdBQVYsQ0FBZjtBQWNBLHdCQUFVLFlBQU07QUFDZCxRQUFJLENBQUM3UCxNQUFMLEVBQWE7QUFDWDtBQUNEOztBQUVELFFBQUlzRixLQUFLLENBQUNvUCxNQUFOLEtBQWlCMVUsTUFBTSxDQUFDNlAsT0FBUCxFQUFyQixFQUF1QztBQUNyQzdQLE1BQUFBLE1BQU0sQ0FBQ3FLLFFBQVAsQ0FBZ0IySyxVQUFoQixDQUEyQjFQLEtBQUssQ0FBQ29QLE1BQWpDLEVBQXlDLEtBQXpDLEVBRHFDLENBQ1k7QUFDbEQ7QUFDRixHQVJELEVBUUcsQ0FBQ3BQLEtBQUssQ0FBQ29QLE1BQVAsRUFBZTFVLE1BQWYsQ0FSSDtBQVVBLHdCQUFVLFlBQU07QUFDZDtBQUNBLFFBQU1pVixZQUFZLEdBQUc7QUFDbkIsaUJBQVcsTUFEUTtBQUVuQixpQkFBVyxTQUZRO0FBR25CLDBCQUFvQixTQUhEO0FBSW5CLGtCQUFZLHVCQUpPO0FBS25CLGtCQUFZLHVCQUxPO0FBTW5CLGtCQUFZLHVCQU5PO0FBT25CLGtCQUFZLHNCQVBPO0FBUW5CLGtCQUFZLHNCQVJPO0FBU25CLGlCQUFXLFNBVFE7QUFVbkIsa0JBQVksU0FWTztBQVduQiwyQkFBcUIsU0FYRjtBQVluQix3QkFBa0IsdUJBWkM7QUFhbkIsMkJBQXFCLFNBYkY7QUFjbkIsa0JBQVksd0JBZE87QUFlbkIsd0JBQWtCLFNBZkM7QUFnQm5CLGVBQVMsU0FoQlU7QUFpQm5CLHFCQUFlLFNBakJJO0FBa0JuQjtBQWxCbUIsS0FBckI7QUFzQkFDLElBQUFBLE1BQU0sQ0FBQ0MsT0FBUCxDQUFlRixZQUFmLEVBQTZCRyxPQUE3QixDQUFxQyxpQkFBa0I7QUFBQTtBQUFBLFVBQWhCN0IsR0FBZ0I7QUFBQSxVQUFYcEssS0FBVzs7QUFDckQzSCxNQUFBQSxRQUFRLENBQUM2VCxlQUFULENBQXlCalIsS0FBekIsQ0FBK0JrUixXQUEvQixDQUEyQy9CLEdBQTNDLEVBQWdEcEssS0FBaEQ7QUFDRCxLQUZEO0FBR0QsR0EzQkQsRUEyQkcsRUEzQkg7QUE2QkEsTUFBTUksV0FBVyxHQUFHLDRCQUFlO0FBQ2pDdkosSUFBQUEsTUFBTSxFQUFOQSxNQURpQztBQUVqQzhLLElBQUFBLFFBQVEsRUFBRSxrQkFBQ0MsR0FBRCxFQUFTO0FBQUE7O0FBQ2pCLGFBQU87QUFDTGQsUUFBQUEsU0FBUyxrQkFBRWMsR0FBRyxDQUFDL0ssTUFBTixpREFBRSxhQUFZaUs7QUFEbEIsT0FBUDtBQUdEO0FBTmdDLEdBQWYsQ0FBcEI7O0FBU0EsTUFBTXBCLFdBQVcsR0FBRyxTQUFkQSxXQUFjLENBQUNDLENBQUQsRUFBTztBQUN6QixRQUFJLENBQUNBLENBQUwsRUFBUTtBQUNOO0FBQ0Q7O0FBQ0QsUUFBTUMsU0FBUyxHQUFHLGdCQUFsQjs7QUFFQSxRQUFJLE9BQU9ELENBQVAsS0FBYSxRQUFqQixFQUEyQjtBQUN6QixVQUFJQSxDQUFDLENBQUNFLFFBQUYsQ0FBVyxHQUFYLENBQUosRUFBcUI7QUFDbkIsZUFBT0MsU0FBUDtBQUNELE9BRkQsTUFFTyxJQUNMSCxDQUFDLENBQUNFLFFBQUYsQ0FBVyxJQUFYLEtBQ0FGLENBQUMsQ0FBQ0UsUUFBRixDQUFXLElBQVgsQ0FEQSxJQUVBRixDQUFDLENBQUNFLFFBQUYsQ0FBVyxJQUFYLENBRkEsSUFHQUYsQ0FBQyxDQUFDRSxRQUFGLENBQVcsSUFBWCxDQUhBLElBSUFGLENBQUMsQ0FBQ0UsUUFBRixDQUFXLElBQVgsQ0FKQSxJQUtBRixDQUFDLENBQUNJLEtBQUYsQ0FBUUgsU0FBUixDQU5LLEVBT0w7QUFDQSxlQUFPRCxDQUFQO0FBQ0QsT0FUTSxNQVNBO0FBQ0wsWUFBTUssS0FBSyxHQUFHQyxRQUFRLENBQUNOLENBQUQsRUFBSSxFQUFKLENBQXRCO0FBQ0EsZUFBT08sS0FBSyxDQUFDRixLQUFELENBQUwsR0FBZUEsS0FBZixhQUEwQkEsS0FBMUIsT0FBUDtBQUNEO0FBQ0Y7O0FBQ0QsUUFBSSxPQUFPTCxDQUFQLEtBQWEsUUFBakIsRUFBMkI7QUFDekIsdUJBQVVBLENBQVY7QUFDRDtBQUNGLEdBMUJEOztBQTRCQSxNQUFNd0IsU0FBUyxHQUFHLG9CQUFRLFlBQU07QUFDOUIsUUFBUVIsUUFBUixHQUFvRXhFLEtBQXBFLENBQVF3RSxRQUFSO0FBQUEsUUFBa0I5RSxLQUFsQixHQUFvRU0sS0FBcEUsQ0FBa0JOLEtBQWxCO0FBQUEsUUFBeUJ4QixRQUF6QixHQUFvRThCLEtBQXBFLENBQXlCOUIsUUFBekI7QUFBQSxRQUFtQ3VHLFNBQW5DLEdBQW9FekUsS0FBcEUsQ0FBbUN5RSxTQUFuQztBQUFBLFFBQThDOUUsTUFBOUMsR0FBb0VLLEtBQXBFLENBQThDTCxNQUE5QztBQUFBLFFBQXNEZ0IsU0FBdEQsR0FBb0VYLEtBQXBFLENBQXNEVyxTQUF0RDtBQUVBLFdBQU87QUFDTGpCLE1BQUFBLEtBQUssRUFBRTZELFdBQVcsQ0FBQzdELEtBQUQsQ0FEYjtBQUVMOEUsTUFBQUEsUUFBUSxFQUFFakIsV0FBVyxDQUFDaUIsUUFBRCxDQUZoQjtBQUdMdEcsTUFBQUEsUUFBUSxFQUFFcUYsV0FBVyxDQUFDckYsUUFBRCxDQUhoQjtBQUlMeUIsTUFBQUEsTUFBTSxFQUFFNEQsV0FBVyxDQUFDNUQsTUFBRCxDQUpkO0FBS0w4RSxNQUFBQSxTQUFTLEVBQUVsQixXQUFXLENBQUNrQixTQUFELENBTGpCO0FBTUw5RCxNQUFBQSxTQUFTLEVBQUU0QyxXQUFXLENBQUM1QyxTQUFEO0FBTmpCLEtBQVA7QUFRRCxHQVhpQixFQVdmLENBQUNYLEtBQUQsQ0FYZSxDQUFsQjtBQWFBLHNCQUNFLGdDQUFDLGVBQUQsZ0VBQTBCQSxLQUExQjtBQUFpQ3FFLElBQUFBLFdBQVcsRUFBRThIO0FBQTlDO0FBQWtFLElBQUEsV0FBVyxFQUFFbEksV0FBL0U7QUFBNEYsSUFBQSxNQUFNLEVBQUV2SjtBQUFwRyxNQUNHQSxNQUFNLGlCQUNMLGdDQUFDLHFCQUFEO0FBQ0UsSUFBQSxLQUFLLEVBQUU7QUFDTCtKLE1BQUFBLFNBQVMsRUFBRU8sU0FBUyxDQUFDUCxTQURoQjtBQUVMOUUsTUFBQUEsTUFBTSxFQUFFcUYsU0FBUyxDQUFDckYsTUFGYjtBQUdMZ0IsTUFBQUEsU0FBUyxFQUFFcUUsU0FBUyxDQUFDckU7QUFIaEIsS0FEVDtBQU1FLElBQUEsU0FBUyxFQUFFdUQsT0FBTyxDQUFDN0QsSUFOckI7QUFPRSxJQUFBLE1BQU0sRUFBRTNGO0FBUFYsSUFGSixDQURGO0FBZUQsQ0F6Tk07OztBQTJOUCxJQUFNdVYsWUFBWSxHQUFHLHdCQUFXO0FBQzlCNVAsRUFBQUEsSUFBSSxFQUFFO0FBQ0p5SyxJQUFBQSxPQUFPLEVBQUUsaUJBREw7QUFFSixzQkFBa0I7QUFDaEJBLE1BQUFBLE9BQU8sRUFBRSxpQkFETztBQUVoQjVQLE1BQUFBLFFBQVEsRUFBRTtBQUZNO0FBRmQ7QUFEd0IsQ0FBWCxFQVFsQjRRLFlBUmtCLENBQXJCO2VBVWVtRSxZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCwgdXNlTWVtbywgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBSZWFjdERPTSBmcm9tICdyZWFjdC1kb20nO1xuaW1wb3J0IHsgY3JlYXRlUm9vdCB9IGZyb20gJ3JlYWN0LWRvbS9jbGllbnQnO1xuaW1wb3J0IHsgTm9kZVNlbGVjdGlvbiB9IGZyb20gJ3Byb3NlbWlycm9yLXN0YXRlJztcbmltcG9ydCB7IFRleHRTdHlsZUtpdCB9IGZyb20gJ0B0aXB0YXAvZXh0ZW5zaW9uLXRleHQtc3R5bGUnO1xuaW1wb3J0IHsgRWRpdG9yQ29udGVudCwgdXNlRWRpdG9yLCB1c2VFZGl0b3JTdGF0ZSB9IGZyb20gJ0B0aXB0YXAvcmVhY3QnO1xuaW1wb3J0IFN0YXJ0ZXJLaXQgZnJvbSAnQHRpcHRhcC9zdGFydGVyLWtpdCc7XG5pbXBvcnQgeyBUYWJsZSB9IGZyb20gJ0B0aXB0YXAvZXh0ZW5zaW9uLXRhYmxlJztcbmltcG9ydCB7IFRhYmxlUm93IH0gZnJvbSAnQHRpcHRhcC9leHRlbnNpb24tdGFibGUtcm93JztcbmltcG9ydCB7IFRhYmxlQ2VsbCB9IGZyb20gJ0B0aXB0YXAvZXh0ZW5zaW9uLXRhYmxlLWNlbGwnO1xuaW1wb3J0IHsgVGFibGVIZWFkZXIgfSBmcm9tICdAdGlwdGFwL2V4dGVuc2lvbi10YWJsZS1oZWFkZXInO1xuaW1wb3J0IFN1cGVyU2NyaXB0IGZyb20gJ0B0aXB0YXAvZXh0ZW5zaW9uLXN1cGVyc2NyaXB0JztcbmltcG9ydCBTdWJTY3JpcHQgZnJvbSAnQHRpcHRhcC9leHRlbnNpb24tc3Vic2NyaXB0JztcbmltcG9ydCBUZXh0QWxpZ24gZnJvbSAnQHRpcHRhcC9leHRlbnNpb24tdGV4dC1hbGlnbic7XG5pbXBvcnQgSW1hZ2UgZnJvbSAnQHRpcHRhcC9leHRlbnNpb24taW1hZ2UnO1xuXG5pbXBvcnQgeyB3aXRoU3R5bGVzIH0gZnJvbSAnQG1hdGVyaWFsLXVpL2NvcmUvc3R5bGVzJztcbmltcG9ydCB7XG4gIEV4cGxpY2l0Q29uc3RydWN0ZWRSZXNwb25zZU5vZGUsXG4gIERyYWdJblRoZUJsYW5rTm9kZSxcbiAgSW5saW5lRHJvcGRvd25Ob2RlLFxuICBSZXNwb25zZUFyZWFFeHRlbnNpb24sXG59IGZyb20gJy4vZXh0ZW5zaW9ucy9yZXNwb25zZUFyZWEnO1xuaW1wb3J0IHsgTWF0aE5vZGUgfSBmcm9tICcuL2V4dGVuc2lvbnMvbWF0aCc7XG5pbXBvcnQgY2xhc3NOYW1lcyBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCB7IGNvbG9yIH0gZnJvbSAnQHBpZS1saWIvcmVuZGVyLXVpJztcbmltcG9ydCB7IHByaW1hcnkgfSBmcm9tICcuL3RoZW1lJztcbmltcG9ydCB7IFBJRV9UT09MQkFSX19DTEFTUyB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IERvbmVCdXR0b24gfSBmcm9tICcuL3BsdWdpbnMvdG9vbGJhci9kb25lLWJ1dHRvbic7XG5pbXBvcnQgQm9sZCBmcm9tICdAbWF0ZXJpYWwtdWkvaWNvbnMvRm9ybWF0Qm9sZCc7XG5pbXBvcnQgSXRhbGljIGZyb20gJ0BtYXRlcmlhbC11aS9pY29ucy9Gb3JtYXRJdGFsaWMnO1xuaW1wb3J0IFN0cmlrZXRocm91Z2ggZnJvbSAnQG1hdGVyaWFsLXVpL2ljb25zL0Zvcm1hdFN0cmlrZXRocm91Z2gnO1xuaW1wb3J0IENvZGUgZnJvbSAnQG1hdGVyaWFsLXVpL2ljb25zL0NvZGUnO1xuaW1wb3J0IEdyaWRPbiBmcm9tICdAbWF0ZXJpYWwtdWkvaWNvbnMvR3JpZE9uJztcbmltcG9ydCBCdWxsZXRlZExpc3RJY29uIGZyb20gJ0BtYXRlcmlhbC11aS9pY29ucy9Gb3JtYXRMaXN0QnVsbGV0ZWQnO1xuaW1wb3J0IE51bWJlcmVkTGlzdEljb24gZnJvbSAnQG1hdGVyaWFsLXVpL2ljb25zL0Zvcm1hdExpc3ROdW1iZXJlZCc7XG5pbXBvcnQgVW5kZXJsaW5lIGZyb20gJ0BtYXRlcmlhbC11aS9pY29ucy9Gb3JtYXRVbmRlcmxpbmVkJztcbmltcG9ydCBGdW5jdGlvbnMgZnJvbSAnQG1hdGVyaWFsLXVpL2ljb25zL0Z1bmN0aW9ucyc7XG5pbXBvcnQgSW1hZ2VJY29uIGZyb20gJ0BtYXRlcmlhbC11aS9pY29ucy9JbWFnZSc7XG5pbXBvcnQgeyBUb29sYmFySWNvbiB9IGZyb20gJy4vcGx1Z2lucy9yZXNwQXJlYS9pY29ucyc7XG5pbXBvcnQgUmVkbyBmcm9tICdAbWF0ZXJpYWwtdWkvaWNvbnMvUmVkbyc7XG5pbXBvcnQgVW5kbyBmcm9tICdAbWF0ZXJpYWwtdWkvaWNvbnMvVW5kbyc7XG5pbXBvcnQgVGhlYXRlcnNJY29uIGZyb20gXCJAbWF0ZXJpYWwtdWkvaWNvbnMvVGhlYXRlcnNcIjtcbmltcG9ydCBWb2x1bWVVcEljb24gZnJvbSBcIkBtYXRlcmlhbC11aS9pY29ucy9Wb2x1bWVVcFwiO1xuaW1wb3J0IHsgY2hhcmFjdGVySWNvbnMsIHNwYW5pc2hDb25maWcsIHNwZWNpYWxDb25maWcgfSBmcm9tICcuL3BsdWdpbnMvY2hhcmFjdGVycy91dGlscyc7XG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gJ3Byb3AtdHlwZXMnO1xuaW1wb3J0IHsgTWF0aFRvb2xiYXIsIFB1cmVUb29sYmFyIH0gZnJvbSAnQHBpZS1saWIvbWF0aC10b29sYmFyJztcbmltcG9ydCBnZXQgZnJvbSAnbG9kYXNoL2dldCc7XG5pbXBvcnQgQ3VzdG9tUG9wcGVyIGZyb20gJy4vcGx1Z2lucy9jaGFyYWN0ZXJzL2N1c3RvbS1wb3BwZXInO1xuaW1wb3J0IFRleHRBbGlnbkljb24gZnJvbSAnLi9wbHVnaW5zL3RleHRBbGlnbi9pY29ucyc7XG5pbXBvcnQgQ1NTSWNvbiBmcm9tICcuL3BsdWdpbnMvY3NzL2ljb25zJztcblxuaW1wb3J0IHsgSW1hZ2VVcGxvYWROb2RlIH0gZnJvbSAnLi9leHRlbnNpb25zL2ltYWdlJztcbmltcG9ydCB7IE1lZGlhIH0gZnJvbSAnLi9leHRlbnNpb25zL21lZGlhJztcbmltcG9ydCB7IENTU01hcmsgfSBmcm9tIFwiLi9leHRlbnNpb25zL2Nzc1wiO1xuXG5jb25zdCBDaGFyYWN0ZXJJY29uID0gKHsgbGV0dGVyIH0pID0+IChcbiAgPGRpdlxuICAgIHN0eWxlPXt7XG4gICAgICBmb250U2l6ZTogJzI0cHgnLFxuICAgICAgbGluZUhlaWdodDogJzI0cHgnLFxuICAgIH19XG4gID5cbiAgICB7bGV0dGVyfVxuICA8L2Rpdj5cbik7XG5cbkNoYXJhY3Rlckljb24ucHJvcFR5cGVzID0ge1xuICBsZXR0ZXI6IFByb3BUeXBlcy5zdHJpbmcsXG59O1xuXG5leHBvcnQgZnVuY3Rpb24gQ2hhcmFjdGVyUGlja2VyKHsgZWRpdG9yLCBvcHRzLCBvbkNsb3NlIH0pIHtcbiAgaWYgKCFvcHRzPy5jaGFyYWN0ZXJzPy5sZW5ndGgpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGNvbnN0IGNvbnRhaW5lclJlZiA9IHVzZVJlZihudWxsKTtcbiAgY29uc3QgW3Bvc2l0aW9uLCBzZXRQb3NpdGlvbl0gPSB1c2VTdGF0ZSh7IHRvcDogMCwgbGVmdDogMCB9KTtcbiAgY29uc3QgW3BvcG92ZXIsIHNldFBvcG92ZXJdID0gdXNlU3RhdGUobnVsbCk7XG5cbiAgbGV0IGNvbmZpZ1RvVXNlO1xuXG4gIHN3aXRjaCAodHJ1ZSkge1xuICAgIGNhc2Ugb3B0cy5sYW5ndWFnZSA9PT0gJ3NwYW5pc2gnOlxuICAgICAgY29uZmlnVG9Vc2UgPSBzcGFuaXNoQ29uZmlnO1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSBvcHRzLmxhbmd1YWdlID09PSAnc3BlY2lhbCc6XG4gICAgICBjb25maWdUb1VzZSA9IHNwZWNpYWxDb25maWc7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgY29uZmlnVG9Vc2UgPSBvcHRzO1xuICB9XG5cbiAgY29uc3QgbGF5b3V0Rm9yQ2hhcmFjdGVycyA9IGNvbmZpZ1RvVXNlLmNoYXJhY3RlcnMucmVkdWNlKFxuICAgIChvYmosIGFycikgPT4ge1xuICAgICAgaWYgKGFyci5sZW5ndGggPj0gb2JqLmNvbHVtbnMpIHtcbiAgICAgICAgb2JqLmNvbHVtbnMgPSBhcnIubGVuZ3RoO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gb2JqO1xuICAgIH0sXG4gICAgeyByb3dzOiBjb25maWdUb1VzZS5jaGFyYWN0ZXJzLmxlbmd0aCwgY29sdW1uczogMCB9LFxuICApO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGNsb3NlUG9wT3ZlcigpO1xuICAgIH07XG4gIH0sIFtdKTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghZWRpdG9yKSByZXR1cm47XG5cbiAgICAvLyBDYWxjdWxhdGUgcG9zaXRpb24gcmVsYXRpdmUgdG8gc2VsZWN0aW9uXG4gICAgY29uc3QgYm9keVJlY3QgPSBkb2N1bWVudC5ib2R5LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIGNvbnN0IHsgZnJvbSB9ID0gZWRpdG9yLnN0YXRlLnNlbGVjdGlvbjtcbiAgICBjb25zdCBzdGFydCA9IGVkaXRvci52aWV3LmNvb3Jkc0F0UG9zKGZyb20pO1xuICAgIHNldFBvc2l0aW9uKHtcbiAgICAgIHRvcDogc3RhcnQudG9wICsgTWF0aC5hYnMoYm9keVJlY3QudG9wKSArIDQwLCAvLyBzaGlmdCBhYm92ZVxuICAgICAgbGVmdDogc3RhcnQubGVmdCxcbiAgICB9KTtcblxuICAgIGNvbnN0IGhhbmRsZUNsaWNrT3V0c2lkZSA9IChlKSA9PiB7XG4gICAgICBpZiAoY29udGFpbmVyUmVmLmN1cnJlbnQgJiYgIWNvbnRhaW5lclJlZi5jdXJyZW50LmNvbnRhaW5zKGUudGFyZ2V0KSAmJiAhZWRpdG9yLnZpZXcuZG9tLmNvbnRhaW5zKGUudGFyZ2V0KSkge1xuICAgICAgICBvbkNsb3NlKCk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIGhhbmRsZUNsaWNrT3V0c2lkZSk7XG4gICAgcmV0dXJuICgpID0+IGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIGhhbmRsZUNsaWNrT3V0c2lkZSk7XG4gIH0sIFtlZGl0b3JdKTtcblxuICBjb25zdCByZW5kZXJQb3BPdmVyID0gKGV2ZW50LCBlbCkgPT4gc2V0UG9wb3Zlcih7IGFuY2hvckVsOiBldmVudC5jdXJyZW50VGFyZ2V0LCBlbCB9KTtcbiAgY29uc3QgY2xvc2VQb3BPdmVyID0gKCkgPT4gc2V0UG9wb3ZlcihudWxsKTtcblxuICBjb25zdCBoYW5kbGVDaGFuZ2UgPSAodmFsKSA9PiB7XG4gICAgaWYgKHR5cGVvZiB2YWwgPT09ICdzdHJpbmcnKSB7XG4gICAgICBlZGl0b3JcbiAgICAgICAgLmNoYWluKClcbiAgICAgICAgLmZvY3VzKClcbiAgICAgICAgLmluc2VydENvbnRlbnQodmFsKVxuICAgICAgICAucnVuKCk7XG4gICAgfVxuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPFJlYWN0LkZyYWdtZW50PlxuICAgICAge1JlYWN0RE9NLmNyZWF0ZVBvcnRhbChcbiAgICAgICAgPGRpdlxuICAgICAgICAgIHJlZj17Y29udGFpbmVyUmVmfVxuICAgICAgICAgIGNsYXNzTmFtZT1cImluc2VydC1jaGFyYWN0ZXItZGlhbG9nXCJcbiAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgICAgICAgICB0b3A6IGAke3Bvc2l0aW9uLnRvcH1weGAsXG4gICAgICAgICAgICBsZWZ0OiBgJHtwb3NpdGlvbi5sZWZ0fXB4YCxcbiAgICAgICAgICAgIG1heFdpZHRoOiAnNTAwcHgnLFxuICAgICAgICAgIH19XG4gICAgICAgID5cbiAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgPFB1cmVUb29sYmFyXG4gICAgICAgICAgICAgIGtleVBhZENoYXJhY3RlclJlZj17b3B0cy5rZXlQYWRDaGFyYWN0ZXJSZWZ9XG4gICAgICAgICAgICAgIHNldEtleXBhZEludGVyYWN0aW9uPXtvcHRzLnNldEtleXBhZEludGVyYWN0aW9ufVxuICAgICAgICAgICAgICBhdXRvRm9jdXNcbiAgICAgICAgICAgICAgbm9EZWNpbWFsXG4gICAgICAgICAgICAgIGhpZGVJbnB1dFxuICAgICAgICAgICAgICBub0xhdGV4SGFuZGxpbmdcbiAgICAgICAgICAgICAgaGlkZURvbmVCdXR0b25CYWNrZ3JvdW5kXG4gICAgICAgICAgICAgIGxheW91dEZvcktleVBhZD17bGF5b3V0Rm9yQ2hhcmFjdGVyc31cbiAgICAgICAgICAgICAgYWRkaXRpb25hbEtleXM9e2NvbmZpZ1RvVXNlLmNoYXJhY3RlcnMucmVkdWNlKChhcnIsIG4pID0+IHtcbiAgICAgICAgICAgICAgICBhcnIgPSBbXG4gICAgICAgICAgICAgICAgICAuLi5hcnIsXG4gICAgICAgICAgICAgICAgICAuLi5uLm1hcCgoaykgPT4gKHtcbiAgICAgICAgICAgICAgICAgICAgbmFtZTogZ2V0KGssICduYW1lJykgfHwgayxcbiAgICAgICAgICAgICAgICAgICAgd3JpdGU6IGdldChrLCAnd3JpdGUnKSB8fCBrLFxuICAgICAgICAgICAgICAgICAgICBsYWJlbDogZ2V0KGssICdsYWJlbCcpIHx8IGssXG4gICAgICAgICAgICAgICAgICAgIGNhdGVnb3J5OiAnY2hhcmFjdGVyJyxcbiAgICAgICAgICAgICAgICAgICAgZXh0cmFDbGFzczogJ2NoYXJhY3RlcicsXG4gICAgICAgICAgICAgICAgICAgIGV4dHJhUHJvcHM6IHtcbiAgICAgICAgICAgICAgICAgICAgICAuLi4oay5leHRyYVByb3BzIHx8IHt9KSxcbiAgICAgICAgICAgICAgICAgICAgICBzdHlsZToge1xuICAgICAgICAgICAgICAgICAgICAgICAgLi4uKGsuZXh0cmFQcm9wcyB8fCB7fSkuc3R5bGUsXG4gICAgICAgICAgICAgICAgICAgICAgICBib3JkZXI6ICcxcHggc29saWQgIzAwMCcsXG4gICAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgfSxcbiAgICAgICAgICAgICAgICAgICAgLi4uKGNvbmZpZ1RvVXNlLmhhc1ByZXZpZXdcbiAgICAgICAgICAgICAgICAgICAgICA/IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uczogeyBvbk1vdXNlRW50ZXI6IChldikgPT4gcmVuZGVyUG9wT3ZlcihldiwgayksIG9uTW91c2VMZWF2ZTogY2xvc2VQb3BPdmVyIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgOiB7fSksXG4gICAgICAgICAgICAgICAgICB9KSksXG4gICAgICAgICAgICAgICAgXTtcblxuICAgICAgICAgICAgICAgIHJldHVybiBhcnI7XG4gICAgICAgICAgICAgIH0sIFtdKX1cbiAgICAgICAgICAgICAga2V5cGFkTW9kZT1cImxhbmd1YWdlXCJcbiAgICAgICAgICAgICAgb25DaGFuZ2U9e2hhbmRsZUNoYW5nZX1cbiAgICAgICAgICAgICAgb25Eb25lPXtvbkNsb3NlfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+LFxuICAgICAgICBkb2N1bWVudC5ib2R5LFxuICAgICAgKX1cbiAgICAgIHtwb3BvdmVyICYmXG4gICAgICAgIFJlYWN0RE9NLmNyZWF0ZVBvcnRhbChcbiAgICAgICAgICA8Q3VzdG9tUG9wcGVyIG9uQ2xvc2U9e2Nsb3NlUG9wT3Zlcn0gYW5jaG9yRWw9e3BvcG92ZXIuYW5jaG9yRWx9PlxuICAgICAgICAgICAgPGRpdj57cG9wb3Zlci5lbC5sYWJlbH08L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgc3R5bGU9e3sgZm9udFNpemU6IDIwLCBsaW5lSGVpZ2h0OiAnMjBweCcgfX0+e3BvcG92ZXIuZWwuZGVzY3JpcHRpb259PC9kaXY+XG4gICAgICAgICAgICA8ZGl2IHN0eWxlPXt7IGZvbnRTaXplOiAyMCwgbGluZUhlaWdodDogJzIwcHgnIH19Pntwb3BvdmVyLmVsLnVuaWNvZGV9PC9kaXY+XG4gICAgICAgICAgPC9DdXN0b21Qb3BwZXI+LFxuICAgICAgICAgIGRvY3VtZW50LmJvZHksXG4gICAgICAgICl9XG4gICAgPC9SZWFjdC5GcmFnbWVudD5cbiAgKTtcbn1cblxuY29uc3QgU3VwZXJzY3JpcHRJY29uID0gKCkgPT4gKFxuICA8c3ZnIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIiBoZWlnaHQ9XCIyNHB4XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIHdpZHRoPVwiMjRweFwiIGZpbGw9XCJub25lXCI+XG4gICAgPHBhdGhcbiAgICAgIGQ9XCJNMjIsN2gtMnYxaDN2MWgtNFY3YzAtMC41NSwwLjQ1LTEsMS0xaDJWNWgtM1Y0aDNjMC41NSwwLDEsMC40NSwxLDF2MUMyMyw2LjU1LDIyLjU1LDcsMjIsN3ogTTUuODgsMjBoMi42NmwzLjQtNS40MmgwLjEyIGwzLjQsNS40MmgyLjY2bC00LjY1LTcuMjdMMTcuODEsNmgtMi42OGwtMy4wNyw0Ljk5aC0wLjEyTDguODUsNkg2LjE5bDQuMzIsNi43M0w1Ljg4LDIwelwiXG4gICAgICBmaWxsPVwiY3VycmVudENvbG9yXCJcbiAgICAvPlxuICA8L3N2Zz5cbik7XG5cbmNvbnN0IFN1YnNjcmlwdEljb24gPSAoKSA9PiAoXG4gIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIGhlaWdodD1cIjI0cHhcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgd2lkdGg9XCIyNHB4XCIgZmlsbD1cIm5vbmVcIj5cbiAgICA8cGF0aFxuICAgICAgZD1cIk0yMiwxOGgtMnYxaDN2MWgtNHYtMmMwLTAuNTUsMC40NS0xLDEtMWgydi0xaC0zdi0xaDNjMC41NSwwLDEsMC40NSwxLDF2MUMyMywxNy41NSwyMi41NSwxOCwyMiwxOHogTTUuODgsMThoMi42NiBsMy40LTUuNDJoMC4xMmwzLjQsNS40MmgyLjY2bC00LjY1LTcuMjdMMTcuODEsNGgtMi42OGwtMy4wNyw0Ljk5aC0wLjEyTDguODUsNEg2LjE5bDQuMzIsNi43M0w1Ljg4LDE4elwiXG4gICAgICBmaWxsPVwiY3VycmVudENvbG9yXCJcbiAgICAvPlxuICA8L3N2Zz5cbik7XG5cbmNvbnN0IEhlYWRpbmdJY29uID0gKCkgPT4gKFxuICA8c3ZnXG4gICAgd2lkdGg9XCIzMFwiXG4gICAgaGVpZ2h0PVwiMjhcIlxuICAgIHZpZXdCb3g9XCIwIDAgMzAgMjhcIlxuICAgIGZpbGw9XCJub25lXCJcbiAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICBzdHlsZT17eyB3aWR0aDogJzIwcHgnLCBoZWlnaHQ6ICcxOHB4JyB9fVxuICA+XG4gICAgPHBhdGhcbiAgICAgIGQ9XCJNMjcgNFYyNEgyOUMyOS41IDI0IDMwIDI0LjUgMzAgMjVWMjdDMzAgMjcuNTYyNSAyOS41IDI4IDI5IDI4SDE5QzE4LjQzNzUgMjggMTggMjcuNTYyNSAxOCAyN1YyNUMxOCAyNC41IDE4LjQzNzUgMjQgMTkgMjRIMjFWMTZIOVYyNEgxMUMxMS41IDI0IDEyIDI0LjUgMTIgMjVWMjdDMTIgMjcuNTYyNSAxMS41IDI4IDExIDI4SDFDMC40Mzc1IDI4IDAgMjcuNTYyNSAwIDI3VjI1QzAgMjQuNSAwLjQzNzUgMjQgMSAyNEgzVjRIMUMwLjQzNzUgNCAwIDMuNTYyNSAwIDNWMUMwIDAuNSAwLjQzNzUgMCAxIDBIMTFDMTEuNSAwIDEyIDAuNSAxMiAxVjNDMTIgMy41NjI1IDExLjUgNCAxMSA0SDlWMTJIMjFWNEgxOUMxOC40Mzc1IDQgMTggMy41NjI1IDE4IDNWMUMxOCAwLjUgMTguNDM3NSAwIDE5IDBIMjlDMjkuNSAwIDMwIDAuNSAzMCAxVjNDMzAgMy41NjI1IDI5LjUgNCAyOSA0SDI3WlwiXG4gICAgICBmaWxsPVwiY3VycmVudENvbG9yXCJcbiAgICAvPlxuICA8L3N2Zz5cbik7XG5cbmNvbnN0IEV4dGVuZGVkVGFibGUgPSBUYWJsZS5leHRlbmQoe1xuICByZW5kZXJIVE1MKHByb3BzKSB7XG4gICAgY29uc3Qgb3JpZ2luYWxUYWJsZSA9IHRoaXMucGFyZW50KHByb3BzKTtcblxuICAgIG9yaWdpbmFsVGFibGVbMV0uc3R5bGUgPSBgJHtvcmlnaW5hbFRhYmxlWzFdLnN0eWxlfSB3aWR0aDogMTAwJTtcbiAgICBjb2xvcjogdmFyKC0tcGllLXRleHQsIGJsYWNrKTtcbiAgICB0YWJsZS1sYXlvdXQ6IGZpeGVkO1xuICAgIGJvcmRlci1jb2xsYXBzZTogY29sbGFwc2U7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogdmFyKC0tcGllLWJhY2tncm91bmQsIHJnYmEoMjU1LCAyNTUsIDI1NSkpYDtcbiAgICBvcmlnaW5hbFRhYmxlWzFdLmJvcmRlciA9ICcxJztcblxuICAgIHJldHVybiBvcmlnaW5hbFRhYmxlO1xuICB9LFxufSk7XG5cbmNvbnN0IHN0eWxlcyA9ICh0aGVtZSkgPT4gKHtcbiAgcm9vdDoge1xuICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICAgIHBhZGRpbmc6ICcwcHgnLFxuICAgIGJvcmRlcjogJzFweCBzb2xpZCAjY2NjJyxcbiAgICBib3JkZXJSYWRpdXM6ICc0cHgnLFxuICAgIGN1cnNvcjogJ3RleHQnLFxuICAgICcmIFtkYXRhLXNsYXRlLWVkaXRvcj1cInRydWVcIl0nOiB7XG4gICAgICB3b3JkQnJlYWs6ICdicmVhay13b3JkJyxcbiAgICAgIG92ZXJmbG93OiAndmlzaWJsZScsXG4gICAgICBtYXhIZWlnaHQ6ICc1MDBweCcsXG4gICAgICAvLyBuZWVkZWQgaW4gb3JkZXIgdG8gYmUgYWJsZSB0byBwdXQgdGhlIGZvY3VzIGJlZm9yZSBhIHZvaWQgZWxlbWVudCB3aGVuIGl0IGlzIHRoZSBmaXJzdCBvbmUgaW4gdGhlIGVkaXRvclxuICAgICAgcGFkZGluZzogJzVweCcsXG4gICAgfSxcblxuICAgICcmOmZpcnN0LWNoaWxkJzoge1xuICAgICAgbWFyZ2luVG9wOiAwLFxuICAgIH0sXG5cbiAgICAnJiB1bCwgJiBvbCc6IHtcbiAgICAgIHBhZGRpbmc6ICcwIDFyZW0nLFxuICAgICAgbWFyZ2luOiAnMS4yNXJlbSAxcmVtIDEuMjVyZW0gMC40cmVtJyxcbiAgICB9LFxuXG4gICAgJyYgdWwgbGkgcCwgJiBvbCBsaSBwJzoge1xuICAgICAgbWFyZ2luVG9wOiAnMC4yNWVtJyxcbiAgICAgIG1hcmdpbkJvdHRvbTogJzAuMjVlbScsXG4gICAgfSxcblxuICAgICcmIGgxLCAmIGgyLCAmIGgzLCAmIGg0LCAmIGg1LCAmIGg2Jzoge1xuICAgICAgbGluZUhlaWdodDogMS4xLFxuICAgICAgbWFyZ2luVG9wOiAnMi41cmVtJyxcbiAgICAgIHRleHRXcmFwOiAncHJldHR5JyxcbiAgICB9LFxuXG4gICAgJyYgaDEsICYgaDInOiB7XG4gICAgICBtYXJnaW5Ub3A6ICczLjVyZW0nLFxuICAgICAgbWFyZ2luQm90dG9tOiAnMS41cmVtJyxcbiAgICB9LFxuXG4gICAgJyYgaDEnOiB7XG4gICAgICBmb250U2l6ZTogJzEuNHJlbScsXG4gICAgfSxcblxuICAgICcmIGgyJzoge1xuICAgICAgZm9udFNpemU6ICcxLjJyZW0nLFxuICAgIH0sXG5cbiAgICAnJiBoMyc6IHtcbiAgICAgIGZvbnRTaXplOiAnMS4xcmVtJyxcbiAgICB9LFxuXG4gICAgJyYgaDQsICYgaDUsICYgaDYnOiB7XG4gICAgICBmb250U2l6ZTogJzFyZW0nLFxuICAgIH0sXG5cbiAgICAnJiBjb2RlJzoge1xuICAgICAgYmFja2dyb3VuZENvbG9yOiAndmFyKC0tcHVycGxlLWxpZ2h0KScsXG4gICAgICBib3JkZXJSYWRpdXM6ICcwLjRyZW0nLFxuICAgICAgY29sb3I6ICd2YXIoLS1ibGFjayknLFxuICAgICAgZm9udFNpemU6ICcwLjg1cmVtJyxcbiAgICAgIHBhZGRpbmc6ICcwLjI1ZW0gMC4zZW0nLFxuICAgIH0sXG5cbiAgICAnJiBwcmUnOiB7XG4gICAgICBiYWNrZ3JvdW5kOiAndmFyKC0tYmxhY2spJyxcbiAgICAgIGJvcmRlclJhZGl1czogJzAuNXJlbScsXG4gICAgICBjb2xvcjogJ3ZhcigtLXdoaXRlKScsXG4gICAgICBmb250RmFtaWx5OiBcIidKZXRCcmFpbnNNb25vJywgbW9ub3NwYWNlXCIsXG4gICAgICBtYXJnaW46ICcxLjVyZW0gMCcsXG4gICAgICBwYWRkaW5nOiAnMC43NXJlbSAxcmVtJyxcblxuICAgICAgJyYgY29kZSc6IHtcbiAgICAgICAgYmFja2dyb3VuZDogJ25vbmUnLFxuICAgICAgICBjb2xvcjogJ2luaGVyaXQnLFxuICAgICAgICBmb250U2l6ZTogJzAuOHJlbScsXG4gICAgICAgIHBhZGRpbmc6IDAsXG4gICAgICB9LFxuICAgIH0sXG5cbiAgICAnJiBibG9ja3F1b3RlJzoge1xuICAgICAgYm9yZGVyTGVmdDogJzNweCBzb2xpZCB2YXIoLS1ncmF5LTMpJyxcbiAgICAgIG1hcmdpbjogJzEuNXJlbSAwJyxcbiAgICAgIHBhZGRpbmdMZWZ0OiAnMXJlbScsXG4gICAgfSxcblxuICAgICcmIGhyJzoge1xuICAgICAgYm9yZGVyOiAnbm9uZScsXG4gICAgICBib3JkZXJUb3A6ICcxcHggc29saWQgdmFyKC0tZ3JheS0yKScsXG4gICAgICBtYXJnaW46ICcycmVtIDAnLFxuICAgIH0sXG4gIH0sXG4gIGNoaWxkcmVuOiB7XG4gICAgcGFkZGluZzogJzEwcHggMTZweCcsXG4gIH0sXG4gIGVkaXRvckhvbGRlcjoge1xuICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICAgIHBhZGRpbmc6ICcwcHgnLFxuICAgIC8vIG92ZXJmbG93WTogJ2F1dG8nLFxuICAgIG92ZXJmbG93OiAndmlzaWJsZScsXG4gICAgY29sb3I6IGNvbG9yLnRleHQoKSxcbiAgICBiYWNrZ3JvdW5kQ29sb3I6IGNvbG9yLmJhY2tncm91bmQoKSxcbiAgICAnJjo6YmVmb3JlJzoge1xuICAgICAgbGVmdDogJzAnLFxuICAgICAgcmlnaHQ6ICcwJyxcbiAgICAgIGJvdHRvbTogJzAnLFxuICAgICAgaGVpZ2h0OiAnMXB4JyxcbiAgICAgIGNvbnRlbnQ6ICdcIlwiJyxcbiAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgdHJhbnNpdGlvbjogJ2JhY2tncm91bmQtY29sb3IgMjAwbXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKSAwbXMnLFxuICAgICAgcG9pbnRlckV2ZW50czogJ25vbmUnLFxuICAgICAgYmFja2dyb3VuZENvbG9yOiAncmdiYSgwLCAwLCAwLCAwLjQyKScsXG4gICAgfSxcbiAgICAnJjo6YWZ0ZXInOiB7XG4gICAgICBsZWZ0OiAnMCcsXG4gICAgICByaWdodDogJzAnLFxuICAgICAgYm90dG9tOiAnMCcsXG4gICAgICBoZWlnaHQ6ICcxcHgnLFxuICAgICAgY29udGVudDogJ1wiXCInLFxuICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgICB0cmFuc2Zvcm06ICdzY2FsZVgoMCknLFxuICAgICAgdHJhbnNpdGlvbjogJ3RyYW5zZm9ybSAyMDBtcyBjdWJpYy1iZXppZXIoMC4wLCAwLjAsIDAuMiwgMSkgMG1zLCBiYWNrZ3JvdW5kLWNvbG9yIDIwMG1zIGxpbmVhcicsXG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6ICdyZ2JhKDAsIDAsIDAsIDAuNDIpJyxcbiAgICB9LFxuICAgICcmOmZvY3VzJzoge1xuICAgICAgJyY6OmFmdGVyJzoge1xuICAgICAgICB0cmFuc2Zvcm06ICdzY2FsZVgoMSknLFxuICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IHByaW1hcnksXG4gICAgICAgIGhlaWdodDogJzJweCcsXG4gICAgICB9LFxuICAgIH0sXG4gICAgJyY6aG92ZXInOiB7XG4gICAgICAnJjo6YWZ0ZXInOiB7XG4gICAgICAgIHRyYW5zZm9ybTogJ3NjYWxlWCgxKScsXG4gICAgICAgIGJhY2tncm91bmRDb2xvcjogdGhlbWUucGFsZXR0ZS5jb21tb24uYmxhY2ssXG4gICAgICAgIGhlaWdodDogJzJweCcsXG4gICAgICB9LFxuICAgIH0sXG4gIH0sXG4gIGRpc2FibGVkVW5kZXJsaW5lOiB7XG4gICAgJyY6OmJlZm9yZSc6IHtcbiAgICAgIGRpc3BsYXk6ICdub25lJyxcbiAgICB9LFxuICAgICcmOjphZnRlcic6IHtcbiAgICAgIGRpc3BsYXk6ICdub25lJyxcbiAgICB9LFxuICB9LFxuICBkaXNhYmxlZFNjcm9sbGJhcjoge1xuICAgICcmOjotd2Via2l0LXNjcm9sbGJhcic6IHtcbiAgICAgIGRpc3BsYXk6ICdub25lJyxcbiAgICB9LFxuICAgIHNjcm9sbGJhcldpZHRoOiAnbm9uZScsXG4gICAgJy1tcy1vdmVyZmxvdy1zdHlsZSc6ICdub25lJyxcbiAgfSxcbiAgcmVhZE9ubHk6IHtcbiAgICAnJjo6YmVmb3JlJzoge1xuICAgICAgYmFja2dyb3VuZDogJ3RyYW5zcGFyZW50JyxcbiAgICAgIGJhY2tncm91bmRTaXplOiAnNXB4IDFweCcsXG4gICAgICBiYWNrZ3JvdW5kSW1hZ2U6ICdsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHJnYmEoMCwgMCwgMCwgMC40MikgMzMlLCB0cmFuc3BhcmVudCAwJSknLFxuICAgICAgYmFja2dyb3VuZFJlcGVhdDogJ3JlcGVhdC14JyxcbiAgICAgIGJhY2tncm91bmRQb3NpdGlvbjogJ2xlZnQgdG9wJyxcbiAgICB9LFxuICAgICcmOjphZnRlcic6IHtcbiAgICAgIGxlZnQ6ICcwJyxcbiAgICAgIHJpZ2h0OiAnMCcsXG4gICAgICBib3R0b206ICcwJyxcbiAgICAgIGhlaWdodDogJzFweCcsXG4gICAgICBjb250ZW50OiAnXCJcIicsXG4gICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICAgIHRyYW5zZm9ybTogJ3NjYWxlWCgwKScsXG4gICAgICB0cmFuc2l0aW9uOiAndHJhbnNmb3JtIDIwMG1zIGN1YmljLWJlemllcigwLjAsIDAuMCwgMC4yLCAxKSAwbXMsIGJhY2tncm91bmQtY29sb3IgMG1zIGxpbmVhcicsXG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6ICdyZ2JhKDAsIDAsIDAsIDApJyxcbiAgICB9LFxuICAgICcmOmhvdmVyJzoge1xuICAgICAgJyY6OmFmdGVyJzoge1xuICAgICAgICB0cmFuc2Zvcm06ICdzY2FsZVgoMCknLFxuICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoZW1lLnBhbGV0dGUuY29tbW9uLmJsYWNrLFxuICAgICAgICBoZWlnaHQ6ICcycHgnLFxuICAgICAgfSxcbiAgICB9LFxuICB9LFxuICBlZGl0b3JJbkZvY3VzOiB7XG4gICAgJyY6OmFmdGVyJzoge1xuICAgICAgdHJhbnNmb3JtOiAnc2NhbGVYKDEpJyxcbiAgICAgIGJhY2tncm91bmRDb2xvcjogcHJpbWFyeSxcbiAgICAgIGhlaWdodDogJzJweCcsXG4gICAgfSxcbiAgICAnJjpob3Zlcic6IHtcbiAgICAgICcmOjphZnRlcic6IHtcbiAgICAgICAgYmFja2dyb3VuZENvbG9yOiBwcmltYXJ5LFxuICAgICAgfSxcbiAgICB9LFxuICB9LFxuICBlcnJvcjoge1xuICAgIGJvcmRlcjogYDJweCBzb2xpZCAke3RoZW1lLnBhbGV0dGUuZXJyb3IubWFpbn0gIWltcG9ydGFudGAsXG4gIH0sXG4gIG5vQm9yZGVyOiB7XG4gICAgYm9yZGVyOiAnbm9uZScsXG4gIH0sXG4gIG5vUGFkZGluZzoge1xuICAgIHBhZGRpbmc6IDAsXG4gIH0sXG4gIHRvb2xiYXJPblRvcDoge1xuICAgIG1hcmdpblRvcDogJzQ1cHgnLFxuICB9LFxufSk7XG5cbmNvbnN0IGRlZmF1bHRSZXNwb25zZUFyZWFQcm9wcyA9IHtcbiAgb3B0aW9uczoge30sXG4gIHJlc3BBcmVhVG9vbGJhcjogKCkgPT4ge30sXG4gIG9uSGFuZGxlQXJlYUNoYW5nZTogKCkgPT4ge30sXG59O1xuXG5jb25zdCB2YWx1ZVRvU2l6ZSA9ICh2KSA9PiB7XG4gIGlmICghdikge1xuICAgIHJldHVybjtcbiAgfVxuICBjb25zdCBjYWxjUmVnZXggPSAvXmNhbGNcXCgoLiopXFwpJC87XG5cbiAgaWYgKHR5cGVvZiB2ID09PSAnc3RyaW5nJykge1xuICAgIGlmICh2LmVuZHNXaXRoKCclJykpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfSBlbHNlIGlmIChcbiAgICAgIHYuZW5kc1dpdGgoJ3B4JykgfHxcbiAgICAgIHYuZW5kc1dpdGgoJ3ZoJykgfHxcbiAgICAgIHYuZW5kc1dpdGgoJ3Z3JykgfHxcbiAgICAgIHYuZW5kc1dpdGgoJ2NoJykgfHxcbiAgICAgIHYuZW5kc1dpdGgoJ2VtJykgfHxcbiAgICAgIHYubWF0Y2goY2FsY1JlZ2V4KVxuICAgICkge1xuICAgICAgcmV0dXJuIHY7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gcGFyc2VJbnQodiwgMTApO1xuICAgICAgcmV0dXJuIGlzTmFOKHZhbHVlKSA/IHZhbHVlIDogYCR7dmFsdWV9cHhgO1xuICAgIH1cbiAgfVxuICBpZiAodHlwZW9mIHYgPT09ICdudW1iZXInKSB7XG4gICAgcmV0dXJuIGAke3Z9cHhgO1xuICB9XG59O1xuXG5mdW5jdGlvbiBUaXB0YXBDb250YWluZXIocHJvcHMpIHtcbiAgY29uc3Qge1xuICAgIGVkaXRvcixcbiAgICBlZGl0b3JTdGF0ZSxcbiAgICBjbGFzc2VzLFxuICAgIGNoaWxkcmVuLFxuICAgIGRpc2FibGVVbmRlcmxpbmUsXG4gICAgZGlzYWJsZVNjcm9sbGJhcixcbiAgICB0b29sYmFyT3B0cyxcbiAgICByZXNwb25zZUFyZWFQcm9wcyxcbiAgICBhdXRvRm9jdXMsXG4gICAgbWluV2lkdGgsXG4gICAgd2lkdGgsXG4gICAgbWF4V2lkdGgsXG4gICAgbWluSGVpZ2h0LFxuICAgIGhlaWdodCxcbiAgICBtYXhIZWlnaHQsXG4gIH0gPSBwcm9wcztcbiAgY29uc3QgaG9sZGVyTmFtZXMgPSBjbGFzc05hbWVzKGNsYXNzZXMuZWRpdG9ySG9sZGVyLCB7XG4gICAgW2NsYXNzZXMuZWRpdG9ySW5Gb2N1c106IGVkaXRvclN0YXRlLmlzRm9jdXNlZCxcbiAgICBbY2xhc3Nlcy5yZWFkT25seV06IGVkaXRvclN0YXRlLnJlYWRPbmx5LFxuICAgIFtjbGFzc2VzLmRpc2FibGVkVW5kZXJsaW5lXTogZGlzYWJsZVVuZGVybGluZSxcbiAgICBbY2xhc3Nlcy5kaXNhYmxlZFNjcm9sbGJhcl06IGRpc2FibGVTY3JvbGxiYXIsXG4gIH0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGVkaXRvciAmJiBhdXRvRm9jdXMpIHtcbiAgICAgIFByb21pc2UucmVzb2x2ZSgpLnRoZW4oKCkgPT4ge1xuICAgICAgICBlZGl0b3IuY29tbWFuZHMuZm9jdXMoJ2VuZCcpO1xuICAgICAgfSk7XG4gICAgfVxuICB9LCBbZWRpdG9yLCBhdXRvRm9jdXNdKTtcblxuICBjb25zdCBzaXplU3R5bGUgPSB1c2VNZW1vKCgpID0+IHtcbiAgICByZXR1cm4ge1xuICAgICAgd2lkdGg6IHZhbHVlVG9TaXplKHdpZHRoKSxcbiAgICAgIG1pbldpZHRoOiB2YWx1ZVRvU2l6ZShtaW5XaWR0aCksXG4gICAgICBtYXhXaWR0aDogdmFsdWVUb1NpemUobWF4V2lkdGgpLFxuICAgICAgaGVpZ2h0OiB2YWx1ZVRvU2l6ZShoZWlnaHQpLFxuICAgICAgbWluSGVpZ2h0OiB2YWx1ZVRvU2l6ZShtaW5IZWlnaHQpLFxuICAgICAgbWF4SGVpZ2h0OiB2YWx1ZVRvU2l6ZShtYXhIZWlnaHQpLFxuICAgIH07XG4gIH0sIFttaW5XaWR0aCwgd2lkdGgsIG1heFdpZHRoLCBtaW5IZWlnaHQsIGhlaWdodCwgbWF4SGVpZ2h0XSk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2XG4gICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZXMoXG4gICAgICAgIHtcbiAgICAgICAgICBbY2xhc3Nlcy5ub0JvcmRlcl06IHRvb2xiYXJPcHRzICYmIHRvb2xiYXJPcHRzLm5vQm9yZGVyLFxuICAgICAgICAgIFtjbGFzc2VzLmVycm9yXTogdG9vbGJhck9wdHMgJiYgdG9vbGJhck9wdHMuZXJyb3IsXG4gICAgICAgIH0sXG4gICAgICAgIGNsYXNzZXMucm9vdCxcbiAgICAgICAgcHJvcHMuY2xhc3NOYW1lLFxuICAgICAgKX1cbiAgICAgIHN0eWxlPXt7IHdpZHRoOiBzaXplU3R5bGUud2lkdGgsIG1pbldpZHRoOiBzaXplU3R5bGUubWluV2lkdGgsIG1heFdpZHRoOiBzaXplU3R5bGUubWF4V2lkdGggfX1cbiAgICA+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT17aG9sZGVyTmFtZXN9PlxuICAgICAgICA8ZGl2XG4gICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWVzKFxuICAgICAgICAgICAge1xuICAgICAgICAgICAgICBbY2xhc3Nlcy5ub1BhZGRpbmddOiB0b29sYmFyT3B0cyAmJiB0b29sYmFyT3B0cy5ub1BhZGRpbmcsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgY2xhc3Nlcy5jaGlsZHJlbixcbiAgICAgICAgICApfVxuICAgICAgICA+XG4gICAgICAgICAge2NoaWxkcmVufVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICB7Lyp7ZWRpdG9yU3RhdGUuaXNGb2N1c2VkICYmIDxNZW51QmFyIGVkaXRvcj17ZWRpdG9yfSAvPn0qL31cbiAgICAgIHsvKjxUb29sYmFyIGVkaXRvcj17ZWRpdG9yfSBlZGl0b3JTdGF0ZT17ZWRpdG9yU3RhdGV9IHBsdWdpbnM9e3BsdWdpbnN9IHRvb2xiYXJPcHRzPXt0b29sYmFyT3B0c30gaXNGb2N1c2VkPXtlZGl0b3JTdGF0ZS5pc0ZvY3VzZWR9IC8+Ki99XG4gICAgICB7ZWRpdG9yICYmIChcbiAgICAgICAgPFN0eWxlZE1lbnVCYXJcbiAgICAgICAgICBlZGl0b3I9e2VkaXRvcn1cbiAgICAgICAgICByZXNwb25zZUFyZWFQcm9wcz17cmVzcG9uc2VBcmVhUHJvcHN9XG4gICAgICAgICAgdG9vbGJhck9wdHM9e3Rvb2xiYXJPcHRzfVxuICAgICAgICAgIG9uQ2hhbmdlPXtwcm9wcy5vbkNoYW5nZX1cbiAgICAgICAgLz5cbiAgICAgICl9XG4gICAgPC9kaXY+XG4gICk7XG59XG5cbmNvbnN0IEVkaXRvckNvbnRhaW5lciA9IHdpdGhTdHlsZXMoc3R5bGVzKShUaXB0YXBDb250YWluZXIpO1xuXG5mdW5jdGlvbiBNZW51QmFyKHsgZWRpdG9yLCBjbGFzc2VzLCB0b29sYmFyT3B0czogdG9vbE9wdHMsIHJlc3BvbnNlQXJlYVByb3BzLCBvbkNoYW5nZSB9KSB7XG4gIGNvbnN0IFtzaG93UGlja2VyLCBzZXRTaG93UGlja2VyXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgdG9vbGJhck9wdHMgPSB0b29sT3B0cyA/PyB7fTtcbiAgLy8gUmVhZCB0aGUgY3VycmVudCBlZGl0b3IncyBzdGF0ZSwgYW5kIHJlLXJlbmRlciB0aGUgY29tcG9uZW50IHdoZW4gaXQgY2hhbmdlc1xuICBjb25zdCBlZGl0b3JTdGF0ZSA9IHVzZUVkaXRvclN0YXRlKHtcbiAgICBlZGl0b3IsXG4gICAgc2VsZWN0b3I6IChjdHgpID0+IHtcbiAgICAgIGNvbnN0IHsgc2VsZWN0aW9uIH0gPSBjdHguZWRpdG9yPy5zdGF0ZSB8fCB7fTtcblxuICAgICAgbGV0IGN1cnJlbnROb2RlO1xuXG4gICAgICBpZiAoc2VsZWN0aW9uIGluc3RhbmNlb2YgTm9kZVNlbGVjdGlvbikge1xuICAgICAgICBjdXJyZW50Tm9kZSA9IHNlbGVjdGlvbi5ub2RlOyAvLyB0aGUgc2VsZWN0ZWQgbm9kZVxuICAgICAgfVxuXG4gICAgICBjb25zdCBjdXN0b21Ub29sYmFyQWN0aXZlID1cbiAgICAgICAgY3R4LmVkaXRvcj8uaXNBY3RpdmUoJ21hdGgnKSB8fFxuICAgICAgICBjdHguZWRpdG9yPy5pc0FjdGl2ZSgnZXhwbGljaXRfY29uc3RydWN0ZWRfcmVzcG9uc2UnKSB8fFxuICAgICAgICBjdHguZWRpdG9yPy5pc0FjdGl2ZSgnaW1hZ2VVcGxvYWROb2RlJyk7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGN1cnJlbnROb2RlLFxuICAgICAgICBjdXN0b21Ub29sYmFyQWN0aXZlLFxuICAgICAgICBpc0ZvY3VzZWQ6IGN0eC5lZGl0b3I/LmlzRm9jdXNlZCxcbiAgICAgICAgaXNCb2xkOiBjdHguZWRpdG9yLmlzQWN0aXZlKCdib2xkJykgPz8gZmFsc2UsXG4gICAgICAgIGNhbkJvbGQ6XG4gICAgICAgICAgY3R4LmVkaXRvclxuICAgICAgICAgICAgLmNhbigpXG4gICAgICAgICAgICAuY2hhaW4oKVxuICAgICAgICAgICAgLnRvZ2dsZUJvbGQoKVxuICAgICAgICAgICAgLnJ1bigpID8/IGZhbHNlLFxuICAgICAgICBpc1RhYmxlOiBjdHguZWRpdG9yLmlzQWN0aXZlKCd0YWJsZScpID8/IGZhbHNlLFxuICAgICAgICBjYW5UYWJsZTpcbiAgICAgICAgICBjdHguZWRpdG9yXG4gICAgICAgICAgICAuY2FuKClcbiAgICAgICAgICAgIC5jaGFpbigpXG4gICAgICAgICAgICAuaW5zZXJ0VGFibGUoKVxuICAgICAgICAgICAgLnJ1bigpID8/IGZhbHNlLFxuICAgICAgICBpc0l0YWxpYzogY3R4LmVkaXRvci5pc0FjdGl2ZSgnaXRhbGljJykgPz8gZmFsc2UsXG4gICAgICAgIGNhbkl0YWxpYzpcbiAgICAgICAgICBjdHguZWRpdG9yXG4gICAgICAgICAgICAuY2FuKClcbiAgICAgICAgICAgIC5jaGFpbigpXG4gICAgICAgICAgICAudG9nZ2xlSXRhbGljKClcbiAgICAgICAgICAgIC5ydW4oKSA/PyBmYWxzZSxcbiAgICAgICAgaXNTdHJpa2U6IGN0eC5lZGl0b3IuaXNBY3RpdmUoJ3N0cmlrZScpID8/IGZhbHNlLFxuICAgICAgICBjYW5TdHJpa2U6XG4gICAgICAgICAgY3R4LmVkaXRvclxuICAgICAgICAgICAgLmNhbigpXG4gICAgICAgICAgICAuY2hhaW4oKVxuICAgICAgICAgICAgLnRvZ2dsZVN0cmlrZSgpXG4gICAgICAgICAgICAucnVuKCkgPz8gZmFsc2UsXG4gICAgICAgIGlzQ29kZTogY3R4LmVkaXRvci5pc0FjdGl2ZSgnY29kZScpID8/IGZhbHNlLFxuICAgICAgICBjYW5Db2RlOlxuICAgICAgICAgIGN0eC5lZGl0b3JcbiAgICAgICAgICAgIC5jYW4oKVxuICAgICAgICAgICAgLmNoYWluKClcbiAgICAgICAgICAgIC50b2dnbGVDb2RlKClcbiAgICAgICAgICAgIC5ydW4oKSA/PyBmYWxzZSxcbiAgICAgICAgY2FuQ2xlYXJNYXJrczpcbiAgICAgICAgICBjdHguZWRpdG9yXG4gICAgICAgICAgICAuY2FuKClcbiAgICAgICAgICAgIC5jaGFpbigpXG4gICAgICAgICAgICAudW5zZXRBbGxNYXJrcygpXG4gICAgICAgICAgICAucnVuKCkgPz8gZmFsc2UsXG4gICAgICAgIGlzVW5kZXJsaW5lOiBjdHguZWRpdG9yLmlzQWN0aXZlKCd1bmRlcmxpbmUnKSA/PyBmYWxzZSxcbiAgICAgICAgaXNTdWJTY3JpcHQ6IGN0eC5lZGl0b3IuaXNBY3RpdmUoJ3N1YnNjcmlwdCcpID8/IGZhbHNlLFxuICAgICAgICBpc1N1cGVyU2NyaXB0OiBjdHguZWRpdG9yLmlzQWN0aXZlKCdzdXBlcnNjcmlwdCcpID8/IGZhbHNlLFxuICAgICAgICBpc1BhcmFncmFwaDogY3R4LmVkaXRvci5pc0FjdGl2ZSgncGFyYWdyYXBoJykgPz8gZmFsc2UsXG4gICAgICAgIGlzSGVhZGluZzE6IGN0eC5lZGl0b3IuaXNBY3RpdmUoJ2hlYWRpbmcnLCB7IGxldmVsOiAxIH0pID8/IGZhbHNlLFxuICAgICAgICBpc0hlYWRpbmcyOiBjdHguZWRpdG9yLmlzQWN0aXZlKCdoZWFkaW5nJywgeyBsZXZlbDogMiB9KSA/PyBmYWxzZSxcbiAgICAgICAgaXNIZWFkaW5nMzogY3R4LmVkaXRvci5pc0FjdGl2ZSgnaGVhZGluZycsIHsgbGV2ZWw6IDMgfSkgPz8gZmFsc2UsXG4gICAgICAgIGlzSGVhZGluZzQ6IGN0eC5lZGl0b3IuaXNBY3RpdmUoJ2hlYWRpbmcnLCB7IGxldmVsOiA0IH0pID8/IGZhbHNlLFxuICAgICAgICBpc0hlYWRpbmc1OiBjdHguZWRpdG9yLmlzQWN0aXZlKCdoZWFkaW5nJywgeyBsZXZlbDogNSB9KSA/PyBmYWxzZSxcbiAgICAgICAgaXNIZWFkaW5nNjogY3R4LmVkaXRvci5pc0FjdGl2ZSgnaGVhZGluZycsIHsgbGV2ZWw6IDYgfSkgPz8gZmFsc2UsXG4gICAgICAgIGlzQnVsbGV0TGlzdDogY3R4LmVkaXRvci5pc0FjdGl2ZSgnYnVsbGV0TGlzdCcpID8/IGZhbHNlLFxuICAgICAgICBpc09yZGVyZWRMaXN0OiBjdHguZWRpdG9yLmlzQWN0aXZlKCdvcmRlcmVkTGlzdCcpID8/IGZhbHNlLFxuICAgICAgICBpc0NvZGVCbG9jazogY3R4LmVkaXRvci5pc0FjdGl2ZSgnY29kZUJsb2NrJykgPz8gZmFsc2UsXG4gICAgICAgIGlzQmxvY2txdW90ZTogY3R4LmVkaXRvci5pc0FjdGl2ZSgnYmxvY2txdW90ZScpID8/IGZhbHNlLFxuICAgICAgICBjYW5VbmRvOlxuICAgICAgICAgIGN0eC5lZGl0b3JcbiAgICAgICAgICAgIC5jYW4oKVxuICAgICAgICAgICAgLmNoYWluKClcbiAgICAgICAgICAgIC51bmRvKClcbiAgICAgICAgICAgIC5ydW4oKSA/PyBmYWxzZSxcbiAgICAgICAgY2FuUmVkbzpcbiAgICAgICAgICBjdHguZWRpdG9yXG4gICAgICAgICAgICAuY2FuKClcbiAgICAgICAgICAgIC5jaGFpbigpXG4gICAgICAgICAgICAucmVkbygpXG4gICAgICAgICAgICAucnVuKCkgPz8gZmFsc2UsXG4gICAgICB9O1xuICAgIH0sXG4gIH0pO1xuICBjb25zdCBoYXNEb25lQnV0dG9uID0gZmFsc2U7XG4gIGNvbnN0IGF1dG9XaWR0aCA9IGZhbHNlO1xuXG4gIGNvbnN0IG5hbWVzID0gY2xhc3NOYW1lcyhjbGFzc2VzLnRvb2xiYXIsIFBJRV9UT09MQkFSX19DTEFTUywge1xuICAgIFtjbGFzc2VzLnRvb2xiYXJXaXRoTm9Eb25lXTogIWhhc0RvbmVCdXR0b24sXG4gICAgW2NsYXNzZXMudG9vbGJhclRvcF06IHRvb2xiYXJPcHRzLnBvc2l0aW9uID09PSAndG9wJyxcbiAgICBbY2xhc3Nlcy50b29sYmFyUmlnaHRdOiB0b29sYmFyT3B0cy5hbGlnbm1lbnQgPT09ICdyaWdodCcsXG4gICAgW2NsYXNzZXMuZm9jdXNlZF06IHRvb2xiYXJPcHRzLmFsd2F5c1Zpc2libGUgfHwgKGVkaXRvclN0YXRlLmlzRm9jdXNlZCAmJiAhZWRpdG9yLl90b29sYmFyT3BlbmVkKSxcbiAgICBbY2xhc3Nlcy5hdXRvV2lkdGhdOiBhdXRvV2lkdGgsXG4gICAgW2NsYXNzZXMuZnVsbFdpZHRoXTogIWF1dG9XaWR0aCxcbiAgICBbY2xhc3Nlcy5oaWRkZW5dOiB0b29sYmFyT3B0cy5pc0hpZGRlbiA9PT0gdHJ1ZSxcbiAgfSk7XG4gIGNvbnN0IGN1c3RvbVN0eWxlcyA9IHRvb2xiYXJPcHRzLm1pbldpZHRoICE9PSB1bmRlZmluZWQgPyB7IG1pbldpZHRoOiB0b29sYmFyT3B0cy5taW5XaWR0aCB9IDoge307XG4gIGNvbnN0IGhhbmRsZU1vdXNlRG93biA9IChlKSA9PiB7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICB9O1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9e25hbWVzfSBzdHlsZT17eyAuLi5jdXN0b21TdHlsZXMgfX0gb25Nb3VzZURvd249e2hhbmRsZU1vdXNlRG93bn0+XG4gICAgICB7IWVkaXRvclN0YXRlLmN1c3RvbVRvb2xiYXJBY3RpdmUgJiYgKFxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT17Y2xhc3Nlcy5kZWZhdWx0VG9vbGJhcn0gdGFiSW5kZXg9XCIxXCI+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9e2NsYXNzZXMuYnV0dG9uc0NvbnRhaW5lcn0+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIG9uQ2xpY2s9eyhlKSA9PiB7XG4gICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIGVkaXRvclxuICAgICAgICAgICAgICAgICAgLmNoYWluKClcbiAgICAgICAgICAgICAgICAgIC5mb2N1cygpXG4gICAgICAgICAgICAgICAgICAuaW5zZXJ0VGFibGUoKVxuICAgICAgICAgICAgICAgICAgLnJ1bigpO1xuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICBkaXNhYmxlZD17IWVkaXRvclN0YXRlLmNhblRhYmxlfVxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZXMoY2xhc3Nlcy5idXR0b24sIHsgW2NsYXNzZXMuYWN0aXZlXTogZWRpdG9yU3RhdGUuaXNUYWJsZSB9KX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPEdyaWRPbiAvPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIG9uQ2xpY2s9eyhlKSA9PiB7XG4gICAgICAgICAgICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgICAgICAgIGVkaXRvclxuICAgICAgICAgICAgICAgICAgLmNoYWluKClcbiAgICAgICAgICAgICAgICAgIC5mb2N1cygpXG4gICAgICAgICAgICAgICAgICAudG9nZ2xlQm9sZCgpXG4gICAgICAgICAgICAgICAgICAucnVuKCk7XG4gICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgIGRpc2FibGVkPXshZWRpdG9yU3RhdGUuY2FuQm9sZH1cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWVzKGNsYXNzZXMuYnV0dG9uLCB7IFtjbGFzc2VzLmFjdGl2ZV06IGVkaXRvclN0YXRlLmlzQm9sZCB9KX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPEJvbGQgLz5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PlxuICAgICAgICAgICAgICAgIGVkaXRvclxuICAgICAgICAgICAgICAgICAgLmNoYWluKClcbiAgICAgICAgICAgICAgICAgIC5mb2N1cygpXG4gICAgICAgICAgICAgICAgICAudG9nZ2xlSXRhbGljKClcbiAgICAgICAgICAgICAgICAgIC5ydW4oKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGRpc2FibGVkPXshZWRpdG9yU3RhdGUuY2FuSXRhbGljfVxuICAgICAgICAgICAgICBhY3RpdmU9e2VkaXRvclN0YXRlLmlzSXRhbGljfVxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZXMoY2xhc3Nlcy5idXR0b24sIHsgW2NsYXNzZXMuYWN0aXZlXTogZWRpdG9yU3RhdGUuaXNJdGFsaWMgfSl9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxJdGFsaWMgLz5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PlxuICAgICAgICAgICAgICAgIGVkaXRvclxuICAgICAgICAgICAgICAgICAgLmNoYWluKClcbiAgICAgICAgICAgICAgICAgIC5mb2N1cygpXG4gICAgICAgICAgICAgICAgICAudG9nZ2xlU3RyaWtlKClcbiAgICAgICAgICAgICAgICAgIC5ydW4oKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGRpc2FibGVkPXshZWRpdG9yU3RhdGUuY2FuU3RyaWtlfVxuICAgICAgICAgICAgICBhY3RpdmU9e2VkaXRvclN0YXRlLmlzU3RyaWtlfVxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZXMoY2xhc3Nlcy5idXR0b24sIHsgW2NsYXNzZXMuYWN0aXZlXTogZWRpdG9yU3RhdGUuaXNTdHJpa2UgfSl9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxTdHJpa2V0aHJvdWdoIC8+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT5cbiAgICAgICAgICAgICAgICBlZGl0b3JcbiAgICAgICAgICAgICAgICAgIC5jaGFpbigpXG4gICAgICAgICAgICAgICAgICAuZm9jdXMoKVxuICAgICAgICAgICAgICAgICAgLnRvZ2dsZUNvZGUoKVxuICAgICAgICAgICAgICAgICAgLnJ1bigpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgZGlzYWJsZWQ9eyFlZGl0b3JTdGF0ZS5jYW5Db2RlfVxuICAgICAgICAgICAgICBhY3RpdmU9e2VkaXRvclN0YXRlLmlzQ29kZX1cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWVzKGNsYXNzZXMuYnV0dG9uLCB7IFtjbGFzc2VzLmFjdGl2ZV06IGVkaXRvclN0YXRlLmlzQ29kZSB9KX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPENvZGUgLz5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgey8qPGJ1dHRvbiovfVxuICAgICAgICAgICAgey8qICBvbkNsaWNrPXsoKSA9PiovfVxuICAgICAgICAgICAgey8qICAgIGVkaXRvciovfVxuICAgICAgICAgICAgey8qICAgICAgLmNoYWluKCkqL31cbiAgICAgICAgICAgIHsvKiAgICAgIC5mb2N1cygpKi99XG4gICAgICAgICAgICB7LyogICAgICAudW5zZXRBbGxNYXJrcygpKi99XG4gICAgICAgICAgICB7LyogICAgICAucnVuKCkqL31cbiAgICAgICAgICAgIHsvKiAgfSovfVxuICAgICAgICAgICAgey8qPiovfVxuICAgICAgICAgICAgey8qICBDbGVhciBtYXJrcyovfVxuICAgICAgICAgICAgey8qPC9idXR0b24+Ki99XG4gICAgICAgICAgICB7Lyo8YnV0dG9uKi99XG4gICAgICAgICAgICB7LyogIG9uQ2xpY2s9eygpID0+Ki99XG4gICAgICAgICAgICB7LyogICAgZWRpdG9yKi99XG4gICAgICAgICAgICB7LyogICAgICAuY2hhaW4oKSovfVxuICAgICAgICAgICAgey8qICAgICAgLmZvY3VzKCkqL31cbiAgICAgICAgICAgIHsvKiAgICAgIC5jbGVhck5vZGVzKCkqL31cbiAgICAgICAgICAgIHsvKiAgICAgIC5ydW4oKSovfVxuICAgICAgICAgICAgey8qICB9Ki99XG4gICAgICAgICAgICB7Lyo+Ki99XG4gICAgICAgICAgICB7LyogIENsZWFyIG5vZGVzKi99XG4gICAgICAgICAgICB7Lyo8L2J1dHRvbj4qL31cbiAgICAgICAgICAgIHsvKjxidXR0b24qL31cbiAgICAgICAgICAgIHsvKiAgb25DbGljaz17KCkgPT4qL31cbiAgICAgICAgICAgIHsvKiAgICBlZGl0b3IqL31cbiAgICAgICAgICAgIHsvKiAgICAgIC5jaGFpbigpKi99XG4gICAgICAgICAgICB7LyogICAgICAuZm9jdXMoKSovfVxuICAgICAgICAgICAgey8qICAgICAgLnNldFBhcmFncmFwaCgpKi99XG4gICAgICAgICAgICB7LyogICAgICAucnVuKCkqL31cbiAgICAgICAgICAgIHsvKiAgfSovfVxuICAgICAgICAgICAgey8qICBjbGFzc05hbWU9e2VkaXRvclN0YXRlLmlzUGFyYWdyYXBoID8gY2xhc3Nlcy5pc0FjdGl2ZSA6ICcnfSovfVxuICAgICAgICAgICAgey8qPiovfVxuICAgICAgICAgICAgey8qICBQYXJhZ3JhcGgqL31cbiAgICAgICAgICAgIHsvKjwvYnV0dG9uPiovfVxuICAgICAgICAgICAgey8qPGJ1dHRvbiovfVxuICAgICAgICAgICAgey8qICBvbkNsaWNrPXsoKSA9PiovfVxuICAgICAgICAgICAgey8qICAgIGVkaXRvciovfVxuICAgICAgICAgICAgey8qICAgICAgLmNoYWluKCkqL31cbiAgICAgICAgICAgIHsvKiAgICAgIC5mb2N1cygpKi99XG4gICAgICAgICAgICB7LyogICAgICAudG9nZ2xlSGVhZGluZyh7IGxldmVsOiAxIH0pKi99XG4gICAgICAgICAgICB7LyogICAgICAucnVuKCkqL31cbiAgICAgICAgICAgIHsvKiAgfSovfVxuICAgICAgICAgICAgey8qICBjbGFzc05hbWU9e2VkaXRvclN0YXRlLmlzSGVhZGluZzEgPyBjbGFzc2VzLmlzQWN0aXZlIDogJyd9Ki99XG4gICAgICAgICAgICB7Lyo+Ki99XG4gICAgICAgICAgICB7LyogIEgxKi99XG4gICAgICAgICAgICB7Lyo8L2J1dHRvbj4qL31cbiAgICAgICAgICAgIHsvKjxidXR0b24qL31cbiAgICAgICAgICAgIHsvKiAgb25DbGljaz17KCkgPT4qL31cbiAgICAgICAgICAgIHsvKiAgICBlZGl0b3IqL31cbiAgICAgICAgICAgIHsvKiAgICAgIC5jaGFpbigpKi99XG4gICAgICAgICAgICB7LyogICAgICAuZm9jdXMoKSovfVxuICAgICAgICAgICAgey8qICAgICAgLnRvZ2dsZUhlYWRpbmcoeyBsZXZlbDogMiB9KSovfVxuICAgICAgICAgICAgey8qICAgICAgLnJ1bigpKi99XG4gICAgICAgICAgICB7LyogIH0qL31cbiAgICAgICAgICAgIHsvKiAgY2xhc3NOYW1lPXtlZGl0b3JTdGF0ZS5pc0hlYWRpbmcyID8gY2xhc3Nlcy5pc0FjdGl2ZSA6ICcnfSovfVxuICAgICAgICAgICAgey8qPiovfVxuICAgICAgICAgICAgey8qICBIMiovfVxuICAgICAgICAgICAgey8qPC9idXR0b24+Ki99XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+XG4gICAgICAgICAgICAgICAgZWRpdG9yXG4gICAgICAgICAgICAgICAgICAuY2hhaW4oKVxuICAgICAgICAgICAgICAgICAgLmZvY3VzKClcbiAgICAgICAgICAgICAgICAgIC50b2dnbGVVbmRlcmxpbmUoKVxuICAgICAgICAgICAgICAgICAgLnJ1bigpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWVzKGNsYXNzZXMuYnV0dG9uLCB7IFtjbGFzc2VzLmFjdGl2ZV06IGVkaXRvclN0YXRlLmlzVW5kZXJsaW5lIH0pfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8VW5kZXJsaW5lIC8+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT5cbiAgICAgICAgICAgICAgICBlZGl0b3JcbiAgICAgICAgICAgICAgICAgIC5jaGFpbigpXG4gICAgICAgICAgICAgICAgICAuZm9jdXMoKVxuICAgICAgICAgICAgICAgICAgLnRvZ2dsZVN1YnNjcmlwdCgpXG4gICAgICAgICAgICAgICAgICAucnVuKClcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZXMoY2xhc3Nlcy5idXR0b24sIHsgW2NsYXNzZXMuYWN0aXZlXTogZWRpdG9yU3RhdGUuaXNTdWJTY3JpcHQgfSl9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxTdWJzY3JpcHRJY29uIC8+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT5cbiAgICAgICAgICAgICAgICBlZGl0b3JcbiAgICAgICAgICAgICAgICAgIC5jaGFpbigpXG4gICAgICAgICAgICAgICAgICAuZm9jdXMoKVxuICAgICAgICAgICAgICAgICAgLnRvZ2dsZVN1cGVyc2NyaXB0KClcbiAgICAgICAgICAgICAgICAgIC5ydW4oKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lcyhjbGFzc2VzLmJ1dHRvbiwgeyBbY2xhc3Nlcy5hY3RpdmVdOiBlZGl0b3JTdGF0ZS5pc1N1cGVyU2NyaXB0IH0pfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8U3VwZXJzY3JpcHRJY29uIC8+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT5cbiAgICAgICAgICAgICAgICBlZGl0b3JcbiAgICAgICAgICAgICAgICAgIC5jaGFpbigpXG4gICAgICAgICAgICAgICAgICAuZm9jdXMoKVxuICAgICAgICAgICAgICAgICAgLnNldEltYWdlVXBsb2FkTm9kZSgpXG4gICAgICAgICAgICAgICAgICAucnVuKClcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZXMoY2xhc3Nlcy5idXR0b24sIHsgW2NsYXNzZXMuYWN0aXZlXTogZWRpdG9yU3RhdGUuaXNTdXBlclNjcmlwdCB9KX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPEltYWdlSWNvbiAvPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+XG4gICAgICAgICAgICAgICAgZWRpdG9yXG4gICAgICAgICAgICAgICAgICAuY2hhaW4oKVxuICAgICAgICAgICAgICAgICAgLmZvY3VzKClcbiAgICAgICAgICAgICAgICAgIC5pbnNlcnRNZWRpYSh7XG4gICAgICAgICAgICAgICAgICAgIHRhZzogJ3ZpZGVvJyxcbiAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAucnVuKClcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZXMoY2xhc3Nlcy5idXR0b24pfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8VGhlYXRlcnNJY29uIC8+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT5cbiAgICAgICAgICAgICAgICBlZGl0b3JcbiAgICAgICAgICAgICAgICAgIC5jaGFpbigpXG4gICAgICAgICAgICAgICAgICAuZm9jdXMoKVxuICAgICAgICAgICAgICAgICAgLmluc2VydE1lZGlhKHtcbiAgICAgICAgICAgICAgICAgICAgdGFnOiAnYXVkaW8nLFxuICAgICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgICAgICAgIC5ydW4oKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lcyhjbGFzc2VzLmJ1dHRvbil9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxWb2x1bWVVcEljb24gLz5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PlxuICAgICAgICAgICAgICAgIGVkaXRvci5jb21tYW5kcy5vcGVuQ1NTQ2xhc3NEaWFsb2coKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lcyhjbGFzc2VzLmJ1dHRvbil9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxDU1NJY29uIC8+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT5cbiAgICAgICAgICAgICAgICBlZGl0b3JcbiAgICAgICAgICAgICAgICAgIC5jaGFpbigpXG4gICAgICAgICAgICAgICAgICAuZm9jdXMoKVxuICAgICAgICAgICAgICAgICAgLnRvZ2dsZUhlYWRpbmcoeyBsZXZlbDogMyB9KVxuICAgICAgICAgICAgICAgICAgLnJ1bigpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWVzKGNsYXNzZXMuYnV0dG9uLCB7IFtjbGFzc2VzLmFjdGl2ZV06IGVkaXRvclN0YXRlLmlzSGVhZGluZzMgfSl9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxIZWFkaW5nSWNvbiAvPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICB7Lyo8YnV0dG9uKi99XG4gICAgICAgICAgICB7LyogIG9uQ2xpY2s9eygpID0+Ki99XG4gICAgICAgICAgICB7LyogICAgZWRpdG9yKi99XG4gICAgICAgICAgICB7LyogICAgICAuY2hhaW4oKSovfVxuICAgICAgICAgICAgey8qICAgICAgLmZvY3VzKCkqL31cbiAgICAgICAgICAgIHsvKiAgICAgIC50b2dnbGVIZWFkaW5nKHsgbGV2ZWw6IDMgfSkqL31cbiAgICAgICAgICAgIHsvKiAgICAgIC5ydW4oKSovfVxuICAgICAgICAgICAgey8qICB9Ki99XG4gICAgICAgICAgICB7LyogIGNsYXNzTmFtZT17Y2xhc3NOYW1lcyhjbGFzc2VzLmJ1dHRvbiwgeyBbY2xhc3Nlcy5hY3RpdmVdOiBlZGl0b3JTdGF0ZS5pc0hlYWRpbmczIH0pfSovfVxuICAgICAgICAgICAgey8qPiovfVxuICAgICAgICAgICAgey8qICA8SW1hZ2UgLz4qL31cbiAgICAgICAgICAgIHsvKjwvYnV0dG9uPiovfVxuICAgICAgICAgICAgey8qPGJ1dHRvbiovfVxuICAgICAgICAgICAgey8qICBvbkNsaWNrPXsoKSA9PiovfVxuICAgICAgICAgICAgey8qICAgIGVkaXRvciovfVxuICAgICAgICAgICAgey8qICAgICAgLmNoYWluKCkqL31cbiAgICAgICAgICAgIHsvKiAgICAgIC5mb2N1cygpKi99XG4gICAgICAgICAgICB7LyogICAgICAudG9nZ2xlSGVhZGluZyh7IGxldmVsOiA0IH0pKi99XG4gICAgICAgICAgICB7LyogICAgICAucnVuKCkqL31cbiAgICAgICAgICAgIHsvKiAgfSovfVxuICAgICAgICAgICAgey8qICBjbGFzc05hbWU9e2VkaXRvclN0YXRlLmlzSGVhZGluZzQgPyBjbGFzc2VzLmlzQWN0aXZlIDogJyd9Ki99XG4gICAgICAgICAgICB7Lyo+Ki99XG4gICAgICAgICAgICB7LyogIEg0Ki99XG4gICAgICAgICAgICB7Lyo8L2J1dHRvbj4qL31cbiAgICAgICAgICAgIHsvKjxidXR0b24qL31cbiAgICAgICAgICAgIHsvKiAgb25DbGljaz17KCkgPT4qL31cbiAgICAgICAgICAgIHsvKiAgICBlZGl0b3IqL31cbiAgICAgICAgICAgIHsvKiAgICAgIC5jaGFpbigpKi99XG4gICAgICAgICAgICB7LyogICAgICAuZm9jdXMoKSovfVxuICAgICAgICAgICAgey8qICAgICAgLnRvZ2dsZUhlYWRpbmcoeyBsZXZlbDogNSB9KSovfVxuICAgICAgICAgICAgey8qICAgICAgLnJ1bigpKi99XG4gICAgICAgICAgICB7LyogIH0qL31cbiAgICAgICAgICAgIHsvKiAgY2xhc3NOYW1lPXtlZGl0b3JTdGF0ZS5pc0hlYWRpbmc1ID8gY2xhc3Nlcy5pc0FjdGl2ZSA6ICcnfSovfVxuICAgICAgICAgICAgey8qPiovfVxuICAgICAgICAgICAgey8qICBINSovfVxuICAgICAgICAgICAgey8qPC9idXR0b24+Ki99XG4gICAgICAgICAgICB7Lyo8YnV0dG9uKi99XG4gICAgICAgICAgICB7LyogIG9uQ2xpY2s9eygpID0+Ki99XG4gICAgICAgICAgICB7LyogICAgZWRpdG9yKi99XG4gICAgICAgICAgICB7LyogICAgICAuY2hhaW4oKSovfVxuICAgICAgICAgICAgey8qICAgICAgLmZvY3VzKCkqL31cbiAgICAgICAgICAgIHsvKiAgICAgIC50b2dnbGVIZWFkaW5nKHsgbGV2ZWw6IDYgfSkqL31cbiAgICAgICAgICAgIHsvKiAgICAgIC5ydW4oKSovfVxuICAgICAgICAgICAgey8qICB9Ki99XG4gICAgICAgICAgICB7LyogIGNsYXNzTmFtZT17ZWRpdG9yU3RhdGUuaXNIZWFkaW5nNiA/IGNsYXNzZXMuaXNBY3RpdmUgOiAnJ30qL31cbiAgICAgICAgICAgIHsvKj4qL31cbiAgICAgICAgICAgIHsvKiAgSDYqL31cbiAgICAgICAgICAgIHsvKjwvYnV0dG9uPiovfVxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PlxuICAgICAgICAgICAgICAgIGVkaXRvclxuICAgICAgICAgICAgICAgICAgLmNoYWluKClcbiAgICAgICAgICAgICAgICAgIC5mb2N1cygpXG4gICAgICAgICAgICAgICAgICAuaW5zZXJ0TWF0aCgnJylcbiAgICAgICAgICAgICAgICAgIC5ydW4oKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3Nlcy5idXR0b259XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxGdW5jdGlvbnMgLz5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvbiBvbkNsaWNrPXsoKSA9PiBzZXRTaG93UGlja2VyKHNwYW5pc2hDb25maWcpfSBjbGFzc05hbWU9e2NsYXNzZXMuYnV0dG9ufT5cbiAgICAgICAgICAgICAgPENoYXJhY3Rlckljb24gbGV0dGVyPVwiw7FcIiAvPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uIG9uQ2xpY2s9eygpID0+IHNldFNob3dQaWNrZXIoc3BlY2lhbENvbmZpZyl9IGNsYXNzTmFtZT17Y2xhc3Nlcy5idXR0b259PlxuICAgICAgICAgICAgICA8Q2hhcmFjdGVySWNvbiBsZXR0ZXI9XCLigqxcIiAvPlxuICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICA8YnV0dG9uIG9uQ2xpY2s9eygpID0+IHt9fSBjbGFzc05hbWU9e2NsYXNzZXMuYnV0dG9ufT5cbiAgICAgICAgICAgICAgPFRleHRBbGlnbkljb24gZWRpdG9yPXtlZGl0b3J9IC8+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT5cbiAgICAgICAgICAgICAgICBlZGl0b3JcbiAgICAgICAgICAgICAgICAgIC5jaGFpbigpXG4gICAgICAgICAgICAgICAgICAuZm9jdXMoKVxuICAgICAgICAgICAgICAgICAgLnRvZ2dsZUJ1bGxldExpc3QoKVxuICAgICAgICAgICAgICAgICAgLnJ1bigpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWVzKGNsYXNzZXMuYnV0dG9uLCB7IFtjbGFzc2VzLmFjdGl2ZV06IGVkaXRvclN0YXRlLmlzQnVsbGV0TGlzdCB9KX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPEJ1bGxldGVkTGlzdEljb24gLz5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PlxuICAgICAgICAgICAgICAgIGVkaXRvclxuICAgICAgICAgICAgICAgICAgLmNoYWluKClcbiAgICAgICAgICAgICAgICAgIC5mb2N1cygpXG4gICAgICAgICAgICAgICAgICAudG9nZ2xlT3JkZXJlZExpc3QoKVxuICAgICAgICAgICAgICAgICAgLnJ1bigpXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWVzKGNsYXNzZXMuYnV0dG9uLCB7IFtjbGFzc2VzLmFjdGl2ZV06IGVkaXRvclN0YXRlLmlzT3JkZXJlZExpc3QgfSl9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxOdW1iZXJlZExpc3RJY29uIC8+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIHsvKjxidXR0b24qL31cbiAgICAgICAgICAgIHsvKiAgb25DbGljaz17KCkgPT4qL31cbiAgICAgICAgICAgIHsvKiAgICBlZGl0b3IqL31cbiAgICAgICAgICAgIHsvKiAgICAgIC5jaGFpbigpKi99XG4gICAgICAgICAgICB7LyogICAgICAuZm9jdXMoKSovfVxuICAgICAgICAgICAgey8qICAgICAgLnRvZ2dsZUNvZGVCbG9jaygpKi99XG4gICAgICAgICAgICB7LyogICAgICAucnVuKCkqL31cbiAgICAgICAgICAgIHsvKiAgfSovfVxuICAgICAgICAgICAgey8qICBjbGFzc05hbWU9e2NsYXNzTmFtZXMoY2xhc3Nlcy5idXR0b24sIHsgW2NsYXNzZXMuYWN0aXZlXTogZWRpdG9yU3RhdGUuaXNDb2RlQmxvY2sgfSl9Ki99XG4gICAgICAgICAgICB7Lyo+Ki99XG4gICAgICAgICAgICB7LyogIENvZGUgYmxvY2sqL31cbiAgICAgICAgICAgIHsvKjwvYnV0dG9uPiovfVxuICAgICAgICAgICAgey8qPGJ1dHRvbiovfVxuICAgICAgICAgICAgey8qICBvbkNsaWNrPXsoKSA9PiovfVxuICAgICAgICAgICAgey8qICAgIGVkaXRvciovfVxuICAgICAgICAgICAgey8qICAgICAgLmNoYWluKCkqL31cbiAgICAgICAgICAgIHsvKiAgICAgIC5mb2N1cygpKi99XG4gICAgICAgICAgICB7LyogICAgICAudG9nZ2xlQmxvY2txdW90ZSgpKi99XG4gICAgICAgICAgICB7LyogICAgICAucnVuKCkqL31cbiAgICAgICAgICAgIHsvKiAgfSovfVxuICAgICAgICAgICAgey8qICBjbGFzc05hbWU9e2NsYXNzTmFtZXMoY2xhc3Nlcy5idXR0b24sIHsgW2NsYXNzZXMuYWN0aXZlXTogZWRpdG9yU3RhdGUuaXNCbG9ja3F1b3RlIH0pfSovfVxuICAgICAgICAgICAgey8qPiovfVxuICAgICAgICAgICAgey8qICBCbG9ja3F1b3RlKi99XG4gICAgICAgICAgICB7Lyo8L2J1dHRvbj4qL31cbiAgICAgICAgICAgIHsvKjxidXR0b24qL31cbiAgICAgICAgICAgIHsvKiAgb25DbGljaz17KCkgPT4qL31cbiAgICAgICAgICAgIHsvKiAgICBlZGl0b3IqL31cbiAgICAgICAgICAgIHsvKiAgICAgIC5jaGFpbigpKi99XG4gICAgICAgICAgICB7LyogICAgICAuZm9jdXMoKSovfVxuICAgICAgICAgICAgey8qICAgICAgLnNldEhvcml6b250YWxSdWxlKCkqL31cbiAgICAgICAgICAgIHsvKiAgICAgIC5ydW4oKSovfVxuICAgICAgICAgICAgey8qICB9Ki99XG4gICAgICAgICAgICB7Lyo+Ki99XG4gICAgICAgICAgICB7LyogIEhvcml6b250YWwgcnVsZSovfVxuICAgICAgICAgICAgey8qPC9idXR0b24+Ki99XG4gICAgICAgICAgICB7Lyo8YnV0dG9uKi99XG4gICAgICAgICAgICB7LyogIG9uQ2xpY2s9eygpID0+Ki99XG4gICAgICAgICAgICB7LyogICAgZWRpdG9yKi99XG4gICAgICAgICAgICB7LyogICAgICAuY2hhaW4oKSovfVxuICAgICAgICAgICAgey8qICAgICAgLmZvY3VzKCkqL31cbiAgICAgICAgICAgIHsvKiAgICAgIC5zZXRIYXJkQnJlYWsoKSovfVxuICAgICAgICAgICAgey8qICAgICAgLnJ1bigpKi99XG4gICAgICAgICAgICB7LyogIH0qL31cbiAgICAgICAgICAgIHsvKj4qL31cbiAgICAgICAgICAgIHsvKiAgSGFyZCBicmVhayovfVxuICAgICAgICAgICAgey8qPC9idXR0b24+Ki99XG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+XG4gICAgICAgICAgICAgICAgZWRpdG9yXG4gICAgICAgICAgICAgICAgICAuY2hhaW4oKVxuICAgICAgICAgICAgICAgICAgLmZvY3VzKClcbiAgICAgICAgICAgICAgICAgIC51bmRvKClcbiAgICAgICAgICAgICAgICAgIC5ydW4oKVxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIGRpc2FibGVkPXshZWRpdG9yU3RhdGUuY2FuVW5kb31cbiAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc2VzLmJ1dHRvbn1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPFVuZG8gLz5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PlxuICAgICAgICAgICAgICAgIGVkaXRvclxuICAgICAgICAgICAgICAgICAgLmNoYWluKClcbiAgICAgICAgICAgICAgICAgIC5mb2N1cygpXG4gICAgICAgICAgICAgICAgICAucmVkbygpXG4gICAgICAgICAgICAgICAgICAucnVuKClcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICBkaXNhYmxlZD17IWVkaXRvclN0YXRlLmNhblJlZG99XG4gICAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3Nlcy5idXR0b259XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxSZWRvIC8+XG4gICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgICAgICAgIGVkaXRvclxuICAgICAgICAgICAgICAgIC5jaGFpbigpXG4gICAgICAgICAgICAgICAgLmZvY3VzKClcbiAgICAgICAgICAgICAgICAuaW5zZXJ0UmVzcG9uc2VBcmVhKHJlc3BvbnNlQXJlYVByb3BzLnR5cGUpXG4gICAgICAgICAgICAgICAgLnJ1bigpO1xuICAgICAgICAgICAgfX1cbiAgICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3Nlcy5idXR0b259XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPFRvb2xiYXJJY29uIC8+XG4gICAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgICA8RG9uZUJ1dHRvblxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICBvbkNoYW5nZT8uKGVkaXRvci5nZXRIVE1MKCkpO1xuICAgICAgICAgICAgICBlZGl0b3IuY29tbWFuZHMuYmx1cigpO1xuICAgICAgICAgICAgfX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICl9XG4gICAgICB7c2hvd1BpY2tlciAmJiAoXG4gICAgICAgIDxDaGFyYWN0ZXJQaWNrZXJcbiAgICAgICAgICBlZGl0b3I9e2VkaXRvcn1cbiAgICAgICAgICBvcHRzPXt7XG4gICAgICAgICAgICAuLi5zaG93UGlja2VyLFxuICAgICAgICAgICAgcmVuZGVyUG9wT3ZlcjogKGV2LCBjaCkgPT4gY29uc29sZS5sb2coJ1Nob3cgcG9wb3ZlcicsIGNoKSxcbiAgICAgICAgICAgIGNsb3NlUG9wT3ZlcjogKCkgPT4gY29uc29sZS5sb2coJ0Nsb3NlIHBvcG92ZXInKSxcbiAgICAgICAgICB9fVxuICAgICAgICAgIG9uQ2xvc2U9eygpID0+IHNldFNob3dQaWNrZXIoZmFsc2UpfVxuICAgICAgICAvPlxuICAgICAgKX1cbiAgICA8L2Rpdj5cbiAgKTtcbn1cblxuY29uc3Qgc3R5bGUgPSAodGhlbWUpID0+ICh7XG4gIGRlZmF1bHRUb29sYmFyOiB7XG4gICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgIHdpZHRoOiAnMTAwJScsXG4gICAganVzdGlmeUNvbnRlbnQ6ICdzcGFjZS1iZXR3ZWVuJyxcbiAgfSxcbiAgYnV0dG9uc0NvbnRhaW5lcjoge1xuICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICB3aWR0aDogJzEwMCUnLFxuICB9LFxuICBidXR0b246IHtcbiAgICBjb2xvcjogJ2dyZXknLFxuICAgIGRpc3BsYXk6ICdpbmxpbmUtZmxleCcsXG4gICAgcGFkZGluZzogJzJweCcsXG4gICAgYmFja2dyb3VuZDogJ25vbmUnLFxuICAgIGJvcmRlcjogJ25vbmUnLFxuICAgIGN1cnNvcjogJ3BvaW50ZXInLFxuICAgICcmOmhvdmVyJzoge1xuICAgICAgY29sb3I6ICdibGFjaycsXG4gICAgfSxcbiAgICAnJjpmb2N1cyc6IHtcbiAgICAgIG91dGxpbmU6IGAycHggc29saWQgJHt0aGVtZS5wYWxldHRlLmdyZXlbNzAwXX1gLFxuICAgIH0sXG4gIH0sXG4gIGFjdGl2ZToge1xuICAgIGNvbG9yOiAnYmxhY2snLFxuICB9LFxuICBkaXNhYmxlZDoge1xuICAgIG9wYWNpdHk6IDAuNyxcbiAgICBjdXJzb3I6ICdub3QtYWxsb3dlZCcsXG4gICAgJyYgOmhvdmVyJzoge1xuICAgICAgY29sb3I6ICdncmV5JyxcbiAgICB9LFxuICB9LFxuICBpc0FjdGl2ZToge1xuICAgIGJhY2tncm91bmQ6ICd2YXIoLS1wdXJwbGUpJyxcbiAgICBjb2xvcjogJ3ZhcigtLXdoaXRlKScsXG4gIH0sXG4gIHRvb2xiYXI6IHtcbiAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICB6SW5kZXg6IDIwLFxuICAgIGN1cnNvcjogJ3BvaW50ZXInLFxuICAgIGp1c3RpZnlDb250ZW50OiAnc3BhY2UtYmV0d2VlbicsXG4gICAgYmFja2dyb3VuZDogJ3ZhcigtLWVkaXRhYmxlLWh0bWwtdG9vbGJhci1iZywgI2VmZWZlZiknLFxuICAgIG1pbldpZHRoOiAnMjgwcHgnLFxuICAgIG1hcmdpbjogJzVweCAwIDAgMCcsXG4gICAgcGFkZGluZzogJzJweCcsXG4gICAgYm94U2hhZG93OlxuICAgICAgJzBweCAxcHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMiksIDBweCAycHggMnB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLCAwcHggM3B4IDFweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4xMiknLFxuICAgIGJveFNpemluZzogJ2JvcmRlci1ib3gnLFxuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICBvcGFjaXR5OiAwLFxuICAgIHBvaW50ZXJFdmVudHM6ICdub25lJyxcbiAgfSxcbiAgdG9vbGJhcldpdGhOb0RvbmU6IHtcbiAgICBtaW5XaWR0aDogJzI2NXB4JyxcbiAgfSxcbiAgdG9vbGJhclRvcDoge1xuICAgIHRvcDogJy00NXB4JyxcbiAgfSxcbiAgdG9vbGJhclJpZ2h0OiB7XG4gICAgcmlnaHQ6IDAsXG4gIH0sXG4gIGZ1bGxXaWR0aDoge1xuICAgIHdpZHRoOiAnMTAwJScsXG4gIH0sXG4gIGhpZGRlbjoge1xuICAgIHZpc2liaWxpdHk6ICdoaWRkZW4nLFxuICB9LFxuICBhdXRvV2lkdGg6IHtcbiAgICB3aWR0aDogJ2F1dG8nLFxuICB9LFxuICBmb2N1c2VkOiB7XG4gICAgb3BhY2l0eTogMSxcbiAgICBwb2ludGVyRXZlbnRzOiAnYXV0bycsXG4gIH0sXG4gIGljb25Sb290OiB7XG4gICAgd2lkdGg6ICcyOHB4JyxcbiAgICBoZWlnaHQ6ICcyOHB4JyxcbiAgICBwYWRkaW5nOiAnNHB4JyxcbiAgICB2ZXJ0aWNhbEFsaWduOiAndG9wJyxcbiAgfSxcbiAgbGFiZWw6IHtcbiAgICBjb2xvcjogJ3ZhcigtLWVkaXRhYmxlLWh0bWwtdG9vbGJhci1jaGVjaywgIzAwYmIwMCknLFxuICB9LFxuICBzaGFyZWQ6IHtcbiAgICBkaXNwbGF5OiAnZmxleCcsXG4gIH0sXG59KTtcbmNvbnN0IFN0eWxlZE1lbnVCYXIgPSB3aXRoU3R5bGVzKHN0eWxlLCB7IGluZGV4OiAxMDAwIH0pKE1lbnVCYXIpO1xuXG5jb25zdCBkZWZhdWx0VG9vbGJhck9wdHMgPSB7XG4gIHBvc2l0aW9uOiAnYm90dG9tJyxcbiAgYWxpZ25tZW50OiAnbGVmdCcsXG4gIGFsd2F5c1Zpc2libGU6IGZhbHNlLFxuICBzaG93RG9uZTogdHJ1ZSxcbiAgZG9uZU9uOiAnYmx1cicsXG59O1xuXG5leHBvcnQgY29uc3QgRWRpdGFibGVIdG1sID0gKHByb3BzKSA9PiB7XG4gIGNvbnN0IFtwZW5kaW5nSW1hZ2VzLCBzZXRQZW5kaW5nSW1hZ2VzXSA9IHVzZVN0YXRlKFtdKTtcbiAgY29uc3QgW3NjaGVkdWxlZCwgc2V0U2NoZWR1bGVkXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgeyBjbGFzc2VzLCB0b29sYmFyT3B0cyB9ID0gcHJvcHM7XG4gIGNvbnN0IHRvb2xiYXJPcHRzVG9Vc2UgPSB7XG4gICAgLi4uZGVmYXVsdFRvb2xiYXJPcHRzLFxuICAgIC4uLnRvb2xiYXJPcHRzLFxuICB9O1xuICBjb25zdCBleHRlbnNpb25zID0gW1xuICAgIFRleHRTdHlsZUtpdCxcbiAgICBTdGFydGVyS2l0LFxuICAgIEV4dGVuZGVkVGFibGUsXG4gICAgVGFibGVSb3csXG4gICAgVGFibGVIZWFkZXIsXG4gICAgVGFibGVDZWxsLFxuICAgIFJlc3BvbnNlQXJlYUV4dGVuc2lvbixcbiAgICBFeHBsaWNpdENvbnN0cnVjdGVkUmVzcG9uc2VOb2RlLmNvbmZpZ3VyZShwcm9wcy5yZXNwb25zZUFyZWFQcm9wcyksXG4gICAgRHJhZ0luVGhlQmxhbmtOb2RlLmNvbmZpZ3VyZShwcm9wcy5yZXNwb25zZUFyZWFQcm9wcyksXG4gICAgSW5saW5lRHJvcGRvd25Ob2RlLmNvbmZpZ3VyZShwcm9wcy5yZXNwb25zZUFyZWFQcm9wcyksXG4gICAgTWF0aE5vZGUuY29uZmlndXJlKHtcbiAgICAgIHRvb2xiYXJPcHRzOiB0b29sYmFyT3B0c1RvVXNlLFxuICAgIH0pLFxuICAgIFN1YlNjcmlwdCxcbiAgICBTdXBlclNjcmlwdCxcbiAgICBUZXh0QWxpZ24uY29uZmlndXJlKHtcbiAgICAgIHR5cGVzOiBbJ2hlYWRpbmcnLCAncGFyYWdyYXBoJ10sXG4gICAgICBhbGlnbm1lbnRzOiBbJ2xlZnQnLCAncmlnaHQnLCAnY2VudGVyJ10sXG4gICAgfSksXG4gICAgSW1hZ2UsXG4gICAgSW1hZ2VVcGxvYWROb2RlLmNvbmZpZ3VyZSh7XG4gICAgICB0b29sYmFyT3B0czogdG9vbGJhck9wdHNUb1VzZSxcbiAgICAgIGltYWdlSGFuZGxpbmc6IHtcbiAgICAgICAgZGlzYWJsZUltYWdlQWxpZ25tZW50QnV0dG9uczogcHJvcHMuZGlzYWJsZUltYWdlQWxpZ25tZW50QnV0dG9ucyxcbiAgICAgICAgb25EZWxldGU6XG4gICAgICAgICAgcHJvcHMuaW1hZ2VTdXBwb3J0ICYmXG4gICAgICAgICAgcHJvcHMuaW1hZ2VTdXBwb3J0LmRlbGV0ZSAmJlxuICAgICAgICAgICgobm9kZSwgZG9uZSkgPT4ge1xuICAgICAgICAgICAgY29uc3QgeyBzcmMgfSA9IG5vZGUuYXR0cnM7XG5cbiAgICAgICAgICAgIHByb3BzLmltYWdlU3VwcG9ydC5kZWxldGUoc3JjLCAoZSkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBuZXdQZW5kaW5nSW1hZ2VzID0gcGVuZGluZ0ltYWdlcy5maWx0ZXIoKGltZykgPT4gaW1nLmtleSAhPT0gbm9kZS5rZXkpO1xuICAgICAgICAgICAgICBjb25zdCBuZXdTdGF0ZSA9IHtcbiAgICAgICAgICAgICAgICBwZW5kaW5nSW1hZ2VzOiBuZXdQZW5kaW5nSW1hZ2VzLFxuICAgICAgICAgICAgICAgIHNjaGVkdWxlZDogc2NoZWR1bGVkICYmIG5ld1BlbmRpbmdJbWFnZXMubGVuZ3RoID09PSAwID8gZmFsc2UgOiBzY2hlZHVsZWQsXG4gICAgICAgICAgICAgIH07XG5cbiAgICAgICAgICAgICAgc2V0UGVuZGluZ0ltYWdlcyhuZXdTdGF0ZS5wZW5kaW5nSW1hZ2VzKTtcbiAgICAgICAgICAgICAgc2V0U2NoZWR1bGVkKG5ld1N0YXRlLnNjaGVkdWxlZCk7XG4gICAgICAgICAgICAgIGRvbmUoKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0pLFxuICAgICAgICBpbnNlcnRJbWFnZVJlcXVlc3RlZDpcbiAgICAgICAgICBwcm9wcy5pbWFnZVN1cHBvcnQgJiZcbiAgICAgICAgICAoKGFkZGVkSW1hZ2UsIGdldEhhbmRsZXIpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG9uRmluaXNoID0gKHJlc3VsdCkgPT4ge1xuICAgICAgICAgICAgICBsZXQgY2I7XG5cbiAgICAgICAgICAgICAgaWYgKHNjaGVkdWxlZCAmJiByZXN1bHQpIHtcbiAgICAgICAgICAgICAgICAvLyBmaW5pc2ggZWRpdGluZyBvbmx5IG9uIHN1Y2Nlc3NcbiAgICAgICAgICAgICAgICBjYiA9IHByb3BzLm9uQ2hhbmdlO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgY29uc3QgbmV3UGVuZGluZ0ltYWdlcyA9IHBlbmRpbmdJbWFnZXMuZmlsdGVyKChpbWcpID0+IGltZy5rZXkgIT09IGFkZGVkSW1hZ2Uua2V5KTtcbiAgICAgICAgICAgICAgY29uc3QgbmV3U3RhdGUgPSB7XG4gICAgICAgICAgICAgICAgcGVuZGluZ0ltYWdlczogbmV3UGVuZGluZ0ltYWdlcyxcbiAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICBpZiAobmV3UGVuZGluZ0ltYWdlcy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICBuZXdTdGF0ZS5zY2hlZHVsZWQgPSBmYWxzZTtcbiAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgIHNldFBlbmRpbmdJbWFnZXMobmV3U3RhdGUucGVuZGluZ0ltYWdlcyk7XG4gICAgICAgICAgICAgIHNldFNjaGVkdWxlZChuZXdTdGF0ZS5zY2hlZHVsZWQpO1xuICAgICAgICAgICAgICBjYj8uKGVkaXRvci5nZXRIVE1MKCkpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgICAgIGNvbnN0IGNhbGxiYWNrID0gKCkgPT4ge1xuICAgICAgICAgICAgICAvKipcbiAgICAgICAgICAgICAgICogVGhlIGhhbmRsZXIgaXMgdGhlIG9iamVjdCB0aHJvdWdoIHdoaWNoIHRoZSBvdXRlciBjb250ZXh0XG4gICAgICAgICAgICAgICAqIGNvbW11bmljYXRlcyBmaWxlIHVwbG9hZCBldmVudHMgbGlrZTogZmlsZUNob3NlbiwgY2FuY2VsLCBwcm9ncmVzc1xuICAgICAgICAgICAgICAgKi9cbiAgICAgICAgICAgICAgY29uc3QgaGFuZGxlciA9IGdldEhhbmRsZXIob25GaW5pc2gpO1xuICAgICAgICAgICAgICBwcm9wcy5pbWFnZVN1cHBvcnQuYWRkKGhhbmRsZXIpO1xuICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgc2V0UGVuZGluZ0ltYWdlcyhbLi4ucGVuZGluZ0ltYWdlcywgYWRkZWRJbWFnZV0pO1xuICAgICAgICAgICAgY2FsbGJhY2soKTtcbiAgICAgICAgICB9KSxcbiAgICAgICAgbWF4SW1hZ2VXaWR0aDogcHJvcHMubWF4SW1hZ2VXaWR0aCxcbiAgICAgICAgbWF4SW1hZ2VIZWlnaHQ6IHByb3BzLm1heEltYWdlSGVpZ2h0LFxuICAgICAgfSxcbiAgICAgIGxpbWl0OiAzLFxuICAgIH0pLFxuICAgIE1lZGlhLmNvbmZpZ3VyZSh7XG4gICAgICB1cGxvYWRTb3VuZFN1cHBvcnQ6IHByb3BzLnVwbG9hZFNvdW5kU3VwcG9ydCxcbiAgICB9KSxcbiAgICBDU1NNYXJrLmNvbmZpZ3VyZSh7XG4gICAgICBleHRyYUNTU1J1bGVzOiBwcm9wcy5leHRyYUNTU1J1bGVzXG4gICAgfSksXG4gIF07XG4gIGNvbnN0IGVkaXRvciA9IHVzZUVkaXRvcih7XG4gICAgZXh0ZW5zaW9ucyxcbiAgICBpbW1lZGlhdGVseVJlbmRlcjogZmFsc2UsXG4gICAgY29udGVudDogcHJvcHMubWFya3VwLFxuICAgIG9uVXBkYXRlOiAoeyBlZGl0b3IsIHRyYW5zYWN0aW9uIH0pID0+IHRyYW5zYWN0aW9uLmlzRG9uZSAmJiBwcm9wcy5vbkNoYW5nZT8uKGVkaXRvci5nZXRIVE1MKCkpLFxuICAgIG9uQmx1cjogKHsgZWRpdG9yIH0pID0+IHtcbiAgICAgIGlmICh0b29sYmFyT3B0c1RvVXNlLmRvbmVPbiA9PT0gJ2JsdXInKSB7XG4gICAgICAgIHByb3BzLm9uQ2hhbmdlPy4oZWRpdG9yLmdldEhUTUwoKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwcm9wcy5vbkRvbmU/LihlZGl0b3IuZ2V0SFRNTCgpKTtcbiAgICAgIH1cbiAgICB9LFxuICB9KTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghZWRpdG9yKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHByb3BzLm1hcmt1cCAhPT0gZWRpdG9yLmdldEhUTUwoKSkge1xuICAgICAgZWRpdG9yLmNvbW1hbmRzLnNldENvbnRlbnQocHJvcHMubWFya3VwLCBmYWxzZSk7IC8vIGZhbHNlID0gZG9u4oCZdCBlbWl0IHVwZGF0ZVxuICAgIH1cbiAgfSwgW3Byb3BzLm1hcmt1cCwgZWRpdG9yXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAvLyBEZWZpbmUgeW91ciB2YXJpYWJsZXMgaW4gYSBKUyBvYmplY3RcbiAgICBjb25zdCBjc3NWYXJpYWJsZXMgPSB7XG4gICAgICAnLS13aGl0ZSc6ICcjZmZmJyxcbiAgICAgICctLWJsYWNrJzogJyMyZTJiMjknLFxuICAgICAgJy0tYmxhY2stY29udHJhc3QnOiAnIzExMGYwZScsXG4gICAgICAnLS1ncmF5LTEnOiAncmdiYSg2MSwgMzcsIDIwLCAuMDUpJyxcbiAgICAgICctLWdyYXktMic6ICdyZ2JhKDYxLCAzNywgMjAsIC4wOCknLFxuICAgICAgJy0tZ3JheS0zJzogJ3JnYmEoNjEsIDM3LCAyMCwgLjEyKScsXG4gICAgICAnLS1ncmF5LTQnOiAncmdiYSg1MywgMzgsIDI4LCAuMyknLFxuICAgICAgJy0tZ3JheS01JzogJ3JnYmEoMjgsIDI1LCAyMywgLjYpJyxcbiAgICAgICctLWdyZWVuJzogJyMyMmM1NWUnLFxuICAgICAgJy0tcHVycGxlJzogJyM2YTAwZjUnLFxuICAgICAgJy0tcHVycGxlLWNvbnRyYXN0JzogJyM1ODAwY2MnLFxuICAgICAgJy0tcHVycGxlLWxpZ2h0JzogJ3JnYmEoODgsIDUsIDI1NSwgLjA1KScsXG4gICAgICAnLS15ZWxsb3ctY29udHJhc3QnOiAnI2ZhY2MxNScsXG4gICAgICAnLS15ZWxsb3cnOiAncmdiYSgyNTAsIDIwNCwgMjEsIC40KScsXG4gICAgICAnLS15ZWxsb3ctbGlnaHQnOiAnI2ZmZmFlNScsXG4gICAgICAnLS1yZWQnOiAnI2ZmNWMzMycsXG4gICAgICAnLS1yZWQtbGlnaHQnOiAnI2ZmZWJlNScsXG4gICAgICAnLS1zaGFkb3cnOiBgMHB4IDEycHggMzNweCAwcHggcmdiYSgwLCAwLCAwLCAuMDYpLFxuICAgICAgICAgICAgICAgMHB4IDMuNjE4cHggOS45NDlweCAwcHggcmdiYSgwLCAwLCAwLCAuMDQpYCxcbiAgICB9O1xuXG4gICAgT2JqZWN0LmVudHJpZXMoY3NzVmFyaWFibGVzKS5mb3JFYWNoKChba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eShrZXksIHZhbHVlKTtcbiAgICB9KTtcbiAgfSwgW10pO1xuXG4gIGNvbnN0IGVkaXRvclN0YXRlID0gdXNlRWRpdG9yU3RhdGUoe1xuICAgIGVkaXRvcixcbiAgICBzZWxlY3RvcjogKGN0eCkgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaXNGb2N1c2VkOiBjdHguZWRpdG9yPy5pc0ZvY3VzZWQsXG4gICAgICB9O1xuICAgIH0sXG4gIH0pO1xuXG4gIGNvbnN0IHZhbHVlVG9TaXplID0gKHYpID0+IHtcbiAgICBpZiAoIXYpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgY2FsY1JlZ2V4ID0gL15jYWxjXFwoKC4qKVxcKSQvO1xuXG4gICAgaWYgKHR5cGVvZiB2ID09PSAnc3RyaW5nJykge1xuICAgICAgaWYgKHYuZW5kc1dpdGgoJyUnKSkge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgdi5lbmRzV2l0aCgncHgnKSB8fFxuICAgICAgICB2LmVuZHNXaXRoKCd2aCcpIHx8XG4gICAgICAgIHYuZW5kc1dpdGgoJ3Z3JykgfHxcbiAgICAgICAgdi5lbmRzV2l0aCgnY2gnKSB8fFxuICAgICAgICB2LmVuZHNXaXRoKCdlbScpIHx8XG4gICAgICAgIHYubWF0Y2goY2FsY1JlZ2V4KVxuICAgICAgKSB7XG4gICAgICAgIHJldHVybiB2O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBwYXJzZUludCh2LCAxMCk7XG4gICAgICAgIHJldHVybiBpc05hTih2YWx1ZSkgPyB2YWx1ZSA6IGAke3ZhbHVlfXB4YDtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHR5cGVvZiB2ID09PSAnbnVtYmVyJykge1xuICAgICAgcmV0dXJuIGAke3Z9cHhgO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBzaXplU3R5bGUgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCB7IG1pbldpZHRoLCB3aWR0aCwgbWF4V2lkdGgsIG1pbkhlaWdodCwgaGVpZ2h0LCBtYXhIZWlnaHQgfSA9IHByb3BzO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHdpZHRoOiB2YWx1ZVRvU2l6ZSh3aWR0aCksXG4gICAgICBtaW5XaWR0aDogdmFsdWVUb1NpemUobWluV2lkdGgpLFxuICAgICAgbWF4V2lkdGg6IHZhbHVlVG9TaXplKG1heFdpZHRoKSxcbiAgICAgIGhlaWdodDogdmFsdWVUb1NpemUoaGVpZ2h0KSxcbiAgICAgIG1pbkhlaWdodDogdmFsdWVUb1NpemUobWluSGVpZ2h0KSxcbiAgICAgIG1heEhlaWdodDogdmFsdWVUb1NpemUobWF4SGVpZ2h0KSxcbiAgICB9O1xuICB9LCBbcHJvcHNdKTtcblxuICByZXR1cm4gKFxuICAgIDxFZGl0b3JDb250YWluZXIgey4uLnsgLi4ucHJvcHMsIHRvb2xiYXJPcHRzOiB0b29sYmFyT3B0c1RvVXNlIH19IGVkaXRvclN0YXRlPXtlZGl0b3JTdGF0ZX0gZWRpdG9yPXtlZGl0b3J9PlxuICAgICAge2VkaXRvciAmJiAoXG4gICAgICAgIDxFZGl0b3JDb250ZW50XG4gICAgICAgICAgc3R5bGU9e3tcbiAgICAgICAgICAgIG1pbkhlaWdodDogc2l6ZVN0eWxlLm1pbkhlaWdodCxcbiAgICAgICAgICAgIGhlaWdodDogc2l6ZVN0eWxlLmhlaWdodCxcbiAgICAgICAgICAgIG1heEhlaWdodDogc2l6ZVN0eWxlLm1heEhlaWdodCxcbiAgICAgICAgICB9fVxuICAgICAgICAgIGNsYXNzTmFtZT17Y2xhc3Nlcy5yb290fVxuICAgICAgICAgIGVkaXRvcj17ZWRpdG9yfVxuICAgICAgICAvPlxuICAgICAgKX1cbiAgICA8L0VkaXRvckNvbnRhaW5lcj5cbiAgKTtcbn07XG5cbmNvbnN0IFN0eWxlZEVkaXRvciA9IHdpdGhTdHlsZXMoe1xuICByb290OiB7XG4gICAgb3V0bGluZTogJ25vbmUgIWltcG9ydGFudCcsXG4gICAgJyYgLlByb3NlTWlycm9yJzoge1xuICAgICAgb3V0bGluZTogJ25vbmUgIWltcG9ydGFudCcsXG4gICAgICBwb3NpdGlvbjogJ2luaXRpYWwnLFxuICAgIH0sXG4gIH0sXG59KShFZGl0YWJsZUh0bWwpO1xuXG5leHBvcnQgZGVmYXVsdCBTdHlsZWRFZGl0b3I7XG4iXX0=
1497
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qc3giXSwibmFtZXMiOlsiQ2hhcmFjdGVySWNvbiIsImxldHRlciIsImZvbnRTaXplIiwibGluZUhlaWdodCIsInByb3BUeXBlcyIsIlByb3BUeXBlcyIsInN0cmluZyIsIkNoYXJhY3RlclBpY2tlciIsImVkaXRvciIsIm9wdHMiLCJvbkNsb3NlIiwiY2hhcmFjdGVycyIsImxlbmd0aCIsImNvbnRhaW5lclJlZiIsInRvcCIsImxlZnQiLCJwb3NpdGlvbiIsInNldFBvc2l0aW9uIiwicG9wb3ZlciIsInNldFBvcG92ZXIiLCJjb25maWdUb1VzZSIsImxhbmd1YWdlIiwic3BhbmlzaENvbmZpZyIsInNwZWNpYWxDb25maWciLCJsYXlvdXRGb3JDaGFyYWN0ZXJzIiwicmVkdWNlIiwib2JqIiwiYXJyIiwiY29sdW1ucyIsInJvd3MiLCJjbG9zZVBvcE92ZXIiLCJib2R5UmVjdCIsImRvY3VtZW50IiwiYm9keSIsImdldEJvdW5kaW5nQ2xpZW50UmVjdCIsImZyb20iLCJzdGF0ZSIsInNlbGVjdGlvbiIsInN0YXJ0IiwidmlldyIsImNvb3Jkc0F0UG9zIiwiTWF0aCIsImFicyIsImhhbmRsZUNsaWNrT3V0c2lkZSIsImUiLCJjdXJyZW50IiwiY29udGFpbnMiLCJ0YXJnZXQiLCJkb20iLCJhZGRFdmVudExpc3RlbmVyIiwicmVtb3ZlRXZlbnRMaXN0ZW5lciIsInJlbmRlclBvcE92ZXIiLCJldmVudCIsImVsIiwiYW5jaG9yRWwiLCJjdXJyZW50VGFyZ2V0IiwiaGFuZGxlQ2hhbmdlIiwidmFsIiwiY2hhaW4iLCJmb2N1cyIsImluc2VydENvbnRlbnQiLCJydW4iLCJSZWFjdERPTSIsImNyZWF0ZVBvcnRhbCIsIm1heFdpZHRoIiwia2V5UGFkQ2hhcmFjdGVyUmVmIiwic2V0S2V5cGFkSW50ZXJhY3Rpb24iLCJuIiwibWFwIiwiayIsIm5hbWUiLCJ3cml0ZSIsImxhYmVsIiwiY2F0ZWdvcnkiLCJleHRyYUNsYXNzIiwiZXh0cmFQcm9wcyIsInN0eWxlIiwiYm9yZGVyIiwiaGFzUHJldmlldyIsImFjdGlvbnMiLCJvbk1vdXNlRW50ZXIiLCJldiIsIm9uTW91c2VMZWF2ZSIsImRlc2NyaXB0aW9uIiwidW5pY29kZSIsIlN1cGVyc2NyaXB0SWNvbiIsIlN1YnNjcmlwdEljb24iLCJIZWFkaW5nSWNvbiIsIndpZHRoIiwiaGVpZ2h0IiwiRXh0ZW5kZWRUYWJsZSIsIlRhYmxlIiwiZXh0ZW5kIiwiYWRkQXR0cmlidXRlcyIsInJlbmRlckhUTUwiLCJwcm9wcyIsIm9yaWdpbmFsVGFibGUiLCJwYXJlbnQiLCJIVE1MQXR0cmlidXRlcyIsInByZXZpb3VzU3R5bGUiLCJtYXRjaCIsInN0eWxlcyIsInRoZW1lIiwicm9vdCIsInBhZGRpbmciLCJib3JkZXJSYWRpdXMiLCJjdXJzb3IiLCJ3b3JkQnJlYWsiLCJvdmVyZmxvdyIsIm1heEhlaWdodCIsIm1hcmdpblRvcCIsIm1hcmdpbiIsIm1hcmdpbkJvdHRvbSIsInRleHRXcmFwIiwiYmFja2dyb3VuZENvbG9yIiwiY29sb3IiLCJiYWNrZ3JvdW5kIiwiZm9udEZhbWlseSIsImJvcmRlckxlZnQiLCJwYWRkaW5nTGVmdCIsImJvcmRlclRvcCIsInRhYmxlTGF5b3V0IiwiYm9yZGVyQ29sbGFwc2UiLCJ0ZXh0IiwidGV4dEFsaWduIiwiY2hpbGRyZW4iLCJlZGl0b3JIb2xkZXIiLCJyaWdodCIsImJvdHRvbSIsImNvbnRlbnQiLCJ0cmFuc2l0aW9uIiwicG9pbnRlckV2ZW50cyIsInRyYW5zZm9ybSIsInByaW1hcnkiLCJwYWxldHRlIiwiY29tbW9uIiwiYmxhY2siLCJkaXNhYmxlZFVuZGVybGluZSIsImRpc3BsYXkiLCJkaXNhYmxlZFNjcm9sbGJhciIsInNjcm9sbGJhcldpZHRoIiwicmVhZE9ubHkiLCJiYWNrZ3JvdW5kU2l6ZSIsImJhY2tncm91bmRJbWFnZSIsImJhY2tncm91bmRSZXBlYXQiLCJiYWNrZ3JvdW5kUG9zaXRpb24iLCJlZGl0b3JJbkZvY3VzIiwiZXJyb3IiLCJtYWluIiwibm9Cb3JkZXIiLCJub1BhZGRpbmciLCJ0b29sYmFyT25Ub3AiLCJkZWZhdWx0UmVzcG9uc2VBcmVhUHJvcHMiLCJvcHRpb25zIiwicmVzcEFyZWFUb29sYmFyIiwib25IYW5kbGVBcmVhQ2hhbmdlIiwidmFsdWVUb1NpemUiLCJ2IiwiY2FsY1JlZ2V4IiwiZW5kc1dpdGgiLCJ1bmRlZmluZWQiLCJ2YWx1ZSIsInBhcnNlSW50IiwiaXNOYU4iLCJUaXB0YXBDb250YWluZXIiLCJlZGl0b3JTdGF0ZSIsImNsYXNzZXMiLCJkaXNhYmxlVW5kZXJsaW5lIiwiZGlzYWJsZVNjcm9sbGJhciIsImFjdGl2ZVBsdWdpbnMiLCJ0b29sYmFyT3B0cyIsInJlc3BvbnNlQXJlYVByb3BzIiwiYXV0b0ZvY3VzIiwibWluV2lkdGgiLCJtaW5IZWlnaHQiLCJob2xkZXJOYW1lcyIsImlzRm9jdXNlZCIsIlByb21pc2UiLCJyZXNvbHZlIiwidGhlbiIsImNvbW1hbmRzIiwic2l6ZVN0eWxlIiwiY2xhc3NOYW1lIiwib25DaGFuZ2UiLCJFZGl0b3JDb250YWluZXIiLCJNZW51QmFyIiwidG9vbE9wdHMiLCJzaG93UGlja2VyIiwic2V0U2hvd1BpY2tlciIsInNlbGVjdG9yIiwiY3R4IiwiY3VycmVudE5vZGUiLCJOb2RlU2VsZWN0aW9uIiwibm9kZSIsImhpZGVEZWZhdWx0VG9vbGJhciIsImlzQWN0aXZlIiwiaXNCb2xkIiwiY2FuQm9sZCIsImNhbiIsInRvZ2dsZUJvbGQiLCJpc1RhYmxlIiwidGFibGVIYXNCb3JkZXIiLCJnZXRBdHRyaWJ1dGVzIiwiY2FuVGFibGUiLCJpbnNlcnRUYWJsZSIsImlzSXRhbGljIiwiY2FuSXRhbGljIiwidG9nZ2xlSXRhbGljIiwiaXNTdHJpa2UiLCJjYW5TdHJpa2UiLCJ0b2dnbGVTdHJpa2UiLCJpc0NvZGUiLCJjYW5Db2RlIiwidG9nZ2xlQ29kZSIsImNhbkNsZWFyTWFya3MiLCJ1bnNldEFsbE1hcmtzIiwiaXNVbmRlcmxpbmUiLCJpc1N1YlNjcmlwdCIsImlzU3VwZXJTY3JpcHQiLCJpc1BhcmFncmFwaCIsImlzSGVhZGluZzEiLCJsZXZlbCIsImlzSGVhZGluZzIiLCJpc0hlYWRpbmczIiwiaXNIZWFkaW5nNCIsImlzSGVhZGluZzUiLCJpc0hlYWRpbmc2IiwiaXNCdWxsZXRMaXN0IiwiaXNPcmRlcmVkTGlzdCIsImlzQ29kZUJsb2NrIiwiaXNCbG9ja3F1b3RlIiwiY2FuVW5kbyIsInVuZG8iLCJjYW5SZWRvIiwicmVkbyIsImhhc0RvbmVCdXR0b24iLCJhdXRvV2lkdGgiLCJuYW1lcyIsInRvb2xiYXIiLCJQSUVfVE9PTEJBUl9fQ0xBU1MiLCJ0b29sYmFyV2l0aE5vRG9uZSIsInRvb2xiYXJUb3AiLCJ0b29sYmFyUmlnaHQiLCJhbGlnbm1lbnQiLCJmb2N1c2VkIiwiYWx3YXlzVmlzaWJsZSIsIl90b29sYmFyT3BlbmVkIiwiZnVsbFdpZHRoIiwiaGlkZGVuIiwiaXNIaWRkZW4iLCJjdXN0b21TdHlsZXMiLCJoYW5kbGVNb3VzZURvd24iLCJwcmV2ZW50RGVmYXVsdCIsInRvb2xiYXJCdXR0b25zIiwiaWNvbiIsIm9uQ2xpY2siLCJjb2xzIiwid2l0aEhlYWRlclJvdyIsImluY2x1ZGVzIiwiaXNEaXNhYmxlZCIsImFkZFJvd0FmdGVyIiwiZGVsZXRlUm93IiwiYWRkQ29sdW1uQWZ0ZXIiLCJkZWxldGVDb2x1bW4iLCJkZWxldGVUYWJsZSIsInRhYmxlQXR0cnMiLCJ1cGRhdGUiLCJ1cGRhdGVBdHRyaWJ1dGVzIiwidG9nZ2xlVW5kZXJsaW5lIiwidG9nZ2xlU3Vic2NyaXB0IiwidG9nZ2xlU3VwZXJzY3JpcHQiLCJzZXRJbWFnZVVwbG9hZE5vZGUiLCJpbnNlcnRNZWRpYSIsInRhZyIsIm9wZW5DU1NDbGFzc0RpYWxvZyIsInRvZ2dsZUhlYWRpbmciLCJpbnNlcnRNYXRoIiwiZmlsdGVyIiwicCIsInRvZ2dsZUJ1bGxldExpc3QiLCJ0b2dnbGVPcmRlcmVkTGlzdCIsImRlZmF1bHRUb29sYmFyIiwiYnV0dG9uc0NvbnRhaW5lciIsImJ0biIsImluZGV4IiwiZGlzYWJsZWQiLCJhY3RpdmUiLCJidXR0b24iLCJpbnNlcnRSZXNwb25zZUFyZWEiLCJ0eXBlIiwiZ2V0SFRNTCIsImJsdXIiLCJjaCIsImNvbnNvbGUiLCJsb2ciLCJqdXN0aWZ5Q29udGVudCIsImFsaWduSXRlbXMiLCJvdXRsaW5lIiwiZ3JleSIsIm9wYWNpdHkiLCJ6SW5kZXgiLCJib3hTaGFkb3ciLCJib3hTaXppbmciLCJ2aXNpYmlsaXR5IiwiaWNvblJvb3QiLCJ2ZXJ0aWNhbEFsaWduIiwic2hhcmVkIiwiU3R5bGVkTWVudUJhciIsImRlZmF1bHRUb29sYmFyT3B0cyIsInNob3dEb25lIiwiZG9uZU9uIiwiRWRpdGFibGVIdG1sIiwicGVuZGluZ0ltYWdlcyIsInNldFBlbmRpbmdJbWFnZXMiLCJzY2hlZHVsZWQiLCJzZXRTY2hlZHVsZWQiLCJ0b29sYmFyT3B0c1RvVXNlIiwiYWN0aXZlUGx1Z2luc1RvVXNlIiwicGx1Z2luUHJvcHMiLCJjdXN0b21QbHVnaW5zIiwibWF0aCIsImh0bWwiLCJleHRyYUNTU1J1bGVzIiwiaW1hZ2UiLCJ0YWJsZSIsInJlc3BvbnNlQXJlYSIsImxhbmd1YWdlQ2hhcmFjdGVycyIsImxhbmd1YWdlQ2hhcmFjdGVyc1Byb3BzIiwibWVkaWEiLCJleHRlbnNpb25zIiwiVGV4dFN0eWxlS2l0IiwiU3RhcnRlcktpdCIsIlRhYmxlUm93IiwiVGFibGVIZWFkZXIiLCJUYWJsZUNlbGwiLCJSZXNwb25zZUFyZWFFeHRlbnNpb24iLCJFeHBsaWNpdENvbnN0cnVjdGVkUmVzcG9uc2VOb2RlIiwiY29uZmlndXJlIiwiRHJhZ0luVGhlQmxhbmtOb2RlIiwiSW5saW5lRHJvcGRvd25Ob2RlIiwiTWF0aE5vZGUiLCJTdWJTY3JpcHQiLCJTdXBlclNjcmlwdCIsIlRleHRBbGlnbiIsInR5cGVzIiwiYWxpZ25tZW50cyIsIkltYWdlIiwiSW1hZ2VVcGxvYWROb2RlIiwiaW1hZ2VIYW5kbGluZyIsImRpc2FibGVJbWFnZUFsaWdubWVudEJ1dHRvbnMiLCJvbkRvbmUiLCJvbkRlbGV0ZSIsImltYWdlU3VwcG9ydCIsImRvbmUiLCJzcmMiLCJhdHRycyIsIm5ld1BlbmRpbmdJbWFnZXMiLCJpbWciLCJrZXkiLCJuZXdTdGF0ZSIsImluc2VydEltYWdlUmVxdWVzdGVkIiwiYWRkZWRJbWFnZSIsImdldEhhbmRsZXIiLCJvbkZpbmlzaCIsInJlc3VsdCIsImNiIiwiY2FsbGJhY2siLCJoYW5kbGVyIiwiYWRkIiwibWF4SW1hZ2VXaWR0aCIsIm1heEltYWdlSGVpZ2h0IiwibGltaXQiLCJNZWRpYSIsInVwbG9hZFNvdW5kU3VwcG9ydCIsIkNTU01hcmsiLCJpbW1lZGlhdGVseVJlbmRlciIsIm1hcmt1cCIsIm9uVXBkYXRlIiwidHJhbnNhY3Rpb24iLCJpc0RvbmUiLCJvbkJsdXIiLCJzZXRDb250ZW50IiwiY3NzVmFyaWFibGVzIiwiT2JqZWN0IiwiZW50cmllcyIsImZvckVhY2giLCJkb2N1bWVudEVsZW1lbnQiLCJzZXRQcm9wZXJ0eSIsIlN0eWxlZEVkaXRvciJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQTs7QUFDQTs7QUFNQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7Ozs7Ozs7OztBQUVBLElBQU1BLGFBQWEsR0FBRyxTQUFoQkEsYUFBZ0I7QUFBQSxNQUFHQyxNQUFILFFBQUdBLE1BQUg7QUFBQSxzQkFDcEI7QUFDRSxJQUFBLEtBQUssRUFBRTtBQUNMQyxNQUFBQSxRQUFRLEVBQUUsTUFETDtB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Q0FBQy9DLFNBQUQ7QUFOakIsS0FBUDtBQVFELEdBWGlCLEVBV2YsQ0FBQ2QsS0FBRCxDQVhlLENBQWxCO0FBYUEsc0JBQ0UsZ0NBQUMsZUFBRCxnRUFDV0EsS0FEWDtBQUNrQjBFLElBQUFBLGFBQWEsRUFBRW9KLGtCQURqQztBQUNxRG5KLElBQUFBLFdBQVcsRUFBRWtKO0FBRGxFO0FBRUUsSUFBQSxXQUFXLEVBQUV2SixXQUZmO0FBR0UsSUFBQSxNQUFNLEVBQUU3SjtBQUhWLE1BS0dBLE1BQU0saUJBQ0wsZ0NBQUMscUJBQUQ7QUFDRSxJQUFBLEtBQUssRUFBRTtBQUNMc0ssTUFBQUEsU0FBUyxFQUFFTyxTQUFTLENBQUNQLFNBRGhCO0FBRUxyRixNQUFBQSxNQUFNLEVBQUU0RixTQUFTLENBQUM1RixNQUZiO0FBR0xvQixNQUFBQSxTQUFTLEVBQUV3RSxTQUFTLENBQUN4RTtBQUhoQixLQURUO0FBTUUsSUFBQSxTQUFTLEVBQUV5RCxPQUFPLENBQUMvRCxJQU5yQjtBQU9FLElBQUEsTUFBTSxFQUFFL0Y7QUFQVixJQU5KLENBREY7QUFtQkQsQ0FsUE07OztBQW9QUCxJQUFNNFgsWUFBWSxHQUFHLHdCQUFXO0FBQzlCN1IsRUFBQUEsSUFBSSxFQUFFO0FBQ0prTSxJQUFBQSxPQUFPLEVBQUUsaUJBREw7QUFFSixzQkFBa0I7QUFDaEJBLE1BQUFBLE9BQU8sRUFBRSxpQkFETztBQUVoQnpSLE1BQUFBLFFBQVEsRUFBRTtBQUZNO0FBRmQ7QUFEd0IsQ0FBWCxFQVFsQnVTLFlBUmtCLENBQXJCO2VBVWU2RSxZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0LCB7IHVzZUVmZmVjdCwgdXNlTWVtbywgdXNlUmVmLCB1c2VTdGF0ZSB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCBSZWFjdERPTSBmcm9tICdyZWFjdC1kb20nO1xuaW1wb3J0IHsgY3JlYXRlUm9vdCB9IGZyb20gJ3JlYWN0LWRvbS9jbGllbnQnO1xuaW1wb3J0IHsgTm9kZVNlbGVjdGlvbiB9IGZyb20gJ3Byb3NlbWlycm9yLXN0YXRlJztcbmltcG9ydCB7IFRleHRTdHlsZUtpdCB9IGZyb20gJ0B0aXB0YXAvZXh0ZW5zaW9uLXRleHQtc3R5bGUnO1xuaW1wb3J0IHsgRWRpdG9yQ29udGVudCwgdXNlRWRpdG9yLCB1c2VFZGl0b3JTdGF0ZSB9IGZyb20gJ0B0aXB0YXAvcmVhY3QnO1xuaW1wb3J0IFN0YXJ0ZXJLaXQgZnJvbSAnQHRpcHRhcC9zdGFydGVyLWtpdCc7XG5pbXBvcnQgeyBUYWJsZSB9IGZyb20gJ0B0aXB0YXAvZXh0ZW5zaW9uLXRhYmxlJztcbmltcG9ydCB7IFRhYmxlUm93IH0gZnJvbSAnQHRpcHRhcC9leHRlbnNpb24tdGFibGUtcm93JztcbmltcG9ydCB7IFRhYmxlQ2VsbCB9IGZyb20gJ0B0aXB0YXAvZXh0ZW5zaW9uLXRhYmxlLWNlbGwnO1xuaW1wb3J0IHsgVGFibGVIZWFkZXIgfSBmcm9tICdAdGlwdGFwL2V4dGVuc2lvbi10YWJsZS1oZWFkZXInO1xuaW1wb3J0IFN1cGVyU2NyaXB0IGZyb20gJ0B0aXB0YXAvZXh0ZW5zaW9uLXN1cGVyc2NyaXB0JztcbmltcG9ydCBTdWJTY3JpcHQgZnJvbSAnQHRpcHRhcC9leHRlbnNpb24tc3Vic2NyaXB0JztcbmltcG9ydCBUZXh0QWxpZ24gZnJvbSAnQHRpcHRhcC9leHRlbnNpb24tdGV4dC1hbGlnbic7XG5pbXBvcnQgSW1hZ2UgZnJvbSAnQHRpcHRhcC9leHRlbnNpb24taW1hZ2UnO1xuXG5pbXBvcnQgeyB3aXRoU3R5bGVzIH0gZnJvbSAnQG1hdGVyaWFsLXVpL2NvcmUvc3R5bGVzJztcbmltcG9ydCB7XG4gIEV4cGxpY2l0Q29uc3RydWN0ZWRSZXNwb25zZU5vZGUsXG4gIERyYWdJblRoZUJsYW5rTm9kZSxcbiAgSW5saW5lRHJvcGRvd25Ob2RlLFxuICBSZXNwb25zZUFyZWFFeHRlbnNpb24sXG59IGZyb20gJy4vZXh0ZW5zaW9ucy9yZXNwb25zZUFyZWEnO1xuaW1wb3J0IHsgTWF0aE5vZGUgfSBmcm9tICcuL2V4dGVuc2lvbnMvbWF0aCc7XG5pbXBvcnQgY2xhc3NOYW1lcyBmcm9tICdjbGFzc25hbWVzJztcbmltcG9ydCB7IGNvbG9yIH0gZnJvbSAnQHBpZS1saWIvcmVuZGVyLXVpJztcbmltcG9ydCB7IHByaW1hcnkgfSBmcm9tICcuL3RoZW1lJztcbmltcG9ydCB7IFBJRV9UT09MQkFSX19DTEFTUyB9IGZyb20gJy4vY29uc3RhbnRzJztcbmltcG9ydCB7IERvbmVCdXR0b24gfSBmcm9tICcuL3BsdWdpbnMvdG9vbGJhci9kb25lLWJ1dHRvbic7XG5pbXBvcnQgeyBidWlsZFBsdWdpbnMsIERFRkFVTFRfUExVR0lOUyB9IGZyb20gXCIuL3BsdWdpbnMvaW5kZXhcIjtcbmltcG9ydCBCb2xkIGZyb20gJ0BtYXRlcmlhbC11aS9pY29ucy9Gb3JtYXRCb2xkJztcbmltcG9ydCBJdGFsaWMgZnJvbSAnQG1hdGVyaWFsLXVpL2ljb25zL0Zvcm1hdEl0YWxpYyc7XG5pbXBvcnQgU3RyaWtldGhyb3VnaCBmcm9tICdAbWF0ZXJpYWwtdWkvaWNvbnMvRm9ybWF0U3RyaWtldGhyb3VnaCc7XG5pbXBvcnQgQ29kZSBmcm9tICdAbWF0ZXJpYWwtdWkvaWNvbnMvQ29kZSc7XG5pbXBvcnQgR3JpZE9uIGZyb20gJ0BtYXRlcmlhbC11aS9pY29ucy9HcmlkT24nO1xuaW1wb3J0IEJ1bGxldGVkTGlzdEljb24gZnJvbSAnQG1hdGVyaWFsLXVpL2ljb25zL0Zvcm1hdExpc3RCdWxsZXRlZCc7XG5pbXBvcnQgTnVtYmVyZWRMaXN0SWNvbiBmcm9tICdAbWF0ZXJpYWwtdWkvaWNvbnMvRm9ybWF0TGlzdE51bWJlcmVkJztcbmltcG9ydCBVbmRlcmxpbmUgZnJvbSAnQG1hdGVyaWFsLXVpL2ljb25zL0Zvcm1hdFVuZGVybGluZWQnO1xuaW1wb3J0IEZ1bmN0aW9ucyBmcm9tICdAbWF0ZXJpYWwtdWkvaWNvbnMvRnVuY3Rpb25zJztcbmltcG9ydCBJbWFnZUljb24gZnJvbSAnQG1hdGVyaWFsLXVpL2ljb25zL0ltYWdlJztcbmltcG9ydCB7IFRvb2xiYXJJY29uIH0gZnJvbSAnLi9wbHVnaW5zL3Jlc3BBcmVhL2ljb25zJztcbmltcG9ydCBSZWRvIGZyb20gJ0BtYXRlcmlhbC11aS9pY29ucy9SZWRvJztcbmltcG9ydCBVbmRvIGZyb20gJ0BtYXRlcmlhbC11aS9pY29ucy9VbmRvJztcbmltcG9ydCBUaGVhdGVyc0ljb24gZnJvbSAnQG1hdGVyaWFsLXVpL2ljb25zL1RoZWF0ZXJzJztcbmltcG9ydCBWb2x1bWVVcEljb24gZnJvbSAnQG1hdGVyaWFsLXVpL2ljb25zL1ZvbHVtZVVwJztcbmltcG9ydCB7IGNoYXJhY3Rlckljb25zLCBzcGFuaXNoQ29uZmlnLCBzcGVjaWFsQ29uZmlnIH0gZnJvbSAnLi9wbHVnaW5zL2NoYXJhY3RlcnMvdXRpbHMnO1xuaW1wb3J0IFByb3BUeXBlcyBmcm9tICdwcm9wLXR5cGVzJztcbmltcG9ydCB7IE1hdGhUb29sYmFyLCBQdXJlVG9vbGJhciB9IGZyb20gJ0BwaWUtbGliL21hdGgtdG9vbGJhcic7XG5pbXBvcnQgZ2V0IGZyb20gJ2xvZGFzaC9nZXQnO1xuaW1wb3J0IEN1c3RvbVBvcHBlciBmcm9tICcuL3BsdWdpbnMvY2hhcmFjdGVycy9jdXN0b20tcG9wcGVyJztcbmltcG9ydCBUZXh0QWxpZ25JY29uIGZyb20gJy4vcGx1Z2lucy90ZXh0QWxpZ24vaWNvbnMnO1xuaW1wb3J0IENTU0ljb24gZnJvbSAnLi9wbHVnaW5zL2Nzcy9pY29ucyc7XG5cbmltcG9ydCB7IEltYWdlVXBsb2FkTm9kZSB9IGZyb20gJy4vZXh0ZW5zaW9ucy9pbWFnZSc7XG5pbXBvcnQgeyBNZWRpYSB9IGZyb20gJy4vZXh0ZW5zaW9ucy9tZWRpYSc7XG5pbXBvcnQgeyBDU1NNYXJrIH0gZnJvbSAnLi9leHRlbnNpb25zL2Nzcyc7XG5pbXBvcnQgeyBBZGRDb2x1bW4sIEFkZFJvdywgUmVtb3ZlQ29sdW1uLCBSZW1vdmVSb3csIFJlbW92ZVRhYmxlIH0gZnJvbSAnLi9wbHVnaW5zL3RhYmxlL2ljb25zJztcbmltcG9ydCBCb3JkZXJBbGwgZnJvbSAnQG1hdGVyaWFsLXVpL2ljb25zL0JvcmRlckFsbCc7XG5cbmNvbnN0IENoYXJhY3Rlckljb24gPSAoeyBsZXR0ZXIgfSkgPT4gKFxuICA8ZGl2XG4gICAgc3R5bGU9e3tcbiAgICAgIGZvbnRTaXplOiAnMjRweCcsXG4gICAgICBsaW5lSGVpZ2h0OiAnMjRweCcsXG4gICAgfX1cbiAgPlxuICAgIHtsZXR0ZXJ9XG4gIDwvZGl2PlxuKTtcblxuQ2hhcmFjdGVySWNvbi5wcm9wVHlwZXMgPSB7XG4gIGxldHRlcjogUHJvcFR5cGVzLnN0cmluZyxcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBDaGFyYWN0ZXJQaWNrZXIoeyBlZGl0b3IsIG9wdHMsIG9uQ2xvc2UgfSkge1xuICBpZiAoIW9wdHM/LmNoYXJhY3RlcnM/Lmxlbmd0aCkge1xuICAgIHJldHVybiBudWxsO1xuICB9XG5cbiAgY29uc3QgY29udGFpbmVyUmVmID0gdXNlUmVmKG51bGwpO1xuICBjb25zdCBbcG9zaXRpb24sIHNldFBvc2l0aW9uXSA9IHVzZVN0YXRlKHsgdG9wOiAwLCBsZWZ0OiAwIH0pO1xuICBjb25zdCBbcG9wb3Zlciwgc2V0UG9wb3Zlcl0gPSB1c2VTdGF0ZShudWxsKTtcblxuICBsZXQgY29uZmlnVG9Vc2U7XG5cbiAgc3dpdGNoICh0cnVlKSB7XG4gICAgY2FzZSBvcHRzLmxhbmd1YWdlID09PSAnc3BhbmlzaCc6XG4gICAgICBjb25maWdUb1VzZSA9IHNwYW5pc2hDb25maWc7XG4gICAgICBicmVhaztcbiAgICBjYXNlIG9wdHMubGFuZ3VhZ2UgPT09ICdzcGVjaWFsJzpcbiAgICAgIGNvbmZpZ1RvVXNlID0gc3BlY2lhbENvbmZpZztcbiAgICAgIGJyZWFrO1xuICAgIGRlZmF1bHQ6XG4gICAgICBjb25maWdUb1VzZSA9IG9wdHM7XG4gIH1cblxuICBjb25zdCBsYXlvdXRGb3JDaGFyYWN0ZXJzID0gY29uZmlnVG9Vc2UuY2hhcmFjdGVycy5yZWR1Y2UoXG4gICAgKG9iaiwgYXJyKSA9PiB7XG4gICAgICBpZiAoYXJyLmxlbmd0aCA+PSBvYmouY29sdW1ucykge1xuICAgICAgICBvYmouY29sdW1ucyA9IGFyci5sZW5ndGg7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBvYmo7XG4gICAgfSxcbiAgICB7IHJvd3M6IGNvbmZpZ1RvVXNlLmNoYXJhY3RlcnMubGVuZ3RoLCBjb2x1bW5zOiAwIH0sXG4gICk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgY2xvc2VQb3BPdmVyKCk7XG4gICAgfTtcbiAgfSwgW10pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFlZGl0b3IpIHJldHVybjtcblxuICAgIC8vIENhbGN1bGF0ZSBwb3NpdGlvbiByZWxhdGl2ZSB0byBzZWxlY3Rpb25cbiAgICBjb25zdCBib2R5UmVjdCA9IGRvY3VtZW50LmJvZHkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XG4gICAgY29uc3QgeyBmcm9tIH0gPSBlZGl0b3Iuc3RhdGUuc2VsZWN0aW9uO1xuICAgIGNvbnN0IHN0YXJ0ID0gZWRpdG9yLnZpZXcuY29vcmRzQXRQb3MoZnJvbSk7XG4gICAgc2V0UG9zaXRpb24oe1xuICAgICAgdG9wOiBzdGFydC50b3AgKyBNYXRoLmFicyhib2R5UmVjdC50b3ApICsgNDAsIC8vIHNoaWZ0IGFib3ZlXG4gICAgICBsZWZ0OiBzdGFydC5sZWZ0LFxuICAgIH0pO1xuXG4gICAgY29uc3QgaGFuZGxlQ2xpY2tPdXRzaWRlID0gKGUpID0+IHtcbiAgICAgIGlmIChjb250YWluZXJSZWYuY3VycmVudCAmJiAhY29udGFpbmVyUmVmLmN1cnJlbnQuY29udGFpbnMoZS50YXJnZXQpICYmICFlZGl0b3Iudmlldy5kb20uY29udGFpbnMoZS50YXJnZXQpKSB7XG4gICAgICAgIG9uQ2xvc2UoKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgaGFuZGxlQ2xpY2tPdXRzaWRlKTtcbiAgICByZXR1cm4gKCkgPT4gZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgaGFuZGxlQ2xpY2tPdXRzaWRlKTtcbiAgfSwgW2VkaXRvcl0pO1xuXG4gIGNvbnN0IHJlbmRlclBvcE92ZXIgPSAoZXZlbnQsIGVsKSA9PiBzZXRQb3BvdmVyKHsgYW5jaG9yRWw6IGV2ZW50LmN1cnJlbnRUYXJnZXQsIGVsIH0pO1xuICBjb25zdCBjbG9zZVBvcE92ZXIgPSAoKSA9PiBzZXRQb3BvdmVyKG51bGwpO1xuXG4gIGNvbnN0IGhhbmRsZUNoYW5nZSA9ICh2YWwpID0+IHtcbiAgICBpZiAodHlwZW9mIHZhbCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGVkaXRvclxuICAgICAgICAuY2hhaW4oKVxuICAgICAgICAuZm9jdXMoKVxuICAgICAgICAuaW5zZXJ0Q29udGVudCh2YWwpXG4gICAgICAgIC5ydW4oKTtcbiAgICB9XG4gIH07XG5cbiAgcmV0dXJuIChcbiAgICA8UmVhY3QuRnJhZ21lbnQ+XG4gICAgICB7UmVhY3RET00uY3JlYXRlUG9ydGFsKFxuICAgICAgICA8ZGl2XG4gICAgICAgICAgcmVmPXtjb250YWluZXJSZWZ9XG4gICAgICAgICAgY2xhc3NOYW1lPVwiaW5zZXJ0LWNoYXJhY3Rlci1kaWFsb2dcIlxuICAgICAgICAgIHN0eWxlPXt7XG4gICAgICAgICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICAgICAgICAgIHRvcDogYCR7cG9zaXRpb24udG9wfXB4YCxcbiAgICAgICAgICAgIGxlZnQ6IGAke3Bvc2l0aW9uLmxlZnR9cHhgLFxuICAgICAgICAgICAgbWF4V2lkdGg6ICc1MDBweCcsXG4gICAgICAgICAgfX1cbiAgICAgICAgPlxuICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICA8UHVyZVRvb2xiYXJcbiAgICAgICAgICAgICAga2V5UGFkQ2hhcmFjdGVyUmVmPXtvcHRzLmtleVBhZENoYXJhY3RlclJlZn1cbiAgICAgICAgICAgICAgc2V0S2V5cGFkSW50ZXJhY3Rpb249e29wdHMuc2V0S2V5cGFkSW50ZXJhY3Rpb259XG4gICAgICAgICAgICAgIGF1dG9Gb2N1c1xuICAgICAgICAgICAgICBub0RlY2ltYWxcbiAgICAgICAgICAgICAgaGlkZUlucHV0XG4gICAgICAgICAgICAgIG5vTGF0ZXhIYW5kbGluZ1xuICAgICAgICAgICAgICBoaWRlRG9uZUJ1dHRvbkJhY2tncm91bmRcbiAgICAgICAgICAgICAgbGF5b3V0Rm9yS2V5UGFkPXtsYXlvdXRGb3JDaGFyYWN0ZXJzfVxuICAgICAgICAgICAgICBhZGRpdGlvbmFsS2V5cz17Y29uZmlnVG9Vc2UuY2hhcmFjdGVycy5yZWR1Y2UoKGFyciwgbikgPT4ge1xuICAgICAgICAgICAgICAgIGFyciA9IFtcbiAgICAgICAgICAgICAgICAgIC4uLmFycixcbiAgICAgICAgICAgICAgICAgIC4uLm4ubWFwKChrKSA9PiAoe1xuICAgICAgICAgICAgICAgICAgICBuYW1lOiBnZXQoaywgJ25hbWUnKSB8fCBrLFxuICAgICAgICAgICAgICAgICAgICB3cml0ZTogZ2V0KGssICd3cml0ZScpIHx8IGssXG4gICAgICAgICAgICAgICAgICAgIGxhYmVsOiBnZXQoaywgJ2xhYmVsJykgfHwgayxcbiAgICAgICAgICAgICAgICAgICAgY2F0ZWdvcnk6ICdjaGFyYWN0ZXInLFxuICAgICAgICAgICAgICAgICAgICBleHRyYUNsYXNzOiAnY2hhcmFjdGVyJyxcbiAgICAgICAgICAgICAgICAgICAgZXh0cmFQcm9wczoge1xuICAgICAgICAgICAgICAgICAgICAgIC4uLihrLmV4dHJhUHJvcHMgfHwge30pLFxuICAgICAgICAgICAgICAgICAgICAgIHN0eWxlOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAuLi4oay5leHRyYVByb3BzIHx8IHt9KS5zdHlsZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlcjogJzFweCBzb2xpZCAjMDAwJyxcbiAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICAuLi4oY29uZmlnVG9Vc2UuaGFzUHJldmlld1xuICAgICAgICAgICAgICAgICAgICAgID8ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb25zOiB7IG9uTW91c2VFbnRlcjogKGV2KSA9PiByZW5kZXJQb3BPdmVyKGV2LCBrKSwgb25Nb3VzZUxlYXZlOiBjbG9zZVBvcE92ZXIgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICA6IHt9KSxcbiAgICAgICAgICAgICAgICAgIH0pKSxcbiAgICAgICAgICAgICAgICBdO1xuXG4gICAgICAgICAgICAgICAgcmV0dXJuIGFycjtcbiAgICAgICAgICAgICAgfSwgW10pfVxuICAgICAgICAgICAgICBrZXlwYWRNb2RlPVwibGFuZ3VhZ2VcIlxuICAgICAgICAgICAgICBvbkNoYW5nZT17aGFuZGxlQ2hhbmdlfVxuICAgICAgICAgICAgICBvbkRvbmU9e29uQ2xvc2V9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj4sXG4gICAgICAgIGRvY3VtZW50LmJvZHksXG4gICAgICApfVxuICAgICAge3BvcG92ZXIgJiZcbiAgICAgICAgUmVhY3RET00uY3JlYXRlUG9ydGFsKFxuICAgICAgICAgIDxDdXN0b21Qb3BwZXIgb25DbG9zZT17Y2xvc2VQb3BPdmVyfSBhbmNob3JFbD17cG9wb3Zlci5hbmNob3JFbH0+XG4gICAgICAgICAgICA8ZGl2Pntwb3BvdmVyLmVsLmxhYmVsfTwvZGl2PlxuICAgICAgICAgICAgPGRpdiBzdHlsZT17eyBmb250U2l6ZTogMjAsIGxpbmVIZWlnaHQ6ICcyMHB4JyB9fT57cG9wb3Zlci5lbC5kZXNjcmlwdGlvbn08L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgc3R5bGU9e3sgZm9udFNpemU6IDIwLCBsaW5lSGVpZ2h0OiAnMjBweCcgfX0+e3BvcG92ZXIuZWwudW5pY29kZX08L2Rpdj5cbiAgICAgICAgICA8L0N1c3RvbVBvcHBlcj4sXG4gICAgICAgICAgZG9jdW1lbnQuYm9keSxcbiAgICAgICAgKX1cbiAgICA8L1JlYWN0LkZyYWdtZW50PlxuICApO1xufVxuXG5jb25zdCBTdXBlcnNjcmlwdEljb24gPSAoKSA9PiAoXG4gIDxzdmcgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiIGhlaWdodD1cIjI0cHhcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgd2lkdGg9XCIyNHB4XCIgZmlsbD1cIm5vbmVcIj5cbiAgICA8cGF0aFxuICAgICAgZD1cIk0yMiw3aC0ydjFoM3YxaC00VjdjMC0wLjU1LDAuNDUtMSwxLTFoMlY1aC0zVjRoM2MwLjU1LDAsMSwwLjQ1LDEsMXYxQzIzLDYuNTUsMjIuNTUsNywyMiw3eiBNNS44OCwyMGgyLjY2bDMuNC01LjQyaDAuMTIgbDMuNCw1LjQyaDIuNjZsLTQuNjUtNy4yN0wxNy44MSw2aC0yLjY4bC0zLjA3LDQuOTloLTAuMTJMOC44NSw2SDYuMTlsNC4zMiw2LjczTDUuODgsMjB6XCJcbiAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIlxuICAgIC8+XG4gIDwvc3ZnPlxuKTtcblxuY29uc3QgU3Vic2NyaXB0SWNvbiA9ICgpID0+IChcbiAgPHN2ZyB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgaGVpZ2h0PVwiMjRweFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiB3aWR0aD1cIjI0cHhcIiBmaWxsPVwibm9uZVwiPlxuICAgIDxwYXRoXG4gICAgICBkPVwiTTIyLDE4aC0ydjFoM3YxaC00di0yYzAtMC41NSwwLjQ1LTEsMS0xaDJ2LTFoLTN2LTFoM2MwLjU1LDAsMSwwLjQ1LDEsMXYxQzIzLDE3LjU1LDIyLjU1LDE4LDIyLDE4eiBNNS44OCwxOGgyLjY2IGwzLjQtNS40MmgwLjEybDMuNCw1LjQyaDIuNjZsLTQuNjUtNy4yN0wxNy44MSw0aC0yLjY4bC0zLjA3LDQuOTloLTAuMTJMOC44NSw0SDYuMTlsNC4zMiw2LjczTDUuODgsMTh6XCJcbiAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIlxuICAgIC8+XG4gIDwvc3ZnPlxuKTtcblxuY29uc3QgSGVhZGluZ0ljb24gPSAoKSA9PiAoXG4gIDxzdmdcbiAgICB3aWR0aD1cIjMwXCJcbiAgICBoZWlnaHQ9XCIyOFwiXG4gICAgdmlld0JveD1cIjAgMCAzMCAyOFwiXG4gICAgZmlsbD1cIm5vbmVcIlxuICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgIHN0eWxlPXt7IHdpZHRoOiAnMjBweCcsIGhlaWdodDogJzE4cHgnIH19XG4gID5cbiAgICA8cGF0aFxuICAgICAgZD1cIk0yNyA0VjI0SDI5QzI5LjUgMjQgMzAgMjQuNSAzMCAyNVYyN0MzMCAyNy41NjI1IDI5LjUgMjggMjkgMjhIMTlDMTguNDM3NSAyOCAxOCAyNy41NjI1IDE4IDI3VjI1QzE4IDI0LjUgMTguNDM3NSAyNCAxOSAyNEgyMVYxNkg5VjI0SDExQzExLjUgMjQgMTIgMjQuNSAxMiAyNVYyN0MxMiAyNy41NjI1IDExLjUgMjggMTEgMjhIMUMwLjQzNzUgMjggMCAyNy41NjI1IDAgMjdWMjVDMCAyNC41IDAuNDM3NSAyNCAxIDI0SDNWNEgxQzAuNDM3NSA0IDAgMy41NjI1IDAgM1YxQzAgMC41IDAuNDM3NSAwIDEgMEgxMUMxMS41IDAgMTIgMC41IDEyIDFWM0MxMiAzLjU2MjUgMTEuNSA0IDExIDRIOVYxMkgyMVY0SDE5QzE4LjQzNzUgNCAxOCAzLjU2MjUgMTggM1YxQzE4IDAuNSAxOC40Mzc1IDAgMTkgMEgyOUMyOS41IDAgMzAgMC41IDMwIDFWM0MzMCAzLjU2MjUgMjkuNSA0IDI5IDRIMjdaXCJcbiAgICAgIGZpbGw9XCJjdXJyZW50Q29sb3JcIlxuICAgIC8+XG4gIDwvc3ZnPlxuKTtcblxuY29uc3QgRXh0ZW5kZWRUYWJsZSA9IFRhYmxlLmV4dGVuZCh7XG4gIGFkZEF0dHJpYnV0ZXMoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGJvcmRlcjogeyBkZWZhdWx0OiAnMScgfSxcbiAgICB9O1xuICB9LFxuICByZW5kZXJIVE1MKHByb3BzKSB7XG4gICAgY29uc3Qgb3JpZ2luYWxUYWJsZSA9IHRoaXMucGFyZW50KHByb3BzKTtcbiAgICBjb25zdCB7IGJvcmRlciB9ID0gcHJvcHMuSFRNTEF0dHJpYnV0ZXM7XG5cbiAgICBjb25zdCBwcmV2aW91c1N0eWxlID0gYCR7b3JpZ2luYWxUYWJsZVsxXS5zdHlsZX0ke29yaWdpbmFsVGFibGVbMV0uc3R5bGUubWF0Y2goLy4qOyAqLykgPyAnJyA6ICc7J31gO1xuXG4gICAgb3JpZ2luYWxUYWJsZVsxXS5zdHlsZSA9IGAke3ByZXZpb3VzU3R5bGV9XG4gICAgd2lkdGg6IDEwMCU7XG4gICAgY29sb3I6IHZhcigtLXBpZS10ZXh0LCBibGFjayk7XG4gICAgdGFibGUtbGF5b3V0OiBmaXhlZDtcbiAgICBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlO1xuICAgIGJhY2tncm91bmQtY29sb3I6IHZhcigtLXBpZS1iYWNrZ3JvdW5kLCByZ2JhKDI1NSwgMjU1LCAyNTUpKWA7XG4gICAgb3JpZ2luYWxUYWJsZVsxXS5ib3JkZXIgPSBib3JkZXIgPyBib3JkZXIgOiAnMSc7XG5cbiAgICByZXR1cm4gb3JpZ2luYWxUYWJsZTtcbiAgfSxcbn0pO1xuXG5jb25zdCBzdHlsZXMgPSAodGhlbWUpID0+ICh7XG4gIHJvb3Q6IHtcbiAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgICBwYWRkaW5nOiAnMHB4JyxcbiAgICBib3JkZXI6ICcxcHggc29saWQgI2NjYycsXG4gICAgYm9yZGVyUmFkaXVzOiAnNHB4JyxcbiAgICBjdXJzb3I6ICd0ZXh0JyxcbiAgICAnJiBbZGF0YS1zbGF0ZS1lZGl0b3I9XCJ0cnVlXCJdJzoge1xuICAgICAgd29yZEJyZWFrOiAnYnJlYWstd29yZCcsXG4gICAgICBvdmVyZmxvdzogJ3Zpc2libGUnLFxuICAgICAgbWF4SGVpZ2h0OiAnNTAwcHgnLFxuICAgICAgLy8gbmVlZGVkIGluIG9yZGVyIHRvIGJlIGFibGUgdG8gcHV0IHRoZSBmb2N1cyBiZWZvcmUgYSB2b2lkIGVsZW1lbnQgd2hlbiBpdCBpcyB0aGUgZmlyc3Qgb25lIGluIHRoZSBlZGl0b3JcbiAgICAgIHBhZGRpbmc6ICc1cHgnLFxuICAgIH0sXG5cbiAgICAnJjpmaXJzdC1jaGlsZCc6IHtcbiAgICAgIG1hcmdpblRvcDogMCxcbiAgICB9LFxuXG4gICAgJyYgdWwsICYgb2wnOiB7XG4gICAgICBwYWRkaW5nOiAnMCAxcmVtJyxcbiAgICAgIG1hcmdpbjogJzEuMjVyZW0gMXJlbSAxLjI1cmVtIDAuNHJlbScsXG4gICAgfSxcblxuICAgICcmIHVsIGxpIHAsICYgb2wgbGkgcCc6IHtcbiAgICAgIG1hcmdpblRvcDogJzAuMjVlbScsXG4gICAgICBtYXJnaW5Cb3R0b206ICcwLjI1ZW0nLFxuICAgIH0sXG5cbiAgICAnJiBoMSwgJiBoMiwgJiBoMywgJiBoNCwgJiBoNSwgJiBoNic6IHtcbiAgICAgIGxpbmVIZWlnaHQ6IDEuMSxcbiAgICAgIG1hcmdpblRvcDogJzIuNXJlbScsXG4gICAgICB0ZXh0V3JhcDogJ3ByZXR0eScsXG4gICAgfSxcblxuICAgICcmIGgxLCAmIGgyJzoge1xuICAgICAgbWFyZ2luVG9wOiAnMy41cmVtJyxcbiAgICAgIG1hcmdpbkJvdHRvbTogJzEuNXJlbScsXG4gICAgfSxcblxuICAgICcmIGgxJzoge1xuICAgICAgZm9udFNpemU6ICcxLjRyZW0nLFxuICAgIH0sXG5cbiAgICAnJiBoMic6IHtcbiAgICAgIGZvbnRTaXplOiAnMS4ycmVtJyxcbiAgICB9LFxuXG4gICAgJyYgaDMnOiB7XG4gICAgICBmb250U2l6ZTogJzEuMXJlbScsXG4gICAgfSxcblxuICAgICcmIGg0LCAmIGg1LCAmIGg2Jzoge1xuICAgICAgZm9udFNpemU6ICcxcmVtJyxcbiAgICB9LFxuXG4gICAgJyYgY29kZSc6IHtcbiAgICAgIGJhY2tncm91bmRDb2xvcjogJ3ZhcigtLXB1cnBsZS1saWdodCknLFxuICAgICAgYm9yZGVyUmFkaXVzOiAnMC40cmVtJyxcbiAgICAgIGNvbG9yOiAndmFyKC0tYmxhY2spJyxcbiAgICAgIGZvbnRTaXplOiAnMC44NXJlbScsXG4gICAgICBwYWRkaW5nOiAnMC4yNWVtIDAuM2VtJyxcbiAgICB9LFxuXG4gICAgJyYgcHJlJzoge1xuICAgICAgYmFja2dyb3VuZDogJ3ZhcigtLWJsYWNrKScsXG4gICAgICBib3JkZXJSYWRpdXM6ICcwLjVyZW0nLFxuICAgICAgY29sb3I6ICd2YXIoLS13aGl0ZSknLFxuICAgICAgZm9udEZhbWlseTogXCInSmV0QnJhaW5zTW9ubycsIG1vbm9zcGFjZVwiLFxuICAgICAgbWFyZ2luOiAnMS41cmVtIDAnLFxuICAgICAgcGFkZGluZzogJzAuNzVyZW0gMXJlbScsXG5cbiAgICAgICcmIGNvZGUnOiB7XG4gICAgICAgIGJhY2tncm91bmQ6ICdub25lJyxcbiAgICAgICAgY29sb3I6ICdpbmhlcml0JyxcbiAgICAgICAgZm9udFNpemU6ICcwLjhyZW0nLFxuICAgICAgICBwYWRkaW5nOiAwLFxuICAgICAgfSxcbiAgICB9LFxuXG4gICAgJyYgYmxvY2txdW90ZSc6IHtcbiAgICAgIGJvcmRlckxlZnQ6ICczcHggc29saWQgdmFyKC0tZ3JheS0zKScsXG4gICAgICBtYXJnaW46ICcxLjVyZW0gMCcsXG4gICAgICBwYWRkaW5nTGVmdDogJzFyZW0nLFxuICAgIH0sXG5cbiAgICAnJiBocic6IHtcbiAgICAgIGJvcmRlcjogJ25vbmUnLFxuICAgICAgYm9yZGVyVG9wOiAnMXB4IHNvbGlkIHZhcigtLWdyYXktMiknLFxuICAgICAgbWFyZ2luOiAnMnJlbSAwJyxcbiAgICB9LFxuXG4gICAgJyYgdGFibGUnOiB7XG4gICAgICB0YWJsZUxheW91dDogJ2ZpeGVkJyxcbiAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICBib3JkZXJDb2xsYXBzZTogJ2NvbGxhcHNlJyxcbiAgICAgIGNvbG9yOiBjb2xvci50ZXh0KCksXG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6IGNvbG9yLmJhY2tncm91bmQoKSxcbiAgICB9LFxuICAgICcmIHRhYmxlOm5vdChbYm9yZGVyPVwiMVwiXSkgdHInOiB7XG4gICAgICBib3JkZXJUb3A6ICcxcHggc29saWQgI2RmZTJlNScsXG4gICAgfSxcbiAgICAnJiB0ZCwgdGgnOiB7XG4gICAgICBwYWRkaW5nOiAnLjZlbSAxZW0nLFxuICAgICAgdGV4dEFsaWduOiAnY2VudGVyJyxcbiAgICB9LFxuICAgICcmIHRhYmxlOm5vdChbYm9yZGVyPVwiMVwiXSkgdGQsIHRoJzoge1xuICAgICAgYm9yZGVyOiAnMXB4IHNvbGlkICNkZmUyZTUnLFxuICAgIH0sXG4gIH0sXG4gIGNoaWxkcmVuOiB7XG4gICAgcGFkZGluZzogJzEwcHggMTZweCcsXG4gIH0sXG4gIGVkaXRvckhvbGRlcjoge1xuICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICAgIHBhZGRpbmc6ICcwcHgnLFxuICAgIC8vIG92ZXJmbG93WTogJ2F1dG8nLFxuICAgIG92ZXJmbG93OiAndmlzaWJsZScsXG4gICAgY29sb3I6IGNvbG9yLnRleHQoKSxcbiAgICBiYWNrZ3JvdW5kQ29sb3I6IGNvbG9yLmJhY2tncm91bmQoKSxcbiAgICAnJjo6YmVmb3JlJzoge1xuICAgICAgbGVmdDogJzAnLFxuICAgICAgcmlnaHQ6ICcwJyxcbiAgICAgIGJvdHRvbTogJzAnLFxuICAgICAgaGVpZ2h0OiAnMXB4JyxcbiAgICAgIGNvbnRlbnQ6ICdcIlwiJyxcbiAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgdHJhbnNpdGlvbjogJ2JhY2tncm91bmQtY29sb3IgMjAwbXMgY3ViaWMtYmV6aWVyKDAuNCwgMCwgMC4yLCAxKSAwbXMnLFxuICAgICAgcG9pbnRlckV2ZW50czogJ25vbmUnLFxuICAgICAgYmFja2dyb3VuZENvbG9yOiAncmdiYSgwLCAwLCAwLCAwLjQyKScsXG4gICAgfSxcbiAgICAnJjo6YWZ0ZXInOiB7XG4gICAgICBsZWZ0OiAnMCcsXG4gICAgICByaWdodDogJzAnLFxuICAgICAgYm90dG9tOiAnMCcsXG4gICAgICBoZWlnaHQ6ICcxcHgnLFxuICAgICAgY29udGVudDogJ1wiXCInLFxuICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgICB0cmFuc2Zvcm06ICdzY2FsZVgoMCknLFxuICAgICAgdHJhbnNpdGlvbjogJ3RyYW5zZm9ybSAyMDBtcyBjdWJpYy1iZXppZXIoMC4wLCAwLjAsIDAuMiwgMSkgMG1zLCBiYWNrZ3JvdW5kLWNvbG9yIDIwMG1zIGxpbmVhcicsXG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6ICdyZ2JhKDAsIDAsIDAsIDAuNDIpJyxcbiAgICB9LFxuICAgICcmOmZvY3VzJzoge1xuICAgICAgJyY6OmFmdGVyJzoge1xuICAgICAgICB0cmFuc2Zvcm06ICdzY2FsZVgoMSknLFxuICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IHByaW1hcnksXG4gICAgICAgIGhlaWdodDogJzJweCcsXG4gICAgICB9LFxuICAgIH0sXG4gICAgJyY6aG92ZXInOiB7XG4gICAgICAnJjo6YWZ0ZXInOiB7XG4gICAgICAgIHRyYW5zZm9ybTogJ3NjYWxlWCgxKScsXG4gICAgICAgIGJhY2tncm91bmRDb2xvcjogdGhlbWUucGFsZXR0ZS5jb21tb24uYmxhY2ssXG4gICAgICAgIGhlaWdodDogJzJweCcsXG4gICAgICB9LFxuICAgIH0sXG4gIH0sXG4gIGRpc2FibGVkVW5kZXJsaW5lOiB7XG4gICAgJyY6OmJlZm9yZSc6IHtcbiAgICAgIGRpc3BsYXk6ICdub25lJyxcbiAgICB9LFxuICAgICcmOjphZnRlcic6IHtcbiAgICAgIGRpc3BsYXk6ICdub25lJyxcbiAgICB9LFxuICB9LFxuICBkaXNhYmxlZFNjcm9sbGJhcjoge1xuICAgICcmOjotd2Via2l0LXNjcm9sbGJhcic6IHtcbiAgICAgIGRpc3BsYXk6ICdub25lJyxcbiAgICB9LFxuICAgIHNjcm9sbGJhcldpZHRoOiAnbm9uZScsXG4gICAgJy1tcy1vdmVyZmxvdy1zdHlsZSc6ICdub25lJyxcbiAgfSxcbiAgcmVhZE9ubHk6IHtcbiAgICAnJjo6YmVmb3JlJzoge1xuICAgICAgYmFja2dyb3VuZDogJ3RyYW5zcGFyZW50JyxcbiAgICAgIGJhY2tncm91bmRTaXplOiAnNXB4IDFweCcsXG4gICAgICBiYWNrZ3JvdW5kSW1hZ2U6ICdsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsIHJnYmEoMCwgMCwgMCwgMC40MikgMzMlLCB0cmFuc3BhcmVudCAwJSknLFxuICAgICAgYmFja2dyb3VuZFJlcGVhdDogJ3JlcGVhdC14JyxcbiAgICAgIGJhY2tncm91bmRQb3NpdGlvbjogJ2xlZnQgdG9wJyxcbiAgICB9LFxuICAgICcmOjphZnRlcic6IHtcbiAgICAgIGxlZnQ6ICcwJyxcbiAgICAgIHJpZ2h0OiAnMCcsXG4gICAgICBib3R0b206ICcwJyxcbiAgICAgIGhlaWdodDogJzFweCcsXG4gICAgICBjb250ZW50OiAnXCJcIicsXG4gICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICAgIHRyYW5zZm9ybTogJ3NjYWxlWCgwKScsXG4gICAgICB0cmFuc2l0aW9uOiAndHJhbnNmb3JtIDIwMG1zIGN1YmljLWJlemllcigwLjAsIDAuMCwgMC4yLCAxKSAwbXMsIGJhY2tncm91bmQtY29sb3IgMG1zIGxpbmVhcicsXG4gICAgICBiYWNrZ3JvdW5kQ29sb3I6ICdyZ2JhKDAsIDAsIDAsIDApJyxcbiAgICB9LFxuICAgICcmOmhvdmVyJzoge1xuICAgICAgJyY6OmFmdGVyJzoge1xuICAgICAgICB0cmFuc2Zvcm06ICdzY2FsZVgoMCknLFxuICAgICAgICBiYWNrZ3JvdW5kQ29sb3I6IHRoZW1lLnBhbGV0dGUuY29tbW9uLmJsYWNrLFxuICAgICAgICBoZWlnaHQ6ICcycHgnLFxuICAgICAgfSxcbiAgICB9LFxuICB9LFxuICBlZGl0b3JJbkZvY3VzOiB7XG4gICAgJyY6OmFmdGVyJzoge1xuICAgICAgdHJhbnNmb3JtOiAnc2NhbGVYKDEpJyxcbiAgICAgIGJhY2tncm91bmRDb2xvcjogcHJpbWFyeSxcbiAgICAgIGhlaWdodDogJzJweCcsXG4gICAgfSxcbiAgICAnJjpob3Zlcic6IHtcbiAgICAgICcmOjphZnRlcic6IHtcbiAgICAgICAgYmFja2dyb3VuZENvbG9yOiBwcmltYXJ5LFxuICAgICAgfSxcbiAgICB9LFxuICB9LFxuICBlcnJvcjoge1xuICAgIGJvcmRlcjogYDJweCBzb2xpZCAke3RoZW1lLnBhbGV0dGUuZXJyb3IubWFpbn0gIWltcG9ydGFudGAsXG4gIH0sXG4gIG5vQm9yZGVyOiB7XG4gICAgYm9yZGVyOiAnbm9uZScsXG4gIH0sXG4gIG5vUGFkZGluZzoge1xuICAgIHBhZGRpbmc6IDAsXG4gIH0sXG4gIHRvb2xiYXJPblRvcDoge1xuICAgIG1hcmdpblRvcDogJzQ1cHgnLFxuICB9LFxufSk7XG5cbmNvbnN0IGRlZmF1bHRSZXNwb25zZUFyZWFQcm9wcyA9IHtcbiAgb3B0aW9uczoge30sXG4gIHJlc3BBcmVhVG9vbGJhcjogKCkgPT4ge30sXG4gIG9uSGFuZGxlQXJlYUNoYW5nZTogKCkgPT4ge30sXG59O1xuXG5jb25zdCB2YWx1ZVRvU2l6ZSA9ICh2KSA9PiB7XG4gIGlmICghdikge1xuICAgIHJldHVybjtcbiAgfVxuICBjb25zdCBjYWxjUmVnZXggPSAvXmNhbGNcXCgoLiopXFwpJC87XG5cbiAgaWYgKHR5cGVvZiB2ID09PSAnc3RyaW5nJykge1xuICAgIGlmICh2LmVuZHNXaXRoKCclJykpIHtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfSBlbHNlIGlmIChcbiAgICAgIHYuZW5kc1dpdGgoJ3B4JykgfHxcbiAgICAgIHYuZW5kc1dpdGgoJ3ZoJykgfHxcbiAgICAgIHYuZW5kc1dpdGgoJ3Z3JykgfHxcbiAgICAgIHYuZW5kc1dpdGgoJ2NoJykgfHxcbiAgICAgIHYuZW5kc1dpdGgoJ2VtJykgfHxcbiAgICAgIHYubWF0Y2goY2FsY1JlZ2V4KVxuICAgICkge1xuICAgICAgcmV0dXJuIHY7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IHZhbHVlID0gcGFyc2VJbnQodiwgMTApO1xuICAgICAgcmV0dXJuIGlzTmFOKHZhbHVlKSA/IHZhbHVlIDogYCR7dmFsdWV9cHhgO1xuICAgIH1cbiAgfVxuICBpZiAodHlwZW9mIHYgPT09ICdudW1iZXInKSB7XG4gICAgcmV0dXJuIGAke3Z9cHhgO1xuICB9XG59O1xuXG5mdW5jdGlvbiBUaXB0YXBDb250YWluZXIocHJvcHMpIHtcbiAgY29uc3Qge1xuICAgIGVkaXRvcixcbiAgICBlZGl0b3JTdGF0ZSxcbiAgICBjbGFzc2VzLFxuICAgIGNoaWxkcmVuLFxuICAgIGRpc2FibGVVbmRlcmxpbmUsXG4gICAgZGlzYWJsZVNjcm9sbGJhcixcbiAgICBhY3RpdmVQbHVnaW5zLFxuICAgIHRvb2xiYXJPcHRzLFxuICAgIHJlc3BvbnNlQXJlYVByb3BzLFxuICAgIGF1dG9Gb2N1cyxcbiAgICBtaW5XaWR0aCxcbiAgICB3aWR0aCxcbiAgICBtYXhXaWR0aCxcbiAgICBtaW5IZWlnaHQsXG4gICAgaGVpZ2h0LFxuICAgIG1heEhlaWdodCxcbiAgfSA9IHByb3BzO1xuICBjb25zdCBob2xkZXJOYW1lcyA9IGNsYXNzTmFtZXMoY2xhc3Nlcy5lZGl0b3JIb2xkZXIsIHtcbiAgICBbY2xhc3Nlcy5lZGl0b3JJbkZvY3VzXTogZWRpdG9yU3RhdGUuaXNGb2N1c2VkLFxuICAgIFtjbGFzc2VzLnJlYWRPbmx5XTogZWRpdG9yU3RhdGUucmVhZE9ubHksXG4gICAgW2NsYXNzZXMuZGlzYWJsZWRVbmRlcmxpbmVdOiBkaXNhYmxlVW5kZXJsaW5lLFxuICAgIFtjbGFzc2VzLmRpc2FibGVkU2Nyb2xsYmFyXTogZGlzYWJsZVNjcm9sbGJhcixcbiAgfSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoZWRpdG9yICYmIGF1dG9Gb2N1cykge1xuICAgICAgUHJvbWlzZS5yZXNvbHZlKCkudGhlbigoKSA9PiB7XG4gICAgICAgIGVkaXRvci5jb21tYW5kcy5mb2N1cygnZW5kJyk7XG4gICAgICB9KTtcbiAgICB9XG4gIH0sIFtlZGl0b3IsIGF1dG9Gb2N1c10pO1xuXG4gIGNvbnN0IHNpemVTdHlsZSA9IHVzZU1lbW8oKCkgPT4ge1xuICAgIHJldHVybiB7XG4gICAgICB3aWR0aDogdmFsdWVUb1NpemUod2lkdGgpLFxuICAgICAgbWluV2lkdGg6IHZhbHVlVG9TaXplKG1pbldpZHRoKSxcbiAgICAgIG1heFdpZHRoOiB2YWx1ZVRvU2l6ZShtYXhXaWR0aCksXG4gICAgICBoZWlnaHQ6IHZhbHVlVG9TaXplKGhlaWdodCksXG4gICAgICBtaW5IZWlnaHQ6IHZhbHVlVG9TaXplKG1pbkhlaWdodCksXG4gICAgICBtYXhIZWlnaHQ6IHZhbHVlVG9TaXplKG1heEhlaWdodCksXG4gICAgfTtcbiAgfSwgW21pbldpZHRoLCB3aWR0aCwgbWF4V2lkdGgsIG1pbkhlaWdodCwgaGVpZ2h0LCBtYXhIZWlnaHRdKTtcblxuICByZXR1cm4gKFxuICAgIDxkaXZcbiAgICAgIGNsYXNzTmFtZT17Y2xhc3NOYW1lcyhcbiAgICAgICAge1xuICAgICAgICAgIFtjbGFzc2VzLm5vQm9yZGVyXTogdG9vbGJhck9wdHMgJiYgdG9vbGJhck9wdHMubm9Cb3JkZXIsXG4gICAgICAgICAgW2NsYXNzZXMuZXJyb3JdOiB0b29sYmFyT3B0cyAmJiB0b29sYmFyT3B0cy5lcnJvcixcbiAgICAgICAgfSxcbiAgICAgICAgY2xhc3Nlcy5yb290LFxuICAgICAgICBwcm9wcy5jbGFzc05hbWUsXG4gICAgICApfVxuICAgICAgc3R5bGU9e3sgd2lkdGg6IHNpemVTdHlsZS53aWR0aCwgbWluV2lkdGg6IHNpemVTdHlsZS5taW5XaWR0aCwgbWF4V2lkdGg6IHNpemVTdHlsZS5tYXhXaWR0aCB9fVxuICAgID5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPXtob2xkZXJOYW1lc30+XG4gICAgICAgIDxkaXZcbiAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzTmFtZXMoXG4gICAgICAgICAgICB7XG4gICAgICAgICAgICAgIFtjbGFzc2VzLm5vUGFkZGluZ106IHRvb2xiYXJPcHRzICYmIHRvb2xiYXJPcHRzLm5vUGFkZGluZyxcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBjbGFzc2VzLmNoaWxkcmVuLFxuICAgICAgICAgICl9XG4gICAgICAgID5cbiAgICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIHsvKntlZGl0b3JTdGF0ZS5pc0ZvY3VzZWQgJiYgPE1lbnVCYXIgZWRpdG9yPXtlZGl0b3J9IC8+fSovfVxuICAgICAgey8qPFRvb2xiYXIgZWRpdG9yPXtlZGl0b3J9IGVkaXRvclN0YXRlPXtlZGl0b3JTdGF0ZX0gcGx1Z2lucz17cGx1Z2luc30gdG9vbGJhck9wdHM9e3Rvb2xiYXJPcHRzfSBpc0ZvY3VzZWQ9e2VkaXRvclN0YXRlLmlzRm9jdXNlZH0gLz4qL31cbiAgICAgIHtlZGl0b3IgJiYgKFxuICAgICAgICA8U3R5bGVkTWVudUJhclxuICAgICAgICAgIGVkaXRvcj17ZWRpdG9yfVxuICAgICAgICAgIHJlc3BvbnNlQXJlYVByb3BzPXtyZXNwb25zZUFyZWFQcm9wc31cbiAgICAgICAgICB0b29sYmFyT3B0cz17dG9vbGJhck9wdHN9XG4gICAgICAgICAgYWN0aXZlUGx1Z2lucz17YWN0aXZlUGx1Z2luc31cbiAgICAgICAgICBvbkNoYW5nZT17cHJvcHMub25DaGFuZ2V9XG4gICAgICAgIC8+XG4gICAgICApfVxuICAgIDwvZGl2PlxuICApO1xufVxuXG5jb25zdCBFZGl0b3JDb250YWluZXIgPSB3aXRoU3R5bGVzKHN0eWxlcykoVGlwdGFwQ29udGFpbmVyKTtcblxuZnVuY3Rpb24gTWVudUJhcih7IGVkaXRvciwgY2xhc3NlcywgYWN0aXZlUGx1Z2lucywgdG9vbGJhck9wdHM6IHRvb2xPcHRzLCByZXNwb25zZUFyZWFQcm9wcywgb25DaGFuZ2UgfSkge1xuICBjb25zdCBbc2hvd1BpY2tlciwgc2V0U2hvd1BpY2tlcl0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IHRvb2xiYXJPcHRzID0gdG9vbE9wdHMgPz8ge307XG4gIC8vIFJlYWQgdGhlIGN1cnJlbnQgZWRpdG9yJ3Mgc3RhdGUsIGFuZCByZS1yZW5kZXIgdGhlIGNvbXBvbmVudCB3aGVuIGl0IGNoYW5nZXNcbiAgY29uc3QgZWRpdG9yU3RhdGUgPSB1c2VFZGl0b3JTdGF0ZSh7XG4gICAgZWRpdG9yLFxuICAgIHNlbGVjdG9yOiAoY3R4KSA9PiB7XG4gICAgICBjb25zdCB7IHNlbGVjdGlvbiB9ID0gY3R4LmVkaXRvcj8uc3RhdGUgfHwge307XG5cbiAgICAgIGxldCBjdXJyZW50Tm9kZTtcblxuICAgICAgaWYgKHNlbGVjdGlvbiBpbnN0YW5jZW9mIE5vZGVTZWxlY3Rpb24pIHtcbiAgICAgICAgY3VycmVudE5vZGUgPSBzZWxlY3Rpb24ubm9kZTsgLy8gdGhlIHNlbGVjdGVkIG5vZGVcbiAgICAgIH1cblxuICAgICAgY29uc3QgaGlkZURlZmF1bHRUb29sYmFyID1cbiAgICAgICAgY3R4LmVkaXRvcj8uaXNBY3RpdmUoJ21hdGgnKSB8fFxuICAgICAgICBjdHguZWRpdG9yPy5pc0FjdGl2ZSgnZXhwbGljaXRfY29uc3RydWN0ZWRfcmVzcG9uc2UnKSB8fFxuICAgICAgICBjdHguZWRpdG9yPy5pc0FjdGl2ZSgnaW1hZ2VVcGxvYWROb2RlJyk7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIGN1cnJlbnROb2RlLFxuICAgICAgICBoaWRlRGVmYXVsdFRvb2xiYXIsXG4gICAgICAgIGlzRm9jdXNlZDogY3R4LmVkaXRvcj8uaXNGb2N1c2VkLFxuICAgICAgICBpc0JvbGQ6IGN0eC5lZGl0b3IuaXNBY3RpdmUoJ2JvbGQnKSA/PyBmYWxzZSxcbiAgICAgICAgY2FuQm9sZDpcbiAgICAgICAgICBjdHguZWRpdG9yXG4gICAgICAgICAgICAuY2FuKClcbiAgICAgICAgICAgIC5jaGFpbigpXG4gICAgICAgICAgICAudG9nZ2xlQm9sZCgpXG4gICAgICAgICAgICAucnVuKCkgPz8gZmFsc2UsXG4gICAgICAgIGlzVGFibGU6IGN0eC5lZGl0b3IuaXNBY3RpdmUoJ3RhYmxlJykgPz8gZmFsc2UsXG4gICAgICAgIHRhYmxlSGFzQm9yZGVyOiBjdHguZWRpdG9yLmdldEF0dHJpYnV0ZXMoJ3RhYmxlJyk/LmJvcmRlciA9PT0gJzEnID8/IGZhbHNlLFxuICAgICAgICBjYW5UYWJsZTpcbiAgICAgICAgICBjdHguZWRpdG9yXG4gICAgICAgICAgICAuY2FuKClcbiAgICAgICAgICAgIC5jaGFpbigpXG4gICAgICAgICAgICAuaW5zZXJ0VGFibGUoKVxuICAgICAgICAgICAgLnJ1bigpID8/IGZhbHNlLFxuICAgICAgICBpc0l0YWxpYzogY3R4LmVkaXRvci5pc0FjdGl2ZSgnaXRhbGljJykgPz8gZmFsc2UsXG4gICAgICAgIGNhbkl0YWxpYzpcbiAgICAgICAgICBjdHguZWRpdG9yXG4gICAgICAgICAgICAuY2FuKClcbiAgICAgICAgICAgIC5jaGFpbigpXG4gICAgICAgICAgICAudG9nZ2xlSXRhbGljKClcbiAgICAgICAgICAgIC5ydW4oKSA/PyBmYWxzZSxcbiAgICAgICAgaXNTdHJpa2U6IGN0eC5lZGl0b3IuaXNBY3RpdmUoJ3N0cmlrZScpID8/IGZhbHNlLFxuICAgICAgICBjYW5TdHJpa2U6XG4gICAgICAgICAgY3R4LmVkaXRvclxuICAgICAgICAgICAgLmNhbigpXG4gICAgICAgICAgICAuY2hhaW4oKVxuICAgICAgICAgICAgLnRvZ2dsZVN0cmlrZSgpXG4gICAgICAgICAgICAucnVuKCkgPz8gZmFsc2UsXG4gICAgICAgIGlzQ29kZTogY3R4LmVkaXRvci5pc0FjdGl2ZSgnY29kZScpID8/IGZhbHNlLFxuICAgICAgICBjYW5Db2RlOlxuICAgICAgICAgIGN0eC5lZGl0b3JcbiAgICAgICAgICAgIC5jYW4oKVxuICAgICAgICAgICAgLmNoYWluKClcbiAgICAgICAgICAgIC50b2dnbGVDb2RlKClcbiAgICAgICAgICAgIC5ydW4oKSA/PyBmYWxzZSxcbiAgICAgICAgY2FuQ2xlYXJNYXJrczpcbiAgICAgICAgICBjdHguZWRpdG9yXG4gICAgICAgICAgICAuY2FuKClcbiAgICAgICAgICAgIC5jaGFpbigpXG4gICAgICAgICAgICAudW5zZXRBbGxNYXJrcygpXG4gICAgICAgICAgICAucnVuKCkgPz8gZmFsc2UsXG4gICAgICAgIGlzVW5kZXJsaW5lOiBjdHguZWRpdG9yLmlzQWN0aXZlKCd1bmRlcmxpbmUnKSA/PyBmYWxzZSxcbiAgICAgICAgaXNTdWJTY3JpcHQ6IGN0eC5lZGl0b3IuaXNBY3RpdmUoJ3N1YnNjcmlwdCcpID8/IGZhbHNlLFxuICAgICAgICBpc1N1cGVyU2NyaXB0OiBjdHguZWRpdG9yLmlzQWN0aXZlKCdzdXBlcnNjcmlwdCcpID8/IGZhbHNlLFxuICAgICAgICBpc1BhcmFncmFwaDogY3R4LmVkaXRvci5pc0FjdGl2ZSgncGFyYWdyYXBoJykgPz8gZmFsc2UsXG4gICAgICAgIGlzSGVhZGluZzE6IGN0eC5lZGl0b3IuaXNBY3RpdmUoJ2hlYWRpbmcnLCB7IGxldmVsOiAxIH0pID8/IGZhbHNlLFxuICAgICAgICBpc0hlYWRpbmcyOiBjdHguZWRpdG9yLmlzQWN0aXZlKCdoZWFkaW5nJywgeyBsZXZlbDogMiB9KSA/PyBmYWxzZSxcbiAgICAgICAgaXNIZWFkaW5nMzogY3R4LmVkaXRvci5pc0FjdGl2ZSgnaGVhZGluZycsIHsgbGV2ZWw6IDMgfSkgPz8gZmFsc2UsXG4gICAgICAgIGlzSGVhZGluZzQ6IGN0eC5lZGl0b3IuaXNBY3RpdmUoJ2hlYWRpbmcnLCB7IGxldmVsOiA0IH0pID8/IGZhbHNlLFxuICAgICAgICBpc0hlYWRpbmc1OiBjdHguZWRpdG9yLmlzQWN0aXZlKCdoZWFkaW5nJywgeyBsZXZlbDogNSB9KSA/PyBmYWxzZSxcbiAgICAgICAgaXNIZWFkaW5nNjogY3R4LmVkaXRvci5pc0FjdGl2ZSgnaGVhZGluZycsIHsgbGV2ZWw6IDYgfSkgPz8gZmFsc2UsXG4gICAgICAgIGlzQnVsbGV0TGlzdDogY3R4LmVkaXRvci5pc0FjdGl2ZSgnYnVsbGV0TGlzdCcpID8/IGZhbHNlLFxuICAgICAgICBpc09yZGVyZWRMaXN0OiBjdHguZWRpdG9yLmlzQWN0aXZlKCdvcmRlcmVkTGlzdCcpID8/IGZhbHNlLFxuICAgICAgICBpc0NvZGVCbG9jazogY3R4LmVkaXRvci5pc0FjdGl2ZSgnY29kZUJsb2NrJykgPz8gZmFsc2UsXG4gICAgICAgIGlzQmxvY2txdW90ZTogY3R4LmVkaXRvci5pc0FjdGl2ZSgnYmxvY2txdW90ZScpID8/IGZhbHNlLFxuICAgICAgICBjYW5VbmRvOlxuICAgICAgICAgIGN0eC5lZGl0b3JcbiAgICAgICAgICAgIC5jYW4oKVxuICAgICAgICAgICAgLmNoYWluKClcbiAgICAgICAgICAgIC51bmRvKClcbiAgICAgICAgICAgIC5ydW4oKSA/PyBmYWxzZSxcbiAgICAgICAgY2FuUmVkbzpcbiAgICAgICAgICBjdHguZWRpdG9yXG4gICAgICAgICAgICAuY2FuKClcbiAgICAgICAgICAgIC5jaGFpbigpXG4gICAgICAgICAgICAucmVkbygpXG4gICAgICAgICAgICAucnVuKCkgPz8gZmFsc2UsXG4gICAgICB9O1xuICAgIH0sXG4gIH0pO1xuICBjb25zdCBoYXNEb25lQnV0dG9uID0gZmFsc2U7XG4gIGNvbnN0IGF1dG9XaWR0aCA9IGZhbHNlO1xuXG4gIGNvbnN0IG5hbWVzID0gY2xhc3NOYW1lcyhjbGFzc2VzLnRvb2xiYXIsIFBJRV9UT09MQkFSX19DTEFTUywge1xuICAgIFtjbGFzc2VzLnRvb2xiYXJXaXRoTm9Eb25lXTogIWhhc0RvbmVCdXR0b24sXG4gICAgW2NsYXNzZXMudG9vbGJhclRvcF06IHRvb2xiYXJPcHRzLnBvc2l0aW9uID09PSAndG9wJyxcbiAgICBbY2xhc3Nlcy50b29sYmFyUmlnaHRdOiB0b29sYmFyT3B0cy5hbGlnbm1lbnQgPT09ICdyaWdodCcsXG4gICAgW2NsYXNzZXMuZm9jdXNlZF06IHRvb2xiYXJPcHRzLmFsd2F5c1Zpc2libGUgfHwgKGVkaXRvclN0YXRlLmlzRm9jdXNlZCAmJiAhZWRpdG9yLl90b29sYmFyT3BlbmVkKSxcbiAgICBbY2xhc3Nlcy5hdXRvV2lkdGhdOiBhdXRvV2lkdGgsXG4gICAgW2NsYXNzZXMuZnVsbFdpZHRoXTogIWF1dG9XaWR0aCxcbiAgICBbY2xhc3Nlcy5oaWRkZW5dOiB0b29sYmFyT3B0cy5pc0hpZGRlbiA9PT0gdHJ1ZSxcbiAgfSk7XG4gIGNvbnN0IGN1c3RvbVN0eWxlcyA9IHRvb2xiYXJPcHRzLm1pbldpZHRoICE9PSB1bmRlZmluZWQgPyB7IG1pbldpZHRoOiB0b29sYmFyT3B0cy5taW5XaWR0aCB9IDoge307XG4gIGNvbnN0IGhhbmRsZU1vdXNlRG93biA9IChlKSA9PiB7XG4gICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICB9O1xuICBjb25zdCB0b29sYmFyQnV0dG9ucyA9IHVzZU1lbW8oXG4gICAgKCkgPT4gW1xuICAgICAge1xuICAgICAgICBpY29uOiA8R3JpZE9uIC8+LFxuICAgICAgICBvbkNsaWNrOiAoZWRpdG9yKSA9PlxuICAgICAgICAgIGVkaXRvclxuICAgICAgICAgICAgLmNoYWluKClcbiAgICAgICAgICAgIC5mb2N1cygpXG4gICAgICAgICAgICAuaW5zZXJ0VGFibGUoeyByb3dzOiAyLCBjb2xzOiAyLCB3aXRoSGVhZGVyUm93OiBmYWxzZSB9KVxuICAgICAgICAgICAgLnJ1bigpLFxuICAgICAgICBoaWRkZW46IChzdGF0ZSkgPT4gIWFjdGl2ZVBsdWdpbnM/LmluY2x1ZGVzKCd0YWJsZScpIHx8IHN0YXRlLmlzVGFibGUsXG4gICAgICAgIGlzQWN0aXZlOiAoc3RhdGUpID0+IHN0YXRlLmlzVGFibGUsXG4gICAgICAgIGlzRGlzYWJsZWQ6IChzdGF0ZSkgPT4gIXN0YXRlLmNhblRhYmxlLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaWNvbjogPEFkZFJvdyAvPixcbiAgICAgICAgb25DbGljazogKGVkaXRvcikgPT5cbiAgICAgICAgICBlZGl0b3JcbiAgICAgICAgICAgIC5jaGFpbigpXG4gICAgICAgICAgICAuZm9jdXMoKVxuICAgICAgICAgICAgLmFkZFJvd0FmdGVyKClcbiAgICAgICAgICAgIC5ydW4oKSxcbiAgICAgICAgaGlkZGVuOiAoc3RhdGUpID0+ICFzdGF0ZS5pc1RhYmxlLFxuICAgICAgICBpc0FjdGl2ZTogKHN0YXRlKSA9PiBzdGF0ZS5pc1RhYmxlLFxuICAgICAgICBpc0Rpc2FibGVkOiAoc3RhdGUpID0+ICFzdGF0ZS5jYW5UYWJsZSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGljb246IDxSZW1vdmVSb3cgLz4sXG4gICAgICAgIG9uQ2xpY2s6IChlZGl0b3IpID0+XG4gICAgICAgICAgZWRpdG9yXG4gICAgICAgICAgICAuY2hhaW4oKVxuICAgICAgICAgICAgLmZvY3VzKClcbiAgICAgICAgICAgIC5kZWxldGVSb3coKVxuICAgICAgICAgICAgLnJ1bigpLFxuICAgICAgICBoaWRkZW46IChzdGF0ZSkgPT4gIXN0YXRlLmlzVGFibGUsXG4gICAgICAgIGlzQWN0aXZlOiAoc3RhdGUpID0+IHN0YXRlLmlzVGFibGUsXG4gICAgICAgIGlzRGlzYWJsZWQ6IChzdGF0ZSkgPT4gIXN0YXRlLmNhblRhYmxlLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaWNvbjogPEFkZENvbHVtbiAvPixcbiAgICAgICAgb25DbGljazogKGVkaXRvcikgPT5cbiAgICAgICAgICBlZGl0b3JcbiAgICAgICAgICAgIC5jaGFpbigpXG4gICAgICAgICAgICAuZm9jdXMoKVxuICAgICAgICAgICAgLmFkZENvbHVtbkFmdGVyKClcbiAgICAgICAgICAgIC5ydW4oKSxcbiAgICAgICAgaGlkZGVuOiAoc3RhdGUpID0+ICFzdGF0ZS5pc1RhYmxlLFxuICAgICAgICBpc0FjdGl2ZTogKHN0YXRlKSA9PiBzdGF0ZS5pc1RhYmxlLFxuICAgICAgICBpc0Rpc2FibGVkOiAoc3RhdGUpID0+ICFzdGF0ZS5jYW5UYWJsZSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGljb246IDxSZW1vdmVDb2x1bW4gLz4sXG4gICAgICAgIG9uQ2xpY2s6IChlZGl0b3IpID0+XG4gICAgICAgICAgZWRpdG9yXG4gICAgICAgICAgICAuY2hhaW4oKVxuICAgICAgICAgICAgLmZvY3VzKClcbiAgICAgICAgICAgIC5kZWxldGVDb2x1bW4oKVxuICAgICAgICAgICAgLnJ1bigpLFxuICAgICAgICBoaWRkZW46IChzdGF0ZSkgPT4gIXN0YXRlLmlzVGFibGUsXG4gICAgICAgIGlzQWN0aXZlOiAoc3RhdGUpID0+IHN0YXRlLmlzVGFibGUsXG4gICAgICAgIGlzRGlzYWJsZWQ6IChzdGF0ZSkgPT4gIXN0YXRlLmNhblRhYmxlLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaWNvbjogPFJlbW92ZVRhYmxlIC8+LFxuICAgICAgICBvbkNsaWNrOiAoZWRpdG9yKSA9PlxuICAgICAgICAgIGVkaXRvclxuICAgICAgICAgICAgLmNoYWluKClcbiAgICAgICAgICAgIC5mb2N1cygpXG4gICAgICAgICAgICAuZGVsZXRlVGFibGUoKVxuICAgICAgICAgICAgLnJ1bigpLFxuICAgICAgICBoaWRkZW46IChzdGF0ZSkgPT4gIXN0YXRlLmlzVGFibGUsXG4gICAgICAgIGlzQWN0aXZlOiAoc3RhdGUpID0+IHN0YXRlLmlzVGFibGUsXG4gICAgICAgIGlzRGlzYWJsZWQ6IChzdGF0ZSkgPT4gIXN0YXRlLmNhblRhYmxlLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaWNvbjogPEJvcmRlckFsbCAvPixcbiAgICAgICAgb25DbGljazogKGVkaXRvcikgPT4ge1xuICAgICAgICAgIGNvbnN0IHRhYmxlQXR0cnMgPSBlZGl0b3IuZ2V0QXR0cmlidXRlcygndGFibGUnKTtcblxuICAgICAgICAgIGNvbnN0IHVwZGF0ZSA9IHtcbiAgICAgICAgICAgIC4uLnRhYmxlQXR0cnMsXG4gICAgICAgICAgICBib3JkZXI6IHRhYmxlQXR0cnMuYm9yZGVyICE9PSAnMCcgPyAnMCcgOiAnMScsXG4gICAgICAgICAgfTtcblxuICAgICAgICAgIGVkaXRvci5jb21tYW5kcy51cGRhdGVBdHRyaWJ1dGVzKCd0YWJsZScsIHVwZGF0ZSk7XG4gICAgICAgIH0sXG4gICAgICAgIGhpZGRlbjogKHN0YXRlKSA9PiAhc3RhdGUuaXNUYWJsZSxcbiAgICAgICAgaXNBY3RpdmU6IChzdGF0ZSkgPT4gc3RhdGUudGFibGVIYXNCb3JkZXIsXG4gICAgICAgIGlzRGlzYWJsZWQ6IChzdGF0ZSkgPT4gIXN0YXRlLmNhblRhYmxlLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaWNvbjogPEJvbGQgLz4sXG4gICAgICAgIG9uQ2xpY2s6IChlZGl0b3IpID0+XG4gICAgICAgICAgZWRpdG9yXG4gICAgICAgICAgICAuY2hhaW4oKVxuICAgICAgICAgICAgLmZvY3VzKClcbiAgICAgICAgICAgIC50b2dnbGVCb2xkKClcbiAgICAgICAgICAgIC5ydW4oKSxcbiAgICAgICAgaGlkZGVuOiAoc3RhdGUpID0+ICFhY3RpdmVQbHVnaW5zPy5pbmNsdWRlcygnYm9sZCcpIHx8IHN0YXRlLmlzVGFibGUsXG4gICAgICAgIGlzQWN0aXZlOiAoc3RhdGUpID0+IHN0YXRlLmlzQm9sZCxcbiAgICAgICAgaXNEaXNhYmxlZDogKHN0YXRlKSA9PiAhc3RhdGUuY2FuQm9sZCxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGljb246IDxJdGFsaWMgLz4sXG4gICAgICAgIG9uQ2xpY2s6IChlZGl0b3IpID0+XG4gICAgICAgICAgZWRpdG9yXG4gICAgICAgICAgICAuY2hhaW4oKVxuICAgICAgICAgICAgLmZvY3VzKClcbiAgICAgICAgICAgIC50b2dnbGVJdGFsaWMoKVxuICAgICAgICAgICAgLnJ1bigpLFxuICAgICAgICBoaWRkZW46IChzdGF0ZSkgPT4gIWFjdGl2ZVBsdWdpbnM/LmluY2x1ZGVzKCdpdGFsaWMnKSB8fCBzdGF0ZS5pc1RhYmxlLFxuICAgICAgICBpc0FjdGl2ZTogKHN0YXRlKSA9PiBzdGF0ZS5pc0l0YWxpYyxcbiAgICAgICAgaXNEaXNhYmxlZDogKHN0YXRlKSA9PiAhc3RhdGUuY2FuSXRhbGljLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaWNvbjogPFN0cmlrZXRocm91Z2ggLz4sXG4gICAgICAgIG9uQ2xpY2s6IChlZGl0b3IpID0+XG4gICAgICAgICAgZWRpdG9yXG4gICAgICAgICAgICAuY2hhaW4oKVxuICAgICAgICAgICAgLmZvY3VzKClcbiAgICAgICAgICAgIC50b2dnbGVTdHJpa2UoKVxuICAgICAgICAgICAgLnJ1bigpLFxuICAgICAgICBoaWRkZW46IChzdGF0ZSkgPT4gIWFjdGl2ZVBsdWdpbnM/LmluY2x1ZGVzKCdzdHJpa2V0aHJvdWdoJykgfHwgc3RhdGUuaXNUYWJsZSxcbiAgICAgICAgaXNBY3RpdmU6IChzdGF0ZSkgPT4gc3RhdGUuaXNTdHJpa2UsXG4gICAgICAgIGlzRGlzYWJsZWQ6IChzdGF0ZSkgPT4gIXN0YXRlLmNhblN0cmlrZSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGljb246IDxDb2RlIC8+LFxuICAgICAgICBvbkNsaWNrOiAoZWRpdG9yKSA9PlxuICAgICAgICAgIGVkaXRvclxuICAgICAgICAgICAgLmNoYWluKClcbiAgICAgICAgICAgIC5mb2N1cygpXG4gICAgICAgICAgICAudG9nZ2xlQ29kZSgpXG4gICAgICAgICAgICAucnVuKCksXG4gICAgICAgIGhpZGRlbjogKHN0YXRlKSA9PiAhYWN0aXZlUGx1Z2lucz8uaW5jbHVkZXMoJ2NvZGUnKSB8fCBzdGF0ZS5pc1RhYmxlLFxuICAgICAgICBpc0FjdGl2ZTogKHN0YXRlKSA9PiBzdGF0ZS5pc0NvZGUsXG4gICAgICAgIGlzRGlzYWJsZWQ6IChzdGF0ZSkgPT4gIXN0YXRlLmNhbkNvZGUsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpY29uOiA8VW5kZXJsaW5lIC8+LFxuICAgICAgICBvbkNsaWNrOiAoZWRpdG9yKSA9PlxuICAgICAgICAgIGVkaXRvclxuICAgICAgICAgICAgLmNoYWluKClcbiAgICAgICAgICAgIC5mb2N1cygpXG4gICAgICAgICAgICAudG9nZ2xlVW5kZXJsaW5lKClcbiAgICAgICAgICAgIC5ydW4oKSxcbiAgICAgICAgaGlkZGVuOiAoc3RhdGUpID0+ICFhY3RpdmVQbHVnaW5zPy5pbmNsdWRlcygndW5kZXJsaW5lJykgfHwgc3RhdGUuaXNUYWJsZSxcbiAgICAgICAgaXNBY3RpdmU6IChzdGF0ZSkgPT4gc3RhdGUuaXNVbmRlcmxpbmUsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpY29uOiA8U3Vic2NyaXB0SWNvbiAvPixcbiAgICAgICAgb25DbGljazogKGVkaXRvcikgPT5cbiAgICAgICAgICBlZGl0b3JcbiAgICAgICAgICAgIC5jaGFpbigpXG4gICAgICAgICAgICAuZm9jdXMoKVxuICAgICAgICAgICAgLnRvZ2dsZVN1YnNjcmlwdCgpXG4gICAgICAgICAgICAucnVuKCksXG4gICAgICAgIGhpZGRlbjogKHN0YXRlKSA9PiAhYWN0aXZlUGx1Z2lucz8uaW5jbHVkZXMoJ3N1YnNjcmlwdCcpIHx8IHN0YXRlLmlzVGFibGUsXG4gICAgICAgIGlzQWN0aXZlOiAoc3RhdGUpID0+IHN0YXRlLmlzU3ViU2NyaXB0LFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaWNvbjogPFN1cGVyc2NyaXB0SWNvbiAvPixcbiAgICAgICAgb25DbGljazogKGVkaXRvcikgPT5cbiAgICAgICAgICBlZGl0b3JcbiAgICAgICAgICAgIC5jaGFpbigpXG4gICAgICAgICAgICAuZm9jdXMoKVxuICAgICAgICAgICAgLnRvZ2dsZVN1cGVyc2NyaXB0KClcbiAgICAgICAgICAgIC5ydW4oKSxcbiAgICAgICAgaGlkZGVuOiAoc3RhdGUpID0+ICFhY3RpdmVQbHVnaW5zPy5pbmNsdWRlcygnc3VwZXJzY3JpcHQnKSB8fCBzdGF0ZS5pc1RhYmxlLFxuICAgICAgICBpc0FjdGl2ZTogKHN0YXRlKSA9PiBzdGF0ZS5pc1N1cGVyU2NyaXB0LFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaWNvbjogPEltYWdlSWNvbiAvPixcbiAgICAgICAgaGlkZGVuOiAoc3RhdGUpID0+ICFhY3RpdmVQbHVnaW5zPy5pbmNsdWRlcygnaW1hZ2UnKSB8fCBzdGF0ZS5pc1RhYmxlLFxuICAgICAgICBvbkNsaWNrOiAoZWRpdG9yKSA9PlxuICAgICAgICAgIGVkaXRvclxuICAgICAgICAgICAgLmNoYWluKClcbiAgICAgICAgICAgIC5mb2N1cygpXG4gICAgICAgICAgICAuc2V0SW1hZ2VVcGxvYWROb2RlKClcbiAgICAgICAgICAgIC5ydW4oKSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGljb246IDxUaGVhdGVyc0ljb24gLz4sXG4gICAgICAgIGhpZGRlbjogKHN0YXRlKSA9PiAhYWN0aXZlUGx1Z2lucz8uaW5jbHVkZXMoJ3ZpZGVvJykgfHwgc3RhdGUuaXNUYWJsZSxcbiAgICAgICAgb25DbGljazogKGVkaXRvcikgPT5cbiAgICAgICAgICBlZGl0b3JcbiAgICAgICAgICAgIC5jaGFpbigpXG4gICAgICAgICAgICAuZm9jdXMoKVxuICAgICAgICAgICAgLmluc2VydE1lZGlhKHsgdGFnOiAndmlkZW8nIH0pXG4gICAgICAgICAgICAucnVuKCksXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpY29uOiA8Vm9sdW1lVXBJY29uIC8+LFxuICAgICAgICBoaWRkZW46IChzdGF0ZSkgPT4gIWFjdGl2ZVBsdWdpbnM/LmluY2x1ZGVzKCdhdWRpbycpIHx8IHN0YXRlLmlzVGFibGUsXG4gICAgICAgIG9uQ2xpY2s6IChlZGl0b3IpID0+XG4gICAgICAgICAgZWRpdG9yXG4gICAgICAgICAgICAuY2hhaW4oKVxuICAgICAgICAgICAgLmZvY3VzKClcbiAgICAgICAgICAgIC5pbnNlcnRNZWRpYSh7IHRhZzogJ2F1ZGlvJyB9KVxuICAgICAgICAgICAgLnJ1bigpLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaWNvbjogPENTU0ljb24gLz4sXG4gICAgICAgIGhpZGRlbjogKHN0YXRlKSA9PiAhYWN0aXZlUGx1Z2lucz8uaW5jbHVkZXMoJ2NzcycpIHx8IHN0YXRlLmlzVGFibGUsXG4gICAgICAgIG9uQ2xpY2s6IChlZGl0b3IpID0+IGVkaXRvci5jb21tYW5kcy5vcGVuQ1NTQ2xhc3NEaWFsb2coKSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGljb246IDxIZWFkaW5nSWNvbiAvPixcbiAgICAgICAgaGlkZGVuOiAoc3RhdGUpID0+ICFhY3RpdmVQbHVnaW5zPy5pbmNsdWRlcygnaDMnKSB8fCBzdGF0ZS5pc1RhYmxlLFxuICAgICAgICBvbkNsaWNrOiAoZWRpdG9yKSA9PlxuICAgICAgICAgIGVkaXRvclxuICAgICAgICAgICAgLmNoYWluKClcbiAgICAgICAgICAgIC5mb2N1cygpXG4gICAgICAgICAgICAudG9nZ2xlSGVhZGluZyh7IGxldmVsOiAzIH0pXG4gICAgICAgICAgICAucnVuKCksXG4gICAgICAgIGlzQWN0aXZlOiAoc3RhdGUpID0+IHN0YXRlLmlzSGVhZGluZzMsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpY29uOiA8RnVuY3Rpb25zIC8+LFxuICAgICAgICBoaWRkZW46ICgpID0+ICFhY3RpdmVQbHVnaW5zPy5pbmNsdWRlcygnbWF0aCcpLFxuICAgICAgICBvbkNsaWNrOiAoZWRpdG9yKSA9PlxuICAgICAgICAgIGVkaXRvclxuICAgICAgICAgICAgLmNoYWluKClcbiAgICAgICAgICAgIC5mb2N1cygpXG4gICAgICAgICAgICAuaW5zZXJ0TWF0aCgnJylcbiAgICAgICAgICAgIC5ydW4oKSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGljb246IDxDaGFyYWN0ZXJJY29uIGxldHRlcj1cIsOxXCIgLz4sXG4gICAgICAgIGhpZGRlbjogKHN0YXRlKSA9PiAhYWN0aXZlUGx1Z2lucz8uaW5jbHVkZXMoJ2xhbmd1YWdlQ2hhcmFjdGVycycpIHx8IHN0YXRlLmlzVGFibGUsXG4gICAgICAgIG9uQ2xpY2s6ICgpID0+IHNldFNob3dQaWNrZXIoc3BhbmlzaENvbmZpZyksXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICBpY29uOiA8Q2hhcmFjdGVySWNvbiBsZXR0ZXI9XCLigqxcIiAvPixcbiAgICAgICAgaGlkZGVuOiAoc3RhdGUpID0+IGFjdGl2ZVBsdWdpbnM/LmZpbHRlcihwID0+IHAgPT09ICdsYW5ndWFnZUNoYXJhY3RlcnMnKS5sZW5ndGggIT09IDIgfHwgc3RhdGUuaXNUYWJsZSxcbiAgICAgICAgb25DbGljazogKCkgPT4gc2V0U2hvd1BpY2tlcihzcGVjaWFsQ29uZmlnKSxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGljb246IDxUZXh0QWxpZ25JY29uIGVkaXRvcj17ZWRpdG9yfSAvPixcbiAgICAgICAgaGlkZGVuOiAoc3RhdGUpID0+ICFhY3RpdmVQbHVnaW5zPy5pbmNsdWRlcygndGV4dC1hbGlnbicpIHx8IHN0YXRlLmlzVGFibGUsXG4gICAgICAgIG9uQ2xpY2s6ICgpID0+IHt9LFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaWNvbjogPEJ1bGxldGVkTGlzdEljb24gLz4sXG4gICAgICAgIGhpZGRlbjogKHN0YXRlKSA9PiAhYWN0aXZlUGx1Z2lucz8uaW5jbHVkZXMoJ2J1bGxldGVkLWxpc3QnKSB8fCBzdGF0ZS5pc1RhYmxlLFxuICAgICAgICBvbkNsaWNrOiAoZWRpdG9yKSA9PlxuICAgICAgICAgIGVkaXRvclxuICAgICAgICAgICAgLmNoYWluKClcbiAgICAgICAgICAgIC5mb2N1cygpXG4gICAgICAgICAgICAudG9nZ2xlQnVsbGV0TGlzdCgpXG4gICAgICAgICAgICAucnVuKCksXG4gICAgICAgIGlzQWN0aXZlOiAoc3RhdGUpID0+IHN0YXRlLmlzQnVsbGV0TGlzdCxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGljb246IDxOdW1iZXJlZExpc3RJY29uIC8+LFxuICAgICAgICBoaWRkZW46IChzdGF0ZSkgPT4gIWFjdGl2ZVBsdWdpbnM/LmluY2x1ZGVzKCdudW1iZXJlZC1saXN0JykgfHwgc3RhdGUuaXNUYWJsZSxcbiAgICAgICAgb25DbGljazogKGVkaXRvcikgPT5cbiAgICAgICAgICBlZGl0b3JcbiAgICAgICAgICAgIC5jaGFpbigpXG4gICAgICAgICAgICAuZm9jdXMoKVxuICAgICAgICAgICAgLnRvZ2dsZU9yZGVyZWRMaXN0KClcbiAgICAgICAgICAgIC5ydW4oKSxcbiAgICAgICAgaXNBY3RpdmU6IChzdGF0ZSkgPT4gc3RhdGUuaXNPcmRlcmVkTGlzdCxcbiAgICAgIH0sXG4gICAgICB7XG4gICAgICAgIGljb246IDxVbmRvIC8+LFxuICAgICAgICBoaWRkZW46IChzdGF0ZSkgPT4gIWFjdGl2ZVBsdWdpbnM/LmluY2x1ZGVzKCd1bmRvJykgfHwgc3RhdGUuaXNUYWJsZSxcbiAgICAgICAgb25DbGljazogKGVkaXRvcikgPT5cbiAgICAgICAgICBlZGl0b3JcbiAgICAgICAgICAgIC5jaGFpbigpXG4gICAgICAgICAgICAuZm9jdXMoKVxuICAgICAgICAgICAgLnVuZG8oKVxuICAgICAgICAgICAgLnJ1bigpLFxuICAgICAgICBpc0Rpc2FibGVkOiAoc3RhdGUpID0+ICFzdGF0ZS5jYW5VbmRvLFxuICAgICAgfSxcbiAgICAgIHtcbiAgICAgICAgaWNvbjogPFJlZG8gLz4sXG4gICAgICAgIGhpZGRlbjogKHN0YXRlKSA9PiAhYWN0aXZlUGx1Z2lucz8uaW5jbHVkZXMoJ3JlZG8nKSB8fCBzdGF0ZS5pc1RhYmxlLFxuICAgICAgICBvbkNsaWNrOiAoZWRpdG9yKSA9PlxuICAgICAgICAgIGVkaXRvclxuICAgICAgICAgICAgLmNoYWluKClcbiAgICAgICAgICAgIC5mb2N1cygpXG4gICAgICAgICAgICAucmVkbygpXG4gICAgICAgICAgICAucnVuKCksXG4gICAgICAgIGlzRGlzYWJsZWQ6IChzdGF0ZSkgPT4gIXN0YXRlLmNhblJlZG8sXG4gICAgICB9LFxuICAgIF0sXG4gICAgW2FjdGl2ZVBsdWdpbnMsIGVkaXRvciwgc3BhbmlzaENvbmZpZywgc3BlY2lhbENvbmZpZywgc2V0U2hvd1BpY2tlcl0sXG4gICk7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT17bmFtZXN9IHN0eWxlPXt7IC4uLmN1c3RvbVN0eWxlcyB9fSBvbk1vdXNlRG93bj17aGFuZGxlTW91c2VEb3dufT5cbiAgICAgIHshZWRpdG9yU3RhdGUuaGlkZURlZmF1bHRUb29sYmFyICYmIChcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9e2NsYXNzZXMuZGVmYXVsdFRvb2xiYXJ9IHRhYkluZGV4PVwiMVwiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbGFzc2VzLmJ1dHRvbnNDb250YWluZXJ9PlxuICAgICAgICAgICAge3Rvb2xiYXJCdXR0b25zXG4gICAgICAgICAgICAgIC5maWx0ZXIoKGJ0bikgPT4gIWJ0bi5oaWRkZW4/LihlZGl0b3JTdGF0ZSkpXG4gICAgICAgICAgICAgIC5tYXAoKGJ0biwgaW5kZXgpID0+IHtcbiAgICAgICAgICAgICAgICBjb25zdCBkaXNhYmxlZCA9IGJ0bi5pc0Rpc2FibGVkPy4oZWRpdG9yU3RhdGUpO1xuICAgICAgICAgICAgICAgIGNvbnN0IGFjdGl2ZSA9IGJ0bi5pc0FjdGl2ZT8uKGVkaXRvclN0YXRlKTtcblxuICAgICAgICAgICAgICAgIHJldHVybiAoXG4gICAgICAgICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgICAgICAgIGtleT17aW5kZXh9XG4gICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtkaXNhYmxlZH1cbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgICAgICAgICAgICAgYnRuLm9uQ2xpY2soZWRpdG9yKTtcbiAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc05hbWVzKGNsYXNzZXMuYnV0dG9uLCB7IFtjbGFzc2VzLmFjdGl2ZV06IGFjdGl2ZSB9KX1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge2J0bi5pY29ufVxuICAgICAgICAgICAgICAgICAgPC9idXR0b24+XG4gICAgICAgICAgICAgICAgKTtcbiAgICAgICAgICAgICAgfSl9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAge2FjdGl2ZVBsdWdpbnM/LmluY2x1ZGVzKCdyZXNwb25zZUFyZWEnKSAmJiAoXG4gICAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICBlZGl0b3JcbiAgICAgICAgICAgICAgICAgIC5jaGFpbigpXG4gICAgICAgICAgICAgICAgICAuZm9jdXMoKVxuICAgICAgICAgICAgICAgICAgLmluc2VydFJlc3BvbnNlQXJlYShyZXNwb25zZUFyZWFQcm9wcy50eXBlKVxuICAgICAgICAgICAgICAgICAgLnJ1bigpO1xuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICBjbGFzc05hbWU9e2NsYXNzZXMuYnV0dG9ufVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8VG9vbGJhckljb24gLz5cbiAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICl9XG5cbiAgICAgICAgICA8RG9uZUJ1dHRvblxuICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICBvbkNoYW5nZT8uKGVkaXRvci5nZXRIVE1MKCkpO1xuICAgICAgICAgICAgICBlZGl0b3IuY29tbWFuZHMuYmx1cigpO1xuICAgICAgICAgICAgfX1cbiAgICAgICAgICAvPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICl9XG4gICAgICB7c2hvd1BpY2tlciAmJiAoXG4gICAgICAgIDxDaGFyYWN0ZXJQaWNrZXJcbiAgICAgICAgICBlZGl0b3I9e2VkaXRvcn1cbiAgICAgICAgICBvcHRzPXt7XG4gICAgICAgICAgICAuLi5zaG93UGlja2VyLFxuICAgICAgICAgICAgcmVuZGVyUG9wT3ZlcjogKGV2LCBjaCkgPT4gY29uc29sZS5sb2coJ1Nob3cgcG9wb3ZlcicsIGNoKSxcbiAgICAgICAgICAgIGNsb3NlUG9wT3ZlcjogKCkgPT4gY29uc29sZS5sb2coJ0Nsb3NlIHBvcG92ZXInKSxcbiAgICAgICAgICB9fVxuICAgICAgICAgIG9uQ2xvc2U9eygpID0+IHNldFNob3dQaWNrZXIoZmFsc2UpfVxuICAgICAgICAvPlxuICAgICAgKX1cbiAgICA8L2Rpdj5cbiAgKTtcbn1cblxuY29uc3Qgc3R5bGUgPSAodGhlbWUpID0+ICh7XG4gIGRlZmF1bHRUb29sYmFyOiB7XG4gICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgIHdpZHRoOiAnMTAwJScsXG4gICAganVzdGlmeUNvbnRlbnQ6ICdzcGFjZS1iZXR3ZWVuJyxcbiAgfSxcbiAgYnV0dG9uc0NvbnRhaW5lcjoge1xuICAgIGFsaWduSXRlbXM6ICdjZW50ZXInLFxuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICB3aWR0aDogJzEwMCUnLFxuICB9LFxuICBidXR0b246IHtcbiAgICBjb2xvcjogJ2dyZXknLFxuICAgIGRpc3BsYXk6ICdpbmxpbmUtZmxleCcsXG4gICAgcGFkZGluZzogJzJweCcsXG4gICAgYmFja2dyb3VuZDogJ25vbmUnLFxuICAgIGJvcmRlcjogJ25vbmUnLFxuICAgIGN1cnNvcjogJ3BvaW50ZXInLFxuICAgICcmOmhvdmVyJzoge1xuICAgICAgY29sb3I6ICdibGFjaycsXG4gICAgfSxcbiAgICAnJjpmb2N1cyc6IHtcbiAgICAgIG91dGxpbmU6IGAycHggc29saWQgJHt0aGVtZS5wYWxldHRlLmdyZXlbNzAwXX1gLFxuICAgIH0sXG4gIH0sXG4gIGFjdGl2ZToge1xuICAgIGNvbG9yOiAnYmxhY2snLFxuICB9LFxuICBkaXNhYmxlZDoge1xuICAgIG9wYWNpdHk6IDAuNyxcbiAgICBjdXJzb3I6ICdub3QtYWxsb3dlZCcsXG4gICAgJyYgOmhvdmVyJzoge1xuICAgICAgY29sb3I6ICdncmV5JyxcbiAgICB9LFxuICB9LFxuICBpc0FjdGl2ZToge1xuICAgIGJhY2tncm91bmQ6ICd2YXIoLS1wdXJwbGUpJyxcbiAgICBjb2xvcjogJ3ZhcigtLXdoaXRlKScsXG4gIH0sXG4gIHRvb2xiYXI6IHtcbiAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICB6SW5kZXg6IDIwLFxuICAgIGN1cnNvcjogJ3BvaW50ZXInLFxuICAgIGp1c3RpZnlDb250ZW50OiAnc3BhY2UtYmV0d2VlbicsXG4gICAgYmFja2dyb3VuZDogJ3ZhcigtLWVkaXRhYmxlLWh0bWwtdG9vbGJhci1iZywgI2VmZWZlZiknLFxuICAgIG1pbldpZHRoOiAnMjgwcHgnLFxuICAgIG1hcmdpbjogJzVweCAwIDAgMCcsXG4gICAgcGFkZGluZzogJzJweCcsXG4gICAgYm94U2hhZG93OlxuICAgICAgJzBweCAxcHggNXB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMiksIDBweCAycHggMnB4IDBweCByZ2JhKDAsIDAsIDAsIDAuMTQpLCAwcHggM3B4IDFweCAtMnB4IHJnYmEoMCwgMCwgMCwgMC4xMiknLFxuICAgIGJveFNpemluZzogJ2JvcmRlci1ib3gnLFxuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICBvcGFjaXR5OiAwLFxuICAgIHBvaW50ZXJFdmVudHM6ICdub25lJyxcbiAgfSxcbiAgdG9vbGJhcldpdGhOb0RvbmU6IHtcbiAgICBtaW5XaWR0aDogJzI2NXB4JyxcbiAgfSxcbiAgdG9vbGJhclRvcDoge1xuICAgIHRvcDogJy00NXB4JyxcbiAgfSxcbiAgdG9vbGJhclJpZ2h0OiB7XG4gICAgcmlnaHQ6IDAsXG4gIH0sXG4gIGZ1bGxXaWR0aDoge1xuICAgIHdpZHRoOiAnMTAwJScsXG4gIH0sXG4gIGhpZGRlbjoge1xuICAgIHZpc2liaWxpdHk6ICdoaWRkZW4nLFxuICB9LFxuICBhdXRvV2lkdGg6IHtcbiAgICB3aWR0aDogJ2F1dG8nLFxuICB9LFxuICBmb2N1c2VkOiB7XG4gICAgb3BhY2l0eTogMSxcbiAgICBwb2ludGVyRXZlbnRzOiAnYXV0bycsXG4gIH0sXG4gIGljb25Sb290OiB7XG4gICAgd2lkdGg6ICcyOHB4JyxcbiAgICBoZWlnaHQ6ICcyOHB4JyxcbiAgICBwYWRkaW5nOiAnNHB4JyxcbiAgICB2ZXJ0aWNhbEFsaWduOiAndG9wJyxcbiAgfSxcbiAgbGFiZWw6IHtcbiAgICBjb2xvcjogJ3ZhcigtLWVkaXRhYmxlLWh0bWwtdG9vbGJhci1jaGVjaywgIzAwYmIwMCknLFxuICB9LFxuICBzaGFyZWQ6IHtcbiAgICBkaXNwbGF5OiAnZmxleCcsXG4gIH0sXG59KTtcbmNvbnN0IFN0eWxlZE1lbnVCYXIgPSB3aXRoU3R5bGVzKHN0eWxlLCB7IGluZGV4OiAxMDAwIH0pKE1lbnVCYXIpO1xuXG5jb25zdCBkZWZhdWx0VG9vbGJhck9wdHMgPSB7XG4gIHBvc2l0aW9uOiAnYm90dG9tJyxcbiAgYWxpZ25tZW50OiAnbGVmdCcsXG4gIGFsd2F5c1Zpc2libGU6IGZhbHNlLFxuICBzaG93RG9uZTogdHJ1ZSxcbiAgZG9uZU9uOiAnYmx1cicsXG59O1xuXG5leHBvcnQgY29uc3QgRWRpdGFibGVIdG1sID0gKHByb3BzKSA9PiB7XG4gIGNvbnN0IFtwZW5kaW5nSW1hZ2VzLCBzZXRQZW5kaW5nSW1hZ2VzXSA9IHVzZVN0YXRlKFtdKTtcbiAgY29uc3QgW3NjaGVkdWxlZCwgc2V0U2NoZWR1bGVkXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgeyBjbGFzc2VzLCB0b29sYmFyT3B0cyB9ID0gcHJvcHM7XG4gIGNvbnN0IHRvb2xiYXJPcHRzVG9Vc2UgPSB7XG4gICAgLi4uZGVmYXVsdFRvb2xiYXJPcHRzLFxuICAgIC4uLnRvb2xiYXJPcHRzLFxuICB9O1xuICBjb25zdCBhY3RpdmVQbHVnaW5zVG9Vc2UgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBsZXQgeyBjdXN0b21QbHVnaW5zIH0gPSBwcm9wcy5wbHVnaW5Qcm9wcyB8fCB7fTtcblxuICAgIGN1c3RvbVBsdWdpbnMgPSBjdXN0b21QbHVnaW5zIHx8IFtdO1xuXG4gICAgcmV0dXJuIGJ1aWxkUGx1Z2lucyhwcm9wcy5hY3RpdmVQbHVnaW5zLCBjdXN0b21QbHVnaW5zLCB7XG4gICAgICBtYXRoOiB7fSxcbiAgICAgIHRleHRBbGlnbjoge30sXG4gICAgICBodG1sOiB7fSxcbiAgICAgIGV4dHJhQ1NTUnVsZXM6IHByb3BzLmV4dHJhQ1NTUnVsZXMgfHwge30sXG4gICAgICBpbWFnZToge30sXG4gICAgICB0b29sYmFyOiB7fSxcbiAgICAgIHRhYmxlOiB7fSxcbiAgICAgIHJlc3BvbnNlQXJlYToge30sXG4gICAgICBsYW5ndWFnZUNoYXJhY3RlcnM6IHByb3BzLmxhbmd1YWdlQ2hhcmFjdGVyc1Byb3BzLFxuICAgICAga2V5UGFkQ2hhcmFjdGVyUmVmOiB7fSxcbiAgICAgIHNldEtleXBhZEludGVyYWN0aW9uOiB7fSxcbiAgICAgIG1lZGlhOiB7fSxcbiAgICB9KTtcbiAgfSwgW3Byb3BzXSk7XG4gIGNvbnN0IGV4dGVuc2lvbnMgPSBbXG4gICAgVGV4dFN0eWxlS2l0LFxuICAgIFN0YXJ0ZXJLaXQsXG4gICAgRXh0ZW5kZWRUYWJsZSxcbiAgICBUYWJsZVJvdyxcbiAgICBUYWJsZUhlYWRlcixcbiAgICBUYWJsZUNlbGwsXG4gICAgUmVzcG9uc2VBcmVhRXh0ZW5zaW9uLFxuICAgIEV4cGxpY2l0Q29uc3RydWN0ZWRSZXNwb25zZU5vZGUuY29uZmlndXJlKHByb3BzLnJlc3BvbnNlQXJlYVByb3BzKSxcbiAgICBEcmFnSW5UaGVCbGFua05vZGUuY29uZmlndXJlKHByb3BzLnJlc3BvbnNlQXJlYVByb3BzKSxcbiAgICBJbmxpbmVEcm9wZG93bk5vZGUuY29uZmlndXJlKHByb3BzLnJlc3BvbnNlQXJlYVByb3BzKSxcbiAgICBNYXRoTm9kZS5jb25maWd1cmUoe1xuICAgICAgdG9vbGJhck9wdHM6IHRvb2xiYXJPcHRzVG9Vc2UsXG4gICAgfSksXG4gICAgU3ViU2NyaXB0LFxuICAgIFN1cGVyU2NyaXB0LFxuICAgIFRleHRBbGlnbi5jb25maWd1cmUoe1xuICAgICAgdHlwZXM6IFsnaGVhZGluZycsICdwYXJhZ3JhcGgnXSxcbiAgICAgIGFsaWdubWVudHM6IFsnbGVmdCcsICdyaWdodCcsICdjZW50ZXInXSxcbiAgICB9KSxcbiAgICBJbWFnZSxcbiAgICBJbWFnZVVwbG9hZE5vZGUuY29uZmlndXJlKHtcbiAgICAgIHRvb2xiYXJPcHRzOiB0b29sYmFyT3B0c1RvVXNlLFxuICAgICAgaW1hZ2VIYW5kbGluZzoge1xuICAgICAgICBkaXNhYmxlSW1hZ2VBbGlnbm1lbnRCdXR0b25zOiBwcm9wcy5kaXNhYmxlSW1hZ2VBbGlnbm1lbnRCdXR0b25zLFxuICAgICAgICBvbkRvbmU6ICgpID0+IHByb3BzLm9uRG9uZT8uKGVkaXRvci5nZXRIVE1MKCkpLFxuICAgICAgICBvbkRlbGV0ZTpcbiAgICAgICAgICBwcm9wcy5pbWFnZVN1cHBvcnQgJiZcbiAgICAgICAgICBwcm9wcy5pbWFnZVN1cHBvcnQuZGVsZXRlICYmXG4gICAgICAgICAgKChub2RlLCBkb25lKSA9PiB7XG4gICAgICAgICAgICBjb25zdCB7IHNyYyB9ID0gbm9kZS5hdHRycztcblxuICAgICAgICAgICAgcHJvcHMuaW1hZ2VTdXBwb3J0LmRlbGV0ZShzcmMsIChlKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IG5ld1BlbmRpbmdJbWFnZXMgPSBwZW5kaW5nSW1hZ2VzLmZpbHRlcigoaW1nKSA9PiBpbWcua2V5ICE9PSBub2RlLmtleSk7XG4gICAgICAgICAgICAgIGNvbnN0IG5ld1N0YXRlID0ge1xuICAgICAgICAgICAgICAgIHBlbmRpbmdJbWFnZXM6IG5ld1BlbmRpbmdJbWFnZXMsXG4gICAgICAgICAgICAgICAgc2NoZWR1bGVkOiBzY2hlZHVsZWQgJiYgbmV3UGVuZGluZ0ltYWdlcy5sZW5ndGggPT09IDAgPyBmYWxzZSA6IHNjaGVkdWxlZCxcbiAgICAgICAgICAgICAgfTtcblxuICAgICAgICAgICAgICBzZXRQZW5kaW5nSW1hZ2VzKG5ld1N0YXRlLnBlbmRpbmdJbWFnZXMpO1xuICAgICAgICAgICAgICBzZXRTY2hlZHVsZWQobmV3U3RhdGUuc2NoZWR1bGVkKTtcbiAgICAgICAgICAgICAgZG9uZSgpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSksXG4gICAgICAgIGluc2VydEltYWdlUmVxdWVzdGVkOlxuICAgICAgICAgIHByb3BzLmltYWdlU3VwcG9ydCAmJlxuICAgICAgICAgICgoYWRkZWRJbWFnZSwgZ2V0SGFuZGxlcikgPT4ge1xuICAgICAgICAgICAgY29uc3Qgb25GaW5pc2ggPSAocmVzdWx0KSA9PiB7XG4gICAgICAgICAgICAgIGxldCBjYjtcblxuICAgICAgICAgICAgICBpZiAoc2NoZWR1bGVkICYmIHJlc3VsdCkge1xuICAgICAgICAgICAgICAgIC8vIGZpbmlzaCBlZGl0aW5nIG9ubHkgb24gc3VjY2Vzc1xuICAgICAgICAgICAgICAgIGNiID0gcHJvcHMub25DaGFuZ2U7XG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICBjb25zdCBuZXdQZW5kaW5nSW1hZ2VzID0gcGVuZGluZ0ltYWdlcy5maWx0ZXIoKGltZykgPT4gaW1nLmtleSAhPT0gYWRkZWRJbWFnZS5rZXkpO1xuICAgICAgICAgICAgICBjb25zdCBuZXdTdGF0ZSA9IHtcbiAgICAgICAgICAgICAgICBwZW5kaW5nSW1hZ2VzOiBuZXdQZW5kaW5nSW1hZ2VzLFxuICAgICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICAgIGlmIChuZXdQZW5kaW5nSW1hZ2VzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgIG5ld1N0YXRlLnNjaGVkdWxlZCA9IGZhbHNlO1xuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgc2V0UGVuZGluZ0ltYWdlcyhuZXdTdGF0ZS5wZW5kaW5nSW1hZ2VzKTtcbiAgICAgICAgICAgICAgc2V0U2NoZWR1bGVkKG5ld1N0YXRlLnNjaGVkdWxlZCk7XG4gICAgICAgICAgICAgIGNiPy4oZWRpdG9yLmdldEhUTUwoKSk7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgY29uc3QgY2FsbGJhY2sgPSAoKSA9PiB7XG4gICAgICAgICAgICAgIC8qKlxuICAgICAgICAgICAgICAgKiBUaGUgaGFuZGxlciBpcyB0aGUgb2JqZWN0IHRocm91Z2ggd2hpY2ggdGhlIG91dGVyIGNvbnRleHRcbiAgICAgICAgICAgICAgICogY29tbXVuaWNhdGVzIGZpbGUgdXBsb2FkIGV2ZW50cyBsaWtlOiBmaWxlQ2hvc2VuLCBjYW5jZWwsIHByb2dyZXNzXG4gICAgICAgICAgICAgICAqL1xuICAgICAgICAgICAgICBjb25zdCBoYW5kbGVyID0gZ2V0SGFuZGxlcihvbkZpbmlzaCk7XG4gICAgICAgICAgICAgIHByb3BzLmltYWdlU3VwcG9ydC5hZGQoaGFuZGxlcik7XG4gICAgICAgICAgICB9O1xuXG4gICAgICAgICAgICBzZXRQZW5kaW5nSW1hZ2VzKFsuLi5wZW5kaW5nSW1hZ2VzLCBhZGRlZEltYWdlXSk7XG4gICAgICAgICAgICBjYWxsYmFjaygpO1xuICAgICAgICAgIH0pLFxuICAgICAgICBtYXhJbWFnZVdpZHRoOiBwcm9wcy5tYXhJbWFnZVdpZHRoLFxuICAgICAgICBtYXhJbWFnZUhlaWdodDogcHJvcHMubWF4SW1hZ2VIZWlnaHQsXG4gICAgICB9LFxuICAgICAgbGltaXQ6IDMsXG4gICAgfSksXG4gICAgTWVkaWEuY29uZmlndXJlKHtcbiAgICAgIHVwbG9hZFNvdW5kU3VwcG9ydDogcHJvcHMudXBsb2FkU291bmRTdXBwb3J0LFxuICAgIH0pLFxuICAgIENTU01hcmsuY29uZmlndXJlKHtcbiAgICAgIGV4dHJhQ1NTUnVsZXM6IHByb3BzLmV4dHJhQ1NTUnVsZXMsXG4gICAgfSksXG4gIF07XG4gIGNvbnN0IGVkaXRvciA9IHVzZUVkaXRvcih7XG4gICAgZXh0ZW5zaW9ucyxcbiAgICBpbW1lZGlhdGVseVJlbmRlcjogZmFsc2UsXG4gICAgY29udGVudDogcHJvcHMubWFya3VwLFxuICAgIG9uVXBkYXRlOiAoeyBlZGl0b3IsIHRyYW5zYWN0aW9uIH0pID0+IHRyYW5zYWN0aW9uLmlzRG9uZSAmJiBwcm9wcy5vbkNoYW5nZT8uKGVkaXRvci5nZXRIVE1MKCkpLFxuICAgIG9uQmx1cjogKHsgZWRpdG9yIH0pID0+IHtcbiAgICAgIGlmICh0b29sYmFyT3B0c1RvVXNlLmRvbmVPbiA9PT0gJ2JsdXInKSB7XG4gICAgICAgIHByb3BzLm9uQ2hhbmdlPy4oZWRpdG9yLmdldEhUTUwoKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwcm9wcy5vbkRvbmU/LihlZGl0b3IuZ2V0SFRNTCgpKTtcbiAgICAgIH1cbiAgICB9LFxuICB9KTtcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghZWRpdG9yKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHByb3BzLm1hcmt1cCAhPT0gZWRpdG9yLmdldEhUTUwoKSkge1xuICAgICAgZWRpdG9yLmNvbW1hbmRzLnNldENvbnRlbnQocHJvcHMubWFya3VwLCBmYWxzZSk7IC8vIGZhbHNlID0gZG9u4oCZdCBlbWl0IHVwZGF0ZVxuICAgIH1cbiAgfSwgW3Byb3BzLm1hcmt1cCwgZWRpdG9yXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAvLyBEZWZpbmUgeW91ciB2YXJpYWJsZXMgaW4gYSBKUyBvYmplY3RcbiAgICBjb25zdCBjc3NWYXJpYWJsZXMgPSB7XG4gICAgICAnLS13aGl0ZSc6ICcjZmZmJyxcbiAgICAgICctLWJsYWNrJzogJyMyZTJiMjknLFxuICAgICAgJy0tYmxhY2stY29udHJhc3QnOiAnIzExMGYwZScsXG4gICAgICAnLS1ncmF5LTEnOiAncmdiYSg2MSwgMzcsIDIwLCAuMDUpJyxcbiAgICAgICctLWdyYXktMic6ICdyZ2JhKDYxLCAzNywgMjAsIC4wOCknLFxuICAgICAgJy0tZ3JheS0zJzogJ3JnYmEoNjEsIDM3LCAyMCwgLjEyKScsXG4gICAgICAnLS1ncmF5LTQnOiAncmdiYSg1MywgMzgsIDI4LCAuMyknLFxuICAgICAgJy0tZ3JheS01JzogJ3JnYmEoMjgsIDI1LCAyMywgLjYpJyxcbiAgICAgICctLWdyZWVuJzogJyMyMmM1NWUnLFxuICAgICAgJy0tcHVycGxlJzogJyM2YTAwZjUnLFxuICAgICAgJy0tcHVycGxlLWNvbnRyYXN0JzogJyM1ODAwY2MnLFxuICAgICAgJy0tcHVycGxlLWxpZ2h0JzogJ3JnYmEoODgsIDUsIDI1NSwgLjA1KScsXG4gICAgICAnLS15ZWxsb3ctY29udHJhc3QnOiAnI2ZhY2MxNScsXG4gICAgICAnLS15ZWxsb3cnOiAncmdiYSgyNTAsIDIwNCwgMjEsIC40KScsXG4gICAgICAnLS15ZWxsb3ctbGlnaHQnOiAnI2ZmZmFlNScsXG4gICAgICAnLS1yZWQnOiAnI2ZmNWMzMycsXG4gICAgICAnLS1yZWQtbGlnaHQnOiAnI2ZmZWJlNScsXG4gICAgICAnLS1zaGFkb3cnOiBgMHB4IDEycHggMzNweCAwcHggcmdiYSgwLCAwLCAwLCAuMDYpLFxuICAgICAgICAgICAgICAgMHB4IDMuNjE4cHggOS45NDlweCAwcHggcmdiYSgwLCAwLCAwLCAuMDQpYCxcbiAgICB9O1xuXG4gICAgT2JqZWN0LmVudHJpZXMoY3NzVmFyaWFibGVzKS5mb3JFYWNoKChba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eShrZXksIHZhbHVlKTtcbiAgICB9KTtcbiAgfSwgW10pO1xuXG4gIGNvbnN0IGVkaXRvclN0YXRlID0gdXNlRWRpdG9yU3RhdGUoe1xuICAgIGVkaXRvcixcbiAgICBzZWxlY3RvcjogKGN0eCkgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgaXNGb2N1c2VkOiBjdHguZWRpdG9yPy5pc0ZvY3VzZWQsXG4gICAgICB9O1xuICAgIH0sXG4gIH0pO1xuXG4gIGNvbnN0IHZhbHVlVG9TaXplID0gKHYpID0+IHtcbiAgICBpZiAoIXYpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgY29uc3QgY2FsY1JlZ2V4ID0gL15jYWxjXFwoKC4qKVxcKSQvO1xuXG4gICAgaWYgKHR5cGVvZiB2ID09PSAnc3RyaW5nJykge1xuICAgICAgaWYgKHYuZW5kc1dpdGgoJyUnKSkge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgfSBlbHNlIGlmIChcbiAgICAgICAgdi5lbmRzV2l0aCgncHgnKSB8fFxuICAgICAgICB2LmVuZHNXaXRoKCd2aCcpIHx8XG4gICAgICAgIHYuZW5kc1dpdGgoJ3Z3JykgfHxcbiAgICAgICAgdi5lbmRzV2l0aCgnY2gnKSB8fFxuICAgICAgICB2LmVuZHNXaXRoKCdlbScpIHx8XG4gICAgICAgIHYubWF0Y2goY2FsY1JlZ2V4KVxuICAgICAgKSB7XG4gICAgICAgIHJldHVybiB2O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgdmFsdWUgPSBwYXJzZUludCh2LCAxMCk7XG4gICAgICAgIHJldHVybiBpc05hTih2YWx1ZSkgPyB2YWx1ZSA6IGAke3ZhbHVlfXB4YDtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHR5cGVvZiB2ID09PSAnbnVtYmVyJykge1xuICAgICAgcmV0dXJuIGAke3Z9cHhgO1xuICAgIH1cbiAgfTtcblxuICBjb25zdCBzaXplU3R5bGUgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBjb25zdCB7IG1pbldpZHRoLCB3aWR0aCwgbWF4V2lkdGgsIG1pbkhlaWdodCwgaGVpZ2h0LCBtYXhIZWlnaHQgfSA9IHByb3BzO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIHdpZHRoOiB2YWx1ZVRvU2l6ZSh3aWR0aCksXG4gICAgICBtaW5XaWR0aDogdmFsdWVUb1NpemUobWluV2lkdGgpLFxuICAgICAgbWF4V2lkdGg6IHZhbHVlVG9TaXplKG1heFdpZHRoKSxcbiAgICAgIGhlaWdodDogdmFsdWVUb1NpemUoaGVpZ2h0KSxcbiAgICAgIG1pbkhlaWdodDogdmFsdWVUb1NpemUobWluSGVpZ2h0KSxcbiAgICAgIG1heEhlaWdodDogdmFsdWVUb1NpemUobWF4SGVpZ2h0KSxcbiAgICB9O1xuICB9LCBbcHJvcHNdKTtcblxuICByZXR1cm4gKFxuICAgIDxFZGl0b3JDb250YWluZXJcbiAgICAgIHsuLi57IC4uLnByb3BzLCBhY3RpdmVQbHVnaW5zOiBhY3RpdmVQbHVnaW5zVG9Vc2UsIHRvb2xiYXJPcHRzOiB0b29sYmFyT3B0c1RvVXNlIH19XG4gICAgICBlZGl0b3JTdGF0ZT17ZWRpdG9yU3RhdGV9XG4gICAgICBlZGl0b3I9e2VkaXRvcn1cbiAgICA+XG4gICAgICB7ZWRpdG9yICYmIChcbiAgICAgICAgPEVkaXRvckNvbnRlbnRcbiAgICAgICAgICBzdHlsZT17e1xuICAgICAgICAgICAgbWluSGVpZ2h0OiBzaXplU3R5bGUubWluSGVpZ2h0LFxuICAgICAgICAgICAgaGVpZ2h0OiBzaXplU3R5bGUuaGVpZ2h0LFxuICAgICAgICAgICAgbWF4SGVpZ2h0OiBzaXplU3R5bGUubWF4SGVpZ2h0LFxuICAgICAgICAgIH19XG4gICAgICAgICAgY2xhc3NOYW1lPXtjbGFzc2VzLnJvb3R9XG4gICAgICAgICAgZWRpdG9yPXtlZGl0b3J9XG4gICAgICAgIC8+XG4gICAgICApfVxuICAgIDwvRWRpdG9yQ29udGFpbmVyPlxuICApO1xufTtcblxuY29uc3QgU3R5bGVkRWRpdG9yID0gd2l0aFN0eWxlcyh7XG4gIHJvb3Q6IHtcbiAgICBvdXRsaW5lOiAnbm9uZSAhaW1wb3J0YW50JyxcbiAgICAnJiAuUHJvc2VNaXJyb3InOiB7XG4gICAgICBvdXRsaW5lOiAnbm9uZSAhaW1wb3J0YW50JyxcbiAgICAgIHBvc2l0aW9uOiAnaW5pdGlhbCcsXG4gICAgfSxcbiAgfSxcbn0pKEVkaXRhYmxlSHRtbCk7XG5cbmV4cG9ydCBkZWZhdWx0IFN0eWxlZEVkaXRvcjtcbiJdfQ==