@ultraviolet/ui 1.75.3 → 1.75.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (31) hide show
  1. package/dist/components/Banner/assets/default-image-small.svg.cjs +1 -1
  2. package/dist/components/Banner/assets/default-image-small.svg.js +1 -1
  3. package/dist/components/Banner/assets/default-image.svg.cjs +1 -1
  4. package/dist/components/Banner/assets/default-image.svg.js +1 -1
  5. package/dist/components/Card/index.cjs +2 -2
  6. package/dist/components/Card/index.js +2 -2
  7. package/dist/components/MenuV2/index.cjs +5 -4
  8. package/dist/components/MenuV2/index.d.ts +2 -1
  9. package/dist/components/MenuV2/index.js +5 -4
  10. package/dist/components/Meter/index.cjs +3 -5
  11. package/dist/components/Meter/index.js +3 -5
  12. package/dist/components/Popover/index.cjs +5 -4
  13. package/dist/components/Popover/index.d.ts +2 -1
  14. package/dist/components/Popover/index.js +5 -4
  15. package/dist/components/Popup/helpers.cjs +15 -13
  16. package/dist/components/Popup/helpers.d.ts +3 -1
  17. package/dist/components/Popup/helpers.js +15 -13
  18. package/dist/components/Popup/index.cjs +7 -5
  19. package/dist/components/Popup/index.d.ts +5 -1
  20. package/dist/components/Popup/index.js +7 -5
  21. package/dist/components/SelectInputV2/Dropdown.cjs +25 -14
  22. package/dist/components/SelectInputV2/Dropdown.d.ts +1 -1
  23. package/dist/components/SelectInputV2/Dropdown.js +25 -14
  24. package/dist/components/SelectInputV2/SelectBar.cjs +7 -14
  25. package/dist/components/SelectInputV2/SelectBar.js +7 -14
  26. package/dist/components/SelectInputV2/SelectInputProvider.cjs +1 -1
  27. package/dist/components/SelectInputV2/SelectInputProvider.js +1 -1
  28. package/dist/components/SelectInputV2/index.cjs +3 -3
  29. package/dist/components/SelectInputV2/index.d.ts +1 -1
  30. package/dist/components/SelectInputV2/index.js +3 -3
  31. package/package.json +5 -5
@@ -35,7 +35,7 @@ const StyledPopup = /* @__PURE__ */ _styled__default.default(index.Popup, proces
35
35
  theme
36
36
  }) => theme.space[0], ";margin-bottom:", ({
37
37
  theme
38
- }) => theme.space[10], ";" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL3VsdHJhdmlvbGV0L3VsdHJhdmlvbGV0L3BhY2thZ2VzL3VpL3NyYy9jb21wb25lbnRzL1NlbGVjdElucHV0VjIvRHJvcGRvd24udHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQTJEaUMiLCJmaWxlIjoiL2hvbWUvcnVubmVyL3dvcmsvdWx0cmF2aW9sZXQvdWx0cmF2aW9sZXQvcGFja2FnZXMvdWkvc3JjL2NvbXBvbmVudHMvU2VsZWN0SW5wdXRWMi9Ecm9wZG93bi50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1c2VUaGVtZSB9IGZyb20gJ0BlbW90aW9uL3JlYWN0J1xuaW1wb3J0IHN0eWxlZCBmcm9tICdAZW1vdGlvbi9zdHlsZWQnXG5pbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VNZW1vLCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgdHlwZSB7XG4gIERpc3BhdGNoLFxuICBLZXlib2FyZEV2ZW50LFxuICBSZWFjdE5vZGUsXG4gIFJlZk9iamVjdCxcbiAgU2V0U3RhdGVBY3Rpb24sXG59IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgQ2hlY2tib3ggfSBmcm9tICcuLi9DaGVja2JveCdcbmltcG9ydCB7IFBvcHVwIH0gZnJvbSAnLi4vUG9wdXAnXG5pbXBvcnQgeyBTa2VsZXRvbiB9IGZyb20gJy4uL1NrZWxldG9uJ1xuaW1wb3J0IHsgU3RhY2sgfSBmcm9tICcuLi9TdGFjaydcbmltcG9ydCB7IFRleHQgfSBmcm9tICcuLi9UZXh0J1xuaW1wb3J0IHsgRGlzcGxheU9wdGlvbiB9IGZyb20gJy4vRHJvcGRvd25PcHRpb24nXG5pbXBvcnQgeyBTZWFyY2hCYXJEcm9wZG93biB9IGZyb20gJy4vU2VhcmNoQmFyRHJvcGRvd24nXG5pbXBvcnQgeyB1c2VTZWxlY3RJbnB1dCB9IGZyb20gJy4vU2VsZWN0SW5wdXRQcm92aWRlcidcbmltcG9ydCB7IHR5cGUgRGF0YVR5cGUsIElOUFVUX1NJWkVfSEVJR0hULCB0eXBlIE9wdGlvblR5cGUgfSBmcm9tICcuL3R5cGVzJ1xuXG5jb25zdCBEUk9QRE9XTl9NQVhfSEVJR0hUID0gMjU2XG5cbmV4cG9ydCB0eXBlIERyb3Bkb3duUHJvcHMgPSB7XG4gIGNoaWxkcmVuOiBSZWFjdE5vZGVcbiAgZW1wdHlTdGF0ZTogUmVhY3ROb2RlXG4gIGRlc2NyaXB0aW9uRGlyZWN0aW9uOiAncm93JyB8ICdjb2x1bW4nXG4gIHNlYXJjaGFibGU6IGJvb2xlYW5cbiAgcGxhY2Vob2xkZXI6IHN0cmluZ1xuICBmb290ZXI/OiBSZWFjdE5vZGVcbiAgcmVmU2VsZWN0OiBSZWZPYmplY3Q8SFRNTERpdkVsZW1lbnQ+XG4gIGxvYWRNb3JlPzogUmVhY3ROb2RlXG4gIG9wdGlvbmFsSW5mb1BsYWNlbWVudDogJ2xlZnQnIHwgJ3JpZ2h0J1xuICBpc0xvYWRpbmc/OiBib29sZWFuXG4gIHNpemU6ICdzbWFsbCcgfCAnbWVkaXVtJyB8ICdsYXJnZSdcbn1cblxuZXhwb3J0IHR5cGUgQ3JlYXRlRHJvcGRvd25Qcm9wcyA9IHtcbiAgaXNFbXB0eTogYm9vbGVhblxuICBlbXB0eVN0YXRlOiBSZWFjdE5vZGVcbiAgZGVzY3JpcHRpb25EaXJlY3Rpb246ICdyb3cnIHwgJ2NvbHVtbidcbiAgbG9hZE1vcmU/OiBSZWFjdE5vZGVcbiAgb3B0aW9uYWxJbmZvUGxhY2VtZW50OiAnbGVmdCcgfCAncmlnaHQnXG4gIGRlZmF1bHRTZWFyY2hWYWx1ZTogc3RyaW5nIHwgbnVsbFxuICBpc0xvYWRpbmc/OiBib29sZWFuXG59XG5cbmNvbnN0IE5PTl9TRUFSQ0hBQkxFX0tFWVMgPSBbXG4gICdUYWInLFxuICAnICcsXG4gICdFbnRlcicsXG4gICdDYXBzTG9jaycsXG4gICdTaGlmdCcsXG4gICdBcnJvd0Rvd24nLFxuICAnQXJyb3dVcCcsXG4gICdBcnJvd0xlZnQnLFxuICAnQXJyb3dSaWdodCcsXG4gICdFc2NhcGUnLFxuXVxuXG5jb25zdCBTdHlsZWRQb3B1cCA9IHN0eWxlZChQb3B1cClgXG4gIHdpZHRoOiAxMDAlO1xuICBtaW4td2lkdGg6IDMyMHB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5vdGhlci5lbGV2YXRpb24uYmFja2dyb3VuZC5yYWlzZWR9O1xuICBjb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMubmV1dHJhbC50ZXh0fTtcbiAgYm94LXNoYWRvdzogJHsoeyB0aGVtZSB9KSA9PiBgJHt0aGVtZS5zaGFkb3dzLnJhaXNlZFswXX0sICR7dGhlbWUuc2hhZG93cy5yYWlzZWRbMV19YH07XG4gIHBhZGRpbmc6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMF19O1xuICBtYXJnaW4tYm90dG9tOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzEwXX07XG5gXG5cbmNvbnN0IERyb3Bkb3duQ29udGFpbmVyID0gc3R5bGVkKFN0YWNrKTx7ICdkYXRhLWdyb3VwZWQnOiBib29sZWFuIH0+YFxuICBtYXgtaGVpZ2h0OiAke0RST1BET1dOX01BWF9IRUlHSFR9cHg7XG4gIG92ZXJmbG93LXk6IHNjcm9sbDtcbiAgcGFkZGluZzogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVswXX07XG4gIHBhZGRpbmctYm90dG9tOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzAuNV19O1xuICBwYWRkaW5nLXRvcDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVswLjVdfTtcblxuICAmW2RhdGEtZ3JvdXBlZD1cInRydWVcIl0ge1xuICAgIHBhZGRpbmctdG9wOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzBdfTtcbiAgfVxuYFxuY29uc3QgRHJvcGRvd25Hcm91cCA9IHN0eWxlZC5idXR0b248eyAnZGF0YS1zZWxlY3Rncm91cCc6IGJvb2xlYW4gfT5gXG4gIGRpc3BsYXk6IGZsZXg7XG4gIHdpZHRoOiAxMDAlO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGxlZnQ7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGJvcmRlcjogbm9uZTtcbiAgYmFja2dyb3VuZC1jb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMubmV1dHJhbC5iYWNrZ3JvdW5kV2Vha307XG4gIHBvc2l0aW9uOiBzdGlja3k7XG4gIHRvcDogMHB4O1xuICBwYWRkaW5nLXJpZ2h0OiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzJdfTtcbiAgcGFkZGluZy1sZWZ0OiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzJdfTtcbiAgaGVpZ2h0OiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzRdfTtcbiAgdGV4dC1hbGlnbjogbGVmdDtcbiAgbWFyZ2luLWJvdHRvbTogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsnMC4yNSddfTtcblxuICAmOmZvY3VzIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5uZXV0cmFsLmJhY2tncm91bmRXZWFrfTtcbiAgICBvdXRsaW5lOiBub25lO1xuICB9XG5cbiAgJltkYXRhLXNlbGVjdGdyb3VwPSd0cnVlJ10ge1xuICAgIHBhZGRpbmctbGVmdDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsyXX07XG4gICAgYm9yZGVyLWxlZnQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMC41XX0gc29saWQgJHsoeyB0aGVtZSB9KSA9PlxuICAgICAgdGhlbWUuY29sb3JzLm5ldXRyYWwuYmFja2dyb3VuZFdlYWt9O1xuICB9XG5cbiAgJltkYXRhLXNlbGVjdGdyb3VwPSd0cnVlJ106Zm9jdXMge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwuYmFja2dyb3VuZEhvdmVyfTtcbiAgfVxuYFxuY29uc3QgRHJvcGRvd25Hcm91cFdyYXBwZXIgPSBzdHlsZWQuZGl2YFxuICBwb3NpdGlvbjogc3RpY2t5O1xuICB0b3A6IDBweDtcbmBcbmNvbnN0IERyb3Bkb3duSXRlbSA9IHN0eWxlZC5kaXY8e1xuICAnYXJpYS1zZWxlY3RlZCc6IGJvb2xlYW5cbiAgJ2FyaWEtZGlzYWJsZWQnOiBib29sZWFuXG59PmBcbiAgdGV4dC1hbGlnbjpsZWZ0O1xuICBib3JkZXI6IG5vbmU7XG4gIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm90aGVyLmVsZXZhdGlvbi5iYWNrZ3JvdW5kLnJhaXNlZH07XG5cbiAgcGFkZGluZzogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsnMS41J119ICR7KHsgdGhlbWUgfSkgPT5cbiAgICB0aGVtZS5zcGFjZVsnMiddfSAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWycxLjUnXX0gJHsoeyB0aGVtZSB9KSA9PlxuICAgIHRoZW1lLnNwYWNlWycyJ119O1xuICBtYXJnaW4tbGVmdDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsnMC41J119O1xuICBtYXJnaW4tcmlnaHQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbJzAuNSddfTtcblxuICBjb2xvcjogICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwudGV4dH07XG4gIGJvcmRlci1yYWRpdXM6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUucmFkaWkuZGVmYXVsdH07XG5cbiAgJjpob3ZlciwgOmZvY3VzIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5wcmltYXJ5LmJhY2tncm91bmR9O1xuICAgIGNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5wcmltYXJ5LnRleHR9O1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBvdXRsaW5lOiBub25lO1xuICB9XG5cbiAgJlthcmlhLXNlbGVjdGVkPSd0cnVlJ10ge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLnByaW1hcnkuYmFja2dyb3VuZH07XG4gIH1cblxuICAmW2FyaWEtZGlzYWJsZWQ9XCJ0cnVlXCJdIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5uZXV0cmFsLmJhY2tncm91bmREaXNhYmxlZH07XG4gICAgY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwudGV4dERpc2FibGVkfTtcbiAgfVxuXG4gICZbYXJpYS1kaXNhYmxlZD1cInRydWVcIl06aG92ZXIsIFthcmlhLWRpc2FibGVkPVwidHJ1ZVwiXTpmb2N1cyB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHsoeyB0aGVtZSB9KSA9PlxuICAgICAgdGhlbWUuY29sb3JzLm5ldXRyYWwuYmFja2dyb3VuZFN0cm9uZ0Rpc2FibGVkfTtcbiAgICBjb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMubmV1dHJhbC50ZXh0U3Ryb25nRGlzYWJsZWR9O1xuICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgfVxuYFxuXG5jb25zdCBQb3B1cEZvb3RlciA9IHN0eWxlZC5kaXZgXG4gIHdpZHRoOiAxMDAlO1xuICBwYWRkaW5nOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzEuNV19ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMl19XG4gICAgJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsxLjVdfSAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzJdfTtcbiAgYm94LXNoYWRvdzogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zaGFkb3dzLmRyb3Bkb3dufTtcbmBcbmNvbnN0IFN0eWxlZENoZWNrYm94ID0gc3R5bGVkKENoZWNrYm94KWBcbiAgd2lkdGg6IDEwMCU7XG4gIHBvc2l0aW9uOiBzdGF0aWM7XG4gIHRleHQtYWxpZ246IGxlZnQ7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuYCAvLyBwb2ludGVyLWV2ZW50czogbm9uZSBwcmV2ZW50cyBhbnkgZXJyb3Igd2hlbiB1c2luZyB0aGUgY2hlY2tib3ggaW4gYSBmb3JtIHNpbmNlIGl0IGlzIGFuIHVubmFtZWQgaW5wdXRcblxuY29uc3QgRW1wdHlTdGF0ZSA9IHN0eWxlZChTdGFjaylgXG4gIHBhZGRpbmc6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMl19O1xuYFxuY29uc3QgTG9hZE1vcmUgPSBzdHlsZWQoU3RhY2spYFxuICBwYWRkaW5nOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzAuNV19O1xuYFxuXG5jb25zdCBtb3ZlRm9jdXNEb3duID0gKCkgPT4ge1xuICBjb25zdCBvcHRpb25zID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcbiAgICAnI2l0ZW1zID4gZGl2W3JvbGU9XCJvcHRpb25cIl06bm90KFtkaXNhYmxlZF0pJyxcbiAgKVxuICBjb25zdCBhY3RpdmVJdGVtID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudFxuICBpZiAob3B0aW9ucykge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgb3B0aW9ucz8ubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgIGNvbnN0IGxpc3RMZW5ndGggPSBvcHRpb25zLmxlbmd0aFxuICAgICAgaWYgKGFjdGl2ZUl0ZW0gPT09IG9wdGlvbnNbaV0gJiYgYWN0aXZlSXRlbSAhPT0gb3B0aW9uc1tsaXN0TGVuZ3RoIC0gMV0pIHtcbiAgICAgICAgOyhvcHRpb25zW2kgKyAxXSBhcyBIVE1MRWxlbWVudCkuZm9jdXMoKVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuY29uc3QgbW92ZUZvY3VzVXAgPSAoKSA9PiB7XG4gIGNvbnN0IG9wdGlvbnMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFxuICAgICcjaXRlbXMgPiBkaXZbcm9sZT1cIm9wdGlvblwiXTpub3QoW2Rpc2FibGVkXSknLFxuICApXG4gIGNvbnN0IGFjdGl2ZUl0ZW0gPSBkb2N1bWVudC5hY3RpdmVFbGVtZW50XG5cbiAgaWYgKG9wdGlvbnMpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG9wdGlvbnMubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgIGlmIChhY3RpdmVJdGVtID09PSBvcHRpb25zW2ldICYmIGFjdGl2ZUl0ZW0gIT09IG9wdGlvbnNbMF0pIHtcbiAgICAgICAgOyhvcHRpb25zW2kgLSAxXSBhcyBIVE1MRWxlbWVudCkuZm9jdXMoKVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuY29uc3QgaGFuZGxlS2V5RG93blNlbGVjdCA9IChldmVudDogS2V5Ym9hcmRFdmVudDxIVE1MRGl2RWxlbWVudD4pID0+IHtcbiAgaWYgKGV2ZW50LmtleSA9PT0gJ0Fycm93RG93bicpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgbW92ZUZvY3VzRG93bigpXG4gIH1cblxuICBpZiAoZXZlbnQua2V5ID09PSAnQXJyb3dVcCcpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgbW92ZUZvY3VzVXAoKVxuICB9XG59XG5jb25zdCBoYW5kbGVDbGlja091dHNpZGUgPSAoXG4gIGV2ZW50OiBNb3VzZUV2ZW50LFxuICByZWY6IFJlZk9iamVjdDxIVE1MRGl2RWxlbWVudD4sXG4gIHNldElzRHJvcGRvd25WaXNpYmlsZTogRGlzcGF0Y2g8U2V0U3RhdGVBY3Rpb248Ym9vbGVhbj4+LFxuICByZWZTZWxlY3Q6IFJlZk9iamVjdDxIVE1MRGl2RWxlbWVudD4sXG4gIG9uU2VhcmNoOiBEaXNwYXRjaDxTZXRTdGF0ZUFjdGlvbjxEYXRhVHlwZT4+LFxuICBvcHRpb25zOiBEYXRhVHlwZSxcbikgPT4ge1xuICBpZiAoXG4gICAgcmVmLmN1cnJlbnQgJiZcbiAgICAhcmVmLmN1cnJlbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0IGFzIE5vZGUpICYmXG4gICAgIXJlZlNlbGVjdC5jdXJyZW50Py5jb250YWlucyhldmVudC50YXJnZXQgYXMgTm9kZSlcbiAgKSB7XG4gICAgc2V0SXNEcm9wZG93blZpc2liaWxlKGZhbHNlKSAvLyBoaWRlIGRyb3Bkb3duIHdoZW4gY2xpY2tpbmcgb3V0c2lkZSBvZiB0aGUgZHJvcGRvd25cbiAgICBvblNlYXJjaChvcHRpb25zKSAvLyByZXNldCBkaXNwbGF5ZWQgb3B0aW9ucyB0byBkZWZhdWx0IHdoZW4gZHJvcGRvd24gaXMgaGlkZGVuXG4gIH1cbn1cblxuY29uc3QgaGFuZGxlS2V5RG93biA9IChcbiAgZXZlbnQ6IGdsb2JhbFRoaXMuS2V5Ym9hcmRFdmVudCxcbiAgcmVmOiBSZWZPYmplY3Q8SFRNTERpdkVsZW1lbnQ+LFxuICBvcHRpb25zOiBEYXRhVHlwZSxcbiAgc2VhcmNoQmFyQWN0aXZlOiBib29sZWFuLFxuICBzZXRTZWFyY2g6IERpc3BhdGNoPFNldFN0YXRlQWN0aW9uPHN0cmluZz4+LFxuICBzZXREZWZhdWx0U2VhcmNoOiBEaXNwYXRjaDxTZXRTdGF0ZUFjdGlvbjxzdHJpbmcgfCBudWxsPj4sXG4gIHNlYXJjaDogc3RyaW5nLFxuKSA9PiB7XG4gIC8vIERlYWxzIHdpdGggZGVmYXVsdCBzZWFyY2hcbiAgaWYgKFxuICAgIHJlZi5jdXJyZW50ICYmXG4gICAgIXNlYXJjaEJhckFjdGl2ZSAmJlxuICAgICFOT05fU0VBUkNIQUJMRV9LRVlTLmluY2x1ZGVzKGV2ZW50LmtleSkgJiZcbiAgICBkb2N1bWVudC5hY3RpdmVFbGVtZW50Py5hcmlhTGFiZWwgIT09ICdzZWFyY2gtYmFyJ1xuICApIHtcbiAgICBjb25zdCBjdXJyZW50U2VhcmNoID0gc2VhcmNoICsgZXZlbnQua2V5XG4gICAgc2V0U2VhcmNoKGN1cnJlbnRTZWFyY2gpXG4gICAgcmVmLmN1cnJlbnQuZm9jdXMoKVxuICAgIGlmICghQXJyYXkuaXNBcnJheShvcHRpb25zKSkge1xuICAgICAgY29uc3QgY2xvc2VzdE9wdGlvbnMgPSB7IC4uLm9wdGlvbnMgfVxuICAgICAgT2JqZWN0LmtleXMoY2xvc2VzdE9wdGlvbnMpLm1hcCgoZ3JvdXA6IHN0cmluZykgPT4ge1xuICAgICAgICBjbG9zZXN0T3B0aW9uc1tncm91cF0gPSBjbG9zZXN0T3B0aW9uc1tncm91cF0uZmlsdGVyKG9wdGlvbiA9PlxuICAgICAgICAgIG9wdGlvbi5zZWFyY2hUZXh0XG4gICAgICAgICAgICA/IG9wdGlvbi5zZWFyY2hUZXh0LnRvTG9jYWxlTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChjdXJyZW50U2VhcmNoKVxuICAgICAgICAgICAgOiBvcHRpb24udmFsdWUudG9Mb2NhbGVMb3dlckNhc2UoKS5zdGFydHNXaXRoKGN1cnJlbnRTZWFyY2gpLFxuICAgICAgICApXG5cbiAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgIH0pXG4gICAgICBjb25zdCBjbG9zZXN0T3B0aW9uID0gY2xvc2VzdE9wdGlvbnNbT2JqZWN0LmtleXMoY2xvc2VzdE9wdGlvbnMpWzBdXVswXVxuICAgICAgaWYgKGNsb3Nlc3RPcHRpb24pIHtcbiAgICAgICAgc2V0RGVmYXVsdFNlYXJjaChjbG9zZXN0T3B0aW9uLnNlYXJjaFRleHQgPz8gY2xvc2VzdE9wdGlvbi52YWx1ZSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNldERlZmF1bHRTZWFyY2gobnVsbClcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgY2xvc2VzdE9wdGlvbiA9IFsuLi5vcHRpb25zXS5maWx0ZXIob3B0aW9uID0+XG4gICAgICAgIG9wdGlvbi5zZWFyY2hUZXh0XG4gICAgICAgICAgPyBvcHRpb24uc2VhcmNoVGV4dC50b0xvY2FsZUxvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoY3VycmVudFNlYXJjaClcbiAgICAgICAgICA6IG9wdGlvbi52YWx1ZS50b0xvY2FsZUxvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoY3VycmVudFNlYXJjaCksXG4gICAgICApWzBdXG4gICAgICBpZiAoY2xvc2VzdE9wdGlvbikge1xuICAgICAgICBzZXREZWZhdWx0U2VhcmNoKGNsb3Nlc3RPcHRpb24uc2VhcmNoVGV4dCA/PyBjbG9zZXN0T3B0aW9uLnZhbHVlKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2V0RGVmYXVsdFNlYXJjaChudWxsKVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuY29uc3QgQ3JlYXRlRHJvcGRvd24gPSAoe1xuICBpc0VtcHR5LFxuICBlbXB0eVN0YXRlLFxuICBkZXNjcmlwdGlvbkRpcmVjdGlvbixcbiAgbG9hZE1vcmUsXG4gIG9wdGlvbmFsSW5mb1BsYWNlbWVudCxcbiAgZGVmYXVsdFNlYXJjaFZhbHVlLFxuICBpc0xvYWRpbmcsXG59OiBDcmVhdGVEcm9wZG93blByb3BzKSA9PiB7XG4gIGNvbnN0IHtcbiAgICBzZXRJc0Ryb3Bkb3duVmlzaWJsZSxcbiAgICBvbkNoYW5nZSxcbiAgICBvcHRpb25zLFxuICAgIG11bHRpc2VsZWN0LFxuICAgIHNlbGVjdEFsbCxcbiAgICBzZWxlY3RBbGxHcm91cCxcbiAgICBkaXNwbGF5ZWRPcHRpb25zLFxuICAgIHNldFNlbGVjdGVkRGF0YSxcbiAgICBzZWxlY3RlZERhdGEsXG4gIH0gPSB1c2VTZWxlY3RJbnB1dCgpXG4gIGNvbnN0IGZvY3VzZWRJdGVtUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGRlZmF1bHRTZWFyY2hWYWx1ZSAmJiBmb2N1c2VkSXRlbVJlZj8uY3VycmVudCkge1xuICAgICAgZm9jdXNlZEl0ZW1SZWYuY3VycmVudC5mb2N1cygpXG4gICAgfVxuICB9LCBbZGVmYXVsdFNlYXJjaFZhbHVlXSlcblxuICBpZiAoaXNFbXB0eSkge1xuICAgIHJldHVybiAoXG4gICAgICA8RW1wdHlTdGF0ZSBnYXA9ezJ9IGFsaWduSXRlbXM9XCJjZW50ZXJcIj5cbiAgICAgICAge2VtcHR5U3RhdGUgPz8gKFxuICAgICAgICAgIDxUZXh0IHZhcmlhbnQ9XCJib2R5U3Ryb25nXCIgYXM9XCJwXCI+XG4gICAgICAgICAgICBObyBvcHRpb25zXG4gICAgICAgICAgPC9UZXh0PlxuICAgICAgICApfVxuICAgICAgPC9FbXB0eVN0YXRlPlxuICAgIClcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZUNsaWNrID0gKGNsaWNrZWRPcHRpb246IE9wdGlvblR5cGUsIGdyb3VwPzogc3RyaW5nKSA9PiB7XG4gICAgc2V0U2VsZWN0ZWREYXRhKHsgdHlwZTogJ3NlbGVjdE9wdGlvbicsIGNsaWNrZWRPcHRpb24sIGdyb3VwIH0pXG4gICAgaWYgKG11bHRpc2VsZWN0KSB7XG4gICAgICBpZiAoc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzLmluY2x1ZGVzKGNsaWNrZWRPcHRpb24udmFsdWUpKSB7XG4gICAgICAgIG9uQ2hhbmdlPy4oXG4gICAgICAgICAgc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzLmZpbHRlcihcbiAgICAgICAgICAgIHZhbCA9PiB2YWwgIT09IGNsaWNrZWRPcHRpb24udmFsdWUsXG4gICAgICAgICAgKSxcbiAgICAgICAgKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb25DaGFuZ2U/LihbLi4uc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzLCBjbGlja2VkT3B0aW9uLnZhbHVlXSlcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgb25DaGFuZ2U/LihjbGlja2VkT3B0aW9uLnZhbHVlKVxuICAgIH1cbiAgICBzZXRJc0Ryb3Bkb3duVmlzaWJsZShtdWx0aXNlbGVjdCkgLy8gaGlkZSB0aGUgZHJvcGRvd24gb24gY2xpY2sgd2hlbiBzaW5nbGUgc2VsZWN0IG9ubHlcbiAgfVxuXG4gIGNvbnN0IHNlbGVjdEFsbE9wdGlvbnMgPSAoKSA9PiB7XG4gICAgaWYgKG11bHRpc2VsZWN0KSB7XG4gICAgICBzZXRTZWxlY3RlZERhdGEoeyB0eXBlOiAnc2VsZWN0QWxsJyB9KVxuICAgICAgaWYgKHNlbGVjdGVkRGF0YS5hbGxTZWxlY3RlZCAmJiBvbkNoYW5nZSkge1xuICAgICAgICBvbkNoYW5nZShbXSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGFsbFZhbHVlczogT3B0aW9uVHlwZVtdID0gW11cbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KG9wdGlvbnMpKSB7XG4gICAgICAgICAgT2JqZWN0LmtleXMob3B0aW9ucykubWFwKChncm91cDogc3RyaW5nKSA9PlxuICAgICAgICAgICAgb3B0aW9uc1tncm91cF0ubWFwKG9wdGlvbiA9PiB7XG4gICAgICAgICAgICAgIGlmICghb3B0aW9uLmRpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgYWxsVmFsdWVzLnB1c2gob3B0aW9uKVxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIClcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvcHRpb25zLm1hcChvcHRpb24gPT4gYWxsVmFsdWVzLnB1c2gob3B0aW9uKSlcbiAgICAgICAgfVxuICAgICAgICBvbkNoYW5nZT8uKGFsbFZhbHVlcy5tYXAodmFsdWUgPT4gdmFsdWUudmFsdWUpKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGhhbmRsZVNlbGVjdEdyb3VwID0gKGdyb3VwOiBzdHJpbmcpID0+IHtcbiAgICBpZiAobXVsdGlzZWxlY3QpIHtcbiAgICAgIHNldFNlbGVjdGVkRGF0YSh7IHR5cGU6ICdzZWxlY3RHcm91cCcsIHNlbGVjdGVkR3JvdXA6IGdyb3VwIH0pXG4gICAgICBpZiAoIUFycmF5LmlzQXJyYXkob3B0aW9ucykpIHtcbiAgICAgICAgaWYgKHNlbGVjdGVkRGF0YS5zZWxlY3RlZEdyb3Vwcy5pbmNsdWRlcyhncm91cCkpIHtcbiAgICAgICAgICBjb25zdCBuZXdTZWxlY3RlZFZhbHVlcyA9IFsuLi5zZWxlY3RlZERhdGEuc2VsZWN0ZWRWYWx1ZXNdLmZpbHRlcihcbiAgICAgICAgICAgIHNlbGVjdGVkVmFsdWUgPT5cbiAgICAgICAgICAgICAgIW9wdGlvbnNbZ3JvdXBdLmZpbmQob3B0aW9uID0+IG9wdGlvbi52YWx1ZSA9PT0gc2VsZWN0ZWRWYWx1ZSksXG4gICAgICAgICAgKVxuICAgICAgICAgIG9uQ2hhbmdlPy4obmV3U2VsZWN0ZWRWYWx1ZXMpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgbmV3U2VsZWN0ZWRWYWx1ZXMgPSBbLi4uc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzXVxuXG4gICAgICAgICAgb3B0aW9uc1tncm91cF0ubWFwKG9wdGlvbiA9PlxuICAgICAgICAgICAgbmV3U2VsZWN0ZWRWYWx1ZXMuaW5jbHVkZXMob3B0aW9uLnZhbHVlKSB8fCBvcHRpb24uZGlzYWJsZWRcbiAgICAgICAgICAgICAgPyBudWxsXG4gICAgICAgICAgICAgIDogbmV3U2VsZWN0ZWRWYWx1ZXMucHVzaChvcHRpb24udmFsdWUpLFxuICAgICAgICAgIClcbiAgICAgICAgICBvbkNoYW5nZT8uKG5ld1NlbGVjdGVkVmFsdWVzKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuICFBcnJheS5pc0FycmF5KGRpc3BsYXllZE9wdGlvbnMpID8gKFxuICAgIDxEcm9wZG93bkNvbnRhaW5lclxuICAgICAgcm9sZT1cImxpc3Rib3hcIlxuICAgICAgaWQ9XCJzZWxlY3QtZHJvcGRvd25cIlxuICAgICAgb25LZXlEb3duPXtoYW5kbGVLZXlEb3duU2VsZWN0fVxuICAgICAgZGF0YS1ncm91cGVkXG4gICAgPlxuICAgICAge2lzTG9hZGluZyA/IChcbiAgICAgICAgPFNrZWxldG9uIHZhcmlhbnQ9XCJibG9ja1wiIC8+XG4gICAgICApIDogKFxuICAgICAgICA8PlxuICAgICAgICAgIHtzZWxlY3RBbGwgJiYgbXVsdGlzZWxlY3QgPyAoXG4gICAgICAgICAgICA8U3RhY2sgaWQ9XCJpdGVtc1wiPlxuICAgICAgICAgICAgICA8RHJvcGRvd25JdGVtXG4gICAgICAgICAgICAgICAgYXJpYS1kaXNhYmxlZD17ZmFsc2V9XG4gICAgICAgICAgICAgICAgYXJpYS1zZWxlY3RlZD17c2VsZWN0ZWREYXRhLmFsbFNlbGVjdGVkfVxuICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJzZWxlY3QtYWxsXCJcbiAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD1cInNlbGVjdC1hbGxcIlxuICAgICAgICAgICAgICAgIGlkPVwic2VsZWN0LWFsbFwiXG4gICAgICAgICAgICAgICAgdGFiSW5kZXg9ezB9XG4gICAgICAgICAgICAgICAgcm9sZT1cIm9wdGlvblwiXG4gICAgICAgICAgICAgICAgb25LZXlEb3duPXtldmVudCA9PlxuICAgICAgICAgICAgICAgICAgWycgJywgJ0VudGVyJ10uaW5jbHVkZXMoZXZlbnQua2V5KSA/IHNlbGVjdEFsbE9wdGlvbnMoKSA6IG51bGxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgb25DbGljaz17c2VsZWN0QWxsT3B0aW9uc31cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxTdHlsZWRDaGVja2JveFxuICAgICAgICAgICAgICAgICAgY2hlY2tlZD17c2VsZWN0ZWREYXRhLmFsbFNlbGVjdGVkfVxuICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgdmFsdWU9XCJzZWxlY3QtYWxsXCJcbiAgICAgICAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwic2VsZWN0LWFsbC1jaGVja2JveFwiXG4gICAgICAgICAgICAgICAgICB0YWJJbmRleD17LTF9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPFN0YWNrIGRpcmVjdGlvbj1cImNvbHVtblwiPlxuICAgICAgICAgICAgICAgICAgICA8VGV4dCBhcz1cInNwYW5cIiB2YXJpYW50PVwiYm9keVwiIHBsYWNlbWVudD1cImxlZnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICB7c2VsZWN0QWxsLmxhYmVsfVxuICAgICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgICAgIDxUZXh0XG4gICAgICAgICAgICAgICAgICAgICAgYXM9XCJzcGFuXCJcbiAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50PVwiYm9keVNtYWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICBzZW50aW1lbnQ9XCJuZXV0cmFsXCJcbiAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJsZWZ0XCJcbiAgICAgICAgICAgICAgICAgICAgICBwcm9taW5lbmNlPVwid2Vha1wiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7c2VsZWN0QWxsLmRlc2NyaXB0aW9ufVxuICAgICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgICA8L1N0YWNrPlxuICAgICAgICAgICAgICAgIDwvU3R5bGVkQ2hlY2tib3g+XG4gICAgICAgICAgICAgIDwvRHJvcGRvd25JdGVtPlxuICAgICAgICAgICAgPC9TdGFjaz5cbiAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICB7T2JqZWN0LmtleXMoZGlzcGxheWVkT3B0aW9ucykubWFwKChncm91cCwgaW5kZXgpID0+IChcbiAgICAgICAgICAgIDxTdGFjayBrZXk9e2dyb3VwfSBnYXA9ezAuMjV9PlxuICAgICAgICAgICAgICB7ZGlzcGxheWVkT3B0aW9uc1tncm91cF0ubGVuZ3RoID4gMCA/IChcbiAgICAgICAgICAgICAgICA8RHJvcGRvd25Hcm91cFdyYXBwZXIgaWQ9e3NlbGVjdEFsbEdyb3VwID8gJ2l0ZW1zJyA6IHVuZGVmaW5lZH0+XG4gICAgICAgICAgICAgICAgICB7Z3JvdXAgPyAoXG4gICAgICAgICAgICAgICAgICAgIDxEcm9wZG93bkdyb3VwXG4gICAgICAgICAgICAgICAgICAgICAga2V5PXtncm91cH1cbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICB0YWJJbmRleD17c2VsZWN0QWxsR3JvdXAgPyAwIDogLTF9XG4gICAgICAgICAgICAgICAgICAgICAgb25LZXlEb3duPXtldmVudCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoWycgJywgJ0VudGVyJ10uaW5jbHVkZXMoZXZlbnQua2V5KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZVNlbGVjdEdyb3VwKGdyb3VwKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgZGF0YS1zZWxlY3Rncm91cD17c2VsZWN0QWxsR3JvdXB9XG4gICAgICAgICAgICAgICAgICAgICAgcm9sZT1cImdyb3VwXCJcbiAgICAgICAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD17YGdyb3VwLSR7aW5kZXh9YH1cbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0QWxsR3JvdXAgPyBoYW5kbGVTZWxlY3RHcm91cChncm91cCkgOiBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAge3NlbGVjdEFsbEdyb3VwID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgPFN0eWxlZENoZWNrYm94XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e3NlbGVjdGVkRGF0YS5zZWxlY3RlZEdyb3Vwcy5pbmNsdWRlcyhncm91cCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2dyb3VwfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD1cInNlbGVjdC1ncm91cFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRhYkluZGV4PXstMX1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPFRleHQgdmFyaWFudD1cImNhcHRpb25cIiBhcz1cInNwYW5cIiBwbGFjZW1lbnQ9XCJsZWZ0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2dyb3VwLnRvVXBwZXJDYXNlKCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvU3R5bGVkQ2hlY2tib3g+XG4gICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxUZXh0XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJjYXB0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYXM9XCJzcGFuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwibGVmdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNlbnRpbWVudD1cIm5ldXRyYWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7Z3JvdXAudG9VcHBlckNhc2UoKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICA8L0Ryb3Bkb3duR3JvdXA+XG4gICAgICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgICAgICA8L0Ryb3Bkb3duR3JvdXBXcmFwcGVyPlxuICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgICAgPFN0YWNrIGlkPVwiaXRlbXNcIiBnYXA9XCIwLjI1XCI+XG4gICAgICAgICAgICAgICAge2Rpc3BsYXllZE9wdGlvbnNbZ3JvdXBdLm1hcCgob3B0aW9uLCBpbmRleE9wdGlvbikgPT4gKFxuICAgICAgICAgICAgICAgICAgPERyb3Bkb3duSXRlbVxuICAgICAgICAgICAgICAgICAgICBrZXk9e29wdGlvbi52YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgYXJpYS1kaXNhYmxlZD17ISFvcHRpb24uZGlzYWJsZWR9XG4gICAgICAgICAgICAgICAgICAgIHRhYkluZGV4PXshb3B0aW9uLmRpc2FibGVkID8gMCA6IC0xfVxuICAgICAgICAgICAgICAgICAgICBhcmlhLXNlbGVjdGVkPXtcbiAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZERhdGEuc2VsZWN0ZWRWYWx1ZXMuaW5jbHVkZXMob3B0aW9uLnZhbHVlKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICFvcHRpb24uZGlzYWJsZWRcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPXtvcHRpb24udmFsdWV9XG4gICAgICAgICAgICAgICAgICAgIGRhdGEtdGVzdGlkPXtgb3B0aW9uLSR7b3B0aW9uLnZhbHVlfWB9XG4gICAgICAgICAgICAgICAgICAgIGlkPXtgb3B0aW9uLSR7aW5kZXhPcHRpb259YH1cbiAgICAgICAgICAgICAgICAgICAgcm9sZT1cIm9wdGlvblwiXG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoIW9wdGlvbi5kaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlQ2xpY2sob3B0aW9uLCBncm91cClcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgIG9uS2V5RG93bj17ZXZlbnQgPT5cbiAgICAgICAgICAgICAgICAgICAgICBbJyAnLCAnRW50ZXInXS5pbmNsdWRlcyhldmVudC5rZXkpXG4gICAgICAgICAgICAgICAgICAgICAgICA/IGhhbmRsZUNsaWNrKG9wdGlvbiwgZ3JvdXApXG4gICAgICAgICAgICAgICAgICAgICAgICA6IG51bGxcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZWY9e1xuICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbi52YWx1ZSA9PT0gZGVmYXVsdFNlYXJjaFZhbHVlIHx8XG4gICAgICAgICAgICAgICAgICAgICAgb3B0aW9uLnNlYXJjaFRleHQgPT09IGRlZmF1bHRTZWFyY2hWYWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgPyBmb2N1c2VkSXRlbVJlZlxuICAgICAgICAgICAgICAgICAgICAgICAgOiBudWxsXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge211bHRpc2VsZWN0ID8gKFxuICAgICAgICAgICAgICAgICAgICAgIDxTdHlsZWRDaGVja2JveFxuICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tlZD17XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkRGF0YS5zZWxlY3RlZFZhbHVlcy5pbmNsdWRlcyhvcHRpb24udmFsdWUpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICFvcHRpb24uZGlzYWJsZWRcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtvcHRpb24uZGlzYWJsZWR9XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17b3B0aW9uLnZhbHVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgdGFiSW5kZXg9ey0xfVxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxEaXNwbGF5T3B0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbj17b3B0aW9ufVxuICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbkRpcmVjdGlvbj17ZGVzY3JpcHRpb25EaXJlY3Rpb259XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsSW5mb1BsYWNlbWVudD17b3B0aW9uYWxJbmZvUGxhY2VtZW50fVxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8L1N0eWxlZENoZWNrYm94PlxuICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgIDxEaXNwbGF5T3B0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb249e29wdGlvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uRGlyZWN0aW9uPXtkZXNjcmlwdGlvbkRpcmVjdGlvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsSW5mb1BsYWNlbWVudD17b3B0aW9uYWxJbmZvUGxhY2VtZW50fVxuICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICA8L0Ryb3Bkb3duSXRlbT5cbiAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgPC9TdGFjaz5cbiAgICAgICAgICAgIDwvU3RhY2s+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvPlxuICAgICAgKX1cbiAgICAgIHtsb2FkTW9yZSA/IDxMb2FkTW9yZT57bG9hZE1vcmV9PC9Mb2FkTW9yZT4gOiBudWxsfVxuICAgIDwvRHJvcGRvd25Db250YWluZXI+XG4gICkgOiAoXG4gICAgPERyb3Bkb3duQ29udGFpbmVyXG4gICAgICByb2xlPVwibGlzdGJveFwiXG4gICAgICB0YWJJbmRleD17LTF9XG4gICAgICBpZD1cInNlbGVjdC1kcm9wZG93blwiXG4gICAgICBvbktleURvd249e2hhbmRsZUtleURvd25TZWxlY3R9XG4gICAgICBnYXA9ezAuMjV9XG4gICAgICBkYXRhLWdyb3VwZWQ9e2ZhbHNlfVxuICAgID5cbiAgICAgIHtzZWxlY3RBbGwgJiYgbXVsdGlzZWxlY3QgPyAoXG4gICAgICAgIDxTdGFjayBpZD1cIml0ZW1zXCIgZ2FwPXswLjI1fSB0YWJJbmRleD17LTF9PlxuICAgICAgICAgIDxEcm9wZG93bkl0ZW1cbiAgICAgICAgICAgIGFyaWEtZGlzYWJsZWQ9e2ZhbHNlfVxuICAgICAgICAgICAgYXJpYS1zZWxlY3RlZD17c2VsZWN0ZWREYXRhLmFsbFNlbGVjdGVkfVxuICAgICAgICAgICAgYXJpYS1sYWJlbD1cInNlbGVjdC1hbGxcIlxuICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJzZWxlY3QtYWxsXCJcbiAgICAgICAgICAgIHRhYkluZGV4PXswfVxuICAgICAgICAgICAgcm9sZT1cIm9wdGlvblwiXG4gICAgICAgICAgICBvbktleURvd249e2V2ZW50ID0+XG4gICAgICAgICAgICAgIFsnICcsICdFbnRlciddLmluY2x1ZGVzKGV2ZW50LmtleSkgPyBzZWxlY3RBbGxPcHRpb25zKCkgOiBudWxsXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvbkNsaWNrPXtzZWxlY3RBbGxPcHRpb25zfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxTdHlsZWRDaGVja2JveFxuICAgICAgICAgICAgICBjaGVja2VkPXtzZWxlY3RlZERhdGEuYWxsU2VsZWN0ZWR9XG4gICAgICAgICAgICAgIGRpc2FibGVkPXtmYWxzZX1cbiAgICAgICAgICAgICAgdmFsdWU9XCJzZWxlY3QtYWxsXCJcbiAgICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJzZWxlY3QtYWxsLWNoZWNrYm94XCJcbiAgICAgICAgICAgICAgdGFiSW5kZXg9ey0xfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8U3RhY2sgZGlyZWN0aW9uPVwiY29sdW1uXCI+XG4gICAgICAgICAgICAgICAgPFRleHQgYXM9XCJzcGFuXCIgdmFyaWFudD1cImJvZHlcIiBwbGFjZW1lbnQ9XCJsZWZ0XCI+XG4gICAgICAgICAgICAgICAgICB7c2VsZWN0QWxsLmxhYmVsfVxuICAgICAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgICAgICA8VGV4dFxuICAgICAgICAgICAgICAgICAgYXM9XCJzcGFuXCJcbiAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJib2R5U21hbGxcIlxuICAgICAgICAgICAgICAgICAgc2VudGltZW50PVwibmV1dHJhbFwiXG4gICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJsZWZ0XCJcbiAgICAgICAgICAgICAgICAgIHByb21pbmVuY2U9XCJ3ZWFrXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICB7c2VsZWN0QWxsLmRlc2NyaXB0aW9ufVxuICAgICAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgICAgPC9TdGFjaz5cbiAgICAgICAgICAgIDwvU3R5bGVkQ2hlY2tib3g+XG4gICAgICAgICAgPC9Ecm9wZG93bkl0ZW0+XG4gICAgICAgIDwvU3RhY2s+XG4gICAgICApIDogbnVsbH1cbiAgICAgIDxTdGFjayBpZD1cIml0ZW1zXCIgZ2FwPXswLjI1fT5cbiAgICAgICAge2lzTG9hZGluZyA/IChcbiAgICAgICAgICA8U2tlbGV0b24gdmFyaWFudD1cImJsb2NrXCIgLz5cbiAgICAgICAgKSA6IChcbiAgICAgICAgICBkaXNwbGF5ZWRPcHRpb25zLm1hcCgob3B0aW9uLCBpbmRleCkgPT4gKFxuICAgICAgICAgICAgPERyb3Bkb3duSXRlbVxuICAgICAgICAgICAgICBrZXk9e29wdGlvbi52YWx1ZX1cbiAgICAgICAgICAgICAgYXJpYS1kaXNhYmxlZD17ISFvcHRpb24uZGlzYWJsZWR9XG4gICAgICAgICAgICAgIGFyaWEtc2VsZWN0ZWQ9e1xuICAgICAgICAgICAgICAgIHNlbGVjdGVkRGF0YS5zZWxlY3RlZFZhbHVlcy5pbmNsdWRlcyhvcHRpb24udmFsdWUpICYmXG4gICAgICAgICAgICAgICAgIW9wdGlvbi5kaXNhYmxlZFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIW9wdGlvbi5kaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgICAgaGFuZGxlQ2xpY2sob3B0aW9uKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgYXJpYS1sYWJlbD17b3B0aW9uLnZhbHVlfVxuICAgICAgICAgICAgICBkYXRhLXRlc3RpZD17YG9wdGlvbi0ke29wdGlvbi52YWx1ZX1gfVxuICAgICAgICAgICAgICBpZD17YG9wdGlvbi0ke2luZGV4fWB9XG4gICAgICAgICAgICAgIHJvbGU9XCJvcHRpb25cIlxuICAgICAgICAgICAgICB0YWJJbmRleD17IW9wdGlvbi5kaXNhYmxlZCA/IDAgOiAtMX1cbiAgICAgICAgICAgICAgcmVmPXtcbiAgICAgICAgICAgICAgICBvcHRpb24udmFsdWUgPT09IGRlZmF1bHRTZWFyY2hWYWx1ZSB8fFxuICAgICAgICAgICAgICAgIG9wdGlvbi5zZWFyY2hUZXh0ID09PSBkZWZhdWx0U2VhcmNoVmFsdWVcbiAgICAgICAgICAgICAgICAgID8gZm9jdXNlZEl0ZW1SZWZcbiAgICAgICAgICAgICAgICAgIDogbnVsbFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIG9uS2V5RG93bj17ZXZlbnQgPT5cbiAgICAgICAgICAgICAgICBbJyAnLCAnRW50ZXInXS5pbmNsdWRlcyhldmVudC5rZXkpID8gaGFuZGxlQ2xpY2sob3B0aW9uKSA6IG51bGxcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7bXVsdGlzZWxlY3QgPyAoXG4gICAgICAgICAgICAgICAgPFN0eWxlZENoZWNrYm94XG4gICAgICAgICAgICAgICAgICBjaGVja2VkPXtcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzLmluY2x1ZGVzKG9wdGlvbi52YWx1ZSkgJiZcbiAgICAgICAgICAgICAgICAgICAgIW9wdGlvbi5kaXNhYmxlZFxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e29wdGlvbi5kaXNhYmxlZH1cbiAgICAgICAgICAgICAgICAgIHZhbHVlPXtvcHRpb24udmFsdWV9XG4gICAgICAgICAgICAgICAgICB0YWJJbmRleD17LTF9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPERpc3BsYXlPcHRpb25cbiAgICAgICAgICAgICAgICAgICAgb3B0aW9uPXtvcHRpb259XG4gICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uRGlyZWN0aW9uPXtkZXNjcmlwdGlvbkRpcmVjdGlvbn1cbiAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWxJbmZvUGxhY2VtZW50PXtvcHRpb25hbEluZm9QbGFjZW1lbnR9XG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvU3R5bGVkQ2hlY2tib3g+XG4gICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgPERpc3BsYXlPcHRpb25cbiAgICAgICAgICAgICAgICAgIG9wdGlvbj17b3B0aW9ufVxuICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb25EaXJlY3Rpb249e2Rlc2NyaXB0aW9uRGlyZWN0aW9ufVxuICAgICAgICAgICAgICAgICAgb3B0aW9uYWxJbmZvUGxhY2VtZW50PXtvcHRpb25hbEluZm9QbGFjZW1lbnR9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvRHJvcGRvd25JdGVtPlxuICAgICAgICAgICkpXG4gICAgICAgICl9XG4gICAgICAgIHtsb2FkTW9yZSA/IDxMb2FkTW9yZT57bG9hZE1vcmV9PC9Mb2FkTW9yZT4gOiBudWxsfVxuICAgICAgPC9TdGFjaz5cbiAgICA8L0Ryb3Bkb3duQ29udGFpbmVyPlxuICApXG59XG5leHBvcnQgY29uc3QgRHJvcGRvd24gPSAoe1xuICBjaGlsZHJlbixcbiAgZW1wdHlTdGF0ZSxcbiAgZGVzY3JpcHRpb25EaXJlY3Rpb24sXG4gIHNlYXJjaGFibGUsXG4gIHBsYWNlaG9sZGVyLFxuICBmb290ZXIsXG4gIHJlZlNlbGVjdCxcbiAgbG9hZE1vcmUsXG4gIG9wdGlvbmFsSW5mb1BsYWNlbWVudCxcbiAgaXNMb2FkaW5nLFxuICBzaXplLFxufTogRHJvcGRvd25Qcm9wcykgPT4ge1xuICBjb25zdCB7XG4gICAgc2V0SXNEcm9wZG93blZpc2libGUsXG4gICAgaXNEcm9wZG93blZpc2libGUsXG4gICAgb25TZWFyY2gsXG4gICAgc2VhcmNoSW5wdXQsXG4gICAgb3B0aW9ucyxcbiAgICBkaXNwbGF5ZWRPcHRpb25zLFxuICB9ID0gdXNlU2VsZWN0SW5wdXQoKVxuICBjb25zdCB0aGVtZSA9IHVzZVRoZW1lKClcbiAgY29uc3QgW3NlYXJjaEJhckFjdGl2ZSwgc2V0U2VhcmNoQmFyQWN0aXZlXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbZGVmYXVsdFNlYXJjaFZhbHVlLCBzZXREZWZhdWx0U2VhcmNoXSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bGw+KG51bGwpXG4gIGNvbnN0IHJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcbiAgY29uc3QgW3NlYXJjaCwgc2V0U2VhcmNoXSA9IHVzZVN0YXRlPHN0cmluZz4oJycpXG4gIGNvbnN0IFttYXhXaWR0aCwgc2V0V2lkdGhdID0gdXNlU3RhdGU8c3RyaW5nIHwgbnVtYmVyPigpXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAocmVmU2VsZWN0LmN1cnJlbnQgJiYgaXNEcm9wZG93blZpc2libGUpIHtcbiAgICAgIGNvbnN0IHBvc2l0aW9uID1cbiAgICAgICAgcmVmU2VsZWN0LmN1cnJlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuYm90dG9tICtcbiAgICAgICAgRFJPUERPV05fTUFYX0hFSUdIVCArXG4gICAgICAgIElOUFVUX1NJWkVfSEVJR0hUW3NpemVdICtcbiAgICAgICAgcGFyc2VJbnQodGhlbWUuc3BhY2VbJzUnXSwgMTApXG4gICAgICBjb25zdCBvdmVyZmxvdyA9IHBvc2l0aW9uIC0gd2luZG93LmlubmVySGVpZ2h0XG4gICAgICBpZiAob3ZlcmZsb3cgPiAwKSB7XG4gICAgICAgIGNvbnN0IG1vZGFsRWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdiYWNrZHJvcC1tb2RhbCcpXG5cbiAgICAgICAgaWYgKG1vZGFsRWxlbWVudCkge1xuICAgICAgICAgIG1vZGFsRWxlbWVudC5zY3JvbGxCeSh7IHRvcDogb3ZlcmZsb3csIGJlaGF2aW9yOiAnc21vb3RoJyB9KVxuICAgICAgICB9IGVsc2Ugd2luZG93LnNjcm9sbEJ5KHsgdG9wOiBvdmVyZmxvdywgYmVoYXZpb3I6ICdzbW9vdGgnIH0pXG4gICAgICB9XG4gICAgfVxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9leGhhdXN0aXZlLWRlcHNcbiAgfSwgW2lzRHJvcGRvd25WaXNpYmxlLCByZWZTZWxlY3QsIHNpemUsIHJlZi5jdXJyZW50XSlcblxuICBjb25zdCByZXNpemVEcm9wZG93biA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoXG4gICAgICByZWZTZWxlY3QuY3VycmVudCAmJlxuICAgICAgcmVmU2VsZWN0LmN1cnJlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGggPiAwXG4gICAgKSB7XG4gICAgICBzZXRXaWR0aChyZWZTZWxlY3QuY3VycmVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aClcbiAgICB9XG4gIH0sIFtyZWZTZWxlY3RdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgcmVzaXplRHJvcGRvd24oKVxuXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHJlc2l6ZURyb3Bkb3duKVxuXG4gICAgcmV0dXJuICgpID0+IHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCByZXNpemVEcm9wZG93bilcbiAgfSwgW3Jlc2l6ZURyb3Bkb3duXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghc2VhcmNoSW5wdXQpIHtcbiAgICAgIG9uU2VhcmNoKG9wdGlvbnMpXG4gICAgfVxuICB9LCBbb25TZWFyY2gsIG9wdGlvbnMsIHNlYXJjaElucHV0XSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghaXNEcm9wZG93blZpc2libGUpIHtcbiAgICAgIHNldERlZmF1bHRTZWFyY2gobnVsbClcbiAgICAgIHNldFNlYXJjaCgnJylcbiAgICB9XG5cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCBldmVudCA9PlxuICAgICAgaGFuZGxlQ2xpY2tPdXRzaWRlKFxuICAgICAgICBldmVudCxcbiAgICAgICAgcmVmLFxuICAgICAgICBzZXRJc0Ryb3Bkb3duVmlzaWJsZSxcbiAgICAgICAgcmVmU2VsZWN0LFxuICAgICAgICBvblNlYXJjaCxcbiAgICAgICAgb3B0aW9ucyxcbiAgICAgICksXG4gICAgKVxuXG4gICAgaWYgKCFzZWFyY2hhYmxlKSB7XG4gICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgZXZlbnQgPT5cbiAgICAgICAgaGFuZGxlS2V5RG93bihcbiAgICAgICAgICBldmVudCxcbiAgICAgICAgICByZWYsXG4gICAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgICBzZWFyY2hCYXJBY3RpdmUsXG4gICAgICAgICAgc2V0U2VhcmNoLFxuICAgICAgICAgIHNldERlZmF1bHRTZWFyY2gsXG4gICAgICAgICAgc2VhcmNoLFxuICAgICAgICApLFxuICAgICAgKVxuICAgIH1cblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCBldmVudCA9PlxuICAgICAgICBoYW5kbGVDbGlja091dHNpZGUoXG4gICAgICAgICAgZXZlbnQsXG4gICAgICAgICAgcmVmLFxuICAgICAgICAgIHNldElzRHJvcGRvd25WaXNpYmxlLFxuICAgICAgICAgIHJlZlNlbGVjdCxcbiAgICAgICAgICBvblNlYXJjaCxcbiAgICAgICAgICBvcHRpb25zLFxuICAgICAgICApLFxuICAgICAgKVxuICAgICAgaWYgKCFzZWFyY2hhYmxlKSB7XG4gICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBldmVudCA9PlxuICAgICAgICAgIGhhbmRsZUtleURvd24oXG4gICAgICAgICAgICBldmVudCxcbiAgICAgICAgICAgIHJlZixcbiAgICAgICAgICAgIG9wdGlvbnMsXG4gICAgICAgICAgICBzZWFyY2hCYXJBY3RpdmUsXG4gICAgICAgICAgICBzZXRTZWFyY2gsXG4gICAgICAgICAgICBzZXREZWZhdWx0U2VhcmNoLFxuICAgICAgICAgICAgc2VhcmNoLFxuICAgICAgICAgICksXG4gICAgICAgIClcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtcbiAgICBpc0Ryb3Bkb3duVmlzaWJsZSxcbiAgICBzZWFyY2hCYXJBY3RpdmUsXG4gICAgb3B0aW9ucyxcbiAgICBvblNlYXJjaCxcbiAgICBzZWFyY2gsXG4gICAgcmVmU2VsZWN0LFxuICAgIHNldERlZmF1bHRTZWFyY2gsXG4gICAgc2V0SXNEcm9wZG93blZpc2libGUsXG4gICAgc2VhcmNoYWJsZSxcbiAgXSlcblxuICBjb25zdCBpc0VtcHR5ID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoZGlzcGxheWVkT3B0aW9ucykpIHtcbiAgICAgIHJldHVybiAhKGRpc3BsYXllZE9wdGlvbnMubGVuZ3RoID4gMClcbiAgICB9XG4gICAgY29uc3QgZ3JvdXBzID0gT2JqZWN0LmtleXMoZGlzcGxheWVkT3B0aW9ucylcbiAgICBmb3IgKGNvbnN0IGdyb3VwIG9mIGdyb3Vwcykge1xuICAgICAgaWYgKGRpc3BsYXllZE9wdGlvbnNbZ3JvdXBdLmxlbmd0aCAhPT0gMCkge1xuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZVxuICB9LCBbZGlzcGxheWVkT3B0aW9uc10pXG5cbiAgcmV0dXJuIChcbiAgICA8U3R5bGVkUG9wdXBcbiAgICAgIHZpc2libGU9e2lzRHJvcGRvd25WaXNpYmxlfVxuICAgICAgdGV4dD17XG4gICAgICAgIDxTdGFjaz5cbiAgICAgICAgICB7c2VhcmNoYWJsZSAmJiAhaXNMb2FkaW5nID8gKFxuICAgICAgICAgICAgPFNlYXJjaEJhckRyb3Bkb3duXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXtwbGFjZWhvbGRlcn1cbiAgICAgICAgICAgICAgZGlzcGxheWVkT3B0aW9ucz17ZGlzcGxheWVkT3B0aW9uc31cbiAgICAgICAgICAgICAgc2V0U2VhcmNoQmFyQWN0aXZlPXtzZXRTZWFyY2hCYXJBY3RpdmV9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgIDxDcmVhdGVEcm9wZG93blxuICAgICAgICAgICAgaXNFbXB0eT17aXNFbXB0eX1cbiAgICAgICAgICAgIGVtcHR5U3RhdGU9e2VtcHR5U3RhdGV9XG4gICAgICAgICAgICBkZXNjcmlwdGlvbkRpcmVjdGlvbj17ZGVzY3JpcHRpb25EaXJlY3Rpb259XG4gICAgICAgICAgICBsb2FkTW9yZT17bG9hZE1vcmV9XG4gICAgICAgICAgICBvcHRpb25hbEluZm9QbGFjZW1lbnQ9e29wdGlvbmFsSW5mb1BsYWNlbWVudH1cbiAgICAgICAgICAgIGRlZmF1bHRTZWFyY2hWYWx1ZT17ZGVmYXVsdFNlYXJjaFZhbHVlfVxuICAgICAgICAgICAgaXNMb2FkaW5nPXtpc0xvYWRpbmd9XG4gICAgICAgICAgLz5cbiAgICAgICAgICB7Zm9vdGVyID8gPFBvcHVwRm9vdGVyPntmb290ZXJ9PC9Qb3B1cEZvb3Rlcj4gOiBudWxsfVxuICAgICAgICA8L1N0YWNrPlxuICAgICAgfVxuICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcbiAgICAgIGRpc2FibGVBbmltYXRpb25cbiAgICAgIG1heFdpZHRoPXttYXhXaWR0aCA/PyByZWZTZWxlY3QuY3VycmVudD8ub2Zmc2V0V2lkdGh9XG4gICAgICBoYXNBcnJvdz17ZmFsc2V9XG4gICAgICByZWY9e3JlZn1cbiAgICAgIHRhYkluZGV4PXswfVxuICAgICAgcm9sZT1cImRpYWxvZ1wiXG4gICAgICBkZWJvdW5jZURlbGF5PXswfVxuICAgICAgY29udGFpbmVyRnVsbFdpZHRoXG4gICAgPlxuICAgICAge2NoaWxkcmVufVxuICAgIDwvU3R5bGVkUG9wdXA+XG4gIClcbn1cbiJdfQ== */"));
38
+ }) => theme.space[10], ";" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL3VsdHJhdmlvbGV0L3VsdHJhdmlvbGV0L3BhY2thZ2VzL3VpL3NyYy9jb21wb25lbnRzL1NlbGVjdElucHV0VjIvRHJvcGRvd24udHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQTJEaUMiLCJmaWxlIjoiL2hvbWUvcnVubmVyL3dvcmsvdWx0cmF2aW9sZXQvdWx0cmF2aW9sZXQvcGFja2FnZXMvdWkvc3JjL2NvbXBvbmVudHMvU2VsZWN0SW5wdXRWMi9Ecm9wZG93bi50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1c2VUaGVtZSB9IGZyb20gJ0BlbW90aW9uL3JlYWN0J1xuaW1wb3J0IHN0eWxlZCBmcm9tICdAZW1vdGlvbi9zdHlsZWQnXG5pbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VNZW1vLCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgdHlwZSB7XG4gIERpc3BhdGNoLFxuICBLZXlib2FyZEV2ZW50LFxuICBSZWFjdE5vZGUsXG4gIFJlZk9iamVjdCxcbiAgU2V0U3RhdGVBY3Rpb24sXG59IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgQ2hlY2tib3ggfSBmcm9tICcuLi9DaGVja2JveCdcbmltcG9ydCB7IFBvcHVwIH0gZnJvbSAnLi4vUG9wdXAnXG5pbXBvcnQgeyBTa2VsZXRvbiB9IGZyb20gJy4uL1NrZWxldG9uJ1xuaW1wb3J0IHsgU3RhY2sgfSBmcm9tICcuLi9TdGFjaydcbmltcG9ydCB7IFRleHQgfSBmcm9tICcuLi9UZXh0J1xuaW1wb3J0IHsgRGlzcGxheU9wdGlvbiB9IGZyb20gJy4vRHJvcGRvd25PcHRpb24nXG5pbXBvcnQgeyBTZWFyY2hCYXJEcm9wZG93biB9IGZyb20gJy4vU2VhcmNoQmFyRHJvcGRvd24nXG5pbXBvcnQgeyB1c2VTZWxlY3RJbnB1dCB9IGZyb20gJy4vU2VsZWN0SW5wdXRQcm92aWRlcidcbmltcG9ydCB7IHR5cGUgRGF0YVR5cGUsIElOUFVUX1NJWkVfSEVJR0hULCB0eXBlIE9wdGlvblR5cGUgfSBmcm9tICcuL3R5cGVzJ1xuXG5jb25zdCBEUk9QRE9XTl9NQVhfSEVJR0hUID0gMjU2XG5cbmV4cG9ydCB0eXBlIERyb3Bkb3duUHJvcHMgPSB7XG4gIGNoaWxkcmVuOiBSZWFjdE5vZGVcbiAgZW1wdHlTdGF0ZTogUmVhY3ROb2RlXG4gIGRlc2NyaXB0aW9uRGlyZWN0aW9uOiAncm93JyB8ICdjb2x1bW4nXG4gIHNlYXJjaGFibGU6IGJvb2xlYW5cbiAgcGxhY2Vob2xkZXI6IHN0cmluZ1xuICBmb290ZXI/OiAoKGNsb3NlRHJvcGRvd246ICgpID0+IHZvaWQpID0+IFJlYWN0Tm9kZSkgfCBSZWFjdE5vZGVcbiAgcmVmU2VsZWN0OiBSZWZPYmplY3Q8SFRNTERpdkVsZW1lbnQ+XG4gIGxvYWRNb3JlPzogUmVhY3ROb2RlXG4gIG9wdGlvbmFsSW5mb1BsYWNlbWVudDogJ2xlZnQnIHwgJ3JpZ2h0J1xuICBpc0xvYWRpbmc/OiBib29sZWFuXG4gIHNpemU6ICdzbWFsbCcgfCAnbWVkaXVtJyB8ICdsYXJnZSdcbn1cblxuZXhwb3J0IHR5cGUgQ3JlYXRlRHJvcGRvd25Qcm9wcyA9IHtcbiAgaXNFbXB0eTogYm9vbGVhblxuICBlbXB0eVN0YXRlOiBSZWFjdE5vZGVcbiAgZGVzY3JpcHRpb25EaXJlY3Rpb246ICdyb3cnIHwgJ2NvbHVtbidcbiAgbG9hZE1vcmU/OiBSZWFjdE5vZGVcbiAgb3B0aW9uYWxJbmZvUGxhY2VtZW50OiAnbGVmdCcgfCAncmlnaHQnXG4gIGRlZmF1bHRTZWFyY2hWYWx1ZTogc3RyaW5nIHwgbnVsbFxuICBpc0xvYWRpbmc/OiBib29sZWFuXG59XG5cbmNvbnN0IE5PTl9TRUFSQ0hBQkxFX0tFWVMgPSBbXG4gICdUYWInLFxuICAnICcsXG4gICdFbnRlcicsXG4gICdDYXBzTG9jaycsXG4gICdTaGlmdCcsXG4gICdBcnJvd0Rvd24nLFxuICAnQXJyb3dVcCcsXG4gICdBcnJvd0xlZnQnLFxuICAnQXJyb3dSaWdodCcsXG4gICdFc2NhcGUnLFxuXVxuXG5jb25zdCBTdHlsZWRQb3B1cCA9IHN0eWxlZChQb3B1cClgXG4gIHdpZHRoOiAxMDAlO1xuICBtaW4td2lkdGg6IDMyMHB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5vdGhlci5lbGV2YXRpb24uYmFja2dyb3VuZC5yYWlzZWR9O1xuICBjb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMubmV1dHJhbC50ZXh0fTtcbiAgYm94LXNoYWRvdzogJHsoeyB0aGVtZSB9KSA9PiBgJHt0aGVtZS5zaGFkb3dzLnJhaXNlZFswXX0sICR7dGhlbWUuc2hhZG93cy5yYWlzZWRbMV19YH07XG4gIHBhZGRpbmc6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMF19O1xuICBtYXJnaW4tYm90dG9tOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzEwXX07XG5gXG5cbmNvbnN0IERyb3Bkb3duQ29udGFpbmVyID0gc3R5bGVkKFN0YWNrKTx7ICdkYXRhLWdyb3VwZWQnOiBib29sZWFuIH0+YFxuICBtYXgtaGVpZ2h0OiAke0RST1BET1dOX01BWF9IRUlHSFR9cHg7XG4gIG92ZXJmbG93LXk6IHNjcm9sbDtcbiAgcGFkZGluZzogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVswXX07XG4gIHBhZGRpbmctYm90dG9tOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzAuNV19O1xuICBwYWRkaW5nLXRvcDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVswLjVdfTtcblxuICAmW2RhdGEtZ3JvdXBlZD1cInRydWVcIl0ge1xuICAgIHBhZGRpbmctdG9wOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzBdfTtcbiAgfVxuYFxuY29uc3QgRHJvcGRvd25Hcm91cCA9IHN0eWxlZC5idXR0b248eyAnZGF0YS1zZWxlY3Rncm91cCc6IGJvb2xlYW4gfT5gXG4gIGRpc3BsYXk6IGZsZXg7XG4gIHdpZHRoOiAxMDAlO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGxlZnQ7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGJvcmRlcjogbm9uZTtcbiAgYmFja2dyb3VuZC1jb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMubmV1dHJhbC5iYWNrZ3JvdW5kV2Vha307XG4gIHBvc2l0aW9uOiBzdGlja3k7XG4gIHRvcDogMHB4O1xuICBwYWRkaW5nLXJpZ2h0OiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzJdfTtcbiAgcGFkZGluZy1sZWZ0OiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzJdfTtcbiAgaGVpZ2h0OiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzRdfTtcbiAgdGV4dC1hbGlnbjogbGVmdDtcbiAgbWFyZ2luLWJvdHRvbTogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsnMC4yNSddfTtcblxuICAmOmZvY3VzIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5uZXV0cmFsLmJhY2tncm91bmRXZWFrfTtcbiAgICBvdXRsaW5lOiBub25lO1xuICB9XG5cbiAgJltkYXRhLXNlbGVjdGdyb3VwPSd0cnVlJ10ge1xuICAgIHBhZGRpbmctbGVmdDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsyXX07XG4gICAgYm9yZGVyLWxlZnQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMC41XX0gc29saWQgJHsoeyB0aGVtZSB9KSA9PlxuICAgICAgdGhlbWUuY29sb3JzLm5ldXRyYWwuYmFja2dyb3VuZFdlYWt9O1xuICB9XG5cbiAgJltkYXRhLXNlbGVjdGdyb3VwPSd0cnVlJ106Zm9jdXMge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwuYmFja2dyb3VuZEhvdmVyfTtcbiAgfVxuYFxuY29uc3QgRHJvcGRvd25Hcm91cFdyYXBwZXIgPSBzdHlsZWQuZGl2YFxuICBwb3NpdGlvbjogc3RpY2t5O1xuICB0b3A6IDBweDtcbmBcbmNvbnN0IERyb3Bkb3duSXRlbSA9IHN0eWxlZC5kaXY8e1xuICAnYXJpYS1zZWxlY3RlZCc6IGJvb2xlYW5cbiAgJ2FyaWEtZGlzYWJsZWQnOiBib29sZWFuXG59PmBcbiAgdGV4dC1hbGlnbjpsZWZ0O1xuICBib3JkZXI6IG5vbmU7XG4gIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm90aGVyLmVsZXZhdGlvbi5iYWNrZ3JvdW5kLnJhaXNlZH07XG5cbiAgcGFkZGluZzogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsnMS41J119ICR7KHsgdGhlbWUgfSkgPT5cbiAgICB0aGVtZS5zcGFjZVsnMiddfSAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWycxLjUnXX0gJHsoeyB0aGVtZSB9KSA9PlxuICAgIHRoZW1lLnNwYWNlWycyJ119O1xuICBtYXJnaW4tbGVmdDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsnMC41J119O1xuICBtYXJnaW4tcmlnaHQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbJzAuNSddfTtcblxuICBjb2xvcjogICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwudGV4dH07XG4gIGJvcmRlci1yYWRpdXM6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUucmFkaWkuZGVmYXVsdH07XG5cbiAgJjpob3ZlciwgOmZvY3VzIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5wcmltYXJ5LmJhY2tncm91bmR9O1xuICAgIGNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5wcmltYXJ5LnRleHR9O1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBvdXRsaW5lOiBub25lO1xuICB9XG5cbiAgJlthcmlhLXNlbGVjdGVkPSd0cnVlJ10ge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLnByaW1hcnkuYmFja2dyb3VuZH07XG4gIH1cblxuICAmW2FyaWEtZGlzYWJsZWQ9XCJ0cnVlXCJdIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5uZXV0cmFsLmJhY2tncm91bmREaXNhYmxlZH07XG4gICAgY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwudGV4dERpc2FibGVkfTtcbiAgfVxuXG4gICZbYXJpYS1kaXNhYmxlZD1cInRydWVcIl06aG92ZXIsIFthcmlhLWRpc2FibGVkPVwidHJ1ZVwiXTpmb2N1cyB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHsoeyB0aGVtZSB9KSA9PlxuICAgICAgdGhlbWUuY29sb3JzLm5ldXRyYWwuYmFja2dyb3VuZFN0cm9uZ0Rpc2FibGVkfTtcbiAgICBjb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMubmV1dHJhbC50ZXh0U3Ryb25nRGlzYWJsZWR9O1xuICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgfVxuYFxuXG5jb25zdCBQb3B1cEZvb3RlciA9IHN0eWxlZC5kaXZgXG4gIHdpZHRoOiAxMDAlO1xuICBwYWRkaW5nOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzEuNV19ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMl19XG4gICAgJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsxLjVdfSAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzJdfTtcbiAgYm94LXNoYWRvdzogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zaGFkb3dzLmRyb3Bkb3dufTtcbmBcbmNvbnN0IFN0eWxlZENoZWNrYm94ID0gc3R5bGVkKENoZWNrYm94KWBcbiAgd2lkdGg6IDEwMCU7XG4gIHBvc2l0aW9uOiBzdGF0aWM7XG4gIHRleHQtYWxpZ246IGxlZnQ7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuYCAvLyBwb2ludGVyLWV2ZW50czogbm9uZSBwcmV2ZW50cyBhbnkgZXJyb3Igd2hlbiB1c2luZyB0aGUgY2hlY2tib3ggaW4gYSBmb3JtIHNpbmNlIGl0IGlzIGFuIHVubmFtZWQgaW5wdXRcblxuY29uc3QgRW1wdHlTdGF0ZSA9IHN0eWxlZChTdGFjaylgXG4gIHBhZGRpbmc6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMl19O1xuYFxuY29uc3QgTG9hZE1vcmUgPSBzdHlsZWQoU3RhY2spYFxuICBwYWRkaW5nOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzAuNV19O1xuYFxuXG5jb25zdCBtb3ZlRm9jdXNEb3duID0gKCkgPT4ge1xuICBjb25zdCBvcHRpb25zID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcbiAgICAnI2l0ZW1zID4gZGl2W3JvbGU9XCJvcHRpb25cIl06bm90KFtkaXNhYmxlZF0pJyxcbiAgKVxuICBjb25zdCBhY3RpdmVJdGVtID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudFxuICBpZiAob3B0aW9ucykge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgb3B0aW9ucz8ubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgIGNvbnN0IGxpc3RMZW5ndGggPSBvcHRpb25zLmxlbmd0aFxuICAgICAgaWYgKGFjdGl2ZUl0ZW0gPT09IG9wdGlvbnNbaV0gJiYgYWN0aXZlSXRlbSAhPT0gb3B0aW9uc1tsaXN0TGVuZ3RoIC0gMV0pIHtcbiAgICAgICAgOyhvcHRpb25zW2kgKyAxXSBhcyBIVE1MRWxlbWVudCkuZm9jdXMoKVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuY29uc3QgbW92ZUZvY3VzVXAgPSAoKSA9PiB7XG4gIGNvbnN0IG9wdGlvbnMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFxuICAgICcjaXRlbXMgPiBkaXZbcm9sZT1cIm9wdGlvblwiXTpub3QoW2Rpc2FibGVkXSknLFxuICApXG4gIGNvbnN0IGFjdGl2ZUl0ZW0gPSBkb2N1bWVudC5hY3RpdmVFbGVtZW50XG5cbiAgaWYgKG9wdGlvbnMpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG9wdGlvbnMubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgIGlmIChhY3RpdmVJdGVtID09PSBvcHRpb25zW2ldICYmIGFjdGl2ZUl0ZW0gIT09IG9wdGlvbnNbMF0pIHtcbiAgICAgICAgOyhvcHRpb25zW2kgLSAxXSBhcyBIVE1MRWxlbWVudCkuZm9jdXMoKVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuY29uc3QgaGFuZGxlS2V5RG93blNlbGVjdCA9IChldmVudDogS2V5Ym9hcmRFdmVudDxIVE1MRGl2RWxlbWVudD4pID0+IHtcbiAgaWYgKGV2ZW50LmtleSA9PT0gJ0Fycm93RG93bicpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgbW92ZUZvY3VzRG93bigpXG4gIH1cblxuICBpZiAoZXZlbnQua2V5ID09PSAnQXJyb3dVcCcpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgbW92ZUZvY3VzVXAoKVxuICB9XG59XG5jb25zdCBoYW5kbGVDbGlja091dHNpZGUgPSAoXG4gIGV2ZW50OiBNb3VzZUV2ZW50LFxuICByZWY6IFJlZk9iamVjdDxIVE1MRGl2RWxlbWVudD4sXG4gIHNldElzRHJvcGRvd25WaXNpYmlsZTogRGlzcGF0Y2g8U2V0U3RhdGVBY3Rpb248Ym9vbGVhbj4+LFxuICByZWZTZWxlY3Q6IFJlZk9iamVjdDxIVE1MRGl2RWxlbWVudD4sXG4gIG9uU2VhcmNoOiBEaXNwYXRjaDxTZXRTdGF0ZUFjdGlvbjxEYXRhVHlwZT4+LFxuICBvcHRpb25zOiBEYXRhVHlwZSxcbikgPT4ge1xuICBpZiAoXG4gICAgcmVmLmN1cnJlbnQgJiZcbiAgICAhcmVmLmN1cnJlbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0IGFzIE5vZGUpICYmXG4gICAgIXJlZlNlbGVjdC5jdXJyZW50Py5jb250YWlucyhldmVudC50YXJnZXQgYXMgTm9kZSlcbiAgKSB7XG4gICAgc2V0SXNEcm9wZG93blZpc2liaWxlKGZhbHNlKVxuICAgIG9uU2VhcmNoKG9wdGlvbnMpXG4gIH1cbn1cblxuY29uc3QgaGFuZGxlS2V5RG93biA9IChcbiAgZXZlbnQ6IGdsb2JhbFRoaXMuS2V5Ym9hcmRFdmVudCxcbiAgcmVmOiBSZWZPYmplY3Q8SFRNTERpdkVsZW1lbnQ+LFxuICBvcHRpb25zOiBEYXRhVHlwZSxcbiAgc2VhcmNoQmFyQWN0aXZlOiBib29sZWFuLFxuICBzZXRTZWFyY2g6IERpc3BhdGNoPFNldFN0YXRlQWN0aW9uPHN0cmluZz4+LFxuICBzZXREZWZhdWx0U2VhcmNoOiBEaXNwYXRjaDxTZXRTdGF0ZUFjdGlvbjxzdHJpbmcgfCBudWxsPj4sXG4gIHNlYXJjaDogc3RyaW5nLFxuKSA9PiB7XG4gIC8vIERlYWxzIHdpdGggZGVmYXVsdCBzZWFyY2hcbiAgaWYgKFxuICAgIHJlZi5jdXJyZW50ICYmXG4gICAgIXNlYXJjaEJhckFjdGl2ZSAmJlxuICAgICFOT05fU0VBUkNIQUJMRV9LRVlTLmluY2x1ZGVzKGV2ZW50LmtleSkgJiZcbiAgICBkb2N1bWVudC5hY3RpdmVFbGVtZW50Py5hcmlhTGFiZWwgIT09ICdzZWFyY2gtYmFyJ1xuICApIHtcbiAgICBjb25zdCBjdXJyZW50U2VhcmNoID0gc2VhcmNoICsgZXZlbnQua2V5XG4gICAgc2V0U2VhcmNoKGN1cnJlbnRTZWFyY2gpXG4gICAgcmVmLmN1cnJlbnQuZm9jdXMoKVxuICAgIGlmICghQXJyYXkuaXNBcnJheShvcHRpb25zKSkge1xuICAgICAgY29uc3QgY2xvc2VzdE9wdGlvbnMgPSB7IC4uLm9wdGlvbnMgfVxuICAgICAgT2JqZWN0LmtleXMoY2xvc2VzdE9wdGlvbnMpLm1hcCgoZ3JvdXA6IHN0cmluZykgPT4ge1xuICAgICAgICBjbG9zZXN0T3B0aW9uc1tncm91cF0gPSBjbG9zZXN0T3B0aW9uc1tncm91cF0uZmlsdGVyKG9wdGlvbiA9PlxuICAgICAgICAgIG9wdGlvbi5zZWFyY2hUZXh0XG4gICAgICAgICAgICA/IG9wdGlvbi5zZWFyY2hUZXh0LnRvTG9jYWxlTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChjdXJyZW50U2VhcmNoKVxuICAgICAgICAgICAgOiBvcHRpb24udmFsdWUudG9Mb2NhbGVMb3dlckNhc2UoKS5zdGFydHNXaXRoKGN1cnJlbnRTZWFyY2gpLFxuICAgICAgICApXG5cbiAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgIH0pXG4gICAgICBjb25zdCBjbG9zZXN0T3B0aW9uID0gY2xvc2VzdE9wdGlvbnNbT2JqZWN0LmtleXMoY2xvc2VzdE9wdGlvbnMpWzBdXVswXVxuICAgICAgaWYgKGNsb3Nlc3RPcHRpb24pIHtcbiAgICAgICAgc2V0RGVmYXVsdFNlYXJjaChjbG9zZXN0T3B0aW9uLnNlYXJjaFRleHQgPz8gY2xvc2VzdE9wdGlvbi52YWx1ZSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNldERlZmF1bHRTZWFyY2gobnVsbClcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgY2xvc2VzdE9wdGlvbiA9IFsuLi5vcHRpb25zXS5maWx0ZXIob3B0aW9uID0+XG4gICAgICAgIG9wdGlvbi5zZWFyY2hUZXh0XG4gICAgICAgICAgPyBvcHRpb24uc2VhcmNoVGV4dC50b0xvY2FsZUxvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoY3VycmVudFNlYXJjaClcbiAgICAgICAgICA6IG9wdGlvbi52YWx1ZS50b0xvY2FsZUxvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoY3VycmVudFNlYXJjaCksXG4gICAgICApWzBdXG4gICAgICBpZiAoY2xvc2VzdE9wdGlvbikge1xuICAgICAgICBzZXREZWZhdWx0U2VhcmNoKGNsb3Nlc3RPcHRpb24uc2VhcmNoVGV4dCA/PyBjbG9zZXN0T3B0aW9uLnZhbHVlKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2V0RGVmYXVsdFNlYXJjaChudWxsKVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuY29uc3QgQ3JlYXRlRHJvcGRvd24gPSAoe1xuICBpc0VtcHR5LFxuICBlbXB0eVN0YXRlLFxuICBkZXNjcmlwdGlvbkRpcmVjdGlvbixcbiAgbG9hZE1vcmUsXG4gIG9wdGlvbmFsSW5mb1BsYWNlbWVudCxcbiAgZGVmYXVsdFNlYXJjaFZhbHVlLFxuICBpc0xvYWRpbmcsXG59OiBDcmVhdGVEcm9wZG93blByb3BzKSA9PiB7XG4gIGNvbnN0IHtcbiAgICBzZXRJc0Ryb3Bkb3duVmlzaWJsZSxcbiAgICBvbkNoYW5nZSxcbiAgICBvcHRpb25zLFxuICAgIG11bHRpc2VsZWN0LFxuICAgIHNlbGVjdEFsbCxcbiAgICBzZWxlY3RBbGxHcm91cCxcbiAgICBkaXNwbGF5ZWRPcHRpb25zLFxuICAgIHNldFNlbGVjdGVkRGF0YSxcbiAgICBzZWxlY3RlZERhdGEsXG4gIH0gPSB1c2VTZWxlY3RJbnB1dCgpXG4gIGNvbnN0IGZvY3VzZWRJdGVtUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGRlZmF1bHRTZWFyY2hWYWx1ZSAmJiBmb2N1c2VkSXRlbVJlZj8uY3VycmVudCkge1xuICAgICAgZm9jdXNlZEl0ZW1SZWYuY3VycmVudC5mb2N1cygpXG4gICAgfVxuICB9LCBbZGVmYXVsdFNlYXJjaFZhbHVlXSlcblxuICBpZiAoaXNFbXB0eSkge1xuICAgIHJldHVybiAoXG4gICAgICA8RW1wdHlTdGF0ZSBnYXA9ezJ9IGFsaWduSXRlbXM9XCJjZW50ZXJcIj5cbiAgICAgICAge2VtcHR5U3RhdGUgPz8gKFxuICAgICAgICAgIDxUZXh0IHZhcmlhbnQ9XCJib2R5U3Ryb25nXCIgYXM9XCJwXCI+XG4gICAgICAgICAgICBObyBvcHRpb25zXG4gICAgICAgICAgPC9UZXh0PlxuICAgICAgICApfVxuICAgICAgPC9FbXB0eVN0YXRlPlxuICAgIClcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZUNsaWNrID0gKGNsaWNrZWRPcHRpb246IE9wdGlvblR5cGUsIGdyb3VwPzogc3RyaW5nKSA9PiB7XG4gICAgc2V0U2VsZWN0ZWREYXRhKHsgdHlwZTogJ3NlbGVjdE9wdGlvbicsIGNsaWNrZWRPcHRpb24sIGdyb3VwIH0pXG4gICAgaWYgKG11bHRpc2VsZWN0KSB7XG4gICAgICBpZiAoc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzLmluY2x1ZGVzKGNsaWNrZWRPcHRpb24udmFsdWUpKSB7XG4gICAgICAgIG9uQ2hhbmdlPy4oXG4gICAgICAgICAgc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzLmZpbHRlcihcbiAgICAgICAgICAgIHZhbCA9PiB2YWwgIT09IGNsaWNrZWRPcHRpb24udmFsdWUsXG4gICAgICAgICAgKSxcbiAgICAgICAgKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb25DaGFuZ2U/LihbLi4uc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzLCBjbGlja2VkT3B0aW9uLnZhbHVlXSlcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgb25DaGFuZ2U/LihjbGlja2VkT3B0aW9uLnZhbHVlKVxuICAgIH1cbiAgICBzZXRJc0Ryb3Bkb3duVmlzaWJsZShtdWx0aXNlbGVjdCkgLy8gaGlkZSB0aGUgZHJvcGRvd24gb24gY2xpY2sgd2hlbiBzaW5nbGUgc2VsZWN0IG9ubHlcbiAgfVxuXG4gIGNvbnN0IHNlbGVjdEFsbE9wdGlvbnMgPSAoKSA9PiB7XG4gICAgaWYgKG11bHRpc2VsZWN0KSB7XG4gICAgICBzZXRTZWxlY3RlZERhdGEoeyB0eXBlOiAnc2VsZWN0QWxsJyB9KVxuICAgICAgaWYgKHNlbGVjdGVkRGF0YS5hbGxTZWxlY3RlZCAmJiBvbkNoYW5nZSkge1xuICAgICAgICBvbkNoYW5nZShbXSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGFsbFZhbHVlczogT3B0aW9uVHlwZVtdID0gW11cbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KG9wdGlvbnMpKSB7XG4gICAgICAgICAgT2JqZWN0LmtleXMob3B0aW9ucykubWFwKChncm91cDogc3RyaW5nKSA9PlxuICAgICAgICAgICAgb3B0aW9uc1tncm91cF0ubWFwKG9wdGlvbiA9PiB7XG4gICAgICAgICAgICAgIGlmICghb3B0aW9uLmRpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgYWxsVmFsdWVzLnB1c2gob3B0aW9uKVxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIClcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvcHRpb25zLm1hcChvcHRpb24gPT4gYWxsVmFsdWVzLnB1c2gob3B0aW9uKSlcbiAgICAgICAgfVxuICAgICAgICBvbkNoYW5nZT8uKGFsbFZhbHVlcy5tYXAodmFsdWUgPT4gdmFsdWUudmFsdWUpKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGhhbmRsZVNlbGVjdEdyb3VwID0gKGdyb3VwOiBzdHJpbmcpID0+IHtcbiAgICBpZiAobXVsdGlzZWxlY3QpIHtcbiAgICAgIHNldFNlbGVjdGVkRGF0YSh7IHR5cGU6ICdzZWxlY3RHcm91cCcsIHNlbGVjdGVkR3JvdXA6IGdyb3VwIH0pXG4gICAgICBpZiAoIUFycmF5LmlzQXJyYXkob3B0aW9ucykpIHtcbiAgICAgICAgaWYgKHNlbGVjdGVkRGF0YS5zZWxlY3RlZEdyb3Vwcy5pbmNsdWRlcyhncm91cCkpIHtcbiAgICAgICAgICBjb25zdCBuZXdTZWxlY3RlZFZhbHVlcyA9IFsuLi5zZWxlY3RlZERhdGEuc2VsZWN0ZWRWYWx1ZXNdLmZpbHRlcihcbiAgICAgICAgICAgIHNlbGVjdGVkVmFsdWUgPT5cbiAgICAgICAgICAgICAgIW9wdGlvbnNbZ3JvdXBdLmZpbmQob3B0aW9uID0+IG9wdGlvbi52YWx1ZSA9PT0gc2VsZWN0ZWRWYWx1ZSksXG4gICAgICAgICAgKVxuICAgICAgICAgIG9uQ2hhbmdlPy4obmV3U2VsZWN0ZWRWYWx1ZXMpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgbmV3U2VsZWN0ZWRWYWx1ZXMgPSBbLi4uc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzXVxuXG4gICAgICAgICAgb3B0aW9uc1tncm91cF0ubWFwKG9wdGlvbiA9PlxuICAgICAgICAgICAgbmV3U2VsZWN0ZWRWYWx1ZXMuaW5jbHVkZXMob3B0aW9uLnZhbHVlKSB8fCBvcHRpb24uZGlzYWJsZWRcbiAgICAgICAgICAgICAgPyBudWxsXG4gICAgICAgICAgICAgIDogbmV3U2VsZWN0ZWRWYWx1ZXMucHVzaChvcHRpb24udmFsdWUpLFxuICAgICAgICAgIClcbiAgICAgICAgICBvbkNoYW5nZT8uKG5ld1NlbGVjdGVkVmFsdWVzKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuICFBcnJheS5pc0FycmF5KGRpc3BsYXllZE9wdGlvbnMpID8gKFxuICAgIDxEcm9wZG93bkNvbnRhaW5lclxuICAgICAgcm9sZT1cImxpc3Rib3hcIlxuICAgICAgaWQ9XCJzZWxlY3QtZHJvcGRvd25cIlxuICAgICAgb25LZXlEb3duPXtoYW5kbGVLZXlEb3duU2VsZWN0fVxuICAgICAgZGF0YS1ncm91cGVkXG4gICAgPlxuICAgICAge2lzTG9hZGluZyA/IChcbiAgICAgICAgPFNrZWxldG9uIHZhcmlhbnQ9XCJibG9ja1wiIC8+XG4gICAgICApIDogKFxuICAgICAgICA8PlxuICAgICAgICAgIHtzZWxlY3RBbGwgJiYgbXVsdGlzZWxlY3QgPyAoXG4gICAgICAgICAgICA8U3RhY2sgaWQ9XCJpdGVtc1wiPlxuICAgICAgICAgICAgICA8RHJvcGRvd25JdGVtXG4gICAgICAgICAgICAgICAgYXJpYS1kaXNhYmxlZD17ZmFsc2V9XG4gICAgICAgICAgICAgICAgYXJpYS1zZWxlY3RlZD17c2VsZWN0ZWREYXRhLmFsbFNlbGVjdGVkfVxuICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJzZWxlY3QtYWxsXCJcbiAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD1cInNlbGVjdC1hbGxcIlxuICAgICAgICAgICAgICAgIGlkPVwic2VsZWN0LWFsbFwiXG4gICAgICAgICAgICAgICAgdGFiSW5kZXg9ezB9XG4gICAgICAgICAgICAgICAgcm9sZT1cIm9wdGlvblwiXG4gICAgICAgICAgICAgICAgb25LZXlEb3duPXtldmVudCA9PlxuICAgICAgICAgICAgICAgICAgWycgJywgJ0VudGVyJ10uaW5jbHVkZXMoZXZlbnQua2V5KSA/IHNlbGVjdEFsbE9wdGlvbnMoKSA6IG51bGxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgb25DbGljaz17c2VsZWN0QWxsT3B0aW9uc31cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxTdHlsZWRDaGVja2JveFxuICAgICAgICAgICAgICAgICAgY2hlY2tlZD17c2VsZWN0ZWREYXRhLmFsbFNlbGVjdGVkfVxuICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgdmFsdWU9XCJzZWxlY3QtYWxsXCJcbiAgICAgICAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwic2VsZWN0LWFsbC1jaGVja2JveFwiXG4gICAgICAgICAgICAgICAgICB0YWJJbmRleD17LTF9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPFN0YWNrIGRpcmVjdGlvbj1cImNvbHVtblwiPlxuICAgICAgICAgICAgICAgICAgICA8VGV4dCBhcz1cInNwYW5cIiB2YXJpYW50PVwiYm9keVwiIHBsYWNlbWVudD1cImxlZnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICB7c2VsZWN0QWxsLmxhYmVsfVxuICAgICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgICAgIDxUZXh0XG4gICAgICAgICAgICAgICAgICAgICAgYXM9XCJzcGFuXCJcbiAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50PVwiYm9keVNtYWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICBzZW50aW1lbnQ9XCJuZXV0cmFsXCJcbiAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJsZWZ0XCJcbiAgICAgICAgICAgICAgICAgICAgICBwcm9taW5lbmNlPVwid2Vha1wiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7c2VsZWN0QWxsLmRlc2NyaXB0aW9ufVxuICAgICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgICA8L1N0YWNrPlxuICAgICAgICAgICAgICAgIDwvU3R5bGVkQ2hlY2tib3g+XG4gICAgICAgICAgICAgIDwvRHJvcGRvd25JdGVtPlxuICAgICAgICAgICAgPC9TdGFjaz5cbiAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICB7T2JqZWN0LmtleXMoZGlzcGxheWVkT3B0aW9ucykubWFwKChncm91cCwgaW5kZXgpID0+IChcbiAgICAgICAgICAgIDxTdGFjayBrZXk9e2dyb3VwfSBnYXA9ezAuMjV9PlxuICAgICAgICAgICAgICB7ZGlzcGxheWVkT3B0aW9uc1tncm91cF0ubGVuZ3RoID4gMCA/IChcbiAgICAgICAgICAgICAgICA8RHJvcGRvd25Hcm91cFdyYXBwZXIgaWQ9e3NlbGVjdEFsbEdyb3VwID8gJ2l0ZW1zJyA6IHVuZGVmaW5lZH0+XG4gICAgICAgICAgICAgICAgICB7Z3JvdXAgPyAoXG4gICAgICAgICAgICAgICAgICAgIDxEcm9wZG93bkdyb3VwXG4gICAgICAgICAgICAgICAgICAgICAga2V5PXtncm91cH1cbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICB0YWJJbmRleD17c2VsZWN0QWxsR3JvdXAgPyAwIDogLTF9XG4gICAgICAgICAgICAgICAgICAgICAgb25LZXlEb3duPXtldmVudCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoWycgJywgJ0VudGVyJ10uaW5jbHVkZXMoZXZlbnQua2V5KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZVNlbGVjdEdyb3VwKGdyb3VwKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgZGF0YS1zZWxlY3Rncm91cD17c2VsZWN0QWxsR3JvdXB9XG4gICAgICAgICAgICAgICAgICAgICAgcm9sZT1cImdyb3VwXCJcbiAgICAgICAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD17YGdyb3VwLSR7aW5kZXh9YH1cbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0QWxsR3JvdXAgPyBoYW5kbGVTZWxlY3RHcm91cChncm91cCkgOiBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAge3NlbGVjdEFsbEdyb3VwID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgPFN0eWxlZENoZWNrYm94XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e3NlbGVjdGVkRGF0YS5zZWxlY3RlZEdyb3Vwcy5pbmNsdWRlcyhncm91cCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2dyb3VwfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD1cInNlbGVjdC1ncm91cFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRhYkluZGV4PXstMX1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPFRleHQgdmFyaWFudD1cImNhcHRpb25cIiBhcz1cInNwYW5cIiBwbGFjZW1lbnQ9XCJsZWZ0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2dyb3VwLnRvVXBwZXJDYXNlKCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvU3R5bGVkQ2hlY2tib3g+XG4gICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxUZXh0XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJjYXB0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYXM9XCJzcGFuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwibGVmdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNlbnRpbWVudD1cIm5ldXRyYWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7Z3JvdXAudG9VcHBlckNhc2UoKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICA8L0Ryb3Bkb3duR3JvdXA+XG4gICAgICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgICAgICA8L0Ryb3Bkb3duR3JvdXBXcmFwcGVyPlxuICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgICAgPFN0YWNrIGlkPVwiaXRlbXNcIiBnYXA9XCIwLjI1XCI+XG4gICAgICAgICAgICAgICAge2Rpc3BsYXllZE9wdGlvbnNbZ3JvdXBdLm1hcCgob3B0aW9uLCBpbmRleE9wdGlvbikgPT4gKFxuICAgICAgICAgICAgICAgICAgPERyb3Bkb3duSXRlbVxuICAgICAgICAgICAgICAgICAgICBrZXk9e29wdGlvbi52YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgYXJpYS1kaXNhYmxlZD17ISFvcHRpb24uZGlzYWJsZWR9XG4gICAgICAgICAgICAgICAgICAgIHRhYkluZGV4PXshb3B0aW9uLmRpc2FibGVkID8gMCA6IC0xfVxuICAgICAgICAgICAgICAgICAgICBhcmlhLXNlbGVjdGVkPXtcbiAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZERhdGEuc2VsZWN0ZWRWYWx1ZXMuaW5jbHVkZXMob3B0aW9uLnZhbHVlKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICFvcHRpb24uZGlzYWJsZWRcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPXtvcHRpb24udmFsdWV9XG4gICAgICAgICAgICAgICAgICAgIGRhdGEtdGVzdGlkPXtgb3B0aW9uLSR7b3B0aW9uLnZhbHVlfWB9XG4gICAgICAgICAgICAgICAgICAgIGlkPXtgb3B0aW9uLSR7aW5kZXhPcHRpb259YH1cbiAgICAgICAgICAgICAgICAgICAgcm9sZT1cIm9wdGlvblwiXG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoIW9wdGlvbi5kaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlQ2xpY2sob3B0aW9uLCBncm91cClcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgIG9uS2V5RG93bj17ZXZlbnQgPT5cbiAgICAgICAgICAgICAgICAgICAgICBbJyAnLCAnRW50ZXInXS5pbmNsdWRlcyhldmVudC5rZXkpXG4gICAgICAgICAgICAgICAgICAgICAgICA/IGhhbmRsZUNsaWNrKG9wdGlvbiwgZ3JvdXApXG4gICAgICAgICAgICAgICAgICAgICAgICA6IG51bGxcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZWY9e1xuICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbi52YWx1ZSA9PT0gZGVmYXVsdFNlYXJjaFZhbHVlIHx8XG4gICAgICAgICAgICAgICAgICAgICAgb3B0aW9uLnNlYXJjaFRleHQgPT09IGRlZmF1bHRTZWFyY2hWYWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgPyBmb2N1c2VkSXRlbVJlZlxuICAgICAgICAgICAgICAgICAgICAgICAgOiBudWxsXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge211bHRpc2VsZWN0ID8gKFxuICAgICAgICAgICAgICAgICAgICAgIDxTdHlsZWRDaGVja2JveFxuICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tlZD17XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkRGF0YS5zZWxlY3RlZFZhbHVlcy5pbmNsdWRlcyhvcHRpb24udmFsdWUpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICFvcHRpb24uZGlzYWJsZWRcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtvcHRpb24uZGlzYWJsZWR9XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17b3B0aW9uLnZhbHVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgdGFiSW5kZXg9ey0xfVxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxEaXNwbGF5T3B0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbj17b3B0aW9ufVxuICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbkRpcmVjdGlvbj17ZGVzY3JpcHRpb25EaXJlY3Rpb259XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsSW5mb1BsYWNlbWVudD17b3B0aW9uYWxJbmZvUGxhY2VtZW50fVxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8L1N0eWxlZENoZWNrYm94PlxuICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgIDxEaXNwbGF5T3B0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb249e29wdGlvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uRGlyZWN0aW9uPXtkZXNjcmlwdGlvbkRpcmVjdGlvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsSW5mb1BsYWNlbWVudD17b3B0aW9uYWxJbmZvUGxhY2VtZW50fVxuICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICA8L0Ryb3Bkb3duSXRlbT5cbiAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgPC9TdGFjaz5cbiAgICAgICAgICAgIDwvU3RhY2s+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvPlxuICAgICAgKX1cbiAgICAgIHtsb2FkTW9yZSA/IDxMb2FkTW9yZT57bG9hZE1vcmV9PC9Mb2FkTW9yZT4gOiBudWxsfVxuICAgIDwvRHJvcGRvd25Db250YWluZXI+XG4gICkgOiAoXG4gICAgPERyb3Bkb3duQ29udGFpbmVyXG4gICAgICByb2xlPVwibGlzdGJveFwiXG4gICAgICB0YWJJbmRleD17LTF9XG4gICAgICBpZD1cInNlbGVjdC1kcm9wZG93blwiXG4gICAgICBvbktleURvd249e2hhbmRsZUtleURvd25TZWxlY3R9XG4gICAgICBnYXA9ezAuMjV9XG4gICAgICBkYXRhLWdyb3VwZWQ9e2ZhbHNlfVxuICAgID5cbiAgICAgIHtzZWxlY3RBbGwgJiYgbXVsdGlzZWxlY3QgPyAoXG4gICAgICAgIDxTdGFjayBpZD1cIml0ZW1zXCIgZ2FwPXswLjI1fSB0YWJJbmRleD17LTF9PlxuICAgICAgICAgIDxEcm9wZG93bkl0ZW1cbiAgICAgICAgICAgIGFyaWEtZGlzYWJsZWQ9e2ZhbHNlfVxuICAgICAgICAgICAgYXJpYS1zZWxlY3RlZD17c2VsZWN0ZWREYXRhLmFsbFNlbGVjdGVkfVxuICAgICAgICAgICAgYXJpYS1sYWJlbD1cInNlbGVjdC1hbGxcIlxuICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJzZWxlY3QtYWxsXCJcbiAgICAgICAgICAgIHRhYkluZGV4PXswfVxuICAgICAgICAgICAgcm9sZT1cIm9wdGlvblwiXG4gICAgICAgICAgICBvbktleURvd249e2V2ZW50ID0+XG4gICAgICAgICAgICAgIFsnICcsICdFbnRlciddLmluY2x1ZGVzKGV2ZW50LmtleSkgPyBzZWxlY3RBbGxPcHRpb25zKCkgOiBudWxsXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvbkNsaWNrPXtzZWxlY3RBbGxPcHRpb25zfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxTdHlsZWRDaGVja2JveFxuICAgICAgICAgICAgICBjaGVja2VkPXtzZWxlY3RlZERhdGEuYWxsU2VsZWN0ZWR9XG4gICAgICAgICAgICAgIGRpc2FibGVkPXtmYWxzZX1cbiAgICAgICAgICAgICAgdmFsdWU9XCJzZWxlY3QtYWxsXCJcbiAgICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJzZWxlY3QtYWxsLWNoZWNrYm94XCJcbiAgICAgICAgICAgICAgdGFiSW5kZXg9ey0xfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8U3RhY2sgZGlyZWN0aW9uPVwiY29sdW1uXCI+XG4gICAgICAgICAgICAgICAgPFRleHQgYXM9XCJzcGFuXCIgdmFyaWFudD1cImJvZHlcIiBwbGFjZW1lbnQ9XCJsZWZ0XCI+XG4gICAgICAgICAgICAgICAgICB7c2VsZWN0QWxsLmxhYmVsfVxuICAgICAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgICAgICA8VGV4dFxuICAgICAgICAgICAgICAgICAgYXM9XCJzcGFuXCJcbiAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJib2R5U21hbGxcIlxuICAgICAgICAgICAgICAgICAgc2VudGltZW50PVwibmV1dHJhbFwiXG4gICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJsZWZ0XCJcbiAgICAgICAgICAgICAgICAgIHByb21pbmVuY2U9XCJ3ZWFrXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICB7c2VsZWN0QWxsLmRlc2NyaXB0aW9ufVxuICAgICAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgICAgPC9TdGFjaz5cbiAgICAgICAgICAgIDwvU3R5bGVkQ2hlY2tib3g+XG4gICAgICAgICAgPC9Ecm9wZG93bkl0ZW0+XG4gICAgICAgIDwvU3RhY2s+XG4gICAgICApIDogbnVsbH1cbiAgICAgIDxTdGFjayBpZD1cIml0ZW1zXCIgZ2FwPXswLjI1fT5cbiAgICAgICAge2lzTG9hZGluZyA/IChcbiAgICAgICAgICA8U2tlbGV0b24gdmFyaWFudD1cImJsb2NrXCIgLz5cbiAgICAgICAgKSA6IChcbiAgICAgICAgICBkaXNwbGF5ZWRPcHRpb25zLm1hcCgob3B0aW9uLCBpbmRleCkgPT4gKFxuICAgICAgICAgICAgPERyb3Bkb3duSXRlbVxuICAgICAgICAgICAgICBrZXk9e29wdGlvbi52YWx1ZX1cbiAgICAgICAgICAgICAgYXJpYS1kaXNhYmxlZD17ISFvcHRpb24uZGlzYWJsZWR9XG4gICAgICAgICAgICAgIGFyaWEtc2VsZWN0ZWQ9e1xuICAgICAgICAgICAgICAgIHNlbGVjdGVkRGF0YS5zZWxlY3RlZFZhbHVlcy5pbmNsdWRlcyhvcHRpb24udmFsdWUpICYmXG4gICAgICAgICAgICAgICAgIW9wdGlvbi5kaXNhYmxlZFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIW9wdGlvbi5kaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgICAgaGFuZGxlQ2xpY2sob3B0aW9uKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgYXJpYS1sYWJlbD17b3B0aW9uLnZhbHVlfVxuICAgICAgICAgICAgICBkYXRhLXRlc3RpZD17YG9wdGlvbi0ke29wdGlvbi52YWx1ZX1gfVxuICAgICAgICAgICAgICBpZD17YG9wdGlvbi0ke2luZGV4fWB9XG4gICAgICAgICAgICAgIHJvbGU9XCJvcHRpb25cIlxuICAgICAgICAgICAgICB0YWJJbmRleD17IW9wdGlvbi5kaXNhYmxlZCA/IDAgOiAtMX1cbiAgICAgICAgICAgICAgcmVmPXtcbiAgICAgICAgICAgICAgICBvcHRpb24udmFsdWUgPT09IGRlZmF1bHRTZWFyY2hWYWx1ZSB8fFxuICAgICAgICAgICAgICAgIG9wdGlvbi5zZWFyY2hUZXh0ID09PSBkZWZhdWx0U2VhcmNoVmFsdWVcbiAgICAgICAgICAgICAgICAgID8gZm9jdXNlZEl0ZW1SZWZcbiAgICAgICAgICAgICAgICAgIDogbnVsbFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIG9uS2V5RG93bj17ZXZlbnQgPT5cbiAgICAgICAgICAgICAgICBbJyAnLCAnRW50ZXInXS5pbmNsdWRlcyhldmVudC5rZXkpID8gaGFuZGxlQ2xpY2sob3B0aW9uKSA6IG51bGxcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7bXVsdGlzZWxlY3QgPyAoXG4gICAgICAgICAgICAgICAgPFN0eWxlZENoZWNrYm94XG4gICAgICAgICAgICAgICAgICBjaGVja2VkPXtcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzLmluY2x1ZGVzKG9wdGlvbi52YWx1ZSkgJiZcbiAgICAgICAgICAgICAgICAgICAgIW9wdGlvbi5kaXNhYmxlZFxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e29wdGlvbi5kaXNhYmxlZH1cbiAgICAgICAgICAgICAgICAgIHZhbHVlPXtvcHRpb24udmFsdWV9XG4gICAgICAgICAgICAgICAgICB0YWJJbmRleD17LTF9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPERpc3BsYXlPcHRpb25cbiAgICAgICAgICAgICAgICAgICAgb3B0aW9uPXtvcHRpb259XG4gICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uRGlyZWN0aW9uPXtkZXNjcmlwdGlvbkRpcmVjdGlvbn1cbiAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWxJbmZvUGxhY2VtZW50PXtvcHRpb25hbEluZm9QbGFjZW1lbnR9XG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvU3R5bGVkQ2hlY2tib3g+XG4gICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgPERpc3BsYXlPcHRpb25cbiAgICAgICAgICAgICAgICAgIG9wdGlvbj17b3B0aW9ufVxuICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb25EaXJlY3Rpb249e2Rlc2NyaXB0aW9uRGlyZWN0aW9ufVxuICAgICAgICAgICAgICAgICAgb3B0aW9uYWxJbmZvUGxhY2VtZW50PXtvcHRpb25hbEluZm9QbGFjZW1lbnR9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvRHJvcGRvd25JdGVtPlxuICAgICAgICAgICkpXG4gICAgICAgICl9XG4gICAgICAgIHtsb2FkTW9yZSA/IDxMb2FkTW9yZT57bG9hZE1vcmV9PC9Mb2FkTW9yZT4gOiBudWxsfVxuICAgICAgPC9TdGFjaz5cbiAgICA8L0Ryb3Bkb3duQ29udGFpbmVyPlxuICApXG59XG5leHBvcnQgY29uc3QgRHJvcGRvd24gPSAoe1xuICBjaGlsZHJlbixcbiAgZW1wdHlTdGF0ZSxcbiAgZGVzY3JpcHRpb25EaXJlY3Rpb24sXG4gIHNlYXJjaGFibGUsXG4gIHBsYWNlaG9sZGVyLFxuICBmb290ZXIsXG4gIHJlZlNlbGVjdCxcbiAgbG9hZE1vcmUsXG4gIG9wdGlvbmFsSW5mb1BsYWNlbWVudCxcbiAgaXNMb2FkaW5nLFxuICBzaXplLFxufTogRHJvcGRvd25Qcm9wcykgPT4ge1xuICBjb25zdCB7XG4gICAgc2V0SXNEcm9wZG93blZpc2libGUsXG4gICAgaXNEcm9wZG93blZpc2libGUsXG4gICAgb25TZWFyY2gsXG4gICAgc2VhcmNoSW5wdXQsXG4gICAgb3B0aW9ucyxcbiAgICBkaXNwbGF5ZWRPcHRpb25zLFxuICAgIG51bWJlck9mT3B0aW9ucyxcbiAgfSA9IHVzZVNlbGVjdElucHV0KClcbiAgY29uc3QgdGhlbWUgPSB1c2VUaGVtZSgpXG4gIGNvbnN0IFtzZWFyY2hCYXJBY3RpdmUsIHNldFNlYXJjaEJhckFjdGl2ZV0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW2RlZmF1bHRTZWFyY2hWYWx1ZSwgc2V0RGVmYXVsdFNlYXJjaF0gPSB1c2VTdGF0ZTxzdHJpbmcgfCBudWxsPihudWxsKVxuICBjb25zdCByZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IFtzZWFyY2gsIHNldFNlYXJjaF0gPSB1c2VTdGF0ZTxzdHJpbmc+KCcnKVxuICBjb25zdCBbbWF4V2lkdGgsIHNldFdpZHRoXSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bWJlcj4oKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHJlZlNlbGVjdC5jdXJyZW50ICYmIGlzRHJvcGRvd25WaXNpYmxlKSB7XG4gICAgICBjb25zdCBwb3NpdGlvbiA9XG4gICAgICAgIHJlZlNlbGVjdC5jdXJyZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmJvdHRvbSArXG4gICAgICAgIERST1BET1dOX01BWF9IRUlHSFQgK1xuICAgICAgICBJTlBVVF9TSVpFX0hFSUdIVFtzaXplXSArXG4gICAgICAgIHBhcnNlSW50KHRoZW1lLnNwYWNlWyc1J10sIDEwKVxuICAgICAgY29uc3Qgb3ZlcmZsb3cgPSBwb3NpdGlvbiAtIHdpbmRvdy5pbm5lckhlaWdodFxuICAgICAgaWYgKG92ZXJmbG93ID4gMCkge1xuICAgICAgICBjb25zdCBtb2RhbEVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYmFja2Ryb3AtbW9kYWwnKVxuXG4gICAgICAgIGlmIChtb2RhbEVsZW1lbnQpIHtcbiAgICAgICAgICBtb2RhbEVsZW1lbnQuc2Nyb2xsQnkoeyB0b3A6IG92ZXJmbG93LCBiZWhhdmlvcjogJ3Ntb290aCcgfSlcbiAgICAgICAgfSBlbHNlIHdpbmRvdy5zY3JvbGxCeSh7IHRvcDogb3ZlcmZsb3csIGJlaGF2aW9yOiAnc21vb3RoJyB9KVxuICAgICAgfVxuICAgIH1cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvZXhoYXVzdGl2ZS1kZXBzXG4gIH0sIFtpc0Ryb3Bkb3duVmlzaWJsZSwgcmVmU2VsZWN0LCBzaXplLCByZWYuY3VycmVudF0pXG5cbiAgY29uc3QgcmVzaXplRHJvcGRvd24gPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKFxuICAgICAgcmVmU2VsZWN0LmN1cnJlbnQgJiZcbiAgICAgIHJlZlNlbGVjdC5jdXJyZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoID4gMFxuICAgICkge1xuICAgICAgc2V0V2lkdGgocmVmU2VsZWN0LmN1cnJlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGgpXG4gICAgfVxuICB9LCBbcmVmU2VsZWN0XSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHJlc2l6ZURyb3Bkb3duKClcblxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCByZXNpemVEcm9wZG93bilcblxuICAgIHJldHVybiAoKSA9PiB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgcmVzaXplRHJvcGRvd24pXG4gIH0sIFtyZXNpemVEcm9wZG93bl0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIXNlYXJjaElucHV0KSB7XG4gICAgICBvblNlYXJjaChvcHRpb25zKVxuICAgIH1cbiAgfSwgW29uU2VhcmNoLCBvcHRpb25zLCBzZWFyY2hJbnB1dF0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWlzRHJvcGRvd25WaXNpYmxlKSB7XG4gICAgICBzZXREZWZhdWx0U2VhcmNoKG51bGwpXG4gICAgICBzZXRTZWFyY2goJycpXG4gICAgfVxuXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgZXZlbnQgPT5cbiAgICAgIGhhbmRsZUNsaWNrT3V0c2lkZShcbiAgICAgICAgZXZlbnQsXG4gICAgICAgIHJlZixcbiAgICAgICAgc2V0SXNEcm9wZG93blZpc2libGUsXG4gICAgICAgIHJlZlNlbGVjdCxcbiAgICAgICAgb25TZWFyY2gsXG4gICAgICAgIG9wdGlvbnMsXG4gICAgICApLFxuICAgIClcblxuICAgIGlmICghc2VhcmNoYWJsZSkge1xuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIGV2ZW50ID0+XG4gICAgICAgIGhhbmRsZUtleURvd24oXG4gICAgICAgICAgZXZlbnQsXG4gICAgICAgICAgcmVmLFxuICAgICAgICAgIG9wdGlvbnMsXG4gICAgICAgICAgc2VhcmNoQmFyQWN0aXZlLFxuICAgICAgICAgIHNldFNlYXJjaCxcbiAgICAgICAgICBzZXREZWZhdWx0U2VhcmNoLFxuICAgICAgICAgIHNlYXJjaCxcbiAgICAgICAgKSxcbiAgICAgIClcbiAgICB9XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgZXZlbnQgPT5cbiAgICAgICAgaGFuZGxlQ2xpY2tPdXRzaWRlKFxuICAgICAgICAgIGV2ZW50LFxuICAgICAgICAgIHJlZixcbiAgICAgICAgICBzZXRJc0Ryb3Bkb3duVmlzaWJsZSxcbiAgICAgICAgICByZWZTZWxlY3QsXG4gICAgICAgICAgb25TZWFyY2gsXG4gICAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgKSxcbiAgICAgIClcblxuICAgICAgaWYgKCFzZWFyY2hhYmxlKSB7XG4gICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBldmVudCA9PlxuICAgICAgICAgIGhhbmRsZUtleURvd24oXG4gICAgICAgICAgICBldmVudCxcbiAgICAgICAgICAgIHJlZixcbiAgICAgICAgICAgIG9wdGlvbnMsXG4gICAgICAgICAgICBzZWFyY2hCYXJBY3RpdmUsXG4gICAgICAgICAgICBzZXRTZWFyY2gsXG4gICAgICAgICAgICBzZXREZWZhdWx0U2VhcmNoLFxuICAgICAgICAgICAgc2VhcmNoLFxuICAgICAgICAgICksXG4gICAgICAgIClcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtcbiAgICBpc0Ryb3Bkb3duVmlzaWJsZSxcbiAgICBzZWFyY2hCYXJBY3RpdmUsXG4gICAgb3B0aW9ucyxcbiAgICBvblNlYXJjaCxcbiAgICBzZWFyY2gsXG4gICAgcmVmU2VsZWN0LFxuICAgIHNldERlZmF1bHRTZWFyY2gsXG4gICAgc2V0SXNEcm9wZG93blZpc2libGUsXG4gICAgc2VhcmNoYWJsZSxcbiAgXSlcblxuICAvLyBObyBkYXRhIGlzIGRpc3BsYXllZCAoYmVjYXVzZSBvZiB0aGUgc2VhcmNoIG9yIGJlY2F1c2Ugbm8gZGF0YSBpcyBwcm92aWRlZClcbiAgLy8gU2V0IHRvIHRydWUgd2hlbiBub0RhdGEgYnkgZGVmYXVsdFxuICBjb25zdCBpc0VtcHR5ID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKG51bWJlck9mT3B0aW9ucyA9PT0gMCkgcmV0dXJuIHRydWVcbiAgICBpZiAoQXJyYXkuaXNBcnJheShkaXNwbGF5ZWRPcHRpb25zKSkge1xuICAgICAgcmV0dXJuICEoZGlzcGxheWVkT3B0aW9ucy5sZW5ndGggPiAwKVxuICAgIH1cbiAgICBjb25zdCBncm91cHMgPSBPYmplY3Qua2V5cyhkaXNwbGF5ZWRPcHRpb25zKVxuICAgIGZvciAoY29uc3QgZ3JvdXAgb2YgZ3JvdXBzKSB7XG4gICAgICBpZiAoZGlzcGxheWVkT3B0aW9uc1tncm91cF0ubGVuZ3RoICE9PSAwKSB7XG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0cnVlXG4gIH0sIFtkaXNwbGF5ZWRPcHRpb25zLCBudW1iZXJPZk9wdGlvbnNdKVxuXG4gIGNvbnN0IGNvbXB1dGVkRm9vdGVyID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKGZvb3Rlcikge1xuICAgICAgaWYgKHR5cGVvZiBmb290ZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICA8UG9wdXBGb290ZXI+e2Zvb3RlcigoKSA9PiBzZXRJc0Ryb3Bkb3duVmlzaWJsZShmYWxzZSkpfTwvUG9wdXBGb290ZXI+XG4gICAgICAgIClcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIDxQb3B1cEZvb3Rlcj57Zm9vdGVyfTwvUG9wdXBGb290ZXI+XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGxcbiAgfSwgW2Zvb3Rlciwgc2V0SXNEcm9wZG93blZpc2libGVdKVxuXG4gIHJldHVybiAoXG4gICAgPFN0eWxlZFBvcHVwXG4gICAgICB2aXNpYmxlPXtpc0Ryb3Bkb3duVmlzaWJsZX1cbiAgICAgIHRleHQ9e1xuICAgICAgICA8U3RhY2s+XG4gICAgICAgICAge3NlYXJjaGFibGUgJiYgIWlzTG9hZGluZyAmJiBudW1iZXJPZk9wdGlvbnMgPj0gNiA/IChcbiAgICAgICAgICAgIDxTZWFyY2hCYXJEcm9wZG93blxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj17cGxhY2Vob2xkZXJ9XG4gICAgICAgICAgICAgIGRpc3BsYXllZE9wdGlvbnM9e2Rpc3BsYXllZE9wdGlvbnN9XG4gICAgICAgICAgICAgIHNldFNlYXJjaEJhckFjdGl2ZT17c2V0U2VhcmNoQmFyQWN0aXZlfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICA8Q3JlYXRlRHJvcGRvd25cbiAgICAgICAgICAgIGlzRW1wdHk9e2lzRW1wdHl9XG4gICAgICAgICAgICBlbXB0eVN0YXRlPXtlbXB0eVN0YXRlfVxuICAgICAgICAgICAgZGVzY3JpcHRpb25EaXJlY3Rpb249e2Rlc2NyaXB0aW9uRGlyZWN0aW9ufVxuICAgICAgICAgICAgbG9hZE1vcmU9e2xvYWRNb3JlfVxuICAgICAgICAgICAgb3B0aW9uYWxJbmZvUGxhY2VtZW50PXtvcHRpb25hbEluZm9QbGFjZW1lbnR9XG4gICAgICAgICAgICBkZWZhdWx0U2VhcmNoVmFsdWU9e2RlZmF1bHRTZWFyY2hWYWx1ZX1cbiAgICAgICAgICAgIGlzTG9hZGluZz17aXNMb2FkaW5nfVxuICAgICAgICAgIC8+XG4gICAgICAgICAge2NvbXB1dGVkRm9vdGVyfVxuICAgICAgICA8L1N0YWNrPlxuICAgICAgfVxuICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcbiAgICAgIGRpc2FibGVBbmltYXRpb25cbiAgICAgIG1heFdpZHRoPXttYXhXaWR0aCA/PyByZWZTZWxlY3QuY3VycmVudD8ub2Zmc2V0V2lkdGh9XG4gICAgICBoYXNBcnJvdz17ZmFsc2V9XG4gICAgICByZWY9e3JlZn1cbiAgICAgIHRhYkluZGV4PXswfVxuICAgICAgcm9sZT1cImRpYWxvZ1wiXG4gICAgICBkZWJvdW5jZURlbGF5PXswfVxuICAgICAgY29udGFpbmVyRnVsbFdpZHRoXG4gICAgICBhbGlnbj1cInN0YXJ0XCJcbiAgICA+XG4gICAgICB7Y2hpbGRyZW59XG4gICAgPC9TdHlsZWRQb3B1cD5cbiAgKVxufVxuIl19 */"));
39
39
  const DropdownContainer = /* @__PURE__ */ _styled__default.default(index$1.Stack, process.env.NODE_ENV === "production" ? {
40
40
  target: "eeucz6c7"
41
41
  } : {
@@ -49,7 +49,7 @@ const DropdownContainer = /* @__PURE__ */ _styled__default.default(index$1.Stack
49
49
  theme
50
50
  }) => theme.space[0.5], ';&[data-grouped="true"]{padding-top:', ({
51
51
  theme
52
- }) => theme.space[0], ";}" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL3VsdHJhdmlvbGV0L3VsdHJhdmlvbGV0L3BhY2thZ2VzL3VpL3NyYy9jb21wb25lbnRzL1NlbGVjdElucHV0VjIvRHJvcGRvd24udHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXFFb0UiLCJmaWxlIjoiL2hvbWUvcnVubmVyL3dvcmsvdWx0cmF2aW9sZXQvdWx0cmF2aW9sZXQvcGFja2FnZXMvdWkvc3JjL2NvbXBvbmVudHMvU2VsZWN0SW5wdXRWMi9Ecm9wZG93bi50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1c2VUaGVtZSB9IGZyb20gJ0BlbW90aW9uL3JlYWN0J1xuaW1wb3J0IHN0eWxlZCBmcm9tICdAZW1vdGlvbi9zdHlsZWQnXG5pbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VNZW1vLCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgdHlwZSB7XG4gIERpc3BhdGNoLFxuICBLZXlib2FyZEV2ZW50LFxuICBSZWFjdE5vZGUsXG4gIFJlZk9iamVjdCxcbiAgU2V0U3RhdGVBY3Rpb24sXG59IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgQ2hlY2tib3ggfSBmcm9tICcuLi9DaGVja2JveCdcbmltcG9ydCB7IFBvcHVwIH0gZnJvbSAnLi4vUG9wdXAnXG5pbXBvcnQgeyBTa2VsZXRvbiB9IGZyb20gJy4uL1NrZWxldG9uJ1xuaW1wb3J0IHsgU3RhY2sgfSBmcm9tICcuLi9TdGFjaydcbmltcG9ydCB7IFRleHQgfSBmcm9tICcuLi9UZXh0J1xuaW1wb3J0IHsgRGlzcGxheU9wdGlvbiB9IGZyb20gJy4vRHJvcGRvd25PcHRpb24nXG5pbXBvcnQgeyBTZWFyY2hCYXJEcm9wZG93biB9IGZyb20gJy4vU2VhcmNoQmFyRHJvcGRvd24nXG5pbXBvcnQgeyB1c2VTZWxlY3RJbnB1dCB9IGZyb20gJy4vU2VsZWN0SW5wdXRQcm92aWRlcidcbmltcG9ydCB7IHR5cGUgRGF0YVR5cGUsIElOUFVUX1NJWkVfSEVJR0hULCB0eXBlIE9wdGlvblR5cGUgfSBmcm9tICcuL3R5cGVzJ1xuXG5jb25zdCBEUk9QRE9XTl9NQVhfSEVJR0hUID0gMjU2XG5cbmV4cG9ydCB0eXBlIERyb3Bkb3duUHJvcHMgPSB7XG4gIGNoaWxkcmVuOiBSZWFjdE5vZGVcbiAgZW1wdHlTdGF0ZTogUmVhY3ROb2RlXG4gIGRlc2NyaXB0aW9uRGlyZWN0aW9uOiAncm93JyB8ICdjb2x1bW4nXG4gIHNlYXJjaGFibGU6IGJvb2xlYW5cbiAgcGxhY2Vob2xkZXI6IHN0cmluZ1xuICBmb290ZXI/OiBSZWFjdE5vZGVcbiAgcmVmU2VsZWN0OiBSZWZPYmplY3Q8SFRNTERpdkVsZW1lbnQ+XG4gIGxvYWRNb3JlPzogUmVhY3ROb2RlXG4gIG9wdGlvbmFsSW5mb1BsYWNlbWVudDogJ2xlZnQnIHwgJ3JpZ2h0J1xuICBpc0xvYWRpbmc/OiBib29sZWFuXG4gIHNpemU6ICdzbWFsbCcgfCAnbWVkaXVtJyB8ICdsYXJnZSdcbn1cblxuZXhwb3J0IHR5cGUgQ3JlYXRlRHJvcGRvd25Qcm9wcyA9IHtcbiAgaXNFbXB0eTogYm9vbGVhblxuICBlbXB0eVN0YXRlOiBSZWFjdE5vZGVcbiAgZGVzY3JpcHRpb25EaXJlY3Rpb246ICdyb3cnIHwgJ2NvbHVtbidcbiAgbG9hZE1vcmU/OiBSZWFjdE5vZGVcbiAgb3B0aW9uYWxJbmZvUGxhY2VtZW50OiAnbGVmdCcgfCAncmlnaHQnXG4gIGRlZmF1bHRTZWFyY2hWYWx1ZTogc3RyaW5nIHwgbnVsbFxuICBpc0xvYWRpbmc/OiBib29sZWFuXG59XG5cbmNvbnN0IE5PTl9TRUFSQ0hBQkxFX0tFWVMgPSBbXG4gICdUYWInLFxuICAnICcsXG4gICdFbnRlcicsXG4gICdDYXBzTG9jaycsXG4gICdTaGlmdCcsXG4gICdBcnJvd0Rvd24nLFxuICAnQXJyb3dVcCcsXG4gICdBcnJvd0xlZnQnLFxuICAnQXJyb3dSaWdodCcsXG4gICdFc2NhcGUnLFxuXVxuXG5jb25zdCBTdHlsZWRQb3B1cCA9IHN0eWxlZChQb3B1cClgXG4gIHdpZHRoOiAxMDAlO1xuICBtaW4td2lkdGg6IDMyMHB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5vdGhlci5lbGV2YXRpb24uYmFja2dyb3VuZC5yYWlzZWR9O1xuICBjb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMubmV1dHJhbC50ZXh0fTtcbiAgYm94LXNoYWRvdzogJHsoeyB0aGVtZSB9KSA9PiBgJHt0aGVtZS5zaGFkb3dzLnJhaXNlZFswXX0sICR7dGhlbWUuc2hhZG93cy5yYWlzZWRbMV19YH07XG4gIHBhZGRpbmc6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMF19O1xuICBtYXJnaW4tYm90dG9tOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzEwXX07XG5gXG5cbmNvbnN0IERyb3Bkb3duQ29udGFpbmVyID0gc3R5bGVkKFN0YWNrKTx7ICdkYXRhLWdyb3VwZWQnOiBib29sZWFuIH0+YFxuICBtYXgtaGVpZ2h0OiAke0RST1BET1dOX01BWF9IRUlHSFR9cHg7XG4gIG92ZXJmbG93LXk6IHNjcm9sbDtcbiAgcGFkZGluZzogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVswXX07XG4gIHBhZGRpbmctYm90dG9tOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzAuNV19O1xuICBwYWRkaW5nLXRvcDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVswLjVdfTtcblxuICAmW2RhdGEtZ3JvdXBlZD1cInRydWVcIl0ge1xuICAgIHBhZGRpbmctdG9wOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzBdfTtcbiAgfVxuYFxuY29uc3QgRHJvcGRvd25Hcm91cCA9IHN0eWxlZC5idXR0b248eyAnZGF0YS1zZWxlY3Rncm91cCc6IGJvb2xlYW4gfT5gXG4gIGRpc3BsYXk6IGZsZXg7XG4gIHdpZHRoOiAxMDAlO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGxlZnQ7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGJvcmRlcjogbm9uZTtcbiAgYmFja2dyb3VuZC1jb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMubmV1dHJhbC5iYWNrZ3JvdW5kV2Vha307XG4gIHBvc2l0aW9uOiBzdGlja3k7XG4gIHRvcDogMHB4O1xuICBwYWRkaW5nLXJpZ2h0OiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzJdfTtcbiAgcGFkZGluZy1sZWZ0OiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzJdfTtcbiAgaGVpZ2h0OiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzRdfTtcbiAgdGV4dC1hbGlnbjogbGVmdDtcbiAgbWFyZ2luLWJvdHRvbTogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsnMC4yNSddfTtcblxuICAmOmZvY3VzIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5uZXV0cmFsLmJhY2tncm91bmRXZWFrfTtcbiAgICBvdXRsaW5lOiBub25lO1xuICB9XG5cbiAgJltkYXRhLXNlbGVjdGdyb3VwPSd0cnVlJ10ge1xuICAgIHBhZGRpbmctbGVmdDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsyXX07XG4gICAgYm9yZGVyLWxlZnQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMC41XX0gc29saWQgJHsoeyB0aGVtZSB9KSA9PlxuICAgICAgdGhlbWUuY29sb3JzLm5ldXRyYWwuYmFja2dyb3VuZFdlYWt9O1xuICB9XG5cbiAgJltkYXRhLXNlbGVjdGdyb3VwPSd0cnVlJ106Zm9jdXMge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwuYmFja2dyb3VuZEhvdmVyfTtcbiAgfVxuYFxuY29uc3QgRHJvcGRvd25Hcm91cFdyYXBwZXIgPSBzdHlsZWQuZGl2YFxuICBwb3NpdGlvbjogc3RpY2t5O1xuICB0b3A6IDBweDtcbmBcbmNvbnN0IERyb3Bkb3duSXRlbSA9IHN0eWxlZC5kaXY8e1xuICAnYXJpYS1zZWxlY3RlZCc6IGJvb2xlYW5cbiAgJ2FyaWEtZGlzYWJsZWQnOiBib29sZWFuXG59PmBcbiAgdGV4dC1hbGlnbjpsZWZ0O1xuICBib3JkZXI6IG5vbmU7XG4gIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm90aGVyLmVsZXZhdGlvbi5iYWNrZ3JvdW5kLnJhaXNlZH07XG5cbiAgcGFkZGluZzogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsnMS41J119ICR7KHsgdGhlbWUgfSkgPT5cbiAgICB0aGVtZS5zcGFjZVsnMiddfSAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWycxLjUnXX0gJHsoeyB0aGVtZSB9KSA9PlxuICAgIHRoZW1lLnNwYWNlWycyJ119O1xuICBtYXJnaW4tbGVmdDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsnMC41J119O1xuICBtYXJnaW4tcmlnaHQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbJzAuNSddfTtcblxuICBjb2xvcjogICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwudGV4dH07XG4gIGJvcmRlci1yYWRpdXM6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUucmFkaWkuZGVmYXVsdH07XG5cbiAgJjpob3ZlciwgOmZvY3VzIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5wcmltYXJ5LmJhY2tncm91bmR9O1xuICAgIGNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5wcmltYXJ5LnRleHR9O1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBvdXRsaW5lOiBub25lO1xuICB9XG5cbiAgJlthcmlhLXNlbGVjdGVkPSd0cnVlJ10ge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLnByaW1hcnkuYmFja2dyb3VuZH07XG4gIH1cblxuICAmW2FyaWEtZGlzYWJsZWQ9XCJ0cnVlXCJdIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5uZXV0cmFsLmJhY2tncm91bmREaXNhYmxlZH07XG4gICAgY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwudGV4dERpc2FibGVkfTtcbiAgfVxuXG4gICZbYXJpYS1kaXNhYmxlZD1cInRydWVcIl06aG92ZXIsIFthcmlhLWRpc2FibGVkPVwidHJ1ZVwiXTpmb2N1cyB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHsoeyB0aGVtZSB9KSA9PlxuICAgICAgdGhlbWUuY29sb3JzLm5ldXRyYWwuYmFja2dyb3VuZFN0cm9uZ0Rpc2FibGVkfTtcbiAgICBjb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMubmV1dHJhbC50ZXh0U3Ryb25nRGlzYWJsZWR9O1xuICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgfVxuYFxuXG5jb25zdCBQb3B1cEZvb3RlciA9IHN0eWxlZC5kaXZgXG4gIHdpZHRoOiAxMDAlO1xuICBwYWRkaW5nOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzEuNV19ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMl19XG4gICAgJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsxLjVdfSAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzJdfTtcbiAgYm94LXNoYWRvdzogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zaGFkb3dzLmRyb3Bkb3dufTtcbmBcbmNvbnN0IFN0eWxlZENoZWNrYm94ID0gc3R5bGVkKENoZWNrYm94KWBcbiAgd2lkdGg6IDEwMCU7XG4gIHBvc2l0aW9uOiBzdGF0aWM7XG4gIHRleHQtYWxpZ246IGxlZnQ7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuYCAvLyBwb2ludGVyLWV2ZW50czogbm9uZSBwcmV2ZW50cyBhbnkgZXJyb3Igd2hlbiB1c2luZyB0aGUgY2hlY2tib3ggaW4gYSBmb3JtIHNpbmNlIGl0IGlzIGFuIHVubmFtZWQgaW5wdXRcblxuY29uc3QgRW1wdHlTdGF0ZSA9IHN0eWxlZChTdGFjaylgXG4gIHBhZGRpbmc6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMl19O1xuYFxuY29uc3QgTG9hZE1vcmUgPSBzdHlsZWQoU3RhY2spYFxuICBwYWRkaW5nOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzAuNV19O1xuYFxuXG5jb25zdCBtb3ZlRm9jdXNEb3duID0gKCkgPT4ge1xuICBjb25zdCBvcHRpb25zID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcbiAgICAnI2l0ZW1zID4gZGl2W3JvbGU9XCJvcHRpb25cIl06bm90KFtkaXNhYmxlZF0pJyxcbiAgKVxuICBjb25zdCBhY3RpdmVJdGVtID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudFxuICBpZiAob3B0aW9ucykge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgb3B0aW9ucz8ubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgIGNvbnN0IGxpc3RMZW5ndGggPSBvcHRpb25zLmxlbmd0aFxuICAgICAgaWYgKGFjdGl2ZUl0ZW0gPT09IG9wdGlvbnNbaV0gJiYgYWN0aXZlSXRlbSAhPT0gb3B0aW9uc1tsaXN0TGVuZ3RoIC0gMV0pIHtcbiAgICAgICAgOyhvcHRpb25zW2kgKyAxXSBhcyBIVE1MRWxlbWVudCkuZm9jdXMoKVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuY29uc3QgbW92ZUZvY3VzVXAgPSAoKSA9PiB7XG4gIGNvbnN0IG9wdGlvbnMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFxuICAgICcjaXRlbXMgPiBkaXZbcm9sZT1cIm9wdGlvblwiXTpub3QoW2Rpc2FibGVkXSknLFxuICApXG4gIGNvbnN0IGFjdGl2ZUl0ZW0gPSBkb2N1bWVudC5hY3RpdmVFbGVtZW50XG5cbiAgaWYgKG9wdGlvbnMpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG9wdGlvbnMubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgIGlmIChhY3RpdmVJdGVtID09PSBvcHRpb25zW2ldICYmIGFjdGl2ZUl0ZW0gIT09IG9wdGlvbnNbMF0pIHtcbiAgICAgICAgOyhvcHRpb25zW2kgLSAxXSBhcyBIVE1MRWxlbWVudCkuZm9jdXMoKVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuY29uc3QgaGFuZGxlS2V5RG93blNlbGVjdCA9IChldmVudDogS2V5Ym9hcmRFdmVudDxIVE1MRGl2RWxlbWVudD4pID0+IHtcbiAgaWYgKGV2ZW50LmtleSA9PT0gJ0Fycm93RG93bicpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgbW92ZUZvY3VzRG93bigpXG4gIH1cblxuICBpZiAoZXZlbnQua2V5ID09PSAnQXJyb3dVcCcpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgbW92ZUZvY3VzVXAoKVxuICB9XG59XG5jb25zdCBoYW5kbGVDbGlja091dHNpZGUgPSAoXG4gIGV2ZW50OiBNb3VzZUV2ZW50LFxuICByZWY6IFJlZk9iamVjdDxIVE1MRGl2RWxlbWVudD4sXG4gIHNldElzRHJvcGRvd25WaXNpYmlsZTogRGlzcGF0Y2g8U2V0U3RhdGVBY3Rpb248Ym9vbGVhbj4+LFxuICByZWZTZWxlY3Q6IFJlZk9iamVjdDxIVE1MRGl2RWxlbWVudD4sXG4gIG9uU2VhcmNoOiBEaXNwYXRjaDxTZXRTdGF0ZUFjdGlvbjxEYXRhVHlwZT4+LFxuICBvcHRpb25zOiBEYXRhVHlwZSxcbikgPT4ge1xuICBpZiAoXG4gICAgcmVmLmN1cnJlbnQgJiZcbiAgICAhcmVmLmN1cnJlbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0IGFzIE5vZGUpICYmXG4gICAgIXJlZlNlbGVjdC5jdXJyZW50Py5jb250YWlucyhldmVudC50YXJnZXQgYXMgTm9kZSlcbiAgKSB7XG4gICAgc2V0SXNEcm9wZG93blZpc2liaWxlKGZhbHNlKSAvLyBoaWRlIGRyb3Bkb3duIHdoZW4gY2xpY2tpbmcgb3V0c2lkZSBvZiB0aGUgZHJvcGRvd25cbiAgICBvblNlYXJjaChvcHRpb25zKSAvLyByZXNldCBkaXNwbGF5ZWQgb3B0aW9ucyB0byBkZWZhdWx0IHdoZW4gZHJvcGRvd24gaXMgaGlkZGVuXG4gIH1cbn1cblxuY29uc3QgaGFuZGxlS2V5RG93biA9IChcbiAgZXZlbnQ6IGdsb2JhbFRoaXMuS2V5Ym9hcmRFdmVudCxcbiAgcmVmOiBSZWZPYmplY3Q8SFRNTERpdkVsZW1lbnQ+LFxuICBvcHRpb25zOiBEYXRhVHlwZSxcbiAgc2VhcmNoQmFyQWN0aXZlOiBib29sZWFuLFxuICBzZXRTZWFyY2g6IERpc3BhdGNoPFNldFN0YXRlQWN0aW9uPHN0cmluZz4+LFxuICBzZXREZWZhdWx0U2VhcmNoOiBEaXNwYXRjaDxTZXRTdGF0ZUFjdGlvbjxzdHJpbmcgfCBudWxsPj4sXG4gIHNlYXJjaDogc3RyaW5nLFxuKSA9PiB7XG4gIC8vIERlYWxzIHdpdGggZGVmYXVsdCBzZWFyY2hcbiAgaWYgKFxuICAgIHJlZi5jdXJyZW50ICYmXG4gICAgIXNlYXJjaEJhckFjdGl2ZSAmJlxuICAgICFOT05fU0VBUkNIQUJMRV9LRVlTLmluY2x1ZGVzKGV2ZW50LmtleSkgJiZcbiAgICBkb2N1bWVudC5hY3RpdmVFbGVtZW50Py5hcmlhTGFiZWwgIT09ICdzZWFyY2gtYmFyJ1xuICApIHtcbiAgICBjb25zdCBjdXJyZW50U2VhcmNoID0gc2VhcmNoICsgZXZlbnQua2V5XG4gICAgc2V0U2VhcmNoKGN1cnJlbnRTZWFyY2gpXG4gICAgcmVmLmN1cnJlbnQuZm9jdXMoKVxuICAgIGlmICghQXJyYXkuaXNBcnJheShvcHRpb25zKSkge1xuICAgICAgY29uc3QgY2xvc2VzdE9wdGlvbnMgPSB7IC4uLm9wdGlvbnMgfVxuICAgICAgT2JqZWN0LmtleXMoY2xvc2VzdE9wdGlvbnMpLm1hcCgoZ3JvdXA6IHN0cmluZykgPT4ge1xuICAgICAgICBjbG9zZXN0T3B0aW9uc1tncm91cF0gPSBjbG9zZXN0T3B0aW9uc1tncm91cF0uZmlsdGVyKG9wdGlvbiA9PlxuICAgICAgICAgIG9wdGlvbi5zZWFyY2hUZXh0XG4gICAgICAgICAgICA/IG9wdGlvbi5zZWFyY2hUZXh0LnRvTG9jYWxlTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChjdXJyZW50U2VhcmNoKVxuICAgICAgICAgICAgOiBvcHRpb24udmFsdWUudG9Mb2NhbGVMb3dlckNhc2UoKS5zdGFydHNXaXRoKGN1cnJlbnRTZWFyY2gpLFxuICAgICAgICApXG5cbiAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgIH0pXG4gICAgICBjb25zdCBjbG9zZXN0T3B0aW9uID0gY2xvc2VzdE9wdGlvbnNbT2JqZWN0LmtleXMoY2xvc2VzdE9wdGlvbnMpWzBdXVswXVxuICAgICAgaWYgKGNsb3Nlc3RPcHRpb24pIHtcbiAgICAgICAgc2V0RGVmYXVsdFNlYXJjaChjbG9zZXN0T3B0aW9uLnNlYXJjaFRleHQgPz8gY2xvc2VzdE9wdGlvbi52YWx1ZSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNldERlZmF1bHRTZWFyY2gobnVsbClcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgY2xvc2VzdE9wdGlvbiA9IFsuLi5vcHRpb25zXS5maWx0ZXIob3B0aW9uID0+XG4gICAgICAgIG9wdGlvbi5zZWFyY2hUZXh0XG4gICAgICAgICAgPyBvcHRpb24uc2VhcmNoVGV4dC50b0xvY2FsZUxvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoY3VycmVudFNlYXJjaClcbiAgICAgICAgICA6IG9wdGlvbi52YWx1ZS50b0xvY2FsZUxvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoY3VycmVudFNlYXJjaCksXG4gICAgICApWzBdXG4gICAgICBpZiAoY2xvc2VzdE9wdGlvbikge1xuICAgICAgICBzZXREZWZhdWx0U2VhcmNoKGNsb3Nlc3RPcHRpb24uc2VhcmNoVGV4dCA/PyBjbG9zZXN0T3B0aW9uLnZhbHVlKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2V0RGVmYXVsdFNlYXJjaChudWxsKVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuY29uc3QgQ3JlYXRlRHJvcGRvd24gPSAoe1xuICBpc0VtcHR5LFxuICBlbXB0eVN0YXRlLFxuICBkZXNjcmlwdGlvbkRpcmVjdGlvbixcbiAgbG9hZE1vcmUsXG4gIG9wdGlvbmFsSW5mb1BsYWNlbWVudCxcbiAgZGVmYXVsdFNlYXJjaFZhbHVlLFxuICBpc0xvYWRpbmcsXG59OiBDcmVhdGVEcm9wZG93blByb3BzKSA9PiB7XG4gIGNvbnN0IHtcbiAgICBzZXRJc0Ryb3Bkb3duVmlzaWJsZSxcbiAgICBvbkNoYW5nZSxcbiAgICBvcHRpb25zLFxuICAgIG11bHRpc2VsZWN0LFxuICAgIHNlbGVjdEFsbCxcbiAgICBzZWxlY3RBbGxHcm91cCxcbiAgICBkaXNwbGF5ZWRPcHRpb25zLFxuICAgIHNldFNlbGVjdGVkRGF0YSxcbiAgICBzZWxlY3RlZERhdGEsXG4gIH0gPSB1c2VTZWxlY3RJbnB1dCgpXG4gIGNvbnN0IGZvY3VzZWRJdGVtUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGRlZmF1bHRTZWFyY2hWYWx1ZSAmJiBmb2N1c2VkSXRlbVJlZj8uY3VycmVudCkge1xuICAgICAgZm9jdXNlZEl0ZW1SZWYuY3VycmVudC5mb2N1cygpXG4gICAgfVxuICB9LCBbZGVmYXVsdFNlYXJjaFZhbHVlXSlcblxuICBpZiAoaXNFbXB0eSkge1xuICAgIHJldHVybiAoXG4gICAgICA8RW1wdHlTdGF0ZSBnYXA9ezJ9IGFsaWduSXRlbXM9XCJjZW50ZXJcIj5cbiAgICAgICAge2VtcHR5U3RhdGUgPz8gKFxuICAgICAgICAgIDxUZXh0IHZhcmlhbnQ9XCJib2R5U3Ryb25nXCIgYXM9XCJwXCI+XG4gICAgICAgICAgICBObyBvcHRpb25zXG4gICAgICAgICAgPC9UZXh0PlxuICAgICAgICApfVxuICAgICAgPC9FbXB0eVN0YXRlPlxuICAgIClcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZUNsaWNrID0gKGNsaWNrZWRPcHRpb246IE9wdGlvblR5cGUsIGdyb3VwPzogc3RyaW5nKSA9PiB7XG4gICAgc2V0U2VsZWN0ZWREYXRhKHsgdHlwZTogJ3NlbGVjdE9wdGlvbicsIGNsaWNrZWRPcHRpb24sIGdyb3VwIH0pXG4gICAgaWYgKG11bHRpc2VsZWN0KSB7XG4gICAgICBpZiAoc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzLmluY2x1ZGVzKGNsaWNrZWRPcHRpb24udmFsdWUpKSB7XG4gICAgICAgIG9uQ2hhbmdlPy4oXG4gICAgICAgICAgc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzLmZpbHRlcihcbiAgICAgICAgICAgIHZhbCA9PiB2YWwgIT09IGNsaWNrZWRPcHRpb24udmFsdWUsXG4gICAgICAgICAgKSxcbiAgICAgICAgKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb25DaGFuZ2U/LihbLi4uc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzLCBjbGlja2VkT3B0aW9uLnZhbHVlXSlcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgb25DaGFuZ2U/LihjbGlja2VkT3B0aW9uLnZhbHVlKVxuICAgIH1cbiAgICBzZXRJc0Ryb3Bkb3duVmlzaWJsZShtdWx0aXNlbGVjdCkgLy8gaGlkZSB0aGUgZHJvcGRvd24gb24gY2xpY2sgd2hlbiBzaW5nbGUgc2VsZWN0IG9ubHlcbiAgfVxuXG4gIGNvbnN0IHNlbGVjdEFsbE9wdGlvbnMgPSAoKSA9PiB7XG4gICAgaWYgKG11bHRpc2VsZWN0KSB7XG4gICAgICBzZXRTZWxlY3RlZERhdGEoeyB0eXBlOiAnc2VsZWN0QWxsJyB9KVxuICAgICAgaWYgKHNlbGVjdGVkRGF0YS5hbGxTZWxlY3RlZCAmJiBvbkNoYW5nZSkge1xuICAgICAgICBvbkNoYW5nZShbXSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGFsbFZhbHVlczogT3B0aW9uVHlwZVtdID0gW11cbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KG9wdGlvbnMpKSB7XG4gICAgICAgICAgT2JqZWN0LmtleXMob3B0aW9ucykubWFwKChncm91cDogc3RyaW5nKSA9PlxuICAgICAgICAgICAgb3B0aW9uc1tncm91cF0ubWFwKG9wdGlvbiA9PiB7XG4gICAgICAgICAgICAgIGlmICghb3B0aW9uLmRpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgYWxsVmFsdWVzLnB1c2gob3B0aW9uKVxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIClcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvcHRpb25zLm1hcChvcHRpb24gPT4gYWxsVmFsdWVzLnB1c2gob3B0aW9uKSlcbiAgICAgICAgfVxuICAgICAgICBvbkNoYW5nZT8uKGFsbFZhbHVlcy5tYXAodmFsdWUgPT4gdmFsdWUudmFsdWUpKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGhhbmRsZVNlbGVjdEdyb3VwID0gKGdyb3VwOiBzdHJpbmcpID0+IHtcbiAgICBpZiAobXVsdGlzZWxlY3QpIHtcbiAgICAgIHNldFNlbGVjdGVkRGF0YSh7IHR5cGU6ICdzZWxlY3RHcm91cCcsIHNlbGVjdGVkR3JvdXA6IGdyb3VwIH0pXG4gICAgICBpZiAoIUFycmF5LmlzQXJyYXkob3B0aW9ucykpIHtcbiAgICAgICAgaWYgKHNlbGVjdGVkRGF0YS5zZWxlY3RlZEdyb3Vwcy5pbmNsdWRlcyhncm91cCkpIHtcbiAgICAgICAgICBjb25zdCBuZXdTZWxlY3RlZFZhbHVlcyA9IFsuLi5zZWxlY3RlZERhdGEuc2VsZWN0ZWRWYWx1ZXNdLmZpbHRlcihcbiAgICAgICAgICAgIHNlbGVjdGVkVmFsdWUgPT5cbiAgICAgICAgICAgICAgIW9wdGlvbnNbZ3JvdXBdLmZpbmQob3B0aW9uID0+IG9wdGlvbi52YWx1ZSA9PT0gc2VsZWN0ZWRWYWx1ZSksXG4gICAgICAgICAgKVxuICAgICAgICAgIG9uQ2hhbmdlPy4obmV3U2VsZWN0ZWRWYWx1ZXMpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgbmV3U2VsZWN0ZWRWYWx1ZXMgPSBbLi4uc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzXVxuXG4gICAgICAgICAgb3B0aW9uc1tncm91cF0ubWFwKG9wdGlvbiA9PlxuICAgICAgICAgICAgbmV3U2VsZWN0ZWRWYWx1ZXMuaW5jbHVkZXMob3B0aW9uLnZhbHVlKSB8fCBvcHRpb24uZGlzYWJsZWRcbiAgICAgICAgICAgICAgPyBudWxsXG4gICAgICAgICAgICAgIDogbmV3U2VsZWN0ZWRWYWx1ZXMucHVzaChvcHRpb24udmFsdWUpLFxuICAgICAgICAgIClcbiAgICAgICAgICBvbkNoYW5nZT8uKG5ld1NlbGVjdGVkVmFsdWVzKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuICFBcnJheS5pc0FycmF5KGRpc3BsYXllZE9wdGlvbnMpID8gKFxuICAgIDxEcm9wZG93bkNvbnRhaW5lclxuICAgICAgcm9sZT1cImxpc3Rib3hcIlxuICAgICAgaWQ9XCJzZWxlY3QtZHJvcGRvd25cIlxuICAgICAgb25LZXlEb3duPXtoYW5kbGVLZXlEb3duU2VsZWN0fVxuICAgICAgZGF0YS1ncm91cGVkXG4gICAgPlxuICAgICAge2lzTG9hZGluZyA/IChcbiAgICAgICAgPFNrZWxldG9uIHZhcmlhbnQ9XCJibG9ja1wiIC8+XG4gICAgICApIDogKFxuICAgICAgICA8PlxuICAgICAgICAgIHtzZWxlY3RBbGwgJiYgbXVsdGlzZWxlY3QgPyAoXG4gICAgICAgICAgICA8U3RhY2sgaWQ9XCJpdGVtc1wiPlxuICAgICAgICAgICAgICA8RHJvcGRvd25JdGVtXG4gICAgICAgICAgICAgICAgYXJpYS1kaXNhYmxlZD17ZmFsc2V9XG4gICAgICAgICAgICAgICAgYXJpYS1zZWxlY3RlZD17c2VsZWN0ZWREYXRhLmFsbFNlbGVjdGVkfVxuICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJzZWxlY3QtYWxsXCJcbiAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD1cInNlbGVjdC1hbGxcIlxuICAgICAgICAgICAgICAgIGlkPVwic2VsZWN0LWFsbFwiXG4gICAgICAgICAgICAgICAgdGFiSW5kZXg9ezB9XG4gICAgICAgICAgICAgICAgcm9sZT1cIm9wdGlvblwiXG4gICAgICAgICAgICAgICAgb25LZXlEb3duPXtldmVudCA9PlxuICAgICAgICAgICAgICAgICAgWycgJywgJ0VudGVyJ10uaW5jbHVkZXMoZXZlbnQua2V5KSA/IHNlbGVjdEFsbE9wdGlvbnMoKSA6IG51bGxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgb25DbGljaz17c2VsZWN0QWxsT3B0aW9uc31cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxTdHlsZWRDaGVja2JveFxuICAgICAgICAgICAgICAgICAgY2hlY2tlZD17c2VsZWN0ZWREYXRhLmFsbFNlbGVjdGVkfVxuICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgdmFsdWU9XCJzZWxlY3QtYWxsXCJcbiAgICAgICAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwic2VsZWN0LWFsbC1jaGVja2JveFwiXG4gICAgICAgICAgICAgICAgICB0YWJJbmRleD17LTF9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPFN0YWNrIGRpcmVjdGlvbj1cImNvbHVtblwiPlxuICAgICAgICAgICAgICAgICAgICA8VGV4dCBhcz1cInNwYW5cIiB2YXJpYW50PVwiYm9keVwiIHBsYWNlbWVudD1cImxlZnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICB7c2VsZWN0QWxsLmxhYmVsfVxuICAgICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgICAgIDxUZXh0XG4gICAgICAgICAgICAgICAgICAgICAgYXM9XCJzcGFuXCJcbiAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50PVwiYm9keVNtYWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICBzZW50aW1lbnQ9XCJuZXV0cmFsXCJcbiAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJsZWZ0XCJcbiAgICAgICAgICAgICAgICAgICAgICBwcm9taW5lbmNlPVwid2Vha1wiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7c2VsZWN0QWxsLmRlc2NyaXB0aW9ufVxuICAgICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgICA8L1N0YWNrPlxuICAgICAgICAgICAgICAgIDwvU3R5bGVkQ2hlY2tib3g+XG4gICAgICAgICAgICAgIDwvRHJvcGRvd25JdGVtPlxuICAgICAgICAgICAgPC9TdGFjaz5cbiAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICB7T2JqZWN0LmtleXMoZGlzcGxheWVkT3B0aW9ucykubWFwKChncm91cCwgaW5kZXgpID0+IChcbiAgICAgICAgICAgIDxTdGFjayBrZXk9e2dyb3VwfSBnYXA9ezAuMjV9PlxuICAgICAgICAgICAgICB7ZGlzcGxheWVkT3B0aW9uc1tncm91cF0ubGVuZ3RoID4gMCA/IChcbiAgICAgICAgICAgICAgICA8RHJvcGRvd25Hcm91cFdyYXBwZXIgaWQ9e3NlbGVjdEFsbEdyb3VwID8gJ2l0ZW1zJyA6IHVuZGVmaW5lZH0+XG4gICAgICAgICAgICAgICAgICB7Z3JvdXAgPyAoXG4gICAgICAgICAgICAgICAgICAgIDxEcm9wZG93bkdyb3VwXG4gICAgICAgICAgICAgICAgICAgICAga2V5PXtncm91cH1cbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICB0YWJJbmRleD17c2VsZWN0QWxsR3JvdXAgPyAwIDogLTF9XG4gICAgICAgICAgICAgICAgICAgICAgb25LZXlEb3duPXtldmVudCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoWycgJywgJ0VudGVyJ10uaW5jbHVkZXMoZXZlbnQua2V5KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZVNlbGVjdEdyb3VwKGdyb3VwKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgZGF0YS1zZWxlY3Rncm91cD17c2VsZWN0QWxsR3JvdXB9XG4gICAgICAgICAgICAgICAgICAgICAgcm9sZT1cImdyb3VwXCJcbiAgICAgICAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD17YGdyb3VwLSR7aW5kZXh9YH1cbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0QWxsR3JvdXAgPyBoYW5kbGVTZWxlY3RHcm91cChncm91cCkgOiBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAge3NlbGVjdEFsbEdyb3VwID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgPFN0eWxlZENoZWNrYm94XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e3NlbGVjdGVkRGF0YS5zZWxlY3RlZEdyb3Vwcy5pbmNsdWRlcyhncm91cCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2dyb3VwfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD1cInNlbGVjdC1ncm91cFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRhYkluZGV4PXstMX1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPFRleHQgdmFyaWFudD1cImNhcHRpb25cIiBhcz1cInNwYW5cIiBwbGFjZW1lbnQ9XCJsZWZ0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2dyb3VwLnRvVXBwZXJDYXNlKCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvU3R5bGVkQ2hlY2tib3g+XG4gICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxUZXh0XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJjYXB0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYXM9XCJzcGFuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwibGVmdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNlbnRpbWVudD1cIm5ldXRyYWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7Z3JvdXAudG9VcHBlckNhc2UoKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICA8L0Ryb3Bkb3duR3JvdXA+XG4gICAgICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgICAgICA8L0Ryb3Bkb3duR3JvdXBXcmFwcGVyPlxuICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgICAgPFN0YWNrIGlkPVwiaXRlbXNcIiBnYXA9XCIwLjI1XCI+XG4gICAgICAgICAgICAgICAge2Rpc3BsYXllZE9wdGlvbnNbZ3JvdXBdLm1hcCgob3B0aW9uLCBpbmRleE9wdGlvbikgPT4gKFxuICAgICAgICAgICAgICAgICAgPERyb3Bkb3duSXRlbVxuICAgICAgICAgICAgICAgICAgICBrZXk9e29wdGlvbi52YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgYXJpYS1kaXNhYmxlZD17ISFvcHRpb24uZGlzYWJsZWR9XG4gICAgICAgICAgICAgICAgICAgIHRhYkluZGV4PXshb3B0aW9uLmRpc2FibGVkID8gMCA6IC0xfVxuICAgICAgICAgICAgICAgICAgICBhcmlhLXNlbGVjdGVkPXtcbiAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZERhdGEuc2VsZWN0ZWRWYWx1ZXMuaW5jbHVkZXMob3B0aW9uLnZhbHVlKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICFvcHRpb24uZGlzYWJsZWRcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPXtvcHRpb24udmFsdWV9XG4gICAgICAgICAgICAgICAgICAgIGRhdGEtdGVzdGlkPXtgb3B0aW9uLSR7b3B0aW9uLnZhbHVlfWB9XG4gICAgICAgICAgICAgICAgICAgIGlkPXtgb3B0aW9uLSR7aW5kZXhPcHRpb259YH1cbiAgICAgICAgICAgICAgICAgICAgcm9sZT1cIm9wdGlvblwiXG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoIW9wdGlvbi5kaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlQ2xpY2sob3B0aW9uLCBncm91cClcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgIG9uS2V5RG93bj17ZXZlbnQgPT5cbiAgICAgICAgICAgICAgICAgICAgICBbJyAnLCAnRW50ZXInXS5pbmNsdWRlcyhldmVudC5rZXkpXG4gICAgICAgICAgICAgICAgICAgICAgICA/IGhhbmRsZUNsaWNrKG9wdGlvbiwgZ3JvdXApXG4gICAgICAgICAgICAgICAgICAgICAgICA6IG51bGxcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZWY9e1xuICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbi52YWx1ZSA9PT0gZGVmYXVsdFNlYXJjaFZhbHVlIHx8XG4gICAgICAgICAgICAgICAgICAgICAgb3B0aW9uLnNlYXJjaFRleHQgPT09IGRlZmF1bHRTZWFyY2hWYWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgPyBmb2N1c2VkSXRlbVJlZlxuICAgICAgICAgICAgICAgICAgICAgICAgOiBudWxsXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge211bHRpc2VsZWN0ID8gKFxuICAgICAgICAgICAgICAgICAgICAgIDxTdHlsZWRDaGVja2JveFxuICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tlZD17XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkRGF0YS5zZWxlY3RlZFZhbHVlcy5pbmNsdWRlcyhvcHRpb24udmFsdWUpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICFvcHRpb24uZGlzYWJsZWRcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtvcHRpb24uZGlzYWJsZWR9XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17b3B0aW9uLnZhbHVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgdGFiSW5kZXg9ey0xfVxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxEaXNwbGF5T3B0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbj17b3B0aW9ufVxuICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbkRpcmVjdGlvbj17ZGVzY3JpcHRpb25EaXJlY3Rpb259XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsSW5mb1BsYWNlbWVudD17b3B0aW9uYWxJbmZvUGxhY2VtZW50fVxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8L1N0eWxlZENoZWNrYm94PlxuICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgIDxEaXNwbGF5T3B0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb249e29wdGlvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uRGlyZWN0aW9uPXtkZXNjcmlwdGlvbkRpcmVjdGlvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsSW5mb1BsYWNlbWVudD17b3B0aW9uYWxJbmZvUGxhY2VtZW50fVxuICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICA8L0Ryb3Bkb3duSXRlbT5cbiAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgPC9TdGFjaz5cbiAgICAgICAgICAgIDwvU3RhY2s+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvPlxuICAgICAgKX1cbiAgICAgIHtsb2FkTW9yZSA/IDxMb2FkTW9yZT57bG9hZE1vcmV9PC9Mb2FkTW9yZT4gOiBudWxsfVxuICAgIDwvRHJvcGRvd25Db250YWluZXI+XG4gICkgOiAoXG4gICAgPERyb3Bkb3duQ29udGFpbmVyXG4gICAgICByb2xlPVwibGlzdGJveFwiXG4gICAgICB0YWJJbmRleD17LTF9XG4gICAgICBpZD1cInNlbGVjdC1kcm9wZG93blwiXG4gICAgICBvbktleURvd249e2hhbmRsZUtleURvd25TZWxlY3R9XG4gICAgICBnYXA9ezAuMjV9XG4gICAgICBkYXRhLWdyb3VwZWQ9e2ZhbHNlfVxuICAgID5cbiAgICAgIHtzZWxlY3RBbGwgJiYgbXVsdGlzZWxlY3QgPyAoXG4gICAgICAgIDxTdGFjayBpZD1cIml0ZW1zXCIgZ2FwPXswLjI1fSB0YWJJbmRleD17LTF9PlxuICAgICAgICAgIDxEcm9wZG93bkl0ZW1cbiAgICAgICAgICAgIGFyaWEtZGlzYWJsZWQ9e2ZhbHNlfVxuICAgICAgICAgICAgYXJpYS1zZWxlY3RlZD17c2VsZWN0ZWREYXRhLmFsbFNlbGVjdGVkfVxuICAgICAgICAgICAgYXJpYS1sYWJlbD1cInNlbGVjdC1hbGxcIlxuICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJzZWxlY3QtYWxsXCJcbiAgICAgICAgICAgIHRhYkluZGV4PXswfVxuICAgICAgICAgICAgcm9sZT1cIm9wdGlvblwiXG4gICAgICAgICAgICBvbktleURvd249e2V2ZW50ID0+XG4gICAgICAgICAgICAgIFsnICcsICdFbnRlciddLmluY2x1ZGVzKGV2ZW50LmtleSkgPyBzZWxlY3RBbGxPcHRpb25zKCkgOiBudWxsXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvbkNsaWNrPXtzZWxlY3RBbGxPcHRpb25zfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxTdHlsZWRDaGVja2JveFxuICAgICAgICAgICAgICBjaGVja2VkPXtzZWxlY3RlZERhdGEuYWxsU2VsZWN0ZWR9XG4gICAgICAgICAgICAgIGRpc2FibGVkPXtmYWxzZX1cbiAgICAgICAgICAgICAgdmFsdWU9XCJzZWxlY3QtYWxsXCJcbiAgICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJzZWxlY3QtYWxsLWNoZWNrYm94XCJcbiAgICAgICAgICAgICAgdGFiSW5kZXg9ey0xfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8U3RhY2sgZGlyZWN0aW9uPVwiY29sdW1uXCI+XG4gICAgICAgICAgICAgICAgPFRleHQgYXM9XCJzcGFuXCIgdmFyaWFudD1cImJvZHlcIiBwbGFjZW1lbnQ9XCJsZWZ0XCI+XG4gICAgICAgICAgICAgICAgICB7c2VsZWN0QWxsLmxhYmVsfVxuICAgICAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgICAgICA8VGV4dFxuICAgICAgICAgICAgICAgICAgYXM9XCJzcGFuXCJcbiAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJib2R5U21hbGxcIlxuICAgICAgICAgICAgICAgICAgc2VudGltZW50PVwibmV1dHJhbFwiXG4gICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJsZWZ0XCJcbiAgICAgICAgICAgICAgICAgIHByb21pbmVuY2U9XCJ3ZWFrXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICB7c2VsZWN0QWxsLmRlc2NyaXB0aW9ufVxuICAgICAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgICAgPC9TdGFjaz5cbiAgICAgICAgICAgIDwvU3R5bGVkQ2hlY2tib3g+XG4gICAgICAgICAgPC9Ecm9wZG93bkl0ZW0+XG4gICAgICAgIDwvU3RhY2s+XG4gICAgICApIDogbnVsbH1cbiAgICAgIDxTdGFjayBpZD1cIml0ZW1zXCIgZ2FwPXswLjI1fT5cbiAgICAgICAge2lzTG9hZGluZyA/IChcbiAgICAgICAgICA8U2tlbGV0b24gdmFyaWFudD1cImJsb2NrXCIgLz5cbiAgICAgICAgKSA6IChcbiAgICAgICAgICBkaXNwbGF5ZWRPcHRpb25zLm1hcCgob3B0aW9uLCBpbmRleCkgPT4gKFxuICAgICAgICAgICAgPERyb3Bkb3duSXRlbVxuICAgICAgICAgICAgICBrZXk9e29wdGlvbi52YWx1ZX1cbiAgICAgICAgICAgICAgYXJpYS1kaXNhYmxlZD17ISFvcHRpb24uZGlzYWJsZWR9XG4gICAgICAgICAgICAgIGFyaWEtc2VsZWN0ZWQ9e1xuICAgICAgICAgICAgICAgIHNlbGVjdGVkRGF0YS5zZWxlY3RlZFZhbHVlcy5pbmNsdWRlcyhvcHRpb24udmFsdWUpICYmXG4gICAgICAgICAgICAgICAgIW9wdGlvbi5kaXNhYmxlZFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIW9wdGlvbi5kaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgICAgaGFuZGxlQ2xpY2sob3B0aW9uKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgYXJpYS1sYWJlbD17b3B0aW9uLnZhbHVlfVxuICAgICAgICAgICAgICBkYXRhLXRlc3RpZD17YG9wdGlvbi0ke29wdGlvbi52YWx1ZX1gfVxuICAgICAgICAgICAgICBpZD17YG9wdGlvbi0ke2luZGV4fWB9XG4gICAgICAgICAgICAgIHJvbGU9XCJvcHRpb25cIlxuICAgICAgICAgICAgICB0YWJJbmRleD17IW9wdGlvbi5kaXNhYmxlZCA/IDAgOiAtMX1cbiAgICAgICAgICAgICAgcmVmPXtcbiAgICAgICAgICAgICAgICBvcHRpb24udmFsdWUgPT09IGRlZmF1bHRTZWFyY2hWYWx1ZSB8fFxuICAgICAgICAgICAgICAgIG9wdGlvbi5zZWFyY2hUZXh0ID09PSBkZWZhdWx0U2VhcmNoVmFsdWVcbiAgICAgICAgICAgICAgICAgID8gZm9jdXNlZEl0ZW1SZWZcbiAgICAgICAgICAgICAgICAgIDogbnVsbFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIG9uS2V5RG93bj17ZXZlbnQgPT5cbiAgICAgICAgICAgICAgICBbJyAnLCAnRW50ZXInXS5pbmNsdWRlcyhldmVudC5rZXkpID8gaGFuZGxlQ2xpY2sob3B0aW9uKSA6IG51bGxcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7bXVsdGlzZWxlY3QgPyAoXG4gICAgICAgICAgICAgICAgPFN0eWxlZENoZWNrYm94XG4gICAgICAgICAgICAgICAgICBjaGVja2VkPXtcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzLmluY2x1ZGVzKG9wdGlvbi52YWx1ZSkgJiZcbiAgICAgICAgICAgICAgICAgICAgIW9wdGlvbi5kaXNhYmxlZFxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e29wdGlvbi5kaXNhYmxlZH1cbiAgICAgICAgICAgICAgICAgIHZhbHVlPXtvcHRpb24udmFsdWV9XG4gICAgICAgICAgICAgICAgICB0YWJJbmRleD17LTF9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPERpc3BsYXlPcHRpb25cbiAgICAgICAgICAgICAgICAgICAgb3B0aW9uPXtvcHRpb259XG4gICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uRGlyZWN0aW9uPXtkZXNjcmlwdGlvbkRpcmVjdGlvbn1cbiAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWxJbmZvUGxhY2VtZW50PXtvcHRpb25hbEluZm9QbGFjZW1lbnR9XG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvU3R5bGVkQ2hlY2tib3g+XG4gICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgPERpc3BsYXlPcHRpb25cbiAgICAgICAgICAgICAgICAgIG9wdGlvbj17b3B0aW9ufVxuICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb25EaXJlY3Rpb249e2Rlc2NyaXB0aW9uRGlyZWN0aW9ufVxuICAgICAgICAgICAgICAgICAgb3B0aW9uYWxJbmZvUGxhY2VtZW50PXtvcHRpb25hbEluZm9QbGFjZW1lbnR9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvRHJvcGRvd25JdGVtPlxuICAgICAgICAgICkpXG4gICAgICAgICl9XG4gICAgICAgIHtsb2FkTW9yZSA/IDxMb2FkTW9yZT57bG9hZE1vcmV9PC9Mb2FkTW9yZT4gOiBudWxsfVxuICAgICAgPC9TdGFjaz5cbiAgICA8L0Ryb3Bkb3duQ29udGFpbmVyPlxuICApXG59XG5leHBvcnQgY29uc3QgRHJvcGRvd24gPSAoe1xuICBjaGlsZHJlbixcbiAgZW1wdHlTdGF0ZSxcbiAgZGVzY3JpcHRpb25EaXJlY3Rpb24sXG4gIHNlYXJjaGFibGUsXG4gIHBsYWNlaG9sZGVyLFxuICBmb290ZXIsXG4gIHJlZlNlbGVjdCxcbiAgbG9hZE1vcmUsXG4gIG9wdGlvbmFsSW5mb1BsYWNlbWVudCxcbiAgaXNMb2FkaW5nLFxuICBzaXplLFxufTogRHJvcGRvd25Qcm9wcykgPT4ge1xuICBjb25zdCB7XG4gICAgc2V0SXNEcm9wZG93blZpc2libGUsXG4gICAgaXNEcm9wZG93blZpc2libGUsXG4gICAgb25TZWFyY2gsXG4gICAgc2VhcmNoSW5wdXQsXG4gICAgb3B0aW9ucyxcbiAgICBkaXNwbGF5ZWRPcHRpb25zLFxuICB9ID0gdXNlU2VsZWN0SW5wdXQoKVxuICBjb25zdCB0aGVtZSA9IHVzZVRoZW1lKClcbiAgY29uc3QgW3NlYXJjaEJhckFjdGl2ZSwgc2V0U2VhcmNoQmFyQWN0aXZlXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbZGVmYXVsdFNlYXJjaFZhbHVlLCBzZXREZWZhdWx0U2VhcmNoXSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bGw+KG51bGwpXG4gIGNvbnN0IHJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcbiAgY29uc3QgW3NlYXJjaCwgc2V0U2VhcmNoXSA9IHVzZVN0YXRlPHN0cmluZz4oJycpXG4gIGNvbnN0IFttYXhXaWR0aCwgc2V0V2lkdGhdID0gdXNlU3RhdGU8c3RyaW5nIHwgbnVtYmVyPigpXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAocmVmU2VsZWN0LmN1cnJlbnQgJiYgaXNEcm9wZG93blZpc2libGUpIHtcbiAgICAgIGNvbnN0IHBvc2l0aW9uID1cbiAgICAgICAgcmVmU2VsZWN0LmN1cnJlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuYm90dG9tICtcbiAgICAgICAgRFJPUERPV05fTUFYX0hFSUdIVCArXG4gICAgICAgIElOUFVUX1NJWkVfSEVJR0hUW3NpemVdICtcbiAgICAgICAgcGFyc2VJbnQodGhlbWUuc3BhY2VbJzUnXSwgMTApXG4gICAgICBjb25zdCBvdmVyZmxvdyA9IHBvc2l0aW9uIC0gd2luZG93LmlubmVySGVpZ2h0XG4gICAgICBpZiAob3ZlcmZsb3cgPiAwKSB7XG4gICAgICAgIGNvbnN0IG1vZGFsRWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdiYWNrZHJvcC1tb2RhbCcpXG5cbiAgICAgICAgaWYgKG1vZGFsRWxlbWVudCkge1xuICAgICAgICAgIG1vZGFsRWxlbWVudC5zY3JvbGxCeSh7IHRvcDogb3ZlcmZsb3csIGJlaGF2aW9yOiAnc21vb3RoJyB9KVxuICAgICAgICB9IGVsc2Ugd2luZG93LnNjcm9sbEJ5KHsgdG9wOiBvdmVyZmxvdywgYmVoYXZpb3I6ICdzbW9vdGgnIH0pXG4gICAgICB9XG4gICAgfVxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9leGhhdXN0aXZlLWRlcHNcbiAgfSwgW2lzRHJvcGRvd25WaXNpYmxlLCByZWZTZWxlY3QsIHNpemUsIHJlZi5jdXJyZW50XSlcblxuICBjb25zdCByZXNpemVEcm9wZG93biA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoXG4gICAgICByZWZTZWxlY3QuY3VycmVudCAmJlxuICAgICAgcmVmU2VsZWN0LmN1cnJlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGggPiAwXG4gICAgKSB7XG4gICAgICBzZXRXaWR0aChyZWZTZWxlY3QuY3VycmVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aClcbiAgICB9XG4gIH0sIFtyZWZTZWxlY3RdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgcmVzaXplRHJvcGRvd24oKVxuXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHJlc2l6ZURyb3Bkb3duKVxuXG4gICAgcmV0dXJuICgpID0+IHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCByZXNpemVEcm9wZG93bilcbiAgfSwgW3Jlc2l6ZURyb3Bkb3duXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghc2VhcmNoSW5wdXQpIHtcbiAgICAgIG9uU2VhcmNoKG9wdGlvbnMpXG4gICAgfVxuICB9LCBbb25TZWFyY2gsIG9wdGlvbnMsIHNlYXJjaElucHV0XSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghaXNEcm9wZG93blZpc2libGUpIHtcbiAgICAgIHNldERlZmF1bHRTZWFyY2gobnVsbClcbiAgICAgIHNldFNlYXJjaCgnJylcbiAgICB9XG5cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCBldmVudCA9PlxuICAgICAgaGFuZGxlQ2xpY2tPdXRzaWRlKFxuICAgICAgICBldmVudCxcbiAgICAgICAgcmVmLFxuICAgICAgICBzZXRJc0Ryb3Bkb3duVmlzaWJsZSxcbiAgICAgICAgcmVmU2VsZWN0LFxuICAgICAgICBvblNlYXJjaCxcbiAgICAgICAgb3B0aW9ucyxcbiAgICAgICksXG4gICAgKVxuXG4gICAgaWYgKCFzZWFyY2hhYmxlKSB7XG4gICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgZXZlbnQgPT5cbiAgICAgICAgaGFuZGxlS2V5RG93bihcbiAgICAgICAgICBldmVudCxcbiAgICAgICAgICByZWYsXG4gICAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgICBzZWFyY2hCYXJBY3RpdmUsXG4gICAgICAgICAgc2V0U2VhcmNoLFxuICAgICAgICAgIHNldERlZmF1bHRTZWFyY2gsXG4gICAgICAgICAgc2VhcmNoLFxuICAgICAgICApLFxuICAgICAgKVxuICAgIH1cblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCBldmVudCA9PlxuICAgICAgICBoYW5kbGVDbGlja091dHNpZGUoXG4gICAgICAgICAgZXZlbnQsXG4gICAgICAgICAgcmVmLFxuICAgICAgICAgIHNldElzRHJvcGRvd25WaXNpYmxlLFxuICAgICAgICAgIHJlZlNlbGVjdCxcbiAgICAgICAgICBvblNlYXJjaCxcbiAgICAgICAgICBvcHRpb25zLFxuICAgICAgICApLFxuICAgICAgKVxuICAgICAgaWYgKCFzZWFyY2hhYmxlKSB7XG4gICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBldmVudCA9PlxuICAgICAgICAgIGhhbmRsZUtleURvd24oXG4gICAgICAgICAgICBldmVudCxcbiAgICAgICAgICAgIHJlZixcbiAgICAgICAgICAgIG9wdGlvbnMsXG4gICAgICAgICAgICBzZWFyY2hCYXJBY3RpdmUsXG4gICAgICAgICAgICBzZXRTZWFyY2gsXG4gICAgICAgICAgICBzZXREZWZhdWx0U2VhcmNoLFxuICAgICAgICAgICAgc2VhcmNoLFxuICAgICAgICAgICksXG4gICAgICAgIClcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtcbiAgICBpc0Ryb3Bkb3duVmlzaWJsZSxcbiAgICBzZWFyY2hCYXJBY3RpdmUsXG4gICAgb3B0aW9ucyxcbiAgICBvblNlYXJjaCxcbiAgICBzZWFyY2gsXG4gICAgcmVmU2VsZWN0LFxuICAgIHNldERlZmF1bHRTZWFyY2gsXG4gICAgc2V0SXNEcm9wZG93blZpc2libGUsXG4gICAgc2VhcmNoYWJsZSxcbiAgXSlcblxuICBjb25zdCBpc0VtcHR5ID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoZGlzcGxheWVkT3B0aW9ucykpIHtcbiAgICAgIHJldHVybiAhKGRpc3BsYXllZE9wdGlvbnMubGVuZ3RoID4gMClcbiAgICB9XG4gICAgY29uc3QgZ3JvdXBzID0gT2JqZWN0LmtleXMoZGlzcGxheWVkT3B0aW9ucylcbiAgICBmb3IgKGNvbnN0IGdyb3VwIG9mIGdyb3Vwcykge1xuICAgICAgaWYgKGRpc3BsYXllZE9wdGlvbnNbZ3JvdXBdLmxlbmd0aCAhPT0gMCkge1xuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZVxuICB9LCBbZGlzcGxheWVkT3B0aW9uc10pXG5cbiAgcmV0dXJuIChcbiAgICA8U3R5bGVkUG9wdXBcbiAgICAgIHZpc2libGU9e2lzRHJvcGRvd25WaXNpYmxlfVxuICAgICAgdGV4dD17XG4gICAgICAgIDxTdGFjaz5cbiAgICAgICAgICB7c2VhcmNoYWJsZSAmJiAhaXNMb2FkaW5nID8gKFxuICAgICAgICAgICAgPFNlYXJjaEJhckRyb3Bkb3duXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXtwbGFjZWhvbGRlcn1cbiAgICAgICAgICAgICAgZGlzcGxheWVkT3B0aW9ucz17ZGlzcGxheWVkT3B0aW9uc31cbiAgICAgICAgICAgICAgc2V0U2VhcmNoQmFyQWN0aXZlPXtzZXRTZWFyY2hCYXJBY3RpdmV9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgIDxDcmVhdGVEcm9wZG93blxuICAgICAgICAgICAgaXNFbXB0eT17aXNFbXB0eX1cbiAgICAgICAgICAgIGVtcHR5U3RhdGU9e2VtcHR5U3RhdGV9XG4gICAgICAgICAgICBkZXNjcmlwdGlvbkRpcmVjdGlvbj17ZGVzY3JpcHRpb25EaXJlY3Rpb259XG4gICAgICAgICAgICBsb2FkTW9yZT17bG9hZE1vcmV9XG4gICAgICAgICAgICBvcHRpb25hbEluZm9QbGFjZW1lbnQ9e29wdGlvbmFsSW5mb1BsYWNlbWVudH1cbiAgICAgICAgICAgIGRlZmF1bHRTZWFyY2hWYWx1ZT17ZGVmYXVsdFNlYXJjaFZhbHVlfVxuICAgICAgICAgICAgaXNMb2FkaW5nPXtpc0xvYWRpbmd9XG4gICAgICAgICAgLz5cbiAgICAgICAgICB7Zm9vdGVyID8gPFBvcHVwRm9vdGVyPntmb290ZXJ9PC9Qb3B1cEZvb3Rlcj4gOiBudWxsfVxuICAgICAgICA8L1N0YWNrPlxuICAgICAgfVxuICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcbiAgICAgIGRpc2FibGVBbmltYXRpb25cbiAgICAgIG1heFdpZHRoPXttYXhXaWR0aCA/PyByZWZTZWxlY3QuY3VycmVudD8ub2Zmc2V0V2lkdGh9XG4gICAgICBoYXNBcnJvdz17ZmFsc2V9XG4gICAgICByZWY9e3JlZn1cbiAgICAgIHRhYkluZGV4PXswfVxuICAgICAgcm9sZT1cImRpYWxvZ1wiXG4gICAgICBkZWJvdW5jZURlbGF5PXswfVxuICAgICAgY29udGFpbmVyRnVsbFdpZHRoXG4gICAgPlxuICAgICAge2NoaWxkcmVufVxuICAgIDwvU3R5bGVkUG9wdXA+XG4gIClcbn1cbiJdfQ== */"));
52
+ }) => theme.space[0], ";}" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL3VsdHJhdmlvbGV0L3VsdHJhdmlvbGV0L3BhY2thZ2VzL3VpL3NyYy9jb21wb25lbnRzL1NlbGVjdElucHV0VjIvRHJvcGRvd24udHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXFFb0UiLCJmaWxlIjoiL2hvbWUvcnVubmVyL3dvcmsvdWx0cmF2aW9sZXQvdWx0cmF2aW9sZXQvcGFja2FnZXMvdWkvc3JjL2NvbXBvbmVudHMvU2VsZWN0SW5wdXRWMi9Ecm9wZG93bi50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1c2VUaGVtZSB9IGZyb20gJ0BlbW90aW9uL3JlYWN0J1xuaW1wb3J0IHN0eWxlZCBmcm9tICdAZW1vdGlvbi9zdHlsZWQnXG5pbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VNZW1vLCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgdHlwZSB7XG4gIERpc3BhdGNoLFxuICBLZXlib2FyZEV2ZW50LFxuICBSZWFjdE5vZGUsXG4gIFJlZk9iamVjdCxcbiAgU2V0U3RhdGVBY3Rpb24sXG59IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgQ2hlY2tib3ggfSBmcm9tICcuLi9DaGVja2JveCdcbmltcG9ydCB7IFBvcHVwIH0gZnJvbSAnLi4vUG9wdXAnXG5pbXBvcnQgeyBTa2VsZXRvbiB9IGZyb20gJy4uL1NrZWxldG9uJ1xuaW1wb3J0IHsgU3RhY2sgfSBmcm9tICcuLi9TdGFjaydcbmltcG9ydCB7IFRleHQgfSBmcm9tICcuLi9UZXh0J1xuaW1wb3J0IHsgRGlzcGxheU9wdGlvbiB9IGZyb20gJy4vRHJvcGRvd25PcHRpb24nXG5pbXBvcnQgeyBTZWFyY2hCYXJEcm9wZG93biB9IGZyb20gJy4vU2VhcmNoQmFyRHJvcGRvd24nXG5pbXBvcnQgeyB1c2VTZWxlY3RJbnB1dCB9IGZyb20gJy4vU2VsZWN0SW5wdXRQcm92aWRlcidcbmltcG9ydCB7IHR5cGUgRGF0YVR5cGUsIElOUFVUX1NJWkVfSEVJR0hULCB0eXBlIE9wdGlvblR5cGUgfSBmcm9tICcuL3R5cGVzJ1xuXG5jb25zdCBEUk9QRE9XTl9NQVhfSEVJR0hUID0gMjU2XG5cbmV4cG9ydCB0eXBlIERyb3Bkb3duUHJvcHMgPSB7XG4gIGNoaWxkcmVuOiBSZWFjdE5vZGVcbiAgZW1wdHlTdGF0ZTogUmVhY3ROb2RlXG4gIGRlc2NyaXB0aW9uRGlyZWN0aW9uOiAncm93JyB8ICdjb2x1bW4nXG4gIHNlYXJjaGFibGU6IGJvb2xlYW5cbiAgcGxhY2Vob2xkZXI6IHN0cmluZ1xuICBmb290ZXI/OiAoKGNsb3NlRHJvcGRvd246ICgpID0+IHZvaWQpID0+IFJlYWN0Tm9kZSkgfCBSZWFjdE5vZGVcbiAgcmVmU2VsZWN0OiBSZWZPYmplY3Q8SFRNTERpdkVsZW1lbnQ+XG4gIGxvYWRNb3JlPzogUmVhY3ROb2RlXG4gIG9wdGlvbmFsSW5mb1BsYWNlbWVudDogJ2xlZnQnIHwgJ3JpZ2h0J1xuICBpc0xvYWRpbmc/OiBib29sZWFuXG4gIHNpemU6ICdzbWFsbCcgfCAnbWVkaXVtJyB8ICdsYXJnZSdcbn1cblxuZXhwb3J0IHR5cGUgQ3JlYXRlRHJvcGRvd25Qcm9wcyA9IHtcbiAgaXNFbXB0eTogYm9vbGVhblxuICBlbXB0eVN0YXRlOiBSZWFjdE5vZGVcbiAgZGVzY3JpcHRpb25EaXJlY3Rpb246ICdyb3cnIHwgJ2NvbHVtbidcbiAgbG9hZE1vcmU/OiBSZWFjdE5vZGVcbiAgb3B0aW9uYWxJbmZvUGxhY2VtZW50OiAnbGVmdCcgfCAncmlnaHQnXG4gIGRlZmF1bHRTZWFyY2hWYWx1ZTogc3RyaW5nIHwgbnVsbFxuICBpc0xvYWRpbmc/OiBib29sZWFuXG59XG5cbmNvbnN0IE5PTl9TRUFSQ0hBQkxFX0tFWVMgPSBbXG4gICdUYWInLFxuICAnICcsXG4gICdFbnRlcicsXG4gICdDYXBzTG9jaycsXG4gICdTaGlmdCcsXG4gICdBcnJvd0Rvd24nLFxuICAnQXJyb3dVcCcsXG4gICdBcnJvd0xlZnQnLFxuICAnQXJyb3dSaWdodCcsXG4gICdFc2NhcGUnLFxuXVxuXG5jb25zdCBTdHlsZWRQb3B1cCA9IHN0eWxlZChQb3B1cClgXG4gIHdpZHRoOiAxMDAlO1xuICBtaW4td2lkdGg6IDMyMHB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5vdGhlci5lbGV2YXRpb24uYmFja2dyb3VuZC5yYWlzZWR9O1xuICBjb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMubmV1dHJhbC50ZXh0fTtcbiAgYm94LXNoYWRvdzogJHsoeyB0aGVtZSB9KSA9PiBgJHt0aGVtZS5zaGFkb3dzLnJhaXNlZFswXX0sICR7dGhlbWUuc2hhZG93cy5yYWlzZWRbMV19YH07XG4gIHBhZGRpbmc6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMF19O1xuICBtYXJnaW4tYm90dG9tOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzEwXX07XG5gXG5cbmNvbnN0IERyb3Bkb3duQ29udGFpbmVyID0gc3R5bGVkKFN0YWNrKTx7ICdkYXRhLWdyb3VwZWQnOiBib29sZWFuIH0+YFxuICBtYXgtaGVpZ2h0OiAke0RST1BET1dOX01BWF9IRUlHSFR9cHg7XG4gIG92ZXJmbG93LXk6IHNjcm9sbDtcbiAgcGFkZGluZzogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVswXX07XG4gIHBhZGRpbmctYm90dG9tOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzAuNV19O1xuICBwYWRkaW5nLXRvcDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVswLjVdfTtcblxuICAmW2RhdGEtZ3JvdXBlZD1cInRydWVcIl0ge1xuICAgIHBhZGRpbmctdG9wOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzBdfTtcbiAgfVxuYFxuY29uc3QgRHJvcGRvd25Hcm91cCA9IHN0eWxlZC5idXR0b248eyAnZGF0YS1zZWxlY3Rncm91cCc6IGJvb2xlYW4gfT5gXG4gIGRpc3BsYXk6IGZsZXg7XG4gIHdpZHRoOiAxMDAlO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGxlZnQ7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGJvcmRlcjogbm9uZTtcbiAgYmFja2dyb3VuZC1jb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMubmV1dHJhbC5iYWNrZ3JvdW5kV2Vha307XG4gIHBvc2l0aW9uOiBzdGlja3k7XG4gIHRvcDogMHB4O1xuICBwYWRkaW5nLXJpZ2h0OiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzJdfTtcbiAgcGFkZGluZy1sZWZ0OiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzJdfTtcbiAgaGVpZ2h0OiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzRdfTtcbiAgdGV4dC1hbGlnbjogbGVmdDtcbiAgbWFyZ2luLWJvdHRvbTogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsnMC4yNSddfTtcblxuICAmOmZvY3VzIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5uZXV0cmFsLmJhY2tncm91bmRXZWFrfTtcbiAgICBvdXRsaW5lOiBub25lO1xuICB9XG5cbiAgJltkYXRhLXNlbGVjdGdyb3VwPSd0cnVlJ10ge1xuICAgIHBhZGRpbmctbGVmdDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsyXX07XG4gICAgYm9yZGVyLWxlZnQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMC41XX0gc29saWQgJHsoeyB0aGVtZSB9KSA9PlxuICAgICAgdGhlbWUuY29sb3JzLm5ldXRyYWwuYmFja2dyb3VuZFdlYWt9O1xuICB9XG5cbiAgJltkYXRhLXNlbGVjdGdyb3VwPSd0cnVlJ106Zm9jdXMge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwuYmFja2dyb3VuZEhvdmVyfTtcbiAgfVxuYFxuY29uc3QgRHJvcGRvd25Hcm91cFdyYXBwZXIgPSBzdHlsZWQuZGl2YFxuICBwb3NpdGlvbjogc3RpY2t5O1xuICB0b3A6IDBweDtcbmBcbmNvbnN0IERyb3Bkb3duSXRlbSA9IHN0eWxlZC5kaXY8e1xuICAnYXJpYS1zZWxlY3RlZCc6IGJvb2xlYW5cbiAgJ2FyaWEtZGlzYWJsZWQnOiBib29sZWFuXG59PmBcbiAgdGV4dC1hbGlnbjpsZWZ0O1xuICBib3JkZXI6IG5vbmU7XG4gIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm90aGVyLmVsZXZhdGlvbi5iYWNrZ3JvdW5kLnJhaXNlZH07XG5cbiAgcGFkZGluZzogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsnMS41J119ICR7KHsgdGhlbWUgfSkgPT5cbiAgICB0aGVtZS5zcGFjZVsnMiddfSAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWycxLjUnXX0gJHsoeyB0aGVtZSB9KSA9PlxuICAgIHRoZW1lLnNwYWNlWycyJ119O1xuICBtYXJnaW4tbGVmdDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsnMC41J119O1xuICBtYXJnaW4tcmlnaHQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbJzAuNSddfTtcblxuICBjb2xvcjogICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwudGV4dH07XG4gIGJvcmRlci1yYWRpdXM6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUucmFkaWkuZGVmYXVsdH07XG5cbiAgJjpob3ZlciwgOmZvY3VzIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5wcmltYXJ5LmJhY2tncm91bmR9O1xuICAgIGNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5wcmltYXJ5LnRleHR9O1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBvdXRsaW5lOiBub25lO1xuICB9XG5cbiAgJlthcmlhLXNlbGVjdGVkPSd0cnVlJ10ge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLnByaW1hcnkuYmFja2dyb3VuZH07XG4gIH1cblxuICAmW2FyaWEtZGlzYWJsZWQ9XCJ0cnVlXCJdIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5uZXV0cmFsLmJhY2tncm91bmREaXNhYmxlZH07XG4gICAgY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwudGV4dERpc2FibGVkfTtcbiAgfVxuXG4gICZbYXJpYS1kaXNhYmxlZD1cInRydWVcIl06aG92ZXIsIFthcmlhLWRpc2FibGVkPVwidHJ1ZVwiXTpmb2N1cyB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHsoeyB0aGVtZSB9KSA9PlxuICAgICAgdGhlbWUuY29sb3JzLm5ldXRyYWwuYmFja2dyb3VuZFN0cm9uZ0Rpc2FibGVkfTtcbiAgICBjb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMubmV1dHJhbC50ZXh0U3Ryb25nRGlzYWJsZWR9O1xuICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgfVxuYFxuXG5jb25zdCBQb3B1cEZvb3RlciA9IHN0eWxlZC5kaXZgXG4gIHdpZHRoOiAxMDAlO1xuICBwYWRkaW5nOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzEuNV19ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMl19XG4gICAgJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsxLjVdfSAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzJdfTtcbiAgYm94LXNoYWRvdzogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zaGFkb3dzLmRyb3Bkb3dufTtcbmBcbmNvbnN0IFN0eWxlZENoZWNrYm94ID0gc3R5bGVkKENoZWNrYm94KWBcbiAgd2lkdGg6IDEwMCU7XG4gIHBvc2l0aW9uOiBzdGF0aWM7XG4gIHRleHQtYWxpZ246IGxlZnQ7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuYCAvLyBwb2ludGVyLWV2ZW50czogbm9uZSBwcmV2ZW50cyBhbnkgZXJyb3Igd2hlbiB1c2luZyB0aGUgY2hlY2tib3ggaW4gYSBmb3JtIHNpbmNlIGl0IGlzIGFuIHVubmFtZWQgaW5wdXRcblxuY29uc3QgRW1wdHlTdGF0ZSA9IHN0eWxlZChTdGFjaylgXG4gIHBhZGRpbmc6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMl19O1xuYFxuY29uc3QgTG9hZE1vcmUgPSBzdHlsZWQoU3RhY2spYFxuICBwYWRkaW5nOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzAuNV19O1xuYFxuXG5jb25zdCBtb3ZlRm9jdXNEb3duID0gKCkgPT4ge1xuICBjb25zdCBvcHRpb25zID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcbiAgICAnI2l0ZW1zID4gZGl2W3JvbGU9XCJvcHRpb25cIl06bm90KFtkaXNhYmxlZF0pJyxcbiAgKVxuICBjb25zdCBhY3RpdmVJdGVtID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudFxuICBpZiAob3B0aW9ucykge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgb3B0aW9ucz8ubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgIGNvbnN0IGxpc3RMZW5ndGggPSBvcHRpb25zLmxlbmd0aFxuICAgICAgaWYgKGFjdGl2ZUl0ZW0gPT09IG9wdGlvbnNbaV0gJiYgYWN0aXZlSXRlbSAhPT0gb3B0aW9uc1tsaXN0TGVuZ3RoIC0gMV0pIHtcbiAgICAgICAgOyhvcHRpb25zW2kgKyAxXSBhcyBIVE1MRWxlbWVudCkuZm9jdXMoKVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuY29uc3QgbW92ZUZvY3VzVXAgPSAoKSA9PiB7XG4gIGNvbnN0IG9wdGlvbnMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFxuICAgICcjaXRlbXMgPiBkaXZbcm9sZT1cIm9wdGlvblwiXTpub3QoW2Rpc2FibGVkXSknLFxuICApXG4gIGNvbnN0IGFjdGl2ZUl0ZW0gPSBkb2N1bWVudC5hY3RpdmVFbGVtZW50XG5cbiAgaWYgKG9wdGlvbnMpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG9wdGlvbnMubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgIGlmIChhY3RpdmVJdGVtID09PSBvcHRpb25zW2ldICYmIGFjdGl2ZUl0ZW0gIT09IG9wdGlvbnNbMF0pIHtcbiAgICAgICAgOyhvcHRpb25zW2kgLSAxXSBhcyBIVE1MRWxlbWVudCkuZm9jdXMoKVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuY29uc3QgaGFuZGxlS2V5RG93blNlbGVjdCA9IChldmVudDogS2V5Ym9hcmRFdmVudDxIVE1MRGl2RWxlbWVudD4pID0+IHtcbiAgaWYgKGV2ZW50LmtleSA9PT0gJ0Fycm93RG93bicpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgbW92ZUZvY3VzRG93bigpXG4gIH1cblxuICBpZiAoZXZlbnQua2V5ID09PSAnQXJyb3dVcCcpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgbW92ZUZvY3VzVXAoKVxuICB9XG59XG5jb25zdCBoYW5kbGVDbGlja091dHNpZGUgPSAoXG4gIGV2ZW50OiBNb3VzZUV2ZW50LFxuICByZWY6IFJlZk9iamVjdDxIVE1MRGl2RWxlbWVudD4sXG4gIHNldElzRHJvcGRvd25WaXNpYmlsZTogRGlzcGF0Y2g8U2V0U3RhdGVBY3Rpb248Ym9vbGVhbj4+LFxuICByZWZTZWxlY3Q6IFJlZk9iamVjdDxIVE1MRGl2RWxlbWVudD4sXG4gIG9uU2VhcmNoOiBEaXNwYXRjaDxTZXRTdGF0ZUFjdGlvbjxEYXRhVHlwZT4+LFxuICBvcHRpb25zOiBEYXRhVHlwZSxcbikgPT4ge1xuICBpZiAoXG4gICAgcmVmLmN1cnJlbnQgJiZcbiAgICAhcmVmLmN1cnJlbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0IGFzIE5vZGUpICYmXG4gICAgIXJlZlNlbGVjdC5jdXJyZW50Py5jb250YWlucyhldmVudC50YXJnZXQgYXMgTm9kZSlcbiAgKSB7XG4gICAgc2V0SXNEcm9wZG93blZpc2liaWxlKGZhbHNlKVxuICAgIG9uU2VhcmNoKG9wdGlvbnMpXG4gIH1cbn1cblxuY29uc3QgaGFuZGxlS2V5RG93biA9IChcbiAgZXZlbnQ6IGdsb2JhbFRoaXMuS2V5Ym9hcmRFdmVudCxcbiAgcmVmOiBSZWZPYmplY3Q8SFRNTERpdkVsZW1lbnQ+LFxuICBvcHRpb25zOiBEYXRhVHlwZSxcbiAgc2VhcmNoQmFyQWN0aXZlOiBib29sZWFuLFxuICBzZXRTZWFyY2g6IERpc3BhdGNoPFNldFN0YXRlQWN0aW9uPHN0cmluZz4+LFxuICBzZXREZWZhdWx0U2VhcmNoOiBEaXNwYXRjaDxTZXRTdGF0ZUFjdGlvbjxzdHJpbmcgfCBudWxsPj4sXG4gIHNlYXJjaDogc3RyaW5nLFxuKSA9PiB7XG4gIC8vIERlYWxzIHdpdGggZGVmYXVsdCBzZWFyY2hcbiAgaWYgKFxuICAgIHJlZi5jdXJyZW50ICYmXG4gICAgIXNlYXJjaEJhckFjdGl2ZSAmJlxuICAgICFOT05fU0VBUkNIQUJMRV9LRVlTLmluY2x1ZGVzKGV2ZW50LmtleSkgJiZcbiAgICBkb2N1bWVudC5hY3RpdmVFbGVtZW50Py5hcmlhTGFiZWwgIT09ICdzZWFyY2gtYmFyJ1xuICApIHtcbiAgICBjb25zdCBjdXJyZW50U2VhcmNoID0gc2VhcmNoICsgZXZlbnQua2V5XG4gICAgc2V0U2VhcmNoKGN1cnJlbnRTZWFyY2gpXG4gICAgcmVmLmN1cnJlbnQuZm9jdXMoKVxuICAgIGlmICghQXJyYXkuaXNBcnJheShvcHRpb25zKSkge1xuICAgICAgY29uc3QgY2xvc2VzdE9wdGlvbnMgPSB7IC4uLm9wdGlvbnMgfVxuICAgICAgT2JqZWN0LmtleXMoY2xvc2VzdE9wdGlvbnMpLm1hcCgoZ3JvdXA6IHN0cmluZykgPT4ge1xuICAgICAgICBjbG9zZXN0T3B0aW9uc1tncm91cF0gPSBjbG9zZXN0T3B0aW9uc1tncm91cF0uZmlsdGVyKG9wdGlvbiA9PlxuICAgICAgICAgIG9wdGlvbi5zZWFyY2hUZXh0XG4gICAgICAgICAgICA/IG9wdGlvbi5zZWFyY2hUZXh0LnRvTG9jYWxlTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChjdXJyZW50U2VhcmNoKVxuICAgICAgICAgICAgOiBvcHRpb24udmFsdWUudG9Mb2NhbGVMb3dlckNhc2UoKS5zdGFydHNXaXRoKGN1cnJlbnRTZWFyY2gpLFxuICAgICAgICApXG5cbiAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgIH0pXG4gICAgICBjb25zdCBjbG9zZXN0T3B0aW9uID0gY2xvc2VzdE9wdGlvbnNbT2JqZWN0LmtleXMoY2xvc2VzdE9wdGlvbnMpWzBdXVswXVxuICAgICAgaWYgKGNsb3Nlc3RPcHRpb24pIHtcbiAgICAgICAgc2V0RGVmYXVsdFNlYXJjaChjbG9zZXN0T3B0aW9uLnNlYXJjaFRleHQgPz8gY2xvc2VzdE9wdGlvbi52YWx1ZSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNldERlZmF1bHRTZWFyY2gobnVsbClcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgY2xvc2VzdE9wdGlvbiA9IFsuLi5vcHRpb25zXS5maWx0ZXIob3B0aW9uID0+XG4gICAgICAgIG9wdGlvbi5zZWFyY2hUZXh0XG4gICAgICAgICAgPyBvcHRpb24uc2VhcmNoVGV4dC50b0xvY2FsZUxvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoY3VycmVudFNlYXJjaClcbiAgICAgICAgICA6IG9wdGlvbi52YWx1ZS50b0xvY2FsZUxvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoY3VycmVudFNlYXJjaCksXG4gICAgICApWzBdXG4gICAgICBpZiAoY2xvc2VzdE9wdGlvbikge1xuICAgICAgICBzZXREZWZhdWx0U2VhcmNoKGNsb3Nlc3RPcHRpb24uc2VhcmNoVGV4dCA/PyBjbG9zZXN0T3B0aW9uLnZhbHVlKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2V0RGVmYXVsdFNlYXJjaChudWxsKVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuY29uc3QgQ3JlYXRlRHJvcGRvd24gPSAoe1xuICBpc0VtcHR5LFxuICBlbXB0eVN0YXRlLFxuICBkZXNjcmlwdGlvbkRpcmVjdGlvbixcbiAgbG9hZE1vcmUsXG4gIG9wdGlvbmFsSW5mb1BsYWNlbWVudCxcbiAgZGVmYXVsdFNlYXJjaFZhbHVlLFxuICBpc0xvYWRpbmcsXG59OiBDcmVhdGVEcm9wZG93blByb3BzKSA9PiB7XG4gIGNvbnN0IHtcbiAgICBzZXRJc0Ryb3Bkb3duVmlzaWJsZSxcbiAgICBvbkNoYW5nZSxcbiAgICBvcHRpb25zLFxuICAgIG11bHRpc2VsZWN0LFxuICAgIHNlbGVjdEFsbCxcbiAgICBzZWxlY3RBbGxHcm91cCxcbiAgICBkaXNwbGF5ZWRPcHRpb25zLFxuICAgIHNldFNlbGVjdGVkRGF0YSxcbiAgICBzZWxlY3RlZERhdGEsXG4gIH0gPSB1c2VTZWxlY3RJbnB1dCgpXG4gIGNvbnN0IGZvY3VzZWRJdGVtUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGRlZmF1bHRTZWFyY2hWYWx1ZSAmJiBmb2N1c2VkSXRlbVJlZj8uY3VycmVudCkge1xuICAgICAgZm9jdXNlZEl0ZW1SZWYuY3VycmVudC5mb2N1cygpXG4gICAgfVxuICB9LCBbZGVmYXVsdFNlYXJjaFZhbHVlXSlcblxuICBpZiAoaXNFbXB0eSkge1xuICAgIHJldHVybiAoXG4gICAgICA8RW1wdHlTdGF0ZSBnYXA9ezJ9IGFsaWduSXRlbXM9XCJjZW50ZXJcIj5cbiAgICAgICAge2VtcHR5U3RhdGUgPz8gKFxuICAgICAgICAgIDxUZXh0IHZhcmlhbnQ9XCJib2R5U3Ryb25nXCIgYXM9XCJwXCI+XG4gICAgICAgICAgICBObyBvcHRpb25zXG4gICAgICAgICAgPC9UZXh0PlxuICAgICAgICApfVxuICAgICAgPC9FbXB0eVN0YXRlPlxuICAgIClcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZUNsaWNrID0gKGNsaWNrZWRPcHRpb246IE9wdGlvblR5cGUsIGdyb3VwPzogc3RyaW5nKSA9PiB7XG4gICAgc2V0U2VsZWN0ZWREYXRhKHsgdHlwZTogJ3NlbGVjdE9wdGlvbicsIGNsaWNrZWRPcHRpb24sIGdyb3VwIH0pXG4gICAgaWYgKG11bHRpc2VsZWN0KSB7XG4gICAgICBpZiAoc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzLmluY2x1ZGVzKGNsaWNrZWRPcHRpb24udmFsdWUpKSB7XG4gICAgICAgIG9uQ2hhbmdlPy4oXG4gICAgICAgICAgc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzLmZpbHRlcihcbiAgICAgICAgICAgIHZhbCA9PiB2YWwgIT09IGNsaWNrZWRPcHRpb24udmFsdWUsXG4gICAgICAgICAgKSxcbiAgICAgICAgKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb25DaGFuZ2U/LihbLi4uc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzLCBjbGlja2VkT3B0aW9uLnZhbHVlXSlcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgb25DaGFuZ2U/LihjbGlja2VkT3B0aW9uLnZhbHVlKVxuICAgIH1cbiAgICBzZXRJc0Ryb3Bkb3duVmlzaWJsZShtdWx0aXNlbGVjdCkgLy8gaGlkZSB0aGUgZHJvcGRvd24gb24gY2xpY2sgd2hlbiBzaW5nbGUgc2VsZWN0IG9ubHlcbiAgfVxuXG4gIGNvbnN0IHNlbGVjdEFsbE9wdGlvbnMgPSAoKSA9PiB7XG4gICAgaWYgKG11bHRpc2VsZWN0KSB7XG4gICAgICBzZXRTZWxlY3RlZERhdGEoeyB0eXBlOiAnc2VsZWN0QWxsJyB9KVxuICAgICAgaWYgKHNlbGVjdGVkRGF0YS5hbGxTZWxlY3RlZCAmJiBvbkNoYW5nZSkge1xuICAgICAgICBvbkNoYW5nZShbXSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGFsbFZhbHVlczogT3B0aW9uVHlwZVtdID0gW11cbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KG9wdGlvbnMpKSB7XG4gICAgICAgICAgT2JqZWN0LmtleXMob3B0aW9ucykubWFwKChncm91cDogc3RyaW5nKSA9PlxuICAgICAgICAgICAgb3B0aW9uc1tncm91cF0ubWFwKG9wdGlvbiA9PiB7XG4gICAgICAgICAgICAgIGlmICghb3B0aW9uLmRpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgYWxsVmFsdWVzLnB1c2gob3B0aW9uKVxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIClcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvcHRpb25zLm1hcChvcHRpb24gPT4gYWxsVmFsdWVzLnB1c2gob3B0aW9uKSlcbiAgICAgICAgfVxuICAgICAgICBvbkNoYW5nZT8uKGFsbFZhbHVlcy5tYXAodmFsdWUgPT4gdmFsdWUudmFsdWUpKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGhhbmRsZVNlbGVjdEdyb3VwID0gKGdyb3VwOiBzdHJpbmcpID0+IHtcbiAgICBpZiAobXVsdGlzZWxlY3QpIHtcbiAgICAgIHNldFNlbGVjdGVkRGF0YSh7IHR5cGU6ICdzZWxlY3RHcm91cCcsIHNlbGVjdGVkR3JvdXA6IGdyb3VwIH0pXG4gICAgICBpZiAoIUFycmF5LmlzQXJyYXkob3B0aW9ucykpIHtcbiAgICAgICAgaWYgKHNlbGVjdGVkRGF0YS5zZWxlY3RlZEdyb3Vwcy5pbmNsdWRlcyhncm91cCkpIHtcbiAgICAgICAgICBjb25zdCBuZXdTZWxlY3RlZFZhbHVlcyA9IFsuLi5zZWxlY3RlZERhdGEuc2VsZWN0ZWRWYWx1ZXNdLmZpbHRlcihcbiAgICAgICAgICAgIHNlbGVjdGVkVmFsdWUgPT5cbiAgICAgICAgICAgICAgIW9wdGlvbnNbZ3JvdXBdLmZpbmQob3B0aW9uID0+IG9wdGlvbi52YWx1ZSA9PT0gc2VsZWN0ZWRWYWx1ZSksXG4gICAgICAgICAgKVxuICAgICAgICAgIG9uQ2hhbmdlPy4obmV3U2VsZWN0ZWRWYWx1ZXMpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgbmV3U2VsZWN0ZWRWYWx1ZXMgPSBbLi4uc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzXVxuXG4gICAgICAgICAgb3B0aW9uc1tncm91cF0ubWFwKG9wdGlvbiA9PlxuICAgICAgICAgICAgbmV3U2VsZWN0ZWRWYWx1ZXMuaW5jbHVkZXMob3B0aW9uLnZhbHVlKSB8fCBvcHRpb24uZGlzYWJsZWRcbiAgICAgICAgICAgICAgPyBudWxsXG4gICAgICAgICAgICAgIDogbmV3U2VsZWN0ZWRWYWx1ZXMucHVzaChvcHRpb24udmFsdWUpLFxuICAgICAgICAgIClcbiAgICAgICAgICBvbkNoYW5nZT8uKG5ld1NlbGVjdGVkVmFsdWVzKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuICFBcnJheS5pc0FycmF5KGRpc3BsYXllZE9wdGlvbnMpID8gKFxuICAgIDxEcm9wZG93bkNvbnRhaW5lclxuICAgICAgcm9sZT1cImxpc3Rib3hcIlxuICAgICAgaWQ9XCJzZWxlY3QtZHJvcGRvd25cIlxuICAgICAgb25LZXlEb3duPXtoYW5kbGVLZXlEb3duU2VsZWN0fVxuICAgICAgZGF0YS1ncm91cGVkXG4gICAgPlxuICAgICAge2lzTG9hZGluZyA/IChcbiAgICAgICAgPFNrZWxldG9uIHZhcmlhbnQ9XCJibG9ja1wiIC8+XG4gICAgICApIDogKFxuICAgICAgICA8PlxuICAgICAgICAgIHtzZWxlY3RBbGwgJiYgbXVsdGlzZWxlY3QgPyAoXG4gICAgICAgICAgICA8U3RhY2sgaWQ9XCJpdGVtc1wiPlxuICAgICAgICAgICAgICA8RHJvcGRvd25JdGVtXG4gICAgICAgICAgICAgICAgYXJpYS1kaXNhYmxlZD17ZmFsc2V9XG4gICAgICAgICAgICAgICAgYXJpYS1zZWxlY3RlZD17c2VsZWN0ZWREYXRhLmFsbFNlbGVjdGVkfVxuICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJzZWxlY3QtYWxsXCJcbiAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD1cInNlbGVjdC1hbGxcIlxuICAgICAgICAgICAgICAgIGlkPVwic2VsZWN0LWFsbFwiXG4gICAgICAgICAgICAgICAgdGFiSW5kZXg9ezB9XG4gICAgICAgICAgICAgICAgcm9sZT1cIm9wdGlvblwiXG4gICAgICAgICAgICAgICAgb25LZXlEb3duPXtldmVudCA9PlxuICAgICAgICAgICAgICAgICAgWycgJywgJ0VudGVyJ10uaW5jbHVkZXMoZXZlbnQua2V5KSA/IHNlbGVjdEFsbE9wdGlvbnMoKSA6IG51bGxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgb25DbGljaz17c2VsZWN0QWxsT3B0aW9uc31cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxTdHlsZWRDaGVja2JveFxuICAgICAgICAgICAgICAgICAgY2hlY2tlZD17c2VsZWN0ZWREYXRhLmFsbFNlbGVjdGVkfVxuICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgdmFsdWU9XCJzZWxlY3QtYWxsXCJcbiAgICAgICAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwic2VsZWN0LWFsbC1jaGVja2JveFwiXG4gICAgICAgICAgICAgICAgICB0YWJJbmRleD17LTF9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPFN0YWNrIGRpcmVjdGlvbj1cImNvbHVtblwiPlxuICAgICAgICAgICAgICAgICAgICA8VGV4dCBhcz1cInNwYW5cIiB2YXJpYW50PVwiYm9keVwiIHBsYWNlbWVudD1cImxlZnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICB7c2VsZWN0QWxsLmxhYmVsfVxuICAgICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgICAgIDxUZXh0XG4gICAgICAgICAgICAgICAgICAgICAgYXM9XCJzcGFuXCJcbiAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50PVwiYm9keVNtYWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICBzZW50aW1lbnQ9XCJuZXV0cmFsXCJcbiAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJsZWZ0XCJcbiAgICAgICAgICAgICAgICAgICAgICBwcm9taW5lbmNlPVwid2Vha1wiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7c2VsZWN0QWxsLmRlc2NyaXB0aW9ufVxuICAgICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgICA8L1N0YWNrPlxuICAgICAgICAgICAgICAgIDwvU3R5bGVkQ2hlY2tib3g+XG4gICAgICAgICAgICAgIDwvRHJvcGRvd25JdGVtPlxuICAgICAgICAgICAgPC9TdGFjaz5cbiAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICB7T2JqZWN0LmtleXMoZGlzcGxheWVkT3B0aW9ucykubWFwKChncm91cCwgaW5kZXgpID0+IChcbiAgICAgICAgICAgIDxTdGFjayBrZXk9e2dyb3VwfSBnYXA9ezAuMjV9PlxuICAgICAgICAgICAgICB7ZGlzcGxheWVkT3B0aW9uc1tncm91cF0ubGVuZ3RoID4gMCA/IChcbiAgICAgICAgICAgICAgICA8RHJvcGRvd25Hcm91cFdyYXBwZXIgaWQ9e3NlbGVjdEFsbEdyb3VwID8gJ2l0ZW1zJyA6IHVuZGVmaW5lZH0+XG4gICAgICAgICAgICAgICAgICB7Z3JvdXAgPyAoXG4gICAgICAgICAgICAgICAgICAgIDxEcm9wZG93bkdyb3VwXG4gICAgICAgICAgICAgICAgICAgICAga2V5PXtncm91cH1cbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICB0YWJJbmRleD17c2VsZWN0QWxsR3JvdXAgPyAwIDogLTF9XG4gICAgICAgICAgICAgICAgICAgICAgb25LZXlEb3duPXtldmVudCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoWycgJywgJ0VudGVyJ10uaW5jbHVkZXMoZXZlbnQua2V5KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZVNlbGVjdEdyb3VwKGdyb3VwKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgZGF0YS1zZWxlY3Rncm91cD17c2VsZWN0QWxsR3JvdXB9XG4gICAgICAgICAgICAgICAgICAgICAgcm9sZT1cImdyb3VwXCJcbiAgICAgICAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD17YGdyb3VwLSR7aW5kZXh9YH1cbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0QWxsR3JvdXAgPyBoYW5kbGVTZWxlY3RHcm91cChncm91cCkgOiBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAge3NlbGVjdEFsbEdyb3VwID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgPFN0eWxlZENoZWNrYm94XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e3NlbGVjdGVkRGF0YS5zZWxlY3RlZEdyb3Vwcy5pbmNsdWRlcyhncm91cCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2dyb3VwfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD1cInNlbGVjdC1ncm91cFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRhYkluZGV4PXstMX1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPFRleHQgdmFyaWFudD1cImNhcHRpb25cIiBhcz1cInNwYW5cIiBwbGFjZW1lbnQ9XCJsZWZ0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2dyb3VwLnRvVXBwZXJDYXNlKCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvU3R5bGVkQ2hlY2tib3g+XG4gICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxUZXh0XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJjYXB0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYXM9XCJzcGFuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwibGVmdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNlbnRpbWVudD1cIm5ldXRyYWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7Z3JvdXAudG9VcHBlckNhc2UoKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICA8L0Ryb3Bkb3duR3JvdXA+XG4gICAgICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgICAgICA8L0Ryb3Bkb3duR3JvdXBXcmFwcGVyPlxuICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgICAgPFN0YWNrIGlkPVwiaXRlbXNcIiBnYXA9XCIwLjI1XCI+XG4gICAgICAgICAgICAgICAge2Rpc3BsYXllZE9wdGlvbnNbZ3JvdXBdLm1hcCgob3B0aW9uLCBpbmRleE9wdGlvbikgPT4gKFxuICAgICAgICAgICAgICAgICAgPERyb3Bkb3duSXRlbVxuICAgICAgICAgICAgICAgICAgICBrZXk9e29wdGlvbi52YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgYXJpYS1kaXNhYmxlZD17ISFvcHRpb24uZGlzYWJsZWR9XG4gICAgICAgICAgICAgICAgICAgIHRhYkluZGV4PXshb3B0aW9uLmRpc2FibGVkID8gMCA6IC0xfVxuICAgICAgICAgICAgICAgICAgICBhcmlhLXNlbGVjdGVkPXtcbiAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZERhdGEuc2VsZWN0ZWRWYWx1ZXMuaW5jbHVkZXMob3B0aW9uLnZhbHVlKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICFvcHRpb24uZGlzYWJsZWRcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPXtvcHRpb24udmFsdWV9XG4gICAgICAgICAgICAgICAgICAgIGRhdGEtdGVzdGlkPXtgb3B0aW9uLSR7b3B0aW9uLnZhbHVlfWB9XG4gICAgICAgICAgICAgICAgICAgIGlkPXtgb3B0aW9uLSR7aW5kZXhPcHRpb259YH1cbiAgICAgICAgICAgICAgICAgICAgcm9sZT1cIm9wdGlvblwiXG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoIW9wdGlvbi5kaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlQ2xpY2sob3B0aW9uLCBncm91cClcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgIG9uS2V5RG93bj17ZXZlbnQgPT5cbiAgICAgICAgICAgICAgICAgICAgICBbJyAnLCAnRW50ZXInXS5pbmNsdWRlcyhldmVudC5rZXkpXG4gICAgICAgICAgICAgICAgICAgICAgICA/IGhhbmRsZUNsaWNrKG9wdGlvbiwgZ3JvdXApXG4gICAgICAgICAgICAgICAgICAgICAgICA6IG51bGxcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZWY9e1xuICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbi52YWx1ZSA9PT0gZGVmYXVsdFNlYXJjaFZhbHVlIHx8XG4gICAgICAgICAgICAgICAgICAgICAgb3B0aW9uLnNlYXJjaFRleHQgPT09IGRlZmF1bHRTZWFyY2hWYWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgPyBmb2N1c2VkSXRlbVJlZlxuICAgICAgICAgICAgICAgICAgICAgICAgOiBudWxsXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge211bHRpc2VsZWN0ID8gKFxuICAgICAgICAgICAgICAgICAgICAgIDxTdHlsZWRDaGVja2JveFxuICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tlZD17XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkRGF0YS5zZWxlY3RlZFZhbHVlcy5pbmNsdWRlcyhvcHRpb24udmFsdWUpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICFvcHRpb24uZGlzYWJsZWRcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtvcHRpb24uZGlzYWJsZWR9XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17b3B0aW9uLnZhbHVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgdGFiSW5kZXg9ey0xfVxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxEaXNwbGF5T3B0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbj17b3B0aW9ufVxuICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbkRpcmVjdGlvbj17ZGVzY3JpcHRpb25EaXJlY3Rpb259XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsSW5mb1BsYWNlbWVudD17b3B0aW9uYWxJbmZvUGxhY2VtZW50fVxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8L1N0eWxlZENoZWNrYm94PlxuICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgIDxEaXNwbGF5T3B0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb249e29wdGlvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uRGlyZWN0aW9uPXtkZXNjcmlwdGlvbkRpcmVjdGlvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsSW5mb1BsYWNlbWVudD17b3B0aW9uYWxJbmZvUGxhY2VtZW50fVxuICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICA8L0Ryb3Bkb3duSXRlbT5cbiAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgPC9TdGFjaz5cbiAgICAgICAgICAgIDwvU3RhY2s+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvPlxuICAgICAgKX1cbiAgICAgIHtsb2FkTW9yZSA/IDxMb2FkTW9yZT57bG9hZE1vcmV9PC9Mb2FkTW9yZT4gOiBudWxsfVxuICAgIDwvRHJvcGRvd25Db250YWluZXI+XG4gICkgOiAoXG4gICAgPERyb3Bkb3duQ29udGFpbmVyXG4gICAgICByb2xlPVwibGlzdGJveFwiXG4gICAgICB0YWJJbmRleD17LTF9XG4gICAgICBpZD1cInNlbGVjdC1kcm9wZG93blwiXG4gICAgICBvbktleURvd249e2hhbmRsZUtleURvd25TZWxlY3R9XG4gICAgICBnYXA9ezAuMjV9XG4gICAgICBkYXRhLWdyb3VwZWQ9e2ZhbHNlfVxuICAgID5cbiAgICAgIHtzZWxlY3RBbGwgJiYgbXVsdGlzZWxlY3QgPyAoXG4gICAgICAgIDxTdGFjayBpZD1cIml0ZW1zXCIgZ2FwPXswLjI1fSB0YWJJbmRleD17LTF9PlxuICAgICAgICAgIDxEcm9wZG93bkl0ZW1cbiAgICAgICAgICAgIGFyaWEtZGlzYWJsZWQ9e2ZhbHNlfVxuICAgICAgICAgICAgYXJpYS1zZWxlY3RlZD17c2VsZWN0ZWREYXRhLmFsbFNlbGVjdGVkfVxuICAgICAgICAgICAgYXJpYS1sYWJlbD1cInNlbGVjdC1hbGxcIlxuICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJzZWxlY3QtYWxsXCJcbiAgICAgICAgICAgIHRhYkluZGV4PXswfVxuICAgICAgICAgICAgcm9sZT1cIm9wdGlvblwiXG4gICAgICAgICAgICBvbktleURvd249e2V2ZW50ID0+XG4gICAgICAgICAgICAgIFsnICcsICdFbnRlciddLmluY2x1ZGVzKGV2ZW50LmtleSkgPyBzZWxlY3RBbGxPcHRpb25zKCkgOiBudWxsXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvbkNsaWNrPXtzZWxlY3RBbGxPcHRpb25zfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxTdHlsZWRDaGVja2JveFxuICAgICAgICAgICAgICBjaGVja2VkPXtzZWxlY3RlZERhdGEuYWxsU2VsZWN0ZWR9XG4gICAgICAgICAgICAgIGRpc2FibGVkPXtmYWxzZX1cbiAgICAgICAgICAgICAgdmFsdWU9XCJzZWxlY3QtYWxsXCJcbiAgICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJzZWxlY3QtYWxsLWNoZWNrYm94XCJcbiAgICAgICAgICAgICAgdGFiSW5kZXg9ey0xfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8U3RhY2sgZGlyZWN0aW9uPVwiY29sdW1uXCI+XG4gICAgICAgICAgICAgICAgPFRleHQgYXM9XCJzcGFuXCIgdmFyaWFudD1cImJvZHlcIiBwbGFjZW1lbnQ9XCJsZWZ0XCI+XG4gICAgICAgICAgICAgICAgICB7c2VsZWN0QWxsLmxhYmVsfVxuICAgICAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgICAgICA8VGV4dFxuICAgICAgICAgICAgICAgICAgYXM9XCJzcGFuXCJcbiAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJib2R5U21hbGxcIlxuICAgICAgICAgICAgICAgICAgc2VudGltZW50PVwibmV1dHJhbFwiXG4gICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJsZWZ0XCJcbiAgICAgICAgICAgICAgICAgIHByb21pbmVuY2U9XCJ3ZWFrXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICB7c2VsZWN0QWxsLmRlc2NyaXB0aW9ufVxuICAgICAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgICAgPC9TdGFjaz5cbiAgICAgICAgICAgIDwvU3R5bGVkQ2hlY2tib3g+XG4gICAgICAgICAgPC9Ecm9wZG93bkl0ZW0+XG4gICAgICAgIDwvU3RhY2s+XG4gICAgICApIDogbnVsbH1cbiAgICAgIDxTdGFjayBpZD1cIml0ZW1zXCIgZ2FwPXswLjI1fT5cbiAgICAgICAge2lzTG9hZGluZyA/IChcbiAgICAgICAgICA8U2tlbGV0b24gdmFyaWFudD1cImJsb2NrXCIgLz5cbiAgICAgICAgKSA6IChcbiAgICAgICAgICBkaXNwbGF5ZWRPcHRpb25zLm1hcCgob3B0aW9uLCBpbmRleCkgPT4gKFxuICAgICAgICAgICAgPERyb3Bkb3duSXRlbVxuICAgICAgICAgICAgICBrZXk9e29wdGlvbi52YWx1ZX1cbiAgICAgICAgICAgICAgYXJpYS1kaXNhYmxlZD17ISFvcHRpb24uZGlzYWJsZWR9XG4gICAgICAgICAgICAgIGFyaWEtc2VsZWN0ZWQ9e1xuICAgICAgICAgICAgICAgIHNlbGVjdGVkRGF0YS5zZWxlY3RlZFZhbHVlcy5pbmNsdWRlcyhvcHRpb24udmFsdWUpICYmXG4gICAgICAgICAgICAgICAgIW9wdGlvbi5kaXNhYmxlZFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIW9wdGlvbi5kaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgICAgaGFuZGxlQ2xpY2sob3B0aW9uKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgYXJpYS1sYWJlbD17b3B0aW9uLnZhbHVlfVxuICAgICAgICAgICAgICBkYXRhLXRlc3RpZD17YG9wdGlvbi0ke29wdGlvbi52YWx1ZX1gfVxuICAgICAgICAgICAgICBpZD17YG9wdGlvbi0ke2luZGV4fWB9XG4gICAgICAgICAgICAgIHJvbGU9XCJvcHRpb25cIlxuICAgICAgICAgICAgICB0YWJJbmRleD17IW9wdGlvbi5kaXNhYmxlZCA/IDAgOiAtMX1cbiAgICAgICAgICAgICAgcmVmPXtcbiAgICAgICAgICAgICAgICBvcHRpb24udmFsdWUgPT09IGRlZmF1bHRTZWFyY2hWYWx1ZSB8fFxuICAgICAgICAgICAgICAgIG9wdGlvbi5zZWFyY2hUZXh0ID09PSBkZWZhdWx0U2VhcmNoVmFsdWVcbiAgICAgICAgICAgICAgICAgID8gZm9jdXNlZEl0ZW1SZWZcbiAgICAgICAgICAgICAgICAgIDogbnVsbFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIG9uS2V5RG93bj17ZXZlbnQgPT5cbiAgICAgICAgICAgICAgICBbJyAnLCAnRW50ZXInXS5pbmNsdWRlcyhldmVudC5rZXkpID8gaGFuZGxlQ2xpY2sob3B0aW9uKSA6IG51bGxcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7bXVsdGlzZWxlY3QgPyAoXG4gICAgICAgICAgICAgICAgPFN0eWxlZENoZWNrYm94XG4gICAgICAgICAgICAgICAgICBjaGVja2VkPXtcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzLmluY2x1ZGVzKG9wdGlvbi52YWx1ZSkgJiZcbiAgICAgICAgICAgICAgICAgICAgIW9wdGlvbi5kaXNhYmxlZFxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e29wdGlvbi5kaXNhYmxlZH1cbiAgICAgICAgICAgICAgICAgIHZhbHVlPXtvcHRpb24udmFsdWV9XG4gICAgICAgICAgICAgICAgICB0YWJJbmRleD17LTF9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPERpc3BsYXlPcHRpb25cbiAgICAgICAgICAgICAgICAgICAgb3B0aW9uPXtvcHRpb259XG4gICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uRGlyZWN0aW9uPXtkZXNjcmlwdGlvbkRpcmVjdGlvbn1cbiAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWxJbmZvUGxhY2VtZW50PXtvcHRpb25hbEluZm9QbGFjZW1lbnR9XG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvU3R5bGVkQ2hlY2tib3g+XG4gICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgPERpc3BsYXlPcHRpb25cbiAgICAgICAgICAgICAgICAgIG9wdGlvbj17b3B0aW9ufVxuICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb25EaXJlY3Rpb249e2Rlc2NyaXB0aW9uRGlyZWN0aW9ufVxuICAgICAgICAgICAgICAgICAgb3B0aW9uYWxJbmZvUGxhY2VtZW50PXtvcHRpb25hbEluZm9QbGFjZW1lbnR9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvRHJvcGRvd25JdGVtPlxuICAgICAgICAgICkpXG4gICAgICAgICl9XG4gICAgICAgIHtsb2FkTW9yZSA/IDxMb2FkTW9yZT57bG9hZE1vcmV9PC9Mb2FkTW9yZT4gOiBudWxsfVxuICAgICAgPC9TdGFjaz5cbiAgICA8L0Ryb3Bkb3duQ29udGFpbmVyPlxuICApXG59XG5leHBvcnQgY29uc3QgRHJvcGRvd24gPSAoe1xuICBjaGlsZHJlbixcbiAgZW1wdHlTdGF0ZSxcbiAgZGVzY3JpcHRpb25EaXJlY3Rpb24sXG4gIHNlYXJjaGFibGUsXG4gIHBsYWNlaG9sZGVyLFxuICBmb290ZXIsXG4gIHJlZlNlbGVjdCxcbiAgbG9hZE1vcmUsXG4gIG9wdGlvbmFsSW5mb1BsYWNlbWVudCxcbiAgaXNMb2FkaW5nLFxuICBzaXplLFxufTogRHJvcGRvd25Qcm9wcykgPT4ge1xuICBjb25zdCB7XG4gICAgc2V0SXNEcm9wZG93blZpc2libGUsXG4gICAgaXNEcm9wZG93blZpc2libGUsXG4gICAgb25TZWFyY2gsXG4gICAgc2VhcmNoSW5wdXQsXG4gICAgb3B0aW9ucyxcbiAgICBkaXNwbGF5ZWRPcHRpb25zLFxuICAgIG51bWJlck9mT3B0aW9ucyxcbiAgfSA9IHVzZVNlbGVjdElucHV0KClcbiAgY29uc3QgdGhlbWUgPSB1c2VUaGVtZSgpXG4gIGNvbnN0IFtzZWFyY2hCYXJBY3RpdmUsIHNldFNlYXJjaEJhckFjdGl2ZV0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW2RlZmF1bHRTZWFyY2hWYWx1ZSwgc2V0RGVmYXVsdFNlYXJjaF0gPSB1c2VTdGF0ZTxzdHJpbmcgfCBudWxsPihudWxsKVxuICBjb25zdCByZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IFtzZWFyY2gsIHNldFNlYXJjaF0gPSB1c2VTdGF0ZTxzdHJpbmc+KCcnKVxuICBjb25zdCBbbWF4V2lkdGgsIHNldFdpZHRoXSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bWJlcj4oKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHJlZlNlbGVjdC5jdXJyZW50ICYmIGlzRHJvcGRvd25WaXNpYmxlKSB7XG4gICAgICBjb25zdCBwb3NpdGlvbiA9XG4gICAgICAgIHJlZlNlbGVjdC5jdXJyZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmJvdHRvbSArXG4gICAgICAgIERST1BET1dOX01BWF9IRUlHSFQgK1xuICAgICAgICBJTlBVVF9TSVpFX0hFSUdIVFtzaXplXSArXG4gICAgICAgIHBhcnNlSW50KHRoZW1lLnNwYWNlWyc1J10sIDEwKVxuICAgICAgY29uc3Qgb3ZlcmZsb3cgPSBwb3NpdGlvbiAtIHdpbmRvdy5pbm5lckhlaWdodFxuICAgICAgaWYgKG92ZXJmbG93ID4gMCkge1xuICAgICAgICBjb25zdCBtb2RhbEVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYmFja2Ryb3AtbW9kYWwnKVxuXG4gICAgICAgIGlmIChtb2RhbEVsZW1lbnQpIHtcbiAgICAgICAgICBtb2RhbEVsZW1lbnQuc2Nyb2xsQnkoeyB0b3A6IG92ZXJmbG93LCBiZWhhdmlvcjogJ3Ntb290aCcgfSlcbiAgICAgICAgfSBlbHNlIHdpbmRvdy5zY3JvbGxCeSh7IHRvcDogb3ZlcmZsb3csIGJlaGF2aW9yOiAnc21vb3RoJyB9KVxuICAgICAgfVxuICAgIH1cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvZXhoYXVzdGl2ZS1kZXBzXG4gIH0sIFtpc0Ryb3Bkb3duVmlzaWJsZSwgcmVmU2VsZWN0LCBzaXplLCByZWYuY3VycmVudF0pXG5cbiAgY29uc3QgcmVzaXplRHJvcGRvd24gPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKFxuICAgICAgcmVmU2VsZWN0LmN1cnJlbnQgJiZcbiAgICAgIHJlZlNlbGVjdC5jdXJyZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoID4gMFxuICAgICkge1xuICAgICAgc2V0V2lkdGgocmVmU2VsZWN0LmN1cnJlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGgpXG4gICAgfVxuICB9LCBbcmVmU2VsZWN0XSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHJlc2l6ZURyb3Bkb3duKClcblxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCByZXNpemVEcm9wZG93bilcblxuICAgIHJldHVybiAoKSA9PiB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgcmVzaXplRHJvcGRvd24pXG4gIH0sIFtyZXNpemVEcm9wZG93bl0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIXNlYXJjaElucHV0KSB7XG4gICAgICBvblNlYXJjaChvcHRpb25zKVxuICAgIH1cbiAgfSwgW29uU2VhcmNoLCBvcHRpb25zLCBzZWFyY2hJbnB1dF0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWlzRHJvcGRvd25WaXNpYmxlKSB7XG4gICAgICBzZXREZWZhdWx0U2VhcmNoKG51bGwpXG4gICAgICBzZXRTZWFyY2goJycpXG4gICAgfVxuXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgZXZlbnQgPT5cbiAgICAgIGhhbmRsZUNsaWNrT3V0c2lkZShcbiAgICAgICAgZXZlbnQsXG4gICAgICAgIHJlZixcbiAgICAgICAgc2V0SXNEcm9wZG93blZpc2libGUsXG4gICAgICAgIHJlZlNlbGVjdCxcbiAgICAgICAgb25TZWFyY2gsXG4gICAgICAgIG9wdGlvbnMsXG4gICAgICApLFxuICAgIClcblxuICAgIGlmICghc2VhcmNoYWJsZSkge1xuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIGV2ZW50ID0+XG4gICAgICAgIGhhbmRsZUtleURvd24oXG4gICAgICAgICAgZXZlbnQsXG4gICAgICAgICAgcmVmLFxuICAgICAgICAgIG9wdGlvbnMsXG4gICAgICAgICAgc2VhcmNoQmFyQWN0aXZlLFxuICAgICAgICAgIHNldFNlYXJjaCxcbiAgICAgICAgICBzZXREZWZhdWx0U2VhcmNoLFxuICAgICAgICAgIHNlYXJjaCxcbiAgICAgICAgKSxcbiAgICAgIClcbiAgICB9XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgZXZlbnQgPT5cbiAgICAgICAgaGFuZGxlQ2xpY2tPdXRzaWRlKFxuICAgICAgICAgIGV2ZW50LFxuICAgICAgICAgIHJlZixcbiAgICAgICAgICBzZXRJc0Ryb3Bkb3duVmlzaWJsZSxcbiAgICAgICAgICByZWZTZWxlY3QsXG4gICAgICAgICAgb25TZWFyY2gsXG4gICAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgKSxcbiAgICAgIClcblxuICAgICAgaWYgKCFzZWFyY2hhYmxlKSB7XG4gICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBldmVudCA9PlxuICAgICAgICAgIGhhbmRsZUtleURvd24oXG4gICAgICAgICAgICBldmVudCxcbiAgICAgICAgICAgIHJlZixcbiAgICAgICAgICAgIG9wdGlvbnMsXG4gICAgICAgICAgICBzZWFyY2hCYXJBY3RpdmUsXG4gICAgICAgICAgICBzZXRTZWFyY2gsXG4gICAgICAgICAgICBzZXREZWZhdWx0U2VhcmNoLFxuICAgICAgICAgICAgc2VhcmNoLFxuICAgICAgICAgICksXG4gICAgICAgIClcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtcbiAgICBpc0Ryb3Bkb3duVmlzaWJsZSxcbiAgICBzZWFyY2hCYXJBY3RpdmUsXG4gICAgb3B0aW9ucyxcbiAgICBvblNlYXJjaCxcbiAgICBzZWFyY2gsXG4gICAgcmVmU2VsZWN0LFxuICAgIHNldERlZmF1bHRTZWFyY2gsXG4gICAgc2V0SXNEcm9wZG93blZpc2libGUsXG4gICAgc2VhcmNoYWJsZSxcbiAgXSlcblxuICAvLyBObyBkYXRhIGlzIGRpc3BsYXllZCAoYmVjYXVzZSBvZiB0aGUgc2VhcmNoIG9yIGJlY2F1c2Ugbm8gZGF0YSBpcyBwcm92aWRlZClcbiAgLy8gU2V0IHRvIHRydWUgd2hlbiBub0RhdGEgYnkgZGVmYXVsdFxuICBjb25zdCBpc0VtcHR5ID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKG51bWJlck9mT3B0aW9ucyA9PT0gMCkgcmV0dXJuIHRydWVcbiAgICBpZiAoQXJyYXkuaXNBcnJheShkaXNwbGF5ZWRPcHRpb25zKSkge1xuICAgICAgcmV0dXJuICEoZGlzcGxheWVkT3B0aW9ucy5sZW5ndGggPiAwKVxuICAgIH1cbiAgICBjb25zdCBncm91cHMgPSBPYmplY3Qua2V5cyhkaXNwbGF5ZWRPcHRpb25zKVxuICAgIGZvciAoY29uc3QgZ3JvdXAgb2YgZ3JvdXBzKSB7XG4gICAgICBpZiAoZGlzcGxheWVkT3B0aW9uc1tncm91cF0ubGVuZ3RoICE9PSAwKSB7XG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0cnVlXG4gIH0sIFtkaXNwbGF5ZWRPcHRpb25zLCBudW1iZXJPZk9wdGlvbnNdKVxuXG4gIGNvbnN0IGNvbXB1dGVkRm9vdGVyID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKGZvb3Rlcikge1xuICAgICAgaWYgKHR5cGVvZiBmb290ZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICA8UG9wdXBGb290ZXI+e2Zvb3RlcigoKSA9PiBzZXRJc0Ryb3Bkb3duVmlzaWJsZShmYWxzZSkpfTwvUG9wdXBGb290ZXI+XG4gICAgICAgIClcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIDxQb3B1cEZvb3Rlcj57Zm9vdGVyfTwvUG9wdXBGb290ZXI+XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGxcbiAgfSwgW2Zvb3Rlciwgc2V0SXNEcm9wZG93blZpc2libGVdKVxuXG4gIHJldHVybiAoXG4gICAgPFN0eWxlZFBvcHVwXG4gICAgICB2aXNpYmxlPXtpc0Ryb3Bkb3duVmlzaWJsZX1cbiAgICAgIHRleHQ9e1xuICAgICAgICA8U3RhY2s+XG4gICAgICAgICAge3NlYXJjaGFibGUgJiYgIWlzTG9hZGluZyAmJiBudW1iZXJPZk9wdGlvbnMgPj0gNiA/IChcbiAgICAgICAgICAgIDxTZWFyY2hCYXJEcm9wZG93blxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj17cGxhY2Vob2xkZXJ9XG4gICAgICAgICAgICAgIGRpc3BsYXllZE9wdGlvbnM9e2Rpc3BsYXllZE9wdGlvbnN9XG4gICAgICAgICAgICAgIHNldFNlYXJjaEJhckFjdGl2ZT17c2V0U2VhcmNoQmFyQWN0aXZlfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICA8Q3JlYXRlRHJvcGRvd25cbiAgICAgICAgICAgIGlzRW1wdHk9e2lzRW1wdHl9XG4gICAgICAgICAgICBlbXB0eVN0YXRlPXtlbXB0eVN0YXRlfVxuICAgICAgICAgICAgZGVzY3JpcHRpb25EaXJlY3Rpb249e2Rlc2NyaXB0aW9uRGlyZWN0aW9ufVxuICAgICAgICAgICAgbG9hZE1vcmU9e2xvYWRNb3JlfVxuICAgICAgICAgICAgb3B0aW9uYWxJbmZvUGxhY2VtZW50PXtvcHRpb25hbEluZm9QbGFjZW1lbnR9XG4gICAgICAgICAgICBkZWZhdWx0U2VhcmNoVmFsdWU9e2RlZmF1bHRTZWFyY2hWYWx1ZX1cbiAgICAgICAgICAgIGlzTG9hZGluZz17aXNMb2FkaW5nfVxuICAgICAgICAgIC8+XG4gICAgICAgICAge2NvbXB1dGVkRm9vdGVyfVxuICAgICAgICA8L1N0YWNrPlxuICAgICAgfVxuICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcbiAgICAgIGRpc2FibGVBbmltYXRpb25cbiAgICAgIG1heFdpZHRoPXttYXhXaWR0aCA/PyByZWZTZWxlY3QuY3VycmVudD8ub2Zmc2V0V2lkdGh9XG4gICAgICBoYXNBcnJvdz17ZmFsc2V9XG4gICAgICByZWY9e3JlZn1cbiAgICAgIHRhYkluZGV4PXswfVxuICAgICAgcm9sZT1cImRpYWxvZ1wiXG4gICAgICBkZWJvdW5jZURlbGF5PXswfVxuICAgICAgY29udGFpbmVyRnVsbFdpZHRoXG4gICAgICBhbGlnbj1cInN0YXJ0XCJcbiAgICA+XG4gICAgICB7Y2hpbGRyZW59XG4gICAgPC9TdHlsZWRQb3B1cD5cbiAgKVxufVxuIl19 */"));
53
53
  const DropdownGroup = /* @__PURE__ */ _styled__default.default("button", process.env.NODE_ENV === "production" ? {
54
54
  target: "eeucz6c6"
55
55
  } : {
@@ -75,7 +75,7 @@ const DropdownGroup = /* @__PURE__ */ _styled__default.default("button", process
75
75
  theme
76
76
  }) => theme.colors.neutral.backgroundWeak, ";}&[data-selectgroup='true']:focus{background-color:", ({
77
77
  theme
78
- }) => theme.colors.neutral.backgroundHover, ";}" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL3VsdHJhdmlvbGV0L3VsdHJhdmlvbGV0L3BhY2thZ2VzL3VpL3NyYy9jb21wb25lbnRzL1NlbGVjdElucHV0VjIvRHJvcGRvd24udHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWdGb0UiLCJmaWxlIjoiL2hvbWUvcnVubmVyL3dvcmsvdWx0cmF2aW9sZXQvdWx0cmF2aW9sZXQvcGFja2FnZXMvdWkvc3JjL2NvbXBvbmVudHMvU2VsZWN0SW5wdXRWMi9Ecm9wZG93bi50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1c2VUaGVtZSB9IGZyb20gJ0BlbW90aW9uL3JlYWN0J1xuaW1wb3J0IHN0eWxlZCBmcm9tICdAZW1vdGlvbi9zdHlsZWQnXG5pbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VNZW1vLCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgdHlwZSB7XG4gIERpc3BhdGNoLFxuICBLZXlib2FyZEV2ZW50LFxuICBSZWFjdE5vZGUsXG4gIFJlZk9iamVjdCxcbiAgU2V0U3RhdGVBY3Rpb24sXG59IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgQ2hlY2tib3ggfSBmcm9tICcuLi9DaGVja2JveCdcbmltcG9ydCB7IFBvcHVwIH0gZnJvbSAnLi4vUG9wdXAnXG5pbXBvcnQgeyBTa2VsZXRvbiB9IGZyb20gJy4uL1NrZWxldG9uJ1xuaW1wb3J0IHsgU3RhY2sgfSBmcm9tICcuLi9TdGFjaydcbmltcG9ydCB7IFRleHQgfSBmcm9tICcuLi9UZXh0J1xuaW1wb3J0IHsgRGlzcGxheU9wdGlvbiB9IGZyb20gJy4vRHJvcGRvd25PcHRpb24nXG5pbXBvcnQgeyBTZWFyY2hCYXJEcm9wZG93biB9IGZyb20gJy4vU2VhcmNoQmFyRHJvcGRvd24nXG5pbXBvcnQgeyB1c2VTZWxlY3RJbnB1dCB9IGZyb20gJy4vU2VsZWN0SW5wdXRQcm92aWRlcidcbmltcG9ydCB7IHR5cGUgRGF0YVR5cGUsIElOUFVUX1NJWkVfSEVJR0hULCB0eXBlIE9wdGlvblR5cGUgfSBmcm9tICcuL3R5cGVzJ1xuXG5jb25zdCBEUk9QRE9XTl9NQVhfSEVJR0hUID0gMjU2XG5cbmV4cG9ydCB0eXBlIERyb3Bkb3duUHJvcHMgPSB7XG4gIGNoaWxkcmVuOiBSZWFjdE5vZGVcbiAgZW1wdHlTdGF0ZTogUmVhY3ROb2RlXG4gIGRlc2NyaXB0aW9uRGlyZWN0aW9uOiAncm93JyB8ICdjb2x1bW4nXG4gIHNlYXJjaGFibGU6IGJvb2xlYW5cbiAgcGxhY2Vob2xkZXI6IHN0cmluZ1xuICBmb290ZXI/OiBSZWFjdE5vZGVcbiAgcmVmU2VsZWN0OiBSZWZPYmplY3Q8SFRNTERpdkVsZW1lbnQ+XG4gIGxvYWRNb3JlPzogUmVhY3ROb2RlXG4gIG9wdGlvbmFsSW5mb1BsYWNlbWVudDogJ2xlZnQnIHwgJ3JpZ2h0J1xuICBpc0xvYWRpbmc/OiBib29sZWFuXG4gIHNpemU6ICdzbWFsbCcgfCAnbWVkaXVtJyB8ICdsYXJnZSdcbn1cblxuZXhwb3J0IHR5cGUgQ3JlYXRlRHJvcGRvd25Qcm9wcyA9IHtcbiAgaXNFbXB0eTogYm9vbGVhblxuICBlbXB0eVN0YXRlOiBSZWFjdE5vZGVcbiAgZGVzY3JpcHRpb25EaXJlY3Rpb246ICdyb3cnIHwgJ2NvbHVtbidcbiAgbG9hZE1vcmU/OiBSZWFjdE5vZGVcbiAgb3B0aW9uYWxJbmZvUGxhY2VtZW50OiAnbGVmdCcgfCAncmlnaHQnXG4gIGRlZmF1bHRTZWFyY2hWYWx1ZTogc3RyaW5nIHwgbnVsbFxuICBpc0xvYWRpbmc/OiBib29sZWFuXG59XG5cbmNvbnN0IE5PTl9TRUFSQ0hBQkxFX0tFWVMgPSBbXG4gICdUYWInLFxuICAnICcsXG4gICdFbnRlcicsXG4gICdDYXBzTG9jaycsXG4gICdTaGlmdCcsXG4gICdBcnJvd0Rvd24nLFxuICAnQXJyb3dVcCcsXG4gICdBcnJvd0xlZnQnLFxuICAnQXJyb3dSaWdodCcsXG4gICdFc2NhcGUnLFxuXVxuXG5jb25zdCBTdHlsZWRQb3B1cCA9IHN0eWxlZChQb3B1cClgXG4gIHdpZHRoOiAxMDAlO1xuICBtaW4td2lkdGg6IDMyMHB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5vdGhlci5lbGV2YXRpb24uYmFja2dyb3VuZC5yYWlzZWR9O1xuICBjb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMubmV1dHJhbC50ZXh0fTtcbiAgYm94LXNoYWRvdzogJHsoeyB0aGVtZSB9KSA9PiBgJHt0aGVtZS5zaGFkb3dzLnJhaXNlZFswXX0sICR7dGhlbWUuc2hhZG93cy5yYWlzZWRbMV19YH07XG4gIHBhZGRpbmc6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMF19O1xuICBtYXJnaW4tYm90dG9tOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzEwXX07XG5gXG5cbmNvbnN0IERyb3Bkb3duQ29udGFpbmVyID0gc3R5bGVkKFN0YWNrKTx7ICdkYXRhLWdyb3VwZWQnOiBib29sZWFuIH0+YFxuICBtYXgtaGVpZ2h0OiAke0RST1BET1dOX01BWF9IRUlHSFR9cHg7XG4gIG92ZXJmbG93LXk6IHNjcm9sbDtcbiAgcGFkZGluZzogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVswXX07XG4gIHBhZGRpbmctYm90dG9tOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzAuNV19O1xuICBwYWRkaW5nLXRvcDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVswLjVdfTtcblxuICAmW2RhdGEtZ3JvdXBlZD1cInRydWVcIl0ge1xuICAgIHBhZGRpbmctdG9wOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzBdfTtcbiAgfVxuYFxuY29uc3QgRHJvcGRvd25Hcm91cCA9IHN0eWxlZC5idXR0b248eyAnZGF0YS1zZWxlY3Rncm91cCc6IGJvb2xlYW4gfT5gXG4gIGRpc3BsYXk6IGZsZXg7XG4gIHdpZHRoOiAxMDAlO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGxlZnQ7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGJvcmRlcjogbm9uZTtcbiAgYmFja2dyb3VuZC1jb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMubmV1dHJhbC5iYWNrZ3JvdW5kV2Vha307XG4gIHBvc2l0aW9uOiBzdGlja3k7XG4gIHRvcDogMHB4O1xuICBwYWRkaW5nLXJpZ2h0OiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzJdfTtcbiAgcGFkZGluZy1sZWZ0OiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzJdfTtcbiAgaGVpZ2h0OiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzRdfTtcbiAgdGV4dC1hbGlnbjogbGVmdDtcbiAgbWFyZ2luLWJvdHRvbTogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsnMC4yNSddfTtcblxuICAmOmZvY3VzIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5uZXV0cmFsLmJhY2tncm91bmRXZWFrfTtcbiAgICBvdXRsaW5lOiBub25lO1xuICB9XG5cbiAgJltkYXRhLXNlbGVjdGdyb3VwPSd0cnVlJ10ge1xuICAgIHBhZGRpbmctbGVmdDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsyXX07XG4gICAgYm9yZGVyLWxlZnQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMC41XX0gc29saWQgJHsoeyB0aGVtZSB9KSA9PlxuICAgICAgdGhlbWUuY29sb3JzLm5ldXRyYWwuYmFja2dyb3VuZFdlYWt9O1xuICB9XG5cbiAgJltkYXRhLXNlbGVjdGdyb3VwPSd0cnVlJ106Zm9jdXMge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwuYmFja2dyb3VuZEhvdmVyfTtcbiAgfVxuYFxuY29uc3QgRHJvcGRvd25Hcm91cFdyYXBwZXIgPSBzdHlsZWQuZGl2YFxuICBwb3NpdGlvbjogc3RpY2t5O1xuICB0b3A6IDBweDtcbmBcbmNvbnN0IERyb3Bkb3duSXRlbSA9IHN0eWxlZC5kaXY8e1xuICAnYXJpYS1zZWxlY3RlZCc6IGJvb2xlYW5cbiAgJ2FyaWEtZGlzYWJsZWQnOiBib29sZWFuXG59PmBcbiAgdGV4dC1hbGlnbjpsZWZ0O1xuICBib3JkZXI6IG5vbmU7XG4gIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm90aGVyLmVsZXZhdGlvbi5iYWNrZ3JvdW5kLnJhaXNlZH07XG5cbiAgcGFkZGluZzogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsnMS41J119ICR7KHsgdGhlbWUgfSkgPT5cbiAgICB0aGVtZS5zcGFjZVsnMiddfSAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWycxLjUnXX0gJHsoeyB0aGVtZSB9KSA9PlxuICAgIHRoZW1lLnNwYWNlWycyJ119O1xuICBtYXJnaW4tbGVmdDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsnMC41J119O1xuICBtYXJnaW4tcmlnaHQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbJzAuNSddfTtcblxuICBjb2xvcjogICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwudGV4dH07XG4gIGJvcmRlci1yYWRpdXM6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUucmFkaWkuZGVmYXVsdH07XG5cbiAgJjpob3ZlciwgOmZvY3VzIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5wcmltYXJ5LmJhY2tncm91bmR9O1xuICAgIGNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5wcmltYXJ5LnRleHR9O1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBvdXRsaW5lOiBub25lO1xuICB9XG5cbiAgJlthcmlhLXNlbGVjdGVkPSd0cnVlJ10ge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLnByaW1hcnkuYmFja2dyb3VuZH07XG4gIH1cblxuICAmW2FyaWEtZGlzYWJsZWQ9XCJ0cnVlXCJdIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5uZXV0cmFsLmJhY2tncm91bmREaXNhYmxlZH07XG4gICAgY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwudGV4dERpc2FibGVkfTtcbiAgfVxuXG4gICZbYXJpYS1kaXNhYmxlZD1cInRydWVcIl06aG92ZXIsIFthcmlhLWRpc2FibGVkPVwidHJ1ZVwiXTpmb2N1cyB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHsoeyB0aGVtZSB9KSA9PlxuICAgICAgdGhlbWUuY29sb3JzLm5ldXRyYWwuYmFja2dyb3VuZFN0cm9uZ0Rpc2FibGVkfTtcbiAgICBjb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMubmV1dHJhbC50ZXh0U3Ryb25nRGlzYWJsZWR9O1xuICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgfVxuYFxuXG5jb25zdCBQb3B1cEZvb3RlciA9IHN0eWxlZC5kaXZgXG4gIHdpZHRoOiAxMDAlO1xuICBwYWRkaW5nOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzEuNV19ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMl19XG4gICAgJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsxLjVdfSAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzJdfTtcbiAgYm94LXNoYWRvdzogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zaGFkb3dzLmRyb3Bkb3dufTtcbmBcbmNvbnN0IFN0eWxlZENoZWNrYm94ID0gc3R5bGVkKENoZWNrYm94KWBcbiAgd2lkdGg6IDEwMCU7XG4gIHBvc2l0aW9uOiBzdGF0aWM7XG4gIHRleHQtYWxpZ246IGxlZnQ7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuYCAvLyBwb2ludGVyLWV2ZW50czogbm9uZSBwcmV2ZW50cyBhbnkgZXJyb3Igd2hlbiB1c2luZyB0aGUgY2hlY2tib3ggaW4gYSBmb3JtIHNpbmNlIGl0IGlzIGFuIHVubmFtZWQgaW5wdXRcblxuY29uc3QgRW1wdHlTdGF0ZSA9IHN0eWxlZChTdGFjaylgXG4gIHBhZGRpbmc6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMl19O1xuYFxuY29uc3QgTG9hZE1vcmUgPSBzdHlsZWQoU3RhY2spYFxuICBwYWRkaW5nOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzAuNV19O1xuYFxuXG5jb25zdCBtb3ZlRm9jdXNEb3duID0gKCkgPT4ge1xuICBjb25zdCBvcHRpb25zID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcbiAgICAnI2l0ZW1zID4gZGl2W3JvbGU9XCJvcHRpb25cIl06bm90KFtkaXNhYmxlZF0pJyxcbiAgKVxuICBjb25zdCBhY3RpdmVJdGVtID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudFxuICBpZiAob3B0aW9ucykge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgb3B0aW9ucz8ubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgIGNvbnN0IGxpc3RMZW5ndGggPSBvcHRpb25zLmxlbmd0aFxuICAgICAgaWYgKGFjdGl2ZUl0ZW0gPT09IG9wdGlvbnNbaV0gJiYgYWN0aXZlSXRlbSAhPT0gb3B0aW9uc1tsaXN0TGVuZ3RoIC0gMV0pIHtcbiAgICAgICAgOyhvcHRpb25zW2kgKyAxXSBhcyBIVE1MRWxlbWVudCkuZm9jdXMoKVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuY29uc3QgbW92ZUZvY3VzVXAgPSAoKSA9PiB7XG4gIGNvbnN0IG9wdGlvbnMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFxuICAgICcjaXRlbXMgPiBkaXZbcm9sZT1cIm9wdGlvblwiXTpub3QoW2Rpc2FibGVkXSknLFxuICApXG4gIGNvbnN0IGFjdGl2ZUl0ZW0gPSBkb2N1bWVudC5hY3RpdmVFbGVtZW50XG5cbiAgaWYgKG9wdGlvbnMpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG9wdGlvbnMubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgIGlmIChhY3RpdmVJdGVtID09PSBvcHRpb25zW2ldICYmIGFjdGl2ZUl0ZW0gIT09IG9wdGlvbnNbMF0pIHtcbiAgICAgICAgOyhvcHRpb25zW2kgLSAxXSBhcyBIVE1MRWxlbWVudCkuZm9jdXMoKVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuY29uc3QgaGFuZGxlS2V5RG93blNlbGVjdCA9IChldmVudDogS2V5Ym9hcmRFdmVudDxIVE1MRGl2RWxlbWVudD4pID0+IHtcbiAgaWYgKGV2ZW50LmtleSA9PT0gJ0Fycm93RG93bicpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgbW92ZUZvY3VzRG93bigpXG4gIH1cblxuICBpZiAoZXZlbnQua2V5ID09PSAnQXJyb3dVcCcpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgbW92ZUZvY3VzVXAoKVxuICB9XG59XG5jb25zdCBoYW5kbGVDbGlja091dHNpZGUgPSAoXG4gIGV2ZW50OiBNb3VzZUV2ZW50LFxuICByZWY6IFJlZk9iamVjdDxIVE1MRGl2RWxlbWVudD4sXG4gIHNldElzRHJvcGRvd25WaXNpYmlsZTogRGlzcGF0Y2g8U2V0U3RhdGVBY3Rpb248Ym9vbGVhbj4+LFxuICByZWZTZWxlY3Q6IFJlZk9iamVjdDxIVE1MRGl2RWxlbWVudD4sXG4gIG9uU2VhcmNoOiBEaXNwYXRjaDxTZXRTdGF0ZUFjdGlvbjxEYXRhVHlwZT4+LFxuICBvcHRpb25zOiBEYXRhVHlwZSxcbikgPT4ge1xuICBpZiAoXG4gICAgcmVmLmN1cnJlbnQgJiZcbiAgICAhcmVmLmN1cnJlbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0IGFzIE5vZGUpICYmXG4gICAgIXJlZlNlbGVjdC5jdXJyZW50Py5jb250YWlucyhldmVudC50YXJnZXQgYXMgTm9kZSlcbiAgKSB7XG4gICAgc2V0SXNEcm9wZG93blZpc2liaWxlKGZhbHNlKSAvLyBoaWRlIGRyb3Bkb3duIHdoZW4gY2xpY2tpbmcgb3V0c2lkZSBvZiB0aGUgZHJvcGRvd25cbiAgICBvblNlYXJjaChvcHRpb25zKSAvLyByZXNldCBkaXNwbGF5ZWQgb3B0aW9ucyB0byBkZWZhdWx0IHdoZW4gZHJvcGRvd24gaXMgaGlkZGVuXG4gIH1cbn1cblxuY29uc3QgaGFuZGxlS2V5RG93biA9IChcbiAgZXZlbnQ6IGdsb2JhbFRoaXMuS2V5Ym9hcmRFdmVudCxcbiAgcmVmOiBSZWZPYmplY3Q8SFRNTERpdkVsZW1lbnQ+LFxuICBvcHRpb25zOiBEYXRhVHlwZSxcbiAgc2VhcmNoQmFyQWN0aXZlOiBib29sZWFuLFxuICBzZXRTZWFyY2g6IERpc3BhdGNoPFNldFN0YXRlQWN0aW9uPHN0cmluZz4+LFxuICBzZXREZWZhdWx0U2VhcmNoOiBEaXNwYXRjaDxTZXRTdGF0ZUFjdGlvbjxzdHJpbmcgfCBudWxsPj4sXG4gIHNlYXJjaDogc3RyaW5nLFxuKSA9PiB7XG4gIC8vIERlYWxzIHdpdGggZGVmYXVsdCBzZWFyY2hcbiAgaWYgKFxuICAgIHJlZi5jdXJyZW50ICYmXG4gICAgIXNlYXJjaEJhckFjdGl2ZSAmJlxuICAgICFOT05fU0VBUkNIQUJMRV9LRVlTLmluY2x1ZGVzKGV2ZW50LmtleSkgJiZcbiAgICBkb2N1bWVudC5hY3RpdmVFbGVtZW50Py5hcmlhTGFiZWwgIT09ICdzZWFyY2gtYmFyJ1xuICApIHtcbiAgICBjb25zdCBjdXJyZW50U2VhcmNoID0gc2VhcmNoICsgZXZlbnQua2V5XG4gICAgc2V0U2VhcmNoKGN1cnJlbnRTZWFyY2gpXG4gICAgcmVmLmN1cnJlbnQuZm9jdXMoKVxuICAgIGlmICghQXJyYXkuaXNBcnJheShvcHRpb25zKSkge1xuICAgICAgY29uc3QgY2xvc2VzdE9wdGlvbnMgPSB7IC4uLm9wdGlvbnMgfVxuICAgICAgT2JqZWN0LmtleXMoY2xvc2VzdE9wdGlvbnMpLm1hcCgoZ3JvdXA6IHN0cmluZykgPT4ge1xuICAgICAgICBjbG9zZXN0T3B0aW9uc1tncm91cF0gPSBjbG9zZXN0T3B0aW9uc1tncm91cF0uZmlsdGVyKG9wdGlvbiA9PlxuICAgICAgICAgIG9wdGlvbi5zZWFyY2hUZXh0XG4gICAgICAgICAgICA/IG9wdGlvbi5zZWFyY2hUZXh0LnRvTG9jYWxlTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChjdXJyZW50U2VhcmNoKVxuICAgICAgICAgICAgOiBvcHRpb24udmFsdWUudG9Mb2NhbGVMb3dlckNhc2UoKS5zdGFydHNXaXRoKGN1cnJlbnRTZWFyY2gpLFxuICAgICAgICApXG5cbiAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgIH0pXG4gICAgICBjb25zdCBjbG9zZXN0T3B0aW9uID0gY2xvc2VzdE9wdGlvbnNbT2JqZWN0LmtleXMoY2xvc2VzdE9wdGlvbnMpWzBdXVswXVxuICAgICAgaWYgKGNsb3Nlc3RPcHRpb24pIHtcbiAgICAgICAgc2V0RGVmYXVsdFNlYXJjaChjbG9zZXN0T3B0aW9uLnNlYXJjaFRleHQgPz8gY2xvc2VzdE9wdGlvbi52YWx1ZSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNldERlZmF1bHRTZWFyY2gobnVsbClcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgY2xvc2VzdE9wdGlvbiA9IFsuLi5vcHRpb25zXS5maWx0ZXIob3B0aW9uID0+XG4gICAgICAgIG9wdGlvbi5zZWFyY2hUZXh0XG4gICAgICAgICAgPyBvcHRpb24uc2VhcmNoVGV4dC50b0xvY2FsZUxvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoY3VycmVudFNlYXJjaClcbiAgICAgICAgICA6IG9wdGlvbi52YWx1ZS50b0xvY2FsZUxvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoY3VycmVudFNlYXJjaCksXG4gICAgICApWzBdXG4gICAgICBpZiAoY2xvc2VzdE9wdGlvbikge1xuICAgICAgICBzZXREZWZhdWx0U2VhcmNoKGNsb3Nlc3RPcHRpb24uc2VhcmNoVGV4dCA/PyBjbG9zZXN0T3B0aW9uLnZhbHVlKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2V0RGVmYXVsdFNlYXJjaChudWxsKVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuY29uc3QgQ3JlYXRlRHJvcGRvd24gPSAoe1xuICBpc0VtcHR5LFxuICBlbXB0eVN0YXRlLFxuICBkZXNjcmlwdGlvbkRpcmVjdGlvbixcbiAgbG9hZE1vcmUsXG4gIG9wdGlvbmFsSW5mb1BsYWNlbWVudCxcbiAgZGVmYXVsdFNlYXJjaFZhbHVlLFxuICBpc0xvYWRpbmcsXG59OiBDcmVhdGVEcm9wZG93blByb3BzKSA9PiB7XG4gIGNvbnN0IHtcbiAgICBzZXRJc0Ryb3Bkb3duVmlzaWJsZSxcbiAgICBvbkNoYW5nZSxcbiAgICBvcHRpb25zLFxuICAgIG11bHRpc2VsZWN0LFxuICAgIHNlbGVjdEFsbCxcbiAgICBzZWxlY3RBbGxHcm91cCxcbiAgICBkaXNwbGF5ZWRPcHRpb25zLFxuICAgIHNldFNlbGVjdGVkRGF0YSxcbiAgICBzZWxlY3RlZERhdGEsXG4gIH0gPSB1c2VTZWxlY3RJbnB1dCgpXG4gIGNvbnN0IGZvY3VzZWRJdGVtUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGRlZmF1bHRTZWFyY2hWYWx1ZSAmJiBmb2N1c2VkSXRlbVJlZj8uY3VycmVudCkge1xuICAgICAgZm9jdXNlZEl0ZW1SZWYuY3VycmVudC5mb2N1cygpXG4gICAgfVxuICB9LCBbZGVmYXVsdFNlYXJjaFZhbHVlXSlcblxuICBpZiAoaXNFbXB0eSkge1xuICAgIHJldHVybiAoXG4gICAgICA8RW1wdHlTdGF0ZSBnYXA9ezJ9IGFsaWduSXRlbXM9XCJjZW50ZXJcIj5cbiAgICAgICAge2VtcHR5U3RhdGUgPz8gKFxuICAgICAgICAgIDxUZXh0IHZhcmlhbnQ9XCJib2R5U3Ryb25nXCIgYXM9XCJwXCI+XG4gICAgICAgICAgICBObyBvcHRpb25zXG4gICAgICAgICAgPC9UZXh0PlxuICAgICAgICApfVxuICAgICAgPC9FbXB0eVN0YXRlPlxuICAgIClcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZUNsaWNrID0gKGNsaWNrZWRPcHRpb246IE9wdGlvblR5cGUsIGdyb3VwPzogc3RyaW5nKSA9PiB7XG4gICAgc2V0U2VsZWN0ZWREYXRhKHsgdHlwZTogJ3NlbGVjdE9wdGlvbicsIGNsaWNrZWRPcHRpb24sIGdyb3VwIH0pXG4gICAgaWYgKG11bHRpc2VsZWN0KSB7XG4gICAgICBpZiAoc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzLmluY2x1ZGVzKGNsaWNrZWRPcHRpb24udmFsdWUpKSB7XG4gICAgICAgIG9uQ2hhbmdlPy4oXG4gICAgICAgICAgc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzLmZpbHRlcihcbiAgICAgICAgICAgIHZhbCA9PiB2YWwgIT09IGNsaWNrZWRPcHRpb24udmFsdWUsXG4gICAgICAgICAgKSxcbiAgICAgICAgKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb25DaGFuZ2U/LihbLi4uc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzLCBjbGlja2VkT3B0aW9uLnZhbHVlXSlcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgb25DaGFuZ2U/LihjbGlja2VkT3B0aW9uLnZhbHVlKVxuICAgIH1cbiAgICBzZXRJc0Ryb3Bkb3duVmlzaWJsZShtdWx0aXNlbGVjdCkgLy8gaGlkZSB0aGUgZHJvcGRvd24gb24gY2xpY2sgd2hlbiBzaW5nbGUgc2VsZWN0IG9ubHlcbiAgfVxuXG4gIGNvbnN0IHNlbGVjdEFsbE9wdGlvbnMgPSAoKSA9PiB7XG4gICAgaWYgKG11bHRpc2VsZWN0KSB7XG4gICAgICBzZXRTZWxlY3RlZERhdGEoeyB0eXBlOiAnc2VsZWN0QWxsJyB9KVxuICAgICAgaWYgKHNlbGVjdGVkRGF0YS5hbGxTZWxlY3RlZCAmJiBvbkNoYW5nZSkge1xuICAgICAgICBvbkNoYW5nZShbXSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGFsbFZhbHVlczogT3B0aW9uVHlwZVtdID0gW11cbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KG9wdGlvbnMpKSB7XG4gICAgICAgICAgT2JqZWN0LmtleXMob3B0aW9ucykubWFwKChncm91cDogc3RyaW5nKSA9PlxuICAgICAgICAgICAgb3B0aW9uc1tncm91cF0ubWFwKG9wdGlvbiA9PiB7XG4gICAgICAgICAgICAgIGlmICghb3B0aW9uLmRpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgYWxsVmFsdWVzLnB1c2gob3B0aW9uKVxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIClcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvcHRpb25zLm1hcChvcHRpb24gPT4gYWxsVmFsdWVzLnB1c2gob3B0aW9uKSlcbiAgICAgICAgfVxuICAgICAgICBvbkNoYW5nZT8uKGFsbFZhbHVlcy5tYXAodmFsdWUgPT4gdmFsdWUudmFsdWUpKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGhhbmRsZVNlbGVjdEdyb3VwID0gKGdyb3VwOiBzdHJpbmcpID0+IHtcbiAgICBpZiAobXVsdGlzZWxlY3QpIHtcbiAgICAgIHNldFNlbGVjdGVkRGF0YSh7IHR5cGU6ICdzZWxlY3RHcm91cCcsIHNlbGVjdGVkR3JvdXA6IGdyb3VwIH0pXG4gICAgICBpZiAoIUFycmF5LmlzQXJyYXkob3B0aW9ucykpIHtcbiAgICAgICAgaWYgKHNlbGVjdGVkRGF0YS5zZWxlY3RlZEdyb3Vwcy5pbmNsdWRlcyhncm91cCkpIHtcbiAgICAgICAgICBjb25zdCBuZXdTZWxlY3RlZFZhbHVlcyA9IFsuLi5zZWxlY3RlZERhdGEuc2VsZWN0ZWRWYWx1ZXNdLmZpbHRlcihcbiAgICAgICAgICAgIHNlbGVjdGVkVmFsdWUgPT5cbiAgICAgICAgICAgICAgIW9wdGlvbnNbZ3JvdXBdLmZpbmQob3B0aW9uID0+IG9wdGlvbi52YWx1ZSA9PT0gc2VsZWN0ZWRWYWx1ZSksXG4gICAgICAgICAgKVxuICAgICAgICAgIG9uQ2hhbmdlPy4obmV3U2VsZWN0ZWRWYWx1ZXMpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgbmV3U2VsZWN0ZWRWYWx1ZXMgPSBbLi4uc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzXVxuXG4gICAgICAgICAgb3B0aW9uc1tncm91cF0ubWFwKG9wdGlvbiA9PlxuICAgICAgICAgICAgbmV3U2VsZWN0ZWRWYWx1ZXMuaW5jbHVkZXMob3B0aW9uLnZhbHVlKSB8fCBvcHRpb24uZGlzYWJsZWRcbiAgICAgICAgICAgICAgPyBudWxsXG4gICAgICAgICAgICAgIDogbmV3U2VsZWN0ZWRWYWx1ZXMucHVzaChvcHRpb24udmFsdWUpLFxuICAgICAgICAgIClcbiAgICAgICAgICBvbkNoYW5nZT8uKG5ld1NlbGVjdGVkVmFsdWVzKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuICFBcnJheS5pc0FycmF5KGRpc3BsYXllZE9wdGlvbnMpID8gKFxuICAgIDxEcm9wZG93bkNvbnRhaW5lclxuICAgICAgcm9sZT1cImxpc3Rib3hcIlxuICAgICAgaWQ9XCJzZWxlY3QtZHJvcGRvd25cIlxuICAgICAgb25LZXlEb3duPXtoYW5kbGVLZXlEb3duU2VsZWN0fVxuICAgICAgZGF0YS1ncm91cGVkXG4gICAgPlxuICAgICAge2lzTG9hZGluZyA/IChcbiAgICAgICAgPFNrZWxldG9uIHZhcmlhbnQ9XCJibG9ja1wiIC8+XG4gICAgICApIDogKFxuICAgICAgICA8PlxuICAgICAgICAgIHtzZWxlY3RBbGwgJiYgbXVsdGlzZWxlY3QgPyAoXG4gICAgICAgICAgICA8U3RhY2sgaWQ9XCJpdGVtc1wiPlxuICAgICAgICAgICAgICA8RHJvcGRvd25JdGVtXG4gICAgICAgICAgICAgICAgYXJpYS1kaXNhYmxlZD17ZmFsc2V9XG4gICAgICAgICAgICAgICAgYXJpYS1zZWxlY3RlZD17c2VsZWN0ZWREYXRhLmFsbFNlbGVjdGVkfVxuICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJzZWxlY3QtYWxsXCJcbiAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD1cInNlbGVjdC1hbGxcIlxuICAgICAgICAgICAgICAgIGlkPVwic2VsZWN0LWFsbFwiXG4gICAgICAgICAgICAgICAgdGFiSW5kZXg9ezB9XG4gICAgICAgICAgICAgICAgcm9sZT1cIm9wdGlvblwiXG4gICAgICAgICAgICAgICAgb25LZXlEb3duPXtldmVudCA9PlxuICAgICAgICAgICAgICAgICAgWycgJywgJ0VudGVyJ10uaW5jbHVkZXMoZXZlbnQua2V5KSA/IHNlbGVjdEFsbE9wdGlvbnMoKSA6IG51bGxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgb25DbGljaz17c2VsZWN0QWxsT3B0aW9uc31cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxTdHlsZWRDaGVja2JveFxuICAgICAgICAgICAgICAgICAgY2hlY2tlZD17c2VsZWN0ZWREYXRhLmFsbFNlbGVjdGVkfVxuICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgdmFsdWU9XCJzZWxlY3QtYWxsXCJcbiAgICAgICAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwic2VsZWN0LWFsbC1jaGVja2JveFwiXG4gICAgICAgICAgICAgICAgICB0YWJJbmRleD17LTF9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPFN0YWNrIGRpcmVjdGlvbj1cImNvbHVtblwiPlxuICAgICAgICAgICAgICAgICAgICA8VGV4dCBhcz1cInNwYW5cIiB2YXJpYW50PVwiYm9keVwiIHBsYWNlbWVudD1cImxlZnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICB7c2VsZWN0QWxsLmxhYmVsfVxuICAgICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgICAgIDxUZXh0XG4gICAgICAgICAgICAgICAgICAgICAgYXM9XCJzcGFuXCJcbiAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50PVwiYm9keVNtYWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICBzZW50aW1lbnQ9XCJuZXV0cmFsXCJcbiAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJsZWZ0XCJcbiAgICAgICAgICAgICAgICAgICAgICBwcm9taW5lbmNlPVwid2Vha1wiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7c2VsZWN0QWxsLmRlc2NyaXB0aW9ufVxuICAgICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgICA8L1N0YWNrPlxuICAgICAgICAgICAgICAgIDwvU3R5bGVkQ2hlY2tib3g+XG4gICAgICAgICAgICAgIDwvRHJvcGRvd25JdGVtPlxuICAgICAgICAgICAgPC9TdGFjaz5cbiAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICB7T2JqZWN0LmtleXMoZGlzcGxheWVkT3B0aW9ucykubWFwKChncm91cCwgaW5kZXgpID0+IChcbiAgICAgICAgICAgIDxTdGFjayBrZXk9e2dyb3VwfSBnYXA9ezAuMjV9PlxuICAgICAgICAgICAgICB7ZGlzcGxheWVkT3B0aW9uc1tncm91cF0ubGVuZ3RoID4gMCA/IChcbiAgICAgICAgICAgICAgICA8RHJvcGRvd25Hcm91cFdyYXBwZXIgaWQ9e3NlbGVjdEFsbEdyb3VwID8gJ2l0ZW1zJyA6IHVuZGVmaW5lZH0+XG4gICAgICAgICAgICAgICAgICB7Z3JvdXAgPyAoXG4gICAgICAgICAgICAgICAgICAgIDxEcm9wZG93bkdyb3VwXG4gICAgICAgICAgICAgICAgICAgICAga2V5PXtncm91cH1cbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICB0YWJJbmRleD17c2VsZWN0QWxsR3JvdXAgPyAwIDogLTF9XG4gICAgICAgICAgICAgICAgICAgICAgb25LZXlEb3duPXtldmVudCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoWycgJywgJ0VudGVyJ10uaW5jbHVkZXMoZXZlbnQua2V5KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZVNlbGVjdEdyb3VwKGdyb3VwKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgZGF0YS1zZWxlY3Rncm91cD17c2VsZWN0QWxsR3JvdXB9XG4gICAgICAgICAgICAgICAgICAgICAgcm9sZT1cImdyb3VwXCJcbiAgICAgICAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD17YGdyb3VwLSR7aW5kZXh9YH1cbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0QWxsR3JvdXAgPyBoYW5kbGVTZWxlY3RHcm91cChncm91cCkgOiBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAge3NlbGVjdEFsbEdyb3VwID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgPFN0eWxlZENoZWNrYm94XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e3NlbGVjdGVkRGF0YS5zZWxlY3RlZEdyb3Vwcy5pbmNsdWRlcyhncm91cCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2dyb3VwfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD1cInNlbGVjdC1ncm91cFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRhYkluZGV4PXstMX1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPFRleHQgdmFyaWFudD1cImNhcHRpb25cIiBhcz1cInNwYW5cIiBwbGFjZW1lbnQ9XCJsZWZ0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2dyb3VwLnRvVXBwZXJDYXNlKCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvU3R5bGVkQ2hlY2tib3g+XG4gICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxUZXh0XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJjYXB0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYXM9XCJzcGFuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwibGVmdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNlbnRpbWVudD1cIm5ldXRyYWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7Z3JvdXAudG9VcHBlckNhc2UoKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICA8L0Ryb3Bkb3duR3JvdXA+XG4gICAgICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgICAgICA8L0Ryb3Bkb3duR3JvdXBXcmFwcGVyPlxuICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgICAgPFN0YWNrIGlkPVwiaXRlbXNcIiBnYXA9XCIwLjI1XCI+XG4gICAgICAgICAgICAgICAge2Rpc3BsYXllZE9wdGlvbnNbZ3JvdXBdLm1hcCgob3B0aW9uLCBpbmRleE9wdGlvbikgPT4gKFxuICAgICAgICAgICAgICAgICAgPERyb3Bkb3duSXRlbVxuICAgICAgICAgICAgICAgICAgICBrZXk9e29wdGlvbi52YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgYXJpYS1kaXNhYmxlZD17ISFvcHRpb24uZGlzYWJsZWR9XG4gICAgICAgICAgICAgICAgICAgIHRhYkluZGV4PXshb3B0aW9uLmRpc2FibGVkID8gMCA6IC0xfVxuICAgICAgICAgICAgICAgICAgICBhcmlhLXNlbGVjdGVkPXtcbiAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZERhdGEuc2VsZWN0ZWRWYWx1ZXMuaW5jbHVkZXMob3B0aW9uLnZhbHVlKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICFvcHRpb24uZGlzYWJsZWRcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPXtvcHRpb24udmFsdWV9XG4gICAgICAgICAgICAgICAgICAgIGRhdGEtdGVzdGlkPXtgb3B0aW9uLSR7b3B0aW9uLnZhbHVlfWB9XG4gICAgICAgICAgICAgICAgICAgIGlkPXtgb3B0aW9uLSR7aW5kZXhPcHRpb259YH1cbiAgICAgICAgICAgICAgICAgICAgcm9sZT1cIm9wdGlvblwiXG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoIW9wdGlvbi5kaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlQ2xpY2sob3B0aW9uLCBncm91cClcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgIG9uS2V5RG93bj17ZXZlbnQgPT5cbiAgICAgICAgICAgICAgICAgICAgICBbJyAnLCAnRW50ZXInXS5pbmNsdWRlcyhldmVudC5rZXkpXG4gICAgICAgICAgICAgICAgICAgICAgICA/IGhhbmRsZUNsaWNrKG9wdGlvbiwgZ3JvdXApXG4gICAgICAgICAgICAgICAgICAgICAgICA6IG51bGxcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZWY9e1xuICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbi52YWx1ZSA9PT0gZGVmYXVsdFNlYXJjaFZhbHVlIHx8XG4gICAgICAgICAgICAgICAgICAgICAgb3B0aW9uLnNlYXJjaFRleHQgPT09IGRlZmF1bHRTZWFyY2hWYWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgPyBmb2N1c2VkSXRlbVJlZlxuICAgICAgICAgICAgICAgICAgICAgICAgOiBudWxsXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge211bHRpc2VsZWN0ID8gKFxuICAgICAgICAgICAgICAgICAgICAgIDxTdHlsZWRDaGVja2JveFxuICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tlZD17XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkRGF0YS5zZWxlY3RlZFZhbHVlcy5pbmNsdWRlcyhvcHRpb24udmFsdWUpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICFvcHRpb24uZGlzYWJsZWRcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtvcHRpb24uZGlzYWJsZWR9XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17b3B0aW9uLnZhbHVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgdGFiSW5kZXg9ey0xfVxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxEaXNwbGF5T3B0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbj17b3B0aW9ufVxuICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbkRpcmVjdGlvbj17ZGVzY3JpcHRpb25EaXJlY3Rpb259XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsSW5mb1BsYWNlbWVudD17b3B0aW9uYWxJbmZvUGxhY2VtZW50fVxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8L1N0eWxlZENoZWNrYm94PlxuICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgIDxEaXNwbGF5T3B0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb249e29wdGlvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uRGlyZWN0aW9uPXtkZXNjcmlwdGlvbkRpcmVjdGlvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsSW5mb1BsYWNlbWVudD17b3B0aW9uYWxJbmZvUGxhY2VtZW50fVxuICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICA8L0Ryb3Bkb3duSXRlbT5cbiAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgPC9TdGFjaz5cbiAgICAgICAgICAgIDwvU3RhY2s+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvPlxuICAgICAgKX1cbiAgICAgIHtsb2FkTW9yZSA/IDxMb2FkTW9yZT57bG9hZE1vcmV9PC9Mb2FkTW9yZT4gOiBudWxsfVxuICAgIDwvRHJvcGRvd25Db250YWluZXI+XG4gICkgOiAoXG4gICAgPERyb3Bkb3duQ29udGFpbmVyXG4gICAgICByb2xlPVwibGlzdGJveFwiXG4gICAgICB0YWJJbmRleD17LTF9XG4gICAgICBpZD1cInNlbGVjdC1kcm9wZG93blwiXG4gICAgICBvbktleURvd249e2hhbmRsZUtleURvd25TZWxlY3R9XG4gICAgICBnYXA9ezAuMjV9XG4gICAgICBkYXRhLWdyb3VwZWQ9e2ZhbHNlfVxuICAgID5cbiAgICAgIHtzZWxlY3RBbGwgJiYgbXVsdGlzZWxlY3QgPyAoXG4gICAgICAgIDxTdGFjayBpZD1cIml0ZW1zXCIgZ2FwPXswLjI1fSB0YWJJbmRleD17LTF9PlxuICAgICAgICAgIDxEcm9wZG93bkl0ZW1cbiAgICAgICAgICAgIGFyaWEtZGlzYWJsZWQ9e2ZhbHNlfVxuICAgICAgICAgICAgYXJpYS1zZWxlY3RlZD17c2VsZWN0ZWREYXRhLmFsbFNlbGVjdGVkfVxuICAgICAgICAgICAgYXJpYS1sYWJlbD1cInNlbGVjdC1hbGxcIlxuICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJzZWxlY3QtYWxsXCJcbiAgICAgICAgICAgIHRhYkluZGV4PXswfVxuICAgICAgICAgICAgcm9sZT1cIm9wdGlvblwiXG4gICAgICAgICAgICBvbktleURvd249e2V2ZW50ID0+XG4gICAgICAgICAgICAgIFsnICcsICdFbnRlciddLmluY2x1ZGVzKGV2ZW50LmtleSkgPyBzZWxlY3RBbGxPcHRpb25zKCkgOiBudWxsXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvbkNsaWNrPXtzZWxlY3RBbGxPcHRpb25zfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxTdHlsZWRDaGVja2JveFxuICAgICAgICAgICAgICBjaGVja2VkPXtzZWxlY3RlZERhdGEuYWxsU2VsZWN0ZWR9XG4gICAgICAgICAgICAgIGRpc2FibGVkPXtmYWxzZX1cbiAgICAgICAgICAgICAgdmFsdWU9XCJzZWxlY3QtYWxsXCJcbiAgICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJzZWxlY3QtYWxsLWNoZWNrYm94XCJcbiAgICAgICAgICAgICAgdGFiSW5kZXg9ey0xfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8U3RhY2sgZGlyZWN0aW9uPVwiY29sdW1uXCI+XG4gICAgICAgICAgICAgICAgPFRleHQgYXM9XCJzcGFuXCIgdmFyaWFudD1cImJvZHlcIiBwbGFjZW1lbnQ9XCJsZWZ0XCI+XG4gICAgICAgICAgICAgICAgICB7c2VsZWN0QWxsLmxhYmVsfVxuICAgICAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgICAgICA8VGV4dFxuICAgICAgICAgICAgICAgICAgYXM9XCJzcGFuXCJcbiAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJib2R5U21hbGxcIlxuICAgICAgICAgICAgICAgICAgc2VudGltZW50PVwibmV1dHJhbFwiXG4gICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJsZWZ0XCJcbiAgICAgICAgICAgICAgICAgIHByb21pbmVuY2U9XCJ3ZWFrXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICB7c2VsZWN0QWxsLmRlc2NyaXB0aW9ufVxuICAgICAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgICAgPC9TdGFjaz5cbiAgICAgICAgICAgIDwvU3R5bGVkQ2hlY2tib3g+XG4gICAgICAgICAgPC9Ecm9wZG93bkl0ZW0+XG4gICAgICAgIDwvU3RhY2s+XG4gICAgICApIDogbnVsbH1cbiAgICAgIDxTdGFjayBpZD1cIml0ZW1zXCIgZ2FwPXswLjI1fT5cbiAgICAgICAge2lzTG9hZGluZyA/IChcbiAgICAgICAgICA8U2tlbGV0b24gdmFyaWFudD1cImJsb2NrXCIgLz5cbiAgICAgICAgKSA6IChcbiAgICAgICAgICBkaXNwbGF5ZWRPcHRpb25zLm1hcCgob3B0aW9uLCBpbmRleCkgPT4gKFxuICAgICAgICAgICAgPERyb3Bkb3duSXRlbVxuICAgICAgICAgICAgICBrZXk9e29wdGlvbi52YWx1ZX1cbiAgICAgICAgICAgICAgYXJpYS1kaXNhYmxlZD17ISFvcHRpb24uZGlzYWJsZWR9XG4gICAgICAgICAgICAgIGFyaWEtc2VsZWN0ZWQ9e1xuICAgICAgICAgICAgICAgIHNlbGVjdGVkRGF0YS5zZWxlY3RlZFZhbHVlcy5pbmNsdWRlcyhvcHRpb24udmFsdWUpICYmXG4gICAgICAgICAgICAgICAgIW9wdGlvbi5kaXNhYmxlZFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIW9wdGlvbi5kaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgICAgaGFuZGxlQ2xpY2sob3B0aW9uKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgYXJpYS1sYWJlbD17b3B0aW9uLnZhbHVlfVxuICAgICAgICAgICAgICBkYXRhLXRlc3RpZD17YG9wdGlvbi0ke29wdGlvbi52YWx1ZX1gfVxuICAgICAgICAgICAgICBpZD17YG9wdGlvbi0ke2luZGV4fWB9XG4gICAgICAgICAgICAgIHJvbGU9XCJvcHRpb25cIlxuICAgICAgICAgICAgICB0YWJJbmRleD17IW9wdGlvbi5kaXNhYmxlZCA/IDAgOiAtMX1cbiAgICAgICAgICAgICAgcmVmPXtcbiAgICAgICAgICAgICAgICBvcHRpb24udmFsdWUgPT09IGRlZmF1bHRTZWFyY2hWYWx1ZSB8fFxuICAgICAgICAgICAgICAgIG9wdGlvbi5zZWFyY2hUZXh0ID09PSBkZWZhdWx0U2VhcmNoVmFsdWVcbiAgICAgICAgICAgICAgICAgID8gZm9jdXNlZEl0ZW1SZWZcbiAgICAgICAgICAgICAgICAgIDogbnVsbFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIG9uS2V5RG93bj17ZXZlbnQgPT5cbiAgICAgICAgICAgICAgICBbJyAnLCAnRW50ZXInXS5pbmNsdWRlcyhldmVudC5rZXkpID8gaGFuZGxlQ2xpY2sob3B0aW9uKSA6IG51bGxcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7bXVsdGlzZWxlY3QgPyAoXG4gICAgICAgICAgICAgICAgPFN0eWxlZENoZWNrYm94XG4gICAgICAgICAgICAgICAgICBjaGVja2VkPXtcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzLmluY2x1ZGVzKG9wdGlvbi52YWx1ZSkgJiZcbiAgICAgICAgICAgICAgICAgICAgIW9wdGlvbi5kaXNhYmxlZFxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e29wdGlvbi5kaXNhYmxlZH1cbiAgICAgICAgICAgICAgICAgIHZhbHVlPXtvcHRpb24udmFsdWV9XG4gICAgICAgICAgICAgICAgICB0YWJJbmRleD17LTF9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPERpc3BsYXlPcHRpb25cbiAgICAgICAgICAgICAgICAgICAgb3B0aW9uPXtvcHRpb259XG4gICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uRGlyZWN0aW9uPXtkZXNjcmlwdGlvbkRpcmVjdGlvbn1cbiAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWxJbmZvUGxhY2VtZW50PXtvcHRpb25hbEluZm9QbGFjZW1lbnR9XG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvU3R5bGVkQ2hlY2tib3g+XG4gICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgPERpc3BsYXlPcHRpb25cbiAgICAgICAgICAgICAgICAgIG9wdGlvbj17b3B0aW9ufVxuICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb25EaXJlY3Rpb249e2Rlc2NyaXB0aW9uRGlyZWN0aW9ufVxuICAgICAgICAgICAgICAgICAgb3B0aW9uYWxJbmZvUGxhY2VtZW50PXtvcHRpb25hbEluZm9QbGFjZW1lbnR9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvRHJvcGRvd25JdGVtPlxuICAgICAgICAgICkpXG4gICAgICAgICl9XG4gICAgICAgIHtsb2FkTW9yZSA/IDxMb2FkTW9yZT57bG9hZE1vcmV9PC9Mb2FkTW9yZT4gOiBudWxsfVxuICAgICAgPC9TdGFjaz5cbiAgICA8L0Ryb3Bkb3duQ29udGFpbmVyPlxuICApXG59XG5leHBvcnQgY29uc3QgRHJvcGRvd24gPSAoe1xuICBjaGlsZHJlbixcbiAgZW1wdHlTdGF0ZSxcbiAgZGVzY3JpcHRpb25EaXJlY3Rpb24sXG4gIHNlYXJjaGFibGUsXG4gIHBsYWNlaG9sZGVyLFxuICBmb290ZXIsXG4gIHJlZlNlbGVjdCxcbiAgbG9hZE1vcmUsXG4gIG9wdGlvbmFsSW5mb1BsYWNlbWVudCxcbiAgaXNMb2FkaW5nLFxuICBzaXplLFxufTogRHJvcGRvd25Qcm9wcykgPT4ge1xuICBjb25zdCB7XG4gICAgc2V0SXNEcm9wZG93blZpc2libGUsXG4gICAgaXNEcm9wZG93blZpc2libGUsXG4gICAgb25TZWFyY2gsXG4gICAgc2VhcmNoSW5wdXQsXG4gICAgb3B0aW9ucyxcbiAgICBkaXNwbGF5ZWRPcHRpb25zLFxuICB9ID0gdXNlU2VsZWN0SW5wdXQoKVxuICBjb25zdCB0aGVtZSA9IHVzZVRoZW1lKClcbiAgY29uc3QgW3NlYXJjaEJhckFjdGl2ZSwgc2V0U2VhcmNoQmFyQWN0aXZlXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbZGVmYXVsdFNlYXJjaFZhbHVlLCBzZXREZWZhdWx0U2VhcmNoXSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bGw+KG51bGwpXG4gIGNvbnN0IHJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcbiAgY29uc3QgW3NlYXJjaCwgc2V0U2VhcmNoXSA9IHVzZVN0YXRlPHN0cmluZz4oJycpXG4gIGNvbnN0IFttYXhXaWR0aCwgc2V0V2lkdGhdID0gdXNlU3RhdGU8c3RyaW5nIHwgbnVtYmVyPigpXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAocmVmU2VsZWN0LmN1cnJlbnQgJiYgaXNEcm9wZG93blZpc2libGUpIHtcbiAgICAgIGNvbnN0IHBvc2l0aW9uID1cbiAgICAgICAgcmVmU2VsZWN0LmN1cnJlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuYm90dG9tICtcbiAgICAgICAgRFJPUERPV05fTUFYX0hFSUdIVCArXG4gICAgICAgIElOUFVUX1NJWkVfSEVJR0hUW3NpemVdICtcbiAgICAgICAgcGFyc2VJbnQodGhlbWUuc3BhY2VbJzUnXSwgMTApXG4gICAgICBjb25zdCBvdmVyZmxvdyA9IHBvc2l0aW9uIC0gd2luZG93LmlubmVySGVpZ2h0XG4gICAgICBpZiAob3ZlcmZsb3cgPiAwKSB7XG4gICAgICAgIGNvbnN0IG1vZGFsRWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdiYWNrZHJvcC1tb2RhbCcpXG5cbiAgICAgICAgaWYgKG1vZGFsRWxlbWVudCkge1xuICAgICAgICAgIG1vZGFsRWxlbWVudC5zY3JvbGxCeSh7IHRvcDogb3ZlcmZsb3csIGJlaGF2aW9yOiAnc21vb3RoJyB9KVxuICAgICAgICB9IGVsc2Ugd2luZG93LnNjcm9sbEJ5KHsgdG9wOiBvdmVyZmxvdywgYmVoYXZpb3I6ICdzbW9vdGgnIH0pXG4gICAgICB9XG4gICAgfVxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9leGhhdXN0aXZlLWRlcHNcbiAgfSwgW2lzRHJvcGRvd25WaXNpYmxlLCByZWZTZWxlY3QsIHNpemUsIHJlZi5jdXJyZW50XSlcblxuICBjb25zdCByZXNpemVEcm9wZG93biA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoXG4gICAgICByZWZTZWxlY3QuY3VycmVudCAmJlxuICAgICAgcmVmU2VsZWN0LmN1cnJlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGggPiAwXG4gICAgKSB7XG4gICAgICBzZXRXaWR0aChyZWZTZWxlY3QuY3VycmVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aClcbiAgICB9XG4gIH0sIFtyZWZTZWxlY3RdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgcmVzaXplRHJvcGRvd24oKVxuXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHJlc2l6ZURyb3Bkb3duKVxuXG4gICAgcmV0dXJuICgpID0+IHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCByZXNpemVEcm9wZG93bilcbiAgfSwgW3Jlc2l6ZURyb3Bkb3duXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghc2VhcmNoSW5wdXQpIHtcbiAgICAgIG9uU2VhcmNoKG9wdGlvbnMpXG4gICAgfVxuICB9LCBbb25TZWFyY2gsIG9wdGlvbnMsIHNlYXJjaElucHV0XSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghaXNEcm9wZG93blZpc2libGUpIHtcbiAgICAgIHNldERlZmF1bHRTZWFyY2gobnVsbClcbiAgICAgIHNldFNlYXJjaCgnJylcbiAgICB9XG5cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCBldmVudCA9PlxuICAgICAgaGFuZGxlQ2xpY2tPdXRzaWRlKFxuICAgICAgICBldmVudCxcbiAgICAgICAgcmVmLFxuICAgICAgICBzZXRJc0Ryb3Bkb3duVmlzaWJsZSxcbiAgICAgICAgcmVmU2VsZWN0LFxuICAgICAgICBvblNlYXJjaCxcbiAgICAgICAgb3B0aW9ucyxcbiAgICAgICksXG4gICAgKVxuXG4gICAgaWYgKCFzZWFyY2hhYmxlKSB7XG4gICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgZXZlbnQgPT5cbiAgICAgICAgaGFuZGxlS2V5RG93bihcbiAgICAgICAgICBldmVudCxcbiAgICAgICAgICByZWYsXG4gICAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgICBzZWFyY2hCYXJBY3RpdmUsXG4gICAgICAgICAgc2V0U2VhcmNoLFxuICAgICAgICAgIHNldERlZmF1bHRTZWFyY2gsXG4gICAgICAgICAgc2VhcmNoLFxuICAgICAgICApLFxuICAgICAgKVxuICAgIH1cblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCBldmVudCA9PlxuICAgICAgICBoYW5kbGVDbGlja091dHNpZGUoXG4gICAgICAgICAgZXZlbnQsXG4gICAgICAgICAgcmVmLFxuICAgICAgICAgIHNldElzRHJvcGRvd25WaXNpYmxlLFxuICAgICAgICAgIHJlZlNlbGVjdCxcbiAgICAgICAgICBvblNlYXJjaCxcbiAgICAgICAgICBvcHRpb25zLFxuICAgICAgICApLFxuICAgICAgKVxuICAgICAgaWYgKCFzZWFyY2hhYmxlKSB7XG4gICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBldmVudCA9PlxuICAgICAgICAgIGhhbmRsZUtleURvd24oXG4gICAgICAgICAgICBldmVudCxcbiAgICAgICAgICAgIHJlZixcbiAgICAgICAgICAgIG9wdGlvbnMsXG4gICAgICAgICAgICBzZWFyY2hCYXJBY3RpdmUsXG4gICAgICAgICAgICBzZXRTZWFyY2gsXG4gICAgICAgICAgICBzZXREZWZhdWx0U2VhcmNoLFxuICAgICAgICAgICAgc2VhcmNoLFxuICAgICAgICAgICksXG4gICAgICAgIClcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtcbiAgICBpc0Ryb3Bkb3duVmlzaWJsZSxcbiAgICBzZWFyY2hCYXJBY3RpdmUsXG4gICAgb3B0aW9ucyxcbiAgICBvblNlYXJjaCxcbiAgICBzZWFyY2gsXG4gICAgcmVmU2VsZWN0LFxuICAgIHNldERlZmF1bHRTZWFyY2gsXG4gICAgc2V0SXNEcm9wZG93blZpc2libGUsXG4gICAgc2VhcmNoYWJsZSxcbiAgXSlcblxuICBjb25zdCBpc0VtcHR5ID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoZGlzcGxheWVkT3B0aW9ucykpIHtcbiAgICAgIHJldHVybiAhKGRpc3BsYXllZE9wdGlvbnMubGVuZ3RoID4gMClcbiAgICB9XG4gICAgY29uc3QgZ3JvdXBzID0gT2JqZWN0LmtleXMoZGlzcGxheWVkT3B0aW9ucylcbiAgICBmb3IgKGNvbnN0IGdyb3VwIG9mIGdyb3Vwcykge1xuICAgICAgaWYgKGRpc3BsYXllZE9wdGlvbnNbZ3JvdXBdLmxlbmd0aCAhPT0gMCkge1xuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZVxuICB9LCBbZGlzcGxheWVkT3B0aW9uc10pXG5cbiAgcmV0dXJuIChcbiAgICA8U3R5bGVkUG9wdXBcbiAgICAgIHZpc2libGU9e2lzRHJvcGRvd25WaXNpYmxlfVxuICAgICAgdGV4dD17XG4gICAgICAgIDxTdGFjaz5cbiAgICAgICAgICB7c2VhcmNoYWJsZSAmJiAhaXNMb2FkaW5nID8gKFxuICAgICAgICAgICAgPFNlYXJjaEJhckRyb3Bkb3duXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXtwbGFjZWhvbGRlcn1cbiAgICAgICAgICAgICAgZGlzcGxheWVkT3B0aW9ucz17ZGlzcGxheWVkT3B0aW9uc31cbiAgICAgICAgICAgICAgc2V0U2VhcmNoQmFyQWN0aXZlPXtzZXRTZWFyY2hCYXJBY3RpdmV9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgIDxDcmVhdGVEcm9wZG93blxuICAgICAgICAgICAgaXNFbXB0eT17aXNFbXB0eX1cbiAgICAgICAgICAgIGVtcHR5U3RhdGU9e2VtcHR5U3RhdGV9XG4gICAgICAgICAgICBkZXNjcmlwdGlvbkRpcmVjdGlvbj17ZGVzY3JpcHRpb25EaXJlY3Rpb259XG4gICAgICAgICAgICBsb2FkTW9yZT17bG9hZE1vcmV9XG4gICAgICAgICAgICBvcHRpb25hbEluZm9QbGFjZW1lbnQ9e29wdGlvbmFsSW5mb1BsYWNlbWVudH1cbiAgICAgICAgICAgIGRlZmF1bHRTZWFyY2hWYWx1ZT17ZGVmYXVsdFNlYXJjaFZhbHVlfVxuICAgICAgICAgICAgaXNMb2FkaW5nPXtpc0xvYWRpbmd9XG4gICAgICAgICAgLz5cbiAgICAgICAgICB7Zm9vdGVyID8gPFBvcHVwRm9vdGVyPntmb290ZXJ9PC9Qb3B1cEZvb3Rlcj4gOiBudWxsfVxuICAgICAgICA8L1N0YWNrPlxuICAgICAgfVxuICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcbiAgICAgIGRpc2FibGVBbmltYXRpb25cbiAgICAgIG1heFdpZHRoPXttYXhXaWR0aCA/PyByZWZTZWxlY3QuY3VycmVudD8ub2Zmc2V0V2lkdGh9XG4gICAgICBoYXNBcnJvdz17ZmFsc2V9XG4gICAgICByZWY9e3JlZn1cbiAgICAgIHRhYkluZGV4PXswfVxuICAgICAgcm9sZT1cImRpYWxvZ1wiXG4gICAgICBkZWJvdW5jZURlbGF5PXswfVxuICAgICAgY29udGFpbmVyRnVsbFdpZHRoXG4gICAgPlxuICAgICAge2NoaWxkcmVufVxuICAgIDwvU3R5bGVkUG9wdXA+XG4gIClcbn1cbiJdfQ== */"));
78
+ }) => theme.colors.neutral.backgroundHover, ";}" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL3VsdHJhdmlvbGV0L3VsdHJhdmlvbGV0L3BhY2thZ2VzL3VpL3NyYy9jb21wb25lbnRzL1NlbGVjdElucHV0VjIvRHJvcGRvd24udHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWdGb0UiLCJmaWxlIjoiL2hvbWUvcnVubmVyL3dvcmsvdWx0cmF2aW9sZXQvdWx0cmF2aW9sZXQvcGFja2FnZXMvdWkvc3JjL2NvbXBvbmVudHMvU2VsZWN0SW5wdXRWMi9Ecm9wZG93bi50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1c2VUaGVtZSB9IGZyb20gJ0BlbW90aW9uL3JlYWN0J1xuaW1wb3J0IHN0eWxlZCBmcm9tICdAZW1vdGlvbi9zdHlsZWQnXG5pbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VNZW1vLCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgdHlwZSB7XG4gIERpc3BhdGNoLFxuICBLZXlib2FyZEV2ZW50LFxuICBSZWFjdE5vZGUsXG4gIFJlZk9iamVjdCxcbiAgU2V0U3RhdGVBY3Rpb24sXG59IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgQ2hlY2tib3ggfSBmcm9tICcuLi9DaGVja2JveCdcbmltcG9ydCB7IFBvcHVwIH0gZnJvbSAnLi4vUG9wdXAnXG5pbXBvcnQgeyBTa2VsZXRvbiB9IGZyb20gJy4uL1NrZWxldG9uJ1xuaW1wb3J0IHsgU3RhY2sgfSBmcm9tICcuLi9TdGFjaydcbmltcG9ydCB7IFRleHQgfSBmcm9tICcuLi9UZXh0J1xuaW1wb3J0IHsgRGlzcGxheU9wdGlvbiB9IGZyb20gJy4vRHJvcGRvd25PcHRpb24nXG5pbXBvcnQgeyBTZWFyY2hCYXJEcm9wZG93biB9IGZyb20gJy4vU2VhcmNoQmFyRHJvcGRvd24nXG5pbXBvcnQgeyB1c2VTZWxlY3RJbnB1dCB9IGZyb20gJy4vU2VsZWN0SW5wdXRQcm92aWRlcidcbmltcG9ydCB7IHR5cGUgRGF0YVR5cGUsIElOUFVUX1NJWkVfSEVJR0hULCB0eXBlIE9wdGlvblR5cGUgfSBmcm9tICcuL3R5cGVzJ1xuXG5jb25zdCBEUk9QRE9XTl9NQVhfSEVJR0hUID0gMjU2XG5cbmV4cG9ydCB0eXBlIERyb3Bkb3duUHJvcHMgPSB7XG4gIGNoaWxkcmVuOiBSZWFjdE5vZGVcbiAgZW1wdHlTdGF0ZTogUmVhY3ROb2RlXG4gIGRlc2NyaXB0aW9uRGlyZWN0aW9uOiAncm93JyB8ICdjb2x1bW4nXG4gIHNlYXJjaGFibGU6IGJvb2xlYW5cbiAgcGxhY2Vob2xkZXI6IHN0cmluZ1xuICBmb290ZXI/OiAoKGNsb3NlRHJvcGRvd246ICgpID0+IHZvaWQpID0+IFJlYWN0Tm9kZSkgfCBSZWFjdE5vZGVcbiAgcmVmU2VsZWN0OiBSZWZPYmplY3Q8SFRNTERpdkVsZW1lbnQ+XG4gIGxvYWRNb3JlPzogUmVhY3ROb2RlXG4gIG9wdGlvbmFsSW5mb1BsYWNlbWVudDogJ2xlZnQnIHwgJ3JpZ2h0J1xuICBpc0xvYWRpbmc/OiBib29sZWFuXG4gIHNpemU6ICdzbWFsbCcgfCAnbWVkaXVtJyB8ICdsYXJnZSdcbn1cblxuZXhwb3J0IHR5cGUgQ3JlYXRlRHJvcGRvd25Qcm9wcyA9IHtcbiAgaXNFbXB0eTogYm9vbGVhblxuICBlbXB0eVN0YXRlOiBSZWFjdE5vZGVcbiAgZGVzY3JpcHRpb25EaXJlY3Rpb246ICdyb3cnIHwgJ2NvbHVtbidcbiAgbG9hZE1vcmU/OiBSZWFjdE5vZGVcbiAgb3B0aW9uYWxJbmZvUGxhY2VtZW50OiAnbGVmdCcgfCAncmlnaHQnXG4gIGRlZmF1bHRTZWFyY2hWYWx1ZTogc3RyaW5nIHwgbnVsbFxuICBpc0xvYWRpbmc/OiBib29sZWFuXG59XG5cbmNvbnN0IE5PTl9TRUFSQ0hBQkxFX0tFWVMgPSBbXG4gICdUYWInLFxuICAnICcsXG4gICdFbnRlcicsXG4gICdDYXBzTG9jaycsXG4gICdTaGlmdCcsXG4gICdBcnJvd0Rvd24nLFxuICAnQXJyb3dVcCcsXG4gICdBcnJvd0xlZnQnLFxuICAnQXJyb3dSaWdodCcsXG4gICdFc2NhcGUnLFxuXVxuXG5jb25zdCBTdHlsZWRQb3B1cCA9IHN0eWxlZChQb3B1cClgXG4gIHdpZHRoOiAxMDAlO1xuICBtaW4td2lkdGg6IDMyMHB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5vdGhlci5lbGV2YXRpb24uYmFja2dyb3VuZC5yYWlzZWR9O1xuICBjb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMubmV1dHJhbC50ZXh0fTtcbiAgYm94LXNoYWRvdzogJHsoeyB0aGVtZSB9KSA9PiBgJHt0aGVtZS5zaGFkb3dzLnJhaXNlZFswXX0sICR7dGhlbWUuc2hhZG93cy5yYWlzZWRbMV19YH07XG4gIHBhZGRpbmc6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMF19O1xuICBtYXJnaW4tYm90dG9tOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzEwXX07XG5gXG5cbmNvbnN0IERyb3Bkb3duQ29udGFpbmVyID0gc3R5bGVkKFN0YWNrKTx7ICdkYXRhLWdyb3VwZWQnOiBib29sZWFuIH0+YFxuICBtYXgtaGVpZ2h0OiAke0RST1BET1dOX01BWF9IRUlHSFR9cHg7XG4gIG92ZXJmbG93LXk6IHNjcm9sbDtcbiAgcGFkZGluZzogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVswXX07XG4gIHBhZGRpbmctYm90dG9tOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzAuNV19O1xuICBwYWRkaW5nLXRvcDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVswLjVdfTtcblxuICAmW2RhdGEtZ3JvdXBlZD1cInRydWVcIl0ge1xuICAgIHBhZGRpbmctdG9wOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzBdfTtcbiAgfVxuYFxuY29uc3QgRHJvcGRvd25Hcm91cCA9IHN0eWxlZC5idXR0b248eyAnZGF0YS1zZWxlY3Rncm91cCc6IGJvb2xlYW4gfT5gXG4gIGRpc3BsYXk6IGZsZXg7XG4gIHdpZHRoOiAxMDAlO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGxlZnQ7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGJvcmRlcjogbm9uZTtcbiAgYmFja2dyb3VuZC1jb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMubmV1dHJhbC5iYWNrZ3JvdW5kV2Vha307XG4gIHBvc2l0aW9uOiBzdGlja3k7XG4gIHRvcDogMHB4O1xuICBwYWRkaW5nLXJpZ2h0OiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzJdfTtcbiAgcGFkZGluZy1sZWZ0OiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzJdfTtcbiAgaGVpZ2h0OiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzRdfTtcbiAgdGV4dC1hbGlnbjogbGVmdDtcbiAgbWFyZ2luLWJvdHRvbTogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsnMC4yNSddfTtcblxuICAmOmZvY3VzIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5uZXV0cmFsLmJhY2tncm91bmRXZWFrfTtcbiAgICBvdXRsaW5lOiBub25lO1xuICB9XG5cbiAgJltkYXRhLXNlbGVjdGdyb3VwPSd0cnVlJ10ge1xuICAgIHBhZGRpbmctbGVmdDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsyXX07XG4gICAgYm9yZGVyLWxlZnQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMC41XX0gc29saWQgJHsoeyB0aGVtZSB9KSA9PlxuICAgICAgdGhlbWUuY29sb3JzLm5ldXRyYWwuYmFja2dyb3VuZFdlYWt9O1xuICB9XG5cbiAgJltkYXRhLXNlbGVjdGdyb3VwPSd0cnVlJ106Zm9jdXMge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwuYmFja2dyb3VuZEhvdmVyfTtcbiAgfVxuYFxuY29uc3QgRHJvcGRvd25Hcm91cFdyYXBwZXIgPSBzdHlsZWQuZGl2YFxuICBwb3NpdGlvbjogc3RpY2t5O1xuICB0b3A6IDBweDtcbmBcbmNvbnN0IERyb3Bkb3duSXRlbSA9IHN0eWxlZC5kaXY8e1xuICAnYXJpYS1zZWxlY3RlZCc6IGJvb2xlYW5cbiAgJ2FyaWEtZGlzYWJsZWQnOiBib29sZWFuXG59PmBcbiAgdGV4dC1hbGlnbjpsZWZ0O1xuICBib3JkZXI6IG5vbmU7XG4gIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm90aGVyLmVsZXZhdGlvbi5iYWNrZ3JvdW5kLnJhaXNlZH07XG5cbiAgcGFkZGluZzogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsnMS41J119ICR7KHsgdGhlbWUgfSkgPT5cbiAgICB0aGVtZS5zcGFjZVsnMiddfSAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWycxLjUnXX0gJHsoeyB0aGVtZSB9KSA9PlxuICAgIHRoZW1lLnNwYWNlWycyJ119O1xuICBtYXJnaW4tbGVmdDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsnMC41J119O1xuICBtYXJnaW4tcmlnaHQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbJzAuNSddfTtcblxuICBjb2xvcjogICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwudGV4dH07XG4gIGJvcmRlci1yYWRpdXM6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUucmFkaWkuZGVmYXVsdH07XG5cbiAgJjpob3ZlciwgOmZvY3VzIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5wcmltYXJ5LmJhY2tncm91bmR9O1xuICAgIGNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5wcmltYXJ5LnRleHR9O1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBvdXRsaW5lOiBub25lO1xuICB9XG5cbiAgJlthcmlhLXNlbGVjdGVkPSd0cnVlJ10ge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLnByaW1hcnkuYmFja2dyb3VuZH07XG4gIH1cblxuICAmW2FyaWEtZGlzYWJsZWQ9XCJ0cnVlXCJdIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5uZXV0cmFsLmJhY2tncm91bmREaXNhYmxlZH07XG4gICAgY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwudGV4dERpc2FibGVkfTtcbiAgfVxuXG4gICZbYXJpYS1kaXNhYmxlZD1cInRydWVcIl06aG92ZXIsIFthcmlhLWRpc2FibGVkPVwidHJ1ZVwiXTpmb2N1cyB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHsoeyB0aGVtZSB9KSA9PlxuICAgICAgdGhlbWUuY29sb3JzLm5ldXRyYWwuYmFja2dyb3VuZFN0cm9uZ0Rpc2FibGVkfTtcbiAgICBjb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMubmV1dHJhbC50ZXh0U3Ryb25nRGlzYWJsZWR9O1xuICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgfVxuYFxuXG5jb25zdCBQb3B1cEZvb3RlciA9IHN0eWxlZC5kaXZgXG4gIHdpZHRoOiAxMDAlO1xuICBwYWRkaW5nOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzEuNV19ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMl19XG4gICAgJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsxLjVdfSAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzJdfTtcbiAgYm94LXNoYWRvdzogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zaGFkb3dzLmRyb3Bkb3dufTtcbmBcbmNvbnN0IFN0eWxlZENoZWNrYm94ID0gc3R5bGVkKENoZWNrYm94KWBcbiAgd2lkdGg6IDEwMCU7XG4gIHBvc2l0aW9uOiBzdGF0aWM7XG4gIHRleHQtYWxpZ246IGxlZnQ7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuYCAvLyBwb2ludGVyLWV2ZW50czogbm9uZSBwcmV2ZW50cyBhbnkgZXJyb3Igd2hlbiB1c2luZyB0aGUgY2hlY2tib3ggaW4gYSBmb3JtIHNpbmNlIGl0IGlzIGFuIHVubmFtZWQgaW5wdXRcblxuY29uc3QgRW1wdHlTdGF0ZSA9IHN0eWxlZChTdGFjaylgXG4gIHBhZGRpbmc6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMl19O1xuYFxuY29uc3QgTG9hZE1vcmUgPSBzdHlsZWQoU3RhY2spYFxuICBwYWRkaW5nOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzAuNV19O1xuYFxuXG5jb25zdCBtb3ZlRm9jdXNEb3duID0gKCkgPT4ge1xuICBjb25zdCBvcHRpb25zID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcbiAgICAnI2l0ZW1zID4gZGl2W3JvbGU9XCJvcHRpb25cIl06bm90KFtkaXNhYmxlZF0pJyxcbiAgKVxuICBjb25zdCBhY3RpdmVJdGVtID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudFxuICBpZiAob3B0aW9ucykge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgb3B0aW9ucz8ubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgIGNvbnN0IGxpc3RMZW5ndGggPSBvcHRpb25zLmxlbmd0aFxuICAgICAgaWYgKGFjdGl2ZUl0ZW0gPT09IG9wdGlvbnNbaV0gJiYgYWN0aXZlSXRlbSAhPT0gb3B0aW9uc1tsaXN0TGVuZ3RoIC0gMV0pIHtcbiAgICAgICAgOyhvcHRpb25zW2kgKyAxXSBhcyBIVE1MRWxlbWVudCkuZm9jdXMoKVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuY29uc3QgbW92ZUZvY3VzVXAgPSAoKSA9PiB7XG4gIGNvbnN0IG9wdGlvbnMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFxuICAgICcjaXRlbXMgPiBkaXZbcm9sZT1cIm9wdGlvblwiXTpub3QoW2Rpc2FibGVkXSknLFxuICApXG4gIGNvbnN0IGFjdGl2ZUl0ZW0gPSBkb2N1bWVudC5hY3RpdmVFbGVtZW50XG5cbiAgaWYgKG9wdGlvbnMpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG9wdGlvbnMubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgIGlmIChhY3RpdmVJdGVtID09PSBvcHRpb25zW2ldICYmIGFjdGl2ZUl0ZW0gIT09IG9wdGlvbnNbMF0pIHtcbiAgICAgICAgOyhvcHRpb25zW2kgLSAxXSBhcyBIVE1MRWxlbWVudCkuZm9jdXMoKVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuY29uc3QgaGFuZGxlS2V5RG93blNlbGVjdCA9IChldmVudDogS2V5Ym9hcmRFdmVudDxIVE1MRGl2RWxlbWVudD4pID0+IHtcbiAgaWYgKGV2ZW50LmtleSA9PT0gJ0Fycm93RG93bicpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgbW92ZUZvY3VzRG93bigpXG4gIH1cblxuICBpZiAoZXZlbnQua2V5ID09PSAnQXJyb3dVcCcpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgbW92ZUZvY3VzVXAoKVxuICB9XG59XG5jb25zdCBoYW5kbGVDbGlja091dHNpZGUgPSAoXG4gIGV2ZW50OiBNb3VzZUV2ZW50LFxuICByZWY6IFJlZk9iamVjdDxIVE1MRGl2RWxlbWVudD4sXG4gIHNldElzRHJvcGRvd25WaXNpYmlsZTogRGlzcGF0Y2g8U2V0U3RhdGVBY3Rpb248Ym9vbGVhbj4+LFxuICByZWZTZWxlY3Q6IFJlZk9iamVjdDxIVE1MRGl2RWxlbWVudD4sXG4gIG9uU2VhcmNoOiBEaXNwYXRjaDxTZXRTdGF0ZUFjdGlvbjxEYXRhVHlwZT4+LFxuICBvcHRpb25zOiBEYXRhVHlwZSxcbikgPT4ge1xuICBpZiAoXG4gICAgcmVmLmN1cnJlbnQgJiZcbiAgICAhcmVmLmN1cnJlbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0IGFzIE5vZGUpICYmXG4gICAgIXJlZlNlbGVjdC5jdXJyZW50Py5jb250YWlucyhldmVudC50YXJnZXQgYXMgTm9kZSlcbiAgKSB7XG4gICAgc2V0SXNEcm9wZG93blZpc2liaWxlKGZhbHNlKVxuICAgIG9uU2VhcmNoKG9wdGlvbnMpXG4gIH1cbn1cblxuY29uc3QgaGFuZGxlS2V5RG93biA9IChcbiAgZXZlbnQ6IGdsb2JhbFRoaXMuS2V5Ym9hcmRFdmVudCxcbiAgcmVmOiBSZWZPYmplY3Q8SFRNTERpdkVsZW1lbnQ+LFxuICBvcHRpb25zOiBEYXRhVHlwZSxcbiAgc2VhcmNoQmFyQWN0aXZlOiBib29sZWFuLFxuICBzZXRTZWFyY2g6IERpc3BhdGNoPFNldFN0YXRlQWN0aW9uPHN0cmluZz4+LFxuICBzZXREZWZhdWx0U2VhcmNoOiBEaXNwYXRjaDxTZXRTdGF0ZUFjdGlvbjxzdHJpbmcgfCBudWxsPj4sXG4gIHNlYXJjaDogc3RyaW5nLFxuKSA9PiB7XG4gIC8vIERlYWxzIHdpdGggZGVmYXVsdCBzZWFyY2hcbiAgaWYgKFxuICAgIHJlZi5jdXJyZW50ICYmXG4gICAgIXNlYXJjaEJhckFjdGl2ZSAmJlxuICAgICFOT05fU0VBUkNIQUJMRV9LRVlTLmluY2x1ZGVzKGV2ZW50LmtleSkgJiZcbiAgICBkb2N1bWVudC5hY3RpdmVFbGVtZW50Py5hcmlhTGFiZWwgIT09ICdzZWFyY2gtYmFyJ1xuICApIHtcbiAgICBjb25zdCBjdXJyZW50U2VhcmNoID0gc2VhcmNoICsgZXZlbnQua2V5XG4gICAgc2V0U2VhcmNoKGN1cnJlbnRTZWFyY2gpXG4gICAgcmVmLmN1cnJlbnQuZm9jdXMoKVxuICAgIGlmICghQXJyYXkuaXNBcnJheShvcHRpb25zKSkge1xuICAgICAgY29uc3QgY2xvc2VzdE9wdGlvbnMgPSB7IC4uLm9wdGlvbnMgfVxuICAgICAgT2JqZWN0LmtleXMoY2xvc2VzdE9wdGlvbnMpLm1hcCgoZ3JvdXA6IHN0cmluZykgPT4ge1xuICAgICAgICBjbG9zZXN0T3B0aW9uc1tncm91cF0gPSBjbG9zZXN0T3B0aW9uc1tncm91cF0uZmlsdGVyKG9wdGlvbiA9PlxuICAgICAgICAgIG9wdGlvbi5zZWFyY2hUZXh0XG4gICAgICAgICAgICA/IG9wdGlvbi5zZWFyY2hUZXh0LnRvTG9jYWxlTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChjdXJyZW50U2VhcmNoKVxuICAgICAgICAgICAgOiBvcHRpb24udmFsdWUudG9Mb2NhbGVMb3dlckNhc2UoKS5zdGFydHNXaXRoKGN1cnJlbnRTZWFyY2gpLFxuICAgICAgICApXG5cbiAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgIH0pXG4gICAgICBjb25zdCBjbG9zZXN0T3B0aW9uID0gY2xvc2VzdE9wdGlvbnNbT2JqZWN0LmtleXMoY2xvc2VzdE9wdGlvbnMpWzBdXVswXVxuICAgICAgaWYgKGNsb3Nlc3RPcHRpb24pIHtcbiAgICAgICAgc2V0RGVmYXVsdFNlYXJjaChjbG9zZXN0T3B0aW9uLnNlYXJjaFRleHQgPz8gY2xvc2VzdE9wdGlvbi52YWx1ZSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNldERlZmF1bHRTZWFyY2gobnVsbClcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgY2xvc2VzdE9wdGlvbiA9IFsuLi5vcHRpb25zXS5maWx0ZXIob3B0aW9uID0+XG4gICAgICAgIG9wdGlvbi5zZWFyY2hUZXh0XG4gICAgICAgICAgPyBvcHRpb24uc2VhcmNoVGV4dC50b0xvY2FsZUxvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoY3VycmVudFNlYXJjaClcbiAgICAgICAgICA6IG9wdGlvbi52YWx1ZS50b0xvY2FsZUxvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoY3VycmVudFNlYXJjaCksXG4gICAgICApWzBdXG4gICAgICBpZiAoY2xvc2VzdE9wdGlvbikge1xuICAgICAgICBzZXREZWZhdWx0U2VhcmNoKGNsb3Nlc3RPcHRpb24uc2VhcmNoVGV4dCA/PyBjbG9zZXN0T3B0aW9uLnZhbHVlKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2V0RGVmYXVsdFNlYXJjaChudWxsKVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuY29uc3QgQ3JlYXRlRHJvcGRvd24gPSAoe1xuICBpc0VtcHR5LFxuICBlbXB0eVN0YXRlLFxuICBkZXNjcmlwdGlvbkRpcmVjdGlvbixcbiAgbG9hZE1vcmUsXG4gIG9wdGlvbmFsSW5mb1BsYWNlbWVudCxcbiAgZGVmYXVsdFNlYXJjaFZhbHVlLFxuICBpc0xvYWRpbmcsXG59OiBDcmVhdGVEcm9wZG93blByb3BzKSA9PiB7XG4gIGNvbnN0IHtcbiAgICBzZXRJc0Ryb3Bkb3duVmlzaWJsZSxcbiAgICBvbkNoYW5nZSxcbiAgICBvcHRpb25zLFxuICAgIG11bHRpc2VsZWN0LFxuICAgIHNlbGVjdEFsbCxcbiAgICBzZWxlY3RBbGxHcm91cCxcbiAgICBkaXNwbGF5ZWRPcHRpb25zLFxuICAgIHNldFNlbGVjdGVkRGF0YSxcbiAgICBzZWxlY3RlZERhdGEsXG4gIH0gPSB1c2VTZWxlY3RJbnB1dCgpXG4gIGNvbnN0IGZvY3VzZWRJdGVtUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGRlZmF1bHRTZWFyY2hWYWx1ZSAmJiBmb2N1c2VkSXRlbVJlZj8uY3VycmVudCkge1xuICAgICAgZm9jdXNlZEl0ZW1SZWYuY3VycmVudC5mb2N1cygpXG4gICAgfVxuICB9LCBbZGVmYXVsdFNlYXJjaFZhbHVlXSlcblxuICBpZiAoaXNFbXB0eSkge1xuICAgIHJldHVybiAoXG4gICAgICA8RW1wdHlTdGF0ZSBnYXA9ezJ9IGFsaWduSXRlbXM9XCJjZW50ZXJcIj5cbiAgICAgICAge2VtcHR5U3RhdGUgPz8gKFxuICAgICAgICAgIDxUZXh0IHZhcmlhbnQ9XCJib2R5U3Ryb25nXCIgYXM9XCJwXCI+XG4gICAgICAgICAgICBObyBvcHRpb25zXG4gICAgICAgICAgPC9UZXh0PlxuICAgICAgICApfVxuICAgICAgPC9FbXB0eVN0YXRlPlxuICAgIClcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZUNsaWNrID0gKGNsaWNrZWRPcHRpb246IE9wdGlvblR5cGUsIGdyb3VwPzogc3RyaW5nKSA9PiB7XG4gICAgc2V0U2VsZWN0ZWREYXRhKHsgdHlwZTogJ3NlbGVjdE9wdGlvbicsIGNsaWNrZWRPcHRpb24sIGdyb3VwIH0pXG4gICAgaWYgKG11bHRpc2VsZWN0KSB7XG4gICAgICBpZiAoc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzLmluY2x1ZGVzKGNsaWNrZWRPcHRpb24udmFsdWUpKSB7XG4gICAgICAgIG9uQ2hhbmdlPy4oXG4gICAgICAgICAgc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzLmZpbHRlcihcbiAgICAgICAgICAgIHZhbCA9PiB2YWwgIT09IGNsaWNrZWRPcHRpb24udmFsdWUsXG4gICAgICAgICAgKSxcbiAgICAgICAgKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb25DaGFuZ2U/LihbLi4uc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzLCBjbGlja2VkT3B0aW9uLnZhbHVlXSlcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgb25DaGFuZ2U/LihjbGlja2VkT3B0aW9uLnZhbHVlKVxuICAgIH1cbiAgICBzZXRJc0Ryb3Bkb3duVmlzaWJsZShtdWx0aXNlbGVjdCkgLy8gaGlkZSB0aGUgZHJvcGRvd24gb24gY2xpY2sgd2hlbiBzaW5nbGUgc2VsZWN0IG9ubHlcbiAgfVxuXG4gIGNvbnN0IHNlbGVjdEFsbE9wdGlvbnMgPSAoKSA9PiB7XG4gICAgaWYgKG11bHRpc2VsZWN0KSB7XG4gICAgICBzZXRTZWxlY3RlZERhdGEoeyB0eXBlOiAnc2VsZWN0QWxsJyB9KVxuICAgICAgaWYgKHNlbGVjdGVkRGF0YS5hbGxTZWxlY3RlZCAmJiBvbkNoYW5nZSkge1xuICAgICAgICBvbkNoYW5nZShbXSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGFsbFZhbHVlczogT3B0aW9uVHlwZVtdID0gW11cbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KG9wdGlvbnMpKSB7XG4gICAgICAgICAgT2JqZWN0LmtleXMob3B0aW9ucykubWFwKChncm91cDogc3RyaW5nKSA9PlxuICAgICAgICAgICAgb3B0aW9uc1tncm91cF0ubWFwKG9wdGlvbiA9PiB7XG4gICAgICAgICAgICAgIGlmICghb3B0aW9uLmRpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgYWxsVmFsdWVzLnB1c2gob3B0aW9uKVxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIClcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvcHRpb25zLm1hcChvcHRpb24gPT4gYWxsVmFsdWVzLnB1c2gob3B0aW9uKSlcbiAgICAgICAgfVxuICAgICAgICBvbkNoYW5nZT8uKGFsbFZhbHVlcy5tYXAodmFsdWUgPT4gdmFsdWUudmFsdWUpKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGhhbmRsZVNlbGVjdEdyb3VwID0gKGdyb3VwOiBzdHJpbmcpID0+IHtcbiAgICBpZiAobXVsdGlzZWxlY3QpIHtcbiAgICAgIHNldFNlbGVjdGVkRGF0YSh7IHR5cGU6ICdzZWxlY3RHcm91cCcsIHNlbGVjdGVkR3JvdXA6IGdyb3VwIH0pXG4gICAgICBpZiAoIUFycmF5LmlzQXJyYXkob3B0aW9ucykpIHtcbiAgICAgICAgaWYgKHNlbGVjdGVkRGF0YS5zZWxlY3RlZEdyb3Vwcy5pbmNsdWRlcyhncm91cCkpIHtcbiAgICAgICAgICBjb25zdCBuZXdTZWxlY3RlZFZhbHVlcyA9IFsuLi5zZWxlY3RlZERhdGEuc2VsZWN0ZWRWYWx1ZXNdLmZpbHRlcihcbiAgICAgICAgICAgIHNlbGVjdGVkVmFsdWUgPT5cbiAgICAgICAgICAgICAgIW9wdGlvbnNbZ3JvdXBdLmZpbmQob3B0aW9uID0+IG9wdGlvbi52YWx1ZSA9PT0gc2VsZWN0ZWRWYWx1ZSksXG4gICAgICAgICAgKVxuICAgICAgICAgIG9uQ2hhbmdlPy4obmV3U2VsZWN0ZWRWYWx1ZXMpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgbmV3U2VsZWN0ZWRWYWx1ZXMgPSBbLi4uc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzXVxuXG4gICAgICAgICAgb3B0aW9uc1tncm91cF0ubWFwKG9wdGlvbiA9PlxuICAgICAgICAgICAgbmV3U2VsZWN0ZWRWYWx1ZXMuaW5jbHVkZXMob3B0aW9uLnZhbHVlKSB8fCBvcHRpb24uZGlzYWJsZWRcbiAgICAgICAgICAgICAgPyBudWxsXG4gICAgICAgICAgICAgIDogbmV3U2VsZWN0ZWRWYWx1ZXMucHVzaChvcHRpb24udmFsdWUpLFxuICAgICAgICAgIClcbiAgICAgICAgICBvbkNoYW5nZT8uKG5ld1NlbGVjdGVkVmFsdWVzKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuICFBcnJheS5pc0FycmF5KGRpc3BsYXllZE9wdGlvbnMpID8gKFxuICAgIDxEcm9wZG93bkNvbnRhaW5lclxuICAgICAgcm9sZT1cImxpc3Rib3hcIlxuICAgICAgaWQ9XCJzZWxlY3QtZHJvcGRvd25cIlxuICAgICAgb25LZXlEb3duPXtoYW5kbGVLZXlEb3duU2VsZWN0fVxuICAgICAgZGF0YS1ncm91cGVkXG4gICAgPlxuICAgICAge2lzTG9hZGluZyA/IChcbiAgICAgICAgPFNrZWxldG9uIHZhcmlhbnQ9XCJibG9ja1wiIC8+XG4gICAgICApIDogKFxuICAgICAgICA8PlxuICAgICAgICAgIHtzZWxlY3RBbGwgJiYgbXVsdGlzZWxlY3QgPyAoXG4gICAgICAgICAgICA8U3RhY2sgaWQ9XCJpdGVtc1wiPlxuICAgICAgICAgICAgICA8RHJvcGRvd25JdGVtXG4gICAgICAgICAgICAgICAgYXJpYS1kaXNhYmxlZD17ZmFsc2V9XG4gICAgICAgICAgICAgICAgYXJpYS1zZWxlY3RlZD17c2VsZWN0ZWREYXRhLmFsbFNlbGVjdGVkfVxuICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJzZWxlY3QtYWxsXCJcbiAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD1cInNlbGVjdC1hbGxcIlxuICAgICAgICAgICAgICAgIGlkPVwic2VsZWN0LWFsbFwiXG4gICAgICAgICAgICAgICAgdGFiSW5kZXg9ezB9XG4gICAgICAgICAgICAgICAgcm9sZT1cIm9wdGlvblwiXG4gICAgICAgICAgICAgICAgb25LZXlEb3duPXtldmVudCA9PlxuICAgICAgICAgICAgICAgICAgWycgJywgJ0VudGVyJ10uaW5jbHVkZXMoZXZlbnQua2V5KSA/IHNlbGVjdEFsbE9wdGlvbnMoKSA6IG51bGxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgb25DbGljaz17c2VsZWN0QWxsT3B0aW9uc31cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxTdHlsZWRDaGVja2JveFxuICAgICAgICAgICAgICAgICAgY2hlY2tlZD17c2VsZWN0ZWREYXRhLmFsbFNlbGVjdGVkfVxuICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgdmFsdWU9XCJzZWxlY3QtYWxsXCJcbiAgICAgICAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwic2VsZWN0LWFsbC1jaGVja2JveFwiXG4gICAgICAgICAgICAgICAgICB0YWJJbmRleD17LTF9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPFN0YWNrIGRpcmVjdGlvbj1cImNvbHVtblwiPlxuICAgICAgICAgICAgICAgICAgICA8VGV4dCBhcz1cInNwYW5cIiB2YXJpYW50PVwiYm9keVwiIHBsYWNlbWVudD1cImxlZnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICB7c2VsZWN0QWxsLmxhYmVsfVxuICAgICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgICAgIDxUZXh0XG4gICAgICAgICAgICAgICAgICAgICAgYXM9XCJzcGFuXCJcbiAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50PVwiYm9keVNtYWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICBzZW50aW1lbnQ9XCJuZXV0cmFsXCJcbiAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJsZWZ0XCJcbiAgICAgICAgICAgICAgICAgICAgICBwcm9taW5lbmNlPVwid2Vha1wiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7c2VsZWN0QWxsLmRlc2NyaXB0aW9ufVxuICAgICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgICA8L1N0YWNrPlxuICAgICAgICAgICAgICAgIDwvU3R5bGVkQ2hlY2tib3g+XG4gICAgICAgICAgICAgIDwvRHJvcGRvd25JdGVtPlxuICAgICAgICAgICAgPC9TdGFjaz5cbiAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICB7T2JqZWN0LmtleXMoZGlzcGxheWVkT3B0aW9ucykubWFwKChncm91cCwgaW5kZXgpID0+IChcbiAgICAgICAgICAgIDxTdGFjayBrZXk9e2dyb3VwfSBnYXA9ezAuMjV9PlxuICAgICAgICAgICAgICB7ZGlzcGxheWVkT3B0aW9uc1tncm91cF0ubGVuZ3RoID4gMCA/IChcbiAgICAgICAgICAgICAgICA8RHJvcGRvd25Hcm91cFdyYXBwZXIgaWQ9e3NlbGVjdEFsbEdyb3VwID8gJ2l0ZW1zJyA6IHVuZGVmaW5lZH0+XG4gICAgICAgICAgICAgICAgICB7Z3JvdXAgPyAoXG4gICAgICAgICAgICAgICAgICAgIDxEcm9wZG93bkdyb3VwXG4gICAgICAgICAgICAgICAgICAgICAga2V5PXtncm91cH1cbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICB0YWJJbmRleD17c2VsZWN0QWxsR3JvdXAgPyAwIDogLTF9XG4gICAgICAgICAgICAgICAgICAgICAgb25LZXlEb3duPXtldmVudCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoWycgJywgJ0VudGVyJ10uaW5jbHVkZXMoZXZlbnQua2V5KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZVNlbGVjdEdyb3VwKGdyb3VwKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgZGF0YS1zZWxlY3Rncm91cD17c2VsZWN0QWxsR3JvdXB9XG4gICAgICAgICAgICAgICAgICAgICAgcm9sZT1cImdyb3VwXCJcbiAgICAgICAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD17YGdyb3VwLSR7aW5kZXh9YH1cbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0QWxsR3JvdXAgPyBoYW5kbGVTZWxlY3RHcm91cChncm91cCkgOiBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAge3NlbGVjdEFsbEdyb3VwID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgPFN0eWxlZENoZWNrYm94XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e3NlbGVjdGVkRGF0YS5zZWxlY3RlZEdyb3Vwcy5pbmNsdWRlcyhncm91cCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2dyb3VwfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD1cInNlbGVjdC1ncm91cFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRhYkluZGV4PXstMX1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPFRleHQgdmFyaWFudD1cImNhcHRpb25cIiBhcz1cInNwYW5cIiBwbGFjZW1lbnQ9XCJsZWZ0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2dyb3VwLnRvVXBwZXJDYXNlKCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvU3R5bGVkQ2hlY2tib3g+XG4gICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxUZXh0XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJjYXB0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYXM9XCJzcGFuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwibGVmdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNlbnRpbWVudD1cIm5ldXRyYWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7Z3JvdXAudG9VcHBlckNhc2UoKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICA8L0Ryb3Bkb3duR3JvdXA+XG4gICAgICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgICAgICA8L0Ryb3Bkb3duR3JvdXBXcmFwcGVyPlxuICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgICAgPFN0YWNrIGlkPVwiaXRlbXNcIiBnYXA9XCIwLjI1XCI+XG4gICAgICAgICAgICAgICAge2Rpc3BsYXllZE9wdGlvbnNbZ3JvdXBdLm1hcCgob3B0aW9uLCBpbmRleE9wdGlvbikgPT4gKFxuICAgICAgICAgICAgICAgICAgPERyb3Bkb3duSXRlbVxuICAgICAgICAgICAgICAgICAgICBrZXk9e29wdGlvbi52YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgYXJpYS1kaXNhYmxlZD17ISFvcHRpb24uZGlzYWJsZWR9XG4gICAgICAgICAgICAgICAgICAgIHRhYkluZGV4PXshb3B0aW9uLmRpc2FibGVkID8gMCA6IC0xfVxuICAgICAgICAgICAgICAgICAgICBhcmlhLXNlbGVjdGVkPXtcbiAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZERhdGEuc2VsZWN0ZWRWYWx1ZXMuaW5jbHVkZXMob3B0aW9uLnZhbHVlKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICFvcHRpb24uZGlzYWJsZWRcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPXtvcHRpb24udmFsdWV9XG4gICAgICAgICAgICAgICAgICAgIGRhdGEtdGVzdGlkPXtgb3B0aW9uLSR7b3B0aW9uLnZhbHVlfWB9XG4gICAgICAgICAgICAgICAgICAgIGlkPXtgb3B0aW9uLSR7aW5kZXhPcHRpb259YH1cbiAgICAgICAgICAgICAgICAgICAgcm9sZT1cIm9wdGlvblwiXG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoIW9wdGlvbi5kaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlQ2xpY2sob3B0aW9uLCBncm91cClcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgIG9uS2V5RG93bj17ZXZlbnQgPT5cbiAgICAgICAgICAgICAgICAgICAgICBbJyAnLCAnRW50ZXInXS5pbmNsdWRlcyhldmVudC5rZXkpXG4gICAgICAgICAgICAgICAgICAgICAgICA/IGhhbmRsZUNsaWNrKG9wdGlvbiwgZ3JvdXApXG4gICAgICAgICAgICAgICAgICAgICAgICA6IG51bGxcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZWY9e1xuICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbi52YWx1ZSA9PT0gZGVmYXVsdFNlYXJjaFZhbHVlIHx8XG4gICAgICAgICAgICAgICAgICAgICAgb3B0aW9uLnNlYXJjaFRleHQgPT09IGRlZmF1bHRTZWFyY2hWYWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgPyBmb2N1c2VkSXRlbVJlZlxuICAgICAgICAgICAgICAgICAgICAgICAgOiBudWxsXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge211bHRpc2VsZWN0ID8gKFxuICAgICAgICAgICAgICAgICAgICAgIDxTdHlsZWRDaGVja2JveFxuICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tlZD17XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkRGF0YS5zZWxlY3RlZFZhbHVlcy5pbmNsdWRlcyhvcHRpb24udmFsdWUpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICFvcHRpb24uZGlzYWJsZWRcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtvcHRpb24uZGlzYWJsZWR9XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17b3B0aW9uLnZhbHVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgdGFiSW5kZXg9ey0xfVxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxEaXNwbGF5T3B0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbj17b3B0aW9ufVxuICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbkRpcmVjdGlvbj17ZGVzY3JpcHRpb25EaXJlY3Rpb259XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsSW5mb1BsYWNlbWVudD17b3B0aW9uYWxJbmZvUGxhY2VtZW50fVxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8L1N0eWxlZENoZWNrYm94PlxuICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgIDxEaXNwbGF5T3B0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb249e29wdGlvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uRGlyZWN0aW9uPXtkZXNjcmlwdGlvbkRpcmVjdGlvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsSW5mb1BsYWNlbWVudD17b3B0aW9uYWxJbmZvUGxhY2VtZW50fVxuICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICA8L0Ryb3Bkb3duSXRlbT5cbiAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgPC9TdGFjaz5cbiAgICAgICAgICAgIDwvU3RhY2s+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvPlxuICAgICAgKX1cbiAgICAgIHtsb2FkTW9yZSA/IDxMb2FkTW9yZT57bG9hZE1vcmV9PC9Mb2FkTW9yZT4gOiBudWxsfVxuICAgIDwvRHJvcGRvd25Db250YWluZXI+XG4gICkgOiAoXG4gICAgPERyb3Bkb3duQ29udGFpbmVyXG4gICAgICByb2xlPVwibGlzdGJveFwiXG4gICAgICB0YWJJbmRleD17LTF9XG4gICAgICBpZD1cInNlbGVjdC1kcm9wZG93blwiXG4gICAgICBvbktleURvd249e2hhbmRsZUtleURvd25TZWxlY3R9XG4gICAgICBnYXA9ezAuMjV9XG4gICAgICBkYXRhLWdyb3VwZWQ9e2ZhbHNlfVxuICAgID5cbiAgICAgIHtzZWxlY3RBbGwgJiYgbXVsdGlzZWxlY3QgPyAoXG4gICAgICAgIDxTdGFjayBpZD1cIml0ZW1zXCIgZ2FwPXswLjI1fSB0YWJJbmRleD17LTF9PlxuICAgICAgICAgIDxEcm9wZG93bkl0ZW1cbiAgICAgICAgICAgIGFyaWEtZGlzYWJsZWQ9e2ZhbHNlfVxuICAgICAgICAgICAgYXJpYS1zZWxlY3RlZD17c2VsZWN0ZWREYXRhLmFsbFNlbGVjdGVkfVxuICAgICAgICAgICAgYXJpYS1sYWJlbD1cInNlbGVjdC1hbGxcIlxuICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJzZWxlY3QtYWxsXCJcbiAgICAgICAgICAgIHRhYkluZGV4PXswfVxuICAgICAgICAgICAgcm9sZT1cIm9wdGlvblwiXG4gICAgICAgICAgICBvbktleURvd249e2V2ZW50ID0+XG4gICAgICAgICAgICAgIFsnICcsICdFbnRlciddLmluY2x1ZGVzKGV2ZW50LmtleSkgPyBzZWxlY3RBbGxPcHRpb25zKCkgOiBudWxsXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvbkNsaWNrPXtzZWxlY3RBbGxPcHRpb25zfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxTdHlsZWRDaGVja2JveFxuICAgICAgICAgICAgICBjaGVja2VkPXtzZWxlY3RlZERhdGEuYWxsU2VsZWN0ZWR9XG4gICAgICAgICAgICAgIGRpc2FibGVkPXtmYWxzZX1cbiAgICAgICAgICAgICAgdmFsdWU9XCJzZWxlY3QtYWxsXCJcbiAgICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJzZWxlY3QtYWxsLWNoZWNrYm94XCJcbiAgICAgICAgICAgICAgdGFiSW5kZXg9ey0xfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8U3RhY2sgZGlyZWN0aW9uPVwiY29sdW1uXCI+XG4gICAgICAgICAgICAgICAgPFRleHQgYXM9XCJzcGFuXCIgdmFyaWFudD1cImJvZHlcIiBwbGFjZW1lbnQ9XCJsZWZ0XCI+XG4gICAgICAgICAgICAgICAgICB7c2VsZWN0QWxsLmxhYmVsfVxuICAgICAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgICAgICA8VGV4dFxuICAgICAgICAgICAgICAgICAgYXM9XCJzcGFuXCJcbiAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJib2R5U21hbGxcIlxuICAgICAgICAgICAgICAgICAgc2VudGltZW50PVwibmV1dHJhbFwiXG4gICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJsZWZ0XCJcbiAgICAgICAgICAgICAgICAgIHByb21pbmVuY2U9XCJ3ZWFrXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICB7c2VsZWN0QWxsLmRlc2NyaXB0aW9ufVxuICAgICAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgICAgPC9TdGFjaz5cbiAgICAgICAgICAgIDwvU3R5bGVkQ2hlY2tib3g+XG4gICAgICAgICAgPC9Ecm9wZG93bkl0ZW0+XG4gICAgICAgIDwvU3RhY2s+XG4gICAgICApIDogbnVsbH1cbiAgICAgIDxTdGFjayBpZD1cIml0ZW1zXCIgZ2FwPXswLjI1fT5cbiAgICAgICAge2lzTG9hZGluZyA/IChcbiAgICAgICAgICA8U2tlbGV0b24gdmFyaWFudD1cImJsb2NrXCIgLz5cbiAgICAgICAgKSA6IChcbiAgICAgICAgICBkaXNwbGF5ZWRPcHRpb25zLm1hcCgob3B0aW9uLCBpbmRleCkgPT4gKFxuICAgICAgICAgICAgPERyb3Bkb3duSXRlbVxuICAgICAgICAgICAgICBrZXk9e29wdGlvbi52YWx1ZX1cbiAgICAgICAgICAgICAgYXJpYS1kaXNhYmxlZD17ISFvcHRpb24uZGlzYWJsZWR9XG4gICAgICAgICAgICAgIGFyaWEtc2VsZWN0ZWQ9e1xuICAgICAgICAgICAgICAgIHNlbGVjdGVkRGF0YS5zZWxlY3RlZFZhbHVlcy5pbmNsdWRlcyhvcHRpb24udmFsdWUpICYmXG4gICAgICAgICAgICAgICAgIW9wdGlvbi5kaXNhYmxlZFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIW9wdGlvbi5kaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgICAgaGFuZGxlQ2xpY2sob3B0aW9uKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgYXJpYS1sYWJlbD17b3B0aW9uLnZhbHVlfVxuICAgICAgICAgICAgICBkYXRhLXRlc3RpZD17YG9wdGlvbi0ke29wdGlvbi52YWx1ZX1gfVxuICAgICAgICAgICAgICBpZD17YG9wdGlvbi0ke2luZGV4fWB9XG4gICAgICAgICAgICAgIHJvbGU9XCJvcHRpb25cIlxuICAgICAgICAgICAgICB0YWJJbmRleD17IW9wdGlvbi5kaXNhYmxlZCA/IDAgOiAtMX1cbiAgICAgICAgICAgICAgcmVmPXtcbiAgICAgICAgICAgICAgICBvcHRpb24udmFsdWUgPT09IGRlZmF1bHRTZWFyY2hWYWx1ZSB8fFxuICAgICAgICAgICAgICAgIG9wdGlvbi5zZWFyY2hUZXh0ID09PSBkZWZhdWx0U2VhcmNoVmFsdWVcbiAgICAgICAgICAgICAgICAgID8gZm9jdXNlZEl0ZW1SZWZcbiAgICAgICAgICAgICAgICAgIDogbnVsbFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIG9uS2V5RG93bj17ZXZlbnQgPT5cbiAgICAgICAgICAgICAgICBbJyAnLCAnRW50ZXInXS5pbmNsdWRlcyhldmVudC5rZXkpID8gaGFuZGxlQ2xpY2sob3B0aW9uKSA6IG51bGxcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7bXVsdGlzZWxlY3QgPyAoXG4gICAgICAgICAgICAgICAgPFN0eWxlZENoZWNrYm94XG4gICAgICAgICAgICAgICAgICBjaGVja2VkPXtcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzLmluY2x1ZGVzKG9wdGlvbi52YWx1ZSkgJiZcbiAgICAgICAgICAgICAgICAgICAgIW9wdGlvbi5kaXNhYmxlZFxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e29wdGlvbi5kaXNhYmxlZH1cbiAgICAgICAgICAgICAgICAgIHZhbHVlPXtvcHRpb24udmFsdWV9XG4gICAgICAgICAgICAgICAgICB0YWJJbmRleD17LTF9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPERpc3BsYXlPcHRpb25cbiAgICAgICAgICAgICAgICAgICAgb3B0aW9uPXtvcHRpb259XG4gICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uRGlyZWN0aW9uPXtkZXNjcmlwdGlvbkRpcmVjdGlvbn1cbiAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWxJbmZvUGxhY2VtZW50PXtvcHRpb25hbEluZm9QbGFjZW1lbnR9XG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvU3R5bGVkQ2hlY2tib3g+XG4gICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgPERpc3BsYXlPcHRpb25cbiAgICAgICAgICAgICAgICAgIG9wdGlvbj17b3B0aW9ufVxuICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb25EaXJlY3Rpb249e2Rlc2NyaXB0aW9uRGlyZWN0aW9ufVxuICAgICAgICAgICAgICAgICAgb3B0aW9uYWxJbmZvUGxhY2VtZW50PXtvcHRpb25hbEluZm9QbGFjZW1lbnR9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvRHJvcGRvd25JdGVtPlxuICAgICAgICAgICkpXG4gICAgICAgICl9XG4gICAgICAgIHtsb2FkTW9yZSA/IDxMb2FkTW9yZT57bG9hZE1vcmV9PC9Mb2FkTW9yZT4gOiBudWxsfVxuICAgICAgPC9TdGFjaz5cbiAgICA8L0Ryb3Bkb3duQ29udGFpbmVyPlxuICApXG59XG5leHBvcnQgY29uc3QgRHJvcGRvd24gPSAoe1xuICBjaGlsZHJlbixcbiAgZW1wdHlTdGF0ZSxcbiAgZGVzY3JpcHRpb25EaXJlY3Rpb24sXG4gIHNlYXJjaGFibGUsXG4gIHBsYWNlaG9sZGVyLFxuICBmb290ZXIsXG4gIHJlZlNlbGVjdCxcbiAgbG9hZE1vcmUsXG4gIG9wdGlvbmFsSW5mb1BsYWNlbWVudCxcbiAgaXNMb2FkaW5nLFxuICBzaXplLFxufTogRHJvcGRvd25Qcm9wcykgPT4ge1xuICBjb25zdCB7XG4gICAgc2V0SXNEcm9wZG93blZpc2libGUsXG4gICAgaXNEcm9wZG93blZpc2libGUsXG4gICAgb25TZWFyY2gsXG4gICAgc2VhcmNoSW5wdXQsXG4gICAgb3B0aW9ucyxcbiAgICBkaXNwbGF5ZWRPcHRpb25zLFxuICAgIG51bWJlck9mT3B0aW9ucyxcbiAgfSA9IHVzZVNlbGVjdElucHV0KClcbiAgY29uc3QgdGhlbWUgPSB1c2VUaGVtZSgpXG4gIGNvbnN0IFtzZWFyY2hCYXJBY3RpdmUsIHNldFNlYXJjaEJhckFjdGl2ZV0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW2RlZmF1bHRTZWFyY2hWYWx1ZSwgc2V0RGVmYXVsdFNlYXJjaF0gPSB1c2VTdGF0ZTxzdHJpbmcgfCBudWxsPihudWxsKVxuICBjb25zdCByZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IFtzZWFyY2gsIHNldFNlYXJjaF0gPSB1c2VTdGF0ZTxzdHJpbmc+KCcnKVxuICBjb25zdCBbbWF4V2lkdGgsIHNldFdpZHRoXSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bWJlcj4oKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHJlZlNlbGVjdC5jdXJyZW50ICYmIGlzRHJvcGRvd25WaXNpYmxlKSB7XG4gICAgICBjb25zdCBwb3NpdGlvbiA9XG4gICAgICAgIHJlZlNlbGVjdC5jdXJyZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmJvdHRvbSArXG4gICAgICAgIERST1BET1dOX01BWF9IRUlHSFQgK1xuICAgICAgICBJTlBVVF9TSVpFX0hFSUdIVFtzaXplXSArXG4gICAgICAgIHBhcnNlSW50KHRoZW1lLnNwYWNlWyc1J10sIDEwKVxuICAgICAgY29uc3Qgb3ZlcmZsb3cgPSBwb3NpdGlvbiAtIHdpbmRvdy5pbm5lckhlaWdodFxuICAgICAgaWYgKG92ZXJmbG93ID4gMCkge1xuICAgICAgICBjb25zdCBtb2RhbEVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYmFja2Ryb3AtbW9kYWwnKVxuXG4gICAgICAgIGlmIChtb2RhbEVsZW1lbnQpIHtcbiAgICAgICAgICBtb2RhbEVsZW1lbnQuc2Nyb2xsQnkoeyB0b3A6IG92ZXJmbG93LCBiZWhhdmlvcjogJ3Ntb290aCcgfSlcbiAgICAgICAgfSBlbHNlIHdpbmRvdy5zY3JvbGxCeSh7IHRvcDogb3ZlcmZsb3csIGJlaGF2aW9yOiAnc21vb3RoJyB9KVxuICAgICAgfVxuICAgIH1cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvZXhoYXVzdGl2ZS1kZXBzXG4gIH0sIFtpc0Ryb3Bkb3duVmlzaWJsZSwgcmVmU2VsZWN0LCBzaXplLCByZWYuY3VycmVudF0pXG5cbiAgY29uc3QgcmVzaXplRHJvcGRvd24gPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKFxuICAgICAgcmVmU2VsZWN0LmN1cnJlbnQgJiZcbiAgICAgIHJlZlNlbGVjdC5jdXJyZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoID4gMFxuICAgICkge1xuICAgICAgc2V0V2lkdGgocmVmU2VsZWN0LmN1cnJlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGgpXG4gICAgfVxuICB9LCBbcmVmU2VsZWN0XSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHJlc2l6ZURyb3Bkb3duKClcblxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCByZXNpemVEcm9wZG93bilcblxuICAgIHJldHVybiAoKSA9PiB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgcmVzaXplRHJvcGRvd24pXG4gIH0sIFtyZXNpemVEcm9wZG93bl0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIXNlYXJjaElucHV0KSB7XG4gICAgICBvblNlYXJjaChvcHRpb25zKVxuICAgIH1cbiAgfSwgW29uU2VhcmNoLCBvcHRpb25zLCBzZWFyY2hJbnB1dF0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWlzRHJvcGRvd25WaXNpYmxlKSB7XG4gICAgICBzZXREZWZhdWx0U2VhcmNoKG51bGwpXG4gICAgICBzZXRTZWFyY2goJycpXG4gICAgfVxuXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgZXZlbnQgPT5cbiAgICAgIGhhbmRsZUNsaWNrT3V0c2lkZShcbiAgICAgICAgZXZlbnQsXG4gICAgICAgIHJlZixcbiAgICAgICAgc2V0SXNEcm9wZG93blZpc2libGUsXG4gICAgICAgIHJlZlNlbGVjdCxcbiAgICAgICAgb25TZWFyY2gsXG4gICAgICAgIG9wdGlvbnMsXG4gICAgICApLFxuICAgIClcblxuICAgIGlmICghc2VhcmNoYWJsZSkge1xuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIGV2ZW50ID0+XG4gICAgICAgIGhhbmRsZUtleURvd24oXG4gICAgICAgICAgZXZlbnQsXG4gICAgICAgICAgcmVmLFxuICAgICAgICAgIG9wdGlvbnMsXG4gICAgICAgICAgc2VhcmNoQmFyQWN0aXZlLFxuICAgICAgICAgIHNldFNlYXJjaCxcbiAgICAgICAgICBzZXREZWZhdWx0U2VhcmNoLFxuICAgICAgICAgIHNlYXJjaCxcbiAgICAgICAgKSxcbiAgICAgIClcbiAgICB9XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgZXZlbnQgPT5cbiAgICAgICAgaGFuZGxlQ2xpY2tPdXRzaWRlKFxuICAgICAgICAgIGV2ZW50LFxuICAgICAgICAgIHJlZixcbiAgICAgICAgICBzZXRJc0Ryb3Bkb3duVmlzaWJsZSxcbiAgICAgICAgICByZWZTZWxlY3QsXG4gICAgICAgICAgb25TZWFyY2gsXG4gICAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgKSxcbiAgICAgIClcblxuICAgICAgaWYgKCFzZWFyY2hhYmxlKSB7XG4gICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBldmVudCA9PlxuICAgICAgICAgIGhhbmRsZUtleURvd24oXG4gICAgICAgICAgICBldmVudCxcbiAgICAgICAgICAgIHJlZixcbiAgICAgICAgICAgIG9wdGlvbnMsXG4gICAgICAgICAgICBzZWFyY2hCYXJBY3RpdmUsXG4gICAgICAgICAgICBzZXRTZWFyY2gsXG4gICAgICAgICAgICBzZXREZWZhdWx0U2VhcmNoLFxuICAgICAgICAgICAgc2VhcmNoLFxuICAgICAgICAgICksXG4gICAgICAgIClcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtcbiAgICBpc0Ryb3Bkb3duVmlzaWJsZSxcbiAgICBzZWFyY2hCYXJBY3RpdmUsXG4gICAgb3B0aW9ucyxcbiAgICBvblNlYXJjaCxcbiAgICBzZWFyY2gsXG4gICAgcmVmU2VsZWN0LFxuICAgIHNldERlZmF1bHRTZWFyY2gsXG4gICAgc2V0SXNEcm9wZG93blZpc2libGUsXG4gICAgc2VhcmNoYWJsZSxcbiAgXSlcblxuICAvLyBObyBkYXRhIGlzIGRpc3BsYXllZCAoYmVjYXVzZSBvZiB0aGUgc2VhcmNoIG9yIGJlY2F1c2Ugbm8gZGF0YSBpcyBwcm92aWRlZClcbiAgLy8gU2V0IHRvIHRydWUgd2hlbiBub0RhdGEgYnkgZGVmYXVsdFxuICBjb25zdCBpc0VtcHR5ID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKG51bWJlck9mT3B0aW9ucyA9PT0gMCkgcmV0dXJuIHRydWVcbiAgICBpZiAoQXJyYXkuaXNBcnJheShkaXNwbGF5ZWRPcHRpb25zKSkge1xuICAgICAgcmV0dXJuICEoZGlzcGxheWVkT3B0aW9ucy5sZW5ndGggPiAwKVxuICAgIH1cbiAgICBjb25zdCBncm91cHMgPSBPYmplY3Qua2V5cyhkaXNwbGF5ZWRPcHRpb25zKVxuICAgIGZvciAoY29uc3QgZ3JvdXAgb2YgZ3JvdXBzKSB7XG4gICAgICBpZiAoZGlzcGxheWVkT3B0aW9uc1tncm91cF0ubGVuZ3RoICE9PSAwKSB7XG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0cnVlXG4gIH0sIFtkaXNwbGF5ZWRPcHRpb25zLCBudW1iZXJPZk9wdGlvbnNdKVxuXG4gIGNvbnN0IGNvbXB1dGVkRm9vdGVyID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKGZvb3Rlcikge1xuICAgICAgaWYgKHR5cGVvZiBmb290ZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICA8UG9wdXBGb290ZXI+e2Zvb3RlcigoKSA9PiBzZXRJc0Ryb3Bkb3duVmlzaWJsZShmYWxzZSkpfTwvUG9wdXBGb290ZXI+XG4gICAgICAgIClcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIDxQb3B1cEZvb3Rlcj57Zm9vdGVyfTwvUG9wdXBGb290ZXI+XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGxcbiAgfSwgW2Zvb3Rlciwgc2V0SXNEcm9wZG93blZpc2libGVdKVxuXG4gIHJldHVybiAoXG4gICAgPFN0eWxlZFBvcHVwXG4gICAgICB2aXNpYmxlPXtpc0Ryb3Bkb3duVmlzaWJsZX1cbiAgICAgIHRleHQ9e1xuICAgICAgICA8U3RhY2s+XG4gICAgICAgICAge3NlYXJjaGFibGUgJiYgIWlzTG9hZGluZyAmJiBudW1iZXJPZk9wdGlvbnMgPj0gNiA/IChcbiAgICAgICAgICAgIDxTZWFyY2hCYXJEcm9wZG93blxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj17cGxhY2Vob2xkZXJ9XG4gICAgICAgICAgICAgIGRpc3BsYXllZE9wdGlvbnM9e2Rpc3BsYXllZE9wdGlvbnN9XG4gICAgICAgICAgICAgIHNldFNlYXJjaEJhckFjdGl2ZT17c2V0U2VhcmNoQmFyQWN0aXZlfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICA8Q3JlYXRlRHJvcGRvd25cbiAgICAgICAgICAgIGlzRW1wdHk9e2lzRW1wdHl9XG4gICAgICAgICAgICBlbXB0eVN0YXRlPXtlbXB0eVN0YXRlfVxuICAgICAgICAgICAgZGVzY3JpcHRpb25EaXJlY3Rpb249e2Rlc2NyaXB0aW9uRGlyZWN0aW9ufVxuICAgICAgICAgICAgbG9hZE1vcmU9e2xvYWRNb3JlfVxuICAgICAgICAgICAgb3B0aW9uYWxJbmZvUGxhY2VtZW50PXtvcHRpb25hbEluZm9QbGFjZW1lbnR9XG4gICAgICAgICAgICBkZWZhdWx0U2VhcmNoVmFsdWU9e2RlZmF1bHRTZWFyY2hWYWx1ZX1cbiAgICAgICAgICAgIGlzTG9hZGluZz17aXNMb2FkaW5nfVxuICAgICAgICAgIC8+XG4gICAgICAgICAge2NvbXB1dGVkRm9vdGVyfVxuICAgICAgICA8L1N0YWNrPlxuICAgICAgfVxuICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcbiAgICAgIGRpc2FibGVBbmltYXRpb25cbiAgICAgIG1heFdpZHRoPXttYXhXaWR0aCA/PyByZWZTZWxlY3QuY3VycmVudD8ub2Zmc2V0V2lkdGh9XG4gICAgICBoYXNBcnJvdz17ZmFsc2V9XG4gICAgICByZWY9e3JlZn1cbiAgICAgIHRhYkluZGV4PXswfVxuICAgICAgcm9sZT1cImRpYWxvZ1wiXG4gICAgICBkZWJvdW5jZURlbGF5PXswfVxuICAgICAgY29udGFpbmVyRnVsbFdpZHRoXG4gICAgICBhbGlnbj1cInN0YXJ0XCJcbiAgICA+XG4gICAgICB7Y2hpbGRyZW59XG4gICAgPC9TdHlsZWRQb3B1cD5cbiAgKVxufVxuIl19 */"));
79
79
  const DropdownGroupWrapper = /* @__PURE__ */ _styled__default.default("div", process.env.NODE_ENV === "production" ? {
80
80
  target: "eeucz6c5"
81
81
  } : {
@@ -87,7 +87,7 @@ const DropdownGroupWrapper = /* @__PURE__ */ _styled__default.default("div", pro
87
87
  } : {
88
88
  name: "vkf8h3",
89
89
  styles: "position:sticky;top:0px",
90
- map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL3VsdHJhdmlvbGV0L3VsdHJhdmlvbGV0L3BhY2thZ2VzL3VpL3NyYy9jb21wb25lbnRzL1NlbGVjdElucHV0VjIvRHJvcGRvd24udHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQThHdUMiLCJmaWxlIjoiL2hvbWUvcnVubmVyL3dvcmsvdWx0cmF2aW9sZXQvdWx0cmF2aW9sZXQvcGFja2FnZXMvdWkvc3JjL2NvbXBvbmVudHMvU2VsZWN0SW5wdXRWMi9Ecm9wZG93bi50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1c2VUaGVtZSB9IGZyb20gJ0BlbW90aW9uL3JlYWN0J1xuaW1wb3J0IHN0eWxlZCBmcm9tICdAZW1vdGlvbi9zdHlsZWQnXG5pbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VNZW1vLCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgdHlwZSB7XG4gIERpc3BhdGNoLFxuICBLZXlib2FyZEV2ZW50LFxuICBSZWFjdE5vZGUsXG4gIFJlZk9iamVjdCxcbiAgU2V0U3RhdGVBY3Rpb24sXG59IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgQ2hlY2tib3ggfSBmcm9tICcuLi9DaGVja2JveCdcbmltcG9ydCB7IFBvcHVwIH0gZnJvbSAnLi4vUG9wdXAnXG5pbXBvcnQgeyBTa2VsZXRvbiB9IGZyb20gJy4uL1NrZWxldG9uJ1xuaW1wb3J0IHsgU3RhY2sgfSBmcm9tICcuLi9TdGFjaydcbmltcG9ydCB7IFRleHQgfSBmcm9tICcuLi9UZXh0J1xuaW1wb3J0IHsgRGlzcGxheU9wdGlvbiB9IGZyb20gJy4vRHJvcGRvd25PcHRpb24nXG5pbXBvcnQgeyBTZWFyY2hCYXJEcm9wZG93biB9IGZyb20gJy4vU2VhcmNoQmFyRHJvcGRvd24nXG5pbXBvcnQgeyB1c2VTZWxlY3RJbnB1dCB9IGZyb20gJy4vU2VsZWN0SW5wdXRQcm92aWRlcidcbmltcG9ydCB7IHR5cGUgRGF0YVR5cGUsIElOUFVUX1NJWkVfSEVJR0hULCB0eXBlIE9wdGlvblR5cGUgfSBmcm9tICcuL3R5cGVzJ1xuXG5jb25zdCBEUk9QRE9XTl9NQVhfSEVJR0hUID0gMjU2XG5cbmV4cG9ydCB0eXBlIERyb3Bkb3duUHJvcHMgPSB7XG4gIGNoaWxkcmVuOiBSZWFjdE5vZGVcbiAgZW1wdHlTdGF0ZTogUmVhY3ROb2RlXG4gIGRlc2NyaXB0aW9uRGlyZWN0aW9uOiAncm93JyB8ICdjb2x1bW4nXG4gIHNlYXJjaGFibGU6IGJvb2xlYW5cbiAgcGxhY2Vob2xkZXI6IHN0cmluZ1xuICBmb290ZXI/OiBSZWFjdE5vZGVcbiAgcmVmU2VsZWN0OiBSZWZPYmplY3Q8SFRNTERpdkVsZW1lbnQ+XG4gIGxvYWRNb3JlPzogUmVhY3ROb2RlXG4gIG9wdGlvbmFsSW5mb1BsYWNlbWVudDogJ2xlZnQnIHwgJ3JpZ2h0J1xuICBpc0xvYWRpbmc/OiBib29sZWFuXG4gIHNpemU6ICdzbWFsbCcgfCAnbWVkaXVtJyB8ICdsYXJnZSdcbn1cblxuZXhwb3J0IHR5cGUgQ3JlYXRlRHJvcGRvd25Qcm9wcyA9IHtcbiAgaXNFbXB0eTogYm9vbGVhblxuICBlbXB0eVN0YXRlOiBSZWFjdE5vZGVcbiAgZGVzY3JpcHRpb25EaXJlY3Rpb246ICdyb3cnIHwgJ2NvbHVtbidcbiAgbG9hZE1vcmU/OiBSZWFjdE5vZGVcbiAgb3B0aW9uYWxJbmZvUGxhY2VtZW50OiAnbGVmdCcgfCAncmlnaHQnXG4gIGRlZmF1bHRTZWFyY2hWYWx1ZTogc3RyaW5nIHwgbnVsbFxuICBpc0xvYWRpbmc/OiBib29sZWFuXG59XG5cbmNvbnN0IE5PTl9TRUFSQ0hBQkxFX0tFWVMgPSBbXG4gICdUYWInLFxuICAnICcsXG4gICdFbnRlcicsXG4gICdDYXBzTG9jaycsXG4gICdTaGlmdCcsXG4gICdBcnJvd0Rvd24nLFxuICAnQXJyb3dVcCcsXG4gICdBcnJvd0xlZnQnLFxuICAnQXJyb3dSaWdodCcsXG4gICdFc2NhcGUnLFxuXVxuXG5jb25zdCBTdHlsZWRQb3B1cCA9IHN0eWxlZChQb3B1cClgXG4gIHdpZHRoOiAxMDAlO1xuICBtaW4td2lkdGg6IDMyMHB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5vdGhlci5lbGV2YXRpb24uYmFja2dyb3VuZC5yYWlzZWR9O1xuICBjb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMubmV1dHJhbC50ZXh0fTtcbiAgYm94LXNoYWRvdzogJHsoeyB0aGVtZSB9KSA9PiBgJHt0aGVtZS5zaGFkb3dzLnJhaXNlZFswXX0sICR7dGhlbWUuc2hhZG93cy5yYWlzZWRbMV19YH07XG4gIHBhZGRpbmc6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMF19O1xuICBtYXJnaW4tYm90dG9tOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzEwXX07XG5gXG5cbmNvbnN0IERyb3Bkb3duQ29udGFpbmVyID0gc3R5bGVkKFN0YWNrKTx7ICdkYXRhLWdyb3VwZWQnOiBib29sZWFuIH0+YFxuICBtYXgtaGVpZ2h0OiAke0RST1BET1dOX01BWF9IRUlHSFR9cHg7XG4gIG92ZXJmbG93LXk6IHNjcm9sbDtcbiAgcGFkZGluZzogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVswXX07XG4gIHBhZGRpbmctYm90dG9tOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzAuNV19O1xuICBwYWRkaW5nLXRvcDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVswLjVdfTtcblxuICAmW2RhdGEtZ3JvdXBlZD1cInRydWVcIl0ge1xuICAgIHBhZGRpbmctdG9wOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzBdfTtcbiAgfVxuYFxuY29uc3QgRHJvcGRvd25Hcm91cCA9IHN0eWxlZC5idXR0b248eyAnZGF0YS1zZWxlY3Rncm91cCc6IGJvb2xlYW4gfT5gXG4gIGRpc3BsYXk6IGZsZXg7XG4gIHdpZHRoOiAxMDAlO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGxlZnQ7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGJvcmRlcjogbm9uZTtcbiAgYmFja2dyb3VuZC1jb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMubmV1dHJhbC5iYWNrZ3JvdW5kV2Vha307XG4gIHBvc2l0aW9uOiBzdGlja3k7XG4gIHRvcDogMHB4O1xuICBwYWRkaW5nLXJpZ2h0OiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzJdfTtcbiAgcGFkZGluZy1sZWZ0OiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzJdfTtcbiAgaGVpZ2h0OiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzRdfTtcbiAgdGV4dC1hbGlnbjogbGVmdDtcbiAgbWFyZ2luLWJvdHRvbTogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsnMC4yNSddfTtcblxuICAmOmZvY3VzIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5uZXV0cmFsLmJhY2tncm91bmRXZWFrfTtcbiAgICBvdXRsaW5lOiBub25lO1xuICB9XG5cbiAgJltkYXRhLXNlbGVjdGdyb3VwPSd0cnVlJ10ge1xuICAgIHBhZGRpbmctbGVmdDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsyXX07XG4gICAgYm9yZGVyLWxlZnQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMC41XX0gc29saWQgJHsoeyB0aGVtZSB9KSA9PlxuICAgICAgdGhlbWUuY29sb3JzLm5ldXRyYWwuYmFja2dyb3VuZFdlYWt9O1xuICB9XG5cbiAgJltkYXRhLXNlbGVjdGdyb3VwPSd0cnVlJ106Zm9jdXMge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwuYmFja2dyb3VuZEhvdmVyfTtcbiAgfVxuYFxuY29uc3QgRHJvcGRvd25Hcm91cFdyYXBwZXIgPSBzdHlsZWQuZGl2YFxuICBwb3NpdGlvbjogc3RpY2t5O1xuICB0b3A6IDBweDtcbmBcbmNvbnN0IERyb3Bkb3duSXRlbSA9IHN0eWxlZC5kaXY8e1xuICAnYXJpYS1zZWxlY3RlZCc6IGJvb2xlYW5cbiAgJ2FyaWEtZGlzYWJsZWQnOiBib29sZWFuXG59PmBcbiAgdGV4dC1hbGlnbjpsZWZ0O1xuICBib3JkZXI6IG5vbmU7XG4gIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm90aGVyLmVsZXZhdGlvbi5iYWNrZ3JvdW5kLnJhaXNlZH07XG5cbiAgcGFkZGluZzogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsnMS41J119ICR7KHsgdGhlbWUgfSkgPT5cbiAgICB0aGVtZS5zcGFjZVsnMiddfSAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWycxLjUnXX0gJHsoeyB0aGVtZSB9KSA9PlxuICAgIHRoZW1lLnNwYWNlWycyJ119O1xuICBtYXJnaW4tbGVmdDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsnMC41J119O1xuICBtYXJnaW4tcmlnaHQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbJzAuNSddfTtcblxuICBjb2xvcjogICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwudGV4dH07XG4gIGJvcmRlci1yYWRpdXM6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUucmFkaWkuZGVmYXVsdH07XG5cbiAgJjpob3ZlciwgOmZvY3VzIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5wcmltYXJ5LmJhY2tncm91bmR9O1xuICAgIGNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5wcmltYXJ5LnRleHR9O1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBvdXRsaW5lOiBub25lO1xuICB9XG5cbiAgJlthcmlhLXNlbGVjdGVkPSd0cnVlJ10ge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLnByaW1hcnkuYmFja2dyb3VuZH07XG4gIH1cblxuICAmW2FyaWEtZGlzYWJsZWQ9XCJ0cnVlXCJdIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5uZXV0cmFsLmJhY2tncm91bmREaXNhYmxlZH07XG4gICAgY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwudGV4dERpc2FibGVkfTtcbiAgfVxuXG4gICZbYXJpYS1kaXNhYmxlZD1cInRydWVcIl06aG92ZXIsIFthcmlhLWRpc2FibGVkPVwidHJ1ZVwiXTpmb2N1cyB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHsoeyB0aGVtZSB9KSA9PlxuICAgICAgdGhlbWUuY29sb3JzLm5ldXRyYWwuYmFja2dyb3VuZFN0cm9uZ0Rpc2FibGVkfTtcbiAgICBjb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMubmV1dHJhbC50ZXh0U3Ryb25nRGlzYWJsZWR9O1xuICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgfVxuYFxuXG5jb25zdCBQb3B1cEZvb3RlciA9IHN0eWxlZC5kaXZgXG4gIHdpZHRoOiAxMDAlO1xuICBwYWRkaW5nOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzEuNV19ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMl19XG4gICAgJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsxLjVdfSAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzJdfTtcbiAgYm94LXNoYWRvdzogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zaGFkb3dzLmRyb3Bkb3dufTtcbmBcbmNvbnN0IFN0eWxlZENoZWNrYm94ID0gc3R5bGVkKENoZWNrYm94KWBcbiAgd2lkdGg6IDEwMCU7XG4gIHBvc2l0aW9uOiBzdGF0aWM7XG4gIHRleHQtYWxpZ246IGxlZnQ7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuYCAvLyBwb2ludGVyLWV2ZW50czogbm9uZSBwcmV2ZW50cyBhbnkgZXJyb3Igd2hlbiB1c2luZyB0aGUgY2hlY2tib3ggaW4gYSBmb3JtIHNpbmNlIGl0IGlzIGFuIHVubmFtZWQgaW5wdXRcblxuY29uc3QgRW1wdHlTdGF0ZSA9IHN0eWxlZChTdGFjaylgXG4gIHBhZGRpbmc6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMl19O1xuYFxuY29uc3QgTG9hZE1vcmUgPSBzdHlsZWQoU3RhY2spYFxuICBwYWRkaW5nOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzAuNV19O1xuYFxuXG5jb25zdCBtb3ZlRm9jdXNEb3duID0gKCkgPT4ge1xuICBjb25zdCBvcHRpb25zID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcbiAgICAnI2l0ZW1zID4gZGl2W3JvbGU9XCJvcHRpb25cIl06bm90KFtkaXNhYmxlZF0pJyxcbiAgKVxuICBjb25zdCBhY3RpdmVJdGVtID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudFxuICBpZiAob3B0aW9ucykge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgb3B0aW9ucz8ubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgIGNvbnN0IGxpc3RMZW5ndGggPSBvcHRpb25zLmxlbmd0aFxuICAgICAgaWYgKGFjdGl2ZUl0ZW0gPT09IG9wdGlvbnNbaV0gJiYgYWN0aXZlSXRlbSAhPT0gb3B0aW9uc1tsaXN0TGVuZ3RoIC0gMV0pIHtcbiAgICAgICAgOyhvcHRpb25zW2kgKyAxXSBhcyBIVE1MRWxlbWVudCkuZm9jdXMoKVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuY29uc3QgbW92ZUZvY3VzVXAgPSAoKSA9PiB7XG4gIGNvbnN0IG9wdGlvbnMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFxuICAgICcjaXRlbXMgPiBkaXZbcm9sZT1cIm9wdGlvblwiXTpub3QoW2Rpc2FibGVkXSknLFxuICApXG4gIGNvbnN0IGFjdGl2ZUl0ZW0gPSBkb2N1bWVudC5hY3RpdmVFbGVtZW50XG5cbiAgaWYgKG9wdGlvbnMpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG9wdGlvbnMubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgIGlmIChhY3RpdmVJdGVtID09PSBvcHRpb25zW2ldICYmIGFjdGl2ZUl0ZW0gIT09IG9wdGlvbnNbMF0pIHtcbiAgICAgICAgOyhvcHRpb25zW2kgLSAxXSBhcyBIVE1MRWxlbWVudCkuZm9jdXMoKVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuY29uc3QgaGFuZGxlS2V5RG93blNlbGVjdCA9IChldmVudDogS2V5Ym9hcmRFdmVudDxIVE1MRGl2RWxlbWVudD4pID0+IHtcbiAgaWYgKGV2ZW50LmtleSA9PT0gJ0Fycm93RG93bicpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgbW92ZUZvY3VzRG93bigpXG4gIH1cblxuICBpZiAoZXZlbnQua2V5ID09PSAnQXJyb3dVcCcpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgbW92ZUZvY3VzVXAoKVxuICB9XG59XG5jb25zdCBoYW5kbGVDbGlja091dHNpZGUgPSAoXG4gIGV2ZW50OiBNb3VzZUV2ZW50LFxuICByZWY6IFJlZk9iamVjdDxIVE1MRGl2RWxlbWVudD4sXG4gIHNldElzRHJvcGRvd25WaXNpYmlsZTogRGlzcGF0Y2g8U2V0U3RhdGVBY3Rpb248Ym9vbGVhbj4+LFxuICByZWZTZWxlY3Q6IFJlZk9iamVjdDxIVE1MRGl2RWxlbWVudD4sXG4gIG9uU2VhcmNoOiBEaXNwYXRjaDxTZXRTdGF0ZUFjdGlvbjxEYXRhVHlwZT4+LFxuICBvcHRpb25zOiBEYXRhVHlwZSxcbikgPT4ge1xuICBpZiAoXG4gICAgcmVmLmN1cnJlbnQgJiZcbiAgICAhcmVmLmN1cnJlbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0IGFzIE5vZGUpICYmXG4gICAgIXJlZlNlbGVjdC5jdXJyZW50Py5jb250YWlucyhldmVudC50YXJnZXQgYXMgTm9kZSlcbiAgKSB7XG4gICAgc2V0SXNEcm9wZG93blZpc2liaWxlKGZhbHNlKSAvLyBoaWRlIGRyb3Bkb3duIHdoZW4gY2xpY2tpbmcgb3V0c2lkZSBvZiB0aGUgZHJvcGRvd25cbiAgICBvblNlYXJjaChvcHRpb25zKSAvLyByZXNldCBkaXNwbGF5ZWQgb3B0aW9ucyB0byBkZWZhdWx0IHdoZW4gZHJvcGRvd24gaXMgaGlkZGVuXG4gIH1cbn1cblxuY29uc3QgaGFuZGxlS2V5RG93biA9IChcbiAgZXZlbnQ6IGdsb2JhbFRoaXMuS2V5Ym9hcmRFdmVudCxcbiAgcmVmOiBSZWZPYmplY3Q8SFRNTERpdkVsZW1lbnQ+LFxuICBvcHRpb25zOiBEYXRhVHlwZSxcbiAgc2VhcmNoQmFyQWN0aXZlOiBib29sZWFuLFxuICBzZXRTZWFyY2g6IERpc3BhdGNoPFNldFN0YXRlQWN0aW9uPHN0cmluZz4+LFxuICBzZXREZWZhdWx0U2VhcmNoOiBEaXNwYXRjaDxTZXRTdGF0ZUFjdGlvbjxzdHJpbmcgfCBudWxsPj4sXG4gIHNlYXJjaDogc3RyaW5nLFxuKSA9PiB7XG4gIC8vIERlYWxzIHdpdGggZGVmYXVsdCBzZWFyY2hcbiAgaWYgKFxuICAgIHJlZi5jdXJyZW50ICYmXG4gICAgIXNlYXJjaEJhckFjdGl2ZSAmJlxuICAgICFOT05fU0VBUkNIQUJMRV9LRVlTLmluY2x1ZGVzKGV2ZW50LmtleSkgJiZcbiAgICBkb2N1bWVudC5hY3RpdmVFbGVtZW50Py5hcmlhTGFiZWwgIT09ICdzZWFyY2gtYmFyJ1xuICApIHtcbiAgICBjb25zdCBjdXJyZW50U2VhcmNoID0gc2VhcmNoICsgZXZlbnQua2V5XG4gICAgc2V0U2VhcmNoKGN1cnJlbnRTZWFyY2gpXG4gICAgcmVmLmN1cnJlbnQuZm9jdXMoKVxuICAgIGlmICghQXJyYXkuaXNBcnJheShvcHRpb25zKSkge1xuICAgICAgY29uc3QgY2xvc2VzdE9wdGlvbnMgPSB7IC4uLm9wdGlvbnMgfVxuICAgICAgT2JqZWN0LmtleXMoY2xvc2VzdE9wdGlvbnMpLm1hcCgoZ3JvdXA6IHN0cmluZykgPT4ge1xuICAgICAgICBjbG9zZXN0T3B0aW9uc1tncm91cF0gPSBjbG9zZXN0T3B0aW9uc1tncm91cF0uZmlsdGVyKG9wdGlvbiA9PlxuICAgICAgICAgIG9wdGlvbi5zZWFyY2hUZXh0XG4gICAgICAgICAgICA/IG9wdGlvbi5zZWFyY2hUZXh0LnRvTG9jYWxlTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChjdXJyZW50U2VhcmNoKVxuICAgICAgICAgICAgOiBvcHRpb24udmFsdWUudG9Mb2NhbGVMb3dlckNhc2UoKS5zdGFydHNXaXRoKGN1cnJlbnRTZWFyY2gpLFxuICAgICAgICApXG5cbiAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgIH0pXG4gICAgICBjb25zdCBjbG9zZXN0T3B0aW9uID0gY2xvc2VzdE9wdGlvbnNbT2JqZWN0LmtleXMoY2xvc2VzdE9wdGlvbnMpWzBdXVswXVxuICAgICAgaWYgKGNsb3Nlc3RPcHRpb24pIHtcbiAgICAgICAgc2V0RGVmYXVsdFNlYXJjaChjbG9zZXN0T3B0aW9uLnNlYXJjaFRleHQgPz8gY2xvc2VzdE9wdGlvbi52YWx1ZSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNldERlZmF1bHRTZWFyY2gobnVsbClcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgY2xvc2VzdE9wdGlvbiA9IFsuLi5vcHRpb25zXS5maWx0ZXIob3B0aW9uID0+XG4gICAgICAgIG9wdGlvbi5zZWFyY2hUZXh0XG4gICAgICAgICAgPyBvcHRpb24uc2VhcmNoVGV4dC50b0xvY2FsZUxvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoY3VycmVudFNlYXJjaClcbiAgICAgICAgICA6IG9wdGlvbi52YWx1ZS50b0xvY2FsZUxvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoY3VycmVudFNlYXJjaCksXG4gICAgICApWzBdXG4gICAgICBpZiAoY2xvc2VzdE9wdGlvbikge1xuICAgICAgICBzZXREZWZhdWx0U2VhcmNoKGNsb3Nlc3RPcHRpb24uc2VhcmNoVGV4dCA/PyBjbG9zZXN0T3B0aW9uLnZhbHVlKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2V0RGVmYXVsdFNlYXJjaChudWxsKVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuY29uc3QgQ3JlYXRlRHJvcGRvd24gPSAoe1xuICBpc0VtcHR5LFxuICBlbXB0eVN0YXRlLFxuICBkZXNjcmlwdGlvbkRpcmVjdGlvbixcbiAgbG9hZE1vcmUsXG4gIG9wdGlvbmFsSW5mb1BsYWNlbWVudCxcbiAgZGVmYXVsdFNlYXJjaFZhbHVlLFxuICBpc0xvYWRpbmcsXG59OiBDcmVhdGVEcm9wZG93blByb3BzKSA9PiB7XG4gIGNvbnN0IHtcbiAgICBzZXRJc0Ryb3Bkb3duVmlzaWJsZSxcbiAgICBvbkNoYW5nZSxcbiAgICBvcHRpb25zLFxuICAgIG11bHRpc2VsZWN0LFxuICAgIHNlbGVjdEFsbCxcbiAgICBzZWxlY3RBbGxHcm91cCxcbiAgICBkaXNwbGF5ZWRPcHRpb25zLFxuICAgIHNldFNlbGVjdGVkRGF0YSxcbiAgICBzZWxlY3RlZERhdGEsXG4gIH0gPSB1c2VTZWxlY3RJbnB1dCgpXG4gIGNvbnN0IGZvY3VzZWRJdGVtUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGRlZmF1bHRTZWFyY2hWYWx1ZSAmJiBmb2N1c2VkSXRlbVJlZj8uY3VycmVudCkge1xuICAgICAgZm9jdXNlZEl0ZW1SZWYuY3VycmVudC5mb2N1cygpXG4gICAgfVxuICB9LCBbZGVmYXVsdFNlYXJjaFZhbHVlXSlcblxuICBpZiAoaXNFbXB0eSkge1xuICAgIHJldHVybiAoXG4gICAgICA8RW1wdHlTdGF0ZSBnYXA9ezJ9IGFsaWduSXRlbXM9XCJjZW50ZXJcIj5cbiAgICAgICAge2VtcHR5U3RhdGUgPz8gKFxuICAgICAgICAgIDxUZXh0IHZhcmlhbnQ9XCJib2R5U3Ryb25nXCIgYXM9XCJwXCI+XG4gICAgICAgICAgICBObyBvcHRpb25zXG4gICAgICAgICAgPC9UZXh0PlxuICAgICAgICApfVxuICAgICAgPC9FbXB0eVN0YXRlPlxuICAgIClcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZUNsaWNrID0gKGNsaWNrZWRPcHRpb246IE9wdGlvblR5cGUsIGdyb3VwPzogc3RyaW5nKSA9PiB7XG4gICAgc2V0U2VsZWN0ZWREYXRhKHsgdHlwZTogJ3NlbGVjdE9wdGlvbicsIGNsaWNrZWRPcHRpb24sIGdyb3VwIH0pXG4gICAgaWYgKG11bHRpc2VsZWN0KSB7XG4gICAgICBpZiAoc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzLmluY2x1ZGVzKGNsaWNrZWRPcHRpb24udmFsdWUpKSB7XG4gICAgICAgIG9uQ2hhbmdlPy4oXG4gICAgICAgICAgc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzLmZpbHRlcihcbiAgICAgICAgICAgIHZhbCA9PiB2YWwgIT09IGNsaWNrZWRPcHRpb24udmFsdWUsXG4gICAgICAgICAgKSxcbiAgICAgICAgKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb25DaGFuZ2U/LihbLi4uc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzLCBjbGlja2VkT3B0aW9uLnZhbHVlXSlcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgb25DaGFuZ2U/LihjbGlja2VkT3B0aW9uLnZhbHVlKVxuICAgIH1cbiAgICBzZXRJc0Ryb3Bkb3duVmlzaWJsZShtdWx0aXNlbGVjdCkgLy8gaGlkZSB0aGUgZHJvcGRvd24gb24gY2xpY2sgd2hlbiBzaW5nbGUgc2VsZWN0IG9ubHlcbiAgfVxuXG4gIGNvbnN0IHNlbGVjdEFsbE9wdGlvbnMgPSAoKSA9PiB7XG4gICAgaWYgKG11bHRpc2VsZWN0KSB7XG4gICAgICBzZXRTZWxlY3RlZERhdGEoeyB0eXBlOiAnc2VsZWN0QWxsJyB9KVxuICAgICAgaWYgKHNlbGVjdGVkRGF0YS5hbGxTZWxlY3RlZCAmJiBvbkNoYW5nZSkge1xuICAgICAgICBvbkNoYW5nZShbXSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGFsbFZhbHVlczogT3B0aW9uVHlwZVtdID0gW11cbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KG9wdGlvbnMpKSB7XG4gICAgICAgICAgT2JqZWN0LmtleXMob3B0aW9ucykubWFwKChncm91cDogc3RyaW5nKSA9PlxuICAgICAgICAgICAgb3B0aW9uc1tncm91cF0ubWFwKG9wdGlvbiA9PiB7XG4gICAgICAgICAgICAgIGlmICghb3B0aW9uLmRpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgYWxsVmFsdWVzLnB1c2gob3B0aW9uKVxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIClcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvcHRpb25zLm1hcChvcHRpb24gPT4gYWxsVmFsdWVzLnB1c2gob3B0aW9uKSlcbiAgICAgICAgfVxuICAgICAgICBvbkNoYW5nZT8uKGFsbFZhbHVlcy5tYXAodmFsdWUgPT4gdmFsdWUudmFsdWUpKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGhhbmRsZVNlbGVjdEdyb3VwID0gKGdyb3VwOiBzdHJpbmcpID0+IHtcbiAgICBpZiAobXVsdGlzZWxlY3QpIHtcbiAgICAgIHNldFNlbGVjdGVkRGF0YSh7IHR5cGU6ICdzZWxlY3RHcm91cCcsIHNlbGVjdGVkR3JvdXA6IGdyb3VwIH0pXG4gICAgICBpZiAoIUFycmF5LmlzQXJyYXkob3B0aW9ucykpIHtcbiAgICAgICAgaWYgKHNlbGVjdGVkRGF0YS5zZWxlY3RlZEdyb3Vwcy5pbmNsdWRlcyhncm91cCkpIHtcbiAgICAgICAgICBjb25zdCBuZXdTZWxlY3RlZFZhbHVlcyA9IFsuLi5zZWxlY3RlZERhdGEuc2VsZWN0ZWRWYWx1ZXNdLmZpbHRlcihcbiAgICAgICAgICAgIHNlbGVjdGVkVmFsdWUgPT5cbiAgICAgICAgICAgICAgIW9wdGlvbnNbZ3JvdXBdLmZpbmQob3B0aW9uID0+IG9wdGlvbi52YWx1ZSA9PT0gc2VsZWN0ZWRWYWx1ZSksXG4gICAgICAgICAgKVxuICAgICAgICAgIG9uQ2hhbmdlPy4obmV3U2VsZWN0ZWRWYWx1ZXMpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgbmV3U2VsZWN0ZWRWYWx1ZXMgPSBbLi4uc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzXVxuXG4gICAgICAgICAgb3B0aW9uc1tncm91cF0ubWFwKG9wdGlvbiA9PlxuICAgICAgICAgICAgbmV3U2VsZWN0ZWRWYWx1ZXMuaW5jbHVkZXMob3B0aW9uLnZhbHVlKSB8fCBvcHRpb24uZGlzYWJsZWRcbiAgICAgICAgICAgICAgPyBudWxsXG4gICAgICAgICAgICAgIDogbmV3U2VsZWN0ZWRWYWx1ZXMucHVzaChvcHRpb24udmFsdWUpLFxuICAgICAgICAgIClcbiAgICAgICAgICBvbkNoYW5nZT8uKG5ld1NlbGVjdGVkVmFsdWVzKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuICFBcnJheS5pc0FycmF5KGRpc3BsYXllZE9wdGlvbnMpID8gKFxuICAgIDxEcm9wZG93bkNvbnRhaW5lclxuICAgICAgcm9sZT1cImxpc3Rib3hcIlxuICAgICAgaWQ9XCJzZWxlY3QtZHJvcGRvd25cIlxuICAgICAgb25LZXlEb3duPXtoYW5kbGVLZXlEb3duU2VsZWN0fVxuICAgICAgZGF0YS1ncm91cGVkXG4gICAgPlxuICAgICAge2lzTG9hZGluZyA/IChcbiAgICAgICAgPFNrZWxldG9uIHZhcmlhbnQ9XCJibG9ja1wiIC8+XG4gICAgICApIDogKFxuICAgICAgICA8PlxuICAgICAgICAgIHtzZWxlY3RBbGwgJiYgbXVsdGlzZWxlY3QgPyAoXG4gICAgICAgICAgICA8U3RhY2sgaWQ9XCJpdGVtc1wiPlxuICAgICAgICAgICAgICA8RHJvcGRvd25JdGVtXG4gICAgICAgICAgICAgICAgYXJpYS1kaXNhYmxlZD17ZmFsc2V9XG4gICAgICAgICAgICAgICAgYXJpYS1zZWxlY3RlZD17c2VsZWN0ZWREYXRhLmFsbFNlbGVjdGVkfVxuICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJzZWxlY3QtYWxsXCJcbiAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD1cInNlbGVjdC1hbGxcIlxuICAgICAgICAgICAgICAgIGlkPVwic2VsZWN0LWFsbFwiXG4gICAgICAgICAgICAgICAgdGFiSW5kZXg9ezB9XG4gICAgICAgICAgICAgICAgcm9sZT1cIm9wdGlvblwiXG4gICAgICAgICAgICAgICAgb25LZXlEb3duPXtldmVudCA9PlxuICAgICAgICAgICAgICAgICAgWycgJywgJ0VudGVyJ10uaW5jbHVkZXMoZXZlbnQua2V5KSA/IHNlbGVjdEFsbE9wdGlvbnMoKSA6IG51bGxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgb25DbGljaz17c2VsZWN0QWxsT3B0aW9uc31cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxTdHlsZWRDaGVja2JveFxuICAgICAgICAgICAgICAgICAgY2hlY2tlZD17c2VsZWN0ZWREYXRhLmFsbFNlbGVjdGVkfVxuICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgdmFsdWU9XCJzZWxlY3QtYWxsXCJcbiAgICAgICAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwic2VsZWN0LWFsbC1jaGVja2JveFwiXG4gICAgICAgICAgICAgICAgICB0YWJJbmRleD17LTF9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPFN0YWNrIGRpcmVjdGlvbj1cImNvbHVtblwiPlxuICAgICAgICAgICAgICAgICAgICA8VGV4dCBhcz1cInNwYW5cIiB2YXJpYW50PVwiYm9keVwiIHBsYWNlbWVudD1cImxlZnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICB7c2VsZWN0QWxsLmxhYmVsfVxuICAgICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgICAgIDxUZXh0XG4gICAgICAgICAgICAgICAgICAgICAgYXM9XCJzcGFuXCJcbiAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50PVwiYm9keVNtYWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICBzZW50aW1lbnQ9XCJuZXV0cmFsXCJcbiAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJsZWZ0XCJcbiAgICAgICAgICAgICAgICAgICAgICBwcm9taW5lbmNlPVwid2Vha1wiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7c2VsZWN0QWxsLmRlc2NyaXB0aW9ufVxuICAgICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgICA8L1N0YWNrPlxuICAgICAgICAgICAgICAgIDwvU3R5bGVkQ2hlY2tib3g+XG4gICAgICAgICAgICAgIDwvRHJvcGRvd25JdGVtPlxuICAgICAgICAgICAgPC9TdGFjaz5cbiAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICB7T2JqZWN0LmtleXMoZGlzcGxheWVkT3B0aW9ucykubWFwKChncm91cCwgaW5kZXgpID0+IChcbiAgICAgICAgICAgIDxTdGFjayBrZXk9e2dyb3VwfSBnYXA9ezAuMjV9PlxuICAgICAgICAgICAgICB7ZGlzcGxheWVkT3B0aW9uc1tncm91cF0ubGVuZ3RoID4gMCA/IChcbiAgICAgICAgICAgICAgICA8RHJvcGRvd25Hcm91cFdyYXBwZXIgaWQ9e3NlbGVjdEFsbEdyb3VwID8gJ2l0ZW1zJyA6IHVuZGVmaW5lZH0+XG4gICAgICAgICAgICAgICAgICB7Z3JvdXAgPyAoXG4gICAgICAgICAgICAgICAgICAgIDxEcm9wZG93bkdyb3VwXG4gICAgICAgICAgICAgICAgICAgICAga2V5PXtncm91cH1cbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICB0YWJJbmRleD17c2VsZWN0QWxsR3JvdXAgPyAwIDogLTF9XG4gICAgICAgICAgICAgICAgICAgICAgb25LZXlEb3duPXtldmVudCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoWycgJywgJ0VudGVyJ10uaW5jbHVkZXMoZXZlbnQua2V5KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZVNlbGVjdEdyb3VwKGdyb3VwKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgZGF0YS1zZWxlY3Rncm91cD17c2VsZWN0QWxsR3JvdXB9XG4gICAgICAgICAgICAgICAgICAgICAgcm9sZT1cImdyb3VwXCJcbiAgICAgICAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD17YGdyb3VwLSR7aW5kZXh9YH1cbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0QWxsR3JvdXAgPyBoYW5kbGVTZWxlY3RHcm91cChncm91cCkgOiBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAge3NlbGVjdEFsbEdyb3VwID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgPFN0eWxlZENoZWNrYm94XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e3NlbGVjdGVkRGF0YS5zZWxlY3RlZEdyb3Vwcy5pbmNsdWRlcyhncm91cCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2dyb3VwfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD1cInNlbGVjdC1ncm91cFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRhYkluZGV4PXstMX1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPFRleHQgdmFyaWFudD1cImNhcHRpb25cIiBhcz1cInNwYW5cIiBwbGFjZW1lbnQ9XCJsZWZ0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2dyb3VwLnRvVXBwZXJDYXNlKCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvU3R5bGVkQ2hlY2tib3g+XG4gICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxUZXh0XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJjYXB0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYXM9XCJzcGFuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwibGVmdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNlbnRpbWVudD1cIm5ldXRyYWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7Z3JvdXAudG9VcHBlckNhc2UoKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICA8L0Ryb3Bkb3duR3JvdXA+XG4gICAgICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgICAgICA8L0Ryb3Bkb3duR3JvdXBXcmFwcGVyPlxuICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgICAgPFN0YWNrIGlkPVwiaXRlbXNcIiBnYXA9XCIwLjI1XCI+XG4gICAgICAgICAgICAgICAge2Rpc3BsYXllZE9wdGlvbnNbZ3JvdXBdLm1hcCgob3B0aW9uLCBpbmRleE9wdGlvbikgPT4gKFxuICAgICAgICAgICAgICAgICAgPERyb3Bkb3duSXRlbVxuICAgICAgICAgICAgICAgICAgICBrZXk9e29wdGlvbi52YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgYXJpYS1kaXNhYmxlZD17ISFvcHRpb24uZGlzYWJsZWR9XG4gICAgICAgICAgICAgICAgICAgIHRhYkluZGV4PXshb3B0aW9uLmRpc2FibGVkID8gMCA6IC0xfVxuICAgICAgICAgICAgICAgICAgICBhcmlhLXNlbGVjdGVkPXtcbiAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZERhdGEuc2VsZWN0ZWRWYWx1ZXMuaW5jbHVkZXMob3B0aW9uLnZhbHVlKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICFvcHRpb24uZGlzYWJsZWRcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPXtvcHRpb24udmFsdWV9XG4gICAgICAgICAgICAgICAgICAgIGRhdGEtdGVzdGlkPXtgb3B0aW9uLSR7b3B0aW9uLnZhbHVlfWB9XG4gICAgICAgICAgICAgICAgICAgIGlkPXtgb3B0aW9uLSR7aW5kZXhPcHRpb259YH1cbiAgICAgICAgICAgICAgICAgICAgcm9sZT1cIm9wdGlvblwiXG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoIW9wdGlvbi5kaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlQ2xpY2sob3B0aW9uLCBncm91cClcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgIG9uS2V5RG93bj17ZXZlbnQgPT5cbiAgICAgICAgICAgICAgICAgICAgICBbJyAnLCAnRW50ZXInXS5pbmNsdWRlcyhldmVudC5rZXkpXG4gICAgICAgICAgICAgICAgICAgICAgICA/IGhhbmRsZUNsaWNrKG9wdGlvbiwgZ3JvdXApXG4gICAgICAgICAgICAgICAgICAgICAgICA6IG51bGxcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZWY9e1xuICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbi52YWx1ZSA9PT0gZGVmYXVsdFNlYXJjaFZhbHVlIHx8XG4gICAgICAgICAgICAgICAgICAgICAgb3B0aW9uLnNlYXJjaFRleHQgPT09IGRlZmF1bHRTZWFyY2hWYWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgPyBmb2N1c2VkSXRlbVJlZlxuICAgICAgICAgICAgICAgICAgICAgICAgOiBudWxsXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge211bHRpc2VsZWN0ID8gKFxuICAgICAgICAgICAgICAgICAgICAgIDxTdHlsZWRDaGVja2JveFxuICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tlZD17XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkRGF0YS5zZWxlY3RlZFZhbHVlcy5pbmNsdWRlcyhvcHRpb24udmFsdWUpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICFvcHRpb24uZGlzYWJsZWRcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtvcHRpb24uZGlzYWJsZWR9XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17b3B0aW9uLnZhbHVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgdGFiSW5kZXg9ey0xfVxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxEaXNwbGF5T3B0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbj17b3B0aW9ufVxuICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbkRpcmVjdGlvbj17ZGVzY3JpcHRpb25EaXJlY3Rpb259XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsSW5mb1BsYWNlbWVudD17b3B0aW9uYWxJbmZvUGxhY2VtZW50fVxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8L1N0eWxlZENoZWNrYm94PlxuICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgIDxEaXNwbGF5T3B0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb249e29wdGlvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uRGlyZWN0aW9uPXtkZXNjcmlwdGlvbkRpcmVjdGlvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsSW5mb1BsYWNlbWVudD17b3B0aW9uYWxJbmZvUGxhY2VtZW50fVxuICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICA8L0Ryb3Bkb3duSXRlbT5cbiAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgPC9TdGFjaz5cbiAgICAgICAgICAgIDwvU3RhY2s+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvPlxuICAgICAgKX1cbiAgICAgIHtsb2FkTW9yZSA/IDxMb2FkTW9yZT57bG9hZE1vcmV9PC9Mb2FkTW9yZT4gOiBudWxsfVxuICAgIDwvRHJvcGRvd25Db250YWluZXI+XG4gICkgOiAoXG4gICAgPERyb3Bkb3duQ29udGFpbmVyXG4gICAgICByb2xlPVwibGlzdGJveFwiXG4gICAgICB0YWJJbmRleD17LTF9XG4gICAgICBpZD1cInNlbGVjdC1kcm9wZG93blwiXG4gICAgICBvbktleURvd249e2hhbmRsZUtleURvd25TZWxlY3R9XG4gICAgICBnYXA9ezAuMjV9XG4gICAgICBkYXRhLWdyb3VwZWQ9e2ZhbHNlfVxuICAgID5cbiAgICAgIHtzZWxlY3RBbGwgJiYgbXVsdGlzZWxlY3QgPyAoXG4gICAgICAgIDxTdGFjayBpZD1cIml0ZW1zXCIgZ2FwPXswLjI1fSB0YWJJbmRleD17LTF9PlxuICAgICAgICAgIDxEcm9wZG93bkl0ZW1cbiAgICAgICAgICAgIGFyaWEtZGlzYWJsZWQ9e2ZhbHNlfVxuICAgICAgICAgICAgYXJpYS1zZWxlY3RlZD17c2VsZWN0ZWREYXRhLmFsbFNlbGVjdGVkfVxuICAgICAgICAgICAgYXJpYS1sYWJlbD1cInNlbGVjdC1hbGxcIlxuICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJzZWxlY3QtYWxsXCJcbiAgICAgICAgICAgIHRhYkluZGV4PXswfVxuICAgICAgICAgICAgcm9sZT1cIm9wdGlvblwiXG4gICAgICAgICAgICBvbktleURvd249e2V2ZW50ID0+XG4gICAgICAgICAgICAgIFsnICcsICdFbnRlciddLmluY2x1ZGVzKGV2ZW50LmtleSkgPyBzZWxlY3RBbGxPcHRpb25zKCkgOiBudWxsXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvbkNsaWNrPXtzZWxlY3RBbGxPcHRpb25zfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxTdHlsZWRDaGVja2JveFxuICAgICAgICAgICAgICBjaGVja2VkPXtzZWxlY3RlZERhdGEuYWxsU2VsZWN0ZWR9XG4gICAgICAgICAgICAgIGRpc2FibGVkPXtmYWxzZX1cbiAgICAgICAgICAgICAgdmFsdWU9XCJzZWxlY3QtYWxsXCJcbiAgICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJzZWxlY3QtYWxsLWNoZWNrYm94XCJcbiAgICAgICAgICAgICAgdGFiSW5kZXg9ey0xfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8U3RhY2sgZGlyZWN0aW9uPVwiY29sdW1uXCI+XG4gICAgICAgICAgICAgICAgPFRleHQgYXM9XCJzcGFuXCIgdmFyaWFudD1cImJvZHlcIiBwbGFjZW1lbnQ9XCJsZWZ0XCI+XG4gICAgICAgICAgICAgICAgICB7c2VsZWN0QWxsLmxhYmVsfVxuICAgICAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgICAgICA8VGV4dFxuICAgICAgICAgICAgICAgICAgYXM9XCJzcGFuXCJcbiAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJib2R5U21hbGxcIlxuICAgICAgICAgICAgICAgICAgc2VudGltZW50PVwibmV1dHJhbFwiXG4gICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJsZWZ0XCJcbiAgICAgICAgICAgICAgICAgIHByb21pbmVuY2U9XCJ3ZWFrXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICB7c2VsZWN0QWxsLmRlc2NyaXB0aW9ufVxuICAgICAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgICAgPC9TdGFjaz5cbiAgICAgICAgICAgIDwvU3R5bGVkQ2hlY2tib3g+XG4gICAgICAgICAgPC9Ecm9wZG93bkl0ZW0+XG4gICAgICAgIDwvU3RhY2s+XG4gICAgICApIDogbnVsbH1cbiAgICAgIDxTdGFjayBpZD1cIml0ZW1zXCIgZ2FwPXswLjI1fT5cbiAgICAgICAge2lzTG9hZGluZyA/IChcbiAgICAgICAgICA8U2tlbGV0b24gdmFyaWFudD1cImJsb2NrXCIgLz5cbiAgICAgICAgKSA6IChcbiAgICAgICAgICBkaXNwbGF5ZWRPcHRpb25zLm1hcCgob3B0aW9uLCBpbmRleCkgPT4gKFxuICAgICAgICAgICAgPERyb3Bkb3duSXRlbVxuICAgICAgICAgICAgICBrZXk9e29wdGlvbi52YWx1ZX1cbiAgICAgICAgICAgICAgYXJpYS1kaXNhYmxlZD17ISFvcHRpb24uZGlzYWJsZWR9XG4gICAgICAgICAgICAgIGFyaWEtc2VsZWN0ZWQ9e1xuICAgICAgICAgICAgICAgIHNlbGVjdGVkRGF0YS5zZWxlY3RlZFZhbHVlcy5pbmNsdWRlcyhvcHRpb24udmFsdWUpICYmXG4gICAgICAgICAgICAgICAgIW9wdGlvbi5kaXNhYmxlZFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIW9wdGlvbi5kaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgICAgaGFuZGxlQ2xpY2sob3B0aW9uKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgYXJpYS1sYWJlbD17b3B0aW9uLnZhbHVlfVxuICAgICAgICAgICAgICBkYXRhLXRlc3RpZD17YG9wdGlvbi0ke29wdGlvbi52YWx1ZX1gfVxuICAgICAgICAgICAgICBpZD17YG9wdGlvbi0ke2luZGV4fWB9XG4gICAgICAgICAgICAgIHJvbGU9XCJvcHRpb25cIlxuICAgICAgICAgICAgICB0YWJJbmRleD17IW9wdGlvbi5kaXNhYmxlZCA/IDAgOiAtMX1cbiAgICAgICAgICAgICAgcmVmPXtcbiAgICAgICAgICAgICAgICBvcHRpb24udmFsdWUgPT09IGRlZmF1bHRTZWFyY2hWYWx1ZSB8fFxuICAgICAgICAgICAgICAgIG9wdGlvbi5zZWFyY2hUZXh0ID09PSBkZWZhdWx0U2VhcmNoVmFsdWVcbiAgICAgICAgICAgICAgICAgID8gZm9jdXNlZEl0ZW1SZWZcbiAgICAgICAgICAgICAgICAgIDogbnVsbFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIG9uS2V5RG93bj17ZXZlbnQgPT5cbiAgICAgICAgICAgICAgICBbJyAnLCAnRW50ZXInXS5pbmNsdWRlcyhldmVudC5rZXkpID8gaGFuZGxlQ2xpY2sob3B0aW9uKSA6IG51bGxcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7bXVsdGlzZWxlY3QgPyAoXG4gICAgICAgICAgICAgICAgPFN0eWxlZENoZWNrYm94XG4gICAgICAgICAgICAgICAgICBjaGVja2VkPXtcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzLmluY2x1ZGVzKG9wdGlvbi52YWx1ZSkgJiZcbiAgICAgICAgICAgICAgICAgICAgIW9wdGlvbi5kaXNhYmxlZFxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e29wdGlvbi5kaXNhYmxlZH1cbiAgICAgICAgICAgICAgICAgIHZhbHVlPXtvcHRpb24udmFsdWV9XG4gICAgICAgICAgICAgICAgICB0YWJJbmRleD17LTF9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPERpc3BsYXlPcHRpb25cbiAgICAgICAgICAgICAgICAgICAgb3B0aW9uPXtvcHRpb259XG4gICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uRGlyZWN0aW9uPXtkZXNjcmlwdGlvbkRpcmVjdGlvbn1cbiAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWxJbmZvUGxhY2VtZW50PXtvcHRpb25hbEluZm9QbGFjZW1lbnR9XG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvU3R5bGVkQ2hlY2tib3g+XG4gICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgPERpc3BsYXlPcHRpb25cbiAgICAgICAgICAgICAgICAgIG9wdGlvbj17b3B0aW9ufVxuICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb25EaXJlY3Rpb249e2Rlc2NyaXB0aW9uRGlyZWN0aW9ufVxuICAgICAgICAgICAgICAgICAgb3B0aW9uYWxJbmZvUGxhY2VtZW50PXtvcHRpb25hbEluZm9QbGFjZW1lbnR9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvRHJvcGRvd25JdGVtPlxuICAgICAgICAgICkpXG4gICAgICAgICl9XG4gICAgICAgIHtsb2FkTW9yZSA/IDxMb2FkTW9yZT57bG9hZE1vcmV9PC9Mb2FkTW9yZT4gOiBudWxsfVxuICAgICAgPC9TdGFjaz5cbiAgICA8L0Ryb3Bkb3duQ29udGFpbmVyPlxuICApXG59XG5leHBvcnQgY29uc3QgRHJvcGRvd24gPSAoe1xuICBjaGlsZHJlbixcbiAgZW1wdHlTdGF0ZSxcbiAgZGVzY3JpcHRpb25EaXJlY3Rpb24sXG4gIHNlYXJjaGFibGUsXG4gIHBsYWNlaG9sZGVyLFxuICBmb290ZXIsXG4gIHJlZlNlbGVjdCxcbiAgbG9hZE1vcmUsXG4gIG9wdGlvbmFsSW5mb1BsYWNlbWVudCxcbiAgaXNMb2FkaW5nLFxuICBzaXplLFxufTogRHJvcGRvd25Qcm9wcykgPT4ge1xuICBjb25zdCB7XG4gICAgc2V0SXNEcm9wZG93blZpc2libGUsXG4gICAgaXNEcm9wZG93blZpc2libGUsXG4gICAgb25TZWFyY2gsXG4gICAgc2VhcmNoSW5wdXQsXG4gICAgb3B0aW9ucyxcbiAgICBkaXNwbGF5ZWRPcHRpb25zLFxuICB9ID0gdXNlU2VsZWN0SW5wdXQoKVxuICBjb25zdCB0aGVtZSA9IHVzZVRoZW1lKClcbiAgY29uc3QgW3NlYXJjaEJhckFjdGl2ZSwgc2V0U2VhcmNoQmFyQWN0aXZlXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbZGVmYXVsdFNlYXJjaFZhbHVlLCBzZXREZWZhdWx0U2VhcmNoXSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bGw+KG51bGwpXG4gIGNvbnN0IHJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcbiAgY29uc3QgW3NlYXJjaCwgc2V0U2VhcmNoXSA9IHVzZVN0YXRlPHN0cmluZz4oJycpXG4gIGNvbnN0IFttYXhXaWR0aCwgc2V0V2lkdGhdID0gdXNlU3RhdGU8c3RyaW5nIHwgbnVtYmVyPigpXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAocmVmU2VsZWN0LmN1cnJlbnQgJiYgaXNEcm9wZG93blZpc2libGUpIHtcbiAgICAgIGNvbnN0IHBvc2l0aW9uID1cbiAgICAgICAgcmVmU2VsZWN0LmN1cnJlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuYm90dG9tICtcbiAgICAgICAgRFJPUERPV05fTUFYX0hFSUdIVCArXG4gICAgICAgIElOUFVUX1NJWkVfSEVJR0hUW3NpemVdICtcbiAgICAgICAgcGFyc2VJbnQodGhlbWUuc3BhY2VbJzUnXSwgMTApXG4gICAgICBjb25zdCBvdmVyZmxvdyA9IHBvc2l0aW9uIC0gd2luZG93LmlubmVySGVpZ2h0XG4gICAgICBpZiAob3ZlcmZsb3cgPiAwKSB7XG4gICAgICAgIGNvbnN0IG1vZGFsRWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdiYWNrZHJvcC1tb2RhbCcpXG5cbiAgICAgICAgaWYgKG1vZGFsRWxlbWVudCkge1xuICAgICAgICAgIG1vZGFsRWxlbWVudC5zY3JvbGxCeSh7IHRvcDogb3ZlcmZsb3csIGJlaGF2aW9yOiAnc21vb3RoJyB9KVxuICAgICAgICB9IGVsc2Ugd2luZG93LnNjcm9sbEJ5KHsgdG9wOiBvdmVyZmxvdywgYmVoYXZpb3I6ICdzbW9vdGgnIH0pXG4gICAgICB9XG4gICAgfVxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9leGhhdXN0aXZlLWRlcHNcbiAgfSwgW2lzRHJvcGRvd25WaXNpYmxlLCByZWZTZWxlY3QsIHNpemUsIHJlZi5jdXJyZW50XSlcblxuICBjb25zdCByZXNpemVEcm9wZG93biA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoXG4gICAgICByZWZTZWxlY3QuY3VycmVudCAmJlxuICAgICAgcmVmU2VsZWN0LmN1cnJlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGggPiAwXG4gICAgKSB7XG4gICAgICBzZXRXaWR0aChyZWZTZWxlY3QuY3VycmVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aClcbiAgICB9XG4gIH0sIFtyZWZTZWxlY3RdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgcmVzaXplRHJvcGRvd24oKVxuXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHJlc2l6ZURyb3Bkb3duKVxuXG4gICAgcmV0dXJuICgpID0+IHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCByZXNpemVEcm9wZG93bilcbiAgfSwgW3Jlc2l6ZURyb3Bkb3duXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghc2VhcmNoSW5wdXQpIHtcbiAgICAgIG9uU2VhcmNoKG9wdGlvbnMpXG4gICAgfVxuICB9LCBbb25TZWFyY2gsIG9wdGlvbnMsIHNlYXJjaElucHV0XSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghaXNEcm9wZG93blZpc2libGUpIHtcbiAgICAgIHNldERlZmF1bHRTZWFyY2gobnVsbClcbiAgICAgIHNldFNlYXJjaCgnJylcbiAgICB9XG5cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCBldmVudCA9PlxuICAgICAgaGFuZGxlQ2xpY2tPdXRzaWRlKFxuICAgICAgICBldmVudCxcbiAgICAgICAgcmVmLFxuICAgICAgICBzZXRJc0Ryb3Bkb3duVmlzaWJsZSxcbiAgICAgICAgcmVmU2VsZWN0LFxuICAgICAgICBvblNlYXJjaCxcbiAgICAgICAgb3B0aW9ucyxcbiAgICAgICksXG4gICAgKVxuXG4gICAgaWYgKCFzZWFyY2hhYmxlKSB7XG4gICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgZXZlbnQgPT5cbiAgICAgICAgaGFuZGxlS2V5RG93bihcbiAgICAgICAgICBldmVudCxcbiAgICAgICAgICByZWYsXG4gICAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgICBzZWFyY2hCYXJBY3RpdmUsXG4gICAgICAgICAgc2V0U2VhcmNoLFxuICAgICAgICAgIHNldERlZmF1bHRTZWFyY2gsXG4gICAgICAgICAgc2VhcmNoLFxuICAgICAgICApLFxuICAgICAgKVxuICAgIH1cblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCBldmVudCA9PlxuICAgICAgICBoYW5kbGVDbGlja091dHNpZGUoXG4gICAgICAgICAgZXZlbnQsXG4gICAgICAgICAgcmVmLFxuICAgICAgICAgIHNldElzRHJvcGRvd25WaXNpYmxlLFxuICAgICAgICAgIHJlZlNlbGVjdCxcbiAgICAgICAgICBvblNlYXJjaCxcbiAgICAgICAgICBvcHRpb25zLFxuICAgICAgICApLFxuICAgICAgKVxuICAgICAgaWYgKCFzZWFyY2hhYmxlKSB7XG4gICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBldmVudCA9PlxuICAgICAgICAgIGhhbmRsZUtleURvd24oXG4gICAgICAgICAgICBldmVudCxcbiAgICAgICAgICAgIHJlZixcbiAgICAgICAgICAgIG9wdGlvbnMsXG4gICAgICAgICAgICBzZWFyY2hCYXJBY3RpdmUsXG4gICAgICAgICAgICBzZXRTZWFyY2gsXG4gICAgICAgICAgICBzZXREZWZhdWx0U2VhcmNoLFxuICAgICAgICAgICAgc2VhcmNoLFxuICAgICAgICAgICksXG4gICAgICAgIClcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtcbiAgICBpc0Ryb3Bkb3duVmlzaWJsZSxcbiAgICBzZWFyY2hCYXJBY3RpdmUsXG4gICAgb3B0aW9ucyxcbiAgICBvblNlYXJjaCxcbiAgICBzZWFyY2gsXG4gICAgcmVmU2VsZWN0LFxuICAgIHNldERlZmF1bHRTZWFyY2gsXG4gICAgc2V0SXNEcm9wZG93blZpc2libGUsXG4gICAgc2VhcmNoYWJsZSxcbiAgXSlcblxuICBjb25zdCBpc0VtcHR5ID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoZGlzcGxheWVkT3B0aW9ucykpIHtcbiAgICAgIHJldHVybiAhKGRpc3BsYXllZE9wdGlvbnMubGVuZ3RoID4gMClcbiAgICB9XG4gICAgY29uc3QgZ3JvdXBzID0gT2JqZWN0LmtleXMoZGlzcGxheWVkT3B0aW9ucylcbiAgICBmb3IgKGNvbnN0IGdyb3VwIG9mIGdyb3Vwcykge1xuICAgICAgaWYgKGRpc3BsYXllZE9wdGlvbnNbZ3JvdXBdLmxlbmd0aCAhPT0gMCkge1xuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZVxuICB9LCBbZGlzcGxheWVkT3B0aW9uc10pXG5cbiAgcmV0dXJuIChcbiAgICA8U3R5bGVkUG9wdXBcbiAgICAgIHZpc2libGU9e2lzRHJvcGRvd25WaXNpYmxlfVxuICAgICAgdGV4dD17XG4gICAgICAgIDxTdGFjaz5cbiAgICAgICAgICB7c2VhcmNoYWJsZSAmJiAhaXNMb2FkaW5nID8gKFxuICAgICAgICAgICAgPFNlYXJjaEJhckRyb3Bkb3duXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXtwbGFjZWhvbGRlcn1cbiAgICAgICAgICAgICAgZGlzcGxheWVkT3B0aW9ucz17ZGlzcGxheWVkT3B0aW9uc31cbiAgICAgICAgICAgICAgc2V0U2VhcmNoQmFyQWN0aXZlPXtzZXRTZWFyY2hCYXJBY3RpdmV9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgIDxDcmVhdGVEcm9wZG93blxuICAgICAgICAgICAgaXNFbXB0eT17aXNFbXB0eX1cbiAgICAgICAgICAgIGVtcHR5U3RhdGU9e2VtcHR5U3RhdGV9XG4gICAgICAgICAgICBkZXNjcmlwdGlvbkRpcmVjdGlvbj17ZGVzY3JpcHRpb25EaXJlY3Rpb259XG4gICAgICAgICAgICBsb2FkTW9yZT17bG9hZE1vcmV9XG4gICAgICAgICAgICBvcHRpb25hbEluZm9QbGFjZW1lbnQ9e29wdGlvbmFsSW5mb1BsYWNlbWVudH1cbiAgICAgICAgICAgIGRlZmF1bHRTZWFyY2hWYWx1ZT17ZGVmYXVsdFNlYXJjaFZhbHVlfVxuICAgICAgICAgICAgaXNMb2FkaW5nPXtpc0xvYWRpbmd9XG4gICAgICAgICAgLz5cbiAgICAgICAgICB7Zm9vdGVyID8gPFBvcHVwRm9vdGVyPntmb290ZXJ9PC9Qb3B1cEZvb3Rlcj4gOiBudWxsfVxuICAgICAgICA8L1N0YWNrPlxuICAgICAgfVxuICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcbiAgICAgIGRpc2FibGVBbmltYXRpb25cbiAgICAgIG1heFdpZHRoPXttYXhXaWR0aCA/PyByZWZTZWxlY3QuY3VycmVudD8ub2Zmc2V0V2lkdGh9XG4gICAgICBoYXNBcnJvdz17ZmFsc2V9XG4gICAgICByZWY9e3JlZn1cbiAgICAgIHRhYkluZGV4PXswfVxuICAgICAgcm9sZT1cImRpYWxvZ1wiXG4gICAgICBkZWJvdW5jZURlbGF5PXswfVxuICAgICAgY29udGFpbmVyRnVsbFdpZHRoXG4gICAgPlxuICAgICAge2NoaWxkcmVufVxuICAgIDwvU3R5bGVkUG9wdXA+XG4gIClcbn1cbiJdfQ== */",
90
+ map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL3VsdHJhdmlvbGV0L3VsdHJhdmlvbGV0L3BhY2thZ2VzL3VpL3NyYy9jb21wb25lbnRzL1NlbGVjdElucHV0VjIvRHJvcGRvd24udHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQThHdUMiLCJmaWxlIjoiL2hvbWUvcnVubmVyL3dvcmsvdWx0cmF2aW9sZXQvdWx0cmF2aW9sZXQvcGFja2FnZXMvdWkvc3JjL2NvbXBvbmVudHMvU2VsZWN0SW5wdXRWMi9Ecm9wZG93bi50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1c2VUaGVtZSB9IGZyb20gJ0BlbW90aW9uL3JlYWN0J1xuaW1wb3J0IHN0eWxlZCBmcm9tICdAZW1vdGlvbi9zdHlsZWQnXG5pbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VNZW1vLCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgdHlwZSB7XG4gIERpc3BhdGNoLFxuICBLZXlib2FyZEV2ZW50LFxuICBSZWFjdE5vZGUsXG4gIFJlZk9iamVjdCxcbiAgU2V0U3RhdGVBY3Rpb24sXG59IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgQ2hlY2tib3ggfSBmcm9tICcuLi9DaGVja2JveCdcbmltcG9ydCB7IFBvcHVwIH0gZnJvbSAnLi4vUG9wdXAnXG5pbXBvcnQgeyBTa2VsZXRvbiB9IGZyb20gJy4uL1NrZWxldG9uJ1xuaW1wb3J0IHsgU3RhY2sgfSBmcm9tICcuLi9TdGFjaydcbmltcG9ydCB7IFRleHQgfSBmcm9tICcuLi9UZXh0J1xuaW1wb3J0IHsgRGlzcGxheU9wdGlvbiB9IGZyb20gJy4vRHJvcGRvd25PcHRpb24nXG5pbXBvcnQgeyBTZWFyY2hCYXJEcm9wZG93biB9IGZyb20gJy4vU2VhcmNoQmFyRHJvcGRvd24nXG5pbXBvcnQgeyB1c2VTZWxlY3RJbnB1dCB9IGZyb20gJy4vU2VsZWN0SW5wdXRQcm92aWRlcidcbmltcG9ydCB7IHR5cGUgRGF0YVR5cGUsIElOUFVUX1NJWkVfSEVJR0hULCB0eXBlIE9wdGlvblR5cGUgfSBmcm9tICcuL3R5cGVzJ1xuXG5jb25zdCBEUk9QRE9XTl9NQVhfSEVJR0hUID0gMjU2XG5cbmV4cG9ydCB0eXBlIERyb3Bkb3duUHJvcHMgPSB7XG4gIGNoaWxkcmVuOiBSZWFjdE5vZGVcbiAgZW1wdHlTdGF0ZTogUmVhY3ROb2RlXG4gIGRlc2NyaXB0aW9uRGlyZWN0aW9uOiAncm93JyB8ICdjb2x1bW4nXG4gIHNlYXJjaGFibGU6IGJvb2xlYW5cbiAgcGxhY2Vob2xkZXI6IHN0cmluZ1xuICBmb290ZXI/OiAoKGNsb3NlRHJvcGRvd246ICgpID0+IHZvaWQpID0+IFJlYWN0Tm9kZSkgfCBSZWFjdE5vZGVcbiAgcmVmU2VsZWN0OiBSZWZPYmplY3Q8SFRNTERpdkVsZW1lbnQ+XG4gIGxvYWRNb3JlPzogUmVhY3ROb2RlXG4gIG9wdGlvbmFsSW5mb1BsYWNlbWVudDogJ2xlZnQnIHwgJ3JpZ2h0J1xuICBpc0xvYWRpbmc/OiBib29sZWFuXG4gIHNpemU6ICdzbWFsbCcgfCAnbWVkaXVtJyB8ICdsYXJnZSdcbn1cblxuZXhwb3J0IHR5cGUgQ3JlYXRlRHJvcGRvd25Qcm9wcyA9IHtcbiAgaXNFbXB0eTogYm9vbGVhblxuICBlbXB0eVN0YXRlOiBSZWFjdE5vZGVcbiAgZGVzY3JpcHRpb25EaXJlY3Rpb246ICdyb3cnIHwgJ2NvbHVtbidcbiAgbG9hZE1vcmU/OiBSZWFjdE5vZGVcbiAgb3B0aW9uYWxJbmZvUGxhY2VtZW50OiAnbGVmdCcgfCAncmlnaHQnXG4gIGRlZmF1bHRTZWFyY2hWYWx1ZTogc3RyaW5nIHwgbnVsbFxuICBpc0xvYWRpbmc/OiBib29sZWFuXG59XG5cbmNvbnN0IE5PTl9TRUFSQ0hBQkxFX0tFWVMgPSBbXG4gICdUYWInLFxuICAnICcsXG4gICdFbnRlcicsXG4gICdDYXBzTG9jaycsXG4gICdTaGlmdCcsXG4gICdBcnJvd0Rvd24nLFxuICAnQXJyb3dVcCcsXG4gICdBcnJvd0xlZnQnLFxuICAnQXJyb3dSaWdodCcsXG4gICdFc2NhcGUnLFxuXVxuXG5jb25zdCBTdHlsZWRQb3B1cCA9IHN0eWxlZChQb3B1cClgXG4gIHdpZHRoOiAxMDAlO1xuICBtaW4td2lkdGg6IDMyMHB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5vdGhlci5lbGV2YXRpb24uYmFja2dyb3VuZC5yYWlzZWR9O1xuICBjb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMubmV1dHJhbC50ZXh0fTtcbiAgYm94LXNoYWRvdzogJHsoeyB0aGVtZSB9KSA9PiBgJHt0aGVtZS5zaGFkb3dzLnJhaXNlZFswXX0sICR7dGhlbWUuc2hhZG93cy5yYWlzZWRbMV19YH07XG4gIHBhZGRpbmc6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMF19O1xuICBtYXJnaW4tYm90dG9tOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzEwXX07XG5gXG5cbmNvbnN0IERyb3Bkb3duQ29udGFpbmVyID0gc3R5bGVkKFN0YWNrKTx7ICdkYXRhLWdyb3VwZWQnOiBib29sZWFuIH0+YFxuICBtYXgtaGVpZ2h0OiAke0RST1BET1dOX01BWF9IRUlHSFR9cHg7XG4gIG92ZXJmbG93LXk6IHNjcm9sbDtcbiAgcGFkZGluZzogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVswXX07XG4gIHBhZGRpbmctYm90dG9tOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzAuNV19O1xuICBwYWRkaW5nLXRvcDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVswLjVdfTtcblxuICAmW2RhdGEtZ3JvdXBlZD1cInRydWVcIl0ge1xuICAgIHBhZGRpbmctdG9wOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzBdfTtcbiAgfVxuYFxuY29uc3QgRHJvcGRvd25Hcm91cCA9IHN0eWxlZC5idXR0b248eyAnZGF0YS1zZWxlY3Rncm91cCc6IGJvb2xlYW4gfT5gXG4gIGRpc3BsYXk6IGZsZXg7XG4gIHdpZHRoOiAxMDAlO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGxlZnQ7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGJvcmRlcjogbm9uZTtcbiAgYmFja2dyb3VuZC1jb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMubmV1dHJhbC5iYWNrZ3JvdW5kV2Vha307XG4gIHBvc2l0aW9uOiBzdGlja3k7XG4gIHRvcDogMHB4O1xuICBwYWRkaW5nLXJpZ2h0OiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzJdfTtcbiAgcGFkZGluZy1sZWZ0OiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzJdfTtcbiAgaGVpZ2h0OiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzRdfTtcbiAgdGV4dC1hbGlnbjogbGVmdDtcbiAgbWFyZ2luLWJvdHRvbTogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsnMC4yNSddfTtcblxuICAmOmZvY3VzIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5uZXV0cmFsLmJhY2tncm91bmRXZWFrfTtcbiAgICBvdXRsaW5lOiBub25lO1xuICB9XG5cbiAgJltkYXRhLXNlbGVjdGdyb3VwPSd0cnVlJ10ge1xuICAgIHBhZGRpbmctbGVmdDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsyXX07XG4gICAgYm9yZGVyLWxlZnQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMC41XX0gc29saWQgJHsoeyB0aGVtZSB9KSA9PlxuICAgICAgdGhlbWUuY29sb3JzLm5ldXRyYWwuYmFja2dyb3VuZFdlYWt9O1xuICB9XG5cbiAgJltkYXRhLXNlbGVjdGdyb3VwPSd0cnVlJ106Zm9jdXMge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwuYmFja2dyb3VuZEhvdmVyfTtcbiAgfVxuYFxuY29uc3QgRHJvcGRvd25Hcm91cFdyYXBwZXIgPSBzdHlsZWQuZGl2YFxuICBwb3NpdGlvbjogc3RpY2t5O1xuICB0b3A6IDBweDtcbmBcbmNvbnN0IERyb3Bkb3duSXRlbSA9IHN0eWxlZC5kaXY8e1xuICAnYXJpYS1zZWxlY3RlZCc6IGJvb2xlYW5cbiAgJ2FyaWEtZGlzYWJsZWQnOiBib29sZWFuXG59PmBcbiAgdGV4dC1hbGlnbjpsZWZ0O1xuICBib3JkZXI6IG5vbmU7XG4gIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm90aGVyLmVsZXZhdGlvbi5iYWNrZ3JvdW5kLnJhaXNlZH07XG5cbiAgcGFkZGluZzogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsnMS41J119ICR7KHsgdGhlbWUgfSkgPT5cbiAgICB0aGVtZS5zcGFjZVsnMiddfSAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWycxLjUnXX0gJHsoeyB0aGVtZSB9KSA9PlxuICAgIHRoZW1lLnNwYWNlWycyJ119O1xuICBtYXJnaW4tbGVmdDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsnMC41J119O1xuICBtYXJnaW4tcmlnaHQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbJzAuNSddfTtcblxuICBjb2xvcjogICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwudGV4dH07XG4gIGJvcmRlci1yYWRpdXM6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUucmFkaWkuZGVmYXVsdH07XG5cbiAgJjpob3ZlciwgOmZvY3VzIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5wcmltYXJ5LmJhY2tncm91bmR9O1xuICAgIGNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5wcmltYXJ5LnRleHR9O1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBvdXRsaW5lOiBub25lO1xuICB9XG5cbiAgJlthcmlhLXNlbGVjdGVkPSd0cnVlJ10ge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLnByaW1hcnkuYmFja2dyb3VuZH07XG4gIH1cblxuICAmW2FyaWEtZGlzYWJsZWQ9XCJ0cnVlXCJdIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5uZXV0cmFsLmJhY2tncm91bmREaXNhYmxlZH07XG4gICAgY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwudGV4dERpc2FibGVkfTtcbiAgfVxuXG4gICZbYXJpYS1kaXNhYmxlZD1cInRydWVcIl06aG92ZXIsIFthcmlhLWRpc2FibGVkPVwidHJ1ZVwiXTpmb2N1cyB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHsoeyB0aGVtZSB9KSA9PlxuICAgICAgdGhlbWUuY29sb3JzLm5ldXRyYWwuYmFja2dyb3VuZFN0cm9uZ0Rpc2FibGVkfTtcbiAgICBjb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMubmV1dHJhbC50ZXh0U3Ryb25nRGlzYWJsZWR9O1xuICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgfVxuYFxuXG5jb25zdCBQb3B1cEZvb3RlciA9IHN0eWxlZC5kaXZgXG4gIHdpZHRoOiAxMDAlO1xuICBwYWRkaW5nOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzEuNV19ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMl19XG4gICAgJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsxLjVdfSAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzJdfTtcbiAgYm94LXNoYWRvdzogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zaGFkb3dzLmRyb3Bkb3dufTtcbmBcbmNvbnN0IFN0eWxlZENoZWNrYm94ID0gc3R5bGVkKENoZWNrYm94KWBcbiAgd2lkdGg6IDEwMCU7XG4gIHBvc2l0aW9uOiBzdGF0aWM7XG4gIHRleHQtYWxpZ246IGxlZnQ7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuYCAvLyBwb2ludGVyLWV2ZW50czogbm9uZSBwcmV2ZW50cyBhbnkgZXJyb3Igd2hlbiB1c2luZyB0aGUgY2hlY2tib3ggaW4gYSBmb3JtIHNpbmNlIGl0IGlzIGFuIHVubmFtZWQgaW5wdXRcblxuY29uc3QgRW1wdHlTdGF0ZSA9IHN0eWxlZChTdGFjaylgXG4gIHBhZGRpbmc6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMl19O1xuYFxuY29uc3QgTG9hZE1vcmUgPSBzdHlsZWQoU3RhY2spYFxuICBwYWRkaW5nOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzAuNV19O1xuYFxuXG5jb25zdCBtb3ZlRm9jdXNEb3duID0gKCkgPT4ge1xuICBjb25zdCBvcHRpb25zID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcbiAgICAnI2l0ZW1zID4gZGl2W3JvbGU9XCJvcHRpb25cIl06bm90KFtkaXNhYmxlZF0pJyxcbiAgKVxuICBjb25zdCBhY3RpdmVJdGVtID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudFxuICBpZiAob3B0aW9ucykge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgb3B0aW9ucz8ubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgIGNvbnN0IGxpc3RMZW5ndGggPSBvcHRpb25zLmxlbmd0aFxuICAgICAgaWYgKGFjdGl2ZUl0ZW0gPT09IG9wdGlvbnNbaV0gJiYgYWN0aXZlSXRlbSAhPT0gb3B0aW9uc1tsaXN0TGVuZ3RoIC0gMV0pIHtcbiAgICAgICAgOyhvcHRpb25zW2kgKyAxXSBhcyBIVE1MRWxlbWVudCkuZm9jdXMoKVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuY29uc3QgbW92ZUZvY3VzVXAgPSAoKSA9PiB7XG4gIGNvbnN0IG9wdGlvbnMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFxuICAgICcjaXRlbXMgPiBkaXZbcm9sZT1cIm9wdGlvblwiXTpub3QoW2Rpc2FibGVkXSknLFxuICApXG4gIGNvbnN0IGFjdGl2ZUl0ZW0gPSBkb2N1bWVudC5hY3RpdmVFbGVtZW50XG5cbiAgaWYgKG9wdGlvbnMpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG9wdGlvbnMubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgIGlmIChhY3RpdmVJdGVtID09PSBvcHRpb25zW2ldICYmIGFjdGl2ZUl0ZW0gIT09IG9wdGlvbnNbMF0pIHtcbiAgICAgICAgOyhvcHRpb25zW2kgLSAxXSBhcyBIVE1MRWxlbWVudCkuZm9jdXMoKVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuY29uc3QgaGFuZGxlS2V5RG93blNlbGVjdCA9IChldmVudDogS2V5Ym9hcmRFdmVudDxIVE1MRGl2RWxlbWVudD4pID0+IHtcbiAgaWYgKGV2ZW50LmtleSA9PT0gJ0Fycm93RG93bicpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgbW92ZUZvY3VzRG93bigpXG4gIH1cblxuICBpZiAoZXZlbnQua2V5ID09PSAnQXJyb3dVcCcpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgbW92ZUZvY3VzVXAoKVxuICB9XG59XG5jb25zdCBoYW5kbGVDbGlja091dHNpZGUgPSAoXG4gIGV2ZW50OiBNb3VzZUV2ZW50LFxuICByZWY6IFJlZk9iamVjdDxIVE1MRGl2RWxlbWVudD4sXG4gIHNldElzRHJvcGRvd25WaXNpYmlsZTogRGlzcGF0Y2g8U2V0U3RhdGVBY3Rpb248Ym9vbGVhbj4+LFxuICByZWZTZWxlY3Q6IFJlZk9iamVjdDxIVE1MRGl2RWxlbWVudD4sXG4gIG9uU2VhcmNoOiBEaXNwYXRjaDxTZXRTdGF0ZUFjdGlvbjxEYXRhVHlwZT4+LFxuICBvcHRpb25zOiBEYXRhVHlwZSxcbikgPT4ge1xuICBpZiAoXG4gICAgcmVmLmN1cnJlbnQgJiZcbiAgICAhcmVmLmN1cnJlbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0IGFzIE5vZGUpICYmXG4gICAgIXJlZlNlbGVjdC5jdXJyZW50Py5jb250YWlucyhldmVudC50YXJnZXQgYXMgTm9kZSlcbiAgKSB7XG4gICAgc2V0SXNEcm9wZG93blZpc2liaWxlKGZhbHNlKVxuICAgIG9uU2VhcmNoKG9wdGlvbnMpXG4gIH1cbn1cblxuY29uc3QgaGFuZGxlS2V5RG93biA9IChcbiAgZXZlbnQ6IGdsb2JhbFRoaXMuS2V5Ym9hcmRFdmVudCxcbiAgcmVmOiBSZWZPYmplY3Q8SFRNTERpdkVsZW1lbnQ+LFxuICBvcHRpb25zOiBEYXRhVHlwZSxcbiAgc2VhcmNoQmFyQWN0aXZlOiBib29sZWFuLFxuICBzZXRTZWFyY2g6IERpc3BhdGNoPFNldFN0YXRlQWN0aW9uPHN0cmluZz4+LFxuICBzZXREZWZhdWx0U2VhcmNoOiBEaXNwYXRjaDxTZXRTdGF0ZUFjdGlvbjxzdHJpbmcgfCBudWxsPj4sXG4gIHNlYXJjaDogc3RyaW5nLFxuKSA9PiB7XG4gIC8vIERlYWxzIHdpdGggZGVmYXVsdCBzZWFyY2hcbiAgaWYgKFxuICAgIHJlZi5jdXJyZW50ICYmXG4gICAgIXNlYXJjaEJhckFjdGl2ZSAmJlxuICAgICFOT05fU0VBUkNIQUJMRV9LRVlTLmluY2x1ZGVzKGV2ZW50LmtleSkgJiZcbiAgICBkb2N1bWVudC5hY3RpdmVFbGVtZW50Py5hcmlhTGFiZWwgIT09ICdzZWFyY2gtYmFyJ1xuICApIHtcbiAgICBjb25zdCBjdXJyZW50U2VhcmNoID0gc2VhcmNoICsgZXZlbnQua2V5XG4gICAgc2V0U2VhcmNoKGN1cnJlbnRTZWFyY2gpXG4gICAgcmVmLmN1cnJlbnQuZm9jdXMoKVxuICAgIGlmICghQXJyYXkuaXNBcnJheShvcHRpb25zKSkge1xuICAgICAgY29uc3QgY2xvc2VzdE9wdGlvbnMgPSB7IC4uLm9wdGlvbnMgfVxuICAgICAgT2JqZWN0LmtleXMoY2xvc2VzdE9wdGlvbnMpLm1hcCgoZ3JvdXA6IHN0cmluZykgPT4ge1xuICAgICAgICBjbG9zZXN0T3B0aW9uc1tncm91cF0gPSBjbG9zZXN0T3B0aW9uc1tncm91cF0uZmlsdGVyKG9wdGlvbiA9PlxuICAgICAgICAgIG9wdGlvbi5zZWFyY2hUZXh0XG4gICAgICAgICAgICA/IG9wdGlvbi5zZWFyY2hUZXh0LnRvTG9jYWxlTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChjdXJyZW50U2VhcmNoKVxuICAgICAgICAgICAgOiBvcHRpb24udmFsdWUudG9Mb2NhbGVMb3dlckNhc2UoKS5zdGFydHNXaXRoKGN1cnJlbnRTZWFyY2gpLFxuICAgICAgICApXG5cbiAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgIH0pXG4gICAgICBjb25zdCBjbG9zZXN0T3B0aW9uID0gY2xvc2VzdE9wdGlvbnNbT2JqZWN0LmtleXMoY2xvc2VzdE9wdGlvbnMpWzBdXVswXVxuICAgICAgaWYgKGNsb3Nlc3RPcHRpb24pIHtcbiAgICAgICAgc2V0RGVmYXVsdFNlYXJjaChjbG9zZXN0T3B0aW9uLnNlYXJjaFRleHQgPz8gY2xvc2VzdE9wdGlvbi52YWx1ZSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNldERlZmF1bHRTZWFyY2gobnVsbClcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgY2xvc2VzdE9wdGlvbiA9IFsuLi5vcHRpb25zXS5maWx0ZXIob3B0aW9uID0+XG4gICAgICAgIG9wdGlvbi5zZWFyY2hUZXh0XG4gICAgICAgICAgPyBvcHRpb24uc2VhcmNoVGV4dC50b0xvY2FsZUxvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoY3VycmVudFNlYXJjaClcbiAgICAgICAgICA6IG9wdGlvbi52YWx1ZS50b0xvY2FsZUxvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoY3VycmVudFNlYXJjaCksXG4gICAgICApWzBdXG4gICAgICBpZiAoY2xvc2VzdE9wdGlvbikge1xuICAgICAgICBzZXREZWZhdWx0U2VhcmNoKGNsb3Nlc3RPcHRpb24uc2VhcmNoVGV4dCA/PyBjbG9zZXN0T3B0aW9uLnZhbHVlKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2V0RGVmYXVsdFNlYXJjaChudWxsKVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuY29uc3QgQ3JlYXRlRHJvcGRvd24gPSAoe1xuICBpc0VtcHR5LFxuICBlbXB0eVN0YXRlLFxuICBkZXNjcmlwdGlvbkRpcmVjdGlvbixcbiAgbG9hZE1vcmUsXG4gIG9wdGlvbmFsSW5mb1BsYWNlbWVudCxcbiAgZGVmYXVsdFNlYXJjaFZhbHVlLFxuICBpc0xvYWRpbmcsXG59OiBDcmVhdGVEcm9wZG93blByb3BzKSA9PiB7XG4gIGNvbnN0IHtcbiAgICBzZXRJc0Ryb3Bkb3duVmlzaWJsZSxcbiAgICBvbkNoYW5nZSxcbiAgICBvcHRpb25zLFxuICAgIG11bHRpc2VsZWN0LFxuICAgIHNlbGVjdEFsbCxcbiAgICBzZWxlY3RBbGxHcm91cCxcbiAgICBkaXNwbGF5ZWRPcHRpb25zLFxuICAgIHNldFNlbGVjdGVkRGF0YSxcbiAgICBzZWxlY3RlZERhdGEsXG4gIH0gPSB1c2VTZWxlY3RJbnB1dCgpXG4gIGNvbnN0IGZvY3VzZWRJdGVtUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGRlZmF1bHRTZWFyY2hWYWx1ZSAmJiBmb2N1c2VkSXRlbVJlZj8uY3VycmVudCkge1xuICAgICAgZm9jdXNlZEl0ZW1SZWYuY3VycmVudC5mb2N1cygpXG4gICAgfVxuICB9LCBbZGVmYXVsdFNlYXJjaFZhbHVlXSlcblxuICBpZiAoaXNFbXB0eSkge1xuICAgIHJldHVybiAoXG4gICAgICA8RW1wdHlTdGF0ZSBnYXA9ezJ9IGFsaWduSXRlbXM9XCJjZW50ZXJcIj5cbiAgICAgICAge2VtcHR5U3RhdGUgPz8gKFxuICAgICAgICAgIDxUZXh0IHZhcmlhbnQ9XCJib2R5U3Ryb25nXCIgYXM9XCJwXCI+XG4gICAgICAgICAgICBObyBvcHRpb25zXG4gICAgICAgICAgPC9UZXh0PlxuICAgICAgICApfVxuICAgICAgPC9FbXB0eVN0YXRlPlxuICAgIClcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZUNsaWNrID0gKGNsaWNrZWRPcHRpb246IE9wdGlvblR5cGUsIGdyb3VwPzogc3RyaW5nKSA9PiB7XG4gICAgc2V0U2VsZWN0ZWREYXRhKHsgdHlwZTogJ3NlbGVjdE9wdGlvbicsIGNsaWNrZWRPcHRpb24sIGdyb3VwIH0pXG4gICAgaWYgKG11bHRpc2VsZWN0KSB7XG4gICAgICBpZiAoc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzLmluY2x1ZGVzKGNsaWNrZWRPcHRpb24udmFsdWUpKSB7XG4gICAgICAgIG9uQ2hhbmdlPy4oXG4gICAgICAgICAgc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzLmZpbHRlcihcbiAgICAgICAgICAgIHZhbCA9PiB2YWwgIT09IGNsaWNrZWRPcHRpb24udmFsdWUsXG4gICAgICAgICAgKSxcbiAgICAgICAgKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb25DaGFuZ2U/LihbLi4uc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzLCBjbGlja2VkT3B0aW9uLnZhbHVlXSlcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgb25DaGFuZ2U/LihjbGlja2VkT3B0aW9uLnZhbHVlKVxuICAgIH1cbiAgICBzZXRJc0Ryb3Bkb3duVmlzaWJsZShtdWx0aXNlbGVjdCkgLy8gaGlkZSB0aGUgZHJvcGRvd24gb24gY2xpY2sgd2hlbiBzaW5nbGUgc2VsZWN0IG9ubHlcbiAgfVxuXG4gIGNvbnN0IHNlbGVjdEFsbE9wdGlvbnMgPSAoKSA9PiB7XG4gICAgaWYgKG11bHRpc2VsZWN0KSB7XG4gICAgICBzZXRTZWxlY3RlZERhdGEoeyB0eXBlOiAnc2VsZWN0QWxsJyB9KVxuICAgICAgaWYgKHNlbGVjdGVkRGF0YS5hbGxTZWxlY3RlZCAmJiBvbkNoYW5nZSkge1xuICAgICAgICBvbkNoYW5nZShbXSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGFsbFZhbHVlczogT3B0aW9uVHlwZVtdID0gW11cbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KG9wdGlvbnMpKSB7XG4gICAgICAgICAgT2JqZWN0LmtleXMob3B0aW9ucykubWFwKChncm91cDogc3RyaW5nKSA9PlxuICAgICAgICAgICAgb3B0aW9uc1tncm91cF0ubWFwKG9wdGlvbiA9PiB7XG4gICAgICAgICAgICAgIGlmICghb3B0aW9uLmRpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgYWxsVmFsdWVzLnB1c2gob3B0aW9uKVxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIClcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvcHRpb25zLm1hcChvcHRpb24gPT4gYWxsVmFsdWVzLnB1c2gob3B0aW9uKSlcbiAgICAgICAgfVxuICAgICAgICBvbkNoYW5nZT8uKGFsbFZhbHVlcy5tYXAodmFsdWUgPT4gdmFsdWUudmFsdWUpKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGhhbmRsZVNlbGVjdEdyb3VwID0gKGdyb3VwOiBzdHJpbmcpID0+IHtcbiAgICBpZiAobXVsdGlzZWxlY3QpIHtcbiAgICAgIHNldFNlbGVjdGVkRGF0YSh7IHR5cGU6ICdzZWxlY3RHcm91cCcsIHNlbGVjdGVkR3JvdXA6IGdyb3VwIH0pXG4gICAgICBpZiAoIUFycmF5LmlzQXJyYXkob3B0aW9ucykpIHtcbiAgICAgICAgaWYgKHNlbGVjdGVkRGF0YS5zZWxlY3RlZEdyb3Vwcy5pbmNsdWRlcyhncm91cCkpIHtcbiAgICAgICAgICBjb25zdCBuZXdTZWxlY3RlZFZhbHVlcyA9IFsuLi5zZWxlY3RlZERhdGEuc2VsZWN0ZWRWYWx1ZXNdLmZpbHRlcihcbiAgICAgICAgICAgIHNlbGVjdGVkVmFsdWUgPT5cbiAgICAgICAgICAgICAgIW9wdGlvbnNbZ3JvdXBdLmZpbmQob3B0aW9uID0+IG9wdGlvbi52YWx1ZSA9PT0gc2VsZWN0ZWRWYWx1ZSksXG4gICAgICAgICAgKVxuICAgICAgICAgIG9uQ2hhbmdlPy4obmV3U2VsZWN0ZWRWYWx1ZXMpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgbmV3U2VsZWN0ZWRWYWx1ZXMgPSBbLi4uc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzXVxuXG4gICAgICAgICAgb3B0aW9uc1tncm91cF0ubWFwKG9wdGlvbiA9PlxuICAgICAgICAgICAgbmV3U2VsZWN0ZWRWYWx1ZXMuaW5jbHVkZXMob3B0aW9uLnZhbHVlKSB8fCBvcHRpb24uZGlzYWJsZWRcbiAgICAgICAgICAgICAgPyBudWxsXG4gICAgICAgICAgICAgIDogbmV3U2VsZWN0ZWRWYWx1ZXMucHVzaChvcHRpb24udmFsdWUpLFxuICAgICAgICAgIClcbiAgICAgICAgICBvbkNoYW5nZT8uKG5ld1NlbGVjdGVkVmFsdWVzKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuICFBcnJheS5pc0FycmF5KGRpc3BsYXllZE9wdGlvbnMpID8gKFxuICAgIDxEcm9wZG93bkNvbnRhaW5lclxuICAgICAgcm9sZT1cImxpc3Rib3hcIlxuICAgICAgaWQ9XCJzZWxlY3QtZHJvcGRvd25cIlxuICAgICAgb25LZXlEb3duPXtoYW5kbGVLZXlEb3duU2VsZWN0fVxuICAgICAgZGF0YS1ncm91cGVkXG4gICAgPlxuICAgICAge2lzTG9hZGluZyA/IChcbiAgICAgICAgPFNrZWxldG9uIHZhcmlhbnQ9XCJibG9ja1wiIC8+XG4gICAgICApIDogKFxuICAgICAgICA8PlxuICAgICAgICAgIHtzZWxlY3RBbGwgJiYgbXVsdGlzZWxlY3QgPyAoXG4gICAgICAgICAgICA8U3RhY2sgaWQ9XCJpdGVtc1wiPlxuICAgICAgICAgICAgICA8RHJvcGRvd25JdGVtXG4gICAgICAgICAgICAgICAgYXJpYS1kaXNhYmxlZD17ZmFsc2V9XG4gICAgICAgICAgICAgICAgYXJpYS1zZWxlY3RlZD17c2VsZWN0ZWREYXRhLmFsbFNlbGVjdGVkfVxuICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJzZWxlY3QtYWxsXCJcbiAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD1cInNlbGVjdC1hbGxcIlxuICAgICAgICAgICAgICAgIGlkPVwic2VsZWN0LWFsbFwiXG4gICAgICAgICAgICAgICAgdGFiSW5kZXg9ezB9XG4gICAgICAgICAgICAgICAgcm9sZT1cIm9wdGlvblwiXG4gICAgICAgICAgICAgICAgb25LZXlEb3duPXtldmVudCA9PlxuICAgICAgICAgICAgICAgICAgWycgJywgJ0VudGVyJ10uaW5jbHVkZXMoZXZlbnQua2V5KSA/IHNlbGVjdEFsbE9wdGlvbnMoKSA6IG51bGxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgb25DbGljaz17c2VsZWN0QWxsT3B0aW9uc31cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxTdHlsZWRDaGVja2JveFxuICAgICAgICAgICAgICAgICAgY2hlY2tlZD17c2VsZWN0ZWREYXRhLmFsbFNlbGVjdGVkfVxuICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgdmFsdWU9XCJzZWxlY3QtYWxsXCJcbiAgICAgICAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwic2VsZWN0LWFsbC1jaGVja2JveFwiXG4gICAgICAgICAgICAgICAgICB0YWJJbmRleD17LTF9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPFN0YWNrIGRpcmVjdGlvbj1cImNvbHVtblwiPlxuICAgICAgICAgICAgICAgICAgICA8VGV4dCBhcz1cInNwYW5cIiB2YXJpYW50PVwiYm9keVwiIHBsYWNlbWVudD1cImxlZnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICB7c2VsZWN0QWxsLmxhYmVsfVxuICAgICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgICAgIDxUZXh0XG4gICAgICAgICAgICAgICAgICAgICAgYXM9XCJzcGFuXCJcbiAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50PVwiYm9keVNtYWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICBzZW50aW1lbnQ9XCJuZXV0cmFsXCJcbiAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJsZWZ0XCJcbiAgICAgICAgICAgICAgICAgICAgICBwcm9taW5lbmNlPVwid2Vha1wiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7c2VsZWN0QWxsLmRlc2NyaXB0aW9ufVxuICAgICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgICA8L1N0YWNrPlxuICAgICAgICAgICAgICAgIDwvU3R5bGVkQ2hlY2tib3g+XG4gICAgICAgICAgICAgIDwvRHJvcGRvd25JdGVtPlxuICAgICAgICAgICAgPC9TdGFjaz5cbiAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICB7T2JqZWN0LmtleXMoZGlzcGxheWVkT3B0aW9ucykubWFwKChncm91cCwgaW5kZXgpID0+IChcbiAgICAgICAgICAgIDxTdGFjayBrZXk9e2dyb3VwfSBnYXA9ezAuMjV9PlxuICAgICAgICAgICAgICB7ZGlzcGxheWVkT3B0aW9uc1tncm91cF0ubGVuZ3RoID4gMCA/IChcbiAgICAgICAgICAgICAgICA8RHJvcGRvd25Hcm91cFdyYXBwZXIgaWQ9e3NlbGVjdEFsbEdyb3VwID8gJ2l0ZW1zJyA6IHVuZGVmaW5lZH0+XG4gICAgICAgICAgICAgICAgICB7Z3JvdXAgPyAoXG4gICAgICAgICAgICAgICAgICAgIDxEcm9wZG93bkdyb3VwXG4gICAgICAgICAgICAgICAgICAgICAga2V5PXtncm91cH1cbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICB0YWJJbmRleD17c2VsZWN0QWxsR3JvdXAgPyAwIDogLTF9XG4gICAgICAgICAgICAgICAgICAgICAgb25LZXlEb3duPXtldmVudCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoWycgJywgJ0VudGVyJ10uaW5jbHVkZXMoZXZlbnQua2V5KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZVNlbGVjdEdyb3VwKGdyb3VwKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgZGF0YS1zZWxlY3Rncm91cD17c2VsZWN0QWxsR3JvdXB9XG4gICAgICAgICAgICAgICAgICAgICAgcm9sZT1cImdyb3VwXCJcbiAgICAgICAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD17YGdyb3VwLSR7aW5kZXh9YH1cbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0QWxsR3JvdXAgPyBoYW5kbGVTZWxlY3RHcm91cChncm91cCkgOiBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAge3NlbGVjdEFsbEdyb3VwID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgPFN0eWxlZENoZWNrYm94XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e3NlbGVjdGVkRGF0YS5zZWxlY3RlZEdyb3Vwcy5pbmNsdWRlcyhncm91cCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2dyb3VwfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD1cInNlbGVjdC1ncm91cFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRhYkluZGV4PXstMX1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPFRleHQgdmFyaWFudD1cImNhcHRpb25cIiBhcz1cInNwYW5cIiBwbGFjZW1lbnQ9XCJsZWZ0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2dyb3VwLnRvVXBwZXJDYXNlKCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvU3R5bGVkQ2hlY2tib3g+XG4gICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxUZXh0XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJjYXB0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYXM9XCJzcGFuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwibGVmdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNlbnRpbWVudD1cIm5ldXRyYWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7Z3JvdXAudG9VcHBlckNhc2UoKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICA8L0Ryb3Bkb3duR3JvdXA+XG4gICAgICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgICAgICA8L0Ryb3Bkb3duR3JvdXBXcmFwcGVyPlxuICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgICAgPFN0YWNrIGlkPVwiaXRlbXNcIiBnYXA9XCIwLjI1XCI+XG4gICAgICAgICAgICAgICAge2Rpc3BsYXllZE9wdGlvbnNbZ3JvdXBdLm1hcCgob3B0aW9uLCBpbmRleE9wdGlvbikgPT4gKFxuICAgICAgICAgICAgICAgICAgPERyb3Bkb3duSXRlbVxuICAgICAgICAgICAgICAgICAgICBrZXk9e29wdGlvbi52YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgYXJpYS1kaXNhYmxlZD17ISFvcHRpb24uZGlzYWJsZWR9XG4gICAgICAgICAgICAgICAgICAgIHRhYkluZGV4PXshb3B0aW9uLmRpc2FibGVkID8gMCA6IC0xfVxuICAgICAgICAgICAgICAgICAgICBhcmlhLXNlbGVjdGVkPXtcbiAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZERhdGEuc2VsZWN0ZWRWYWx1ZXMuaW5jbHVkZXMob3B0aW9uLnZhbHVlKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICFvcHRpb24uZGlzYWJsZWRcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPXtvcHRpb24udmFsdWV9XG4gICAgICAgICAgICAgICAgICAgIGRhdGEtdGVzdGlkPXtgb3B0aW9uLSR7b3B0aW9uLnZhbHVlfWB9XG4gICAgICAgICAgICAgICAgICAgIGlkPXtgb3B0aW9uLSR7aW5kZXhPcHRpb259YH1cbiAgICAgICAgICAgICAgICAgICAgcm9sZT1cIm9wdGlvblwiXG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoIW9wdGlvbi5kaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlQ2xpY2sob3B0aW9uLCBncm91cClcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgIG9uS2V5RG93bj17ZXZlbnQgPT5cbiAgICAgICAgICAgICAgICAgICAgICBbJyAnLCAnRW50ZXInXS5pbmNsdWRlcyhldmVudC5rZXkpXG4gICAgICAgICAgICAgICAgICAgICAgICA/IGhhbmRsZUNsaWNrKG9wdGlvbiwgZ3JvdXApXG4gICAgICAgICAgICAgICAgICAgICAgICA6IG51bGxcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZWY9e1xuICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbi52YWx1ZSA9PT0gZGVmYXVsdFNlYXJjaFZhbHVlIHx8XG4gICAgICAgICAgICAgICAgICAgICAgb3B0aW9uLnNlYXJjaFRleHQgPT09IGRlZmF1bHRTZWFyY2hWYWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgPyBmb2N1c2VkSXRlbVJlZlxuICAgICAgICAgICAgICAgICAgICAgICAgOiBudWxsXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge211bHRpc2VsZWN0ID8gKFxuICAgICAgICAgICAgICAgICAgICAgIDxTdHlsZWRDaGVja2JveFxuICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tlZD17XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkRGF0YS5zZWxlY3RlZFZhbHVlcy5pbmNsdWRlcyhvcHRpb24udmFsdWUpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICFvcHRpb24uZGlzYWJsZWRcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtvcHRpb24uZGlzYWJsZWR9XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17b3B0aW9uLnZhbHVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgdGFiSW5kZXg9ey0xfVxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxEaXNwbGF5T3B0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbj17b3B0aW9ufVxuICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbkRpcmVjdGlvbj17ZGVzY3JpcHRpb25EaXJlY3Rpb259XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsSW5mb1BsYWNlbWVudD17b3B0aW9uYWxJbmZvUGxhY2VtZW50fVxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8L1N0eWxlZENoZWNrYm94PlxuICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgIDxEaXNwbGF5T3B0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb249e29wdGlvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uRGlyZWN0aW9uPXtkZXNjcmlwdGlvbkRpcmVjdGlvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsSW5mb1BsYWNlbWVudD17b3B0aW9uYWxJbmZvUGxhY2VtZW50fVxuICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICA8L0Ryb3Bkb3duSXRlbT5cbiAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgPC9TdGFjaz5cbiAgICAgICAgICAgIDwvU3RhY2s+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvPlxuICAgICAgKX1cbiAgICAgIHtsb2FkTW9yZSA/IDxMb2FkTW9yZT57bG9hZE1vcmV9PC9Mb2FkTW9yZT4gOiBudWxsfVxuICAgIDwvRHJvcGRvd25Db250YWluZXI+XG4gICkgOiAoXG4gICAgPERyb3Bkb3duQ29udGFpbmVyXG4gICAgICByb2xlPVwibGlzdGJveFwiXG4gICAgICB0YWJJbmRleD17LTF9XG4gICAgICBpZD1cInNlbGVjdC1kcm9wZG93blwiXG4gICAgICBvbktleURvd249e2hhbmRsZUtleURvd25TZWxlY3R9XG4gICAgICBnYXA9ezAuMjV9XG4gICAgICBkYXRhLWdyb3VwZWQ9e2ZhbHNlfVxuICAgID5cbiAgICAgIHtzZWxlY3RBbGwgJiYgbXVsdGlzZWxlY3QgPyAoXG4gICAgICAgIDxTdGFjayBpZD1cIml0ZW1zXCIgZ2FwPXswLjI1fSB0YWJJbmRleD17LTF9PlxuICAgICAgICAgIDxEcm9wZG93bkl0ZW1cbiAgICAgICAgICAgIGFyaWEtZGlzYWJsZWQ9e2ZhbHNlfVxuICAgICAgICAgICAgYXJpYS1zZWxlY3RlZD17c2VsZWN0ZWREYXRhLmFsbFNlbGVjdGVkfVxuICAgICAgICAgICAgYXJpYS1sYWJlbD1cInNlbGVjdC1hbGxcIlxuICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJzZWxlY3QtYWxsXCJcbiAgICAgICAgICAgIHRhYkluZGV4PXswfVxuICAgICAgICAgICAgcm9sZT1cIm9wdGlvblwiXG4gICAgICAgICAgICBvbktleURvd249e2V2ZW50ID0+XG4gICAgICAgICAgICAgIFsnICcsICdFbnRlciddLmluY2x1ZGVzKGV2ZW50LmtleSkgPyBzZWxlY3RBbGxPcHRpb25zKCkgOiBudWxsXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvbkNsaWNrPXtzZWxlY3RBbGxPcHRpb25zfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxTdHlsZWRDaGVja2JveFxuICAgICAgICAgICAgICBjaGVja2VkPXtzZWxlY3RlZERhdGEuYWxsU2VsZWN0ZWR9XG4gICAgICAgICAgICAgIGRpc2FibGVkPXtmYWxzZX1cbiAgICAgICAgICAgICAgdmFsdWU9XCJzZWxlY3QtYWxsXCJcbiAgICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJzZWxlY3QtYWxsLWNoZWNrYm94XCJcbiAgICAgICAgICAgICAgdGFiSW5kZXg9ey0xfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8U3RhY2sgZGlyZWN0aW9uPVwiY29sdW1uXCI+XG4gICAgICAgICAgICAgICAgPFRleHQgYXM9XCJzcGFuXCIgdmFyaWFudD1cImJvZHlcIiBwbGFjZW1lbnQ9XCJsZWZ0XCI+XG4gICAgICAgICAgICAgICAgICB7c2VsZWN0QWxsLmxhYmVsfVxuICAgICAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgICAgICA8VGV4dFxuICAgICAgICAgICAgICAgICAgYXM9XCJzcGFuXCJcbiAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJib2R5U21hbGxcIlxuICAgICAgICAgICAgICAgICAgc2VudGltZW50PVwibmV1dHJhbFwiXG4gICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJsZWZ0XCJcbiAgICAgICAgICAgICAgICAgIHByb21pbmVuY2U9XCJ3ZWFrXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICB7c2VsZWN0QWxsLmRlc2NyaXB0aW9ufVxuICAgICAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgICAgPC9TdGFjaz5cbiAgICAgICAgICAgIDwvU3R5bGVkQ2hlY2tib3g+XG4gICAgICAgICAgPC9Ecm9wZG93bkl0ZW0+XG4gICAgICAgIDwvU3RhY2s+XG4gICAgICApIDogbnVsbH1cbiAgICAgIDxTdGFjayBpZD1cIml0ZW1zXCIgZ2FwPXswLjI1fT5cbiAgICAgICAge2lzTG9hZGluZyA/IChcbiAgICAgICAgICA8U2tlbGV0b24gdmFyaWFudD1cImJsb2NrXCIgLz5cbiAgICAgICAgKSA6IChcbiAgICAgICAgICBkaXNwbGF5ZWRPcHRpb25zLm1hcCgob3B0aW9uLCBpbmRleCkgPT4gKFxuICAgICAgICAgICAgPERyb3Bkb3duSXRlbVxuICAgICAgICAgICAgICBrZXk9e29wdGlvbi52YWx1ZX1cbiAgICAgICAgICAgICAgYXJpYS1kaXNhYmxlZD17ISFvcHRpb24uZGlzYWJsZWR9XG4gICAgICAgICAgICAgIGFyaWEtc2VsZWN0ZWQ9e1xuICAgICAgICAgICAgICAgIHNlbGVjdGVkRGF0YS5zZWxlY3RlZFZhbHVlcy5pbmNsdWRlcyhvcHRpb24udmFsdWUpICYmXG4gICAgICAgICAgICAgICAgIW9wdGlvbi5kaXNhYmxlZFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIW9wdGlvbi5kaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgICAgaGFuZGxlQ2xpY2sob3B0aW9uKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgYXJpYS1sYWJlbD17b3B0aW9uLnZhbHVlfVxuICAgICAgICAgICAgICBkYXRhLXRlc3RpZD17YG9wdGlvbi0ke29wdGlvbi52YWx1ZX1gfVxuICAgICAgICAgICAgICBpZD17YG9wdGlvbi0ke2luZGV4fWB9XG4gICAgICAgICAgICAgIHJvbGU9XCJvcHRpb25cIlxuICAgICAgICAgICAgICB0YWJJbmRleD17IW9wdGlvbi5kaXNhYmxlZCA/IDAgOiAtMX1cbiAgICAgICAgICAgICAgcmVmPXtcbiAgICAgICAgICAgICAgICBvcHRpb24udmFsdWUgPT09IGRlZmF1bHRTZWFyY2hWYWx1ZSB8fFxuICAgICAgICAgICAgICAgIG9wdGlvbi5zZWFyY2hUZXh0ID09PSBkZWZhdWx0U2VhcmNoVmFsdWVcbiAgICAgICAgICAgICAgICAgID8gZm9jdXNlZEl0ZW1SZWZcbiAgICAgICAgICAgICAgICAgIDogbnVsbFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIG9uS2V5RG93bj17ZXZlbnQgPT5cbiAgICAgICAgICAgICAgICBbJyAnLCAnRW50ZXInXS5pbmNsdWRlcyhldmVudC5rZXkpID8gaGFuZGxlQ2xpY2sob3B0aW9uKSA6IG51bGxcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7bXVsdGlzZWxlY3QgPyAoXG4gICAgICAgICAgICAgICAgPFN0eWxlZENoZWNrYm94XG4gICAgICAgICAgICAgICAgICBjaGVja2VkPXtcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzLmluY2x1ZGVzKG9wdGlvbi52YWx1ZSkgJiZcbiAgICAgICAgICAgICAgICAgICAgIW9wdGlvbi5kaXNhYmxlZFxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e29wdGlvbi5kaXNhYmxlZH1cbiAgICAgICAgICAgICAgICAgIHZhbHVlPXtvcHRpb24udmFsdWV9XG4gICAgICAgICAgICAgICAgICB0YWJJbmRleD17LTF9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPERpc3BsYXlPcHRpb25cbiAgICAgICAgICAgICAgICAgICAgb3B0aW9uPXtvcHRpb259XG4gICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uRGlyZWN0aW9uPXtkZXNjcmlwdGlvbkRpcmVjdGlvbn1cbiAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWxJbmZvUGxhY2VtZW50PXtvcHRpb25hbEluZm9QbGFjZW1lbnR9XG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvU3R5bGVkQ2hlY2tib3g+XG4gICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgPERpc3BsYXlPcHRpb25cbiAgICAgICAgICAgICAgICAgIG9wdGlvbj17b3B0aW9ufVxuICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb25EaXJlY3Rpb249e2Rlc2NyaXB0aW9uRGlyZWN0aW9ufVxuICAgICAgICAgICAgICAgICAgb3B0aW9uYWxJbmZvUGxhY2VtZW50PXtvcHRpb25hbEluZm9QbGFjZW1lbnR9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvRHJvcGRvd25JdGVtPlxuICAgICAgICAgICkpXG4gICAgICAgICl9XG4gICAgICAgIHtsb2FkTW9yZSA/IDxMb2FkTW9yZT57bG9hZE1vcmV9PC9Mb2FkTW9yZT4gOiBudWxsfVxuICAgICAgPC9TdGFjaz5cbiAgICA8L0Ryb3Bkb3duQ29udGFpbmVyPlxuICApXG59XG5leHBvcnQgY29uc3QgRHJvcGRvd24gPSAoe1xuICBjaGlsZHJlbixcbiAgZW1wdHlTdGF0ZSxcbiAgZGVzY3JpcHRpb25EaXJlY3Rpb24sXG4gIHNlYXJjaGFibGUsXG4gIHBsYWNlaG9sZGVyLFxuICBmb290ZXIsXG4gIHJlZlNlbGVjdCxcbiAgbG9hZE1vcmUsXG4gIG9wdGlvbmFsSW5mb1BsYWNlbWVudCxcbiAgaXNMb2FkaW5nLFxuICBzaXplLFxufTogRHJvcGRvd25Qcm9wcykgPT4ge1xuICBjb25zdCB7XG4gICAgc2V0SXNEcm9wZG93blZpc2libGUsXG4gICAgaXNEcm9wZG93blZpc2libGUsXG4gICAgb25TZWFyY2gsXG4gICAgc2VhcmNoSW5wdXQsXG4gICAgb3B0aW9ucyxcbiAgICBkaXNwbGF5ZWRPcHRpb25zLFxuICAgIG51bWJlck9mT3B0aW9ucyxcbiAgfSA9IHVzZVNlbGVjdElucHV0KClcbiAgY29uc3QgdGhlbWUgPSB1c2VUaGVtZSgpXG4gIGNvbnN0IFtzZWFyY2hCYXJBY3RpdmUsIHNldFNlYXJjaEJhckFjdGl2ZV0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW2RlZmF1bHRTZWFyY2hWYWx1ZSwgc2V0RGVmYXVsdFNlYXJjaF0gPSB1c2VTdGF0ZTxzdHJpbmcgfCBudWxsPihudWxsKVxuICBjb25zdCByZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IFtzZWFyY2gsIHNldFNlYXJjaF0gPSB1c2VTdGF0ZTxzdHJpbmc+KCcnKVxuICBjb25zdCBbbWF4V2lkdGgsIHNldFdpZHRoXSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bWJlcj4oKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHJlZlNlbGVjdC5jdXJyZW50ICYmIGlzRHJvcGRvd25WaXNpYmxlKSB7XG4gICAgICBjb25zdCBwb3NpdGlvbiA9XG4gICAgICAgIHJlZlNlbGVjdC5jdXJyZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmJvdHRvbSArXG4gICAgICAgIERST1BET1dOX01BWF9IRUlHSFQgK1xuICAgICAgICBJTlBVVF9TSVpFX0hFSUdIVFtzaXplXSArXG4gICAgICAgIHBhcnNlSW50KHRoZW1lLnNwYWNlWyc1J10sIDEwKVxuICAgICAgY29uc3Qgb3ZlcmZsb3cgPSBwb3NpdGlvbiAtIHdpbmRvdy5pbm5lckhlaWdodFxuICAgICAgaWYgKG92ZXJmbG93ID4gMCkge1xuICAgICAgICBjb25zdCBtb2RhbEVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYmFja2Ryb3AtbW9kYWwnKVxuXG4gICAgICAgIGlmIChtb2RhbEVsZW1lbnQpIHtcbiAgICAgICAgICBtb2RhbEVsZW1lbnQuc2Nyb2xsQnkoeyB0b3A6IG92ZXJmbG93LCBiZWhhdmlvcjogJ3Ntb290aCcgfSlcbiAgICAgICAgfSBlbHNlIHdpbmRvdy5zY3JvbGxCeSh7IHRvcDogb3ZlcmZsb3csIGJlaGF2aW9yOiAnc21vb3RoJyB9KVxuICAgICAgfVxuICAgIH1cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvZXhoYXVzdGl2ZS1kZXBzXG4gIH0sIFtpc0Ryb3Bkb3duVmlzaWJsZSwgcmVmU2VsZWN0LCBzaXplLCByZWYuY3VycmVudF0pXG5cbiAgY29uc3QgcmVzaXplRHJvcGRvd24gPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKFxuICAgICAgcmVmU2VsZWN0LmN1cnJlbnQgJiZcbiAgICAgIHJlZlNlbGVjdC5jdXJyZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoID4gMFxuICAgICkge1xuICAgICAgc2V0V2lkdGgocmVmU2VsZWN0LmN1cnJlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGgpXG4gICAgfVxuICB9LCBbcmVmU2VsZWN0XSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHJlc2l6ZURyb3Bkb3duKClcblxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCByZXNpemVEcm9wZG93bilcblxuICAgIHJldHVybiAoKSA9PiB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgcmVzaXplRHJvcGRvd24pXG4gIH0sIFtyZXNpemVEcm9wZG93bl0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIXNlYXJjaElucHV0KSB7XG4gICAgICBvblNlYXJjaChvcHRpb25zKVxuICAgIH1cbiAgfSwgW29uU2VhcmNoLCBvcHRpb25zLCBzZWFyY2hJbnB1dF0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWlzRHJvcGRvd25WaXNpYmxlKSB7XG4gICAgICBzZXREZWZhdWx0U2VhcmNoKG51bGwpXG4gICAgICBzZXRTZWFyY2goJycpXG4gICAgfVxuXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgZXZlbnQgPT5cbiAgICAgIGhhbmRsZUNsaWNrT3V0c2lkZShcbiAgICAgICAgZXZlbnQsXG4gICAgICAgIHJlZixcbiAgICAgICAgc2V0SXNEcm9wZG93blZpc2libGUsXG4gICAgICAgIHJlZlNlbGVjdCxcbiAgICAgICAgb25TZWFyY2gsXG4gICAgICAgIG9wdGlvbnMsXG4gICAgICApLFxuICAgIClcblxuICAgIGlmICghc2VhcmNoYWJsZSkge1xuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIGV2ZW50ID0+XG4gICAgICAgIGhhbmRsZUtleURvd24oXG4gICAgICAgICAgZXZlbnQsXG4gICAgICAgICAgcmVmLFxuICAgICAgICAgIG9wdGlvbnMsXG4gICAgICAgICAgc2VhcmNoQmFyQWN0aXZlLFxuICAgICAgICAgIHNldFNlYXJjaCxcbiAgICAgICAgICBzZXREZWZhdWx0U2VhcmNoLFxuICAgICAgICAgIHNlYXJjaCxcbiAgICAgICAgKSxcbiAgICAgIClcbiAgICB9XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgZXZlbnQgPT5cbiAgICAgICAgaGFuZGxlQ2xpY2tPdXRzaWRlKFxuICAgICAgICAgIGV2ZW50LFxuICAgICAgICAgIHJlZixcbiAgICAgICAgICBzZXRJc0Ryb3Bkb3duVmlzaWJsZSxcbiAgICAgICAgICByZWZTZWxlY3QsXG4gICAgICAgICAgb25TZWFyY2gsXG4gICAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgKSxcbiAgICAgIClcblxuICAgICAgaWYgKCFzZWFyY2hhYmxlKSB7XG4gICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBldmVudCA9PlxuICAgICAgICAgIGhhbmRsZUtleURvd24oXG4gICAgICAgICAgICBldmVudCxcbiAgICAgICAgICAgIHJlZixcbiAgICAgICAgICAgIG9wdGlvbnMsXG4gICAgICAgICAgICBzZWFyY2hCYXJBY3RpdmUsXG4gICAgICAgICAgICBzZXRTZWFyY2gsXG4gICAgICAgICAgICBzZXREZWZhdWx0U2VhcmNoLFxuICAgICAgICAgICAgc2VhcmNoLFxuICAgICAgICAgICksXG4gICAgICAgIClcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtcbiAgICBpc0Ryb3Bkb3duVmlzaWJsZSxcbiAgICBzZWFyY2hCYXJBY3RpdmUsXG4gICAgb3B0aW9ucyxcbiAgICBvblNlYXJjaCxcbiAgICBzZWFyY2gsXG4gICAgcmVmU2VsZWN0LFxuICAgIHNldERlZmF1bHRTZWFyY2gsXG4gICAgc2V0SXNEcm9wZG93blZpc2libGUsXG4gICAgc2VhcmNoYWJsZSxcbiAgXSlcblxuICAvLyBObyBkYXRhIGlzIGRpc3BsYXllZCAoYmVjYXVzZSBvZiB0aGUgc2VhcmNoIG9yIGJlY2F1c2Ugbm8gZGF0YSBpcyBwcm92aWRlZClcbiAgLy8gU2V0IHRvIHRydWUgd2hlbiBub0RhdGEgYnkgZGVmYXVsdFxuICBjb25zdCBpc0VtcHR5ID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKG51bWJlck9mT3B0aW9ucyA9PT0gMCkgcmV0dXJuIHRydWVcbiAgICBpZiAoQXJyYXkuaXNBcnJheShkaXNwbGF5ZWRPcHRpb25zKSkge1xuICAgICAgcmV0dXJuICEoZGlzcGxheWVkT3B0aW9ucy5sZW5ndGggPiAwKVxuICAgIH1cbiAgICBjb25zdCBncm91cHMgPSBPYmplY3Qua2V5cyhkaXNwbGF5ZWRPcHRpb25zKVxuICAgIGZvciAoY29uc3QgZ3JvdXAgb2YgZ3JvdXBzKSB7XG4gICAgICBpZiAoZGlzcGxheWVkT3B0aW9uc1tncm91cF0ubGVuZ3RoICE9PSAwKSB7XG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0cnVlXG4gIH0sIFtkaXNwbGF5ZWRPcHRpb25zLCBudW1iZXJPZk9wdGlvbnNdKVxuXG4gIGNvbnN0IGNvbXB1dGVkRm9vdGVyID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKGZvb3Rlcikge1xuICAgICAgaWYgKHR5cGVvZiBmb290ZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICA8UG9wdXBGb290ZXI+e2Zvb3RlcigoKSA9PiBzZXRJc0Ryb3Bkb3duVmlzaWJsZShmYWxzZSkpfTwvUG9wdXBGb290ZXI+XG4gICAgICAgIClcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIDxQb3B1cEZvb3Rlcj57Zm9vdGVyfTwvUG9wdXBGb290ZXI+XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGxcbiAgfSwgW2Zvb3Rlciwgc2V0SXNEcm9wZG93blZpc2libGVdKVxuXG4gIHJldHVybiAoXG4gICAgPFN0eWxlZFBvcHVwXG4gICAgICB2aXNpYmxlPXtpc0Ryb3Bkb3duVmlzaWJsZX1cbiAgICAgIHRleHQ9e1xuICAgICAgICA8U3RhY2s+XG4gICAgICAgICAge3NlYXJjaGFibGUgJiYgIWlzTG9hZGluZyAmJiBudW1iZXJPZk9wdGlvbnMgPj0gNiA/IChcbiAgICAgICAgICAgIDxTZWFyY2hCYXJEcm9wZG93blxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj17cGxhY2Vob2xkZXJ9XG4gICAgICAgICAgICAgIGRpc3BsYXllZE9wdGlvbnM9e2Rpc3BsYXllZE9wdGlvbnN9XG4gICAgICAgICAgICAgIHNldFNlYXJjaEJhckFjdGl2ZT17c2V0U2VhcmNoQmFyQWN0aXZlfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICA8Q3JlYXRlRHJvcGRvd25cbiAgICAgICAgICAgIGlzRW1wdHk9e2lzRW1wdHl9XG4gICAgICAgICAgICBlbXB0eVN0YXRlPXtlbXB0eVN0YXRlfVxuICAgICAgICAgICAgZGVzY3JpcHRpb25EaXJlY3Rpb249e2Rlc2NyaXB0aW9uRGlyZWN0aW9ufVxuICAgICAgICAgICAgbG9hZE1vcmU9e2xvYWRNb3JlfVxuICAgICAgICAgICAgb3B0aW9uYWxJbmZvUGxhY2VtZW50PXtvcHRpb25hbEluZm9QbGFjZW1lbnR9XG4gICAgICAgICAgICBkZWZhdWx0U2VhcmNoVmFsdWU9e2RlZmF1bHRTZWFyY2hWYWx1ZX1cbiAgICAgICAgICAgIGlzTG9hZGluZz17aXNMb2FkaW5nfVxuICAgICAgICAgIC8+XG4gICAgICAgICAge2NvbXB1dGVkRm9vdGVyfVxuICAgICAgICA8L1N0YWNrPlxuICAgICAgfVxuICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcbiAgICAgIGRpc2FibGVBbmltYXRpb25cbiAgICAgIG1heFdpZHRoPXttYXhXaWR0aCA/PyByZWZTZWxlY3QuY3VycmVudD8ub2Zmc2V0V2lkdGh9XG4gICAgICBoYXNBcnJvdz17ZmFsc2V9XG4gICAgICByZWY9e3JlZn1cbiAgICAgIHRhYkluZGV4PXswfVxuICAgICAgcm9sZT1cImRpYWxvZ1wiXG4gICAgICBkZWJvdW5jZURlbGF5PXswfVxuICAgICAgY29udGFpbmVyRnVsbFdpZHRoXG4gICAgICBhbGlnbj1cInN0YXJ0XCJcbiAgICA+XG4gICAgICB7Y2hpbGRyZW59XG4gICAgPC9TdHlsZWRQb3B1cD5cbiAgKVxufVxuIl19 */",
91
91
  toString: _EMOTION_STRINGIFIED_CSS_ERROR__
92
92
  });
93
93
  const DropdownItem = /* @__PURE__ */ _styled__default.default("div", process.env.NODE_ENV === "production" ? {
@@ -127,7 +127,7 @@ const DropdownItem = /* @__PURE__ */ _styled__default.default("div", process.env
127
127
  theme
128
128
  }) => theme.colors.neutral.backgroundStrongDisabled, ";color:", ({
129
129
  theme
130
- }) => theme.colors.neutral.textStrongDisabled, ";cursor:not-allowed;outline:none;}" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL3VsdHJhdmlvbGV0L3VsdHJhdmlvbGV0L3BhY2thZ2VzL3VpL3NyYy9jb21wb25lbnRzL1NlbGVjdElucHV0VjIvRHJvcGRvd24udHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXFIRSIsImZpbGUiOiIvaG9tZS9ydW5uZXIvd29yay91bHRyYXZpb2xldC91bHRyYXZpb2xldC9wYWNrYWdlcy91aS9zcmMvY29tcG9uZW50cy9TZWxlY3RJbnB1dFYyL0Ryb3Bkb3duLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZVRoZW1lIH0gZnJvbSAnQGVtb3Rpb24vcmVhY3QnXG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCdcbmltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB0eXBlIHtcbiAgRGlzcGF0Y2gsXG4gIEtleWJvYXJkRXZlbnQsXG4gIFJlYWN0Tm9kZSxcbiAgUmVmT2JqZWN0LFxuICBTZXRTdGF0ZUFjdGlvbixcbn0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBDaGVja2JveCB9IGZyb20gJy4uL0NoZWNrYm94J1xuaW1wb3J0IHsgUG9wdXAgfSBmcm9tICcuLi9Qb3B1cCdcbmltcG9ydCB7IFNrZWxldG9uIH0gZnJvbSAnLi4vU2tlbGV0b24nXG5pbXBvcnQgeyBTdGFjayB9IGZyb20gJy4uL1N0YWNrJ1xuaW1wb3J0IHsgVGV4dCB9IGZyb20gJy4uL1RleHQnXG5pbXBvcnQgeyBEaXNwbGF5T3B0aW9uIH0gZnJvbSAnLi9Ecm9wZG93bk9wdGlvbidcbmltcG9ydCB7IFNlYXJjaEJhckRyb3Bkb3duIH0gZnJvbSAnLi9TZWFyY2hCYXJEcm9wZG93bidcbmltcG9ydCB7IHVzZVNlbGVjdElucHV0IH0gZnJvbSAnLi9TZWxlY3RJbnB1dFByb3ZpZGVyJ1xuaW1wb3J0IHsgdHlwZSBEYXRhVHlwZSwgSU5QVVRfU0laRV9IRUlHSFQsIHR5cGUgT3B0aW9uVHlwZSB9IGZyb20gJy4vdHlwZXMnXG5cbmNvbnN0IERST1BET1dOX01BWF9IRUlHSFQgPSAyNTZcblxuZXhwb3J0IHR5cGUgRHJvcGRvd25Qcm9wcyA9IHtcbiAgY2hpbGRyZW46IFJlYWN0Tm9kZVxuICBlbXB0eVN0YXRlOiBSZWFjdE5vZGVcbiAgZGVzY3JpcHRpb25EaXJlY3Rpb246ICdyb3cnIHwgJ2NvbHVtbidcbiAgc2VhcmNoYWJsZTogYm9vbGVhblxuICBwbGFjZWhvbGRlcjogc3RyaW5nXG4gIGZvb3Rlcj86IFJlYWN0Tm9kZVxuICByZWZTZWxlY3Q6IFJlZk9iamVjdDxIVE1MRGl2RWxlbWVudD5cbiAgbG9hZE1vcmU/OiBSZWFjdE5vZGVcbiAgb3B0aW9uYWxJbmZvUGxhY2VtZW50OiAnbGVmdCcgfCAncmlnaHQnXG4gIGlzTG9hZGluZz86IGJvb2xlYW5cbiAgc2l6ZTogJ3NtYWxsJyB8ICdtZWRpdW0nIHwgJ2xhcmdlJ1xufVxuXG5leHBvcnQgdHlwZSBDcmVhdGVEcm9wZG93blByb3BzID0ge1xuICBpc0VtcHR5OiBib29sZWFuXG4gIGVtcHR5U3RhdGU6IFJlYWN0Tm9kZVxuICBkZXNjcmlwdGlvbkRpcmVjdGlvbjogJ3JvdycgfCAnY29sdW1uJ1xuICBsb2FkTW9yZT86IFJlYWN0Tm9kZVxuICBvcHRpb25hbEluZm9QbGFjZW1lbnQ6ICdsZWZ0JyB8ICdyaWdodCdcbiAgZGVmYXVsdFNlYXJjaFZhbHVlOiBzdHJpbmcgfCBudWxsXG4gIGlzTG9hZGluZz86IGJvb2xlYW5cbn1cblxuY29uc3QgTk9OX1NFQVJDSEFCTEVfS0VZUyA9IFtcbiAgJ1RhYicsXG4gICcgJyxcbiAgJ0VudGVyJyxcbiAgJ0NhcHNMb2NrJyxcbiAgJ1NoaWZ0JyxcbiAgJ0Fycm93RG93bicsXG4gICdBcnJvd1VwJyxcbiAgJ0Fycm93TGVmdCcsXG4gICdBcnJvd1JpZ2h0JyxcbiAgJ0VzY2FwZScsXG5dXG5cbmNvbnN0IFN0eWxlZFBvcHVwID0gc3R5bGVkKFBvcHVwKWBcbiAgd2lkdGg6IDEwMCU7XG4gIG1pbi13aWR0aDogMzIwcHg7XG4gIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm90aGVyLmVsZXZhdGlvbi5iYWNrZ3JvdW5kLnJhaXNlZH07XG4gIGNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5uZXV0cmFsLnRleHR9O1xuICBib3gtc2hhZG93OiAkeyh7IHRoZW1lIH0pID0+IGAke3RoZW1lLnNoYWRvd3MucmFpc2VkWzBdfSwgJHt0aGVtZS5zaGFkb3dzLnJhaXNlZFsxXX1gfTtcbiAgcGFkZGluZzogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVswXX07XG4gIG1hcmdpbi1ib3R0b206ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMTBdfTtcbmBcblxuY29uc3QgRHJvcGRvd25Db250YWluZXIgPSBzdHlsZWQoU3RhY2spPHsgJ2RhdGEtZ3JvdXBlZCc6IGJvb2xlYW4gfT5gXG4gIG1heC1oZWlnaHQ6ICR7RFJPUERPV05fTUFYX0hFSUdIVH1weDtcbiAgb3ZlcmZsb3cteTogc2Nyb2xsO1xuICBwYWRkaW5nOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzBdfTtcbiAgcGFkZGluZy1ib3R0b206ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMC41XX07XG4gIHBhZGRpbmctdG9wOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzAuNV19O1xuXG4gICZbZGF0YS1ncm91cGVkPVwidHJ1ZVwiXSB7XG4gICAgcGFkZGluZy10b3A6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMF19O1xuICB9XG5gXG5jb25zdCBEcm9wZG93bkdyb3VwID0gc3R5bGVkLmJ1dHRvbjx7ICdkYXRhLXNlbGVjdGdyb3VwJzogYm9vbGVhbiB9PmBcbiAgZGlzcGxheTogZmxleDtcbiAgd2lkdGg6IDEwMCU7XG4gIGp1c3RpZnktY29udGVudDogbGVmdDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgYm9yZGVyOiBub25lO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5uZXV0cmFsLmJhY2tncm91bmRXZWFrfTtcbiAgcG9zaXRpb246IHN0aWNreTtcbiAgdG9wOiAwcHg7XG4gIHBhZGRpbmctcmlnaHQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMl19O1xuICBwYWRkaW5nLWxlZnQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMl19O1xuICBoZWlnaHQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbNF19O1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xuICBtYXJnaW4tYm90dG9tOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWycwLjI1J119O1xuXG4gICY6Zm9jdXMge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwuYmFja2dyb3VuZFdlYWt9O1xuICAgIG91dGxpbmU6IG5vbmU7XG4gIH1cblxuICAmW2RhdGEtc2VsZWN0Z3JvdXA9J3RydWUnXSB7XG4gICAgcGFkZGluZy1sZWZ0OiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzJdfTtcbiAgICBib3JkZXItbGVmdDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVswLjVdfSBzb2xpZCAkeyh7IHRoZW1lIH0pID0+XG4gICAgICB0aGVtZS5jb2xvcnMubmV1dHJhbC5iYWNrZ3JvdW5kV2Vha307XG4gIH1cblxuICAmW2RhdGEtc2VsZWN0Z3JvdXA9J3RydWUnXTpmb2N1cyB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMubmV1dHJhbC5iYWNrZ3JvdW5kSG92ZXJ9O1xuICB9XG5gXG5jb25zdCBEcm9wZG93bkdyb3VwV3JhcHBlciA9IHN0eWxlZC5kaXZgXG4gIHBvc2l0aW9uOiBzdGlja3k7XG4gIHRvcDogMHB4O1xuYFxuY29uc3QgRHJvcGRvd25JdGVtID0gc3R5bGVkLmRpdjx7XG4gICdhcmlhLXNlbGVjdGVkJzogYm9vbGVhblxuICAnYXJpYS1kaXNhYmxlZCc6IGJvb2xlYW5cbn0+YFxuICB0ZXh0LWFsaWduOmxlZnQ7XG4gIGJvcmRlcjogbm9uZTtcbiAgYmFja2dyb3VuZC1jb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMub3RoZXIuZWxldmF0aW9uLmJhY2tncm91bmQucmFpc2VkfTtcblxuICBwYWRkaW5nOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWycxLjUnXX0gJHsoeyB0aGVtZSB9KSA9PlxuICAgIHRoZW1lLnNwYWNlWycyJ119ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbJzEuNSddfSAkeyh7IHRoZW1lIH0pID0+XG4gICAgdGhlbWUuc3BhY2VbJzInXX07XG4gIG1hcmdpbi1sZWZ0OiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWycwLjUnXX07XG4gIG1hcmdpbi1yaWdodDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsnMC41J119O1xuXG4gIGNvbG9yOiAgJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMubmV1dHJhbC50ZXh0fTtcbiAgYm9yZGVyLXJhZGl1czogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5yYWRpaS5kZWZhdWx0fTtcblxuICAmOmhvdmVyLCA6Zm9jdXMge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLnByaW1hcnkuYmFja2dyb3VuZH07XG4gICAgY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLnByaW1hcnkudGV4dH07XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIG91dGxpbmU6IG5vbmU7XG4gIH1cblxuICAmW2FyaWEtc2VsZWN0ZWQ9J3RydWUnXSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMucHJpbWFyeS5iYWNrZ3JvdW5kfTtcbiAgfVxuXG4gICZbYXJpYS1kaXNhYmxlZD1cInRydWVcIl0ge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwuYmFja2dyb3VuZERpc2FibGVkfTtcbiAgICBjb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMubmV1dHJhbC50ZXh0RGlzYWJsZWR9O1xuICB9XG5cbiAgJlthcmlhLWRpc2FibGVkPVwidHJ1ZVwiXTpob3ZlciwgW2FyaWEtZGlzYWJsZWQ9XCJ0cnVlXCJdOmZvY3VzIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7IHRoZW1lIH0pID0+XG4gICAgICB0aGVtZS5jb2xvcnMubmV1dHJhbC5iYWNrZ3JvdW5kU3Ryb25nRGlzYWJsZWR9O1xuICAgIGNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5uZXV0cmFsLnRleHRTdHJvbmdEaXNhYmxlZH07XG4gICAgY3Vyc29yOiBub3QtYWxsb3dlZDtcbiAgICBvdXRsaW5lOiBub25lO1xuICB9XG5gXG5cbmNvbnN0IFBvcHVwRm9vdGVyID0gc3R5bGVkLmRpdmBcbiAgd2lkdGg6IDEwMCU7XG4gIHBhZGRpbmc6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMS41XX0gJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsyXX1cbiAgICAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzEuNV19ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMl19O1xuICBib3gtc2hhZG93OiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNoYWRvd3MuZHJvcGRvd259O1xuYFxuY29uc3QgU3R5bGVkQ2hlY2tib3ggPSBzdHlsZWQoQ2hlY2tib3gpYFxuICB3aWR0aDogMTAwJTtcbiAgcG9zaXRpb246IHN0YXRpYztcbiAgdGV4dC1hbGlnbjogbGVmdDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG5gIC8vIHBvaW50ZXItZXZlbnRzOiBub25lIHByZXZlbnRzIGFueSBlcnJvciB3aGVuIHVzaW5nIHRoZSBjaGVja2JveCBpbiBhIGZvcm0gc2luY2UgaXQgaXMgYW4gdW5uYW1lZCBpbnB1dFxuXG5jb25zdCBFbXB0eVN0YXRlID0gc3R5bGVkKFN0YWNrKWBcbiAgcGFkZGluZzogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsyXX07XG5gXG5jb25zdCBMb2FkTW9yZSA9IHN0eWxlZChTdGFjaylgXG4gIHBhZGRpbmc6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMC41XX07XG5gXG5cbmNvbnN0IG1vdmVGb2N1c0Rvd24gPSAoKSA9PiB7XG4gIGNvbnN0IG9wdGlvbnMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFxuICAgICcjaXRlbXMgPiBkaXZbcm9sZT1cIm9wdGlvblwiXTpub3QoW2Rpc2FibGVkXSknLFxuICApXG4gIGNvbnN0IGFjdGl2ZUl0ZW0gPSBkb2N1bWVudC5hY3RpdmVFbGVtZW50XG4gIGlmIChvcHRpb25zKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBvcHRpb25zPy5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgY29uc3QgbGlzdExlbmd0aCA9IG9wdGlvbnMubGVuZ3RoXG4gICAgICBpZiAoYWN0aXZlSXRlbSA9PT0gb3B0aW9uc1tpXSAmJiBhY3RpdmVJdGVtICE9PSBvcHRpb25zW2xpc3RMZW5ndGggLSAxXSkge1xuICAgICAgICA7KG9wdGlvbnNbaSArIDFdIGFzIEhUTUxFbGVtZW50KS5mb2N1cygpXG4gICAgICB9XG4gICAgfVxuICB9XG59XG5jb25zdCBtb3ZlRm9jdXNVcCA9ICgpID0+IHtcbiAgY29uc3Qgb3B0aW9ucyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXG4gICAgJyNpdGVtcyA+IGRpdltyb2xlPVwib3B0aW9uXCJdOm5vdChbZGlzYWJsZWRdKScsXG4gIClcbiAgY29uc3QgYWN0aXZlSXRlbSA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnRcblxuICBpZiAob3B0aW9ucykge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgb3B0aW9ucy5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgaWYgKGFjdGl2ZUl0ZW0gPT09IG9wdGlvbnNbaV0gJiYgYWN0aXZlSXRlbSAhPT0gb3B0aW9uc1swXSkge1xuICAgICAgICA7KG9wdGlvbnNbaSAtIDFdIGFzIEhUTUxFbGVtZW50KS5mb2N1cygpXG4gICAgICB9XG4gICAgfVxuICB9XG59XG5jb25zdCBoYW5kbGVLZXlEb3duU2VsZWN0ID0gKGV2ZW50OiBLZXlib2FyZEV2ZW50PEhUTUxEaXZFbGVtZW50PikgPT4ge1xuICBpZiAoZXZlbnQua2V5ID09PSAnQXJyb3dEb3duJykge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICBtb3ZlRm9jdXNEb3duKClcbiAgfVxuXG4gIGlmIChldmVudC5rZXkgPT09ICdBcnJvd1VwJykge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICBtb3ZlRm9jdXNVcCgpXG4gIH1cbn1cbmNvbnN0IGhhbmRsZUNsaWNrT3V0c2lkZSA9IChcbiAgZXZlbnQ6IE1vdXNlRXZlbnQsXG4gIHJlZjogUmVmT2JqZWN0PEhUTUxEaXZFbGVtZW50PixcbiAgc2V0SXNEcm9wZG93blZpc2liaWxlOiBEaXNwYXRjaDxTZXRTdGF0ZUFjdGlvbjxib29sZWFuPj4sXG4gIHJlZlNlbGVjdDogUmVmT2JqZWN0PEhUTUxEaXZFbGVtZW50PixcbiAgb25TZWFyY2g6IERpc3BhdGNoPFNldFN0YXRlQWN0aW9uPERhdGFUeXBlPj4sXG4gIG9wdGlvbnM6IERhdGFUeXBlLFxuKSA9PiB7XG4gIGlmIChcbiAgICByZWYuY3VycmVudCAmJlxuICAgICFyZWYuY3VycmVudC5jb250YWlucyhldmVudC50YXJnZXQgYXMgTm9kZSkgJiZcbiAgICAhcmVmU2VsZWN0LmN1cnJlbnQ/LmNvbnRhaW5zKGV2ZW50LnRhcmdldCBhcyBOb2RlKVxuICApIHtcbiAgICBzZXRJc0Ryb3Bkb3duVmlzaWJpbGUoZmFsc2UpIC8vIGhpZGUgZHJvcGRvd24gd2hlbiBjbGlja2luZyBvdXRzaWRlIG9mIHRoZSBkcm9wZG93blxuICAgIG9uU2VhcmNoKG9wdGlvbnMpIC8vIHJlc2V0IGRpc3BsYXllZCBvcHRpb25zIHRvIGRlZmF1bHQgd2hlbiBkcm9wZG93biBpcyBoaWRkZW5cbiAgfVxufVxuXG5jb25zdCBoYW5kbGVLZXlEb3duID0gKFxuICBldmVudDogZ2xvYmFsVGhpcy5LZXlib2FyZEV2ZW50LFxuICByZWY6IFJlZk9iamVjdDxIVE1MRGl2RWxlbWVudD4sXG4gIG9wdGlvbnM6IERhdGFUeXBlLFxuICBzZWFyY2hCYXJBY3RpdmU6IGJvb2xlYW4sXG4gIHNldFNlYXJjaDogRGlzcGF0Y2g8U2V0U3RhdGVBY3Rpb248c3RyaW5nPj4sXG4gIHNldERlZmF1bHRTZWFyY2g6IERpc3BhdGNoPFNldFN0YXRlQWN0aW9uPHN0cmluZyB8IG51bGw+PixcbiAgc2VhcmNoOiBzdHJpbmcsXG4pID0+IHtcbiAgLy8gRGVhbHMgd2l0aCBkZWZhdWx0IHNlYXJjaFxuICBpZiAoXG4gICAgcmVmLmN1cnJlbnQgJiZcbiAgICAhc2VhcmNoQmFyQWN0aXZlICYmXG4gICAgIU5PTl9TRUFSQ0hBQkxFX0tFWVMuaW5jbHVkZXMoZXZlbnQua2V5KSAmJlxuICAgIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ/LmFyaWFMYWJlbCAhPT0gJ3NlYXJjaC1iYXInXG4gICkge1xuICAgIGNvbnN0IGN1cnJlbnRTZWFyY2ggPSBzZWFyY2ggKyBldmVudC5rZXlcbiAgICBzZXRTZWFyY2goY3VycmVudFNlYXJjaClcbiAgICByZWYuY3VycmVudC5mb2N1cygpXG4gICAgaWYgKCFBcnJheS5pc0FycmF5KG9wdGlvbnMpKSB7XG4gICAgICBjb25zdCBjbG9zZXN0T3B0aW9ucyA9IHsgLi4ub3B0aW9ucyB9XG4gICAgICBPYmplY3Qua2V5cyhjbG9zZXN0T3B0aW9ucykubWFwKChncm91cDogc3RyaW5nKSA9PiB7XG4gICAgICAgIGNsb3Nlc3RPcHRpb25zW2dyb3VwXSA9IGNsb3Nlc3RPcHRpb25zW2dyb3VwXS5maWx0ZXIob3B0aW9uID0+XG4gICAgICAgICAgb3B0aW9uLnNlYXJjaFRleHRcbiAgICAgICAgICAgID8gb3B0aW9uLnNlYXJjaFRleHQudG9Mb2NhbGVMb3dlckNhc2UoKS5zdGFydHNXaXRoKGN1cnJlbnRTZWFyY2gpXG4gICAgICAgICAgICA6IG9wdGlvbi52YWx1ZS50b0xvY2FsZUxvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoY3VycmVudFNlYXJjaCksXG4gICAgICAgIClcblxuICAgICAgICByZXR1cm4gbnVsbFxuICAgICAgfSlcbiAgICAgIGNvbnN0IGNsb3Nlc3RPcHRpb24gPSBjbG9zZXN0T3B0aW9uc1tPYmplY3Qua2V5cyhjbG9zZXN0T3B0aW9ucylbMF1dWzBdXG4gICAgICBpZiAoY2xvc2VzdE9wdGlvbikge1xuICAgICAgICBzZXREZWZhdWx0U2VhcmNoKGNsb3Nlc3RPcHRpb24uc2VhcmNoVGV4dCA/PyBjbG9zZXN0T3B0aW9uLnZhbHVlKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2V0RGVmYXVsdFNlYXJjaChudWxsKVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBjbG9zZXN0T3B0aW9uID0gWy4uLm9wdGlvbnNdLmZpbHRlcihvcHRpb24gPT5cbiAgICAgICAgb3B0aW9uLnNlYXJjaFRleHRcbiAgICAgICAgICA/IG9wdGlvbi5zZWFyY2hUZXh0LnRvTG9jYWxlTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChjdXJyZW50U2VhcmNoKVxuICAgICAgICAgIDogb3B0aW9uLnZhbHVlLnRvTG9jYWxlTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChjdXJyZW50U2VhcmNoKSxcbiAgICAgIClbMF1cbiAgICAgIGlmIChjbG9zZXN0T3B0aW9uKSB7XG4gICAgICAgIHNldERlZmF1bHRTZWFyY2goY2xvc2VzdE9wdGlvbi5zZWFyY2hUZXh0ID8/IGNsb3Nlc3RPcHRpb24udmFsdWUpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzZXREZWZhdWx0U2VhcmNoKG51bGwpXG4gICAgICB9XG4gICAgfVxuICB9XG59XG5jb25zdCBDcmVhdGVEcm9wZG93biA9ICh7XG4gIGlzRW1wdHksXG4gIGVtcHR5U3RhdGUsXG4gIGRlc2NyaXB0aW9uRGlyZWN0aW9uLFxuICBsb2FkTW9yZSxcbiAgb3B0aW9uYWxJbmZvUGxhY2VtZW50LFxuICBkZWZhdWx0U2VhcmNoVmFsdWUsXG4gIGlzTG9hZGluZyxcbn06IENyZWF0ZURyb3Bkb3duUHJvcHMpID0+IHtcbiAgY29uc3Qge1xuICAgIHNldElzRHJvcGRvd25WaXNpYmxlLFxuICAgIG9uQ2hhbmdlLFxuICAgIG9wdGlvbnMsXG4gICAgbXVsdGlzZWxlY3QsXG4gICAgc2VsZWN0QWxsLFxuICAgIHNlbGVjdEFsbEdyb3VwLFxuICAgIGRpc3BsYXllZE9wdGlvbnMsXG4gICAgc2V0U2VsZWN0ZWREYXRhLFxuICAgIHNlbGVjdGVkRGF0YSxcbiAgfSA9IHVzZVNlbGVjdElucHV0KClcbiAgY29uc3QgZm9jdXNlZEl0ZW1SZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoZGVmYXVsdFNlYXJjaFZhbHVlICYmIGZvY3VzZWRJdGVtUmVmPy5jdXJyZW50KSB7XG4gICAgICBmb2N1c2VkSXRlbVJlZi5jdXJyZW50LmZvY3VzKClcbiAgICB9XG4gIH0sIFtkZWZhdWx0U2VhcmNoVmFsdWVdKVxuXG4gIGlmIChpc0VtcHR5KSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxFbXB0eVN0YXRlIGdhcD17Mn0gYWxpZ25JdGVtcz1cImNlbnRlclwiPlxuICAgICAgICB7ZW1wdHlTdGF0ZSA/PyAoXG4gICAgICAgICAgPFRleHQgdmFyaWFudD1cImJvZHlTdHJvbmdcIiBhcz1cInBcIj5cbiAgICAgICAgICAgIE5vIG9wdGlvbnNcbiAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICl9XG4gICAgICA8L0VtcHR5U3RhdGU+XG4gICAgKVxuICB9XG5cbiAgY29uc3QgaGFuZGxlQ2xpY2sgPSAoY2xpY2tlZE9wdGlvbjogT3B0aW9uVHlwZSwgZ3JvdXA/OiBzdHJpbmcpID0+IHtcbiAgICBzZXRTZWxlY3RlZERhdGEoeyB0eXBlOiAnc2VsZWN0T3B0aW9uJywgY2xpY2tlZE9wdGlvbiwgZ3JvdXAgfSlcbiAgICBpZiAobXVsdGlzZWxlY3QpIHtcbiAgICAgIGlmIChzZWxlY3RlZERhdGEuc2VsZWN0ZWRWYWx1ZXMuaW5jbHVkZXMoY2xpY2tlZE9wdGlvbi52YWx1ZSkpIHtcbiAgICAgICAgb25DaGFuZ2U/LihcbiAgICAgICAgICBzZWxlY3RlZERhdGEuc2VsZWN0ZWRWYWx1ZXMuZmlsdGVyKFxuICAgICAgICAgICAgdmFsID0+IHZhbCAhPT0gY2xpY2tlZE9wdGlvbi52YWx1ZSxcbiAgICAgICAgICApLFxuICAgICAgICApXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvbkNoYW5nZT8uKFsuLi5zZWxlY3RlZERhdGEuc2VsZWN0ZWRWYWx1ZXMsIGNsaWNrZWRPcHRpb24udmFsdWVdKVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBvbkNoYW5nZT8uKGNsaWNrZWRPcHRpb24udmFsdWUpXG4gICAgfVxuICAgIHNldElzRHJvcGRvd25WaXNpYmxlKG11bHRpc2VsZWN0KSAvLyBoaWRlIHRoZSBkcm9wZG93biBvbiBjbGljayB3aGVuIHNpbmdsZSBzZWxlY3Qgb25seVxuICB9XG5cbiAgY29uc3Qgc2VsZWN0QWxsT3B0aW9ucyA9ICgpID0+IHtcbiAgICBpZiAobXVsdGlzZWxlY3QpIHtcbiAgICAgIHNldFNlbGVjdGVkRGF0YSh7IHR5cGU6ICdzZWxlY3RBbGwnIH0pXG4gICAgICBpZiAoc2VsZWN0ZWREYXRhLmFsbFNlbGVjdGVkICYmIG9uQ2hhbmdlKSB7XG4gICAgICAgIG9uQ2hhbmdlKFtdKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgYWxsVmFsdWVzOiBPcHRpb25UeXBlW10gPSBbXVxuICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkob3B0aW9ucykpIHtcbiAgICAgICAgICBPYmplY3Qua2V5cyhvcHRpb25zKS5tYXAoKGdyb3VwOiBzdHJpbmcpID0+XG4gICAgICAgICAgICBvcHRpb25zW2dyb3VwXS5tYXAob3B0aW9uID0+IHtcbiAgICAgICAgICAgICAgaWYgKCFvcHRpb24uZGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICBhbGxWYWx1ZXMucHVzaChvcHRpb24pXG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICByZXR1cm4gbnVsbFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG9wdGlvbnMubWFwKG9wdGlvbiA9PiBhbGxWYWx1ZXMucHVzaChvcHRpb24pKVxuICAgICAgICB9XG4gICAgICAgIG9uQ2hhbmdlPy4oYWxsVmFsdWVzLm1hcCh2YWx1ZSA9PiB2YWx1ZS52YWx1ZSkpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc3QgaGFuZGxlU2VsZWN0R3JvdXAgPSAoZ3JvdXA6IHN0cmluZykgPT4ge1xuICAgIGlmIChtdWx0aXNlbGVjdCkge1xuICAgICAgc2V0U2VsZWN0ZWREYXRhKHsgdHlwZTogJ3NlbGVjdEdyb3VwJywgc2VsZWN0ZWRHcm91cDogZ3JvdXAgfSlcbiAgICAgIGlmICghQXJyYXkuaXNBcnJheShvcHRpb25zKSkge1xuICAgICAgICBpZiAoc2VsZWN0ZWREYXRhLnNlbGVjdGVkR3JvdXBzLmluY2x1ZGVzKGdyb3VwKSkge1xuICAgICAgICAgIGNvbnN0IG5ld1NlbGVjdGVkVmFsdWVzID0gWy4uLnNlbGVjdGVkRGF0YS5zZWxlY3RlZFZhbHVlc10uZmlsdGVyKFxuICAgICAgICAgICAgc2VsZWN0ZWRWYWx1ZSA9PlxuICAgICAgICAgICAgICAhb3B0aW9uc1tncm91cF0uZmluZChvcHRpb24gPT4gb3B0aW9uLnZhbHVlID09PSBzZWxlY3RlZFZhbHVlKSxcbiAgICAgICAgICApXG4gICAgICAgICAgb25DaGFuZ2U/LihuZXdTZWxlY3RlZFZhbHVlcylcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCBuZXdTZWxlY3RlZFZhbHVlcyA9IFsuLi5zZWxlY3RlZERhdGEuc2VsZWN0ZWRWYWx1ZXNdXG5cbiAgICAgICAgICBvcHRpb25zW2dyb3VwXS5tYXAob3B0aW9uID0+XG4gICAgICAgICAgICBuZXdTZWxlY3RlZFZhbHVlcy5pbmNsdWRlcyhvcHRpb24udmFsdWUpIHx8IG9wdGlvbi5kaXNhYmxlZFxuICAgICAgICAgICAgICA/IG51bGxcbiAgICAgICAgICAgICAgOiBuZXdTZWxlY3RlZFZhbHVlcy5wdXNoKG9wdGlvbi52YWx1ZSksXG4gICAgICAgICAgKVxuICAgICAgICAgIG9uQ2hhbmdlPy4obmV3U2VsZWN0ZWRWYWx1ZXMpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gIUFycmF5LmlzQXJyYXkoZGlzcGxheWVkT3B0aW9ucykgPyAoXG4gICAgPERyb3Bkb3duQ29udGFpbmVyXG4gICAgICByb2xlPVwibGlzdGJveFwiXG4gICAgICBpZD1cInNlbGVjdC1kcm9wZG93blwiXG4gICAgICBvbktleURvd249e2hhbmRsZUtleURvd25TZWxlY3R9XG4gICAgICBkYXRhLWdyb3VwZWRcbiAgICA+XG4gICAgICB7aXNMb2FkaW5nID8gKFxuICAgICAgICA8U2tlbGV0b24gdmFyaWFudD1cImJsb2NrXCIgLz5cbiAgICAgICkgOiAoXG4gICAgICAgIDw+XG4gICAgICAgICAge3NlbGVjdEFsbCAmJiBtdWx0aXNlbGVjdCA/IChcbiAgICAgICAgICAgIDxTdGFjayBpZD1cIml0ZW1zXCI+XG4gICAgICAgICAgICAgIDxEcm9wZG93bkl0ZW1cbiAgICAgICAgICAgICAgICBhcmlhLWRpc2FibGVkPXtmYWxzZX1cbiAgICAgICAgICAgICAgICBhcmlhLXNlbGVjdGVkPXtzZWxlY3RlZERhdGEuYWxsU2VsZWN0ZWR9XG4gICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cInNlbGVjdC1hbGxcIlxuICAgICAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwic2VsZWN0LWFsbFwiXG4gICAgICAgICAgICAgICAgaWQ9XCJzZWxlY3QtYWxsXCJcbiAgICAgICAgICAgICAgICB0YWJJbmRleD17MH1cbiAgICAgICAgICAgICAgICByb2xlPVwib3B0aW9uXCJcbiAgICAgICAgICAgICAgICBvbktleURvd249e2V2ZW50ID0+XG4gICAgICAgICAgICAgICAgICBbJyAnLCAnRW50ZXInXS5pbmNsdWRlcyhldmVudC5rZXkpID8gc2VsZWN0QWxsT3B0aW9ucygpIDogbnVsbFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBvbkNsaWNrPXtzZWxlY3RBbGxPcHRpb25zfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPFN0eWxlZENoZWNrYm94XG4gICAgICAgICAgICAgICAgICBjaGVja2VkPXtzZWxlY3RlZERhdGEuYWxsU2VsZWN0ZWR9XG4gICAgICAgICAgICAgICAgICBkaXNhYmxlZD17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICB2YWx1ZT1cInNlbGVjdC1hbGxcIlxuICAgICAgICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJzZWxlY3QtYWxsLWNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICAgIHRhYkluZGV4PXstMX1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8U3RhY2sgZGlyZWN0aW9uPVwiY29sdW1uXCI+XG4gICAgICAgICAgICAgICAgICAgIDxUZXh0IGFzPVwic3BhblwiIHZhcmlhbnQ9XCJib2R5XCIgcGxhY2VtZW50PVwibGVmdFwiPlxuICAgICAgICAgICAgICAgICAgICAgIHtzZWxlY3RBbGwubGFiZWx9XG4gICAgICAgICAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgICAgICAgICAgPFRleHRcbiAgICAgICAgICAgICAgICAgICAgICBhcz1cInNwYW5cIlxuICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJib2R5U21hbGxcIlxuICAgICAgICAgICAgICAgICAgICAgIHNlbnRpbWVudD1cIm5ldXRyYWxcIlxuICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImxlZnRcIlxuICAgICAgICAgICAgICAgICAgICAgIHByb21pbmVuY2U9XCJ3ZWFrXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIHtzZWxlY3RBbGwuZGVzY3JpcHRpb259XG4gICAgICAgICAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgICAgICAgIDwvU3RhY2s+XG4gICAgICAgICAgICAgICAgPC9TdHlsZWRDaGVja2JveD5cbiAgICAgICAgICAgICAgPC9Ecm9wZG93bkl0ZW0+XG4gICAgICAgICAgICA8L1N0YWNrPlxuICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgIHtPYmplY3Qua2V5cyhkaXNwbGF5ZWRPcHRpb25zKS5tYXAoKGdyb3VwLCBpbmRleCkgPT4gKFxuICAgICAgICAgICAgPFN0YWNrIGtleT17Z3JvdXB9IGdhcD17MC4yNX0+XG4gICAgICAgICAgICAgIHtkaXNwbGF5ZWRPcHRpb25zW2dyb3VwXS5sZW5ndGggPiAwID8gKFxuICAgICAgICAgICAgICAgIDxEcm9wZG93bkdyb3VwV3JhcHBlciBpZD17c2VsZWN0QWxsR3JvdXAgPyAnaXRlbXMnIDogdW5kZWZpbmVkfT5cbiAgICAgICAgICAgICAgICAgIHtncm91cCA/IChcbiAgICAgICAgICAgICAgICAgICAgPERyb3Bkb3duR3JvdXBcbiAgICAgICAgICAgICAgICAgICAgICBrZXk9e2dyb3VwfVxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgIHRhYkluZGV4PXtzZWxlY3RBbGxHcm91cCA/IDAgOiAtMX1cbiAgICAgICAgICAgICAgICAgICAgICBvbktleURvd249e2V2ZW50ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChbJyAnLCAnRW50ZXInXS5pbmNsdWRlcyhldmVudC5rZXkpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlU2VsZWN0R3JvdXAoZ3JvdXApXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICBkYXRhLXNlbGVjdGdyb3VwPXtzZWxlY3RBbGxHcm91cH1cbiAgICAgICAgICAgICAgICAgICAgICByb2xlPVwiZ3JvdXBcIlxuICAgICAgICAgICAgICAgICAgICAgIGRhdGEtdGVzdGlkPXtgZ3JvdXAtJHtpbmRleH1gfVxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RBbGxHcm91cCA/IGhhbmRsZVNlbGVjdEdyb3VwKGdyb3VwKSA6IG51bGxcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7c2VsZWN0QWxsR3JvdXAgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8U3R5bGVkQ2hlY2tib3hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tlZD17c2VsZWN0ZWREYXRhLnNlbGVjdGVkR3JvdXBzLmluY2x1ZGVzKGdyb3VwKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17Z3JvdXB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwic2VsZWN0LWdyb3VwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGFiSW5kZXg9ey0xfVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8VGV4dCB2YXJpYW50PVwiY2FwdGlvblwiIGFzPVwic3BhblwiIHBsYWNlbWVudD1cImxlZnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Z3JvdXAudG9VcHBlckNhc2UoKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9TdHlsZWRDaGVja2JveD5cbiAgICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgICAgPFRleHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFudD1cImNhcHRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBhcz1cInNwYW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJsZWZ0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2VudGltZW50PVwibmV1dHJhbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHtncm91cC50b1VwcGVyQ2FzZSgpfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgIDwvRHJvcGRvd25Hcm91cD5cbiAgICAgICAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgICAgIDwvRHJvcGRvd25Hcm91cFdyYXBwZXI+XG4gICAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgICA8U3RhY2sgaWQ9XCJpdGVtc1wiIGdhcD1cIjAuMjVcIj5cbiAgICAgICAgICAgICAgICB7ZGlzcGxheWVkT3B0aW9uc1tncm91cF0ubWFwKChvcHRpb24sIGluZGV4T3B0aW9uKSA9PiAoXG4gICAgICAgICAgICAgICAgICA8RHJvcGRvd25JdGVtXG4gICAgICAgICAgICAgICAgICAgIGtleT17b3B0aW9uLnZhbHVlfVxuICAgICAgICAgICAgICAgICAgICBhcmlhLWRpc2FibGVkPXshIW9wdGlvbi5kaXNhYmxlZH1cbiAgICAgICAgICAgICAgICAgICAgdGFiSW5kZXg9eyFvcHRpb24uZGlzYWJsZWQgPyAwIDogLTF9XG4gICAgICAgICAgICAgICAgICAgIGFyaWEtc2VsZWN0ZWQ9e1xuICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkRGF0YS5zZWxlY3RlZFZhbHVlcy5pbmNsdWRlcyhvcHRpb24udmFsdWUpICYmXG4gICAgICAgICAgICAgICAgICAgICAgIW9wdGlvbi5kaXNhYmxlZFxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9e29wdGlvbi52YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgZGF0YS10ZXN0aWQ9e2BvcHRpb24tJHtvcHRpb24udmFsdWV9YH1cbiAgICAgICAgICAgICAgICAgICAgaWQ9e2BvcHRpb24tJHtpbmRleE9wdGlvbn1gfVxuICAgICAgICAgICAgICAgICAgICByb2xlPVwib3B0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIGlmICghb3B0aW9uLmRpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVDbGljayhvcHRpb24sIGdyb3VwKVxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgb25LZXlEb3duPXtldmVudCA9PlxuICAgICAgICAgICAgICAgICAgICAgIFsnICcsICdFbnRlciddLmluY2x1ZGVzKGV2ZW50LmtleSlcbiAgICAgICAgICAgICAgICAgICAgICAgID8gaGFuZGxlQ2xpY2sob3B0aW9uLCBncm91cClcbiAgICAgICAgICAgICAgICAgICAgICAgIDogbnVsbFxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJlZj17XG4gICAgICAgICAgICAgICAgICAgICAgb3B0aW9uLnZhbHVlID09PSBkZWZhdWx0U2VhcmNoVmFsdWUgfHxcbiAgICAgICAgICAgICAgICAgICAgICBvcHRpb24uc2VhcmNoVGV4dCA9PT0gZGVmYXVsdFNlYXJjaFZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICA/IGZvY3VzZWRJdGVtUmVmXG4gICAgICAgICAgICAgICAgICAgICAgICA6IG51bGxcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7bXVsdGlzZWxlY3QgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgPFN0eWxlZENoZWNrYm94XG4gICAgICAgICAgICAgICAgICAgICAgICBjaGVja2VkPXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzLmluY2x1ZGVzKG9wdGlvbi52YWx1ZSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIW9wdGlvbi5kaXNhYmxlZFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e29wdGlvbi5kaXNhYmxlZH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXtvcHRpb24udmFsdWV9XG4gICAgICAgICAgICAgICAgICAgICAgICB0YWJJbmRleD17LTF9XG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPERpc3BsYXlPcHRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uPXtvcHRpb259XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uRGlyZWN0aW9uPXtkZXNjcmlwdGlvbkRpcmVjdGlvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWxJbmZvUGxhY2VtZW50PXtvcHRpb25hbEluZm9QbGFjZW1lbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgIDwvU3R5bGVkQ2hlY2tib3g+XG4gICAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgICAgPERpc3BsYXlPcHRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbj17b3B0aW9ufVxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb25EaXJlY3Rpb249e2Rlc2NyaXB0aW9uRGlyZWN0aW9ufVxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWxJbmZvUGxhY2VtZW50PXtvcHRpb25hbEluZm9QbGFjZW1lbnR9XG4gICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgIDwvRHJvcGRvd25JdGVtPlxuICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICA8L1N0YWNrPlxuICAgICAgICAgICAgPC9TdGFjaz5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC8+XG4gICAgICApfVxuICAgICAge2xvYWRNb3JlID8gPExvYWRNb3JlPntsb2FkTW9yZX08L0xvYWRNb3JlPiA6IG51bGx9XG4gICAgPC9Ecm9wZG93bkNvbnRhaW5lcj5cbiAgKSA6IChcbiAgICA8RHJvcGRvd25Db250YWluZXJcbiAgICAgIHJvbGU9XCJsaXN0Ym94XCJcbiAgICAgIHRhYkluZGV4PXstMX1cbiAgICAgIGlkPVwic2VsZWN0LWRyb3Bkb3duXCJcbiAgICAgIG9uS2V5RG93bj17aGFuZGxlS2V5RG93blNlbGVjdH1cbiAgICAgIGdhcD17MC4yNX1cbiAgICAgIGRhdGEtZ3JvdXBlZD17ZmFsc2V9XG4gICAgPlxuICAgICAge3NlbGVjdEFsbCAmJiBtdWx0aXNlbGVjdCA/IChcbiAgICAgICAgPFN0YWNrIGlkPVwiaXRlbXNcIiBnYXA9ezAuMjV9IHRhYkluZGV4PXstMX0+XG4gICAgICAgICAgPERyb3Bkb3duSXRlbVxuICAgICAgICAgICAgYXJpYS1kaXNhYmxlZD17ZmFsc2V9XG4gICAgICAgICAgICBhcmlhLXNlbGVjdGVkPXtzZWxlY3RlZERhdGEuYWxsU2VsZWN0ZWR9XG4gICAgICAgICAgICBhcmlhLWxhYmVsPVwic2VsZWN0LWFsbFwiXG4gICAgICAgICAgICBkYXRhLXRlc3RpZD1cInNlbGVjdC1hbGxcIlxuICAgICAgICAgICAgdGFiSW5kZXg9ezB9XG4gICAgICAgICAgICByb2xlPVwib3B0aW9uXCJcbiAgICAgICAgICAgIG9uS2V5RG93bj17ZXZlbnQgPT5cbiAgICAgICAgICAgICAgWycgJywgJ0VudGVyJ10uaW5jbHVkZXMoZXZlbnQua2V5KSA/IHNlbGVjdEFsbE9wdGlvbnMoKSA6IG51bGxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG9uQ2xpY2s9e3NlbGVjdEFsbE9wdGlvbnN9XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPFN0eWxlZENoZWNrYm94XG4gICAgICAgICAgICAgIGNoZWNrZWQ9e3NlbGVjdGVkRGF0YS5hbGxTZWxlY3RlZH1cbiAgICAgICAgICAgICAgZGlzYWJsZWQ9e2ZhbHNlfVxuICAgICAgICAgICAgICB2YWx1ZT1cInNlbGVjdC1hbGxcIlxuICAgICAgICAgICAgICBkYXRhLXRlc3RpZD1cInNlbGVjdC1hbGwtY2hlY2tib3hcIlxuICAgICAgICAgICAgICB0YWJJbmRleD17LTF9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxTdGFjayBkaXJlY3Rpb249XCJjb2x1bW5cIj5cbiAgICAgICAgICAgICAgICA8VGV4dCBhcz1cInNwYW5cIiB2YXJpYW50PVwiYm9keVwiIHBsYWNlbWVudD1cImxlZnRcIj5cbiAgICAgICAgICAgICAgICAgIHtzZWxlY3RBbGwubGFiZWx9XG4gICAgICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgICAgICAgIDxUZXh0XG4gICAgICAgICAgICAgICAgICBhcz1cInNwYW5cIlxuICAgICAgICAgICAgICAgICAgdmFyaWFudD1cImJvZHlTbWFsbFwiXG4gICAgICAgICAgICAgICAgICBzZW50aW1lbnQ9XCJuZXV0cmFsXCJcbiAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImxlZnRcIlxuICAgICAgICAgICAgICAgICAgcHJvbWluZW5jZT1cIndlYWtcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIHtzZWxlY3RBbGwuZGVzY3JpcHRpb259XG4gICAgICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgICAgICA8L1N0YWNrPlxuICAgICAgICAgICAgPC9TdHlsZWRDaGVja2JveD5cbiAgICAgICAgICA8L0Ryb3Bkb3duSXRlbT5cbiAgICAgICAgPC9TdGFjaz5cbiAgICAgICkgOiBudWxsfVxuICAgICAgPFN0YWNrIGlkPVwiaXRlbXNcIiBnYXA9ezAuMjV9PlxuICAgICAgICB7aXNMb2FkaW5nID8gKFxuICAgICAgICAgIDxTa2VsZXRvbiB2YXJpYW50PVwiYmxvY2tcIiAvPlxuICAgICAgICApIDogKFxuICAgICAgICAgIGRpc3BsYXllZE9wdGlvbnMubWFwKChvcHRpb24sIGluZGV4KSA9PiAoXG4gICAgICAgICAgICA8RHJvcGRvd25JdGVtXG4gICAgICAgICAgICAgIGtleT17b3B0aW9uLnZhbHVlfVxuICAgICAgICAgICAgICBhcmlhLWRpc2FibGVkPXshIW9wdGlvbi5kaXNhYmxlZH1cbiAgICAgICAgICAgICAgYXJpYS1zZWxlY3RlZD17XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzLmluY2x1ZGVzKG9wdGlvbi52YWx1ZSkgJiZcbiAgICAgICAgICAgICAgICAhb3B0aW9uLmRpc2FibGVkXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghb3B0aW9uLmRpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgICBoYW5kbGVDbGljayhvcHRpb24pXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICBhcmlhLWxhYmVsPXtvcHRpb24udmFsdWV9XG4gICAgICAgICAgICAgIGRhdGEtdGVzdGlkPXtgb3B0aW9uLSR7b3B0aW9uLnZhbHVlfWB9XG4gICAgICAgICAgICAgIGlkPXtgb3B0aW9uLSR7aW5kZXh9YH1cbiAgICAgICAgICAgICAgcm9sZT1cIm9wdGlvblwiXG4gICAgICAgICAgICAgIHRhYkluZGV4PXshb3B0aW9uLmRpc2FibGVkID8gMCA6IC0xfVxuICAgICAgICAgICAgICByZWY9e1xuICAgICAgICAgICAgICAgIG9wdGlvbi52YWx1ZSA9PT0gZGVmYXVsdFNlYXJjaFZhbHVlIHx8XG4gICAgICAgICAgICAgICAgb3B0aW9uLnNlYXJjaFRleHQgPT09IGRlZmF1bHRTZWFyY2hWYWx1ZVxuICAgICAgICAgICAgICAgICAgPyBmb2N1c2VkSXRlbVJlZlxuICAgICAgICAgICAgICAgICAgOiBudWxsXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgb25LZXlEb3duPXtldmVudCA9PlxuICAgICAgICAgICAgICAgIFsnICcsICdFbnRlciddLmluY2x1ZGVzKGV2ZW50LmtleSkgPyBoYW5kbGVDbGljayhvcHRpb24pIDogbnVsbFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHttdWx0aXNlbGVjdCA/IChcbiAgICAgICAgICAgICAgICA8U3R5bGVkQ2hlY2tib3hcbiAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e1xuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZERhdGEuc2VsZWN0ZWRWYWx1ZXMuaW5jbHVkZXMob3B0aW9uLnZhbHVlKSAmJlxuICAgICAgICAgICAgICAgICAgICAhb3B0aW9uLmRpc2FibGVkXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBkaXNhYmxlZD17b3B0aW9uLmRpc2FibGVkfVxuICAgICAgICAgICAgICAgICAgdmFsdWU9e29wdGlvbi52YWx1ZX1cbiAgICAgICAgICAgICAgICAgIHRhYkluZGV4PXstMX1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8RGlzcGxheU9wdGlvblxuICAgICAgICAgICAgICAgICAgICBvcHRpb249e29wdGlvbn1cbiAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb25EaXJlY3Rpb249e2Rlc2NyaXB0aW9uRGlyZWN0aW9ufVxuICAgICAgICAgICAgICAgICAgICBvcHRpb25hbEluZm9QbGFjZW1lbnQ9e29wdGlvbmFsSW5mb1BsYWNlbWVudH1cbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9TdHlsZWRDaGVja2JveD5cbiAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICA8RGlzcGxheU9wdGlvblxuICAgICAgICAgICAgICAgICAgb3B0aW9uPXtvcHRpb259XG4gICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbkRpcmVjdGlvbj17ZGVzY3JpcHRpb25EaXJlY3Rpb259XG4gICAgICAgICAgICAgICAgICBvcHRpb25hbEluZm9QbGFjZW1lbnQ9e29wdGlvbmFsSW5mb1BsYWNlbWVudH1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9Ecm9wZG93bkl0ZW0+XG4gICAgICAgICAgKSlcbiAgICAgICAgKX1cbiAgICAgICAge2xvYWRNb3JlID8gPExvYWRNb3JlPntsb2FkTW9yZX08L0xvYWRNb3JlPiA6IG51bGx9XG4gICAgICA8L1N0YWNrPlxuICAgIDwvRHJvcGRvd25Db250YWluZXI+XG4gIClcbn1cbmV4cG9ydCBjb25zdCBEcm9wZG93biA9ICh7XG4gIGNoaWxkcmVuLFxuICBlbXB0eVN0YXRlLFxuICBkZXNjcmlwdGlvbkRpcmVjdGlvbixcbiAgc2VhcmNoYWJsZSxcbiAgcGxhY2Vob2xkZXIsXG4gIGZvb3RlcixcbiAgcmVmU2VsZWN0LFxuICBsb2FkTW9yZSxcbiAgb3B0aW9uYWxJbmZvUGxhY2VtZW50LFxuICBpc0xvYWRpbmcsXG4gIHNpemUsXG59OiBEcm9wZG93blByb3BzKSA9PiB7XG4gIGNvbnN0IHtcbiAgICBzZXRJc0Ryb3Bkb3duVmlzaWJsZSxcbiAgICBpc0Ryb3Bkb3duVmlzaWJsZSxcbiAgICBvblNlYXJjaCxcbiAgICBzZWFyY2hJbnB1dCxcbiAgICBvcHRpb25zLFxuICAgIGRpc3BsYXllZE9wdGlvbnMsXG4gIH0gPSB1c2VTZWxlY3RJbnB1dCgpXG4gIGNvbnN0IHRoZW1lID0gdXNlVGhlbWUoKVxuICBjb25zdCBbc2VhcmNoQmFyQWN0aXZlLCBzZXRTZWFyY2hCYXJBY3RpdmVdID0gdXNlU3RhdGUoZmFsc2UpXG4gIGNvbnN0IFtkZWZhdWx0U2VhcmNoVmFsdWUsIHNldERlZmF1bHRTZWFyY2hdID0gdXNlU3RhdGU8c3RyaW5nIHwgbnVsbD4obnVsbClcbiAgY29uc3QgcmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuICBjb25zdCBbc2VhcmNoLCBzZXRTZWFyY2hdID0gdXNlU3RhdGU8c3RyaW5nPignJylcbiAgY29uc3QgW21heFdpZHRoLCBzZXRXaWR0aF0gPSB1c2VTdGF0ZTxzdHJpbmcgfCBudW1iZXI+KClcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmIChyZWZTZWxlY3QuY3VycmVudCAmJiBpc0Ryb3Bkb3duVmlzaWJsZSkge1xuICAgICAgY29uc3QgcG9zaXRpb24gPVxuICAgICAgICByZWZTZWxlY3QuY3VycmVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS5ib3R0b20gK1xuICAgICAgICBEUk9QRE9XTl9NQVhfSEVJR0hUICtcbiAgICAgICAgSU5QVVRfU0laRV9IRUlHSFRbc2l6ZV0gK1xuICAgICAgICBwYXJzZUludCh0aGVtZS5zcGFjZVsnNSddLCAxMClcbiAgICAgIGNvbnN0IG92ZXJmbG93ID0gcG9zaXRpb24gLSB3aW5kb3cuaW5uZXJIZWlnaHRcbiAgICAgIGlmIChvdmVyZmxvdyA+IDApIHtcbiAgICAgICAgY29uc3QgbW9kYWxFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2JhY2tkcm9wLW1vZGFsJylcblxuICAgICAgICBpZiAobW9kYWxFbGVtZW50KSB7XG4gICAgICAgICAgbW9kYWxFbGVtZW50LnNjcm9sbEJ5KHsgdG9wOiBvdmVyZmxvdywgYmVoYXZpb3I6ICdzbW9vdGgnIH0pXG4gICAgICAgIH0gZWxzZSB3aW5kb3cuc2Nyb2xsQnkoeyB0b3A6IG92ZXJmbG93LCBiZWhhdmlvcjogJ3Ntb290aCcgfSlcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIHJlYWN0LWhvb2tzL2V4aGF1c3RpdmUtZGVwc1xuICB9LCBbaXNEcm9wZG93blZpc2libGUsIHJlZlNlbGVjdCwgc2l6ZSwgcmVmLmN1cnJlbnRdKVxuXG4gIGNvbnN0IHJlc2l6ZURyb3Bkb3duID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGlmIChcbiAgICAgIHJlZlNlbGVjdC5jdXJyZW50ICYmXG4gICAgICByZWZTZWxlY3QuY3VycmVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aCA+IDBcbiAgICApIHtcbiAgICAgIHNldFdpZHRoKHJlZlNlbGVjdC5jdXJyZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoKVxuICAgIH1cbiAgfSwgW3JlZlNlbGVjdF0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICByZXNpemVEcm9wZG93bigpXG5cbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncmVzaXplJywgcmVzaXplRHJvcGRvd24pXG5cbiAgICByZXR1cm4gKCkgPT4gd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHJlc2l6ZURyb3Bkb3duKVxuICB9LCBbcmVzaXplRHJvcGRvd25dKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFzZWFyY2hJbnB1dCkge1xuICAgICAgb25TZWFyY2gob3B0aW9ucylcbiAgICB9XG4gIH0sIFtvblNlYXJjaCwgb3B0aW9ucywgc2VhcmNoSW5wdXRdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKCFpc0Ryb3Bkb3duVmlzaWJsZSkge1xuICAgICAgc2V0RGVmYXVsdFNlYXJjaChudWxsKVxuICAgICAgc2V0U2VhcmNoKCcnKVxuICAgIH1cblxuICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIGV2ZW50ID0+XG4gICAgICBoYW5kbGVDbGlja091dHNpZGUoXG4gICAgICAgIGV2ZW50LFxuICAgICAgICByZWYsXG4gICAgICAgIHNldElzRHJvcGRvd25WaXNpYmxlLFxuICAgICAgICByZWZTZWxlY3QsXG4gICAgICAgIG9uU2VhcmNoLFxuICAgICAgICBvcHRpb25zLFxuICAgICAgKSxcbiAgICApXG5cbiAgICBpZiAoIXNlYXJjaGFibGUpIHtcbiAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBldmVudCA9PlxuICAgICAgICBoYW5kbGVLZXlEb3duKFxuICAgICAgICAgIGV2ZW50LFxuICAgICAgICAgIHJlZixcbiAgICAgICAgICBvcHRpb25zLFxuICAgICAgICAgIHNlYXJjaEJhckFjdGl2ZSxcbiAgICAgICAgICBzZXRTZWFyY2gsXG4gICAgICAgICAgc2V0RGVmYXVsdFNlYXJjaCxcbiAgICAgICAgICBzZWFyY2gsXG4gICAgICAgICksXG4gICAgICApXG4gICAgfVxuXG4gICAgcmV0dXJuICgpID0+IHtcbiAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ21vdXNlZG93bicsIGV2ZW50ID0+XG4gICAgICAgIGhhbmRsZUNsaWNrT3V0c2lkZShcbiAgICAgICAgICBldmVudCxcbiAgICAgICAgICByZWYsXG4gICAgICAgICAgc2V0SXNEcm9wZG93blZpc2libGUsXG4gICAgICAgICAgcmVmU2VsZWN0LFxuICAgICAgICAgIG9uU2VhcmNoLFxuICAgICAgICAgIG9wdGlvbnMsXG4gICAgICAgICksXG4gICAgICApXG4gICAgICBpZiAoIXNlYXJjaGFibGUpIHtcbiAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIGV2ZW50ID0+XG4gICAgICAgICAgaGFuZGxlS2V5RG93bihcbiAgICAgICAgICAgIGV2ZW50LFxuICAgICAgICAgICAgcmVmLFxuICAgICAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgICAgIHNlYXJjaEJhckFjdGl2ZSxcbiAgICAgICAgICAgIHNldFNlYXJjaCxcbiAgICAgICAgICAgIHNldERlZmF1bHRTZWFyY2gsXG4gICAgICAgICAgICBzZWFyY2gsXG4gICAgICAgICAgKSxcbiAgICAgICAgKVxuICAgICAgfVxuICAgIH1cbiAgfSwgW1xuICAgIGlzRHJvcGRvd25WaXNpYmxlLFxuICAgIHNlYXJjaEJhckFjdGl2ZSxcbiAgICBvcHRpb25zLFxuICAgIG9uU2VhcmNoLFxuICAgIHNlYXJjaCxcbiAgICByZWZTZWxlY3QsXG4gICAgc2V0RGVmYXVsdFNlYXJjaCxcbiAgICBzZXRJc0Ryb3Bkb3duVmlzaWJsZSxcbiAgICBzZWFyY2hhYmxlLFxuICBdKVxuXG4gIGNvbnN0IGlzRW1wdHkgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShkaXNwbGF5ZWRPcHRpb25zKSkge1xuICAgICAgcmV0dXJuICEoZGlzcGxheWVkT3B0aW9ucy5sZW5ndGggPiAwKVxuICAgIH1cbiAgICBjb25zdCBncm91cHMgPSBPYmplY3Qua2V5cyhkaXNwbGF5ZWRPcHRpb25zKVxuICAgIGZvciAoY29uc3QgZ3JvdXAgb2YgZ3JvdXBzKSB7XG4gICAgICBpZiAoZGlzcGxheWVkT3B0aW9uc1tncm91cF0ubGVuZ3RoICE9PSAwKSB7XG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0cnVlXG4gIH0sIFtkaXNwbGF5ZWRPcHRpb25zXSlcblxuICByZXR1cm4gKFxuICAgIDxTdHlsZWRQb3B1cFxuICAgICAgdmlzaWJsZT17aXNEcm9wZG93blZpc2libGV9XG4gICAgICB0ZXh0PXtcbiAgICAgICAgPFN0YWNrPlxuICAgICAgICAgIHtzZWFyY2hhYmxlICYmICFpc0xvYWRpbmcgPyAoXG4gICAgICAgICAgICA8U2VhcmNoQmFyRHJvcGRvd25cbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9e3BsYWNlaG9sZGVyfVxuICAgICAgICAgICAgICBkaXNwbGF5ZWRPcHRpb25zPXtkaXNwbGF5ZWRPcHRpb25zfVxuICAgICAgICAgICAgICBzZXRTZWFyY2hCYXJBY3RpdmU9e3NldFNlYXJjaEJhckFjdGl2ZX1cbiAgICAgICAgICAgIC8+XG4gICAgICAgICAgKSA6IG51bGx9XG4gICAgICAgICAgPENyZWF0ZURyb3Bkb3duXG4gICAgICAgICAgICBpc0VtcHR5PXtpc0VtcHR5fVxuICAgICAgICAgICAgZW1wdHlTdGF0ZT17ZW1wdHlTdGF0ZX1cbiAgICAgICAgICAgIGRlc2NyaXB0aW9uRGlyZWN0aW9uPXtkZXNjcmlwdGlvbkRpcmVjdGlvbn1cbiAgICAgICAgICAgIGxvYWRNb3JlPXtsb2FkTW9yZX1cbiAgICAgICAgICAgIG9wdGlvbmFsSW5mb1BsYWNlbWVudD17b3B0aW9uYWxJbmZvUGxhY2VtZW50fVxuICAgICAgICAgICAgZGVmYXVsdFNlYXJjaFZhbHVlPXtkZWZhdWx0U2VhcmNoVmFsdWV9XG4gICAgICAgICAgICBpc0xvYWRpbmc9e2lzTG9hZGluZ31cbiAgICAgICAgICAvPlxuICAgICAgICAgIHtmb290ZXIgPyA8UG9wdXBGb290ZXI+e2Zvb3Rlcn08L1BvcHVwRm9vdGVyPiA6IG51bGx9XG4gICAgICAgIDwvU3RhY2s+XG4gICAgICB9XG4gICAgICBwbGFjZW1lbnQ9XCJib3R0b21cIlxuICAgICAgZGlzYWJsZUFuaW1hdGlvblxuICAgICAgbWF4V2lkdGg9e21heFdpZHRoID8/IHJlZlNlbGVjdC5jdXJyZW50Py5vZmZzZXRXaWR0aH1cbiAgICAgIGhhc0Fycm93PXtmYWxzZX1cbiAgICAgIHJlZj17cmVmfVxuICAgICAgdGFiSW5kZXg9ezB9XG4gICAgICByb2xlPVwiZGlhbG9nXCJcbiAgICAgIGRlYm91bmNlRGVsYXk9ezB9XG4gICAgICBjb250YWluZXJGdWxsV2lkdGhcbiAgICA+XG4gICAgICB7Y2hpbGRyZW59XG4gICAgPC9TdHlsZWRQb3B1cD5cbiAgKVxufVxuIl19 */"));
130
+ }) => theme.colors.neutral.textStrongDisabled, ";cursor:not-allowed;outline:none;}" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL3VsdHJhdmlvbGV0L3VsdHJhdmlvbGV0L3BhY2thZ2VzL3VpL3NyYy9jb21wb25lbnRzL1NlbGVjdElucHV0VjIvRHJvcGRvd24udHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQXFIRSIsImZpbGUiOiIvaG9tZS9ydW5uZXIvd29yay91bHRyYXZpb2xldC91bHRyYXZpb2xldC9wYWNrYWdlcy91aS9zcmMvY29tcG9uZW50cy9TZWxlY3RJbnB1dFYyL0Ryb3Bkb3duLnRzeCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZVRoZW1lIH0gZnJvbSAnQGVtb3Rpb24vcmVhY3QnXG5pbXBvcnQgc3R5bGVkIGZyb20gJ0BlbW90aW9uL3N0eWxlZCdcbmltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VFZmZlY3QsIHVzZU1lbW8sIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCdcbmltcG9ydCB0eXBlIHtcbiAgRGlzcGF0Y2gsXG4gIEtleWJvYXJkRXZlbnQsXG4gIFJlYWN0Tm9kZSxcbiAgUmVmT2JqZWN0LFxuICBTZXRTdGF0ZUFjdGlvbixcbn0gZnJvbSAncmVhY3QnXG5pbXBvcnQgeyBDaGVja2JveCB9IGZyb20gJy4uL0NoZWNrYm94J1xuaW1wb3J0IHsgUG9wdXAgfSBmcm9tICcuLi9Qb3B1cCdcbmltcG9ydCB7IFNrZWxldG9uIH0gZnJvbSAnLi4vU2tlbGV0b24nXG5pbXBvcnQgeyBTdGFjayB9IGZyb20gJy4uL1N0YWNrJ1xuaW1wb3J0IHsgVGV4dCB9IGZyb20gJy4uL1RleHQnXG5pbXBvcnQgeyBEaXNwbGF5T3B0aW9uIH0gZnJvbSAnLi9Ecm9wZG93bk9wdGlvbidcbmltcG9ydCB7IFNlYXJjaEJhckRyb3Bkb3duIH0gZnJvbSAnLi9TZWFyY2hCYXJEcm9wZG93bidcbmltcG9ydCB7IHVzZVNlbGVjdElucHV0IH0gZnJvbSAnLi9TZWxlY3RJbnB1dFByb3ZpZGVyJ1xuaW1wb3J0IHsgdHlwZSBEYXRhVHlwZSwgSU5QVVRfU0laRV9IRUlHSFQsIHR5cGUgT3B0aW9uVHlwZSB9IGZyb20gJy4vdHlwZXMnXG5cbmNvbnN0IERST1BET1dOX01BWF9IRUlHSFQgPSAyNTZcblxuZXhwb3J0IHR5cGUgRHJvcGRvd25Qcm9wcyA9IHtcbiAgY2hpbGRyZW46IFJlYWN0Tm9kZVxuICBlbXB0eVN0YXRlOiBSZWFjdE5vZGVcbiAgZGVzY3JpcHRpb25EaXJlY3Rpb246ICdyb3cnIHwgJ2NvbHVtbidcbiAgc2VhcmNoYWJsZTogYm9vbGVhblxuICBwbGFjZWhvbGRlcjogc3RyaW5nXG4gIGZvb3Rlcj86ICgoY2xvc2VEcm9wZG93bjogKCkgPT4gdm9pZCkgPT4gUmVhY3ROb2RlKSB8IFJlYWN0Tm9kZVxuICByZWZTZWxlY3Q6IFJlZk9iamVjdDxIVE1MRGl2RWxlbWVudD5cbiAgbG9hZE1vcmU/OiBSZWFjdE5vZGVcbiAgb3B0aW9uYWxJbmZvUGxhY2VtZW50OiAnbGVmdCcgfCAncmlnaHQnXG4gIGlzTG9hZGluZz86IGJvb2xlYW5cbiAgc2l6ZTogJ3NtYWxsJyB8ICdtZWRpdW0nIHwgJ2xhcmdlJ1xufVxuXG5leHBvcnQgdHlwZSBDcmVhdGVEcm9wZG93blByb3BzID0ge1xuICBpc0VtcHR5OiBib29sZWFuXG4gIGVtcHR5U3RhdGU6IFJlYWN0Tm9kZVxuICBkZXNjcmlwdGlvbkRpcmVjdGlvbjogJ3JvdycgfCAnY29sdW1uJ1xuICBsb2FkTW9yZT86IFJlYWN0Tm9kZVxuICBvcHRpb25hbEluZm9QbGFjZW1lbnQ6ICdsZWZ0JyB8ICdyaWdodCdcbiAgZGVmYXVsdFNlYXJjaFZhbHVlOiBzdHJpbmcgfCBudWxsXG4gIGlzTG9hZGluZz86IGJvb2xlYW5cbn1cblxuY29uc3QgTk9OX1NFQVJDSEFCTEVfS0VZUyA9IFtcbiAgJ1RhYicsXG4gICcgJyxcbiAgJ0VudGVyJyxcbiAgJ0NhcHNMb2NrJyxcbiAgJ1NoaWZ0JyxcbiAgJ0Fycm93RG93bicsXG4gICdBcnJvd1VwJyxcbiAgJ0Fycm93TGVmdCcsXG4gICdBcnJvd1JpZ2h0JyxcbiAgJ0VzY2FwZScsXG5dXG5cbmNvbnN0IFN0eWxlZFBvcHVwID0gc3R5bGVkKFBvcHVwKWBcbiAgd2lkdGg6IDEwMCU7XG4gIG1pbi13aWR0aDogMzIwcHg7XG4gIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm90aGVyLmVsZXZhdGlvbi5iYWNrZ3JvdW5kLnJhaXNlZH07XG4gIGNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5uZXV0cmFsLnRleHR9O1xuICBib3gtc2hhZG93OiAkeyh7IHRoZW1lIH0pID0+IGAke3RoZW1lLnNoYWRvd3MucmFpc2VkWzBdfSwgJHt0aGVtZS5zaGFkb3dzLnJhaXNlZFsxXX1gfTtcbiAgcGFkZGluZzogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVswXX07XG4gIG1hcmdpbi1ib3R0b206ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMTBdfTtcbmBcblxuY29uc3QgRHJvcGRvd25Db250YWluZXIgPSBzdHlsZWQoU3RhY2spPHsgJ2RhdGEtZ3JvdXBlZCc6IGJvb2xlYW4gfT5gXG4gIG1heC1oZWlnaHQ6ICR7RFJPUERPV05fTUFYX0hFSUdIVH1weDtcbiAgb3ZlcmZsb3cteTogc2Nyb2xsO1xuICBwYWRkaW5nOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzBdfTtcbiAgcGFkZGluZy1ib3R0b206ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMC41XX07XG4gIHBhZGRpbmctdG9wOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzAuNV19O1xuXG4gICZbZGF0YS1ncm91cGVkPVwidHJ1ZVwiXSB7XG4gICAgcGFkZGluZy10b3A6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMF19O1xuICB9XG5gXG5jb25zdCBEcm9wZG93bkdyb3VwID0gc3R5bGVkLmJ1dHRvbjx7ICdkYXRhLXNlbGVjdGdyb3VwJzogYm9vbGVhbiB9PmBcbiAgZGlzcGxheTogZmxleDtcbiAgd2lkdGg6IDEwMCU7XG4gIGp1c3RpZnktY29udGVudDogbGVmdDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgYm9yZGVyOiBub25lO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5uZXV0cmFsLmJhY2tncm91bmRXZWFrfTtcbiAgcG9zaXRpb246IHN0aWNreTtcbiAgdG9wOiAwcHg7XG4gIHBhZGRpbmctcmlnaHQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMl19O1xuICBwYWRkaW5nLWxlZnQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMl19O1xuICBoZWlnaHQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbNF19O1xuICB0ZXh0LWFsaWduOiBsZWZ0O1xuICBtYXJnaW4tYm90dG9tOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWycwLjI1J119O1xuXG4gICY6Zm9jdXMge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwuYmFja2dyb3VuZFdlYWt9O1xuICAgIG91dGxpbmU6IG5vbmU7XG4gIH1cblxuICAmW2RhdGEtc2VsZWN0Z3JvdXA9J3RydWUnXSB7XG4gICAgcGFkZGluZy1sZWZ0OiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzJdfTtcbiAgICBib3JkZXItbGVmdDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVswLjVdfSBzb2xpZCAkeyh7IHRoZW1lIH0pID0+XG4gICAgICB0aGVtZS5jb2xvcnMubmV1dHJhbC5iYWNrZ3JvdW5kV2Vha307XG4gIH1cblxuICAmW2RhdGEtc2VsZWN0Z3JvdXA9J3RydWUnXTpmb2N1cyB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMubmV1dHJhbC5iYWNrZ3JvdW5kSG92ZXJ9O1xuICB9XG5gXG5jb25zdCBEcm9wZG93bkdyb3VwV3JhcHBlciA9IHN0eWxlZC5kaXZgXG4gIHBvc2l0aW9uOiBzdGlja3k7XG4gIHRvcDogMHB4O1xuYFxuY29uc3QgRHJvcGRvd25JdGVtID0gc3R5bGVkLmRpdjx7XG4gICdhcmlhLXNlbGVjdGVkJzogYm9vbGVhblxuICAnYXJpYS1kaXNhYmxlZCc6IGJvb2xlYW5cbn0+YFxuICB0ZXh0LWFsaWduOmxlZnQ7XG4gIGJvcmRlcjogbm9uZTtcbiAgYmFja2dyb3VuZC1jb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMub3RoZXIuZWxldmF0aW9uLmJhY2tncm91bmQucmFpc2VkfTtcblxuICBwYWRkaW5nOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWycxLjUnXX0gJHsoeyB0aGVtZSB9KSA9PlxuICAgIHRoZW1lLnNwYWNlWycyJ119ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbJzEuNSddfSAkeyh7IHRoZW1lIH0pID0+XG4gICAgdGhlbWUuc3BhY2VbJzInXX07XG4gIG1hcmdpbi1sZWZ0OiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWycwLjUnXX07XG4gIG1hcmdpbi1yaWdodDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsnMC41J119O1xuXG4gIGNvbG9yOiAgJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMubmV1dHJhbC50ZXh0fTtcbiAgYm9yZGVyLXJhZGl1czogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5yYWRpaS5kZWZhdWx0fTtcblxuICAmOmhvdmVyLCA6Zm9jdXMge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLnByaW1hcnkuYmFja2dyb3VuZH07XG4gICAgY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLnByaW1hcnkudGV4dH07XG4gICAgY3Vyc29yOiBwb2ludGVyO1xuICAgIG91dGxpbmU6IG5vbmU7XG4gIH1cblxuICAmW2FyaWEtc2VsZWN0ZWQ9J3RydWUnXSB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMucHJpbWFyeS5iYWNrZ3JvdW5kfTtcbiAgfVxuXG4gICZbYXJpYS1kaXNhYmxlZD1cInRydWVcIl0ge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwuYmFja2dyb3VuZERpc2FibGVkfTtcbiAgICBjb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMubmV1dHJhbC50ZXh0RGlzYWJsZWR9O1xuICB9XG5cbiAgJlthcmlhLWRpc2FibGVkPVwidHJ1ZVwiXTpob3ZlciwgW2FyaWEtZGlzYWJsZWQ9XCJ0cnVlXCJdOmZvY3VzIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7IHRoZW1lIH0pID0+XG4gICAgICB0aGVtZS5jb2xvcnMubmV1dHJhbC5iYWNrZ3JvdW5kU3Ryb25nRGlzYWJsZWR9O1xuICAgIGNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5uZXV0cmFsLnRleHRTdHJvbmdEaXNhYmxlZH07XG4gICAgY3Vyc29yOiBub3QtYWxsb3dlZDtcbiAgICBvdXRsaW5lOiBub25lO1xuICB9XG5gXG5cbmNvbnN0IFBvcHVwRm9vdGVyID0gc3R5bGVkLmRpdmBcbiAgd2lkdGg6IDEwMCU7XG4gIHBhZGRpbmc6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMS41XX0gJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsyXX1cbiAgICAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzEuNV19ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMl19O1xuICBib3gtc2hhZG93OiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNoYWRvd3MuZHJvcGRvd259O1xuYFxuY29uc3QgU3R5bGVkQ2hlY2tib3ggPSBzdHlsZWQoQ2hlY2tib3gpYFxuICB3aWR0aDogMTAwJTtcbiAgcG9zaXRpb246IHN0YXRpYztcbiAgdGV4dC1hbGlnbjogbGVmdDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgcG9pbnRlci1ldmVudHM6IG5vbmU7XG5gIC8vIHBvaW50ZXItZXZlbnRzOiBub25lIHByZXZlbnRzIGFueSBlcnJvciB3aGVuIHVzaW5nIHRoZSBjaGVja2JveCBpbiBhIGZvcm0gc2luY2UgaXQgaXMgYW4gdW5uYW1lZCBpbnB1dFxuXG5jb25zdCBFbXB0eVN0YXRlID0gc3R5bGVkKFN0YWNrKWBcbiAgcGFkZGluZzogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsyXX07XG5gXG5jb25zdCBMb2FkTW9yZSA9IHN0eWxlZChTdGFjaylgXG4gIHBhZGRpbmc6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMC41XX07XG5gXG5cbmNvbnN0IG1vdmVGb2N1c0Rvd24gPSAoKSA9PiB7XG4gIGNvbnN0IG9wdGlvbnMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFxuICAgICcjaXRlbXMgPiBkaXZbcm9sZT1cIm9wdGlvblwiXTpub3QoW2Rpc2FibGVkXSknLFxuICApXG4gIGNvbnN0IGFjdGl2ZUl0ZW0gPSBkb2N1bWVudC5hY3RpdmVFbGVtZW50XG4gIGlmIChvcHRpb25zKSB7XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBvcHRpb25zPy5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgY29uc3QgbGlzdExlbmd0aCA9IG9wdGlvbnMubGVuZ3RoXG4gICAgICBpZiAoYWN0aXZlSXRlbSA9PT0gb3B0aW9uc1tpXSAmJiBhY3RpdmVJdGVtICE9PSBvcHRpb25zW2xpc3RMZW5ndGggLSAxXSkge1xuICAgICAgICA7KG9wdGlvbnNbaSArIDFdIGFzIEhUTUxFbGVtZW50KS5mb2N1cygpXG4gICAgICB9XG4gICAgfVxuICB9XG59XG5jb25zdCBtb3ZlRm9jdXNVcCA9ICgpID0+IHtcbiAgY29uc3Qgb3B0aW9ucyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoXG4gICAgJyNpdGVtcyA+IGRpdltyb2xlPVwib3B0aW9uXCJdOm5vdChbZGlzYWJsZWRdKScsXG4gIClcbiAgY29uc3QgYWN0aXZlSXRlbSA9IGRvY3VtZW50LmFjdGl2ZUVsZW1lbnRcblxuICBpZiAob3B0aW9ucykge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgb3B0aW9ucy5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgaWYgKGFjdGl2ZUl0ZW0gPT09IG9wdGlvbnNbaV0gJiYgYWN0aXZlSXRlbSAhPT0gb3B0aW9uc1swXSkge1xuICAgICAgICA7KG9wdGlvbnNbaSAtIDFdIGFzIEhUTUxFbGVtZW50KS5mb2N1cygpXG4gICAgICB9XG4gICAgfVxuICB9XG59XG5jb25zdCBoYW5kbGVLZXlEb3duU2VsZWN0ID0gKGV2ZW50OiBLZXlib2FyZEV2ZW50PEhUTUxEaXZFbGVtZW50PikgPT4ge1xuICBpZiAoZXZlbnQua2V5ID09PSAnQXJyb3dEb3duJykge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICBtb3ZlRm9jdXNEb3duKClcbiAgfVxuXG4gIGlmIChldmVudC5rZXkgPT09ICdBcnJvd1VwJykge1xuICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICBtb3ZlRm9jdXNVcCgpXG4gIH1cbn1cbmNvbnN0IGhhbmRsZUNsaWNrT3V0c2lkZSA9IChcbiAgZXZlbnQ6IE1vdXNlRXZlbnQsXG4gIHJlZjogUmVmT2JqZWN0PEhUTUxEaXZFbGVtZW50PixcbiAgc2V0SXNEcm9wZG93blZpc2liaWxlOiBEaXNwYXRjaDxTZXRTdGF0ZUFjdGlvbjxib29sZWFuPj4sXG4gIHJlZlNlbGVjdDogUmVmT2JqZWN0PEhUTUxEaXZFbGVtZW50PixcbiAgb25TZWFyY2g6IERpc3BhdGNoPFNldFN0YXRlQWN0aW9uPERhdGFUeXBlPj4sXG4gIG9wdGlvbnM6IERhdGFUeXBlLFxuKSA9PiB7XG4gIGlmIChcbiAgICByZWYuY3VycmVudCAmJlxuICAgICFyZWYuY3VycmVudC5jb250YWlucyhldmVudC50YXJnZXQgYXMgTm9kZSkgJiZcbiAgICAhcmVmU2VsZWN0LmN1cnJlbnQ/LmNvbnRhaW5zKGV2ZW50LnRhcmdldCBhcyBOb2RlKVxuICApIHtcbiAgICBzZXRJc0Ryb3Bkb3duVmlzaWJpbGUoZmFsc2UpXG4gICAgb25TZWFyY2gob3B0aW9ucylcbiAgfVxufVxuXG5jb25zdCBoYW5kbGVLZXlEb3duID0gKFxuICBldmVudDogZ2xvYmFsVGhpcy5LZXlib2FyZEV2ZW50LFxuICByZWY6IFJlZk9iamVjdDxIVE1MRGl2RWxlbWVudD4sXG4gIG9wdGlvbnM6IERhdGFUeXBlLFxuICBzZWFyY2hCYXJBY3RpdmU6IGJvb2xlYW4sXG4gIHNldFNlYXJjaDogRGlzcGF0Y2g8U2V0U3RhdGVBY3Rpb248c3RyaW5nPj4sXG4gIHNldERlZmF1bHRTZWFyY2g6IERpc3BhdGNoPFNldFN0YXRlQWN0aW9uPHN0cmluZyB8IG51bGw+PixcbiAgc2VhcmNoOiBzdHJpbmcsXG4pID0+IHtcbiAgLy8gRGVhbHMgd2l0aCBkZWZhdWx0IHNlYXJjaFxuICBpZiAoXG4gICAgcmVmLmN1cnJlbnQgJiZcbiAgICAhc2VhcmNoQmFyQWN0aXZlICYmXG4gICAgIU5PTl9TRUFSQ0hBQkxFX0tFWVMuaW5jbHVkZXMoZXZlbnQua2V5KSAmJlxuICAgIGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQ/LmFyaWFMYWJlbCAhPT0gJ3NlYXJjaC1iYXInXG4gICkge1xuICAgIGNvbnN0IGN1cnJlbnRTZWFyY2ggPSBzZWFyY2ggKyBldmVudC5rZXlcbiAgICBzZXRTZWFyY2goY3VycmVudFNlYXJjaClcbiAgICByZWYuY3VycmVudC5mb2N1cygpXG4gICAgaWYgKCFBcnJheS5pc0FycmF5KG9wdGlvbnMpKSB7XG4gICAgICBjb25zdCBjbG9zZXN0T3B0aW9ucyA9IHsgLi4ub3B0aW9ucyB9XG4gICAgICBPYmplY3Qua2V5cyhjbG9zZXN0T3B0aW9ucykubWFwKChncm91cDogc3RyaW5nKSA9PiB7XG4gICAgICAgIGNsb3Nlc3RPcHRpb25zW2dyb3VwXSA9IGNsb3Nlc3RPcHRpb25zW2dyb3VwXS5maWx0ZXIob3B0aW9uID0+XG4gICAgICAgICAgb3B0aW9uLnNlYXJjaFRleHRcbiAgICAgICAgICAgID8gb3B0aW9uLnNlYXJjaFRleHQudG9Mb2NhbGVMb3dlckNhc2UoKS5zdGFydHNXaXRoKGN1cnJlbnRTZWFyY2gpXG4gICAgICAgICAgICA6IG9wdGlvbi52YWx1ZS50b0xvY2FsZUxvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoY3VycmVudFNlYXJjaCksXG4gICAgICAgIClcblxuICAgICAgICByZXR1cm4gbnVsbFxuICAgICAgfSlcbiAgICAgIGNvbnN0IGNsb3Nlc3RPcHRpb24gPSBjbG9zZXN0T3B0aW9uc1tPYmplY3Qua2V5cyhjbG9zZXN0T3B0aW9ucylbMF1dWzBdXG4gICAgICBpZiAoY2xvc2VzdE9wdGlvbikge1xuICAgICAgICBzZXREZWZhdWx0U2VhcmNoKGNsb3Nlc3RPcHRpb24uc2VhcmNoVGV4dCA/PyBjbG9zZXN0T3B0aW9uLnZhbHVlKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2V0RGVmYXVsdFNlYXJjaChudWxsKVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBjb25zdCBjbG9zZXN0T3B0aW9uID0gWy4uLm9wdGlvbnNdLmZpbHRlcihvcHRpb24gPT5cbiAgICAgICAgb3B0aW9uLnNlYXJjaFRleHRcbiAgICAgICAgICA/IG9wdGlvbi5zZWFyY2hUZXh0LnRvTG9jYWxlTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChjdXJyZW50U2VhcmNoKVxuICAgICAgICAgIDogb3B0aW9uLnZhbHVlLnRvTG9jYWxlTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChjdXJyZW50U2VhcmNoKSxcbiAgICAgIClbMF1cbiAgICAgIGlmIChjbG9zZXN0T3B0aW9uKSB7XG4gICAgICAgIHNldERlZmF1bHRTZWFyY2goY2xvc2VzdE9wdGlvbi5zZWFyY2hUZXh0ID8/IGNsb3Nlc3RPcHRpb24udmFsdWUpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzZXREZWZhdWx0U2VhcmNoKG51bGwpXG4gICAgICB9XG4gICAgfVxuICB9XG59XG5jb25zdCBDcmVhdGVEcm9wZG93biA9ICh7XG4gIGlzRW1wdHksXG4gIGVtcHR5U3RhdGUsXG4gIGRlc2NyaXB0aW9uRGlyZWN0aW9uLFxuICBsb2FkTW9yZSxcbiAgb3B0aW9uYWxJbmZvUGxhY2VtZW50LFxuICBkZWZhdWx0U2VhcmNoVmFsdWUsXG4gIGlzTG9hZGluZyxcbn06IENyZWF0ZURyb3Bkb3duUHJvcHMpID0+IHtcbiAgY29uc3Qge1xuICAgIHNldElzRHJvcGRvd25WaXNpYmxlLFxuICAgIG9uQ2hhbmdlLFxuICAgIG9wdGlvbnMsXG4gICAgbXVsdGlzZWxlY3QsXG4gICAgc2VsZWN0QWxsLFxuICAgIHNlbGVjdEFsbEdyb3VwLFxuICAgIGRpc3BsYXllZE9wdGlvbnMsXG4gICAgc2V0U2VsZWN0ZWREYXRhLFxuICAgIHNlbGVjdGVkRGF0YSxcbiAgfSA9IHVzZVNlbGVjdElucHV0KClcbiAgY29uc3QgZm9jdXNlZEl0ZW1SZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoZGVmYXVsdFNlYXJjaFZhbHVlICYmIGZvY3VzZWRJdGVtUmVmPy5jdXJyZW50KSB7XG4gICAgICBmb2N1c2VkSXRlbVJlZi5jdXJyZW50LmZvY3VzKClcbiAgICB9XG4gIH0sIFtkZWZhdWx0U2VhcmNoVmFsdWVdKVxuXG4gIGlmIChpc0VtcHR5KSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxFbXB0eVN0YXRlIGdhcD17Mn0gYWxpZ25JdGVtcz1cImNlbnRlclwiPlxuICAgICAgICB7ZW1wdHlTdGF0ZSA/PyAoXG4gICAgICAgICAgPFRleHQgdmFyaWFudD1cImJvZHlTdHJvbmdcIiBhcz1cInBcIj5cbiAgICAgICAgICAgIE5vIG9wdGlvbnNcbiAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICl9XG4gICAgICA8L0VtcHR5U3RhdGU+XG4gICAgKVxuICB9XG5cbiAgY29uc3QgaGFuZGxlQ2xpY2sgPSAoY2xpY2tlZE9wdGlvbjogT3B0aW9uVHlwZSwgZ3JvdXA/OiBzdHJpbmcpID0+IHtcbiAgICBzZXRTZWxlY3RlZERhdGEoeyB0eXBlOiAnc2VsZWN0T3B0aW9uJywgY2xpY2tlZE9wdGlvbiwgZ3JvdXAgfSlcbiAgICBpZiAobXVsdGlzZWxlY3QpIHtcbiAgICAgIGlmIChzZWxlY3RlZERhdGEuc2VsZWN0ZWRWYWx1ZXMuaW5jbHVkZXMoY2xpY2tlZE9wdGlvbi52YWx1ZSkpIHtcbiAgICAgICAgb25DaGFuZ2U/LihcbiAgICAgICAgICBzZWxlY3RlZERhdGEuc2VsZWN0ZWRWYWx1ZXMuZmlsdGVyKFxuICAgICAgICAgICAgdmFsID0+IHZhbCAhPT0gY2xpY2tlZE9wdGlvbi52YWx1ZSxcbiAgICAgICAgICApLFxuICAgICAgICApXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvbkNoYW5nZT8uKFsuLi5zZWxlY3RlZERhdGEuc2VsZWN0ZWRWYWx1ZXMsIGNsaWNrZWRPcHRpb24udmFsdWVdKVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBvbkNoYW5nZT8uKGNsaWNrZWRPcHRpb24udmFsdWUpXG4gICAgfVxuICAgIHNldElzRHJvcGRvd25WaXNpYmxlKG11bHRpc2VsZWN0KSAvLyBoaWRlIHRoZSBkcm9wZG93biBvbiBjbGljayB3aGVuIHNpbmdsZSBzZWxlY3Qgb25seVxuICB9XG5cbiAgY29uc3Qgc2VsZWN0QWxsT3B0aW9ucyA9ICgpID0+IHtcbiAgICBpZiAobXVsdGlzZWxlY3QpIHtcbiAgICAgIHNldFNlbGVjdGVkRGF0YSh7IHR5cGU6ICdzZWxlY3RBbGwnIH0pXG4gICAgICBpZiAoc2VsZWN0ZWREYXRhLmFsbFNlbGVjdGVkICYmIG9uQ2hhbmdlKSB7XG4gICAgICAgIG9uQ2hhbmdlKFtdKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29uc3QgYWxsVmFsdWVzOiBPcHRpb25UeXBlW10gPSBbXVxuICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkob3B0aW9ucykpIHtcbiAgICAgICAgICBPYmplY3Qua2V5cyhvcHRpb25zKS5tYXAoKGdyb3VwOiBzdHJpbmcpID0+XG4gICAgICAgICAgICBvcHRpb25zW2dyb3VwXS5tYXAob3B0aW9uID0+IHtcbiAgICAgICAgICAgICAgaWYgKCFvcHRpb24uZGlzYWJsZWQpIHtcbiAgICAgICAgICAgICAgICBhbGxWYWx1ZXMucHVzaChvcHRpb24pXG4gICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICByZXR1cm4gbnVsbFxuICAgICAgICAgICAgfSksXG4gICAgICAgICAgKVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG9wdGlvbnMubWFwKG9wdGlvbiA9PiBhbGxWYWx1ZXMucHVzaChvcHRpb24pKVxuICAgICAgICB9XG4gICAgICAgIG9uQ2hhbmdlPy4oYWxsVmFsdWVzLm1hcCh2YWx1ZSA9PiB2YWx1ZS52YWx1ZSkpXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgY29uc3QgaGFuZGxlU2VsZWN0R3JvdXAgPSAoZ3JvdXA6IHN0cmluZykgPT4ge1xuICAgIGlmIChtdWx0aXNlbGVjdCkge1xuICAgICAgc2V0U2VsZWN0ZWREYXRhKHsgdHlwZTogJ3NlbGVjdEdyb3VwJywgc2VsZWN0ZWRHcm91cDogZ3JvdXAgfSlcbiAgICAgIGlmICghQXJyYXkuaXNBcnJheShvcHRpb25zKSkge1xuICAgICAgICBpZiAoc2VsZWN0ZWREYXRhLnNlbGVjdGVkR3JvdXBzLmluY2x1ZGVzKGdyb3VwKSkge1xuICAgICAgICAgIGNvbnN0IG5ld1NlbGVjdGVkVmFsdWVzID0gWy4uLnNlbGVjdGVkRGF0YS5zZWxlY3RlZFZhbHVlc10uZmlsdGVyKFxuICAgICAgICAgICAgc2VsZWN0ZWRWYWx1ZSA9PlxuICAgICAgICAgICAgICAhb3B0aW9uc1tncm91cF0uZmluZChvcHRpb24gPT4gb3B0aW9uLnZhbHVlID09PSBzZWxlY3RlZFZhbHVlKSxcbiAgICAgICAgICApXG4gICAgICAgICAgb25DaGFuZ2U/LihuZXdTZWxlY3RlZFZhbHVlcylcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCBuZXdTZWxlY3RlZFZhbHVlcyA9IFsuLi5zZWxlY3RlZERhdGEuc2VsZWN0ZWRWYWx1ZXNdXG5cbiAgICAgICAgICBvcHRpb25zW2dyb3VwXS5tYXAob3B0aW9uID0+XG4gICAgICAgICAgICBuZXdTZWxlY3RlZFZhbHVlcy5pbmNsdWRlcyhvcHRpb24udmFsdWUpIHx8IG9wdGlvbi5kaXNhYmxlZFxuICAgICAgICAgICAgICA/IG51bGxcbiAgICAgICAgICAgICAgOiBuZXdTZWxlY3RlZFZhbHVlcy5wdXNoKG9wdGlvbi52YWx1ZSksXG4gICAgICAgICAgKVxuICAgICAgICAgIG9uQ2hhbmdlPy4obmV3U2VsZWN0ZWRWYWx1ZXMpXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gIUFycmF5LmlzQXJyYXkoZGlzcGxheWVkT3B0aW9ucykgPyAoXG4gICAgPERyb3Bkb3duQ29udGFpbmVyXG4gICAgICByb2xlPVwibGlzdGJveFwiXG4gICAgICBpZD1cInNlbGVjdC1kcm9wZG93blwiXG4gICAgICBvbktleURvd249e2hhbmRsZUtleURvd25TZWxlY3R9XG4gICAgICBkYXRhLWdyb3VwZWRcbiAgICA+XG4gICAgICB7aXNMb2FkaW5nID8gKFxuICAgICAgICA8U2tlbGV0b24gdmFyaWFudD1cImJsb2NrXCIgLz5cbiAgICAgICkgOiAoXG4gICAgICAgIDw+XG4gICAgICAgICAge3NlbGVjdEFsbCAmJiBtdWx0aXNlbGVjdCA/IChcbiAgICAgICAgICAgIDxTdGFjayBpZD1cIml0ZW1zXCI+XG4gICAgICAgICAgICAgIDxEcm9wZG93bkl0ZW1cbiAgICAgICAgICAgICAgICBhcmlhLWRpc2FibGVkPXtmYWxzZX1cbiAgICAgICAgICAgICAgICBhcmlhLXNlbGVjdGVkPXtzZWxlY3RlZERhdGEuYWxsU2VsZWN0ZWR9XG4gICAgICAgICAgICAgICAgYXJpYS1sYWJlbD1cInNlbGVjdC1hbGxcIlxuICAgICAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwic2VsZWN0LWFsbFwiXG4gICAgICAgICAgICAgICAgaWQ9XCJzZWxlY3QtYWxsXCJcbiAgICAgICAgICAgICAgICB0YWJJbmRleD17MH1cbiAgICAgICAgICAgICAgICByb2xlPVwib3B0aW9uXCJcbiAgICAgICAgICAgICAgICBvbktleURvd249e2V2ZW50ID0+XG4gICAgICAgICAgICAgICAgICBbJyAnLCAnRW50ZXInXS5pbmNsdWRlcyhldmVudC5rZXkpID8gc2VsZWN0QWxsT3B0aW9ucygpIDogbnVsbFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBvbkNsaWNrPXtzZWxlY3RBbGxPcHRpb25zfVxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgPFN0eWxlZENoZWNrYm94XG4gICAgICAgICAgICAgICAgICBjaGVja2VkPXtzZWxlY3RlZERhdGEuYWxsU2VsZWN0ZWR9XG4gICAgICAgICAgICAgICAgICBkaXNhYmxlZD17ZmFsc2V9XG4gICAgICAgICAgICAgICAgICB2YWx1ZT1cInNlbGVjdC1hbGxcIlxuICAgICAgICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJzZWxlY3QtYWxsLWNoZWNrYm94XCJcbiAgICAgICAgICAgICAgICAgIHRhYkluZGV4PXstMX1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8U3RhY2sgZGlyZWN0aW9uPVwiY29sdW1uXCI+XG4gICAgICAgICAgICAgICAgICAgIDxUZXh0IGFzPVwic3BhblwiIHZhcmlhbnQ9XCJib2R5XCIgcGxhY2VtZW50PVwibGVmdFwiPlxuICAgICAgICAgICAgICAgICAgICAgIHtzZWxlY3RBbGwubGFiZWx9XG4gICAgICAgICAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgICAgICAgICAgPFRleHRcbiAgICAgICAgICAgICAgICAgICAgICBhcz1cInNwYW5cIlxuICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJib2R5U21hbGxcIlxuICAgICAgICAgICAgICAgICAgICAgIHNlbnRpbWVudD1cIm5ldXRyYWxcIlxuICAgICAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImxlZnRcIlxuICAgICAgICAgICAgICAgICAgICAgIHByb21pbmVuY2U9XCJ3ZWFrXCJcbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgIHtzZWxlY3RBbGwuZGVzY3JpcHRpb259XG4gICAgICAgICAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgICAgICAgIDwvU3RhY2s+XG4gICAgICAgICAgICAgICAgPC9TdHlsZWRDaGVja2JveD5cbiAgICAgICAgICAgICAgPC9Ecm9wZG93bkl0ZW0+XG4gICAgICAgICAgICA8L1N0YWNrPlxuICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgIHtPYmplY3Qua2V5cyhkaXNwbGF5ZWRPcHRpb25zKS5tYXAoKGdyb3VwLCBpbmRleCkgPT4gKFxuICAgICAgICAgICAgPFN0YWNrIGtleT17Z3JvdXB9IGdhcD17MC4yNX0+XG4gICAgICAgICAgICAgIHtkaXNwbGF5ZWRPcHRpb25zW2dyb3VwXS5sZW5ndGggPiAwID8gKFxuICAgICAgICAgICAgICAgIDxEcm9wZG93bkdyb3VwV3JhcHBlciBpZD17c2VsZWN0QWxsR3JvdXAgPyAnaXRlbXMnIDogdW5kZWZpbmVkfT5cbiAgICAgICAgICAgICAgICAgIHtncm91cCA/IChcbiAgICAgICAgICAgICAgICAgICAgPERyb3Bkb3duR3JvdXBcbiAgICAgICAgICAgICAgICAgICAgICBrZXk9e2dyb3VwfVxuICAgICAgICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgICAgICAgIHRhYkluZGV4PXtzZWxlY3RBbGxHcm91cCA/IDAgOiAtMX1cbiAgICAgICAgICAgICAgICAgICAgICBvbktleURvd249e2V2ZW50ID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChbJyAnLCAnRW50ZXInXS5pbmNsdWRlcyhldmVudC5rZXkpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KClcbiAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlU2VsZWN0R3JvdXAoZ3JvdXApXG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgICBkYXRhLXNlbGVjdGdyb3VwPXtzZWxlY3RBbGxHcm91cH1cbiAgICAgICAgICAgICAgICAgICAgICByb2xlPVwiZ3JvdXBcIlxuICAgICAgICAgICAgICAgICAgICAgIGRhdGEtdGVzdGlkPXtgZ3JvdXAtJHtpbmRleH1gfVxuICAgICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+XG4gICAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RBbGxHcm91cCA/IGhhbmRsZVNlbGVjdEdyb3VwKGdyb3VwKSA6IG51bGxcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7c2VsZWN0QWxsR3JvdXAgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8U3R5bGVkQ2hlY2tib3hcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tlZD17c2VsZWN0ZWREYXRhLnNlbGVjdGVkR3JvdXBzLmluY2x1ZGVzKGdyb3VwKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17Z3JvdXB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwic2VsZWN0LWdyb3VwXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdGFiSW5kZXg9ey0xfVxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICA8VGV4dCB2YXJpYW50PVwiY2FwdGlvblwiIGFzPVwic3BhblwiIHBsYWNlbWVudD1cImxlZnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7Z3JvdXAudG9VcHBlckNhc2UoKX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgICAgICAgICAgICAgICAgPC9TdHlsZWRDaGVja2JveD5cbiAgICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgICAgPFRleHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFudD1cImNhcHRpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBhcz1cInNwYW5cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJsZWZ0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2VudGltZW50PVwibmV1dHJhbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHtncm91cC50b1VwcGVyQ2FzZSgpfVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgIDwvRHJvcGRvd25Hcm91cD5cbiAgICAgICAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgICAgIDwvRHJvcGRvd25Hcm91cFdyYXBwZXI+XG4gICAgICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgICAgICA8U3RhY2sgaWQ9XCJpdGVtc1wiIGdhcD1cIjAuMjVcIj5cbiAgICAgICAgICAgICAgICB7ZGlzcGxheWVkT3B0aW9uc1tncm91cF0ubWFwKChvcHRpb24sIGluZGV4T3B0aW9uKSA9PiAoXG4gICAgICAgICAgICAgICAgICA8RHJvcGRvd25JdGVtXG4gICAgICAgICAgICAgICAgICAgIGtleT17b3B0aW9uLnZhbHVlfVxuICAgICAgICAgICAgICAgICAgICBhcmlhLWRpc2FibGVkPXshIW9wdGlvbi5kaXNhYmxlZH1cbiAgICAgICAgICAgICAgICAgICAgdGFiSW5kZXg9eyFvcHRpb24uZGlzYWJsZWQgPyAwIDogLTF9XG4gICAgICAgICAgICAgICAgICAgIGFyaWEtc2VsZWN0ZWQ9e1xuICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkRGF0YS5zZWxlY3RlZFZhbHVlcy5pbmNsdWRlcyhvcHRpb24udmFsdWUpICYmXG4gICAgICAgICAgICAgICAgICAgICAgIW9wdGlvbi5kaXNhYmxlZFxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9e29wdGlvbi52YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgZGF0YS10ZXN0aWQ9e2BvcHRpb24tJHtvcHRpb24udmFsdWV9YH1cbiAgICAgICAgICAgICAgICAgICAgaWQ9e2BvcHRpb24tJHtpbmRleE9wdGlvbn1gfVxuICAgICAgICAgICAgICAgICAgICByb2xlPVwib3B0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgICAgICAgIGlmICghb3B0aW9uLmRpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVDbGljayhvcHRpb24sIGdyb3VwKVxuICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgb25LZXlEb3duPXtldmVudCA9PlxuICAgICAgICAgICAgICAgICAgICAgIFsnICcsICdFbnRlciddLmluY2x1ZGVzKGV2ZW50LmtleSlcbiAgICAgICAgICAgICAgICAgICAgICAgID8gaGFuZGxlQ2xpY2sob3B0aW9uLCBncm91cClcbiAgICAgICAgICAgICAgICAgICAgICAgIDogbnVsbFxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJlZj17XG4gICAgICAgICAgICAgICAgICAgICAgb3B0aW9uLnZhbHVlID09PSBkZWZhdWx0U2VhcmNoVmFsdWUgfHxcbiAgICAgICAgICAgICAgICAgICAgICBvcHRpb24uc2VhcmNoVGV4dCA9PT0gZGVmYXVsdFNlYXJjaFZhbHVlXG4gICAgICAgICAgICAgICAgICAgICAgICA/IGZvY3VzZWRJdGVtUmVmXG4gICAgICAgICAgICAgICAgICAgICAgICA6IG51bGxcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7bXVsdGlzZWxlY3QgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgPFN0eWxlZENoZWNrYm94XG4gICAgICAgICAgICAgICAgICAgICAgICBjaGVja2VkPXtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzLmluY2x1ZGVzKG9wdGlvbi52YWx1ZSkgJiZcbiAgICAgICAgICAgICAgICAgICAgICAgICAgIW9wdGlvbi5kaXNhYmxlZFxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e29wdGlvbi5kaXNhYmxlZH1cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXtvcHRpb24udmFsdWV9XG4gICAgICAgICAgICAgICAgICAgICAgICB0YWJJbmRleD17LTF9XG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgPERpc3BsYXlPcHRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uPXtvcHRpb259XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uRGlyZWN0aW9uPXtkZXNjcmlwdGlvbkRpcmVjdGlvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWxJbmZvUGxhY2VtZW50PXtvcHRpb25hbEluZm9QbGFjZW1lbnR9XG4gICAgICAgICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgICAgICAgIDwvU3R5bGVkQ2hlY2tib3g+XG4gICAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgICAgPERpc3BsYXlPcHRpb25cbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbj17b3B0aW9ufVxuICAgICAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb25EaXJlY3Rpb249e2Rlc2NyaXB0aW9uRGlyZWN0aW9ufVxuICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWxJbmZvUGxhY2VtZW50PXtvcHRpb25hbEluZm9QbGFjZW1lbnR9XG4gICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgIDwvRHJvcGRvd25JdGVtPlxuICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICA8L1N0YWNrPlxuICAgICAgICAgICAgPC9TdGFjaz5cbiAgICAgICAgICApKX1cbiAgICAgICAgPC8+XG4gICAgICApfVxuICAgICAge2xvYWRNb3JlID8gPExvYWRNb3JlPntsb2FkTW9yZX08L0xvYWRNb3JlPiA6IG51bGx9XG4gICAgPC9Ecm9wZG93bkNvbnRhaW5lcj5cbiAgKSA6IChcbiAgICA8RHJvcGRvd25Db250YWluZXJcbiAgICAgIHJvbGU9XCJsaXN0Ym94XCJcbiAgICAgIHRhYkluZGV4PXstMX1cbiAgICAgIGlkPVwic2VsZWN0LWRyb3Bkb3duXCJcbiAgICAgIG9uS2V5RG93bj17aGFuZGxlS2V5RG93blNlbGVjdH1cbiAgICAgIGdhcD17MC4yNX1cbiAgICAgIGRhdGEtZ3JvdXBlZD17ZmFsc2V9XG4gICAgPlxuICAgICAge3NlbGVjdEFsbCAmJiBtdWx0aXNlbGVjdCA/IChcbiAgICAgICAgPFN0YWNrIGlkPVwiaXRlbXNcIiBnYXA9ezAuMjV9IHRhYkluZGV4PXstMX0+XG4gICAgICAgICAgPERyb3Bkb3duSXRlbVxuICAgICAgICAgICAgYXJpYS1kaXNhYmxlZD17ZmFsc2V9XG4gICAgICAgICAgICBhcmlhLXNlbGVjdGVkPXtzZWxlY3RlZERhdGEuYWxsU2VsZWN0ZWR9XG4gICAgICAgICAgICBhcmlhLWxhYmVsPVwic2VsZWN0LWFsbFwiXG4gICAgICAgICAgICBkYXRhLXRlc3RpZD1cInNlbGVjdC1hbGxcIlxuICAgICAgICAgICAgdGFiSW5kZXg9ezB9XG4gICAgICAgICAgICByb2xlPVwib3B0aW9uXCJcbiAgICAgICAgICAgIG9uS2V5RG93bj17ZXZlbnQgPT5cbiAgICAgICAgICAgICAgWycgJywgJ0VudGVyJ10uaW5jbHVkZXMoZXZlbnQua2V5KSA/IHNlbGVjdEFsbE9wdGlvbnMoKSA6IG51bGxcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG9uQ2xpY2s9e3NlbGVjdEFsbE9wdGlvbnN9XG4gICAgICAgICAgPlxuICAgICAgICAgICAgPFN0eWxlZENoZWNrYm94XG4gICAgICAgICAgICAgIGNoZWNrZWQ9e3NlbGVjdGVkRGF0YS5hbGxTZWxlY3RlZH1cbiAgICAgICAgICAgICAgZGlzYWJsZWQ9e2ZhbHNlfVxuICAgICAgICAgICAgICB2YWx1ZT1cInNlbGVjdC1hbGxcIlxuICAgICAgICAgICAgICBkYXRhLXRlc3RpZD1cInNlbGVjdC1hbGwtY2hlY2tib3hcIlxuICAgICAgICAgICAgICB0YWJJbmRleD17LTF9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxTdGFjayBkaXJlY3Rpb249XCJjb2x1bW5cIj5cbiAgICAgICAgICAgICAgICA8VGV4dCBhcz1cInNwYW5cIiB2YXJpYW50PVwiYm9keVwiIHBsYWNlbWVudD1cImxlZnRcIj5cbiAgICAgICAgICAgICAgICAgIHtzZWxlY3RBbGwubGFiZWx9XG4gICAgICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgICAgICAgIDxUZXh0XG4gICAgICAgICAgICAgICAgICBhcz1cInNwYW5cIlxuICAgICAgICAgICAgICAgICAgdmFyaWFudD1cImJvZHlTbWFsbFwiXG4gICAgICAgICAgICAgICAgICBzZW50aW1lbnQ9XCJuZXV0cmFsXCJcbiAgICAgICAgICAgICAgICAgIHBsYWNlbWVudD1cImxlZnRcIlxuICAgICAgICAgICAgICAgICAgcHJvbWluZW5jZT1cIndlYWtcIlxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgIHtzZWxlY3RBbGwuZGVzY3JpcHRpb259XG4gICAgICAgICAgICAgICAgPC9UZXh0PlxuICAgICAgICAgICAgICA8L1N0YWNrPlxuICAgICAgICAgICAgPC9TdHlsZWRDaGVja2JveD5cbiAgICAgICAgICA8L0Ryb3Bkb3duSXRlbT5cbiAgICAgICAgPC9TdGFjaz5cbiAgICAgICkgOiBudWxsfVxuICAgICAgPFN0YWNrIGlkPVwiaXRlbXNcIiBnYXA9ezAuMjV9PlxuICAgICAgICB7aXNMb2FkaW5nID8gKFxuICAgICAgICAgIDxTa2VsZXRvbiB2YXJpYW50PVwiYmxvY2tcIiAvPlxuICAgICAgICApIDogKFxuICAgICAgICAgIGRpc3BsYXllZE9wdGlvbnMubWFwKChvcHRpb24sIGluZGV4KSA9PiAoXG4gICAgICAgICAgICA8RHJvcGRvd25JdGVtXG4gICAgICAgICAgICAgIGtleT17b3B0aW9uLnZhbHVlfVxuICAgICAgICAgICAgICBhcmlhLWRpc2FibGVkPXshIW9wdGlvbi5kaXNhYmxlZH1cbiAgICAgICAgICAgICAgYXJpYS1zZWxlY3RlZD17XG4gICAgICAgICAgICAgICAgc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzLmluY2x1ZGVzKG9wdGlvbi52YWx1ZSkgJiZcbiAgICAgICAgICAgICAgICAhb3B0aW9uLmRpc2FibGVkXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmICghb3B0aW9uLmRpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgICBoYW5kbGVDbGljayhvcHRpb24pXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICBhcmlhLWxhYmVsPXtvcHRpb24udmFsdWV9XG4gICAgICAgICAgICAgIGRhdGEtdGVzdGlkPXtgb3B0aW9uLSR7b3B0aW9uLnZhbHVlfWB9XG4gICAgICAgICAgICAgIGlkPXtgb3B0aW9uLSR7aW5kZXh9YH1cbiAgICAgICAgICAgICAgcm9sZT1cIm9wdGlvblwiXG4gICAgICAgICAgICAgIHRhYkluZGV4PXshb3B0aW9uLmRpc2FibGVkID8gMCA6IC0xfVxuICAgICAgICAgICAgICByZWY9e1xuICAgICAgICAgICAgICAgIG9wdGlvbi52YWx1ZSA9PT0gZGVmYXVsdFNlYXJjaFZhbHVlIHx8XG4gICAgICAgICAgICAgICAgb3B0aW9uLnNlYXJjaFRleHQgPT09IGRlZmF1bHRTZWFyY2hWYWx1ZVxuICAgICAgICAgICAgICAgICAgPyBmb2N1c2VkSXRlbVJlZlxuICAgICAgICAgICAgICAgICAgOiBudWxsXG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgb25LZXlEb3duPXtldmVudCA9PlxuICAgICAgICAgICAgICAgIFsnICcsICdFbnRlciddLmluY2x1ZGVzKGV2ZW50LmtleSkgPyBoYW5kbGVDbGljayhvcHRpb24pIDogbnVsbFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIHttdWx0aXNlbGVjdCA/IChcbiAgICAgICAgICAgICAgICA8U3R5bGVkQ2hlY2tib3hcbiAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e1xuICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZERhdGEuc2VsZWN0ZWRWYWx1ZXMuaW5jbHVkZXMob3B0aW9uLnZhbHVlKSAmJlxuICAgICAgICAgICAgICAgICAgICAhb3B0aW9uLmRpc2FibGVkXG4gICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICBkaXNhYmxlZD17b3B0aW9uLmRpc2FibGVkfVxuICAgICAgICAgICAgICAgICAgdmFsdWU9e29wdGlvbi52YWx1ZX1cbiAgICAgICAgICAgICAgICAgIHRhYkluZGV4PXstMX1cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICA8RGlzcGxheU9wdGlvblxuICAgICAgICAgICAgICAgICAgICBvcHRpb249e29wdGlvbn1cbiAgICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb25EaXJlY3Rpb249e2Rlc2NyaXB0aW9uRGlyZWN0aW9ufVxuICAgICAgICAgICAgICAgICAgICBvcHRpb25hbEluZm9QbGFjZW1lbnQ9e29wdGlvbmFsSW5mb1BsYWNlbWVudH1cbiAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgPC9TdHlsZWRDaGVja2JveD5cbiAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICA8RGlzcGxheU9wdGlvblxuICAgICAgICAgICAgICAgICAgb3B0aW9uPXtvcHRpb259XG4gICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbkRpcmVjdGlvbj17ZGVzY3JpcHRpb25EaXJlY3Rpb259XG4gICAgICAgICAgICAgICAgICBvcHRpb25hbEluZm9QbGFjZW1lbnQ9e29wdGlvbmFsSW5mb1BsYWNlbWVudH1cbiAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgPC9Ecm9wZG93bkl0ZW0+XG4gICAgICAgICAgKSlcbiAgICAgICAgKX1cbiAgICAgICAge2xvYWRNb3JlID8gPExvYWRNb3JlPntsb2FkTW9yZX08L0xvYWRNb3JlPiA6IG51bGx9XG4gICAgICA8L1N0YWNrPlxuICAgIDwvRHJvcGRvd25Db250YWluZXI+XG4gIClcbn1cbmV4cG9ydCBjb25zdCBEcm9wZG93biA9ICh7XG4gIGNoaWxkcmVuLFxuICBlbXB0eVN0YXRlLFxuICBkZXNjcmlwdGlvbkRpcmVjdGlvbixcbiAgc2VhcmNoYWJsZSxcbiAgcGxhY2Vob2xkZXIsXG4gIGZvb3RlcixcbiAgcmVmU2VsZWN0LFxuICBsb2FkTW9yZSxcbiAgb3B0aW9uYWxJbmZvUGxhY2VtZW50LFxuICBpc0xvYWRpbmcsXG4gIHNpemUsXG59OiBEcm9wZG93blByb3BzKSA9PiB7XG4gIGNvbnN0IHtcbiAgICBzZXRJc0Ryb3Bkb3duVmlzaWJsZSxcbiAgICBpc0Ryb3Bkb3duVmlzaWJsZSxcbiAgICBvblNlYXJjaCxcbiAgICBzZWFyY2hJbnB1dCxcbiAgICBvcHRpb25zLFxuICAgIGRpc3BsYXllZE9wdGlvbnMsXG4gICAgbnVtYmVyT2ZPcHRpb25zLFxuICB9ID0gdXNlU2VsZWN0SW5wdXQoKVxuICBjb25zdCB0aGVtZSA9IHVzZVRoZW1lKClcbiAgY29uc3QgW3NlYXJjaEJhckFjdGl2ZSwgc2V0U2VhcmNoQmFyQWN0aXZlXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbZGVmYXVsdFNlYXJjaFZhbHVlLCBzZXREZWZhdWx0U2VhcmNoXSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bGw+KG51bGwpXG4gIGNvbnN0IHJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcbiAgY29uc3QgW3NlYXJjaCwgc2V0U2VhcmNoXSA9IHVzZVN0YXRlPHN0cmluZz4oJycpXG4gIGNvbnN0IFttYXhXaWR0aCwgc2V0V2lkdGhdID0gdXNlU3RhdGU8c3RyaW5nIHwgbnVtYmVyPigpXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAocmVmU2VsZWN0LmN1cnJlbnQgJiYgaXNEcm9wZG93blZpc2libGUpIHtcbiAgICAgIGNvbnN0IHBvc2l0aW9uID1cbiAgICAgICAgcmVmU2VsZWN0LmN1cnJlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuYm90dG9tICtcbiAgICAgICAgRFJPUERPV05fTUFYX0hFSUdIVCArXG4gICAgICAgIElOUFVUX1NJWkVfSEVJR0hUW3NpemVdICtcbiAgICAgICAgcGFyc2VJbnQodGhlbWUuc3BhY2VbJzUnXSwgMTApXG4gICAgICBjb25zdCBvdmVyZmxvdyA9IHBvc2l0aW9uIC0gd2luZG93LmlubmVySGVpZ2h0XG4gICAgICBpZiAob3ZlcmZsb3cgPiAwKSB7XG4gICAgICAgIGNvbnN0IG1vZGFsRWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdiYWNrZHJvcC1tb2RhbCcpXG5cbiAgICAgICAgaWYgKG1vZGFsRWxlbWVudCkge1xuICAgICAgICAgIG1vZGFsRWxlbWVudC5zY3JvbGxCeSh7IHRvcDogb3ZlcmZsb3csIGJlaGF2aW9yOiAnc21vb3RoJyB9KVxuICAgICAgICB9IGVsc2Ugd2luZG93LnNjcm9sbEJ5KHsgdG9wOiBvdmVyZmxvdywgYmVoYXZpb3I6ICdzbW9vdGgnIH0pXG4gICAgICB9XG4gICAgfVxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9leGhhdXN0aXZlLWRlcHNcbiAgfSwgW2lzRHJvcGRvd25WaXNpYmxlLCByZWZTZWxlY3QsIHNpemUsIHJlZi5jdXJyZW50XSlcblxuICBjb25zdCByZXNpemVEcm9wZG93biA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoXG4gICAgICByZWZTZWxlY3QuY3VycmVudCAmJlxuICAgICAgcmVmU2VsZWN0LmN1cnJlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGggPiAwXG4gICAgKSB7XG4gICAgICBzZXRXaWR0aChyZWZTZWxlY3QuY3VycmVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aClcbiAgICB9XG4gIH0sIFtyZWZTZWxlY3RdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgcmVzaXplRHJvcGRvd24oKVxuXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHJlc2l6ZURyb3Bkb3duKVxuXG4gICAgcmV0dXJuICgpID0+IHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCByZXNpemVEcm9wZG93bilcbiAgfSwgW3Jlc2l6ZURyb3Bkb3duXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghc2VhcmNoSW5wdXQpIHtcbiAgICAgIG9uU2VhcmNoKG9wdGlvbnMpXG4gICAgfVxuICB9LCBbb25TZWFyY2gsIG9wdGlvbnMsIHNlYXJjaElucHV0XSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghaXNEcm9wZG93blZpc2libGUpIHtcbiAgICAgIHNldERlZmF1bHRTZWFyY2gobnVsbClcbiAgICAgIHNldFNlYXJjaCgnJylcbiAgICB9XG5cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCBldmVudCA9PlxuICAgICAgaGFuZGxlQ2xpY2tPdXRzaWRlKFxuICAgICAgICBldmVudCxcbiAgICAgICAgcmVmLFxuICAgICAgICBzZXRJc0Ryb3Bkb3duVmlzaWJsZSxcbiAgICAgICAgcmVmU2VsZWN0LFxuICAgICAgICBvblNlYXJjaCxcbiAgICAgICAgb3B0aW9ucyxcbiAgICAgICksXG4gICAgKVxuXG4gICAgaWYgKCFzZWFyY2hhYmxlKSB7XG4gICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgZXZlbnQgPT5cbiAgICAgICAgaGFuZGxlS2V5RG93bihcbiAgICAgICAgICBldmVudCxcbiAgICAgICAgICByZWYsXG4gICAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgICBzZWFyY2hCYXJBY3RpdmUsXG4gICAgICAgICAgc2V0U2VhcmNoLFxuICAgICAgICAgIHNldERlZmF1bHRTZWFyY2gsXG4gICAgICAgICAgc2VhcmNoLFxuICAgICAgICApLFxuICAgICAgKVxuICAgIH1cblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCBldmVudCA9PlxuICAgICAgICBoYW5kbGVDbGlja091dHNpZGUoXG4gICAgICAgICAgZXZlbnQsXG4gICAgICAgICAgcmVmLFxuICAgICAgICAgIHNldElzRHJvcGRvd25WaXNpYmxlLFxuICAgICAgICAgIHJlZlNlbGVjdCxcbiAgICAgICAgICBvblNlYXJjaCxcbiAgICAgICAgICBvcHRpb25zLFxuICAgICAgICApLFxuICAgICAgKVxuXG4gICAgICBpZiAoIXNlYXJjaGFibGUpIHtcbiAgICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIGV2ZW50ID0+XG4gICAgICAgICAgaGFuZGxlS2V5RG93bihcbiAgICAgICAgICAgIGV2ZW50LFxuICAgICAgICAgICAgcmVmLFxuICAgICAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgICAgIHNlYXJjaEJhckFjdGl2ZSxcbiAgICAgICAgICAgIHNldFNlYXJjaCxcbiAgICAgICAgICAgIHNldERlZmF1bHRTZWFyY2gsXG4gICAgICAgICAgICBzZWFyY2gsXG4gICAgICAgICAgKSxcbiAgICAgICAgKVxuICAgICAgfVxuICAgIH1cbiAgfSwgW1xuICAgIGlzRHJvcGRvd25WaXNpYmxlLFxuICAgIHNlYXJjaEJhckFjdGl2ZSxcbiAgICBvcHRpb25zLFxuICAgIG9uU2VhcmNoLFxuICAgIHNlYXJjaCxcbiAgICByZWZTZWxlY3QsXG4gICAgc2V0RGVmYXVsdFNlYXJjaCxcbiAgICBzZXRJc0Ryb3Bkb3duVmlzaWJsZSxcbiAgICBzZWFyY2hhYmxlLFxuICBdKVxuXG4gIC8vIE5vIGRhdGEgaXMgZGlzcGxheWVkIChiZWNhdXNlIG9mIHRoZSBzZWFyY2ggb3IgYmVjYXVzZSBubyBkYXRhIGlzIHByb3ZpZGVkKVxuICAvLyBTZXQgdG8gdHJ1ZSB3aGVuIG5vRGF0YSBieSBkZWZhdWx0XG4gIGNvbnN0IGlzRW1wdHkgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBpZiAobnVtYmVyT2ZPcHRpb25zID09PSAwKSByZXR1cm4gdHJ1ZVxuICAgIGlmIChBcnJheS5pc0FycmF5KGRpc3BsYXllZE9wdGlvbnMpKSB7XG4gICAgICByZXR1cm4gIShkaXNwbGF5ZWRPcHRpb25zLmxlbmd0aCA+IDApXG4gICAgfVxuICAgIGNvbnN0IGdyb3VwcyA9IE9iamVjdC5rZXlzKGRpc3BsYXllZE9wdGlvbnMpXG4gICAgZm9yIChjb25zdCBncm91cCBvZiBncm91cHMpIHtcbiAgICAgIGlmIChkaXNwbGF5ZWRPcHRpb25zW2dyb3VwXS5sZW5ndGggIT09IDApIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRydWVcbiAgfSwgW2Rpc3BsYXllZE9wdGlvbnMsIG51bWJlck9mT3B0aW9uc10pXG5cbiAgY29uc3QgY29tcHV0ZWRGb290ZXIgPSB1c2VNZW1vKCgpID0+IHtcbiAgICBpZiAoZm9vdGVyKSB7XG4gICAgICBpZiAodHlwZW9mIGZvb3RlciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgIDxQb3B1cEZvb3Rlcj57Zm9vdGVyKCgpID0+IHNldElzRHJvcGRvd25WaXNpYmxlKGZhbHNlKSl9PC9Qb3B1cEZvb3Rlcj5cbiAgICAgICAgKVxuICAgICAgfVxuXG4gICAgICByZXR1cm4gPFBvcHVwRm9vdGVyPntmb290ZXJ9PC9Qb3B1cEZvb3Rlcj5cbiAgICB9XG5cbiAgICByZXR1cm4gbnVsbFxuICB9LCBbZm9vdGVyLCBzZXRJc0Ryb3Bkb3duVmlzaWJsZV0pXG5cbiAgcmV0dXJuIChcbiAgICA8U3R5bGVkUG9wdXBcbiAgICAgIHZpc2libGU9e2lzRHJvcGRvd25WaXNpYmxlfVxuICAgICAgdGV4dD17XG4gICAgICAgIDxTdGFjaz5cbiAgICAgICAgICB7c2VhcmNoYWJsZSAmJiAhaXNMb2FkaW5nICYmIG51bWJlck9mT3B0aW9ucyA+PSA2ID8gKFxuICAgICAgICAgICAgPFNlYXJjaEJhckRyb3Bkb3duXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXtwbGFjZWhvbGRlcn1cbiAgICAgICAgICAgICAgZGlzcGxheWVkT3B0aW9ucz17ZGlzcGxheWVkT3B0aW9uc31cbiAgICAgICAgICAgICAgc2V0U2VhcmNoQmFyQWN0aXZlPXtzZXRTZWFyY2hCYXJBY3RpdmV9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgIDxDcmVhdGVEcm9wZG93blxuICAgICAgICAgICAgaXNFbXB0eT17aXNFbXB0eX1cbiAgICAgICAgICAgIGVtcHR5U3RhdGU9e2VtcHR5U3RhdGV9XG4gICAgICAgICAgICBkZXNjcmlwdGlvbkRpcmVjdGlvbj17ZGVzY3JpcHRpb25EaXJlY3Rpb259XG4gICAgICAgICAgICBsb2FkTW9yZT17bG9hZE1vcmV9XG4gICAgICAgICAgICBvcHRpb25hbEluZm9QbGFjZW1lbnQ9e29wdGlvbmFsSW5mb1BsYWNlbWVudH1cbiAgICAgICAgICAgIGRlZmF1bHRTZWFyY2hWYWx1ZT17ZGVmYXVsdFNlYXJjaFZhbHVlfVxuICAgICAgICAgICAgaXNMb2FkaW5nPXtpc0xvYWRpbmd9XG4gICAgICAgICAgLz5cbiAgICAgICAgICB7Y29tcHV0ZWRGb290ZXJ9XG4gICAgICAgIDwvU3RhY2s+XG4gICAgICB9XG4gICAgICBwbGFjZW1lbnQ9XCJib3R0b21cIlxuICAgICAgZGlzYWJsZUFuaW1hdGlvblxuICAgICAgbWF4V2lkdGg9e21heFdpZHRoID8/IHJlZlNlbGVjdC5jdXJyZW50Py5vZmZzZXRXaWR0aH1cbiAgICAgIGhhc0Fycm93PXtmYWxzZX1cbiAgICAgIHJlZj17cmVmfVxuICAgICAgdGFiSW5kZXg9ezB9XG4gICAgICByb2xlPVwiZGlhbG9nXCJcbiAgICAgIGRlYm91bmNlRGVsYXk9ezB9XG4gICAgICBjb250YWluZXJGdWxsV2lkdGhcbiAgICAgIGFsaWduPVwic3RhcnRcIlxuICAgID5cbiAgICAgIHtjaGlsZHJlbn1cbiAgICA8L1N0eWxlZFBvcHVwPlxuICApXG59XG4iXX0= */"));
131
131
  const PopupFooter = /* @__PURE__ */ _styled__default.default("div", process.env.NODE_ENV === "production" ? {
132
132
  target: "eeucz6c3"
133
133
  } : {
@@ -143,7 +143,7 @@ const PopupFooter = /* @__PURE__ */ _styled__default.default("div", process.env.
143
143
  theme
144
144
  }) => theme.space[2], ";box-shadow:", ({
145
145
  theme
146
- }) => theme.shadows.dropdown, ";" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL3VsdHJhdmlvbGV0L3VsdHJhdmlvbGV0L3BhY2thZ2VzL3VpL3NyYy9jb21wb25lbnRzL1NlbGVjdElucHV0VjIvRHJvcGRvd24udHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQTRKOEIiLCJmaWxlIjoiL2hvbWUvcnVubmVyL3dvcmsvdWx0cmF2aW9sZXQvdWx0cmF2aW9sZXQvcGFja2FnZXMvdWkvc3JjL2NvbXBvbmVudHMvU2VsZWN0SW5wdXRWMi9Ecm9wZG93bi50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1c2VUaGVtZSB9IGZyb20gJ0BlbW90aW9uL3JlYWN0J1xuaW1wb3J0IHN0eWxlZCBmcm9tICdAZW1vdGlvbi9zdHlsZWQnXG5pbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VNZW1vLCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgdHlwZSB7XG4gIERpc3BhdGNoLFxuICBLZXlib2FyZEV2ZW50LFxuICBSZWFjdE5vZGUsXG4gIFJlZk9iamVjdCxcbiAgU2V0U3RhdGVBY3Rpb24sXG59IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgQ2hlY2tib3ggfSBmcm9tICcuLi9DaGVja2JveCdcbmltcG9ydCB7IFBvcHVwIH0gZnJvbSAnLi4vUG9wdXAnXG5pbXBvcnQgeyBTa2VsZXRvbiB9IGZyb20gJy4uL1NrZWxldG9uJ1xuaW1wb3J0IHsgU3RhY2sgfSBmcm9tICcuLi9TdGFjaydcbmltcG9ydCB7IFRleHQgfSBmcm9tICcuLi9UZXh0J1xuaW1wb3J0IHsgRGlzcGxheU9wdGlvbiB9IGZyb20gJy4vRHJvcGRvd25PcHRpb24nXG5pbXBvcnQgeyBTZWFyY2hCYXJEcm9wZG93biB9IGZyb20gJy4vU2VhcmNoQmFyRHJvcGRvd24nXG5pbXBvcnQgeyB1c2VTZWxlY3RJbnB1dCB9IGZyb20gJy4vU2VsZWN0SW5wdXRQcm92aWRlcidcbmltcG9ydCB7IHR5cGUgRGF0YVR5cGUsIElOUFVUX1NJWkVfSEVJR0hULCB0eXBlIE9wdGlvblR5cGUgfSBmcm9tICcuL3R5cGVzJ1xuXG5jb25zdCBEUk9QRE9XTl9NQVhfSEVJR0hUID0gMjU2XG5cbmV4cG9ydCB0eXBlIERyb3Bkb3duUHJvcHMgPSB7XG4gIGNoaWxkcmVuOiBSZWFjdE5vZGVcbiAgZW1wdHlTdGF0ZTogUmVhY3ROb2RlXG4gIGRlc2NyaXB0aW9uRGlyZWN0aW9uOiAncm93JyB8ICdjb2x1bW4nXG4gIHNlYXJjaGFibGU6IGJvb2xlYW5cbiAgcGxhY2Vob2xkZXI6IHN0cmluZ1xuICBmb290ZXI/OiBSZWFjdE5vZGVcbiAgcmVmU2VsZWN0OiBSZWZPYmplY3Q8SFRNTERpdkVsZW1lbnQ+XG4gIGxvYWRNb3JlPzogUmVhY3ROb2RlXG4gIG9wdGlvbmFsSW5mb1BsYWNlbWVudDogJ2xlZnQnIHwgJ3JpZ2h0J1xuICBpc0xvYWRpbmc/OiBib29sZWFuXG4gIHNpemU6ICdzbWFsbCcgfCAnbWVkaXVtJyB8ICdsYXJnZSdcbn1cblxuZXhwb3J0IHR5cGUgQ3JlYXRlRHJvcGRvd25Qcm9wcyA9IHtcbiAgaXNFbXB0eTogYm9vbGVhblxuICBlbXB0eVN0YXRlOiBSZWFjdE5vZGVcbiAgZGVzY3JpcHRpb25EaXJlY3Rpb246ICdyb3cnIHwgJ2NvbHVtbidcbiAgbG9hZE1vcmU/OiBSZWFjdE5vZGVcbiAgb3B0aW9uYWxJbmZvUGxhY2VtZW50OiAnbGVmdCcgfCAncmlnaHQnXG4gIGRlZmF1bHRTZWFyY2hWYWx1ZTogc3RyaW5nIHwgbnVsbFxuICBpc0xvYWRpbmc/OiBib29sZWFuXG59XG5cbmNvbnN0IE5PTl9TRUFSQ0hBQkxFX0tFWVMgPSBbXG4gICdUYWInLFxuICAnICcsXG4gICdFbnRlcicsXG4gICdDYXBzTG9jaycsXG4gICdTaGlmdCcsXG4gICdBcnJvd0Rvd24nLFxuICAnQXJyb3dVcCcsXG4gICdBcnJvd0xlZnQnLFxuICAnQXJyb3dSaWdodCcsXG4gICdFc2NhcGUnLFxuXVxuXG5jb25zdCBTdHlsZWRQb3B1cCA9IHN0eWxlZChQb3B1cClgXG4gIHdpZHRoOiAxMDAlO1xuICBtaW4td2lkdGg6IDMyMHB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5vdGhlci5lbGV2YXRpb24uYmFja2dyb3VuZC5yYWlzZWR9O1xuICBjb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMubmV1dHJhbC50ZXh0fTtcbiAgYm94LXNoYWRvdzogJHsoeyB0aGVtZSB9KSA9PiBgJHt0aGVtZS5zaGFkb3dzLnJhaXNlZFswXX0sICR7dGhlbWUuc2hhZG93cy5yYWlzZWRbMV19YH07XG4gIHBhZGRpbmc6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMF19O1xuICBtYXJnaW4tYm90dG9tOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzEwXX07XG5gXG5cbmNvbnN0IERyb3Bkb3duQ29udGFpbmVyID0gc3R5bGVkKFN0YWNrKTx7ICdkYXRhLWdyb3VwZWQnOiBib29sZWFuIH0+YFxuICBtYXgtaGVpZ2h0OiAke0RST1BET1dOX01BWF9IRUlHSFR9cHg7XG4gIG92ZXJmbG93LXk6IHNjcm9sbDtcbiAgcGFkZGluZzogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVswXX07XG4gIHBhZGRpbmctYm90dG9tOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzAuNV19O1xuICBwYWRkaW5nLXRvcDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVswLjVdfTtcblxuICAmW2RhdGEtZ3JvdXBlZD1cInRydWVcIl0ge1xuICAgIHBhZGRpbmctdG9wOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzBdfTtcbiAgfVxuYFxuY29uc3QgRHJvcGRvd25Hcm91cCA9IHN0eWxlZC5idXR0b248eyAnZGF0YS1zZWxlY3Rncm91cCc6IGJvb2xlYW4gfT5gXG4gIGRpc3BsYXk6IGZsZXg7XG4gIHdpZHRoOiAxMDAlO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGxlZnQ7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGJvcmRlcjogbm9uZTtcbiAgYmFja2dyb3VuZC1jb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMubmV1dHJhbC5iYWNrZ3JvdW5kV2Vha307XG4gIHBvc2l0aW9uOiBzdGlja3k7XG4gIHRvcDogMHB4O1xuICBwYWRkaW5nLXJpZ2h0OiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzJdfTtcbiAgcGFkZGluZy1sZWZ0OiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzJdfTtcbiAgaGVpZ2h0OiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzRdfTtcbiAgdGV4dC1hbGlnbjogbGVmdDtcbiAgbWFyZ2luLWJvdHRvbTogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsnMC4yNSddfTtcblxuICAmOmZvY3VzIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5uZXV0cmFsLmJhY2tncm91bmRXZWFrfTtcbiAgICBvdXRsaW5lOiBub25lO1xuICB9XG5cbiAgJltkYXRhLXNlbGVjdGdyb3VwPSd0cnVlJ10ge1xuICAgIHBhZGRpbmctbGVmdDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsyXX07XG4gICAgYm9yZGVyLWxlZnQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMC41XX0gc29saWQgJHsoeyB0aGVtZSB9KSA9PlxuICAgICAgdGhlbWUuY29sb3JzLm5ldXRyYWwuYmFja2dyb3VuZFdlYWt9O1xuICB9XG5cbiAgJltkYXRhLXNlbGVjdGdyb3VwPSd0cnVlJ106Zm9jdXMge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwuYmFja2dyb3VuZEhvdmVyfTtcbiAgfVxuYFxuY29uc3QgRHJvcGRvd25Hcm91cFdyYXBwZXIgPSBzdHlsZWQuZGl2YFxuICBwb3NpdGlvbjogc3RpY2t5O1xuICB0b3A6IDBweDtcbmBcbmNvbnN0IERyb3Bkb3duSXRlbSA9IHN0eWxlZC5kaXY8e1xuICAnYXJpYS1zZWxlY3RlZCc6IGJvb2xlYW5cbiAgJ2FyaWEtZGlzYWJsZWQnOiBib29sZWFuXG59PmBcbiAgdGV4dC1hbGlnbjpsZWZ0O1xuICBib3JkZXI6IG5vbmU7XG4gIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm90aGVyLmVsZXZhdGlvbi5iYWNrZ3JvdW5kLnJhaXNlZH07XG5cbiAgcGFkZGluZzogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsnMS41J119ICR7KHsgdGhlbWUgfSkgPT5cbiAgICB0aGVtZS5zcGFjZVsnMiddfSAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWycxLjUnXX0gJHsoeyB0aGVtZSB9KSA9PlxuICAgIHRoZW1lLnNwYWNlWycyJ119O1xuICBtYXJnaW4tbGVmdDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsnMC41J119O1xuICBtYXJnaW4tcmlnaHQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbJzAuNSddfTtcblxuICBjb2xvcjogICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwudGV4dH07XG4gIGJvcmRlci1yYWRpdXM6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUucmFkaWkuZGVmYXVsdH07XG5cbiAgJjpob3ZlciwgOmZvY3VzIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5wcmltYXJ5LmJhY2tncm91bmR9O1xuICAgIGNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5wcmltYXJ5LnRleHR9O1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBvdXRsaW5lOiBub25lO1xuICB9XG5cbiAgJlthcmlhLXNlbGVjdGVkPSd0cnVlJ10ge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLnByaW1hcnkuYmFja2dyb3VuZH07XG4gIH1cblxuICAmW2FyaWEtZGlzYWJsZWQ9XCJ0cnVlXCJdIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5uZXV0cmFsLmJhY2tncm91bmREaXNhYmxlZH07XG4gICAgY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwudGV4dERpc2FibGVkfTtcbiAgfVxuXG4gICZbYXJpYS1kaXNhYmxlZD1cInRydWVcIl06aG92ZXIsIFthcmlhLWRpc2FibGVkPVwidHJ1ZVwiXTpmb2N1cyB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHsoeyB0aGVtZSB9KSA9PlxuICAgICAgdGhlbWUuY29sb3JzLm5ldXRyYWwuYmFja2dyb3VuZFN0cm9uZ0Rpc2FibGVkfTtcbiAgICBjb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMubmV1dHJhbC50ZXh0U3Ryb25nRGlzYWJsZWR9O1xuICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgfVxuYFxuXG5jb25zdCBQb3B1cEZvb3RlciA9IHN0eWxlZC5kaXZgXG4gIHdpZHRoOiAxMDAlO1xuICBwYWRkaW5nOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzEuNV19ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMl19XG4gICAgJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsxLjVdfSAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzJdfTtcbiAgYm94LXNoYWRvdzogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zaGFkb3dzLmRyb3Bkb3dufTtcbmBcbmNvbnN0IFN0eWxlZENoZWNrYm94ID0gc3R5bGVkKENoZWNrYm94KWBcbiAgd2lkdGg6IDEwMCU7XG4gIHBvc2l0aW9uOiBzdGF0aWM7XG4gIHRleHQtYWxpZ246IGxlZnQ7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuYCAvLyBwb2ludGVyLWV2ZW50czogbm9uZSBwcmV2ZW50cyBhbnkgZXJyb3Igd2hlbiB1c2luZyB0aGUgY2hlY2tib3ggaW4gYSBmb3JtIHNpbmNlIGl0IGlzIGFuIHVubmFtZWQgaW5wdXRcblxuY29uc3QgRW1wdHlTdGF0ZSA9IHN0eWxlZChTdGFjaylgXG4gIHBhZGRpbmc6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMl19O1xuYFxuY29uc3QgTG9hZE1vcmUgPSBzdHlsZWQoU3RhY2spYFxuICBwYWRkaW5nOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzAuNV19O1xuYFxuXG5jb25zdCBtb3ZlRm9jdXNEb3duID0gKCkgPT4ge1xuICBjb25zdCBvcHRpb25zID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcbiAgICAnI2l0ZW1zID4gZGl2W3JvbGU9XCJvcHRpb25cIl06bm90KFtkaXNhYmxlZF0pJyxcbiAgKVxuICBjb25zdCBhY3RpdmVJdGVtID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudFxuICBpZiAob3B0aW9ucykge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgb3B0aW9ucz8ubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgIGNvbnN0IGxpc3RMZW5ndGggPSBvcHRpb25zLmxlbmd0aFxuICAgICAgaWYgKGFjdGl2ZUl0ZW0gPT09IG9wdGlvbnNbaV0gJiYgYWN0aXZlSXRlbSAhPT0gb3B0aW9uc1tsaXN0TGVuZ3RoIC0gMV0pIHtcbiAgICAgICAgOyhvcHRpb25zW2kgKyAxXSBhcyBIVE1MRWxlbWVudCkuZm9jdXMoKVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuY29uc3QgbW92ZUZvY3VzVXAgPSAoKSA9PiB7XG4gIGNvbnN0IG9wdGlvbnMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFxuICAgICcjaXRlbXMgPiBkaXZbcm9sZT1cIm9wdGlvblwiXTpub3QoW2Rpc2FibGVkXSknLFxuICApXG4gIGNvbnN0IGFjdGl2ZUl0ZW0gPSBkb2N1bWVudC5hY3RpdmVFbGVtZW50XG5cbiAgaWYgKG9wdGlvbnMpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG9wdGlvbnMubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgIGlmIChhY3RpdmVJdGVtID09PSBvcHRpb25zW2ldICYmIGFjdGl2ZUl0ZW0gIT09IG9wdGlvbnNbMF0pIHtcbiAgICAgICAgOyhvcHRpb25zW2kgLSAxXSBhcyBIVE1MRWxlbWVudCkuZm9jdXMoKVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuY29uc3QgaGFuZGxlS2V5RG93blNlbGVjdCA9IChldmVudDogS2V5Ym9hcmRFdmVudDxIVE1MRGl2RWxlbWVudD4pID0+IHtcbiAgaWYgKGV2ZW50LmtleSA9PT0gJ0Fycm93RG93bicpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgbW92ZUZvY3VzRG93bigpXG4gIH1cblxuICBpZiAoZXZlbnQua2V5ID09PSAnQXJyb3dVcCcpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgbW92ZUZvY3VzVXAoKVxuICB9XG59XG5jb25zdCBoYW5kbGVDbGlja091dHNpZGUgPSAoXG4gIGV2ZW50OiBNb3VzZUV2ZW50LFxuICByZWY6IFJlZk9iamVjdDxIVE1MRGl2RWxlbWVudD4sXG4gIHNldElzRHJvcGRvd25WaXNpYmlsZTogRGlzcGF0Y2g8U2V0U3RhdGVBY3Rpb248Ym9vbGVhbj4+LFxuICByZWZTZWxlY3Q6IFJlZk9iamVjdDxIVE1MRGl2RWxlbWVudD4sXG4gIG9uU2VhcmNoOiBEaXNwYXRjaDxTZXRTdGF0ZUFjdGlvbjxEYXRhVHlwZT4+LFxuICBvcHRpb25zOiBEYXRhVHlwZSxcbikgPT4ge1xuICBpZiAoXG4gICAgcmVmLmN1cnJlbnQgJiZcbiAgICAhcmVmLmN1cnJlbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0IGFzIE5vZGUpICYmXG4gICAgIXJlZlNlbGVjdC5jdXJyZW50Py5jb250YWlucyhldmVudC50YXJnZXQgYXMgTm9kZSlcbiAgKSB7XG4gICAgc2V0SXNEcm9wZG93blZpc2liaWxlKGZhbHNlKSAvLyBoaWRlIGRyb3Bkb3duIHdoZW4gY2xpY2tpbmcgb3V0c2lkZSBvZiB0aGUgZHJvcGRvd25cbiAgICBvblNlYXJjaChvcHRpb25zKSAvLyByZXNldCBkaXNwbGF5ZWQgb3B0aW9ucyB0byBkZWZhdWx0IHdoZW4gZHJvcGRvd24gaXMgaGlkZGVuXG4gIH1cbn1cblxuY29uc3QgaGFuZGxlS2V5RG93biA9IChcbiAgZXZlbnQ6IGdsb2JhbFRoaXMuS2V5Ym9hcmRFdmVudCxcbiAgcmVmOiBSZWZPYmplY3Q8SFRNTERpdkVsZW1lbnQ+LFxuICBvcHRpb25zOiBEYXRhVHlwZSxcbiAgc2VhcmNoQmFyQWN0aXZlOiBib29sZWFuLFxuICBzZXRTZWFyY2g6IERpc3BhdGNoPFNldFN0YXRlQWN0aW9uPHN0cmluZz4+LFxuICBzZXREZWZhdWx0U2VhcmNoOiBEaXNwYXRjaDxTZXRTdGF0ZUFjdGlvbjxzdHJpbmcgfCBudWxsPj4sXG4gIHNlYXJjaDogc3RyaW5nLFxuKSA9PiB7XG4gIC8vIERlYWxzIHdpdGggZGVmYXVsdCBzZWFyY2hcbiAgaWYgKFxuICAgIHJlZi5jdXJyZW50ICYmXG4gICAgIXNlYXJjaEJhckFjdGl2ZSAmJlxuICAgICFOT05fU0VBUkNIQUJMRV9LRVlTLmluY2x1ZGVzKGV2ZW50LmtleSkgJiZcbiAgICBkb2N1bWVudC5hY3RpdmVFbGVtZW50Py5hcmlhTGFiZWwgIT09ICdzZWFyY2gtYmFyJ1xuICApIHtcbiAgICBjb25zdCBjdXJyZW50U2VhcmNoID0gc2VhcmNoICsgZXZlbnQua2V5XG4gICAgc2V0U2VhcmNoKGN1cnJlbnRTZWFyY2gpXG4gICAgcmVmLmN1cnJlbnQuZm9jdXMoKVxuICAgIGlmICghQXJyYXkuaXNBcnJheShvcHRpb25zKSkge1xuICAgICAgY29uc3QgY2xvc2VzdE9wdGlvbnMgPSB7IC4uLm9wdGlvbnMgfVxuICAgICAgT2JqZWN0LmtleXMoY2xvc2VzdE9wdGlvbnMpLm1hcCgoZ3JvdXA6IHN0cmluZykgPT4ge1xuICAgICAgICBjbG9zZXN0T3B0aW9uc1tncm91cF0gPSBjbG9zZXN0T3B0aW9uc1tncm91cF0uZmlsdGVyKG9wdGlvbiA9PlxuICAgICAgICAgIG9wdGlvbi5zZWFyY2hUZXh0XG4gICAgICAgICAgICA/IG9wdGlvbi5zZWFyY2hUZXh0LnRvTG9jYWxlTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChjdXJyZW50U2VhcmNoKVxuICAgICAgICAgICAgOiBvcHRpb24udmFsdWUudG9Mb2NhbGVMb3dlckNhc2UoKS5zdGFydHNXaXRoKGN1cnJlbnRTZWFyY2gpLFxuICAgICAgICApXG5cbiAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgIH0pXG4gICAgICBjb25zdCBjbG9zZXN0T3B0aW9uID0gY2xvc2VzdE9wdGlvbnNbT2JqZWN0LmtleXMoY2xvc2VzdE9wdGlvbnMpWzBdXVswXVxuICAgICAgaWYgKGNsb3Nlc3RPcHRpb24pIHtcbiAgICAgICAgc2V0RGVmYXVsdFNlYXJjaChjbG9zZXN0T3B0aW9uLnNlYXJjaFRleHQgPz8gY2xvc2VzdE9wdGlvbi52YWx1ZSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNldERlZmF1bHRTZWFyY2gobnVsbClcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgY2xvc2VzdE9wdGlvbiA9IFsuLi5vcHRpb25zXS5maWx0ZXIob3B0aW9uID0+XG4gICAgICAgIG9wdGlvbi5zZWFyY2hUZXh0XG4gICAgICAgICAgPyBvcHRpb24uc2VhcmNoVGV4dC50b0xvY2FsZUxvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoY3VycmVudFNlYXJjaClcbiAgICAgICAgICA6IG9wdGlvbi52YWx1ZS50b0xvY2FsZUxvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoY3VycmVudFNlYXJjaCksXG4gICAgICApWzBdXG4gICAgICBpZiAoY2xvc2VzdE9wdGlvbikge1xuICAgICAgICBzZXREZWZhdWx0U2VhcmNoKGNsb3Nlc3RPcHRpb24uc2VhcmNoVGV4dCA/PyBjbG9zZXN0T3B0aW9uLnZhbHVlKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2V0RGVmYXVsdFNlYXJjaChudWxsKVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuY29uc3QgQ3JlYXRlRHJvcGRvd24gPSAoe1xuICBpc0VtcHR5LFxuICBlbXB0eVN0YXRlLFxuICBkZXNjcmlwdGlvbkRpcmVjdGlvbixcbiAgbG9hZE1vcmUsXG4gIG9wdGlvbmFsSW5mb1BsYWNlbWVudCxcbiAgZGVmYXVsdFNlYXJjaFZhbHVlLFxuICBpc0xvYWRpbmcsXG59OiBDcmVhdGVEcm9wZG93blByb3BzKSA9PiB7XG4gIGNvbnN0IHtcbiAgICBzZXRJc0Ryb3Bkb3duVmlzaWJsZSxcbiAgICBvbkNoYW5nZSxcbiAgICBvcHRpb25zLFxuICAgIG11bHRpc2VsZWN0LFxuICAgIHNlbGVjdEFsbCxcbiAgICBzZWxlY3RBbGxHcm91cCxcbiAgICBkaXNwbGF5ZWRPcHRpb25zLFxuICAgIHNldFNlbGVjdGVkRGF0YSxcbiAgICBzZWxlY3RlZERhdGEsXG4gIH0gPSB1c2VTZWxlY3RJbnB1dCgpXG4gIGNvbnN0IGZvY3VzZWRJdGVtUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGRlZmF1bHRTZWFyY2hWYWx1ZSAmJiBmb2N1c2VkSXRlbVJlZj8uY3VycmVudCkge1xuICAgICAgZm9jdXNlZEl0ZW1SZWYuY3VycmVudC5mb2N1cygpXG4gICAgfVxuICB9LCBbZGVmYXVsdFNlYXJjaFZhbHVlXSlcblxuICBpZiAoaXNFbXB0eSkge1xuICAgIHJldHVybiAoXG4gICAgICA8RW1wdHlTdGF0ZSBnYXA9ezJ9IGFsaWduSXRlbXM9XCJjZW50ZXJcIj5cbiAgICAgICAge2VtcHR5U3RhdGUgPz8gKFxuICAgICAgICAgIDxUZXh0IHZhcmlhbnQ9XCJib2R5U3Ryb25nXCIgYXM9XCJwXCI+XG4gICAgICAgICAgICBObyBvcHRpb25zXG4gICAgICAgICAgPC9UZXh0PlxuICAgICAgICApfVxuICAgICAgPC9FbXB0eVN0YXRlPlxuICAgIClcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZUNsaWNrID0gKGNsaWNrZWRPcHRpb246IE9wdGlvblR5cGUsIGdyb3VwPzogc3RyaW5nKSA9PiB7XG4gICAgc2V0U2VsZWN0ZWREYXRhKHsgdHlwZTogJ3NlbGVjdE9wdGlvbicsIGNsaWNrZWRPcHRpb24sIGdyb3VwIH0pXG4gICAgaWYgKG11bHRpc2VsZWN0KSB7XG4gICAgICBpZiAoc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzLmluY2x1ZGVzKGNsaWNrZWRPcHRpb24udmFsdWUpKSB7XG4gICAgICAgIG9uQ2hhbmdlPy4oXG4gICAgICAgICAgc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzLmZpbHRlcihcbiAgICAgICAgICAgIHZhbCA9PiB2YWwgIT09IGNsaWNrZWRPcHRpb24udmFsdWUsXG4gICAgICAgICAgKSxcbiAgICAgICAgKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb25DaGFuZ2U/LihbLi4uc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzLCBjbGlja2VkT3B0aW9uLnZhbHVlXSlcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgb25DaGFuZ2U/LihjbGlja2VkT3B0aW9uLnZhbHVlKVxuICAgIH1cbiAgICBzZXRJc0Ryb3Bkb3duVmlzaWJsZShtdWx0aXNlbGVjdCkgLy8gaGlkZSB0aGUgZHJvcGRvd24gb24gY2xpY2sgd2hlbiBzaW5nbGUgc2VsZWN0IG9ubHlcbiAgfVxuXG4gIGNvbnN0IHNlbGVjdEFsbE9wdGlvbnMgPSAoKSA9PiB7XG4gICAgaWYgKG11bHRpc2VsZWN0KSB7XG4gICAgICBzZXRTZWxlY3RlZERhdGEoeyB0eXBlOiAnc2VsZWN0QWxsJyB9KVxuICAgICAgaWYgKHNlbGVjdGVkRGF0YS5hbGxTZWxlY3RlZCAmJiBvbkNoYW5nZSkge1xuICAgICAgICBvbkNoYW5nZShbXSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGFsbFZhbHVlczogT3B0aW9uVHlwZVtdID0gW11cbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KG9wdGlvbnMpKSB7XG4gICAgICAgICAgT2JqZWN0LmtleXMob3B0aW9ucykubWFwKChncm91cDogc3RyaW5nKSA9PlxuICAgICAgICAgICAgb3B0aW9uc1tncm91cF0ubWFwKG9wdGlvbiA9PiB7XG4gICAgICAgICAgICAgIGlmICghb3B0aW9uLmRpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgYWxsVmFsdWVzLnB1c2gob3B0aW9uKVxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIClcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvcHRpb25zLm1hcChvcHRpb24gPT4gYWxsVmFsdWVzLnB1c2gob3B0aW9uKSlcbiAgICAgICAgfVxuICAgICAgICBvbkNoYW5nZT8uKGFsbFZhbHVlcy5tYXAodmFsdWUgPT4gdmFsdWUudmFsdWUpKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGhhbmRsZVNlbGVjdEdyb3VwID0gKGdyb3VwOiBzdHJpbmcpID0+IHtcbiAgICBpZiAobXVsdGlzZWxlY3QpIHtcbiAgICAgIHNldFNlbGVjdGVkRGF0YSh7IHR5cGU6ICdzZWxlY3RHcm91cCcsIHNlbGVjdGVkR3JvdXA6IGdyb3VwIH0pXG4gICAgICBpZiAoIUFycmF5LmlzQXJyYXkob3B0aW9ucykpIHtcbiAgICAgICAgaWYgKHNlbGVjdGVkRGF0YS5zZWxlY3RlZEdyb3Vwcy5pbmNsdWRlcyhncm91cCkpIHtcbiAgICAgICAgICBjb25zdCBuZXdTZWxlY3RlZFZhbHVlcyA9IFsuLi5zZWxlY3RlZERhdGEuc2VsZWN0ZWRWYWx1ZXNdLmZpbHRlcihcbiAgICAgICAgICAgIHNlbGVjdGVkVmFsdWUgPT5cbiAgICAgICAgICAgICAgIW9wdGlvbnNbZ3JvdXBdLmZpbmQob3B0aW9uID0+IG9wdGlvbi52YWx1ZSA9PT0gc2VsZWN0ZWRWYWx1ZSksXG4gICAgICAgICAgKVxuICAgICAgICAgIG9uQ2hhbmdlPy4obmV3U2VsZWN0ZWRWYWx1ZXMpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgbmV3U2VsZWN0ZWRWYWx1ZXMgPSBbLi4uc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzXVxuXG4gICAgICAgICAgb3B0aW9uc1tncm91cF0ubWFwKG9wdGlvbiA9PlxuICAgICAgICAgICAgbmV3U2VsZWN0ZWRWYWx1ZXMuaW5jbHVkZXMob3B0aW9uLnZhbHVlKSB8fCBvcHRpb24uZGlzYWJsZWRcbiAgICAgICAgICAgICAgPyBudWxsXG4gICAgICAgICAgICAgIDogbmV3U2VsZWN0ZWRWYWx1ZXMucHVzaChvcHRpb24udmFsdWUpLFxuICAgICAgICAgIClcbiAgICAgICAgICBvbkNoYW5nZT8uKG5ld1NlbGVjdGVkVmFsdWVzKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuICFBcnJheS5pc0FycmF5KGRpc3BsYXllZE9wdGlvbnMpID8gKFxuICAgIDxEcm9wZG93bkNvbnRhaW5lclxuICAgICAgcm9sZT1cImxpc3Rib3hcIlxuICAgICAgaWQ9XCJzZWxlY3QtZHJvcGRvd25cIlxuICAgICAgb25LZXlEb3duPXtoYW5kbGVLZXlEb3duU2VsZWN0fVxuICAgICAgZGF0YS1ncm91cGVkXG4gICAgPlxuICAgICAge2lzTG9hZGluZyA/IChcbiAgICAgICAgPFNrZWxldG9uIHZhcmlhbnQ9XCJibG9ja1wiIC8+XG4gICAgICApIDogKFxuICAgICAgICA8PlxuICAgICAgICAgIHtzZWxlY3RBbGwgJiYgbXVsdGlzZWxlY3QgPyAoXG4gICAgICAgICAgICA8U3RhY2sgaWQ9XCJpdGVtc1wiPlxuICAgICAgICAgICAgICA8RHJvcGRvd25JdGVtXG4gICAgICAgICAgICAgICAgYXJpYS1kaXNhYmxlZD17ZmFsc2V9XG4gICAgICAgICAgICAgICAgYXJpYS1zZWxlY3RlZD17c2VsZWN0ZWREYXRhLmFsbFNlbGVjdGVkfVxuICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJzZWxlY3QtYWxsXCJcbiAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD1cInNlbGVjdC1hbGxcIlxuICAgICAgICAgICAgICAgIGlkPVwic2VsZWN0LWFsbFwiXG4gICAgICAgICAgICAgICAgdGFiSW5kZXg9ezB9XG4gICAgICAgICAgICAgICAgcm9sZT1cIm9wdGlvblwiXG4gICAgICAgICAgICAgICAgb25LZXlEb3duPXtldmVudCA9PlxuICAgICAgICAgICAgICAgICAgWycgJywgJ0VudGVyJ10uaW5jbHVkZXMoZXZlbnQua2V5KSA/IHNlbGVjdEFsbE9wdGlvbnMoKSA6IG51bGxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgb25DbGljaz17c2VsZWN0QWxsT3B0aW9uc31cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxTdHlsZWRDaGVja2JveFxuICAgICAgICAgICAgICAgICAgY2hlY2tlZD17c2VsZWN0ZWREYXRhLmFsbFNlbGVjdGVkfVxuICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgdmFsdWU9XCJzZWxlY3QtYWxsXCJcbiAgICAgICAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwic2VsZWN0LWFsbC1jaGVja2JveFwiXG4gICAgICAgICAgICAgICAgICB0YWJJbmRleD17LTF9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPFN0YWNrIGRpcmVjdGlvbj1cImNvbHVtblwiPlxuICAgICAgICAgICAgICAgICAgICA8VGV4dCBhcz1cInNwYW5cIiB2YXJpYW50PVwiYm9keVwiIHBsYWNlbWVudD1cImxlZnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICB7c2VsZWN0QWxsLmxhYmVsfVxuICAgICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgICAgIDxUZXh0XG4gICAgICAgICAgICAgICAgICAgICAgYXM9XCJzcGFuXCJcbiAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50PVwiYm9keVNtYWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICBzZW50aW1lbnQ9XCJuZXV0cmFsXCJcbiAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJsZWZ0XCJcbiAgICAgICAgICAgICAgICAgICAgICBwcm9taW5lbmNlPVwid2Vha1wiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7c2VsZWN0QWxsLmRlc2NyaXB0aW9ufVxuICAgICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgICA8L1N0YWNrPlxuICAgICAgICAgICAgICAgIDwvU3R5bGVkQ2hlY2tib3g+XG4gICAgICAgICAgICAgIDwvRHJvcGRvd25JdGVtPlxuICAgICAgICAgICAgPC9TdGFjaz5cbiAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICB7T2JqZWN0LmtleXMoZGlzcGxheWVkT3B0aW9ucykubWFwKChncm91cCwgaW5kZXgpID0+IChcbiAgICAgICAgICAgIDxTdGFjayBrZXk9e2dyb3VwfSBnYXA9ezAuMjV9PlxuICAgICAgICAgICAgICB7ZGlzcGxheWVkT3B0aW9uc1tncm91cF0ubGVuZ3RoID4gMCA/IChcbiAgICAgICAgICAgICAgICA8RHJvcGRvd25Hcm91cFdyYXBwZXIgaWQ9e3NlbGVjdEFsbEdyb3VwID8gJ2l0ZW1zJyA6IHVuZGVmaW5lZH0+XG4gICAgICAgICAgICAgICAgICB7Z3JvdXAgPyAoXG4gICAgICAgICAgICAgICAgICAgIDxEcm9wZG93bkdyb3VwXG4gICAgICAgICAgICAgICAgICAgICAga2V5PXtncm91cH1cbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICB0YWJJbmRleD17c2VsZWN0QWxsR3JvdXAgPyAwIDogLTF9XG4gICAgICAgICAgICAgICAgICAgICAgb25LZXlEb3duPXtldmVudCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoWycgJywgJ0VudGVyJ10uaW5jbHVkZXMoZXZlbnQua2V5KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZVNlbGVjdEdyb3VwKGdyb3VwKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgZGF0YS1zZWxlY3Rncm91cD17c2VsZWN0QWxsR3JvdXB9XG4gICAgICAgICAgICAgICAgICAgICAgcm9sZT1cImdyb3VwXCJcbiAgICAgICAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD17YGdyb3VwLSR7aW5kZXh9YH1cbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0QWxsR3JvdXAgPyBoYW5kbGVTZWxlY3RHcm91cChncm91cCkgOiBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAge3NlbGVjdEFsbEdyb3VwID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgPFN0eWxlZENoZWNrYm94XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e3NlbGVjdGVkRGF0YS5zZWxlY3RlZEdyb3Vwcy5pbmNsdWRlcyhncm91cCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2dyb3VwfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD1cInNlbGVjdC1ncm91cFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRhYkluZGV4PXstMX1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPFRleHQgdmFyaWFudD1cImNhcHRpb25cIiBhcz1cInNwYW5cIiBwbGFjZW1lbnQ9XCJsZWZ0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2dyb3VwLnRvVXBwZXJDYXNlKCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvU3R5bGVkQ2hlY2tib3g+XG4gICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxUZXh0XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJjYXB0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYXM9XCJzcGFuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwibGVmdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNlbnRpbWVudD1cIm5ldXRyYWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7Z3JvdXAudG9VcHBlckNhc2UoKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICA8L0Ryb3Bkb3duR3JvdXA+XG4gICAgICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgICAgICA8L0Ryb3Bkb3duR3JvdXBXcmFwcGVyPlxuICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgICAgPFN0YWNrIGlkPVwiaXRlbXNcIiBnYXA9XCIwLjI1XCI+XG4gICAgICAgICAgICAgICAge2Rpc3BsYXllZE9wdGlvbnNbZ3JvdXBdLm1hcCgob3B0aW9uLCBpbmRleE9wdGlvbikgPT4gKFxuICAgICAgICAgICAgICAgICAgPERyb3Bkb3duSXRlbVxuICAgICAgICAgICAgICAgICAgICBrZXk9e29wdGlvbi52YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgYXJpYS1kaXNhYmxlZD17ISFvcHRpb24uZGlzYWJsZWR9XG4gICAgICAgICAgICAgICAgICAgIHRhYkluZGV4PXshb3B0aW9uLmRpc2FibGVkID8gMCA6IC0xfVxuICAgICAgICAgICAgICAgICAgICBhcmlhLXNlbGVjdGVkPXtcbiAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZERhdGEuc2VsZWN0ZWRWYWx1ZXMuaW5jbHVkZXMob3B0aW9uLnZhbHVlKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICFvcHRpb24uZGlzYWJsZWRcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPXtvcHRpb24udmFsdWV9XG4gICAgICAgICAgICAgICAgICAgIGRhdGEtdGVzdGlkPXtgb3B0aW9uLSR7b3B0aW9uLnZhbHVlfWB9XG4gICAgICAgICAgICAgICAgICAgIGlkPXtgb3B0aW9uLSR7aW5kZXhPcHRpb259YH1cbiAgICAgICAgICAgICAgICAgICAgcm9sZT1cIm9wdGlvblwiXG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoIW9wdGlvbi5kaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlQ2xpY2sob3B0aW9uLCBncm91cClcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgIG9uS2V5RG93bj17ZXZlbnQgPT5cbiAgICAgICAgICAgICAgICAgICAgICBbJyAnLCAnRW50ZXInXS5pbmNsdWRlcyhldmVudC5rZXkpXG4gICAgICAgICAgICAgICAgICAgICAgICA/IGhhbmRsZUNsaWNrKG9wdGlvbiwgZ3JvdXApXG4gICAgICAgICAgICAgICAgICAgICAgICA6IG51bGxcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZWY9e1xuICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbi52YWx1ZSA9PT0gZGVmYXVsdFNlYXJjaFZhbHVlIHx8XG4gICAgICAgICAgICAgICAgICAgICAgb3B0aW9uLnNlYXJjaFRleHQgPT09IGRlZmF1bHRTZWFyY2hWYWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgPyBmb2N1c2VkSXRlbVJlZlxuICAgICAgICAgICAgICAgICAgICAgICAgOiBudWxsXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge211bHRpc2VsZWN0ID8gKFxuICAgICAgICAgICAgICAgICAgICAgIDxTdHlsZWRDaGVja2JveFxuICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tlZD17XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkRGF0YS5zZWxlY3RlZFZhbHVlcy5pbmNsdWRlcyhvcHRpb24udmFsdWUpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICFvcHRpb24uZGlzYWJsZWRcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtvcHRpb24uZGlzYWJsZWR9XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17b3B0aW9uLnZhbHVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgdGFiSW5kZXg9ey0xfVxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxEaXNwbGF5T3B0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbj17b3B0aW9ufVxuICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbkRpcmVjdGlvbj17ZGVzY3JpcHRpb25EaXJlY3Rpb259XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsSW5mb1BsYWNlbWVudD17b3B0aW9uYWxJbmZvUGxhY2VtZW50fVxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8L1N0eWxlZENoZWNrYm94PlxuICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgIDxEaXNwbGF5T3B0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb249e29wdGlvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uRGlyZWN0aW9uPXtkZXNjcmlwdGlvbkRpcmVjdGlvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsSW5mb1BsYWNlbWVudD17b3B0aW9uYWxJbmZvUGxhY2VtZW50fVxuICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICA8L0Ryb3Bkb3duSXRlbT5cbiAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgPC9TdGFjaz5cbiAgICAgICAgICAgIDwvU3RhY2s+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvPlxuICAgICAgKX1cbiAgICAgIHtsb2FkTW9yZSA/IDxMb2FkTW9yZT57bG9hZE1vcmV9PC9Mb2FkTW9yZT4gOiBudWxsfVxuICAgIDwvRHJvcGRvd25Db250YWluZXI+XG4gICkgOiAoXG4gICAgPERyb3Bkb3duQ29udGFpbmVyXG4gICAgICByb2xlPVwibGlzdGJveFwiXG4gICAgICB0YWJJbmRleD17LTF9XG4gICAgICBpZD1cInNlbGVjdC1kcm9wZG93blwiXG4gICAgICBvbktleURvd249e2hhbmRsZUtleURvd25TZWxlY3R9XG4gICAgICBnYXA9ezAuMjV9XG4gICAgICBkYXRhLWdyb3VwZWQ9e2ZhbHNlfVxuICAgID5cbiAgICAgIHtzZWxlY3RBbGwgJiYgbXVsdGlzZWxlY3QgPyAoXG4gICAgICAgIDxTdGFjayBpZD1cIml0ZW1zXCIgZ2FwPXswLjI1fSB0YWJJbmRleD17LTF9PlxuICAgICAgICAgIDxEcm9wZG93bkl0ZW1cbiAgICAgICAgICAgIGFyaWEtZGlzYWJsZWQ9e2ZhbHNlfVxuICAgICAgICAgICAgYXJpYS1zZWxlY3RlZD17c2VsZWN0ZWREYXRhLmFsbFNlbGVjdGVkfVxuICAgICAgICAgICAgYXJpYS1sYWJlbD1cInNlbGVjdC1hbGxcIlxuICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJzZWxlY3QtYWxsXCJcbiAgICAgICAgICAgIHRhYkluZGV4PXswfVxuICAgICAgICAgICAgcm9sZT1cIm9wdGlvblwiXG4gICAgICAgICAgICBvbktleURvd249e2V2ZW50ID0+XG4gICAgICAgICAgICAgIFsnICcsICdFbnRlciddLmluY2x1ZGVzKGV2ZW50LmtleSkgPyBzZWxlY3RBbGxPcHRpb25zKCkgOiBudWxsXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvbkNsaWNrPXtzZWxlY3RBbGxPcHRpb25zfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxTdHlsZWRDaGVja2JveFxuICAgICAgICAgICAgICBjaGVja2VkPXtzZWxlY3RlZERhdGEuYWxsU2VsZWN0ZWR9XG4gICAgICAgICAgICAgIGRpc2FibGVkPXtmYWxzZX1cbiAgICAgICAgICAgICAgdmFsdWU9XCJzZWxlY3QtYWxsXCJcbiAgICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJzZWxlY3QtYWxsLWNoZWNrYm94XCJcbiAgICAgICAgICAgICAgdGFiSW5kZXg9ey0xfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8U3RhY2sgZGlyZWN0aW9uPVwiY29sdW1uXCI+XG4gICAgICAgICAgICAgICAgPFRleHQgYXM9XCJzcGFuXCIgdmFyaWFudD1cImJvZHlcIiBwbGFjZW1lbnQ9XCJsZWZ0XCI+XG4gICAgICAgICAgICAgICAgICB7c2VsZWN0QWxsLmxhYmVsfVxuICAgICAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgICAgICA8VGV4dFxuICAgICAgICAgICAgICAgICAgYXM9XCJzcGFuXCJcbiAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJib2R5U21hbGxcIlxuICAgICAgICAgICAgICAgICAgc2VudGltZW50PVwibmV1dHJhbFwiXG4gICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJsZWZ0XCJcbiAgICAgICAgICAgICAgICAgIHByb21pbmVuY2U9XCJ3ZWFrXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICB7c2VsZWN0QWxsLmRlc2NyaXB0aW9ufVxuICAgICAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgICAgPC9TdGFjaz5cbiAgICAgICAgICAgIDwvU3R5bGVkQ2hlY2tib3g+XG4gICAgICAgICAgPC9Ecm9wZG93bkl0ZW0+XG4gICAgICAgIDwvU3RhY2s+XG4gICAgICApIDogbnVsbH1cbiAgICAgIDxTdGFjayBpZD1cIml0ZW1zXCIgZ2FwPXswLjI1fT5cbiAgICAgICAge2lzTG9hZGluZyA/IChcbiAgICAgICAgICA8U2tlbGV0b24gdmFyaWFudD1cImJsb2NrXCIgLz5cbiAgICAgICAgKSA6IChcbiAgICAgICAgICBkaXNwbGF5ZWRPcHRpb25zLm1hcCgob3B0aW9uLCBpbmRleCkgPT4gKFxuICAgICAgICAgICAgPERyb3Bkb3duSXRlbVxuICAgICAgICAgICAgICBrZXk9e29wdGlvbi52YWx1ZX1cbiAgICAgICAgICAgICAgYXJpYS1kaXNhYmxlZD17ISFvcHRpb24uZGlzYWJsZWR9XG4gICAgICAgICAgICAgIGFyaWEtc2VsZWN0ZWQ9e1xuICAgICAgICAgICAgICAgIHNlbGVjdGVkRGF0YS5zZWxlY3RlZFZhbHVlcy5pbmNsdWRlcyhvcHRpb24udmFsdWUpICYmXG4gICAgICAgICAgICAgICAgIW9wdGlvbi5kaXNhYmxlZFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIW9wdGlvbi5kaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgICAgaGFuZGxlQ2xpY2sob3B0aW9uKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgYXJpYS1sYWJlbD17b3B0aW9uLnZhbHVlfVxuICAgICAgICAgICAgICBkYXRhLXRlc3RpZD17YG9wdGlvbi0ke29wdGlvbi52YWx1ZX1gfVxuICAgICAgICAgICAgICBpZD17YG9wdGlvbi0ke2luZGV4fWB9XG4gICAgICAgICAgICAgIHJvbGU9XCJvcHRpb25cIlxuICAgICAgICAgICAgICB0YWJJbmRleD17IW9wdGlvbi5kaXNhYmxlZCA/IDAgOiAtMX1cbiAgICAgICAgICAgICAgcmVmPXtcbiAgICAgICAgICAgICAgICBvcHRpb24udmFsdWUgPT09IGRlZmF1bHRTZWFyY2hWYWx1ZSB8fFxuICAgICAgICAgICAgICAgIG9wdGlvbi5zZWFyY2hUZXh0ID09PSBkZWZhdWx0U2VhcmNoVmFsdWVcbiAgICAgICAgICAgICAgICAgID8gZm9jdXNlZEl0ZW1SZWZcbiAgICAgICAgICAgICAgICAgIDogbnVsbFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIG9uS2V5RG93bj17ZXZlbnQgPT5cbiAgICAgICAgICAgICAgICBbJyAnLCAnRW50ZXInXS5pbmNsdWRlcyhldmVudC5rZXkpID8gaGFuZGxlQ2xpY2sob3B0aW9uKSA6IG51bGxcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7bXVsdGlzZWxlY3QgPyAoXG4gICAgICAgICAgICAgICAgPFN0eWxlZENoZWNrYm94XG4gICAgICAgICAgICAgICAgICBjaGVja2VkPXtcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzLmluY2x1ZGVzKG9wdGlvbi52YWx1ZSkgJiZcbiAgICAgICAgICAgICAgICAgICAgIW9wdGlvbi5kaXNhYmxlZFxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e29wdGlvbi5kaXNhYmxlZH1cbiAgICAgICAgICAgICAgICAgIHZhbHVlPXtvcHRpb24udmFsdWV9XG4gICAgICAgICAgICAgICAgICB0YWJJbmRleD17LTF9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPERpc3BsYXlPcHRpb25cbiAgICAgICAgICAgICAgICAgICAgb3B0aW9uPXtvcHRpb259XG4gICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uRGlyZWN0aW9uPXtkZXNjcmlwdGlvbkRpcmVjdGlvbn1cbiAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWxJbmZvUGxhY2VtZW50PXtvcHRpb25hbEluZm9QbGFjZW1lbnR9XG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvU3R5bGVkQ2hlY2tib3g+XG4gICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgPERpc3BsYXlPcHRpb25cbiAgICAgICAgICAgICAgICAgIG9wdGlvbj17b3B0aW9ufVxuICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb25EaXJlY3Rpb249e2Rlc2NyaXB0aW9uRGlyZWN0aW9ufVxuICAgICAgICAgICAgICAgICAgb3B0aW9uYWxJbmZvUGxhY2VtZW50PXtvcHRpb25hbEluZm9QbGFjZW1lbnR9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvRHJvcGRvd25JdGVtPlxuICAgICAgICAgICkpXG4gICAgICAgICl9XG4gICAgICAgIHtsb2FkTW9yZSA/IDxMb2FkTW9yZT57bG9hZE1vcmV9PC9Mb2FkTW9yZT4gOiBudWxsfVxuICAgICAgPC9TdGFjaz5cbiAgICA8L0Ryb3Bkb3duQ29udGFpbmVyPlxuICApXG59XG5leHBvcnQgY29uc3QgRHJvcGRvd24gPSAoe1xuICBjaGlsZHJlbixcbiAgZW1wdHlTdGF0ZSxcbiAgZGVzY3JpcHRpb25EaXJlY3Rpb24sXG4gIHNlYXJjaGFibGUsXG4gIHBsYWNlaG9sZGVyLFxuICBmb290ZXIsXG4gIHJlZlNlbGVjdCxcbiAgbG9hZE1vcmUsXG4gIG9wdGlvbmFsSW5mb1BsYWNlbWVudCxcbiAgaXNMb2FkaW5nLFxuICBzaXplLFxufTogRHJvcGRvd25Qcm9wcykgPT4ge1xuICBjb25zdCB7XG4gICAgc2V0SXNEcm9wZG93blZpc2libGUsXG4gICAgaXNEcm9wZG93blZpc2libGUsXG4gICAgb25TZWFyY2gsXG4gICAgc2VhcmNoSW5wdXQsXG4gICAgb3B0aW9ucyxcbiAgICBkaXNwbGF5ZWRPcHRpb25zLFxuICB9ID0gdXNlU2VsZWN0SW5wdXQoKVxuICBjb25zdCB0aGVtZSA9IHVzZVRoZW1lKClcbiAgY29uc3QgW3NlYXJjaEJhckFjdGl2ZSwgc2V0U2VhcmNoQmFyQWN0aXZlXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbZGVmYXVsdFNlYXJjaFZhbHVlLCBzZXREZWZhdWx0U2VhcmNoXSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bGw+KG51bGwpXG4gIGNvbnN0IHJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcbiAgY29uc3QgW3NlYXJjaCwgc2V0U2VhcmNoXSA9IHVzZVN0YXRlPHN0cmluZz4oJycpXG4gIGNvbnN0IFttYXhXaWR0aCwgc2V0V2lkdGhdID0gdXNlU3RhdGU8c3RyaW5nIHwgbnVtYmVyPigpXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAocmVmU2VsZWN0LmN1cnJlbnQgJiYgaXNEcm9wZG93blZpc2libGUpIHtcbiAgICAgIGNvbnN0IHBvc2l0aW9uID1cbiAgICAgICAgcmVmU2VsZWN0LmN1cnJlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuYm90dG9tICtcbiAgICAgICAgRFJPUERPV05fTUFYX0hFSUdIVCArXG4gICAgICAgIElOUFVUX1NJWkVfSEVJR0hUW3NpemVdICtcbiAgICAgICAgcGFyc2VJbnQodGhlbWUuc3BhY2VbJzUnXSwgMTApXG4gICAgICBjb25zdCBvdmVyZmxvdyA9IHBvc2l0aW9uIC0gd2luZG93LmlubmVySGVpZ2h0XG4gICAgICBpZiAob3ZlcmZsb3cgPiAwKSB7XG4gICAgICAgIGNvbnN0IG1vZGFsRWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdiYWNrZHJvcC1tb2RhbCcpXG5cbiAgICAgICAgaWYgKG1vZGFsRWxlbWVudCkge1xuICAgICAgICAgIG1vZGFsRWxlbWVudC5zY3JvbGxCeSh7IHRvcDogb3ZlcmZsb3csIGJlaGF2aW9yOiAnc21vb3RoJyB9KVxuICAgICAgICB9IGVsc2Ugd2luZG93LnNjcm9sbEJ5KHsgdG9wOiBvdmVyZmxvdywgYmVoYXZpb3I6ICdzbW9vdGgnIH0pXG4gICAgICB9XG4gICAgfVxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9leGhhdXN0aXZlLWRlcHNcbiAgfSwgW2lzRHJvcGRvd25WaXNpYmxlLCByZWZTZWxlY3QsIHNpemUsIHJlZi5jdXJyZW50XSlcblxuICBjb25zdCByZXNpemVEcm9wZG93biA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoXG4gICAgICByZWZTZWxlY3QuY3VycmVudCAmJlxuICAgICAgcmVmU2VsZWN0LmN1cnJlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGggPiAwXG4gICAgKSB7XG4gICAgICBzZXRXaWR0aChyZWZTZWxlY3QuY3VycmVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aClcbiAgICB9XG4gIH0sIFtyZWZTZWxlY3RdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgcmVzaXplRHJvcGRvd24oKVxuXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHJlc2l6ZURyb3Bkb3duKVxuXG4gICAgcmV0dXJuICgpID0+IHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCByZXNpemVEcm9wZG93bilcbiAgfSwgW3Jlc2l6ZURyb3Bkb3duXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghc2VhcmNoSW5wdXQpIHtcbiAgICAgIG9uU2VhcmNoKG9wdGlvbnMpXG4gICAgfVxuICB9LCBbb25TZWFyY2gsIG9wdGlvbnMsIHNlYXJjaElucHV0XSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghaXNEcm9wZG93blZpc2libGUpIHtcbiAgICAgIHNldERlZmF1bHRTZWFyY2gobnVsbClcbiAgICAgIHNldFNlYXJjaCgnJylcbiAgICB9XG5cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCBldmVudCA9PlxuICAgICAgaGFuZGxlQ2xpY2tPdXRzaWRlKFxuICAgICAgICBldmVudCxcbiAgICAgICAgcmVmLFxuICAgICAgICBzZXRJc0Ryb3Bkb3duVmlzaWJsZSxcbiAgICAgICAgcmVmU2VsZWN0LFxuICAgICAgICBvblNlYXJjaCxcbiAgICAgICAgb3B0aW9ucyxcbiAgICAgICksXG4gICAgKVxuXG4gICAgaWYgKCFzZWFyY2hhYmxlKSB7XG4gICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgZXZlbnQgPT5cbiAgICAgICAgaGFuZGxlS2V5RG93bihcbiAgICAgICAgICBldmVudCxcbiAgICAgICAgICByZWYsXG4gICAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgICBzZWFyY2hCYXJBY3RpdmUsXG4gICAgICAgICAgc2V0U2VhcmNoLFxuICAgICAgICAgIHNldERlZmF1bHRTZWFyY2gsXG4gICAgICAgICAgc2VhcmNoLFxuICAgICAgICApLFxuICAgICAgKVxuICAgIH1cblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCBldmVudCA9PlxuICAgICAgICBoYW5kbGVDbGlja091dHNpZGUoXG4gICAgICAgICAgZXZlbnQsXG4gICAgICAgICAgcmVmLFxuICAgICAgICAgIHNldElzRHJvcGRvd25WaXNpYmxlLFxuICAgICAgICAgIHJlZlNlbGVjdCxcbiAgICAgICAgICBvblNlYXJjaCxcbiAgICAgICAgICBvcHRpb25zLFxuICAgICAgICApLFxuICAgICAgKVxuICAgICAgaWYgKCFzZWFyY2hhYmxlKSB7XG4gICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBldmVudCA9PlxuICAgICAgICAgIGhhbmRsZUtleURvd24oXG4gICAgICAgICAgICBldmVudCxcbiAgICAgICAgICAgIHJlZixcbiAgICAgICAgICAgIG9wdGlvbnMsXG4gICAgICAgICAgICBzZWFyY2hCYXJBY3RpdmUsXG4gICAgICAgICAgICBzZXRTZWFyY2gsXG4gICAgICAgICAgICBzZXREZWZhdWx0U2VhcmNoLFxuICAgICAgICAgICAgc2VhcmNoLFxuICAgICAgICAgICksXG4gICAgICAgIClcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtcbiAgICBpc0Ryb3Bkb3duVmlzaWJsZSxcbiAgICBzZWFyY2hCYXJBY3RpdmUsXG4gICAgb3B0aW9ucyxcbiAgICBvblNlYXJjaCxcbiAgICBzZWFyY2gsXG4gICAgcmVmU2VsZWN0LFxuICAgIHNldERlZmF1bHRTZWFyY2gsXG4gICAgc2V0SXNEcm9wZG93blZpc2libGUsXG4gICAgc2VhcmNoYWJsZSxcbiAgXSlcblxuICBjb25zdCBpc0VtcHR5ID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoZGlzcGxheWVkT3B0aW9ucykpIHtcbiAgICAgIHJldHVybiAhKGRpc3BsYXllZE9wdGlvbnMubGVuZ3RoID4gMClcbiAgICB9XG4gICAgY29uc3QgZ3JvdXBzID0gT2JqZWN0LmtleXMoZGlzcGxheWVkT3B0aW9ucylcbiAgICBmb3IgKGNvbnN0IGdyb3VwIG9mIGdyb3Vwcykge1xuICAgICAgaWYgKGRpc3BsYXllZE9wdGlvbnNbZ3JvdXBdLmxlbmd0aCAhPT0gMCkge1xuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZVxuICB9LCBbZGlzcGxheWVkT3B0aW9uc10pXG5cbiAgcmV0dXJuIChcbiAgICA8U3R5bGVkUG9wdXBcbiAgICAgIHZpc2libGU9e2lzRHJvcGRvd25WaXNpYmxlfVxuICAgICAgdGV4dD17XG4gICAgICAgIDxTdGFjaz5cbiAgICAgICAgICB7c2VhcmNoYWJsZSAmJiAhaXNMb2FkaW5nID8gKFxuICAgICAgICAgICAgPFNlYXJjaEJhckRyb3Bkb3duXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXtwbGFjZWhvbGRlcn1cbiAgICAgICAgICAgICAgZGlzcGxheWVkT3B0aW9ucz17ZGlzcGxheWVkT3B0aW9uc31cbiAgICAgICAgICAgICAgc2V0U2VhcmNoQmFyQWN0aXZlPXtzZXRTZWFyY2hCYXJBY3RpdmV9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgIDxDcmVhdGVEcm9wZG93blxuICAgICAgICAgICAgaXNFbXB0eT17aXNFbXB0eX1cbiAgICAgICAgICAgIGVtcHR5U3RhdGU9e2VtcHR5U3RhdGV9XG4gICAgICAgICAgICBkZXNjcmlwdGlvbkRpcmVjdGlvbj17ZGVzY3JpcHRpb25EaXJlY3Rpb259XG4gICAgICAgICAgICBsb2FkTW9yZT17bG9hZE1vcmV9XG4gICAgICAgICAgICBvcHRpb25hbEluZm9QbGFjZW1lbnQ9e29wdGlvbmFsSW5mb1BsYWNlbWVudH1cbiAgICAgICAgICAgIGRlZmF1bHRTZWFyY2hWYWx1ZT17ZGVmYXVsdFNlYXJjaFZhbHVlfVxuICAgICAgICAgICAgaXNMb2FkaW5nPXtpc0xvYWRpbmd9XG4gICAgICAgICAgLz5cbiAgICAgICAgICB7Zm9vdGVyID8gPFBvcHVwRm9vdGVyPntmb290ZXJ9PC9Qb3B1cEZvb3Rlcj4gOiBudWxsfVxuICAgICAgICA8L1N0YWNrPlxuICAgICAgfVxuICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcbiAgICAgIGRpc2FibGVBbmltYXRpb25cbiAgICAgIG1heFdpZHRoPXttYXhXaWR0aCA/PyByZWZTZWxlY3QuY3VycmVudD8ub2Zmc2V0V2lkdGh9XG4gICAgICBoYXNBcnJvdz17ZmFsc2V9XG4gICAgICByZWY9e3JlZn1cbiAgICAgIHRhYkluZGV4PXswfVxuICAgICAgcm9sZT1cImRpYWxvZ1wiXG4gICAgICBkZWJvdW5jZURlbGF5PXswfVxuICAgICAgY29udGFpbmVyRnVsbFdpZHRoXG4gICAgPlxuICAgICAge2NoaWxkcmVufVxuICAgIDwvU3R5bGVkUG9wdXA+XG4gIClcbn1cbiJdfQ== */"));
146
+ }) => theme.shadows.dropdown, ";" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL3VsdHJhdmlvbGV0L3VsdHJhdmlvbGV0L3BhY2thZ2VzL3VpL3NyYy9jb21wb25lbnRzL1NlbGVjdElucHV0VjIvRHJvcGRvd24udHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQTRKOEIiLCJmaWxlIjoiL2hvbWUvcnVubmVyL3dvcmsvdWx0cmF2aW9sZXQvdWx0cmF2aW9sZXQvcGFja2FnZXMvdWkvc3JjL2NvbXBvbmVudHMvU2VsZWN0SW5wdXRWMi9Ecm9wZG93bi50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1c2VUaGVtZSB9IGZyb20gJ0BlbW90aW9uL3JlYWN0J1xuaW1wb3J0IHN0eWxlZCBmcm9tICdAZW1vdGlvbi9zdHlsZWQnXG5pbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VNZW1vLCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgdHlwZSB7XG4gIERpc3BhdGNoLFxuICBLZXlib2FyZEV2ZW50LFxuICBSZWFjdE5vZGUsXG4gIFJlZk9iamVjdCxcbiAgU2V0U3RhdGVBY3Rpb24sXG59IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgQ2hlY2tib3ggfSBmcm9tICcuLi9DaGVja2JveCdcbmltcG9ydCB7IFBvcHVwIH0gZnJvbSAnLi4vUG9wdXAnXG5pbXBvcnQgeyBTa2VsZXRvbiB9IGZyb20gJy4uL1NrZWxldG9uJ1xuaW1wb3J0IHsgU3RhY2sgfSBmcm9tICcuLi9TdGFjaydcbmltcG9ydCB7IFRleHQgfSBmcm9tICcuLi9UZXh0J1xuaW1wb3J0IHsgRGlzcGxheU9wdGlvbiB9IGZyb20gJy4vRHJvcGRvd25PcHRpb24nXG5pbXBvcnQgeyBTZWFyY2hCYXJEcm9wZG93biB9IGZyb20gJy4vU2VhcmNoQmFyRHJvcGRvd24nXG5pbXBvcnQgeyB1c2VTZWxlY3RJbnB1dCB9IGZyb20gJy4vU2VsZWN0SW5wdXRQcm92aWRlcidcbmltcG9ydCB7IHR5cGUgRGF0YVR5cGUsIElOUFVUX1NJWkVfSEVJR0hULCB0eXBlIE9wdGlvblR5cGUgfSBmcm9tICcuL3R5cGVzJ1xuXG5jb25zdCBEUk9QRE9XTl9NQVhfSEVJR0hUID0gMjU2XG5cbmV4cG9ydCB0eXBlIERyb3Bkb3duUHJvcHMgPSB7XG4gIGNoaWxkcmVuOiBSZWFjdE5vZGVcbiAgZW1wdHlTdGF0ZTogUmVhY3ROb2RlXG4gIGRlc2NyaXB0aW9uRGlyZWN0aW9uOiAncm93JyB8ICdjb2x1bW4nXG4gIHNlYXJjaGFibGU6IGJvb2xlYW5cbiAgcGxhY2Vob2xkZXI6IHN0cmluZ1xuICBmb290ZXI/OiAoKGNsb3NlRHJvcGRvd246ICgpID0+IHZvaWQpID0+IFJlYWN0Tm9kZSkgfCBSZWFjdE5vZGVcbiAgcmVmU2VsZWN0OiBSZWZPYmplY3Q8SFRNTERpdkVsZW1lbnQ+XG4gIGxvYWRNb3JlPzogUmVhY3ROb2RlXG4gIG9wdGlvbmFsSW5mb1BsYWNlbWVudDogJ2xlZnQnIHwgJ3JpZ2h0J1xuICBpc0xvYWRpbmc/OiBib29sZWFuXG4gIHNpemU6ICdzbWFsbCcgfCAnbWVkaXVtJyB8ICdsYXJnZSdcbn1cblxuZXhwb3J0IHR5cGUgQ3JlYXRlRHJvcGRvd25Qcm9wcyA9IHtcbiAgaXNFbXB0eTogYm9vbGVhblxuICBlbXB0eVN0YXRlOiBSZWFjdE5vZGVcbiAgZGVzY3JpcHRpb25EaXJlY3Rpb246ICdyb3cnIHwgJ2NvbHVtbidcbiAgbG9hZE1vcmU/OiBSZWFjdE5vZGVcbiAgb3B0aW9uYWxJbmZvUGxhY2VtZW50OiAnbGVmdCcgfCAncmlnaHQnXG4gIGRlZmF1bHRTZWFyY2hWYWx1ZTogc3RyaW5nIHwgbnVsbFxuICBpc0xvYWRpbmc/OiBib29sZWFuXG59XG5cbmNvbnN0IE5PTl9TRUFSQ0hBQkxFX0tFWVMgPSBbXG4gICdUYWInLFxuICAnICcsXG4gICdFbnRlcicsXG4gICdDYXBzTG9jaycsXG4gICdTaGlmdCcsXG4gICdBcnJvd0Rvd24nLFxuICAnQXJyb3dVcCcsXG4gICdBcnJvd0xlZnQnLFxuICAnQXJyb3dSaWdodCcsXG4gICdFc2NhcGUnLFxuXVxuXG5jb25zdCBTdHlsZWRQb3B1cCA9IHN0eWxlZChQb3B1cClgXG4gIHdpZHRoOiAxMDAlO1xuICBtaW4td2lkdGg6IDMyMHB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5vdGhlci5lbGV2YXRpb24uYmFja2dyb3VuZC5yYWlzZWR9O1xuICBjb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMubmV1dHJhbC50ZXh0fTtcbiAgYm94LXNoYWRvdzogJHsoeyB0aGVtZSB9KSA9PiBgJHt0aGVtZS5zaGFkb3dzLnJhaXNlZFswXX0sICR7dGhlbWUuc2hhZG93cy5yYWlzZWRbMV19YH07XG4gIHBhZGRpbmc6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMF19O1xuICBtYXJnaW4tYm90dG9tOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzEwXX07XG5gXG5cbmNvbnN0IERyb3Bkb3duQ29udGFpbmVyID0gc3R5bGVkKFN0YWNrKTx7ICdkYXRhLWdyb3VwZWQnOiBib29sZWFuIH0+YFxuICBtYXgtaGVpZ2h0OiAke0RST1BET1dOX01BWF9IRUlHSFR9cHg7XG4gIG92ZXJmbG93LXk6IHNjcm9sbDtcbiAgcGFkZGluZzogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVswXX07XG4gIHBhZGRpbmctYm90dG9tOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzAuNV19O1xuICBwYWRkaW5nLXRvcDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVswLjVdfTtcblxuICAmW2RhdGEtZ3JvdXBlZD1cInRydWVcIl0ge1xuICAgIHBhZGRpbmctdG9wOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzBdfTtcbiAgfVxuYFxuY29uc3QgRHJvcGRvd25Hcm91cCA9IHN0eWxlZC5idXR0b248eyAnZGF0YS1zZWxlY3Rncm91cCc6IGJvb2xlYW4gfT5gXG4gIGRpc3BsYXk6IGZsZXg7XG4gIHdpZHRoOiAxMDAlO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGxlZnQ7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGJvcmRlcjogbm9uZTtcbiAgYmFja2dyb3VuZC1jb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMubmV1dHJhbC5iYWNrZ3JvdW5kV2Vha307XG4gIHBvc2l0aW9uOiBzdGlja3k7XG4gIHRvcDogMHB4O1xuICBwYWRkaW5nLXJpZ2h0OiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzJdfTtcbiAgcGFkZGluZy1sZWZ0OiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzJdfTtcbiAgaGVpZ2h0OiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzRdfTtcbiAgdGV4dC1hbGlnbjogbGVmdDtcbiAgbWFyZ2luLWJvdHRvbTogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsnMC4yNSddfTtcblxuICAmOmZvY3VzIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5uZXV0cmFsLmJhY2tncm91bmRXZWFrfTtcbiAgICBvdXRsaW5lOiBub25lO1xuICB9XG5cbiAgJltkYXRhLXNlbGVjdGdyb3VwPSd0cnVlJ10ge1xuICAgIHBhZGRpbmctbGVmdDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsyXX07XG4gICAgYm9yZGVyLWxlZnQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMC41XX0gc29saWQgJHsoeyB0aGVtZSB9KSA9PlxuICAgICAgdGhlbWUuY29sb3JzLm5ldXRyYWwuYmFja2dyb3VuZFdlYWt9O1xuICB9XG5cbiAgJltkYXRhLXNlbGVjdGdyb3VwPSd0cnVlJ106Zm9jdXMge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwuYmFja2dyb3VuZEhvdmVyfTtcbiAgfVxuYFxuY29uc3QgRHJvcGRvd25Hcm91cFdyYXBwZXIgPSBzdHlsZWQuZGl2YFxuICBwb3NpdGlvbjogc3RpY2t5O1xuICB0b3A6IDBweDtcbmBcbmNvbnN0IERyb3Bkb3duSXRlbSA9IHN0eWxlZC5kaXY8e1xuICAnYXJpYS1zZWxlY3RlZCc6IGJvb2xlYW5cbiAgJ2FyaWEtZGlzYWJsZWQnOiBib29sZWFuXG59PmBcbiAgdGV4dC1hbGlnbjpsZWZ0O1xuICBib3JkZXI6IG5vbmU7XG4gIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm90aGVyLmVsZXZhdGlvbi5iYWNrZ3JvdW5kLnJhaXNlZH07XG5cbiAgcGFkZGluZzogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsnMS41J119ICR7KHsgdGhlbWUgfSkgPT5cbiAgICB0aGVtZS5zcGFjZVsnMiddfSAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWycxLjUnXX0gJHsoeyB0aGVtZSB9KSA9PlxuICAgIHRoZW1lLnNwYWNlWycyJ119O1xuICBtYXJnaW4tbGVmdDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsnMC41J119O1xuICBtYXJnaW4tcmlnaHQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbJzAuNSddfTtcblxuICBjb2xvcjogICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwudGV4dH07XG4gIGJvcmRlci1yYWRpdXM6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUucmFkaWkuZGVmYXVsdH07XG5cbiAgJjpob3ZlciwgOmZvY3VzIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5wcmltYXJ5LmJhY2tncm91bmR9O1xuICAgIGNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5wcmltYXJ5LnRleHR9O1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBvdXRsaW5lOiBub25lO1xuICB9XG5cbiAgJlthcmlhLXNlbGVjdGVkPSd0cnVlJ10ge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLnByaW1hcnkuYmFja2dyb3VuZH07XG4gIH1cblxuICAmW2FyaWEtZGlzYWJsZWQ9XCJ0cnVlXCJdIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5uZXV0cmFsLmJhY2tncm91bmREaXNhYmxlZH07XG4gICAgY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwudGV4dERpc2FibGVkfTtcbiAgfVxuXG4gICZbYXJpYS1kaXNhYmxlZD1cInRydWVcIl06aG92ZXIsIFthcmlhLWRpc2FibGVkPVwidHJ1ZVwiXTpmb2N1cyB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHsoeyB0aGVtZSB9KSA9PlxuICAgICAgdGhlbWUuY29sb3JzLm5ldXRyYWwuYmFja2dyb3VuZFN0cm9uZ0Rpc2FibGVkfTtcbiAgICBjb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMubmV1dHJhbC50ZXh0U3Ryb25nRGlzYWJsZWR9O1xuICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgfVxuYFxuXG5jb25zdCBQb3B1cEZvb3RlciA9IHN0eWxlZC5kaXZgXG4gIHdpZHRoOiAxMDAlO1xuICBwYWRkaW5nOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzEuNV19ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMl19XG4gICAgJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsxLjVdfSAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzJdfTtcbiAgYm94LXNoYWRvdzogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zaGFkb3dzLmRyb3Bkb3dufTtcbmBcbmNvbnN0IFN0eWxlZENoZWNrYm94ID0gc3R5bGVkKENoZWNrYm94KWBcbiAgd2lkdGg6IDEwMCU7XG4gIHBvc2l0aW9uOiBzdGF0aWM7XG4gIHRleHQtYWxpZ246IGxlZnQ7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuYCAvLyBwb2ludGVyLWV2ZW50czogbm9uZSBwcmV2ZW50cyBhbnkgZXJyb3Igd2hlbiB1c2luZyB0aGUgY2hlY2tib3ggaW4gYSBmb3JtIHNpbmNlIGl0IGlzIGFuIHVubmFtZWQgaW5wdXRcblxuY29uc3QgRW1wdHlTdGF0ZSA9IHN0eWxlZChTdGFjaylgXG4gIHBhZGRpbmc6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMl19O1xuYFxuY29uc3QgTG9hZE1vcmUgPSBzdHlsZWQoU3RhY2spYFxuICBwYWRkaW5nOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzAuNV19O1xuYFxuXG5jb25zdCBtb3ZlRm9jdXNEb3duID0gKCkgPT4ge1xuICBjb25zdCBvcHRpb25zID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcbiAgICAnI2l0ZW1zID4gZGl2W3JvbGU9XCJvcHRpb25cIl06bm90KFtkaXNhYmxlZF0pJyxcbiAgKVxuICBjb25zdCBhY3RpdmVJdGVtID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudFxuICBpZiAob3B0aW9ucykge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgb3B0aW9ucz8ubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgIGNvbnN0IGxpc3RMZW5ndGggPSBvcHRpb25zLmxlbmd0aFxuICAgICAgaWYgKGFjdGl2ZUl0ZW0gPT09IG9wdGlvbnNbaV0gJiYgYWN0aXZlSXRlbSAhPT0gb3B0aW9uc1tsaXN0TGVuZ3RoIC0gMV0pIHtcbiAgICAgICAgOyhvcHRpb25zW2kgKyAxXSBhcyBIVE1MRWxlbWVudCkuZm9jdXMoKVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuY29uc3QgbW92ZUZvY3VzVXAgPSAoKSA9PiB7XG4gIGNvbnN0IG9wdGlvbnMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFxuICAgICcjaXRlbXMgPiBkaXZbcm9sZT1cIm9wdGlvblwiXTpub3QoW2Rpc2FibGVkXSknLFxuICApXG4gIGNvbnN0IGFjdGl2ZUl0ZW0gPSBkb2N1bWVudC5hY3RpdmVFbGVtZW50XG5cbiAgaWYgKG9wdGlvbnMpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG9wdGlvbnMubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgIGlmIChhY3RpdmVJdGVtID09PSBvcHRpb25zW2ldICYmIGFjdGl2ZUl0ZW0gIT09IG9wdGlvbnNbMF0pIHtcbiAgICAgICAgOyhvcHRpb25zW2kgLSAxXSBhcyBIVE1MRWxlbWVudCkuZm9jdXMoKVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuY29uc3QgaGFuZGxlS2V5RG93blNlbGVjdCA9IChldmVudDogS2V5Ym9hcmRFdmVudDxIVE1MRGl2RWxlbWVudD4pID0+IHtcbiAgaWYgKGV2ZW50LmtleSA9PT0gJ0Fycm93RG93bicpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgbW92ZUZvY3VzRG93bigpXG4gIH1cblxuICBpZiAoZXZlbnQua2V5ID09PSAnQXJyb3dVcCcpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgbW92ZUZvY3VzVXAoKVxuICB9XG59XG5jb25zdCBoYW5kbGVDbGlja091dHNpZGUgPSAoXG4gIGV2ZW50OiBNb3VzZUV2ZW50LFxuICByZWY6IFJlZk9iamVjdDxIVE1MRGl2RWxlbWVudD4sXG4gIHNldElzRHJvcGRvd25WaXNpYmlsZTogRGlzcGF0Y2g8U2V0U3RhdGVBY3Rpb248Ym9vbGVhbj4+LFxuICByZWZTZWxlY3Q6IFJlZk9iamVjdDxIVE1MRGl2RWxlbWVudD4sXG4gIG9uU2VhcmNoOiBEaXNwYXRjaDxTZXRTdGF0ZUFjdGlvbjxEYXRhVHlwZT4+LFxuICBvcHRpb25zOiBEYXRhVHlwZSxcbikgPT4ge1xuICBpZiAoXG4gICAgcmVmLmN1cnJlbnQgJiZcbiAgICAhcmVmLmN1cnJlbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0IGFzIE5vZGUpICYmXG4gICAgIXJlZlNlbGVjdC5jdXJyZW50Py5jb250YWlucyhldmVudC50YXJnZXQgYXMgTm9kZSlcbiAgKSB7XG4gICAgc2V0SXNEcm9wZG93blZpc2liaWxlKGZhbHNlKVxuICAgIG9uU2VhcmNoKG9wdGlvbnMpXG4gIH1cbn1cblxuY29uc3QgaGFuZGxlS2V5RG93biA9IChcbiAgZXZlbnQ6IGdsb2JhbFRoaXMuS2V5Ym9hcmRFdmVudCxcbiAgcmVmOiBSZWZPYmplY3Q8SFRNTERpdkVsZW1lbnQ+LFxuICBvcHRpb25zOiBEYXRhVHlwZSxcbiAgc2VhcmNoQmFyQWN0aXZlOiBib29sZWFuLFxuICBzZXRTZWFyY2g6IERpc3BhdGNoPFNldFN0YXRlQWN0aW9uPHN0cmluZz4+LFxuICBzZXREZWZhdWx0U2VhcmNoOiBEaXNwYXRjaDxTZXRTdGF0ZUFjdGlvbjxzdHJpbmcgfCBudWxsPj4sXG4gIHNlYXJjaDogc3RyaW5nLFxuKSA9PiB7XG4gIC8vIERlYWxzIHdpdGggZGVmYXVsdCBzZWFyY2hcbiAgaWYgKFxuICAgIHJlZi5jdXJyZW50ICYmXG4gICAgIXNlYXJjaEJhckFjdGl2ZSAmJlxuICAgICFOT05fU0VBUkNIQUJMRV9LRVlTLmluY2x1ZGVzKGV2ZW50LmtleSkgJiZcbiAgICBkb2N1bWVudC5hY3RpdmVFbGVtZW50Py5hcmlhTGFiZWwgIT09ICdzZWFyY2gtYmFyJ1xuICApIHtcbiAgICBjb25zdCBjdXJyZW50U2VhcmNoID0gc2VhcmNoICsgZXZlbnQua2V5XG4gICAgc2V0U2VhcmNoKGN1cnJlbnRTZWFyY2gpXG4gICAgcmVmLmN1cnJlbnQuZm9jdXMoKVxuICAgIGlmICghQXJyYXkuaXNBcnJheShvcHRpb25zKSkge1xuICAgICAgY29uc3QgY2xvc2VzdE9wdGlvbnMgPSB7IC4uLm9wdGlvbnMgfVxuICAgICAgT2JqZWN0LmtleXMoY2xvc2VzdE9wdGlvbnMpLm1hcCgoZ3JvdXA6IHN0cmluZykgPT4ge1xuICAgICAgICBjbG9zZXN0T3B0aW9uc1tncm91cF0gPSBjbG9zZXN0T3B0aW9uc1tncm91cF0uZmlsdGVyKG9wdGlvbiA9PlxuICAgICAgICAgIG9wdGlvbi5zZWFyY2hUZXh0XG4gICAgICAgICAgICA/IG9wdGlvbi5zZWFyY2hUZXh0LnRvTG9jYWxlTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChjdXJyZW50U2VhcmNoKVxuICAgICAgICAgICAgOiBvcHRpb24udmFsdWUudG9Mb2NhbGVMb3dlckNhc2UoKS5zdGFydHNXaXRoKGN1cnJlbnRTZWFyY2gpLFxuICAgICAgICApXG5cbiAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgIH0pXG4gICAgICBjb25zdCBjbG9zZXN0T3B0aW9uID0gY2xvc2VzdE9wdGlvbnNbT2JqZWN0LmtleXMoY2xvc2VzdE9wdGlvbnMpWzBdXVswXVxuICAgICAgaWYgKGNsb3Nlc3RPcHRpb24pIHtcbiAgICAgICAgc2V0RGVmYXVsdFNlYXJjaChjbG9zZXN0T3B0aW9uLnNlYXJjaFRleHQgPz8gY2xvc2VzdE9wdGlvbi52YWx1ZSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNldERlZmF1bHRTZWFyY2gobnVsbClcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgY2xvc2VzdE9wdGlvbiA9IFsuLi5vcHRpb25zXS5maWx0ZXIob3B0aW9uID0+XG4gICAgICAgIG9wdGlvbi5zZWFyY2hUZXh0XG4gICAgICAgICAgPyBvcHRpb24uc2VhcmNoVGV4dC50b0xvY2FsZUxvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoY3VycmVudFNlYXJjaClcbiAgICAgICAgICA6IG9wdGlvbi52YWx1ZS50b0xvY2FsZUxvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoY3VycmVudFNlYXJjaCksXG4gICAgICApWzBdXG4gICAgICBpZiAoY2xvc2VzdE9wdGlvbikge1xuICAgICAgICBzZXREZWZhdWx0U2VhcmNoKGNsb3Nlc3RPcHRpb24uc2VhcmNoVGV4dCA/PyBjbG9zZXN0T3B0aW9uLnZhbHVlKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2V0RGVmYXVsdFNlYXJjaChudWxsKVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuY29uc3QgQ3JlYXRlRHJvcGRvd24gPSAoe1xuICBpc0VtcHR5LFxuICBlbXB0eVN0YXRlLFxuICBkZXNjcmlwdGlvbkRpcmVjdGlvbixcbiAgbG9hZE1vcmUsXG4gIG9wdGlvbmFsSW5mb1BsYWNlbWVudCxcbiAgZGVmYXVsdFNlYXJjaFZhbHVlLFxuICBpc0xvYWRpbmcsXG59OiBDcmVhdGVEcm9wZG93blByb3BzKSA9PiB7XG4gIGNvbnN0IHtcbiAgICBzZXRJc0Ryb3Bkb3duVmlzaWJsZSxcbiAgICBvbkNoYW5nZSxcbiAgICBvcHRpb25zLFxuICAgIG11bHRpc2VsZWN0LFxuICAgIHNlbGVjdEFsbCxcbiAgICBzZWxlY3RBbGxHcm91cCxcbiAgICBkaXNwbGF5ZWRPcHRpb25zLFxuICAgIHNldFNlbGVjdGVkRGF0YSxcbiAgICBzZWxlY3RlZERhdGEsXG4gIH0gPSB1c2VTZWxlY3RJbnB1dCgpXG4gIGNvbnN0IGZvY3VzZWRJdGVtUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGRlZmF1bHRTZWFyY2hWYWx1ZSAmJiBmb2N1c2VkSXRlbVJlZj8uY3VycmVudCkge1xuICAgICAgZm9jdXNlZEl0ZW1SZWYuY3VycmVudC5mb2N1cygpXG4gICAgfVxuICB9LCBbZGVmYXVsdFNlYXJjaFZhbHVlXSlcblxuICBpZiAoaXNFbXB0eSkge1xuICAgIHJldHVybiAoXG4gICAgICA8RW1wdHlTdGF0ZSBnYXA9ezJ9IGFsaWduSXRlbXM9XCJjZW50ZXJcIj5cbiAgICAgICAge2VtcHR5U3RhdGUgPz8gKFxuICAgICAgICAgIDxUZXh0IHZhcmlhbnQ9XCJib2R5U3Ryb25nXCIgYXM9XCJwXCI+XG4gICAgICAgICAgICBObyBvcHRpb25zXG4gICAgICAgICAgPC9UZXh0PlxuICAgICAgICApfVxuICAgICAgPC9FbXB0eVN0YXRlPlxuICAgIClcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZUNsaWNrID0gKGNsaWNrZWRPcHRpb246IE9wdGlvblR5cGUsIGdyb3VwPzogc3RyaW5nKSA9PiB7XG4gICAgc2V0U2VsZWN0ZWREYXRhKHsgdHlwZTogJ3NlbGVjdE9wdGlvbicsIGNsaWNrZWRPcHRpb24sIGdyb3VwIH0pXG4gICAgaWYgKG11bHRpc2VsZWN0KSB7XG4gICAgICBpZiAoc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzLmluY2x1ZGVzKGNsaWNrZWRPcHRpb24udmFsdWUpKSB7XG4gICAgICAgIG9uQ2hhbmdlPy4oXG4gICAgICAgICAgc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzLmZpbHRlcihcbiAgICAgICAgICAgIHZhbCA9PiB2YWwgIT09IGNsaWNrZWRPcHRpb24udmFsdWUsXG4gICAgICAgICAgKSxcbiAgICAgICAgKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb25DaGFuZ2U/LihbLi4uc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzLCBjbGlja2VkT3B0aW9uLnZhbHVlXSlcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgb25DaGFuZ2U/LihjbGlja2VkT3B0aW9uLnZhbHVlKVxuICAgIH1cbiAgICBzZXRJc0Ryb3Bkb3duVmlzaWJsZShtdWx0aXNlbGVjdCkgLy8gaGlkZSB0aGUgZHJvcGRvd24gb24gY2xpY2sgd2hlbiBzaW5nbGUgc2VsZWN0IG9ubHlcbiAgfVxuXG4gIGNvbnN0IHNlbGVjdEFsbE9wdGlvbnMgPSAoKSA9PiB7XG4gICAgaWYgKG11bHRpc2VsZWN0KSB7XG4gICAgICBzZXRTZWxlY3RlZERhdGEoeyB0eXBlOiAnc2VsZWN0QWxsJyB9KVxuICAgICAgaWYgKHNlbGVjdGVkRGF0YS5hbGxTZWxlY3RlZCAmJiBvbkNoYW5nZSkge1xuICAgICAgICBvbkNoYW5nZShbXSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGFsbFZhbHVlczogT3B0aW9uVHlwZVtdID0gW11cbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KG9wdGlvbnMpKSB7XG4gICAgICAgICAgT2JqZWN0LmtleXMob3B0aW9ucykubWFwKChncm91cDogc3RyaW5nKSA9PlxuICAgICAgICAgICAgb3B0aW9uc1tncm91cF0ubWFwKG9wdGlvbiA9PiB7XG4gICAgICAgICAgICAgIGlmICghb3B0aW9uLmRpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgYWxsVmFsdWVzLnB1c2gob3B0aW9uKVxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIClcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvcHRpb25zLm1hcChvcHRpb24gPT4gYWxsVmFsdWVzLnB1c2gob3B0aW9uKSlcbiAgICAgICAgfVxuICAgICAgICBvbkNoYW5nZT8uKGFsbFZhbHVlcy5tYXAodmFsdWUgPT4gdmFsdWUudmFsdWUpKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGhhbmRsZVNlbGVjdEdyb3VwID0gKGdyb3VwOiBzdHJpbmcpID0+IHtcbiAgICBpZiAobXVsdGlzZWxlY3QpIHtcbiAgICAgIHNldFNlbGVjdGVkRGF0YSh7IHR5cGU6ICdzZWxlY3RHcm91cCcsIHNlbGVjdGVkR3JvdXA6IGdyb3VwIH0pXG4gICAgICBpZiAoIUFycmF5LmlzQXJyYXkob3B0aW9ucykpIHtcbiAgICAgICAgaWYgKHNlbGVjdGVkRGF0YS5zZWxlY3RlZEdyb3Vwcy5pbmNsdWRlcyhncm91cCkpIHtcbiAgICAgICAgICBjb25zdCBuZXdTZWxlY3RlZFZhbHVlcyA9IFsuLi5zZWxlY3RlZERhdGEuc2VsZWN0ZWRWYWx1ZXNdLmZpbHRlcihcbiAgICAgICAgICAgIHNlbGVjdGVkVmFsdWUgPT5cbiAgICAgICAgICAgICAgIW9wdGlvbnNbZ3JvdXBdLmZpbmQob3B0aW9uID0+IG9wdGlvbi52YWx1ZSA9PT0gc2VsZWN0ZWRWYWx1ZSksXG4gICAgICAgICAgKVxuICAgICAgICAgIG9uQ2hhbmdlPy4obmV3U2VsZWN0ZWRWYWx1ZXMpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgbmV3U2VsZWN0ZWRWYWx1ZXMgPSBbLi4uc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzXVxuXG4gICAgICAgICAgb3B0aW9uc1tncm91cF0ubWFwKG9wdGlvbiA9PlxuICAgICAgICAgICAgbmV3U2VsZWN0ZWRWYWx1ZXMuaW5jbHVkZXMob3B0aW9uLnZhbHVlKSB8fCBvcHRpb24uZGlzYWJsZWRcbiAgICAgICAgICAgICAgPyBudWxsXG4gICAgICAgICAgICAgIDogbmV3U2VsZWN0ZWRWYWx1ZXMucHVzaChvcHRpb24udmFsdWUpLFxuICAgICAgICAgIClcbiAgICAgICAgICBvbkNoYW5nZT8uKG5ld1NlbGVjdGVkVmFsdWVzKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuICFBcnJheS5pc0FycmF5KGRpc3BsYXllZE9wdGlvbnMpID8gKFxuICAgIDxEcm9wZG93bkNvbnRhaW5lclxuICAgICAgcm9sZT1cImxpc3Rib3hcIlxuICAgICAgaWQ9XCJzZWxlY3QtZHJvcGRvd25cIlxuICAgICAgb25LZXlEb3duPXtoYW5kbGVLZXlEb3duU2VsZWN0fVxuICAgICAgZGF0YS1ncm91cGVkXG4gICAgPlxuICAgICAge2lzTG9hZGluZyA/IChcbiAgICAgICAgPFNrZWxldG9uIHZhcmlhbnQ9XCJibG9ja1wiIC8+XG4gICAgICApIDogKFxuICAgICAgICA8PlxuICAgICAgICAgIHtzZWxlY3RBbGwgJiYgbXVsdGlzZWxlY3QgPyAoXG4gICAgICAgICAgICA8U3RhY2sgaWQ9XCJpdGVtc1wiPlxuICAgICAgICAgICAgICA8RHJvcGRvd25JdGVtXG4gICAgICAgICAgICAgICAgYXJpYS1kaXNhYmxlZD17ZmFsc2V9XG4gICAgICAgICAgICAgICAgYXJpYS1zZWxlY3RlZD17c2VsZWN0ZWREYXRhLmFsbFNlbGVjdGVkfVxuICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJzZWxlY3QtYWxsXCJcbiAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD1cInNlbGVjdC1hbGxcIlxuICAgICAgICAgICAgICAgIGlkPVwic2VsZWN0LWFsbFwiXG4gICAgICAgICAgICAgICAgdGFiSW5kZXg9ezB9XG4gICAgICAgICAgICAgICAgcm9sZT1cIm9wdGlvblwiXG4gICAgICAgICAgICAgICAgb25LZXlEb3duPXtldmVudCA9PlxuICAgICAgICAgICAgICAgICAgWycgJywgJ0VudGVyJ10uaW5jbHVkZXMoZXZlbnQua2V5KSA/IHNlbGVjdEFsbE9wdGlvbnMoKSA6IG51bGxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgb25DbGljaz17c2VsZWN0QWxsT3B0aW9uc31cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxTdHlsZWRDaGVja2JveFxuICAgICAgICAgICAgICAgICAgY2hlY2tlZD17c2VsZWN0ZWREYXRhLmFsbFNlbGVjdGVkfVxuICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgdmFsdWU9XCJzZWxlY3QtYWxsXCJcbiAgICAgICAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwic2VsZWN0LWFsbC1jaGVja2JveFwiXG4gICAgICAgICAgICAgICAgICB0YWJJbmRleD17LTF9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPFN0YWNrIGRpcmVjdGlvbj1cImNvbHVtblwiPlxuICAgICAgICAgICAgICAgICAgICA8VGV4dCBhcz1cInNwYW5cIiB2YXJpYW50PVwiYm9keVwiIHBsYWNlbWVudD1cImxlZnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICB7c2VsZWN0QWxsLmxhYmVsfVxuICAgICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgICAgIDxUZXh0XG4gICAgICAgICAgICAgICAgICAgICAgYXM9XCJzcGFuXCJcbiAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50PVwiYm9keVNtYWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICBzZW50aW1lbnQ9XCJuZXV0cmFsXCJcbiAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJsZWZ0XCJcbiAgICAgICAgICAgICAgICAgICAgICBwcm9taW5lbmNlPVwid2Vha1wiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7c2VsZWN0QWxsLmRlc2NyaXB0aW9ufVxuICAgICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgICA8L1N0YWNrPlxuICAgICAgICAgICAgICAgIDwvU3R5bGVkQ2hlY2tib3g+XG4gICAgICAgICAgICAgIDwvRHJvcGRvd25JdGVtPlxuICAgICAgICAgICAgPC9TdGFjaz5cbiAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICB7T2JqZWN0LmtleXMoZGlzcGxheWVkT3B0aW9ucykubWFwKChncm91cCwgaW5kZXgpID0+IChcbiAgICAgICAgICAgIDxTdGFjayBrZXk9e2dyb3VwfSBnYXA9ezAuMjV9PlxuICAgICAgICAgICAgICB7ZGlzcGxheWVkT3B0aW9uc1tncm91cF0ubGVuZ3RoID4gMCA/IChcbiAgICAgICAgICAgICAgICA8RHJvcGRvd25Hcm91cFdyYXBwZXIgaWQ9e3NlbGVjdEFsbEdyb3VwID8gJ2l0ZW1zJyA6IHVuZGVmaW5lZH0+XG4gICAgICAgICAgICAgICAgICB7Z3JvdXAgPyAoXG4gICAgICAgICAgICAgICAgICAgIDxEcm9wZG93bkdyb3VwXG4gICAgICAgICAgICAgICAgICAgICAga2V5PXtncm91cH1cbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICB0YWJJbmRleD17c2VsZWN0QWxsR3JvdXAgPyAwIDogLTF9XG4gICAgICAgICAgICAgICAgICAgICAgb25LZXlEb3duPXtldmVudCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoWycgJywgJ0VudGVyJ10uaW5jbHVkZXMoZXZlbnQua2V5KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZVNlbGVjdEdyb3VwKGdyb3VwKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgZGF0YS1zZWxlY3Rncm91cD17c2VsZWN0QWxsR3JvdXB9XG4gICAgICAgICAgICAgICAgICAgICAgcm9sZT1cImdyb3VwXCJcbiAgICAgICAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD17YGdyb3VwLSR7aW5kZXh9YH1cbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0QWxsR3JvdXAgPyBoYW5kbGVTZWxlY3RHcm91cChncm91cCkgOiBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAge3NlbGVjdEFsbEdyb3VwID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgPFN0eWxlZENoZWNrYm94XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e3NlbGVjdGVkRGF0YS5zZWxlY3RlZEdyb3Vwcy5pbmNsdWRlcyhncm91cCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2dyb3VwfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD1cInNlbGVjdC1ncm91cFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRhYkluZGV4PXstMX1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPFRleHQgdmFyaWFudD1cImNhcHRpb25cIiBhcz1cInNwYW5cIiBwbGFjZW1lbnQ9XCJsZWZ0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2dyb3VwLnRvVXBwZXJDYXNlKCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvU3R5bGVkQ2hlY2tib3g+XG4gICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxUZXh0XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJjYXB0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYXM9XCJzcGFuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwibGVmdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNlbnRpbWVudD1cIm5ldXRyYWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7Z3JvdXAudG9VcHBlckNhc2UoKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICA8L0Ryb3Bkb3duR3JvdXA+XG4gICAgICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgICAgICA8L0Ryb3Bkb3duR3JvdXBXcmFwcGVyPlxuICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgICAgPFN0YWNrIGlkPVwiaXRlbXNcIiBnYXA9XCIwLjI1XCI+XG4gICAgICAgICAgICAgICAge2Rpc3BsYXllZE9wdGlvbnNbZ3JvdXBdLm1hcCgob3B0aW9uLCBpbmRleE9wdGlvbikgPT4gKFxuICAgICAgICAgICAgICAgICAgPERyb3Bkb3duSXRlbVxuICAgICAgICAgICAgICAgICAgICBrZXk9e29wdGlvbi52YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgYXJpYS1kaXNhYmxlZD17ISFvcHRpb24uZGlzYWJsZWR9XG4gICAgICAgICAgICAgICAgICAgIHRhYkluZGV4PXshb3B0aW9uLmRpc2FibGVkID8gMCA6IC0xfVxuICAgICAgICAgICAgICAgICAgICBhcmlhLXNlbGVjdGVkPXtcbiAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZERhdGEuc2VsZWN0ZWRWYWx1ZXMuaW5jbHVkZXMob3B0aW9uLnZhbHVlKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICFvcHRpb24uZGlzYWJsZWRcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPXtvcHRpb24udmFsdWV9XG4gICAgICAgICAgICAgICAgICAgIGRhdGEtdGVzdGlkPXtgb3B0aW9uLSR7b3B0aW9uLnZhbHVlfWB9XG4gICAgICAgICAgICAgICAgICAgIGlkPXtgb3B0aW9uLSR7aW5kZXhPcHRpb259YH1cbiAgICAgICAgICAgICAgICAgICAgcm9sZT1cIm9wdGlvblwiXG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoIW9wdGlvbi5kaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlQ2xpY2sob3B0aW9uLCBncm91cClcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgIG9uS2V5RG93bj17ZXZlbnQgPT5cbiAgICAgICAgICAgICAgICAgICAgICBbJyAnLCAnRW50ZXInXS5pbmNsdWRlcyhldmVudC5rZXkpXG4gICAgICAgICAgICAgICAgICAgICAgICA/IGhhbmRsZUNsaWNrKG9wdGlvbiwgZ3JvdXApXG4gICAgICAgICAgICAgICAgICAgICAgICA6IG51bGxcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZWY9e1xuICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbi52YWx1ZSA9PT0gZGVmYXVsdFNlYXJjaFZhbHVlIHx8XG4gICAgICAgICAgICAgICAgICAgICAgb3B0aW9uLnNlYXJjaFRleHQgPT09IGRlZmF1bHRTZWFyY2hWYWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgPyBmb2N1c2VkSXRlbVJlZlxuICAgICAgICAgICAgICAgICAgICAgICAgOiBudWxsXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge211bHRpc2VsZWN0ID8gKFxuICAgICAgICAgICAgICAgICAgICAgIDxTdHlsZWRDaGVja2JveFxuICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tlZD17XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkRGF0YS5zZWxlY3RlZFZhbHVlcy5pbmNsdWRlcyhvcHRpb24udmFsdWUpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICFvcHRpb24uZGlzYWJsZWRcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtvcHRpb24uZGlzYWJsZWR9XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17b3B0aW9uLnZhbHVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgdGFiSW5kZXg9ey0xfVxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxEaXNwbGF5T3B0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbj17b3B0aW9ufVxuICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbkRpcmVjdGlvbj17ZGVzY3JpcHRpb25EaXJlY3Rpb259XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsSW5mb1BsYWNlbWVudD17b3B0aW9uYWxJbmZvUGxhY2VtZW50fVxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8L1N0eWxlZENoZWNrYm94PlxuICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgIDxEaXNwbGF5T3B0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb249e29wdGlvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uRGlyZWN0aW9uPXtkZXNjcmlwdGlvbkRpcmVjdGlvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsSW5mb1BsYWNlbWVudD17b3B0aW9uYWxJbmZvUGxhY2VtZW50fVxuICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICA8L0Ryb3Bkb3duSXRlbT5cbiAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgPC9TdGFjaz5cbiAgICAgICAgICAgIDwvU3RhY2s+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvPlxuICAgICAgKX1cbiAgICAgIHtsb2FkTW9yZSA/IDxMb2FkTW9yZT57bG9hZE1vcmV9PC9Mb2FkTW9yZT4gOiBudWxsfVxuICAgIDwvRHJvcGRvd25Db250YWluZXI+XG4gICkgOiAoXG4gICAgPERyb3Bkb3duQ29udGFpbmVyXG4gICAgICByb2xlPVwibGlzdGJveFwiXG4gICAgICB0YWJJbmRleD17LTF9XG4gICAgICBpZD1cInNlbGVjdC1kcm9wZG93blwiXG4gICAgICBvbktleURvd249e2hhbmRsZUtleURvd25TZWxlY3R9XG4gICAgICBnYXA9ezAuMjV9XG4gICAgICBkYXRhLWdyb3VwZWQ9e2ZhbHNlfVxuICAgID5cbiAgICAgIHtzZWxlY3RBbGwgJiYgbXVsdGlzZWxlY3QgPyAoXG4gICAgICAgIDxTdGFjayBpZD1cIml0ZW1zXCIgZ2FwPXswLjI1fSB0YWJJbmRleD17LTF9PlxuICAgICAgICAgIDxEcm9wZG93bkl0ZW1cbiAgICAgICAgICAgIGFyaWEtZGlzYWJsZWQ9e2ZhbHNlfVxuICAgICAgICAgICAgYXJpYS1zZWxlY3RlZD17c2VsZWN0ZWREYXRhLmFsbFNlbGVjdGVkfVxuICAgICAgICAgICAgYXJpYS1sYWJlbD1cInNlbGVjdC1hbGxcIlxuICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJzZWxlY3QtYWxsXCJcbiAgICAgICAgICAgIHRhYkluZGV4PXswfVxuICAgICAgICAgICAgcm9sZT1cIm9wdGlvblwiXG4gICAgICAgICAgICBvbktleURvd249e2V2ZW50ID0+XG4gICAgICAgICAgICAgIFsnICcsICdFbnRlciddLmluY2x1ZGVzKGV2ZW50LmtleSkgPyBzZWxlY3RBbGxPcHRpb25zKCkgOiBudWxsXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvbkNsaWNrPXtzZWxlY3RBbGxPcHRpb25zfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxTdHlsZWRDaGVja2JveFxuICAgICAgICAgICAgICBjaGVja2VkPXtzZWxlY3RlZERhdGEuYWxsU2VsZWN0ZWR9XG4gICAgICAgICAgICAgIGRpc2FibGVkPXtmYWxzZX1cbiAgICAgICAgICAgICAgdmFsdWU9XCJzZWxlY3QtYWxsXCJcbiAgICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJzZWxlY3QtYWxsLWNoZWNrYm94XCJcbiAgICAgICAgICAgICAgdGFiSW5kZXg9ey0xfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8U3RhY2sgZGlyZWN0aW9uPVwiY29sdW1uXCI+XG4gICAgICAgICAgICAgICAgPFRleHQgYXM9XCJzcGFuXCIgdmFyaWFudD1cImJvZHlcIiBwbGFjZW1lbnQ9XCJsZWZ0XCI+XG4gICAgICAgICAgICAgICAgICB7c2VsZWN0QWxsLmxhYmVsfVxuICAgICAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgICAgICA8VGV4dFxuICAgICAgICAgICAgICAgICAgYXM9XCJzcGFuXCJcbiAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJib2R5U21hbGxcIlxuICAgICAgICAgICAgICAgICAgc2VudGltZW50PVwibmV1dHJhbFwiXG4gICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJsZWZ0XCJcbiAgICAgICAgICAgICAgICAgIHByb21pbmVuY2U9XCJ3ZWFrXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICB7c2VsZWN0QWxsLmRlc2NyaXB0aW9ufVxuICAgICAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgICAgPC9TdGFjaz5cbiAgICAgICAgICAgIDwvU3R5bGVkQ2hlY2tib3g+XG4gICAgICAgICAgPC9Ecm9wZG93bkl0ZW0+XG4gICAgICAgIDwvU3RhY2s+XG4gICAgICApIDogbnVsbH1cbiAgICAgIDxTdGFjayBpZD1cIml0ZW1zXCIgZ2FwPXswLjI1fT5cbiAgICAgICAge2lzTG9hZGluZyA/IChcbiAgICAgICAgICA8U2tlbGV0b24gdmFyaWFudD1cImJsb2NrXCIgLz5cbiAgICAgICAgKSA6IChcbiAgICAgICAgICBkaXNwbGF5ZWRPcHRpb25zLm1hcCgob3B0aW9uLCBpbmRleCkgPT4gKFxuICAgICAgICAgICAgPERyb3Bkb3duSXRlbVxuICAgICAgICAgICAgICBrZXk9e29wdGlvbi52YWx1ZX1cbiAgICAgICAgICAgICAgYXJpYS1kaXNhYmxlZD17ISFvcHRpb24uZGlzYWJsZWR9XG4gICAgICAgICAgICAgIGFyaWEtc2VsZWN0ZWQ9e1xuICAgICAgICAgICAgICAgIHNlbGVjdGVkRGF0YS5zZWxlY3RlZFZhbHVlcy5pbmNsdWRlcyhvcHRpb24udmFsdWUpICYmXG4gICAgICAgICAgICAgICAgIW9wdGlvbi5kaXNhYmxlZFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIW9wdGlvbi5kaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgICAgaGFuZGxlQ2xpY2sob3B0aW9uKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgYXJpYS1sYWJlbD17b3B0aW9uLnZhbHVlfVxuICAgICAgICAgICAgICBkYXRhLXRlc3RpZD17YG9wdGlvbi0ke29wdGlvbi52YWx1ZX1gfVxuICAgICAgICAgICAgICBpZD17YG9wdGlvbi0ke2luZGV4fWB9XG4gICAgICAgICAgICAgIHJvbGU9XCJvcHRpb25cIlxuICAgICAgICAgICAgICB0YWJJbmRleD17IW9wdGlvbi5kaXNhYmxlZCA/IDAgOiAtMX1cbiAgICAgICAgICAgICAgcmVmPXtcbiAgICAgICAgICAgICAgICBvcHRpb24udmFsdWUgPT09IGRlZmF1bHRTZWFyY2hWYWx1ZSB8fFxuICAgICAgICAgICAgICAgIG9wdGlvbi5zZWFyY2hUZXh0ID09PSBkZWZhdWx0U2VhcmNoVmFsdWVcbiAgICAgICAgICAgICAgICAgID8gZm9jdXNlZEl0ZW1SZWZcbiAgICAgICAgICAgICAgICAgIDogbnVsbFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIG9uS2V5RG93bj17ZXZlbnQgPT5cbiAgICAgICAgICAgICAgICBbJyAnLCAnRW50ZXInXS5pbmNsdWRlcyhldmVudC5rZXkpID8gaGFuZGxlQ2xpY2sob3B0aW9uKSA6IG51bGxcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7bXVsdGlzZWxlY3QgPyAoXG4gICAgICAgICAgICAgICAgPFN0eWxlZENoZWNrYm94XG4gICAgICAgICAgICAgICAgICBjaGVja2VkPXtcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzLmluY2x1ZGVzKG9wdGlvbi52YWx1ZSkgJiZcbiAgICAgICAgICAgICAgICAgICAgIW9wdGlvbi5kaXNhYmxlZFxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e29wdGlvbi5kaXNhYmxlZH1cbiAgICAgICAgICAgICAgICAgIHZhbHVlPXtvcHRpb24udmFsdWV9XG4gICAgICAgICAgICAgICAgICB0YWJJbmRleD17LTF9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPERpc3BsYXlPcHRpb25cbiAgICAgICAgICAgICAgICAgICAgb3B0aW9uPXtvcHRpb259XG4gICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uRGlyZWN0aW9uPXtkZXNjcmlwdGlvbkRpcmVjdGlvbn1cbiAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWxJbmZvUGxhY2VtZW50PXtvcHRpb25hbEluZm9QbGFjZW1lbnR9XG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvU3R5bGVkQ2hlY2tib3g+XG4gICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgPERpc3BsYXlPcHRpb25cbiAgICAgICAgICAgICAgICAgIG9wdGlvbj17b3B0aW9ufVxuICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb25EaXJlY3Rpb249e2Rlc2NyaXB0aW9uRGlyZWN0aW9ufVxuICAgICAgICAgICAgICAgICAgb3B0aW9uYWxJbmZvUGxhY2VtZW50PXtvcHRpb25hbEluZm9QbGFjZW1lbnR9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvRHJvcGRvd25JdGVtPlxuICAgICAgICAgICkpXG4gICAgICAgICl9XG4gICAgICAgIHtsb2FkTW9yZSA/IDxMb2FkTW9yZT57bG9hZE1vcmV9PC9Mb2FkTW9yZT4gOiBudWxsfVxuICAgICAgPC9TdGFjaz5cbiAgICA8L0Ryb3Bkb3duQ29udGFpbmVyPlxuICApXG59XG5leHBvcnQgY29uc3QgRHJvcGRvd24gPSAoe1xuICBjaGlsZHJlbixcbiAgZW1wdHlTdGF0ZSxcbiAgZGVzY3JpcHRpb25EaXJlY3Rpb24sXG4gIHNlYXJjaGFibGUsXG4gIHBsYWNlaG9sZGVyLFxuICBmb290ZXIsXG4gIHJlZlNlbGVjdCxcbiAgbG9hZE1vcmUsXG4gIG9wdGlvbmFsSW5mb1BsYWNlbWVudCxcbiAgaXNMb2FkaW5nLFxuICBzaXplLFxufTogRHJvcGRvd25Qcm9wcykgPT4ge1xuICBjb25zdCB7XG4gICAgc2V0SXNEcm9wZG93blZpc2libGUsXG4gICAgaXNEcm9wZG93blZpc2libGUsXG4gICAgb25TZWFyY2gsXG4gICAgc2VhcmNoSW5wdXQsXG4gICAgb3B0aW9ucyxcbiAgICBkaXNwbGF5ZWRPcHRpb25zLFxuICAgIG51bWJlck9mT3B0aW9ucyxcbiAgfSA9IHVzZVNlbGVjdElucHV0KClcbiAgY29uc3QgdGhlbWUgPSB1c2VUaGVtZSgpXG4gIGNvbnN0IFtzZWFyY2hCYXJBY3RpdmUsIHNldFNlYXJjaEJhckFjdGl2ZV0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW2RlZmF1bHRTZWFyY2hWYWx1ZSwgc2V0RGVmYXVsdFNlYXJjaF0gPSB1c2VTdGF0ZTxzdHJpbmcgfCBudWxsPihudWxsKVxuICBjb25zdCByZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IFtzZWFyY2gsIHNldFNlYXJjaF0gPSB1c2VTdGF0ZTxzdHJpbmc+KCcnKVxuICBjb25zdCBbbWF4V2lkdGgsIHNldFdpZHRoXSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bWJlcj4oKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHJlZlNlbGVjdC5jdXJyZW50ICYmIGlzRHJvcGRvd25WaXNpYmxlKSB7XG4gICAgICBjb25zdCBwb3NpdGlvbiA9XG4gICAgICAgIHJlZlNlbGVjdC5jdXJyZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmJvdHRvbSArXG4gICAgICAgIERST1BET1dOX01BWF9IRUlHSFQgK1xuICAgICAgICBJTlBVVF9TSVpFX0hFSUdIVFtzaXplXSArXG4gICAgICAgIHBhcnNlSW50KHRoZW1lLnNwYWNlWyc1J10sIDEwKVxuICAgICAgY29uc3Qgb3ZlcmZsb3cgPSBwb3NpdGlvbiAtIHdpbmRvdy5pbm5lckhlaWdodFxuICAgICAgaWYgKG92ZXJmbG93ID4gMCkge1xuICAgICAgICBjb25zdCBtb2RhbEVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYmFja2Ryb3AtbW9kYWwnKVxuXG4gICAgICAgIGlmIChtb2RhbEVsZW1lbnQpIHtcbiAgICAgICAgICBtb2RhbEVsZW1lbnQuc2Nyb2xsQnkoeyB0b3A6IG92ZXJmbG93LCBiZWhhdmlvcjogJ3Ntb290aCcgfSlcbiAgICAgICAgfSBlbHNlIHdpbmRvdy5zY3JvbGxCeSh7IHRvcDogb3ZlcmZsb3csIGJlaGF2aW9yOiAnc21vb3RoJyB9KVxuICAgICAgfVxuICAgIH1cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvZXhoYXVzdGl2ZS1kZXBzXG4gIH0sIFtpc0Ryb3Bkb3duVmlzaWJsZSwgcmVmU2VsZWN0LCBzaXplLCByZWYuY3VycmVudF0pXG5cbiAgY29uc3QgcmVzaXplRHJvcGRvd24gPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKFxuICAgICAgcmVmU2VsZWN0LmN1cnJlbnQgJiZcbiAgICAgIHJlZlNlbGVjdC5jdXJyZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoID4gMFxuICAgICkge1xuICAgICAgc2V0V2lkdGgocmVmU2VsZWN0LmN1cnJlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGgpXG4gICAgfVxuICB9LCBbcmVmU2VsZWN0XSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHJlc2l6ZURyb3Bkb3duKClcblxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCByZXNpemVEcm9wZG93bilcblxuICAgIHJldHVybiAoKSA9PiB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgcmVzaXplRHJvcGRvd24pXG4gIH0sIFtyZXNpemVEcm9wZG93bl0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIXNlYXJjaElucHV0KSB7XG4gICAgICBvblNlYXJjaChvcHRpb25zKVxuICAgIH1cbiAgfSwgW29uU2VhcmNoLCBvcHRpb25zLCBzZWFyY2hJbnB1dF0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWlzRHJvcGRvd25WaXNpYmxlKSB7XG4gICAgICBzZXREZWZhdWx0U2VhcmNoKG51bGwpXG4gICAgICBzZXRTZWFyY2goJycpXG4gICAgfVxuXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgZXZlbnQgPT5cbiAgICAgIGhhbmRsZUNsaWNrT3V0c2lkZShcbiAgICAgICAgZXZlbnQsXG4gICAgICAgIHJlZixcbiAgICAgICAgc2V0SXNEcm9wZG93blZpc2libGUsXG4gICAgICAgIHJlZlNlbGVjdCxcbiAgICAgICAgb25TZWFyY2gsXG4gICAgICAgIG9wdGlvbnMsXG4gICAgICApLFxuICAgIClcblxuICAgIGlmICghc2VhcmNoYWJsZSkge1xuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIGV2ZW50ID0+XG4gICAgICAgIGhhbmRsZUtleURvd24oXG4gICAgICAgICAgZXZlbnQsXG4gICAgICAgICAgcmVmLFxuICAgICAgICAgIG9wdGlvbnMsXG4gICAgICAgICAgc2VhcmNoQmFyQWN0aXZlLFxuICAgICAgICAgIHNldFNlYXJjaCxcbiAgICAgICAgICBzZXREZWZhdWx0U2VhcmNoLFxuICAgICAgICAgIHNlYXJjaCxcbiAgICAgICAgKSxcbiAgICAgIClcbiAgICB9XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgZXZlbnQgPT5cbiAgICAgICAgaGFuZGxlQ2xpY2tPdXRzaWRlKFxuICAgICAgICAgIGV2ZW50LFxuICAgICAgICAgIHJlZixcbiAgICAgICAgICBzZXRJc0Ryb3Bkb3duVmlzaWJsZSxcbiAgICAgICAgICByZWZTZWxlY3QsXG4gICAgICAgICAgb25TZWFyY2gsXG4gICAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgKSxcbiAgICAgIClcblxuICAgICAgaWYgKCFzZWFyY2hhYmxlKSB7XG4gICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBldmVudCA9PlxuICAgICAgICAgIGhhbmRsZUtleURvd24oXG4gICAgICAgICAgICBldmVudCxcbiAgICAgICAgICAgIHJlZixcbiAgICAgICAgICAgIG9wdGlvbnMsXG4gICAgICAgICAgICBzZWFyY2hCYXJBY3RpdmUsXG4gICAgICAgICAgICBzZXRTZWFyY2gsXG4gICAgICAgICAgICBzZXREZWZhdWx0U2VhcmNoLFxuICAgICAgICAgICAgc2VhcmNoLFxuICAgICAgICAgICksXG4gICAgICAgIClcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtcbiAgICBpc0Ryb3Bkb3duVmlzaWJsZSxcbiAgICBzZWFyY2hCYXJBY3RpdmUsXG4gICAgb3B0aW9ucyxcbiAgICBvblNlYXJjaCxcbiAgICBzZWFyY2gsXG4gICAgcmVmU2VsZWN0LFxuICAgIHNldERlZmF1bHRTZWFyY2gsXG4gICAgc2V0SXNEcm9wZG93blZpc2libGUsXG4gICAgc2VhcmNoYWJsZSxcbiAgXSlcblxuICAvLyBObyBkYXRhIGlzIGRpc3BsYXllZCAoYmVjYXVzZSBvZiB0aGUgc2VhcmNoIG9yIGJlY2F1c2Ugbm8gZGF0YSBpcyBwcm92aWRlZClcbiAgLy8gU2V0IHRvIHRydWUgd2hlbiBub0RhdGEgYnkgZGVmYXVsdFxuICBjb25zdCBpc0VtcHR5ID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKG51bWJlck9mT3B0aW9ucyA9PT0gMCkgcmV0dXJuIHRydWVcbiAgICBpZiAoQXJyYXkuaXNBcnJheShkaXNwbGF5ZWRPcHRpb25zKSkge1xuICAgICAgcmV0dXJuICEoZGlzcGxheWVkT3B0aW9ucy5sZW5ndGggPiAwKVxuICAgIH1cbiAgICBjb25zdCBncm91cHMgPSBPYmplY3Qua2V5cyhkaXNwbGF5ZWRPcHRpb25zKVxuICAgIGZvciAoY29uc3QgZ3JvdXAgb2YgZ3JvdXBzKSB7XG4gICAgICBpZiAoZGlzcGxheWVkT3B0aW9uc1tncm91cF0ubGVuZ3RoICE9PSAwKSB7XG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0cnVlXG4gIH0sIFtkaXNwbGF5ZWRPcHRpb25zLCBudW1iZXJPZk9wdGlvbnNdKVxuXG4gIGNvbnN0IGNvbXB1dGVkRm9vdGVyID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKGZvb3Rlcikge1xuICAgICAgaWYgKHR5cGVvZiBmb290ZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICA8UG9wdXBGb290ZXI+e2Zvb3RlcigoKSA9PiBzZXRJc0Ryb3Bkb3duVmlzaWJsZShmYWxzZSkpfTwvUG9wdXBGb290ZXI+XG4gICAgICAgIClcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIDxQb3B1cEZvb3Rlcj57Zm9vdGVyfTwvUG9wdXBGb290ZXI+XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGxcbiAgfSwgW2Zvb3Rlciwgc2V0SXNEcm9wZG93blZpc2libGVdKVxuXG4gIHJldHVybiAoXG4gICAgPFN0eWxlZFBvcHVwXG4gICAgICB2aXNpYmxlPXtpc0Ryb3Bkb3duVmlzaWJsZX1cbiAgICAgIHRleHQ9e1xuICAgICAgICA8U3RhY2s+XG4gICAgICAgICAge3NlYXJjaGFibGUgJiYgIWlzTG9hZGluZyAmJiBudW1iZXJPZk9wdGlvbnMgPj0gNiA/IChcbiAgICAgICAgICAgIDxTZWFyY2hCYXJEcm9wZG93blxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj17cGxhY2Vob2xkZXJ9XG4gICAgICAgICAgICAgIGRpc3BsYXllZE9wdGlvbnM9e2Rpc3BsYXllZE9wdGlvbnN9XG4gICAgICAgICAgICAgIHNldFNlYXJjaEJhckFjdGl2ZT17c2V0U2VhcmNoQmFyQWN0aXZlfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICA8Q3JlYXRlRHJvcGRvd25cbiAgICAgICAgICAgIGlzRW1wdHk9e2lzRW1wdHl9XG4gICAgICAgICAgICBlbXB0eVN0YXRlPXtlbXB0eVN0YXRlfVxuICAgICAgICAgICAgZGVzY3JpcHRpb25EaXJlY3Rpb249e2Rlc2NyaXB0aW9uRGlyZWN0aW9ufVxuICAgICAgICAgICAgbG9hZE1vcmU9e2xvYWRNb3JlfVxuICAgICAgICAgICAgb3B0aW9uYWxJbmZvUGxhY2VtZW50PXtvcHRpb25hbEluZm9QbGFjZW1lbnR9XG4gICAgICAgICAgICBkZWZhdWx0U2VhcmNoVmFsdWU9e2RlZmF1bHRTZWFyY2hWYWx1ZX1cbiAgICAgICAgICAgIGlzTG9hZGluZz17aXNMb2FkaW5nfVxuICAgICAgICAgIC8+XG4gICAgICAgICAge2NvbXB1dGVkRm9vdGVyfVxuICAgICAgICA8L1N0YWNrPlxuICAgICAgfVxuICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcbiAgICAgIGRpc2FibGVBbmltYXRpb25cbiAgICAgIG1heFdpZHRoPXttYXhXaWR0aCA/PyByZWZTZWxlY3QuY3VycmVudD8ub2Zmc2V0V2lkdGh9XG4gICAgICBoYXNBcnJvdz17ZmFsc2V9XG4gICAgICByZWY9e3JlZn1cbiAgICAgIHRhYkluZGV4PXswfVxuICAgICAgcm9sZT1cImRpYWxvZ1wiXG4gICAgICBkZWJvdW5jZURlbGF5PXswfVxuICAgICAgY29udGFpbmVyRnVsbFdpZHRoXG4gICAgICBhbGlnbj1cInN0YXJ0XCJcbiAgICA+XG4gICAgICB7Y2hpbGRyZW59XG4gICAgPC9TdHlsZWRQb3B1cD5cbiAgKVxufVxuIl19 */"));
147
147
  const StyledCheckbox = /* @__PURE__ */ _styled__default.default(index$2.Checkbox, process.env.NODE_ENV === "production" ? {
148
148
  target: "eeucz6c2"
149
149
  } : {
@@ -155,7 +155,7 @@ const StyledCheckbox = /* @__PURE__ */ _styled__default.default(index$2.Checkbox
155
155
  } : {
156
156
  name: "1l9xw77",
157
157
  styles: "width:100%;position:static;text-align:left;align-items:center;pointer-events:none",
158
- map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL3VsdHJhdmlvbGV0L3VsdHJhdmlvbGV0L3BhY2thZ2VzL3VpL3NyYy9jb21wb25lbnRzL1NlbGVjdElucHV0VjIvRHJvcGRvd24udHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWtLdUMiLCJmaWxlIjoiL2hvbWUvcnVubmVyL3dvcmsvdWx0cmF2aW9sZXQvdWx0cmF2aW9sZXQvcGFja2FnZXMvdWkvc3JjL2NvbXBvbmVudHMvU2VsZWN0SW5wdXRWMi9Ecm9wZG93bi50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1c2VUaGVtZSB9IGZyb20gJ0BlbW90aW9uL3JlYWN0J1xuaW1wb3J0IHN0eWxlZCBmcm9tICdAZW1vdGlvbi9zdHlsZWQnXG5pbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VNZW1vLCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgdHlwZSB7XG4gIERpc3BhdGNoLFxuICBLZXlib2FyZEV2ZW50LFxuICBSZWFjdE5vZGUsXG4gIFJlZk9iamVjdCxcbiAgU2V0U3RhdGVBY3Rpb24sXG59IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgQ2hlY2tib3ggfSBmcm9tICcuLi9DaGVja2JveCdcbmltcG9ydCB7IFBvcHVwIH0gZnJvbSAnLi4vUG9wdXAnXG5pbXBvcnQgeyBTa2VsZXRvbiB9IGZyb20gJy4uL1NrZWxldG9uJ1xuaW1wb3J0IHsgU3RhY2sgfSBmcm9tICcuLi9TdGFjaydcbmltcG9ydCB7IFRleHQgfSBmcm9tICcuLi9UZXh0J1xuaW1wb3J0IHsgRGlzcGxheU9wdGlvbiB9IGZyb20gJy4vRHJvcGRvd25PcHRpb24nXG5pbXBvcnQgeyBTZWFyY2hCYXJEcm9wZG93biB9IGZyb20gJy4vU2VhcmNoQmFyRHJvcGRvd24nXG5pbXBvcnQgeyB1c2VTZWxlY3RJbnB1dCB9IGZyb20gJy4vU2VsZWN0SW5wdXRQcm92aWRlcidcbmltcG9ydCB7IHR5cGUgRGF0YVR5cGUsIElOUFVUX1NJWkVfSEVJR0hULCB0eXBlIE9wdGlvblR5cGUgfSBmcm9tICcuL3R5cGVzJ1xuXG5jb25zdCBEUk9QRE9XTl9NQVhfSEVJR0hUID0gMjU2XG5cbmV4cG9ydCB0eXBlIERyb3Bkb3duUHJvcHMgPSB7XG4gIGNoaWxkcmVuOiBSZWFjdE5vZGVcbiAgZW1wdHlTdGF0ZTogUmVhY3ROb2RlXG4gIGRlc2NyaXB0aW9uRGlyZWN0aW9uOiAncm93JyB8ICdjb2x1bW4nXG4gIHNlYXJjaGFibGU6IGJvb2xlYW5cbiAgcGxhY2Vob2xkZXI6IHN0cmluZ1xuICBmb290ZXI/OiBSZWFjdE5vZGVcbiAgcmVmU2VsZWN0OiBSZWZPYmplY3Q8SFRNTERpdkVsZW1lbnQ+XG4gIGxvYWRNb3JlPzogUmVhY3ROb2RlXG4gIG9wdGlvbmFsSW5mb1BsYWNlbWVudDogJ2xlZnQnIHwgJ3JpZ2h0J1xuICBpc0xvYWRpbmc/OiBib29sZWFuXG4gIHNpemU6ICdzbWFsbCcgfCAnbWVkaXVtJyB8ICdsYXJnZSdcbn1cblxuZXhwb3J0IHR5cGUgQ3JlYXRlRHJvcGRvd25Qcm9wcyA9IHtcbiAgaXNFbXB0eTogYm9vbGVhblxuICBlbXB0eVN0YXRlOiBSZWFjdE5vZGVcbiAgZGVzY3JpcHRpb25EaXJlY3Rpb246ICdyb3cnIHwgJ2NvbHVtbidcbiAgbG9hZE1vcmU/OiBSZWFjdE5vZGVcbiAgb3B0aW9uYWxJbmZvUGxhY2VtZW50OiAnbGVmdCcgfCAncmlnaHQnXG4gIGRlZmF1bHRTZWFyY2hWYWx1ZTogc3RyaW5nIHwgbnVsbFxuICBpc0xvYWRpbmc/OiBib29sZWFuXG59XG5cbmNvbnN0IE5PTl9TRUFSQ0hBQkxFX0tFWVMgPSBbXG4gICdUYWInLFxuICAnICcsXG4gICdFbnRlcicsXG4gICdDYXBzTG9jaycsXG4gICdTaGlmdCcsXG4gICdBcnJvd0Rvd24nLFxuICAnQXJyb3dVcCcsXG4gICdBcnJvd0xlZnQnLFxuICAnQXJyb3dSaWdodCcsXG4gICdFc2NhcGUnLFxuXVxuXG5jb25zdCBTdHlsZWRQb3B1cCA9IHN0eWxlZChQb3B1cClgXG4gIHdpZHRoOiAxMDAlO1xuICBtaW4td2lkdGg6IDMyMHB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5vdGhlci5lbGV2YXRpb24uYmFja2dyb3VuZC5yYWlzZWR9O1xuICBjb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMubmV1dHJhbC50ZXh0fTtcbiAgYm94LXNoYWRvdzogJHsoeyB0aGVtZSB9KSA9PiBgJHt0aGVtZS5zaGFkb3dzLnJhaXNlZFswXX0sICR7dGhlbWUuc2hhZG93cy5yYWlzZWRbMV19YH07XG4gIHBhZGRpbmc6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMF19O1xuICBtYXJnaW4tYm90dG9tOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzEwXX07XG5gXG5cbmNvbnN0IERyb3Bkb3duQ29udGFpbmVyID0gc3R5bGVkKFN0YWNrKTx7ICdkYXRhLWdyb3VwZWQnOiBib29sZWFuIH0+YFxuICBtYXgtaGVpZ2h0OiAke0RST1BET1dOX01BWF9IRUlHSFR9cHg7XG4gIG92ZXJmbG93LXk6IHNjcm9sbDtcbiAgcGFkZGluZzogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVswXX07XG4gIHBhZGRpbmctYm90dG9tOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzAuNV19O1xuICBwYWRkaW5nLXRvcDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVswLjVdfTtcblxuICAmW2RhdGEtZ3JvdXBlZD1cInRydWVcIl0ge1xuICAgIHBhZGRpbmctdG9wOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzBdfTtcbiAgfVxuYFxuY29uc3QgRHJvcGRvd25Hcm91cCA9IHN0eWxlZC5idXR0b248eyAnZGF0YS1zZWxlY3Rncm91cCc6IGJvb2xlYW4gfT5gXG4gIGRpc3BsYXk6IGZsZXg7XG4gIHdpZHRoOiAxMDAlO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGxlZnQ7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGJvcmRlcjogbm9uZTtcbiAgYmFja2dyb3VuZC1jb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMubmV1dHJhbC5iYWNrZ3JvdW5kV2Vha307XG4gIHBvc2l0aW9uOiBzdGlja3k7XG4gIHRvcDogMHB4O1xuICBwYWRkaW5nLXJpZ2h0OiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzJdfTtcbiAgcGFkZGluZy1sZWZ0OiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzJdfTtcbiAgaGVpZ2h0OiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzRdfTtcbiAgdGV4dC1hbGlnbjogbGVmdDtcbiAgbWFyZ2luLWJvdHRvbTogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsnMC4yNSddfTtcblxuICAmOmZvY3VzIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5uZXV0cmFsLmJhY2tncm91bmRXZWFrfTtcbiAgICBvdXRsaW5lOiBub25lO1xuICB9XG5cbiAgJltkYXRhLXNlbGVjdGdyb3VwPSd0cnVlJ10ge1xuICAgIHBhZGRpbmctbGVmdDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsyXX07XG4gICAgYm9yZGVyLWxlZnQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMC41XX0gc29saWQgJHsoeyB0aGVtZSB9KSA9PlxuICAgICAgdGhlbWUuY29sb3JzLm5ldXRyYWwuYmFja2dyb3VuZFdlYWt9O1xuICB9XG5cbiAgJltkYXRhLXNlbGVjdGdyb3VwPSd0cnVlJ106Zm9jdXMge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwuYmFja2dyb3VuZEhvdmVyfTtcbiAgfVxuYFxuY29uc3QgRHJvcGRvd25Hcm91cFdyYXBwZXIgPSBzdHlsZWQuZGl2YFxuICBwb3NpdGlvbjogc3RpY2t5O1xuICB0b3A6IDBweDtcbmBcbmNvbnN0IERyb3Bkb3duSXRlbSA9IHN0eWxlZC5kaXY8e1xuICAnYXJpYS1zZWxlY3RlZCc6IGJvb2xlYW5cbiAgJ2FyaWEtZGlzYWJsZWQnOiBib29sZWFuXG59PmBcbiAgdGV4dC1hbGlnbjpsZWZ0O1xuICBib3JkZXI6IG5vbmU7XG4gIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm90aGVyLmVsZXZhdGlvbi5iYWNrZ3JvdW5kLnJhaXNlZH07XG5cbiAgcGFkZGluZzogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsnMS41J119ICR7KHsgdGhlbWUgfSkgPT5cbiAgICB0aGVtZS5zcGFjZVsnMiddfSAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWycxLjUnXX0gJHsoeyB0aGVtZSB9KSA9PlxuICAgIHRoZW1lLnNwYWNlWycyJ119O1xuICBtYXJnaW4tbGVmdDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsnMC41J119O1xuICBtYXJnaW4tcmlnaHQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbJzAuNSddfTtcblxuICBjb2xvcjogICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwudGV4dH07XG4gIGJvcmRlci1yYWRpdXM6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUucmFkaWkuZGVmYXVsdH07XG5cbiAgJjpob3ZlciwgOmZvY3VzIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5wcmltYXJ5LmJhY2tncm91bmR9O1xuICAgIGNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5wcmltYXJ5LnRleHR9O1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBvdXRsaW5lOiBub25lO1xuICB9XG5cbiAgJlthcmlhLXNlbGVjdGVkPSd0cnVlJ10ge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLnByaW1hcnkuYmFja2dyb3VuZH07XG4gIH1cblxuICAmW2FyaWEtZGlzYWJsZWQ9XCJ0cnVlXCJdIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5uZXV0cmFsLmJhY2tncm91bmREaXNhYmxlZH07XG4gICAgY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwudGV4dERpc2FibGVkfTtcbiAgfVxuXG4gICZbYXJpYS1kaXNhYmxlZD1cInRydWVcIl06aG92ZXIsIFthcmlhLWRpc2FibGVkPVwidHJ1ZVwiXTpmb2N1cyB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHsoeyB0aGVtZSB9KSA9PlxuICAgICAgdGhlbWUuY29sb3JzLm5ldXRyYWwuYmFja2dyb3VuZFN0cm9uZ0Rpc2FibGVkfTtcbiAgICBjb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMubmV1dHJhbC50ZXh0U3Ryb25nRGlzYWJsZWR9O1xuICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgfVxuYFxuXG5jb25zdCBQb3B1cEZvb3RlciA9IHN0eWxlZC5kaXZgXG4gIHdpZHRoOiAxMDAlO1xuICBwYWRkaW5nOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzEuNV19ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMl19XG4gICAgJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsxLjVdfSAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzJdfTtcbiAgYm94LXNoYWRvdzogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zaGFkb3dzLmRyb3Bkb3dufTtcbmBcbmNvbnN0IFN0eWxlZENoZWNrYm94ID0gc3R5bGVkKENoZWNrYm94KWBcbiAgd2lkdGg6IDEwMCU7XG4gIHBvc2l0aW9uOiBzdGF0aWM7XG4gIHRleHQtYWxpZ246IGxlZnQ7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuYCAvLyBwb2ludGVyLWV2ZW50czogbm9uZSBwcmV2ZW50cyBhbnkgZXJyb3Igd2hlbiB1c2luZyB0aGUgY2hlY2tib3ggaW4gYSBmb3JtIHNpbmNlIGl0IGlzIGFuIHVubmFtZWQgaW5wdXRcblxuY29uc3QgRW1wdHlTdGF0ZSA9IHN0eWxlZChTdGFjaylgXG4gIHBhZGRpbmc6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMl19O1xuYFxuY29uc3QgTG9hZE1vcmUgPSBzdHlsZWQoU3RhY2spYFxuICBwYWRkaW5nOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzAuNV19O1xuYFxuXG5jb25zdCBtb3ZlRm9jdXNEb3duID0gKCkgPT4ge1xuICBjb25zdCBvcHRpb25zID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcbiAgICAnI2l0ZW1zID4gZGl2W3JvbGU9XCJvcHRpb25cIl06bm90KFtkaXNhYmxlZF0pJyxcbiAgKVxuICBjb25zdCBhY3RpdmVJdGVtID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudFxuICBpZiAob3B0aW9ucykge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgb3B0aW9ucz8ubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgIGNvbnN0IGxpc3RMZW5ndGggPSBvcHRpb25zLmxlbmd0aFxuICAgICAgaWYgKGFjdGl2ZUl0ZW0gPT09IG9wdGlvbnNbaV0gJiYgYWN0aXZlSXRlbSAhPT0gb3B0aW9uc1tsaXN0TGVuZ3RoIC0gMV0pIHtcbiAgICAgICAgOyhvcHRpb25zW2kgKyAxXSBhcyBIVE1MRWxlbWVudCkuZm9jdXMoKVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuY29uc3QgbW92ZUZvY3VzVXAgPSAoKSA9PiB7XG4gIGNvbnN0IG9wdGlvbnMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFxuICAgICcjaXRlbXMgPiBkaXZbcm9sZT1cIm9wdGlvblwiXTpub3QoW2Rpc2FibGVkXSknLFxuICApXG4gIGNvbnN0IGFjdGl2ZUl0ZW0gPSBkb2N1bWVudC5hY3RpdmVFbGVtZW50XG5cbiAgaWYgKG9wdGlvbnMpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG9wdGlvbnMubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgIGlmIChhY3RpdmVJdGVtID09PSBvcHRpb25zW2ldICYmIGFjdGl2ZUl0ZW0gIT09IG9wdGlvbnNbMF0pIHtcbiAgICAgICAgOyhvcHRpb25zW2kgLSAxXSBhcyBIVE1MRWxlbWVudCkuZm9jdXMoKVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuY29uc3QgaGFuZGxlS2V5RG93blNlbGVjdCA9IChldmVudDogS2V5Ym9hcmRFdmVudDxIVE1MRGl2RWxlbWVudD4pID0+IHtcbiAgaWYgKGV2ZW50LmtleSA9PT0gJ0Fycm93RG93bicpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgbW92ZUZvY3VzRG93bigpXG4gIH1cblxuICBpZiAoZXZlbnQua2V5ID09PSAnQXJyb3dVcCcpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgbW92ZUZvY3VzVXAoKVxuICB9XG59XG5jb25zdCBoYW5kbGVDbGlja091dHNpZGUgPSAoXG4gIGV2ZW50OiBNb3VzZUV2ZW50LFxuICByZWY6IFJlZk9iamVjdDxIVE1MRGl2RWxlbWVudD4sXG4gIHNldElzRHJvcGRvd25WaXNpYmlsZTogRGlzcGF0Y2g8U2V0U3RhdGVBY3Rpb248Ym9vbGVhbj4+LFxuICByZWZTZWxlY3Q6IFJlZk9iamVjdDxIVE1MRGl2RWxlbWVudD4sXG4gIG9uU2VhcmNoOiBEaXNwYXRjaDxTZXRTdGF0ZUFjdGlvbjxEYXRhVHlwZT4+LFxuICBvcHRpb25zOiBEYXRhVHlwZSxcbikgPT4ge1xuICBpZiAoXG4gICAgcmVmLmN1cnJlbnQgJiZcbiAgICAhcmVmLmN1cnJlbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0IGFzIE5vZGUpICYmXG4gICAgIXJlZlNlbGVjdC5jdXJyZW50Py5jb250YWlucyhldmVudC50YXJnZXQgYXMgTm9kZSlcbiAgKSB7XG4gICAgc2V0SXNEcm9wZG93blZpc2liaWxlKGZhbHNlKSAvLyBoaWRlIGRyb3Bkb3duIHdoZW4gY2xpY2tpbmcgb3V0c2lkZSBvZiB0aGUgZHJvcGRvd25cbiAgICBvblNlYXJjaChvcHRpb25zKSAvLyByZXNldCBkaXNwbGF5ZWQgb3B0aW9ucyB0byBkZWZhdWx0IHdoZW4gZHJvcGRvd24gaXMgaGlkZGVuXG4gIH1cbn1cblxuY29uc3QgaGFuZGxlS2V5RG93biA9IChcbiAgZXZlbnQ6IGdsb2JhbFRoaXMuS2V5Ym9hcmRFdmVudCxcbiAgcmVmOiBSZWZPYmplY3Q8SFRNTERpdkVsZW1lbnQ+LFxuICBvcHRpb25zOiBEYXRhVHlwZSxcbiAgc2VhcmNoQmFyQWN0aXZlOiBib29sZWFuLFxuICBzZXRTZWFyY2g6IERpc3BhdGNoPFNldFN0YXRlQWN0aW9uPHN0cmluZz4+LFxuICBzZXREZWZhdWx0U2VhcmNoOiBEaXNwYXRjaDxTZXRTdGF0ZUFjdGlvbjxzdHJpbmcgfCBudWxsPj4sXG4gIHNlYXJjaDogc3RyaW5nLFxuKSA9PiB7XG4gIC8vIERlYWxzIHdpdGggZGVmYXVsdCBzZWFyY2hcbiAgaWYgKFxuICAgIHJlZi5jdXJyZW50ICYmXG4gICAgIXNlYXJjaEJhckFjdGl2ZSAmJlxuICAgICFOT05fU0VBUkNIQUJMRV9LRVlTLmluY2x1ZGVzKGV2ZW50LmtleSkgJiZcbiAgICBkb2N1bWVudC5hY3RpdmVFbGVtZW50Py5hcmlhTGFiZWwgIT09ICdzZWFyY2gtYmFyJ1xuICApIHtcbiAgICBjb25zdCBjdXJyZW50U2VhcmNoID0gc2VhcmNoICsgZXZlbnQua2V5XG4gICAgc2V0U2VhcmNoKGN1cnJlbnRTZWFyY2gpXG4gICAgcmVmLmN1cnJlbnQuZm9jdXMoKVxuICAgIGlmICghQXJyYXkuaXNBcnJheShvcHRpb25zKSkge1xuICAgICAgY29uc3QgY2xvc2VzdE9wdGlvbnMgPSB7IC4uLm9wdGlvbnMgfVxuICAgICAgT2JqZWN0LmtleXMoY2xvc2VzdE9wdGlvbnMpLm1hcCgoZ3JvdXA6IHN0cmluZykgPT4ge1xuICAgICAgICBjbG9zZXN0T3B0aW9uc1tncm91cF0gPSBjbG9zZXN0T3B0aW9uc1tncm91cF0uZmlsdGVyKG9wdGlvbiA9PlxuICAgICAgICAgIG9wdGlvbi5zZWFyY2hUZXh0XG4gICAgICAgICAgICA/IG9wdGlvbi5zZWFyY2hUZXh0LnRvTG9jYWxlTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChjdXJyZW50U2VhcmNoKVxuICAgICAgICAgICAgOiBvcHRpb24udmFsdWUudG9Mb2NhbGVMb3dlckNhc2UoKS5zdGFydHNXaXRoKGN1cnJlbnRTZWFyY2gpLFxuICAgICAgICApXG5cbiAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgIH0pXG4gICAgICBjb25zdCBjbG9zZXN0T3B0aW9uID0gY2xvc2VzdE9wdGlvbnNbT2JqZWN0LmtleXMoY2xvc2VzdE9wdGlvbnMpWzBdXVswXVxuICAgICAgaWYgKGNsb3Nlc3RPcHRpb24pIHtcbiAgICAgICAgc2V0RGVmYXVsdFNlYXJjaChjbG9zZXN0T3B0aW9uLnNlYXJjaFRleHQgPz8gY2xvc2VzdE9wdGlvbi52YWx1ZSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNldERlZmF1bHRTZWFyY2gobnVsbClcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgY2xvc2VzdE9wdGlvbiA9IFsuLi5vcHRpb25zXS5maWx0ZXIob3B0aW9uID0+XG4gICAgICAgIG9wdGlvbi5zZWFyY2hUZXh0XG4gICAgICAgICAgPyBvcHRpb24uc2VhcmNoVGV4dC50b0xvY2FsZUxvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoY3VycmVudFNlYXJjaClcbiAgICAgICAgICA6IG9wdGlvbi52YWx1ZS50b0xvY2FsZUxvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoY3VycmVudFNlYXJjaCksXG4gICAgICApWzBdXG4gICAgICBpZiAoY2xvc2VzdE9wdGlvbikge1xuICAgICAgICBzZXREZWZhdWx0U2VhcmNoKGNsb3Nlc3RPcHRpb24uc2VhcmNoVGV4dCA/PyBjbG9zZXN0T3B0aW9uLnZhbHVlKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2V0RGVmYXVsdFNlYXJjaChudWxsKVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuY29uc3QgQ3JlYXRlRHJvcGRvd24gPSAoe1xuICBpc0VtcHR5LFxuICBlbXB0eVN0YXRlLFxuICBkZXNjcmlwdGlvbkRpcmVjdGlvbixcbiAgbG9hZE1vcmUsXG4gIG9wdGlvbmFsSW5mb1BsYWNlbWVudCxcbiAgZGVmYXVsdFNlYXJjaFZhbHVlLFxuICBpc0xvYWRpbmcsXG59OiBDcmVhdGVEcm9wZG93blByb3BzKSA9PiB7XG4gIGNvbnN0IHtcbiAgICBzZXRJc0Ryb3Bkb3duVmlzaWJsZSxcbiAgICBvbkNoYW5nZSxcbiAgICBvcHRpb25zLFxuICAgIG11bHRpc2VsZWN0LFxuICAgIHNlbGVjdEFsbCxcbiAgICBzZWxlY3RBbGxHcm91cCxcbiAgICBkaXNwbGF5ZWRPcHRpb25zLFxuICAgIHNldFNlbGVjdGVkRGF0YSxcbiAgICBzZWxlY3RlZERhdGEsXG4gIH0gPSB1c2VTZWxlY3RJbnB1dCgpXG4gIGNvbnN0IGZvY3VzZWRJdGVtUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGRlZmF1bHRTZWFyY2hWYWx1ZSAmJiBmb2N1c2VkSXRlbVJlZj8uY3VycmVudCkge1xuICAgICAgZm9jdXNlZEl0ZW1SZWYuY3VycmVudC5mb2N1cygpXG4gICAgfVxuICB9LCBbZGVmYXVsdFNlYXJjaFZhbHVlXSlcblxuICBpZiAoaXNFbXB0eSkge1xuICAgIHJldHVybiAoXG4gICAgICA8RW1wdHlTdGF0ZSBnYXA9ezJ9IGFsaWduSXRlbXM9XCJjZW50ZXJcIj5cbiAgICAgICAge2VtcHR5U3RhdGUgPz8gKFxuICAgICAgICAgIDxUZXh0IHZhcmlhbnQ9XCJib2R5U3Ryb25nXCIgYXM9XCJwXCI+XG4gICAgICAgICAgICBObyBvcHRpb25zXG4gICAgICAgICAgPC9UZXh0PlxuICAgICAgICApfVxuICAgICAgPC9FbXB0eVN0YXRlPlxuICAgIClcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZUNsaWNrID0gKGNsaWNrZWRPcHRpb246IE9wdGlvblR5cGUsIGdyb3VwPzogc3RyaW5nKSA9PiB7XG4gICAgc2V0U2VsZWN0ZWREYXRhKHsgdHlwZTogJ3NlbGVjdE9wdGlvbicsIGNsaWNrZWRPcHRpb24sIGdyb3VwIH0pXG4gICAgaWYgKG11bHRpc2VsZWN0KSB7XG4gICAgICBpZiAoc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzLmluY2x1ZGVzKGNsaWNrZWRPcHRpb24udmFsdWUpKSB7XG4gICAgICAgIG9uQ2hhbmdlPy4oXG4gICAgICAgICAgc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzLmZpbHRlcihcbiAgICAgICAgICAgIHZhbCA9PiB2YWwgIT09IGNsaWNrZWRPcHRpb24udmFsdWUsXG4gICAgICAgICAgKSxcbiAgICAgICAgKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb25DaGFuZ2U/LihbLi4uc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzLCBjbGlja2VkT3B0aW9uLnZhbHVlXSlcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgb25DaGFuZ2U/LihjbGlja2VkT3B0aW9uLnZhbHVlKVxuICAgIH1cbiAgICBzZXRJc0Ryb3Bkb3duVmlzaWJsZShtdWx0aXNlbGVjdCkgLy8gaGlkZSB0aGUgZHJvcGRvd24gb24gY2xpY2sgd2hlbiBzaW5nbGUgc2VsZWN0IG9ubHlcbiAgfVxuXG4gIGNvbnN0IHNlbGVjdEFsbE9wdGlvbnMgPSAoKSA9PiB7XG4gICAgaWYgKG11bHRpc2VsZWN0KSB7XG4gICAgICBzZXRTZWxlY3RlZERhdGEoeyB0eXBlOiAnc2VsZWN0QWxsJyB9KVxuICAgICAgaWYgKHNlbGVjdGVkRGF0YS5hbGxTZWxlY3RlZCAmJiBvbkNoYW5nZSkge1xuICAgICAgICBvbkNoYW5nZShbXSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGFsbFZhbHVlczogT3B0aW9uVHlwZVtdID0gW11cbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KG9wdGlvbnMpKSB7XG4gICAgICAgICAgT2JqZWN0LmtleXMob3B0aW9ucykubWFwKChncm91cDogc3RyaW5nKSA9PlxuICAgICAgICAgICAgb3B0aW9uc1tncm91cF0ubWFwKG9wdGlvbiA9PiB7XG4gICAgICAgICAgICAgIGlmICghb3B0aW9uLmRpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgYWxsVmFsdWVzLnB1c2gob3B0aW9uKVxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIClcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvcHRpb25zLm1hcChvcHRpb24gPT4gYWxsVmFsdWVzLnB1c2gob3B0aW9uKSlcbiAgICAgICAgfVxuICAgICAgICBvbkNoYW5nZT8uKGFsbFZhbHVlcy5tYXAodmFsdWUgPT4gdmFsdWUudmFsdWUpKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGhhbmRsZVNlbGVjdEdyb3VwID0gKGdyb3VwOiBzdHJpbmcpID0+IHtcbiAgICBpZiAobXVsdGlzZWxlY3QpIHtcbiAgICAgIHNldFNlbGVjdGVkRGF0YSh7IHR5cGU6ICdzZWxlY3RHcm91cCcsIHNlbGVjdGVkR3JvdXA6IGdyb3VwIH0pXG4gICAgICBpZiAoIUFycmF5LmlzQXJyYXkob3B0aW9ucykpIHtcbiAgICAgICAgaWYgKHNlbGVjdGVkRGF0YS5zZWxlY3RlZEdyb3Vwcy5pbmNsdWRlcyhncm91cCkpIHtcbiAgICAgICAgICBjb25zdCBuZXdTZWxlY3RlZFZhbHVlcyA9IFsuLi5zZWxlY3RlZERhdGEuc2VsZWN0ZWRWYWx1ZXNdLmZpbHRlcihcbiAgICAgICAgICAgIHNlbGVjdGVkVmFsdWUgPT5cbiAgICAgICAgICAgICAgIW9wdGlvbnNbZ3JvdXBdLmZpbmQob3B0aW9uID0+IG9wdGlvbi52YWx1ZSA9PT0gc2VsZWN0ZWRWYWx1ZSksXG4gICAgICAgICAgKVxuICAgICAgICAgIG9uQ2hhbmdlPy4obmV3U2VsZWN0ZWRWYWx1ZXMpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgbmV3U2VsZWN0ZWRWYWx1ZXMgPSBbLi4uc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzXVxuXG4gICAgICAgICAgb3B0aW9uc1tncm91cF0ubWFwKG9wdGlvbiA9PlxuICAgICAgICAgICAgbmV3U2VsZWN0ZWRWYWx1ZXMuaW5jbHVkZXMob3B0aW9uLnZhbHVlKSB8fCBvcHRpb24uZGlzYWJsZWRcbiAgICAgICAgICAgICAgPyBudWxsXG4gICAgICAgICAgICAgIDogbmV3U2VsZWN0ZWRWYWx1ZXMucHVzaChvcHRpb24udmFsdWUpLFxuICAgICAgICAgIClcbiAgICAgICAgICBvbkNoYW5nZT8uKG5ld1NlbGVjdGVkVmFsdWVzKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuICFBcnJheS5pc0FycmF5KGRpc3BsYXllZE9wdGlvbnMpID8gKFxuICAgIDxEcm9wZG93bkNvbnRhaW5lclxuICAgICAgcm9sZT1cImxpc3Rib3hcIlxuICAgICAgaWQ9XCJzZWxlY3QtZHJvcGRvd25cIlxuICAgICAgb25LZXlEb3duPXtoYW5kbGVLZXlEb3duU2VsZWN0fVxuICAgICAgZGF0YS1ncm91cGVkXG4gICAgPlxuICAgICAge2lzTG9hZGluZyA/IChcbiAgICAgICAgPFNrZWxldG9uIHZhcmlhbnQ9XCJibG9ja1wiIC8+XG4gICAgICApIDogKFxuICAgICAgICA8PlxuICAgICAgICAgIHtzZWxlY3RBbGwgJiYgbXVsdGlzZWxlY3QgPyAoXG4gICAgICAgICAgICA8U3RhY2sgaWQ9XCJpdGVtc1wiPlxuICAgICAgICAgICAgICA8RHJvcGRvd25JdGVtXG4gICAgICAgICAgICAgICAgYXJpYS1kaXNhYmxlZD17ZmFsc2V9XG4gICAgICAgICAgICAgICAgYXJpYS1zZWxlY3RlZD17c2VsZWN0ZWREYXRhLmFsbFNlbGVjdGVkfVxuICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJzZWxlY3QtYWxsXCJcbiAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD1cInNlbGVjdC1hbGxcIlxuICAgICAgICAgICAgICAgIGlkPVwic2VsZWN0LWFsbFwiXG4gICAgICAgICAgICAgICAgdGFiSW5kZXg9ezB9XG4gICAgICAgICAgICAgICAgcm9sZT1cIm9wdGlvblwiXG4gICAgICAgICAgICAgICAgb25LZXlEb3duPXtldmVudCA9PlxuICAgICAgICAgICAgICAgICAgWycgJywgJ0VudGVyJ10uaW5jbHVkZXMoZXZlbnQua2V5KSA/IHNlbGVjdEFsbE9wdGlvbnMoKSA6IG51bGxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgb25DbGljaz17c2VsZWN0QWxsT3B0aW9uc31cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxTdHlsZWRDaGVja2JveFxuICAgICAgICAgICAgICAgICAgY2hlY2tlZD17c2VsZWN0ZWREYXRhLmFsbFNlbGVjdGVkfVxuICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgdmFsdWU9XCJzZWxlY3QtYWxsXCJcbiAgICAgICAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwic2VsZWN0LWFsbC1jaGVja2JveFwiXG4gICAgICAgICAgICAgICAgICB0YWJJbmRleD17LTF9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPFN0YWNrIGRpcmVjdGlvbj1cImNvbHVtblwiPlxuICAgICAgICAgICAgICAgICAgICA8VGV4dCBhcz1cInNwYW5cIiB2YXJpYW50PVwiYm9keVwiIHBsYWNlbWVudD1cImxlZnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICB7c2VsZWN0QWxsLmxhYmVsfVxuICAgICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgICAgIDxUZXh0XG4gICAgICAgICAgICAgICAgICAgICAgYXM9XCJzcGFuXCJcbiAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50PVwiYm9keVNtYWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICBzZW50aW1lbnQ9XCJuZXV0cmFsXCJcbiAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJsZWZ0XCJcbiAgICAgICAgICAgICAgICAgICAgICBwcm9taW5lbmNlPVwid2Vha1wiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7c2VsZWN0QWxsLmRlc2NyaXB0aW9ufVxuICAgICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgICA8L1N0YWNrPlxuICAgICAgICAgICAgICAgIDwvU3R5bGVkQ2hlY2tib3g+XG4gICAgICAgICAgICAgIDwvRHJvcGRvd25JdGVtPlxuICAgICAgICAgICAgPC9TdGFjaz5cbiAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICB7T2JqZWN0LmtleXMoZGlzcGxheWVkT3B0aW9ucykubWFwKChncm91cCwgaW5kZXgpID0+IChcbiAgICAgICAgICAgIDxTdGFjayBrZXk9e2dyb3VwfSBnYXA9ezAuMjV9PlxuICAgICAgICAgICAgICB7ZGlzcGxheWVkT3B0aW9uc1tncm91cF0ubGVuZ3RoID4gMCA/IChcbiAgICAgICAgICAgICAgICA8RHJvcGRvd25Hcm91cFdyYXBwZXIgaWQ9e3NlbGVjdEFsbEdyb3VwID8gJ2l0ZW1zJyA6IHVuZGVmaW5lZH0+XG4gICAgICAgICAgICAgICAgICB7Z3JvdXAgPyAoXG4gICAgICAgICAgICAgICAgICAgIDxEcm9wZG93bkdyb3VwXG4gICAgICAgICAgICAgICAgICAgICAga2V5PXtncm91cH1cbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICB0YWJJbmRleD17c2VsZWN0QWxsR3JvdXAgPyAwIDogLTF9XG4gICAgICAgICAgICAgICAgICAgICAgb25LZXlEb3duPXtldmVudCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoWycgJywgJ0VudGVyJ10uaW5jbHVkZXMoZXZlbnQua2V5KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZVNlbGVjdEdyb3VwKGdyb3VwKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgZGF0YS1zZWxlY3Rncm91cD17c2VsZWN0QWxsR3JvdXB9XG4gICAgICAgICAgICAgICAgICAgICAgcm9sZT1cImdyb3VwXCJcbiAgICAgICAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD17YGdyb3VwLSR7aW5kZXh9YH1cbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0QWxsR3JvdXAgPyBoYW5kbGVTZWxlY3RHcm91cChncm91cCkgOiBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAge3NlbGVjdEFsbEdyb3VwID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgPFN0eWxlZENoZWNrYm94XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e3NlbGVjdGVkRGF0YS5zZWxlY3RlZEdyb3Vwcy5pbmNsdWRlcyhncm91cCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2dyb3VwfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD1cInNlbGVjdC1ncm91cFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRhYkluZGV4PXstMX1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPFRleHQgdmFyaWFudD1cImNhcHRpb25cIiBhcz1cInNwYW5cIiBwbGFjZW1lbnQ9XCJsZWZ0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2dyb3VwLnRvVXBwZXJDYXNlKCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvU3R5bGVkQ2hlY2tib3g+XG4gICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxUZXh0XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJjYXB0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYXM9XCJzcGFuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwibGVmdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNlbnRpbWVudD1cIm5ldXRyYWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7Z3JvdXAudG9VcHBlckNhc2UoKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICA8L0Ryb3Bkb3duR3JvdXA+XG4gICAgICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgICAgICA8L0Ryb3Bkb3duR3JvdXBXcmFwcGVyPlxuICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgICAgPFN0YWNrIGlkPVwiaXRlbXNcIiBnYXA9XCIwLjI1XCI+XG4gICAgICAgICAgICAgICAge2Rpc3BsYXllZE9wdGlvbnNbZ3JvdXBdLm1hcCgob3B0aW9uLCBpbmRleE9wdGlvbikgPT4gKFxuICAgICAgICAgICAgICAgICAgPERyb3Bkb3duSXRlbVxuICAgICAgICAgICAgICAgICAgICBrZXk9e29wdGlvbi52YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgYXJpYS1kaXNhYmxlZD17ISFvcHRpb24uZGlzYWJsZWR9XG4gICAgICAgICAgICAgICAgICAgIHRhYkluZGV4PXshb3B0aW9uLmRpc2FibGVkID8gMCA6IC0xfVxuICAgICAgICAgICAgICAgICAgICBhcmlhLXNlbGVjdGVkPXtcbiAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZERhdGEuc2VsZWN0ZWRWYWx1ZXMuaW5jbHVkZXMob3B0aW9uLnZhbHVlKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICFvcHRpb24uZGlzYWJsZWRcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPXtvcHRpb24udmFsdWV9XG4gICAgICAgICAgICAgICAgICAgIGRhdGEtdGVzdGlkPXtgb3B0aW9uLSR7b3B0aW9uLnZhbHVlfWB9XG4gICAgICAgICAgICAgICAgICAgIGlkPXtgb3B0aW9uLSR7aW5kZXhPcHRpb259YH1cbiAgICAgICAgICAgICAgICAgICAgcm9sZT1cIm9wdGlvblwiXG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoIW9wdGlvbi5kaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlQ2xpY2sob3B0aW9uLCBncm91cClcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgIG9uS2V5RG93bj17ZXZlbnQgPT5cbiAgICAgICAgICAgICAgICAgICAgICBbJyAnLCAnRW50ZXInXS5pbmNsdWRlcyhldmVudC5rZXkpXG4gICAgICAgICAgICAgICAgICAgICAgICA/IGhhbmRsZUNsaWNrKG9wdGlvbiwgZ3JvdXApXG4gICAgICAgICAgICAgICAgICAgICAgICA6IG51bGxcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZWY9e1xuICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbi52YWx1ZSA9PT0gZGVmYXVsdFNlYXJjaFZhbHVlIHx8XG4gICAgICAgICAgICAgICAgICAgICAgb3B0aW9uLnNlYXJjaFRleHQgPT09IGRlZmF1bHRTZWFyY2hWYWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgPyBmb2N1c2VkSXRlbVJlZlxuICAgICAgICAgICAgICAgICAgICAgICAgOiBudWxsXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge211bHRpc2VsZWN0ID8gKFxuICAgICAgICAgICAgICAgICAgICAgIDxTdHlsZWRDaGVja2JveFxuICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tlZD17XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkRGF0YS5zZWxlY3RlZFZhbHVlcy5pbmNsdWRlcyhvcHRpb24udmFsdWUpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICFvcHRpb24uZGlzYWJsZWRcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtvcHRpb24uZGlzYWJsZWR9XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17b3B0aW9uLnZhbHVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgdGFiSW5kZXg9ey0xfVxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxEaXNwbGF5T3B0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbj17b3B0aW9ufVxuICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbkRpcmVjdGlvbj17ZGVzY3JpcHRpb25EaXJlY3Rpb259XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsSW5mb1BsYWNlbWVudD17b3B0aW9uYWxJbmZvUGxhY2VtZW50fVxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8L1N0eWxlZENoZWNrYm94PlxuICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgIDxEaXNwbGF5T3B0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb249e29wdGlvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uRGlyZWN0aW9uPXtkZXNjcmlwdGlvbkRpcmVjdGlvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsSW5mb1BsYWNlbWVudD17b3B0aW9uYWxJbmZvUGxhY2VtZW50fVxuICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICA8L0Ryb3Bkb3duSXRlbT5cbiAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgPC9TdGFjaz5cbiAgICAgICAgICAgIDwvU3RhY2s+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvPlxuICAgICAgKX1cbiAgICAgIHtsb2FkTW9yZSA/IDxMb2FkTW9yZT57bG9hZE1vcmV9PC9Mb2FkTW9yZT4gOiBudWxsfVxuICAgIDwvRHJvcGRvd25Db250YWluZXI+XG4gICkgOiAoXG4gICAgPERyb3Bkb3duQ29udGFpbmVyXG4gICAgICByb2xlPVwibGlzdGJveFwiXG4gICAgICB0YWJJbmRleD17LTF9XG4gICAgICBpZD1cInNlbGVjdC1kcm9wZG93blwiXG4gICAgICBvbktleURvd249e2hhbmRsZUtleURvd25TZWxlY3R9XG4gICAgICBnYXA9ezAuMjV9XG4gICAgICBkYXRhLWdyb3VwZWQ9e2ZhbHNlfVxuICAgID5cbiAgICAgIHtzZWxlY3RBbGwgJiYgbXVsdGlzZWxlY3QgPyAoXG4gICAgICAgIDxTdGFjayBpZD1cIml0ZW1zXCIgZ2FwPXswLjI1fSB0YWJJbmRleD17LTF9PlxuICAgICAgICAgIDxEcm9wZG93bkl0ZW1cbiAgICAgICAgICAgIGFyaWEtZGlzYWJsZWQ9e2ZhbHNlfVxuICAgICAgICAgICAgYXJpYS1zZWxlY3RlZD17c2VsZWN0ZWREYXRhLmFsbFNlbGVjdGVkfVxuICAgICAgICAgICAgYXJpYS1sYWJlbD1cInNlbGVjdC1hbGxcIlxuICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJzZWxlY3QtYWxsXCJcbiAgICAgICAgICAgIHRhYkluZGV4PXswfVxuICAgICAgICAgICAgcm9sZT1cIm9wdGlvblwiXG4gICAgICAgICAgICBvbktleURvd249e2V2ZW50ID0+XG4gICAgICAgICAgICAgIFsnICcsICdFbnRlciddLmluY2x1ZGVzKGV2ZW50LmtleSkgPyBzZWxlY3RBbGxPcHRpb25zKCkgOiBudWxsXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvbkNsaWNrPXtzZWxlY3RBbGxPcHRpb25zfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxTdHlsZWRDaGVja2JveFxuICAgICAgICAgICAgICBjaGVja2VkPXtzZWxlY3RlZERhdGEuYWxsU2VsZWN0ZWR9XG4gICAgICAgICAgICAgIGRpc2FibGVkPXtmYWxzZX1cbiAgICAgICAgICAgICAgdmFsdWU9XCJzZWxlY3QtYWxsXCJcbiAgICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJzZWxlY3QtYWxsLWNoZWNrYm94XCJcbiAgICAgICAgICAgICAgdGFiSW5kZXg9ey0xfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8U3RhY2sgZGlyZWN0aW9uPVwiY29sdW1uXCI+XG4gICAgICAgICAgICAgICAgPFRleHQgYXM9XCJzcGFuXCIgdmFyaWFudD1cImJvZHlcIiBwbGFjZW1lbnQ9XCJsZWZ0XCI+XG4gICAgICAgICAgICAgICAgICB7c2VsZWN0QWxsLmxhYmVsfVxuICAgICAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgICAgICA8VGV4dFxuICAgICAgICAgICAgICAgICAgYXM9XCJzcGFuXCJcbiAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJib2R5U21hbGxcIlxuICAgICAgICAgICAgICAgICAgc2VudGltZW50PVwibmV1dHJhbFwiXG4gICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJsZWZ0XCJcbiAgICAgICAgICAgICAgICAgIHByb21pbmVuY2U9XCJ3ZWFrXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICB7c2VsZWN0QWxsLmRlc2NyaXB0aW9ufVxuICAgICAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgICAgPC9TdGFjaz5cbiAgICAgICAgICAgIDwvU3R5bGVkQ2hlY2tib3g+XG4gICAgICAgICAgPC9Ecm9wZG93bkl0ZW0+XG4gICAgICAgIDwvU3RhY2s+XG4gICAgICApIDogbnVsbH1cbiAgICAgIDxTdGFjayBpZD1cIml0ZW1zXCIgZ2FwPXswLjI1fT5cbiAgICAgICAge2lzTG9hZGluZyA/IChcbiAgICAgICAgICA8U2tlbGV0b24gdmFyaWFudD1cImJsb2NrXCIgLz5cbiAgICAgICAgKSA6IChcbiAgICAgICAgICBkaXNwbGF5ZWRPcHRpb25zLm1hcCgob3B0aW9uLCBpbmRleCkgPT4gKFxuICAgICAgICAgICAgPERyb3Bkb3duSXRlbVxuICAgICAgICAgICAgICBrZXk9e29wdGlvbi52YWx1ZX1cbiAgICAgICAgICAgICAgYXJpYS1kaXNhYmxlZD17ISFvcHRpb24uZGlzYWJsZWR9XG4gICAgICAgICAgICAgIGFyaWEtc2VsZWN0ZWQ9e1xuICAgICAgICAgICAgICAgIHNlbGVjdGVkRGF0YS5zZWxlY3RlZFZhbHVlcy5pbmNsdWRlcyhvcHRpb24udmFsdWUpICYmXG4gICAgICAgICAgICAgICAgIW9wdGlvbi5kaXNhYmxlZFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIW9wdGlvbi5kaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgICAgaGFuZGxlQ2xpY2sob3B0aW9uKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgYXJpYS1sYWJlbD17b3B0aW9uLnZhbHVlfVxuICAgICAgICAgICAgICBkYXRhLXRlc3RpZD17YG9wdGlvbi0ke29wdGlvbi52YWx1ZX1gfVxuICAgICAgICAgICAgICBpZD17YG9wdGlvbi0ke2luZGV4fWB9XG4gICAgICAgICAgICAgIHJvbGU9XCJvcHRpb25cIlxuICAgICAgICAgICAgICB0YWJJbmRleD17IW9wdGlvbi5kaXNhYmxlZCA/IDAgOiAtMX1cbiAgICAgICAgICAgICAgcmVmPXtcbiAgICAgICAgICAgICAgICBvcHRpb24udmFsdWUgPT09IGRlZmF1bHRTZWFyY2hWYWx1ZSB8fFxuICAgICAgICAgICAgICAgIG9wdGlvbi5zZWFyY2hUZXh0ID09PSBkZWZhdWx0U2VhcmNoVmFsdWVcbiAgICAgICAgICAgICAgICAgID8gZm9jdXNlZEl0ZW1SZWZcbiAgICAgICAgICAgICAgICAgIDogbnVsbFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIG9uS2V5RG93bj17ZXZlbnQgPT5cbiAgICAgICAgICAgICAgICBbJyAnLCAnRW50ZXInXS5pbmNsdWRlcyhldmVudC5rZXkpID8gaGFuZGxlQ2xpY2sob3B0aW9uKSA6IG51bGxcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7bXVsdGlzZWxlY3QgPyAoXG4gICAgICAgICAgICAgICAgPFN0eWxlZENoZWNrYm94XG4gICAgICAgICAgICAgICAgICBjaGVja2VkPXtcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzLmluY2x1ZGVzKG9wdGlvbi52YWx1ZSkgJiZcbiAgICAgICAgICAgICAgICAgICAgIW9wdGlvbi5kaXNhYmxlZFxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e29wdGlvbi5kaXNhYmxlZH1cbiAgICAgICAgICAgICAgICAgIHZhbHVlPXtvcHRpb24udmFsdWV9XG4gICAgICAgICAgICAgICAgICB0YWJJbmRleD17LTF9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPERpc3BsYXlPcHRpb25cbiAgICAgICAgICAgICAgICAgICAgb3B0aW9uPXtvcHRpb259XG4gICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uRGlyZWN0aW9uPXtkZXNjcmlwdGlvbkRpcmVjdGlvbn1cbiAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWxJbmZvUGxhY2VtZW50PXtvcHRpb25hbEluZm9QbGFjZW1lbnR9XG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvU3R5bGVkQ2hlY2tib3g+XG4gICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgPERpc3BsYXlPcHRpb25cbiAgICAgICAgICAgICAgICAgIG9wdGlvbj17b3B0aW9ufVxuICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb25EaXJlY3Rpb249e2Rlc2NyaXB0aW9uRGlyZWN0aW9ufVxuICAgICAgICAgICAgICAgICAgb3B0aW9uYWxJbmZvUGxhY2VtZW50PXtvcHRpb25hbEluZm9QbGFjZW1lbnR9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvRHJvcGRvd25JdGVtPlxuICAgICAgICAgICkpXG4gICAgICAgICl9XG4gICAgICAgIHtsb2FkTW9yZSA/IDxMb2FkTW9yZT57bG9hZE1vcmV9PC9Mb2FkTW9yZT4gOiBudWxsfVxuICAgICAgPC9TdGFjaz5cbiAgICA8L0Ryb3Bkb3duQ29udGFpbmVyPlxuICApXG59XG5leHBvcnQgY29uc3QgRHJvcGRvd24gPSAoe1xuICBjaGlsZHJlbixcbiAgZW1wdHlTdGF0ZSxcbiAgZGVzY3JpcHRpb25EaXJlY3Rpb24sXG4gIHNlYXJjaGFibGUsXG4gIHBsYWNlaG9sZGVyLFxuICBmb290ZXIsXG4gIHJlZlNlbGVjdCxcbiAgbG9hZE1vcmUsXG4gIG9wdGlvbmFsSW5mb1BsYWNlbWVudCxcbiAgaXNMb2FkaW5nLFxuICBzaXplLFxufTogRHJvcGRvd25Qcm9wcykgPT4ge1xuICBjb25zdCB7XG4gICAgc2V0SXNEcm9wZG93blZpc2libGUsXG4gICAgaXNEcm9wZG93blZpc2libGUsXG4gICAgb25TZWFyY2gsXG4gICAgc2VhcmNoSW5wdXQsXG4gICAgb3B0aW9ucyxcbiAgICBkaXNwbGF5ZWRPcHRpb25zLFxuICB9ID0gdXNlU2VsZWN0SW5wdXQoKVxuICBjb25zdCB0aGVtZSA9IHVzZVRoZW1lKClcbiAgY29uc3QgW3NlYXJjaEJhckFjdGl2ZSwgc2V0U2VhcmNoQmFyQWN0aXZlXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbZGVmYXVsdFNlYXJjaFZhbHVlLCBzZXREZWZhdWx0U2VhcmNoXSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bGw+KG51bGwpXG4gIGNvbnN0IHJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcbiAgY29uc3QgW3NlYXJjaCwgc2V0U2VhcmNoXSA9IHVzZVN0YXRlPHN0cmluZz4oJycpXG4gIGNvbnN0IFttYXhXaWR0aCwgc2V0V2lkdGhdID0gdXNlU3RhdGU8c3RyaW5nIHwgbnVtYmVyPigpXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAocmVmU2VsZWN0LmN1cnJlbnQgJiYgaXNEcm9wZG93blZpc2libGUpIHtcbiAgICAgIGNvbnN0IHBvc2l0aW9uID1cbiAgICAgICAgcmVmU2VsZWN0LmN1cnJlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuYm90dG9tICtcbiAgICAgICAgRFJPUERPV05fTUFYX0hFSUdIVCArXG4gICAgICAgIElOUFVUX1NJWkVfSEVJR0hUW3NpemVdICtcbiAgICAgICAgcGFyc2VJbnQodGhlbWUuc3BhY2VbJzUnXSwgMTApXG4gICAgICBjb25zdCBvdmVyZmxvdyA9IHBvc2l0aW9uIC0gd2luZG93LmlubmVySGVpZ2h0XG4gICAgICBpZiAob3ZlcmZsb3cgPiAwKSB7XG4gICAgICAgIGNvbnN0IG1vZGFsRWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdiYWNrZHJvcC1tb2RhbCcpXG5cbiAgICAgICAgaWYgKG1vZGFsRWxlbWVudCkge1xuICAgICAgICAgIG1vZGFsRWxlbWVudC5zY3JvbGxCeSh7IHRvcDogb3ZlcmZsb3csIGJlaGF2aW9yOiAnc21vb3RoJyB9KVxuICAgICAgICB9IGVsc2Ugd2luZG93LnNjcm9sbEJ5KHsgdG9wOiBvdmVyZmxvdywgYmVoYXZpb3I6ICdzbW9vdGgnIH0pXG4gICAgICB9XG4gICAgfVxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9leGhhdXN0aXZlLWRlcHNcbiAgfSwgW2lzRHJvcGRvd25WaXNpYmxlLCByZWZTZWxlY3QsIHNpemUsIHJlZi5jdXJyZW50XSlcblxuICBjb25zdCByZXNpemVEcm9wZG93biA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoXG4gICAgICByZWZTZWxlY3QuY3VycmVudCAmJlxuICAgICAgcmVmU2VsZWN0LmN1cnJlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGggPiAwXG4gICAgKSB7XG4gICAgICBzZXRXaWR0aChyZWZTZWxlY3QuY3VycmVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aClcbiAgICB9XG4gIH0sIFtyZWZTZWxlY3RdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgcmVzaXplRHJvcGRvd24oKVxuXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHJlc2l6ZURyb3Bkb3duKVxuXG4gICAgcmV0dXJuICgpID0+IHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCByZXNpemVEcm9wZG93bilcbiAgfSwgW3Jlc2l6ZURyb3Bkb3duXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghc2VhcmNoSW5wdXQpIHtcbiAgICAgIG9uU2VhcmNoKG9wdGlvbnMpXG4gICAgfVxuICB9LCBbb25TZWFyY2gsIG9wdGlvbnMsIHNlYXJjaElucHV0XSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghaXNEcm9wZG93blZpc2libGUpIHtcbiAgICAgIHNldERlZmF1bHRTZWFyY2gobnVsbClcbiAgICAgIHNldFNlYXJjaCgnJylcbiAgICB9XG5cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCBldmVudCA9PlxuICAgICAgaGFuZGxlQ2xpY2tPdXRzaWRlKFxuICAgICAgICBldmVudCxcbiAgICAgICAgcmVmLFxuICAgICAgICBzZXRJc0Ryb3Bkb3duVmlzaWJsZSxcbiAgICAgICAgcmVmU2VsZWN0LFxuICAgICAgICBvblNlYXJjaCxcbiAgICAgICAgb3B0aW9ucyxcbiAgICAgICksXG4gICAgKVxuXG4gICAgaWYgKCFzZWFyY2hhYmxlKSB7XG4gICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgZXZlbnQgPT5cbiAgICAgICAgaGFuZGxlS2V5RG93bihcbiAgICAgICAgICBldmVudCxcbiAgICAgICAgICByZWYsXG4gICAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgICBzZWFyY2hCYXJBY3RpdmUsXG4gICAgICAgICAgc2V0U2VhcmNoLFxuICAgICAgICAgIHNldERlZmF1bHRTZWFyY2gsXG4gICAgICAgICAgc2VhcmNoLFxuICAgICAgICApLFxuICAgICAgKVxuICAgIH1cblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCBldmVudCA9PlxuICAgICAgICBoYW5kbGVDbGlja091dHNpZGUoXG4gICAgICAgICAgZXZlbnQsXG4gICAgICAgICAgcmVmLFxuICAgICAgICAgIHNldElzRHJvcGRvd25WaXNpYmxlLFxuICAgICAgICAgIHJlZlNlbGVjdCxcbiAgICAgICAgICBvblNlYXJjaCxcbiAgICAgICAgICBvcHRpb25zLFxuICAgICAgICApLFxuICAgICAgKVxuICAgICAgaWYgKCFzZWFyY2hhYmxlKSB7XG4gICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBldmVudCA9PlxuICAgICAgICAgIGhhbmRsZUtleURvd24oXG4gICAgICAgICAgICBldmVudCxcbiAgICAgICAgICAgIHJlZixcbiAgICAgICAgICAgIG9wdGlvbnMsXG4gICAgICAgICAgICBzZWFyY2hCYXJBY3RpdmUsXG4gICAgICAgICAgICBzZXRTZWFyY2gsXG4gICAgICAgICAgICBzZXREZWZhdWx0U2VhcmNoLFxuICAgICAgICAgICAgc2VhcmNoLFxuICAgICAgICAgICksXG4gICAgICAgIClcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtcbiAgICBpc0Ryb3Bkb3duVmlzaWJsZSxcbiAgICBzZWFyY2hCYXJBY3RpdmUsXG4gICAgb3B0aW9ucyxcbiAgICBvblNlYXJjaCxcbiAgICBzZWFyY2gsXG4gICAgcmVmU2VsZWN0LFxuICAgIHNldERlZmF1bHRTZWFyY2gsXG4gICAgc2V0SXNEcm9wZG93blZpc2libGUsXG4gICAgc2VhcmNoYWJsZSxcbiAgXSlcblxuICBjb25zdCBpc0VtcHR5ID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoZGlzcGxheWVkT3B0aW9ucykpIHtcbiAgICAgIHJldHVybiAhKGRpc3BsYXllZE9wdGlvbnMubGVuZ3RoID4gMClcbiAgICB9XG4gICAgY29uc3QgZ3JvdXBzID0gT2JqZWN0LmtleXMoZGlzcGxheWVkT3B0aW9ucylcbiAgICBmb3IgKGNvbnN0IGdyb3VwIG9mIGdyb3Vwcykge1xuICAgICAgaWYgKGRpc3BsYXllZE9wdGlvbnNbZ3JvdXBdLmxlbmd0aCAhPT0gMCkge1xuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZVxuICB9LCBbZGlzcGxheWVkT3B0aW9uc10pXG5cbiAgcmV0dXJuIChcbiAgICA8U3R5bGVkUG9wdXBcbiAgICAgIHZpc2libGU9e2lzRHJvcGRvd25WaXNpYmxlfVxuICAgICAgdGV4dD17XG4gICAgICAgIDxTdGFjaz5cbiAgICAgICAgICB7c2VhcmNoYWJsZSAmJiAhaXNMb2FkaW5nID8gKFxuICAgICAgICAgICAgPFNlYXJjaEJhckRyb3Bkb3duXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXtwbGFjZWhvbGRlcn1cbiAgICAgICAgICAgICAgZGlzcGxheWVkT3B0aW9ucz17ZGlzcGxheWVkT3B0aW9uc31cbiAgICAgICAgICAgICAgc2V0U2VhcmNoQmFyQWN0aXZlPXtzZXRTZWFyY2hCYXJBY3RpdmV9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgIDxDcmVhdGVEcm9wZG93blxuICAgICAgICAgICAgaXNFbXB0eT17aXNFbXB0eX1cbiAgICAgICAgICAgIGVtcHR5U3RhdGU9e2VtcHR5U3RhdGV9XG4gICAgICAgICAgICBkZXNjcmlwdGlvbkRpcmVjdGlvbj17ZGVzY3JpcHRpb25EaXJlY3Rpb259XG4gICAgICAgICAgICBsb2FkTW9yZT17bG9hZE1vcmV9XG4gICAgICAgICAgICBvcHRpb25hbEluZm9QbGFjZW1lbnQ9e29wdGlvbmFsSW5mb1BsYWNlbWVudH1cbiAgICAgICAgICAgIGRlZmF1bHRTZWFyY2hWYWx1ZT17ZGVmYXVsdFNlYXJjaFZhbHVlfVxuICAgICAgICAgICAgaXNMb2FkaW5nPXtpc0xvYWRpbmd9XG4gICAgICAgICAgLz5cbiAgICAgICAgICB7Zm9vdGVyID8gPFBvcHVwRm9vdGVyPntmb290ZXJ9PC9Qb3B1cEZvb3Rlcj4gOiBudWxsfVxuICAgICAgICA8L1N0YWNrPlxuICAgICAgfVxuICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcbiAgICAgIGRpc2FibGVBbmltYXRpb25cbiAgICAgIG1heFdpZHRoPXttYXhXaWR0aCA/PyByZWZTZWxlY3QuY3VycmVudD8ub2Zmc2V0V2lkdGh9XG4gICAgICBoYXNBcnJvdz17ZmFsc2V9XG4gICAgICByZWY9e3JlZn1cbiAgICAgIHRhYkluZGV4PXswfVxuICAgICAgcm9sZT1cImRpYWxvZ1wiXG4gICAgICBkZWJvdW5jZURlbGF5PXswfVxuICAgICAgY29udGFpbmVyRnVsbFdpZHRoXG4gICAgPlxuICAgICAge2NoaWxkcmVufVxuICAgIDwvU3R5bGVkUG9wdXA+XG4gIClcbn1cbiJdfQ== */",
158
+ map: "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL3VsdHJhdmlvbGV0L3VsdHJhdmlvbGV0L3BhY2thZ2VzL3VpL3NyYy9jb21wb25lbnRzL1NlbGVjdElucHV0VjIvRHJvcGRvd24udHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWtLdUMiLCJmaWxlIjoiL2hvbWUvcnVubmVyL3dvcmsvdWx0cmF2aW9sZXQvdWx0cmF2aW9sZXQvcGFja2FnZXMvdWkvc3JjL2NvbXBvbmVudHMvU2VsZWN0SW5wdXRWMi9Ecm9wZG93bi50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1c2VUaGVtZSB9IGZyb20gJ0BlbW90aW9uL3JlYWN0J1xuaW1wb3J0IHN0eWxlZCBmcm9tICdAZW1vdGlvbi9zdHlsZWQnXG5pbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VNZW1vLCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgdHlwZSB7XG4gIERpc3BhdGNoLFxuICBLZXlib2FyZEV2ZW50LFxuICBSZWFjdE5vZGUsXG4gIFJlZk9iamVjdCxcbiAgU2V0U3RhdGVBY3Rpb24sXG59IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgQ2hlY2tib3ggfSBmcm9tICcuLi9DaGVja2JveCdcbmltcG9ydCB7IFBvcHVwIH0gZnJvbSAnLi4vUG9wdXAnXG5pbXBvcnQgeyBTa2VsZXRvbiB9IGZyb20gJy4uL1NrZWxldG9uJ1xuaW1wb3J0IHsgU3RhY2sgfSBmcm9tICcuLi9TdGFjaydcbmltcG9ydCB7IFRleHQgfSBmcm9tICcuLi9UZXh0J1xuaW1wb3J0IHsgRGlzcGxheU9wdGlvbiB9IGZyb20gJy4vRHJvcGRvd25PcHRpb24nXG5pbXBvcnQgeyBTZWFyY2hCYXJEcm9wZG93biB9IGZyb20gJy4vU2VhcmNoQmFyRHJvcGRvd24nXG5pbXBvcnQgeyB1c2VTZWxlY3RJbnB1dCB9IGZyb20gJy4vU2VsZWN0SW5wdXRQcm92aWRlcidcbmltcG9ydCB7IHR5cGUgRGF0YVR5cGUsIElOUFVUX1NJWkVfSEVJR0hULCB0eXBlIE9wdGlvblR5cGUgfSBmcm9tICcuL3R5cGVzJ1xuXG5jb25zdCBEUk9QRE9XTl9NQVhfSEVJR0hUID0gMjU2XG5cbmV4cG9ydCB0eXBlIERyb3Bkb3duUHJvcHMgPSB7XG4gIGNoaWxkcmVuOiBSZWFjdE5vZGVcbiAgZW1wdHlTdGF0ZTogUmVhY3ROb2RlXG4gIGRlc2NyaXB0aW9uRGlyZWN0aW9uOiAncm93JyB8ICdjb2x1bW4nXG4gIHNlYXJjaGFibGU6IGJvb2xlYW5cbiAgcGxhY2Vob2xkZXI6IHN0cmluZ1xuICBmb290ZXI/OiAoKGNsb3NlRHJvcGRvd246ICgpID0+IHZvaWQpID0+IFJlYWN0Tm9kZSkgfCBSZWFjdE5vZGVcbiAgcmVmU2VsZWN0OiBSZWZPYmplY3Q8SFRNTERpdkVsZW1lbnQ+XG4gIGxvYWRNb3JlPzogUmVhY3ROb2RlXG4gIG9wdGlvbmFsSW5mb1BsYWNlbWVudDogJ2xlZnQnIHwgJ3JpZ2h0J1xuICBpc0xvYWRpbmc/OiBib29sZWFuXG4gIHNpemU6ICdzbWFsbCcgfCAnbWVkaXVtJyB8ICdsYXJnZSdcbn1cblxuZXhwb3J0IHR5cGUgQ3JlYXRlRHJvcGRvd25Qcm9wcyA9IHtcbiAgaXNFbXB0eTogYm9vbGVhblxuICBlbXB0eVN0YXRlOiBSZWFjdE5vZGVcbiAgZGVzY3JpcHRpb25EaXJlY3Rpb246ICdyb3cnIHwgJ2NvbHVtbidcbiAgbG9hZE1vcmU/OiBSZWFjdE5vZGVcbiAgb3B0aW9uYWxJbmZvUGxhY2VtZW50OiAnbGVmdCcgfCAncmlnaHQnXG4gIGRlZmF1bHRTZWFyY2hWYWx1ZTogc3RyaW5nIHwgbnVsbFxuICBpc0xvYWRpbmc/OiBib29sZWFuXG59XG5cbmNvbnN0IE5PTl9TRUFSQ0hBQkxFX0tFWVMgPSBbXG4gICdUYWInLFxuICAnICcsXG4gICdFbnRlcicsXG4gICdDYXBzTG9jaycsXG4gICdTaGlmdCcsXG4gICdBcnJvd0Rvd24nLFxuICAnQXJyb3dVcCcsXG4gICdBcnJvd0xlZnQnLFxuICAnQXJyb3dSaWdodCcsXG4gICdFc2NhcGUnLFxuXVxuXG5jb25zdCBTdHlsZWRQb3B1cCA9IHN0eWxlZChQb3B1cClgXG4gIHdpZHRoOiAxMDAlO1xuICBtaW4td2lkdGg6IDMyMHB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5vdGhlci5lbGV2YXRpb24uYmFja2dyb3VuZC5yYWlzZWR9O1xuICBjb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMubmV1dHJhbC50ZXh0fTtcbiAgYm94LXNoYWRvdzogJHsoeyB0aGVtZSB9KSA9PiBgJHt0aGVtZS5zaGFkb3dzLnJhaXNlZFswXX0sICR7dGhlbWUuc2hhZG93cy5yYWlzZWRbMV19YH07XG4gIHBhZGRpbmc6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMF19O1xuICBtYXJnaW4tYm90dG9tOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzEwXX07XG5gXG5cbmNvbnN0IERyb3Bkb3duQ29udGFpbmVyID0gc3R5bGVkKFN0YWNrKTx7ICdkYXRhLWdyb3VwZWQnOiBib29sZWFuIH0+YFxuICBtYXgtaGVpZ2h0OiAke0RST1BET1dOX01BWF9IRUlHSFR9cHg7XG4gIG92ZXJmbG93LXk6IHNjcm9sbDtcbiAgcGFkZGluZzogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVswXX07XG4gIHBhZGRpbmctYm90dG9tOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzAuNV19O1xuICBwYWRkaW5nLXRvcDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVswLjVdfTtcblxuICAmW2RhdGEtZ3JvdXBlZD1cInRydWVcIl0ge1xuICAgIHBhZGRpbmctdG9wOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzBdfTtcbiAgfVxuYFxuY29uc3QgRHJvcGRvd25Hcm91cCA9IHN0eWxlZC5idXR0b248eyAnZGF0YS1zZWxlY3Rncm91cCc6IGJvb2xlYW4gfT5gXG4gIGRpc3BsYXk6IGZsZXg7XG4gIHdpZHRoOiAxMDAlO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGxlZnQ7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGJvcmRlcjogbm9uZTtcbiAgYmFja2dyb3VuZC1jb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMubmV1dHJhbC5iYWNrZ3JvdW5kV2Vha307XG4gIHBvc2l0aW9uOiBzdGlja3k7XG4gIHRvcDogMHB4O1xuICBwYWRkaW5nLXJpZ2h0OiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzJdfTtcbiAgcGFkZGluZy1sZWZ0OiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzJdfTtcbiAgaGVpZ2h0OiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzRdfTtcbiAgdGV4dC1hbGlnbjogbGVmdDtcbiAgbWFyZ2luLWJvdHRvbTogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsnMC4yNSddfTtcblxuICAmOmZvY3VzIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5uZXV0cmFsLmJhY2tncm91bmRXZWFrfTtcbiAgICBvdXRsaW5lOiBub25lO1xuICB9XG5cbiAgJltkYXRhLXNlbGVjdGdyb3VwPSd0cnVlJ10ge1xuICAgIHBhZGRpbmctbGVmdDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsyXX07XG4gICAgYm9yZGVyLWxlZnQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMC41XX0gc29saWQgJHsoeyB0aGVtZSB9KSA9PlxuICAgICAgdGhlbWUuY29sb3JzLm5ldXRyYWwuYmFja2dyb3VuZFdlYWt9O1xuICB9XG5cbiAgJltkYXRhLXNlbGVjdGdyb3VwPSd0cnVlJ106Zm9jdXMge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwuYmFja2dyb3VuZEhvdmVyfTtcbiAgfVxuYFxuY29uc3QgRHJvcGRvd25Hcm91cFdyYXBwZXIgPSBzdHlsZWQuZGl2YFxuICBwb3NpdGlvbjogc3RpY2t5O1xuICB0b3A6IDBweDtcbmBcbmNvbnN0IERyb3Bkb3duSXRlbSA9IHN0eWxlZC5kaXY8e1xuICAnYXJpYS1zZWxlY3RlZCc6IGJvb2xlYW5cbiAgJ2FyaWEtZGlzYWJsZWQnOiBib29sZWFuXG59PmBcbiAgdGV4dC1hbGlnbjpsZWZ0O1xuICBib3JkZXI6IG5vbmU7XG4gIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm90aGVyLmVsZXZhdGlvbi5iYWNrZ3JvdW5kLnJhaXNlZH07XG5cbiAgcGFkZGluZzogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsnMS41J119ICR7KHsgdGhlbWUgfSkgPT5cbiAgICB0aGVtZS5zcGFjZVsnMiddfSAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWycxLjUnXX0gJHsoeyB0aGVtZSB9KSA9PlxuICAgIHRoZW1lLnNwYWNlWycyJ119O1xuICBtYXJnaW4tbGVmdDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsnMC41J119O1xuICBtYXJnaW4tcmlnaHQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbJzAuNSddfTtcblxuICBjb2xvcjogICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwudGV4dH07XG4gIGJvcmRlci1yYWRpdXM6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUucmFkaWkuZGVmYXVsdH07XG5cbiAgJjpob3ZlciwgOmZvY3VzIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5wcmltYXJ5LmJhY2tncm91bmR9O1xuICAgIGNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5wcmltYXJ5LnRleHR9O1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBvdXRsaW5lOiBub25lO1xuICB9XG5cbiAgJlthcmlhLXNlbGVjdGVkPSd0cnVlJ10ge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLnByaW1hcnkuYmFja2dyb3VuZH07XG4gIH1cblxuICAmW2FyaWEtZGlzYWJsZWQ9XCJ0cnVlXCJdIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5uZXV0cmFsLmJhY2tncm91bmREaXNhYmxlZH07XG4gICAgY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwudGV4dERpc2FibGVkfTtcbiAgfVxuXG4gICZbYXJpYS1kaXNhYmxlZD1cInRydWVcIl06aG92ZXIsIFthcmlhLWRpc2FibGVkPVwidHJ1ZVwiXTpmb2N1cyB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHsoeyB0aGVtZSB9KSA9PlxuICAgICAgdGhlbWUuY29sb3JzLm5ldXRyYWwuYmFja2dyb3VuZFN0cm9uZ0Rpc2FibGVkfTtcbiAgICBjb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMubmV1dHJhbC50ZXh0U3Ryb25nRGlzYWJsZWR9O1xuICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgfVxuYFxuXG5jb25zdCBQb3B1cEZvb3RlciA9IHN0eWxlZC5kaXZgXG4gIHdpZHRoOiAxMDAlO1xuICBwYWRkaW5nOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzEuNV19ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMl19XG4gICAgJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsxLjVdfSAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzJdfTtcbiAgYm94LXNoYWRvdzogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zaGFkb3dzLmRyb3Bkb3dufTtcbmBcbmNvbnN0IFN0eWxlZENoZWNrYm94ID0gc3R5bGVkKENoZWNrYm94KWBcbiAgd2lkdGg6IDEwMCU7XG4gIHBvc2l0aW9uOiBzdGF0aWM7XG4gIHRleHQtYWxpZ246IGxlZnQ7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuYCAvLyBwb2ludGVyLWV2ZW50czogbm9uZSBwcmV2ZW50cyBhbnkgZXJyb3Igd2hlbiB1c2luZyB0aGUgY2hlY2tib3ggaW4gYSBmb3JtIHNpbmNlIGl0IGlzIGFuIHVubmFtZWQgaW5wdXRcblxuY29uc3QgRW1wdHlTdGF0ZSA9IHN0eWxlZChTdGFjaylgXG4gIHBhZGRpbmc6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMl19O1xuYFxuY29uc3QgTG9hZE1vcmUgPSBzdHlsZWQoU3RhY2spYFxuICBwYWRkaW5nOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzAuNV19O1xuYFxuXG5jb25zdCBtb3ZlRm9jdXNEb3duID0gKCkgPT4ge1xuICBjb25zdCBvcHRpb25zID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcbiAgICAnI2l0ZW1zID4gZGl2W3JvbGU9XCJvcHRpb25cIl06bm90KFtkaXNhYmxlZF0pJyxcbiAgKVxuICBjb25zdCBhY3RpdmVJdGVtID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudFxuICBpZiAob3B0aW9ucykge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgb3B0aW9ucz8ubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgIGNvbnN0IGxpc3RMZW5ndGggPSBvcHRpb25zLmxlbmd0aFxuICAgICAgaWYgKGFjdGl2ZUl0ZW0gPT09IG9wdGlvbnNbaV0gJiYgYWN0aXZlSXRlbSAhPT0gb3B0aW9uc1tsaXN0TGVuZ3RoIC0gMV0pIHtcbiAgICAgICAgOyhvcHRpb25zW2kgKyAxXSBhcyBIVE1MRWxlbWVudCkuZm9jdXMoKVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuY29uc3QgbW92ZUZvY3VzVXAgPSAoKSA9PiB7XG4gIGNvbnN0IG9wdGlvbnMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFxuICAgICcjaXRlbXMgPiBkaXZbcm9sZT1cIm9wdGlvblwiXTpub3QoW2Rpc2FibGVkXSknLFxuICApXG4gIGNvbnN0IGFjdGl2ZUl0ZW0gPSBkb2N1bWVudC5hY3RpdmVFbGVtZW50XG5cbiAgaWYgKG9wdGlvbnMpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG9wdGlvbnMubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgIGlmIChhY3RpdmVJdGVtID09PSBvcHRpb25zW2ldICYmIGFjdGl2ZUl0ZW0gIT09IG9wdGlvbnNbMF0pIHtcbiAgICAgICAgOyhvcHRpb25zW2kgLSAxXSBhcyBIVE1MRWxlbWVudCkuZm9jdXMoKVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuY29uc3QgaGFuZGxlS2V5RG93blNlbGVjdCA9IChldmVudDogS2V5Ym9hcmRFdmVudDxIVE1MRGl2RWxlbWVudD4pID0+IHtcbiAgaWYgKGV2ZW50LmtleSA9PT0gJ0Fycm93RG93bicpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgbW92ZUZvY3VzRG93bigpXG4gIH1cblxuICBpZiAoZXZlbnQua2V5ID09PSAnQXJyb3dVcCcpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgbW92ZUZvY3VzVXAoKVxuICB9XG59XG5jb25zdCBoYW5kbGVDbGlja091dHNpZGUgPSAoXG4gIGV2ZW50OiBNb3VzZUV2ZW50LFxuICByZWY6IFJlZk9iamVjdDxIVE1MRGl2RWxlbWVudD4sXG4gIHNldElzRHJvcGRvd25WaXNpYmlsZTogRGlzcGF0Y2g8U2V0U3RhdGVBY3Rpb248Ym9vbGVhbj4+LFxuICByZWZTZWxlY3Q6IFJlZk9iamVjdDxIVE1MRGl2RWxlbWVudD4sXG4gIG9uU2VhcmNoOiBEaXNwYXRjaDxTZXRTdGF0ZUFjdGlvbjxEYXRhVHlwZT4+LFxuICBvcHRpb25zOiBEYXRhVHlwZSxcbikgPT4ge1xuICBpZiAoXG4gICAgcmVmLmN1cnJlbnQgJiZcbiAgICAhcmVmLmN1cnJlbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0IGFzIE5vZGUpICYmXG4gICAgIXJlZlNlbGVjdC5jdXJyZW50Py5jb250YWlucyhldmVudC50YXJnZXQgYXMgTm9kZSlcbiAgKSB7XG4gICAgc2V0SXNEcm9wZG93blZpc2liaWxlKGZhbHNlKVxuICAgIG9uU2VhcmNoKG9wdGlvbnMpXG4gIH1cbn1cblxuY29uc3QgaGFuZGxlS2V5RG93biA9IChcbiAgZXZlbnQ6IGdsb2JhbFRoaXMuS2V5Ym9hcmRFdmVudCxcbiAgcmVmOiBSZWZPYmplY3Q8SFRNTERpdkVsZW1lbnQ+LFxuICBvcHRpb25zOiBEYXRhVHlwZSxcbiAgc2VhcmNoQmFyQWN0aXZlOiBib29sZWFuLFxuICBzZXRTZWFyY2g6IERpc3BhdGNoPFNldFN0YXRlQWN0aW9uPHN0cmluZz4+LFxuICBzZXREZWZhdWx0U2VhcmNoOiBEaXNwYXRjaDxTZXRTdGF0ZUFjdGlvbjxzdHJpbmcgfCBudWxsPj4sXG4gIHNlYXJjaDogc3RyaW5nLFxuKSA9PiB7XG4gIC8vIERlYWxzIHdpdGggZGVmYXVsdCBzZWFyY2hcbiAgaWYgKFxuICAgIHJlZi5jdXJyZW50ICYmXG4gICAgIXNlYXJjaEJhckFjdGl2ZSAmJlxuICAgICFOT05fU0VBUkNIQUJMRV9LRVlTLmluY2x1ZGVzKGV2ZW50LmtleSkgJiZcbiAgICBkb2N1bWVudC5hY3RpdmVFbGVtZW50Py5hcmlhTGFiZWwgIT09ICdzZWFyY2gtYmFyJ1xuICApIHtcbiAgICBjb25zdCBjdXJyZW50U2VhcmNoID0gc2VhcmNoICsgZXZlbnQua2V5XG4gICAgc2V0U2VhcmNoKGN1cnJlbnRTZWFyY2gpXG4gICAgcmVmLmN1cnJlbnQuZm9jdXMoKVxuICAgIGlmICghQXJyYXkuaXNBcnJheShvcHRpb25zKSkge1xuICAgICAgY29uc3QgY2xvc2VzdE9wdGlvbnMgPSB7IC4uLm9wdGlvbnMgfVxuICAgICAgT2JqZWN0LmtleXMoY2xvc2VzdE9wdGlvbnMpLm1hcCgoZ3JvdXA6IHN0cmluZykgPT4ge1xuICAgICAgICBjbG9zZXN0T3B0aW9uc1tncm91cF0gPSBjbG9zZXN0T3B0aW9uc1tncm91cF0uZmlsdGVyKG9wdGlvbiA9PlxuICAgICAgICAgIG9wdGlvbi5zZWFyY2hUZXh0XG4gICAgICAgICAgICA/IG9wdGlvbi5zZWFyY2hUZXh0LnRvTG9jYWxlTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChjdXJyZW50U2VhcmNoKVxuICAgICAgICAgICAgOiBvcHRpb24udmFsdWUudG9Mb2NhbGVMb3dlckNhc2UoKS5zdGFydHNXaXRoKGN1cnJlbnRTZWFyY2gpLFxuICAgICAgICApXG5cbiAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgIH0pXG4gICAgICBjb25zdCBjbG9zZXN0T3B0aW9uID0gY2xvc2VzdE9wdGlvbnNbT2JqZWN0LmtleXMoY2xvc2VzdE9wdGlvbnMpWzBdXVswXVxuICAgICAgaWYgKGNsb3Nlc3RPcHRpb24pIHtcbiAgICAgICAgc2V0RGVmYXVsdFNlYXJjaChjbG9zZXN0T3B0aW9uLnNlYXJjaFRleHQgPz8gY2xvc2VzdE9wdGlvbi52YWx1ZSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNldERlZmF1bHRTZWFyY2gobnVsbClcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgY2xvc2VzdE9wdGlvbiA9IFsuLi5vcHRpb25zXS5maWx0ZXIob3B0aW9uID0+XG4gICAgICAgIG9wdGlvbi5zZWFyY2hUZXh0XG4gICAgICAgICAgPyBvcHRpb24uc2VhcmNoVGV4dC50b0xvY2FsZUxvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoY3VycmVudFNlYXJjaClcbiAgICAgICAgICA6IG9wdGlvbi52YWx1ZS50b0xvY2FsZUxvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoY3VycmVudFNlYXJjaCksXG4gICAgICApWzBdXG4gICAgICBpZiAoY2xvc2VzdE9wdGlvbikge1xuICAgICAgICBzZXREZWZhdWx0U2VhcmNoKGNsb3Nlc3RPcHRpb24uc2VhcmNoVGV4dCA/PyBjbG9zZXN0T3B0aW9uLnZhbHVlKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2V0RGVmYXVsdFNlYXJjaChudWxsKVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuY29uc3QgQ3JlYXRlRHJvcGRvd24gPSAoe1xuICBpc0VtcHR5LFxuICBlbXB0eVN0YXRlLFxuICBkZXNjcmlwdGlvbkRpcmVjdGlvbixcbiAgbG9hZE1vcmUsXG4gIG9wdGlvbmFsSW5mb1BsYWNlbWVudCxcbiAgZGVmYXVsdFNlYXJjaFZhbHVlLFxuICBpc0xvYWRpbmcsXG59OiBDcmVhdGVEcm9wZG93blByb3BzKSA9PiB7XG4gIGNvbnN0IHtcbiAgICBzZXRJc0Ryb3Bkb3duVmlzaWJsZSxcbiAgICBvbkNoYW5nZSxcbiAgICBvcHRpb25zLFxuICAgIG11bHRpc2VsZWN0LFxuICAgIHNlbGVjdEFsbCxcbiAgICBzZWxlY3RBbGxHcm91cCxcbiAgICBkaXNwbGF5ZWRPcHRpb25zLFxuICAgIHNldFNlbGVjdGVkRGF0YSxcbiAgICBzZWxlY3RlZERhdGEsXG4gIH0gPSB1c2VTZWxlY3RJbnB1dCgpXG4gIGNvbnN0IGZvY3VzZWRJdGVtUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGRlZmF1bHRTZWFyY2hWYWx1ZSAmJiBmb2N1c2VkSXRlbVJlZj8uY3VycmVudCkge1xuICAgICAgZm9jdXNlZEl0ZW1SZWYuY3VycmVudC5mb2N1cygpXG4gICAgfVxuICB9LCBbZGVmYXVsdFNlYXJjaFZhbHVlXSlcblxuICBpZiAoaXNFbXB0eSkge1xuICAgIHJldHVybiAoXG4gICAgICA8RW1wdHlTdGF0ZSBnYXA9ezJ9IGFsaWduSXRlbXM9XCJjZW50ZXJcIj5cbiAgICAgICAge2VtcHR5U3RhdGUgPz8gKFxuICAgICAgICAgIDxUZXh0IHZhcmlhbnQ9XCJib2R5U3Ryb25nXCIgYXM9XCJwXCI+XG4gICAgICAgICAgICBObyBvcHRpb25zXG4gICAgICAgICAgPC9UZXh0PlxuICAgICAgICApfVxuICAgICAgPC9FbXB0eVN0YXRlPlxuICAgIClcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZUNsaWNrID0gKGNsaWNrZWRPcHRpb246IE9wdGlvblR5cGUsIGdyb3VwPzogc3RyaW5nKSA9PiB7XG4gICAgc2V0U2VsZWN0ZWREYXRhKHsgdHlwZTogJ3NlbGVjdE9wdGlvbicsIGNsaWNrZWRPcHRpb24sIGdyb3VwIH0pXG4gICAgaWYgKG11bHRpc2VsZWN0KSB7XG4gICAgICBpZiAoc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzLmluY2x1ZGVzKGNsaWNrZWRPcHRpb24udmFsdWUpKSB7XG4gICAgICAgIG9uQ2hhbmdlPy4oXG4gICAgICAgICAgc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzLmZpbHRlcihcbiAgICAgICAgICAgIHZhbCA9PiB2YWwgIT09IGNsaWNrZWRPcHRpb24udmFsdWUsXG4gICAgICAgICAgKSxcbiAgICAgICAgKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb25DaGFuZ2U/LihbLi4uc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzLCBjbGlja2VkT3B0aW9uLnZhbHVlXSlcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgb25DaGFuZ2U/LihjbGlja2VkT3B0aW9uLnZhbHVlKVxuICAgIH1cbiAgICBzZXRJc0Ryb3Bkb3duVmlzaWJsZShtdWx0aXNlbGVjdCkgLy8gaGlkZSB0aGUgZHJvcGRvd24gb24gY2xpY2sgd2hlbiBzaW5nbGUgc2VsZWN0IG9ubHlcbiAgfVxuXG4gIGNvbnN0IHNlbGVjdEFsbE9wdGlvbnMgPSAoKSA9PiB7XG4gICAgaWYgKG11bHRpc2VsZWN0KSB7XG4gICAgICBzZXRTZWxlY3RlZERhdGEoeyB0eXBlOiAnc2VsZWN0QWxsJyB9KVxuICAgICAgaWYgKHNlbGVjdGVkRGF0YS5hbGxTZWxlY3RlZCAmJiBvbkNoYW5nZSkge1xuICAgICAgICBvbkNoYW5nZShbXSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGFsbFZhbHVlczogT3B0aW9uVHlwZVtdID0gW11cbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KG9wdGlvbnMpKSB7XG4gICAgICAgICAgT2JqZWN0LmtleXMob3B0aW9ucykubWFwKChncm91cDogc3RyaW5nKSA9PlxuICAgICAgICAgICAgb3B0aW9uc1tncm91cF0ubWFwKG9wdGlvbiA9PiB7XG4gICAgICAgICAgICAgIGlmICghb3B0aW9uLmRpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgYWxsVmFsdWVzLnB1c2gob3B0aW9uKVxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIClcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvcHRpb25zLm1hcChvcHRpb24gPT4gYWxsVmFsdWVzLnB1c2gob3B0aW9uKSlcbiAgICAgICAgfVxuICAgICAgICBvbkNoYW5nZT8uKGFsbFZhbHVlcy5tYXAodmFsdWUgPT4gdmFsdWUudmFsdWUpKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGhhbmRsZVNlbGVjdEdyb3VwID0gKGdyb3VwOiBzdHJpbmcpID0+IHtcbiAgICBpZiAobXVsdGlzZWxlY3QpIHtcbiAgICAgIHNldFNlbGVjdGVkRGF0YSh7IHR5cGU6ICdzZWxlY3RHcm91cCcsIHNlbGVjdGVkR3JvdXA6IGdyb3VwIH0pXG4gICAgICBpZiAoIUFycmF5LmlzQXJyYXkob3B0aW9ucykpIHtcbiAgICAgICAgaWYgKHNlbGVjdGVkRGF0YS5zZWxlY3RlZEdyb3Vwcy5pbmNsdWRlcyhncm91cCkpIHtcbiAgICAgICAgICBjb25zdCBuZXdTZWxlY3RlZFZhbHVlcyA9IFsuLi5zZWxlY3RlZERhdGEuc2VsZWN0ZWRWYWx1ZXNdLmZpbHRlcihcbiAgICAgICAgICAgIHNlbGVjdGVkVmFsdWUgPT5cbiAgICAgICAgICAgICAgIW9wdGlvbnNbZ3JvdXBdLmZpbmQob3B0aW9uID0+IG9wdGlvbi52YWx1ZSA9PT0gc2VsZWN0ZWRWYWx1ZSksXG4gICAgICAgICAgKVxuICAgICAgICAgIG9uQ2hhbmdlPy4obmV3U2VsZWN0ZWRWYWx1ZXMpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgbmV3U2VsZWN0ZWRWYWx1ZXMgPSBbLi4uc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzXVxuXG4gICAgICAgICAgb3B0aW9uc1tncm91cF0ubWFwKG9wdGlvbiA9PlxuICAgICAgICAgICAgbmV3U2VsZWN0ZWRWYWx1ZXMuaW5jbHVkZXMob3B0aW9uLnZhbHVlKSB8fCBvcHRpb24uZGlzYWJsZWRcbiAgICAgICAgICAgICAgPyBudWxsXG4gICAgICAgICAgICAgIDogbmV3U2VsZWN0ZWRWYWx1ZXMucHVzaChvcHRpb24udmFsdWUpLFxuICAgICAgICAgIClcbiAgICAgICAgICBvbkNoYW5nZT8uKG5ld1NlbGVjdGVkVmFsdWVzKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuICFBcnJheS5pc0FycmF5KGRpc3BsYXllZE9wdGlvbnMpID8gKFxuICAgIDxEcm9wZG93bkNvbnRhaW5lclxuICAgICAgcm9sZT1cImxpc3Rib3hcIlxuICAgICAgaWQ9XCJzZWxlY3QtZHJvcGRvd25cIlxuICAgICAgb25LZXlEb3duPXtoYW5kbGVLZXlEb3duU2VsZWN0fVxuICAgICAgZGF0YS1ncm91cGVkXG4gICAgPlxuICAgICAge2lzTG9hZGluZyA/IChcbiAgICAgICAgPFNrZWxldG9uIHZhcmlhbnQ9XCJibG9ja1wiIC8+XG4gICAgICApIDogKFxuICAgICAgICA8PlxuICAgICAgICAgIHtzZWxlY3RBbGwgJiYgbXVsdGlzZWxlY3QgPyAoXG4gICAgICAgICAgICA8U3RhY2sgaWQ9XCJpdGVtc1wiPlxuICAgICAgICAgICAgICA8RHJvcGRvd25JdGVtXG4gICAgICAgICAgICAgICAgYXJpYS1kaXNhYmxlZD17ZmFsc2V9XG4gICAgICAgICAgICAgICAgYXJpYS1zZWxlY3RlZD17c2VsZWN0ZWREYXRhLmFsbFNlbGVjdGVkfVxuICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJzZWxlY3QtYWxsXCJcbiAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD1cInNlbGVjdC1hbGxcIlxuICAgICAgICAgICAgICAgIGlkPVwic2VsZWN0LWFsbFwiXG4gICAgICAgICAgICAgICAgdGFiSW5kZXg9ezB9XG4gICAgICAgICAgICAgICAgcm9sZT1cIm9wdGlvblwiXG4gICAgICAgICAgICAgICAgb25LZXlEb3duPXtldmVudCA9PlxuICAgICAgICAgICAgICAgICAgWycgJywgJ0VudGVyJ10uaW5jbHVkZXMoZXZlbnQua2V5KSA/IHNlbGVjdEFsbE9wdGlvbnMoKSA6IG51bGxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgb25DbGljaz17c2VsZWN0QWxsT3B0aW9uc31cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxTdHlsZWRDaGVja2JveFxuICAgICAgICAgICAgICAgICAgY2hlY2tlZD17c2VsZWN0ZWREYXRhLmFsbFNlbGVjdGVkfVxuICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgdmFsdWU9XCJzZWxlY3QtYWxsXCJcbiAgICAgICAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwic2VsZWN0LWFsbC1jaGVja2JveFwiXG4gICAgICAgICAgICAgICAgICB0YWJJbmRleD17LTF9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPFN0YWNrIGRpcmVjdGlvbj1cImNvbHVtblwiPlxuICAgICAgICAgICAgICAgICAgICA8VGV4dCBhcz1cInNwYW5cIiB2YXJpYW50PVwiYm9keVwiIHBsYWNlbWVudD1cImxlZnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICB7c2VsZWN0QWxsLmxhYmVsfVxuICAgICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgICAgIDxUZXh0XG4gICAgICAgICAgICAgICAgICAgICAgYXM9XCJzcGFuXCJcbiAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50PVwiYm9keVNtYWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICBzZW50aW1lbnQ9XCJuZXV0cmFsXCJcbiAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJsZWZ0XCJcbiAgICAgICAgICAgICAgICAgICAgICBwcm9taW5lbmNlPVwid2Vha1wiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7c2VsZWN0QWxsLmRlc2NyaXB0aW9ufVxuICAgICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgICA8L1N0YWNrPlxuICAgICAgICAgICAgICAgIDwvU3R5bGVkQ2hlY2tib3g+XG4gICAgICAgICAgICAgIDwvRHJvcGRvd25JdGVtPlxuICAgICAgICAgICAgPC9TdGFjaz5cbiAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICB7T2JqZWN0LmtleXMoZGlzcGxheWVkT3B0aW9ucykubWFwKChncm91cCwgaW5kZXgpID0+IChcbiAgICAgICAgICAgIDxTdGFjayBrZXk9e2dyb3VwfSBnYXA9ezAuMjV9PlxuICAgICAgICAgICAgICB7ZGlzcGxheWVkT3B0aW9uc1tncm91cF0ubGVuZ3RoID4gMCA/IChcbiAgICAgICAgICAgICAgICA8RHJvcGRvd25Hcm91cFdyYXBwZXIgaWQ9e3NlbGVjdEFsbEdyb3VwID8gJ2l0ZW1zJyA6IHVuZGVmaW5lZH0+XG4gICAgICAgICAgICAgICAgICB7Z3JvdXAgPyAoXG4gICAgICAgICAgICAgICAgICAgIDxEcm9wZG93bkdyb3VwXG4gICAgICAgICAgICAgICAgICAgICAga2V5PXtncm91cH1cbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICB0YWJJbmRleD17c2VsZWN0QWxsR3JvdXAgPyAwIDogLTF9XG4gICAgICAgICAgICAgICAgICAgICAgb25LZXlEb3duPXtldmVudCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoWycgJywgJ0VudGVyJ10uaW5jbHVkZXMoZXZlbnQua2V5KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZVNlbGVjdEdyb3VwKGdyb3VwKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgZGF0YS1zZWxlY3Rncm91cD17c2VsZWN0QWxsR3JvdXB9XG4gICAgICAgICAgICAgICAgICAgICAgcm9sZT1cImdyb3VwXCJcbiAgICAgICAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD17YGdyb3VwLSR7aW5kZXh9YH1cbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0QWxsR3JvdXAgPyBoYW5kbGVTZWxlY3RHcm91cChncm91cCkgOiBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAge3NlbGVjdEFsbEdyb3VwID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgPFN0eWxlZENoZWNrYm94XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e3NlbGVjdGVkRGF0YS5zZWxlY3RlZEdyb3Vwcy5pbmNsdWRlcyhncm91cCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2dyb3VwfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD1cInNlbGVjdC1ncm91cFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRhYkluZGV4PXstMX1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPFRleHQgdmFyaWFudD1cImNhcHRpb25cIiBhcz1cInNwYW5cIiBwbGFjZW1lbnQ9XCJsZWZ0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2dyb3VwLnRvVXBwZXJDYXNlKCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvU3R5bGVkQ2hlY2tib3g+XG4gICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxUZXh0XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJjYXB0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYXM9XCJzcGFuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwibGVmdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNlbnRpbWVudD1cIm5ldXRyYWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7Z3JvdXAudG9VcHBlckNhc2UoKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICA8L0Ryb3Bkb3duR3JvdXA+XG4gICAgICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgICAgICA8L0Ryb3Bkb3duR3JvdXBXcmFwcGVyPlxuICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgICAgPFN0YWNrIGlkPVwiaXRlbXNcIiBnYXA9XCIwLjI1XCI+XG4gICAgICAgICAgICAgICAge2Rpc3BsYXllZE9wdGlvbnNbZ3JvdXBdLm1hcCgob3B0aW9uLCBpbmRleE9wdGlvbikgPT4gKFxuICAgICAgICAgICAgICAgICAgPERyb3Bkb3duSXRlbVxuICAgICAgICAgICAgICAgICAgICBrZXk9e29wdGlvbi52YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgYXJpYS1kaXNhYmxlZD17ISFvcHRpb24uZGlzYWJsZWR9XG4gICAgICAgICAgICAgICAgICAgIHRhYkluZGV4PXshb3B0aW9uLmRpc2FibGVkID8gMCA6IC0xfVxuICAgICAgICAgICAgICAgICAgICBhcmlhLXNlbGVjdGVkPXtcbiAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZERhdGEuc2VsZWN0ZWRWYWx1ZXMuaW5jbHVkZXMob3B0aW9uLnZhbHVlKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICFvcHRpb24uZGlzYWJsZWRcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPXtvcHRpb24udmFsdWV9XG4gICAgICAgICAgICAgICAgICAgIGRhdGEtdGVzdGlkPXtgb3B0aW9uLSR7b3B0aW9uLnZhbHVlfWB9XG4gICAgICAgICAgICAgICAgICAgIGlkPXtgb3B0aW9uLSR7aW5kZXhPcHRpb259YH1cbiAgICAgICAgICAgICAgICAgICAgcm9sZT1cIm9wdGlvblwiXG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoIW9wdGlvbi5kaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlQ2xpY2sob3B0aW9uLCBncm91cClcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgIG9uS2V5RG93bj17ZXZlbnQgPT5cbiAgICAgICAgICAgICAgICAgICAgICBbJyAnLCAnRW50ZXInXS5pbmNsdWRlcyhldmVudC5rZXkpXG4gICAgICAgICAgICAgICAgICAgICAgICA/IGhhbmRsZUNsaWNrKG9wdGlvbiwgZ3JvdXApXG4gICAgICAgICAgICAgICAgICAgICAgICA6IG51bGxcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZWY9e1xuICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbi52YWx1ZSA9PT0gZGVmYXVsdFNlYXJjaFZhbHVlIHx8XG4gICAgICAgICAgICAgICAgICAgICAgb3B0aW9uLnNlYXJjaFRleHQgPT09IGRlZmF1bHRTZWFyY2hWYWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgPyBmb2N1c2VkSXRlbVJlZlxuICAgICAgICAgICAgICAgICAgICAgICAgOiBudWxsXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge211bHRpc2VsZWN0ID8gKFxuICAgICAgICAgICAgICAgICAgICAgIDxTdHlsZWRDaGVja2JveFxuICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tlZD17XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkRGF0YS5zZWxlY3RlZFZhbHVlcy5pbmNsdWRlcyhvcHRpb24udmFsdWUpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICFvcHRpb24uZGlzYWJsZWRcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtvcHRpb24uZGlzYWJsZWR9XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17b3B0aW9uLnZhbHVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgdGFiSW5kZXg9ey0xfVxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxEaXNwbGF5T3B0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbj17b3B0aW9ufVxuICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbkRpcmVjdGlvbj17ZGVzY3JpcHRpb25EaXJlY3Rpb259XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsSW5mb1BsYWNlbWVudD17b3B0aW9uYWxJbmZvUGxhY2VtZW50fVxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8L1N0eWxlZENoZWNrYm94PlxuICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgIDxEaXNwbGF5T3B0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb249e29wdGlvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uRGlyZWN0aW9uPXtkZXNjcmlwdGlvbkRpcmVjdGlvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsSW5mb1BsYWNlbWVudD17b3B0aW9uYWxJbmZvUGxhY2VtZW50fVxuICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICA8L0Ryb3Bkb3duSXRlbT5cbiAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgPC9TdGFjaz5cbiAgICAgICAgICAgIDwvU3RhY2s+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvPlxuICAgICAgKX1cbiAgICAgIHtsb2FkTW9yZSA/IDxMb2FkTW9yZT57bG9hZE1vcmV9PC9Mb2FkTW9yZT4gOiBudWxsfVxuICAgIDwvRHJvcGRvd25Db250YWluZXI+XG4gICkgOiAoXG4gICAgPERyb3Bkb3duQ29udGFpbmVyXG4gICAgICByb2xlPVwibGlzdGJveFwiXG4gICAgICB0YWJJbmRleD17LTF9XG4gICAgICBpZD1cInNlbGVjdC1kcm9wZG93blwiXG4gICAgICBvbktleURvd249e2hhbmRsZUtleURvd25TZWxlY3R9XG4gICAgICBnYXA9ezAuMjV9XG4gICAgICBkYXRhLWdyb3VwZWQ9e2ZhbHNlfVxuICAgID5cbiAgICAgIHtzZWxlY3RBbGwgJiYgbXVsdGlzZWxlY3QgPyAoXG4gICAgICAgIDxTdGFjayBpZD1cIml0ZW1zXCIgZ2FwPXswLjI1fSB0YWJJbmRleD17LTF9PlxuICAgICAgICAgIDxEcm9wZG93bkl0ZW1cbiAgICAgICAgICAgIGFyaWEtZGlzYWJsZWQ9e2ZhbHNlfVxuICAgICAgICAgICAgYXJpYS1zZWxlY3RlZD17c2VsZWN0ZWREYXRhLmFsbFNlbGVjdGVkfVxuICAgICAgICAgICAgYXJpYS1sYWJlbD1cInNlbGVjdC1hbGxcIlxuICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJzZWxlY3QtYWxsXCJcbiAgICAgICAgICAgIHRhYkluZGV4PXswfVxuICAgICAgICAgICAgcm9sZT1cIm9wdGlvblwiXG4gICAgICAgICAgICBvbktleURvd249e2V2ZW50ID0+XG4gICAgICAgICAgICAgIFsnICcsICdFbnRlciddLmluY2x1ZGVzKGV2ZW50LmtleSkgPyBzZWxlY3RBbGxPcHRpb25zKCkgOiBudWxsXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvbkNsaWNrPXtzZWxlY3RBbGxPcHRpb25zfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxTdHlsZWRDaGVja2JveFxuICAgICAgICAgICAgICBjaGVja2VkPXtzZWxlY3RlZERhdGEuYWxsU2VsZWN0ZWR9XG4gICAgICAgICAgICAgIGRpc2FibGVkPXtmYWxzZX1cbiAgICAgICAgICAgICAgdmFsdWU9XCJzZWxlY3QtYWxsXCJcbiAgICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJzZWxlY3QtYWxsLWNoZWNrYm94XCJcbiAgICAgICAgICAgICAgdGFiSW5kZXg9ey0xfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8U3RhY2sgZGlyZWN0aW9uPVwiY29sdW1uXCI+XG4gICAgICAgICAgICAgICAgPFRleHQgYXM9XCJzcGFuXCIgdmFyaWFudD1cImJvZHlcIiBwbGFjZW1lbnQ9XCJsZWZ0XCI+XG4gICAgICAgICAgICAgICAgICB7c2VsZWN0QWxsLmxhYmVsfVxuICAgICAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgICAgICA8VGV4dFxuICAgICAgICAgICAgICAgICAgYXM9XCJzcGFuXCJcbiAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJib2R5U21hbGxcIlxuICAgICAgICAgICAgICAgICAgc2VudGltZW50PVwibmV1dHJhbFwiXG4gICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJsZWZ0XCJcbiAgICAgICAgICAgICAgICAgIHByb21pbmVuY2U9XCJ3ZWFrXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICB7c2VsZWN0QWxsLmRlc2NyaXB0aW9ufVxuICAgICAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgICAgPC9TdGFjaz5cbiAgICAgICAgICAgIDwvU3R5bGVkQ2hlY2tib3g+XG4gICAgICAgICAgPC9Ecm9wZG93bkl0ZW0+XG4gICAgICAgIDwvU3RhY2s+XG4gICAgICApIDogbnVsbH1cbiAgICAgIDxTdGFjayBpZD1cIml0ZW1zXCIgZ2FwPXswLjI1fT5cbiAgICAgICAge2lzTG9hZGluZyA/IChcbiAgICAgICAgICA8U2tlbGV0b24gdmFyaWFudD1cImJsb2NrXCIgLz5cbiAgICAgICAgKSA6IChcbiAgICAgICAgICBkaXNwbGF5ZWRPcHRpb25zLm1hcCgob3B0aW9uLCBpbmRleCkgPT4gKFxuICAgICAgICAgICAgPERyb3Bkb3duSXRlbVxuICAgICAgICAgICAgICBrZXk9e29wdGlvbi52YWx1ZX1cbiAgICAgICAgICAgICAgYXJpYS1kaXNhYmxlZD17ISFvcHRpb24uZGlzYWJsZWR9XG4gICAgICAgICAgICAgIGFyaWEtc2VsZWN0ZWQ9e1xuICAgICAgICAgICAgICAgIHNlbGVjdGVkRGF0YS5zZWxlY3RlZFZhbHVlcy5pbmNsdWRlcyhvcHRpb24udmFsdWUpICYmXG4gICAgICAgICAgICAgICAgIW9wdGlvbi5kaXNhYmxlZFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIW9wdGlvbi5kaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgICAgaGFuZGxlQ2xpY2sob3B0aW9uKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgYXJpYS1sYWJlbD17b3B0aW9uLnZhbHVlfVxuICAgICAgICAgICAgICBkYXRhLXRlc3RpZD17YG9wdGlvbi0ke29wdGlvbi52YWx1ZX1gfVxuICAgICAgICAgICAgICBpZD17YG9wdGlvbi0ke2luZGV4fWB9XG4gICAgICAgICAgICAgIHJvbGU9XCJvcHRpb25cIlxuICAgICAgICAgICAgICB0YWJJbmRleD17IW9wdGlvbi5kaXNhYmxlZCA/IDAgOiAtMX1cbiAgICAgICAgICAgICAgcmVmPXtcbiAgICAgICAgICAgICAgICBvcHRpb24udmFsdWUgPT09IGRlZmF1bHRTZWFyY2hWYWx1ZSB8fFxuICAgICAgICAgICAgICAgIG9wdGlvbi5zZWFyY2hUZXh0ID09PSBkZWZhdWx0U2VhcmNoVmFsdWVcbiAgICAgICAgICAgICAgICAgID8gZm9jdXNlZEl0ZW1SZWZcbiAgICAgICAgICAgICAgICAgIDogbnVsbFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIG9uS2V5RG93bj17ZXZlbnQgPT5cbiAgICAgICAgICAgICAgICBbJyAnLCAnRW50ZXInXS5pbmNsdWRlcyhldmVudC5rZXkpID8gaGFuZGxlQ2xpY2sob3B0aW9uKSA6IG51bGxcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7bXVsdGlzZWxlY3QgPyAoXG4gICAgICAgICAgICAgICAgPFN0eWxlZENoZWNrYm94XG4gICAgICAgICAgICAgICAgICBjaGVja2VkPXtcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzLmluY2x1ZGVzKG9wdGlvbi52YWx1ZSkgJiZcbiAgICAgICAgICAgICAgICAgICAgIW9wdGlvbi5kaXNhYmxlZFxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e29wdGlvbi5kaXNhYmxlZH1cbiAgICAgICAgICAgICAgICAgIHZhbHVlPXtvcHRpb24udmFsdWV9XG4gICAgICAgICAgICAgICAgICB0YWJJbmRleD17LTF9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPERpc3BsYXlPcHRpb25cbiAgICAgICAgICAgICAgICAgICAgb3B0aW9uPXtvcHRpb259XG4gICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uRGlyZWN0aW9uPXtkZXNjcmlwdGlvbkRpcmVjdGlvbn1cbiAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWxJbmZvUGxhY2VtZW50PXtvcHRpb25hbEluZm9QbGFjZW1lbnR9XG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvU3R5bGVkQ2hlY2tib3g+XG4gICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgPERpc3BsYXlPcHRpb25cbiAgICAgICAgICAgICAgICAgIG9wdGlvbj17b3B0aW9ufVxuICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb25EaXJlY3Rpb249e2Rlc2NyaXB0aW9uRGlyZWN0aW9ufVxuICAgICAgICAgICAgICAgICAgb3B0aW9uYWxJbmZvUGxhY2VtZW50PXtvcHRpb25hbEluZm9QbGFjZW1lbnR9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvRHJvcGRvd25JdGVtPlxuICAgICAgICAgICkpXG4gICAgICAgICl9XG4gICAgICAgIHtsb2FkTW9yZSA/IDxMb2FkTW9yZT57bG9hZE1vcmV9PC9Mb2FkTW9yZT4gOiBudWxsfVxuICAgICAgPC9TdGFjaz5cbiAgICA8L0Ryb3Bkb3duQ29udGFpbmVyPlxuICApXG59XG5leHBvcnQgY29uc3QgRHJvcGRvd24gPSAoe1xuICBjaGlsZHJlbixcbiAgZW1wdHlTdGF0ZSxcbiAgZGVzY3JpcHRpb25EaXJlY3Rpb24sXG4gIHNlYXJjaGFibGUsXG4gIHBsYWNlaG9sZGVyLFxuICBmb290ZXIsXG4gIHJlZlNlbGVjdCxcbiAgbG9hZE1vcmUsXG4gIG9wdGlvbmFsSW5mb1BsYWNlbWVudCxcbiAgaXNMb2FkaW5nLFxuICBzaXplLFxufTogRHJvcGRvd25Qcm9wcykgPT4ge1xuICBjb25zdCB7XG4gICAgc2V0SXNEcm9wZG93blZpc2libGUsXG4gICAgaXNEcm9wZG93blZpc2libGUsXG4gICAgb25TZWFyY2gsXG4gICAgc2VhcmNoSW5wdXQsXG4gICAgb3B0aW9ucyxcbiAgICBkaXNwbGF5ZWRPcHRpb25zLFxuICAgIG51bWJlck9mT3B0aW9ucyxcbiAgfSA9IHVzZVNlbGVjdElucHV0KClcbiAgY29uc3QgdGhlbWUgPSB1c2VUaGVtZSgpXG4gIGNvbnN0IFtzZWFyY2hCYXJBY3RpdmUsIHNldFNlYXJjaEJhckFjdGl2ZV0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW2RlZmF1bHRTZWFyY2hWYWx1ZSwgc2V0RGVmYXVsdFNlYXJjaF0gPSB1c2VTdGF0ZTxzdHJpbmcgfCBudWxsPihudWxsKVxuICBjb25zdCByZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IFtzZWFyY2gsIHNldFNlYXJjaF0gPSB1c2VTdGF0ZTxzdHJpbmc+KCcnKVxuICBjb25zdCBbbWF4V2lkdGgsIHNldFdpZHRoXSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bWJlcj4oKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHJlZlNlbGVjdC5jdXJyZW50ICYmIGlzRHJvcGRvd25WaXNpYmxlKSB7XG4gICAgICBjb25zdCBwb3NpdGlvbiA9XG4gICAgICAgIHJlZlNlbGVjdC5jdXJyZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmJvdHRvbSArXG4gICAgICAgIERST1BET1dOX01BWF9IRUlHSFQgK1xuICAgICAgICBJTlBVVF9TSVpFX0hFSUdIVFtzaXplXSArXG4gICAgICAgIHBhcnNlSW50KHRoZW1lLnNwYWNlWyc1J10sIDEwKVxuICAgICAgY29uc3Qgb3ZlcmZsb3cgPSBwb3NpdGlvbiAtIHdpbmRvdy5pbm5lckhlaWdodFxuICAgICAgaWYgKG92ZXJmbG93ID4gMCkge1xuICAgICAgICBjb25zdCBtb2RhbEVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYmFja2Ryb3AtbW9kYWwnKVxuXG4gICAgICAgIGlmIChtb2RhbEVsZW1lbnQpIHtcbiAgICAgICAgICBtb2RhbEVsZW1lbnQuc2Nyb2xsQnkoeyB0b3A6IG92ZXJmbG93LCBiZWhhdmlvcjogJ3Ntb290aCcgfSlcbiAgICAgICAgfSBlbHNlIHdpbmRvdy5zY3JvbGxCeSh7IHRvcDogb3ZlcmZsb3csIGJlaGF2aW9yOiAnc21vb3RoJyB9KVxuICAgICAgfVxuICAgIH1cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvZXhoYXVzdGl2ZS1kZXBzXG4gIH0sIFtpc0Ryb3Bkb3duVmlzaWJsZSwgcmVmU2VsZWN0LCBzaXplLCByZWYuY3VycmVudF0pXG5cbiAgY29uc3QgcmVzaXplRHJvcGRvd24gPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKFxuICAgICAgcmVmU2VsZWN0LmN1cnJlbnQgJiZcbiAgICAgIHJlZlNlbGVjdC5jdXJyZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoID4gMFxuICAgICkge1xuICAgICAgc2V0V2lkdGgocmVmU2VsZWN0LmN1cnJlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGgpXG4gICAgfVxuICB9LCBbcmVmU2VsZWN0XSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHJlc2l6ZURyb3Bkb3duKClcblxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCByZXNpemVEcm9wZG93bilcblxuICAgIHJldHVybiAoKSA9PiB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgcmVzaXplRHJvcGRvd24pXG4gIH0sIFtyZXNpemVEcm9wZG93bl0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIXNlYXJjaElucHV0KSB7XG4gICAgICBvblNlYXJjaChvcHRpb25zKVxuICAgIH1cbiAgfSwgW29uU2VhcmNoLCBvcHRpb25zLCBzZWFyY2hJbnB1dF0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWlzRHJvcGRvd25WaXNpYmxlKSB7XG4gICAgICBzZXREZWZhdWx0U2VhcmNoKG51bGwpXG4gICAgICBzZXRTZWFyY2goJycpXG4gICAgfVxuXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgZXZlbnQgPT5cbiAgICAgIGhhbmRsZUNsaWNrT3V0c2lkZShcbiAgICAgICAgZXZlbnQsXG4gICAgICAgIHJlZixcbiAgICAgICAgc2V0SXNEcm9wZG93blZpc2libGUsXG4gICAgICAgIHJlZlNlbGVjdCxcbiAgICAgICAgb25TZWFyY2gsXG4gICAgICAgIG9wdGlvbnMsXG4gICAgICApLFxuICAgIClcblxuICAgIGlmICghc2VhcmNoYWJsZSkge1xuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIGV2ZW50ID0+XG4gICAgICAgIGhhbmRsZUtleURvd24oXG4gICAgICAgICAgZXZlbnQsXG4gICAgICAgICAgcmVmLFxuICAgICAgICAgIG9wdGlvbnMsXG4gICAgICAgICAgc2VhcmNoQmFyQWN0aXZlLFxuICAgICAgICAgIHNldFNlYXJjaCxcbiAgICAgICAgICBzZXREZWZhdWx0U2VhcmNoLFxuICAgICAgICAgIHNlYXJjaCxcbiAgICAgICAgKSxcbiAgICAgIClcbiAgICB9XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgZXZlbnQgPT5cbiAgICAgICAgaGFuZGxlQ2xpY2tPdXRzaWRlKFxuICAgICAgICAgIGV2ZW50LFxuICAgICAgICAgIHJlZixcbiAgICAgICAgICBzZXRJc0Ryb3Bkb3duVmlzaWJsZSxcbiAgICAgICAgICByZWZTZWxlY3QsXG4gICAgICAgICAgb25TZWFyY2gsXG4gICAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgKSxcbiAgICAgIClcblxuICAgICAgaWYgKCFzZWFyY2hhYmxlKSB7XG4gICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBldmVudCA9PlxuICAgICAgICAgIGhhbmRsZUtleURvd24oXG4gICAgICAgICAgICBldmVudCxcbiAgICAgICAgICAgIHJlZixcbiAgICAgICAgICAgIG9wdGlvbnMsXG4gICAgICAgICAgICBzZWFyY2hCYXJBY3RpdmUsXG4gICAgICAgICAgICBzZXRTZWFyY2gsXG4gICAgICAgICAgICBzZXREZWZhdWx0U2VhcmNoLFxuICAgICAgICAgICAgc2VhcmNoLFxuICAgICAgICAgICksXG4gICAgICAgIClcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtcbiAgICBpc0Ryb3Bkb3duVmlzaWJsZSxcbiAgICBzZWFyY2hCYXJBY3RpdmUsXG4gICAgb3B0aW9ucyxcbiAgICBvblNlYXJjaCxcbiAgICBzZWFyY2gsXG4gICAgcmVmU2VsZWN0LFxuICAgIHNldERlZmF1bHRTZWFyY2gsXG4gICAgc2V0SXNEcm9wZG93blZpc2libGUsXG4gICAgc2VhcmNoYWJsZSxcbiAgXSlcblxuICAvLyBObyBkYXRhIGlzIGRpc3BsYXllZCAoYmVjYXVzZSBvZiB0aGUgc2VhcmNoIG9yIGJlY2F1c2Ugbm8gZGF0YSBpcyBwcm92aWRlZClcbiAgLy8gU2V0IHRvIHRydWUgd2hlbiBub0RhdGEgYnkgZGVmYXVsdFxuICBjb25zdCBpc0VtcHR5ID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKG51bWJlck9mT3B0aW9ucyA9PT0gMCkgcmV0dXJuIHRydWVcbiAgICBpZiAoQXJyYXkuaXNBcnJheShkaXNwbGF5ZWRPcHRpb25zKSkge1xuICAgICAgcmV0dXJuICEoZGlzcGxheWVkT3B0aW9ucy5sZW5ndGggPiAwKVxuICAgIH1cbiAgICBjb25zdCBncm91cHMgPSBPYmplY3Qua2V5cyhkaXNwbGF5ZWRPcHRpb25zKVxuICAgIGZvciAoY29uc3QgZ3JvdXAgb2YgZ3JvdXBzKSB7XG4gICAgICBpZiAoZGlzcGxheWVkT3B0aW9uc1tncm91cF0ubGVuZ3RoICE9PSAwKSB7XG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0cnVlXG4gIH0sIFtkaXNwbGF5ZWRPcHRpb25zLCBudW1iZXJPZk9wdGlvbnNdKVxuXG4gIGNvbnN0IGNvbXB1dGVkRm9vdGVyID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKGZvb3Rlcikge1xuICAgICAgaWYgKHR5cGVvZiBmb290ZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICA8UG9wdXBGb290ZXI+e2Zvb3RlcigoKSA9PiBzZXRJc0Ryb3Bkb3duVmlzaWJsZShmYWxzZSkpfTwvUG9wdXBGb290ZXI+XG4gICAgICAgIClcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIDxQb3B1cEZvb3Rlcj57Zm9vdGVyfTwvUG9wdXBGb290ZXI+XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGxcbiAgfSwgW2Zvb3Rlciwgc2V0SXNEcm9wZG93blZpc2libGVdKVxuXG4gIHJldHVybiAoXG4gICAgPFN0eWxlZFBvcHVwXG4gICAgICB2aXNpYmxlPXtpc0Ryb3Bkb3duVmlzaWJsZX1cbiAgICAgIHRleHQ9e1xuICAgICAgICA8U3RhY2s+XG4gICAgICAgICAge3NlYXJjaGFibGUgJiYgIWlzTG9hZGluZyAmJiBudW1iZXJPZk9wdGlvbnMgPj0gNiA/IChcbiAgICAgICAgICAgIDxTZWFyY2hCYXJEcm9wZG93blxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj17cGxhY2Vob2xkZXJ9XG4gICAgICAgICAgICAgIGRpc3BsYXllZE9wdGlvbnM9e2Rpc3BsYXllZE9wdGlvbnN9XG4gICAgICAgICAgICAgIHNldFNlYXJjaEJhckFjdGl2ZT17c2V0U2VhcmNoQmFyQWN0aXZlfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICA8Q3JlYXRlRHJvcGRvd25cbiAgICAgICAgICAgIGlzRW1wdHk9e2lzRW1wdHl9XG4gICAgICAgICAgICBlbXB0eVN0YXRlPXtlbXB0eVN0YXRlfVxuICAgICAgICAgICAgZGVzY3JpcHRpb25EaXJlY3Rpb249e2Rlc2NyaXB0aW9uRGlyZWN0aW9ufVxuICAgICAgICAgICAgbG9hZE1vcmU9e2xvYWRNb3JlfVxuICAgICAgICAgICAgb3B0aW9uYWxJbmZvUGxhY2VtZW50PXtvcHRpb25hbEluZm9QbGFjZW1lbnR9XG4gICAgICAgICAgICBkZWZhdWx0U2VhcmNoVmFsdWU9e2RlZmF1bHRTZWFyY2hWYWx1ZX1cbiAgICAgICAgICAgIGlzTG9hZGluZz17aXNMb2FkaW5nfVxuICAgICAgICAgIC8+XG4gICAgICAgICAge2NvbXB1dGVkRm9vdGVyfVxuICAgICAgICA8L1N0YWNrPlxuICAgICAgfVxuICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcbiAgICAgIGRpc2FibGVBbmltYXRpb25cbiAgICAgIG1heFdpZHRoPXttYXhXaWR0aCA/PyByZWZTZWxlY3QuY3VycmVudD8ub2Zmc2V0V2lkdGh9XG4gICAgICBoYXNBcnJvdz17ZmFsc2V9XG4gICAgICByZWY9e3JlZn1cbiAgICAgIHRhYkluZGV4PXswfVxuICAgICAgcm9sZT1cImRpYWxvZ1wiXG4gICAgICBkZWJvdW5jZURlbGF5PXswfVxuICAgICAgY29udGFpbmVyRnVsbFdpZHRoXG4gICAgICBhbGlnbj1cInN0YXJ0XCJcbiAgICA+XG4gICAgICB7Y2hpbGRyZW59XG4gICAgPC9TdHlsZWRQb3B1cD5cbiAgKVxufVxuIl19 */",
159
159
  toString: _EMOTION_STRINGIFIED_CSS_ERROR__
160
160
  });
161
161
  const EmptyState = /* @__PURE__ */ _styled__default.default(index$1.Stack, process.env.NODE_ENV === "production" ? {
@@ -165,7 +165,7 @@ const EmptyState = /* @__PURE__ */ _styled__default.default(index$1.Stack, proce
165
165
  label: "EmptyState"
166
166
  })("padding:", ({
167
167
  theme
168
- }) => theme.space[2], ";" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL3VsdHJhdmlvbGV0L3VsdHJhdmlvbGV0L3BhY2thZ2VzL3VpL3NyYy9jb21wb25lbnRzL1NlbGVjdElucHV0VjIvRHJvcGRvd24udHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQTBLZ0MiLCJmaWxlIjoiL2hvbWUvcnVubmVyL3dvcmsvdWx0cmF2aW9sZXQvdWx0cmF2aW9sZXQvcGFja2FnZXMvdWkvc3JjL2NvbXBvbmVudHMvU2VsZWN0SW5wdXRWMi9Ecm9wZG93bi50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1c2VUaGVtZSB9IGZyb20gJ0BlbW90aW9uL3JlYWN0J1xuaW1wb3J0IHN0eWxlZCBmcm9tICdAZW1vdGlvbi9zdHlsZWQnXG5pbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VNZW1vLCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgdHlwZSB7XG4gIERpc3BhdGNoLFxuICBLZXlib2FyZEV2ZW50LFxuICBSZWFjdE5vZGUsXG4gIFJlZk9iamVjdCxcbiAgU2V0U3RhdGVBY3Rpb24sXG59IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgQ2hlY2tib3ggfSBmcm9tICcuLi9DaGVja2JveCdcbmltcG9ydCB7IFBvcHVwIH0gZnJvbSAnLi4vUG9wdXAnXG5pbXBvcnQgeyBTa2VsZXRvbiB9IGZyb20gJy4uL1NrZWxldG9uJ1xuaW1wb3J0IHsgU3RhY2sgfSBmcm9tICcuLi9TdGFjaydcbmltcG9ydCB7IFRleHQgfSBmcm9tICcuLi9UZXh0J1xuaW1wb3J0IHsgRGlzcGxheU9wdGlvbiB9IGZyb20gJy4vRHJvcGRvd25PcHRpb24nXG5pbXBvcnQgeyBTZWFyY2hCYXJEcm9wZG93biB9IGZyb20gJy4vU2VhcmNoQmFyRHJvcGRvd24nXG5pbXBvcnQgeyB1c2VTZWxlY3RJbnB1dCB9IGZyb20gJy4vU2VsZWN0SW5wdXRQcm92aWRlcidcbmltcG9ydCB7IHR5cGUgRGF0YVR5cGUsIElOUFVUX1NJWkVfSEVJR0hULCB0eXBlIE9wdGlvblR5cGUgfSBmcm9tICcuL3R5cGVzJ1xuXG5jb25zdCBEUk9QRE9XTl9NQVhfSEVJR0hUID0gMjU2XG5cbmV4cG9ydCB0eXBlIERyb3Bkb3duUHJvcHMgPSB7XG4gIGNoaWxkcmVuOiBSZWFjdE5vZGVcbiAgZW1wdHlTdGF0ZTogUmVhY3ROb2RlXG4gIGRlc2NyaXB0aW9uRGlyZWN0aW9uOiAncm93JyB8ICdjb2x1bW4nXG4gIHNlYXJjaGFibGU6IGJvb2xlYW5cbiAgcGxhY2Vob2xkZXI6IHN0cmluZ1xuICBmb290ZXI/OiBSZWFjdE5vZGVcbiAgcmVmU2VsZWN0OiBSZWZPYmplY3Q8SFRNTERpdkVsZW1lbnQ+XG4gIGxvYWRNb3JlPzogUmVhY3ROb2RlXG4gIG9wdGlvbmFsSW5mb1BsYWNlbWVudDogJ2xlZnQnIHwgJ3JpZ2h0J1xuICBpc0xvYWRpbmc/OiBib29sZWFuXG4gIHNpemU6ICdzbWFsbCcgfCAnbWVkaXVtJyB8ICdsYXJnZSdcbn1cblxuZXhwb3J0IHR5cGUgQ3JlYXRlRHJvcGRvd25Qcm9wcyA9IHtcbiAgaXNFbXB0eTogYm9vbGVhblxuICBlbXB0eVN0YXRlOiBSZWFjdE5vZGVcbiAgZGVzY3JpcHRpb25EaXJlY3Rpb246ICdyb3cnIHwgJ2NvbHVtbidcbiAgbG9hZE1vcmU/OiBSZWFjdE5vZGVcbiAgb3B0aW9uYWxJbmZvUGxhY2VtZW50OiAnbGVmdCcgfCAncmlnaHQnXG4gIGRlZmF1bHRTZWFyY2hWYWx1ZTogc3RyaW5nIHwgbnVsbFxuICBpc0xvYWRpbmc/OiBib29sZWFuXG59XG5cbmNvbnN0IE5PTl9TRUFSQ0hBQkxFX0tFWVMgPSBbXG4gICdUYWInLFxuICAnICcsXG4gICdFbnRlcicsXG4gICdDYXBzTG9jaycsXG4gICdTaGlmdCcsXG4gICdBcnJvd0Rvd24nLFxuICAnQXJyb3dVcCcsXG4gICdBcnJvd0xlZnQnLFxuICAnQXJyb3dSaWdodCcsXG4gICdFc2NhcGUnLFxuXVxuXG5jb25zdCBTdHlsZWRQb3B1cCA9IHN0eWxlZChQb3B1cClgXG4gIHdpZHRoOiAxMDAlO1xuICBtaW4td2lkdGg6IDMyMHB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5vdGhlci5lbGV2YXRpb24uYmFja2dyb3VuZC5yYWlzZWR9O1xuICBjb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMubmV1dHJhbC50ZXh0fTtcbiAgYm94LXNoYWRvdzogJHsoeyB0aGVtZSB9KSA9PiBgJHt0aGVtZS5zaGFkb3dzLnJhaXNlZFswXX0sICR7dGhlbWUuc2hhZG93cy5yYWlzZWRbMV19YH07XG4gIHBhZGRpbmc6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMF19O1xuICBtYXJnaW4tYm90dG9tOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzEwXX07XG5gXG5cbmNvbnN0IERyb3Bkb3duQ29udGFpbmVyID0gc3R5bGVkKFN0YWNrKTx7ICdkYXRhLWdyb3VwZWQnOiBib29sZWFuIH0+YFxuICBtYXgtaGVpZ2h0OiAke0RST1BET1dOX01BWF9IRUlHSFR9cHg7XG4gIG92ZXJmbG93LXk6IHNjcm9sbDtcbiAgcGFkZGluZzogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVswXX07XG4gIHBhZGRpbmctYm90dG9tOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzAuNV19O1xuICBwYWRkaW5nLXRvcDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVswLjVdfTtcblxuICAmW2RhdGEtZ3JvdXBlZD1cInRydWVcIl0ge1xuICAgIHBhZGRpbmctdG9wOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzBdfTtcbiAgfVxuYFxuY29uc3QgRHJvcGRvd25Hcm91cCA9IHN0eWxlZC5idXR0b248eyAnZGF0YS1zZWxlY3Rncm91cCc6IGJvb2xlYW4gfT5gXG4gIGRpc3BsYXk6IGZsZXg7XG4gIHdpZHRoOiAxMDAlO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGxlZnQ7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGJvcmRlcjogbm9uZTtcbiAgYmFja2dyb3VuZC1jb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMubmV1dHJhbC5iYWNrZ3JvdW5kV2Vha307XG4gIHBvc2l0aW9uOiBzdGlja3k7XG4gIHRvcDogMHB4O1xuICBwYWRkaW5nLXJpZ2h0OiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzJdfTtcbiAgcGFkZGluZy1sZWZ0OiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzJdfTtcbiAgaGVpZ2h0OiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzRdfTtcbiAgdGV4dC1hbGlnbjogbGVmdDtcbiAgbWFyZ2luLWJvdHRvbTogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsnMC4yNSddfTtcblxuICAmOmZvY3VzIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5uZXV0cmFsLmJhY2tncm91bmRXZWFrfTtcbiAgICBvdXRsaW5lOiBub25lO1xuICB9XG5cbiAgJltkYXRhLXNlbGVjdGdyb3VwPSd0cnVlJ10ge1xuICAgIHBhZGRpbmctbGVmdDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsyXX07XG4gICAgYm9yZGVyLWxlZnQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMC41XX0gc29saWQgJHsoeyB0aGVtZSB9KSA9PlxuICAgICAgdGhlbWUuY29sb3JzLm5ldXRyYWwuYmFja2dyb3VuZFdlYWt9O1xuICB9XG5cbiAgJltkYXRhLXNlbGVjdGdyb3VwPSd0cnVlJ106Zm9jdXMge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwuYmFja2dyb3VuZEhvdmVyfTtcbiAgfVxuYFxuY29uc3QgRHJvcGRvd25Hcm91cFdyYXBwZXIgPSBzdHlsZWQuZGl2YFxuICBwb3NpdGlvbjogc3RpY2t5O1xuICB0b3A6IDBweDtcbmBcbmNvbnN0IERyb3Bkb3duSXRlbSA9IHN0eWxlZC5kaXY8e1xuICAnYXJpYS1zZWxlY3RlZCc6IGJvb2xlYW5cbiAgJ2FyaWEtZGlzYWJsZWQnOiBib29sZWFuXG59PmBcbiAgdGV4dC1hbGlnbjpsZWZ0O1xuICBib3JkZXI6IG5vbmU7XG4gIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm90aGVyLmVsZXZhdGlvbi5iYWNrZ3JvdW5kLnJhaXNlZH07XG5cbiAgcGFkZGluZzogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsnMS41J119ICR7KHsgdGhlbWUgfSkgPT5cbiAgICB0aGVtZS5zcGFjZVsnMiddfSAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWycxLjUnXX0gJHsoeyB0aGVtZSB9KSA9PlxuICAgIHRoZW1lLnNwYWNlWycyJ119O1xuICBtYXJnaW4tbGVmdDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsnMC41J119O1xuICBtYXJnaW4tcmlnaHQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbJzAuNSddfTtcblxuICBjb2xvcjogICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwudGV4dH07XG4gIGJvcmRlci1yYWRpdXM6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUucmFkaWkuZGVmYXVsdH07XG5cbiAgJjpob3ZlciwgOmZvY3VzIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5wcmltYXJ5LmJhY2tncm91bmR9O1xuICAgIGNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5wcmltYXJ5LnRleHR9O1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBvdXRsaW5lOiBub25lO1xuICB9XG5cbiAgJlthcmlhLXNlbGVjdGVkPSd0cnVlJ10ge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLnByaW1hcnkuYmFja2dyb3VuZH07XG4gIH1cblxuICAmW2FyaWEtZGlzYWJsZWQ9XCJ0cnVlXCJdIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5uZXV0cmFsLmJhY2tncm91bmREaXNhYmxlZH07XG4gICAgY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwudGV4dERpc2FibGVkfTtcbiAgfVxuXG4gICZbYXJpYS1kaXNhYmxlZD1cInRydWVcIl06aG92ZXIsIFthcmlhLWRpc2FibGVkPVwidHJ1ZVwiXTpmb2N1cyB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHsoeyB0aGVtZSB9KSA9PlxuICAgICAgdGhlbWUuY29sb3JzLm5ldXRyYWwuYmFja2dyb3VuZFN0cm9uZ0Rpc2FibGVkfTtcbiAgICBjb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMubmV1dHJhbC50ZXh0U3Ryb25nRGlzYWJsZWR9O1xuICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgfVxuYFxuXG5jb25zdCBQb3B1cEZvb3RlciA9IHN0eWxlZC5kaXZgXG4gIHdpZHRoOiAxMDAlO1xuICBwYWRkaW5nOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzEuNV19ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMl19XG4gICAgJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsxLjVdfSAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzJdfTtcbiAgYm94LXNoYWRvdzogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zaGFkb3dzLmRyb3Bkb3dufTtcbmBcbmNvbnN0IFN0eWxlZENoZWNrYm94ID0gc3R5bGVkKENoZWNrYm94KWBcbiAgd2lkdGg6IDEwMCU7XG4gIHBvc2l0aW9uOiBzdGF0aWM7XG4gIHRleHQtYWxpZ246IGxlZnQ7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuYCAvLyBwb2ludGVyLWV2ZW50czogbm9uZSBwcmV2ZW50cyBhbnkgZXJyb3Igd2hlbiB1c2luZyB0aGUgY2hlY2tib3ggaW4gYSBmb3JtIHNpbmNlIGl0IGlzIGFuIHVubmFtZWQgaW5wdXRcblxuY29uc3QgRW1wdHlTdGF0ZSA9IHN0eWxlZChTdGFjaylgXG4gIHBhZGRpbmc6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMl19O1xuYFxuY29uc3QgTG9hZE1vcmUgPSBzdHlsZWQoU3RhY2spYFxuICBwYWRkaW5nOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzAuNV19O1xuYFxuXG5jb25zdCBtb3ZlRm9jdXNEb3duID0gKCkgPT4ge1xuICBjb25zdCBvcHRpb25zID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcbiAgICAnI2l0ZW1zID4gZGl2W3JvbGU9XCJvcHRpb25cIl06bm90KFtkaXNhYmxlZF0pJyxcbiAgKVxuICBjb25zdCBhY3RpdmVJdGVtID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudFxuICBpZiAob3B0aW9ucykge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgb3B0aW9ucz8ubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgIGNvbnN0IGxpc3RMZW5ndGggPSBvcHRpb25zLmxlbmd0aFxuICAgICAgaWYgKGFjdGl2ZUl0ZW0gPT09IG9wdGlvbnNbaV0gJiYgYWN0aXZlSXRlbSAhPT0gb3B0aW9uc1tsaXN0TGVuZ3RoIC0gMV0pIHtcbiAgICAgICAgOyhvcHRpb25zW2kgKyAxXSBhcyBIVE1MRWxlbWVudCkuZm9jdXMoKVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuY29uc3QgbW92ZUZvY3VzVXAgPSAoKSA9PiB7XG4gIGNvbnN0IG9wdGlvbnMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFxuICAgICcjaXRlbXMgPiBkaXZbcm9sZT1cIm9wdGlvblwiXTpub3QoW2Rpc2FibGVkXSknLFxuICApXG4gIGNvbnN0IGFjdGl2ZUl0ZW0gPSBkb2N1bWVudC5hY3RpdmVFbGVtZW50XG5cbiAgaWYgKG9wdGlvbnMpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG9wdGlvbnMubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgIGlmIChhY3RpdmVJdGVtID09PSBvcHRpb25zW2ldICYmIGFjdGl2ZUl0ZW0gIT09IG9wdGlvbnNbMF0pIHtcbiAgICAgICAgOyhvcHRpb25zW2kgLSAxXSBhcyBIVE1MRWxlbWVudCkuZm9jdXMoKVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuY29uc3QgaGFuZGxlS2V5RG93blNlbGVjdCA9IChldmVudDogS2V5Ym9hcmRFdmVudDxIVE1MRGl2RWxlbWVudD4pID0+IHtcbiAgaWYgKGV2ZW50LmtleSA9PT0gJ0Fycm93RG93bicpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgbW92ZUZvY3VzRG93bigpXG4gIH1cblxuICBpZiAoZXZlbnQua2V5ID09PSAnQXJyb3dVcCcpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgbW92ZUZvY3VzVXAoKVxuICB9XG59XG5jb25zdCBoYW5kbGVDbGlja091dHNpZGUgPSAoXG4gIGV2ZW50OiBNb3VzZUV2ZW50LFxuICByZWY6IFJlZk9iamVjdDxIVE1MRGl2RWxlbWVudD4sXG4gIHNldElzRHJvcGRvd25WaXNpYmlsZTogRGlzcGF0Y2g8U2V0U3RhdGVBY3Rpb248Ym9vbGVhbj4+LFxuICByZWZTZWxlY3Q6IFJlZk9iamVjdDxIVE1MRGl2RWxlbWVudD4sXG4gIG9uU2VhcmNoOiBEaXNwYXRjaDxTZXRTdGF0ZUFjdGlvbjxEYXRhVHlwZT4+LFxuICBvcHRpb25zOiBEYXRhVHlwZSxcbikgPT4ge1xuICBpZiAoXG4gICAgcmVmLmN1cnJlbnQgJiZcbiAgICAhcmVmLmN1cnJlbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0IGFzIE5vZGUpICYmXG4gICAgIXJlZlNlbGVjdC5jdXJyZW50Py5jb250YWlucyhldmVudC50YXJnZXQgYXMgTm9kZSlcbiAgKSB7XG4gICAgc2V0SXNEcm9wZG93blZpc2liaWxlKGZhbHNlKSAvLyBoaWRlIGRyb3Bkb3duIHdoZW4gY2xpY2tpbmcgb3V0c2lkZSBvZiB0aGUgZHJvcGRvd25cbiAgICBvblNlYXJjaChvcHRpb25zKSAvLyByZXNldCBkaXNwbGF5ZWQgb3B0aW9ucyB0byBkZWZhdWx0IHdoZW4gZHJvcGRvd24gaXMgaGlkZGVuXG4gIH1cbn1cblxuY29uc3QgaGFuZGxlS2V5RG93biA9IChcbiAgZXZlbnQ6IGdsb2JhbFRoaXMuS2V5Ym9hcmRFdmVudCxcbiAgcmVmOiBSZWZPYmplY3Q8SFRNTERpdkVsZW1lbnQ+LFxuICBvcHRpb25zOiBEYXRhVHlwZSxcbiAgc2VhcmNoQmFyQWN0aXZlOiBib29sZWFuLFxuICBzZXRTZWFyY2g6IERpc3BhdGNoPFNldFN0YXRlQWN0aW9uPHN0cmluZz4+LFxuICBzZXREZWZhdWx0U2VhcmNoOiBEaXNwYXRjaDxTZXRTdGF0ZUFjdGlvbjxzdHJpbmcgfCBudWxsPj4sXG4gIHNlYXJjaDogc3RyaW5nLFxuKSA9PiB7XG4gIC8vIERlYWxzIHdpdGggZGVmYXVsdCBzZWFyY2hcbiAgaWYgKFxuICAgIHJlZi5jdXJyZW50ICYmXG4gICAgIXNlYXJjaEJhckFjdGl2ZSAmJlxuICAgICFOT05fU0VBUkNIQUJMRV9LRVlTLmluY2x1ZGVzKGV2ZW50LmtleSkgJiZcbiAgICBkb2N1bWVudC5hY3RpdmVFbGVtZW50Py5hcmlhTGFiZWwgIT09ICdzZWFyY2gtYmFyJ1xuICApIHtcbiAgICBjb25zdCBjdXJyZW50U2VhcmNoID0gc2VhcmNoICsgZXZlbnQua2V5XG4gICAgc2V0U2VhcmNoKGN1cnJlbnRTZWFyY2gpXG4gICAgcmVmLmN1cnJlbnQuZm9jdXMoKVxuICAgIGlmICghQXJyYXkuaXNBcnJheShvcHRpb25zKSkge1xuICAgICAgY29uc3QgY2xvc2VzdE9wdGlvbnMgPSB7IC4uLm9wdGlvbnMgfVxuICAgICAgT2JqZWN0LmtleXMoY2xvc2VzdE9wdGlvbnMpLm1hcCgoZ3JvdXA6IHN0cmluZykgPT4ge1xuICAgICAgICBjbG9zZXN0T3B0aW9uc1tncm91cF0gPSBjbG9zZXN0T3B0aW9uc1tncm91cF0uZmlsdGVyKG9wdGlvbiA9PlxuICAgICAgICAgIG9wdGlvbi5zZWFyY2hUZXh0XG4gICAgICAgICAgICA/IG9wdGlvbi5zZWFyY2hUZXh0LnRvTG9jYWxlTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChjdXJyZW50U2VhcmNoKVxuICAgICAgICAgICAgOiBvcHRpb24udmFsdWUudG9Mb2NhbGVMb3dlckNhc2UoKS5zdGFydHNXaXRoKGN1cnJlbnRTZWFyY2gpLFxuICAgICAgICApXG5cbiAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgIH0pXG4gICAgICBjb25zdCBjbG9zZXN0T3B0aW9uID0gY2xvc2VzdE9wdGlvbnNbT2JqZWN0LmtleXMoY2xvc2VzdE9wdGlvbnMpWzBdXVswXVxuICAgICAgaWYgKGNsb3Nlc3RPcHRpb24pIHtcbiAgICAgICAgc2V0RGVmYXVsdFNlYXJjaChjbG9zZXN0T3B0aW9uLnNlYXJjaFRleHQgPz8gY2xvc2VzdE9wdGlvbi52YWx1ZSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNldERlZmF1bHRTZWFyY2gobnVsbClcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgY2xvc2VzdE9wdGlvbiA9IFsuLi5vcHRpb25zXS5maWx0ZXIob3B0aW9uID0+XG4gICAgICAgIG9wdGlvbi5zZWFyY2hUZXh0XG4gICAgICAgICAgPyBvcHRpb24uc2VhcmNoVGV4dC50b0xvY2FsZUxvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoY3VycmVudFNlYXJjaClcbiAgICAgICAgICA6IG9wdGlvbi52YWx1ZS50b0xvY2FsZUxvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoY3VycmVudFNlYXJjaCksXG4gICAgICApWzBdXG4gICAgICBpZiAoY2xvc2VzdE9wdGlvbikge1xuICAgICAgICBzZXREZWZhdWx0U2VhcmNoKGNsb3Nlc3RPcHRpb24uc2VhcmNoVGV4dCA/PyBjbG9zZXN0T3B0aW9uLnZhbHVlKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2V0RGVmYXVsdFNlYXJjaChudWxsKVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuY29uc3QgQ3JlYXRlRHJvcGRvd24gPSAoe1xuICBpc0VtcHR5LFxuICBlbXB0eVN0YXRlLFxuICBkZXNjcmlwdGlvbkRpcmVjdGlvbixcbiAgbG9hZE1vcmUsXG4gIG9wdGlvbmFsSW5mb1BsYWNlbWVudCxcbiAgZGVmYXVsdFNlYXJjaFZhbHVlLFxuICBpc0xvYWRpbmcsXG59OiBDcmVhdGVEcm9wZG93blByb3BzKSA9PiB7XG4gIGNvbnN0IHtcbiAgICBzZXRJc0Ryb3Bkb3duVmlzaWJsZSxcbiAgICBvbkNoYW5nZSxcbiAgICBvcHRpb25zLFxuICAgIG11bHRpc2VsZWN0LFxuICAgIHNlbGVjdEFsbCxcbiAgICBzZWxlY3RBbGxHcm91cCxcbiAgICBkaXNwbGF5ZWRPcHRpb25zLFxuICAgIHNldFNlbGVjdGVkRGF0YSxcbiAgICBzZWxlY3RlZERhdGEsXG4gIH0gPSB1c2VTZWxlY3RJbnB1dCgpXG4gIGNvbnN0IGZvY3VzZWRJdGVtUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGRlZmF1bHRTZWFyY2hWYWx1ZSAmJiBmb2N1c2VkSXRlbVJlZj8uY3VycmVudCkge1xuICAgICAgZm9jdXNlZEl0ZW1SZWYuY3VycmVudC5mb2N1cygpXG4gICAgfVxuICB9LCBbZGVmYXVsdFNlYXJjaFZhbHVlXSlcblxuICBpZiAoaXNFbXB0eSkge1xuICAgIHJldHVybiAoXG4gICAgICA8RW1wdHlTdGF0ZSBnYXA9ezJ9IGFsaWduSXRlbXM9XCJjZW50ZXJcIj5cbiAgICAgICAge2VtcHR5U3RhdGUgPz8gKFxuICAgICAgICAgIDxUZXh0IHZhcmlhbnQ9XCJib2R5U3Ryb25nXCIgYXM9XCJwXCI+XG4gICAgICAgICAgICBObyBvcHRpb25zXG4gICAgICAgICAgPC9UZXh0PlxuICAgICAgICApfVxuICAgICAgPC9FbXB0eVN0YXRlPlxuICAgIClcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZUNsaWNrID0gKGNsaWNrZWRPcHRpb246IE9wdGlvblR5cGUsIGdyb3VwPzogc3RyaW5nKSA9PiB7XG4gICAgc2V0U2VsZWN0ZWREYXRhKHsgdHlwZTogJ3NlbGVjdE9wdGlvbicsIGNsaWNrZWRPcHRpb24sIGdyb3VwIH0pXG4gICAgaWYgKG11bHRpc2VsZWN0KSB7XG4gICAgICBpZiAoc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzLmluY2x1ZGVzKGNsaWNrZWRPcHRpb24udmFsdWUpKSB7XG4gICAgICAgIG9uQ2hhbmdlPy4oXG4gICAgICAgICAgc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzLmZpbHRlcihcbiAgICAgICAgICAgIHZhbCA9PiB2YWwgIT09IGNsaWNrZWRPcHRpb24udmFsdWUsXG4gICAgICAgICAgKSxcbiAgICAgICAgKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb25DaGFuZ2U/LihbLi4uc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzLCBjbGlja2VkT3B0aW9uLnZhbHVlXSlcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgb25DaGFuZ2U/LihjbGlja2VkT3B0aW9uLnZhbHVlKVxuICAgIH1cbiAgICBzZXRJc0Ryb3Bkb3duVmlzaWJsZShtdWx0aXNlbGVjdCkgLy8gaGlkZSB0aGUgZHJvcGRvd24gb24gY2xpY2sgd2hlbiBzaW5nbGUgc2VsZWN0IG9ubHlcbiAgfVxuXG4gIGNvbnN0IHNlbGVjdEFsbE9wdGlvbnMgPSAoKSA9PiB7XG4gICAgaWYgKG11bHRpc2VsZWN0KSB7XG4gICAgICBzZXRTZWxlY3RlZERhdGEoeyB0eXBlOiAnc2VsZWN0QWxsJyB9KVxuICAgICAgaWYgKHNlbGVjdGVkRGF0YS5hbGxTZWxlY3RlZCAmJiBvbkNoYW5nZSkge1xuICAgICAgICBvbkNoYW5nZShbXSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGFsbFZhbHVlczogT3B0aW9uVHlwZVtdID0gW11cbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KG9wdGlvbnMpKSB7XG4gICAgICAgICAgT2JqZWN0LmtleXMob3B0aW9ucykubWFwKChncm91cDogc3RyaW5nKSA9PlxuICAgICAgICAgICAgb3B0aW9uc1tncm91cF0ubWFwKG9wdGlvbiA9PiB7XG4gICAgICAgICAgICAgIGlmICghb3B0aW9uLmRpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgYWxsVmFsdWVzLnB1c2gob3B0aW9uKVxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIClcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvcHRpb25zLm1hcChvcHRpb24gPT4gYWxsVmFsdWVzLnB1c2gob3B0aW9uKSlcbiAgICAgICAgfVxuICAgICAgICBvbkNoYW5nZT8uKGFsbFZhbHVlcy5tYXAodmFsdWUgPT4gdmFsdWUudmFsdWUpKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGhhbmRsZVNlbGVjdEdyb3VwID0gKGdyb3VwOiBzdHJpbmcpID0+IHtcbiAgICBpZiAobXVsdGlzZWxlY3QpIHtcbiAgICAgIHNldFNlbGVjdGVkRGF0YSh7IHR5cGU6ICdzZWxlY3RHcm91cCcsIHNlbGVjdGVkR3JvdXA6IGdyb3VwIH0pXG4gICAgICBpZiAoIUFycmF5LmlzQXJyYXkob3B0aW9ucykpIHtcbiAgICAgICAgaWYgKHNlbGVjdGVkRGF0YS5zZWxlY3RlZEdyb3Vwcy5pbmNsdWRlcyhncm91cCkpIHtcbiAgICAgICAgICBjb25zdCBuZXdTZWxlY3RlZFZhbHVlcyA9IFsuLi5zZWxlY3RlZERhdGEuc2VsZWN0ZWRWYWx1ZXNdLmZpbHRlcihcbiAgICAgICAgICAgIHNlbGVjdGVkVmFsdWUgPT5cbiAgICAgICAgICAgICAgIW9wdGlvbnNbZ3JvdXBdLmZpbmQob3B0aW9uID0+IG9wdGlvbi52YWx1ZSA9PT0gc2VsZWN0ZWRWYWx1ZSksXG4gICAgICAgICAgKVxuICAgICAgICAgIG9uQ2hhbmdlPy4obmV3U2VsZWN0ZWRWYWx1ZXMpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgbmV3U2VsZWN0ZWRWYWx1ZXMgPSBbLi4uc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzXVxuXG4gICAgICAgICAgb3B0aW9uc1tncm91cF0ubWFwKG9wdGlvbiA9PlxuICAgICAgICAgICAgbmV3U2VsZWN0ZWRWYWx1ZXMuaW5jbHVkZXMob3B0aW9uLnZhbHVlKSB8fCBvcHRpb24uZGlzYWJsZWRcbiAgICAgICAgICAgICAgPyBudWxsXG4gICAgICAgICAgICAgIDogbmV3U2VsZWN0ZWRWYWx1ZXMucHVzaChvcHRpb24udmFsdWUpLFxuICAgICAgICAgIClcbiAgICAgICAgICBvbkNoYW5nZT8uKG5ld1NlbGVjdGVkVmFsdWVzKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuICFBcnJheS5pc0FycmF5KGRpc3BsYXllZE9wdGlvbnMpID8gKFxuICAgIDxEcm9wZG93bkNvbnRhaW5lclxuICAgICAgcm9sZT1cImxpc3Rib3hcIlxuICAgICAgaWQ9XCJzZWxlY3QtZHJvcGRvd25cIlxuICAgICAgb25LZXlEb3duPXtoYW5kbGVLZXlEb3duU2VsZWN0fVxuICAgICAgZGF0YS1ncm91cGVkXG4gICAgPlxuICAgICAge2lzTG9hZGluZyA/IChcbiAgICAgICAgPFNrZWxldG9uIHZhcmlhbnQ9XCJibG9ja1wiIC8+XG4gICAgICApIDogKFxuICAgICAgICA8PlxuICAgICAgICAgIHtzZWxlY3RBbGwgJiYgbXVsdGlzZWxlY3QgPyAoXG4gICAgICAgICAgICA8U3RhY2sgaWQ9XCJpdGVtc1wiPlxuICAgICAgICAgICAgICA8RHJvcGRvd25JdGVtXG4gICAgICAgICAgICAgICAgYXJpYS1kaXNhYmxlZD17ZmFsc2V9XG4gICAgICAgICAgICAgICAgYXJpYS1zZWxlY3RlZD17c2VsZWN0ZWREYXRhLmFsbFNlbGVjdGVkfVxuICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJzZWxlY3QtYWxsXCJcbiAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD1cInNlbGVjdC1hbGxcIlxuICAgICAgICAgICAgICAgIGlkPVwic2VsZWN0LWFsbFwiXG4gICAgICAgICAgICAgICAgdGFiSW5kZXg9ezB9XG4gICAgICAgICAgICAgICAgcm9sZT1cIm9wdGlvblwiXG4gICAgICAgICAgICAgICAgb25LZXlEb3duPXtldmVudCA9PlxuICAgICAgICAgICAgICAgICAgWycgJywgJ0VudGVyJ10uaW5jbHVkZXMoZXZlbnQua2V5KSA/IHNlbGVjdEFsbE9wdGlvbnMoKSA6IG51bGxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgb25DbGljaz17c2VsZWN0QWxsT3B0aW9uc31cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxTdHlsZWRDaGVja2JveFxuICAgICAgICAgICAgICAgICAgY2hlY2tlZD17c2VsZWN0ZWREYXRhLmFsbFNlbGVjdGVkfVxuICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgdmFsdWU9XCJzZWxlY3QtYWxsXCJcbiAgICAgICAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwic2VsZWN0LWFsbC1jaGVja2JveFwiXG4gICAgICAgICAgICAgICAgICB0YWJJbmRleD17LTF9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPFN0YWNrIGRpcmVjdGlvbj1cImNvbHVtblwiPlxuICAgICAgICAgICAgICAgICAgICA8VGV4dCBhcz1cInNwYW5cIiB2YXJpYW50PVwiYm9keVwiIHBsYWNlbWVudD1cImxlZnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICB7c2VsZWN0QWxsLmxhYmVsfVxuICAgICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgICAgIDxUZXh0XG4gICAgICAgICAgICAgICAgICAgICAgYXM9XCJzcGFuXCJcbiAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50PVwiYm9keVNtYWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICBzZW50aW1lbnQ9XCJuZXV0cmFsXCJcbiAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJsZWZ0XCJcbiAgICAgICAgICAgICAgICAgICAgICBwcm9taW5lbmNlPVwid2Vha1wiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7c2VsZWN0QWxsLmRlc2NyaXB0aW9ufVxuICAgICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgICA8L1N0YWNrPlxuICAgICAgICAgICAgICAgIDwvU3R5bGVkQ2hlY2tib3g+XG4gICAgICAgICAgICAgIDwvRHJvcGRvd25JdGVtPlxuICAgICAgICAgICAgPC9TdGFjaz5cbiAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICB7T2JqZWN0LmtleXMoZGlzcGxheWVkT3B0aW9ucykubWFwKChncm91cCwgaW5kZXgpID0+IChcbiAgICAgICAgICAgIDxTdGFjayBrZXk9e2dyb3VwfSBnYXA9ezAuMjV9PlxuICAgICAgICAgICAgICB7ZGlzcGxheWVkT3B0aW9uc1tncm91cF0ubGVuZ3RoID4gMCA/IChcbiAgICAgICAgICAgICAgICA8RHJvcGRvd25Hcm91cFdyYXBwZXIgaWQ9e3NlbGVjdEFsbEdyb3VwID8gJ2l0ZW1zJyA6IHVuZGVmaW5lZH0+XG4gICAgICAgICAgICAgICAgICB7Z3JvdXAgPyAoXG4gICAgICAgICAgICAgICAgICAgIDxEcm9wZG93bkdyb3VwXG4gICAgICAgICAgICAgICAgICAgICAga2V5PXtncm91cH1cbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICB0YWJJbmRleD17c2VsZWN0QWxsR3JvdXAgPyAwIDogLTF9XG4gICAgICAgICAgICAgICAgICAgICAgb25LZXlEb3duPXtldmVudCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoWycgJywgJ0VudGVyJ10uaW5jbHVkZXMoZXZlbnQua2V5KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZVNlbGVjdEdyb3VwKGdyb3VwKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgZGF0YS1zZWxlY3Rncm91cD17c2VsZWN0QWxsR3JvdXB9XG4gICAgICAgICAgICAgICAgICAgICAgcm9sZT1cImdyb3VwXCJcbiAgICAgICAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD17YGdyb3VwLSR7aW5kZXh9YH1cbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0QWxsR3JvdXAgPyBoYW5kbGVTZWxlY3RHcm91cChncm91cCkgOiBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAge3NlbGVjdEFsbEdyb3VwID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgPFN0eWxlZENoZWNrYm94XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e3NlbGVjdGVkRGF0YS5zZWxlY3RlZEdyb3Vwcy5pbmNsdWRlcyhncm91cCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2dyb3VwfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD1cInNlbGVjdC1ncm91cFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRhYkluZGV4PXstMX1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPFRleHQgdmFyaWFudD1cImNhcHRpb25cIiBhcz1cInNwYW5cIiBwbGFjZW1lbnQ9XCJsZWZ0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2dyb3VwLnRvVXBwZXJDYXNlKCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvU3R5bGVkQ2hlY2tib3g+XG4gICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxUZXh0XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJjYXB0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYXM9XCJzcGFuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwibGVmdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNlbnRpbWVudD1cIm5ldXRyYWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7Z3JvdXAudG9VcHBlckNhc2UoKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICA8L0Ryb3Bkb3duR3JvdXA+XG4gICAgICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgICAgICA8L0Ryb3Bkb3duR3JvdXBXcmFwcGVyPlxuICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgICAgPFN0YWNrIGlkPVwiaXRlbXNcIiBnYXA9XCIwLjI1XCI+XG4gICAgICAgICAgICAgICAge2Rpc3BsYXllZE9wdGlvbnNbZ3JvdXBdLm1hcCgob3B0aW9uLCBpbmRleE9wdGlvbikgPT4gKFxuICAgICAgICAgICAgICAgICAgPERyb3Bkb3duSXRlbVxuICAgICAgICAgICAgICAgICAgICBrZXk9e29wdGlvbi52YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgYXJpYS1kaXNhYmxlZD17ISFvcHRpb24uZGlzYWJsZWR9XG4gICAgICAgICAgICAgICAgICAgIHRhYkluZGV4PXshb3B0aW9uLmRpc2FibGVkID8gMCA6IC0xfVxuICAgICAgICAgICAgICAgICAgICBhcmlhLXNlbGVjdGVkPXtcbiAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZERhdGEuc2VsZWN0ZWRWYWx1ZXMuaW5jbHVkZXMob3B0aW9uLnZhbHVlKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICFvcHRpb24uZGlzYWJsZWRcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPXtvcHRpb24udmFsdWV9XG4gICAgICAgICAgICAgICAgICAgIGRhdGEtdGVzdGlkPXtgb3B0aW9uLSR7b3B0aW9uLnZhbHVlfWB9XG4gICAgICAgICAgICAgICAgICAgIGlkPXtgb3B0aW9uLSR7aW5kZXhPcHRpb259YH1cbiAgICAgICAgICAgICAgICAgICAgcm9sZT1cIm9wdGlvblwiXG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoIW9wdGlvbi5kaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlQ2xpY2sob3B0aW9uLCBncm91cClcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgIG9uS2V5RG93bj17ZXZlbnQgPT5cbiAgICAgICAgICAgICAgICAgICAgICBbJyAnLCAnRW50ZXInXS5pbmNsdWRlcyhldmVudC5rZXkpXG4gICAgICAgICAgICAgICAgICAgICAgICA/IGhhbmRsZUNsaWNrKG9wdGlvbiwgZ3JvdXApXG4gICAgICAgICAgICAgICAgICAgICAgICA6IG51bGxcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZWY9e1xuICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbi52YWx1ZSA9PT0gZGVmYXVsdFNlYXJjaFZhbHVlIHx8XG4gICAgICAgICAgICAgICAgICAgICAgb3B0aW9uLnNlYXJjaFRleHQgPT09IGRlZmF1bHRTZWFyY2hWYWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgPyBmb2N1c2VkSXRlbVJlZlxuICAgICAgICAgICAgICAgICAgICAgICAgOiBudWxsXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge211bHRpc2VsZWN0ID8gKFxuICAgICAgICAgICAgICAgICAgICAgIDxTdHlsZWRDaGVja2JveFxuICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tlZD17XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkRGF0YS5zZWxlY3RlZFZhbHVlcy5pbmNsdWRlcyhvcHRpb24udmFsdWUpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICFvcHRpb24uZGlzYWJsZWRcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtvcHRpb24uZGlzYWJsZWR9XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17b3B0aW9uLnZhbHVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgdGFiSW5kZXg9ey0xfVxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxEaXNwbGF5T3B0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbj17b3B0aW9ufVxuICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbkRpcmVjdGlvbj17ZGVzY3JpcHRpb25EaXJlY3Rpb259XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsSW5mb1BsYWNlbWVudD17b3B0aW9uYWxJbmZvUGxhY2VtZW50fVxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8L1N0eWxlZENoZWNrYm94PlxuICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgIDxEaXNwbGF5T3B0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb249e29wdGlvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uRGlyZWN0aW9uPXtkZXNjcmlwdGlvbkRpcmVjdGlvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsSW5mb1BsYWNlbWVudD17b3B0aW9uYWxJbmZvUGxhY2VtZW50fVxuICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICA8L0Ryb3Bkb3duSXRlbT5cbiAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgPC9TdGFjaz5cbiAgICAgICAgICAgIDwvU3RhY2s+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvPlxuICAgICAgKX1cbiAgICAgIHtsb2FkTW9yZSA/IDxMb2FkTW9yZT57bG9hZE1vcmV9PC9Mb2FkTW9yZT4gOiBudWxsfVxuICAgIDwvRHJvcGRvd25Db250YWluZXI+XG4gICkgOiAoXG4gICAgPERyb3Bkb3duQ29udGFpbmVyXG4gICAgICByb2xlPVwibGlzdGJveFwiXG4gICAgICB0YWJJbmRleD17LTF9XG4gICAgICBpZD1cInNlbGVjdC1kcm9wZG93blwiXG4gICAgICBvbktleURvd249e2hhbmRsZUtleURvd25TZWxlY3R9XG4gICAgICBnYXA9ezAuMjV9XG4gICAgICBkYXRhLWdyb3VwZWQ9e2ZhbHNlfVxuICAgID5cbiAgICAgIHtzZWxlY3RBbGwgJiYgbXVsdGlzZWxlY3QgPyAoXG4gICAgICAgIDxTdGFjayBpZD1cIml0ZW1zXCIgZ2FwPXswLjI1fSB0YWJJbmRleD17LTF9PlxuICAgICAgICAgIDxEcm9wZG93bkl0ZW1cbiAgICAgICAgICAgIGFyaWEtZGlzYWJsZWQ9e2ZhbHNlfVxuICAgICAgICAgICAgYXJpYS1zZWxlY3RlZD17c2VsZWN0ZWREYXRhLmFsbFNlbGVjdGVkfVxuICAgICAgICAgICAgYXJpYS1sYWJlbD1cInNlbGVjdC1hbGxcIlxuICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJzZWxlY3QtYWxsXCJcbiAgICAgICAgICAgIHRhYkluZGV4PXswfVxuICAgICAgICAgICAgcm9sZT1cIm9wdGlvblwiXG4gICAgICAgICAgICBvbktleURvd249e2V2ZW50ID0+XG4gICAgICAgICAgICAgIFsnICcsICdFbnRlciddLmluY2x1ZGVzKGV2ZW50LmtleSkgPyBzZWxlY3RBbGxPcHRpb25zKCkgOiBudWxsXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvbkNsaWNrPXtzZWxlY3RBbGxPcHRpb25zfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxTdHlsZWRDaGVja2JveFxuICAgICAgICAgICAgICBjaGVja2VkPXtzZWxlY3RlZERhdGEuYWxsU2VsZWN0ZWR9XG4gICAgICAgICAgICAgIGRpc2FibGVkPXtmYWxzZX1cbiAgICAgICAgICAgICAgdmFsdWU9XCJzZWxlY3QtYWxsXCJcbiAgICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJzZWxlY3QtYWxsLWNoZWNrYm94XCJcbiAgICAgICAgICAgICAgdGFiSW5kZXg9ey0xfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8U3RhY2sgZGlyZWN0aW9uPVwiY29sdW1uXCI+XG4gICAgICAgICAgICAgICAgPFRleHQgYXM9XCJzcGFuXCIgdmFyaWFudD1cImJvZHlcIiBwbGFjZW1lbnQ9XCJsZWZ0XCI+XG4gICAgICAgICAgICAgICAgICB7c2VsZWN0QWxsLmxhYmVsfVxuICAgICAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgICAgICA8VGV4dFxuICAgICAgICAgICAgICAgICAgYXM9XCJzcGFuXCJcbiAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJib2R5U21hbGxcIlxuICAgICAgICAgICAgICAgICAgc2VudGltZW50PVwibmV1dHJhbFwiXG4gICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJsZWZ0XCJcbiAgICAgICAgICAgICAgICAgIHByb21pbmVuY2U9XCJ3ZWFrXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICB7c2VsZWN0QWxsLmRlc2NyaXB0aW9ufVxuICAgICAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgICAgPC9TdGFjaz5cbiAgICAgICAgICAgIDwvU3R5bGVkQ2hlY2tib3g+XG4gICAgICAgICAgPC9Ecm9wZG93bkl0ZW0+XG4gICAgICAgIDwvU3RhY2s+XG4gICAgICApIDogbnVsbH1cbiAgICAgIDxTdGFjayBpZD1cIml0ZW1zXCIgZ2FwPXswLjI1fT5cbiAgICAgICAge2lzTG9hZGluZyA/IChcbiAgICAgICAgICA8U2tlbGV0b24gdmFyaWFudD1cImJsb2NrXCIgLz5cbiAgICAgICAgKSA6IChcbiAgICAgICAgICBkaXNwbGF5ZWRPcHRpb25zLm1hcCgob3B0aW9uLCBpbmRleCkgPT4gKFxuICAgICAgICAgICAgPERyb3Bkb3duSXRlbVxuICAgICAgICAgICAgICBrZXk9e29wdGlvbi52YWx1ZX1cbiAgICAgICAgICAgICAgYXJpYS1kaXNhYmxlZD17ISFvcHRpb24uZGlzYWJsZWR9XG4gICAgICAgICAgICAgIGFyaWEtc2VsZWN0ZWQ9e1xuICAgICAgICAgICAgICAgIHNlbGVjdGVkRGF0YS5zZWxlY3RlZFZhbHVlcy5pbmNsdWRlcyhvcHRpb24udmFsdWUpICYmXG4gICAgICAgICAgICAgICAgIW9wdGlvbi5kaXNhYmxlZFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIW9wdGlvbi5kaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgICAgaGFuZGxlQ2xpY2sob3B0aW9uKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgYXJpYS1sYWJlbD17b3B0aW9uLnZhbHVlfVxuICAgICAgICAgICAgICBkYXRhLXRlc3RpZD17YG9wdGlvbi0ke29wdGlvbi52YWx1ZX1gfVxuICAgICAgICAgICAgICBpZD17YG9wdGlvbi0ke2luZGV4fWB9XG4gICAgICAgICAgICAgIHJvbGU9XCJvcHRpb25cIlxuICAgICAgICAgICAgICB0YWJJbmRleD17IW9wdGlvbi5kaXNhYmxlZCA/IDAgOiAtMX1cbiAgICAgICAgICAgICAgcmVmPXtcbiAgICAgICAgICAgICAgICBvcHRpb24udmFsdWUgPT09IGRlZmF1bHRTZWFyY2hWYWx1ZSB8fFxuICAgICAgICAgICAgICAgIG9wdGlvbi5zZWFyY2hUZXh0ID09PSBkZWZhdWx0U2VhcmNoVmFsdWVcbiAgICAgICAgICAgICAgICAgID8gZm9jdXNlZEl0ZW1SZWZcbiAgICAgICAgICAgICAgICAgIDogbnVsbFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIG9uS2V5RG93bj17ZXZlbnQgPT5cbiAgICAgICAgICAgICAgICBbJyAnLCAnRW50ZXInXS5pbmNsdWRlcyhldmVudC5rZXkpID8gaGFuZGxlQ2xpY2sob3B0aW9uKSA6IG51bGxcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7bXVsdGlzZWxlY3QgPyAoXG4gICAgICAgICAgICAgICAgPFN0eWxlZENoZWNrYm94XG4gICAgICAgICAgICAgICAgICBjaGVja2VkPXtcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzLmluY2x1ZGVzKG9wdGlvbi52YWx1ZSkgJiZcbiAgICAgICAgICAgICAgICAgICAgIW9wdGlvbi5kaXNhYmxlZFxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e29wdGlvbi5kaXNhYmxlZH1cbiAgICAgICAgICAgICAgICAgIHZhbHVlPXtvcHRpb24udmFsdWV9XG4gICAgICAgICAgICAgICAgICB0YWJJbmRleD17LTF9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPERpc3BsYXlPcHRpb25cbiAgICAgICAgICAgICAgICAgICAgb3B0aW9uPXtvcHRpb259XG4gICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uRGlyZWN0aW9uPXtkZXNjcmlwdGlvbkRpcmVjdGlvbn1cbiAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWxJbmZvUGxhY2VtZW50PXtvcHRpb25hbEluZm9QbGFjZW1lbnR9XG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvU3R5bGVkQ2hlY2tib3g+XG4gICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgPERpc3BsYXlPcHRpb25cbiAgICAgICAgICAgICAgICAgIG9wdGlvbj17b3B0aW9ufVxuICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb25EaXJlY3Rpb249e2Rlc2NyaXB0aW9uRGlyZWN0aW9ufVxuICAgICAgICAgICAgICAgICAgb3B0aW9uYWxJbmZvUGxhY2VtZW50PXtvcHRpb25hbEluZm9QbGFjZW1lbnR9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvRHJvcGRvd25JdGVtPlxuICAgICAgICAgICkpXG4gICAgICAgICl9XG4gICAgICAgIHtsb2FkTW9yZSA/IDxMb2FkTW9yZT57bG9hZE1vcmV9PC9Mb2FkTW9yZT4gOiBudWxsfVxuICAgICAgPC9TdGFjaz5cbiAgICA8L0Ryb3Bkb3duQ29udGFpbmVyPlxuICApXG59XG5leHBvcnQgY29uc3QgRHJvcGRvd24gPSAoe1xuICBjaGlsZHJlbixcbiAgZW1wdHlTdGF0ZSxcbiAgZGVzY3JpcHRpb25EaXJlY3Rpb24sXG4gIHNlYXJjaGFibGUsXG4gIHBsYWNlaG9sZGVyLFxuICBmb290ZXIsXG4gIHJlZlNlbGVjdCxcbiAgbG9hZE1vcmUsXG4gIG9wdGlvbmFsSW5mb1BsYWNlbWVudCxcbiAgaXNMb2FkaW5nLFxuICBzaXplLFxufTogRHJvcGRvd25Qcm9wcykgPT4ge1xuICBjb25zdCB7XG4gICAgc2V0SXNEcm9wZG93blZpc2libGUsXG4gICAgaXNEcm9wZG93blZpc2libGUsXG4gICAgb25TZWFyY2gsXG4gICAgc2VhcmNoSW5wdXQsXG4gICAgb3B0aW9ucyxcbiAgICBkaXNwbGF5ZWRPcHRpb25zLFxuICB9ID0gdXNlU2VsZWN0SW5wdXQoKVxuICBjb25zdCB0aGVtZSA9IHVzZVRoZW1lKClcbiAgY29uc3QgW3NlYXJjaEJhckFjdGl2ZSwgc2V0U2VhcmNoQmFyQWN0aXZlXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbZGVmYXVsdFNlYXJjaFZhbHVlLCBzZXREZWZhdWx0U2VhcmNoXSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bGw+KG51bGwpXG4gIGNvbnN0IHJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcbiAgY29uc3QgW3NlYXJjaCwgc2V0U2VhcmNoXSA9IHVzZVN0YXRlPHN0cmluZz4oJycpXG4gIGNvbnN0IFttYXhXaWR0aCwgc2V0V2lkdGhdID0gdXNlU3RhdGU8c3RyaW5nIHwgbnVtYmVyPigpXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAocmVmU2VsZWN0LmN1cnJlbnQgJiYgaXNEcm9wZG93blZpc2libGUpIHtcbiAgICAgIGNvbnN0IHBvc2l0aW9uID1cbiAgICAgICAgcmVmU2VsZWN0LmN1cnJlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuYm90dG9tICtcbiAgICAgICAgRFJPUERPV05fTUFYX0hFSUdIVCArXG4gICAgICAgIElOUFVUX1NJWkVfSEVJR0hUW3NpemVdICtcbiAgICAgICAgcGFyc2VJbnQodGhlbWUuc3BhY2VbJzUnXSwgMTApXG4gICAgICBjb25zdCBvdmVyZmxvdyA9IHBvc2l0aW9uIC0gd2luZG93LmlubmVySGVpZ2h0XG4gICAgICBpZiAob3ZlcmZsb3cgPiAwKSB7XG4gICAgICAgIGNvbnN0IG1vZGFsRWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdiYWNrZHJvcC1tb2RhbCcpXG5cbiAgICAgICAgaWYgKG1vZGFsRWxlbWVudCkge1xuICAgICAgICAgIG1vZGFsRWxlbWVudC5zY3JvbGxCeSh7IHRvcDogb3ZlcmZsb3csIGJlaGF2aW9yOiAnc21vb3RoJyB9KVxuICAgICAgICB9IGVsc2Ugd2luZG93LnNjcm9sbEJ5KHsgdG9wOiBvdmVyZmxvdywgYmVoYXZpb3I6ICdzbW9vdGgnIH0pXG4gICAgICB9XG4gICAgfVxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9leGhhdXN0aXZlLWRlcHNcbiAgfSwgW2lzRHJvcGRvd25WaXNpYmxlLCByZWZTZWxlY3QsIHNpemUsIHJlZi5jdXJyZW50XSlcblxuICBjb25zdCByZXNpemVEcm9wZG93biA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoXG4gICAgICByZWZTZWxlY3QuY3VycmVudCAmJlxuICAgICAgcmVmU2VsZWN0LmN1cnJlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGggPiAwXG4gICAgKSB7XG4gICAgICBzZXRXaWR0aChyZWZTZWxlY3QuY3VycmVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aClcbiAgICB9XG4gIH0sIFtyZWZTZWxlY3RdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgcmVzaXplRHJvcGRvd24oKVxuXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHJlc2l6ZURyb3Bkb3duKVxuXG4gICAgcmV0dXJuICgpID0+IHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCByZXNpemVEcm9wZG93bilcbiAgfSwgW3Jlc2l6ZURyb3Bkb3duXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghc2VhcmNoSW5wdXQpIHtcbiAgICAgIG9uU2VhcmNoKG9wdGlvbnMpXG4gICAgfVxuICB9LCBbb25TZWFyY2gsIG9wdGlvbnMsIHNlYXJjaElucHV0XSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghaXNEcm9wZG93blZpc2libGUpIHtcbiAgICAgIHNldERlZmF1bHRTZWFyY2gobnVsbClcbiAgICAgIHNldFNlYXJjaCgnJylcbiAgICB9XG5cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCBldmVudCA9PlxuICAgICAgaGFuZGxlQ2xpY2tPdXRzaWRlKFxuICAgICAgICBldmVudCxcbiAgICAgICAgcmVmLFxuICAgICAgICBzZXRJc0Ryb3Bkb3duVmlzaWJsZSxcbiAgICAgICAgcmVmU2VsZWN0LFxuICAgICAgICBvblNlYXJjaCxcbiAgICAgICAgb3B0aW9ucyxcbiAgICAgICksXG4gICAgKVxuXG4gICAgaWYgKCFzZWFyY2hhYmxlKSB7XG4gICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgZXZlbnQgPT5cbiAgICAgICAgaGFuZGxlS2V5RG93bihcbiAgICAgICAgICBldmVudCxcbiAgICAgICAgICByZWYsXG4gICAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgICBzZWFyY2hCYXJBY3RpdmUsXG4gICAgICAgICAgc2V0U2VhcmNoLFxuICAgICAgICAgIHNldERlZmF1bHRTZWFyY2gsXG4gICAgICAgICAgc2VhcmNoLFxuICAgICAgICApLFxuICAgICAgKVxuICAgIH1cblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCBldmVudCA9PlxuICAgICAgICBoYW5kbGVDbGlja091dHNpZGUoXG4gICAgICAgICAgZXZlbnQsXG4gICAgICAgICAgcmVmLFxuICAgICAgICAgIHNldElzRHJvcGRvd25WaXNpYmxlLFxuICAgICAgICAgIHJlZlNlbGVjdCxcbiAgICAgICAgICBvblNlYXJjaCxcbiAgICAgICAgICBvcHRpb25zLFxuICAgICAgICApLFxuICAgICAgKVxuICAgICAgaWYgKCFzZWFyY2hhYmxlKSB7XG4gICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBldmVudCA9PlxuICAgICAgICAgIGhhbmRsZUtleURvd24oXG4gICAgICAgICAgICBldmVudCxcbiAgICAgICAgICAgIHJlZixcbiAgICAgICAgICAgIG9wdGlvbnMsXG4gICAgICAgICAgICBzZWFyY2hCYXJBY3RpdmUsXG4gICAgICAgICAgICBzZXRTZWFyY2gsXG4gICAgICAgICAgICBzZXREZWZhdWx0U2VhcmNoLFxuICAgICAgICAgICAgc2VhcmNoLFxuICAgICAgICAgICksXG4gICAgICAgIClcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtcbiAgICBpc0Ryb3Bkb3duVmlzaWJsZSxcbiAgICBzZWFyY2hCYXJBY3RpdmUsXG4gICAgb3B0aW9ucyxcbiAgICBvblNlYXJjaCxcbiAgICBzZWFyY2gsXG4gICAgcmVmU2VsZWN0LFxuICAgIHNldERlZmF1bHRTZWFyY2gsXG4gICAgc2V0SXNEcm9wZG93blZpc2libGUsXG4gICAgc2VhcmNoYWJsZSxcbiAgXSlcblxuICBjb25zdCBpc0VtcHR5ID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoZGlzcGxheWVkT3B0aW9ucykpIHtcbiAgICAgIHJldHVybiAhKGRpc3BsYXllZE9wdGlvbnMubGVuZ3RoID4gMClcbiAgICB9XG4gICAgY29uc3QgZ3JvdXBzID0gT2JqZWN0LmtleXMoZGlzcGxheWVkT3B0aW9ucylcbiAgICBmb3IgKGNvbnN0IGdyb3VwIG9mIGdyb3Vwcykge1xuICAgICAgaWYgKGRpc3BsYXllZE9wdGlvbnNbZ3JvdXBdLmxlbmd0aCAhPT0gMCkge1xuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZVxuICB9LCBbZGlzcGxheWVkT3B0aW9uc10pXG5cbiAgcmV0dXJuIChcbiAgICA8U3R5bGVkUG9wdXBcbiAgICAgIHZpc2libGU9e2lzRHJvcGRvd25WaXNpYmxlfVxuICAgICAgdGV4dD17XG4gICAgICAgIDxTdGFjaz5cbiAgICAgICAgICB7c2VhcmNoYWJsZSAmJiAhaXNMb2FkaW5nID8gKFxuICAgICAgICAgICAgPFNlYXJjaEJhckRyb3Bkb3duXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXtwbGFjZWhvbGRlcn1cbiAgICAgICAgICAgICAgZGlzcGxheWVkT3B0aW9ucz17ZGlzcGxheWVkT3B0aW9uc31cbiAgICAgICAgICAgICAgc2V0U2VhcmNoQmFyQWN0aXZlPXtzZXRTZWFyY2hCYXJBY3RpdmV9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgIDxDcmVhdGVEcm9wZG93blxuICAgICAgICAgICAgaXNFbXB0eT17aXNFbXB0eX1cbiAgICAgICAgICAgIGVtcHR5U3RhdGU9e2VtcHR5U3RhdGV9XG4gICAgICAgICAgICBkZXNjcmlwdGlvbkRpcmVjdGlvbj17ZGVzY3JpcHRpb25EaXJlY3Rpb259XG4gICAgICAgICAgICBsb2FkTW9yZT17bG9hZE1vcmV9XG4gICAgICAgICAgICBvcHRpb25hbEluZm9QbGFjZW1lbnQ9e29wdGlvbmFsSW5mb1BsYWNlbWVudH1cbiAgICAgICAgICAgIGRlZmF1bHRTZWFyY2hWYWx1ZT17ZGVmYXVsdFNlYXJjaFZhbHVlfVxuICAgICAgICAgICAgaXNMb2FkaW5nPXtpc0xvYWRpbmd9XG4gICAgICAgICAgLz5cbiAgICAgICAgICB7Zm9vdGVyID8gPFBvcHVwRm9vdGVyPntmb290ZXJ9PC9Qb3B1cEZvb3Rlcj4gOiBudWxsfVxuICAgICAgICA8L1N0YWNrPlxuICAgICAgfVxuICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcbiAgICAgIGRpc2FibGVBbmltYXRpb25cbiAgICAgIG1heFdpZHRoPXttYXhXaWR0aCA/PyByZWZTZWxlY3QuY3VycmVudD8ub2Zmc2V0V2lkdGh9XG4gICAgICBoYXNBcnJvdz17ZmFsc2V9XG4gICAgICByZWY9e3JlZn1cbiAgICAgIHRhYkluZGV4PXswfVxuICAgICAgcm9sZT1cImRpYWxvZ1wiXG4gICAgICBkZWJvdW5jZURlbGF5PXswfVxuICAgICAgY29udGFpbmVyRnVsbFdpZHRoXG4gICAgPlxuICAgICAge2NoaWxkcmVufVxuICAgIDwvU3R5bGVkUG9wdXA+XG4gIClcbn1cbiJdfQ== */"));
168
+ }) => theme.space[2], ";" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL3VsdHJhdmlvbGV0L3VsdHJhdmlvbGV0L3BhY2thZ2VzL3VpL3NyYy9jb21wb25lbnRzL1NlbGVjdElucHV0VjIvRHJvcGRvd24udHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQTBLZ0MiLCJmaWxlIjoiL2hvbWUvcnVubmVyL3dvcmsvdWx0cmF2aW9sZXQvdWx0cmF2aW9sZXQvcGFja2FnZXMvdWkvc3JjL2NvbXBvbmVudHMvU2VsZWN0SW5wdXRWMi9Ecm9wZG93bi50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1c2VUaGVtZSB9IGZyb20gJ0BlbW90aW9uL3JlYWN0J1xuaW1wb3J0IHN0eWxlZCBmcm9tICdAZW1vdGlvbi9zdHlsZWQnXG5pbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VNZW1vLCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgdHlwZSB7XG4gIERpc3BhdGNoLFxuICBLZXlib2FyZEV2ZW50LFxuICBSZWFjdE5vZGUsXG4gIFJlZk9iamVjdCxcbiAgU2V0U3RhdGVBY3Rpb24sXG59IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgQ2hlY2tib3ggfSBmcm9tICcuLi9DaGVja2JveCdcbmltcG9ydCB7IFBvcHVwIH0gZnJvbSAnLi4vUG9wdXAnXG5pbXBvcnQgeyBTa2VsZXRvbiB9IGZyb20gJy4uL1NrZWxldG9uJ1xuaW1wb3J0IHsgU3RhY2sgfSBmcm9tICcuLi9TdGFjaydcbmltcG9ydCB7IFRleHQgfSBmcm9tICcuLi9UZXh0J1xuaW1wb3J0IHsgRGlzcGxheU9wdGlvbiB9IGZyb20gJy4vRHJvcGRvd25PcHRpb24nXG5pbXBvcnQgeyBTZWFyY2hCYXJEcm9wZG93biB9IGZyb20gJy4vU2VhcmNoQmFyRHJvcGRvd24nXG5pbXBvcnQgeyB1c2VTZWxlY3RJbnB1dCB9IGZyb20gJy4vU2VsZWN0SW5wdXRQcm92aWRlcidcbmltcG9ydCB7IHR5cGUgRGF0YVR5cGUsIElOUFVUX1NJWkVfSEVJR0hULCB0eXBlIE9wdGlvblR5cGUgfSBmcm9tICcuL3R5cGVzJ1xuXG5jb25zdCBEUk9QRE9XTl9NQVhfSEVJR0hUID0gMjU2XG5cbmV4cG9ydCB0eXBlIERyb3Bkb3duUHJvcHMgPSB7XG4gIGNoaWxkcmVuOiBSZWFjdE5vZGVcbiAgZW1wdHlTdGF0ZTogUmVhY3ROb2RlXG4gIGRlc2NyaXB0aW9uRGlyZWN0aW9uOiAncm93JyB8ICdjb2x1bW4nXG4gIHNlYXJjaGFibGU6IGJvb2xlYW5cbiAgcGxhY2Vob2xkZXI6IHN0cmluZ1xuICBmb290ZXI/OiAoKGNsb3NlRHJvcGRvd246ICgpID0+IHZvaWQpID0+IFJlYWN0Tm9kZSkgfCBSZWFjdE5vZGVcbiAgcmVmU2VsZWN0OiBSZWZPYmplY3Q8SFRNTERpdkVsZW1lbnQ+XG4gIGxvYWRNb3JlPzogUmVhY3ROb2RlXG4gIG9wdGlvbmFsSW5mb1BsYWNlbWVudDogJ2xlZnQnIHwgJ3JpZ2h0J1xuICBpc0xvYWRpbmc/OiBib29sZWFuXG4gIHNpemU6ICdzbWFsbCcgfCAnbWVkaXVtJyB8ICdsYXJnZSdcbn1cblxuZXhwb3J0IHR5cGUgQ3JlYXRlRHJvcGRvd25Qcm9wcyA9IHtcbiAgaXNFbXB0eTogYm9vbGVhblxuICBlbXB0eVN0YXRlOiBSZWFjdE5vZGVcbiAgZGVzY3JpcHRpb25EaXJlY3Rpb246ICdyb3cnIHwgJ2NvbHVtbidcbiAgbG9hZE1vcmU/OiBSZWFjdE5vZGVcbiAgb3B0aW9uYWxJbmZvUGxhY2VtZW50OiAnbGVmdCcgfCAncmlnaHQnXG4gIGRlZmF1bHRTZWFyY2hWYWx1ZTogc3RyaW5nIHwgbnVsbFxuICBpc0xvYWRpbmc/OiBib29sZWFuXG59XG5cbmNvbnN0IE5PTl9TRUFSQ0hBQkxFX0tFWVMgPSBbXG4gICdUYWInLFxuICAnICcsXG4gICdFbnRlcicsXG4gICdDYXBzTG9jaycsXG4gICdTaGlmdCcsXG4gICdBcnJvd0Rvd24nLFxuICAnQXJyb3dVcCcsXG4gICdBcnJvd0xlZnQnLFxuICAnQXJyb3dSaWdodCcsXG4gICdFc2NhcGUnLFxuXVxuXG5jb25zdCBTdHlsZWRQb3B1cCA9IHN0eWxlZChQb3B1cClgXG4gIHdpZHRoOiAxMDAlO1xuICBtaW4td2lkdGg6IDMyMHB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5vdGhlci5lbGV2YXRpb24uYmFja2dyb3VuZC5yYWlzZWR9O1xuICBjb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMubmV1dHJhbC50ZXh0fTtcbiAgYm94LXNoYWRvdzogJHsoeyB0aGVtZSB9KSA9PiBgJHt0aGVtZS5zaGFkb3dzLnJhaXNlZFswXX0sICR7dGhlbWUuc2hhZG93cy5yYWlzZWRbMV19YH07XG4gIHBhZGRpbmc6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMF19O1xuICBtYXJnaW4tYm90dG9tOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzEwXX07XG5gXG5cbmNvbnN0IERyb3Bkb3duQ29udGFpbmVyID0gc3R5bGVkKFN0YWNrKTx7ICdkYXRhLWdyb3VwZWQnOiBib29sZWFuIH0+YFxuICBtYXgtaGVpZ2h0OiAke0RST1BET1dOX01BWF9IRUlHSFR9cHg7XG4gIG92ZXJmbG93LXk6IHNjcm9sbDtcbiAgcGFkZGluZzogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVswXX07XG4gIHBhZGRpbmctYm90dG9tOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzAuNV19O1xuICBwYWRkaW5nLXRvcDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVswLjVdfTtcblxuICAmW2RhdGEtZ3JvdXBlZD1cInRydWVcIl0ge1xuICAgIHBhZGRpbmctdG9wOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzBdfTtcbiAgfVxuYFxuY29uc3QgRHJvcGRvd25Hcm91cCA9IHN0eWxlZC5idXR0b248eyAnZGF0YS1zZWxlY3Rncm91cCc6IGJvb2xlYW4gfT5gXG4gIGRpc3BsYXk6IGZsZXg7XG4gIHdpZHRoOiAxMDAlO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGxlZnQ7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGJvcmRlcjogbm9uZTtcbiAgYmFja2dyb3VuZC1jb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMubmV1dHJhbC5iYWNrZ3JvdW5kV2Vha307XG4gIHBvc2l0aW9uOiBzdGlja3k7XG4gIHRvcDogMHB4O1xuICBwYWRkaW5nLXJpZ2h0OiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzJdfTtcbiAgcGFkZGluZy1sZWZ0OiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzJdfTtcbiAgaGVpZ2h0OiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzRdfTtcbiAgdGV4dC1hbGlnbjogbGVmdDtcbiAgbWFyZ2luLWJvdHRvbTogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsnMC4yNSddfTtcblxuICAmOmZvY3VzIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5uZXV0cmFsLmJhY2tncm91bmRXZWFrfTtcbiAgICBvdXRsaW5lOiBub25lO1xuICB9XG5cbiAgJltkYXRhLXNlbGVjdGdyb3VwPSd0cnVlJ10ge1xuICAgIHBhZGRpbmctbGVmdDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsyXX07XG4gICAgYm9yZGVyLWxlZnQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMC41XX0gc29saWQgJHsoeyB0aGVtZSB9KSA9PlxuICAgICAgdGhlbWUuY29sb3JzLm5ldXRyYWwuYmFja2dyb3VuZFdlYWt9O1xuICB9XG5cbiAgJltkYXRhLXNlbGVjdGdyb3VwPSd0cnVlJ106Zm9jdXMge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwuYmFja2dyb3VuZEhvdmVyfTtcbiAgfVxuYFxuY29uc3QgRHJvcGRvd25Hcm91cFdyYXBwZXIgPSBzdHlsZWQuZGl2YFxuICBwb3NpdGlvbjogc3RpY2t5O1xuICB0b3A6IDBweDtcbmBcbmNvbnN0IERyb3Bkb3duSXRlbSA9IHN0eWxlZC5kaXY8e1xuICAnYXJpYS1zZWxlY3RlZCc6IGJvb2xlYW5cbiAgJ2FyaWEtZGlzYWJsZWQnOiBib29sZWFuXG59PmBcbiAgdGV4dC1hbGlnbjpsZWZ0O1xuICBib3JkZXI6IG5vbmU7XG4gIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm90aGVyLmVsZXZhdGlvbi5iYWNrZ3JvdW5kLnJhaXNlZH07XG5cbiAgcGFkZGluZzogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsnMS41J119ICR7KHsgdGhlbWUgfSkgPT5cbiAgICB0aGVtZS5zcGFjZVsnMiddfSAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWycxLjUnXX0gJHsoeyB0aGVtZSB9KSA9PlxuICAgIHRoZW1lLnNwYWNlWycyJ119O1xuICBtYXJnaW4tbGVmdDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsnMC41J119O1xuICBtYXJnaW4tcmlnaHQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbJzAuNSddfTtcblxuICBjb2xvcjogICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwudGV4dH07XG4gIGJvcmRlci1yYWRpdXM6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUucmFkaWkuZGVmYXVsdH07XG5cbiAgJjpob3ZlciwgOmZvY3VzIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5wcmltYXJ5LmJhY2tncm91bmR9O1xuICAgIGNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5wcmltYXJ5LnRleHR9O1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBvdXRsaW5lOiBub25lO1xuICB9XG5cbiAgJlthcmlhLXNlbGVjdGVkPSd0cnVlJ10ge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLnByaW1hcnkuYmFja2dyb3VuZH07XG4gIH1cblxuICAmW2FyaWEtZGlzYWJsZWQ9XCJ0cnVlXCJdIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5uZXV0cmFsLmJhY2tncm91bmREaXNhYmxlZH07XG4gICAgY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwudGV4dERpc2FibGVkfTtcbiAgfVxuXG4gICZbYXJpYS1kaXNhYmxlZD1cInRydWVcIl06aG92ZXIsIFthcmlhLWRpc2FibGVkPVwidHJ1ZVwiXTpmb2N1cyB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHsoeyB0aGVtZSB9KSA9PlxuICAgICAgdGhlbWUuY29sb3JzLm5ldXRyYWwuYmFja2dyb3VuZFN0cm9uZ0Rpc2FibGVkfTtcbiAgICBjb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMubmV1dHJhbC50ZXh0U3Ryb25nRGlzYWJsZWR9O1xuICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgfVxuYFxuXG5jb25zdCBQb3B1cEZvb3RlciA9IHN0eWxlZC5kaXZgXG4gIHdpZHRoOiAxMDAlO1xuICBwYWRkaW5nOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzEuNV19ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMl19XG4gICAgJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsxLjVdfSAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzJdfTtcbiAgYm94LXNoYWRvdzogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zaGFkb3dzLmRyb3Bkb3dufTtcbmBcbmNvbnN0IFN0eWxlZENoZWNrYm94ID0gc3R5bGVkKENoZWNrYm94KWBcbiAgd2lkdGg6IDEwMCU7XG4gIHBvc2l0aW9uOiBzdGF0aWM7XG4gIHRleHQtYWxpZ246IGxlZnQ7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuYCAvLyBwb2ludGVyLWV2ZW50czogbm9uZSBwcmV2ZW50cyBhbnkgZXJyb3Igd2hlbiB1c2luZyB0aGUgY2hlY2tib3ggaW4gYSBmb3JtIHNpbmNlIGl0IGlzIGFuIHVubmFtZWQgaW5wdXRcblxuY29uc3QgRW1wdHlTdGF0ZSA9IHN0eWxlZChTdGFjaylgXG4gIHBhZGRpbmc6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMl19O1xuYFxuY29uc3QgTG9hZE1vcmUgPSBzdHlsZWQoU3RhY2spYFxuICBwYWRkaW5nOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzAuNV19O1xuYFxuXG5jb25zdCBtb3ZlRm9jdXNEb3duID0gKCkgPT4ge1xuICBjb25zdCBvcHRpb25zID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcbiAgICAnI2l0ZW1zID4gZGl2W3JvbGU9XCJvcHRpb25cIl06bm90KFtkaXNhYmxlZF0pJyxcbiAgKVxuICBjb25zdCBhY3RpdmVJdGVtID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudFxuICBpZiAob3B0aW9ucykge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgb3B0aW9ucz8ubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgIGNvbnN0IGxpc3RMZW5ndGggPSBvcHRpb25zLmxlbmd0aFxuICAgICAgaWYgKGFjdGl2ZUl0ZW0gPT09IG9wdGlvbnNbaV0gJiYgYWN0aXZlSXRlbSAhPT0gb3B0aW9uc1tsaXN0TGVuZ3RoIC0gMV0pIHtcbiAgICAgICAgOyhvcHRpb25zW2kgKyAxXSBhcyBIVE1MRWxlbWVudCkuZm9jdXMoKVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuY29uc3QgbW92ZUZvY3VzVXAgPSAoKSA9PiB7XG4gIGNvbnN0IG9wdGlvbnMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFxuICAgICcjaXRlbXMgPiBkaXZbcm9sZT1cIm9wdGlvblwiXTpub3QoW2Rpc2FibGVkXSknLFxuICApXG4gIGNvbnN0IGFjdGl2ZUl0ZW0gPSBkb2N1bWVudC5hY3RpdmVFbGVtZW50XG5cbiAgaWYgKG9wdGlvbnMpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG9wdGlvbnMubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgIGlmIChhY3RpdmVJdGVtID09PSBvcHRpb25zW2ldICYmIGFjdGl2ZUl0ZW0gIT09IG9wdGlvbnNbMF0pIHtcbiAgICAgICAgOyhvcHRpb25zW2kgLSAxXSBhcyBIVE1MRWxlbWVudCkuZm9jdXMoKVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuY29uc3QgaGFuZGxlS2V5RG93blNlbGVjdCA9IChldmVudDogS2V5Ym9hcmRFdmVudDxIVE1MRGl2RWxlbWVudD4pID0+IHtcbiAgaWYgKGV2ZW50LmtleSA9PT0gJ0Fycm93RG93bicpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgbW92ZUZvY3VzRG93bigpXG4gIH1cblxuICBpZiAoZXZlbnQua2V5ID09PSAnQXJyb3dVcCcpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgbW92ZUZvY3VzVXAoKVxuICB9XG59XG5jb25zdCBoYW5kbGVDbGlja091dHNpZGUgPSAoXG4gIGV2ZW50OiBNb3VzZUV2ZW50LFxuICByZWY6IFJlZk9iamVjdDxIVE1MRGl2RWxlbWVudD4sXG4gIHNldElzRHJvcGRvd25WaXNpYmlsZTogRGlzcGF0Y2g8U2V0U3RhdGVBY3Rpb248Ym9vbGVhbj4+LFxuICByZWZTZWxlY3Q6IFJlZk9iamVjdDxIVE1MRGl2RWxlbWVudD4sXG4gIG9uU2VhcmNoOiBEaXNwYXRjaDxTZXRTdGF0ZUFjdGlvbjxEYXRhVHlwZT4+LFxuICBvcHRpb25zOiBEYXRhVHlwZSxcbikgPT4ge1xuICBpZiAoXG4gICAgcmVmLmN1cnJlbnQgJiZcbiAgICAhcmVmLmN1cnJlbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0IGFzIE5vZGUpICYmXG4gICAgIXJlZlNlbGVjdC5jdXJyZW50Py5jb250YWlucyhldmVudC50YXJnZXQgYXMgTm9kZSlcbiAgKSB7XG4gICAgc2V0SXNEcm9wZG93blZpc2liaWxlKGZhbHNlKVxuICAgIG9uU2VhcmNoKG9wdGlvbnMpXG4gIH1cbn1cblxuY29uc3QgaGFuZGxlS2V5RG93biA9IChcbiAgZXZlbnQ6IGdsb2JhbFRoaXMuS2V5Ym9hcmRFdmVudCxcbiAgcmVmOiBSZWZPYmplY3Q8SFRNTERpdkVsZW1lbnQ+LFxuICBvcHRpb25zOiBEYXRhVHlwZSxcbiAgc2VhcmNoQmFyQWN0aXZlOiBib29sZWFuLFxuICBzZXRTZWFyY2g6IERpc3BhdGNoPFNldFN0YXRlQWN0aW9uPHN0cmluZz4+LFxuICBzZXREZWZhdWx0U2VhcmNoOiBEaXNwYXRjaDxTZXRTdGF0ZUFjdGlvbjxzdHJpbmcgfCBudWxsPj4sXG4gIHNlYXJjaDogc3RyaW5nLFxuKSA9PiB7XG4gIC8vIERlYWxzIHdpdGggZGVmYXVsdCBzZWFyY2hcbiAgaWYgKFxuICAgIHJlZi5jdXJyZW50ICYmXG4gICAgIXNlYXJjaEJhckFjdGl2ZSAmJlxuICAgICFOT05fU0VBUkNIQUJMRV9LRVlTLmluY2x1ZGVzKGV2ZW50LmtleSkgJiZcbiAgICBkb2N1bWVudC5hY3RpdmVFbGVtZW50Py5hcmlhTGFiZWwgIT09ICdzZWFyY2gtYmFyJ1xuICApIHtcbiAgICBjb25zdCBjdXJyZW50U2VhcmNoID0gc2VhcmNoICsgZXZlbnQua2V5XG4gICAgc2V0U2VhcmNoKGN1cnJlbnRTZWFyY2gpXG4gICAgcmVmLmN1cnJlbnQuZm9jdXMoKVxuICAgIGlmICghQXJyYXkuaXNBcnJheShvcHRpb25zKSkge1xuICAgICAgY29uc3QgY2xvc2VzdE9wdGlvbnMgPSB7IC4uLm9wdGlvbnMgfVxuICAgICAgT2JqZWN0LmtleXMoY2xvc2VzdE9wdGlvbnMpLm1hcCgoZ3JvdXA6IHN0cmluZykgPT4ge1xuICAgICAgICBjbG9zZXN0T3B0aW9uc1tncm91cF0gPSBjbG9zZXN0T3B0aW9uc1tncm91cF0uZmlsdGVyKG9wdGlvbiA9PlxuICAgICAgICAgIG9wdGlvbi5zZWFyY2hUZXh0XG4gICAgICAgICAgICA/IG9wdGlvbi5zZWFyY2hUZXh0LnRvTG9jYWxlTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChjdXJyZW50U2VhcmNoKVxuICAgICAgICAgICAgOiBvcHRpb24udmFsdWUudG9Mb2NhbGVMb3dlckNhc2UoKS5zdGFydHNXaXRoKGN1cnJlbnRTZWFyY2gpLFxuICAgICAgICApXG5cbiAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgIH0pXG4gICAgICBjb25zdCBjbG9zZXN0T3B0aW9uID0gY2xvc2VzdE9wdGlvbnNbT2JqZWN0LmtleXMoY2xvc2VzdE9wdGlvbnMpWzBdXVswXVxuICAgICAgaWYgKGNsb3Nlc3RPcHRpb24pIHtcbiAgICAgICAgc2V0RGVmYXVsdFNlYXJjaChjbG9zZXN0T3B0aW9uLnNlYXJjaFRleHQgPz8gY2xvc2VzdE9wdGlvbi52YWx1ZSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNldERlZmF1bHRTZWFyY2gobnVsbClcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgY2xvc2VzdE9wdGlvbiA9IFsuLi5vcHRpb25zXS5maWx0ZXIob3B0aW9uID0+XG4gICAgICAgIG9wdGlvbi5zZWFyY2hUZXh0XG4gICAgICAgICAgPyBvcHRpb24uc2VhcmNoVGV4dC50b0xvY2FsZUxvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoY3VycmVudFNlYXJjaClcbiAgICAgICAgICA6IG9wdGlvbi52YWx1ZS50b0xvY2FsZUxvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoY3VycmVudFNlYXJjaCksXG4gICAgICApWzBdXG4gICAgICBpZiAoY2xvc2VzdE9wdGlvbikge1xuICAgICAgICBzZXREZWZhdWx0U2VhcmNoKGNsb3Nlc3RPcHRpb24uc2VhcmNoVGV4dCA/PyBjbG9zZXN0T3B0aW9uLnZhbHVlKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2V0RGVmYXVsdFNlYXJjaChudWxsKVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuY29uc3QgQ3JlYXRlRHJvcGRvd24gPSAoe1xuICBpc0VtcHR5LFxuICBlbXB0eVN0YXRlLFxuICBkZXNjcmlwdGlvbkRpcmVjdGlvbixcbiAgbG9hZE1vcmUsXG4gIG9wdGlvbmFsSW5mb1BsYWNlbWVudCxcbiAgZGVmYXVsdFNlYXJjaFZhbHVlLFxuICBpc0xvYWRpbmcsXG59OiBDcmVhdGVEcm9wZG93blByb3BzKSA9PiB7XG4gIGNvbnN0IHtcbiAgICBzZXRJc0Ryb3Bkb3duVmlzaWJsZSxcbiAgICBvbkNoYW5nZSxcbiAgICBvcHRpb25zLFxuICAgIG11bHRpc2VsZWN0LFxuICAgIHNlbGVjdEFsbCxcbiAgICBzZWxlY3RBbGxHcm91cCxcbiAgICBkaXNwbGF5ZWRPcHRpb25zLFxuICAgIHNldFNlbGVjdGVkRGF0YSxcbiAgICBzZWxlY3RlZERhdGEsXG4gIH0gPSB1c2VTZWxlY3RJbnB1dCgpXG4gIGNvbnN0IGZvY3VzZWRJdGVtUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGRlZmF1bHRTZWFyY2hWYWx1ZSAmJiBmb2N1c2VkSXRlbVJlZj8uY3VycmVudCkge1xuICAgICAgZm9jdXNlZEl0ZW1SZWYuY3VycmVudC5mb2N1cygpXG4gICAgfVxuICB9LCBbZGVmYXVsdFNlYXJjaFZhbHVlXSlcblxuICBpZiAoaXNFbXB0eSkge1xuICAgIHJldHVybiAoXG4gICAgICA8RW1wdHlTdGF0ZSBnYXA9ezJ9IGFsaWduSXRlbXM9XCJjZW50ZXJcIj5cbiAgICAgICAge2VtcHR5U3RhdGUgPz8gKFxuICAgICAgICAgIDxUZXh0IHZhcmlhbnQ9XCJib2R5U3Ryb25nXCIgYXM9XCJwXCI+XG4gICAgICAgICAgICBObyBvcHRpb25zXG4gICAgICAgICAgPC9UZXh0PlxuICAgICAgICApfVxuICAgICAgPC9FbXB0eVN0YXRlPlxuICAgIClcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZUNsaWNrID0gKGNsaWNrZWRPcHRpb246IE9wdGlvblR5cGUsIGdyb3VwPzogc3RyaW5nKSA9PiB7XG4gICAgc2V0U2VsZWN0ZWREYXRhKHsgdHlwZTogJ3NlbGVjdE9wdGlvbicsIGNsaWNrZWRPcHRpb24sIGdyb3VwIH0pXG4gICAgaWYgKG11bHRpc2VsZWN0KSB7XG4gICAgICBpZiAoc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzLmluY2x1ZGVzKGNsaWNrZWRPcHRpb24udmFsdWUpKSB7XG4gICAgICAgIG9uQ2hhbmdlPy4oXG4gICAgICAgICAgc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzLmZpbHRlcihcbiAgICAgICAgICAgIHZhbCA9PiB2YWwgIT09IGNsaWNrZWRPcHRpb24udmFsdWUsXG4gICAgICAgICAgKSxcbiAgICAgICAgKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb25DaGFuZ2U/LihbLi4uc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzLCBjbGlja2VkT3B0aW9uLnZhbHVlXSlcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgb25DaGFuZ2U/LihjbGlja2VkT3B0aW9uLnZhbHVlKVxuICAgIH1cbiAgICBzZXRJc0Ryb3Bkb3duVmlzaWJsZShtdWx0aXNlbGVjdCkgLy8gaGlkZSB0aGUgZHJvcGRvd24gb24gY2xpY2sgd2hlbiBzaW5nbGUgc2VsZWN0IG9ubHlcbiAgfVxuXG4gIGNvbnN0IHNlbGVjdEFsbE9wdGlvbnMgPSAoKSA9PiB7XG4gICAgaWYgKG11bHRpc2VsZWN0KSB7XG4gICAgICBzZXRTZWxlY3RlZERhdGEoeyB0eXBlOiAnc2VsZWN0QWxsJyB9KVxuICAgICAgaWYgKHNlbGVjdGVkRGF0YS5hbGxTZWxlY3RlZCAmJiBvbkNoYW5nZSkge1xuICAgICAgICBvbkNoYW5nZShbXSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGFsbFZhbHVlczogT3B0aW9uVHlwZVtdID0gW11cbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KG9wdGlvbnMpKSB7XG4gICAgICAgICAgT2JqZWN0LmtleXMob3B0aW9ucykubWFwKChncm91cDogc3RyaW5nKSA9PlxuICAgICAgICAgICAgb3B0aW9uc1tncm91cF0ubWFwKG9wdGlvbiA9PiB7XG4gICAgICAgICAgICAgIGlmICghb3B0aW9uLmRpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgYWxsVmFsdWVzLnB1c2gob3B0aW9uKVxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIClcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvcHRpb25zLm1hcChvcHRpb24gPT4gYWxsVmFsdWVzLnB1c2gob3B0aW9uKSlcbiAgICAgICAgfVxuICAgICAgICBvbkNoYW5nZT8uKGFsbFZhbHVlcy5tYXAodmFsdWUgPT4gdmFsdWUudmFsdWUpKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGhhbmRsZVNlbGVjdEdyb3VwID0gKGdyb3VwOiBzdHJpbmcpID0+IHtcbiAgICBpZiAobXVsdGlzZWxlY3QpIHtcbiAgICAgIHNldFNlbGVjdGVkRGF0YSh7IHR5cGU6ICdzZWxlY3RHcm91cCcsIHNlbGVjdGVkR3JvdXA6IGdyb3VwIH0pXG4gICAgICBpZiAoIUFycmF5LmlzQXJyYXkob3B0aW9ucykpIHtcbiAgICAgICAgaWYgKHNlbGVjdGVkRGF0YS5zZWxlY3RlZEdyb3Vwcy5pbmNsdWRlcyhncm91cCkpIHtcbiAgICAgICAgICBjb25zdCBuZXdTZWxlY3RlZFZhbHVlcyA9IFsuLi5zZWxlY3RlZERhdGEuc2VsZWN0ZWRWYWx1ZXNdLmZpbHRlcihcbiAgICAgICAgICAgIHNlbGVjdGVkVmFsdWUgPT5cbiAgICAgICAgICAgICAgIW9wdGlvbnNbZ3JvdXBdLmZpbmQob3B0aW9uID0+IG9wdGlvbi52YWx1ZSA9PT0gc2VsZWN0ZWRWYWx1ZSksXG4gICAgICAgICAgKVxuICAgICAgICAgIG9uQ2hhbmdlPy4obmV3U2VsZWN0ZWRWYWx1ZXMpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgbmV3U2VsZWN0ZWRWYWx1ZXMgPSBbLi4uc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzXVxuXG4gICAgICAgICAgb3B0aW9uc1tncm91cF0ubWFwKG9wdGlvbiA9PlxuICAgICAgICAgICAgbmV3U2VsZWN0ZWRWYWx1ZXMuaW5jbHVkZXMob3B0aW9uLnZhbHVlKSB8fCBvcHRpb24uZGlzYWJsZWRcbiAgICAgICAgICAgICAgPyBudWxsXG4gICAgICAgICAgICAgIDogbmV3U2VsZWN0ZWRWYWx1ZXMucHVzaChvcHRpb24udmFsdWUpLFxuICAgICAgICAgIClcbiAgICAgICAgICBvbkNoYW5nZT8uKG5ld1NlbGVjdGVkVmFsdWVzKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuICFBcnJheS5pc0FycmF5KGRpc3BsYXllZE9wdGlvbnMpID8gKFxuICAgIDxEcm9wZG93bkNvbnRhaW5lclxuICAgICAgcm9sZT1cImxpc3Rib3hcIlxuICAgICAgaWQ9XCJzZWxlY3QtZHJvcGRvd25cIlxuICAgICAgb25LZXlEb3duPXtoYW5kbGVLZXlEb3duU2VsZWN0fVxuICAgICAgZGF0YS1ncm91cGVkXG4gICAgPlxuICAgICAge2lzTG9hZGluZyA/IChcbiAgICAgICAgPFNrZWxldG9uIHZhcmlhbnQ9XCJibG9ja1wiIC8+XG4gICAgICApIDogKFxuICAgICAgICA8PlxuICAgICAgICAgIHtzZWxlY3RBbGwgJiYgbXVsdGlzZWxlY3QgPyAoXG4gICAgICAgICAgICA8U3RhY2sgaWQ9XCJpdGVtc1wiPlxuICAgICAgICAgICAgICA8RHJvcGRvd25JdGVtXG4gICAgICAgICAgICAgICAgYXJpYS1kaXNhYmxlZD17ZmFsc2V9XG4gICAgICAgICAgICAgICAgYXJpYS1zZWxlY3RlZD17c2VsZWN0ZWREYXRhLmFsbFNlbGVjdGVkfVxuICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJzZWxlY3QtYWxsXCJcbiAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD1cInNlbGVjdC1hbGxcIlxuICAgICAgICAgICAgICAgIGlkPVwic2VsZWN0LWFsbFwiXG4gICAgICAgICAgICAgICAgdGFiSW5kZXg9ezB9XG4gICAgICAgICAgICAgICAgcm9sZT1cIm9wdGlvblwiXG4gICAgICAgICAgICAgICAgb25LZXlEb3duPXtldmVudCA9PlxuICAgICAgICAgICAgICAgICAgWycgJywgJ0VudGVyJ10uaW5jbHVkZXMoZXZlbnQua2V5KSA/IHNlbGVjdEFsbE9wdGlvbnMoKSA6IG51bGxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgb25DbGljaz17c2VsZWN0QWxsT3B0aW9uc31cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxTdHlsZWRDaGVja2JveFxuICAgICAgICAgICAgICAgICAgY2hlY2tlZD17c2VsZWN0ZWREYXRhLmFsbFNlbGVjdGVkfVxuICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgdmFsdWU9XCJzZWxlY3QtYWxsXCJcbiAgICAgICAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwic2VsZWN0LWFsbC1jaGVja2JveFwiXG4gICAgICAgICAgICAgICAgICB0YWJJbmRleD17LTF9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPFN0YWNrIGRpcmVjdGlvbj1cImNvbHVtblwiPlxuICAgICAgICAgICAgICAgICAgICA8VGV4dCBhcz1cInNwYW5cIiB2YXJpYW50PVwiYm9keVwiIHBsYWNlbWVudD1cImxlZnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICB7c2VsZWN0QWxsLmxhYmVsfVxuICAgICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgICAgIDxUZXh0XG4gICAgICAgICAgICAgICAgICAgICAgYXM9XCJzcGFuXCJcbiAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50PVwiYm9keVNtYWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICBzZW50aW1lbnQ9XCJuZXV0cmFsXCJcbiAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJsZWZ0XCJcbiAgICAgICAgICAgICAgICAgICAgICBwcm9taW5lbmNlPVwid2Vha1wiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7c2VsZWN0QWxsLmRlc2NyaXB0aW9ufVxuICAgICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgICA8L1N0YWNrPlxuICAgICAgICAgICAgICAgIDwvU3R5bGVkQ2hlY2tib3g+XG4gICAgICAgICAgICAgIDwvRHJvcGRvd25JdGVtPlxuICAgICAgICAgICAgPC9TdGFjaz5cbiAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICB7T2JqZWN0LmtleXMoZGlzcGxheWVkT3B0aW9ucykubWFwKChncm91cCwgaW5kZXgpID0+IChcbiAgICAgICAgICAgIDxTdGFjayBrZXk9e2dyb3VwfSBnYXA9ezAuMjV9PlxuICAgICAgICAgICAgICB7ZGlzcGxheWVkT3B0aW9uc1tncm91cF0ubGVuZ3RoID4gMCA/IChcbiAgICAgICAgICAgICAgICA8RHJvcGRvd25Hcm91cFdyYXBwZXIgaWQ9e3NlbGVjdEFsbEdyb3VwID8gJ2l0ZW1zJyA6IHVuZGVmaW5lZH0+XG4gICAgICAgICAgICAgICAgICB7Z3JvdXAgPyAoXG4gICAgICAgICAgICAgICAgICAgIDxEcm9wZG93bkdyb3VwXG4gICAgICAgICAgICAgICAgICAgICAga2V5PXtncm91cH1cbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICB0YWJJbmRleD17c2VsZWN0QWxsR3JvdXAgPyAwIDogLTF9XG4gICAgICAgICAgICAgICAgICAgICAgb25LZXlEb3duPXtldmVudCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoWycgJywgJ0VudGVyJ10uaW5jbHVkZXMoZXZlbnQua2V5KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZVNlbGVjdEdyb3VwKGdyb3VwKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgZGF0YS1zZWxlY3Rncm91cD17c2VsZWN0QWxsR3JvdXB9XG4gICAgICAgICAgICAgICAgICAgICAgcm9sZT1cImdyb3VwXCJcbiAgICAgICAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD17YGdyb3VwLSR7aW5kZXh9YH1cbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0QWxsR3JvdXAgPyBoYW5kbGVTZWxlY3RHcm91cChncm91cCkgOiBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAge3NlbGVjdEFsbEdyb3VwID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgPFN0eWxlZENoZWNrYm94XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e3NlbGVjdGVkRGF0YS5zZWxlY3RlZEdyb3Vwcy5pbmNsdWRlcyhncm91cCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2dyb3VwfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD1cInNlbGVjdC1ncm91cFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRhYkluZGV4PXstMX1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPFRleHQgdmFyaWFudD1cImNhcHRpb25cIiBhcz1cInNwYW5cIiBwbGFjZW1lbnQ9XCJsZWZ0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2dyb3VwLnRvVXBwZXJDYXNlKCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvU3R5bGVkQ2hlY2tib3g+XG4gICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxUZXh0XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJjYXB0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYXM9XCJzcGFuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwibGVmdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNlbnRpbWVudD1cIm5ldXRyYWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7Z3JvdXAudG9VcHBlckNhc2UoKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICA8L0Ryb3Bkb3duR3JvdXA+XG4gICAgICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgICAgICA8L0Ryb3Bkb3duR3JvdXBXcmFwcGVyPlxuICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgICAgPFN0YWNrIGlkPVwiaXRlbXNcIiBnYXA9XCIwLjI1XCI+XG4gICAgICAgICAgICAgICAge2Rpc3BsYXllZE9wdGlvbnNbZ3JvdXBdLm1hcCgob3B0aW9uLCBpbmRleE9wdGlvbikgPT4gKFxuICAgICAgICAgICAgICAgICAgPERyb3Bkb3duSXRlbVxuICAgICAgICAgICAgICAgICAgICBrZXk9e29wdGlvbi52YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgYXJpYS1kaXNhYmxlZD17ISFvcHRpb24uZGlzYWJsZWR9XG4gICAgICAgICAgICAgICAgICAgIHRhYkluZGV4PXshb3B0aW9uLmRpc2FibGVkID8gMCA6IC0xfVxuICAgICAgICAgICAgICAgICAgICBhcmlhLXNlbGVjdGVkPXtcbiAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZERhdGEuc2VsZWN0ZWRWYWx1ZXMuaW5jbHVkZXMob3B0aW9uLnZhbHVlKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICFvcHRpb24uZGlzYWJsZWRcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPXtvcHRpb24udmFsdWV9XG4gICAgICAgICAgICAgICAgICAgIGRhdGEtdGVzdGlkPXtgb3B0aW9uLSR7b3B0aW9uLnZhbHVlfWB9XG4gICAgICAgICAgICAgICAgICAgIGlkPXtgb3B0aW9uLSR7aW5kZXhPcHRpb259YH1cbiAgICAgICAgICAgICAgICAgICAgcm9sZT1cIm9wdGlvblwiXG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoIW9wdGlvbi5kaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlQ2xpY2sob3B0aW9uLCBncm91cClcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgIG9uS2V5RG93bj17ZXZlbnQgPT5cbiAgICAgICAgICAgICAgICAgICAgICBbJyAnLCAnRW50ZXInXS5pbmNsdWRlcyhldmVudC5rZXkpXG4gICAgICAgICAgICAgICAgICAgICAgICA/IGhhbmRsZUNsaWNrKG9wdGlvbiwgZ3JvdXApXG4gICAgICAgICAgICAgICAgICAgICAgICA6IG51bGxcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZWY9e1xuICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbi52YWx1ZSA9PT0gZGVmYXVsdFNlYXJjaFZhbHVlIHx8XG4gICAgICAgICAgICAgICAgICAgICAgb3B0aW9uLnNlYXJjaFRleHQgPT09IGRlZmF1bHRTZWFyY2hWYWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgPyBmb2N1c2VkSXRlbVJlZlxuICAgICAgICAgICAgICAgICAgICAgICAgOiBudWxsXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge211bHRpc2VsZWN0ID8gKFxuICAgICAgICAgICAgICAgICAgICAgIDxTdHlsZWRDaGVja2JveFxuICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tlZD17XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkRGF0YS5zZWxlY3RlZFZhbHVlcy5pbmNsdWRlcyhvcHRpb24udmFsdWUpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICFvcHRpb24uZGlzYWJsZWRcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtvcHRpb24uZGlzYWJsZWR9XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17b3B0aW9uLnZhbHVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgdGFiSW5kZXg9ey0xfVxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxEaXNwbGF5T3B0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbj17b3B0aW9ufVxuICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbkRpcmVjdGlvbj17ZGVzY3JpcHRpb25EaXJlY3Rpb259XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsSW5mb1BsYWNlbWVudD17b3B0aW9uYWxJbmZvUGxhY2VtZW50fVxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8L1N0eWxlZENoZWNrYm94PlxuICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgIDxEaXNwbGF5T3B0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb249e29wdGlvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uRGlyZWN0aW9uPXtkZXNjcmlwdGlvbkRpcmVjdGlvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsSW5mb1BsYWNlbWVudD17b3B0aW9uYWxJbmZvUGxhY2VtZW50fVxuICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICA8L0Ryb3Bkb3duSXRlbT5cbiAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgPC9TdGFjaz5cbiAgICAgICAgICAgIDwvU3RhY2s+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvPlxuICAgICAgKX1cbiAgICAgIHtsb2FkTW9yZSA/IDxMb2FkTW9yZT57bG9hZE1vcmV9PC9Mb2FkTW9yZT4gOiBudWxsfVxuICAgIDwvRHJvcGRvd25Db250YWluZXI+XG4gICkgOiAoXG4gICAgPERyb3Bkb3duQ29udGFpbmVyXG4gICAgICByb2xlPVwibGlzdGJveFwiXG4gICAgICB0YWJJbmRleD17LTF9XG4gICAgICBpZD1cInNlbGVjdC1kcm9wZG93blwiXG4gICAgICBvbktleURvd249e2hhbmRsZUtleURvd25TZWxlY3R9XG4gICAgICBnYXA9ezAuMjV9XG4gICAgICBkYXRhLWdyb3VwZWQ9e2ZhbHNlfVxuICAgID5cbiAgICAgIHtzZWxlY3RBbGwgJiYgbXVsdGlzZWxlY3QgPyAoXG4gICAgICAgIDxTdGFjayBpZD1cIml0ZW1zXCIgZ2FwPXswLjI1fSB0YWJJbmRleD17LTF9PlxuICAgICAgICAgIDxEcm9wZG93bkl0ZW1cbiAgICAgICAgICAgIGFyaWEtZGlzYWJsZWQ9e2ZhbHNlfVxuICAgICAgICAgICAgYXJpYS1zZWxlY3RlZD17c2VsZWN0ZWREYXRhLmFsbFNlbGVjdGVkfVxuICAgICAgICAgICAgYXJpYS1sYWJlbD1cInNlbGVjdC1hbGxcIlxuICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJzZWxlY3QtYWxsXCJcbiAgICAgICAgICAgIHRhYkluZGV4PXswfVxuICAgICAgICAgICAgcm9sZT1cIm9wdGlvblwiXG4gICAgICAgICAgICBvbktleURvd249e2V2ZW50ID0+XG4gICAgICAgICAgICAgIFsnICcsICdFbnRlciddLmluY2x1ZGVzKGV2ZW50LmtleSkgPyBzZWxlY3RBbGxPcHRpb25zKCkgOiBudWxsXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvbkNsaWNrPXtzZWxlY3RBbGxPcHRpb25zfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxTdHlsZWRDaGVja2JveFxuICAgICAgICAgICAgICBjaGVja2VkPXtzZWxlY3RlZERhdGEuYWxsU2VsZWN0ZWR9XG4gICAgICAgICAgICAgIGRpc2FibGVkPXtmYWxzZX1cbiAgICAgICAgICAgICAgdmFsdWU9XCJzZWxlY3QtYWxsXCJcbiAgICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJzZWxlY3QtYWxsLWNoZWNrYm94XCJcbiAgICAgICAgICAgICAgdGFiSW5kZXg9ey0xfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8U3RhY2sgZGlyZWN0aW9uPVwiY29sdW1uXCI+XG4gICAgICAgICAgICAgICAgPFRleHQgYXM9XCJzcGFuXCIgdmFyaWFudD1cImJvZHlcIiBwbGFjZW1lbnQ9XCJsZWZ0XCI+XG4gICAgICAgICAgICAgICAgICB7c2VsZWN0QWxsLmxhYmVsfVxuICAgICAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgICAgICA8VGV4dFxuICAgICAgICAgICAgICAgICAgYXM9XCJzcGFuXCJcbiAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJib2R5U21hbGxcIlxuICAgICAgICAgICAgICAgICAgc2VudGltZW50PVwibmV1dHJhbFwiXG4gICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJsZWZ0XCJcbiAgICAgICAgICAgICAgICAgIHByb21pbmVuY2U9XCJ3ZWFrXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICB7c2VsZWN0QWxsLmRlc2NyaXB0aW9ufVxuICAgICAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgICAgPC9TdGFjaz5cbiAgICAgICAgICAgIDwvU3R5bGVkQ2hlY2tib3g+XG4gICAgICAgICAgPC9Ecm9wZG93bkl0ZW0+XG4gICAgICAgIDwvU3RhY2s+XG4gICAgICApIDogbnVsbH1cbiAgICAgIDxTdGFjayBpZD1cIml0ZW1zXCIgZ2FwPXswLjI1fT5cbiAgICAgICAge2lzTG9hZGluZyA/IChcbiAgICAgICAgICA8U2tlbGV0b24gdmFyaWFudD1cImJsb2NrXCIgLz5cbiAgICAgICAgKSA6IChcbiAgICAgICAgICBkaXNwbGF5ZWRPcHRpb25zLm1hcCgob3B0aW9uLCBpbmRleCkgPT4gKFxuICAgICAgICAgICAgPERyb3Bkb3duSXRlbVxuICAgICAgICAgICAgICBrZXk9e29wdGlvbi52YWx1ZX1cbiAgICAgICAgICAgICAgYXJpYS1kaXNhYmxlZD17ISFvcHRpb24uZGlzYWJsZWR9XG4gICAgICAgICAgICAgIGFyaWEtc2VsZWN0ZWQ9e1xuICAgICAgICAgICAgICAgIHNlbGVjdGVkRGF0YS5zZWxlY3RlZFZhbHVlcy5pbmNsdWRlcyhvcHRpb24udmFsdWUpICYmXG4gICAgICAgICAgICAgICAgIW9wdGlvbi5kaXNhYmxlZFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIW9wdGlvbi5kaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgICAgaGFuZGxlQ2xpY2sob3B0aW9uKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgYXJpYS1sYWJlbD17b3B0aW9uLnZhbHVlfVxuICAgICAgICAgICAgICBkYXRhLXRlc3RpZD17YG9wdGlvbi0ke29wdGlvbi52YWx1ZX1gfVxuICAgICAgICAgICAgICBpZD17YG9wdGlvbi0ke2luZGV4fWB9XG4gICAgICAgICAgICAgIHJvbGU9XCJvcHRpb25cIlxuICAgICAgICAgICAgICB0YWJJbmRleD17IW9wdGlvbi5kaXNhYmxlZCA/IDAgOiAtMX1cbiAgICAgICAgICAgICAgcmVmPXtcbiAgICAgICAgICAgICAgICBvcHRpb24udmFsdWUgPT09IGRlZmF1bHRTZWFyY2hWYWx1ZSB8fFxuICAgICAgICAgICAgICAgIG9wdGlvbi5zZWFyY2hUZXh0ID09PSBkZWZhdWx0U2VhcmNoVmFsdWVcbiAgICAgICAgICAgICAgICAgID8gZm9jdXNlZEl0ZW1SZWZcbiAgICAgICAgICAgICAgICAgIDogbnVsbFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIG9uS2V5RG93bj17ZXZlbnQgPT5cbiAgICAgICAgICAgICAgICBbJyAnLCAnRW50ZXInXS5pbmNsdWRlcyhldmVudC5rZXkpID8gaGFuZGxlQ2xpY2sob3B0aW9uKSA6IG51bGxcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7bXVsdGlzZWxlY3QgPyAoXG4gICAgICAgICAgICAgICAgPFN0eWxlZENoZWNrYm94XG4gICAgICAgICAgICAgICAgICBjaGVja2VkPXtcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzLmluY2x1ZGVzKG9wdGlvbi52YWx1ZSkgJiZcbiAgICAgICAgICAgICAgICAgICAgIW9wdGlvbi5kaXNhYmxlZFxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e29wdGlvbi5kaXNhYmxlZH1cbiAgICAgICAgICAgICAgICAgIHZhbHVlPXtvcHRpb24udmFsdWV9XG4gICAgICAgICAgICAgICAgICB0YWJJbmRleD17LTF9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPERpc3BsYXlPcHRpb25cbiAgICAgICAgICAgICAgICAgICAgb3B0aW9uPXtvcHRpb259XG4gICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uRGlyZWN0aW9uPXtkZXNjcmlwdGlvbkRpcmVjdGlvbn1cbiAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWxJbmZvUGxhY2VtZW50PXtvcHRpb25hbEluZm9QbGFjZW1lbnR9XG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvU3R5bGVkQ2hlY2tib3g+XG4gICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgPERpc3BsYXlPcHRpb25cbiAgICAgICAgICAgICAgICAgIG9wdGlvbj17b3B0aW9ufVxuICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb25EaXJlY3Rpb249e2Rlc2NyaXB0aW9uRGlyZWN0aW9ufVxuICAgICAgICAgICAgICAgICAgb3B0aW9uYWxJbmZvUGxhY2VtZW50PXtvcHRpb25hbEluZm9QbGFjZW1lbnR9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvRHJvcGRvd25JdGVtPlxuICAgICAgICAgICkpXG4gICAgICAgICl9XG4gICAgICAgIHtsb2FkTW9yZSA/IDxMb2FkTW9yZT57bG9hZE1vcmV9PC9Mb2FkTW9yZT4gOiBudWxsfVxuICAgICAgPC9TdGFjaz5cbiAgICA8L0Ryb3Bkb3duQ29udGFpbmVyPlxuICApXG59XG5leHBvcnQgY29uc3QgRHJvcGRvd24gPSAoe1xuICBjaGlsZHJlbixcbiAgZW1wdHlTdGF0ZSxcbiAgZGVzY3JpcHRpb25EaXJlY3Rpb24sXG4gIHNlYXJjaGFibGUsXG4gIHBsYWNlaG9sZGVyLFxuICBmb290ZXIsXG4gIHJlZlNlbGVjdCxcbiAgbG9hZE1vcmUsXG4gIG9wdGlvbmFsSW5mb1BsYWNlbWVudCxcbiAgaXNMb2FkaW5nLFxuICBzaXplLFxufTogRHJvcGRvd25Qcm9wcykgPT4ge1xuICBjb25zdCB7XG4gICAgc2V0SXNEcm9wZG93blZpc2libGUsXG4gICAgaXNEcm9wZG93blZpc2libGUsXG4gICAgb25TZWFyY2gsXG4gICAgc2VhcmNoSW5wdXQsXG4gICAgb3B0aW9ucyxcbiAgICBkaXNwbGF5ZWRPcHRpb25zLFxuICAgIG51bWJlck9mT3B0aW9ucyxcbiAgfSA9IHVzZVNlbGVjdElucHV0KClcbiAgY29uc3QgdGhlbWUgPSB1c2VUaGVtZSgpXG4gIGNvbnN0IFtzZWFyY2hCYXJBY3RpdmUsIHNldFNlYXJjaEJhckFjdGl2ZV0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW2RlZmF1bHRTZWFyY2hWYWx1ZSwgc2V0RGVmYXVsdFNlYXJjaF0gPSB1c2VTdGF0ZTxzdHJpbmcgfCBudWxsPihudWxsKVxuICBjb25zdCByZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IFtzZWFyY2gsIHNldFNlYXJjaF0gPSB1c2VTdGF0ZTxzdHJpbmc+KCcnKVxuICBjb25zdCBbbWF4V2lkdGgsIHNldFdpZHRoXSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bWJlcj4oKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHJlZlNlbGVjdC5jdXJyZW50ICYmIGlzRHJvcGRvd25WaXNpYmxlKSB7XG4gICAgICBjb25zdCBwb3NpdGlvbiA9XG4gICAgICAgIHJlZlNlbGVjdC5jdXJyZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmJvdHRvbSArXG4gICAgICAgIERST1BET1dOX01BWF9IRUlHSFQgK1xuICAgICAgICBJTlBVVF9TSVpFX0hFSUdIVFtzaXplXSArXG4gICAgICAgIHBhcnNlSW50KHRoZW1lLnNwYWNlWyc1J10sIDEwKVxuICAgICAgY29uc3Qgb3ZlcmZsb3cgPSBwb3NpdGlvbiAtIHdpbmRvdy5pbm5lckhlaWdodFxuICAgICAgaWYgKG92ZXJmbG93ID4gMCkge1xuICAgICAgICBjb25zdCBtb2RhbEVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYmFja2Ryb3AtbW9kYWwnKVxuXG4gICAgICAgIGlmIChtb2RhbEVsZW1lbnQpIHtcbiAgICAgICAgICBtb2RhbEVsZW1lbnQuc2Nyb2xsQnkoeyB0b3A6IG92ZXJmbG93LCBiZWhhdmlvcjogJ3Ntb290aCcgfSlcbiAgICAgICAgfSBlbHNlIHdpbmRvdy5zY3JvbGxCeSh7IHRvcDogb3ZlcmZsb3csIGJlaGF2aW9yOiAnc21vb3RoJyB9KVxuICAgICAgfVxuICAgIH1cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvZXhoYXVzdGl2ZS1kZXBzXG4gIH0sIFtpc0Ryb3Bkb3duVmlzaWJsZSwgcmVmU2VsZWN0LCBzaXplLCByZWYuY3VycmVudF0pXG5cbiAgY29uc3QgcmVzaXplRHJvcGRvd24gPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKFxuICAgICAgcmVmU2VsZWN0LmN1cnJlbnQgJiZcbiAgICAgIHJlZlNlbGVjdC5jdXJyZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoID4gMFxuICAgICkge1xuICAgICAgc2V0V2lkdGgocmVmU2VsZWN0LmN1cnJlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGgpXG4gICAgfVxuICB9LCBbcmVmU2VsZWN0XSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHJlc2l6ZURyb3Bkb3duKClcblxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCByZXNpemVEcm9wZG93bilcblxuICAgIHJldHVybiAoKSA9PiB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgcmVzaXplRHJvcGRvd24pXG4gIH0sIFtyZXNpemVEcm9wZG93bl0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIXNlYXJjaElucHV0KSB7XG4gICAgICBvblNlYXJjaChvcHRpb25zKVxuICAgIH1cbiAgfSwgW29uU2VhcmNoLCBvcHRpb25zLCBzZWFyY2hJbnB1dF0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWlzRHJvcGRvd25WaXNpYmxlKSB7XG4gICAgICBzZXREZWZhdWx0U2VhcmNoKG51bGwpXG4gICAgICBzZXRTZWFyY2goJycpXG4gICAgfVxuXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgZXZlbnQgPT5cbiAgICAgIGhhbmRsZUNsaWNrT3V0c2lkZShcbiAgICAgICAgZXZlbnQsXG4gICAgICAgIHJlZixcbiAgICAgICAgc2V0SXNEcm9wZG93blZpc2libGUsXG4gICAgICAgIHJlZlNlbGVjdCxcbiAgICAgICAgb25TZWFyY2gsXG4gICAgICAgIG9wdGlvbnMsXG4gICAgICApLFxuICAgIClcblxuICAgIGlmICghc2VhcmNoYWJsZSkge1xuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIGV2ZW50ID0+XG4gICAgICAgIGhhbmRsZUtleURvd24oXG4gICAgICAgICAgZXZlbnQsXG4gICAgICAgICAgcmVmLFxuICAgICAgICAgIG9wdGlvbnMsXG4gICAgICAgICAgc2VhcmNoQmFyQWN0aXZlLFxuICAgICAgICAgIHNldFNlYXJjaCxcbiAgICAgICAgICBzZXREZWZhdWx0U2VhcmNoLFxuICAgICAgICAgIHNlYXJjaCxcbiAgICAgICAgKSxcbiAgICAgIClcbiAgICB9XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgZXZlbnQgPT5cbiAgICAgICAgaGFuZGxlQ2xpY2tPdXRzaWRlKFxuICAgICAgICAgIGV2ZW50LFxuICAgICAgICAgIHJlZixcbiAgICAgICAgICBzZXRJc0Ryb3Bkb3duVmlzaWJsZSxcbiAgICAgICAgICByZWZTZWxlY3QsXG4gICAgICAgICAgb25TZWFyY2gsXG4gICAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgKSxcbiAgICAgIClcblxuICAgICAgaWYgKCFzZWFyY2hhYmxlKSB7XG4gICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBldmVudCA9PlxuICAgICAgICAgIGhhbmRsZUtleURvd24oXG4gICAgICAgICAgICBldmVudCxcbiAgICAgICAgICAgIHJlZixcbiAgICAgICAgICAgIG9wdGlvbnMsXG4gICAgICAgICAgICBzZWFyY2hCYXJBY3RpdmUsXG4gICAgICAgICAgICBzZXRTZWFyY2gsXG4gICAgICAgICAgICBzZXREZWZhdWx0U2VhcmNoLFxuICAgICAgICAgICAgc2VhcmNoLFxuICAgICAgICAgICksXG4gICAgICAgIClcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtcbiAgICBpc0Ryb3Bkb3duVmlzaWJsZSxcbiAgICBzZWFyY2hCYXJBY3RpdmUsXG4gICAgb3B0aW9ucyxcbiAgICBvblNlYXJjaCxcbiAgICBzZWFyY2gsXG4gICAgcmVmU2VsZWN0LFxuICAgIHNldERlZmF1bHRTZWFyY2gsXG4gICAgc2V0SXNEcm9wZG93blZpc2libGUsXG4gICAgc2VhcmNoYWJsZSxcbiAgXSlcblxuICAvLyBObyBkYXRhIGlzIGRpc3BsYXllZCAoYmVjYXVzZSBvZiB0aGUgc2VhcmNoIG9yIGJlY2F1c2Ugbm8gZGF0YSBpcyBwcm92aWRlZClcbiAgLy8gU2V0IHRvIHRydWUgd2hlbiBub0RhdGEgYnkgZGVmYXVsdFxuICBjb25zdCBpc0VtcHR5ID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKG51bWJlck9mT3B0aW9ucyA9PT0gMCkgcmV0dXJuIHRydWVcbiAgICBpZiAoQXJyYXkuaXNBcnJheShkaXNwbGF5ZWRPcHRpb25zKSkge1xuICAgICAgcmV0dXJuICEoZGlzcGxheWVkT3B0aW9ucy5sZW5ndGggPiAwKVxuICAgIH1cbiAgICBjb25zdCBncm91cHMgPSBPYmplY3Qua2V5cyhkaXNwbGF5ZWRPcHRpb25zKVxuICAgIGZvciAoY29uc3QgZ3JvdXAgb2YgZ3JvdXBzKSB7XG4gICAgICBpZiAoZGlzcGxheWVkT3B0aW9uc1tncm91cF0ubGVuZ3RoICE9PSAwKSB7XG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0cnVlXG4gIH0sIFtkaXNwbGF5ZWRPcHRpb25zLCBudW1iZXJPZk9wdGlvbnNdKVxuXG4gIGNvbnN0IGNvbXB1dGVkRm9vdGVyID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKGZvb3Rlcikge1xuICAgICAgaWYgKHR5cGVvZiBmb290ZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICA8UG9wdXBGb290ZXI+e2Zvb3RlcigoKSA9PiBzZXRJc0Ryb3Bkb3duVmlzaWJsZShmYWxzZSkpfTwvUG9wdXBGb290ZXI+XG4gICAgICAgIClcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIDxQb3B1cEZvb3Rlcj57Zm9vdGVyfTwvUG9wdXBGb290ZXI+XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGxcbiAgfSwgW2Zvb3Rlciwgc2V0SXNEcm9wZG93blZpc2libGVdKVxuXG4gIHJldHVybiAoXG4gICAgPFN0eWxlZFBvcHVwXG4gICAgICB2aXNpYmxlPXtpc0Ryb3Bkb3duVmlzaWJsZX1cbiAgICAgIHRleHQ9e1xuICAgICAgICA8U3RhY2s+XG4gICAgICAgICAge3NlYXJjaGFibGUgJiYgIWlzTG9hZGluZyAmJiBudW1iZXJPZk9wdGlvbnMgPj0gNiA/IChcbiAgICAgICAgICAgIDxTZWFyY2hCYXJEcm9wZG93blxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj17cGxhY2Vob2xkZXJ9XG4gICAgICAgICAgICAgIGRpc3BsYXllZE9wdGlvbnM9e2Rpc3BsYXllZE9wdGlvbnN9XG4gICAgICAgICAgICAgIHNldFNlYXJjaEJhckFjdGl2ZT17c2V0U2VhcmNoQmFyQWN0aXZlfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICA8Q3JlYXRlRHJvcGRvd25cbiAgICAgICAgICAgIGlzRW1wdHk9e2lzRW1wdHl9XG4gICAgICAgICAgICBlbXB0eVN0YXRlPXtlbXB0eVN0YXRlfVxuICAgICAgICAgICAgZGVzY3JpcHRpb25EaXJlY3Rpb249e2Rlc2NyaXB0aW9uRGlyZWN0aW9ufVxuICAgICAgICAgICAgbG9hZE1vcmU9e2xvYWRNb3JlfVxuICAgICAgICAgICAgb3B0aW9uYWxJbmZvUGxhY2VtZW50PXtvcHRpb25hbEluZm9QbGFjZW1lbnR9XG4gICAgICAgICAgICBkZWZhdWx0U2VhcmNoVmFsdWU9e2RlZmF1bHRTZWFyY2hWYWx1ZX1cbiAgICAgICAgICAgIGlzTG9hZGluZz17aXNMb2FkaW5nfVxuICAgICAgICAgIC8+XG4gICAgICAgICAge2NvbXB1dGVkRm9vdGVyfVxuICAgICAgICA8L1N0YWNrPlxuICAgICAgfVxuICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcbiAgICAgIGRpc2FibGVBbmltYXRpb25cbiAgICAgIG1heFdpZHRoPXttYXhXaWR0aCA/PyByZWZTZWxlY3QuY3VycmVudD8ub2Zmc2V0V2lkdGh9XG4gICAgICBoYXNBcnJvdz17ZmFsc2V9XG4gICAgICByZWY9e3JlZn1cbiAgICAgIHRhYkluZGV4PXswfVxuICAgICAgcm9sZT1cImRpYWxvZ1wiXG4gICAgICBkZWJvdW5jZURlbGF5PXswfVxuICAgICAgY29udGFpbmVyRnVsbFdpZHRoXG4gICAgICBhbGlnbj1cInN0YXJ0XCJcbiAgICA+XG4gICAgICB7Y2hpbGRyZW59XG4gICAgPC9TdHlsZWRQb3B1cD5cbiAgKVxufVxuIl19 */"));
169
169
  const LoadMore = /* @__PURE__ */ _styled__default.default(index$1.Stack, process.env.NODE_ENV === "production" ? {
170
170
  target: "eeucz6c0"
171
171
  } : {
@@ -173,7 +173,7 @@ const LoadMore = /* @__PURE__ */ _styled__default.default(index$1.Stack, process
173
173
  label: "LoadMore"
174
174
  })("padding:", ({
175
175
  theme
176
- }) => theme.space[0.5], ";" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL3VsdHJhdmlvbGV0L3VsdHJhdmlvbGV0L3BhY2thZ2VzL3VpL3NyYy9jb21wb25lbnRzL1NlbGVjdElucHV0VjIvRHJvcGRvd24udHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQTZLOEIiLCJmaWxlIjoiL2hvbWUvcnVubmVyL3dvcmsvdWx0cmF2aW9sZXQvdWx0cmF2aW9sZXQvcGFja2FnZXMvdWkvc3JjL2NvbXBvbmVudHMvU2VsZWN0SW5wdXRWMi9Ecm9wZG93bi50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1c2VUaGVtZSB9IGZyb20gJ0BlbW90aW9uL3JlYWN0J1xuaW1wb3J0IHN0eWxlZCBmcm9tICdAZW1vdGlvbi9zdHlsZWQnXG5pbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VNZW1vLCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgdHlwZSB7XG4gIERpc3BhdGNoLFxuICBLZXlib2FyZEV2ZW50LFxuICBSZWFjdE5vZGUsXG4gIFJlZk9iamVjdCxcbiAgU2V0U3RhdGVBY3Rpb24sXG59IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgQ2hlY2tib3ggfSBmcm9tICcuLi9DaGVja2JveCdcbmltcG9ydCB7IFBvcHVwIH0gZnJvbSAnLi4vUG9wdXAnXG5pbXBvcnQgeyBTa2VsZXRvbiB9IGZyb20gJy4uL1NrZWxldG9uJ1xuaW1wb3J0IHsgU3RhY2sgfSBmcm9tICcuLi9TdGFjaydcbmltcG9ydCB7IFRleHQgfSBmcm9tICcuLi9UZXh0J1xuaW1wb3J0IHsgRGlzcGxheU9wdGlvbiB9IGZyb20gJy4vRHJvcGRvd25PcHRpb24nXG5pbXBvcnQgeyBTZWFyY2hCYXJEcm9wZG93biB9IGZyb20gJy4vU2VhcmNoQmFyRHJvcGRvd24nXG5pbXBvcnQgeyB1c2VTZWxlY3RJbnB1dCB9IGZyb20gJy4vU2VsZWN0SW5wdXRQcm92aWRlcidcbmltcG9ydCB7IHR5cGUgRGF0YVR5cGUsIElOUFVUX1NJWkVfSEVJR0hULCB0eXBlIE9wdGlvblR5cGUgfSBmcm9tICcuL3R5cGVzJ1xuXG5jb25zdCBEUk9QRE9XTl9NQVhfSEVJR0hUID0gMjU2XG5cbmV4cG9ydCB0eXBlIERyb3Bkb3duUHJvcHMgPSB7XG4gIGNoaWxkcmVuOiBSZWFjdE5vZGVcbiAgZW1wdHlTdGF0ZTogUmVhY3ROb2RlXG4gIGRlc2NyaXB0aW9uRGlyZWN0aW9uOiAncm93JyB8ICdjb2x1bW4nXG4gIHNlYXJjaGFibGU6IGJvb2xlYW5cbiAgcGxhY2Vob2xkZXI6IHN0cmluZ1xuICBmb290ZXI/OiBSZWFjdE5vZGVcbiAgcmVmU2VsZWN0OiBSZWZPYmplY3Q8SFRNTERpdkVsZW1lbnQ+XG4gIGxvYWRNb3JlPzogUmVhY3ROb2RlXG4gIG9wdGlvbmFsSW5mb1BsYWNlbWVudDogJ2xlZnQnIHwgJ3JpZ2h0J1xuICBpc0xvYWRpbmc/OiBib29sZWFuXG4gIHNpemU6ICdzbWFsbCcgfCAnbWVkaXVtJyB8ICdsYXJnZSdcbn1cblxuZXhwb3J0IHR5cGUgQ3JlYXRlRHJvcGRvd25Qcm9wcyA9IHtcbiAgaXNFbXB0eTogYm9vbGVhblxuICBlbXB0eVN0YXRlOiBSZWFjdE5vZGVcbiAgZGVzY3JpcHRpb25EaXJlY3Rpb246ICdyb3cnIHwgJ2NvbHVtbidcbiAgbG9hZE1vcmU/OiBSZWFjdE5vZGVcbiAgb3B0aW9uYWxJbmZvUGxhY2VtZW50OiAnbGVmdCcgfCAncmlnaHQnXG4gIGRlZmF1bHRTZWFyY2hWYWx1ZTogc3RyaW5nIHwgbnVsbFxuICBpc0xvYWRpbmc/OiBib29sZWFuXG59XG5cbmNvbnN0IE5PTl9TRUFSQ0hBQkxFX0tFWVMgPSBbXG4gICdUYWInLFxuICAnICcsXG4gICdFbnRlcicsXG4gICdDYXBzTG9jaycsXG4gICdTaGlmdCcsXG4gICdBcnJvd0Rvd24nLFxuICAnQXJyb3dVcCcsXG4gICdBcnJvd0xlZnQnLFxuICAnQXJyb3dSaWdodCcsXG4gICdFc2NhcGUnLFxuXVxuXG5jb25zdCBTdHlsZWRQb3B1cCA9IHN0eWxlZChQb3B1cClgXG4gIHdpZHRoOiAxMDAlO1xuICBtaW4td2lkdGg6IDMyMHB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5vdGhlci5lbGV2YXRpb24uYmFja2dyb3VuZC5yYWlzZWR9O1xuICBjb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMubmV1dHJhbC50ZXh0fTtcbiAgYm94LXNoYWRvdzogJHsoeyB0aGVtZSB9KSA9PiBgJHt0aGVtZS5zaGFkb3dzLnJhaXNlZFswXX0sICR7dGhlbWUuc2hhZG93cy5yYWlzZWRbMV19YH07XG4gIHBhZGRpbmc6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMF19O1xuICBtYXJnaW4tYm90dG9tOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzEwXX07XG5gXG5cbmNvbnN0IERyb3Bkb3duQ29udGFpbmVyID0gc3R5bGVkKFN0YWNrKTx7ICdkYXRhLWdyb3VwZWQnOiBib29sZWFuIH0+YFxuICBtYXgtaGVpZ2h0OiAke0RST1BET1dOX01BWF9IRUlHSFR9cHg7XG4gIG92ZXJmbG93LXk6IHNjcm9sbDtcbiAgcGFkZGluZzogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVswXX07XG4gIHBhZGRpbmctYm90dG9tOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzAuNV19O1xuICBwYWRkaW5nLXRvcDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVswLjVdfTtcblxuICAmW2RhdGEtZ3JvdXBlZD1cInRydWVcIl0ge1xuICAgIHBhZGRpbmctdG9wOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzBdfTtcbiAgfVxuYFxuY29uc3QgRHJvcGRvd25Hcm91cCA9IHN0eWxlZC5idXR0b248eyAnZGF0YS1zZWxlY3Rncm91cCc6IGJvb2xlYW4gfT5gXG4gIGRpc3BsYXk6IGZsZXg7XG4gIHdpZHRoOiAxMDAlO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGxlZnQ7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGJvcmRlcjogbm9uZTtcbiAgYmFja2dyb3VuZC1jb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMubmV1dHJhbC5iYWNrZ3JvdW5kV2Vha307XG4gIHBvc2l0aW9uOiBzdGlja3k7XG4gIHRvcDogMHB4O1xuICBwYWRkaW5nLXJpZ2h0OiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzJdfTtcbiAgcGFkZGluZy1sZWZ0OiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzJdfTtcbiAgaGVpZ2h0OiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzRdfTtcbiAgdGV4dC1hbGlnbjogbGVmdDtcbiAgbWFyZ2luLWJvdHRvbTogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsnMC4yNSddfTtcblxuICAmOmZvY3VzIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5uZXV0cmFsLmJhY2tncm91bmRXZWFrfTtcbiAgICBvdXRsaW5lOiBub25lO1xuICB9XG5cbiAgJltkYXRhLXNlbGVjdGdyb3VwPSd0cnVlJ10ge1xuICAgIHBhZGRpbmctbGVmdDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsyXX07XG4gICAgYm9yZGVyLWxlZnQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMC41XX0gc29saWQgJHsoeyB0aGVtZSB9KSA9PlxuICAgICAgdGhlbWUuY29sb3JzLm5ldXRyYWwuYmFja2dyb3VuZFdlYWt9O1xuICB9XG5cbiAgJltkYXRhLXNlbGVjdGdyb3VwPSd0cnVlJ106Zm9jdXMge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwuYmFja2dyb3VuZEhvdmVyfTtcbiAgfVxuYFxuY29uc3QgRHJvcGRvd25Hcm91cFdyYXBwZXIgPSBzdHlsZWQuZGl2YFxuICBwb3NpdGlvbjogc3RpY2t5O1xuICB0b3A6IDBweDtcbmBcbmNvbnN0IERyb3Bkb3duSXRlbSA9IHN0eWxlZC5kaXY8e1xuICAnYXJpYS1zZWxlY3RlZCc6IGJvb2xlYW5cbiAgJ2FyaWEtZGlzYWJsZWQnOiBib29sZWFuXG59PmBcbiAgdGV4dC1hbGlnbjpsZWZ0O1xuICBib3JkZXI6IG5vbmU7XG4gIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm90aGVyLmVsZXZhdGlvbi5iYWNrZ3JvdW5kLnJhaXNlZH07XG5cbiAgcGFkZGluZzogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsnMS41J119ICR7KHsgdGhlbWUgfSkgPT5cbiAgICB0aGVtZS5zcGFjZVsnMiddfSAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWycxLjUnXX0gJHsoeyB0aGVtZSB9KSA9PlxuICAgIHRoZW1lLnNwYWNlWycyJ119O1xuICBtYXJnaW4tbGVmdDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsnMC41J119O1xuICBtYXJnaW4tcmlnaHQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbJzAuNSddfTtcblxuICBjb2xvcjogICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwudGV4dH07XG4gIGJvcmRlci1yYWRpdXM6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUucmFkaWkuZGVmYXVsdH07XG5cbiAgJjpob3ZlciwgOmZvY3VzIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5wcmltYXJ5LmJhY2tncm91bmR9O1xuICAgIGNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5wcmltYXJ5LnRleHR9O1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBvdXRsaW5lOiBub25lO1xuICB9XG5cbiAgJlthcmlhLXNlbGVjdGVkPSd0cnVlJ10ge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLnByaW1hcnkuYmFja2dyb3VuZH07XG4gIH1cblxuICAmW2FyaWEtZGlzYWJsZWQ9XCJ0cnVlXCJdIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5uZXV0cmFsLmJhY2tncm91bmREaXNhYmxlZH07XG4gICAgY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwudGV4dERpc2FibGVkfTtcbiAgfVxuXG4gICZbYXJpYS1kaXNhYmxlZD1cInRydWVcIl06aG92ZXIsIFthcmlhLWRpc2FibGVkPVwidHJ1ZVwiXTpmb2N1cyB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHsoeyB0aGVtZSB9KSA9PlxuICAgICAgdGhlbWUuY29sb3JzLm5ldXRyYWwuYmFja2dyb3VuZFN0cm9uZ0Rpc2FibGVkfTtcbiAgICBjb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMubmV1dHJhbC50ZXh0U3Ryb25nRGlzYWJsZWR9O1xuICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgfVxuYFxuXG5jb25zdCBQb3B1cEZvb3RlciA9IHN0eWxlZC5kaXZgXG4gIHdpZHRoOiAxMDAlO1xuICBwYWRkaW5nOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzEuNV19ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMl19XG4gICAgJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsxLjVdfSAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzJdfTtcbiAgYm94LXNoYWRvdzogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zaGFkb3dzLmRyb3Bkb3dufTtcbmBcbmNvbnN0IFN0eWxlZENoZWNrYm94ID0gc3R5bGVkKENoZWNrYm94KWBcbiAgd2lkdGg6IDEwMCU7XG4gIHBvc2l0aW9uOiBzdGF0aWM7XG4gIHRleHQtYWxpZ246IGxlZnQ7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuYCAvLyBwb2ludGVyLWV2ZW50czogbm9uZSBwcmV2ZW50cyBhbnkgZXJyb3Igd2hlbiB1c2luZyB0aGUgY2hlY2tib3ggaW4gYSBmb3JtIHNpbmNlIGl0IGlzIGFuIHVubmFtZWQgaW5wdXRcblxuY29uc3QgRW1wdHlTdGF0ZSA9IHN0eWxlZChTdGFjaylgXG4gIHBhZGRpbmc6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMl19O1xuYFxuY29uc3QgTG9hZE1vcmUgPSBzdHlsZWQoU3RhY2spYFxuICBwYWRkaW5nOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzAuNV19O1xuYFxuXG5jb25zdCBtb3ZlRm9jdXNEb3duID0gKCkgPT4ge1xuICBjb25zdCBvcHRpb25zID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcbiAgICAnI2l0ZW1zID4gZGl2W3JvbGU9XCJvcHRpb25cIl06bm90KFtkaXNhYmxlZF0pJyxcbiAgKVxuICBjb25zdCBhY3RpdmVJdGVtID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudFxuICBpZiAob3B0aW9ucykge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgb3B0aW9ucz8ubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgIGNvbnN0IGxpc3RMZW5ndGggPSBvcHRpb25zLmxlbmd0aFxuICAgICAgaWYgKGFjdGl2ZUl0ZW0gPT09IG9wdGlvbnNbaV0gJiYgYWN0aXZlSXRlbSAhPT0gb3B0aW9uc1tsaXN0TGVuZ3RoIC0gMV0pIHtcbiAgICAgICAgOyhvcHRpb25zW2kgKyAxXSBhcyBIVE1MRWxlbWVudCkuZm9jdXMoKVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuY29uc3QgbW92ZUZvY3VzVXAgPSAoKSA9PiB7XG4gIGNvbnN0IG9wdGlvbnMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFxuICAgICcjaXRlbXMgPiBkaXZbcm9sZT1cIm9wdGlvblwiXTpub3QoW2Rpc2FibGVkXSknLFxuICApXG4gIGNvbnN0IGFjdGl2ZUl0ZW0gPSBkb2N1bWVudC5hY3RpdmVFbGVtZW50XG5cbiAgaWYgKG9wdGlvbnMpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG9wdGlvbnMubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgIGlmIChhY3RpdmVJdGVtID09PSBvcHRpb25zW2ldICYmIGFjdGl2ZUl0ZW0gIT09IG9wdGlvbnNbMF0pIHtcbiAgICAgICAgOyhvcHRpb25zW2kgLSAxXSBhcyBIVE1MRWxlbWVudCkuZm9jdXMoKVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuY29uc3QgaGFuZGxlS2V5RG93blNlbGVjdCA9IChldmVudDogS2V5Ym9hcmRFdmVudDxIVE1MRGl2RWxlbWVudD4pID0+IHtcbiAgaWYgKGV2ZW50LmtleSA9PT0gJ0Fycm93RG93bicpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgbW92ZUZvY3VzRG93bigpXG4gIH1cblxuICBpZiAoZXZlbnQua2V5ID09PSAnQXJyb3dVcCcpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgbW92ZUZvY3VzVXAoKVxuICB9XG59XG5jb25zdCBoYW5kbGVDbGlja091dHNpZGUgPSAoXG4gIGV2ZW50OiBNb3VzZUV2ZW50LFxuICByZWY6IFJlZk9iamVjdDxIVE1MRGl2RWxlbWVudD4sXG4gIHNldElzRHJvcGRvd25WaXNpYmlsZTogRGlzcGF0Y2g8U2V0U3RhdGVBY3Rpb248Ym9vbGVhbj4+LFxuICByZWZTZWxlY3Q6IFJlZk9iamVjdDxIVE1MRGl2RWxlbWVudD4sXG4gIG9uU2VhcmNoOiBEaXNwYXRjaDxTZXRTdGF0ZUFjdGlvbjxEYXRhVHlwZT4+LFxuICBvcHRpb25zOiBEYXRhVHlwZSxcbikgPT4ge1xuICBpZiAoXG4gICAgcmVmLmN1cnJlbnQgJiZcbiAgICAhcmVmLmN1cnJlbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0IGFzIE5vZGUpICYmXG4gICAgIXJlZlNlbGVjdC5jdXJyZW50Py5jb250YWlucyhldmVudC50YXJnZXQgYXMgTm9kZSlcbiAgKSB7XG4gICAgc2V0SXNEcm9wZG93blZpc2liaWxlKGZhbHNlKSAvLyBoaWRlIGRyb3Bkb3duIHdoZW4gY2xpY2tpbmcgb3V0c2lkZSBvZiB0aGUgZHJvcGRvd25cbiAgICBvblNlYXJjaChvcHRpb25zKSAvLyByZXNldCBkaXNwbGF5ZWQgb3B0aW9ucyB0byBkZWZhdWx0IHdoZW4gZHJvcGRvd24gaXMgaGlkZGVuXG4gIH1cbn1cblxuY29uc3QgaGFuZGxlS2V5RG93biA9IChcbiAgZXZlbnQ6IGdsb2JhbFRoaXMuS2V5Ym9hcmRFdmVudCxcbiAgcmVmOiBSZWZPYmplY3Q8SFRNTERpdkVsZW1lbnQ+LFxuICBvcHRpb25zOiBEYXRhVHlwZSxcbiAgc2VhcmNoQmFyQWN0aXZlOiBib29sZWFuLFxuICBzZXRTZWFyY2g6IERpc3BhdGNoPFNldFN0YXRlQWN0aW9uPHN0cmluZz4+LFxuICBzZXREZWZhdWx0U2VhcmNoOiBEaXNwYXRjaDxTZXRTdGF0ZUFjdGlvbjxzdHJpbmcgfCBudWxsPj4sXG4gIHNlYXJjaDogc3RyaW5nLFxuKSA9PiB7XG4gIC8vIERlYWxzIHdpdGggZGVmYXVsdCBzZWFyY2hcbiAgaWYgKFxuICAgIHJlZi5jdXJyZW50ICYmXG4gICAgIXNlYXJjaEJhckFjdGl2ZSAmJlxuICAgICFOT05fU0VBUkNIQUJMRV9LRVlTLmluY2x1ZGVzKGV2ZW50LmtleSkgJiZcbiAgICBkb2N1bWVudC5hY3RpdmVFbGVtZW50Py5hcmlhTGFiZWwgIT09ICdzZWFyY2gtYmFyJ1xuICApIHtcbiAgICBjb25zdCBjdXJyZW50U2VhcmNoID0gc2VhcmNoICsgZXZlbnQua2V5XG4gICAgc2V0U2VhcmNoKGN1cnJlbnRTZWFyY2gpXG4gICAgcmVmLmN1cnJlbnQuZm9jdXMoKVxuICAgIGlmICghQXJyYXkuaXNBcnJheShvcHRpb25zKSkge1xuICAgICAgY29uc3QgY2xvc2VzdE9wdGlvbnMgPSB7IC4uLm9wdGlvbnMgfVxuICAgICAgT2JqZWN0LmtleXMoY2xvc2VzdE9wdGlvbnMpLm1hcCgoZ3JvdXA6IHN0cmluZykgPT4ge1xuICAgICAgICBjbG9zZXN0T3B0aW9uc1tncm91cF0gPSBjbG9zZXN0T3B0aW9uc1tncm91cF0uZmlsdGVyKG9wdGlvbiA9PlxuICAgICAgICAgIG9wdGlvbi5zZWFyY2hUZXh0XG4gICAgICAgICAgICA/IG9wdGlvbi5zZWFyY2hUZXh0LnRvTG9jYWxlTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChjdXJyZW50U2VhcmNoKVxuICAgICAgICAgICAgOiBvcHRpb24udmFsdWUudG9Mb2NhbGVMb3dlckNhc2UoKS5zdGFydHNXaXRoKGN1cnJlbnRTZWFyY2gpLFxuICAgICAgICApXG5cbiAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgIH0pXG4gICAgICBjb25zdCBjbG9zZXN0T3B0aW9uID0gY2xvc2VzdE9wdGlvbnNbT2JqZWN0LmtleXMoY2xvc2VzdE9wdGlvbnMpWzBdXVswXVxuICAgICAgaWYgKGNsb3Nlc3RPcHRpb24pIHtcbiAgICAgICAgc2V0RGVmYXVsdFNlYXJjaChjbG9zZXN0T3B0aW9uLnNlYXJjaFRleHQgPz8gY2xvc2VzdE9wdGlvbi52YWx1ZSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNldERlZmF1bHRTZWFyY2gobnVsbClcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgY2xvc2VzdE9wdGlvbiA9IFsuLi5vcHRpb25zXS5maWx0ZXIob3B0aW9uID0+XG4gICAgICAgIG9wdGlvbi5zZWFyY2hUZXh0XG4gICAgICAgICAgPyBvcHRpb24uc2VhcmNoVGV4dC50b0xvY2FsZUxvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoY3VycmVudFNlYXJjaClcbiAgICAgICAgICA6IG9wdGlvbi52YWx1ZS50b0xvY2FsZUxvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoY3VycmVudFNlYXJjaCksXG4gICAgICApWzBdXG4gICAgICBpZiAoY2xvc2VzdE9wdGlvbikge1xuICAgICAgICBzZXREZWZhdWx0U2VhcmNoKGNsb3Nlc3RPcHRpb24uc2VhcmNoVGV4dCA/PyBjbG9zZXN0T3B0aW9uLnZhbHVlKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2V0RGVmYXVsdFNlYXJjaChudWxsKVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuY29uc3QgQ3JlYXRlRHJvcGRvd24gPSAoe1xuICBpc0VtcHR5LFxuICBlbXB0eVN0YXRlLFxuICBkZXNjcmlwdGlvbkRpcmVjdGlvbixcbiAgbG9hZE1vcmUsXG4gIG9wdGlvbmFsSW5mb1BsYWNlbWVudCxcbiAgZGVmYXVsdFNlYXJjaFZhbHVlLFxuICBpc0xvYWRpbmcsXG59OiBDcmVhdGVEcm9wZG93blByb3BzKSA9PiB7XG4gIGNvbnN0IHtcbiAgICBzZXRJc0Ryb3Bkb3duVmlzaWJsZSxcbiAgICBvbkNoYW5nZSxcbiAgICBvcHRpb25zLFxuICAgIG11bHRpc2VsZWN0LFxuICAgIHNlbGVjdEFsbCxcbiAgICBzZWxlY3RBbGxHcm91cCxcbiAgICBkaXNwbGF5ZWRPcHRpb25zLFxuICAgIHNldFNlbGVjdGVkRGF0YSxcbiAgICBzZWxlY3RlZERhdGEsXG4gIH0gPSB1c2VTZWxlY3RJbnB1dCgpXG4gIGNvbnN0IGZvY3VzZWRJdGVtUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGRlZmF1bHRTZWFyY2hWYWx1ZSAmJiBmb2N1c2VkSXRlbVJlZj8uY3VycmVudCkge1xuICAgICAgZm9jdXNlZEl0ZW1SZWYuY3VycmVudC5mb2N1cygpXG4gICAgfVxuICB9LCBbZGVmYXVsdFNlYXJjaFZhbHVlXSlcblxuICBpZiAoaXNFbXB0eSkge1xuICAgIHJldHVybiAoXG4gICAgICA8RW1wdHlTdGF0ZSBnYXA9ezJ9IGFsaWduSXRlbXM9XCJjZW50ZXJcIj5cbiAgICAgICAge2VtcHR5U3RhdGUgPz8gKFxuICAgICAgICAgIDxUZXh0IHZhcmlhbnQ9XCJib2R5U3Ryb25nXCIgYXM9XCJwXCI+XG4gICAgICAgICAgICBObyBvcHRpb25zXG4gICAgICAgICAgPC9UZXh0PlxuICAgICAgICApfVxuICAgICAgPC9FbXB0eVN0YXRlPlxuICAgIClcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZUNsaWNrID0gKGNsaWNrZWRPcHRpb246IE9wdGlvblR5cGUsIGdyb3VwPzogc3RyaW5nKSA9PiB7XG4gICAgc2V0U2VsZWN0ZWREYXRhKHsgdHlwZTogJ3NlbGVjdE9wdGlvbicsIGNsaWNrZWRPcHRpb24sIGdyb3VwIH0pXG4gICAgaWYgKG11bHRpc2VsZWN0KSB7XG4gICAgICBpZiAoc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzLmluY2x1ZGVzKGNsaWNrZWRPcHRpb24udmFsdWUpKSB7XG4gICAgICAgIG9uQ2hhbmdlPy4oXG4gICAgICAgICAgc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzLmZpbHRlcihcbiAgICAgICAgICAgIHZhbCA9PiB2YWwgIT09IGNsaWNrZWRPcHRpb24udmFsdWUsXG4gICAgICAgICAgKSxcbiAgICAgICAgKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb25DaGFuZ2U/LihbLi4uc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzLCBjbGlja2VkT3B0aW9uLnZhbHVlXSlcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgb25DaGFuZ2U/LihjbGlja2VkT3B0aW9uLnZhbHVlKVxuICAgIH1cbiAgICBzZXRJc0Ryb3Bkb3duVmlzaWJsZShtdWx0aXNlbGVjdCkgLy8gaGlkZSB0aGUgZHJvcGRvd24gb24gY2xpY2sgd2hlbiBzaW5nbGUgc2VsZWN0IG9ubHlcbiAgfVxuXG4gIGNvbnN0IHNlbGVjdEFsbE9wdGlvbnMgPSAoKSA9PiB7XG4gICAgaWYgKG11bHRpc2VsZWN0KSB7XG4gICAgICBzZXRTZWxlY3RlZERhdGEoeyB0eXBlOiAnc2VsZWN0QWxsJyB9KVxuICAgICAgaWYgKHNlbGVjdGVkRGF0YS5hbGxTZWxlY3RlZCAmJiBvbkNoYW5nZSkge1xuICAgICAgICBvbkNoYW5nZShbXSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGFsbFZhbHVlczogT3B0aW9uVHlwZVtdID0gW11cbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KG9wdGlvbnMpKSB7XG4gICAgICAgICAgT2JqZWN0LmtleXMob3B0aW9ucykubWFwKChncm91cDogc3RyaW5nKSA9PlxuICAgICAgICAgICAgb3B0aW9uc1tncm91cF0ubWFwKG9wdGlvbiA9PiB7XG4gICAgICAgICAgICAgIGlmICghb3B0aW9uLmRpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgYWxsVmFsdWVzLnB1c2gob3B0aW9uKVxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIClcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvcHRpb25zLm1hcChvcHRpb24gPT4gYWxsVmFsdWVzLnB1c2gob3B0aW9uKSlcbiAgICAgICAgfVxuICAgICAgICBvbkNoYW5nZT8uKGFsbFZhbHVlcy5tYXAodmFsdWUgPT4gdmFsdWUudmFsdWUpKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGhhbmRsZVNlbGVjdEdyb3VwID0gKGdyb3VwOiBzdHJpbmcpID0+IHtcbiAgICBpZiAobXVsdGlzZWxlY3QpIHtcbiAgICAgIHNldFNlbGVjdGVkRGF0YSh7IHR5cGU6ICdzZWxlY3RHcm91cCcsIHNlbGVjdGVkR3JvdXA6IGdyb3VwIH0pXG4gICAgICBpZiAoIUFycmF5LmlzQXJyYXkob3B0aW9ucykpIHtcbiAgICAgICAgaWYgKHNlbGVjdGVkRGF0YS5zZWxlY3RlZEdyb3Vwcy5pbmNsdWRlcyhncm91cCkpIHtcbiAgICAgICAgICBjb25zdCBuZXdTZWxlY3RlZFZhbHVlcyA9IFsuLi5zZWxlY3RlZERhdGEuc2VsZWN0ZWRWYWx1ZXNdLmZpbHRlcihcbiAgICAgICAgICAgIHNlbGVjdGVkVmFsdWUgPT5cbiAgICAgICAgICAgICAgIW9wdGlvbnNbZ3JvdXBdLmZpbmQob3B0aW9uID0+IG9wdGlvbi52YWx1ZSA9PT0gc2VsZWN0ZWRWYWx1ZSksXG4gICAgICAgICAgKVxuICAgICAgICAgIG9uQ2hhbmdlPy4obmV3U2VsZWN0ZWRWYWx1ZXMpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgbmV3U2VsZWN0ZWRWYWx1ZXMgPSBbLi4uc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzXVxuXG4gICAgICAgICAgb3B0aW9uc1tncm91cF0ubWFwKG9wdGlvbiA9PlxuICAgICAgICAgICAgbmV3U2VsZWN0ZWRWYWx1ZXMuaW5jbHVkZXMob3B0aW9uLnZhbHVlKSB8fCBvcHRpb24uZGlzYWJsZWRcbiAgICAgICAgICAgICAgPyBudWxsXG4gICAgICAgICAgICAgIDogbmV3U2VsZWN0ZWRWYWx1ZXMucHVzaChvcHRpb24udmFsdWUpLFxuICAgICAgICAgIClcbiAgICAgICAgICBvbkNoYW5nZT8uKG5ld1NlbGVjdGVkVmFsdWVzKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuICFBcnJheS5pc0FycmF5KGRpc3BsYXllZE9wdGlvbnMpID8gKFxuICAgIDxEcm9wZG93bkNvbnRhaW5lclxuICAgICAgcm9sZT1cImxpc3Rib3hcIlxuICAgICAgaWQ9XCJzZWxlY3QtZHJvcGRvd25cIlxuICAgICAgb25LZXlEb3duPXtoYW5kbGVLZXlEb3duU2VsZWN0fVxuICAgICAgZGF0YS1ncm91cGVkXG4gICAgPlxuICAgICAge2lzTG9hZGluZyA/IChcbiAgICAgICAgPFNrZWxldG9uIHZhcmlhbnQ9XCJibG9ja1wiIC8+XG4gICAgICApIDogKFxuICAgICAgICA8PlxuICAgICAgICAgIHtzZWxlY3RBbGwgJiYgbXVsdGlzZWxlY3QgPyAoXG4gICAgICAgICAgICA8U3RhY2sgaWQ9XCJpdGVtc1wiPlxuICAgICAgICAgICAgICA8RHJvcGRvd25JdGVtXG4gICAgICAgICAgICAgICAgYXJpYS1kaXNhYmxlZD17ZmFsc2V9XG4gICAgICAgICAgICAgICAgYXJpYS1zZWxlY3RlZD17c2VsZWN0ZWREYXRhLmFsbFNlbGVjdGVkfVxuICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJzZWxlY3QtYWxsXCJcbiAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD1cInNlbGVjdC1hbGxcIlxuICAgICAgICAgICAgICAgIGlkPVwic2VsZWN0LWFsbFwiXG4gICAgICAgICAgICAgICAgdGFiSW5kZXg9ezB9XG4gICAgICAgICAgICAgICAgcm9sZT1cIm9wdGlvblwiXG4gICAgICAgICAgICAgICAgb25LZXlEb3duPXtldmVudCA9PlxuICAgICAgICAgICAgICAgICAgWycgJywgJ0VudGVyJ10uaW5jbHVkZXMoZXZlbnQua2V5KSA/IHNlbGVjdEFsbE9wdGlvbnMoKSA6IG51bGxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgb25DbGljaz17c2VsZWN0QWxsT3B0aW9uc31cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxTdHlsZWRDaGVja2JveFxuICAgICAgICAgICAgICAgICAgY2hlY2tlZD17c2VsZWN0ZWREYXRhLmFsbFNlbGVjdGVkfVxuICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgdmFsdWU9XCJzZWxlY3QtYWxsXCJcbiAgICAgICAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwic2VsZWN0LWFsbC1jaGVja2JveFwiXG4gICAgICAgICAgICAgICAgICB0YWJJbmRleD17LTF9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPFN0YWNrIGRpcmVjdGlvbj1cImNvbHVtblwiPlxuICAgICAgICAgICAgICAgICAgICA8VGV4dCBhcz1cInNwYW5cIiB2YXJpYW50PVwiYm9keVwiIHBsYWNlbWVudD1cImxlZnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICB7c2VsZWN0QWxsLmxhYmVsfVxuICAgICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgICAgIDxUZXh0XG4gICAgICAgICAgICAgICAgICAgICAgYXM9XCJzcGFuXCJcbiAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50PVwiYm9keVNtYWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICBzZW50aW1lbnQ9XCJuZXV0cmFsXCJcbiAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJsZWZ0XCJcbiAgICAgICAgICAgICAgICAgICAgICBwcm9taW5lbmNlPVwid2Vha1wiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7c2VsZWN0QWxsLmRlc2NyaXB0aW9ufVxuICAgICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgICA8L1N0YWNrPlxuICAgICAgICAgICAgICAgIDwvU3R5bGVkQ2hlY2tib3g+XG4gICAgICAgICAgICAgIDwvRHJvcGRvd25JdGVtPlxuICAgICAgICAgICAgPC9TdGFjaz5cbiAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICB7T2JqZWN0LmtleXMoZGlzcGxheWVkT3B0aW9ucykubWFwKChncm91cCwgaW5kZXgpID0+IChcbiAgICAgICAgICAgIDxTdGFjayBrZXk9e2dyb3VwfSBnYXA9ezAuMjV9PlxuICAgICAgICAgICAgICB7ZGlzcGxheWVkT3B0aW9uc1tncm91cF0ubGVuZ3RoID4gMCA/IChcbiAgICAgICAgICAgICAgICA8RHJvcGRvd25Hcm91cFdyYXBwZXIgaWQ9e3NlbGVjdEFsbEdyb3VwID8gJ2l0ZW1zJyA6IHVuZGVmaW5lZH0+XG4gICAgICAgICAgICAgICAgICB7Z3JvdXAgPyAoXG4gICAgICAgICAgICAgICAgICAgIDxEcm9wZG93bkdyb3VwXG4gICAgICAgICAgICAgICAgICAgICAga2V5PXtncm91cH1cbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICB0YWJJbmRleD17c2VsZWN0QWxsR3JvdXAgPyAwIDogLTF9XG4gICAgICAgICAgICAgICAgICAgICAgb25LZXlEb3duPXtldmVudCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoWycgJywgJ0VudGVyJ10uaW5jbHVkZXMoZXZlbnQua2V5KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZVNlbGVjdEdyb3VwKGdyb3VwKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgZGF0YS1zZWxlY3Rncm91cD17c2VsZWN0QWxsR3JvdXB9XG4gICAgICAgICAgICAgICAgICAgICAgcm9sZT1cImdyb3VwXCJcbiAgICAgICAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD17YGdyb3VwLSR7aW5kZXh9YH1cbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0QWxsR3JvdXAgPyBoYW5kbGVTZWxlY3RHcm91cChncm91cCkgOiBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAge3NlbGVjdEFsbEdyb3VwID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgPFN0eWxlZENoZWNrYm94XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e3NlbGVjdGVkRGF0YS5zZWxlY3RlZEdyb3Vwcy5pbmNsdWRlcyhncm91cCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2dyb3VwfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD1cInNlbGVjdC1ncm91cFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRhYkluZGV4PXstMX1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPFRleHQgdmFyaWFudD1cImNhcHRpb25cIiBhcz1cInNwYW5cIiBwbGFjZW1lbnQ9XCJsZWZ0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2dyb3VwLnRvVXBwZXJDYXNlKCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvU3R5bGVkQ2hlY2tib3g+XG4gICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxUZXh0XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJjYXB0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYXM9XCJzcGFuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwibGVmdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNlbnRpbWVudD1cIm5ldXRyYWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7Z3JvdXAudG9VcHBlckNhc2UoKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICA8L0Ryb3Bkb3duR3JvdXA+XG4gICAgICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgICAgICA8L0Ryb3Bkb3duR3JvdXBXcmFwcGVyPlxuICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgICAgPFN0YWNrIGlkPVwiaXRlbXNcIiBnYXA9XCIwLjI1XCI+XG4gICAgICAgICAgICAgICAge2Rpc3BsYXllZE9wdGlvbnNbZ3JvdXBdLm1hcCgob3B0aW9uLCBpbmRleE9wdGlvbikgPT4gKFxuICAgICAgICAgICAgICAgICAgPERyb3Bkb3duSXRlbVxuICAgICAgICAgICAgICAgICAgICBrZXk9e29wdGlvbi52YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgYXJpYS1kaXNhYmxlZD17ISFvcHRpb24uZGlzYWJsZWR9XG4gICAgICAgICAgICAgICAgICAgIHRhYkluZGV4PXshb3B0aW9uLmRpc2FibGVkID8gMCA6IC0xfVxuICAgICAgICAgICAgICAgICAgICBhcmlhLXNlbGVjdGVkPXtcbiAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZERhdGEuc2VsZWN0ZWRWYWx1ZXMuaW5jbHVkZXMob3B0aW9uLnZhbHVlKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICFvcHRpb24uZGlzYWJsZWRcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPXtvcHRpb24udmFsdWV9XG4gICAgICAgICAgICAgICAgICAgIGRhdGEtdGVzdGlkPXtgb3B0aW9uLSR7b3B0aW9uLnZhbHVlfWB9XG4gICAgICAgICAgICAgICAgICAgIGlkPXtgb3B0aW9uLSR7aW5kZXhPcHRpb259YH1cbiAgICAgICAgICAgICAgICAgICAgcm9sZT1cIm9wdGlvblwiXG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoIW9wdGlvbi5kaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlQ2xpY2sob3B0aW9uLCBncm91cClcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgIG9uS2V5RG93bj17ZXZlbnQgPT5cbiAgICAgICAgICAgICAgICAgICAgICBbJyAnLCAnRW50ZXInXS5pbmNsdWRlcyhldmVudC5rZXkpXG4gICAgICAgICAgICAgICAgICAgICAgICA/IGhhbmRsZUNsaWNrKG9wdGlvbiwgZ3JvdXApXG4gICAgICAgICAgICAgICAgICAgICAgICA6IG51bGxcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZWY9e1xuICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbi52YWx1ZSA9PT0gZGVmYXVsdFNlYXJjaFZhbHVlIHx8XG4gICAgICAgICAgICAgICAgICAgICAgb3B0aW9uLnNlYXJjaFRleHQgPT09IGRlZmF1bHRTZWFyY2hWYWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgPyBmb2N1c2VkSXRlbVJlZlxuICAgICAgICAgICAgICAgICAgICAgICAgOiBudWxsXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge211bHRpc2VsZWN0ID8gKFxuICAgICAgICAgICAgICAgICAgICAgIDxTdHlsZWRDaGVja2JveFxuICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tlZD17XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkRGF0YS5zZWxlY3RlZFZhbHVlcy5pbmNsdWRlcyhvcHRpb24udmFsdWUpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICFvcHRpb24uZGlzYWJsZWRcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtvcHRpb24uZGlzYWJsZWR9XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17b3B0aW9uLnZhbHVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgdGFiSW5kZXg9ey0xfVxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxEaXNwbGF5T3B0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbj17b3B0aW9ufVxuICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbkRpcmVjdGlvbj17ZGVzY3JpcHRpb25EaXJlY3Rpb259XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsSW5mb1BsYWNlbWVudD17b3B0aW9uYWxJbmZvUGxhY2VtZW50fVxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8L1N0eWxlZENoZWNrYm94PlxuICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgIDxEaXNwbGF5T3B0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb249e29wdGlvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uRGlyZWN0aW9uPXtkZXNjcmlwdGlvbkRpcmVjdGlvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsSW5mb1BsYWNlbWVudD17b3B0aW9uYWxJbmZvUGxhY2VtZW50fVxuICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICA8L0Ryb3Bkb3duSXRlbT5cbiAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgPC9TdGFjaz5cbiAgICAgICAgICAgIDwvU3RhY2s+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvPlxuICAgICAgKX1cbiAgICAgIHtsb2FkTW9yZSA/IDxMb2FkTW9yZT57bG9hZE1vcmV9PC9Mb2FkTW9yZT4gOiBudWxsfVxuICAgIDwvRHJvcGRvd25Db250YWluZXI+XG4gICkgOiAoXG4gICAgPERyb3Bkb3duQ29udGFpbmVyXG4gICAgICByb2xlPVwibGlzdGJveFwiXG4gICAgICB0YWJJbmRleD17LTF9XG4gICAgICBpZD1cInNlbGVjdC1kcm9wZG93blwiXG4gICAgICBvbktleURvd249e2hhbmRsZUtleURvd25TZWxlY3R9XG4gICAgICBnYXA9ezAuMjV9XG4gICAgICBkYXRhLWdyb3VwZWQ9e2ZhbHNlfVxuICAgID5cbiAgICAgIHtzZWxlY3RBbGwgJiYgbXVsdGlzZWxlY3QgPyAoXG4gICAgICAgIDxTdGFjayBpZD1cIml0ZW1zXCIgZ2FwPXswLjI1fSB0YWJJbmRleD17LTF9PlxuICAgICAgICAgIDxEcm9wZG93bkl0ZW1cbiAgICAgICAgICAgIGFyaWEtZGlzYWJsZWQ9e2ZhbHNlfVxuICAgICAgICAgICAgYXJpYS1zZWxlY3RlZD17c2VsZWN0ZWREYXRhLmFsbFNlbGVjdGVkfVxuICAgICAgICAgICAgYXJpYS1sYWJlbD1cInNlbGVjdC1hbGxcIlxuICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJzZWxlY3QtYWxsXCJcbiAgICAgICAgICAgIHRhYkluZGV4PXswfVxuICAgICAgICAgICAgcm9sZT1cIm9wdGlvblwiXG4gICAgICAgICAgICBvbktleURvd249e2V2ZW50ID0+XG4gICAgICAgICAgICAgIFsnICcsICdFbnRlciddLmluY2x1ZGVzKGV2ZW50LmtleSkgPyBzZWxlY3RBbGxPcHRpb25zKCkgOiBudWxsXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvbkNsaWNrPXtzZWxlY3RBbGxPcHRpb25zfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxTdHlsZWRDaGVja2JveFxuICAgICAgICAgICAgICBjaGVja2VkPXtzZWxlY3RlZERhdGEuYWxsU2VsZWN0ZWR9XG4gICAgICAgICAgICAgIGRpc2FibGVkPXtmYWxzZX1cbiAgICAgICAgICAgICAgdmFsdWU9XCJzZWxlY3QtYWxsXCJcbiAgICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJzZWxlY3QtYWxsLWNoZWNrYm94XCJcbiAgICAgICAgICAgICAgdGFiSW5kZXg9ey0xfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8U3RhY2sgZGlyZWN0aW9uPVwiY29sdW1uXCI+XG4gICAgICAgICAgICAgICAgPFRleHQgYXM9XCJzcGFuXCIgdmFyaWFudD1cImJvZHlcIiBwbGFjZW1lbnQ9XCJsZWZ0XCI+XG4gICAgICAgICAgICAgICAgICB7c2VsZWN0QWxsLmxhYmVsfVxuICAgICAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgICAgICA8VGV4dFxuICAgICAgICAgICAgICAgICAgYXM9XCJzcGFuXCJcbiAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJib2R5U21hbGxcIlxuICAgICAgICAgICAgICAgICAgc2VudGltZW50PVwibmV1dHJhbFwiXG4gICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJsZWZ0XCJcbiAgICAgICAgICAgICAgICAgIHByb21pbmVuY2U9XCJ3ZWFrXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICB7c2VsZWN0QWxsLmRlc2NyaXB0aW9ufVxuICAgICAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgICAgPC9TdGFjaz5cbiAgICAgICAgICAgIDwvU3R5bGVkQ2hlY2tib3g+XG4gICAgICAgICAgPC9Ecm9wZG93bkl0ZW0+XG4gICAgICAgIDwvU3RhY2s+XG4gICAgICApIDogbnVsbH1cbiAgICAgIDxTdGFjayBpZD1cIml0ZW1zXCIgZ2FwPXswLjI1fT5cbiAgICAgICAge2lzTG9hZGluZyA/IChcbiAgICAgICAgICA8U2tlbGV0b24gdmFyaWFudD1cImJsb2NrXCIgLz5cbiAgICAgICAgKSA6IChcbiAgICAgICAgICBkaXNwbGF5ZWRPcHRpb25zLm1hcCgob3B0aW9uLCBpbmRleCkgPT4gKFxuICAgICAgICAgICAgPERyb3Bkb3duSXRlbVxuICAgICAgICAgICAgICBrZXk9e29wdGlvbi52YWx1ZX1cbiAgICAgICAgICAgICAgYXJpYS1kaXNhYmxlZD17ISFvcHRpb24uZGlzYWJsZWR9XG4gICAgICAgICAgICAgIGFyaWEtc2VsZWN0ZWQ9e1xuICAgICAgICAgICAgICAgIHNlbGVjdGVkRGF0YS5zZWxlY3RlZFZhbHVlcy5pbmNsdWRlcyhvcHRpb24udmFsdWUpICYmXG4gICAgICAgICAgICAgICAgIW9wdGlvbi5kaXNhYmxlZFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIW9wdGlvbi5kaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgICAgaGFuZGxlQ2xpY2sob3B0aW9uKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgYXJpYS1sYWJlbD17b3B0aW9uLnZhbHVlfVxuICAgICAgICAgICAgICBkYXRhLXRlc3RpZD17YG9wdGlvbi0ke29wdGlvbi52YWx1ZX1gfVxuICAgICAgICAgICAgICBpZD17YG9wdGlvbi0ke2luZGV4fWB9XG4gICAgICAgICAgICAgIHJvbGU9XCJvcHRpb25cIlxuICAgICAgICAgICAgICB0YWJJbmRleD17IW9wdGlvbi5kaXNhYmxlZCA/IDAgOiAtMX1cbiAgICAgICAgICAgICAgcmVmPXtcbiAgICAgICAgICAgICAgICBvcHRpb24udmFsdWUgPT09IGRlZmF1bHRTZWFyY2hWYWx1ZSB8fFxuICAgICAgICAgICAgICAgIG9wdGlvbi5zZWFyY2hUZXh0ID09PSBkZWZhdWx0U2VhcmNoVmFsdWVcbiAgICAgICAgICAgICAgICAgID8gZm9jdXNlZEl0ZW1SZWZcbiAgICAgICAgICAgICAgICAgIDogbnVsbFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIG9uS2V5RG93bj17ZXZlbnQgPT5cbiAgICAgICAgICAgICAgICBbJyAnLCAnRW50ZXInXS5pbmNsdWRlcyhldmVudC5rZXkpID8gaGFuZGxlQ2xpY2sob3B0aW9uKSA6IG51bGxcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7bXVsdGlzZWxlY3QgPyAoXG4gICAgICAgICAgICAgICAgPFN0eWxlZENoZWNrYm94XG4gICAgICAgICAgICAgICAgICBjaGVja2VkPXtcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzLmluY2x1ZGVzKG9wdGlvbi52YWx1ZSkgJiZcbiAgICAgICAgICAgICAgICAgICAgIW9wdGlvbi5kaXNhYmxlZFxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e29wdGlvbi5kaXNhYmxlZH1cbiAgICAgICAgICAgICAgICAgIHZhbHVlPXtvcHRpb24udmFsdWV9XG4gICAgICAgICAgICAgICAgICB0YWJJbmRleD17LTF9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPERpc3BsYXlPcHRpb25cbiAgICAgICAgICAgICAgICAgICAgb3B0aW9uPXtvcHRpb259XG4gICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uRGlyZWN0aW9uPXtkZXNjcmlwdGlvbkRpcmVjdGlvbn1cbiAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWxJbmZvUGxhY2VtZW50PXtvcHRpb25hbEluZm9QbGFjZW1lbnR9XG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvU3R5bGVkQ2hlY2tib3g+XG4gICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgPERpc3BsYXlPcHRpb25cbiAgICAgICAgICAgICAgICAgIG9wdGlvbj17b3B0aW9ufVxuICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb25EaXJlY3Rpb249e2Rlc2NyaXB0aW9uRGlyZWN0aW9ufVxuICAgICAgICAgICAgICAgICAgb3B0aW9uYWxJbmZvUGxhY2VtZW50PXtvcHRpb25hbEluZm9QbGFjZW1lbnR9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvRHJvcGRvd25JdGVtPlxuICAgICAgICAgICkpXG4gICAgICAgICl9XG4gICAgICAgIHtsb2FkTW9yZSA/IDxMb2FkTW9yZT57bG9hZE1vcmV9PC9Mb2FkTW9yZT4gOiBudWxsfVxuICAgICAgPC9TdGFjaz5cbiAgICA8L0Ryb3Bkb3duQ29udGFpbmVyPlxuICApXG59XG5leHBvcnQgY29uc3QgRHJvcGRvd24gPSAoe1xuICBjaGlsZHJlbixcbiAgZW1wdHlTdGF0ZSxcbiAgZGVzY3JpcHRpb25EaXJlY3Rpb24sXG4gIHNlYXJjaGFibGUsXG4gIHBsYWNlaG9sZGVyLFxuICBmb290ZXIsXG4gIHJlZlNlbGVjdCxcbiAgbG9hZE1vcmUsXG4gIG9wdGlvbmFsSW5mb1BsYWNlbWVudCxcbiAgaXNMb2FkaW5nLFxuICBzaXplLFxufTogRHJvcGRvd25Qcm9wcykgPT4ge1xuICBjb25zdCB7XG4gICAgc2V0SXNEcm9wZG93blZpc2libGUsXG4gICAgaXNEcm9wZG93blZpc2libGUsXG4gICAgb25TZWFyY2gsXG4gICAgc2VhcmNoSW5wdXQsXG4gICAgb3B0aW9ucyxcbiAgICBkaXNwbGF5ZWRPcHRpb25zLFxuICB9ID0gdXNlU2VsZWN0SW5wdXQoKVxuICBjb25zdCB0aGVtZSA9IHVzZVRoZW1lKClcbiAgY29uc3QgW3NlYXJjaEJhckFjdGl2ZSwgc2V0U2VhcmNoQmFyQWN0aXZlXSA9IHVzZVN0YXRlKGZhbHNlKVxuICBjb25zdCBbZGVmYXVsdFNlYXJjaFZhbHVlLCBzZXREZWZhdWx0U2VhcmNoXSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bGw+KG51bGwpXG4gIGNvbnN0IHJlZiA9IHVzZVJlZjxIVE1MRGl2RWxlbWVudD4obnVsbClcbiAgY29uc3QgW3NlYXJjaCwgc2V0U2VhcmNoXSA9IHVzZVN0YXRlPHN0cmluZz4oJycpXG4gIGNvbnN0IFttYXhXaWR0aCwgc2V0V2lkdGhdID0gdXNlU3RhdGU8c3RyaW5nIHwgbnVtYmVyPigpXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAocmVmU2VsZWN0LmN1cnJlbnQgJiYgaXNEcm9wZG93blZpc2libGUpIHtcbiAgICAgIGNvbnN0IHBvc2l0aW9uID1cbiAgICAgICAgcmVmU2VsZWN0LmN1cnJlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkuYm90dG9tICtcbiAgICAgICAgRFJPUERPV05fTUFYX0hFSUdIVCArXG4gICAgICAgIElOUFVUX1NJWkVfSEVJR0hUW3NpemVdICtcbiAgICAgICAgcGFyc2VJbnQodGhlbWUuc3BhY2VbJzUnXSwgMTApXG4gICAgICBjb25zdCBvdmVyZmxvdyA9IHBvc2l0aW9uIC0gd2luZG93LmlubmVySGVpZ2h0XG4gICAgICBpZiAob3ZlcmZsb3cgPiAwKSB7XG4gICAgICAgIGNvbnN0IG1vZGFsRWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdiYWNrZHJvcC1tb2RhbCcpXG5cbiAgICAgICAgaWYgKG1vZGFsRWxlbWVudCkge1xuICAgICAgICAgIG1vZGFsRWxlbWVudC5zY3JvbGxCeSh7IHRvcDogb3ZlcmZsb3csIGJlaGF2aW9yOiAnc21vb3RoJyB9KVxuICAgICAgICB9IGVsc2Ugd2luZG93LnNjcm9sbEJ5KHsgdG9wOiBvdmVyZmxvdywgYmVoYXZpb3I6ICdzbW9vdGgnIH0pXG4gICAgICB9XG4gICAgfVxuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSByZWFjdC1ob29rcy9leGhhdXN0aXZlLWRlcHNcbiAgfSwgW2lzRHJvcGRvd25WaXNpYmxlLCByZWZTZWxlY3QsIHNpemUsIHJlZi5jdXJyZW50XSlcblxuICBjb25zdCByZXNpemVEcm9wZG93biA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBpZiAoXG4gICAgICByZWZTZWxlY3QuY3VycmVudCAmJlxuICAgICAgcmVmU2VsZWN0LmN1cnJlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGggPiAwXG4gICAgKSB7XG4gICAgICBzZXRXaWR0aChyZWZTZWxlY3QuY3VycmVudC5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS53aWR0aClcbiAgICB9XG4gIH0sIFtyZWZTZWxlY3RdKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgcmVzaXplRHJvcGRvd24oKVxuXG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3Jlc2l6ZScsIHJlc2l6ZURyb3Bkb3duKVxuXG4gICAgcmV0dXJuICgpID0+IHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdyZXNpemUnLCByZXNpemVEcm9wZG93bilcbiAgfSwgW3Jlc2l6ZURyb3Bkb3duXSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghc2VhcmNoSW5wdXQpIHtcbiAgICAgIG9uU2VhcmNoKG9wdGlvbnMpXG4gICAgfVxuICB9LCBbb25TZWFyY2gsIG9wdGlvbnMsIHNlYXJjaElucHV0XSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghaXNEcm9wZG93blZpc2libGUpIHtcbiAgICAgIHNldERlZmF1bHRTZWFyY2gobnVsbClcbiAgICAgIHNldFNlYXJjaCgnJylcbiAgICB9XG5cbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCBldmVudCA9PlxuICAgICAgaGFuZGxlQ2xpY2tPdXRzaWRlKFxuICAgICAgICBldmVudCxcbiAgICAgICAgcmVmLFxuICAgICAgICBzZXRJc0Ryb3Bkb3duVmlzaWJsZSxcbiAgICAgICAgcmVmU2VsZWN0LFxuICAgICAgICBvblNlYXJjaCxcbiAgICAgICAgb3B0aW9ucyxcbiAgICAgICksXG4gICAgKVxuXG4gICAgaWYgKCFzZWFyY2hhYmxlKSB7XG4gICAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCdrZXlkb3duJywgZXZlbnQgPT5cbiAgICAgICAgaGFuZGxlS2V5RG93bihcbiAgICAgICAgICBldmVudCxcbiAgICAgICAgICByZWYsXG4gICAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgICBzZWFyY2hCYXJBY3RpdmUsXG4gICAgICAgICAgc2V0U2VhcmNoLFxuICAgICAgICAgIHNldERlZmF1bHRTZWFyY2gsXG4gICAgICAgICAgc2VhcmNoLFxuICAgICAgICApLFxuICAgICAgKVxuICAgIH1cblxuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBkb2N1bWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCdtb3VzZWRvd24nLCBldmVudCA9PlxuICAgICAgICBoYW5kbGVDbGlja091dHNpZGUoXG4gICAgICAgICAgZXZlbnQsXG4gICAgICAgICAgcmVmLFxuICAgICAgICAgIHNldElzRHJvcGRvd25WaXNpYmxlLFxuICAgICAgICAgIHJlZlNlbGVjdCxcbiAgICAgICAgICBvblNlYXJjaCxcbiAgICAgICAgICBvcHRpb25zLFxuICAgICAgICApLFxuICAgICAgKVxuICAgICAgaWYgKCFzZWFyY2hhYmxlKSB7XG4gICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBldmVudCA9PlxuICAgICAgICAgIGhhbmRsZUtleURvd24oXG4gICAgICAgICAgICBldmVudCxcbiAgICAgICAgICAgIHJlZixcbiAgICAgICAgICAgIG9wdGlvbnMsXG4gICAgICAgICAgICBzZWFyY2hCYXJBY3RpdmUsXG4gICAgICAgICAgICBzZXRTZWFyY2gsXG4gICAgICAgICAgICBzZXREZWZhdWx0U2VhcmNoLFxuICAgICAgICAgICAgc2VhcmNoLFxuICAgICAgICAgICksXG4gICAgICAgIClcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtcbiAgICBpc0Ryb3Bkb3duVmlzaWJsZSxcbiAgICBzZWFyY2hCYXJBY3RpdmUsXG4gICAgb3B0aW9ucyxcbiAgICBvblNlYXJjaCxcbiAgICBzZWFyY2gsXG4gICAgcmVmU2VsZWN0LFxuICAgIHNldERlZmF1bHRTZWFyY2gsXG4gICAgc2V0SXNEcm9wZG93blZpc2libGUsXG4gICAgc2VhcmNoYWJsZSxcbiAgXSlcblxuICBjb25zdCBpc0VtcHR5ID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKEFycmF5LmlzQXJyYXkoZGlzcGxheWVkT3B0aW9ucykpIHtcbiAgICAgIHJldHVybiAhKGRpc3BsYXllZE9wdGlvbnMubGVuZ3RoID4gMClcbiAgICB9XG4gICAgY29uc3QgZ3JvdXBzID0gT2JqZWN0LmtleXMoZGlzcGxheWVkT3B0aW9ucylcbiAgICBmb3IgKGNvbnN0IGdyb3VwIG9mIGdyb3Vwcykge1xuICAgICAgaWYgKGRpc3BsYXllZE9wdGlvbnNbZ3JvdXBdLmxlbmd0aCAhPT0gMCkge1xuICAgICAgICByZXR1cm4gZmFsc2VcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZVxuICB9LCBbZGlzcGxheWVkT3B0aW9uc10pXG5cbiAgcmV0dXJuIChcbiAgICA8U3R5bGVkUG9wdXBcbiAgICAgIHZpc2libGU9e2lzRHJvcGRvd25WaXNpYmxlfVxuICAgICAgdGV4dD17XG4gICAgICAgIDxTdGFjaz5cbiAgICAgICAgICB7c2VhcmNoYWJsZSAmJiAhaXNMb2FkaW5nID8gKFxuICAgICAgICAgICAgPFNlYXJjaEJhckRyb3Bkb3duXG4gICAgICAgICAgICAgIHBsYWNlaG9sZGVyPXtwbGFjZWhvbGRlcn1cbiAgICAgICAgICAgICAgZGlzcGxheWVkT3B0aW9ucz17ZGlzcGxheWVkT3B0aW9uc31cbiAgICAgICAgICAgICAgc2V0U2VhcmNoQmFyQWN0aXZlPXtzZXRTZWFyY2hCYXJBY3RpdmV9XG4gICAgICAgICAgICAvPlxuICAgICAgICAgICkgOiBudWxsfVxuICAgICAgICAgIDxDcmVhdGVEcm9wZG93blxuICAgICAgICAgICAgaXNFbXB0eT17aXNFbXB0eX1cbiAgICAgICAgICAgIGVtcHR5U3RhdGU9e2VtcHR5U3RhdGV9XG4gICAgICAgICAgICBkZXNjcmlwdGlvbkRpcmVjdGlvbj17ZGVzY3JpcHRpb25EaXJlY3Rpb259XG4gICAgICAgICAgICBsb2FkTW9yZT17bG9hZE1vcmV9XG4gICAgICAgICAgICBvcHRpb25hbEluZm9QbGFjZW1lbnQ9e29wdGlvbmFsSW5mb1BsYWNlbWVudH1cbiAgICAgICAgICAgIGRlZmF1bHRTZWFyY2hWYWx1ZT17ZGVmYXVsdFNlYXJjaFZhbHVlfVxuICAgICAgICAgICAgaXNMb2FkaW5nPXtpc0xvYWRpbmd9XG4gICAgICAgICAgLz5cbiAgICAgICAgICB7Zm9vdGVyID8gPFBvcHVwRm9vdGVyPntmb290ZXJ9PC9Qb3B1cEZvb3Rlcj4gOiBudWxsfVxuICAgICAgICA8L1N0YWNrPlxuICAgICAgfVxuICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcbiAgICAgIGRpc2FibGVBbmltYXRpb25cbiAgICAgIG1heFdpZHRoPXttYXhXaWR0aCA/PyByZWZTZWxlY3QuY3VycmVudD8ub2Zmc2V0V2lkdGh9XG4gICAgICBoYXNBcnJvdz17ZmFsc2V9XG4gICAgICByZWY9e3JlZn1cbiAgICAgIHRhYkluZGV4PXswfVxuICAgICAgcm9sZT1cImRpYWxvZ1wiXG4gICAgICBkZWJvdW5jZURlbGF5PXswfVxuICAgICAgY29udGFpbmVyRnVsbFdpZHRoXG4gICAgPlxuICAgICAge2NoaWxkcmVufVxuICAgIDwvU3R5bGVkUG9wdXA+XG4gIClcbn1cbiJdfQ== */"));
176
+ }) => theme.space[0.5], ";" + (process.env.NODE_ENV === "production" ? "" : "/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3J1bm5lci93b3JrL3VsdHJhdmlvbGV0L3VsdHJhdmlvbGV0L3BhY2thZ2VzL3VpL3NyYy9jb21wb25lbnRzL1NlbGVjdElucHV0VjIvRHJvcGRvd24udHN4Il0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQTZLOEIiLCJmaWxlIjoiL2hvbWUvcnVubmVyL3dvcmsvdWx0cmF2aW9sZXQvdWx0cmF2aW9sZXQvcGFja2FnZXMvdWkvc3JjL2NvbXBvbmVudHMvU2VsZWN0SW5wdXRWMi9Ecm9wZG93bi50c3giLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyB1c2VUaGVtZSB9IGZyb20gJ0BlbW90aW9uL3JlYWN0J1xuaW1wb3J0IHN0eWxlZCBmcm9tICdAZW1vdGlvbi9zdHlsZWQnXG5pbXBvcnQgeyB1c2VDYWxsYmFjaywgdXNlRWZmZWN0LCB1c2VNZW1vLCB1c2VSZWYsIHVzZVN0YXRlIH0gZnJvbSAncmVhY3QnXG5pbXBvcnQgdHlwZSB7XG4gIERpc3BhdGNoLFxuICBLZXlib2FyZEV2ZW50LFxuICBSZWFjdE5vZGUsXG4gIFJlZk9iamVjdCxcbiAgU2V0U3RhdGVBY3Rpb24sXG59IGZyb20gJ3JlYWN0J1xuaW1wb3J0IHsgQ2hlY2tib3ggfSBmcm9tICcuLi9DaGVja2JveCdcbmltcG9ydCB7IFBvcHVwIH0gZnJvbSAnLi4vUG9wdXAnXG5pbXBvcnQgeyBTa2VsZXRvbiB9IGZyb20gJy4uL1NrZWxldG9uJ1xuaW1wb3J0IHsgU3RhY2sgfSBmcm9tICcuLi9TdGFjaydcbmltcG9ydCB7IFRleHQgfSBmcm9tICcuLi9UZXh0J1xuaW1wb3J0IHsgRGlzcGxheU9wdGlvbiB9IGZyb20gJy4vRHJvcGRvd25PcHRpb24nXG5pbXBvcnQgeyBTZWFyY2hCYXJEcm9wZG93biB9IGZyb20gJy4vU2VhcmNoQmFyRHJvcGRvd24nXG5pbXBvcnQgeyB1c2VTZWxlY3RJbnB1dCB9IGZyb20gJy4vU2VsZWN0SW5wdXRQcm92aWRlcidcbmltcG9ydCB7IHR5cGUgRGF0YVR5cGUsIElOUFVUX1NJWkVfSEVJR0hULCB0eXBlIE9wdGlvblR5cGUgfSBmcm9tICcuL3R5cGVzJ1xuXG5jb25zdCBEUk9QRE9XTl9NQVhfSEVJR0hUID0gMjU2XG5cbmV4cG9ydCB0eXBlIERyb3Bkb3duUHJvcHMgPSB7XG4gIGNoaWxkcmVuOiBSZWFjdE5vZGVcbiAgZW1wdHlTdGF0ZTogUmVhY3ROb2RlXG4gIGRlc2NyaXB0aW9uRGlyZWN0aW9uOiAncm93JyB8ICdjb2x1bW4nXG4gIHNlYXJjaGFibGU6IGJvb2xlYW5cbiAgcGxhY2Vob2xkZXI6IHN0cmluZ1xuICBmb290ZXI/OiAoKGNsb3NlRHJvcGRvd246ICgpID0+IHZvaWQpID0+IFJlYWN0Tm9kZSkgfCBSZWFjdE5vZGVcbiAgcmVmU2VsZWN0OiBSZWZPYmplY3Q8SFRNTERpdkVsZW1lbnQ+XG4gIGxvYWRNb3JlPzogUmVhY3ROb2RlXG4gIG9wdGlvbmFsSW5mb1BsYWNlbWVudDogJ2xlZnQnIHwgJ3JpZ2h0J1xuICBpc0xvYWRpbmc/OiBib29sZWFuXG4gIHNpemU6ICdzbWFsbCcgfCAnbWVkaXVtJyB8ICdsYXJnZSdcbn1cblxuZXhwb3J0IHR5cGUgQ3JlYXRlRHJvcGRvd25Qcm9wcyA9IHtcbiAgaXNFbXB0eTogYm9vbGVhblxuICBlbXB0eVN0YXRlOiBSZWFjdE5vZGVcbiAgZGVzY3JpcHRpb25EaXJlY3Rpb246ICdyb3cnIHwgJ2NvbHVtbidcbiAgbG9hZE1vcmU/OiBSZWFjdE5vZGVcbiAgb3B0aW9uYWxJbmZvUGxhY2VtZW50OiAnbGVmdCcgfCAncmlnaHQnXG4gIGRlZmF1bHRTZWFyY2hWYWx1ZTogc3RyaW5nIHwgbnVsbFxuICBpc0xvYWRpbmc/OiBib29sZWFuXG59XG5cbmNvbnN0IE5PTl9TRUFSQ0hBQkxFX0tFWVMgPSBbXG4gICdUYWInLFxuICAnICcsXG4gICdFbnRlcicsXG4gICdDYXBzTG9jaycsXG4gICdTaGlmdCcsXG4gICdBcnJvd0Rvd24nLFxuICAnQXJyb3dVcCcsXG4gICdBcnJvd0xlZnQnLFxuICAnQXJyb3dSaWdodCcsXG4gICdFc2NhcGUnLFxuXVxuXG5jb25zdCBTdHlsZWRQb3B1cCA9IHN0eWxlZChQb3B1cClgXG4gIHdpZHRoOiAxMDAlO1xuICBtaW4td2lkdGg6IDMyMHB4O1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5vdGhlci5lbGV2YXRpb24uYmFja2dyb3VuZC5yYWlzZWR9O1xuICBjb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMubmV1dHJhbC50ZXh0fTtcbiAgYm94LXNoYWRvdzogJHsoeyB0aGVtZSB9KSA9PiBgJHt0aGVtZS5zaGFkb3dzLnJhaXNlZFswXX0sICR7dGhlbWUuc2hhZG93cy5yYWlzZWRbMV19YH07XG4gIHBhZGRpbmc6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMF19O1xuICBtYXJnaW4tYm90dG9tOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzEwXX07XG5gXG5cbmNvbnN0IERyb3Bkb3duQ29udGFpbmVyID0gc3R5bGVkKFN0YWNrKTx7ICdkYXRhLWdyb3VwZWQnOiBib29sZWFuIH0+YFxuICBtYXgtaGVpZ2h0OiAke0RST1BET1dOX01BWF9IRUlHSFR9cHg7XG4gIG92ZXJmbG93LXk6IHNjcm9sbDtcbiAgcGFkZGluZzogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVswXX07XG4gIHBhZGRpbmctYm90dG9tOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzAuNV19O1xuICBwYWRkaW5nLXRvcDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVswLjVdfTtcblxuICAmW2RhdGEtZ3JvdXBlZD1cInRydWVcIl0ge1xuICAgIHBhZGRpbmctdG9wOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzBdfTtcbiAgfVxuYFxuY29uc3QgRHJvcGRvd25Hcm91cCA9IHN0eWxlZC5idXR0b248eyAnZGF0YS1zZWxlY3Rncm91cCc6IGJvb2xlYW4gfT5gXG4gIGRpc3BsYXk6IGZsZXg7XG4gIHdpZHRoOiAxMDAlO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGxlZnQ7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGJvcmRlcjogbm9uZTtcbiAgYmFja2dyb3VuZC1jb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMubmV1dHJhbC5iYWNrZ3JvdW5kV2Vha307XG4gIHBvc2l0aW9uOiBzdGlja3k7XG4gIHRvcDogMHB4O1xuICBwYWRkaW5nLXJpZ2h0OiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzJdfTtcbiAgcGFkZGluZy1sZWZ0OiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzJdfTtcbiAgaGVpZ2h0OiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzRdfTtcbiAgdGV4dC1hbGlnbjogbGVmdDtcbiAgbWFyZ2luLWJvdHRvbTogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsnMC4yNSddfTtcblxuICAmOmZvY3VzIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5uZXV0cmFsLmJhY2tncm91bmRXZWFrfTtcbiAgICBvdXRsaW5lOiBub25lO1xuICB9XG5cbiAgJltkYXRhLXNlbGVjdGdyb3VwPSd0cnVlJ10ge1xuICAgIHBhZGRpbmctbGVmdDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsyXX07XG4gICAgYm9yZGVyLWxlZnQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMC41XX0gc29saWQgJHsoeyB0aGVtZSB9KSA9PlxuICAgICAgdGhlbWUuY29sb3JzLm5ldXRyYWwuYmFja2dyb3VuZFdlYWt9O1xuICB9XG5cbiAgJltkYXRhLXNlbGVjdGdyb3VwPSd0cnVlJ106Zm9jdXMge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwuYmFja2dyb3VuZEhvdmVyfTtcbiAgfVxuYFxuY29uc3QgRHJvcGRvd25Hcm91cFdyYXBwZXIgPSBzdHlsZWQuZGl2YFxuICBwb3NpdGlvbjogc3RpY2t5O1xuICB0b3A6IDBweDtcbmBcbmNvbnN0IERyb3Bkb3duSXRlbSA9IHN0eWxlZC5kaXY8e1xuICAnYXJpYS1zZWxlY3RlZCc6IGJvb2xlYW5cbiAgJ2FyaWEtZGlzYWJsZWQnOiBib29sZWFuXG59PmBcbiAgdGV4dC1hbGlnbjpsZWZ0O1xuICBib3JkZXI6IG5vbmU7XG4gIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm90aGVyLmVsZXZhdGlvbi5iYWNrZ3JvdW5kLnJhaXNlZH07XG5cbiAgcGFkZGluZzogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsnMS41J119ICR7KHsgdGhlbWUgfSkgPT5cbiAgICB0aGVtZS5zcGFjZVsnMiddfSAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWycxLjUnXX0gJHsoeyB0aGVtZSB9KSA9PlxuICAgIHRoZW1lLnNwYWNlWycyJ119O1xuICBtYXJnaW4tbGVmdDogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsnMC41J119O1xuICBtYXJnaW4tcmlnaHQ6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbJzAuNSddfTtcblxuICBjb2xvcjogICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwudGV4dH07XG4gIGJvcmRlci1yYWRpdXM6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUucmFkaWkuZGVmYXVsdH07XG5cbiAgJjpob3ZlciwgOmZvY3VzIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5wcmltYXJ5LmJhY2tncm91bmR9O1xuICAgIGNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5wcmltYXJ5LnRleHR9O1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICBvdXRsaW5lOiBub25lO1xuICB9XG5cbiAgJlthcmlhLXNlbGVjdGVkPSd0cnVlJ10ge1xuICAgIGJhY2tncm91bmQtY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLnByaW1hcnkuYmFja2dyb3VuZH07XG4gIH1cblxuICAmW2FyaWEtZGlzYWJsZWQ9XCJ0cnVlXCJdIHtcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLmNvbG9ycy5uZXV0cmFsLmJhY2tncm91bmREaXNhYmxlZH07XG4gICAgY29sb3I6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuY29sb3JzLm5ldXRyYWwudGV4dERpc2FibGVkfTtcbiAgfVxuXG4gICZbYXJpYS1kaXNhYmxlZD1cInRydWVcIl06aG92ZXIsIFthcmlhLWRpc2FibGVkPVwidHJ1ZVwiXTpmb2N1cyB7XG4gICAgYmFja2dyb3VuZC1jb2xvcjogJHsoeyB0aGVtZSB9KSA9PlxuICAgICAgdGhlbWUuY29sb3JzLm5ldXRyYWwuYmFja2dyb3VuZFN0cm9uZ0Rpc2FibGVkfTtcbiAgICBjb2xvcjogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5jb2xvcnMubmV1dHJhbC50ZXh0U3Ryb25nRGlzYWJsZWR9O1xuICAgIGN1cnNvcjogbm90LWFsbG93ZWQ7XG4gICAgb3V0bGluZTogbm9uZTtcbiAgfVxuYFxuXG5jb25zdCBQb3B1cEZvb3RlciA9IHN0eWxlZC5kaXZgXG4gIHdpZHRoOiAxMDAlO1xuICBwYWRkaW5nOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzEuNV19ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMl19XG4gICAgJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zcGFjZVsxLjVdfSAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzJdfTtcbiAgYm94LXNoYWRvdzogJHsoeyB0aGVtZSB9KSA9PiB0aGVtZS5zaGFkb3dzLmRyb3Bkb3dufTtcbmBcbmNvbnN0IFN0eWxlZENoZWNrYm94ID0gc3R5bGVkKENoZWNrYm94KWBcbiAgd2lkdGg6IDEwMCU7XG4gIHBvc2l0aW9uOiBzdGF0aWM7XG4gIHRleHQtYWxpZ246IGxlZnQ7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIHBvaW50ZXItZXZlbnRzOiBub25lO1xuYCAvLyBwb2ludGVyLWV2ZW50czogbm9uZSBwcmV2ZW50cyBhbnkgZXJyb3Igd2hlbiB1c2luZyB0aGUgY2hlY2tib3ggaW4gYSBmb3JtIHNpbmNlIGl0IGlzIGFuIHVubmFtZWQgaW5wdXRcblxuY29uc3QgRW1wdHlTdGF0ZSA9IHN0eWxlZChTdGFjaylgXG4gIHBhZGRpbmc6ICR7KHsgdGhlbWUgfSkgPT4gdGhlbWUuc3BhY2VbMl19O1xuYFxuY29uc3QgTG9hZE1vcmUgPSBzdHlsZWQoU3RhY2spYFxuICBwYWRkaW5nOiAkeyh7IHRoZW1lIH0pID0+IHRoZW1lLnNwYWNlWzAuNV19O1xuYFxuXG5jb25zdCBtb3ZlRm9jdXNEb3duID0gKCkgPT4ge1xuICBjb25zdCBvcHRpb25zID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChcbiAgICAnI2l0ZW1zID4gZGl2W3JvbGU9XCJvcHRpb25cIl06bm90KFtkaXNhYmxlZF0pJyxcbiAgKVxuICBjb25zdCBhY3RpdmVJdGVtID0gZG9jdW1lbnQuYWN0aXZlRWxlbWVudFxuICBpZiAob3B0aW9ucykge1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgb3B0aW9ucz8ubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgIGNvbnN0IGxpc3RMZW5ndGggPSBvcHRpb25zLmxlbmd0aFxuICAgICAgaWYgKGFjdGl2ZUl0ZW0gPT09IG9wdGlvbnNbaV0gJiYgYWN0aXZlSXRlbSAhPT0gb3B0aW9uc1tsaXN0TGVuZ3RoIC0gMV0pIHtcbiAgICAgICAgOyhvcHRpb25zW2kgKyAxXSBhcyBIVE1MRWxlbWVudCkuZm9jdXMoKVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuY29uc3QgbW92ZUZvY3VzVXAgPSAoKSA9PiB7XG4gIGNvbnN0IG9wdGlvbnMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKFxuICAgICcjaXRlbXMgPiBkaXZbcm9sZT1cIm9wdGlvblwiXTpub3QoW2Rpc2FibGVkXSknLFxuICApXG4gIGNvbnN0IGFjdGl2ZUl0ZW0gPSBkb2N1bWVudC5hY3RpdmVFbGVtZW50XG5cbiAgaWYgKG9wdGlvbnMpIHtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IG9wdGlvbnMubGVuZ3RoOyBpICs9IDEpIHtcbiAgICAgIGlmIChhY3RpdmVJdGVtID09PSBvcHRpb25zW2ldICYmIGFjdGl2ZUl0ZW0gIT09IG9wdGlvbnNbMF0pIHtcbiAgICAgICAgOyhvcHRpb25zW2kgLSAxXSBhcyBIVE1MRWxlbWVudCkuZm9jdXMoKVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuY29uc3QgaGFuZGxlS2V5RG93blNlbGVjdCA9IChldmVudDogS2V5Ym9hcmRFdmVudDxIVE1MRGl2RWxlbWVudD4pID0+IHtcbiAgaWYgKGV2ZW50LmtleSA9PT0gJ0Fycm93RG93bicpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgbW92ZUZvY3VzRG93bigpXG4gIH1cblxuICBpZiAoZXZlbnQua2V5ID09PSAnQXJyb3dVcCcpIHtcbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgbW92ZUZvY3VzVXAoKVxuICB9XG59XG5jb25zdCBoYW5kbGVDbGlja091dHNpZGUgPSAoXG4gIGV2ZW50OiBNb3VzZUV2ZW50LFxuICByZWY6IFJlZk9iamVjdDxIVE1MRGl2RWxlbWVudD4sXG4gIHNldElzRHJvcGRvd25WaXNpYmlsZTogRGlzcGF0Y2g8U2V0U3RhdGVBY3Rpb248Ym9vbGVhbj4+LFxuICByZWZTZWxlY3Q6IFJlZk9iamVjdDxIVE1MRGl2RWxlbWVudD4sXG4gIG9uU2VhcmNoOiBEaXNwYXRjaDxTZXRTdGF0ZUFjdGlvbjxEYXRhVHlwZT4+LFxuICBvcHRpb25zOiBEYXRhVHlwZSxcbikgPT4ge1xuICBpZiAoXG4gICAgcmVmLmN1cnJlbnQgJiZcbiAgICAhcmVmLmN1cnJlbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0IGFzIE5vZGUpICYmXG4gICAgIXJlZlNlbGVjdC5jdXJyZW50Py5jb250YWlucyhldmVudC50YXJnZXQgYXMgTm9kZSlcbiAgKSB7XG4gICAgc2V0SXNEcm9wZG93blZpc2liaWxlKGZhbHNlKVxuICAgIG9uU2VhcmNoKG9wdGlvbnMpXG4gIH1cbn1cblxuY29uc3QgaGFuZGxlS2V5RG93biA9IChcbiAgZXZlbnQ6IGdsb2JhbFRoaXMuS2V5Ym9hcmRFdmVudCxcbiAgcmVmOiBSZWZPYmplY3Q8SFRNTERpdkVsZW1lbnQ+LFxuICBvcHRpb25zOiBEYXRhVHlwZSxcbiAgc2VhcmNoQmFyQWN0aXZlOiBib29sZWFuLFxuICBzZXRTZWFyY2g6IERpc3BhdGNoPFNldFN0YXRlQWN0aW9uPHN0cmluZz4+LFxuICBzZXREZWZhdWx0U2VhcmNoOiBEaXNwYXRjaDxTZXRTdGF0ZUFjdGlvbjxzdHJpbmcgfCBudWxsPj4sXG4gIHNlYXJjaDogc3RyaW5nLFxuKSA9PiB7XG4gIC8vIERlYWxzIHdpdGggZGVmYXVsdCBzZWFyY2hcbiAgaWYgKFxuICAgIHJlZi5jdXJyZW50ICYmXG4gICAgIXNlYXJjaEJhckFjdGl2ZSAmJlxuICAgICFOT05fU0VBUkNIQUJMRV9LRVlTLmluY2x1ZGVzKGV2ZW50LmtleSkgJiZcbiAgICBkb2N1bWVudC5hY3RpdmVFbGVtZW50Py5hcmlhTGFiZWwgIT09ICdzZWFyY2gtYmFyJ1xuICApIHtcbiAgICBjb25zdCBjdXJyZW50U2VhcmNoID0gc2VhcmNoICsgZXZlbnQua2V5XG4gICAgc2V0U2VhcmNoKGN1cnJlbnRTZWFyY2gpXG4gICAgcmVmLmN1cnJlbnQuZm9jdXMoKVxuICAgIGlmICghQXJyYXkuaXNBcnJheShvcHRpb25zKSkge1xuICAgICAgY29uc3QgY2xvc2VzdE9wdGlvbnMgPSB7IC4uLm9wdGlvbnMgfVxuICAgICAgT2JqZWN0LmtleXMoY2xvc2VzdE9wdGlvbnMpLm1hcCgoZ3JvdXA6IHN0cmluZykgPT4ge1xuICAgICAgICBjbG9zZXN0T3B0aW9uc1tncm91cF0gPSBjbG9zZXN0T3B0aW9uc1tncm91cF0uZmlsdGVyKG9wdGlvbiA9PlxuICAgICAgICAgIG9wdGlvbi5zZWFyY2hUZXh0XG4gICAgICAgICAgICA/IG9wdGlvbi5zZWFyY2hUZXh0LnRvTG9jYWxlTG93ZXJDYXNlKCkuc3RhcnRzV2l0aChjdXJyZW50U2VhcmNoKVxuICAgICAgICAgICAgOiBvcHRpb24udmFsdWUudG9Mb2NhbGVMb3dlckNhc2UoKS5zdGFydHNXaXRoKGN1cnJlbnRTZWFyY2gpLFxuICAgICAgICApXG5cbiAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgIH0pXG4gICAgICBjb25zdCBjbG9zZXN0T3B0aW9uID0gY2xvc2VzdE9wdGlvbnNbT2JqZWN0LmtleXMoY2xvc2VzdE9wdGlvbnMpWzBdXVswXVxuICAgICAgaWYgKGNsb3Nlc3RPcHRpb24pIHtcbiAgICAgICAgc2V0RGVmYXVsdFNlYXJjaChjbG9zZXN0T3B0aW9uLnNlYXJjaFRleHQgPz8gY2xvc2VzdE9wdGlvbi52YWx1ZSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHNldERlZmF1bHRTZWFyY2gobnVsbClcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgY2xvc2VzdE9wdGlvbiA9IFsuLi5vcHRpb25zXS5maWx0ZXIob3B0aW9uID0+XG4gICAgICAgIG9wdGlvbi5zZWFyY2hUZXh0XG4gICAgICAgICAgPyBvcHRpb24uc2VhcmNoVGV4dC50b0xvY2FsZUxvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoY3VycmVudFNlYXJjaClcbiAgICAgICAgICA6IG9wdGlvbi52YWx1ZS50b0xvY2FsZUxvd2VyQ2FzZSgpLnN0YXJ0c1dpdGgoY3VycmVudFNlYXJjaCksXG4gICAgICApWzBdXG4gICAgICBpZiAoY2xvc2VzdE9wdGlvbikge1xuICAgICAgICBzZXREZWZhdWx0U2VhcmNoKGNsb3Nlc3RPcHRpb24uc2VhcmNoVGV4dCA/PyBjbG9zZXN0T3B0aW9uLnZhbHVlKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgc2V0RGVmYXVsdFNlYXJjaChudWxsKVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuY29uc3QgQ3JlYXRlRHJvcGRvd24gPSAoe1xuICBpc0VtcHR5LFxuICBlbXB0eVN0YXRlLFxuICBkZXNjcmlwdGlvbkRpcmVjdGlvbixcbiAgbG9hZE1vcmUsXG4gIG9wdGlvbmFsSW5mb1BsYWNlbWVudCxcbiAgZGVmYXVsdFNlYXJjaFZhbHVlLFxuICBpc0xvYWRpbmcsXG59OiBDcmVhdGVEcm9wZG93blByb3BzKSA9PiB7XG4gIGNvbnN0IHtcbiAgICBzZXRJc0Ryb3Bkb3duVmlzaWJsZSxcbiAgICBvbkNoYW5nZSxcbiAgICBvcHRpb25zLFxuICAgIG11bHRpc2VsZWN0LFxuICAgIHNlbGVjdEFsbCxcbiAgICBzZWxlY3RBbGxHcm91cCxcbiAgICBkaXNwbGF5ZWRPcHRpb25zLFxuICAgIHNldFNlbGVjdGVkRGF0YSxcbiAgICBzZWxlY3RlZERhdGEsXG4gIH0gPSB1c2VTZWxlY3RJbnB1dCgpXG4gIGNvbnN0IGZvY3VzZWRJdGVtUmVmID0gdXNlUmVmPEhUTUxEaXZFbGVtZW50PihudWxsKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGRlZmF1bHRTZWFyY2hWYWx1ZSAmJiBmb2N1c2VkSXRlbVJlZj8uY3VycmVudCkge1xuICAgICAgZm9jdXNlZEl0ZW1SZWYuY3VycmVudC5mb2N1cygpXG4gICAgfVxuICB9LCBbZGVmYXVsdFNlYXJjaFZhbHVlXSlcblxuICBpZiAoaXNFbXB0eSkge1xuICAgIHJldHVybiAoXG4gICAgICA8RW1wdHlTdGF0ZSBnYXA9ezJ9IGFsaWduSXRlbXM9XCJjZW50ZXJcIj5cbiAgICAgICAge2VtcHR5U3RhdGUgPz8gKFxuICAgICAgICAgIDxUZXh0IHZhcmlhbnQ9XCJib2R5U3Ryb25nXCIgYXM9XCJwXCI+XG4gICAgICAgICAgICBObyBvcHRpb25zXG4gICAgICAgICAgPC9UZXh0PlxuICAgICAgICApfVxuICAgICAgPC9FbXB0eVN0YXRlPlxuICAgIClcbiAgfVxuXG4gIGNvbnN0IGhhbmRsZUNsaWNrID0gKGNsaWNrZWRPcHRpb246IE9wdGlvblR5cGUsIGdyb3VwPzogc3RyaW5nKSA9PiB7XG4gICAgc2V0U2VsZWN0ZWREYXRhKHsgdHlwZTogJ3NlbGVjdE9wdGlvbicsIGNsaWNrZWRPcHRpb24sIGdyb3VwIH0pXG4gICAgaWYgKG11bHRpc2VsZWN0KSB7XG4gICAgICBpZiAoc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzLmluY2x1ZGVzKGNsaWNrZWRPcHRpb24udmFsdWUpKSB7XG4gICAgICAgIG9uQ2hhbmdlPy4oXG4gICAgICAgICAgc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzLmZpbHRlcihcbiAgICAgICAgICAgIHZhbCA9PiB2YWwgIT09IGNsaWNrZWRPcHRpb24udmFsdWUsXG4gICAgICAgICAgKSxcbiAgICAgICAgKVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgb25DaGFuZ2U/LihbLi4uc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzLCBjbGlja2VkT3B0aW9uLnZhbHVlXSlcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgb25DaGFuZ2U/LihjbGlja2VkT3B0aW9uLnZhbHVlKVxuICAgIH1cbiAgICBzZXRJc0Ryb3Bkb3duVmlzaWJsZShtdWx0aXNlbGVjdCkgLy8gaGlkZSB0aGUgZHJvcGRvd24gb24gY2xpY2sgd2hlbiBzaW5nbGUgc2VsZWN0IG9ubHlcbiAgfVxuXG4gIGNvbnN0IHNlbGVjdEFsbE9wdGlvbnMgPSAoKSA9PiB7XG4gICAgaWYgKG11bHRpc2VsZWN0KSB7XG4gICAgICBzZXRTZWxlY3RlZERhdGEoeyB0eXBlOiAnc2VsZWN0QWxsJyB9KVxuICAgICAgaWYgKHNlbGVjdGVkRGF0YS5hbGxTZWxlY3RlZCAmJiBvbkNoYW5nZSkge1xuICAgICAgICBvbkNoYW5nZShbXSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGFsbFZhbHVlczogT3B0aW9uVHlwZVtdID0gW11cbiAgICAgICAgaWYgKCFBcnJheS5pc0FycmF5KG9wdGlvbnMpKSB7XG4gICAgICAgICAgT2JqZWN0LmtleXMob3B0aW9ucykubWFwKChncm91cDogc3RyaW5nKSA9PlxuICAgICAgICAgICAgb3B0aW9uc1tncm91cF0ubWFwKG9wdGlvbiA9PiB7XG4gICAgICAgICAgICAgIGlmICghb3B0aW9uLmRpc2FibGVkKSB7XG4gICAgICAgICAgICAgICAgYWxsVmFsdWVzLnB1c2gob3B0aW9uKVxuICAgICAgICAgICAgICB9XG5cbiAgICAgICAgICAgICAgcmV0dXJuIG51bGxcbiAgICAgICAgICAgIH0pLFxuICAgICAgICAgIClcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBvcHRpb25zLm1hcChvcHRpb24gPT4gYWxsVmFsdWVzLnB1c2gob3B0aW9uKSlcbiAgICAgICAgfVxuICAgICAgICBvbkNoYW5nZT8uKGFsbFZhbHVlcy5tYXAodmFsdWUgPT4gdmFsdWUudmFsdWUpKVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGNvbnN0IGhhbmRsZVNlbGVjdEdyb3VwID0gKGdyb3VwOiBzdHJpbmcpID0+IHtcbiAgICBpZiAobXVsdGlzZWxlY3QpIHtcbiAgICAgIHNldFNlbGVjdGVkRGF0YSh7IHR5cGU6ICdzZWxlY3RHcm91cCcsIHNlbGVjdGVkR3JvdXA6IGdyb3VwIH0pXG4gICAgICBpZiAoIUFycmF5LmlzQXJyYXkob3B0aW9ucykpIHtcbiAgICAgICAgaWYgKHNlbGVjdGVkRGF0YS5zZWxlY3RlZEdyb3Vwcy5pbmNsdWRlcyhncm91cCkpIHtcbiAgICAgICAgICBjb25zdCBuZXdTZWxlY3RlZFZhbHVlcyA9IFsuLi5zZWxlY3RlZERhdGEuc2VsZWN0ZWRWYWx1ZXNdLmZpbHRlcihcbiAgICAgICAgICAgIHNlbGVjdGVkVmFsdWUgPT5cbiAgICAgICAgICAgICAgIW9wdGlvbnNbZ3JvdXBdLmZpbmQob3B0aW9uID0+IG9wdGlvbi52YWx1ZSA9PT0gc2VsZWN0ZWRWYWx1ZSksXG4gICAgICAgICAgKVxuICAgICAgICAgIG9uQ2hhbmdlPy4obmV3U2VsZWN0ZWRWYWx1ZXMpXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgY29uc3QgbmV3U2VsZWN0ZWRWYWx1ZXMgPSBbLi4uc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzXVxuXG4gICAgICAgICAgb3B0aW9uc1tncm91cF0ubWFwKG9wdGlvbiA9PlxuICAgICAgICAgICAgbmV3U2VsZWN0ZWRWYWx1ZXMuaW5jbHVkZXMob3B0aW9uLnZhbHVlKSB8fCBvcHRpb24uZGlzYWJsZWRcbiAgICAgICAgICAgICAgPyBudWxsXG4gICAgICAgICAgICAgIDogbmV3U2VsZWN0ZWRWYWx1ZXMucHVzaChvcHRpb24udmFsdWUpLFxuICAgICAgICAgIClcbiAgICAgICAgICBvbkNoYW5nZT8uKG5ld1NlbGVjdGVkVmFsdWVzKVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuICFBcnJheS5pc0FycmF5KGRpc3BsYXllZE9wdGlvbnMpID8gKFxuICAgIDxEcm9wZG93bkNvbnRhaW5lclxuICAgICAgcm9sZT1cImxpc3Rib3hcIlxuICAgICAgaWQ9XCJzZWxlY3QtZHJvcGRvd25cIlxuICAgICAgb25LZXlEb3duPXtoYW5kbGVLZXlEb3duU2VsZWN0fVxuICAgICAgZGF0YS1ncm91cGVkXG4gICAgPlxuICAgICAge2lzTG9hZGluZyA/IChcbiAgICAgICAgPFNrZWxldG9uIHZhcmlhbnQ9XCJibG9ja1wiIC8+XG4gICAgICApIDogKFxuICAgICAgICA8PlxuICAgICAgICAgIHtzZWxlY3RBbGwgJiYgbXVsdGlzZWxlY3QgPyAoXG4gICAgICAgICAgICA8U3RhY2sgaWQ9XCJpdGVtc1wiPlxuICAgICAgICAgICAgICA8RHJvcGRvd25JdGVtXG4gICAgICAgICAgICAgICAgYXJpYS1kaXNhYmxlZD17ZmFsc2V9XG4gICAgICAgICAgICAgICAgYXJpYS1zZWxlY3RlZD17c2VsZWN0ZWREYXRhLmFsbFNlbGVjdGVkfVxuICAgICAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJzZWxlY3QtYWxsXCJcbiAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD1cInNlbGVjdC1hbGxcIlxuICAgICAgICAgICAgICAgIGlkPVwic2VsZWN0LWFsbFwiXG4gICAgICAgICAgICAgICAgdGFiSW5kZXg9ezB9XG4gICAgICAgICAgICAgICAgcm9sZT1cIm9wdGlvblwiXG4gICAgICAgICAgICAgICAgb25LZXlEb3duPXtldmVudCA9PlxuICAgICAgICAgICAgICAgICAgWycgJywgJ0VudGVyJ10uaW5jbHVkZXMoZXZlbnQua2V5KSA/IHNlbGVjdEFsbE9wdGlvbnMoKSA6IG51bGxcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgb25DbGljaz17c2VsZWN0QWxsT3B0aW9uc31cbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIDxTdHlsZWRDaGVja2JveFxuICAgICAgICAgICAgICAgICAgY2hlY2tlZD17c2VsZWN0ZWREYXRhLmFsbFNlbGVjdGVkfVxuICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e2ZhbHNlfVxuICAgICAgICAgICAgICAgICAgdmFsdWU9XCJzZWxlY3QtYWxsXCJcbiAgICAgICAgICAgICAgICAgIGRhdGEtdGVzdGlkPVwic2VsZWN0LWFsbC1jaGVja2JveFwiXG4gICAgICAgICAgICAgICAgICB0YWJJbmRleD17LTF9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPFN0YWNrIGRpcmVjdGlvbj1cImNvbHVtblwiPlxuICAgICAgICAgICAgICAgICAgICA8VGV4dCBhcz1cInNwYW5cIiB2YXJpYW50PVwiYm9keVwiIHBsYWNlbWVudD1cImxlZnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICB7c2VsZWN0QWxsLmxhYmVsfVxuICAgICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgICAgIDxUZXh0XG4gICAgICAgICAgICAgICAgICAgICAgYXM9XCJzcGFuXCJcbiAgICAgICAgICAgICAgICAgICAgICB2YXJpYW50PVwiYm9keVNtYWxsXCJcbiAgICAgICAgICAgICAgICAgICAgICBzZW50aW1lbnQ9XCJuZXV0cmFsXCJcbiAgICAgICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJsZWZ0XCJcbiAgICAgICAgICAgICAgICAgICAgICBwcm9taW5lbmNlPVwid2Vha1wiXG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICB7c2VsZWN0QWxsLmRlc2NyaXB0aW9ufVxuICAgICAgICAgICAgICAgICAgICA8L1RleHQ+XG4gICAgICAgICAgICAgICAgICA8L1N0YWNrPlxuICAgICAgICAgICAgICAgIDwvU3R5bGVkQ2hlY2tib3g+XG4gICAgICAgICAgICAgIDwvRHJvcGRvd25JdGVtPlxuICAgICAgICAgICAgPC9TdGFjaz5cbiAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICB7T2JqZWN0LmtleXMoZGlzcGxheWVkT3B0aW9ucykubWFwKChncm91cCwgaW5kZXgpID0+IChcbiAgICAgICAgICAgIDxTdGFjayBrZXk9e2dyb3VwfSBnYXA9ezAuMjV9PlxuICAgICAgICAgICAgICB7ZGlzcGxheWVkT3B0aW9uc1tncm91cF0ubGVuZ3RoID4gMCA/IChcbiAgICAgICAgICAgICAgICA8RHJvcGRvd25Hcm91cFdyYXBwZXIgaWQ9e3NlbGVjdEFsbEdyb3VwID8gJ2l0ZW1zJyA6IHVuZGVmaW5lZH0+XG4gICAgICAgICAgICAgICAgICB7Z3JvdXAgPyAoXG4gICAgICAgICAgICAgICAgICAgIDxEcm9wZG93bkdyb3VwXG4gICAgICAgICAgICAgICAgICAgICAga2V5PXtncm91cH1cbiAgICAgICAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICAgICAgICB0YWJJbmRleD17c2VsZWN0QWxsR3JvdXAgPyAwIDogLTF9XG4gICAgICAgICAgICAgICAgICAgICAgb25LZXlEb3duPXtldmVudCA9PiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoWycgJywgJ0VudGVyJ10uaW5jbHVkZXMoZXZlbnQua2V5KSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZVNlbGVjdEdyb3VwKGdyb3VwKVxuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgICAgZGF0YS1zZWxlY3Rncm91cD17c2VsZWN0QWxsR3JvdXB9XG4gICAgICAgICAgICAgICAgICAgICAgcm9sZT1cImdyb3VwXCJcbiAgICAgICAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD17YGdyb3VwLSR7aW5kZXh9YH1cbiAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PlxuICAgICAgICAgICAgICAgICAgICAgICAgc2VsZWN0QWxsR3JvdXAgPyBoYW5kbGVTZWxlY3RHcm91cChncm91cCkgOiBudWxsXG4gICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAge3NlbGVjdEFsbEdyb3VwID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgPFN0eWxlZENoZWNrYm94XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrZWQ9e3NlbGVjdGVkRGF0YS5zZWxlY3RlZEdyb3Vwcy5pbmNsdWRlcyhncm91cCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtmYWxzZX1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e2dyb3VwfVxuICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLXRlc3RpZD1cInNlbGVjdC1ncm91cFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRhYkluZGV4PXstMX1cbiAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgPFRleHQgdmFyaWFudD1cImNhcHRpb25cIiBhcz1cInNwYW5cIiBwbGFjZW1lbnQ9XCJsZWZ0XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2dyb3VwLnRvVXBwZXJDYXNlKCl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvU3R5bGVkQ2hlY2tib3g+XG4gICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxUZXh0XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJjYXB0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgYXM9XCJzcGFuXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2VtZW50PVwibGVmdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNlbnRpbWVudD1cIm5ldXRyYWxcIlxuICAgICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAgICB7Z3JvdXAudG9VcHBlckNhc2UoKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgICAgICA8L0Ryb3Bkb3duR3JvdXA+XG4gICAgICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgICAgICA8L0Ryb3Bkb3duR3JvdXBXcmFwcGVyPlxuICAgICAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICAgICAgPFN0YWNrIGlkPVwiaXRlbXNcIiBnYXA9XCIwLjI1XCI+XG4gICAgICAgICAgICAgICAge2Rpc3BsYXllZE9wdGlvbnNbZ3JvdXBdLm1hcCgob3B0aW9uLCBpbmRleE9wdGlvbikgPT4gKFxuICAgICAgICAgICAgICAgICAgPERyb3Bkb3duSXRlbVxuICAgICAgICAgICAgICAgICAgICBrZXk9e29wdGlvbi52YWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgYXJpYS1kaXNhYmxlZD17ISFvcHRpb24uZGlzYWJsZWR9XG4gICAgICAgICAgICAgICAgICAgIHRhYkluZGV4PXshb3B0aW9uLmRpc2FibGVkID8gMCA6IC0xfVxuICAgICAgICAgICAgICAgICAgICBhcmlhLXNlbGVjdGVkPXtcbiAgICAgICAgICAgICAgICAgICAgICBzZWxlY3RlZERhdGEuc2VsZWN0ZWRWYWx1ZXMuaW5jbHVkZXMob3B0aW9uLnZhbHVlKSAmJlxuICAgICAgICAgICAgICAgICAgICAgICFvcHRpb24uZGlzYWJsZWRcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBhcmlhLWxhYmVsPXtvcHRpb24udmFsdWV9XG4gICAgICAgICAgICAgICAgICAgIGRhdGEtdGVzdGlkPXtgb3B0aW9uLSR7b3B0aW9uLnZhbHVlfWB9XG4gICAgICAgICAgICAgICAgICAgIGlkPXtgb3B0aW9uLSR7aW5kZXhPcHRpb259YH1cbiAgICAgICAgICAgICAgICAgICAgcm9sZT1cIm9wdGlvblwiXG4gICAgICAgICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgICBpZiAoIW9wdGlvbi5kaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlQ2xpY2sob3B0aW9uLCBncm91cClcbiAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgIG9uS2V5RG93bj17ZXZlbnQgPT5cbiAgICAgICAgICAgICAgICAgICAgICBbJyAnLCAnRW50ZXInXS5pbmNsdWRlcyhldmVudC5rZXkpXG4gICAgICAgICAgICAgICAgICAgICAgICA/IGhhbmRsZUNsaWNrKG9wdGlvbiwgZ3JvdXApXG4gICAgICAgICAgICAgICAgICAgICAgICA6IG51bGxcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICByZWY9e1xuICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbi52YWx1ZSA9PT0gZGVmYXVsdFNlYXJjaFZhbHVlIHx8XG4gICAgICAgICAgICAgICAgICAgICAgb3B0aW9uLnNlYXJjaFRleHQgPT09IGRlZmF1bHRTZWFyY2hWYWx1ZVxuICAgICAgICAgICAgICAgICAgICAgICAgPyBmb2N1c2VkSXRlbVJlZlxuICAgICAgICAgICAgICAgICAgICAgICAgOiBudWxsXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAge211bHRpc2VsZWN0ID8gKFxuICAgICAgICAgICAgICAgICAgICAgIDxTdHlsZWRDaGVja2JveFxuICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tlZD17XG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkRGF0YS5zZWxlY3RlZFZhbHVlcy5pbmNsdWRlcyhvcHRpb24udmFsdWUpICYmXG4gICAgICAgICAgICAgICAgICAgICAgICAgICFvcHRpb24uZGlzYWJsZWRcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtvcHRpb24uZGlzYWJsZWR9XG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17b3B0aW9uLnZhbHVlfVxuICAgICAgICAgICAgICAgICAgICAgICAgdGFiSW5kZXg9ey0xfVxuICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxEaXNwbGF5T3B0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbj17b3B0aW9ufVxuICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNjcmlwdGlvbkRpcmVjdGlvbj17ZGVzY3JpcHRpb25EaXJlY3Rpb259XG4gICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsSW5mb1BsYWNlbWVudD17b3B0aW9uYWxJbmZvUGxhY2VtZW50fVxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgICA8L1N0eWxlZENoZWNrYm94PlxuICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgIDxEaXNwbGF5T3B0aW9uXG4gICAgICAgICAgICAgICAgICAgICAgICBvcHRpb249e29wdGlvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uRGlyZWN0aW9uPXtkZXNjcmlwdGlvbkRpcmVjdGlvbn1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbmFsSW5mb1BsYWNlbWVudD17b3B0aW9uYWxJbmZvUGxhY2VtZW50fVxuICAgICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICA8L0Ryb3Bkb3duSXRlbT5cbiAgICAgICAgICAgICAgICApKX1cbiAgICAgICAgICAgICAgPC9TdGFjaz5cbiAgICAgICAgICAgIDwvU3RhY2s+XG4gICAgICAgICAgKSl9XG4gICAgICAgIDwvPlxuICAgICAgKX1cbiAgICAgIHtsb2FkTW9yZSA/IDxMb2FkTW9yZT57bG9hZE1vcmV9PC9Mb2FkTW9yZT4gOiBudWxsfVxuICAgIDwvRHJvcGRvd25Db250YWluZXI+XG4gICkgOiAoXG4gICAgPERyb3Bkb3duQ29udGFpbmVyXG4gICAgICByb2xlPVwibGlzdGJveFwiXG4gICAgICB0YWJJbmRleD17LTF9XG4gICAgICBpZD1cInNlbGVjdC1kcm9wZG93blwiXG4gICAgICBvbktleURvd249e2hhbmRsZUtleURvd25TZWxlY3R9XG4gICAgICBnYXA9ezAuMjV9XG4gICAgICBkYXRhLWdyb3VwZWQ9e2ZhbHNlfVxuICAgID5cbiAgICAgIHtzZWxlY3RBbGwgJiYgbXVsdGlzZWxlY3QgPyAoXG4gICAgICAgIDxTdGFjayBpZD1cIml0ZW1zXCIgZ2FwPXswLjI1fSB0YWJJbmRleD17LTF9PlxuICAgICAgICAgIDxEcm9wZG93bkl0ZW1cbiAgICAgICAgICAgIGFyaWEtZGlzYWJsZWQ9e2ZhbHNlfVxuICAgICAgICAgICAgYXJpYS1zZWxlY3RlZD17c2VsZWN0ZWREYXRhLmFsbFNlbGVjdGVkfVxuICAgICAgICAgICAgYXJpYS1sYWJlbD1cInNlbGVjdC1hbGxcIlxuICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJzZWxlY3QtYWxsXCJcbiAgICAgICAgICAgIHRhYkluZGV4PXswfVxuICAgICAgICAgICAgcm9sZT1cIm9wdGlvblwiXG4gICAgICAgICAgICBvbktleURvd249e2V2ZW50ID0+XG4gICAgICAgICAgICAgIFsnICcsICdFbnRlciddLmluY2x1ZGVzKGV2ZW50LmtleSkgPyBzZWxlY3RBbGxPcHRpb25zKCkgOiBudWxsXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBvbkNsaWNrPXtzZWxlY3RBbGxPcHRpb25zfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxTdHlsZWRDaGVja2JveFxuICAgICAgICAgICAgICBjaGVja2VkPXtzZWxlY3RlZERhdGEuYWxsU2VsZWN0ZWR9XG4gICAgICAgICAgICAgIGRpc2FibGVkPXtmYWxzZX1cbiAgICAgICAgICAgICAgdmFsdWU9XCJzZWxlY3QtYWxsXCJcbiAgICAgICAgICAgICAgZGF0YS10ZXN0aWQ9XCJzZWxlY3QtYWxsLWNoZWNrYm94XCJcbiAgICAgICAgICAgICAgdGFiSW5kZXg9ey0xfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8U3RhY2sgZGlyZWN0aW9uPVwiY29sdW1uXCI+XG4gICAgICAgICAgICAgICAgPFRleHQgYXM9XCJzcGFuXCIgdmFyaWFudD1cImJvZHlcIiBwbGFjZW1lbnQ9XCJsZWZ0XCI+XG4gICAgICAgICAgICAgICAgICB7c2VsZWN0QWxsLmxhYmVsfVxuICAgICAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgICAgICA8VGV4dFxuICAgICAgICAgICAgICAgICAgYXM9XCJzcGFuXCJcbiAgICAgICAgICAgICAgICAgIHZhcmlhbnQ9XCJib2R5U21hbGxcIlxuICAgICAgICAgICAgICAgICAgc2VudGltZW50PVwibmV1dHJhbFwiXG4gICAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9XCJsZWZ0XCJcbiAgICAgICAgICAgICAgICAgIHByb21pbmVuY2U9XCJ3ZWFrXCJcbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICB7c2VsZWN0QWxsLmRlc2NyaXB0aW9ufVxuICAgICAgICAgICAgICAgIDwvVGV4dD5cbiAgICAgICAgICAgICAgPC9TdGFjaz5cbiAgICAgICAgICAgIDwvU3R5bGVkQ2hlY2tib3g+XG4gICAgICAgICAgPC9Ecm9wZG93bkl0ZW0+XG4gICAgICAgIDwvU3RhY2s+XG4gICAgICApIDogbnVsbH1cbiAgICAgIDxTdGFjayBpZD1cIml0ZW1zXCIgZ2FwPXswLjI1fT5cbiAgICAgICAge2lzTG9hZGluZyA/IChcbiAgICAgICAgICA8U2tlbGV0b24gdmFyaWFudD1cImJsb2NrXCIgLz5cbiAgICAgICAgKSA6IChcbiAgICAgICAgICBkaXNwbGF5ZWRPcHRpb25zLm1hcCgob3B0aW9uLCBpbmRleCkgPT4gKFxuICAgICAgICAgICAgPERyb3Bkb3duSXRlbVxuICAgICAgICAgICAgICBrZXk9e29wdGlvbi52YWx1ZX1cbiAgICAgICAgICAgICAgYXJpYS1kaXNhYmxlZD17ISFvcHRpb24uZGlzYWJsZWR9XG4gICAgICAgICAgICAgIGFyaWEtc2VsZWN0ZWQ9e1xuICAgICAgICAgICAgICAgIHNlbGVjdGVkRGF0YS5zZWxlY3RlZFZhbHVlcy5pbmNsdWRlcyhvcHRpb24udmFsdWUpICYmXG4gICAgICAgICAgICAgICAgIW9wdGlvbi5kaXNhYmxlZFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgICAgICAgICBpZiAoIW9wdGlvbi5kaXNhYmxlZCkge1xuICAgICAgICAgICAgICAgICAgaGFuZGxlQ2xpY2sob3B0aW9uKVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgYXJpYS1sYWJlbD17b3B0aW9uLnZhbHVlfVxuICAgICAgICAgICAgICBkYXRhLXRlc3RpZD17YG9wdGlvbi0ke29wdGlvbi52YWx1ZX1gfVxuICAgICAgICAgICAgICBpZD17YG9wdGlvbi0ke2luZGV4fWB9XG4gICAgICAgICAgICAgIHJvbGU9XCJvcHRpb25cIlxuICAgICAgICAgICAgICB0YWJJbmRleD17IW9wdGlvbi5kaXNhYmxlZCA/IDAgOiAtMX1cbiAgICAgICAgICAgICAgcmVmPXtcbiAgICAgICAgICAgICAgICBvcHRpb24udmFsdWUgPT09IGRlZmF1bHRTZWFyY2hWYWx1ZSB8fFxuICAgICAgICAgICAgICAgIG9wdGlvbi5zZWFyY2hUZXh0ID09PSBkZWZhdWx0U2VhcmNoVmFsdWVcbiAgICAgICAgICAgICAgICAgID8gZm9jdXNlZEl0ZW1SZWZcbiAgICAgICAgICAgICAgICAgIDogbnVsbFxuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIG9uS2V5RG93bj17ZXZlbnQgPT5cbiAgICAgICAgICAgICAgICBbJyAnLCAnRW50ZXInXS5pbmNsdWRlcyhldmVudC5rZXkpID8gaGFuZGxlQ2xpY2sob3B0aW9uKSA6IG51bGxcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICB7bXVsdGlzZWxlY3QgPyAoXG4gICAgICAgICAgICAgICAgPFN0eWxlZENoZWNrYm94XG4gICAgICAgICAgICAgICAgICBjaGVja2VkPXtcbiAgICAgICAgICAgICAgICAgICAgc2VsZWN0ZWREYXRhLnNlbGVjdGVkVmFsdWVzLmluY2x1ZGVzKG9wdGlvbi52YWx1ZSkgJiZcbiAgICAgICAgICAgICAgICAgICAgIW9wdGlvbi5kaXNhYmxlZFxuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9e29wdGlvbi5kaXNhYmxlZH1cbiAgICAgICAgICAgICAgICAgIHZhbHVlPXtvcHRpb24udmFsdWV9XG4gICAgICAgICAgICAgICAgICB0YWJJbmRleD17LTF9XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgPERpc3BsYXlPcHRpb25cbiAgICAgICAgICAgICAgICAgICAgb3B0aW9uPXtvcHRpb259XG4gICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uRGlyZWN0aW9uPXtkZXNjcmlwdGlvbkRpcmVjdGlvbn1cbiAgICAgICAgICAgICAgICAgICAgb3B0aW9uYWxJbmZvUGxhY2VtZW50PXtvcHRpb25hbEluZm9QbGFjZW1lbnR9XG4gICAgICAgICAgICAgICAgICAvPlxuICAgICAgICAgICAgICAgIDwvU3R5bGVkQ2hlY2tib3g+XG4gICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgPERpc3BsYXlPcHRpb25cbiAgICAgICAgICAgICAgICAgIG9wdGlvbj17b3B0aW9ufVxuICAgICAgICAgICAgICAgICAgZGVzY3JpcHRpb25EaXJlY3Rpb249e2Rlc2NyaXB0aW9uRGlyZWN0aW9ufVxuICAgICAgICAgICAgICAgICAgb3B0aW9uYWxJbmZvUGxhY2VtZW50PXtvcHRpb25hbEluZm9QbGFjZW1lbnR9XG4gICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvRHJvcGRvd25JdGVtPlxuICAgICAgICAgICkpXG4gICAgICAgICl9XG4gICAgICAgIHtsb2FkTW9yZSA/IDxMb2FkTW9yZT57bG9hZE1vcmV9PC9Mb2FkTW9yZT4gOiBudWxsfVxuICAgICAgPC9TdGFjaz5cbiAgICA8L0Ryb3Bkb3duQ29udGFpbmVyPlxuICApXG59XG5leHBvcnQgY29uc3QgRHJvcGRvd24gPSAoe1xuICBjaGlsZHJlbixcbiAgZW1wdHlTdGF0ZSxcbiAgZGVzY3JpcHRpb25EaXJlY3Rpb24sXG4gIHNlYXJjaGFibGUsXG4gIHBsYWNlaG9sZGVyLFxuICBmb290ZXIsXG4gIHJlZlNlbGVjdCxcbiAgbG9hZE1vcmUsXG4gIG9wdGlvbmFsSW5mb1BsYWNlbWVudCxcbiAgaXNMb2FkaW5nLFxuICBzaXplLFxufTogRHJvcGRvd25Qcm9wcykgPT4ge1xuICBjb25zdCB7XG4gICAgc2V0SXNEcm9wZG93blZpc2libGUsXG4gICAgaXNEcm9wZG93blZpc2libGUsXG4gICAgb25TZWFyY2gsXG4gICAgc2VhcmNoSW5wdXQsXG4gICAgb3B0aW9ucyxcbiAgICBkaXNwbGF5ZWRPcHRpb25zLFxuICAgIG51bWJlck9mT3B0aW9ucyxcbiAgfSA9IHVzZVNlbGVjdElucHV0KClcbiAgY29uc3QgdGhlbWUgPSB1c2VUaGVtZSgpXG4gIGNvbnN0IFtzZWFyY2hCYXJBY3RpdmUsIHNldFNlYXJjaEJhckFjdGl2ZV0gPSB1c2VTdGF0ZShmYWxzZSlcbiAgY29uc3QgW2RlZmF1bHRTZWFyY2hWYWx1ZSwgc2V0RGVmYXVsdFNlYXJjaF0gPSB1c2VTdGF0ZTxzdHJpbmcgfCBudWxsPihudWxsKVxuICBjb25zdCByZWYgPSB1c2VSZWY8SFRNTERpdkVsZW1lbnQ+KG51bGwpXG4gIGNvbnN0IFtzZWFyY2gsIHNldFNlYXJjaF0gPSB1c2VTdGF0ZTxzdHJpbmc+KCcnKVxuICBjb25zdCBbbWF4V2lkdGgsIHNldFdpZHRoXSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bWJlcj4oKVxuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKHJlZlNlbGVjdC5jdXJyZW50ICYmIGlzRHJvcGRvd25WaXNpYmxlKSB7XG4gICAgICBjb25zdCBwb3NpdGlvbiA9XG4gICAgICAgIHJlZlNlbGVjdC5jdXJyZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLmJvdHRvbSArXG4gICAgICAgIERST1BET1dOX01BWF9IRUlHSFQgK1xuICAgICAgICBJTlBVVF9TSVpFX0hFSUdIVFtzaXplXSArXG4gICAgICAgIHBhcnNlSW50KHRoZW1lLnNwYWNlWyc1J10sIDEwKVxuICAgICAgY29uc3Qgb3ZlcmZsb3cgPSBwb3NpdGlvbiAtIHdpbmRvdy5pbm5lckhlaWdodFxuICAgICAgaWYgKG92ZXJmbG93ID4gMCkge1xuICAgICAgICBjb25zdCBtb2RhbEVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYmFja2Ryb3AtbW9kYWwnKVxuXG4gICAgICAgIGlmIChtb2RhbEVsZW1lbnQpIHtcbiAgICAgICAgICBtb2RhbEVsZW1lbnQuc2Nyb2xsQnkoeyB0b3A6IG92ZXJmbG93LCBiZWhhdmlvcjogJ3Ntb290aCcgfSlcbiAgICAgICAgfSBlbHNlIHdpbmRvdy5zY3JvbGxCeSh7IHRvcDogb3ZlcmZsb3csIGJlaGF2aW9yOiAnc21vb3RoJyB9KVxuICAgICAgfVxuICAgIH1cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvZXhoYXVzdGl2ZS1kZXBzXG4gIH0sIFtpc0Ryb3Bkb3duVmlzaWJsZSwgcmVmU2VsZWN0LCBzaXplLCByZWYuY3VycmVudF0pXG5cbiAgY29uc3QgcmVzaXplRHJvcGRvd24gPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgaWYgKFxuICAgICAgcmVmU2VsZWN0LmN1cnJlbnQgJiZcbiAgICAgIHJlZlNlbGVjdC5jdXJyZW50LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpLndpZHRoID4gMFxuICAgICkge1xuICAgICAgc2V0V2lkdGgocmVmU2VsZWN0LmN1cnJlbnQuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCkud2lkdGgpXG4gICAgfVxuICB9LCBbcmVmU2VsZWN0XSlcblxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHJlc2l6ZURyb3Bkb3duKClcblxuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdyZXNpemUnLCByZXNpemVEcm9wZG93bilcblxuICAgIHJldHVybiAoKSA9PiB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigncmVzaXplJywgcmVzaXplRHJvcGRvd24pXG4gIH0sIFtyZXNpemVEcm9wZG93bl0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIXNlYXJjaElucHV0KSB7XG4gICAgICBvblNlYXJjaChvcHRpb25zKVxuICAgIH1cbiAgfSwgW29uU2VhcmNoLCBvcHRpb25zLCBzZWFyY2hJbnB1dF0pXG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoIWlzRHJvcGRvd25WaXNpYmxlKSB7XG4gICAgICBzZXREZWZhdWx0U2VhcmNoKG51bGwpXG4gICAgICBzZXRTZWFyY2goJycpXG4gICAgfVxuXG4gICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgZXZlbnQgPT5cbiAgICAgIGhhbmRsZUNsaWNrT3V0c2lkZShcbiAgICAgICAgZXZlbnQsXG4gICAgICAgIHJlZixcbiAgICAgICAgc2V0SXNEcm9wZG93blZpc2libGUsXG4gICAgICAgIHJlZlNlbGVjdCxcbiAgICAgICAgb25TZWFyY2gsXG4gICAgICAgIG9wdGlvbnMsXG4gICAgICApLFxuICAgIClcblxuICAgIGlmICghc2VhcmNoYWJsZSkge1xuICAgICAgZG9jdW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigna2V5ZG93bicsIGV2ZW50ID0+XG4gICAgICAgIGhhbmRsZUtleURvd24oXG4gICAgICAgICAgZXZlbnQsXG4gICAgICAgICAgcmVmLFxuICAgICAgICAgIG9wdGlvbnMsXG4gICAgICAgICAgc2VhcmNoQmFyQWN0aXZlLFxuICAgICAgICAgIHNldFNlYXJjaCxcbiAgICAgICAgICBzZXREZWZhdWx0U2VhcmNoLFxuICAgICAgICAgIHNlYXJjaCxcbiAgICAgICAgKSxcbiAgICAgIClcbiAgICB9XG5cbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcignbW91c2Vkb3duJywgZXZlbnQgPT5cbiAgICAgICAgaGFuZGxlQ2xpY2tPdXRzaWRlKFxuICAgICAgICAgIGV2ZW50LFxuICAgICAgICAgIHJlZixcbiAgICAgICAgICBzZXRJc0Ryb3Bkb3duVmlzaWJsZSxcbiAgICAgICAgICByZWZTZWxlY3QsXG4gICAgICAgICAgb25TZWFyY2gsXG4gICAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgKSxcbiAgICAgIClcblxuICAgICAgaWYgKCFzZWFyY2hhYmxlKSB7XG4gICAgICAgIGRvY3VtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ2tleWRvd24nLCBldmVudCA9PlxuICAgICAgICAgIGhhbmRsZUtleURvd24oXG4gICAgICAgICAgICBldmVudCxcbiAgICAgICAgICAgIHJlZixcbiAgICAgICAgICAgIG9wdGlvbnMsXG4gICAgICAgICAgICBzZWFyY2hCYXJBY3RpdmUsXG4gICAgICAgICAgICBzZXRTZWFyY2gsXG4gICAgICAgICAgICBzZXREZWZhdWx0U2VhcmNoLFxuICAgICAgICAgICAgc2VhcmNoLFxuICAgICAgICAgICksXG4gICAgICAgIClcbiAgICAgIH1cbiAgICB9XG4gIH0sIFtcbiAgICBpc0Ryb3Bkb3duVmlzaWJsZSxcbiAgICBzZWFyY2hCYXJBY3RpdmUsXG4gICAgb3B0aW9ucyxcbiAgICBvblNlYXJjaCxcbiAgICBzZWFyY2gsXG4gICAgcmVmU2VsZWN0LFxuICAgIHNldERlZmF1bHRTZWFyY2gsXG4gICAgc2V0SXNEcm9wZG93blZpc2libGUsXG4gICAgc2VhcmNoYWJsZSxcbiAgXSlcblxuICAvLyBObyBkYXRhIGlzIGRpc3BsYXllZCAoYmVjYXVzZSBvZiB0aGUgc2VhcmNoIG9yIGJlY2F1c2Ugbm8gZGF0YSBpcyBwcm92aWRlZClcbiAgLy8gU2V0IHRvIHRydWUgd2hlbiBub0RhdGEgYnkgZGVmYXVsdFxuICBjb25zdCBpc0VtcHR5ID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKG51bWJlck9mT3B0aW9ucyA9PT0gMCkgcmV0dXJuIHRydWVcbiAgICBpZiAoQXJyYXkuaXNBcnJheShkaXNwbGF5ZWRPcHRpb25zKSkge1xuICAgICAgcmV0dXJuICEoZGlzcGxheWVkT3B0aW9ucy5sZW5ndGggPiAwKVxuICAgIH1cbiAgICBjb25zdCBncm91cHMgPSBPYmplY3Qua2V5cyhkaXNwbGF5ZWRPcHRpb25zKVxuICAgIGZvciAoY29uc3QgZ3JvdXAgb2YgZ3JvdXBzKSB7XG4gICAgICBpZiAoZGlzcGxheWVkT3B0aW9uc1tncm91cF0ubGVuZ3RoICE9PSAwKSB7XG4gICAgICAgIHJldHVybiBmYWxzZVxuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0cnVlXG4gIH0sIFtkaXNwbGF5ZWRPcHRpb25zLCBudW1iZXJPZk9wdGlvbnNdKVxuXG4gIGNvbnN0IGNvbXB1dGVkRm9vdGVyID0gdXNlTWVtbygoKSA9PiB7XG4gICAgaWYgKGZvb3Rlcikge1xuICAgICAgaWYgKHR5cGVvZiBmb290ZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICA8UG9wdXBGb290ZXI+e2Zvb3RlcigoKSA9PiBzZXRJc0Ryb3Bkb3duVmlzaWJsZShmYWxzZSkpfTwvUG9wdXBGb290ZXI+XG4gICAgICAgIClcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIDxQb3B1cEZvb3Rlcj57Zm9vdGVyfTwvUG9wdXBGb290ZXI+XG4gICAgfVxuXG4gICAgcmV0dXJuIG51bGxcbiAgfSwgW2Zvb3Rlciwgc2V0SXNEcm9wZG93blZpc2libGVdKVxuXG4gIHJldHVybiAoXG4gICAgPFN0eWxlZFBvcHVwXG4gICAgICB2aXNpYmxlPXtpc0Ryb3Bkb3duVmlzaWJsZX1cbiAgICAgIHRleHQ9e1xuICAgICAgICA8U3RhY2s+XG4gICAgICAgICAge3NlYXJjaGFibGUgJiYgIWlzTG9hZGluZyAmJiBudW1iZXJPZk9wdGlvbnMgPj0gNiA/IChcbiAgICAgICAgICAgIDxTZWFyY2hCYXJEcm9wZG93blxuICAgICAgICAgICAgICBwbGFjZWhvbGRlcj17cGxhY2Vob2xkZXJ9XG4gICAgICAgICAgICAgIGRpc3BsYXllZE9wdGlvbnM9e2Rpc3BsYXllZE9wdGlvbnN9XG4gICAgICAgICAgICAgIHNldFNlYXJjaEJhckFjdGl2ZT17c2V0U2VhcmNoQmFyQWN0aXZlfVxuICAgICAgICAgICAgLz5cbiAgICAgICAgICApIDogbnVsbH1cbiAgICAgICAgICA8Q3JlYXRlRHJvcGRvd25cbiAgICAgICAgICAgIGlzRW1wdHk9e2lzRW1wdHl9XG4gICAgICAgICAgICBlbXB0eVN0YXRlPXtlbXB0eVN0YXRlfVxuICAgICAgICAgICAgZGVzY3JpcHRpb25EaXJlY3Rpb249e2Rlc2NyaXB0aW9uRGlyZWN0aW9ufVxuICAgICAgICAgICAgbG9hZE1vcmU9e2xvYWRNb3JlfVxuICAgICAgICAgICAgb3B0aW9uYWxJbmZvUGxhY2VtZW50PXtvcHRpb25hbEluZm9QbGFjZW1lbnR9XG4gICAgICAgICAgICBkZWZhdWx0U2VhcmNoVmFsdWU9e2RlZmF1bHRTZWFyY2hWYWx1ZX1cbiAgICAgICAgICAgIGlzTG9hZGluZz17aXNMb2FkaW5nfVxuICAgICAgICAgIC8+XG4gICAgICAgICAge2NvbXB1dGVkRm9vdGVyfVxuICAgICAgICA8L1N0YWNrPlxuICAgICAgfVxuICAgICAgcGxhY2VtZW50PVwiYm90dG9tXCJcbiAgICAgIGRpc2FibGVBbmltYXRpb25cbiAgICAgIG1heFdpZHRoPXttYXhXaWR0aCA/PyByZWZTZWxlY3QuY3VycmVudD8ub2Zmc2V0V2lkdGh9XG4gICAgICBoYXNBcnJvdz17ZmFsc2V9XG4gICAgICByZWY9e3JlZn1cbiAgICAgIHRhYkluZGV4PXswfVxuICAgICAgcm9sZT1cImRpYWxvZ1wiXG4gICAgICBkZWJvdW5jZURlbGF5PXswfVxuICAgICAgY29udGFpbmVyRnVsbFdpZHRoXG4gICAgICBhbGlnbj1cInN0YXJ0XCJcbiAgICA+XG4gICAgICB7Y2hpbGRyZW59XG4gICAgPC9TdHlsZWRQb3B1cD5cbiAgKVxufVxuIl19 */"));
177
177
  const moveFocusDown = () => {
178
178
  const options = document.querySelectorAll('#items > div[role="option"]:not([disabled])');
179
179
  const activeItem = document.activeElement;
@@ -384,7 +384,8 @@ const Dropdown = ({
384
384
  onSearch,
385
385
  searchInput,
386
386
  options,
387
- displayedOptions
387
+ displayedOptions,
388
+ numberOfOptions
388
389
  } = SelectInputProvider.useSelectInput();
389
390
  const theme = react.useTheme();
390
391
  const [searchBarActive, setSearchBarActive] = React.useState(false);
@@ -442,6 +443,7 @@ const Dropdown = ({
442
443
  };
443
444
  }, [isDropdownVisible, searchBarActive, options, onSearch, search, refSelect, setDefaultSearch, setIsDropdownVisible, searchable]);
444
445
  const isEmpty = React.useMemo(() => {
446
+ if (numberOfOptions === 0) return true;
445
447
  if (Array.isArray(displayedOptions)) {
446
448
  return !(displayedOptions.length > 0);
447
449
  }
@@ -452,11 +454,20 @@ const Dropdown = ({
452
454
  }
453
455
  }
454
456
  return true;
455
- }, [displayedOptions]);
457
+ }, [displayedOptions, numberOfOptions]);
458
+ const computedFooter = React.useMemo(() => {
459
+ if (footer) {
460
+ if (typeof footer === "function") {
461
+ return /* @__PURE__ */ jsxRuntime.jsx(PopupFooter, { children: footer(() => setIsDropdownVisible(false)) });
462
+ }
463
+ return /* @__PURE__ */ jsxRuntime.jsx(PopupFooter, { children: footer });
464
+ }
465
+ return null;
466
+ }, [footer, setIsDropdownVisible]);
456
467
  return /* @__PURE__ */ jsxRuntime.jsx(StyledPopup, { visible: isDropdownVisible, text: /* @__PURE__ */ jsxRuntime.jsxs(index$1.Stack, { children: [
457
- searchable && !isLoading ? /* @__PURE__ */ jsxRuntime.jsx(SearchBarDropdown.SearchBarDropdown, { placeholder, displayedOptions, setSearchBarActive }) : null,
468
+ searchable && !isLoading && numberOfOptions >= 6 ? /* @__PURE__ */ jsxRuntime.jsx(SearchBarDropdown.SearchBarDropdown, { placeholder, displayedOptions, setSearchBarActive }) : null,
458
469
  /* @__PURE__ */ jsxRuntime.jsx(CreateDropdown, { isEmpty, emptyState, descriptionDirection, loadMore, optionalInfoPlacement, defaultSearchValue, isLoading }),
459
- footer ? /* @__PURE__ */ jsxRuntime.jsx(PopupFooter, { children: footer }) : null
460
- ] }), placement: "bottom", disableAnimation: true, maxWidth: maxWidth ?? refSelect.current?.offsetWidth, hasArrow: false, ref, tabIndex: 0, role: "dialog", debounceDelay: 0, containerFullWidth: true, children });
470
+ computedFooter
471
+ ] }), placement: "bottom", disableAnimation: true, maxWidth: maxWidth ?? refSelect.current?.offsetWidth, hasArrow: false, ref, tabIndex: 0, role: "dialog", debounceDelay: 0, containerFullWidth: true, align: "start", children });
461
472
  };
462
473
  exports.Dropdown = Dropdown;