haya-select 1.0.81 → 1.0.82

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/build/config.d.ts CHANGED
@@ -1,3 +1,19 @@
1
+ export default class HayaSelectConfiguration {
2
+ /** @returns {HayaSelectConfiguration} */
3
+ static current(): HayaSelectConfiguration;
4
+ /** @type {TranslateFunctionType} */
5
+ _useTranslate: TranslateFunctionType;
6
+ getBodyPortal(): any;
7
+ /** @returns {TranslateFunctionType} */
8
+ getUseTranslate(): TranslateFunctionType;
9
+ setBodyPortal(newBodyPortal: any): void;
10
+ _bodyPortal: any;
11
+ /**
12
+ * @param {TranslateFunctionType} callback
13
+ * @returns {void}
14
+ */
15
+ setUseTranslate(callback: TranslateFunctionType): void;
16
+ }
1
17
  export type TranslateFunctionType = () => {
2
18
  t: (arg0: string) => string;
3
19
  };
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.js"],"names":[],"mappings":"oCAGa,MAAY;IAAC,CAAC,EAAE,CAAS,IAAM,EAAN,MAAM,KAAI,MAAM,CAAA;CAAC"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.js"],"names":[],"mappings":"AAyBA;IACE,yCAAyC;IACzC,kBADc,uBAAuB,CASpC;IAED,oCAAoC;IACpC,eADW,qBAAqB,CACI;IAEpC,qBAIC;IAED,uCAAuC;IACvC,mBADc,qBAAqB,CAGlC;IAED,wCAEC;IADC,iBAAgC;IAGlC;;;OAGG;IACH,0BAHW,qBAAqB,GACnB,IAAI,CAIhB;CACF;oCA3DY,MAAY;IAAC,CAAC,EAAE,CAAS,IAAM,EAAN,MAAM,KAAI,MAAM,CAAA;CAAC"}
package/build/config.js CHANGED
@@ -17,7 +17,15 @@ function t(msgID) {
17
17
  function useTranslateFallback() {
18
18
  return { t };
19
19
  }
20
- class HayaSelectConfiguration {
20
+ export default class HayaSelectConfiguration {
21
+ /** @returns {HayaSelectConfiguration} */
22
+ static current() {
23
+ if (!globalThis.hayaSelectConfig) {
24
+ globalThis.hayaSelectConfig = new HayaSelectConfiguration();
25
+ }
26
+ const hayaSelectConfig = /** @type {HayaSelectConfiguration} */ (globalThis.hayaSelectConfig);
27
+ return hayaSelectConfig;
28
+ }
21
29
  /** @type {TranslateFunctionType} */
22
30
  _useTranslate = useTranslateFallback;
23
31
  getBodyPortal() {
@@ -40,8 +48,4 @@ class HayaSelectConfiguration {
40
48
  this._useTranslate = callback;
41
49
  }
42
50
  }
43
- if (!globalThis.hayaSelectConfig) {
44
- globalThis.hayaSelectConfig = new HayaSelectConfiguration();
45
- }
46
- export default globalThis.hayaSelectConfig;
47
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NvbmZpZy5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZO0FBRVo7O0dBRUc7QUFFSCxNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUE7QUFFakI7OztHQUdHO0FBQ0gsU0FBUyxDQUFDLENBQUMsS0FBSztJQUNkLElBQUksQ0FBQyxNQUFNLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUM5QixNQUFNLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFBO1FBQy9CLE9BQU8sQ0FBQyxHQUFHLENBQUMsc0NBQXNDLENBQUMsQ0FBQTtJQUNyRCxDQUFDO0lBRUQsT0FBTyxLQUFLLENBQUE7QUFDZCxDQUFDO0FBRUQsU0FBUyxvQkFBb0I7SUFDM0IsT0FBTyxFQUFDLENBQUMsRUFBQyxDQUFBO0FBQ1osQ0FBQztBQUVELE1BQU0sdUJBQXVCO0lBQzNCLG9DQUFvQztJQUNwQyxhQUFhLEdBQUcsb0JBQW9CLENBQUE7SUFFcEMsYUFBYTtRQUNYLElBQUksQ0FBQyxJQUFJLENBQUMsV0FBVztZQUFFLE1BQU0sSUFBSSxLQUFLLENBQUMsdUJBQXVCLENBQUMsQ0FBQTtRQUUvRCxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUE7SUFDekIsQ0FBQztJQUVELHVDQUF1QztJQUN2QyxlQUFlO1FBQ2IsT0FBTyxJQUFJLENBQUMsYUFBYSxDQUFBO0lBQzNCLENBQUM7SUFFRCxhQUFhLENBQUMsYUFBYTtRQUN6QixJQUFJLENBQUMsV0FBVyxHQUFHLGFBQWEsQ0FBQTtJQUNsQyxDQUFDO0lBRUQ7OztPQUdHO0lBQ0gsZUFBZSxDQUFDLFFBQVE7UUFDdEIsSUFBSSxDQUFDLGFBQWEsR0FBRyxRQUFRLENBQUE7SUFDL0IsQ0FBQztDQUNGO0FBRUQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsRUFBRSxDQUFDO0lBQ2pDLFVBQVUsQ0FBQyxnQkFBZ0IsR0FBRyxJQUFJLHVCQUF1QixFQUFFLENBQUE7QUFDN0QsQ0FBQztBQUVELGVBQWUsVUFBVSxDQUFDLGdCQUFnQixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLy8gQHRzLWNoZWNrXG5cbi8qKlxuICogQHR5cGVkZWYge2Z1bmN0aW9uKCk6IHt0OiBmdW5jdGlvbihzdHJpbmcpIDogc3RyaW5nfX0gVHJhbnNsYXRlRnVuY3Rpb25UeXBlXG4gKi9cblxuY29uc3Qgc2hhcmVkID0ge31cblxuLyoqXG4gKiBAcGFyYW0ge3N0cmluZ30gbXNnSURcbiAqIEByZXR1cm5zIHtzdHJpbmd9XG4gKi9cbmZ1bmN0aW9uIHQobXNnSUQpIHtcbiAgaWYgKCFzaGFyZWQuX3RyYW5zbGF0ZVdhcm5pbmcpIHtcbiAgICBzaGFyZWQuX3RyYW5zbGF0ZVdhcm5pbmcgPSB0cnVlXG4gICAgY29uc29sZS5sb2coXCJIYXlhU2VsZWN0OiBUcmFuc2xhdGUgbWV0aG9kIG5vdCBzZXRcIilcbiAgfVxuXG4gIHJldHVybiBtc2dJRFxufVxuXG5mdW5jdGlvbiB1c2VUcmFuc2xhdGVGYWxsYmFjaygpIHtcbiAgcmV0dXJuIHt0fVxufVxuXG5jbGFzcyBIYXlhU2VsZWN0Q29uZmlndXJhdGlvbiB7XG4gIC8qKiBAdHlwZSB7VHJhbnNsYXRlRnVuY3Rpb25UeXBlfSAqL1xuICBfdXNlVHJhbnNsYXRlID0gdXNlVHJhbnNsYXRlRmFsbGJhY2tcblxuICBnZXRCb2R5UG9ydGFsKCkge1xuICAgIGlmICghdGhpcy5fYm9keVBvcnRhbCkgdGhyb3cgbmV3IEVycm9yKFwiYm9keVBvcnRhbCB3YXNuJ3Qgc2V0XCIpXG5cbiAgICByZXR1cm4gdGhpcy5fYm9keVBvcnRhbFxuICB9XG5cbiAgLyoqIEByZXR1cm5zIHtUcmFuc2xhdGVGdW5jdGlvblR5cGV9ICovXG4gIGdldFVzZVRyYW5zbGF0ZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fdXNlVHJhbnNsYXRlXG4gIH1cblxuICBzZXRCb2R5UG9ydGFsKG5ld0JvZHlQb3J0YWwpIHtcbiAgICB0aGlzLl9ib2R5UG9ydGFsID0gbmV3Qm9keVBvcnRhbFxuICB9XG5cbiAgLyoqXG4gICAqIEBwYXJhbSB7VHJhbnNsYXRlRnVuY3Rpb25UeXBlfSBjYWxsYmFja1xuICAgKiBAcmV0dXJucyB7dm9pZH1cbiAgICovXG4gIHNldFVzZVRyYW5zbGF0ZShjYWxsYmFjaykge1xuICAgIHRoaXMuX3VzZVRyYW5zbGF0ZSA9IGNhbGxiYWNrXG4gIH1cbn1cblxuaWYgKCFnbG9iYWxUaGlzLmhheWFTZWxlY3RDb25maWcpIHtcbiAgZ2xvYmFsVGhpcy5oYXlhU2VsZWN0Q29uZmlnID0gbmV3IEhheWFTZWxlY3RDb25maWd1cmF0aW9uKClcbn1cblxuZXhwb3J0IGRlZmF1bHQgZ2xvYmFsVGhpcy5oYXlhU2VsZWN0Q29uZmlnXG4iXX0=
51
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NvbmZpZy5qcyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxZQUFZO0FBRVo7O0dBRUc7QUFFSCxNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUE7QUFFakI7OztHQUdHO0FBQ0gsU0FBUyxDQUFDLENBQUMsS0FBSztJQUNkLElBQUksQ0FBQyxNQUFNLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztRQUM5QixNQUFNLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFBO1FBQy9CLE9BQU8sQ0FBQyxHQUFHLENBQUMsc0NBQXNDLENBQUMsQ0FBQTtJQUNyRCxDQUFDO0lBRUQsT0FBTyxLQUFLLENBQUE7QUFDZCxDQUFDO0FBRUQsU0FBUyxvQkFBb0I7SUFDM0IsT0FBTyxFQUFDLENBQUMsRUFBQyxDQUFBO0FBQ1osQ0FBQztBQUVELE1BQU0sQ0FBQyxPQUFPLE9BQU8sdUJBQXVCO0lBQzFDLHlDQUF5QztJQUN6QyxNQUFNLENBQUMsT0FBTztRQUNaLElBQUksQ0FBQyxVQUFVLENBQUMsZ0JBQWdCLEVBQUUsQ0FBQztZQUNqQyxVQUFVLENBQUMsZ0JBQWdCLEdBQUcsSUFBSSx1QkFBdUIsRUFBRSxDQUFBO1FBQzdELENBQUM7UUFFRCxNQUFNLGdCQUFnQixHQUFHLHNDQUFzQyxDQUFDLENBQUMsVUFBVSxDQUFDLGdCQUFnQixDQUFDLENBQUE7UUFFN0YsT0FBTyxnQkFBZ0IsQ0FBQTtJQUN6QixDQUFDO0lBRUQsb0NBQW9DO0lBQ3BDLGFBQWEsR0FBRyxvQkFBb0IsQ0FBQTtJQUVwQyxhQUFhO1FBQ1gsSUFBSSxDQUFDLElBQUksQ0FBQyxXQUFXO1lBQUUsTUFBTSxJQUFJLEtBQUssQ0FBQyx1QkFBdUIsQ0FBQyxDQUFBO1FBRS9ELE9BQU8sSUFBSSxDQUFDLFdBQVcsQ0FBQTtJQUN6QixDQUFDO0lBRUQsdUNBQXVDO0lBQ3ZDLGVBQWU7UUFDYixPQUFPLElBQUksQ0FBQyxhQUFhLENBQUE7SUFDM0IsQ0FBQztJQUVELGFBQWEsQ0FBQyxhQUFhO1FBQ3pCLElBQUksQ0FBQyxXQUFXLEdBQUcsYUFBYSxDQUFBO0lBQ2xDLENBQUM7SUFFRDs7O09BR0c7SUFDSCxlQUFlLENBQUMsUUFBUTtRQUN0QixJQUFJLENBQUMsYUFBYSxHQUFHLFFBQVEsQ0FBQTtJQUMvQixDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBAdHMtY2hlY2tcblxuLyoqXG4gKiBAdHlwZWRlZiB7ZnVuY3Rpb24oKToge3Q6IGZ1bmN0aW9uKHN0cmluZykgOiBzdHJpbmd9fSBUcmFuc2xhdGVGdW5jdGlvblR5cGVcbiAqL1xuXG5jb25zdCBzaGFyZWQgPSB7fVxuXG4vKipcbiAqIEBwYXJhbSB7c3RyaW5nfSBtc2dJRFxuICogQHJldHVybnMge3N0cmluZ31cbiAqL1xuZnVuY3Rpb24gdChtc2dJRCkge1xuICBpZiAoIXNoYXJlZC5fdHJhbnNsYXRlV2FybmluZykge1xuICAgIHNoYXJlZC5fdHJhbnNsYXRlV2FybmluZyA9IHRydWVcbiAgICBjb25zb2xlLmxvZyhcIkhheWFTZWxlY3Q6IFRyYW5zbGF0ZSBtZXRob2Qgbm90IHNldFwiKVxuICB9XG5cbiAgcmV0dXJuIG1zZ0lEXG59XG5cbmZ1bmN0aW9uIHVzZVRyYW5zbGF0ZUZhbGxiYWNrKCkge1xuICByZXR1cm4ge3R9XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEhheWFTZWxlY3RDb25maWd1cmF0aW9uIHtcbiAgLyoqIEByZXR1cm5zIHtIYXlhU2VsZWN0Q29uZmlndXJhdGlvbn0gKi9cbiAgc3RhdGljIGN1cnJlbnQoKSB7XG4gICAgaWYgKCFnbG9iYWxUaGlzLmhheWFTZWxlY3RDb25maWcpIHtcbiAgICAgIGdsb2JhbFRoaXMuaGF5YVNlbGVjdENvbmZpZyA9IG5ldyBIYXlhU2VsZWN0Q29uZmlndXJhdGlvbigpXG4gICAgfVxuXG4gICAgY29uc3QgaGF5YVNlbGVjdENvbmZpZyA9IC8qKiBAdHlwZSB7SGF5YVNlbGVjdENvbmZpZ3VyYXRpb259ICovIChnbG9iYWxUaGlzLmhheWFTZWxlY3RDb25maWcpXG5cbiAgICByZXR1cm4gaGF5YVNlbGVjdENvbmZpZ1xuICB9XG5cbiAgLyoqIEB0eXBlIHtUcmFuc2xhdGVGdW5jdGlvblR5cGV9ICovXG4gIF91c2VUcmFuc2xhdGUgPSB1c2VUcmFuc2xhdGVGYWxsYmFja1xuXG4gIGdldEJvZHlQb3J0YWwoKSB7XG4gICAgaWYgKCF0aGlzLl9ib2R5UG9ydGFsKSB0aHJvdyBuZXcgRXJyb3IoXCJib2R5UG9ydGFsIHdhc24ndCBzZXRcIilcblxuICAgIHJldHVybiB0aGlzLl9ib2R5UG9ydGFsXG4gIH1cblxuICAvKiogQHJldHVybnMge1RyYW5zbGF0ZUZ1bmN0aW9uVHlwZX0gKi9cbiAgZ2V0VXNlVHJhbnNsYXRlKCkge1xuICAgIHJldHVybiB0aGlzLl91c2VUcmFuc2xhdGVcbiAgfVxuXG4gIHNldEJvZHlQb3J0YWwobmV3Qm9keVBvcnRhbCkge1xuICAgIHRoaXMuX2JvZHlQb3J0YWwgPSBuZXdCb2R5UG9ydGFsXG4gIH1cblxuICAvKipcbiAgICogQHBhcmFtIHtUcmFuc2xhdGVGdW5jdGlvblR5cGV9IGNhbGxiYWNrXG4gICAqIEByZXR1cm5zIHt2b2lkfVxuICAgKi9cbiAgc2V0VXNlVHJhbnNsYXRlKGNhbGxiYWNrKSB7XG4gICAgdGhpcy5fdXNlVHJhbnNsYXRlID0gY2FsbGJhY2tcbiAgfVxufVxuXG5cbiJdfQ==
@@ -1,5 +1,5 @@
1
1
  import { anythingDifferent } from "set-state-compare/build/diff-utils";
2
- import config from "../config.js";
2
+ import Config from "../config.js";
3
3
  import { dig, digg } from "diggerize";
4
4
  import { Dimensions, Platform, Pressable, Text, TextInput, View } from "react-native";
5
5
  import React, { memo, useEffect, useRef } from "react";
@@ -71,10 +71,12 @@ export default memo(shapeComponent(class HayaSelect extends ShapeComponent {
71
71
  values: PropTypes.array
72
72
  });
73
73
  callOptionsPositionAboveIfOutsideScreen = false;
74
+ t = Config.current().getUseTranslate()().t;
74
75
  windowWidth = Dimensions.get("window").width;
75
76
  windowHeight = Dimensions.get("window").height;
76
77
  setup() {
77
- const { t } = config.getUseTranslate()();
78
+ const { t } = Config.current().getUseTranslate()();
79
+ this.t = t;
78
80
  if (this.props.values) {
79
81
  for (const value of this.props.values) {
80
82
  if (typeof value == "undefined") {
@@ -86,8 +88,7 @@ export default memo(shapeComponent(class HayaSelect extends ShapeComponent {
86
88
  endOfSelectRef: useRef(),
87
89
  optionsContainerRef: useRef(),
88
90
  searchTextInputRef: useRef(),
89
- selectContainerRef: useRef(),
90
- t
91
+ selectContainerRef: useRef()
91
92
  });
92
93
  this.useStates({
93
94
  currentOptions: () => this.defaultCurrentOptions(),
@@ -620,18 +621,17 @@ export default memo(shapeComponent(class HayaSelect extends ShapeComponent {
620
621
  else {
621
622
  style = this.stylingFor("optionPresentationText", { flex: 1, whiteSpace: "nowrap" });
622
623
  }
623
- return (React.createElement(View, { dataSet: {
624
- class: "option-presentation",
624
+ return (React.createElement(View, { dataSet: this.cache("presentOptionViewDataSet", {
625
625
  text: option.text,
626
626
  toggleIcon: toggleOption?.icon,
627
627
  toggleValue: toggleOption?.value,
628
628
  value: option.value
629
- }, style: this.optionPresentationStyle ||= { flexDirection: "row" } },
629
+ }, [option.text, option.value, toggleOption?.icon, toggleOption?.value]), style: this.cache("optionPresentationStyle", { flexDirection: "row" }), testID: "option-presentation" },
630
630
  toggleOptions && !(option.value in toggled) &&
631
- React.createElement(View, { dataSet: this.toggleIconPlaceholderDataSet ||= { class: "toggle-icon-placeholder" }, style: this.toggleIconPlaceholderStyle ||= { width: 20 } }),
631
+ React.createElement(View, { style: this.cache("toggleIconPlaceholderStyle", { width: 20 }), testID: "toggle-icon-placeholder" }),
632
632
  toggleOptions && (option.value in toggled) &&
633
- React.createElement(View, { style: this.toggleIconContainerStyle ||= { alignItems: "center", justifyContent: "center", width: 20 } },
634
- React.createElement(FontAwesomeIcon, { dataSet: this.toggleIconDataSet ||= { class: "toggle-icon" }, name: icon })),
633
+ React.createElement(View, { style: this.cache("toggleIconContainerStyle", { alignItems: "center", justifyContent: "center", width: 20 }) },
634
+ React.createElement(FontAwesomeIcon, { name: icon, testID: "toggle-icon" })),
635
635
  (() => {
636
636
  if (mode == "current" && option.currentContent) {
637
637
  return option.currentContent();
@@ -646,7 +646,7 @@ export default memo(shapeComponent(class HayaSelect extends ShapeComponent {
646
646
  return React.createElement("div", { dangerouslySetInnerHTML: { __html: digg(option, "html") } });
647
647
  }
648
648
  else {
649
- return (React.createElement(Text, { dataSet: this.optionPresentationTextDataSet ||= { class: "option-presentation-text" }, style: style }, option.text));
649
+ return (React.createElement(Text, { style: style, testID: "option-presentation-text" }, option.text));
650
650
  }
651
651
  })()));
652
652
  };
@@ -660,4 +660,4 @@ export default memo(shapeComponent(class HayaSelect extends ShapeComponent {
660
660
  }
661
661
  }
662
662
  }));
663
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VsZWN0L2luZGV4LmpzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxvQ0FBb0MsQ0FBQTtBQUNwRSxPQUFPLE1BQU0sTUFBTSxjQUFjLENBQUE7QUFDakMsT0FBTyxFQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUMsTUFBTSxXQUFXLENBQUE7QUFDbkMsT0FBTyxFQUFDLFVBQVUsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFDLE1BQU0sY0FBYyxDQUFBO0FBQ25GLE9BQU8sS0FBSyxFQUFFLEVBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUMsTUFBTSxPQUFPLENBQUE7QUFDcEQsT0FBTyxFQUFDLGNBQWMsRUFBRSxjQUFjLEVBQUMsTUFBTSw0Q0FBNEMsQ0FBQTtBQUN6RixPQUFPLFFBQVEsTUFBTSxVQUFVLENBQUE7QUFDL0IsT0FBTyxlQUFlLE1BQU0sdUNBQXVDLENBQUE7QUFDbkUsT0FBTyxjQUFjLE1BQU0sbURBQW1ELENBQUE7QUFDOUUsT0FBTyxnQkFBZ0IsTUFBTSxxREFBcUQsQ0FBQTtBQUNsRixPQUFPLE1BQU0sTUFBTSxVQUFVLENBQUE7QUFDN0IsT0FBTyxXQUFXLE1BQU0sZ0JBQWdCLENBQUE7QUFDeEMsT0FBTyxTQUFTLE1BQU0sWUFBWSxDQUFBO0FBQ2xDLE9BQU8sY0FBYyxNQUFNLGtCQUFrQixDQUFBO0FBQzdDLE9BQU8sVUFBVSxNQUFNLDBCQUEwQixDQUFBO0FBQ2pELE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxjQUFjLENBQUE7QUFDbkMsT0FBTyxnQkFBZ0IsTUFBTSw4Q0FBOEMsQ0FBQTtBQUMzRSxPQUFPLGVBQWUsTUFBTSxxQ0FBcUMsQ0FBQTtBQUVqRSx3QkFBd0I7QUFDeEIsTUFBTSw0QkFBNEIsR0FBRyxDQUFDLFNBQVMsRUFBRSxFQUFFO0lBQ2pELElBQUksSUFBSSxHQUFHLGdCQUFnQixDQUFDLFNBQVMsQ0FBQyxDQUFBO0lBRXRDLE1BQU0sY0FBYyxHQUFHLFNBQVMsQ0FBQyxpQkFBaUIsRUFBRSxDQUFBO0lBRXBELElBQUksU0FBUyxDQUFDLEtBQUssQ0FBQyxRQUFRLElBQUksSUFBSSxJQUFJLGNBQWMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDbEUsSUFBSSxJQUFJLElBQUksQ0FBQTtJQUNkLENBQUM7SUFFRCxPQUFPLElBQUksQ0FBQTtBQUNiLENBQUMsQ0FBQTtBQUVELGVBQWUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxNQUFNLFVBQVcsU0FBUSxjQUFjO0lBQ3hFLE1BQU0sQ0FBQyxZQUFZLEdBQUc7UUFDcEIsUUFBUSxFQUFFLEtBQUs7UUFDZixhQUFhLEVBQUUsSUFBSTtRQUNuQixNQUFNLEVBQUUsSUFBSTtRQUNaLE9BQU8sRUFBRSxJQUFJO1FBQ2IsZUFBZSxFQUFFLElBQUk7UUFDckIsYUFBYSxFQUFFLElBQUk7UUFDbkIsWUFBWSxFQUFFLElBQUk7UUFDbEIsTUFBTSxFQUFFLEtBQUs7UUFDYixXQUFXLEVBQUUsS0FBSztLQUNuQixDQUFBO0lBRUQsTUFBTSxDQUFDLFNBQVMsR0FBRyxjQUFjLENBQUM7UUFDaEMsU0FBUyxFQUFFLFNBQVMsQ0FBQyxNQUFNO1FBQzNCLFNBQVMsRUFBRSxTQUFTLENBQUMsTUFBTTtRQUMzQixjQUFjLEVBQUUsU0FBUyxDQUFDLE1BQU07UUFDaEMsWUFBWSxFQUFFLFNBQVMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLFNBQVMsQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUN2RSxhQUFhLEVBQUUsU0FBUyxDQUFDLEtBQUs7UUFDOUIsd0JBQXdCLEVBQUUsU0FBUyxDQUFDLEtBQUs7UUFDekMsRUFBRSxFQUFFLFNBQVMsQ0FBQyxJQUFJO1FBQ2xCLEtBQUssRUFBRSxTQUFTLENBQUMsTUFBTTtRQUN2QixRQUFRLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVO1FBQ25DLElBQUksRUFBRSxTQUFTLENBQUMsTUFBTTtRQUN0QixhQUFhLEVBQUUsU0FBUyxDQUFDLElBQUk7UUFDN0IsTUFBTSxFQUFFLFNBQVMsQ0FBQyxJQUFJO1FBQ3RCLFFBQVEsRUFBRSxTQUFTLENBQUMsSUFBSTtRQUN4QixhQUFhLEVBQUUsU0FBUyxDQUFDLElBQUk7UUFDN0IsT0FBTyxFQUFFLFNBQVMsQ0FBQyxJQUFJO1FBQ3ZCLGVBQWUsRUFBRSxTQUFTLENBQUMsSUFBSTtRQUMvQixPQUFPLEVBQUUsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsVUFBVTtRQUMxRSxlQUFlLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVO1FBQzFDLGFBQWEsRUFBRSxTQUFTLENBQUMsSUFBSSxDQUFDLFVBQVU7UUFDeEMsWUFBWSxFQUFFLFNBQVMsQ0FBQyxNQUFNO1FBQzlCLFdBQVcsRUFBRSxTQUFTLENBQUMsSUFBSTtRQUMzQixNQUFNLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVO1FBQ2pDLE1BQU0sRUFBRSxTQUFTLENBQUMsTUFBTTtRQUN4QixPQUFPLEVBQUUsU0FBUyxDQUFDLE1BQU07UUFDekIsYUFBYSxFQUFFLFNBQVMsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQztZQUMvQyxJQUFJLEVBQUUsU0FBUyxDQUFDLE1BQU0sQ0FBQyxVQUFVO1lBQ2pDLEtBQUssRUFBRSxTQUFTLENBQUMsTUFBTSxDQUFDLFVBQVU7WUFDbEMsS0FBSyxFQUFFLFNBQVMsQ0FBQyxNQUFNLENBQUMsVUFBVTtTQUNuQyxDQUFDLENBQUM7UUFDSCxXQUFXLEVBQUUsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVO1FBQ3RDLE1BQU0sRUFBRSxTQUFTLENBQUMsS0FBSztLQUN4QixDQUFDLENBQUE7SUFFRix1Q0FBdUMsR0FBRyxLQUFLLENBQUE7SUFDL0MsV0FBVyxHQUFHLFVBQVUsQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsS0FBSyxDQUFBO0lBQzVDLFlBQVksR0FBRyxVQUFVLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQTtJQUU5QyxLQUFLO1FBQ0gsTUFBTSxFQUFDLENBQUMsRUFBQyxHQUFHLE1BQU0sQ0FBQyxlQUFlLEVBQUUsRUFBRSxDQUFBO1FBRXRDLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUN0QixLQUFLLE1BQU0sS0FBSyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ3RDLElBQUksT0FBTyxLQUFLLElBQUksV0FBVyxFQUFFLENBQUM7b0JBQ2hDLE1BQU0sSUFBSSxLQUFLLENBQUMsc0NBQXNDLENBQUMsQ0FBQTtnQkFDekQsQ0FBQztZQUNILENBQUM7UUFDSCxDQUFDO1FBRUQsSUFBSSxDQUFDLFdBQVcsQ0FBQztZQUNmLGNBQWMsRUFBRSxNQUFNLEVBQUU7WUFDeEIsbUJBQW1CLEVBQUUsTUFBTSxFQUFFO1lBQzdCLGtCQUFrQixFQUFFLE1BQU0sRUFBRTtZQUM1QixrQkFBa0IsRUFBRSxNQUFNLEVBQUU7WUFDNUIsQ0FBQztTQUNGLENBQUMsQ0FBQTtRQUNGLElBQUksQ0FBQyxTQUFTLENBQUM7WUFDYixjQUFjLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLHFCQUFxQixFQUFFO1lBQ2xELHFCQUFxQixFQUFFLElBQUk7WUFDM0IsaUJBQWlCLEVBQUUsSUFBSTtZQUN2QixNQUFNLEVBQUUsSUFBSTtZQUNaLGFBQWEsRUFBRSxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLEVBQUU7WUFDaEQsTUFBTSxFQUFFLEtBQUs7WUFDYixzQkFBc0IsRUFBRSxJQUFJO1lBQzVCLGdCQUFnQixFQUFFLFNBQVM7WUFDM0IsVUFBVSxFQUFFLFNBQVM7WUFDckIsaUJBQWlCLEVBQUUsU0FBUztZQUM1QixZQUFZLEVBQUUsU0FBUztZQUN2QixVQUFVLEVBQUUsUUFBUSxDQUFDLEVBQUUsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJO1lBQzdFLFNBQVMsRUFBRSxRQUFRLENBQUMsRUFBRSxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUk7WUFDM0UsVUFBVSxFQUFFLEVBQUU7WUFDZCxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRTtTQUNyQyxDQUFDLENBQUE7UUFFRixnQkFBZ0IsQ0FBQyxVQUFVLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsa0JBQWtCLENBQUMsQ0FBQTtRQUNsRSxlQUFlLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxtQkFBbUIsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLHFCQUFxQixDQUFDLENBQUE7UUFFM0UsSUFBSSxRQUFRLENBQUMsRUFBRSxJQUFJLEtBQUssRUFBRSxDQUFDO1lBQ3pCLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQywwQkFBMEIsQ0FBQyxDQUFBO1lBQ3RFLGdCQUFnQixDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQywyQkFBMkIsQ0FBQyxDQUFBO1FBQ3pFLENBQUM7UUFFRCxTQUFTLENBQUMsR0FBRyxFQUFFO1lBQ2IsSUFBSSxJQUFJLENBQUMsRUFBRSxDQUFDLHVDQUF1QyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztnQkFDckYsSUFBSSxDQUFDLHVDQUF1QyxHQUFHLEtBQUssQ0FBQTtnQkFDcEQsSUFBSSxDQUFDLHNDQUFzQyxFQUFFLENBQUE7WUFDL0MsQ0FBQztRQUNILENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsdUNBQXVDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxzQkFBc0IsQ0FBQyxDQUFDLENBQUE7UUFFcEYsU0FBUyxDQUFDLEdBQUcsRUFBRTtZQUNiLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxjQUFjLEVBQUUsR0FBRyxDQUFDLENBQUMsYUFBYSxFQUFFLEVBQUUsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUE7WUFFM0YsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sSUFBSSxpQkFBaUIsQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLElBQUksVUFBVSxFQUFFLENBQUM7Z0JBQzNILElBQUksQ0FBQyx5QkFBeUIsRUFBRSxDQUFBO1lBQ2xDLENBQUM7UUFDSCxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUE7SUFDekIsQ0FBQztJQUVELFNBQVMsQ0FBQyxLQUFLO1FBQ2IsSUFBSSxLQUFLLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDMUIsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLGNBQWMsS0FBSyxFQUFFLENBQUMsQ0FBQTtRQUN0QyxDQUFDO2FBQU0sQ0FBQztZQUNOLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUN0QixDQUFDO0lBQ0gsQ0FBQztJQUVELHFCQUFxQjtRQUNuQixNQUFNLEVBQUMsWUFBWSxFQUFFLGFBQWEsRUFBRSxNQUFNLEVBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFBO1FBQ3hELE1BQU0sRUFBQyxPQUFPLEVBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFBO1FBRXhCLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQztZQUFFLE9BQU8sRUFBRSxDQUFBO1FBRXRDLE9BQU8sT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEVBQUMsS0FBSyxFQUFDLEVBQUUsRUFBRSxDQUNoQyxDQUFDLFlBQVksSUFBSSxLQUFLLElBQUksWUFBWSxDQUFDO1lBQ3JDLENBQUMsYUFBYSxJQUFJLGFBQWEsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7WUFDaEQsQ0FBQyxNQUFNLElBQUksTUFBTSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUNyQyxDQUFBO0lBQ0gsQ0FBQztJQUVELG9CQUFvQjtRQUNsQixNQUFNLEVBQUMsT0FBTyxFQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQTtRQUV4QixJQUFJLE9BQU8sT0FBTyxJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQ2pDLE9BQU8sU0FBUyxDQUFBO1FBQ2xCLENBQUM7YUFBTSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUNsQyxPQUFPLE9BQU8sQ0FBQTtRQUNoQixDQUFDO1FBRUQsTUFBTSxJQUFJLEtBQUssQ0FBQyw0QkFBNEIsT0FBTyxPQUFPLEVBQUUsQ0FBQyxDQUFBO0lBQy9ELENBQUM7SUFFRCxjQUFjLEdBQUcsR0FBRyxFQUFFLENBQUMsQ0FBQyxTQUFTLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxjQUFjLElBQUksRUFBRSxDQUFBO0lBQ25HLFVBQVUsR0FBRyxHQUFHLEVBQUUsQ0FBQyxDQUFDLFNBQVMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQTtJQUM5RSxTQUFTLEdBQUcsR0FBRyxFQUFFLENBQUMsQ0FBQyxRQUFRLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLENBQUMsYUFBYSxFQUFFLEVBQUUsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDOUgsaUJBQWlCLEdBQUcsR0FBRyxFQUFFO1FBQ3ZCLElBQUksUUFBUSxJQUFJLElBQUksQ0FBQyxLQUFLLElBQUksT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sSUFBSSxXQUFXLEVBQUUsQ0FBQztZQUN0RSxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUMzRCxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUE7WUFDN0YsQ0FBQztpQkFBTSxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ3JELE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7b0JBQ2pDLElBQUksV0FBVyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssSUFBSSxLQUFLLENBQUMsQ0FBQTtvQkFFOUUsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO3dCQUNqQixXQUFXLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxJQUFJLEtBQUssQ0FBQyxDQUFBO3dCQUUzRSxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7NEJBQ2pCLE9BQU8sQ0FBQyxLQUFLLENBQ1gseUJBQXlCLEtBQUssMkNBQTJDLEVBQ3pFLEVBQUMsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxhQUFhLEVBQUUsbUJBQW1CLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxjQUFjLEVBQUUsWUFBWSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFDLENBQ3pILENBQUE7d0JBQ0gsQ0FBQztvQkFDSCxDQUFDO29CQUVELE9BQU8sV0FBVyxDQUFBO2dCQUNwQixDQUFDLENBQUMsQ0FBQTtZQUNKLENBQUM7aUJBQU0sSUFBSSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxJQUFJLFVBQVUsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUN4RSxtQ0FBbUM7WUFDckMsQ0FBQztpQkFBTSxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQzdCLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUMsS0FBSyxFQUFDLENBQUMsQ0FBQyxDQUFBO1lBQ2hELENBQUM7UUFDSCxDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUMsQ0FBQyxDQUFDLGNBQWMsQ0FBQTtJQUM5QixDQUFDLENBQUE7SUFFRCxzQkFBc0I7UUFDcEIsSUFBSSxRQUFRLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQzNCLE9BQU8sSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUE7UUFDdEIsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDL0QsQ0FBQztJQUVELGlCQUFpQjtRQUNmLE1BQU0sRUFBQyxTQUFTLEVBQUUsWUFBWSxFQUFFLGFBQWEsRUFBRSx3QkFBd0IsRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQTtRQUVyRyxJQUFJLENBQUMsQ0FBQyxZQUFZLElBQUksYUFBYSxJQUFJLHdCQUF3QixDQUFDLElBQUksQ0FBQyxTQUFTLElBQUksS0FBSyxDQUFDLENBQUMsSUFBSSxPQUFPLE9BQU8sSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUMxSCxJQUFJLENBQUMsb0NBQW9DLEVBQUUsQ0FBQTtRQUM3QyxDQUFDO0lBQ0gsQ0FBQztJQUVELGtCQUFrQjtRQUNoQixNQUFNLFFBQVEsR0FBRyxFQUFFLENBQUE7UUFFbkIsSUFBSSxTQUFTLElBQUksSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFDO1lBQzVCLE1BQU0sVUFBVSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFBO1lBRWpDLElBQUksaUJBQWlCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLEVBQUUsVUFBVSxDQUFDLEVBQUUsQ0FBQztnQkFDdEQsUUFBUSxDQUFDLE9BQU8sR0FBRyxVQUFVLENBQUE7WUFDL0IsQ0FBQztRQUNILENBQUM7UUFFRCxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ3JDLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUE7UUFDekIsQ0FBQztJQUNILENBQUM7SUFFRCxNQUFNO1FBQ0osTUFBTSxFQUFDLGNBQWMsRUFBQyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUE7UUFDaEMsTUFBTSxFQUFDLFdBQVcsRUFBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUE7UUFDNUIsTUFBTSxFQUFDLFNBQVMsRUFBRSxXQUFXLEVBQUUsYUFBYSxFQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQTtRQUMxRCxNQUFNLEVBQUMsTUFBTSxFQUFFLGdCQUFnQixFQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQTtRQUN6QyxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQTtRQUMvQyxNQUFNLEVBQUUsR0FBRyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUE7UUFFL0IsTUFBTSwwQkFBMEIsR0FBRyxJQUFJLENBQUMsVUFBVSxDQUFDLGlCQUFpQixFQUFFO1lBQ3BFLGFBQWEsRUFBRSxLQUFLO1lBQ3BCLFVBQVUsRUFBRSxRQUFRO1lBQ3BCLGVBQWUsRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsTUFBTTtZQUNqRCxNQUFNLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLGdCQUFnQjtZQUNsRCxZQUFZLEVBQUUsV0FBVyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDekMsS0FBSyxFQUFFLE1BQU07WUFDYixNQUFNLEVBQUUsU0FBUztZQUNqQixVQUFVLEVBQUUsQ0FBQztZQUNiLGFBQWEsRUFBRSxDQUFDO1lBQ2hCLFdBQVcsRUFBRSxDQUFDO1NBQ2YsRUFBRSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUE7UUFFakIsSUFBSSxNQUFNLEVBQUUsQ0FBQztZQUNYLDhGQUE4RjtZQUM5RiwwQkFBMEIsQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUE7WUFFakQsSUFBSSxnQkFBZ0IsSUFBSSxPQUFPLEVBQUUsQ0FBQztnQkFDaEMsMEJBQTBCLENBQUMsbUJBQW1CLEdBQUcsQ0FBQyxDQUFBO2dCQUNsRCwwQkFBMEIsQ0FBQyxvQkFBb0IsR0FBRyxDQUFDLENBQUE7Z0JBQ25ELDBCQUEwQixDQUFDLHVCQUF1QixHQUFHLDBCQUEwQixDQUFDLFlBQVksQ0FBQTtnQkFDNUYsMEJBQTBCLENBQUMsc0JBQXNCLEdBQUcsMEJBQTBCLENBQUMsWUFBWSxDQUFBO2dCQUUzRixPQUFPLDBCQUEwQixDQUFDLFlBQVksQ0FBQTtZQUNoRCxDQUFDO2lCQUFNLElBQUksZ0JBQWdCLElBQUksT0FBTyxFQUFFLENBQUM7Z0JBQ3ZDLDBCQUEwQixDQUFDLG1CQUFtQixHQUFHLDBCQUEwQixDQUFDLFlBQVksQ0FBQTtnQkFDeEYsMEJBQTBCLENBQUMsb0JBQW9CLEdBQUcsMEJBQTBCLENBQUMsWUFBWSxDQUFBO2dCQUN6RiwwQkFBMEIsQ0FBQyx1QkFBdUIsR0FBRyxDQUFDLENBQUE7Z0JBQ3RELDBCQUEwQixDQUFDLHNCQUFzQixHQUFHLENBQUMsQ0FBQTtnQkFFckQsT0FBTywwQkFBMEIsQ0FBQyxZQUFZLENBQUE7WUFDaEQsQ0FBQztRQUNILENBQUM7UUFFRCxPQUFPLENBQ0wsb0JBQUMsSUFBSSxJQUNILE9BQU8sRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLGlCQUFpQixFQUFFO2dCQUNyQyxLQUFLLEVBQUUsU0FBUztnQkFDaEIsU0FBUyxFQUFFLGFBQWE7Z0JBQ3hCLEVBQUU7Z0JBQ0YsTUFBTTtnQkFDTixnQkFBZ0I7Z0JBQ2hCLE9BQU8sRUFBRSxPQUFPLENBQUMsYUFBYSxDQUFDO2FBQ2hDLEVBQUUsQ0FBQyxTQUFTLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxnQkFBZ0IsRUFBRSxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxFQUNyRSxLQUFLLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUM7WUFFOUIsb0JBQUMsU0FBUyxJQUNSLE9BQU8sRUFBRSxJQUFJLENBQUMsc0JBQXNCLEtBQUssRUFBQyxLQUFLLEVBQUUsa0JBQWtCLEVBQUMsRUFDcEUsUUFBUSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsdUJBQXVCLEVBQ3pDLE9BQU8sRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLGVBQWUsRUFDaEMsR0FBRyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsa0JBQWtCLEVBQy9CLEtBQUssRUFBRSwwQkFBMEI7Z0JBRWpDLG9CQUFDLElBQUksSUFDSCxPQUFPLEVBQUUsSUFBSSxDQUFDLHNCQUFzQixLQUFLLEVBQUMsS0FBSyxFQUFFLGtCQUFrQixFQUFDLEVBQ3BFLEtBQUssRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLGlCQUFpQixFQUFFLElBQUksQ0FBQyxvQkFBb0IsS0FBSyxFQUFDLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUMsQ0FBQztvQkFFMUksTUFBTTt3QkFDTCxvQkFBQyxTQUFTLElBQ1IsT0FBTyxFQUFFLElBQUksQ0FBQyxzQkFBc0IsS0FBSyxFQUFDLEtBQUssRUFBRSxtQkFBbUIsRUFBQyxFQUNyRSxRQUFRLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxpQ0FBaUMsRUFDbkQsWUFBWSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsa0JBQWtCLEVBQ3hDLFdBQVcsRUFBRSxJQUFJLENBQUMsU0FBUyxDQUFDLHFCQUFxQixDQUFDLEVBQ2xELEdBQUcsRUFBRSxJQUFJLENBQUMsRUFBRSxDQUFDLGtCQUFrQixFQUMvQixLQUFLLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsb0JBQW9CLEtBQUs7Z0NBQ3RFLEtBQUssRUFBRSxNQUFNO2dDQUNiLE1BQU0sRUFBRSxDQUFDO2dDQUNULE9BQU8sRUFBRSxNQUFNO2dDQUNmLE9BQU8sRUFBRSxDQUFDOzZCQUNYLENBQUMsRUFDRixLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUssQ0FBQyxVQUFVLEdBQzVCO29CQUVILENBQUMsTUFBTTt3QkFDTjs0QkFDRyxjQUFjLENBQUMsTUFBTSxJQUFJLENBQUM7Z0NBQ3pCLG9CQUFDLElBQUksSUFBQyxhQUFhLEVBQUUsQ0FBQyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLGlCQUFpQixFQUFFLElBQUksQ0FBQyxvQkFBb0IsS0FBSyxFQUFDLEtBQUssRUFBRSxNQUFNLEVBQUMsQ0FBQyxJQUM3RyxXQUFXLElBQUksSUFBSSxDQUFDLFNBQVMsQ0FBQyxtQkFBbUIsQ0FBQyxDQUM5Qzs0QkFFUixjQUFjLENBQUMsTUFBTSxJQUFJLENBQUMsSUFBSSxRQUFRLENBQUMsRUFBRSxJQUFJLEtBQUs7Z0NBQ2pELCtCQUNFLEVBQUUsRUFBRSxjQUFjLENBQUMsSUFBSSxDQUFDLEVBQ3hCLElBQUksRUFBRSw0QkFBNEIsQ0FBQyxJQUFJLENBQUMsRUFDeEMsSUFBSSxFQUFDLFFBQVEsRUFDYixLQUFLLEVBQUMsRUFBRSxHQUNSOzRCQUVILGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxhQUFhLEVBQUUsRUFBRSxDQUNwQyxvQkFBQyxJQUFJLElBQ0gsT0FBTyxFQUFFLElBQUksQ0FBQyxvQkFBb0IsS0FBSyxFQUFDLEtBQUssRUFBRSxnQkFBZ0IsRUFBQyxFQUNoRSxHQUFHLEVBQUUsYUFBYSxDQUFDLEdBQUcsSUFBSSxpQkFBaUIsYUFBYSxDQUFDLEtBQUssRUFBRSxFQUNoRSxLQUFLLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxlQUFlLEVBQUUsRUFBQyxXQUFXLEVBQUUsQ0FBQyxFQUFDLENBQUM7Z0NBRXhELGFBQWEsQ0FBQyxJQUFJLElBQUksT0FBTztvQ0FDNUIsb0JBQUMsSUFBSSxJQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLG9CQUFvQixFQUFFLElBQUksQ0FBQyx1QkFBdUIsS0FBSyxFQUFDLFVBQVUsRUFBRSxNQUFNLEVBQUMsQ0FBQzt3Q0FDdkcsb0JBQUMsSUFBSSxJQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLHdCQUF3QixDQUFDLElBQ25ELGFBQWEsQ0FBQyxJQUFJLENBQ2QsQ0FDRjtnQ0FFUixhQUFhLENBQUMsSUFBSSxJQUFJLE9BQU87b0NBQzVCO3dDQUNHLFFBQVEsQ0FBQyxFQUFFLElBQUksS0FBSyxJQUFJLDRCQUE0QixDQUFDLElBQUksQ0FBQzs0Q0FDekQsK0JBQ0UsRUFBRSxFQUFFLGNBQWMsQ0FBQyxJQUFJLENBQUMsRUFDeEIsSUFBSSxFQUFFLDRCQUE0QixDQUFDLElBQUksQ0FBQyxFQUN4QyxJQUFJLEVBQUMsUUFBUSxFQUNiLEtBQUssRUFBRSxJQUFJLENBQUMsYUFBYSxFQUFFLE9BQU8sQ0FBQyxHQUNuQzt3Q0FFSCxJQUFJLENBQUMsYUFBYSxDQUFDLGFBQWEsRUFBRSxTQUFTLENBQUMsQ0FDNUMsQ0FFQSxDQUNSLENBQ0EsQ0FFQTtnQkFDUCxvQkFBQyxJQUFJLElBQ0gsT0FBTyxFQUFFLElBQUksQ0FBQyx1QkFBdUIsS0FBSyxFQUFDLEtBQUssRUFBRSxtQkFBbUIsRUFBQyxFQUN0RSxLQUFLLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxrQkFBa0IsRUFBRSxJQUFJLENBQUMscUJBQXFCLEtBQUs7d0JBQ3hFLFVBQVUsRUFBRSxRQUFRO3dCQUNwQixjQUFjLEVBQUUsUUFBUTt3QkFDeEIsTUFBTSxFQUFFLE1BQU07d0JBQ2QsVUFBVSxFQUFFLE1BQU07d0JBQ2xCLFdBQVcsRUFBRSxDQUFDO3FCQUNmLENBQUM7b0JBRUYsb0JBQUMsZUFBZSxJQUFDLElBQUksRUFBRSxNQUFNLENBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsY0FBYyxFQUFFLEtBQUssRUFBRSxJQUFJLENBQUMsVUFBVSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsWUFBWSxLQUFLLEVBQUMsUUFBUSxFQUFFLEVBQUUsRUFBQyxDQUFDLEdBQUksQ0FDckksQ0FDRztZQUNaLG9CQUFDLElBQUksSUFDSCxPQUFPLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixLQUFLLEVBQUMsS0FBSyxFQUFFLGVBQWUsRUFBQyxFQUM3RCxRQUFRLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxtQkFBbUIsRUFDckMsR0FBRyxFQUFFLGNBQWMsR0FDbkI7WUFDRCxNQUFNLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxhQUFhO2dCQUM3QixvQkFBQyxNQUFNLFFBQ0osSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQ2pCO1lBRVYsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxhQUFhO2dCQUM5QixvQkFBQyxJQUFJLFFBQ0YsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQ25CLENBRUosQ0FDUixDQUFBO0lBQ0gsQ0FBQztJQUVELGFBQWE7UUFDWCxNQUFNLEVBQUMsU0FBUyxFQUFFLFlBQVksRUFBRSxhQUFhLEVBQUUsd0JBQXdCLEVBQUUsS0FBSyxFQUFDLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQTtRQUU1RixJQUFJLHdCQUF3QjtZQUFFLE9BQU8sd0JBQXdCLENBQUE7UUFDN0QsSUFBSSxZQUFZO1lBQUUsT0FBTyxZQUFZLENBQUE7UUFDckMsSUFBSSxhQUFhO1lBQUUsT0FBTyxhQUFhLENBQUE7UUFFdkMsSUFBSSxTQUFTLElBQUksS0FBSyxFQUFFLENBQUM7WUFDdkIsSUFBSSxDQUFDLENBQUMsU0FBUyxJQUFJLEtBQUssQ0FBQztnQkFBRSxNQUFNLElBQUksS0FBSyxDQUFDLHdCQUF3QixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUMsSUFBSSxLQUFLLFNBQVMsRUFBRSxDQUFDLENBQUE7WUFFL0csT0FBTyxLQUFLLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQTtRQUMzQixDQUFDO0lBQ0gsQ0FBQztJQUVELFFBQVE7UUFDTixJQUFJLElBQUksQ0FBQyxFQUFFLENBQUMsY0FBYyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ25DLE9BQU8sSUFBSSxDQUFBO1FBQ2IsQ0FBQztRQUVELE9BQU8sS0FBSyxDQUFBO0lBQ2QsQ0FBQztJQUVELEtBQUssQ0FBQyxvQ0FBb0M7UUFDeEMsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFBO1FBRTFDLElBQUksQ0FBQyxhQUFhO1lBQUUsT0FBTTtRQUUxQixNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDO1lBQ3RDLFdBQVcsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLFVBQVU7WUFDOUIsTUFBTSxFQUFFLGFBQWE7U0FDdEIsQ0FBQyxDQUFBO1FBRUYsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFDLGNBQWMsRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUMsQ0FBQyxDQUFBO0lBQzNFLENBQUM7SUFFRCxXQUFXLEdBQUcsS0FBSyxJQUFJLEVBQUU7UUFDdkIsTUFBTSxFQUFDLE9BQU8sRUFBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUE7UUFDeEIsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxVQUFVLENBQUE7UUFFckMsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDM0IsT0FBTyxJQUFJLENBQUMsb0JBQW9CLENBQUMsT0FBTyxFQUFFLFdBQVcsQ0FBQyxDQUFBO1FBQ3hELENBQUM7UUFFRCxNQUFNLGFBQWEsR0FBRyxNQUFNLE9BQU8sQ0FBQyxFQUFDLFdBQVcsRUFBQyxDQUFDLENBQUE7UUFFbEQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFDLGFBQWEsRUFBQyxDQUFDLENBQUE7SUFDaEMsQ0FBQyxDQUFBO0lBRUQsZ0JBQWdCLENBQUMsRUFBQyxHQUFHLEVBQUUsWUFBWSxFQUFDO1FBQ2xDLElBQUksWUFBWSxDQUFDLElBQUksSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUNqQyxPQUFPLG9CQUFDLFdBQVcsSUFBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxZQUFZLEdBQUksQ0FBQTtRQUN4RCxDQUFDO1FBRUQsT0FBTyxDQUNMLG9CQUFDLE1BQU0sSUFDTCxtQkFBbUIsRUFBRSxJQUFJLENBQUMsc0JBQXNCLEVBQUUsRUFDbEQsSUFBSSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLEVBQ3RDLEdBQUcsRUFBRSxHQUFHLEVBQ1IsTUFBTSxFQUFFLFlBQVksRUFDcEIsZUFBZSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsZUFBZSxFQUN4QyxhQUFhLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxhQUFhLEdBQ3BDLENBQ0gsQ0FBQTtJQUNILENBQUM7SUFFRCxvQkFBb0IsQ0FBQyxPQUFPLEVBQUUsV0FBVztRQUN2QyxNQUFNLGdCQUFnQixHQUFHLFdBQVcsRUFBRSxXQUFXLEVBQUUsQ0FBQTtRQUNuRCxNQUFNLGFBQWEsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBQyxJQUFJLEVBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxnQkFBZ0IsSUFBSSxJQUFJLEVBQUUsV0FBVyxFQUFFLEVBQUUsUUFBUSxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQTtRQUV0SCxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUMsYUFBYSxFQUFDLENBQUMsQ0FBQTtJQUNoQyxDQUFDO0lBRUQsa0JBQWtCLEdBQUcsQ0FBQyxFQUFDLE1BQU0sRUFBQyxFQUFFLEVBQUU7UUFDaEMsSUFBSSxDQUFDLFdBQVcsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFBO1FBQy9CLElBQUksQ0FBQyxZQUFZLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQTtJQUNuQyxDQUFDLENBQUE7SUFFRCx1QkFBdUIsR0FBRyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFDLHFCQUFxQixFQUFFLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFDLEVBQUUsYUFBYSxFQUFFLFFBQVEsQ0FBQyxDQUFDLEVBQUMsQ0FBQyxDQUFBO0lBQzVILG1CQUFtQixHQUFHLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUMsaUJBQWlCLEVBQUUsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUMsRUFBRSxhQUFhLEVBQUUsUUFBUSxDQUFDLENBQUMsRUFBQyxDQUFDLENBQUE7SUFDcEgsd0JBQXdCLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBQyxzQkFBc0IsRUFBRSxNQUFNLENBQUMsTUFBTSxDQUFDLEVBQUUsRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFLGFBQWEsRUFBRSxRQUFRLENBQUMsQ0FBQyxFQUFDLENBQUMsQ0FBQTtJQUU5SCxlQUFlLEdBQUcsQ0FBQyxDQUFDLEVBQUUsRUFBRTtRQUN0QixDQUFDLENBQUMsY0FBYyxFQUFFLENBQUE7UUFDbEIsQ0FBQyxDQUFDLGVBQWUsRUFBRSxDQUFBO1FBRW5CLE1BQU0sRUFBQyxNQUFNLEVBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFBO1FBRXZCLElBQUksTUFBTSxFQUFFLENBQUM7WUFDWCxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUE7UUFDckIsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUE7UUFDcEIsQ0FBQztJQUNILENBQUMsQ0FBQTtJQUVELGlDQUFpQyxHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLFdBQVcsRUFBRSxHQUFHLENBQUMsQ0FBQTtJQUV0RSxZQUFZO1FBQ1YsSUFBSSxDQUFDLFFBQVEsQ0FBQztZQUNaLE1BQU0sRUFBRSxJQUFJO1lBQ1osYUFBYSxFQUFFLFNBQVM7WUFDeEIsTUFBTSxFQUFFLEtBQUs7WUFDYixzQkFBc0IsRUFBRSxJQUFJO1NBQzdCLENBQUMsQ0FBQTtRQUVGLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUMvQixJQUFJLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxFQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsaUJBQWlCLEVBQUUsRUFBQyxDQUFDLENBQUE7UUFDakUsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNO1lBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQTtJQUNwQyxDQUFDO0lBRUQsa0JBQWtCLEdBQUcsQ0FBQyxVQUFVLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBQyxVQUFVLEVBQUMsQ0FBQyxDQUFBO0lBRWhFLFdBQVc7UUFDVCxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQTtRQUM5QixJQUFJLENBQUMsV0FBVyxFQUFFLENBQUE7UUFDbEIsSUFBSSxDQUFDLHVDQUF1QyxHQUFHLElBQUksQ0FBQTtRQUNuRCxJQUFJLENBQUMsUUFBUSxDQUNYO1lBQ0UsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMscUJBQXFCLENBQUMsTUFBTTtZQUMzQyxNQUFNLEVBQUUsSUFBSTtZQUNaLFVBQVUsRUFBRSxRQUFRLENBQUMsRUFBRSxJQUFJLEtBQUssQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUk7WUFDN0UsU0FBUyxFQUFFLFFBQVEsQ0FBQyxFQUFFLElBQUksS0FBSyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsSUFBSTtZQUMzRSxVQUFVLEVBQUUsRUFBRTtTQUNmLEVBQ0QsR0FBRyxFQUFFO1lBQ0gsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUFBO1FBQ3ZCLENBQUMsQ0FDRixDQUFBO1FBRUQsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU87WUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFBO0lBQ3RDLENBQUM7SUFFRCxjQUFjLEdBQUcsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsa0JBQWtCLEVBQUUsU0FBUyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUE7SUFFM0Usa0JBQWtCO1FBQ2hCLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQztZQUNyQixPQUFNLENBQUMscUNBQXFDO1FBQzlDLENBQUM7UUFFRCxJQUFJLENBQUMsdUNBQXVDLEdBQUcsSUFBSSxDQUFBO1FBQ25ELElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFBO0lBQ2hDLENBQUM7SUFFRCxzQ0FBc0M7UUFDcEMsTUFBTSxFQUFDLFlBQVksRUFBQyxHQUFHLElBQUksQ0FBQyxFQUFFLENBQUE7UUFDOUIsTUFBTSxFQUFDLHNCQUFzQixFQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQTtRQUN2QyxNQUFNLFVBQVUsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLGlCQUFpQixDQUFDLEdBQUcsQ0FBQTtRQUMvQyxNQUFNLDBCQUEwQixHQUFHLHNCQUFzQixDQUFDLE1BQU0sR0FBRyxVQUFVLENBQUE7UUFDN0UsTUFBTSxzQkFBc0IsR0FBRyxZQUFZLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUE7UUFFOUQsSUFBSSxzQkFBc0IsR0FBRywwQkFBMEIsRUFBRSxDQUFDO1lBQ3hELElBQUksQ0FBQyx1QkFBdUIsRUFBRSxDQUFBO1FBQ2hDLENBQUM7YUFBTSxDQUFDO1lBQ04sSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFDLGlCQUFpQixFQUFFLFNBQVMsRUFBQyxDQUFDLENBQUE7UUFDL0MsQ0FBQztJQUNILENBQUM7SUFFRCx1QkFBdUI7UUFDckIsTUFBTSxFQUFDLGlCQUFpQixFQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQTtRQUVsQyxJQUFJLENBQUMsUUFBUSxDQUNYO1lBQ0UsTUFBTSxFQUFFLElBQUk7WUFDWixnQkFBZ0IsRUFBRSxPQUFPO1lBQ3pCLGlCQUFpQixFQUFFLFNBQVM7WUFDNUIsWUFBWSxFQUFFLGlCQUFpQixDQUFDLEtBQUs7U0FDdEMsRUFDRCxHQUFHLEVBQUUsQ0FBQyxJQUFJLENBQUMsY0FBYyxFQUFFLENBQzVCLENBQUE7SUFDSCxDQUFDO0lBRUQsdUJBQXVCO1FBQ3JCLElBQUksQ0FBQyxRQUFRLENBQ1g7WUFDRSxNQUFNLEVBQUUsSUFBSTtZQUNaLGdCQUFnQixFQUFFLE9BQU87WUFDekIsaUJBQWlCLEVBQUUsUUFBUTtZQUMzQixZQUFZLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLO1NBQzdDLEVBQ0QsR0FBRyxFQUFFLENBQUMsSUFBSSxDQUFDLGNBQWMsRUFBRSxDQUM1QixDQUFBO0lBQ0gsQ0FBQztJQUVELGlCQUFpQixHQUFHLEdBQUcsRUFBRTtRQUN2QixJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDbEIsSUFBSSxDQUFDLGtCQUFrQixFQUFFLENBQUE7UUFDM0IsQ0FBQztJQUNILENBQUMsQ0FBQTtJQUVELDBCQUEwQixHQUFHLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLGlCQUFpQixFQUFFLEVBQUUsQ0FBQyxDQUFBO0lBRXBFLGtCQUFrQixHQUFHLEdBQUcsRUFBRTtRQUN4QixJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDbEIsSUFBSSxDQUFDLFFBQVEsQ0FBQztnQkFDWixVQUFVLEVBQUUsUUFBUSxDQUFDLEVBQUUsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxJQUFJO2dCQUM3RSxTQUFTLEVBQUUsUUFBUSxDQUFDLEVBQUUsSUFBSSxLQUFLLENBQUMsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJO2FBQzVFLENBQUMsQ0FBQTtZQUNGLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFBO1FBQzNCLENBQUM7SUFDSCxDQUFDLENBQUE7SUFFRCwyQkFBMkIsR0FBRyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxrQkFBa0IsRUFBRSxFQUFFLENBQUMsQ0FBQTtJQUV0RSxxQkFBcUIsR0FBRyxHQUFHLEVBQUU7UUFDM0IsMkVBQTJFO1FBQzNFLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNsQixJQUFJLENBQUMsWUFBWSxFQUFFLENBQUE7UUFDckIsQ0FBQztJQUNILENBQUMsQ0FBQTtJQUVELGdCQUFnQjtRQUNkLE1BQU0sRUFBQyxxQkFBcUIsRUFBRSxhQUFhLEVBQUUsaUJBQWlCLEVBQUUsc0JBQXNCLEVBQUUsZ0JBQWdCLEVBQUUsaUJBQWlCLEVBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFBO1FBQ3JJLElBQUksSUFBSSxFQUFFLEdBQUcsQ0FBQTtRQUViLElBQUksS0FBSyxHQUFHO1lBQ1YsUUFBUSxFQUFFLFVBQVU7WUFDcEIsTUFBTSxFQUFFLEtBQUs7WUFDYixTQUFTLEVBQUUsS0FBSztZQUNoQixVQUFVLEVBQUUsaUJBQWlCO1lBQzdCLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLFlBQVksSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLFlBQVk7WUFDakQsZUFBZSxFQUFFLE1BQU07WUFDdkIsTUFBTSxFQUFFLGdCQUFnQjtZQUN4QixTQUFTLEVBQUUsR0FBRztZQUNkLFNBQVMsRUFBRSxNQUFNO1NBQ2xCLENBQUE7UUFFRCxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxhQUFhLEVBQUUsQ0FBQztZQUMxQixLQUFLLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQTtZQUNiLEtBQUssQ0FBQyxJQUFJLEdBQUcsQ0FBQyxDQUFBO1FBQ2hCLENBQUM7YUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxlQUFlLEVBQUUsQ0FBQztZQUNuQyxLQUFLLENBQUMsSUFBSSxHQUFHLENBQUMsQ0FBQTtZQUNkLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFBO1FBQ2xCLENBQUM7YUFBTSxJQUFJLGdCQUFnQixJQUFJLE9BQU8sRUFBRSxDQUFDO1lBQ3ZDLElBQUksUUFBUSxDQUFDLEVBQUUsSUFBSSxLQUFLLEVBQUUsQ0FBQztnQkFDekIsK0VBQStFO2dCQUMvRSxHQUFHLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsRUFBRSxFQUFFLEtBQUssQ0FBQyxHQUFHLFFBQVEsQ0FBQyxlQUFlLENBQUMsU0FBUyxHQUFHLENBQUMsQ0FBQTtnQkFFbEgsMERBQTBEO2dCQUMxRCxJQUFJLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsRUFBRSxFQUFFLE1BQU0sQ0FBQyxHQUFHLFFBQVEsQ0FBQyxlQUFlLENBQUMsVUFBVSxDQUFBO1lBQ25ILENBQUM7aUJBQU0sQ0FBQztnQkFDTixJQUFJLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLENBQUE7Z0JBQ3BDLEdBQUcsR0FBRyxxQkFBcUIsQ0FBQyxHQUFHLENBQUE7WUFDakMsQ0FBQztZQUVELEtBQUssQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFBO1lBQ2pCLEtBQUssQ0FBQyxHQUFHLEdBQUcsR0FBRyxHQUFHLENBQUMsQ0FBQTtRQUNyQixDQUFDO2FBQU0sSUFBSSxnQkFBZ0IsSUFBSSxPQUFPLEVBQUUsQ0FBQztZQUN2QyxJQUFJLFFBQVEsQ0FBQyxFQUFFLElBQUksS0FBSyxFQUFFLENBQUM7Z0JBQ3pCLCtFQUErRTtnQkFDL0UsR0FBRyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLGtCQUFrQixDQUFDLE9BQU8sQ0FBQyxxQkFBcUIsRUFBRSxFQUFFLEtBQUssQ0FBQyxHQUFHLFFBQVEsQ0FBQyxlQUFlLENBQUMsU0FBUyxDQUFBO2dCQUVsSCwwREFBMEQ7Z0JBQzFELElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMscUJBQXFCLEVBQUUsRUFBRSxNQUFNLENBQUMsR0FBRyxRQUFRLENBQUMsZUFBZSxDQUFDLFVBQVUsQ0FBQTtZQUN2SCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sSUFBSSxHQUFHLGlCQUFpQixDQUFDLElBQUksQ0FBQTtnQkFDN0IsR0FBRyxHQUFHLHFCQUFxQixDQUFDLEdBQUcsQ0FBQTtZQUNqQyxDQUFDO1lBRUQsS0FBSyxDQUFDLElBQUksR0FBRyxJQUFJLENBQUE7WUFDakIsS0FBSyxDQUFDLEdBQUcsR0FBRyxHQUFHLEdBQUcsc0JBQXNCLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQTtRQUNyRCxDQUFDO2FBQU0sQ0FBQztZQUNOLE1BQU0sSUFBSSxLQUFLLENBQUMsOEJBQThCLGdCQUFnQixFQUFFLENBQUMsQ0FBQTtRQUNuRSxDQUFDO1FBRUQsS0FBSyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsa0JBQWtCLEVBQUUsS0FBSyxFQUFFLENBQUMsSUFBSSxFQUFFLEdBQUcsRUFBRSxLQUFLLENBQUMsVUFBVSxFQUFFLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFBO1FBRTlGLE1BQU0sRUFBRSxHQUFHLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUUvQixPQUFPLENBQ0wsb0JBQUMsSUFBSSxJQUNILE9BQU8sRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLHlCQUF5QixFQUFFLEVBQUMsS0FBSyxFQUFFLG1CQUFtQixFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUN0RyxRQUFRLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyx3QkFBd0IsRUFDMUMsR0FBRyxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsbUJBQW1CLEVBQ2hDLEtBQUssRUFBRSxLQUFLO1lBRVgsYUFBYSxFQUFFLEdBQUcsQ0FBQyxDQUFDLFlBQVksRUFBRSxFQUFFLENBQ25DLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQztnQkFDcEIsR0FBRyxFQUFFLFlBQVksQ0FBQyxHQUFHLElBQUksaUJBQWlCLFlBQVksQ0FBQyxLQUFLLEVBQUU7Z0JBQzlELFlBQVk7YUFDYixDQUFDLENBQ0g7WUFDQSxhQUFhLEVBQUUsTUFBTSxLQUFLLENBQUM7Z0JBQzFCLG9CQUFDLElBQUksSUFBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLHlCQUF5QixLQUFLLEVBQUMsS0FBSyxFQUFFLHNCQUFzQixFQUFDO29CQUMvRSxvQkFBQyxJQUFJLFFBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsbUJBQW1CLENBQUMsQ0FBUSxDQUM3RixDQUVKLENBQ1IsQ0FBQTtJQUNILENBQUM7SUFFRCxlQUFlLEdBQUcsQ0FBQyxLQUFLLEVBQUUsWUFBWSxFQUFFLEVBQUU7UUFDeEMsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFBO1FBQ3RCLEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQTtRQUV2QixNQUFNLEVBQUMsUUFBUSxFQUFFLGFBQWEsRUFBQyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUE7UUFDNUMsTUFBTSxFQUFDLFFBQVEsRUFBQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUE7UUFDekIsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLGlCQUFpQixFQUFFLENBQUE7UUFDL0MsTUFBTSxPQUFPLEdBQUcsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFBO1FBQ2pDLE1BQU0sUUFBUSxHQUFHLEVBQUUsQ0FBQTtRQUNuQixNQUFNLGNBQWMsR0FBRyxjQUFjLENBQUMsSUFBSSxDQUFDLENBQUMsYUFBYSxFQUFFLEVBQUUsQ0FBQyxhQUFhLENBQUMsS0FBSyxJQUFJLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUN4RyxNQUFNLFVBQVUsR0FBRyxFQUFDLEdBQUcsT0FBTyxFQUFDLENBQUE7UUFDL0IsSUFBSSxpQkFBaUIsQ0FBQTtRQUVyQixJQUFJLGNBQWMsRUFBRSxDQUFDO1lBQ25CLElBQUksYUFBYSxFQUFFLENBQUM7Z0JBQ2xCLE1BQU0sYUFBYSxHQUFHLE9BQU8sQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUE7Z0JBQ2pELE1BQU0sWUFBWSxHQUFHLGFBQWEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLElBQUksYUFBYSxDQUFDLENBQUE7Z0JBRXpGLElBQUksWUFBWSxJQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDO29CQUMvQyw4Q0FBOEM7b0JBQzlDLE9BQU8sVUFBVSxDQUFDLFlBQVksQ0FBQyxLQUFLLENBQUMsQ0FBQTtvQkFFckMsaUJBQWlCLEdBQUcsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLGFBQWEsRUFBRSxFQUFFLENBQUMsYUFBYSxDQUFDLEtBQUssSUFBSSxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUE7Z0JBQ3pHLENBQUM7cUJBQU0sQ0FBQztvQkFDTix1Q0FBdUM7b0JBQ3ZDLFVBQVUsQ0FBQyxZQUFZLENBQUMsS0FBSyxDQUFDLEdBQUcsSUFBSSxDQUFDLGFBQWEsRUFBRSxZQUFZLEdBQUcsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFBO2dCQUNqRixDQUFDO2dCQUVELFFBQVEsQ0FBQyxPQUFPLEdBQUcsVUFBVSxDQUFBO1lBQy9CLENBQUM7aUJBQU0sQ0FBQztnQkFDTiw4QkFBOEI7Z0JBQzlCLGlCQUFpQixHQUFHLGNBQWMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxhQUFhLEVBQUUsRUFBRSxDQUFDLGFBQWEsQ0FBQyxLQUFLLElBQUksWUFBWSxDQUFDLEtBQUssQ0FBQyxDQUFBO1lBQ3pHLENBQUM7UUFDSCxDQUFDO2FBQU0sQ0FBQztZQUNOLHNEQUFzRDtZQUN0RCxJQUFJLFlBQVksQ0FBQyxRQUFRO2dCQUFFLE9BQU07WUFFakMsSUFBSSxhQUFhLEVBQUUsQ0FBQztnQkFDbEIsbUJBQW1CO2dCQUNuQixVQUFVLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxHQUFHLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUE7Z0JBQ3ZELFFBQVEsQ0FBQyxPQUFPLEdBQUcsVUFBVSxDQUFBO1lBQy9CLENBQUM7WUFFRCxJQUFJLFFBQVEsSUFBSSxhQUFhLEVBQUUsQ0FBQztnQkFDOUIsaUJBQWlCLEdBQUcsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUE7WUFDM0QsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLGlCQUFpQixHQUFHLENBQUMsWUFBWSxDQUFDLENBQUE7WUFDcEMsQ0FBQztRQUNILENBQUM7UUFFRCxJQUFJLFFBQVEsSUFBSSxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQzlELDZGQUE2RjtRQUMvRixDQUFDO2FBQU0sSUFBSSxpQkFBaUIsRUFBRSxDQUFDO1lBQzdCLFFBQVEsQ0FBQyxjQUFjLEdBQUcsaUJBQWlCLENBQUE7UUFDN0MsQ0FBQztRQUVELE1BQU0sT0FBTyxHQUFHLGlCQUFpQixJQUFJLGNBQWMsQ0FBQTtRQUVuRCxJQUFJLFFBQVEsRUFBRSxDQUFDO1lBQ2IsUUFBUSxDQUFDO2dCQUNQLEtBQUs7Z0JBQ0wsT0FBTztnQkFDUCxPQUFPLEVBQUUsVUFBVTthQUNwQixDQUFDLENBQUE7UUFDSixDQUFDO1FBRUQsSUFBSSxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQzdCLElBQUksV0FBVyxDQUFBO1lBRWYsSUFBSSxRQUFRLEVBQUUsQ0FBQztnQkFDYixXQUFXLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFBO1lBQ3JELENBQUM7aUJBQU0sQ0FBQztnQkFDTixXQUFXLEdBQUcsR0FBRyxDQUFDLE9BQU8sRUFBRSxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUE7WUFDeEMsQ0FBQztZQUVELElBQUksQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxDQUFBO1FBQ25DLENBQUM7UUFFRCxJQUFJLENBQUMsUUFBUTtZQUFFLElBQUksQ0FBQyxZQUFZLEVBQUUsQ0FBQTtRQUNsQyxJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFBO0lBQ3pCLENBQUMsQ0FBQTtJQUVELFVBQVUsQ0FBQyxXQUFXLEVBQUUsS0FBSyxHQUFHLEVBQUUsRUFBRSxNQUFNLEdBQUcsRUFBRTtRQUM3QyxJQUFJLGFBQWEsR0FBRyxHQUFHLENBQUMsSUFBSSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsV0FBVyxDQUFDLENBQUE7UUFFN0QsSUFBSSxPQUFPLGFBQWEsSUFBSSxVQUFVO1lBQUUsYUFBYSxHQUFHLGFBQWEsQ0FBQyxFQUFDLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFLEtBQUssRUFBQyxDQUFDLENBQUE7UUFFakcsSUFBSSxhQUFhLEVBQUUsQ0FBQztZQUNsQixPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLGFBQWEsQ0FBQyxDQUFBO1FBQzVDLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsY0FBYyxXQUFXLEVBQUUsRUFBRSxLQUFLLEVBQUUsTUFBTSxDQUFDLENBQUE7SUFDL0QsQ0FBQztJQUVELGFBQWEsQ0FBQyxNQUFNO1FBQ2xCLE1BQU0sRUFBQyxhQUFhLEVBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQTtRQUN4QyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUE7UUFFakMsSUFBSSxhQUFhLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxJQUFJLE9BQU8sQ0FBQyxFQUFFLENBQUM7WUFDL0MsTUFBTSxZQUFZLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQTtZQUMxQyxNQUFNLGFBQWEsR0FBRyxhQUFhLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxJQUFJLFlBQVksQ0FBQyxDQUFBO1lBRXBGLElBQUksQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQkFDbkIsTUFBTSxJQUFJLEtBQUssQ0FBQyw0Q0FBNEMsWUFBWSxFQUFFLENBQUMsQ0FBQTtZQUM3RSxDQUFDO1lBRUQsT0FBTyxhQUFhLENBQUMsSUFBSSxDQUFBO1FBQzNCLENBQUM7SUFDSCxDQUFDO0lBRUQsYUFBYSxHQUFHLENBQUMsTUFBTSxFQUFFLElBQUksRUFBRSxFQUFFO1FBQy9CLE1BQU0sRUFBQyxhQUFhLEVBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQTtRQUN4QyxNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsVUFBVSxFQUFFLENBQUE7UUFDakMsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUN2QyxNQUFNLFdBQVcsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFBO1FBQ3pDLE1BQU0sWUFBWSxHQUFHLGFBQWEsRUFBRSxJQUFJLENBQUMsQ0FBQyxhQUFhLEVBQUUsRUFBRSxDQUFDLGFBQWEsQ0FBQyxLQUFLLElBQUksV0FBVyxDQUFDLENBQUE7UUFDL0YsSUFBSSxLQUFLLENBQUE7UUFFVCxJQUFJLElBQUksSUFBSSxTQUFTLEVBQUUsQ0FBQztZQUN0QixLQUFLLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQywrQkFBK0IsRUFBRSxFQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBQyxDQUFDLENBQUE7UUFDM0YsQ0FBQzthQUFNLENBQUM7WUFDTixLQUFLLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyx3QkFBd0IsRUFBRSxFQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBQyxDQUFDLENBQUE7UUFDcEYsQ0FBQztRQUVELE9BQU8sQ0FDTCxvQkFBQyxJQUFJLElBQ0gsT0FBTyxFQUFFO2dCQUNQLEtBQUssRUFBRSxxQkFBcUI7Z0JBQzVCLElBQUksRUFBRSxNQUFNLENBQUMsSUFBSTtnQkFDakIsVUFBVSxFQUFFLFlBQVksRUFBRSxJQUFJO2dCQUM5QixXQUFXLEVBQUUsWUFBWSxFQUFFLEtBQUs7Z0JBQ2hDLEtBQUssRUFBRSxNQUFNLENBQUMsS0FBSzthQUNwQixFQUNELEtBQUssRUFBRSxJQUFJLENBQUMsdUJBQXVCLEtBQUssRUFBQyxhQUFhLEVBQUUsS0FBSyxFQUFDO1lBRTdELGFBQWEsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssSUFBSSxPQUFPLENBQUM7Z0JBQzFDLG9CQUFDLElBQUksSUFDSCxPQUFPLEVBQUUsSUFBSSxDQUFDLDRCQUE0QixLQUFLLEVBQUMsS0FBSyxFQUFFLHlCQUF5QixFQUFDLEVBQ2pGLEtBQUssRUFBRSxJQUFJLENBQUMsMEJBQTBCLEtBQUssRUFBQyxLQUFLLEVBQUUsRUFBRSxFQUFDLEdBQ3REO1lBRUgsYUFBYSxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssSUFBSSxPQUFPLENBQUM7Z0JBQ3pDLG9CQUFDLElBQUksSUFBQyxLQUFLLEVBQUUsSUFBSSxDQUFDLHdCQUF3QixLQUFLLEVBQUMsVUFBVSxFQUFFLFFBQVEsRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxFQUFFLEVBQUM7b0JBQ3hHLG9CQUFDLGVBQWUsSUFDZCxPQUFPLEVBQUUsSUFBSSxDQUFDLGlCQUFpQixLQUFLLEVBQUMsS0FBSyxFQUFFLGFBQWEsRUFBQyxFQUMxRCxJQUFJLEVBQUUsSUFBSSxHQUNWLENBQ0c7WUFFUixDQUFDLEdBQUcsRUFBRTtnQkFDTCxJQUFJLElBQUksSUFBSSxTQUFTLElBQUksTUFBTSxDQUFDLGNBQWMsRUFBRSxDQUFDO29CQUMvQyxPQUFPLE1BQU0sQ0FBQyxjQUFjLEVBQUUsQ0FBQTtnQkFDaEMsQ0FBQztxQkFBTSxJQUFJLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQztvQkFDMUIsT0FBTyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUE7Z0JBQ3pCLENBQUM7cUJBQU0sSUFBSSxNQUFNLElBQUksTUFBTSxJQUFJLFFBQVEsQ0FBQyxFQUFFLElBQUksS0FBSyxFQUFFLENBQUM7b0JBQ3BELE9BQU8sb0JBQUMsVUFBVSxJQUFDLE1BQU0sRUFBRSxFQUFDLElBQUksRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxFQUFDLEdBQUksQ0FBQTtnQkFDN0QsQ0FBQztxQkFBTSxJQUFJLE1BQU0sSUFBSSxNQUFNLElBQUksUUFBUSxDQUFDLEVBQUUsSUFBSSxLQUFLLEVBQUUsQ0FBQztvQkFDcEQsT0FBTyw2QkFBSyx1QkFBdUIsRUFBRSxFQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxFQUFDLEdBQUksQ0FBQTtnQkFDekUsQ0FBQztxQkFBTSxDQUFDO29CQUNOLE9BQU8sQ0FDTCxvQkFBQyxJQUFJLElBQ0gsT0FBTyxFQUFFLElBQUksQ0FBQyw2QkFBNkIsS0FBSyxFQUFDLEtBQUssRUFBRSwwQkFBMEIsRUFBQyxFQUNuRixLQUFLLEVBQUUsS0FBSyxJQUVYLE1BQU0sQ0FBQyxJQUFJLENBQ1AsQ0FDUixDQUFBO2dCQUNILENBQUM7WUFDSCxDQUFDLENBQUMsRUFBRSxDQUNDLENBQ1IsQ0FBQTtJQUNILENBQUMsQ0FBQTtJQUVELEtBQUssQ0FBQyx5QkFBeUI7UUFDN0IsTUFBTSxFQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFBO1FBQ2hDLE1BQU0sY0FBYyxHQUFHLE1BQU0sT0FBTyxDQUFDLEVBQUMsTUFBTSxFQUFDLENBQUMsQ0FBQTtRQUM5QyxNQUFNLGFBQWEsR0FBRyxjQUFjLEVBQUUsR0FBRyxDQUFDLENBQUMsYUFBYSxFQUFFLEVBQUUsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUE7UUFDakYsTUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLENBQUMsQ0FBQyxjQUFjLEVBQUUsR0FBRyxDQUFDLENBQUMsYUFBYSxFQUFFLEVBQUUsQ0FBQyxhQUFhLENBQUMsS0FBSyxDQUFDLENBQUE7UUFFdEYsSUFBSSxpQkFBaUIsQ0FBQyxhQUFhLEVBQUUsV0FBVyxDQUFDLEVBQUUsQ0FBQztZQUNsRCxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUMsY0FBYyxFQUFDLENBQUMsQ0FBQTtRQUNqQyxDQUFDO0lBQ0gsQ0FBQztDQUNGLENBQUMsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHthbnl0aGluZ0RpZmZlcmVudH0gZnJvbSBcInNldC1zdGF0ZS1jb21wYXJlL2J1aWxkL2RpZmYtdXRpbHNcIlxuaW1wb3J0IGNvbmZpZyBmcm9tIFwiLi4vY29uZmlnLmpzXCJcbmltcG9ydCB7ZGlnLCBkaWdnfSBmcm9tIFwiZGlnZ2VyaXplXCJcbmltcG9ydCB7RGltZW5zaW9ucywgUGxhdGZvcm0sIFByZXNzYWJsZSwgVGV4dCwgVGV4dElucHV0LCBWaWV3fSBmcm9tIFwicmVhY3QtbmF0aXZlXCJcbmltcG9ydCBSZWFjdCwge21lbW8sIHVzZUVmZmVjdCwgdXNlUmVmfSBmcm9tIFwicmVhY3RcIlxuaW1wb3J0IHtzaGFwZUNvbXBvbmVudCwgU2hhcGVDb21wb25lbnR9IGZyb20gXCJzZXQtc3RhdGUtY29tcGFyZS9idWlsZC9zaGFwZS1jb21wb25lbnQuanNcIlxuaW1wb3J0IGRlYm91bmNlIGZyb20gXCJkZWJvdW5jZVwiXG5pbXBvcnQgRm9udEF3ZXNvbWVJY29uIGZyb20gXCJyZWFjdC1uYXRpdmUtdmVjdG9yLWljb25zL0ZvbnRBd2Vzb21lXCJcbmltcG9ydCBpZEZvckNvbXBvbmVudCBmcm9tIFwiQGthc3Blcm5qL2FwaS1tYWtlci9idWlsZC9pbnB1dHMvaWQtZm9yLWNvbXBvbmVudFwiXG5pbXBvcnQgbmFtZUZvckNvbXBvbmVudCBmcm9tIFwiQGthc3Blcm5qL2FwaS1tYWtlci9idWlsZC9pbnB1dHMvbmFtZS1mb3ItY29tcG9uZW50XCJcbmltcG9ydCBPcHRpb24gZnJvbSBcIi4vb3B0aW9uXCJcbmltcG9ydCBPcHRpb25Hcm91cCBmcm9tIFwiLi9vcHRpb24tZ3JvdXBcIlxuaW1wb3J0IFByb3BUeXBlcyBmcm9tIFwicHJvcC10eXBlc1wiXG5pbXBvcnQgcHJvcFR5cGVzRXhhY3QgZnJvbSBcInByb3AtdHlwZXMtZXhhY3RcIlxuaW1wb3J0IFJlbmRlckh0bWwgZnJvbSBcInJlYWN0LW5hdGl2ZS1yZW5kZXItaHRtbFwiXG5pbXBvcnQge1BvcnRhbH0gZnJvbSBcImNvbmpvaW50bWVudFwiXG5pbXBvcnQgdXNlRXZlbnRMaXN0ZW5lciBmcm9tIFwiQGthc3Blcm5qL2FwaS1tYWtlci9idWlsZC91c2UtZXZlbnQtbGlzdGVuZXJcIlxuaW1wb3J0IHVzZVByZXNzT3V0c2lkZSBmcm9tIFwib3V0c2lkZS1leWUvYnVpbGQvdXNlLXByZXNzLW91dHNpZGVcIlxuXG4vKiogQHJldHVybnMge3N0cmluZ30gKi9cbmNvbnN0IG5hbWVGb3JDb21wb25lbnRXaXRoTXVsdGlwbGUgPSAoY29tcG9uZW50KSA9PiB7XG4gIGxldCBuYW1lID0gbmFtZUZvckNvbXBvbmVudChjb21wb25lbnQpXG5cbiAgY29uc3QgY3VycmVudE9wdGlvbnMgPSBjb21wb25lbnQuZ2V0Q3VycmVudE9wdGlvbnMoKVxuXG4gIGlmIChjb21wb25lbnQucHJvcHMubXVsdGlwbGUgJiYgbmFtZSAmJiBjdXJyZW50T3B0aW9ucy5sZW5ndGggPiAwKSB7XG4gICAgbmFtZSArPSBcIltdXCJcbiAgfVxuXG4gIHJldHVybiBuYW1lXG59XG5cbmV4cG9ydCBkZWZhdWx0IG1lbW8oc2hhcGVDb21wb25lbnQoY2xhc3MgSGF5YVNlbGVjdCBleHRlbmRzIFNoYXBlQ29tcG9uZW50IHtcbiAgc3RhdGljIGRlZmF1bHRQcm9wcyA9IHtcbiAgICBtdWx0aXBsZTogZmFsc2UsXG4gICAgbm9PcHRpb25zVGV4dDogbnVsbCxcbiAgICBvbkJsdXI6IG51bGwsXG4gICAgb25Gb2N1czogbnVsbCxcbiAgICBvcHRpb25zQWJzb2x1dGU6IHRydWUsXG4gICAgb3B0aW9uc1BvcnRhbDogdHJ1ZSxcbiAgICBvcHRpb25zV2lkdGg6IG51bGwsXG4gICAgc2VhcmNoOiBmYWxzZSxcbiAgICB0cmFuc3BhcmVudDogZmFsc2VcbiAgfVxuXG4gIHN0YXRpYyBwcm9wVHlwZXMgPSBwcm9wVHlwZXNFeGFjdCh7XG4gICAgYXR0cmlidXRlOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIGNsYXNzTmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBkZWZhdWx0VG9nZ2xlZDogUHJvcFR5cGVzLm9iamVjdCxcbiAgICBkZWZhdWx0VmFsdWU6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5udW1iZXIsIFByb3BUeXBlcy5zdHJpbmddKSxcbiAgICBkZWZhdWx0VmFsdWVzOiBQcm9wVHlwZXMuYXJyYXksXG4gICAgZGVmYXVsdFZhbHVlc0Zyb21PcHRpb25zOiBQcm9wVHlwZXMuYXJyYXksXG4gICAgaWQ6IFByb3BUeXBlcy5ub2RlLFxuICAgIG1vZGVsOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgIG11bHRpcGxlOiBQcm9wVHlwZXMuYm9vbC5pc1JlcXVpcmVkLFxuICAgIG5hbWU6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgbm9PcHRpb25zVGV4dDogUHJvcFR5cGVzLmZ1bmMsXG4gICAgb25CbHVyOiBQcm9wVHlwZXMuZnVuYyxcbiAgICBvbkNoYW5nZTogUHJvcFR5cGVzLmZ1bmMsXG4gICAgb25DaGFuZ2VWYWx1ZTogUHJvcFR5cGVzLmZ1bmMsXG4gICAgb25Gb2N1czogUHJvcFR5cGVzLmZ1bmMsXG4gICAgb25PcHRpb25zQ2xvc2VkOiBQcm9wVHlwZXMuZnVuYyxcbiAgICBvcHRpb25zOiBQcm9wVHlwZXMub25lT2ZUeXBlKFtQcm9wVHlwZXMuYXJyYXksIFByb3BUeXBlcy5mdW5jXSkuaXNSZXF1aXJlZCxcbiAgICBvcHRpb25zQWJzb2x1dGU6IFByb3BUeXBlcy5ib29sLmlzUmVxdWlyZWQsXG4gICAgb3B0aW9uc1BvcnRhbDogUHJvcFR5cGVzLmJvb2wuaXNSZXF1aXJlZCxcbiAgICBvcHRpb25zV2lkdGg6IFByb3BUeXBlcy5udW1iZXIsXG4gICAgcGxhY2Vob2xkZXI6IFByb3BUeXBlcy5ub2RlLFxuICAgIHNlYXJjaDogUHJvcFR5cGVzLmJvb2wuaXNSZXF1aXJlZCxcbiAgICBzdHlsZXM6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgdG9nZ2xlZDogUHJvcFR5cGVzLm9iamVjdCxcbiAgICB0b2dnbGVPcHRpb25zOiBQcm9wVHlwZXMuYXJyYXlPZihQcm9wVHlwZXMuc2hhcGUoe1xuICAgICAgaWNvbjogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAgICAgbGFiZWw6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZCxcbiAgICAgIHZhbHVlOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWRcbiAgICB9KSksXG4gICAgdHJhbnNwYXJlbnQ6IFByb3BUeXBlcy5ib29sLmlzUmVxdWlyZWQsXG4gICAgdmFsdWVzOiBQcm9wVHlwZXMuYXJyYXlcbiAgfSlcblxuICBjYWxsT3B0aW9uc1Bvc2l0aW9uQWJvdmVJZk91dHNpZGVTY3JlZW4gPSBmYWxzZVxuICB3aW5kb3dXaWR0aCA9IERpbWVuc2lvbnMuZ2V0KFwid2luZG93XCIpLndpZHRoXG4gIHdpbmRvd0hlaWdodCA9IERpbWVuc2lvbnMuZ2V0KFwid2luZG93XCIpLmhlaWdodFxuXG4gIHNldHVwKCkge1xuICAgIGNvbnN0IHt0fSA9IGNvbmZpZy5nZXRVc2VUcmFuc2xhdGUoKSgpXG5cbiAgICBpZiAodGhpcy5wcm9wcy52YWx1ZXMpIHtcbiAgICAgIGZvciAoY29uc3QgdmFsdWUgb2YgdGhpcy5wcm9wcy52YWx1ZXMpIHtcbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiSGF5YVNlbGVjdDogVW5kZWZpbmVkIGdpdmVuIGFzIHZhbHVlXCIpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLnNldEluc3RhbmNlKHtcbiAgICAgIGVuZE9mU2VsZWN0UmVmOiB1c2VSZWYoKSxcbiAgICAgIG9wdGlvbnNDb250YWluZXJSZWY6IHVzZVJlZigpLFxuICAgICAgc2VhcmNoVGV4dElucHV0UmVmOiB1c2VSZWYoKSxcbiAgICAgIHNlbGVjdENvbnRhaW5lclJlZjogdXNlUmVmKCksXG4gICAgICB0XG4gICAgfSlcbiAgICB0aGlzLnVzZVN0YXRlcyh7XG4gICAgICBjdXJyZW50T3B0aW9uczogKCkgPT4gdGhpcy5kZWZhdWx0Q3VycmVudE9wdGlvbnMoKSxcbiAgICAgIHNlbGVjdENvbnRhaW5lckxheW91dDogbnVsbCxcbiAgICAgIGVuZE9mU2VsZWN0TGF5b3V0OiBudWxsLFxuICAgICAgaGVpZ2h0OiBudWxsLFxuICAgICAgbG9hZGVkT3B0aW9uczogKCkgPT4gdGhpcy5kZWZhdWx0TG9hZGVkT3B0aW9ucygpLFxuICAgICAgb3BlbmVkOiBmYWxzZSxcbiAgICAgIG9wdGlvbnNDb250YWluZXJMYXlvdXQ6IG51bGwsXG4gICAgICBvcHRpb25zUGxhY2VtZW50OiB1bmRlZmluZWQsXG4gICAgICBvcHRpb25zVG9wOiB1bmRlZmluZWQsXG4gICAgICBvcHRpb25zVmlzaWJpbGl0eTogdW5kZWZpbmVkLFxuICAgICAgb3B0aW9uc1dpZHRoOiB1bmRlZmluZWQsXG4gICAgICBzY3JvbGxMZWZ0OiBQbGF0Zm9ybS5PUyA9PSBcIndlYlwiID8gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbExlZnQgOiBudWxsLFxuICAgICAgc2Nyb2xsVG9wOiBQbGF0Zm9ybS5PUyA9PSBcIndlYlwiID8gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRvcCA6IG51bGwsXG4gICAgICBzZWFyY2hUZXh0OiBcIlwiLFxuICAgICAgdG9nZ2xlZDogKCkgPT4gdGhpcy5kZWZhdWx0VG9nZ2xlZCgpXG4gICAgfSlcblxuICAgIHVzZUV2ZW50TGlzdGVuZXIoRGltZW5zaW9ucywgXCJjaGFuZ2VcIiwgdGhpcy50dC5vbkRpbWVuc2lvbnNDaGFuZ2UpXG4gICAgdXNlUHJlc3NPdXRzaWRlKHRoaXMudHQub3B0aW9uc0NvbnRhaW5lclJlZiwgdGhpcy50dC5vblByZXNzT3V0c2lkZU9wdGlvbnMpXG5cbiAgICBpZiAoUGxhdGZvcm0uT1MgPT0gXCJ3ZWJcIikge1xuICAgICAgdXNlRXZlbnRMaXN0ZW5lcih3aW5kb3csIFwicmVzaXplXCIsIHRoaXMudHQub25Bbnl0aGluZ1Jlc2l6ZWREZWJvdW5jZWQpXG4gICAgICB1c2VFdmVudExpc3RlbmVyKHdpbmRvdywgXCJzY3JvbGxcIiwgdGhpcy50dC5vbkFueXRoaW5nU2Nyb2xsZWREZWJvdW5jZWQpXG4gICAgfVxuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIGlmICh0aGlzLnR0LmNhbGxPcHRpb25zUG9zaXRpb25BYm92ZUlmT3V0c2lkZVNjcmVlbiAmJiB0aGlzLnMub3B0aW9uc0NvbnRhaW5lckxheW91dCkge1xuICAgICAgICB0aGlzLmNhbGxPcHRpb25zUG9zaXRpb25BYm92ZUlmT3V0c2lkZVNjcmVlbiA9IGZhbHNlXG4gICAgICAgIHRoaXMuc2V0T3B0aW9uc1Bvc2l0aW9uQWJvdmVJZk91dHNpZGVTY3JlZW4oKVxuICAgICAgfVxuICAgIH0sIFt0aGlzLnR0LmNhbGxPcHRpb25zUG9zaXRpb25BYm92ZUlmT3V0c2lkZVNjcmVlbiwgdGhpcy5zLm9wdGlvbnNDb250YWluZXJMYXlvdXRdKVxuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIGNvbnN0IGN1cnJlbnRPcHRpb25JZHMgPSB0aGlzLnMuY3VycmVudE9wdGlvbnM/Lm1hcCgoY3VycmVudE9wdGlvbikgPT4gY3VycmVudE9wdGlvbi52YWx1ZSlcblxuICAgICAgaWYgKHRoaXMucHJvcHMudmFsdWVzICYmIGFueXRoaW5nRGlmZmVyZW50KGN1cnJlbnRPcHRpb25JZHMsIHRoaXMucHJvcHMudmFsdWVzKSAmJiB0eXBlb2YgdGhpcy5wcm9wcy5vcHRpb25zID09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICB0aGlzLnNldEN1cnJlbnRGcm9tR2l2ZW5WYWx1ZXMoKVxuICAgICAgfVxuICAgIH0sIFt0aGlzLnByb3BzLnZhbHVlc10pXG4gIH1cblxuICB0cmFuc2xhdGUobXNnSUQpIHtcbiAgICBpZiAobXNnSUQuc3RhcnRzV2l0aChcIi5cIikpIHtcbiAgICAgIHJldHVybiB0aGlzLnQoYGhheWFfc2VsZWN0JHttc2dJRH1gKVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy50KG1zZ0lEKVxuICAgIH1cbiAgfVxuXG4gIGRlZmF1bHRDdXJyZW50T3B0aW9ucygpIHtcbiAgICBjb25zdCB7ZGVmYXVsdFZhbHVlLCBkZWZhdWx0VmFsdWVzLCB2YWx1ZXN9ID0gdGhpcy5wcm9wc1xuICAgIGNvbnN0IHtvcHRpb25zfSA9IHRoaXMucFxuXG4gICAgaWYgKCFBcnJheS5pc0FycmF5KG9wdGlvbnMpKSByZXR1cm4gW11cblxuICAgIHJldHVybiBvcHRpb25zLmZpbHRlcigoe3ZhbHVlfSkgPT5cbiAgICAgIChkZWZhdWx0VmFsdWUgJiYgdmFsdWUgPT0gZGVmYXVsdFZhbHVlKSB8fFxuICAgICAgICAoZGVmYXVsdFZhbHVlcyAmJiBkZWZhdWx0VmFsdWVzLmluY2x1ZGVzKHZhbHVlKSkgfHxcbiAgICAgICAgKHZhbHVlcyAmJiB2YWx1ZXMuaW5jbHVkZXModmFsdWUpKVxuICAgIClcbiAgfVxuXG4gIGRlZmF1bHRMb2FkZWRPcHRpb25zKCkge1xuICAgIGNvbnN0IHtvcHRpb25zfSA9IHRoaXMucFxuXG4gICAgaWYgKHR5cGVvZiBvcHRpb25zID09IFwiZnVuY3Rpb25cIikge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShvcHRpb25zKSkge1xuICAgICAgcmV0dXJuIG9wdGlvbnNcbiAgICB9XG5cbiAgICB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gdHlwZSBvZiBvcHRpb25zOiAke3R5cGVvZiBvcHRpb25zfWApXG4gIH1cblxuICBkZWZhdWx0VG9nZ2xlZCA9ICgpID0+IChcInRvZ2dsZWRcIiBpbiB0aGlzLnByb3BzKSA/IHRoaXMucC50b2dnbGVkIDogdGhpcy5wcm9wcy5kZWZhdWx0VG9nZ2xlZCB8fCB7fVxuICBnZXRUb2dnbGVkID0gKCkgPT4gKFwidG9nZ2xlZFwiIGluIHRoaXMucHJvcHMpID8gdGhpcy5wLnRvZ2dsZWQgOiB0aGlzLnMudG9nZ2xlZFxuICBnZXRWYWx1ZXMgPSAoKSA9PiAoXCJ2YWx1ZXNcIiBpbiB0aGlzLnByb3BzKSA/IHRoaXMucC52YWx1ZXMgOiB0aGlzLnMuY3VycmVudE9wdGlvbnMubWFwKChjdXJyZW50T3B0aW9uKSA9PiBjdXJyZW50T3B0aW9uLnZhbHVlKVxuICBnZXRDdXJyZW50T3B0aW9ucyA9ICgpID0+IHtcbiAgICBpZiAoXCJ2YWx1ZXNcIiBpbiB0aGlzLnByb3BzICYmIHR5cGVvZiB0aGlzLnByb3BzLnZhbHVlcyAhPSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLnByb3BzLm9wdGlvbnMpICYmIHRoaXMucHJvcHMudmFsdWVzKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnAudmFsdWVzLm1hcCgodmFsdWUpID0+IHRoaXMucC5vcHRpb25zLmZpbmQoKG9wdGlvbikgPT4gb3B0aW9uLnZhbHVlID09IHZhbHVlKSlcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5zLmxvYWRlZE9wdGlvbnMgJiYgdGhpcy5wcm9wcy52YWx1ZXMpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucC52YWx1ZXMubWFwKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgIGxldCBmb3VuZE9wdGlvbiA9IHRoaXMucy5sb2FkZWRPcHRpb25zLmZpbmQoKG9wdGlvbikgPT4gb3B0aW9uLnZhbHVlID09IHZhbHVlKVxuXG4gICAgICAgICAgaWYgKCFmb3VuZE9wdGlvbikge1xuICAgICAgICAgICAgZm91bmRPcHRpb24gPSB0aGlzLnMuY3VycmVudE9wdGlvbnMuZmluZCgob3B0aW9uKSA9PiBvcHRpb24udmFsdWUgPT0gdmFsdWUpXG5cbiAgICAgICAgICAgIGlmICghZm91bmRPcHRpb24pIHtcbiAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgICAgICBgQ291bGRuJ3QgZmluZCBvcHRpb246ICR7dmFsdWV9IGluIGxvYWRlZE9wdGlvbnMgb3Igc3RhdGUgY3VycmVudE9wdGlvbnNgLFxuICAgICAgICAgICAgICAgIHtzdGF0ZUxvYWRlZE9wdGlvbnM6IHRoaXMucy5sb2FkZWRPcHRpb25zLCBzdGF0ZUN1cnJlbnRPcHRpb25zOiB0aGlzLnMuY3VycmVudE9wdGlvbnMsIHByb3BzT3B0aW9uczogdGhpcy5wcm9wcy5vcHRpb25zfVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIGZvdW5kT3B0aW9uXG4gICAgICAgIH0pXG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiB0aGlzLnByb3BzLm9wdGlvbnMgPT0gXCJmdW5jdGlvblwiICYmIHRoaXMucHJvcHMudmFsdWVzKSB7XG4gICAgICAgIC8vIE9wdGlvbnMgaGF2ZW4ndCBiZWVuIGxvYWRlZCB5ZXQuXG4gICAgICB9IGVsc2UgaWYgKHRoaXMucHJvcHMudmFsdWVzKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnAudmFsdWVzLm1hcCgodmFsdWUpID0+ICh7dmFsdWV9KSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zLmN1cnJlbnRPcHRpb25zXG4gIH1cblxuICBnZXRDdXJyZW50T3B0aW9uVmFsdWVzKCkge1xuICAgIGlmIChcInZhbHVlc1wiIGluIHRoaXMucHJvcHMpIHtcbiAgICAgIHJldHVybiB0aGlzLnAudmFsdWVzXG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuZ2V0Q3VycmVudE9wdGlvbnMoKS5tYXAoKG9wdGlvbikgPT4gb3B0aW9uLnZhbHVlKVxuICB9XG5cbiAgY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgY29uc3Qge2F0dHJpYnV0ZSwgZGVmYXVsdFZhbHVlLCBkZWZhdWx0VmFsdWVzLCBkZWZhdWx0VmFsdWVzRnJvbU9wdGlvbnMsIG1vZGVsLCBvcHRpb25zfSA9IHRoaXMucHJvcHNcblxuICAgIGlmICgoKGRlZmF1bHRWYWx1ZSB8fCBkZWZhdWx0VmFsdWVzIHx8IGRlZmF1bHRWYWx1ZXNGcm9tT3B0aW9ucykgfHwgKGF0dHJpYnV0ZSAmJiBtb2RlbCkpICYmIHR5cGVvZiBvcHRpb25zID09IFwiZnVuY3Rpb25cIikge1xuICAgICAgdGhpcy5sb2FkRGVmYXVsdFZhbHVlc0Zyb21PcHRpb25zQ2FsbGJhY2soKVxuICAgIH1cbiAgfVxuXG4gIGNvbXBvbmVudERpZFVwZGF0ZSgpIHtcbiAgICBjb25zdCBuZXdTdGF0ZSA9IHt9XG5cbiAgICBpZiAoXCJ0b2dnbGVkXCIgaW4gdGhpcy5wcm9wcykge1xuICAgICAgY29uc3QgbmV3VG9nZ2xlZCA9IHRoaXMucC50b2dnbGVkXG5cbiAgICAgIGlmIChhbnl0aGluZ0RpZmZlcmVudCh0aGlzLnN0YXRlLnRvZ2dsZWQsIG5ld1RvZ2dsZWQpKSB7XG4gICAgICAgIG5ld1N0YXRlLnRvZ2dsZWQgPSBuZXdUb2dnbGVkXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKE9iamVjdC5rZXlzKG5ld1N0YXRlKS5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnNldFN0YXRlKG5ld1N0YXRlKVxuICAgIH1cbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCB7ZW5kT2ZTZWxlY3RSZWZ9ID0gdGhpcy50dFxuICAgIGNvbnN0IHt0cmFuc3BhcmVudH0gPSB0aGlzLnBcbiAgICBjb25zdCB7Y2xhc3NOYW1lLCBwbGFjZWhvbGRlciwgdG9nZ2xlT3B0aW9uc30gPSB0aGlzLnByb3BzXG4gICAgY29uc3Qge29wZW5lZCwgb3B0aW9uc1BsYWNlbWVudH0gPSB0aGlzLnNcbiAgICBjb25zdCBjdXJyZW50T3B0aW9ucyA9IHRoaXMuZ2V0Q3VycmVudE9wdGlvbnMoKVxuICAgIGNvbnN0IGlkID0gaWRGb3JDb21wb25lbnQodGhpcylcblxuICAgIGNvbnN0IHNlbGVjdENvbnRhaW5lclN0eWxlQWN0dWFsID0gdGhpcy5zdHlsaW5nRm9yKFwic2VsZWN0Q29udGFpbmVyXCIsIHtcbiAgICAgIGZsZXhEaXJlY3Rpb246IFwicm93XCIsXG4gICAgICBhbGlnbkl0ZW1zOiBcImNlbnRlclwiLFxuICAgICAgYmFja2dyb3VuZENvbG9yOiB0cmFuc3BhcmVudCA/IHVuZGVmaW5lZCA6IFwiI2ZmZlwiLFxuICAgICAgYm9yZGVyOiB0cmFuc3BhcmVudCA/IHVuZGVmaW5lZCA6IFwiMXB4IHNvbGlkICM5OTlcIixcbiAgICAgIGJvcmRlclJhZGl1czogdHJhbnNwYXJlbnQgPyB1bmRlZmluZWQgOiA0LFxuICAgICAgY29sb3I6IFwiIzAwMFwiLFxuICAgICAgY3Vyc29yOiBcInBvaW50ZXJcIixcbiAgICAgIHBhZGRpbmdUb3A6IDUsXG4gICAgICBwYWRkaW5nQm90dG9tOiA1LFxuICAgICAgcGFkZGluZ0xlZnQ6IDVcbiAgICB9LCBbdHJhbnNwYXJlbnRdKVxuXG4gICAgaWYgKG9wZW5lZCkge1xuICAgICAgLy8gUHJldmVudCBzZWxlY3QgZnJvbSBjaGFuZ2luZyBzaXplIG9uY2UgdGhlIGNvbnRlbnQgaXMgcmVwbGFjZWQgd2l0aCBzZWFyY2ggdGV4dCBvbmNlIG9wZW5lZFxuICAgICAgc2VsZWN0Q29udGFpbmVyU3R5bGVBY3R1YWwuaGVpZ2h0ID0gdGhpcy5zLmhlaWdodFxuXG4gICAgICBpZiAob3B0aW9uc1BsYWNlbWVudCA9PSBcImFib3ZlXCIpIHtcbiAgICAgICAgc2VsZWN0Q29udGFpbmVyU3R5bGVBY3R1YWwuYm9yZGVyVG9wTGVmdFJhZGl1cyA9IDBcbiAgICAgICAgc2VsZWN0Q29udGFpbmVyU3R5bGVBY3R1YWwuYm9yZGVyVG9wUmlnaHRSYWRpdXMgPSAwXG4gICAgICAgIHNlbGVjdENvbnRhaW5lclN0eWxlQWN0dWFsLmJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzID0gc2VsZWN0Q29udGFpbmVyU3R5bGVBY3R1YWwuYm9yZGVyUmFkaXVzXG4gICAgICAgIHNlbGVjdENvbnRhaW5lclN0eWxlQWN0dWFsLmJvcmRlckJvdHRvbUxlZnRSYWRpdXMgPSBzZWxlY3RDb250YWluZXJTdHlsZUFjdHVhbC5ib3JkZXJSYWRpdXNcblxuICAgICAgICBkZWxldGUgc2VsZWN0Q29udGFpbmVyU3R5bGVBY3R1YWwuYm9yZGVyUmFkaXVzXG4gICAgICB9IGVsc2UgaWYgKG9wdGlvbnNQbGFjZW1lbnQgPT0gXCJiZWxvd1wiKSB7XG4gICAgICAgIHNlbGVjdENvbnRhaW5lclN0eWxlQWN0dWFsLmJvcmRlclRvcExlZnRSYWRpdXMgPSBzZWxlY3RDb250YWluZXJTdHlsZUFjdHVhbC5ib3JkZXJSYWRpdXNcbiAgICAgICAgc2VsZWN0Q29udGFpbmVyU3R5bGVBY3R1YWwuYm9yZGVyVG9wUmlnaHRSYWRpdXMgPSBzZWxlY3RDb250YWluZXJTdHlsZUFjdHVhbC5ib3JkZXJSYWRpdXNcbiAgICAgICAgc2VsZWN0Q29udGFpbmVyU3R5bGVBY3R1YWwuYm9yZGVyQm90dG9tUmlnaHRSYWRpdXMgPSAwXG4gICAgICAgIHNlbGVjdENvbnRhaW5lclN0eWxlQWN0dWFsLmJvcmRlckJvdHRvbUxlZnRSYWRpdXMgPSAwXG5cbiAgICAgICAgZGVsZXRlIHNlbGVjdENvbnRhaW5lclN0eWxlQWN0dWFsLmJvcmRlclJhZGl1c1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiAoXG4gICAgICA8Vmlld1xuICAgICAgICBkYXRhU2V0PXt0aGlzLmNhY2hlKFwicm9vdFZpZXdEYXRhU2V0XCIsIHtcbiAgICAgICAgICBjbGFzczogY2xhc3NOYW1lLFxuICAgICAgICAgIGNvbXBvbmVudDogXCJoYXlhLXNlbGVjdFwiLFxuICAgICAgICAgIGlkLFxuICAgICAgICAgIG9wZW5lZCxcbiAgICAgICAgICBvcHRpb25zUGxhY2VtZW50LFxuICAgICAgICAgIHRvZ2dsZXM6IEJvb2xlYW4odG9nZ2xlT3B0aW9ucylcbiAgICAgICAgfSwgW2NsYXNzTmFtZSwgaWQsIG9wZW5lZCwgb3B0aW9uc1BsYWNlbWVudCwgQm9vbGVhbih0b2dnbGVPcHRpb25zKV0pfVxuICAgICAgICBzdHlsZT17dGhpcy5zdHlsaW5nRm9yKFwibWFpblwiKX1cbiAgICAgID5cbiAgICAgICAgPFByZXNzYWJsZVxuICAgICAgICAgIGRhdGFTZXQ9e3RoaXMuc2VsZWN0Q29udGFpbmVyRGF0YVNldCB8fD0ge2NsYXNzOiBcInNlbGVjdC1jb250YWluZXJcIn19XG4gICAgICAgICAgb25MYXlvdXQ9e3RoaXMudHQub25TZWxlY3RDb250YWluZXJMYXlvdXR9XG4gICAgICAgICAgb25QcmVzcz17dGhpcy50dC5vblNlbGVjdENsaWNrZWR9XG4gICAgICAgICAgcmVmPXt0aGlzLnR0LnNlbGVjdENvbnRhaW5lclJlZn1cbiAgICAgICAgICBzdHlsZT17c2VsZWN0Q29udGFpbmVyU3R5bGVBY3R1YWx9XG4gICAgICAgID5cbiAgICAgICAgICA8Vmlld1xuICAgICAgICAgICAgZGF0YVNldD17dGhpcy5jdXJyZW50U2VsZWN0ZWREYXRhU2V0IHx8PSB7Y2xhc3M6IFwiY3VycmVudC1zZWxlY3RlZFwifX1cbiAgICAgICAgICAgIHN0eWxlPXt0aGlzLnN0eWxpbmdGb3IoXCJjdXJyZW50U2VsZWN0ZWRcIiwgdGhpcy5jdXJyZW50U2VsZWN0ZWRTdHlsZSB8fD0ge3dpZHRoOiBcImNhbGMoMTAwJSAtIDI1cHgpXCIsIGZsZXhXcmFwOiBcIndyYXBcIiwgb3ZlcmZsb3c6IFwiaGlkZGVuXCJ9KX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7b3BlbmVkICYmXG4gICAgICAgICAgICAgIDxUZXh0SW5wdXRcbiAgICAgICAgICAgICAgICBkYXRhU2V0PXt0aGlzLnNlYXJjaFRleHRJbnB1dERhdGFTZXQgfHw9IHtjbGFzczogXCJzZWFyY2gtdGV4dC1pbnB1dFwifX1cbiAgICAgICAgICAgICAgICBvbkNoYW5nZT17dGhpcy50dC5vblNlYXJjaFRleHRJbnB1dENoYW5nZWREZWJvdW5jZWR9XG4gICAgICAgICAgICAgICAgb25DaGFuZ2VUZXh0PXt0aGlzLnR0Lm9uQ2hhbmdlU2VhcmNoVGV4dH1cbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj17dGhpcy50cmFuc2xhdGUoXCIuc2VhcmNoX2RvdF9kb3RfZG90XCIpfVxuICAgICAgICAgICAgICAgIHJlZj17dGhpcy50dC5zZWFyY2hUZXh0SW5wdXRSZWZ9XG4gICAgICAgICAgICAgICAgc3R5bGU9e3RoaXMuc3R5bGluZ0ZvcihcInNlYXJjaFRleHRJbnB1dFwiLCB0aGlzLnNlYXJjaFRleHRJbnB1dFN0eWxlIHx8PSB7XG4gICAgICAgICAgICAgICAgICB3aWR0aDogXCIxMDAlXCIsXG4gICAgICAgICAgICAgICAgICBib3JkZXI6IDAsXG4gICAgICAgICAgICAgICAgICBvdXRsaW5lOiBcIm5vbmVcIixcbiAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDBcbiAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICB2YWx1ZT17dGhpcy5zdGF0ZS5zZWFyY2hUZXh0fVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgeyFvcGVuZWQgJiZcbiAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICB7Y3VycmVudE9wdGlvbnMubGVuZ3RoID09IDAgJiZcbiAgICAgICAgICAgICAgICAgIDxUZXh0IG51bWJlck9mTGluZXM9ezF9IHN0eWxlPXt0aGlzLnN0eWxpbmdGb3IoXCJub3RoaW5nU2VsZWN0ZWRcIiwgdGhpcy5ub3RoaW5nU2VsZWN0ZWRTdHlsZSB8fD0ge2NvbG9yOiBcImdyZXlcIn0pfT5cbiAgICAgICAgICAgICAgICAgICAge3BsYWNlaG9sZGVyIHx8IHRoaXMudHJhbnNsYXRlKFwiLm5vdGhpbmdfc2VsZWN0ZWRcIil9XG4gICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHtjdXJyZW50T3B0aW9ucy5sZW5ndGggPT0gMCAmJiBQbGF0Zm9ybS5PUyA9PSBcIndlYlwiICYmXG4gICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgaWQ9e2lkRm9yQ29tcG9uZW50KHRoaXMpfVxuICAgICAgICAgICAgICAgICAgICBuYW1lPXtuYW1lRm9yQ29tcG9uZW50V2l0aE11bHRpcGxlKHRoaXMpfVxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiaGlkZGVuXCJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU9XCJcIlxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAge2N1cnJlbnRPcHRpb25zLm1hcCgoY3VycmVudE9wdGlvbikgPT5cbiAgICAgICAgICAgICAgICAgIDxWaWV3XG4gICAgICAgICAgICAgICAgICAgIGRhdGFTZXQ9e3RoaXMuY3VycmVudE9wdGlvbkRhdGFTZXQgfHw9IHtjbGFzczogXCJjdXJyZW50LW9wdGlvblwifX1cbiAgICAgICAgICAgICAgICAgICAga2V5PXtjdXJyZW50T3B0aW9uLmtleSB8fCBgY3VycmVudC12YWx1ZS0ke2N1cnJlbnRPcHRpb24udmFsdWV9YH1cbiAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3RoaXMuc3R5bGluZ0ZvcihcImN1cnJlbnRPcHRpb25cIiwge21hcmdpblJpZ2h0OiA2fSl9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHtjdXJyZW50T3B0aW9uLnR5cGUgPT0gXCJncm91cFwiICYmXG4gICAgICAgICAgICAgICAgICAgICAgPFZpZXcgc3R5bGU9e3RoaXMuc3R5bGluZ0ZvcihcImN1cnJlbnRPcHRpb25Hcm91cFwiLCB0aGlzLmN1cnJlbnRPcHRpb25Hcm91cFN0eWxlIHx8PSB7Zm9udFdlaWdodDogXCJib2xkXCJ9KX0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8VGV4dCBzdHlsZT17dGhpcy5zdHlsaW5nRm9yKFwiY3VycmVudE9wdGlvbkdyb3VwVGV4dFwiKX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHtjdXJyZW50T3B0aW9uLnRleHR9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgICAgICAgPC9WaWV3PlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHtjdXJyZW50T3B0aW9uLnR5cGUgIT0gXCJncm91cFwiICYmXG4gICAgICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtQbGF0Zm9ybS5PUyA9PSBcIndlYlwiICYmIG5hbWVGb3JDb21wb25lbnRXaXRoTXVsdGlwbGUodGhpcykgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9e2lkRm9yQ29tcG9uZW50KHRoaXMpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9e25hbWVGb3JDb21wb25lbnRXaXRoTXVsdGlwbGUodGhpcyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImhpZGRlblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2RpZ2coY3VycmVudE9wdGlvbiwgXCJ2YWx1ZVwiKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHt0aGlzLnByZXNlbnRPcHRpb24oY3VycmVudE9wdGlvbiwgXCJjdXJyZW50XCIpfVxuICAgICAgICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICA8L1ZpZXc+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9WaWV3PlxuICAgICAgICAgIDxWaWV3XG4gICAgICAgICAgICBkYXRhU2V0PXt0aGlzLmNoZXZyb25Db250YWluZXJEYXRhU2V0IHx8PSB7Y2xhc3M6IFwiY2hldnJvbi1jb250YWluZXJcIn19XG4gICAgICAgICAgICBzdHlsZT17dGhpcy5zdHlsaW5nRm9yKFwiY2hldnJvbkNvbnRhaW5lclwiLCB0aGlzLmNoZXZyb25Db250YWluZXJTdHlsZSB8fD0ge1xuICAgICAgICAgICAgICBhbGlnbkl0ZW1zOiBcImNlbnRlclwiLFxuICAgICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogXCJjZW50ZXJcIixcbiAgICAgICAgICAgICAgaGVpZ2h0OiBcIjEwMCVcIixcbiAgICAgICAgICAgICAgbWFyZ2luTGVmdDogXCJhdXRvXCIsXG4gICAgICAgICAgICAgIG1hcmdpblJpZ2h0OiA4XG4gICAgICAgICAgICB9KX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8Rm9udEF3ZXNvbWVJY29uIG5hbWU9e29wZW5lZCA/IFwiY2hldnJvbi11cFwiIDogXCJjaGV2cm9uLWRvd25cIn0gc3R5bGU9e3RoaXMuc3R5bGluZ0ZvcihcImNoZXZyb25cIiwgdGhpcy5jaGV2cm9uU3R5bGUgfHw9IHtmb250U2l6ZTogMTJ9KX0gLz5cbiAgICAgICAgICA8L1ZpZXc+XG4gICAgICAgIDwvUHJlc3NhYmxlPlxuICAgICAgICA8Vmlld1xuICAgICAgICAgIGRhdGFTZXQ9e3RoaXMuZW5kT2ZTZWxlY3REYXRhU2V0IHx8PSB7Y2xhc3M6IFwiZW5kLW9mLXNlbGVjdFwifX1cbiAgICAgICAgICBvbkxheW91dD17dGhpcy50dC5vbkVuZE9mU2VsZWN0TGF5b3V0fVxuICAgICAgICAgIHJlZj17ZW5kT2ZTZWxlY3RSZWZ9XG4gICAgICAgIC8+XG4gICAgICAgIHtvcGVuZWQgJiYgdGhpcy5wLm9wdGlvbnNQb3J0YWwgJiZcbiAgICAgICAgICA8UG9ydGFsPlxuICAgICAgICAgICAge3RoaXMub3B0aW9uc0NvbnRhaW5lcigpfVxuICAgICAgICAgIDwvUG9ydGFsPlxuICAgICAgICB9XG4gICAgICAgIHtvcGVuZWQgJiYgIXRoaXMucC5vcHRpb25zUG9ydGFsICYmXG4gICAgICAgICAgPFZpZXc+XG4gICAgICAgICAgICB7dGhpcy5vcHRpb25zQ29udGFpbmVyKCl9XG4gICAgICAgICAgPC9WaWV3PlxuICAgICAgICB9XG4gICAgICA8L1ZpZXc+XG4gICAgKVxuICB9XG5cbiAgZGVmYXVsdFZhbHVlcyAoKSB7XG4gICAgY29uc3Qge2F0dHJpYnV0ZSwgZGVmYXVsdFZhbHVlLCBkZWZhdWx0VmFsdWVzLCBkZWZhdWx0VmFsdWVzRnJvbU9wdGlvbnMsIG1vZGVsfSA9IHRoaXMucHJvcHNcblxuICAgIGlmIChkZWZhdWx0VmFsdWVzRnJvbU9wdGlvbnMpIHJldHVybiBkZWZhdWx0VmFsdWVzRnJvbU9wdGlvbnNcbiAgICBpZiAoZGVmYXVsdFZhbHVlKSByZXR1cm4gZGVmYXVsdFZhbHVlXG4gICAgaWYgKGRlZmF1bHRWYWx1ZXMpIHJldHVybiBkZWZhdWx0VmFsdWVzXG5cbiAgICBpZiAoYXR0cmlidXRlICYmIG1vZGVsKSB7XG4gICAgICBpZiAoIShhdHRyaWJ1dGUgaW4gbW9kZWwpKSB0aHJvdyBuZXcgRXJyb3IoYE5vIHN1Y2ggYXR0cmlidXRlIG9uICR7bW9kZWwubW9kZWxDbGFzc0RhdGEoKS5uYW1lfTogJHthdHRyaWJ1dGV9YClcblxuICAgICAgcmV0dXJuIG1vZGVsW2F0dHJpYnV0ZV0oKVxuICAgIH1cbiAgfVxuXG4gIGlzQWN0aXZlKCkge1xuICAgIGlmICh0aGlzLnR0LmVuZE9mU2VsZWN0UmVmLmN1cnJlbnQpIHtcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICBhc3luYyBsb2FkRGVmYXVsdFZhbHVlc0Zyb21PcHRpb25zQ2FsbGJhY2soKSB7XG4gICAgY29uc3QgZGVmYXVsdFZhbHVlcyA9IHRoaXMuZGVmYXVsdFZhbHVlcygpXG5cbiAgICBpZiAoIWRlZmF1bHRWYWx1ZXMpIHJldHVyblxuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5wcm9wcy5vcHRpb25zKHtcbiAgICAgIHNlYXJjaFZhbHVlOiB0aGlzLnMuc2VhcmNoVGV4dCxcbiAgICAgIHZhbHVlczogZGVmYXVsdFZhbHVlc1xuICAgIH0pXG5cbiAgICB0aGlzLnNldFN0YXRlKHtjdXJyZW50T3B0aW9uczogdGhpcy5zdGF0ZS5jdXJyZW50T3B0aW9ucy5jb25jYXQocmVzdWx0KX0pXG4gIH1cblxuICBsb2FkT3B0aW9ucyA9IGFzeW5jICgpID0+IHtcbiAgICBjb25zdCB7b3B0aW9uc30gPSB0aGlzLnBcbiAgICBjb25zdCBzZWFyY2hWYWx1ZSA9IHRoaXMucy5zZWFyY2hUZXh0XG5cbiAgICBpZiAoQXJyYXkuaXNBcnJheShvcHRpb25zKSkge1xuICAgICAgcmV0dXJuIHRoaXMubG9hZE9wdGlvbnNGcm9tQXJyYXkob3B0aW9ucywgc2VhcmNoVmFsdWUpXG4gICAgfVxuXG4gICAgY29uc3QgbG9hZGVkT3B0aW9ucyA9IGF3YWl0IG9wdGlvbnMoe3NlYXJjaFZhbHVlfSlcblxuICAgIHRoaXMuc2V0U3RhdGUoe2xvYWRlZE9wdGlvbnN9KVxuICB9XG5cbiAgaGF5YVNlbGVjdE9wdGlvbih7a2V5LCBsb2FkZWRPcHRpb259KSB7XG4gICAgaWYgKGxvYWRlZE9wdGlvbi50eXBlID09IFwiZ3JvdXBcIikge1xuICAgICAgcmV0dXJuIDxPcHRpb25Hcm91cCBrZXk9e2tleX0gb3B0aW9uPXtsb2FkZWRPcHRpb259IC8+XG4gICAgfVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxPcHRpb25cbiAgICAgICAgY3VycmVudE9wdGlvblZhbHVlcz17dGhpcy5nZXRDdXJyZW50T3B0aW9uVmFsdWVzKCl9XG4gICAgICAgIGljb249e3RoaXMuaWNvbkZvck9wdGlvbihsb2FkZWRPcHRpb24pfVxuICAgICAgICBrZXk9e2tleX1cbiAgICAgICAgb3B0aW9uPXtsb2FkZWRPcHRpb259XG4gICAgICAgIG9uT3B0aW9uQ2xpY2tlZD17dGhpcy50dC5vbk9wdGlvbkNsaWNrZWR9XG4gICAgICAgIHByZXNlbnRPcHRpb249e3RoaXMudHQucHJlc2VudE9wdGlvbn1cbiAgICAgIC8+XG4gICAgKVxuICB9XG5cbiAgbG9hZE9wdGlvbnNGcm9tQXJyYXkob3B0aW9ucywgc2VhcmNoVmFsdWUpIHtcbiAgICBjb25zdCBsb3dlclNlYXJjaFZhbHVlID0gc2VhcmNoVmFsdWU/LnRvTG93ZXJDYXNlKClcbiAgICBjb25zdCBsb2FkZWRPcHRpb25zID0gb3B0aW9ucy5maWx0ZXIoKHt0ZXh0fSkgPT4gIWxvd2VyU2VhcmNoVmFsdWUgfHwgdGV4dD8udG9Mb3dlckNhc2UoKT8uaW5jbHVkZXMobG93ZXJTZWFyY2hWYWx1ZSkpXG5cbiAgICB0aGlzLnNldFN0YXRlKHtsb2FkZWRPcHRpb25zfSlcbiAgfVxuXG4gIG9uRGltZW5zaW9uc0NoYW5nZSA9ICh7d2luZG93fSkgPT4ge1xuICAgIHRoaXMud2luZG93V2lkdGggPSB3aW5kb3cud2lkdGhcbiAgICB0aGlzLndpbmRvd0hlaWdodCA9IHdpbmRvdy5oZWlnaHRcbiAgfVxuXG4gIG9uU2VsZWN0Q29udGFpbmVyTGF5b3V0ID0gKGUpID0+IHRoaXMuc2V0U3RhdGUoe3NlbGVjdENvbnRhaW5lckxheW91dDogT2JqZWN0LmFzc2lnbih7fSwgZGlnZyhlLCBcIm5hdGl2ZUV2ZW50XCIsIFwibGF5b3V0XCIpKX0pXG4gIG9uRW5kT2ZTZWxlY3RMYXlvdXQgPSAoZSkgPT4gdGhpcy5zZXRTdGF0ZSh7ZW5kT2ZTZWxlY3RMYXlvdXQ6IE9iamVjdC5hc3NpZ24oe30sIGRpZ2coZSwgXCJuYXRpdmVFdmVudFwiLCBcImxheW91dFwiKSl9KVxuICBvbk9wdGlvbnNDb250YWluZXJMYXlvdXQgPSAoZSkgPT4gdGhpcy5zZXRTdGF0ZSh7b3B0aW9uc0NvbnRhaW5lckxheW91dDogT2JqZWN0LmFzc2lnbih7fSwgZGlnZyhlLCBcIm5hdGl2ZUV2ZW50XCIsIFwibGF5b3V0XCIpKX0pXG5cbiAgb25TZWxlY3RDbGlja2VkID0gKGUpID0+IHtcbiAgICBlLnByZXZlbnREZWZhdWx0KClcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpXG5cbiAgICBjb25zdCB7b3BlbmVkfSA9IHRoaXMuc1xuXG4gICAgaWYgKG9wZW5lZCkge1xuICAgICAgdGhpcy5jbG9zZU9wdGlvbnMoKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm9wZW5PcHRpb25zKClcbiAgICB9XG4gIH1cblxuICBvblNlYXJjaFRleHRJbnB1dENoYW5nZWREZWJvdW5jZWQgPSBkZWJvdW5jZSh0aGlzLnR0LmxvYWRPcHRpb25zLCAyMDApXG5cbiAgY2xvc2VPcHRpb25zKCkge1xuICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgaGVpZ2h0OiBudWxsLFxuICAgICAgbG9hZGVkT3B0aW9uczogdW5kZWZpbmVkLFxuICAgICAgb3BlbmVkOiBmYWxzZSxcbiAgICAgIG9wdGlvbnNDb250YWluZXJMYXlvdXQ6IG51bGxcbiAgICB9KVxuXG4gICAgaWYgKHRoaXMucHJvcHMub25PcHRpb25zQ2xvc2VkKSB7XG4gICAgICB0aGlzLnByb3BzLm9uT3B0aW9uc0Nsb3NlZCh7b3B0aW9uczogdGhpcy5nZXRDdXJyZW50T3B0aW9ucygpfSlcbiAgICB9XG5cbiAgICBpZiAodGhpcy5wLm9uQmx1cikgdGhpcy5wLm9uQmx1cigpXG4gIH1cblxuICBvbkNoYW5nZVNlYXJjaFRleHQgPSAoc2VhcmNoVGV4dCkgPT4gdGhpcy5zZXRTdGF0ZSh7c2VhcmNoVGV4dH0pXG5cbiAgb3Blbk9wdGlvbnMoKSB7XG4gICAgdGhpcy5zZXRPcHRpb25zUG9zaXRpb25CZWxvdygpXG4gICAgdGhpcy5sb2FkT3B0aW9ucygpXG4gICAgdGhpcy5jYWxsT3B0aW9uc1Bvc2l0aW9uQWJvdmVJZk91dHNpZGVTY3JlZW4gPSB0cnVlXG4gICAgdGhpcy5zZXRTdGF0ZShcbiAgICAgIHtcbiAgICAgICAgaGVpZ2h0OiB0aGlzLnMuc2VsZWN0Q29udGFpbmVyTGF5b3V0LmhlaWdodCxcbiAgICAgICAgb3BlbmVkOiB0cnVlLFxuICAgICAgICBzY3JvbGxMZWZ0OiBQbGF0Zm9ybS5PUyA9PSBcIndlYlwiID8gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbExlZnQgOiBudWxsLFxuICAgICAgICBzY3JvbGxUb3A6IFBsYXRmb3JtLk9TID09IFwid2ViXCIgPyBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG9wIDogbnVsbCxcbiAgICAgICAgc2VhcmNoVGV4dDogXCJcIlxuICAgICAgfSxcbiAgICAgICgpID0+IHtcbiAgICAgICAgdGhpcy5mb2N1c1RleHRJbnB1dCgpXG4gICAgICB9XG4gICAgKVxuXG4gICAgaWYgKHRoaXMucC5vbkZvY3VzKSB0aGlzLnAub25Gb2N1cygpXG4gIH1cblxuICBmb2N1c1RleHRJbnB1dCA9ICgpID0+IGRpZ2codGhpcy50dC5zZWFyY2hUZXh0SW5wdXRSZWYsIFwiY3VycmVudFwiKT8uZm9jdXMoKVxuXG4gIHNldE9wdGlvbnNQb3NpdGlvbigpIHtcbiAgICBpZiAoIXRoaXMuaXNBY3RpdmUoKSkge1xuICAgICAgcmV0dXJuIC8vIERlYm91bmNlIGFmdGVyIHVuLW1vdW50IGhhbmRlbGluZy5cbiAgICB9XG5cbiAgICB0aGlzLmNhbGxPcHRpb25zUG9zaXRpb25BYm92ZUlmT3V0c2lkZVNjcmVlbiA9IHRydWVcbiAgICB0aGlzLnNldE9wdGlvbnNQb3NpdGlvbkJlbG93KClcbiAgfVxuXG4gIHNldE9wdGlvbnNQb3NpdGlvbkFib3ZlSWZPdXRzaWRlU2NyZWVuKCkge1xuICAgIGNvbnN0IHt3aW5kb3dIZWlnaHR9ID0gdGhpcy50dFxuICAgIGNvbnN0IHtvcHRpb25zQ29udGFpbmVyTGF5b3V0fSA9IHRoaXMuc1xuICAgIGNvbnN0IG9wdGlvbnNUb3AgPSB0aGlzLnMuZW5kT2ZTZWxlY3RMYXlvdXQudG9wXG4gICAgY29uc3Qgb3B0aW9uc1RvdGFsQm90dG9tUG9zaXRpb24gPSBvcHRpb25zQ29udGFpbmVyTGF5b3V0LmhlaWdodCArIG9wdGlvbnNUb3BcbiAgICBjb25zdCB3aW5kb3dIZWlnaHRXaXRoU2Nyb2xsID0gd2luZG93SGVpZ2h0ICsgdGhpcy5zLnNjcm9sbFRvcFxuXG4gICAgaWYgKHdpbmRvd0hlaWdodFdpdGhTY3JvbGwgPCBvcHRpb25zVG90YWxCb3R0b21Qb3NpdGlvbikge1xuICAgICAgdGhpcy5zZXRPcHRpb25zUG9zaXRpb25BYm92ZSgpXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2V0U3RhdGUoe29wdGlvbnNWaXNpYmlsaXR5OiBcInZpc2libGVcIn0pXG4gICAgfVxuICB9XG5cbiAgc2V0T3B0aW9uc1Bvc2l0aW9uQWJvdmUoKSB7XG4gICAgY29uc3Qge2VuZE9mU2VsZWN0TGF5b3V0fSA9IHRoaXMuc1xuXG4gICAgdGhpcy5zZXRTdGF0ZShcbiAgICAgIHtcbiAgICAgICAgb3BlbmVkOiB0cnVlLFxuICAgICAgICBvcHRpb25zUGxhY2VtZW50OiBcImFib3ZlXCIsXG4gICAgICAgIG9wdGlvbnNWaXNpYmlsaXR5OiBcInZpc2libGVcIixcbiAgICAgICAgb3B0aW9uc1dpZHRoOiBlbmRPZlNlbGVjdExheW91dC53aWR0aFxuICAgICAgfSxcbiAgICAgICgpID0+IHRoaXMuZm9jdXNUZXh0SW5wdXQoKVxuICAgIClcbiAgfVxuXG4gIHNldE9wdGlvbnNQb3NpdGlvbkJlbG93KCkge1xuICAgIHRoaXMuc2V0U3RhdGUoXG4gICAgICB7XG4gICAgICAgIG9wZW5lZDogdHJ1ZSxcbiAgICAgICAgb3B0aW9uc1BsYWNlbWVudDogXCJiZWxvd1wiLFxuICAgICAgICBvcHRpb25zVmlzaWJpbGl0eTogXCJoaWRkZW5cIixcbiAgICAgICAgb3B0aW9uc1dpZHRoOiB0aGlzLnMuZW5kT2ZTZWxlY3RMYXlvdXQud2lkdGhcbiAgICAgIH0sXG4gICAgICAoKSA9PiB0aGlzLmZvY3VzVGV4dElucHV0KClcbiAgICApXG4gIH1cblxuICBvbkFueXRoaW5nUmVzaXplZCA9ICgpID0+IHtcbiAgICBpZiAodGhpcy5zLm9wZW5lZCkge1xuICAgICAgdGhpcy5zZXRPcHRpb25zUG9zaXRpb24oKVxuICAgIH1cbiAgfVxuXG4gIG9uQW55dGhpbmdSZXNpemVkRGVib3VuY2VkID0gZGVib3VuY2UodGhpcy50dC5vbkFueXRoaW5nUmVzaXplZCwgMjUpXG5cbiAgb25Bbnl0aGluZ1Njcm9sbGVkID0gKCkgPT4ge1xuICAgIGlmICh0aGlzLnMub3BlbmVkKSB7XG4gICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgc2Nyb2xsTGVmdDogUGxhdGZvcm0uT1MgPT0gXCJ3ZWJcIiA/IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxMZWZ0IDogbnVsbCxcbiAgICAgICAgc2Nyb2xsVG9wOiBQbGF0Zm9ybS5PUyA9PSBcIndlYlwiID8gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRvcCA6IG51bGxcbiAgICAgIH0pXG4gICAgICB0aGlzLnNldE9wdGlvbnNQb3NpdGlvbigpXG4gICAgfVxuICB9XG5cbiAgb25Bbnl0aGluZ1Njcm9sbGVkRGVib3VuY2VkID0gZGVib3VuY2UodGhpcy50dC5vbkFueXRoaW5nU2Nyb2xsZWQsIDI1KVxuXG4gIG9uUHJlc3NPdXRzaWRlT3B0aW9ucyA9ICgpID0+IHtcbiAgICAvLyBJZiBvcHRpb25zIGFyZSBvcGVuIGFuZCBhIGNsaWNrIGlzIG1hZGUgb3V0c2lkZSBvZiB0aGUgb3B0aW9ucyBjb250YWluZXJcbiAgICBpZiAodGhpcy5zLm9wZW5lZCkge1xuICAgICAgdGhpcy5jbG9zZU9wdGlvbnMoKVxuICAgIH1cbiAgfVxuXG4gIG9wdGlvbnNDb250YWluZXIoKSB7XG4gICAgY29uc3Qge3NlbGVjdENvbnRhaW5lckxheW91dCwgbG9hZGVkT3B0aW9ucywgZW5kT2ZTZWxlY3RMYXlvdXQsIG9wdGlvbnNDb250YWluZXJMYXlvdXQsIG9wdGlvbnNQbGFjZW1lbnQsIG9wdGlvbnNWaXNpYmlsaXR5fSA9IHRoaXMuc1xuICAgIGxldCBsZWZ0LCB0b3BcblxuICAgIGxldCBzdHlsZSA9IHtcbiAgICAgIHBvc2l0aW9uOiBcImFic29sdXRlXCIsXG4gICAgICB6SW5kZXg6IDk5OTk5LFxuICAgICAgZWxldmF0aW9uOiA5OTk5OSxcbiAgICAgIHZpc2liaWxpdHk6IG9wdGlvbnNWaXNpYmlsaXR5LFxuICAgICAgd2lkdGg6IHRoaXMucC5vcHRpb25zV2lkdGggfHwgdGhpcy5zLm9wdGlvbnNXaWR0aCxcbiAgICAgIGJhY2tncm91bmRDb2xvcjogXCIjZmZmXCIsXG4gICAgICBib3JkZXI6IFwiMXB4IHNvbGlkICM5OTlcIixcbiAgICAgIG1heEhlaWdodDogMzAwLFxuICAgICAgb3ZlcmZsb3dZOiBcImF1dG9cIlxuICAgIH1cblxuICAgIGlmICghdGhpcy5wLm9wdGlvbnNQb3J0YWwpIHtcbiAgICAgIHN0eWxlLnRvcCA9IDBcbiAgICAgIHN0eWxlLmxlZnQgPSAwXG4gICAgfSBlbHNlIGlmICghdGhpcy5wLm9wdGlvbnNBYnNvbHV0ZSkge1xuICAgICAgc3R5bGUubGVmdCA9IDBcbiAgICAgIHN0eWxlLmJvdHRvbSA9IDBcbiAgICB9IGVsc2UgaWYgKG9wdGlvbnNQbGFjZW1lbnQgPT0gXCJiZWxvd1wiKSB7XG4gICAgICBpZiAoUGxhdGZvcm0uT1MgPT0gXCJ3ZWJcIikge1xuICAgICAgICAvLyBvbkxheW91dCB0b3AgdmFsdWUgaXMgc29tZXRpbWVzIG5lZ2F0aXZlIHNvIHVzZSBicm93c2VyIEpTIHRvIGdldCBpdCBpbnN0ZWFkXG4gICAgICAgIHRvcCA9IGRpZ2codGhpcy50dC5lbmRPZlNlbGVjdFJlZi5jdXJyZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLCBcInRvcFwiKSArIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3AgKyAxXG5cbiAgICAgICAgLy8gb25MYXlvdXQgbGVmdCB2YWx1ZXMgZG9lc24ndCBhbHdheXMgdXBkYXRlIHdoZW4gY2hhbmdlZFxuICAgICAgICBsZWZ0ID0gZGlnZyh0aGlzLnR0LmVuZE9mU2VsZWN0UmVmLmN1cnJlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksIFwibGVmdFwiKSArIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxMZWZ0XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsZWZ0ID0gdGhpcy5zLmVuZE9mU2VsZWN0TGF5b3V0LmxlZnRcbiAgICAgICAgdG9wID0gc2VsZWN0Q29udGFpbmVyTGF5b3V0LnRvcFxuICAgICAgfVxuXG4gICAgICBzdHlsZS5sZWZ0ID0gbGVmdFxuICAgICAgc3R5bGUudG9wID0gdG9wIC0gMlxuICAgIH0gZWxzZSBpZiAob3B0aW9uc1BsYWNlbWVudCA9PSBcImFib3ZlXCIpIHtcbiAgICAgIGlmIChQbGF0Zm9ybS5PUyA9PSBcIndlYlwiKSB7XG4gICAgICAgIC8vIG9uTGF5b3V0IHRvcCB2YWx1ZSBpcyBzb21ldGltZXMgbmVnYXRpdmUgc28gdXNlIGJyb3dzZXIgSlMgdG8gZ2V0IGl0IGluc3RlYWRcbiAgICAgICAgdG9wID0gZGlnZyh0aGlzLnR0LnNlbGVjdENvbnRhaW5lclJlZi5jdXJyZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLCBcInRvcFwiKSArIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3BcblxuICAgICAgICAvLyBvbkxheW91dCBsZWZ0IHZhbHVlcyBkb2Vzbid0IGFsd2F5cyB1cGRhdGUgd2hlbiBjaGFuZ2VkXG4gICAgICAgIGxlZnQgPSBkaWdnKHRoaXMudHQuc2VsZWN0Q29udGFpbmVyUmVmLmN1cnJlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksIFwibGVmdFwiKSArIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxMZWZ0XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsZWZ0ID0gZW5kT2ZTZWxlY3RMYXlvdXQubGVmdFxuICAgICAgICB0b3AgPSBzZWxlY3RDb250YWluZXJMYXlvdXQudG9wXG4gICAgICB9XG5cbiAgICAgIHN0eWxlLmxlZnQgPSBsZWZ0XG4gICAgICBzdHlsZS50b3AgPSB0b3AgLSBvcHRpb25zQ29udGFpbmVyTGF5b3V0LmhlaWdodCArIDFcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmtvbnduIG9wdGlvbnMgcGxhY2VtZW50OiAke29wdGlvbnNQbGFjZW1lbnR9YClcbiAgICB9XG5cbiAgICBzdHlsZSA9IHRoaXMuc3R5bGluZ0ZvcihcIm9wdGlvbnNDb250YWluZXJcIiwgc3R5bGUsIFtsZWZ0LCB0b3AsIHN0eWxlLnZpc2liaWxpdHksIHN0eWxlLndpZHRoXSlcblxuICAgIGNvbnN0IGlkID0gaWRGb3JDb21wb25lbnQodGhpcylcblxuICAgIHJldHVybiAoXG4gICAgICA8Vmlld1xuICAgICAgICBkYXRhU2V0PXt0aGlzLmNhY2hlKFwib3B0aW9uc0NvbnRhaW5lckRhdGFTZXRcIiwge2NsYXNzOiBcIm9wdGlvbnMtY29udGFpbmVyXCIsIGlkLCByb2xlOiBcImRpYWxvZ1wifSwgW2lkXSl9XG4gICAgICAgIG9uTGF5b3V0PXt0aGlzLnR0Lm9uT3B0aW9uc0NvbnRhaW5lckxheW91dH1cbiAgICAgICAgcmVmPXt0aGlzLnR0Lm9wdGlvbnNDb250YWluZXJSZWZ9XG4gICAgICAgIHN0eWxlPXtzdHlsZX1cbiAgICAgID5cbiAgICAgICAge2xvYWRlZE9wdGlvbnM/Lm1hcCgobG9hZGVkT3B0aW9uKSA9PlxuICAgICAgICAgIHRoaXMuaGF5YVNlbGVjdE9wdGlvbih7XG4gICAgICAgICAgICBrZXk6IGxvYWRlZE9wdGlvbi5rZXkgfHwgYGxvYWRlZC1vcHRpb24tJHtsb2FkZWRPcHRpb24udmFsdWV9YCxcbiAgICAgICAgICAgIGxvYWRlZE9wdGlvblxuICAgICAgICAgIH0pXG4gICAgICAgICl9XG4gICAgICAgIHtsb2FkZWRPcHRpb25zPy5sZW5ndGggPT09IDAgJiZcbiAgICAgICAgICA8VmlldyBkYXRhU2V0PXt0aGlzLm5vT3B0aW9uc0NvbnRhaW5lckRhdGFTZXQgfHw9IHtjbGFzczogXCJuby1vcHRpb25zLWNvbnRhaW5lclwifX0+XG4gICAgICAgICAgICA8VGV4dD57dGhpcy5wLm5vT3B0aW9uc1RleHQgPyB0aGlzLnAubm9PcHRpb25zVGV4dCgpIDogdGhpcy50cmFuc2xhdGUoXCIubm9fb3B0aW9uc19mb3VuZFwiKX08L1RleHQ+XG4gICAgICAgICAgPC9WaWV3PlxuICAgICAgICB9XG4gICAgICA8L1ZpZXc+XG4gICAgKVxuICB9XG5cbiAgb25PcHRpb25DbGlja2VkID0gKGV2ZW50LCBsb2FkZWRPcHRpb24pID0+IHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcblxuICAgIGNvbnN0IHtvbkNoYW5nZSwgdG9nZ2xlT3B0aW9uc30gPSB0aGlzLnByb3BzXG4gICAgY29uc3Qge211bHRpcGxlfSA9IHRoaXMucFxuICAgIGNvbnN0IGN1cnJlbnRPcHRpb25zID0gdGhpcy5nZXRDdXJyZW50T3B0aW9ucygpXG4gICAgY29uc3QgdG9nZ2xlZCA9IHRoaXMuZ2V0VG9nZ2xlZCgpXG4gICAgY29uc3QgbmV3U3RhdGUgPSB7fVxuICAgIGNvbnN0IGV4aXN0aW5nT3B0aW9uID0gY3VycmVudE9wdGlvbnMuZmluZCgoY3VycmVudE9wdGlvbikgPT4gY3VycmVudE9wdGlvbi52YWx1ZSA9PSBsb2FkZWRPcHRpb24udmFsdWUpXG4gICAgY29uc3QgbmV3VG9nZ2xlZCA9IHsuLi50b2dnbGVkfVxuICAgIGxldCBuZXdDdXJyZW50T3B0aW9uc1xuXG4gICAgaWYgKGV4aXN0aW5nT3B0aW9uKSB7XG4gICAgICBpZiAodG9nZ2xlT3B0aW9ucykge1xuICAgICAgICBjb25zdCBjdXJyZW50VG9nZ2xlID0gdG9nZ2xlZFtsb2FkZWRPcHRpb24udmFsdWVdXG4gICAgICAgIGNvbnN0IGN1cnJlbnRJbmRleCA9IHRvZ2dsZU9wdGlvbnMuZmluZEluZGV4KChlbGVtZW50KSA9PiBlbGVtZW50LnZhbHVlID09IGN1cnJlbnRUb2dnbGUpXG5cbiAgICAgICAgaWYgKGN1cnJlbnRJbmRleCA+PSAodG9nZ2xlT3B0aW9ucy5sZW5ndGggLSAxKSkge1xuICAgICAgICAgIC8vIE5vIG5leHQgdG9nZ2xlZCAtIHJlbW92ZSB0b2dnbGVkIGFuZCBvcHRpb25cbiAgICAgICAgICBkZWxldGUgbmV3VG9nZ2xlZFtsb2FkZWRPcHRpb24udmFsdWVdXG5cbiAgICAgICAgICBuZXdDdXJyZW50T3B0aW9ucyA9IGN1cnJlbnRPcHRpb25zLmZpbHRlcigoY3VycmVudE9wdGlvbikgPT4gY3VycmVudE9wdGlvbi52YWx1ZSAhPSBsb2FkZWRPcHRpb24udmFsdWUpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gQWxyZWFkeSB0b2dnbGVkIC0gc2V0IHRvIG5leHQgdG9nZ2xlXG4gICAgICAgICAgbmV3VG9nZ2xlZFtsb2FkZWRPcHRpb24udmFsdWVdID0gZGlnZyh0b2dnbGVPcHRpb25zLCBjdXJyZW50SW5kZXggKyAxLCBcInZhbHVlXCIpXG4gICAgICAgIH1cblxuICAgICAgICBuZXdTdGF0ZS50b2dnbGVkID0gbmV3VG9nZ2xlZFxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gUmVtb3ZlIGZyb20gY3VycmVudCBvcHRpb25zXG4gICAgICAgIG5ld0N1cnJlbnRPcHRpb25zID0gY3VycmVudE9wdGlvbnMuZmlsdGVyKChjdXJyZW50T3B0aW9uKSA9PiBjdXJyZW50T3B0aW9uLnZhbHVlICE9IGxvYWRlZE9wdGlvbi52YWx1ZSlcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gRG9uJ3QgZG8gYW55dGhpbmcgaWYgdGhlIGNsaWNrZWQgb3B0aW9uIGlzIGRpc2FibGVkXG4gICAgICBpZiAobG9hZGVkT3B0aW9uLmRpc2FibGVkKSByZXR1cm5cblxuICAgICAgaWYgKHRvZ2dsZU9wdGlvbnMpIHtcbiAgICAgICAgLy8gU2V0IGZyZXNoIHRvZ2dsZVxuICAgICAgICBuZXdUb2dnbGVkW2xvYWRlZE9wdGlvbi52YWx1ZV0gPSB0b2dnbGVPcHRpb25zWzBdLnZhbHVlXG4gICAgICAgIG5ld1N0YXRlLnRvZ2dsZWQgPSBuZXdUb2dnbGVkXG4gICAgICB9XG5cbiAgICAgIGlmIChtdWx0aXBsZSB8fCB0b2dnbGVPcHRpb25zKSB7XG4gICAgICAgIG5ld0N1cnJlbnRPcHRpb25zID0gY3VycmVudE9wdGlvbnMuY29uY2F0KFtsb2FkZWRPcHRpb25dKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbmV3Q3VycmVudE9wdGlvbnMgPSBbbG9hZGVkT3B0aW9uXVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChcInZhbHVlc1wiIGluIHRoaXMucHJvcHMgJiYgdGhpcy5wcm9wcy52YWx1ZXMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgLy8gY3VycmVudE9wdGlvbnMgYXJlIGNvbnRyb2xsZWQgYW5kIGEgdXNlTWVtbyBjYWxsYmFjayBpcyBoYW5kZWxpbmcgc2V0dGluZyBjdXJyZW50IG9wdGlvbnMuXG4gICAgfSBlbHNlIGlmIChuZXdDdXJyZW50T3B0aW9ucykge1xuICAgICAgbmV3U3RhdGUuY3VycmVudE9wdGlvbnMgPSBuZXdDdXJyZW50T3B0aW9uc1xuICAgIH1cblxuICAgIGNvbnN0IG9wdGlvbnMgPSBuZXdDdXJyZW50T3B0aW9ucyB8fCBjdXJyZW50T3B0aW9uc1xuXG4gICAgaWYgKG9uQ2hhbmdlKSB7XG4gICAgICBvbkNoYW5nZSh7XG4gICAgICAgIGV2ZW50LFxuICAgICAgICBvcHRpb25zLFxuICAgICAgICB0b2dnbGVzOiBuZXdUb2dnbGVkXG4gICAgICB9KVxuICAgIH1cblxuICAgIGlmICh0aGlzLnByb3BzLm9uQ2hhbmdlVmFsdWUpIHtcbiAgICAgIGxldCBvcHRpb25WYWx1ZVxuXG4gICAgICBpZiAobXVsdGlwbGUpIHtcbiAgICAgICAgb3B0aW9uVmFsdWUgPSBvcHRpb25zLm1hcCgob3B0aW9uKSA9PiBvcHRpb24udmFsdWUpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvcHRpb25WYWx1ZSA9IGRpZyhvcHRpb25zLCAwLCBcInZhbHVlXCIpXG4gICAgICB9XG5cbiAgICAgIHRoaXMucC5vbkNoYW5nZVZhbHVlKG9wdGlvblZhbHVlKVxuICAgIH1cblxuICAgIGlmICghbXVsdGlwbGUpIHRoaXMuY2xvc2VPcHRpb25zKClcbiAgICB0aGlzLnNldFN0YXRlKG5ld1N0YXRlKVxuICB9XG5cbiAgc3R5bGluZ0ZvcihzdHlsaW5nTmFtZSwgc3R5bGUgPSB7fSwgY2FjaGVzID0gW10pIHtcbiAgICBsZXQgY3VzdG9tU3R5bGluZyA9IGRpZyh0aGlzLCBcInByb3BzXCIsIFwic3R5bGVzXCIsIHN0eWxpbmdOYW1lKVxuXG4gICAgaWYgKHR5cGVvZiBjdXN0b21TdHlsaW5nID09IFwiZnVuY3Rpb25cIikgY3VzdG9tU3R5bGluZyA9IGN1c3RvbVN0eWxpbmcoe3N0YXRlOiB0aGlzLnN0YXRlLCBzdHlsZX0pXG5cbiAgICBpZiAoY3VzdG9tU3R5bGluZykge1xuICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oc3R5bGUsIGN1c3RvbVN0eWxpbmcpXG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuY2FjaGUoYHN0eWxpbmdGb3ItJHtzdHlsaW5nTmFtZX1gLCBzdHlsZSwgY2FjaGVzKVxuICB9XG5cbiAgaWNvbkZvck9wdGlvbihvcHRpb24pIHtcbiAgICBjb25zdCB7dG9nZ2xlT3B0aW9uc30gPSB0aGlzLnByb3BzIHx8IHt9XG4gICAgY29uc3QgdG9nZ2xlZCA9IHRoaXMuZ2V0VG9nZ2xlZCgpXG5cbiAgICBpZiAodG9nZ2xlT3B0aW9ucyAmJiAob3B0aW9uLnZhbHVlIGluIHRvZ2dsZWQpKSB7XG4gICAgICBjb25zdCB0b2dnbGVkVmFsdWUgPSB0b2dnbGVkW29wdGlvbi52YWx1ZV1cbiAgICAgIGNvbnN0IHRvZ2dsZWRPcHRpb24gPSB0b2dnbGVPcHRpb25zLmZpbmQoKGVsZW1lbnQpID0+IGVsZW1lbnQudmFsdWUgPT0gdG9nZ2xlZFZhbHVlKVxuXG4gICAgICBpZiAoIXRvZ2dsZWRPcHRpb24pIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb3VsZG4ndCBmaW5kIGEgdG9nZ2xlIG9wdGlvbiBmb3IgdmFsdWU6ICR7dG9nZ2xlZFZhbHVlfWApXG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0b2dnbGVkT3B0aW9uLmljb25cbiAgICB9XG4gIH1cblxuICBwcmVzZW50T3B0aW9uID0gKG9wdGlvbiwgbW9kZSkgPT4ge1xuICAgIGNvbnN0IHt0b2dnbGVPcHRpb25zfSA9IHRoaXMucHJvcHMgfHwge31cbiAgICBjb25zdCB0b2dnbGVkID0gdGhpcy5nZXRUb2dnbGVkKClcbiAgICBjb25zdCBpY29uID0gdGhpcy5pY29uRm9yT3B0aW9uKG9wdGlvbilcbiAgICBjb25zdCB0b2dnbGVWYWx1ZSA9IHRvZ2dsZWRbb3B0aW9uLnZhbHVlXVxuICAgIGNvbnN0IHRvZ2dsZU9wdGlvbiA9IHRvZ2dsZU9wdGlvbnM/LmZpbmQoKHRvZ2dsZU9wdGlvbkkpID0+IHRvZ2dsZU9wdGlvbkkudmFsdWUgPT0gdG9nZ2xlVmFsdWUpXG4gICAgbGV0IHN0eWxlXG5cbiAgICBpZiAobW9kZSA9PSBcImN1cnJlbnRcIikge1xuICAgICAgc3R5bGUgPSB0aGlzLnN0eWxpbmdGb3IoXCJjdXJyZW50T3B0aW9uUHJlc2VudGF0aW9uVGV4dFwiLCB7ZmxleDogMSwgd2hpdGVTcGFjZTogXCJub3dyYXBcIn0pXG4gICAgfSBlbHNlIHtcbiAgICAgIHN0eWxlID0gdGhpcy5zdHlsaW5nRm9yKFwib3B0aW9uUHJlc2VudGF0aW9uVGV4dFwiLCB7ZmxleDogMSwgd2hpdGVTcGFjZTogXCJub3dyYXBcIn0pXG4gICAgfVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxWaWV3XG4gICAgICAgIGRhdGFTZXQ9e3tcbiAgICAgICAgICBjbGFzczogXCJvcHRpb24tcHJlc2VudGF0aW9uXCIsXG4gICAgICAgICAgdGV4dDogb3B0aW9uLnRleHQsXG4gICAgICAgICAgdG9nZ2xlSWNvbjogdG9nZ2xlT3B0aW9uPy5pY29uLFxuICAgICAgICAgIHRvZ2dsZVZhbHVlOiB0b2dnbGVPcHRpb24/LnZhbHVlLFxuICAgICAgICAgIHZhbHVlOiBvcHRpb24udmFsdWVcbiAgICAgICAgfX1cbiAgICAgICAgc3R5bGU9e3RoaXMub3B0aW9uUHJlc2VudGF0aW9uU3R5bGUgfHw9IHtmbGV4RGlyZWN0aW9uOiBcInJvd1wifX1cbiAgICAgID5cbiAgICAgICAge3RvZ2dsZU9wdGlvbnMgJiYgIShvcHRpb24udmFsdWUgaW4gdG9nZ2xlZCkgJiZcbiAgICAgICAgICA8Vmlld1xuICAgICAgICAgICAgZGF0YVNldD17dGhpcy50b2dnbGVJY29uUGxhY2Vob2xkZXJEYXRhU2V0IHx8PSB7Y2xhc3M6IFwidG9nZ2xlLWljb24tcGxhY2Vob2xkZXJcIn19XG4gICAgICAgICAgICBzdHlsZT17dGhpcy50b2dnbGVJY29uUGxhY2Vob2xkZXJTdHlsZSB8fD0ge3dpZHRoOiAyMH19XG4gICAgICAgICAgLz5cbiAgICAgICAgfVxuICAgICAgICB7dG9nZ2xlT3B0aW9ucyAmJiAob3B0aW9uLnZhbHVlIGluIHRvZ2dsZWQpICYmXG4gICAgICAgICAgPFZpZXcgc3R5bGU9e3RoaXMudG9nZ2xlSWNvbkNvbnRhaW5lclN0eWxlIHx8PSB7YWxpZ25JdGVtczogXCJjZW50ZXJcIiwganVzdGlmeUNvbnRlbnQ6IFwiY2VudGVyXCIsIHdpZHRoOiAyMH19PlxuICAgICAgICAgICAgPEZvbnRBd2Vzb21lSWNvblxuICAgICAgICAgICAgICBkYXRhU2V0PXt0aGlzLnRvZ2dsZUljb25EYXRhU2V0IHx8PSB7Y2xhc3M6IFwidG9nZ2xlLWljb25cIn19XG4gICAgICAgICAgICAgIG5hbWU9e2ljb259XG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvVmlldz5cbiAgICAgICAgfVxuICAgICAgICB7KCgpID0+IHtcbiAgICAgICAgICBpZiAobW9kZSA9PSBcImN1cnJlbnRcIiAmJiBvcHRpb24uY3VycmVudENvbnRlbnQpIHtcbiAgICAgICAgICAgIHJldHVybiBvcHRpb24uY3VycmVudENvbnRlbnQoKVxuICAgICAgICAgIH0gZWxzZSBpZiAob3B0aW9uLmNvbnRlbnQpIHtcbiAgICAgICAgICAgIHJldHVybiBvcHRpb24uY29udGVudCgpXG4gICAgICAgICAgfSBlbHNlIGlmIChcImh0bWxcIiBpbiBvcHRpb24gJiYgUGxhdGZvcm0uT1MgIT0gXCJ3ZWJcIikge1xuICAgICAgICAgICAgcmV0dXJuIDxSZW5kZXJIdG1sIHNvdXJjZT17e2h0bWw6IGRpZ2cob3B0aW9uLCBcImh0bWxcIil9fSAvPlxuICAgICAgICAgIH0gZWxzZSBpZiAoXCJodG1sXCIgaW4gb3B0aW9uICYmIFBsYXRmb3JtLk9TID09IFwid2ViXCIpIHtcbiAgICAgICAgICAgIHJldHVybiA8ZGl2IGRhbmdlcm91c2x5U2V0SW5uZXJIVE1MPXt7X19odG1sOiBkaWdnKG9wdGlvbiwgXCJodG1sXCIpfX0gLz5cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgICAgPFRleHRcbiAgICAgICAgICAgICAgICBkYXRhU2V0PXt0aGlzLm9wdGlvblByZXNlbnRhdGlvblRleHREYXRhU2V0IHx8PSB7Y2xhc3M6IFwib3B0aW9uLXByZXNlbnRhdGlvbi10ZXh0XCJ9fVxuICAgICAgICAgICAgICAgIHN0eWxlPXtzdHlsZX1cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIHtvcHRpb24udGV4dH1cbiAgICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgICAgKVxuICAgICAgICAgIH1cbiAgICAgICAgfSkoKX1cbiAgICAgIDwvVmlldz5cbiAgICApXG4gIH1cblxuICBhc3luYyBzZXRDdXJyZW50RnJvbUdpdmVuVmFsdWVzKCkge1xuICAgIGNvbnN0IHtvcHRpb25zLCB2YWx1ZXN9ID0gdGhpcy5wXG4gICAgY29uc3QgY3VycmVudE9wdGlvbnMgPSBhd2FpdCBvcHRpb25zKHt2YWx1ZXN9KVxuICAgIGNvbnN0IGN1cnJlbnRWYWx1ZXMgPSBjdXJyZW50T3B0aW9ucz8ubWFwKChjdXJyZW50T3B0aW9uKSA9PiBjdXJyZW50T3B0aW9uLnZhbHVlKVxuICAgIGNvbnN0IHN0YXRlVmFsdWVzID0gdGhpcy5zLmN1cnJlbnRPcHRpb25zPy5tYXAoKGN1cnJlbnRPcHRpb24pID0+IGN1cnJlbnRPcHRpb24udmFsdWUpXG5cbiAgICBpZiAoYW55dGhpbmdEaWZmZXJlbnQoY3VycmVudFZhbHVlcywgc3RhdGVWYWx1ZXMpKSB7XG4gICAgICB0aGlzLnNldFN0YXRlKHtjdXJyZW50T3B0aW9uc30pXG4gICAgfVxuICB9XG59KSlcbiJdfQ==
663
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VsZWN0L2luZGV4LmpzeCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsaUJBQWlCLEVBQUMsTUFBTSxvQ0FBb0MsQ0FBQTtBQUNwRSxPQUFPLE1BQU0sTUFBTSxjQUFjLENBQUE7QUFDakMsT0FBTyxFQUFDLEdBQUcsRUFBRSxJQUFJLEVBQUMsTUFBTSxXQUFXLENBQUE7QUFDbkMsT0FBTyxFQUFDLFVBQVUsRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFDLE1BQU0sY0FBYyxDQUFBO0FBQ25GLE9BQU8sS0FBSyxFQUFFLEVBQUMsSUFBSSxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUMsTUFBTSxPQUFPLENBQUE7QUFDcEQsT0FBTyxFQUFDLGNBQWMsRUFBRSxjQUFjLEVBQUMsTUFBTSw0Q0FBNEMsQ0FBQTtBQUN6RixPQUFPLFFBQVEsTUFBTSxVQUFVLENBQUE7QUFDL0IsT0FBTyxlQUFlLE1BQU0sdUNBQXVDLENBQUE7QUFDbkUsT0FBTyxjQUFjLE1BQU0sbURBQW1ELENBQUE7QUFDOUUsT0FBTyxnQkFBZ0IsTUFBTSxxREFBcUQsQ0FBQTtBQUNsRixPQUFPLE1BQU0sTUFBTSxVQUFVLENBQUE7QUFDN0IsT0FBTyxXQUFXLE1BQU0sZ0JBQWdCLENBQUE7QUFDeEMsT0FBTyxTQUFTLE1BQU0sWUFBWSxDQUFBO0FBQ2xDLE9BQU8sY0FBYyxNQUFNLGtCQUFrQixDQUFBO0FBQzdDLE9BQU8sVUFBVSxNQUFNLDBCQUEwQixDQUFBO0FBQ2pELE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxjQUFjLENBQUE7QUFDbkMsT0FBTyxnQkFBZ0IsTUFBTSw4Q0FBOEMsQ0FBQTtBQUMzRSxPQUFPLGVBQWUsTUFBTSxxQ0FBcUMsQ0FBQTtBQUVqRSx3QkFBd0I7QUFDeEIsTUFBTSw0QkFBNEIsR0FBRyxDQUFDLFNBQVMs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LXN0YXRlLWNvbXBhcmUvYnVpbGQvZGlmZi11dGlsc1wiXG5pbXBvcnQgQ29uZmlnIGZyb20gXCIuLi9jb25maWcuanNcIlxuaW1wb3J0IHtkaWcsIGRpZ2d9IGZyb20gXCJkaWdnZXJpemVcIlxuaW1wb3J0IHtEaW1lbnNpb25zLCBQbGF0Zm9ybSwgUHJlc3NhYmxlLCBUZXh0LCBUZXh0SW5wdXQsIFZpZXd9IGZyb20gXCJyZWFjdC1uYXRpdmVcIlxuaW1wb3J0IFJlYWN0LCB7bWVtbywgdXNlRWZmZWN0LCB1c2VSZWZ9IGZyb20gXCJyZWFjdFwiXG5pbXBvcnQge3NoYXBlQ29tcG9uZW50LCBTaGFwZUNvbXBvbmVudH0gZnJvbSBcInNldC1zdGF0ZS1jb21wYXJlL2J1aWxkL3NoYXBlLWNvbXBvbmVudC5qc1wiXG5pbXBvcnQgZGVib3VuY2UgZnJvbSBcImRlYm91bmNlXCJcbmltcG9ydCBGb250QXdlc29tZUljb24gZnJvbSBcInJlYWN0LW5hdGl2ZS12ZWN0b3ItaWNvbnMvRm9udEF3ZXNvbWVcIlxuaW1wb3J0IGlkRm9yQ29tcG9uZW50IGZyb20gXCJAa2FzcGVybmovYXBpLW1ha2VyL2J1aWxkL2lucHV0cy9pZC1mb3ItY29tcG9uZW50XCJcbmltcG9ydCBuYW1lRm9yQ29tcG9uZW50IGZyb20gXCJAa2FzcGVybmovYXBpLW1ha2VyL2J1aWxkL2lucHV0cy9uYW1lLWZvci1jb21wb25lbnRcIlxuaW1wb3J0IE9wdGlvbiBmcm9tIFwiLi9vcHRpb25cIlxuaW1wb3J0IE9wdGlvbkdyb3VwIGZyb20gXCIuL29wdGlvbi1ncm91cFwiXG5pbXBvcnQgUHJvcFR5cGVzIGZyb20gXCJwcm9wLXR5cGVzXCJcbmltcG9ydCBwcm9wVHlwZXNFeGFjdCBmcm9tIFwicHJvcC10eXBlcy1leGFjdFwiXG5pbXBvcnQgUmVuZGVySHRtbCBmcm9tIFwicmVhY3QtbmF0aXZlLXJlbmRlci1odG1sXCJcbmltcG9ydCB7UG9ydGFsfSBmcm9tIFwiY29uam9pbnRtZW50XCJcbmltcG9ydCB1c2VFdmVudExpc3RlbmVyIGZyb20gXCJAa2FzcGVybmovYXBpLW1ha2VyL2J1aWxkL3VzZS1ldmVudC1saXN0ZW5lclwiXG5pbXBvcnQgdXNlUHJlc3NPdXRzaWRlIGZyb20gXCJvdXRzaWRlLWV5ZS9idWlsZC91c2UtcHJlc3Mtb3V0c2lkZVwiXG5cbi8qKiBAcmV0dXJucyB7c3RyaW5nfSAqL1xuY29uc3QgbmFtZUZvckNvbXBvbmVudFdpdGhNdWx0aXBsZSA9IChjb21wb25lbnQpID0+IHtcbiAgbGV0IG5hbWUgPSBuYW1lRm9yQ29tcG9uZW50KGNvbXBvbmVudClcblxuICBjb25zdCBjdXJyZW50T3B0aW9ucyA9IGNvbXBvbmVudC5nZXRDdXJyZW50T3B0aW9ucygpXG5cbiAgaWYgKGNvbXBvbmVudC5wcm9wcy5tdWx0aXBsZSAmJiBuYW1lICYmIGN1cnJlbnRPcHRpb25zLmxlbmd0aCA+IDApIHtcbiAgICBuYW1lICs9IFwiW11cIlxuICB9XG5cbiAgcmV0dXJuIG5hbWVcbn1cblxuZXhwb3J0IGRlZmF1bHQgbWVtbyhzaGFwZUNvbXBvbmVudChjbGFzcyBIYXlhU2VsZWN0IGV4dGVuZHMgU2hhcGVDb21wb25lbnQge1xuICBzdGF0aWMgZGVmYXVsdFByb3BzID0ge1xuICAgIG11bHRpcGxlOiBmYWxzZSxcbiAgICBub09wdGlvbnNUZXh0OiBudWxsLFxuICAgIG9uQmx1cjogbnVsbCxcbiAgICBvbkZvY3VzOiBudWxsLFxuICAgIG9wdGlvbnNBYnNvbHV0ZTogdHJ1ZSxcbiAgICBvcHRpb25zUG9ydGFsOiB0cnVlLFxuICAgIG9wdGlvbnNXaWR0aDogbnVsbCxcbiAgICBzZWFyY2g6IGZhbHNlLFxuICAgIHRyYW5zcGFyZW50OiBmYWxzZVxuICB9XG5cbiAgc3RhdGljIHByb3BUeXBlcyA9IHByb3BUeXBlc0V4YWN0KHtcbiAgICBhdHRyaWJ1dGU6IFByb3BUeXBlcy5zdHJpbmcsXG4gICAgY2xhc3NOYW1lOiBQcm9wVHlwZXMuc3RyaW5nLFxuICAgIGRlZmF1bHRUb2dnbGVkOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgIGRlZmF1bHRWYWx1ZTogUHJvcFR5cGVzLm9uZU9mVHlwZShbUHJvcFR5cGVzLm51bWJlciwgUHJvcFR5cGVzLnN0cmluZ10pLFxuICAgIGRlZmF1bHRWYWx1ZXM6IFByb3BUeXBlcy5hcnJheSxcbiAgICBkZWZhdWx0VmFsdWVzRnJvbU9wdGlvbnM6IFByb3BUeXBlcy5hcnJheSxcbiAgICBpZDogUHJvcFR5cGVzLm5vZGUsXG4gICAgbW9kZWw6IFByb3BUeXBlcy5vYmplY3QsXG4gICAgbXVsdGlwbGU6IFByb3BUeXBlcy5ib29sLmlzUmVxdWlyZWQsXG4gICAgbmFtZTogUHJvcFR5cGVzLnN0cmluZyxcbiAgICBub09wdGlvbnNUZXh0OiBQcm9wVHlwZXMuZnVuYyxcbiAgICBvbkJsdXI6IFByb3BUeXBlcy5mdW5jLFxuICAgIG9uQ2hhbmdlOiBQcm9wVHlwZXMuZnVuYyxcbiAgICBvbkNoYW5nZVZhbHVlOiBQcm9wVHlwZXMuZnVuYyxcbiAgICBvbkZvY3VzOiBQcm9wVHlwZXMuZnVuYyxcbiAgICBvbk9wdGlvbnNDbG9zZWQ6IFByb3BUeXBlcy5mdW5jLFxuICAgIG9wdGlvbnM6IFByb3BUeXBlcy5vbmVPZlR5cGUoW1Byb3BUeXBlcy5hcnJheSwgUHJvcFR5cGVzLmZ1bmNdKS5pc1JlcXVpcmVkLFxuICAgIG9wdGlvbnNBYnNvbHV0ZTogUHJvcFR5cGVzLmJvb2wuaXNSZXF1aXJlZCxcbiAgICBvcHRpb25zUG9ydGFsOiBQcm9wVHlwZXMuYm9vbC5pc1JlcXVpcmVkLFxuICAgIG9wdGlvbnNXaWR0aDogUHJvcFR5cGVzLm51bWJlcixcbiAgICBwbGFjZWhvbGRlcjogUHJvcFR5cGVzLm5vZGUsXG4gICAgc2VhcmNoOiBQcm9wVHlwZXMuYm9vbC5pc1JlcXVpcmVkLFxuICAgIHN0eWxlczogUHJvcFR5cGVzLm9iamVjdCxcbiAgICB0b2dnbGVkOiBQcm9wVHlwZXMub2JqZWN0LFxuICAgIHRvZ2dsZU9wdGlvbnM6IFByb3BUeXBlcy5hcnJheU9mKFByb3BUeXBlcy5zaGFwZSh7XG4gICAgICBpY29uOiBQcm9wVHlwZXMuc3RyaW5nLmlzUmVxdWlyZWQsXG4gICAgICBsYWJlbDogUHJvcFR5cGVzLnN0cmluZy5pc1JlcXVpcmVkLFxuICAgICAgdmFsdWU6IFByb3BUeXBlcy5zdHJpbmcuaXNSZXF1aXJlZFxuICAgIH0pKSxcbiAgICB0cmFuc3BhcmVudDogUHJvcFR5cGVzLmJvb2wuaXNSZXF1aXJlZCxcbiAgICB2YWx1ZXM6IFByb3BUeXBlcy5hcnJheVxuICB9KVxuXG4gIGNhbGxPcHRpb25zUG9zaXRpb25BYm92ZUlmT3V0c2lkZVNjcmVlbiA9IGZhbHNlXG4gIHQgPSBDb25maWcuY3VycmVudCgpLmdldFVzZVRyYW5zbGF0ZSgpKCkudFxuICB3aW5kb3dXaWR0aCA9IERpbWVuc2lvbnMuZ2V0KFwid2luZG93XCIpLndpZHRoXG4gIHdpbmRvd0hlaWdodCA9IERpbWVuc2lvbnMuZ2V0KFwid2luZG93XCIpLmhlaWdodFxuXG4gIHNldHVwKCkge1xuICAgIGNvbnN0IHt0fSA9IENvbmZpZy5jdXJyZW50KCkuZ2V0VXNlVHJhbnNsYXRlKCkoKVxuXG4gICAgdGhpcy50ID0gdFxuXG4gICAgaWYgKHRoaXMucHJvcHMudmFsdWVzKSB7XG4gICAgICBmb3IgKGNvbnN0IHZhbHVlIG9mIHRoaXMucHJvcHMudmFsdWVzKSB7XG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihcIkhheWFTZWxlY3Q6IFVuZGVmaW5lZCBnaXZlbiBhcyB2YWx1ZVwiKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgdGhpcy5zZXRJbnN0YW5jZSh7XG4gICAgICBlbmRPZlNlbGVjdFJlZjogdXNlUmVmKCksXG4gICAgICBvcHRpb25zQ29udGFpbmVyUmVmOiB1c2VSZWYoKSxcbiAgICAgIHNlYXJjaFRleHRJbnB1dFJlZjogdXNlUmVmKCksXG4gICAgICBzZWxlY3RDb250YWluZXJSZWY6IHVzZVJlZigpXG4gICAgfSlcbiAgICB0aGlzLnVzZVN0YXRlcyh7XG4gICAgICBjdXJyZW50T3B0aW9uczogKCkgPT4gdGhpcy5kZWZhdWx0Q3VycmVudE9wdGlvbnMoKSxcbiAgICAgIHNlbGVjdENvbnRhaW5lckxheW91dDogbnVsbCxcbiAgICAgIGVuZE9mU2VsZWN0TGF5b3V0OiBudWxsLFxuICAgICAgaGVpZ2h0OiBudWxsLFxuICAgICAgbG9hZGVkT3B0aW9uczogKCkgPT4gdGhpcy5kZWZhdWx0TG9hZGVkT3B0aW9ucygpLFxuICAgICAgb3BlbmVkOiBmYWxzZSxcbiAgICAgIG9wdGlvbnNDb250YWluZXJMYXlvdXQ6IG51bGwsXG4gICAgICBvcHRpb25zUGxhY2VtZW50OiB1bmRlZmluZWQsXG4gICAgICBvcHRpb25zVG9wOiB1bmRlZmluZWQsXG4gICAgICBvcHRpb25zVmlzaWJpbGl0eTogdW5kZWZpbmVkLFxuICAgICAgb3B0aW9uc1dpZHRoOiB1bmRlZmluZWQsXG4gICAgICBzY3JvbGxMZWZ0OiBQbGF0Zm9ybS5PUyA9PSBcIndlYlwiID8gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbExlZnQgOiBudWxsLFxuICAgICAgc2Nyb2xsVG9wOiBQbGF0Zm9ybS5PUyA9PSBcIndlYlwiID8gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRvcCA6IG51bGwsXG4gICAgICBzZWFyY2hUZXh0OiBcIlwiLFxuICAgICAgdG9nZ2xlZDogKCkgPT4gdGhpcy5kZWZhdWx0VG9nZ2xlZCgpXG4gICAgfSlcblxuICAgIHVzZUV2ZW50TGlzdGVuZXIoRGltZW5zaW9ucywgXCJjaGFuZ2VcIiwgdGhpcy50dC5vbkRpbWVuc2lvbnNDaGFuZ2UpXG4gICAgdXNlUHJlc3NPdXRzaWRlKHRoaXMudHQub3B0aW9uc0NvbnRhaW5lclJlZiwgdGhpcy50dC5vblByZXNzT3V0c2lkZU9wdGlvbnMpXG5cbiAgICBpZiAoUGxhdGZvcm0uT1MgPT0gXCJ3ZWJcIikge1xuICAgICAgdXNlRXZlbnRMaXN0ZW5lcih3aW5kb3csIFwicmVzaXplXCIsIHRoaXMudHQub25Bbnl0aGluZ1Jlc2l6ZWREZWJvdW5jZWQpXG4gICAgICB1c2VFdmVudExpc3RlbmVyKHdpbmRvdywgXCJzY3JvbGxcIiwgdGhpcy50dC5vbkFueXRoaW5nU2Nyb2xsZWREZWJvdW5jZWQpXG4gICAgfVxuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIGlmICh0aGlzLnR0LmNhbGxPcHRpb25zUG9zaXRpb25BYm92ZUlmT3V0c2lkZVNjcmVlbiAmJiB0aGlzLnMub3B0aW9uc0NvbnRhaW5lckxheW91dCkge1xuICAgICAgICB0aGlzLmNhbGxPcHRpb25zUG9zaXRpb25BYm92ZUlmT3V0c2lkZVNjcmVlbiA9IGZhbHNlXG4gICAgICAgIHRoaXMuc2V0T3B0aW9uc1Bvc2l0aW9uQWJvdmVJZk91dHNpZGVTY3JlZW4oKVxuICAgICAgfVxuICAgIH0sIFt0aGlzLnR0LmNhbGxPcHRpb25zUG9zaXRpb25BYm92ZUlmT3V0c2lkZVNjcmVlbiwgdGhpcy5zLm9wdGlvbnNDb250YWluZXJMYXlvdXRdKVxuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgIGNvbnN0IGN1cnJlbnRPcHRpb25JZHMgPSB0aGlzLnMuY3VycmVudE9wdGlvbnM/Lm1hcCgoY3VycmVudE9wdGlvbikgPT4gY3VycmVudE9wdGlvbi52YWx1ZSlcblxuICAgICAgaWYgKHRoaXMucHJvcHMudmFsdWVzICYmIGFueXRoaW5nRGlmZmVyZW50KGN1cnJlbnRPcHRpb25JZHMsIHRoaXMucHJvcHMudmFsdWVzKSAmJiB0eXBlb2YgdGhpcy5wcm9wcy5vcHRpb25zID09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICB0aGlzLnNldEN1cnJlbnRGcm9tR2l2ZW5WYWx1ZXMoKVxuICAgICAgfVxuICAgIH0sIFt0aGlzLnByb3BzLnZhbHVlc10pXG4gIH1cblxuICB0cmFuc2xhdGUobXNnSUQpIHtcbiAgICBpZiAobXNnSUQuc3RhcnRzV2l0aChcIi5cIikpIHtcbiAgICAgIHJldHVybiB0aGlzLnQoYGhheWFfc2VsZWN0JHttc2dJRH1gKVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gdGhpcy50KG1zZ0lEKVxuICAgIH1cbiAgfVxuXG4gIGRlZmF1bHRDdXJyZW50T3B0aW9ucygpIHtcbiAgICBjb25zdCB7ZGVmYXVsdFZhbHVlLCBkZWZhdWx0VmFsdWVzLCB2YWx1ZXN9ID0gdGhpcy5wcm9wc1xuICAgIGNvbnN0IHtvcHRpb25zfSA9IHRoaXMucFxuXG4gICAgaWYgKCFBcnJheS5pc0FycmF5KG9wdGlvbnMpKSByZXR1cm4gW11cblxuICAgIHJldHVybiBvcHRpb25zLmZpbHRlcigoe3ZhbHVlfSkgPT5cbiAgICAgIChkZWZhdWx0VmFsdWUgJiYgdmFsdWUgPT0gZGVmYXVsdFZhbHVlKSB8fFxuICAgICAgICAoZGVmYXVsdFZhbHVlcyAmJiBkZWZhdWx0VmFsdWVzLmluY2x1ZGVzKHZhbHVlKSkgfHxcbiAgICAgICAgKHZhbHVlcyAmJiB2YWx1ZXMuaW5jbHVkZXModmFsdWUpKVxuICAgIClcbiAgfVxuXG4gIGRlZmF1bHRMb2FkZWRPcHRpb25zKCkge1xuICAgIGNvbnN0IHtvcHRpb25zfSA9IHRoaXMucFxuXG4gICAgaWYgKHR5cGVvZiBvcHRpb25zID09IFwiZnVuY3Rpb25cIikge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZFxuICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShvcHRpb25zKSkge1xuICAgICAgcmV0dXJuIG9wdGlvbnNcbiAgICB9XG5cbiAgICB0aHJvdyBuZXcgRXJyb3IoYFVua25vd24gdHlwZSBvZiBvcHRpb25zOiAke3R5cGVvZiBvcHRpb25zfWApXG4gIH1cblxuICBkZWZhdWx0VG9nZ2xlZCA9ICgpID0+IChcInRvZ2dsZWRcIiBpbiB0aGlzLnByb3BzKSA/IHRoaXMucC50b2dnbGVkIDogdGhpcy5wcm9wcy5kZWZhdWx0VG9nZ2xlZCB8fCB7fVxuICBnZXRUb2dnbGVkID0gKCkgPT4gKFwidG9nZ2xlZFwiIGluIHRoaXMucHJvcHMpID8gdGhpcy5wLnRvZ2dsZWQgOiB0aGlzLnMudG9nZ2xlZFxuICBnZXRWYWx1ZXMgPSAoKSA9PiAoXCJ2YWx1ZXNcIiBpbiB0aGlzLnByb3BzKSA/IHRoaXMucC52YWx1ZXMgOiB0aGlzLnMuY3VycmVudE9wdGlvbnMubWFwKChjdXJyZW50T3B0aW9uKSA9PiBjdXJyZW50T3B0aW9uLnZhbHVlKVxuICBnZXRDdXJyZW50T3B0aW9ucyA9ICgpID0+IHtcbiAgICBpZiAoXCJ2YWx1ZXNcIiBpbiB0aGlzLnByb3BzICYmIHR5cGVvZiB0aGlzLnByb3BzLnZhbHVlcyAhPSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICBpZiAoQXJyYXkuaXNBcnJheSh0aGlzLnByb3BzLm9wdGlvbnMpICYmIHRoaXMucHJvcHMudmFsdWVzKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnAudmFsdWVzLm1hcCgodmFsdWUpID0+IHRoaXMucC5vcHRpb25zLmZpbmQoKG9wdGlvbikgPT4gb3B0aW9uLnZhbHVlID09IHZhbHVlKSlcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5zLmxvYWRlZE9wdGlvbnMgJiYgdGhpcy5wcm9wcy52YWx1ZXMpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMucC52YWx1ZXMubWFwKCh2YWx1ZSkgPT4ge1xuICAgICAgICAgIGxldCBmb3VuZE9wdGlvbiA9IHRoaXMucy5sb2FkZWRPcHRpb25zLmZpbmQoKG9wdGlvbikgPT4gb3B0aW9uLnZhbHVlID09IHZhbHVlKVxuXG4gICAgICAgICAgaWYgKCFmb3VuZE9wdGlvbikge1xuICAgICAgICAgICAgZm91bmRPcHRpb24gPSB0aGlzLnMuY3VycmVudE9wdGlvbnMuZmluZCgob3B0aW9uKSA9PiBvcHRpb24udmFsdWUgPT0gdmFsdWUpXG5cbiAgICAgICAgICAgIGlmICghZm91bmRPcHRpb24pIHtcbiAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihcbiAgICAgICAgICAgICAgICBgQ291bGRuJ3QgZmluZCBvcHRpb246ICR7dmFsdWV9IGluIGxvYWRlZE9wdGlvbnMgb3Igc3RhdGUgY3VycmVudE9wdGlvbnNgLFxuICAgICAgICAgICAgICAgIHtzdGF0ZUxvYWRlZE9wdGlvbnM6IHRoaXMucy5sb2FkZWRPcHRpb25zLCBzdGF0ZUN1cnJlbnRPcHRpb25zOiB0aGlzLnMuY3VycmVudE9wdGlvbnMsIHByb3BzT3B0aW9uczogdGhpcy5wcm9wcy5vcHRpb25zfVxuICAgICAgICAgICAgICApXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmV0dXJuIGZvdW5kT3B0aW9uXG4gICAgICAgIH0pXG4gICAgICB9IGVsc2UgaWYgKHR5cGVvZiB0aGlzLnByb3BzLm9wdGlvbnMgPT0gXCJmdW5jdGlvblwiICYmIHRoaXMucHJvcHMudmFsdWVzKSB7XG4gICAgICAgIC8vIE9wdGlvbnMgaGF2ZW4ndCBiZWVuIGxvYWRlZCB5ZXQuXG4gICAgICB9IGVsc2UgaWYgKHRoaXMucHJvcHMudmFsdWVzKSB7XG4gICAgICAgIHJldHVybiB0aGlzLnAudmFsdWVzLm1hcCgodmFsdWUpID0+ICh7dmFsdWV9KSlcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdGhpcy5zLmN1cnJlbnRPcHRpb25zXG4gIH1cblxuICBnZXRDdXJyZW50T3B0aW9uVmFsdWVzKCkge1xuICAgIGlmIChcInZhbHVlc1wiIGluIHRoaXMucHJvcHMpIHtcbiAgICAgIHJldHVybiB0aGlzLnAudmFsdWVzXG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuZ2V0Q3VycmVudE9wdGlvbnMoKS5tYXAoKG9wdGlvbikgPT4gb3B0aW9uLnZhbHVlKVxuICB9XG5cbiAgY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgY29uc3Qge2F0dHJpYnV0ZSwgZGVmYXVsdFZhbHVlLCBkZWZhdWx0VmFsdWVzLCBkZWZhdWx0VmFsdWVzRnJvbU9wdGlvbnMsIG1vZGVsLCBvcHRpb25zfSA9IHRoaXMucHJvcHNcblxuICAgIGlmICgoKGRlZmF1bHRWYWx1ZSB8fCBkZWZhdWx0VmFsdWVzIHx8IGRlZmF1bHRWYWx1ZXNGcm9tT3B0aW9ucykgfHwgKGF0dHJpYnV0ZSAmJiBtb2RlbCkpICYmIHR5cGVvZiBvcHRpb25zID09IFwiZnVuY3Rpb25cIikge1xuICAgICAgdGhpcy5sb2FkRGVmYXVsdFZhbHVlc0Zyb21PcHRpb25zQ2FsbGJhY2soKVxuICAgIH1cbiAgfVxuXG4gIGNvbXBvbmVudERpZFVwZGF0ZSgpIHtcbiAgICBjb25zdCBuZXdTdGF0ZSA9IHt9XG5cbiAgICBpZiAoXCJ0b2dnbGVkXCIgaW4gdGhpcy5wcm9wcykge1xuICAgICAgY29uc3QgbmV3VG9nZ2xlZCA9IHRoaXMucC50b2dnbGVkXG5cbiAgICAgIGlmIChhbnl0aGluZ0RpZmZlcmVudCh0aGlzLnN0YXRlLnRvZ2dsZWQsIG5ld1RvZ2dsZWQpKSB7XG4gICAgICAgIG5ld1N0YXRlLnRvZ2dsZWQgPSBuZXdUb2dnbGVkXG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKE9iamVjdC5rZXlzKG5ld1N0YXRlKS5sZW5ndGggPiAwKSB7XG4gICAgICB0aGlzLnNldFN0YXRlKG5ld1N0YXRlKVxuICAgIH1cbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCB7ZW5kT2ZTZWxlY3RSZWZ9ID0gdGhpcy50dFxuICAgIGNvbnN0IHt0cmFuc3BhcmVudH0gPSB0aGlzLnBcbiAgICBjb25zdCB7Y2xhc3NOYW1lLCBwbGFjZWhvbGRlciwgdG9nZ2xlT3B0aW9uc30gPSB0aGlzLnByb3BzXG4gICAgY29uc3Qge29wZW5lZCwgb3B0aW9uc1BsYWNlbWVudH0gPSB0aGlzLnNcbiAgICBjb25zdCBjdXJyZW50T3B0aW9ucyA9IHRoaXMuZ2V0Q3VycmVudE9wdGlvbnMoKVxuICAgIGNvbnN0IGlkID0gaWRGb3JDb21wb25lbnQodGhpcylcblxuICAgIGNvbnN0IHNlbGVjdENvbnRhaW5lclN0eWxlQWN0dWFsID0gdGhpcy5zdHlsaW5nRm9yKFwic2VsZWN0Q29udGFpbmVyXCIsIHtcbiAgICAgIGZsZXhEaXJlY3Rpb246IFwicm93XCIsXG4gICAgICBhbGlnbkl0ZW1zOiBcImNlbnRlclwiLFxuICAgICAgYmFja2dyb3VuZENvbG9yOiB0cmFuc3BhcmVudCA/IHVuZGVmaW5lZCA6IFwiI2ZmZlwiLFxuICAgICAgYm9yZGVyOiB0cmFuc3BhcmVudCA/IHVuZGVmaW5lZCA6IFwiMXB4IHNvbGlkICM5OTlcIixcbiAgICAgIGJvcmRlclJhZGl1czogdHJhbnNwYXJlbnQgPyB1bmRlZmluZWQgOiA0LFxuICAgICAgY29sb3I6IFwiIzAwMFwiLFxuICAgICAgY3Vyc29yOiBcInBvaW50ZXJcIixcbiAgICAgIHBhZGRpbmdUb3A6IDUsXG4gICAgICBwYWRkaW5nQm90dG9tOiA1LFxuICAgICAgcGFkZGluZ0xlZnQ6IDVcbiAgICB9LCBbdHJhbnNwYXJlbnRdKVxuXG4gICAgaWYgKG9wZW5lZCkge1xuICAgICAgLy8gUHJldmVudCBzZWxlY3QgZnJvbSBjaGFuZ2luZyBzaXplIG9uY2UgdGhlIGNvbnRlbnQgaXMgcmVwbGFjZWQgd2l0aCBzZWFyY2ggdGV4dCBvbmNlIG9wZW5lZFxuICAgICAgc2VsZWN0Q29udGFpbmVyU3R5bGVBY3R1YWwuaGVpZ2h0ID0gdGhpcy5zLmhlaWdodFxuXG4gICAgICBpZiAob3B0aW9uc1BsYWNlbWVudCA9PSBcImFib3ZlXCIpIHtcbiAgICAgICAgc2VsZWN0Q29udGFpbmVyU3R5bGVBY3R1YWwuYm9yZGVyVG9wTGVmdFJhZGl1cyA9IDBcbiAgICAgICAgc2VsZWN0Q29udGFpbmVyU3R5bGVBY3R1YWwuYm9yZGVyVG9wUmlnaHRSYWRpdXMgPSAwXG4gICAgICAgIHNlbGVjdENvbnRhaW5lclN0eWxlQWN0dWFsLmJvcmRlckJvdHRvbVJpZ2h0UmFkaXVzID0gc2VsZWN0Q29udGFpbmVyU3R5bGVBY3R1YWwuYm9yZGVyUmFkaXVzXG4gICAgICAgIHNlbGVjdENvbnRhaW5lclN0eWxlQWN0dWFsLmJvcmRlckJvdHRvbUxlZnRSYWRpdXMgPSBzZWxlY3RDb250YWluZXJTdHlsZUFjdHVhbC5ib3JkZXJSYWRpdXNcblxuICAgICAgICBkZWxldGUgc2VsZWN0Q29udGFpbmVyU3R5bGVBY3R1YWwuYm9yZGVyUmFkaXVzXG4gICAgICB9IGVsc2UgaWYgKG9wdGlvbnNQbGFjZW1lbnQgPT0gXCJiZWxvd1wiKSB7XG4gICAgICAgIHNlbGVjdENvbnRhaW5lclN0eWxlQWN0dWFsLmJvcmRlclRvcExlZnRSYWRpdXMgPSBzZWxlY3RDb250YWluZXJTdHlsZUFjdHVhbC5ib3JkZXJSYWRpdXNcbiAgICAgICAgc2VsZWN0Q29udGFpbmVyU3R5bGVBY3R1YWwuYm9yZGVyVG9wUmlnaHRSYWRpdXMgPSBzZWxlY3RDb250YWluZXJTdHlsZUFjdHVhbC5ib3JkZXJSYWRpdXNcbiAgICAgICAgc2VsZWN0Q29udGFpbmVyU3R5bGVBY3R1YWwuYm9yZGVyQm90dG9tUmlnaHRSYWRpdXMgPSAwXG4gICAgICAgIHNlbGVjdENvbnRhaW5lclN0eWxlQWN0dWFsLmJvcmRlckJvdHRvbUxlZnRSYWRpdXMgPSAwXG5cbiAgICAgICAgZGVsZXRlIHNlbGVjdENvbnRhaW5lclN0eWxlQWN0dWFsLmJvcmRlclJhZGl1c1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiAoXG4gICAgICA8Vmlld1xuICAgICAgICBkYXRhU2V0PXt0aGlzLmNhY2hlKFwicm9vdFZpZXdEYXRhU2V0XCIsIHtcbiAgICAgICAgICBjbGFzczogY2xhc3NOYW1lLFxuICAgICAgICAgIGNvbXBvbmVudDogXCJoYXlhLXNlbGVjdFwiLFxuICAgICAgICAgIGlkLFxuICAgICAgICAgIG9wZW5lZCxcbiAgICAgICAgICBvcHRpb25zUGxhY2VtZW50LFxuICAgICAgICAgIHRvZ2dsZXM6IEJvb2xlYW4odG9nZ2xlT3B0aW9ucylcbiAgICAgICAgfSwgW2NsYXNzTmFtZSwgaWQsIG9wZW5lZCwgb3B0aW9uc1BsYWNlbWVudCwgQm9vbGVhbih0b2dnbGVPcHRpb25zKV0pfVxuICAgICAgICBzdHlsZT17dGhpcy5zdHlsaW5nRm9yKFwibWFpblwiKX1cbiAgICAgID5cbiAgICAgICAgPFByZXNzYWJsZVxuICAgICAgICAgIGRhdGFTZXQ9e3RoaXMuc2VsZWN0Q29udGFpbmVyRGF0YVNldCB8fD0ge2NsYXNzOiBcInNlbGVjdC1jb250YWluZXJcIn19XG4gICAgICAgICAgb25MYXlvdXQ9e3RoaXMudHQub25TZWxlY3RDb250YWluZXJMYXlvdXR9XG4gICAgICAgICAgb25QcmVzcz17dGhpcy50dC5vblNlbGVjdENsaWNrZWR9XG4gICAgICAgICAgcmVmPXt0aGlzLnR0LnNlbGVjdENvbnRhaW5lclJlZn1cbiAgICAgICAgICBzdHlsZT17c2VsZWN0Q29udGFpbmVyU3R5bGVBY3R1YWx9XG4gICAgICAgID5cbiAgICAgICAgICA8Vmlld1xuICAgICAgICAgICAgZGF0YVNldD17dGhpcy5jdXJyZW50U2VsZWN0ZWREYXRhU2V0IHx8PSB7Y2xhc3M6IFwiY3VycmVudC1zZWxlY3RlZFwifX1cbiAgICAgICAgICAgIHN0eWxlPXt0aGlzLnN0eWxpbmdGb3IoXCJjdXJyZW50U2VsZWN0ZWRcIiwgdGhpcy5jdXJyZW50U2VsZWN0ZWRTdHlsZSB8fD0ge3dpZHRoOiBcImNhbGMoMTAwJSAtIDI1cHgpXCIsIGZsZXhXcmFwOiBcIndyYXBcIiwgb3ZlcmZsb3c6IFwiaGlkZGVuXCJ9KX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7b3BlbmVkICYmXG4gICAgICAgICAgICAgIDxUZXh0SW5wdXRcbiAgICAgICAgICAgICAgICBkYXRhU2V0PXt0aGlzLnNlYXJjaFRleHRJbnB1dERhdGFTZXQgfHw9IHtjbGFzczogXCJzZWFyY2gtdGV4dC1pbnB1dFwifX1cbiAgICAgICAgICAgICAgICBvbkNoYW5nZT17dGhpcy50dC5vblNlYXJjaFRleHRJbnB1dENoYW5nZWREZWJvdW5jZWR9XG4gICAgICAgICAgICAgICAgb25DaGFuZ2VUZXh0PXt0aGlzLnR0Lm9uQ2hhbmdlU2VhcmNoVGV4dH1cbiAgICAgICAgICAgICAgICBwbGFjZWhvbGRlcj17dGhpcy50cmFuc2xhdGUoXCIuc2VhcmNoX2RvdF9kb3RfZG90XCIpfVxuICAgICAgICAgICAgICAgIHJlZj17dGhpcy50dC5zZWFyY2hUZXh0SW5wdXRSZWZ9XG4gICAgICAgICAgICAgICAgc3R5bGU9e3RoaXMuc3R5bGluZ0ZvcihcInNlYXJjaFRleHRJbnB1dFwiLCB0aGlzLnNlYXJjaFRleHRJbnB1dFN0eWxlIHx8PSB7XG4gICAgICAgICAgICAgICAgICB3aWR0aDogXCIxMDAlXCIsXG4gICAgICAgICAgICAgICAgICBib3JkZXI6IDAsXG4gICAgICAgICAgICAgICAgICBvdXRsaW5lOiBcIm5vbmVcIixcbiAgICAgICAgICAgICAgICAgIHBhZGRpbmc6IDBcbiAgICAgICAgICAgICAgICB9KX1cbiAgICAgICAgICAgICAgICB2YWx1ZT17dGhpcy5zdGF0ZS5zZWFyY2hUZXh0fVxuICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgeyFvcGVuZWQgJiZcbiAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICB7Y3VycmVudE9wdGlvbnMubGVuZ3RoID09IDAgJiZcbiAgICAgICAgICAgICAgICAgIDxUZXh0IG51bWJlck9mTGluZXM9ezF9IHN0eWxlPXt0aGlzLnN0eWxpbmdGb3IoXCJub3RoaW5nU2VsZWN0ZWRcIiwgdGhpcy5ub3RoaW5nU2VsZWN0ZWRTdHlsZSB8fD0ge2NvbG9yOiBcImdyZXlcIn0pfT5cbiAgICAgICAgICAgICAgICAgICAge3BsYWNlaG9sZGVyIHx8IHRoaXMudHJhbnNsYXRlKFwiLm5vdGhpbmdfc2VsZWN0ZWRcIil9XG4gICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHtjdXJyZW50T3B0aW9ucy5sZW5ndGggPT0gMCAmJiBQbGF0Zm9ybS5PUyA9PSBcIndlYlwiICYmXG4gICAgICAgICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICAgICAgaWQ9e2lkRm9yQ29tcG9uZW50KHRoaXMpfVxuICAgICAgICAgICAgICAgICAgICBuYW1lPXtuYW1lRm9yQ29tcG9uZW50V2l0aE11bHRpcGxlKHRoaXMpfVxuICAgICAgICAgICAgICAgICAgICB0eXBlPVwiaGlkZGVuXCJcbiAgICAgICAgICAgICAgICAgICAgdmFsdWU9XCJcIlxuICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAge2N1cnJlbnRPcHRpb25zLm1hcCgoY3VycmVudE9wdGlvbikgPT5cbiAgICAgICAgICAgICAgICAgIDxWaWV3XG4gICAgICAgICAgICAgICAgICAgIGRhdGFTZXQ9e3RoaXMuY3VycmVudE9wdGlvbkRhdGFTZXQgfHw9IHtjbGFzczogXCJjdXJyZW50LW9wdGlvblwifX1cbiAgICAgICAgICAgICAgICAgICAga2V5PXtjdXJyZW50T3B0aW9uLmtleSB8fCBgY3VycmVudC12YWx1ZS0ke2N1cnJlbnRPcHRpb24udmFsdWV9YH1cbiAgICAgICAgICAgICAgICAgICAgc3R5bGU9e3RoaXMuc3R5bGluZ0ZvcihcImN1cnJlbnRPcHRpb25cIiwge21hcmdpblJpZ2h0OiA2fSl9XG4gICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIHtjdXJyZW50T3B0aW9uLnR5cGUgPT0gXCJncm91cFwiICYmXG4gICAgICAgICAgICAgICAgICAgICAgPFZpZXcgc3R5bGU9e3RoaXMuc3R5bGluZ0ZvcihcImN1cnJlbnRPcHRpb25Hcm91cFwiLCB0aGlzLmN1cnJlbnRPcHRpb25Hcm91cFN0eWxlIHx8PSB7Zm9udFdlaWdodDogXCJib2xkXCJ9KX0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8VGV4dCBzdHlsZT17dGhpcy5zdHlsaW5nRm9yKFwiY3VycmVudE9wdGlvbkdyb3VwVGV4dFwiKX0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHtjdXJyZW50T3B0aW9uLnRleHR9XG4gICAgICAgICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgICAgICAgPC9WaWV3PlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHtjdXJyZW50T3B0aW9uLnR5cGUgIT0gXCJncm91cFwiICYmXG4gICAgICAgICAgICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtQbGF0Zm9ybS5PUyA9PSBcIndlYlwiICYmIG5hbWVGb3JDb21wb25lbnRXaXRoTXVsdGlwbGUodGhpcykgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQ9e2lkRm9yQ29tcG9uZW50KHRoaXMpfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU9e25hbWVGb3JDb21wb25lbnRXaXRoTXVsdGlwbGUodGhpcyl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cImhpZGRlblwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2RpZ2coY3VycmVudE9wdGlvbiwgXCJ2YWx1ZVwiKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHt0aGlzLnByZXNlbnRPcHRpb24oY3VycmVudE9wdGlvbiwgXCJjdXJyZW50XCIpfVxuICAgICAgICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICA8L1ZpZXc+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgPC8+XG4gICAgICAgICAgICB9XG4gICAgICAgICAgPC9WaWV3PlxuICAgICAgICAgIDxWaWV3XG4gICAgICAgICAgICBkYXRhU2V0PXt0aGlzLmNoZXZyb25Db250YWluZXJEYXRhU2V0IHx8PSB7Y2xhc3M6IFwiY2hldnJvbi1jb250YWluZXJcIn19XG4gICAgICAgICAgICBzdHlsZT17dGhpcy5zdHlsaW5nRm9yKFwiY2hldnJvbkNvbnRhaW5lclwiLCB0aGlzLmNoZXZyb25Db250YWluZXJTdHlsZSB8fD0ge1xuICAgICAgICAgICAgICBhbGlnbkl0ZW1zOiBcImNlbnRlclwiLFxuICAgICAgICAgICAgICBqdXN0aWZ5Q29udGVudDogXCJjZW50ZXJcIixcbiAgICAgICAgICAgICAgaGVpZ2h0OiBcIjEwMCVcIixcbiAgICAgICAgICAgICAgbWFyZ2luTGVmdDogXCJhdXRvXCIsXG4gICAgICAgICAgICAgIG1hcmdpblJpZ2h0OiA4XG4gICAgICAgICAgICB9KX1cbiAgICAgICAgICA+XG4gICAgICAgICAgICA8Rm9udEF3ZXNvbWVJY29uIG5hbWU9e29wZW5lZCA/IFwiY2hldnJvbi11cFwiIDogXCJjaGV2cm9uLWRvd25cIn0gc3R5bGU9e3RoaXMuc3R5bGluZ0ZvcihcImNoZXZyb25cIiwgdGhpcy5jaGV2cm9uU3R5bGUgfHw9IHtmb250U2l6ZTogMTJ9KX0gLz5cbiAgICAgICAgICA8L1ZpZXc+XG4gICAgICAgIDwvUHJlc3NhYmxlPlxuICAgICAgICA8Vmlld1xuICAgICAgICAgIGRhdGFTZXQ9e3RoaXMuZW5kT2ZTZWxlY3REYXRhU2V0IHx8PSB7Y2xhc3M6IFwiZW5kLW9mLXNlbGVjdFwifX1cbiAgICAgICAgICBvbkxheW91dD17dGhpcy50dC5vbkVuZE9mU2VsZWN0TGF5b3V0fVxuICAgICAgICAgIHJlZj17ZW5kT2ZTZWxlY3RSZWZ9XG4gICAgICAgIC8+XG4gICAgICAgIHtvcGVuZWQgJiYgdGhpcy5wLm9wdGlvbnNQb3J0YWwgJiZcbiAgICAgICAgICA8UG9ydGFsPlxuICAgICAgICAgICAge3RoaXMub3B0aW9uc0NvbnRhaW5lcigpfVxuICAgICAgICAgIDwvUG9ydGFsPlxuICAgICAgICB9XG4gICAgICAgIHtvcGVuZWQgJiYgIXRoaXMucC5vcHRpb25zUG9ydGFsICYmXG4gICAgICAgICAgPFZpZXc+XG4gICAgICAgICAgICB7dGhpcy5vcHRpb25zQ29udGFpbmVyKCl9XG4gICAgICAgICAgPC9WaWV3PlxuICAgICAgICB9XG4gICAgICA8L1ZpZXc+XG4gICAgKVxuICB9XG5cbiAgZGVmYXVsdFZhbHVlcyAoKSB7XG4gICAgY29uc3Qge2F0dHJpYnV0ZSwgZGVmYXVsdFZhbHVlLCBkZWZhdWx0VmFsdWVzLCBkZWZhdWx0VmFsdWVzRnJvbU9wdGlvbnMsIG1vZGVsfSA9IHRoaXMucHJvcHNcblxuICAgIGlmIChkZWZhdWx0VmFsdWVzRnJvbU9wdGlvbnMpIHJldHVybiBkZWZhdWx0VmFsdWVzRnJvbU9wdGlvbnNcbiAgICBpZiAoZGVmYXVsdFZhbHVlKSByZXR1cm4gZGVmYXVsdFZhbHVlXG4gICAgaWYgKGRlZmF1bHRWYWx1ZXMpIHJldHVybiBkZWZhdWx0VmFsdWVzXG5cbiAgICBpZiAoYXR0cmlidXRlICYmIG1vZGVsKSB7XG4gICAgICBpZiAoIShhdHRyaWJ1dGUgaW4gbW9kZWwpKSB0aHJvdyBuZXcgRXJyb3IoYE5vIHN1Y2ggYXR0cmlidXRlIG9uICR7bW9kZWwubW9kZWxDbGFzc0RhdGEoKS5uYW1lfTogJHthdHRyaWJ1dGV9YClcblxuICAgICAgcmV0dXJuIG1vZGVsW2F0dHJpYnV0ZV0oKVxuICAgIH1cbiAgfVxuXG4gIGlzQWN0aXZlKCkge1xuICAgIGlmICh0aGlzLnR0LmVuZE9mU2VsZWN0UmVmLmN1cnJlbnQpIHtcbiAgICAgIHJldHVybiB0cnVlXG4gICAgfVxuXG4gICAgcmV0dXJuIGZhbHNlXG4gIH1cblxuICBhc3luYyBsb2FkRGVmYXVsdFZhbHVlc0Zyb21PcHRpb25zQ2FsbGJhY2soKSB7XG4gICAgY29uc3QgZGVmYXVsdFZhbHVlcyA9IHRoaXMuZGVmYXVsdFZhbHVlcygpXG5cbiAgICBpZiAoIWRlZmF1bHRWYWx1ZXMpIHJldHVyblxuXG4gICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgdGhpcy5wcm9wcy5vcHRpb25zKHtcbiAgICAgIHNlYXJjaFZhbHVlOiB0aGlzLnMuc2VhcmNoVGV4dCxcbiAgICAgIHZhbHVlczogZGVmYXVsdFZhbHVlc1xuICAgIH0pXG5cbiAgICB0aGlzLnNldFN0YXRlKHtjdXJyZW50T3B0aW9uczogdGhpcy5zdGF0ZS5jdXJyZW50T3B0aW9ucy5jb25jYXQocmVzdWx0KX0pXG4gIH1cblxuICBsb2FkT3B0aW9ucyA9IGFzeW5jICgpID0+IHtcbiAgICBjb25zdCB7b3B0aW9uc30gPSB0aGlzLnBcbiAgICBjb25zdCBzZWFyY2hWYWx1ZSA9IHRoaXMucy5zZWFyY2hUZXh0XG5cbiAgICBpZiAoQXJyYXkuaXNBcnJheShvcHRpb25zKSkge1xuICAgICAgcmV0dXJuIHRoaXMubG9hZE9wdGlvbnNGcm9tQXJyYXkob3B0aW9ucywgc2VhcmNoVmFsdWUpXG4gICAgfVxuXG4gICAgY29uc3QgbG9hZGVkT3B0aW9ucyA9IGF3YWl0IG9wdGlvbnMoe3NlYXJjaFZhbHVlfSlcblxuICAgIHRoaXMuc2V0U3RhdGUoe2xvYWRlZE9wdGlvbnN9KVxuICB9XG5cbiAgaGF5YVNlbGVjdE9wdGlvbih7a2V5LCBsb2FkZWRPcHRpb259KSB7XG4gICAgaWYgKGxvYWRlZE9wdGlvbi50eXBlID09IFwiZ3JvdXBcIikge1xuICAgICAgcmV0dXJuIDxPcHRpb25Hcm91cCBrZXk9e2tleX0gb3B0aW9uPXtsb2FkZWRPcHRpb259IC8+XG4gICAgfVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxPcHRpb25cbiAgICAgICAgY3VycmVudE9wdGlvblZhbHVlcz17dGhpcy5nZXRDdXJyZW50T3B0aW9uVmFsdWVzKCl9XG4gICAgICAgIGljb249e3RoaXMuaWNvbkZvck9wdGlvbihsb2FkZWRPcHRpb24pfVxuICAgICAgICBrZXk9e2tleX1cbiAgICAgICAgb3B0aW9uPXtsb2FkZWRPcHRpb259XG4gICAgICAgIG9uT3B0aW9uQ2xpY2tlZD17dGhpcy50dC5vbk9wdGlvbkNsaWNrZWR9XG4gICAgICAgIHByZXNlbnRPcHRpb249e3RoaXMudHQucHJlc2VudE9wdGlvbn1cbiAgICAgIC8+XG4gICAgKVxuICB9XG5cbiAgbG9hZE9wdGlvbnNGcm9tQXJyYXkob3B0aW9ucywgc2VhcmNoVmFsdWUpIHtcbiAgICBjb25zdCBsb3dlclNlYXJjaFZhbHVlID0gc2VhcmNoVmFsdWU/LnRvTG93ZXJDYXNlKClcbiAgICBjb25zdCBsb2FkZWRPcHRpb25zID0gb3B0aW9ucy5maWx0ZXIoKHt0ZXh0fSkgPT4gIWxvd2VyU2VhcmNoVmFsdWUgfHwgdGV4dD8udG9Mb3dlckNhc2UoKT8uaW5jbHVkZXMobG93ZXJTZWFyY2hWYWx1ZSkpXG5cbiAgICB0aGlzLnNldFN0YXRlKHtsb2FkZWRPcHRpb25zfSlcbiAgfVxuXG4gIG9uRGltZW5zaW9uc0NoYW5nZSA9ICh7d2luZG93fSkgPT4ge1xuICAgIHRoaXMud2luZG93V2lkdGggPSB3aW5kb3cud2lkdGhcbiAgICB0aGlzLndpbmRvd0hlaWdodCA9IHdpbmRvdy5oZWlnaHRcbiAgfVxuXG4gIG9uU2VsZWN0Q29udGFpbmVyTGF5b3V0ID0gKGUpID0+IHRoaXMuc2V0U3RhdGUoe3NlbGVjdENvbnRhaW5lckxheW91dDogT2JqZWN0LmFzc2lnbih7fSwgZGlnZyhlLCBcIm5hdGl2ZUV2ZW50XCIsIFwibGF5b3V0XCIpKX0pXG4gIG9uRW5kT2ZTZWxlY3RMYXlvdXQgPSAoZSkgPT4gdGhpcy5zZXRTdGF0ZSh7ZW5kT2ZTZWxlY3RMYXlvdXQ6IE9iamVjdC5hc3NpZ24oe30sIGRpZ2coZSwgXCJuYXRpdmVFdmVudFwiLCBcImxheW91dFwiKSl9KVxuICBvbk9wdGlvbnNDb250YWluZXJMYXlvdXQgPSAoZSkgPT4gdGhpcy5zZXRTdGF0ZSh7b3B0aW9uc0NvbnRhaW5lckxheW91dDogT2JqZWN0LmFzc2lnbih7fSwgZGlnZyhlLCBcIm5hdGl2ZUV2ZW50XCIsIFwibGF5b3V0XCIpKX0pXG5cbiAgb25TZWxlY3RDbGlja2VkID0gKGUpID0+IHtcbiAgICBlLnByZXZlbnREZWZhdWx0KClcbiAgICBlLnN0b3BQcm9wYWdhdGlvbigpXG5cbiAgICBjb25zdCB7b3BlbmVkfSA9IHRoaXMuc1xuXG4gICAgaWYgKG9wZW5lZCkge1xuICAgICAgdGhpcy5jbG9zZU9wdGlvbnMoKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLm9wZW5PcHRpb25zKClcbiAgICB9XG4gIH1cblxuICBvblNlYXJjaFRleHRJbnB1dENoYW5nZWREZWJvdW5jZWQgPSBkZWJvdW5jZSh0aGlzLnR0LmxvYWRPcHRpb25zLCAyMDApXG5cbiAgY2xvc2VPcHRpb25zKCkge1xuICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgaGVpZ2h0OiBudWxsLFxuICAgICAgbG9hZGVkT3B0aW9uczogdW5kZWZpbmVkLFxuICAgICAgb3BlbmVkOiBmYWxzZSxcbiAgICAgIG9wdGlvbnNDb250YWluZXJMYXlvdXQ6IG51bGxcbiAgICB9KVxuXG4gICAgaWYgKHRoaXMucHJvcHMub25PcHRpb25zQ2xvc2VkKSB7XG4gICAgICB0aGlzLnByb3BzLm9uT3B0aW9uc0Nsb3NlZCh7b3B0aW9uczogdGhpcy5nZXRDdXJyZW50T3B0aW9ucygpfSlcbiAgICB9XG5cbiAgICBpZiAodGhpcy5wLm9uQmx1cikgdGhpcy5wLm9uQmx1cigpXG4gIH1cblxuICBvbkNoYW5nZVNlYXJjaFRleHQgPSAoc2VhcmNoVGV4dCkgPT4gdGhpcy5zZXRTdGF0ZSh7c2VhcmNoVGV4dH0pXG5cbiAgb3Blbk9wdGlvbnMoKSB7XG4gICAgdGhpcy5zZXRPcHRpb25zUG9zaXRpb25CZWxvdygpXG4gICAgdGhpcy5sb2FkT3B0aW9ucygpXG4gICAgdGhpcy5jYWxsT3B0aW9uc1Bvc2l0aW9uQWJvdmVJZk91dHNpZGVTY3JlZW4gPSB0cnVlXG4gICAgdGhpcy5zZXRTdGF0ZShcbiAgICAgIHtcbiAgICAgICAgaGVpZ2h0OiB0aGlzLnMuc2VsZWN0Q29udGFpbmVyTGF5b3V0LmhlaWdodCxcbiAgICAgICAgb3BlbmVkOiB0cnVlLFxuICAgICAgICBzY3JvbGxMZWZ0OiBQbGF0Zm9ybS5PUyA9PSBcIndlYlwiID8gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbExlZnQgOiBudWxsLFxuICAgICAgICBzY3JvbGxUb3A6IFBsYXRmb3JtLk9TID09IFwid2ViXCIgPyBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG9wIDogbnVsbCxcbiAgICAgICAgc2VhcmNoVGV4dDogXCJcIlxuICAgICAgfSxcbiAgICAgICgpID0+IHtcbiAgICAgICAgdGhpcy5mb2N1c1RleHRJbnB1dCgpXG4gICAgICB9XG4gICAgKVxuXG4gICAgaWYgKHRoaXMucC5vbkZvY3VzKSB0aGlzLnAub25Gb2N1cygpXG4gIH1cblxuICBmb2N1c1RleHRJbnB1dCA9ICgpID0+IGRpZ2codGhpcy50dC5zZWFyY2hUZXh0SW5wdXRSZWYsIFwiY3VycmVudFwiKT8uZm9jdXMoKVxuXG4gIHNldE9wdGlvbnNQb3NpdGlvbigpIHtcbiAgICBpZiAoIXRoaXMuaXNBY3RpdmUoKSkge1xuICAgICAgcmV0dXJuIC8vIERlYm91bmNlIGFmdGVyIHVuLW1vdW50IGhhbmRlbGluZy5cbiAgICB9XG5cbiAgICB0aGlzLmNhbGxPcHRpb25zUG9zaXRpb25BYm92ZUlmT3V0c2lkZVNjcmVlbiA9IHRydWVcbiAgICB0aGlzLnNldE9wdGlvbnNQb3NpdGlvbkJlbG93KClcbiAgfVxuXG4gIHNldE9wdGlvbnNQb3NpdGlvbkFib3ZlSWZPdXRzaWRlU2NyZWVuKCkge1xuICAgIGNvbnN0IHt3aW5kb3dIZWlnaHR9ID0gdGhpcy50dFxuICAgIGNvbnN0IHtvcHRpb25zQ29udGFpbmVyTGF5b3V0fSA9IHRoaXMuc1xuICAgIGNvbnN0IG9wdGlvbnNUb3AgPSB0aGlzLnMuZW5kT2ZTZWxlY3RMYXlvdXQudG9wXG4gICAgY29uc3Qgb3B0aW9uc1RvdGFsQm90dG9tUG9zaXRpb24gPSBvcHRpb25zQ29udGFpbmVyTGF5b3V0LmhlaWdodCArIG9wdGlvbnNUb3BcbiAgICBjb25zdCB3aW5kb3dIZWlnaHRXaXRoU2Nyb2xsID0gd2luZG93SGVpZ2h0ICsgdGhpcy5zLnNjcm9sbFRvcFxuXG4gICAgaWYgKHdpbmRvd0hlaWdodFdpdGhTY3JvbGwgPCBvcHRpb25zVG90YWxCb3R0b21Qb3NpdGlvbikge1xuICAgICAgdGhpcy5zZXRPcHRpb25zUG9zaXRpb25BYm92ZSgpXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2V0U3RhdGUoe29wdGlvbnNWaXNpYmlsaXR5OiBcInZpc2libGVcIn0pXG4gICAgfVxuICB9XG5cbiAgc2V0T3B0aW9uc1Bvc2l0aW9uQWJvdmUoKSB7XG4gICAgY29uc3Qge2VuZE9mU2VsZWN0TGF5b3V0fSA9IHRoaXMuc1xuXG4gICAgdGhpcy5zZXRTdGF0ZShcbiAgICAgIHtcbiAgICAgICAgb3BlbmVkOiB0cnVlLFxuICAgICAgICBvcHRpb25zUGxhY2VtZW50OiBcImFib3ZlXCIsXG4gICAgICAgIG9wdGlvbnNWaXNpYmlsaXR5OiBcInZpc2libGVcIixcbiAgICAgICAgb3B0aW9uc1dpZHRoOiBlbmRPZlNlbGVjdExheW91dC53aWR0aFxuICAgICAgfSxcbiAgICAgICgpID0+IHRoaXMuZm9jdXNUZXh0SW5wdXQoKVxuICAgIClcbiAgfVxuXG4gIHNldE9wdGlvbnNQb3NpdGlvbkJlbG93KCkge1xuICAgIHRoaXMuc2V0U3RhdGUoXG4gICAgICB7XG4gICAgICAgIG9wZW5lZDogdHJ1ZSxcbiAgICAgICAgb3B0aW9uc1BsYWNlbWVudDogXCJiZWxvd1wiLFxuICAgICAgICBvcHRpb25zVmlzaWJpbGl0eTogXCJoaWRkZW5cIixcbiAgICAgICAgb3B0aW9uc1dpZHRoOiB0aGlzLnMuZW5kT2ZTZWxlY3RMYXlvdXQud2lkdGhcbiAgICAgIH0sXG4gICAgICAoKSA9PiB0aGlzLmZvY3VzVGV4dElucHV0KClcbiAgICApXG4gIH1cblxuICBvbkFueXRoaW5nUmVzaXplZCA9ICgpID0+IHtcbiAgICBpZiAodGhpcy5zLm9wZW5lZCkge1xuICAgICAgdGhpcy5zZXRPcHRpb25zUG9zaXRpb24oKVxuICAgIH1cbiAgfVxuXG4gIG9uQW55dGhpbmdSZXNpemVkRGVib3VuY2VkID0gZGVib3VuY2UodGhpcy50dC5vbkFueXRoaW5nUmVzaXplZCwgMjUpXG5cbiAgb25Bbnl0aGluZ1Njcm9sbGVkID0gKCkgPT4ge1xuICAgIGlmICh0aGlzLnMub3BlbmVkKSB7XG4gICAgICB0aGlzLnNldFN0YXRlKHtcbiAgICAgICAgc2Nyb2xsTGVmdDogUGxhdGZvcm0uT1MgPT0gXCJ3ZWJcIiA/IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxMZWZ0IDogbnVsbCxcbiAgICAgICAgc2Nyb2xsVG9wOiBQbGF0Zm9ybS5PUyA9PSBcIndlYlwiID8gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbFRvcCA6IG51bGxcbiAgICAgIH0pXG4gICAgICB0aGlzLnNldE9wdGlvbnNQb3NpdGlvbigpXG4gICAgfVxuICB9XG5cbiAgb25Bbnl0aGluZ1Njcm9sbGVkRGVib3VuY2VkID0gZGVib3VuY2UodGhpcy50dC5vbkFueXRoaW5nU2Nyb2xsZWQsIDI1KVxuXG4gIG9uUHJlc3NPdXRzaWRlT3B0aW9ucyA9ICgpID0+IHtcbiAgICAvLyBJZiBvcHRpb25zIGFyZSBvcGVuIGFuZCBhIGNsaWNrIGlzIG1hZGUgb3V0c2lkZSBvZiB0aGUgb3B0aW9ucyBjb250YWluZXJcbiAgICBpZiAodGhpcy5zLm9wZW5lZCkge1xuICAgICAgdGhpcy5jbG9zZU9wdGlvbnMoKVxuICAgIH1cbiAgfVxuXG4gIG9wdGlvbnNDb250YWluZXIoKSB7XG4gICAgY29uc3Qge3NlbGVjdENvbnRhaW5lckxheW91dCwgbG9hZGVkT3B0aW9ucywgZW5kT2ZTZWxlY3RMYXlvdXQsIG9wdGlvbnNDb250YWluZXJMYXlvdXQsIG9wdGlvbnNQbGFjZW1lbnQsIG9wdGlvbnNWaXNpYmlsaXR5fSA9IHRoaXMuc1xuICAgIGxldCBsZWZ0LCB0b3BcblxuICAgIGxldCBzdHlsZSA9IHtcbiAgICAgIHBvc2l0aW9uOiBcImFic29sdXRlXCIsXG4gICAgICB6SW5kZXg6IDk5OTk5LFxuICAgICAgZWxldmF0aW9uOiA5OTk5OSxcbiAgICAgIHZpc2liaWxpdHk6IG9wdGlvbnNWaXNpYmlsaXR5LFxuICAgICAgd2lkdGg6IHRoaXMucC5vcHRpb25zV2lkdGggfHwgdGhpcy5zLm9wdGlvbnNXaWR0aCxcbiAgICAgIGJhY2tncm91bmRDb2xvcjogXCIjZmZmXCIsXG4gICAgICBib3JkZXI6IFwiMXB4IHNvbGlkICM5OTlcIixcbiAgICAgIG1heEhlaWdodDogMzAwLFxuICAgICAgb3ZlcmZsb3dZOiBcImF1dG9cIlxuICAgIH1cblxuICAgIGlmICghdGhpcy5wLm9wdGlvbnNQb3J0YWwpIHtcbiAgICAgIHN0eWxlLnRvcCA9IDBcbiAgICAgIHN0eWxlLmxlZnQgPSAwXG4gICAgfSBlbHNlIGlmICghdGhpcy5wLm9wdGlvbnNBYnNvbHV0ZSkge1xuICAgICAgc3R5bGUubGVmdCA9IDBcbiAgICAgIHN0eWxlLmJvdHRvbSA9IDBcbiAgICB9IGVsc2UgaWYgKG9wdGlvbnNQbGFjZW1lbnQgPT0gXCJiZWxvd1wiKSB7XG4gICAgICBpZiAoUGxhdGZvcm0uT1MgPT0gXCJ3ZWJcIikge1xuICAgICAgICAvLyBvbkxheW91dCB0b3AgdmFsdWUgaXMgc29tZXRpbWVzIG5lZ2F0aXZlIHNvIHVzZSBicm93c2VyIEpTIHRvIGdldCBpdCBpbnN0ZWFkXG4gICAgICAgIHRvcCA9IGRpZ2codGhpcy50dC5lbmRPZlNlbGVjdFJlZi5jdXJyZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLCBcInRvcFwiKSArIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3AgKyAxXG5cbiAgICAgICAgLy8gb25MYXlvdXQgbGVmdCB2YWx1ZXMgZG9lc24ndCBhbHdheXMgdXBkYXRlIHdoZW4gY2hhbmdlZFxuICAgICAgICBsZWZ0ID0gZGlnZyh0aGlzLnR0LmVuZE9mU2VsZWN0UmVmLmN1cnJlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksIFwibGVmdFwiKSArIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxMZWZ0XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsZWZ0ID0gdGhpcy5zLmVuZE9mU2VsZWN0TGF5b3V0LmxlZnRcbiAgICAgICAgdG9wID0gc2VsZWN0Q29udGFpbmVyTGF5b3V0LnRvcFxuICAgICAgfVxuXG4gICAgICBzdHlsZS5sZWZ0ID0gbGVmdFxuICAgICAgc3R5bGUudG9wID0gdG9wIC0gMlxuICAgIH0gZWxzZSBpZiAob3B0aW9uc1BsYWNlbWVudCA9PSBcImFib3ZlXCIpIHtcbiAgICAgIGlmIChQbGF0Zm9ybS5PUyA9PSBcIndlYlwiKSB7XG4gICAgICAgIC8vIG9uTGF5b3V0IHRvcCB2YWx1ZSBpcyBzb21ldGltZXMgbmVnYXRpdmUgc28gdXNlIGJyb3dzZXIgSlMgdG8gZ2V0IGl0IGluc3RlYWRcbiAgICAgICAgdG9wID0gZGlnZyh0aGlzLnR0LnNlbGVjdENvbnRhaW5lclJlZi5jdXJyZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLCBcInRvcFwiKSArIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxUb3BcblxuICAgICAgICAvLyBvbkxheW91dCBsZWZ0IHZhbHVlcyBkb2Vzbid0IGFsd2F5cyB1cGRhdGUgd2hlbiBjaGFuZ2VkXG4gICAgICAgIGxlZnQgPSBkaWdnKHRoaXMudHQuc2VsZWN0Q29udGFpbmVyUmVmLmN1cnJlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCksIFwibGVmdFwiKSArIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxMZWZ0XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsZWZ0ID0gZW5kT2ZTZWxlY3RMYXlvdXQubGVmdFxuICAgICAgICB0b3AgPSBzZWxlY3RDb250YWluZXJMYXlvdXQudG9wXG4gICAgICB9XG5cbiAgICAgIHN0eWxlLmxlZnQgPSBsZWZ0XG4gICAgICBzdHlsZS50b3AgPSB0b3AgLSBvcHRpb25zQ29udGFpbmVyTGF5b3V0LmhlaWdodCArIDFcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmtvbnduIG9wdGlvbnMgcGxhY2VtZW50OiAke29wdGlvbnNQbGFjZW1lbnR9YClcbiAgICB9XG5cbiAgICBzdHlsZSA9IHRoaXMuc3R5bGluZ0ZvcihcIm9wdGlvbnNDb250YWluZXJcIiwgc3R5bGUsIFtsZWZ0LCB0b3AsIHN0eWxlLnZpc2liaWxpdHksIHN0eWxlLndpZHRoXSlcblxuICAgIGNvbnN0IGlkID0gaWRGb3JDb21wb25lbnQodGhpcylcblxuICAgIHJldHVybiAoXG4gICAgICA8Vmlld1xuICAgICAgICBkYXRhU2V0PXt0aGlzLmNhY2hlKFwib3B0aW9uc0NvbnRhaW5lckRhdGFTZXRcIiwge2NsYXNzOiBcIm9wdGlvbnMtY29udGFpbmVyXCIsIGlkLCByb2xlOiBcImRpYWxvZ1wifSwgW2lkXSl9XG4gICAgICAgIG9uTGF5b3V0PXt0aGlzLnR0Lm9uT3B0aW9uc0NvbnRhaW5lckxheW91dH1cbiAgICAgICAgcmVmPXt0aGlzLnR0Lm9wdGlvbnNDb250YWluZXJSZWZ9XG4gICAgICAgIHN0eWxlPXtzdHlsZX1cbiAgICAgID5cbiAgICAgICAge2xvYWRlZE9wdGlvbnM/Lm1hcCgobG9hZGVkT3B0aW9uKSA9PlxuICAgICAgICAgIHRoaXMuaGF5YVNlbGVjdE9wdGlvbih7XG4gICAgICAgICAgICBrZXk6IGxvYWRlZE9wdGlvbi5rZXkgfHwgYGxvYWRlZC1vcHRpb24tJHtsb2FkZWRPcHRpb24udmFsdWV9YCxcbiAgICAgICAgICAgIGxvYWRlZE9wdGlvblxuICAgICAgICAgIH0pXG4gICAgICAgICl9XG4gICAgICAgIHtsb2FkZWRPcHRpb25zPy5sZW5ndGggPT09IDAgJiZcbiAgICAgICAgICA8VmlldyBkYXRhU2V0PXt0aGlzLm5vT3B0aW9uc0NvbnRhaW5lckRhdGFTZXQgfHw9IHtjbGFzczogXCJuby1vcHRpb25zLWNvbnRhaW5lclwifX0+XG4gICAgICAgICAgICA8VGV4dD57dGhpcy5wLm5vT3B0aW9uc1RleHQgPyB0aGlzLnAubm9PcHRpb25zVGV4dCgpIDogdGhpcy50cmFuc2xhdGUoXCIubm9fb3B0aW9uc19mb3VuZFwiKX08L1RleHQ+XG4gICAgICAgICAgPC9WaWV3PlxuICAgICAgICB9XG4gICAgICA8L1ZpZXc+XG4gICAgKVxuICB9XG5cbiAgb25PcHRpb25DbGlja2VkID0gKGV2ZW50LCBsb2FkZWRPcHRpb24pID0+IHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKClcblxuICAgIGNvbnN0IHtvbkNoYW5nZSwgdG9nZ2xlT3B0aW9uc30gPSB0aGlzLnByb3BzXG4gICAgY29uc3Qge211bHRpcGxlfSA9IHRoaXMucFxuICAgIGNvbnN0IGN1cnJlbnRPcHRpb25zID0gdGhpcy5nZXRDdXJyZW50T3B0aW9ucygpXG4gICAgY29uc3QgdG9nZ2xlZCA9IHRoaXMuZ2V0VG9nZ2xlZCgpXG4gICAgY29uc3QgbmV3U3RhdGUgPSB7fVxuICAgIGNvbnN0IGV4aXN0aW5nT3B0aW9uID0gY3VycmVudE9wdGlvbnMuZmluZCgoY3VycmVudE9wdGlvbikgPT4gY3VycmVudE9wdGlvbi52YWx1ZSA9PSBsb2FkZWRPcHRpb24udmFsdWUpXG4gICAgY29uc3QgbmV3VG9nZ2xlZCA9IHsuLi50b2dnbGVkfVxuICAgIGxldCBuZXdDdXJyZW50T3B0aW9uc1xuXG4gICAgaWYgKGV4aXN0aW5nT3B0aW9uKSB7XG4gICAgICBpZiAodG9nZ2xlT3B0aW9ucykge1xuICAgICAgICBjb25zdCBjdXJyZW50VG9nZ2xlID0gdG9nZ2xlZFtsb2FkZWRPcHRpb24udmFsdWVdXG4gICAgICAgIGNvbnN0IGN1cnJlbnRJbmRleCA9IHRvZ2dsZU9wdGlvbnMuZmluZEluZGV4KChlbGVtZW50KSA9PiBlbGVtZW50LnZhbHVlID09IGN1cnJlbnRUb2dnbGUpXG5cbiAgICAgICAgaWYgKGN1cnJlbnRJbmRleCA+PSAodG9nZ2xlT3B0aW9ucy5sZW5ndGggLSAxKSkge1xuICAgICAgICAgIC8vIE5vIG5leHQgdG9nZ2xlZCAtIHJlbW92ZSB0b2dnbGVkIGFuZCBvcHRpb25cbiAgICAgICAgICBkZWxldGUgbmV3VG9nZ2xlZFtsb2FkZWRPcHRpb24udmFsdWVdXG5cbiAgICAgICAgICBuZXdDdXJyZW50T3B0aW9ucyA9IGN1cnJlbnRPcHRpb25zLmZpbHRlcigoY3VycmVudE9wdGlvbikgPT4gY3VycmVudE9wdGlvbi52YWx1ZSAhPSBsb2FkZWRPcHRpb24udmFsdWUpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gQWxyZWFkeSB0b2dnbGVkIC0gc2V0IHRvIG5leHQgdG9nZ2xlXG4gICAgICAgICAgbmV3VG9nZ2xlZFtsb2FkZWRPcHRpb24udmFsdWVdID0gZGlnZyh0b2dnbGVPcHRpb25zLCBjdXJyZW50SW5kZXggKyAxLCBcInZhbHVlXCIpXG4gICAgICAgIH1cblxuICAgICAgICBuZXdTdGF0ZS50b2dnbGVkID0gbmV3VG9nZ2xlZFxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gUmVtb3ZlIGZyb20gY3VycmVudCBvcHRpb25zXG4gICAgICAgIG5ld0N1cnJlbnRPcHRpb25zID0gY3VycmVudE9wdGlvbnMuZmlsdGVyKChjdXJyZW50T3B0aW9uKSA9PiBjdXJyZW50T3B0aW9uLnZhbHVlICE9IGxvYWRlZE9wdGlvbi52YWx1ZSlcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gRG9uJ3QgZG8gYW55dGhpbmcgaWYgdGhlIGNsaWNrZWQgb3B0aW9uIGlzIGRpc2FibGVkXG4gICAgICBpZiAobG9hZGVkT3B0aW9uLmRpc2FibGVkKSByZXR1cm5cblxuICAgICAgaWYgKHRvZ2dsZU9wdGlvbnMpIHtcbiAgICAgICAgLy8gU2V0IGZyZXNoIHRvZ2dsZVxuICAgICAgICBuZXdUb2dnbGVkW2xvYWRlZE9wdGlvbi52YWx1ZV0gPSB0b2dnbGVPcHRpb25zWzBdLnZhbHVlXG4gICAgICAgIG5ld1N0YXRlLnRvZ2dsZWQgPSBuZXdUb2dnbGVkXG4gICAgICB9XG5cbiAgICAgIGlmIChtdWx0aXBsZSB8fCB0b2dnbGVPcHRpb25zKSB7XG4gICAgICAgIG5ld0N1cnJlbnRPcHRpb25zID0gY3VycmVudE9wdGlvbnMuY29uY2F0KFtsb2FkZWRPcHRpb25dKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbmV3Q3VycmVudE9wdGlvbnMgPSBbbG9hZGVkT3B0aW9uXVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChcInZhbHVlc1wiIGluIHRoaXMucHJvcHMgJiYgdGhpcy5wcm9wcy52YWx1ZXMgIT09IHVuZGVmaW5lZCkge1xuICAgICAgLy8gY3VycmVudE9wdGlvbnMgYXJlIGNvbnRyb2xsZWQgYW5kIGEgdXNlTWVtbyBjYWxsYmFjayBpcyBoYW5kZWxpbmcgc2V0dGluZyBjdXJyZW50IG9wdGlvbnMuXG4gICAgfSBlbHNlIGlmIChuZXdDdXJyZW50T3B0aW9ucykge1xuICAgICAgbmV3U3RhdGUuY3VycmVudE9wdGlvbnMgPSBuZXdDdXJyZW50T3B0aW9uc1xuICAgIH1cblxuICAgIGNvbnN0IG9wdGlvbnMgPSBuZXdDdXJyZW50T3B0aW9ucyB8fCBjdXJyZW50T3B0aW9uc1xuXG4gICAgaWYgKG9uQ2hhbmdlKSB7XG4gICAgICBvbkNoYW5nZSh7XG4gICAgICAgIGV2ZW50LFxuICAgICAgICBvcHRpb25zLFxuICAgICAgICB0b2dnbGVzOiBuZXdUb2dnbGVkXG4gICAgICB9KVxuICAgIH1cblxuICAgIGlmICh0aGlzLnByb3BzLm9uQ2hhbmdlVmFsdWUpIHtcbiAgICAgIGxldCBvcHRpb25WYWx1ZVxuXG4gICAgICBpZiAobXVsdGlwbGUpIHtcbiAgICAgICAgb3B0aW9uVmFsdWUgPSBvcHRpb25zLm1hcCgob3B0aW9uKSA9PiBvcHRpb24udmFsdWUpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvcHRpb25WYWx1ZSA9IGRpZyhvcHRpb25zLCAwLCBcInZhbHVlXCIpXG4gICAgICB9XG5cbiAgICAgIHRoaXMucC5vbkNoYW5nZVZhbHVlKG9wdGlvblZhbHVlKVxuICAgIH1cblxuICAgIGlmICghbXVsdGlwbGUpIHRoaXMuY2xvc2VPcHRpb25zKClcbiAgICB0aGlzLnNldFN0YXRlKG5ld1N0YXRlKVxuICB9XG5cbiAgc3R5bGluZ0ZvcihzdHlsaW5nTmFtZSwgc3R5bGUgPSB7fSwgY2FjaGVzID0gW10pIHtcbiAgICBsZXQgY3VzdG9tU3R5bGluZyA9IGRpZyh0aGlzLCBcInByb3BzXCIsIFwic3R5bGVzXCIsIHN0eWxpbmdOYW1lKVxuXG4gICAgaWYgKHR5cGVvZiBjdXN0b21TdHlsaW5nID09IFwiZnVuY3Rpb25cIikgY3VzdG9tU3R5bGluZyA9IGN1c3RvbVN0eWxpbmcoe3N0YXRlOiB0aGlzLnN0YXRlLCBzdHlsZX0pXG5cbiAgICBpZiAoY3VzdG9tU3R5bGluZykge1xuICAgICAgcmV0dXJuIE9iamVjdC5hc3NpZ24oc3R5bGUsIGN1c3RvbVN0eWxpbmcpXG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuY2FjaGUoYHN0eWxpbmdGb3ItJHtzdHlsaW5nTmFtZX1gLCBzdHlsZSwgY2FjaGVzKVxuICB9XG5cbiAgaWNvbkZvck9wdGlvbihvcHRpb24pIHtcbiAgICBjb25zdCB7dG9nZ2xlT3B0aW9uc30gPSB0aGlzLnByb3BzIHx8IHt9XG4gICAgY29uc3QgdG9nZ2xlZCA9IHRoaXMuZ2V0VG9nZ2xlZCgpXG5cbiAgICBpZiAodG9nZ2xlT3B0aW9ucyAmJiAob3B0aW9uLnZhbHVlIGluIHRvZ2dsZWQpKSB7XG4gICAgICBjb25zdCB0b2dnbGVkVmFsdWUgPSB0b2dnbGVkW29wdGlvbi52YWx1ZV1cbiAgICAgIGNvbnN0IHRvZ2dsZWRPcHRpb24gPSB0b2dnbGVPcHRpb25zLmZpbmQoKGVsZW1lbnQpID0+IGVsZW1lbnQudmFsdWUgPT0gdG9nZ2xlZFZhbHVlKVxuXG4gICAgICBpZiAoIXRvZ2dsZWRPcHRpb24pIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBDb3VsZG4ndCBmaW5kIGEgdG9nZ2xlIG9wdGlvbiBmb3IgdmFsdWU6ICR7dG9nZ2xlZFZhbHVlfWApXG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0b2dnbGVkT3B0aW9uLmljb25cbiAgICB9XG4gIH1cblxuICBwcmVzZW50T3B0aW9uID0gKG9wdGlvbiwgbW9kZSkgPT4ge1xuICAgIGNvbnN0IHt0b2dnbGVPcHRpb25zfSA9IHRoaXMucHJvcHMgfHwge31cbiAgICBjb25zdCB0b2dnbGVkID0gdGhpcy5nZXRUb2dnbGVkKClcbiAgICBjb25zdCBpY29uID0gdGhpcy5pY29uRm9yT3B0aW9uKG9wdGlvbilcbiAgICBjb25zdCB0b2dnbGVWYWx1ZSA9IHRvZ2dsZWRbb3B0aW9uLnZhbHVlXVxuICAgIGNvbnN0IHRvZ2dsZU9wdGlvbiA9IHRvZ2dsZU9wdGlvbnM/LmZpbmQoKHRvZ2dsZU9wdGlvbkkpID0+IHRvZ2dsZU9wdGlvbkkudmFsdWUgPT0gdG9nZ2xlVmFsdWUpXG4gICAgbGV0IHN0eWxlXG5cbiAgICBpZiAobW9kZSA9PSBcImN1cnJlbnRcIikge1xuICAgICAgc3R5bGUgPSB0aGlzLnN0eWxpbmdGb3IoXCJjdXJyZW50T3B0aW9uUHJlc2VudGF0aW9uVGV4dFwiLCB7ZmxleDogMSwgd2hpdGVTcGFjZTogXCJub3dyYXBcIn0pXG4gICAgfSBlbHNlIHtcbiAgICAgIHN0eWxlID0gdGhpcy5zdHlsaW5nRm9yKFwib3B0aW9uUHJlc2VudGF0aW9uVGV4dFwiLCB7ZmxleDogMSwgd2hpdGVTcGFjZTogXCJub3dyYXBcIn0pXG4gICAgfVxuXG4gICAgcmV0dXJuIChcbiAgICAgIDxWaWV3XG4gICAgICAgIGRhdGFTZXQ9e3RoaXMuY2FjaGUoXCJwcmVzZW50T3B0aW9uVmlld0RhdGFTZXRcIiwge1xuICAgICAgICAgIHRleHQ6IG9wdGlvbi50ZXh0LFxuICAgICAgICAgIHRvZ2dsZUljb246IHRvZ2dsZU9wdGlvbj8uaWNvbixcbiAgICAgICAgICB0b2dnbGVWYWx1ZTogdG9nZ2xlT3B0aW9uPy52YWx1ZSxcbiAgICAgICAgICB2YWx1ZTogb3B0aW9uLnZhbHVlXG4gICAgICAgIH0sIFtvcHRpb24udGV4dCwgb3B0aW9uLnZhbHVlLCB0b2dnbGVPcHRpb24/Lmljb24sIHRvZ2dsZU9wdGlvbj8udmFsdWVdKX1cbiAgICAgICAgc3R5bGU9e3RoaXMuY2FjaGUoXCJvcHRpb25QcmVzZW50YXRpb25TdHlsZVwiLCB7ZmxleERpcmVjdGlvbjogXCJyb3dcIn0pfVxuICAgICAgICB0ZXN0SUQ9XCJvcHRpb24tcHJlc2VudGF0aW9uXCJcbiAgICAgID5cbiAgICAgICAge3RvZ2dsZU9wdGlvbnMgJiYgIShvcHRpb24udmFsdWUgaW4gdG9nZ2xlZCkgJiZcbiAgICAgICAgICA8Vmlld1xuICAgICAgICAgICAgc3R5bGU9e3RoaXMuY2FjaGUoXCJ0b2dnbGVJY29uUGxhY2Vob2xkZXJTdHlsZVwiLCB7d2lkdGg6IDIwfSl9XG4gICAgICAgICAgICB0ZXN0SUQ9XCJ0b2dnbGUtaWNvbi1wbGFjZWhvbGRlclwiXG4gICAgICAgICAgLz5cbiAgICAgICAgfVxuICAgICAgICB7dG9nZ2xlT3B0aW9ucyAmJiAob3B0aW9uLnZhbHVlIGluIHRvZ2dsZWQpICYmXG4gICAgICAgICAgPFZpZXcgc3R5bGU9e3RoaXMuY2FjaGUoXCJ0b2dnbGVJY29uQ29udGFpbmVyU3R5bGVcIiwge2FsaWduSXRlbXM6IFwiY2VudGVyXCIsIGp1c3RpZnlDb250ZW50OiBcImNlbnRlclwiLCB3aWR0aDogMjB9KX0+XG4gICAgICAgICAgICA8Rm9udEF3ZXNvbWVJY29uXG4gICAgICAgICAgICAgIG5hbWU9e2ljb259XG4gICAgICAgICAgICAgIHRlc3RJRD1cInRvZ2dsZS1pY29uXCJcbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgPC9WaWV3PlxuICAgICAgICB9XG4gICAgICAgIHsoKCkgPT4ge1xuICAgICAgICAgIGlmIChtb2RlID09IFwiY3VycmVudFwiICYmIG9wdGlvbi5jdXJyZW50Q29udGVudCkge1xuICAgICAgICAgICAgcmV0dXJuIG9wdGlvbi5jdXJyZW50Q29udGVudCgpXG4gICAgICAgICAgfSBlbHNlIGlmIChvcHRpb24uY29udGVudCkge1xuICAgICAgICAgICAgcmV0dXJuIG9wdGlvbi5jb250ZW50KClcbiAgICAgICAgICB9IGVsc2UgaWYgKFwiaHRtbFwiIGluIG9wdGlvbiAmJiBQbGF0Zm9ybS5PUyAhPSBcIndlYlwiKSB7XG4gICAgICAgICAgICByZXR1cm4gPFJlbmRlckh0bWwgc291cmNlPXt7aHRtbDogZGlnZyhvcHRpb24sIFwiaHRtbFwiKX19IC8+XG4gICAgICAgICAgfSBlbHNlIGlmIChcImh0bWxcIiBpbiBvcHRpb24gJiYgUGxhdGZvcm0uT1MgPT0gXCJ3ZWJcIikge1xuICAgICAgICAgICAgcmV0dXJuIDxkaXYgZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw9e3tfX2h0bWw6IGRpZ2cob3B0aW9uLCBcImh0bWxcIil9fSAvPlxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgICA8VGV4dFxuICAgICAgICAgICAgICAgIHN0eWxlPXtzdHlsZX1cbiAgICAgICAgICAgICAgICB0ZXN0SUQ9XCJvcHRpb24tcHJlc2VudGF0aW9uLXRleHRcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAge29wdGlvbi50ZXh0fVxuICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICApXG4gICAgICAgICAgfVxuICAgICAgICB9KSgpfVxuICAgICAgPC9WaWV3PlxuICAgIClcbiAgfVxuXG4gIGFzeW5jIHNldEN1cnJlbnRGcm9tR2l2ZW5WYWx1ZXMoKSB7XG4gICAgY29uc3Qge29wdGlvbnMsIHZhbHVlc30gPSB0aGlzLnBcbiAgICBjb25zdCBjdXJyZW50T3B0aW9ucyA9IGF3YWl0IG9wdGlvbnMoe3ZhbHVlc30pXG4gICAgY29uc3QgY3VycmVudFZhbHVlcyA9IGN1cnJlbnRPcHRpb25zPy5tYXAoKGN1cnJlbnRPcHRpb24pID0+IGN1cnJlbnRPcHRpb24udmFsdWUpXG4gICAgY29uc3Qgc3RhdGVWYWx1ZXMgPSB0aGlzLnMuY3VycmVudE9wdGlvbnM/Lm1hcCgoY3VycmVudE9wdGlvbikgPT4gY3VycmVudE9wdGlvbi52YWx1ZSlcblxuICAgIGlmIChhbnl0aGluZ0RpZmZlcmVudChjdXJyZW50VmFsdWVzLCBzdGF0ZVZhbHVlcykpIHtcbiAgICAgIHRoaXMuc2V0U3RhdGUoe2N1cnJlbnRPcHRpb25zfSlcbiAgICB9XG4gIH1cbn0pKVxuIl19
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "haya-select",
3
- "version": "1.0.81",
3
+ "version": "1.0.82",
4
4
  "description": "Just another select component for React Native + Web.",
5
5
  "files": [
6
6
  "build/**"
@@ -37,22 +37,23 @@
37
37
  "diggerize": "^1.0.4",
38
38
  "fetching-object": "^1.0.1",
39
39
  "react-native-render-html": "^6.3.4",
40
- "set-state-compare": "^1.0.61"
40
+ "set-state-compare": "^1.0.64"
41
41
  },
42
42
  "devDependencies": {
43
43
  "@types/react": "~18.3.12",
44
- "expo-module-scripts": "^4.0.2",
45
44
  "expo": "~52.0.48",
45
+ "expo-module-scripts": "^4.0.2",
46
46
  "react": "18.3.1",
47
47
  "react-native": "0.76.9"
48
48
  },
49
49
  "peerDependencies": {
50
+ "@kaspernj/api-maker": "*",
51
+ "conjointment": "*",
50
52
  "expo": "*",
53
+ "outside-eye": "*",
54
+ "prop-types": "*",
51
55
  "react": "*",
52
- "react-native": "*",
53
- "conjointment": "*",
54
- "outside-eye": ">= 0.1.5",
55
- "prop-types": "*"
56
+ "react-native": "*"
56
57
  },
57
58
  "packageManager": "yarn@1.22.22+sha512.a6b2f7906b721bba3d67d4aff083df04dad64c399707841b7acf00f6b133b7ac24255f2652fa22ae3534329dc6180534e98d17432037ff6fd140556e2bb3137e"
58
59
  }