/**
 * Breakpoints
 */
/**
 * Input capabilities
 */
/********************************************************
* Touch devices
********************************************************/
body {
  visibility: inherit;
}

#basket {
  display: none;
}

body.signed-in #basket,
body.accounts-disabled #basket {
  display: block;
}

#basket .basket-container {
  margin-bottom: 1rem;
}

body:not(.fullscreen) #basket .basket-container.loading {
  position: relative;
}

#basket .basket-container.loading::after {
  content: '';
  position: absolute;
  top: 50%;
  left: 50%;
  margin-top: -30px;
  margin-left: -30px;
  width: 50px;
  height: 50px;
  border-radius: 50px;
  border: 5px solid rgba(255, 255, 255, 0.25);
  border-top-color: white;
  animation: loading 1s ease infinite;
}

@keyframes loading {
  0% {
    transform: rotate(0deg);
  }
  100% {
    transform: rotate(360deg);
  }
}

#basket .basket-container th {
  text-align: left;
}

#basket .basket-container th, #basket .basket-container td {
  padding: 4px 8px;
  word-break: break-word;
}

#basket .basket-container .total {
  font-weight: bold;
}

#basket .basket-container a.remove {
  text-decoration: underline;
  cursor: pointer;
}

/*# sourceMappingURL=data:application/json;base64,ewoJInZlcnNpb24iOiAzLAoJImZpbGUiOiAiLi4vd3d3L2Nzcy9teV9iYXNrZXQuY3NzIiwKCSJzb3VyY2VzIjogWwoJCSIuLi93d3cvc2Nzcy9teV9iYXNrZXQuc2NzcyIsCgkJIi4uL3d3dy9zY3NzL0BpbmNsdWRlL19jb21tb24uc2NzcyIsCgkJIi4uL3d3dy9zY3NzL0BpbmNsdWRlL192YXJpYWJsZXMuc2NzcyIsCgkJIi4uL3d3dy9zY3NzL0BpbmNsdWRlL19nZW5lcmFsX21peGlucy5zY3NzIiwKCQkiLi4vd3d3L3Njc3MvQGluY2x1ZGUvX21lZGlhLnNjc3MiLAoJCSIuLi93d3cvc2Nzcy9AaW5jbHVkZS9fbXEuc2NzcyIsCgkJIi4uL3d3dy9zY3NzL0BpbmNsdWRlL190b3VjaC5zY3NzIiwKCQkiLi4vd3d3L3Njc3MvQGluY2x1ZGUvY29tcG9uZW50L19sb2FkZXIuc2NzcyIKCV0sCgkic291cmNlc0NvbnRlbnQiOiBbCgkJIkBpbXBvcnQgXCJAaW5jbHVkZS9jb21tb25cIjtcbkBpbXBvcnQgXCJAaW5jbHVkZS9jb21wb25lbnQvbG9hZGVyXCI7XG5cbiNiYXNrZXR7XG4gIGRpc3BsYXk6IG5vbmU7XG5cbiAgQGF0LXJvb3Qge1xuICAgIGJvZHkuc2lnbmVkLWluICN7Jn0sXG4gICAgYm9keS5hY2NvdW50cy1kaXNhYmxlZCAjeyZ9e1xuICAgICAgZGlzcGxheTogYmxvY2s7XG4gICAgfVxuICB9XG5cbiAgLmJhc2tldC1jb250YWluZXJ7XG4gICAgbWFyZ2luLWJvdHRvbTogMXJlbTtcblxuICAgICYubG9hZGluZ3tcbiAgICAgIEBpbmNsdWRlIGxvYWRlcjtcbiAgICB9XG5cbiAgICB0aHtcbiAgICAgIHRleHQtYWxpZ246IGxlZnQ7XG4gICAgfVxuXG4gICAgdGgsIHRke1xuICAgICAgcGFkZGluZzogNHB4IDhweDtcbiAgICAgIHdvcmQtYnJlYWs6IGJyZWFrLXdvcmQ7XG4gICAgfVxuXG4gICAgLnRvdGFse1xuICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgfVxuXG4gICAgYS5yZW1vdmV7XG4gICAgICB0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTtcbiAgICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB9XG4gIH1cbn1cbiIsCgkJIi8vIENvbW1vbiBzdHlsZXNcbkBpbXBvcnQgXCJ2YXJpYWJsZXNcIjtcbkBpbXBvcnQgXCJnZW5lcmFsX21peGluc1wiO1xuQGltcG9ydCBcIm1lZGlhXCI7XG5AaW1wb3J0IFwidG91Y2hcIjtcblxuYm9keXtcbiAgdmlzaWJpbGl0eTogaW5oZXJpdDtcbn1cbiIsCgkJIi8vIFZhcmlhYmxlc1xuXG4kcGFnZS13aWR0aDogOTYwcHg7XG4kcmVzcG9uc2l2ZS1tZW51OiA3NzhweDtcblxuJGdyZXk6ICMyZjJmMmY7XG4kZGFyay1ncmVlbjogIzEzMTtcbiRncmVlbjogIzI4NWQxZTtcbiRibHVlOiAjMTk0MjRhO1xuJGxpZ2h0LWdyZWVuOiByZ2JhKDEyNCwgMTk3LCAxNDksIDAuNjUpO1xuJHJlZDogIzVjMWUxZTtcbiRkYXJrLXJlZDogIzY2MDAwMDtcblxuLy8gQm94IGdyYWRpZW50c1xuJGJveC1HcmFkLUhlaWdodDogMThweDtcblxuJGJveC1CRy1HcmV5OiAkZ3JleTtcbiRib3gtR3JhZC1VcHBlci1Ub3AtR3JleTogIzcxNzE3MTtcbiRib3gtR3JhZC1VcHBlci1Cb3R0b20tR3JleTogIzQyNDE0MTtcbiRib3gtR3JhZC1Mb3dlci1Ub3AtR3JleTogIzQwNDA0MDtcbiRib3gtR3JhZC1Mb3dlci1Cb3R0b20tR3JleTogIzJmMmYyZjtcblxuJGJveC1CRy1HcmVlbjogJGdyZWVuO1xuJGJveC1HcmFkLVVwcGVyLVRvcC1HcmVlbjogIzQ2OTkzNjtcbiRib3gtR3JhZC1VcHBlci1Cb3R0b20tR3JlZW46ICMzMDcwMjU7XG4kYm94LUdyYWQtTG93ZXItVG9wLUdyZWVuOiAjMzA3MjI1O1xuJGJveC1HcmFkLUxvd2VyLUJvdHRvbS1HcmVlbjogIzI4NWQxZTtcblxuJGJveC1CRy1CbHVlOiAjMTk0MjRhO1xuJGJveC1HcmFkLVVwcGVyLVRvcC1CbHVlOiAjMTI2MTY3O1xuJGJveC1HcmFkLVVwcGVyLUJvdHRvbS1CbHVlOiAjMTk0MjRhO1xuJGJveC1HcmFkLUxvd2VyLVRvcC1CbHVlOiAjMTk0MjRhO1xuJGJveC1HcmFkLUxvd2VyLUJvdHRvbS1CbHVlOiAjMTk0MjRhO1xuXG5cbiRib3gtQkctRGFyay1HcmVlbjogJGRhcmstZ3JlZW47XG4kYm94LUdyYWQtVXBwZXItVG9wLURhcmstR3JlZW46ICMyZTgwMmU7XG4kYm94LUdyYWQtVXBwZXItQm90dG9tLURhcmstR3JlZW46ICMxNzQ1MTc7XG4kYm94LUdyYWQtTG93ZXItVG9wLURhcmstR3JlZW46ICMxODQ3MTk7XG4kYm94LUdyYWQtTG93ZXItQm90dG9tLURhcmstR3JlZW46ICMxMTMzMTE7XG5cbiRib3gtQkctUmVkOiAkcmVkO1xuJGJveC1HcmFkLVVwcGVyLVRvcC1SZWQ6ICNhODNiM2I7XG4kYm94LUdyYWQtVXBwZXItQm90dG9tLVJlZDogIzZlMjUyNTtcbiRib3gtR3JhZC1Mb3dlci1Ub3AtUmVkOiAjNzAyNTI1O1xuJGJveC1HcmFkLUxvd2VyLUJvdHRvbS1SZWQ6ICM1YzFlMWU7XG5cbiRtcS1icmVha3BvaW50LW1vYmlsZTogMzIwcHg7XG4kbXEtYnJlYWtwb2ludC10YWJsZXQ3aW5jaDogNjAwcHg7XG4kbXEtYnJlYWtwb2ludC10YWJsZXQ6IDc0MHB4O1xuJG1xLWJyZWFrcG9pbnQtZGVza3RvcDogOTgwcHg7XG4kbXEtYnJlYWtwb2ludC13aWRlOiAxMzAwcHg7XG4kbXEtYnJlYWtwb2ludC1kZXNrdG9wQWQ6IDgxMHB4O1xuJG1xLWJyZWFrcG9pbnQtbW9iaWxlTGFuZHNjYXBlOiA0ODBweDtcbiRtcS1icmVha3BvaW50LW1lZGl1bUxvZ286IDQ0MHB4O1xuJG1xLWJyZWFrcG9pbnQtc21hbGxMb2dvOiAzMjBweDtcbiRtcS1icmVha3BvaW50LWhlYWRlclNvY2lhbEljb25zOiA5NTRweDtcbiRtcS1icmVha3BvaW50LXBhZ2U6ICRwYWdlLXdpZHRoO1xuJG1xLWJyZWFrcG9pbnQtcmVzcG9uc2l2ZU1lbnU6ICRyZXNwb25zaXZlLW1lbnU7XG5cblxuLy8gQnJlYWtwb2ludHNcbiRtcS1icmVha3BvaW50czogKFxuICAgICAgICBtb2JpbGU6ICAkbXEtYnJlYWtwb2ludC1tb2JpbGUsXG4gICAgICAgIHRhYmxldDdpbmNoOiAgJG1xLWJyZWFrcG9pbnQtdGFibGV0N2luY2gsXG4gICAgICAgIHRhYmxldDogICRtcS1icmVha3BvaW50LXRhYmxldCxcbiAgICAgICAgZGVza3RvcDogJG1xLWJyZWFrcG9pbnQtZGVza3RvcCxcbiAgICAgICAgd2lkZTogJG1xLWJyZWFrcG9pbnQtd2lkZSxcblxuICAvLyBUd2Vha3BvaW50c1xuICAgICAgICBkZXNrdG9wQWQ6ICRtcS1icmVha3BvaW50LWRlc2t0b3BBZCxcbiAgICAgICAgbW9iaWxlTGFuZHNjYXBlOiAkbXEtYnJlYWtwb2ludC1tb2JpbGVMYW5kc2NhcGUsXG4gICAgICAgIHNtYWxsTG9nbzogJG1xLWJyZWFrcG9pbnQtc21hbGxMb2dvLFxuICAgICAgICBwYWdlOiAkbXEtYnJlYWtwb2ludC1wYWdlLFxuICAgICAgICByZXNwb25zaXZlTWVudTogJG1xLWJyZWFrcG9pbnQtcmVzcG9uc2l2ZU1lbnUsXG4gICAgICAgIGhlYWRlclNvY2lhbEljb25zOiAkbXEtYnJlYWtwb2ludC1oZWFkZXJTb2NpYWxJY29uc1xuKTtcblxuXG4vLyBUbyBlbmFibGUgc3VwcG9ydCBmb3IgYnJvd3NlcnMgdGhhdCBkbyBub3Qgc3VwcG9ydCBAbWVkaWEgcXVlcmllcyxcbi8vIChJRSA8PSA4LCBGaXJlZm94IDw9IDMsIE9wZXJhIDw9IDkpIHNldCAkbXEtcmVzcG9uc2l2ZSB0byBmYWxzZVxuLy8gQ3JlYXRlIGEgc2VwYXJhdGUgc3R5bGVzaGVldCBzZXJ2ZWQgZXhjbHVzaXZlbHkgdG8gdGhlc2UgYnJvd3NlcnMsXG4vLyBtZWFuaW5nIEBtZWRpYSBxdWVyaWVzIHdpbGwgYmUgcmFzdGVyaXplZCwgcmVseWluZyBvbiB0aGUgY2FzY2FkZSBpdHNlbGZcbiRtcS1yZXNwb25zaXZlOiB0cnVlO1xuXG4vLyBJZiB5b3Ugd2FudCB0byBkaXNwbGF5IHRoZSBjdXJyZW50bHkgYWN0aXZlIGJyZWFrcG9pbnQgaW4gdGhlIHRvcFxuLy8gcmlnaHQgY29ybmVyIG9mIHlvdXIgc2l0ZSBkdXJpbmcgZGV2ZWxvcG1lbnQsIGFkZCB0aGUgYnJlYWtwb2ludHNcbi8vIHRvIHRoaXMgbGlzdCwgb3JkZXJlZCBieSB3aWR0aCwgZS5nLiAobW9iaWxlLCB0YWJsZXQsIGRlc2t0b3ApLlxuLy8kbXEtc2hvdy1icmVha3BvaW50czogKG1vYmlsZSwgbW9iaWxlTGFuZHNjYXBlLCB0YWJsZXQsIGRlc2t0b3AsIHdpZGUpO1xuIiwKCQkiQG1peGluIGlXYWxrTW9iaWxlR3JhZGllbnR7XG4gIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sICNjOWRjZjQgMCUsIzgyYjVlYyAyMiUsIzI5OGFlMyA0NiUsIzNlYzFmNyA3MCUsIzNlYzFmNyAxMDAlKTtcbn1cblxuQG1peGluIGNlbnRyZVl7XG4gIHRvcDogNTAlO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTUwJSk7XG59XG5cbkBtaXhpbiBjZW50cmVYe1xuICBsZWZ0OiA1MCU7XG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcbn1cblxuQG1peGluIGNlbnRyZVhZe1xuICB0b3A6IDUwJTtcbiAgbGVmdDogNTAlO1xuICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVgoLTUwJSkgIHRyYW5zbGF0ZVkoLTUwJSk7XG59XG5cbkBtaXhpbiBncmV5X2dyYWRpZW50e1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCByZ2JhKDE4MSwgMTg5LCAyMDAsIDEpIDAlLCByZ2JhKDEzMCwgMTQwLCAxNDksIDEpIDM2JSwgcmdiYSg0MCwgNTIsIDU5LCAxKSAxMDAlKTtcbn1cblxuQG1peGluIGdyZWVuX2dyYWRpZW50e1xuICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCAjNGViOTRlIDAlLCAjMTA5MDEwIDM2JSwgIzA5M2UwOSAxMDAlKTtcbn1cblxuQG1peGluIGJveCgkYmcpe1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAkYmc7XG4gIGJvcmRlci1yYWRpdXM6NHB4O1xuICAmLCBhe1xuICAgIGNvbG9yOiB3aGl0ZTtcbiAgfVxufVxuXG5AbWl4aW4gYm94R3JhZGllbnQoJGJnLCAkdXBwZXItdG9wLCAkdXBwZXItYm90dG9tLCAkbG93ZXItdG9wLCAkbG93ZXItYm90dG9tLCAkaGVpZ2h0OiAkYm94LUdyYWQtSGVpZ2h0KXtcbiAgQGluY2x1ZGUgYm94KCRiZyk7XG4gIHotaW5kZXg6IDA7XG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcblxuICAmOmJlZm9yZXtcbiAgICBjb250ZW50OicnO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6ICRoZWlnaHQ7XG4gICAgbGVmdDogMDtcbiAgICB0b3A6IDA7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KCR1cHBlci10b3AsICR1cHBlci1ib3R0b20pO1xuICAgIGJvcmRlci1yYWRpdXM6IDRweCA0cHggMCAwO1xuICAgIHotaW5kZXg6IC0xO1xuICB9XG5cbiAgJjphZnRlcntcbiAgICBjb250ZW50OicnO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB3aWR0aDogMTAwJTtcbiAgICBoZWlnaHQ6ICRoZWlnaHQ7XG4gICAgbGVmdDogMDtcbiAgICB0b3A6ICRoZWlnaHQ7XG4gICAgYmFja2dyb3VuZDogbGluZWFyLWdyYWRpZW50KCRsb3dlci10b3AsICRsb3dlci1ib3R0b20pO1xuICAgIHotaW5kZXg6IC0xO1xuICB9XG5cbiAgPiAqe1xuICAgIHotaW5kZXg6IDI7XG5cbiAgICBAYXQtcm9vdCB7XG4gICAgICBib2R5Om5vdCguZnVsbHNjcmVlbikgI3smfSB7XG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuQG1peGluIGJveEdyYWRpZW50R3JleXtcbiAgQGluY2x1ZGUgYm94R3JhZGllbnQoJGJveC1CRy1HcmV5LCAkYm94LUdyYWQtVXBwZXItVG9wLUdyZXksICRib3gtR3JhZC1VcHBlci1Cb3R0b20tR3JleSwgJGJveC1HcmFkLUxvd2VyLVRvcC1HcmV5LCAkYm94LUdyYWQtTG93ZXItQm90dG9tLUdyZXkpO1xufVxuXG5AbWl4aW4gYm94R3JhZGllbnRHcmVlbntcbiAgQGluY2x1ZGUgYm94R3JhZGllbnQoJGJveC1CRy1HcmVlbiwgJGJveC1HcmFkLVVwcGVyLVRvcC1HcmVlbiwgJGJveC1HcmFkLVVwcGVyLUJvdHRvbS1HcmVlbiwgJGJveC1HcmFkLUxvd2VyLVRvcC1HcmVlbiwgJGJveC1HcmFkLUxvd2VyLUJvdHRvbS1HcmVlbik7XG59XG5cbkBtaXhpbiBib3hHcmFkaWVudEJsdWV7XG4gIEBpbmNsdWRlIGJveEdyYWRpZW50KCRib3gtQkctQmx1ZSwgJGJveC1HcmFkLVVwcGVyLVRvcC1CbHVlLCAkYm94LUdyYWQtVXBwZXItQm90dG9tLUJsdWUsICRib3gtR3JhZC1Mb3dlci1Ub3AtQmx1ZSwgJGJveC1HcmFkLUxvd2VyLUJvdHRvbS1CbHVlKTtcbn1cblxuQG1peGluIGJveEdyYWRpZW50RGFya0dyZWVue1xuICBAaW5jbHVkZSBib3hHcmFkaWVudCgkYm94LUJHLURhcmstR3JlZW4sICRib3gtR3JhZC1VcHBlci1Ub3AtRGFyay1HcmVlbiwgJGJveC1HcmFkLVVwcGVyLUJvdHRvbS1EYXJrLUdyZWVuLCAkYm94LUdyYWQtTG93ZXItVG9wLURhcmstR3JlZW4sICRib3gtR3JhZC1Mb3dlci1Cb3R0b20tRGFyay1HcmVlbik7XG59XG5cbkBtaXhpbiBib3hHcmFkaWVudFJlZHtcbiAgQGluY2x1ZGUgYm94R3JhZGllbnQoJGJveC1CRy1SZWQsICRib3gtR3JhZC1VcHBlci1Ub3AtUmVkLCAkYm94LUdyYWQtVXBwZXItQm90dG9tLVJlZCwgJGJveC1HcmFkLUxvd2VyLVRvcC1SZWQsICRib3gtR3JhZC1Mb3dlci1Cb3R0b20tUmVkKTtcbn1cblxuQG1peGluIGJveFNoYWRvd3tcbiAgYm94LXNoYWRvdzogNHB4IDRweCA0cHggI2JiYjtcbn1cblxuQG1peGluIGJveHl7XG4gIEBpbmNsdWRlIGJveEdyYWRpZW50R3JleTtcbiAgQGluY2x1ZGUgYm94U2hhZG93O1xuICBjb2xvcjogI2VlZTtcblxuICBhLCBzdHJvbmcge1xuICAgIGNvbG9yOiB3aGl0ZTtcbiAgfVxuXG4gIGgyIHtcbiAgICBib3JkZXI6IG5vbmU7XG4gICAgbWFyZ2luOiAwO1xuICB9XG59XG5cbkBtaXhpbiBsaWdodEdyZWVuQm94e1xuICBAaW5jbHVkZSBib3goJGxpZ2h0LWdyZWVuKTtcbiAgJixhe1xuICAgIGNvbG9yOiBibGFjaztcbiAgfVxufVxuXG4iLAoJCSJcbi8qKlxuICogQnJlYWtwb2ludHNcbiAqL1xuXG5AaW1wb3J0IFwibXFcIjtcblxuXG5AbWl4aW4gbXFzKCRmcm9tOiBmYWxzZSwgJHVudGlsOiBmYWxzZSl7XG4gIEBpbmNsdWRlIG1xKCRmcm9tLCAkdW50aWwsICRtZWRpYS10eXBlOiBzY3JlZW4pIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG4vKipcbiAqIElucHV0IGNhcGFiaWxpdGllc1xuICovXG5cbi8vIHNtYXJ0cGhvbmVzIGFuZCB0YWJsZXRzXG5AbWl4aW4gdG91Y2gtc2NyZWVuLWlucHV0IHtcbiAgQG1lZGlhIChwb2ludGVyOiBjb2Fyc2UpXG4gIGFuZCAoaG92ZXI6IG5vbmUpe1xuICAgIEBjb250ZW50O1xuICB9XG59XG5cbi8vIE1vdXNlIG9yIHRvdWNoIHBhZFxuQG1peGluIG1vdXNlLWlucHV0IHtcbiAgQG1lZGlhIChwb2ludGVyOiBmaW5lKVxuICBhbmQgKGhvdmVyOiBob3Zlcil7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuLy8gU2hvdyBmb3IgdG91Y2ggc2NyZWVuc1xuLy8gYW5kIHVwIHVudGlsIHRhYmxldCBkZXZpY2Ugd2lkdGggZm9yIHRhYmxldHMgbm90IHN1cHBvcnRpbmcgaW5wdXQgbWVkaWEgcXVlcmllcyBpZS4gb2xkIEFuZHJvaWQgNC54XG5AbWl4aW4gdG91Y2gtc2NyZWVuLWRldmljZXN7XG4gIEBpbmNsdWRlIHRvdWNoLXNjcmVlbi1pbnB1dCB7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbiAgQGluY2x1ZGUgbXFzKCR1bnRpbDogcmVzcG9uc2l2ZU1lbnUpIHtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG4vLyBOaW50ZW5kbyBXaWkgY29udHJvbGxlciwgS2luZWN0LCBldGMuXG5AbWl4aW4gY29uc29sZS1pbnB1dCB7XG4gIEBtZWRpYSAocG9pbnRlcjogY29hcnNlKVxuICBhbmQgKGhvdmVyOiBob3Zlcil7XG4gICAgQGNvbnRlbnQ7XG4gIH1cbn1cblxuLy8gc3R5bHVzLWJhc2VkIHNjcmVlbnMgKENpbnRpcSwgV2Fjb20sIGV0YylcbkBtaXhpbiBjb25zb2xlLWlucHV0IHtcbiAgQG1lZGlhIChwb2ludGVyOiBmaW5lKVxuICBhbmQgKGhvdmVyOiBub25lKXtcbiAgICBAY29udGVudDtcbiAgfVxufVxuXG4vLyBSZXRpbmEgZGlzcGxheXMgKDJ4KVxuQG1peGluIHJldGluYSB7XG4gIEBtZWRpYSAobWluLS1tb3otZGV2aWNlLXBpeGVsLXJhdGlvOiAxLjUpLCgtby1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAzLzIpLFxuICAoLXdlYmtpdC1taW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAxLjUpLChtaW4tZGV2aWNlLXBpeGVsLXJhdGlvOiAxLjUpLChtaW4tcmVzb2x1dGlvbjogMS41ZHBweCkge1xuICAgIEBjb250ZW50O1xuICB9XG59XG4iLAoJCSJAY2hhcnNldCBcIlVURi04XCI7IC8vIEZpeGVzIGFuIGlzc3VlIHdoZXJlIFJ1YnkgbG9jYWxlIGlzIG5vdCBzZXQgcHJvcGVybHlcbiAgICAgICAgICAgICAgICAgIC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vc2Fzcy1tcS9zYXNzLW1xL3B1bGwvMTBcblxuLy8vIEJhc2UgZm9udCBzaXplIG9uIHRoZSBgPGJvZHk+YCBlbGVtZW50XG4vLy8gQHR5cGUgTnVtYmVyICh1bml0KVxuJG1xLWJhc2UtZm9udC1zaXplOiAxNnB4ICFkZWZhdWx0O1xuXG4vLy8gUmVzcG9uc2l2ZSBtb2RlXG4vLy9cbi8vLyBTZXQgdG8gYGZhbHNlYCB0byBlbmFibGUgc3VwcG9ydCBmb3IgYnJvd3NlcnMgdGhhdCBkbyBub3Qgc3VwcG9ydCBAbWVkaWEgcXVlcmllcyxcbi8vLyAoSUUgPD0gOCwgRmlyZWZveCA8PSAzLCBPcGVyYSA8PSA5KVxuLy8vXG4vLy8gWW91IGNvdWxkIGNyZWF0ZSBhIHN0eWxlc2hlZXQgc2VydmVkIGV4Y2x1c2l2ZWx5IHRvIG9sZGVyIGJyb3dzZXJzLFxuLy8vIHdoZXJlIEBtZWRpYSBxdWVyaWVzIGFyZSByYXN0ZXJpemVkXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzXG4vLy8gIC8vIG9sZC1pZS5zY3NzXG4vLy8gICRtcS1yZXNwb25zaXZlOiBmYWxzZTtcbi8vLyAgQGltcG9ydCAnbWFpbic7IC8vIEBtZWRpYSBxdWVyaWVzIGluIHRoaXMgZmlsZSB3aWxsIGJlIHJhc3Rlcml6ZWQgdXAgdG8gJG1xLXN0YXRpYy1icmVha3BvaW50XG4vLy8gICAgICAgICAgICAgICAgICAgLy8gbGFyZ2VyIGJyZWFrcG9pbnRzIHdpbGwgYmUgaWdub3JlZFxuLy8vXG4vLy8gQHR5cGUgQm9vbGVhblxuLy8vIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9zYXNzLW1xL3Nhc3MtbXEjcmVzcG9uc2l2ZS1tb2RlLW9mZiBEaXNhYmxlZCByZXNwb25zaXZlIG1vZGUgZG9jdW1lbnRhdGlvblxuJG1xLXJlc3BvbnNpdmU6IHRydWUgIWRlZmF1bHQ7XG5cbi8vLyBCcmVha3BvaW50IGxpc3Rcbi8vL1xuLy8vIE5hbWUgeW91ciBicmVha3BvaW50cyBpbiBhIHdheSB0aGF0IGNyZWF0ZXMgYSB1YmlxdWl0b3VzIGxhbmd1YWdlXG4vLy8gYWNyb3NzIHRlYW0gbWVtYmVycy4gSXQgd2lsbCBpbXByb3ZlIGNvbW11bmljYXRpb24gYmV0d2VlblxuLy8vIHN0YWtlaG9sZGVycywgZGVzaWduZXJzLCBkZXZlbG9wZXJzLCBhbmQgdGVzdGVycy5cbi8vL1xuLy8vIEB0eXBlIE1hcFxuLy8vIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9zYXNzLW1xL3Nhc3MtbXEjc2VlaW5nLXRoZS1jdXJyZW50bHktYWN0aXZlLWJyZWFrcG9pbnQgRnVsbCBkb2N1bWVudGF0aW9uIGFuZCBleGFtcGxlc1xuJG1xLWJyZWFrcG9pbnRzOiAoXG4gICAgbW9iaWxlOiAgMzIwcHgsXG4gICAgdGFibGV0OiAgNzQwcHgsXG4gICAgZGVza3RvcDogOTgwcHgsXG4gICAgd2lkZTogICAgMTMwMHB4XG4pICFkZWZhdWx0O1xuXG4vLy8gU3RhdGljIGJyZWFrcG9pbnQgKGZvciBmaXhlZC13aWR0aCBsYXlvdXRzKVxuLy8vXG4vLy8gRGVmaW5lIHRoZSBicmVha3BvaW50IGZyb20gJG1xLWJyZWFrcG9pbnRzIHRoYXQgc2hvdWxkXG4vLy8gYmUgdXNlZCBhcyB0aGUgdGFyZ2V0IHdpZHRoIGZvciB0aGUgZml4ZWQtd2lkdGggbGF5b3V0XG4vLy8gKGkuZS4gd2hlbiAkbXEtcmVzcG9uc2l2ZSBpcyBzZXQgdG8gJ2ZhbHNlJykgaW4gYSBvbGQtaWUuc2Nzc1xuLy8vXG4vLy8gQGV4YW1wbGUgc2Nzc1xuLy8vICAvLyB0YWJsZXQtb25seS5zY3NzXG4vLy8gIC8vXG4vLy8gIC8vIElnbm9yZSBhbGwgc3R5bGVzIGFib3ZlIHRhYmxldCBicmVha3BvaW50LFxuLy8vICAvLyBhbmQgZml4IHRoZSBzdHlsZXMgKGUuZy4gbGF5b3V0KSBhdCB0YWJsZXQgd2lkdGhcbi8vLyAgJG1xLXJlc3BvbnNpdmU6IGZhbHNlO1xuLy8vICAkbXEtc3RhdGljLWJyZWFrcG9pbnQ6IHRhYmxldDtcbi8vLyAgQGltcG9ydCAnbWFpbic7IC8vIEBtZWRpYSBxdWVyaWVzIGluIHRoaXMgZmlsZSB3aWxsIGJlIHJhc3Rlcml6ZWQgdXAgdG8gdGFibGV0XG4vLy8gICAgICAgICAgICAgICAgICAgLy8gbGFyZ2VyIGJyZWFrcG9pbnRzIHdpbGwgYmUgaWdub3JlZFxuLy8vXG4vLy8gQHR5cGUgU3RyaW5nXG4vLy8gQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL3Nhc3MtbXEvc2Fzcy1tcSNhZGRpbmctY3VzdG9tLWJyZWFrcG9pbnRzIEZ1bGwgZG9jdW1lbnRhdGlvbiBhbmQgZXhhbXBsZXNcbiRtcS1zdGF0aWMtYnJlYWtwb2ludDogZGVza3RvcCAhZGVmYXVsdDtcblxuLy8vIFNob3cgYnJlYWtwb2ludHMgaW4gdGhlIHRvcCByaWdodCBjb3JuZXJcbi8vL1xuLy8vIElmIHlvdSB3YW50IHRvIGRpc3BsYXkgdGhlIGN1cnJlbnRseSBhY3RpdmUgYnJlYWtwb2ludCBpbiB0aGUgdG9wXG4vLy8gcmlnaHQgY29ybmVyIG9mIHlvdXIgc2l0ZSBkdXJpbmcgZGV2ZWxvcG1lbnQsIGFkZCB0aGUgYnJlYWtwb2ludHNcbi8vLyB0byB0aGlzIGxpc3QsIG9yZGVyZWQgYnkgd2lkdGgsIGUuZy4gKG1vYmlsZSwgdGFibGV0LCBkZXNrdG9wKS5cbi8vL1xuLy8vIEB0eXBlIG1hcFxuJG1xLXNob3ctYnJlYWtwb2ludHM6ICgpICFkZWZhdWx0O1xuXG4vLy8gQ3VzdG9taXplIHRoZSBtZWRpYSB0eXBlIChlLmcuIGBAbWVkaWEgc2NyZWVuYCBvciBgQG1lZGlhIHByaW50YClcbi8vLyBCeSBkZWZhdWx0IHNhc3MtbXEgdXNlcyBhbiBcImFsbFwiIG1lZGlhIHR5cGUgKGBAbWVkaWEgYWxsIGFuZCDigKZgKVxuLy8vXG4vLy8gQHR5cGUgU3RyaW5nXG4vLy8gQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL3Nhc3MtbXEvc2Fzcy1tcSNjaGFuZ2luZy1tZWRpYS10eXBlIEZ1bGwgZG9jdW1lbnRhdGlvbiBhbmQgZXhhbXBsZXNcbiRtcS1tZWRpYS10eXBlOiBhbGwgIWRlZmF1bHQ7XG5cbi8vLyBDb252ZXJ0IHBpeGVscyB0byBlbXNcbi8vL1xuLy8vIEBwYXJhbSB7TnVtYmVyfSAkcHggLSB2YWx1ZSB0byBjb252ZXJ0XG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICRiYXNlLWZvbnQtc2l6ZSAoJG1xLWJhc2UtZm9udC1zaXplKSAtIGA8Ym9keT5gIGZvbnQgc2l6ZVxuLy8vXG4vLy8gQGV4YW1wbGUgc2Nzc1xuLy8vICAkZm9udC1zaXplLWluLWVtczogbXEtcHgyZW0oMTZweCk7XG4vLy8gIHAgeyBmb250LXNpemU6IG1xLXB4MmVtKDE2cHgpOyB9XG4vLy9cbi8vLyBAcmVxdWlyZXMgJG1xLWJhc2UtZm9udC1zaXplXG4vLy8gQHJldHVybnMge051bWJlcn1cbkBmdW5jdGlvbiBtcS1weDJlbSgkcHgsICRiYXNlLWZvbnQtc2l6ZTogJG1xLWJhc2UtZm9udC1zaXplKSB7XG4gICAgQGlmIHVuaXRsZXNzKCRweCkge1xuICAgICAgICBAd2FybiBcIkFzc3VtaW5nICN7JHB4fSB0byBiZSBpbiBwaXhlbHMsIGF0dGVtcHRpbmcgdG8gY29udmVydCBpdCBpbnRvIHBpeGVscy5cIjtcbiAgICAgICAgQHJldHVybiBtcS1weDJlbSgkcHggKiAxcHgsICRiYXNlLWZvbnQtc2l6ZSk7XG4gICAgfSBAZWxzZSBpZiB1bml0KCRweCkgPT0gZW0ge1xuICAgICAgICBAcmV0dXJuICRweDtcbiAgICB9XG4gICAgQHJldHVybiAoJHB4IC8gJGJhc2UtZm9udC1zaXplKSAqIDFlbTtcbn1cblxuLy8vIEdldCBhIGJyZWFrcG9pbnQncyB3aWR0aFxuLy8vXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRuYW1lIC0gTmFtZSBvZiB0aGUgYnJlYWtwb2ludC4gT25lIG9mICRtcS1icmVha3BvaW50c1xuLy8vXG4vLy8gQGV4YW1wbGUgc2Nzc1xuLy8vICAkdGFibGV0LXdpZHRoOiBtcS1nZXQtYnJlYWtwb2ludC13aWR0aCh0YWJsZXQpO1xuLy8vICBAbWVkaWEgKG1pbi13aWR0aDogbXEtZ2V0LWJyZWFrcG9pbnQtd2lkdGgoZGVza3RvcCkpIHt9XG4vLy9cbi8vLyBAcmVxdWlyZXMge1ZhcmlhYmxlfSAkbXEtYnJlYWtwb2ludHNcbi8vL1xuLy8vIEByZXR1cm5zIHtOdW1iZXJ9IFZhbHVlIGluIHBpeGVsc1xuQGZ1bmN0aW9uIG1xLWdldC1icmVha3BvaW50LXdpZHRoKCRuYW1lLCAkYnJlYWtwb2ludHM6ICRtcS1icmVha3BvaW50cykge1xuICAgIEBpZiBtYXAtaGFzLWtleSgkYnJlYWtwb2ludHMsICRuYW1lKSB7XG4gICAgICAgIEByZXR1cm4gbWFwLWdldCgkYnJlYWtwb2ludHMsICRuYW1lKTtcbiAgICB9IEBlbHNlIHtcbiAgICAgICAgQHdhcm4gXCJCcmVha3BvaW50ICN7JG5hbWV9IHdhc24ndCBmb3VuZCBpbiAkYnJlYWtwb2ludHMuXCI7XG4gICAgfVxufVxuXG4vLy8gTWVkaWEgUXVlcnkgbWl4aW5cbi8vL1xuLy8vIEBwYXJhbSB7U3RyaW5nIHwgQm9vbGVhbn0gJGZyb20gKGZhbHNlKSAtIE9uZSBvZiAkbXEtYnJlYWtwb2ludHNcbi8vLyBAcGFyYW0ge1N0cmluZyB8IEJvb2xlYW59ICR1bnRpbCAoZmFsc2UpIC0gT25lIG9mICRtcS1icmVha3BvaW50c1xuLy8vIEBwYXJhbSB7U3RyaW5nIHwgQm9vbGVhbn0gJGFuZCAoZmFsc2UpIC0gQWRkaXRpb25hbCBtZWRpYSBxdWVyeSBwYXJhbWV0ZXJzXG4vLy8gQHBhcmFtIHtTdHJpbmd9ICRtZWRpYS10eXBlICgkbXEtbWVkaWEtdHlwZSkgLSBNZWRpYSB0eXBlOiBzY3JlZW4sIHByaW504oCmXG4vLy9cbi8vLyBAaWdub3JlIFVuZG9jdW1lbnRlZCBBUEksIGZvciBhZHZhbmNlZCB1c2Ugb25seTpcbi8vLyBAaWdub3JlIEBwYXJhbSB7TWFwfSAkYnJlYWtwb2ludHMgKCRtcS1icmVha3BvaW50cylcbi8vLyBAaWdub3JlIEBwYXJhbSB7U3RyaW5nfSAkc3RhdGljLWJyZWFrcG9pbnQgKCRtcS1zdGF0aWMtYnJlYWtwb2ludClcbi8vL1xuLy8vIEBjb250ZW50IHN0eWxpbmcgcnVsZXMsIHdyYXBwZWQgaW50byBhIEBtZWRpYSBxdWVyeSB3aGVuICRyZXNwb25zaXZlIGlzIHRydWVcbi8vL1xuLy8vIEByZXF1aXJlcyB7VmFyaWFibGV9ICRtcS1tZWRpYS10eXBlXG4vLy8gQHJlcXVpcmVzIHtWYXJpYWJsZX0gJG1xLWJyZWFrcG9pbnRzXG4vLy8gQHJlcXVpcmVzIHtWYXJpYWJsZX0gJG1xLXN0YXRpYy1icmVha3BvaW50XG4vLy8gQHJlcXVpcmVzIHtmdW5jdGlvbn0gbXEtcHgyZW1cbi8vLyBAcmVxdWlyZXMge2Z1bmN0aW9ufSBtcS1nZXQtYnJlYWtwb2ludC13aWR0aFxuLy8vXG4vLy8gQGxpbmsgaHR0cHM6Ly9naXRodWIuY29tL3Nhc3MtbXEvc2Fzcy1tcSNyZXNwb25zaXZlLW1vZGUtb24tZGVmYXVsdCBGdWxsIGRvY3VtZW50YXRpb24gYW5kIGV4YW1wbGVzXG4vLy9cbi8vLyBAZXhhbXBsZSBzY3NzXG4vLy8gIC5lbGVtZW50IHtcbi8vLyAgICBAaW5jbHVkZSBtcSgkZnJvbTogbW9iaWxlKSB7XG4vLy8gICAgICBjb2xvcjogcmVkO1xuLy8vICAgIH1cbi8vLyAgICBAaW5jbHVkZSBtcSgkdW50aWw6IHRhYmxldCkge1xuLy8vICAgICAgY29sb3I6IGJsdWU7XG4vLy8gICAgfVxuLy8vICAgIEBpbmNsdWRlIG1xKG1vYmlsZSwgdGFibGV0KSB7XG4vLy8gICAgICBjb2xvcjogZ3JlZW47XG4vLy8gICAgfVxuLy8vICAgIEBpbmNsdWRlIG1xKCRmcm9tOiB0YWJsZXQsICRhbmQ6ICcob3JpZW50YXRpb246IGxhbmRzY2FwZSknKSB7XG4vLy8gICAgICBjb2xvcjogdGVhbDtcbi8vLyAgICB9XG4vLy8gICAgQGluY2x1ZGUgbXEoOTUwcHgpIHtcbi8vLyAgICAgIGNvbG9yOiBob3RwaW5rO1xuLy8vICAgIH1cbi8vLyAgICBAaW5jbHVkZSBtcSh0YWJsZXQsICRtZWRpYS10eXBlOiBzY3JlZW4pIHtcbi8vLyAgICAgIGNvbG9yOiBob3RwaW5rO1xuLy8vICAgIH1cbi8vLyAgICAvLyBBZHZhbmNlZCB1c2U6XG4vLy8gICAgJG15LWJyZWFrcG9pbnRzOiAoTDogOTAwcHgsIFhMOiAxMjAwcHgpO1xuLy8vICAgIEBpbmNsdWRlIG1xKEwsICRicmVha3BvaW50czogJG15LWJyZWFrcG9pbnRzLCAkc3RhdGljLWJyZWFrcG9pbnQ6IEwpIHtcbi8vLyAgICAgIGNvbG9yOiBob3RwaW5rO1xuLy8vICAgIH1cbi8vLyAgfVxuQG1peGluIG1xKFxuICAgICRmcm9tOiBmYWxzZSxcbiAgICAkdW50aWw6IGZhbHNlLFxuICAgICRhbmQ6IGZhbHNlLFxuICAgICRtZWRpYS10eXBlOiAkbXEtbWVkaWEtdHlwZSxcbiAgICAkYnJlYWtwb2ludHM6ICRtcS1icmVha3BvaW50cyxcbiAgICAkcmVzcG9uc2l2ZTogJG1xLXJlc3BvbnNpdmUsXG4gICAgJHN0YXRpYy1icmVha3BvaW50OiAkbXEtc3RhdGljLWJyZWFrcG9pbnRcbikge1xuICAgICRtaW4td2lkdGg6IDA7XG4gICAgJG1heC13aWR0aDogMDtcbiAgICAkbWVkaWEtcXVlcnk6ICcnO1xuXG4gICAgLy8gRnJvbTogdGhpcyBicmVha3BvaW50IChpbmNsdXNpdmUpXG4gICAgQGlmICRmcm9tIHtcbiAgICAgICAgQGlmIHR5cGUtb2YoJGZyb20pID09IG51bWJlciB7XG4gICAgICAgICAgICAkbWluLXdpZHRoOiBtcS1weDJlbSgkZnJvbSk7XG4gICAgICAgIH0gQGVsc2Uge1xuICAgICAgICAgICAgJG1pbi13aWR0aDogbXEtcHgyZW0obXEtZ2V0LWJyZWFrcG9pbnQtd2lkdGgoJGZyb20sICRicmVha3BvaW50cykpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgLy8gVW50aWw6IHRoYXQgYnJlYWtwb2ludCAoZXhjbHVzaXZlKVxuICAgIEBpZiAkdW50aWwge1xuICAgICAgICBAaWYgdHlwZS1vZigkdW50aWwpID09IG51bWJlciB7XG4gICAgICAgICAgICAkbWF4LXdpZHRoOiBtcS1weDJlbSgkdW50aWwpO1xuICAgICAgICB9IEBlbHNlIHtcbiAgICAgICAgICAgICRtYXgtd2lkdGg6IG1xLXB4MmVtKG1xLWdldC1icmVha3BvaW50LXdpZHRoKCR1bnRpbCwgJGJyZWFrcG9pbnRzKSkgLSAuMDFlbTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIC8vIFJlc3BvbnNpdmUgc3VwcG9ydCBpcyBkaXNhYmxlZCwgcmFzdGVyaXplIHRoZSBvdXRwdXQgb3V0c2lkZSBAbWVkaWEgYmxvY2tzXG4gICAgLy8gVGhlIGJyb3dzZXIgd2lsbCByZWx5IG9uIHRoZSBjYXNjYWRlIGl0c2VsZi5cbiAgICBAaWYgJHJlc3BvbnNpdmUgPT0gZmFsc2Uge1xuICAgICAgICAkc3RhdGljLWJyZWFrcG9pbnQtd2lkdGg6IG1xLWdldC1icmVha3BvaW50LXdpZHRoKCRzdGF0aWMtYnJlYWtwb2ludCwgJGJyZWFrcG9pbnRzKTtcbiAgICAgICAgJHRhcmdldC13aWR0aDogbXEtcHgyZW0oJHN0YXRpYy1icmVha3BvaW50LXdpZHRoKTtcblxuICAgICAgICAvLyBPdXRwdXQgb25seSBydWxlcyB0aGF0IHN0YXJ0IGF0IG9yIHNwYW4gb3VyIHRhcmdldCB3aWR0aFxuICAgICAgICBAaWYgKFxuICAgICAgICAgICAgJGFuZCA9PSBmYWxzZVxuICAgICAgICAgICAgYW5kICRtaW4td2lkdGggPD0gJHRhcmdldC13aWR0aFxuICAgICAgICAgICAgYW5kIChcbiAgICAgICAgICAgICAgICAkdW50aWwgPT0gZmFsc2Ugb3IgJG1heC13aWR0aCA+PSAkdGFyZ2V0LXdpZHRoXG4gICAgICAgICAgICApXG4gICAgICAgICkge1xuICAgICAgICAgICAgQGNvbnRlbnQ7XG4gICAgICAgIH1cbiAgICB9IEBlbHNlIHsgLy8gUmVzcG9uc2l2ZSBzdXBwb3J0IGlzIGVuYWJsZWQsIG91dHB1dCBydWxlcyBpbnNpZGUgQG1lZGlhIHF1ZXJpZXNcbiAgICAgICAgQGlmICRtaW4td2lkdGggIT0gMCB7ICRtZWRpYS1xdWVyeTogJyN7JG1lZGlhLXF1ZXJ5fSBhbmQgKG1pbi13aWR0aDogI3skbWluLXdpZHRofSknOyB9XG4gICAgICAgIEBpZiAkbWF4LXdpZHRoICE9IDAgeyAkbWVkaWEtcXVlcnk6ICcjeyRtZWRpYS1xdWVyeX0gYW5kIChtYXgtd2lkdGg6ICN7JG1heC13aWR0aH0pJzsgfVxuICAgICAgICBAaWYgJGFuZCAgICAgICAgICAgIHsgJG1lZGlhLXF1ZXJ5OiAnI3skbWVkaWEtcXVlcnl9IGFuZCAjeyRhbmR9JzsgfVxuXG4gICAgICAgIC8vIFJlbW92ZSB1bm5lY2Vzc2FyeSBtZWRpYSBxdWVyeSBwcmVmaXggJ2FsbCBhbmQgJ1xuICAgICAgICBAaWYgKCRtZWRpYS10eXBlID09ICdhbGwnIGFuZCAkbWVkaWEtcXVlcnkgIT0gJycpIHtcbiAgICAgICAgICAgICRtZWRpYS10eXBlOiAnJztcbiAgICAgICAgICAgICRtZWRpYS1xdWVyeTogc3RyLXNsaWNlKHVucXVvdGUoJG1lZGlhLXF1ZXJ5KSwgNik7XG4gICAgICAgIH1cblxuICAgICAgICBAbWVkaWEgI3skbWVkaWEtdHlwZSArICRtZWRpYS1xdWVyeX0ge1xuICAgICAgICAgICAgQGNvbnRlbnQ7XG4gICAgICAgIH1cbiAgICB9XG59XG5cbi8vLyBBZGQgYSBicmVha3BvaW50XG4vLy9cbi8vLyBAcGFyYW0ge1N0cmluZ30gJG5hbWUgLSBOYW1lIG9mIHRoZSBicmVha3BvaW50XG4vLy8gQHBhcmFtIHtOdW1iZXJ9ICR3aWR0aCAtIFdpZHRoIG9mIHRoZSBicmVha3BvaW50XG4vLy9cbi8vLyBAcmVxdWlyZXMge1ZhcmlhYmxlfSAkbXEtYnJlYWtwb2ludHNcbi8vL1xuLy8vIEBleGFtcGxlIHNjc3Ncbi8vLyAgQGluY2x1ZGUgbXEtYWRkLWJyZWFrcG9pbnQodHZzY3JlZW4sIDE5MjBweCk7XG4vLy8gIEBpbmNsdWRlIG1xKHR2c2NyZWVuKSB7fVxuQG1peGluIG1xLWFkZC1icmVha3BvaW50KCRuYW1lLCAkd2lkdGgpIHtcbiAgICAkbmV3LWJyZWFrcG9pbnQ6ICgkbmFtZTogJHdpZHRoKTtcbiAgICAkbXEtYnJlYWtwb2ludHM6IG1hcC1tZXJnZSgkbXEtYnJlYWtwb2ludHMsICRuZXctYnJlYWtwb2ludCkgIWdsb2JhbDtcbn1cblxuLy8vIFNob3cgdGhlIGFjdGl2ZSBicmVha3BvaW50IGluIHRoZSB0b3AgcmlnaHQgY29ybmVyIG9mIHRoZSB2aWV3cG9ydFxuLy8vIEBsaW5rIGh0dHBzOi8vZ2l0aHViLmNvbS9zYXNzLW1xL3Nhc3MtbXEjc2VlaW5nLXRoZS1jdXJyZW50bHktYWN0aXZlLWJyZWFrcG9pbnRcbi8vL1xuLy8vIEBwYXJhbSB7TGlzdH0gJHNob3ctYnJlYWtwb2ludHMgKCRtcS1zaG93LWJyZWFrcG9pbnRzKSAtIExpc3Qgb2YgYnJlYWtwb2ludHMgdG8gc2hvdyBpbiB0aGUgdG9wIHJpZ2h0IGNvcm5lclxuLy8vIEBwYXJhbSB7TWFwfSAkYnJlYWtwb2ludHMgKCRtcS1icmVha3BvaW50cykgLSBCcmVha3BvaW50IG5hbWVzIGFuZCBzaXplc1xuLy8vXG4vLy8gQHJlcXVpcmVzIHtWYXJpYWJsZX0gJG1xLWJyZWFrcG9pbnRzXG4vLy8gQHJlcXVpcmVzIHtWYXJpYWJsZX0gJG1xLXNob3ctYnJlYWtwb2ludHNcbi8vL1xuLy8vIEBleGFtcGxlIHNjc3Ncbi8vLyAgLy8gU2hvdyBicmVha3BvaW50cyB1c2luZyBnbG9iYWwgc2V0dGluZ3Ncbi8vLyAgQGluY2x1ZGUgbXEtc2hvdy1icmVha3BvaW50cztcbi8vL1xuLy8vICAvLyBTaG93IGJyZWFrcG9pbnRzIHVzaW5nIGN1c3RvbSBzZXR0aW5nc1xuLy8vICBAaW5jbHVkZSBtcS1zaG93LWJyZWFrcG9pbnRzKChMLCBYTCksIChTOiAzMDBweCwgTDogODAwcHgsIFhMOiAxMjAwcHgpKTtcbkBtaXhpbiBtcS1zaG93LWJyZWFrcG9pbnRzKCRzaG93LWJyZWFrcG9pbnRzOiAkbXEtc2hvdy1icmVha3BvaW50cywgJGJyZWFrcG9pbnRzOiAkbXEtYnJlYWtwb2ludHMpIHtcbiAgICBib2R5OmJlZm9yZSB7XG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNGQ0Y4RTM7XG4gICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjRkJFRUQ1O1xuICAgICAgICBib3JkZXItbGVmdDogMXB4IHNvbGlkICNGQkVFRDU7XG4gICAgICAgIGNvbG9yOiAjQzA5ODUzO1xuICAgICAgICBmb250OiBzbWFsbC1jYXB0aW9uO1xuICAgICAgICBwYWRkaW5nOiAzcHggNnB4O1xuICAgICAgICBwb2ludGVyLWV2ZW50czogbm9uZTtcbiAgICAgICAgcG9zaXRpb246IGZpeGVkO1xuICAgICAgICByaWdodDogMDtcbiAgICAgICAgdG9wOiAwO1xuICAgICAgICB6LWluZGV4OiAxMDA7XG5cbiAgICAgICAgLy8gTG9vcCB0aHJvdWdoIHRoZSBicmVha3BvaW50cyB0aGF0IHNob3VsZCBiZSBzaG93blxuICAgICAgICBAZWFjaCAkc2hvdy1icmVha3BvaW50IGluICRzaG93LWJyZWFrcG9pbnRzIHtcbiAgICAgICAgICAgICR3aWR0aDogbXEtZ2V0LWJyZWFrcG9pbnQtd2lkdGgoJHNob3ctYnJlYWtwb2ludCwgJGJyZWFrcG9pbnRzKTtcbiAgICAgICAgICAgIEBpbmNsdWRlIG1xKCRzaG93LWJyZWFrcG9pbnQsICRicmVha3BvaW50czogJGJyZWFrcG9pbnRzKSB7XG4gICAgICAgICAgICAgICAgY29udGVudDogXCIjeyRzaG93LWJyZWFrcG9pbnR9IOKJpSAjeyR3aWR0aH0gKCN7bXEtcHgyZW0oJHdpZHRoKX0pXCI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG59XG5cbkBpZiBsZW5ndGgoJG1xLXNob3ctYnJlYWtwb2ludHMpID4gMCB7XG4gICAgQGluY2x1ZGUgbXEtc2hvdy1icmVha3BvaW50cztcbn1cbiIsCgkJIi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuKiBUb3VjaCBkZXZpY2VzXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi9cbkBpbXBvcnQgXCJnZW5lcmFsX21peGluc1wiO1xuXG5AbWl4aW4gYm94LXNoYWRvd3tcbiAgYm94LXNoYWRvdzogMCAxcHggM3B4IHJnYmEoMCwwLDAsLjE1KTtcbn1cblxuQG1peGluIHRvdWNoLXNjcmVlbi1zdHlsZXMge1xuXG4gIC8vIEJ1dHRvbnNcbiAgW2RhdGEtcm9sZT1cImJ1dHRvblwiXTpub3QoLm5vbi1yZXNwb25zaXZlKXtcbiAgICBAaW5jbHVkZSBib3gtc2hhZG93O1xuXG4gICAgY29sb3I6ICMzMzMgIWltcG9ydGFudDtcbiAgICBiYWNrZ3JvdW5kOiAjZWVlO1xuXG4gICAgYm9yZGVyLWNvbG9yOiAjZGRkO1xuICAgIGJvcmRlci13aWR0aDogMXB4O1xuICAgIGJvcmRlci1zdHlsZTogc29saWQ7XG4gICAgYm9yZGVyLXJhZGl1czogNXB4O1xuXG5cbiAgICBtYXJnaW46IC41ZW0gMDtcbiAgICBwYWRkaW5nOiAuN2VtIDFlbTtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuXG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgICB1c2VyLXNlbGVjdDogbm9uZTtcbiAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lO1xuICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xuICAgIGZvbnQtc2l6ZTogMTZweDtcblxuICAgICY6aG92ZXIsICY6YWN0aXZle1xuICAgICAgYmFja2dyb3VuZDogI2U4ZjBmZjtcbiAgICB9XG5cbiAgICAmW2RhdGEtaWNvbl17XG4gICAgICBwYWRkaW5nLWxlZnQ6IDMycHg7XG4gICAgICBwYWRkaW5nLXJpZ2h0OiA4cHg7XG4gICAgICBpe1xuICAgICAgICBAaW5jbHVkZSBjZW50cmVZO1xuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgIGxlZnQ6IDhweDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAmLmdyZWVuIHtcbiAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sICM4ZGRkYTAgMCUsICMzZGRiOGMgNTAlLCAjOGRkZGEwIDEwMCUpO1xuICAgICAgYm9yZGVyLWNvbG9yOiAjMmI2YjM3O1xuICAgICAgYm94LXNoYWRvdzogMCAxcHggM3B4IHJnYmEoMCwgMCwgMCwgMC41KTsgLy9oZWF2aWVyIHNoYWRvdyBvbiBkYXJrIGdyZWVuIGJnXG4gICAgICAmOmhvdmVyLCAmOmFjdGl2ZSB7XG4gICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sICNkY2Y0ZTEgMCUsICMzZGRiOGMgNTAlLCAjZGNmNGUxIDEwMCUpO1xuICAgICAgfVxuICAgIH1cbiAgICAmLmJsdWV7XG4gICAgICAgIGJhY2tncm91bmQ6IGxpbmVhci1ncmFkaWVudCh0byBib3R0b20sICM4ZGMwZGQgMCUsIzNkYWNkYiA1MCUsIzhkYzBkZCAxMDAlKTtcbiAgICAgICAgYm9yZGVyLWNvbG9yOiAjMTI2MTY3O1xuICAgICAgICBib3gtc2hhZG93OiAwIDFweCAzcHggcmdiYSgwLCAwLCAwLCAwLjMpO1xuICAgICAgICAmOmhvdmVyLCAmOmFjdGl2ZXtcbiAgICAgICAgICBiYWNrZ3JvdW5kOiBsaW5lYXItZ3JhZGllbnQodG8gYm90dG9tLCAjZGNlMWY0IDAlLCM2ZWFjZWIgNTAlLCNkY2UxZjQgMTAwJSk7XG4gICAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBMaXN0dmlld3NcbiAgW2RhdGEtcm9sZT1cImxpc3R2aWV3XCJdOm5vdCgubm9uLXJlc3BvbnNpdmUpe1xuICAgIEBpbmNsdWRlIGJveHk7XG4gICAgcGFkZGluZzogMCAhaW1wb3J0YW50O1xuICAgIGxpc3Qtc3R5bGU6IG5vbmU7XG5cblxuICAgID5saXtcbiAgICAgIGRpc3BsYXk6IGJsb2NrO1xuICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgICAgb3ZlcmZsb3c6IHZpc2libGU7XG4gICAgICBtYXJnaW46IDA7XG4gICAgICBwYWRkaW5nOiA4cHggMTZweCA4cHggOHB4ICFpbXBvcnRhbnQ7XG4gICAgICBsaXN0LXN0eWxlOiBub25lO1xuICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XG4gICAgICBib3JkZXItY29sb3I6ICNkZGQ7XG4gICAgICBib3JkZXItc3R5bGU6IHNvbGlkO1xuICAgICAgYm9yZGVyLXdpZHRoOiAxcHggMXB4IDAgMXB4O1xuICAgICAgZm9udC1zaXplOiAxNnB4ICFpbXBvcnRhbnQ7XG4gICAgICBAaW5jbHVkZSBtcXMoJHVudGlsOiB0YWJsZXQ3aW5jaCkge1xuICAgICAgICBmb250LXNpemU6IDE0cHggIWltcG9ydGFudDtcbiAgICAgIH1cblxuICAgICAgYXtcbiAgICAgICAgbWFyZ2luOiAwO1xuICAgICAgICB0ZXh0LWFsaWduOiBsZWZ0O1xuICAgICAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7XG4gICAgICAgIG92ZXJmbG93OiBoaWRkZW47XG4gICAgICAgIGZvbnQtc2l6ZTogMTZweCAhaW1wb3J0YW50O1xuICAgICAgICBAaW5jbHVkZSBtcXMoJHVudGlsOiB0YWJsZXQ3aW5jaCkge1xuICAgICAgICAgIGZvbnQtc2l6ZTogMTRweCAhaW1wb3J0YW50O1xuICAgICAgICB9XG5cblxuICAgICAgICAmOmFmdGVye1xuICAgICAgICAgIGNvbnRlbnQ6ICc+JztcbiAgICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gICAgICAgICAgcmlnaHQ6IDRweDtcbiAgICAgICAgICBmb250LXNpemU6IDE2cHggIWltcG9ydGFudDtcbiAgICAgICAgICBAaW5jbHVkZSBtcXMoJHVudGlsOiB0YWJsZXQ3aW5jaCkge1xuICAgICAgICAgICAgZm9udC1zaXplOiAxNHB4ICFpbXBvcnRhbnQ7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLy8gTGluayBsaXN0c1xuICA6bm90KC5ub24tcmVzcG9uc2l2ZSk6bm90KFtkYXRhLXJvbGVdKTpub3QoW3JvbGVdKSA+IGxpID4gYTpvbmx5LWNoaWxke1xuICAgIHBhZGRpbmc6IDhweCAwO1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgfVxufVxuXG5cbiIsCgkJIi8vIExvYWRpbmcgYW5pbWF0aW9uXG5cbiRsb2FkZXItZGVmYXVsdC1zaXplOiA1MHB4O1xuJGxvYWRlci1kZWZhdWx0LXRoaWNrbmVzczogNXB4O1xuJGxvYWRlci1kZWZhdWx0LWZvcmVncm91bmQ6IHdoaXRlO1xuJGxvYWRlci1kZWZhdWx0LWJhY2tncm91bmQ6IHJnYmEoMjU1LDI1NSwyNTUsMC4yNSk7XG4kbG9hZGVyLWRlZmF1bHQtZm9yZWdyb3VuZC1pbnZlcnRlZDogYmxhY2s7XG4kbG9hZGVyLWRlZmF1bHQtYmFja2dyb3VuZC1pbnZlcnRlZDogcmdiYSgwLDAsMCwwLjI1KTtcblxuQG1peGluIGxvYWRlcihcbiAgJHNpemU6ICRsb2FkZXItZGVmYXVsdC1zaXplLFxuICAkdGhpY2tuZXNzOiAkbG9hZGVyLWRlZmF1bHQtdGhpY2tuZXNzLFxuICAkZm9yZWdyb3VuZDogJGxvYWRlci1kZWZhdWx0LWZvcmVncm91bmQsXG4gICRiYWNrZ3JvdW5kOiAkbG9hZGVyLWRlZmF1bHQtYmFja2dyb3VuZFxuKXtcblxuICBAYXQtcm9vdHtcbiAgICBib2R5Om5vdCguZnVsbHNjcmVlbikgI3smfSB7XG4gICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XG4gICAgfVxuICB9XG5cbiAgJjo6YWZ0ZXIge1xuICAgIGNvbnRlbnQ6ICcnO1xuICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgICB0b3A6IDUwJTtcbiAgICBsZWZ0OiA1MCU7XG4gICAgbWFyZ2luLXRvcDogLSgkc2l6ZSAvIDIgKyAkdGhpY2tuZXNzKTtcbiAgICBtYXJnaW4tbGVmdDogLSgkc2l6ZSAvIDIgKyAkdGhpY2tuZXNzKTtcbiAgICB3aWR0aDogJHNpemU7XG4gICAgaGVpZ2h0OiAkc2l6ZTtcbiAgICBib3JkZXItcmFkaXVzOiAkc2l6ZTtcbiAgICBib3JkZXI6ICR0aGlja25lc3Mgc29saWQgJGJhY2tncm91bmQ7XG4gICAgYm9yZGVyLXRvcC1jb2xvcjogJGZvcmVncm91bmQ7XG4gICAgYW5pbWF0aW9uOiBsb2FkaW5nIDFzIGVhc2UgaW5maW5pdGU7XG4gIH1cbiAgQGtleWZyYW1lcyBsb2FkaW5nIHtcbiAgICAwJSB7XG4gICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgwZGVnKTtcbiAgICB9XG4gICAgMTAwJSB7XG4gICAgICB0cmFuc2Zvcm06IHJvdGF0ZSgzNjBkZWcpO1xuICAgIH1cbiAgfVxufVxuXG5AbWl4aW4gbG9hZGVyLWludmVydGVkKFxuICAkc2l6ZTogJGxvYWRlci1kZWZhdWx0LXNpemUsXG4gICR0aGlja25lc3M6ICRsb2FkZXItZGVmYXVsdC10aGlja25lc3MsXG4gICRmb3JlZ3JvdW5kOiAkbG9hZGVyLWRlZmF1bHQtZm9yZWdyb3VuZC1pbnZlcnRlZCxcbiAgJGJhY2tncm91bmQ6ICRsb2FkZXItZGVmYXVsdC1iYWNrZ3JvdW5kLWludmVydGVkXG4pe1xuICBAaW5jbHVkZSBsb2FkZXIoXG4gICAgJHNpemU6ICRzaXplLFxuICAgICR0aGlja25lc3M6ICR0aGlja25lc3MsXG4gICAgJGZvcmVncm91bmQ6ICRmb3JlZ3JvdW5kLFxuICAgICRiYWNrZ3JvdW5kOiAkYmFja2dyb3VuZFxuICApO1xufVxuIgoJXSwKCSJuYW1lcyI6IFtdLAoJIm1hcHBpbmdzIjogIkFJQ0E7O0dBRUc7QUFXSDs7R0FFRztBRWhCSDs7eURBRXlEO0FMSXpELEFBQUEsSUFBSSxDQUFBO0VBQ0YsVUFBVSxFQUFFLE9BQU87Q0FDcEI7O0FETEQsQUFBQSxPQUFPLENBQUE7RUFDTCxPQUFPLEVBQUUsSUFBSTtDQWtDZDs7QUEvQkcsQUFBQSxJQUFJLEFBQUEsVUFBVSxDQUFDLE9BQU87QUFDdEIsSUFBSSxBQUFBLGtCQUFrQixDQUFDLE9BQU8sQ0FBSDtFQUN6QixPQUFPLEVBQUUsS0FBSztDQUNmOztBQVBMLEFBVUUsT0FWSyxDQVVMLGlCQUFpQixDQUFBO0VBQ2YsYUFBYSxFQUFFLElBQUk7Q0F1QnBCOztBT3BCQyxBQUFBLElBQUksQUFBQSxJQUFLLENBQUEsV0FBVyxFQUFFLE9BQU8sQ0FBQyxpQkFBaUIsQUFBQSxRQUFRLENBQTVCO0VBQ3pCLFFBQVEsRUFBRSxRQUFRO0NBQ25COztBUGhCTCxBT21CRSxPUG5CSyxDQVVMLGlCQUFpQixBQUdkLFFBQVEsQU9NVixPQUFPLENBQUM7RUFDUCxPQUFPLEVBQUUsRUFBRTtFQUNYLFFBQVEsRUFBRSxRQUFRO0VBQ2xCLEdBQUcsRUFBRSxHQUFHO0VBQ1IsSUFBSSxFQUFFLEdBQUc7RUFDVCxVQUFVLEVBQUksS0FBc0I7RUFDcEMsV0FBVyxFQUFJLEtBQXNCO0VBQ3JDLEtBQUssRUEzQmEsSUFBSTtFQTRCdEIsTUFBTSxFQTVCWSxJQUFJO0VBNkJ0QixhQUFhLEVBN0JLLElBQUk7RUE4QnRCLE1BQU0sRUE3QmlCLEdBQUcsQ0E2QlAsS0FBSyxDQTNCQSx5QkFBc0I7RUE0QjlDLGdCQUFnQixFQTdCUSxLQUFLO0VBOEI3QixTQUFTLEVBQUUsd0JBQXdCO0NBQ3BDOztBQUNELFVBQVUsQ0FBVixPQUFVO0VBQ1IsRUFBRTtJQUNBLFNBQVMsRUFBRSxZQUFZOztFQUV6QixJQUFJO0lBQ0YsU0FBUyxFQUFFLGNBQWM7Ozs7QVB0Qy9CLEFBaUJJLE9BakJHLENBVUwsaUJBQWlCLENBT2YsRUFBRSxDQUFBO0VBQ0EsVUFBVSxFQUFFLElBQUk7Q0FDakI7O0FBbkJMLEFBcUJJLE9BckJHLENBVUwsaUJBQWlCLENBV2YsRUFBRSxFQXJCTixPQUFPLENBVUwsaUJBQWlCLENBV1gsRUFBRSxDQUFBO0VBQ0osT0FBTyxFQUFFLE9BQU87RUFDaEIsVUFBVSxFQUFFLFVBQVU7Q0FDdkI7O0FBeEJMLEFBMEJJLE9BMUJHLENBVUwsaUJBQWlCLENBZ0JmLE1BQU0sQ0FBQTtFQUNKLFdBQVcsRUFBRSxJQUFJO0NBQ2xCOztBQTVCTCxBQThCSSxPQTlCRyxDQVVMLGlCQUFpQixDQW9CZixDQUFDLEFBQUEsT0FBTyxDQUFBO0VBQ04sZUFBZSxFQUFFLFNBQVM7RUFDMUIsTUFBTSxFQUFFLE9BQU87Q0FDaEIiCn0= */