/********************************************************* {COPYRIGHT-TOP} ***
* Licensed Materials - Property of IBM
* 5725-Z22, 5725-Z63, 5725-U33, 5725-Z63
*
* (C) Copyright IBM Corporation 2017
*
* All Rights Reserved.
* US Government Users Restricted Rights - Use, duplication or disclosure
* restricted by GSA ADP Schedule Contract with IBM Corp.
********************************************************** {COPYRIGHT-END} **/
.webapi .mainBanner md-sidenav.md-whiteframe-z2 {
  border-right: 1px solid #e5e5e5;
  -webkit-box-shadow: none;
  box-shadow: none;
}
.webapi md-switch {
  margin: 0;
}
.webapi .md-button {
  margin: 0 2px;
  text-transform: none;
}
.webapi .md-button button.md-default-theme.iconOnlyButton:not([disabled]):hover,
.webapi .md-button button.md-default-theme.iconOnlyButton:not([disabled]):focus {
  background: none;
}
.webapi .md-button:not([disabled]).md-focused,
.webapi .md-button:not([disabled]):hover {
  background-color: rgba(17,118,201,0.8);
}
.webapi .md-button:not([disabled]).cancelButton.md-focused,
.webapi .md-button:not([disabled]).cancelButton:hover {
  background-color: #ccd5d5;
}
.webapi[disabled] {
  background-color: #1176c9;
}
.webapi md-select {
  padding: 0;
}
.webapi md-input-container md-select-label {
  width: 100%;
}
.webapi md-option {
  height: 24px;
}
.offlineMode.apim .mainBanner md-sidenav {
  overflow: hidden !important;
}
.apim .mainBanner md-sidenav header {
  background-color: #1d3649;
  border-right: 1px solid rgba(255,255,255,0.2);
  color: #fff;
  height: 60px;
  overflow: hidden;
  padding: 0 13px 0 20px;
}
.apim .mainBanner md-sidenav h5 {
  padding: 16px 18px;
}
.apim .mainBanner md-sidenav .navHeader a {
  width: 100%;
}
.apim .mainBanner md-sidenav > section {
  height: calc(100% - 61px);
  overflow-y: auto;
}
.apim md-chip button:not(:disabled):hover {
  background: transparent;
}
.apim md-chips input[type='search'] {
  background: none;
  border: 0;
  padding: 10px;
}
.apim md-autocomplete input[type='search'] {
  background: #fff;
  border: 0;
  padding: 6px 10px;
}
.apim md-autocomplete button {
  display: none;
}
.apim .md-select-value *:first-child {
  max-width: 100%;
}
.apim md-input-container {
  margin-bottom: 0;
}
.apim md-input-container.md-input-focused .md-input {
  padding-bottom: 0;
}
.apim md-input-container .md-input {
  padding-bottom: 1px;
}
.apim md-input-container .md-errors-spacer {
  min-width: 0;
}
.apim md-input-container.hiddenLabel {
  margin-top: 0;
}
.apim md-input-container select {
  width: 100%;
}
.apim md-input-container.defaultPadding {
  padding: 2px 5px 10px;
}
.apim md-input-container.inlinePlaceholder {
  padding-bottom: 3px;
}
.apim md-input-container.inlinePlaceholder.md-icon-float.md-input-focused {
  margin-top: -16px;
}
.apim md-input-container.inlinePlaceholder label {
  display: none;
  margin-left: 10px;
  margin-top: 19px;
  -webkit-transform-origin: inherit;
  -moz-transform-origin: inherit;
  -o-transform-origin: inherit;
  -ms-transform-origin: inherit;
  transform-origin: inherit;
  -webkit-transform: inherit;
  -moz-transform: inherit;
  -o-transform: inherit;
  -ms-transform: inherit;
  transform: inherit;
  -webkit-transition: inheriit;
  -moz-transition: inheriit;
  -o-transition: inheriit;
  -ms-transition: inheriit;
  transition: inheriit;
}
.apim md-input-container.inlinePlaceholder input {
  line-height: normal;
  margin-top: 19px;
  max-height: 17px;
  padding-top: 0;
}
.apim md-toolbar {
  background-color: inherit;
  border-bottom: 1px solid #e5e5e5;
  color: inherit;
  min-height: inherit;
}
.apim md-toolbar h2 {
  color: inherit;
}
.apim md-toolbar-tools {
  height: auto;
  padding: 15px;
}
.apim md-dialog md-dialog-content {
  padding: 20px;
}
.apim md-dialog .md-actions .md-button {
  margin: 0 2px;
}
.apim .md-actions {
  border-top: 1px solid #e5e5e5;
  margin-top: 15px;
  min-height: inherit;
  padding: 19px 20px 20px;
}
.apim md-radio-button {
  margin: 0;
  margin-right: 10px;
}
.apim md-tabs md-ink-bar {
  background: #90d2fc;
  color: #90d2fc;
  height: 4px;
}
.apim md-menu-content label {
  color: #fff;
  margin-left: 5px;
}
.apim md-switch {
  margin: 0;
}
.apim md-switch.md-checked .md-thumb {
  background-color: #fff;
}
.apim .md-button {
  text-transform: none;
}
.apim md-whiteframe {
  margin: 10px;
}
.apim md-radio-group.row md-radio-button {
  display: inline-block;
}
.apim md-radio-group.horizontalRadioButtons md-radio-button {
  display: inline;
}
.apim label {
  word-wrap: break-word;
}
.apim .material-left-border {
  border-color: rgba(0,0,0,0.12);
  border-left: 1px solid;
}
.apim md-checkbox.md-checked .md-icon:after {
  display: block;
}
.apim md-input-container .md-placeholder:not(.md-select-label),
.apim md-input-container:not(.md-input-focused) label:not(.md-no-float) {
  color: #767676;
}
.apim md-input-container:not(.md-input-invalid).md-input-focused label,
.apim md-input-container.md-input-focused label:not(.md-no-float),
.apim md-input-container.md-input-has-value label:not(.md-no-float) {
  font-size: 12px;
}
.apim md-input-container.md-input-focused label:not(.md-no-float),
.apim md-input-container.md-input-has-value label:not(.md-no-float) {
  -webkit-transform: translate3d(0, 8px, 0);
  -moz-transform: translate3d(0, 8px, 0);
  -o-transform: translate3d(0, 8px, 0);
  -ms-transform: translate3d(0, 8px, 0);
  transform: translate3d(0, 8px, 0);
  -webkit-transform: translate3d(0, 8px, 0);
}
.apim md-input-container.clearPadding {
  padding: 0;
}
.apim md-input-container md-select,
.apim md-input-container select {
  margin: 2px 0;
  -webkit-box-ordinal-group: 2;
  -moz-box-ordinal-group: 2;
  -o-box-ordinal-group: 2;
  -ms-flex-order: 2;
  -webkit-order: 2;
  order: 2;
}
.apim md-input-container + md-input-container,
.apim md-switch + md-input-container {
  margin-left: 10px;
  -ms-flex-negative: 1;
}
.apim .catalogEndpoint md-input-container + md-input-container,
.apim .catalogEndpoint md-switch + md-input-container {
  margin-left: 0;
  -ms-flex-negative: 1;
}
.apim .layout-column md-input-container + md-input-container,
.apim .layout-column md-switch + md-input-container {
  padding-left: 0;
}
.apim legend.radioButtonLabel,
.apim md-input-container label {
  border-bottom: none;
  color: rgba(0,0,0,0.54);
  font-size: 14px;
  margin-bottom: 5px;
  padding-left: 2px;
}

/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFwaW0vY3NzL21hdGVyaWFsLnN0eWwiLCIuLi9ub2RlX21vZHVsZXMvbmliL2xpYi9uaWIvdmVuZG9yLnN0eWwiLCIuLi9ub2RlX21vZHVsZXMvbmliL2xpYi9uaWIvb3ZlcmZsb3cuc3R5bCIsIi4uL25vZGVfbW9kdWxlcy9uaWIvbGliL25pYi9ib3JkZXIuc3R5bCIsIi4uL25vZGVfbW9kdWxlcy9uaWIvbGliL25pYi9mbGV4LnN0eWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7Ozs7QUFXRTtFQUNFLGNBQWMsa0JBQWQ7RUMrQmMsb0JBQUcsS0FBSDtFQVJILFlBQUcsS0FBSDs7QURwQmI7RUFDRSxRQUFRLEVBQVI7O0FBRUY7RUFDRSxRQUFRLE1BQVI7RUFDQSxnQkFBZ0IsS0FBaEI7O0FBR0U7QUFDTjtFQzBkSSxZQUFXLEtBQVg7O0FEdGRFO0FBQ0E7RUFDRSxrQkFBa0IscUJBQWxCOztBQUdBO0FBQ1I7RUFDVSxrQkFBa0IsUUFBbEI7O0FBRVI7RUFDRSxrQkFBa0IsUUFBbEI7O0FBRUY7RUFDRSxTQUFTLEVBQVQ7O0FBRUY7RUFDRSxPQUFPLEtBQVA7O0FBRUY7RUFDRSxRQUFRLEtBQVI7O0FBS0E7RUVqQ0EsVUFBVSxrQkFBVjs7QUZvQ0E7RUFDRSxrQkFBa0IsUUFBbEI7RUFDQSxjQUFjLGdDQUFkO0VBQ0EsT0FBTyxLQUFQO0VBQ0EsUUFBUSxLQUFSO0VFeENGLFVBQVUsT0FBVjtFRjBDRSxTQUFTLGNBQVQ7O0FBRUY7RUFDRSxTQUFTLFVBQVQ7O0FBRUY7RUFDRSxPQUFPLEtBQVA7O0FBRUY7RUFDRSxRQUFPLGtCQUFQO0VBQ0EsWUFBWSxLQUFaOztBQUVKO0VDeWFFLFlBQVcsWUFBWDs7QUR0YUY7RUNzYUUsWUFBVyxLQUFYO0VFemVBLFFBQVEsRUFBUjtFSHNFQSxTQUFTLEtBQVQ7O0FBR0E7RUNnYUEsWUFBVyxLQUFYO0VFemVBLFFBQVEsRUFBUjtFSDRFRSxTQUFTLFNBQVQ7O0FBRUY7RUlqRUEsU0FBUyxLQUFUOztBSm9FRjtFQUNFLFdBQVcsS0FBWDs7QUFFRjtFQUNFLGVBQWUsRUFBZjs7QUFHRTtFQUNFLGdCQUFnQixFQUFoQjs7QUFFSjtFQUNFLGdCQUFnQixJQUFoQjs7QUFFRjtFQUNFLFdBQVcsRUFBWDs7QUFDRjtFQUNFLFlBQVksRUFBWjs7QUFFRjtFQUNFLE9BQU8sS0FBUDs7QUFFRjtFQUNFLFNBQVMsYUFBVDs7QUFFRjtFQUNFLGdCQUFnQixJQUFoQjs7QUFFQTtFQUNFLFlBQVksTUFBWjs7QUFFRjtFSWxHRixTQUFTLEtBQVQ7RUpvR0ksYUFBYSxLQUFiO0VBQ0EsWUFBWSxLQUFaO0VDaEZVLDBCQUFHLFFBQUg7RUFBQSx1QkFBRyxRQUFIO0VBQUEscUJBQUcsUUFBSDtFQUFBLHNCQUFHLFFBQUg7RUFSSCxrQkFBRyxRQUFIO0VBUUcsbUJBQUcsUUFBSDtFQUFBLGdCQUFHLFFBQUg7RUFBQSxjQUFHLFFBQUg7RUFBQSxlQUFHLFFBQUg7RUFSSCxXQUFHLFFBQUg7RUFNRyxvQkFBRyxTQUFIO0VBQUEsaUJBQUcsU0FBSDtFQUFBLGVBQUcsU0FBSDtFQUFBLGdCQUFHLFNBQUg7RUFSSCxZQUFHLFNBQUg7O0FEK0ZUO0VBQ0UsYUFBYSxPQUFiO0VBQ0EsWUFBWSxLQUFaO0VBQ0EsWUFBWSxLQUFaO0VBQ0EsYUFBYSxFQUFiOztBQUVOO0VBQ0Usa0JBQWtCLFFBQWxCO0VBQ0EsZUFBZSxrQkFBZjtFQUNBLE9BQU8sUUFBUDtFQUNBLFlBQVksUUFBWjs7QUFFQTtFQUNFLE9BQU8sUUFBUDs7QUFFSjtFQUNFLFFBQVEsS0FBUjtFQUNBLFNBQVMsS0FBVDs7QUFHQTtFQUNFLFNBQVMsS0FBVDs7QUFFRjtFQUNFLFFBQVEsTUFBUjs7QUFFSjtFQUNFLFlBQVksa0JBQVo7RUFDQSxZQUFZLEtBQVo7RUFDQSxZQUFZLFFBQVo7RUFDQSxTQUFTLGVBQVQ7O0FBRUY7RUFDRSxRQUFRLEVBQVI7RUFDQSxjQUFjLEtBQWQ7O0FBRUY7RUM4VUUsWUFBVyxRQUFYO0VENVVBLE9BQU8sUUFBUDtFQUNBLFFBQVEsSUFBUjs7QUFFRjtFQUNFLE9BQU8sS0FBUDtFQUNBLGFBQWEsSUFBYjs7QUFFRjtFQUNFLFFBQVEsRUFBUjs7QUFJRTtFQUNFLGtCQUFrQixLQUFsQjs7QUFFTjtFQUNFLGdCQUFnQixLQUFoQjs7QUFFRjtFQUNFLFFBQVEsS0FBUjs7QUFHQTtFSXRLQSxTQUFTLGFBQVQ7O0FKeUtBO0VJektBLFNBQVMsT0FBVDs7QUo0S0Y7RUFDRSxXQUFXLFdBQVg7O0FBRUY7RUFDRSxjQUFjLGlCQUFkO0VBQ0EsYUFBYSxVQUFiOztBQUVGO0VJbkxFLFNBQVMsTUFBVDs7QUp1TEE7QUFDQTtFQUNFLE9BQU8sUUFBUDs7QUFFRjtBQUNBO0FBQ0E7RUFDRSxXQUFXLEtBQVg7O0FBSUE7O0VDN0tZLG1CQUFHLHVCQUFIO0VBQUEsZ0JBQUcsdUJBQUg7RUFBQSxjQUFHLHVCQUFIO0VBQUEsZUFBRyx1QkFBSDtFQVJILFdBQUcsdUJBQUg7RUR1TFAsbUJBQW1CLHVCQUFuQjs7QUFFSjtFQUNFLFNBQVMsRUFBVDs7QUFFRjtBQUNBO0VBQ0UsUUFBUSxNQUFSO0VDdExZLDJCQUFHLEVBQUg7RUFBQSx3QkFBRyxFQUFIO0VBQUEsc0JBQUcsRUFBSDtFQUFBLGdCQUFHLEVBQUg7RUFBQSxlQUFHLEVBQUg7RUFSSCxPQUFHLEVBQUg7O0FEb01YOztFQUNFLGFBQWEsS0FBYjtFQUNBLG1CQUFtQixFQUFuQjs7QUFLQTs7RUFDRSxhQUFhLEVBQWI7RUFDQSxtQkFBbUIsRUFBbkI7O0FBS0Y7O0VBQ0UsY0FBYyxFQUFkOztBQUVOO0FBQ0E7RUFDRSxlQUFlLEtBQWY7RUFDQSxPQUFPLGlCQUFQO0VBQ0EsV0FBVyxLQUFYO0VBQ0EsZUFBZSxJQUFmO0VBQ0EsY0FBYyxJQUFkIiwiZmlsZSI6ImFwaW0vY3NzL21hdGVyaWFsLmNzcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioge0NPUFlSSUdIVC1UT1B9ICoqKlxuKiBMaWNlbnNlZCBNYXRlcmlhbHMgLSBQcm9wZXJ0eSBvZiBJQk1cbiogNTcyNS1aMjIsIDU3MjUtWjYzLCA1NzI1LVUzMywgNTcyNS1aNjNcbipcbiogKEMpIENvcHlyaWdodCBJQk0gQ29ycG9yYXRpb24gMjAxN1xuKlxuKiBBbGwgUmlnaHRzIFJlc2VydmVkLlxuKiBVUyBHb3Zlcm5tZW50IFVzZXJzIFJlc3RyaWN0ZWQgUmlnaHRzIC0gVXNlLCBkdXBsaWNhdGlvbiBvciBkaXNjbG9zdXJlXG4qIHJlc3RyaWN0ZWQgYnkgR1NBIEFEUCBTY2hlZHVsZSBDb250cmFjdCB3aXRoIElCTSBDb3JwLlxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiB7Q09QWVJJR0hULUVORH0gKiovXG4ud2ViYXBpXG4gIC5tYWluQmFubmVyIG1kLXNpZGVuYXYubWQtd2hpdGVmcmFtZS16MlxuICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkICNFNUU1RTVcbiAgICBib3gtc2hhZG93OiBub25lXG5cbiAgbWQtc3dpdGNoXG4gICAgbWFyZ2luOiAwXG5cbiAgLm1kLWJ1dHRvblxuICAgIG1hcmdpbjogMCAycHhcbiAgICB0ZXh0LXRyYW5zZm9ybTogbm9uZVxuXG4gICAgYnV0dG9uLm1kLWRlZmF1bHQtdGhlbWUuaWNvbk9ubHlCdXR0b246bm90KFtkaXNhYmxlZF0pXG4gICAgICAmOmhvdmVyLFxuICAgICAgJjpmb2N1c1xuICAgICAgICBiYWNrZ3JvdW5kOiBub25lXG5cbiAgICAmOm5vdChbZGlzYWJsZWRdKVxuICAgICAgJi5tZC1mb2N1c2VkXG4gICAgICAmOmhvdmVyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMTcsIDExOCwgMjAxLCAuOClcblxuICAgICAgJi5jYW5jZWxCdXR0b25cbiAgICAgICAgJi5tZC1mb2N1c2VkLFxuICAgICAgICAmOmhvdmVyXG4gICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2NjZDVkNVxuXG4gICZbZGlzYWJsZWRdXG4gICAgYmFja2dyb3VuZC1jb2xvcjogIzExNzZjOVxuXG4gIG1kLXNlbGVjdFxuICAgIHBhZGRpbmc6IDBcblxuICBtZC1pbnB1dC1jb250YWluZXIgbWQtc2VsZWN0LWxhYmVsIC8vIEBzdHlsaW50IGlnbm9yZSBjb2xvbnNcbiAgICB3aWR0aDogMTAwJVxuXG4gIG1kLW9wdGlvblxuICAgIGhlaWdodDogMjRweFxuXG4uYXBpbVxuICAubWFpbkJhbm5lciBtZC1zaWRlbmF2XG5cbiAgICAub2ZmbGluZU1vZGUmXG4gICAgICBvdmVyZmxvdzogaGlkZGVuICFpbXBvcnRhbnQgLy8gQHN0eWxpbnQgaWdub3JlIGltcG9ydGFudFxuXG4gICAgaGVhZGVyXG4gICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMWQzNjQ5XG4gICAgICBib3JkZXItcmlnaHQ6IDFweCBzb2xpZCByZ2JhKDI1NSwgMjU1LCAyNTUsIC4yKVxuICAgICAgY29sb3I6IHdoaXRlXG4gICAgICBoZWlnaHQ6IDYwcHhcbiAgICAgIG92ZXJmbG93OiBoaWRkZW5cbiAgICAgIHBhZGRpbmc6IDAgMTNweCAwIDIwcHhcblxuICAgIGg1XG4gICAgICBwYWRkaW5nOiAxNnB4IDE4cHhcblxuICAgIC5uYXZIZWFkZXIgYVxuICAgICAgd2lkdGg6IDEwMCVcblxuICAgID4gc2VjdGlvblxuICAgICAgaGVpZ2h0OmNhbGMoMTAwJSAtIDYxcHgpXG4gICAgICBvdmVyZmxvdy15OiBhdXRvXG5cbiAgbWQtY2hpcCBidXR0b246bm90KDpkaXNhYmxlZCk6aG92ZXJcbiAgICBiYWNrZ3JvdW5kOiB0cmFuc3BhcmVudFxuXG4gIG1kLWNoaXBzIGlucHV0W3R5cGU9J3NlYXJjaCddIC8vIEBzdHlsaW50IGlnbm9yZSBjb2xvbnNcbiAgICBiYWNrZ3JvdW5kOiBub25lXG4gICAgYm9yZGVyOiAwXG4gICAgcGFkZGluZzogMTBweFxuXG4gIG1kLWF1dG9jb21wbGV0ZVxuICAgIGlucHV0W3R5cGU9J3NlYXJjaCddIC8vIEBzdHlsaW50IGlnbm9yZSBjb2xvbnNcbiAgICAgIGJhY2tncm91bmQ6IHdoaXRlXG4gICAgICBib3JkZXI6IDBcbiAgICAgIHBhZGRpbmc6IDZweCAxMHB4XG5cbiAgICBidXR0b25cbiAgICAgIGRpc3BsYXk6IG5vbmVcblxuICAubWQtc2VsZWN0LXZhbHVlICo6Zmlyc3QtY2hpbGRcbiAgICBtYXgtd2lkdGg6IDEwMCVcblxuICBtZC1pbnB1dC1jb250YWluZXJcbiAgICBtYXJnaW4tYm90dG9tOiAwXG5cbiAgICAmLm1kLWlucHV0LWZvY3VzZWRcbiAgICAgIC5tZC1pbnB1dFxuICAgICAgICBwYWRkaW5nLWJvdHRvbTogMFxuXG4gICAgLm1kLWlucHV0XG4gICAgICBwYWRkaW5nLWJvdHRvbTogMXB4XG5cbiAgICAubWQtZXJyb3JzLXNwYWNlclxuICAgICAgbWluLXdpZHRoOiAwXG4gICAgJi5oaWRkZW5MYWJlbFxuICAgICAgbWFyZ2luLXRvcDogMFxuXG4gICAgc2VsZWN0XG4gICAgICB3aWR0aDogMTAwJVxuXG4gICAgJi5kZWZhdWx0UGFkZGluZ1xuICAgICAgcGFkZGluZzogMnB4IDVweCAxMHB4XG5cbiAgICAmLmlubGluZVBsYWNlaG9sZGVyXG4gICAgICBwYWRkaW5nLWJvdHRvbTogM3B4XG5cbiAgICAgICYubWQtaWNvbi1mbG9hdC5tZC1pbnB1dC1mb2N1c2VkXG4gICAgICAgIG1hcmdpbi10b3A6IC0xNnB4XG5cbiAgICAgIGxhYmVsXG4gICAgICAgIGRpc3BsYXk6IG5vbmVcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDEwcHhcbiAgICAgICAgbWFyZ2luLXRvcDogMTlweFxuICAgICAgICB0cmFuc2Zvcm0tb3JpZ2luOiBpbmhlcml0XG4gICAgICAgIHRyYW5zZm9ybTogaW5oZXJpdFxuICAgICAgICB0cmFuc2l0aW9uOiBpbmhlcmlpdFxuXG4gICAgICBpbnB1dFxuICAgICAgICBsaW5lLWhlaWdodDogbm9ybWFsXG4gICAgICAgIG1hcmdpbi10b3A6IDE5cHhcbiAgICAgICAgbWF4LWhlaWdodDogMTdweFxuICAgICAgICBwYWRkaW5nLXRvcDogMFxuXG4gIG1kLXRvb2xiYXJcbiAgICBiYWNrZ3JvdW5kLWNvbG9yOiBpbmhlcml0XG4gICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNlNWU1ZTVcbiAgICBjb2xvcjogaW5oZXJpdFxuICAgIG1pbi1oZWlnaHQ6IGluaGVyaXRcblxuICAgIGgyXG4gICAgICBjb2xvcjogaW5oZXJpdFxuXG4gIG1kLXRvb2xiYXItdG9vbHNcbiAgICBoZWlnaHQ6IGF1dG9cbiAgICBwYWRkaW5nOiAxNXB4XG5cbiAgbWQtZGlhbG9nXG4gICAgbWQtZGlhbG9nLWNvbnRlbnRcbiAgICAgIHBhZGRpbmc6IDIwcHhcblxuICAgIC5tZC1hY3Rpb25zIC5tZC1idXR0b25cbiAgICAgIG1hcmdpbjogMCAycHhcblxuICAubWQtYWN0aW9uc1xuICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZTVlNWU1XG4gICAgbWFyZ2luLXRvcDogMTVweFxuICAgIG1pbi1oZWlnaHQ6IGluaGVyaXRcbiAgICBwYWRkaW5nOiAxOXB4IDIwcHggMjBweFxuXG4gIG1kLXJhZGlvLWJ1dHRvblxuICAgIG1hcmdpbjogMFxuICAgIG1hcmdpbi1yaWdodDogMTBweFxuXG4gIG1kLXRhYnMgbWQtaW5rLWJhciAvLyBAc3R5bGludCBpZ25vcmUgY29sb25zXG4gICAgYmFja2dyb3VuZDogIzkwRDJGQ1xuICAgIGNvbG9yOiAjOTBEMkZDXG4gICAgaGVpZ2h0OiA0cHhcblxuICBtZC1tZW51LWNvbnRlbnQgbGFiZWwgLy8gQHN0eWxpbnQgaWdub3JlIGNvbG9uc1xuICAgIGNvbG9yOiB3aGl0ZVxuICAgIG1hcmdpbi1sZWZ0OiA1cHhcblxuICBtZC1zd2l0Y2hcbiAgICBtYXJnaW46IDBcblxuICAgICYubWQtY2hlY2tlZFxuXG4gICAgICAubWQtdGh1bWJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGVcblxuICAubWQtYnV0dG9uXG4gICAgdGV4dC10cmFuc2Zvcm06IG5vbmVcblxuICBtZC13aGl0ZWZyYW1lXG4gICAgbWFyZ2luOiAxMHB4XG5cbiAgbWQtcmFkaW8tZ3JvdXBcbiAgICAmLnJvdyBtZC1yYWRpby1idXR0b25cbiAgICAgIGRpc3BsYXk6IGlubGluZS1ibG9ja1xuXG4gICAgJi5ob3Jpem9udGFsUmFkaW9CdXR0b25zIG1kLXJhZGlvLWJ1dHRvblxuICAgICAgZGlzcGxheTogaW5saW5lXG5cbiAgbGFiZWxcbiAgICB3b3JkLXdyYXA6IGJyZWFrLXdvcmRcblxuICAubWF0ZXJpYWwtbGVmdC1ib3JkZXJcbiAgICBib3JkZXItY29sb3I6IHJnYmEoMCwgMCwgMCwgLjEyKVxuICAgIGJvcmRlci1sZWZ0OiAxcHggc29saWRcblxuICBtZC1jaGVja2JveC5tZC1jaGVja2VkIC5tZC1pY29uOmFmdGVyXG4gICAgZGlzcGxheTogYmxvY2tcblxuICBtZC1pbnB1dC1jb250YWluZXJcbiAgICAubWQtcGxhY2Vob2xkZXI6bm90KC5tZC1zZWxlY3QtbGFiZWwpXG4gICAgJjpub3QoLm1kLWlucHV0LWZvY3VzZWQpIGxhYmVsOm5vdCgubWQtbm8tZmxvYXQpXG4gICAgICBjb2xvcjogIzc2NzY3NlxuXG4gICAgJjpub3QoLm1kLWlucHV0LWludmFsaWQpLm1kLWlucHV0LWZvY3VzZWQgbGFiZWxcbiAgICAmLm1kLWlucHV0LWZvY3VzZWQgbGFiZWw6bm90KC5tZC1uby1mbG9hdClcbiAgICAmLm1kLWlucHV0LWhhcy12YWx1ZSBsYWJlbDpub3QoLm1kLW5vLWZsb2F0KVxuICAgICAgZm9udC1zaXplOiAxMnB4XG5cbiAgICAmLm1kLWlucHV0LWZvY3VzZWRcbiAgICAmLm1kLWlucHV0LWhhcy12YWx1ZVxuICAgICAgbGFiZWw6bm90KC5tZC1uby1mbG9hdClcbiAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCA4cHgsIDApXG4gICAgICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUzZCgwLCA4cHgsIDApXG5cbiAgICAmLmNsZWFyUGFkZGluZ1xuICAgICAgcGFkZGluZzogMFxuXG4gICAgbWQtc2VsZWN0XG4gICAgc2VsZWN0XG4gICAgICBtYXJnaW46IDJweCAwXG4gICAgICBvcmRlcjogMlxuXG5cbiAgbWQtaW5wdXQtY29udGFpbmVyXG4gIG1kLXN3aXRjaFxuICAgICsgbWQtaW5wdXQtY29udGFpbmVyXG4gICAgICBtYXJnaW4tbGVmdDogMTBweFxuICAgICAgLW1zLWZsZXgtbmVnYXRpdmU6IDEgLy8gQHN0eWxpbnQgaWdub3JlIHZhbGlkXG5cbiAgLmNhdGFsb2dFbmRwb2ludFxuICAgIG1kLWlucHV0LWNvbnRhaW5lclxuICAgIG1kLXN3aXRjaFxuICAgICAgKyBtZC1pbnB1dC1jb250YWluZXJcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDBcbiAgICAgICAgLW1zLWZsZXgtbmVnYXRpdmU6IDEgLy8gQHN0eWxpbnQgaWdub3JlIHZhbGlkXG5cbiAgLmxheW91dC1jb2x1bW5cbiAgICBtZC1pbnB1dC1jb250YWluZXJcbiAgICBtZC1zd2l0Y2hcbiAgICAgICsgbWQtaW5wdXQtY29udGFpbmVyXG4gICAgICAgIHBhZGRpbmctbGVmdDogMFxuXG4gIGxlZ2VuZC5yYWRpb0J1dHRvbkxhYmVsXG4gIG1kLWlucHV0LWNvbnRhaW5lciBsYWJlbCAvLyBAc3R5bGludCBpZ25vcmUgY29sb25zXG4gICAgYm9yZGVyLWJvdHRvbTogbm9uZVxuICAgIGNvbG9yOiByZ2JhKDAsIDAsIDAsIC41NClcbiAgICBmb250LXNpemU6IDE0cHhcbiAgICBtYXJnaW4tYm90dG9tOiA1cHhcbiAgICBwYWRkaW5nLWxlZnQ6IDJweFxuIiwidXNlKCcuLi9ub2Rlcy92ZW5kb3ItaGVscGVycy5qcycpXG5AaW1wb3J0ICdjb25maWcnXG5cbi8qXG4gKiBBbGlhcyBcIm5vd3JhcFwiIGFzIFwibm8td3JhcFwiLlxuICovXG5cbm5vLXdyYXAgPSB1bnF1b3RlKCdub3dyYXAnKVxuXG4vKlxuICogSGVscGVyIHRvIGZpbmQgb3V0IGlmIGEgZ2l2ZW4gdmFsdWUgaXMgYSB3aWR0aFxuICovXG5cbmlzLXdpZHRoKHZhbClcbiAgaWYgYXV0byA9PSB2YWxcbiAgICByZXR1cm4gdHJ1ZVxuICBlbHNlIGlmIHZhbCAmJiAndW5pdCcgPT0gdHlwZSh2YWwpXG4gICAgLy8gU3R5bHVzIGRvZXMgbm90IHNob3J0IGNpcmN1aXQgc28gd2UgbmVlZCB0byBwZXJmb3JtIHRoaXMgYXMgYSBkaXN0aW5jdFxuICAgIC8vIG9wZXJhdGlvbiB0byBwcmV2ZW50IGVycm9yc1xuICAgIHJldHVybiAnJyAhPSB1bml0KHZhbClcbiAgcmV0dXJuIGZhbHNlXG5cbi8qXG4gKiBWZW5kb3Igc3VwcG9ydCBmb3IgdGhlIGdpdmVuIHByb3AgLyBhcmd1bWVudHMsIG9wdGlvbmFsbHkgc3BlY2lmeWluZyB0aGVcbiAqIG9ubHkgcHJlZml4ZXMgdG8gdXRpbGl6ZSwgb3IgdGhvc2Ugd2hpY2ggc2hvdWxkIGJlIGlnbm9yZWQuXG4gKi9cblxudmVuZG9yKHByb3AsIGFyZ3MsIG9ubHkgPSBudWxsLCBpZ25vcmUgPSBudWxsLCB2ZW5kb3ItcHJvcGVydHkgPSB0cnVlKVxuICBuZWVkX25vcm1hbGl6ZSA9ICF2ZW5kb3ItcHJvcGVydHkgb3IgcHJvcCBpbiAoJ3RyYW5zaXRpb24nICd0cmFuc2l0aW9uLXByb3BlcnR5JyAnYm9yZGVyLWltYWdlJyAnYm9yZGVyLWltYWdlLXNsaWNlJylcbiAgZm9yIHByZWZpeCBpbiB2ZW5kb3ItcHJlZml4ZXNcbiAgICB1bmxlc3MgKG9ubHkgYW5kICEocHJlZml4IGluIG9ubHkpKSBvciAoaWdub3JlIGFuZCBwcmVmaXggaW4gaWdub3JlKVxuICAgICAgaWYgb2ZmaWNpYWwgPT0gcHJlZml4XG4gICAgICAgIGlmIG5lZWRfbm9ybWFsaXplXG4gICAgICAgICAge3Byb3B9OiBub3JtYWxpemUocHJvcCwoJyVzJyAlIGFyZ3MpKVxuICAgICAgICBlbHNlXG4gICAgICAgICAge3Byb3B9OiBhcmdzXG4gICAgICBlbHNlXG4gICAgICAgIG5ld3Byb3AgPSBwcm9wXG4gICAgICAgIG5ld3Byb3AgPSAnLScgKyBwcmVmaXggKyAnLScgKyBwcm9wIGlmIHZlbmRvci1wcm9wZXJ0eVxuXG4gICAgICAgIGlmIG5lZWRfbm9ybWFsaXplXG4gICAgICAgICAge25ld3Byb3B9OiBub3JtYWxpemUocHJvcCwoJyVzJyAlIGFyZ3MpLHByZWZpeClcbiAgICAgICAgZWxzZVxuICAgICAgICAgIHtuZXdwcm9wfTogYXJnc1xuLypcbiAqIFZlbmRvcml6ZSB0aGUgZ2l2ZW4gdmFsdWUuXG4gKi9cblxudmVuZG9yLXZhbHVlKGFyZywgb25seSA9IG51bGwsIGlnbm9yZSA9IG51bGwpXG4gIHByb3AgPSBjdXJyZW50LXByb3BlcnR5WzBdXG4gIGZvciBwcmVmaXggaW4gdmVuZG9yLXByZWZpeGVzXG4gICAgdW5sZXNzIChvbmx5IGFuZCAhKHByZWZpeCBpbiBvbmx5KSkgb3IgKGlnbm9yZSBhbmQgcHJlZml4IGluIGlnbm9yZSkgb3Igb2ZmaWNpYWwgPT0gcHJlZml4XG4gICAgICBhZGQtcHJvcGVydHkocHJvcCwgJy0lcy0lcycgJSAocHJlZml4IGFyZykpXG4gIGFyZ1xuXG4vKlxuICogVmVuZG9yIFwiYm94LXNoYWRvd1wiIHN1cHBvcnQuXG4gKi9cblxuYm94LXNoYWRvdygpXG4gIHZlbmRvcignYm94LXNoYWRvdycsIGFyZ3VtZW50cywgb25seTogd2Via2l0IG9mZmljaWFsKVxuXG4vKlxuICogVmVuZG9yIFwidXNlci1zZWxlY3RcIiBzdXBwb3J0LlxuICovXG5cbnVzZXItc2VsZWN0KClcbiAgdmVuZG9yKCd1c2VyLXNlbGVjdCcsIGFyZ3VtZW50cywgb25seTogd2Via2l0IG1veiBtcyBvZmZpY2lhbClcblxuLypcbiAqIFZlbmRvciBcImNvbHVtbi1jb3VudFwiIHN1cHBvcnQuXG4gKi9cblxuY29sdW1uLWNvdW50KClcbiAgdmVuZG9yKCdjb2x1bW4tY291bnQnLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBtb3ogb2ZmaWNpYWwpXG5cbi8qXG4gKiBWZW5kb3IgXCJjb2x1bW4tZ2FwXCIgc3VwcG9ydC5cbiAqL1xuXG5jb2x1bW4tZ2FwKClcbiAgdmVuZG9yKCdjb2x1bW4tZ2FwJywgYXJndW1lbnRzLCBvbmx5OiB3ZWJraXQgbW96IG9mZmljaWFsKVxuXG4vKlxuICogVmVuZG9yIFwiY29sdW1uLXJ1bGVcIiBzdXBwb3J0LlxuICovXG5cbmNvbHVtbi1ydWxlKClcbiAgdmVuZG9yKCdjb2x1bW4tcnVsZScsIGFyZ3VtZW50cywgb25seTogd2Via2l0IG1veiBvZmZpY2lhbClcblxuLypcbiAqIFZlbmRvciBcImNvbHVtbi1ydWxlLWNvbG9yXCIgc3VwcG9ydC5cbiAqL1xuXG5jb2x1bW4tcnVsZS1jb2xvcigpXG4gIHZlbmRvcignY29sdW1uLXJ1bGUtY29sb3InLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBtb3ogb2ZmaWNpYWwpXG5cbi8qXG4gKiBWZW5kb3IgXCJjb2x1bW4tcnVsZS13aWR0aFwiIHN1cHBvcnQuXG4gKi9cblxuY29sdW1uLXJ1bGUtd2lkdGgoKVxuICB2ZW5kb3IoJ2NvbHVtbi1ydWxlLXdpZHRoJywgYXJndW1lbnRzLCBvbmx5OiB3ZWJraXQgbW96IG9mZmljaWFsKVxuXG4vKlxuICogVmVuZG9yIFwiY29sdW1uLXJ1bGUtc3R5bGVcIiBzdXBwb3J0LlxuICovXG5cbmNvbHVtbi1ydWxlLXN0eWxlKClcbiAgdmVuZG9yKCdjb2x1bW4tcnVsZS1zdHlsZScsIGFyZ3VtZW50cywgb25seTogd2Via2l0IG1veiBvZmZpY2lhbClcblxuLypcbiAqIFZlbmRvciBcImNvbHVtbi13aWR0aFwiIHN1cHBvcnQuXG4gKi9cblxuY29sdW1uLXdpZHRoKClcbiAgdmVuZG9yKCdjb2x1bW4td2lkdGgnLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBtb3ogb2ZmaWNpYWwpXG5cbi8qXG4gKiBWZW5kb3IgXCJjb2x1bW4tc3BhblwiIHN1cHBvcnQuXG4gKi9cblxuY29sdW1uLXNwYW4oKVxuICB2ZW5kb3IoJ2NvbHVtbi1zcGFuJywgYXJndW1lbnRzLCBvbmx5OiB3ZWJraXQgb2ZmaWNpYWwpXG5cbi8qXG4gKiBWZW5kb3IgXCJjb2x1bW4tZmlsbFwiIHN1cHBvcnQuXG4gKi9cblxuY29sdW1uLWZpbGwoKVxuICB2ZW5kb3IoJ2NvbHVtbi1maWxsJywgYXJndW1lbnRzLCBvbmx5OiBtb3opXG5cbi8qXG4gKiBMZWdhY3kgc3ludGF4IHN1cHBvcnQgZm9yIGJhY2tncm91bmQtY2xpcCBhbmQgYmFja2dyb3VuZC1vcmlnaW5cbiAqL1xuXG5sZWdhY3ktYmctdmFsdWVzKHByb3BlcnR5LCBhcmdzKVxuICBsZWdhY3lfYXJncyA9ICgpXG4gIGltcG9ydGFuY2UgPSB1bnF1b3RlKCcnKVxuICBmb3Igc3ViYXJncyBpbiBhcmdzXG4gICAgZm9yIGFyZyBpbiBzdWJhcmdzXG4gICAgICBpZiBhcmcgaW4gKGJvcmRlci1ib3ggcGFkZGluZy1ib3ggY29udGVudC1ib3gpXG4gICAgICAgIGFyZyA9IHVucXVvdGUoJ2JvcmRlcicpICBpZiBhcmcgPT0gYm9yZGVyLWJveFxuICAgICAgICBhcmcgPSB1bnF1b3RlKCdwYWRkaW5nJykgaWYgYXJnID09IHBhZGRpbmctYm94XG4gICAgICAgIGFyZyA9IHVucXVvdGUoJ2NvbnRlbnQnKSBpZiBhcmcgPT0gY29udGVudC1ib3hcbiAgICAgIGlmIGFyZyAhPSAnIWltcG9ydGFudCdcbiAgICAgICAgcHVzaChsZWdhY3lfYXJncyxhcmcpXG4gICAgICBlbHNlXG4gICAgICAgIGltcG9ydGFuY2UgPSAhaW1wb3J0YW50XG4gIHZlbmRvcihwcm9wZXJ0eSwgdW5xdW90ZShqb2luKCcsICcsbGVnYWN5X2FyZ3MpKSBpbXBvcnRhbmNlLCBvbmx5OiBtb3ogd2Via2l0KVxuXG4vKlxuICogVmVuZG9yIFwiYmFja2dyb3VuZC1jbGlwXCIgc3VwcG9ydC5cbiAqL1xuXG5iYWNrZ3JvdW5kLWNsaXAoKVxuICBpZiBhcmd1bWVudHNbMF0gPT0gdGV4dFxuICAgIHZlbmRvcignYmFja2dyb3VuZC1jbGlwJywgYXJndW1lbnRzLCBvbmx5OiB3ZWJraXQpXG4gIGVsc2VcbiAgICBsZWdhY3ktYmctdmFsdWVzKCdiYWNrZ3JvdW5kLWNsaXAnLCBhcmd1bWVudHMpXG4gICAgYmFja2dyb3VuZC1jbGlwOiBhcmd1bWVudHNcblxuLypcbiAqIFZlbmRvciBcImJhY2tncm91bmQtb3JpZ2luXCIgc3VwcG9ydC5cbiAqL1xuXG5iYWNrZ3JvdW5kLW9yaWdpbigpXG4gIGxlZ2FjeS1iZy12YWx1ZXMoJ2JhY2tncm91bmQtb3JpZ2luJywgYXJndW1lbnRzKVxuICBiYWNrZ3JvdW5kLW9yaWdpbjogYXJndW1lbnRzXG5cbi8qXG4gKiBWZW5kb3IgXCJiYWNrZ3JvdW5kLXNpemVcIiBzdXBwb3J0LlxuICovXG5cbmJhY2tncm91bmQtc2l6ZSgpXG4gIHZlbmRvcignYmFja2dyb3VuZC1zaXplJywgYXJndW1lbnRzLCBvbmx5OiB3ZWJraXQgbW96IG9mZmljaWFsKVxuXG4vKlxuICogVmVuZG9yIFwidHJhbnNmb3JtXCIgc3VwcG9ydC5cbiAqL1xuXG50cmFuc2Zvcm0oKVxuICB2ZW5kb3IoJ3RyYW5zZm9ybScsIGFyZ3VtZW50cylcblxuLypcbiAqIFZlbmRvciBcInRyYW5zZm9ybS1vcmlnaW5cIiBzdXBwb3J0LlxuICovXG50cmFuc2Zvcm0tb3JpZ2luKClcbiAgICB2ZW5kb3IoJ3RyYW5zZm9ybS1vcmlnaW4nLCBhcmd1bWVudHMpXG5cbi8qXG4gKiBWZW5kb3IgXCJ0cmFuc2Zvcm0tc3R5bGVcIiBzdXBwb3J0LlxuICovXG5cbnRyYW5zZm9ybS1zdHlsZSgpXG4gIHZlbmRvcigndHJhbnNmb3JtLXN0eWxlJywgYXJndW1lbnRzKVxuXG4vKlxuICogVmVuZG9yIFwiYm9yZGVyLWltYWdlXCIgc3VwcG9ydC5cbiAqL1xuXG5ib3JkZXItaW1hZ2UoKVxuICB2ZW5kb3IoJ2JvcmRlci1pbWFnZScsIGFyZ3VtZW50cywgb25seTogd2Via2l0IG1veiBvIG9mZmljaWFsKVxuXG4vKlxuICogVmVuZG9yIFwidHJhbnNpdGlvblwiIHN1cHBvcnQuXG4gKi9cblxudHJhbnNpdGlvbigpXG4gIHZlbmRvcigndHJhbnNpdGlvbicsIGFyZ3VtZW50cylcblxuLypcbiAqIFZlbmRvciBcInRyYW5zaXRpb24tcHJvcGVydHlcIiBzdXBwb3J0LlxuICovXG5cbnRyYW5zaXRpb24tcHJvcGVydHkoKVxuICB2ZW5kb3IoJ3RyYW5zaXRpb24tcHJvcGVydHknLCBhcmd1bWVudHMpXG5cbi8qXG4gKiBWZW5kb3IgXCJ0cmFuc2l0aW9uLWR1cmF0aW9uXCIgc3VwcG9ydC5cbiAqL1xuXG50cmFuc2l0aW9uLWR1cmF0aW9uKClcbiAgdmVuZG9yKCd0cmFuc2l0aW9uLWR1cmF0aW9uJywgYXJndW1lbnRzKVxuXG4vKlxuICogVmVuZG9yIFwidHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb25cIiBzdXBwb3J0LlxuICovXG5cbnRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uKClcbiAgdmVuZG9yKCd0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbicsIGFyZ3VtZW50cylcblxuLypcbiAqIFZlbmRvciBcInRyYW5zaXRpb24tZGVsYXlcIiBzdXBwb3J0LlxuICovXG5cbnRyYW5zaXRpb24tZGVsYXkoKVxuICB2ZW5kb3IoJ3RyYW5zaXRpb24tZGVsYXknLCBhcmd1bWVudHMpXG5cbi8qXG4gKiBWZW5kb3IgXCJiYWNrZmFjZS12aXNpYmlsaXR5XCIgc3VwcG9ydC5cbiAqL1xuXG5iYWNrZmFjZS12aXNpYmlsaXR5KClcbiAgdmVuZG9yKCdiYWNrZmFjZS12aXNpYmlsaXR5JywgYXJndW1lbnRzLCBvbmx5OiB3ZWJraXQgbW96IG1zIG9mZmljaWFsKVxuXG4vKlxuICogVmVuZG9yIFwicGVyc3BlY3RpdmVcIiBzdXBwb3J0LlxuICovXG5cbnBlcnNwZWN0aXZlKClcbiAgaWYgbWl4aW5cbiAgICB2ZW5kb3IoJ3BlcnNwZWN0aXZlJywgYXJndW1lbnRzLCBvbmx5OiB3ZWJraXQgbW96IG1zIG9mZmljaWFsKVxuICBlbHNlXG4gICAgJ3BlcnNwZWN0aXZlKCVzKScgJSBhcmd1bWVudHNcblxuLypcbiAqIFZlbmRvciBcInBlcnNwZWN0aXZlLW9yaWdpblwiIHN1cHBvcnQuXG4gKi9cblxucGVyc3BlY3RpdmUtb3JpZ2luKClcbiAgdmVuZG9yKCdwZXJzcGVjdGl2ZS1vcmlnaW4nLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBtb3ogbXMgb2ZmaWNpYWwpXG5cbi8qXG4gKiBPcGFjaXR5IHdpdGggY29uZGl0aW9uYWwgSUUgc3VwcG9ydC5cbiAqL1xuXG5vcGFjaXR5KG4sIGFyZ3MuLi4pXG4gIG9wYWNpdHk6IG4gYXJnc1xuICBpZiBzdXBwb3J0LWZvci1pZVxuICAgIGlmIG4gPT0gaW5oZXJpdCBvciBuID09IGluaXRpYWxcbiAgICAgIC1tcy1maWx0ZXI6IG4gYXJnc1xuICAgICAgZmlsdGVyOiBuIGFyZ3NcbiAgICBlbHNlXG4gICAgICB2YWwgPSByb3VuZChuICogMTAwKVxuICAgICAgaWYgdmFsID09IDEwMFxuICAgICAgICAtbXMtZmlsdGVyOiBub25lIGFyZ3NcbiAgICAgICAgZmlsdGVyOiBub25lIGFyZ3NcbiAgICAgIGVsc2VcbiAgICAgICAgLW1zLWZpbHRlcjogJ1wicHJvZ2lkOkRYSW1hZ2VUcmFuc2Zvcm0uTWljcm9zb2Z0LkFscGhhKE9wYWNpdHk9JXMpXCInICUgdmFsIGFyZ3NcbiAgICAgICAgZmlsdGVyOiAnYWxwaGEob3BhY2l0eT0lcyknICUgdmFsIGFyZ3NcblxuLypcbiAqIFZlbmRvciBcInRleHQtc2l6ZS1hZGp1c3RcIlxuICovXG5cbnRleHQtc2l6ZS1hZGp1c3QoKVxuICB2ZW5kb3IoJ3RleHQtc2l6ZS1hZGp1c3QnLCBhcmd1bWVudHMpXG5cbi8qXG4gKiBBbGlhcyB0aGUgXCJ3aGl0ZS1zcGFjZVwiIHByb3BlcnR5LlxuICovXG5cbndoaXRlc3BhY2UoKVxuICB3aGl0ZS1zcGFjZTogYXJndW1lbnRzXG5cbi8qXG4gKiBWZW5kb3IgXCJib3gtc2l6aW5nXCIgc3VwcG9ydC5cbiAqL1xuXG5ib3gtc2l6aW5nKClcbiAgdmVuZG9yKCdib3gtc2l6aW5nJywgYXJndW1lbnRzLCBvbmx5OiB3ZWJraXQgbW96IG9mZmljaWFsKVxuXG4vKlxuICogVmVuZG9yIFwiYm94LW9yaWVudFwiIHN1cHBvcnQuXG4gKi9cblxuYm94LW9yaWVudCgpXG4gIHZlbmRvcignYm94LW9yaWVudCcsIGFyZ3VtZW50cywgb25seTogd2Via2l0IG1veiBvZmZpY2lhbClcblxuLypcbiAqIFZlbmRvciBcImJveC1mbGV4LWdyb3VwXCIgc3VwcG9ydC5cbiAqL1xuXG5ib3gtZmxleC1ncm91cCgpXG4gIHZlbmRvcignYm94LWZsZXgtZ3JvdXAnLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBtb3ogb2ZmaWNpYWwpXG5cbi8qXG4gKiBWZW5kb3IgXCJib3gtb3JkaW5hbC1ncm91cFwiIHN1cHBvcnQuXG4gKi9cblxuYm94LW9yZGluYWwtZ3JvdXAoKVxuICB2ZW5kb3IoJ2JveC1vcmRpbmFsLWdyb3VwJywgYXJndW1lbnRzLCBvbmx5OiB3ZWJraXQgbW96IG1zIG9mZmljaWFsKVxuXG5cbi8qXG4gKiBWZW5kb3IgXCJib3gtYWxpZ25cIiBzdXBwb3J0LlxuICovXG5cbmJveC1hbGlnbigpXG4gIHZlbmRvcignYm94LWFsaWduJywgYXJndW1lbnRzLCBvbmx5OiB3ZWJraXQgbW96IG1zIG9mZmljaWFsKVxuXG4vKlxuICogVmVuZG9yIFwiYm94LXBhY2tcIiBzdXBwb3J0LlxuICovXG5cbmJveC1wYWNrKClcbiAgdmVuZG9yKCdib3gtcGFjaycsIGFyZ3VtZW50cywgb25seTogd2Via2l0IG1veiBtcyBvZmZpY2lhbClcblxuLypcbiAqIFZlbmRvciBcImJveC1kaXJlY3Rpb25cIiBzdXBwb3J0LlxuICovXG5cbmJveC1kaXJlY3Rpb24oKVxuICB2ZW5kb3IoJ2JveC1kaXJlY3Rpb24nLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBtb3ogbXMgb2ZmaWNpYWwpXG5cbi8qXG4gKiBWZW5kb3IgXCJhbmltYXRpb25cIiBzdXBwb3J0LlxuICovXG5cbmFuaW1hdGlvbigpXG4gIHZlbmRvcignYW5pbWF0aW9uJywgYXJndW1lbnRzKVxuXG5cbi8qXG4gKiBWZW5kb3IgXCJhbmltYXRpb24tbmFtZVwiIHN1cHBvcnQuXG4gKi9cblxuYW5pbWF0aW9uLW5hbWUoKVxuICB2ZW5kb3IoJ2FuaW1hdGlvbi1uYW1lJywgYXJndW1lbnRzKVxuXG4vKlxuICogVmVuZG9yIFwiYW5pbWF0aW9uLWR1cmF0aW9uXCIgc3VwcG9ydC5cbiAqL1xuXG5hbmltYXRpb24tZHVyYXRpb24oKVxuICB2ZW5kb3IoJ2FuaW1hdGlvbi1kdXJhdGlvbicsIGFyZ3VtZW50cylcblxuLypcbiAqIFZlbmRvciBcImFuaW1hdGlvbi1kZWxheVwiIHN1cHBvcnQuXG4gKi9cblxuYW5pbWF0aW9uLWRlbGF5KClcbiAgdmVuZG9yKCdhbmltYXRpb24tZGVsYXknLCBhcmd1bWVudHMpXG5cbi8qXG4gKiBWZW5kb3IgXCJhbmltYXRpb24tZGlyZWN0aW9uXCIgc3VwcG9ydC5cbiAqL1xuXG5hbmltYXRpb24tZGlyZWN0aW9uKClcbiAgdmVuZG9yKCdhbmltYXRpb24tZGlyZWN0aW9uJywgYXJndW1lbnRzKVxuXG4vKlxuICogVmVuZG9yIFwiYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudFwiIHN1cHBvcnQuXG4gKi9cblxuYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudCgpXG4gIHZlbmRvcignYW5pbWF0aW9uLWl0ZXJhdGlvbi1jb3VudCcsIGFyZ3VtZW50cylcblxuLypcbiAqIFZlbmRvciBcImFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb25cIiBzdXBwb3J0LlxuICovXG5cbmFuaW1hdGlvbi10aW1pbmctZnVuY3Rpb24oKVxuICB2ZW5kb3IoJ2FuaW1hdGlvbi10aW1pbmctZnVuY3Rpb24nLCBhcmd1bWVudHMpXG5cbi8qXG4gKiBWZW5kb3IgXCJhbmltYXRpb24tcGxheS1zdGF0ZVwiIHN1cHBvcnQuXG4gKi9cblxuYW5pbWF0aW9uLXBsYXktc3RhdGUoKVxuICB2ZW5kb3IoJ2FuaW1hdGlvbi1wbGF5LXN0YXRlJywgYXJndW1lbnRzKVxuXG4vKlxuICogVmVuZG9yIFwiYW5pbWF0aW9uLWZpbGwtbW9kZVwiIHN1cHBvcnQuXG4gKi9cblxuYW5pbWF0aW9uLWZpbGwtbW9kZSgpXG4gIHZlbmRvcignYW5pbWF0aW9uLWZpbGwtbW9kZScsIGFyZ3VtZW50cylcblxuLypcbiAqIFZlbmRvciBcImh5cGhlbnNcIiBzdXBwb3J0LlxuICovXG5cbmh5cGhlbnMoKVxuICB2ZW5kb3IoJ2h5cGhlbnMnLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBtb3ogbXMgb2ZmaWNpYWwpXG5cbi8qXG4gKiBWZW5kb3IgXCJhcHBlYXJhbmNlXCIgc3VwcG9ydC5cbiAqL1xuXG5hcHBlYXJhbmNlKClcbiAgdmVuZG9yKCdhcHBlYXJhbmNlJywgYXJndW1lbnRzLCBvbmx5OiB3ZWJraXQgbW96IG9mZmljaWFsKVxuXG4vKlxuICogVmVuZG9yIFwidGFiLXNpemVcIiBzdXBwb3J0LlxuICovXG5cbnRhYi1zaXplKClcbiAgdmVuZG9yKCd0YWItc2l6ZScsIGFyZ3VtZW50cywgb25seTogbW96IG8gb2ZmaWNpYWwpXG5cbi8qXG4gKiBWZW5kb3IgXCJvdmVyZmxvdy1zY3JvbGxpbmdcIiBzdXBwb3J0LlxuICovXG5cbm92ZXJmbG93LXNjcm9sbGluZygpXG4gIHZlbmRvcignb3ZlcmZsb3ctc2Nyb2xsaW5nJywgYXJndW1lbnRzLCBvbmx5OiB3ZWJraXQgb2ZmaWNpYWwpXG5cbi8qXG4gKiBWZW5kb3IgXCJ0ZXh0LW92ZXJmbG93XCIgc3VwcG9ydCwgLCAtby0gZm9yIG9wZXJhIDkuKiAtIDEwLipcbiAqL1xuXG50ZXh0LW92ZXJmbG93KClcbiAgdmVuZG9yKCd0ZXh0LW92ZXJmbG93JywgYXJndW1lbnRzLCBvbmx5OiBvZmZpY2lhbCBvKVxuXG4vKlxuICogVmVuZG9yIFwidGV4dC1zaXplLWFkanVzdFwiIHN1cHBvcnQuXG4gKi9cbnRleHQtc2l6ZS1hZGp1c3QoKVxuICB2ZW5kb3IoJ3RleHQtc2l6ZS1hZGp1c3QnLCBhcmd1bWVudHMsIG9ubHk6IG9mZmljaWFsIHdlYmtpdCBtcylcblxuLypcbiAqIFZlbmRvciBcImZvbnQtc21vb3RoaW5nXCIgc3VwcG9ydCwgd2Via2l0IG9ubHkuXG4gKi9cbmZvbnQtc21vb3RoaW5nKClcbiAgdmVuZG9yKCdmb250LXNtb290aGluZycsIGFyZ3VtZW50cywgb25seTogd2Via2l0KVxuXG5cbi8qKlxuICogVmVuZG9yIGlucHV0LXBsYWNlaG9sZGVyL3BsYWNlaG9sZGVyIHN1cHBvcnQuXG4gKlxuICogRXhhbXBsZXM6XG4gKiAgICAvLyBEZWZhdWx0IHN5bnRheFxuICogICAgYm9keVxuICogICAgICBwbGFjZWhvbGRlcihjb2xvciAjMzMzLCBmb250LXdlaWdodCBub3JtYWwpXG4gKlxuICogICAgLy8gVGhlIGNvbW1hIGlzIGltcG9ydGFudFxuICogICAgLnBsYWNlaG9sZGVyLXJlZFxuICogICAgICBwbGFjZWhvbGRlcihjb2xvciByZWQsKVxuICpcbiAqICAgIC8vIFdlIGNhbiBwYXNzIGEgZnVuY3Rpb25cbiAqICAgIGdyZWVuLXBsYWNlaG9sZGVyKClcbiAqICAgICAgY29sb3IgZ3JlZW5cbiAqICAgIC5wbGFjZWhvbGRlci1ncmVlblxuICogICAgICBwbGFjZWhvbGRlcihncmVlbi1wbGFjZWhvbGRlcilcbiAqXG4gKiAgICAvLyBXZSBjYW4gcGFzcyBhIGhhc2hcbiAqICAgIHRleHRhcmVhXG4gKiAgICAgIHBsYWNlaG9sZGVyKChmb250LXN0eWxlIGl0YWxpYykgKGZvbnQtd2VpZ2h0IGJvbGQpIChwYWRkaW5nICc0cHggMTBweCcpKVxuICovXG5wbGFjZWhvbGRlcigpXG4gIGZvciB2IGluICc6LXdlYmtpdC1pbnB1dCcgJy1tb3onICc6LW1veicgJy1tcy1pbnB1dCdcbiAgICAmOnt2fS1wbGFjZWhvbGRlclxuICAgICAgZm9yIHBhaXIgaW4gYXJndW1lbnRzXG4gICAgICAgIGlmIHR5cGVvZihwYWlyKSA9PSAnZnVuY3Rpb24nXG4gICAgICAgICAgcGFpcigpXG4gICAgICAgIGVsc2UgaWYgcGFpciBpcyBub3QgbnVsbCAmJiBwYWlyWzBdIGlzIG5vdCBudWxsXG4gICAgICAgICAge3BhaXJbMF19OiB0eXBlKHBhaXJbMV0pID09ICdzdHJpbmcnID8gcyhwYWlyWzFdKSA6IHBhaXJbMV1cbmlucHV0LXBsYWNlaG9sZGVyID0gcGxhY2Vob2xkZXJcblxuLypcbiAqIFZlbmRvciBiYWNrZ3JvdW5kIHN1cHBvcnQgKGdyYWRpZW50cykuXG4gKi9cblxuYmFja2dyb3VuZCgpXG4gIGlmIG1hdGNoKCctZ3JhZGllbnRcXCgnLCAnJythcmd1bWVudHMpXG4gICAgdmVuZG9yKCdiYWNrZ3JvdW5kJywgYXJndW1lbnRzLCB2ZW5kb3ItcHJvcGVydHk6IGZhbHNlKVxuICBlbHNlXG4gICAgYmFja2dyb3VuZCBhcmd1bWVudHNcblxuYmFja2dyb3VuZC1pbWFnZSgpXG4gIGlmIG1hdGNoKCctZ3JhZGllbnRcXCgnLCAnJythcmd1bWVudHMpXG4gICAgdmVuZG9yKCdiYWNrZ3JvdW5kLWltYWdlJywgYXJndW1lbnRzLCB2ZW5kb3ItcHJvcGVydHk6IGZhbHNlKVxuICBlbHNlXG4gICAgYmFja2dyb3VuZC1pbWFnZSBhcmd1bWVudHNcblxuY3Vyc29yKClcbiAgaWYgbWF0Y2goJy1ncmFkaWVudFxcKCcsICcnK2FyZ3VtZW50cylcbiAgICB2ZW5kb3IoJ2N1cnNvcicsIGFyZ3VtZW50cywgdmVuZG9yLXByb3BlcnR5OiBmYWxzZSlcbiAgZWxzZVxuICAgIGN1cnNvciBhcmd1bWVudHNcblxubGlzdC1zdHlsZSgpXG4gIGlmIG1hdGNoKCctZ3JhZGllbnRcXCgnLCAnJythcmd1bWVudHMpXG4gICAgdmVuZG9yKCdsaXN0LXN0eWxlJywgYXJndW1lbnRzLCB2ZW5kb3ItcHJvcGVydHk6IGZhbHNlKVxuICBlbHNlXG4gICAgbGlzdC1zdHlsZSBhcmd1bWVudHNcblxubGlzdC1zdHlsZS1pbWFnZSgpXG4gIGlmIG1hdGNoKCctZ3JhZGllbnRcXCgnLCAnJythcmd1bWVudHMpXG4gICAgdmVuZG9yKCdsaXN0LXN0eWxlLWltYWdlJywgYXJndW1lbnRzLCB2ZW5kb3ItcHJvcGVydHk6IGZhbHNlKVxuICBlbHNlXG4gICAgbGlzdC1zdHlsZS1pbWFnZSBhcmd1bWVudHNcbiIsIi8qXG4gKiBPdmVyZmxvdyB1dGlsaXR5LiBNYXBzIHRvIHJlZ3VsYXIgb3ZlcmZsb3csIGFuZCBhZGRzIGFuIGVsbGlwc2lzIHZhbHVlLlxuICpcbiAqIFN5bm9wc2lzOlxuICpcbiAqICAgb3ZlcmZsb3c6IDx0eXBlPlxuICpcbiAqIEV4YW1wbGVzOlxuICpcbiAqICAgICBvdmVyZmxvdzogYXV0b1xuICogICAgIG92ZXJmbG93OiBoaWRkZW5cbiAqICAgICBvdmVyZmxvdzogZWxsaXBzaXNcbiAqXG4gKi9cblxub3ZlcmZsb3coKVxuICBpZiBhcmd1bWVudHNbMF0gPT0gZWxsaXBzaXNcbiAgICBlbGxpcHNpcygpXG4gIGVsc2VcbiAgICBvdmVyZmxvdzogYXJndW1lbnRzXG4iLCIvKlxuICogYm9yZGVyOiA8Y29sb3I+XG4gKiBib3JkZXI6IC4uLlxuICovXG5cbmJvcmRlcihjb2xvciwgYXJncy4uLilcbiAgaWYgY29sb3IgaXMgYSAnY29sb3InXG4gICAgYm9yZGVyOiAxcHggc29saWQgY29sb3IgYXJnc1xuICBlbHNlXG4gICAgYm9yZGVyOiBhcmd1bWVudHNcbiIsIi8qXG4gKiBWZW5kb3IgXCJkaXNwbGF5OiBmbGV4XCIgc3VwcG9ydCB3aXRoIGZhbGxiYWNrIHRvIG9ic29sZXRlIHZlcnNpb25zLlxuICovXG5cbmZsZXgtdmVyc2lvbiA/PSBib3ggZmxleFxuXG4vL1xuLy8gMS4gRGlzcGxheSB2YWx1ZXNcbi8vICAgIC0gaHR0cDovL3d3dy53My5vcmcvVFIvY3NzMy1mbGV4Ym94LyNmbGV4LWNvbnRhaW5lcnNcbi8vXG5kaXNwbGF5KHR5cGUsIGFyZ3MuLi4pXG4gIGlmIGZsZXggPT0gdHlwZSB8fCBpbmxpbmUtZmxleCA9PSB0eXBlXG4gICAgaWYgYm94IGluIGZsZXgtdmVyc2lvblxuICAgICAgaWYgZmxleCA9PSB0eXBlXG4gICAgICAgIGRpc3BsYXk6IC1tcy1mbGV4Ym94IGFyZ3NcbiAgICAgICAgZGlzcGxheTogdmVuZG9yLXZhbHVlKGJveCBhcmdzLCBvbmx5OiBtb3ogd2Via2l0KVxuICAgICAgZWxzZVxuICAgICAgICBkaXNwbGF5OiAtbXMtaW5saW5lLWZsZXhib3ggYXJnc1xuICAgICAgICBkaXNwbGF5OiB2ZW5kb3ItdmFsdWUoaW5saW5lLWJveCBhcmdzLCBvbmx5OiBtb3ogd2Via2l0KVxuICAgIGlmIGZsZXggaW4gZmxleC12ZXJzaW9uXG4gICAgICBkaXNwbGF5OiB2ZW5kb3ItdmFsdWUoYXJndW1lbnRzLCBvbmx5OiB3ZWJraXQgb2ZmaWNpYWwpIC8vIG92ZXJ3cml0ZXMgb2xkIHdlYmtpdFxuICBlbHNlXG4gICAgZGlzcGxheTogYXJndW1lbnRzXG5cbi8qXG4gKiBOZXcgc3ludGF4IGZvciBicm93c2VycyBsaWtlIEdvb2dsZSBDaHJvbWUuXG4gKiBQbHVzIGEgdHJhbnNsYXRpb24gdG8gdGhlIG9sZCBzeW50YXgsIGlmIHBvc3NpYmxlLlxuICovXG5cblxuLy9cbi8vIDUuIE9yZGVyaW5nIGFuZCBPcmllbnRhdGlvblxuLy8gICAgLSBodHRwOi8vd3d3LnczLm9yZy9UUi9jc3MzLWZsZXhib3gvI29yZGVyaW5nLWFuZC1vcmllbnRhdGlvblxuLy9cbi1mbGV4LW9ic29sZXRlLWRpcmVjdGlvbihkaXJlY3Rpb24pXG4gIGlmIGJveCBpbiBmbGV4LXZlcnNpb25cbiAgICBpZiByb3ctcmV2ZXJzZSA9PSBkaXJlY3Rpb24gfHwgY29sdW1uLXJldmVyc2UgPT0gZGlyZWN0aW9uXG4gICAgICB2ZW5kb3IoJ2JveC1kaXJlY3Rpb24nLCByZXZlcnNlLCBpZ25vcmU6IG1zIG9mZmljaWFsKVxuXG4gICAgaWYgcm93ID09IGRpcmVjdGlvbiB8fCByb3ctcmV2ZXJzZSA9PSBkaXJlY3Rpb25cbiAgICAgIHZlbmRvcignYm94LW9yaWVudCcsIGhvcml6b250YWwsIGlnbm9yZTogbXMgb2ZmaWNpYWwpXG4gICAgZWxzZSBpZiBjb2x1bW4gPT0gZGlyZWN0aW9uIHx8IGNvbHVtbi1yZXZlcnNlID09IGRpcmVjdGlvblxuICAgICAgdmVuZG9yKCdib3gtb3JpZW50JywgdmVydGljYWwsIGlnbm9yZTogbXMgb2ZmaWNpYWwpXG5cbi1mbGV4LW9ic29sZXRlLXdyYXAodmFsdWUpXG4gIGlmIGJveCBpbiBmbGV4LXZlcnNpb25cbiAgICAvLyBXQVJOOiB3cmFwLXJldmVyc2UgZG9lcyBub3QgaGF2ZSBhIGJveCBlcXVpdmFsZW50LiBUaGlzIHdpbGwgcmVuZGVyIGluIGRpZmZlcmVudCBtYW5uZXJzXG4gICAgLy8gICAgb24gYm94IHZzLiBmbGV4IHZhbHVlcy5cbiAgICBpZiAnd3JhcCcgPT0gdmFsdWUgfHwgd3JhcC1yZXZlcnNlID09IHZhbHVlXG4gICAgICB2ZW5kb3IoJ2JveC1saW5lcycsIG11bHRpcGxlLCBpZ25vcmU6IG1zIG9mZmljaWFsKVxuICAgIGVsc2UgaWYgbm93cmFwID09IHZhbHVlXG4gICAgICB2ZW5kb3IoJ2JveC1saW5lcycsIHNpbmdsZSwgaWdub3JlOiBtcyBvZmZpY2lhbClcblxuZmxleC1kaXJlY3Rpb24oZGlyZWN0aW9uKVxuICAvLyBvYnNvbGV0ZVxuICAtZmxleC1vYnNvbGV0ZS1kaXJlY3Rpb24oZGlyZWN0aW9uKVxuXG4gIC8vIG5ld1xuICBpZiBmbGV4IGluIGZsZXgtdmVyc2lvblxuICAgIHZlbmRvcignZmxleC1kaXJlY3Rpb24nLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBtcyBvZmZpY2lhbClcblxuZmxleC13cmFwKHZhbHVlKVxuICAvLyBvYnNvbGV0ZVxuICAtZmxleC1vYnNvbGV0ZS13cmFwKHZhbHVlKVxuXG4gIGlmIGZsZXggaW4gZmxleC12ZXJzaW9uXG4gICAgdmVuZG9yKCdmbGV4LXdyYXAnLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBtcyBvZmZpY2lhbClcblxuZmxleC1mbG93KClcbiAgLy8gb2Jzb2xldGVcbiAgLWZsZXgtb2Jzb2xldGUtZGlyZWN0aW9uKGFyZ3VtZW50c1swXSlcbiAgLWZsZXgtb2Jzb2xldGUtZGlyZWN0aW9uKGFyZ3VtZW50c1sxXSlcbiAgLWZsZXgtb2Jzb2xldGUtd3JhcChhcmd1bWVudHNbMF0pXG4gIC1mbGV4LW9ic29sZXRlLXdyYXAoYXJndW1lbnRzWzFdKVxuXG4gIC8vIG5ld1xuICBpZiBmbGV4IGluIGZsZXgtdmVyc2lvblxuICAgIHZlbmRvcignZmxleC1mbG93JywgYXJndW1lbnRzLCBvbmx5OiB3ZWJraXQgbXMgb2ZmaWNpYWwpXG5cblxub3JkZXIoKVxuICAvLyBvYnNvbGV0ZVxuICBpZiBib3ggaW4gZmxleC12ZXJzaW9uXG4gICAgdmVuZG9yKCdib3gtb3JkaW5hbC1ncm91cCcsIGFyZ3VtZW50cywgaWdub3JlOiBtcyBvZmZpY2lhbClcblxuICAvLyBuZXdcbiAgaWYgZmxleCBpbiBmbGV4LXZlcnNpb25cbiAgICB2ZW5kb3IoJ2ZsZXgtb3JkZXInLCBhcmd1bWVudHMsIG9ubHk6IG1zKVxuICAgIHZlbmRvcignb3JkZXInLCBhcmd1bWVudHMsIG9ubHk6IHdlYmtpdCBvZmZpY2lhbClcblxuXG4vL1xuLy8gNy4gRmxleGliaWxpdHlcbi8vICAgIC0gaHR0cDovL3d3dy53My5vcmcvVFIvY3NzMy1mbGV4Ym94LyNmbGV4aWJpbGl0eVxuLy9cbmZsZXgtZ3Jvdyhncm93dGgpXG4gIC8vIG9ic29sZXRlXG4gIGlmIGJveCBpbiBmbGV4LXZlcnNpb25cbiAgICB2ZW5kb3IoJ2JveC1mbGV4JywgZ3Jvd3RoKVxuXG4gIC8vIG5ld1xuICBpZiBmbGV4IGluIGZsZXgtdmVyc2lvblxuICAgIHZlbmRvcignZmxleC1ncm93JywgYXJndW1lbnRzLCBvbmx5OiB3ZWJraXQgb2ZmaWNpYWwpXG5cbmZsZXgtYmFzaXMoKVxuICBpZiBmbGV4IGluIGZsZXgtdmVyc2lvblxuICAgIHZlbmRvcignZmxleC1iYXNpcycsIGFyZ3VtZW50cywgb25seTogd2Via2l0IG9mZmljaWFsKVxuXG5mbGV4LXNocmluaygpXG4gIGlmIGZsZXggaW4gZmxleC12ZXJzaW9uXG4gICAgdmVuZG9yKCdmbGV4LXNocmluaycsIGFyZ3VtZW50cywgb25seTogd2Via2l0IG9mZmljaWFsKVxuXG5mbGV4KGdyb3d0aClcblxuICAvLyBvYnNvbGV0ZVxuICBpZiBib3ggaW4gZmxleC12ZXJzaW9uXG4gICAgc2hyaW5rID0gMVxuXG4gICAgaWYgbm9uZSA9PSBncm93dGggfHwgaW5pdGlhbCA9PSBncm93dGhcbiAgICAgIC8vIFdlbGwga25vd24gdmFsdWVzXG4gICAgICBzaHJpbmsgPSAwIGlmIG5vbmUgPT0gZ3Jvd3RoXG4gICAgICBncm93dGggPSAwXG4gICAgZWxzZSBpZiBpcy13aWR0aChncm93dGgpID09IHRydWVcbiAgICAgIC8vIEJhc2lzIGlzIGRlZmluZWQgYXMgdGhlIGZpcnN0IHBhcmFtZXRlclxuICAgICAgZ3Jvd3RoID0gYXJndW1lbnRzWzFdIHx8IDBcbiAgICAgIHNocmluayA9IGFyZ3VtZW50c1syXSBpZiAzIDw9IGxlbmd0aChhcmd1bWVudHMpXG4gICAgZWxzZSBpZiBhcmd1bWVudHNbMV0gJiYgaXMtd2lkdGgoYXJndW1lbnRzWzFdKSA9PSBmYWxzZVxuICAgICAgLy8gR3Jvd3RoIGlzIGZpcnN0IGFuZCBzaHJpbmsgaXMgc2Vjb25kXG4gICAgICBzaHJpbmsgPSBhcmd1bWVudHNbMV1cblxuICAgIC8vIFNpbmNlIHdlIGNhbid0IG1ha2UgdGhlIGRpc3RpbmN0aW9uIGJldHdlZW4gZ3Jvd2luZyBhbmQgc2hyaW5raW5nIGluIHRoZSBib3ggbW9kZWwsIHRha2VcbiAgICAvLyB0aGUgb25lIHRoYXQgcHJvdmlkZXMgdGhlIG1vc3QgZmxleGliaWxpdHkuXG4gICAgdmVuZG9yKCdib3gtZmxleCcsIG1heChncm93dGgsIHNocmluayksIGlnbm9yZTogbXMpXG5cbiAgLy8gbmV3XG4gIGlmIGZsZXggaW4gZmxleC12ZXJzaW9uXG4gICAgdmVuZG9yKCdmbGV4JywgYXJndW1lbnRzLCBvbmx5OiB3ZWJraXQgbXMgb2ZmaWNpYWwpXG5cblxuLy8gY29udmVydHMgdGhlIGp1c3RpZmljYXRpb24gYWxpZ25tZW50XG4tY29udmVydC1qdXN0aWZ5KGFsaWduKVxuICBpZiBmbGV4LXN0YXJ0ID09IGFsaWduXG4gICAgcmV0dXJuIHN0YXJ0XG4gIGVsc2UgaWYgZmxleC1lbmQgPT0gYWxpZ25cbiAgICByZXR1cm4gZW5kXG4gIGVsc2UgaWYgc3BhY2UtYXJvdW5kID09IGFsaWduXG4gICAgcmV0dXJuIGRpc3RyaWJ1dGVcbiAgZWxzZSBpZiBzcGFjZS1iZXR3ZWVuID09IGFsaWduXG4gICAgcmV0dXJuIGp1c3RpZnlcbiAgZWxzZVxuICAgIHJldHVybiBhbGlnblxuXG4vL1xuLy8gOC4gQWxpZ25tZW50XG4vLyAgICAtIGh0dHA6Ly93d3cudzMub3JnL1RSL2NzczMtZmxleGJveC8jYWxpZ25tZW50XG4vL1xuanVzdGlmeS1jb250ZW50KGFsaWduKVxuICAvLyBvYnNvbGV0ZVxuICBpZiBib3ggaW4gZmxleC12ZXJzaW9uXG4gICAgdmVuZG9yKCdib3gtcGFjaycsIC1jb252ZXJ0LWp1c3RpZnkoYWxpZ24pLCBpZ25vcmU6IG1zIG9mZmljaWFsKVxuXG4gIC8vIG5ld1xuICBpZiBmbGV4IGluIGZsZXgtdmVyc2lvblxuICAgIHZlbmRvcignZmxleC1wYWNrJywgLWNvbnZlcnQtanVzdGlmeShhbGlnbiksIG9ubHk6IG1zKVxuICAgIHZlbmRvcignanVzdGlmeS1jb250ZW50JywgYWxpZ24sIG9ubHk6IHdlYmtpdCBvZmZpY2lhbClcblxuYWxpZ24tY29udGVudChhbGlnbilcbiAgLy8gV0FSTjogT2Jzb2xldGUgc3BlYyBkb2VzIG5vdCBhbGxvdyBmb3IgYWRqdXN0bWVudCBoZXJlXG4gIGlmIGZsZXggaW4gZmxleC12ZXJzaW9uXG4gICAgdmVuZG9yKCdmbGV4LWxpbmUtcGFjaycsIC1jb252ZXJ0LWp1c3RpZnkoYWxpZ24pLCBvbmx5OiBtcylcbiAgICB2ZW5kb3IoJ2FsaWduLWNvbnRlbnQnLCBhbGlnbiwgb25seTogd2Via2l0IG9mZmljaWFsKVxuXG4vLyBjb252ZXJ0cyBhbGlnbm1lbnQgZnJvbSAnZmxleCcgdG8gbm9ybWFsIHZhbHVlXG4tY29udmVydC1hbGlnbm1lbnQoYWxpZ24pXG4gIGlmIGZsZXgtc3RhcnQgPT0gYWxpZ25cbiAgICByZXR1cm4gc3RhcnRcbiAgZWxzZSBpZiBmbGV4LWVuZCA9PSBhbGlnblxuICAgIHJldHVybiBlbmRcbiAgZWxzZVxuICAgIHJldHVybiBhbGlnblxuXG5hbGlnbi1pdGVtcyhhbGlnbilcbiAgLy8gb2Jzb2xldGVcbiAgaWYgYm94IGluIGZsZXgtdmVyc2lvblxuICAgIHZlbmRvcignYm94LWFsaWduJywgLWNvbnZlcnQtYWxpZ25tZW50KGFsaWduKSwgaWdub3JlOiBtcyBvZmZpY2lhbClcblxuICAvLyBuZXdcbiAgaWYgZmxleCBpbiBmbGV4LXZlcnNpb25cbiAgICB2ZW5kb3IoJ2ZsZXgtYWxpZ24nLCAtY29udmVydC1hbGlnbm1lbnQoYWxpZ24pLCBvbmx5OiBtcylcbiAgICB2ZW5kb3IoJ2FsaWduLWl0ZW1zJywgYXJndW1lbnRzLCBvbmx5OiB3ZWJraXQgb2ZmaWNpYWwpXG5cbmFsaWduLXNlbGYoYWxpZ24pXG4gIC8vIFdBUk46IE9ic29sZXRlIHNwZWMgZG9lcyBub3QgYWxsb3cgZm9yIG92ZXJyaWRpbmcgYWxpZ25tZW50IG9uIGluZGl2aWR1YWwgaXRlbXMuXG4gIGlmIGZsZXggaW4gZmxleC12ZXJzaW9uXG4gICAgdmVuZG9yKCdhbGlnbi1zZWxmJywgYWxpZ24sIG9ubHk6IHdlYmtpdCBvZmZpY2lhbClcbiAgICB2ZW5kb3IoJ2ZsZXgtaXRlbS1hbGlnbicsIC1jb252ZXJ0LWFsaWdubWVudChhbGlnbiksIG9ubHk6IG1zKVxuIl19 */
